{"version":3,"file":"static/js/index.bff759d8.js","sources":["webpack://@jotforminc/workflow/../../configs/tracking-config/src/index.js","webpack://@jotforminc/workflow/./src/actionCreators/index.js","webpack://@jotforminc/workflow/./src/components/Button/index.js","webpack://@jotforminc/workflow/./src/components/Button/scButton.js","webpack://@jotforminc/workflow/./src/components/ColoredBarHeaderIcon/editIcon.js","webpack://@jotforminc/workflow/./src/components/ColoredBarTooltip/ColoredBarInfoTooltip.js","webpack://@jotforminc/workflow/./src/components/ColoredBarHeaderIcon/infoIcon.js","webpack://@jotforminc/workflow/./src/components/Diagrams/Approval/model.js","webpack://@jotforminc/workflow/./src/components/Diagrams/AssignForm/model.js","webpack://@jotforminc/workflow/./src/components/Diagrams/AssignTask/model.js","webpack://@jotforminc/workflow/./src/constants/mobilePortNames.js","webpack://@jotforminc/workflow/./src/components/Diagrams/BaseNode/model.js","webpack://@jotforminc/workflow/./src/components/Diagrams/Port/widget.js","webpack://@jotforminc/workflow/./src/components/PortList/index.js","webpack://@jotforminc/workflow/./src/components/Diagrams/Commons/WidgetRoot.js","webpack://@jotforminc/workflow/./src/utils/diagram/selectElementLabel.js","webpack://@jotforminc/workflow/./src/components/Diagrams/BaseNode/widget.js","webpack://@jotforminc/workflow/./src/components/Diagrams/BinaryDecision/model.js","webpack://@jotforminc/workflow/./src/utils/contactUtils.js","webpack://@jotforminc/workflow/../../libs/contact-card/src/components/ContactAvatarList.js","webpack://@jotforminc/workflow/../../libs/contact-card/src/components/InlineMultipleView.js","webpack://@jotforminc/workflow/../../libs/contact-card/src/components/InlineContactView.js","webpack://@jotforminc/workflow/./src/components/WidgetContactRenderer/WidgetContactRenderer.js","webpack://@jotforminc/workflow/./src/components/Diagrams/Commons/WidgetContactBody.js","webpack://@jotforminc/workflow/./src/components/Diagrams/Commons/WidgetResource.js","webpack://@jotforminc/workflow/./src/components/Diagrams/ConditionalBranch/model.js","webpack://@jotforminc/workflow/./src/components/Diagrams/EndPoint/model.js","webpack://@jotforminc/workflow/./src/components/Diagrams/EndPoint/widget.js","webpack://@jotforminc/workflow/./src/components/Diagrams/Generic/model.js","webpack://@jotforminc/workflow/./src/components/Diagrams/Integrations/model.js","webpack://@jotforminc/workflow/./src/components/Diagrams/Label/utils.js","webpack://@jotforminc/workflow/./src/components/Diagrams/Merge/model.js","webpack://@jotforminc/workflow/./src/components/Diagrams/Merge/widget.js","webpack://@jotforminc/workflow/./src/components/Diagrams/Placeholder/model.js","webpack://@jotforminc/workflow/./src/components/Diagrams/Port/model.js","webpack://@jotforminc/workflow/./src/components/Diagrams/SendEmail/model.js","webpack://@jotforminc/workflow/./src/components/Diagrams/SignDocument/model.js","webpack://@jotforminc/workflow/./src/components/Diagrams/Split/model.js","webpack://@jotforminc/workflow/./src/components/Diagrams/Split/widget.js","webpack://@jotforminc/workflow/./src/components/Diagrams/StartPoint/model.js","webpack://@jotforminc/workflow/./src/components/Dropdown/ContainerRenderer.js","webpack://@jotforminc/workflow/./src/components/Dropdown/index.js","webpack://@jotforminc/workflow/../../../../src/icons/editor/type-square-filled.svg","webpack://@jotforminc/workflow/./src/components/ElementToolbox/LinkToolbox.js","webpack://@jotforminc/workflow/./src/components/ElementToolbox/Toolbox.js","webpack://@jotforminc/workflow/./src/components/ElementToolbox/ToolboxButton.js","webpack://@jotforminc/workflow/./src/components/ElementToolbox/index.js","webpack://@jotforminc/workflow/./src/components/Feature/index.js","webpack://@jotforminc/workflow/./src/components/FormWizard/index.js","webpack://@jotforminc/workflow/./src/components/MultipleFormPDF/helper.js","webpack://@jotforminc/workflow/../../../../src/icons/editor/pen-filled.svg","webpack://@jotforminc/workflow/../../../../src/icons/general/ban.svg","webpack://@jotforminc/workflow/../../../../src/icons/time-date/clock-exclamation-circle-filled.svg","webpack://@jotforminc/workflow/./src/components/OutcomeWizard/ConditionInPopover.js","webpack://@jotforminc/workflow/./src/components/OutcomeWizard/CustomOutcomePreview.js","webpack://@jotforminc/workflow/./src/components/OutcomeWizard/OutcomeButtonPreview.js","webpack://@jotforminc/workflow/./src/components/OutcomeWizard/LabelOutcomeButton.js","webpack://@jotforminc/workflow/./src/components/TextInput/index.js","webpack://@jotforminc/workflow/./src/components/Toast/FatalError.js","webpack://@jotforminc/workflow/./src/components/WizardLabel/index.js","webpack://@jotforminc/workflow/./src/constants/IntegrationDetails.js","webpack://@jotforminc/workflow/./src/constants/OutcomeTooltip.js","webpack://@jotforminc/workflow/./src/constants/OutcomeTypes.js","webpack://@jotforminc/workflow/../../../../src/icons/products/product-form-card-color-border.svg","webpack://@jotforminc/workflow/../../../../src/icons/products/product-payment-form-color-border.svg","webpack://@jotforminc/workflow/../../../../src/icons/products/product-payment-card-form-border.svg","webpack://@jotforminc/workflow/../../libs/send-to-sign/src/assets/circularLoader_icon.svg","webpack://@jotforminc/workflow/../../../../src/icons/general/copy-dotted.svg","webpack://@jotforminc/workflow/../../libs/send-to-sign/src/assets/noAssign_icon.svg","webpack://@jotforminc/workflow/./src/components/ColorPicker/index.js","webpack://@jotforminc/workflow/./src/components/Toggle/index.js","webpack://@jotforminc/workflow/./src/components/FileUpload/index.js","webpack://@jotforminc/workflow/./src/components/EmailInput/index.js","webpack://@jotforminc/workflow/./src/components/RichTextEditor/index.js","webpack://@jotforminc/workflow/./src/components/OutcomesWizard/scOutcomes.js","webpack://@jotforminc/workflow/./src/components/OutcomesWizard/index.js","webpack://@jotforminc/workflow/./src/components/CommentWizard/index.js","webpack://@jotforminc/workflow/./src/utils/hooks/useRealUnmount.js","webpack://@jotforminc/workflow/./src/components/WizardCommonError.js","webpack://@jotforminc/workflow/./src/components/EscalationWizard/index.js","webpack://@jotforminc/workflow/./src/components/SingleEmailInput/index.js","webpack://@jotforminc/workflow/./src/components/UserEmailsDropdownWizard/index.js","webpack://@jotforminc/workflow/./src/components/EscalationWizard/EscalateTaskWizard.js","webpack://@jotforminc/workflow/./src/components/ReassignWizard/index.js","webpack://@jotforminc/workflow/./src/components/Checkbox/index.js","webpack://@jotforminc/workflow/./src/components/ReassignWizard/ReassignNotificationWizard/index.js","webpack://@jotforminc/workflow/./src/components/SendReminderWizard/index.js","webpack://@jotforminc/workflow/./src/components/NumberInput/index.js","webpack://@jotforminc/workflow/./src/components/SendReminderWizard/RemindAfterWizard/index.js","webpack://@jotforminc/workflow/./src/components/SendReminderWizard/CustomizeReminderWizard/index.js","webpack://@jotforminc/workflow/./src/components/ElementEmailWizard/index.js","webpack://@jotforminc/workflow/./src/utils/hooks/useDate.js","webpack://@jotforminc/workflow/./src/components/DueDateWizard/DueDateWizard.js","webpack://@jotforminc/workflow/./src/constants/date.js","webpack://@jotforminc/workflow/./src/components/ExpirationWizard/ExpirationWizard.js","webpack://@jotforminc/workflow/./src/components/AutoFinishTaskWizard/AutoFinishTaskWizard.js","webpack://@jotforminc/workflow/./src/components/AutoFinishTaskWizard/OutcomeSelectionWizard.js","webpack://@jotforminc/workflow/./src/components/OptionGroup/OptionGroup.js","webpack://@jotforminc/workflow/./src/components/MixedTagInput/index.js","webpack://@jotforminc/workflow/../../libs/common/src/components/Checklist/index.js","webpack://@jotforminc/workflow/./src/components/ChecklistWizard/ExtendableChecklist/index.js","webpack://@jotforminc/workflow/./src/components/ChecklistWizard/index.js","webpack://@jotforminc/workflow/./src/components/CheckBoxWithDefaultValue/index.js","webpack://@jotforminc/workflow/./src/components/OutcomesCheckboxWizard/index.js","webpack://@jotforminc/workflow/./src/components/PDFSelectListWizard/index.js","webpack://@jotforminc/workflow/./src/components/PDFSelectListWizard/password.js","webpack://@jotforminc/workflow/./src/components/PDFSelectListWizard/passwordWizard.js","webpack://@jotforminc/workflow/./src/components/PDFSelectListWizard/passwordCheckbox.js","webpack://@jotforminc/workflow/../../libs/common/src/utils/text/index.js","webpack://@jotforminc/workflow/../../libs/common/src/components/ResourcePickerDropdown/index.js","webpack://@jotforminc/workflow/./src/components/FormPickerWizard/index.js","webpack://@jotforminc/workflow/./src/components/DocumentPickerWizard/index.js","webpack://@jotforminc/workflow/../../libs/send-to-sign/src/utils/index.tsx","webpack://@jotforminc/workflow/../../libs/send-to-sign/src/Toggle.tsx","webpack://@jotforminc/workflow/../../libs/send-to-sign/src/PinSettings.tsx","webpack://@jotforminc/workflow/../../libs/send-to-sign/src/ParticipantListItem.tsx","webpack://@jotforminc/workflow/../../libs/send-to-sign/src/a11yAlert.tsx","webpack://@jotforminc/workflow/../../libs/send-to-sign/src/index.tsx","webpack://@jotforminc/workflow/./src/components/DocumentSignMatcher/index.js","webpack://@jotforminc/workflow/../../libs/common/src/components/PrefillSettings/components/PrefillMatchDropdown.js","webpack://@jotforminc/workflow/../../libs/common/src/components/PrefillSettings/components/PrefillFieldMatcher.js","webpack://@jotforminc/workflow/../../libs/common/src/components/PrefillSettings/components/PrefillFieldWrapper.js","webpack://@jotforminc/workflow/./src/components/PrefillFieldMatcher/index.js","webpack://@jotforminc/workflow/../../libs/common/src/components/Banner/PrefillFormFields/Form.js","webpack://@jotforminc/workflow/../../libs/common/src/components/Banner/PrefillFormFields/Demo/Input.js","webpack://@jotforminc/workflow/../../libs/common/src/components/Banner/PrefillFormFields/index.js","webpack://@jotforminc/workflow/./src/components/Banner/index.js","webpack://@jotforminc/workflow/./src/components/PreviewWizard/preview.js","webpack://@jotforminc/workflow/./src/components/PreviewWizard/index.js","webpack://@jotforminc/workflow/./src/components/MultipleFormPDF/index.js","webpack://@jotforminc/workflow/./src/components/ApprovalOptions/helper.js","webpack://@jotforminc/workflow/./src/components/ApprovalOptions/index.js","webpack://@jotforminc/workflow/./src/components/TeamDropdown/OptionRenderer.js","webpack://@jotforminc/workflow/./src/components/TeamDropdown/ButtonRenderer.js","webpack://@jotforminc/workflow/./src/components/TeamDropdown/NoResults.js","webpack://@jotforminc/workflow/./src/components/TeamDropdown/NoTeams.js","webpack://@jotforminc/workflow/./src/components/TeamDropdown/index.js","webpack://@jotforminc/workflow/../../libs/enterprise-promotions/src/components/Banners/Product/WorkflowGroupApprovalBanner.js","webpack://@jotforminc/workflow/./src/components/ApprovalLimit/index.js","webpack://@jotforminc/workflow/./src/components/MultipleEmailInput/helper.js","webpack://@jotforminc/workflow/./src/components/MultipleEmailInput/constants.js","webpack://@jotforminc/workflow/./src/components/MultipleEmailInput/PillRenderer.js","webpack://@jotforminc/workflow/./src/components/MultipleEmailInput/index.js","webpack://@jotforminc/workflow/./src/components/EnableSignatureToggle/index.js","webpack://@jotforminc/workflow/./src/components/DefaultStateToggle/index.js","webpack://@jotforminc/workflow/./src/components/DisableStateToggle/index.js","webpack://@jotforminc/workflow/../../libs/uikit/src/components/TextArea/LimitRenderer.js","webpack://@jotforminc/workflow/../../libs/uikit/src/components/TextArea/index.js","webpack://@jotforminc/workflow/./src/components/TextArea/index.js","webpack://@jotforminc/workflow/./src/components/WorkflowFormBuilderButton/index.js","webpack://@jotforminc/workflow/./src/constants/componentTypes.js","webpack://@jotforminc/workflow/./src/constants/conditions.js","webpack://@jotforminc/workflow/./src/constants/config.js","webpack://@jotforminc/workflow/./src/constants/diagramStateNames.js","webpack://@jotforminc/workflow/./src/constants/elementTypes.js","webpack://@jotforminc/workflow/./src/constants/elementsWithModalPropertyPanel.js","webpack://@jotforminc/workflow/./src/constants/elementsWithoutPropertyPanel.js","webpack://@jotforminc/workflow/./src/constants/emailSubTypes.js","webpack://@jotforminc/workflow/./src/constants/emailWizardTemplates.js","webpack://@jotforminc/workflow/./src/constants/errorTypes.js","webpack://@jotforminc/workflow/./src/constants/features.js","webpack://@jotforminc/workflow/./src/constants/helper.js","webpack://@jotforminc/workflow/./src/constants/iconTypes.js","webpack://@jotforminc/workflow/./src/constants/identifiers.js","webpack://@jotforminc/workflow/./src/constants/nodeProperties.js","webpack://@jotforminc/workflow/./src/constants/propTypes.js","webpack://@jotforminc/workflow/./src/constants/strings.js","webpack://@jotforminc/workflow/./src/constants/team.js","webpack://@jotforminc/workflow/./src/constants/undefinedOutcome.js","webpack://@jotforminc/workflow/./src/constants/warningTypes.js","webpack://@jotforminc/workflow/./src/constants/workflowElementLimit.js","webpack://@jotforminc/workflow/./src/constants/workflowElementModels.js","webpack://@jotforminc/workflow/../../libs/router-bridge/src/init.js","webpack://@jotforminc/workflow/../../libs/tracking/src/init.ts","webpack://@jotforminc/workflow/./src/modules/App/AppContainer.js","webpack://@jotforminc/workflow/./src/index.js","webpack://@jotforminc/workflow/./src/modules/App/index.js","webpack://@jotforminc/workflow/../../libs/create-new-wizards/src/components/CreateNewWizard/core/jotformActions.js","webpack://@jotforminc/workflow/../../libs/create-new-wizards/src/components/CreateNewWizard/assets/svg/iconCreateSalesforceForm.svg","webpack://@jotforminc/workflow/../../libs/create-new-wizards/src/components/CreateNewWizard/assets/svg/iconCreateUseTemplate.svg","webpack://@jotforminc/workflow/../../libs/create-new-wizards/src/components/CreateNewWizard/assets/svg/iconCreateImportForm.svg","webpack://@jotforminc/workflow/../../libs/create-new-wizards/src/components/CreateNewWizard/assets/svg/iconCreateSignDocument.svg","webpack://@jotforminc/workflow/../../libs/create-new-wizards/src/components/CreateNewWizard/assets/svg/iconCreateAIForm.svg","webpack://@jotforminc/workflow/../../libs/create-new-wizards/src/components/CreateNewWizard/assets/svg/iconBeta.svg","webpack://@jotforminc/workflow/../../libs/create-new-wizards/src/components/CreateNewWizard/assets/svg/iconImportPDFForm.svg","webpack://@jotforminc/workflow/../../../../src/icons/arrows/arrow-up-right-from-square.svg","webpack://@jotforminc/workflow/../../../../src/icons/communication/inbox-xmark-filled.svg","webpack://@jotforminc/workflow/../../../../src/icons/arrows/arrow-right-to-bracket.svg","webpack://@jotforminc/workflow/../../libs/create-new-wizards/src/components/CreateNewWizard/assets/svg/iconImportFromWeb.svg","webpack://@jotforminc/workflow/../../libs/create-new-wizards/src/components/CreateNewWizard/assets/svg/iconImportCloneExisting.svg","webpack://@jotforminc/workflow/../../libs/create-new-wizards/src/components/CreateNewWizard/assets/svg/iconClassicForm.svg","webpack://@jotforminc/workflow/../../libs/create-new-wizards/src/components/CreateNewWizard/assets/svg/iconCardForm.svg","webpack://@jotforminc/workflow/../../libs/create-new-wizards/src/components/CreateNewDocumentWizard/assets/iconCreateSignDocument.svg","webpack://@jotforminc/workflow/../../libs/create-new-wizards/src/components/CreateNewDocumentWizard/assets/iconCreateFromTemplate2.svg","webpack://@jotforminc/workflow/../../libs/create-new-wizards/src/components/CreateNewDocumentWizard/assets/iconSelectDocument.svg","webpack://@jotforminc/workflow/../../libs/ai-builder/src/assets/svg/AILogo.svg","webpack://@jotforminc/workflow/../../libs/ai-builder/src/assets/svg/ai-logo-white.svg","webpack://@jotforminc/workflow/../../libs/ai-builder/src/assets/svg/IconExclamation.svg","webpack://@jotforminc/workflow/../../libs/create-new-wizards/src/components/CreateNewDocumentWizard/assets/iconFileUpload2.svg","webpack://@jotforminc/workflow/../../libs/create-new-wizards/src/components/CreateNewDocumentWizard/assets/iconDoc.svg","webpack://@jotforminc/workflow/../../libs/create-new-wizards/src/components/CreateNewWizard/assets/svg/iconAiBuilder.svg","webpack://@jotforminc/workflow/../../libs/create-new-wizards/src/components/CreateNewWizard/core/texts.js","webpack://@jotforminc/workflow/../../libs/create-new-wizards/src/components/CreateNewDocumentWizard/core/texts.js","webpack://@jotforminc/workflow/../../libs/create-new-wizards/src/components/CreateNewWizard/core/constants.js","webpack://@jotforminc/workflow/../../libs/create-new-wizards/src/components/CreateNewWizard/components/Navigation/Main.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/Wizard/WizardFooter.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/Input/Label.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/Input/TextInput.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/Input/DropdownInput.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/LoadingState/index.js","webpack://@jotforminc/workflow/../../libs/gl-forms-importer/src/api/index.js","webpack://@jotforminc/workflow/../../libs/gl-forms-importer/src/context/actionTypes.js","webpack://@jotforminc/workflow/../../libs/gl-forms-importer/src/context/userContext.js","webpack://@jotforminc/workflow/../../libs/gl-forms-importer/src/constants/texts.js","webpack://@jotforminc/workflow/../../libs/gl-forms-importer/src/components/Steps/MaintenanceMode.js","webpack://@jotforminc/workflow/../../libs/gl-forms-importer/src/components/Steps/ChangeGoogleAccountStep.js","webpack://@jotforminc/workflow/../../libs/gl-forms-importer/src/components/Steps/AuthorizationStep.js","webpack://@jotforminc/workflow/../../libs/gl-forms-importer/src/components/Steps/ReAuthorizeStep.js","webpack://@jotforminc/workflow/../../libs/gl-forms-importer/src/components/MigrationStatusBadge.js","webpack://@jotforminc/workflow/../../libs/gl-forms-importer/src/utils/index.js","webpack://@jotforminc/workflow/../../libs/gl-forms-importer/src/components/ListFormItem.js","webpack://@jotforminc/workflow/../../libs/gl-forms-importer/src/context/wizardContext.js","webpack://@jotforminc/workflow/../../libs/gl-forms-importer/src/components/Steps/FormMigrationStep.js","webpack://@jotforminc/workflow/../../libs/gl-forms-importer/src/components/UI/FormListingLoading.js","webpack://@jotforminc/workflow/../../libs/gl-forms-importer/src/components/UI/NoFormsFound.js","webpack://@jotforminc/workflow/../../libs/gl-forms-importer/src/components/MigrateFormsModalHeading.js","webpack://@jotforminc/workflow/../../libs/gl-forms-importer/src/components/MigrateFormsModalFooter.js","webpack://@jotforminc/workflow/../../libs/gl-forms-importer/src/components/index.js","webpack://@jotforminc/workflow/../../libs/gl-forms-importer/src/WizardWrapper.js","webpack://@jotforminc/workflow/../../libs/gl-forms-importer/src/index.js","webpack://@jotforminc/workflow/../../libs/create-new-wizards/src/components/CreateNewWizard/core/utils.js","webpack://@jotforminc/workflow/../../libs/create-new-wizards/src/components/CreateNewWizard/components/Navigation/ImportForm.js","webpack://@jotforminc/workflow/../../libs/create-new-wizards/src/components/CreateNewWizard/components/Navigation/FormTypeSelect.js","webpack://@jotforminc/workflow/../../libs/create-new-wizards/src/components/CreateNewWizard/components/Navigation/ImportPDFForm.js","webpack://@jotforminc/workflow/../../libs/create-new-wizards/src/components/CreateNewWizard/components/Navigation/StartFromScratch.js","webpack://@jotforminc/workflow/../../libs/create-new-wizards/src/components/CreateNewDocumentWizard/components/Navigation/Main.js","webpack://@jotforminc/workflow/../../libs/create-new-wizards/src/components/CreateNewWizard/components/Navigation/CreateSignDocumentMain.js","webpack://@jotforminc/workflow/../../libs/ai-builder/src/constants/index.ts","webpack://@jotforminc/workflow/../../libs/ai-builder/src/api/requestLayer.ts","webpack://@jotforminc/workflow/../../libs/ai-builder/src/api/index.ts","webpack://@jotforminc/workflow/../../libs/ai-builder/src/hooks/useFullStory.ts","webpack://@jotforminc/workflow/../../libs/ai-builder/src/context/index.tsx","webpack://@jotforminc/workflow/../../libs/ai-builder/src/actions/index.ts","webpack://@jotforminc/workflow/../../libs/ai-builder/src/components/Loading/index.tsx","webpack://@jotforminc/workflow/../../libs/ai-builder/src/utils/index.ts","webpack://@jotforminc/workflow/../../libs/ai-builder/src/components/ErrorMessage/ErrorMessage.tsx","webpack://@jotforminc/workflow/../../libs/ai-builder/src/containers/CreateAIForm/index.tsx","webpack://@jotforminc/workflow/../../libs/ai-builder/src/styles/errorBoundry.module.scss?2dc5","webpack://@jotforminc/workflow/../../libs/ai-builder/src/hocs/ErrorBoundry.tsx","webpack://@jotforminc/workflow/../../libs/ai-builder/src/containers/index.tsx","webpack://@jotforminc/workflow/../../libs/create-new-wizards/src/utils.js","webpack://@jotforminc/workflow/../../libs/utils/src/pdfjsworker.js","webpack://@jotforminc/workflow/../../libs/create-new-wizards/src/components/CreateNewDocumentWizard/components/PDFThumbnail.js","webpack://@jotforminc/workflow/../../libs/create-new-wizards/src/components/CreateNewDocumentWizard/constants.js","webpack://@jotforminc/workflow/../../libs/create-new-wizards/src/components/CreateNewDocumentWizard/utils.js","webpack://@jotforminc/workflow/../../libs/create-new-wizards/src/components/CreateNewDocumentWizard/core/abtests.js","webpack://@jotforminc/workflow/../../libs/create-new-wizards/src/components/CreateNewDocumentWizard/components/Navigation/FileUpload.js","webpack://@jotforminc/workflow/../../libs/create-new-wizards/src/components/CreateNewWizard/components/Navigation/CreateSignDocumentFileUpload.js","webpack://@jotforminc/workflow/../../libs/create-new-wizards/src/components/CreateNewWizard/components/Navigation/CreateSignDocumentTemplate.js","webpack://@jotforminc/workflow/../../libs/create-new-wizards/src/components/CreateNewWizard/components/Navigation/CreateSalesforceForm.js","webpack://@jotforminc/workflow/../../libs/create-new-wizards/src/components/CreateNewWizard/components/Navigation/index.js","webpack://@jotforminc/workflow/../../libs/create-new-wizards/src/components/CreateNewWizard/components/Navigation/CreateAIForm.js","webpack://@jotforminc/workflow/../../libs/create-new-wizards/src/components/CreateNewWizard/core/jotformActionBindings.js","webpack://@jotforminc/workflow/../../libs/create-new-wizards/src/components/CreateNewWizard/index.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/Navigation/WizardSelectForm.js","webpack://@jotforminc/workflow/../../libs/create-new-wizards/src/components/CreateNewFormPicker/components/Navigation/index.js","webpack://@jotforminc/workflow/../../libs/create-new-wizards/src/components/CreateNewFormPicker/index.js","webpack://@jotforminc/workflow/./src/modules/App/WorkflowFormPicker.js","webpack://@jotforminc/workflow/./src/constants/inputType.js","webpack://@jotforminc/workflow/./src/components/Diagrams/State/default.js","webpack://@jotforminc/workflow/./src/components/Diagrams/State/showPort.js","webpack://@jotforminc/workflow/./src/components/Diagrams/State/dragNode.js","webpack://@jotforminc/workflow/./src/components/Diagrams/State/moveNode.js","webpack://@jotforminc/workflow/./src/components/Diagrams/Label/model.js","webpack://@jotforminc/workflow/./src/components/Diagrams/Point/model.js","webpack://@jotforminc/workflow/./src/utils/diagram/getNumberOfExtraPoints.js","webpack://@jotforminc/workflow/./src/utils/diagram/calculatePointPositions.js","webpack://@jotforminc/workflow/./src/constants/angleDirectionMap.js","webpack://@jotforminc/workflow/./src/utils/math/calculateAngle.js","webpack://@jotforminc/workflow/./src/utils/diagram/isPointsTooCloseToDraw.js","webpack://@jotforminc/workflow/./src/utils/diagram/calculateDirection.js","webpack://@jotforminc/workflow/./src/utils/diagram/generateCurvedPathDrawn.js","webpack://@jotforminc/workflow/./src/components/Diagrams/Link/model.js","webpack://@jotforminc/workflow/./src/components/Diagrams/State/editLink.js","webpack://@jotforminc/workflow/./src/components/Diagrams/State/panCanvas.js","webpack://@jotforminc/workflow/./src/components/Diagrams/SelectionBox/model.js","webpack://@jotforminc/workflow/./src/components/Diagrams/State/selection.js","webpack://@jotforminc/workflow/./src/components/Diagrams/State/createLink.js","webpack://@jotforminc/workflow/./src/components/Diagrams/State/showToolBox.js","webpack://@jotforminc/workflow/./src/utils/math/closest.js","webpack://@jotforminc/workflow/./src/components/Diagrams/GuideLayer/GuideLayerModel.js","webpack://@jotforminc/workflow/./src/components/Diagrams/State/showGuideline.js","webpack://@jotforminc/workflow/./src/components/Diagrams/State/createLinkMobile.js","webpack://@jotforminc/workflow/./src/components/Diagrams/State/showSelectionBox.js","webpack://@jotforminc/workflow/./src/components/Diagrams/State/replacePlaceholder.js","webpack://@jotforminc/workflow/./src/components/Diagrams/State/pinchToZoomCanvasState.js","webpack://@jotforminc/workflow/./src/components/Diagrams/State/index.js","webpack://@jotforminc/workflow/./src/components/Arrow/index.js","webpack://@jotforminc/workflow/./src/components/Diagrams/Link/segmentWidget.js","webpack://@jotforminc/workflow/./src/components/Diagrams/Link/widget.js","webpack://@jotforminc/workflow/./src/components/Diagrams/Link/factory.js","webpack://@jotforminc/workflow/./src/utils/hooks/useDrop.js","webpack://@jotforminc/workflow/./src/components/Diagrams/Label/widget.js","webpack://@jotforminc/workflow/./src/components/Diagrams/BaseNode/factory.js","webpack://@jotforminc/workflow/./src/components/Diagrams/Label/factory.js","webpack://@jotforminc/workflow/./src/components/Diagrams/LabelLayer/model.js","webpack://@jotforminc/workflow/./src/components/Diagrams/SelectionBoxLayer/model.js","webpack://@jotforminc/workflow/./src/components/Diagrams/Diagram/model.js","webpack://@jotforminc/workflow/./src/components/Diagrams/ActionEventBus/index.js","webpack://@jotforminc/workflow/./src/components/Diagrams/Merge/factory.js","webpack://@jotforminc/workflow/./src/components/Diagrams/Split/factory.js","webpack://@jotforminc/workflow/./src/components/Diagrams/Assign/model.js","webpack://@jotforminc/workflow/./src/components/Diagrams/Assign/widget.js","webpack://@jotforminc/workflow/./src/components/Diagrams/Assign/factory.js","webpack://@jotforminc/workflow/./src/components/Diagrams/Generic/widget.js","webpack://@jotforminc/workflow/./src/components/Diagrams/Generic/factory.js","webpack://@jotforminc/workflow/./src/components/Diagrams/Approval/widget.js","webpack://@jotforminc/workflow/./src/components/Diagrams/Approval/factory.js","webpack://@jotforminc/workflow/./src/components/Diagrams/EndPoint/factory.js","webpack://@jotforminc/workflow/./src/components/Diagrams/SendEmail/widget.js","webpack://@jotforminc/workflow/./src/components/Diagrams/SendEmail/factory.js","webpack://@jotforminc/workflow/./src/components/Diagrams/StartPoint/widget.js","webpack://@jotforminc/workflow/./src/components/Diagrams/StartPoint/factory.js","webpack://@jotforminc/workflow/./src/components/Diagrams/Placeholder/widget.js","webpack://@jotforminc/workflow/./src/components/Diagrams/Placeholder/factory.js","webpack://@jotforminc/workflow/./src/components/Diagrams/BinaryDecision/widget.js","webpack://@jotforminc/workflow/./src/components/Diagrams/BinaryDecision/factory.js","webpack://@jotforminc/workflow/./src/components/Diagrams/ConditionalBranch/widget.js","webpack://@jotforminc/workflow/./src/components/Diagrams/ConditionalBranch/factory.js","webpack://@jotforminc/workflow/./src/components/Diagrams/AssignForm/widget.js","webpack://@jotforminc/workflow/./src/components/Diagrams/AssignForm/factory.js","webpack://@jotforminc/workflow/./src/components/Diagrams/SignDocument/widget.js","webpack://@jotforminc/workflow/./src/components/Diagrams/SignDocument/factory.js","webpack://@jotforminc/workflow/./src/components/Diagrams/Integrations/widget.js","webpack://@jotforminc/workflow/./src/components/Diagrams/Integrations/factory.js","webpack://@jotforminc/workflow/./src/components/Diagrams/AssignTask/widget.js","webpack://@jotforminc/workflow/./src/components/Diagrams/WorkflowElements.js","webpack://@jotforminc/workflow/./src/components/Diagrams/AssignTask/factory.js","webpack://@jotforminc/workflow/./src/components/Diagrams/NodeLayer/model.js","webpack://@jotforminc/workflow/./src/components/NodeWrapper/index.js","webpack://@jotforminc/workflow/./src/components/Diagrams/NodeLayer/widget.js","webpack://@jotforminc/workflow/./src/components/Diagrams/NodeLayer/factory.js","webpack://@jotforminc/workflow/./src/components/Diagrams/LinkLayer/model.js","webpack://@jotforminc/workflow/./src/components/Diagrams/LinkLayer/widget.js","webpack://@jotforminc/workflow/./src/components/Diagrams/LinkLayer/factory.js","webpack://@jotforminc/workflow/./src/components/LabelWrapper/index.js","webpack://@jotforminc/workflow/./src/components/Diagrams/LabelLayer/widget.js","webpack://@jotforminc/workflow/./src/components/Diagrams/LabelLayer/factory.js","webpack://@jotforminc/workflow/./src/components/Diagrams/GuideLayer/scGuide.js","webpack://@jotforminc/workflow/./src/components/Diagrams/GuideLayer/GuideLayerWidget.js","webpack://@jotforminc/workflow/./src/components/Diagrams/GuideLayer/GuideLayerFactory.js","webpack://@jotforminc/workflow/./src/components/Diagrams/SelectionBox/widget.js","webpack://@jotforminc/workflow/./src/components/Diagrams/SelectionBoxLayer/widget.js","webpack://@jotforminc/workflow/./src/components/Diagrams/SelectionBoxLayer/factory.js","webpack://@jotforminc/workflow/./src/modules/Canvas/V1/CanvasDeleteAction.js","webpack://@jotforminc/workflow/./src/modules/Canvas/V1/CanvasDeselectAction.js","webpack://@jotforminc/workflow/./src/utils/math/interpolate.js","webpack://@jotforminc/workflow/./src/modules/Canvas/V1/CanvasEngineBuilder.js","webpack://@jotforminc/workflow/./src/modules/Canvas/V2/Edge/utils.js","webpack://@jotforminc/workflow/./src/modules/Canvas/V2/Nodes/Activity/Body.js","webpack://@jotforminc/workflow/./src/modules/Canvas/V2/Nodes/Activity/Header.js","webpack://@jotforminc/workflow/./src/modules/Canvas/V2/Nodes/Activity/index.js","webpack://@jotforminc/workflow/./src/modules/Canvas/V2/Nodes/Handles.js","webpack://@jotforminc/workflow/./src/modules/Canvas/V2/Nodes/Placeholder.js","webpack://@jotforminc/workflow/./src/modules/Canvas/V2/Nodes/Toolbox.js","webpack://@jotforminc/workflow/./src/modules/Canvas/V2/Nodes/Alerts.js","webpack://@jotforminc/workflow/./src/modules/Canvas/V2/Nodes/index.js","webpack://@jotforminc/workflow/./src/modules/Canvas/V2/constants.js","webpack://@jotforminc/workflow/./src/modules/Canvas/V2/utils.js","webpack://@jotforminc/workflow/./src/modules/ConditionsWizard/utils.js","webpack://@jotforminc/workflow/./src/modules/Editor/adapter.js","webpack://@jotforminc/workflow/./src/modules/Canvas/V2/Nodes/Activity/Approvals/Approval.js","webpack://@jotforminc/workflow/./src/modules/Canvas/V2/Nodes/Activity/Approvals/ApproveAndSign.js","webpack://@jotforminc/workflow/./src/modules/Canvas/V2/Nodes/Activity/Approvals/TeamApproval.js","webpack://@jotforminc/workflow/./src/modules/Canvas/V2/Nodes/Activity/Condition/Branch.js","webpack://@jotforminc/workflow/./src/modules/Canvas/V2/Nodes/Activity/Condition/IfElse.js","webpack://@jotforminc/workflow/./src/modules/Canvas/V2/Nodes/Activity/PDF/PDF.js","webpack://@jotforminc/workflow/./src/modules/Canvas/V2/Nodes/Activity/PDF/Report.js","webpack://@jotforminc/workflow/./src/modules/Canvas/V2/Nodes/Activity/SignDocument/index.js","webpack://@jotforminc/workflow/./src/modules/Canvas/V2/Nodes/Activity/Email/index.js","webpack://@jotforminc/workflow/./src/modules/Canvas/V2/Nodes/Activity/Form/Form.js","webpack://@jotforminc/workflow/./src/modules/Canvas/V2/Nodes/Activity/Form/AssignForm.js","webpack://@jotforminc/workflow/./src/modules/Canvas/V2/Nodes/Logic/Merge/index.js","webpack://@jotforminc/workflow/./src/modules/Canvas/V2/Nodes/Decision/End/index.js","webpack://@jotforminc/workflow/./src/modules/Canvas/V2/Nodes/Activity/Integrations/index.js","webpack://@jotforminc/workflow/./src/modules/Canvas/V2/Nodes/Activity/AssignTask/index.js","webpack://@jotforminc/workflow/./src/modules/Canvas/V2/Nodes/Logic/Split/index.js","webpack://@jotforminc/workflow/./src/modules/Canvas/V2/Nodes/Decision/Terminate/index.js","webpack://@jotforminc/workflow/./src/modules/Canvas/V2/Nodes/Generic.js","webpack://@jotforminc/workflow/./src/modules/api/index.js","webpack://@jotforminc/workflow/./src/modules/api/requestLayer.js","webpack://@jotforminc/workflow/./src/properties/index.js","webpack://@jotforminc/workflow/./src/sagas/channels/model.js","webpack://@jotforminc/workflow/./src/sagas/channels/link.js","webpack://@jotforminc/workflow/./src/sagas/channels/engine.js","webpack://@jotforminc/workflow/./src/sagas/channels/node.js","webpack://@jotforminc/workflow/./src/sagas/formBuilder/IframeManager.js","webpack://@jotforminc/workflow/./src/sagas/helpers.js","webpack://@jotforminc/workflow/./src/sagas/ui.js","webpack://@jotforminc/workflow/../../libs/workflow-components/src/assets/wf_task_completed.svg","webpack://@jotforminc/workflow/../../libs/workflow-components/src/assets/wf_signup_popup.svg","webpack://@jotforminc/workflow/./src/utils/askConfirmation.js","webpack://@jotforminc/workflow/../../libs/warning-box/src/index.js","webpack://@jotforminc/workflow/../../libs/share-panel/src/sc/scRevokeAccess.js","webpack://@jotforminc/workflow/../../libs/email-wizards/src/components/ModalFooter/StyleModalFooter.js","webpack://@jotforminc/workflow/../../libs/email-wizards/src/EmailStyleWizardModal.js","webpack://@jotforminc/workflow/./src/utils/openEmailSettings.js","webpack://@jotforminc/workflow/../../libs/common/src/components/ApprovalReportSample/index.js","webpack://@jotforminc/workflow/./src/utils/openReportSettings.js","webpack://@jotforminc/workflow/../../libs/login-flow/src/components/LoginFlowWithStyles.js","webpack://@jotforminc/workflow/../../libs/login-flow/src/components/MultiColumnLoginFlow.js","webpack://@jotforminc/workflow/../../libs/workflow-components/src/components/WorkflowLoginFlows.js","webpack://@jotforminc/workflow/./src/utils/openSignupModal.js","webpack://@jotforminc/workflow/../../libs/common/src/components/WhatsNewModal/WhatsNewDialogue.js","webpack://@jotforminc/workflow/../../libs/common/src/components/WhatsNewModal/index.js","webpack://@jotforminc/workflow/./src/constants/whatsNewConstant.js","webpack://@jotforminc/workflow/./src/utils/openWhatsNewModal.js","webpack://@jotforminc/workflow/./src/utils/whatsNewHelper.js","webpack://@jotforminc/workflow/./src/sagas/workflow/elements.js","webpack://@jotforminc/workflow/./src/components/Toast/ElementLimitToastError.js","webpack://@jotforminc/workflow/./src/sagas/workflowNew/canvas.js","webpack://@jotforminc/workflow/./src/utils/diagram/generatePathPositions.js","webpack://@jotforminc/workflow/./src/utils/diagram/generatePathBetweenElements.js","webpack://@jotforminc/workflow/./src/sagas/workflowNew/index.js","webpack://@jotforminc/workflow/./src/sagas/workflowNew/temporaryCanvasBuilderAdapter.js","webpack://@jotforminc/workflow/./src/store/actionTypes.js","webpack://@jotforminc/workflow/./src/store/ui.js","webpack://@jotforminc/workflow/./src/store/user.js","webpack://@jotforminc/workflow/./src/store/workflow.js","webpack://@jotforminc/workflow/./src/store/workflowInspector.js","webpack://@jotforminc/workflow/./src/components/Toast/ChannelToastError.js","webpack://@jotforminc/workflow/./src/sagas/user.js","webpack://@jotforminc/workflow/./src/sagas/eventTracker.js","webpack://@jotforminc/workflow/./src/constants/elementTemplates.js","webpack://@jotforminc/workflow/./src/sagas/workflow/elementTemplates.js","webpack://@jotforminc/workflow/./src/sagas/workflow/index.js","webpack://@jotforminc/workflow/./src/utils/warnings.js","webpack://@jotforminc/workflow/./src/sagas/errors.js","webpack://@jotforminc/workflow/./src/sagas/channels/action.js","webpack://@jotforminc/workflow/./src/sagas/watchers/fetch.js","webpack://@jotforminc/workflow/./src/components/Toast/ConnectionState.js","webpack://@jotforminc/workflow/./src/sagas/channels/network.js","webpack://@jotforminc/workflow/./src/sagas/watchers/network.js","webpack://@jotforminc/workflow/./src/sagas/workflow/outcomes.js","webpack://@jotforminc/workflow/./src/sagas/actionMap.js","webpack://@jotforminc/workflow/./src/sagas/workflow/template.js","webpack://@jotforminc/workflow/./src/sagas/workflowSupervisor.js","webpack://@jotforminc/workflow/./src/store/actionGroups.js","webpack://@jotforminc/workflow/./src/sagas/formBuilder/workflowFormBuilder.js","webpack://@jotforminc/workflow/./src/sagas/watchers/workflow.js","webpack://@jotforminc/workflow/./src/sagas/watchers/undoRedo.js","webpack://@jotforminc/workflow/./src/sagas/channels/socket.js","webpack://@jotforminc/workflow/./src/sagas/watchers/socket.js","webpack://@jotforminc/workflow/./src/sagas/team.js","webpack://@jotforminc/workflow/./src/sagas/formBuilder/messages.js","webpack://@jotforminc/workflow/./src/sagas/formBuilder/listeners.js","webpack://@jotforminc/workflow/./src/sagas/watchers/watchFormBuilder.js","webpack://@jotforminc/workflow/./src/sagas/index.js","webpack://@jotforminc/workflow/./src/store/error.js","webpack://@jotforminc/workflow/./src/store/team.js","webpack://@jotforminc/workflow/./src/store/workflowFormBuilder.js","webpack://@jotforminc/workflow/./src/store/index.js","webpack://@jotforminc/workflow/./src/store/selectors.js","webpack://@jotforminc/workflow/./src/styles/variables.js","webpack://@jotforminc/workflow/./src/utils/WatchmanRecorder.js","webpack://@jotforminc/workflow/./src/utils/browserHelper.js","webpack://@jotforminc/workflow/./src/utils/cookie/index.js","webpack://@jotforminc/workflow/./src/utils/diagram/calculatePointDelta.js","webpack://@jotforminc/workflow/./src/utils/diagram/calculatePortPositions.js","webpack://@jotforminc/workflow/./src/utils/diagram/calculateSelectionRange.js","webpack://@jotforminc/workflow/./src/utils/diagram/diagramToWorkflow.js","webpack://@jotforminc/workflow/./src/utils/diagram/filterLinkFromOutcomes.js","webpack://@jotforminc/workflow/./src/utils/diagram/generateElementDefaults.js","webpack://@jotforminc/workflow/./src/utils/diagram/generateNewOutcome.js","webpack://@jotforminc/workflow/./src/utils/diagram/generateRectangle.js","webpack://@jotforminc/workflow/./src/utils/diagram/getElementDimensions.js","webpack://@jotforminc/workflow/./src/utils/math/calculateRow.js","webpack://@jotforminc/workflow/./src/utils/diagram/getElementPosition.js","webpack://@jotforminc/workflow/./src/utils/diagram/getPortPosition.js","webpack://@jotforminc/workflow/./src/utils/diagram/isElementWithOutcome.js","webpack://@jotforminc/workflow/./src/utils/diagram/isNonRectangleElement.js","webpack://@jotforminc/workflow/./src/utils/diagram/isPointInsideRectangle.js","webpack://@jotforminc/workflow/./src/constants/emailModalTitleSuffixes.js","webpack://@jotforminc/workflow/./src/utils/outcomeUtils.js","webpack://@jotforminc/workflow/./src/components/Checkbox/CheckboxWithValue.js","webpack://@jotforminc/workflow/./src/components/MultipleCheckbox/MoreAction.js","webpack://@jotforminc/workflow/./src/components/MultipleCheckbox/index.js","webpack://@jotforminc/workflow/./src/components/EmailOutcomeCheckbox/index.js","webpack://@jotforminc/workflow/./src/components/EmailOutcomeCheckbox/EmailOutcomeCheckboxWrapper.js","webpack://@jotforminc/workflow/./src/components/EmailOutcomeCheckbox/helper.js","webpack://@jotforminc/workflow/./src/constants/assignTaskDefinedOutcome.js","webpack://@jotforminc/workflow/./src/utils/emailUtils.js","webpack://@jotforminc/workflow/./src/utils/fixEmailOutcomes.js","webpack://@jotforminc/workflow/./src/utils/geometry/intersection.js","webpack://@jotforminc/workflow/./src/utils/index.js","webpack://@jotforminc/workflow/./src/utils/localStorage/index.js","webpack://@jotforminc/workflow/./src/utils/math/findClosestPoint.js","webpack://@jotforminc/workflow/./src/utils/propertyValidator.js","webpack://@jotforminc/workflow/./src/utils/sendTrackData.js","webpack://@jotforminc/workflow/./src/viewStore/useNodes.js","webpack://@jotforminc/workflow/./src/viewStore/useEdges.js","webpack://@jotforminc/workflow/./src/viewStore/useSettings.js","webpack://@jotforminc/workflow/./src/viewStore/useForm.js","webpack://@jotforminc/workflow/./src/viewStore/utils.js","webpack://@jotforminc/workflow/../../libs/abtest-manager/src/utils/utils.js","webpack://@jotforminc/workflow/../../libs/abtest-manager/src/utils/ABTestVariantCache.js","webpack://@jotforminc/workflow/../../libs/abtest-manager/src/utils/layer.js","webpack://@jotforminc/workflow/../../libs/abtest-manager/src/utils/ABTestManager.js","webpack://@jotforminc/workflow/../../libs/abtest-manager/src/utils/ActionManager.js","webpack://@jotforminc/workflow/../../libs/alert-label/src/index.js","webpack://@jotforminc/workflow/../../libs/builder/src/modules/question-properties-editor/customs/InlineFields/helpers.js","webpack://@jotforminc/workflow/../../../../src/icons/finance/coins-stacked-filled.svg","webpack://@jotforminc/workflow/../../../../src/icons/finance/coins-filled.svg","webpack://@jotforminc/workflow/../../../../src/icons/general/heart-filled.svg","webpack://@jotforminc/workflow/../../libs/builder/src/components/Dropdown.js","webpack://@jotforminc/workflow/../../libs/builder/src/components/TextInput.js","webpack://@jotforminc/workflow/../../libs/builder/src/components/Tooltip.js","webpack://@jotforminc/workflow/../../../../src/icons/media/pause-filled.svg","webpack://@jotforminc/workflow/../../../../src/icons/arrows/carets-from-center.svg","webpack://@jotforminc/workflow/../../libs/builder/src/components/Icon.js","webpack://@jotforminc/workflow/../../libs/builder/src/components/Tethered.js","webpack://@jotforminc/workflow/../../libs/builder/src/mixins/Translation.js","webpack://@jotforminc/workflow/../../libs/builder/src/modules/conditions/constants/Countries.js","webpack://@jotforminc/workflow/../../libs/builder/src/modules/conditions/constants/Specials.js","webpack://@jotforminc/workflow/../../libs/builder/src/modules/conditions/constants/Actions.js","webpack://@jotforminc/workflow/../../libs/builder/src/modules/conditions/constants/Operators.js","webpack://@jotforminc/workflow/../../libs/builder/src/modules/conditions/ConditionUtils.js","webpack://@jotforminc/workflow/../../libs/builder/src/modules/conditions/constants/ConditionTitles.js","webpack://@jotforminc/workflow/../../libs/builder/src/modules/conditions/IfTerm.js","webpack://@jotforminc/workflow/../../libs/builder/src/modules/conditions/constants/Terms.js","webpack://@jotforminc/workflow/../../libs/builder/src/modules/conditions/IfTermsContainer.js","webpack://@jotforminc/workflow/../../libs/builder/src/constants/constants.js","webpack://@jotforminc/workflow/../../libs/builder/src/dispatchers/AppDispatcher.js","webpack://@jotforminc/workflow/../../libs/builder/src/actions/ConditionActions.js","webpack://@jotforminc/workflow/../../libs/builder/src/modules/conditions/Condition.js","webpack://@jotforminc/workflow/../../libs/builder/src/modules/conditions/ForWorkflowBuilder.js","webpack://@jotforminc/workflow/../../libs/checkbox/src/components/Checkbox.js","webpack://@jotforminc/workflow/../../libs/checkbox/src/components/CheckboxItem.js","webpack://@jotforminc/workflow/../../libs/colored-bar/src/components/ColoredBarDropdown.js","webpack://@jotforminc/workflow/../../libs/colored-bar/src/components/ColoredBarGroup.js","webpack://@jotforminc/workflow/../../../../src/icons/editor/droplet-filled.svg","webpack://@jotforminc/workflow/../../libs/colored-bar/src/components/index.js","webpack://@jotforminc/workflow/../../libs/common-button/src/components/Button.js","webpack://@jotforminc/workflow/../../libs/common/src/components/ApprovalReportSample/Demo/Text.js","webpack://@jotforminc/workflow/../../libs/common/src/components/ApprovalReportSample/Demo/Select.js","webpack://@jotforminc/workflow/../../libs/common/src/components/ApprovalReportSample/Demo/Approver.js","webpack://@jotforminc/workflow/../../libs/common/src/components/ApprovalReportSample/Demo/Sign.js","webpack://@jotforminc/workflow/../../libs/common/src/components/ApprovalReportSample/ReportSample.js","webpack://@jotforminc/workflow/../../libs/common/src/components/PrefillSettings/constants.js","webpack://@jotforminc/workflow/../../libs/common/src/components/PrefillSettings/utils.js","webpack://@jotforminc/workflow/../../libs/constants/src/email/index.js","webpack://@jotforminc/workflow/../../libs/constants/src/languages/index.js","webpack://@jotforminc/workflow/../../libs/constants/src/propTypes/index.js","webpack://@jotforminc/workflow/../../libs/constants/src/questions/index.js","webpack://@jotforminc/workflow/../../libs/constants/src/texts/index.js","webpack://@jotforminc/workflow/../../libs/constants/src/time/index.js","webpack://@jotforminc/workflow/../../libs/contact-card/src/utils.js","webpack://@jotforminc/workflow/../../libs/contact-card/src/components/ContactAvatar.js","webpack://@jotforminc/workflow/../../libs/contact-card/src/components/QuestionBasedContactCard.js","webpack://@jotforminc/workflow/../../libs/contact-card/src/components/ContactCard.js","webpack://@jotforminc/workflow/../../libs/contact-card/src/components/ContactCardPopover.js","webpack://@jotforminc/workflow/../../libs/contact-card/src/constants.js","webpack://@jotforminc/workflow/../../libs/date-picker/src/index.js","webpack://@jotforminc/workflow/../../../../src/icons/general/link-diagonal-broken.svg","webpack://@jotforminc/workflow/../../libs/dialog/src/assets/svg/iconHipaaWarning.svg","webpack://@jotforminc/workflow/../../libs/dialog/src/components/Dialog.js","webpack://@jotforminc/workflow/../../libs/dropdown/src/GroupOptionRenderer.js","webpack://@jotforminc/workflow/../../libs/dropdown/src/index.js","webpack://@jotforminc/workflow/../../libs/editable-pill/src/assets/svg/icon_cross.svg","webpack://@jotforminc/workflow/../../libs/editable-pill/src/assets/svg/icon_pill.svg","webpack://@jotforminc/workflow/../../libs/editable-pill/src/index.js","webpack://@jotforminc/workflow/../../libs/uikit/src/components/Pillbox/index.js","webpack://@jotforminc/workflow/../../libs/email-input/src/components/Pill/index.js","webpack://@jotforminc/workflow/../../libs/email-input/src/utils/index.js","webpack://@jotforminc/workflow/../../libs/email-input/src/styles/index.js","webpack://@jotforminc/workflow/../../libs/email-input/src/index.js","webpack://@jotforminc/workflow/../../libs/email-template/src/blocks/Button.js","webpack://@jotforminc/workflow/../../../../src/icons/general/building.svg","webpack://@jotforminc/workflow/../../../../src/icons/products/product-teams-basic-filled.svg","webpack://@jotforminc/workflow/../../libs/login-flow/src/components/PasswordWithToggle/index.js","webpack://@jotforminc/workflow/../../libs/email-wizards/src/components/TabList/TabListWrapper.js","webpack://@jotforminc/workflow/../../libs/email-wizards/src/wizards/Email/constants.js","webpack://@jotforminc/workflow/../../libs/file-upload/src/index.js","webpack://@jotforminc/workflow/../../libs/form-wizard/src/utils/constants.js","webpack://@jotforminc/workflow/../../libs/smtp-wizard/src/components/Button.js","webpack://@jotforminc/workflow/../../libs/smtp-wizard/src/components/Dropdown.js","webpack://@jotforminc/workflow/../../libs/smtp-wizard/src/components/FormControlElement.js","webpack://@jotforminc/workflow/../../libs/smtp-wizard/src/components/SmtpWizardFooter.js","webpack://@jotforminc/workflow/../../libs/smtp-wizard/src/components/StandAloneEmailWizard.js","webpack://@jotforminc/workflow/../../libs/smtp-wizard/src/utils/constants.js","webpack://@jotforminc/workflow/../../libs/smtp-wizard/src/components/Password.js","webpack://@jotforminc/workflow/../../libs/smtp-wizard/src/components/Wizard.js","webpack://@jotforminc/workflow/../../libs/smtp-wizard/src/utils/api.js","webpack://@jotforminc/workflow/../../libs/smtp-wizard/src/components/wizards/CheckEmail/index.js","webpack://@jotforminc/workflow/../../libs/smtp-wizard/src/components/wizards/Verification/index.js","webpack://@jotforminc/workflow/../../libs/smtp-wizard/src/components/SmtpSetupModal/constants.js","webpack://@jotforminc/workflow/../../libs/smtp-wizard/src/utils/utils.js","webpack://@jotforminc/workflow/../../libs/smtp-wizard/src/components/wizards/Smtp/UserSmtpWizard.js","webpack://@jotforminc/workflow/../../libs/smtp-wizard/src/components/NewEmailWizard.js","webpack://@jotforminc/workflow/../../libs/email-wizards/src/components/EmailEditorManager/index.js","webpack://@jotforminc/workflow/../../libs/email-wizards/src/components/Toggle/index.js","webpack://@jotforminc/workflow/../../libs/email-wizards/src/components/Dropdown/index.js","webpack://@jotforminc/workflow/../../libs/email-wizards/src/components/GroupedDropdown/CustomBadge.js","webpack://@jotforminc/workflow/../../libs/email-wizards/src/assets/google.js","webpack://@jotforminc/workflow/../../libs/email-wizards/src/assets/microsoft.js","webpack://@jotforminc/workflow/../../libs/email-wizards/src/components/GroupedDropdown/ProviderBadge.js","webpack://@jotforminc/workflow/../../libs/email-wizards/src/helpers/constants.js","webpack://@jotforminc/workflow/../../libs/email-wizards/src/components/GroupedDropdown/DropdownItem.js","webpack://@jotforminc/workflow/../../libs/email-wizards/src/components/GroupedDropdown/DropdownList.js","webpack://@jotforminc/workflow/../../libs/email-wizards/src/components/GroupedDropdown/index.js","webpack://@jotforminc/workflow/../../libs/email-wizards/src/components/Checkbox/index.js","webpack://@jotforminc/workflow/../../libs/email-wizards/src/components/MagnetCheckbox/index.js","webpack://@jotforminc/workflow/../../libs/email-wizards/src/components/Datepicker/index.js","webpack://@jotforminc/workflow/../../libs/email-wizards/src/components/EmailDropdown/index.js","webpack://@jotforminc/workflow/../../libs/email-wizards/src/components/ResettablePassword/index.js","webpack://@jotforminc/workflow/../../libs/email-wizards/src/components/PasswordWithToggle/index.js","webpack://@jotforminc/workflow/../../libs/email-wizards/src/constants/FormWizardComponentTypes.js","webpack://@jotforminc/workflow/../../libs/email-wizards/src/components/LoadingDots/index.js","webpack://@jotforminc/workflow/../../libs/email-wizards/src/components/Wrappers/formFieldsWrapper.js","webpack://@jotforminc/workflow/../../libs/email-wizards/src/wizards/Email/ElementListGenerator.js","webpack://@jotforminc/workflow/../../libs/email-wizards/src/wizards/Email/index.js","webpack://@jotforminc/workflow/../../libs/email-wizards/src/components/RecipientError.js","webpack://@jotforminc/workflow/../../libs/email-wizards/src/components/EmptyRenderer.js","webpack://@jotforminc/workflow/../../libs/email-wizards/src/wizards/Recipients/ElementListGenerator.js","webpack://@jotforminc/workflow/../../libs/email-wizards/src/wizards/Recipients/index.js","webpack://@jotforminc/workflow/../../libs/email-wizards/src/wizards/Advance/SendDateRenderer.js","webpack://@jotforminc/workflow/../../libs/email-wizards/src/wizards/Advance/ElementListGenerator.js","webpack://@jotforminc/workflow/../../libs/email-wizards/src/wizards/Advance/index.js","webpack://@jotforminc/workflow/../../libs/schedule-panel/src/components/Dropdown.js","webpack://@jotforminc/workflow/../../libs/schedule-panel/src/scIndex.js","webpack://@jotforminc/workflow/./src/styles/style.scss?e086","webpack://@jotforminc/workflow/../../libs/schedule-panel/src/components/Toggle.js","webpack://@jotforminc/workflow/../../libs/schedule-panel/src/index.js","webpack://@jotforminc/workflow/../../libs/email-wizards/src/wizards/Schedule/index.js","webpack://@jotforminc/workflow/../../libs/email-wizards/src/constants/TabList.js","webpack://@jotforminc/workflow/../../libs/email-wizards/src/api/index.js","webpack://@jotforminc/workflow/../../libs/email-wizards/src/EmailWizard.js","webpack://@jotforminc/workflow/../../libs/limit-assets/src/components/AttachPDFWarning/index.js","webpack://@jotforminc/workflow/../../libs/email-wizards/src/components/SelectList/index.js","webpack://@jotforminc/workflow/../../libs/email-wizards/src/constants/EmailTemplateTypes.js","webpack://@jotforminc/workflow/../../libs/email-wizards/src/constants/PropTypes.js","webpack://@jotforminc/workflow/../../libs/email-wizards/src/helpers/EmailWizardHelper.js","webpack://@jotforminc/workflow/../../libs/email-wizards/src/helpers/layer.js","webpack://@jotforminc/workflow/../../libs/email-wizards/src/constants/DefaultEmailConfigs.js","webpack://@jotforminc/workflow/../../libs/email-template/src/blocks/Blockquote.js","webpack://@jotforminc/workflow/../../libs/email-template/src/blocks/Header.js","webpack://@jotforminc/workflow/../../libs/email-template/src/blocks/Paragraph.js","webpack://@jotforminc/workflow/../../libs/email-template/src/blocks/Table.js","webpack://@jotforminc/workflow/../../libs/email-template/src/blocks/MailWrapper.js","webpack://@jotforminc/workflow/../../libs/email-template/src/blocks/TableWrapper.js","webpack://@jotforminc/workflow/../../libs/email-template/src/blocks/HeaderTable.js","webpack://@jotforminc/workflow/../../libs/email-template/src/blocks/SubmissionTable.js","webpack://@jotforminc/workflow/../../libs/email-wizards/src/templates/DefaultEmail.js","webpack://@jotforminc/workflow/../../libs/email-wizards/src/templates/DefaultEmailBranding.js","webpack://@jotforminc/workflow/../../libs/email-wizards/src/helpers/utils.js","webpack://@jotforminc/workflow/../../libs/empty-list/src/assets/svg/noFormsIcon.svg","webpack://@jotforminc/workflow/../../libs/empty-list/src/assets/svg/noAppsIcon.svg","webpack://@jotforminc/workflow/../../libs/empty-list/src/assets/svg/noTablesIcon.svg","webpack://@jotforminc/workflow/../../libs/empty-list/src/assets/svg/noReportsIcon.svg","webpack://@jotforminc/workflow/../../libs/empty-list/src/assets/svg/noApprovalsIcon.svg","webpack://@jotforminc/workflow/../../libs/empty-list/src/assets/svg/noSignDocumentsIcon.svg","webpack://@jotforminc/workflow/../../libs/empty-list/src/assets/svg/noTeamFormsIcon.svg","webpack://@jotforminc/workflow/../../libs/empty-list/src/assets/svg/noDocumentIcon.svg","webpack://@jotforminc/workflow/../../libs/empty-list/src/components/EmptyList.js","webpack://@jotforminc/workflow/../../libs/empty-list/src/components/EmptyListBase.js","webpack://@jotforminc/workflow/../../libs/empty-list/src/assets/svg/noFormsFoundIcon.svg","webpack://@jotforminc/workflow/../../libs/empty-list/src/assets/svg/noAppsFoundIcon.svg","webpack://@jotforminc/workflow/../../libs/empty-list/src/assets/svg/noTablesFoundIcon.svg","webpack://@jotforminc/workflow/../../libs/empty-list/src/assets/svg/noReportsFoundIcon.svg","webpack://@jotforminc/workflow/../../libs/empty-list/src/assets/svg/noApprovalsFoundIcon.svg","webpack://@jotforminc/workflow/../../libs/empty-list/src/assets/svg/noSignDocumentsFoundIcon.svg","webpack://@jotforminc/workflow/../../libs/empty-list/src/components/NotFoundList.js","webpack://@jotforminc/workflow/../../libs/enterprise-utils/src/helpers.js","webpack://@jotforminc/workflow/../../libs/ep-utils/src/api/index.js","webpack://@jotforminc/workflow/../../libs/ep-utils/src/constants/assetIdentifier/index.js","webpack://@jotforminc/workflow/../../libs/ep-utils/src/constants/assetIdentifier/abTest.js","webpack://@jotforminc/workflow/../../libs/ep-utils/src/constants/assetIdentifier/campaign.js","webpack://@jotforminc/workflow/../../libs/ep-utils/src/constants/assetIdentifier/product.js","webpack://@jotforminc/workflow/../../libs/ep-utils/src/constants/assetIdentifier/automation.js","webpack://@jotforminc/workflow/../../libs/ep-utils/src/constants/assetIdentifier/webinar.js","webpack://@jotforminc/workflow/../../libs/ep-utils/src/constants/constants.js","webpack://@jotforminc/workflow/../../libs/ep-utils/src/constants/leadFormMap.js","webpack://@jotforminc/workflow/../../libs/ep-utils/src/constants/sdrSources.js","webpack://@jotforminc/workflow/../../libs/ep-utils/src/constants/texts.js","webpack://@jotforminc/workflow/../../libs/ep-utils/src/constants/urls.js","webpack://@jotforminc/workflow/../../libs/ep-utils/src/utils/googleAnalyticsTracking.js","webpack://@jotforminc/workflow/../../libs/ep-utils/src/utils/utils.js","webpack://@jotforminc/workflow/../../libs/feature-flag/src/components/FeatureFlag/FeatureFlag.js","webpack://@jotforminc/workflow/../../libs/search-input/src/index.js","webpack://@jotforminc/workflow/../../libs/form-fields-menu/src/components/SelectionGroup.js","webpack://@jotforminc/workflow/../../libs/form-fields-menu/src/components/ProtectedTag.js","webpack://@jotforminc/workflow/../../libs/form-fields-menu/src/components/EncryptedTag.js","webpack://@jotforminc/workflow/../../libs/form-fields-menu/src/components/Option.js","webpack://@jotforminc/workflow/../../libs/form-fields-menu/src/components/MultipleForms.js","webpack://@jotforminc/workflow/../../libs/form-fields-menu/src/components/SingleForm.js","webpack://@jotforminc/workflow/../../libs/form-fields-menu/src/index.js","webpack://@jotforminc/workflow/../../libs/form-wizard/src/components/defaultComponents.js","webpack://@jotforminc/workflow/../../libs/form-wizard/src/components/errorContext.js","webpack://@jotforminc/workflow/../../libs/form-wizard/src/utils/helper.js","webpack://@jotforminc/workflow/../../libs/form-wizard/src/components/FieldLine.js","webpack://@jotforminc/workflow/../../libs/form-wizard/src/components/index.js","webpack://@jotforminc/workflow/../../libs/hooks/src/useResize.js","webpack://@jotforminc/workflow/../../libs/hooks/src/index.js","webpack://@jotforminc/workflow/../../libs/icon-selector/src/components/SVGIcon/index.js","webpack://@jotforminc/workflow/../../libs/image-upload/src/assets/svg/unsplash_icon.svg","webpack://@jotforminc/workflow/../../libs/magnet/src/components/Textarea/textarea.cva.ts","webpack://@jotforminc/workflow/../../libs/magnet/src/components/Textarea/textarea.types.ts","webpack://@jotforminc/workflow/../../libs/magnet/src/components/Textarea/Textarea.tsx","webpack://@jotforminc/workflow/../../libs/image-upload/src/components/IconSelector.js","webpack://@jotforminc/workflow/../../libs/image-upload/src/components/UploadedImagesPanel.js","webpack://@jotforminc/workflow/../../libs/image-upload/src/components/ImagePreview.js","webpack://@jotforminc/workflow/../../libs/upload-fields/src/utils/index.js","webpack://@jotforminc/workflow/../../libs/image-upload/src/utils/index.js","webpack://@jotforminc/workflow/../../libs/upload-fields/src/index.js","webpack://@jotforminc/workflow/../../libs/image-upload/src/actions/index.js","webpack://@jotforminc/workflow/../../libs/image-upload/src/constants/index.js","webpack://@jotforminc/workflow/../../libs/image-upload/src/components/ImageUpload.js","webpack://@jotforminc/workflow/../../libs/image-upload/src/components/LoadingScreen.js","webpack://@jotforminc/workflow/../../libs/limit-assets/src/constants/texts.js","webpack://@jotforminc/workflow/../../libs/limit-assets/src/api/index.js","webpack://@jotforminc/workflow/../../libs/limit-assets/src/constants/index.js","webpack://@jotforminc/workflow/../../libs/limit-assets/src/utils/index.js","webpack://@jotforminc/workflow/../../libs/limit-dialog/src/constants/texts.js","webpack://@jotforminc/workflow/../../libs/limit-dialog/src/api/index.js","webpack://@jotforminc/workflow/../../libs/limit-dialog/src/utils/index.js","webpack://@jotforminc/workflow/../../libs/loading/src/components/Loading.js","webpack://@jotforminc/workflow/../../libs/loading/src/components/Spinner.js","webpack://@jotforminc/workflow/../../libs/login-flow/src/components/ErrorAlert.js","webpack://@jotforminc/workflow/../../libs/login-flow/src/assets/close.svg","webpack://@jotforminc/workflow/../../libs/login-flow/src/temporary-duplicate/assets/svg/icon_fb.svg","webpack://@jotforminc/workflow/../../libs/login-flow/src/temporary-duplicate/assets/svg/icon_gl.svg","webpack://@jotforminc/workflow/../../libs/login-flow/src/assets/icon_ms.svg","webpack://@jotforminc/workflow/../../libs/login-flow/src/temporary-duplicate/assets/svg/icon_em.svg","webpack://@jotforminc/workflow/../../libs/login-flow/src/assets/icon_gl_36.svg","webpack://@jotforminc/workflow/../../libs/login-flow/src/assets/icon_fb_36.svg","webpack://@jotforminc/workflow/../../../../src/icons/brand/salesforce-filled.svg","webpack://@jotforminc/workflow/../../libs/login-flow/src/temporary-duplicate/assets/svg/icon_apple_white.svg","webpack://@jotforminc/workflow/../../libs/login-flow/src/assets/icon_ms_36.svg","webpack://@jotforminc/workflow/../../libs/login-flow/src/assets/icon_ap_36.svg","webpack://@jotforminc/workflow/../../libs/login-flow/src/temporary-duplicate/assets/svg/icon_back3.svg","webpack://@jotforminc/workflow/../../libs/login-flow/src/temporary-duplicate/assets/svg/icon_back.svg","webpack://@jotforminc/workflow/../../libs/login-flow/src/assets/idp-icons/auth0-logo-icon.svg","webpack://@jotforminc/workflow/../../libs/login-flow/src/assets/idp-icons/azure-logo-icon.svg","webpack://@jotforminc/workflow/../../libs/login-flow/src/assets/idp-icons/google-logo-icon.svg","webpack://@jotforminc/workflow/../../libs/login-flow/src/assets/idp-icons/microsoft-logo-icon.svg","webpack://@jotforminc/workflow/../../libs/login-flow/src/assets/idp-icons/okta-logo-icon.svg","webpack://@jotforminc/workflow/../../../../src/icons/security/scan-filled.svg","webpack://@jotforminc/workflow/../../libs/two-factor-settings/src/assets/svg/icon_gl.svg","webpack://@jotforminc/workflow/../../libs/two-factor-settings/src/assets/svg/icon_fb.svg","webpack://@jotforminc/workflow/../../libs/two-factor-settings/src/assets/svg/icon_apple_white.svg","webpack://@jotforminc/workflow/../../libs/login-flow/src/assets/icon_sf_36.svg","webpack://@jotforminc/workflow/../../libs/login-flow/src/temporary-duplicate/assets/svg/closeWithCircle.svg","webpack://@jotforminc/workflow/../../../../src/icons/general/flag-filled.svg","webpack://@jotforminc/workflow/../../libs/utils/src/loginSignup.js","webpack://@jotforminc/workflow/../../libs/login-flow/src/components/OFACModal/OFACModal.js","webpack://@jotforminc/workflow/../../libs/login-flow/src/components/OFACModal/index.js","webpack://@jotforminc/workflow/../../libs/login-flow/src/utils/loginSignup.js","webpack://@jotforminc/workflow/../../libs/login-flow/src/components/SalesforceButton.js","webpack://@jotforminc/workflow/../../libs/login-flow/src/components/FacebookButton.js","webpack://@jotforminc/workflow/../../libs/login-flow/src/components/GoogleButton.js","webpack://@jotforminc/workflow/../../libs/login-flow/src/components/TermsAndConditionsUrls.js","webpack://@jotforminc/workflow/../../libs/login-flow/src/components/MicrosoftButton.js","webpack://@jotforminc/workflow/../../libs/login-flow/src/components/AppleButton.js","webpack://@jotforminc/workflow/../../libs/login-flow/src/components/SocialButtons.js","webpack://@jotforminc/workflow/../../libs/constants/src/initiators/index.js","webpack://@jotforminc/workflow/../../libs/login-flow/src/api/manager.js","webpack://@jotforminc/workflow/../../libs/login-flow/src/api/index.js","webpack://@jotforminc/workflow/../../libs/login-flow/src/components/SignupOptions.js","webpack://@jotforminc/workflow/../../libs/login-flow/src/constants/index.js","webpack://@jotforminc/workflow/../../libs/login-flow/src/components/SignupWithEmail.js","webpack://@jotforminc/workflow/../../libs/login-flow/src/assets/idp-icons/onelogin-logo-icon.svg","webpack://@jotforminc/workflow/../../libs/login-flow/src/assets/idp-icons/private-logo-icon.svg","webpack://@jotforminc/workflow/../../libs/login-flow/src/assets/idp-icons/icons.js","webpack://@jotforminc/workflow/../../libs/login-flow/src/components/SSOLoginOptions.js","webpack://@jotforminc/workflow/../../libs/login-flow/src/components/LoginOptions.js","webpack://@jotforminc/workflow/../../libs/login-flow/src/components/SSOOptions.js","webpack://@jotforminc/workflow/../../libs/login-flow/src/components/ForgotPassword.js","webpack://@jotforminc/workflow/../../libs/pie-timer/src/sc/scPieTimer.js","webpack://@jotforminc/workflow/../../libs/pie-timer/src/index.js","webpack://@jotforminc/workflow/../../libs/verification-input/src/index.js","webpack://@jotforminc/workflow/../../libs/two-factor-settings/src/helpers/constants.js","webpack://@jotforminc/workflow/../../libs/two-factor-settings/src/components/styled.js","webpack://@jotforminc/workflow/../../libs/two-factor-settings/src/sc/scTwoFactorSettings.js","webpack://@jotforminc/workflow/../../libs/two-factor-settings/src/components/InfoBox.js","webpack://@jotforminc/workflow/../../libs/login-flow/src/components/Checkbox.js","webpack://@jotforminc/workflow/../../libs/login-flow/src/components/TwoFactorLogin.js","webpack://@jotforminc/workflow/../../libs/login-flow/src/components/EmailAuthLogin.js","webpack://@jotforminc/workflow/../../libs/login-flow/src/components/TwoFactorMethods.js","webpack://@jotforminc/workflow/../../libs/login-flow/src/components/SocialInit.js","webpack://@jotforminc/workflow/../../libs/login-flow/src/components/LoginError.js","webpack://@jotforminc/workflow/../../libs/login-flow/src/components/DeleteAccountModal/DeleteAccountModalStep1.js","webpack://@jotforminc/workflow/../../libs/login-flow/src/components/DeleteAccountModal/SocialsContainer.js","webpack://@jotforminc/workflow/../../libs/login-flow/src/components/DeleteAccountModal/ModalHeader.js","webpack://@jotforminc/workflow/../../libs/login-flow/src/components/DeleteAccountModal/ErrorMessage.js","webpack://@jotforminc/workflow/../../libs/login-flow/src/components/DeleteAccountModal/DeleteAccountModalStep2.js","webpack://@jotforminc/workflow/../../libs/login-flow/src/components/DeleteAccountModal/DeleteAccountModalStep3.js","webpack://@jotforminc/workflow/../../libs/login-flow/src/components/DeleteAccountModal/DeleteAccountModal.js","webpack://@jotforminc/workflow/../../libs/login-flow/src/components/ResetSuccess.js","webpack://@jotforminc/workflow/../../libs/login-flow/src/components/SocialTermsStep.js","webpack://@jotforminc/workflow/../../libs/login-flow/src/components/SocialTermsModal.js","webpack://@jotforminc/workflow/../../libs/login-flow/src/utils/renderStandaloneSocialTermsModal.js","webpack://@jotforminc/workflow/../../libs/login-flow/src/components/EmailAuthLoginModal.js","webpack://@jotforminc/workflow/../../libs/login-flow/src/utils/renderStandaloneEmailAuthModal.js","webpack://@jotforminc/workflow/../../libs/login-flow/src/components/VerifyAccountModal/Verification.js","webpack://@jotforminc/workflow/../../libs/login-flow/src/components/VerifyAccountModal/index.js","webpack://@jotforminc/workflow/../../libs/login-flow/src/components/UnusualSignup/index.js","webpack://@jotforminc/workflow/../../libs/login-flow/src/components/SignupWithSocialOpts.js","webpack://@jotforminc/workflow/../../libs/login-flow/src/components/RecoverAccountPage.js","webpack://@jotforminc/workflow/../../libs/login-flow/src/components/RecoverAccountNotification.js","webpack://@jotforminc/workflow/../../libs/login-flow/src/components/AccountRecoveryViewTicket.js","webpack://@jotforminc/workflow/../../libs/login-flow/src/components/LoginFlow.js","webpack://@jotforminc/workflow/../../libs/login-flow/src/components/Password/scPassword.js","webpack://@jotforminc/workflow/../../libs/login-flow/src/components/Password/RequirementsList.js","webpack://@jotforminc/workflow/../../libs/login-flow/src/components/Password/constants.js","webpack://@jotforminc/workflow/../../libs/login-flow/src/components/Password/index.js","webpack://@jotforminc/workflow/../../libs/login-flow/src/utils/helper.js","webpack://@jotforminc/workflow/../../libs/login-flow/src/utils/layer.js","webpack://@jotforminc/workflow/../../libs/modals/src/components/ConfirmationModal/scRevokeAccess.js","webpack://@jotforminc/workflow/../../libs/modals/src/components/ConfirmationModal/index.js","webpack://@jotforminc/workflow/../../libs/option-group/src/components/StyledComponents.js","webpack://@jotforminc/workflow/../../libs/option-group/src/components/OptionGroup.js","webpack://@jotforminc/workflow/../../libs/resource-picker/src/components/FormPicker/CheckBox.js","webpack://@jotforminc/workflow/../../libs/resource-picker/src/components/FormPicker/MultipleFormPDFDropdown/components/SelectList.js","webpack://@jotforminc/workflow/../../libs/resource-picker/src/components/FormPicker/MultipleFormPDFDropdown/components/SelectListWrapper.js","webpack://@jotforminc/workflow/../../libs/resource-picker/src/components/FormPicker/MultipleFormPDFDropdown/components/DropdownWrapper.js","webpack://@jotforminc/workflow/../../libs/resource-picker/src/components/FormPicker/MultipleFormPDFDropdown/index.js","webpack://@jotforminc/workflow/../../libs/resource-picker/src/components/FormPicker/helpers/defaultTheme.js","webpack://@jotforminc/workflow/../../libs/resource-picker/src/assets/svg/resourcePickerIcons/noFormsFoundIcon.svg","webpack://@jotforminc/workflow/../../libs/resource-picker/src/assets/svg/resourcePickerIcons/noAppsFoundIcon.svg","webpack://@jotforminc/workflow/../../libs/resource-picker/src/assets/svg/resourcePickerIcons/noTablesFoundIcon.svg","webpack://@jotforminc/workflow/../../libs/resource-picker/src/assets/svg/resourcePickerIcons/noReportsFoundIcon.svg","webpack://@jotforminc/workflow/../../libs/resource-picker/src/assets/svg/resourcePickerIcons/noApprovalsFoundIcon.svg","webpack://@jotforminc/workflow/../../libs/resource-picker/src/assets/svg/resourcePickerIcons/noSignDocumentsFoundIcon.svg","webpack://@jotforminc/workflow/../../libs/resource-picker/src/assets/svg/resourcePickerIcons/noBoardsFoundIcon.svg","webpack://@jotforminc/workflow/../../libs/resource-picker/src/assets/svg/resourcePickerIcons/noFormsIcon.svg","webpack://@jotforminc/workflow/../../libs/resource-picker/src/assets/svg/resourcePickerIcons/noAppsIcon.svg","webpack://@jotforminc/workflow/../../libs/resource-picker/src/assets/svg/resourcePickerIcons/noTablesIcon.svg","webpack://@jotforminc/workflow/../../libs/resource-picker/src/assets/svg/resourcePickerIcons/noReportsIcon.svg","webpack://@jotforminc/workflow/../../libs/resource-picker/src/assets/svg/resourcePickerIcons/noApprovalsIcon.svg","webpack://@jotforminc/workflow/../../libs/resource-picker/src/assets/svg/resourcePickerIcons/noSignDocumentsIcon.svg","webpack://@jotforminc/workflow/../../libs/resource-picker/src/assets/svg/resourcePickerIcons/noBoardsIcon.svg","webpack://@jotforminc/workflow/../../libs/resource-picker/src/utils/utils.js","webpack://@jotforminc/workflow/../../libs/resource-picker/src/components/FormPicker/FormItem/styled.js","webpack://@jotforminc/workflow/../../libs/resource-picker/src/components/FormPicker/helpers/propTypes.js","webpack://@jotforminc/workflow/../../libs/resource-picker/src/components/FormPicker/FormItem/index.js","webpack://@jotforminc/workflow/../../libs/resource-picker/src/components/PortalPicker/defaults/scPortalItem.js","webpack://@jotforminc/workflow/../../libs/resource-picker/src/components/PortalPicker/defaults/PortalItemDefaults/commonCss.js","webpack://@jotforminc/workflow/../../libs/resource-picker/src/components/PortalPicker/defaults/PortalItemDefaults/TitleRenderer.js","webpack://@jotforminc/workflow/../../libs/resource-picker/src/components/PortalPicker/defaults/PortalItemDefaults/DescriptionRenderer.js","webpack://@jotforminc/workflow/../../libs/resource-picker/src/components/PortalPicker/defaults/PortalItemDefaults/ItemContentRenderer.js","webpack://@jotforminc/workflow/../../libs/search-filter/src/utils/index.js","webpack://@jotforminc/workflow/../../libs/resource-picker/src/components/PortalPicker/defaults/PortalItemDefaults/constants.js","webpack://@jotforminc/workflow/../../libs/resource-picker/src/components/PortalPicker/defaults/PortalItemDefaults/IconRenderer.js","webpack://@jotforminc/workflow/../../libs/resource-picker/src/components/PortalPicker/defaults/PortalItem.js","webpack://@jotforminc/workflow/../../libs/resource-picker/src/components/PortalPicker/defaults/scPortalOption.js","webpack://@jotforminc/workflow/../../libs/resource-picker/src/components/PortalPicker/defaults/PortalOption.js","webpack://@jotforminc/workflow/../../libs/resource-picker/src/components/ResourcePicker/items/Sheet/index.js","webpack://@jotforminc/workflow/../../libs/resource-picker/src/components/ResourcePicker/items/Reports/index.js","webpack://@jotforminc/workflow/../../libs/resource-picker/src/components/ResourcePicker/items/Approval/index.js","webpack://@jotforminc/workflow/../../libs/resource-picker/src/components/ResourcePicker/items/Sign/styles.js","webpack://@jotforminc/workflow/../../libs/resource-picker/src/components/ResourcePicker/items/Sign/index.js","webpack://@jotforminc/workflow/../../libs/resource-picker/src/components/ResourcePicker/items/Operation/index.js","webpack://@jotforminc/workflow/../../libs/resource-picker/src/components/ResourcePicker/items/Board/index.js","webpack://@jotforminc/workflow/../../libs/resource-picker/src/components/ResourcePicker/constants.js","webpack://@jotforminc/workflow/../../libs/resource-picker/src/components/FormPicker/FormList/index.js","webpack://@jotforminc/workflow/../../libs/resource-picker/src/components/FormPicker/ConditionalModal.js","webpack://@jotforminc/workflow/../../libs/resource-picker/src/components/ResourcePicker/index.js","webpack://@jotforminc/workflow/../../libs/resource-picker/src/constants/index.js","webpack://@jotforminc/workflow/../../libs/resource-picker/src/utils/moment.js","webpack://@jotforminc/workflow/../../libs/resource-picker/src/utils/hooks.js","webpack://@jotforminc/workflow/../../libs/uikit/src/components/RichTextEditor/defaults/ImageUploadPanel.js","webpack://@jotforminc/workflow/../../libs/uikit/src/components/RichTextEditor/constants/index.js","webpack://@jotforminc/workflow/../../libs/uikit/src/components/RichTextEditor/utils/popoverButtonUtils.js","webpack://@jotforminc/workflow/../../libs/uikit/src/components/RichTextEditor/utils/index.js","webpack://@jotforminc/workflow/../../libs/uikit/src/utils/observers.js","webpack://@jotforminc/workflow/../../libs/uikit/src/components/RichTextEditor/index.js","webpack://@jotforminc/workflow/../../libs/uikit/src/components/RichTextEditor/defaults/Container.js","webpack://@jotforminc/workflow/../../libs/uikit/src/components/RichTextEditor/defaults/ErrorWrapper.js","webpack://@jotforminc/workflow/../../libs/uikit/src/components/RichTextEditor/defaults/LoadingWrapper.js","webpack://@jotforminc/workflow/../../libs/magnet/src/components/Modal/ModalActions.tsx","webpack://@jotforminc/workflow/../../libs/multiselect-with-search/src/components/MultiSelectWithSearch/scMultipleSelection.js","webpack://@jotforminc/workflow/../../libs/multiselect-with-search/src/components/MultiSelectWithSearch/index.js","webpack://@jotforminc/workflow/../../libs/submission-table-modal/src/components/SubmissionTableModal.js","webpack://@jotforminc/workflow/../../libs/image-upload-modal/src/index.js","webpack://@jotforminc/workflow/../../libs/rich-text-editor/src/components/DeleteSubmissionTableDialog.js","webpack://@jotforminc/workflow/../../libs/rich-text-editor/src/editorHelpers.js","webpack://@jotforminc/workflow/../../libs/rich-text-editor/src/index.js","webpack://@jotforminc/workflow/../../libs/router-bridge/src/jfrouter.js","webpack://@jotforminc/workflow/../../libs/safe-lazy-import/src/components/ErrorPage.js","webpack://@jotforminc/workflow/../../libs/safe-lazy-import/src/utils/safeLazy.js","webpack://@jotforminc/workflow/../../libs/search-filter/src/components/FilterHoverText.js","webpack://@jotforminc/workflow/../../libs/search-filter/src/components/constants.js","webpack://@jotforminc/workflow/../../libs/single-email-input/src/index.js","webpack://@jotforminc/workflow/../../../../src/icons/arrows/caret-down-bars.svg","webpack://@jotforminc/workflow/../../libs/feature-toggle/src/components/FeatureToggle.js","webpack://@jotforminc/workflow/../../libs/feature-toggle/src/components/Feature.js","webpack://@jotforminc/workflow/../../libs/smart-list/src/components/SmartList/helpers/defaultTheme.js","webpack://@jotforminc/workflow/../../libs/smart-list/src/components/SmartList/ControlBar/scControlBar.js","webpack://@jotforminc/workflow/../../libs/smart-list/src/components/SmartList/ControlBar/CheckBox.js","webpack://@jotforminc/workflow/../../libs/smart-list/src/components/SmartList/ControlBar/SearchInput.js","webpack://@jotforminc/workflow/../../libs/smart-list/src/components/SmartList/utils.js","webpack://@jotforminc/workflow/../../libs/smart-list/src/components/SmartList/ControlBar/Dropdown.js","webpack://@jotforminc/workflow/../../libs/smart-list/src/components/SmartList/ControlBar/SortMenu.js","webpack://@jotforminc/workflow/../../libs/smart-list/src/components/SmartList/ControlBar/FilterForm.js","webpack://@jotforminc/workflow/../../libs/smart-list/src/components/SmartList/ControlBar/index.js","webpack://@jotforminc/workflow/../../libs/smart-list/src/components/SmartList/FormLoadingSkeleton.js","webpack://@jotforminc/workflow/../../libs/smart-list/src/components/SmartList/hooks.js","webpack://@jotforminc/workflow/../../libs/smart-list/src/components/SmartList/index.js","webpack://@jotforminc/workflow/../../libs/storage-helper/src/constants.js","webpack://@jotforminc/workflow/../../libs/storage-helper/src/index.js","webpack://@jotforminc/workflow/../../libs/styled-modal/src/components/StyledModal/styled.js","webpack://@jotforminc/workflow/../../libs/styled-modal/src/components/StyledModal/index.js","webpack://@jotforminc/workflow/../../../../src/icons/arrows/angle-down.svg","webpack://@jotforminc/workflow/../../../../src/icons/arrows/angle-left.svg","webpack://@jotforminc/workflow/../../../../src/icons/arrows/angle-up.svg","webpack://@jotforminc/workflow/../../../../src/icons/arrows/arrow-right.svg","webpack://@jotforminc/workflow/../../../../src/icons/arrows/arrow-rotate-right.svg","webpack://@jotforminc/workflow/../../../../src/icons/arrows/arrow-up-right-from-square-sm.svg","webpack://@jotforminc/workflow/../../../../src/icons/arrows/chevron-left.svg","webpack://@jotforminc/workflow/../../../../src/icons/arrows/chevron-right.svg","webpack://@jotforminc/workflow/../../../../src/icons/communication/envelope-closed-filled.svg","webpack://@jotforminc/workflow/../../../../src/icons/communication/envelope-form-filled.svg","webpack://@jotforminc/workflow/../../../../src/icons/communication/message-filled.svg","webpack://@jotforminc/workflow/../../../../src/icons/documents/document-pdf-filled.svg","webpack://@jotforminc/workflow/../../../../src/icons/editor/pen-sign-filled.svg","webpack://@jotforminc/workflow/../../../../src/icons/editor/pencil-filled.svg","webpack://@jotforminc/workflow/../../../../src/icons/finance/cart-shopping-filled.svg","webpack://@jotforminc/workflow/../../../../src/icons/forms-files/form-arrow-right-filled.svg","webpack://@jotforminc/workflow/../../../../src/icons/forms-files/form-check-filled.svg","webpack://@jotforminc/workflow/../../../../src/icons/forms-files/form-filled.svg","webpack://@jotforminc/workflow/../../../../src/icons/forms-files/form-pen-check-filled.svg","webpack://@jotforminc/workflow/../../../../src/icons/forms-files/paper-report-filled.svg","webpack://@jotforminc/workflow/../../../../src/icons/general/check-circle-filled.svg","webpack://@jotforminc/workflow/../../../../src/icons/general/check-circle.svg","webpack://@jotforminc/workflow/../../../../src/icons/general/check-sm.svg","webpack://@jotforminc/workflow/../../../../src/icons/general/check.svg","webpack://@jotforminc/workflow/../../../../src/icons/general/conditional-branch-filled.svg","webpack://@jotforminc/workflow/../../../../src/icons/general/copy-filled.svg","webpack://@jotforminc/workflow/../../../../src/icons/general/exclamation-circle-filled.svg","webpack://@jotforminc/workflow/../../../../src/icons/general/exclamation-circle.svg","webpack://@jotforminc/workflow/../../../../src/icons/general/exclamation-triangle-filled.svg","webpack://@jotforminc/workflow/../../../../src/icons/general/eye-filled.svg","webpack://@jotforminc/workflow/../../../../src/icons/general/eye-slash-filled.svg","webpack://@jotforminc/workflow/../../../../src/icons/general/gear-filled.svg","webpack://@jotforminc/workflow/../../../../src/icons/general/grid-dots-vertical.svg","webpack://@jotforminc/workflow/../../../../src/icons/general/if-else-condition-filled.svg","webpack://@jotforminc/workflow/../../../../src/icons/general/info-circle-filled.svg","webpack://@jotforminc/workflow/../../../../src/icons/general/info-circle.svg","webpack://@jotforminc/workflow/../../../../src/icons/general/link-diagonal.svg","webpack://@jotforminc/workflow/../../../../src/icons/general/magnifying-glass.svg","webpack://@jotforminc/workflow/../../../../src/icons/general/merge-filled.svg","webpack://@jotforminc/workflow/../../../../src/icons/general/minus.svg","webpack://@jotforminc/workflow/../../../../src/icons/general/pencil-to-square.svg","webpack://@jotforminc/workflow/../../../../src/icons/general/plus-circle-filled.svg","webpack://@jotforminc/workflow/../../../../src/icons/general/plus-sm.svg","webpack://@jotforminc/workflow/../../../../src/icons/general/plus.svg","webpack://@jotforminc/workflow/../../../../src/icons/general/split-filled.svg","webpack://@jotforminc/workflow/../../../../src/icons/general/square-filled.svg","webpack://@jotforminc/workflow/../../../../src/icons/general/star-filled.svg","webpack://@jotforminc/workflow/../../../../src/icons/general/table.svg","webpack://@jotforminc/workflow/../../../../src/icons/general/task-filled.svg","webpack://@jotforminc/workflow/../../../../src/icons/general/trash-exclamation-filled.svg","webpack://@jotforminc/workflow/../../../../src/icons/general/trash-filled.svg","webpack://@jotforminc/workflow/../../../../src/icons/general/xmark-circle-filled.svg","webpack://@jotforminc/workflow/../../../../src/icons/general/xmark-sm.svg","webpack://@jotforminc/workflow/../../../../src/icons/general/xmark.svg","webpack://@jotforminc/workflow/../../../../src/icons/products/product-approvals-color.svg","webpack://@jotforminc/workflow/../../../../src/icons/products/product-form-builder-color-border.svg","webpack://@jotforminc/workflow/../../../../src/icons/products/product-payment-form-filled.svg","webpack://@jotforminc/workflow/../../../../src/icons/products/product-sign-color-border.svg","webpack://@jotforminc/workflow/../../../../src/icons/products/product-sign-filled.svg","webpack://@jotforminc/workflow/../../../../src/icons/products/product-tables-mono.svg","webpack://@jotforminc/workflow/../../../../src/icons/security/hipaa-filled.svg","webpack://@jotforminc/workflow/../../../../src/icons/security/key-filled.svg","webpack://@jotforminc/workflow/../../../../src/icons/security/lock-filled.svg","webpack://@jotforminc/workflow/../../../../src/icons/security/unlock-filled.svg","webpack://@jotforminc/workflow/../../../../src/icons/users/user-filled.svg","webpack://@jotforminc/workflow/../../../../src/icons/users/users-check-filled.svg","webpack://@jotforminc/workflow/../../../../src/logos/integration/salesforce-logomark-color.svg","webpack://@jotforminc/workflow/../../libs/tabs/src/tab-list/Tab.js","webpack://@jotforminc/workflow/../../libs/tabs/src/tab-list/TabList.js","webpack://@jotforminc/workflow/../../libs/tabs/src/tab-list/components/TabListContainer.js","webpack://@jotforminc/workflow/../../libs/tabs/src/tab-list/components/TabButtonContainer.js","webpack://@jotforminc/workflow/../../libs/tabs/src/tab-list/TabListWithStyles.js","webpack://@jotforminc/workflow/../../libs/tabs/src/tab-list/components/Wrapper.js","webpack://@jotforminc/workflow/../../libs/tabs/src/tab-list/components/TabButton.js","webpack://@jotforminc/workflow/../../libs/tag-input/src/utils/index.js","webpack://@jotforminc/workflow/../../libs/tag-input/src/patch/index.js","webpack://@jotforminc/workflow/../../libs/tag-input/src/constants/index.js","webpack://@jotforminc/workflow/../../libs/tag-input/src/index.js","webpack://@jotforminc/workflow/../../libs/toggle/src/index.js","webpack://@jotforminc/workflow/../../libs/tooltip/src/components/index.js","webpack://@jotforminc/workflow/../../libs/translation/src/constants/index.js","webpack://@jotforminc/workflow/../../libs/translation/src/hof.js","webpack://@jotforminc/workflow/../../libs/translation/src/domHelper.js","webpack://@jotforminc/workflow/../../libs/translation/src/Translation.js","webpack://@jotforminc/workflow/../../libs/translation/src/utils.js","webpack://@jotforminc/workflow/../../libs/translation/src/index.js","webpack://@jotforminc/workflow/../../libs/translation/src/global.js","webpack://@jotforminc/workflow/../../libs/uikit/src/components/Button/index.js","webpack://@jotforminc/workflow/../../libs/uikit/src/components/ColorPicker/defaults/Color.js","webpack://@jotforminc/workflow/../../libs/uikit/src/components/ColorPicker/defaults/Wrapper.js","webpack://@jotforminc/workflow/../../libs/uikit/src/components/ColorPicker/index.js","webpack://@jotforminc/workflow/../../libs/uikit/src/components/Dropdown/index.js","webpack://@jotforminc/workflow/../../libs/uikit/src/components/FileUpload/defaults/DragContainer.js","webpack://@jotforminc/workflow/../../libs/uikit/src/components/FileUpload/defaults/ErrorText.js","webpack://@jotforminc/workflow/../../../../src/icons/arrows/arrow-down-to-line.svg","webpack://@jotforminc/workflow/../../libs/uikit/src/components/FileUpload/defaults/FileInput.js","webpack://@jotforminc/workflow/../../libs/uikit/src/components/FileUpload/defaults/FilePreview.js","webpack://@jotforminc/workflow/../../libs/uikit/src/components/FileUpload/defaults/Form.js","webpack://@jotforminc/workflow/../../libs/uikit/src/components/FileUpload/defaults/LoadingScreen.js","webpack://@jotforminc/workflow/../../libs/uikit/src/components/FileUpload/defaults/Text.js","webpack://@jotforminc/workflow/../../libs/uikit/src/components/FileUpload/defaults/TextWrapper.js","webpack://@jotforminc/workflow/../../libs/uikit/src/components/FileUpload/defaults/Thumbnail.js","webpack://@jotforminc/workflow/../../libs/uikit/src/components/FileUpload/defaults/Wrapper.js","webpack://@jotforminc/workflow/../../libs/uikit/src/components/HiddenFrame/index.js","webpack://@jotforminc/workflow/../../libs/uikit/src/components/DragContainer/index.js","webpack://@jotforminc/workflow/../../libs/uikit/src/components/FileUpload/index.js","webpack://@jotforminc/workflow/../../libs/uikit/src/components/Modal/index.js","webpack://@jotforminc/workflow/../../libs/uikit/src/components/Option/index.js","webpack://@jotforminc/workflow/../../libs/uikit/src/components/OptionGroup/index.js","webpack://@jotforminc/workflow/../../libs/uikit/src/components/Popover/index.js","webpack://@jotforminc/workflow/../../libs/uikit/src/components/Portal/index.js","webpack://@jotforminc/workflow/../../libs/uikit/src/components/SelectionGroup/index.js","webpack://@jotforminc/workflow/../../libs/uikit/src/components/TextInput/index.js","webpack://@jotforminc/workflow/../../libs/uikit/src/components/Tooltip/index.js","webpack://@jotforminc/workflow/../../libs/uikit/src/utils/constants.js","webpack://@jotforminc/workflow/../../libs/uikit/src/utils/hooks.js","webpack://@jotforminc/workflow/../../libs/uikit/src/utils/index.js","webpack://@jotforminc/workflow/../../libs/user-list/src/styles/index.js","webpack://@jotforminc/workflow/../../libs/user-list/src/index.js","webpack://@jotforminc/workflow/../../libs/utils/src/color.js","webpack://@jotforminc/workflow/../../libs/utils/src/data.js","webpack://@jotforminc/workflow/../../libs/utils/src/dom.js","webpack://@jotforminc/workflow/../../libs/utils/src/sanitize.js","webpack://@jotforminc/workflow/../../libs/utils/src/emailUtils.js","webpack://@jotforminc/workflow/../../libs/utils/src/gtm.js","webpack://@jotforminc/workflow/../../libs/utils/src/limitUtils.js","webpack://@jotforminc/workflow/../../libs/utils/src/misc.js","webpack://@jotforminc/workflow/../../libs/utils/src/mobileUtils.js","webpack://@jotforminc/workflow/../../libs/constants/src/platforms/index.js","webpack://@jotforminc/workflow/../../libs/utils/src/platform/platform.js","webpack://@jotforminc/workflow/../../libs/utils/src/questions.js","webpack://@jotforminc/workflow/../../libs/utils/src/strings.js","webpack://@jotforminc/workflow/../../libs/utils/src/time.js","webpack://@jotforminc/workflow/../../libs/utils/src/translation.js","webpack://@jotforminc/workflow/../../libs/utils/src/validation.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/Button/CloseButton.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/Button/index.js","webpack://@jotforminc/workflow/../../../../src/icons/arrows/arrow-left.svg","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/Button/BackButton.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/Header/index.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/Loader/index.js","webpack://@jotforminc/workflow/../../../../src/icons/general/copy.svg","webpack://@jotforminc/workflow/../../../../src/icons/layout/layers-filled.svg","webpack://@jotforminc/workflow/../../../../src/icons/technology/mobile.svg","webpack://@jotforminc/workflow/../../../../src/icons/technology/tablet.svg","webpack://@jotforminc/workflow/../../../../src/icons/technology/desktop.svg","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/AppPreview/assets/svg/tryArrow.svg","webpack://@jotforminc/workflow/../../../../src/icons/general/copy-line.svg","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/StandaloneTemplates/assets/icon-noresult.svg","webpack://@jotforminc/workflow/../../../../src/icons/arrows/arrow-up-to-line.svg","webpack://@jotforminc/workflow/../../../../src/icons/layout/layer-filled.svg","webpack://@jotforminc/workflow/../../../../src/icons/arrows/caret-right.svg","webpack://@jotforminc/workflow/../../../../src/icons/arrows/arrow-down.svg","webpack://@jotforminc/workflow/../../libs/limit-dialog/src/utils/abtests.js","webpack://@jotforminc/workflow/../../libs/limit-dialog/src/components/openFormLimitDialog.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/StandaloneTemplates/constantImages.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/StandaloneTemplates/getDeviceType.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/StandaloneTemplates/components/TemplateItem/utils.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/StandaloneTemplates/onImageError.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/StandaloneTemplates/components/TemplateItem/PreviewHint.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/StandaloneTemplates/components/TemplateItem/AppTemplateItem.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/StandaloneTemplates/components/TemplateItem/PdfTemplateItem.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/StandaloneTemplates/components/TemplateItem/FormTemplateItem.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/StandaloneTemplates/components/TemplateItem/TableTemplateItem.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/StandaloneTemplates/components/TemplateItem/ApprovalTemplateItem.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/StandaloneTemplates/components/TemplateItem/AgentTemplateItem.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/StandaloneTemplates/components/TemplateItem/PageTemplateItem.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/StandaloneTemplates/templateConstants.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/StandaloneTemplates/components/ScTemplates.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/StandaloneTemplates/components/TemplateItem/TemplateItemContainer.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/StandaloneTemplates/components/PreviewModalContents/SimilarTemplatesItem.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/StandaloneTemplates/components/PreviewModalContents/InfoBar.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/StandaloneTemplates/components/PreviewModalContents/ModalControls.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/StandaloneTemplates/components/PreviewModalContents/FormTemplatePreviewContent.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/AppPreview/core/constants.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/AppPreview/core/texts.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/AppPreview/components/ViewMode.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/AppPreview/components/MobileBorder.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/AppPreview/components/TabletBorder.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/AppPreview/components/MobilePageBorder.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/AppPreview/components/TabletPageBorder.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/AppPreview/core/utils.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/AppPreview/components/MultiplePreview.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/AppPreview/components/SinglePreview.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/AppPreview/components/AppPreviewBody.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/StandaloneTemplates/components/PreviewModalContents/AppTemplatePreviewContent.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/StandaloneTemplates/components/PreviewModalContents/ApprovalTemplatePreviewContent.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/StandaloneTemplates/components/PreviewModalContents/TableTemplatePreviewContent.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/StandaloneTemplates/components/RoleSelector.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/StandaloneTemplates/components/PreviewModalContents/PdfTemplatePreviewContent.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/StandaloneTemplates/components/PreviewModalContents/PageTemplatePreviewContent.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/StandaloneTemplates/components/PreviewModalContents/AgentTemplatePreviewContent.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/StandaloneTemplates/components/PreviewModalContents/AppTemplateAreaRenderer.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/StandaloneTemplates/apiTemplates.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/StandaloneTemplates/utils.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/StandaloneTemplates/customModalConstants.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/Wizard/WizardTemplateModal.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/StandaloneTemplates/api.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/StandaloneTemplates/components/ScSearch.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/StandaloneTemplates/components/Search.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/StandaloneTemplates/components/Sidebar/Accordion.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/StandaloneTemplates/components/Sidebar/RadioButton.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/StandaloneTemplates/components/Sidebar/Sorting.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/StandaloneTemplates/components/Sidebar/Search.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/StandaloneTemplates/components/Sidebar/LanguagesFilter.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/StandaloneTemplates/components/Sidebar/FormLayout.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/StandaloneTemplates/components/Sidebar/index.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/StandaloneTemplates/components/ScRelatedCategories.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/StandaloneTemplates/components/RelatedCategories.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/StandaloneTemplates/constants.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/StandaloneTemplates/components/SubCategoryGalleryItem.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/StandaloneTemplates/components/ScMainWrapper.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/StandaloneTemplates/index.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/hooks/useIsMobile.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/StandaloneTemplates/hooks.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/Wizard/NewWizardTemplateModal.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/Navigation/LegacyTemplatesRenderer.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/Navigation/WizardTemplate.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/Wizard/WizardBody.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/Wizard/WizardItem.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/Wizard/WizardList.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/Wizard/WizardListItem.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/Wizard/WizardWrapper.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/components/Wizard/index.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/core/texts.js","webpack://@jotforminc/workflow/../../libs/wizard-shared/src/core/utils.js","webpack://@jotforminc/workflow/../../libs/workflow-components/src/components/TeamImageWithWrapper.js","webpack://@jotforminc/workflow/../../libs/emoji-mart/src/components/Picker.js","webpack://@jotforminc/workflow/../../libs/icon-selector/src/components/IconEmojiSelector/index.js","webpack://@jotforminc/workflow/../../libs/enterprise-components/src/components/Cover/api.ts","webpack://@jotforminc/workflow/../../libs/enterprise-components/src/components/Cover/utils.ts","webpack://@jotforminc/workflow/../../libs/enterprise-components/src/components/Cover/ColorRenderer.tsx","webpack://@jotforminc/workflow/../../libs/enterprise-components/src/components/Cover/constants.ts","webpack://@jotforminc/workflow/../../libs/enterprise-components/src/components/Cover/StyledElements.tsx","webpack://@jotforminc/workflow/../../libs/enterprise-components/src/components/Cover/CustomizeTeamAvatar.tsx","webpack://@jotforminc/workflow/../../libs/enterprise-components/src/components/Cover/CustomizeCover.tsx","webpack://@jotforminc/workflow/../../libs/enterprise-components/src/components/Cover/CustomizationButton.tsx","webpack://@jotforminc/workflow/../../libs/emoji-mart/src/components/Emoji.js","webpack://@jotforminc/workflow/../../libs/icon-selector/src/components/EmojiRenderer/index.js","webpack://@jotforminc/workflow/../../libs/enterprise-components/src/components/Image/StyledElements.tsx","webpack://@jotforminc/workflow/../../libs/enterprise-components/src/components/Image/index.tsx","webpack://@jotforminc/workflow/../../libs/enterprise-components/src/components/Image/ImageWithWrapper.tsx","webpack://@jotforminc/workflow/../../libs/enterprise-components/src/utils/api.ts","webpack://@jotforminc/workflow/../../libs/enterprise-components/src/utils/index.ts","webpack://@jotforminc/workflow/../../../../src/logos/integration/googledrive-logomark-color.svg","webpack://@jotforminc/workflow/../../../../src/logos/integration/box-color.svg","webpack://@jotforminc/workflow/../../../../src/logos/integration/onedrive-logomark-color.svg","webpack://@jotforminc/workflow/../../../../src/logos/integration/dropbox-logomark-color.svg","webpack://@jotforminc/workflow/../../../../src/logos/integration/egnyte-logomark-dark.svg","webpack://@jotforminc/workflow/../../../../src/logos/integration/quickbooks-logomark-color.svg","webpack://@jotforminc/workflow/../../../../src/logos/integration/airtable-logomark-color.svg","webpack://@jotforminc/workflow/../../../../src/logos/integration/monday-logomark-color.svg","webpack://@jotforminc/workflow/../../../../src/logos/integration/googlesheets-color.svg","webpack://@jotforminc/workflow/../../../../src/logos/integration/microsoftteams-logomark-color.svg","webpack://@jotforminc/workflow/../../../../src/logos/integration/webhooks-logomark-color.svg","webpack://@jotforminc/workflow/../../../../src/logos/integration/campaignmonitor-logomark-color.svg","webpack://@jotforminc/workflow/../../../../src/logos/integration/trello-logomark-color.svg","webpack://@jotforminc/workflow/../../../../src/logos/integration/slack-logomark-color.svg","webpack://@jotforminc/workflow/../../../../src/logos/integration/clickup-logomark-color.svg","webpack://@jotforminc/workflow/../../../../src/logos/integration/zoho-color.svg","webpack://@jotforminc/workflow/../../../../src/logos/integration/googlecalendar-logomark-color.svg","webpack://@jotforminc/workflow/../../../../src/logos/integration/zoom-logomark-color.svg","webpack://@jotforminc/workflow/../../../../src/logos/integration/hubspot-logomark-color.svg","webpack://@jotforminc/workflow/../../../../src/logos/integration/asana-logomark-color.svg","webpack://@jotforminc/workflow/../../../../src/logos/integration/mailerlite-logomark-color.svg","webpack://@jotforminc/workflow/../../../../src/logos/integration/constantcontact-logomark-color.svg","webpack://@jotforminc/workflow/../../../../src/logos/integration/mailchimp-logomark-dark.svg","webpack://@jotforminc/workflow/../../../../src/logos/integration/getresponse-logomark-color.svg","webpack://@jotforminc/workflow/../../../../src/logos/integration/activecampaign-logomark-color.svg","webpack://@jotforminc/workflow/../../../../src/logos/integration/aweber-logomark-color.svg","webpack://@jotforminc/workflow/../../../../src/logos/integration/keap-logomark-color.svg","webpack://@jotforminc/workflow/../../../../src/logos/integration/zendesk-logomark-color.svg","webpack://@jotforminc/workflow/../../../../src/logos/integration/pipedrive-logomark-color.svg","webpack://@jotforminc/workflow/../../../../src/logos/integration/sendgrid-logomark-color.svg","webpack://@jotforminc/workflow/../../../../src/logos/integration/ftp-color.svg","webpack://@jotforminc/workflow/../../../../src/logos/integration/icontact-logomark-color.svg","webpack://@jotforminc/workflow/../../../../src/logos/integration/madmimi-logomark-color.svg","webpack://@jotforminc/workflow/../../../../src/logos/integration/highrise-logomark-color.svg","webpack://@jotforminc/workflow/../../../../src/logos/integration/solve-logomark-color.svg","webpack://@jotforminc/workflow/../../../../src/logos/integration/insightly-color.svg","webpack://@jotforminc/workflow/../../../../src/logos/integration/callingly-logomark-color.svg","webpack://@jotforminc/workflow/../../../../src/logos/integration/verticalresponse-logomark-color.svg","webpack://@jotforminc/workflow/../../../../src/logos/integration/zapier-logomark-color.svg","webpack://@jotforminc/workflow/../../../../src/logos/integration/xzazu-logomark-color.svg","webpack://@jotforminc/workflow/../../../../src/logos/integration/paymo-logomark-color.svg","webpack://@jotforminc/workflow/../../../../src/logos/integration/boxsign-color.svg","webpack://@jotforminc/workflow/../../libs/integration-constants/src/icons.ts","webpack://@jotforminc/workflow/../../libs/integration-constants/src/types/index.ts","webpack://@jotforminc/workflow/../../libs/integration-constants/src/partnerDetails/GoogleDriveDetails.ts","webpack://@jotforminc/workflow/../../libs/integration-constants/src/partnerDetails/BoxDetails.ts","webpack://@jotforminc/workflow/../../libs/integration-constants/src/partnerDetails/DropboxDetails.ts","webpack://@jotforminc/workflow/../../libs/integration-constants/src/partnerDetails/OnedriveDetails.ts","webpack://@jotforminc/workflow/../../libs/integration-constants/src/partnerDetails/EgnyteDetails.ts","webpack://@jotforminc/workflow/../../libs/integration-constants/src/partnerDetails/AirtableDetails.ts","webpack://@jotforminc/workflow/../../libs/integration-constants/src/partnerDetails/QuickbooksDetails.ts","webpack://@jotforminc/workflow/../../libs/integration-constants/src/partnerDetails/MondayDetails.ts","webpack://@jotforminc/workflow/../../libs/integration-constants/src/partnerDetails/GoogleSheetsDetails.ts","webpack://@jotforminc/workflow/../../libs/integration-constants/src/partnerDetails/WebhooksV2Details.ts","webpack://@jotforminc/workflow/../../libs/integration-constants/src/partnerDetails/MicrosoftTeamsDetails.ts","webpack://@jotforminc/workflow/../../libs/integration-constants/src/partnerDetails/CampaignMonitorDetails.ts","webpack://@jotforminc/workflow/../../libs/integration-constants/src/partnerDetails/AsanaDetails.ts","webpack://@jotforminc/workflow/../../libs/integration-constants/src/partnerDetails/TrelloDetails.ts","webpack://@jotforminc/workflow/../../libs/integration-constants/src/partnerDetails/SlackDetails.ts","webpack://@jotforminc/workflow/../../libs/integration-constants/src/partnerDetails/ClickUpDetails.ts","webpack://@jotforminc/workflow/../../libs/integration-constants/src/partnerDetails/ZohoDetails.ts","webpack://@jotforminc/workflow/../../libs/integration-constants/src/partnerDetails/HubspotDetails.ts","webpack://@jotforminc/workflow/../../libs/integration-constants/src/partnerDetails/GoogleCalendarDetails.ts","webpack://@jotforminc/workflow/../../libs/integration-constants/src/partnerDetails/ZoomDetails.ts","webpack://@jotforminc/workflow/../../libs/integration-constants/src/partnerDetails/MailerliteDetails.ts","webpack://@jotforminc/workflow/../../libs/integration-constants/src/partnerDetails/ConstantContactDetails.ts","webpack://@jotforminc/workflow/../../libs/integration-constants/src/partnerDetails/GetResponseDetails.ts","webpack://@jotforminc/workflow/../../libs/integration-constants/src/partnerDetails/MailchimpDetails.ts","webpack://@jotforminc/workflow/../../libs/integration-constants/src/partnerDetails/ActiveCampaignDetails.ts","webpack://@jotforminc/workflow/../../libs/integration-constants/src/partnerDetails/AWeberDetails.ts","webpack://@jotforminc/workflow/../../libs/integration-constants/src/partnerDetails/KeapDetails.ts","webpack://@jotforminc/workflow/../../libs/integration-constants/src/partnerDetails/ZendeskDetails.ts","webpack://@jotforminc/workflow/../../libs/integration-constants/src/partnerDetails/PipedriveDetails.ts","webpack://@jotforminc/workflow/../../libs/integration-constants/src/partnerDetails/SendgridDetails.ts","webpack://@jotforminc/workflow/../../libs/integration-constants/src/partnerDetails/MailsoftlyDetails.ts","webpack://@jotforminc/workflow/../../libs/integration-constants/src/partnerDetails/NotionDetails.ts","webpack://@jotforminc/workflow/../../libs/integration-constants/src/partnerDetails/V1Details.ts","webpack://@jotforminc/workflow/../../libs/integration-constants/src/partnerDetails/index.ts","webpack://@jotforminc/workflow/../../libs/integration-constants/src/utils/index.tsx","webpack://@jotforminc/workflow/../../libs/integrations/src/actions/actionTypes.ts","webpack://@jotforminc/workflow/../../libs/integrations/src/actions/index.ts","webpack://@jotforminc/workflow/../../libs/integrations/src/context/initialState.ts","webpack://@jotforminc/workflow/../../libs/integrations/src/context/reducers/index.ts","webpack://@jotforminc/workflow/../../libs/integrations/src/context/index.tsx","webpack://@jotforminc/workflow/../../libs/integrations/src/types/enums.ts","webpack://@jotforminc/workflow/../../libs/integrations/src/utils/IntegrationHelper.ts","webpack://@jotforminc/workflow/../../libs/magnet/src/components/Badge/badge.cva.ts","webpack://@jotforminc/workflow/../../libs/magnet/src/components/Badge/Badge.tsx","webpack://@jotforminc/workflow/../../libs/magnet/src/components/Badge/badge.types.ts","webpack://@jotforminc/workflow/../../libs/magnet/src/components/Button/button.cva.ts","webpack://@jotforminc/workflow/../../libs/magnet/src/components/Button/button.types.ts","webpack://@jotforminc/workflow/../../libs/magnet/src/components/Button/ButtonContent.tsx","webpack://@jotforminc/workflow/../../libs/magnet/src/components/Loader/loader.cva.ts","webpack://@jotforminc/workflow/../../libs/magnet/src/components/Loader/loader.types.ts","webpack://@jotforminc/workflow/../../libs/magnet/src/components/Loader/Loader.tsx","webpack://@jotforminc/workflow/../../libs/magnet/src/components/Button/Button.tsx","webpack://@jotforminc/workflow/../../libs/magnet/src/components/Checkbox/checkbox.cva.ts","webpack://@jotforminc/workflow/../../libs/magnet/src/components/Checkbox/checkbox.types.ts","webpack://@jotforminc/workflow/../../libs/magnet/src/components/Checkbox/Checkbox.tsx","webpack://@jotforminc/workflow/../../libs/magnet/src/components/Dialog/Dialog.tsx","webpack://@jotforminc/workflow/../../libs/magnet/src/components/Dialog/DialogCloseButton.tsx","webpack://@jotforminc/workflow/../../libs/magnet/src/components/Dialog/dialog.cva.ts","webpack://@jotforminc/workflow/../../libs/magnet/src/components/Dialog/dialog.types.ts","webpack://@jotforminc/workflow/../../libs/magnet/src/components/FormControl/form-control.cva.ts","webpack://@jotforminc/workflow/../../libs/magnet/src/components/FormControl/FormControl.tsx","webpack://@jotforminc/workflow/../../libs/magnet/src/components/Indicator/indicator.cva.ts","webpack://@jotforminc/workflow/../../libs/magnet/src/components/Indicator/Indicator.tsx","webpack://@jotforminc/workflow/../../libs/magnet/src/components/Indicator/indicator.types.ts","webpack://@jotforminc/workflow/../../libs/magnet/src/components/Input/input.types.ts","webpack://@jotforminc/workflow/../../libs/magnet/src/components/ColorPicker/color-picker.types.ts","webpack://@jotforminc/workflow/../../libs/magnet/src/components/Input/input.cva.ts","webpack://@jotforminc/workflow/../../libs/magnet/src/components/Input/BaseInput.tsx","webpack://@jotforminc/workflow/../../libs/magnet/src/components/Input/InputText.tsx","webpack://@jotforminc/workflow/../../libs/magnet/src/components/Link/link.cva.ts","webpack://@jotforminc/workflow/../../libs/magnet/src/components/Link/Link.tsx","webpack://@jotforminc/workflow/../../libs/magnet/src/components/Link/link.types.ts","webpack://@jotforminc/workflow/../../libs/magnet/src/components/Modal/Modal.tsx","webpack://@jotforminc/workflow/../../libs/magnet/src/components/Modal/ModalBody.tsx","webpack://@jotforminc/workflow/../../libs/magnet/src/components/Modal/ModalHeader.tsx","webpack://@jotforminc/workflow/../../libs/magnet/src/components/Modal/modal.cva.ts","webpack://@jotforminc/workflow/../../libs/magnet/src/components/Modal/modal.types.ts","webpack://@jotforminc/workflow/../../libs/magnet/src/components/Radio/radio.cva.ts","webpack://@jotforminc/workflow/../../libs/magnet/src/components/Radio/radio.types.ts","webpack://@jotforminc/workflow/../../libs/magnet/src/components/Radio/Radio.tsx","webpack://@jotforminc/workflow/../../libs/magnet/src/constants/common.cva.ts","webpack://@jotforminc/workflow/../../libs/magnet/src/constants/common.values.ts","webpack://@jotforminc/workflow/../../libs/magnet/src/contexts/index.tsx","webpack://@jotforminc/workflow/../../libs/magnet/src/shared/ChoiceLabel/choice-label.cva.ts","webpack://@jotforminc/workflow/../../libs/magnet/src/shared/ChoiceLabel/ChoiceLabel.tsx","webpack://@jotforminc/workflow/../../libs/magnet/src/shared/ChoiceLabel/choice-label.types.ts","webpack://@jotforminc/workflow/../../libs/magnet/src/tokens/colors/primary.ts","webpack://@jotforminc/workflow/../../libs/magnet/src/tokens/colors/secondary.ts","webpack://@jotforminc/workflow/../../libs/magnet/src/utils/index.ts","webpack://@jotforminc/workflow/../../libs/request-layer/src/request-cache/constants.ts","webpack://@jotforminc/workflow/../../libs/request-layer/src/request-cache/utils.ts","webpack://@jotforminc/workflow/../../libs/request-layer/src/request-cache/index.ts","webpack://@jotforminc/workflow/../../libs/request-layer/src/utils/argumentParser.ts","webpack://@jotforminc/workflow/../../libs/request-layer/src/utils/constructInterceptorConfig.ts","webpack://@jotforminc/workflow/../../libs/request-layer/src/layer/interceptors/index.ts","webpack://@jotforminc/workflow/../../libs/request-layer/src/layer/interceptors/defaultInterceptors/index.ts","webpack://@jotforminc/workflow/../../libs/request-layer/src/layer/interceptors/defaultInterceptors/utils.ts","webpack://@jotforminc/workflow/../../libs/request-layer/src/layer/interceptors/defaultInterceptors/platform/salesforceInterceptors.ts","webpack://@jotforminc/workflow/../../libs/request-layer/src/layer/interceptors/defaultInterceptors/defaultInterceptors.ts","webpack://@jotforminc/workflow/../../libs/request-layer/src/utils/setInterceptors.ts","webpack://@jotforminc/workflow/../../libs/request-layer/src/layer/engines/utils.ts","webpack://@jotforminc/workflow/../../libs/request-layer/src/layer/engines/constants.ts","webpack://@jotforminc/workflow/../../libs/request-layer/src/layer/engines/AxiosEngine.ts","webpack://@jotforminc/workflow/../../libs/request-layer/src/layer/utils.ts","webpack://@jotforminc/workflow/../../libs/request-layer/src/layer/index.ts","webpack://@jotforminc/workflow/../../libs/request-layer/src/layer/interceptors/customInterceptors/index.ts","webpack://@jotforminc/workflow/../../libs/request-layer/src/utils/managerUtils.ts","webpack://@jotforminc/workflow/../../libs/tracking/src/utils/FullStoryManager.ts","webpack://@jotforminc/workflow/../../libs/tracking/src/constants/index.ts","webpack://@jotforminc/workflow/../../libs/tracking/src/utils/SentryManager.ts","webpack://@jotforminc/workflow/../../libs/tracking/src/index.ts","webpack://@jotforminc/workflow/../../libs/tracking/src/utils/TrackingManager.ts"],"sourcesContent":["const { window } = global;\n\nconst getSheetsDSN = () => {\n if (window?.isReport) {\n return 'https://d69c7dc71f6243c19aa8f1466c32ab5c@o61806.ingest.sentry.io/5352078';\n }\n\n if (window?.isBoards) {\n return 'https://983ae60052ddc6cf8a60dca2bfaa3b8c@o61806.ingest.sentry.io/4507571577749504';\n }\n\n // Sheets\n return 'https://23de99eacf6c4a068ba11e1a39556e6a@o61806.ingest.sentry.io/1211430';\n};\n\nconst getFSEnabledForSignFiller = () => {\n try {\n return window?.parent?.fsEnabled;\n } catch (e) {\n return false;\n }\n};\n\nmodule.exports = {\n academy: {\n sentry: {\n enable: true,\n dsn: 'https://e21856d505644c643840103d8dbd250c@o61806.ingest.sentry.io/4506626385641472'\n // name: 'academy',\n }\n },\n checkout: {\n sentry: {\n enable: true,\n dsn: 'https://ca58c76e1157458f941020590eab787c@o61806.ingest.sentry.io/4505396476641280'\n },\n fullStory: {\n enable: true\n }\n },\n 'data-dashboards': {\n sentry: {\n enable: true,\n dsn: 'https://64a93c3dc440e48a9118dc2c169351ef@o61806.ingest.us.sentry.io/4507407451160576'\n }\n },\n 'email-builder': {\n sentry: {\n enable: true,\n dsn: 'https://6625f7b197c65a4d8e49bc8e7641c8c2@o61806.ingest.us.sentry.io/4507407576465408'\n }\n },\n 'email-details': {\n sentry: {\n enable: true,\n dsn: 'https://e0a74287bf15c46b981ddad77de5d7d7@o61806.ingest.sentry.io/4505822059823104'\n },\n fullStory: {\n enable: false\n }\n },\n 'form-builder': {\n sentry: {\n enable: true,\n dsn: 'https://7b39e767f39941dd89d9361cf50382dd@o61806.ingest.sentry.io/132624',\n name: 'jotform-40'\n }\n },\n inbox: {\n sentry: {\n enable: true,\n dsn: 'https://f5fc3cd88f0744df9e3c8a263cd00db1@o61806.ingest.sentry.io/1353659'\n // name: 'inbox'\n },\n fullStory: {\n enable: window?.isFullStoryEnabled\n }\n },\n 'interview-management': {\n sentry: {\n enable: true,\n dsn: 'https://f875f9d7646f4149a6bfff821534e23b@o61806.ingest.sentry.io/4504971807162368'\n }\n },\n listings: {\n sentry: {\n enable: true,\n dsn: 'https://2c715cb8ed4745c383ff6830ca885807@o61806.ingest.sentry.io/5975209',\n name: 'listings'\n },\n fullStory: {\n enable: window?.isFullStoryEnabled\n }\n },\n myaccount: {\n sentry: {\n enable: true,\n dsn: 'https://4048665e726d45eba296f250ad4d09bb@o61806.ingest.sentry.io/6396369'\n // name: 'myaccountv4'\n },\n fullStory: {\n enable: window?.fullstoryEnabled\n }\n },\n 'page-builder': {\n sentry: {\n enable: true,\n dsn: 'https://727c1f481e28485a97e8a4ddae1bdaab@o61806.ingest.sentry.io/6179928'\n // name: 'landing-builder'\n }\n },\n 'pdf-editor': {\n sentry: {\n enable: window?.location.href.indexOf('download') < 0,\n dsn: 'https://10dcd48960b74f9e84c93bee96ee2c9e@o61806.ingest.sentry.io/1234288'\n // name: 'pdf-designer'\n },\n fullStory: {\n enable: window?.isFullStoryEnabled\n }\n },\n portal: {\n sentry: {\n enable: true,\n dsn: 'https://36d29a013f8a4bd7adfe310f5fe4d75a@o61806.ingest.sentry.io/5223511',\n name: 'app-builder'\n },\n fullStory: {\n enable: window?.fullStoryActiveForPortal\n }\n },\n 'refund-request': {\n sentry: {\n enable: true,\n dsn: 'https://c2bf244d1db8d74e25fafaf1b8f70747@o61806.ingest.sentry.io/4505786346110976'\n },\n fullStory: {\n enable: true\n }\n },\n sheets: {\n sentry: {\n enable: true,\n dsn: getSheetsDSN()\n // name: ['reports', 'spreadsheets']\n }\n },\n sign: {\n sentry: {\n enable: true,\n dsn: 'https://9b0abbc9280c47c683b8a9067f61e88e@o61806.ingest.sentry.io/5680940'\n // name: 'sign'\n },\n fullStory: {\n enable: window?.fsEnabled\n }\n },\n 'sign-filler': {\n sentry: {\n enable: true,\n dsn: 'https://1e23807c9020c755e635a09392e97b22@o61806.ingest.us.sentry.io/4507339316985856'\n },\n fullStory: {\n enable: getFSEnabledForSignFiller()\n }\n },\n 'subscription-dashboard': {\n sentry: {\n enable: true,\n dsn: 'https://75f5c88aeffd4f54964275c0fba96d59@o61806.ingest.sentry.io/6190171'\n // name: 'subscription-dashboard'\n }\n },\n workflow: {\n sentry: {\n enable: true,\n dsn: 'https://15571fc5437e4368b4e2ed0e32c6d93f@o61806.ingest.sentry.io/5261296'\n // name: 'workflow'\n },\n fullStory: {\n enable: !window?.isTemplateMode\n }\n },\n 'ai-agent': {\n sentry: {\n enable: true,\n dsn: 'https://9595e22b6185cd8e2ff3ea2fc28cc68f@o61806.ingest.us.sentry.io/4507502561001472',\n name: 'ai-agent'\n }\n },\n 'ai-agent-builder': {\n sentry: {\n enable: true,\n dsn: 'https://59098a0cef7524a00cbc88db5b10e2f5@o61806.ingest.us.sentry.io/4507883422875648'\n },\n fullStory: {\n enable: window?.fsEnabled\n }\n }\n};\n","import * as ActionTypes from '../store/actionTypes';\n\nexport const createWorkflow = data => {\n return { type: ActionTypes.CREATE_WORKFLOW.REQUEST, data };\n};\n\nexport const openSignupModal = () => {\n return { type: ActionTypes.OPEN_SIGNUP_MODAL };\n};\n\nexport const userLoggedIn = () => {\n return { type: ActionTypes.USER_LOGGED_IN };\n};\n\nexport const fetchWorkflow = workflowID => {\n return { type: ActionTypes.FETCH_WORKFLOW.REQUEST, data: { workflowID } };\n};\n\nexport const fetchPublishedWorkflow = publishID => {\n return { type: ActionTypes.FETCH_WORKFLOW.REQUEST, data: { publishID } };\n};\n\nexport const updateWorkflow = data => {\n return { type: ActionTypes.UPDATE_WORKFLOW.REQUEST, data };\n};\n\nexport const removeElement = elementID => {\n return { type: ActionTypes.REMOVE_ELEMENT.REQUEST, data: { elementID } };\n};\n\nexport const removeMultipleElement = data => {\n return { type: ActionTypes.REMOVE_MULTIPLE_ELEMENT.REQUEST, data };\n};\n\nexport const lockElement = () => {\n return { type: ActionTypes.LOCKED_ELEMENT.REQUEST };\n};\n\nexport const lockSingleElement = elementID => {\n return { type: ActionTypes.LOCK_SINGLE_ELEMENT.REQUEST, data: { elementID } };\n};\n\nexport const unlockAll = () => {\n return { type: ActionTypes.UNLOCK_ALL.REQUEST };\n};\n\nexport const openEmailWizardsModal = data => {\n return { type: ActionTypes.OPEN_EMAIL_WIZARDS_MODAL, data };\n};\n\nexport const confirmRemoveElement = elementID => {\n return { type: ActionTypes.CONFIRM_REMOVE_ELEMENT, data: { elementID } };\n};\n\nexport const confirmRemoveMultipleElement = selectedElementIDList => {\n return { type: ActionTypes.CONFIRM_REMOVE_MULTIPLE_ELEMENT, data: { selectedElementIDList } };\n};\n\nexport const removeOutcome = data => {\n return { type: ActionTypes.REMOVE_OUTCOME.REQUEST, data };\n};\n\nexport const clearLinkFromOutcome = data => {\n return { type: ActionTypes.CLEAR_LINK_FROM_OUTCOME.REQUEST, data };\n};\n\nexport const updateLinkOutcome = data => {\n return { type: ActionTypes.UPDATE_LINK_OUTCOME.REQUEST, data };\n};\n\nexport const updateElementOutcome = data => {\n return { type: ActionTypes.UPDATE_ELEMENT_OUTCOME.REQUEST, data };\n};\n\nexport const updateMultipleOutcome = data => {\n return { type: ActionTypes.UPDATE_MULTIPLE_OUTCOME.REQUEST, data };\n};\n\nexport const addOutcomeToElement = data => {\n return { type: ActionTypes.ADD_OUTCOME_TO_ELEMENT.REQUEST, data };\n};\n\nexport const addLink = data => {\n return { type: ActionTypes.ADD_LINK.REQUEST, data };\n};\n\nexport const selectElement = id => {\n return { type: ActionTypes.SELECTION_CHANGED, data: { id, selected: true } };\n};\n\nexport const deselectElement = id => {\n return { type: ActionTypes.SELECTION_CHANGED, data: { id, selected: false } };\n};\n\nexport const selectElementV2 = data => {\n return { type: ActionTypes.SELECTION_CHANGED_V2, data };\n};\n\nexport const deselectElementsV2 = () => {\n return { type: ActionTypes.DESELECT_ALL_ELEMENTS_V2 };\n};\n\nexport const confirmRemoveLink = data => {\n return { type: ActionTypes.CONFIRM_REMOVE_LINK, data };\n};\n\nexport const updateLink = data => {\n return { type: ActionTypes.UPDATE_LINK.REQUEST, data };\n};\n\nexport const removeLink = data => {\n return { type: ActionTypes.REMOVE_LINK.REQUEST, data };\n};\n\nexport const updateElement = data => {\n return { type: ActionTypes.UPDATE_ELEMENT.REQUEST, data };\n};\n\nexport const updateMultipleElement = data => {\n return { type: ActionTypes.UPDATE_MULTIPLE_ELEMENT.REQUEST, data };\n};\n\nexport const makeElementHighlihted = id => {\n return { type: ActionTypes.HIGHLIGHT_ELEMENT, data: id };\n};\n\nexport const addElementFromLeftPanel = data => {\n return { type: ActionTypes.ADD_ELEMENT_FROM_LEFT_PANEL.REQUEST, data };\n};\n\nexport const addCustomSenderEmail = senderEmailInfo => {\n return { type: ActionTypes.ADD_CUSTOM_SENDER, data: { senderEmailInfo } };\n};\n\nexport const setPublishMode = publishMode => {\n return { type: ActionTypes.SET_PUBLISH_MODE, data: { publishMode } };\n};\n\nexport const setDragState = isDragging => {\n return { type: ActionTypes.SET_DRAG_MODE, data: { isDragging } };\n};\n\nexport const addElementOntoLabel = data => {\n return { type: ActionTypes.ADD_ELEMENT_ONTO_LABEL.REQUEST, data };\n};\n\nexport const placeElementOntoLabel = data => {\n return { type: ActionTypes.PLACE_ELEMENT_ONTO_LABEL.REQUEST, data };\n};\n\nexport const toggleSettings = () => {\n return { type: ActionTypes.RIGHT_PANEL_TOGGLED };\n};\n\nexport const openSettingsPanel = () => {\n return { type: ActionTypes.SET_RIGHT_PANEL_VISIBILITY, data: true };\n};\n\nexport const setSettingsVisibility = data => {\n return { type: ActionTypes.SET_RIGHT_PANEL_VISIBILITY, data };\n};\n\nexport const cloneElement = elementID => {\n return { type: ActionTypes.DUPLICATE_ELEMENT.REQUEST, data: { elementID } };\n};\n\nexport const cloneMultipleElement = data => {\n return { type: ActionTypes.DUPLICATE_MULTIPLE_ELEMENT.REQUEST, data };\n};\n\nexport const convertToPlaceholder = elementID => {\n return { type: ActionTypes.CONVERT_ELEMENT_TO_PLACEHOLDER.REQUEST, data: { elementID } };\n};\n\nexport const convertPlaceholderToElement = ({ oldElementID, newElementID }) => {\n return { type: ActionTypes.CONVERT_PLACEHOLDER_TO_ELEMENT.REQUEST, data: { oldElementID, newElementID } };\n};\n\nexport const focusToError = elementID => {\n return { type: ActionTypes.FOCUS_TO_ERROR, elementID };\n};\n\nexport const fetchWarnings = workflowID => {\n return { type: ActionTypes.FETCH_WARNINGS.REQUEST, data: { workflowID } };\n};\n\nexport const cancelInstances = instanceIDs => {\n return { type: ActionTypes.CANCEL_INSTANCES.REQUEST, data: { instanceIDs } };\n};\n\nexport const restartInstances = instanceIDs => {\n return { type: ActionTypes.RESTART_INSTANCES.REQUEST, data: { instanceIDs } };\n};\n\nexport const nodeDoubleClicked = ({ elementType, data = {} }) => {\n return { type: ActionTypes.NODE_DOUBLE_CLICKED, data: { elementType, data } };\n};\n\nexport const undoAction = () => {\n return { type: ActionTypes.UNDO_ACTION };\n};\n\nexport const redoAction = () => {\n return { type: ActionTypes.REDO_ACTION };\n};\n\nexport const panModeSwitchAction = () => {\n return { type: ActionTypes.PAN_MODE_SWITCH };\n};\n\nexport const shareTemplate = data => {\n return { type: ActionTypes.SHARE_TEMPLATE.REQUEST, data };\n};\n\nexport const setResource = ({\n elementID, resourceID, resourceType = 'FORM', openBuilder = false, forPDF = false\n}) => {\n return {\n data: {\n forPDF,\n elementID,\n resourceID,\n resourceType,\n openBuilder\n },\n type: ActionTypes.SET_RESOURCE.REQUEST\n };\n};\n\nexport const calculationOfPushNodes = data => {\n return { type: ActionTypes.CALCULATION_OF_PUSH_NODES.REQUEST, data };\n};\n\nexport const togglePropertyModal = data => {\n return { type: ActionTypes.PROPERTY_MODAL_TOGGLED, data };\n};\n\nexport const setCurrentEmailTemplate = data => {\n return { type: ActionTypes.SET_CURRENT_EMAIL_TEMPLATE, data };\n};\n\nexport const saveEmailSettings = data => {\n return { type: ActionTypes.UPDATE_EMAIL_SETTINGS, data };\n};\n\nexport const updateElementAndResetPrefill = data => {\n return {\n type: ActionTypes.UPDATE_ELEMENT.REQUEST,\n data: {\n ...data,\n prefillEnabled: 'No',\n prefillNotEnabled: 'Yes',\n prefillFormID: null,\n prefillSettings: {\n mapping: [['', '']],\n fieldBehaviour: 'readonly',\n list: null\n }\n }\n };\n};\n\nexport const openReportSettingsModal = data => {\n return { type: ActionTypes.OPEN_REPORT_SETTINGS_MODAL, data };\n};\n\nexport const setForceTitleRename = data => {\n return { type: ActionTypes.SET_FORCE_TITLE_RENAME, data };\n};\n\nexport const updateSelectedPDF = data => {\n return { type: ActionTypes.UPDATE_ELEMENTS_PDF.REQUEST, data };\n};\n\nexport const showWhatsNewModal = data => {\n return { type: ActionTypes.SHOW_WHATS_NEW_MODAL, data };\n};\n\nexport const updateKeyboardShortCut = data => {\n return { type: ActionTypes.KEYBOARD_SHORTCUTS_AVAILABLE, data };\n};\n\nexport const changeWorkflow = (workflowID, history) => {\n return { type: ActionTypes.CHANGE_WORKFLOW, history, workflowID };\n};\n\nexport const setElementWithEmail = data => {\n return { type: ActionTypes.UPDATE_ELEMENT_WITH_CREATE_DEFAULT_EMAIL.REQUEST, data };\n};\n\nexport const fetchElement = elementID => {\n return { type: ActionTypes.FETCH_ELEMENT.REQUEST, data: { elementID } };\n};\n\nexport const updateResource = ({\n elementID, resourceID, resourceType = 'FORM'\n}) => {\n return {\n data: {\n elementID,\n resourceID,\n resourceType\n },\n type: ActionTypes.UPDATE_RESOURCE.REQUEST\n };\n};\n\nexport const setActiveFeature = data => {\n return { type: ActionTypes.CHANGE_FEATURES, data };\n};\n\nexport const updateElementsAndLinks = data => {\n return { type: ActionTypes.UPDATE_ELEMENTS_AND_LINKS.REQUEST, data };\n};\n\nexport const updateLinksWithoutRequest = data => {\n return { type: ActionTypes.UPDATE_LINKS_WITHOUT_REQUEST, data };\n};\n\nexport const updateHoveredNode = data => {\n return { type: ActionTypes.UPDATE_HOVERED_NODE, data };\n};\n\nexport const handleWorkflowForm = data => {\n return { type: ActionTypes.HANDLE_WORKFLOW_FORM, data };\n};\n\nexport const setLeftPanelDefaultTab = data => {\n return { type: ActionTypes.SET_LEFT_PANEL_DEFAULT_TAB, data };\n};\n\nexport const setUIInteraction = data => {\n return { type: ActionTypes.SET_UI_INTERACTION, data };\n};\n","import React, { useRef } from 'react';\nimport { string } from 'prop-types';\nimport { Hooks } from '@jotforminc/uikit';\nimport { ScWFUIKitTooltip, ScWFUIKitButton } from './scButton';\n\nconst Button = React.forwardRef(({\n name = '',\n componentTypeList, valueList, onFieldError, setErrorList, errorList, setValueList, addFormFields, // eslint-disable-line\n ...props\n}, ref) => {\n const innerRef = useRef();\n const combinedRef = Hooks.useCombinedRefs(innerRef, ref);\n\n return (\n <>\n \n {name && {name}}\n \n );\n});\n\nButton.propTypes = {\n name: string\n};\n\nexport default Button;\n","/* eslint-disable max-len */\nimport Styled from 'styled-components';\nimport { darken, lighten } from 'polished';\nimport { Button as UIKitButton, Tooltip as UIKitTooltip } from '@jotforminc/uikit';\n\nconst grayish = '#ebeef3';\nconst darkish = '#23283a';\n\nexport const ScWFUIKitButton = Styled(UIKitButton)`\n outline: none;\n\n &.bare {\n font-size: .875em;\n color: #4573e3;\n text-decoration: none;\n background: transparent;\n cursor: pointer;\n box-shadow: none;\n padding: 0;\n border: 0;\n }\n\n &.taste {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: .5em .75em;\n border-radius: 4px;\n cursor: pointer;\n text-transform: uppercase;\n border: 0;\n font-size: 1em;\n line-height: 1.5;\n font-weight: 500;\n user-select: none;\n transition: background-color .15s ease;\n }\n\n &.smaller {\n text-transform: unset;\n font-size: .875em;\n font-weight: 400;\n }\n\n &.gray {\n background-color: ${grayish};\n color: #8583a9;\n\n svg { fill: #8583a9; }\n &:hover { background-color: ${darken(0.05, grayish)}; }\n }\n\n &.dark {\n background-color: ${darkish};\n color: #9e9fb7;\n color: #fff;\n\n &:hover { background-color: ${lighten(0.1, darkish)}; }\n }\n\n svg + [data-type=\"btn-label\"] { margin-left: 10px; }\n &[disabled] { opacity: .6; cursor: initial; }\n`;\n\nexport const ScWFUIKitTooltip = Styled(UIKitTooltip)`\n font-size: .75rem;\n line-height: 1;\n padding: .5rem;\n text-transform: lowercase;\n border-radius: 2px;\n color: #fff;\n font-weight: 400;\n background-color: #2c3345;\n\n &:first-letter { text-transform: uppercase; }\n\n &:before {\n content: \"\";\n display: block;\n position: absolute;\n width: 10px; height: 10px;\n background-color: #2c3345;\n border-radius: 1px;\n transform: rotate(45deg);\n }\n`;\n","import React from 'react';\nimport { t } from '@jotforminc/translation';\nimport { IconPencilFilled } from '@jotforminc/svg-icons';\n\nconst ColoredBarEditIcon = () => {\n return (\n
\n
\n \n
\n
\n {t('Edit')}\n
\n
\n );\n};\n\nexport default ColoredBarEditIcon;\n","import React, { useMemo } from 'react';\nimport { arrayOf, shape } from 'prop-types';\nimport { Tooltip } from '@jotforminc/tooltip';\nimport { t } from '@jotforminc/translation';\nimport { OutcomeTooltipTexts } from '../../constants/OutcomeTooltip';\n\nconst ColoredBarInfoTooltip = ({ outcomes }) => {\n const renderOutcomesInfo = useMemo(() => {\n return (\n outcomes?.map(({\n text, type, buttonColor, textColor\n }) => (\n
\n
\n {text}\n
\n
\n {t(OutcomeTooltipTexts?.[type])}\n
\n
\n ))\n );\n }, [outcomes]);\n\n const renderInfoText = () => {\n return (\n
\n
\n {t('These outcomes are automatically added by Jotform Sign, you can not edit.')}\n
\n {outcomes && outcomes?.length > 0 ? renderOutcomesInfo : null}\n
\n );\n };\n\n return (\n \n {renderInfoText()}\n \n );\n};\n\nColoredBarInfoTooltip.propTypes = {\n outcomes: arrayOf(shape({})).isRequired\n};\n\nexport default ColoredBarInfoTooltip;\n","import React from 'react';\nimport { arrayOf, shape } from 'prop-types';\nimport { IconInfoCircleFilled } from '@jotforminc/svg-icons';\nimport ColoredBarInfoTooltip from '../ColoredBarTooltip/ColoredBarInfoTooltip';\n\nconst ColoredBarInfoIcon = ({ outcomes }) => {\n return (\n
\n
\n
\n \n
\n
\n Info\n
\n
\n \n
\n );\n};\n\nColoredBarInfoIcon.propTypes = {\n outcomes: arrayOf(shape({})).isRequired\n};\n\nexport default ColoredBarInfoIcon;\n","import BaseNodeModel from '../BaseNode/model';\nimport { elementTypes } from '../../../constants/elementTypes';\n\nclass ApprovalModel extends BaseNodeModel {\n constructor(props = {}) {\n super({\n name: 'Approval',\n ...props,\n type: elementTypes.APPROVAL\n });\n }\n}\n\nexport default ApprovalModel;\n","import BaseNodeModel from '../BaseNode/model';\nimport { elementTypes } from '../../../constants/elementTypes';\n\nclass AssignFormModel extends BaseNodeModel {\n constructor(props = {}) {\n super({\n name: 'Form',\n ...props,\n type: elementTypes.ASSIGN_FORM\n });\n }\n}\n\nexport default AssignFormModel;\n","import BaseNodeModel from '../BaseNode/model';\nimport { elementTypes } from '../../../constants/elementTypes';\n\nclass AssignTaskModel extends BaseNodeModel {\n constructor(props = {}) {\n super({\n name: 'Form',\n ...props,\n type: elementTypes.ASSIGN_TASK\n });\n }\n}\n\nexport default AssignTaskModel;\n","export const MERGE_MOBILE_PORT_NAMES = ['LEFT_MIDDLE', 'DYNAMIC_TOP_0', 'DYNAMIC_BOTTOM_0'];\nexport const DEFAULT_MOBILE_PORT_NAME = ['DYNAMIC_TOP_0', 'DYNAMIC_TOP_2', 'DYNAMIC_BOTTOM_0', 'DYNAMIC_BOTTOM_2', 'LEFT_MIDDLE'];\n","import { DefaultNodeModel } from '@projectstorm/react-diagrams';\n\nimport PortModel from '../Port/model';\n\nimport { getPropListToSyncByType } from '../../../utils';\nimport findClosestPoint from '../../../utils/math/findClosestPoint';\nimport { getNextOutcomeID } from '../../../utils/diagram/generateNewOutcome';\nimport calculatePortPositions from '../../../utils/diagram/calculatePortPositions';\nimport filterLinkFromOutcomes from '../../../utils/diagram/filterLinkFromOutcomes';\nimport { getElementDimensionsByType } from '../../../utils/diagram/getElementDimensions';\nimport generateRectangle, { generateRectanglePoints } from '../../../utils/diagram/generateRectangle';\n\nimport { NUMBER_OF_PORTS } from '../../../styles/variables';\nimport { OutcomeTypes } from '../../../constants/OutcomeTypes';\nimport { elementTypes } from '../../../constants/elementTypes';\nimport { undefinedOutcome } from '../../../constants/undefinedOutcome';\nimport { MERGE_MOBILE_PORT_NAMES, DEFAULT_MOBILE_PORT_NAME } from '../../../constants/mobilePortNames';\nimport { DEFAULT_FEATURES, NODE_ORDERING, ACCESS_LOGIC } from '../../../constants/features';\n\nclass BaseNodeModel extends DefaultNodeModel {\n constructor({\n type,\n maxOutLinkCount = -1,\n isInPortAvailable = true,\n isOutPortAvailable = true,\n numberOfPorts = NUMBER_OF_PORTS,\n subType,\n ...props\n } = {}) {\n const { width, height } = getElementDimensionsByType({ type, subType });\n super({\n type,\n width,\n height,\n isNew: false,\n numberOfPorts,\n maxOutLinkCount,\n hasToolBox: true,\n subType: subType,\n ...props\n });\n\n this.sagaChannel = null;\n const basePositions = calculatePortPositions({ numberOfPorts, width, height });\n const mobilePorts = [elementTypes.MERGE, elementTypes.SPLIT].indexOf(type) > -1 ? MERGE_MOBILE_PORT_NAMES : DEFAULT_MOBILE_PORT_NAME;\n if (isInPortAvailable) {\n Object.entries(basePositions).forEach(([name, basePosition]) => this.addPort({\n isIn: true,\n basePosition,\n label: `${name}_In`,\n isMobile: mobilePorts.indexOf(name) > -1\n }));\n }\n\n if (isOutPortAvailable) {\n Object.entries(basePositions).forEach(([name, basePosition]) => this.addPort({\n basePosition,\n label: `${name}_Out`,\n isMobile: mobilePorts.indexOf(name) > -1\n }));\n }\n }\n\n setDimensions({ width, height }) {\n this.options.width = width || this.options.width;\n this.options.height = height || this.options.height;\n }\n\n updatePortPositions() {\n const { width, height } = this.getDimensions();\n const { numberOfPorts } = this.options;\n const basePositions = calculatePortPositions({ numberOfPorts, width, height });\n Object.keys(this.ports).forEach(portName => {\n const port = this.ports[portName];\n const name = port.getGenericName();\n port.options.basePosition = basePositions[name];\n // const portLinks = port.getLinks();\n // Object.keys(portLinks).forEach(linkName => {\n // portLinks[linkName].updatePathDrawn();\n // });\n });\n }\n\n getDimensions() {\n const { width, height } = this.options;\n return { width, height };\n }\n\n getCenter() {\n const { x = 0, y = 0 } = this.getPosition();\n const { width, height } = this.getDimensions();\n\n return {\n x: x + (width / 2),\n y: y + (height / 2)\n };\n }\n\n getPoints() {\n const point = this.getPosition();\n const { width, height } = this.getDimensions();\n return generateRectanglePoints({ point, width, height });\n }\n\n getLines() {\n const point = this.getPosition();\n const { width, height } = this.getDimensions();\n return generateRectangle({ point, width, height });\n }\n\n setPosition({ x, y }) {\n super.setPosition(x, y);\n\n const inPorts = this.getInPorts();\n if (inPorts.length > 0) {\n inPorts.forEach(port => {\n const { top: baseTop, left: baseLeft } = port.getBasePosition();\n port.setPosition({ x: x + baseLeft, y: y + baseTop });\n });\n }\n\n const outPorts = this.getOutPorts();\n if (outPorts.length > 0) {\n outPorts.forEach(port => {\n const { top: baseTop, left: baseLeft } = port.getBasePosition();\n port.setPosition({ x: x + baseLeft, y: y + baseTop });\n });\n }\n }\n\n getCenterPort(portType, alignment) {\n const centerPosition = this.getCenter();\n const { [alignment]: ports } = this.getPortsByAlignment(portType);\n const portPositions = ports.map(port => port.getPosition());\n const { index: closestPortIndex } = findClosestPoint(portPositions, centerPosition);\n return ports[closestPortIndex];\n }\n\n getPortsByAlignment(portType = 'in') {\n const ports = this.getPortsByType(portType);\n return Object.values(ports).reduce((prev, port) => {\n const alignment = port.getAlignment();\n return {\n ...prev,\n [alignment]: [...(prev[alignment] || []), port]\n };\n }, {});\n }\n\n addPort({\n label,\n isIn = false,\n basePosition,\n isMobile = false\n }) {\n if (!label || !basePosition) {\n return false;\n }\n\n const port = new PortModel({\n label,\n in: isIn,\n isMobile,\n name: label,\n basePosition,\n isVisible: false\n });\n\n return super.addPort(port);\n }\n\n makeClosestPortVisible(point, portType = 'out') {\n const port = this.getClosestPort(point, portType);\n if (!port) {\n return;\n }\n\n this.fireEvent({ port }, 'portVisibilityChanged');\n }\n\n makePortsVisibleForMobile(portType = 'out') {\n const portList = this.getPortsByType(portType);\n const mobilePortList = portList.filter(port => port.isMobile());\n this.fireEvent({ portList: mobilePortList }, 'multiplePortVisibilityChanged');\n }\n\n hideAllPorts() {\n this.fireEvent({ portList: [] }, 'multiplePortVisibilityChanged');\n }\n\n getClosestPort(point, portType = 'out') {\n const portList = this.getPortsByType(portType);\n if (portList.length === 0) {\n return false;\n }\n\n const portPositionList = portList.map(port => port.getPosition());\n const { index: closestPortIndex } = findClosestPoint(portPositionList, point);\n if (closestPortIndex === -1) {\n return portList[0];\n }\n\n return portList[closestPortIndex];\n }\n\n isLinkedToNode(node) {\n const outLinks = this.getLinksByPortType('out');\n return Boolean(outLinks.find(({ targetPort }) => targetPort && targetPort.parent === node));\n }\n\n getLinksByPortType(portType = 'out') {\n const portList = this.getPortsByType(portType);\n return portList.reduce((prev, curr) => [...prev, ...Object.values(curr.links)], []);\n }\n\n getPortsByType(portType = 'out') {\n return portType === 'out' ? this.getOutPorts() : this.getInPorts();\n }\n\n getLinks() {\n const allPorts = Object.values(this.getPorts());\n return allPorts.reduce((prev, curr) => [...prev, ...Object.values(curr.links)], []);\n }\n\n serialize() {\n const propList = getPropListToSyncByType(this.options.type).reduce((prev, propKey) => ({\n ...prev,\n [propKey]: this.options[propKey]\n }), {});\n\n const position = this.getPosition();\n const {\n ghosted, highlight, textHighlight, showToolBox\n } = this.getOptions();\n\n return {\n ...super.serialize(),\n ...propList,\n showToolBox,\n ghosted,\n position,\n highlight,\n textHighlight\n };\n }\n\n deserialize(event) {\n super.deserialize(event);\n const propList = getPropListToSyncByType(this.options.type);\n propList.forEach(propKey => {\n this.options[propKey] = event.data[propKey];\n });\n }\n\n isAnOutcome() {\n return this.getLinksByPortType('in').some(l => l.getOwnerElement().getType() === elementTypes.APPROVAL);\n }\n\n getAllParentElementIDs() {\n if (DEFAULT_FEATURES[NODE_ORDERING]) {\n return this.options.predecessors || [];\n }\n return this.getAllParentElements().map(elm => elm.getID());\n }\n\n getOneLevelParentElements() {\n if (DEFAULT_FEATURES[ACCESS_LOGIC]) {\n const incomingLinks = this.getLinksByPortType('in');\n return incomingLinks.reduce((prev, eachLink) => {\n const parentElement = eachLink.getOwnerElement();\n if (!parentElement) return prev;\n return Array.from(new Set([parentElement, ...prev]));\n }, []);\n }\n return [];\n }\n\n getAllParentElements() {\n const incomingLinks = this.getLinksByPortType('in');\n return incomingLinks.reduce((prev, eachLink) => {\n const parentElement = eachLink.getOwnerElement();\n if (!parentElement) return prev;\n\n const grandfathers = parentElement.getAllParentElements();\n\n // Multiple parents are ok e.g. [1->2, 2->3, 1->3]\n return Array.from(new Set([...prev, ...grandfathers, parentElement]));\n }, []);\n }\n\n getOneLevelChild() {\n if (DEFAULT_FEATURES[ACCESS_LOGIC]) {\n return this.options.children;\n }\n }\n\n getAllChildElements(currentNode) {\n if (DEFAULT_FEATURES[ACCESS_LOGIC]) {\n let outcomingLinks = this.getLinksByPortType('out');\n if (currentNode) {\n outcomingLinks = currentNode.getLinksByPortType('out');\n }\n if (outcomingLinks) {\n return outcomingLinks.reduce((prev, eachLink) => {\n const childElement = eachLink?.getTargetElement();\n if (!childElement) return prev;\n return Array.from(new Set([...prev, childElement]));\n }, []);\n }\n }\n return [];\n }\n\n getNextSibling(currentNode) {\n if (DEFAULT_FEATURES[ACCESS_LOGIC]) {\n const incomingLinks = this.getLinksByPortType('in');\n for (let i = 0; i < incomingLinks.length; i++) {\n const parentElement = incomingLinks[i].getOwnerElement();\n const myParentsChildren = this.getAllChildElements(parentElement);\n const currentIndex = myParentsChildren.findIndex(x => x === currentNode);\n if (currentIndex !== -1 && currentIndex + 1 < myParentsChildren.length) {\n return myParentsChildren[currentIndex + 1];\n }\n }\n }\n return [];\n }\n\n getPrevSibling(currentNode) {\n if (DEFAULT_FEATURES[ACCESS_LOGIC]) {\n const incomingLinks = this.getLinksByPortType('in');\n for (let i = 0; i < incomingLinks.length; i++) {\n const parentElement = incomingLinks[i].getOwnerElement();\n const myParentsChildren = this.getAllChildElements(parentElement);\n const currentIndex = myParentsChildren.findIndex(x => x === currentNode);\n if (currentIndex !== -1 && currentIndex - 1 >= 0) {\n return myParentsChildren[currentIndex - 1];\n }\n }\n }\n return [];\n }\n\n isConnectedToStartPoint() {\n if (DEFAULT_FEATURES[NODE_ORDERING]) {\n return this.options.type === elementTypes.START_POINT || this.getAllParentElementIDs().some(id => id === 1);\n }\n return this.options.type === elementTypes.START_POINT || this.getAllParentElements().some(elm => elm.getType() === elementTypes.START_POINT);\n }\n\n /**\n * This method resets outgoing links' labels, it doesn't touch to the incoming labels\n */\n bindLinks({ incomingLinks = [], outgoingLinks = [], resetLabels = false }) {\n for (let i = 0; i < outgoingLinks.length; i++) {\n const link = outgoingLinks[i];\n if (resetLabels) link.setLabels();\n const sourcePortName = link.getSourcePort().getName();\n link.setSourcePort(this.getPort(sourcePortName));\n link.updatePoints();\n }\n for (let i = 0; i < incomingLinks.length; i++) {\n const link = incomingLinks[i];\n const targetPortName = link.getTargetPort().getName();\n link.setTargetPort(this.getPort(targetPortName));\n link.updatePoints();\n }\n return { outgoingLinks, incomingLinks };\n }\n\n isMaxLinkCountReached() {\n const { maxOutLinkCount } = this.getOptions();\n if (maxOutLinkCount === -1) {\n return false;\n }\n\n const links = this.getLinksByPortType('out');\n return links.length > maxOutLinkCount;\n }\n\n canShowOutcomesInDropdown = () => {\n const type = this.getType();\n return [\n elementTypes.APPROVAL,\n elementTypes.ASSIGN,\n elementTypes.ASSIGN_TASK,\n elementTypes.CONDITIONAL_BRANCH,\n elementTypes.BINARY_DECISION,\n elementTypes.SIGN_DOCUMENT\n ].indexOf(type) > -1;\n };\n\n getOutcomes() {\n const { outcomes } = this.getOptions();\n return outcomes || [];\n }\n\n setOutcomes(outcomes) {\n this.options.outcomes = outcomes;\n }\n\n removeOutcomeByLinkID(linkID) {\n const outcomes = this.getOutcomes();\n const filteredOutcomes = filterLinkFromOutcomes({ outcomes, linkID });\n this.setOutcomes(filteredOutcomes);\n return filteredOutcomes;\n }\n\n getLastOutcomeNode() {\n const outcomes = this.getOutcomes();\n if (outcomes.length === 0) return;\n\n const { linkID = -1 } = outcomes.slice().reverse().find(tmpOutcome => tmpOutcome.linkID) || {};\n if (linkID === -1) return;\n const link = this.getLinks().find(tmpLink => tmpLink.getID() === linkID);\n return link.getTargetElement();\n }\n\n generateNewOutcome(params) {\n const currentOutcomes = this.getOutcomes();\n const id = getNextOutcomeID(currentOutcomes);\n return ({\n id,\n outcomeID: id,\n type: OutcomeTypes.CUSTOM,\n ...undefinedOutcome,\n ...params\n });\n }\n\n addOutcome(outcome) {\n this.getOutcomes().push(outcome);\n }\n\n isGhosted() {\n return this.options.ghosted;\n }\n\n setGhosted(isGhosted) {\n this.options.ghosted = isGhosted;\n }\n\n setHighlight(isHiglighted) {\n this.options.highlight = isHiglighted;\n }\n\n setTextHighlight(isTextHighlighted) {\n this.options.textHighlight = isTextHighlighted;\n }\n\n isTextHighlighted() {\n return this.options.textHighlight;\n }\n\n shouldRemoveLinks() {\n const isPlaceholder = this.getType() === elementTypes.PLACEHOLDER;\n const isConnectedToStartPoint = this.isConnectedToStartPoint();\n return isPlaceholder || !isConnectedToStartPoint;\n }\n\n setSagaChannel(channel) {\n this.sagaChannel = channel;\n }\n\n setNew(isNew) {\n this.options.isNew = isNew;\n }\n\n getSagaChannel() {\n return this.sagaChannel;\n }\n\n remove() {\n const sagaChannel = this.getSagaChannel();\n if (sagaChannel) {\n sagaChannel.close();\n this.setSagaChannel(null);\n }\n\n this.setSelected(false);\n this.fireEvent({}, 'entityRemoved');\n }\n\n setSelected(selectionState) {\n super.setSelected(selectionState);\n\n if (selectionState) {\n this.showToolBox();\n } else {\n this.hideToolBox();\n }\n }\n\n showToolBox() {\n this.options.showToolBox = true;\n }\n\n hideToolBox() {\n this.options.showToolBox = false;\n }\n}\n\nexport default BaseNodeModel;\n","import React, { useEffect, useState } from 'react';\nimport { shape, func } from 'prop-types';\nimport { PortWidget as DefaultPortWidget } from '@projectstorm/react-diagrams-core';\n\nimport PlaceholderModel from '../Placeholder/model';\n\nconst PortWidget = ({ port, engine }) => {\n const links = port.getLinks();\n const isInPort = port.isInPort();\n const { basePosition } = port.getOptions();\n const [isVisible, setVisibility] = useState(false);\n const [isLinkSelected, setLinkSelected] = useState(false);\n const isHiddenInView = isVisible || (isLinkSelected && isInPort) ? null : 'hidden';\n const className = isInPort ? 'js-inPort' : 'js-outPort';\n\n useEffect(() => {\n const listener = port.parent.registerListener({\n eventDidFire: firedEvent => {\n const { function: eventType, port: updatedPort, portList: updatedPortList } = firedEvent;\n switch (eventType) {\n case 'multiplePortVisibilityChanged': {\n const isPortExists = updatedPortList.indexOf(port) > -1;\n port.setVisibility(isPortExists);\n setVisibility(isPortExists);\n break;\n }\n case 'portVisibilityChanged': {\n const updatedVisibility = updatedPort === port;\n port.setVisibility(updatedVisibility);\n setVisibility(updatedVisibility);\n break;\n }\n case 'existingTargetPortChanged': {\n if (updatedPort?.getID() === port.getID()) {\n setLinkSelected(true);\n }\n break;\n }\n default:\n break;\n }\n }\n });\n\n return () => port.parent.deregisterListener(listener);\n }, []);\n\n useEffect(() => {\n const listenerLinkCouples = Object.values(links).map(link => {\n const listener = link.registerListener({\n eventDidFire: firedEvent => {\n const { function: eventType } = firedEvent;\n switch (eventType) {\n case 'selectionChanged': {\n const isSelected = link.isSelected();\n const isPlaceholderPort = port.getParent() instanceof PlaceholderModel;\n setLinkSelected(isSelected && !isPlaceholderPort);\n break;\n }\n case 'targetPortChanged': {\n setLinkSelected(false);\n break;\n }\n default:\n break;\n }\n }\n });\n\n return [listener, link];\n });\n\n return () => listenerLinkCouples.forEach(([listener, link]) => link.deregisterListener(listener));\n }, [Object.values(links).length]);\n\n const classNames = ['wfItem-port', isLinkSelected ? 'isSelected' : 'isEntry', !isHiddenInView ? 'isVisible' : null, className].filter(Boolean).join(' ');\n\n return (\n \n );\n};\n\nPortWidget.propTypes = {\n port: shape({\n getOptions: func\n }).isRequired,\n engine: shape({}).isRequired\n};\n\nexport default PortWidget;\n","import React from 'react';\n\nimport PortWidget from '../Diagrams/Port/widget';\n\nconst PortList = ({ engine, portList }) => portList.map(port => );\n\nexport default PortList;\n","import React from 'react';\nimport { bool, string, node } from 'prop-types';\n\nconst WidgetRoot = ({\n className = '',\n $hasError = false,\n $hasWarning = false,\n $isDragHovered = false,\n $isGhosted = false,\n $isSelected = false,\n $isTemporary = false,\n $isHovered = false,\n type = null,\n subType = null,\n children = null,\n ...props\n}) => {\n const classNames = [\n 'wfItem-root',\n $hasError && 'hasError',\n $hasWarning && 'hasWarning',\n $isDragHovered && 'isDragHovered',\n $isGhosted && 'isGhosted',\n $isSelected && 'isSelected',\n $isTemporary && 'isTemporary',\n $isHovered && 'isHovered',\n className\n ].filter(Boolean).join(' ');\n\n return (\n \n {/* */}\n {children}\n \n );\n};\n\nWidgetRoot.propTypes = {\n className: string,\n $hasError: bool,\n $hasWarning: bool,\n $isDragHovered: bool,\n $isGhosted: bool,\n $isSelected: bool,\n $isTemporary: bool,\n $isHovered: bool,\n type: string,\n subType: string,\n children: node,\n elementID: string\n};\n\nexport default WidgetRoot;\n","const selectElementLabel = elementID => {\n const elementLabel = document.querySelector(`[data-nodeid='${elementID}'] .tagify__input`);\n if (!elementLabel) {\n return false;\n }\n\n if (document.body.createTextRange) {\n const range = document.body.createTextRange();\n range.moveToElementText(elementLabel);\n range.select();\n return true;\n }\n\n if (window.getSelection) {\n const selection = window.getSelection();\n const range = document.createRange();\n range.selectNodeContents(elementLabel);\n selection.removeAllRanges();\n selection.addRange(range);\n return true;\n }\n\n return false;\n};\n\nexport default selectElementLabel;\n","import React, {\n useEffect, useMemo, useRef, useState\n} from 'react';\nimport {\n bool, elementType, shape, string, arrayOf\n} from 'prop-types';\nimport { connect, useSelector } from 'react-redux';\nimport { EMAIL_TEMPLATE_TYPES } from '@jotforminc/email-wizards';\nimport { handleCustomNavigation } from '@jotforminc/utils';\nimport { t } from '@jotforminc/translation';\nimport TagInput from '@jotforminc/tag-input';\nimport { v4 as uuid } from 'uuid';\n\nimport PortList from '../../PortList';\nimport ElementToolbox from '../../ElementToolbox';\nimport { iconTypes } from '../../../constants/iconTypes';\nimport { DEFAULT_FEATURES, ACCESS_LOGIC } from '../../../constants/features';\nimport { elementTypes, elementsTypesWithRequiredHeaders } from '../../../constants/elementTypes';\nimport { nodeWidgetProps } from '../../../constants/propTypes';\nimport { STATE_NAME } from '../../../constants/diagramStateNames';\nimport WidgetRoot from '../Commons/WidgetRoot';\n\nimport WatchmanRecorder from '../../../utils/WatchmanRecorder';\nimport selectElementLabel from '../../../utils/diagram/selectElementLabel';\nimport {\n updateElement, confirmRemoveElement, openEmailWizardsModal, openSettingsPanel, cloneElement, focusToError, nodeDoubleClicked, lockSingleElement,\n togglePropertyModal, updateKeyboardShortCut, updateResource\n} from '../../../actionCreators';\nimport { sanitizeTextBeforeSet, isIntegrationElement } from '../../../utils';\n\nimport {\n getHighlightedElementID, getElementErrors, getShowErrorsOnDiagram,\n getWarnings,\n getAllRelatedFormQuestionsPrefixedForTags\n} from '../../../store/selectors';\n\nimport WorkflowFormPicker from '../../../modules/App/WorkflowFormPicker';\nimport { WF_WARNING_TYPES } from '../../../constants/warningTypes';\n\n/* eslint-disable complexity */\nexport const BaseWidgetComponent = ({\n node, engine, IconElement, children, isDragHovered, WrapperRenderer, nodeLabel,\n errors, showErrorsOnDiagram, highlightedEl, isTemporary, isHeaderEditable, renderPorts,\n onRemove, onClone, onLock, onToggleSettings, onNameChange, onEmailSettings, onFocusToError, onDoubleClick,\n onPropertyModalSettings, onUpdateKeyboardShortCut, iconContent,\n warnings, onFocusToWarning\n}) => {\n const {\n id, type, showToolBox, selected, locked, ghosted, resourceID, textHighlight, subType, isOrphan, name\n } = node.getOptions();\n const [componentKey, setComponentKey] = useState(uuid());\n const currentType = t(`Current element is ${name}`);\n const [stateValue, setStateValue] = useState(nodeLabel);\n const nodes = engine?.model?.getNodes();\n const orphanNodesCount = DEFAULT_FEATURES[ACCESS_LOGIC] ? nodes?.filter(n => n?.options?.isOrphan).length : 0;\n const connectedNodesCount = DEFAULT_FEATURES[ACCESS_LOGIC] ? nodes?.length - orphanNodesCount - 1 : 0;\n const getQuestions = useMemo(() => getAllRelatedFormQuestionsPrefixedForTags(stateValue), [stateValue]);\n const relatedQuestions = useSelector(getQuestions);\n\n const isStartPoint = type === elementTypes.START_POINT;\n const connectedElementText = isStartPoint ? t(`You are in root. Connected element count is ${connectedNodesCount}, Orphan element count is ${orphanNodesCount}`) : currentType;\n\n const ref = useRef();\n const FormPickerRef = useRef({});\n const inPorts = node.getInPorts();\n const outPorts = node.getOutPorts();\n const highlighted = highlightedEl === id;\n const isMultipleNodeSelected = engine.model.isMultipleNodeSelected();\n const isHeaderAvailable = [elementTypes.END_POINT, elementTypes.MERGE, elementTypes.SPLIT].indexOf(type) === -1;\n const isHeaderRequired = elementsTypesWithRequiredHeaders.includes(type);\n\n const handleDoubleClick = e => {\n if (e.target === ref.current?.contentEditableRef?.current) {\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n\n const { currentState } = engine.getStateMachine();\n if (currentState?.options?.name !== STATE_NAME) {\n return;\n }\n\n WatchmanRecorder.trackEvent('canvas-element-doubleClick', { elementID: id, type });\n onDoubleClick({ node, event: e });\n };\n\n const handleEditForm = () => {\n handleCustomNavigation(`/build/${resourceID}`);\n };\n\n const handleViewForm = () => {\n handleCustomNavigation(`/${resourceID}`);\n };\n\n const handleChangeForm = () => {\n FormPickerRef.current.setVisibility(true);\n };\n\n useEffect(() => {\n if (stateValue !== nodeLabel) {\n setStateValue(nodeLabel);\n setComponentKey(uuid());\n }\n }, [nodeLabel]);\n\n useEffect(() => {\n let interval = null;\n let remainingTry = 5;\n if (textHighlight) {\n interval = setInterval(() => {\n remainingTry--;\n const selectionResult = selectElementLabel(id);\n if (selectionResult) {\n node.setTextHighlight(false);\n }\n\n if (remainingTry === 0) {\n clearInterval(interval);\n }\n }, 100);\n } else {\n clearInterval(interval);\n }\n\n return () => clearInterval(interval);\n }, [textHighlight]);\n\n const className = [\n 'wfItem-canvas',\n selected && 'selected',\n locked && 'locked',\n global.isStandalone && 'isStandalone',\n global.isTemplateMode && 'isTemplateMode',\n isOrphan ? 'isOrphan' : null\n ].filter(val => val).join(' ');\n const hasError = errors.length > 0 && showErrorsOnDiagram !== 'No';\n const warningArr = warnings.filter(warning => +warning.elementID === +id && warning.type && WF_WARNING_TYPES[warning.type]);\n const hasWarning = warningArr.length > 0;\n\n const shouldRenderIcon = type !== elementTypes.PLACEHOLDER;\n return (\n <>\n \n {isHeaderAvailable ? (\n
\n {shouldRenderIcon ? (\n
\n \n {\n iconContent ? (\n
\n {iconContent}\n
\n ) : null\n }\n
\n ) : null}\n
\n
\n
e.stopPropagation()}>\n {\n if (e.target.value || !isHeaderRequired) {\n const sanitizedName = sanitizeTextBeforeSet(e.target.value);\n onNameChange(sanitizedName);\n WatchmanRecorder.trackEvent('canvas-elementName-change', { elementID: id, type });\n }\n }}\n onRemove={e => {\n onNameChange(e.target.value);\n }}\n />\n
\n
\n
\n {children}\n
\n
\n
\n ) : children}\n {renderPorts && (\n
\n \n \n
\n )}\n {hasError && (\n
{/* eslint-disable-line */}\n {errors.length}\n
\n {t(errors.length === 1 ? 'Error' : 'Errors')}\n
\n
\n )}\n {(!hasError && hasWarning) && (\n
{/* eslint-disable-line */}\n {warningArr.length}\n
\n {t(warningArr.length === 1 ? 'Warning' : 'Warnings')}\n
\n
\n )}\n \n \n {id === 1 && (\n \n )}\n \n );\n};\n\nBaseWidgetComponent.propTypes = {\n ...nodeWidgetProps,\n errors: arrayOf(shape({})),\n warnings: arrayOf(shape({})),\n isDragHovered: bool,\n IconElement: elementType,\n WrapperRenderer: elementType,\n nodeLabel: string.isRequired,\n isTemporary: bool,\n renderPorts: bool,\n isHeaderEditable: bool\n};\n\nBaseWidgetComponent.defaultProps = {\n errors: [],\n warnings: [],\n isDragHovered: false,\n WrapperRenderer: WidgetRoot,\n IconElement: iconTypes[elementTypes.APPROVAL],\n isTemporary: false,\n renderPorts: true,\n isHeaderEditable: true\n};\n\nconst mapStateToProps = (state, ownProps) => ({\n elementErrors: getElementErrors(ownProps.node.getID())(state),\n highlightedEl: getHighlightedElementID(state),\n showErrorsOnDiagram: getShowErrorsOnDiagram(state),\n warnings: getWarnings(state)\n});\n\nconst mapDispatchToProps = {\n onClone: cloneElement,\n onLock: lockSingleElement,\n onRemove: confirmRemoveElement,\n onNameChange: updateElement,\n onToggleSettings: openSettingsPanel,\n onEmailSettings: openEmailWizardsModal,\n onFocusToError: focusToError,\n onFocusToWarning: focusToError, // focusToWarning\n onDoubleClick: nodeDoubleClicked,\n onPropertyModalSettings: togglePropertyModal,\n onUpdateKeyboardShortCut: updateKeyboardShortCut\n};\n\nconst mergeProps = (stateProps, dispatchProps, ownProps) => {\n const { id: elementID, type } = ownProps.node.getOptions();\n\n return {\n ...ownProps,\n ...stateProps,\n ...dispatchProps,\n errors: stateProps.elementErrors,\n onClone: () => dispatchProps.onClone(elementID),\n onLock: () => dispatchProps.onLock(elementID),\n onRemove: () => dispatchProps.onRemove(elementID),\n onFocusToError: () => dispatchProps.onFocusToError(elementID),\n onFocusToWarning: () => dispatchProps.onFocusToError(elementID), // focusToWarning\n onNameChange: value => {\n const nameKey = [ownProps.labelProp || 'name'];\n const currentName = ownProps.node.getOptions()[nameKey];\n if (currentName === value) {\n return;\n }\n\n dispatchProps.onNameChange({ [ownProps.labelProp || 'name']: value, elementID });\n },\n onEmailSettings: () => dispatchProps.onEmailSettings({ elementID, emailType: EMAIL_TEMPLATE_TYPES.WORKFLOW_SEND_EMAIL_GENERAL }),\n onDoubleClick: data => dispatchProps.onDoubleClick({ elementType: type, data })\n };\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps, mergeProps)(BaseWidgetComponent);\n","import { t } from '@jotforminc/translation';\n\nimport BaseNodeModel from '../BaseNode/model';\nimport { elementTypes } from '../../../constants/elementTypes';\nimport { OutcomeTypes } from '../../../constants/OutcomeTypes';\nimport { getNextOutcomeID } from '../../../utils/diagram/generateNewOutcome';\n\nclass BinaryDecisionModel extends BaseNodeModel {\n constructor(props = {}) {\n super({\n name: t('If/Else Condition'),\n ...props,\n hasToolBox: true,\n maxOutLinkCount: 2,\n isInPortAvailable: true,\n type: elementTypes.BINARY_DECISION\n });\n }\n\n generateNewOutcome(params) {\n const currentOutcomes = this.getOutcomes();\n const id = getNextOutcomeID(currentOutcomes);\n return ({\n id,\n outcomeID: id,\n type: OutcomeTypes.CONDITION,\n conditionValue: 'CUSTOM',\n ...params\n });\n }\n}\n\nexport default BinaryDecisionModel;\n","export const parseContacts = (data, formUsers, emailFieldKey = 'value', formTitle, isTeamApproval, isIntegrationElement) => {\n return (data).map(entry => {\n if (isTeamApproval) {\n return { ...entry, avatarUrl: entry.avatar, role: entry?.role?.role_name };\n }\n const emailFieldKeyValid = entry[emailFieldKey]?.indexOf('{') === 0 || entry?.value?.indexOf('{') === 0;\n if (entry.name || (entry.isQuestion && entry.isValid && emailFieldKeyValid)) {\n const name = entry.isQuestion ? entry?.text || entry?.name : entry.name || entry[emailFieldKey]?.replace('{', '')?.replace('}', '') || entry?.value?.replace('{', '')?.replace('}', '');\n return {\n ...entry,\n name,\n isQuestion: true,\n formName: entry?.formTitle || formTitle || 'Form'\n };\n }\n const existing = formUsers.find(f => f.email === entry[emailFieldKey]);\n if (isIntegrationElement && existing) {\n // todo: should be update\n return {\n email: existing.email\n };\n }\n return existing || { email: entry[emailFieldKey] };\n });\n};\n","import { useHover } from '@jotforminc/hooks';\nimport {\n arrayOf, bool, number, shape\n} from 'prop-types';\nimport React from 'react';\nimport ContactAvatar from './ContactAvatar';\nimport ContactCardPopover from './ContactCardPopover';\n\nimport '../styles/Contact.scss';\n\nconst ContactListItem = ({ contact, showCardOnHover, usePortal }) => {\n const [hoverRef, isHovered] = useHover(700);\n return (\n
\n \n \n
\n );\n};\n\nContactListItem.propTypes = {\n contact: shape().isRequired,\n showCardOnHover: bool.isRequired,\n usePortal: bool.isRequired\n};\n\nconst ContactAvatarList = ({\n contacts = [], maxVisibleCount, showCardOnHover, usePortal\n}) => {\n const computed = React.useMemo(() => {\n const result = {\n contacts,\n moreCount: 0\n };\n if (maxVisibleCount && contacts.length > maxVisibleCount) {\n result.contacts = contacts.slice(0, maxVisibleCount);\n result.moreCount = contacts.length - maxVisibleCount;\n }\n return result;\n }, [contacts, maxVisibleCount]);\n\n const Avatars = computed.contacts.map(contact => (\n \n ));\n return (\n
\n {Avatars}\n {computed.moreCount > 0 && (\n
\n +\n {computed.moreCount}\n
\n )}\n
\n );\n};\n\nContactAvatarList.propTypes = {\n contacts: arrayOf(shape()),\n maxVisibleCount: number,\n showCardOnHover: bool,\n usePortal: bool\n};\n\nContactAvatarList.defaultProps = {\n contacts: [],\n maxVisibleCount: 0,\n showCardOnHover: true,\n usePortal: false\n};\nexport default ContactAvatarList;\n","import React, { useMemo } from 'react';\nimport {\n array, object, func, string, bool\n} from 'prop-types';\nimport { IconArrowUpRightFromSquareSm } from '@jotforminc/svg-icons';\nimport ContactCard from './ContactCard';\nimport ContactAvatarList from './ContactAvatarList';\n\nexport const InlineMultipleView = {};\n\nInlineMultipleView.MemberList = ({\n members = [], goToTeam, multipleApproval, memberText\n}) => {\n const result = useMemo(() => members.map(member => (\n \n )), [members]);\n\n return (\n
\n
\n
\n {`${members.length} ${memberText}`}\n
\n {!multipleApproval && (\n
\n {goToTeam && (\n \n )}\n
\n )}\n
\n
\n {result}\n
\n
\n );\n};\n\nInlineMultipleView.MemberList.propTypes = {\n goToTeam: func,\n multipleApproval: bool,\n members: array,\n memberText: string\n};\n\nInlineMultipleView.MemberList.defaultProps = {\n goToTeam: () => {},\n multipleApproval: false,\n members: [],\n memberText: 'Group Approvers'\n};\n\nInlineMultipleView.TeamMain = ({ team }) => {\n return (\n <>\n
\n
\n {team.icon}\n
\n
\n {team.teamName}\n
\n
\n \n );\n};\n\nInlineMultipleView.TeamMain.propTypes = {\n team: object\n};\n\nInlineMultipleView.TeamMain.defaultProps = {\n team: {}\n};\n\nInlineMultipleView.MultipleMain = ({ contacts, approverText }) => {\n return (\n <>\n
\n \n
\n {approverText && (\n
\n {approverText}\n
\n )}\n \n );\n};\n\nInlineMultipleView.MultipleMain.propTypes = {\n contacts: object,\n approverText: ''\n};\n\nInlineMultipleView.MultipleMain.defaultProps = {\n contacts: {},\n approverText: string\n};\n\nInlineMultipleView.Main = ({\n team, members, goToTeam,\n additionalClassName, multipleApproval,\n approverText, memberText\n}) => {\n return (\n <>\n {\n team && !multipleApproval\n && (\n \n )\n }\n {\n multipleApproval\n && (\n \n )\n }\n \n \n \n \n );\n};\n\nInlineMultipleView.Main.propTypes = {\n team: object,\n members: array,\n goToTeam: func,\n additionalClassName: string,\n multipleApproval: bool,\n approverText: string,\n memberText: string\n};\n\nInlineMultipleView.Main.defaultProps = {\n team: {},\n members: [],\n goToTeam: () => {},\n additionalClassName: '',\n multipleApproval: false,\n approverText: '',\n memberText: 'Group Approvers'\n};\n\nexport default InlineMultipleView.Main;\n","import React from 'react';\nimport {\n arrayOf, bool, func, shape, string\n} from 'prop-types';\nimport { Popover } from '@jotforminc/uikit';\nimport { useHover } from '@jotforminc/hooks';\nimport { ContactDefaultProps, ContactPropTypes } from '../constants';\nimport ContactAvatar from './ContactAvatar';\nimport ContactCard from './ContactCard';\n\nimport '../styles/Contact.scss';\n\nconst InlineContactView = ({\n contact, showCardOnHover, usePortal, renderElement, conditionFilter, questions, popoverOptions, additionalClassName, usePopover, getQuestionText\n}) => {\n const { name, email } = contact;\n const [hoverRef, isHovered] = useHover(700);\n return (\n
\n { renderElement || }\n
\n { !renderElement && (name || email) }\n
\n {(isHovered && showCardOnHover && usePopover) && (\n \n \n \n )}\n {\n !usePopover && (\n \n \n
\n )\n }\n \n );\n};\n\nInlineContactView.propTypes = {\n contact: shape(ContactPropTypes),\n showCardOnHover: bool,\n usePortal: bool,\n renderElement: string,\n conditionFilter: arrayOf(shape()),\n questions: arrayOf(shape()),\n popoverOptions: shape(),\n additionalClassName: string,\n usePopover: bool,\n getQuestionText: func\n};\n\nInlineContactView.defaultProps = {\n contact: ContactDefaultProps,\n showCardOnHover: true,\n usePortal: false,\n renderElement: null,\n conditionFilter: null,\n questions: [],\n additionalClassName: null,\n popoverOptions: null,\n usePopover: true,\n getQuestionText: null\n};\n\nexport default InlineContactView;\n","import { ConditionContainerMiniModule } from '@jotforminc/builder-components';\nimport { InlineContactView, ContactAvatarList, InlineMultipleView } from '@jotforminc/contact-card';\nimport {\n arrayOf, shape, string, bool, object\n} from 'prop-types';\nimport React, { useCallback, useMemo } from 'react';\nimport { useSelector } from 'react-redux';\nimport { handleCustomNavigation } from '@jotforminc/utils';\nimport { TeamImageWithWrapper } from '@jotforminc/workflow-components';\nimport { elementSubTypes, elementTypes } from '../../constants/elementTypes';\nimport { DEFAULT_FEATURES, MULTIPLE_APPROVAL } from '../../constants/features';\nimport { getZoom } from '../../store/selectors';\nimport browserHelper from '../../utils/browserHelper';\n\nconst WidgetContactRenderer = ({\n renderElement = '',\n subType = '',\n teamObject = {},\n parsedContacts = [],\n type = '',\n conditionFilter = [],\n questions = [],\n isApprovalElement = false\n}) => {\n const { ConditionUtils } = ConditionContainerMiniModule;\n const getQuestionText = useCallback((question, value) => {\n return ConditionUtils.getQuestionText(question, value);\n }, []);\n const zoom = useSelector(getZoom);\n const isMobile = useMemo(() => browserHelper.is('mobile'), []);\n const showCardOnHover = zoom >= 60 && !isMobile;\n const isConditionalBranchElement = type && (type === elementTypes.CONDITIONAL_BRANCH || type === elementTypes.BINARY_DECISION);\n const isMultipleApprovalFeatureEnable = DEFAULT_FEATURES[MULTIPLE_APPROVAL];\n\n const goToTeam = () => {\n handleCustomNavigation(`/myteams/${teamObject.teamID}`, '_blank');\n };\n\n const renderPopoverCard = () => {\n switch (true) {\n case subType === elementSubTypes.TEAM_APPROVAL:\n return (\n \n }}\n members={parsedContacts}\n additionalClassName=\"avatarList-Popover\"\n />\n );\n case subType === elementSubTypes.APPROVAL_WITH_SIGN && parsedContacts?.length > 1 && isMultipleApprovalFeatureEnable:\n case isApprovalElement && parsedContacts?.length > 1 && isMultipleApprovalFeatureEnable:\n return (\n \n );\n case isConditionalBranchElement:\n return (\n \n );\n case type === 'workflow_send_email' && parsedContacts.length > 1:\n return (\n \n );\n default:\n return (parsedContacts.length === 1\n ? (\n \n )\n : (\n <>\n \n \n )\n );\n }\n };\n\n return (\n
\n {renderPopoverCard()}\n
\n );\n};\n\nWidgetContactRenderer.propTypes = {\n renderElement: string,\n subType: string,\n teamObject: object,\n parsedContacts: arrayOf(shape()),\n type: string,\n conditionFilter: arrayOf(shape()),\n questions: arrayOf(shape()),\n isApprovalElement: bool\n};\n\nexport default WidgetContactRenderer;\n","/* eslint-disable no-nested-ternary */\nimport React, { useMemo } from 'react';\nimport { t } from '@jotforminc/translation';\nimport { Button } from '@jotforminc/magnet';\nimport { IconPlusCircleFilled } from '@jotforminc/svg-icons';\n\nimport PropTypes from 'prop-types';\nimport { useSelector, useDispatch } from 'react-redux';\n\nimport Feature from '../../Feature';\nimport {\n ERROR_UPDATE, DEFAULT_FEATURES, NEW_REPORT_ELEMENT, WORKFLOW_V2\n} from '../../../constants/features';\nimport {\n deselectElementsV2, fetchElement, openEmailWizardsModal, selectElementV2\n} from '../../../actionCreators';\n\nimport { getAllRelatedFormQuestionsPrefixed, getFormTitle, getFormUsers } from '../../../store/selectors';\nimport { RIGHT_PANEL_TOGGLED, PROPERTY_MODAL_TOGGLED } from '../../../store/actionTypes';\n\nimport { parseContacts } from '../../../utils/contactUtils';\nimport WidgetContactRenderer from '../../WidgetContactRenderer/WidgetContactRenderer';\nimport { elementTypes, elementSubTypes } from '../../../constants/elementTypes';\nimport { nodeWidgetProps } from '../../../constants/propTypes';\nimport { prepareConditionFilterValue, prepareConditionFilterValueForBinaryDecision } from '../Label/utils';\nimport { isIntegrationElement } from '../../../utils';\n\nconst WidgetContactBody = ({\n label,\n contactValueKey = 'value',\n targetSource = [],\n withLabel = false,\n emptyText = '',\n node = {},\n renderElement = ''\n}) => {\n const formUsers = useSelector(getFormUsers);\n const formTitle = useSelector(getFormTitle);\n const questions = useSelector(getAllRelatedFormQuestionsPrefixed);\n const dispatch = useDispatch();\n const isNewApprovalReport = DEFAULT_FEATURES[NEW_REPORT_ELEMENT];\n const isNewCanvas = DEFAULT_FEATURES[WORKFLOW_V2];\n\n const {\n options: {\n type,\n id,\n subType,\n team,\n teamObject,\n isTeamApproval\n }\n } = node;\n const integrationElement = isIntegrationElement(subType);\n const parsedContacts = useMemo(() => parseContacts((targetSource || []), formUsers, contactValueKey, formTitle, isTeamApproval, integrationElement), [targetSource, formUsers]);\n const isApprovalElement = type === elementTypes.APPROVAL;\n const isConditionalBranchElement = type === elementTypes.CONDITIONAL_BRANCH || type === elementTypes.BINARY_DECISION;\n\n const getConditionString = () => {\n if (!isConditionalBranchElement) {\n return null;\n }\n const { outcomes = [] } = isNewCanvas ? node?.options : node.getOptions();\n const userOutcomes = outcomes.filter(outcome => outcome?.id !== 999);\n if (!userOutcomes.length) {\n return null;\n }\n if (type === elementTypes.BINARY_DECISION) {\n const { conditionTerms = [] } = isNewCanvas ? node?.options : node.getOptions();\n return prepareConditionFilterValueForBinaryDecision(conditionTerms, questions);\n }\n return prepareConditionFilterValue(outcomes, questions);\n };\n\n const showWidgetContactRenderer = !isConditionalBranchElement ? parsedContacts && parsedContacts.length > 0 : !!getConditionString();\n\n const handleWidgetClick = () => {\n dispatch(deselectElementsV2());\n dispatch(selectElementV2([{ id: `${id}`, selected: true }]));\n dispatch(fetchElement(id));\n switch (type) {\n case elementTypes.SEND_EMAIL: {\n const emailType = 'WORKFLOW_SEND_EMAIL_GENERAL';\n if (subType === elementSubTypes.SEND_PDF || (subType === elementSubTypes.SEND_APPROVAL_REPORT && !DEFAULT_FEATURES[NEW_REPORT_ELEMENT])) {\n dispatch({ type: PROPERTY_MODAL_TOGGLED, data: true });\n break;\n }\n if (isNewApprovalReport && subType === elementSubTypes.SEND_DEFAULT_REPORT) {\n dispatch({ type: RIGHT_PANEL_TOGGLED });\n break;\n }\n dispatch(openEmailWizardsModal({\n elementID: id,\n emailType\n }));\n break;\n }\n case elementTypes.ASSIGN_FORM:\n case elementTypes.SIGN_DOCUMENT:\n case elementTypes.INTEGRATION:\n dispatch({ type: PROPERTY_MODAL_TOGGLED, data: true });\n break;\n case elementTypes.APPROVAL:\n case elementTypes.ASSIGN_TASK:\n dispatch({ type: RIGHT_PANEL_TOGGLED });\n break;\n default:\n console.log('Widget clicked.');\n break;\n }\n };\n\n return (\n <>\n {withLabel ? (\n
\n
\n
\n {label}\n :\n
\n
\n
\n ) : null }\n { showWidgetContactRenderer\n ? (\n
\n \n
\n )\n : (\n DEFAULT_FEATURES[ERROR_UPDATE] ? (\n \n \n {t(emptyText)}\n \n \n )}\n />\n ) :
{emptyText}
\n )}\n \n );\n};\n\nWidgetContactBody.propTypes = {\n label: PropTypes.string.isRequired,\n targetSource: PropTypes.arrayOf(PropTypes.shape({\n value: PropTypes.string\n })),\n contactValueKey: PropTypes.string,\n withLabel: PropTypes.bool,\n emptyText: PropTypes.string,\n node: PropTypes.shape({\n options: PropTypes.shape({\n id: PropTypes.number,\n type: PropTypes.oneOf(Object.values(elementTypes))\n })\n }),\n renderElement: PropTypes.string,\n ...nodeWidgetProps\n};\n\nexport default WidgetContactBody;\n","import React from 'react';\nimport { string } from 'prop-types';\n\nconst WidgetResource = ({\n className = '',\n type = null,\n subType = null,\n ...props\n}) => {\n const classNames = ['wfItem-resource', className].filter(Boolean).join(' ');\n return (\n \n );\n};\n\nWidgetResource.propTypes = {\n className: string,\n type: string,\n subType: string\n};\n\nexport default WidgetResource;\n","import { t } from '@jotforminc/translation';\n\nimport BaseNodeModel from '../BaseNode/model';\nimport { elementTypes } from '../../../constants/elementTypes';\nimport { OutcomeTypes } from '../../../constants/OutcomeTypes';\nimport { getNextOutcomeID } from '../../../utils/diagram/generateNewOutcome';\nimport { CONDITIONAL_TERMS_MATCH_TYPES } from '../../../constants/conditions';\n\nclass ConditionalBranchModel extends BaseNodeModel {\n constructor(props = {}) {\n super({\n name: t('Conditional Branch'),\n ...props,\n hasToolBox: true,\n maxOutLinkCount: 9,\n isInPortAvailable: true,\n type: elementTypes.CONDITIONAL_BRANCH\n });\n }\n\n generateNewOutcome(params) {\n const currentOutcomes = this.getOutcomes();\n const id = getNextOutcomeID(currentOutcomes);\n return ({\n id,\n outcomeID: id,\n type: OutcomeTypes.CONDITION,\n conditionValue: 'CUSTOM',\n conditionTerms: [{ field: 'none', id: 'term_1606998658750', operator: 'none' }],\n conditionTermsMatchType: CONDITIONAL_TERMS_MATCH_TYPES.ALL,\n ...params\n });\n }\n\n serialize() {\n return {\n ...super.serialize(),\n outcomes: super.getOutcomes()\n };\n }\n}\n\nexport default ConditionalBranchModel;\n","import { t } from '@jotforminc/translation';\nimport BaseNodeModel from '../BaseNode/model';\nimport { elementTypes } from '../../../constants/elementTypes';\n\nclass EndPointModel extends BaseNodeModel {\n constructor(props = {}) {\n const { resourceType = '', resourceName = '', ...rest } = props;\n super({\n name: t('End'),\n ...rest,\n numberOfPorts: 4,\n isOutPortAvailable: false,\n type: elementTypes.END_POINT\n });\n\n this.resourceType = resourceType;\n this.resourceName = resourceName;\n }\n}\n\nexport default EndPointModel;\n","import React from 'react';\n\nimport { t } from '@jotforminc/translation';\nimport { nodeWidgetProps } from '../../../constants/propTypes';\n\nimport BaseWidget from '../BaseNode/widget';\nimport { elementSubTypes, elementTypes } from '../../../constants/elementTypes';\nimport WidgetResource from '../Commons/WidgetResource';\n\nconst EndPointWidget = ({ node, engine, ...props }) => {\n const { options: { name, subType } } = node;\n\n return (\n \n
\n {t(subType === elementSubTypes.END_POINT_TERMINATE ? 'TERMINATE' : 'END')}\n
\n \n );\n};\n\nEndPointWidget.propTypes = {\n ...nodeWidgetProps\n};\n\nexport default EndPointWidget;\n","import BaseNodeModel from '../BaseNode/model';\nimport { elementTypes } from '../../../constants/elementTypes';\n\nclass GenericModel extends BaseNodeModel {\n constructor(props = {}) {\n super({\n name: 'Generic',\n ...props,\n type: elementTypes.SEND_EMAIL\n });\n }\n}\n\nexport default GenericModel;\n","import BaseNodeModel from '../BaseNode/model';\nimport { elementTypes } from '../../../constants/elementTypes';\n\nclass IntegrationsModel extends BaseNodeModel {\n constructor(props = {}) {\n super({\n name: 'Integrations',\n ...props,\n type: elementTypes.INTEGRATION\n });\n }\n}\n\nexport default IntegrationsModel;\n","/* eslint-disable max-statements */\nimport React, { useRef } from 'react';\nimport { t } from '@jotforminc/translation';\nimport { ConditionContainerMiniModule } from '@jotforminc/builder-components';\nimport { conditionalElementTypes, elementTypes, MISSING_CONDITON_TEXT } from '../../../constants/elementTypes';\n\nimport { ScWFUIKitTooltip } from '../../Button/scButton';\nimport { DEFAULT_FEATURES, WORKFLOW_V2 } from '../../../constants/features';\n// Somehow commonize this and use with builder/Condition.js and here\nconst defaultProps = {\n questions: [],\n products: []\n};\n\nexport const prepareConditionFilterValueForBinaryDecision = (conditionTerms, questions) => {\n let conditionsFilterObj = {};\n const { ConditionUtils } = ConditionContainerMiniModule;\n conditionTerms.forEach(condition => {\n if (!ConditionUtils) {\n return null;\n }\n const {\n operator, color, field, value, fieldColor\n } = condition;\n const term = {};\n const questionField = `q${field}`;\n const text = ConditionUtils.getComparisonOperatorByKey(operator);\n let conditionTermsString = `${questionField}:${text}`;\n if (color) {\n conditionTermsString = `${conditionTermsString}::${color}`;\n }\n if (fieldColor) {\n conditionTermsString = `${conditionTermsString}:${fieldColor}`;\n }\n if (value && ConditionUtils.isField(value)) {\n const fieldName = value.replace('{', '').replace('}', '');\n const fieldQuestion = ConditionUtils.getQuestionByName2(fieldName, questions);\n const fieldText = ConditionUtils.getQuestionText(fieldQuestion, { value: fieldName });\n term[conditionTermsString] = fieldText || value || null;\n } else {\n term[conditionTermsString] = value || null;\n }\n conditionsFilterObj = { ...conditionsFilterObj, ...term };\n });\n return conditionsFilterObj;\n};\n\nexport const prepareConditionFilterValueWithOutcome = (outcome, questions) => {\n let conditionsFilterObj = {};\n const { ConditionUtils } = ConditionContainerMiniModule;\n\n if (!outcome) {\n return null;\n }\n const { conditionTerms, branchName } = outcome;\n\n if (!conditionTerms || conditionTerms?.length < 1) {\n return;\n }\n\n if (!ConditionUtils) {\n return null;\n }\n\n conditionTerms.forEach(({\n field, operator, value, color, fieldColor\n }) => {\n const term = {};\n const questionField = `q${field}`;\n const text = ConditionUtils.getComparisonOperatorByKey(operator);\n let conditionTermsString = `${questionField}:${text}`;\n if (branchName) {\n conditionTermsString = `${conditionTermsString}:${branchName}`;\n }\n if (color) {\n conditionTermsString = `${conditionTermsString}::${color}`;\n }\n if (fieldColor) {\n conditionTermsString = `${conditionTermsString}:${fieldColor}`;\n }\n if (value && ConditionUtils.isField(value)) {\n const fieldName = value.replace('{', '').replace('}', '');\n const fieldQuestion = ConditionUtils.getQuestionByName2(fieldName, questions);\n const fieldText = ConditionUtils.getQuestionText(fieldQuestion, { value: fieldName });\n term[conditionTermsString] = fieldText || value || null;\n } else {\n term[conditionTermsString] = value || null;\n }\n const key = Object.keys(term)?.[0];\n if (key && conditionsFilterObj[key]) {\n const newKey = `${key}::new`;\n const updatedValue = { [newKey]: Object.values(term)?.[0] || null };\n conditionsFilterObj = { ...conditionsFilterObj, ...updatedValue };\n } else {\n conditionsFilterObj = { ...conditionsFilterObj, ...term };\n }\n });\n return conditionsFilterObj;\n};\n\nexport const prepareConditionFilterValue = (outcomes, questions) => {\n let conditionsFilterObj = {};\n outcomes?.forEach(outcome => {\n const newValue = prepareConditionFilterValueWithOutcome(outcome, questions);\n if (newValue) {\n const key = Object.keys(newValue)?.[0];\n // concatenate outcome id to the current key to make each branch's key unique\n const updatedKey = `${key}::${outcome.id}`;\n const updatedObject = { [updatedKey]: Object.values(newValue)?.[0] || null };\n conditionsFilterObj = { ...conditionsFilterObj, ...updatedObject };\n }\n });\n return conditionsFilterObj;\n};\n\n// eslint-disable-next-line complexity\nexport const prepareConditionTermString = (conditionTerms, formProps = defaultProps, index, branchName = null, conditionTermsMatchType = null) => {\n const { products, questions } = formProps;\n const str = index ? `${index}. ` : '';\n const { ConditionUtils } = ConditionContainerMiniModule;\n if (branchName) {\n return `${str}${branchName}`;\n }\n if (ConditionUtils && Array.isArray(conditionTerms) && conditionTerms.length > 0) {\n let finalResult = '';\n const resultStrings = [];\n for (let i = 0; i < conditionTerms.length; i++) {\n const term = conditionTerms[i];\n const text = ConditionUtils.getFieldTextByQid(term.field, questions);\n const operator = t(ConditionUtils.getComparisonOperatorByKey(term.operator));\n\n let termValue = '';\n if (ConditionUtils.isField(term.value) === true) {\n termValue = ConditionUtils.removeCurlyBraces(term.value);\n const tempQuestion = ConditionUtils.getQuestionByName2(termValue, questions);\n if (tempQuestion === null) {\n // field is deleted\n termValue = MISSING_CONDITON_TEXT;\n } else {\n termValue = ConditionUtils.getQuestionText(tempQuestion, { value: termValue });\n }\n } else {\n // check the question type is radio, checkbox or dropdown\n const question = questions.filter(q => q.qid === term.field)[0];\n const fieldsArr = ['control_radio', 'control_checkbox', 'control_dropdown', 'control_yesno'];\n if (question && question.options && (fieldsArr.indexOf(question.type) !== -1)) {\n const tempItems = question.options.toString().split('|');\n const idx = tempItems.indexOf(term.value);\n /** if term value is one of the field options or term value is not setted(isEmpty or isFilled) or other option is selected.\n * If predefined options selected (special property), don't check the options box.\n */\n if (idx > -1\n || term.value === ''\n || (term.value !== '' && question.allowOther === 'Yes' && term.value.indexOf('--') > -1)\n || (term.value !== '' && question.special && question.special !== 'None')\n ) {\n termValue = ConditionUtils.putQuotesAroundString(term.value);\n } else {\n // question value is deleted\n termValue = MISSING_CONDITON_TEXT;\n }\n } else {\n // question value is entered by user\n const isPaymentProduct = ConditionUtils.isPaymentProduct(term.field, questions);\n termValue = ConditionUtils.putQuotesAroundString(term.value);\n if (isPaymentProduct === true) {\n termValue = termValue.replace(/\"/g, '');\n termValue = ConditionUtils.getProductTextByProductId(termValue, products);\n termValue = ConditionUtils.putQuotesAroundString(termValue);\n }\n }\n }\n if (text === MISSING_CONDITON_TEXT || termValue === MISSING_CONDITON_TEXT) {\n if (ConditionUtils.isStringContains(term.field, '_quantity') === true) {\n const qid = ConditionUtils.retriveQidFromProductTermField(term.field);\n if (qid !== null) {\n let fieldText = ConditionUtils.getFieldTextByQid(qid, questions);\n const productText = ConditionUtils.getProductText(term.field, products);\n fieldText = `${fieldText}: ${productText}`;\n return fieldText;\n }\n }\n return text;\n }\n finalResult = `${str}${text} ${operator} ${termValue}`;\n resultStrings.push(`${text} ${operator} ${termValue}`);\n }\n if (resultStrings.length > 1) {\n if (conditionTermsMatchType === 'Any') {\n return `${str} ${resultStrings.join(' OR ')}`;\n }\n if (conditionTermsMatchType === 'All') {\n return `${str} ${resultStrings.join(' AND ')}`;\n }\n }\n return finalResult;\n }\n return `Branch ${index}`;\n};\n\nconst OtherOptionsLine = () => {\n const ref = useRef();\n return (\n
\n {t('Other Options')}\n
\n \n {t('When a submission doesn’t match any of your conditions, the flow will follow the Other Options path.')}\n \n
\n );\n};\n\nexport const toNormalizedOutcome = (rawOutcome, ownerElement, formProps = defaultProps, index) => {\n if (!rawOutcome) { return rawOutcome; }\n\n const ownerElementType = DEFAULT_FEATURES[WORKFLOW_V2] ? ownerElement.subType || ownerElement.type : ownerElement.getType();\n switch (true) {\n case ownerElementType === elementTypes.CONDITIONAL_BRANCH:\n if (rawOutcome.id === 999) {\n return {\n ...rawOutcome,\n value: ,\n conditionValue: t('Other Options')\n };\n }\n const str = prepareConditionTermString(rawOutcome.conditionTerms || [], formProps, index, rawOutcome?.branchName);\n return {\n ...rawOutcome,\n id: rawOutcome.id,\n value: str,\n conditionValue: str,\n color: '#FFFFFF'\n };\n case ownerElementType === elementTypes.BINARY_DECISION:\n return {\n ...rawOutcome,\n id: rawOutcome.id,\n value: rawOutcome.conditionValue,\n color: '#FFFFFF'\n };\n default:\n return {\n ...rawOutcome,\n id: rawOutcome.id,\n value: rawOutcome.conditionTerms && rawOutcome.conditionTerms.length > 0 ? `Branch ${rawOutcome.id}` : rawOutcome.text,\n color: rawOutcome.buttonColor || '#85c'\n };\n }\n};\n\nexport const isOwnerConditional = ownerElement => conditionalElementTypes.indexOf(ownerElement.getType()) > -1;\nexport const isSignDocumentElement = ownerElement => ownerElement.getType() === elementTypes.SIGN_DOCUMENT;\n","import { t } from '@jotforminc/translation';\nimport BaseNodeModel from '../BaseNode/model';\nimport { elementTypes } from '../../../constants/elementTypes';\n\nclass MergeModel extends BaseNodeModel {\n constructor(props = {}) {\n super({\n name: t('Merge'),\n numberOfPorts: 4,\n ...props,\n type: elementTypes.MERGE\n });\n }\n}\n\nexport default MergeModel;\n","import React from 'react';\nimport { t } from '@jotforminc/translation';\nimport BaseWidget from '../BaseNode/widget';\n\nimport { iconTypes } from '../../../constants/iconTypes';\nimport { elementTypes } from '../../../constants/elementTypes';\nimport { nodeWidgetProps } from '../../../constants/propTypes';\nimport WidgetResource from '../Commons/WidgetResource';\n\nconst MergeWidget = ({ node, engine, ...props }) => {\n const MergeIcon = iconTypes[elementTypes.MERGE];\n const { mergeType = 'ALL' } = node.getOptions();\n return (\n \n
\n \n
\n
\n {t(mergeType)}\n
\n \n );\n};\n\nMergeWidget.propTypes = {\n ...nodeWidgetProps\n};\n\nexport default MergeWidget;\n","import BaseNodeModel from '../BaseNode/model';\nimport { elementTypes } from '../../../constants/elementTypes';\n\nclass PlaceholderModel extends BaseNodeModel {\n constructor(props = {}) {\n super({\n name: 'Placeholder',\n isTemporary: false,\n ...props,\n type: elementTypes.PLACEHOLDER,\n isOutPortAvailable: true,\n hasToolBox: true,\n highlight: false\n });\n }\n}\n\nexport default PlaceholderModel;\n","import { DefaultPortModel, DefaultNodeModel } from '@projectstorm/react-diagrams';\n\nimport { elementTypes, elementTypesWithOutcome } from '../../../constants/elementTypes';\nimport { getPortCenterPosition, getAlignmentByName, getPortOffsettedPosition } from '../../../utils/diagram/getPortPosition';\n\nclass PortModel extends DefaultPortModel {\n isVisible() {\n return this.options.visibility === true;\n }\n\n isMobile() {\n return this.options.isMobile === true;\n }\n\n setVisibility(visibility) {\n this.options.visibility = visibility;\n }\n\n isInPort() {\n return this.options.in === true;\n }\n\n canLinkToPort(model) {\n if (!(model instanceof PortModel) && !(model instanceof DefaultNodeModel)) {\n return false;\n }\n\n const targetParentElement = model instanceof DefaultNodeModel ? model : model.getParent();\n const parentIDsOfSourceModel = this.getParent().getAllParentElementIDs();\n if (parentIDsOfSourceModel.includes(targetParentElement.getID())) {\n return false;\n }\n\n const isModelSelf = this === model;\n const isModelParent = this.parent === model;\n const isPortModel = model instanceof PortModel;\n const isNodeModel = model instanceof DefaultNodeModel;\n\n switch (true) {\n case isNodeModel && this.getParent().getType() === elementTypes.BINARY_DECISION && this.getParent().isMaxLinkCountReached():\n case isNodeModel && !elementTypesWithOutcome.includes(this.getParent().getType()) && this.getParent().isLinkedToNode(model):\n return false;\n case isPortModel && !isModelSelf && model.isInPort() && model.parent.getType() !== elementTypes.START_POINT:\n case isNodeModel && !isModelParent && model.getType() !== elementTypes.START_POINT && !model.getOptions().isTemporary:\n return true;\n default:\n return false;\n }\n }\n\n getBasePosition() {\n const { basePosition } = this.getOptions();\n return basePosition;\n }\n\n getPortAlignments = () => {\n const alignmentParts = this.getName().split('_');\n let primaryAlignment = alignmentParts[0];\n const secondaryAlignment = alignmentParts[1];\n if (primaryAlignment === 'DYNAMIC') {\n primaryAlignment = secondaryAlignment;\n }\n\n return [primaryAlignment, secondaryAlignment];\n };\n\n setPosition(position) {\n const { x, y } = position;\n if (!x || !y) {\n return;\n }\n\n this.position = position;\n const links = this.getLinks();\n Object.values(links).forEach(link => link.updatePoints());\n }\n\n getCenter() {\n const position = this.getPosition();\n return getPortCenterPosition({ position });\n }\n\n getGenericName() {\n const portName = this.getName();\n const portInfoList = portName.split('_');\n return portInfoList.slice(0, portInfoList.length - 1).join('_');\n }\n\n getAlignment() {\n const portName = this.getName();\n return getAlignmentByName({ portName });\n }\n\n getDirectionalAlignment() {\n const alignment = this.getAlignment();\n switch (alignment) {\n case 'TOP':\n case 'BOTTOM':\n return 'HORIZONTAL';\n case 'LEFT':\n case 'RIGHT':\n return 'VERTICAL';\n default:\n return false;\n }\n }\n\n isHorizontal() {\n const directionalAlignment = this.getDirectionalAlignment();\n return directionalAlignment === 'HORIZONTAL';\n }\n\n isVertical() {\n const directionalAlignment = this.getDirectionalAlignment();\n return directionalAlignment === 'VERTICAL';\n }\n\n getInfo() {\n return {\n isVertical: this.isVertical(),\n isHorizontal: this.isHorizontal(),\n center: this.getCenter(),\n alignment: this.getAlignment()\n };\n }\n\n getRelativeAlignment(position) {\n const center = this.getCenter();\n return {\n isAbove: center.y < position.y,\n isOnLeft: center.x < position.x\n };\n }\n\n getOffsettedPointPosition(extraOffset = 0) {\n const portName = this.getName();\n const position = this.getCenter();\n return getPortOffsettedPosition({ portName, position, extraOffset });\n }\n\n isConnectedLinkSelected() {\n const links = Object.values(this.getLinks());\n const selectedLink = links.find(link => link.isSelected());\n return Boolean(selectedLink);\n }\n}\n\nexport default PortModel;\n","import { t } from '@jotforminc/translation';\n\nimport BaseNodeModel from '../BaseNode/model';\nimport { elementTypes } from '../../../constants/elementTypes';\n\nclass SendEmailModel extends BaseNodeModel {\n constructor(props = {}) {\n super({\n name: t('Email'),\n ...props,\n type: elementTypes.SEND_EMAIL\n });\n }\n}\n\nexport default SendEmailModel;\n","import { t } from '@jotforminc/translation';\nimport BaseNodeModel from '../BaseNode/model';\nimport { getNextOutcomeID } from '../../../utils/diagram/generateNewOutcome';\nimport { elementTypes } from '../../../constants/elementTypes';\n\nclass SignDocumentModel extends BaseNodeModel {\n constructor(props = {}) {\n super({\n name: t('Sign Document'),\n ...props,\n hasToolBox: true,\n maxOutLinkCount: 4,\n isInPortAvailable: true,\n type: elementTypes.SIGN_DOCUMENT\n });\n }\n\n generateNewOutcome(params) {\n const currentOutcomes = this.getOutcomes();\n const id = getNextOutcomeID(currentOutcomes);\n return ({\n id,\n outcomeID: id,\n ...params\n });\n }\n}\n\nexport default SignDocumentModel;\n","import { t } from '@jotforminc/translation';\nimport BaseNodeModel from '../BaseNode/model';\nimport { elementTypes } from '../../../constants/elementTypes';\n\nclass SplitModel extends BaseNodeModel {\n constructor(props = {}) {\n super({\n name: t('Split'),\n ...props,\n type: elementTypes.SPLIT,\n numberOfPorts: 4\n });\n }\n}\n\nexport default SplitModel;\n","import React from 'react';\nimport { t } from '@jotforminc/translation';\nimport BaseWidget from '../BaseNode/widget';\n\nimport { iconTypes } from '../../../constants/iconTypes';\nimport { elementTypes } from '../../../constants/elementTypes';\nimport { nodeWidgetProps } from '../../../constants/propTypes';\nimport WidgetResource from '../Commons/WidgetResource';\n\nconst SplitWidget = ({ node, engine, ...props }) => {\n const SplitIcon = iconTypes[elementTypes.SPLIT];\n return (\n \n
\n \n
\n
\n {t('Split')}\n
\n \n );\n};\n\nSplitWidget.propTypes = {\n ...nodeWidgetProps\n};\n\nexport default SplitWidget;\n","import { t } from '@jotforminc/translation';\nimport BaseNodeModel from '../BaseNode/model';\nimport { elementTypes } from '../../../constants/elementTypes';\n\nclass StartPointModel extends BaseNodeModel {\n constructor(props = {}) {\n super({\n name: t('Form'),\n ...props,\n type: elementTypes.START_POINT,\n isInPortAvailable: false,\n hasToolBox: true\n });\n }\n}\n\nexport default StartPointModel;\n","import { string } from 'prop-types';\nimport React from 'react';\nimport { t } from '@jotforminc/translation';\n\nconst ContainerRenderer = ({ containerClassName = '', ...rest }) => {\n return (\n
\n \n
\n );\n};\n\nContainerRenderer.propTypes = {\n containerClassName: string\n};\n\nexport default ContainerRenderer;\n","import React, { forwardRef } from 'react';\nimport { func, string, node } from 'prop-types';\nimport { Dropdown as UiKitDropdown } from '@jotforminc/uikit';\nimport DefaultContainerRenderer from './ContainerRenderer';\n\nconst OptionContainerRenderer = props =>
  • ;\nconst ButtonRenderer = forwardRef(({ option: { text, value }, ...props }, ref) => { // eslint-disable-line\n return (\n \n {text}\n \n );\n});\n\nconst Dropdown = ({\n onChange,\n NoResultsFoundRenderer = null,\n ContainerRenderer = DefaultContainerRenderer,\n ...properties\n}) => {\n const handleOptionSelect = ({ value }) => onChange(value);\n\n return (\n
    \n \n
    \n );\n};\n\nDropdown.propTypes = {\n onChange: func.isRequired,\n NoResultsFoundRenderer: node,\n containerClassName: string,\n ContainerRenderer: node\n};\n\nexport default Dropdown;\n","\n \n\n","import React, { forwardRef } from 'react';\nimport {\n shape, string, oneOfType, number, bool, func\n} from 'prop-types';\nimport {\n IconCheckCircle,\n IconTrashFilled,\n IconTypeSquareFilled,\n IconAsterisk\n} from '@jotforminc/svg-icons';\n\nimport Toolbox from './Toolbox';\nimport ToolboxButton from './ToolboxButton';\nimport WatchmanRecorder from '../../utils/WatchmanRecorder';\n\nconst LinkToolbox = forwardRef(({\n onEditText, onRemove, hideEditText, showToolBox, showSelect, outcome, handleUpdateSignOutcome, linkLabel\n}, ref) => {\n const handleOutcomeRequireSign = () => {\n WatchmanRecorder.trackEvent('linkToolbox-requireSign-click');\n handleUpdateSignOutcome('Yes', outcome.id);\n };\n\n const handleEditTextClick = event => {\n WatchmanRecorder.trackEvent('linkToolbox-editText-click');\n onEditText(event);\n };\n\n const handleDeleteClick = event => {\n WatchmanRecorder.trackEvent('linkToolbox-delete-click');\n onRemove(event);\n };\n\n return (\n \n {!hideEditText\n && (\n \n )}\n {false && outcome?.outcomeSign && outcome?.outcomeSign === 'No' && }\n {showSelect && }\n \n \n );\n});\n\nLinkToolbox.propTypes = {\n showSelect: bool,\n showToolBox: bool,\n hideEditText: bool,\n onEditText: func,\n onRemove: func,\n outcome: oneOfType([\n shape({\n value: oneOfType([string, number]).isRequired,\n text: string.isRequired,\n buttonColor: string.isRequired,\n outcomeSign: string\n }),\n bool\n ]),\n handleUpdateSignOutcome: func,\n linkLabel: string\n};\n\nLinkToolbox.defaultProps = {\n showSelect: false,\n showToolBox: false,\n hideEditText: false,\n onEditText: f => f,\n onRemove: f => f,\n outcome: undefined,\n handleUpdateSignOutcome: f => f,\n linkLabel: ''\n};\n\nexport default LinkToolbox;\n","import React, { forwardRef } from 'react';\nimport { bool } from 'prop-types';\nimport { t } from '@jotforminc/translation';\n\nimport '../../styles/wfToolbox.scss';\n\nconst Toolbox = forwardRef(({ isVisible, ...props }, ref) => {\n return !global.isStandalone && !global.isTemplateMode ? (\n \n ) : null;\n});\n\nToolbox.defaultProps = {\n isVisible: false\n};\n\nToolbox.propTypes = {\n isVisible: bool\n};\n\nexport default Toolbox;\n","import React from 'react';\nimport { t } from '@jotforminc/translation';\nimport { elementType, string, func } from 'prop-types';\nimport { Button } from '@jotforminc/magnet';\n\nconst ToolboxButton = ({\n forSuffix, text, onClick, IconRenderer, ...props\n}) => {\n return (\n \n {t(text)}\n \n );\n};\n\nToolboxButton.propTypes = {\n forSuffix: string,\n text: string.isRequired,\n onClick: func.isRequired,\n IconRenderer: elementType.isRequired\n};\n\nToolboxButton.defaultProps = {\n forSuffix: null\n};\n\nexport default ToolboxButton;\n","import React, { useCallback } from 'react';\nimport { bool, func, number } from 'prop-types';\nimport {\n IconGearFilled,\n IconCopyFilled,\n IconPencilToSquare,\n IconEyeFilled,\n IconTrashFilled,\n IconEnvelopeClosedFilled,\n IconLockFilled,\n IconUnlockFilled\n} from '@jotforminc/svg-icons';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport Toolbox from './Toolbox';\nimport Feature from '../Feature';\nimport ToolboxButton from './ToolboxButton';\nimport CanvasEngineBuilder from '../../modules/Canvas/V1/CanvasEngineBuilder';\nimport { elementSubTypeProp, elementTypeProp } from '../../constants/propTypes';\nimport {\n LOCK, DEFAULT_FEATURES, MULTIPLE_FORM_SUPPORT, WORKFLOW_V2\n} from '../../constants/features';\nimport { typeHasToolboxAction } from '../../utils';\nimport WatchmanRecorder from '../../utils/WatchmanRecorder';\nimport elementHasModalPropertyPanel from '../../constants/elementsWithModalPropertyPanel';\nimport { elementTypes } from '../../constants/elementTypes';\nimport { fetchElement } from '../../actionCreators';\nimport { getV2Nodes, getIsWorkflowElementLimitReached } from '../../store/selectors';\n\n/* eslint-disable complexity */\nfunction ElementToolbox({\n elementID,\n elementType,\n elementSubType,\n onSettings,\n onEmailSettings,\n onClone,\n onLock,\n onRemove,\n onEditForm,\n onViewForm,\n hasEntryPointForm,\n showToolBox,\n onPropertyModalSettings,\n onUpdateKeyboardShortCut,\n onChangeForm\n}) {\n const dispatch = useDispatch();\n const nodes = useSelector(getV2Nodes);\n const isWorkflowElementLimitReached = useSelector(getIsWorkflowElementLimitReached);\n\n const handleEditFormClick = useCallback(event => {\n WatchmanRecorder.trackEvent('toolbox-editForm-click', { elementType, elementID });\n onEditForm(event);\n }, []);\n\n const handleViewFormClick = useCallback(event => {\n WatchmanRecorder.trackEvent('toolbox-viewForm-click', { elementType, elementID });\n onViewForm(event);\n }, []);\n\n const handleSettingsClick = useCallback(event => {\n WatchmanRecorder.trackEvent('toolbox-settings-click', { elementType, elementID });\n dispatch(fetchElement(elementID));\n if (elementHasModalPropertyPanel(elementType, elementSubType)) {\n if (elementType === elementTypes.SIGN_DOCUMENT) {\n // todo: is necessary for all modal?\n onUpdateKeyboardShortCut(false);\n }\n onPropertyModalSettings(true);\n } else {\n onSettings(event);\n }\n }, []);\n\n const handleChangeFormClick = useCallback(event => {\n WatchmanRecorder.trackEvent('toolbox-changeForm-click', { elementType, elementID });\n onChangeForm(event);\n }, []);\n\n const handleEmailSettingsClick = useCallback(event => {\n WatchmanRecorder.trackEvent('toolbox-emailSettings-click', { elementType, elementID });\n dispatch(fetchElement(elementID));\n onEmailSettings(event);\n }, []);\n\n const handleCloneClick = useCallback(event => {\n WatchmanRecorder.trackEvent('toolbox-clone-click', { elementType, elementID });\n onClone(event);\n }, []);\n\n const handleLockClick = useCallback(event => {\n WatchmanRecorder.trackEvent('toolbox-lock-click', { elementType, elementID });\n onLock(event);\n }, []);\n\n const handleDeleteClick = useCallback(() => {\n WatchmanRecorder.trackEvent('toolbox-delete-click', { elementType, elementID });\n onRemove(elementID);\n }, []);\n\n const node = DEFAULT_FEATURES[WORKFLOW_V2] ? nodes.find(n => n.id === elementID) : CanvasEngineBuilder.getNode(elementID);\n const isLocked = node?.options?.locked;\n const priorityType = elementSubType || elementType;\n // TODO: I think we need better handling on toolbox\n return (\n \n\n {hasEntryPointForm && typeHasToolboxAction(priorityType, 'editForm') && !isLocked ? (\n \n ) : null}\n {hasEntryPointForm && typeHasToolboxAction(priorityType, 'viewForm') && !isLocked ? (\n \n ) : null}\n {hasEntryPointForm && DEFAULT_FEATURES[MULTIPLE_FORM_SUPPORT] && typeHasToolboxAction(priorityType, 'changeForm') && !isLocked ? (\n \n ) : null}\n {typeHasToolboxAction(priorityType, 'settings') && !isLocked ? (\n \n ) : null}\n {typeHasToolboxAction(priorityType, 'emailSettings') && !isLocked ? (\n \n ) : null}\n {typeHasToolboxAction(priorityType, 'duplicate') && !isLocked && !isWorkflowElementLimitReached\n ? (\n \n ) : null}\n {typeHasToolboxAction(priorityType, 'lock') && !isLocked\n ? (\n \n )}\n />\n\n ) : null}\n {typeHasToolboxAction(priorityType, 'delete') && !isLocked ? (\n \n ) : null}\n {typeHasToolboxAction(priorityType, 'unlock') && isLocked\n ? (\n \n )}\n />\n ) : null}\n \n );\n}\n\nElementToolbox.propTypes = {\n elementID: number.isRequired,\n elementType: elementTypeProp.isRequired,\n elementSubType: elementSubTypeProp,\n onSettings: func,\n onEmailSettings: func,\n onClone: func,\n onLock: func,\n onRemove: func,\n onViewForm: func,\n onEditForm: func,\n hasEntryPointForm: bool,\n showToolBox: bool,\n onPropertyModalSettings: func,\n onUpdateKeyboardShortCut: func,\n onChangeForm: func\n};\n\nElementToolbox.defaultProps = {\n elementSubType: null,\n onSettings: f => f,\n onEmailSettings: f => f,\n onClone: f => f,\n onLock: f => f,\n onRemove: f => f,\n onViewForm: f => f,\n onEditForm: f => f,\n hasEntryPointForm: false,\n showToolBox: false,\n onPropertyModalSettings: f => f,\n onUpdateKeyboardShortCut: f => f,\n onChangeForm: f => f\n};\n\nexport default ElementToolbox;\n","import { useSelector } from 'react-redux';\nimport { isActiveFeature } from '../../store/selectors';\n\nconst Feature = ({ name, activeComponent = null, inactiveComponent = null }) => {\n const isActive = useSelector(isActiveFeature(name));\n if (isActive) {\n return activeComponent;\n }\n return inactiveComponent;\n};\n\nexport default Feature;\n","import React, { useMemo } from 'react';\nimport {\n objectOf, shape, string, func, node\n} from 'prop-types';\nimport { FormWizard as LibFormWizard } from '@jotforminc/form-wizard';\n\nimport TextInput from '../TextInput';\n\nimport componentTypes from '../../constants/componentTypes';\n\nconst FormWizard = ({ elementList, ...props }) => {\n const sanitizedElementList = useMemo(() => Object.entries(elementList).reduce((prev, [key, {\n label, description, labelProps, componentProps, addFormFields, debounce, ...elementProps\n }]) => ({\n ...prev,\n [key]: {\n ...elementProps,\n labelProps: { label, description, ...labelProps },\n componentProps: { ...componentProps, addFormFields, debounce }\n }\n }), {}), [elementList]);\n\n return (\n \n );\n};\n\nFormWizard.propTypes = {\n elementList: objectOf(shape({\n type: string,\n condition: func,\n label: string,\n description: node,\n componentProps: shape({})\n })).isRequired\n};\n\nexport default FormWizard;\n","export const pdfMapToList = docList => {\n let temp = {};\n if (Array.isArray(docList)) {\n docList.forEach(formByVal => {\n const id = formByVal.formID;\n const val = {};\n if (temp[id]) {\n const newVal = [...temp[id], formByVal.pdfID];\n temp[id] = newVal;\n } else {\n if (formByVal?.importedPDF) {\n val[id] = ['importedPDF'];\n } else {\n val[id] = [formByVal.pdfID];\n }\n temp = { ...temp, ...val };\n }\n });\n }\n return temp;\n};\n\nexport const pdfListToMap = pdfDocuments => {\n const formIDs = Object.keys(pdfDocuments);\n const selectedPDFs = Object.values(pdfDocuments);\n let index = 0;\n const arr = [];\n selectedPDFs?.forEach(pdfs => {\n pdfs?.forEach(value => {\n const formatedPDF = { formID: '', pdfID: '' };\n formatedPDF.formID = formIDs[index];\n formatedPDF.pdfID = value;\n if (value === 'importedPDF') {\n formatedPDF.importedPDF = true;\n formatedPDF.pdfID = '';\n }\n arr.push(formatedPDF);\n });\n index++;\n });\n return arr;\n};\n\nexport const filterForDeletedPDFArray = (currentPDF, formPDF) => {\n return currentPDF?.filter(value => formPDF.findIndex(x => x === value?.pdfID) !== -1 || value?.importedPDF || value.pdfID === '');\n};\n","\n \n\n","\n \n\n","\n \n \n\n","import React from 'react';\nimport {\n array, func, shape, string\n} from 'prop-types';\nimport { useSelector } from 'react-redux';\nimport { t } from '@jotforminc/translation';\nimport { useHover } from '@jotforminc/hooks';\nimport { FilterHoverText } from '@jotforminc/search-filter';\nimport { prepareConditionFilterValueWithOutcome } from '../Diagrams/Label/utils';\nimport { getAllRelatedFormQuestionsPrefixed } from '../../store/selectors';\n\nconst ConditionInPopover = ({\n outcomes = [],\n outcome = {},\n conditionValue = null,\n getQuestionText = null\n}) => {\n const [hoverRef, isHovered] = useHover(700);\n const questions = useSelector(getAllRelatedFormQuestionsPrefixed);\n const isConditionBranchElement = outcomes?.filter(val => val?.conditionTermsMatchType === 'All' || val?.conditionTermsMatchType === 'Any').length > 0;\n const otherOptions = outcome && outcome?.conditionValue === 'Other Options';\n const getConditionString = () => {\n if (!outcome || outcome?.length <= 1) {\n return null;\n }\n return prepareConditionFilterValueWithOutcome(outcome, questions);\n };\n\n return (\n <>\n
    \n {t(conditionValue)}\n
    \n {isHovered && isConditionBranchElement && !otherOptions && (\n \n )}\n \n );\n};\n\nConditionInPopover.propTypes = {\n outcomes: array,\n outcome: shape(),\n conditionValue: string,\n getQuestionText: func\n};\n\nexport default ConditionInPopover;\n","import { string, bool } from 'prop-types';\nimport React from 'react';\nimport {\n IconPenFilled,\n IconPenSignFilled,\n IconBan,\n IconClockExclamationCircleFilled,\n IconXmarkCircleFilled\n} from '@jotforminc/svg-icons';\n\nconst CustomOutcomePreview = ({ type, outcomeSignShow = false }) => {\n const signDocumentOutcomes = ['SIGNED', 'DECLINED', 'EXPIRED', 'CANCELED'];\n const signDocumentOutcome = signDocumentOutcomes.includes(type);\n const showOutcomeButtonIcon = signDocumentOutcome || outcomeSignShow;\n const renderCustomIcon = () => {\n switch (true) {\n case outcomeSignShow:\n return ;\n case type === 'SIGNED':\n return ;\n case type === 'DECLINED':\n return ;\n case type === 'EXPIRED':\n return ;\n case type === 'CANCELED':\n return ;\n default:\n return true;\n }\n };\n return (\n showOutcomeButtonIcon && (\n
    \n {renderCustomIcon()}\n
    \n )\n );\n};\n\nCustomOutcomePreview.propTypes = {\n type: string.isRequired,\n outcomeSignShow: bool\n};\n\nexport default CustomOutcomePreview;\n","import React, { useCallback } from 'react';\nimport { array, bool, oneOf } from 'prop-types';\nimport { t } from '@jotforminc/translation';\nimport { isBright } from '@jotforminc/utils';\n\nimport { ConditionContainerMiniModule } from '@jotforminc/builder-components';\nimport { outcomeProps } from '../../constants/propTypes';\nimport { OutcomeTypes } from '../../constants/OutcomeTypes';\nimport { undefinedOutcome, undefinedBranch } from '../../constants/undefinedOutcome';\nimport ConditionInPopover from './ConditionInPopover';\nimport { BRANCH_TOOLTIP, DEFAULT_FEATURES } from '../../constants/features';\nimport CustomOutcomePreview from './CustomOutcomePreview';\n\nconst getDefaultOutcomeFromType = type => {\n switch (type) {\n case OutcomeTypes.CONDITION:\n return undefinedBranch;\n default:\n return undefinedOutcome;\n }\n};\n\nconst OutcomeButtonPreview = ({\n isDropdownOptionsVisible = false,\n outcome = null,\n outcomes = null,\n outcomeType = OutcomeTypes.CUSTOM\n}) => {\n const { ConditionUtils } = ConditionContainerMiniModule;\n const getQuestionText = useCallback((question, value) => {\n return ConditionUtils.getQuestionText(question, value);\n }, []);\n const defaultOutcome = getDefaultOutcomeFromType(outcomeType);\n const branchToolTipFeatureEnable = DEFAULT_FEATURES[BRANCH_TOOLTIP];\n const {\n text, buttonColor, type, conditionValue, outcomeSign\n } = outcome || defaultOutcome;\n\n const classNames = [\n 'outcomeButton-button',\n isDropdownOptionsVisible ? 'isOpen' : null,\n type === OutcomeTypes.CONDITION ? 'isConditionOutcome' : null,\n type === OutcomeTypes.CUSTOM ? 'isCustomOutcome' : null,\n !buttonColor ? 'withBorder' : null\n ].filter(Boolean).join(' ');\n\n const color = React.useMemo(() => {\n if (!buttonColor || typeof buttonColor !== 'string') {\n return 'black';\n }\n if (buttonColor && buttonColor === '#FFB629') {\n // special case for sign document outcome\n return 'white';\n }\n return isBright(buttonColor) ? 'black' : 'white';\n }, [buttonColor]);\n\n const outcomeSignShow = outcomeSign && outcomeSign === 'Yes';\n\n return (\n
    \n \n {branchToolTipFeatureEnable ? {t(text)} : {t(text || conditionValue)}}\n {branchToolTipFeatureEnable && outcomeType === 'CONDITION' && (\n \n )}\n
    \n );\n};\n\nOutcomeButtonPreview.propTypes = {\n outcome: outcomeProps,\n outcomes: array,\n isDropdownOptionsVisible: bool,\n outcomeType: oneOf([...Object.values(OutcomeTypes)])\n};\n\nexport default OutcomeButtonPreview;\n","import React, { forwardRef } from 'react';\nimport {\n shape, string, oneOfType, number, bool, oneOf, array\n} from 'prop-types';\n\nimport OutcomeButtonPreview from './OutcomeButtonPreview';\nimport { OutcomeTypes } from '../../constants/OutcomeTypes';\n\nconst LabelOutcomeButton = forwardRef(({\n option: outcomeData, isOptionsVisible, outcomeType, outcomes, ...props\n}, ref) => {\n return (\n
    \n \n
    \n );\n});\n\nLabelOutcomeButton.propTypes = {\n option: oneOfType([\n shape({\n value: oneOfType([string, number]).isRequired,\n text: string.isRequired,\n buttonColor: string.isRequired\n }),\n bool\n ]),\n isOptionsVisible: bool,\n outcomes: array,\n outcomeType: oneOf([...Object.values(OutcomeTypes)])\n};\n\nLabelOutcomeButton.defaultProps = {\n option: undefined,\n isOptionsVisible: false,\n outcomeType: OutcomeTypes.CUSTOM,\n outcomes: []\n};\n\nexport default LabelOutcomeButton;\n","import React from 'react';\nimport {\n string, func, shape, bool,\n number\n} from 'prop-types';\nimport { useSelector } from 'react-redux';\nimport FormFields from '@jotforminc/form-fields-menu';\nimport { TextInput as UIKitTextInput } from '@jotforminc/uikit';\nimport { useDebounce } from '@jotforminc/hooks';\n\nimport { getAllRelatedFormQuestionsPrefixed, getQuestionPlaceholders } from '../../store/selectors';\n\nconst findQuestionsFromValue = value => value.match(/{.*?}/g);\n\nconst TextInput = ({\n id,\n onChange,\n valueList,\n errorList,\n value = '',\n debounce = false,\n debounceWaitTime = 400,\n addFormFields = false,\n componentTypeList,\n ...props\n}) => {\n const selectedQuestions = findQuestionsFromValue(value);\n const questions = useSelector(getAllRelatedFormQuestionsPrefixed);\n const questionsWithPlaceholders = useSelector(getQuestionPlaceholders);\n\n const debouncedOnChange = useDebounce(onChange, debounceWaitTime);\n const handleValueChange = ({ target: { value: tempValue } }) => {\n const handler = debounce ? debouncedOnChange : onChange;\n handler(tempValue);\n };\n\n const handleSelectionChange = tempSelectedQuestions => {\n const sanitizedSelectedQuestions = tempSelectedQuestions.filter(val => typeof val === 'string');\n const questionsInsideTextInput = value.match(/{.*?}/g) || [];\n const valueFilteredFromQuestions = questionsInsideTextInput.reduce((prev, questionTemplateString) => {\n if (sanitizedSelectedQuestions.indexOf(questionTemplateString) > -1) {\n return prev;\n }\n\n if (questionsWithPlaceholders.findIndex(({ placeholder }) => questionTemplateString === placeholder) === -1) {\n return prev;\n }\n\n return prev.split(questionTemplateString).join('');\n }, value);\n\n const questionsAddedValue = sanitizedSelectedQuestions.reduce((prev, questionTemplateString) => {\n if (questionsInsideTextInput.indexOf(questionTemplateString) > -1) {\n return prev;\n }\n\n return `${prev}${questionTemplateString}`;\n }, valueFilteredFromQuestions);\n\n onChange(questionsAddedValue);\n };\n\n const Component = (\n \n );\n\n if (addFormFields) {\n return (\n
    \n \n {Component}\n
    \n );\n }\n\n return Component;\n};\n\nTextInput.propTypes = {\n id: string.isRequired,\n value: string,\n addFormFields: bool,\n debounce: bool,\n onError: func,\n onChange: func.isRequired,\n valueList: shape({}).isRequired,\n errorList: shape({}).isRequired,\n componentTypeList: shape({}).isRequired,\n setValueList: func,\n setErrorList: func,\n onFieldError: func,\n debounceWaitTime: number\n};\n\nexport default TextInput;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { string, bool } from 'prop-types';\nimport { t } from '@jotforminc/translation';\n\nconst reloadPage = () => global.location.reload();\n\nconst FatalError = ({\n message = 'Oops! Something went wrong. Could you please refresh the page?',\n linkText = 'Refresh Page',\n reload = true\n}) => (\n
    \n {ReactDOM.createPortal(
    , document.getElementById('toast-modal-root'))}\n
    {t(message)}
    \n {reload && }\n
    \n);\n\nFatalError.propTypes = {\n message: string,\n linkText: string,\n reload: bool\n};\n\nexport default FatalError;\n","import React from 'react';\nimport { bool, node, string } from 'prop-types';\nimport { t } from '@jotforminc/translation';\n\nconst LabelPropTypes = {\n className: string,\n children: node,\n htmlFor: string,\n label: string,\n description: node,\n isBorderless: bool,\n isNew: bool\n};\n\nconst LabelDefaultProps = {\n className: null,\n children: null,\n htmlFor: '',\n label: '',\n description: '',\n isBorderless: false,\n isNew: false\n};\n\nconst renderNew = (\n
    {t('NEW')}
    \n);\n\n/* LabelHorizontal */\nexport const LabelHorizontal = ({\n children,\n htmlFor,\n label,\n description,\n descriptionAtTop,\n isBorderless,\n className,\n isNew\n}) => {\n const classNames = [\n 'wfLabel',\n 'isHorizontal',\n className,\n isBorderless && 'isBorderless'\n ].filter(val => val).join(' ');\n\n return (\n \n
    \n
    \n {label}\n {isNew && renderNew}\n
    \n {descriptionAtTop &&
    {t(description)}
    }\n
    \n
    {children}
    \n {!descriptionAtTop &&
    {t(description)}
    }\n \n );\n};\n\nLabelHorizontal.propTypes = {\n descriptionAtTop: bool,\n ...LabelPropTypes\n};\n\nLabelHorizontal.defaultProps = {\n descriptionAtTop: true,\n ...LabelDefaultProps\n};\n\n/* LabelVertical */\nexport const LabelVertical = ({\n className,\n children,\n htmlFor,\n label,\n description,\n isBorderless,\n isNew\n}) => {\n const classNames = [\n 'wfLabel',\n 'isVertical',\n className,\n isBorderless && 'isBorderless'\n ].filter(val => val).join(' ');\n\n return (\n \n );\n};\n\nLabelVertical.propTypes = LabelPropTypes;\nLabelVertical.defaultProps = LabelDefaultProps;\n","import { getAllIntegrationsDetails } from '@jotforminc/integration-constants';\nimport isEmpty from 'lodash/isEmpty';\n\nexport const INTEGRATION_DETAILS = getAllIntegrationsDetails('workflow');\n\nconst INTEGRATION_ACITON_DETAILS = Object.entries(INTEGRATION_DETAILS).reduce((prev, [key, values]) => {\n if (!isEmpty(values.actions)) {\n return { ...prev, [key]: values.actions };\n }\n return prev;\n}, {});\n\nexport const PARTNER_NAMES = Object.entries(INTEGRATION_ACITON_DETAILS).reduce((prev, [key]) => ({ ...prev, [key]: key }), {});\n\nexport default INTEGRATION_ACITON_DETAILS;\n","export const AcceptableOutcomeTypes = [];\n\nexport const OutcomeTooltipTexts = {\n SIGNED: 'Document gets signed by all signers.',\n DECLINED: 'At least one of the signers declines the signing.',\n EXPIRED: 'Document sign period gets reached.',\n CANCELED: 'Document owner cancels the sign request.'\n};\n","export const OutcomeTypes = {\n APPROVE: 'APPROVE',\n DENY: 'DENY',\n CUSTOM: 'CUSTOM',\n CONDITION: 'CONDITION'\n};\n","\n \n \n \n \n \n\n","\n \n \n \n \n \n \n\n","\n \n \n \n \n \n\n","var _circle;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgCircularLoaderIcon = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"25 25 50 50\"\n}, props), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 50,\n cy: 50,\n r: 20,\n fill: \"none\"\n})));\nexport default SvgCircularLoaderIcon;","\n \n\n","var _circle, _rect, _path, _path2, _path3, _path4, _path5, _path6, _path7;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgNoAssignIcon = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 90 100\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 45,\n cy: 54.429,\n r: 45,\n fill: \"#E3E5F5\"\n})), _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n x: 19.714,\n width: 51.815,\n height: 28.16,\n rx: 3.429,\n fill: \"#091141\"\n})), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M46.134 22.99a.857.857 0 0 0-1.199 0l-4.043 3.95a.857.857 0 0 0-.073 1.146l4.044 5.1a.857.857 0 0 0 1.343 0l4.044-5.1a.857.857 0 0 0-.073-1.145l-4.043-3.951Z\",\n fill: \"#091141\"\n})), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M27.397 9.61c0 1.99 1.62 3.609 3.61 3.609 1.99 0 3.609-1.62 3.609-3.61 0-1.99-1.62-3.609-3.61-3.609-1.99 0-3.609 1.62-3.609 3.61Zm9.148 1.86a3.057 3.057 0 0 0 3.053 3.054 3.057 3.057 0 0 0 3.055-3.054 3.057 3.057 0 0 0-3.054-3.054 3.057 3.057 0 0 0-3.054 3.054Zm.83 10.241H24.638a.637.637 0 0 1-.637-.634 7.031 7.031 0 0 1 2.046-4.963 7.03 7.03 0 0 1 4.94-2.046h.021a7.015 7.015 0 0 1 7.006 7.007.637.637 0 0 1-.637.636Zm7.613 0h-5.591a.779.779 0 0 0 .049-.274 8.545 8.545 0 0 0-2.187-5.716 5.92 5.92 0 0 1 2.322-.478h.018a5.935 5.935 0 0 1 5.928 5.929.539.539 0 0 1-.54.538Z\",\n fill: \"#fff\"\n})), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M62.063 14.478c0-1.687-.288-2.983-.946-3.806-.453-.597-1.09-.987-2.057-.987-.967 0-1.584.39-2.057.987-.638.823-.926 2.119-.926 3.806 0 1.687.288 2.983.926 3.806.473.596 1.09.987 2.057.987.967 0 1.604-.391 2.057-.988.638-.822.946-2.118.946-3.805Zm2.448 0c0 1.769-.288 3.435-1.193 4.793-.864 1.296-2.263 2.18-4.258 2.18-1.996 0-3.374-.884-4.238-2.18-.905-1.358-1.193-3.024-1.193-4.793 0-1.77.288-3.436 1.193-4.793.864-1.296 2.242-2.181 4.238-2.181 1.995 0 3.394.885 4.258 2.18.905 1.358 1.193 3.025 1.193 4.794Z\",\n fill: \"#fff\"\n})), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M34.737 80.356h22.501c2.617 0 4.737-2.202 4.737-4.92v-25.15L52.791 41H34.737C32.121 41 30 43.203 30 45.92v29.517c0 2.717 2.12 4.92 4.737 4.92Z\",\n fill: \"#94CD2A\"\n})), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m52.869 41 9.108 9.302H56.81a3.942 3.942 0 0 1-3.942-3.942V41Z\",\n fill: \"#6DA900\"\n})), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M35.814 54.375c0-1.166.945-2.111 2.112-2.111h15.487a2.112 2.112 0 0 1 0 4.223H37.926a2.112 2.112 0 0 1-2.112-2.112ZM35.814 61.415c0-1.167.945-2.112 2.112-2.112h15.487a2.112 2.112 0 0 1 0 4.224H37.926a2.112 2.112 0 0 1-2.112-2.112ZM35.814 68.454c0-1.166.945-2.112 2.112-2.112h15.487a2.112 2.112 0 0 1 0 4.224H37.926a2.112 2.112 0 0 1-2.112-2.112Z\",\n fill: \"#fff\"\n})), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M58.03 59.193a2.071 2.071 0 0 0-2.93 0l-7.504 7.504L47 69.08a1.036 1.036 0 0 0 1.256 1.256l2.384-.596 7.504-7.503a2.071 2.071 0 0 0 0-2.93l-.114-.114Z\",\n fill: \"#0A1551\"\n})));\nexport default SvgNoAssignIcon;","import React, { forwardRef } from 'react';\nimport { ColorPicker as UiKitColorPicker } from '@jotforminc/uikit';\n\nconst WrapperRenderer = props =>
    ;\nconst ColorPickerWrappper = props =>
    ;\n// eslint-disable-next-line react/prop-types\nconst ColorRenderer = forwardRef(({ color, ...props }, ref) => (\n // Ref is required for automatically closing\n
    \n
    \n
    \n));\n\nconst ColorPicker = props => (\n \n);\n\nexport default ColorPicker;\n","import React, { useEffect, useState } from 'react';\nimport {\n bool, func, oneOfType, string\n} from 'prop-types';\nimport { useDebouncedCallback } from 'use-debounce';\nimport { t } from '@jotforminc/translation';\nimport LibToggle from '@jotforminc/toggle';\nimport { Tooltip } from '@jotforminc/tooltip';\n\nimport { isYes, isPasswordEnabledElement } from '../../utils';\nimport { isPDFPasswordRequiredOnHIPAA } from '../../constants/helper';\n\nconst Toggle = ({\n value = false,\n tooltipText = null,\n showToolTip = false,\n type = null,\n subType = null,\n isPasswordToggle = false,\n onChange = f => f,\n ...props\n}) => {\n const [isSelected, setIsSelected] = useState(isYes(value));\n const isEnabled = isPDFPasswordRequiredOnHIPAA() && isPasswordEnabledElement(type, subType);\n\n useEffect(() => {\n // setIsSelected(isYes(value));\n if (isYes(value) && isEnabled && isPasswordToggle) {\n onChange('Yes');\n }\n }, [value]);\n\n const { callback } = useDebouncedCallback(onChange, 200);\n\n const handleClick = () => {\n if (isEnabled) {\n return;\n }\n const newSelectedValue = !isSelected;\n setIsSelected(newSelectedValue);\n callback(newSelectedValue ? 'Yes' : 'No');\n };\n\n return (\n <>\n
    \n \n\n {tooltipText && showToolTip && (\n \n {t(tooltipText)}\n \n )}\n\n
    \n \n );\n};\n\nToggle.propTypes = {\n value: oneOfType([string, bool]),\n showToolTip: bool,\n tooltipText: string,\n type: string,\n subType: string,\n onChange: func,\n isPasswordToggle: bool,\n onText: string,\n offText: string\n};\n\nexport default Toggle;\n","import React from 'react';\nimport { shape, string, func } from 'prop-types';\nimport { FileUpload as UiKitFileUpload, FileUploadComponents } from '@jotforminc/uikit';\n\nconst {\n Form,\n Text,\n ErrorText,\n Thumbnail,\n FileInput,\n FilePreview,\n TextWrapper,\n DragContainer\n} = FileUploadComponents;\n\nconst Wrapper = ({ children, ...props }) =>
    {children}
    ; // eslint-disable-line\n\nconst FileUpload = ({ value, onChange, ...props }) => {\n const handleFileRemove = () => onChange({});\n return (\n \n );\n};\n\nFileUpload.propTypes = {\n value: shape({\n name: string,\n type: string,\n url: string\n }),\n onChange: func.isRequired\n};\n\nFileUpload.defaultProps = {\n value: {}\n};\n\nexport default FileUpload;\n","import React from 'react';\nimport {\n arrayOf, string, func, number, shape, bool, elementType\n} from 'prop-types';\nimport LibEmailInput from '@jotforminc/email-input';\nimport { useSelector } from 'react-redux';\nimport isEqual from 'lodash/isEqual';\n\nimport {\n getEmailQuestions, getEmailSuggestionList, getFormTitle, getColoredFormArray\n} from '../../store/selectors';\nimport { DEFAULT_FEATURES, MULTIPLE_FORMS } from '../../constants/features';\n\nconst EmailInput = ({\n value: emails, onChange, placeholder, addFormFields, maxCount, showRemainingCount, isErrored, limitedRecipientLogic, isDisableFreeTextOnRecipients,\n showSuggestionsOnFocus, emailRecipientLimit, PillRenderer\n}) => {\n const questions = useSelector(getEmailQuestions);\n const userList = useSelector(getEmailSuggestionList);\n const formTitle = addFormFields ? useSelector(getFormTitle) : null;\n const errorMessage = isErrored(emails);\n const formArray = useSelector(getColoredFormArray);\n const options = userList.map(({ email }) => ({ value: email, text: email }));\n const useMultipleForms = DEFAULT_FEATURES[MULTIPLE_FORMS];\n\n const emailListNormalizer = email => {\n if (email.isQuestion) {\n return email;\n }\n return { ...email, value: email.text || email.value || '' };\n };\n\n const handleEmailChange = newEmailList => {\n const newEmailListWithValue = newEmailList.map(emailListNormalizer);\n const emailList = limitedRecipientLogic && emailRecipientLimit ? newEmailListWithValue?.slice(0, emailRecipientLimit) : newEmailListWithValue;\n if (isEqual(emailList, emails)) {\n return;\n }\n if (isDisableFreeTextOnRecipients) {\n const emailListValidation = emailList.map(emailValue => ({ ...emailValue, isValid: options.findIndex(val => val.value === emailValue.value) >= 0 }));\n onChange(emailListValidation);\n return;\n }\n onChange(emailList);\n };\n\n return (\n
    \n \n {errorMessage &&
    {errorMessage}
    }\n
    \n );\n};\n\nEmailInput.propTypes = {\n value: arrayOf(shape({\n text: string,\n id: string\n })),\n placeholder: string,\n maxCount: number,\n addFormFields: bool,\n onChange: func,\n isErrored: func,\n showRemainingCount: bool,\n showSuggestionsOnFocus: bool,\n limitedRecipientLogic: bool,\n isDisableFreeTextOnRecipients: bool,\n emailRecipientLimit: number,\n PillRenderer: elementType\n};\n\nEmailInput.defaultProps = {\n value: [],\n placeholder: '',\n maxCount: 5,\n addFormFields: false,\n onChange: f => f,\n isErrored: f => f,\n showRemainingCount: false,\n showSuggestionsOnFocus: false,\n limitedRecipientLogic: false,\n isDisableFreeTextOnRecipients: false,\n emailRecipientLimit: null,\n PillRenderer: undefined\n};\n\nexport default EmailInput;\n","import React, { useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport { string, func } from 'prop-types';\nimport { useDebouncedCallback } from 'use-debounce';\nimport RichTextEditor from '@jotforminc/rich-text-editor';\n\nimport { getAllRelatedFormQuestionsPrefixed } from '../../store/selectors';\n\nconst RichTextEditorWrapper = ({ value, onChange }) => {\n const [editor, setEditor] = useState(false);\n const questions = useSelector(getAllRelatedFormQuestionsPrefixed);\n\n const handleEditorInit = (e, tempEditor) => setEditor(tempEditor);\n const [handleEditorChange] = useDebouncedCallback(() => editor && onChange(editor.getContent()), 500);\n\n return (\n \n );\n};\n\nRichTextEditorWrapper.propTypes = {\n onChange: func.isRequired,\n value: string\n};\n\nRichTextEditorWrapper.defaultProps = {\n value: ''\n};\n\nexport default RichTextEditorWrapper;\n","import Styled from 'styled-components';\n\nexport const ScOutcomesWizard = Styled.div`\n margin-top: 1.25em;\n`;\n","import React, { useEffect, useState } from 'react';\nimport { arrayOf } from 'prop-types';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { t } from '@jotforminc/translation';\nimport { isBright } from '@jotforminc/utils';\nimport { ColoredBarGroup } from '@jotforminc/colored-bar';\nimport { useDebouncedCallback } from 'use-debounce';\nimport { usePrevious } from '@jotforminc/hooks';\n\nimport { ScOutcomesWizard } from './scOutcomes';\nimport { outcomeProps } from '../../constants/propTypes';\nimport { getOutcomesByElementID, getSelectedElementID } from '../../store/selectors';\nimport { addOutcomeToElement, removeOutcome, updateElementOutcome } from '../../actionCreators';\n\nconst OutcomesWizard = props => {\n const { value } = props;\n const dispatch = useDispatch();\n const ownerElementID = useSelector(getSelectedElementID);\n const elementOutcomes = useSelector(getOutcomesByElementID(ownerElementID));\n const [outcomes, setOutcomes] = useState(value);\n const [initialFocus, setInitialFocus] = useState(null);\n\n const previousOutcomes = usePrevious(outcomes);\n\n useEffect(() => {\n setOutcomes(value);\n if (value?.length > previousOutcomes?.length) {\n setInitialFocus([...value].pop().id);\n } else {\n setInitialFocus(null);\n }\n }, [value]);\n\n useEffect(() => {\n if (elementOutcomes.toString() !== outcomes.toString()) {\n setOutcomes(elementOutcomes);\n }\n }, [elementOutcomes]);\n\n const parseOutcomes = rawOutcomes => {\n return rawOutcomes.map(({ id, text, buttonColor }) => ({\n id,\n value: text,\n color: buttonColor\n }));\n };\n\n const handleOutcomeAdd = () => {\n dispatch(addOutcomeToElement({ elementID: ownerElementID }));\n };\n\n const handleOutcomeDelete = outcomeID => {\n dispatch(removeOutcome({ ownerElementID, outcomeID }));\n };\n\n const handleOutcomeUpdate = key => ({ id, value: updatedValue }) => {\n const textColor = isBright(updatedValue) ? '#000' : '#fff';\n dispatch(updateElementOutcome({ elementID: ownerElementID, outcomeID: id, data: { [key]: (updatedValue || '').slice(0, 75), textColor: textColor } }));\n };\n const debouncedOnTextChange = useDebouncedCallback(val => handleOutcomeUpdate('text')(val), 1000);\n\n const onItemValueFocused = ({ event }) => {\n event.target.select();\n };\n\n return (\n \n 1}\n />\n {!outcomes.length ?
    {t('Please add an outcome')}
    : null}\n
    \n );\n};\n\nOutcomesWizard.propTypes = {\n value: arrayOf(outcomeProps)\n};\n\nOutcomesWizard.defaultProps = {\n value: []\n};\n\nexport default OutcomesWizard;\n","import React from 'react';\nimport { func, shape, string } from 'prop-types';\nimport { t } from '@jotforminc/translation';\nimport FormWizard from '../FormWizard';\nimport { LabelVertical } from '../WizardLabel';\nimport { TOGGLE } from '../../constants/componentTypes';\n\nfunction CommentWizard({ value: comment = {}, onChange }) {\n const elementList = {\n commentRequired: {\n type: TOGGLE,\n label: t('Require Comments'),\n LabelRenderer: LabelVertical,\n description: t('Prevent task completion if the comments section is empty.')\n }\n };\n\n return (\n onChange(valueList)}\n elementList={elementList}\n />\n );\n}\n\nCommentWizard.propTypes = {\n value: shape({\n addComment: string,\n commentRequired: string\n }),\n onChange: func.isRequired\n};\n\nexport default CommentWizard;\n","import { useEffect, useRef } from 'react';\n\nexport const useRealUnmount = fn => {\n const fnRef = useRef();\n fnRef.current = fn;\n\n useEffect(() => {\n return () => {\n fnRef.current();\n };\n }, []);\n};\n","import { t } from '@jotforminc/translation';\nimport { string } from 'prop-types';\nimport React from 'react';\n\nconst WizardCommonError = ({ message = t('Complete the settings below.') }) =>
    {message}
    ;\n\nexport default WizardCommonError;\n\nWizardCommonError.propTypes = {\n message: string\n};\n","import React, { useEffect, useRef, useState } from 'react';\nimport { func, shape, string } from 'prop-types';\n\nimport { t } from '@jotforminc/translation';\nimport { isYes } from '../../utils';\nimport FormWizard from '../FormWizard';\nimport { LabelHorizontal, LabelVertical } from '../WizardLabel';\nimport { ESCALATE_TASK_WIZARD, DUE_DATE_WIZARD, TOGGLE } from '../../constants/componentTypes';\nimport { useRealUnmount } from '../../utils/hooks/useRealUnmount';\nimport WizardCommonError from '../WizardCommonError';\n\nfunction EscalationWizard({ value: escalation, onChange }) {\n const { escalated } = escalation;\n\n const escalateWhenRef = useRef();\n const escalateTaskRef = useRef();\n\n const [wizardsValid, setWizardsValid] = useState(true);\n\n const validateWizards = () => {\n const escalateWhenValid = escalateWhenRef?.current ? escalateWhenRef.current.validateWizard() : true;\n const escalateTaskValid = escalateTaskRef?.current ? escalateTaskRef.current.validateWizard() : true;\n setWizardsValid(escalateWhenValid && escalateTaskValid);\n };\n\n const handleChange = valueList => {\n const {\n escalated: escalatedValue,\n escalateWhen: escalateWhenValues,\n escalateTask: escalateTaskValues\n } = valueList;\n\n onChange({\n escalated: escalatedValue,\n escalateWhen: escalateWhenValues,\n escalateTask: escalateTaskValues\n });\n };\n\n useRealUnmount(() => {\n if (!wizardsValid) {\n handleChange({ ...escalation, escalated: 'No' });\n }\n });\n\n useEffect(() => {\n validateWizards();\n });\n\n const getDescription = () => {\n return (\n <>\n {t('After a specified time period, escalate the task to someone else.')}\n {!wizardsValid ? : null}\n \n );\n };\n\n return (\n isYes(escalated),\n type: DUE_DATE_WIZARD,\n label: t('Due Date for Escalation'),\n componentProps: { intervalOptionLabel: 'Escalate After' },\n LabelRenderer: LabelHorizontal,\n ref: escalateWhenRef\n },\n escalateTask: {\n condition: () => isYes(escalated),\n type: ESCALATE_TASK_WIZARD,\n label: t('Escalate Task'),\n LabelRenderer: LabelHorizontal,\n ref: escalateTaskRef\n }\n }}\n />\n );\n}\n\nEscalationWizard.propTypes = {\n value: shape({\n escalated: string,\n escalateWhen: shape({}),\n escalateTask: shape({})\n }),\n onChange: func.isRequired\n};\n\nEscalationWizard.defaultProps = {\n value: {}\n};\n\nexport default EscalationWizard;\n","import React, { useState, useEffect } from 'react';\nimport {\n func, oneOfType, shape, string, bool, arrayOf\n} from 'prop-types';\nimport { v4 as uuid } from 'uuid';\nimport { useSelector } from 'react-redux';\nimport { useDebouncedCallback } from 'use-debounce';\nimport { t } from '@jotforminc/translation';\nimport CommonSingleEmailInput from '@jotforminc/single-email-input';\nimport { colorifyFormArray } from '@jotforminc/utils';\nimport WizardCommonError from '../WizardCommonError';\n\nimport {\n getEmailSuggestionList, getFormTitle, getIsHIPAA, getAllRelatedFormsAndEmailFields, getEmailQuestions,\n FormSelectors\n} from '../../store/selectors';\nimport { MULTIPLE_FORMS, DEFAULT_FEATURES } from '../../constants/features';\n\nconst SingleEmailInput = ({\n id, value, onChange: baseOnChange, debounce, placeholder,\n ariaLabel, valueList, errorList, addFormFields, duplicatedEmails // eslint-disable-line\n}) => {\n let { [id]: errorMessage } = errorList;\n errorMessage = value && value.length === 0 ? t('This field is required') : errorMessage;\n const formTitle = useSelector(getFormTitle);\n let questions = useSelector(DEFAULT_FEATURES[MULTIPLE_FORMS] ? getAllRelatedFormsAndEmailFields : getEmailQuestions);\n const forms = useSelector(FormSelectors.getFlowForms);\n const userList = useSelector(getEmailSuggestionList);\n const isHIPAA = useSelector(getIsHIPAA);\n const [stateValue, setStateValue] = useState(value);\n const [componentKey, setComponentKey] = useState(uuid());\n\n if (id && id === 'assignee') {\n const { formID = null } = valueList;\n if (formID) {\n questions = questions?.filter(question => question?.id !== formID);\n }\n }\n\n const getNormalizedValue = tmpValue => {\n let normalized = tmpValue;\n if (Array.isArray(tmpValue)) {\n normalized = tmpValue.map(f => ({\n ...f,\n text: f.text.replace(/\\u200B/g, ''),\n value: f.value.replace(/\\u200B/g, '')\n }));\n }\n return normalized;\n };\n\n const handleInputChange = tmpValue => {\n const normalized = getNormalizedValue(tmpValue);\n setStateValue(normalized);\n baseOnChange(normalized);\n };\n\n useEffect(() => {\n if (stateValue && stateValue[0]?.value !== value[0]?.value) {\n const normalized = getNormalizedValue(value);\n setStateValue(normalized);\n setComponentKey(uuid());\n }\n }, [value]);\n\n const { callback, pending, flush } = useDebouncedCallback(handleInputChange, 1000, { trailing: true });\n const onChange = debounce ? callback : handleInputChange;\n\n useEffect(() => {\n return () => {\n // Execute debounced fn on unmount if latest call didn't executed yet.\n if (pending()) {\n flush();\n }\n };\n }, [pending, flush]);\n\n return (\n <>\n 0}\n />\n {errorMessage && ()}\n \n );\n};\n\nSingleEmailInput.propTypes = {\n placeholder: string,\n id: string.isRequired,\n debounce: bool,\n errorList: shape({}),\n value: oneOfType([shape(), arrayOf(shape()), string]).isRequired,\n isErrored: func,\n onChange: func.isRequired,\n valueList: shape({})\n};\n\nSingleEmailInput.defaultProps = {\n placeholder: null,\n debounce: false,\n errorList: {},\n isErrored: f => f,\n valueList: {}\n};\n\nexport default SingleEmailInput;\n","import React, { useEffect, useState } from 'react';\nimport {\n arrayOf, func, shape, string\n} from 'prop-types';\nimport { t } from '@jotforminc/translation';\nimport { useSelector } from 'react-redux';\nimport Dropdown from '../Dropdown';\nimport { getEmailSuggestionList } from '../../store/selectors';\n\nexport default function EmailDropdownWizard({\n value = [],\n onChange = f => f\n}) {\n const [defaultValue, setDefaultValue] = useState(value);\n useEffect(() => {\n if (value?.[0]?.value !== defaultValue?.[0]?.value) {\n setDefaultValue(value);\n }\n }, [value]);\n const userEmails = useSelector(getEmailSuggestionList);\n const options = userEmails.map(({ email }) => ({ value: email, text: email }));\n const wrappedOnChange = val => {\n // To keep compatible with non-enterprise version\n onChange([{ value: val, email: val, text: val }]);\n };\n return (\n \n );\n}\n\nEmailDropdownWizard.propTypes = {\n value: arrayOf(shape({\n value: string\n })),\n onChange: func\n};\n","import React, {\n forwardRef, useEffect, useImperativeHandle, useState\n} from 'react';\nimport {\n func, shape, string\n} from 'prop-types';\nimport { t } from '@jotforminc/translation';\nimport { isEmail } from '@jotforminc/utils';\nimport { Hooks } from '@jotforminc/uikit';\nimport SingleEmailInput from '../SingleEmailInput';\nimport EmailDropdownWizard from '../UserEmailsDropdownWizard';\nimport { DEFAULT_FEATURES, DISABLE_FREE_TEXT_ON_RECIPIENTS } from '../../constants/features';\n\nconst EscalateTaskWizard = forwardRef(({\n value: escalateTask = {}, onChange\n}, ref) => {\n const {\n escalateTo\n } = escalateTask;\n\n const escalateToArr = escalateTo ? [{\n id: '1', isValid: isEmail(escalateTo), text: escalateTo, value: escalateTo\n }] : [];\n const [escalateToVal, setEscalateToVal] = useState(escalateToArr[0] || null);\n const [escalateToEmailValid, setEscalateToEmailValid] = useState(true);\n\n const escalateToPersonComp = !DEFAULT_FEATURES[DISABLE_FREE_TEXT_ON_RECIPIENTS] ? (\n <>\n {\n const [emailObj] = emails;\n setEscalateToVal(emailObj);\n }}\n maxCount={1}\n />\n {!escalateToEmailValid && escalateToVal ?
    {t('Enter a valid email address.')}
    : null}\n \n ) : (\n {\n const [emailObj] = emails;\n setEscalateToVal({ ...emailObj, isValid: true });\n }}\n />\n );\n\n const isEscalateToValid = () => {\n const { isValid = false } = escalateToVal || false;\n return isValid;\n };\n\n const validateWizard = () => {\n return isEscalateToValid();\n };\n\n useImperativeHandle(ref, () => {\n return ({\n validateWizard\n });\n });\n\n Hooks.useEffectIgnoreFirst(() => {\n onChange({\n escalateTo: escalateToVal?.text || ''\n });\n }, [escalateToVal]);\n\n useEffect(() => {\n setEscalateToEmailValid(isEscalateToValid());\n }, [escalateTo, escalateToVal]);\n\n return (\n
    \n
    \n
    \n {t('Add escalation email address')}\n
    \n
    \n {escalateToPersonComp}\n
    \n
    \n
    \n );\n});\n\nEscalateTaskWizard.propTypes = {\n value: shape({\n escalateToPerson: string,\n escalateTo: string,\n autoComplete: string,\n autoFinishOutcomeID: string\n }),\n onChange: func.isRequired\n};\n\nexport default EscalateTaskWizard;\n","import React from 'react';\nimport { func, shape, string } from 'prop-types';\nimport { t } from '@jotforminc/translation';\nimport FormWizard from '../FormWizard';\nimport { REASSIGN_NOTIFICATION_WIZARD, TOGGLE } from '../../constants/componentTypes';\nimport { isYes } from '../../utils';\nimport { LabelVertical } from '../WizardLabel';\n\nfunction ReassignWizard({ value: reassign, onChange }) {\n return (\n onChange(valueList)}\n elementList={{\n reassignTask: {\n type: TOGGLE,\n label: t('Reassign'),\n LabelRenderer: LabelVertical,\n labelProps: { isBorderless: true },\n description: t('Allow your assignee to reassign this task to another person.')\n },\n sendNotification: {\n condition: () => isYes(reassign.reassignTask),\n type: REASSIGN_NOTIFICATION_WIZARD,\n LabelRenderer: LabelVertical\n }\n }}\n />\n );\n}\n\nReassignWizard.propTypes = {\n value: shape({\n addComment: string,\n commentRequired: string\n }),\n onChange: func.isRequired\n};\n\nReassignWizard.defaultProps = {\n value: {}\n};\n\nexport default ReassignWizard;\n","import React from 'react';\nimport {\n bool, func, oneOfType, string, node\n} from 'prop-types';\nimport { Checkbox as DefaultCheckbox } from '@jotforminc/magnet';\nimport { isYes } from '../../utils';\n\nconst Checkbox = ({\n value = false,\n onChange = f => f,\n children = null,\n ...props\n}) => {\n const isChecked = isYes(value);\n const handleClick = () => {\n const newSelectedValue = !isChecked;\n onChange(newSelectedValue ? 'Yes' : 'No');\n };\n\n return (\n \n );\n};\n\nCheckbox.propTypes = {\n value: oneOfType([string, bool]),\n onChange: func,\n children: node\n};\n\nexport default Checkbox;\n","import React from 'react';\nimport { string, func } from 'prop-types';\nimport { t } from '@jotforminc/translation';\nimport Checkbox from '../../Checkbox';\n\nfunction ReassignNotificationWizard({ value, onChange, ...props }) {\n const handleChange = val => onChange(val);\n return (\n \n {t('Send me a notification email when the task is reassigned.')}\n \n );\n}\n\nReassignNotificationWizard.propTypes = {\n value: string,\n onChange: func\n};\n\nReassignNotificationWizard.defaultProps = {\n value: 'No',\n onChange: f => f\n};\n\nexport default ReassignNotificationWizard;\n","import React, { useEffect, useRef, useState } from 'react';\nimport { func, shape, string } from 'prop-types';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { t } from '@jotforminc/translation';\nimport { EMAIL_TEMPLATE_TYPES } from '@jotforminc/email-wizards';\nimport { CUSTOMIZE_REMINDER_WIZARD, REMIND_AFTER_WIZARD, TOGGLE } from '../../constants/componentTypes';\nimport { LabelHorizontal, LabelVertical } from '../WizardLabel';\nimport { isYes } from '../../utils';\nimport FormWizard from '../FormWizard';\nimport { useRealUnmount } from '../../utils/hooks/useRealUnmount';\nimport WizardCommonError from '../WizardCommonError';\nimport { ApprovalEmailSubTypes } from '../../constants/emailSubTypes';\nimport { getIsHIPAA, getSelectedElementInfo } from '../../store/selectors';\nimport { setElementWithEmail } from '../../actionCreators';\nimport { CREATE_REMINDER_EMAIL, DEFAULT_FEATURES } from '../../constants/features';\n\nfunction SendReminderWizard({\n value: reminder, onChange, emailType, emailSubType\n}) {\n const remindAfterRef = useRef();\n const customReminderRef = useRef();\n const dispatch = useDispatch();\n const isHIPAA = useSelector(getIsHIPAA);\n const element = useSelector(getSelectedElementInfo);\n const reminderEmailCreate = DEFAULT_FEATURES[CREATE_REMINDER_EMAIL];\n const [wizardsValid, setWizardsValid] = useState(true);\n\n const validateWizards = () => {\n const isRemindAfterValid = remindAfterRef?.current ? remindAfterRef.current.validateWizard() : true;\n setWizardsValid(isRemindAfterValid);\n };\n\n const handleChange = valueList => {\n const {\n sendReminder: sendReminderValue,\n remindAfter: remindAfterValues\n } = valueList;\n\n onChange({\n sendReminder: sendReminderValue,\n remindAfter: remindAfterValues\n });\n };\n\n useRealUnmount(() => {\n if (!wizardsValid) {\n handleChange({ ...reminder, sendReminder: 'No' });\n }\n });\n\n useEffect(() => {\n validateWizards();\n });\n\n const getDescription = () => {\n return (\n <>\n {t('Send periodic emails to remind people to complete their tasks. The reminder emails limited to 3 rounds.')}\n {!wizardsValid ? : null}\n \n );\n };\n\n const formWizardOnChange = valueList => {\n const shouldCreateReminderEmail = !element?.reminder?.customizeReminder?.customReminderEmail?.content && valueList?.sendReminder && isYes(valueList?.sendReminder);\n if (shouldCreateReminderEmail) {\n const preparedReminderProps = {\n sendReminder: valueList?.sendReminder || element?.reminder?.sendReminder,\n remindAfter: {\n afterAmount: valueList?.remindAfter?.afterAmount || element?.reminder?.remindAfter?.afterAmount,\n afterUnit: valueList?.remindAfter?.afterUnit || element?.reminder?.remindAfter.afterUnit\n },\n customizeReminder: {\n sendCustomizedReminder: valueList?.customizeReminder?.sendCustomizedReminder || element?.reminder?.customizeReminder?.sendCustomizedReminder,\n customReminderEmail: valueList?.customizeReminder?.customReminderEmail || element?.reminder?.customizeReminder?.customReminderEmail\n }\n };\n dispatch(setElementWithEmail({\n element, emailType, emailSubType, preparedProps: preparedReminderProps, isHIPAA\n }));\n return;\n }\n onChange(valueList);\n };\n\n return (\n (reminderEmailCreate ? formWizardOnChange(valueList) : onChange(valueList))}\n elementList={{\n sendReminder: {\n type: TOGGLE,\n label: t('Send Reminder Emails'),\n LabelRenderer: LabelVertical,\n description: getDescription()\n },\n remindAfter: {\n condition: () => isYes(reminder.sendReminder),\n label: t('Remind After'),\n type: REMIND_AFTER_WIZARD,\n LabelRenderer: LabelHorizontal,\n ref: remindAfterRef\n },\n customizeReminder: {\n condition: () => isYes(reminder.sendReminder),\n type: CUSTOMIZE_REMINDER_WIZARD,\n LabelRenderer: LabelVertical,\n componentProps: {\n emailType,\n emailSubType\n },\n ref: customReminderRef\n }\n }}\n />\n );\n}\n\nSendReminderWizard.propTypes = {\n value: shape({\n sendReminder: string,\n remindAfter: shape({})\n }),\n onChange: func,\n emailType: string,\n emailSubType: string\n};\n\nSendReminderWizard.defaultProps = {\n value: {},\n onChange: f => f,\n emailSubType: ApprovalEmailSubTypes.APPROVAL_REMINDER,\n emailType: EMAIL_TEMPLATE_TYPES.WORKFLOW_APPROVE_START\n};\n\nexport default SendReminderWizard;\n","import React from 'react';\n\nimport { TextInput as UIKitTextInput } from '@jotforminc/uikit';\n\nfunction NumberInput(props) {\n return (\n \n );\n}\n\nexport default NumberInput;\n","import React, { forwardRef, useImperativeHandle, useState } from 'react';\nimport {\n func, shape, string\n} from 'prop-types';\nimport { t } from '@jotforminc/translation';\n\nimport { Hooks } from '@jotforminc/uikit';\nimport NumberInput from '../../NumberInput';\nimport Dropdown from '../../Dropdown';\n\nconst RemindAfterWizard = forwardRef(({\n value: remindAfter = {}, onChange = f => f\n}, ref) => {\n const { afterAmount, afterUnit } = remindAfter;\n\n const isAfterAmountValid = val => !!(val && val > 0 && Number.isInteger(val / 1));\n const [afterAmountVal, setAfterAmountVal] = useState(afterAmount);\n const [afterAmountValid, setAfterAmountValid] = useState(isAfterAmountValid(afterAmountVal));\n\n const [afterUnitVal, setAfterUnitVal] = useState(afterUnit);\n\n const validateWizard = () => {\n return isAfterAmountValid(afterAmountVal);\n };\n\n useImperativeHandle(ref, () => {\n return ({\n validateWizard\n });\n });\n\n Hooks.useEffectIgnoreFirst(() => {\n onChange({\n afterAmount: afterAmountVal,\n afterUnit: afterUnitVal\n });\n }, [afterAmountVal, afterUnitVal]);\n\n Hooks.useEffectIgnoreFirst(() => {\n setAfterAmountValid(isAfterAmountValid(afterAmountVal));\n }, [afterAmount, afterAmountVal]);\n\n return (\n
    \n
    \n {\n const { value } = e.target;\n setAfterAmountVal(value);\n setAfterAmountValid(isAfterAmountValid(value));\n }}\n />\n {!afterAmountValid ?
    {t('Please specify a positive integer')}
    : null}\n
    \n
    \n setAfterUnitVal(value)}\n />\n
    \n
    \n );\n});\nRemindAfterWizard.propTypes = {\n value: shape({\n afterAmount: string,\n afterUnit: string\n }),\n onChange: func\n};\n\nexport default RemindAfterWizard;\n","import React from 'react';\nimport { func, shape, string } from 'prop-types';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { t } from '@jotforminc/translation';\nimport { EMAIL_TEMPLATE_TYPES } from '@jotforminc/email-wizards';\n\nimport FormWizard from '../../FormWizard';\nimport { BUTTON } from '../../../constants/componentTypes';\nimport { LabelVertical } from '../../WizardLabel';\nimport { openEmailWizardsModal } from '../../../actionCreators';\nimport { getSelectedElementID } from '../../../store/selectors';\nimport { ApprovalEmailSubTypes } from '../../../constants/emailSubTypes';\n\nconst CustomizeReminderWizard = ({\n value: customizeReminder, onChange, emailType, emailSubType\n}) => {\n const dispatch = useDispatch();\n const elementID = useSelector(getSelectedElementID);\n return (\n onChange(valueList)}\n elementList={{\n sendCustomizedReminder: {\n type: BUTTON,\n componentProps: {\n className: 'formWizard-button',\n children: t('EDIT'),\n onClick: () => dispatch(openEmailWizardsModal({\n elementID,\n emailSubType,\n emailType\n }))\n },\n label: t('Reminder Email'),\n LabelRenderer: LabelVertical,\n description: t('Send a custom reminder email.')\n }\n }}\n />\n );\n};\n\nCustomizeReminderWizard.propTypes = {\n value: shape({\n sendCustomizedReminder: string\n }),\n onChange: func,\n emailSubType: string,\n emailType: string\n};\n\nCustomizeReminderWizard.defaultProps = {\n value: {},\n onChange: f => f,\n emailSubType: ApprovalEmailSubTypes.APPROVAL_REMINDER,\n emailType: EMAIL_TEMPLATE_TYPES.WORKFLOW_APPROVE_START\n};\n\nexport default CustomizeReminderWizard;\n","import React, { useEffect } from 'react';\nimport {\n bool, func, shape, string\n} from 'prop-types';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { t } from '@jotforminc/translation';\nimport { EMAIL_TEMPLATE_TYPES } from '@jotforminc/email-wizards';\nimport { BUTTON } from '../../constants/componentTypes';\nimport { LabelVertical } from '../WizardLabel';\nimport FormWizard from '../FormWizard';\nimport { openEmailWizardsModal } from '../../actionCreators';\nimport { getSelectedElementID } from '../../store/selectors';\nimport { getElementEmailWizardTemplate } from '../../constants/emailWizardTemplates';\nimport { elementTypes } from '../../constants/elementTypes';\nimport { isPDFPasswordRequiredOnHIPAA } from '../../constants/helper';\nimport { DEFAULT_FEATURES, SEND_NOTIFICATION } from '../../constants/features';\n\nconst ElementEmailWizard = ({\n value, wizardKey, emailType, emailSubType, label, description, disableDescription,\n onChange, isPasswordCheck\n}) => {\n const dispatch = useDispatch();\n const isApprovalEmail = emailType === EMAIL_TEMPLATE_TYPES.WORKFLOW_APPROVE_START;\n const isDisableNotificationFeatureEnable = DEFAULT_FEATURES[SEND_NOTIFICATION] && isApprovalEmail;\n\n useEffect(() => {\n if (isPasswordCheck && isPDFPasswordRequiredOnHIPAA() && value?.email?.passwordEnabled && value?.email?.passwordEnabled === '0') {\n onChange({ ...value, email: { ...value?.email, passwordEnabled: '1' } });\n }\n }, [value]);\n\n const elementID = useSelector(getSelectedElementID);\n return (\n {\n onChange(valueList);\n }}\n elementList={{\n [wizardKey]: {\n type: BUTTON,\n componentProps: {\n className: 'formWizard-button',\n children: isDisableNotificationFeatureEnable ? t('EDIT EMAIL') : t('EDIT'),\n ariaLabel: isDisableNotificationFeatureEnable ? t('EDIT EMAIL') : t('EDIT'),\n onClick: () => dispatch(openEmailWizardsModal({\n elementID,\n emailSubType,\n emailType\n }))\n },\n ...!disableDescription && { label },\n LabelRenderer: LabelVertical,\n ...!disableDescription && { description }\n }\n }}\n />\n );\n};\n\nElementEmailWizard.propTypes = {\n value: shape({}),\n wizardKey: string,\n emailType: string,\n emailSubType: string,\n label: string,\n description: string,\n onChange: func,\n isPasswordCheck: bool,\n disableDescription: bool\n};\n\nElementEmailWizard.defaultProps = {\n value: {},\n ...getElementEmailWizardTemplate(elementTypes.APPROVAL),\n emailSubType: '',\n onChange: f => f,\n isPasswordCheck: false,\n disableDescription: false\n};\n\nexport default ElementEmailWizard;\n","import { useState } from 'react';\nimport moment from 'moment-timezone';\n\nconst useDate = (initialDate, dateFormat) => {\n const baseDate = initialDate === '' || !initialDate ? new Date() : initialDate;\n return useState(moment(baseDate, dateFormat));\n};\n\nexport default useDate;\n","import React, { forwardRef, useImperativeHandle, useState } from 'react';\nimport { shape, func, string } from 'prop-types';\nimport moment from 'moment-timezone';\nimport { Hooks } from '@jotforminc/uikit';\nimport StyledDatePicker from '@jotforminc/date-picker';\nimport { t } from '@jotforminc/translation';\nimport { Radio } from '@jotforminc/magnet';\nimport { useDebounce } from '@jotforminc/hooks';\n\nimport Dropdown from '../Dropdown';\nimport NumberInput from '../NumberInput';\n\nimport { isYes } from '../../utils';\nimport useDate from '../../utils/hooks/useDate';\n\nimport { CUSTOM_DATE_FORMAT } from '../../constants/date';\n\nconst DueDateWizard = forwardRef(({\n value: {\n executeAfterTime,\n afterAmount,\n afterUnit,\n customDate\n } = {},\n onChange,\n intervalOptionLabel = 'Escalate after'\n}, ref) => {\n const isExecuteAfterTime = () => {\n return isYes(executeAfterTime) ? 'executeAfterTime' : 'executeOnCustomDate';\n };\n\n const debouncedChange = useDebounce(onChange, 300);\n const isAfterAmountValid = val => !!(val && val > 0 && Number.isInteger(val / 1));\n const isCustomDateValid = val => !!(val && val.isValid && moment().diff(val, 'day') <= 0);\n\n const [dueWhenOption, setDueWhenOption] = useState(isExecuteAfterTime());\n const isDueAfterTimeSelected = dueWhenOption === 'executeAfterTime';\n\n const [afterAmountVal, setAfterAmountVal] = useState(afterAmount);\n const [afterAmountValid, setAfterAmountValid] = useState(isAfterAmountValid(afterAmountVal));\n const [afterUnitVal, setAfterUnitVal] = useState(afterUnit);\n\n const [customDateVal, setCustomDateVal] = useDate(customDate, CUSTOM_DATE_FORMAT);\n const [customDateValid, setCustomDateValid] = useState(isCustomDateValid(customDateVal));\n\n const validateWizard = () => {\n if (isDueAfterTimeSelected) {\n return isAfterAmountValid(afterAmountVal);\n }\n return isCustomDateValid(customDateVal);\n };\n\n const handleDateSelection = date => {\n if (!date) {\n return;\n }\n const dateToSet = minDate < date ? date : minDate;\n setCustomDateVal(moment(dateToSet, CUSTOM_DATE_FORMAT));\n };\n\n useImperativeHandle(ref, () => {\n return ({\n validateWizard\n });\n });\n\n Hooks.useEffectIgnoreFirst(() => {\n debouncedChange({\n executeAfterTime: isDueAfterTimeSelected ? 'Yes' : 'No',\n afterAmount: afterAmountVal,\n afterUnit: afterUnitVal,\n executeOnCustomDate: isDueAfterTimeSelected ? 'No' : 'Yes',\n customDate: isCustomDateValid(customDateVal) ? customDateVal.format(CUSTOM_DATE_FORMAT) : null\n });\n }, [dueWhenOption, afterAmountVal, afterUnitVal, customDateVal]);\n\n Hooks.useEffectIgnoreFirst(() => {\n setAfterAmountValid(isAfterAmountValid(afterAmountVal));\n }, [afterAmount, afterAmountVal]);\n\n Hooks.useEffectIgnoreFirst(() => {\n setCustomDateValid(isCustomDateValid(customDateVal));\n }, [customDate, customDateVal]);\n\n const minDate = moment(new Date());\n\n return (\n
    \n
    \n
    \n setDueWhenOption('executeAfterTime')}\n theme=\"dark\"\n />\n {isDueAfterTimeSelected\n ? (\n
    \n
    \n {\n const { value } = e.target;\n setAfterAmountVal(value);\n setAfterAmountValid(isAfterAmountValid(value));\n }}\n />\n {!afterAmountValid ?
    {t('Please specify a positive integer')}
    : null}\n
    \n
    \n setAfterUnitVal(value)}\n />\n
    \n
    \n ) : null}\n
    \n
    \n
    \n
    \n setDueWhenOption('executeOnCustomDate')}\n theme=\"dark\"\n />\n {!isDueAfterTimeSelected ? (\n
    \n \n {!customDateValid ? {t('Please pick a valid date')} : ''}\n
    \n ) : null}\n
    \n
    \n
    \n );\n});\n\nDueDateWizard.propTypes = {\n value: shape({\n executeAfterTime: string,\n afterAmount: string,\n afterUnit: string,\n executeOnCustomDate: string,\n customDate: string\n }),\n onChange: func.isRequired,\n intervalOptionLabel: string\n};\n\nexport default DueDateWizard;\n","export const CUSTOM_DATE_FORMAT = 'LL';\n","import React, { useEffect, useRef, useState } from 'react';\nimport { func, shape, string } from 'prop-types';\n\nimport { t } from '@jotforminc/translation';\nimport { isYes } from '../../utils';\nimport FormWizard from '../FormWizard';\nimport { LabelHorizontal, LabelVertical } from '../WizardLabel';\nimport { DUE_DATE_WIZARD, TOGGLE } from '../../constants/componentTypes';\nimport { useRealUnmount } from '../../utils/hooks/useRealUnmount';\nimport WizardCommonError from '../WizardCommonError';\n\nfunction ExpirationWizard({ value: expiration, onChange }) {\n const { expire } = expiration;\n\n const executeWhenRef = useRef();\n\n const [wizardsValid, setWizardsValid] = useState(true);\n\n const validateWizards = () => {\n const executeWhenValid = executeWhenRef?.current ? executeWhenRef.current.validateWizard() : true;\n setWizardsValid(executeWhenValid);\n };\n\n const handleChange = valueList => {\n const {\n expire: expireValue,\n executeWhen: executeWhenValues,\n escalateTask: escalateTaskValues\n } = valueList;\n\n onChange({\n expire: expireValue,\n executeWhen: executeWhenValues,\n escalateTask: escalateTaskValues\n });\n };\n\n useRealUnmount(() => {\n if (!wizardsValid) {\n handleChange({ ...expiration, expire: 'No' });\n }\n });\n\n useEffect(() => {\n validateWizards();\n });\n\n const getDescription = () => {\n return (\n <>\n {t('Set a date for the task to expire.')}\n {!wizardsValid ? : null}\n \n );\n };\n\n return (\n isYes(expire),\n type: DUE_DATE_WIZARD,\n label: t('Due Date for Expiration'),\n componentProps: { intervalOptionLabel: 'Expire After' },\n LabelRenderer: LabelHorizontal,\n ref: executeWhenRef\n }\n }}\n />\n );\n}\n\nExpirationWizard.propTypes = {\n value: shape({\n expire: string,\n executeWhen: shape({}),\n escalateTask: shape({})\n }),\n onChange: func.isRequired\n};\n\nExpirationWizard.defaultProps = {\n value: {}\n};\n\nexport default ExpirationWizard;\n","import React, { useEffect, useRef, useState } from 'react';\nimport { func, shape, string } from 'prop-types';\n\nimport { t } from '@jotforminc/translation';\nimport { isYes } from '../../utils';\nimport FormWizard from '../FormWizard';\nimport { LabelHorizontal, LabelVertical } from '../WizardLabel';\nimport {\n DUE_DATE_WIZARD, TOGGLE, AUTO_COMPLETE_OUTCOME_WIZARD\n} from '../../constants/componentTypes';\nimport { useRealUnmount } from '../../utils/hooks/useRealUnmount';\nimport WizardCommonError from '../WizardCommonError';\n\nfunction AutoFinishTaskWizard({ value: autoFinishTaskDetails = {}, onChange }) {\n const { activated } = autoFinishTaskDetails;\n\n const executeWhenRef = useRef();\n const autoFinishTaskRef = useRef();\n\n const [wizardsValid, setWizardsValid] = useState(true);\n\n const validateWizards = () => {\n const executeWhenValid = executeWhenRef?.current ? executeWhenRef.current.validateWizard() : true;\n const autoFinishTaskValid = autoFinishTaskRef?.current ? autoFinishTaskRef.current.validateWizard() : true;\n setWizardsValid(executeWhenValid && autoFinishTaskValid);\n };\n\n const handleChange = valueList => {\n const {\n activated: activatedValue,\n executeWhen: executeWhenValues,\n autoFinishOutcomeID: autoFinishTaskValues\n } = valueList;\n\n onChange({\n activated: activatedValue,\n executeWhen: executeWhenValues,\n autoFinishOutcomeID: autoFinishTaskValues\n });\n };\n\n useRealUnmount(() => {\n if (!wizardsValid) {\n handleChange({ ...autoFinishTaskDetails, activated: 'No' });\n }\n });\n\n useEffect(() => {\n validateWizards();\n });\n\n const getDescription = () => {\n return (\n <>\n {t('After the specified time period, automatically finish the task with the selected outcome.')}\n {!wizardsValid ? : null}\n \n );\n };\n\n return (\n isYes(activated),\n type: DUE_DATE_WIZARD,\n label: t('Due Date for Autofinish'),\n LabelRenderer: LabelHorizontal,\n componentProps: { intervalOptionLabel: t('Autofinish After') },\n ref: executeWhenRef\n },\n autoFinishOutcomeID: {\n condition: () => isYes(activated),\n type: AUTO_COMPLETE_OUTCOME_WIZARD,\n LabelRenderer: LabelHorizontal,\n ref: autoFinishTaskRef\n }\n }}\n />\n );\n}\n\nAutoFinishTaskWizard.propTypes = {\n value: shape({\n activated: string,\n executeWhen: shape({}),\n autoFinishOutcomeID: ''\n }),\n onChange: func.isRequired\n};\n\nexport default AutoFinishTaskWizard;\n","import React, {\n forwardRef, useEffect, useImperativeHandle, useRef, useState\n} from 'react';\nimport {\n func, shape, string\n} from 'prop-types';\nimport { useSelector } from 'react-redux';\nimport { t } from '@jotforminc/translation';\nimport { ColoredBar, ColoredBarDropdown } from '@jotforminc/colored-bar';\nimport { Hooks } from '@jotforminc/uikit';\nimport { getOutcomesByElementID, getSelectedElementID } from '../../store/selectors';\n\nconst AutoFinishOutcomeSelectionWizard = forwardRef(({\n value: autoFinishOutcomeID = {}, onChange\n}, ref) => {\n const ownerElementID = useSelector(getSelectedElementID);\n const outcomes = useSelector(getOutcomesByElementID(ownerElementID));\n const makeOption = ({ id, ...rest }) => ({ value: id, id, ...rest });\n const outcomeItems = outcomes\n .map(makeOption);\n const selectedOutcome = outcomeItems.length ? (outcomeItems.find(({ value }) => value === parseInt(autoFinishOutcomeID, 10))) : null;\n const [outcomeVal, setOutcomeVal] = useState(selectedOutcome?.value);\n const barRef = useRef();\n const containerRef = useRef();\n const [isDropdownVisible, setDropdownVisible] = Hooks.useClickOutsideState(false, [barRef, containerRef]);\n const [autocompleteValid, setAutocompleteValid] = useState(true);\n const disabledOptionList = [];\n // outcomes.filter(({ linkID }) => !linkID) .map(({ id }) => id);\n const autocompleteTaskComp = outcomeItems.length ? (\n <>\n
    {t('Select default outcome to complete the task')}
    \n setDropdownVisible(!isDropdownVisible)}\n canChangeValue={false}\n canChangeColor={false}\n ref={barRef}\n key={Math.random()}\n canRemove={false}\n />\n
    \n ({ id, value: text, color: buttonColor }))}\n selectedOption={selectedOutcome?.id}\n onItemClicked={({ id }) => {\n if (!disabledOptionList.includes(id)) {\n setDropdownVisible(false);\n setOutcomeVal(id);\n }\n }}\n isVisible={isDropdownVisible}\n disabledOptionList={disabledOptionList}\n />\n
    \n {!autocompleteValid ?
    {t('Select an outcome')}
    : null}\n \n ) :
    {t('Approval element should have at least one defined outcome')}
    ;\n\n const isAutoCompleteValid = () => outcomeItems.length > 0 && outcomeVal;\n\n const validateWizard = () => {\n return isAutoCompleteValid();\n };\n\n useImperativeHandle(ref, () => {\n return ({\n validateWizard\n });\n });\n\n Hooks.useEffectIgnoreFirst(() => {\n onChange(\n outcomeVal ? outcomeVal.toString(10) : ''\n );\n }, [outcomeVal]);\n\n useEffect(() => {\n setAutocompleteValid(isAutoCompleteValid());\n }, [outcomes, outcomeVal]);\n\n return (\n <>\n {!outcomeVal && (\n
    \n {t('Please select an outcome.')}\n
    \n )}\n
    \n
    \n
    \n {autocompleteTaskComp}\n
    \n
    \n
    \n \n );\n});\n\nAutoFinishOutcomeSelectionWizard.propTypes = {\n value: shape({ autoFinishOutcomeID: string }),\n onChange: func.isRequired\n};\n\nexport default AutoFinishOutcomeSelectionWizard;\n","import React from 'react';\nimport {\n string, bool, func, arrayOf, shape\n} from 'prop-types';\nimport { Radio } from '@jotforminc/magnet';\n\nconst OptionGroup = props => {\n const {\n options,\n onChange,\n value: currentValue,\n disabled: disabledByProps\n } = props;\n\n return (\n
    \n {options.map(option => {\n const {\n text: label,\n description,\n value,\n disabled\n } = option;\n\n return (\n
    \n \n
    \n );\n })}\n
    \n );\n};\n\nOptionGroup.propTypes = {\n options: arrayOf(shape({\n text: string,\n description: string,\n value: bool,\n disabled: bool\n })).isRequired,\n value: string,\n disabled: bool,\n onChange: func\n};\n\nOptionGroup.defaultProps = {\n value: undefined,\n disabled: undefined,\n onChange: f => f\n};\n\nexport default OptionGroup;\n","import React, { useState } from 'react';\nimport {\n func, shape, oneOfType, string\n} from 'prop-types';\nimport TagInput from '@jotforminc/tag-input';\nimport { v4 as uuid } from 'uuid';\nimport { useSelector } from 'react-redux';\nimport { getAllRelatedFormQuestionsPrefixed, getColoredFormArray } from '../../store/selectors';\nimport { sanitizeTextBeforeSet } from '../../utils';\n\nconst MixedTagInput = ({\n value, onChange, defaultValue, ...rest\n}) => {\n const [componentKey] = useState(uuid());\n const questions = useSelector(getAllRelatedFormQuestionsPrefixed);\n const formArray = useSelector(getColoredFormArray);\n const handleChange = newValue => onChange(sanitizeTextBeforeSet(newValue));\n\n return (\n {\n onChange(e.target.value);\n }}\n settings={{ mode: 'mix' }}\n formArray={formArray}\n useMultipleForms={true}\n {...rest}\n />\n );\n};\n\nMixedTagInput.propTypes = {\n onChange: func.isRequired,\n onBlur: func,\n value: oneOfType([shape({}), string]).isRequired,\n defaultValue: string\n};\n\nMixedTagInput.defaultProps = {\n onBlur: f => f,\n defaultValue: null\n};\n\nexport default MixedTagInput;\n","/* eslint-disable react/prop-types */\nimport {\n arrayOf, elementType, func, number, oneOf, oneOfType, shape, string\n} from 'prop-types';\nimport React, {\n forwardRef,\n useMemo, useState\n} from 'react';\nimport { SortableElement } from 'react-sortable-hoc';\n// import isEqual from 'lodash/isEqual';\nimport { SmartList } from '@jotforminc/smart-list';\nimport { FormPickerCheckbox as CheckBox } from '@jotforminc/resource-picker';\nimport { Input } from '@jotforminc/form-wizard';\nimport { IconGridDotsVertical, IconXmarkSm } from '@jotforminc/svg-icons';\n\nimport './styles/SortableChecklist.scss';\n\nconst ChecklistHandle = () => {\n return (\n
    \n \n
    \n );\n};\n\nconst DefaultItemRenderer = ({ option, isSelected, ...rest }) => {\n const text = option?.text;\n return (\n
    \n \n
    \n \n
    \n
    \n {text}\n
    \n
    \n );\n};\n\nconst DefaultEditableItemRenderer = ({\n onChange: propOnChange, onBlur: propOnBlur, onRemove: propOnRemove, ...props\n}) => {\n const { option } = props;\n const id = option?.id;\n const optionValue = option?.value;\n const optionText = option?.text;\n const [text, setText] = useState(optionText);\n const onBlur = () => {\n if (text !== option.text) {\n propOnBlur({ id, value: optionValue, text });\n }\n };\n const onRemove = () => {\n propOnRemove({ id, value: optionValue });\n };\n return (\n
    \n \n e.stopPropagation()}\n onChange={v => setText(v)}\n onKeyDown={e => {\n if (e.keyCode === 13) {\n e.target.blur();\n }\n }}\n id={id}\n className=\"jfSortableChecklist-item-column forInput\"\n onBlur={onBlur}\n defaultValue={text}\n {...props}\n />\n \n \n \n
    \n );\n};\n\nconst OptionContainerRenderer = props => {\n return
  • ;\n};\nconst ContainerRenderer = forwardRef(({ children }, ref) =>
      {children}
    );\nconst SortableOptionContainerRenderer = SortableElement(OptionContainerRenderer);\n\nconst Checklist = ({\n options, selectedItems, mode,\n onSortEnd, onItemChange, onItemBlur, onSelectionChange, onItemRemove,\n // onChange, onTaskFinish, onTaskUnfinish, TODO: Add these props\n ItemRenderer, EditItemRenderer\n}) => {\n const isSortable = mode === 'edit';\n const isMultiSelect = mode === 'check';\n\n const EditItem = useMemo(() => props => {\n return (\n \n );\n }, [onItemBlur]);\n\n return (\n
    \n \n
    \n );\n};\n\nconst IdentifierType = oneOfType([string, number]);\n\nChecklist.propTypes = {\n options: arrayOf(shape({\n\n })),\n selectedItems: arrayOf(IdentifierType),\n mode: oneOf(['edit', 'check']),\n onSortEnd: func,\n // onChange: func,\n // onTaskFinish: func,\n // onTaskUnfinish: func,\n onItemChange: func,\n onItemBlur: func,\n onSelectionChange: func,\n onItemRemove: func,\n ItemRenderer: elementType,\n EditItemRenderer: elementType\n};\n\nChecklist.defaultProps = {\n options: [],\n selectedItems: [],\n mode: 'check',\n onSortEnd: f => f,\n // onChange: f => f,\n // onTaskFinish: f => f,\n // onTaskUnfinish: f => f,\n onItemChange: f => f,\n onItemBlur: f => f,\n onSelectionChange: f => f,\n onItemRemove: f => f,\n ItemRenderer: DefaultItemRenderer,\n EditItemRenderer: DefaultEditableItemRenderer\n};\n\nexport default Checklist;\n","import React, { useEffect, useState } from 'react';\nimport { Checklist } from '@jotforminc/jotform-common';\nimport { arrayMove } from '@jotforminc/utils';\nimport { v4 as uuid } from 'uuid';\nimport isEqual from 'lodash/isEqual';\nimport { arrayOf, func, shape } from 'prop-types';\n\nconst generateNewItem = () => {\n const id = uuid();\n return {\n id,\n value: id,\n text: ''\n };\n};\n\nconst ExtendableChecklist = ({ value: propOptions = [], onChange = f => f }) => {\n const [options, setOptions] = useState(propOptions);\n const [newItem, setNewItem] = useState(null);\n\n const onAddClicked = () => {\n const item = generateNewItem();\n setNewItem(item);\n setOptions([...options, item]);\n };\n\n const itemChanged = item => {\n if (item.id === newItem?.id) {\n setNewItem(item);\n }\n const newOptions = options.map(option => {\n if (option.value === item.value) {\n return { ...option, ...item };\n }\n return option;\n });\n setOptions(newOptions);\n };\n\n useEffect(() => {\n if (!isEqual(propOptions, options)) {\n setOptions(propOptions);\n }\n }, [propOptions]);\n\n useEffect(() => {\n if (onChange) {\n onChange(options || []);\n }\n }, [options]);\n\n return (\n <>\n {\n const orderedItems = arrayMove(options, oldIndex, newIndex).map((item, index) => ({ ...item, index }));\n setOptions(orderedItems);\n }}\n />\n \n \n );\n};\n\nExtendableChecklist.propTypes = {\n value: arrayOf(shape({})),\n onChange: func\n};\n\nexport default ExtendableChecklist;\n","import React from 'react';\nimport { t } from '@jotforminc/translation';\nimport {\n arrayOf, func, shape, string\n} from 'prop-types';\nimport { EXTENDABLE_CHECKLIST, TOGGLE } from '../../constants/componentTypes';\nimport FormWizard from '../FormWizard';\nimport { LabelVertical } from '../WizardLabel';\nimport { isYes } from '../../utils';\n\nfunction ChecklistWizard({ value, onChange }) {\n console.log(value);\n const { addChecklist } = value || {};\n return (\n onChange(valueList)}\n elementList={{\n addChecklist: {\n type: TOGGLE,\n label: t('Add Checklist'),\n LabelRenderer: LabelVertical,\n description: t('Create a checklist to assign multiple tasks to users.')\n },\n list: {\n type: EXTENDABLE_CHECKLIST,\n condition: () => isYes(addChecklist)\n }\n }}\n />\n );\n}\n\nChecklistWizard.propTypes = {\n value: shape({\n addChecklist: string,\n list: arrayOf(shape({}))\n }),\n onChange: func\n};\n\nChecklistWizard.defaultProps = {\n value: {},\n onChange: f => f\n};\n\nexport default ChecklistWizard;\n","import React from 'react';\nimport { string, func } from 'prop-types';\nimport Checkbox from '../Checkbox';\n\nfunction CheckBoxWithDefaultValue({\n value = 'Yes',\n defaultValue = 'Yes',\n onChange = f => f,\n ...props\n}) {\n const handleChange = val => onChange(val);\n const checked = value || defaultValue;\n return (\n \n );\n}\n\nCheckBoxWithDefaultValue.propTypes = {\n value: string,\n defaultValue: string,\n onChange: func\n};\n\nexport default CheckBoxWithDefaultValue;\n","import React from 'react';\nimport { func, arrayOf } from 'prop-types';\nimport { t } from '@jotforminc/translation';\n\nimport { useDispatch, useSelector } from 'react-redux';\nimport { outcomeProps } from '../../constants/propTypes';\nimport { getSelectedElementID, getOutcomesByElementID } from '../../store/selectors';\nimport { updateElementOutcome } from '../../actionCreators';\nimport Checkbox from '../Checkbox';\n\nfunction OutcomesCheckboxWizard({\n value, onChange, ...props\n}) {\n const dispatch = useDispatch();\n const ownerElementID = useSelector(getSelectedElementID);\n const outcomes = useSelector(getOutcomesByElementID(ownerElementID));\n const handleChange = (val, outcomeID) => {\n const key = 'outcomeSign';\n dispatch(updateElementOutcome({ elementID: ownerElementID, outcomeID: outcomeID, data: { [key]: (val || '').slice(0, 75) } }));\n };\n\n const isAnyOutcomeChecked = React.useMemo(() => (outcomes || []).find(singleOutcome => singleOutcome.outcomeSign === 'Yes'), [outcomes]);\n const checkBoxRenderer = () => outcomes.map(({\n text, outcomeSign, outcomeID, type\n }) => (\n handleChange(val, outcomeID)}\n size=\"small\"\n {...props}\n id={`outcome-${outcomeID}`}\n ariaLabel={t(text)}\n >\n {text }\n \n ));\n return (\n <>\n {checkBoxRenderer()}\n {!isAnyOutcomeChecked ?
    {t('You need to select at least one outcome to collect signatures.')}
    : null}\n \n\n );\n}\n\nOutcomesCheckboxWizard.propTypes = {\n value: arrayOf(outcomeProps),\n onChange: func\n};\n\nOutcomesCheckboxWizard.defaultProps = {\n value: arrayOf(outcomeProps),\n onChange: f => f\n};\n\nexport default OutcomesCheckboxWizard;\n","import React, { useMemo, useState } from 'react';\nimport { PDFSelectList } from '@jotforminc/email-wizards';\nimport { useSelector } from 'react-redux';\nimport { arrayOf, func, shape } from 'prop-types';\nimport { t } from '@jotforminc/translation';\n\nimport { getAvailablePDFs, getForm } from '../../store/selectors';\nimport { getPDFTemplateOptions } from '../../utils/emailUtils';\n\nexport default function PDFSelectListWrapper({\n valueList, onChange, ...rest\n}) {\n const availablePDFs = useSelector(getAvailablePDFs);\n const formProperties = useSelector(getForm);\n const { pdfOptions, selectedPDFOptions } = getPDFTemplateOptions(valueList, availablePDFs, formProperties);\n\n const options = useMemo(() => pdfOptions.map(option => {\n if (option.value === '') {\n return { value: '', text: t('Approval Report'), link: `/pdf-editor/${formProperties?.id || ''}` };\n }\n return option;\n }), [pdfOptions]);\n\n const [selectedOptions, setSelectedOptions] = useState(selectedPDFOptions);\n\n const handleChange = values => {\n onChange(values.filter(v => v).join(','));\n setSelectedOptions(values);\n };\n\n return (\n <>\n {selectedOptions?.length === 0 &&
    To send reports you need to select at least one document.
    }\n \n \n );\n}\n\nPDFSelectListWrapper.propTypes = {\n valueList: arrayOf(shape({})).isRequired,\n onChange: func.isRequired\n};\n","import React from 'react';\nimport { Password as CommonPassword } from '@jotforminc/login-flow';\nimport { hasPDFPasswordError } from '@jotforminc/email-wizards';\nimport {\n arrayOf, bool, func, shape\n} from 'prop-types';\nimport { useSelector } from 'react-redux';\nimport { getIsHIPAA } from '../../store/selectors';\n\nexport default function Password(props) {\n const { valueList } = props;\n const { pdfattachment, passwordEnabled, pdfPassword } = valueList;\n const isHIPAA = useSelector(getIsHIPAA);\n\n return (\n ((pdfattachment && (passwordEnabled || isHIPAA) && pdfPassword !== '*jfplaceholder*') ? hasPDFPasswordError(isHIPAA, value) : false)}\n />\n );\n}\n\nPassword.propTypes = {\n debounce: bool,\n valueList: arrayOf(shape({})).isRequired,\n onChange: func\n};\n","import React from 'react';\nimport { t } from '@jotforminc/translation';\nimport { hasPDFPasswordError } from '@jotforminc/email-wizards';\nimport { useSelector } from 'react-redux';\nimport {\n arrayOf, func, shape, string\n} from 'prop-types';\nimport { getIsHIPAA } from '../../store/selectors';\nimport FormWizard from '../FormWizard';\nimport { PASSWORD } from '../../constants/componentTypes';\nimport { isPasswordEnabledElement, isYes } from '../../utils';\n\nexport default function PDFPassword({ valueList, onChange, hipaaPasswordEnable = false }) {\n const isHIPAA = useSelector(getIsHIPAA);\n const { type, subType } = valueList;\n const isPDFPasswordEnabledElement = isPasswordEnabledElement(type, subType);\n const { pdfPassword, pdfattachment, passwordEnabled } = valueList;\n const isPasswordEnabled = isYes(hipaaPasswordEnable) || isYes(passwordEnabled);\n const condition = () => (isPDFPasswordEnabledElement && isPasswordEnabled) || (pdfattachment === '1' && (passwordEnabled === '1' || passwordEnabled === 'Yes' || isHIPAA));\n return (\n ((pdfattachment === '1' && (passwordEnabled === '1' || isHIPAA) && pdfPassword !== '*jfplaceholder*') ? hasPDFPasswordError(isHIPAA, value) : false)\n },\n condition\n }\n }}\n />\n );\n}\n\nPDFPassword.propTypes = {\n valueList: arrayOf(shape({})).isRequired,\n onChange: func.isRequired,\n hipaaPasswordEnable: string\n};\n","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport {\n arrayOf, func, shape, string\n} from 'prop-types';\nimport { hasPDFPasswordError } from '@jotforminc/email-wizards';\nimport { getIsHIPAA } from '../../store/selectors';\nimport Checkbox from '../Checkbox';\n\nexport default function PDFPasswordCheckbox({\n value,\n valueList,\n onChange,\n ...props\n}) {\n const isHIPAA = useSelector(getIsHIPAA);\n const hipaaProps = isHIPAA ? {\n disabled: true,\n checked: true\n } : {};\n const { pdfPassword, pdfattachment, passwordEnabled } = valueList;\n const handleChange = checked => {\n onChange(checked === 'Yes' ? '1' : '0');\n };\n return (\n ((pdfattachment && (passwordEnabled || isHIPAA) && pdfPassword !== '*jfplaceholder*') ? hasPDFPasswordError(isHIPAA, val) : false)}\n />\n );\n}\n\nPDFPasswordCheckbox.propTypes = {\n value: string.isRequired,\n valueList: arrayOf(shape({})).isRequired,\n onChange: func.isRequired\n};\n","/**\n * Get a random ineger\n * @function\n * @param {Number} minimum inclusive\n * @param {Number} maximum exclusive\n */\nexport const getRandomInt = (minimum, maximum) => {\n const min = Math.ceil(minimum);\n const max = Math.floor(maximum);\n return Math.floor(Math.random() * (max - min)) + min;\n};\n\nexport function getShortMonthName(month) {\n const monthNames = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December'\n ];\n return monthNames[month - 1].substring(0, 3);\n}\n","import React, { useMemo } from 'react';\nimport {\n shape,\n string,\n oneOf,\n arrayOf,\n bool\n} from 'prop-types';\nimport classNames from 'classnames';\nimport Dropdown from '@jotforminc/dropdown';\nimport { t } from '@jotforminc/translation';\nimport { Loading } from '@jotforminc/loading';\nimport { Button } from '@jotforminc/magnet';\n\nimport {\n IconProductTablesMono, IconProductFormBuilderColorBorder, IconProductFormCardColorBorder, IconProductSignColorBorder,\n IconEyeFilled, IconPencilToSquare, IconArrowUpRightFromSquareSm, IconProductPaymentFormColorBorder, IconProductPaymentCardFormBorder\n} from '@jotforminc/svg-icons';\nimport './style.scss';\n\nconst resourceIcon = {\n table: ,\n form: ,\n cardform: ,\n document: ,\n paymentForm: ,\n paymentCardForm: \n};\n\nconst ResourcePickerDropdown = ({\n data,\n type,\n isLoading,\n hideIndicatorOnHover,\n withExtraPadding,\n disabledHoverText,\n ...props\n}) => {\n const resourceDetail = ({\n url, type: resourceType, subtext, editLink, viewLink, isDisabled = false, disabledText\n }) => {\n const optionHasDetail = !!url || !!editLink || !!viewLink;\n const hasDisabledText = isDisabled && (!!disabledText || !!disabledHoverText);\n return (\n \n {resourceIcon[resourceType]}\n {t(subtext)}\n {url && (\n \n )}\n {(viewLink || editLink) && (\n
    \n {viewLink && (\n \n )}\n {editLink && (\n \n )}\n
    \n )}\n { hasDisabledText && (\n
    \n {t(disabledText) || t(disabledHoverText)}\n
    \n )}\n
    \n );\n };\n\n const optionListData = useMemo(() => {\n return data.map(option => ({\n text: option.text,\n value: option.value,\n beforeComponent: resourceDetail(option),\n isDisabled: option.isDisabled || false\n }));\n }, [data]);\n\n return isLoading ? (\n
    \n \n
    \n ) : (\n \n );\n};\n\nResourcePickerDropdown.defaultProps = {\n type: 'form',\n isLoading: false,\n hideIndicatorOnHover: false,\n withExtraPadding: false,\n disabledHoverText: ''\n};\n\nResourcePickerDropdown.propTypes = {\n data: arrayOf(shape({\n text: string.isRequired,\n value: string.isRequired,\n type: oneOf(['table', 'form', 'cardform', 'document', 'paymentForm', 'paymentCardForm']).isRequired\n })).isRequired,\n type: oneOf(['table', 'form', 'cardform', 'document', 'paymentForm']),\n isLoading: bool,\n hideIndicatorOnHover: bool,\n withExtraPadding: bool,\n disabledHoverText: string\n};\n\nexport default ResourcePickerDropdown;\n","import { bool, func, string } from 'prop-types';\nimport { useSelector } from 'react-redux';\nimport React, { useMemo, useEffect, useState } from 'react';\nimport { ResourcePickerDropdown, getShortMonthName } from '@jotforminc/jotform-common';\nimport { t } from '@jotforminc/translation';\n\nimport {\n FormSelectors, getSelectedElementFormID, getUserForms\n} from '../../store/selectors';\n\nconst FormPickerWizard = ({\n value, onChange, useWorkflowForms, setPaymentFormFilter\n}) => {\n const [isLoading, setLoading] = useState(true);\n const [selectedForm, setSelectedForm] = useState(value);\n const formsInFlow = useSelector(FormSelectors.getAllUsedForms);\n const forms = useSelector(getUserForms);\n\n const disableHoverTexts = {\n hasAnyWorkflow: 'This form already used in another approval flow.',\n isFormEncrypted: 'Encrypted forms are not supported.'\n };\n\n const formsValue = !useWorkflowForms ? forms : formsInFlow;\n const currentAssignedFormID = useWorkflowForms ? useSelector(getSelectedElementFormID) : null;\n\n useEffect(() => {\n if ([...forms, formsInFlow].length !== 0) {\n setLoading(false);\n }\n }, [forms, formsInFlow]);\n\n const dropdownData = useMemo(() => formsValue\n .filter(({\n id, hasAnyWorkflow, paymentProps, type, formType\n }) => (\n !((currentAssignedFormID === id && useWorkflowForms)\n || (type === 'WORKFLOW' || formType === 'workflowForm')\n || (hasAnyWorkflow && id !== selectedForm)\n || (setPaymentFormFilter ? !paymentProps : false))))\n .map(({\n updated_at: updatedAt, created_at: createdAt, title, id: formID,\n count, type: _type, isFormEncrypted, paymentProps\n }) => {\n let modifiedOn = ' ';\n const type = _type === 'CARD' ? 'cardform' : 'form';\n const submissionCount = t('{submissionCount} submissions.').replace('{submissionCount}', count);\n const lastUpdated = updatedAt || createdAt;\n\n if (lastUpdated) {\n const lastEditDate = lastUpdated.split(' ')[0].split('-');\n const prettyDate = lastEditDate && parseInt(lastEditDate?.[1], 10)\n ? `${getShortMonthName(parseInt(lastEditDate[1], 10))} ${lastEditDate[2]}, ${lastEditDate[0]}`\n : '';\n modifiedOn = t('Updated on {modifyDate}').replace('{modifyDate}', prettyDate);\n }\n const subtext = `${submissionCount} ${modifiedOn}`;\n const shouldDisableOption = selectedForm === formID || isFormEncrypted;\n const disabledText = isFormEncrypted && disableHoverTexts?.isFormEncrypted;\n const paymentFormValue = type === 'cardform' ? 'paymentCardForm' : 'paymentForm';\n return {\n text: title,\n type: paymentProps ? paymentFormValue : type,\n value: formID,\n subtext: subtext,\n viewLink: `/${formID}`,\n editLink: `/build/${formID}`,\n isDisabled: useWorkflowForms ? false : shouldDisableOption,\n disabledText: disabledText\n };\n }),\n [formsValue, selectedForm, formsInFlow, useWorkflowForms]);\n\n const formSelection = formValue => {\n if (onChange) {\n onChange(formValue);\n }\n setSelectedForm(formValue);\n };\n\n useEffect(() => {\n const formIDs = [...(forms || []), ...(formsInFlow || [])].map(form => form?.id);\n // checks if form is no longer available\n if (selectedForm && formIDs.length > 0 && !formIDs.includes(selectedForm)) {\n formSelection('');\n }\n }, [forms]);\n\n return (\n
    \n \n
    \n );\n};\n\nFormPickerWizard.propTypes = {\n value: string,\n useWorkflowForms: bool,\n onChange: func,\n setPaymentFormFilter: bool\n};\n\nFormPickerWizard.defaultProps = {\n value: '',\n onChange: f => f,\n useWorkflowForms: false,\n setPaymentFormFilter: false\n};\n\nexport default FormPickerWizard;\n","import { bool, func, string } from 'prop-types';\nimport React, {\n useMemo, useEffect, useState, useCallback\n} from 'react';\nimport { ResourcePickerDropdown, getShortMonthName } from '@jotforminc/jotform-common';\nimport { t } from '@jotforminc/translation';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { getSelectedElementID, getWorkflowOwner } from '../../store/selectors';\n\nimport { fetchDocuments } from '../../modules/api';\nimport { FETCH_USER_DOCUMENTS, UPDATE_ELEMENT } from '../../store/actionTypes';\n\nconst DocumentPickerWizard = ({\n value = '',\n onChange = f => f,\n useWorkflowForms = false\n}) => {\n const dispatch = useDispatch();\n const [documents, setDocuments] = useState([]);\n const [isLoading, setLoading] = useState(true);\n const [selectedDocument, setSelectedDocument] = useState(value);\n const owner = useSelector(getWorkflowOwner);\n const ownerElementID = useSelector(getSelectedElementID);\n\n const dropdownData = useMemo(() => documents\n .map(({\n modificationTime: updatedAt, creationTime: createdAt, title, id: documentID, formID\n }) => {\n let modifiedOn = ' ';\n const lastUpdated = updatedAt || createdAt;\n const shouldDisableOption = selectedDocument === documentID;\n if (lastUpdated) {\n const lastEditDate = lastUpdated.split(' ')[0].split('-');\n const prettyDate = `${getShortMonthName(parseInt(lastEditDate[1], 10))} ${lastEditDate[2]}, ${lastEditDate[0]}`;\n modifiedOn = t('Updated on {modifyDate}').replace('{modifyDate}', prettyDate);\n }\n const subtext = `${modifiedOn}`;\n return {\n text: title,\n type: 'document',\n value: documentID,\n subtext: subtext,\n isDisabled: shouldDisableOption,\n editLink: `/sign/${formID}`\n };\n }),\n [selectedDocument, documents, useWorkflowForms]);\n\n const loadDocuments = useCallback(async () => {\n try {\n const data = await fetchDocuments(owner);\n dispatch({ type: FETCH_USER_DOCUMENTS.SUCCESS, data: { documents: data } });\n setDocuments(data);\n setLoading(false);\n if (selectedDocument && ownerElementID) {\n const isDocumentDeleted = !(data?.find(({ id }) => id === selectedDocument));\n if (isDocumentDeleted) {\n dispatch({ type: UPDATE_ELEMENT.REQUEST, data: { elementID: ownerElementID, documentID: '', signerMapping: [] } });\n }\n }\n } catch (error) {\n console.log({ error });\n setLoading(true);\n }\n }, [owner]);\n\n const documentSelection = documentValue => {\n if (onChange) {\n onChange(documentValue);\n }\n setSelectedDocument(documentValue);\n };\n\n useEffect(() => {\n loadDocuments();\n }, [loadDocuments]);\n\n return (\n
    \n \n
    \n );\n};\n\nDocumentPickerWizard.propTypes = {\n value: string,\n useWorkflowForms: bool,\n onChange: func\n};\n\nexport default DocumentPickerWizard;\n","import { arrayMove } from '@jotforminc/utils';\nimport { DocumentUpdatables, Participant, SortEnd } from '../domain';\n\nexport const getClassName = (arr: (string | boolean | undefined)[]): string => arr.filter(Boolean).join(' ');\n\nexport const sortParticipants = (participants: Participant[]): Participant[] => participants.sort(({ signingOrder: fSOrder = 0 }, { signingOrder: sSOrder = 0 }) => (\n fSOrder - sSOrder\n));\n\nexport const isListEmpty = (list: { name: string[], email: string[] } | string[]): boolean => list && Object.values(list).every(x => x.length === 0);\n\nexport const genNewParticipants = (participantID: string, participants: Participant[], props: DocumentUpdatables): Participant[] => participants.reduce((acc: Participant[], curr: Participant) => (\n curr.participantID === participantID ? [...acc, { ...curr, ...props }] : [...acc, curr]\n), []);\n\nexport const onSortEnd = (onChange: (a: DocumentUpdatables) => void, participants: Participant[]) => ({ newIndex, oldIndex }: SortEnd): void => {\n const newParticipants = arrayMove(participants, oldIndex, newIndex).map((p, i) => ({ ...p, signingOrder: i }));\n onChange({ participants: newParticipants });\n};\n\nexport const getParticipantsWithAtLeastOneField = (participants: Participant[]): Participant[] => (\n participants.filter(p => p.fields && p.fields.length > 0 && p.type !== 'cc')\n);\n\nexport const INIT_LIST: ({ name: string[], email: string[] }) = {\n name: [],\n email: []\n};\n\nexport const trimSpaces = (text: unknown): unknown => (\n typeof text === 'string'\n ? text.trim()\n : text\n);\n","import React, { FC } from 'react';\nimport { t } from '@jotforminc/translation';\n\nimport CircularLoader from './assets/circularLoader_icon.svg';\n\ntype Props = {\n checked: boolean,\n onChange: (e: React.ChangeEvent) => void,\n withLoader: boolean,\n text: string\n}\n\nconst Toggle: FC = ({\n checked,\n onChange,\n withLoader = false,\n text\n}) => {\n const id = text.replace(/\\s+/g, '-').toLowerCase();\n\n return (\n
    \n \n \n {t(text)}\n {withLoader && (\n
    \n \n
    \n )}\n \n
    \n );\n};\n\nexport default Toggle;\n","import React, {\n FC, useRef, ChangeEvent, useEffect\n} from 'react';\nimport { t } from '@jotforminc/translation';\nimport {\n IconAngleDown, IconCopyDotted, IconTrashFilled, IconKeyFilled\n} from '@jotforminc/svg-icons';\nimport { InputText } from '@jotforminc/magnet';\n\nimport { getClassName } from './utils';\n\ntype Props = {\n pinCode: string,\n showPin: boolean,\n setShowPin: (e: boolean) => void,\n setValue: (e: any, prop: any) => void,\n};\n\nconst PinSettings: FC = ({\n pinCode = '',\n setValue,\n showPin,\n setShowPin\n}) => {\n const inputRef = useRef(null);\n const hasPin = pinCode.length > 0 && !showPin;\n\n useEffect(() => {\n if (showPin && inputRef.current) {\n inputRef.current.focus();\n }\n }, [showPin]);\n\n return (\n hasPin && setShowPin(true)}\n >\n
    \n {\n hasPin ? (\n <>\n \n {t('Access Code:')}\n \n {pinCode}\n \n \n ) : (\n
    \n {t('Set Access Code')}\n
    \n \n {t('Set up a code to view and sign the document.')}\n \n
    \n )\n }\n
    \n
    \n {\n hasPin ? (\n \n ) : (\n <>\n ) => {\n setValue(e, { pinCode });\n }}\n tabIndex={showPin ? 0 : -1}\n ref={inputRef}\n prefix={{\n icon: function noRefCheck() { return ; }\n }}\n />\n window.navigator.clipboard.writeText(inputRef.current?.value || '')}\n >\n \n \n {\n setShowPin(false);\n if (inputRef.current) {\n inputRef.current.value = '';\n }\n setValue({ target: { value: '' } }, { pinCode });\n }}\n >\n \n \n \n )\n }\n
    \n
  • \n );\n};\n\nexport default PinSettings;\n","/* eslint-disable @jotforminc/no-native-button */\nimport React, {\n useState, useRef, FC, ChangeEvent, FocusEvent\n} from 'react';\nimport { SortableHandle, SortableElement } from 'react-sortable-hoc';\nimport { InputText } from '@jotforminc/magnet';\n\nimport { t } from '@jotforminc/translation';\nimport {\n IconGridDotsVertical, IconMessageFilled, IconPenSignFilled, IconKeyFilled, IconEnvelopeClosedFilled, IconUserFilled\n} from '@jotforminc/svg-icons';\n\nimport { getClassName, INIT_LIST } from './utils';\nimport { ID, DocumentUpdatables } from './domain';\nimport PinSettings from './PinSettings';\n\ntype InitListType = typeof INIT_LIST;\ntype Props = {\n role: string,\n color: string,\n name?: string,\n email?: string,\n type?: string,\n participantID: string,\n customMessage?: string,\n pinCode?: string,\n handleParticipantUpdate: (pID: ID, prop: DocumentUpdatables) => void,\n isEmailValid: boolean,\n isNameValid: boolean,\n orderEdit: boolean,\n loading: boolean,\n handleValidation: (value: string, inputType: keyof InitListType, pId: string) => void,\n sortIndex: number,\n InputRenderer?: React.ReactNode,\n enableSetPinCode: boolean,\n enableSetCustomMessage: boolean,\n isSendFailed?: boolean\n};\n\nconst DragHandle = SortableHandle(() => );\n\nconst ParticipantListItem: FC = ({\n role = '',\n color = '',\n email,\n name,\n pinCode = '',\n participantID = '',\n customMessage,\n handleParticipantUpdate,\n isEmailValid,\n isNameValid,\n orderEdit,\n sortIndex,\n loading,\n handleValidation,\n InputRenderer,\n type = 'signer',\n enableSetPinCode,\n enableSetCustomMessage,\n isSendFailed\n}) => {\n const [showMessage, setShowMessage] = useState(false);\n const [showPin, setShowPin] = useState(false);\n const textareaRef = useRef(null);\n\n const setValue = (e: FocusEvent | ChangeEvent, prop: any) => {\n const val = ((typeof e === 'string' && e) || (e?.target?.value) || '');\n const [key, currVal] = Object.entries(prop)[0];\n\n if (val === currVal) {\n return;\n }\n\n handleParticipantUpdate(participantID, { [key]: val });\n };\n\n return (\n
  • \n \n
    \n \n
    \n \n \n \n \n \n {role}\n \n ) => setValue(e, { name })}\n onBlur={(e: ChangeEvent) => handleValidation((e.target.value || ''), 'name', participantID)}\n prefix={{\n icon: function noRefCheck() { return ; }\n }}\n isValid={isNameValid}\n />\n ) => setValue(e, { email })}\n onBlur={(e: ChangeEvent) => handleValidation((e.target.value || ''), 'email', participantID)}\n prefix={{\n icon: function noRefCheck() { return ; }\n }}\n isValid={isEmailValid}\n />\n {enableSetPinCode && (\n 0)) && 'filled'])}\n disabled={loading && !isSendFailed}\n onClick={() => { setShowPin(!showPin); }}\n >\n 0) ? '#007ff4' : '#8694B8'} />\n \n )}\n {enableSetCustomMessage && (\n 0 && 'filled'])}\n disabled={loading && !isSendFailed}\n onClick={() => {\n setShowMessage(!showMessage);\n if (!showMessage && textareaRef.current) {\n textareaRef.current.focus();\n textareaRef.current.selectionStart = textareaRef.current.value.length;\n }\n }}\n >\n \n \n )}\n \n \n \n \n \n ) => setValue(e, { customMessage })}\n />\n \n
  • \n );\n};\n\nParticipantListItem.defaultProps = {\n email: '',\n name: '',\n type: 'signer',\n pinCode: '',\n customMessage: '',\n InputRenderer: InputText,\n isSendFailed: false\n};\n\nexport default SortableElement(ParticipantListItem);\n","import React, { FC } from 'react';\nimport { t } from '@jotforminc/translation';\nimport './styles/a11yAlert.scss';\n\ntype Props = {\n text: string\n}\n\nconst A11yAlert: FC = ({ text }) => {\n return (\n
    \n {t(text)}\n
    \n );\n};\n\nexport default A11yAlert;\n","/* eslint-disable complexity */\nimport React, {\n useState, useEffect, FC, ReactNode\n} from 'react';\nimport { SortableContainer } from 'react-sortable-hoc';\nimport { isEmail, isEmpty, trackDataForMobile } from '@jotforminc/utils';\nimport { Spinner } from '@jotforminc/loading';\nimport { t } from '@jotforminc/translation';\nimport { IconInfoCircleFilled } from '@jotforminc/svg-icons';\nimport { InputText } from '@jotforminc/magnet';\n\nimport './styles/sendToSign.scss';\n\nimport {\n getClassName, sortParticipants, isListEmpty, genNewParticipants, onSortEnd,\n getParticipantsWithAtLeastOneField, INIT_LIST, trimSpaces\n} from './utils';\nimport { ID, DocumentUpdatables, Participant } from './domain';\nimport Toggle from './Toggle';\nimport ParticipantListItem from './ParticipantListItem';\nimport NoAssign from './assets/noAssign_icon.svg';\nimport A11yAlert from './a11yAlert';\n\ntype Props = {\n participants: Participant[],\n hasSigningOrder: string,\n onChange: (props: DocumentUpdatables) => void,\n sendToSign: (arg0: React.Dispatch>) => void,\n redirectToBuild: () => void,\n isSent: boolean,\n InputRenderer: React.ElementType,\n enableSetSigningOrder: boolean,\n enableSetPinCode: boolean,\n enableSetCustomMessage: boolean,\n buttonText: string,\n isTaggable: boolean,\n isSendFailed: boolean,\n};\n\nconst SortContainer = SortableContainer((p: { children: ReactNode }) => (\n
      {p.children}
    \n));\n\ntype ParticipantKeys = keyof Participant;\ntype InitListType = typeof INIT_LIST;\n\nconst generateNotValidList = (participants: Participant[], key: ParticipantKeys, isTaggable: boolean) => participants\n .filter(p => {\n if (isTaggable && p.publicLink?.decider) {\n return false;\n }\n switch (key) {\n case 'email': return !isEmail(trimSpaces(p[key]));\n case 'name': return !trimSpaces(p[key]);\n default:\n return false;\n }\n })\n .map(p => p.participantID);\n\nconst getNotValidList = (participants: Participant[], isTaggable: boolean): InitListType => Object.keys(INIT_LIST).reduce((acc, curr) => ({\n ...acc,\n [curr]: generateNotValidList(participants, curr as ParticipantKeys, isTaggable)\n}), INIT_LIST);\n\nconst InvitePanel: FC = ({\n participants,\n hasSigningOrder,\n onChange,\n sendToSign,\n redirectToBuild,\n isSent,\n InputRenderer = InputText,\n enableSetSigningOrder = true,\n enableSetPinCode = true,\n enableSetCustomMessage = true,\n buttonText = 'Send to Sign',\n isTaggable = false,\n isSendFailed = false\n}) => {\n const [loading, setLoading] = useState(false);\n const [notValidList, setNotValidList] = useState(INIT_LIST);\n\n useEffect(() => {\n if (!isSent && loading) {\n setLoading(false);\n }\n }, [isSent]); // eslint-disable-line react-hooks/exhaustive-deps\n\n const participantsWithAtLeastOneField = getParticipantsWithAtLeastOneField(participants);\n\n const sendDocument = () => {\n setLoading(true);\n sendToSign(setLoading);\n };\n\n const handleSend = () => {\n trackDataForMobile('documentBuilderSend');\n const notV = getNotValidList(participantsWithAtLeastOneField, isTaggable);\n setNotValidList(notV);\n\n if (!isListEmpty(notV)) {\n return;\n }\n\n sendDocument();\n };\n\n const handleParticipantUpdate = (participantID: ID, props: DocumentUpdatables) => {\n onChange({ participants: genNewParticipants(participantID, participants, props) });\n };\n\n const handleChangeOrder = (e: React.ChangeEvent) => {\n onChange({\n hasSigningOrder: e.target.checked ? 'Yes' : 'No',\n participants: sortParticipants(participants).map((p: Participant, i: number) => ({ ...p, signingOrder: i }))\n });\n };\n // TODO: refactor\n const handleValidation = (value: string, inputType: keyof InitListType, pId: string) => {\n const isValid = inputType === 'email' ? isEmail(trimSpaces(value)) : !isEmpty(trimSpaces(value));\n const notV = {\n ...notValidList,\n [inputType]: isValid ? (notValidList[inputType] || []).filter(p => p !== pId) : [\n ...notValidList[inputType],\n pId\n ]\n };\n setNotValidList(notV);\n };\n\n const shouldDisableSend = (isSent || loading || participantsWithAtLeastOneField.length === 0) && !isSendFailed;\n\n const renderNoAssignPanel = () => (\n
    \n \n {t('YOU DON\\'T HAVE ANY ASSIGNED FIELDS.')}\n \n {t('Please add fields and assign roles')}\n \n
    \n );\n\n return (\n <>\n {(!isSent && loading) && }\n {isSent && }\n {participantsWithAtLeastOneField.length === 0 ? renderNoAssignPanel() : (\n
    \n
    \n
    \n

    \n {t('Manage Signers')}\n

    \n {(participantsWithAtLeastOneField.length > 1 && enableSetSigningOrder) && (\n \n )}\n
    \n \n {sortParticipants(participantsWithAtLeastOneField).map((participant: Participant, i: number) => (\n \n ))}\n \n
    \n \n
    \n {!isListEmpty(notValidList) && (\n <>\n \n {(notValidList.name.length === 0 && notValidList.email.length > 0) ? (\n

    \n {t('Please')}\n {' '}\n {t('enter a valid email.')}\n

    \n ) : (\n

    \n {t('Please')}\n {' '}\n {t('fill the required inputs.')}\n

    \n )}\n \n )}\n {isSendFailed && (\n <>\n \n

    {t('Looks like something went wrong. Please try again.')}

    \n \n )}\n {isSent && (\n
    {t('All signers will receive an email with the completed document once everyone has signed.')}
    \n )}\n
    \n \n {(loading && !isSent && !isSendFailed) && }\n {t(buttonText)}\n \n
    \n \n )}\n \n );\n};\n\nexport {\n getNotValidList,\n InvitePanel\n};\n","import {\n shape, string, func, arrayOf\n} from 'prop-types';\nimport React, {\n useState, useMemo, useEffect, useCallback\n} from 'react';\nimport { useSelector } from 'react-redux';\nimport { InvitePanel } from '@jotforminc/send-to-sign';\nimport TagInput from '@jotforminc/tag-input';\nimport { Loading } from '@jotforminc/loading';\nimport {\n colorifyFormArray, isEmail, handleCustomNavigation\n} from '@jotforminc/utils';\nimport debounce from 'lodash/debounce';\nimport isEmpty from 'lodash/isEmpty';\nimport styled from 'styled-components';\nimport requestLayer from '../../modules/api/requestLayer';\nimport WatchmanRecorder from '../../utils/WatchmanRecorder';\nimport { getAllRelatedFormsAndFields } from '../../store/selectors';\nimport { isFormFields } from '../../utils';\n\nconst fetchDocument = documentID => requestLayer.get(`sign/${documentID}`);\n\nconst StyledTagInputWrapper = styled.div`\n position: relative;\n .formFields {\n &-button {\n visibility: hidden;\n background-image: none !important;\n padding: .5em !important;\n height: 40px;\n top: 0 !important;\n opacity: 0;\n transition: visibility .3s, opacity .3s;\n }\n\n &-icon {\n &-wrapper {\n margin-right: 0;\n }\n }\n\n &-text {\n display: none;\n }\n }\n\n .isFocused .formFields-button,\n .isFormFieldsVisible .formFields-button {\n visibility: visible;\n opacity: 1;\n transition: visibility .05s, opacity .05s;\n }\n`;\n\n// These props come from send-to-sign -> ParticipantListItem\nconst FieldBasedTagInput = ({\n type = '',\n val = '',\n formArray = [],\n ...props\n}) => {\n const preparedFormFieldsOptions = useCallback(inputType => {\n switch (inputType) {\n case 'email':\n return formArray.map(formObj => ({\n ...formObj,\n questions: formObj.questions.filter(question => question.type === 'control_email')\n }));\n case 'name':\n default:\n return formArray.map(formObj => ({\n ...formObj,\n questions: formObj.questions.filter(question => question.type === 'control_fullname')\n }));\n }\n }, [formArray]);\n return (\n e.preventDefault()}>\n e.preventDefault()}\n settings={{ mode: 'mix' }}\n fieldsLabelText=\"\"\n />\n \n );\n};\n\nFieldBasedTagInput.propTypes = {\n type: string,\n val: string,\n onChange: func,\n formArray: arrayOf(shape({}))\n};\n\nconst preparedParticipants = participants => {\n const newList = (Array.isArray(participants) ? participants.filter(p => p.type === 'owner' || (p.fields && p.fields.length > 0 && p.type !== 'cc')) : []);\n return newList.sort(({ signingOrder: first }, { signingOrder: second }) => first - second).map((p, i) => ({ ...p, signingOrder: i }));\n};\n\nconst DocumentSignMatcher = React.forwardRef(({\n value: initialParticipants,\n valueList,\n setSaveButtonDisable\n}, ref) => {\n const { documentID, hasSigningOrder: initialhasSigningOrder } = useMemo(() => valueList, [valueList]);\n const [document, setDocument] = useState();\n const [participants, setParticipants] = useState();\n const [hasSigningOrder, setHasSigningOrder] = useState();\n const [loaded, setLoaded] = useState(false);\n const [isSent, setIsSent] = useState(false);\n const formArray = colorifyFormArray(useSelector(getAllRelatedFormsAndFields));\n\n React.useImperativeHandle(ref, () => ({\n getData: () => ({\n hasSigningOrder,\n signerMapping: participants\n })\n }));\n\n useEffect(() => setSaveButtonDisable(\n isEmpty(participants)\n || !participants.filter(p => p?.fields?.length > 0).every(\n e => e?.email\n && e?.name\n && (isFormFields(e?.email) || isEmail(e?.email))\n )\n ),\n [participants]);\n\n useEffect(() => {\n fetchDocument(documentID).then(d => {\n const par = preparedParticipants(d.participants);\n if (!loaded && !isEmpty(initialParticipants)) {\n setParticipants(par.map(e => ({\n ...e, ...initialParticipants.find(v => v.participantID === e.participantID), role: e.role, type: e.type, fields: e.fields\n })));\n setHasSigningOrder(initialhasSigningOrder || 'No');\n setDocument(d);\n } else {\n setParticipants(par);\n setHasSigningOrder('No');\n setDocument(d);\n }\n setLoaded(true);\n });\n }, [valueList]);\n\n const onDocumentChange = debounce(({ participants: _participants, hasSigningOrder: _hasSigningOrder }) => {\n if (_participants) setParticipants(_participants);\n if (_hasSigningOrder) setHasSigningOrder(_hasSigningOrder);\n });\n\n const sendToSign = () => {\n WatchmanRecorder.trackEvent('documentSignMatcher-sendToSign', { id: documentID });\n debounce(() => { setIsSent(true); }, 2000)();\n debounce(() => { setIsSent(false); }, 4500)();\n };\n\n const redirectToBuild = () => {\n const { formID } = document;\n if (document && formID) {\n handleCustomNavigation(`/sign/${formID}`);\n WatchmanRecorder.trackEvent('documentSignMatcher-redirect', { formID: formID, id: documentID });\n }\n };\n\n const TagInputComponent = useMemo(() => props => , [\n formArray\n ]);\n\n const invitePanelProps = useMemo(() => (\n {\n ...document,\n isSent,\n onChange: onDocumentChange,\n sendToSign,\n redirectToBuild,\n InputRenderer: TagInputComponent\n }\n ), [document]);\n\n if (!loaded) {\n return (\n
    \n \n
    \n );\n }\n\n return document ? (\n \n ) : null;\n});\n\nDocumentSignMatcher.propTypes = {\n valueList: shape({\n formID: string,\n prefillFormID: string\n }).isRequired,\n value: shape({}),\n onChange: func,\n setSaveButtonDisable: func\n};\n\nDocumentSignMatcher.defaultProps = {\n value: {},\n onChange: () => { },\n setSaveButtonDisable: f => f\n};\nexport default React.memo(DocumentSignMatcher);\n","import React, { useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport Dropdown from '@jotforminc/dropdown';\nimport { IconAngleDown, IconHipaaFilled } from '@jotforminc/svg-icons';\n\nconst PrefillMatchDropdown = ({ data, ...props }) => {\n const optionListData = useMemo(() => {\n return data.map(option => ({\n ...option,\n beforeComponent: option.isProtected && \n }));\n }, [data]);\n\n return (\n }\n />\n );\n};\n\nPrefillMatchDropdown.propTypes = {\n data: PropTypes.arrayOf(\n PropTypes.shape({\n text: PropTypes.string.isRequired,\n value: PropTypes.any.isRequired,\n name: PropTypes.string.isRequired,\n isProtected: PropTypes.bool.isRequired\n }).isRequired\n ).isRequired\n};\n\nexport default PrefillMatchDropdown;\n","import React, {\n useCallback,\n useEffect,\n useMemo,\n useState\n} from 'react';\nimport PropTypes from 'prop-types';\nimport isEqual from 'lodash/isEqual';\nimport isEmpty from 'lodash/isEmpty';\nimport { t } from '@jotforminc/translation';\n\nimport { IconTrashFilled, IconPlusCircleFilled, IconFormFilled } from '@jotforminc/svg-icons';\nimport { Button } from '@jotforminc/magnet';\nimport PrefillMatchDropdown from './PrefillMatchDropdown';\n\nimport '../style.scss';\nimport { convertItemsToOptions } from '../utils';\n\nfunction PrefillFieldMatcher({\n leftItemsText,\n rightItemsText,\n initialMappings,\n leftItems,\n rightItems,\n iconItems,\n onChange,\n error,\n isLoading,\n moreButtonText\n}) {\n const [fieldMapping, setFieldMapping] = useState(initialMappings);\n const isInitialMappingContainsNewMapping = !isEmpty(fieldMapping) && fieldMapping?.length > 1 && isEqual(fieldMapping[fieldMapping.length - 1], ['', '']);\n\n useEffect(() => {\n setFieldMapping(isInitialMappingContainsNewMapping ? [...initialMappings, ['', '']] : initialMappings);\n }, [initialMappings]);\n\n const rightUsedElements = useMemo(() => {\n return fieldMapping.reduce((acc, curr) => {\n acc[curr[1]] = true;\n return acc;\n }, {});\n }, [fieldMapping]);\n\n const addNewDisabled = useMemo(() => {\n const lastMapping = fieldMapping[fieldMapping.length - 1];\n if (lastMapping.some(el => !el)) {\n return true;\n }\n\n return false;\n }, [fieldMapping]);\n\n const leftOptions = useMemo(() => {\n return convertItemsToOptions(leftItems);\n }, [leftItems]);\n\n const rightOptions = useMemo(() => {\n return convertItemsToOptions(rightItems);\n }, [rightItems]);\n\n const handleMatchChange = useCallback((type, index, value) => {\n const newFieldMapping = [...fieldMapping];\n newFieldMapping[index][type === 'left' ? 0 : 1] = value;\n setFieldMapping(newFieldMapping);\n // onChange only if both sides of the mapping is selected, otherwise it will be discarded\n if (newFieldMapping[index][0] !== '' && newFieldMapping[index][1] !== '') {\n onChange(newFieldMapping);\n }\n }, [fieldMapping, onChange]);\n\n const handleDeleteClick = useCallback(e => {\n const index = e.currentTarget.getAttribute('data-index');\n let newFieldMapping = fieldMapping.filter((_, _index) => parseInt(index, 10) !== _index);\n if (newFieldMapping.length <= 0) {\n newFieldMapping = [['', '']];\n }\n setFieldMapping(newFieldMapping);\n onChange(newFieldMapping);\n }, [fieldMapping, onChange]);\n\n const handleAddNewClick = useCallback(() => {\n if (addNewDisabled) {\n return;\n }\n\n setFieldMapping(prevMapping => [...prevMapping, ['', '']]);\n }, [addNewDisabled]);\n\n return (\n <>\n
    \n
    \n
    \n \n {iconItems.leftIcon}\n \n {t(leftItemsText)}\n \n \n
    \n
    \n \n {iconItems.rightIcon}\n \n {t(rightItemsText)}\n \n \n
    \n
    \n {fieldMapping.map((item, index) => {\n const isLeftDeleted = item[0] && leftOptions.find(q => q.value === item[0]) === undefined;\n const isRightDeleted = item[1] && rightOptions.find(q => q.value === item[1]) === undefined;\n\n const myRightOptions = rightOptions.filter(elem => {\n const isUsed = elem.value in rightUsedElements;\n const imUsing = item[1] === elem.value;\n return !isUsed || imUsing;\n });\n return (\n \n
    \n handleMatchChange('left', index, value)}\n inputClass={isLeftDeleted ? 'isDeleted' : ''}\n />\n
    \n
    \n handleMatchChange('right', index, value)}\n inputClass={isRightDeleted ? 'isDeleted' : ''}\n />\n
    \n
    \n \n
    \n
    \n );\n })}\n {error &&

    {t(`${error} This matching doesn’t work.`)}

    }\n \n {t(moreButtonText)}\n \n \n \n );\n}\n\nPrefillFieldMatcher.propTypes = {\n initialMappings: PropTypes.array,\n leftItemsText: PropTypes.string,\n rightItemsText: PropTypes.string,\n iconItems: PropTypes.shape({\n leftIcon: PropTypes.node,\n rightIcon: PropTypes.node\n }),\n leftItems: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired,\n selector: PropTypes.string.isRequired\n })\n ).isRequired,\n rightItems: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired,\n selector: PropTypes.string.isRequired\n })\n ).isRequired,\n onChange: PropTypes.func.isRequired,\n error: PropTypes.string,\n isLoading: PropTypes.bool,\n moreButtonText: PropTypes.string\n};\n\nPrefillFieldMatcher.defaultProps = {\n leftItemsText: 'Source fields',\n rightItemsText: 'Form fields',\n iconItems: {\n leftIcon: ,\n rightIcon: \n },\n initialMappings: [['', '']],\n error: null,\n isLoading: false,\n moreButtonText: 'Add More Field'\n};\n\nexport default PrefillFieldMatcher;\n","import React from 'react';\nimport {\n string, arrayOf, shape, func, bool, array, node\n} from 'prop-types';\nimport { t } from '@jotforminc/translation';\nimport { Checkbox } from '@jotforminc/magnet';\n\nimport PrefillFieldMatcher from './PrefillFieldMatcher';\n\nconst PrefilFieldWrapper = ({\n leftItems, leftItemsText, rightItems, rightItemsText, onChange, checkedBoxOnClick, isSelected, moreButtonText, initialMappings, iconItems\n}) => {\n if (leftItems && rightItems) {\n return (\n <>\n
    \n
    \n {t('MATCH FIELDS')}\n
    \n
    \n \n
    \n
    \n
    \n \n
    \n \n );\n }\n return null;\n};\n\nPrefilFieldWrapper.propTypes = {\n leftItemsText: string,\n rightItemsText: string,\n iconItems: node.isRequired,\n leftItems: arrayOf(\n shape({\n label: string.isRequired,\n value: string.isRequired,\n selector: string.isRequired\n })\n ).isRequired,\n rightItems: arrayOf(\n shape({\n label: string.isRequired,\n value: string.isRequired,\n selector: string.isRequired\n })\n ).isRequired,\n onChange: func.isRequired,\n checkedBoxOnClick: func.isRequired,\n isSelected: bool.isRequired,\n moreButtonText: string,\n initialMappings: array\n};\n\nPrefilFieldWrapper.defaultProps = {\n leftItemsText: 'Source fields',\n rightItemsText: 'Form fields',\n moreButtonText: 'Add Field',\n initialMappings: [['', '']]\n};\n\nexport default PrefilFieldWrapper;\n","import { shape, string } from 'prop-types';\nimport { useDispatch, useSelector } from 'react-redux';\nimport React, { useEffect, useState } from 'react';\n// We should use builder-components getFormattedQuestions\nimport { PrefilFieldWrapper as FieldMatcher, PrefillUtils } from '@jotforminc/jotform-common';\nimport isEqual from 'lodash/isEqual';\nimport { updateElement } from '../../actionCreators';\n\nimport {\n FormSelectors, getPrefillInitialMappings, getPrefillSettings, isPrefillAllowEdit\n} from '../../store/selectors';\n\nconst PrefillFieldMatcher = ({\n // value,\n // onChange,\n valueList\n}) => {\n const dispatch = useDispatch();\n const { formID, prefillFormID, id } = valueList;\n const [isLoading, setLoading] = useState(true);\n const forms = useSelector(FormSelectors.getFlowForms);\n const initialMappings = useSelector(getPrefillInitialMappings(id));\n const prefillAllowEdit = useSelector(isPrefillAllowEdit(id));\n const prefillSettings = useSelector(getPrefillSettings(id));\n\n const sourceForm = forms.find(f => f.id === prefillFormID);\n const targetForm = forms.find(f => f.id === formID);\n\n const sourceFormTitle = sourceForm?.title || 'Source Fields';\n const targetFormTitle = targetForm?.title || 'Assigned Form Fields';\n\n const leftItems = sourceForm && PrefillUtils.getFormattedQuestions(\n Object.values(sourceForm.questions),\n true,\n 'workflow',\n true\n );\n\n const rightItems = targetForm && PrefillUtils.getFormattedQuestions(\n Object.values(targetForm.questions),\n false,\n 'workflow'\n );\n\n const onChangeAssignFormPrefill = val => {\n const finalMapping = PrefillUtils.removeIncompleteMatches(val);\n if (!(PrefillUtils.isMappingValid(finalMapping, leftItems, rightItems))) {\n return;\n }\n const { mapping } = PrefillUtils.convertPrefillFieldMappingToPrefillSettings(finalMapping);\n\n dispatch(updateElement({\n prefillSettings: { ...prefillSettings, mapping: mapping, list: prefillFormID },\n elementID: id\n }));\n };\n\n const checkBoxOnClick = val => {\n const checkboxValue = val?.target?.checked ? 'edit' : 'readonly';\n dispatch(updateElement({\n prefillSettings: { ...prefillSettings, fieldBehaviour: checkboxValue, list: prefillFormID },\n elementID: id\n }));\n };\n\n const notContainsUndefined = arr => {\n const sourceFormMapping = arr?.[0]?.some(element => element !== undefined);\n const targetFormMapping = arr?.[1]?.some(element => element !== undefined);\n return sourceFormMapping && targetFormMapping;\n };\n\n useEffect(() => {\n if (sourceForm && targetForm) {\n setLoading(false);\n }\n if (notContainsUndefined(initialMappings)) {\n const { mapping: initialFormatedMapping } = PrefillUtils.convertPrefillFieldMappingToPrefillSettings(initialMappings);\n if (!isEqual(initialFormatedMapping, prefillSettings.mapping)) {\n dispatch(updateElement({\n prefillSettings: { ...prefillSettings, mapping: initialFormatedMapping, list: prefillFormID },\n elementID: id\n }));\n }\n }\n }, [sourceForm, targetForm]);\n\n return !isLoading && (\n \n );\n};\n\nPrefillFieldMatcher.propTypes = {\n valueList: shape({\n formID: string,\n prefillFormID: string\n }).isRequired\n};\n\nPrefillFieldMatcher.defaultProps = {\n};\n\nexport default PrefillFieldMatcher;\n","import React from 'react';\nimport { string, node } from 'prop-types';\nimport classNames from 'classnames';\n\nconst Form = ({\n title,\n subTitle,\n className,\n children,\n ...props\n}) => {\n return (\n
    \n {title && (
    {title}
    )}\n {subTitle && (
    {subTitle}
    )}\n {children && (
    {children}
    )}\n
    \n );\n};\n\nForm.propTypes = {\n className: string,\n title: node,\n subTitle: node,\n children: node\n};\n\nForm.defaultProps = {\n className: null,\n title: null,\n subTitle: null,\n children: node\n};\n\nexport default Form;\n","import React from 'react';\nimport { string, node } from 'prop-types';\nimport classNames from 'classnames';\n\nexport const Input = ({\n title,\n placeholder,\n className,\n ...props\n}) => {\n return (\n
    \n {title && (
    {title}
    )}\n
    \n {placeholder}\n
    \n
    \n );\n};\n\nInput.propTypes = {\n title: node,\n placeholder: node,\n className: string\n};\n\nInput.defaultProps = {\n title: null,\n placeholder: null,\n className: null\n};\n\nexport default Input;\n","import React from 'react';\nimport { t } from '@jotforminc/translation';\n\nimport Form from './Form';\nimport DemoInput from './Demo/Input';\n\nimport './style.scss';\n\nconst PrefillFormFields = () => {\n return (\n
    \n \n \n \n \n
    \n
    \n
    \n {t('Use prefill to get data from another form.')}\n
    \n
    \n \n \n \n \n
    \n
    \n
    \n \n \n \n \n
    \n );\n};\n\nexport default PrefillFormFields;\n","import { string } from 'prop-types';\nimport React from 'react';\nimport { PrefillFormFields } from '@jotforminc/jotform-common';\n\nconst Banner = ({ bannerType = '' }) => {\n const renderBanner = () => {\n switch (true) {\n case bannerType === 'prefil':\n return (\n \n );\n default:\n return (null);\n }\n };\n\n return (\n renderBanner()\n );\n};\n\nBanner.propTypes = {\n bannerType: string\n};\n\nexport default Banner;\n","import React from 'react';\nimport { t } from '@jotforminc/translation';\nimport { oneOf, shape, func } from 'prop-types';\nimport { ReportSample } from '@jotforminc/jotform-common';\nimport { IconEyeFilled } from '@jotforminc/svg-icons';\n\nexport default function Preview({ previewType, onViewSampleReportClick, value }) {\n const reportLogo = window.JOTFORM_ENV === 'ENTERPRISE' ? `${window.location.origin}/enterprise/logo.png` : '//cdn.jotfor.ms/assets/img/logo2021/jotform-logo.svg';\n return (\n
    \n
    \n \n
    \n {previewType === 'APPROVAL_REPORT' ? (\n
    \n \n
    \n ) : null}\n
    \n );\n}\n\nPreview.propTypes = {\n previewType: oneOf(['APPROVAL_REPORT']),\n onViewSampleReportClick: func,\n value: shape({})\n};\n\nPreview.defaultProps = {\n previewType: 'APPROVAL_REPORT',\n onViewSampleReportClick: func,\n value: {}\n};\n","import React from 'react';\nimport { bool, shape, string } from 'prop-types';\nimport { useDispatch } from 'react-redux';\nimport { t } from '@jotforminc/translation';\nimport { IconGearFilled } from '@jotforminc/svg-icons';\nimport { openReportSettingsModal } from '../../actionCreators';\nimport { ScWFUIKitButton } from '../Button/scButton';\nimport Preview from './preview';\n\nexport default function PreviewWizard({\n hasSettings, previewType, valueList, value\n}) {\n // Not the best way, will change/refactor if another preview comp is needed\n const { id } = valueList;\n const dispatch = useDispatch();\n const handleSettingsClick = () => {\n switch (previewType) {\n default:\n dispatch(openReportSettingsModal({\n elementID: id\n }));\n }\n };\n\n return (\n
    \n {hasSettings && (\n \n \n {t('Settings')}\n \n )}\n \n
    \n );\n}\n\nPreviewWizard.propTypes = {\n hasSettings: bool,\n previewType: string,\n valueList: shape({}),\n value: shape({})\n};\n\nPreviewWizard.defaultProps = {\n hasSettings: true,\n previewType: 'APPROVAL_REPORT',\n valueList: {},\n value: {}\n};\n","import React, { useEffect, useState } from 'react';\nimport { MultipleFormPDFDropdown } from '@jotforminc/resource-picker';\nimport { func, string } from 'prop-types';\nimport { useSelector } from 'react-redux';\nimport {\n FormSelectors, getAvailablePDFsForAllForm, getPDFDocuments, getSelectedElementInfo, getWorkflowID, getEntryPointFormID\n} from '../../store/selectors';\nimport { getAllPDFTemplateOptions, getCommonEmailProps } from '../../utils/emailUtils';\nimport { pdfListToMap, pdfMapToList } from './helper';\nimport requestLayer from '../../modules/api/requestLayer';\nimport { elementSubTypes } from '../../constants/elementTypes';\nimport { DEFAULT_FEATURES, NEW_REPORT_ELEMENT } from '../../constants/features';\n\nconst MultipleFormPDF = ({\n emailType = 'WORKFLOW_SEND_EMAIL_GENERAL',\n emailSubType = null,\n onChange = f => f\n}) => {\n const element = useSelector(getSelectedElementInfo);\n\n const workflowID = useSelector(getWorkflowID);\n const [allForms, setAllForms] = useState([]);\n const emailProps = getCommonEmailProps(element, emailType, emailSubType);\n const availablePDFsForAllForm = useSelector(getAvailablePDFsForAllForm);\n let docList = useSelector(getPDFDocuments(element?.id));\n const startFormID = useSelector(getEntryPointFormID);\n const {\n pdfId, pdfattachment, subType\n } = element;\n const pdfAttachmentEnabled = pdfattachment === '1';\n const pdfList = pdfId ? pdfId.split(',') : [];\n if (pdfList.length > 0 && docList.length === 0 && pdfAttachmentEnabled && DEFAULT_FEATURES[NEW_REPORT_ELEMENT] && subType === elementSubTypes.SEND_APPROVAL_REPORT) {\n docList = pdfList.map(pdfID => ({ formID: startFormID, pdfID }));\n }\n\n const loadUserAllForms = () => requestLayer.get(`workflow/${workflowID}/allforms?includePDF=1`).then(data => {\n setAllForms(data);\n }).catch(e => {\n console.log('Error', e);\n return false;\n });\n\n useEffect(() => {\n loadUserAllForms();\n }, []);\n\n const forms = useSelector(FormSelectors.getAllUsedForms);\n const pdfRelatedConfigsForAllForm = getAllPDFTemplateOptions(emailProps, availablePDFsForAllForm, allForms);\n const [list, setList] = useState(pdfMapToList(docList));\n\n useEffect(() => {\n const convertedList = pdfListToMap(list);\n onChange(convertedList);\n }, [list]);\n\n const pdfOnChange = pdfDocuments => {\n setList({ ...list, ...pdfDocuments });\n };\n\n return (\n pdfOnChange(value)}\n PDFData={pdfListToMap(list)}\n usedFromEmail={false}\n />\n );\n};\n\nMultipleFormPDF.propTypes = {\n emailType: string,\n emailSubType: string,\n onChange: func\n};\n\nexport default MultipleFormPDF;\n","/* eslint-disable default-case */\n\nimport { t } from '@jotforminc/translation';\nimport { TEXTS } from '../../constants/strings';\n\nexport const getOptionsDescription = (currentOption, optionKeys) => {\n // eslint-disable-next-line default-case\n if (optionKeys === 'Approval' || optionKeys === 'Signer') {\n switch (currentOption) {\n case 'all':\n case 'majority':\n case 'amount':\n return t('In the event of a tie, the first response with the majority wins.');\n }\n }\n};\n\nexport const getApprovalOptions = optionKeys => {\n switch (optionKeys) {\n case 'Approval':\n case 'Signer':\n return [\n { text: t(TEXTS.REQUIRE_RESPONSE_FROM_MAJORITY), value: 'majority' },\n { text: t(TEXTS.REQUIRE_RESPONSE_FROM_ALL), value: 'all' },\n { text: t(TEXTS.REQUIRE_RESPONSE_FROM_ONE_PERSON), value: 'first' },\n { text: t(TEXTS.REQUIRE_CERTAIN_NUMBER_OF_RESPONSE), value: 'amount' }\n ];\n default:\n return [];\n }\n};\n","import isEmpty from 'lodash/isEmpty';\nimport {\n string, func, shape, bool\n} from 'prop-types';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport { IconInfoCircleFilled } from '@jotforminc/svg-icons';\nimport { getApprover, getSelectedElementID, getTeamApproverByElement } from '../../store/selectors';\nimport Dropdown from '../Dropdown';\nimport { getApprovalOptions, getOptionsDescription } from './helper';\n\nconst ApprovalOptions = ({\n optionsKey = 'Approval',\n onChange = f => f,\n value = {},\n teamApprover = false\n}) => {\n const { option, value: numberOfResponse = null } = value || {};\n const [currentOption, setOption] = useState(option);\n const id = useSelector(getSelectedElementID);\n const approverLength = teamApprover ? useSelector(getTeamApproverByElement(id))?.length : useSelector(getApprover(id))?.length;\n const [response, setNumberOfResponse] = useState(numberOfResponse);\n\n useEffect(() => {\n if (isEmpty(value)) {\n onChange({ option: 'majority' });\n setOption('majority');\n }\n }, []);\n\n const updateOption = val => {\n setOption(val);\n onChange({\n ...value,\n option: val,\n ...(val === 'amount' ? { value: 1 } : { value: undefined })\n });\n };\n\n const updateNumberOfResponse = val => {\n onChange({\n ...value,\n ...(value && currentOption === 'amount' && { value: val })\n });\n setNumberOfResponse(val);\n };\n\n const numberArrayForApprovers = useMemo(() => {\n return [...Array(approverLength)].map((e, val) => ({ text: val + 1, value: val + 1 }));\n }, [approverLength]);\n\n return (\n <>\n \n
    \n {currentOption !== 'first' && (\n \n )}\n {getOptionsDescription(currentOption, optionsKey)}\n
    \n {\n currentOption === 'amount' && (\n <>\n
    Number of responses required
    \n \n \n )\n }\n \n );\n};\n\nApprovalOptions.propTypes = {\n optionsKey: string,\n onChange: func,\n value: shape({}),\n teamApprover: bool\n};\n\nexport default ApprovalOptions;\n","import { shape } from 'prop-types';\nimport React from 'react';\nimport { t } from '@jotforminc/translation';\nimport { TeamImageWithWrapper } from '@jotforminc/workflow-components';\n\nconst OptionRenderer = props => {\n const { option: team } = props;\n\n return (\n
    \n
    \n \n
    \n
    \n {team?.text}\n {' '}\n
    \n
    \n {team?.memberCount}\n {' '}\n {t('Members')}\n
    \n
    \n );\n};\n\nOptionRenderer.propTypes = {\n option: shape({})\n};\n\nOptionRenderer.defaultProps = {\n option: {\n team: {}\n }\n};\n\nexport default OptionRenderer;\n","import React, { forwardRef } from 'react';\nimport EditablePill from '@jotforminc/editable-pill';\nimport { TeamImageWithWrapper } from '@jotforminc/workflow-components';\nimport { func, shape } from 'prop-types';\nimport { t } from '@jotforminc/translation';\n\nconst ButtonRenderer = forwardRef((props, ref) => { // eslint-disable-line\n const { option = {}, handleRemoveTeam = f => f, ...rest } = props;\n return (\n \n {option\n ? (\n {\n return (\n \n );\n }}\n />\n ) : (\n
    \n {t('Please select a team')}\n
    \n )}\n \n );\n});\n\nButtonRenderer.propTypes = {\n option: shape({}),\n handleRemoveTeam: func\n};\n\nexport default ButtonRenderer;\n","import { func } from 'prop-types';\nimport React from 'react';\nimport { t } from '@jotforminc/translation';\n\nconst NoResults = ({ onClearFilter = f => f, ...rest }) => {\n return (\n
    \n
    \n {t('No results found.')}\n {' '}\n {t('Clear filter')}\n
    \n
    \n );\n};\n\nNoResults.propTypes = {\n onClearFilter: func\n};\n\nexport default NoResults;\n","import React from 'react';\nimport { IconPlusSm } from '@jotforminc/svg-icons';\nimport { handleCustomNavigation } from '@jotforminc/utils';\nimport { t } from '@jotforminc/translation';\nimport { useSelector } from 'react-redux';\nimport { getTeamSettings } from '../../store/selectors';\n\nconst NoTeams = () => {\n const { teamCreation } = useSelector(getTeamSettings);\n const canCreateTeam = teamCreation === '1';\n\n return (\n
    \n
    \n {canCreateTeam ? (\n <>\n
    \n {t('You don’t have any teams yet. Create your first team and start using Team Approvals.')}\n
    \n handleCustomNavigation(`${window.location.origin}/myapprovals?showCreateTeamModal=workflow`)}\n className=\"dropdown-empty-button\"\n >\n \n
    \n {t('CREATE TEAM')}\n
    \n \n \n ) : 'No teams found.'}\n
    \n
    \n );\n};\nexport default NoTeams;\n","import React, { forwardRef, useCallback } from 'react';\nimport { shape, string } from 'prop-types';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { t } from '@jotforminc/translation';\nimport Dropdown from '../Dropdown';\nimport { getTeams } from '../../store/selectors';\nimport OptionRenderer from './OptionRenderer';\nimport ButtonRenderer from './ButtonRenderer';\nimport NoResults from './NoResults';\nimport { updateElement } from '../../actionCreators';\nimport NoTeams from './NoTeams';\n\nconst TeamDropdown = ({\n value = '',\n valueList = {\n id: null\n }\n}) => {\n const { id } = valueList;\n const dispatch = useDispatch();\n const teams = useSelector(getTeams).map(team => ({ ...team, text: team.name, value: team.id }));\n\n const handleRemoveTeam = useCallback(() => {\n dispatch(updateElement({\n elementID: id,\n team: null,\n teamObject: null\n }));\n }, []);\n\n const handleOptionSelect = useCallback(val => {\n const team = teams.find(tm => tm.id === val);\n dispatch(updateElement({\n team: val,\n teamObject: team,\n elementID: id\n }));\n }, []);\n\n const hasFilter = teams.length > 5;\n\n return (\n
    \n )}\n OptionRenderer={OptionRenderer}\n ContainerRenderer={!teams.length ? NoTeams : undefined}\n NoResultsFoundRenderer={NoResults}\n onChange={handleOptionSelect}\n filterable={hasFilter}\n defaultValue={value}\n allowEmpty={true}\n textInputPlaceholder={t('Search Team')}\n />\n
    \n );\n};\n\nTeamDropdown.propTypes = {\n value: string,\n valueList: shape({})\n};\n\nexport default TeamDropdown;\n","import React, { useEffect } from 'react';\nimport { t } from '@jotforminc/translation';\nimport { handleCustomNavigation } from '@jotforminc/utils';\nimport {\n CTA_URLS, ALL_TEXTS, SDR_SOURCES, ASSET_IDENTIFIER,\n GA_SUFFIXES, createGaAttributes, saveCustomerAsHubspotFormByUsername, setEPActions\n} from '@jotforminc/ep-utils';\nimport '../../../styles/workflowGroupApprovalBanner.scss';\n\nconst WorkflowGroupApprovalBanner = () => {\n const { PRODUCT: { WORKFLOW_GROUP_APPROVAL_BANNER: target } } = ASSET_IDENTIFIER;\n\n const {\n WORKFLOW_GROUP_APPROVAL_BANNER: {\n CONTACT_SALES_URL,\n LEARN_MORE_URL\n }\n } = CTA_URLS;\n\n const gaAttributes = createGaAttributes(target);\n const gaAttributesCs = createGaAttributes(target, GA_SUFFIXES.CONTACT_SALES);\n const gaAttributesLM = createGaAttributes(target, GA_SUFFIXES.LEARN_MORE);\n\n useEffect(() => {\n setEPActions({ asset: target, target, action: 'seen' });\n }, []);\n\n const handleContactSalesClick = () => {\n setEPActions({ asset: target, target: 'contactSalesButton', action: 'click' });\n handleCustomNavigation(`${window.location.origin}${CONTACT_SALES_URL}`);\n saveCustomerAsHubspotFormByUsername({ lastProductAssetInteraction: SDR_SOURCES.WORKFLOW_GROUP_APPROVAL_BANNER });\n };\n\n const handleLearnMoreClick = () => {\n setEPActions({ asset: target, target: 'learnMoreButton', action: 'click' });\n handleCustomNavigation(`${window.location.origin}${LEARN_MORE_URL}`);\n saveCustomerAsHubspotFormByUsername({ lastProductAssetInteraction: SDR_SOURCES.WORKFLOW_GROUP_APPROVAL_BANNER });\n };\n\n return (\n
    \n
    \n

    {t(ALL_TEXTS.ENTERPRISE)}

    \n
    \n
    \n {t(ALL_TEXTS.GROUP_APPROVAL_BANNER_CONTENT)}\n
    \n
    \n {/* contact sales */}\n \n {t(ALL_TEXTS.CONTACT_SALES)}\n \n {/* learn more */}\n \n {t(ALL_TEXTS.LEARN_MORE)}\n \n
    \n
    \n );\n};\n\nexport default WorkflowGroupApprovalBanner;\n","import React from 'react';\nimport { string } from 'prop-types';\nimport { translationRenderer } from '@jotforminc/translation';\nimport { IconExclamationCircleFilled } from '@jotforminc/svg-icons';\nimport './wfApprovalLimit.scss';\n\nconst ApprovalLimit = ({\n redirectUrl = '',\n limitText = '',\n redirectUrlText = ''\n}) => {\n return (\n
    \n
    \n \n
    \n
    \n {translationRenderer(' [1[Limit warning text]] [2[redirect]] ')({\n renderer1: () => limitText,\n renderer2: () => (\n \n {redirectUrlText}\n \n )\n })}\n
    \n
    \n );\n};\n\nApprovalLimit.propTypes = {\n redirectUrl: string,\n limitText: string,\n redirectUrlText: string\n};\n\nexport default ApprovalLimit;\n","import { isEnterprise } from '@jotforminc/enterprise-utils';\n\nconst limitedAccountType = ['FREE', 'GUEST'];\n\nexport const isUniqueValue = (field, array) => array.findIndex(({ value }) => value === field) < 0;\n\nexport const isLimitlessAccount = account => !limitedAccountType.includes(account);\n\nexport const isLimitedAccount = account => limitedAccountType.includes(account);\n\nexport const getEmailRecipientLimit = account => (isLimitedAccount(account) && !isEnterprise() ? '3' : '10');\n\nexport const emailMaxCount = account => {\n if (!isLimitlessAccount(account)) {\n return 3;\n }\n return 10;\n};\n\nexport const EMAIL_CONFIGURATION = {\n MAX_EMAIL_RECIPIENT_LIMIT: account => emailMaxCount(account),\n GUEST_MAX_ACTION_COUNT: 3,\n FEEDBACK_MAX_ACTION_COUNT: 10\n};\n","export const EMAIL_LIST = {\n ADD_NEW: 'Add new approver',\n MAX_10: 'You have reached the limit (max 10)',\n LIMIT_TEXT: 'To add more approvers, please ',\n UPGRADE_TEXT: 'upgrade your account.',\n EMAIL_USED: 'This email is already in use.',\n AT_LEAST_ONE: 'At least one recipient is required'\n};\n","import React from 'react';\nimport { useHover } from '@jotforminc/hooks';\nimport { ContactCardPopover } from '@jotforminc/contact-card';\nimport EditablePill from '@jotforminc/editable-pill';\nimport { array, string } from 'prop-types';\n\nconst PillRenderer = ({\n userList = [],\n value = '',\n ...props\n}) => {\n const [hoverRef, isHovered] = useHover(700);\n return (\n <>\n user.email === value) || { email: value }}\n usePortal={true}\n targetRef={hoverRef}\n />\n
    \n \n
    \n \n );\n};\n\nPillRenderer.propTypes = {\n userList: array,\n value: string\n};\n\nexport default PillRenderer;\n","/* eslint-disable max-len */\nimport React, {\n useMemo\n} from 'react';\nimport { arrayOf, func, bool } from 'prop-types';\nimport { useSelector } from 'react-redux';\nimport { isEmail } from '@jotforminc/utils';\nimport { isEnterprise as isEnterpriseEnv } from '@jotforminc/enterprise-utils';\nimport { WorkflowGroupApprovalBanner } from '@jotforminc/enterprise-promotions';\nimport { t } from '@jotforminc/translation';\nimport ApprovalLimit from '../ApprovalLimit';\nimport {\n isLimitlessAccount, emailMaxCount, EMAIL_CONFIGURATION, isLimitedAccount, getEmailRecipientLimit\n} from './helper';\nimport { getUserAccountType, getEmailSuggestionList } from '../../store/selectors';\nimport EmailInput from '../EmailInput';\nimport { EMAIL_LIST } from './constants';\nimport PillRenderer from './PillRenderer';\n\nconst MultipleEmailInput = ({\n value = [],\n onChange = f => f,\n addFormFields = false,\n isDisableFreeTextOnRecipients = false\n}) => {\n const accountType = useSelector(getUserAccountType);\n const isEnterprise = isEnterpriseEnv();\n const emailRecipientLimit = isEnterprise ? Infinity : getEmailRecipientLimit(accountType);\n const maxCount = useMemo(() => (isEnterprise ? Infinity : emailMaxCount(accountType)), [accountType]);\n const showLimitError = useMemo(() => !isEnterprise && !isLimitlessAccount(accountType) && value?.length >= maxCount, [value]);\n const showEnterpriseLimitError = useMemo(() => !isEnterprise && !isLimitedAccount(accountType) && value?.length >= maxCount, [value]);\n const userList = useSelector(getEmailSuggestionList);\n const options = userList.map(({ email }) => ({ value: email, text: email }));\n\n return (\n <>\n {\n return (\n \n );\n }}\n value={value}\n limitedRecipientLogic={true}\n emailRecipientLimit={emailRecipientLimit}\n addFormFields={isDisableFreeTextOnRecipients ? false : addFormFields}\n onChange={onChange}\n isDisableFreeTextOnRecipients={isDisableFreeTextOnRecipients}\n isErrored={(emailValue = []) => {\n const validRecipients = emailValue?.filter?.(r => (typeof r === 'string' ? isEmail(r) : r.isValid || r.isValid === undefined)) || [];\n const invalidRecipients = emailValue.length - validRecipients.length;\n if (Array.isArray(emailValue) && !emailValue.length) {\n return t(EMAIL_LIST.AT_LEAST_ONE);\n }\n if (isDisableFreeTextOnRecipients) {\n const registedEmails = emailValue.filter(val => options.find(option => option.value === val.value));\n const unregisteredEmails = emailValue.length - registedEmails.length;\n if (unregisteredEmails > 0) {\n return t(`${unregisteredEmails} not registered or invalid email address `);\n }\n }\n\n if (invalidRecipients) {\n return t(`${invalidRecipients} invalid email address`);\n }\n\n if (EMAIL_CONFIGURATION.MAX_EMAIL_RECIPIENT_LIMIT(accountType) && validRecipients.length > EMAIL_CONFIGURATION.MAX_EMAIL_RECIPIENT_LIMIT(accountType)) {\n return true;\n }\n return false;\n }}\n showSuggestionsOnFocus={isDisableFreeTextOnRecipients}\n />\n {showLimitError && (\n \n )}\n {showEnterpriseLimitError && (\n \n )}\n \n );\n};\n\nMultipleEmailInput.propTypes = {\n value: arrayOf(),\n onChange: func,\n addFormFields: bool,\n isDisableFreeTextOnRecipients: bool\n};\n\nexport default MultipleEmailInput;\n","import { string } from 'prop-types';\nimport React, { useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { updateMultipleOutcome } from '../../actionCreators';\nimport { getSelectedElementID } from '../../store/selectors';\nimport Toggle from '../Toggle';\n\nconst EnableSignatureToggle = ({ value = '' }) => {\n const [toggled, setToggled] = useState(value);\n const dispatch = useDispatch();\n const elementID = useSelector(getSelectedElementID);\n\n const handleToggle = val => {\n setToggled(val);\n dispatch(updateMultipleOutcome({ elementID, outcomeProps: { outcomeSign: val }, data: { enableSignature: val } }));\n };\n\n return (\n \n );\n};\n\nexport default EnableSignatureToggle;\n\nEnableSignatureToggle.propTypes = {\n value: string\n};\n","import React from 'react';\nimport { node } from 'prop-types';\nimport Toggle from '../Toggle';\n\nconst DefaultStateToggle = ({\n toggleValues = {}\n}) => {\n const {\n tooltipText, defaultValue, updateKey, isReadOnly\n } = toggleValues;\n\n return (\n \n );\n};\n\nDefaultStateToggle.propTypes = {\n toggleValues: node\n};\n\nexport default DefaultStateToggle;\n","import React from 'react';\nimport { bool, node } from 'prop-types';\nimport { useDispatch, useSelector } from 'react-redux';\nimport Toggle from '../Toggle';\nimport { getSelectedElementID, getSelectedElementInfo } from '../../store/selectors';\nimport { isYes } from '../../utils';\nimport { updateElement } from '../../actionCreators';\nimport DefaultStateToggle from '../DefaultStateToggle';\n\nconst DisableStateToggle = ({\n toggleValues = {},\n setDefaultReadOnlyValue = false\n}) => {\n const {\n tooltipText, defaultValue, readOnly, updateKey\n } = toggleValues;\n const dispatch = useDispatch();\n\n const elementID = useSelector(getSelectedElementID);\n const { sendNotification, [updateKey]: toggled } = useSelector(getSelectedElementInfo);\n const isReadOnly = setDefaultReadOnlyValue ? readOnly : !isYes(sendNotification);\n\n const handleToggle = val => {\n const update = {\n [updateKey]: val,\n elementID\n };\n dispatch(updateElement(update));\n };\n\n if (isReadOnly) {\n return (\n \n );\n }\n\n return (\n \n );\n};\n\nDisableStateToggle.propTypes = {\n toggleValues: node,\n setDefaultReadOnlyValue: bool\n};\n\nexport default DisableStateToggle;\n","import React from 'react';\nimport { number } from 'prop-types';\n\nexport const LimitRenderer = ({ length, limit }) => {`${length}/${limit}`};\n\nLimitRenderer.propTypes = {\n length: number,\n limit: number\n};\n\nLimitRenderer.defaultProps = {\n length: 0,\n limit: 0\n};\n","import React, {\n useEffect, useState, useMemo, useCallback\n} from 'react';\nimport {\n elementType, number, func, string\n} from 'prop-types';\nimport TextInput from '../TextInput';\nimport { LimitRenderer as DefaultLimitRenderer } from './LimitRenderer';\nimport { useEffectIgnoreFirst } from '../../utils/hooks';\n\nconst TextArea = ({\n limit, LimitRenderer, onChange, value: initialValue, onFocus, onBlur, ...rest\n}) => {\n const shouldApplyLimit = useMemo(() => limit > 0, [limit]);\n const normalizeValue = useCallback(inputVal => (shouldApplyLimit ? inputVal.slice(0, limit) : inputVal), [shouldApplyLimit, limit]);\n\n const [isFocused, setFocused] = useState(false);\n\n const [value, setValue] = useState(normalizeValue(initialValue));\n const handleChange = e => setValue(normalizeValue(e.target.value));\n\n const handleFocus = useCallback(e => {\n setFocused(true);\n onFocus(e);\n }, [onFocus]);\n\n const handleBlur = useCallback(e => {\n setFocused(false);\n onBlur(e);\n }, [onBlur]);\n\n useEffectIgnoreFirst(() => {\n onChange(value);\n }, [value]);\n\n useEffect(() => {\n if (value !== initialValue && !isFocused) {\n setValue(normalizeValue(initialValue));\n }\n }, [initialValue]);\n\n return (\n <>\n \n {shouldApplyLimit && (\n \n )}\n \n );\n};\n\nTextArea.propTypes = {\n value: string,\n onChange: func,\n limit: number,\n LimitRenderer: elementType,\n onFocus: func,\n onBlur: func\n};\n\nTextArea.defaultProps = {\n value: '',\n onChange: f => f,\n limit: -1,\n LimitRenderer: props => ,\n onFocus: f => f,\n onBlur: f => f\n};\n\nexport default TextArea;\n","import React, { useRef, useCallback } from 'react';\nimport {\n string, func, bool, number\n} from 'prop-types';\nimport { TextArea as UIKitTextArea } from '@jotforminc/uikit';\nimport { useDebounce } from '@jotforminc/hooks';\n\nconst TextArea = ({\n id, onChange, value, debounce, limit,\n ...props\n}) => {\n const ref = useRef();\n const debouncedOnChange = useDebounce(onChange);\n const handleValueChange = useCallback(tempValue => {\n const handler = debounce ? debouncedOnChange : onChange;\n handler(tempValue);\n }, []);\n\n const handleLimitGlow = e => {\n const nextSpan = e.target.nextElementSibling;\n if (e.target.value.length >= 300) {\n if (nextSpan) {\n nextSpan.classList.remove('isCharLimitExceeded');\n // eslint-disable-next-line no-unused-expressions\n nextSpan.offsetWidth;\n nextSpan.classList.add('isCharLimitExceeded');\n }\n }\n };\n\n return (\n \n );\n};\n\nTextArea.propTypes = {\n id: string.isRequired,\n value: string,\n debounce: bool,\n onChange: func.isRequired,\n limit: number\n};\n\nTextArea.defaultProps = {\n value: '',\n debounce: false,\n limit: 0\n};\n\nexport default TextArea;\n","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { object, string } from 'prop-types';\nimport { Button } from '@jotforminc/magnet';\nimport { handleWorkflowForm } from '../../actionCreators';\nimport { getWorkflowFormBuilder } from '../../store/selectors';\n\nconst WorkflowFormBuilderButton = ({ valueList: { id }, buttonName = 'CUSTOMIZE' }) => {\n const { loading, elementID } = useSelector(getWorkflowFormBuilder);\n const dispatch = useDispatch();\n const isLoading = loading && id === elementID;\n\n const showEditor = () => {\n dispatch(handleWorkflowForm({ elementID: id }));\n };\n\n return (\n <>\n
    \n showEditor(true)}\n loader={isLoading}\n >\n {buttonName}\n \n
    \n \n );\n};\n\nWorkflowFormBuilderButton.propTypes = {\n valueList: object.isRequired,\n buttonName: string\n};\n\nexport default WorkflowFormBuilderButton;\n","import ColorPicker from '../components/ColorPicker';\nimport Toggle from '../components/Toggle';\nimport Dropdown from '../components/Dropdown';\nimport FileUpload from '../components/FileUpload';\nimport EmailInput from '../components/EmailInput';\nimport RichTextEditor from '../components/RichTextEditor';\nimport OutcomesWizard from '../components/OutcomesWizard';\nimport CommentWizard from '../components/CommentWizard';\nimport EscalationWizard from '../components/EscalationWizard';\nimport TextInput from '../components/TextInput';\nimport EscalateTaskWizard from '../components/EscalationWizard/EscalateTaskWizard';\nimport ReassignWizard from '../components/ReassignWizard';\nimport ReassignNotificationWizard from '../components/ReassignWizard/ReassignNotificationWizard';\nimport SendReminderWizard from '../components/SendReminderWizard';\nimport RemindAfterWizard from '../components/SendReminderWizard/RemindAfterWizard';\nimport CustomizeReminderWizard from '../components/SendReminderWizard/CustomizeReminderWizard';\nimport ElementEmailWizard from '../components/ElementEmailWizard';\nimport SingleEmailInput from '../components/SingleEmailInput';\nimport Button from '../components/Button';\nimport DueDateWizard from '../components/DueDateWizard/DueDateWizard';\nimport ExpirationWizard from '../components/ExpirationWizard/ExpirationWizard';\nimport AutoFinishTaskWizard from '../components/AutoFinishTaskWizard/AutoFinishTaskWizard';\nimport AutoFinishOutcomeSelectionWizard from '../components/AutoFinishTaskWizard/OutcomeSelectionWizard';\nimport OptionGroup from '../components/OptionGroup/OptionGroup';\nimport MixedTagInput from '../components/MixedTagInput';\nimport ExtendableChecklist from '../components/ChecklistWizard/ExtendableChecklist';\nimport ChecklistWizard from '../components/ChecklistWizard';\nimport Checkbox from '../components/Checkbox';\nimport CheckBoxWithDefaultValue from '../components/CheckBoxWithDefaultValue';\nimport UserEmailsDropdownWizard from '../components/UserEmailsDropdownWizard';\nimport OutcomesCheckboxWizard from '../components/OutcomesCheckboxWizard';\nimport PDFSelectListWizard from '../components/PDFSelectListWizard';\nimport Password from '../components/PDFSelectListWizard/password';\nimport PDFPassword from '../components/PDFSelectListWizard/passwordWizard';\nimport PDFPasswordCheckbox from '../components/PDFSelectListWizard/passwordCheckbox';\nimport FormPickerWizard from '../components/FormPickerWizard';\nimport DocumentPickerWizard from '../components/DocumentPickerWizard';\nimport DocumentSignMatcher from '../components/DocumentSignMatcher';\nimport PrefillFieldMatcher from '../components/PrefillFieldMatcher';\nimport Banner from '../components/Banner';\nimport PreviewWizard from '../components/PreviewWizard';\nimport MultipleFormPDF from '../components/MultipleFormPDF';\nimport ApprovalOptions from '../components/ApprovalOptions';\nimport TeamDropdown from '../components/TeamDropdown';\nimport MultipleEmailInput from '../components/MultipleEmailInput';\nimport EnableSignatureToggle from '../components/EnableSignatureToggle';\nimport DisableStateToggle from '../components/DisableStateToggle';\nimport DefaultStateToggle from '../components/DefaultStateToggle';\nimport TextArea from '../components/TextArea';\nimport WorkflowFormBuilderButton from '../components/WorkflowFormBuilderButton';\n\nexport const EMAIL_INPUT = 'emailType';\nexport const FILE_UPLOAD = 'fileUpload';\nexport const DROPDOWN = 'dropdown';\nexport const TOGGLE = 'toggle';\nexport const BUTTON = 'button';\nexport const RICH_TEXT_EDITOR = 'richTextEditor';\nexport const ELEMENT_EMAIL_WIZARD = 'elementEmailWizard';\nexport const OUTCOMES_WIZARD = 'outcomesWizard';\nexport const OUTCOMES_CHECKBOX_WIZARD = 'outcomesChecboxWizard';\nexport const CHECKBOX_OUTCOMES_WIZARD = 'checkboxOutcomesWizard';\nexport const COLOR_PICKER = 'colorPicker';\nexport const COMMENT_WIZARD = 'commentWizard';\nexport const REASSIGN_WIZARD = 'reassignWizard';\nexport const REASSIGN_NOTIFICATION_WIZARD = 'reassignNotificationWizard';\nexport const ESCALATION_WIZARD = 'escalationWizard';\nexport const DUE_DATE_WIZARD = 'dueDateWizard';\nexport const ESCALATE_TASK_WIZARD = 'escalateTaskWizard';\nexport const AUTO_COMPLETE_WIZARD = 'autoCompleteWizard';\nexport const AUTO_COMPLETE_OUTCOME_WIZARD = 'autoCompleteOutcomeWizard';\nexport const EXPIRATION_WIZARD = 'expirationWizard';\nexport const TEXT_INPUT = 'textInput';\nexport const SEND_REMINDER_WIZARD = 'sendReminderWizard';\nexport const REMIND_AFTER_WIZARD = 'remindAfterWizard';\nexport const CUSTOMIZE_REMINDER_WIZARD = 'customizeReminderWizard';\nexport const SINGLE_EMAIL_INPUT = 'singleEmailInput';\nexport const OPTION_GROUP = 'optionGroup';\nexport const TAG_INPUT = 'tagInput';\nexport const CHECKLIST_WIZARD = 'checklistWizard';\nexport const EXTENDABLE_CHECKLIST = 'extendableChecklist';\nexport const CHECKBOX = 'checkbox';\nexport const CHECKBOX_WITH_DEFAULT_VALUE = 'checkBoxWithDefaultValue';\nexport const USER_EMAILS_DROPDOWN_WIZARD = 'userEmailsDropdownWizard';\nexport const EMPTY_ELEMENT = 'emptyElement';\nexport const PDF_SELECT_LIST = 'pdfSelectList';\nexport const PASSWORD = 'password';\nexport const PDF_PASSWORD = 'pdfPassword';\nexport const PDF_PASSWORD_CHECKBOX = 'pdfPasswordCheckbox';\nexport const FORM_PICKER_WIZARD = 'formPickerWizard';\nexport const DOCUMENT_PICKER_WIZARD = 'documentPickerWizard';\nexport const DOCUMENT_SIGN_MATCHER = 'documentSignMatcher';\nexport const PREFILL_FIELD_MATCHER = 'prefillFieldMatcher';\nexport const BANNER = 'banner';\nexport const PREVIEW_WIZARD = 'previewWizard';\nexport const MULTI_FORM_PDF = 'multipleFormPDF';\nexport const APPROVAL_OPTIONS = 'approvalOptions';\nexport const MULTIPLE_EMAIL_INPUT = 'multipleEmailInput';\nexport const TEAM_DROPDOWN = 'teamDropdown';\nexport const ENABLE_SIGNATURE_TOGGLE = 'enableSignatureToggle';\nexport const DISABLE_STATE_TOGGLE = 'disableStateToggle';\nexport const DEFAULT_STATE_TOGGLE = 'defaultStateToggle';\nexport const TEXTAREA = 'textArea';\nexport const WORKFLOW_FORM_BUILDER_BUTTON = 'WorkflowFormBuilderButton';\n\nconst componentTypes = {\n [TEXT_INPUT]: TextInput,\n [TEXTAREA]: TextArea,\n [EMAIL_INPUT]: EmailInput,\n [FILE_UPLOAD]: FileUpload,\n [DROPDOWN]: Dropdown,\n [TOGGLE]: Toggle,\n [RICH_TEXT_EDITOR]: RichTextEditor,\n [ELEMENT_EMAIL_WIZARD]: ElementEmailWizard,\n [OUTCOMES_WIZARD]: OutcomesWizard,\n [OUTCOMES_CHECKBOX_WIZARD]: OutcomesCheckboxWizard,\n [COLOR_PICKER]: ColorPicker,\n [COMMENT_WIZARD]: CommentWizard,\n [REASSIGN_WIZARD]: ReassignWizard,\n [REASSIGN_NOTIFICATION_WIZARD]: ReassignNotificationWizard,\n [ESCALATION_WIZARD]: EscalationWizard,\n [DUE_DATE_WIZARD]: DueDateWizard,\n [ESCALATE_TASK_WIZARD]: EscalateTaskWizard,\n [EXPIRATION_WIZARD]: ExpirationWizard,\n [SEND_REMINDER_WIZARD]: SendReminderWizard,\n [AUTO_COMPLETE_WIZARD]: AutoFinishTaskWizard,\n [AUTO_COMPLETE_OUTCOME_WIZARD]: AutoFinishOutcomeSelectionWizard,\n [REMIND_AFTER_WIZARD]: RemindAfterWizard,\n [CUSTOMIZE_REMINDER_WIZARD]: CustomizeReminderWizard,\n [SINGLE_EMAIL_INPUT]: SingleEmailInput,\n [BUTTON]: Button,\n [OPTION_GROUP]: OptionGroup,\n [TAG_INPUT]: MixedTagInput,\n [CHECKLIST_WIZARD]: ChecklistWizard,\n [EXTENDABLE_CHECKLIST]: ExtendableChecklist,\n [CHECKBOX]: Checkbox,\n [CHECKBOX_WITH_DEFAULT_VALUE]: CheckBoxWithDefaultValue,\n [USER_EMAILS_DROPDOWN_WIZARD]: UserEmailsDropdownWizard,\n [EMPTY_ELEMENT]: () => null,\n [PASSWORD]: Password,\n [PDF_SELECT_LIST]: PDFSelectListWizard,\n [PDF_PASSWORD]: PDFPassword,\n [PDF_PASSWORD_CHECKBOX]: PDFPasswordCheckbox,\n [FORM_PICKER_WIZARD]: FormPickerWizard,\n [DOCUMENT_PICKER_WIZARD]: DocumentPickerWizard,\n [DOCUMENT_SIGN_MATCHER]: DocumentSignMatcher,\n [PREFILL_FIELD_MATCHER]: PrefillFieldMatcher,\n [BANNER]: Banner,\n [PREVIEW_WIZARD]: PreviewWizard,\n [MULTI_FORM_PDF]: MultipleFormPDF,\n [APPROVAL_OPTIONS]: ApprovalOptions,\n [MULTIPLE_EMAIL_INPUT]: MultipleEmailInput,\n [TEAM_DROPDOWN]: TeamDropdown,\n [ENABLE_SIGNATURE_TOGGLE]: EnableSignatureToggle,\n [DISABLE_STATE_TOGGLE]: DisableStateToggle,\n [DEFAULT_STATE_TOGGLE]: DefaultStateToggle,\n [WORKFLOW_FORM_BUILDER_BUTTON]: WorkflowFormBuilderButton\n};\n\nexport default componentTypes;\n","export const CONDITIONAL_TERMS_MATCH_TYPES = {\n ALL: 'All',\n ANY: 'Any'\n};\n","import { getAppPath } from '@jotforminc/router-bridge';\nimport { isEnterprise } from '@jotforminc/enterprise-utils';\n\n// window.user is not initialized yet\nconst accountType = window?.__flowOwnerAccountType || 'FREE';\nconst recipientLimit = () => {\n if (['FREE', 'GUEST'].includes(accountType)) {\n return 1;\n }\n if (isEnterprise() || ['ADMIN', 'SUPPORT'].includes(accountType)) {\n return Infinity;\n }\n return 10;\n};\n\nconst CONFIGURATION = {\n PUBLIC_BASE_PATH: `${getAppPath()}/`,\n MINIMUM_ZOOM: 25,\n MAXIMUM_ZOOM: 250,\n DEFAULT_DATE_TIME_FORMAT: 'lll',\n ELEMENT_ADDED_COOKIE_NAME: 'wfElementAddedBefore',\n MINIMUM_SUB_COUNT: 'feature_minimumSubmission',\n START_DATE_VAL: 'feature_startDate',\n END_DATE_VAL: 'feature_endDate',\n CANVAS_DELETE_KEY_CODES: [46, 8],\n CANVAS_DESELECT_KEY_CODES: [27],\n MAX_EMAIL_RECIPIENT_LIMIT: recipientLimit(),\n GUEST_MAX_ACTION_COUNT: 3,\n FEEDBACK_MAX_ACTION_COUNT: 10\n};\n\nexport default CONFIGURATION;\n","export const STATE_NAME = 'state';\nexport const SELECTION_NAME = 'selection-state';\nexport const DRAG_NODE_NAME = 'drag-node-state';\nexport const MOVE_NODE_NAME = 'move-node-state';\nexport const DRAG_LINK_NAME = 'drag-link-state';\nexport const SHOW_PORT_NAME = 'show-port-state';\nexport const EDIT_LINK_NAME = 'edit-link-state';\nexport const PAN_CANVAS_NAME = 'pan-canvas-state';\nexport const DRAG_DIAGRAM_NAME = 'move-items-state';\nexport const CREATE_LINK_NAME = 'create-link-state';\nexport const SHOW_TOOLBOX_NAME = 'show-toolbox-state';\nexport const SHOW_GUILDELINE_NAME = 'show-guildeline-state';\nexport const SHOW_SELECTIONBOX_NAME = 'show-selectionbox-state';\nexport const REPLACE_PLACEHOLDER_NAME = 'replace-placeholder-state';\nexport const PINCH_TO_ZOOM_CANVAS_NAME = 'pinch-to-zoom-canvas-state';\n","import { PARTNER_NAMES } from './IntegrationDetails';\n\n// Please don't add link types here;\nexport const elementTypes = {\n MERGE: 'workflow_merge',\n SPLIT: 'workflow_split',\n ASSIGN: 'workflow_assign',\n GENERIC: 'workflow_generic',\n END_POINT: 'workflow_end_point',\n APPROVAL: 'workflow_approval',\n SEND_EMAIL: 'workflow_send_email',\n PLACEHOLDER: 'workflow_placeholder',\n START_POINT: 'workflow_start_point',\n BINARY_DECISION: 'workflow_binary_decision',\n CONDITIONAL_BRANCH: 'workflow_conditional_branch',\n ASSIGN_FORM: 'workflow_assign_form',\n SIGN_DOCUMENT: 'workflow_sign_document',\n INTEGRATION: 'workflow_integration',\n ASSIGN_TASK: 'workflow_assign_task'\n};\n\nexport const conditionalElementTypes = [\n elementTypes.BINARY_DECISION,\n elementTypes.CONDITIONAL_BRANCH\n];\n\nexport const elementTypesWithOutcome = [\n elementTypes.APPROVAL,\n elementTypes.ASSIGN,\n elementTypes.SIGN_DOCUMENT,\n elementTypes.ASSIGN_TASK,\n ...conditionalElementTypes\n];\n\nexport const nonRectangleElementTypes = [\n elementTypes.END_POINT,\n elementTypes.MERGE,\n elementTypes.SPLIT\n];\n\nexport const elementsTypesWithRequiredHeaders = [\n elementTypes.SEND_EMAIL\n];\n\nexport const elementSubTypes = {\n APPROVAL_WITH_SIGN: 'workflow_approval_with_sign',\n SEND_APPROVAL_REPORT: 'workflow_send_approval_report',\n SEND_PDF: 'workflow_send_pdf',\n END_POINT_PSEUDO: 'workflow_end_point_pseudo',\n END_POINT_TERMINATE: 'workflow_end_point_terminate',\n SEND_DEFAULT_REPORT: 'workflow_send_default_report',\n TEAM_APPROVAL: 'workflow_team_approval',\n PAYMENT_FORM: 'workflow_payment_form',\n ...PARTNER_NAMES\n};\n\nexport const MISSING_CONDITON_TEXT = '\"MISSING FIELD\"'; // same with builder repo, don't translate it right here. We're doing string match!!\n","import { elementTypes, elementSubTypes } from './elementTypes';\nimport {\n DEFAULT_FEATURES, CONDITIONAL_BRANCH_MODAL, BINARY_DECISION_MODAL, NEW_REPORT_ELEMENT\n} from './features';\nimport { PARTNER_NAMES } from './IntegrationDetails';\n\nconst elementHasModalPropertyPanel = (type, subType) => {\n const priority = subType || type;\n const allTypes = [...elementSubTypesWithoutPropertyPanel, ...elementTypesWithPropertyPanel, ...Object.values(PARTNER_NAMES)];\n return allTypes.includes(priority);\n};\n\nconst elementSubTypesWithoutPropertyPanel = [\n elementSubTypes.SEND_PDF,\n elementSubTypes.PAYMENT_FORM,\n (DEFAULT_FEATURES[NEW_REPORT_ELEMENT] ? elementSubTypes.SEND_APPROVAL_REPORT : [])\n];\n\nconst elementTypesWithPropertyPanel = [\n elementTypes.ASSIGN_FORM,\n elementTypes.SIGN_DOCUMENT,\n (DEFAULT_FEATURES[CONDITIONAL_BRANCH_MODAL] ? elementTypes.CONDITIONAL_BRANCH : []),\n (DEFAULT_FEATURES[BINARY_DECISION_MODAL] ? elementTypes.BINARY_DECISION : [])\n];\n\nexport default elementHasModalPropertyPanel;\n","import { elementTypes } from './elementTypes';\nimport { DEFAULT_FEATURES, TERMINATE_FLOW } from './features';\nimport elementHasModalPropertyPanel from './elementsWithModalPropertyPanel';\n\nconst elementHasPropertyPanel = (type, subType) => {\n if (elementHasModalPropertyPanel(type, subType)) {\n return false;\n }\n\n const priority = subType || type;\n const allTypes = [...elementSubTypesWithoutPropertyPanel, ...elementTypesWithoutPropertyPanel];\n return !allTypes.includes(priority);\n};\n\nconst elementSubTypesWithoutPropertyPanel = [];\n\nconst elementTypesWithoutPropertyPanel = [\n elementTypes.START_POINT,\n elementTypes.SEND_EMAIL,\n ...(DEFAULT_FEATURES[TERMINATE_FLOW] ? [] : [elementTypes.END_POINT]),\n elementTypes.PLACEHOLDER\n];\n\nexport default elementHasPropertyPanel;\n","export const ApprovalEmailSubTypes = {\n APPROVAL_REQUEST: 'APPROVAL_REQUEST',\n APPROVAL_REMINDER: 'APPROVAL_REMINDER'\n};\n\nexport const AssignEmailSubTypes = {\n ASSIGN_NOTIFICATION: 'ASSIGN_NOTIFICATION',\n ASSIGN_REMINDER: 'ASSIGN_REMINDER'\n};\n\nexport const AssignFormEmailSubTypes = {\n ASSIGN_FORM_REMINDER: 'ASSIGN_FORM_REMINDER'\n};\n\nexport const AssignTaskEmailSubTypes = {\n ASSIGN_TASK_REMINDER: 'ASSIGN_TASK_REMINDER'\n};\n","import { t } from '@jotforminc/translation';\nimport { EMAIL_TEMPLATE_TYPES } from '@jotforminc/email-wizards';\nimport {\n ApprovalEmailSubTypes, AssignEmailSubTypes, AssignFormEmailSubTypes, AssignTaskEmailSubTypes\n} from './emailSubTypes';\nimport { elementSubTypes, elementTypes } from './elementTypes';\nimport { TEXTS } from './strings';\n\nexport const elementEmailWizardTemplates = {\n TYPES: {\n [elementTypes.APPROVAL]: {\n wizardKey: 'sendCustomApprovalEmail',\n emailType: EMAIL_TEMPLATE_TYPES.WORKFLOW_APPROVE_START,\n emailSubType: ApprovalEmailSubTypes.APPROVAL_REQUEST,\n label: t(TEXTS.APPROVAL_REQUEST_EMAIL),\n description: t(TEXTS.APPROVAL_REQUEST_EMAIL_DESC)\n },\n [elementTypes.ASSIGN]: {\n wizardKey: 'email',\n emailType: EMAIL_TEMPLATE_TYPES.WORKFLOW_ASSIGN_START,\n emailSubType: AssignEmailSubTypes.ASSIGN_NOTIFICATION,\n label: t(TEXTS.ASSIGN_EMAIL),\n description: t(TEXTS.ASSIGN_EMAIL_DESC)\n },\n [elementTypes.ASSIGN_FORM]: {\n wizardKey: 'email',\n emailType: EMAIL_TEMPLATE_TYPES.WORKFLOW_ASSIGN_FORM_NOTIFICATION,\n label: t(TEXTS.ASSIGN_FORM_EMAIL),\n description: t(TEXTS.ASSIGN_FORM_EMAIL_DESC)\n },\n [elementTypes.ASSIGN_TASK]: {\n wizardKey: 'assignTaskEmail',\n emailType: EMAIL_TEMPLATE_TYPES.WORKFLOW_ASSIGN_TASK,\n label: t(TEXTS.ASSIGN_FORM_EMAIL),\n description: t(TEXTS.ASSIGN_FORM_EMAIL_DESC)\n }\n },\n SUBTYPES: {\n [elementTypes.SEND_EMAIL]: {\n [elementSubTypes.SEND_APPROVAL_REPORT]: {\n wizardKey: 'email',\n emailType: EMAIL_TEMPLATE_TYPES.WORKFLOW_SEND_EMAIL_GENERAL,\n emailSubType: EMAIL_TEMPLATE_TYPES.WORKFLOW_SEND_EMAIL_GENERAL,\n label: t(TEXTS.FLOW_REPORT_EMAIL),\n description: t(TEXTS.FLOW_REPORT_EMAIL_DESC)\n },\n [elementSubTypes.SEND_PDF]: {\n wizardKey: 'email',\n emailType: EMAIL_TEMPLATE_TYPES.WORKFLOW_SEND_EMAIL_GENERAL,\n emailSubType: EMAIL_TEMPLATE_TYPES.WORKFLOW_SEND_PDF,\n label: t(TEXTS.SEND_PDF_EMAIL),\n description: t(TEXTS.SEND_PDF_EMAIL_DESC)\n },\n [elementSubTypes.SEND_DEFAULT_REPORT]: {\n wizardKey: 'email',\n emailType: EMAIL_TEMPLATE_TYPES.WORKFLOW_SEND_EMAIL_GENERAL,\n emailSubType: EMAIL_TEMPLATE_TYPES.WORKFLOW_SEND_REPORT,\n label: t(TEXTS.FLOW_REPORT_EMAIL),\n description: t(TEXTS.FLOW_REPORT_EMAIL_DESC)\n }\n }\n }\n};\n\nexport const getElementEmailWizardTemplate = (type, subType) => {\n if (subType) {\n return elementEmailWizardTemplates.SUBTYPES[type][subType];\n }\n return elementEmailWizardTemplates.TYPES[type];\n};\n\nexport const reminderEmailWizardTemplates = {\n [elementTypes.APPROVAL]: {\n emailSubType: ApprovalEmailSubTypes.APPROVAL_REMINDER,\n emailType: EMAIL_TEMPLATE_TYPES.WORKFLOW_APPROVE_START\n },\n [elementTypes.ASSIGN]: {\n emailSubType: AssignEmailSubTypes.ASSIGN_REMINDER,\n emailType: EMAIL_TEMPLATE_TYPES.WORKFLOW_ASSIGN_START\n },\n [elementTypes.ASSIGN_FORM]: {\n emailType: EMAIL_TEMPLATE_TYPES.WORKFLOW_ASSIGN_FORM_NOTIFICATION,\n emailSubType: AssignFormEmailSubTypes.ASSIGN_FORM_REMINDER\n },\n [elementTypes.ASSIGN_TASK]: {\n emailType: EMAIL_TEMPLATE_TYPES.WORKFLOW_ASSIGN_TASK,\n emailSubType: AssignTaskEmailSubTypes.ASSIGN_TASK_REMINDER\n }\n};\n","import { elementSubTypes, elementTypes } from './elementTypes';\nimport { DEFAULT_FEATURES, MULTIPLE_APPROVAL } from './features';\n\nconst isMultipleApproval = DEFAULT_FEATURES[MULTIPLE_APPROVAL];\n\nexport const WF_ERROR_TYPES = {\n ELEMENT_NOT_CONNECTED: 'ELEMENT_NOT_CONNECTED',\n APPROVAL_OUTCOMES_NOT_CONNECTED: 'APPROVAL_OUTCOMES_NOT_CONNECTED',\n BRANCHES_NOT_CONNECTED: 'BRANCHES_NOT_CONNECTED',\n EMPTY_APPROVER_EMAIL: 'EMPTY_APPROVER_EMAIL',\n INVALID_APPROVER_EMAIL: 'INVALID_APPROVER_EMAIL',\n ELEMENT_HAS_EMPTY_OUTCOME: 'ELEMENT_HAS_EMPTY_OUTCOME',\n BINARY_DECISION_HAS_EMPTY_OUTCOME: 'BINARY_DECISION_HAS_EMPTY_OUTCOME',\n BRANCH_EMPTY_CONDITIONS: 'BRANCH_EMPTY_CONDITIONS',\n SEND_EMAIL_EMPTY_RECIPIENT: 'SEND_EMAIL_EMPTY_RECIPIENT',\n SEND_EMAIL_INVALID_RECIPIENT: 'SEND_EMAIL_INVALID_RECIPIENT',\n SEND_EMAIL_RECIPIENT_LIMIT: 'SEND_EMAIL_RECIPIENT_LIMIT',\n CONDITIONS_ON_ENCRYPTED_FORM: ' CONDITIONAL_BRANCH_ON_ENCRYPTED_FORM',\n DISABLED_ON_ENCRYPTED_FORM: 'DISABLED_ON_ENCRYPTED_FORM',\n BINARY_DECISION_INVALID_CONDITIONS: 'BINARY_DECISION_INVALID_CONDITIONS',\n CONDITIONAL_BRANCH_INVALID: 'CONDITIONAL_BRANCH_INVALID',\n APPROVER_NOT_ENTERPRISE: 'APPROVER_NOT_ENTERPRISE',\n ESCALATION_NOT_ENTERPRISE: 'ESCALATION_NOT_ENTERPRISE',\n APPROVAL_AND_SIGN_OUTCOMES_NOT_CONNECTED: 'APPROVAL_AND_SIGN_OUTCOMES_NOT_CONNECTED',\n APPROVAL_AND_SIGN_REQUIRE_OUTCOMES: 'APPROVAL_AND_SIGN_REQUIRE_OUTCOMES',\n ASSIGN_FORM_RECIPIENT_EMPTY: 'ASSIGN_FORM_RECIPIENT_EMPTY',\n ASSIGN_FORM_FORM_NOT_SELECTED: 'ASSIGN_FORM_FORM_NOT_SELECTED',\n ASSIGN_FORM_RECIPIENT_INVALID: 'ASSIGN_FORM_RECIPIENT_INVALID',\n SIGN_DOCUMENT_DOCUMENT_NOT_SELECTED: 'SIGN_DOCUMENT_DOCUMENT_NOT_SELECTED',\n SIGN_DOCUMENT_NO_PARTICIPANTS: 'SIGN_DOCUMENT_NO_PARTICIPANTS',\n SIGN_DOCUMENT_EMPTY_PARTICIPANT: 'SIGN_DOCUMENT_EMPTY_PARTICIPANT',\n INVALID_ESCALATION_EMAIL: 'INVALID_ESCALATION_EMAIL',\n EMPTY_TEAM_APPROVAL: 'EMPTY_TEAM_APPROVAL',\n SMTP_CONFIG_ERROR: 'SMTP_CONFIG_ERROR',\n MISSING_QUCIKBOOKS_AUTHENTICATION: 'MISSING_QUCIKBOOKS_AUTHENTICATION',\n MISSING_QUCIKBOOKS_SETTINGS: 'MISSING_QUCIKBOOKS_SETTINGS',\n SIGN_DOCUMENT_OUTCOMES_NOT_CONNECTED: 'SIGN_DOCUMENT_OUTCOMES_NOT_CONNECTED',\n ASSIGN_TASK_OUTCOMES_NOT_CONNECTED: 'ASSIGN_TASK_OUTCOMES_NOT_CONNECTED',\n EMPTY_ASSIGN_TASK_EMAIL: 'EMPTY_ASSIGN_TASK_EMAIL',\n INVALID_ASSIGN_TASK_EMAIL: 'INVALID_ASSIGN_TASK_EMAIL',\n ASSIGNEE_NOT_ENTERPRISE: 'ASSIGNEE_NOT_ENTERPRISE',\n ASSIGN_TASK_HEADER_EMTPY: 'ASSIGN_TASK_HEADER_EMTPY',\n MISSING_START_POINT: 'MISSING_START_POINT'\n};\n\nexport const ERROR_TYPE_STRINGS = {\n [WF_ERROR_TYPES.ELEMENT_NOT_CONNECTED]: 'The element is not connected to the flow.',\n [WF_ERROR_TYPES.APPROVAL_OUTCOMES_NOT_CONNECTED]: 'Approval outcomes are not connected to any element on the builder.',\n [WF_ERROR_TYPES.BRANCHES_NOT_CONNECTED]: 'Branches are not connected to any element on the builder.',\n [WF_ERROR_TYPES.APPROVAL_AND_SIGN_OUTCOMES_NOT_CONNECTED]: 'Approve & Sign outcomes are not connected to any element on the builder.',\n [WF_ERROR_TYPES.APPROVAL_AND_SIGN_REQUIRE_OUTCOMES]: 'You need to select which outcome requires signatures.',\n [WF_ERROR_TYPES.EMPTY_APPROVER_EMAIL]: 'Approver email address is empty.',\n [WF_ERROR_TYPES.INVALID_APPROVER_EMAIL]: isMultipleApproval ? 'There are invalid approver email addresses. This task is not assigned to anyone.' : 'Approver email address is not valid.',\n [WF_ERROR_TYPES.ELEMENT_HAS_EMPTY_OUTCOME]: 'Select an outcome.',\n [WF_ERROR_TYPES.BINARY_DECISION_HAS_EMPTY_OUTCOME]: 'Select a branch.',\n [WF_ERROR_TYPES.BRANCH_EMPTY_CONDITIONS]: 'Set conditions to complete element settings.',\n [WF_ERROR_TYPES.SEND_EMAIL_EMPTY_RECIPIENT]: 'Recipient email field is empty.',\n [WF_ERROR_TYPES.SEND_EMAIL_INVALID_RECIPIENT]: 'Recipient email is invalid.',\n [WF_ERROR_TYPES.CONDITIONS_ON_ENCRYPTED_FORM]: 'Conditions not available for encrypted forms.',\n [WF_ERROR_TYPES.SEND_EMAIL_RECIPIENT_LIMIT]: 'Maximum email recipient limit exceeded',\n [WF_ERROR_TYPES.DISABLED_ON_ENCRYPTED_FORM]: `${window.companyTitle} Approvals is not suitable with encrypted forms.`,\n [WF_ERROR_TYPES.CONDITIONAL_BRANCH_INVALID]: 'Conditional branch is invalid.',\n [WF_ERROR_TYPES.BINARY_DECISION_INVALID_CONDITIONS]: 'Conditions are invalid.',\n [WF_ERROR_TYPES.APPROVER_NOT_ENTERPRISE]: 'Approver is not registered.',\n [WF_ERROR_TYPES.ESCALATION_NOT_ENTERPRISE]: 'Cannot escalate to unregistered user.',\n [WF_ERROR_TYPES.ASSIGN_FORM_RECIPIENT_INVALID]: 'Assignee email is invalid.',\n [WF_ERROR_TYPES.ASSIGN_FORM_RECIPIENT_EMPTY]: 'Form receiver is empty.',\n [WF_ERROR_TYPES.ASSIGN_FORM_FORM_NOT_SELECTED]: 'A form must be selected.',\n [WF_ERROR_TYPES.SIGN_DOCUMENT_DOCUMENT_NOT_SELECTED]: 'To send a sign document you need to add a document.',\n [WF_ERROR_TYPES.SIGN_DOCUMENT_NO_PARTICIPANTS]: 'Add signer to send a sign document.',\n [WF_ERROR_TYPES.SIGN_DOCUMENT_EMPTY_PARTICIPANT]: 'To send a sign document you need to add signer name and email.',\n [WF_ERROR_TYPES.SIGN_DOCUMENT_OUTCOMES_NOT_CONNECTED]: 'Sign document outcomes are not connected to any element on the builder.',\n [WF_ERROR_TYPES.INVALID_ESCALATION_EMAIL]: 'Escalation email address is not valid.',\n [WF_ERROR_TYPES.EMPTY_TEAM_APPROVAL]: 'Select a team',\n [WF_ERROR_TYPES.SMTP_CONFIG_ERROR]: 'Email SMTP configuration error',\n [WF_ERROR_TYPES.MISSING_QUCIKBOOKS_AUTHENTICATION]: 'To run an integration you need to authentication.',\n [WF_ERROR_TYPES.MISSING_QUCIKBOOKS_SETTINGS]: 'Match at least one field to run the integration.',\n [WF_ERROR_TYPES.ASSIGN_TASK_OUTCOMES_NOT_CONNECTED]: 'Assign task outcomes are not connected to any element on the builder.',\n [WF_ERROR_TYPES.EMPTY_ASSIGN_TASK_EMAIL]: 'Assignee email address is empty.',\n [WF_ERROR_TYPES.INVALID_ASSIGN_TASK_EMAIL]: 'Assignee email address is not valid.',\n [WF_ERROR_TYPES.ASSIGNEE_NOT_ENTERPRISE]: 'Assignee is not registered.',\n [WF_ERROR_TYPES.ASSIGN_TASK_HEADER_EMTPY]: 'Assign task title is empty.',\n [WF_ERROR_TYPES.MISSING_START_POINT]: 'To run an integration you need to select a form.'\n};\n\nexport const ERROR_TYPE_OPEN_MODAL = {\n [elementTypes.BINARY_DECISION]: ['BINARY_DECISION_INVALID_CONDITIONS', 'BRANCH_EMPTY_CONDITIONS'],\n [elementTypes.ASSIGN_FORM]: ['ASSIGN_FORM_FORM_NOT_SELECTED', 'ASSIGN_FORM_RECIPIENT_EMPTY', 'ASSIGN_FORM_RECIPIENT_INVALID'],\n [elementSubTypes.PAYMENT_FORM]: ['ASSIGN_FORM_FORM_NOT_SELECTED', 'ASSIGN_FORM_RECIPIENT_EMPTY', 'ASSIGN_FORM_RECIPIENT_INVALID'],\n [elementTypes.SEND_EMAIL]: ['SEND_EMAIL_EMPTY_RECIPIENT'],\n [elementTypes.CONDITIONAL_BRANCH]: ['CONDITIONAL_BRANCH_INVALID', 'BRANCH_EMPTY_CONDITIONS'],\n [elementTypes.SIGN_DOCUMENT]: ['SIGN_DOCUMENT_DOCUMENT_NOT_SELECTED', 'SIGN_DOCUMENT_EMPTY_PARTICIPANT', 'SIGN_DOCUMENT_NO_PARTICIPANTS'],\n [elementSubTypes.SEND_PDF]: ['SEND_EMAIL_EMPTY_RECIPIENT'],\n [elementSubTypes.SEND_APPROVAL_REPORT]: [],\n [elementSubTypes.SEND_DEFAULT_REPORT]: [],\n [elementTypes.INTEGRATION]: ['MISSING_QUCIKBOOKS_AUTHENTICATION', 'MISSING_QUCIKBOOKS_SETTINGS']\n\n};\n\nexport const ERROR_TYPE_OPEN_RIGHT_PANEL = {\n [elementTypes.APPROVAL]: ['EMPTY_APPROVER_EMAIL', 'INVALID_APPROVER_EMAIL', 'INVALID_ESCALATION_EMAIL'],\n [elementSubTypes.APPROVAL_WITH_SIGN]: ['EMPTY_APPROVER_EMAIL', 'APPROVAL_AND_SIGN_REQUIRE_OUTCOMES'],\n [elementSubTypes.SEND_APPROVAL_REPORT]: ['SEND_EMAIL_EMPTY_RECIPIENT'],\n [elementSubTypes.SEND_DEFAULT_REPORT]: ['SEND_EMAIL_EMPTY_RECIPIENT'],\n [elementTypes.ASSIGN_TASK]: ['EMPTY_ASSIGN_TASK_EMAIL', 'INVALID_ASSIGN_TASK_EMAIL', 'ELEMENT_HAS_EMPTY_OUTCOME', 'ASSIGNEE_NOT_ENTERPRISE', 'SMTP_CONFIG_ERROR', 'ASSIGN_TASK_HEADER_EMTPY']\n};\n","import { isEnterprise as isEnterpriseFunc } from '@jotforminc/enterprise-utils';\n\nexport const UNDO_REDO = '@FEATURE/UNDO_REDO';\nexport const ZOOM = '@FEATURE/ZOOM';\nexport const ADD_ELEMENT = '@FEATURE/ADD_ELEMENT';\nexport const DUPLICATE_ELEMENT = '@FEATURE/DUPLICATE_ELEMENT';\nexport const PREVIEW = '@FEATURE/PREVIEW';\nexport const LINK_POINTS = '@FEATURE/LINK_POINTS';\nexport const DRAG_LINK = '@FEATURE/DRAG_LINK';\nexport const NEW_WORKFLOW_SAGA = '@FEATURE/NEW_WORKFLOW_SAGA';\nexport const DRAG_PREVIEW = '@FEATURE/DRAG_PREVIEW';\nexport const ASSIGN_ELEMENT = '@FEATURE/ASSIGN_ELEMENT';\nexport const SPLIT_ELEMENT = '@FEATURE/SPLIT_ELEMENT';\nexport const WITHOUT_FORM = '@FEATURE/WITHOUT_FORM';\nexport const CREATE_WIZARD = '@FEATURE/CREATE_WIZARD';\nexport const MINI_PICKER = '@FEATURE/MINI_PICKER';\nexport const SHARE_TEMPLATE = '@FEATURE/SHARE_TEMPLATE';\nexport const REQUIRE_LOGIN = '@FEATURE/REQUIRE_LOGIN';\nexport const REQUEST_MORE_INFO = '@FEATURE/REQUEST_MORE_INFO';\nexport const ALLOW_FORM_FIELDS_ON_APPROVER = '@FEATURE/ALLOW_FORM_FIELDS_ON_APPROVER';\nexport const ALLOW_FORM_FIELDS = '@FEATURE/ALLOW_FORM_FIELDS';\nexport const HELP_MENU = '@FEATURE/HELP_MENU';\nexport const COLORED_LINK = '@FEATURE/COLORED_LINK';\nexport const PUSH_NODES = '@FEATURE/PUSH_NODES';\nexport const DISABLE_FREE_TEXT_ON_RECIPIENTS = '@FEATURE/DISABLE_FREE_TEXT_ON_RECIPIENTS';\nexport const ADMIN_HEADER = '@FEATURE/ADMIN_HEADER';\nexport const PDF_ATTACHMENTS = '@FEATURE/PDF_ATTACHMENTS';\nexport const APPROVAL_WITH_SIGN = '@FEATURE/APPROVAL_WITH_SIGN';\nexport const TRIGGER_ON_EDIT = '@FEATURE/TRIGGER_ON_EDIT';\nexport const OUTCOME_EDIT_ICON = '@FEATURE/OUTCOME_EDIT_ICON';\nexport const SEND_APPROVAL_REPORT = '@FEATURE/SEND_APPROVAL_REPORT';\nexport const ERROR_UPDATE = '@FEATURE/ERROR_UPDATE';\nexport const TERMINATE_FLOW = '@FEATURE/TERMINATE_FLOW';\nexport const MULTIPLE_SELECT = '@FEATURE/MULTIPLE_SELECT';\nexport const MULTIPLE_SELECT_HEADER = '@FEATURE/MULTIPLE_SELECT_HEADER';\nexport const LOCK = '@FEATURE/LOCK';\nexport const ZOOM_MENU = '@FEATURE/ZOOM_MENU';\nexport const LABEL_POSITION_IMPROVEMENT = '@FEATURE/LABEL_POSITION_IMPROVEMENT';\nexport const ASSIGN_FORM = '@FEATURE/ASSIGN_FORM';\nexport const CONDITIONAL_BRANCH_MODAL = '@FEATURE/CONDITIONAL_BRANCH_MODAL';\nexport const BINARY_DECISION_MODAL = '@FEATURE/BINARY_DECISION_MODAL';\nexport const MULTIPLE_FORMS = '@FEATURE/MULTIPLE_FORMS';\nexport const ERROR_PAGE = '@FEATURE/ERROR_PAGE';\nexport const BRANCH_TOOLTIP = '@FEATURE/BRANCH_TOOLTIP';\nexport const CONDITION_DROPDOWN = '@FEATURE/CONDITION_DROPDOWN';\nexport const MULTI_FORM_PDF = '@FEATURE/MULTI_FORM_PDF';\nexport const PREFILL = '@FEATURE/PREFILL';\nexport const AUTOMATCH = '@FEATURE/AUTOMATCH';\nexport const NEW_REPORT_ELEMENT = '@FEATURE/NEW_REPORT_ELEMENT';\nexport const WHATS_NEW_MODAL = '@FEATURE/WHATS_NEW_MODAL';\nexport const OUTCOME_BUTTONS = '@FEATURE/OUTCOME_BUTTONS';\nexport const REQUIRE_COMMENT = '@FEATURE/REQUIRE_COMMENT';\nexport const REQUIRE_LOGIN_ADVANCED = '@FEATURE/REQUIRE_LOGIN_ADVANCED';\nexport const IS_CONNECTED = '@FEATURE/IS_CONNECTED';\nexport const SIGN_DOCUMENT = '@FEATURE/SIGN_DOCUMENT';\nexport const WORKFLOW_PICKER = '@FEATURE/WORKFLOW_PICKER';\nexport const SIGN_PICKER = '@FEATURE/SIGN_PICKER';\nexport const NEW_ELEMENT_DESIGN = '@FEATURE/NEW_ELEMENT_DESIGN';\nexport const FADE_ORPHAN_ITEMS = '@FEATURE/FADE_ORPHAN_ITEMS';\nexport const DISPLAY_ACCESSIBILITY_TOOLBAR = '@FEATURE/DISPLAY_ACCESSIBILITY_TOOLBAR';\nexport const TEAM_APPROVAL = '@FEATURE/TEAM_APPROVAL';\n\nexport const ESSENTIAL_ELEMENT_PROPS = '@FEATURE/ESSENTIAL_ELEMENT_PROPS';\nexport const CREATE_REMINDER_EMAIL = '@FEATURE/CREATE_REMINDER_EMAIL';\nexport const DISABLE_AUTO_FINISH_TASK = '@FEATURE/DISABLE_AUTO_FINISH_TASK';\nexport const NODE_ORDERING = '@FEATURE/NODE_ORDERING';\nexport const ACCESS_LOGIC = '@FEATURE/ACCESS_LOGIC';\nexport const MULTIPLE_APPROVAL = '@FEATURE/MULTIPLE_APPROVAL';\nexport const DELETED_PDF_LOGIC = '@FEATURE/DELETED_PDF_LOGIC';\nexport const NEW_LEFT_PANEL = '@FEATURE/NEW_LEFT_PANEL';\nexport const WARNING_PANEL = '@FEATURE/WARNING_PANEL';\nexport const SMTP_ERRORS = '@FEATURE/SMTP_ERRORS';\nexport const CANVAS_BACKGROUND = '@FEATURE/CANVAS_BACKGROUND';\nexport const SEND_NOTIFICATION = '@FEATURE/SEND_NOTIFICATION';\nexport const MULTIPLE_FORM_SUPPORT = '@FEATURE/MULTIPLE_FORM_SUPPORT';\nexport const SHOW_INTEGRATION_SECTION = '@FEATURE/SHOW_INTEGRATION_SECTION';\nexport const TERMINATE_REASON = '@FEATURE/TERMINATE_REASON';\nexport const WORKFLOW_V2 = '@FEATURE/WORKFLOW_V2';\nexport const CANVAS_AUTO_CONNECT = '@FEATURE/CANVAS_AUTO_CONNECT';\nexport const CANVAS_FLOATING_EDGE = '@FEATURE/CANVAS_FLOATING_EDGE';\nexport const CANVAS_DELETE_MIDDLE_NODE = '@FEATURE/CANVAS_DELETE_MIDDLE_NODE';\nexport const WORKFLOW_RELEASED = '@FEATURE/WORKFLOW_RELEASED';\nexport const PAYMENT_FORM = '@FEATURE/PAYMENT_FORM';\nexport const INTEGRATIONS = '@FEATURE/INTEGRATIONS';\nexport const WORKFLOW_FORM_BUILDER = '@FEATURE/WORKFLOW_FORM_BUILDER';\nexport const ASSIGN_TASK = '@FEATURE/ASSIGN_TASK';\nexport const INTEGRATION_MULTIPLE_FORM = '@FEATURE/INTEGRATION_MULTIPLE_FORM';\nexport const LIMITATIONS = '@FEATURE/LIMITATIONS';\nexport const SHOW_NEW_BADGES = '@FEATURE/SHOW_NEW_BADGES';\nexport const SHOW_INTERNAL_FORMS = '@FEATURE/SHOW_INTERNAL_FORMS';\n\nconst isEnterprise = isEnterpriseFunc();\nconst isHIPAA = window.isHIPAA === true;\nconst isHIPAAEnterprise = isEnterprise && isHIPAA;\nconst isDevelopment = window.JOTFORM_ENV === 'DEVELOPMENT';\nconst allowWorkflowFeatures = window.allowWorkflowFeatures === true;\nconst allowSign = isEnterprise ? window?.allowSign : true;\n// const isRegularAdmin = window.isAdmin === true && !isEnterprise;\n\nconst isInternalType = ['ADMIN', 'SUPPORT', 'HELPDESK'].includes(window?.__flowOwnerAccountType) && !isEnterprise;\nconst isJotformInternalEnterprise = isEnterprise && window?.isWorkflowReleased;\nconst isNewWorkflowFeautesEnabled = isInternalType || isJotformInternalEnterprise || isDevelopment;\n\nexport const BETA_STATUS_FEATURES = [];\n\nexport const DEFAULT_FEATURES = {\n [DRAG_PREVIEW]: false,\n [UNDO_REDO]: true,\n [ZOOM]: true,\n [ADD_ELEMENT]: true,\n [PREVIEW]: false,\n [LINK_POINTS]: false,\n [DRAG_LINK]: false,\n [ASSIGN_ELEMENT]: false,\n [SPLIT_ELEMENT]: true,\n [WITHOUT_FORM]: true,\n [CREATE_WIZARD]: true,\n [MINI_PICKER]: false,\n [SHARE_TEMPLATE]: !isEnterprise && true,\n [REQUIRE_LOGIN]: !isHIPAA, // open for regular users + regular enterprise\n [REQUEST_MORE_INFO]: true,\n [HELP_MENU]: !isEnterprise,\n [ALLOW_FORM_FIELDS_ON_APPROVER]: true,\n [ALLOW_FORM_FIELDS]: !isHIPAA,\n [DISABLE_FREE_TEXT_ON_RECIPIENTS]: isHIPAAEnterprise,\n [COLORED_LINK]: false,\n [PUSH_NODES]: false,\n [ADMIN_HEADER]: false,\n [PDF_ATTACHMENTS]: true,\n [APPROVAL_WITH_SIGN]: true,\n [TRIGGER_ON_EDIT]: true,\n [OUTCOME_EDIT_ICON]: true,\n [SEND_APPROVAL_REPORT]: true,\n [ERROR_UPDATE]: true,\n [TERMINATE_FLOW]: true,\n [LABEL_POSITION_IMPROVEMENT]: true,\n [MULTIPLE_SELECT_HEADER]: true,\n [MULTIPLE_SELECT]: true,\n [ERROR_PAGE]: true,\n [LOCK]: false,\n [ZOOM_MENU]: isDevelopment,\n [ASSIGN_FORM]: true,\n [CONDITIONAL_BRANCH_MODAL]: true,\n [BINARY_DECISION_MODAL]: true,\n [MULTIPLE_FORMS]: true,\n [BRANCH_TOOLTIP]: true,\n [CONDITION_DROPDOWN]: true,\n [PREFILL]: true,\n [MULTI_FORM_PDF]: true,\n [AUTOMATCH]: true,\n [NEW_REPORT_ELEMENT]: true,\n [WHATS_NEW_MODAL]: true,\n [OUTCOME_BUTTONS]: true,\n [REQUIRE_COMMENT]: true,\n [REQUIRE_LOGIN_ADVANCED]: false,\n [IS_CONNECTED]: false,\n [SIGN_DOCUMENT]: window.isSignReleased && allowSign,\n [WORKFLOW_PICKER]: isDevelopment,\n [SIGN_PICKER]: window.isSignReleased && allowSign,\n [NEW_ELEMENT_DESIGN]: true,\n [FADE_ORPHAN_ITEMS]: true,\n [ESSENTIAL_ELEMENT_PROPS]: false,\n [CREATE_REMINDER_EMAIL]: true,\n [DISABLE_AUTO_FINISH_TASK]: false,\n [NODE_ORDERING]: isDevelopment || window.location.href.indexOf('eisai.jotform.com') > -1,\n [DISPLAY_ACCESSIBILITY_TOOLBAR]: false,\n [ACCESS_LOGIC]: false,\n [DELETED_PDF_LOGIC]: true,\n [MULTIPLE_APPROVAL]: allowWorkflowFeatures,\n [TEAM_APPROVAL]: allowWorkflowFeatures || window.location.href.indexOf('jotformers.com') > -1,\n [NEW_LEFT_PANEL]: false,\n [WARNING_PANEL]: false && !isEnterprise,\n [SMTP_ERRORS]: false,\n [CANVAS_BACKGROUND]: false,\n [SEND_NOTIFICATION]: true,\n [MULTIPLE_FORM_SUPPORT]: false,\n [SHOW_INTEGRATION_SECTION]: false,\n [INTEGRATIONS]: isNewWorkflowFeautesEnabled || window?.isWorkflowReleased,\n [TERMINATE_REASON]: true,\n [WORKFLOW_V2]: window?.allowWorkflowV2,\n [CANVAS_AUTO_CONNECT]: false,\n [CANVAS_FLOATING_EDGE]: false,\n [CANVAS_DELETE_MIDDLE_NODE]: false,\n [WORKFLOW_RELEASED]: isJotformInternalEnterprise || window?.isWorkflowReleased,\n [WORKFLOW_FORM_BUILDER]: isNewWorkflowFeautesEnabled || window?.isWorkflowReleased,\n [PAYMENT_FORM]: isNewWorkflowFeautesEnabled || window?.isWorkflowReleased,\n [ASSIGN_TASK]: isNewWorkflowFeautesEnabled || window?.isWorkflowReleased,\n [LIMITATIONS]: true, // use it with ELEMENT_LIMIT=N param\n [INTEGRATION_MULTIPLE_FORM]: isNewWorkflowFeautesEnabled || window?.isWorkflowReleased,\n [SHOW_NEW_BADGES]: window?.showNewBadges,\n [SHOW_INTERNAL_FORMS]: true\n};\n\nconst queryParts = window.location.search.replace('?', '').split('&');\nqueryParts.forEach(query => {\n const [, parameter, isActive] = query.match(/(.*?)=(\\d+)/) || [];\n const expectedFeatureKey = `@FEATURE/${parameter}`;\n if (DEFAULT_FEATURES[expectedFeatureKey] !== undefined) {\n DEFAULT_FEATURES[expectedFeatureKey] = Boolean(parseInt(isActive, 10));\n }\n});\n","import { isEnterprise as isEnterpriseFunc } from '@jotforminc/enterprise-utils';\n\nexport const isPDFPasswordRequiredOnHIPAA = () => {\n const isEnterprise = isEnterpriseFunc();\n const isHIPAA = window.isHIPAA === true;\n const isHIPAAEnterprise = isEnterprise && isHIPAA;\n\n if (isHIPAAEnterprise) {\n return window?.CUSTOMIZED_CONFIGS?.HIPAA_REQUIRE_PDF_PASSWORD;\n }\n\n if (isHIPAA) {\n return true;\n }\n};\n","import React from 'react';\nimport { string } from 'prop-types';\n\nimport {\n // BASIC ELEMENTS\n IconFormFilled,\n IconFormArrowRightFilled,\n IconProductPaymentFormFilled,\n IconEnvelopeFormFilled,\n IconFormPenCheckFilled,\n IconUsersCheckFilled,\n IconFormCheckFilled,\n IconPaperReportFilled,\n IconDocumentPdfFilled,\n IconProductSignFilled,\n IconTaskFilled,\n\n // LOGIC ELEMENTS\n IconIfElseConditionFilled,\n IconConditionalBranchFilled,\n IconSplitFilled,\n IconMergeFilled,\n IconSquareFilled\n} from '@jotforminc/svg-icons';\n\nimport { elementTypes, elementSubTypes } from './elementTypes';\nimport { INTEGRATION_DETAILS } from './IntegrationDetails';\n\nexport const iconTypes = {\n // BASIC ELEMENTS\n [elementTypes.START_POINT]: IconFormFilled,\n [elementTypes.ASSIGN_FORM]: IconFormArrowRightFilled,\n [elementSubTypes.PAYMENT_FORM]: IconProductPaymentFormFilled,\n [elementTypes.SEND_EMAIL]: IconEnvelopeFormFilled,\n [elementSubTypes.APPROVAL_WITH_SIGN]: IconFormPenCheckFilled,\n [elementSubTypes.TEAM_APPROVAL]: IconUsersCheckFilled,\n [elementTypes.APPROVAL]: IconFormCheckFilled,\n [elementSubTypes.SEND_APPROVAL_REPORT]: IconPaperReportFilled, // todo\n [elementSubTypes.SEND_DEFAULT_REPORT]: IconPaperReportFilled,\n [elementSubTypes.SEND_PDF]: IconDocumentPdfFilled,\n [elementTypes.SIGN_DOCUMENT]: IconProductSignFilled,\n [elementTypes.ASSIGN_TASK]: IconTaskFilled,\n\n // LOGIC ELEMENTS\n [elementTypes.BINARY_DECISION]: IconIfElseConditionFilled,\n [elementTypes.CONDITIONAL_BRANCH]: IconConditionalBranchFilled,\n [elementTypes.SPLIT]: IconSplitFilled,\n [elementTypes.MERGE]: IconMergeFilled,\n [elementTypes.END_POINT]: IconSquareFilled,\n ...(Object.entries(INTEGRATION_DETAILS).reduce((prev, [key, values]) => {\n if (values?.actions) {\n return {\n ...prev,\n [key]: values.icon\n };\n }\n return prev;\n }, {}))\n};\n\nexport const IconRenderer = ({ type }) => {\n if (!type) { return (<>); }\n const Component = iconTypes[type];\n return ;\n};\n\nIconRenderer.propTypes = {\n type: string.isRequired\n};\n","export const DEFAULT_LABEL_TYPE = 'label';\nexport const DEFAULT_LINK_TYPE = 'default-link';\nexport const DEFAULT_GUIDE_LAYER_TYPE = 'diagram-guides';\nexport const DEFAULT_LINK_LAYER_TYPE = 'diagram-links';\nexport const DEFAULT_NODE_LAYER_TYPE = 'diagram-nodes';\nexport const DEFAULT_POINT_TYPE = 'point';\nexport const DEFAULT_SELECTIONBOX_LAYER_TYPE = 'selection';\n","/* eslint-disable max-lines */\nimport { EMAIL_TEMPLATE_TYPES } from '@jotforminc/email-wizards';\nimport { isEmail, singleEmailInputEmailErrored } from '@jotforminc/utils';\nimport { t } from '@jotforminc/translation';\nimport { elementSubTypes, elementTypes } from './elementTypes';\nimport * as ComponentTypes from './componentTypes';\n\nimport { LabelHorizontal, LabelVertical } from '../components/WizardLabel';\nimport { getElementEmailWizardTemplate, reminderEmailWizardTemplates } from './emailWizardTemplates';\nimport { ApprovalEmailSubTypes } from './emailSubTypes';\n\nimport { isYes } from '../utils';\nimport {\n DEFAULT_FEATURES,\n REQUIRE_LOGIN as REQUIRE_LOGIN_FEATURE,\n REQUEST_MORE_INFO as REQUEST_MORE_INFO_FEATURE,\n ALLOW_FORM_FIELDS, DISABLE_FREE_TEXT_ON_RECIPIENTS, PREFILL, NEW_REPORT_ELEMENT, REQUIRE_LOGIN_ADVANCED,\n DISABLE_AUTO_FINISH_TASK, MULTIPLE_APPROVAL, SEND_NOTIFICATION, TERMINATE_REASON,\n WORKFLOW_RELEASED,\n WORKFLOW_FORM_BUILDER\n} from './features';\nimport CONFIGURATION from './config';\nimport { isPDFPasswordRequiredOnHIPAA } from './helper';\n\nexport const NEW_EMAIL_ADDRESS = 'newEmailAddress';\nconst SEND_REMINDER_EMAIL = 'reminder';\nconst REASSIGN_TASK = 'reassign';\nconst COMMENT = 'comment';\nconst ESCALATION = 'escalation';\nconst EXPIRATION = 'expiration';\nconst AUTO_FINISH = 'autoFinish';\nconst CHECKLIST = 'checklist';\nconst REQUIRE_LOGIN = 'requireLogin';\nconst REQUEST_MORE_INFO = 'requestMore'; // Open later\n\nconst isDisableNotificationFeatureEnable = DEFAULT_FEATURES[SEND_NOTIFICATION];\nconst isWorkflowReleased = DEFAULT_FEATURES[WORKFLOW_RELEASED];\nconst isWorkflowFormBuilderOpened = DEFAULT_FEATURES[WORKFLOW_FORM_BUILDER];\n\nconst requireLogin = !DEFAULT_FEATURES[REQUIRE_LOGIN_ADVANCED] ? {\n type: ComponentTypes.CHECKBOX_WITH_DEFAULT_VALUE,\n labelProps: {\n descriptionAtTop: false\n },\n componentProps: {\n children: t('Require Login for Approver'),\n defaultValue: 'Yes',\n ariaLabel: t('Require Login for Approver')\n },\n LabelRenderer: LabelHorizontal,\n condition: () => DEFAULT_FEATURES[REQUIRE_LOGIN_FEATURE],\n description: window.JOTFORM_ENV !== 'ENTERPRISE'\n ? t('Require that approvers log into Jotform to complete approval tasks.')\n : t('Require that approvers login to complete approval tasks.')\n} : {\n type: ComponentTypes.TOGGLE,\n LabelRenderer: LabelVertical,\n label: t('Require Login'),\n condition: () => DEFAULT_FEATURES[REQUIRE_LOGIN_FEATURE],\n description: window.JOTFORM_ENV !== 'ENTERPRISE'\n ? t('Require that approvers log into Jotform to complete approval tasks.')\n : t('Require that approvers login to complete approval tasks.')\n};\n\nconst newApprovalStructure = [\n {\n tabID: 'general',\n label: t('GENERAL'),\n fields: {\n outcomes: {\n type: ComponentTypes.OUTCOMES_WIZARD,\n label: t('Outcomes'),\n LabelRenderer: LabelHorizontal\n },\n approver: {\n type: ComponentTypes.MULTIPLE_EMAIL_INPUT,\n debounce: true,\n LabelRenderer: LabelHorizontal,\n labelProps: { isBorderless: true },\n label: t('Approvers'),\n addFormFields: true,\n componentProps: {\n showRemainingCount: true,\n isDisableFreeTextOnRecipients: DEFAULT_FEATURES[DISABLE_FREE_TEXT_ON_RECIPIENTS]\n }\n },\n ...!isDisableNotificationFeatureEnable && {\n [REQUIRE_LOGIN]: {\n type: ComponentTypes.CHECKBOX_WITH_DEFAULT_VALUE,\n labelProps: {\n descriptionAtTop: false,\n isBorderless: true\n },\n componentProps: {\n children: t('Require Login for Approver'),\n defaultValue: 'Yes',\n ariaLabel: t('Require Login for Approver')\n },\n LabelRenderer: LabelHorizontal,\n condition: () => !DEFAULT_FEATURES[REQUIRE_LOGIN_ADVANCED] && DEFAULT_FEATURES[REQUIRE_LOGIN_FEATURE]\n }\n },\n approvalOptions: {\n debounce: true,\n type: ComponentTypes.APPROVAL_OPTIONS,\n label: t('Completion Rule'),\n labelProps: {\n descriptionAtTop: false,\n isBorderless: false,\n isNew: false\n },\n LabelRenderer: LabelHorizontal\n },\n sendNotification: {\n type: ComponentTypes.DISABLE_STATE_TOGGLE,\n LabelRenderer: LabelVertical,\n label: t('Notification Emails'),\n labelProps: {\n className: 'isSendNotification'\n },\n componentProps: {\n toggleValues: {\n defaultValue: 'Yes',\n readOnly: false,\n updateKey: 'sendNotification'\n },\n setDefaultReadOnlyValue: true\n },\n description: t('Notify approvers via email.'),\n condition: () => isDisableNotificationFeatureEnable\n },\n approvalEmail: {\n type: ComponentTypes.ELEMENT_EMAIL_WIZARD,\n componentProps: {\n ...getElementEmailWizardTemplate(elementTypes.APPROVAL),\n isPasswordCheck: true,\n ...isDisableNotificationFeatureEnable && { disableDescription: true }\n },\n condition: ({ sendNotification }) => (isDisableNotificationFeatureEnable ? isYes(sendNotification) : true)\n },\n ...isDisableNotificationFeatureEnable && {\n [REQUIRE_LOGIN]: {\n type: ComponentTypes.DISABLE_STATE_TOGGLE,\n LabelRenderer: LabelVertical,\n label: t('Require Login for Approver'),\n componentProps: {\n toggleValues: {\n defaultValue: 'Yes',\n updateKey: 'requireLogin',\n tooltipText: 'This can’t be disabled if notification emails are disabled.'\n }\n },\n condition: () => !DEFAULT_FEATURES[REQUIRE_LOGIN_ADVANCED] && DEFAULT_FEATURES[REQUIRE_LOGIN_FEATURE]\n }\n },\n loginlessDesigner: {\n type: ComponentTypes.WORKFLOW_FORM_BUILDER_BUTTON,\n componentProps: {\n buttonName: 'CUSTOMIZE'\n },\n LabelRenderer: LabelHorizontal,\n condition: ({ requireLogin: loginless }) => isWorkflowFormBuilderOpened && !isYes(loginless)\n }\n }\n },\n {\n tabID: 'approvalAdvanced',\n label: t('ADVANCED'),\n fields: {\n [REQUIRE_LOGIN]: { ...requireLogin, condition: () => DEFAULT_FEATURES[REQUIRE_LOGIN_ADVANCED] },\n [COMMENT]: { type: ComponentTypes.COMMENT_WIZARD },\n [REASSIGN_TASK]: {\n labelProps: { isBorderless: true },\n type: ComponentTypes.REASSIGN_WIZARD\n },\n [REQUEST_MORE_INFO]: {\n type: ComponentTypes.TOGGLE,\n LabelRenderer: LabelVertical,\n label: t('Request More Information'),\n condition: () => DEFAULT_FEATURES[REQUEST_MORE_INFO_FEATURE],\n description: t('Let your users ask for more details about the submission before they approve or reject the request.')\n },\n [ESCALATION]: { type: ComponentTypes.ESCALATION_WIZARD },\n [EXPIRATION]: { type: ComponentTypes.EXPIRATION_WIZARD },\n [AUTO_FINISH]: { type: ComponentTypes.AUTO_COMPLETE_WIZARD },\n [SEND_REMINDER_EMAIL]: { type: ComponentTypes.SEND_REMINDER_WIZARD, componentProps: reminderEmailWizardTemplates[elementTypes.APPROVAL] }\n }\n }\n];\n\nconst getApproveAndSignStructure = [\n {\n tabID: 'general',\n label: t('GENERAL'),\n fields: {\n outcomes: {\n type: ComponentTypes.OUTCOMES_WIZARD,\n label: t('Outcomes'),\n LabelRenderer: LabelHorizontal\n },\n signatureOutcomes: {\n type: ComponentTypes.OUTCOMES_CHECKBOX_WIZARD,\n label: t('Require signature for:'),\n componentProps: {\n defaultValue: 'Yes'\n },\n condition: () => window.isSubTypeForApproval\n },\n approver: {\n type: ComponentTypes.MULTIPLE_EMAIL_INPUT,\n debounce: true,\n LabelRenderer: LabelHorizontal,\n label: t('Signers'),\n componentProps: {\n label: t('Signer Request Email'),\n isDisableFreeTextOnRecipients: DEFAULT_FEATURES[DISABLE_FREE_TEXT_ON_RECIPIENTS]\n },\n labelProps: { isBorderless: true },\n addFormFields: true,\n condition: ({ isTeamApproval }) => !isTeamApproval\n },\n ...!isDisableNotificationFeatureEnable && {\n [REQUIRE_LOGIN]: {\n type: ComponentTypes.CHECKBOX_WITH_DEFAULT_VALUE,\n labelProps: {\n descriptionAtTop: false,\n isBorderless: true\n },\n componentProps: {\n children: t('Require Login for Signer'),\n defaultValue: 'Yes',\n ariaLabel: t('Require Login for Signer'),\n className: 'wfCheckbox my-2 font-medium'\n },\n LabelRenderer: LabelHorizontal,\n condition: () => !DEFAULT_FEATURES[REQUIRE_LOGIN_ADVANCED] && DEFAULT_FEATURES[REQUIRE_LOGIN_FEATURE]\n }\n },\n approvalOptions: {\n debounce: true,\n type: ComponentTypes.APPROVAL_OPTIONS,\n label: t('Completion Rule'),\n componentProps: {\n optionsKey: 'Signer'\n },\n labelProps: {\n descriptionAtTop: false,\n isBorderless: !isDisableNotificationFeatureEnable,\n isNew: false\n },\n LabelRenderer: LabelHorizontal\n },\n sendNotification: {\n type: ComponentTypes.DISABLE_STATE_TOGGLE,\n LabelRenderer: LabelVertical,\n label: t('Notification Emails'),\n labelProps: {\n className: 'isSendNotification'\n },\n componentProps: {\n toggleValues: {\n defaultValue: 'Yes',\n readOnly: false,\n updateKey: 'sendNotification'\n },\n setDefaultReadOnlyValue: true\n },\n description: t('Notify signers via email.'),\n condition: () => isDisableNotificationFeatureEnable\n },\n approvalEmail: {\n type: ComponentTypes.ELEMENT_EMAIL_WIZARD,\n componentProps: {\n labelProps: { isBorderless: true },\n wizardKey: 'sendCustomApprovalEmail',\n emailType: EMAIL_TEMPLATE_TYPES.WORKFLOW_APPROVE_START,\n emailSubType: ApprovalEmailSubTypes.APPROVAL_REQUEST,\n label: t('Signer Request Email'),\n ...isDisableNotificationFeatureEnable && { disableDescription: true },\n description: t('Signers will be notified via email.')\n },\n condition: ({ sendNotification }) => (isDisableNotificationFeatureEnable ? isYes(sendNotification) : true)\n },\n ...isDisableNotificationFeatureEnable && {\n [REQUIRE_LOGIN]: {\n type: ComponentTypes.DISABLE_STATE_TOGGLE,\n LabelRenderer: LabelVertical,\n label: t('Require Login for Signer'),\n labelProps: {\n className: 'isSendNotification'\n },\n componentProps: {\n toggleValues: {\n defaultValue: 'Yes',\n updateKey: 'requireLogin',\n tooltipText: 'This can’t be disabled if notification emails are disabled.'\n }\n },\n condition: () => !DEFAULT_FEATURES[REQUIRE_LOGIN_ADVANCED] && DEFAULT_FEATURES[REQUIRE_LOGIN_FEATURE]\n }\n },\n loginlessDesigner: {\n type: ComponentTypes.WORKFLOW_FORM_BUILDER_BUTTON,\n componentProps: {\n buttonName: 'CUSTOMIZE'\n },\n LabelRenderer: LabelHorizontal,\n condition: ({ requireLogin: loginless }) => isWorkflowFormBuilderOpened && !isYes(loginless)\n }\n }\n },\n {\n tabID: 'approvalAdvanced',\n label: t('ADVANCED'),\n fields: {\n [REQUIRE_LOGIN]: { ...requireLogin, condition: () => DEFAULT_FEATURES[REQUIRE_LOGIN_ADVANCED] },\n [REASSIGN_TASK]: {\n labelProps: { isBorderless: true },\n type: ComponentTypes.REASSIGN_WIZARD\n },\n [REQUEST_MORE_INFO]: {\n type: ComponentTypes.TOGGLE,\n LabelRenderer: LabelVertical,\n label: t('Request More Information'),\n condition: () => DEFAULT_FEATURES[REQUEST_MORE_INFO_FEATURE],\n description: t('Let your users ask for more details about the submission before they approve or reject the request.')\n },\n [COMMENT]: { type: ComponentTypes.COMMENT_WIZARD },\n [ESCALATION]: { type: ComponentTypes.ESCALATION_WIZARD },\n [EXPIRATION]: { type: ComponentTypes.EXPIRATION_WIZARD },\n [AUTO_FINISH]: {\n condition: () => !DEFAULT_FEATURES[DISABLE_AUTO_FINISH_TASK],\n type: ComponentTypes.AUTO_COMPLETE_WIZARD\n },\n [SEND_REMINDER_EMAIL]: { type: ComponentTypes.SEND_REMINDER_WIZARD, componentProps: reminderEmailWizardTemplates[elementTypes.APPROVAL] }\n }\n }\n];\n\nconst nodeProperties = ({\n [elementTypes.SEND_EMAIL]: [\n {\n fields: {\n name: { label: t('Label Name') },\n fromName: { label: t('From Name'), debounce: true },\n to: { type: ComponentTypes.EMAIL_INPUT, label: t('To'), addFormFields: DEFAULT_FEATURES[ALLOW_FORM_FIELDS] },\n replyTo: { type: ComponentTypes.EMAIL_INPUT, label: t('Reply To'), maxCount: 1 },\n subject: {\n label: t('Email Subject'), description: t('Change the subject title of your email content.'), addFormFields: DEFAULT_FEATURES[ALLOW_FORM_FIELDS], debounce: true\n },\n content: { type: ComponentTypes.RICH_TEXT_EDITOR, label: t('Email Content'), description: t('Edit the content of the email body') }\n }\n }\n ],\n [elementTypes.APPROVAL]: DEFAULT_FEATURES[MULTIPLE_APPROVAL] ? newApprovalStructure : [\n {\n tabID: 'general',\n label: t('GENERAL'),\n fields: {\n outcomes: {\n type: ComponentTypes.OUTCOMES_WIZARD,\n label: t('Outcomes'),\n LabelRenderer: LabelHorizontal\n },\n advancedOutcomes: {\n label: t('Additional Outcomes'),\n LabelRenderer: LabelHorizontal,\n labelProps: { isBorderless: true },\n ComponentRenderer: ComponentTypes.EMPTY_ELEMENT\n },\n [REASSIGN_TASK]: {\n labelProps: { isBorderless: true },\n type: ComponentTypes.REASSIGN_WIZARD\n },\n [REQUEST_MORE_INFO]: {\n type: ComponentTypes.TOGGLE,\n LabelRenderer: LabelVertical,\n label: t('Request More Information'),\n condition: () => DEFAULT_FEATURES[REQUEST_MORE_INFO_FEATURE],\n description: t('Let your users ask for more details about the submission before they approve or reject the request.')\n },\n approver: {\n debounce: true,\n type: DEFAULT_FEATURES[DISABLE_FREE_TEXT_ON_RECIPIENTS] ? ComponentTypes.USER_EMAILS_DROPDOWN_WIZARD : ComponentTypes.SINGLE_EMAIL_INPUT,\n addFormFields: true,\n label: t('Approver Email'),\n labelProps: {\n descriptionAtTop: false\n },\n LabelRenderer: LabelHorizontal,\n description: t('When users submit a form, the approver will be notified via email.'),\n componentProps: {\n ignoreBlurRequirementOnValidation: true,\n placeholder: 'example@example.com',\n isErrored: val => {\n if (Array.isArray(val) && val[0] && val[0]?.value?.indexOf(',') > -1) {\n return t('You can only add one email address as approver');\n }\n\n return singleEmailInputEmailErrored(val, true);\n }\n }\n },\n [REQUIRE_LOGIN]: { ...requireLogin, condition: () => !DEFAULT_FEATURES[REQUIRE_LOGIN_ADVANCED] && DEFAULT_FEATURES[REQUIRE_LOGIN_FEATURE] },\n approvalEmail: {\n type: ComponentTypes.ELEMENT_EMAIL_WIZARD,\n componentProps: { ...getElementEmailWizardTemplate(elementTypes.APPROVAL), isPasswordCheck: true }\n }\n }\n },\n {\n tabID: 'approvalAdvanced',\n label: t('ADVANCED'),\n fields: {\n [REQUIRE_LOGIN]: { ...requireLogin, condition: () => DEFAULT_FEATURES[REQUIRE_LOGIN_ADVANCED] },\n [COMMENT]: { type: ComponentTypes.COMMENT_WIZARD },\n [ESCALATION]: { type: ComponentTypes.ESCALATION_WIZARD },\n [EXPIRATION]: { type: ComponentTypes.EXPIRATION_WIZARD },\n [AUTO_FINISH]: { type: ComponentTypes.AUTO_COMPLETE_WIZARD },\n [SEND_REMINDER_EMAIL]: { type: ComponentTypes.SEND_REMINDER_WIZARD, componentProps: reminderEmailWizardTemplates[elementTypes.APPROVAL] }\n }\n }\n ],\n [elementTypes.BINARY_DECISION]: [\n {\n fields: {\n name: { label: t('Label Name') },\n conditionTerms: {},\n conditionTermsMatchType: {}\n }\n }\n ],\n [elementTypes.CONDITIONAL_BRANCH]: [\n {\n fields: {\n name: { label: t('Label Name') },\n conditionTerms: {},\n conditionTermsMatchType: {}\n }\n }\n ],\n [elementTypes.MERGE]: [\n {\n tabID: 'general',\n label: t('GENERAL'),\n fields: {\n mergeType: {\n label: t('Merge Options'),\n type: ComponentTypes.OPTION_GROUP,\n componentProps: {\n options: [\n {\n text: t('Wait for all branches to be completed.'),\n description: t('Wait until all branches are completed then move to the next step.'),\n value: 'ALL'\n },\n {\n text: t('Wait for any of the branches to be completed.'),\n description: t('Wait for any of the branches to complete then move to the next step. Other remaining active branches will expire.'),\n value: 'ANY'\n }\n ]\n }\n }\n }\n }\n ],\n [elementTypes.SPLIT]: {\n tabID: 'general',\n label: t('GENERAL'),\n fields: {\n mergeType: {\n label: t('Split branches'),\n description: t('The Split element allows you to create parallel branches. Each branch will execute tasks concurrently.'),\n type: ComponentTypes.EMPTY_ELEMENT\n }\n }\n },\n [elementTypes.ASSIGN_FORM]: [\n {\n tabID: 'general',\n label: t('GENERAL'),\n fields: {\n formID: {\n label: t('Add a Form'),\n type: ComponentTypes.FORM_PICKER_WIZARD\n },\n assignee: {\n debounce: true,\n type: ComponentTypes.SINGLE_EMAIL_INPUT,\n addFormFields: true,\n label: t('Assignee Email Address'),\n labelProps: {\n descriptionAtTop: true,\n required: true,\n isBorderless: true\n },\n LabelRenderer: LabelHorizontal,\n componentProps: {\n ignoreBlurRequirementOnValidation: true,\n isErrored: val => {\n if (Array.isArray(val) && val[0] && val[0]?.value?.indexOf(',') > -1) {\n return t('You can only add one email address as approver');\n }\n return singleEmailInputEmailErrored(val, true);\n },\n placeholder: 'example@example.com'\n }\n }\n }\n },\n {\n tabID: 'advanced',\n label: t('ADVANCED'),\n fields: {\n [REQUIRE_LOGIN]: { ...requireLogin, condition: () => DEFAULT_FEATURES[REQUIRE_LOGIN_ADVANCED] },\n assignFormEmail: { type: ComponentTypes.ELEMENT_EMAIL_WIZARD, componentProps: { ...getElementEmailWizardTemplate(elementTypes.ASSIGN_FORM) } },\n [SEND_REMINDER_EMAIL]: { type: ComponentTypes.SEND_REMINDER_WIZARD, componentProps: reminderEmailWizardTemplates[elementTypes.ASSIGN_FORM] }\n }\n }\n ],\n [elementTypes.ASSIGN]: [\n {\n tabID: 'general',\n label: t('GENERAL'),\n fields: {\n name: {\n label: t('Label Name'),\n LabelRenderer: LabelHorizontal,\n debounce: true\n },\n outcomes: {\n type: ComponentTypes.OUTCOMES_WIZARD,\n label: t('Outcomes'),\n LabelRenderer: LabelHorizontal,\n description: t('You can add custom outcomes to the task.')\n },\n assignee: {\n debounce: true,\n type: ComponentTypes.SINGLE_EMAIL_INPUT,\n addFormFields: DEFAULT_FEATURES[ALLOW_FORM_FIELDS],\n label: t('Assignee Email Address'),\n labelProps: {\n descriptionAtTop: false\n },\n LabelRenderer: LabelHorizontal,\n description: t('The assignee will be notified via email.'),\n componentProps: {\n placeholder: 'example@example.com',\n isErrored: singleEmailInputEmailErrored\n }\n },\n taskDescription: {\n type: ComponentTypes.TEXT_INPUT,\n LabelRenderer: LabelHorizontal,\n debounce: true,\n label: t('Description'),\n componentProps: {\n placeholder: t('Add description')\n }\n },\n assignEmail: {\n type: ComponentTypes.ELEMENT_EMAIL_WIZARD,\n componentProps: { ...getElementEmailWizardTemplate(elementTypes.ASSIGN) }\n },\n [COMMENT]: { type: ComponentTypes.COMMENT_WIZARD },\n uploadFiles: {\n type: ComponentTypes.TOGGLE,\n label: t('Upload Files'),\n LabelRenderer: LabelVertical,\n description: t('Allow your users to attach files as part of the task.')\n },\n uploadFilesRequired: {\n type: ComponentTypes.TOGGLE,\n label: t('Upload Required'),\n LabelRenderer: LabelVertical,\n condition: ({ uploadFiles }) => isYes(uploadFiles),\n description: t('Prevent task completion if the file is not uploaded.')\n }\n }\n },\n {\n tabID: 'assignAdvanced',\n label: t('ADVANCED'),\n fields: {\n [REASSIGN_TASK]: { type: ComponentTypes.REASSIGN_WIZARD },\n [CHECKLIST]: { type: ComponentTypes.CHECKLIST_WIZARD },\n [ESCALATION]: { type: ComponentTypes.ESCALATION_WIZARD },\n [EXPIRATION]: { type: ComponentTypes.EXPIRATION_WIZARD },\n [SEND_REMINDER_EMAIL]: { type: ComponentTypes.SEND_REMINDER_WIZARD, componentProps: reminderEmailWizardTemplates[elementTypes.ASSIGN] }\n }\n }\n ],\n [elementTypes.END_POINT]: {\n tabID: 'general',\n label: '',\n fields: {\n subType: {\n label: t('Behavior'),\n type: ComponentTypes.OPTION_GROUP,\n componentProps: {\n options: [\n {\n text: t('End'),\n description: t('Visual signal to indicate branch completion.'),\n value: elementSubTypes.END_POINT_PSEUDO\n },\n {\n text: t('Terminate'),\n description: t('When this step is reached, the flow stops immediately.'),\n value: elementSubTypes.END_POINT_TERMINATE\n }\n ]\n }\n },\n reasonOfTerminate: {\n label: t('Reason'),\n type: ComponentTypes.TEXTAREA,\n componentProps: {\n limit: 300\n },\n debounce: true,\n condition: ({ subType }) => subType === elementSubTypes.END_POINT_TERMINATE && DEFAULT_FEATURES[TERMINATE_REASON]\n }\n }\n },\n [elementTypes.SIGN_DOCUMENT]: [\n {\n tabID: '',\n fields: {\n documentID: {\n label: t('Select Document'),\n type: ComponentTypes.DOCUMENT_PICKER_WIZARD,\n labelProps: {\n descriptionAtTop: true,\n required: true,\n isBorderless: false\n },\n LabelRenderer: LabelHorizontal\n },\n signerMapping: {\n label: t('Manage Signers'),\n debounce: true,\n labelProps: {\n descriptionAtTop: true,\n required: true,\n isBorderless: false\n },\n LabelRenderer: LabelHorizontal,\n type: ComponentTypes.DOCUMENT_SIGN_MATCHER,\n condition: ({ documentID }) => !!documentID\n }\n }\n }\n ],\n [elementTypes.ASSIGN_TASK]: [\n {\n tabID: 'general',\n label: t('GENERAL'),\n fields: {\n name: {\n type: ComponentTypes.TEXT_INPUT,\n label: t('Title'),\n debounce: true,\n labelProps: {\n required: true\n },\n LabelRenderer: LabelHorizontal,\n componentProps: {\n debounceWaitTime: 666,\n isErrored: val => {\n if (val?.length === 0) return 'The field is required';\n return false;\n },\n errorMessage: 'The field is required',\n showInitialError: true,\n errorClassName: 'formWizard-error-inline'\n }\n },\n taskDescription: {\n label: t('Description'),\n type: ComponentTypes.TEXTAREA,\n debounce: true,\n componentProps: {\n limit: 300\n },\n LabelRenderer: LabelHorizontal\n },\n outcomes: {\n type: ComponentTypes.OUTCOMES_WIZARD,\n label: t('Outcome'),\n LabelRenderer: LabelHorizontal\n },\n assignee: {\n debounce: true,\n type: DEFAULT_FEATURES[DISABLE_FREE_TEXT_ON_RECIPIENTS] ? ComponentTypes.USER_EMAILS_DROPDOWN_WIZARD : ComponentTypes.SINGLE_EMAIL_INPUT,\n addFormFields: true,\n label: t('Assignee'),\n labelProps: {\n descriptionAtTop: true,\n required: true\n },\n LabelRenderer: LabelHorizontal,\n componentProps: {\n ignoreBlurRequirementOnValidation: true,\n isErrored: val => {\n if (Array.isArray(val) && val[0] && val[0]?.value?.indexOf(',') > -1) {\n return t('You can only add one email address as approver');\n }\n return singleEmailInputEmailErrored(val, true);\n },\n placeholder: 'example@example.com'\n }\n },\n taskElement: {\n type: ComponentTypes.WORKFLOW_FORM_BUILDER_BUTTON,\n componentProps: {\n buttonName: 'CUSTOMIZE'\n },\n LabelRenderer: LabelVertical\n },\n sendNotification: {\n type: ComponentTypes.DISABLE_STATE_TOGGLE,\n LabelRenderer: LabelVertical,\n label: t('Notification Emails'),\n labelProps: {\n className: 'isSendNotification'\n },\n componentProps: {\n toggleValues: {\n defaultValue: 'Yes',\n readOnly: false,\n updateKey: 'sendNotification'\n },\n setDefaultReadOnlyValue: true\n },\n description: t('Notify assignee via email.'),\n condition: () => isDisableNotificationFeatureEnable\n },\n assignTaskEmail: {\n type: ComponentTypes.ELEMENT_EMAIL_WIZARD,\n componentProps: {\n ...getElementEmailWizardTemplate(elementTypes.ASSIGN_TASK),\n isPasswordCheck: true,\n ...isDisableNotificationFeatureEnable && { disableDescription: true }\n },\n condition: ({ sendNotification }) => (isDisableNotificationFeatureEnable ? isYes(sendNotification) : true)\n },\n [REQUIRE_LOGIN]: {\n type: ComponentTypes.DISABLE_STATE_TOGGLE,\n LabelRenderer: LabelVertical,\n label: t('Require Login for Assignee'),\n componentProps: {\n toggleValues: {\n defaultValue: 'Yes',\n updateKey: 'requireLogin',\n tooltipText: 'This can’t be disabled if notification emails are disabled.'\n }\n },\n condition: () => !DEFAULT_FEATURES[REQUIRE_LOGIN_ADVANCED] && DEFAULT_FEATURES[REQUIRE_LOGIN_FEATURE]\n }\n }\n },\n {\n tabID: 'assignTaskAdvanced',\n label: t('ADVANCED'),\n fields: {\n [EXPIRATION]: { type: ComponentTypes.EXPIRATION_WIZARD },\n [SEND_REMINDER_EMAIL]: { type: ComponentTypes.SEND_REMINDER_WIZARD, componentProps: reminderEmailWizardTemplates[elementTypes.ASSIGN_TASK] }\n }\n }\n ],\n workflow_assign_task_for_outcomeID: {\n tabID: 'general',\n label: t('GENERAL'),\n fields: {\n outcomes: {\n type: ComponentTypes.OUTCOMES_WIZARD,\n label: t('Outcome'),\n LabelRenderer: LabelHorizontal\n }\n }\n },\n workflow_assign_task_for_heading: {\n tabID: 'general',\n label: t('GENERAL'),\n fields: {\n name: {\n type: ComponentTypes.TEXT_INPUT,\n label: t('Title'),\n debounce: true,\n labelProps: {\n required: true\n },\n LabelRenderer: LabelHorizontal,\n componentProps: {\n debounceWaitTime: 666\n }\n },\n taskDescription: {\n label: t('Description'),\n type: ComponentTypes.TEXTAREA,\n debounce: true,\n componentProps: {\n limit: 300\n },\n LabelRenderer: LabelHorizontal\n }\n }\n },\n workflow_approval_for_outcomeID: {\n tabID: 'general',\n label: t('GENERAL'),\n fields: {\n outcomes: {\n type: ComponentTypes.OUTCOMES_WIZARD,\n label: t('Outcomes'),\n LabelRenderer: LabelHorizontal\n }\n }\n },\n workflow_approval_for_heading: {\n tabID: 'general',\n label: t('GENERAL'),\n fields: {\n header: {\n type: ComponentTypes.TEXT_INPUT,\n label: t('Title'),\n debounce: true,\n labelProps: {\n required: true\n },\n LabelRenderer: LabelHorizontal,\n componentProps: {\n debounceWaitTime: 666\n }\n },\n taskDescription: {\n label: t('Description'),\n type: ComponentTypes.TEXTAREA,\n debounce: true,\n componentProps: {\n limit: 300\n },\n LabelRenderer: LabelHorizontal\n }\n }\n },\n workflow_approval_for_signature: {\n tabID: 'general',\n label: t('GENERAL'),\n fields: {\n signatureOutcomes: {\n type: ComponentTypes.OUTCOMES_CHECKBOX_WIZARD,\n label: t('Require signature for:'),\n componentProps: {\n defaultValue: 'Yes'\n },\n condition: () => window.isSubTypeForApproval\n }\n }\n }\n});\n\nconst subNodeProperties = ({\n [elementTypes.APPROVAL]: {\n [elementSubTypes.APPROVAL_WITH_SIGN]: DEFAULT_FEATURES[MULTIPLE_APPROVAL] ? getApproveAndSignStructure : [\n {\n tabID: 'general',\n label: t('GENERAL'),\n fields: {\n outcomes: {\n type: ComponentTypes.OUTCOMES_WIZARD,\n label: t('Outcomes'),\n LabelRenderer: LabelHorizontal\n },\n signatureOutcomes: {\n type: ComponentTypes.OUTCOMES_CHECKBOX_WIZARD,\n label: t('Require signature for:'),\n componentProps: {\n defaultValue: 'Yes'\n },\n condition: () => window.isSubTypeForApproval\n },\n advancedOutcomes: {\n label: t('Additional Outcomes'),\n LabelRenderer: LabelHorizontal,\n labelProps: { isBorderless: true },\n ComponentRenderer: ComponentTypes.EMPTY_ELEMENT\n },\n [REASSIGN_TASK]: {\n labelProps: { isBorderless: true },\n type: ComponentTypes.REASSIGN_WIZARD\n },\n [REQUEST_MORE_INFO]: {\n type: ComponentTypes.TOGGLE,\n LabelRenderer: LabelVertical,\n label: t('Request More Information'),\n condition: () => DEFAULT_FEATURES[REQUEST_MORE_INFO_FEATURE],\n description: t('Let your users ask for more details about the submission before they approve or reject the request.')\n },\n approver: {\n debounce: true,\n type: DEFAULT_FEATURES[DISABLE_FREE_TEXT_ON_RECIPIENTS] ? ComponentTypes.USER_EMAILS_DROPDOWN_WIZARD : ComponentTypes.SINGLE_EMAIL_INPUT,\n addFormFields: true,\n label: t('Signer Email Address'),\n labelProps: {\n descriptionAtTop: false\n },\n LabelRenderer: LabelHorizontal,\n description: t('When users submit a form, the signer will be notified via email.'),\n componentProps: {\n ignoreBlurRequirementOnValidation: true,\n placeholder: 'example@example.com',\n isErrored: val => {\n if (Array.isArray(val) && val[0] && val[0]?.value?.indexOf(',') > -1) {\n return t('You can only add one email address as approver');\n }\n\n return singleEmailInputEmailErrored(val, true);\n }\n }\n },\n [REQUIRE_LOGIN]: { ...requireLogin, condition: () => !DEFAULT_FEATURES[REQUIRE_LOGIN_ADVANCED] && DEFAULT_FEATURES[REQUIRE_LOGIN_FEATURE] },\n approvalEmail: {\n type: ComponentTypes.ELEMENT_EMAIL_WIZARD,\n componentProps: {\n labelProps: { isBorderless: true },\n wizardKey: 'sendCustomApprovalEmail',\n emailType: EMAIL_TEMPLATE_TYPES.WORKFLOW_APPROVE_START,\n emailSubType: ApprovalEmailSubTypes.APPROVAL_REQUEST,\n label: t('Signer Request Email'),\n description: t('Signers will be notified via email.')\n }\n }\n }\n },\n {\n tabID: 'approvalAdvanced',\n label: t('ADVANCED'),\n fields: {\n [REQUIRE_LOGIN]: { ...requireLogin, condition: () => DEFAULT_FEATURES[REQUIRE_LOGIN_ADVANCED] },\n [COMMENT]: { type: ComponentTypes.COMMENT_WIZARD },\n [ESCALATION]: { type: ComponentTypes.ESCALATION_WIZARD },\n [EXPIRATION]: { type: ComponentTypes.EXPIRATION_WIZARD },\n [AUTO_FINISH]: {\n condition: () => !DEFAULT_FEATURES[DISABLE_AUTO_FINISH_TASK],\n type: ComponentTypes.AUTO_COMPLETE_WIZARD\n },\n [SEND_REMINDER_EMAIL]: { type: ComponentTypes.SEND_REMINDER_WIZARD, componentProps: reminderEmailWizardTemplates[elementTypes.APPROVAL] }\n }\n }\n ],\n [elementSubTypes.TEAM_APPROVAL]: [\n {\n tabID: 'general',\n label: t('GENERAL'),\n fields: {\n outcomes: {\n type: ComponentTypes.OUTCOMES_WIZARD,\n label: t('Outcomes'),\n LabelRenderer: LabelHorizontal\n },\n team: {\n type: ComponentTypes.TEAM_DROPDOWN,\n debounce: true,\n LabelRenderer: LabelHorizontal,\n label: t('Select a Team'),\n componentProps: {\n label: t('Select a Team')\n },\n labelProps: { isBorderless: true },\n addFormFields: false\n },\n ...!isDisableNotificationFeatureEnable && {\n [REQUIRE_LOGIN]: {\n type: ComponentTypes.CHECKBOX_WITH_DEFAULT_VALUE,\n labelProps: {\n descriptionAtTop: false,\n isBorderless: true\n },\n componentProps: {\n children: t('Require Login for Approver'),\n defaultValue: 'Yes',\n ariaLabel: t('Require Login for Approver')\n },\n LabelRenderer: LabelHorizontal,\n condition: () => !DEFAULT_FEATURES[REQUIRE_LOGIN_ADVANCED] && DEFAULT_FEATURES[REQUIRE_LOGIN_FEATURE]\n }\n },\n approvalOptions: {\n debounce: true,\n type: ComponentTypes.APPROVAL_OPTIONS,\n label: t('Completion Rule'),\n componentProps: {\n optionsKey: 'Signer',\n teamApprover: true\n },\n labelProps: {\n descriptionAtTop: false,\n isNew: false\n },\n LabelRenderer: LabelHorizontal\n },\n enableSignature: {\n type: ComponentTypes.ENABLE_SIGNATURE_TOGGLE,\n LabelRenderer: LabelVertical,\n label: t('Request Signature'),\n description: t('Ask signature from team before their approval.')\n },\n signatureOutcomes: {\n type: ComponentTypes.OUTCOMES_CHECKBOX_WIZARD,\n label: t('Require signature for:'),\n componentProps: {\n defaultValue: 'Yes'\n },\n condition: ({ enableSignature }) => window.isSubTypeForApproval && isYes(enableSignature)\n },\n sendNotification: {\n type: ComponentTypes.DISABLE_STATE_TOGGLE,\n LabelRenderer: LabelVertical,\n label: t('Notification Emails'),\n labelProps: {\n className: 'isSendNotification'\n },\n componentProps: {\n toggleValues: {\n defaultValue: 'Yes',\n readOnly: false,\n updateKey: 'sendNotification'\n },\n setDefaultReadOnlyValue: true\n },\n description: t('Notify approvers via email.'),\n condition: () => isDisableNotificationFeatureEnable\n },\n approvalEmail: {\n type: ComponentTypes.ELEMENT_EMAIL_WIZARD,\n componentProps: {\n labelProps: { isBorderless: true },\n wizardKey: 'sendCustomApprovalEmail',\n emailType: EMAIL_TEMPLATE_TYPES.WORKFLOW_APPROVE_START,\n emailSubType: ApprovalEmailSubTypes.APPROVAL_REQUEST,\n label: t('Approval Request Email'),\n ...isDisableNotificationFeatureEnable && { disableDescription: true },\n description: t('Approval will be notified via email.')\n },\n condition: ({ sendNotification }) => (isDisableNotificationFeatureEnable ? isYes(sendNotification) : true)\n\n },\n ...isDisableNotificationFeatureEnable && {\n [REQUIRE_LOGIN]: {\n type: ComponentTypes.DISABLE_STATE_TOGGLE,\n LabelRenderer: LabelVertical,\n label: t('Require Login for Approver'),\n labelProps: {\n className: 'isSendNotification'\n },\n componentProps: {\n toggleValues: {\n defaultValue: 'Yes',\n updateKey: 'requireLogin',\n tooltipText: 'This can’t be disabled if notification emails are disabled.'\n }\n },\n condition: () => !DEFAULT_FEATURES[REQUIRE_LOGIN_ADVANCED] && DEFAULT_FEATURES[REQUIRE_LOGIN_FEATURE]\n }\n },\n loginlessDesigner: {\n type: ComponentTypes.WORKFLOW_FORM_BUILDER_BUTTON,\n componentProps: {\n buttonName: 'CUSTOMIZE'\n },\n LabelRenderer: LabelHorizontal,\n condition: ({ requireLogin: loginless }) => isWorkflowFormBuilderOpened && !isYes(loginless)\n }\n }\n },\n {\n tabID: 'approvalAdvanced',\n label: t('ADVANCED'),\n fields: {\n [REQUIRE_LOGIN]: { ...requireLogin, condition: () => DEFAULT_FEATURES[REQUIRE_LOGIN_ADVANCED] },\n [REQUEST_MORE_INFO]: {\n type: ComponentTypes.TOGGLE,\n LabelRenderer: LabelVertical,\n label: t('Request More Information'),\n condition: () => DEFAULT_FEATURES[REQUEST_MORE_INFO_FEATURE],\n description: t('Let your users ask for more details about the submission before they approve or reject the request.')\n },\n [COMMENT]: { type: ComponentTypes.COMMENT_WIZARD },\n [ESCALATION]: { type: ComponentTypes.ESCALATION_WIZARD },\n [EXPIRATION]: { type: ComponentTypes.EXPIRATION_WIZARD },\n [AUTO_FINISH]: {\n condition: () => !DEFAULT_FEATURES[DISABLE_AUTO_FINISH_TASK],\n type: ComponentTypes.AUTO_COMPLETE_WIZARD\n },\n [SEND_REMINDER_EMAIL]: { type: ComponentTypes.SEND_REMINDER_WIZARD, componentProps: reminderEmailWizardTemplates[elementTypes.APPROVAL] }\n }\n }\n ]\n },\n [elementTypes.SEND_EMAIL]: {\n [elementSubTypes.SEND_APPROVAL_REPORT]: DEFAULT_FEATURES[NEW_REPORT_ELEMENT] ? [\n {\n tabID: 'general',\n label: t('GENERAL'),\n fields: {\n to: {\n type: ComponentTypes.EMAIL_INPUT,\n label: t('Recipient Email Address'),\n labelProps: {\n descriptionAtTop: false\n },\n addFormFields: true,\n LabelRenderer: LabelHorizontal,\n componentProps: {\n ignoreBlurRequirementOnValidation: true,\n placeholder: 'example@example.com',\n isErrored: (value = []) => {\n const validRecipients = value?.filter?.(r => (typeof r === 'string' ? isEmail(r) : r.isValid || r.isValid === undefined)) || [];\n const invalidRecipients = value.length - validRecipients.length;\n\n if (Array.isArray(value) && !value.length) {\n return t('At least one recipient is required');\n }\n\n if (invalidRecipients) {\n return t(`${invalidRecipients} invalid email address`);\n }\n\n if (CONFIGURATION.MAX_EMAIL_RECIPIENT_LIMIT && validRecipients.length > CONFIGURATION.MAX_EMAIL_RECIPIENT_LIMIT) {\n return true;\n }\n return false;\n },\n popoverProps: {\n style: { zIndex: 99999 }\n },\n maxCount: CONFIGURATION.MAX_EMAIL_RECIPIENT_LIMIT,\n showRemainingCount: true\n }\n },\n pdfDocuments: {\n type: ComponentTypes.MULTI_FORM_PDF,\n label: t('Send Submissions as PDFs'),\n description: t('Selected submissions will be shared as PDF documents.'),\n labelProps: {\n descriptionAtTop: true,\n required: true,\n isBorderless: false\n },\n LabelRenderer: LabelHorizontal\n },\n uploadAttachmentEnable: {\n type: ComponentTypes.TOGGLE,\n LabelRenderer: LabelVertical,\n label: t('Upload PDFs'),\n description: t('Uploaded PDF files will be shared with recipients.')\n },\n attachment: {\n type: ComponentTypes.FILE_UPLOAD,\n LabelRenderer: LabelVertical,\n condition: ({ uploadAttachmentEnable }) => isYes(uploadAttachmentEnable)\n }\n }\n },\n {\n tabID: 'sendPDFAdvance',\n label: t('ADVANCED'),\n fields: {\n x: {\n type: ComponentTypes.ELEMENT_EMAIL_WIZARD,\n componentProps: {\n label: t('Customize Signer Request Email'),\n ...getElementEmailWizardTemplate(elementTypes.SEND_EMAIL, elementSubTypes.SEND_PDF)\n }\n },\n passwordEnabled: {\n type: ComponentTypes.TOGGLE,\n label: t('Enable password protection for submission PDF documents.'),\n LabelRenderer: LabelVertical,\n labelProps: {\n descriptionAtTop: false\n }\n },\n password: {\n type: ComponentTypes.PDF_PASSWORD\n }\n }\n }\n ] : {\n tabID: 'general',\n label: t('GENERAL'),\n fields: {\n to: {\n type: ComponentTypes.EMAIL_INPUT,\n label: t('Recipient Email Address'),\n labelProps: {\n descriptionAtTop: false\n },\n addFormFields: true,\n LabelRenderer: LabelHorizontal,\n componentProps: {\n ignoreBlurRequirementOnValidation: true,\n placeholder: 'example@example.com',\n isErrored: (value = []) => {\n const validRecipients = value?.filter?.(r => (typeof r === 'string' ? isEmail(r) : r.isValid || r.isValid === undefined)) || [];\n const invalidRecipients = value.length - validRecipients.length;\n\n if (Array.isArray(value) && !value.length) {\n return t('At least one recipient is required');\n }\n\n if (invalidRecipients) {\n return t(`${invalidRecipients} invalid email address`);\n }\n\n if (CONFIGURATION.MAX_EMAIL_RECIPIENT_LIMIT && validRecipients.length > CONFIGURATION.MAX_EMAIL_RECIPIENT_LIMIT) {\n return true;\n }\n return false;\n },\n popoverProps: {\n style: { zIndex: 99999 }\n },\n maxCount: CONFIGURATION.MAX_EMAIL_RECIPIENT_LIMIT,\n showRemainingCount: true\n }\n },\n pdfId: {\n type: ComponentTypes.PDF_SELECT_LIST,\n label: t('Add PDF Reports'),\n LabelRenderer: LabelHorizontal,\n description: t('Select PDF Documents you would like to attach to email.'),\n labelProps: { isBorderless: true },\n componentProps: {\n showSelectedItemCount: false\n }\n },\n passwordEnabled: {\n type: ComponentTypes.PDF_PASSWORD_CHECKBOX,\n componentProps: {\n children: t('Enable PDF Password'),\n backgroundColor: '#0099FF',\n borderColor: '#0099FF'\n },\n labelProps: {\n className: 'wfLabel isHorizontal isBorderless'\n }\n },\n PDFPassword: { // TODO: Password should reset itself on first time of editing\n type: ComponentTypes.PDF_PASSWORD,\n componentProps: {\n ignoreBlurRequirementOnValidation: true,\n clearInitialOnFocus: true,\n sendValueToParent: true,\n allowPasswordShow: false,\n passwordLabel: null\n // isErrored: value => ((valueList.attachPDF && (valueList.enablePDFPassword || isHIPAA) && valueList.PDFPassword !== '*jfplaceholder*') ? hasPDFPasswordError(isHIPAA, value) : false)\n }\n },\n x: { type: ComponentTypes.ELEMENT_EMAIL_WIZARD, componentProps: { ...getElementEmailWizardTemplate(elementTypes.SEND_EMAIL, elementSubTypes.SEND_APPROVAL_REPORT) } }\n }\n },\n [elementSubTypes.SEND_PDF]: [\n {\n tabID: 'general',\n label: t('GENERAL'),\n fields: {\n to: {\n debounce: true,\n type: ComponentTypes.SINGLE_EMAIL_INPUT,\n addFormFields: true,\n label: t('Recipient Email Address'),\n labelProps: {\n descriptionAtTop: true,\n required: true,\n isBorderless: false\n },\n LabelRenderer: LabelHorizontal,\n componentProps: {\n ignoreBlurRequirementOnValidation: true,\n isErrored: val => {\n if (Array.isArray(val) && val[0] && val[0]?.value?.indexOf(',') > -1) {\n return t('You can only add one email address as approver');\n }\n return singleEmailInputEmailErrored(val, true);\n },\n placeholder: 'example@example.com'\n }\n },\n pdfDocuments: {\n type: ComponentTypes.MULTI_FORM_PDF,\n label: t('Send Submissions as PDFs'),\n description: t('Selected submissions will be shared as PDF documents.'),\n labelProps: {\n descriptionAtTop: true,\n required: true,\n isBorderless: false\n },\n LabelRenderer: LabelHorizontal\n },\n passwordEnabled: {\n type: ComponentTypes.TOGGLE,\n label: t('Enable PDF Password'),\n LabelRenderer: LabelVertical,\n // labelProps: {\n // descriptionAtTop: false\n // },\n description: t('Secure your PDF with a password.'),\n componentProps: {\n label: t('Secure your PDF with a password.'),\n value: isPDFPasswordRequiredOnHIPAA() ? 'Yes' : false,\n type: elementTypes.SEND_EMAIL,\n subType: elementSubTypes.SEND_PDF,\n isPasswordToggle: true,\n readOnly: isPDFPasswordRequiredOnHIPAA()\n }\n },\n password: {\n type: ComponentTypes.PDF_PASSWORD,\n componentProps: {\n hipaaPasswordEnable: isPDFPasswordRequiredOnHIPAA() ? 'Yes' : null\n }\n }\n }\n },\n {\n tabID: 'sendPDFAdvance',\n label: t('ADVANCED'),\n fields: {\n x: {\n type: ComponentTypes.ELEMENT_EMAIL_WIZARD,\n LabelRenderer: LabelHorizontal,\n componentProps: {\n label: t('Signer Request Email'),\n ...getElementEmailWizardTemplate(elementTypes.SEND_EMAIL, elementSubTypes.SEND_PDF)\n }\n },\n uploadAttachmentEnable: {\n type: ComponentTypes.TOGGLE,\n LabelRenderer: LabelVertical,\n label: t('Upload PDFs'),\n description: t('Uploaded PDF files will be shared with recipients.')\n },\n attachment: {\n type: ComponentTypes.FILE_UPLOAD,\n LabelRenderer: LabelVertical,\n condition: ({ uploadAttachmentEnable }) => isYes(uploadAttachmentEnable),\n componentProps: {\n allowedTypes: 'application/pdf'\n }\n }\n }\n }\n ],\n [elementSubTypes.SEND_DEFAULT_REPORT]: {\n tabID: 'general',\n label: t('GENERAL'),\n fields: {\n to: {\n type: ComponentTypes.EMAIL_INPUT,\n label: t('Recipient Email Address'),\n labelProps: {\n descriptionAtTop: false\n },\n addFormFields: true,\n LabelRenderer: LabelHorizontal,\n componentProps: {\n ignoreBlurRequirementOnValidation: true,\n placeholder: 'example@example.com',\n isErrored: (value = []) => {\n const validRecipients = value?.filter?.(r => (typeof r === 'string' ? isEmail(r) : r.isValid || r.isValid === undefined)) || [];\n const invalidRecipients = value.length - validRecipients.length;\n\n if (Array.isArray(value) && !value.length) {\n return t('At least one recipient is required');\n }\n\n if (invalidRecipients) {\n return t(`${invalidRecipients} invalid email address`);\n }\n\n if (CONFIGURATION.MAX_EMAIL_RECIPIENT_LIMIT && validRecipients.length > CONFIGURATION.MAX_EMAIL_RECIPIENT_LIMIT) {\n return true;\n }\n return false;\n },\n popoverProps: {\n style: { zIndex: 99999 }\n },\n maxCount: CONFIGURATION.MAX_EMAIL_RECIPIENT_LIMIT,\n showRemainingCount: true\n }\n },\n reportSettings: {\n type: ComponentTypes.PREVIEW_WIZARD,\n label: isWorkflowReleased ? t('Flow Report') : t('Approval Report'),\n description: isWorkflowReleased ? t('Recipients will receive an auto-generated flow report. ') : t('Recipients will receive an auto-generated approval report.'),\n componentProps: {\n previewType: 'APPROVAL_REPORT'\n }\n },\n reportName: {\n type: ComponentTypes.TAG_INPUT,\n label: t('Report Name'),\n addFormFields: DEFAULT_FEATURES[ALLOW_FORM_FIELDS],\n componentProps: {\n defaultValue: isWorkflowReleased ? t('Flow Report') : t('Approval Report')\n }\n },\n passwordEnabled: {\n type: ComponentTypes.TOGGLE,\n label: t('Enable password protection'),\n labelProps: {\n descriptionAtTop: false\n },\n componentProps: {\n value: isPDFPasswordRequiredOnHIPAA() ? 'Yes' : false,\n type: elementTypes.SEND_EMAIL,\n subType: elementSubTypes.SEND_DEFAULT_REPORT,\n isPasswordToggle: true,\n readOnly: isPDFPasswordRequiredOnHIPAA()\n }\n },\n password: {\n type: ComponentTypes.PDF_PASSWORD,\n componentProps: {\n hipaaPasswordEnable: isPDFPasswordRequiredOnHIPAA() ? 'Yes' : null\n }\n },\n x: { type: ComponentTypes.ELEMENT_EMAIL_WIZARD, componentProps: { ...getElementEmailWizardTemplate(elementTypes.SEND_EMAIL, elementSubTypes.SEND_DEFAULT_REPORT) } }\n }\n }\n },\n [elementTypes.ASSIGN_FORM]: {\n [elementSubTypes.PAYMENT_FORM]: [\n {\n tabID: 'general',\n label: t('GENERAL'),\n fields: {\n formID: {\n label: t('Add a Payment Form'),\n type: ComponentTypes.FORM_PICKER_WIZARD,\n componentProps: {\n setPaymentFormFilter: true\n }\n },\n assignee: {\n debounce: true,\n type: ComponentTypes.SINGLE_EMAIL_INPUT,\n addFormFields: true,\n label: t('Assignee Email Address'),\n labelProps: {\n descriptionAtTop: true,\n required: true,\n isBorderless: true\n },\n LabelRenderer: LabelHorizontal,\n componentProps: {\n ignoreBlurRequirementOnValidation: true,\n isErrored: val => {\n if (Array.isArray(val) && val[0] && val[0]?.value?.indexOf(',') > -1) {\n return t('You can only add one email address as approver');\n }\n return singleEmailInputEmailErrored(val, true);\n },\n placeholder: 'example@example.com'\n }\n }\n }\n },\n {\n tabID: 'advanced',\n label: t('ADVANCED'),\n fields: {\n [REQUIRE_LOGIN]: { ...requireLogin, condition: () => DEFAULT_FEATURES[REQUIRE_LOGIN_ADVANCED] },\n assignFormEmail: { type: ComponentTypes.ELEMENT_EMAIL_WIZARD, componentProps: { ...getElementEmailWizardTemplate(elementTypes.ASSIGN_FORM) } },\n [SEND_REMINDER_EMAIL]: { type: ComponentTypes.SEND_REMINDER_WIZARD, componentProps: reminderEmailWizardTemplates[elementTypes.ASSIGN_FORM] }\n }\n }\n ]\n }\n});\n\nconst prefillProperties = {\n tabID: 'prefill',\n label: t('PREFILL'),\n fields: {\n prefillNotEnabled: {\n type: ComponentTypes.TOGGLE,\n label: t('Prefill Form Fields'),\n LabelRenderer: LabelVertical,\n description: t('Use submission info from another form to pre-populate assigned form.'),\n componentProps: {\n readOnly: true,\n showToolTip: true,\n tooltipText: t('To enable prefill you need to select a form first.')\n },\n condition: ({ formID }) => { return !!(formID === undefined || formID === ''); }\n },\n prefillEnabled: {\n type: ComponentTypes.TOGGLE,\n label: t('Prefill Form Fields'),\n LabelRenderer: LabelVertical,\n description: t('Use submission info from another form to pre-populate assigned form.'),\n condition: ({ formID }) => !!formID\n },\n prefillBanner: {\n type: ComponentTypes.BANNER,\n LabelRenderer: LabelVertical,\n componentProps: {\n bannerType: 'prefil'\n },\n condition: ({ formID, prefillEnabled }) => { return !!((formID === undefined || formID === '' || !isYes(prefillEnabled))); }\n },\n prefillFormID: {\n label: t('Select a Source Form to Get Data From'),\n type: ComponentTypes.FORM_PICKER_WIZARD,\n componentProps: {\n useWorkflowForms: true\n },\n condition: ({ formID, prefillEnabled }) => isYes(prefillEnabled) && !!formID\n },\n prefillMapping: {\n type: ComponentTypes.PREFILL_FIELD_MATCHER,\n condition: ({ prefillEnabled, prefillFormID }) => isYes(prefillEnabled) && !!prefillFormID\n }\n }\n};\n\nexport const getNodeProperties = (elementType, subType = null) => {\n if (!nodeProperties[elementType]) {\n return [];\n }\n\n if (DEFAULT_FEATURES[PREFILL] && elementType === elementTypes.ASSIGN_FORM) {\n const properties = subNodeProperties[elementType]?.[subType] || nodeProperties[elementType];\n return [properties[0], prefillProperties, properties[1]];\n }\n\n return subType && subNodeProperties[elementType]?.[subType] ? subNodeProperties[elementType][subType] : nodeProperties[elementType];\n};\n","import {\n oneOf, shape, string, bool, number\n} from 'prop-types';\nimport { elementSubTypes, elementTypes } from './elementTypes';\n\nexport const nodeWidgetProps = {\n node: shape({\n options: shape({\n selected: bool,\n name: string\n })\n }).isRequired,\n engine: shape({}).isRequired\n};\n\nexport const resourceTypeProps = {\n resourceType: oneOf(['FORM'])\n};\n\nexport const outcomeProps = shape({\n id: number,\n text: string,\n textColor: string,\n buttonColor: string\n});\n\nexport const elementTypeProp = oneOf(Object.values(elementTypes));\nexport const elementSubTypeProp = oneOf(Object.values(elementSubTypes));\n","/* eslint-disable max-len */\nimport { DEFAULT_FEATURES, WORKFLOW_RELEASED } from './features';\n\nconst isWorkflowReleased = DEFAULT_FEATURES[WORKFLOW_RELEASED];\nexport const TEXTS = {\n REQUIRE_RESPONSE_FROM_MAJORITY: 'Require response from majority',\n REQUIRE_RESPONSE_FROM_ALL: 'Require response from all',\n REQUIRE_RESPONSE_FROM_ONE_PERSON: 'Require response from one person',\n REQUIRE_CERTAIN_NUMBER_OF_RESPONSE: 'Require certain number of responses',\n ERROR_DESCRIPTION: isWorkflowReleased ? 'To make sure all steps are working correctly in your workflow, please fix the errors listed below.'\n : 'To make sure all steps are working correctly in your approval flow, please fix the errors listed below.',\n WARNING_DESCRIPTION: isWorkflowReleased ? 'Changes that you made on the workflow broke the ongoing process for {count}.'\n : 'Changes that you made on the approval flow broke the ongoing process for {count}.',\n FLOW_TITLE: isWorkflowReleased ? 'Workflow Title' : 'Approval Flow Title',\n RESTART_FLOW_TEXT: isWorkflowReleased ? 'Restart Workflow On Submission Edit' : 'Restart Approval Flow On Submission Edit',\n RESTART_FLOW_DESCRIPTION: isWorkflowReleased ? 'The flow will automatically restart every time submitters edit their submissions.' : 'The approval flow will automatically restart every time submitters edit their submissions.',\n FLOW_SETTINGS: isWorkflowReleased ? 'WORKFLOW SETTINGS' : 'APPROVAL SETTINGS',\n CHANGE_FLOW_TITLE_STATUS: isWorkflowReleased ? 'Change your workflow title or status.' : 'Change your approval title or status.',\n SHARE_FLOW_AS_TEMPLATE: isWorkflowReleased ? 'Share Workflow as a Template' : 'Share Approval as a Template',\n SHARE_FLOW_TO_COMMUNITY: isWorkflowReleased ? 'Share your workflow as a template with Jotform community.' : 'Share your approval as a template with Jotform community.',\n SHARE_TEMPLATE: 'Share Template',\n FLOW_ELEMENTS: isWorkflowReleased ? 'Workflow Elements' : 'Approval Elements',\n FORM: 'Form',\n PAYMENT_FORM: 'Payment Form',\n EMAIL: 'Email',\n APPROVE_SING: 'Approve & Sign',\n APPROVAL: 'Approval',\n ASSIGN_TASK: 'Task',\n TEAM_APPROVAL: 'Team Approval',\n REPORT: isWorkflowReleased ? 'Flow Report' : 'Approval Report',\n PDF: 'PDF',\n SIGN_DOCUMENT: 'Sign Document',\n ASSIGN: 'Assign',\n IF_ELSE: 'If/Else Condition',\n CONDITIONAL_BRANCH: 'Conditional Branch',\n SPLIT: 'Split Branches',\n MERGE: 'Merge Branches',\n END: 'End',\n APPROVAL_REQUEST_EMAIL: 'Approval Request Email',\n APPROVAL_REQUEST_EMAIL_DESC: 'Approvers will be notified via email.',\n ASSIGN_EMAIL: 'Task Notification Email',\n ASSIGN_EMAIL_DESC: 'Send custom email to the assignee.',\n ASSIGN_FORM_EMAIL: 'User Notification Email',\n ASSIGN_FORM_EMAIL_DESC: 'Send custom email to the assignee.',\n FLOW_REPORT_EMAIL: isWorkflowReleased ? 'Flow Report Email ' : 'Approval Report Email',\n FLOW_REPORT_EMAIL_DESC: 'Send custom email to the users.',\n SEND_PDF_EMAIL: 'Notification Email',\n SEND_PDF_EMAIL_DESC: 'Send custom email to the recipient.',\n USER_GUIDE: isWorkflowReleased ? 'Workflows User Guides' : 'Approvals User Guides',\n GO_BACK: isWorkflowReleased ? 'My Workflows' : 'My Approvals',\n MISSING_ENTRY_POINT: isWorkflowReleased ? 'To publish your flow you need to [1[add a form]] as a start point.' : 'To publish your approval flow you need to [1[add a form]] as a start point.',\n PUBLISH_DEFAULT_TEXT: isWorkflowReleased ? 'To publish your flow you need to [1[sign up]] first.' : 'To publish your approval flow you need to [1[sign up]] first.'\n};\n","export const { teamID: TEAM_ID } = window;\n","import { t } from '@jotforminc/translation';\n\nexport const undefinedOutcome = {\n text: t('Select Outcome'),\n textColor: '#fff',\n buttonColor: '#9e9fb7'\n};\n\nexport const undefinedBranch = {\n text: t('Select Branch'),\n textColor: '#fff',\n buttonColor: '#9e9fb7'\n};\n","export const WF_WARNING_TYPES = {\n MISSING_PDF: 'MISSING_PDF'\n};\n\nexport const WARNING_TYPE_STRINGS = {\n [WF_WARNING_TYPES.MISSING_PDF]: 'Missing attachment'\n};\n","export const ELEMENT_LIMIT_LEVELS = {\n NORMAL: 'NORMAL',\n WARNING: 'WARNING',\n DANGER: 'DANGER'\n};\n","import { elementTypes } from './elementTypes';\n\nimport MergeModel from '../components/Diagrams/Merge/model';\nimport SplitModel from '../components/Diagrams/Split/model';\nimport GenericModel from '../components/Diagrams/Generic/model';\nimport BaseNodeModel from '../components/Diagrams/BaseNode/model';\nimport ApprovalModel from '../components/Diagrams/Approval/model';\nimport EndPointModel from '../components/Diagrams/EndPoint/model';\nimport SendEmailModel from '../components/Diagrams/SendEmail/model';\nimport StartPointModel from '../components/Diagrams/StartPoint/model';\nimport PlaceholderModel from '../components/Diagrams/Placeholder/model';\nimport BinaryDecisionModel from '../components/Diagrams/BinaryDecision/model';\nimport ConditionalBranchModel from '../components/Diagrams/ConditionalBranch/model';\nimport AssignFormModel from '../components/Diagrams/AssignForm/model';\nimport SignDocumentModel from '../components/Diagrams/SignDocument/model';\nimport IntegrationsModel from '../components/Diagrams/Integrations/model';\nimport AssignTaskModel from '../components/Diagrams/AssignTask/model';\n\nconst WORKFLOW_ELEMENT_MODELS = {\n [elementTypes.MERGE]: MergeModel,\n [elementTypes.SPLIT]: SplitModel,\n [elementTypes.GENERIC]: GenericModel,\n [elementTypes.ASSIGN]: BaseNodeModel,\n [elementTypes.APPROVAL]: ApprovalModel,\n [elementTypes.END_POINT]: EndPointModel,\n [elementTypes.SEND_EMAIL]: SendEmailModel,\n [elementTypes.START_POINT]: StartPointModel,\n [elementTypes.PLACEHOLDER]: PlaceholderModel,\n [elementTypes.BINARY_DECISION]: BinaryDecisionModel,\n [elementTypes.CONDITIONAL_BRANCH]: ConditionalBranchModel,\n [elementTypes.ASSIGN_FORM]: AssignFormModel,\n [elementTypes.SIGN_DOCUMENT]: SignDocumentModel,\n [elementTypes.INTEGRATION]: IntegrationsModel,\n [elementTypes.ASSIGN_TASK]: AssignTaskModel\n};\n\nexport default WORKFLOW_ELEMENT_MODELS;\n","import { getAssetPath } from './index';\n\n// eslint-disable-next-line no-undef, camelcase\n__webpack_public_path__ = `${getAssetPath()}/`;\n","import TrackingManager from './index';\nimport { getActiveApp } from '@jotforminc/router-bridge'; // eslint-disable-line\n\nconst activeApp = getActiveApp();\nexport default TrackingManager.enableErrorTracking(activeApp);\n","import React, { Suspense, useEffect } from 'react';\nimport ReactDOM from 'react-dom';\nimport { DndProvider } from 'react-dnd';\nimport { ToastContainer } from 'react-toastify';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { BrowserRouter, Switch, Route } from 'react-router-dom';\nimport { safeLazy } from '@jotforminc/safe-lazy-import';\n\nimport CONFIGURATION from '../../constants/config';\n\nimport 'react-toastify/dist/ReactToastify.css';\nimport { setResource } from '../../actionCreators';\n\nconst WorkflowBuilder = safeLazy(() => import(/* webpackChunkName: \"LazyBuilder\" */'../Builder'));\nconst WorkflowCreator = safeLazy(() => import(/* webpackChunkName: \"LazyWorkflowCreator\" */'./WorkflowCreator'));\nconst NotFound = safeLazy(() => import(/* webpackChunkName: \"LazyNotFound\" */'../../components/NotFound'));\nconst WorkflowFormPicker = safeLazy(() => import(/* webpackChunkName: \"WorkflowFormPicker\" */'./WorkflowFormPicker'));\nconst WorkflowAutoCreator = safeLazy(() => import(/* webpackChunkName: \"WorkflowAutoCreator\" */'./WorkflowAutoCreator'));\nconst WorkflowTemplatePreview = safeLazy(() => import(/* webpackChunkName: \"WorkflowTemplatePreview\" */'./WorkflowTemplatePreview'));\nconst StandalonePreview = safeLazy(() => import(/* webpackChunkName: \"StandalonePreview\" */'./StandalonePreview'));\n\nconst Toast = () => {\n if (global.isStandalone || global.isTemplateMode) return null;\n\n if (!global.document.body.querySelector('body #wfToast-root')) {\n const Toaster = global.document.createElement('div');\n Toaster.setAttribute('id', 'wfToast-root');\n global.document.body.appendChild(Toaster);\n }\n\n return ReactDOM.createPortal(, global.document.body.querySelector('body #wfToast-root'));\n};\n\nconst AppContainer = () => {\n useEffect(() => { // This prevents canvas from scrolling when [SPACE] key shortcut is being used.\n window.addEventListener('keydown', e => {\n if (e.keyCode === 32 && e.target === document.body) {\n e.preventDefault();\n }\n });\n }, []);\n\n return (\n <>\n \n \n \n }>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default AppContainer;\n","import '@jotforminc/router-bridge/init';\nimport '@jotforminc/tracking/init';\nimport React from 'react';\n// import Styled from 'styled-components';\nimport { createRoot } from 'react-dom/client';\nimport App from './modules/App';\n\nimport '@jotforminc/jotform.css/reset.css';\nimport './styles/style.scss';\n\n// window.styled = Styled;\nconst container = document.getElementById('root');\nconst root = createRoot(container);\nroot.render();\n","import React from 'react';\nimport { Provider } from 'react-redux';\nimport { IntegrationProvider } from '@jotforminc/integrations';\nimport AppContainer from './AppContainer';\nimport store from '../../store';\n\nexport default () => {\n return (\n \n \n \n \n \n );\n};\n","import React, { Component } from 'react';\nimport { eventPath } from './utils';\nimport jotformActionBindings from './jotformActionBindings';\n\nfunction withActions(WrappedComponent, actionsProjectName) {\n return class extends Component {\n constructor(props) {\n super(props);\n\n this.JotFormActions = null;\n this.targetNode = null;\n this.componentHandle = null;\n\n this.setupEventDelegation = this.setupEventDelegation.bind(this);\n this.clearEventDelegation = this.clearEventDelegation.bind(this);\n this.handleJotFormAction = this.handleJotFormAction.bind(this);\n this.setupJotFormActions = this.setupJotFormActions.bind(this);\n this.registerJotFormAction = this.registerJotFormAction.bind(this);\n\n this.setupJotFormActions();\n }\n\n componentDidMount() {\n this.setupEventDelegation();\n }\n\n componentWillUnmount() {\n this.clearEventDelegation();\n }\n\n handleJotFormAction(eventSource) {\n jotformActionBindings.forEach(actionBinding => {\n const { selector } = actionBinding;\n const eventTarget = this.targetNode.querySelector(selector);\n\n if (eventPath(eventSource).indexOf(eventTarget) !== -1 && this.shouldLogActions) {\n this.registerJotFormAction(actionBinding);\n }\n });\n }\n\n get shouldLogActions() {\n const { disableActionLogger } = this.props; // eslint-disable-line\n return global.location.href.indexOf('.jotform.pro') < 0 && global.location.href.indexOf('.jotform.biz') < 0 && disableActionLogger !== true;\n }\n\n setupJotFormActions() {\n const { JotFormActions } = global;\n if (typeof JotFormActions === 'function') {\n this.JotFormActions = JotFormActions(actionsProjectName);\n }\n }\n\n setupEventDelegation() {\n const { domNode } = this.componentHandle;\n\n if (domNode instanceof global.Node) {\n this.targetNode = domNode;\n this.targetNode.addEventListener('click', this.handleJotFormAction, true);\n }\n }\n\n clearEventDelegation() {\n if (this.targetNode) {\n this.targetNode.removeEventListener('click', this.handleJotFormAction);\n }\n }\n\n registerJotFormAction({ action, target }) {\n const { user: { username: actor = null } } = global;\n\n if (actor && this.JotFormActions) {\n this.JotFormActions.tick({ actor, action, target });\n }\n }\n\n render() {\n return (\n { this.componentHandle = r; }}\n actionLogger={this.shouldLogActions && this.registerJotFormAction}\n />\n );\n }\n };\n}\n\nexport default withActions;\n","var _rect, _rect2, _rect3, _rect4, _rect5, _rect6, _rect7, _g, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgIconCreateSalesforceForm = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 98 123\"\n}, props), _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n width: 98,\n height: 123,\n rx: 4,\n fill: \"white\"\n})), _rect2 || (_rect2 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 5,\n y: 4,\n width: 88,\n height: 28,\n rx: 4,\n fill: \"#C8C8E3\"\n})), _rect3 || (_rect3 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 39,\n height: 8,\n rx: 4,\n transform: \"matrix(1 0 0 -1 5 76)\",\n fill: \"#E6E6F5\"\n})), _rect4 || (_rect4 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 31,\n height: 8,\n rx: 4,\n transform: \"matrix(1 0 0 -1 5 62)\",\n fill: \"#C8C8E3\"\n})), _rect5 || (_rect5 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 39,\n height: 8,\n rx: 4,\n transform: \"matrix(1 0 0 -1 5 48)\",\n fill: \"#E6E6F5\"\n})), _rect6 || (_rect6 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 88,\n height: 8,\n rx: 4,\n transform: \"matrix(1 0 0 -1 5 104)\",\n fill: \"#E6E6F5\"\n})), _rect7 || (_rect7 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 5,\n y: 82,\n width: 88,\n height: 8,\n rx: 4,\n fill: \"#C8C8E3\"\n})), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0_1251_37347)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M66.0834 45.223C66.8463 44.4204 67.7641 43.7811 68.7813 43.3438C69.7985 42.9065 70.8938 42.6803 72.001 42.6789C75.0822 42.6789 77.7699 44.397 79.2017 46.9484C80.4821 46.3765 81.8688 46.0818 83.271 46.0836C88.8275 46.0836 93.3332 50.6283 93.3332 56.2389C93.3332 61.8494 88.8327 66.3942 83.271 66.3942C82.6053 66.3945 81.9412 66.3282 81.2887 66.1963C80.3728 67.8367 78.8641 69.0644 77.072 69.6274C75.28 70.1904 73.3405 70.0461 71.6514 69.2241C70.9937 70.7717 69.8865 72.086 68.4732 72.9966C67.0599 73.9072 65.4057 74.3722 63.7251 74.3312C62.0445 74.2903 60.4149 73.7453 59.0476 72.7669C57.6803 71.7885 56.6384 70.4218 56.0568 68.844C55.5303 68.9557 54.9936 69.0119 54.4555 69.0115C50.1539 69.0115 46.6665 65.4865 46.6665 61.1386C46.6631 59.7605 47.0208 58.4056 47.7042 57.2089C48.3875 56.0123 49.3725 55.0158 50.561 54.3188C49.6868 52.2877 49.5849 50.007 50.2743 47.9059C50.9638 45.8049 52.3971 44.0283 54.3046 42.9105C56.2121 41.7928 58.4622 41.4109 60.6315 41.8368C62.8008 42.2627 64.7398 43.467 66.0834 45.223Z\",\n fill: \"#0D9DDA\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M53.5249 58.8542C53.4952 58.9328 53.5355 58.9488 53.5451 58.9605C54.0417 59.3012 54.6338 59.475 55.2358 59.4567C56.2081 59.4567 56.8117 58.9392 56.8117 58.1072V58.0912C56.8117 57.3219 56.1305 57.0413 55.4919 56.8394L55.4079 56.8129C54.9255 56.6567 54.51 56.5217 54.51 56.204V56.188C54.51 55.916 54.7533 55.7162 55.1295 55.7162C55.5602 55.7257 55.9829 55.8348 56.3643 56.035C56.3643 56.035 56.4599 56.0956 56.4939 56.0042C56.512 55.9542 56.6735 55.5196 56.6916 55.4729C56.6975 55.4524 56.6959 55.4304 56.6871 55.411C56.6784 55.3915 56.663 55.3758 56.6438 55.3666C56.221 55.1209 55.7407 54.9919 55.2517 54.9926H55.1539C54.2645 54.9926 53.6429 55.5303 53.6429 56.3007V56.3166C53.6429 57.1274 54.3283 57.392 54.9701 57.5748L55.0764 57.6067C55.545 57.7501 55.9477 57.8744 55.9477 58.2028V58.2198C55.9477 58.5205 55.6853 58.7447 55.2634 58.7447C54.82 58.7487 54.3851 58.6235 54.0116 58.3845C53.9425 58.3441 53.9053 58.3154 53.8511 58.2836C53.8407 58.2746 53.8281 58.2685 53.8145 58.2659C53.801 58.2633 53.787 58.2643 53.774 58.2688C53.761 58.2733 53.7494 58.2812 53.7403 58.2916C53.7313 58.302 53.7252 58.3147 53.7226 58.3282L53.5249 58.8542Z\",\n fill: \"white\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M67.7481 58.8561C67.7183 58.9347 67.7587 58.9506 67.7683 58.9623C67.855 59.022 67.9451 59.0766 68.0382 59.126C68.4747 59.3555 68.9627 59.4696 69.4557 59.4575C70.4281 59.4575 71.0316 58.94 71.0316 58.108V58.092C71.0316 57.3227 70.3494 57.0421 69.7108 56.8402L69.6279 56.8137C69.1454 56.6574 68.7299 56.5225 68.7299 56.2048V56.1888C68.7299 55.9168 68.9733 55.717 69.3495 55.717C69.7801 55.7266 70.2028 55.8357 70.5843 56.0358C70.5843 56.0358 70.6788 56.0964 70.7139 56.005C70.732 55.955 70.8935 55.5204 70.9116 55.4737C70.9174 55.4532 70.9158 55.4312 70.9071 55.4118C70.8983 55.3923 70.883 55.3766 70.8637 55.3674C70.4407 55.119 69.959 54.988 69.4685 54.988H69.3718C68.4824 54.988 67.8607 55.5257 67.8607 56.2962V56.3121C67.8607 57.1229 68.5472 57.3875 69.1879 57.5703L69.2942 57.6021C69.7628 57.7456 70.1666 57.8699 70.1666 58.1983V58.2153C70.1666 58.516 69.9042 58.7402 69.4812 58.7402C69.0379 58.744 68.603 58.6189 68.2294 58.38C68.1604 58.3396 68.1232 58.313 68.069 58.279C68.0582 58.2714 68.0457 58.2665 68.0326 58.2646C68.0195 58.2628 68.0062 58.2641 67.9937 58.2685C67.9812 58.2728 67.97 58.2801 67.9609 58.2897C67.9518 58.2993 67.9451 58.311 67.9415 58.3237L67.7481 58.8561Z\",\n fill: \"white\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M78.2738 56.3555C78.2004 56.0975 78.0749 55.8574 77.905 55.6499C77.7348 55.4479 77.5217 55.2864 77.2813 55.177C77.0059 55.0613 76.7102 55.0017 76.4115 55.0017C76.1128 55.0017 75.8171 55.0613 75.5417 55.177C75.3013 55.2864 75.0885 55.4484 74.919 55.6509C74.749 55.858 74.6235 56.0978 74.5503 56.3555C74.3901 56.9257 74.3901 57.529 74.5503 58.0993C74.6239 58.3568 74.7494 58.5965 74.919 58.8038C75.0883 59.006 75.3017 59.1667 75.5428 59.2735C76.1001 59.5002 76.7239 59.5002 77.2813 59.2735C77.522 59.1661 77.7353 59.0055 77.905 58.8038C78.0747 58.5966 78.2002 58.3568 78.2738 58.0993C78.4339 57.529 78.4339 56.9257 78.2738 56.3555ZM77.463 57.2268C77.463 57.6965 77.3748 58.0685 77.2016 58.3299C77.0284 58.5913 76.7765 58.7156 76.412 58.7156C76.0475 58.7156 75.7946 58.5892 75.6257 58.3299C75.4567 58.0706 75.3696 57.6923 75.3696 57.2268C75.3696 56.7614 75.4556 56.3874 75.6257 56.1281C75.7957 55.8688 76.0507 55.7466 76.412 55.7466C76.7733 55.7466 77.0305 55.872 77.2016 56.1281C77.3727 56.3842 77.463 56.7572 77.463 57.2268Z\",\n fill: \"white\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M84.9326 58.5893C84.9295 58.5787 84.9241 58.5688 84.9169 58.5604C84.9096 58.5521 84.9006 58.5454 84.8905 58.5408C84.8804 58.5363 84.8694 58.534 84.8583 58.5341C84.8473 58.5342 84.8363 58.5367 84.8263 58.5415C84.7046 58.59 84.5782 58.6256 84.4491 58.6477C84.3021 58.6699 84.1536 58.6805 84.0049 58.6796C83.6128 58.6796 83.3004 58.5627 83.0761 58.3321C82.8519 58.1015 82.7265 57.7275 82.7287 57.2227C82.7287 56.7637 82.8349 56.4183 83.04 56.1537C83.2451 55.8891 83.5394 55.7574 83.9401 55.7574C84.2307 55.7522 84.5202 55.7939 84.7976 55.8806C84.7976 55.8806 84.8614 55.9082 84.8911 55.8243C84.9634 55.6266 85.0155 55.4864 85.0909 55.2707C85.0945 55.2611 85.0961 55.2509 85.0955 55.2408C85.0948 55.2306 85.0921 55.2207 85.0874 55.2116C85.0827 55.2026 85.0761 55.1947 85.0681 55.1884C85.0601 55.1821 85.0508 55.1775 85.041 55.175C84.8647 55.1134 84.6834 55.0675 84.499 55.0379C84.2977 55.0094 84.0945 54.9959 83.8912 54.9976C83.5808 54.9914 83.2727 55.0508 82.9869 55.1718C82.7369 55.2795 82.5138 55.441 82.3333 55.6447C82.155 55.85 82.0208 56.0898 81.9391 56.3492C81.8483 56.6314 81.8034 56.9263 81.8063 57.2227C81.8063 57.8954 81.9869 58.4395 82.3461 58.8369C82.7053 59.2343 83.244 59.4405 83.9475 59.4405C84.3399 59.4411 84.7293 59.3717 85.0973 59.2354C85.1141 59.2265 85.1268 59.2115 85.1327 59.1935C85.1387 59.1754 85.1374 59.1558 85.1292 59.1387L84.9326 58.5893Z\",\n fill: \"white\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M89.0832 56.2021C89.0141 55.965 88.8945 55.7457 88.7326 55.5592C88.5882 55.3919 88.4105 55.2565 88.2108 55.1618C87.9623 55.0557 87.6947 55.0015 87.4245 55.0024C87.1127 54.9945 86.803 55.0547 86.517 55.1788C86.2711 55.29 86.0532 55.4548 85.8794 55.6612C85.7086 55.8714 85.5821 56.114 85.5074 56.3743C85.4257 56.6589 85.3853 56.9538 85.3874 57.2499C85.3843 57.5467 85.4262 57.8423 85.5117 58.1266C85.5894 58.3914 85.7286 58.6342 85.9179 58.8351C86.1071 59.036 86.3412 59.1893 86.6009 59.2827C86.9203 59.3977 87.2583 59.4525 87.5977 59.4442C88.3915 59.4442 88.8091 59.2647 88.9791 59.169C89.0089 59.152 89.0375 59.1223 89.0025 59.0383L88.8218 58.5346C88.8183 58.5243 88.8127 58.5148 88.8053 58.5067C88.798 58.4987 88.789 58.4922 88.779 58.4878C88.769 58.4834 88.7582 58.4812 88.7473 58.4812C88.7364 58.4812 88.7255 58.4835 88.7156 58.4879C88.3591 58.6371 87.9742 58.706 87.5881 58.6898C87.163 58.6898 86.8442 58.5644 86.6487 58.371C86.4532 58.1776 86.3459 57.8758 86.3299 57.4582H89.0758C89.0957 57.4583 89.1149 57.4511 89.1298 57.438C89.1447 57.4248 89.1542 57.4067 89.1566 57.387C89.2089 56.9912 89.1807 56.5889 89.0737 56.2042L89.0832 56.2021ZM86.3427 56.7781C86.3693 56.5486 86.445 56.3275 86.5648 56.1299C86.6488 56 86.7657 55.8947 86.9037 55.8247C87.0416 55.7547 87.1956 55.7225 87.3501 55.7314C87.5023 55.7227 87.654 55.7551 87.7893 55.8252C87.9247 55.8954 88.0387 56.0006 88.1194 56.1299C88.2337 56.3276 88.2966 56.5508 88.3022 56.7791L86.3427 56.7781Z\",\n fill: \"white\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M67.0931 56.2021C67.0235 55.9652 66.9039 55.746 66.7424 55.5592C66.598 55.3919 66.4203 55.2565 66.2206 55.1618C65.972 55.0559 65.7045 55.0017 65.4343 55.0024C65.1225 54.9945 64.8128 55.0547 64.5268 55.1788C64.2807 55.2896 64.0627 55.4545 63.8892 55.6612C63.7177 55.8709 63.5911 56.1136 63.5173 56.3743C63.4346 56.6587 63.3938 56.9537 63.3961 57.2499C63.3934 57.5468 63.4356 57.8424 63.5215 58.1266C63.5992 58.3913 63.7383 58.6339 63.9273 58.8348C64.1164 59.0357 64.3502 59.1891 64.6097 59.2827C64.9294 59.3978 65.2677 59.4526 65.6075 59.4442C66.4002 59.4442 66.8178 59.2647 66.9889 59.169C67.0197 59.152 67.0484 59.1223 67.0123 59.0383L66.8327 58.5346C66.8292 58.5243 66.8236 58.5148 66.8162 58.5067C66.8088 58.4987 66.7999 58.4922 66.7899 58.4878C66.7799 58.4834 66.7691 58.4812 66.7582 58.4812C66.7472 58.4812 66.7364 58.4835 66.7264 58.4879C66.3699 58.6368 65.985 58.7058 65.599 58.6898C65.1739 58.6898 64.8551 58.5644 64.6596 58.371C64.4641 58.1776 64.3557 57.8758 64.3408 57.4582H67.0867C67.1064 57.4583 67.1255 57.4511 67.1402 57.4379C67.155 57.4247 67.1643 57.4066 67.1664 57.387C67.22 56.9913 67.1921 56.5888 67.0846 56.2042L67.0931 56.2021ZM64.3525 56.7781C64.3796 56.5487 64.4553 56.3277 64.5746 56.1299C64.6589 56.0002 64.7758 55.8951 64.9137 55.8252C65.0516 55.7552 65.2055 55.7228 65.3599 55.7314C65.5122 55.7225 65.6642 55.7548 65.7997 55.825C65.9353 55.8951 66.0495 56.0004 66.1303 56.1299C66.2442 56.3277 66.3067 56.5509 66.312 56.7791L64.3525 56.7781Z\",\n fill: \"white\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M59.5202 56.6474C59.4087 56.6389 59.2652 56.6357 59.0952 56.6357C58.8668 56.6347 58.6392 56.6637 58.4183 56.7218C58.2132 56.7758 58.0193 56.8658 57.8455 56.9875C57.6721 57.1094 57.5315 57.2725 57.4364 57.4619C57.3413 57.6514 57.2946 57.8615 57.3004 58.0735C57.2943 58.2893 57.3371 58.5036 57.4258 58.7004C57.5071 58.8717 57.6303 59.0197 57.7839 59.1308C57.9519 59.2486 58.142 59.331 58.3428 59.3731C58.582 59.4246 58.8261 59.4496 59.0707 59.4475C59.3503 59.4478 59.6294 59.4243 59.9049 59.3773C60.1748 59.3317 60.5053 59.2647 60.5967 59.2435C60.6881 59.2222 60.789 59.1946 60.789 59.1946C60.8083 59.189 60.825 59.177 60.8364 59.1605C60.8478 59.1441 60.8532 59.1242 60.8517 59.1042V56.59C60.8517 56.0385 60.704 55.6337 60.415 55.3776C60.1259 55.1215 59.702 54.9971 59.1536 54.9971C58.9067 55 58.6605 55.0227 58.4172 55.0651C58.4172 55.0651 57.8179 55.181 57.5671 55.3754C57.5512 55.3875 57.54 55.4046 57.5353 55.424C57.5307 55.4434 57.5329 55.4638 57.5416 55.4817L57.7361 56.0035C57.7388 56.0125 57.7434 56.0209 57.7495 56.0281C57.7556 56.0353 57.7631 56.0411 57.7716 56.0453C57.78 56.0495 57.7893 56.0519 57.7987 56.0524C57.8081 56.0529 57.8175 56.0514 57.8264 56.0481C57.8422 56.0414 57.8575 56.0336 57.8721 56.0247C58.4034 55.7378 59.0686 55.7463 59.0686 55.7463C59.3082 55.7308 59.5463 55.793 59.7476 55.9238C59.8975 56.0396 59.9729 56.2128 59.9729 56.5783V56.6952C59.7381 56.6612 59.5202 56.641 59.5202 56.641V56.6474ZM58.4278 58.5708C58.364 58.5286 58.31 58.4732 58.2695 58.4082C58.2082 58.2996 58.1794 58.1757 58.1866 58.0512C58.1789 57.949 58.1974 57.8466 58.2404 57.7536C58.2833 57.6607 58.3493 57.5802 58.4321 57.5198C58.4321 57.5198 58.6691 57.3137 59.2291 57.3211C59.4782 57.3258 59.7267 57.3471 59.9729 57.3849V58.6335C59.7274 58.6827 59.4789 58.7153 59.2291 58.7313C58.6701 58.7653 58.4215 58.5708 58.4236 58.5708\",\n fill: \"white\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M81.663 55.2287C81.6707 55.21 81.6707 55.189 81.6629 55.1702C81.6551 55.1515 81.6403 55.1366 81.6215 55.1289C81.4708 55.089 81.3168 55.0627 81.1614 55.0502C80.9191 55.0248 80.6745 55.0644 80.4526 55.165C80.2732 55.2407 80.1144 55.358 79.9893 55.5072V55.1724C79.9897 55.1618 79.988 55.1512 79.9843 55.1412C79.9805 55.1312 79.9748 55.1221 79.9675 55.1144C79.9602 55.1067 79.9514 55.1005 79.9416 55.0962C79.9318 55.0919 79.9213 55.0897 79.9107 55.0895H79.2061C79.1955 55.0897 79.185 55.0919 79.1752 55.0962C79.1655 55.1005 79.1566 55.1067 79.1493 55.1144C79.142 55.1221 79.1363 55.1312 79.1325 55.1412C79.1288 55.1512 79.1271 55.1618 79.1275 55.1724V59.27C79.1275 59.281 79.1297 59.2918 79.1339 59.3019C79.1381 59.3121 79.1443 59.3213 79.1522 59.329C79.16 59.3367 79.1692 59.3428 79.1794 59.3469C79.1896 59.351 79.2005 59.353 79.2115 59.3529H79.933C79.955 59.3529 79.9761 59.3441 79.9916 59.3286C80.0071 59.313 80.0159 59.292 80.0159 59.27V57.2223C80.0097 56.9789 80.0405 56.7359 80.1073 56.5018C80.1553 56.3506 80.2375 56.2124 80.3474 56.098C80.4426 56.0035 80.5593 55.9335 80.6875 55.894C80.807 55.8593 80.9307 55.8418 81.0551 55.8419C81.1567 55.8443 81.2578 55.8568 81.3569 55.8791C81.4101 55.8855 81.4398 55.8525 81.4632 55.8047C81.5099 55.6793 81.6438 55.3031 81.6693 55.2287\",\n fill: \"white\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M74.896 53.3272C74.6873 53.2623 74.4696 53.2308 74.251 53.2336C73.7547 53.2336 73.3626 53.3739 73.0885 53.6513C72.8143 53.9286 72.6294 54.3462 72.5359 54.8967L72.5019 55.0826H71.8792C71.8567 55.0824 71.8349 55.0904 71.8179 55.1051C71.8009 55.1197 71.7898 55.1401 71.7867 55.1623L71.6805 55.734C71.673 55.7882 71.6964 55.8222 71.7697 55.8222H72.3765L71.7602 59.2599C71.7237 59.4895 71.669 59.7159 71.5965 59.9368C71.5533 60.0764 71.4884 60.2084 71.4042 60.3278C71.3431 60.4171 71.2553 60.4848 71.1534 60.5212C71.0503 60.5537 70.9427 60.5694 70.8346 60.568C70.7607 60.5662 70.6871 60.5581 70.6146 60.5436C70.5633 60.5335 70.5134 60.5175 70.4659 60.4957C70.4468 60.4884 70.4257 60.4889 70.407 60.497C70.3883 60.5052 70.3736 60.5204 70.366 60.5393C70.3437 60.5978 70.1821 61.043 70.163 61.0983C70.1548 61.118 70.1546 61.1402 70.1626 61.1601C70.1705 61.1799 70.1859 61.1959 70.2055 61.2045C70.2876 61.234 70.3713 61.2584 70.4563 61.2778C70.5885 61.307 70.7237 61.3199 70.859 61.3161C71.088 61.3196 71.3159 61.2836 71.5328 61.2098C71.7285 61.1357 71.9029 61.0145 72.0407 60.857C72.1985 60.6772 72.3195 60.4682 72.3967 60.2418C72.5051 59.9422 72.5862 59.6335 72.639 59.3194L73.2574 55.818H74.1617C74.1842 55.8182 74.206 55.8102 74.223 55.7956C74.24 55.7809 74.2511 55.7605 74.2542 55.7383L74.3604 55.1666C74.3679 55.1124 74.3445 55.0784 74.2712 55.0784H73.3934C73.4237 54.8681 73.4721 54.6608 73.538 54.4589C73.5799 54.348 73.646 54.2478 73.7314 54.1656C73.7955 54.1004 73.8742 54.0512 73.9609 54.0221C74.0553 53.9959 74.1531 53.9841 74.251 53.9871C74.3266 53.9871 74.4021 53.9946 74.4763 54.0094C74.5613 54.0274 74.5953 54.037 74.6176 54.0434C74.7069 54.071 74.7186 54.0434 74.7366 54.0019L74.9492 53.4249C74.9526 53.4154 74.954 53.4052 74.9533 53.3951C74.9526 53.385 74.9498 53.3751 74.9452 53.3661C74.9405 53.3572 74.934 53.3492 74.926 53.3429C74.9181 53.3365 74.909 53.3319 74.8992 53.3293\",\n fill: \"white\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M62.6285 59.2701C62.629 59.2807 62.6273 59.2913 62.6235 59.3013C62.6198 59.3113 62.6141 59.3204 62.6067 59.3281C62.5994 59.3358 62.5906 59.342 62.5808 59.3463C62.5711 59.3506 62.5606 59.3528 62.5499 59.353H61.8209C61.8102 59.353 61.7997 59.3508 61.7898 59.3466C61.78 59.3424 61.7711 59.3362 61.7638 59.3284C61.7564 59.3207 61.7507 59.3115 61.747 59.3015C61.7433 59.2914 61.7417 59.2808 61.7423 59.2701V53.4075C61.7417 53.3968 61.7433 53.3861 61.747 53.3761C61.7507 53.366 61.7564 53.3569 61.7638 53.3491C61.7711 53.3413 61.78 53.3352 61.7898 53.3309C61.7997 53.3267 61.8102 53.3246 61.8209 53.3246H62.5488C62.5595 53.3247 62.57 53.327 62.5798 53.3313C62.5895 53.3355 62.5983 53.3417 62.6057 53.3494C62.613 53.3571 62.6187 53.3663 62.6225 53.3762C62.6262 53.3862 62.6279 53.3968 62.6275 53.4075L62.6285 59.2701Z\",\n fill: \"white\"\n}))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0_1251_37347\"\n}, /*#__PURE__*/React.createElement(\"rect\", {\n width: 56,\n height: 56,\n fill: \"white\",\n transform: \"translate(42 30)\"\n})))));\nexport default SvgIconCreateSalesforceForm;","var _rect, _rect2, _circle, _path, _path2, _rect3, _rect4, _rect5, _rect6;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgIconCreateUseTemplate = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 162 204\"\n}, props), _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n width: 162,\n height: 204,\n rx: 4,\n fill: \"#fff\"\n})), _rect2 || (_rect2 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 9,\n y: 9,\n width: 144,\n height: 46,\n rx: 4,\n fill: \"#09F\"\n})), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 35,\n cy: 28,\n r: 11,\n fill: \"#FFB629\"\n})), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M115.7 22.39 85 55h64l-28.871-32.544a3 3 0 0 0-4.429-.066Z\",\n fill: \"#9EDC36\"\n})), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M89.754 29.875 66 55h50.5L94.174 29.94a3 3 0 0 0-4.42-.065Z\",\n fill: \"#78BB07\"\n})), _rect3 || (_rect3 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 9,\n y: 90,\n width: 144,\n height: 14,\n rx: 7,\n fill: \"#C8C8E3\"\n})), _rect4 || (_rect4 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 9,\n y: 137,\n width: 144,\n height: 14,\n rx: 7,\n fill: \"#C8C8E3\"\n})), _rect5 || (_rect5 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 9,\n y: 67,\n width: 68,\n height: 14,\n rx: 7,\n fill: \"#E6E6F5\"\n})), _rect6 || (_rect6 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 9,\n y: 114,\n width: 68,\n height: 14,\n rx: 7,\n fill: \"#E6E6F5\"\n})));\nexport default SvgIconCreateUseTemplate;","var _rect, _rect2, _rect3, _rect4, _rect5, _rect6, _circle, _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgIconCreateImportForm = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 162 204\"\n}, props), _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n width: 162,\n height: 204,\n rx: 4,\n fill: \"#fff\"\n})), _rect2 || (_rect2 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 9,\n y: 9,\n width: 144,\n height: 46,\n rx: 4,\n fill: \"#C8C8E3\"\n})), _rect3 || (_rect3 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 9,\n y: 90,\n width: 144,\n height: 14,\n rx: 7,\n fill: \"#C8C8E3\"\n})), _rect4 || (_rect4 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 9,\n y: 137,\n width: 60,\n height: 14,\n rx: 7,\n fill: \"#C8C8E3\"\n})), _rect5 || (_rect5 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 9,\n y: 67,\n width: 144,\n height: 14,\n rx: 7,\n fill: \"#E6E6F5\"\n})), _rect6 || (_rect6 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 9,\n y: 114,\n width: 60,\n height: 14,\n rx: 7,\n fill: \"#E6E6F5\"\n})), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 118,\n cy: 156,\n r: 35,\n fill: \"#09F\"\n})), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M118.5 174c.82 0 1.367-.269 1.914-.806l13.637-13.393a2.682 2.682 0 1 0-3.759-3.828l-9.058 8.896v-25.135a2.734 2.734 0 1 0-5.468 0v25.135l-9.058-8.896a2.682 2.682 0 1 0-3.759 3.828l13.637 13.393c.547.537 1.094.806 1.914.806Z\",\n fill: \"#fff\"\n})));\nexport default SvgIconCreateImportForm;","var _rect, _rect2, _rect3, _rect4, _rect5, _rect6, _rect7, _circle, _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgIconCreateSignDocument = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 95 116\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n x: 0.565,\n y: 0.87,\n width: 93.913,\n height: 114.497,\n rx: 4,\n fill: \"#fff\"\n})), _rect2 || (_rect2 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 6.826,\n y: 11.043,\n width: 81.048,\n height: 7.076,\n rx: 3,\n fill: \"#C6CDD9\"\n})), _rect3 || (_rect3 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 6.826,\n y: 39.217,\n width: 80.609,\n height: 7.043,\n rx: 3,\n fill: \"#C6CDD9\"\n})), _rect4 || (_rect4 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 6.826,\n y: 67.391,\n width: 34.435,\n height: 7.043,\n rx: 3,\n fill: \"#C6CDD9\"\n})), _rect5 || (_rect5 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 6.826,\n y: 25.13,\n width: 81.048,\n height: 7.076,\n rx: 3,\n fill: \"#A7B1C0\"\n})), _rect6 || (_rect6 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 6.826,\n y: 53.304,\n width: 80.609,\n height: 7.043,\n rx: 3,\n fill: \"#A7B1C0\"\n})), _rect7 || (_rect7 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 6.826,\n y: 81.478,\n width: 34.435,\n height: 7.043,\n rx: 3,\n fill: \"#A7B1C0\"\n})), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 67.087,\n cy: 86.957,\n r: 20.348,\n fill: \"#7BB60F\"\n})), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m66.717 82.174 4.334-2.414a1.061 1.061 0 0 1 1.127.057l5.526 3.892a1.066 1.066 0 0 1 .438 1.022l-.741 4.922a1.708 1.708 0 0 1-.883 1.253l-10.68 5.71-.035.016a.32.32 0 0 1-.396-.478l5.267-7.474a1.11 1.11 0 1 0-.728-.514l-3.719 5.267-1.556 2.188a.322.322 0 0 1-.585-.214v-.04l1.767-11.937a1.704 1.704 0 0 1 .864-1.256ZM72.037 78.425l7.073 4.978a.801.801 0 0 0 1.117-.194l1.01-1.436a.801.801 0 0 0-.194-1.116l-7.073-4.978a.801.801 0 0 0-1.117.194l-1.01 1.435a.801.801 0 0 0 .194 1.117ZM63.85 96.632a.69.69 0 0 0-.832.474 1.632 1.632 0 0 1-1.906.968 1.703 1.703 0 0 1-.922-.645c-.251-.358-.322-.794-.645-1.106-.58-.558-1.331-.323-1.844.18a5.09 5.09 0 0 0-.545.674 2.4 2.4 0 0 0-.52-.535 2.225 2.225 0 0 0-.744-.365s-.178-1.019-.203-1.122c-.065-.251-.49-1.683.054-1.693a.728.728 0 0 0 .574-.167.671.671 0 0 0-.09-1.08c-.932-.54-1.735.167-1.99 1.073a3.305 3.305 0 0 0 0 1.548c.136.471.236.952.3 1.438a2.123 2.123 0 0 0-1.464 1.187 1.126 1.126 0 0 0 .603 1.431c.968.42 1.635-.377 1.97-1.27l.084.035c.316.222.544.547.645.92a.688.688 0 0 0 1.132.296c.465-.416.736-.993 1.168-1.425.064.158.174.339.242.468a2.993 2.993 0 0 0 3.176 1.512 3.073 3.073 0 0 0 2.257-1.958.68.68 0 0 0-.5-.838Z\",\n fill: \"#FDFEFF\"\n})));\nexport default SvgIconCreateSignDocument;","var _g, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgIconCreateAiForm = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 78 96\"\n}, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0_241_6580)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0.882812 6C0.882812 2.68629 3.5691 0 6.88281 0H71.1181C74.4318 0 77.1181 2.68629 77.1181 6V90C77.1181 93.3137 74.4318 96 71.1181 96H6.88281C3.5691 96 0.882812 93.3137 0.882812 90V6Z\",\n fill: \"white\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M49.883 65.7018C50.4387 65.9074 50.4387 66.6934 49.883 66.899L49.0651 67.2017C47.9004 67.6327 46.9821 68.551 46.5511 69.7157L46.2484 70.5336C46.0428 71.0893 45.2568 71.0893 45.0512 70.5336L44.7485 69.7157C44.3175 68.551 43.3992 67.6327 42.2345 67.2017L41.4166 66.899C40.8609 66.6934 40.8609 65.9074 41.4166 65.7018L42.2345 65.3991C43.3992 64.9681 44.3175 64.0498 44.7485 62.8851L45.0512 62.0672C45.2568 61.5115 46.0428 61.5115 46.2484 62.0672L46.5511 62.8851C46.9821 64.0498 47.9004 64.9681 49.0651 65.3991L49.883 65.7018Z\",\n fill: \"#0099FF\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M64.9662 77.5032C66.0777 77.9144 66.0777 79.4864 64.9662 79.8976L63.3305 80.5029C61.001 81.3649 59.1643 83.2016 58.3023 85.5311L57.697 87.1668C57.2858 88.2782 55.7138 88.2782 55.3026 87.1668L54.6973 85.5311C53.8353 83.2016 51.9986 81.3649 49.6691 80.5029L48.0334 79.8976C46.922 79.4864 46.922 77.9144 48.0334 77.5032L49.6691 76.8979C51.9986 76.0359 53.8353 74.1992 54.6973 71.8697L55.3026 70.2339C55.7138 69.1225 57.2858 69.1225 57.697 70.2339L58.3023 71.8697C59.1643 74.1992 61.001 76.0359 63.3305 76.8979L64.9662 77.5032Z\",\n fill: \"#FF6100\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M65.0015 57.5557C65.2756 56.8148 66.3236 56.8148 66.5978 57.5557L67.0013 58.6462C67.576 60.1992 68.8004 61.4237 70.3534 61.9983L71.4439 62.4018C72.1848 62.676 72.1848 63.724 71.4439 63.9982L70.3534 64.4017C68.8004 64.9763 67.576 66.2008 67.0013 67.7538L66.5978 68.8443C66.3236 69.5852 65.2756 69.5852 65.0015 68.8443L64.5979 67.7538C64.0233 66.2008 62.7988 64.9763 61.2458 64.4017L60.1553 63.9982C59.4144 63.724 59.4144 62.676 60.1553 62.4018L61.2458 61.9983C62.7988 61.4237 64.0233 60.1992 64.5979 58.6462L65.0015 57.5557Z\",\n fill: \"#FFB629\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n x: 5.11719,\n y: 4.23535,\n width: 67.7647,\n height: 21.6471,\n rx: 4,\n fill: \"#C8C8E3\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n x: 5.11914,\n y: 42.3525,\n width: 67.7647,\n height: 6.58824,\n rx: 3.29412,\n fill: \"#C8C8E3\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n x: 5.11914,\n y: 64.4707,\n width: 28.2353,\n height: 6.58824,\n rx: 3.29412,\n fill: \"#C8C8E3\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n x: 5.11914,\n y: 31.5293,\n width: 67.7647,\n height: 6.58824,\n rx: 3.29412,\n fill: \"#E6E6F5\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n x: 5.11914,\n y: 53.6475,\n width: 28.2353,\n height: 6.58824,\n rx: 3.29412,\n fill: \"#E6E6F5\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n x: 5.11914,\n y: 76,\n width: 28.2353,\n height: 6.58824,\n rx: 3.29412,\n fill: \"#E6E6F5\"\n}))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0_241_6580\"\n}, /*#__PURE__*/React.createElement(\"rect\", {\n width: 76.2353,\n height: 96,\n fill: \"white\",\n transform: \"translate(0.882812)\"\n})))));\nexport default SvgIconCreateAiForm;","var _rect, _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgIconBeta = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 46 20\"\n}, props), _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n width: 46,\n height: 20,\n rx: 10,\n fill: \"#9747FF\"\n})), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.032 5.492C12.448 5.492 12.816 5.552 13.136 5.672C13.456 5.784 13.724 5.944 13.94 6.152C14.164 6.352 14.332 6.592 14.444 6.872C14.564 7.152 14.624 7.456 14.624 7.784C14.624 8.224 14.508 8.608 14.276 8.936C14.044 9.264 13.748 9.488 13.388 9.608C13.596 9.656 13.788 9.74 13.964 9.86C14.148 9.98 14.308 10.128 14.444 10.304C14.58 10.472 14.688 10.668 14.768 10.892C14.848 11.116 14.888 11.36 14.888 11.624C14.888 11.968 14.824 12.288 14.696 12.584C14.576 12.872 14.4 13.12 14.168 13.328C13.944 13.536 13.668 13.7 13.34 13.82C13.02 13.94 12.66 14 12.26 14H8.972V5.492H12.032ZM11.78 9.008C12.164 9.008 12.46 8.912 12.668 8.72C12.884 8.528 12.992 8.268 12.992 7.94C12.992 7.612 12.888 7.356 12.68 7.172C12.48 6.98 12.176 6.884 11.768 6.884H10.604V9.008H11.78ZM11.948 12.62C12.356 12.62 12.672 12.524 12.896 12.332C13.12 12.132 13.232 11.86 13.232 11.516C13.232 11.18 13.124 10.908 12.908 10.7C12.7 10.484 12.388 10.376 11.972 10.376H10.604V12.62H11.948ZM16.2962 14V5.492H21.6242V7.052H17.9522V8.996H21.2762V10.472H17.9522V12.44H21.6242V14H16.2962ZM26.9972 7.064V14H25.3292V7.064H22.6412V5.492H29.6852V7.064H26.9972ZM35.1298 12.056H31.6738L30.9658 14H29.2138L32.4778 5.492H34.3978L37.6378 14H35.8378L35.1298 12.056ZM32.2258 10.544H34.5778L33.4018 7.328L32.2258 10.544Z\",\n fill: \"white\"\n})));\nexport default SvgIconBeta;","var _g;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgIconImportPdfForm = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 120 147\"\n}, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"none\",\n fillRule: \"evenodd\"\n}, /*#__PURE__*/React.createElement(\"rect\", {\n fill: \"#FFF\",\n fillRule: \"nonzero\",\n width: 120,\n height: 146.301,\n rx: 4\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0 16h55.5a4 4 0 014 4v21a4 4 0 01-4 4H0V16z\",\n fill: \"#EC5758\",\n fillRule: \"nonzero\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11 57h46a3 3 0 013 3v3a3 3 0 01-3 3H11a3 3 0 01-3-3v-3a3 3 0 013-3z\",\n fill: \"#DAE2ED\",\n fillRule: \"nonzero\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n fill: \"#DAE2ED\",\n fillRule: \"nonzero\",\n x: 8,\n y: 73,\n width: 104,\n height: 9,\n rx: 3\n}), /*#__PURE__*/React.createElement(\"text\", {\n fontFamily: \"Circular\",\n fontSize: 24,\n fontWeight: 400,\n letterSpacing: -0.133,\n fill: \"#FFF\"\n}, /*#__PURE__*/React.createElement(\"tspan\", {\n x: 7,\n y: 39\n}, \"PDF\")), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11 100h46a3 3 0 013 3v3a3 3 0 01-3 3H11a3 3 0 01-3-3v-3a3 3 0 013-3z\",\n fill: \"#DAE2ED\",\n fillRule: \"nonzero\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n fill: \"#DAE2ED\",\n fillRule: \"nonzero\",\n x: 8,\n y: 116,\n width: 104,\n height: 9,\n rx: 3\n}))));\nexport default SvgIconImportPdfForm;","\n \n\n","\n \n\n","\n \n\n","var _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _path9, _path10;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgIconImportFromWeb = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 164 127\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M160 0H4a4 4 0 0 0-4 4v119a4 4 0 0 0 4 4h156a4 4 0 0 0 4-4V4a4 4 0 0 0-4-4Z\"\n})), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#E2E3E4\",\n d: \"M0 3a3 3 0 0 1 3-3h157a4 4 0 0 1 4 4v9H0V3Z\"\n})), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#A7B1C0\",\n d: \"M13 74h75a3 3 0 0 1 3 3v6a3 3 0 0 1-3 3H13a3 3 0 0 1-3-3v-6a3 3 0 0 1 3-3Z\"\n})), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#C6CDD9\",\n d: \"M13 51h75a3 3 0 0 1 3 3v6a3 3 0 0 1-3 3H13a3 3 0 0 1-3-3v-6a3 3 0 0 1 3-3Zm0 46h137a2.998 2.998 0 0 1 3 3v6c0 .796-.316 1.559-.879 2.121A2.996 2.996 0 0 1 150 109H13a2.999 2.999 0 0 1-3-3v-6a3 3 0 0 1 3-3Z\"\n})), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#F75B5B\",\n d: \"M7 9a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z\"\n})), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#F2C273\",\n d: \"M16 9a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z\"\n})), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#71D18F\",\n d: \"M25 9a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z\"\n})), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#F4F1F1\",\n d: \"M127 85c14.359 0 26-11.64 26-26s-11.641-26-26-26-26 11.64-26 26 11.641 26 26 26Z\"\n})), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#569BFC\",\n stroke: \"#569BFC\",\n d: \"M135.936 63.276a1.78 1.78 0 0 1 1.965-.396c.219.092.417.227.583.396a1.83 1.83 0 0 1 0 2.548L127.808 76.5c-.33.331-.79.535-1.298.535-.509 0-.968-.204-1.3-.535l-10.675-10.676A1.794 1.794 0 0 1 114 64.55a1.794 1.794 0 0 1 .535-1.274 1.78 1.78 0 0 1 1.964-.395c.219.091.417.226.583.395l7.619 7.644V43.783c-.002-.993.814-1.783 1.807-1.783.994 0 1.784.79 1.784 1.783V70.92l7.644-7.643v-.001Z\"\n})), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#94ACE3\",\n d: \"M20.5 43C26.299 43 31 38.299 31 32.5S26.299 22 20.5 22 10 26.701 10 32.5 14.701 43 20.5 43Z\"\n})));\nexport default SvgIconImportFromWeb;","var _g;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgIconImportCloneExisting = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 142 168\"\n}, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n fillRule: \"nonzero\",\n fill: \"none\"\n}, /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"rect\", {\n fill: \"#E2E7EF\",\n width: 120,\n height: 146.301,\n rx: 4\n}), /*#__PURE__*/React.createElement(\"rect\", {\n fill: \"#C3CEE7\",\n x: 8,\n y: 8,\n width: 103.562,\n height: 34.521,\n rx: 4\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.041 51.315h45.78a3 3 0 013 3v3.041a3 3 0 01-3 3h-45.78a3 3 0 01-3-3v-3.04a3 3 0 013-3z\",\n fillOpacity: 0.874,\n fill: \"#B9C2CF\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n fillOpacity: 0.874,\n fill: \"#B9C2CF\",\n x: 8.041,\n y: 87.479,\n width: 51.781,\n height: 9.041,\n rx: 3\n}), /*#__PURE__*/React.createElement(\"rect\", {\n fillOpacity: 0.713,\n fill: \"#99A3B1\",\n x: 8,\n y: 67,\n width: 103.562,\n height: 9.041,\n rx: 3\n}), /*#__PURE__*/React.createElement(\"rect\", {\n fillOpacity: 0.713,\n fill: \"#99A3B1\",\n x: 8,\n y: 103,\n width: 103.562,\n height: 9.041,\n rx: 3\n})), /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(22 21)\"\n}, /*#__PURE__*/React.createElement(\"rect\", {\n fill: \"#FFF\",\n width: 120,\n height: 146.301,\n rx: 4\n}), /*#__PURE__*/React.createElement(\"rect\", {\n fill: \"#94ACE3\",\n x: 8,\n y: 8,\n width: 103.562,\n height: 34.521,\n rx: 4\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.041 51.315h45.78a3 3 0 013 3v3.041a3 3 0 01-3 3h-45.78a3 3 0 01-3-3v-3.04a3 3 0 013-3z\",\n fill: \"#C6CDD9\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n fill: \"#C6CDD9\",\n x: 8.041,\n y: 87.479,\n width: 51.781,\n height: 9.041,\n rx: 3\n}), /*#__PURE__*/React.createElement(\"rect\", {\n fill: \"#A7B1C0\",\n x: 8,\n y: 67,\n width: 103.562,\n height: 9.041,\n rx: 3\n}), /*#__PURE__*/React.createElement(\"rect\", {\n fill: \"#A7B1C0\",\n x: 8,\n y: 103,\n width: 103.562,\n height: 9.041,\n rx: 3\n})))));\nexport default SvgIconImportCloneExisting;","var _g;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgIconClassicForm = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 121 125\"\n}, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"none\",\n fillRule: \"evenodd\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4.417 0h112a4 4 0 014 4v121h-120V4a4 4 0 014-4z\",\n fill: \"#FFF\",\n fillRule: \"nonzero\"\n}), /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(10.417 13)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.001 31.122h79.14a2.858 2.858 0 010 5.716h-79.14a2.858 2.858 0 110-5.716z\",\n fill: \"#DAE2ED\",\n fillRule: \"nonzero\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n fill: \"#DAE2ED\",\n fillRule: \"nonzero\",\n y: 20.324,\n width: 74.571,\n height: 5.716,\n rx: 2.858\n}), /*#__PURE__*/React.createElement(\"rect\", {\n fill: \"#DAE2ED\",\n fillRule: \"nonzero\",\n width: 99,\n height: 8.257,\n rx: 3\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.001 41.284h79.14a2.858 2.858 0 010 5.716h-79.14a2.858 2.858 0 110-5.716z\",\n fill: \"#DAE2ED\",\n fillRule: \"nonzero\"\n}), /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(0 30.486)\"\n}, /*#__PURE__*/React.createElement(\"rect\", {\n fill: \"#2F90FF\",\n fillRule: \"nonzero\",\n width: 6.429,\n height: 6.351,\n rx: 2\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M2.734 4.765a.33.33 0 01-.238-.103L1.304 3.424a.36.36 0 010-.495.328.328 0 01.477 0l.953.99L4.878 1.69a.328.328 0 01.477 0 .36.36 0 010 .496L2.972 4.662a.33.33 0 01-.238.103\",\n fill: \"#FFF\"\n})), /*#__PURE__*/React.createElement(\"rect\", {\n fill: \"#DAE2ED\",\n fillRule: \"nonzero\",\n y: 40.649,\n width: 6.429,\n height: 6.351,\n rx: 2\n})), /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(10.417 72)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.036 10.929h79.071a2.893 2.893 0 010 5.785H17.036a2.893 2.893 0 110-5.785zM2.893 0h68.786a2.893 2.893 0 110 5.786H2.893a2.893 2.893 0 010-5.786zM17.036 21.214h79.071a2.893 2.893 0 010 5.786H17.036a2.893 2.893 0 110-5.786z\",\n fill: \"#DAE2ED\",\n fillRule: \"nonzero\"\n}), /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(0 10.286)\"\n}, /*#__PURE__*/React.createElement(\"rect\", {\n fill: \"#2F90FF\",\n fillRule: \"nonzero\",\n width: 6.429,\n height: 6.429,\n rx: 2\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M2.734 4.823a.327.327 0 01-.238-.104L1.304 3.465a.367.367 0 010-.5.325.325 0 01.477 0l.953 1.002L4.878 1.71a.325.325 0 01.477 0 .367.367 0 010 .501L2.972 4.72a.328.328 0 01-.238.104\",\n fill: \"#FFF\"\n})), /*#__PURE__*/React.createElement(\"rect\", {\n fill: \"#DAE2ED\",\n fillRule: \"nonzero\",\n y: 20.571,\n width: 6.429,\n height: 6.429,\n rx: 2\n}), /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(0 20.571)\"\n}, /*#__PURE__*/React.createElement(\"rect\", {\n fill: \"#2F90FF\",\n fillRule: \"nonzero\",\n width: 6.429,\n height: 6.429,\n rx: 2\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M2.734 4.823a.327.327 0 01-.238-.104L1.304 3.465a.367.367 0 010-.5.325.325 0 01.477 0l.953 1.002L4.878 1.71a.325.325 0 01.477 0 .367.367 0 010 .501L2.972 4.72a.328.328 0 01-.238.104\",\n fill: \"#FFF\"\n}))), /*#__PURE__*/React.createElement(\"rect\", {\n fill: \"#2F90FF\",\n fillRule: \"nonzero\",\n x: 77.417,\n y: 109,\n width: 32,\n height: 10,\n rx: 4\n}))));\nexport default SvgIconClassicForm;","var _g;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgIconCardForm = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 121 92\"\n}, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"none\",\n fillRule: \"evenodd\"\n}, /*#__PURE__*/React.createElement(\"rect\", {\n fill: \"#FFF\",\n fillRule: \"nonzero\",\n x: 7.934,\n width: 105.131,\n height: 62.153,\n rx: 4\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.934 49.59h105.132v9.224a4 4 0 01-4 4H11.934a4 4 0 01-4-4V49.59z\",\n fill: \"#2A5ACA\",\n fillRule: \"nonzero\"\n}), /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(15.208 11.24)\"\n}, /*#__PURE__*/React.createElement(\"rect\", {\n fill: \"#DAE2ED\",\n fillRule: \"nonzero\",\n x: 10.579,\n y: 11.24,\n width: 80.667,\n height: 5.951,\n rx: 2.975\n}), /*#__PURE__*/React.createElement(\"rect\", {\n fill: \"#DAE2ED\",\n fillRule: \"nonzero\",\n width: 50.913,\n height: 5.951,\n rx: 2.975\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.555 21.82H88.27a2.975 2.975 0 010 5.95H13.555a2.975 2.975 0 010-5.95z\",\n fill: \"#DAE2ED\",\n fillRule: \"nonzero\"\n}), /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(0 10.58)\"\n}, /*#__PURE__*/React.createElement(\"rect\", {\n fill: \"#2F90FF\",\n fillRule: \"nonzero\",\n width: 6.612,\n height: 6.612,\n rx: 2\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M2.812 4.96a.337.337 0 01-.245-.107L1.34 3.564a.378.378 0 010-.515.334.334 0 01.49 0l.98 1.031 2.206-2.32a.334.334 0 01.49 0 .378.378 0 010 .515l-2.45 2.578a.337.337 0 01-.245.107\",\n fill: \"#FFF\"\n})), /*#__PURE__*/React.createElement(\"rect\", {\n fill: \"#DAE2ED\",\n fillRule: \"nonzero\",\n y: 21.158,\n width: 6.612,\n height: 6.612,\n rx: 2\n})), /*#__PURE__*/React.createElement(\"rect\", {\n fill: \"#FFF\",\n fillRule: \"nonzero\",\n width: 121,\n height: 62.153,\n rx: 4\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0 49.59h121v9.224a4 4 0 01-4 4H4a4 4 0 01-4-4V49.59z\",\n fill: \"#51DCA9\",\n fillRule: \"nonzero\"\n}), /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(9.257 11.24)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14.877 11.24H98.85a2.975 2.975 0 010 5.951H14.877a2.975 2.975 0 110-5.95zM2.975 0h50.913a2.975 2.975 0 110 5.95H2.975a2.975 2.975 0 110-5.95zM14.877 21.82H98.85a2.975 2.975 0 010 5.95H14.877a2.975 2.975 0 110-5.95z\",\n fill: \"#DAE2ED\",\n fillRule: \"nonzero\"\n}), /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(0 10.58)\"\n}, /*#__PURE__*/React.createElement(\"rect\", {\n fill: \"#2F90FF\",\n fillRule: \"nonzero\",\n width: 6.612,\n height: 6.612,\n rx: 2\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M2.812 4.96a.337.337 0 01-.245-.107L1.34 3.564a.378.378 0 010-.515.334.334 0 01.49 0l.98 1.031 2.206-2.32a.334.334 0 01.49 0 .378.378 0 010 .515l-2.45 2.578a.337.337 0 01-.245.107\",\n fill: \"#FFF\"\n})), /*#__PURE__*/React.createElement(\"rect\", {\n fill: \"#DAE2ED\",\n fillRule: \"nonzero\",\n y: 21.158,\n width: 6.612,\n height: 6.612,\n rx: 2\n})), /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#319BF3\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M8.596 86.646h104.47\"\n}), /*#__PURE__*/React.createElement(\"circle\", {\n stroke: \"#319BF3\",\n strokeWidth: 1.5,\n fill: \"#51DCA9\",\n fillRule: \"nonzero\",\n cx: 60.831,\n cy: 86.646,\n r: 3.967\n}), /*#__PURE__*/React.createElement(\"circle\", {\n fill: \"#319BF3\",\n fillRule: \"nonzero\",\n cx: 9.918,\n cy: 86.646,\n r: 3.967\n}), /*#__PURE__*/React.createElement(\"circle\", {\n fill: \"#319BF3\",\n fillRule: \"nonzero\",\n cx: 111.743,\n cy: 86.646,\n r: 3.967\n}))));\nexport default SvgIconCardForm;","var _rect, _rect2, _rect3, _rect4, _rect5, _rect6, _rect7, _circle, _path, _path2, _path3;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgIconCreateSignDocument = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 90 110\"\n}, props), _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n width: 90,\n height: 109.726,\n rx: 4,\n fill: \"white\"\n})), _rect2 || (_rect2 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 6,\n y: 9.75,\n width: 77.6712,\n height: 6.78082,\n rx: 3,\n fill: \"#C6CDD9\"\n})), _rect3 || (_rect3 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 6,\n y: 36.75,\n width: 77.25,\n height: 6.75,\n rx: 3,\n fill: \"#C6CDD9\"\n})), _rect4 || (_rect4 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 6,\n y: 63.75,\n width: 33,\n height: 6.75,\n rx: 3,\n fill: \"#C6CDD9\"\n})), _rect5 || (_rect5 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 6,\n y: 23.25,\n width: 77.6712,\n height: 6.78082,\n rx: 3,\n fill: \"#A7B1C0\"\n})), _rect6 || (_rect6 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 6,\n y: 50.25,\n width: 77.25,\n height: 6.75,\n rx: 3,\n fill: \"#A7B1C0\"\n})), _rect7 || (_rect7 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 6,\n y: 77.25,\n width: 33,\n height: 6.75,\n rx: 3,\n fill: \"#A7B1C0\"\n})), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 63.75,\n cy: 82.5,\n r: 19.5,\n fill: \"#7BB60F\"\n})), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M63.3952 77.9171L67.5489 75.6031C67.7159 75.5098 67.9057 75.4655 68.0967 75.4752C68.2877 75.4849 68.472 75.5483 68.6286 75.6581L73.925 79.3873C74.0783 79.4963 74.1986 79.6454 74.2725 79.8184C74.3465 79.9913 74.3714 80.1813 74.3443 80.3674L73.6341 85.0846C73.5964 85.3368 73.5002 85.5767 73.3532 85.7851C73.2062 85.9936 73.0125 86.1647 72.7876 86.2849L62.5539 91.7569L62.5199 91.7726C62.4581 91.8025 62.3881 91.8109 62.3211 91.7963C62.254 91.7818 62.1938 91.7452 62.15 91.6923C62.1062 91.6395 62.0814 91.5735 62.0796 91.5049C62.0778 91.4363 62.099 91.3691 62.1399 91.314L67.1873 84.1517C67.4266 84.2008 67.6756 84.1661 67.8923 84.0533C68.1091 83.9406 68.2804 83.7566 68.3775 83.5324C68.4747 83.3082 68.4917 83.0575 68.4257 82.8222C68.3598 82.5869 68.2149 82.3816 68.0153 82.2405C67.8158 82.0995 67.5738 82.0315 67.3301 82.0478C67.0863 82.0642 66.8556 82.1639 66.6766 82.3303C66.4977 82.4967 66.3815 82.7196 66.3476 82.9616C66.3136 83.2035 66.364 83.4498 66.4902 83.659L62.9261 88.7064L61.4349 90.8029C61.3958 90.8584 61.3394 90.8995 61.2746 90.9198C61.2098 90.9401 61.1401 90.9385 61.0763 90.9152C61.0125 90.892 60.9581 90.8483 60.9216 90.7911C60.885 90.7339 60.8684 90.6662 60.8741 90.5985C60.8741 90.5854 60.8741 90.5723 60.8741 90.5592L62.567 79.12C62.6022 78.869 62.6954 78.6296 62.8391 78.4208C62.9829 78.212 63.1732 78.0396 63.3952 77.9171Z\",\n fill: \"#FDFEFF\"\n})), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M68.4938 74.3236L75.2723 79.0947C75.6191 79.3388 76.0981 79.2555 76.3421 78.9087L77.3105 77.5329C77.5546 77.1861 77.4714 76.7071 77.1246 76.463L70.3461 71.692C69.9993 71.4479 69.5203 71.5311 69.2762 71.8779L68.3078 73.2537C68.0638 73.6005 68.147 74.0795 68.4938 74.3236Z\",\n fill: \"#FDFEFF\"\n})), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M60.6481 91.7724C60.4822 91.7302 60.3065 91.754 60.1578 91.8387C60.0092 91.9235 59.8991 92.0625 59.8508 92.2267C59.7088 92.575 59.446 92.8606 59.1105 93.0309C58.7751 93.2011 58.3895 93.2448 58.0244 93.1537C57.6683 93.0539 57.3567 92.8359 57.1406 92.5357C56.8996 92.1927 56.8316 91.7755 56.5226 91.4757C55.9663 90.9411 55.2463 91.1667 54.7549 91.6488C54.5628 91.8488 54.3881 92.0649 54.2327 92.2946C54.0946 92.0988 53.9267 91.9257 53.7351 91.7817C53.5212 91.6216 53.279 91.5031 53.0213 91.4325C53.0213 91.4325 52.8513 90.4559 52.8266 90.357C52.7648 90.116 52.3569 88.7439 52.8791 88.7346C52.977 88.7483 53.0766 88.741 53.1714 88.7133C53.2662 88.6856 53.3541 88.6381 53.4292 88.5739C53.5058 88.5077 53.5656 88.4243 53.6038 88.3305C53.6421 88.2367 53.6576 88.1352 53.6492 88.0343C53.6407 87.9334 53.6086 87.8359 53.5553 87.7498C53.502 87.6637 53.4292 87.5913 53.3427 87.5387C52.4496 87.0226 51.6801 87.6994 51.436 88.5678C51.3186 89.0552 51.3186 89.5636 51.436 90.0511C51.5654 90.5029 51.6615 90.9635 51.7234 91.4294C51.4177 91.498 51.1321 91.6364 50.8887 91.8337C50.6453 92.0309 50.4508 92.2818 50.3204 92.5666C50.2219 92.8257 50.227 93.1129 50.3346 93.3683C50.4422 93.6238 50.6441 93.8281 50.8983 93.9387C51.8253 94.3404 52.465 93.5771 52.7864 92.7211L52.8668 92.7551C53.1693 92.9675 53.388 93.2791 53.4848 93.6358C53.5175 93.7434 53.5772 93.8408 53.6583 93.9188C53.7393 93.9967 53.8389 94.0526 53.9477 94.0811C54.0565 94.1096 54.1707 94.1098 54.2796 94.0816C54.3884 94.0534 54.4882 93.9978 54.5695 93.9201C55.0145 93.5215 55.2741 92.9683 55.6882 92.5542C55.75 92.7057 55.8551 92.8787 55.92 93.0023C56.0342 93.2117 56.1743 93.4059 56.3372 93.5802C56.6659 93.9353 57.0792 94.2014 57.5384 94.3538C57.9977 94.5061 58.4881 94.5398 58.9639 94.4517C59.4542 94.3488 59.9103 94.1226 60.2888 93.7943C60.6673 93.4661 60.9559 93.0467 61.1271 92.5759C61.1497 92.4916 61.1552 92.4037 61.1432 92.3173C61.1313 92.2309 61.1021 92.1478 61.0574 92.0729C61.0128 91.998 60.9535 91.9328 60.8832 91.8812C60.8129 91.8295 60.733 91.7925 60.6481 91.7724V91.7724Z\",\n fill: \"#FDFEFF\"\n})));\nexport default SvgIconCreateSignDocument;","var _rect, _rect2, _rect3, _rect4, _rect5, _ellipse, _path, _path2, _path3;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgIconCreateFromTemplate2 = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 90 111\"\n}, props), _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n y: 0.869568,\n width: 90,\n height: 110,\n rx: 4,\n fill: \"white\"\n})), _rect2 || (_rect2 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 5.99988,\n y: 6.88455,\n width: 77.6712,\n height: 25.9551,\n rx: 4,\n fill: \"#4675E2\"\n})), _rect3 || (_rect3 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 6.03064,\n y: 39.452,\n width: 38.8356,\n height: 6.79775,\n rx: 3,\n fill: \"#C6CDD9\"\n})), _rect4 || (_rect4 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 6.03064,\n y: 66.643,\n width: 38.8356,\n height: 6.79775,\n rx: 3,\n fill: \"#C6CDD9\"\n})), _rect5 || (_rect5 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 5.99988,\n y: 51.245,\n width: 77.6712,\n height: 6.79775,\n rx: 3,\n fill: \"#A7B1C0\"\n})), _ellipse || (_ellipse = /*#__PURE__*/React.createElement(\"ellipse\", {\n cx: 18.3749,\n cy: 20.0423,\n rx: 7.125,\n ry: 7.14279,\n fill: \"#FED049\"\n})), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M64.8749 18.1626L80.2499 33.2001H49.4999L64.8749 18.1626Z\",\n fill: \"#2EBC70\"\n})), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M45.3749 18.1626L60.7499 33.2001H29.9999L45.3749 18.1626Z\",\n fill: \"#35DC86\"\n})), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M72.2775 81.0368C65.6367 76.9508 59.3275 79.5483 55.1807 82.0971C54.1317 82.7419 53.1938 83.3992 52.4013 83.968C52.2061 84.1081 52.0232 84.2401 51.8515 84.3642C51.7622 84.4286 51.676 84.4909 51.5925 84.5511C51.5063 84.3174 51.3701 84.0715 51.1541 83.8491C50.6096 83.2885 49.9219 83.2307 49.4663 83.2982C49.0542 83.3592 48.7026 83.5308 48.4653 83.6649C47.9744 83.9421 47.4518 84.3649 46.984 84.769C46.5819 85.1162 46.1489 85.5134 45.7287 85.8987C45.6427 85.9776 45.5573 86.0559 45.4727 86.1332C44.9616 86.6009 44.4741 87.0403 44.0251 87.4067C43.9898 87.4355 43.9553 87.4634 43.9215 87.4904C43.8618 87.2309 43.7676 86.9712 43.6221 86.728C43.425 86.3986 43.1324 86.0992 42.7349 85.9059C42.3502 85.7188 41.9676 85.6796 41.6529 85.6993C41.0239 85.7372 40.4593 86.0255 40.1078 86.2239C39.7103 86.4483 39.2927 86.7341 38.9285 86.9845C38.196 87.488 37.651 87.8561 37.2283 88.0349C37.1748 87.8316 37.1203 87.5163 37.0939 87.048C37.0545 86.3483 37.0822 85.3988 37.2117 84.1332C37.2839 83.4262 37.3137 82.8008 37.2893 82.2663C37.2663 81.7622 37.1906 81.1951 36.9523 80.6956C36.68 80.1251 36.1267 79.5398 35.2482 79.4515C34.5381 79.3802 33.9491 79.6818 33.6053 79.8974C32.8849 80.3492 32.125 81.1515 31.3987 82.007C30.6369 82.9042 29.7778 84.025 28.8592 85.2562C28.3615 85.9232 27.8448 86.6246 27.3112 87.3489C26.4119 88.5697 25.4647 89.8554 24.4808 91.1501C23.8523 91.0555 23.2638 90.9746 22.7522 90.9043C22.5128 90.8714 22.2901 90.8408 22.0881 90.8122C21.9541 90.7932 21.8298 90.7753 21.7151 90.7581C22.5327 89.6318 23.5427 88.1301 24.2786 86.6631C24.7315 85.7604 25.1368 84.7625 25.2836 83.814C25.4261 82.8936 25.3746 81.6135 24.3562 80.7042C23.7765 80.1857 23.0865 79.9155 22.3594 79.8941C21.6702 79.8738 21.0465 80.0785 20.5383 80.3311C19.5472 80.8236 18.6641 81.6661 18.0094 82.3896C16.8817 83.6351 16.0027 85.0679 15.383 86.6108C14.3588 89.1565 12.2842 94.5654 11.4873 98.5853C11.2866 99.5976 11.1528 100.588 11.1539 101.459C11.155 102.257 11.2644 103.278 11.8591 104.063C12.191 104.502 12.6557 104.84 13.2348 104.994C13.7868 105.142 14.3316 105.094 14.8119 104.969C15.7336 104.729 16.7237 104.123 17.7729 103.295C20.2828 101.313 22.8014 98.4695 25.1129 95.5741C25.3602 95.2643 25.6061 94.9526 25.8504 94.64C27.518 94.9459 29.2983 95.3634 30.913 95.97C33.0716 96.7808 34.6676 97.8319 35.4445 99.1397C36.1436 100.316 36.3794 102.054 34.991 104.823C34.5927 105.617 34.9121 106.585 35.7045 106.984C36.4969 107.383 37.4622 107.063 37.8605 106.269C39.5859 102.828 39.6209 99.8776 38.2038 97.4922C36.8646 95.238 34.429 93.8525 32.04 92.955C30.7271 92.4619 29.3467 92.0863 28.0204 91.7933C28.6808 90.9096 29.3193 90.0429 29.9279 89.2168C30.4526 88.5045 30.9555 87.8218 31.4309 87.1847C32.3441 85.9608 33.1524 84.9088 33.8443 84.0939C33.8999 84.0284 33.954 83.9653 34.0067 83.9046C33.8751 85.2257 33.8365 86.3248 33.8874 87.2296C33.9387 88.1393 34.0852 88.9539 34.3935 89.6222C34.7202 90.3304 35.2649 90.9375 36.0735 91.2072C36.8229 91.4571 37.5402 91.3275 38.0618 91.1571C38.9819 90.8565 39.9372 90.1971 40.6037 89.7371C40.652 89.7037 40.6996 89.6708 40.7448 89.6398C40.7978 89.6034 40.8492 89.5681 40.8991 89.534C40.9156 89.6057 40.9346 89.6769 40.9563 89.7474C41.0868 90.1703 41.3478 90.6589 41.8519 90.9999C42.8675 91.687 43.9615 91.2354 44.3992 91.0225C44.9658 90.747 45.5417 90.3205 46.0523 89.9039C46.5795 89.4737 47.127 88.9786 47.6377 88.5114C47.7285 88.4284 47.8179 88.3464 47.906 88.2656L47.9087 88.2631C48.15 88.0418 48.3815 87.8296 48.6035 87.6297C48.7967 88.0543 49.1621 88.4883 49.8025 88.6682C50.4667 88.8549 51.0563 88.6317 51.3057 88.5276C51.6252 88.3944 51.945 88.2059 52.2319 88.022C52.6774 87.7364 53.2164 87.3469 53.7856 86.9357C53.9454 86.8202 54.1075 86.703 54.2707 86.586C55.043 86.0318 55.9081 85.4266 56.8594 84.8419C60.7136 82.473 65.5601 80.6813 70.5976 83.7808C71.3534 84.2459 72.3422 84.0086 72.8062 83.2508C73.2701 82.4931 73.0334 81.5018 72.2775 81.0368ZM50.0719 85.5551C50.0276 85.5735 50.032 85.5664 50.0746 85.5539L50.0719 85.5551ZM21.6389 94.0002C21.8156 94.0252 21.9999 94.0507 22.1916 94.0771C20.0487 96.7241 17.8643 99.1239 15.7864 100.765C15.1541 101.264 14.6908 101.551 14.3728 101.707C14.3684 101.634 14.3657 101.55 14.3656 101.454C14.3648 100.885 14.4561 100.127 14.6373 99.2128C15.3679 95.5275 17.3299 90.379 18.3615 87.8152L18.3619 87.8141C18.8459 86.6088 19.526 85.5049 20.3874 84.5536C20.9631 83.9174 21.521 83.4363 21.9648 83.2157C22.0316 83.1825 22.0865 83.16 22.1302 83.1447C22.1271 83.1918 22.1209 83.2497 22.11 83.3202C22.0389 83.7796 21.8056 84.4268 21.4094 85.2165C20.6285 86.7732 19.4313 88.4653 18.5968 89.5667C17.5171 90.9888 18.1448 93.0066 19.7634 93.6229L19.7664 93.6241C20.0425 93.7286 20.3679 93.7952 20.6309 93.843C20.9223 93.896 21.2675 93.9476 21.6389 94.0002ZM22.1277 82.9866C22.1233 82.9752 22.1227 82.9679 22.1227 82.9679C22.1227 82.9679 22.1255 82.9731 22.1277 82.9866ZM35.3607 82.5981C35.3607 82.5981 35.3533 82.6027 35.3395 82.6085C35.3539 82.6004 35.3607 82.5981 35.3607 82.5981Z\",\n fill: \"#A7B1C0\"\n})));\nexport default SvgIconCreateFromTemplate2;","var _rect, _rect2, _rect3, _rect4, _rect5, _rect6, _path, _path2, _rect7, _rect8, _rect9, _rect10, _rect11, _rect12, _rect13, _path3, _path4, _ellipse, _path5;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgIconSelectDocument = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 181.1 224\"\n}, props), _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n width: 139.9,\n height: 170.99,\n fill: \"#fff\",\n rx: 3.89,\n ry: 3.89\n})), _rect2 || (_rect2 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 120.74,\n height: 10.57,\n x: 9.33,\n y: 15.19,\n fill: \"#c6cdd9\",\n rx: 2.91,\n ry: 2.91\n})), _rect3 || (_rect3 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 120.09,\n height: 10.52,\n x: 9.33,\n y: 57.27,\n fill: \"#c6cdd9\",\n rx: 2.91,\n ry: 2.91\n})), _rect4 || (_rect4 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 51.3,\n height: 10.52,\n x: 9.33,\n y: 99.35,\n fill: \"#c6cdd9\",\n rx: 2.92,\n ry: 2.92\n})), _rect5 || (_rect5 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 120.74,\n height: 10.57,\n x: 9.33,\n y: 36.23,\n fill: \"#a7b1c0\",\n rx: 2.91,\n ry: 2.91\n})), _rect6 || (_rect6 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 120.09,\n height: 10.52,\n x: 9.33,\n y: 78.31,\n fill: \"#a7b1c0\",\n rx: 2.91,\n ry: 2.91\n})), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fdfeff\",\n d: \"m98.55 121.43 6.46-3.61c.53-.3 1.18-.26 1.68.08l8.23 5.81c.49.35.74.94.65 1.53l-1.1 7.35c-.12.8-.61 1.49-1.32 1.87l-15.91 8.53-.05.02c-.2.1-.44.05-.57-.12a.467.467 0 0 1-.01-.59l7.85-11.16c.77.16 1.54-.25 1.85-.96.36-.84-.03-1.82-.87-2.18a1.652 1.652 0 0 0-2.06 2.38l-5.54 7.87-2.32 3.27c-.13.18-.35.25-.56.18a.479.479 0 0 1-.31-.49v-.06l2.63-17.83c.11-.79.59-1.49 1.29-1.87Zm7.93-5.6 10.54 7.43c.54.38 1.28.25 1.66-.29l1.51-2.14a1.2 1.2 0 0 0-.29-1.67l-10.54-7.43c-.54-.38-1.28-.25-1.66.28s-1.5 2.15-1.5 2.15a1.2 1.2 0 0 0 .29 1.67Zm-12.2 27.19c-.54-.14-1.09.18-1.24.71a2.427 2.427 0 0 1-2.84 1.44c-.55-.16-1.04-.5-1.37-.96-.37-.53-.48-1.18-.96-1.65-.86-.83-1.98-.48-2.75.27-.3.31-.57.65-.81 1.01-.21-.31-.48-.58-.77-.8-.33-.25-.71-.43-1.11-.54 0 0-.26-1.52-.3-1.68-.1-.38-.73-2.51.08-2.53.31.04.62-.05.86-.25a.998.998 0 0 0-.13-1.61c-1.39-.8-2.58.25-2.96 1.6-.18.76-.18 1.55 0 2.31.2.7.35 1.42.45 2.15-.96.22-1.77.87-2.18 1.77-.32.84.08 1.78.9 2.14 1.44.63 2.43-.56 2.93-1.9l.12.05c.47.33.81.82.96 1.37.1.34.38.6.72.69.34.09.71 0 .97-.25.69-.62 1.1-1.48 1.74-2.13.1.24.26.51.36.7a4.457 4.457 0 0 0 4.74 2.26 4.583 4.583 0 0 0 3.36-2.92c.15-.54-.18-1.1-.72-1.25h-.02Z\"\n})), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#a7b1c0\",\n d: \"M111.27 126.76c-10.5-6.46-20.49-2.36-27.05 1.68-1.66 1.02-3.14 2.06-4.4 2.96l-.87.63c-.14.1-.28.2-.41.29-.15-.41-.39-.79-.69-1.11-.86-.89-1.95-.98-2.67-.87-.65.1-1.21.37-1.58.58-.78.44-1.6 1.11-2.34 1.75-.64.55-1.32 1.18-1.99 1.79l-.4.37c-.81.74-1.58 1.43-2.29 2.01l-.16.13c-.09-.42-.25-.83-.47-1.21-.33-.56-.82-1.01-1.4-1.3-.53-.26-1.12-.37-1.71-.33-.99.06-1.89.52-2.44.83-.63.35-1.29.81-1.87 1.2-1.16.8-2.02 1.38-2.69 1.66-.08-.32-.17-.82-.21-1.56-.06-1.11-.02-2.61.19-4.61.11-1.12.16-2.11.12-2.95-.04-.8-.16-1.69-.53-2.49-.43-.9-1.31-1.83-2.7-1.97-1.12-.11-2.06.36-2.6.71-1.14.71-2.34 1.98-3.49 3.34-1.21 1.42-2.56 3.19-4.02 5.14-.79 1.05-1.6 2.16-2.45 3.31-1.48 2.02-2.97 4.02-4.48 6.01-.91-.14-1.82-.26-2.74-.39-.55-.08-1.09-.15-1.64-.23 1.29-1.78 2.89-4.16 4.06-6.48.72-1.43 1.36-3.01 1.59-4.51.22-1.46.14-3.48-1.47-4.92-.92-.82-2.01-1.25-3.16-1.28-1.09-.03-2.08.29-2.88.69-1.57.78-2.97 2.11-4 3.26a22.255 22.255 0 0 0-4.16 6.68c-1.62 4.03-4.9 12.58-6.16 18.94-.32 1.6-.53 3.17-.53 4.55 0 1.26.18 2.88 1.12 4.12.54.72 1.31 1.24 2.18 1.47.87.23 1.74.16 2.49-.04 1.46-.38 3.02-1.34 4.68-2.65 3.97-3.14 7.95-7.63 11.61-12.21.39-.49.78-.98 1.17-1.48 2.64.48 5.46 1.15 8.01 2.1 3.41 1.28 5.94 2.95 7.17 5.01 1.11 1.86 1.48 4.61-.72 8.99a2.544 2.544 0 0 0 1.13 3.42c1.25.63 2.78.13 3.41-1.13 2.73-5.44 2.78-10.11.54-13.88-2.12-3.57-5.97-5.76-9.75-7.18-2.08-.78-4.26-1.37-6.36-1.84 1.01-1.36 2.02-2.71 3.02-4.08.83-1.13 1.62-2.21 2.38-3.21 1.44-1.94 2.72-3.6 3.82-4.89.09-.1.17-.2.26-.3-.21 2.09-.27 3.83-.19 5.26.08 1.44.31 2.73.8 3.79.52 1.12 1.38 2.08 2.66 2.51 1.19.4 2.32.19 3.15-.08 1.46-.48 2.97-1.52 4.02-2.25l.22-.15.24-.17.09.34c.21.67.62 1.44 1.42 1.98 1.61 1.09 3.34.37 4.03.04.9-.44 1.81-1.11 2.61-1.77.83-.68 1.7-1.46 2.51-2.2l.42-.39c.38-.35.75-.69 1.1-1.01.31.67.88 1.36 1.9 1.64 1.05.3 1.98-.06 2.38-.22.51-.21 1.01-.51 1.46-.8.71-.45 1.56-1.07 2.46-1.72l.77-.55c1.22-.88 2.59-1.83 4.1-2.76 6.1-3.75 13.76-6.58 21.73-1.68 1.19.74 2.76.36 3.49-.84.73-1.2.36-2.76-.84-3.5Zm-35.13 7.15c-.07.03-.06.02 0 0Zm-44.98 13.36.87.12c-3.39 4.19-6.84 7.98-10.13 10.58-1 .79-1.73 1.24-2.24 1.49 0-.13-.01-.27-.01-.4 0-.9.14-2.1.43-3.55 1.16-5.83 4.26-13.97 5.89-18.03.75-1.9 1.84-3.64 3.2-5.16.91-1.01 1.79-1.77 2.5-2.12.08-.04.17-.08.26-.11 0 .09-.02.19-.03.28-.11.73-.48 1.75-1.11 3-1.24 2.46-3.13 5.14-4.45 6.88-1.71 2.25-.71 5.44 1.85 6.42.44.17.95.27 1.37.35.46.08 1.01.16 1.59.25Zm.77-17.42v-.03.03Zm20.93-.61s-.01 0-.03.02c.02-.01.03-.02.03-.02Z\"\n})), _rect7 || (_rect7 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 139.9,\n height: 170.99,\n fill: \"rgba(201,207,236,.5)\",\n rx: 3.89,\n ry: 3.89\n})), _rect8 || (_rect8 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 139.9,\n height: 170.99,\n x: 21.37,\n y: 27.2,\n fill: \"#fff\",\n rx: 3.89,\n ry: 3.89\n})), _rect9 || (_rect9 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 120.74,\n height: 10.57,\n x: 30.7,\n y: 42.4,\n fill: \"#c6cdd9\",\n rx: 2.92,\n ry: 2.92\n})), _rect10 || (_rect10 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 120.08,\n height: 10.52,\n x: 30.7,\n y: 84.47,\n fill: \"#c6cdd9\",\n rx: 2.92,\n ry: 2.92\n})), _rect11 || (_rect11 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 51.3,\n height: 10.52,\n x: 30.7,\n y: 126.55,\n fill: \"#c6cdd9\",\n rx: 2.92,\n ry: 2.92\n})), _rect12 || (_rect12 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 120.74,\n height: 10.57,\n x: 30.7,\n y: 63.44,\n fill: \"#a7b1c0\",\n rx: 2.91,\n ry: 2.91\n})), _rect13 || (_rect13 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 120.08,\n height: 10.52,\n x: 30.7,\n y: 105.51,\n fill: \"#a7b1c0\",\n rx: 2.92,\n ry: 2.92\n})), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fdfeff\",\n d: \"m119.92 148.63 6.46-3.61c.53-.3 1.18-.26 1.68.09l8.23 5.81c.49.35.74.94.65 1.53l-1.1 7.35c-.12.8-.61 1.49-1.32 1.87l-15.91 8.53-.05.02c-.2.1-.44.05-.57-.12a.48.48 0 0 1-.02-.59l7.85-11.16c.77.16 1.54-.25 1.85-.96.36-.84-.03-1.82-.87-2.18-.24-.1-.5-.15-.76-.13-.91.07-1.6.86-1.54 1.77.02.26.1.51.23.74l-5.54 7.87-2.32 3.27c-.13.18-.35.25-.56.18a.5.5 0 0 1-.32-.49v-.06l2.63-17.83c.11-.79.59-1.49 1.29-1.87Zm7.93-5.6 10.54 7.43c.54.38 1.28.25 1.66-.29l1.51-2.14a1.2 1.2 0 0 0-.29-1.67l-10.54-7.43c-.54-.38-1.28-.25-1.66.28l-1.51 2.14a1.2 1.2 0 0 0 .29 1.67Zm-12.2 27.19c-.54-.14-1.09.18-1.24.71a2.416 2.416 0 0 1-2.84 1.44c-.55-.16-1.04-.5-1.37-.96-.38-.53-.48-1.18-.96-1.65-.86-.83-1.98-.48-2.75.27-.3.31-.57.65-.81 1.01-.21-.31-.47-.57-.77-.8-.33-.25-.71-.43-1.11-.54 0 0-.26-1.52-.3-1.68-.1-.38-.73-2.51.08-2.53.31.04.62-.05.86-.25.24-.21.37-.52.34-.84a.98.98 0 0 0-.48-.77c-1.39-.8-2.58.25-2.96 1.6-.18.76-.18 1.55 0 2.31.2.7.35 1.42.45 2.15-.96.22-1.77.87-2.18 1.77-.32.84.08 1.78.9 2.14 1.44.63 2.44-.56 2.93-1.9l.12.05c.47.33.81.82.96 1.37.16.54.74.85 1.28.68.15-.05.29-.13.41-.24.69-.62 1.1-1.48 1.74-2.13.1.24.26.51.36.7.18.33.4.63.65.9a4.46 4.46 0 0 0 4.08 1.36 4.583 4.583 0 0 0 3.36-2.92c.15-.54-.17-1.1-.72-1.24h-.03Z\"\n})), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#a7b1c0\",\n d: \"M132.64 153.97c-10.51-6.46-20.49-2.35-27.05 1.68-1.66 1.02-3.14 2.06-4.4 2.96-.31.22-.6.43-.87.63l-.41.3c-.15-.41-.39-.79-.69-1.11-.86-.89-1.95-.98-2.67-.87-.65.1-1.21.37-1.58.58-.78.44-1.6 1.11-2.34 1.75-.67.59-1.33 1.18-1.99 1.79l-.4.37c-.81.74-1.58 1.43-2.29 2.01l-.16.13c-.09-.42-.25-.83-.47-1.21-.33-.56-.82-1.01-1.4-1.3-.53-.26-1.12-.37-1.71-.33-1 .06-1.89.52-2.44.83-.63.35-1.29.81-1.87 1.2-1.16.8-2.02 1.38-2.69 1.66-.08-.32-.17-.82-.21-1.56-.06-1.11-.02-2.61.19-4.61.11-1.12.16-2.11.12-2.95-.04-.8-.16-1.7-.53-2.49-.43-.9-1.31-1.83-2.69-1.97-1.12-.11-2.06.36-2.6.71-1.14.71-2.34 1.98-3.49 3.34-1.21 1.42-2.56 3.19-4.02 5.14-.82 1.1-1.64 2.2-2.45 3.31a462.01 462.01 0 0 1-4.48 6.01c-.99-.15-1.92-.28-2.73-.39l-1.05-.15-.59-.09c1.29-1.78 2.89-4.16 4.06-6.48.72-1.43 1.36-3.01 1.59-4.51.23-1.46.14-3.48-1.47-4.92-.92-.82-2.01-1.25-3.16-1.28-1.09-.03-2.08.29-2.88.69-1.57.78-2.97 2.11-4 3.26a22.029 22.029 0 0 0-4.15 6.68c-1.62 4.03-4.9 12.58-6.16 18.94-.32 1.6-.53 3.17-.53 4.55 0 1.26.17 2.88 1.12 4.12.54.72 1.31 1.24 2.18 1.47.87.23 1.74.16 2.49-.04 1.46-.38 3.02-1.34 4.68-2.65 3.97-3.14 7.95-7.63 11.61-12.21.39-.49.78-.98 1.17-1.48 2.64.48 5.45 1.14 8.01 2.1 3.41 1.28 5.94 2.95 7.17 5.01 1.11 1.86 1.48 4.61-.72 8.99a2.547 2.547 0 0 0 1.13 3.42c1.25.63 2.78.13 3.41-1.13 2.73-5.44 2.79-10.11.54-13.88-2.12-3.57-5.97-5.76-9.75-7.18-2.08-.78-4.26-1.38-6.36-1.84 1.04-1.4 2.06-2.77 3.02-4.08.79-1.07 1.58-2.15 2.38-3.21 1.44-1.94 2.72-3.6 3.82-4.89.09-.1.17-.2.26-.3-.21 2.09-.27 3.83-.19 5.26.08 1.44.31 2.73.8 3.79.52 1.12 1.38 2.08 2.66 2.51 1.19.4 2.32.19 3.14-.08 1.46-.48 2.97-1.52 4.02-2.25l.22-.15.24-.17.09.34c.21.67.62 1.44 1.42 1.98 1.61 1.09 3.34.37 4.03.04.9-.44 1.81-1.11 2.61-1.77.83-.68 1.7-1.46 2.51-2.2l.42-.39c.38-.35.75-.69 1.1-1.01.31.67.88 1.36 1.9 1.64 1.05.29 1.98-.06 2.38-.22.5-.21 1.01-.51 1.46-.8.7-.45 1.56-1.07 2.46-1.72l.77-.55c1.22-.88 2.59-1.83 4.1-2.76 6.1-3.75 13.76-6.58 21.73-1.68 1.2.74 2.76.36 3.49-.84.73-1.2.36-2.76-.84-3.5Zm-35.13 7.15c-.07.03-.06.02 0 0Zm-44.98 13.36.88.12c-3.39 4.19-6.85 7.98-10.13 10.58-1 .79-1.73 1.24-2.24 1.49 0-.13-.01-.27-.01-.4 0-.9.14-2.1.43-3.55 1.15-5.83 4.26-13.97 5.89-18.03.75-1.9 1.84-3.64 3.21-5.16.91-1.01 1.79-1.77 2.49-2.12.08-.04.17-.08.26-.11 0 .09-.02.19-.03.28-.11.73-.48 1.75-1.11 3-1.24 2.46-3.13 5.14-4.45 6.88-1.71 2.25-.72 5.44 1.85 6.42.44.17.95.27 1.37.35.46.08 1.01.17 1.6.25Zm.77-17.42v-.03.03Zm20.93-.61s-.01 0-.03.02c.02-.01.03-.02.03-.02Z\"\n})), _ellipse || (_ellipse = /*#__PURE__*/React.createElement(\"ellipse\", {\n cx: 150.79,\n cy: 193.61,\n fill: \"#4675e2\",\n rx: 30.31,\n ry: 30.39\n})), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M136.69 180.41c.47-.47 1.16-.63 1.78-.42l26.11 8.7c.91.31 1.4 1.29 1.1 2.21-.14.43-.44.78-.84.99l-9.33 4.88 8.01 8.01c.68.68.68 1.78 0 2.46s-1.78.68-2.46 0l-8.01-8.01-4.88 9.33c-.44.85-1.5 1.18-2.35.74a1.8 1.8 0 0 1-.85-.99l-8.7-26.11c-.21-.63-.05-1.32.42-1.78Z\"\n})));\nexport default SvgIconSelectDocument;","var _path, _path2, _path3;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgAiLogo = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 20 20\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n className: \"ai-star1\",\n d: \"M5.73111 5.61379C6.08963 5.74646 6.08963 6.25354 5.73111 6.38621L5.20344 6.58146C4.45199 6.85952 3.85952 7.45199 3.58146 8.20344L3.38621 8.73111C3.25354 9.08963 2.74646 9.08963 2.61379 8.73111L2.41854 8.20344C2.14048 7.45199 1.54801 6.85952 0.796562 6.58146L0.268889 6.38621C-0.0896293 6.25354 -0.0896293 5.74646 0.268889 5.61379L0.796561 5.41854C1.54801 5.14048 2.14048 4.54801 2.41854 3.79656L2.61379 3.26889C2.74646 2.91037 3.25354 2.91037 3.38621 3.26889L3.58146 3.79656C3.85952 4.54801 4.45199 5.14048 5.20344 5.41854L5.73111 5.61379Z\",\n fill: \"#0099FF\"\n})), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n className: \"ai-star2\",\n d: \"M15.4622 13.2276C16.1793 13.4929 16.1793 14.5071 15.4622 14.7724L14.4069 15.1629C12.904 15.719 11.719 16.904 11.1629 18.4069L10.7724 19.4622C10.5071 20.1793 9.49292 20.1793 9.22759 19.4622L8.83708 18.4069C8.28096 16.904 7.09602 15.719 5.59312 15.1629L4.53778 14.7724C3.82074 14.5071 3.82074 13.4929 4.53778 13.2276L5.59312 12.8371C7.09602 12.281 8.28096 11.096 8.83708 9.59312L9.22759 8.53778C9.49292 7.82074 10.5071 7.82074 10.7724 8.53778L11.1629 9.59312C11.719 11.096 12.904 12.281 14.4069 12.8371L15.4622 13.2276Z\",\n fill: \"#FF6100\"\n})), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n className: \"ai-star3\",\n d: \"M15.4851 0.358519C15.6619 -0.119506 16.3381 -0.119507 16.5149 0.358519L16.7753 1.06208C17.146 2.06401 17.936 2.85397 18.9379 3.22472L19.6415 3.48506C20.1195 3.66194 20.1195 4.33806 19.6415 4.51494L18.9379 4.77528C17.936 5.14603 17.146 5.93599 16.7753 6.93792L16.5149 7.64148C16.3381 8.11951 15.6619 8.11951 15.4851 7.64148L15.2247 6.93792C14.854 5.93599 14.064 5.14603 13.0621 4.77528L12.3585 4.51494C11.8805 4.33806 11.8805 3.66194 12.3585 3.48506L13.0621 3.22472C14.064 2.85397 14.854 2.06401 15.2247 1.06208L15.4851 0.358519Z\",\n fill: \"#FFB629\"\n})));\nexport default SvgAiLogo;","var _path, _path2, _path3;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgAiLogoWhite = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 18 18\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.15741 5.05261C5.48008 5.17201 5.48008 5.62838 5.15741 5.74778L4.68251 5.92351C4.00621 6.17377 3.47298 6.70699 3.22273 7.38329L3.047 7.8582C2.9276 8.18086 2.47123 8.18086 2.35183 7.8582L2.1761 7.38329C1.92584 6.70699 1.39262 6.17377 0.716319 5.92351L0.241414 5.74778C-0.0812527 5.62838 -0.0812527 5.17201 0.241414 5.05261L0.716319 4.87688C1.39262 4.62663 1.92584 4.0934 2.1761 3.4171L2.35183 2.9422C2.47123 2.61953 2.9276 2.61953 3.047 2.9422L3.22273 3.4171C3.47298 4.0934 4.00621 4.62663 4.68251 4.87688L5.15741 5.05261Z\",\n fill: \"white\"\n})), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.9154 11.905C14.5607 12.1438 14.5607 13.0566 13.9154 13.2954L12.9656 13.6468C11.613 14.1473 10.5466 15.2138 10.046 16.5664L9.69458 17.5162C9.45579 18.1615 8.54304 18.1615 8.30424 17.5162L7.95278 16.5664C7.45227 15.2138 6.38583 14.1473 5.03322 13.6468L4.08341 13.2954C3.43808 13.0566 3.43808 12.1438 4.08341 11.905L5.03322 11.5536C6.38583 11.0531 7.45227 9.98661 7.95278 8.63401L8.30424 7.6842C8.54304 7.03886 9.45579 7.03886 9.69458 7.6842L10.046 8.634C10.5466 9.98661 11.613 11.0531 12.9656 11.5536L13.9154 11.905Z\",\n fill: \"white\"\n})), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.9364 0.322667C14.0956 -0.107555 14.7041 -0.107556 14.8633 0.322667L15.0976 0.955873C15.4312 1.85761 16.1422 2.56857 17.0439 2.90225L17.6771 3.13655C18.1074 3.29575 18.1074 3.90425 17.6771 4.06345L17.0439 4.29775C16.1422 4.63143 15.4312 5.34239 15.0976 6.24413L14.8633 6.87733C14.7041 7.30756 14.0956 7.30756 13.9364 6.87733L13.7021 6.24413C13.3684 5.34239 12.6574 4.63143 11.7557 4.29775L11.1225 4.06345C10.6922 3.90425 10.6922 3.29575 11.1225 3.13655L11.7557 2.90225C12.6574 2.56857 13.3684 1.85761 13.7021 0.955874L13.9364 0.322667Z\",\n fill: \"white\"\n})));\nexport default SvgAiLogoWhite;","var _rect, _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgIconExclamation = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 80 80\"\n}, props), _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n width: 80,\n height: 80,\n rx: 8,\n fill: \"#FFDC7B\",\n fillOpacity: 0.5\n})), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M40.0003 25.0003C31.7161 25.0003 25.0003 31.7161 25.0003 40.0003C25.0003 48.2846 31.7161 55.0003 40.0003 55.0003C48.2846 55.0003 55.0003 48.2846 55.0003 40.0003C55.0003 31.7161 48.2846 25.0003 40.0003 25.0003ZM21.667 40.0003C21.667 29.8751 29.8751 21.667 40.0003 21.667C50.1255 21.667 58.3337 29.8751 58.3337 40.0003C58.3337 50.1255 50.1255 58.3337 40.0003 58.3337C29.8751 58.3337 21.667 50.1255 21.667 40.0003ZM40.0003 45.0003C39.0798 45.0003 38.3337 44.2541 38.3337 43.3337V31.667C38.3337 30.7465 39.0798 30.0003 40.0003 30.0003C40.9208 30.0003 41.667 30.7465 41.667 31.667V43.3337C41.667 44.2541 40.9208 45.0003 40.0003 45.0003ZM40.0003 46.667C39.0798 46.667 38.3337 47.4132 38.3337 48.3337C38.3337 49.2541 39.0798 50.0003 40.0003 50.0003C40.9208 50.0003 41.667 49.2541 41.667 48.3337C41.667 47.4132 40.9208 46.667 40.0003 46.667Z\",\n fill: \"#F9A400\"\n})));\nexport default SvgIconExclamation;","var _rect, _rect2, _rect3, _rect4, _rect5, _rect6, _rect7;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgIconFileUpload2 = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 77.55 101\"\n}, props), /*#__PURE__*/React.createElement(\"rect\", {\n width: 77.55,\n height: 101,\n rx: 4,\n style: {\n fill: \"#fff\"\n }\n}), _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n fill: \"#435fd2\",\n x: 7,\n y: 7.94,\n width: 33.02,\n height: 4.64,\n rx: 2\n})), _rect2 || (_rect2 = /*#__PURE__*/React.createElement(\"rect\", {\n fill: \"#c0cbf5\",\n x: 7,\n y: 17.21,\n width: 33.02,\n height: 4.64,\n rx: 2\n})), _rect3 || (_rect3 = /*#__PURE__*/React.createElement(\"rect\", {\n fill: \"#929cb9\",\n x: 7,\n y: 26.49,\n width: 33.02,\n height: 4.64,\n rx: 2\n})), _rect4 || (_rect4 = /*#__PURE__*/React.createElement(\"rect\", {\n fill: \"#435fd2\",\n x: 7,\n y: 63.61,\n width: 33.02,\n height: 4.64,\n rx: 2\n})), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6.86 94.53c4.48 2.73 8.84-.85 12.56-6.12a33.09 33.09 0 0 0 5.11-10.54c.47-1.75 1.06-4.8-.44-4.83s-2.85 3.13-3.46 6A29.16 29.16 0 0 0 20.8 92c1 3.75 2.7 5.52 4.72 4.79S29.47 92.93 31 90a35.24 35.24 0 0 0 1.58-3.49c.06-.14.26-.86.39-.91s.12 3.11.13 3.28c.11 1.53.47 3.25 1.32 3.3 1.07.07 2-1.85 2.69-3.26.24-.48 1-2.77 1.42-2.77a10.15 10.15 0 0 1 .58 2.07c1 3.21 2.44 2 3.57-.2.2-.41 1.31-3.73 1.76-3.13a7.79 7.79 0 0 1 .71 2.37 4.3 4.3 0 0 0 1.33 2.56c1.39 1 2.89-1.79 4.31-1.79.41 0 .62.48.84 1.15.29.91.6 1.55 1.14 1.8 1.67.76 3-2.63 4.65-2.33.47.08.82 1.1 1.18 1.64a4.85 4.85 0 0 0 2.4 2.08c1.4.42 2.8-.14 4.16-.77 2.35-1.09 4.68-2.39 7-3.44\",\n style: {\n fill: \"none\",\n stroke: \"#929cb9\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: \"1.5px\"\n }\n}), _rect5 || (_rect5 = /*#__PURE__*/React.createElement(\"rect\", {\n fill: \"#c0cbf5\",\n x: 7,\n y: 45.05,\n width: 49.03,\n height: 4.64,\n rx: 2\n})), _rect6 || (_rect6 = /*#__PURE__*/React.createElement(\"rect\", {\n fill: \"#929cb9\",\n x: 7,\n y: 54.33,\n width: 49.03,\n height: 4.64,\n rx: 2\n})), _rect7 || (_rect7 = /*#__PURE__*/React.createElement(\"rect\", {\n fill: \"#435fd2\",\n x: 7,\n y: 35.77,\n width: 65.04,\n height: 4.64,\n rx: 2\n})));\nexport default SvgIconFileUpload2;","var _path, _path2, _path3;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgIconDoc = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 48 48\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#4F5A98\",\n d: \"M4.159 43.826v3.13c0 .576.466 1.044 1.043 1.044h37.566c.577 0 1.043-.468 1.043-1.044v-3.13H4.16ZM43.811 20.87v-7.305H31.29a1.043 1.043 0 0 1-1.043-1.043V0H5.202C4.625 0 4.16.467 4.16 1.043V20.87H43.81Z\"\n})), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#4F5A98\",\n d: \"M32.347 1.652v9.823h9.824l-9.824-9.823Z\"\n})), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#0A1551\",\n fillRule: \"evenodd\",\n d: \"M46.957 22.96H1.043C.467 22.96 0 23.426 0 24.002v16.696c0 .576.467 1.043 1.043 1.043h45.914c.576 0 1.043-.467 1.043-1.043V24.003c0-.576-.467-1.044-1.043-1.044ZM21.22 32.024c0-1.608 1.152-2.336 2.228-2.336 1.065 0 2.217.728 2.217 2.336 0 1.608-1.152 2.326-2.217 2.326-1.076 0-2.228-.718-2.228-2.326Zm-1.782.011c0 2.434 1.837 4.01 4.01 4.01 2.162 0 3.999-1.576 3.999-4.01 0-2.445-1.837-4.02-4-4.02-2.172 0-4.009 1.575-4.009 4.02Zm-5.722 2.228v-4.467h1c1.184 0 2.151.696 2.151 2.239s-.967 2.228-2.151 2.228h-1Zm1.065 1.619c2.325 0 3.88-1.467 3.88-3.847s-1.555-3.858-3.87-3.858H12v7.705h2.782Zm21.104-2.532c-.25 1.065-1.27 2.695-3.662 2.695-2.216 0-3.998-1.598-3.998-4 0-2.4 1.825-4.03 3.977-4.03 2.314 0 3.336 1.488 3.586 2.597l-1.62.51c-.119-.532-.608-1.434-1.966-1.434-1.033 0-2.195.739-2.195 2.358 0 1.445 1.065 2.282 2.216 2.282 1.337 0 1.87-.891 2.022-1.445l1.64.467Z\",\n clipRule: \"evenodd\"\n})));\nexport default SvgIconDoc;","var _path, _path2, _path3;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgIconAiBuilder = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 20 20\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.73111 5.61379C6.08963 5.74646 6.08963 6.25354 5.73111 6.38621L5.20344 6.58146C4.45199 6.85952 3.85952 7.45199 3.58146 8.20344L3.38621 8.73111C3.25354 9.08963 2.74646 9.08963 2.61379 8.73111L2.41854 8.20344C2.14048 7.45199 1.54801 6.85952 0.796562 6.58146L0.268889 6.38621C-0.0896293 6.25354 -0.0896293 5.74646 0.268889 5.61379L0.796561 5.41854C1.54801 5.14048 2.14048 4.54801 2.41854 3.79656L2.61379 3.26889C2.74646 2.91037 3.25354 2.91037 3.38621 3.26889L3.58146 3.79656C3.85952 4.54801 4.45199 5.14048 5.20344 5.41854L5.73111 5.61379Z\",\n fill: \"#0099FF\"\n})), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.4622 13.2276C16.1793 13.4929 16.1793 14.5071 15.4622 14.7724L14.4069 15.1629C12.904 15.719 11.719 16.904 11.1629 18.4069L10.7724 19.4622C10.5071 20.1793 9.49292 20.1793 9.22759 19.4622L8.83708 18.4069C8.28096 16.904 7.09602 15.719 5.59312 15.1629L4.53778 14.7724C3.82074 14.5071 3.82074 13.4929 4.53778 13.2276L5.59312 12.8371C7.09602 12.281 8.28096 11.096 8.83708 9.59312L9.22759 8.53778C9.49292 7.82074 10.5071 7.82074 10.7724 8.53778L11.1629 9.59312C11.719 11.096 12.904 12.281 14.4069 12.8371L15.4622 13.2276Z\",\n fill: \"#FF6100\"\n})), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.4851 0.358519C15.6619 -0.119506 16.3381 -0.119507 16.5149 0.358519L16.7753 1.06208C17.146 2.06401 17.936 2.85397 18.9379 3.22472L19.6415 3.48506C20.1195 3.66194 20.1195 4.33806 19.6415 4.51494L18.9379 4.77528C17.936 5.14603 17.146 5.93599 16.7753 6.93792L16.5149 7.64148C16.3381 8.11951 15.6619 8.11951 15.4851 7.64148L15.2247 6.93792C14.854 5.93599 14.064 5.14603 13.0621 4.77528L12.3585 4.51494C11.8805 4.33806 11.8805 3.66194 12.3585 3.48506L13.0621 3.22472C14.064 2.85397 14.854 2.06401 15.2247 1.06208L15.4851 0.358519Z\",\n fill: \"#FFB629\"\n})));\nexport default SvgIconAiBuilder;","import { autoTranslate } from '@jotforminc/utils';\n\nexport default autoTranslate({\n CREATE_A_FORM: 'Create a Form',\n CREATE_FORM: 'Create Form',\n CREATE_A_FORM_SUBTITLE: 'Create or import a form to start gathering data',\n START_FROM_SCRATCH: 'Start From Scratch',\n START_FROM_SCRATCH_SUBTEXT: 'A blank slate is all you need',\n USE_TEMPLATE: 'Use Template',\n USE_TEMPLATE_SUBTEXT: 'Choose from 10,000+ premade forms',\n IMPORT_FORM: 'Import Form',\n IMPORT_FORM_SUBTEXT: 'Convert an existing form in seconds',\n IMPORT_FORM_SUBTITLE: 'Import existing forms into your Jotform account in seconds',\n SELECT_LAYOUT: 'Select form layout',\n SELECT_LAYOUT_SUBTITLE: 'Choose a layout according to your needs',\n CLASSIC_FORM: 'Classic Form',\n CLASSIC_FORM_SUBTITLE: 'Show all questions on one page',\n CARD_FORM: 'Card Form',\n CARD_FORM_SUBTITLE: 'Show single question per page',\n DESCRIBE_IN_SECONDS: 'Describe a form and get it in seconds',\n DESCRIBE_IN_WORDS: 'Describe in words what kind of information you want to collect.',\n PDF_FORM: 'PDF Form',\n PDF_FORM_SUBTITLE: 'PDF forms can be filled out on digital devices',\n GENERATING_FORM: 'Generating form',\n ENTER_URL: 'Enter URL',\n SELECT_FROM_YOUR_FORMS: 'Select from your forms',\n IMPORT_FAILED_PLEASE_TRY_AGAIN: 'Import failed, please try again later.',\n FROM_A_WEBPAGE: 'From a web page',\n FROM_A_WEBPAGE_SUBTITLE: 'Import a form from any page',\n CLONE_AN_EXISTING: 'Clone your existing form',\n CLONE_AN_EXISTING_SUBTITLE: 'Create a copy of one of your existing forms',\n IMPORT_PDF_FORM: 'Import PDF form',\n IMPORT_PDF_FORM_SUBTITLE: 'Convert your PDF form to an online form',\n SELECT_A_FORM: 'Select a Form',\n SELECT_FORM: 'Select Form',\n PREVIEW_FORM: 'Preview Form',\n PLEASE_WAIT: 'Please wait...',\n BETA: 'Beta',\n CREATE_SALESFORCE_FORM: 'Create Salesforce Form',\n CREATE_SALESFORCE_FORM_SUBTEXT: 'Create an integrated form with Salesforce objects',\n SALESFORCE_SELECT_OBJECT: 'Enter or select object',\n SALESFORCE_OBJECTS: 'Salesforce Objects',\n SALESFORCE_FIELD_SELECTED: '1 field selected',\n SALESFORCE_FIELDS_SELECTED: '{selectedFieldsCount} fields selected'\n});\n","import { autoTranslate } from '@jotforminc/utils';\n\nexport default autoTranslate({\n JOTFORM_SIGN: 'Create Signable Document',\n JOTFORM_SIGN_SUBTEXT: 'Collect e-signatures',\n JOTFORM_SIGN_UPLOAD_TEXT: 'Upload Document',\n JOTFORM_SIGN_UPLOAD_SUBTEXT: 'Turn your documents into signable documents',\n JOTFORM_SIGN_TEMPLATE_TEXT: 'Use Template',\n JOTFORM_SIGN_TEMPLATE_SUBTEXT: 'Choose from 600+ ready-made templates',\n JOTFORM_SIGN_BETA_ENROLL: 'Join our Beta Program',\n JOTFORM_SIGN_BETA_ENROLL_SUBTEXT: 'Enjoy your early access and start collecting eSignatures for your documents.',\n JOTFORM_SIGN_SELECT_DOCUMENT_TEXT: 'Select a Document',\n JOTFORM_SIGN_SELECT_DOCUMENT_SUBTEXT: 'Pick a document from your library'\n});\n","import React from 'react';\n\nimport { featureFlag } from '@jotforminc/feature-flag';\nimport { IconPlus } from '@jotforminc/svg-icons';\nimport { trackDataForMobile } from '@jotforminc/utils';\n\nimport texts from './texts';\nimport signTexts from '../../CreateNewDocumentWizard/core/texts';\n\nimport IconCreateSalesforceForm from '../assets/svg/iconCreateSalesforceForm.svg';\nimport IconCreateUseTemplate from '../assets/svg/iconCreateUseTemplate.svg';\nimport IconCreateImportForm from '../assets/svg/iconCreateImportForm.svg';\nimport IconCreateSignDocument from '../assets/svg/iconCreateSignDocument.svg';\nimport IconCreateAIForm from '../assets/svg/iconCreateAIForm.svg';\nimport IconBeta from '../assets/svg/iconBeta.svg';\nimport IconImportPDFForm from '../assets/svg/iconImportPDFForm.svg';\n\nconst StartFromScratch = {\n className: 'forStartFromScratch',\n 'data-test-id': 'cw-start-from-scratch',\n icon: ,\n text: texts.START_FROM_SCRATCH,\n subText: texts.START_FROM_SCRATCH_SUBTEXT,\n getOnClickHandler: function getOnClickHandler({ setView, actionLogger }) {\n return () => {\n setView('StartFromScratch');\n if (global.user && actionLogger) {\n actionLogger({ actor: global.user.username, action: 'startFromScratchClick', target: '.forStartFromScratch' });\n }\n trackDataForMobile('createWizard', 'startFromScratch');\n };\n },\n isViewAvailable: () => true\n};\n\nconst CreateSalesforceForm = {\n className: 'forCreateSalesforceForm',\n 'data-test-id': 'cw-create-salesforce-form',\n icon: ,\n text: texts.CREATE_SALESFORCE_FORM,\n subText: texts.CREATE_SALESFORCE_FORM_SUBTEXT,\n feature: featureFlag.getList().CREATE_SALESFORCE_FORMS,\n getOnClickHandler: function getOnClickHandler({ setView }) {\n return () => {\n setView('CreateSalesforceForm');\n };\n },\n isViewAvailable: function isViewAvailable() {\n return this.feature && featureFlag.getFeature(this.feature);\n }\n};\n\nconst UseTemplate = {\n className: 'forUseTemplate',\n 'data-test-id': 'cw-use-template',\n icon: ,\n text: texts.USE_TEMPLATE,\n subText: texts.USE_TEMPLATE_SUBTEXT,\n getOnClickHandler: function getOnClickHandler({ setView, actionLogger }) {\n return () => {\n setView('UseTemplate');\n if (global.user && actionLogger) {\n actionLogger({ actor: global.user.username, action: 'useTemplateClick', target: '.forUseTemplate' });\n }\n trackDataForMobile('createWizard', 'useTemplate');\n };\n },\n isViewAvailable: () => true\n};\n\nconst ImportForm = {\n className: 'forImport',\n 'data-test-id': 'cw-import-form',\n icon: ,\n text: texts.IMPORT_FORM,\n subText: texts.IMPORT_FORM_SUBTEXT,\n getOnClickHandler: function getOnClickHandler({\n forms, setView, actionLogger, isTestVarForSmartPDF, importPDFForm\n }) {\n return () => {\n setView('ImportForm', { forms, isTestVarForSmartPDF, importPDFForm });\n if (global.user && actionLogger) {\n actionLogger({ actor: global.user.username, action: 'importFormClick', target: '.forImport' });\n trackDataForMobile('createWizard', 'importForm');\n }\n };\n },\n isViewAvailable: () => true\n};\n\nconst CreateSignDocumentMain = {\n className: 'forCreateSignDocument',\n 'data-test-id': 'cw-create-sign',\n icon: ,\n text: signTexts.JOTFORM_SIGN,\n subText: signTexts.JOTFORM_SIGN_SUBTEXT,\n feature: featureFlag.getList().SIGN,\n getOnClickHandler: function getOnClickHandler({ setView }) {\n return () => {\n try {\n if (global.user && window.signActions) {\n window.signActions.tick({\n actor: global.user.username,\n action: 'click',\n target: 'sign-create-document'\n });\n }\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(error);\n }\n\n const viewProps = {\n navigation: {\n FileUpload: 'CreateSignDocumentFileUpload',\n UseTemplate: 'CreateSignDocumentTemplate',\n Main: 'CreateSignDocumentMain'\n }\n };\n\n setView('CreateSignDocumentMain', viewProps);\n trackDataForMobile('createWizard', 'createSignDocument');\n };\n },\n isViewAvailable: function isViewAvailable({ user, disableSignCreation }) {\n return (this.feature && featureFlag.getFeature(this.feature)) && ('allowSign' in user && user.allowSign && !disableSignCreation);\n },\n getAdditionalProps: function getAdditionalProps({ isSignReleased }) {\n return () => {\n return ({\n isBeta: !isSignReleased,\n isNew: isSignReleased\n });\n };\n }\n};\n\nconst CreateAIForm = {\n className: 'forCreateAIForm',\n 'data-test-id': 'cw-create-ai-form',\n icon: (\n <>\n \n \n \n ),\n text: 'Copilot',\n subText: texts.DESCRIBE_IN_SECONDS,\n feature: window.AITestVariant,\n getOnClickHandler: function getOnClickHandler({ setView }) {\n return () => {\n const viewProps = {\n navigation: {\n Main: 'CreateAIForm',\n AIFormBuilder: 'AIFormBuilder'\n }\n };\n fetch('/ai-builder/actions/JotformAI-clicked/create-form-wizard');\n setView('CreateAIForm', viewProps);\n trackDataForMobile('createWizard', 'copilot');\n };\n },\n isViewAvailable: function isViewAvailable() {\n const isMobileBrowser = window.innerWidth <= 580;\n const isMobileApp = global.navigator.userAgent.indexOf('JotForm Mobile') > -1 || global.navigator.userAgent.indexOf('JFCEMobile') > -1;\n return (!isMobileBrowser && this.feature) || (isMobileApp && !!window?.mobileCopilotEnabled);\n }\n};\n\nconst SmartPDFForm = {\n className: 'forImportPdf',\n 'data-test-id': 'cw-import-pdf-form',\n icon: ,\n text: texts.IMPORT_PDF_FORM,\n subText: texts.IMPORT_PDF_FORM_SUBTITLE,\n getOnClickHandler: function getOnClickHandler({ importPDFForm, actionLogger }) {\n return () => {\n importPDFForm(true);\n if (global.user && actionLogger) {\n actionLogger({ actor: global.user.username, action: 'importPDFFormClick', target: '.forImportPDF' });\n }\n };\n },\n isViewAvailable: function isViewAvailable({ isTestVarForSmartPDF }) {\n return isTestVarForSmartPDF;\n }\n};\n\nexport const FORM_CREATION_TYPES = [\n StartFromScratch,\n CreateSalesforceForm,\n UseTemplate,\n CreateAIForm,\n ImportForm,\n CreateSignDocumentMain,\n SmartPDFForm\n];\n","import React from 'react';\nimport {\n func, string, shape, bool\n} from 'prop-types';\nimport {\n WizardBody,\n WizardList,\n WizardItem,\n WizardListItem,\n WizardHeader as Header\n} from '@jotforminc/wizard-shared';\nimport { t } from '@jotforminc/translation';\nimport { ABTestManager } from '@jotforminc/abtest-manager';\nimport { serialize, pushDataLayer, handleCustomNavigation } from '@jotforminc/utils';\n\nimport { FORM_CREATION_TYPES } from '../../core/constants';\nimport texts from '../../core/texts';\n\nexport default class Main extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n isTestVar: false,\n isTestVarForSmartPDF: false\n };\n this.importPDFForm = this.importPDFForm.bind(this);\n this.getCountClasses = this.getCountClasses.bind(this);\n }\n\n async componentDidMount() {\n const { user } = this.props;\n const isMobile = window.innerWidth <= 580;\n const isMobileApp = global.navigator.userAgent.indexOf('JotForm Mobile') > -1 || global.navigator.userAgent.indexOf('JFCEMobile') > -1 || isMobile;\n if (isMobileApp) {\n window.AITestVariant = false;\n\n const abTestManager = new ABTestManager({\n isTestEnabled: true,\n testName: 'mobileFormCreation',\n controlVariantCode: '9131',\n testVariantCode: '9141',\n urlParam: 'mfct',\n cacheVariantCodeAtLocalStorage: true,\n user\n });\n\n try {\n const getTestVariant = await abTestManager.isTestVariant();\n this.isTestVar = getTestVariant;\n this.setState({ isTestVar: getTestVariant });\n } catch (e) {\n this.setState({ isTestVar: false });\n }\n }\n\n const abTestManagerSmartPDF = new ABTestManager({\n isTestEnabled: true,\n testName: 'smartPDFFormCreation',\n controlVariantCode: '25801',\n urlParam: 'normalSmartPDF',\n testVariantCode: [{\n code: '25811',\n urlParam: 'prioritizedSmartPDF'\n }],\n cacheVariantCodeAtLocalStorage: true,\n user\n });\n\n try {\n const [isTestVariant] = await abTestManagerSmartPDF.isTestVariant();\n this.setState({ isTestVarForSmartPDF: isTestVariant });\n } catch (e) {\n this.setState({ isTestVarForSmartPDF: false });\n }\n }\n\n importPDFForm(fromMainStep = false) {\n const {\n currentFolder, actionLogger, onFormCreate, teamID, creationLogger\n } = this.props;\n const fetchURL = '/API/form/new';\n\n if (creationLogger) {\n creationLogger(`${fromMainStep ? 'mainStep-' : ''}importPDFForm`);\n }\n\n fetch(`${fetchURL}?${serialize({\n isPdfForm: 1,\n folder: currentFolder\n })}`, { headers: teamID ? { 'jf-team-id': teamID } : {} }).then(r => r.json()).then(data => {\n const { content: { id } } = data;\n\n if (actionLogger) {\n actionLogger({\n action: 'formCreationCompleted',\n target: id\n });\n }\n pushDataLayer({ method: texts.IMPORT_PDF_FORM, event: 'create_form_via_import' });\n onFormCreate(id, true);\n });\n }\n\n get formCreationTypes() {\n const { user = {} } = this.props;\n const currentFormUsage = user?.usage?.form_count || '0';\n const { isTestVar, isTestVarForSmartPDF } = this.state;\n\n return FORM_CREATION_TYPES.filter(typeConfigs => (typeConfigs.isViewAvailable({ ...this.props, isTestVarForSmartPDF })))\n .map(typeConfigs => {\n const {\n feature, isViewAvailable, getAdditionalProps, getOnClickHandler, ...defaultProps\n } = typeConfigs;\n\n return (\n \n );\n });\n }\n\n getCountClasses() {\n return this.formCreationTypes.length > 4 ? 'moreThanFourItem' : '';\n }\n\n render() {\n const {\n setView,\n customMainSubTitle,\n viewProps: { backButtonVisible, onBackButtonClick },\n actionLogger,\n teamID,\n teamName,\n isMixAssetCreationModal,\n onHide,\n backToMixModalActionLogger\n } = this.props;\n\n return (\n \n \n \n \n {this.formCreationTypes}\n \n \n \n );\n }\n}\n\nMain.propTypes = {\n setView: func,\n actionLogger: func,\n customMainSubTitle: string,\n viewProps: shape(),\n user: shape(),\n teamID: string,\n teamName: string,\n isSignReleased: bool,\n disableSignCreation: bool,\n onFormCreate: func,\n currentFolder: string,\n creationLogger: func,\n isMixAssetCreationModal: bool,\n onHide: func,\n backToMixModalActionLogger: func\n};\n\nMain.defaultProps = {\n setView: f => f,\n actionLogger: f => f,\n customMainSubTitle: null,\n viewProps: {},\n user: {},\n teamID: null,\n teamName: '',\n isSignReleased: false,\n disableSignCreation: false,\n onFormCreate: (id, isPDF) => { handleCustomNavigation(`/build/${id}${isPDF ? '#importPDF' : ''}`, '_self'); },\n currentFolder: null,\n creationLogger: f => f,\n isMixAssetCreationModal: false,\n onHide: f => f,\n backToMixModalActionLogger: f => f\n};\n","import React from 'react';\nimport {\n oneOfType, arrayOf, node, string\n} from 'prop-types';\nimport { classNames } from '@jotforminc/utils';\n\nexport default class WizardFooter extends React.Component {\n render() {\n const { className, children, ...props } = this.props;\n\n return (\n
    \n
    \n
    \n {children}\n
    \n
    \n
    \n );\n }\n}\n\nWizardFooter.propTypes = {\n children: oneOfType([\n arrayOf(node),\n node\n ]),\n className: string\n};\n\nWizardFooter.defaultProps = {\n children: null,\n className: ''\n};\n","import React from 'react';\nimport {\n oneOfType, arrayOf, node, string\n} from 'prop-types';\nimport { classNames } from '@jotforminc/utils';\n\nexport default class Label extends React.Component {\n render() {\n const {\n className, children, labelledFor, ...props\n } = this.props;\n\n return (\n \n );\n }\n}\n\nLabel.propTypes = {\n children: oneOfType([\n arrayOf(node),\n node\n ]),\n className: string,\n labelledFor: string\n};\n\nLabel.defaultProps = {\n children: null,\n className: '',\n labelledFor: ''\n};\n","import React from 'react';\nimport {\n string, bool, oneOfType, arrayOf, node, shape\n} from 'prop-types';\nimport { classNames } from '@jotforminc/utils';\nimport _uniqueId from 'lodash/uniqueId';\n\nimport Label from './Label';\n\nexport default class TextInput extends React.Component {\n constructor(props) {\n super(props);\n\n this.textInput = null;\n }\n\n componentDidMount() {\n const { autofocus, autoscroll } = this.props;\n\n if (autofocus) {\n this.textInput.focus();\n }\n\n if (autoscroll) {\n this.textInput.scrollIntoView({ behavior: 'smooth', block: 'center', inline: 'center' });\n }\n }\n\n render() {\n const {\n className,\n autofocus,\n autoscroll,\n label,\n children,\n wrapperProps: { className: wrapperClassName, ...wrapperRestProps },\n ...props\n } = this.props;\n\n const id = _uniqueId('contact-');\n\n return (\n
    \n {label && }\n
    \n { this.textInput = r; }}\n type=\"text\"\n className={classNames('jfWizard-input-text', className)}\n {...props}\n />\n {children}\n
    \n
    \n );\n }\n}\n\nTextInput.propTypes = {\n children: oneOfType([\n arrayOf(node),\n node\n ]),\n wrapperProps: shape(),\n className: string,\n label: string,\n autofocus: bool,\n autoscroll: bool\n};\n\nTextInput.defaultProps = {\n children: null,\n wrapperProps: {},\n className: '',\n label: null,\n autofocus: false,\n autoscroll: false\n};\n","import React from 'react';\nimport {\n string, bool, objectOf, object, oneOfType, arrayOf, node, shape\n} from 'prop-types';\nimport { classNames } from '@jotforminc/utils';\n\nimport Label from './Label';\n\nexport default class DropdownInput extends React.Component {\n constructor(props) {\n super(props);\n\n this.dropdownInput = null;\n }\n\n componentDidMount() {\n const { autofocus, autoscroll } = this.props;\n\n if (autofocus) {\n this.dropdownInput.focus();\n }\n\n if (autoscroll) {\n this.dropdownInput.scrollIntoView({ behavior: 'smooth', block: 'center', inline: 'center' });\n }\n }\n\n get renderOptions() {\n const { options } = this.props;\n\n return options.map(option => {\n const { value, text } = option;\n return ;\n });\n }\n\n get renderPlaceholder() {\n const { placeholder } = this.props;\n return ;\n }\n\n render() {\n const {\n className,\n autofocus,\n autoscroll,\n placeholder,\n options,\n children,\n label,\n wrapperProps: { className: wrapperClassName, ...wrapperRestProps },\n ...props\n } = this.props;\n\n return (\n
    \n {label && }\n
    \n { this.dropdownInput = r; }}\n className={classNames('jfWizard-input-select', className)}\n {...props}\n >\n {this.renderPlaceholder}\n {this.renderOptions}\n {children}\n \n
    \n
    \n );\n }\n}\n\nDropdownInput.propTypes = {\n children: oneOfType([\n arrayOf(node),\n node\n ]),\n wrapperProps: shape(),\n className: string,\n label: string,\n autofocus: bool,\n autoscroll: bool,\n placeholder: string,\n options: objectOf(object)\n};\n\nDropdownInput.defaultProps = {\n children: null,\n wrapperProps: {},\n className: '',\n label: null,\n autofocus: false,\n autoscroll: false,\n placeholder: null,\n options: []\n};\n","import React from 'react';\nimport {\n oneOfType, arrayOf, node, string\n} from 'prop-types';\nimport { classNames } from '@jotforminc/utils';\n\nexport default class LoadingState extends React.Component {\n render() {\n const {\n className, children, ...props\n } = this.props;\n\n return (\n
    \n
    \n {children}\n
    \n
    \n
    \n );\n }\n}\n\nLoadingState.propTypes = {\n children: oneOfType([\n arrayOf(node),\n node\n ]),\n className: string\n};\n\nLoadingState.defaultProps = {\n children: null,\n className: ''\n};\n","import { Interceptors, RequestLayer } from '@jotforminc/request-layer';\n\nconst backendResponseInterceptor = ctx => {\n const { resp } = ctx;\n\n if (resp && resp.data) {\n ctx.result = resp?.data;\n }\n\n return false;\n};\n\nconst apiRequestLayer = new RequestLayer('/API', {\n interceptorConfig: {\n customResponseInterceptors: [Interceptors.requestManagerResponseNormalizer]\n }\n});\n\nconst backendRequestLayer = new RequestLayer('/', {\n interceptorConfig: {\n customResponseInterceptors: [backendResponseInterceptor]\n },\n engineConfig: {\n disableEngineThrowOnError: true,\n validateStatus: () => true\n }\n});\n\nexport const getCombinedInfo = () => apiRequestLayer.get('user/combinedinfo');\n\nexport const migrateForm = ({\n tokens, formId, shouldMigrateSubmissions, contextParam, from\n}) => backendRequestLayer.post('google-forms-importer/migrate', new URLSearchParams({\n credential: JSON.stringify(tokens ?? []),\n form_id: formId,\n submissions: shouldMigrateSubmissions ? '1' : '0',\n context: contextParam,\n from\n}));\n\nexport const getForms = ({ tokens }) => backendRequestLayer.post('google-forms-importer/forms', new URLSearchParams({\n credential: JSON.stringify(tokens ?? [])\n}));\n\nexport const getTokens = () => backendRequestLayer.get('google-forms-importer/token');\n\nexport const disconnectGoogleAccount = () => backendRequestLayer.delete('google-forms-importer/token');\n","const ACTION_TYPES = {\n SET_COMBINED_INFO: 'SET_COMBINED_INFO',\n SET_GOOGLE_CALLBACK: 'SET_GOOGLE_CALLBACK',\n SET_STEP: 'SET_STEP',\n SET_FORMS_LOADING: 'SET_FORMS_LOADING',\n START_MIGRATION: 'START_MIGRATION',\n SET_INITIAL_QUEUE: 'SET_INITIAL_QUEUE',\n UPDATE_MIGRATION_STATUS: 'UPDATE_MIGRATION_STATUS',\n UPDATE_MIGRATION_QUEUE: 'UPDATE_MIGRATION_QUEUE',\n FLUSH_MIGRATION_QUEUE: 'FLUSH_MIGRATION_QUEUE',\n REFRESH_FORMS: 'REFRESH_FORMS',\n RESET_GOOGLE_CREDENTIALS: 'RESET_GOOGLE_CREDENTIALS'\n};\n\nexport default ACTION_TYPES;\n","import React, {\n createContext, useContext, useEffect, useReducer\n} from 'react';\nimport isEmpty from 'lodash/isEmpty';\nimport PropTypes from 'prop-types';\n\nimport { getCombinedInfo } from '../api';\nimport ACTION_TYPES from './actionTypes';\n\nconst userReducer = (state, action) => {\n switch (action.type) {\n case ACTION_TYPES.SET_COMBINED_INFO:\n return {\n ...state,\n type: action?.combinedInfo?.type,\n credentials: action?.combinedInfo?.credentials\n };\n default:\n return state;\n }\n};\n\nexport const UserContext = createContext({});\n\nconst UserProvider = ({ children, user }) => {\n const initialUserState = {\n type: '',\n credentials: {}\n };\n\n const [userState, userDispatch] = useReducer(userReducer, { ...initialUserState });\n\n useEffect(() => {\n (async () => {\n let _user = user;\n\n if (isEmpty(_user?.credentials)) {\n _user = await getCombinedInfo();\n }\n\n userDispatch({\n type: ACTION_TYPES.SET_COMBINED_INFO,\n combinedInfo: {\n type: _user?.type,\n credentials: _user?.credentials\n }\n });\n })();\n }, []);\n\n return {children};\n};\n\nUserProvider.propTypes = {\n children: PropTypes.node.isRequired,\n user: PropTypes.shape({\n type: PropTypes.string,\n credentials: PropTypes.object\n })\n};\n\nUserProvider.defaultProps = {\n user: {}\n};\n\nexport const useUserState = () => {\n const { userState } = useContext(UserContext);\n return userState;\n};\n\nexport const useUserDispatch = () => {\n const { userDispatch } = useContext(UserContext);\n return userDispatch;\n};\n\nexport default UserProvider;\n","/* eslint-disable max-len */\nexport const ACCESS_REQUIRED = 'Access required';\nexport const THIS_APP_REQUIRES = 'Jotform’s use and transfer of information received from Google APIs to any other app is adhere to Google API Services User Data Policy, including the Limited Use requirements.';\nexport const BY_CONTINUING = 'By continuing, you agree to the [1[privacy policy]].';\nexport const MIGRATE_GOOGLE_FORMS = 'Migrate Google Forms to Jotform';\nexport const SELECT_THE_FORMS = 'Select the forms you want to migrate';\nexport const ACCESSING_FORMS = 'Accessing your forms...';\nexport const MIGRATE_WITH_SUBMISSIONS = 'Migrate with submissions';\nexport const SELECT_ALL_NUMBER_OF_FORMS = 'Select all [1[{formCount}]] forms';\nexport const COMPLETED_AFTER_MIGRATION = 'This will be completed after migration';\nexport const DONT_HAVE_ANY_GOOGLE_FORMS = 'You don’t have any Google Forms to migrate';\nexport const TRY_AGAIN = 'Try again';\nexport const NO_RESULTS_FOUND = 'No results found';\nexport const THE_IMPORT_FROM_JOTFORM = 'The Import to Jotform application will be referred to as “the/this app” in this privacy statement. This app helps you copy your forms from Google Drive® to your Jotform account.';\nexport const YOUR_PERSONAL_INFORMATION = 'Your Personal Information';\nexport const TO_AUTHORIZE_THE_APP = 'To authorize the app, sign into your Google® account, review the permissions needed by this app, and accept them. This app will not store, share, or copy your personal information in any way. Your login information will be used only to authorize the migration of your forms.';\nexport const SESSION_INFORMATION = 'Session Information';\nexport const THE_APP_WILL_TAKE_SNAPSHOTS = 'The app will take snapshots of active integration sessions. Your Jotform information will be saved alongside the session data, and will be used to increase efficiency and to maintain a high-quality experience. Your Jotform information is governed by the [1[Jotform privacy policy]] and [2[terms of use.]]';\nexport const GOOGLE_FORMS_FORM_SUBMISSION = 'Google Forms® and Form Submission Information';\nexport const THIS_APP_HELPS_YOU_COPY = 'This app helps you copy your Google Forms and form data into your Jotform account. Once your forms and form data are copied into Jotform, they will be governed by the [1[Jotform privacy policy]] and [2[terms of use.]]';\nexport const THIS_APP_WAS_DEVELOPED_BY = 'This application was developed by Jotform and has no affilfiation with Google®, Google LLC, its affiliates, or trademarks. [1[By continuing, you agree to this privacy policy.]]';\nexport const SOMETHING_WRONG_TRY_AGAIN = 'Something went wrong! Please try again.';\nexport const YOU_ARE_CONTINUING_WITH = 'You are continuing with the current Google account';\nexport const YOU_WILL_CONTINUE = 'You will continue with [1[{email}]].';\nexport const MIGRATE_FROM_DIFFERENT = 'Migrate from a different account';\nexport const REFRESH_FORMS = 'Refresh Forms';\nexport const WILL_REFRESH_YOUR_FORMS = 'We’ll retrieve all your forms from Google again, so you can migrate them if there are any new ones.';\nexport const ERROR_AUTHORIZE = 'We cannot access your Google Acccount';\nexport const MISSING_SCOPES = 'You have not granted the necessary permissions to access your forms. Please grant them to continue using the importer.';\nexport const REAUTHORIZE = 'Give Access';\nexport const UNDER_MAINTENANCE = 'Google Forms Import Tool is under maintenance';\nexport const UNDER_MAINTENANCE_DESC = 'We are working to offer you a better experience. We will be right back.';\nexport const OK = 'OK, got it';\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { IconInfoCircle } from '@jotforminc/svg-icons';\nimport { Button } from '@jotforminc/magnet';\nimport { t } from '@jotforminc/translation';\nimport { OK, UNDER_MAINTENANCE, UNDER_MAINTENANCE_DESC } from '../../constants/texts';\n\nconst MaintenanceMode = ({ modalClose }) => (\n
    \n
    \n \n
    \n
    \n

    \n {t(UNDER_MAINTENANCE)}\n

    \n

    \n {t(UNDER_MAINTENANCE_DESC)}\n

    \n
    \n
    \n modalClose()}\n >\n {t(OK)}\n \n
    \n
    \n);\n\nMaintenanceMode.propTypes = {\n modalClose: PropTypes.func.isRequired\n};\n\nexport default MaintenanceMode;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { IconInfoCircle, IconXmark } from '@jotforminc/svg-icons';\nimport { t, translationRenderer } from '@jotforminc/translation';\nimport { Button } from '@jotforminc/magnet';\n\nimport { MIGRATE_FROM_DIFFERENT, YOU_ARE_CONTINUING_WITH, YOU_WILL_CONTINUE } from '../../constants/texts';\n\nconst ChangeGoogleAccountStep = ({\n modalClose, handleSkipAccountSelector, handleConnectNewAccount, googleEmail\n}) => {\n return (\n
    \n modalClose()}\n rounded\n className='absolute right-4 top-4 rtl:right-auto rtl:left-4'\n />\n
    \n \n
    \n
    \n

    \n {t(YOU_ARE_CONTINUING_WITH)}\n

    \n

    \n {translationRenderer(YOU_WILL_CONTINUE)({\n renderer1: () => {googleEmail}\n })}\n

    \n
    \n
    \n handleConnectNewAccount()}\n >\n {t(MIGRATE_FROM_DIFFERENT)}\n \n handleSkipAccountSelector()}\n >\n {t('Continue')}\n \n
    \n
    \n );\n};\n\nChangeGoogleAccountStep.propTypes = {\n modalClose: PropTypes.func.isRequired,\n handleSkipAccountSelector: PropTypes.func.isRequired,\n handleConnectNewAccount: PropTypes.func.isRequired,\n googleEmail: PropTypes.string.isRequired\n};\n\nexport default ChangeGoogleAccountStep;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { IconInfoCircle, IconXmark } from '@jotforminc/svg-icons';\nimport { t, translationRenderer } from '@jotforminc/translation';\nimport { Button } from '@jotforminc/magnet';\nimport {\n ACCESS_REQUIRED,\n BY_CONTINUING,\n GOOGLE_FORMS_FORM_SUBMISSION,\n SESSION_INFORMATION,\n THE_APP_WILL_TAKE_SNAPSHOTS,\n THE_IMPORT_FROM_JOTFORM,\n THIS_APP_HELPS_YOU_COPY,\n THIS_APP_REQUIRES,\n THIS_APP_WAS_DEVELOPED_BY,\n TO_AUTHORIZE_THE_APP,\n YOUR_PERSONAL_INFORMATION\n} from '../../constants/texts';\n\nconst AuthorizationStep = ({\n modalClose, handleOpenGoogleAuth\n}) => {\n const [privacyPolicyOpen, setPrivacyPolicyOpen] = useState(false);\n\n return (\n
    \n modalClose()}\n rounded\n className='absolute right-4 top-4 rtl:right-auto rtl:left-4'\n />\n
    \n \n
    \n
    \n

    \n {t(ACCESS_REQUIRED)}\n

    \n {!privacyPolicyOpen && (\n <>\n

    {t(THIS_APP_REQUIRES)}

    \n

    \n {translationRenderer(BY_CONTINUING)({\n renderer1: renderText => \n })}\n

    \n \n )}\n {privacyPolicyOpen && (\n <>\n

    \n {t(THE_IMPORT_FROM_JOTFORM)}\n

    \n

    \n {t(YOUR_PERSONAL_INFORMATION)}\n

    \n

    \n {t(TO_AUTHORIZE_THE_APP)}\n

    \n

    \n {t(SESSION_INFORMATION)}\n

    \n

    \n {translationRenderer(THE_APP_WILL_TAKE_SNAPSHOTS)({\n renderer1: renderText => {t(renderText)},\n renderer2: renderTextLast => {t(renderTextLast)}\n })}\n

    \n

    \n {t(GOOGLE_FORMS_FORM_SUBMISSION)}\n

    \n

    \n {translationRenderer(THIS_APP_HELPS_YOU_COPY)({\n renderer1: renderText => {t(renderText)},\n renderer2: renderTextLast => {t(renderTextLast)}\n })}\n

    \n

    \n {translationRenderer(THIS_APP_WAS_DEVELOPED_BY)({\n renderer1: renderText => {t(renderText)}\n })}\n

    \n \n )}\n
    \n
    \n modalClose()}\n >\n {t('Cancel')}\n \n handleOpenGoogleAuth()}\n >\n {t('Continue')}\n \n
    \n
    \n );\n};\n\nexport default AuthorizationStep;\n\nAuthorizationStep.propTypes = {\n modalClose: PropTypes.func,\n handleOpenGoogleAuth: PropTypes.func\n};\n\nAuthorizationStep.defaultProps = {\n modalClose: f => f,\n handleOpenGoogleAuth: f => f\n};\n","import { IconExclamationCircle, IconXmark } from '@jotforminc/svg-icons';\nimport React from 'react';\nimport { t } from '@jotforminc/translation';\nimport PropTypes from 'prop-types';\nimport { Button } from '@jotforminc/magnet';\nimport {\n MISSING_SCOPES, REAUTHORIZE, ERROR_AUTHORIZE\n} from '../../constants/texts';\n\nconst ReAuthorizeStep = ({ handleConnectNewAccount, modalClose }) => {\n return (\n
    \n modalClose()}\n rounded\n className='absolute right-4 top-4 rtl:right-auto rtl:left-4'\n />\n
    \n \n
    \n
    \n

    \n {t(ERROR_AUTHORIZE)}\n

    \n

    \n {t(MISSING_SCOPES)}\n

    \n
    \n
    \n handleConnectNewAccount()}\n >\n {t(REAUTHORIZE)}\n \n
    \n
    \n );\n};\n\nReAuthorizeStep.propTypes = {\n handleConnectNewAccount: PropTypes.func.isRequired,\n modalClose: PropTypes.func.isRequired\n};\n\nexport default ReAuthorizeStep;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { IconArrowUpRightFromSquare, IconCheckCircleFilled, IconXmarkCircleFilled } from '@jotforminc/svg-icons';\nimport { t } from '@jotforminc/translation';\nimport { Button } from '@jotforminc/magnet';\nimport { handleCustomNavigation } from '@jotforminc/utils';\n\nimport { TRY_AGAIN } from '../constants/texts';\n\nconst MigrationStatusBadge = ({ migratedFormURL, queueStatus, handleRetrySingle }) => {\n const handleOpenLink = () => {\n handleCustomNavigation(migratedFormURL, '_blank', true);\n };\n\n return (\n <>\n {(queueStatus === 'MIGRATING') && (\n
    \n )}\n {queueStatus === 'SUCCESS' && (\n
    \n \n
    \n \n
    \n
    \n )}\n {queueStatus === 'ERROR' && (\n
    \n \n
    \n \n
    \n
    \n )}\n \n );\n};\n\nexport default MigrationStatusBadge;\n\nMigrationStatusBadge.propTypes = {\n migratedFormURL: PropTypes.string,\n queueStatus: PropTypes.string,\n handleRetrySingle: PropTypes.func.isRequired\n};\n\nMigrationStatusBadge.defaultProps = {\n migratedFormURL: '',\n queueStatus: 'WAITING'\n};\n","/* eslint-disable max-len */\nimport { handleCustomNavigation } from '@jotforminc/utils';\nimport { SOMETHING_WRONG_TRY_AGAIN } from '../constants/texts';\n\nexport const openGoogleAuthPopup = () => {\n const w = (window.innerWidth || window.screen.width) / 2;\n const h = (window.innerHeight || window.screen.height) / 1.5;\n let y = window.outerHeight / 2 + window.screenY - h / 2;\n let x = window.outerWidth / 2 + window.screenX - w / 2;\n try {\n y = window.top.outerHeight / 2 + window.top.screenY - h / 2;\n x = window.top.outerWidth / 2 + window.top.screenX - w / 2;\n } catch (err) {\n // error accessing to cross origin frame. Do nothing.\n }\n\n return handleCustomNavigation('/google-forms-importer/auth', '_blank', true, `toolbar=0,location=0,menubar=0,width=${w},height=${h},top=${y},left=${x}`);\n};\n\nexport const googleEditURI = id => `https://docs.google.com/forms/d/${id}/edit`;\n\nexport const errorNormalizer = err => err?.response?.data?.content || err?.data?.content || err?.content || err?.response?.data?.message || err?.data?.message || err?.message || SOMETHING_WRONG_TRY_AGAIN;\n\nexport const chunk = (items = [], chunkSize) => {\n const R = [];\n for (let i = 0, len = items.length; i < len; i += chunkSize) R.push(items.slice(i, i + chunkSize));\n return R;\n};\n\nexport const resolve = async (items, asyncFunc) => {\n const promises = items.map(item => asyncFunc(item));\n const temp = await Promise.all(promises);\n const result = temp.filter(t => t);\n if (result.length > 0) return result;\n};\n\nexport const chunkAndResolve = async (items = [], chunkSize = 5, asyncWork) => {\n const chunks = chunk(items, chunkSize);\n const result = [];\n // eslint-disable-next-line no-restricted-syntax\n for (const c of chunks) {\n try {\n // eslint-disable-next-line no-await-in-loop\n const resolved = await resolve(c, asyncWork);\n if (resolved) result.push(...resolved);\n } catch (e) {\n console.error(e);\n }\n }\n if (result.length > 0) return result;\n};\n\nexport const updateArrayChildrenById = (arr, object) => (arr?.find(q => q?.id === object?.id) && Object.assign(arr?.find(q => q?.id === object?.id), object), arr) || arr;\n","/* eslint-disable max-len */\nimport React, { useEffect, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport reject from 'lodash/reject';\nimport { IconArrowUpRightFromSquare } from '@jotforminc/svg-icons';\nimport { Checkbox } from '@jotforminc/magnet';\n\nimport MigrationStatusBadge from './MigrationStatusBadge';\nimport { googleEditURI } from '../utils';\n\nconst ListFormItem = ({\n selectedForms, setSelectedForms, queueStatus, formDetails, handleRetrySingle, migrationStatus, migratedForm\n}) => {\n const isFormSelected = useMemo(() => selectedForms.find(q => q?.id === formDetails?.id), [selectedForms, formDetails]);\n\n const handleSelectForm = () => {\n if (isFormSelected) {\n setSelectedForms(oldForms => reject(oldForms, q => q?.id === formDetails?.id));\n } else {\n setSelectedForms(oldForms => [...oldForms, formDetails]);\n }\n };\n\n const onSpacePress = event => {\n if (event.key === ' ' || event.code === 'space') {\n event.preventDefault();\n handleSelectForm();\n }\n };\n\n const populateRetryWithFormDetails = () => {\n handleRetrySingle(formDetails);\n };\n\n useEffect(() => {\n if (queueStatus === 'SUCCESS') {\n setSelectedForms(oldForms => reject(oldForms, q => q?.id === formDetails?.id));\n }\n }, [queueStatus]);\n\n return (\n
  • \n handleSelectForm()}\n data-queuestatus={queueStatus}\n onKeyDown={onSpacePress}\n />\n {(['MIGRATING', 'SUCCESS', 'ERROR'].includes(queueStatus)) && (\n
    \n \n
    \n )}\n {queueStatus === 'WAITING' && (\n \n \n \n )}\n
  • \n );\n};\n\nexport default ListFormItem;\n\nListFormItem.propTypes = {\n selectedForms: PropTypes.array.isRequired,\n setSelectedForms: PropTypes.func.isRequired,\n handleRetrySingle: PropTypes.func.isRequired,\n migrationStatus: PropTypes.string,\n formDetails: PropTypes.object,\n queueStatus: PropTypes.string,\n migratedForm: PropTypes.object\n};\n\nListFormItem.defaultProps = {\n formDetails: {},\n migratedForm: {},\n migrationStatus: 'IDLE',\n queueStatus: 'WAITING'\n};\n","import React, {\n createContext, useContext, useEffect, useReducer\n} from 'react';\nimport PropTypes from 'prop-types';\nimport isEmpty from 'lodash/isEmpty';\nimport isEqual from 'lodash/isEqual';\n\nimport ACTION_TYPES from './actionTypes';\nimport { migrateForm as migrateFormCall } from '../api';\nimport { chunkAndResolve, updateArrayChildrenById } from '../utils';\n\nconst wizardReducer = (state, action) => {\n switch (action.type) {\n case ACTION_TYPES.SET_GOOGLE_CALLBACK:\n return {\n ...state,\n forms: action?.forms,\n tokens: action?.tokens,\n callbackSucceeded: true,\n googleEmail: action?.googleEmail || action?.email || ''\n };\n case ACTION_TYPES.SET_STEP:\n return {\n ...state,\n step: action?.step\n };\n case ACTION_TYPES.SET_FORMS_LOADING:\n return {\n ...state,\n isFormsLoading: action?.isFormsLoading\n };\n case ACTION_TYPES.SET_INITIAL_QUEUE:\n return {\n ...state,\n migrationQueue: [\n ...state?.migrationQueue,\n ...action?.queue\n ]\n };\n case ACTION_TYPES.START_MIGRATION:\n return {\n ...state,\n shouldMigrateSubmissions: action?.shouldMigrateSubmissions,\n migrationStatus: 'STARTED'\n };\n case ACTION_TYPES.UPDATE_MIGRATION_STATUS:\n return {\n ...state,\n migrationStatus: action?.migrationStatus\n };\n case ACTION_TYPES.UPDATE_MIGRATION_QUEUE:\n return {\n ...state,\n migrationQueue: updateArrayChildrenById(state.migrationQueue, action?.form)\n };\n case ACTION_TYPES.FLUSH_MIGRATION_QUEUE:\n return {\n ...state,\n migrationQueue: [],\n migrationStatus: 'IDLE'\n };\n case ACTION_TYPES.REFRESH_FORMS:\n return {\n ...state,\n forms: action?.forms,\n migrationStatus: isEqual(action?.forms, state?.forms) ? 'FINISHED' : 'IDLE'\n };\n case ACTION_TYPES.RESET_GOOGLE_CREDENTIALS:\n return {\n ...state,\n forms: [],\n tokens: {},\n callbackSucceeded: false,\n googleEmail: ''\n };\n default:\n return state;\n }\n};\n\nexport const WizardContext = createContext({});\n\nconst WizardProvider = ({\n // eslint-disable-next-line no-unused-vars\n children, user, contextParam, from\n}) => {\n const initialWizardState = {\n // 0 - Auth, 1 - Migration\n step: 0,\n forms: [],\n tokens: {},\n /*\n [{\n id: formId,\n status: 'WAITING' | 'MIGRATING' | 'SUCCESS' | 'ERROR'\n }]\n */\n migrationQueue: [],\n // IDLE - STARTED - MIGRATING - FINISHED\n migrationStatus: 'IDLE',\n shouldMigrateSubmissions: false,\n isFormsLoading: false,\n callbackSucceeded: false,\n googleEmail: ''\n };\n\n const [wizardState, wizardDispatch] = useReducer(wizardReducer, { ...initialWizardState });\n\n const migrateForm = async form => {\n wizardDispatch({\n type: ACTION_TYPES.UPDATE_MIGRATION_QUEUE,\n form: {\n ...form,\n status: 'MIGRATING'\n }\n });\n\n const status = await migrateFormCall({\n contextParam,\n formId: form?.id,\n tokens: wizardState.tokens,\n shouldMigrateSubmissions: wizardState.shouldMigrateSubmissions,\n from\n });\n\n wizardDispatch({\n type: ACTION_TYPES.UPDATE_MIGRATION_QUEUE,\n form: {\n ...form,\n migratedForm: status?.content,\n status: status?.message === 'Success' ? 'SUCCESS' : 'ERROR'\n }\n });\n\n if (wizardState.migrationQueue.every(item => item?.migration !== 'WAITING')) {\n wizardDispatch({\n type: ACTION_TYPES.UPDATE_MIGRATION_STATUS,\n migrationStatus: 'FINISHED'\n });\n }\n };\n\n useEffect(() => {\n if (wizardState.migrationStatus === 'STARTED' && !isEmpty(wizardState.migrationQueue)) {\n wizardDispatch({\n type: ACTION_TYPES.UPDATE_MIGRATION_STATUS,\n migrationStatus: 'MIGRATING'\n });\n\n chunkAndResolve(wizardState.migrationQueue.filter(q => q?.status === 'WAITING'), 5, migrateForm);\n }\n }, [wizardState.migrationStatus, wizardState.migrationQueue]);\n\n return (\n \n {children}\n \n );\n};\n\nWizardProvider.propTypes = {\n children: PropTypes.node.isRequired,\n user: PropTypes.object,\n contextParam: PropTypes.string,\n from: PropTypes.string.isRequired\n};\n\nWizardProvider.defaultProps = {\n user: {},\n contextParam: 'landing'\n};\n\nexport const useWizardState = () => {\n const { wizardState } = useContext(WizardContext);\n return wizardState;\n};\n\nexport const useWizardDispatch = () => {\n const { wizardDispatch } = useContext(WizardContext);\n return wizardDispatch;\n};\n\nexport default WizardProvider;\n","import React, { useEffect, useMemo, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { IconMagnifyingGlass, IconArrowRotateRight } from '@jotforminc/svg-icons';\nimport { t, translationRenderer } from '@jotforminc/translation';\nimport { Button, Checkbox, InputText } from '@jotforminc/magnet';\n\nimport ListFormItem from '../ListFormItem';\nimport {\n COMPLETED_AFTER_MIGRATION, MIGRATE_WITH_SUBMISSIONS, NO_RESULTS_FOUND, REFRESH_FORMS, SELECT_ALL_NUMBER_OF_FORMS, WILL_REFRESH_YOUR_FORMS\n} from '../../constants/texts';\nimport { useWizardDispatch, useWizardState } from '../../context/wizardContext';\nimport ACTION_TYPES from '../../context/actionTypes';\nimport { migrateForm } from '../../api';\n\nconst FormMigrationStep = ({\n migrationStatus, shouldMigrateSubmissions, setShouldMigrateSubmissions, selectedForms, setSelectedForms, forms, migrationQueue, refreshForms, contextParam\n}) => {\n const wizardDispatch = useWizardDispatch();\n const { tokens } = useWizardState();\n const [searchText, setSearchText] = useState('');\n const [selectAllForms, setSelectAllForms] = useState(false);\n const filteredForms = useMemo(() => forms?.filter(q => q?.title?.toLowerCase().includes(searchText.toLowerCase())), [forms, searchText]);\n const shouldDisableSelectAll = useMemo(() => ['MIGRATING', 'FINISHED'].includes(migrationStatus), [migrationStatus, migrationQueue]);\n\n const handleSelectAllForms = () => {\n if (selectAllForms) {\n setSelectedForms([]);\n } else {\n const filteredData = forms.filter(item => {\n const matchingCriteria = migrationQueue.find(\n criteria => criteria.id === item.id\n );\n return matchingCriteria ? matchingCriteria.status !== 'SUCCESS' : true;\n });\n\n setSelectedForms(filteredData);\n }\n\n setSelectAllForms(!selectAllForms);\n };\n\n const onSpacePress = event => {\n if (event.key === ' ' || event.code === 'space') {\n event.preventDefault();\n setSelectAllForms(!selectAllForms);\n }\n };\n\n const handleRetrySingle = async form => {\n wizardDispatch({\n type: ACTION_TYPES.UPDATE_MIGRATION_STATUS,\n migrationStatus: 'MIGRATING'\n });\n wizardDispatch({\n type: ACTION_TYPES.UPDATE_MIGRATION_QUEUE,\n form: {\n ...form,\n status: 'MIGRATING'\n }\n });\n\n const status = await migrateForm({\n formId: form?.id,\n tokens,\n shouldMigrateSubmissions,\n contextParam\n });\n\n wizardDispatch({\n type: ACTION_TYPES.UPDATE_MIGRATION_QUEUE,\n form: {\n ...form,\n status: status?.message === 'Success' ? 'SUCCESS' : 'ERROR'\n }\n });\n\n wizardDispatch({\n type: ACTION_TYPES.UPDATE_MIGRATION_STATUS,\n migrationStatus: 'FINISHED'\n });\n };\n\n useEffect(() => {\n if (selectedForms?.length === forms?.length) {\n setSelectAllForms(true);\n }\n }, [selectedForms]);\n\n useEffect(() => {\n if (migrationStatus !== 'FINISHED') return;\n\n if (!selectAllForms) {\n wizardDispatch({\n type: ACTION_TYPES.UPDATE_MIGRATION_STATUS,\n migrationStatus: 'IDLE'\n });\n\n setSelectAllForms(false);\n }\n }, [migrationStatus, selectedForms]);\n\n return (\n
    \n
    \n setSearchText(e.target.value)}\n placeholder={t('Search Forms')}\n />\n {filteredForms?.length > 1 && (\n
    \n handleSelectAllForms()}\n label={translationRenderer(SELECT_ALL_NUMBER_OF_FORMS)({\n renderer1: () => forms?.length\n })}\n />\n refreshForms()}\n startIcon={IconArrowRotateRight}\n >\n {t(REFRESH_FORMS)}\n \n
    \n )}\n
    \n {filteredForms?.length > 0 && (\n <>\n
      \n {filteredForms.map(form => (\n item?.id === form?.id)?.status ?? 'WAITING'}\n migratedForm={migrationQueue?.find(item => item?.id === form?.id)?.migratedForm ?? {}}\n migrationStatus={migrationStatus}\n formDetails={form}\n selectedForms={selectedForms}\n setSelectedForms={setSelectedForms}\n handleRetrySingle={handleRetrySingle}\n />\n ))}\n
    \n {false && (\n
    \n setShouldMigrateSubmissions(!shouldMigrateSubmissions)}\n onKeyDown={onSpacePress}\n />\n
    \n {(migrationStatus !== 'IDLE' && shouldMigrateSubmissions) && (\n {t(COMPLETED_AFTER_MIGRATION)}\n )}\n
    \n
    \n )}\n \n )}\n {filteredForms?.length === 0 && (\n
    \n

    {t(NO_RESULTS_FOUND)}

    \n
    \n )}\n
    \n );\n};\n\nexport default FormMigrationStep;\n\nFormMigrationStep.propTypes = {\n forms: PropTypes.array,\n migrationStatus: PropTypes.string,\n shouldMigrateSubmissions: PropTypes.bool,\n setShouldMigrateSubmissions: PropTypes.func,\n refreshForms: PropTypes.func,\n selectedForms: PropTypes.array,\n setSelectedForms: PropTypes.bool,\n migrationQueue: PropTypes.array,\n contextParam: PropTypes.string.isRequired\n};\n\nFormMigrationStep.defaultProps = {\n forms: [],\n migrationStatus: 'IDLE',\n shouldMigrateSubmissions: false,\n setShouldMigrateSubmissions: f => f,\n refreshForms: f => f,\n selectedForms: [],\n setSelectedForms: f => f,\n migrationQueue: []\n};\n","import React from 'react';\nimport { t } from '@jotforminc/translation';\nimport { ACCESSING_FORMS } from '../../constants/texts';\n\nconst FormListingLoading = () => (\n <>\n
    \n

    {t(ACCESSING_FORMS)}

    \n \n);\n\nexport default FormListingLoading;\n","import React from 'react';\nimport { t } from '@jotforminc/translation';\nimport { IconInboxXmarkFilled } from '@jotforminc/svg-icons';\nimport { DONT_HAVE_ANY_GOOGLE_FORMS } from '../../constants/texts';\n\nconst NoFormsFound = () => (\n <>\n
    \n \n
    \n

    {t(DONT_HAVE_ANY_GOOGLE_FORMS)}

    \n \n);\n\nexport default NoFormsFound;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { IconArrowRightToBracket, IconXmark } from '@jotforminc/svg-icons';\nimport { t } from '@jotforminc/translation';\nimport { Button } from '@jotforminc/magnet';\nimport { MIGRATE_GOOGLE_FORMS, SELECT_THE_FORMS } from '../constants/texts';\n\nconst MigrateFormsModalHeading = ({ modalClose, migrationStatus }) => {\n return (\n
    \n
    \n \n
    \n
    \n

    {t(MIGRATE_GOOGLE_FORMS)}

    \n

    {t(SELECT_THE_FORMS)}

    \n
    \n modalClose()}\n startIcon={IconXmark}\n />\n
    \n );\n};\n\nexport default MigrateFormsModalHeading;\n\nMigrateFormsModalHeading.propTypes = {\n modalClose: PropTypes.func,\n migrationStatus: PropTypes.string\n};\n\nMigrateFormsModalHeading.defaultProps = {\n modalClose: f => f,\n migrationStatus: ''\n};\n","/* eslint-disable complexity */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { t } from '@jotforminc/translation';\nimport { Button } from '@jotforminc/magnet';\n\nconst MigrateFormsModalFooter = ({\n migrationStatus, formsFound, modalClose, startMigration, isFormsLoading, isAllFailed, migrationDisabled, isThereMigratedForm, from, closeCallback\n}) => {\n const isFinishedOrMigrating = Boolean((migrationStatus === 'IDLE' && isThereMigratedForm) || (migrationStatus === 'MIGRATING' && isThereMigratedForm));\n const isFinished = (migrationStatus === 'FINISHED' || isThereMigratedForm);\n\n return (\n
    \n {!formsFound && !isFormsLoading && (\n modalClose()}\n tabIndex={0}\n >\n {t('Ok')}\n \n )}\n {(migrationStatus !== 'FINISHED' && !isAllFailed) && (\n startMigration()}\n variant={isFinishedOrMigrating ? 'outline' : 'filled'}\n colorStyle={isFinishedOrMigrating ? 'secondary' : 'success'}\n disabled={isFormsLoading || migrationDisabled}\n tabIndex={0}\n loader={migrationStatus === 'MIGRATING'}\n loaderText={t('Migrating')}\n >\n {t('Migrate')}\n \n )}\n {(formsFound && (\n <>\n {isAllFailed && (\n startMigration()}\n disabled={isFormsLoading}\n tabIndex={0}\n >\n {t('Retry Migrate')}\n \n )}\n {(migrationStatus === 'FINISHED' || isThereMigratedForm) && (\n <>\n {from === 'MYFORMS' ? (\n closeCallback()}\n >\n {t('Back to My Forms')}\n \n ) : (\n \n {t('Go to My Forms')}\n \n )}\n \n )}\n \n ))}\n
    \n );\n};\n\nexport default MigrateFormsModalFooter;\n\nMigrateFormsModalFooter.propTypes = {\n from: PropTypes.string.isRequired,\n closeCallback: PropTypes.func.isRequired,\n migrationStatus: PropTypes.string,\n formsFound: PropTypes.bool,\n isFormsLoading: PropTypes.bool,\n isAllFailed: PropTypes.bool,\n modalClose: PropTypes.func,\n startMigration: PropTypes.func,\n migrationDisabled: PropTypes.bool,\n isThereMigratedForm: PropTypes.bool\n};\n\nMigrateFormsModalFooter.defaultProps = {\n migrationStatus: 'IDLE',\n formsFound: false,\n isFormsLoading: false,\n isAllFailed: false,\n modalClose: f => f,\n startMigration: f => f,\n migrationDisabled: false,\n isThereMigratedForm: false\n};\n","/* eslint-disable complexity */\nimport React, {\n useCallback, useEffect, useRef, useState\n} from 'react';\nimport PropTypes from 'prop-types';\nimport { useOnClickOutside } from '@jotforminc/hooks';\nimport isEmpty from 'lodash/isEmpty';\n\nimport '../styles/index.scss';\nimport {\n AuthorizationStep, ChangeGoogleAccountStep, FormMigrationStep, ReAuthorizeStep, MaintenanceMode\n} from './Steps';\nimport { useWizardDispatch, useWizardState } from '../context/wizardContext';\nimport { FormListingLoading, NoFormsFound } from './UI';\nimport MigrateFormsModalHeading from './MigrateFormsModalHeading';\nimport MigrateFormsModalFooter from './MigrateFormsModalFooter';\nimport ACTION_TYPES from '../context/actionTypes';\nimport { openGoogleAuthPopup } from '../utils';\nimport { disconnectGoogleAccount, getForms } from '../api';\nimport { useUserState } from '../context/userContext';\n\nconst WizardView = ({\n isOpen, setIsOpen, accountSelectorActive, setAccountSelectorActive, reauthorize, setReauthorize, contextParam, maintenanceMode, from, closeCallback\n}) => {\n const contentRef = useRef();\n const user = useUserState();\n const wizardDispatch = useWizardDispatch();\n const {\n step, isFormsLoading, callbackSucceeded, forms, migrationStatus, migrationQueue, tokens, googleEmail\n } = useWizardState();\n\n const [selectedForms, setSelectedForms] = useState([]);\n const [shouldMigrateSubmissions, setShouldMigrateSubmissions] = useState(false);\n const [popup, setPopup] = useState(null);\n const isAllFailed = !isEmpty(migrationQueue) && migrationQueue?.every(item => item?.status === 'ERROR');\n const isThereMigratedForm = !isEmpty(migrationQueue) && migrationQueue?.some(item => item?.status === 'SUCCESS');\n\n const setStep = newStep => {\n wizardDispatch({\n type: ACTION_TYPES.SET_STEP,\n step: newStep\n });\n };\n\n const setFormsLoading = loading => {\n wizardDispatch({\n type: ACTION_TYPES.SET_FORMS_LOADING,\n isFormsLoading: loading\n });\n };\n\n const modalClose = () => {\n setIsOpen(false);\n setStep(0);\n };\n\n useOnClickOutside(step === 0 ? contentRef : {}, () => modalClose());\n\n const handleOpenGoogleAuth = () => {\n const newPopup = openGoogleAuthPopup();\n setPopup(newPopup);\n setStep(1);\n setFormsLoading(true);\n };\n\n const checkPopup = useCallback(() => {\n if (popup && popup.closed) {\n setPopup(null);\n\n if (!callbackSucceeded) {\n setStep(0);\n }\n\n setFormsLoading(false);\n }\n }, [popup, callbackSucceeded]);\n\n useEffect(() => {\n const checkPopupInterval = setInterval(checkPopup, 500);\n\n return () => clearInterval(checkPopupInterval);\n }, [checkPopup]);\n\n const startMigration = () => {\n wizardDispatch({\n type: ACTION_TYPES.SET_INITIAL_QUEUE,\n queue: selectedForms.map(form => ({\n id: form?.id,\n status: 'WAITING'\n }))\n });\n wizardDispatch({\n type: ACTION_TYPES.START_MIGRATION,\n shouldMigrateSubmissions\n });\n };\n\n const refreshForms = async () => {\n try {\n const { content: newForms, responseCode } = await getForms({ tokens });\n\n if (responseCode !== 200) throw new Error();\n\n wizardDispatch({\n type: ACTION_TYPES.REFRESH_FORMS,\n forms: newForms\n });\n } catch (error) {\n console.log('[Google Forms Importer] :: Error fetching new forms');\n }\n };\n\n useEffect(() => {\n if (step === 0 && callbackSucceeded) {\n setAccountSelectorActive(true);\n }\n }, [callbackSucceeded, step]);\n\n const handleSkipAccountSelector = () => {\n setAccountSelectorActive(false);\n setStep(1);\n };\n\n const handleConnectNewAccount = async () => {\n await disconnectGoogleAccount();\n\n wizardDispatch({\n type: ACTION_TYPES.RESET_GOOGLE_CREDENTIALS\n });\n\n setAccountSelectorActive(false);\n setReauthorize(false);\n setStep(0);\n };\n\n if (user?.credentials?.account_type?.name !== 'ADMIN' && maintenanceMode && isOpen) {\n return (\n
    \n
    \n \n
    \n
    \n );\n }\n\n if (isOpen) {\n return (\n
    \n
    \n {(step === 0 && accountSelectorActive && !reauthorize) && (\n \n )}\n {(step === 0 && !accountSelectorActive && !reauthorize) && (\n \n )}\n {(step === 0 && !accountSelectorActive && reauthorize) && (\n \n )}\n {step === 1 && (\n
    \n \n
    \n {isFormsLoading && (\n \n )}\n {!isFormsLoading && !callbackSucceeded && (\n \n )}\n {(!isFormsLoading && callbackSucceeded) && (\n \n )}\n
    \n \n
    \n )}\n
    \n
    \n );\n }\n\n return <>;\n};\n\nWizardView.defaultProps = {\n contextParam: 'landing',\n from: 'LANDING',\n closeCallback: f => f\n};\n\nWizardView.propTypes = {\n isOpen: PropTypes.bool.isRequired,\n maintenanceMode: PropTypes.bool.isRequired,\n reauthorize: PropTypes.bool.isRequired,\n setIsOpen: PropTypes.func.isRequired,\n accountSelectorActive: PropTypes.bool.isRequired,\n setAccountSelectorActive: PropTypes.func.isRequired,\n setReauthorize: PropTypes.func.isRequired,\n closeCallback: PropTypes.func,\n contextParam: PropTypes.string,\n from: PropTypes.string\n};\n\nexport default WizardView;\n","import React, {\n forwardRef, useEffect, useImperativeHandle, useState\n} from 'react';\nimport { Loading } from '@jotforminc/loading';\nimport { safeJSONParse } from '@jotforminc/utils';\nimport isEmpty from 'lodash/isEmpty';\n\nimport WizardView from './components';\nimport { useWizardDispatch } from './context/wizardContext';\nimport ACTION_TYPES from './context/actionTypes';\nimport { getForms, getTokens } from './api';\n\nconst WizardWrapper = forwardRef(({ ...props }, ref) => {\n const [isOpen, setIsOpen] = useState(false);\n const [loading, setLoading] = useState(true);\n const [accountSelectorActive, setAccountSelectorActive] = useState(false);\n const [reauthorize, setReauthorize] = useState(false);\n const maintenanceMode = false;\n const wizardDispatch = useWizardDispatch();\n\n const setGoogleCallback = (forms, tokens, email) => {\n wizardDispatch({\n type: ACTION_TYPES.SET_GOOGLE_CALLBACK,\n forms,\n tokens,\n email\n });\n };\n\n useImperativeHandle(ref, () => ({\n open: () => setIsOpen(true),\n close: () => setIsOpen(false),\n setGoogleCallback: (forms, tokens, email = '') => setGoogleCallback(forms, tokens, email),\n reauthorize: set => setReauthorize(set)\n }));\n\n useEffect(() => {\n (async () => {\n if (maintenanceMode) {\n return setLoading(false);\n }\n\n const { content: { token, email } } = await getTokens();\n const parseTokens = safeJSONParse(token);\n if (!isEmpty(parseTokens) && !parseTokens?.error) {\n let forms = [];\n\n try {\n const { content } = await getForms({ tokens: parseTokens });\n\n if (isEmpty(content)) throw new Error('No forms found');\n\n forms = content;\n } catch (error) {\n console.log('[GL Forms Importer] :: Cannot get forms', error);\n return setLoading(false);\n }\n\n wizardDispatch({\n type: ACTION_TYPES.SET_GOOGLE_CALLBACK,\n forms,\n tokens: parseTokens,\n googleEmail: email\n });\n\n setAccountSelectorActive(true);\n }\n\n setLoading(false);\n })();\n }, []);\n\n if (loading) {\n return isOpen ? : <>;\n }\n\n return (\n \n );\n});\n\nexport default WizardWrapper;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport UserProvider, { UserContext } from './context/userContext';\nimport WizardWrapper from './WizardWrapper';\nimport WizardProvider from './context/wizardContext';\n\nconst GoogleFormsImporterWizard = ({\n wizardRef, user, from, ...rest\n}) => {\n return (\n \n \n {({ userState }) => (\n \n \n \n )}\n \n \n );\n};\n\nGoogleFormsImporterWizard.propTypes = {\n user: PropTypes.object,\n wizardRef: PropTypes.object,\n from: PropTypes.string\n};\n\nGoogleFormsImporterWizard.defaultProps = {\n user: {},\n wizardRef: {},\n from: 'LANDING'\n};\n\nexport default GoogleFormsImporterWizard;\n","export const stateClass = (action, className) => {\n return global.document.body.classList[action](className);\n};\n\nexport const truncate = (text, length) => { return text.length > length ? `${text.substr(0, length - 3).trim()}...` : text; };\n\n// Minimal fetch\n// https://github.com/developit/unfetch\nexport const fetch = (url, options) => {\n /* eslint-disable */\n options = options || {};\n return new Promise( (resolve, reject) => {\n const request = new XMLHttpRequest();\n const keys = [];\n const all = [];\n const headers = {};\n\n const response = () => ({\n ok: (request.status/100|0) == 2, // 200-299\n statusText: request.statusText,\n status: request.status,\n url: request.responseURL,\n text: () => Promise.resolve(request.responseText),\n json: () => Promise.resolve(JSON.parse(request.responseText)),\n blob: () => Promise.resolve(new Blob([request.response])),\n clone: response,\n headers: {\n keys: () => keys,\n entries: () => all,\n get: n => headers[n.toLowerCase()],\n has: n => n.toLowerCase() in headers\n }\n });\n\n request.open(options.method || 'get', url, true);\n\n request.onload = () => {\n request.getAllResponseHeaders().replace(/^(.*?):[^\\S\\n]*([\\s\\S]*?)$/gm, (m, key, value) => {\n keys.push(key = key.toLowerCase());\n all.push([key, value]);\n headers[key] = headers[key] ? `${headers[key]},${value}` : value;\n });\n resolve(response());\n };\n\n request.onerror = reject;\n\n request.withCredentials = options.credentials == 'include';\n\n for (const i in options.headers) {\n request.setRequestHeader(i, options.headers[i]);\n }\n\n request.send(options.body || null);\n });\n /* eslint-enable */\n};\n\nexport const eventPath = evt => {\n const path = (evt.composedPath && evt.composedPath()) || evt.path;\n const { target } = evt;\n\n if (path != null) {\n // Safari doesn't include Window, but it should.\n return (!path.includes(window)) ? path.concat(window) : path;\n }\n\n if (target === window) {\n return [window];\n }\n\n function getParents(node, memo = []) {\n const { parentNode } = node;\n\n if (!parentNode) {\n return memo;\n }\n\n return getParents(parentNode, memo.concat(parentNode));\n }\n\n return [target].concat(getParents(target), window);\n};\n\nexport const getFileExtension = url => url.split(/[#?]/)[0].split('.').pop().trim();\n","import React, { createRef } from 'react';\nimport {\n string, func, objectOf, object, bool\n} from 'prop-types';\nimport { IconExclamationCircleFilled } from '@jotforminc/svg-icons';\nimport {\n serialize, classNames, handleCustomNavigation, pushDataLayer,\n trackDataForMobile\n} from '@jotforminc/utils';\nimport {\n WizardBody,\n WizardList,\n WizardItem,\n WizardListItem,\n WizardFooter,\n WizardHeader as Header,\n Button,\n TextInput,\n DropdownInput,\n LoadingState\n} from '@jotforminc/wizard-shared';\nimport { Loading } from '@jotforminc/loading';\nimport GoogleFormsImporterWizard from '@jotforminc/gl-forms-importer';\nimport { RESOURCE_TYPES, ResourcePicker } from '@jotforminc/resource-picker';\nimport {\n truncate, fetch, getFileExtension\n} from '../../core/utils';\nimport texts from '../../core/texts';\n\nimport IconImportFromWeb from '../../assets/svg/iconImportFromWeb.svg';\nimport IconImportCloneExisting from '../../assets/svg/iconImportCloneExisting.svg';\nimport IconImportPDFForm from '../../assets/svg/iconImportPDFForm.svg';\n\nexport default class ImportForm extends React.Component {\n glFormsImporterRef = null;\n\n constructor(props) {\n super(props);\n\n this.state = {\n importFormType: null,\n importPayload: '',\n statusMessage: { message: '', type: '' },\n disableCreateFormButton: false,\n displayLoadingState: false,\n loadingForms: false,\n formsList: []\n };\n\n this.glFormsImporterRef = createRef();\n this.setImportFormType = this.setImportFormType.bind(this);\n this.setImportPayload = this.setImportPayload.bind(this);\n this.setMessage = this.setMessage.bind(this);\n this.clearMessage = this.clearMessage.bind(this);\n this.createForm = this.createForm.bind(this);\n this.handleCreateForm = this.handleCreateForm.bind(this);\n this.handleLoadFormsList = this.handleLoadFormsList.bind(this);\n this.setFormListOptions = this.setFormListOptions.bind(this);\n this.handleImportPayload = this.handleImportPayload.bind(this);\n this.handleBackButtonClick = this.handleBackButtonClick.bind(this);\n this.handleTitle = this.handleTitle.bind(this);\n this.handleSubTitle = this.handleSubTitle.bind(this);\n }\n\n handleBackButtonClick() {\n const { setView, forms } = this.props;\n const { importFormType, formsList } = this.state;\n\n if (importFormType === 'cloneExisting') {\n this.setState({ importFormType: null });\n } else {\n setView('Main', { forms: forms && forms.length ? forms : formsList });\n }\n }\n\n handleTitle() {\n const { importFormType, loadingForms } = this.state;\n\n if (importFormType === 'cloneExisting' && !loadingForms) {\n return texts.CLONE_AN_EXISTING;\n }\n return texts.IMPORT_FORM;\n }\n\n handleSubTitle() {\n const { importFormType, loadingForms } = this.state;\n\n if (importFormType === 'cloneExisting' && !loadingForms) {\n return texts.CLONE_AN_EXISTING_SUBTITLE;\n }\n return texts.IMPORT_FORM_SUBTITLE;\n }\n\n handleCreateForm() {\n const { importPayload } = this.state;\n const { importPDFForm } = this.props;\n if (getFileExtension(importPayload) === 'pdf') {\n importPDFForm();\n } else {\n this.createForm();\n }\n }\n\n handleImportPayload(importPayload) {\n this.setState({ importPayload });\n }\n\n async handleLoadFormsList() {\n const {\n forms, fetchFormsCallback, fetchFormsSuccess\n } = this.props;\n const { formsList } = this.state;\n\n if (formsList && formsList.length) {\n return;\n }\n\n let formListOptions = [];\n\n if (forms && forms.length) {\n formListOptions = forms;\n } else {\n this.setState({ loadingForms: true });\n const fetchedForms = await fetchFormsCallback();\n formListOptions = fetchedForms || [];\n if (fetchedForms && fetchedForms.length) {\n fetchFormsSuccess(fetchedForms);\n }\n }\n\n this.setState({ formsList: formListOptions }, () => { this.setState({ loadingForms: false }); });\n }\n\n setFormListOptions(forms) {\n return forms.length ? forms.map(form => {\n const {\n id,\n title,\n updated_at: updatedAt,\n created_at: createdAt\n } = form;\n\n return {\n value: id,\n text: truncate(title, 80),\n updatedAt,\n createdAt\n };\n }).sort((firstDate, secondDate) => {\n return new Date(secondDate.updatedAt || secondDate.createdAt).getTime() - new Date(firstDate.updatedAt || firstDate.createdAt).getTime();\n }) : [];\n }\n\n setImportFormType(type) {\n this.clearMessage();\n this.setState({\n importFormType: type,\n // Clear payload to disable Create Form Button -> https://www.jotform.com/ticket-categorize/3346215\n importPayload: ''\n });\n }\n\n setImportPayload(e) {\n const { target: { value = '' } = {} } = e;\n const { importFormType } = this.state;\n const { actionLogger } = this.props;\n\n if (actionLogger && importFormType === 'cloneExisting') {\n actionLogger({\n action: 'importFormFromExistingChange',\n target: '.jfWizard-input-select'\n });\n }\n\n this.setState({ importPayload: value });\n }\n\n get isCreateFormButtonDisabled() {\n const {\n importFormType,\n importPayload,\n disableCreateFormButton\n } = this.state;\n\n switch (importFormType) {\n case 'fromWebPage':\n case 'cloneExisting':\n return disableCreateFormButton || !importPayload.length;\n default:\n return true;\n }\n }\n\n get renderFooter() {\n const { importFormType } = this.state;\n\n return importFormType && (\n \n \n \n );\n }\n\n get renderWizardFooter() {\n const { importFormType } = this.state;\n\n switch (importFormType) {\n case 'fromWebPage':\n return this.fromWebPageInput;\n case 'cloneExisting':\n return null;\n default:\n return null;\n }\n }\n\n get fromWebPageInput() {\n return (\n \n {this.renderLoadingState}\n \n );\n }\n\n get cloneExistingInput() {\n const { formsList } = this.state;\n return (\n \n {this.renderLoadingState}\n \n );\n }\n\n get renderLoadingState() {\n const { displayLoadingState } = this.state;\n\n return displayLoadingState && {texts.GENERATING_FORM};\n }\n\n get renderMessageIcon() {\n const { statusMessage: { type } } = this.state;\n const MessageIcons = {\n Warning: \n };\n\n return MessageIcons[type] && (\n
    {MessageIcons[type]}
    \n );\n }\n\n get renderMessage() {\n const { statusMessage: { message, type } } = this.state;\n return (\n
    \n {this.renderMessageIcon}\n
    \n {message}\n
    \n
    \n );\n }\n\n setMessage(message, errorType = null) {\n const { statusMessage: { type } = {} } = this.state;\n this.setState({ statusMessage: { message, type: errorType || type } });\n }\n\n clearMessage() {\n this.setState({ statusMessage: { message: '', type: '' } });\n }\n\n attachGLImporterToWindow() {\n if (window.glFormsImporter) return;\n\n window.glFormsImporter = {};\n window.glFormsImporter.googleCallback = this.glFormsImporterRef.current?.setGoogleCallback;\n window.glFormsImporter.reauthorize = this.glFormsImporterRef.current?.reauthorize;\n }\n\n createForm() {\n this.clearMessage();\n this.disableCreateFormButton(true);\n this.displayLoadingState(true);\n\n const {\n actionLogger, onFormCreate, teamID, creationLogger\n } = this.props;\n const { importFormType, importPayload } = this.state;\n const fetchURL = '/server.php';\n\n if (creationLogger) {\n creationLogger(`import-${importFormType}`);\n }\n\n switch (importFormType) {\n case 'fromWebPage':\n if (actionLogger) {\n actionLogger({\n action: 'click',\n target: `continue - fromURL - ${importPayload}`\n });\n }\n\n if (typeof importPayload === 'string' && /https:\\/\\/(docs\\.google\\.com\\/forms|forms\\.gle\\/)/.test(importPayload)) {\n this.attachGLImporterToWindow();\n this.disableCreateFormButton(false);\n this.displayLoadingState(false);\n return this.glFormsImporterRef.current?.open();\n }\n\n fetch(fetchURL, {\n method: 'POST',\n body: serialize({\n action: 'getImportedForm',\n url: importPayload,\n from: 'MYFORMS',\n preserveFormType: '1',\n teamID\n }),\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded'\n }\n }).then(r => r.json()).then(data => {\n const {\n success, error, id, newID\n } = data;\n\n if (success && (id || newID)) {\n if (actionLogger) {\n actionLogger({\n action: 'importFormFromWebPageSuccess',\n target: (id || newID)\n });\n\n actionLogger({\n action: 'formCreationCompleted',\n target: (id || newID)\n });\n }\n\n pushDataLayer({ method: texts.FROM_A_WEBPAGE, event: 'create_form_via_import' });\n onFormCreate(id || newID);\n } else {\n this.setMessage(error, 'Warning');\n global.console.warn(error);\n\n if (actionLogger) {\n actionLogger({\n action: 'importFormFromWebPageFailed',\n target: (id || newID)\n });\n }\n }\n\n this.displayLoadingState(false);\n this.disableCreateFormButton(false);\n });\n return;\n case 'cloneExisting':\n fetch(fetchURL, {\n method: 'POST',\n body: serialize({\n action: 'cloneForm',\n formID: importPayload,\n preserveFormType: '1'\n }),\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n ...(teamID && { 'jf-team-id': teamID })\n }\n }).then(r => r.json()).then(data => {\n const { success, error, newID } = data;\n\n if (success && newID) {\n if (actionLogger) {\n actionLogger({\n action: 'importFormFromExistingSuccess',\n target: newID\n });\n\n actionLogger({\n action: 'formCreationCompleted',\n target: newID\n });\n }\n\n pushDataLayer({ method: texts.CLONE_AN_EXISTING, event: 'create_form_via_import' });\n onFormCreate(newID);\n } else {\n if (actionLogger) {\n actionLogger({\n action: 'importFormFromExistingFailed',\n target: newID\n });\n }\n\n this.setMessage(texts.IMPORT_FAILED_PLEASE_TRY_AGAIN, 'Warning');\n global.console.warn(error);\n\n this.displayLoadingState(false);\n this.disableCreateFormButton(false);\n }\n });\n return;\n default:\n this.setMessage(texts.IMPORT_FAILED_PLEASE_TRY_AGAIN, 'Warning');\n this.displayLoadingState(false);\n this.disableCreateFormButton(false);\n }\n }\n\n disableCreateFormButton(disabled) {\n this.setState({ disableCreateFormButton: disabled });\n }\n\n displayLoadingState(display) {\n this.setState({ displayLoadingState: display });\n }\n\n isActive(type) {\n const { importFormType } = this.state;\n return importFormType === type && 'isActive';\n }\n\n render() {\n const {\n setView, forms, actionLogger, isTestVarForSmartPDF, importPDFForm, isFormPickerInfiniteLoadingEnabled, fetchInfiniteFormsCallback\n } = this.props;\n const {\n importFormType, importPayload, formsList, loadingForms\n } = this.state;\n\n return (\n <>\n \n \n
    \n \n {loadingForms && }\n {importFormType === 'cloneExisting' && !loadingForms ? (\n \n ) : (\n \n {\n this.setImportFormType('fromWebPage');\n trackDataForMobile('importForm', 'webPage');\n }}\n icon={}\n text={texts.FROM_A_WEBPAGE}\n subText={texts.FROM_A_WEBPAGE_SUBTITLE}\n />\n {\n this.setImportFormType('cloneExisting');\n await this.handleLoadFormsList();\n trackDataForMobile('importForm', 'clone');\n }}\n icon={}\n text={texts.CLONE_AN_EXISTING}\n subText={texts.CLONE_AN_EXISTING_SUBTITLE}\n />\n {!isTestVarForSmartPDF && (\n {\n importPDFForm();\n trackDataForMobile('importForm', 'pdf');\n }}\n icon={}\n text={texts.IMPORT_PDF_FORM}\n subText={texts.IMPORT_PDF_FORM_SUBTITLE}\n />\n )}\n \n )}\n \n
    \n {this.renderWizardFooter}\n {this.renderMessage}\n
    \n
    \n
    \n {this.renderFooter}\n handleCustomNavigation('/myforms', '_self', true)}\n from='MYFORMS'\n />\n \n );\n }\n}\n\nImportForm.propTypes = {\n setView: func,\n forms: objectOf(object),\n fetchFormsCallback: func,\n fetchFormsSuccess: func,\n actionLogger: func,\n onFormCreate: func,\n teamID: string,\n creationLogger: func,\n isTestVarForSmartPDF: bool,\n importPDFForm: func,\n isFormPickerInfiniteLoadingEnabled: bool,\n fetchInfiniteFormsCallback: func\n};\n\nImportForm.defaultProps = {\n setView: f => f,\n forms: {},\n fetchFormsCallback: f => f,\n fetchFormsSuccess: f => f,\n actionLogger: f => f,\n onFormCreate: (id, isPDF) => { handleCustomNavigation(`/build/${id}${isPDF ? '#importPDF' : ''}`, '_self'); },\n teamID: null,\n creationLogger: f => f,\n isTestVarForSmartPDF: false,\n importPDFForm: f => f,\n isFormPickerInfiniteLoadingEnabled: false,\n fetchInfiniteFormsCallback: f => f\n};\n","import React from 'react';\nimport { func, string } from 'prop-types';\nimport { classNames, trackDataForMobile } from '@jotforminc/utils';\nimport {\n WizardBody,\n WizardList,\n WizardItem,\n WizardListItem,\n WizardHeader as Header\n} from '@jotforminc/wizard-shared';\n\nimport texts from '../../core/texts';\nimport IconClassicForm from '../../assets/svg/iconClassicForm.svg';\nimport IconCardForm from '../../assets/svg/iconCardForm.svg';\n\nexport default class FormTypeSelect extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n isLoading: null\n };\n }\n\n onCreateForm(formType) {\n const { onClickItem } = this.props;\n this.setState({ isLoading: formType });\n onClickItem(formType);\n }\n\n render() {\n const {\n setView, className, onBackButtonClick, actionLogger\n } = this.props;\n\n const {\n isLoading\n } = this.state;\n\n return (\n \n \n
    \n \n \n {\n this.onCreateForm('ClassicForm');\n trackDataForMobile('formLayout', 'classic');\n }}\n icon={}\n text={texts.CLASSIC_FORM}\n subText={texts.CLASSIC_FORM_SUBTITLE}\n isLoading={isLoading === 'ClassicForm'}\n />\n {\n this.onCreateForm('CardForm');\n trackDataForMobile('formLayout', 'card');\n }}\n icon={}\n text={texts.CARD_FORM}\n subText={texts.CARD_FORM_SUBTITLE}\n isLoading={isLoading === 'CardForm'}\n />\n \n \n
    \n
    \n );\n }\n}\n\nFormTypeSelect.propTypes = {\n onClickItem: func,\n setView: func,\n actionLogger: func,\n onBackButtonClick: func,\n className: string\n};\n\nFormTypeSelect.defaultProps = {\n actionLogger: f => f,\n onClickItem: f => f,\n setView: f => f,\n onBackButtonClick: null,\n className: null\n};\n","import React from 'react';\nimport { func } from 'prop-types';\n\nimport { handleCustomNavigation } from '@jotforminc/utils';\n\nimport FormTypeSelect from './FormTypeSelect';\n\nexport default class ImportPDFForm extends React.Component {\n constructor(props) {\n super(props);\n\n this.backToImportForm = this.backToImportForm.bind(this);\n this.importForm = this.importForm.bind(this);\n }\n\n getImportFormURL(importFormType) {\n switch (importFormType) {\n case 'ClassicForm':\n case 'CardForm':\n return '/build#card#importPDF';\n default:\n return '/build#importPDF';\n }\n }\n\n importForm(importFormType) {\n handleCustomNavigation(this.getImportFormURL(importFormType), '_self');\n }\n\n backToImportForm() {\n const { setView } = this.props;\n setView('ImportForm');\n }\n\n render() {\n const { setView } = this.props;\n\n return (\n \n );\n }\n}\n\nImportPDFForm.propTypes = {\n setView: func\n};\n\nImportPDFForm.defaultProps = {\n setView: f => f\n};\n","import React from 'react';\nimport { func, shape, string } from 'prop-types';\nimport { serialize, handleCustomNavigation, pushDataLayer } from '@jotforminc/utils';\n\nimport { fetch } from '../../core/utils';\nimport FormTypeSelect from './FormTypeSelect';\n\nexport default class StartFromScratch extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n isCreatingForm: false\n };\n\n this.disableCreateFormButtons = this.disableCreateFormButtons.bind(this);\n this.createForm = this.createForm.bind(this);\n this.reloadPageOnCache = event => {\n if (event.persisted) {\n window.location.reload();\n }\n };\n }\n\n componentWillUnmount() {\n window.removeEventListener('pageshow', this.reloadPageOnCache);\n }\n\n createForm(createFormType) {\n const { isCreatingForm } = this.state;\n const {\n currentFolder, actionLogger, onFormCreate, teamID, folderID, creationLogger\n } = this.props;\n const fetchURL = '/API/form/new';\n if (isCreatingForm) { return; }\n\n this.disableCreateFormButtons();\n if (creationLogger) {\n creationLogger(`startFromScratch-${createFormType}`);\n }\n\n switch (createFormType) {\n case 'ClassicForm':\n fetch(`${fetchURL}?${serialize({\n folder: currentFolder || folderID\n })}`, { headers: teamID ? { 'jf-team-id': teamID } : {} }).then(r => r.json()).then(data => {\n const { content: { id } } = data;\n\n if (actionLogger) {\n actionLogger({\n action: 'formCreationCompleted',\n target: id\n });\n }\n pushDataLayer({ method: 'Classic Form', event: 'create_form_from_scratch' });\n onFormCreate(id);\n });\n break;\n case 'CardForm':\n fetch(`${fetchURL}?${serialize({\n formType: 'cardForm',\n themeId: '59647bf8cf3bfe639c0b7cb1',\n folder: currentFolder\n })}`, { headers: teamID ? { 'jf-team-id': teamID } : {} }).then(r => r.json()).then(data => {\n const { content: { id } } = data;\n\n if (actionLogger) {\n actionLogger({\n action: 'formCreationCompleted',\n target: id\n });\n }\n pushDataLayer({ method: 'Card Form', event: 'create_form_from_scratch' });\n onFormCreate(id);\n });\n break;\n default:\n break;\n }\n }\n\n disableCreateFormButtons() {\n window.addEventListener('pageshow', this.reloadPageOnCache);\n this.setState({\n isCreatingForm: true\n });\n }\n\n render() {\n const {\n setView, actionLogger, onBackButtonClick, viewProps\n } = this.props;\n const { onBackButtonClick: onBackButtonClickFromViewProps } = viewProps;\n\n return (\n \n );\n }\n}\n\nStartFromScratch.propTypes = {\n setView: func,\n currentFolder: string,\n folderID: string,\n actionLogger: func,\n onFormCreate: func,\n onBackButtonClick: func,\n teamID: string,\n viewProps: shape({\n onBackButtonClick: func\n }),\n creationLogger: func\n};\n\nStartFromScratch.defaultProps = {\n setView: f => f,\n currentFolder: null,\n folderID: null,\n actionLogger: null,\n onBackButtonClick: null,\n onFormCreate: id => { handleCustomNavigation(`/build/${id}`, '_self'); },\n teamID: null,\n viewProps: {\n onBackButtonClick: null\n },\n creationLogger: f => f\n};\n","import React, { useCallback, useEffect } from 'react';\nimport {\n bool, func, shape\n} from 'prop-types';\n\nimport {\n WizardHeader as Header,\n WizardBody,\n WizardItem,\n WizardList,\n WizardListItem\n} from '@jotforminc/wizard-shared';\nimport { getUrlParameter, trackDataForMobile } from '@jotforminc/utils';\nimport texts from '../../core/texts';\nimport IconCreateSignDocument from '../../assets/iconCreateSignDocument.svg';\nimport IconCreateFromTemplate from '../../assets/iconCreateFromTemplate2.svg';\nimport IconSelectDocument from '../../assets/iconSelectDocument.svg';\n\nconst Main = ({\n setView,\n navigation,\n fromMyForms = false,\n isMixAssetCreationModal,\n onHide,\n backToMixModalActionLogger\n}) => {\n const showTemplates = window.JOTFORM_ENV !== 'ENTERPRISE';\n const templatesAllowedEpServers = ['userresearch.jotform.com'];\n const hasIntegration = getUrlParameter('integration').length > 0;\n\n useEffect(() => {\n if (!templatesAllowedEpServers.includes(window.location.host) && !showTemplates) {\n setView(navigation.FileUpload || 'FileUpload', {\n backButtonVisible: fromMyForms || isMixAssetCreationModal,\n onBack: () => {\n if (isMixAssetCreationModal) {\n onHide();\n } else {\n setView('Main');\n }\n }\n });\n }\n }, []);\n\n const handleItemClick = useCallback(type => {\n const viewProps = {\n backButtonVisible: true,\n onBack: () => {\n setView((navigation.Main || 'Main'));\n }\n };\n\n setView(type, viewProps);\n }, []);\n\n return (\n \n {\n if (isMixAssetCreationModal) {\n onHide();\n } else {\n setView('Main');\n }\n }}\n backToMixModalActionLogger={backToMixModalActionLogger}\n />\n
    \n \n \n {hasIntegration && (\n }\n text={texts.JOTFORM_SIGN_SELECT_DOCUMENT_TEXT}\n subText={texts.JOTFORM_SIGN_SELECT_DOCUMENT_SUBTEXT}\n onClick={() => {\n handleItemClick(navigation.DocumentSelect || 'DocumentSelect');\n }}\n />\n )}\n }\n text={texts.JOTFORM_SIGN_UPLOAD_TEXT}\n subText={texts.JOTFORM_SIGN_UPLOAD_SUBTEXT}\n onClick={() => {\n handleItemClick(navigation.FileUpload || 'FileUpload');\n trackDataForMobile('signDocument', 'uploadDocument');\n }}\n data-test-id=\"cw-upload-document\"\n />\n {(showTemplates || templatesAllowedEpServers.includes(window.location.host)) && (\n }\n text={texts.JOTFORM_SIGN_TEMPLATE_TEXT}\n subText={texts.JOTFORM_SIGN_TEMPLATE_SUBTEXT}\n onClick={() => {\n handleItemClick(navigation.UseTemplate || 'UseTemplate');\n trackDataForMobile('signDocument', 'useTemplate');\n }}\n />\n )}\n \n \n
    \n
    \n );\n};\n\nMain.propTypes = {\n setView: func.isRequired,\n navigation: shape({\n FileUpload: func,\n UseTemplate: func,\n DocumentSelect: func\n }),\n fromMyForms: bool,\n isMixAssetCreationModal: bool,\n onHide: func,\n backToMixModalActionLogger: func\n};\n\nMain.defaultProps = {\n navigation: {},\n fromMyForms: false,\n isMixAssetCreationModal: false,\n onHide: f => f,\n backToMixModalActionLogger: f => f\n};\n\nexport default Main;\n","import React from 'react';\nimport { func, shape } from 'prop-types';\n\nimport Main from '../../../CreateNewDocumentWizard/components/Navigation/Main';\n\nconst CreateSignDocumentMain = props => {\n return
    ;\n};\n\nCreateSignDocumentMain.propTypes = {\n setView: func,\n user: shape({})\n};\n\nCreateSignDocumentMain.defaultProps = {\n setView: f => f,\n user: {}\n};\n\nexport default CreateSignDocumentMain;\n","import { UserState } from '../typings/state';\n\n/* eslint-disable max-len */\nexport const createInitial = (user: UserState) => {\n const reducers = {\n promptValue: '',\n form: {\n form_id: '',\n url: ''\n },\n messages: [],\n manual_changes: null,\n formProperties: {},\n user,\n fullstoryUrl: ''\n };\n return reducers;\n};\n\nexport const CustomActionTypes = [\n {\n id: 'add-logo',\n text: 'Add a logo to your form'\n },\n {\n id: 'change-tone-of-voice',\n text: 'Change tone of voice'\n },\n {\n id: 'get-fonts',\n text: 'Change Font'\n }\n];\n\nexport const AIActionTypes = {\n CREATE_AI_FORM: 'CREATE_AI_FORM',\n ADD_MESSAGE_TO_CHAT: 'ADD_MESSAGE_TO_CHAT',\n UNDO_LAST_ACTION: 'UNDO_LAST_ACTION',\n SHOW_ERROR_MESSAGE: 'SHOW_ERROR_MESSAGE',\n SET_FULLSTORY_URL: 'SET_FULLSTORY_URL'\n} as const;\n\nexport const mockFormProps = {\n form_id: '240242090608044',\n url: 'https://form.jotform.com/240242090608044',\n messages: []\n};\n\nexport const MessageTypes = {\n // It's only user's entered prompt. It's use for ai prompt history\n USER_MESSAGE: 'USER_MESSAGE',\n // Only user action, it's exist in ai message histories\n USER_ACTION: 'USER_ACTION',\n ASSISTANT: 'ASSISTANT',\n TOOL: 'TOOL',\n CUSTOM: 'CUSTOM',\n ERROR: 'ERROR',\n RETRYABLE_ERROR: 'RETRYABLE_ERROR',\n UNDO: 'UNDO',\n HELP: 'HELP',\n WELCOME: 'WELCOME'\n};\n\nexport const ExampleBuildPrompts = [\n 'I want to build a registration form for student events',\n 'I want to build an order form for my cupcake store',\n 'I want to build a feedback form for my customers',\n 'I want to build a job application form for my company'\n];\n\nexport const ExamplePromptBoxes = [\n {\n slug: 'Registration Form',\n prompt: 'Create a course registration form suitable for any school or institution.'\n },\n {\n slug: 'Job Application Form',\n prompt: 'Develop a basic job application form that serves as a one-page solution for collecting essential information from applicants. This form should encompass personal details, educational background, and reference information. You can use your imagination to generate more fields related to the topic.'\n },\n {\n slug: 'Feedback Form',\n prompt: 'Create a client feedback form to gather valuable insights from my clients.'\n },\n {\n slug: 'Appointment Form',\n prompt: 'Develop an appointment request form tailored for medical practices. This form should collect information needed to schedule health appointments, such as a patient\\'s name, address, and contact details.'\n }\n];\n\nexport const ExamplePrompts = [\n {\n slug: 'Course Registration Form',\n prompt: 'Create a course registration form suitable for any school or institution.'\n },\n {\n slug: 'Job Application Form',\n prompt: 'Develop a basic job application form that serves as a one-page solution for collecting essential information from applicants. This form should encompass personal details, educational background, and reference information. You can use your imagination to generate more fields related to the topic.'\n },\n {\n slug: 'Client Feedback Form',\n prompt: 'Create a client feedback form to gather valuable insights from my clients.'\n },\n {\n slug: 'Appointment Request Form',\n prompt: 'Develop an appointment request form tailored for medical practices. This form should collect information needed to schedule health appointments, such as a patient\\'s name, address, and contact details.'\n },\n {\n slug: 'Math Quiz',\n prompt: 'Generate a math quiz form to conduct quizzes online. Customize the form to include various math questions, sections, or topics that align with high school curriculum.'\n },\n {\n slug: 'Summer Camp Consent Form',\n prompt: 'Create a summer camp permission or consent form for students. Add a signature field for parents\\' consent.'\n },\n {\n slug: 'Beauty Clinic Feedback Form',\n prompt: 'I run a beauty clinic. Create a feedback form to collect my customers\\' comments, suggestions, questions, and complaints.'\n },\n {\n slug: 'Hotel Booking Form',\n prompt: 'Generate a hotel booking form for my boutique hotel.'\n },\n {\n slug: 'Volunteer Application Form',\n prompt: 'My nonprofit organization needs a volunteer application form that includes a background check.'\n },\n {\n slug: 'Clinic Appointment Form',\n prompt: 'Create a comprehensive appointment form for my clinic.'\n },\n {\n slug: 'Video Contest Application Form',\n prompt: 'Generate a form to accept applications to my video contest. The form should have fields for application details and a section to allow applicants to upload up to 3 videos. Applicants should pass a CAPTCHA to submit.'\n },\n {\n slug: 'Tattoo Studio Contact Form',\n prompt: 'I need a contact form for my tattoo studio. My communication tone is friendly and sarcastic, so the form should be as well.'\n },\n {\n slug: 'Identity Verification Form',\n prompt: 'Develop an online identity verification form for my company to conduct thorough identity checks on new employees. The form should gather essential information to ensure the accuracy and legitimacy of the provided details.'\n },\n {\n slug: 'Mobile App Satisfaction Survey',\n prompt: 'Client satisfaction survey for my mobile app.'\n }\n];\n\nexport const ASSISTANT_ROLES: string[] = [\n MessageTypes.ASSISTANT,\n MessageTypes.CUSTOM,\n MessageTypes.UNDO,\n MessageTypes.ERROR,\n MessageTypes.RETRYABLE_ERROR,\n MessageTypes.HELP,\n MessageTypes.WELCOME\n];\n\nexport const EXCEPTIONAL_ASSISTANT_ROLES: string[] = [\n MessageTypes.UNDO,\n MessageTypes.ERROR,\n MessageTypes.RETRYABLE_ERROR\n];\n\nexport const PROMT_PROPS = {\n MAX_LENGTH: 500\n};\n","import { RequestLayer } from '@jotforminc/request-layer';\n\nconst apiResponseInterceptor = (ctx: any) => {\n const { resp } = ctx;\n\n if (resp && resp.data.message && typeof resp.data.message.responseCode === 'number' && (resp.data.message.responseCode < 200 || resp.data.message.responseCode > 299)) {\n ctx.result = Promise.reject(new Error(resp?.data?.message));\n }\n};\n\nexport const requestLayer = new RequestLayer(\n '/ai-builder/FORM', {\n interceptorConfig: {\n customResponseInterceptors: [apiResponseInterceptor],\n disableResponseNormalizer: true,\n shouldCache: true,\n logCachePayload: {\n projectName: 'ai-builder'\n }\n }\n }\n);\n","/* eslint-disable camelcase */\n\nimport { requestLayer } from './requestLayer';\nimport type {\n ApiCallWithLayer,\n ChangeUserSettings,\n CreateAIFormResponse,\n CreateAIFormType,\n HTTPMethods,\n LogActions,\n SaveFullStorySessionURL,\n SendAIFormBuilderBetaAgreementSubmission\n} from '../typings/api';\n\nexport const apiCallWithLayer: ApiCallWithLayer = ({\n path, method = 'get', data = {}, params = {}, options = {}, callback = ({ data: responseData }) => { console.log({ responseData }); return responseData; }\n}) => {\n return requestLayer[method.toLocaleLowerCase() as HTTPMethods](path, data, {\n params: { ...params },\n ...options,\n headers: {\n ...options?.headers\n }\n }).then(response => callback(response as any)) as any;\n};\n\nexport const createAIForm: CreateAIFormType = ({ prompt = '' }) => {\n const urlParams = new URLSearchParams(window.location.search);\n const phpBaseParam = urlParams.get('usePhpBase');\n\n return apiCallWithLayer({\n path: `create${phpBaseParam ? `?usePhpBase=${phpBaseParam}` : ''}`,\n method: 'post',\n data: {\n message: prompt\n }\n });\n};\n\nexport const sendAIFormBuilderBetaAgreementSubmission: SendAIFormBuilderBetaAgreementSubmission = user => {\n const formData = new FormData();\n formData.append('formID', '240313656520953');\n formData.append('q6_fullName', user.name || '');\n formData.append('q5_email', user.email || '');\n formData.append('q4_username', user.username || '');\n formData.append('q7_betaAgreement', '1.0');\n\n return apiCallWithLayer({\n path: 'https://www.jotform.com/submit.php',\n method: 'post',\n data: formData,\n options: { withCredentials: false }\n });\n};\n\nexport const changeUserSettings: ChangeUserSettings = data => {\n const formData = new FormData();\n Object.entries(data).forEach(([key, value]: [string, any]) => formData.append(key, value));\n\n return apiCallWithLayer({\n path: '/API/user/settings',\n method: 'post',\n data: formData\n });\n};\n\nexport const logActions: LogActions = ({ action, target }) => {\n return apiCallWithLayer({\n path: `/ai-builder/actions/${action}/${target}`\n });\n};\n\nexport const saveFullStorySessionURL: SaveFullStorySessionURL = ({ formID, fullstoryUrl }) => apiCallWithLayer({\n path: `session/${formID}`,\n method: 'post',\n data: {\n url: fullstoryUrl\n }\n});\n","import { useState, useEffect, Dispatch } from 'react';\nimport Tracking from '@jotforminc/tracking';\nimport { AIActionTypes } from '../constants';\nimport { DispatchAIBuilderAction } from '../context';\nimport { UserState } from '../typings/state';\n\nconst fsVars = {\n aiFormBuilderIncremental_bool: true\n};\n\nexport const useFullstory = ({ user, dispatchAIBuilder }: { user: UserState, dispatchAIBuilder: Dispatch }) => {\n const [parentUsesFS, setParentUsesFS] = useState(true);\n const isAICVariant = (window.isAICVariant || user.aiFormBuilderBetaUser === '16861' || user.aiFormBuilderIncrementalUpdateTest === '22601' || window.location.href.includes('AIFormBuilder'))\n && user.account_type?.name !== 'ADMIN';\n const isComingFromJotFormMobile = global.navigator.userAgent.indexOf('JotForm Mobile') > -1 || global.navigator.userAgent.indexOf('JFCEMobile') > -1;\n\n useEffect(() => {\n if (isAICVariant && !isComingFromJotFormMobile && !user.aiBuilderFromLandingV2) {\n if (!Tracking.FSisInitialized()) {\n // Set parent state\n setParentUsesFS(false);\n // Enable FS\n Tracking.enableFS(null);\n // Add FS identification\n Tracking.identify(user.username || '', {\n displayName: user.username || '',\n ...fsVars\n });\n\n window._fs_ready = function getFSSession() {\n const fullstoryUrl = Tracking.getCurrentSessionURL();\n\n if (fullstoryUrl) {\n dispatchAIBuilder({ type: AIActionTypes.SET_FULLSTORY_URL, payload: fullstoryUrl });\n }\n };\n } else {\n // Add FS vars for existing session\n Tracking.setUserVars(fsVars);\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [user, parentUsesFS]);\n};\n","/* eslint-disable react/prop-types */\nimport React, {\n createContext,\n useReducer,\n useContext,\n useEffect,\n Dispatch\n} from 'react';\n\nimport {\n createInitial, AIActionTypes, MessageTypes\n} from '../constants';\nimport { logActions } from '../api';\nimport { useFullstory } from '../hooks/useFullStory';\nimport { MessageState, UserState } from '../typings/state';\n\ntype FormProperties = Record\n\ntype State = {\n promptValue: string,\n form: {\n form_id: string,\n url?: string\n },\n messages: MessageState[],\n manual_changes: null,\n formProperties: FormProperties\n user: UserState,\n fullstoryUrl: string\n}\n\ntype ActionType = keyof typeof AIActionTypes\ntype DispatchAction = [Payload] extends [never] ?\n { type: Type } :\n { type: Type, payload: Payload, override?: Partial }\n\nexport type DispatchAIBuilderAction =\n DispatchAction<'CREATE_AI_FORM', {\n messages: MessageState[],\n form: State['form'],\n formProperties: State['formProperties']\n }> |\n DispatchAction<'ADD_MESSAGE_TO_CHAT', {\n message?: MessageState['content']\n type?: MessageState['message_type']\n }> |\n DispatchAction<'SHOW_ERROR_MESSAGE', {\n message: MessageState['content']\n }> |\n DispatchAction<'SET_FULLSTORY_URL', string>\n\nexport type AIBuilderReducer = (state: State, action: DispatchAIBuilderAction) => State\nexport type DispatchAIBuilder = Dispatch\nexport type Context = { AIState: State, dispatchAIBuilder: Dispatch }\n\nconst AIContext = createContext(undefined);\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nconst reducer: AIBuilderReducer = (state, { type, payload, override = {} }) => {\n switch (type) {\n case AIActionTypes.CREATE_AI_FORM:\n return {\n ...state,\n messages: payload.messages,\n form: {\n ...state.form,\n ...payload.form\n },\n formProperties: { ...payload.formProperties }\n };\n case 'ADD_MESSAGE_TO_CHAT':\n return {\n ...state,\n messages: [\n ...state.messages,\n {\n content: payload.message,\n message_type: payload.type || 'USER',\n message_id: new Date().valueOf() // temp random id\n }\n ],\n ...override\n };\n case 'SHOW_ERROR_MESSAGE':\n return {\n ...state,\n messages: [\n ...state.messages,\n {\n content: payload.message,\n message_type: MessageTypes.ERROR,\n message_id: new Date().valueOf() // temp random id\n }\n ]\n };\n case 'SET_FULLSTORY_URL':\n return {\n ...state,\n fullstoryUrl: payload\n };\n default:\n return state;\n }\n};\n\nexport const AIProvider: React.FC<{ user: UserState }> = ({\n children, user\n}) => {\n const [AIState, dispatchAIBuilder] = useReducer(\n reducer,\n createInitial(user)\n );\n\n useEffect(() => {\n logActions({ action: 'modalShown', target: 'initialScreen' });\n }, []);\n\n useFullstory({ user, dispatchAIBuilder });\n\n return (\n \n
    \n {children}\n
    \n \n );\n};\n\nexport const useAIContext = () => useContext(AIContext) as Context;\n","/* eslint-disable no-undef */\nimport {\n createAIForm\n} from '../api';\nimport {\n GenerateFormType\n} from '../typings/actions';\n\nexport const generateForm: GenerateFormType = async prompt => {\n try {\n const AIForm = await createAIForm({ prompt });\n\n return AIForm;\n } catch (error) {\n const errorMsg = error instanceof Error ? error.message : 'Unknown error.';\n throw new Error(errorMsg);\n }\n};\n","/* eslint-disable max-len */\nimport React from 'react';\nimport './loading.scss';\n\nconst Loading: React.FC = () => {\n return (\n
    \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n {/* \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n */}\n
    \n );\n};\n\nexport default Loading;\n","import { safeJSONParse } from '@jotforminc/utils';\nimport { PROMT_PROPS } from '../constants';\nimport { Message } from '../typings/api';\n\nexport const promptLengthLimit = (currentLen: number) => {\n return PROMT_PROPS.MAX_LENGTH - currentLen;\n};\n\nexport function formatMessage(message: string, messageType: Message['message_type'], username: string) {\n const parsedText = safeJSONParse(message);\n // List help message\n if (messageType === 'HELP' && Array.isArray(parsedText)) {\n const helpMessagesText = parsedText.reduce((totalContent, value) => `${totalContent}
  • ${value}
  • `, '');\n const pretext = 'I couldn\\'t do this for you right now, but you can follow these steps:';\n const listHelpMessage = `${pretext}
      ${helpMessagesText}
    `;\n return listHelpMessage;\n } else if (messageType === 'WELCOME') { // eslint-disable-line no-else-return\n return message.replace('{username}', username);\n }\n return message;\n}\n\nexport const noop = () => { /** empty */ };\n","import React, { useRef, useEffect, HTMLProps } from 'react';\nimport { string, bool } from 'prop-types';\nimport cx from 'classnames';\nimport { IconExclamationCircleFilled } from '@jotforminc/svg-icons';\n\ntype Props = HTMLProps & {\n message?: string,\n autofocus?: boolean,\n className?: string\n}\n\nconst ErrorMessage: React.FC = ({\n message,\n autofocus,\n className,\n ...rest\n}) => {\n const errorRef = useRef(null);\n useEffect(() => {\n if (autofocus) {\n const { current } = errorRef;\n current?.focus();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n \n {message}\n
    \n );\n};\n\nErrorMessage.propTypes = {\n message: string,\n className: string,\n autofocus: bool\n};\n\nErrorMessage.defaultProps = {\n message: '',\n className: '',\n autofocus: false\n};\n\nexport default ErrorMessage;\n","import React, {\n useState, useRef, useEffect, ChangeEvent, FormEvent\n} from 'react';\nimport cx from 'classnames';\nimport { Checkbox } from '@jotforminc/magnet';\nimport { t, translationRenderer } from '@jotforminc/translation';\nimport { handleCustomNavigation } from '@jotforminc/utils';\nimport { useAIContext } from '../../context';\nimport { generateForm } from '../../actions';\nimport {\n changeUserSettings,\n logActions,\n saveFullStorySessionURL,\n sendAIFormBuilderBetaAgreementSubmission\n} from '../../api';\nimport AiLogo from '../../assets/svg/AILogo.svg';\nimport Loading from '../../components/Loading';\nimport AiLogoWhite from '../../assets/svg/ai-logo-white.svg';\nimport { ExampleBuildPrompts, ExamplePromptBoxes, PROMT_PROPS } from '../../constants';\nimport { promptLengthLimit } from '../../utils';\nimport ErrorMessage from '../../components/ErrorMessage/ErrorMessage';\n\ntype Props = {\n showHeader: boolean,\n creationLogger?: (txt: string) => void,\n onFormCreationSuccess?: (formID: string) => void\n}\n\nconst CreateAIForm: React.FC = ({\n showHeader,\n creationLogger = f => f,\n onFormCreationSuccess = formID => handleCustomNavigation(`/build/${formID}`, '_self')\n}) => {\n const { AIState: { user, fullstoryUrl } } = useAIContext();\n const inputRef = useRef(null);\n const isAlreadyAgreed = user.aiFormBuilderBetaUserAgreement === '1';\n\n const [prompt, setPrompt] = useState('');\n const [isAgreed, setAgreed] = useState(isAlreadyAgreed);\n const [errors, setErrors] = useState | null>(null);\n const [isDirty, setIsDirty] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n const [placeholder, setPlaceholder] = useState('');\n\n useEffect(() => {\n let count = 0;\n const texts = ExampleBuildPrompts;\n let text = t(texts[count]);\n let index = 0;\n\n function displayWord() {\n if (index < text.length) {\n setPlaceholder(prevPlaceholder => `${prevPlaceholder + text[index++]}`);\n } else {\n setPlaceholder(() => {\n count = count === 3 ? 0 : count + 1;\n text = t(texts[count]);\n index = 0;\n return '';\n });\n }\n }\n\n const interval = setInterval(displayWord, 50);\n\n return () => {\n clearInterval(interval);\n };\n }, []);\n\n const handleSubmit = async (e: FormEvent) => {\n e.preventDefault();\n if (prompt.length < 10) {\n setErrors(errs => ({ ...errs, prompt: t('Must be at least 10 characters.') }));\n return;\n }\n\n if (!isAgreed) {\n setErrors(errs => ({ ...errs, agreement: t('You must agree to the Beta Program Terms and Conditions to continue.') }));\n return;\n }\n\n if (!isAlreadyAgreed) {\n const { responseCode, message } = await changeUserSettings({ aiFormBuilderBetaUserAgreement: '1' });\n if (responseCode !== 200) {\n // eslint-disable-next-line no-console\n console.log('User Settings Change Error:', message);\n return;\n }\n window.user.aiFormBuilderBetaUserAgreement = '1';\n sendAIFormBuilderBetaAgreementSubmission(user);\n }\n creationLogger('ai');\n logActions({ action: 'CreateForm-clicked', target: 'initialScreen' });\n const promptWords = prompt.split(' ');\n if (promptWords.length > 1) {\n logActions({ action: `typedWords-${prompt.split(' ').length}`, target: 'initialScreen' });\n }\n try {\n setIsLoading(true);\n const response = await generateForm(prompt);\n if (response) {\n const { resource_id: formID } = response;\n if (formID && fullstoryUrl) {\n saveFullStorySessionURL({ fullstoryUrl, formID });\n }\n logActions({ action: 'sessionInitialized', target: formID });\n if (user.usage?.form_count === '0') {\n logActions({ action: 'firstFormIsAIForm', target: 'initialScreen' });\n }\n onFormCreationSuccess(formID);\n }\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(error);\n setIsLoading(false);\n setErrors(errs => ({ ...errs, creation: \"Something went wrong, we couldn't complete your request. Try again.\" }));\n }\n };\n\n const handlePromtChange = (e: ChangeEvent) => {\n const { value: promptVal } = e.target;\n setPrompt(promptVal);\n if (!isDirty) {\n logActions({ action: 'CustomFormPrompt', target: 'initialScreen' });\n setIsDirty(true);\n }\n if (promptVal.length > 10) {\n setErrors(errs => ({ ...errs, prompt: null }));\n }\n };\n\n const handleAgreementCheckboxClick = (e: ChangeEvent) => {\n setErrors(null);\n setAgreed(e.target.checked);\n };\n\n const handleExamplePromtClick = (exPrompt: typeof ExamplePromptBoxes[number]) => {\n setPrompt(t(exPrompt.prompt));\n logActions({ action: 'SuggestionList-selected', target: 'initialScreen' });\n setErrors(errs => ({ ...errs, prompt: null }));\n };\n\n return (\n <>\n {isLoading && (\n
    \n \n
    \n )}\n
    \n
    \n {showHeader && (\n <>\n \n

    {t('Generate a form in seconds with Copilot')}

    \n

    {t('Describe the form you want and the data you want to collect')}

    \n \n )}\n
    \n
    \n
    \n
    \n
    \n logActions({ action: 'promptPasted', target: 'initialScreen' })}\n autoComplete='off'\n autoCorrect='off'\n maxLength={PROMT_PROPS.MAX_LENGTH}\n />\n
    {promptLengthLimit(prompt.length)}
    \n
    \n \n \n {t('Create Form')}\n \n
    \n {errors?.prompt && }\n
    \n
    \n
    \n
    \n {errors?.creation && }\n
    \n {ExamplePromptBoxes.map(exPrompt => (\n handleExamplePromtClick(exPrompt)}\n >\n {t(exPrompt.slug)}\n \n ))}\n
    \n
    \n {!isAlreadyAgreed && (\n
    \n
    \n \n

    \n {translationRenderer('I have read and accept the [1[Beta Program Terms and Conditions]].')({\n // eslint-disable-next-line max-len\n renderer1: (text: string) => {text}\n })}\n

    \n
    \n {errors?.agreement &&
    }\n
    \n )}\n
    \n
    \n \n );\n};\n\nexport default CreateAIForm;\n","// extracted by css-extract-rspack-plugin\nexport default {\"container\":\"e5Hxk4IDUUitFFTE\",\"modal\":\"iyC74EwvMkYSsFM2\",\"icon\":\"P28a00b3uI8qFRDg\",\"text\":\"byS9h8qur4RPkqsP\",\"title\":\"e_pP7Xocsboq8PpZ\",\"desc\":\"TMSGrHlUvo8p_1Tt\",\"backButton\":\"WpRhUSFi2bwk1d6X\"};","import React, { Component, ErrorInfo } from 'react';\nimport { t } from '@jotforminc/translation';\nimport Tracking from '@jotforminc/tracking';\n\nimport IconExclamation from '../assets/svg/IconExclamation.svg';\nimport style from '../styles/errorBoundry.module.scss';\n\ntype Props = {\n setBreakingErrorState?: (error: Error | unknown) => void\n}\n\nclass ErrorBoundry extends Component {\n constructor(props: Props) {\n super(props);\n this.state = {\n hasError: false\n };\n }\n\n static getDerivedStateFromError(error: Error) {\n return { hasError: error };\n }\n\n componentDidCatch(error: Error, errorInfo: ErrorInfo) {\n const { setBreakingErrorState } = this.props;\n setBreakingErrorState?.(error);\n\n Tracking.captureException(error, (scope: {\n addBreadcrumb: (breadcrumbs: Record) => void;\n }) => {\n scope.addBreadcrumb({\n type: 'error',\n level: 'error',\n category: 'aiBuilderError',\n message: errorInfo.componentStack\n });\n });\n }\n\n render() {\n const { children } = this.props;\n const { hasError } = this.state;\n if (hasError) {\n return (\n
    \n
    \n
    \n \n
    \n
    \n \n {t('An unexpected error occurred')}\n \n

    \n {t('We’ve been notified of the issue and aim to fix it shortly. Please try again later.')}\n

    \n
    \n \n {t('Back to My Forms')}\n \n
    \n
    \n );\n }\n return children;\n }\n}\n\nexport default ErrorBoundry;\n","import React from 'react';\n\nimport '@jotforminc/jotform.css';\nimport './ai.scss';\n\nimport type { User } from '@jotforminc/types';\nimport { AIProvider } from '../context';\n\nimport CreateAIForm from './CreateAIForm';\n\nimport ErrorBoundry from '../hocs/ErrorBoundry';\n\ntype Props = {\n user: User\n showHeader?: boolean,\n creationLogger?: (txt: string) => void,\n onFormCreationSuccess?: (formID: string) => void\n}\n\nconst Root: React.FC = ({\n user, showHeader = true, creationLogger = f => f, onFormCreationSuccess\n}) => {\n return (\n \n \n \n \n \n );\n};\n\nexport default Root;\n","import { RequestLayer, Interceptors } from '@jotforminc/request-layer';\n\nexport const layer = new RequestLayer('/API', {\n interceptorConfig: {\n teamID: global.teamID,\n customResponseInterceptors: [Interceptors.requestManagerResponseNormalizer]\n }\n});\n\nexport const baseLayer = new RequestLayer('/', {\n interceptorConfig: {\n teamID: global.teamID,\n customResponseInterceptors: [Interceptors.requestManagerResponseNormalizer]\n }\n});\n","/* eslint-disable no-param-reassign */\n\nexport const fetchPDFJSWorker = (pdfjs, version = '2.14.305') => {\n let workerSrc = '';\n switch (true) {\n case !!window.__jfrouter?.VENDOR_ASSET_PATH:\n if (window.__jfrouter?.JOTFORM_ENV === 'TESTING') {\n workerSrc = `//cdnjs.cloudflare.com/ajax/libs/pdf.js/${version}/pdf.worker.js`;\n } else {\n workerSrc = `${window.__jfrouter.VENDOR_ASSET_PATH}/pdfjs-dist/${version}/pdf.worker.js`;\n }\n break;\n case !!window.JotForm?.CDN_VENDOR_PATH:\n workerSrc = `${window.JotForm.CDN_VENDOR_PATH}/pdfjs-dist/${version}/pdf.worker.js`;\n break;\n default:\n workerSrc = `//cdnjs.cloudflare.com/ajax/libs/pdf.js/${version}/pdf.worker.js`;\n break;\n }\n pdfjs.GlobalWorkerOptions.workerSrc = workerSrc;\n\n return workerSrc;\n};\n","import React, { useEffect, useState } from 'react';\nimport { string, number } from 'prop-types';\nimport { Document, Page, pdfjs } from 'react-pdf';\nimport { fetchPDFJSWorker } from '@jotforminc/utils';\n\nconst loading = () => (\n
    PDF
    \n);\n\nconst PDFThumbnail = ({\n file,\n pageNumber\n}) => {\n const [pdfJSWorkerURL, setPdfJSWorkerURL] = useState(null);\n\n useEffect(() => {\n const workerURL = fetchPDFJSWorker(pdfjs, pdfjs.version);\n setPdfJSWorkerURL(workerURL);\n }, []);\n\n return pdfJSWorkerURL ? (\n \n \n \n ) : null;\n};\n\nPDFThumbnail.propTypes = {\n file: string.isRequired,\n pageNumber: number\n};\n\nPDFThumbnail.defaultProps = {\n pageNumber: 1\n};\n\nexport default PDFThumbnail;\n","export const DEMO_DOC = {\n url: '/assets/pdf/Sample_Agreement.pdf?v=0.1',\n name: 'sample_agreement.pdf',\n type: 'application/pdf'\n};\n\nexport const MAX_FILE_SIZE = 5000000; // 5MB\n\nexport const SUPPORTED_FILE_TYPES = ['application/msword', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'];\n","export const logSignAction = (action, target) => {\n if (global.user && window.signActions) {\n window.signActions.tick({ actor: global.user.username, action, target });\n }\n};\n\nexport const byteToKB = bytes => {\n if (bytes === 0) return '0 Byte';\n\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];\n const i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)), 10);\n\n return `${Math.round(bytes / 1024 ** i, 2)} ${sizes[i]}`;\n};\n","import { ABTestManager } from '@jotforminc/abtest-manager';\n\nexport const getVariantCode = async (user, isDemo = false) => {\n if (!isDemo) {\n return { variantCode: '' };\n }\n try {\n const abTestManager = new ABTestManager({\n isTestEnabled: true,\n testName: 'signDemoDocumentActivation',\n controlVariantCode: '22291',\n testVariantCode: [{\n code: '22281',\n urlParam: 'noAnnotations'\n }],\n urlParam: 'placeAnnotations',\n user: user,\n cacheVariantCodeAtLocalStorage: true\n });\n\n const [isTestVariant, variantCode] = await abTestManager.isTestVariant();\n return { variantCode: isTestVariant ? variantCode : '' };\n } catch (error) {\n return { variantCode: '' };\n }\n};\n","import React, { useCallback, useEffect, useState } from 'react';\nimport {\n func, array, bool, shape\n} from 'prop-types';\nimport { t } from '@jotforminc/translation';\nimport { Spinner } from '@jotforminc/loading';\nimport {\n IconExclamationCircleFilled, IconGridDotsVertical, IconPlusCircleFilled, IconTrashFilled\n} from '@jotforminc/svg-icons';\nimport {\n arrayMove,\n handleRedirect,\n pushDataLayer,\n generateUniqueID,\n fetchPDFJSWorker,\n trackDataForMobile\n} from '@jotforminc/utils';\nimport {\n WizardHeader as Header,\n WizardBody,\n WizardItem\n} from '@jotforminc/wizard-shared';\nimport {\n SortableContainer,\n SortableHandle,\n SortableElement\n} from 'react-sortable-hoc';\nimport { pdfjs } from 'react-pdf';\nimport { Button } from '@jotforminc/magnet';\n\nimport PDFThumbnail from '../PDFThumbnail';\nimport { DEMO_DOC, MAX_FILE_SIZE, SUPPORTED_FILE_TYPES } from '../../constants';\nimport { logSignAction, byteToKB } from '../../utils';\nimport { layer } from '../../../../utils';\n\nimport IconFileUpload from '../../assets/iconFileUpload2.svg';\nimport IconDoc from '../../assets/iconDoc.svg';\nimport texts from '../../core/texts';\nimport { getVariantCode } from '../../core/abtests';\n\nconst SortElement = SortableElement(({ children }) => (\n
    {children}
    \n));\n\nconst SortContainer = SortableContainer(({ children }) => (\n
    {children}
    \n));\n\nconst DragHandle = SortableHandle(() => (\n \n));\n\nconst updateFileList = (files, index) => files.filter((_, i) => i !== index);\n\nconst handleDrop = onChange => e => {\n e.preventDefault();\n onChange({ target: { files: e.dataTransfer.files } });\n};\n\nconst getTotalFileSize = f => f.reduce((a, c) => a + c);\n\nconst isFileProtected = fileData => new Promise((resolve, reject) => {\n fetchPDFJSWorker(pdfjs, pdfjs.version);\n const loadingTask = pdfjs.getDocument({\n data: fileData,\n enablePermissions: true,\n isEvalSupported: false\n });\n loadingTask.onPassword = (_, result) => {\n if (result === 1) {\n resolve({ isProtected: true });\n }\n };\n loadingTask.promise\n .then(doc => doc.getPermissions())\n .then(permissions => {\n resolve({\n isProtected: false,\n modifyContent: !Array.isArray(permissions)\n });\n })\n .catch(e => {\n reject(e.message);\n });\n});\n\nconst getFileAsTypedArray = file => new Promise((resolve, reject) => {\n const reader = new window.FileReader();\n\n reader.readAsArrayBuffer(file);\n\n reader.onload = e => {\n const typedArray = new Uint8Array(e.target.result);\n resolve(typedArray);\n };\n\n reader.onerror = () => {\n reject(reader.error);\n };\n});\n\nconst getFileProtectionInfo = files => Promise.all(\n files.map(async file => {\n const typedArray = await getFileAsTypedArray(file);\n const { isProtected = false, modifyContent = false } = await isFileProtected(typedArray);\n\n return { isProtected, modifyContent };\n })\n);\n\nconst Input = ({ onChange, allowDoc }) => (\n {\n logSignAction('drop', 'upload-document');\n handleDrop(onChange)(e);\n }}\n onClick={() => {\n logSignAction('click', 'upload-document');\n trackDataForMobile('uploadDocument', 'upload');\n }}\n />\n);\n\nInput.propTypes = {\n onChange: func,\n allowDoc: bool\n};\n\nInput.defaultProps = {\n onChange: () => {},\n allowDoc: false\n};\n\nconst UploadTypeSelector = () => (\n \n);\n\nconst ListFiles = ({\n files,\n handleUpload,\n setFiles,\n loading,\n setIsDemo,\n allowDoc,\n onChange,\n creationLogger,\n isDemo\n}) => {\n const handleCreate = useCallback(() => {\n if (creationLogger) {\n creationLogger('createSignableDocument');\n }\n handleUpload();\n logSignAction('click', 'final-create-signable-document');\n pushDataLayer({ event: 'create_sign_document_via_upload' });\n }, [handleUpload]);\n\n return (\n
    \n {\n setFiles(arrayMove(files, oldIndex, newIndex));\n }}\n useDragHandle\n lockAxis=\"y\"\n >\n {files.map((file, i) => (\n \n {files.length > 1 && }\n
    \n {file.type === 'application/pdf' ? (\n \n ) : (\n \n )}\n
    \n
    \n

    {file.name}

    \n {byteToKB(file.size)}\n
    \n {\n logSignAction('click', 'file-delete-icon');\n setFiles(updateFileList(files, i));\n\n if (files[i] && files[i].name.indexOf(DEMO_DOC.name) > -1) {\n setIsDemo(false);\n }\n }}\n />\n
    \n ))}\n \n {!isDemo && (\n
    \n \n \n \n
    \n )}\n
    \n {loading && }\n \n {t('Create Signable Document')}\n \n
    \n
    \n );\n};\n\nListFiles.propTypes = {\n files: array.isRequired,\n handleUpload: func,\n setFiles: func,\n setIsDemo: func,\n loading: bool,\n allowDoc: bool,\n onChange: func,\n creationLogger: func,\n isDemo: bool\n};\n\nListFiles.defaultProps = {\n handleUpload: () => {},\n setFiles: () => {},\n setIsDemo: () => {},\n loading: false,\n allowDoc: false,\n onChange: () => {},\n creationLogger: () => {},\n isDemo: false\n};\n\nconst FileUploader = ({ onChange, allowDoc, handleDemoDoc }) => (\n
    \n \n

    {t('Drag & Drop Your Document Here')}

    \n
    \n {t('OR')}\n
    \n \n \n \n {t('Try Demo Document')}\n \n
    \n);\n\nFileUploader.propTypes = {\n onChange: func.isRequired,\n allowDoc: bool.isRequired,\n handleDemoDoc: func.isRequired\n};\n\nconst FileUpload = ({\n createDocument,\n setView,\n onBack,\n viewProps: { backButtonVisible = true, onBack: onBackFromViewProps },\n creationLogger\n}) => {\n const [files, setFiles] = useState([]);\n const [loading, setLoading] = useState(false);\n const [isDemo, setIsDemo] = useState(false);\n const [errorMsg, setErrorMsg] = useState([]);\n const allowDoc = !window.isHIPAA && window.JOTFORM_ENV !== 'ENTERPRISE';\n let timeout;\n\n useEffect(() => {\n if (errorMsg.length > 0) {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n setErrorMsg([]);\n }, 3000);\n }\n }, [errorMsg]);\n\n const addFile = (fileList, protectionList) => Array.from(fileList).filter((f, i) => {\n const { isProtected } = protectionList\n ? protectionList[i]\n : { isProtected: false };\n const acceptedFileSize = getTotalFileSize([f.size, ...files.map(file => file.size)]) <= MAX_FILE_SIZE;\n const supportedFile = [\n 'application/pdf',\n ...(allowDoc ? SUPPORTED_FILE_TYPES : [])\n ].includes(f.type);\n\n if (!acceptedFileSize) {\n setErrorMsg([\n ...errorMsg,\n `${f.name} is exceed file size limit.(${byteToKB(MAX_FILE_SIZE)})`\n ]);\n }\n\n if (!supportedFile) {\n setErrorMsg([...errorMsg, `${f.name} is not supported.`]);\n }\n\n if (isProtected) {\n setErrorMsg([...errorMsg, `${f.name} is protected.`]);\n }\n\n return acceptedFileSize && supportedFile && !isProtected;\n });\n\n const onChange = e => {\n const { files: fileList } = e.target;\n\n if (fileList) {\n logSignAction('change', 'upload-document');\n const combinedFiles = [...files, ...fileList];\n const { pdfFiles, nonPdfFiles } = Object.keys(combinedFiles)\n .reduce((res, key) => {\n const currentFile = combinedFiles[key];\n if (SUPPORTED_FILE_TYPES.includes(currentFile.type)) { // if doc\n res.nonPdfFiles.push(currentFile);\n } else { // if pdf\n res.pdfFiles.push(currentFile);\n }\n return res;\n }, { pdfFiles: [], nonPdfFiles: [] });\n\n getFileProtectionInfo(pdfFiles).then(protectionList => { // getFileProtectionInfo throws error with non pdf files, so we separated their checks\n const checkedPdfFiles = addFile(pdfFiles, protectionList);\n const checkedNonPdfFiles = addFile(nonPdfFiles);\n setFiles([...checkedPdfFiles, ...checkedNonPdfFiles]);\n }).catch(() => {\n setErrorMsg([...errorMsg, t('The document could not be uploaded.')]);\n });\n }\n };\n\n const handleUpload = async () => {\n if (files.length > 0) {\n setLoading(true);\n const getModifyInfo = files.length === 1 && !SUPPORTED_FILE_TYPES.includes(files[Object.keys(files)[0]].type)\n ? getFileProtectionInfo(files).then(\n ([{ modifyContent = true }]) => modifyContent\n )\n : Promise.resolve(false);\n const { variantCode } = await getVariantCode(global.user, isDemo);\n\n getModifyInfo.then(modifyContent => {\n createDocument(files, isDemo, modifyContent, variantCode)\n .then(({ formID }) => {\n if (isDemo) {\n logSignAction('create', 'demo-document');\n }\n handleRedirect(formID);\n })\n .catch(() => {\n setErrorMsg([...errorMsg, t('The document could not be uploaded.')]);\n setLoading(false);\n });\n });\n }\n };\n\n const handleDemoDoc = () => {\n logSignAction('click', 'demo-document');\n trackDataForMobile('uploadDocument', 'demoDocument');\n layer.get(DEMO_DOC.url, {\n responseType: 'blob'\n })\n .then(resp => {\n const fileObject = new global.File([resp], DEMO_DOC.name, {\n type: DEMO_DOC.type\n });\n setFiles(addFile([fileObject]));\n setIsDemo(true);\n })\n .catch(() => {});\n };\n\n return (\n \n \n \n {files.length > 0 && (\n \n )}\n {files.length <= 0 && (\n \n )}\n {errorMsg.map(msg => (\n
    \n \n {msg}\n
    \n ))}\n
    \n
    \n );\n};\n\nFileUpload.propTypes = {\n createDocument: func.isRequired,\n setView: func.isRequired,\n viewProps: shape({\n backButtonVisible: bool.isRequired,\n onBack: func\n }),\n onBack: func,\n creationLogger: func\n};\n\nFileUpload.defaultProps = {\n onBack: null,\n viewProps: {},\n creationLogger: f => f\n};\n\nexport default FileUpload;\n","import React from 'react';\nimport { func, shape, string } from 'prop-types';\nimport { layer } from '../../../../utils';\n// import { WizardBody, WizardItem, WizardHeader as Header } from '@jotforminc/wizard-shared';\n// import texts from '../../../CreateNewDocumentWizard/core/texts';\nimport FileUpload from '../../../CreateNewDocumentWizard/components/Navigation/FileUpload';\n\nconst CreateSignDocumentFileUpload = ({\n setView, user, teamID, creationLogger\n}) => {\n const teamHeader = teamID ? { headers: { 'jf-team-id': teamID } } : {};\n const createDocument = files => {\n const formData = new global.FormData();\n\n files.forEach(file => {\n formData.append('file[]', file);\n });\n return layer.post('/API/listings/sign', formData, { baseURL: '', ...teamHeader });\n };\n\n const allowDoc = !window.isHIPAA && window.JOTFORM_ENV !== 'ENTERPRISE';\n\n return (\n {\n setView(window.JOTFORM_ENV === 'ENTERPRISE' ? 'Main' : 'CreateSignDocumentMain', {\n navigation: {\n FileUpload: 'CreateSignDocumentFileUpload',\n UseTemplate: 'CreateSignDocumentTemplate',\n Main: 'CreateSignDocumentMain'\n },\n fromMyForms: true\n });\n }}\n isSignReleased={window?.isSignReleased || false}\n />\n );\n};\n\nCreateSignDocumentFileUpload.propTypes = {\n setView: func,\n user: shape({}),\n teamID: string,\n creationLogger: func\n};\n\nCreateSignDocumentFileUpload.defaultProps = {\n setView: f => f,\n user: {},\n teamID: '',\n creationLogger: f => f\n};\n\nexport default CreateSignDocumentFileUpload;\n","import React from 'react';\nimport { func } from 'prop-types';\nimport { NavigationWizardTemplate as UseTemplate } from '@jotforminc/wizard-shared';\nimport texts from '../../../CreateNewDocumentWizard/core/texts';\n\nexport default function CreateSignDocumentTemplate(props) {\n return (\n {\n // eslint-disable-next-line react/destructuring-assignment\n props.setView('CreateSignDocumentMain', {\n navigation: {\n FileUpload: 'CreateSignDocumentFileUpload',\n UseTemplate: 'CreateSignDocumentTemplate',\n Main: 'CreateSignDocumentMain'\n },\n fromMyForms: true\n });\n }}\n source='create-new-wizard'\n templatePath=\"/sign-templates/standalone\"\n templateHeadertext={texts.JOTFORM_SIGN_TEMPLATE_TEXT}\n templateHeaderSubText={texts.JOTFORM_SIGN_TEMPLATE_SUBTEXT}\n isSignTemplates={true}\n />\n );\n}\n\nCreateSignDocumentTemplate.propTypes = {\n setView: func.isRequired\n};\n","import React, { useState, useEffect, useRef } from 'react';\nimport {\n func, number, string, element, array, bool\n} from 'prop-types';\nimport { RequestLayer, Interceptors } from '@jotforminc/request-layer';\nimport { IconTrashFilled, IconAngleDown, IconAngleUp } from '@jotforminc/svg-icons';\nimport { classNames, handleCustomNavigation, serialize } from '@jotforminc/utils';\nimport {\n WizardHeader as Header, WizardBody, WizardItem\n} from '@jotforminc/wizard-shared';\n// eslint-disable-next-line no-restricted-imports\nimport '@jotforminc/jotform.css/animation.css';\nimport { Checkbox, Button } from '@jotforminc/magnet';\nimport texts from '../../core/texts';\nimport '../../style/jfCreateSalesforceForm.scss';\n\nconst layer = new RequestLayer('/API', {\n interceptorConfig: {\n customResponseInterceptors: [Interceptors.requestManagerResponseNormalizer],\n teamID: global.teamID\n }\n});\n\nconst SearchableDropdown = ({ optionList, handleSelection }) => {\n const [searchTerm, setSearchTerm] = useState('');\n const [showOptions, setShowOptions] = useState(false);\n const optionsListRef = useRef();\n\n const handleSearchTermChange = e => {\n setSearchTerm(e.target.value);\n setShowOptions(true);\n };\n\n const handleSearchFocus = () => {\n setShowOptions(true);\n };\n\n const handleSearchBlur = e => {\n if (optionsListRef.current && !optionsListRef.current.contains(e.relatedTarget)) {\n setShowOptions(false);\n }\n };\n\n const handleOptionSelection = e => {\n handleSelection(e.target.getAttribute('data-value'));\n setShowOptions(false);\n setSearchTerm('');\n };\n\n const handleToggle = () => {\n setShowOptions(!showOptions);\n };\n\n const handleOptionKeyDown = e => {\n if (e.keyCode === 13 || e.keyCode === 32) {\n e.preventDefault();\n handleOptionSelection(e);\n }\n };\n\n const filteredOptions = optionList.filter(opt => opt.text.toLowerCase().indexOf(searchTerm.toLowerCase()) > -1);\n const isAnyOption = showOptions && filteredOptions.length > 0;\n\n return (\n <>\n \n \n \n {showOptions ? : }\n \n
    \n {\n showOptions && (\n
    \n
    \n { isAnyOption ? filteredOptions.map(opt => (\n \n {opt.text}\n
    \n )) : (\n
    \n \n
    \n )}\n
    \n
    \n )\n }\n \n );\n};\n\nconst SelectedObjectBlock = ({\n objectName, selectedFieldsCount, removeObject, children, isOpened, toggleIsOpened, skeletonActive\n}) => {\n const [isMouseOver, setIsMouseOver] = useState(false);\n\n const handleCollapse = () => {\n toggleIsOpened();\n };\n\n const handleKeyDown = e => {\n if (e.keyCode === 13 || e.keyCode === 32) {\n e.preventDefault();\n toggleIsOpened();\n }\n };\n\n const handleMouseOver = () => {\n setIsMouseOver(true);\n };\n\n const handleMouseLeave = () => {\n setIsMouseOver(false);\n };\n\n return (\n
    \n
    \n
    \n
    \n \n
    \n
    \n {objectName}\n
    \n \n {selectedFieldsCount === 1\n ? texts.SALESFORCE_FIELD_SELECTED : texts.SALESFORCE_FIELDS_SELECTED.replace('{selectedFieldsCount}', selectedFieldsCount) }\n \n
    \n
    \n
    \n { isMouseOver && }\n
    \n
    \n {isOpened ? : }\n
    \n
    \n
    \n
    \n {isOpened && (\n
    \n {skeletonActive ? : children}\n
    \n )}\n
    \n
    \n
    \n );\n};\n\nconst ObjectFields = ({\n fields, selectedFields, handleCheckboxChange, objectName\n}) => {\n return (\n
    \n {fields.map(field => {\n const checkedField = selectedFields.find(selectedField => selectedField.key === field.key);\n return (\n { handleCheckboxChange(field, checkedField); }}\n checked={!!checkedField}\n disabled={field.required === true}\n key={field.key}\n data-test-id={`csf-select-${objectName.toLowerCase().replaceAll(' ', '-')}-field-${field.text.toLowerCase().replaceAll(' ', '-')}`}\n label={field.required ? `${field.text} *` : field.text}\n />\n );\n })}\n
    \n );\n};\n\nconst CreateSalesforceForm = ({\n onFormCreate, setView, teamID, currentFolder, folderID\n}) => {\n const [selectedObjectsWithFields, setSelectedObjectsWithFields] = useState({});\n const [salesforceObjects, setSalesforceObjects] = useState([]);\n const [salesforceObjectFields, setSalesforceObjectsFields] = useState({});\n const [activeObjectKey, setActiveObjectKey] = useState('');\n const [skeletonActive, setSkeletonActive] = useState(false);\n const [loadingSpinnerActive, setLoadingSpinnerActive] = useState(false);\n const [createFormDisable, setCreateFormDisable] = useState(false);\n\n useEffect(() => {\n layer.get('salesforce/getObjects').then(data => {\n setSalesforceObjects(data);\n });\n }, []);\n const handleObjectSelection = async objectKey => {\n if (!salesforceObjectFields[objectKey]) {\n setSelectedObjectsWithFields({ ...selectedObjectsWithFields, [objectKey]: [] });\n setSalesforceObjectsFields({ ...salesforceObjectFields, [objectKey]: [] });\n setActiveObjectKey(objectKey);\n setSkeletonActive(true);\n\n const response = await layer.get(`salesforce/getFieldsForCreationFlow?object=${objectKey}`);\n\n setSelectedObjectsWithFields({ ...selectedObjectsWithFields, [objectKey]: response.filter(field => field.required === true) });\n setSalesforceObjectsFields({ ...salesforceObjectFields, [objectKey]: response });\n setSkeletonActive(false);\n setActiveObjectKey(objectKey);\n } else {\n setSkeletonActive(false);\n setSelectedObjectsWithFields({ ...selectedObjectsWithFields, [objectKey]: salesforceObjectFields[objectKey].filter(field => field.required === true) });\n setActiveObjectKey(objectKey);\n }\n };\n\n const handleRemoveSelectedObject = objectName => e => {\n e.stopPropagation();\n const { [objectName]: objectFields, ...rest } = selectedObjectsWithFields;\n setSelectedObjectsWithFields(rest);\n };\n\n const handleFieldsChange = objectKey => (field, isChecked) => {\n if (!isChecked) {\n setSelectedObjectsWithFields({ ...selectedObjectsWithFields, [objectKey]: [...selectedObjectsWithFields[objectKey], field] });\n } else {\n setSelectedObjectsWithFields({ ...selectedObjectsWithFields, [objectKey]: selectedObjectsWithFields[objectKey].filter(selectedField => selectedField.key !== field.key) });\n }\n };\n\n const handleCreateForm = () => {\n setCreateFormDisable(true);\n setLoadingSpinnerActive(true);\n layer.post(`salesforce/createForm?${serialize({\n folder: currentFolder || folderID\n })}`, {\n objects: Object.keys(selectedObjectsWithFields).map(obj => ({ object: obj, label: salesforceObjects.filter(sfObj => sfObj.key === obj)[0].text, fields: selectedObjectsWithFields[obj] }))\n }, { teamID: teamID }).then(({ id }) => {\n onFormCreate(id);\n setLoadingSpinnerActive(false);\n }).catch(e => {\n console.log(e);\n });\n };\n\n const toggleActive = key => {\n if (key === activeObjectKey) setActiveObjectKey('');\n else setActiveObjectKey(key);\n };\n\n const selectedObjects = Object.keys(selectedObjectsWithFields);\n\n return (\n \n \n
    \n \n
    \n
    \n
    \n {texts.SALESFORCE_OBJECTS}\n
    \n selectedObjects.indexOf(obj.key) === -1)}\n handleSelection={handleObjectSelection}\n />\n
    \n {\n selectedObjects.map(obj => {\n if (salesforceObjectFields[obj] && selectedObjectsWithFields[obj]) {\n const objectName = salesforceObjects.find(salesforceObj => salesforceObj.key === obj).text;\n return (\n toggleActive(obj)}\n skeletonActive={skeletonActive}\n setSkeletonActive={setSkeletonActive}\n >\n \n \n );\n }\n return null;\n })\n }\n
    \n {\n loadingSpinnerActive ? (\n \n {texts.CREATE_FORM}\n \n ) : (\n \n {texts.CREATE_FORM}\n \n )\n }\n
    \n
    \n
    \n
    \n
    \n );\n};\n\nconst SkeletonLoading = () => {\n return (\n
    \n {(() => {\n const rows = [];\n for (let i = 1; i <= 6; i++) {\n rows.push(
    );\n }\n return rows;\n })()}\n
    \n );\n};\n\nSearchableDropdown.propTypes = {\n optionList: array.isRequired,\n handleSelection: func.isRequired\n};\n\nSelectedObjectBlock.propTypes = {\n objectName: string.isRequired,\n selectedFieldsCount: number.isRequired,\n removeObject: func.isRequired,\n children: element.isRequired,\n isOpened: bool.isRequired,\n toggleIsOpened: func.isRequired,\n skeletonActive: bool.isRequired\n};\n\nObjectFields.propTypes = {\n fields: array.isRequired,\n selectedFields: array.isRequired,\n handleCheckboxChange: func.isRequired,\n objectName: string.isRequired\n};\n\nCreateSalesforceForm.propTypes = {\n onFormCreate: func,\n setView: func,\n teamID: number,\n currentFolder: string,\n folderID: string\n};\n\nCreateSalesforceForm.defaultProps = {\n onFormCreate: id => { handleCustomNavigation(`/build/${id}`, '_self'); },\n setView: f => f,\n teamID: null,\n currentFolder: null,\n folderID: null\n};\n\nexport default CreateSalesforceForm;\n","// TODO: delete this\nimport { NavigationWizardTemplate as UseTemplate } from '@jotforminc/wizard-shared';\nimport Main from './Main';\nimport ImportForm from './ImportForm';\nimport ImportPDFForm from './ImportPDFForm';\nimport FormTypeSelect from './FormTypeSelect';\nimport StartFromScratch from './StartFromScratch';\nimport CreateSignDocumentMain from './CreateSignDocumentMain';\nimport CreateAIForm from './CreateAIForm';\nimport CreateSignDocumentFileUpload from './CreateSignDocumentFileUpload';\nimport CreateSignDocumentTemplate from './CreateSignDocumentTemplate';\nimport CreateSalesforceForm from './CreateSalesforceForm';\n\nexport default {\n Main,\n StartFromScratch,\n UseTemplate,\n ImportForm,\n ImportPDFForm,\n FormTypeSelect,\n CreateSignDocumentMain,\n CreateSignDocumentFileUpload,\n CreateSignDocumentTemplate,\n CreateSalesforceForm,\n CreateAIForm\n};\n\nexport const DefaultView = 'Main';\n","import React from 'react';\nimport { AIBuilder } from '@jotforminc/ai-builder';\n\nconst CreateAIForm = props => {\n return ;\n};\n\nexport default CreateAIForm;\n","export default [\n {\n selector: '.jfWizard-close',\n action: 'wizardCloseClick',\n target: '.jfWizard-close'\n },\n {\n selector: '.jfWizard-button.forBack',\n action: 'wizardBackClick',\n target: '.forBack'\n },\n {\n selector: '.isMain .forStartFromScratch',\n action: 'startFromScratchClick',\n target: '.forStartFromScratch'\n },\n {\n selector: '.isStartFromScratch .forClassicForm',\n action: 'startFromScratchClassicFormClick',\n target: '.forClassicForm'\n },\n {\n selector: '.isStartFromScratch .forCardForm',\n action: 'startFromScratchCardFormClick',\n target: '.forCardForm'\n },\n {\n selector: '.isMain .forUseTemplate',\n action: 'useTemplateClick',\n target: '.forUseTemplate'\n },\n {\n selector: '.isMain .forImport',\n action: 'importFormClick',\n target: '.forImport'\n },\n {\n selector: '.isImportForm .forFromWebPage',\n action: 'importFormFromWebpageClick',\n target: '.forFromWebPage'\n },\n {\n selector: '.isImportForm .forCloneExisting',\n action: 'importFormFromExistingClick',\n target: '.forCloneExisting'\n },\n {\n selector: '.isImportForm .forImportPDF',\n action: 'importFormFromPDFClick',\n target: '.forImportPDF'\n },\n {\n selector: '.isImportForm.fromWebPage + .jfWizard-footer .forCreateForm',\n action: 'importFormCreateFormButtonClick',\n target: '.fromWebPage'\n },\n {\n selector: '.isImportForm.cloneExisting + .jfWizard-footer .forCreateForm',\n action: 'importFormCloneExistingButtonClick',\n target: '.cloneExisting'\n },\n {\n selector: '.isImportPDFForm .forClassicForm',\n action: 'importPDFFormClassicFormClick',\n target: '.forClassicForm'\n },\n {\n selector: '.isImportPDFForm .forCardForm',\n action: 'importPDFFormCardFormClick',\n target: '.forCardForm'\n }\n];\n","import React from 'react';\nimport {\n node, bool, string, objectOf, object, func, shape\n} from 'prop-types';\nimport { classNames } from '@jotforminc/utils';\nimport { CloseButton } from '@jotforminc/wizard-shared';\nimport { Dialog, DialogCloseButton } from '@jotforminc/magnet';\nimport qs from 'querystring';\n\nimport { t } from '@jotforminc/translation';\nimport Navigation, { DefaultView } from './components/Navigation';\nimport { stateClass } from './core/utils';\nimport withActions from './core/jotformActions';\n\nimport './style/jfWizard.scss';\nimport '../CreateNewDocumentWizard/style.scss';\n\nimport IconAiBuilder from './assets/svg/iconAiBuilder.svg';\n\nclass CreateNewWizard extends React.Component {\n constructor(props) {\n super(props);\n this.domNode = null;\n this.setView = this.setView.bind(this);\n this.toggleVisibility = this.toggleVisibility.bind(this);\n this.setVisibilityState = this.setVisibilityState.bind(this);\n this.isMobileApp = global.navigator.userAgent.indexOf('JotForm Mobile') > -1 || global.navigator.userAgent.indexOf('JFCEMobile') > -1;\n this.state = {\n CurrentView: DefaultView,\n isVisible: null,\n currentFolder: null,\n setViewProps: {},\n isDialogOpen: false,\n shouldFeedbackVisible: true\n };\n\n stateClass('add', 'jfWizard--isReady');\n }\n\n componentDidMount() {\n const {\n targetElement,\n initialView,\n initialVisibilityState,\n folderID,\n handleScrollToTop,\n onWizardMount\n } = this.props;\n\n this.setView(DefaultView);\n if (onWizardMount) {\n onWizardMount();\n }\n\n if (targetElement) {\n this.initializeTargetElementEvent();\n }\n\n if (initialView) {\n this.setView(initialView);\n }\n\n if (initialVisibilityState) {\n this.setVisibilityState(initialVisibilityState);\n }\n\n if (folderID) {\n this.setFolder(folderID);\n }\n\n if (handleScrollToTop) {\n handleScrollToTop();\n }\n if (this.isMobileApp) {\n try {\n const searchParams = window.location.search;\n const { teamId, teamName, createDocument } = qs.parse(searchParams);\n this.qsTeamProps = {\n teamID: teamId,\n teamName: teamName,\n disableSignCreation: !createDocument\n };\n } catch (error) {\n this.qsTeamProps = {};\n }\n }\n }\n\n componentWillUnmount() {\n const { targetElement } = this.props;\n if (targetElement) {\n this.unbindTargetElementEvent(targetElement);\n }\n }\n\n handleTargetClick() {\n this.setVisibilityState(true);\n }\n\n async setVisibilityState(isVisible) {\n const { onShow, onHide } = this.props;\n const { CurrentView, setViewProps } = this.state;\n this.setState({ isVisible });\n\n if (isVisible) {\n onShow();\n } else {\n this.setView('Main');\n onHide({ CurrentView, viewProps: setViewProps });\n }\n\n stateClass(isVisible ? 'add' : 'remove', 'jfWizard--isVisible');\n }\n\n setFolder(currentFolder) {\n this.setState({\n currentFolder\n });\n }\n\n setView(newView, setViewProps) {\n const { hideOnEscapeKeyPress, onViewChange } = this.props;\n const { CurrentView, isDialogOpen } = this.state;\n\n onViewChange(newView === 'Main');\n\n if (newView === 'CreateAIForm') {\n this.setState({ isDialogOpen: true });\n return;\n }\n\n if (hideOnEscapeKeyPress && setViewProps && setViewProps.closeWizard) {\n if (isDialogOpen) return;\n this.toggleVisibility();\n return;\n }\n\n if (Navigation[newView]) {\n this.setState({ CurrentView: newView, setViewProps });\n\n if (newView !== CurrentView) {\n window.scrollTo(0, 0);\n }\n\n return;\n }\n\n if (newView === 'FileUpload') {\n this.setState({ CurrentView: 'CreateSignDocumentFileUpload', setViewProps });\n\n if (CurrentView !== 'CreateSignDocumentFileUpload') {\n window.scrollTo(0, 0);\n }\n\n return;\n }\n\n throw new Error(`'${newView}' is not a valid view for setView method, should be one of: ${Object.keys(Navigation).join(', ')}`);\n }\n\n toggleVisibility() {\n const { isVisible } = this.state;\n this.setVisibilityState(!isVisible);\n }\n\n initializeTargetElementEvent() {\n const { targetElement } = this.props;\n this.bindTargetElementEvent(targetElement);\n }\n\n bindTargetElementEvent(targetElement) {\n targetElement.addEventListener('click', this.handleTargetClick.bind(this));\n }\n\n unbindTargetElementEvent(targetElement) {\n targetElement.removeEventListener('click', this.handleTargetClick.bind(this));\n }\n\n render() {\n const {\n CurrentView, setViewProps, currentFolder, isVisible, isDialogOpen, shouldFeedbackVisible\n } = this.state;\n const CurrentViewComponent = Navigation[CurrentView];\n const {\n wrapperProps: { className, ...wrapperRestProps }, isModal, actionLogger, closeable, isMixAssetCreationModal, ...props\n } = this.props;\n\n // Cannot close this wizard if from mobile app (ie /myforms?mobile-create-form)\n // isMobileApp passed down\n if (!this.isMobileApp && !isVisible) return null;\n return (\n { this.domNode = r; }}\n role=\"dialog\"\n >\n \n {!this.isMobileApp && closeable && (\n
    \n {\n this.toggleVisibility();\n if (global.user && actionLogger) {\n actionLogger({ actor: global.user.username, action: 'wizardCloseClick', target: '.jfWizard-close' });\n }\n }}\n />\n
    \n )}\n {}}\n className=\"overflow-hidden absolute inset-5 bg-white radius-lg flex flex-col\"\n >\n
    \n
    \n \n

    Copilot

    \n BETA\n
    \n
    \n
    \n \n
    \n {\n const AIFeedbackButton = document.querySelector('.jotform-feedback-link');\n\n if (shouldFeedbackVisible && AIFeedbackButton) {\n AIFeedbackButton.click();\n this.setState({\n shouldFeedbackVisible: false\n });\n return;\n }\n\n if (document.getElementById('prompt-input')) {\n fetch('/ai-builder/actions/CloseButton-clicked/initialScreen');\n } else {\n fetch('/ai-builder/actions/CloseButton-clicked/builderScreen');\n }\n this.toggleVisibility();\n\n window.sendMessageToJFMobile?.({ type: 'createWizard', value: 'closedCopilot' });\n }}\n />\n \n
    \n );\n }\n}\n\nCreateNewWizard.propTypes = {\n user: shape(),\n targetElement: node,\n wrapperProps: objectOf(object),\n isModal: bool,\n initialVisibilityState: bool,\n initialView: string,\n hideOnEscapeKeyPress: bool,\n onShow: func,\n onHide: func,\n actionLogger: func,\n forms: objectOf(object),\n isMobileApp: bool,\n closeable: bool,\n folderID: string,\n handleScrollToTop: func,\n onWizardMount: func,\n onViewChange: func,\n isMixAssetCreationModal: bool\n};\n\nconst getInitialView = () => {\n try {\n const { location: { search = '' } } = global;\n\n const urlParams = new URLSearchParams(search);\n const wizardInitialView = urlParams.get('wizardInitialView');\n\n if (!Navigation[wizardInitialView]) return null;\n\n return wizardInitialView;\n } catch {\n return null;\n }\n};\n\nCreateNewWizard.defaultProps = {\n user: {},\n targetElement: null,\n wrapperProps: {},\n isModal: false,\n initialVisibilityState: false,\n initialView: getInitialView(),\n hideOnEscapeKeyPress: true,\n onShow: f => f,\n onHide: f => f,\n actionLogger: f => f,\n forms: {},\n isMobileApp: false,\n closeable: true,\n folderID: null,\n handleScrollToTop: f => f,\n onWizardMount: f => f,\n onViewChange: f => f,\n isMixAssetCreationModal: false\n};\n\nexport default withActions(CreateNewWizard, 'newWizard');\n","import React from 'react';\nimport {\n func, arrayOf, shape, string, bool\n} from 'prop-types';\nimport { t, translationRenderer } from '@jotforminc/translation';\nimport { ResourcePicker, RESOURCE_TYPES } from '@jotforminc/resource-picker';\n\nimport texts from '../../core/texts';\nimport WizardBody from '../Wizard/WizardBody';\nimport WizardItem from '../Wizard/WizardItem';\nimport Header from '../Header';\n\nexport default class SelectForm extends React.Component {\n constructor(props) {\n super(props);\n this.handleCreateButton = this.handleCreateButton.bind(this);\n }\n\n handleCreateButton() {\n const {\n setView\n } = this.props;\n\n setView('Main', {\n backButtonVisible: true,\n onBackButtonClick: () => {\n setView('SelectForm');\n }\n });\n }\n\n render() {\n const {\n forms,\n formId,\n title,\n setView,\n subtitle,\n onSelectForm,\n onClickCreateNew,\n searchPlaceholder,\n submissionsKeyword,\n sortMenu,\n filterForm\n } = this.props;\n\n return (\n \n \n {translationRenderer(`${subtitle || 'Select a form to create an workflow or'} [1[create a new one]].`)({\n renderer1: text => (\n \n {text}\n \n )\n })}\n \n ) || texts.SELECT_YOUR_FORM_SUBTITLE}\n noDecodeURI\n />\n \n onSelectForm(id)}\n searchPlaceholder={t(searchPlaceholder || 'Search in your forms')}\n submissionsKeyword={submissionsKeyword || undefined}\n sortMenu={sortMenu}\n filterForm={filterForm}\n />\n \n \n );\n }\n}\n\nSelectForm.propTypes = {\n setView: func,\n onSelectForm: func,\n title: string,\n formId: string,\n forms: arrayOf(shape()),\n subtitle: string,\n onClickCreateNew: func,\n searchPlaceholder: string,\n submissionsKeyword: string,\n sortMenu: bool,\n filterForm: bool\n};\n\nSelectForm.defaultProps = {\n setView: f => f,\n onSelectForm: f => f,\n title: null,\n formId: null,\n forms: [],\n subtitle: null,\n onClickCreateNew: null,\n searchPlaceholder: null,\n submissionsKeyword: null,\n sortMenu: false,\n filterForm: false\n};\n","import { NavigationSelectForm as SelectForm } from '@jotforminc/wizard-shared';\n\nexport default {\n SelectForm\n};\n\nexport const DefaultView = 'SelectForm';\n","import React from 'react';\nimport { arrayOf, shape } from 'prop-types';\nimport { Wizard } from '@jotforminc/wizard-shared';\n\nimport Navigation, { DefaultView } from './components/Navigation';\nimport CreateNewFormNavigation from '../CreateNewWizard/components/Navigation';\n\nimport './style/jfWizard.scss';\n\nclass CreateNewFormPicker extends React.Component {\n render() {\n const { forms } = this.props;\n const { UseTemplate, StartFromScratch } = CreateNewFormNavigation;\n const [NavigationProp, DefaultViewProp, backButtonVisibleProp] = forms.length\n ? [{ ...CreateNewFormNavigation, ...Navigation }, DefaultView, true]\n : [{ UseTemplate, StartFromScratch }, 'UseTemplate', false];\n\n return (\n \n );\n }\n}\n\nCreateNewFormPicker.propTypes = {\n forms: arrayOf(shape())\n};\n\nCreateNewFormPicker.defaultProps = {\n forms: []\n};\n\nexport default CreateNewFormPicker;\n","import React, {\n useState, useEffect, forwardRef, useImperativeHandle, useMemo\n} from 'react';\nimport '@jotforminc/jotform.css';\nimport Styled from 'styled-components';\nimport { Portal } from '@jotforminc/uikit';\nimport { useHistory } from 'react-router-dom';\nimport {\n bool, func, number, string\n} from 'prop-types';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { CreateNewFormPicker, CreateNewWizard } from '@jotforminc/create-new-wizards';\nimport { t } from '@jotforminc/translation';\nimport { Loading } from '@jotforminc/loading';\nimport requestLayer from '../api/requestLayer';\nimport { getTeamID, getUserForms, getWorkflowOwner } from '../../store/selectors';\nimport WatchmanRecorder from '../../utils/WatchmanRecorder';\nimport {\n setResource\n} from '../../actionCreators';\nimport { DEFAULT_FEATURES, MULTIPLE_FORM_SUPPORT, PAYMENT_FORM } from '../../constants/features';\n\nexport const ScFormPicker = Styled.div`\n width: 90%;\n margin: 0 auto;\n\n padding: 1.5em 0;\n max-width: 1080px;\n display: flex;\n flex-direction: column;\n align-items: center;\n\n input {\n width: 100%;\n display: block;\n padding: 0.5em 0.75em 0.5em 1.75rem;\n background-repeat: no-repeat;\n background-position: 0.5rem center;\n line-height: 1.125;\n font-size: 1em;\n box-shadow: none;\n color: rgb(40, 46, 66);\n border-width: 1px;\n border-style: solid;\n border-color: rgb(216, 218, 233);\n border-image: initial;\n border-radius: 4px;\n transition: all 0.2s ease 0s;\n }\n\n .pm-b { max-width: 600px; width: 90%; }\n .pm-f { display: flex; justify-content: space-between; }\n .pm-t { font-size: 1.75em; font-weight: 500; margin: 1em 0 0; }\n .pm-d { color: #747484; font-size: 1.125em; margin: 0.25em 0 2em; }\n\n\n @media screen and (max-width: 480px) {\n padding: 1em 0 1.5em;\n }\n`;\n\nexport const ScWfFormPicker = Styled.div`\n z-index: 100000;\n position: relative;\n background: #fff;\n`;\n\nconst WorkflowFormPicker = forwardRef(({\n source,\n elementID,\n fetchForms,\n isFullScreen,\n defaultVisible,\n createOnSelection,\n actionToDispatchOnSelect\n}, ref) => {\n const dispatch = useDispatch();\n const initialForms = useSelector(getUserForms);\n const teamID = useSelector(getTeamID);\n const owner = useSelector(getWorkflowOwner);\n const [forms, setForms] = useState(initialForms);\n const [isLoading, setLoading] = useState(fetchForms);\n const [isVisible, setVisibility] = useState(defaultVisible);\n const allowTriggerUpdate = (DEFAULT_FEATURES[MULTIPLE_FORM_SUPPORT] && source === 'updateForm');\n const formsWithDisable = useMemo(() => forms\n .map(form => ({\n ...form,\n isSelectionDisabled: allowTriggerUpdate ? false : (form.hasAnyWorkflow && source !== 'welcome'),\n disableReason: form.hasAnyWorkflow ? t('This form already used in another approval flow.') : t('This form is disabled.')\n }))\n .filter(({ hasAnyWorkflow }) => !hasAnyWorkflow),\n [forms, source]);\n\n useImperativeHandle(ref, () => ({ setVisibility }));\n\n useEffect(() => {\n if (fetchForms) {\n const endpoint = `user${teamID ? '' : `${owner ? `/${owner}` : ''}`}/forms`;\n const searchParams = '?filter={\"status:eq\":\"ENABLED\"}&limit=2000&order_by=created_at&addWorkflow=1&includeSharedForms=0&addPaymentProps=1';\n requestLayer.get(`${endpoint}${searchParams}`).then(data => {\n setForms(data);\n setLoading(false);\n }).catch(() => {\n setLoading(false);\n });\n }\n }, [fetchForms, owner]);\n\n const history = useHistory();\n\n const handleFormBinding = (formID, openBuilder = false, forPDF = false) => {\n if (!elementID) {\n return;\n }\n\n dispatch(actionToDispatchOnSelect({\n forPDF,\n elementID,\n openBuilder,\n resourceID: formID,\n resourceType: 'FORM'\n }));\n\n setVisibility(false);\n };\n\n const handleFormSelection = formID => {\n const selectedForm = formsWithDisable.find(f => f.id === formID);\n if (selectedForm.isSelectionDisabled) {\n return;\n }\n\n WatchmanRecorder.trackEvent(`${source}-formPicker-select`, { formID, openBuilder: false });\n if (createOnSelection) {\n history.push(`/withForm/${formID}`);\n return;\n }\n\n handleFormBinding(formID);\n };\n\n const handleFormCreation = (formID, forPDF) => {\n const openBuilder = !!(formsWithDisable && formsWithDisable?.length > 0);\n WatchmanRecorder.trackEvent(`${source}-formPicker-select`, { formID, openBuilder, forPDF: Boolean(forPDF) });\n if (createOnSelection) {\n history.push(`/withForm/${formID}`);\n return;\n }\n\n handleFormBinding(formID, openBuilder, forPDF);\n };\n\n const handleFormPickerHide = () => {\n WatchmanRecorder.trackEvent(`${source}-formPicker-hide`);\n setVisibility(false);\n };\n\n const selectionDisabledForms = formsWithDisable.filter(form => {\n return form?.isSelectionDisabled;\n });\n\n const userHasFormAndAllFormsDisabled = formsWithDisable.length > 0 && selectionDisabledForms.length === formsWithDisable.length;\n\n const pickerPropsForSource = allowTriggerUpdate ? {\n title: 'Update your start form',\n subtitle: 'Select a new form to use in your approval flow or'\n } : {};\n\n return (\n \n {isVisible && (\n userHasFormAndAllFormsDisabled\n ? (\n \n )\n : (\n \n {isLoading && }\n {!isLoading && (\n \n )}\n \n )\n )}\n \n );\n});\n\nWorkflowFormPicker.propTypes = {\n source: string,\n elementID: number,\n fetchForms: bool,\n isFullScreen: bool,\n defaultVisible: bool,\n createOnSelection: bool,\n actionToDispatchOnSelect: func\n};\n\nWorkflowFormPicker.defaultProps = {\n source: 'canvas',\n elementID: -1,\n fetchForms: false,\n isFullScreen: true,\n defaultVisible: false,\n createOnSelection: false,\n actionToDispatchOnSelect: setResource\n};\n\nexport default WorkflowFormPicker;\n","import { InputType as BaseInputType } from '@projectstorm/react-canvas-core';\n\nconst InputType = {\n ...BaseInputType,\n MOUSE_LEAVE: 'mouse-leave'\n};\n\nexport const InputTypeMap = {\n keyup: InputType.KEY_UP,\n mouseup: InputType.MOUSE_UP,\n keydown: InputType.KEY_DOWN,\n wheel: InputType.MOUSE_WHEEL,\n mousedown: InputType.MOUSE_DOWN,\n mousemove: InputType.MOUSE_MOVE,\n mouseleave: InputType.MOUSE_LEAVE\n};\n\nexport default InputType;\n","import { State, Action } from '@projectstorm/react-canvas-core';\n\nimport { InputTypeMap } from '../../../constants/inputType';\n\nclass DefaultState extends State {\n constructor(...props) {\n super(...props);\n\n this.isRegistered = false;\n }\n\n isActionForEvent({ event }, action) {\n return InputTypeMap[event.type] === action.options.type;\n }\n\n register(event) {\n if (this.isRegistered) {\n return;\n }\n\n this.isRegistered = true;\n const stateMachine = this.engine.getStateMachine();\n stateMachine.stateStack.push(this);\n\n for (let i = 0; i < this.actions.length; i++) {\n const action = this.actions[i];\n this.engine.getActionEventBus().registerAction(action);\n if (this.isActionForEvent(event, action)) {\n action.options.fire(event);\n }\n }\n }\n\n deregister() {\n if (!this.isRegistered) {\n return;\n }\n\n this.isRegistered = false;\n const stateMachine = this.engine.getStateMachine();\n let index = stateMachine.stateStack.length;\n while (index--) {\n if (stateMachine.stateStack[index] === this) {\n stateMachine.stateStack.splice(index, 1);\n for (let i = 0; i < this.actions.length; i++) {\n this.engine.getActionEventBus().deregisterAction(this.actions[i]);\n }\n break;\n }\n }\n }\n\n getModelByEvent(event) {\n try {\n return this.engine.getActionEventBus().getModelForEvent(event);\n } catch (error) {\n console.error(error);\n return false;\n }\n }\n\n registerAction(type, handler) {\n return super.registerAction(new Action({\n type,\n name: `${this.options.name}-${type}`,\n fire: event => {\n try {\n const model = this.getModelByEvent(event);\n return handler ? handler(event, model) : undefined;\n } catch (error) {\n console.error(error);\n return false;\n }\n }\n }));\n }\n\n eject() {\n this.deregister();\n }\n}\n\nexport default DefaultState;\n","import { InputType } from '@projectstorm/react-canvas-core';\n\nimport DefaultState from './default';\nimport BaseNodeModel from '../BaseNode/model';\n\nimport { elementTypes } from '../../../constants/elementTypes';\nimport { SHOW_PORT_NAME } from '../../../constants/diagramStateNames';\n\nclass ShowPortState extends DefaultState {\n constructor() {\n super({ name: SHOW_PORT_NAME });\n this.model = false;\n\n this.registerAction(InputType.MOUSE_MOVE, this.handleMouseMove);\n }\n\n handleMouseMove = ({ event }, model) => {\n if (!(model instanceof BaseNodeModel) || model.isLocked() || model.getType() === elementTypes.PLACEHOLDER) {\n return;\n }\n\n this.model = model;\n const mousePoint = this.engine.getRelativeMousePoint(event);\n model.makeClosestPortVisible(mousePoint);\n };\n\n deregister = () => {\n if (this.model) {\n this.model.hideAllPorts();\n this.model = false;\n }\n\n super.deregister();\n };\n}\n\nexport default ShowPortState;\n","import DefaultState from './default';\nimport WatchmanRecorder from '../../../utils/WatchmanRecorder';\n\nimport InputType from '../../../constants/inputType';\nimport { DRAG_NODE_NAME } from '../../../constants/diagramStateNames';\nimport CanvasEngineBuilder from '../../../modules/Canvas/V1/CanvasEngineBuilder';\nimport { distSquare } from '../../../utils/math/findClosestPoint';\n\nclass DragNodeState extends DefaultState {\n constructor({ onUpdateElement, onDragStateChange }) {\n super({ name: DRAG_NODE_NAME });\n this.initialPositions = {};\n this.isLabelDropAreasVisible = false;\n this.onUpdateElement = onUpdateElement;\n this.onDragStateChange = onDragStateChange;\n\n this.registerAction(InputType.MOUSE_UP, this.handleMouseUp);\n this.registerAction(InputType.MOUSE_DOWN, this.handleMouseDown);\n this.registerAction(InputType.MOUSE_MOVE, this.handleMouseMove);\n }\n\n handleMouseDown = ({ event: { clientX, clientY } }) => {\n this.initialX = clientX;\n this.initialY = clientY;\n\n const items = [\n ...CanvasEngineBuilder.getSelectedNodes(),\n ...CanvasEngineBuilder.getSelectionBoxes()\n ];\n items.forEach(item => {\n if (item.isLocked()) {\n return;\n }\n\n if (!this.initialPositions[item.getID()]) {\n this.initialPositions[item.getID()] = {\n point: item.getPosition(),\n item: item\n };\n }\n });\n };\n\n handleMouseMove = ({ event }) => {\n const { clientX, clientY } = event;\n const zoomScale = this.engine.getModel().getZoomLevel() / 100.0;\n const virtualDisplacementX = (clientX - this.initialX) / zoomScale;\n const virtualDisplacementY = (clientY - this.initialY) / zoomScale;\n\n const items = [\n ...CanvasEngineBuilder.getSelectedNodes(),\n ...CanvasEngineBuilder.getSelectionBoxes()\n ];\n items.forEach(item => {\n if (item.isLocked()) {\n return;\n }\n\n const pos = this.initialPositions[item.getID()].point;\n item.setPosition({ x: pos.x + virtualDisplacementX, y: pos.y + virtualDisplacementY });\n });\n };\n\n deregister = () => {\n const items = CanvasEngineBuilder.getSelectedNodes();\n const elements = [];\n items.forEach(item => {\n if (item.isLocked()) {\n return;\n }\n const elementID = item.getID();\n const position = item.getPosition();\n if (this.initialPositions[elementID]) { // handle mouse over\n const initialPosition = this.initialPositions[elementID].point;\n const isConsiderableChange = distSquare(initialPosition, position) >= 10;\n if (isConsiderableChange) {\n elements.push({ elementID, position, ...position });\n }\n }\n });\n\n this.onUpdateElement(elements);\n WatchmanRecorder.trackEvent('canvas-dragElement-mouseUp', { elements });\n\n this.initialPositions = {};\n super.deregister();\n };\n}\n\nexport default DragNodeState;\n","import debounce from 'lodash/debounce';\n\nimport DefaultState from './default';\n\nimport InputType from '../../../constants/inputType';\nimport { MOVE_NODE_NAME } from '../../../constants/diagramStateNames';\n\nclass MoveNodeState extends DefaultState {\n constructor({ onUpdateElement }) {\n super({ name: MOVE_NODE_NAME });\n\n this.keyDeltaMap = {\n arrowleft: { x: -1, y: 0 },\n arrowup: { x: 0, y: -1 },\n arrowright: { x: 1, y: 0 },\n arrowdown: { x: 0, y: 1 }\n };\n\n this.keyCodeDeltaMap = {\n 37: { x: -1, y: 0 },\n 38: { x: 0, y: -1 },\n 39: { x: 1, y: 0 },\n 40: { x: 0, y: 1 }\n };\n\n this.models = false;\n this.onUpdateElement = debounce(onUpdateElement, 300).bind(this);\n\n this.registerAction(InputType.KEY_DOWN, this.handleKeyDown);\n this.registerAction(InputType.MOUSE_DOWN, this.handleMouseDown);\n }\n\n moveItem = ({ x, y }, model) => {\n const oldPosition = model.getPosition();\n const position = { x: oldPosition.x + x, y: oldPosition.y + y };\n model.setPosition(position);\n this.onUpdateElement({ elementID: model.getID(), position, ...position });\n };\n\n handleMouseDown = () => {\n this.models = this.engine.getModel().getSelectedEntities();\n };\n\n handleKeyDown = ({ event: { key } }) => {\n this.models = this.engine.getModel().getSelectedEntities();\n if (!this.models.length) {\n return;\n }\n\n const [keyMethodName, deltaListKey] = key ? ['getKeys', 'keyDeltaMap'] : ['getKeyCodes', 'keyCodeDeltaMap'];\n const pressedKeyList = this.engine.getActionEventBus()[keyMethodName]();\n const deltaPosition = pressedKeyList\n .map(tmpKey => this[deltaListKey][tmpKey])\n .filter(val => val)\n .reduce((prev, curr) => {\n return {\n x: prev.x + curr.x,\n y: prev.y + curr.y\n };\n }, { x: 0, y: 0 });\n\n if (deltaPosition.x === 0 && deltaPosition.y === 0) {\n return;\n }\n this.models.forEach(model => {\n this.moveItem(deltaPosition, model);\n });\n this.engine.repaintCanvas();\n };\n\n deregister = () => {\n this.models = false;\n super.deregister();\n };\n}\n\nexport default MoveNodeState;\n","import { DefaultLabelModel } from '@projectstorm/react-diagrams';\nimport { DEFAULT_LABEL_TYPE } from '../../../constants/identifiers';\nimport { DEFAULT_FEATURES, LABEL_POSITION_IMPROVEMENT } from '../../../constants/features';\n\nclass LabelModel extends DefaultLabelModel {\n constructor(props) {\n super({\n ...props,\n offsetY: 0,\n highlight: false,\n isPushNodeActive: false,\n type: DEFAULT_LABEL_TYPE\n });\n this.clearForceRenderTimeout = null;\n this.updateValue = null;\n }\n\n setHighlight(isHiglighted) {\n this.options.highlight = isHiglighted;\n }\n\n setIsPushNodeActive(isActive) {\n this.options.isPushNodeActive = isActive;\n }\n\n getIsPushNodeActive() {\n return this.getOptions().isPushNodeActive;\n }\n\n getLabel() {\n return this.getOptions().label;\n }\n\n setLabel(labelText, isSilent = false) {\n super.setLabel(labelText);\n const link = this.getParent();\n if (!isSilent) {\n link.fireEvent({ link }, 'labelTextChanged');\n }\n }\n\n setForceRender() {\n this.options.forceRender = true;\n\n if (this.clearForceRenderTimeout) {\n global.clearTimeout(this.clearForceRenderTimeout);\n }\n\n this.clearForceRenderTimeout = setTimeout(() => {\n this.options.forceRender = false;\n }, 500);\n }\n\n setEditingInProgress(val) {\n // Imperative\n this.options.isEditInProgress = val;\n }\n\n deserialize(event) {\n super.deserialize(event);\n this.options.forceRender = false;\n }\n\n serialize() {\n return {\n ...super.serialize(),\n offsetX: this.options.offsetX,\n offsetY: this.options.offsetY,\n isPushNodeActive: this.options.isPushNodeActive,\n forceRender: this.options.forceRender\n };\n }\n\n getCenter() {\n const { center } = this.findPathAndRelativePositionToRenderLabel() || { center: { x: 0, y: 0 } };\n return center;\n }\n\n findPathAndRelativePositionToRenderLabelWithDimensions = labelDimensions => {\n if (!DEFAULT_FEATURES[LABEL_POSITION_IMPROVEMENT] || !labelDimensions) {\n return this.findPathAndRelativePositionToRenderLabel();\n }\n\n const link = this.getParent();\n const linkPoints = link.getPoints();\n const linkPointsLength = linkPoints.length;\n const { 0: portAlignment } = link.sourcePort.getPortAlignments();\n\n let startPoint = linkPoints[Math.floor(linkPointsLength / 2)];\n let endPoint = linkPoints[Math.floor(linkPointsLength / 2 + 1)];\n\n switch (portAlignment) {\n case 'BOTTOM':\n case 'TOP':\n if (linkPointsLength === 4 && Math.abs(startPoint.position.y - endPoint.position.y) < (labelDimensions.height * 1.5)) {\n [, startPoint, endPoint] = linkPoints;\n }\n break;\n case 'RIGHT':\n case 'LEFT':\n if (linkPointsLength === 4 && Math.abs(startPoint.position.x - endPoint.position.x) < (labelDimensions.width * 1.5)) {\n [, startPoint, endPoint] = linkPoints;\n } else if (linkPointsLength === 6) {\n [, , startPoint, endPoint] = linkPoints;\n }\n break;\n default:\n break;\n }\n\n const center = {\n x: (endPoint.position.x + startPoint.position.x) / 2,\n y: (endPoint.position.y + startPoint.position.y) / 2\n };\n return { center };\n };\n\n findPathAndRelativePositionToRenderLabel = () => {\n const link = this.getParent();\n const lengths = link.getRenderedPath().map(path => path.getTotalLength());\n\n let labelPosition = lengths.reduce((previousValue, currentValue) => previousValue + currentValue, 0) * 0.5;\n\n let pathIndex = 0;\n while (pathIndex < link.getRenderedPath().length) {\n if (labelPosition - lengths[pathIndex] < 0) {\n const position = labelPosition;\n const path = link.getRenderedPath()[pathIndex];\n const center = path.getPointAtLength(labelPosition);\n return { path, center, position };\n }\n\n labelPosition -= lengths[pathIndex];\n pathIndex++;\n }\n };\n\n calculateLabelPosition = ({ width, height }) => {\n const labelDimensions = { width, height };\n const found = this.findPathAndRelativePositionToRenderLabelWithDimensions(labelDimensions);\n if (!found) {\n return;\n }\n\n const { center } = found;\n const labelCoordinates = {\n x: center.x - labelDimensions.width / 2 + this.getOptions().offsetX,\n y: center.y - labelDimensions.height / 2 + this.getOptions().offsetY\n };\n\n return `translate(${labelCoordinates.x}px, ${labelCoordinates.y}px)`;\n };\n}\n\nexport default LabelModel;\n","import { PointModel as DefaultPointModel } from '@projectstorm/react-diagrams-core';\n\nclass PointModel extends DefaultPointModel {\n constructor({ isDirty = false, ...props }) {\n super({ ...props, isDirty });\n }\n\n getIsDirty() {\n const { isDirty } = this.getOptions();\n return isDirty;\n }\n\n setDirty() {\n this.options.isDirty = true;\n }\n\n serialize() {\n return {\n ...super.serialize(),\n isDirty: this.options.isDirty\n };\n }\n}\n\nexport default PointModel;\n","import { isPathsIntersect } from '../geometry/intersection';\nimport { getMovingPointPositionByPort, getOffsetedPortPosition } from './calculatePointPositions';\n\nconst isLineIntersectPortParent = (line, port) => {\n const nodeLines = port.getParent().getLines();\n const lineIntersection = Object.entries(nodeLines).find(([, tmpLine]) => isPathsIntersect(line, tmpLine, true));\n return Boolean(lineIntersection);\n};\n\nconst isLineIntersectionPortParents = (line, sourcePort, targetPort) => isLineIntersectPortParent(line, sourcePort) || isLineIntersectPortParent(line, targetPort);\n\nconst getNumberOfExtraPoints = (sourcePort, targetPort) => {\n const sourcePosition = getMovingPointPositionByPort(sourcePort, targetPort);\n const minDistanceForArrow = 50;\n const targetPosition = targetPort.getOffsettedPointPosition();\n const shortestLine = [sourcePosition, targetPosition];\n if (isLineIntersectionPortParents(shortestLine, sourcePort, targetPort)) {\n const isSameVerticalAlignment = sourcePosition?.x === targetPosition?.x && sourcePort?.position.x === targetPort?.position.x;\n const isSameHorizontalAlignment = sourcePosition?.y === targetPosition?.y && sourcePort?.position.y === targetPort?.position.y;\n if (isSameVerticalAlignment && Math.abs(sourcePort.position.y - targetPort.position.y) < minDistanceForArrow) {\n return 0;\n }\n if (isSameHorizontalAlignment && Math.abs(sourcePort.position.x - targetPort.position.x) < minDistanceForArrow) {\n return 0;\n }\n return 2;\n }\n\n const offsetedPortPosition = getOffsetedPortPosition(sourcePort);\n const shortestLineWithBaseExtraPoint = [offsetedPortPosition, sourcePosition];\n if (isLineIntersectionPortParents(shortestLineWithBaseExtraPoint, sourcePort, targetPort)) {\n return 3;\n }\n\n const sourcePortDirectionalAlignment = sourcePort.getDirectionalAlignment();\n const targetPortDirectionalAlignment = targetPort.getDirectionalAlignment();\n if (sourcePortDirectionalAlignment === targetPortDirectionalAlignment) {\n return 0;\n }\n\n return 1;\n};\n\nexport default getNumberOfExtraPoints;\n","import PointModel from '../../components/Diagrams/Point/model';\n\nimport findClosestPoint from '../math/findClosestPoint';\nimport getNumberOfExtraPoints from './getNumberOfExtraPoints';\n\nimport { LINK_OFFSET } from '../../styles/variables';\n\nexport const getPortPosition = port => port.getCenter();\nexport const getOffsetedPortPosition = (port, extraOffset) => port.getOffsettedPointPosition(extraOffset);\n\nexport const getMovingPointPositionByPosition = (sourcePort, targetPosition) => {\n const alignment = sourcePort.getAlignment();\n const { x: targetX, y: targetY } = targetPosition;\n const { x: staticPointX, y: staticPointY } = getOffsetedPortPosition(sourcePort);\n switch (alignment) {\n case 'TOP':\n case 'BOTTOM':\n return { x: targetX, y: staticPointY };\n case 'LEFT':\n case 'RIGHT':\n return { x: staticPointX, y: targetY };\n default:\n return { x: 0, y: 0 };\n }\n};\n\nexport const getMovingPointPositionByPort = (sourcePort, targetPort) => getMovingPointPositionByPosition(sourcePort, targetPort.getOffsettedPointPosition());\n\nexport const getExtraPointPositions = (sourcePort, targetPort) => {\n const numberOfExtraPoints = getNumberOfExtraPoints(sourcePort, targetPort);\n if (numberOfExtraPoints === 0) {\n return [];\n }\n\n const extraPoints = [];\n const targetStaticPoint = getOffsetedPortPosition(targetPort);\n\n if (numberOfExtraPoints === 2) {\n const baseNodePoints = targetPort.getParent().getPoints();\n const baseNeedlePoint = sourcePort.isVertical() ? targetPort.getCenter() : targetStaticPoint;\n const { index: closestPointIndex } = findClosestPoint(Object.values(baseNodePoints), baseNeedlePoint);\n const [closestPointName, closestEdgePoint] = Object.entries(baseNodePoints)[closestPointIndex];\n const isVerticalToVertical = sourcePort.isVertical() && targetPort.isVertical();\n\n switch (closestPointName) {\n case 'topLeftPoint':\n case 'bottomLeftPoint': {\n const point = isVerticalToVertical ? { x: targetStaticPoint.x, y: closestEdgePoint.y - LINK_OFFSET } : { x: closestEdgePoint.x - LINK_OFFSET, y: targetStaticPoint.y };\n extraPoints.push(point);\n break;\n }\n case 'topRightPoint':\n case 'bottomRightPoint': {\n const point = isVerticalToVertical ? { x: targetStaticPoint.x, y: closestEdgePoint.y - LINK_OFFSET } : { x: closestEdgePoint.x + LINK_OFFSET, y: targetStaticPoint.y };\n extraPoints.push(point);\n break;\n }\n default:\n break;\n }\n }\n\n if (numberOfExtraPoints > 0) {\n extraPoints.push(targetStaticPoint);\n }\n\n return extraPoints;\n};\n\nexport const getPointPositionsByPort = (sourcePort, targetPort) => {\n const sourcePosition = getPortPosition(sourcePort);\n const targetPosition = getPortPosition(targetPort);\n const sourcePortOffsettedPosition = getOffsetedPortPosition(sourcePort);\n const extraPointsPositions = getExtraPointPositions(sourcePort, targetPort);\n const sourceMovingPointPosition = extraPointsPositions.length > 0 ? getMovingPointPositionByPosition(sourcePort, extraPointsPositions[0]) : getMovingPointPositionByPort(sourcePort, targetPort);\n\n return [\n sourcePosition,\n sourcePortOffsettedPosition,\n sourceMovingPointPosition,\n ...extraPointsPositions,\n targetPosition\n ];\n};\n\nexport const getPointPositionsByPosition = (sourcePort, targetPosition) => {\n return [\n getPortPosition(sourcePort),\n getOffsetedPortPosition(sourcePort),\n getMovingPointPositionByPosition(sourcePort, targetPosition),\n targetPosition\n ];\n};\n\nexport const getPointPositionsByPortForDirtyLink = (sourcePort, targetPort, currentPoints) => {\n return [\n new PointModel({ position: getPortPosition(sourcePort) }),\n ...currentPoints.slice(1, -1),\n new PointModel({ position: getPortPosition(targetPort) })\n ];\n};\n\nexport const convertPositionsToPoint = positions => positions.map(position => new PointModel({ position }));\nexport const getPointsByFN = fn => (...params) => convertPositionsToPoint((fn(...params)));\nexport const getPointsByPort = (sourcePort, targetPort) => getPointsByFN(getPointPositionsByPort)(sourcePort, targetPort);\nexport const getPointsByPosition = (sourcePort, targetPosition) => getPointsByFN(getPointPositionsByPosition)(sourcePort, targetPosition);\n","export default {\n 0: 'BOTTOM', // To Bottom\n 90: 'LEFT', // To Left\n 180: 'TOP', // To Top\n 270: 'RIGHT' // To Right\n};\n","import angleDirectionMap from '../../constants/angleDirectionMap';\n\nconst calculateAngle = ({ x: beginX, y: beginY }, { x: endX, y: endY }, snap = false) => {\n const { atan2, PI } = Math;\n\n const rawAngle = 90 + (atan2(endY - beginY, endX - beginX) * 180) / PI;\n if (!snap) return rawAngle;\n\n const snapPoints = Object.keys(angleDirectionMap).map(a => a / 1);\n if (snapPoints.includes(rawAngle)) return rawAngle;\n\n const { found: closest } = snapPoints.reduce((prev, eachPoint) => {\n const normalizedAngle = rawAngle < 0 ? 360 + rawAngle : rawAngle;\n const diff = Math.abs(eachPoint - Math.round(normalizedAngle));\n const { shortestDiff } = prev;\n return diff < shortestDiff ? { found: eachPoint, shortestDiff: diff } : prev;\n }, { found: false, shortestDiff: Infinity });\n return closest;\n};\n\nexport const calculateAngleForThreePoints = (point1, point2, point3) => (\n (Math.atan2(point3.y - point2.y, point3.x - point2.x) - Math.atan2(point1.y - point2.y, point1.x - point2.x) + 3 * Math.PI) % (2 * Math.PI)\n) - Math.PI;\n\nexport default calculateAngle;\n","import { generateRectanglePoints } from './generateRectangle';\nimport isPointInsideRectangle from './isPointInsideRectangle';\n\nimport { LINK_OFFSET } from '../../styles/variables';\n\nconst isPointsTooCloseToDraw = (position1, position2, distance = LINK_OFFSET) => {\n const squareLineLength = distance * 2;\n const topLeftPoint = { x: position1.x - distance, y: position1.y - distance };\n const { bottomRightPoint } = generateRectanglePoints({ point: topLeftPoint, width: squareLineLength, height: squareLineLength });\n return isPointInsideRectangle({ topLeftPoint, bottomRightPoint, position: position2 });\n};\n\nexport default isPointsTooCloseToDraw;\n","import calculatePointDelta from './calculatePointDelta';\n\nexport const calculateDirectionFromDelta = ({ x: deltaX, y: deltaY }) => {\n return { x: Math.sign(deltaX), y: Math.sign(deltaY) };\n};\n\nconst calculateDirection = (point1, point2) => {\n const delta = calculatePointDelta(point1, point2);\n return calculateDirectionFromDelta(delta);\n};\n\nexport default calculateDirection;\n","import isEqual from 'lodash/isEqual';\n\nimport { calculateAngleForThreePoints } from '../math/calculateAngle';\nimport { CURVE_RADIUS, LINK_OFFSET } from '../../styles/variables';\nimport calculatePointDelta from './calculatePointDelta';\nimport isPointsTooCloseToDraw from './isPointsTooCloseToDraw';\nimport { calculateDirectionFromDelta } from './calculateDirection';\n\nconst isDistanceEnoughForCurve = delta => !Object.values(delta).every(axisValue => Math.abs(axisValue) < CURVE_RADIUS);\nlet updatedRadius = CURVE_RADIUS;\n\nconst generateCurvedPathDrawn = pointPositions => {\n const { 0: firstPointPosition, length: numberOfPoints } = pointPositions;\n const { tempPathDrawn: pathDrawn } = pointPositions.reduce(({ tempPathDrawn, prevPosition }, currentPosition, index) => {\n if (index === 0) {\n return { prevPosition, tempPathDrawn };\n }\n\n if (index === numberOfPoints - 1) {\n return {\n prevPosition: currentPosition,\n tempPathDrawn: `${tempPathDrawn} L${currentPosition.x},${currentPosition.y}`\n };\n }\n\n const nextPosition = pointPositions[index + 1];\n const deltaWithPrevPoint = calculatePointDelta(prevPosition, currentPosition);\n const deltaWithNextPoint = calculatePointDelta(currentPosition, nextPosition);\n const currentDirection = calculateDirectionFromDelta(deltaWithPrevPoint);\n const nextDirection = calculateDirectionFromDelta(deltaWithNextPoint);\n\n const isMalformedLine = currentDirection.x !== 0 && currentDirection.y !== 0;\n const isNextPointTooClose = isPointsTooCloseToDraw(currentPosition, nextPosition, LINK_OFFSET);\n const isPrevPointTooClose = isPointsTooCloseToDraw(prevPosition, currentPosition, CURVE_RADIUS);\n if (isPrevPointTooClose || (isMalformedLine && isNextPointTooClose)) {\n return { prevPosition, tempPathDrawn };\n }\n\n const isDirectionChanged = !isEqual(currentDirection, nextDirection);\n const isNextDistanceEnoughForCurve = isDistanceEnoughForCurve(deltaWithNextPoint);\n if (isDistanceEnoughForCurve && Object.values(deltaWithNextPoint).every(axisValue => Math.abs(axisValue) < CURVE_RADIUS * 2 && Math.abs(axisValue) >= 0)) {\n updatedRadius = CURVE_RADIUS / 8;\n } else {\n updatedRadius = CURVE_RADIUS;\n }\n const isArcRequired = isNextDistanceEnoughForCurve && isDirectionChanged;\n if (!isArcRequired) {\n return {\n prevPosition: currentPosition,\n tempPathDrawn: `${tempPathDrawn} L${currentPosition.x},${currentPosition.y}`\n };\n }\n\n const destinationDirection = isMalformedLine ? {\n x: nextDirection.x === 0 ? currentDirection.x : 0,\n y: nextDirection.y === 0 ? currentDirection.y : 0\n } : currentDirection;\n\n const lineDestinationPoint = {\n x: currentPosition.x - (updatedRadius) * destinationDirection.x,\n y: currentPosition.y - (updatedRadius) * destinationDirection.y\n };\n const line = `L${lineDestinationPoint.x},${lineDestinationPoint.y}`;\n\n const degree = calculateAngleForThreePoints(prevPosition, currentPosition, nextPosition);\n const sweepFlag = degree > 0 ? 0 : 1;\n const arcDestionationPoint = {\n x: currentPosition.x + (updatedRadius) * nextDirection.x,\n y: currentPosition.y + (updatedRadius) * nextDirection.y\n };\n const arc = `A${updatedRadius},${updatedRadius} 0 0 ${sweepFlag} ${arcDestionationPoint.x} ${arcDestionationPoint.y}`;\n\n return {\n prevPosition: currentPosition,\n tempPathDrawn: `${tempPathDrawn} ${line} ${arc}`\n };\n }, {\n prevPosition: firstPointPosition,\n tempPathDrawn: `M${firstPointPosition.x} ${firstPointPosition.y}`\n });\n\n return pathDrawn;\n};\n\nexport const generateCurvedPathDrawnFromPoints = points => generateCurvedPathDrawn(points.map(({ position }) => position));\n\nexport default generateCurvedPathDrawn;\n","import { DefaultLinkModel } from '@projectstorm/react-diagrams';\n\nimport LabelModel from '../Label/model';\nimport PointModel from '../Point/model';\nimport CanvasEngineBuilder from '../../../modules/Canvas/V1/CanvasEngineBuilder';\n\nimport { getPointsByPosition, getOffsetedPortPosition, getPointsByPort } from '../../../utils/diagram/calculatePointPositions';\n\nimport { DEFAULT_LINK_TYPE } from '../../../constants/identifiers';\nimport { DEFAULT_FEATURES, COLORED_LINK, PUSH_NODES } from '../../../constants/features';\nimport { generateCurvedPathDrawnFromPoints } from '../../../utils/diagram/generateCurvedPathDrawn';\nimport { LINK_STYLE, WIDGET_WRAPPER_WIDTH, WIDGET_WRAPPER_HEIGHT } from '../../../styles/variables';\n\nclass LinkModel extends DefaultLinkModel {\n constructor(options = {}) {\n const id = CanvasEngineBuilder.getNextLinkID();\n super({\n id,\n type: DEFAULT_LINK_TYPE,\n color: LINK_STYLE.colors.default,\n selectedColor: LINK_STYLE.colors.selected,\n width: LINK_STYLE.strokeWidth,\n ...options\n });\n\n this.sagaChannel = null;\n this.draggingPointIndexes = [];\n this.updatePathDrawn();\n }\n\n get isLabelHovered() {\n const label = this.getLabel();\n return label?.options?.highlight;\n }\n\n get animated() {\n if (!global.isStandalone || !global.isTemplateMode) {\n return false;\n }\n\n const { id } = this.getOptions();\n const searchParams = new URLSearchParams(document?.location?.search || '');\n const highlight = searchParams.get('highlight');\n const list = highlight ? highlight.split(',') : [];\n return list.indexOf(`${id}`) >= 0;\n }\n\n get isDirty() {\n return this.getPoints().find(point => point.getIsDirty && point.getIsDirty());\n }\n\n getLabel() {\n return this.getLabels()[0];\n }\n\n getPaths() {\n const points = this.getPoints();\n const paths = points.reduce((prev, curr, index) => {\n if (index === points.length - 1) {\n return prev;\n }\n\n const path = points.slice(index, index + 2).map(point => point.getPosition());\n return [...prev, path];\n }, []);\n\n return paths;\n }\n\n getPointPositions() {\n const points = this.getPoints();\n return points.map(point => ({ ...point.getPosition(), id: point.getID() }));\n }\n\n getDraggingPointIndexes() {\n return this.draggingPointIndexes;\n }\n\n setDraggingPointIndexes(indexList) {\n this.draggingPointIndexes = indexList;\n }\n\n getDraggingPoints() {\n const points = this.getPoints();\n return this.draggingPointIndexes.map(index => points[index]);\n }\n\n getOwnerElement() {\n return this.sourcePort.getParent();\n }\n\n getOwnerElementID() {\n const ownerElement = this.getOwnerElement();\n return ownerElement.getID();\n }\n\n getTargetElement() {\n return this.targetPort.getParent();\n }\n\n getColorInfo() {\n const label = this.getLabel();\n const { id, color, selectedColor } = this.getOptions();\n const outcome = DEFAULT_FEATURES[COLORED_LINK]\n ? this.getOwnerElement().getOutcomes().find(({ linkID }) => linkID === id)\n : null;\n\n switch (true) {\n case Boolean(label) && label.getOptions().highlight:\n return { color: selectedColor };\n case this.isSelected():\n return { color: selectedColor };\n case Boolean(outcome):\n if (outcome?.type === 'CONDITION') {\n const conditionColor = outcome?.conditionValue === 'TRUE' ? '#D520E7' : '#06EFD6';\n return { color: outcome.buttonColor || conditionColor };\n }\n return { color: outcome.buttonColor };\n case this.animated:\n return { color: LINK_STYLE.colors.animated };\n default:\n return { color };\n }\n }\n\n addLabel(label) {\n let labelModel;\n switch (true) {\n case label instanceof LabelModel:\n labelModel = label;\n break;\n case typeof label === 'object':\n labelModel = new LabelModel({ ...label });\n break;\n case typeof label === 'string':\n labelModel = new LabelModel({ label });\n break;\n default:\n break;\n }\n super.addLabel(labelModel);\n }\n\n setTargetPort(port) {\n if (port !== null) {\n port.addLink(this);\n }\n\n if (this.targetPort !== null && this.targetPort !== port) {\n this.targetPort.removeLink(this);\n }\n\n this.targetPort = port;\n this.fireEvent({ port }, 'targetPortChanged');\n }\n\n addPointAtIndex(position, index) {\n const points = this.getPoints();\n this.points = [\n ...points.slice(0, index),\n new PointModel({ position }),\n ...points.slice(index)\n ];\n }\n\n setPoints(points) {\n this.points = points;\n this.updatePathDrawn();\n }\n\n updatePathDrawn() {\n const points = this.getPoints();\n this.pathDrawn = generateCurvedPathDrawnFromPoints(points);\n }\n\n initializePoints() {\n if (!this.sourcePort) {\n return;\n }\n\n this.updatePointsByPosition(getOffsetedPortPosition(this.sourcePort));\n }\n\n updatePointsByPosition(position) {\n this.setPoints(getPointsByPosition(this.sourcePort, position));\n }\n\n updatePointsByPort(targetPort) {\n this.setPoints(getPointsByPort(this.sourcePort, targetPort));\n }\n\n updatePoints() {\n this.updatePointsByPort(this.targetPort);\n }\n\n serialize() {\n if (DEFAULT_FEATURES[PUSH_NODES]) {\n const sourcePortY = this.getSourcePort()?.position?.y;\n const targetPortY = this.getTargetPort()?.position?.y;\n if (this.isLabelHovered && Math.abs(sourcePortY - targetPortY) < 270) {\n const label = this.getLabel();\n label.setIsPushNodeActive(true);\n }\n }\n\n const { showToolBox } = this.options;\n\n return {\n ...super.serialize(this),\n showToolBox,\n isLabelHovered: this.isLabelHovered,\n draggingPointIndexes: this.draggingPointIndexes\n };\n }\n\n setLabels(labels = []) {\n this.labels = labels;\n }\n\n getPlaceholderPositionAndPort() {\n const [{ position: lastPointPosition }] = this.getPoints().slice(-1);\n const sourcePort = this.getSourcePort();\n const sourcePortAlignment = sourcePort.getDirectionalAlignment();\n const { isAbove, isOnLeft } = sourcePort.getRelativeAlignment(lastPointPosition);\n\n let position = lastPointPosition;\n let portName = 'DYNAMIC_TOP_1_In';\n switch (true) {\n case sourcePortAlignment === 'HORIZONTAL': {\n const offset = isAbove ? 0 : WIDGET_WRAPPER_HEIGHT;\n portName = isAbove ? 'DYNAMIC_TOP_1_In' : 'DYNAMIC_BOTTOM_1_In';\n position = { x: lastPointPosition.x - (WIDGET_WRAPPER_WIDTH / 2), y: lastPointPosition.y - offset };\n break;\n }\n case sourcePortAlignment === 'VERTICAL': {\n const offset = isOnLeft ? 0 : WIDGET_WRAPPER_WIDTH;\n portName = isOnLeft ? 'LEFT_MIDDLE_In' : 'RIGHT_MIDDLE_In';\n position = { x: lastPointPosition.x - offset, y: lastPointPosition.y - (WIDGET_WRAPPER_HEIGHT / 2) };\n break;\n }\n default:\n break;\n }\n\n return { portName, position };\n }\n\n setSagaChannel(channel) {\n this.sagaChannel = channel;\n }\n\n getSagaChannel() {\n return this.sagaChannel;\n }\n\n remove() {\n const sagaChannel = this.getSagaChannel();\n if (sagaChannel) {\n sagaChannel.close();\n this.setSagaChannel(null);\n }\n\n this.setSelected(false);\n super.remove();\n }\n\n setSelected(selectionState) {\n super.setSelected(selectionState);\n\n if (selectionState) {\n this.showToolBox();\n } else {\n this.hideToolBox();\n }\n }\n\n showToolBox() {\n this.options.showToolBox = true;\n }\n\n hideToolBox() {\n this.options.showToolBox = false;\n }\n}\n\nexport default LinkModel;\n","import DefaultState from './default';\nimport LinkModel from '../Link/model';\nimport BaseNodeModel from '../BaseNode/model';\n\nimport WatchmanRecorder from '../../../utils/WatchmanRecorder';\n\nimport InputType from '../../../constants/inputType';\nimport { EDIT_LINK_NAME } from '../../../constants/diagramStateNames';\n\nclass EditLinkState extends DefaultState {\n constructor() {\n super({ name: EDIT_LINK_NAME });\n\n this.link = false;\n this.ghostedModel = false;\n this.oldTargetPort = false;\n\n this.registerAction(InputType.MOUSE_UP, this.handleMouseUp);\n this.registerAction(InputType.MOUSE_DOWN, this.handleMouseDown);\n this.registerAction(InputType.MOUSE_MOVE, this.handleMouseMove);\n }\n\n handleMouseDown = () => {\n const [selectedLink] = this.engine.getModel().getSelectedEntities();\n this.link = selectedLink;\n this.oldTargetPort = this.link.getTargetPort();\n this.link.setTargetPort(null);\n };\n\n handleMouseMove = ({ event }, model) => {\n if (this.ghostedModel) {\n this.ghostedModel.setGhosted(false);\n this.ghostedModel = false;\n }\n\n const mousePoint = this.engine.getRelativeMousePoint(event);\n switch (true) {\n case model instanceof BaseNodeModel:\n const targetPort = model.getClosestPort(mousePoint, 'out') || model.getClosestPort(mousePoint, 'in');\n\n this.link.updatePointsByPort(targetPort);\n\n if (!this.link.getSourcePort().canLinkToPort(model)) {\n model.setGhosted(true);\n this.ghostedModel = model;\n }\n break;\n default:\n this.link.updatePointsByPosition(mousePoint);\n break;\n }\n };\n\n handleMouseUp = ({ event }, model) => {\n if (!this.link) {\n return;\n }\n\n if (this.ghostedModel) {\n this.ghostedModel.setGhosted(false);\n this.ghostedModel = false;\n }\n\n switch (true) {\n case model instanceof LinkModel:\n case model instanceof BaseNodeModel && !this.link.getSourcePort().canLinkToPort(model):\n this.link.setTargetPort(this.oldTargetPort);\n this.link.updatePoints();\n break;\n case model instanceof BaseNodeModel:\n const mousePoint = this.engine.getRelativeMousePoint(event);\n const targetPort = model.getClosestPort(mousePoint, 'in');\n this.link.setTargetPort(targetPort);\n targetPort.getParent().fireEvent({ port: targetPort }, 'existingTargetPortChanged');\n this.link.getOwnerElement().fireEvent({ link: this.link }, 'linkPortChanged');\n WatchmanRecorder.trackEvent('canvas-link-changePort', {\n fID: this.link.getSourcePort().getParent().getID(),\n tID: targetPort.getParent().getID(),\n fpName: this.link.getSourcePort().getName(),\n tpName: targetPort.getName()\n });\n break;\n default:\n break;\n }\n\n this.link = false;\n this.oldTargetPort = false;\n this.deregister();\n };\n\n deregister = () => {\n if (!this.link) {\n super.deregister();\n return;\n }\n\n this.link.setTargetPort(this.oldTargetPort);\n this.link.updatePoints();\n this.link = false;\n this.oldTargetPort = false;\n super.deregister();\n };\n}\n\nexport default EditLinkState;\n","import DefaultState from './default';\n\nimport WatchmanRecorder from '../../../utils/WatchmanRecorder';\n\nimport InputType from '../../../constants/inputType';\nimport { PAN_CANVAS_NAME } from '../../../constants/diagramStateNames';\n\nclass PanCanvasState extends DefaultState {\n constructor() {\n super({ name: PAN_CANVAS_NAME });\n\n this.prevPosition = {};\n\n this.registerAction(InputType.MOUSE_DOWN, this.handleMouseDown);\n this.registerAction(InputType.MOUSE_MOVE, this.handleMouseMove);\n this.oldCursor = '';\n }\n\n handleMouseDown = ({ event: { clientX, clientY } }) => {\n if (this.prevPosition.x && this.prevPosition.y) {\n return;\n }\n\n this.prevPosition = { x: clientX, y: clientY };\n };\n\n handleMouseMove = ({ event: { clientX, clientY } }) => {\n const model = this.engine.getModel();\n\n const deltaX = (this.prevPosition.x - clientX);\n const deltaY = (this.prevPosition.y - clientY);\n\n model.setOffsetX(model.getOffsetX() - deltaX);\n model.setOffsetY(model.getOffsetY() - deltaY);\n\n this.prevPosition = { x: clientX, y: clientY };\n this.engine.repaintCanvas();\n WatchmanRecorder.debouncedTrackEvent('canvas-move-pan');\n };\n\n deregister = () => {\n this.prevPosition = {};\n super.deregister();\n };\n}\n\nexport default PanCanvasState;\n","import BaseNodeModel from '../BaseNode/model';\n\nclass SelectionBoxModel extends BaseNodeModel {\n constructor({ width = 0, height = 0, ...props } = {}) {\n super({\n width,\n height,\n numberOfPorts: 0,\n type: 'selectionBox',\n ...props\n });\n }\n\n isTemporary = () => {\n return Boolean(this.options.isTemporary);\n };\n}\n\nexport default SelectionBoxModel;\n","import DefaultState from './default';\nimport LinkModel from '../Link/model';\nimport BaseNodeModel from '../BaseNode/model';\nimport SelectionBoxModel from '../SelectionBox/model';\n\nimport InputType from '../../../constants/inputType';\nimport { SELECTION_NAME } from '../../../constants/diagramStateNames';\n\nclass SelectionState extends DefaultState {\n constructor() {\n super({ name: SELECTION_NAME });\n this.registerAction(InputType.MOUSE_DOWN, this.handleMouseDown);\n }\n\n handleMouseDown = (event, model) => {\n if (model instanceof SelectionBoxModel) {\n return;\n }\n\n this.engine.model.clearSelection();\n this.engine.getModel().activeSelectionBoxLayer.removeAllSelectionBoxes();\n\n switch (true) {\n case model instanceof LinkModel:\n case model instanceof BaseNodeModel:\n const isGhosted = model instanceof BaseNodeModel ? model.isGhosted() : false;\n if ((!model.isLocked() && !isGhosted) || event.event.shiftKey) {\n model.setSelected(true);\n }\n break;\n default:\n this.engine.model.getSelectedEntities().forEach(selectedModel => selectedModel.isSelected() && selectedModel.setSelected(false));\n break;\n }\n };\n}\n\nexport default SelectionState;\n","import DefaultState from './default';\nimport PortModel from '../Port/model';\nimport LinkModel from '../Link/model';\nimport BaseNodeModel from '../BaseNode/model';\nimport PlaceholderModel from '../Placeholder/model';\n\nimport WatchmanRecorder from '../../../utils/WatchmanRecorder';\n\nimport InputType from '../../../constants/inputType';\nimport { elementTypes, elementTypesWithOutcome } from '../../../constants/elementTypes';\nimport { CREATE_LINK_NAME } from '../../../constants/diagramStateNames';\n\nclass CreateLinkState extends DefaultState {\n constructor() {\n super({ name: CREATE_LINK_NAME });\n\n this.registerAction(InputType.KEY_DOWN, this.handleKeyDown);\n this.registerAction(InputType.MOUSE_UP, this.handleMouseUp);\n this.registerAction(InputType.MOUSE_DOWN, this.handleMouseDown);\n this.registerAction(InputType.MOUSE_MOVE, this.handleMouseMove);\n\n this.link = false;\n this.sourcePort = false;\n this.ghostedElements = [];\n this.placeholderTimeout = 200;\n this.placeholderModel = false;\n this.placeholderCallback = false;\n }\n\n handleKeyDown = ({ event: { keyCode } }) => {\n if (keyCode !== 27) {\n return;\n }\n\n this.deregister();\n };\n\n handleMouseUp = ({ event }, model) => {\n switch (true) {\n case this.sourcePort && this.sourcePort.canLinkToPort(model): {\n const mousePoint = this.engine.getRelativeMousePoint(event);\n const targetPort = model instanceof PortModel ? model : model.getClosestPort(mousePoint, 'in');\n // Prevent circular linking, prevent linking to parents\n const parentIDsOfSourceModel = this.sourcePort.getParent().getAllParentElementIDs();\n if (parentIDsOfSourceModel.includes(targetPort.getParent().getID())) {\n this.deregister();\n return;\n }\n\n WatchmanRecorder.trackEvent('canvas-link-complete', {\n fID: this.sourcePort.getParent().getID(),\n tID: targetPort.getParent().getID(),\n fpName: this.sourcePort.getName(),\n tpName: targetPort.getName()\n });\n\n this.link.setTargetPort(targetPort);\n this.deregister(true);\n break;\n }\n case this.link === model && this.placeholderModel === false:\n this.deregister();\n break;\n case this.link === model || (model instanceof PlaceholderModel && model.getOptions().isTemporary): {\n this.link.fireEvent({}, 'addPlaceholderElement');\n WatchmanRecorder.trackEvent('canvas-link-addPlaceholder', {\n fID: this.sourcePort.getParent().getID(),\n fpName: this.sourcePort.getName()\n });\n\n this.deregister();\n break;\n }\n default:\n break;\n }\n };\n\n handleMouseDown = (event, model) => {\n switch (true) {\n case !this.link && !this.sourcePort && model instanceof PortModel && !model.isInPort() && !model.isLocked():\n this.sourcePort = model;\n const link = new LinkModel();\n link.setSourcePort(this.sourcePort);\n link.initializePoints();\n this.engine.getModel().clearSelection();\n this.link = this.engine.getModel().addLink(link);\n break;\n case this.link && model instanceof BaseNodeModel && this.link.getOwnerElement() === model:\n this.deregister();\n break;\n case this.link === model:\n case this.isPortChangeState:\n case this.link && (model instanceof PortModel || model instanceof BaseNodeModel):\n break;\n default:\n this.deregister();\n break;\n }\n };\n\n // eslint-disable-next-line complexity\n handleMouseMove = ({ event }, model) => {\n this.clearPlaceholder();\n this.clearGhostedElements();\n\n if (!this.link) {\n return;\n }\n\n const isOverSourceElement = (model instanceof BaseNodeModel && model === this.sourcePort.getParent()) || (model instanceof PortModel && model === this.sourcePort);\n const mousePoint = this.engine.getRelativeMousePoint(event);\n\n if (model instanceof BaseNodeModel && this.sourcePort.getParent().getType() === elementTypes.BINARY_DECISION && this.sourcePort.getParent().isMaxLinkCountReached()) {\n const targetPort = model.getClosestPort(mousePoint, 'out');\n this.link.updatePointsByPort(targetPort);\n this.makeElementGhosted(model);\n return;\n }\n\n if (isOverSourceElement) {\n this.makeElementGhosted(this.sourcePort.getParent());\n return;\n }\n\n switch (true) {\n case model instanceof BaseNodeModel && model.getType() === elementTypes.START_POINT: {\n const targetPort = model.getClosestPort(mousePoint, 'out');\n try {\n const sourceElementType = this.sourcePort.getParent().getType();\n WatchmanRecorder.trackEventOnce('canvas-link-to-start-point', {\n fID: this.sourcePort.getParent().getID(),\n tID: targetPort.getParent().getID(),\n fElementType: sourceElementType\n });\n } catch (e) {\n console.log('how?', e);\n }\n this.link.updatePointsByPort(targetPort);\n this.makeElementGhosted(model);\n break;\n }\n case model instanceof BaseNodeModel && this.sourcePort && !elementTypesWithOutcome.includes(this.sourcePort.getParent().getType()) && this.sourcePort.getParent().isLinkedToNode(model): {\n const targetPort = model.getClosestPort(mousePoint, 'out');\n this.link.updatePointsByPort(targetPort);\n this.makeElementGhosted(model);\n break;\n }\n case model instanceof BaseNodeModel && this.sourcePort && this.sourcePort.getParent() !== model && !model.getOptions().isTemporary: {\n const targetPort = model.getClosestPort(mousePoint, 'in');\n this.link.updatePointsByPort(targetPort);\n const notAllowedLink = !isOverSourceElement && !this.sourcePort.canLinkToPort(model);\n if (notAllowedLink) {\n this.makeElementGhosted(model);\n }\n break;\n }\n case model instanceof PortModel && this.sourcePort && this.sourcePort.getParent() !== model.getParent() && this.sourcePort.canLinkToPort(model): {\n this.link.updatePointsByPort(model);\n break;\n }\n default: {\n this.link.updatePointsByPosition(mousePoint);\n this.placeholderCallback = global.setTimeout(() => {\n this.placeholderModel = new PlaceholderModel({ id: -1, name: '', isTemporary: true });\n const { position } = this.link.getPlaceholderPositionAndPort();\n this.placeholderModel.setPosition(position);\n this.engine.getModel().addNode(this.placeholderModel);\n this.engine.repaintCanvas();\n }, this.placeholderTimeout);\n break;\n }\n }\n\n this.engine.repaintCanvas();\n };\n\n getPositionsToUpdate(event, model) {\n const { event: { clientX, clientY } } = event;\n\n switch (true) {\n case model instanceof BaseNodeModel && this.sourcePort.getParent() !== model: {\n const point = { x: clientX, y: clientY };\n const targetPort = model.getClosestPort(point, 'in');\n if (!targetPort) {\n return [{ x: clientX, y: clientY }];\n }\n\n const { position } = targetPort;\n if (this.link.isExtraPointNecessary(this.sourcePort, targetPort)) {\n return [position, this.link.getExtraMovingPointPosition(targetPort)];\n }\n return [position];\n }\n default:\n return [{ x: clientX, y: clientY }];\n }\n }\n\n clearPlaceholder() {\n if (this.placeholderCallback) {\n global.clearTimeout(this.placeholderCallback);\n this.placeholderCallback = false;\n }\n if (this.placeholderModel) {\n this.placeholderModel.remove();\n this.engine.repaintCanvas();\n this.placeholderModel = false;\n }\n }\n\n makeElementGhosted(model) {\n model.setGhosted(true);\n this.ghostedElements = [...this.ghostedElements, model];\n }\n\n clearGhostedElements() {\n this.ghostedElements.forEach(model => model.setGhosted(false));\n this.ghostedElements = [];\n }\n\n deregister = (preventRemove = false) => {\n if (!preventRemove && this.link) {\n this.link.remove();\n }\n\n this.clearState();\n super.deregister();\n };\n\n clearState() {\n this.clearPlaceholder();\n this.clearGhostedElements();\n\n this.link = undefined;\n this.sourcePort = undefined;\n }\n}\n\nexport default CreateLinkState;\n","import { InputType } from '@projectstorm/react-canvas-core';\n\nimport DefaultState from './default';\nimport LinkModel from '../Link/model';\nimport BaseNodeModel from '../BaseNode/model';\n\nimport { SHOW_TOOLBOX_NAME } from '../../../constants/diagramStateNames';\nimport CanvasEngineBuilder from '../../../modules/Canvas/V1/CanvasEngineBuilder';\n\nclass ShowToolBox extends DefaultState {\n constructor() {\n super({ name: SHOW_TOOLBOX_NAME });\n\n this.model = false;\n this.registerAction(InputType.MOUSE_MOVE, this.handleMouseMove);\n this.registerAction(InputType.MOUSE_DOWN, this.handleMouseDown);\n }\n\n handleMouseDown = () => {\n if (!this.model) {\n return;\n }\n this.model.showToolBox();\n };\n\n handleMouseMove = (event, model) => {\n if (!(model instanceof BaseNodeModel) && !(model instanceof LinkModel)) {\n this.deregister();\n return;\n }\n\n if (this.model && this.model !== model) {\n this.resetModel();\n }\n\n this.model = model;\n this.model.showToolBox();\n };\n\n resetModel = () => {\n if (!this.model.isSelected() || CanvasEngineBuilder.engine.getModel().getSelectedEntities().length > 1) {\n this.model.hideToolBox();\n }\n\n this.model = false;\n };\n\n deregister = () => {\n if (this.model) {\n this.resetModel();\n }\n\n super.deregister();\n };\n}\n\nexport default ShowToolBox;\n","const closest = (arr, needle) => arr.reduce((a, b) => {\n return Math.abs(b - needle) < Math.abs(a - needle) ? b : a;\n});\n\nexport default closest;\n","import { LayerModel } from '@projectstorm/react-canvas-core';\nimport maxBy from 'lodash/maxBy';\nimport minBy from 'lodash/minBy';\nimport closest from '../../../utils/math/closest';\nimport { DEFAULT_GUIDE_LAYER_TYPE } from '../../../constants/identifiers';\nimport { elementTypes } from '../../../constants/elementTypes';\n\nexport class GuideLayerModel extends LayerModel {\n GUIDE_THRESHOLD = 5;\n\n TOP_THRESHOLD = 10;\n\n constructor() {\n super({\n transformed: true,\n isSvg: false,\n type: DEFAULT_GUIDE_LAYER_TYPE\n });\n }\n\n setNodes = (selectedNodes, unSelectedNodes) => {\n this.selectedNodes = selectedNodes;\n this.unSelectedNodes = unSelectedNodes;\n const fourPortsElementList = [elementTypes.MERGE, elementTypes.SPLIT, elementTypes.END_POINT];\n const isSelectedNodeInList = fourPortsElementList.includes(this.selectedNodes[0]?.options.type);\n const selectedElementHeight = isSelectedNodeInList ? this.selectedNodes[0]?.options.height : 0;\n const selectedElementWidth = isSelectedNodeInList ? this.selectedNodes[0]?.options.width : 0;\n this.selectedItemsRect = this.getBoundingRect(this.selectedNodes, selectedElementHeight, selectedElementWidth);\n this.unSelectedNodesBoundingRects = this.unSelectedNodes.map(n => this.getBoundingRect([n], selectedElementHeight, selectedElementWidth));\n this.nodesSet = true;\n };\n\n hideGuides() {\n this.guidePositions = {\n x1: null,\n y1: null,\n x2: null,\n y2: null,\n x3: null,\n y3: null\n };\n }\n\n calculateGuides(mousePosition) {\n const getValidPointForGuide = (pointKey, selectedItemKey, axisKey) => {\n const validPoints = this.unSelectedNodesBoundingRects\n .filter(nodePoints => Math.abs(nodePoints[pointKey][axisKey] - mousePosition[axisKey]) <= this.GUIDE_THRESHOLD)\n .map(nodePoint => nodePoint[pointKey][axisKey]);\n\n if (validPoints.length === 0) {\n return;\n }\n if (selectedItemKey === 'topCenter') {\n if (validPoints.length === 1) {\n const checkIsValid = this.unSelectedNodesBoundingRects\n .filter(nodePoints => Math.abs(nodePoints[pointKey][axisKey] - mousePosition[axisKey]) <= this.GUIDE_THRESHOLD);\n if (Math.abs(checkIsValid[0].bottomCenter.x - checkIsValid[0].bottomLeft.x) < this.TOP_THRESHOLD || Math.abs(checkIsValid[0].topCenter.x - checkIsValid[0].topLeft.x) < this.TOP_THRESHOLD) {\n return;\n }\n }\n }\n const selectedItemRect = this.selectedItemsRect[selectedItemKey];\n if (!selectedItemRect) {\n return;\n }\n\n return closest(validPoints, selectedItemRect[axisKey]);\n };\n\n const x1 = getValidPointForGuide('topLeft', 'topRight', 'x');\n const y1 = getValidPointForGuide('topLeft', 'bottomLeft', 'y');\n const x2 = getValidPointForGuide('bottomRight', 'bottomLeft', 'x');\n const y2 = getValidPointForGuide('bottomRight', 'topRight', 'y');\n const x3 = getValidPointForGuide('bottomCenter', 'topCenter', 'x');\n const y3 = getValidPointForGuide('rightCenterShortEdge', 'leftCenterShortEdge', 'y');\n const x4 = getValidPointForGuide('topCenterForSmallElement', 'bottomCenterForSmallElement', 'x');\n\n this.guidePositions = {\n x1, y1, x2, y2, x3, y3, x4\n };\n\n if (this.guidePositions.x4 && this.guidePositions.y3) {\n return {\n x: x1 || x2 || x4,\n y: y1 || y2 || y3\n };\n }\n\n if (this.guidePositions.x1 && this.guidePositions.x3) {\n return {\n x: x3 || x2 || x1,\n y: y1 || y2 || y3\n };\n }\n\n return {\n x: x1 || x4 || x2 || x3,\n y: y1 || y2 || y3\n };\n }\n\n getChildModelFactoryBank() {\n // is not used as it doesnt serialize\n return null;\n }\n\n getBoundingRect(nodes, height = 0, width = 0) {\n const allPoints = nodes.map(node => node.getPoints());\n if (allPoints.length === 0) {\n return false;\n }\n const getMidCoor = (coor1, coor2) => { return (coor1 + coor2) / 2; };\n const minByKey = key => minBy(allPoints, point => point[key])[key] || null;\n const maxByKey = key => maxBy(allPoints, point => point[key])[key] || null;\n const topCenter = {\n x: getMidCoor(minByKey('topLeftPoint').x, maxByKey('topRightPoint').x) - (width / 2 - 8),\n y: getMidCoor(minByKey('topLeftPoint').y, maxByKey('topRightPoint').y)\n };\n const bottomCenter = {\n x: getMidCoor(minByKey('bottomLeftPoint').x, maxByKey('bottomRightPoint').x) - (width / 2 - 8),\n y: getMidCoor(minByKey('bottomLeftPoint').y, maxByKey('bottomRightPoint').y)\n };\n const topCenterForSmallElement = {\n x: getMidCoor(minByKey('topLeftPoint').x, maxByKey('topRightPoint').x),\n y: getMidCoor(minByKey('topLeftPoint').y, maxByKey('topRightPoint').y)\n };\n const bottomCenterForSmallElement = {\n x: getMidCoor(minByKey('bottomLeftPoint').x, maxByKey('bottomRightPoint').x),\n y: getMidCoor(minByKey('bottomLeftPoint').y, maxByKey('bottomRightPoint').y)\n };\n const rightCenterShortEdge = {\n x: getMidCoor(maxByKey('bottomRightPoint').x, maxByKey('topRightPoint').x),\n y: getMidCoor(maxByKey('bottomRightPoint').y, maxByKey('topRightPoint').y) - (height / 2)\n };\n const leftCenterShortEdge = {\n x: getMidCoor(maxByKey('bottomLeftPoint').x, maxByKey('topLeftPoint').x),\n y: getMidCoor(minByKey('bottomLeftPoint').y, minByKey('topLeftPoint').y) - (height / 2)\n };\n\n const selectedItemsRect = {\n topLeft: minByKey('topLeftPoint'),\n topRight: maxByKey('topRightPoint'),\n bottomLeft: minByKey('bottomLeftPoint'),\n bottomRight: maxByKey('bottomRightPoint'),\n topCenter: topCenter,\n bottomCenter: bottomCenter,\n topCenterForSmallElement: topCenterForSmallElement,\n bottomCenterForSmallElement: bottomCenterForSmallElement,\n rightCenterShortEdge: rightCenterShortEdge,\n leftCenterShortEdge: leftCenterShortEdge\n };\n\n return selectedItemsRect;\n }\n}\n","import DefaultState from './default';\nimport { GuideLayerModel } from '../GuideLayer/GuideLayerModel';\n\nimport InputType from '../../../constants/inputType';\nimport { SHOW_GUILDELINE_NAME } from '../../../constants/diagramStateNames';\n\nclass ShowGuideLineState extends DefaultState {\n constructor() {\n super({ name: SHOW_GUILDELINE_NAME });\n\n this.model = false;\n this.guideLayer = false;\n this.prevPosition = {};\n\n this.registerAction(InputType.MOUSE_UP, this.handleMouseUp);\n this.registerAction(InputType.MOUSE_DOWN, this.handleMouseDown);\n this.registerAction(InputType.MOUSE_MOVE, this.handleMouseMove);\n }\n\n handleMouseDown = (actionEvent, model) => {\n this.model = model;\n this.guideLayer = new GuideLayerModel();\n this.initialPosition = this.model.getPosition();\n this.initialX = actionEvent.event.clientX;\n this.initialY = actionEvent.event.clientY;\n const allNodes = this.engine.getModel().getNodes();\n const selectedNodes = this.engine.getModel().getSelectedEntities();\n const unSelectedNodes = allNodes.filter(x => x.getID() !== model.getID());\n\n this.guideLayer.setNodes(selectedNodes, unSelectedNodes);\n this.engine.getModel().addLayer(this.guideLayer);\n };\n\n handleMouseMove = ({ event: { clientX, clientY } }) => {\n const zoomScale = this.engine.getModel().getZoomLevel() / 100.0;\n const virtualDisplacementX = (clientX - this.initialX) / zoomScale;\n const virtualDisplacementY = (clientY - this.initialY) / zoomScale;\n\n const [keyMethodName] = ['getKeys'];\n const pressedKeyList = this.engine.getActionEventBus()[keyMethodName]();\n const positions = {\n x: this.initialPosition.x + virtualDisplacementX,\n y: this.initialPosition.y + virtualDisplacementY\n };\n const { x, y } = this.guideLayer.calculateGuides(positions);\n if (pressedKeyList.filter(val => val === 'alt').length === 0 && (x || y)) {\n this.model.setPosition({\n x: x || positions.x,\n y: y || positions.y\n });\n }\n };\n\n deregister = () => {\n this.model = false;\n this.prevPosition = {};\n\n if (this.guideLayer) {\n this.guideLayer.setNodes([], []);\n this.guideLayer.hideGuides();\n this.engine.getModel().removeLayer(this.guideLayer);\n this.guideLayer = false;\n }\n\n super.deregister();\n };\n}\n\nexport default ShowGuideLineState;\n","import DefaultState from './default';\n\nimport PortModel from '../Port/model';\nimport LinkModel from '../Link/model';\nimport BaseNodeModel from '../BaseNode/model';\n\nimport WatchmanRecorder from '../../../utils/WatchmanRecorder';\n\nimport InputType from '../../../constants/inputType';\nimport { CREATE_LINK_NAME } from '../../../constants/diagramStateNames';\n\nclass CreateLinkMobileState extends DefaultState {\n constructor() {\n super({ name: CREATE_LINK_NAME });\n\n this.registerAction(InputType.MOUSE_DOWN, this.handleMouseDown);\n\n this.link = false;\n this.sourcePort = false;\n this.targetPort = false;\n this.ghostedElements = [];\n }\n\n handleMouseDown = ({ event }, model) => {\n this.clearGhostedElements();\n\n switch (true) {\n case !this.link && !this.sourcePort && model instanceof PortModel && !model.isInPort() && !model.isLocked():\n this.sourcePort = model;\n const link = new LinkModel();\n link.setSourcePort(this.sourcePort);\n link.initializePoints();\n this.engine.getModel().clearSelection();\n this.link = this.engine.getModel().addLink(link);\n break;\n case this.link && this.sourcePort && this.targetPort && model === this.targetPort.getParent():\n WatchmanRecorder.trackEvent('canvas-link-complete', {\n fID: this.sourcePort.getParent().getID(),\n tID: this.targetPort.getParent().getID(),\n fpName: this.sourcePort.getName(),\n tpName: this.targetPort.getName()\n });\n\n this.link.setTargetPort(this.targetPort);\n this.deregister();\n break;\n case this.link && this.sourcePort && model instanceof BaseNodeModel && model !== this.link.getOwnerElement():\n const mousePoint = this.engine.getRelativeMousePoint(event);\n const targetPort = model.getClosestPort(mousePoint, 'in');\n if (!targetPort) {\n this.deregister();\n break;\n }\n\n this.link.updatePointsByPort(targetPort);\n WatchmanRecorder.trackEvent('canvas-link-drag', {\n fID: this.sourcePort.getParent().getID(),\n tID: targetPort.getParent().getID(),\n fpName: this.sourcePort.getName(),\n tpName: targetPort.getName()\n });\n\n const notAllowedLink = !this.sourcePort.canLinkToPort(model);\n if (notAllowedLink) {\n this.targetPort = false;\n this.makeElementGhosted(model);\n break;\n }\n\n this.targetPort = targetPort;\n break;\n default:\n this.deregister();\n break;\n }\n };\n\n makeElementGhosted = model => {\n model.setGhosted(true);\n this.ghostedElements = [...this.ghostedElements, model];\n };\n\n clearGhostedElements = () => {\n this.ghostedElements.forEach(model => model.setGhosted(false));\n this.ghostedElements = [];\n };\n\n deregister = () => {\n this.sourcePort = false;\n this.targetPort = false;\n this.clearGhostedElements();\n\n if (this.link) {\n this.link.remove();\n this.link = false;\n }\n\n super.deregister();\n };\n}\n\nexport default CreateLinkMobileState;\n","import DefaultState from './default';\n\nimport SelectionBoxModel from '../SelectionBox/model';\n\nimport isPointInsideRectangle from '../../../utils/diagram/isPointInsideRectangle';\nimport calculateSelectionRange from '../../../utils/diagram/calculateSelectionRange';\n\nimport InputType from '../../../constants/inputType';\nimport { PADDING_FOR_SELECTION_BOX } from '../../../styles/variables';\nimport { SHOW_SELECTIONBOX_NAME } from '../../../constants/diagramStateNames';\n\nclass ShowSelectionBoxState extends DefaultState {\n constructor() {\n super({ name: SHOW_SELECTIONBOX_NAME });\n\n this.registerAction(InputType.MOUSE_UP, this.handleMouseUp);\n this.registerAction(InputType.MOUSE_DOWN, this.handleMouseDown);\n this.registerAction(InputType.MOUSE_MOVE, this.handleMouseMove);\n\n this.model = null;\n this.initialPoint = null;\n this.selectionModel = null;\n }\n\n handleMouseDown = ({ event: { clientX, clientY } }) => {\n this.selectedModel = this.engine.getModel().getSelectedEntities();\n if (this.selectedModel && this.selectedModel?.length > 0) {\n return;\n }\n this.engine.getModel().activeSelectionBoxLayer.removeAllSelectionBoxes();\n this.model = new SelectionBoxModel({ isTemporary: true });\n this.initialPoint = this.engine.getRelativeMousePoint({ clientX, clientY });\n this.model.setPosition(this.initialPoint);\n this.engine.getModel().activeSelectionBoxLayer.addModel(this.model);\n };\n\n handleMouseMove = ({ event }) => {\n if ((this.selectionModel && this.selectionModel?.length > 0) || !this.model) {\n return;\n }\n this.engine.getModel().clearSelection();\n const currentPoint = this.engine.getRelativeMousePoint(event);\n const virtualDisplacementX = currentPoint.x - this.initialPoint.x;\n const virtualDisplacementY = currentPoint.y - this.initialPoint.y;\n this.model.setDimensions({\n width: Math.abs(virtualDisplacementX),\n height: Math.abs(virtualDisplacementY)\n });\n this.model.setPosition({\n x: virtualDisplacementX < 0 ? currentPoint.x : this.initialPoint.x,\n y: virtualDisplacementY < 0 ? currentPoint.y : this.initialPoint.y\n });\n };\n\n handleMouseUp = () => {\n if ((this.selectionModel && this.selectionModel?.length > 0) || !this.model) {\n return;\n }\n const { topLeftPoint, bottomRightPoint } = this.model.getPoints();\n const nodes = this.engine.getModel().getNodes();\n const nodesInsideSelection = nodes.filter(node => {\n const points = Object.values(node.getPoints());\n return points.find(position => isPointInsideRectangle({\n topLeftPoint,\n bottomRightPoint,\n position\n }));\n });\n\n nodesInsideSelection.forEach(node => node.setSelected(true));\n if (nodesInsideSelection.length < 2) {\n return this.deregister();\n }\n\n const { topLeft, bottomRight } = calculateSelectionRange(nodesInsideSelection);\n const selectionModel = new SelectionBoxModel({\n width: bottomRight.x - topLeft.x + (PADDING_FOR_SELECTION_BOX * 2),\n height: bottomRight.y - topLeft.y + (PADDING_FOR_SELECTION_BOX * 2)\n });\n selectionModel.setPosition({\n x: topLeft.x - PADDING_FOR_SELECTION_BOX,\n y: topLeft.y - PADDING_FOR_SELECTION_BOX\n });\n this.engine.getModel().activeSelectionBoxLayer.addModel(selectionModel);\n this.deregister();\n };\n\n deregister = () => {\n this.clearModel();\n super.deregister();\n };\n\n clearModel = () => {\n if (this.model) {\n this.engine.getModel().activeSelectionBoxLayer.removeModel(this.model);\n this.model = null;\n this.initialPoint = null;\n }\n };\n}\n\nexport default ShowSelectionBoxState;\n","import DefaultState from './default';\nimport BaseNodeModel from '../BaseNode/model';\n\nimport WatchmanRecorder from '../../../utils/WatchmanRecorder';\nimport { isPathsIntersect } from '../../../utils/geometry/intersection';\nimport isPointInsideRectangle from '../../../utils/diagram/isPointInsideRectangle';\n\nimport InputType from '../../../constants/inputType';\nimport { elementTypes } from '../../../constants/elementTypes';\nimport { REPLACE_PLACEHOLDER_NAME } from '../../../constants/diagramStateNames';\nimport { DEFAULT_FEATURES, PUSH_NODES } from '../../../constants/features';\n\nclass ReplacePlaceholderState extends DefaultState {\n constructor({ onDragStateChange, onPlaceElementOntoLabel, onPlaceholderToElement }) {\n super({ name: REPLACE_PLACEHOLDER_NAME });\n\n this.model = false;\n this.labelToReplace = false;\n this.isLabelPlaceholderVisible = false;\n this.onDragStateChange = onDragStateChange;\n this.onPlaceholderToElement = onPlaceholderToElement;\n this.onPlaceElementOntoLabel = onPlaceElementOntoLabel;\n\n this.registerAction(InputType.MOUSE_UP, this.handleMouseUp);\n this.registerAction(InputType.MOUSE_DOWN, this.handleMouseDown);\n this.registerAction(InputType.MOUSE_MOVE, this.handleMouseMove);\n }\n\n handleMouseDown = (event, model) => {\n this.model = model;\n };\n\n setLabelPlaceholderVisibility(isVisible) {\n if (this.isLabelPlaceholderVisible === isVisible) {\n return;\n }\n\n this.isLabelPlaceholderVisible = isVisible;\n this.onDragStateChange(isVisible);\n }\n\n handleMouseUp = () => {\n const elementID = this.model.getID();\n this.setLabelPlaceholderVisibility(false);\n\n if (this.labelToReplace) {\n WatchmanRecorder.trackEvent('canvas-elementOntoLabel-mouseUp', { labelID: this.labelToReplace.getID(), elementID });\n this.onPlaceElementOntoLabel({ labelModel: this.labelToReplace, model: this.model });\n } else if (this.placeholderToReplace) {\n const placeholderID = this.placeholderToReplace.getID();\n WatchmanRecorder.trackEvent('canvas-elementOntoPlaceholder-mouseUp', { elementID, placeholderID });\n this.onPlaceholderToElement({ newElementID: elementID, oldElementID: placeholderID });\n }\n\n this.model = false;\n this.clearHighlights();\n };\n\n clearHighlights = () => {\n this.labelToReplace = false;\n const labels = this.engine.model.activeLabelLayer.getLabels();\n labels.forEach(label => {\n if (label.options.isPushNodeActive && DEFAULT_FEATURES[PUSH_NODES]) {\n // for recalculate for old place of element v2\n label.setIsPushNodeActive(false);\n }\n label.setHighlight(false);\n });\n\n this.placeholderToReplace = false;\n const placeholders = this.engine.getModel().getPlaceholders();\n placeholders.forEach(placeholder => {\n placeholder.setGhosted(false);\n placeholder.setHighlight(false);\n });\n };\n\n highlightIntersectingLink = () => {\n const links = this.engine.model.getLinks();\n const selectedEntityLines = Object.values(this.model.getLines());\n const intersectingLink = links.find(link => {\n const linkPaths = link.getPaths();\n const isLinkIntersecting = selectedEntityLines.find(line => linkPaths.find(path => isPathsIntersect(line, path)));\n return isLinkIntersecting;\n });\n\n if (!intersectingLink) {\n return;\n }\n\n const label = intersectingLink.getLabel();\n if (!label) {\n return;\n }\n\n label.setHighlight(true);\n this.labelToReplace = label;\n return true;\n };\n\n highlightIntersectingPlaceholder = () => {\n const modelPoints = Object.values(this.model.getPoints());\n const placeholders = this.engine.getModel().getPlaceholders();\n const candidatePlaceholder = placeholders.find(placeholder => {\n const { topLeftPoint, bottomRightPoint } = placeholder.getPoints();\n return modelPoints.find(position => isPointInsideRectangle({\n topLeftPoint, bottomRightPoint, position, offset: 4\n }));\n });\n\n if (!candidatePlaceholder) {\n return;\n }\n\n this.placeholderToReplace = candidatePlaceholder;\n const parentElementIDs = candidatePlaceholder.getAllParentElementIDs();\n const isInvalidElement = parentElementIDs.includes(this.model.getID());\n this.placeholderToReplace.setGhosted(isInvalidElement);\n this.placeholderToReplace.setHighlight(!isInvalidElement);\n };\n\n handleMouseMove = () => {\n this.clearHighlights();\n const elementType = this.model.getType();\n // placeholder cannot be convert to placeholder\n const isValidElement = elementType && elementType !== elementTypes.PLACEHOLDER;\n const showLabelPlaceholder = this.model instanceof BaseNodeModel && this.model.getLinks().length === 0 && isValidElement;\n this.setLabelPlaceholderVisibility(showLabelPlaceholder);\n if (!showLabelPlaceholder) {\n return;\n }\n\n this.highlightIntersectingPlaceholder();\n if (!this.placeholderToReplace) {\n this.highlightIntersectingLink();\n }\n };\n}\n\nexport default ReplacePlaceholderState;\n","import DefaultState from './default';\n\nimport InputType from '../../../constants/inputType';\nimport { PINCH_TO_ZOOM_CANVAS_NAME } from '../../../constants/diagramStateNames';\n\n// This state only works with the touch point.\n\nconst PINCH_DIRECTIONS = {\n IN: 'IN',\n OUT: 'OUT'\n};\nclass PinchToZoomCanvasState extends DefaultState {\n constructor() {\n super({ name: PINCH_TO_ZOOM_CANVAS_NAME });\n\n this.initialTouches = [];\n this.prevScale = 0;\n\n this.registerAction(InputType.MOUSE_UP, this.handleTouchEnd);\n this.registerAction(InputType.MOUSE_DOWN, this.handleTouchStart);\n this.registerAction(InputType.MOUSE_MOVE, this.handleMouseMove);\n }\n\n handleTouchStart = ({ syntheticTouchEvent }) => {\n this.initialTouches = syntheticTouchEvent.touches;\n };\n\n targetTouches = touches => {\n return Array.from(touches).map(touch => {\n return {\n x: touch.pageX,\n y: touch.pageY\n };\n });\n };\n\n getDistance = (a, b) => {\n const x = a.x - b.x;\n const y = a.y - b.y;\n return Math.sqrt(x * x + y * y);\n };\n\n calculateScale = (startTouches, endTouches) => {\n const startDistance = this.getDistance(startTouches[0], startTouches[1]);\n const endDistance = this.getDistance(endTouches[0], endTouches[1]);\n return endDistance / startDistance;\n };\n\n handleMouseMove = ({ syntheticTouchEvent }) => {\n const scale = this.calculateScale(\n this.targetTouches(this.initialTouches),\n this.targetTouches(syntheticTouchEvent.touches)\n );\n if (this.prevScale === 0) {\n this.prevScale = scale;\n return;\n }\n\n const direction = scale <= this.prevScale ? PINCH_DIRECTIONS.IN : PINCH_DIRECTIONS.OUT;\n const model = this.engine.getModel();\n let touchDelta = Math.abs(this.prevScale - scale);\n touchDelta = direction === PINCH_DIRECTIONS.IN ? -touchDelta : touchDelta;\n const speed = direction === PINCH_DIRECTIONS.IN ? 30 : 20;\n const nextZoom = (model.getZoomLevel() + (touchDelta * speed));\n const oldZoomFactor = this.engine.getModel().getZoomLevel() / 100;\n model.setZoomLevel(nextZoom);\n this.prevScale = scale;\n this.engine.repaintCanvas();\n this.setZoomOffset(syntheticTouchEvent, syntheticTouchEvent.target, oldZoomFactor);\n };\n\n getTouchCenter = vectors => {\n const sum = (a, b) => {\n return a + b;\n };\n return {\n x: vectors.map(v => { return v.x; }).reduce(sum) / vectors.length,\n y: vectors.map(v => { return v.y; }).reduce(sum) / vectors.length\n };\n };\n\n setZoomOffset = (event, target, oldZoomFactor) => {\n const model = this.engine.getModel();\n const zoomFactor = model.getZoomLevel() / 100;\n\n const boundingRect = target.getBoundingClientRect();\n const clientWidth = boundingRect.width;\n const clientHeight = boundingRect.height;\n // compute difference between rect before and after scroll\n const widthDiff = clientWidth * zoomFactor - clientWidth * oldZoomFactor;\n const heightDiff = clientHeight * zoomFactor - clientHeight * oldZoomFactor;\n const { x, y } = this.getTouchCenter(this.targetTouches(event.touches));\n const clientX = x - boundingRect.left;\n const clientY = y - boundingRect.top;\n\n // compute width and height increment factor\n const xFactor = (clientX - model.getOffsetX()) / oldZoomFactor / clientWidth;\n const yFactor = (clientY - model.getOffsetY()) / oldZoomFactor / clientHeight;\n\n const offsetX = model.getOffsetX() - widthDiff * xFactor;\n const offsetY = model.getOffsetY() - heightDiff * yFactor;\n model.setOffset(offsetX, offsetY);\n };\n\n handleMouseUp = () => {\n this.prevPosition = {};\n };\n\n handleTouchEnd = () => {\n this.prevScale = 0;\n super.deregister();\n };\n}\n\nexport default PinchToZoomCanvasState;\n","import DefaultState from './default';\nimport ShowPortState from './showPort';\nimport DragNodeState from './dragNode';\nimport MoveNodeState from './moveNode';\nimport EditLinkState from './editLink';\nimport PanCanvasState from './panCanvas';\nimport SelectionState from './selection';\nimport CreateLinkState from './createLink';\nimport ShowToolBoxState from './showToolBox';\nimport ShowGuideLineState from './showGuideline';\nimport CreateLinkMobileState from './createLinkMobile';\nimport ShowSelectionBoxState from './showSelectionBox';\nimport ReplacePlaceholderState from './replacePlaceholder';\nimport PinchToZoomCanvasState from './pinchToZoomCanvasState';\n\nimport PortModel from '../Port/model';\nimport BaseNodeModel from '../BaseNode/model';\nimport SelectionBoxModel from '../SelectionBox/model';\n\nimport InputType from '../../../constants/inputType';\nimport { STATE_NAME } from '../../../constants/diagramStateNames';\nimport LinkModel from '../Link/model';\n\nclass State extends DefaultState {\n constructor({\n engine,\n onUpdateElement,\n onDragStateChange,\n onPlaceholderToElement,\n onPlaceElementOntoLabel\n }) {\n super({ name: STATE_NAME });\n\n this.engine = engine;\n this.editLinkState = new EditLinkState();\n this.showPortState = new ShowPortState();\n this.selectionState = new SelectionState();\n this.panCanvasState = new PanCanvasState();\n this.createLinkState = new CreateLinkState();\n this.showToolBoxState = new ShowToolBoxState();\n this.showGuideLineState = new ShowGuideLineState();\n this.showSelectionBoxState = new ShowSelectionBoxState();\n this.pinchCanvasState = new PinchToZoomCanvasState();\n this.createLinkMobileState = new CreateLinkMobileState();\n this.dragNodeState = new DragNodeState({ onUpdateElement });\n this.moveNodeState = new MoveNodeState({ onUpdateElement });\n this.replacePlaceholderState = new ReplacePlaceholderState({ onDragStateChange, onPlaceholderToElement, onPlaceElementOntoLabel });\n\n this.registerAction(InputType.MOUSE_UP, this.handleMouseUp);\n this.registerAction(InputType.MOUSE_DOWN, this.handleMouseDown);\n this.registerAction(InputType.MOUSE_MOVE, this.handleMouseMove);\n this.registerAction(InputType.MOUSE_LEAVE, this.handleMouseLeave);\n }\n\n // eslint-disable-next-line\n handleMouseDown = (event, model) => {\n const isPinchGesture = event?.syntheticTouchEvent?.touches.length === 2;\n if (isPinchGesture) {\n this.deactivateMouseStates();\n this.registerState(this.pinchCanvasState, event);\n return;\n }\n\n if (event?.event?.target?.contentEditable === 'true') {\n return;\n }\n\n const engineModel = this.engine.getModel();\n const isLinkSelected = engineModel.isLinkSelected();\n if (!this.createLinkMobileState.isRegistered && (!isLinkSelected || !(model instanceof PortModel))) {\n this.registerState(this.selectionState, event);\n }\n\n if (model instanceof BaseNodeModel && !model.isLocked() && event.event.isTouchEvent && !this.createLinkMobileState.isRegistered) {\n model.makePortsVisibleForMobile();\n }\n\n const isNodeSelected = engineModel.isNodeSelected();\n\n if ((!isPinchGesture && isNodeSelected)) {\n this.registerState(this.moveNodeState, event);\n } else {\n this.deregisterState(this.moveNodeState);\n }\n\n switch (true) {\n case model instanceof SelectionBoxModel:\n this.registerState(this.dragNodeState, event);\n break;\n case model instanceof BaseNodeModel && !model.isLocked():\n this.registerState(this.dragNodeState, event);\n this.registerState(this.showGuideLineState, event);\n this.registerState(this.replacePlaceholderState, event);\n break;\n case model instanceof PortModel && model.isConnectedLinkSelected() && !event.event.isTouchEvent:\n this.registerState(this.editLinkState, event);\n break;\n case model instanceof PortModel && event.event.isTouchEvent:\n this.registerState(this.createLinkMobileState, event);\n break;\n case model instanceof PortModel:\n this.registerState(this.createLinkState, event);\n break;\n case model instanceof LinkModel && this.engine.panMode:\n this.registerState(this.panCanvasState, event);\n break;\n default:\n if (this.engine.panMode) {\n this.registerState(this.panCanvasState, event);\n } else {\n this.registerState(this.showSelectionBoxState, event);\n }\n break;\n }\n\n this.engine.repaintCanvas();\n };\n\n deactivateMouseStates = () => {\n this.deregisterState(this.editLinkState);\n this.deregisterState(this.showPortState);\n this.deregisterState(this.dragNodeState);\n this.deregisterState(this.panCanvasState);\n this.deregisterState(this.selectionState);\n this.deregisterState(this.showGuideLineState);\n this.deregisterState(this.showSelectionBoxState);\n this.deregisterState(this.createLinkState);\n this.deregisterState(this.createLinkMobileState);\n this.deregisterState(this.moveNodeState);\n this.deregisterState(this.replacePlaceholderState);\n };\n\n handleMouseUp = () => {\n this.deregisterState(this.dragNodeState);\n this.deregisterState(this.panCanvasState);\n this.deregisterState(this.selectionState);\n this.deregisterState(this.showGuideLineState);\n this.deregisterState(this.replacePlaceholderState);\n this.deregisterState(this.pinchCanvasState);\n this.engine.repaintCanvas();\n };\n\n handleMouseMove = event => {\n if (window.isTemplateMode) {\n return;\n }\n\n const isPinchGesture = event?.syntheticTouchEvent?.touches.length === 2;\n // eslint-disable-next-line eqeqeq\n if (event?.event?.target?.contentEditable == 'true' || isPinchGesture) { return; }\n\n const isDragStateActive = this.dragNodeState.isRegistered;\n const isLinkSelected = this.engine.getModel().isLinkSelected();\n const isCreateLinkStateActive = this.createLinkState.isRegistered;\n\n if (isDragStateActive || isCreateLinkStateActive || isLinkSelected) {\n this.deregisterState(this.showPortState);\n this.deregisterState(this.showToolBoxState);\n } else {\n this.registerState(this.showPortState, event);\n this.registerState(this.showToolBoxState, event);\n }\n\n this.engine.repaintCanvas();\n };\n\n handleMouseLeave = () => {\n // First state is canvas engine and second one is this state. Do not remove them\n this.engine.getStateMachine().stateStack.slice(2).forEach(state => state.deregister());\n this.engine.repaintCanvas();\n };\n\n registerState = (state, event) => {\n state.setEngine(this.engine);\n state.register(event);\n };\n\n deregisterState = state => {\n state.deregister();\n };\n}\n\nexport default State;\n","import React, { useMemo } from 'react';\nimport {\n func, number, string, shape\n} from 'prop-types';\n\nimport calculateAngle from '../../utils/math/calculateAngle';\nimport { ARROW_SVG_WIDTH } from '../../styles/variables';\n\nconst ArrowWidget = ({\n link, color, width, translate\n}) => {\n const points = link.getPoints();\n const { color: baseColor } = link.getColorInfo();\n const { x: endX, y: endY } = points[points.length - 1].getPosition();\n const { x: beginX, y: beginY } = points[points.length - 2].getPosition();\n const { x: middleX } = points[points.length - 3].getPosition();\n const { x: sourcePortX, y: sourcePortY } = points[0].getPosition();\n const minDistanceForArrowHead = 40;\n const angle = useMemo(() => {\n const calculatedAngle = calculateAngle({ x: beginX, y: beginY }, { x: endX, y: endY });\n if (sourcePortX === endX && sourcePortX === middleX && Math.abs(beginY - endY) < minDistanceForArrowHead) {\n if (endY >= sourcePortY && calculatedAngle !== 180) {\n return 180;\n }\n if (endY < sourcePortY && calculatedAngle !== 0) {\n return 0;\n }\n }\n return calculatedAngle;\n });\n\n return (\n \n \n \n \n \n \n \n );\n};\n\nArrowWidget.propTypes = {\n width: number,\n color: string,\n translate: number,\n link: shape({\n getPoints: func,\n isSelected: func,\n getColorInfo: func\n }).isRequired\n};\n\nArrowWidget.defaultProps = {\n color: undefined,\n width: ARROW_SVG_WIDTH,\n translate: ARROW_SVG_WIDTH + 2\n};\n\nexport default ArrowWidget;\n","import React, { cloneElement, forwardRef } from 'react';\nimport {\n func, shape, string, number\n} from 'prop-types';\n\nimport { LINK_STYLE } from '../../../styles/variables';\n\nconst LinkSegmentWidget = forwardRef(({\n link, path, width, color, ...props\n}, ref) => {\n const { width: baseWidth } = link.getOptions();\n const { color: baseColor } = link.getColorInfo();\n const isLinkComplete = Boolean(link.targetPort);\n const isAnimated = global.isStandalone && link.animated;\n\n const className = [\n 'jCanvas-path',\n isLinkComplete && !isAnimated ? 'isDrawn' : 'isDrawing',\n link.isLabelHovered ? 'isLabelHovered' : false,\n global.isStandalone ? 'isStandalone' : null,\n global.isTemplateMode ? 'isTemplateMode' : null\n ].filter(val => val).join(' ');\n\n const ScPath = (\n \n );\n\n const Bottom = cloneElement(ScPath, { ref });\n const Top = cloneElement(Bottom, {\n ...props,\n ref: null,\n 'data-linkid': link.getID(),\n strokeOpacity: 0,\n strokeWidth: LINK_STYLE.handleBarStrokeWidth,\n fill: 'none'\n });\n\n return (\n \n {Bottom}\n {Top}\n \n );\n});\n\nLinkSegmentWidget.propTypes = {\n link: shape({\n getID: func.isRequired,\n getOptions: func.isRequired,\n getColorInfo: func.isRequired\n }).isRequired,\n path: string.isRequired,\n width: number,\n color: string\n};\n\nLinkSegmentWidget.defaultProps = {\n color: undefined,\n width: undefined\n};\n\nexport default LinkSegmentWidget;\n","import React, { createRef } from 'react';\nimport { shape } from 'prop-types';\n\nimport Feature from '../../Feature';\nimport ArrowWidget from '../../Arrow';\nimport LinkSegmentWidget from './segmentWidget';\n\nimport { LINK_POINTS } from '../../../constants/features';\nimport { CIRCLE_COLORS } from '../../../styles/variables';\nimport calculateDirection from '../../../utils/diagram/calculateDirection';\n\nclass LinkWidget extends React.Component {\n constructor(props) {\n super(props);\n\n this.pathRef = createRef();\n }\n\n componentDidUpdate() {\n const { link } = this.props;\n if (link.getRenderedPath().length === 0) {\n link.setRenderedPaths([this.pathRef.current]);\n }\n }\n\n get selected() {\n const { link } = this.props;\n return link.isSelected();\n }\n\n get cursor() {\n if (!this.selected) {\n return;\n }\n\n const { link } = this.props;\n const [point1, point2] = link.getDraggingPoints();\n if (!point1 || !point2) {\n return;\n }\n\n const { x: xDirection } = calculateDirection(point1.getPosition(), point2.getPosition());\n return xDirection === 0 ? 'ew-resize' : 'ns-resize';\n }\n\n render() {\n const { link } = this.props;\n const pointPositions = link.getPointPositions();\n const circles = pointPositions.map(({ id, x, y }, index) => (\n \n ));\n\n return (\n \n \n {link.isLabelHovered && (\n <>\n \n \n \n )}\n \n \n \n );\n }\n}\n\nLinkWidget.propTypes = {\n link: shape({}).isRequired\n};\n\nexport default LinkWidget;\n","import React from 'react';\nimport { DefaultLinkFactory } from '@projectstorm/react-diagrams';\nimport { DefaultLinkPointWidget } from '@projectstorm/react-diagrams-defaults';\n\nimport LinkModel from './model';\nimport LinkWidget from './widget';\n\nimport { DEFAULT_LINK_TYPE } from '../../../constants/identifiers';\n\nclass LinkFactory extends DefaultLinkFactory {\n constructor(type = DEFAULT_LINK_TYPE) {\n super(type);\n }\n\n generateModel({ id }) {\n return new LinkModel({ id });\n }\n\n generateReactWidget(event) {\n return ;\n }\n\n generatePointWidget(pointOptions, selected, point, ref) {\n const { color, selectedColor } = pointOptions;\n return (\n \n );\n }\n}\n\nexport default LinkFactory;\n","import { useDrop as useDropDnD } from 'react-dnd';\n\nimport { elementTypes } from '../../constants/elementTypes';\n\nconst useDrop = callback => {\n const [{ isCurrentlyHovered }, dropRef] = useDropDnD({\n drop: callback,\n accept: Object.values(elementTypes),\n collect: monitor => ({ isCurrentlyHovered: monitor.isOver({ shallow: true }) })\n });\n\n return [isCurrentlyHovered, dropRef];\n};\n\nexport default useDrop;\n","import React, { useEffect, useMemo, useRef } from 'react';\nimport { func, shape } from 'prop-types';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { ColoredBarDropdown } from '@jotforminc/colored-bar';\nimport EditablePill from '@jotforminc/editable-pill';\nimport { Hooks } from '@jotforminc/uikit';\nimport { t } from '@jotforminc/translation';\nimport { Tooltip } from '@jotforminc/tooltip';\n\nimport LinkToolbox from '../../ElementToolbox/LinkToolbox';\nimport LabelOutcomeButton from '../../OutcomeWizard/LabelOutcomeButton';\nimport ColoredBarEditIcon from '../../ColoredBarHeaderIcon/editIcon';\nimport ColoredBarInfoIcon from '../../ColoredBarHeaderIcon/infoIcon';\n\nimport useDrop from '../../../utils/hooks/useDrop';\nimport { OutcomeTypes } from '../../../constants/OutcomeTypes';\nimport WatchmanRecorder from '../../../utils/WatchmanRecorder';\nimport {\n confirmRemoveLink, updateLinkOutcome, addElementOntoLabel, clearLinkFromOutcome,\n updateLink, calculationOfPushNodes, updateElementOutcome, setSettingsVisibility,\n togglePropertyModal\n} from '../../../actionCreators';\nimport {\n getOutcomeByLinkID, getDragState, getOutcomesByElementID, getUsedOutcomeIDs, getProducts, getAllRelatedFormQuestionsPrefixed\n} from '../../../store/selectors';\nimport { toNormalizedOutcome, isOwnerConditional, isSignDocumentElement } from './utils';\nimport {\n DEFAULT_FEATURES,\n PUSH_NODES,\n OUTCOME_EDIT_ICON,\n CONDITIONAL_BRANCH_MODAL,\n SIGN_DOCUMENT\n} from '../../../constants/features';\n\nimport { AcceptableOutcomeTypes, OutcomeTooltipTexts } from '../../../constants/OutcomeTooltip';\n\nconst LabelWidget = ({ node, engine }) => {\n const newOutcomesLabelRef = useRef();\n const newOutcomesContainerRef = useRef();\n const toolboxWrapperRef = useRef();\n const [isNewOutcomesVisible, setNewOutcomesVisible] = Hooks.useClickOutsideState(false, [newOutcomesLabelRef, newOutcomesContainerRef, toolboxWrapperRef]);\n const editablePillRef = useRef();\n const { id, justCreated, highlight } = node.getOptions();\n const label = node.getLabel();\n const link = node.getParent();\n const isLinkSelected = link.isSelected();\n const isEditableActive = link.isLocked();\n const { showToolBox } = link.getOptions();\n const dispatch = useDispatch();\n const isDragging = useSelector(getDragState);\n const linkID = link.getID();\n const isMultipleNodeSelected = engine.model.isMultipleNodeSelected();\n const questions = useSelector(getAllRelatedFormQuestionsPrefixed);\n const products = useSelector(getProducts);\n const formProps = { questions, products };\n\n const rawOutcome = useSelector(getOutcomeByLinkID(linkID));\n const ownerElement = link.getOwnerElement();\n const ownerElementID = ownerElement.getID();\n const elementOutcomes = useSelector(getOutcomesByElementID(ownerElementID));\n const outcomeIndex = useMemo(() => (elementOutcomes || []).findIndex(f => f.id === rawOutcome?.id), [rawOutcome, elementOutcomes]);\n const outcome = useMemo(() => toNormalizedOutcome(rawOutcome, ownerElement, formProps, outcomeIndex), [rawOutcome, ownerElement, questions, products, outcomeIndex]);\n const showText = isEditableActive && !outcome && label;\n const isConditionOutcome = isOwnerConditional(ownerElement);\n const isSignElement = isSignDocumentElement(ownerElement);\n const outcomeType = isConditionOutcome ? OutcomeTypes.CONDITION : OutcomeTypes.CUSTOM;\n const showEditableOutcome = ownerElement.canShowOutcomesInDropdown();\n const showEditableText = !showEditableOutcome;\n const usedOutcomes = useSelector(getUsedOutcomeIDs(ownerElementID));\n const usedOutcomeIDs = useMemo(() => usedOutcomes.map(({ id: optionID }) => optionID), [usedOutcomes]);\n const outcomes = useMemo(() => {\n const otherOutcome = elementOutcomes.find(f => f.id === 999);\n const _outcomes = [\n ...elementOutcomes.filter(f => f.id !== 999)\n ];\n if (otherOutcome) {\n _outcomes.push(otherOutcome);\n }\n return _outcomes.map((o, idx) => toNormalizedOutcome(o, ownerElement, formProps, idx + 1));\n }, [elementOutcomes, questions]);\n const dropdownHeaderText = isConditionOutcome ? t('BRANCHES') : t('OUTCOMES');\n const [isCurrentlyHovered, dropRef] = useDrop(item => {\n const { type, subType, actionType } = item;\n const logData = subType ? { linkID, type, subType } : { linkID, type };\n WatchmanRecorder.trackEvent('canvas-addElementOntoLabel-drop', logData);\n const sourcePort = node?.parent?.sourcePort;\n const targetPort = node?.parent?.targetPort;\n const sourcePortY = sourcePort?.position?.y;\n const targetPortY = targetPort?.position?.y;\n const sourcePortX = sourcePort?.position?.x;\n const targetPortX = targetPort?.position?.x;\n if (DEFAULT_FEATURES[PUSH_NODES] && (Math.abs(sourcePortY - targetPortY) < 270 || Math.abs(sourcePortX - targetPortX < 270))) {\n dispatch(calculationOfPushNodes({\n sourcePort, targetPort, val: 200\n }));\n }\n dispatch(addElementOntoLabel({\n type, subType, labelModel: node, engine, actionType\n }));\n });\n\n useEffect(() => {\n // eslint-disable-next-line no-unused-expressions\n if (!link.isSelected()) {\n setNewOutcomesVisible(false);\n }\n }, [link.isSelected()]);\n\n const handleToolboxEditTextClick = event => {\n event.stopPropagation();\n const handler = !showEditableOutcome ? handleEditText : toggleOptionsVisibility;\n handler();\n };\n\n const toggleOptionsVisibility = () => {\n const desiredVisibility = !isNewOutcomesVisible;\n node.setEditingInProgress(desiredVisibility);\n setNewOutcomesVisible(desiredVisibility);\n };\n\n const handleRemove = () => {\n dispatch(confirmRemoveLink({ id: linkID }));\n };\n\n const handleUpdateSignOutcome = (val, outcomeID) => {\n const key = 'outcomeSign';\n dispatch(updateElementOutcome({ elementID: ownerElementID, outcomeID: outcomeID, data: { [key]: (val || '').slice(0, 75) } }));\n };\n\n const forceRender = () => {\n node.setForceRender();\n engine.repaintCanvas();\n };\n\n const setEditable = isEditable => {\n if (editablePillRef.current) {\n editablePillRef.current.setEditableState(isEditable);\n }\n node.setEditingInProgress(isEditable);\n forceRender();\n };\n\n const handleEditText = () => {\n setEditable(true);\n };\n\n const onUpdatePill = ({ text }) => {\n setEditable(false);\n if (node.getLabel() === text) {\n return;\n }\n\n node.setLabel(text);\n WatchmanRecorder.trackEvent('linkLabel-text-change', { linkID, text });\n dispatch(updateLink({ link }));\n };\n\n const changeOutcomeElement = outcomeElement => dispatch(updateLinkOutcome({ link, outcome: outcomeElement }));\n\n const handleBarClick = ({ id: clickedID }) => {\n if (outcome?.id === clickedID) return;\n const clickedOutcome = elementOutcomes.find?.(({ id: searchingID }) => searchingID === clickedID);\n if (!clickedOutcome) return;\n\n changeOutcomeElement({ ...clickedOutcome, linkID });\n };\n\n const handleOutcomeRemove = () => {\n dispatch(clearLinkFromOutcome({ elementID: ownerElementID, outcomeID: outcome.id }));\n setNewOutcomesVisible(false);\n };\n\n const showColoredHeaderIcon = () => {\n if (isSignElement) {\n return ColoredBarInfoIcon;\n }\n return ColoredBarEditIcon;\n };\n\n const headerIconProps = () => {\n if (isSignElement) {\n return { outcomes: outcomes };\n }\n return null;\n };\n\n const tooltipRenderer = type => {\n if (!AcceptableOutcomeTypes?.includes(type)) {\n return null;\n }\n return (\n \n {t(OutcomeTooltipTexts?.[type])}\n \n );\n };\n\n const handleHeaderIconClick = () => {\n ownerElement.setSelected(true);\n switch (true) {\n case isConditionOutcome && DEFAULT_FEATURES[CONDITIONAL_BRANCH_MODAL]:\n dispatch(togglePropertyModal(true));\n break;\n case isSignElement && DEFAULT_FEATURES[SIGN_DOCUMENT]:\n break;\n default:\n dispatch(setSettingsVisibility(true));\n break;\n }\n };\n\n useEffect(() => {\n if (justCreated) {\n setEditable(true);\n node.options.justCreated = false; // eslint-disable-line no-param-reassign\n }\n }, []);\n\n useEffect(() => {\n if (!isLinkSelected) {\n setEditable(false);\n }\n }, [isLinkSelected]);\n\n useEffect(() => {\n if (node) {\n node.setHighlight(isCurrentlyHovered);\n forceRender();\n }\n }, [isDragging, isCurrentlyHovered, node]);\n\n const classNames = [\n 'wfItem-label',\n global.isStandalone ? 'isStandalone' : null,\n global.isTemplateMode ? 'isTemplateMode' : null\n ].filter(Boolean).join(' ');\n\n return (\n
    \n
    \n
    \n {\n isDragging ? (\n \n \n
    \n ) : (\n <>\n {\n showText && (\n
    \n \n {label}\n \n
    \n )\n }\n {\n showEditableOutcome && (\n <>\n {\n setNewOutcomesVisible(!isNewOutcomesVisible);\n }}\n ref={newOutcomesLabelRef}\n outcomeType={outcomeType}\n outcomes={outcomes}\n />\n {!window.isTemplateMode && !window.isStandalone && (\n
    \n \n
    \n )}\n \n )\n }\n {\n showEditableText && (\n
    \n \n
    \n )\n }\n \n )\n }\n
    \n \n
    \n );\n};\n\nLabelWidget.propTypes = {\n node: shape({\n getLabel: func\n }).isRequired,\n engine: shape({\n repaintCanvas: func\n }).isRequired\n};\n\nexport default LabelWidget;\n","import React from 'react';\nimport { AbstractReactFactory } from '@projectstorm/react-canvas-core';\n\nclass BaseNodeFactory extends AbstractReactFactory {\n constructor({ type, Model, Widget }) {\n super(type);\n\n this.Model = Model;\n this.Widget = Widget;\n }\n\n generateReactWidget({ model }) {\n return (\n \n );\n }\n\n generateModel(props) {\n return new this.Model(props);\n }\n}\n\nexport default BaseNodeFactory;\n","import LabelWidget from './widget';\nimport LabelModel from './model';\nimport BaseNodeFactory from '../BaseNode/factory';\nimport { DEFAULT_LABEL_TYPE } from '../../../constants/identifiers';\n\nclass LabelFactory extends BaseNodeFactory {\n constructor() {\n super({\n type: DEFAULT_LABEL_TYPE,\n Model: LabelModel,\n Widget: LabelWidget\n });\n }\n}\n\nexport default LabelFactory;\n","import { LayerModel } from '@projectstorm/react-canvas-core';\n\nclass LabelLayerModel extends LayerModel {\n constructor() {\n super({\n isSvg: false,\n transformed: true,\n type: 'diagram-labels'\n });\n }\n\n getChildModelFactoryBank(engine) {\n return engine.getLinkFactories();\n }\n\n getLabels() {\n const links = Object.values(this.parent.activeLinkLayer.getLinks());\n const labels = links.reduce((prev, link) => ([...prev, ...link.getLabels()]), []);\n return labels;\n }\n}\n\nexport default LabelLayerModel;\n","import { LayerModel } from '@projectstorm/react-canvas-core';\nimport { DEFAULT_SELECTIONBOX_LAYER_TYPE } from '../../../constants/identifiers';\n\nclass SelectionBoxLayerModel extends LayerModel {\n constructor() {\n super({\n isSvg: false,\n transformed: true,\n type: DEFAULT_SELECTIONBOX_LAYER_TYPE\n });\n }\n\n getSelectionBoxes = () => {\n return Object.values(this.getModels());\n };\n\n removeAllSelectionBoxes = () => {\n this.getSelectionBoxes().forEach(selectionBoxModel => this.removeModel(selectionBoxModel));\n };\n\n getChildModelFactoryBank() {\n // is not used as it doesnt serialize\n return null;\n }\n}\n\nexport default SelectionBoxLayerModel;\n","import uniqBy from 'lodash/uniqBy';\nimport { DiagramModel as DefaultDiagramModel } from '@projectstorm/react-diagrams';\n\nimport LinkModel from '../Link/model';\nimport BaseNodeModel from '../BaseNode/model';\nimport LabelLayerModel from '../LabelLayer/model';\nimport PlaceholderModel from '../Placeholder/model';\nimport SelectionBoxLayerModel from '../SelectionBoxLayer/model';\n\nclass DiagramModel extends DefaultDiagramModel {\n constructor(...options) {\n super(...options);\n\n const labelLayer = new LabelLayerModel();\n this.addLayer(labelLayer);\n this.activeLabelLayer = labelLayer;\n\n const selectionBoxLayer = new SelectionBoxLayerModel();\n this.addLayer(selectionBoxLayer);\n this.activeSelectionBoxLayer = selectionBoxLayer;\n }\n\n getAllOutcomes() {\n const models = this.activeNodeLayer.getModels();\n const outcomes = Object.values(models).reduce((prev, node) => [...prev, ...node.getOutcomes()], []);\n const allOutcomes = [...outcomes];\n return uniqBy(allOutcomes, ({ id }) => id);\n }\n\n getNextOutcomeID() {\n const allOutcomes = this.getAllOutcomes();\n if (!allOutcomes.length) return 1;\n const maxID = Math.max.apply(Math, [...allOutcomes.map(({ id }) => (id / 1 || 0))]);\n return maxID + 1;\n }\n\n getPlaceholders() {\n const allNodes = this.getNodes();\n const allPlaceholders = allNodes.filter(node => node instanceof PlaceholderModel);\n return allPlaceholders;\n }\n\n isLinkSelected() {\n const [selectedEntitiy] = this.getSelectedEntities();\n return selectedEntitiy instanceof LinkModel;\n }\n\n isNodeSelected() {\n const [selectedEntitiy] = this.getSelectedEntities();\n return selectedEntitiy instanceof BaseNodeModel;\n }\n\n getSelectedNodes() {\n return this.getSelectedEntities().filter(entity => entity instanceof BaseNodeModel);\n }\n\n isMultipleNodeSelected() {\n return this.getSelectedNodes().length > 1;\n }\n\n getSelectionBoxes() {\n return this.activeSelectionBoxLayer.getSelectionBoxes();\n }\n\n getSelectionBox(id) {\n return this.getSelectionBoxes().find(model => model.getID() === id);\n }\n}\n\nexport default DiagramModel;\n","import { ActionEventBus } from '@projectstorm/react-canvas-core';\n\nimport { InputTypeMap } from '../../../constants/inputType';\n\nclass ExtendedActionEventBus extends ActionEventBus {\n constructor(...params) {\n super(...params);\n\n this.keyCodes = [];\n }\n\n getKeyCodes = () => {\n return Object.keys(this.keyCodes);\n };\n\n getActionsForEvent(actionEvent) {\n const { event } = actionEvent;\n const { type, key, keyCode } = event;\n\n const { [type]: actionType } = InputTypeMap;\n if (!actionType) {\n return [];\n }\n\n switch (type) {\n case 'keydown':\n if (key) {\n this.keys[key.toLowerCase()] = true;\n }\n\n this.keyCodes[keyCode] = true;\n break;\n case 'keyup':\n if (key) {\n delete this.keys[key.toLowerCase()];\n }\n\n delete this.keyCodes[keyCode];\n break;\n default:\n break;\n }\n\n return this.getActionsForType(actionType);\n }\n}\n\nexport default ExtendedActionEventBus;\n","import MergeModel from './model';\nimport MergeWidget from './widget';\nimport BaseNodeFactory from '../BaseNode/factory';\nimport { elementTypes } from '../../../constants/elementTypes';\n\nclass MergeFactory extends BaseNodeFactory {\n constructor() {\n super({\n type: elementTypes.MERGE,\n Model: MergeModel,\n Widget: MergeWidget\n });\n }\n}\n\nexport default MergeFactory;\n","import SplitModel from './model';\nimport SplitWidget from './widget';\nimport BaseNodeFactory from '../BaseNode/factory';\nimport { elementTypes } from '../../../constants/elementTypes';\n\nclass SplitFactory extends BaseNodeFactory {\n constructor() {\n super({\n type: elementTypes.SPLIT,\n Model: SplitModel,\n Widget: SplitWidget\n });\n }\n}\n\nexport default SplitFactory;\n","import { t } from '@jotforminc/translation';\nimport BaseNodeModel from '../BaseNode/model';\nimport { elementTypes } from '../../../constants/elementTypes';\n\nclass AssignModel extends BaseNodeModel {\n constructor(props = {}) {\n super({\n name: t('ASSIGN'),\n ...props,\n type: elementTypes.ASSIGN,\n hasToolBox: true\n });\n }\n}\n\nexport default AssignModel;\n","import React from 'react';\nimport { t } from '@jotforminc/translation';\nimport BaseWidget from '../BaseNode/widget';\n\nimport { iconTypes } from '../../../constants/iconTypes';\nimport { elementTypes } from '../../../constants/elementTypes';\nimport { nodeWidgetProps } from '../../../constants/propTypes';\nimport WidgetContactBody from '../Commons/WidgetContactBody';\nimport WidgetResource from '../Commons/WidgetResource';\n\nconst AssignWidget = ({ node, engine }) => {\n const { options: { name, assignee: assigneesArray } } = node;\n return (\n \n \n \n \n\n \n\n );\n};\n\nAssignWidget.propTypes = {\n ...nodeWidgetProps\n};\n\nexport default AssignWidget;\n","import AssignModel from './model';\nimport AssignWidget from './widget';\nimport BaseNodeFactory from '../BaseNode/factory';\nimport { elementTypes } from '../../../constants/elementTypes';\n\nclass AssignFactory extends BaseNodeFactory {\n constructor() {\n super({\n type: elementTypes.ASSIGN,\n Model: AssignModel,\n Widget: AssignWidget\n });\n }\n}\n\nexport default AssignFactory;\n","import React from 'react';\n\nimport BaseWidget from '../BaseNode/widget';\nimport { nodeWidgetProps } from '../../../constants/propTypes';\nimport { elementTypes } from '../../../constants/elementTypes';\n\nconst GenericWidget = ({ node, engine }) => {\n const { name } = node.getOptions();\n return (\n \n );\n};\n\nGenericWidget.propTypes = {\n ...nodeWidgetProps\n};\n\nexport default GenericWidget;\n","import GenericWidget from './widget';\nimport GenericModel from './model';\nimport BaseNodeFactory from '../BaseNode/factory';\nimport { elementTypes } from '../../../constants/elementTypes';\n\nclass SendEmailFactory extends BaseNodeFactory {\n constructor() {\n super({\n type: elementTypes.GENERIC,\n Model: GenericModel,\n Widget: GenericWidget\n });\n }\n}\n\nexport default SendEmailFactory;\n","import React from 'react';\n\nimport { t } from '@jotforminc/translation';\nimport { nodeWidgetProps } from '../../../constants/propTypes';\nimport BaseWidget from '../BaseNode/widget';\nimport { elementSubTypes, elementTypes } from '../../../constants/elementTypes';\nimport { iconTypes } from '../../../constants/iconTypes';\nimport WidgetContactBody from '../Commons/WidgetContactBody';\nimport WidgetResource from '../Commons/WidgetResource';\n\nconst getWidgetProps = (node, engine) => {\n const {\n name, approver: approversArray, subType = elementTypes.APPROVAL, isTeamApproval, type, teamObject\n } = node.getOptions();\n return {\n baseWidget: {\n nodeLabel: subType && (name === t('Approval') || name === t('Approve & Sign'))\n ? ({\n [elementTypes.APPROVAL]: t('Approval'),\n [elementSubTypes.APPROVAL_WITH_SIGN]: t('Approve & Sign'),\n [elementSubTypes.TEAM_APPROVAL]: t('Team Approval')\n })[subType]\n : name,\n node: node,\n engine: engine,\n IconElement: iconTypes[subType],\n type: elementTypes.APPROVAL\n },\n contactBody: {\n label: isTeamApproval ? t('Approval Team') : t('Approver'),\n targetSource: isTeamApproval ? teamObject?.teamMembers || teamObject?.members || [] : approversArray,\n contactValueKey: isTeamApproval ? 'email' : 'value',\n emptyText: ({\n [elementTypes.APPROVAL]: t('Add Approver Email'),\n [elementSubTypes.APPROVAL_WITH_SIGN]: t('Add Signer Email'),\n [elementSubTypes.TEAM_APPROVAL]: t('Add Team')\n })[subType || type],\n node: node\n }\n };\n};\n\nconst ApprovalWidget = ({ node, engine }) => {\n const { baseWidget, contactBody } = getWidgetProps(node, engine);\n // Fix old flows by following logical nodeLabel check\n return (\n \n \n \n \n \n\n );\n};\n\nApprovalWidget.propTypes = {\n ...nodeWidgetProps\n};\n\nexport default ApprovalWidget;\n","import ApprovalWidget from './widget';\nimport ApprovalModel from './model';\nimport BaseNodeFactory from '../BaseNode/factory';\nimport { elementTypes } from '../../../constants/elementTypes';\n\nclass ApprovalFactory extends BaseNodeFactory {\n constructor() {\n super({\n type: elementTypes.APPROVAL,\n Model: ApprovalModel,\n Widget: ApprovalWidget\n });\n }\n}\n\nexport default ApprovalFactory;\n","import EndPointWidget from './widget';\nimport EndPointModel from './model';\nimport BaseNodeFactory from '../BaseNode/factory';\nimport { elementTypes } from '../../../constants/elementTypes';\n\nclass EndPointFactory extends BaseNodeFactory {\n constructor() {\n super({\n type: elementTypes.END_POINT,\n Model: EndPointModel,\n Widget: EndPointWidget\n });\n }\n}\n\nexport default EndPointFactory;\n","import React from 'react';\n\nimport { t } from '@jotforminc/translation';\nimport { escapeHTML } from '@jotforminc/utils';\nimport { sanitizeTextBeforeSet } from '../../../utils';\nimport { nodeWidgetProps } from '../../../constants/propTypes';\nimport BaseWidget from '../BaseNode/widget';\nimport { elementTypes } from '../../../constants/elementTypes';\nimport { iconTypes } from '../../../constants/iconTypes';\nimport WidgetContactBody from '../Commons/WidgetContactBody';\nimport WidgetResource from '../Commons/WidgetResource';\n\nconst SendEmailWidget = ({ node, engine }) => {\n const { subject, to, subType } = node.getOptions();\n\n const source = Array.isArray(to) && to.length > 0 ? to : [];\n\n const getNodeLabel = () => escapeHTML(sanitizeTextBeforeSet(subject));\n\n return (\n \n \n \n \n \n );\n};\n\nSendEmailWidget.propTypes = {\n ...nodeWidgetProps\n};\n\nexport default SendEmailWidget;\n","import SendEmailWidget from './widget';\nimport SendEmailModel from './model';\nimport BaseNodeFactory from '../BaseNode/factory';\nimport { elementTypes } from '../../../constants/elementTypes';\n\nclass SendEmailFactory extends BaseNodeFactory {\n constructor() {\n super({\n type: elementTypes.SEND_EMAIL,\n Model: SendEmailModel,\n Widget: SendEmailWidget\n });\n }\n}\n\nexport default SendEmailFactory;\n","import React, { useRef } from 'react';\nimport { t } from '@jotforminc/translation';\nimport { Button } from '@jotforminc/magnet';\nimport { IconPlusCircleFilled } from '@jotforminc/svg-icons';\n\nimport Feature from '../../Feature';\nimport BaseWidget from '../BaseNode/widget';\nimport WorkflowFormPicker from '../../../modules/App/WorkflowFormPicker';\nimport WatchmanRecorder from '../../../utils/WatchmanRecorder';\nimport WidgetResource from '../Commons/WidgetResource';\n\nimport { iconTypes } from '../../../constants/iconTypes';\nimport { WITHOUT_FORM } from '../../../constants/features';\nimport { elementTypes } from '../../../constants/elementTypes';\nimport { nodeWidgetProps } from '../../../constants/propTypes';\nimport { setResource } from '../../../actionCreators';\n\nconst StartPointWidget = ({ node, engine }) => {\n const {\n id, resourceType, resourceObject = {}\n } = node.getOptions();\n\n const { title: formTitle } = resourceObject;\n const isResourceDefined = Boolean(resourceType);\n\n const FormPickerRef = useRef({});\n\n const handleAddFormClick = () => {\n WatchmanRecorder.trackEvent('canvas-addForm-click');\n FormPickerRef.current.setVisibility(true);\n };\n\n return (\n \n {isResourceDefined && (\n \n
    \n
    \n
    \n {formTitle || t('Select a form')}\n
    \n {formTitle && (\n
    \n {formTitle}\n
    \n )}\n
    \n
    \n
    \n )}\n {!isResourceDefined && (\n \n \n {t('Add Form')}\n \n \n
    \n )}\n />\n )}\n \n );\n};\n\nStartPointWidget.propTypes = {\n ...nodeWidgetProps\n};\n\nexport default StartPointWidget;\n","import StartPointWidget from './widget';\nimport StartPointModel from './model';\nimport BaseNodeFactory from '../BaseNode/factory';\nimport { elementTypes } from '../../../constants/elementTypes';\n\nclass StartPointFactory extends BaseNodeFactory {\n constructor() {\n super({\n type: elementTypes.START_POINT,\n Model: StartPointModel,\n Widget: StartPointWidget\n });\n }\n}\n\nexport default StartPointFactory;\n","import React from 'react';\nimport { useDispatch } from 'react-redux';\nimport { t } from '@jotforminc/translation';\n\nimport BaseWidget from '../BaseNode/widget';\n\nimport { nodeWidgetProps } from '../../../constants/propTypes';\nimport { elementTypes } from '../../../constants/elementTypes';\nimport { DEFAULT_FEATURES, ERROR_UPDATE } from '../../../constants/features';\n\nimport useDrop from '../../../utils/hooks/useDrop';\nimport WatchmanRecorder from '../../../utils/WatchmanRecorder';\nimport { addElementFromLeftPanel, nodeDoubleClicked } from '../../../actionCreators';\n\nconst PlaceholderWidget = ({ node, engine }) => {\n const dispatch = useDispatch();\n const { options: { name, isTemporary, highlight } } = node;\n const [isCurrentlyHovered, dropRef] = useDrop(({\n type, subType, isTeamApproval, actionType\n }) => {\n const replaceWithID = node.getID();\n const logData = subType ? { type, subType, replaceWithID } : { type, replaceWithID };\n WatchmanRecorder.trackEvent('canvas-addElementOntoPlaceholder-drop', logData);\n dispatch(addElementFromLeftPanel({\n type, subType, replaceWithID, isTeamApproval, actionType\n }));\n });\n\n const allNodes = engine.getModel().getNodes();\n const startPointPlaceHolderCondition = allNodes.length === 2 && allNodes.some(e => e.options.type === elementTypes.START_POINT) && allNodes.some(e => e.options.type === elementTypes.PLACEHOLDER);\n const placeHolderText = startPointPlaceHolderCondition ? 'Drag your first element from left' : 'Add Element Here';\n\n const handleDoubleClick = () => {\n WatchmanRecorder.trackEvent('canvas-placeholder-doubleClick');\n dispatch(nodeDoubleClicked({ elementType: elementTypes.PLACEHOLDER }));\n };\n\n return (\n
    \n \n
    \n { DEFAULT_FEATURES[ERROR_UPDATE] ? t(placeHolderText) : t('Add Element Here')}\n
    \n \n
    \n );\n};\n\nPlaceholderWidget.propTypes = {\n ...nodeWidgetProps\n};\n\nexport default PlaceholderWidget;\n","import PlaceholderWidget from './widget';\nimport PlaceholderModel from './model';\nimport BaseNodeFactory from '../BaseNode/factory';\nimport { elementTypes } from '../../../constants/elementTypes';\n\nclass PlaceholderFactory extends BaseNodeFactory {\n constructor() {\n super({\n type: elementTypes.PLACEHOLDER,\n Model: PlaceholderModel,\n Widget: PlaceholderWidget\n });\n }\n}\n\nexport default PlaceholderFactory;\n","import React, { useMemo } from 'react';\nimport { t } from '@jotforminc/translation';\nimport { Button } from '@jotforminc/magnet';\nimport { IconPlusCircleFilled } from '@jotforminc/svg-icons';\nimport { useSelector, useDispatch } from 'react-redux';\nimport BaseWidget from '../BaseNode/widget';\n\nimport Feature from '../../Feature';\nimport {\n ERROR_UPDATE, DEFAULT_FEATURES, BINARY_DECISION_MODAL, BRANCH_TOOLTIP\n} from '../../../constants/features';\nimport { iconTypes } from '../../../constants/iconTypes';\nimport { PROPERTY_MODAL_TOGGLED, RIGHT_PANEL_TOGGLED } from '../../../store/actionTypes';\nimport { elementTypes, MISSING_CONDITON_TEXT } from '../../../constants/elementTypes';\nimport { nodeWidgetProps } from '../../../constants/propTypes';\nimport { getProducts, getAllRelatedFormQuestionsPrefixed } from '../../../store/selectors';\nimport { prepareConditionTermString } from '../Label/utils';\nimport WidgetContactBody from '../Commons/WidgetContactBody';\nimport WidgetResource from '../Commons/WidgetResource';\n\nconst BinaryDecisionWidget = ({ node, engine }) => {\n const { name, conditionTerms = [] } = node.getOptions();\n const products = useSelector(getProducts); // TODO: possibly we need to rm selector from here..\n const questions = useSelector(getAllRelatedFormQuestionsPrefixed); // TODO: possibly we need to rm selector from here..\n const formProps = { questions, products };\n const dispatch = useDispatch();\n\n const handleWidgetClick = () => {\n if (DEFAULT_FEATURES[BINARY_DECISION_MODAL]) {\n dispatch({ type: PROPERTY_MODAL_TOGGLED, data: true });\n } else {\n dispatch({ type: RIGHT_PANEL_TOGGLED });\n }\n };\n\n const [termsString, moreCount] = useMemo(() => {\n if (!Array.isArray(conditionTerms) || conditionTerms.length === 0) {\n return [t('Add conditions'), 0];\n }\n return [prepareConditionTermString(conditionTerms, formProps), conditionTerms.length - 1];\n }, [conditionTerms, questions]);\n\n const renderFilterToolTip = useMemo(() => {\n if (DEFAULT_FEATURES[BRANCH_TOOLTIP]) {\n return (\n \n );\n }\n return termsString;\n });\n\n return (\n \n \n { termsString === t('Add conditions') ? (\n \n \n {t('Add conditions')}\n \n \n )}\n />\n ) : (\n
    \n {renderFilterToolTip}\n
    \n )}\n {moreCount > 0 && termsString !== MISSING_CONDITON_TEXT ? (\n
    \n {t('+{number} more').replace('{number}', moreCount)}\n
    \n ) : null}\n
    \n \n );\n};\n\nBinaryDecisionWidget.propTypes = {\n ...nodeWidgetProps\n};\n\nexport default BinaryDecisionWidget;\n","import BinaryDecisionWidget from './widget';\nimport BinaryDecisionModel from './model';\nimport BaseNodeFactory from '../BaseNode/factory';\nimport { elementTypes } from '../../../constants/elementTypes';\n\nclass BinaryDecisionFactory extends BaseNodeFactory {\n constructor() {\n super({\n type: elementTypes.BINARY_DECISION,\n Model: BinaryDecisionModel,\n Widget: BinaryDecisionWidget\n });\n }\n}\n\nexport default BinaryDecisionFactory;\n","/* eslint-disable no-nested-ternary */\nimport React, { useMemo } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { Button } from '@jotforminc/magnet';\nimport { IconPlusCircleFilled } from '@jotforminc/svg-icons';\nimport { t } from '@jotforminc/translation';\n\nimport BaseWidget from '../BaseNode/widget';\nimport WidgetContactBody from '../Commons/WidgetContactBody';\nimport WidgetResource from '../Commons/WidgetResource';\n\nimport { iconTypes } from '../../../constants/iconTypes';\nimport { elementTypes } from '../../../constants/elementTypes';\nimport { nodeWidgetProps } from '../../../constants/propTypes';\nimport { PROPERTY_MODAL_TOGGLED, RIGHT_PANEL_TOGGLED } from '../../../store/actionTypes';\n\nimport Feature from '../../Feature';\nimport {\n ERROR_UPDATE, DEFAULT_FEATURES, CONDITIONAL_BRANCH_MODAL, BRANCH_TOOLTIP\n} from '../../../constants/features';\n\nconst ConditionalBranchWidget = ({ node, engine }) => {\n const { name, outcomes = [] } = node.getOptions();\n\n const otherExcludedOutcomes = React.useMemo(() => outcomes.filter(f => f.id !== 999), [outcomes]);\n const numberOfBranches = otherExcludedOutcomes.length;\n const dispatch = useDispatch();\n\n const handleWidgetClick = () => {\n if (DEFAULT_FEATURES[CONDITIONAL_BRANCH_MODAL]) {\n dispatch({ type: PROPERTY_MODAL_TOGGLED, data: true });\n } else {\n dispatch({ type: RIGHT_PANEL_TOGGLED });\n }\n };\n\n const renderFilterToolTip = useMemo(() => {\n if (DEFAULT_FEATURES[BRANCH_TOOLTIP]) {\n return (\n 1 ? 'es' : ''} added.`}\n node={node}\n />\n );\n }\n return `Branch${numberOfBranches > 1 ? 'es' : ''} added.`;\n });\n\n return (\n \n \n {numberOfBranches > 0 && (\n \n {numberOfBranches}\n \n ) }\n { numberOfBranches > 0 ? renderFilterToolTip : (DEFAULT_FEATURES[ERROR_UPDATE] ? (\n \n \n {t('Add conditions')}\n \n \n )}\n />\n )\n : 'Add branches'\n )}\n \n \n );\n};\n\nConditionalBranchWidget.propTypes = {\n ...nodeWidgetProps\n};\n\nConditionalBranchWidget.defaultProps = {\n resourceType: null\n};\n\nexport default ConditionalBranchWidget;\n","import ConditionalBranchWidget from './widget';\nimport ConditionalBranchModel from './model';\nimport BaseNodeFactory from '../BaseNode/factory';\nimport { elementTypes } from '../../../constants/elementTypes';\n\nclass ConditionalBranchFactory extends BaseNodeFactory {\n constructor() {\n super({\n type: elementTypes.CONDITIONAL_BRANCH,\n Model: ConditionalBranchModel,\n Widget: ConditionalBranchWidget\n });\n }\n}\n\nexport default ConditionalBranchFactory;\n","import React from 'react';\n\nimport { t } from '@jotforminc/translation';\nimport { useSelector } from 'react-redux';\nimport { nodeWidgetProps } from '../../../constants/propTypes';\nimport { elementTypes } from '../../../constants/elementTypes';\nimport { iconTypes } from '../../../constants/iconTypes';\nimport { getSelectedFormTitle } from '../../../store/selectors';\nimport BaseWidget from '../BaseNode/widget';\nimport WidgetContactBody from '../Commons/WidgetContactBody';\nimport WidgetResource from '../Commons/WidgetResource';\n\nconst AssignFormWidget = ({ node, engine }) => {\n const {\n name: nodeName, assignee, formID, id\n } = node.getOptions();\n const source = Array.isArray(assignee) && assignee.length > 0 ? assignee : [];\n const selectedFormNodeLabel = formID ? useSelector(getSelectedFormTitle(id)) || false : nodeName;\n\n return (\n \n \n \n \n \n\n );\n};\n\nAssignFormWidget.propTypes = {\n ...nodeWidgetProps\n};\n\nexport default AssignFormWidget;\n","import AssignFormWidget from './widget';\nimport AssignFormModel from './model';\nimport BaseNodeFactory from '../BaseNode/factory';\nimport { elementTypes } from '../../../constants/elementTypes';\n\nclass AssignFormFactory extends BaseNodeFactory {\n constructor() {\n super({\n type: elementTypes.ASSIGN_FORM,\n Model: AssignFormModel,\n Widget: AssignFormWidget\n });\n }\n}\n\nexport default AssignFormFactory;\n","import React from 'react';\n\nimport { t } from '@jotforminc/translation';\nimport { useSelector } from 'react-redux';\nimport { nodeWidgetProps } from '../../../constants/propTypes';\nimport { elementTypes } from '../../../constants/elementTypes';\nimport { iconTypes } from '../../../constants/iconTypes';\nimport { getSelectedDocumentTitle } from '../../../store/selectors';\nimport BaseWidget from '../BaseNode/widget';\nimport WidgetContactBody from '../Commons/WidgetContactBody';\nimport WidgetResource from '../Commons/WidgetResource';\n\nconst SignDocumentWidget = ({ node, engine }) => {\n const {\n name: nodeName, documentID, id\n } = node.getOptions();\n const documentTitle = documentID ? useSelector(getSelectedDocumentTitle(id)) || nodeName : false;\n\n return (\n \n \n {documentTitle ? (\n
    \n
    \n
    \n {documentTitle}\n
    \n
    \n
    \n ) : (\n \n )}\n
    \n \n\n );\n};\n\nSignDocumentWidget.propTypes = {\n ...nodeWidgetProps\n};\n\nexport default SignDocumentWidget;\n","import SignDocumentWidget from './widget';\nimport SignDocumentModel from './model';\nimport BaseNodeFactory from '../BaseNode/factory';\nimport { elementTypes } from '../../../constants/elementTypes';\n\nclass SignDocumentFactory extends BaseNodeFactory {\n constructor() {\n super({\n type: elementTypes.SIGN_DOCUMENT,\n Model: SignDocumentModel,\n Widget: SignDocumentWidget\n });\n }\n}\n\nexport default SignDocumentFactory;\n","import React from 'react';\nimport { t } from '@jotforminc/translation';\nimport { nodeWidgetProps } from '../../../constants/propTypes';\nimport { elementTypes } from '../../../constants/elementTypes';\nimport BaseWidget from '../BaseNode/widget';\nimport WidgetContactBody from '../Commons/WidgetContactBody';\nimport WidgetResource from '../Commons/WidgetResource';\nimport { INTEGRATION_DETAILS } from '../../../constants/IntegrationDetails';\n\nconst IntegrationsWidget = ({ node, engine }) => {\n const { actionType, subType, integrationAccountName } = node.getOptions();\n const details = INTEGRATION_DETAILS[subType];\n const label = details?.actions?.find(e => e.value === actionType)?.text || 'Integration';\n const targetSource = integrationAccountName ? [{\n text: integrationAccountName,\n isQuestion: false,\n formTitle: label\n }] : [];\n\n return (\n \n \n \n \n \n\n );\n};\n\nIntegrationsWidget.propTypes = {\n ...nodeWidgetProps\n};\n\nexport default IntegrationsWidget;\n","import IntegrationsModel from './model';\nimport BaseNodeFactory from '../BaseNode/factory';\nimport { elementTypes } from '../../../constants/elementTypes';\nimport IntegrationsWidget from './widget';\n\nclass IntegrationFactory extends BaseNodeFactory {\n constructor() {\n super({\n type: elementTypes.INTEGRATION,\n Model: IntegrationsModel,\n Widget: IntegrationsWidget\n });\n }\n}\n\nexport default IntegrationFactory;\n","import React from 'react';\n\nimport { t } from '@jotforminc/translation';\nimport { useSelector } from 'react-redux';\nimport { nodeWidgetProps } from '../../../constants/propTypes';\nimport { elementTypes } from '../../../constants/elementTypes';\nimport { iconTypes } from '../../../constants/iconTypes';\nimport { getSelectedFormTitle } from '../../../store/selectors';\nimport BaseWidget from '../BaseNode/widget';\nimport WidgetContactBody from '../Commons/WidgetContactBody';\nimport WidgetResource from '../Commons/WidgetResource';\n\nconst AssignTaskWidget = ({ node, engine }) => {\n const {\n name: nodeName, assignee, formID, id\n } = node.getOptions();\n const source = Array.isArray(assignee) && assignee.length > 0 ? assignee : [];\n const selectedFormNodeLabel = formID ? useSelector(getSelectedFormTitle(id)) || false : nodeName;\n\n return (\n \n \n \n \n \n\n );\n};\n\nAssignTaskWidget.propTypes = {\n ...nodeWidgetProps\n};\n\nexport default AssignTaskWidget;\n","import MergeFactory from './Merge/factory';\nimport SplitFactory from './Split/factory';\nimport AssignFactory from './Assign/factory';\nimport GenericFactory from './Generic/factory';\nimport ApprovalFactory from './Approval/factory';\nimport EndPointFactory from './EndPoint/factory';\nimport SendEmailFactory from './SendEmail/factory';\nimport StartPointFactory from './StartPoint/factory';\nimport PlaceholderFactory from './Placeholder/factory';\nimport BinaryDecisionFactory from './BinaryDecision/factory';\nimport ConditionalBranchFactory from './ConditionalBranch/factory';\nimport AssignFormFactory from './AssignForm/factory';\nimport SignDocumentFactory from './SignDocument/factory';\nimport IntegrationFactory from './Integrations/factory';\nimport AssignTaskFactory from './AssignTask/factory';\n\nexport default [\n MergeFactory,\n SplitFactory,\n AssignFactory,\n GenericFactory,\n ApprovalFactory,\n EndPointFactory,\n SendEmailFactory,\n StartPointFactory,\n PlaceholderFactory,\n BinaryDecisionFactory,\n ConditionalBranchFactory,\n AssignFormFactory,\n SignDocumentFactory,\n IntegrationFactory,\n AssignTaskFactory\n];\n","import AssignTaskWidget from './widget';\nimport AssignTaskModel from './model';\nimport BaseNodeFactory from '../BaseNode/factory';\nimport { elementTypes } from '../../../constants/elementTypes';\n\nclass AssignTaskFactory extends BaseNodeFactory {\n constructor() {\n super({\n type: elementTypes.ASSIGN_TASK,\n Model: AssignTaskModel,\n Widget: AssignTaskWidget\n });\n }\n}\n\nexport default AssignTaskFactory;\n","import { LayerModel } from '@projectstorm/react-canvas-core';\n\nimport { DEFAULT_NODE_LAYER_TYPE } from '../../../constants/identifiers';\n\nclass NodeLayerModel extends LayerModel {\n constructor() {\n super({\n isSvg: false,\n transformed: true,\n type: DEFAULT_NODE_LAYER_TYPE\n });\n }\n\n getChildModelFactoryBank(engine) {\n return engine.getNodeFactories();\n }\n\n getNodes() {\n return this.getModels();\n }\n}\n\nexport default NodeLayerModel;\n","import React, { useRef, useLayoutEffect, useEffect } from 'react';\nimport { shape, func } from 'prop-types';\nimport { PeformanceWidget } from '@projectstorm/react-canvas-core';\nimport { ResizeObserver } from '@juggle/resize-observer';\n\nconst NodeWrapper = ({ node, engine }) => {\n const nodeRef = useRef(false);\n\n const id = node.getID();\n const serialized = node.serialize();\n const { isNew } = node.getOptions();\n const { x: left, y: top } = node.getPosition();\n\n const handleMouseLave = () => {\n node.fireEvent({}, 'portVisibilityChanged');\n };\n\n const updateDimensions = ({ width, height }) => {\n node.updateDimensions({ width, height });\n const allPorts = Object.values(node.getPorts());\n allPorts.forEach(port => {\n try {\n const portCord = engine.getPortCoords(port);\n port.updateCoords(portCord);\n } catch {\n console.warn('port update failed');\n }\n });\n };\n\n useLayoutEffect(() => {\n if (nodeRef.current) {\n const ResizeObserverFn = global.ResizeObserver || ResizeObserver;\n const observer = new ResizeObserverFn(([{ contentRect: { width, height } }]) => updateDimensions({ width, height }));\n\n observer.observe(nodeRef.current);\n\n return () => {\n observer.disconnect();\n };\n }\n }, [nodeRef.current]);\n\n useEffect(() => {\n if (isNew) {\n const timeout = setTimeout(() => {\n node.setNew(false);\n if (nodeRef.current) {\n const { width, height } = nodeRef.current.getBoundingClientRect();\n updateDimensions({ width, height });\n }\n }, 350);\n return () => clearTimeout(timeout);\n }\n }, [isNew, nodeRef.current]);\n\n const className = [\n 'node',\n 'jCanvas-node',\n isNew && 'isNew'\n ].filter(val => val).join(' ');\n\n return (\n \n {() => (\n \n {engine.generateWidgetForNode(node)}\n \n )}\n \n );\n};\n\nNodeWrapper.propTypes = {\n node: shape({\n getID: func.isRequired,\n serialize: func.isRequired,\n getPosition: func.isRequired,\n getPorts: func.isRequired\n }).isRequired,\n engine: shape({\n getPortCoords: func.isRequired,\n generateWidgetForNode: func.isRequired\n }).isRequired\n};\n\nexport default NodeWrapper;\n","import React from 'react';\nimport { shape, func } from 'prop-types';\n\nimport orderBy from 'lodash/orderBy';\nimport NodeWrapper from '../../NodeWrapper';\nimport { DEFAULT_FEATURES, NODE_ORDERING } from '../../../constants/features';\n\nconst NodeLayerWidget = ({ engine, layer }) => {\n let nodes = Object.values(layer.getNodes());\n if (DEFAULT_FEATURES[NODE_ORDERING]) {\n nodes = orderBy(nodes, 'options.depth');\n }\n return nodes.map(node => );\n};\n\nNodeLayerWidget.propTypes = {\n engine: shape({}).isRequired,\n layer: shape({ getLinks: func }).isRequired\n};\n\nexport default NodeLayerWidget;\n","import React from 'react';\nimport { AbstractReactFactory } from '@projectstorm/react-canvas-core';\n\nimport NodeLayerModel from './model';\nimport NodeLayerWidget from './widget';\n\nimport { DEFAULT_NODE_LAYER_TYPE } from '../../../constants/identifiers';\n\nclass NodeLayerFactory extends AbstractReactFactory {\n constructor() {\n super(DEFAULT_NODE_LAYER_TYPE);\n }\n\n generateModel() {\n return new NodeLayerModel();\n }\n\n generateReactWidget(event) {\n return (\n \n );\n }\n}\n\nexport default NodeLayerFactory;\n","import { LayerModel } from '@projectstorm/react-canvas-core';\n\nclass LinkLayerModel extends LayerModel {\n constructor() {\n super({\n isSvg: true,\n transformed: true,\n type: 'diagram-links'\n });\n }\n\n getLinks() {\n return this.getModels();\n }\n\n getChildModelFactoryBank(engine) {\n return engine.getLinkFactories();\n }\n}\n\nexport default LinkLayerModel;\n","import React from 'react';\nimport { shape, func } from 'prop-types';\nimport { PeformanceWidget } from '@projectstorm/react-canvas-core';\n\nimport LinkWidget from '../Link/widget';\n\nconst LinkLayerWidget = ({ engine, layer }) => {\n const links = Object.values(layer.getLinks());\n\n return (\n <>\n {\n links.map(link => (\n \n {() => (\n \n )}\n \n ))\n }\n \n );\n};\n\nLinkLayerWidget.propTypes = {\n engine: shape({}).isRequired,\n layer: shape({ getLinks: func }).isRequired\n};\n\nexport default LinkLayerWidget;\n","import React from 'react';\nimport { AbstractReactFactory } from '@projectstorm/react-canvas-core';\n\nimport LinkLayerModel from './model';\nimport LinkLayerWidget from './widget';\n\nclass LinkLayerFactory extends AbstractReactFactory {\n constructor() {\n super('diagram-links');\n }\n\n generateModel() {\n return new LinkLayerModel();\n }\n\n generateReactWidget(event) {\n return (\n \n );\n }\n}\n\nexport default LinkLayerFactory;\n","import React, { useRef } from 'react';\nimport { shape, func, node } from 'prop-types';\n\nconst LabelWrapper = ({ label, children }) => {\n const ref = useRef();\n const link = label.getParent();\n const linkID = link.getID();\n const isLinkSelected = link.isSelected();\n const style = !ref.current ? {} : { transform: label.calculateLabelPosition({ width: ref.current.offsetWidth, height: ref.current.offsetHeight }) };\n if (isLinkSelected) {\n style.zIndex = 2;\n }\n\n return (\n \n {children}\n \n );\n};\n\nLabelWrapper.propTypes = {\n children: node.isRequired,\n label: shape({ getID: func, serialize: func }).isRequired\n};\n\nexport default LabelWrapper;\n","import React from 'react';\n\nimport LabelWidget from '../Label/widget';\nimport LabelWrapper from '../../LabelWrapper';\n\nconst LabelLayerWidget = ({ engine, layer }) => {\n const labels = layer.getLabels();\n return labels.map(label => (\n \n \n \n ));\n};\n\nexport default LabelLayerWidget;\n","import React from 'react';\nimport { AbstractReactFactory } from '@projectstorm/react-canvas-core';\n\nimport LabelLayerModel from './model';\nimport LabelLayerWidget from './widget';\n\nclass LabelLayerFactort extends AbstractReactFactory {\n constructor() {\n super('diagram-labels');\n }\n\n generateModel() {\n return new LabelLayerModel();\n }\n\n generateReactWidget({ model }) {\n return (\n \n );\n }\n}\n\nexport default LabelLayerFactort;\n","import Styled from 'styled-components';\n\nconst thickness = '1px';\nconst color = '#FE546D';\n\nexport const ScGuideLine = Styled.div`\n position: absolute;\n background-color: ${color};\n width: ${p => (p.$direction === 'vertical' ? thickness : '100%')};\n height: ${p => (p.$direction === 'horizontal' ? thickness : '100%')};\n`;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { ScGuideLine } from './scGuide';\n\nconst GuideLayerWidget = ({\n x1 = null,\n y1 = null,\n x2 = null,\n y2 = null,\n x3 = null,\n y3 = null,\n x4 = null,\n selectedElementHeight = 0,\n selectedElementWidth = 0\n}) => {\n return (\n <>\n {x1 && !x3 && }\n {y1 && !y3 && }\n {x2 && !x3 && }\n {y2 && !y3 && }\n {x3 && !y3 && }\n {x4 && y3 && }\n {y3 && }\n \n );\n};\n\nGuideLayerWidget.propTypes = {\n x1: PropTypes.number,\n y1: PropTypes.number,\n x2: PropTypes.number,\n y2: PropTypes.number,\n x3: PropTypes.number,\n y3: PropTypes.number,\n x4: PropTypes.number,\n selectedElementHeight: PropTypes.number,\n selectedElementWidth: PropTypes.number\n};\n\nexport default GuideLayerWidget;\n","import React from 'react';\nimport { AbstractReactFactory } from '@projectstorm/react-canvas-core';\nimport { GuideLayerModel } from './GuideLayerModel';\nimport GuideLayerWidget from './GuideLayerWidget';\n\nexport class GuideLayerFactory extends AbstractReactFactory {\n constructor() {\n super('diagram-guides');\n }\n\n generateModel() { // Takes evennt if necessary\n return new GuideLayerModel();\n }\n\n generateReactWidget = event => {\n const guidePositions = event?.model?.guidePositions;\n const selectedElementHeight = event?.model?.selectedNodes[0]?.height ? event.model.selectedNodes[0].height : 0;\n const selectedElementWidth = event?.model?.selectedNodes[0]?.width ? event.model.selectedNodes[0].width : 0;\n if (!guidePositions) return null;\n\n return (\n \n );\n };\n}\n","import React from 'react';\nimport Styled from 'styled-components';\nimport { func, shape } from 'prop-types';\n\nconst ScSelection = Styled.div`\n z-index: 2;\n position: absolute;\n border-radius: 4px;\n pointer-events: all;\n border: 1px dashed #000;\n border: 2px solid #5E74E6;\n background-color: rgba(94, 116, 230, 0.2);\n &:not(.isTemporary) {\n cursor: move;\n background-color: rgba(94, 116, 230, 0.08);\n }\n`;\n\nconst SelectionBoxWidget = ({ model }) => {\n const id = model.getID();\n const { x, y } = model.getPosition();\n const isTemporary = model.isTemporary();\n const { width, height } = model.getDimensions();\n const className = ['wfSelectionBox', isTemporary && 'isTemporary'].filter(val => val);\n return (\n \n );\n};\n\nSelectionBoxWidget.propTypes = {\n model: shape({ getOptions: func }).isRequired\n};\n\nexport default SelectionBoxWidget;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport SelectionBoxWidget from '../SelectionBox/widget';\n\nconst SelectionBoxLayerWidget = ({ engine, layer }) => {\n const selectionBoxes = layer.getSelectionBoxes();\n return selectionBoxes.map(model => (\n \n ));\n};\n\nSelectionBoxLayerWidget.propTypes = {\n rect: PropTypes.object\n};\n\nSelectionBoxLayerWidget.defaultProps = {\n rect: { topleft: { x: 0, y: 0 }, bottomright: { x: 0, y: 0 } }\n};\n\nexport default SelectionBoxLayerWidget;\n","import React from 'react';\nimport { AbstractReactFactory } from '@projectstorm/react-canvas-core';\n\nimport SelectionBoxLayerWidget from './widget';\nimport SelectionBoxLayerModel from './model';\nimport { DEFAULT_SELECTIONBOX_LAYER_TYPE } from '../../../constants/identifiers';\n\nclass SelectionBoxLayerFactory extends AbstractReactFactory {\n constructor() {\n super(DEFAULT_SELECTIONBOX_LAYER_TYPE);\n }\n\n generateModel() {\n return new SelectionBoxLayerModel();\n }\n\n generateReactWidget = event => {\n return (\n \n );\n };\n}\n\nexport default SelectionBoxLayerFactory;\n","import { Action } from '@projectstorm/react-canvas-core';\n\nimport LinkModel from '../../../components/Diagrams/Link/model';\n\nimport { isInputTarget } from '../../../utils';\nimport WatchmanRecorder from '../../../utils/WatchmanRecorder';\n\nimport InputType from '../../../constants/inputType';\nimport CONFIGURATION from '../../../constants/config';\nimport { elementTypes } from '../../../constants/elementTypes';\nimport { DEFAULT_POINT_TYPE } from '../../../constants/identifiers';\n\nexport default class CanvasDeleteAction extends Action {\n constructor({ onDeleteElement, onDeleteLink, onDeletePoint }) {\n const deleteKeyCodes = CONFIGURATION.CANVAS_DELETE_KEY_CODES; // Delete and backspace\n super({\n type: InputType.KEY_DOWN,\n fire: event => {\n if (isInputTarget(event) || deleteKeyCodes.indexOf(event.event.keyCode) === -1) {\n return;\n }\n\n const selectedModels = this.engine.getModel().getSelectedEntities();\n if (!selectedModels.length) {\n return;\n }\n\n const eventModel = this.engine.getActionEventBus().getModelForEvent(event);\n if (\n (eventModel && selectedModels.indexOf(eventModel) === -1)\n // getModelForEvent fails to get LinkModel from event since its target is while deleting links\n || (!eventModel && !(event.event.target instanceof HTMLBodyElement)) // eslint-disable-line no-undef\n ) {\n return;\n }\n\n event.event.preventDefault(); // Disable going back with backspace on firefox & ie #2727479\n\n selectedModels.forEach(model => {\n if (model.isLocked()) {\n console.log('element delete failed, element is locked', model.getID(), model.getType());\n return;\n }\n const type = model.getType();\n switch (true) {\n case type !== elementTypes.START_POINT && Object.values(elementTypes).indexOf(type) > -1: {\n const elementID = model.getID();\n WatchmanRecorder.trackEvent('canvas-deleteElement-keyDown', { elementID });\n onDeleteElement(elementID);\n break;\n }\n case model instanceof LinkModel: {\n const linkID = model.getID();\n WatchmanRecorder.trackEvent('canvas-deleteLink-keyDown', { linkID });\n onDeleteLink(linkID);\n break;\n }\n case DEFAULT_POINT_TYPE === model.getType(): {\n onDeletePoint(model.getID());\n break;\n }\n default:\n console.log('model', model.getType());\n break;\n }\n });\n }\n });\n }\n}\n","import { Action } from '@projectstorm/react-canvas-core';\n\nimport { isInputTarget } from '../../../utils';\nimport InputType from '../../../constants/inputType';\nimport CONFIGURATION from '../../../constants/config';\nimport CanvasEngineBuilder from './CanvasEngineBuilder';\n\nexport default class CanvasDeselectAction extends Action {\n constructor() {\n const deselectKeyCodes = CONFIGURATION.CANVAS_DESELECT_KEY_CODES;\n super({\n type: InputType.KEY_DOWN,\n fire: event => {\n if (isInputTarget(event) || deselectKeyCodes.indexOf(event.event.keyCode) === -1) {\n return;\n }\n\n if (CanvasEngineBuilder.engine.model) {\n CanvasEngineBuilder.engine.model.activeSelectionBoxLayer.removeAllSelectionBoxes();\n CanvasEngineBuilder.engine.model.clearSelection();\n }\n }\n });\n }\n}\n","const clamp = (x, lowerLimit, higherLimit) => Math.min(Math.max(x, lowerLimit), higherLimit);\n\nconst interpolate = (x, y, a) => x * (1 - clamp(a, 0.0, 1.0)) + y * clamp(a, 0.0, 1.0);\n\nexport default interpolate;\n","import max from 'lodash/max';\nimport debounce from 'lodash/debounce';\nimport { Toolkit } from '@projectstorm/react-canvas-core';\nimport createEngine, { NodeModel } from '@projectstorm/react-diagrams';\n\nimport State from '../../../components/Diagrams/State';\nimport LinkModel from '../../../components/Diagrams/Link/model';\nimport PointModel from '../../../components/Diagrams/Point/model';\nimport LinkFactory from '../../../components/Diagrams/Link/factory';\nimport LabelFactory from '../../../components/Diagrams/Label/factory';\nimport DiagramModel from '../../../components/Diagrams/Diagram/model';\nimport ActionEventBus from '../../../components/Diagrams/ActionEventBus';\nimport WorkflowElements from '../../../components/Diagrams/WorkflowElements';\nimport NodeLayerFactory from '../../../components/Diagrams/NodeLayer/factory';\nimport LinkLayerFactory from '../../../components/Diagrams/LinkLayer/factory';\nimport LabelLayerFactory from '../../../components/Diagrams/LabelLayer/factory';\nimport { GuideLayerFactory } from '../../../components/Diagrams/GuideLayer/GuideLayerFactory';\nimport SelectionBoxLayerFactory from '../../../components/Diagrams/SelectionBoxLayer/factory';\n\nimport CanvasDeleteAction from './CanvasDeleteAction';\nimport CanvasDeselectAction from './CanvasDeselectAction';\nimport {\n confirmRemoveElement, confirmRemoveLink, updateElement, updateMultipleElement, setDragState, placeElementOntoLabel, convertPlaceholderToElement\n} from '../../../actionCreators';\n\nimport { elementTypes } from '../../../constants/elementTypes';\nimport { DEFAULT_LINK_LAYER_TYPE } from '../../../constants/identifiers';\nimport interpolate from '../../../utils/math/interpolate';\nimport { WIDGET_WRAPPER_WIDTH } from '../../../styles/variables';\n\nclass CanvasEngineBuilder {\n constructor() {\n this.engine = createEngine({\n registerDefaultZoomCanvasAction: false,\n registerDefaultDeleteItemsAction: false\n });\n\n this.engine.eventBus = new ActionEventBus(this.engine);\n this.prepareEngine();\n this.originalRepaint = this.engine.repaintCanvas;\n this.engine.repaintCanvas = this.repaintCanvas;\n this.engine.getMouseElement = this.getMouseElement;\n }\n\n getCanvasDimensions = () => {\n const initialOffsetX = this.model.getOffsetX();\n const initialOffsetY = this.model.getOffsetY();\n const { height, width } = this.engine.canvas.getBoundingClientRect();\n return {\n initialOffsetX,\n initialOffsetY,\n height,\n width\n };\n };\n\n getMouseElement = event => {\n const target = event.target || event.relatedTarget;\n if (!target) {\n return null;\n }\n\n const diagramModel = this.engine.getModel();\n\n switch (true) {\n // Selection Box\n case Boolean(Toolkit.closest(target, '.wfSelectionBox')): {\n const element = Toolkit.closest(target, '.wfSelectionBox');\n return diagramModel.getSelectionBox(element.getAttribute('data-selectionboxid'));\n }\n // Port\n case Boolean(Toolkit.closest(target, '.port[data-name]')): {\n const element = Toolkit.closest(target, '.port[data-name]');\n const nodeElement = Toolkit.closest(target, '.node[data-nodeid]');\n return diagramModel.getNode(nodeElement.getAttribute('data-nodeid')).getPort(element.getAttribute('data-name'));\n }\n // Point\n case Boolean(Toolkit.closest(target, '.point[data-id]')): {\n const element = Toolkit.closest(target, '.point[data-id]');\n const nodeElement = Toolkit.closest(target, '.node[data-nodeid]');\n return diagramModel.getNode(nodeElement.getAttribute('data-nodeid')).getPort(element.getAttribute('data-name'));\n }\n // Link\n case Boolean(Toolkit.closest(target, '[data-linkid]')): {\n const element = Toolkit.closest(target, '[data-linkid]');\n return diagramModel.getLink(element.getAttribute('data-linkid'));\n }\n // Node\n case Boolean(Toolkit.closest(target, '.node[data-nodeid]')): {\n const element = Toolkit.closest(target, '.node[data-nodeid]');\n return diagramModel.getNode(element.getAttribute('data-nodeid'));\n }\n default:\n return null;\n }\n };\n\n disableRepaint = () => {\n this.repaintDisabled = true;\n };\n\n enableRepaint = () => {\n this.repaintDisabled = false;\n };\n\n repaintCanvas = (...params) => {\n if (this.repaintDisabled) {\n return;\n }\n return this.originalRepaint.call(this.engine, ...params);\n // this.engine.repaintCanvas = this.originalRepaint;\n };\n\n setDispatch = f => {\n this.dispatch = f;\n this.debouncedDispatch = debounce(f, 10);\n };\n\n prepareEngine = () => {\n this.engine.eventBus.registerAction(new CanvasDeleteAction({\n onDeleteElement: id => {\n this.dispatch(confirmRemoveElement(id));\n },\n onDeleteLink: id => {\n this.dispatch(confirmRemoveLink({ id }));\n },\n onDeletePoint: id => {\n console.log('on delete point', id);\n }\n }));\n this.engine.eventBus.registerAction(new CanvasDeselectAction());\n\n this.engine.getLinkFactories().registerFactory(new LinkFactory());\n this.engine.getLabelFactories().registerFactory(new LabelFactory());\n this.engine.getLayerFactories().registerFactory(new NodeLayerFactory());\n this.engine.getLayerFactories().registerFactory(new LinkLayerFactory());\n this.engine.getLayerFactories().registerFactory(new LabelLayerFactory());\n this.engine.getLayerFactories().registerFactory(new GuideLayerFactory());\n this.engine.getLayerFactories().registerFactory(new SelectionBoxLayerFactory());\n WorkflowElements.forEach(FactoryClass => this.engine.getNodeFactories().registerFactory(new FactoryClass()));\n\n this.engine.getStateMachine().pushState(new State({\n engine: this.engine,\n onUpdateElement: data => {\n if (!Array.isArray(data)) {\n return this.debouncedDispatch(updateElement(data));\n }\n\n if (data.length > 0) {\n this.debouncedDispatch(updateMultipleElement(data));\n }\n },\n onPlaceElementOntoLabel: data => {\n this.debouncedDispatch(placeElementOntoLabel(data));\n },\n onPlaceholderToElement: data => {\n this.debouncedDispatch(convertPlaceholderToElement(data));\n },\n onDragStateChange: data => {\n this.dispatch(setDragState(data));\n }\n }));\n\n window.engine = this.engine;\n window.engine.zoomToElement = this.zoomToElement;\n };\n\n prepareModel = () => {\n const options = {};\n if (window?.model?.options) {\n const { zoom, offsetX, offsetY } = window.model.options;\n options.zoom = zoom;\n options.offsetX = offsetX;\n options.offsetY = offsetY;\n }\n this.model = new DiagramModel(options);\n this.engine.setModel(this.model);\n window.model = this.model;\n };\n\n // TODO: separate below actions\n addElementNode = node => {\n this.addElementNodeSilent(node);\n this.engine.repaintCanvas();\n };\n\n addElementNodeSilent = node => {\n this.model.addNode(node);\n };\n\n // removed diagram node with its links\n removeElementNode = elementID => {\n this.removeElementNodeSilent(elementID);\n this.engine.repaintCanvas();\n };\n\n removeElementNodeSilent = elementID => {\n const target = this.model.getNode(elementID);\n target.remove();\n };\n\n addNewLinkNode = ({\n toNodeID,\n fromNodeID,\n sourcePort,\n targetPort,\n labels = [],\n linkOptions = {},\n isSilent = false\n }) => {\n const link = new LinkModel(linkOptions);\n link.setSourcePort(sourcePort || this.getNode(fromNodeID).getCenterPort('out', 'BOTTOM'));\n link.setTargetPort(targetPort || this.getNode(toNodeID).getCenterPort('in', 'TOP'));\n labels.forEach(label => link.addLabel(label));\n link.updatePoints();\n this.engine.getModel().addLink(link);\n if (!isSilent) {\n this.engine.repaintCanvas();\n }\n\n return link;\n };\n\n addLinkNodeSilent = ({\n fromElement, fromPortName, toElement, toPortName, id, points, labels = []\n }) => {\n const sourceElementNode = this.engine.model.getNode(fromElement);\n const targetElementNode = this.engine.model.getNode(toElement);\n if (!sourceElementNode || !targetElementNode) {\n return;\n }\n\n const sourcePort = sourceElementNode.getPorts()[fromPortName];\n const targetPort = targetElementNode.getPorts()[toPortName];\n if (!sourcePort || !targetPort) {\n return;\n }\n\n let link = this.model.getLink(id);\n if (!link) {\n link = new LinkModel({ id: parseInt(id, 10) });\n this.model.addLink(link);\n link.setSourcePort(sourcePort);\n const pointModels = points.map(({\n id: pointID, x, y, isDirty\n }) => new PointModel({ id: pointID, position: { x, y }, isDirty }));\n link.setPoints(pointModels);\n }\n\n link.setTargetPort(targetPort);\n\n // Fix for malformed points\n if (link.getPoints().length < 4) {\n link.updatePoints();\n }\n\n labels.forEach(label => {\n link.addLabel(label);\n });\n\n // link.trimEdges(); // TODO add PORT FACTORY!\n return link;\n };\n\n addLinkNode = params => {\n const link = this.addLinkNodeSilent(params);\n this.engine.repaintCanvas();\n return link;\n };\n\n removeLinkNode = linkID => {\n this.removeLinkNodeSilent(linkID);\n this.engine.repaintCanvas();\n };\n\n removeLinkNodeSilent = linkID => {\n const found = this.model.getLink(linkID);\n if (!found) {\n return;\n }\n\n found.remove();\n this.engine.repaintCanvas();\n };\n\n fitTemplates = () => {\n const margin = 10;\n const panelsWidth = 0;\n const targetZoom = 100;\n\n const startPoint = this.model.getNodes()[0];\n const startPointPos = startPoint.getPosition();\n // there is something we should zoom on\n\n const visibleClientWidth = this.engine.canvas.clientWidth - panelsWidth;\n\n const targetOffsetX = ((visibleClientWidth - WIDGET_WRAPPER_WIDTH) / 2) - startPointPos.x;\n this.model.setZoomLevel(targetZoom);\n this.model.setOffsetY();\n\n this.model.setOffset(\n targetOffsetX,\n -startPointPos.y + margin\n );\n this.engine.repaintCanvas();\n };\n\n setZoomAndOffset = (targetZoom, animate = true) => {\n const {\n initialOffsetX,\n initialOffsetY,\n height,\n width\n } = this.getCanvasDimensions();\n const initialZoom = this.model.getZoomLevel();\n const incrementZoomPercentage = (targetZoom - initialZoom) / 100;\n const targetOffsetX = initialOffsetX - (width * incrementZoomPercentage) / 4;\n const targetOffsetY = initialOffsetY - (height * incrementZoomPercentage) / 2;\n\n if (!animate) {\n CanvasEngineBuilder.model.setZoomLevel(targetZoom);\n CanvasEngineBuilder.model.setOffset(targetOffsetX, targetOffsetY);\n return;\n }\n\n const ANIMATION_DURATION = 300;\n let start;\n const step = timestamp => {\n if (start === undefined) start = timestamp;\n const elapsed = (timestamp - start);\n const interpolationValue = elapsed / ANIMATION_DURATION;\n const zoomLevel = interpolate(initialZoom, targetZoom, interpolationValue);\n this.model.setZoomLevel(zoomLevel);\n this.model.setOffset(\n interpolate(initialOffsetX, targetOffsetX, interpolationValue),\n interpolate(initialOffsetY, targetOffsetY, interpolationValue)\n );\n this.engine.repaintCanvas();\n if (interpolationValue < 1) {\n window.requestAnimationFrame(step);\n }\n };\n\n window.requestAnimationFrame(step);\n };\n\n zoomToFitScreen = (nodes = [], animation = true, margin = 75, forcedZoomLevel = false) => {\n const allNodes = [];\n if (nodes.length > 0) {\n allNodes.push(...nodes);\n } else {\n allNodes.push(\n ...this.model\n .getSelectionEntities()\n .filter(entity => entity instanceof NodeModel)\n .map(node => node)\n );\n }\n\n // TODO: read open state from redux store\n const leftPanelDOM = document.getElementById('js-leftPanel');\n // const rightPanelDOM = document.getElementById('js-rightPanel');\n const leftPanelRect = leftPanelDOM ? leftPanelDOM?.getBoundingClientRect() : {};\n // const rightPanelRect = rightPanelDOM.getBoundingClientRect();\n const panelsWidth = (leftPanelDOM && leftPanelDOM.dataset.open === 'true' ? leftPanelRect.width : 0);\n // + (rightPanelDOM.dataset.open === 'true' ? rightPanelRect.width : 0) + 10;\n // get nodes bounding box with margin\n const nodesRect = this.engine.getBoundingNodesRect(allNodes);\n\n if (nodesRect) {\n const nodesRectWidth = nodesRect.getWidth();\n // there is something we should zoom on\n const canvasRect = this.engine.canvas?.getBoundingClientRect() || {};\n const canvasTopLeftPoint = {\n x: canvasRect.left,\n y: canvasRect.top\n };\n const nodeLayerTopLeftPoint = {\n x: canvasTopLeftPoint.x + this.model.getOffsetX(),\n y: canvasTopLeftPoint.y + this.model.getOffsetY()\n };\n\n const visibleClientWidth = this.engine.canvas?.clientWidth - panelsWidth;\n\n const xFactor = visibleClientWidth / nodesRectWidth;\n const yFactor = this.engine.canvas?.clientHeight / (nodesRect.getHeight());\n let zoomFactor = xFactor < yFactor ? xFactor : yFactor;\n if (zoomFactor > 1) {\n zoomFactor = 1;\n } else if (zoomFactor < 0.05) {\n // checked for out of memory which is caused by moving elements too far\n zoomFactor = 0.05;\n }\n\n const nodesRectTopLeftPoint = {\n x: nodeLayerTopLeftPoint.x + (nodesRect.getTopLeft().x) * zoomFactor,\n y: nodeLayerTopLeftPoint.y + (nodesRect.getTopLeft().y - margin) * zoomFactor\n };\n const nonCentereOfffsetX = this.model.getOffsetX() - nodesRectTopLeftPoint.x + panelsWidth;\n const centerPx = ((visibleClientWidth - (panelsWidth * zoomFactor)) - (nodesRectWidth * zoomFactor)) / 2;\n const targetOffsetX = centerPx > 0 ? nonCentereOfffsetX + centerPx : nonCentereOfffsetX - centerPx;\n // window.modelOffset = () => [this.model.getOffsetX(), centerPx, nonCentereOfffsetX, visibleClientWidth, nodesRectWidth, zoomFactor, panelsWidth];\n const targetOffsetY = this.model.getOffsetY() + canvasTopLeftPoint.y - nodesRectTopLeftPoint.y;\n const targetZoom = forcedZoomLevel || (zoomFactor * 100);\n if (animation) {\n const ANIMATION_DURATION = 300;\n const initialZoom = this.model.getZoomLevel();\n const initialOffsetX = this.model.getOffsetX();\n const initialOffsetY = this.model.getOffsetY();\n let start;\n const step = timestamp => {\n if (start === undefined) start = timestamp;\n const elapsed = (timestamp - start);\n const interpolationValue = elapsed / ANIMATION_DURATION;\n const zoomLevel = interpolate(initialZoom, targetZoom, interpolationValue);\n this.model.setZoomLevel(zoomLevel);\n this.model.setOffset(\n interpolate(initialOffsetX, targetOffsetX, interpolationValue),\n interpolate(initialOffsetY, targetOffsetY, interpolationValue)\n );\n this.engine.repaintCanvas();\n if (interpolationValue < 1) {\n window.requestAnimationFrame(step);\n }\n };\n window.requestAnimationFrame(step);\n } else {\n this.model.setZoomLevel(targetZoom);\n this.model.setOffset(\n targetOffsetX,\n targetOffsetY\n );\n this.engine.repaintCanvas();\n }\n }\n };\n\n getNode = nodeID => {\n return this.model.getNode(nodeID);\n };\n\n getLink = linkID => {\n return this.model.getLink(linkID);\n };\n\n getSelectedNodes = () => {\n return this.model.getSelectedNodes();\n };\n\n getSelectionBoxes = () => {\n return this.model.getSelectionBoxes();\n };\n\n deselectAll = (repaint = true) => {\n this.model.getSelectedEntities().forEach(el => {\n el.setSelected(false);\n });\n if (repaint) {\n this.engine.repaintCanvas();\n }\n };\n\n getStartPoint = () => {\n return this.model.getNodes().find(n => n.getType() === elementTypes.START_POINT);\n };\n\n zoomToElement = id => {\n const selectedNode = this.model.getNodes().find(n => n?.options?.id === id);\n if (!selectedNode) {\n return;\n }\n selectedNode.setSelected(true);\n this.zoomToFitScreen([selectedNode]);\n };\n\n getModelForType = type => {\n try {\n return this.engine.getNodeFactories().getFactory(type).Model;\n } catch (e) {\n console.error(`Model not found for type: ${type}`);\n }\n };\n\n getNextLinkID = () => {\n const { engine } = this;\n const linkLayer = engine.model.layers.find(layer => layer.getType() === DEFAULT_LINK_LAYER_TYPE);\n const allLinkIds = Object.keys(linkLayer.getModels());\n // only numbers allowed on link ids\n const nextLinkID = (max(allLinkIds.map(x => parseInt(x, 10))) || 0) + 1;\n return nextLinkID;\n };\n}\n\nexport default new CanvasEngineBuilder();\n","import {\n Position, getSmoothStepPath, getStraightPath, getBezierPath, getSimpleBezierPath,\n useStore\n} from '@xyflow/react';\nimport { useSelector } from 'react-redux';\nimport { CANVAS_FLOATING_EDGE } from '../../../../constants/features';\nimport { isActiveFeature } from '../../../../store/selectors';\nimport { calculateDistance } from '../utils';\n\nexport function getParams(source, target, getHandleIds = false) {\n const targetCenter = getNodeCenter(target);\n const { handleBounds } = source.internals;\n const handles = handleBounds.source || handleBounds.target;\n const handlesByPositions = handles.map(e => ({ ...getHandleCoordsByPosition(source, e), data: e }));\n const handlesByDistanceToCenter = handlesByPositions.map(e => ({ distance: calculateDistance(e.x, targetCenter.x, e.y, targetCenter.y), ...e }));\n const closestHandle = handlesByDistanceToCenter.reduce((prev, curr) => (curr?.distance < prev?.distance ? curr : prev));\n if (getHandleIds) {\n return closestHandle.data.id;\n }\n return [closestHandle.x, closestHandle.y, closestHandle.data.position, closestHandle];\n}\n\nfunction getHandleCoordsByPosition(node, handle) {\n let offsetX = handle.width / 2;\n let offsetY = handle.height / 2;\n\n switch (handle.position) {\n case Position.Left:\n offsetX = 0;\n break;\n case Position.Right:\n offsetX = handle.width;\n break;\n case Position.Top:\n offsetY = 0;\n break;\n case Position.Bottom:\n offsetY = handle.height;\n break;\n default:\n break;\n }\n\n const x = node.position.x + handle.x + offsetX;\n const y = node.position.y + handle.y + offsetY;\n\n return { x, y };\n}\n\nfunction getNodeCenter(node) {\n if (node) {\n return {\n x: node.position.x + node.measured.width / 2,\n y: node.position.y + node.measured.height / 2\n };\n }\n}\n\nexport function getEdgeParams(source, target, labelProps) {\n const isDragging = source?.dragging || target?.dragging;\n const isFloatingEdgeEnabled = useSelector(isActiveFeature(CANVAS_FLOATING_EDGE));\n\n if (!isFloatingEdgeEnabled) {\n return {\n sx: labelProps?.sourceX,\n sy: labelProps?.sourceY,\n sourcePos: labelProps?.sourcePosition,\n tx: labelProps?.targetX,\n ty: labelProps?.targetY,\n targetPos: labelProps?.targetPosition\n };\n }\n\n if (isDragging && isFloatingEdgeEnabled) {\n const [sx, sy, sourcePos, closestHandleSource] = getParams(source, target);\n const [tx, ty, targetPos, closestHandleTarget] = getParams(target, source);\n\n return {\n sx,\n sy,\n tx,\n ty,\n sourcePos,\n targetPos,\n closestHandleSource,\n closestHandleTarget\n };\n }\n\n return {\n sx: labelProps?.sourceX,\n sy: labelProps?.sourceY,\n sourcePos: labelProps?.sourcePosition,\n tx: labelProps?.targetX,\n ty: labelProps?.targetY,\n targetPos: labelProps?.targetPosition\n };\n}\n\nexport const getHandleBounds = (selector, nodeElement, zoom, nodeOrigin = [0, 0]) => {\n const handles = nodeElement.querySelectorAll(selector);\n if (!handles || !handles.length) {\n return null;\n }\n const handlesArray = Array.from(handles);\n const nodeBounds = nodeElement.getBoundingClientRect();\n const nodeOffset = {\n x: nodeBounds.width * nodeOrigin[0],\n y: nodeBounds.height * nodeOrigin[1]\n };\n return handlesArray.map(handle => {\n const handleBounds = handle.getBoundingClientRect();\n\n return {\n id: handle.getAttribute('data-handleid'),\n position: handle.getAttribute('data-handlepos'),\n x: (handleBounds.left - nodeBounds.left - nodeOffset.x) / zoom,\n y: (handleBounds.top - nodeBounds.top - nodeOffset.y) / zoom,\n ...{\n width: nodeElement.offsetWidth,\n height: nodeElement.offsetHeight\n }\n };\n });\n};\n\nexport const getRelatedEdges = (edges, nodes) => {\n return nodes.map(({ id }) => {\n return edges.filter(({ source, target }) => id === source || id === target);\n });\n};\n\nexport const getEdgeFunctionsByType = {\n smoothstep: getSmoothStepPath,\n bezier: getBezierPath,\n straight: getStraightPath,\n step: getSimpleBezierPath\n};\n\nexport const extractTargetNodePosition = defaultValue => {\n const store = useStore();\n const [, storeToPosition = ''] = store?.connectionEndHandle ? store?.connectionEndHandle.handleId?.split('_') : [];\n return storeToPosition ? storeToPosition.toLowerCase() : defaultValue;\n};\n","import { string } from 'prop-types';\nimport React from 'react';\n\nconst Body = ({ className = '', ...props }) => {\n const classNames = ['wfDiagram-element-row', 'isBody', className].filter(Boolean).join(' ');\n\n return (\n
    \n );\n};\n\nBody.propTypes = {\n className: string\n};\n\nexport default Body;\n","import {\n bool, shape, string\n} from 'prop-types';\nimport React, { useEffect, useState } from 'react';\nimport { v4 as uuid } from 'uuid';\nimport TagInput from '@jotforminc/tag-input';\nimport { t } from '@jotforminc/translation';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { elementsTypesWithRequiredHeaders, elementSubTypes } from '../../../../../constants/elementTypes';\nimport { sanitizeTextBeforeSet } from '../../../../../utils';\nimport WatchmanRecorder from '../../../../../utils/WatchmanRecorder';\nimport { updateElement } from '../../../../../actionCreators';\nimport { getAllRelatedFormQuestionsPrefixedForTags } from '../../../../../store/selectors';\nimport { elementTypes } from '../../constants';\n\nconst Header = ({\n className, node, isHeaderEditable = true, ...props\n}) => {\n const classNames = ['wfDiagram-element-row', 'isHeader', className].filter(Boolean).join(' ');\n const [componentKey, setComponentKey] = useState(uuid());\n const dispatch = useDispatch();\n const {\n name: nodeLabel,\n locked,\n id,\n type,\n subType\n } = node;\n const [stateValue, setStateValue] = useState(nodeLabel);\n const currentType = t(`Current element is ${nodeLabel}`);\n const isHeaderRequired = elementsTypesWithRequiredHeaders.includes(type);\n const relatedQuestions = useSelector(getAllRelatedFormQuestionsPrefixedForTags(nodeLabel));\n\n const onNameChange = value => {\n if (nodeLabel === value) return;\n const nameUpdate = {\n name: value,\n elementID: id\n };\n if (type === elementTypes.SEND_EMAIL && (subType === elementSubTypes.SEND_DEFAULT_REPORT || subType === elementSubTypes.SEND_PDF)) {\n nameUpdate.subject = value;\n }\n dispatch(updateElement(nameUpdate));\n };\n useEffect(() => {\n if (stateValue !== nodeLabel) {\n setStateValue(nodeLabel);\n setComponentKey(uuid());\n }\n }, [nodeLabel]);\n\n return (\n
    \n
    \n
    e.stopPropagation()}>\n {\n if (e.target.value || !isHeaderRequired) {\n const sanitizedName = sanitizeTextBeforeSet(e.target.value);\n onNameChange(sanitizedName);\n WatchmanRecorder.trackEvent('canvas-elementName-change', { elementID: id, type });\n }\n setComponentKey(uuid());\n }}\n onRemove={e => {\n onNameChange(e.target.value);\n }}\n />\n
    \n
    \n
    \n );\n};\n\nHeader.propTypes = {\n className: string.isRequired,\n node: shape.isRequired,\n isHeaderEditable: bool\n};\n\nexport default Header;\n","import React from 'react';\nimport Root from '..';\nimport Handles from '../Handles';\nimport { PORT_LAYOUT, PROP_TYPES } from '../../constants';\n\nconst Activity = ({\n type,\n dragging,\n selected,\n data\n}) => {\n const {\n Component,\n Icon,\n className,\n elementType,\n id,\n isOrphan,\n focusOnCreate\n } = data;\n return (\n <>\n \n \n {Component && }\n \n \n );\n};\n\nActivity.propTypes = PROP_TYPES.WORKFLOW_ELEMENT;\n\nexport default Activity;\nexport { default as Header } from './Header';\nexport { default as Body } from './Body';\n","import React from 'react';\nimport { Handle, Position } from '@xyflow/react';\n\nconst Handles = ({\n ports, id, type = 'source', handlePosition: _handlePosition\n}) => {\n return Object.entries(ports).map(([position, edgeCount]) => {\n return [...Array(edgeCount).keys()].map((edge, index) => {\n const handleId = [id, position, +edge, 'handle'].join('_');\n const handlePosition = _handlePosition || `${(100 / (edgeCount + 1)) * (index + 1)}%`;\n const classNames = [\n 'wfDiagram-handle',\n ['is', position].join('')\n ].join(' ');\n\n return (\n \n );\n });\n });\n};\n\nexport default Handles;\n","import React from 'react';\nimport { bool, shape, string } from 'prop-types';\nimport { useDispatch } from 'react-redux';\nimport { useDrop } from 'react-dnd';\nimport Root from '.';\nimport Handles from './Handles';\nimport { addElementFromLeftPanel } from '../../../../actionCreators';\nimport { elementTypes } from '../../../../constants/elementTypes';\n\nconst ports = {\n Left: 1,\n Right: 1,\n Top: 3,\n Bottom: 3\n};\n\nconst Placeholder = ({\n type,\n selected,\n data: {\n id,\n elementType\n }\n}) => {\n const dispatch = useDispatch();\n const [isHovered, dropRef] = useDrop({\n accept: Object.values(elementTypes),\n drop: (item, monitor) => {\n if (monitor.didDrop()) {\n return;\n }\n const {\n type: typeValue, subType, isTeamApproval, actionType, name\n } = item;\n dispatch(addElementFromLeftPanel({\n type: typeValue, replaceWithID: id, subType, isTeamApproval, actionType, name\n }));\n }\n });\n return (\n <>\n \n \n Add Element Here\n \n \n );\n};\n\nPlaceholder.propTypes = {\n type: string.isRequired,\n data: shape({ id: string }).isRequired,\n selected: bool.isRequired\n};\n\nexport default Placeholder;\n","import React, { useCallback, useMemo } from 'react';\nimport {\n string, number, oneOf\n} from 'prop-types';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { EMAIL_TEMPLATE_TYPES } from '@jotforminc/email-wizards';\nimport { handleCustomNavigation } from '@jotforminc/utils';\nimport { NodeToolbar, useReactFlow } from '@xyflow/react';\nimport ElementToolbox from '../../../../components/ElementToolbox';\nimport {\n cloneElement, confirmRemoveElement, lockSingleElement, openEmailWizardsModal, openSettingsPanel, togglePropertyModal, updateKeyboardShortCut\n} from '../../../../actionCreators';\nimport { getSelectedNodeIds } from '../../../../store/selectors';\nimport { elementTypes } from '../constants';\n\nconst Toolbox = ({\n id, elementType\n}) => {\n const dispatch = useDispatch();\n const { getNodes } = useReactFlow();\n const nodes = getNodes();\n const resourceID = useMemo(() => {\n return nodes?.find(e => e.data.type === elementTypes.START_POINT)?.data?.resourceID;\n }, [nodes]);\n const onSettings = useCallback(() => dispatch(openSettingsPanel()), []);\n const onClone = useCallback(() => dispatch(cloneElement(id)), [id]);\n const onLock = useCallback(() => dispatch(lockSingleElement(id)), [id]);\n const onRemove = useCallback(() => dispatch(confirmRemoveElement(id)), [id]);\n const onEmailSettings = useCallback(() => dispatch(openEmailWizardsModal({ elementID: id, emailType: EMAIL_TEMPLATE_TYPES.WORKFLOW_SEND_EMAIL_GENERAL })), [id]);\n const onEditForm = useCallback(() => handleCustomNavigation(`/build/${resourceID}`), [resourceID]);\n const onViewForm = useCallback(() => handleCustomNavigation(`/${resourceID}`), [resourceID]);\n const onPropertyModalSettings = useCallback(data => dispatch(togglePropertyModal(data)), []);\n const onUpdateKeyboardShortCut = useCallback(data => dispatch(updateKeyboardShortCut(data)), []);\n const selectedNodeIds = useSelector(getSelectedNodeIds);\n const isVisible = selectedNodeIds.length === 1 && selectedNodeIds[0] === id;\n\n return (\n \n \n \n );\n};\n\nToolbox.propTypes = {\n id: oneOf([string, number]).isRequired,\n elementType: string.isRequired\n};\n\nexport default Toolbox;\n","import React from 'react';\nimport { string, func, number } from 'prop-types';\n\nconst Alerts = ({\n className = null,\n text = null,\n count = null,\n onClick = f => f\n}) => {\n return (\n
    \n {count}\n
    \n {text}\n
    \n
    \n );\n};\n\nAlerts.propTypes = {\n className: string,\n text: string,\n count: number,\n onClick: func\n};\n\nexport default Alerts;\n","import React, { forwardRef, useEffect, useMemo } from 'react';\nimport { node, string, bool } from 'prop-types';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { t } from '@jotforminc/translation';\nimport { useReactFlow } from '@xyflow/react';\nimport {\n getElementErrors, getWarnings, getShowErrorsOnDiagram, getHoveredNode\n} from '../../../../store/selectors';\nimport { focusToError } from '../../../../actionCreators';\nimport Toolbox from './Toolbox';\nimport Alerts from './Alerts';\nimport { ZOOM_DURATION } from '../constants';\n\nconst Root = forwardRef(({\n type,\n id,\n isOrphan = false,\n dragging = false,\n selected = false,\n Icon = null,\n children = null,\n className = null,\n elementType = null,\n focusOnCreate = false\n}, ref) => {\n const { fitView, getNode, getZoom } = useReactFlow();\n const dispatch = useDispatch();\n const hoveredNode = useSelector(getHoveredNode);\n const isHighlighted = hoveredNode?.id === `${id}`;\n const isIntegration = elementType?.indexOf('workflow_integration') !== -1; // We need to do something for integration types when the time has cometh.\n const onFocusToError = () => dispatch(focusToError(parseInt(id, 10)));\n const onFocusToWarning = () => dispatch(focusToError(parseInt(id, 10)));\n const elementErrors = useSelector(getElementErrors(parseInt(id, 10)));\n const showErrorsOnDiagram = useSelector(getShowErrorsOnDiagram);\n const hasError = elementErrors.length > 0 && showErrorsOnDiagram !== 'No';\n const elementWarnings = useSelector(getWarnings);\n const hasWarning = elementWarnings.length > 0;\n const hasAlerts = hasError || hasWarning;\n const alertCount = hasAlerts ? elementErrors.length || elementWarnings.length : 0;\n\n useEffect(() => {\n if (focusOnCreate) {\n const currentZoom = getZoom();\n fitView({\n nodes: [getNode(`${id}`)], duration: ZOOM_DURATION, minZoom: currentZoom, maxZoom: currentZoom\n });\n }\n }, []);\n\n const {\n text: alertText,\n onClick: alertOnClick\n } = useMemo(() => {\n switch (true) {\n case hasError:\n return {\n text: elementErrors.length === 1 ? t('Error') : t('Errors'),\n onClick: onFocusToError\n };\n case !hasError && hasWarning:\n return {\n text: elementWarnings.length === 1 ? t('Warning') : t('Warnings'),\n onClick: onFocusToWarning\n };\n default:\n return {};\n }\n }, [hasError, hasWarning]);\n\n const classNames = [\n 'wfDiagram-element',\n 'wfDiagram-node',\n ...(className || []),\n isIntegration && 'isIntegration',\n isOrphan && 'isOrphan',\n dragging && 'isDragging',\n selected && 'isSelected',\n isHighlighted && 'isHighlighted',\n hasError && 'hasError',\n hasWarning && 'hasWarning',\n type\n ].filter(Boolean).join(' ');\n\n return (\n <>\n
    \n {Icon && (\n
    \n \n
    \n )}\n {children && (\n
    \n {children}\n
    \n )}\n {hasAlerts && !window?.isTemplateMode && (\n \n )}\n
    \n \n \n );\n});\n\nRoot.propTypes = {\n Icon: node,\n children: node,\n className: string,\n type: string.isRequired,\n elementType: string,\n id: string.isRequired,\n isOrphan: bool,\n dragging: bool,\n selected: bool,\n focusOnCreate: bool\n};\n\nexport default Root;\n","import {\n bool, node, shape, string\n} from 'prop-types';\n\nexport const ZOOM_DURATION = 500; // In ms.\n\nexport const ERRORED_ELEMENT_ZOOM = 1;\n\nexport const PROP_TYPES = {\n WORKFLOW_ELEMENT: {\n data: shape({\n Component: node.isRequired,\n Icon: node.isRequired,\n className: string.isRequired,\n elementType: string.isRequired,\n id: string.isRequired,\n isOrphan: bool.isRequired\n }).isRequired,\n type: string.isRequired,\n dragging: bool.isRequired,\n selected: bool.isRequired\n }\n};\n\nexport const PORT_LAYOUT = {\n GENERIC: {\n Left: 1, Right: 1, Top: 3, Bottom: 3\n }\n};\n\nexport const NODE_TYPES = {\n PLACEHOLDER: 'placeholderNode',\n ACTIVITY: 'activityNode',\n DECISION: 'decisionNode',\n LOGIC: 'logicNode'\n};\n\nexport const NODE_DIMENSIONS = {\n placeholderNode: { width: 280, height: 85 },\n activityNode: { width: 280, height: 85 },\n decisionNode: { width: 87, height: 36 },\n logicNode: { width: 72, height: 72 }\n};\n\nexport const elementTypes = {\n MERGE: 'workflow_merge',\n SPLIT: 'workflow_split',\n ASSIGN: 'workflow_assign',\n GENERIC: 'workflow_generic',\n END_POINT: 'workflow_end_point',\n APPROVAL: 'workflow_approval',\n SEND_EMAIL: 'workflow_send_email',\n PLACEHOLDER: 'workflow_placeholder',\n START_POINT: 'workflow_start_point',\n BINARY_DECISION: 'workflow_binary_decision',\n CONDITIONAL_BRANCH: 'workflow_conditional_branch',\n ASSIGN_FORM: 'workflow_assign_form',\n SIGN_DOCUMENT: 'workflow_sign_document',\n INTEGRATION: 'workflow_integration',\n ASSIGN_TASK: 'workflow_assign_task'\n};\n\nexport const conditionalElementTypes = [\n elementTypes.BINARY_DECISION,\n elementTypes.CONDITIONAL_BRANCH\n];\n\nexport const elementTypesWithOutcome = [\n elementTypes.APPROVAL,\n elementTypes.ASSIGN,\n elementTypes.ASSIGN_TASK,\n elementTypes.SIGN_DOCUMENT,\n ...conditionalElementTypes\n];\n\nexport const canShowOutcomesInDropdown = [\n elementTypes.APPROVAL,\n elementTypes.ASSIGN,\n elementTypes.CONDITIONAL_BRANCH,\n elementTypes.ASSIGN_TASK,\n elementTypes.BINARY_DECISION,\n elementTypes.SIGN_DOCUMENT\n];\n\nexport const coloredBarInfoIconTypes = [\n elementTypes.SIGN_DOCUMENT\n];\n\nexport const DEFAULT_CANVAS_PROPERTIES = {\n nodeDragThreshold: 1,\n connectionRadius: 50,\n connectionMode: 'loose',\n fitView: true,\n fitViewOptions: { maxZoom: 1 },\n minZoom: 0.25,\n defaultEdgeOptions: { markerEnd: { type: 'arrowclosed' } },\n proOptions: {\n hideAttribution: true\n },\n edgesUpdatable: false // THIS SHOULD BE FIXED AFTER RELEASE... @ERAY @ASLI @KAAN\n};\n\nexport const CUSTOM_PANEL_DATA = {\n outcomeID: 'Outcome Properties',\n heading: 'Header Properties',\n signature: 'Signature Properties'\n};\n","import Dagre from '@dagrejs/dagre';\nimport { conditionalElementTypes } from './constants';\nimport { getNextOutcomeID } from '../../../utils/diagram/generateNewOutcome';\nimport { elementTypes } from '../../../constants/elementTypes';\nimport { OutcomeTypes } from '../../../constants/OutcomeTypes';\nimport { undefinedOutcome } from '../../../constants/undefinedOutcome';\nimport { CONDITIONAL_TERMS_MATCH_TYPES } from '../../../constants/conditions';\nimport { getHandleBounds } from './Edge/utils';\n\nconst g = new Dagre.graphlib.Graph().setDefaultEdgeLabel(() => ({}));\n\nexport const getLayoutedElements = (nodes, edges, options) => {\n g.setGraph({\n rankdir: options.direction, nodesep: 400, edgesep: 100, ranksep: 400\n });\n\n edges.forEach(edge => g.setEdge(edge.source, edge.target));\n nodes.forEach(node => g.setNode(node.id, node));\n\n Dagre.layout(g);\n\n const nodesHashMap = nodes.reduce((result, current) => {\n const {\n x, y, measured: { width, height }\n } = g.node(current.id);\n const position = { x: x - width / 2, y: y - height / 2 };\n return { ...result, [current.id]: { ...current, data: { ...current.data, position, ...position }, position } };\n }, {});\n\n const newEdges = edges.map(edge => {\n const targetElement = document.querySelector(`.react-flow__node[data-id=\"${edge.target}\"]`);\n const sourceElement = document.querySelector(`.react-flow__node[data-id=\"${edge.source}\"]`);\n const targetHandleBounds = getHandleBounds('.source', targetElement, 1);\n const sourceHandleBounds = getHandleBounds('.source', sourceElement, 1);\n const sourceNode = nodesHashMap[edge.source];\n const targetNode = nodesHashMap[edge.target];\n const allHandleDistances = targetHandleBounds.reduce((closest, targetHandle) => {\n const closestHandle = {};\n sourceHandleBounds.forEach(sourceBound => {\n const sourceX = sourceNode?.position.x + sourceBound.x;\n const targetX = targetNode?.position.x + targetHandle.x;\n const sourceY = sourceNode?.position.y + sourceBound.y;\n const targetY = targetNode?.position.y + targetHandle.y;\n const key = Math.abs(\n Math.sqrt(Math.pow(sourceX - targetX, 2) + Math.pow(sourceY - targetY, 2))\n ).toFixed(3).toString();\n const value = [sourceBound.id, targetHandle.id];\n if (closest[key]) {\n const isMiddleHandle = sourceBound.id.split('_')[2] === '1';\n if (!isMiddleHandle) return;\n }\n closestHandle[key] = value;\n });\n\n return { ...closest, ...closestHandle };\n }, {});\n const keys = [...Object.keys(allHandleDistances)].sort((a, b) => a.localeCompare(b, undefined, { numeric: true }));\n return {\n ...edge,\n sourceHandle: allHandleDistances[keys[0]][0],\n targetHandle: allHandleDistances[keys[0]][1]\n };\n });\n\n return {\n nodes: Object.values(nodesHashMap),\n edges: newEdges\n };\n};\n\nexport const markNodes = nodes => {\n const sortedNodes = nodes.slice().sort((a, b) => a.position.x - b.position.x);\n sortedNodes.forEach(node => {\n // eslint-disable-next-line no-param-reassign\n node.xSeq = Math.abs(node.position.x / 1000);\n });\n\n sortedNodes.sort((a, b) => a.position.y - b.position.y);\n sortedNodes.forEach(node => {\n // eslint-disable-next-line no-param-reassign\n node.ySeq = Math.abs(node.position.y / 1000);\n });\n\n return nodes;\n};\n\nexport const isOwnerConditional = ownerElement => conditionalElementTypes.indexOf(ownerElement.type) > -1;\n\nexport const inRange = (start, end, range = 3) => {\n return Math.abs(parseInt(start, 10) - parseInt(end, 10)) < range;\n};\n\nexport const generateNewOutcome = ({ outcomes, type, ...params }) => {\n const id = getNextOutcomeID(outcomes);\n switch (type) {\n case elementTypes.SIGN_DOCUMENT:\n return ({\n id,\n outcomeID: id,\n ...params\n });\n case elementTypes.BINARY_DECISION:\n return ({\n id,\n outcomeID: id,\n type: OutcomeTypes.CONDITION,\n conditionValue: 'CUSTOM',\n ...params\n });\n case elementTypes.CONDITIONAL_BRANCH:\n return ({\n id,\n outcomeID: id,\n type: OutcomeTypes.CONDITION,\n conditionValue: 'CUSTOM',\n conditionTerms: [{ field: 'none', id: 'term_1606998658750', operator: 'none' }],\n conditionTermsMatchType: CONDITIONAL_TERMS_MATCH_TYPES.ALL,\n ...params\n });\n default:\n return ({\n id,\n outcomeID: id,\n type: OutcomeTypes.CUSTOM,\n ...undefinedOutcome,\n ...params\n });\n }\n};\n\nexport const calculateDistance = (x1, x2, y1, y2) => Math.sqrt(Math.pow((x1 - x2), 2) + Math.pow((y1 - y2), 2));\n","import { findSubField, parseFieldValues } from '@jotforminc/utils';\nimport { ConditionContainerMiniModule } from '@jotforminc/builder-components';\nimport { loadScript } from '../../utils';\n\nexport const loadConditionAssets = () => {\n const { conditionWizardAssets } = window;\n if (conditionWizardAssets.length === 0) {\n return Promise.reject();\n }\n return Promise.all(\n conditionWizardAssets.map(asset => loadScript(asset))\n );\n};\n\nexport const prepareQuestionForText = (questions, value, anotherFieldDropdown = false) => {\n const { ConditionUtils } = ConditionContainerMiniModule;\n const fieldsIDs = parseFieldValues(value, '|');\n const question = anotherFieldDropdown\n ? questions.find(q => q?.name === value)\n : questions.find(q => q?.qid === fieldsIDs?.questionID || q.name === value);\n if (!question) return {};\n const subfield = findSubField(question, fieldsIDs?.subfieldID);\n const text = question?.text || ConditionUtils.getQuestionText(question, { value }) || '';\n return { text: text, color: question.color, ...subfield };\n};\n\nexport const createFieldValue = (value, subfieldID = undefined, anotherFieldDropdown = false) => {\n if (anotherFieldDropdown) {\n return { target: { value: `{${value?.name}}` }, persist: f => f };\n }\n if (subfieldID && value?.fields && value?.fields.length > 0) {\n return { target: { value: `${value?.qid}|${subfieldID}` }, persist: f => f };\n }\n return { target: { value: value?.qid || '' }, persist: f => f };\n};\n","import {\n IconMergeFilled, IconSplitFilled, IconSquareFilled, IconFormCheckFilled, IconProductPaymentFormFilled,\n IconFormFilled, IconIfElseConditionFilled, IconConditionalBranchFilled, IconFormArrowRightFilled,\n IconProductSignFilled, IconFormPenCheckFilled, IconPaperReportFilled,\n IconEnvelopeFormFilled, IconUsersCheckFilled, IconDocumentPdfFilled, IconTaskFilled\n} from '@jotforminc/svg-icons';\n\nimport { NODE_DIMENSIONS, NODE_TYPES } from '../Canvas/V2/constants';\nimport Placeholder from '../Canvas/V2/Nodes/Placeholder';\nimport { Approval, ApproveAndSign, TeamApproval } from '../Canvas/V2/Nodes/Activity/Approvals';\nimport { IfElse, Branch } from '../Canvas/V2/Nodes/Activity/Condition';\nimport { PDF, Report } from '../Canvas/V2/Nodes/Activity/PDF';\nimport SignDocument from '../Canvas/V2/Nodes/Activity/SignDocument';\nimport Email from '../Canvas/V2/Nodes/Activity/Email';\nimport { Form, AssignForm } from '../Canvas/V2/Nodes/Activity/Form';\nimport Split from '../Canvas/V2/Nodes/Logic/Split';\nimport Merge from '../Canvas/V2/Nodes/Logic/Merge';\nimport End from '../Canvas/V2/Nodes/Decision/End';\nimport Terminate from '../Canvas/V2/Nodes/Decision/Terminate';\n\nimport Integration from '../Canvas/V2/Nodes/Activity/Integrations';\nimport { INTEGRATION_DETAILS } from '../../constants/IntegrationDetails';\nimport Dummy from '../Canvas/V2/Nodes/Generic';\nimport { DEFAULT_FEATURES, PAYMENT_FORM } from '../../constants/features';\nimport AssignTask from '../Canvas/V2/Nodes/Activity/AssignTask';\nimport { elementSubTypes } from '../../constants/elementTypes';\n\nconst portMapping = {\n RIGHT_MIDDLE_In: 'Right_0_handle',\n LEFT_MIDDLE_In: 'Left_0_handle',\n DYNAMIC_TOP_0_In: 'Top_0_handle',\n DYNAMIC_TOP_1_In: 'Top_1_handle',\n DYNAMIC_TOP_2_In: 'Top_2_handle',\n DYNAMIC_BOTTOM_0_In: 'Bottom_0_handle',\n DYNAMIC_BOTTOM_1_In: 'Bottom_1_handle',\n DYNAMIC_BOTTOM_2_In: 'Bottom_2_handle',\n RIGHT_MIDDLE_Out: 'Right_0_handle',\n LEFT_MIDDLE_Out: 'Left_0_handle',\n DYNAMIC_TOP_0_Out: 'Top_0_handle',\n DYNAMIC_TOP_1_Out: 'Top_1_handle',\n DYNAMIC_TOP_2_Out: 'Top_2_handle',\n DYNAMIC_BOTTOM_0_Out: 'Bottom_0_handle',\n DYNAMIC_BOTTOM_1_Out: 'Bottom_1_handle',\n DYNAMIC_BOTTOM_2_Out: 'Bottom_2_handle'\n};\n\nconst reverseObject = obj => Object.keys(obj).reduce((result, current) => ({ ...result, [obj[current]]: current }), {});\n\nconst reversedPortMapping = reverseObject(portMapping);\n\nconst UtilsByType = {\n workflow_merge: {\n Component: Merge,\n Icon: IconMergeFilled,\n nodeType: NODE_TYPES.LOGIC,\n defaultName: 'Merge Branches'\n },\n workflow_split: {\n Component: Split,\n Icon: IconSplitFilled,\n nodeType: NODE_TYPES.LOGIC,\n defaultName: 'Split Branches '\n },\n workflow_end_point: {\n Component: End,\n className: ['isEnd'],\n Icon: IconSquareFilled,\n nodeType: NODE_TYPES.DECISION,\n defaultName: 'End'\n },\n workflow_approval: {\n Component: Approval,\n className: ['isApproval'],\n Icon: IconFormCheckFilled,\n nodeType: NODE_TYPES.ACTIVITY,\n defaultName: 'Approval'\n },\n workflow_send_email: {\n Component: Email,\n className: ['isEmail'],\n Icon: IconEnvelopeFormFilled,\n nodeType: NODE_TYPES.ACTIVITY,\n defaultName: 'Email'\n },\n workflow_placeholder: {\n Component: Placeholder,\n nodeType: NODE_TYPES.PLACEHOLDER\n },\n workflow_start_point: {\n Component: Form,\n className: ['isStartPoint'],\n Icon: IconFormFilled,\n nodeType: NODE_TYPES.ACTIVITY\n },\n workflow_binary_decision: {\n Component: IfElse,\n className: ['isIfElse'],\n Icon: IconIfElseConditionFilled,\n nodeType: NODE_TYPES.ACTIVITY,\n defaultName: 'If/Else Condition'\n },\n workflow_conditional_branch: {\n Component: Branch,\n className: ['isBranch'],\n Icon: IconConditionalBranchFilled,\n nodeType: NODE_TYPES.ACTIVITY,\n defaultName: 'Conditional Branch'\n },\n workflow_assign_form: {\n Component: AssignForm,\n className: ['isForm'],\n Icon: IconFormArrowRightFilled,\n nodeType: NODE_TYPES.ACTIVITY,\n defaultName: 'Form'\n },\n workflow_payment_form: {\n Component: AssignForm,\n className: ['isPaymentForm'],\n Icon: IconProductPaymentFormFilled,\n nodeType: NODE_TYPES.ACTIVITY,\n defaultName: 'Payment Form'\n },\n workflow_sign_document: {\n Component: SignDocument,\n className: ['isSignDocument'],\n Icon: IconProductSignFilled,\n nodeType: NODE_TYPES.ACTIVITY,\n defaultName: 'Sign Document'\n },\n workflow_approval_with_sign: {\n Component: ApproveAndSign,\n className: ['isApproveAndSign'],\n Icon: IconFormPenCheckFilled,\n nodeType: NODE_TYPES.ACTIVITY,\n defaultName: 'Approve & Sign'\n },\n workflow_send_approval_report: {\n Component: Report,\n className: ['isReport'],\n Icon: IconPaperReportFilled,\n nodeType: NODE_TYPES.ACTIVITY,\n defaultName: 'Flow Report'\n },\n workflow_send_pdf: {\n Component: PDF,\n className: ['isPDF'],\n Icon: IconDocumentPdfFilled,\n nodeType: NODE_TYPES.ACTIVITY,\n defaultName: 'PDF'\n },\n workflow_end_point_pseudo: {\n Component: End,\n className: ['isEnd'],\n Icon: IconSquareFilled,\n nodeType: NODE_TYPES.DECISION,\n defaultName: 'End'\n },\n workflow_end_point_terminate: {\n Component: Terminate,\n className: ['isTerminate'],\n Icon: IconSquareFilled,\n nodeType: NODE_TYPES.DECISION,\n defaultName: 'Terminate'\n },\n workflow_send_default_report: {\n Component: Report,\n className: ['isReport'],\n Icon: IconPaperReportFilled,\n nodeType: NODE_TYPES.ACTIVITY,\n defaultName: 'Flow Report'\n },\n workflow_team_approval: {\n Component: TeamApproval,\n className: ['isTeamApproval'],\n Icon: IconUsersCheckFilled,\n nodeType: NODE_TYPES.ACTIVITY,\n defaultName: 'Team Approval'\n },\n workflow_generic: {\n Component: Dummy,\n className: ['isGeneric'],\n Icon: IconUsersCheckFilled,\n nodeType: NODE_TYPES.ACTIVITY\n },\n workflow_assign_task: {\n Component: AssignTask,\n className: ['isAssignTask'],\n Icon: IconTaskFilled,\n nodeType: NODE_TYPES.ACTIVITY,\n defaultName: 'Task'\n },\n ...(Object.entries(INTEGRATION_DETAILS).reduce((prev, [key, values]) => {\n if (values?.actions) {\n return {\n ...prev,\n [key]: {\n Component: Integration,\n className: ['isIntegration'],\n Icon: values.icon,\n nodeType: NODE_TYPES.ACTIVITY,\n defaultName: 'Integration'\n }\n };\n }\n return prev;\n }, {}))\n\n};\n\n// NODE DIMENSION SHOULD BE DYNAMICALLY !!!\nexport const nodeAdapter = nodes => nodes.map(({\n id, position, type, subType, dragging = false, highlight = false, width = null, height = null, selected, ...rest\n}) => {\n // TODO: remove emailsubtypes from elementsubtype\n const elementType = Object.values(elementSubTypes).indexOf(subType) !== -1 ? subType : type;\n const {\n Component = null,\n Icon = null,\n className = null,\n nodeType,\n defaultName\n } = UtilsByType[elementType];\n const nodeId = `${id}`;\n let AdaptedIcon = Icon;\n\n const dimensions = {\n measured: {\n width: width || NODE_DIMENSIONS[nodeType].width,\n height: height || NODE_DIMENSIONS[nodeType].height\n }\n };\n\n if (DEFAULT_FEATURES[PAYMENT_FORM] && rest?.resourceObject && rest.resourceObject?.paymentProps) {\n AdaptedIcon = IconProductPaymentFormFilled;\n }\n\n return {\n className: 'wfDiagram-node',\n id: nodeId,\n type: nodeType,\n updatable: 'source',\n dragging: dragging,\n highlight: highlight,\n selected: selected,\n data: {\n ...rest,\n Component,\n Icon: AdaptedIcon,\n className,\n elementType,\n subType,\n type,\n id,\n position,\n element_id: id,\n ...dimensions,\n selected: selected,\n defaultName: defaultName\n },\n ...dimensions,\n position\n };\n});\n\nexport const linkAdapter = links => {\n return links.map(({\n fromElement: source, toElement: target, fromPortName, toPortName, id, labels\n }) => {\n return {\n id: `${id}`,\n source: `${source}`,\n type: 'customEdge',\n target: `${target}`,\n sourceHandle: `${source}_${portMapping[fromPortName]}`,\n targetHandle: `${target}_${portMapping[toPortName]}`,\n data: { source },\n labels\n };\n });\n};\n\nexport const reversedLinkAdapter = ({\n id, source, target, sourceHandle, targetHandle, labels = []\n}) => {\n const fromPortName = reversedPortMapping[sourceHandle.split('_').splice(1).join('_')];\n const toPortName = reversedPortMapping[targetHandle.split('_').splice(1).join('_')].replace('_Out', '_In');\n const numericId = +id;\n return {\n id: numericId,\n fromElement: source,\n toElement: target,\n fromPortName,\n toPortName,\n type: 'default-link',\n labels,\n link_id: numericId,\n points: [{ 1: 2 }]\n };\n};\n","import React from 'react';\nimport { t } from '@jotforminc/translation';\nimport { object } from 'prop-types';\nimport { Body, Header } from '..';\nimport WidgetResource from '../../../../../../components/Diagrams/Commons/WidgetResource';\nimport WidgetContactBody from '../../../../../../components/Diagrams/Commons/WidgetContactBody';\n\nconst Approval = ({ data }) => {\n const {\n approver: approversArray\n } = data;\n return (\n <>\n
    \n \n \n \n \n \n \n );\n};\n\nApproval.propTypes = {\n data: object.isRequired\n};\n\nexport default Approval;\n","import React from 'react';\nimport { t } from '@jotforminc/translation';\nimport { object } from 'prop-types';\nimport { Body, Header } from '..';\nimport WidgetResource from '../../../../../../components/Diagrams/Commons/WidgetResource';\nimport WidgetContactBody from '../../../../../../components/Diagrams/Commons/WidgetContactBody';\n\nconst ApproveAndSign = ({ data }) => {\n const {\n approver: approversArray\n } = data;\n return (\n <>\n
    \n \n \n \n \n \n \n );\n};\n\nApproveAndSign.propTypes = {\n data: object.isRequired\n};\n\nexport default ApproveAndSign;\n","import React from 'react';\nimport { t } from '@jotforminc/translation';\nimport { object } from 'prop-types';\nimport { Body, Header } from '..';\nimport WidgetResource from '../../../../../../components/Diagrams/Commons/WidgetResource';\nimport WidgetContactBody from '../../../../../../components/Diagrams/Commons/WidgetContactBody';\n\nconst TeamApproval = ({ data }) => {\n const {\n teamObject\n } = data;\n\n return (\n <>\n
    \n \n \n \n \n \n \n );\n};\n\nTeamApproval.propTypes = {\n data: object.isRequired\n};\n\nexport default TeamApproval;\n","import React from 'react';\nimport { object } from 'prop-types';\nimport { Button } from '@jotforminc/magnet';\nimport { IconPlusCircleFilled } from '@jotforminc/svg-icons';\nimport { useDispatch } from 'react-redux';\nimport { t } from '@jotforminc/translation';\nimport { Body, Header } from '..';\nimport WidgetResource from '../../../../../../components/Diagrams/Commons/WidgetResource';\nimport WidgetContactBody from '../../../../../../components/Diagrams/Commons/WidgetContactBody';\nimport { PROPERTY_MODAL_TOGGLED } from '../../../../../../store/actionTypes';\n\nconst Branch = ({ data }) => {\n const dispatch = useDispatch();\n const otherExcludedOutcomes = React.useMemo(() => (data?.outcomes || []).filter(f => f.id !== 999), [data?.outcomes]);\n const numberOfBranches = otherExcludedOutcomes.length;\n\n const handleWidgetClick = () => dispatch({ type: PROPERTY_MODAL_TOGGLED, data: true });\n\n const renderFilterToolTip = () => {\n return (\n 1 ? 'es' : ''} added.`}\n node={{ options: data }}\n />\n );\n };\n\n return (\n <>\n
    \n \n \n {numberOfBranches > 0 && (\n \n {numberOfBranches}\n \n ) }\n { numberOfBranches > 0 ? renderFilterToolTip() : (\n
    \n \n {t('Add conditions')}\n \n
    \n )}\n
    \n \n \n );\n};\n\nBranch.propTypes = {\n data: object.isRequired\n};\n\nexport default Branch;\n","import React, { useMemo } from 'react';\nimport { Button } from '@jotforminc/magnet';\nimport { IconPlusCircleFilled } from '@jotforminc/svg-icons';\nimport { object } from 'prop-types';\nimport { t } from '@jotforminc/translation';\nimport { useDispatch } from 'react-redux';\nimport { Body, Header } from '..';\nimport { PROPERTY_MODAL_TOGGLED } from '../../../../../../store/actionTypes';\nimport { prepareConditionTermString } from '../../../../../../components/Diagrams/Label/utils';\nimport WidgetResource from '../../../../../../components/Diagrams/Commons/WidgetResource';\nimport WidgetContactBody from '../../../../../../components/Diagrams/Commons/WidgetContactBody';\nimport { MISSING_CONDITON_TEXT } from '../../../../../../constants/elementTypes';\nimport { useForm } from '../../../../../../viewStore';\n\nconst IfElse = ({ data }) => {\n const { products, prefixedFormQuestions: questions } = useForm();\n const [termsString, moreCount] = useMemo(() => {\n const conditionVal = data?.conditionTerms || [];\n if (!Array.isArray(conditionVal) || conditionVal.length === 0) {\n return [t('Add conditions'), 0];\n }\n return [prepareConditionTermString(conditionVal, { questions, products }), conditionVal.length - 1];\n }, [data?.conditionTerms, questions]);\n const dispatch = useDispatch();\n\n const handleWidgetClick = () => dispatch({ type: PROPERTY_MODAL_TOGGLED, data: true });\n\n const renderFilterToolTip = () => {\n return (\n \n );\n };\n\n return (\n <>\n
    \n \n \n { termsString === t('Add conditions') ? (\n \n {t('Add conditions')}\n \n ) : (\n
    \n {renderFilterToolTip()}\n
    \n )}\n {moreCount > 0 && termsString !== MISSING_CONDITON_TEXT ? (\n
    \n {t('+{number} more').replace('{number}', moreCount)}\n
    \n ) : null}\n
    \n \n \n );\n};\n\nIfElse.propTypes = {\n data: object.isRequired\n};\n\nexport default IfElse;\n","import React from 'react';\nimport { object } from 'prop-types';\nimport { t } from '@jotforminc/translation';\nimport { Body, Header } from '..';\nimport WidgetContactBody from '../../../../../../components/Diagrams/Commons/WidgetContactBody';\n\nconst PDF = ({ data }) => {\n const {\n to\n } = data;\n\n const source = Array.isArray(to) && to.length > 0 ? to : [];\n\n return (\n <>\n
    \n PDF\n
    \n \n \n \n \n );\n};\nPDF.propTypes = {\n data: object.isRequired\n};\nexport default PDF;\n","import React from 'react';\nimport { object } from 'prop-types';\nimport { t } from '@jotforminc/translation';\nimport { Body, Header } from '..';\nimport WidgetContactBody from '../../../../../../components/Diagrams/Commons/WidgetContactBody';\n\nconst Report = ({ data }) => {\n const {\n to\n } = data;\n\n const source = Array.isArray(to) && to.length > 0 ? to : [];\n return (\n <>\n
    \n \n \n \n \n );\n};\nReport.propTypes = {\n data: object.isRequired\n};\nexport default Report;\n","import React from 'react';\nimport { object } from 'prop-types';\nimport { t } from '@jotforminc/translation';\nimport { Body, Header } from '..';\nimport WidgetResource from '../../../../../../components/Diagrams/Commons/WidgetResource';\nimport WidgetContactBody from '../../../../../../components/Diagrams/Commons/WidgetContactBody';\n\nconst SignDocument = ({ data }) => {\n const {\n signDocumentObject: { title } = {}\n } = data;\n return (\n <>\n \n \n \n {title ? (\n
    \n
    \n
    \n {title}\n
    \n
    \n
    \n ) : (\n \n )}\n
    \n \n \n );\n};\n\nSignDocument.propTypes = {\n data: object.isRequired\n};\nexport default SignDocument;\n","import React from 'react';\nimport { escapeHTML } from '@jotforminc/utils';\nimport { t } from '@jotforminc/translation';\nimport { object } from 'prop-types';\nimport { Body, Header } from '..';\nimport WidgetResource from '../../../../../../components/Diagrams/Commons/WidgetResource';\nimport WidgetContactBody from '../../../../../../components/Diagrams/Commons/WidgetContactBody';\nimport { sanitizeTextBeforeSet } from '../../../../../../utils';\n\nconst Email = ({ data }) => {\n const {\n subject,\n to\n } = data;\n const source = Array.isArray(to) && to.length > 0 ? to : [];\n const getNodeLabel = () => escapeHTML(sanitizeTextBeforeSet(subject));\n\n return (\n <>\n
    \n \n \n \n \n \n \n );\n};\n\nEmail.propTypes = {\n data: object.isRequired\n};\n\nexport default Email;\n","import React, { useRef } from 'react';\nimport { t } from '@jotforminc/translation';\nimport { Button } from '@jotforminc/magnet';\nimport { IconPlusCircleFilled } from '@jotforminc/svg-icons';\nimport { object } from 'prop-types';\nimport { Body, Header } from '..';\nimport Feature from '../../../../../../components/Feature';\nimport { DEFAULT_FEATURES, PAYMENT_FORM, WITHOUT_FORM } from '../../../../../../constants/features';\nimport { setResource } from '../../../../../../actionCreators';\nimport WorkflowFormPicker from '../../../../../App/WorkflowFormPicker';\nimport WidgetResource from '../../../../../../components/Diagrams/Commons/WidgetResource';\nimport { elementTypes } from '../../../constants';\n\nconst Form = ({ data }) => {\n const {\n resourceObject: { title: formTitle = '', paymentProps = null } = {},\n resourceType,\n elementType,\n name\n } = data;\n\n const FormPickerRef = useRef({});\n const isPaymentFormEnabled = DEFAULT_FEATURES[PAYMENT_FORM];\n const isResourceDefined = Boolean(resourceType);\n const startPointLabel = elementType === elementTypes.START_POINT ? 'Starting Point:' : '';\n const selectedFormNodeLabel = paymentProps && isPaymentFormEnabled ? `${startPointLabel} Payment Form` : `${startPointLabel} ${name}`;\n\n const handleAddFormClick = () => {\n FormPickerRef.current.setVisibility(true);\n };\n\n return (\n <>\n \n \n {isResourceDefined ? (\n \n
    \n
    \n
    \n {formTitle || t('Select a form')}\n
    \n {formTitle && (\n
    \n {formTitle}\n
    \n )}\n
    \n
    \n
    \n ) : (\n \n \n {t('Complete Settings')}\n \n \n
    \n )}\n />\n )}\n \n \n );\n};\n\nForm.propTypes = {\n data: object.isRequired\n};\n\nexport default Form;\n","import React from 'react';\nimport { t } from '@jotforminc/translation';\nimport { object } from 'prop-types';\nimport { useForm } from '../../../../../../viewStore';\nimport Header from '../Header';\nimport Body from '../Body';\nimport WidgetContactBody from '../../../../../../components/Diagrams/Commons/WidgetContactBody';\nimport WidgetResource from '../../../../../../components/Diagrams/Commons/WidgetResource';\n\nconst AssignForm = ({ data }) => {\n const { selectedFormTitle } = useForm();\n const {\n name: nodeName, assignee, formID, id\n } = data;\n const formTitle = selectedFormTitle(id);\n\n const source = Array.isArray(assignee) && assignee.length > 0 ? assignee : [];\n const selectedFormNodeLabel = formID ? formTitle : nodeName;\n return (\n\n <>\n \n \n \n \n \n \n \n );\n};\n\nAssignForm.propTypes = {\n data: object.isRequired\n};\n\nexport default AssignForm;\n","import React from 'react';\nimport { object } from 'prop-types';\nimport { t } from '@jotforminc/translation';\nimport { Body } from '../../Activity';\n\nconst Merge = ({ data }) => {\n const { mergeType = 'ALL' } = data;\n return (\n <>\n \n
    \n {t(mergeType)}\n
    \n \n \n );\n};\n\nMerge.propTypes = {\n data: object.isRequired\n};\n\nexport default Merge;\n","import React from 'react';\n\nconst End = () => {\n return <>END;\n};\n\nexport default End;\n","import React from 'react';\nimport { t } from '@jotforminc/translation';\nimport { object } from 'prop-types';\nimport { Body, Header } from '..';\nimport WidgetResource from '../../../../../../components/Diagrams/Commons/WidgetResource';\nimport WidgetContactBody from '../../../../../../components/Diagrams/Commons/WidgetContactBody';\nimport { INTEGRATION_DETAILS } from '../../../../../../constants/IntegrationDetails';\n\nconst Integration = ({ data }) => {\n const {\n actionType, subType, integrationAccountName, name\n } = data;\n const details = INTEGRATION_DETAILS[subType];\n const integrationName = name === 'Integration' ? details?.actions?.find(e => e.value === actionType)?.text : name;\n const label = integrationName || 'Integration';\n const targetSource = integrationAccountName ? [{\n text: integrationAccountName,\n isQuestion: false,\n formTitle: label\n }] : [];\n\n return (\n\n <>\n \n \n \n \n \n \n \n );\n};\n\nIntegration.propTypes = {\n data: object.isRequired\n};\n\nexport default Integration;\n","import React from 'react';\nimport { t } from '@jotforminc/translation';\nimport { object } from 'prop-types';\nimport { Body, Header } from '..';\nimport WidgetResource from '../../../../../../components/Diagrams/Commons/WidgetResource';\nimport WidgetContactBody from '../../../../../../components/Diagrams/Commons/WidgetContactBody';\n\nconst AssignTask = ({ data }) => {\n const {\n assignee\n } = data;\n\n const source = Array.isArray(assignee) && assignee.length > 0 ? assignee : [];\n\n return (\n <>\n
    \n \n \n \n \n \n \n );\n};\n\nAssignTask.propTypes = {\n data: object.isRequired\n};\n\nexport default AssignTask;\n","const Split = () => {\n return 'Split';\n};\n\nexport default Split;\n","import React from 'react';\n\nconst Terminate = () => {\n return <>TERMINATE;\n};\n\nexport default Terminate;\n","import React from 'react';\n\nexport default () => {\n return <>;\n};\n","import { handleCustomNavigation } from '@jotforminc/utils';\nimport requestLayer, { isEnterprise } from './requestLayer';\nimport { TEAM_ID } from '../../constants/team';\nimport { DEFAULT_FEATURES, ESSENTIAL_ELEMENT_PROPS } from '../../constants/features';\n\nconst withPrefetchedData = (prefetchedKey, handler) => {\n if (typeof window[prefetchedKey] === 'undefined') {\n return handler;\n }\n\n return (...params) => {\n let prefetchedData = window[prefetchedKey];\n if (typeof prefetchedData === 'undefined') {\n return handler(...params);\n }\n if (Array.isArray(window[prefetchedKey])) {\n prefetchedData = [...window[prefetchedKey]];\n } else {\n prefetchedData = { ...window[prefetchedKey] };\n }\n delete window[prefetchedKey];\n return Promise.resolve(prefetchedData);\n };\n};\n// ### MISC\nfunction fetchUserFromAPI() {\n return requestLayer.get('user/combinedinfo');\n}\n\nexport const fetchUser = withPrefetchedData('__userInfo', fetchUserFromAPI);\n\nfunction fetchFormUsersFromAPI() {\n return requestLayer.get('user/formusers?includeAvatars=1');\n}\n\nexport const fetchFormUsers = withPrefetchedData('__userFormUsers', fetchFormUsersFromAPI);\n\nexport function fetchFormFromAPI(formID) {\n return requestLayer.get(`form/${formID}/properties?parseJSON=1&includePDF=1&addPaymentProps=1`);\n}\n\nexport const fetchForm = withPrefetchedData('__entryPointForm', fetchFormFromAPI);\n\nexport function fetchFormQuestionsFromAPI(formID) {\n return requestLayer.get(`form/${formID}/questions?parseJSON=1`);\n}\n\nexport const fetchFormQuestions = withPrefetchedData('__entryPointFormQuestions', fetchFormQuestionsFromAPI);\n\nexport function setUserSettings(key, value) {\n return requestLayer.post(`user/settings?${key}=${value}`);\n}\n\nexport function fetchUserFormsFromAPI(username) {\n return requestLayer.get(`user${username ? `/${username}` : ''}/forms?offset=0&limit=1000&addWorkflow=1`);\n}\n\nexport const fetchUserForms = withPrefetchedData('__userForms', fetchUserFormsFromAPI);\n\nfunction fetchWorkflowAllForms(workflowID) {\n return requestLayer.get(`workflow/${workflowID}/allforms?includePDF=1`);\n}\n\nexport const fetchWorkflowForms = withPrefetchedData('__workflowForms', fetchWorkflowAllForms);\n\n// ### END MISC\n\n// ### WORKFLOW\n\nexport function createWorkflow(data) {\n return requestLayer.post('workflow', data);\n}\n\nexport function fetchWorkflowFromAPI(workflowID) {\n return requestLayer.get(`workflow/${workflowID}/combined${DEFAULT_FEATURES[ESSENTIAL_ELEMENT_PROPS] ? '?fetchEssentialElementProps=1' : ''}`);\n}\n\nexport const fetchWorkflow = withPrefetchedData('__workflowDetails', fetchWorkflowFromAPI);\n\nexport function fetchPublishedWorkflow(publishID) {\n return requestLayer.get(`workflow/publish/${publishID}/combined`);\n}\n\nexport function updateWorkflow(workflowID, data) {\n return requestLayer.post(`workflow/${workflowID}`, data);\n}\n\nexport function publishWorkflow(workflowID) {\n return requestLayer.post(`workflow/${workflowID}/publish`);\n}\n\nexport function setWorkflowResource(workflowID, data) {\n return requestLayer.post(`workflow/${workflowID}/setResource`, data);\n}\n\nexport function updateWorkflowResource(workflowID, data) {\n return requestLayer.post(`workflow/${workflowID}/updateResource`, data);\n}\n\nexport function cloneWorkflow(workflowID) {\n return requestLayer.post(`workflow/${workflowID}/clone`);\n}\n\n// ### END WORKFLOWS\n\n// ### WORKFLOW TEMPLATE START\n\nexport function shareTemplate(data) {\n const formData = new global.FormData();\n Object.entries(data).forEach(([key, value]) => formData.append(key, value));\n return requestLayer.post('templates/approval/share', formData);\n}\n\nexport function fetchTemplateCategories() {\n return requestLayer.get('templates/approval/categories');\n}\n\nexport function getTemplate(templateID) {\n return requestLayer.get(`templates/approval/${templateID}`);\n}\n\nexport function updateTemplate(templateID, data) {\n const formData = new global.FormData();\n Object.entries(data).forEach(([key, value]) => formData.append(key, value));\n return requestLayer.post(`templates/approval/${templateID}`, formData).then(templateRes => {\n const { slug } = templateRes || {};\n if (slug) handleCustomNavigation(`/workflow-templates/${slug}`);\n });\n}\n\n// ### WORKFLOW TEMPLATE END\n\n// ### WORKFLOW ERRORS\n\nexport function fetchWarnings(workflowID) {\n return requestLayer.get(`workflow/${workflowID}/errorList`);\n}\n\nexport function cancelInstance(instanceID) {\n return requestLayer.post(`workflow/instance/${instanceID}/cancel`);\n}\n\nexport function restartInstance(instanceID) {\n return requestLayer.post(`workflow/instance/${instanceID}/restart`);\n}\n\n// ! This endpoint makes bulk updates on workflow tree see docs on API/workflow/updateTree\nexport function updateTree(workflowID, data) {\n return requestLayer.put(`workflow/${workflowID}/updateTree`, data);\n}\n\nexport function fetchDocumentsFromAPI(username) {\n return requestLayer.get(`user${username ? `/${username}` : ''}/documents?filter={\"status\":\"DRAFT\"}&offset=0&orderby=&limit=10000`);\n}\n\nexport const fetchDocuments = withPrefetchedData('__userDocuments', fetchDocumentsFromAPI);\n\nexport function fetchTeamPropertiesFromAPI(teamID) {\n return requestLayer.get(`team/${teamID}/properties`);\n}\n\nexport const fetchTeamProperties = withPrefetchedData('__teamProperties', fetchTeamPropertiesFromAPI);\n\nexport function fetchLinks(workflowID) {\n return requestLayer.get(`workflow/${workflowID}/links`);\n}\n\nexport function fetchElements(workflowID) {\n return requestLayer.get(`workflow/${workflowID}/elements`);\n}\n\nexport function fetchPublicWorkflow(workflowID) {\n return requestLayer.get(`workflow/${workflowID}/public`);\n}\n\nexport function fetchDocument(documentID) {\n return requestLayer.get(`sign/${documentID}`);\n}\n\n// Only for teams\nexport const fetchTeamSettings = () => requestLayer.get('team/list/global-settings');\nexport const fetchAllTeams = () => requestLayer.get(`${\n isEnterprise()\n ? 'team/server/teams/public'\n : 'team/user/me'}?addMemberCount=1&returnTeamProperties=1&returnMembersRoles=1&returnMembers=1&sortBy=name&sortWay=asc`);\nexport const addEventToHistory = (workflowID, type) => TEAM_ID && requestLayer.post(`workflow/${workflowID}/event/${type}`);\nexport const isWorkflowBusy = workflowID => TEAM_ID && requestLayer.get(`team/asset/${workflowID}/workflow/get-is-resource-busy`, { headers: { 'Cache-control': 'no-cache' } });\nexport const fetchCustomSenderEmailsForTeams = () => (TEAM_ID && isEnterprise()) && requestLayer.get(`smtpConfig/team/${TEAM_ID}/all`);\n\nexport const fetchElement = (workflowID, id) => requestLayer.get(`workflow/${workflowID}/elements/${id}`);\nexport const createStartPoint = workflowID => requestLayer.post(`workflow/${workflowID}/createStartPoint`);\n\nexport const loadUserForms = (workflowOwner, teamID) => {\n let endpoint = '';\n const query = 'filter={\"status:eq\":\"ENABLED\"}&limit=2000&order_by=created_at&addWorkflow=1&addPaymentProps=1';\n if (teamID) {\n endpoint = `team/${teamID}/assets/form?${query}`;\n } else if (window.isSubUser) {\n endpoint = `listings/share/shared-with-me/owner/resources?${query}&owner=${workflowOwner}`;\n } else {\n endpoint = `user${workflowOwner ? `/${workflowOwner}` : ''}/forms?${query}`;\n }\n return requestLayer\n .get(`${endpoint}`);\n};\n\nexport const createWorkflowForm = (workflowID, id) => requestLayer.post(`workflow/${workflowID}/internal-form/${id}`);\n\nexport const cloneForm = formID => requestLayer.post(`form/${formID}/clone?title=Form`);\n","import { getBaseURL } from '@jotforminc/router-bridge';\nimport { isEnterprise } from '@jotforminc/enterprise-utils';\nimport { RequestLayer, Interceptors } from '@jotforminc/request-layer';\n\nconst requestLayer = new RequestLayer(`${getBaseURL()}/API`, {\n interceptorConfig: {\n teamID: global.teamID,\n customResponseInterceptors: [Interceptors.requestManagerResponseNormalizer],\n shouldCache: false,\n logCachePayload: {\n projectName: 'workflow'\n }\n }\n});\n\nexport { isEnterprise };\nexport default requestLayer;\n","import { elementTypes } from '../constants/elementTypes';\n\nimport WORKFLOW_GENERIC from './workflow_generic.json';\nimport WORKFLOW_MERGE_PROPERTIES from './workflow_merge.json';\nimport WORKFLOW_SPLIT_PROPERTIES from './workflow_split.json';\nimport WORKFLOW_ASSIGN_PROPERTIES from './workflow_assign.json';\nimport WORKFLOW_APPROVAL_PROPERTIES from './workflow_approval.json';\nimport WORKFLOW_END_POINT_PROPERTIES from './workflow_end_point.json';\nimport WORKFLOW_SEND_EMAIL_PROPERTIES from './workflow_send_email.json';\nimport WORKFLOW_START_POINT_PROPERTIES from './workflow_start_point.json';\nimport WORKFLOW_PLACEHOLDER_PROPERTIES from './workflow_placeholder.json';\nimport WORKFLOW_BINARY_DECISION_PROPERTIES from './workflow_binary_decision.json';\nimport WORKFLOW_CONDITIONAL_BRANCH_PROPERTIES from './workflow_conditional_branch.json';\nimport WORKFLOW_ASSIGN_FORM_PROPERTIES from './workflow_assign_form.json';\nimport WORKFLOW_SIGN_DOCUMENT from './workflow_sign_document.json';\nimport WORKFLOW_INTEGRATION_PROPERTIES from './workflow_integration.json';\nimport WORKFLOW_ASSIGN_TASK_PROPERTIES from './workflow_assign_task.json';\n\nexport default {\n [elementTypes.GENERIC]: WORKFLOW_GENERIC,\n [elementTypes.MERGE]: WORKFLOW_MERGE_PROPERTIES,\n [elementTypes.SPLIT]: WORKFLOW_SPLIT_PROPERTIES,\n [elementTypes.ASSIGN]: WORKFLOW_ASSIGN_PROPERTIES,\n [elementTypes.APPROVAL]: WORKFLOW_APPROVAL_PROPERTIES,\n [elementTypes.END_POINT]: WORKFLOW_END_POINT_PROPERTIES,\n [elementTypes.SEND_EMAIL]: WORKFLOW_SEND_EMAIL_PROPERTIES,\n [elementTypes.START_POINT]: WORKFLOW_START_POINT_PROPERTIES,\n [elementTypes.PLACEHOLDER]: WORKFLOW_PLACEHOLDER_PROPERTIES,\n [elementTypes.BINARY_DECISION]: WORKFLOW_BINARY_DECISION_PROPERTIES,\n [elementTypes.CONDITIONAL_BRANCH]: WORKFLOW_CONDITIONAL_BRANCH_PROPERTIES,\n [elementTypes.ASSIGN_FORM]: WORKFLOW_ASSIGN_FORM_PROPERTIES,\n [elementTypes.SIGN_DOCUMENT]: WORKFLOW_SIGN_DOCUMENT,\n [elementTypes.INTEGRATION]: WORKFLOW_INTEGRATION_PROPERTIES,\n [elementTypes.ASSIGN_TASK]: WORKFLOW_ASSIGN_TASK_PROPERTIES\n};\n","import { eventChannel, END } from 'redux-saga';\n\nconst handleModelEvent = (event, emitter, eventPhase) => {\n const { function: type } = event;\n if (eventPhase === 'eventDidFire' && type === 'entityRemoved') {\n return emitter(END);\n }\n\n emitter({ eventPhase, event, type });\n};\n\nconst createModelChannel = model => eventChannel(emitter => {\n const eventHandler = {\n eventDidFire: event => handleModelEvent(event, emitter, 'eventDidFire')\n };\n\n const listener = model.registerListener(eventHandler);\n\n return () => {\n model.deregisterListener(listener);\n };\n});\n\nexport default createModelChannel;\n","import {\n take, call, cancel, select\n} from 'redux-saga/effects';\n\nimport createModelChannel from './model';\nimport CanvasEngineBuilder from '../../modules/Canvas/V1/CanvasEngineBuilder';\n\nimport { getLinkByID } from '../../store/selectors';\nimport { addWorkflowLink, addWorkflowPlaceholderForLink } from '../workflowNew';\n\nimport { DRAG_LINK_NAME } from '../../constants/diagramStateNames';\n\nconst generateLinkModelChannel = initialModel => function* linkEventTracker() {\n const activeTasks = [];\n const channel = yield call(createModelChannel, initialModel);\n initialModel.setSagaChannel(channel);\n\n try {\n while (true) {\n const { event, type } = yield take(initialModel.getSagaChannel());\n\n // Clear debounced event\n if (activeTasks[type]) {\n yield cancel(activeTasks[type]);\n activeTasks[type] = undefined;\n }\n\n switch (type) {\n case 'targetPortChanged': {\n const { entity: link } = event;\n const linkFromStore = yield select(getLinkByID(link.getID()));\n if (linkFromStore) {\n break;\n }\n\n yield addWorkflowLink({ link });\n link.remove();\n break;\n }\n case 'addPlaceholderElement': {\n yield addWorkflowPlaceholderForLink({ link: initialModel });\n break;\n }\n default:\n break;\n }\n }\n } finally {\n for (let i = 0; i < activeTasks.length; i++) {\n const task = activeTasks[i];\n yield cancel(task);\n }\n\n const stateMachine = CanvasEngineBuilder.engine.getStateMachine();\n if (stateMachine.currentState.options.name === DRAG_LINK_NAME) {\n stateMachine.popState();\n }\n\n // console.log(`workflow link event channel terminated for ${initialModel.getID()}`);\n }\n};\n\nexport default generateLinkModelChannel;\n","import {\n call, take, put, cancel, delay, fork, spawn\n} from 'redux-saga/effects';\n\nimport createModelChannel from './model';\nimport generateLinkModelChannel from './link';\nimport { OFFSET_UPDATED } from '../../store/actionTypes';\n\nfunction* debouncedOffsetChange({ offsetX, offsetY }) {\n yield delay(1000);\n yield put({ type: OFFSET_UPDATED, data: { offsetX, offsetY } });\n}\n\nconst generateEngineEventChannel = initialModel => function* engineEventTracker() {\n const activeTasks = [];\n const channel = yield call(createModelChannel, initialModel);\n\n try {\n while (true) {\n const { event, type } = yield take(channel);\n\n if (activeTasks[type]) {\n yield cancel(activeTasks[type]);\n activeTasks[type] = undefined;\n }\n\n switch (type) {\n case 'offsetUpdated': {\n activeTasks[type] = yield fork(debouncedOffsetChange, event);\n break;\n }\n case 'linksUpdated': {\n const { link } = event;\n yield spawn(generateLinkModelChannel(link));\n break;\n }\n default:\n break;\n }\n }\n } finally {\n // console.log(`workflow engine channel terminated for ${initialModel.getID()}`);\n }\n};\n\nexport default generateEngineEventChannel;\n","import {\n take, call, put, cancel\n} from 'redux-saga/effects';\n\nimport createModelChannel from './model';\nimport { SELECTION_CHANGED, UPDATE_LINK } from '../../store/actionTypes';\n\nconst generateBaseNodeEventChannel = initialModel => function* baseNodeEventTracker() {\n const activeTasks = [];\n const channel = yield call(createModelChannel, initialModel);\n initialModel.setSagaChannel(channel);\n\n try {\n while (true) {\n const { event, type } = yield take(initialModel.getSagaChannel());\n\n // Clear debounced event\n if (activeTasks[type]) {\n yield cancel(activeTasks[type]);\n activeTasks[type] = undefined;\n }\n\n switch (type) {\n case 'selectionChanged': {\n const { entity: model } = event;\n const { options: { id: elementID, selected: isSelected } } = model;\n yield put({ type: SELECTION_CHANGED, data: { id: elementID, selected: isSelected } });\n break;\n }\n case 'linkDragged': {\n const { link } = event;\n yield put({ type: UPDATE_LINK.REQUEST, data: { link, excludeProps: ['labels'] } });\n break;\n }\n case 'linkPortChanged': {\n const { link } = event;\n yield put({ type: UPDATE_LINK.REQUEST, data: { link } });\n break;\n }\n default:\n break;\n }\n }\n } finally {\n for (let i = 0; i < activeTasks.length; i++) {\n const task = activeTasks[i];\n yield cancel(task);\n }\n\n // console.log(`workflow node event channel terminated for ${initialModel.getID()}`);\n }\n};\n\nexport default generateBaseNodeEventChannel;\n","const manage = () => {\n let iframe = null;\n const getIframe = () => iframe;\n const setIframe = frame => {\n iframe = frame;\n };\n const sendMessage = message => {\n if (!iframe) return;\n iframe.postMessage(message);\n };\n return {\n getIframe,\n setIframe,\n sendMessage\n };\n};\n\nconst IframeManager = manage();\n\nexport { IframeManager };\n","/* eslint-disable complexity */\nimport maxBy from 'lodash/maxBy';\nimport merge from 'lodash/merge';\nimport {\n call, delay, select, put, spawn\n} from 'redux-saga/effects';\nimport {\n EmailsUtils, EMAIL_TEMPLATE_TYPES\n} from '@jotforminc/email-wizards';\nimport { preparePillObjectFromEmail, preparePillObjectFromQuestion } from '@jotforminc/utils';\nimport { t } from '@jotforminc/translation';\nimport sortBy from 'lodash/sortBy';\nimport CanvasEngineBuilder from '../modules/Canvas/V1/CanvasEngineBuilder';\n\nimport * as Selectors from '../store/selectors';\nimport * as ActionTypes from '../store/actionTypes';\n\nimport { handleFlattenedProperties } from '../utils';\nimport { generateBaseNodeEventChannel } from './channels';\nimport { generateActionButtonsForElement } from '../utils/emailUtils';\nimport generateElementDefaults from '../utils/diagram/generateElementDefaults';\nimport { DEFAULT_FEATURES, OUTCOME_BUTTONS, WORKFLOW_RELEASED } from '../constants/features';\nimport { elementSubTypes, elementTypes } from '../constants/elementTypes';\n\nconst API_RETRY_AFTER_FAIL_DELAY = 500;\nconst API_RETRY_AFTER_FAIL_MAX = 3;\nconst isWorkflowReleased = DEFAULT_FEATURES[WORKFLOW_RELEASED];\n\nexport function prepareEmailObject({ email, question }) {\n let emailObject = {};\n switch (true) {\n case Boolean(email):\n emailObject = preparePillObjectFromEmail(email);\n break;\n case Boolean(question):\n emailObject = preparePillObjectFromQuestion(question);\n break;\n default:\n break;\n }\n\n const { name, ...remainingEmailProps } = emailObject;\n return remainingEmailProps;\n}\n\nexport function* retryAction(fn, ...rest) {\n return yield safeCall(call(fn, ...rest));\n}\n\nexport function* safeCall(callFunction) {\n for (let i = 0; i < API_RETRY_AFTER_FAIL_MAX; i++) {\n try {\n return yield callFunction;\n } catch (e) {\n if (e.data?.responseCode === 422) {\n return e.data;\n }\n yield delay(API_RETRY_AFTER_FAIL_DELAY);\n }\n }\n throw new Error(`Action failed for ${API_RETRY_AFTER_FAIL_MAX} times. Giving up...`);\n}\n\nexport function* getNextElementID() {\n const elements = yield select(Selectors.getNodeMap);\n const max = parseInt((maxBy(Object.values(elements), x => parseInt(x.id, 10)) || { id: 0 }).id, 10) + 1;\n const limit = 65534;\n if (max < limit) {\n return max;\n }\n for (let index = 1; index < limit; index++) {\n if (!elements[index]) {\n return index;\n }\n }\n}\n\nexport function getCanvasRemoveMethods({ isSilent = false }) {\n return isSilent ? {\n link: CanvasEngineBuilder.removeLinkNodeSilent,\n node: CanvasEngineBuilder.removeElementNodeSilent\n } : {\n link: CanvasEngineBuilder.removeLinkNode,\n node: CanvasEngineBuilder.removeElementNode\n };\n}\n\nexport function getCanvasAddMethods({ isSilent = false }) {\n return isSilent ? {\n link: CanvasEngineBuilder.addLinkNodeSilent,\n node: CanvasEngineBuilder.addElementNodeSilent\n } : {\n link: CanvasEngineBuilder.addLinkNode,\n node: CanvasEngineBuilder.addElementNode\n };\n}\n\nexport function* putUndoableAction(action) {\n yield put({ type: ActionTypes.EXECUTE_UNDOABLE_ACTION, action });\n}\n\nexport function* createNodeFromData({\n id, type, position, isSilent = false, ...params\n}) { // TODO: helper..\n const { node: addElementNodeFN } = getCanvasAddMethods({ isSilent });\n const { modelComponent: DynamicModel, ...rest } = generateElementDefaults({ type, ...params });\n const node = new DynamicModel({ id, ...rest });\n node.setPosition(position);\n addElementNodeFN(node);\n yield spawn(generateBaseNodeEventChannel(node));\n return node;\n}\n\nexport const normalizeElementFromAPIData = apiData => {\n // Fix existing end points show them as terminate\n const rawData = { ...apiData };\n if (rawData.type === elementTypes.END_POINT && !rawData.subType) {\n rawData.subType = elementSubTypes.END_POINT_TERMINATE;\n }\n const extended = generateElementDefaults({ ...rawData, withModel: false });\n const {\n element_id: id, x, y, ...rest\n } = extended;\n const normalizedPosition = {\n x: parseFloat(x) || 0,\n y: parseFloat(y) || 0\n };\n const normalized = {\n ...handleFlattenedProperties(rest),\n id: parseInt(id, 10),\n position: normalizedPosition,\n ...normalizedPosition\n };\n if (normalized.type === elementTypes.START_POINT && normalized.resourceType === 'Form') {\n normalized.resourceType = 'FORM';\n }\n\n return normalized;\n};\n\nexport const normalizeLinkFromAPIData = apiData => {\n const {\n link_id: linkID, id, fromElement, toElement, ...rest\n } = apiData;\n return {\n id: parseInt(linkID, 10),\n fromElement: parseInt(fromElement, 10),\n toElement: parseInt(toElement, 10),\n ...rest\n };\n};\n\nexport const normalizeQuestionsFromAPIData = apiData => sortBy(Object.values(apiData), ({ order }) => parseInt(order, 10));\n\nexport function* generateDefaults({\n type, elementSubType, otherProps, withModel\n}) {\n const emailProps = yield generateDefaultEmailProps({ type, elementSubType, otherProps });\n const defaults = generateElementDefaults({ type, withModel, subType: elementSubType || otherProps.subType });\n // filter not defined properties to avoid merging with empty subType etc.\n const filteredProps = Object.keys(otherProps).reduce((prev, cur) => (otherProps[cur] ? { ...prev, [cur]: otherProps[cur] } : prev), {});\n return merge(defaults, emailProps, filteredProps);\n}\n\nexport function* generateDefaultEmail({\n emailType, config = {}, onlyContent = false, emailSubType\n}) {\n const isHIPAA = yield select(Selectors.getIsHIPAA);\n const isOutcomeButtonsActive = DEFAULT_FEATURES[OUTCOME_BUTTONS];\n const extendedConfig = {\n ...config,\n isHIPAA,\n branding21: true,\n isOutcomeButtonsActive\n };\n const questions = yield select(Selectors.getAllRelatedFormQuestionsPrefixed);\n const user = yield select(Selectors.getUser);\n\n // Not use PHI enabled questions while generating default email\n const emailUtils = new EmailsUtils({\n questions: questions.filter(q => q.protected !== 'Yes'),\n formProperties: {}, // TODO: remove dependency on common\n user,\n emails: [], // TODO: remove dependency on common\n companyTitle: window.companyTitle\n });\n const email = emailUtils.generateDefaultEmail(emailType, extendedConfig, emailSubType);\n const lastQuestionID = yield select(Selectors.getLastQuestionID);\n if (!onlyContent) {\n return { ...email, lastQuestionID };\n }\n\n const filteredEmail = Object.keys(email)\n .filter(propKey => ['subject', 'to', 'content'].indexOf(propKey) > -1)\n .reduce((prev, propKey) => ({ ...prev, [propKey]: email[propKey] }), {});\n return { ...filteredEmail, lastQuestionID };\n}\n\n// eslint-disable-next-line max-statements\nexport function* generateDefaultEmailProps({\n type, elementSubType, otherProps = {}, onlyContent = false, ...rest\n}) {\n let emailProps = {};\n const { subType } = otherProps;\n switch (type) {\n case elementTypes.APPROVAL:\n case elementTypes.ASSIGN:\n case elementTypes.ASSIGN_TASK:\n {\n const key = type === elementTypes.APPROVAL ? 'approver' : 'assignee';\n if (rest?.[key]) {\n break;\n }\n if (elementTypes.ASSIGN_TASK === type) {\n emailProps[key] = [];\n break;\n }\n const { email } = yield select(Selectors.getUser);\n emailProps[key] = email ? [prepareEmailObject({ email })] : '';\n break;\n }\n case elementTypes.SEND_EMAIL: {\n const { name, email } = yield select(Selectors.getUser);\n const emailQuestion = yield select(Selectors.getFirstEmailQuestion);\n // Genuine guest check\n if (email) {\n emailProps.replyTo = [prepareEmailObject({ email })];\n }\n // When cloning if an email's to is filled with a custom email\n // then we'll use it\n const to = otherProps.to || (emailQuestion ? [prepareEmailObject({ question: emailQuestion })] : []);\n emailProps = {\n fromName: name,\n to\n };\n break;\n }\n case elementTypes.ASSIGN_FORM: {\n emailProps = {\n assignFormEmail: {\n assignee: [],\n replyTo: [],\n to: []\n }\n };\n break;\n }\n default:\n break;\n }\n\n // Defaults modifier\n switch (type) {\n case elementTypes.SEND_EMAIL: {\n const emailType = elementSubType || EMAIL_TEMPLATE_TYPES.WORKFLOW_SEND_EMAIL_GENERAL;\n const email = yield call(generateDefaultEmail, {\n emailType,\n onlyContent\n });\n const { email: userEmail } = yield select(Selectors.getUser);\n const emailQuestion = yield select(Selectors.getFirstEmailQuestion);\n const ignoredKeys = ['type', 'name'];\n Object.keys(email).forEach(keyName => {\n if (ignoredKeys.indexOf(keyName) > -1 || (otherProps && typeof otherProps[keyName] !== 'undefined')) { return; }\n emailProps[keyName] = email[keyName];\n if (!emailQuestion && keyName === 'to' && (emailType === EMAIL_TEMPLATE_TYPES.WORKFLOW_APPROVE_APPROVED || emailType === EMAIL_TEMPLATE_TYPES.WORKFLOW_APPROVE_REJECTED)) {\n emailProps[keyName] = userEmail ? [prepareEmailObject({ email: userEmail })] : '';\n }\n });\n break;\n }\n case elementTypes.APPROVAL: {\n const approvalEmail = yield call(generateDefaultEmail, {\n onlyContent,\n emailType: EMAIL_TEMPLATE_TYPES.WORKFLOW_APPROVE_START,\n config: { actionButtons: generateActionButtonsForElement(elementTypes.APPROVAL) }\n });\n emailProps.approvalEmail = {};\n emailProps.approvalEmail.email = approvalEmail;\n\n const reassignEmail = yield call(generateDefaultEmail, {\n onlyContent,\n emailType: EMAIL_TEMPLATE_TYPES.WORKFLOW_APPROVE_REASSIGN\n });\n emailProps.reassign = {};\n emailProps.reassign.email = reassignEmail;\n const reassignApproverEmail = yield call(generateDefaultEmail, {\n onlyContent,\n emailType: EMAIL_TEMPLATE_TYPES.WORKFLOW_APPROVE_REASSIGN_APPROVER,\n config: { actionButtons: generateActionButtonsForElement(elementTypes.APPROVAL) }\n });\n emailProps.reassign.approverEmail = reassignApproverEmail;\n break;\n }\n case elementTypes.ASSIGN: {\n emailProps.assignEmail = {};\n emailProps.assignEmail.email = yield call(generateDefaultEmail, {\n onlyContent,\n emailType: EMAIL_TEMPLATE_TYPES.WORKFLOW_ASSIGN_START,\n config: { actionButtons: generateActionButtonsForElement(elementTypes.ASSIGN) }\n });\n break;\n }\n case elementTypes.ASSIGN_FORM: {\n emailProps.assignFormEmail = {};\n emailProps.assignFormEmail.email = yield call(generateDefaultEmail, {\n onlyContent,\n emailType: EMAIL_TEMPLATE_TYPES.WORKFLOW_ASSIGN_FORM_NOTIFICATION,\n config: {}\n });\n break;\n }\n case elementTypes.ASSIGN_TASK: {\n const assignTaskEmail = yield call(generateDefaultEmail, {\n onlyContent,\n emailType: EMAIL_TEMPLATE_TYPES.WORKFLOW_ASSIGN_TASK,\n config: { actionButtons: generateActionButtonsForElement(elementTypes.ASSIGN_TASK) }\n });\n emailProps.assignTaskEmail = {};\n emailProps.assignTaskEmail.email = assignTaskEmail;\n break;\n }\n default:\n break;\n }\n\n switch (subType) {\n case elementSubTypes.SEND_PDF: {\n emailProps.subject = t('{form_title} PDF');\n emailProps.pdfattachment = '1';\n break;\n }\n case elementSubTypes.SEND_APPROVAL_REPORT: {\n if (isWorkflowReleased) {\n emailProps.subject = t('{form_title} Flow Report');\n } else {\n emailProps.subject = t('{form_title} Approval Report');\n }\n emailProps.pdfattachment = '1';\n break;\n }\n case elementSubTypes.SEND_DEFAULT_REPORT: {\n emailProps.subject = t('{form_title} Approval Report');\n if (isWorkflowReleased) {\n emailProps.subject = t('{form_title} Flow Report');\n } else {\n emailProps.subject = t('{form_title} Approval Report');\n }\n break;\n }\n default:\n break;\n }\n\n return emailProps;\n}\n\nexport function* queuedFetchCall({ apiCall, callback }) {\n yield put({ apiCall, callback, type: ActionTypes.FETCH });\n}\n\nexport const findNodesIDFromSourcePort = (sourcePortFromLink, sourceIDArr) => {\n const sourcePortID = sourcePortFromLink?.options?.id;\n sourceIDArr.push(sourcePortID);\n if (sourcePortFromLink?.portsIn.length <= 0 || sourcePortFromLink?.portsOut.length <= 0) {\n return sourceIDArr;\n }\n const allPorts = Object.values(sourcePortFromLink?.ports);\n const link = allPorts.reduce((prev, curr) => [...prev, ...Object.values(curr.links)], []);\n const sourcePort = link[0]?.sourcePort?.parent;\n // call recursively until find height\n return findNodesIDFromSourcePort(sourcePort, sourceIDArr);\n};\n\nexport const findNodesIDFromTargetPort = (targetPortFromLink, targetIDArr) => {\n const targetPortID = targetPortFromLink?.options?.id;\n targetIDArr.push(targetPortID);\n if (targetPortFromLink?.portsIn.length <= 0 || targetPortFromLink?.portsOut.length <= 0) {\n return targetIDArr;\n }\n const allPorts = Object.values(targetPortFromLink?.ports);\n const link = allPorts.reduce((prev, curr) => [...prev, ...Object.values(curr.links)], []);\n const targetPort = link[1]?.targetPort?.parent;\n // call recursively until find all ID's\n return findNodesIDFromTargetPort(targetPort, targetIDArr);\n};\n\nexport const findDeepstHeightNodeFromSourcePort = (sourcePortFromLink, height) => {\n if (sourcePortFromLink?.portsIn.length <= 0 || sourcePortFromLink?.portsOut.length <= 0) {\n return height;\n }\n const allPorts = Object.values(sourcePortFromLink?.ports);\n const link = allPorts.reduce((prev, curr) => [...prev, ...Object.values(curr.links)], []);\n const sourcePort = link[0]?.sourcePort?.parent;\n // call recursively until find height\n return findDeepstHeightNodeFromSourcePort(sourcePort, height + 1);\n};\n\nexport const findDeepstHeightNodeFromTargetPort = (targetPortFromLink, height) => {\n if (targetPortFromLink?.portsIn.length <= 0 || targetPortFromLink?.portsOut.length <= 0) {\n return height;\n }\n const allPorts = Object.values(targetPortFromLink?.ports);\n const link = allPorts.reduce((prev, curr) => [...prev, ...Object.values(curr.links)], []);\n let targetPort = link[1]?.targetPort?.parent;\n if (link.length > 2) {\n targetPort = link[link.length - 1]?.targetPort?.parent;\n }\n // call recursively until find height\n return findDeepstHeightNodeFromTargetPort(targetPort, height + 1);\n};\n\nexport const checkLinkLength = (sourcePort, targetPort) => {\n const allPorts = Object.values(sourcePort?.parent?.ports);\n const link = allPorts.reduce((prev, curr) => [...prev, ...Object.values(curr.links)], []);\n if (link.length >= 2) {\n const sourcePortPos = sourcePort?.position?.x;\n const targetPortPos = targetPort?.position?.x;\n if (sourcePortPos > targetPortPos) {\n return -1;\n }\n return 1;\n }\n return false;\n};\n\nexport const isParentElementConnectedOtherElement = (sourcePort, targetPort, xAxis) => {\n // find sourcePort\n const sourcePortID = sourcePort?.parent?.options?.id;\n // find targetPort\n const targetPortID = targetPort?.parent?.options?.id;\n let updateValue = null;\n const elements = [];\n // sourcePort portsIn empty\n if (xAxis) {\n updateValue = -200;\n elements.push({ id: sourcePortID, pos: 'x', updateValue: updateValue });\n elements.push({ id: targetPortID, pos: 'x', updateValue: -1 * updateValue });\n return { elements, updateValue };\n }\n if (sourcePort?.parent?.portsIn.length <= 0) {\n if (xAxis) {\n updateValue = -200;\n elements.push({ id: sourcePortID, pos: 'x', updateValue: updateValue });\n } else {\n elements.push({ id: sourcePortID, pos: 'y', updateValue: updateValue });\n }\n return { elements, updateValue };\n }\n if (sourcePort?.parent?.portsOut.length <= 0) {\n // maybe it push - y axis\n updateValue = -100;\n elements.push({ id: sourcePortID, pos: 'y', updateValue: updateValue });\n return { elements, updateValue };\n }\n // find for targetPort\n // check portsIn or portsOut is empty\n if (targetPort?.parent?.portsIn.length <= 0) {\n updateValue = null;\n elements.push({ id: targetPortID, pos: 'y', updateValue: updateValue });\n return { elements, updateValue };\n }\n if (targetPort?.parent?.portsOut.length <= 0) {\n // maybe it push - y axis\n updateValue = -100;\n const lengthCheck = checkLinkLength(sourcePort, targetPort);\n if (lengthCheck === -1 || lengthCheck === 1) {\n elements.push({ id: targetPortID, pos: 'xy', updateValue: { x: lengthCheck * updateValue, y: updateValue } });\n } else {\n elements.push({ id: targetPortID, pos: 'y', updateValue: updateValue });\n }\n return { elements, updateValue };\n }\n return null;\n};\n\nexport const findMostSuitableElements = (allNodes, sourcePort, targetPort) => {\n const elements = [];\n let xAxis = false;\n // find for sourcePort\n // check portsIn or portsOut is empty\n\n // x-axis\n const allPorts = Object.values(sourcePort?.parent?.ports);\n const link = allPorts.reduce((prev, curr) => [...prev, ...Object.values(curr.links)], []);\n if (Math.abs(sourcePort?.position?.y - targetPort?.position?.y) < 10) {\n xAxis = true;\n }\n\n const pushElements = isParentElementConnectedOtherElement(sourcePort, targetPort, xAxis);\n if (pushElements) {\n return pushElements;\n }\n\n const sourcePortFromLink = link[1]?.sourcePort?.parent;\n const sourcePortFromLinkMaxHeight = findDeepstHeightNodeFromSourcePort(sourcePortFromLink, 1);\n let targetPortFromLink = link[0]?.targetPort?.parent;\n if (link.length > 2) {\n targetPortFromLink = link[link.length - 1]?.targetPort?.parent;\n }\n const targetPortFromLinkMaxHeight = findDeepstHeightNodeFromTargetPort(targetPortFromLink, 1);\n // check which side elements count less than other one\n if (sourcePortFromLinkMaxHeight <= targetPortFromLinkMaxHeight) {\n const array = findNodesIDFromSourcePort(sourcePortFromLink, []);\n const updateValue = null;\n array.forEach(id => {\n elements.push({ id: id, pos: 'y', updateValue: updateValue });\n });\n return { elements, updateValue };\n } if (sourcePortFromLinkMaxHeight > targetPortFromLinkMaxHeight) {\n const arr = findNodesIDFromTargetPort(targetPortFromLink, []);\n const updateValue = -200;\n arr.forEach(id => {\n elements.push({ id: id, pos: 'y', updateValue: updateValue });\n });\n return { elements, updateValue };\n }\n const updateValue = null;\n return { elements, updateValue };\n};\n","/* eslint-disable complexity */\nimport {\n delay, select, put, takeLatest, takeEvery, call, take, all\n} from 'redux-saga/effects';\nimport { t } from '@jotforminc/translation';\nimport { EMAIL_TEMPLATE_TYPES } from '@jotforminc/email-wizards';\nimport { isEnterprise } from '@jotforminc/enterprise-utils';\nimport { StorageHelper } from '@jotforminc/storage-helper';\n\nimport * as Selectors from '../store/selectors';\nimport * as ActionCreators from '../actionCreators';\nimport * as ActionTypes from '../store/actionTypes';\nimport * as API from '../modules/api';\n\nimport CanvasEngineBuilder from '../modules/Canvas/V1/CanvasEngineBuilder';\n\nimport { elementSubTypes, elementTypes } from '../constants/elementTypes';\nimport elementHasPropertyPanel from '../constants/elementsWithoutPropertyPanel';\n\nimport askConfirmation from '../utils/askConfirmation';\nimport openEmailSettingsModal from '../utils/openEmailSettings';\nimport openReportSettingsModal from '../utils/openReportSettings';\nimport { LocalStorageKeys } from '../utils/localStorage';\n\nimport { addCustomSenderEmail } from '../actionCreators';\nimport WatchmanRecorder from '../utils/WatchmanRecorder';\nimport { updateEmailSettings } from './workflow/elements';\n\nimport { PADDING_FOR_SELECTION_BOX } from '../styles/variables';\nimport CONFIGURATION from '../constants/config';\nimport openSignupModal from '../utils/openSignupModal';\nimport {\n getPDFTemplateOptions, enrichEmailData, getEmailModalTitle, getCommonEmailProps, getAllPDFTemplateOptions,\n getEditorConfigs\n} from '../utils/emailUtils';\nimport calculateSelectionRange from '../utils/diagram/calculateSelectionRange';\nimport {\n DEFAULT_FEATURES, ESSENTIAL_ELEMENT_PROPS, MULTIPLE_FORMS, MULTI_FORM_PDF, WHATS_NEW_MODAL, WORKFLOW_V2\n} from '../constants/features';\nimport elementHasModalPropertyPanel from '../constants/elementsWithModalPropertyPanel';\nimport openWhatsNewModal from '../utils/openWhatsNewModal';\nimport { hasUnreadWhatsNew, getTimeWindowForWhatsNew } from '../utils/whatsNewHelper';\nimport { nodeAccesor } from './workflowNew/temporaryCanvasBuilderAdapter';\n\nfunction* watchRightPanelVisibility({ type }) {\n yield delay(0);\n\n const isRightPanelOpen = yield select(Selectors.getRightPanelStatus);\n if (!isRightPanelOpen) {\n return;\n }\n\n if (type === ActionTypes.REMOVE_ELEMENT.REQUEST) {\n yield put({ type: ActionTypes.SET_RIGHT_PANEL_VISIBILITY, data: false });\n return;\n }\n\n const selectedElementCount = yield select(Selectors.getSelectedElementCount);\n if (selectedElementCount === 0) {\n yield put({ type: ActionTypes.SET_RIGHT_PANEL_VISIBILITY, data: false });\n return;\n }\n\n if (selectedElementCount === 1) {\n const selectedElement = yield select(Selectors.getSelectedElementInfo);\n const isMissingElement = !selectedElement || !selectedElement.type;\n if (isMissingElement) {\n yield put({ type: ActionTypes.CLEAR_SELECTION });\n }\n if (isMissingElement || !elementHasPropertyPanel(selectedElement.type, selectedElement.subType)) {\n yield put({ type: ActionTypes.SET_RIGHT_PANEL_VISIBILITY, data: false });\n }\n }\n}\n\nfunction* watchPropertyModalVisibility({ type }) {\n const isModalOpen = yield select(Selectors.getPropertyModalStatus);\n if (!isModalOpen) {\n return;\n }\n if (type === ActionTypes.CONFIRM_REMOVE_ELEMENT) {\n yield put({ type: ActionTypes.PROPERTY_MODAL_TOGGLED, data: false });\n }\n}\n\nfunction updateSelectionBoxLayerAfterSelection() {\n const [selectionModel] = CanvasEngineBuilder.getSelectionBoxes();\n if (selectionModel) {\n const selectedNodes = CanvasEngineBuilder.getSelectedNodes();\n if (selectedNodes.length > 0) {\n const { topLeft, bottomRight } = calculateSelectionRange(selectedNodes);\n selectionModel.setDimensions({\n width: bottomRight.x - topLeft.x + (PADDING_FOR_SELECTION_BOX * 2),\n height: bottomRight.y - topLeft.y + (PADDING_FOR_SELECTION_BOX * 2)\n });\n selectionModel.setPosition({\n x: topLeft.x - PADDING_FOR_SELECTION_BOX,\n y: topLeft.y - PADDING_FOR_SELECTION_BOX\n });\n }\n }\n}\n\nfunction* clearHighlight() {\n yield delay(2000);\n yield put({ type: ActionTypes.REMOVE_ELEMENT_HIGHLIGHT });\n}\n\nfunction goToElement({ data: elementID }) {\n const isNewCanvas = DEFAULT_FEATURES[WORKFLOW_V2];\n if (isNewCanvas) {\n return;\n }\n const target = CanvasEngineBuilder.model.getNode(elementID);\n if (target) {\n CanvasEngineBuilder.zoomToFitScreen([target]);\n }\n}\n\nfunction* requestDeleteConfirmation({ type, data }) {\n const isNewCanvas = DEFAULT_FEATURES[WORKFLOW_V2];\n const dontShowAgainLimit = 3;\n // TODO: this fixed for only new canvas.\n const shouldSkipConfirmation = StorageHelper.getLocalStorageItem({\n key: LocalStorageKeys.SKIP_DELETE_CONFIRMATION_MODALS,\n defaultValue: false\n }) === isNewCanvas;\n const shouldShowDontShowAgain = StorageHelper.getLocalStorageItem({\n key: LocalStorageKeys.DELETE_ACTION_COUNTER,\n defaultValue: 0\n }) >= dontShowAgainLimit;\n let confirmationResponse = {};\n try {\n switch (type) {\n case ActionTypes.CONFIRM_REMOVE_ELEMENT:\n let element;\n if (DEFAULT_FEATURES[WORKFLOW_V2]) {\n element = yield select(Selectors.getElementByID(data.elementID));\n element = nodeAccesor(element);\n } else {\n element = CanvasEngineBuilder.getNode(data.elementID);\n }\n if (!shouldSkipConfirmation && element.getType() !== elementTypes.PLACEHOLDER) {\n const elementName = element.getOptions().name?.length > 0 ? element.getOptions().name : element.getOptions().defaultName;\n confirmationResponse = yield call(askConfirmation, t('Delete {elementName}?').replace('{elementName}', elementName), undefined, undefined, shouldShowDontShowAgain);\n }\n switch (element.getType()) {\n case elementTypes.PLACEHOLDER: {\n // Delete placeholder instantly\n yield put(ActionCreators.removeElement(data.elementID));\n break;\n }\n default: {\n if (element.isConnectedToStartPoint()) {\n yield put(ActionCreators.convertToPlaceholder(data.elementID));\n } else {\n if (element?.getType() === elementTypes.ASSIGN_FORM) {\n const { formID } = element?.getOptions();\n if (formID) {\n yield put(ActionCreators.updateSelectedPDF({ formID: formID }));\n const resetPrefillAssignFormList = yield select(Selectors.isAssingFormUsingOtherMapping(formID));\n if (resetPrefillAssignFormList?.length > 0) {\n yield all(\n resetPrefillAssignFormList.map(prefillNode => put((ActionCreators.updateElementAndResetPrefill({ formID: prefillNode?.formID, elementID: prefillNode?.id }))))\n );\n }\n }\n }\n yield put(ActionCreators.removeElement(data.elementID));\n }\n }\n }\n break;\n case ActionTypes.CONFIRM_REMOVE_LINK:\n if (!shouldSkipConfirmation) {\n const title = t('Delete Link?');\n const description = t('After deleting this element, connection will be lost and workflow will be interrupted.');\n confirmationResponse = yield call(askConfirmation, title, description, undefined, shouldShowDontShowAgain);\n }\n yield put(ActionCreators.removeLink(data));\n break;\n case ActionTypes.CONFIRM_REMOVE_MULTIPLE_ELEMENT:\n if (!shouldSkipConfirmation) {\n confirmationResponse = yield call(askConfirmation,\n t('Delete Selected Elements'),\n t('After deleting these elements, all connections with other elements will be invalid.'),\n t('Are you sure you want to delete selected elements?'),\n shouldShowDontShowAgain);\n }\n const { selectedElementIDList } = data;\n if (DEFAULT_FEATURES[MULTI_FORM_PDF]) {\n const assignFormElementListFromIDList = yield select(Selectors.getGivenAssignFormIDs(selectedElementIDList));\n if (assignFormElementListFromIDList && assignFormElementListFromIDList?.length > 0) {\n const deletedFormIDList = assignFormElementListFromIDList.filter(item => item);\n if (deletedFormIDList && deletedFormIDList?.length > 0) {\n yield put(ActionCreators.updateSelectedPDF({ deletedFormIDList: deletedFormIDList }));\n }\n }\n }\n yield put(ActionCreators.removeMultipleElement(selectedElementIDList));\n if (CanvasEngineBuilder.engine.model) {\n CanvasEngineBuilder.engine.model.clearSelection();\n CanvasEngineBuilder.engine.model.activeSelectionBoxLayer.removeAllSelectionBoxes();\n }\n break;\n default:\n break;\n }\n const { dontShowAgain = false } = confirmationResponse;\n if (dontShowAgain) {\n StorageHelper.setLocalStorageItem({\n key: LocalStorageKeys.SKIP_DELETE_CONFIRMATION_MODALS,\n value: true\n });\n }\n StorageHelper.incrementCounter({\n key: LocalStorageKeys.DELETE_ACTION_COUNTER,\n maxCount: dontShowAgainLimit\n });\n // eslint-disable-next-line no-empty\n } catch (e) {\n console.log('error', e);\n }\n}\n\n// eslint-disable-next-line max-statements\nexport function* openEmailWizardsModal({ data }) {\n const { elementID, emailType, emailSubType } = data;\n const isLoaded = yield select(Selectors.isLoadedByElementID(elementID));\n if (!isLoaded && DEFAULT_FEATURES[ESSENTIAL_ELEMENT_PROPS]) {\n yield take(ActionTypes.FETCH_ELEMENT.SUCCESS);\n }\n const element = yield select(Selectors.getElementByID(elementID));\n const { type, subType } = element;\n\n if (elementHasModalPropertyPanel(type, subType)) {\n yield put({ type: ActionTypes.SET_CURRENT_EMAIL_TEMPLATE, data });\n return;\n }\n const elementForm = yield select(Selectors.getElementsForm(elementID));\n const doesElementHasForm = !!elementForm;\n const formTitle = yield select(Selectors.getFormTitle);\n const entryPointFormID = yield select(Selectors.getEntryPointFormID);\n\n const formID = doesElementHasForm ? elementForm.id : entryPointFormID;\n const questionSelector = DEFAULT_FEATURES[MULTIPLE_FORMS] ? Selectors.getAllRelatedFormsAndFields : Selectors.getAllRelatedFormQuestionsPrefixed;\n const questions = yield select(questionSelector);\n try {\n const title = getEmailModalTitle(element, emailSubType || emailType);\n const customSenders = yield select(Selectors.getCustomSenderEmails);\n const userList = yield select(Selectors.getEmailSuggestionList);\n const emailProps = getCommonEmailProps(element, emailType, emailSubType);\n const user = yield select(Selectors.getUser);\n const isHIPAA = yield select(Selectors.getIsHIPAA);\n const elements = yield select(Selectors.getNodes);\n const availablePDFs = yield select(Selectors.getAvailablePDFs);\n const formProperties = yield select(Selectors.FormSelectors.findFormByID(formID));\n const getAllFormPropertiesInFlow = yield select(Selectors.FormSelectors.getAllUsedForms);\n const pdfRelatedConfig = getPDFTemplateOptions(emailProps, availablePDFs, formProperties);\n const workflowID = yield select(Selectors.getWorkflowID);\n const workflowAllForms = yield call(API.fetchWorkflowForms, workflowID);\n const availablePDFsForAllForm = workflowAllForms.map(form => ({ id: form.id, pdfs: form?.pdfs }));\n const pdfRelatedConfigsForAllForm = DEFAULT_FEATURES[MULTI_FORM_PDF] ? getAllPDFTemplateOptions(emailProps, availablePDFsForAllForm, workflowAllForms) : [];\n const editorConfigs = getEditorConfigs({ element });\n const _isEnterprise = isEnterprise();\n let isPDFPasswordRequiredOnHIPAA = true;\n if (_isEnterprise && isHIPAA && window.CUSTOMIZED_CONFIGS) {\n isPDFPasswordRequiredOnHIPAA = window.CUSTOMIZED_CONFIGS.HIPAA_REQUIRE_PDF_PASSWORD !== false;\n }\n\n yield put({ type: ActionTypes.KEYBOARD_SHORTCUTS_AVAILABLE, data: false });\n\n const emailResult = yield call(\n openEmailSettingsModal,\n title,\n {\n ...pdfRelatedConfig,\n pdfRelatedConfigsForAllForm,\n formID,\n questions,\n elements,\n formTitle,\n customSenders,\n userList,\n user,\n emailType,\n emailSubType,\n onAddEmail: email => {\n const { dispatch } = CanvasEngineBuilder;\n dispatch(addCustomSenderEmail({ [email]: 1 }));\n },\n isHIPAA,\n isEnterprise: _isEnterprise,\n getAllFormPropertiesInFlow,\n ...editorConfigs,\n ...emailProps,\n isPDFPasswordRequiredOnHIPAA\n }\n );\n const emailData = enrichEmailData({ ...emailResult, type, subType });\n\n WatchmanRecorder.trackEvent('emailModal-save-click', { elementID, emailType, emailSubType });\n yield call(updateEmailSettings, {\n elementID, emailType, emailSubType, emailData\n });\n } catch (e) {\n // Modal closed\n if (e?.message !== 'Closed') {\n throw new Error(e);\n }\n\n yield put({ type: ActionTypes.KEYBOARD_SHORTCUTS_AVAILABLE, data: true });\n WatchmanRecorder.trackEvent('emailModal-close-click', { elementID, emailType, emailSubType });\n }\n}\n\nexport function* elementHighlightFlow() {\n yield takeLatest(ActionTypes.HIGHLIGHT_ELEMENT, clearHighlight);\n yield takeEvery(ActionTypes.HIGHLIGHT_ELEMENT, goToElement);\n}\n\nexport function* uiConfirmationFlow() {\n yield takeEvery([\n ActionTypes.CONFIRM_REMOVE_ELEMENT,\n ActionTypes.CONFIRM_REMOVE_LINK,\n ActionTypes.CONFIRM_REMOVE_MULTIPLE_ELEMENT\n ], requestDeleteConfirmation);\n}\n\nexport function* emailSettingsFlow() {\n yield takeEvery(ActionTypes.OPEN_EMAIL_WIZARDS_MODAL, openEmailWizardsModal);\n}\n\nexport function* updateSelectionBoxLayerFlow() {\n yield takeLatest([\n ActionTypes.SELECTION_CHANGED\n ], updateSelectionBoxLayerAfterSelection);\n}\n\nexport function* selectionFlow() {\n yield takeLatest([\n ActionTypes.REMOVE_ELEMENT.REQUEST,\n ActionTypes.SELECTION_CHANGED,\n ActionTypes.SELECTION_CHANGED_V2,\n ActionTypes.CONVERT_ELEMENT_TO_PLACEHOLDER.REQUEST,\n ActionTypes.CREATE_WORKFLOW.REQUEST\n ], watchRightPanelVisibility);\n yield takeLatest([\n ActionTypes.REMOVE_ELEMENT.REQUEST,\n ActionTypes.CONFIRM_REMOVE_ELEMENT\n ], watchPropertyModalVisibility);\n}\n\nconst guestActionCounter = (() => {\n let counterCache = 0;\n return () => {\n if (counterCache === CONFIGURATION.GUEST_MAX_ACTION_COUNT) {\n counterCache = 0;\n return true;\n }\n counterCache += 1;\n return false;\n };\n})();\n\nexport function* signupModalFlow() {\n const user = yield select(Selectors.getUser);\n const isGuest = yield select(Selectors.getIsGuest);\n if (isGuest) {\n try {\n const loggedInUser = yield call(openSignupModal, {\n user\n });\n const workflowID = yield select(Selectors.getWorkflowID);\n yield put(ActionCreators.userLoggedIn());\n yield put(ActionCreators.fetchWorkflow(workflowID));\n WatchmanRecorder.trackEvent('signupModal-login-success', { user: loggedInUser.username });\n } catch (_e) {\n WatchmanRecorder.trackEvent('signupModal-close-click', { user: user.username });\n return false;\n }\n }\n return true;\n}\n\nexport function* guestActionFlow() {\n const isGuest = yield select(Selectors.getIsGuest);\n if (isGuest && guestActionCounter()) {\n yield call(signupModalFlow);\n }\n}\n\nexport function* errorAwarenessFlow() {\n yield takeLatest([ActionTypes.FOCUS_TO_ERROR], function* showErrorPanel({ elementID }) {\n yield put({\n type: ActionTypes.SET_ERROR_PANEL_VISIBILITY, data: true, elementID\n });\n });\n}\n\nexport function* uiPanelsWidthCalculationFlow() {\n yield takeEvery([\n ActionTypes.LEFT_PANEL_TOGGLED,\n ActionTypes.RIGHT_PANEL_TOGGLED,\n ActionTypes.SET_RIGHT_PANEL_VISIBILITY,\n ActionTypes.SHOW_DESIGN_FRAME,\n ActionTypes.HIDE_DESIGN_FRAME\n ], function* panelWidthCalculator() {\n const isRightPanelOpen = yield select(Selectors.getRightPanelStatus);\n const isLeftPanelOpen = yield select(Selectors.getLeftPanelStatus);\n const { visible: isWorkflowFormBuilderVisible } = yield select(Selectors.getWorkflowFormBuilder);\n switch (true) {\n case isLeftPanelOpen:\n document.body.classList.add('isLeftPanelOpen');\n break;\n case isRightPanelOpen:\n document.body.classList.add('isRightPanelOpen');\n break;\n case !isLeftPanelOpen && !isRightPanelOpen:\n if (isWorkflowFormBuilderVisible) {\n document.body.classList.add('isWorkflowFormBuilderOpen');\n }\n if (!isWorkflowFormBuilderVisible) {\n document.body.classList.remove('isWorkflowFormBuilderOpen');\n }\n document.body.classList.remove('isRightPanelOpen');\n document.body.classList.remove('isLeftPanelOpen');\n break;\n default: break;\n }\n });\n}\n\nexport function* panModeFlow() {\n while (true) {\n const panMode = yield select(Selectors.getPanMode);\n const [classToRemove, classToAdd] = panMode ? ['isSelectMode', 'isPanMode'] : ['isPanMode', 'isSelectMode'];\n document.body.classList.remove(classToRemove);\n document.body.classList.add(classToAdd);\n CanvasEngineBuilder.engine.panMode = panMode;\n if (CanvasEngineBuilder.engine.model) {\n CanvasEngineBuilder.engine.model.clearSelection();\n CanvasEngineBuilder.engine.model.activeSelectionBoxLayer.removeAllSelectionBoxes();\n }\n\n yield take(ActionTypes.PAN_MODE_SWITCH);\n }\n}\n\nfunction* toggleRightPanel() {\n const isRightPanelOpen = yield select(Selectors.getRightPanelStatus);\n const selectedElement = yield select(Selectors.getSelectedElementInfo);\n const hasSelectedElement = !!selectedElement?.type;\n if (!isRightPanelOpen && hasSelectedElement) yield put({ type: ActionTypes.RIGHT_PANEL_TOGGLED });\n}\n\nexport function* doubleClickFlow() {\n yield takeEvery([ActionTypes.NODE_DOUBLE_CLICKED], function* handleDoubleClick({ data: { elementType, data } }) {\n switch (elementType) {\n case elementTypes.PLACEHOLDER: {\n const isLeftPanelOpen = yield select(Selectors.getLeftPanelStatus);\n if (!isLeftPanelOpen) yield put({ type: ActionTypes.LEFT_PANEL_TOGGLED });\n break;\n }\n case elementTypes.APPROVAL:\n case elementTypes.ASSIGN_TASK:\n case elementTypes.ASSIGN:\n case elementTypes.MERGE:\n case elementTypes.SPLIT:\n case elementTypes.END_POINT:\n {\n yield toggleRightPanel();\n break;\n }\n case elementTypes.SEND_EMAIL: {\n const isNewCanvas = DEFAULT_FEATURES[WORKFLOW_V2];\n const { node } = data;\n const { id: elementID, subType } = isNewCanvas ? node : node.getOptions();\n if (subType === elementSubTypes.SEND_APPROVAL_REPORT || subType === elementSubTypes.SEND_DEFAULT_REPORT) {\n yield toggleRightPanel();\n break;\n }\n if (subType === elementSubTypes.SEND_PDF) {\n yield put({\n type: ActionTypes.PROPERTY_MODAL_TOGGLED,\n data: true\n });\n break;\n }\n yield put({\n type: ActionTypes.OPEN_EMAIL_WIZARDS_MODAL,\n data: {\n elementID,\n emailType: EMAIL_TEMPLATE_TYPES.WORKFLOW_SEND_EMAIL_GENERAL\n }\n });\n break;\n }\n case elementTypes.ASSIGN_FORM:\n case elementTypes.BINARY_DECISION:\n case elementTypes.SIGN_DOCUMENT:\n case elementTypes.INTEGRATION:\n case elementTypes.CONDITIONAL_BRANCH: {\n yield put({\n type: ActionTypes.PROPERTY_MODAL_TOGGLED,\n data: true\n });\n break;\n }\n default: break;\n }\n });\n}\n\nexport function* setResourceUIFlow({\n data: {\n elementID,\n resourceType\n }\n}) {\n if (resourceType === 'FORM') {\n yield put(ActionCreators.makeElementHighlihted(elementID));\n CanvasEngineBuilder.deselectAll();\n yield put(ActionCreators.selectElement(elementID));\n }\n}\n\nexport function* uiReportSettingsModalFlow({ data }) {\n const { elementID } = data;\n const { reportSettings } = yield select(Selectors.getElementByID(elementID));\n yield put({ type: ActionTypes.KEYBOARD_SHORTCUTS_AVAILABLE, data: false });\n\n try {\n const result = yield call(openReportSettingsModal, { threadState: reportSettings });\n yield put({ type: ActionTypes.KEYBOARD_SHORTCUTS_AVAILABLE, data: true });\n yield put(ActionCreators.updateElement({ reportSettings: result, elementID }));\n } catch (err) {\n console.log(err);\n // Modal closed\n }\n}\n\nexport function* showWhatsNewModal() {\n const isTestENV = window.JOTFORM_ENV === 'TESTING';\n if (isTestENV) return false;\n yield call(openWhatsNewModal, { modalProps: { usePortal: true, defaultVisible: true } });\n return true;\n}\n\nexport function* showPopupsFlow() {\n const currentFeature = DEFAULT_FEATURES[WHATS_NEW_MODAL];\n const isTestENV = window.JOTFORM_ENV === 'TESTING';\n if (isTestENV) return false;\n\n if (!currentFeature) {\n return false;\n }\n // Local storage check\n const popWhatsNew = hasUnreadWhatsNew();\n // Check time window set for the feature popup\n const timeWindowForCurrentFeature = getTimeWindowForWhatsNew();\n\n if (popWhatsNew && timeWindowForCurrentFeature) {\n yield showWhatsNewModal();\n }\n return false;\n}\n\nexport function* introPopupsFlow() {\n yield takeEvery(ActionTypes.INIT_CANVAS_ENGINE, showPopupsFlow);\n}\n\nexport function* uiSagaFlows() {\n yield takeEvery(ActionTypes.OPEN_REPORT_SETTINGS_MODAL, uiReportSettingsModalFlow);\n yield takeEvery(ActionTypes.SET_RESOURCE.REQUEST, setResourceUIFlow);\n yield takeEvery(ActionTypes.SHOW_WHATS_NEW_MODAL, showWhatsNewModal);\n}\n\nconst feedbackActionCounter = (() => {\n let counter = 0;\n return () => {\n counter += 1;\n if (counter === CONFIGURATION.FEEDBACK_MAX_ACTION_COUNT) {\n StorageHelper.setLocalStorageItem({\n key: LocalStorageKeys.POPUP_FEEDBACK_FORM,\n value: true\n });\n return true;\n }\n return false;\n };\n})();\n\nexport function triggerFeedbackModal() {\n const allowWorkflowFeatures = window.allowWorkflowFeatures === true;\n const modalTriggered = StorageHelper.getLocalStorageItem({\n key: LocalStorageKeys.POPUP_FEEDBACK_FORM,\n defaultValue: false\n }) === 'true';\n if (allowWorkflowFeatures && !modalTriggered && feedbackActionCounter()) {\n const feedbackButton = document.querySelector('#jotform-feedback-223129307465051');\n if (feedbackButton) {\n feedbackButton.click();\n }\n }\n}\n","var _defs, _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _path9, _path10, _path11, _path12, _path13, _path14, _path15, _path16, _path17, _path18, _path19, _path20, _path21, _path22, _path23, _path24, _path25, _path26, _path27, _path28, _circle, _circle2, _circle3;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgWfTaskCompleted = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 222 176\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null)), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M91.4036 175.478H26.854c-1.3994-10.467-7.557-39.01-20.99172-69.444C-10.9311 67.9915 11.3173 42.6279 35.2507 37.7937c17.4529-3.5253 49.7683 10.9308 69.1853-16.8483 19.418-27.77908 75.571-18.72069 79.769 22.948 4.198 41.6686 26.327 10.2044 29.475 47.6458 3.149 37.4418-24.14 54.3488-65.599 52.5368-33.167-1.449-51.6044 20.331-56.6774 31.402z\",\n fill: \"#F9F9FD\"\n})), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M90.4259 38.6892c-.7097-2.0719-1.8925-4.3739-3.7849-5.525-.9463-.4604-2.1291-.9208-3.0753-1.3812-1.1828-.6906-2.1291-1.6115-3.3119-2.3021-2.6021-1.8416-6.1506-2.5323-9.2258-1.6114-3.0753.6906-5.914 2.9927-7.3334 5.7551-2.3656-1.6114-6.1506-.9208-8.7528 0-2.6021.9209-4.9677 3.9136-5.4408 6.676l12.5377 3.6833c2.6021 2.7625 5.2043 5.0646 8.5161 6.9062 3.3119 1.6115 7.0969 2.5323 10.6453 2.0719 3.5484-.4604 7.0968-2.7625 8.7527-5.9854 1.1828-2.5322 1.4193-5.5249.4731-8.2874z\",\n fill: \"#1A2E35\"\n})), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M99.3988 78.7591c3.0752-2.0719 4.0212-6.9062 1.6562-9.8989-.71-.9208-1.6562-1.6114-1.8928-2.7625 0-.6906.2366-1.3812.2366-2.0718 1.1832-4.3739-.7097-9.4385-4.4946-12.201 0-2.5322-1.4194-7.827-4.7312-9.6687l-14.6668 2.0719c.7097 15.1936.7097 30.3873-.2365 45.3507 0 2.3021-.2366 4.8343 1.1828 6.676 1.8924 2.7625 5.6774 3.2229 8.9893 3.4531 3.3118 0 6.6236 0 9.6989-1.151 3.0753-1.1511 5.9143-2.9927 7.0973-5.9854 1.892-4.3739-.237-9.6687-2.8392-13.8124z\",\n fill: \"#1A2E35\"\n})), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M54.2114 48.1582l-.4731-3.2229 19.398-5.9853c6.1505-1.3813 13.4839 3.9135 14.4301 9.8989 1.1828 6.6759 2.3656 14.7332 2.1291 19.7977-.4731 10.1291-8.2796 12.4312-8.2796 12.4312l.7096 5.9853c.7097 6.2156-3.5484 11.7406-9.9355 12.4312-6.1506.6907-12.0646-3.4531-12.7742-9.6687l-5.2044-41.6674z\",\n fill: \"#FFC09D\"\n})), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M86.4224 56.3972c0 .6906-.4731 1.3812-1.1828 1.3812-.7096.2302-1.4193-.2302-1.4193-.9208s.4731-1.3812 1.1828-1.3812c.7097-.2302 1.4193.2302 1.4193.9208zM86.0052 53.4086c-.2366.2302-1.1829-.4604-2.6022-.2302-1.4194.2302-2.3657.9209-2.6022.9209 0 0 0-.4605.4731-.6907.4732-.4604 1.1828-.6906 2.1291-.9208.9462 0 1.6559.2302 2.129.4604.4731.2302.4732.4604.4732.4604zM73.0505 58.1458c0 .6906-.4732 1.3812-1.1829 1.3812-.7097.2302-1.4194-.2302-1.4194-.9208 0-.6907.4732-1.3813 1.1829-1.3813.7096-.2302 1.4194.2302 1.4194.9209zM72.1185 55.1606c-.2366.2302-1.1828-.4604-2.6022-.2302-1.4194.2302-2.3657.9208-2.6022.9208 0 0 0-.4604.4731-.6906.4731-.4604 1.1828-.6906 2.1291-.9209.9463 0 1.6559.2303 2.1291.4605.4731.2302.7097.4604.4731.4604zM78.5255 64.8104s.9462-.2302 2.3655-.6906c.4731 0 .7097-.2302.7097-.4604 0-.2303-.2366-.6907-.4731-.9209-.4731-.9208-.9463-1.6114-1.4194-2.5322-1.8924-3.6833-3.3117-6.676-3.3117-6.676.2365 0 1.8924 2.7624 3.7849 6.4457.4731.9209.9462 1.8417 1.4193 2.5323.2365.4604.4731.9208.2365 1.3813 0 .2302-.2365.4604-.4731.6906-.2365 0-.4731.2302-.7096.2302h-2.129z\",\n fill: \"#1A2E35\"\n})), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M81.9117 80.9728s-7.3334 1.151-14.4303-2.0719c0 0 4.2581 6.676 14.9034 4.6041l-.4731-2.5322z\",\n fill: \"#FF9A6C\"\n})), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M74.4597 66.3843c.2365 0 .4731 1.3812 1.8925 2.302 1.4194.9209 3.0754.4604 3.0754.6907 0 0-.2366.2302-.9463.4604-.7097 0-1.656 0-2.6022-.4604-.9463-.4605-1.4194-1.3813-1.4194-2.0719-.2366-.4604-.2366-.9208 0-.9208zM71.8931 49.6821c0 .4604-1.4194.4604-3.0753.6907-1.656.4604-2.8388.9208-3.3119.6906 0-.2302 0-.4604.4731-.9209.4731-.4604 1.4194-.9208 2.3657-1.151.9462-.2302 1.8925-.2302 2.6021 0 .7097.4604.9463.6906.9463.6906zM85.1094 49.4889c-.2366.2302-1.1829.2302-2.3657.2302-1.1829 0-2.1292.4604-2.3657.2302-.2366-.2302 0-.4604.4731-.9208.4731-.2302 1.1829-.6906 1.8926-.6906s1.656.2302 1.8925.4604c.2366.2302.4732.4604.4732.6906z\",\n fill: \"#1A2E35\"\n})), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M56.5977 38.2316c-2.129.6906-4.2581 5.9853-3.785 8.0572.7097 2.0719 2.6022 3.4531 4.4947 3.9135 2.129.4604 4.2581.2302 6.3871-.4604 2.8388-.9208 5.9141-2.7625 6.1506-5.7552 2.8388 2.7625 7.0969 3.9136 11.1184 2.9927 3.785-.9208 6.6237-6.676 7.8065-10.3593l-32.1723 1.6115z\",\n fill: \"#1A2E35\"\n})), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M76.4444 58.2592s0-.4604-.2366-1.3813c-.2365-.9208-.7096-2.0718-2.129-2.9926-.7097-.4605-1.4193-.9209-2.3656-.9209-.9462-.2302-1.8925-.2302-3.0752.2302-.9463.4604-1.8925.9209-2.6022 1.8417-.7097.9208-1.1828 2.0718-1.1828 3.2229 0 1.151.4731 2.302 1.1828 3.2229.7097.9208 1.6559 1.6114 2.6022 1.8416.9462.4604 2.129.4604 3.0752.2302.9463-.2302 1.6559-.4604 2.3656-.9208 1.4194-.9208 1.8925-2.0719 2.129-2.9927.2366-.9208.2366-1.3812.2366-1.3812v.4604c0 .2302 0 .6906-.2366 1.151-.2365.9208-.7096 2.3021-2.129 3.2229-.7097.4604-1.4194.9208-2.6021 1.151-.9463.2302-2.129.2302-3.0753-.2302-.9462-.4604-2.129-1.151-2.8387-2.0718-.7097-.9208-1.1828-2.3021-1.1828-3.4531 0-1.3813.4731-2.5323 1.1828-3.4531.7097-.9208 1.6559-1.6115 2.8387-2.0719.9463-.4604 2.129-.4604 3.0753-.2302.9462.2302 1.8924.6906 2.6021 1.1511 1.4194.9208 1.8925 2.302 2.129 3.2228 0 .4605.2366.6907.2366 1.1511zM91.1291 55.7094s.0001-.4604-.2365-1.3813c-.2366-.9208-.7097-2.0718-2.1291-2.9927-.7097-.4604-1.4194-.9208-2.3656-.9208-.9463-.2302-1.8925-.2302-3.0753.2302-.9463.4604-1.8925.9209-2.6022 1.8417-.7097.9208-1.1828 2.0718-1.1828 3.2229 0 1.151.4731 2.302 1.1828 3.2229.7097.9208 1.6559 1.6114 2.6022 1.8416.9462.4604 2.129.4604 3.0753.2302.9462-.2302 1.6559-.4604 2.3656-.9208 1.4194-.9208 1.8925-2.0719 2.1291-2.9927 0-.9208 0-1.3812.2365-1.3812v.4604c0 .2302.0001.6906-.2365 1.151-.2366.9209-.7097 2.3021-2.1291 3.2229-.7097.4604-1.4194.9208-2.6022 1.1511-.9462.2302-2.129.2302-3.0753-.2303-.9462-.4604-2.129-1.151-2.8387-2.0718-.7097-.9208-1.1828-2.3021-1.1828-3.4531 0-1.3813.4731-2.5323 1.1828-3.4531.7097-.9208 1.6559-1.6115 2.8387-2.0719.9463-.4604 2.1291-.4604 3.0753-.2302.9463.2302 1.8925.6906 2.6022 1.151 1.4194.9209 1.8925 2.3021 2.1291 3.2229 0 .4605.2365.6907.2365 1.1511 0 0 0-.2302 0 0z\",\n fill: \"#375A64\"\n})), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M75.5264 55.2752s-.0001-.2302.2365-.6906c.2366-.4605.7097-.9209 1.1828-.9209.7097-.2302 1.1828 0 1.6559.2302.4731.2302.4731.4604.4731.4604s-.2365 0-.7096-.2302c-.2366 0-.9463-.2302-1.4194 0-.4731.2302-.9462.4605-1.1828.6907 0 .2302-.2365.4604-.2365.4604zM64.6226 59.6453s-.9462.4604-2.129.9208c-1.1828.4604-2.3657.6906-2.3657.4604 0 0 .9463-.4604 2.1291-.9208 1.1828-.2302 2.3656-.6906 2.3656-.4604z\",\n fill: \"#375A64\"\n})), _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M165.641 76.8728c1.656-.6906.946-2.302.946-2.302l-6.387 1.8416s3.312-1.3812 4.968-2.7625c1.656-1.3812.946-2.5322.946-2.5322l-6.624 2.5322-3.785 2.0719-9.226 13.8124s7.334 3.4531 8.517 2.5323c2.129-1.8417 3.548-5.525 4.021-7.5968.946-.2302 3.785-1.1511 4.495-1.6115.946-.6906 1.419-1.3812 1.419-1.3812l-4.968.9208c.71-.2302 5.441-1.8417 5.678-2.3021.71-.9208.237-1.3812.237-1.3812l-6.388.9208.71-.4604c.237-.2302 3.785-1.6114 5.441-2.3021zM142.192 91.1645l-21.29 18.8765c-2.602-.69-35.0111-19.3369-35.0111-19.3369l-5.2044 24.1719s33.1185 14.733 42.3445 13.122c1.419-.231 4.021-.461 5.441-2.302 7.333-9.209 22.71-31.769 22.71-31.769l-8.99-2.7625z\",\n fill: \"#FFC09D\"\n})), _path12 || (_path12 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M156.862 90.279l-3.785-1.8417 2.839-4.8343 2.129-4.374 3.311-5.9853-5.204 1.8416c-.709.2302-1.183.6906-1.656 1.151l-8.516 11.2802-3.785 3.6833 3.549 9.4382 4.258-6.4455 2.602-.4604c2.602-.6907 4.258-3.4531 4.258-3.4531z\",\n fill: \"#FFC09D\"\n})), _path13 || (_path13 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M150.477 82.6487c1.656-.9208 3.549-1.6114 5.441-2.0718.71-.2302 1.183-.2302 1.893-.2302.709 0 1.182.4604 1.419 1.151.237.6906-.237 1.3813-.946 1.8417-.71.4604-1.42.4604-2.129.6906-.71.2302-1.42.4604-1.893.9208-.473.4604-.473 1.1511-.709 1.8417-.71 2.0718-2.602 3.6833-4.968 4.1437\",\n fill: \"#FFC09D\"\n})), _path14 || (_path14 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M148.818 90.7064s.236 0 .946-.2302c.473-.2302 1.419-.6906 2.129-1.3812.473-.4604.71-.9208 1.183-1.3812.236-.4605.473-1.1511.709-1.8417.237-.4604.237-.6906.474-1.151.236-.2302.709-.4604.946-.6907.709-.2302 1.656-.4604 2.365-.6906.473-.2302.71-.4604.947-.6906.236-.2302.473-.6906.473-.9208 0-.6906-.71-1.1511-1.42-1.1511-.709 0-1.419.2302-2.129.2302-.709.2302-1.182.4605-1.656.4605-1.182.4604-1.892.6906-2.602.9208l-.946.4604s.237-.2302.946-.4604c.473-.2302 1.42-.6906 2.366-1.151.473-.2303 1.183-.4605 1.656-.6907.709-.2302 1.419-.4604 2.129-.4604.473 0 .709.2302 1.183.4604.236.2302.709.6906.709 1.1511 0 .9208-.709 1.6114-1.656 2.0718-.946.2302-1.656.4604-2.365.6906-.473.2303-.71.4605-.946.6907-.237.2302-.474.6906-.474.9208-.236.6906-.473 1.3812-.946 1.8417-.236.4604-.71 1.151-1.183 1.3812-.946.6906-1.656 1.151-2.365 1.3812-.237 0-.473.2302-.71.2302h.237z\",\n fill: \"#FF9A6C\"\n})), _path15 || (_path15 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M83.5494 158.855H40.0222s-6.3872 7.827-10.6452 16.114l62.2154.231c1.1828-1.842-8.043-16.345-8.043-16.345z\",\n fill: \"#1A2E35\"\n})), _path16 || (_path16 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M96.5676 120.399c-1.4194-18.877-6.3871-30.8474-6.3871-30.8474l-7.57-2.3021c-1.1828 4.8344-9.2259 6.4458-13.9571 4.3739l-4.9678-2.5322c-15.613-2.3021-14.9034-.9209-18.4518 1.151-3.0753 1.8417-2.8387 15.6538-2.8387 15.6538s-7.8065 35.913-7.3334 41.668c.4731 5.755 4.9678 11.51 4.9678 11.51h43.5272c4.4947 0 5.6775-9.669 5.4409-13.122-.2365-3.683 8.0431-19.337 7.57-25.553z\",\n fill: \"#4277FF\"\n})), _path17 || (_path17 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25.834 119.459l22.0002 10.129s8.9893-19.338 9.699-21.87c.7097-2.532 3.0753-6.906.7097-12.2008-2.3656-5.525-9.2259-7.5968-12.7743-5.0646C37.1889 95.287 25.834 119.459 25.834 119.459zM94.9128 120.396c.9463 0 12.7742 5.986 12.7742 5.986l6.624-21.64c-9.936-6.4456-18.2154-13.8122-24.1294-15.4236l3.0753 17.9556 1.6559 13.122z\",\n fill: \"#4277FF\"\n})), _path18 || (_path18 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M74.3182 98.5294c-.2365-3.2229-2.129-5.9854-4.2581-8.2875-1.1828-1.151-2.6021-2.302-2.8387-3.6833-.2366-2.0718 1.4194-3.9135 1.1828-5.9853-.4731-2.5323-3.5484-3.6834-4.7312-5.9854-1.6559-2.9927 1.1828-7.1364-.4732-10.1291-.9462-1.8417-3.3118-2.7625-3.7849-4.8343-.2366-1.3813 2.129-3.2229 2.8387-5.9854 1.4194-6.2156 1.8925-11.2801-4.2581-14.9635l-3.7849-4.8343c-4.0216 2.0719-7.57 6.4458-7.57 11.0499 0 2.0719 1.1828 4.374.2366 6.2156-1.4194 2.7625-4.4947 4.3739-5.441 7.3666-1.4193 4.1437 2.3657 8.7479.7097 12.8916-.9462 2.3021-3.5484 3.6833-5.2043 5.7552-2.6022 3.2229-2.3656 8.0572.4731 11.0499-4.0215 2.5322-5.914 8.0572-4.2581 12.4309.7097 1.842 2.1291 3.684 4.2581 3.914 2.8387.23 4.4947-2.993 6.6237-5.0648 3.3119-2.9927 9.2259-2.7625 12.3012.2302 2.129 2.3016 3.0753 5.7556 5.6774 7.5966 2.6022 1.842 6.6238 1.612 8.9894-.46 2.3656-1.842 3.5484-5.295 3.3118-8.2876z\",\n fill: \"#1A2E35\"\n})), _path19 || (_path19 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M45.4683 128.249c-4.2581 6.676-7.0968 10.589-7.0968 10.589l37.3766 22.1-4.2581 9.899L23.2316 151.5s-4.7313-4.835-3.0753-10.13l7.8065-20.718 17.5055 7.597z\",\n fill: \"#FFC09D\"\n})), _path20 || (_path20 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M29.3604 142.072s1.8924-1.381 4.4946-2.302c2.6022-.92 4.9679-.92 4.9679-1.151 0 0-2.3657-.23-4.9679.691-2.8387.921-4.4946 2.532-4.4946 2.762z\",\n fill: \"#FF9A6C\"\n})), _path21 || (_path21 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M104.578 167.299l-9.2254-4.374-18.2152-1.381-1.4193-.921-4.2581 9.899s4.7312 2.302 7.3333 2.302l15.3765-.46 8.0432.92 2.365-5.985z\",\n fill: \"#FFC09D\"\n})), _path22 || (_path22 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M157.12 132.639l-52.28.461c-1.656 0-3.312.69-3.548 2.532l-5.9142 36.833H68.4099c-.9463 0-1.656.691-1.656 1.611 0 .921.7097 1.612 1.656 1.612H154.518l5.914-39.135c.237-2.072-1.183-3.914-3.312-3.914z\",\n fill: \"#5C6381\"\n})), _path23 || (_path23 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M128.737 156.808c1.829 0 3.312-1.443 3.312-3.223 0-1.78-1.483-3.223-3.312-3.223-1.829 0-3.312 1.443-3.312 3.223 0 1.78 1.483 3.223 3.312 3.223z\",\n fill: \"#fff\"\n})), _path24 || (_path24 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M182.231 95.105c13.988 0 25.328-11.3397 25.328-25.3279 0-13.9882-11.34-25.3279-25.328-25.3279s-25.328 11.3397-25.328 25.3279c0 13.9882 11.34 25.3279 25.328 25.3279z\",\n fill: \"#00963F\"\n})), _path25 || (_path25 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M168.059 72.3368c2.789 2.7884 5.577 5.5768 8.365 8.3652 1.162 1.1618 3.254 1.1618 4.183 0 4.647-5.112 9.295-10.4565 13.942-15.5685.697-.6971 1.394-1.6266 2.091-2.3237 1.162-1.1618 1.162-3.0207 0-4.1826-1.162-1.1618-3.253-1.1618-4.182 0-4.648 5.1121-9.295 10.4565-13.942 15.5686-.697.6971-1.394 1.6265-2.092 2.3236h4.183c-2.788-2.7884-5.577-5.5768-8.365-8.3652-2.789-2.7884-6.971 1.3942-4.183 4.1826z\",\n fill: \"#fff\"\n})), _path26 || (_path26 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M142.705 57.41c6.465 0 11.705-5.2405 11.705-11.705S149.17 34 142.705 34C136.241 34 131 39.2405 131 45.705s5.241 11.705 11.705 11.705z\",\n fill: \"#FF2335\"\n})), _path27 || (_path27 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M148.503 49.464c-1.181-1.2887-2.363-2.5773-3.544-3.8659.859-.8591 1.718-1.6108 2.577-2.4699.43-.4295.86-.7517 1.289-1.1812 1.503-1.396-.644-3.7585-2.148-2.3625-1.288 1.1813-2.577 2.3625-3.865 3.5437-.86-.859-1.611-1.7181-2.47-2.5772-.43-.4295-.752-.8591-1.182-1.2886-1.396-1.5034-3.758.6443-2.362 2.1477 1.181 1.2886 2.362 2.5772 3.544 3.8658-.859.8591-1.719 1.6108-2.578 2.4699-.429.4295-.859.7517-1.288 1.1812-1.504 1.396.644 3.7585 2.147 2.3625 1.289-1.1812 2.578-2.3625 3.866-3.5437.859.8591 1.611 1.7181 2.47 2.5772.43.4296.752.8591 1.181 1.2887 1.504 1.6107 3.866-.6443 2.363-2.1477z\",\n fill: \"#fff\"\n})), _path28 || (_path28 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M102.549 2.92705c.299-.92131 1.603-.92131 1.902 0l1.182 3.63729c.134.41202.518.69098.951.69098h3.824c.969 0 1.372 1.23962.588 1.80902l-3.094 2.24796c-.35.2546-.497.706-.363 1.118l1.182 3.6373c.299.9213-.755 1.6875-1.539 1.1181l-3.094-2.248c-.351-.2546-.825-.2546-1.176 0l-3.0938 2.248c-.7838.5694-1.8382-.1968-1.5389-1.1181l1.1818-3.6373c.1339-.412-.0127-.8634-.3632-1.118l-3.0941-2.24796c-.7837-.5694-.3809-1.80902.5878-1.80902h3.8244c.433 0 .817-.27896.951-.69098l1.182-3.63729zM187.549 14.9271c.299-.9214 1.603-.9214 1.902 0l.284.8733c.134.412.518.691.951.691h.918c.969 0 1.372 1.2396.588 1.809l-.743.5398c-.35.2546-.497.706-.363 1.118l.284.8734c.299.9213-.756 1.6874-1.539 1.118l-.743-.5398c-.351-.2546-.825-.2546-1.176 0l-.743.5398c-.783.5694-1.838-.1967-1.539-1.118l.284-.8734c.134-.412-.013-.8634-.363-1.118l-.743-.5398c-.784-.5694-.381-1.809.588-1.809h.918c.433 0 .817-.279.951-.691l.284-.8733zM19.5489 48.927c.2994-.9213 1.6028-.9213 1.9022.0001l.7328 2.2553c.1338.412.5178.691.951.691h2.3714c.9687 0 1.3715 1.2396.5878 1.809l-1.9185 1.3938c-.3505.2547-.4972.706-.3633 1.1181l.7328 2.2553c.2994.9213-.7551 1.6874-1.5388 1.118l-1.9185-1.3938c-.3505-.2547-.8251-.2547-1.1756 0l-1.9185 1.3938c-.7837.5694-1.8382-.1967-1.5388-1.118l.7328-2.2553c.1339-.4121-.0128-.8634-.3633-1.1181l-1.9185-1.3938c-.7837-.5694-.3809-1.809.5878-1.809h2.3714c.4332 0 .8172-.279.951-.691l.7328-2.2554zM7.54894 110.927c.29936-.921 1.60276-.921 1.90212 0l.73284 2.255c.1338.412.5178.691.951.691h2.3714c.9687 0 1.3715 1.24.5878 1.809l-1.9185 1.394c-.3505.255-.4972.706-.3633 1.118l.7328 2.256c.2994.921-.7551 1.687-1.5388 1.118l-1.91852-1.394c-.35048-.255-.82508-.255-1.17557 0l-1.91849 1.394c-.78371.569-1.83819-.197-1.53884-1.118l.7328-2.256c.13387-.412-.01278-.863-.36327-1.118l-1.91849-1.394c-.78372-.569-.38094-1.809.58778-1.809h2.37139c.43323 0 .81718-.279.95105-.691l.7328-2.255zM190.049 132.927c.299-.921 1.603-.921 1.902 0l.845 2.601c.134.412.518.691.951.691h2.735c.969 0 1.371 1.239.588 1.809l-2.213 1.607c-.35.255-.497.706-.363 1.118l.845 2.601c.299.921-.755 1.688-1.539 1.118l-2.212-1.607c-.351-.255-.825-.255-1.176 0l-2.212 1.607c-.784.57-1.838-.197-1.539-1.118l.845-2.601c.134-.412-.013-.863-.363-1.118l-2.213-1.607c-.783-.57-.381-1.809.588-1.809h2.735c.433 0 .817-.279.951-.691l.845-2.601z\",\n fill: \"#CECFE3\"\n})), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 3,\n cy: 79,\n r: 3,\n fill: \"#CECFE3\"\n})), _circle2 || (_circle2 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 45,\n cy: 15,\n r: 3,\n fill: \"#CECFE3\"\n})), _circle3 || (_circle3 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 219,\n cy: 106,\n r: 3,\n fill: \"#CECFE3\"\n})));\nexport default SvgWfTaskCompleted;","var _defs, _path, _path2, _circle, _circle2, _circle3, _path3, _rect, _path4, _rect2, _rect3, _rect4, _path5, _path6, _path7, _path8, _path9, _path10, _path11, _path12, _path13, _path14, _path15, _path16, _path17, _path18, _path19, _path20, _path21, _path22, _path23, _path24, _path25, _path26, _path27, _path28, _path29, _path30, _path31, _path32, _path33, _path34;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgWfSignupPopup = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 242 164\"\n}, props), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null)), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#F9F9FD\",\n d: \"M110.55 151H46c-1.3994-10.467-6.703-14.532-20.1377-44.966-16.7934-38.0425 5.455-63.4061 29.3884-68.2403 17.4529-3.5253 49.7683 10.9308 69.1853-16.8483 19.418-27.77908 75.571-18.72068 79.769 22.948 4.198 41.6686 26.327 10.2044 29.475 47.6458 3.149 37.4418-24.14 54.3488-65.599 52.5368-33.167-1.449-52.458-4.147-57.531 6.924z\"\n})), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#CECFE3\",\n d: \"M122.549 2.92705c.299-.92131 1.603-.92131 1.902 0l1.182 3.63729c.134.41202.518.69098.951.69098h3.824c.969 0 1.372 1.23962.588 1.80902l-3.094 2.24796c-.35.2546-.497.706-.363 1.118l1.182 3.6373c.299.9213-.755 1.6875-1.539 1.1181l-3.094-2.248c-.351-.2546-.825-.2546-1.176 0l-3.094 2.248c-.784.5694-1.838-.1968-1.539-1.1181l1.182-3.6373c.134-.412-.013-.8634-.363-1.118l-3.094-2.24796c-.784-.5694-.381-1.80902.588-1.80902h3.824c.433 0 .817-.27896.951-.69098l1.182-3.63729zM44.5489 34.927c.2994-.9213 1.6028-.9213 1.9022.0001l.7328 2.2553c.1338.412.5178.691.951.691h2.3714c.9687 0 1.3715 1.2396.5878 1.809l-1.9185 1.3938c-.3505.2547-.4972.706-.3633 1.1181l.7328 2.2553c.2994.9213-.7551 1.6874-1.5388 1.118l-1.9185-1.3938c-.3505-.2547-.8251-.2547-1.1756 0l-1.9185 1.3938c-.7837.5694-1.8382-.1967-1.5388-1.118l.7328-2.2553c.1339-.4121-.0128-.8634-.3633-1.1181l-1.9185-1.3938c-.7837-.5694-.3809-1.809.5878-1.809h2.3714c.4332 0 .8172-.279.951-.691l.7328-2.2554zM216.549 24.927c.299-.9213 1.603-.9213 1.902.0001l.733 2.2553c.134.412.518.691.951.691h2.371c.969 0 1.372 1.2396.588 1.809l-1.918 1.3938c-.351.2547-.498.706-.364 1.1181l.733 2.2553c.299.9213-.755 1.6874-1.539 1.118l-1.918-1.3938c-.351-.2547-.825-.2547-1.176 0l-1.918 1.3938c-.784.5694-1.838-.1967-1.539-1.118l.733-2.2553c.134-.4121-.013-.8634-.364-1.1181l-1.918-1.3938c-.784-.5694-.381-1.809.588-1.809h2.371c.433 0 .817-.279.951-.691l.733-2.2554zM210.049 132.927c.299-.921 1.603-.921 1.902 0l.845 2.601c.134.412.518.691.951.691h2.735c.969 0 1.371 1.239.588 1.809l-2.213 1.607c-.35.255-.497.706-.363 1.118l.845 2.601c.299.921-.755 1.688-1.539 1.118l-2.212-1.607c-.351-.255-.825-.255-1.176 0l-2.212 1.607c-.784.57-1.838-.197-1.539-1.118l.845-2.601c.134-.412-.013-.863-.363-1.118l-2.213-1.607c-.783-.57-.381-1.809.588-1.809h2.735c.433 0 .817-.279.951-.691l.845-2.601z\"\n})), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 28,\n cy: 73,\n r: 3,\n fill: \"#CECFE3\"\n})), _circle2 || (_circle2 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 65,\n cy: 15,\n r: 3,\n fill: \"#CECFE3\"\n})), _circle3 || (_circle3 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 239,\n cy: 106,\n r: 3,\n fill: \"#CECFE3\"\n})), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#C4CADC\",\n strokeLinecap: \"round\",\n strokeWidth: 3,\n d: \"M176.119 41.8818v1.4102c0 3.3137-2.686 6-6 6h-21.544c-3.314 0-6 2.6862-6 6v8.9714M176.122 41.8818v1.4102c0 3.3137 2.687 6 6 6h21.544c3.314 0 6 2.6862 6 6v8.9714\"\n})), _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n width: 47.3405,\n height: 22.8812,\n x: 152.258,\n y: 19,\n fill: \"#91A5DA\",\n rx: 2\n})), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#C4CADC\",\n strokeLinecap: \"round\",\n strokeWidth: 3,\n d: \"M175.498 107.926v-1.41c0-3.314 2.687-6 6-6h21.544c3.314 0 6-2.6866 6-6.0003v-8.9715M175.495 107.927v-1.41c0-3.314-2.686-6-6-6h-21.544c-3.314 0-6-2.6867-6-6.0004v-8.9714\"\n})), _rect2 || (_rect2 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 47.3405,\n height: 22.8812,\n x: 119,\n y: 62.3887,\n fill: \"#EA897C\",\n rx: 2\n})), _rect3 || (_rect3 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 47.3405,\n height: 22.8812,\n x: 152.258,\n y: 107.021,\n fill: \"#F7D162\",\n rx: 2\n})), _rect4 || (_rect4 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 47.3405,\n height: 22.8812,\n x: 186.66,\n y: 62.3887,\n fill: \"#6ED88E\",\n rx: 2\n})), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#2E3961\",\n d: \"M61.4455 59.0262c.3361-3.8545 1.9946-5.0274 4.3308-8.1117 1.3044-1.4408 2.2893-3.1413 2.8901-4.9897.5454-2.5221-.6543-5.4531.7226-7.6071.9816-1.5406 2.9447-2.1813 4.0899-3.6264 1.1451-1.4451 1.1588-3.6945 1.8677-5.4532.7089-1.7586 3.1219-3.4219 4.567-2.1404.2863-3.4355-.2726-5.3577 2.6585-7.1709 2.931-1.8132 8.6978-.927 9.8293 2.3176 2.4812-2.0858 7.0346-4.0899 9.8976-2.5494 1.661 1.1181 3.254 2.3336 4.771 3.64 2.536 1.786 5.658 2.4812 8.494 3.8445 2.835 1.3633 5.671 3.3401 6.326 6.3803.49 2.2358-.3 4.5943.122 6.8164.529 1.8461 1.333 3.6018 2.386 5.2078.745 1.4344 1.313 2.9544 1.69 4.5262.75 3.0674.341 7.0209-2.522 8.3433 1.03.2958 1.922.9439 2.522 1.8311.6.8871.869 1.957.761 3.0224-.109 1.0655-.589 2.0588-1.356 2.8063-.767.7476-1.772 1.2019-2.84 1.2834l4.812 8.7251c.542.7613.807 1.685.75 2.6176-.172.6197-.548 1.1631-1.068 1.5418-.52.3787-1.152.5704-1.795.544-1.298-.0875-2.558-.4748-3.681-1.1315-.414.7312-1.02 1.3358-1.752 1.7492s-1.563.6199-2.403.5975c-.84-.0224-1.659-.2729-2.368-.7247-.709-.4518-1.281-1.0879-1.656-1.8402-.493.8924-1.215 1.6364-2.093 2.1545-.877.5182-1.878.7915-2.897.7915s-2.02-.2733-2.897-.7915c-.878-.5181-1.6-1.2621-2.093-2.1545 0 0-25.7169-3.254-29.0996-3.5359-3.3826-.2819-3.9464-3.6645-3.9464-3.6645-.8457 1.6913-6.7654-.8457-6.7654-3.6646s-3.3827 0-5.074-4.2284c-1.4095-5.074 2.7923-3.3782 2.8189-5.3559z\"\n})), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#F3B484\",\n d: \"M95.9251 115.633l9.4069-25.0435-4.908-4.9078.191-1.5815c.531-3.9399.736-5.5622.722-5.4532-.013.1091 8.507-.3544 11.561-11.0018 1.527-5.3032 2.345-14.1919 2.727-21.4855.395-6.5711-2.931-15.1053-9.543-15.2144l-20.7906 2.563c-.9649-.0219-1.9025.3211-2.6254.9606-.7229.6394-1.1778 1.5282-1.2737 2.4885l-3.6127 43.9527-2.7266 2.3722-3.3946 30.4427 24.2667 1.908z\"\n})), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#2E3961\",\n d: \"M110.926 54.5788c-.015.1805-.067.3562-.151.5168-.084.1605-.199.3027-.338.4182-.14.1156-.301.2021-.475.2545-.173.0525-.355.0698-.536.0511-.361 0-.708-.1437-.964-.3993-.255-.2557-.399-.6025-.399-.964-.003-.199.038-.3961.12-.5775.082-.1814.202-.3428.353-.4727.151-.1299.328-.2253.52-.2794.191-.054.392-.0656.588-.0337.183.0102.362.0572.527.138.164.0809.31.1941.43.3328.119.1387.21.3001.266.4745.056.1744.076.3583.059.5407zM96.9708 53.3895c-.0152.1818-.0668.3588-.1517.5203-.0849.1615-.2014.3044-.3425.4201-.1411.1157-.304.2019-.4791.2534-.175.0516-.3586.0675-.5399.0468-.3593-.0211-.6957-.1835-.9358-.4516-.2401-.2682-.3643-.6204-.3457-.9799.0152-.1818.0668-.3588.1517-.5203.0849-.1615.2014-.3044.3425-.4201.1411-.1157.304-.2018.4791-.2534.175-.0516.3586-.0675.5399-.0468.3593.0211.6957.1835.9358.4517.2401.2681.3643.6203.3457.9798z\"\n})), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#C9604F\",\n d: \"M113.216 51.201c-.204.1636-1.158-.7498-2.658-.9406-1.5-.1909-2.727.4362-2.836.2317-.109-.2045.15-.3953.668-.6816.708-.3707 1.513-.5136 2.304-.409.78.0953 1.51.434 2.086.9679.409.409.532.7635.436.8316zM98.3167 49.9548c-.1909.1636-1.1588-.7498-2.7266-.927-1.5678-.1773-2.7266.4226-2.822.2181-.0955-.2045.1363-.3954.668-.6817.702-.3722 1.5029-.5152 2.2903-.4089.7798.0952 1.5096.4339 2.0858.9679.4772.409.5999.7634.5045.8316zM102.517 60.7014c.818-.1498 1.652-.1956 2.481-.1363.396 0 .764 0 .859-.2727.08-.393.042-.8007-.109-1.1724l-.777-3.0538c-.74-2.5993-1.278-5.252-1.609-7.9344.959 2.5298 1.711 5.1332 2.25 7.7845.245 1.077.491 2.0994.722 3.0674.172.4945.172 1.0323 0 1.5269-.073.1297-.175.2412-.298.3261-.123.085-.263.1412-.411.1646-.217.0274-.437.0274-.654 0-.827.0069-1.652-.0939-2.454-.2999z\"\n})), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#DD915E\",\n d: \"M101.351 78.5658c-5.1235-.5565-9.9928-2.5193-14.0696-5.6713 0 0 2.7266 8.0162 13.7286 8.3434l.341-2.6721z\"\n})), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#8B383E\",\n fillRule: \"evenodd\",\n d: \"M96.0228 62.9126c-.1997.0521-.3194.2563-.2673.456.4789 1.8358 1.6461 3.0156 2.8937 3.7381 1.2397.718 2.5718.9934 3.4348 1.0266.206.008.379-.1528.387-.3591.008-.2063-.152-.38-.359-.3879-.757-.0291-1.967-.277-3.0881-.9265-1.1136-.6449-2.1268-1.6767-2.545-3.2799-.0521-.1997-.2563-.3194-.4561-.2673z\",\n clipRule: \"evenodd\"\n})), _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#F3B484\",\n d: \"M82.584 50.5696c-.1363-.0954-5.794-2.7266-6.5302 3.3401-.7362 6.0666 5.4532 5.5486 5.535 5.3713.0818-.1772.9952-8.7114.9952-8.7114z\"\n})), _path12 || (_path12 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#DD915E\",\n d: \"M80.0195 56.7297s-.1227.0681-.2999.1227c-.2641.0774-.5481.048-.7907-.0818-.3537-.3011-.621-.6908-.7743-1.1292-.1533-.4385-.1872-.9098-.0982-1.3657.0445-.5208.2077-1.0244.4771-1.4723.0767-.1828.198-.3435.3528-.4673.1548-.1239.3382-.2069.5333-.2416.1257-.0202.2544.0042.364.0689.1095.0647.193.1657.2359.2855v.3136c0 .0136.15-.0818.1227-.3409-.0032-.0774-.0217-.1533-.0545-.2235-.0328-.0702-.0791-.1333-.1364-.1854-.0731-.0729-.1605-.1299-.2567-.1674-.0962-.0376-.199-.0549-.3022-.0508-.2546.0175-.5003.1008-.713.2418s-.3852.3348-.5004.5626c-.3227.4898-.5194 1.0518-.5725 1.6359-.1018.5358-.0407 1.0898.1756 1.5904.2163.5007.5778.9249 1.0377 1.218.1552.0749.3253.1138.4976.1138s.3424-.0389.4976-.1138c.1772-.1636.2181-.2999.2045-.3135z\"\n})), _path13 || (_path13 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#2E3961\",\n d: \"M79.3379 47.6369c-.0595-4.1251.5529-8.2324 1.8132-12.1606.2791-.889.7813-1.6916 1.4588-2.3313.6021-.4579 1.2944-.7831 2.0313-.9543 1.1451-.3135 1.4587-1.0906 2.6311-1.1724 2.2925-1.8831 5.0006-3.193 7.9-3.8213 2.8994-.6282 5.9067-.5567 8.7727.2086 2.845.8108 5.479 2.229 7.722 4.1566 2.243 1.9276 4.041 4.3189 5.271 7.0088 2.418 5.4635 2.584 11.6601.463 17.2456.382-4.3761-2.386-8.466-5.78-11.2471-3.395-2.7812-7.457-4.6353-11.043-7.1574.026.6079.183 1.2029.461 1.7441.278.5413.669 1.016 1.148 1.3915-2.8598-.6551-5.6326-1.6434-8.2618-2.9447-.5751-.316-1.1305-.6665-1.6632-1.0497-.0594.6649-.2444 1.3126-.5453 1.9086-.968 1.8813-3.0129 2.8902-4.5943 4.308-.1997.164-.3623.3684-.4772.5999-.0958.3897-.0672.7997.0818 1.1724.3948 1.2219.5295 2.5129.3954 3.79-.0709.6392-.295 1.2519-.6534 1.7859-.3584.5341-.8405.9737-1.4052 1.2815.4285.6664.6391 1.4497.6025 2.2411-.0367.7915-.3187 1.552-.807 2.1759-.136.1887-.3338.3237-.559.3818-.368 0-.6816-.2727-.8861-.5862-.629-.8994-1.061-1.9215-1.2679-2.9993-.0235-.4828-.1689-.9518-.4226-1.3633-.409-.518-1.1724-.6271-1.6768-1.0634-.2914-.3508-.5053-.7594-.6274-1.1988-.1222-.4393-.15-.8996-.0816-1.3505z\"\n})), _path14 || (_path14 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#E1E1E1\",\n d: \"M99.1426 111.346l-30.3879-1.036-2.822 41.498 26.5979.368 6.612-40.83z\"\n})), _path15 || (_path15 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#EC3450\",\n d: \"M75.4781 80.5128c-.409-.5181-23.067 14.8599-24.0758 16.6867-1.0088 1.8268-6.5029 54.9955-6.5029 54.9955h29.6108s2.7266-43.762 2.5766-47.797c-.15-4.036-1.6087-23.8852-1.6087-23.8852zM143.821 152.407s3.34-6.816 2.972-10.211c-.692-3.43-1.687-6.793-2.972-10.048l-6.694-11.887s-1.363-9.912-2.072-11.766c-.709-1.854-4.662-14.4097-9.298-17.3681-4.635-2.9584-18.704-4.976-18.704-4.976l-6.244-4.6216s-6.2166 18.3091-7.1437 23.3537c-.927 5.044-6.0803 47.524-6.0803 47.524h56.236z\"\n})), _path16 || (_path16 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#AD1930\",\n d: \"M115.741 151.792c-3.002-1.781-6.376-2.84-9.857-3.095-2.727-.204-5.453 0-7.9889-.749-2.8629-.941-5.1123-3.122-7.2527-5.249-.6253-.541-1.1195-1.217-1.4451-1.977-.1456-.385-.1561-.807-.0297-1.199.1263-.391.382-.728.725-.955.5975-.225 1.2565-.225 1.8541 0 9.0203 2.498 17.3803 6.952 24.4843 13.047M123.049 106.569c.412-.593.924-1.11 1.513-1.527.201-.173.453-.277.718-.295.265-.018.529.05.751.195.223.144.393.357.485.606.091.249.099.521.023.776-.111.451-.29.884-.532 1.281-2.617 4.8-4.349 10.032-5.112 15.446-.327 2.304-.477 4.649-.968 6.926-.293 2.121-1.198 4.111-2.604 5.726l-.654-.273c.074-.614.178-1.224.313-1.827 2.127-8.875 3.995-17.723 6.067-27.034zM61.2109 109.122c.5862 6.298 2.2767 12.433 3.0265 18.704.7498 6.272.4771 12.938-2.6175 18.46-.9203 1.938-2.5433 3.454-4.5398 4.239 2.3374-3.016 3.7572-6.641 4.0899-10.442.2999-3.775.2999-7.568 0-11.343-.2818-6.535-.2818-13.074 0-19.618\"\n})), _path17 || (_path17 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M67.1568 86.0068c.2639.0804.5325.1442.8044.1909.7291.1861 1.4371.4465 2.1131.7771.4739.2179.9298.4732 1.3633.7634.4924.319.9221.7257 1.2678 1.1997.3746.5288.5661 1.1655.5454 1.8132-.0135.3329-.1121.6567-.2863.9407-.1772.2929-.4385.5257-.7499.668-.3107.1436-.6559.1956-.9952.15-.3233-.0577-.6116-.2385-.8043-.5045-.1569-.2689-.2396-.5747-.2396-.8861s.0827-.6172.2396-.8861c.1412-.2537.3366-.4732.5722-.6429.2356-.1696.5057-.2853.7911-.3387.4922-.1235 1.0074-.1235 1.4996 0 .7167.2117 1.384.5639 1.9632 1.0361.2125.1812.4355.3496.668.5044l-.15-.15-.4635-.4226c-.5732-.5072-1.2467-.8881-1.9768-1.1179-.5198-.1245-1.0616-.1245-1.5814 0-.308.0642-.5992.192-.8551.3751-.2559.1831-.4707.4175-.6309.6883-.1802.3007-.2754.6446-.2754.9952 0 .3505.0952.6945.2754.9952.2272.3084.5638.5181.9407.5862.3806.0613.7708.0042 1.1179-.1636.3454-.1619.6349-.4229.8316-.7498.1962-.3157.3044-.6781.3136-1.0497.0281-.6887-.1786-1.3665-.5863-1.9223-.3729-.495-.8353-.9158-1.3633-1.2406-.4357-.2825-.8913-.5331-1.3633-.7498-.6877-.3231-1.4105-.5655-2.154-.7225l-.6134-.0955-.2182-.0409z\"\n})), _path18 || (_path18 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#AD1930\",\n d: \"M75.8921 85.0586c-4.6216 2.2358-10.1975 2.3721-14.3283 5.4532-2.3798 1.7693-4.0219 4.3556-4.6107 7.262-.5889 2.9062-.0829 5.9282 1.4206 8.4842.2999-2.604.8044-5.549 3.0129-6.953 1.0203-.5133 2.0888-.9242 3.1901-1.2269 1.1997-.4363 2.3176-1.1043 3.5446-1.4997 1.6496-.518 3.4355-.5044 5.0714-1.0497 1.636-.5453 3.2447-1.9359 3.122-3.6673l-.4226-6.8028z\"\n})), _path19 || (_path19 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#F3B484\",\n d: \"M58.433 105.546l.6543-8.18c2.0824-.3716 4.1109-.9989 6.0394-1.8677 1.5815-1.0088 4.4717-3.081 4.4717-3.081s.6952 2.5084 2.1403 2.7266l1.3633.1363v-5.0715s.2454 2.2767 2.1131 2.6312c.4227.0818.4227 0 .4227 0l1.2678-6.6256c.5214.5794 1.2277.9601 1.9984 1.0769.7707.1169 1.5581-.0373 2.2278-.4362 0 0-4.4307-7.8662-5.3168-8.1116-1.8082-.2388-3.6294-.3663-5.4532-.3817-2.39-.1893-4.7891-.2349-7.1846-.1363-.6515.351-1.2373.8122-1.7314 1.3633 0 0-7.6071 7.3345-10.0611 9.7748-1.9461 2.0341-3.2664 4.5848-3.8036 7.3482-.1363 1.2951-1.2269 6.6803-1.2269 6.6803\"\n})), _path20 || (_path20 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#DD915E\",\n d: \"M46.3572 103.427c.0035-.046.0035-.091 0-.136l.0954-.396.3272-1.554.4908-2.5085c.0818-.4907.1772-1.0224.2726-1.5814 0-.2863.0682-.5862.1364-.8861.0681-.3.1363-.5862.2181-.8998.4103-1.3506 1.0019-2.6393 1.7587-3.8309.42-.6763.9039-1.3109 1.445-1.8949.5726-.5999 1.1997-1.1725 1.8405-1.7996l8.4797-8.1798c.252-.2883.5254-.5572.818-.8043.2672-.2713.5939-.4767.9543-.5999.39-.0347.7824-.0347 1.1724 0h1.2133c1.636 0 3.2992.1364 5.017.2182l2.5766.0954 1.3633.0954c.4273.0272.8515.091 1.2679.1909.1725.1147.3246.2576.4498.4226l.409.5181c.2591.3544.5045.7361.7635 1.1042.4908.7498.9679 1.5133 1.4451 2.2904.7498 1.2133 1.4587 2.413 2.154 3.6127v-.15c-.6781.3415-1.4393.4833-2.1949.409-.736-.0986-1.4126-.4563-1.9086-1.0088l-.15-.1772v.2181c-.4226 2.2631-.8452 4.4852-1.2542 6.6256h-.6544l-.2318-.0954c-.2915-.1478-.5509-.3516-.7634-.5999-.3962-.511-.6501-1.1178-.7362-1.7586h-.1909v5.0714l.0955-.0954-1.2543-.1363c-.3891-.0505-.7472-.2392-1.0088-.5317-.5048-.6015-.8765-1.3031-1.0906-2.0586v-.1091l-.0955.0682-2.7266 1.9086-1.3633.8862c-.4197.3047-.8782.5523-1.3633.7361-.8903.3422-1.8009.629-2.7265.8589-.8635.2272-1.6814.4181-2.454.5726-.2045 2.6036-.3544 4.6486-.4635 6.0666l-.1091 1.595V105.758c-.0034-.045-.0034-.091 0-.136v-.409l.15-1.609c.1091-1.363.2863-3.463.5044-6.053.7771-.1636 1.5951-.3408 2.4539-.5725.927-.2197 1.838-.5021 2.7266-.8453.4857-.1826.9443-.4303 1.3633-.7362l1.3633-.8997 2.7266-1.895h-.1363c.2139.7844.6005 1.511 1.1315 2.1267.2859.3311.6841.5447 1.1179.5999l1.2543.1363h.0954v-.1091-5.0714h-.1909c.0813.6866.3502 1.3375.7771 1.8813.23.2687.5132.4869.8316.6408l.2454.109h.259c.0863.0066.1729.0066.2591 0h.3135v-.0818c.409-2.1403.8316-4.3489 1.2543-6.612h-.1773c.5234.604 1.2519.9925 2.045 1.0907.7927.0868 1.5936-.0601 2.304-.4226h.109v-.1091c-.6953-1.1997-1.3633-2.3994-2.154-3.6127-.4771-.7771-.9679-1.5542-1.4587-2.304-.259-.3681-.5044-.7362-.7771-1.1043l-.409-.5317c-.1435-.1929-.3243-.3552-.5317-.4771-.446-.1155-.903-.184-1.3633-.2045l-1.3633-.0954c-.8725 0-1.7314-.0818-2.5902-.0955-1.7041-.0818-3.381-.1908-5.0033-.2181h-1.077c-.406-.0067-.8119.0207-1.2134.0818-.3925.1257-.7482.3457-1.0361.6407-.3015.2564-.5839.5344-.8452.8317l-8.4797 8.2615c-.6271.6135-1.2542 1.1997-1.8268 1.7996-.5469.5924-1.0354 1.2361-1.4588 1.9222-.7513 1.2121-1.3381 2.5187-1.745 3.8854-.0818.2999-.1636.6135-.2181.9134-.0545.3-.0818.5999-.1227.8725-.0954.5726-.1909 1.1043-.2727 1.5951l-.4635 2.5084-.2863 1.568-.0818.395c-.0091.005-.0182.009-.0272.014z\"\n})), _path21 || (_path21 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#DD915E\",\n d: \"M69.1923 78.7578s.6816.1636 1.7313.5317c1.3685.4818 2.6915 1.084 3.9536 1.7995.366.1774.6982.4173.9816.709.2543.2753.4575.5939.5998.9406.2599.5928.3901 1.2342.3818 1.8814V85.9833c0-.3136.0954-.7635.1226-1.3633.0574-.6621-.0358-1.3286-.2726-1.9495-.1724-.3499-.4029-.6679-.6817-.9407-.2952-.3104-.6409-.5686-1.0224-.7634-1.2998-.7242-2.6702-1.3135-4.0899-1.7587-.4207-.1329-.8486-.2421-1.2815-.3272-.1356-.0573-.2775-.0985-.4226-.1227zM64.3409 80.1729c.2034.0807.4132.1445.6271.1908.409.1227.9952.2863 1.6905.559.8232.3157 1.617.7035 2.3721 1.1588.4363.259.8862.518 1.3633.777.4772.2591 1.0089.4772 1.486.7635.2304.1451.4335.3297.5999.5453.1551.2172.2663.4627.3272.7226.1379.4988.2247 1.0104.259 1.5268.0541.8808.0541 1.7641 0 2.6448 0 .7499 0 1.3633-.0818 1.786-.0236.2174-.0236.4368 0 .6543v-.6543l.1499-1.786c.0699-.8847.0699-1.7736 0-2.6584-.0307-.5293-.1129-1.0544-.2454-1.5678-.0664-.2838-.1867-.5522-.3544-.7907-.182-.2411-.4088-.4448-.668-.5998-.5044-.3136-1.0225-.5181-1.4996-.7771-.4772-.259-.9407-.5044-1.3633-.7498-1.2676-.7565-2.6485-1.3043-4.0899-1.6224-.1872-.0563-.3787-.0974-.5726-.1226zM61.9807 82.3389l.5181.2045c.3408.1227.8316.2999 1.3632.5453 1.5571.6242 2.975 1.5509 4.1717 2.7266.6113.6689 1.0757 1.4583 1.3633 2.3176.288.6981.454 1.4405.4908 2.1949-.0273.6894-.1232 1.3745-.2863 2.0449v-.1363c0-.0818.0818-.2181.1364-.3954.1349-.4938.2127-1.0016.2317-1.5132.0435-1.733-.5983-3.4133-1.7859-4.6761-1.2062-1.2096-2.6627-2.1402-4.2671-2.7266-.5999-.2318-1.1043-.3817-1.4587-.4908-.1557-.047-.3155-.0789-.4772-.0954zM59.4938 87.4712l.109.0681c.1003.0735.2176.1204.3409.1364.4646.0605.9368-.0104 1.3632-.2045.2832-.1105.575-.1972.8726-.259.3322-.0461.6708-.0038.9815.1226.7226.3286 1.4043.7404 2.0313 1.227.6625.4384 1.2361.9981 1.6905 1.6496.2851.5989.6472 1.158 1.077 1.6632.1745.1943.3823.3559.6135.4772.1766.0923.3734.1391.5726.1363.1176.0154.2368.0154.3545 0H69.1459c-.1829-.0142-.3602-.0702-.5181-.1636-.2112-.1218-.4002-.2785-.5589-.4635-.3999-.5159-.7427-1.0735-1.0225-1.6632-.4552-.6874-1.044-1.2762-1.7314-1.7314-.3408-.2454-.6952-.4772-1.0361-.6953-.3261-.2242-.6787-.4074-1.0497-.5453-.345-.1224-.7145-.1598-1.077-.1091-.3066.073-.6074.1687-.8998.2863-.3888.1941-.8199.2879-1.2542.2727-.3408-.1227-.4908-.2318-.5044-.2045zM56.7018 97.0862c.1079-.0502.2087-.1144.3-.1908.2665-.1939.5215-.4033.7634-.6272 1.5872-1.5054 2.6644-3.4692 3.0811-5.6167.0705-.3228.1116-.6514.1226-.9816.018-.1175.018-.237 0-.3545 0 0-.0817.5044-.2726 1.3633-.2393 1.0378-.6201 2.0378-1.1315 2.972-.5384.9171-1.1938 1.7603-1.9496 2.5085-.5316.5453-.9406.8997-.9134.927z\"\n})), _path22 || (_path22 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#F3B484\",\n d: \"M42.0255 149.38c1.9658 1.578 4.4681 2.331 6.9787 2.1 2.5106-.232 4.833-1.429 6.4771-3.341 2.0322-2.084 3.1591-4.887 3.1355-7.798-.5726-7.253-.2317-35.977-.2317-35.977l-11.5199-2.959s-8.8887 34.723-9.3249 40.776c-.1909 2.673 1.9768 5.208 4.4852 7.199zM134.836 137.203h-13.223l-7.321-2.577-2.154-5.657c-1.327-.917-2.936-1.334-4.541-1.177-1.605.158-3.102.879-4.225 2.036-4.4584 4.09-7.2122 12.365-7.2122 12.365l11.8472 4.09s7.416 5.562 8.221 5.576l23.639.313s.3-10.47-5.031-14.969z\"\n})), _path23 || (_path23 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#1E2E34\",\n d: \"M104.596 134.533l1.541-24.989c.013-.221-.019-.442-.095-.65-.076-.208-.193-.399-.345-.559-.152-.161-.335-.289-.539-.377-.203-.087-.422-.132-.643-.132H90.8816c-.4188 0-.8214.161-1.1238.451-.3023.29-.481.685-.4986 1.103l-.9815 24.99c-.0093.218.0259.435.1035.639.0775.204.1958.39.3475.547.1518.157.3339.282.5353.366.2013.084.4177.126.636.124h13.074c.413.005.812-.15 1.114-.432.302-.282.484-.669.508-1.081z\"\n})), _path24 || (_path24 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#3F5963\",\n d: \"M89.8455 123.288c.0124-.099.0124-.2 0-.3v-.872l.0954-3.19c0-1.364 0-2.972.1227-4.745v-2.808c.0095-.488.097-.971.259-1.431.0732-.222.2109-.417.3954-.559.1984-.135.4288-.215.668-.232.504-.028 1.0092-.028 1.5132 0H97.18l4.744.082h1.827c.456-.021.913.007 1.363.081.138.038.265.104.373.196.109.092.195.207.254.336.013.095.013.191 0 .286.03-.097.03-.202 0-.3-.052-.141-.138-.268-.249-.37-.112-.102-.246-.176-.391-.216-.448-.1-.905-.145-1.364-.136h-1.826l-4.7719-.136h-4.2126c-.5131-.028-1.0274-.028-1.5405 0-.2731.035-.5342.133-.7635.286-.2166.167-.3781.395-.4635.654-.1378.488-.1976.994-.1772 1.5V122.961c-.0649.1-.1111.211-.1363.327z\"\n})), _path25 || (_path25 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#E1E1E1\",\n d: \"M97.4496 113.616c.0752-.17.2035-.312.3658-.403.1622-.091.3496-.126.534-.102.107-.028.2187-.033.3278-.014.109.019.2128.06.3044.122.0916.062.169.143.2269.237.0579.094.095.2.1089.31.0014.195-.0536.386-.1585.55-.1048.164-.255.295-.4323.375-.1774.081-.3743.109-.5671.08-.1927-.029-.373-.113-.519-.242-.1211-.114-.2043-.263-.2385-.427-.0341-.163-.0175-.333.0476-.486z\"\n})), _path26 || (_path26 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#F3B484\",\n d: \"M112.436 129.649v-2.536s-2.495-5.889-2.427-5.671c.068.218-4.431-2.918-4.431-2.918-.15 1.296-.1 2.606.15 3.886.292.961.801 1.842 1.486 2.576l.355 2.727-5.672-4.608-6.7344-3.558c-.4017-.033-.805.039-1.1706.209-.3656.169-.6809.431-.9153.759-.8588 1.145.3681 2.304.9407 2.658.5726.355 5.7395 4.09 5.7395 4.09l2.8491 3.367-.6.682-5.0575-3.245s-6.3802-4.662-7.8117-4.948h-.0818c-.275-.046-.5575-.007-.8094.113-.2519.12-.461.314-.5992.556-.1382.242-.1988.521-.1736.798.0252.278.1349.541.3144.755 1.5243 2.104 3.1723 4.116 4.9351 6.026.2181-.178 6.8165 4.335 6.8165 4.335-2.4242-.78-4.8044-1.69-7.1301-2.727-.5862-.49-6.462-6.734-6.462-6.734s-.7907.136-.927 1.936l.3544 1.785c-.141.449-.2593.904-.3544 1.364-.2182.94 3.081 7.321 3.081 7.321s12.8693 7.143 14.0833 7.143h5.739l4.513-16.141z\"\n})), _path27 || (_path27 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#DD915E\",\n d: \"M85.4308 129.748c.0533.193.136.377.2454.545.2651.477.5659.933.8997 1.364.3954.559.9135 1.199 1.3633 1.949.5771.81 1.2249 1.568 1.9359 2.263 1.3697 1.228 2.8963 2.269 4.5398 3.095.5998.313 1.1043.559 1.4587.722.1724.098.3553.176.5453.232l-.518-.3-1.3633-.79c-1.5749-.841-3.044-1.866-4.3762-3.054-.7398-.688-1.411-1.446-2.004-2.263-.5181-.75-1.0498-1.364-1.4724-1.923-.4226-.558-.7362-.995-.9407-1.363-.0953-.165-.2-.324-.3135-.477z\"\n})), _path28 || (_path28 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#819DE2\",\n d: \"M45.7413 151.776l55.4457.382-35.5552 7.662-12.9377-3.231-6.9528-4.813z\"\n})), _path29 || (_path29 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#B1C2F9\",\n d: \"M101.241 154.379L65.6864 163.2l-54.6545-4.213L.234604 115.566c-.790711-2.631.531677-4.089 2.208536-4.089l50.94636 2.563c.783.046 1.529.349 2.1229.861.5938.513 1.0024 1.206 1.1627 1.974l8.9704 42.944 35.5955-7.662v2.222z\"\n})), _path30 || (_path30 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M30.9577 133.312c.5338.085 1.0365.307 1.4593.644.4228.337.7513.777.9537 1.278.1581.505.1419 1.049-.046 1.543-.1879.495-.5366.912-.9901 1.184-.5996.213-1.2551.21-1.8526-.009-.5976-.219-1.0997-.64-1.4193-1.191-.1998-.35-.3259-.738-.3704-1.139-.0446-.4-.0067-.806.1114-1.192.2024-.388.5148-.707.898-.918.3831-.211.8201-.304 1.256-.268\"\n})), _path31 || (_path31 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#00963F\",\n d: \"M210.058 80.669c3.963 0 7.175-3.2125 7.175-7.1753s-3.212-7.1753-7.175-7.1753c-3.963 0-7.175 3.2125-7.175 7.1753s3.212 7.1753 7.175 7.1753z\"\n})), _path32 || (_path32 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M206.043 74.2186c.79.79 1.58 1.5799 2.37 2.3699.329.3291.921.3291 1.184 0 1.317-1.4483 2.634-2.9623 3.95-4.4106.198-.1974.395-.4608.593-.6582.329-.3292.329-.8558 0-1.185-.329-.3291-.922-.3291-1.185 0-1.317 1.4483-2.633 2.9623-3.95 4.4106-.197.1974-.395.4608-.592.6582h1.184c-.789-.7899-1.579-1.5798-2.369-2.3698-.79-.7899-1.975.395-1.185 1.1849z\"\n})), _path33 || (_path33 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#D8432F\",\n d: \"M142.304 80.6644c3.961 0 7.173-3.2114 7.173-7.173 0-3.9616-3.212-7.173-7.173-7.173-3.962 0-7.173 3.2114-7.173 7.173 0 3.9616 3.211 7.173 7.173 7.173z\"\n})), _path34 || (_path34 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M145.856 75.7953c-.723-.7897-1.447-1.5794-2.171-2.3691.526-.5265 1.053-.9871 1.579-1.5136.263-.2632.527-.4606.79-.7238.921-.8555-.395-2.3033-1.316-1.4478-.79.7239-1.58 1.4477-2.369 2.1716-.527-.5264-.988-1.0529-1.514-1.5793-.263-.2633-.461-.5265-.724-.7897-.855-.9213-2.303.3948-1.448 1.3161l2.172 2.3691c-.526.5264-1.053.9871-1.579 1.5136-.264.2632-.527.4606-.79.7238-.921.8555.395 2.3033 1.316 1.4478.79-.7239 1.579-1.4478 2.369-2.1716.527.5264.987 1.0529 1.514 1.5793.263.2633.46.5265.724.7897.921.9872 2.369-.3948 1.447-1.3161z\"\n})));\nexport default SvgWfSignupPopup;","import React from 'react';\nimport {\n ConfirmationModal\n} from '@jotforminc/modals';\nimport { t } from '@jotforminc/translation';\nimport { createRoot } from 'react-dom/client';\n\nconst askConfirmation = (\n title = t('Delete'),\n description = t('After deleting this element, all connections with other elements will be invalid.'),\n subtitle = t('Are you sure you want to delete?'),\n showDontShowAgain = false\n) => {\n const container = document.getElementById('workflow-utils-root');\n const root = createRoot(container);\n return new Promise((resolve, reject) => {\n const handleClose = () => {\n reject();\n root.unmount();\n };\n const handleConfirm = ({ dontShowAgain = false }) => {\n resolve({ dontShowAgain });\n root.unmount();\n };\n root.render();\n });\n};\n\nexport default askConfirmation;\n","import React from 'react';\nimport classNames from 'classnames';\nimport { IconExclamationCircleFilled } from '@jotforminc/svg-icons';\nimport {\n bool,\n func,\n node,\n string\n} from 'prop-types';\nimport './styles/style.scss';\n\nconst WarningBox = ({\n colorStyle,\n size,\n Icon,\n fullWidth,\n isLongText,\n children,\n className,\n wrapperClassName,\n showAnimate\n}) => {\n return (\n
    \n
    \n
    \n \n
    \n
    {children}
    \n
    \n
    \n );\n};\n\nWarningBox.propTypes = {\n colorStyle: string,\n size: string,\n Icon: func,\n fullWidth: bool,\n isLongText: bool,\n children: node,\n className: string,\n wrapperClassName: string,\n showAnimate: bool\n};\n\nWarningBox.defaultProps = {\n colorStyle: 'warning',\n size: 'small',\n Icon: IconExclamationCircleFilled,\n fullWidth: true,\n isLongText: false,\n children: null,\n className: '',\n wrapperClassName: '',\n showAnimate: true\n};\n\nexport default WarningBox;\n","import Styled from 'styled-components';\n\nexport const ScRF = Styled.div`\n display: flex;\n justify-content: space-between;\n`;\n\nexport const ScRB = Styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n overflow-y: auto;\n\n .content {\n width: 90%;\n max-width: 500px;\n padding-bottom: 40px;\n text-align: center;\n font-size: 1em;\n color: #0A1551;\n font-weight: 700;\n margin: auto;\n\n &.isRedWarn {\n svg {\n fill: #FF4947;\n width: 80px;\n height: 80px;\n }\n }\n\n > svg {\n display: unset;\n margin-bottom: 8px;\n }\n }\n\n .content.wider { max-width: 540px; }\n\n .assignToOrgSvg {\n width: 54vw;\n height: 36vh;\n max-width: 192px;\n max-height: 136px;\n }\n\n .title {\n font-size: 18px;\n line-height: 20px;\n color: #141E46;\n font-weight: 500;\n }\n\n .subtitle {\n font-size: 15px;\n line-height: 16px;\n color: #252F58;\n font-weight: 500;\n }\n\n p {\n font-size: 14px;\n line-height: 24px;\n color: #60658C;\n }\n\n p, .custom-content { font-weight: 300; margin: 12px 0; }\n\n .sec { color: #2c3345; margin: 1em 0 0; line-height: 1.5; }\n\n [data-value=\"sendNotificationEmail\"] { display: inline-flex; }\n\n .assigneeMsg {\n max-width: 426px;\n width: 100%;\n display: block;\n height: 90px;\n border-radius: 4px;\n border: solid 1px #d8dae9;\n margin: 1em auto 0;\n font-size: .875rem;\n padding: .375rem .5rem;\n transition: border-color .15s ease;\n\n ::placeholder { color: #8d8fa8; }\n :focus { outline: 0; border-color: #4c7af7; }\n }\n\n .dontshow {\n display: inline-flex;\n background-color: #ecf4ff;\n align-items: center;\n padding: 10px;\n margin-top: 38px;\n margin-bottom: 20px;\n \n &-input {\n opacity: 0;\n pointer-events: none;\n position: absolute;\n \n &:checked + .dontshow-checkbox:before {\n background-color: #54b45c;\n border-color: #54b45c;\n }\n \n &:checked + .dontshow-checkbox:after {\n opacity: 1;\n }\n \n &:focus {\n outline: 0;\n }\n }\n \n &-checkbox {\n width: 14px;\n height: 14px;\n background-color: #fff;\n border-radius: 2px;\n position: relative;\n \n &:before {\n content: \"\";\n position: absolute;\n width: 100%;\n height: 100%;\n border: 1px solid #CCD0DA;\n background-color: #fff;\n border-radius: 2px;\n top: 0;\n left: 0;\n transition: .3s;\n transform: translate(-1px, -1px);\n }\n \n &:after {\n content: \"\";\n display: block;\n width: 4px;\n height: 8px;\n border: solid #fff;\n border-width: 0 2px 2px 0;\n transform: rotate(45deg);\n position: absolute;\n top: 1px;\n left: 4px;\n opacity: 1;\n transition: .3s;\n z-index: 2;\n }\n }\n \n &-text {\n font-weight: 400;\n font-size: 16px;\n margin-left: 8px;\n line-height: 1;\n color: #52587e;\n }\n }\n\n @media screen and (max-width: 480px) {\n font-size: 0.875em;\n\n p { margin: 1em 0 .75em; }\n } \n`;\n","import React, { useState, forwardRef, useImperativeHandle } from 'react';\nimport {\n string, elementType, func, shape\n} from 'prop-types';\nimport { t } from '@jotforminc/translation';\nimport { useStateWithAutoReset } from '@jotforminc/hooks';\nimport { Button } from '@jotforminc/magnet';\nimport { ScRF } from '@jotforminc/share-panel';\nimport { sendTestEmail } from '../../helpers/utils';\n\nconst StyleModalFooter = forwardRef(({\n user,\n backText,\n confirmText,\n testButtonText,\n onBack,\n onConfirm,\n tabbedWizardsRef,\n TestButtonRenderer,\n BackButtonRenderer,\n ConfirmButtonRenderer\n}, ref) => {\n const [isConfirmDisabled, setConfirmDisabled] = useState(false);\n const [testEmailResult, setTestEmailResult] = useState({});\n const [isTestEmailDisabled, setTestEmailDisabled] = useState(false);\n const [showTestEmailMessage, setShowTestEmailMessage] = useStateWithAutoReset(false);\n\n useImperativeHandle(ref, () => ({ setConfirmDisabled }));\n\n const handleSendTestEmail = () => {\n const testEmail = {\n ...tabbedWizardsRef.current.getValues()\n };\n setTestEmailDisabled(true);\n sendTestEmail(testEmail, user).then(() => {\n setTestEmailResult({\n message: t('A test email has been sent to {userEmail}').replace('{userEmail}', user.email),\n className: 'success'\n });\n }).catch(e => {\n const message = e?.response?.data?.error;\n setTestEmailResult({\n message: t(message || 'Failed to send test email.'),\n className: 'error'\n });\n }).finally(() => {\n setTestEmailDisabled(false);\n setShowTestEmailMessage(true);\n });\n };\n\n return (\n \n
    \n \n {backText}\n \n
    \n
    \n {showTestEmailMessage && (\n
    \n {testEmailResult.message}\n
    \n )}\n \n
    \n {t('Please note that test emails will only be sent to the email address associated with your account.')}\n
    \n {testButtonText}\n \n \n {confirmText}\n \n
    \n
    \n );\n});\n\nStyleModalFooter.propTypes = {\n backText: string,\n confirmText: string,\n testButtonText: string,\n user: shape({}),\n tabbedWizardsRef: shape({ current: shape({}) }),\n TestButtonRenderer: elementType,\n BackButtonRenderer: elementType,\n ConfirmButtonRenderer: elementType,\n onBack: func,\n onConfirm: func\n};\n\nStyleModalFooter.defaultProps = {\n backText: t('CANCEL'),\n confirmText: t('SAVE'),\n testButtonText: t('TEST EMAIL'),\n user: {},\n tabbedWizardsRef: { current: {} },\n TestButtonRenderer: Button,\n BackButtonRenderer: Button,\n ConfirmButtonRenderer: Button,\n onBack: f => f,\n onConfirm: f => f\n};\n\nexport default StyleModalFooter;\n","import React, {\n forwardRef, useRef\n} from 'react';\nimport {\n elementType, func, string, shape, number\n} from 'prop-types';\nimport { t } from '@jotforminc/translation';\nimport WarningBox from '@jotforminc/warning-box';\nimport { StyledModal as Modal } from '@jotforminc/styled-modal';\nimport StyleModalFooter from './components/ModalFooter/StyleModalFooter';\nimport TabbedWizards from './EmailWizard';\n\nimport { EMAIL_WIZARD_COMMON_DEFAULT_PROPS, EMAIL_WIZARD_COMMON_PROP_TYPES } from './constants/PropTypes';\n\nimport './styles/jfEmailStyleWizard-modal.scss';\n\nconst EmailStyleWizardModal = forwardRef(({\n modalProps,\n user,\n formProperties,\n ...emailWizardProps\n}, ref) => {\n const modalFooterRef = useRef();\n const tabbedWizardsRef = useRef();\n\n const {\n title = 'Title',\n titleIcon = null,\n backText,\n confirmText,\n testButtonText,\n TestButtonRenderer,\n BackButtonRenderer,\n ConfirmButtonRenderer,\n onBack = f => f,\n onConfirm = f => f,\n warning = null,\n forms,\n maxWidth = 770,\n PDFData,\n ...restModalProps\n } = modalProps;\n\n const handleSave = () => {\n if (tabbedWizardsRef.current) {\n if (tabbedWizardsRef.current.validate?.()) {\n return;\n }\n const values = tabbedWizardsRef.current.getValues();\n onConfirm(values);\n }\n };\n\n const handleError = hasError => {\n if (modalFooterRef.current) {\n modalFooterRef.current.setConfirmDisabled(hasError);\n }\n };\n\n return (\n \n
    \n {titleIcon}\n
    \n
    \n {title}\n
    \n \n ) : (\n

    \n {title}\n

    \n )}\n footer={(\n \n )}\n >\n \n {warning && (\n \n {t(warning)}\n \n )}\n \n );\n});\n\nEmailStyleWizardModal.propTypes = {\n modalProps: shape({\n title: string,\n backText: string,\n confirmText: string,\n testButtonText: string,\n TestButtonRenderer: elementType,\n BackButtonRenderer: elementType,\n ConfirmButtonRenderer: elementType,\n onBack: func,\n onConfirm: func,\n forms: [],\n maxWidth: number,\n PDFData: {}\n }),\n ...EMAIL_WIZARD_COMMON_PROP_TYPES\n};\n\nEmailStyleWizardModal.defaultProps = {\n modalProps: {},\n ...EMAIL_WIZARD_COMMON_DEFAULT_PROPS\n};\n\nexport default EmailStyleWizardModal;\n","import React from 'react';\nimport { EmailStyleWizardModal, EMAIL_TEMPLATE_TYPES } from '@jotforminc/email-wizards';\nimport { IconEnvelopeFormFilled } from '@jotforminc/svg-icons';\nimport { t } from '@jotforminc/translation';\nimport { escapeHTML } from '@jotforminc/utils';\nimport { createRoot } from 'react-dom/client';\nimport CONFIGURATION from '../constants/config';\nimport { isInputTarget, sanitizeTextBeforeSet } from '.';\nimport {\n ALLOW_FORM_FIELDS_ON_APPROVER, DEFAULT_FEATURES, DISABLE_FREE_TEXT_ON_RECIPIENTS, PDF_ATTACHMENTS, MULTIPLE_FORMS, MULTI_FORM_PDF\n} from '../constants/features';\nimport { STATIC_EMAIL_FIELDS, getExtraEditorButtons } from './emailUtils';\n\nconst openEmailSettingsModal = (title, {\n questions, customSenders, userList, formTitle, elements, isHIPAA, formID, subject, getAllFormPropertiesInFlow, selectedPDFOptions,\n ...rest\n}) => {\n return new Promise((resolve, reject) => {\n const { emailType, emailSubType, to } = rest;\n const {\n WORKFLOW_SEND_PDF, WORKFLOW_SEND_REPORT, WORKFLOW_ASSIGN_FORM_NOTIFICATION, WORKFLOW_APPROVE_START, WORKFLOW_ASSIGN_TASK\n } = EMAIL_TEMPLATE_TYPES;\n const hasRecipientsTab = () => {\n const validEmailType = !([WORKFLOW_ASSIGN_FORM_NOTIFICATION, WORKFLOW_APPROVE_START, WORKFLOW_ASSIGN_TASK].includes(emailType));\n const validEmailSubtype = !([WORKFLOW_SEND_PDF, WORKFLOW_SEND_REPORT].includes(emailSubType));\n return validEmailType && validEmailSubtype;\n };\n const defaultActiveTab = (hasRecipientsTab() && !to?.length) ? 'recipients' : null;\n const container = document.getElementById('workflow-utils-root');\n const root = createRoot(container);\n const handleDocumentKeyDown = e => {\n if (CONFIGURATION.CANVAS_DELETE_KEY_CODES.indexOf(e?.keyCode) > -1 && !isInputTarget(e)) {\n e.stopPropagation(); // In order to prevent canvas element deletion if modal is open.\n console.log('stop!');\n }\n };\n const handleClose = () => {\n reject(new Error('Closed'));\n document.removeEventListener('keydown', handleDocumentKeyDown, { capture: true });\n root.unmount();\n };\n const handleConfirm = value => {\n resolve(value);\n document.removeEventListener('keydown', handleDocumentKeyDown, { capture: true });\n root.unmount();\n };\n\n document.addEventListener('keydown', handleDocumentKeyDown, { capture: true });\n\n const extraEditorButtons = getExtraEditorButtons(elements);\n\n root.render(\n ,\n onBack: handleClose,\n defaultVisible: true,\n onClose: handleClose,\n onConfirm: handleConfirm,\n closeOnOutsideClick: false,\n usePortal: false\n }}\n questions={questions}\n customSenders={customSenders}\n userList={userList}\n formTitle={formTitle}\n extraEditorButtons={extraEditorButtons}\n isHIPAA={isHIPAA}\n staticFields={isHIPAA ? STATIC_EMAIL_FIELDS.filter(q => ['{ip}', '{edit_link}', '{pdf-link}'].indexOf(q.placeholder) < 0) : STATIC_EMAIL_FIELDS}\n subject={escapeHTML(sanitizeTextBeforeSet(subject))}\n {...rest}\n recipientLimit={CONFIGURATION.MAX_EMAIL_RECIPIENT_LIMIT} // Hard limit\n disableFreeTextOnRecipients={DEFAULT_FEATURES[DISABLE_FREE_TEXT_ON_RECIPIENTS]}\n allowFormFieldsOnRecipients={DEFAULT_FEATURES[ALLOW_FORM_FIELDS_ON_APPROVER]}\n allowPDFAttachment={Boolean(formID) && DEFAULT_FEATURES[PDF_ATTACHMENTS]}\n formArray={questions}\n useMultipleForms={DEFAULT_FEATURES[MULTIPLE_FORMS]}\n forms={getAllFormPropertiesInFlow}\n useMultiFormPDF={DEFAULT_FEATURES[MULTI_FORM_PDF]}\n showProtectedTag={true}\n defaultActiveTab={defaultActiveTab}\n selectedPDFOptions={selectedPDFOptions.filter(Boolean)}\n />\n );\n });\n};\n\nexport default openEmailSettingsModal;\n","import React, { useState } from 'react';\nimport { t } from '@jotforminc/translation';\nimport {\n func, shape\n} from 'prop-types';\nimport {\n Checkbox, Modal, ModalHeader, ModalBody\n} from '@jotforminc/magnet';\nimport ReportSample from './ReportSample';\nimport './style.scss';\n\nconst threadInputs = [\n { label: t('Show actor/event avatars or icons.'), prop: 'showAvatars' },\n { label: t('Show actor email address.'), prop: 'showAssigneeEmail' },\n { label: t('Show actor’s comments.'), prop: 'showComments' },\n { label: t('Show actor’s signature.'), prop: 'showSignature' }\n];\n\nconst ApprovalReportSample = ({\n onClose,\n onChange,\n threadState: initialValue\n}) => {\n const [threadState, setThreadState] = useState(initialValue);\n\n const onChangeFunc = (value, input) => {\n const threadVal = input?.prop;\n const newState = {\n ...threadState,\n [threadVal]: value.target.checked\n };\n setThreadState(newState);\n if (onChange && typeof onChange === 'function') {\n onChange(newState);\n }\n };\n\n const reportLogo = window.JOTFORM_ENV === 'ENTERPRISE' ? `${window.location.origin}/enterprise/logo.png` : '//cdn.jotfor.ms/assets/img/logo2021/jotform-logo.svg';\n\n return (\n onClose(threadState)}\n size=\"large\"\n ariaLabel={t('View a sample report')}\n >\n onClose(threadState)} />\n \n
    \n
    \n
    \n
    \n
    \n
    \n {t('SAMPLE REPORT')}\n
    \n
    \n \n
    \n
    \n
    \n
    \n

    \n {t('Report Settings')}\n

    \n
    \n {threadInputs.map(input => (\n onChangeFunc(value, input)}\n checked={threadState[input.prop]}\n label={input.label}\n className=\"py-2.5\"\n />\n ))}\n
    \n
    \n
    \n
    \n \n );\n};\n\nApprovalReportSample.defaultProps = {\n onChange: f => f,\n onClose: f => f,\n threadState: {}\n};\n\nApprovalReportSample.propTypes = {\n onChange: func,\n onClose: func,\n threadState: shape({})\n};\n\nexport default ApprovalReportSample;\n","import React from 'react';\nimport { ApprovalReportSample } from '@jotforminc/jotform-common';\nimport { createRoot } from 'react-dom/client';\nimport CONFIGURATION from '../constants/config';\nimport { isInputTarget } from '.';\nimport { DEFAULT_FEATURES, SIGN_DOCUMENT } from '../constants/features';\n\nconst isSignDocumentEnable = DEFAULT_FEATURES[SIGN_DOCUMENT];\nconst openReportSettingsModal = ({ threadState, ...rest }) => {\n const container = document.getElementById('workflow-utils-root');\n const root = createRoot(container);\n return new Promise(resolve => {\n const handleDocumentKeyDown = e => {\n if (CONFIGURATION.CANVAS_DELETE_KEY_CODES.indexOf(e?.keyCode) > -1 && !isInputTarget(e)) {\n e.stopPropagation(); // In order to prevent canvas element deletion if modal is open.\n console.log('stop!');\n }\n };\n const handleConfirm = value => {\n resolve(value);\n document.removeEventListener('keydown', handleDocumentKeyDown, { capture: true });\n root.unmount();\n };\n\n root.render(\n \n );\n });\n};\n\nexport default openReportSettingsModal;\n","import React from 'react';\nimport LoginFlow from './LoginFlow';\nimport '../styles/style.scss';\nimport '../temporary-duplicate/styles/SaveAndContinueLater/style.scss';\n\n// Trick to include styles in bundle\nconst LoginFlowWithStyles = props => ;\n\nexport default LoginFlowWithStyles;\n","import React from 'react';\nimport LoginFlowWithStyles from './LoginFlowWithStyles';\nimport '../styles/multi-column-login-flow.scss';\n\nconst MultiColumnLoginFlow = props => ;\n\nexport default MultiColumnLoginFlow;\n","import React from 'react';\nimport { string } from 'prop-types';\nimport { t } from '@jotforminc/translation';\nimport { MultiColumnLoginFlow } from '@jotforminc/login-flow';\nimport TaskCompleted from '../assets/wf_task_completed.svg';\nimport Generic from '../assets/wf_signup_popup.svg';\n\nexport const WFCompletedTaskLoginFlow = props => {\n const { initialScreen } = props;\n const signOptionText = initialScreen === 'loginOptions' ? 'Log in' : 'Sign up';\n\n return (\n \n \n
    \n {t('Thank you!')}\n
    \n
    \n {t('The task has been completed.')}\n
    \n
    \n {t(`${signOptionText} to view all submissions in one place, and complete your approval process from any device.`)}\n
    \n \n ]}\n greetingMessage={t('Sign Up Now')}\n {...props}\n />\n );\n};\n\nWFCompletedTaskLoginFlow.propTypes = {\n initialScreen: string\n};\n\nWFCompletedTaskLoginFlow.defaultProps = {\n initialScreen: 'signupWithEmail'\n};\n\nexport const WFGenericLoginFlow = props => {\n return (\n \n \n
    \n {t('Jotform Workflows')}\n
    \n
    \n {t('Sign up to share your flow, view and track all submissions in one place, and complete your workflow process from any device.')}\n
    \n \n ]}\n greetingMessage={t('Sign Up Now')}\n {...props}\n />\n );\n};\n","import React from 'react';\nimport { WFGenericLoginFlow } from '@jotforminc/workflow-components';\nimport { getAPIURL } from '@jotforminc/request-layer';\nimport { createRoot } from 'react-dom/client';\nimport CONFIGURATION from '../constants/config';\nimport { isInputTarget } from '.';\nimport WatchmanRecorder from './WatchmanRecorder';\n\nconst openSignupModal = ({ user }) => {\n const container = document.getElementById('workflow-utils-root');\n const root = createRoot(container);\n return new Promise((resolve, reject) => {\n const handleDocumentKeyDown = e => {\n if (CONFIGURATION.CANVAS_DELETE_KEY_CODES.indexOf(e?.keyCode) > -1 && !isInputTarget(e)) {\n e.stopPropagation(); // In order to prevent canvas element deletion if modal is open.\n console.log('stop!');\n }\n };\n const handleClose = () => {\n reject();\n document.removeEventListener('keydown', handleDocumentKeyDown, { capture: true });\n root.unmount();\n };\n const onLogin = () => {\n resolve();\n document.removeEventListener('keydown', handleDocumentKeyDown, { capture: true });\n root.unmount();\n };\n\n document.addEventListener('keydown', handleDocumentKeyDown, { capture: true });\n\n root.render(\n }}\n navigationWrapper={root}\n shouldCallNavigate={false}\n actionLogger={(...params) => WatchmanRecorder.trackEvent('', params)}\n />\n );\n });\n};\n\nexport default openSignupModal;\n","/* eslint-disable max-len */\nimport {\n oneOfType,\n func,\n bool,\n number,\n string,\n array\n} from 'prop-types';\nimport React from 'react';\nimport { t } from '@jotforminc/translation';\nimport { IconXmark, IconChevronLeft } from '@jotforminc/svg-icons';\n\nimport './styles/WhatsNewDialogue.scss';\nimport '../DialogShared/styles/DialogShared.scss';\nimport { Button, Link, Badge } from '@jotforminc/magnet';\nimport { isEnterprise } from '@jotforminc/enterprise-utils';\n\nconst sharedPropTypes = {\n whatsNewKey: oneOfType([string, array]),\n currentIndex: number,\n setCurrentIndex: func,\n hasMultipleSteps: bool,\n isFinal: bool,\n hasPreviousItem: bool,\n hasNextItem: bool,\n showPreviousItem: func,\n showNextItem: func,\n hideCloseButtonOnMultipleModals: bool\n};\n\nconst sharedPropDefaults = {\n whatsNewKey: null,\n currentIndex: null,\n setCurrentIndex: f => f,\n hasMultipleSteps: false,\n isFinal: false,\n hasPreviousItem: false,\n hasNextItem: false,\n showPreviousItem: f => f,\n showNextItem: f => f,\n hideCloseButtonOnMultipleModals: false\n};\n\n/* DialogHeader */\nexport const DialogHeader = ({\n onClose,\n currentIndex,\n whatsNewKey,\n hasNextItem,\n hasMultipleSteps,\n hideCloseButtonOnMultipleModals\n}) => {\n const shouldRenderCloseButton = !(hideCloseButtonOnMultipleModals && hasMultipleSteps && hasNextItem);\n const closeButton = shouldRenderCloseButton ? (\n \n ) : null;\n\n const DEFAULT_HEADER = (\n
    \n
    \n

    \n {t(\"What's New\")}\n 🔥\n

    \n

    \n {t('Get the latest changes and updates')}\n

    \n
    \n
    \n {closeButton}\n
    \n
    \n );\n\n const HEADER_TYPES = {};\n\n if (Array.isArray(whatsNewKey) && whatsNewKey.length > 0) {\n return HEADER_TYPES[whatsNewKey[currentIndex]] || DEFAULT_HEADER;\n }\n\n return HEADER_TYPES[whatsNewKey] || DEFAULT_HEADER;\n};\n\nDialogHeader.propTypes = {\n onClose: func,\n ...sharedPropTypes\n};\n\nDialogHeader.defaultProps = {\n onClose: f => f,\n ...sharedPropDefaults\n};\n/* /DialogHeader */\n\n/* WhatsNewDialogue */\nconst WhatsNewDialogue = ({\n whatsNewKey,\n currentIndex\n}) => {\n const DIALOGUE_TYPES = {\n whats_new_pdf_elements: (\n
    \n
    \n {t(\"What's\n
    \n
    \n

    {t('Share PDF documents')}

    \n

    {t('Turn form submissions into PDFs automatically or upload a PDF to send in an email. Just drag and drop the PDF element into your approval flow and select the documents you’d like to send.')}

    \n

    {t('Generate approval reports')}

    \n

    {t('Create and share approval reports automatically. Add the Approval Report element to your approval flow to send an auto-generated PDF report of all the actions taken throughout your approval process.')}

    \n
    \n
    \n ),\n whats_new_sign_element: (\n
    \n
    \n {t(\"What's\n
    \n
    \n
    \n
    \n
    {t('Request e-Signature')}
    \n
    4 October 2022
    \n
    \n
    \n
    New Feature
    \n
    \n
    \n
    \n
    \n {t('Jotform Sign is now live and fully integrated with Approvals! Automatically request electronic signatures for your documents. Just drag and drop the Sign Document element into your approval flow and select the documents you would like to be signed.')}\n
    \n Learn More\n
    \n
    \n ),\n whats_new_element_design: (\n
    \n
    \n {t(\"What's\n
    \n
    \n
    \n
    \n
    {t('Introducing the new Approval elements design')}
    \n
    11 Nov, 2022
    \n
    \n
    \n
    Design Update
    \n
    \n
    \n
    \n
    \n {t('Our sleek new design makes it easier to differentiate between elements at a glance.')}\n
    \n
    \n {t('We’re still working on improving this experience for you, and would love to hear your feedback.')}\n
    \n
    \n ),\n whats_new_group_approval: (\n
    \n
    \n {t(\"What's\n
    \n
    \n
    \n
    \n
    {t('Introducing Group & Team Approvals')}
    \n
    \n
    \n
    NEW FEATURE
    \n
    \n
    \n
    \n
    \n {t('You can now request approvals from one member of a group, all members of a group, or the majority of a group. Some use cases include')}\n
    \n {`• ${t('Getting approval from the majority of the HR team before scheduling an interview with a job candidate')}`}\n
    \n {`• ${t('Getting the approval of the entire finance team for a big expense')}`}\n
    \n {`• ${t('Getting your post approved by someone on the social media team')}`}\n
    \n \n
    \n
    \n ),\n whats_new_team_approval: (\n
    \n
    \n {t(\"What's\n
    \n
    \n
    \n
    \n
    {t('Introducing Team Approvals')}
    \n
    \n
    \n
    NEW FEATURE
    \n
    \n
    \n
    \n
    \n {t('You can also add predefined teams to your approval flows with Team Approvals!')}\n
    \n
    \n {t('It works just like Group Approvals — meaning you can request approvals from one member of a team, all members of a team, or the majority of a team.')}\n
    \n
    \n {t('Team Approvals allows you to dynamically keep relevant team members involved in the decision-making process, even when a team member is added or removed.')}\n
    \n
    \n
    \n ),\n whats_new_donation_box: (\n
    \n
    \n {t(\"What's\n
    \n
    \n
    \n
    \n
    {t('Introducing Donation Box element')}
    \n
    \n
    \n
    {t('NEW FEATURE')}
    \n
    \n
    \n
    \n
    \n {t('You can now collect donations through your apps! Just add the Donation Box and integrate with a payment gateway to start receiving donations with ease. Use this element to:')}\n
    \n
    \n {`• ${t('Collect donations through your app')}`}\n
    \n {`• ${t('Let users select a set donation amount or enter a custom amount')}`}\n
    \n {`• ${t('Show progress toward your donation goal')}`}\n
    \n {`• ${t('Track donations and contact information in Jotform Tables')}`}\n
    \n
    \n
    \n \n {t('Register for free the webinar')}\n \n {!isEnterprise() && (\n \n {t('Learn more')}\n \n )}\n
    \n
    \n ),\n whats_new_payment_square: (\n
    \n
    \n {t('Square\n
    \n
    \n
    \n
    \n
    {t('Announcing Square ACH & Afterpay & Clearpay')}
    \n
    \n
    \n
    \n \n {t('NEW FEATURE')}\n \n
    \n
    \n
    \n
    \n
    \n

    {t('Enjoy new ways to collect payments through your forms,')}

    \n
  • \n {` ${t('Square ACH: ')}`}\n {` ${t('Integrate with Square to accept ACH bank transfers directly through your forms — perfect for selling products, booking services, or collecting donations.')}`}\n
  • \n
  • \n {` ${t('Square Afterpay: ')}`}\n {` ${t('Want to give your customers the chance to pay in installments? Afterpay makes it easy. Integrate your form with Square to set it up in a few easy steps.')}`}\n
  • \n
  • \n {` ${t('Square Clearpay: ')}`}\n {` ${t('Clearpay offers the same great Buy Now, Pay Later features as Afterpay, except it’s offered exclusively to our U.K. users.')}`}\n
  • \n
    \n
    \n ),\n whats_new_workflow_release: (\n
    \n
    \n {t(\"What's\n
    \n
    \n
    \n
    \n
    {t('Announcing Jotform Workflows')}
    \n
    \n
    \n
    ANNOUNCEMENT
    \n
    \n
    \n
    \n
    \n {t('We’ve transformed Approvals into Jotform Workflows! Everything you love about Approvals is still here, now with powerful new features like integrations, payments, task assigning, and more. Take your workflows to the next level with Jotform Workflows.')}\n
    \n
    \n )\n };\n\n if (Array.isArray(whatsNewKey) && whatsNewKey.length > 0) {\n return (\n
    \n {whatsNewKey.map((eachKey, index) => (\n
    \n {DIALOGUE_TYPES[eachKey]}\n
    \n ))}\n
    \n );\n }\n\n return DIALOGUE_TYPES[whatsNewKey] || null;\n};\n\nWhatsNewDialogue.propTypes = {\n whatsNewKey: oneOfType([string, array]),\n ...sharedPropTypes\n};\n\nWhatsNewDialogue.defaultProps = {\n whatsNewKey: null,\n ...sharedPropDefaults\n};\n\nexport default WhatsNewDialogue;\n\n/* /WhatsNewDialogue */\n\n/* WhatsNewDialogueFooter */\nexport const WhatsNewDialogueFooter = ({\n onAccept,\n showPreviousItem,\n showNextItem,\n hasPreviousItem,\n hasNextItem\n}) => {\n return (\n
    \n
    \n {hasPreviousItem && (\n \n {t('Previous')}\n \n )}\n {hasNextItem ? (\n \n ) : (\n \n )}\n
    \n
    \n );\n};\n\nWhatsNewDialogueFooter.propTypes = {\n onAccept: func,\n ...sharedPropTypes\n};\n\nWhatsNewDialogueFooter.defaultProps = {\n onAccept: f => f,\n ...sharedPropDefaults\n};\n/* /WhatsNewDialogueFooter */\n\n/* DialogRenderer */\nexport const DialogRenderer = ({ children }) => ( // eslint-disable-line\n
    \n {children}\n
    \n);\n/* /DialogRenderer */\n\n/* ContentRenderer */\nexport const ContentRenderer = ({ children }) => ( // eslint-disable-line\n
    \n
    \n {children}\n
    \n
    \n);\n/* /ContentRenderer */\n","import React, { useRef, useState } from 'react';\nimport { Modal } from '@jotforminc/uikit';\nimport { bool, func, shape } from 'prop-types';\nimport WhatsNewDialogue, {\n DialogHeader,\n WhatsNewDialogueFooter,\n DialogRenderer,\n ContentRenderer\n} from './WhatsNewDialogue';\n\nconst WhatsNewModalDialogue = ({\n modalProps,\n onClose,\n hideCloseButtonOnMultipleModals,\n onAccept: onAcceptProp\n}) => {\n const uikitModalRef = useRef(null);\n const { whatsNewKey } = modalProps;\n const [currentIndex, setCurrentIndex] = useState(0);\n const hasMultipleSteps = Array.isArray(whatsNewKey) && whatsNewKey.length > 0;\n const isFinal = hasMultipleSteps && ((currentIndex + 1) === whatsNewKey.length);\n const hasPreviousItem = hasMultipleSteps && currentIndex > 0;\n const hasNextItem = hasMultipleSteps && ((currentIndex + 1) < whatsNewKey.length);\n const showPreviousItem = () => { setCurrentIndex(currentIndex - 1); };\n const showNextItem = () => { setCurrentIndex(currentIndex + 1); };\n\n const extendedModalProps = {\n currentIndex,\n setCurrentIndex,\n hasMultipleSteps,\n isFinal,\n hasPreviousItem,\n hasNextItem,\n showPreviousItem,\n showNextItem,\n hideCloseButtonOnMultipleModals,\n ...modalProps,\n className: `${modalProps.className || ''} whatsNewModal`\n };\n\n const FooterRenderer = () => (\n \n );\n\n const HeaderRenderer = () => ;\n\n return (\n \n \n \n );\n};\n\nWhatsNewModalDialogue.propTypes = {\n onClose: func,\n onAccept: func,\n hideCloseButtonOnMultipleModals: bool,\n modalProps: shape({})\n};\n\nWhatsNewModalDialogue.defaultProps = {\n onClose: f => f,\n onAccept: f => f,\n hideCloseButtonOnMultipleModals: false,\n modalProps: {}\n};\n\nexport default WhatsNewModalDialogue;\n","import { isEnterprise } from '@jotforminc/enterprise-utils';\nimport {\n DEFAULT_FEATURES, MULTIPLE_APPROVAL, TEAM_APPROVAL, WORKFLOW_RELEASED\n} from './features';\n\nexport const WHATS_NEW_PREFIX = 'whats_new';\n// eslint-disable-next-line max-len, no-nested-ternary\nexport const CURRENT_WHATS_NEW = DEFAULT_FEATURES[WORKFLOW_RELEASED] ? ['workflow_release'] : (DEFAULT_FEATURES[MULTIPLE_APPROVAL] && DEFAULT_FEATURES[TEAM_APPROVAL] && !isEnterprise()) ? ['group_approval'] : ['element_design'];\n\nexport const WHATS_NEW_CONFIGS = {\n whats_new_group_approval: {\n startDate: {\n year: '2023',\n month: 'April',\n day: '23'\n },\n popupDurationInDays: 30\n },\n whats_new_team_approval: {\n startDate: {\n year: '2023',\n month: 'April',\n day: '23'\n },\n popupDurationInDays: 30\n },\n whats_new_pdf_elements: {\n startDate: {\n year: '2022',\n month: 'May',\n day: '25'\n },\n popupDurationInDays: 30\n },\n whats_new_sign_element: {\n startDate: {\n year: '2022',\n month: 'October',\n day: '31'\n },\n popupDurationInDays: 30\n },\n whats_new_element_design: {\n startDate: {\n year: '2022',\n month: 'November',\n day: '11'\n },\n popupDurationInDays: 30\n },\n whats_new_workflow_release: {\n startDate: {\n year: '2024',\n month: 'October',\n day: '21'\n },\n popupDurationInDays: 30\n }\n};\n","import React from 'react';\nimport { WhatsNewModalDialogue } from '@jotforminc/jotform-common';\nimport { createRoot } from 'react-dom/client';\nimport { CURRENT_WHATS_NEW, WHATS_NEW_PREFIX } from '../constants/whatsNewConstant';\nimport WatchmanRecorder from './WatchmanRecorder';\n\nconst openWhatsNewModal = () => {\n const whatsNewKey = (() => {\n if (Array.isArray(CURRENT_WHATS_NEW)) {\n return CURRENT_WHATS_NEW.map(whatsNewEach => [WHATS_NEW_PREFIX, whatsNewEach].join('_'));\n }\n\n return [WHATS_NEW_PREFIX, CURRENT_WHATS_NEW].join('_');\n })();\n return new Promise(() => {\n const container = document.getElementById('workflow-utils-root');\n const root = createRoot(container);\n const handleClose = () => {\n WatchmanRecorder.trackEvent('whatsNewModal-click');\n if (global?.localStorage) global?.localStorage?.setItem(whatsNewKey, '1');\n root.unmount();\n };\n\n root.render(\n \n );\n });\n};\n\nexport default openWhatsNewModal;\n","import moment from 'moment-timezone';\nimport { getUrlParameter } from '@jotforminc/utils';\nimport { CURRENT_WHATS_NEW, WHATS_NEW_PREFIX, WHATS_NEW_CONFIGS } from '../constants/whatsNewConstant';\n\nconst getWhatsNewKey = () => CURRENT_WHATS_NEW?.map(val => `${WHATS_NEW_PREFIX}_${val}`) || `${WHATS_NEW_PREFIX}_${CURRENT_WHATS_NEW}`;\nconst whatsNewKeys = getWhatsNewKey();\n\nexport const hasUnreadWhatsNew = () => {\n if (getUrlParameter('showWhatsNew')) {\n return true;\n }\n if (Array.isArray(whatsNewKeys)) {\n const isReadValues = whatsNewKeys.map(whatsNewKey => {\n const neverShown = global?.localStorage?.getItem(whatsNewKeys) !== '1';\n const currentFeature = WHATS_NEW_CONFIGS[whatsNewKey];\n const stringStartDate = Object.values(currentFeature?.startDate).join(' ');\n const timeHasCome = moment().isAfter(moment(stringStartDate));\n return neverShown && timeHasCome;\n });\n return isReadValues.every(val => val === true);\n }\n};\n\nexport const getTimeWindowForWhatsNew = () => {\n if (getUrlParameter('showWhatsNew')) {\n return true;\n }\n if (Array.isArray(whatsNewKeys)) {\n const isTimeGone = whatsNewKeys.map(whatsNewKey => {\n const currentFeature = WHATS_NEW_CONFIGS[whatsNewKey];\n const stringStartDate = Object.values(currentFeature?.startDate).join(' ');\n const timeHasCome = moment().isAfter(moment(stringStartDate));\n const isExpiredFeature = moment(stringStartDate)\n .add(currentFeature.popupDurationInDays, 'days')\n .isBefore(moment());\n return timeHasCome && !isExpiredFeature;\n });\n return isTimeGone.every(val => val === true);\n }\n};\n","/* eslint-disable complexity */\n/* eslint-disable max-statements */\nimport isEmpty from 'lodash/isEmpty';\nimport { put, select, delay } from 'redux-saga/effects';\nimport { EMAIL_TEMPLATE_TYPES } from '@jotforminc/email-wizards';\n\nimport * as Selectors from '../../store/selectors';\nimport { updateElement as updateElementAction } from '../../actionCreators';\nimport PropertyValidator from '../../utils/propertyValidator';\n\nimport {\n ApprovalEmailSubTypes, AssignEmailSubTypes, AssignFormEmailSubTypes, AssignTaskEmailSubTypes\n} from '../../constants/emailSubTypes';\nimport { createWorkflowForm, fetchElement, fetchFormQuestionsFromAPI } from '../../modules/api';\nimport {\n FETCH_ELEMENT, FORM_FETCHING, SET_INTEGRATION_TYPE, SET_INTERNAL_FORM_ID, SET_LEFT_PANEL_DEFAULT_TAB, SET_LEFT_PANEL_VISIBILITY, SET_UI_INTERACTION, UPDATE_ELEMENT_WITHOUT_REQUEST\n} from '../../store/actionTypes';\nimport { normalizeElementFromAPIData, retryAction } from '../helpers';\nimport { DEFAULT_FEATURES, ESSENTIAL_ELEMENT_PROPS } from '../../constants/features';\nimport { isPDFPasswordRequiredOnHIPAA } from '../../constants/helper';\n\nexport function* removeOutcome({ ownerElementID, outcomeID }) {\n const ownerOutcomes = yield select(Selectors.getOutcomesByElementID(ownerElementID));\n const newOutcomes = ownerOutcomes.filter(({ id }) => id !== outcomeID);\n yield put(updateElementAction({ elementID: ownerElementID, outcomes: newOutcomes }));\n}\n\nexport function* updateEmailSettings({\n elementID, emailType, emailSubType, emailData\n}) {\n const element = yield select(Selectors.getElementByID(elementID));\n\n const dirtifyData = data => ({ ...data, isDirty: 'Yes' });\n\n const emptyAttachment = { name: '', url: '', type: '' };\n let updatedData;\n\n if (typeof emailData.attachment === 'object' && isEmpty(emailData.attachment)) {\n // eslint-disable-next-line no-param-reassign\n emailData.attachment = emptyAttachment;\n }\n switch (emailType) {\n case EMAIL_TEMPLATE_TYPES.WORKFLOW_SEND_EMAIL_GENERAL:\n updatedData = dirtifyData(emailData);\n if (isPDFPasswordRequiredOnHIPAA() && element?.passwordEnabled && (element?.passwordEnabled === '0' || updatedData?.passwordEnabled === '0')) {\n updatedData = {\n ...updatedData,\n passwordEnabled: '1'\n };\n break;\n }\n break;\n case EMAIL_TEMPLATE_TYPES.WORKFLOW_APPROVE_START: {\n const isApprovalRequestEmail = emailSubType === ApprovalEmailSubTypes.APPROVAL_REQUEST;\n const isApprovalReminderEmail = emailSubType === ApprovalEmailSubTypes.APPROVAL_REMINDER;\n const { to, ...rest } = emailData;\n\n if (isApprovalReminderEmail) {\n const preparedReminderProps = {\n reminder: {\n ...element.reminder,\n customizeReminder: {\n ...element.reminder.customizeReminder,\n customReminderEmail: {\n ...element?.reminder?.customizeReminder?.customReminderEmail,\n ...isApprovalReminderEmail ? dirtifyData({ ...rest }) : { ...rest }\n }\n }\n }\n };\n updatedData = {\n approver: to,\n ...preparedReminderProps\n };\n break;\n }\n\n const preparedApprovalProps = {\n approvalEmail: {\n email: {\n ...element.approvalEmail.email,\n ...isApprovalRequestEmail ? dirtifyData({ ...rest }) : { ...rest }\n }\n }\n };\n updatedData = {\n approver: to,\n ...preparedApprovalProps\n };\n break;\n }\n case EMAIL_TEMPLATE_TYPES.WORKFLOW_ASSIGN_TASK: {\n const { to, ...rest } = emailData;\n\n const isAssignTaskReminder = emailSubType === AssignTaskEmailSubTypes.ASSIGN_TASK_REMINDER;\n if (isAssignTaskReminder) {\n const preparedReminderProps = {\n reminder: {\n ...element.reminder,\n customizeReminder: {\n ...element.reminder.customizeReminder,\n customReminderEmail: { ...dirtifyData(emailData) }\n }\n }\n };\n updatedData = {\n assignTaskEmail: element?.assignTaskEmail,\n ...preparedReminderProps\n };\n break;\n }\n\n const preparedAssignTaskProps = {\n assignTaskEmail: {\n email: {\n ...element.assignTaskEmail.email,\n ...dirtifyData({ ...rest })\n }\n }\n };\n updatedData = {\n ...preparedAssignTaskProps\n };\n break;\n }\n case EMAIL_TEMPLATE_TYPES.WORKFLOW_ASSIGN_START: {\n const isAssignNotification = emailSubType === AssignEmailSubTypes.ASSIGN_NOTIFICATION;\n const isAssignReminder = emailSubType === AssignEmailSubTypes.ASSIGN_REMINDER;\n const { to, ...rest } = emailData;\n\n const preparedNotificationProps = {\n assignEmail: {\n email: {\n ...dirtifyData(emailData)\n }\n }\n };\n\n const preparedReminderProps = {\n reminder: {\n ...element.reminder,\n customizeReminder: {\n ...element.reminder.customizeReminder,\n customReminderEmail: isAssignReminder ? dirtifyData({ ...rest }) : { ...rest }\n }\n }\n };\n\n updatedData = {\n ...(isAssignNotification ? preparedNotificationProps : {}),\n ...(isAssignReminder ? preparedReminderProps : {})\n };\n break;\n }\n case EMAIL_TEMPLATE_TYPES.WORKFLOW_ASSIGN_FORM_NOTIFICATION: {\n const isAssignReminder = emailSubType === AssignFormEmailSubTypes.ASSIGN_FORM_REMINDER;\n if (isAssignReminder) {\n const preparedReminderProps = {\n reminder: {\n ...element.reminder,\n customizeReminder: {\n ...element.reminder.customizeReminder,\n customReminderEmail: { ...dirtifyData(emailData) }\n }\n }\n };\n updatedData = {\n assignFormEmail: element?.assignFormEmail,\n assignee: element?.assignee,\n ...preparedReminderProps\n };\n break;\n }\n updatedData = {\n assignFormEmail: {\n email: {\n ...dirtifyData(emailData)\n }\n },\n assignee: element?.assignee,\n reminder: element?.reminder\n };\n break;\n }\n default:\n return;\n }\n\n try {\n const isValid = PropertyValidator.validate(element.type, updatedData);\n if (!isValid) {\n console.group('PROPERTY UPDATE INVALID');\n console.log({ errors: PropertyValidator.errors });\n console.groupEnd();\n }\n } catch (error) {\n console.group('PROPERTY UPDATE ERROR');\n console.log({ error });\n console.groupEnd();\n }\n yield put(updateElementAction({ ...updatedData, elementID }));\n}\n\nexport function* fetchElementData({ elementID }) {\n if (!DEFAULT_FEATURES[ESSENTIAL_ELEMENT_PROPS]) {\n return;\n }\n const loaded = yield select(Selectors.isLoadedByElementID(elementID));\n if (loaded) {\n return;\n }\n const workflowID = yield select(Selectors.getWorkflowID);\n try {\n const data = yield retryAction(fetchElement, workflowID, elementID);\n yield put({ type: FETCH_ELEMENT.SUCCESS, data: normalizeElementFromAPIData(data) });\n } catch (err) {\n console.error(err);\n }\n}\n\nexport function* handleWorkflowForm({ data }) {\n const { elementID } = data;\n const workflowID = yield select(Selectors.getWorkflowID);\n yield put({ type: FORM_FETCHING, data });\n let { internalFormID } = yield select(Selectors.getElementByID(elementID));\n if (!internalFormID) {\n const { id, form } = yield retryAction(createWorkflowForm, workflowID, elementID);\n const questions = yield retryAction(fetchFormQuestionsFromAPI, id);\n internalFormID = id;\n yield put({ type: UPDATE_ELEMENT_WITHOUT_REQUEST, data: { id: elementID, internalFormID, resourceObject: { ...form, questions: Object.values(questions) } } });\n }\n yield put({ type: SET_INTERNAL_FORM_ID, data: { internalFormID } });\n}\n\nexport function* handleIntegrationRoute({ data }) {\n const { integrationType, history } = data;\n const actionDelay = 1500;\n yield put({ type: SET_UI_INTERACTION, data: false });\n yield delay(actionDelay);\n yield put({ type: SET_LEFT_PANEL_VISIBILITY, data: false });\n yield delay(actionDelay);\n const workflowID = yield select(Selectors.getWorkflowID);\n history.push(`/${workflowID}/build`);\n yield delay(actionDelay);\n yield put({ type: SET_LEFT_PANEL_VISIBILITY, data: true });\n yield delay(actionDelay);\n yield put({ type: SET_LEFT_PANEL_DEFAULT_TAB, data: 'Integrations' });\n yield delay(actionDelay / 2);\n yield put({ type: SET_INTEGRATION_TYPE, data: integrationType });\n}\n","import React from 'react';\nimport { toast } from 'react-toastify';\n\nimport FatalError from './FatalError';\n\nexport const ElementLimitToastError = message => {\n toast.error(\n ,\n {\n position: toast.POSITION.TOP_RIGHT,\n draggable: false,\n autoClose: false,\n closeOnClick: false,\n closeButton: false\n });\n};\n","import { call, put, select } from 'redux-saga/effects';\n\nimport omit from 'lodash/omit';\nimport isEqual from 'lodash/isEqual';\nimport * as API from '../../modules/api';\nimport * as Selectors from '../../store/selectors';\nimport * as ActionTypes from '../../store/actionTypes';\nimport { queuedFetchCall, createNodeFromData } from '../helpers';\nimport { flattenProperties, handleFlattenedProperties } from '../../utils';\nimport filterLinkFromOutcomes from '../../utils/diagram/filterLinkFromOutcomes';\nimport CanvasEngineBuilder from '../../modules/Canvas/V1/CanvasEngineBuilder';\nimport { isElementWithOutcome } from '../../utils/diagram/isElementWithOutcome';\nimport calculateSelectionRange from '../../utils/diagram/calculateSelectionRange';\n\nimport { elementTypes } from '../../constants/elementTypes';\nimport { PADDING_FOR_SELECTION_BOX } from '../../styles/variables';\nimport { getElementDimensionsByType } from '../../utils/diagram/getElementDimensions';\nimport { DEFAULT_FEATURES, WORKFLOW_V2 } from '../../constants/features';\nimport { ElementLimitToastError } from '../../components/Toast/ElementLimitToastError';\n\nexport function getElementLinkIDs({ element }) {\n const links = element.getLinks();\n const linkIDs = links.map(link => link.getID());\n return linkIDs;\n}\n\nexport function getLinkedPlacehorderIDs({ element }) {\n const links = element.getLinks();\n const linkTargetElements = links.map(link => link.getTargetElement());\n const linkToPlaceholderElements = linkTargetElements.filter(\n targetElement => targetElement.getType() === elementTypes.PLACEHOLDER\n && targetElement.getID() !== element.getID()\n && !targetElement.getLinksByPortType('in').find(link => link.getOwnerElement() !== element)\n );\n const placeholderElementIDs = linkToPlaceholderElements.map(targetElement => targetElement.getID());\n return placeholderElementIDs;\n}\n\nexport function getFilteredElementOutcomeInfo({ element }) {\n const links = element.getLinksByPortType('in');\n const linksWithOutcomes = links.filter(link => isElementWithOutcome(link.getOwnerElement().getType()));\n const elementsInfo = linksWithOutcomes.map(link => ({\n id: link.getOwnerElement().getID(),\n outcomes: filterLinkFromOutcomes({ outcomes: link.getOwnerElement().getOutcomes(), linkID: link.getID() })\n }));\n return elementsInfo;\n}\n\nfunction typeSpecificUpdates(element, data) {\n const type = element.getType();\n if (type === elementTypes.END_POINT && data.subType) {\n const newDimensions = getElementDimensionsByType({ type: element.getType(), subType: data.subType });\n element.setDimensions(newDimensions);\n element.updatePortPositions();\n }\n}\n\nexport function* applyElementActions(elementActions = []) {\n let isSelectedElementPositionUpdated = false;\n for (let i = 0; i < elementActions.length; i++) {\n const { action, data, elementID } = elementActions[i];\n switch (action) {\n case 'create': {\n const {\n x, y, element_id: id, type, focusOnCreate, subType\n } = data;\n const node = yield createNodeFromData({\n id, type, subType, position: { x: parseFloat(x), y: parseFloat(y) }\n });\n CanvasEngineBuilder.engine.getModel().clearSelection();\n\n const isPlaceholder = node.getType() === elementTypes.PLACEHOLDER;\n node.setNew(!isPlaceholder);\n\n if (focusOnCreate) {\n CanvasEngineBuilder.zoomToFitScreen([node]);\n }\n break;\n }\n case 'delete': {\n const element = CanvasEngineBuilder.getNode(elementID);\n if (element) {\n element.remove();\n }\n break;\n }\n case 'update': {\n const element = CanvasEngineBuilder.getNode(elementID);\n if (element) {\n if (data.x && data.y) {\n element.setPosition({ x: parseFloat(data.x), y: parseFloat(data.y) });\n if (element.isSelected()) {\n isSelectedElementPositionUpdated = true;\n }\n }\n\n if (data.outcomes) {\n element.setOutcomes(data.outcomes);\n }\n typeSpecificUpdates(element, data);\n }\n break;\n }\n default:\n break;\n }\n }\n if (isSelectedElementPositionUpdated) {\n const [selectionModel] = CanvasEngineBuilder.getSelectionBoxes();\n if (selectionModel) {\n const selectedNodes = CanvasEngineBuilder.getSelectedNodes();\n const { topLeft, bottomRight } = calculateSelectionRange(selectedNodes);\n selectionModel.setDimensions({\n width: bottomRight.x - topLeft.x + (PADDING_FOR_SELECTION_BOX * 2),\n height: bottomRight.y - topLeft.y + (PADDING_FOR_SELECTION_BOX * 2)\n });\n selectionModel.setPosition({\n x: topLeft.x - PADDING_FOR_SELECTION_BOX,\n y: topLeft.y - PADDING_FOR_SELECTION_BOX\n });\n }\n }\n}\n\nexport function applyLinkActions(linkActions = []) {\n for (let i = 0; i < linkActions.length; i++) {\n const { action, data, linkID } = linkActions[i];\n switch (action) {\n case 'create': {\n const link = CanvasEngineBuilder.addLinkNodeSilent(data);\n if (link) {\n link.updatePoints();\n }\n break;\n }\n case 'delete': {\n CanvasEngineBuilder.removeLinkNode(linkID);\n break;\n }\n case 'update': {\n const link = CanvasEngineBuilder.getLink(linkID);\n if (link) {\n if (data.points) {\n link.updatePoints();\n }\n\n if (data.fromElement && data.fromPortName) {\n const node = CanvasEngineBuilder.getNode(data.fromElement);\n const sourcePort = node.getPorts()[data.fromPortName];\n const oldSourcePort = link.getSourcePort();\n if (oldSourcePort !== sourcePort) {\n link.setSourcePort(sourcePort);\n }\n }\n\n if (data.toElement && data.toPortName) {\n const node = CanvasEngineBuilder.getNode(data.toElement);\n const targetPort = node.getPorts()[data.toPortName];\n const oldTargetPort = link.getTargetPort();\n if (oldTargetPort !== targetPort) {\n link.setTargetPort(targetPort);\n link.updatePoints();\n }\n }\n\n if (data.labels) {\n link.setLabels([]);\n data.labels.forEach(label => link.addLabel(label));\n }\n }\n break;\n }\n default:\n break;\n }\n }\n}\n\nfunction* updateFlowForms() {\n const nodes = yield select(Selectors.getNodes);\n const nodesWithForms = nodes.filter(e => e.type === 'workflow_start_point' || e.type === 'workflow_assign_form');\n const flowForms = nodesWithForms.map(e => e?.resourceObject).filter(e => e);\n const currentFlowForms = yield select(Selectors.FormSelectors.getFlowForms);\n if (!isEqual(flowForms, currentFlowForms)) yield put({ type: ActionTypes.SET_FLOW_FORMS, data: { flowForms } });\n}\n\nexport function* applyUpdateTree(payload) {\n const isNewCanvas = DEFAULT_FEATURES[WORKFLOW_V2];\n if (!isNewCanvas) {\n CanvasEngineBuilder.disableRepaint();\n }\n const workflowID = yield select(Selectors.getWorkflowID);\n\n const [deleteLinkActions, createAndUpdateLinkActions] = (payload.links || []).reduce(([tmpDeleteActions, tmpCreateAndUpdateActions], action) => {\n const { action: actionType } = action;\n if (actionType === 'delete') {\n tmpDeleteActions.push(action);\n } else {\n tmpCreateAndUpdateActions.push(action);\n }\n\n return [tmpDeleteActions, tmpCreateAndUpdateActions];\n }, [[], []]);\n\n if (!isNewCanvas) {\n yield applyLinkActions(deleteLinkActions);\n yield applyElementActions(payload.elements);\n yield applyLinkActions(createAndUpdateLinkActions);\n CanvasEngineBuilder.enableRepaint();\n CanvasEngineBuilder.repaintCanvas();\n }\n\n const { links = [], elements = [] } = payload;\n // our API accepts some properties as flattened\n const flattenedPayload = {\n links,\n elements: elements.map(({ data, ...rest }) => ({\n ...rest,\n data: flattenProperties(omit(data, ['resourceObject']))\n }))\n };\n\n yield updateFlowForms();\n\n yield call(queuedFetchCall, {\n apiCall: call(API.updateTree, workflowID, flattenedPayload),\n callback: response => {\n if (response.responseCode === 422) {\n return ElementLimitToastError(response.message);\n }\n\n const { result } = response;\n\n return put({\n type: ActionTypes.UPDATE_TREE.SUCCESS,\n data: {\n ...result,\n elements: result.elements.map(({ data, ...rest }, i) => (\n {\n ...rest,\n data: handleFlattenedProperties({ ...flattenedPayload.elements[i].data, ...data })\n }\n ))\n }\n });\n }\n });\n}\n","import calculatePointDelta from './calculatePointDelta';\nimport findClosestPoint from '../math/findClosestPoint';\nimport { isPathsIntersect } from '../geometry/intersection';\n\nimport { CURVE_RADIUS, LINK_OFFSET } from '../../styles/variables';\n\nconst MINIMUM_DELTA_FOR_NEW_POINT = CURVE_RADIUS * 2;\n\nexport const getInBetweenPosition = (sourcePosition, targetPosition) => {\n const deltaX = Math.abs(sourcePosition.x - targetPosition.x);\n const deltaY = Math.abs(sourcePosition.y - targetPosition.y);\n return deltaX > deltaY ? { x: sourcePosition.x, y: targetPosition.y } : { x: targetPosition.x, y: sourcePosition.y };\n};\n\nconst isPathInstersectWithObstacle = ({ path, obstacle }) => {\n const intersectingPath = Object.values(obstacle).find(sidePath => {\n const isIntersect = isPathsIntersect(path, sidePath);\n return isIntersect;\n });\n\n return intersectingPath;\n};\n\nconst generatePointsByIntersectingPath = ({ path, intersectingPath }) => {\n const [sourcePosition, targetPosition] = path;\n const { closestPoint } = findClosestPoint(intersectingPath, sourcePosition);\n return [\n { x: closestPoint.x + LINK_OFFSET, y: sourcePosition.y },\n { x: closestPoint.x + LINK_OFFSET, y: targetPosition.y }\n ];\n};\n\nconst generateInBetweenPositions = ({\n obstacles = [],\n sourcePosition,\n targetPosition\n}) => {\n const shortestPath = [sourcePosition, targetPosition];\n\n if (obstacles.length > 0) {\n const newPoints = obstacles.reduce((prev, obstacle) => {\n if (prev) {\n return prev;\n }\n\n const intersectingPath = isPathInstersectWithObstacle({ path: shortestPath, obstacle });\n if (!intersectingPath) {\n return false;\n }\n\n const additionalPoints = generatePointsByIntersectingPath({ path: shortestPath, intersectingPath });\n const [additionalPoint1, additionalPoint2] = additionalPoints;\n const isNewPointsIntersectWithObstacles = [\n [sourcePosition, additionalPoint1],\n [additionalPoint2, targetPosition]\n ].find(path => obstacles.find(tempObstacle => isPathInstersectWithObstacle({ path, obstacle: tempObstacle })));\n\n if (!isNewPointsIntersectWithObstacles) {\n return additionalPoints;\n }\n\n return false;\n }, false);\n\n if (newPoints) {\n return newPoints;\n }\n }\n\n const delta = calculatePointDelta(sourcePosition, targetPosition);\n if (Math.abs(delta.x) < MINIMUM_DELTA_FOR_NEW_POINT || Math.abs(delta.y) < MINIMUM_DELTA_FOR_NEW_POINT) {\n return [];\n }\n\n const inBetweenPosition = getInBetweenPosition(sourcePosition, targetPosition);\n return [inBetweenPosition];\n};\n\nconst generatePathPositions = ({ positions, obstacles }) => {\n if (positions.length < 2) {\n return positions;\n }\n\n const [firstPosition, ...remainingPositions] = positions;\n return remainingPositions.reduce((prevPositions, targetPosition) => {\n const [sourcePosition] = prevPositions.slice(-1);\n const inBetweenPositions = generateInBetweenPositions({ sourcePosition, targetPosition, obstacles });\n return [\n ...prevPositions,\n ...inBetweenPositions,\n targetPosition\n ];\n }, [firstPosition]);\n};\n\nexport default generatePathPositions;\n","import generateRectangle from './generateRectangle';\nimport generatePathPositions from './generatePathPositions';\nimport { getElementDimensionsByType } from './getElementDimensions';\nimport { getPortCenterPositionByName, getPortOffsettedPositionByName } from './getPortPosition';\n\nconst getPortPositionAndLinesForElement = ({ elementInfo, portName }) => {\n const dimensions = getElementDimensionsByType({ type: elementInfo.type, subType: elementInfo.subType });\n const lines = generateRectangle({ ...dimensions, point: elementInfo.position });\n const portPositions = [\n getPortCenterPositionByName({ ...dimensions, elementPosition: elementInfo.position, portName }),\n getPortOffsettedPositionByName({ ...dimensions, elementPosition: elementInfo.position, portName })\n ];\n\n return { lines, portPositions };\n};\n\nconst generatePathBetweenElements = ({\n fromElementInfo,\n fromPortName,\n toElementInfo,\n toPortName\n}) => {\n const { lines: fromLines, portPositions: fromPortPositions } = getPortPositionAndLinesForElement({ elementInfo: fromElementInfo, portName: fromPortName });\n const { lines: toLines, portPositions: toPortPositions } = getPortPositionAndLinesForElement({ elementInfo: toElementInfo, portName: toPortName });\n\n const points = generatePathPositions({\n positions: [...fromPortPositions, ...toPortPositions.slice().reverse()],\n obstacles: [fromLines, toLines]\n });\n\n return points;\n};\n\nexport default generatePathBetweenElements;\n","/* eslint-disable max-lines */\n/* eslint-disable complexity */\n/* eslint-disable */\nimport uniqBy from 'lodash/uniqBy';\nimport sortBy from 'lodash/sortBy';\nimport unionBy from 'lodash/unionBy';\nimport isEmpty from 'lodash/isEmpty';\nimport isEqual from 'lodash/isEqual';\nimport { v4 as uuid } from 'uuid';\nimport {\n select, call, all, put\n} from 'redux-saga/effects';\nimport { EMAIL_TEMPLATE_TYPES } from '@jotforminc/email-wizards';\nimport { t } from '@jotforminc/translation';\nimport { handleCustomNavigation } from '@jotforminc/utils';\nimport { IntegrationHelper, deleteIntegrationAction } from '@jotforminc/integrations';\n\nimport * as API from '../../modules/api';\nimport CookieUtils from '../../utils/cookie';\nimport CONFIGURATION from '../../constants/config';\nimport * as Selectors from '../../store/selectors';\nimport * as ActionTypes from '../../store/actionTypes';\nimport CanvasEngineBuilder from '../../modules/Canvas/V1/CanvasEngineBuilder';\n\nimport { elementSubTypes, elementTypes } from '../../constants/elementTypes';\nimport { END_POINT_WIDGET_WIDTH, PORT_SVG_HALF_WIDTH, TERMINATE_WIDGET_WIDTH } from '../../styles/variables';\nimport findClosestPoint from '../../utils/math/findClosestPoint';\nimport { generateActionButtonsForElement } from '../../utils/emailUtils';\nimport WORKFLOW_ELEMENT_MODELS from '../../constants/workflowElementModels';\nimport { isElementWithOutcome } from '../../utils/diagram/isElementWithOutcome';\nimport filterLinkFromOutcomes from '../../utils/diagram/filterLinkFromOutcomes';\nimport { getPortCenterPositionByName } from '../../utils/diagram/getPortPosition';\nimport { serializeDiagramFromLinkNode } from '../../utils/diagram/diagramToWorkflow';\nimport generatePathBetweenElements from '../../utils/diagram/generatePathBetweenElements';\nimport { getElementLinkIDs, getLinkedPlacehorderIDs, getFilteredElementOutcomeInfo } from './canvas';\nimport { getNewElementPosition, getNextToElementPosition } from '../../utils/diagram/getElementPosition';\nimport {\n retryAction, putUndoableAction, getNextElementID,\n generateDefaultEmail, generateDefaults, generateDefaultEmailProps, findMostSuitableElements,\n normalizeQuestionsFromAPIData\n} from '../helpers';\nimport { fixApprovalEmailsContent } from '../../utils/fixEmailOutcomes';\nimport browserHelper from '../../utils/browserHelper';\nimport {\n DEFAULT_FEATURES, DELETED_PDF_LOGIC, SEND_NOTIFICATION, ESSENTIAL_ELEMENT_PROPS, REQUIRE_COMMENT, WORKFLOW_V2,\n CANVAS_DELETE_MIDDLE_NODE,\n WORKFLOW_RELEASED\n} from '../../constants/features';\nimport { signupModalFlow } from '../ui';\nimport { ApprovalEmailSubTypes, AssignFormEmailSubTypes, AssignTaskEmailSubTypes } from '../../constants/emailSubTypes';\nimport { filterForDeletedPDFArray } from '../../components/MultipleFormPDF/helper';\nimport { isPDFPasswordRequiredOnHIPAA } from '../../constants/helper';\nimport { isIntegrationElement } from '../../utils';\nimport { linkAccesor, nodeAccesor } from './temporaryCanvasBuilderAdapter';\nimport { getAllIntegrationsDetails } from '@jotforminc/integration-constants';\n\n\nconst isNewCanvas = DEFAULT_FEATURES[WORKFLOW_V2];\nconst isWorkflowReleased = DEFAULT_FEATURES[WORKFLOW_RELEASED];\n\n\nexport function* setWorkflowResource({\n elementID, resourceType, resourceID, openBuilder, forPDF\n}) {\n const workflowID = yield select(Selectors.getWorkflowID);\n const { type } = yield select(Selectors.getElementByID(elementID));\n const isEntryPoint = type === elementTypes.START_POINT;\n const [formFetcher, questionsFetcher] = isEntryPoint\n ? [API.fetchForm, API.fetchFormQuestions]\n : [API.fetchFormFromAPI, API.fetchFormQuestionsFromAPI];\n const payload = {\n links: [],\n elements: [{\n elementID,\n action: 'update',\n data: {\n resourceID,\n resourceType,\n element_id: elementID\n }\n }]\n };\n\n if (resourceType === 'FORM') {\n if (openBuilder) {\n try {\n handleCustomNavigation(`/build/${resourceID}${forPDF ? '/#importPDF' : ''}`);\n } catch (e) {\n console.log('error opening builder', e);\n }\n }\n\n const [form, questions] = yield all([\n retryAction(formFetcher, resourceID),\n retryAction(questionsFetcher, resourceID)\n ]);\n\n payload.elements[0].data.resourceObject = { ...form, questions: sortBy(Object.values(questions), ({ order }) => parseInt(order, 10)) };\n }\n\n yield all([\n put({ type: ActionTypes.UPDATE_TREE.REQUEST, data: payload })\n ]);\n\n if (isEntryPoint) {\n yield initializeElementEmails();\n yield retryAction(API.setWorkflowResource, workflowID, { resourceType, resourceID });\n }\n}\n\nexport function* initializeElementEmails() {\n const elements = yield select(Selectors.getNodes);\n const emailGenerators = elements.map(element => generateDefaultEmailProps({ ...element, otherProps: {subType: element?.subType}, onlyContent: true }));\n const elementEmailProps = yield all(emailGenerators);\n const elementEmailPayloads = elementEmailProps.reduce((tmpElementEmailPayloads, emailProps, index) => {\n if (isEmpty(emailProps)) {\n return tmpElementEmailPayloads;\n }\n\n const element = elements[index];\n if (element.isDirty === 'Yes') {\n return tmpElementEmailPayloads;\n }\n\n const cleanEmailProps = Object.keys(emailProps)\n .filter(propKey => emailProps[propKey]?.email?.isDirty !== 'Yes')\n .reduce((tmpCleanEmailProps, propKey) => ({ ...tmpCleanEmailProps, [propKey]: emailProps[propKey] }), {});\n\n const elementPayload = {\n action: 'update',\n elementID: element.id,\n data: { ...cleanEmailProps, element_id: element.id }\n };\n\n return [...tmpElementEmailPayloads, elementPayload];\n }, []);\n\n if (elementEmailPayloads.length === 0) {\n return;\n }\n\n const emailPayload = { links: [], elements: elementEmailPayloads };\n yield put({ type: ActionTypes.UPDATE_TREE.REQUEST, data: emailPayload });\n}\n\nexport function* removeWorkflowElement({ elementID }) {\n const payload = yield prepareRemoveWorkflowElementActions({ elementID });\n yield putUndoableAction({ type: ActionTypes.UPDATE_TREE.REQUEST, data: payload });\n}\n\nexport function* removeMultipleWorkflowElement(data) {\n // remove start_point\n const removableDataList = data.filter(id => id !== 1);\n const payload = yield prepareRemoveWorkflowElementsActions(removableDataList, true);\n yield putUndoableAction({ type: ActionTypes.UPDATE_TREE.REQUEST, data: payload });\n if (isNewCanvas) {\n yield put({ type: ActionTypes.DESELECT_ALL_ELEMENTS_V2 });\n }\n}\n\nexport function* updateWorkflowElement({ elementID, ...rest }) {\n let element;\n if (isNewCanvas) {\n element = yield select(Selectors.getElementByID(elementID));\n } else {\n element = CanvasEngineBuilder.getNode(elementID);\n }\n if (!element) {\n return;\n }\n\n const elementUpdateData = { element_id: elementID, ...rest };\n const interceptedElementUpdateData = yield interceptElementUpdateDataSideEffects({ element, elementUpdateData, ...rest });\n const linkUpdates = !isNewCanvas && rest.position\n ? element.getLinks().map(link => ({ action: 'update', linkID: link.getID(), data: { link_id: link.getID(), ...serializeDiagramFromLinkNode(link) } }))\n : [];\n\n const payload = {\n links: linkUpdates,\n elements: [{ action: 'update', elementID, data: interceptedElementUpdateData }]\n };\n\n yield putUndoableAction({ type: ActionTypes.UPDATE_TREE.REQUEST, data: payload });\n}\n\nexport function* updateMultipleElementsAndLinks(data) {\n if (isNewCanvas) {\n yield putUndoableAction({ type: ActionTypes.UPDATE_TREE.REQUEST, data: { elements: (data?.elements || []), links: (data?.links || []) } });\n return;\n }\n}\n// ! is Multiple\nexport function* updateMultipleWorkflowElement(data) {\n if (isNewCanvas) {\n const updatedElements = (data?.elements || []).map(e => ({ action: 'update', elementID: e.elementID, data: { ...e, element_id: e.elementID } }))\n yield putUndoableAction({ type: ActionTypes.UPDATE_TREE.REQUEST, data: { elements: updatedElements, links: (data.links || []) } });\n return;\n }\n const selectedElements = CanvasEngineBuilder.getSelectedNodes();\n\n if (!data?.length) {\n return;\n }\n\n const links = [];\n const elements = [];\n\n for (let i = 0; i < selectedElements.length; i++) {\n const element = selectedElements[i];\n const { elementID } = data[i];\n const elementUpdateData = { element_id: elementID, ...data[i] };\n\n const interceptedElementUpdateData = yield interceptElementUpdateDataSideEffects({ element, elementUpdateData, ...data[i] });\n\n const linkUpdates = data[i]?.position\n ? element.getLinks().map(link => ({ action: 'update', linkID: link.getID(), data: { link_id: link.getID(), ...serializeDiagramFromLinkNode(link) } }))\n : [];\n\n const elementsUpdates = [{ action: 'update', elementID, data: interceptedElementUpdateData }];\n\n links.push(...linkUpdates);\n elements.push(...elementsUpdates);\n }\n\n const payloads = {\n links,\n elements\n };\n yield putUndoableAction({ type: ActionTypes.UPDATE_TREE.REQUEST, data: payloads });\n}\n\nexport function* interceptElementUpdateDataSideEffects({ element, elementUpdateData, ...rest }) {\n const updateKeys = Object.keys(elementUpdateData);\n const elementType = isNewCanvas ? element.type : element.getType();\n switch (elementType) {\n case elementTypes.ASSIGN_TASK: {\n const isNameChanged = Boolean(rest.name);\n const hasInternalForm = Boolean(element?.internalFormID && element?.resourceObject);\n if (isNameChanged && hasInternalForm) {\n return { ...elementUpdateData, resourceObject: { ...element.resourceObject, title: rest.name }};\n }\n break;\n }\n case elementTypes.APPROVAL:\n const isOutcomesChanged = Boolean(rest.outcomes);\n const isReassignChanged = Boolean(rest.reassign);\n const isNameChanged = Boolean(rest.name);\n const hasInternalForm = Boolean(element?.internalFormID && element?.resourceObject);\n if (DEFAULT_FEATURES[SEND_NOTIFICATION] && updateKeys.includes('sendNotification') && elementUpdateData?.sendNotification === 'No') {\n return { ...elementUpdateData, requireLogin: 'Yes' };\n }\n if (isOutcomesChanged || isReassignChanged) {\n return yield addApprovalEmailUpdateData({ element, elementUpdateData });\n }\n if (!DEFAULT_FEATURES[REQUIRE_COMMENT] && updateKeys.includes('requireLogin') && elementUpdateData?.requireLogin === 'No') {\n const data = { element_id: elementUpdateData.element_id, comment: { commentRequired: 'No' } };\n return { ...elementUpdateData, ...data };\n }\n if (isNameChanged && hasInternalForm) {\n return { ...elementUpdateData, resourceObject: { ...element.resourceObject, title: rest.name }};\n }\n break;\n case elementTypes.ASSIGN_FORM:\n if (updateKeys.includes('formID') && !!elementUpdateData.formID) {\n const { formID } = elementUpdateData;\n const [form, questions] = yield all([\n retryAction(API.fetchFormFromAPI, formID),\n retryAction(API.fetchFormQuestionsFromAPI, formID)\n ]);\n const resourceObject = { ...form, questions: normalizeQuestionsFromAPIData(questions) };\n if (form?.paymentProps && (!element?.subType || element?.subType !== elementSubTypes.PAYMENT_FORM)){\n return { subType: elementSubTypes.PAYMENT_FORM, name: 'Payment Form', ...elementUpdateData, resourceObject }\n }\n return { ...elementUpdateData, resourceObject };\n }\n break;\n case elementTypes.SIGN_DOCUMENT:\n if (updateKeys.includes('documentID') && !!elementUpdateData.documentID) {\n try {\n const [signDocumentObject] = yield all([\n retryAction(API.fetchDocument, elementUpdateData.documentID)\n ]);\n return { ...elementUpdateData, signDocumentObject };\n } catch (e) {\n console.log(e);\n }\n }\n break;\n case elementTypes.SEND_EMAIL:\n if ((element?.options?.subType === elementSubTypes.SEND_PDF || element?.options?.subType === elementSubTypes.SEND_APPROVAL_REPORT) && elementUpdateData?.pdfDocuments) {\n const isNewLogicEnable = DEFAULT_FEATURES[DELETED_PDF_LOGIC];\n if (isNewLogicEnable && element?.options?.subType === elementSubTypes.SEND_PDF && elementUpdateData?.pdfDocuments?.length > 0) {\n const availablePDFsForAllForm = yield select(Selectors.getAvailablePDFsForAllFormIDs);\n const pdfValues = filterForDeletedPDFArray(elementUpdateData?.pdfDocuments, availablePDFsForAllForm);\n if (!isEqual(elementUpdateData?.pdfDocuments, pdfValues) && Array.isArray(pdfValues) && pdfValues?.length > 0) {\n return { ...elementUpdateData, pdfDocuments: pdfValues };\n }\n }\n if (elementUpdateData?.pdfDocuments?.length > 0) {\n return { ...elementUpdateData, pdfattachment: '1' };\n }\n if (elementUpdateData?.pdfDocuments?.length === 0) {\n return { ...elementUpdateData, pdfattachment: '0' };\n }\n }\n break;\n case elementTypes.END_POINT:\n if (isNewCanvas && elementUpdateData?.subType === elementSubTypes.END_POINT_TERMINATE) {\n return { ...elementUpdateData, width: TERMINATE_WIDGET_WIDTH}\n }\n if (isNewCanvas && elementUpdateData?.subType === elementSubTypes.END_POINT_PSEUDO) {\n return { ...elementUpdateData, width: END_POINT_WIDGET_WIDTH}\n }\n return elementUpdateData;\n default:\n break;\n }\n return elementUpdateData;\n};\n\nexport function* addWorkflowElementLeftPanel(data) {\n if (CookieUtils.readCookie(CONFIGURATION.ELEMENT_ADDED_COOKIE_NAME) !== 'yes') {\n CookieUtils.createCookie(CONFIGURATION.ELEMENT_ADDED_COOKIE_NAME, 'yes');\n }\n\n if (browserHelper.is('mobile')) {\n const isOpen = yield select(Selectors.getLeftPanelStatus);\n if (isOpen) {\n yield put({ type: ActionTypes.LEFT_PANEL_TOGGLED });\n }\n }\n\n const newElementProperties = { ...data };\n if (!isNewCanvas) {\n const [selectedNode] = CanvasEngineBuilder.getSelectedNodes();\n if (selectedNode && !data.position) {\n newElementProperties.position = getNextToElementPosition({ element: selectedNode });\n }\n }\n\n yield call(addWorkflowElement, newElementProperties);\n}\n\nexport function* duplicateWorkflowElement({ elementID }) {\n const value = yield select(Selectors.getElementByID(elementID));\n let element;\n if (!isNewCanvas) {\n element = CanvasEngineBuilder.getNode(elementID);\n } else {\n element = value;\n }\n const { id, type, selected, ...existingElement } = value;\n const position = getNextToElementPosition({ element });\n if (isElementWithOutcome(type)) {\n existingElement.outcomes = existingElement.outcomes?.map(({ linkID, ...outcome }) => outcome);\n }\n\n if (isIntegrationElement(existingElement?.subType)) {\n const {\n integrationID, mode, integrationAccountID, integrationAccountName, ...integrationElement\n } = existingElement;\n return yield call(addWorkflowElement, { ...integrationElement, type, position });\n }\n\n if (type && type === elementTypes.ASSIGN_FORM) {\n const {\n formID: assignedForm, resourceObject, assignee, prefillEnabled, prefillFormID, prefillNotEnabled, prefillSettings, ...elementProp\n } = existingElement;\n yield call(addWorkflowElement, { ...elementProp, type, position });\n } else {\n yield call(addWorkflowElement, { ...existingElement, type, position });\n }\n yield put({type: ActionTypes.DESELECT_ALL_ELEMENTS_V2});\n}\n\nexport function* addWorkflowElement({\n type, subType, position, replaceWithID, ...remainingProps\n}) {\n // We dont want guests to add sign document -> there's the same thing below\n const isGuest = yield select(Selectors.getIsGuest);\n if (isGuest && type === elementTypes.SIGN_DOCUMENT) {\n yield signupModalFlow();\n return;\n }\n\n if (replaceWithID) {\n return yield replaceWorkflowElement({\n elementToReplaceID: replaceWithID, newElementType: type, subType, remainingProps\n });\n }\n const newElementAction = yield prepareNewWorkflowElementAction({\n type, subType, position, ...remainingProps\n });\n yield putUndoableAction({ type: ActionTypes.UPDATE_TREE.REQUEST, data: { elements: [newElementAction] } });\n}\n\nexport function* duplicateMultipleWorkflowElement(data) {\n const selectedElemets = yield select(Selectors.getElementsByIDList(data));\n yield call(addMultipleWorkflowElement, selectedElemets);\n}\n\nexport function* addMultipleWorkflowElement(selectedElemets) {\n const newElementActions = [];\n\n for (let i = 0; i < selectedElemets.length; i++) {\n const element = selectedElemets[i];\n\n if (isElementWithOutcome(element.type)) {\n element.outcomes = yield element.outcomes?.map(({ linkID, ...outcome }) => outcome);\n }\n\n const nextElementId = yield call(getNextElementID);\n const position = yield getNextToElementPosition({ element: CanvasEngineBuilder.getNode(element.id) });\n const newElementAction = yield prepareNewWorkflowElementAction({\n ...element,\n id: nextElementId + i,\n position\n });\n\n yield newElementActions.push(newElementAction);\n }\n yield putUndoableAction({ type: ActionTypes.UPDATE_TREE.REQUEST, data: { elements: newElementActions } });\n}\n\nexport function* replaceWorkflowElementWithPlaceholder({ elementID }) {\n yield replaceWorkflowElement({ elementToReplaceID: elementID, newElementType: elementTypes.PLACEHOLDER });\n}\n\nexport function* replaceWorkflowPlaceholderWithElement({ oldElementID, newElementID }) {\n let oldElement;\n if (isNewCanvas) {\n oldElement = yield select(Selectors.getElementByID(oldElementID));\n oldElement = nodeAccesor(oldElement);\n } else {\n oldElement = CanvasEngineBuilder.getNode(oldElementID);\n }\n const oldElementPosition = oldElement.getPosition();\n const incomingLinkActions = oldElement.getLinksByPortType('in').map(link => {\n return {\n action: 'update',\n linkID: link.getID(),\n data: { ...serializeDiagramFromLinkNode(link), link_id: link.getID(), toElement: newElementID }\n };\n });\n const outgoingLinkActions = oldElement.getLinksByPortType('out').map(link => {\n return {\n action: 'update',\n linkID: link.getID(),\n data: { ...serializeDiagramFromLinkNode(link), link_id: link.getID(), fromElement: newElementID }\n };\n });\n\n const payload = {\n elements: [\n { action: 'delete', elementID: oldElementID, data: { element_id: oldElementID } },\n { action: 'update', elementID: newElementID, data: { element_id: newElementID, position: oldElementPosition, ...oldElementPosition } }\n ],\n links: [\n ...incomingLinkActions,\n ...outgoingLinkActions\n ]\n };\n\n yield putUndoableAction({ type: ActionTypes.UPDATE_TREE.REQUEST, data: payload });\n}\n\nexport function* prepareReplaceWorkflowElementActions({\n elementToReplaceID, newElementType, subType = null, outLinkIdsOfOutcomeElements = [], remainingProps\n}) {\n let element;\n if (isNewCanvas) {\n element = yield select(Selectors.getElementByID(elementToReplaceID));\n let links = yield select(Selectors.getElementLinks(+elementToReplaceID));\n links = links.map(linkAccesor);\n element = nodeAccesor(element);\n } else {\n element = CanvasEngineBuilder.getNode(elementToReplaceID);\n }\n\n if (!element) {\n return;\n }\n const position = element.getPosition();\n const incomingLinks = element.getLinksByPortType('in');\n // so that incoming and outgoing links do not conflict\n const outLinksFilteredIncomingLinks = (incomingLinks && incomingLinks?.length > 0)\n ? incomingLinks?.filter(link => outLinkIdsOfOutcomeElements?.indexOf(link?.getID()) === -1) : [];\n const outgoingLinks = element.getLinksByPortType('out');\n const newElementAction = yield prepareNewWorkflowElementAction({\n id: elementToReplaceID, position, type: newElementType, subType, ...remainingProps\n });\n\n if (isElementWithOutcome(element.getType()) && outgoingLinks.length > 0) {\n for (let i = 0; i < outgoingLinks.length; i++) {\n outgoingLinks[i].setLabels([]);\n outgoingLinks[i].addLabel('');\n }\n }\n\n if (isElementWithOutcome(newElementType) && outgoingLinks.length > 0) {\n const { data: { outcomes } } = newElementAction;\n for (let i = 0; i < outgoingLinks.length; i++) {\n if (!outcomes[i]) {\n break;\n }\n const outcome = outcomes[i];\n const link = outgoingLinks[i];\n outcome.linkID = link.getID();\n link.setLabels([]);\n link.addLabel(outcome.text || outcome.conditionValue);\n }\n\n newElementAction.data.outcomes = outcomes;\n }\n\n const linksToCreate = newElementType === elementTypes.END_POINT ? incomingLinks : [...outLinksFilteredIncomingLinks, ...outgoingLinks];\n const linksToDelete = newElementType === elementTypes.START_POINT ? outgoingLinks : [...outLinksFilteredIncomingLinks, ...outgoingLinks];\n const linkCreateActions = linksToCreate.reduce((prev, link) => [\n ...prev,\n { action: 'create', linkID: link.getID(), data: { link_id: link.getID(), ...serializeDiagramFromLinkNode(link) } }\n ], []);\n const linkDeleteActions = linksToDelete.reduce((prev, link) => [\n ...prev,\n { action: 'delete', linkID: link.getID(), data: { link_id: link.getID() } }\n ], []);\n\n const linkActions = [...linkDeleteActions, ...linkCreateActions];\n\n const payload = {\n links: linkActions,\n elements: [\n { action: 'delete', elementID: elementToReplaceID, data: { element_id: elementToReplaceID } },\n newElementAction\n ]\n };\n\n return payload;\n}\n\nexport function* replaceWorkflowElement({\n elementToReplaceID, newElementType, subType = null, remainingProps\n}) {\n const payload = yield prepareReplaceWorkflowElementActions({\n elementToReplaceID, newElementType, subType, remainingProps\n });\n yield putUndoableAction({ type: ActionTypes.UPDATE_TREE.REQUEST, data: payload });\n}\n\nexport function* addWorkflowPlaceholderForLink({ link }) {\n const { position, portName } = link.getPlaceholderPositionAndPort();\n const newElementAction = yield prepareNewWorkflowElementAction({ type: elementTypes.PLACEHOLDER, position });\n const fromElementInfo = yield select(Selectors.getElementByID(link.getOwnerElement().getID()));\n const { links, elements } = yield prepareNewWorkflowLinkActions({\n fromElementInfo,\n fromPortName: link.getSourcePort().getName(),\n toElementInfo: newElementAction.data,\n toPortName: portName\n });\n\n const payload = {\n links,\n elements: [\n ...elements,\n newElementAction\n ]\n };\n yield putUndoableAction({ type: ActionTypes.UPDATE_TREE.REQUEST, data: payload });\n}\n\nexport function* addWorkflowLink({ link }) {\n let payload;\n if (!isNewCanvas) {\n const [fromElementInfo, toElementInfo] = yield all([\n select(Selectors.getElementByID(link.getOwnerElement().getID())),\n select(Selectors.getElementByID(link.getTargetElement().getID()))\n ]);\n\n payload = yield prepareNewWorkflowLinkActions({\n toElementInfo,\n fromElementInfo,\n toPortName: link.getTargetPort().getName(),\n fromPortName: link.getSourcePort().getName()\n });\n } else {\n payload = {\n links: [\n {\n action: 'create',\n linkID: link.id,\n data: {\n ...link,\n link_id: link.id,\n type: 'default-link',\n labels: [{ justCreated: true, label: '' }]\n }\n }\n ],\n elements: []\n };\n }\n\n yield putUndoableAction({ type: ActionTypes.UPDATE_TREE.REQUEST, data: payload });\n}\n\nexport function* removeWorkflowLink({ id }) {\n const payload = yield prepareRemoveWorkflowLinkActions({ linkID: id });\n yield putUndoableAction({ type: ActionTypes.UPDATE_TREE.REQUEST, data: payload });\n}\n\nexport function* updateWorkflowLink({ link }) {\n const payload = {\n elements: [],\n links: [{ action: 'update', linkID: link.getID(), data: { link_id: link.getID(), ...serializeDiagramFromLinkNode(link) } }]\n };\n yield putUndoableAction({ type: ActionTypes.UPDATE_TREE.REQUEST, data: payload });\n}\n\nexport function* addWorkflowElementOntoLabel({\n type, subType = null, labelModel, actionType = null\n}) {\n // We dont want guests to add sign document -> there's the same thing above\n const isGuest = yield select(Selectors.getIsGuest);\n if (isGuest && type === elementTypes.SIGN_DOCUMENT) {\n yield signupModalFlow();\n return;\n }\n const createElementAction = yield prepareNewWorkflowElementAction({ type, subType, actionType });\n const Model = WORKFLOW_ELEMENT_MODELS[type];\n const dummyModel = new Model(createElementAction.data);\n const placeElementOntoLabelPayload = yield preparePlaceElementOntoLabelAction({ labelModel, model: dummyModel });\n const payload = {\n elements: [\n {\n ...createElementAction,\n data: {\n ...createElementAction.data,\n ...placeElementOntoLabelPayload.elements[0].data\n }\n },\n ...placeElementOntoLabelPayload.elements.slice(1)\n ],\n links: placeElementOntoLabelPayload.links\n };\n\n yield putUndoableAction({ type: ActionTypes.UPDATE_TREE.REQUEST, data: payload });\n}\n\nexport function* placeElementOntoLabel({ labelModel, model }) {\n const payload = yield preparePlaceElementOntoLabelAction({ labelModel, model });\n yield putUndoableAction({ type: ActionTypes.UPDATE_TREE.REQUEST, data: payload });\n}\n\nexport function* preparePlaceElementOntoLabelAction({ labelModel, model }) {\n const elementID = model.getID();\n const link = labelModel.getParent();\n const linkID = link.getID();\n const labelPosition = labelModel.getCenter();\n const portNames = Object.keys(model.getPorts());\n const elementPosition = getNewElementPosition({\n elementID: null,\n type: model.getType(),\n centeredPosition: true,\n position: { x: labelPosition.x - PORT_SVG_HALF_WIDTH, y: labelPosition.y }\n });\n const portPositions = portNames.map(portName => getPortCenterPositionByName({ portName, ...model.getDimensions(), elementPosition }));\n\n let sourceLinkPayload = { elements: [], links: [] };\n if (model.getInPorts().length > 0) {\n const fromElementInfo = link.getOwnerElement().serialize();\n const { index: closestPortToSourceIndex } = findClosestPoint(portPositions, link.sourcePort.getCenter());\n const toPortName = portNames[closestPortToSourceIndex].replace(/_Out/, '_In');\n const newLinkID = CanvasEngineBuilder.getNextLinkID();\n sourceLinkPayload = yield prepareNewWorkflowLinkActions({\n toPortName,\n fromElementInfo,\n linkID: newLinkID,\n toElementInfo: model.serialize(),\n fromPortName: link.getSourcePort().getName()\n });\n\n sourceLinkPayload.elements = yield prepareLinkOwnerUpdateActions({ linkID, elementID: fromElementInfo.id });\n }\n\n let targetLinkPayload = { elements: [], links: [] };\n if (model.getOutPorts().length > 0) {\n const { index: closestPortToTargetIndex } = findClosestPoint(portPositions, link.targetPort.getCenter());\n const fromPortName = portNames[closestPortToTargetIndex].replace(/_In/, '_Out');\n const newLinkID = CanvasEngineBuilder.getNextLinkID() + 1;\n targetLinkPayload = yield prepareNewWorkflowLinkActions({\n fromPortName,\n linkID: newLinkID,\n fromElementInfo: model.serialize(),\n toPortName: link.getTargetPort().getName(),\n toElementInfo: link.getTargetElement().serialize()\n });\n }\n\n return {\n links: [\n { action: 'delete', linkID, data: { link_id: linkID } },\n ...sourceLinkPayload.links,\n ...targetLinkPayload.links\n ],\n elements: [\n {\n elementID,\n action: 'update',\n data: {\n id: elementID,\n element_id: elementID,\n position: elementPosition,\n ...elementPosition\n }\n },\n ...sourceLinkPayload.elements,\n ...targetLinkPayload.elements\n ]\n };\n}\n\nexport function* prepareNewWorkflowElementAction({\n type, id: expectedID, position: expectedPosition, ...otherProps\n}) {\n const [id, defaultProps] = yield all([expectedID || call(getNextElementID), call(generateDefaults, { type, otherProps, withModel: !isNewCanvas })]);\n const position = expectedPosition || getNewElementPosition({ type });\n return {\n action: 'create',\n elementID: id,\n data: {\n ...defaultProps,\n id,\n x: position.x,\n y: position.y,\n element_id: id,\n type,\n position,\n ...(DEFAULT_FEATURES[ESSENTIAL_ELEMENT_PROPS] ? { loaded: true } : {})\n }\n };\n}\n\nexport function prepareNewWorkflowLinkActions({\n linkID: expectedLinkID, fromElementInfo, toElementInfo, fromPortName, toPortName\n}) {\n const linkID = expectedLinkID || CanvasEngineBuilder.getNextLinkID();\n\n const points = generatePathBetweenElements({\n fromElementInfo,\n fromPortName,\n toElementInfo,\n toPortName\n });\n\n return {\n links: [\n {\n action: 'create',\n linkID,\n data: {\n points,\n toPortName,\n fromPortName,\n id: linkID,\n link_id: linkID,\n type: 'default-link',\n toElement: toElementInfo.id,\n fromElement: fromElementInfo.id,\n labels: [{ justCreated: true, label: '' }]\n }\n }\n ],\n elements: []\n };\n}\n\nexport function* prepareRemoveWorkflowLinkActions({ linkID }) {\n let link;\n if (isNewCanvas) {\n link = yield select(Selectors.getLinkByID(linkID));\n link = linkAccesor(link);\n } else {\n link = CanvasEngineBuilder.getLink(linkID);\n }\n\n const {\n id: targetElementID,\n type: targetElementType\n } = yield select(Selectors.getElementByID(link.getTargetElement().getID()));\n\n const isTargetElementPlaceholder = targetElementType === elementTypes.PLACEHOLDER;\n if (isTargetElementPlaceholder) {\n let targetElement;\n if (isNewCanvas) {\n targetElement = yield select(Selectors.getElementByID(targetElementID));\n targetElement = nodeAccesor(targetElement);\n } else {\n targetElement = CanvasEngineBuilder.getNode(targetElementID);\n }\n if (targetElement.getLinksByPortType('in').length === 1) {\n return yield prepareRemoveWorkflowElementActions({ elementID: targetElementID });\n }\n }\n\n const elementActions = yield prepareLinkOwnerUpdateActions({ elementID: link.getOwnerElement().getID(), linkID });\n return {\n links: [\n { action: 'delete', linkID, data: { link_id: linkID } }\n ],\n elements: elementActions\n };\n}\n\nexport function* prepareRemoveWorkflowElementActions({ elementID, removeLinks = false }) {\n let element;\n let links;\n if (isNewCanvas) {\n element = yield select(Selectors.getElementByID(elementID));\n element = nodeAccesor(element);\n links = yield select(Selectors.getLinksSelector);\n } else {\n element = CanvasEngineBuilder.getNode(elementID);\n }\n if (!element) {\n return { links: [], elements: [] };\n }\n\n const shouldRemoveLinks = element?.shouldRemoveLinks() || removeLinks;\n const [linkIDs, elementsWithOutcomeInfo, placeholderElementIDs] = shouldRemoveLinks\n ? [\n getElementLinkIDs({ element, isSilent: true }),\n getFilteredElementOutcomeInfo({ element }),\n getLinkedPlacehorderIDs({ element, isSilent: true })\n ]\n : [[], [], []];\n\n for (let i = 0; i < elementsWithOutcomeInfo.length; i++) {\n const { id, outcomes } = elementsWithOutcomeInfo[i];\n const linkOwnerElement = yield select(Selectors.getElementByID(id));\n if (!linkOwnerElement || linkOwnerElement.type !== elementTypes.APPROVAL) {\n continue;\n }\n\n const { autoFinish = {} } = linkOwnerElement;\n const { autoFinishOutcomeID = '' } = autoFinish;\n const sanitizedAutoFinishOutcomeID = parseInt(autoFinishOutcomeID, 10);\n const isAutoFinishOutcomeIDStillConnected = outcomes.find(({ id: outcomeID, linkID }) => sanitizedAutoFinishOutcomeID === outcomeID && linkID !== undefined);\n if (!isAutoFinishOutcomeIDStillConnected) {\n elementsWithOutcomeInfo[i].autoFinish = { ...autoFinish, autoFinishOutcomeID: '' };\n }\n }\n\n const findID = () => {\n if (!links.length) return 1;\n const filteredEdges = links.filter(edge => !edge?.tempEdge);\n const edgeID = parseInt(filteredEdges[filteredEdges.length - 1].id, 10) + 1;\n return edgeID;\n };\n\n const removeLinkActions = linkIDs.map(linkID => ({ action: 'delete', linkID, data: { link_id: linkID } }));\n let createdLinks = [];\n let ownerElementUpdate = [];\n if (isNewCanvas && DEFAULT_FEATURES[CANVAS_DELETE_MIDDLE_NODE] && element.getType() === elementTypes.PLACEHOLDER) {\n const incomerLinks = element.getLinksByPortType('in');\n const outgoerLinks = element.getLinksByPortType('out');\n createdLinks = outgoerLinks.reduce((result, current) => {\n incomerLinks.forEach(l => {\n const linkID = findID();\n const newlyLink = {\n action: 'create',\n linkID: linkID,\n data: {\n toElement: +current.getTargetElement().getID(),\n fromElement: +l.getOwnerElement().getID(),\n toPortName: current.getTargetPort().getName(), \n fromPortName: l.getSourcePort().getName(),\n points: [{\n x: 1,\n y: 2\n }],\n labels: [{\n justCreated: true,\n label: l.getLabels()[0].getLabel()\n }],\n link_id: linkID,\n id: linkID,\n type: 'default-link'\n }\n }\n result.push(newlyLink);\n });\n return result;\n }, []);\n }\n const removeElementActions = [{ action: 'delete', elementID: elementID, data: { element_id: elementID } }];\n const updateApprovalActions = elementsWithOutcomeInfo.map(({ id, ...data }) => ({ action: 'update', elementID: id, data: { element_id: id, ...data } }));\n const removePlaceholderActionsList = yield all(placeholderElementIDs.map(placeholderElementID => prepareRemoveWorkflowElementActions({ elementID: placeholderElementID })));\n const payload = removePlaceholderActionsList.reduce((prev, curr) => ({\n links: unionBy(prev.links, curr.links, ({ linkID }) => linkID),\n elements: unionBy(prev.elements, curr.elements, ({ elementID: tmpElementID }) => tmpElementID)\n }), { links: [...removeLinkActions, ...createdLinks], elements: [...removeElementActions, ...updateApprovalActions, ...ownerElementUpdate] });\n const { integrationID, type, subType } = isNewCanvas ? element : element.options;\n if (integrationID) {\n handleDeleteIntegration({ partner: subType, id: integrationID });\n }\n return payload;\n}\n\nexport function* prepareRemoveWorkflowElementsActions(data, removeLinks = false) {\n let elementList = [];\n if (isNewCanvas) {\n const nodes = yield select(Selectors.getNodeMap);\n elementList = data.map(id => nodeAccesor(nodes[id])).filter(val => val)\n } else {\n elementList = data.map(id => CanvasEngineBuilder.getNode(id)).filter(val => val);\n }\n const elementsWithOutcomes = elementList.filter(element => isElementWithOutcome(element.getType()));\n const outLinksOfOutcomeElements = elementsWithOutcomes && elementsWithOutcomes?.length > 0\n ? elementsWithOutcomes?.map(element => element.getLinksByPortType('out'))?.reduce((prev, next) => [...prev, ...next]) : [];\n const outLinkIdsOfOutcomeElements = outLinksOfOutcomeElements.map(link => link.getID());\n const flatten = ({ list, flattenKey }) => list.reduce((prev, { [flattenKey]: tmpArr = [] }) => [...prev, ...tmpArr], []);\n const uniqByFlatten = ({ list, uniqKey, flattenKey }) => uniqBy(flatten({ list, flattenKey }), ({ action, [uniqKey]: value }) => `${value}-${action}`);\n\n const { placeholderList, deleteList } = elementList\n .reduce((prev, element) => {\n const elementID = element.getID();\n prev.deleteList.push(elementID);\n return prev;\n }, { placeholderList: [], deleteList: [] });\n\n const deletePayloadList = yield all(deleteList.map(id => call(prepareRemoveWorkflowElementActions, {\n elementID: id, removeLinks\n })));\n const placeholderPayloadList = yield all(placeholderList.map(id => call(prepareReplaceWorkflowElementActions, {\n elementToReplaceID: id, newElementType: elementTypes.PLACEHOLDER, outLinkIdsOfOutcomeElements\n })));\n\n const mixedPayloadList = [...placeholderPayloadList, ...deletePayloadList];\n const payload = {\n links: uniqByFlatten({\n list: mixedPayloadList,\n flattenKey: 'links',\n uniqKey: 'linkID'\n }),\n elements: flatten({\n list: mixedPayloadList,\n flattenKey: 'elements',\n uniqKey: 'elementID'\n })\n };\n return payload;\n}\n\nexport function* prepareLinkOwnerUpdateActions({ elementID, linkID }) {\n const {\n outcomes,\n autoFinish = {},\n type: ownerElementType\n } = yield select(Selectors.getElementByID(elementID));\n\n const elementActions = [];\n if (isElementWithOutcome(ownerElementType)) {\n const filteredOutcomes = filterLinkFromOutcomes({ linkID, outcomes });\n elementActions.push({\n elementID,\n action: 'update',\n data: { id: elementID, element_id: elementID, outcomes: filteredOutcomes }\n });\n }\n\n if (ownerElementType === elementTypes.APPROVAL) {\n const { autoFinishOutcomeID = '' } = autoFinish;\n const sanitizedAutoFinishOutcomeID = parseInt(autoFinishOutcomeID, 10);\n const isAutoFinishLinkDeleted = outcomes.find(({ id: outcomeID, linkID: tmpLinkID }) => sanitizedAutoFinishOutcomeID === outcomeID && tmpLinkID === linkID);\n if (isAutoFinishLinkDeleted) {\n elementActions[0].data.autoFinish = { ...autoFinish, autoFinishOutcomeID: '' };\n }\n }\n\n return elementActions;\n}\n\nexport function* addApprovalEmailUpdateData({ element, elementUpdateData }) {\n const newElementUpdateData = elementUpdateData;\n const isNewCanvas = DEFAULT_FEATURES[WORKFLOW_V2];\n const outcomes = elementUpdateData.outcomes || (isNewCanvas ? nodeAccesor(element)?.getOutcomes() : element.getOutcomes());\n const approverEmailContent = isNewCanvas ? element?.approvalEmail?.email.content : element.options?.approvalEmail?.email.content;\n const content = fixApprovalEmailsContent({ outcomes, showMoreActions: true, emailBody: approverEmailContent });\n\n newElementUpdateData.approvalEmail = {\n ...element.options?.approvalEmail,\n email: {\n ...element?.options?.approvalEmail?.email,\n content: content || approverEmailContent\n }\n };\n\n const { content: reassignContent } = yield call(generateDefaultEmail, {\n emailType: EMAIL_TEMPLATE_TYPES.WORKFLOW_APPROVE_REASSIGN_APPROVER,\n config: { actionButtons: generateActionButtonsForElement(elementTypes.APPROVAL, outcomes) }\n });\n\n newElementUpdateData.reassign = elementUpdateData.reassign || {};\n newElementUpdateData.reassign.approverEmail = {\n ...element?.options?.reassign?.approverEmail,\n ...elementUpdateData.reassign.approverEmail,\n content: reassignContent\n };\n\n return newElementUpdateData;\n}\n\nexport function* calculationOfPushNodes({ sourcePort, targetPort, val }) {\n const updateElementArray = [];\n const allNodes = CanvasEngineBuilder.model.getNodes();\n // find which element or elements should be push\n const data = findMostSuitableElements(allNodes, sourcePort, targetPort);\n const pushElementsIDArr = data.elements;\n pushElementsIDArr.forEach(element => {\n const index = allNodes.findIndex(value => value?.options?.id === element.id);\n if (element.pos === 'y') {\n updateElementArray.push({\n elementID: element.id,\n position: {\n x: allNodes[index].options.x,\n y: allNodes[index].options.y - (element.updateValue || val)\n },\n x: allNodes[index].options.x,\n y: allNodes[index].options.y - (element.updateValue || val)\n });\n }\n if (element.pos === 'x') {\n updateElementArray.push({\n elementID: element.id,\n position: {\n x: allNodes[index].options.x + (element.updateValue || val),\n y: allNodes[index].options.y\n },\n x: allNodes[index].options.x + (element.updateValue || val),\n y: allNodes[index].options.y\n });\n }\n if (element.pos === 'xy') {\n updateElementArray.push({\n elementID: element.id,\n position: {\n x: allNodes[index].options.x - (element.updateValue.x * 2 || val),\n y: allNodes[index].options.y - (element.updateValue.y || val)\n },\n x: allNodes[index].options.x - (element.updateValue.x * 2 || val),\n y: allNodes[index].options.y - (element.updateValue.y || val)\n });\n }\n });\n yield all(updateElementArray.map(value => put({ type: ActionTypes.UPDATE_ELEMENT.REQUEST, data: value })));\n}\n\nexport function* updateWorkflowElementsPDF({ elementID, ...rest }) {\n const { formID: deletedFormID, deletedFormIDList } = rest;\n const updateElementArray = [];\n // get all email elements\n const elements = yield select(Selectors.getSendEmailNodes);\n if (elements.length === 0) {\n return;\n }\n elements.forEach(value => {\n const newPDFList = [];\n const pdfList = value?.pdfDocuments;\n if (pdfList.length > 0) {\n pdfList.forEach(pdfValue => {\n if (deletedFormID && pdfValue?.formID !== deletedFormID) {\n newPDFList.push(pdfValue);\n }\n if (deletedFormIDList && !deletedFormIDList.includes(pdfValue?.formID)) {\n newPDFList.push(pdfValue);\n }\n });\n if (newPDFList !== pdfList) {\n updateElementArray.push({\n elementID: value.id,\n pdfDocuments: newPDFList\n });\n }\n }\n });\n yield all(updateElementArray.map(value => put({ type: ActionTypes.UPDATE_ELEMENT.REQUEST, data: value })));\n}\n\nexport function* updateElementWithCreateDefaultEmail({\n element, emailType, emailSubType, preparedProps\n}) {\n const isApproval = element?.type === elementTypes.APPROVAL;\n const isPasswordRequired = isPDFPasswordRequiredOnHIPAA();\n const emailContent = yield call(generateDefaultEmail, {\n emailType: EMAIL_TEMPLATE_TYPES[emailType],\n config: {\n actionButtons: isApproval ? generateActionButtonsForElement(element?.type, element?.outcomes) : generateActionButtonsForElement(element?.type)\n },\n emailSubType: emailSubType\n });\n switch (true) {\n case emailType === EMAIL_TEMPLATE_TYPES.WORKFLOW_APPROVE_START && emailSubType && emailSubType === ApprovalEmailSubTypes.APPROVAL_REMINDER:\n case emailType === EMAIL_TEMPLATE_TYPES.WORKFLOW_ASSIGN_TASK && emailSubType && emailSubType === AssignTaskEmailSubTypes.ASSIGN_TASK_REMINDER:\n case emailType === EMAIL_TEMPLATE_TYPES.WORKFLOW_ASSIGN_FORM_NOTIFICATION && emailSubType && emailSubType === AssignFormEmailSubTypes.ASSIGN_FORM_REMINDER:\n const reminder = {\n sendReminder: preparedProps?.sendReminder || element?.reminder?.sendReminder,\n remindAfter: {\n afterAmount: preparedProps?.remindAfter?.afterAmount || element?.reminder?.remindAfter?.afterAmount,\n afterUnit: preparedProps?.remindAfter?.afterUnit || element?.reminder?.remindAfter.afterUnit\n },\n customizeReminder: {\n sendCustomizedReminder: preparedProps?.customizeReminder?.sendCustomizedReminder || element?.reminder?.customizeReminder?.sendCustomizedReminder,\n customReminderEmail: {\n ...preparedProps?.customizeReminder?.customReminderEmail,\n ...emailContent,\n ...isPasswordRequired ? {\n passwordEnabled: '1'\n } : {},\n emailSubType: emailSubType\n }\n }\n };\n yield put({ type: ActionTypes.UPDATE_ELEMENT.REQUEST, data: { elementID: element?.id, reminder } });\n break;\n default:\n break;\n }\n}\n\nfunction handleDeleteIntegration({ partner, id }) {\n const dispatch = IntegrationHelper.getDispatch();\n dispatch(deleteIntegrationAction({ partner, id }));\n}\n\nexport function* updateWorkflowResource({\n elementID, resourceType, resourceID\n}) {\n const workflowID = yield select(Selectors.getWorkflowID);\n const { type } = yield select(Selectors.getElementByID(elementID));\n const isEntryPoint = type === elementTypes.START_POINT;\n const [formFetcher, questionsFetcher] = isEntryPoint\n ? [API.fetchForm, API.fetchFormQuestions]\n : [API.fetchFormFromAPI, API.fetchFormQuestionsFromAPI];\n const payload = {\n links: [],\n elements: [{\n elementID,\n action: 'update',\n data: {\n resourceID,\n resourceType,\n element_id: elementID\n }\n }]\n };\n\n if (resourceType === 'FORM') {\n const [form, questions] = yield all([\n retryAction(formFetcher, resourceID),\n retryAction(questionsFetcher, resourceID)\n ]);\n\n payload.elements[0].data.resourceObject = { ...form, questions: sortBy(Object.values(questions), ({ order }) => parseInt(order, 10)) };\n }\n\n yield all([\n put({ type: ActionTypes.UPDATE_TREE.REQUEST, data: payload })\n ]);\n\n if (isEntryPoint) {\n // yield initializeElementEmails();\n yield retryAction(API.updateWorkflowResource, workflowID, { resourceType, resourceID });\n }\n}\n","import { getElementByID, getLinkByID, getLinksSelector } from '../../store/selectors';\nimport store from '../../store';\nimport { elementTypes } from '../../constants/elementTypes';\n\nconst v2NodePorts = [\n { port: 'DYNAMIC_TOP_0', pos: 'top', left: '25%' },\n { port: 'DYNAMIC_TOP_1', pos: 'top', left: '50%' },\n { port: 'DYNAMIC_TOP_2', pos: 'top', left: '75%' },\n { port: 'DYNAMIC_BOTTOM_0', pos: 'bottom', left: '25%' },\n { port: 'DYNAMIC_BOTTOM_1', pos: 'bottom', left: '50%' },\n { port: 'DYNAMIC_BOTTOM_2', pos: 'bottom', left: '70%' },\n { port: 'LEFT_MIDDLE', pos: 'left' },\n { port: 'RIGHT_MIDDLE', pos: 'right' }\n];\n\nexport const selector = s => s(store.getState());\n\nconst NOT_HANDLED = () => false;\nconst NOT_NEEDED = () => false;\n\nexport const nodeAccesor = n => {\n const node = typeof n !== 'object' ? selector(getElementByID(n)) : n;\n const getType = () => node.type;\n const getOptions = () => {\n return node ? { ...node, locked: false } : node;\n };\n const getLinksByPortType = type => {\n const key = type === 'in' ? 'toElement' : 'fromElement';\n const links = selector(getLinksSelector);\n const id = parseInt(node.id, 10);\n return links.filter(l => parseInt(l[key], 10) === id).map(linkAccesor);\n };\n return {\n getOptions,\n get options() {\n return getOptions();\n },\n getOutcomes: () => {\n return node.outcomes;\n },\n getType,\n getID: () => {\n return node.id;\n },\n setOutcomes: NOT_NEEDED,\n setPosition: NOT_NEEDED,\n isSelected: NOT_HANDLED,\n canShowOutcomesInDropdown: () => {\n const type = getType();\n return [\n elementTypes.APPROVAL,\n elementTypes.ASSIGN,\n elementTypes.CONDITIONAL_BRANCH,\n elementTypes.ASSIGN_TASK,\n elementTypes.BINARY_DECISION,\n elementTypes.SIGN_DOCUMENT\n ].indexOf(type) > -1;\n },\n getPorts: () => v2NodePorts.map(p => portAccesor(nodeAccesor(node), p.port)),\n getLinksByPortType,\n getInPorts: () => getLinksByPortType('in').map(l => l.getTargetPort()),\n getOutPorts: () => getLinksByPortType('out').map(l => l.getSourcePort()),\n getPosition: () => n.position,\n getLinks: () => {\n const id = parseInt(node.id, 10);\n const links = selector(getLinksSelector);\n return links.filter(l => parseInt(l.toElement, 10) === id || parseInt(l.fromElement, 10) === id).map(linkAccesor);\n },\n isConnectedToStartPoint() {\n return !node.isOrphan;\n },\n shouldRemoveLinks() {\n const isPlaceholder = getType() === elementTypes.PLACEHOLDER;\n return isPlaceholder || node.isOrphan;\n },\n remove: NOT_NEEDED\n };\n};\n\nconst labelAccesor = l => {\n const label = l.labels && l.labels.length !== 0 && l.labels[0];\n const getOptions = () => {\n return label ? { ...label, justCreated: false } : label;\n };\n return ({\n getOptions,\n get options() {\n return getOptions();\n },\n getLabel: () => {\n return label?.label || '';\n },\n getParent: () => {\n return l;\n },\n serialize: () => label,\n setEditingInProgress: NOT_HANDLED,\n forceRender: () => {},\n setForceRender: () => {},\n setHighlight: () => {}\n });\n};\n\nexport const linkAccesor = l => {\n const link = typeof l !== 'object' ? selector(getLinkByID(l)) : l;\n const from = link?.fromElement && nodeAccesor(link.fromElement);\n const to = link?.toElement && nodeAccesor(link.toElement);\n let labels = [labelAccesor({ ...l, labels: l.labels || [{}] })];\n\n const getOptions = () => {\n return { ...link, labels, showToolBox: false };\n };\n const getSourcePort = () => {\n return portAccesor(from, link.fromPortName);\n };\n const getTargetPort = () => {\n return portAccesor(to, link.toPortName);\n };\n\n return {\n isSelected: () => {\n return false;\n },\n isLocked: () => {\n return false;\n },\n getOptions,\n get options() {\n return getOptions();\n },\n getType: () => 'default-link',\n getID: () => {\n return link.id;\n },\n getOwnerElement: () => {\n return from;\n },\n getTargetElement: () => {\n return to;\n },\n getTargetPort,\n getSourcePort,\n get targetPort() {\n return getTargetPort();\n },\n get sourcePort() {\n return getSourcePort();\n },\n getLabels: () => {\n return labels;\n },\n setSourcePort: NOT_NEEDED,\n setTargetPort: NOT_NEEDED,\n setLabels: (newLabels = []) => {\n labels = [labelAccesor({ ...l, labels: newLabels })];\n },\n addLabel: newLabel => {\n labels.push(labelAccesor({ ...link, labels: newLabel }));\n },\n get points() {\n return [{\n serialize() {\n return {\n x: 1,\n y: 2,\n isDirty: false\n };\n }\n }];\n },\n updatePoints: NOT_NEEDED\n };\n};\n\nexport const portAccesor = (from, name) => {\n const getOptions = () => ({ name, id: name, label: name });\n const getParent = () => from;\n return ({\n getName: () => {\n return name;\n },\n getParent,\n get parent() {\n return getParent();\n },\n getOptions,\n get options() {\n return getOptions();\n }\n });\n};\n","const generatePromiseActionType = baseName => ({\n REQUEST: `${baseName}/REQUEST`,\n SUCCESS: `${baseName}/SUCCESS`,\n ERROR: `${baseName}/ERROR`\n});\n\nexport const FETCH_USER = generatePromiseActionType('FETCH_USER');\nexport const SET_USER_SETTINGS = generatePromiseActionType('@WORKFLOW/SET_USER_SETTINGS');\nexport const ADD_CUSTOM_SENDER = '@USER/ADD_CUSTOM_SENDER';\nexport const USER_LOGGED_IN = '@USER/USER_LOGGED_IN';\nexport const FETCH_USER_FORMS = generatePromiseActionType('@USER/FETCH_USER_FORMS');\nexport const FETCH_USER_DOCUMENTS = generatePromiseActionType('@USER/FETCH_USER_DOCUMENTS');\nexport const INTERNET_CONNECTION_LOST = '@CORE/INTERNET_CONNECTION_LOST';\nexport const INTERNET_CONNECTION_RESTORED = '@CORE/INTERNET_CONNECTION_RESTORED';\nexport const CHANGE_WORKFLOW = '@CORE/CHANGE_WORKFLOW';\nexport const SET_FLOW_FORMS = '@USER/SET_FLOW_FORMS';\n\nexport const CREATE_WORKFLOW = generatePromiseActionType('@WORKFLOW/CREATE_NEW');\nexport const FETCH_WORKFLOW = generatePromiseActionType('@WORKFLOW/FETCH_WORKFLOW');\nexport const FETCH_ELEMENT = generatePromiseActionType('@WORKFLOW/FETCH_ELEMENT');\nexport const UPDATE_WORKFLOW = generatePromiseActionType('@WORKFLOW/UPDATE_WORKFLOW');\nexport const REMOVE_ELEMENT = generatePromiseActionType('@WORKFLOW/REMOVE_ELEMENT');\nexport const REMOVE_MULTIPLE_ELEMENT = generatePromiseActionType('@WORKFLOW/REMOVE_MULTIPLE_ELEMENT');\nexport const LOCKED_ELEMENT = generatePromiseActionType('@WORKFLOW/LOCKED_ELEMENT');\nexport const LOCK_SINGLE_ELEMENT = generatePromiseActionType('@WORKFLOW/LOCK_SINGLE_ELEMENT');\nexport const UNLOCK_ALL = generatePromiseActionType('@WORKFLOW/UNLOCK_ALL');\nexport const ADD_ELEMENT = generatePromiseActionType('@WORKFLOW/ADD_ELEMENT');\nexport const UPDATE_TREE = generatePromiseActionType('@WORKFLOW/UPDATE_TREE');\nexport const UPDATE_ELEMENT = generatePromiseActionType('@WORKFLOW/UPDATE_ELEMENT');\nexport const UPDATE_MULTIPLE_ELEMENT = generatePromiseActionType('@WORKFLOW/UPDATE_MULTIPLE_ELEMENT');\nexport const UPDATE_ELEMENTS_AND_LINKS = generatePromiseActionType('@WORKFLOW/UPDATE_ELEMENTS_AND_LINKS');\nexport const DUPLICATE_ELEMENT = generatePromiseActionType('@WORKFLOW/DUPLICATE_ELEMENT');\nexport const DUPLICATE_MULTIPLE_ELEMENT = generatePromiseActionType('@WORKFLOW/DUPLICATE_MULTIPLE_ELEMENT');\nexport const ADD_LINK = generatePromiseActionType('@WORKFLOW/ADD_LINK');\nexport const UPDATE_LINK = generatePromiseActionType('@WORKFLOW/UPDATE_LINK');\nexport const REMOVE_LINK = generatePromiseActionType('@WORKFLOW/REMOVE_LINK');\nexport const SET_RESOURCE = generatePromiseActionType('@WORKFLOW/SET_RESOURCE');\nexport const SHARE_TEMPLATE = generatePromiseActionType('@WORKFLOW/SHARE_TEMPLATE');\nexport const UPDATE_ELEMENTS_PDF = generatePromiseActionType('@WORKFLOW/UPDATE_ELEMENTS_PDF');\nexport const UPDATE_ELEMENT_WITH_CREATE_DEFAULT_EMAIL = generatePromiseActionType('@WORKFLOW/UPDATE_ELEMENT_WITH_CREATE_DEFAULT_EMAIL');\nexport const PUBLISH_WORKFLOW = '@WORKFLOW/AUTO_PUBLISH';\nexport const BEAUTIFY_LINKS = '@WORKFLOW/BEAUTIFY_LINKS';\nexport const UPDATE_RESOURCE = generatePromiseActionType('@WORKFLOW/UPDATE_RESOURCE');\n\nexport const ADD_ELEMENT_FROM_LEFT_PANEL = generatePromiseActionType('@WORKFLOW/ADD_ELEMENT_FROM_LEFT_PANEL');\nexport const ADD_BLOCK_ELEMENT = generatePromiseActionType('@WORKFLOW/ADD_BLOCK_ELEMENT');\nexport const REMOVE_OUTCOME = generatePromiseActionType('@WORKFLOW/REMOVE_OUTCOME');\nexport const CLEAR_LINK_FROM_OUTCOME = generatePromiseActionType('@WORKFLOW/CLEAR_LINK_FROM_OUTCOME');\nexport const UPDATE_LINK_OUTCOME = generatePromiseActionType('@WORKFLOW/UPDATE_LINK_OUTCOME');\nexport const UPDATE_ELEMENT_OUTCOME = generatePromiseActionType('@WORKFLOW/UPDATE_ELEMENT_OUTCOME');\nexport const UPDATE_MULTIPLE_OUTCOME = generatePromiseActionType('@WORKFLOW/UPDATE_MULTIPLE_OUTCOME');\nexport const ADD_OUTCOME_TO_ELEMENT = generatePromiseActionType('@WORKFLOW/ADD_OUTCOME_TO_ELEMENT');\nexport const ADD_ELEMENT_ONTO_LABEL = generatePromiseActionType('@WORKFLOW/ADD_ELEMENT_ONTO_LABEL');\nexport const PLACE_ELEMENT_ONTO_LABEL = generatePromiseActionType('@WORKFLOW/PLACE_ELEMENT_ONTO_LABEL');\nexport const CONVERT_ELEMENT_TO_PLACEHOLDER = generatePromiseActionType('@WORKFLOW/CONVERT_ELEMENT_TO_PLACEHOLDER');\nexport const CONVERT_PLACEHOLDER_TO_ELEMENT = generatePromiseActionType('@WORKFLOW/CONVERT_PLACEHOLDER_TO_ELEMENT');\nexport const EXECUTE_UNDOABLE_ACTION = '@WORKFLOW/EXECUTE_UNDOABLE_ACTION';\nexport const UNDO_ACTION = '@WORKFLOW/UNDO_ACTION';\nexport const REDO_ACTION = '@WORKFLOW/REDO_ACTION';\nexport const PAN_MODE_SWITCH = '@WORKFLOW/PAN_MODE_SWITCH';\nexport const UPDATE_EMAIL_SETTINGS = '@WORKFLOW/UPDATE_EMAIL_SETTINGS';\nexport const HANDLE_WORKFLOW_FORM = '@WORKFLOW/HANDLE_WORKFLOW_FORM';\n\nexport const CALCULATION_OF_PUSH_NODES = generatePromiseActionType('@WORKFLOW/CALCULATION_OF_PUSH_NODES');\nexport const OFFSET_UPDATED = '@CANVAS/OFFSET_UPDATED';\n\nexport const SELECTION_CHANGED = '@WORKFLOW_INSPECTOR/SELECTION_CHANGED';\nexport const SELECTION_CHANGED_V2 = '@WORKFLOW_INSPECTOR/SELECTION_CHANGED_V2';\nexport const DESELECT_ALL_ELEMENTS_V2 = '@WORKFLOW_INSPECTOR/DESELECT_ALL_ELEMENTS_V2';\nexport const MULTIPLE_SELECTION_CHANGED = '@WORKFLOW_INSPECTOR/MULTIPLE_SELECTION_CHANGED';\nexport const CLEAR_SELECTION = '@WORKFLOW_INSPECTOR/CLEAR_SELECTION';\nexport const CHANGE_PAN_MODE = '@WORKFLOW_INSPECTOR/CHANGE_PAN_MODE';\n\nexport const LINK_SELECTION_CHANGED = '@WORKFLOW_INSPECTOR/LINK_SELECTION_CHANGED';\nexport const CLEAR_LINK_SELECTION = '@WORKFLOW_INSPECTOR/CLEAR_LINK_SELECTION';\n\nexport const TRACK_EVENT = '@CORE/TRACK_EVENT';\nexport const REPORT_ERRORS = '@CORE/REPORT_ERRORS';\n\nexport const HIGHLIGHT_ELEMENT = '@UI/HIGHLIGHT_ELEMENT';\nexport const REMOVE_ELEMENT_HIGHLIGHT = '@UI/REMOVE_ELEMENT_HIGHLIGHT';\nexport const SET_SAVING_STATE = '@UI/SET_SAVING_STATE';\nexport const CHANGE_FEATURES = '@UI/CHANGE_FEATURES';\nexport const CONFIRM_REMOVE_ELEMENT = '@UI/REMOVE_ELEMENT_CONFIRM';\nexport const CONFIRM_REMOVE_LINK = '@UI/REMOVE_LINK_CONFIRM';\nexport const CONFIRM_REMOVE_MULTIPLE_ELEMENT = '@UI/REMOVE_MULTIPLE_ELEMENT_CONFIRM';\nexport const OPEN_EMAIL_WIZARDS_MODAL = '@UI/OPEN_EMAIL_WIZARDS_MODAL';\nexport const OPEN_SIGNUP_MODAL = '@UI/OPEN_SIGNUP_MODAL';\nexport const SHOW_WHATS_NEW_MODAL = '@UI/SHOW_WHATS_NEW_MODAL';\nexport const SET_APP_READY = '@UI/SET_APP_READY';\nexport const SET_FIELD_ERRORS = '@UI/SET_FIELD_ERRORS';\nexport const CLEAR_FIELD_ERRORS = '@UI/CLEAR_FIELD_ERRORS';\nexport const CLEAR_ALL_ERRORS = '@UI/CLEAR_ALL_ERRORS';\nexport const INIT_CANVAS_ENGINE = '@UI/INIT_CANVAS_ENGINE';\nexport const SET_CANVAS_LOADING = '@UI/SET_CANVAS_LOADING';\nexport const SET_PUBLISH_MODE = '@UI/SET_PUBLISH_MODE';\nexport const SET_DRAG_MODE = '@UI/SET_DRAG_MODE';\nexport const LEFT_PANEL_ = '@UI/LEFT_PANEL_TOGGLED';\nexport const LEFT_PANEL_TOGGLED = '@UI/LEFT_PANEL_TOGGLED';\nexport const RIGHT_PANEL_TOGGLED = '@UI/RIGHT_PANEL_TOGGLED';\nexport const KEYBOARD_SHORTCUTS_AVAILABLE = '@UI/KEYBOARD_SHORTCUTS_AVAILABLE';\nexport const SET_LEFT_PANEL_VISIBILITY = '@UI/SET_LEFT_PANEL_VISIBILITY';\nexport const SET_RIGHT_PANEL_VISIBILITY = '@UI/SET_RIGHT_PANEL_VISIBILITY';\nexport const NODE_DOUBLE_CLICKED = '@UI/NODE_DOUBLE_CLICKED';\nexport const SET_UNDO_AVAILABLE = '@UI/SET_UNDO_AVAILABLE';\nexport const SET_REDO_AVAILABLE = '@UI/SET_REDO_AVAILABLE';\nexport const PROPERTY_MODAL_TOGGLED = '@UI/PROPERTY_MODAL_TOGGLED';\nexport const SET_CURRENT_EMAIL_TEMPLATE = '@UI/SET_CURRENT_EMAIL_TEMPLATE';\nexport const OPEN_REPORT_SETTINGS_MODAL = '@UI/OPEN_REPORT_SETTINGS_MODAL';\nexport const SET_FORCE_TITLE_RENAME = '@UI/SET_FORCE_TITLE_RENAME';\nexport const SET_LEFT_PANEL_DEFAULT_TAB = '@UI/SET_LEFT_PANEL_DEFAULT_TAB';\nexport const SET_INTEGRATION_TYPE = '@UI/SET_INTEGRATION_TYPE';\nexport const SET_UI_INTERACTION = '@UI/SET_UI_INTERACTION';\n\nexport const FOCUS_TO_ERROR = '@UI/FOCUS_TO_ERROR';\nexport const SET_ERROR_PANEL_VISIBILITY = '@UI/SET_ERROR_PANEL_VISIBILITY';\nexport const SET_ERROR_PANEL_FOCUSED_ELEMENT_ID = '@UI/SET_ERROR_PANEL_FOCUSED_ELEMENT_ID';\n\nexport const FETCH_WARNINGS = generatePromiseActionType('@ERRORS/FETCH_WARNINGS');\nexport const ADD_WARNING = '@ERRORS/ADD_WARNING';\nexport const CANCEL_INSTANCES = generatePromiseActionType('@ERRORS/CANCEL_INSTANCES');\nexport const RESTART_INSTANCES = generatePromiseActionType('@ERRORS/RESTART_INSTANCES');\n\nexport const SET_START_POINT_RESOURCE_OBJECT = 'SET_START_POINT_QUESTIONS';\nexport const FETCH = 'FETCH';\n\nexport const UPDATE_USER_SELECTION = generatePromiseActionType('UPDATE_USER_SELECTION');\nexport const UNSET_USER_SELECTION = generatePromiseActionType('UNSET_USER_SELECTION');\nexport const SET_SELECTION = generatePromiseActionType('SET_SELECTION');\n\nexport const SET_TEAMS = generatePromiseActionType('@TEAM/SET_TEAMS');\nexport const SET_TEAM_PROPERTIES = generatePromiseActionType('@TEAM/SET_TEAM_PROPERTIES');\nexport const SET_TEAM_SETTINGS = generatePromiseActionType('@TEAM/SET_TEAM_SETTINGS');\nexport const SET_TEAM_CUSTOM_SENDER_EMAILS = generatePromiseActionType('@TEAM/SET_TEAM_CUSTOM_SENDER_EMAILS');\n\nexport const UPDATE_NEW_CANVAS_ELEMENT = '@WORKFLOW/UPDATE_NEW_CANVAS_ELEMENT';\nexport const UPDATE_HOVERED_NODE = '@WORKFLOW_INSPECTOR/UPDATE_HOVERED_NODE';\n\nexport const UPDATE_ELEMENT_WITHOUT_REQUEST = '@WORKFLOW/UPDATE_ELEMENT_WITHOUT_REQUEST';\nexport const UPDATE_LINKS_WITHOUT_REQUEST = '@WORKFLOW/UPDATE_LINKS_WITHOUT_REQUEST';\nexport const EDGE_SELECTION = '@WORKFLOW/EDGE_SELECTION';\n\nexport const ADD_LINK_WITHOUT_REQUEST = '@WORKFLOW/ADD_LINK_WITHOUT_REQUEST';\nexport const REMOVE_LINK_WITHOUT_REQUEST = '@WORKFLOW/REMOVE_LINK_WITHOUT_REQUEST';\n\nexport const FORM_FETCHING = '@WORKFLOW_FORM_BUILDER/FORM_FETCHING';\nexport const SET_INTERNAL_FORM_ID = '@WORKFLOW_FORM_BUILDER/SET_INTERNAL_FORM_ID';\nexport const SHOW_DESIGN_FRAME = '@WORKFLOW_FORM_BUILDER/SHOW_DESIGN_FRAME';\nexport const HIDE_DESIGN_FRAME = '@WORKFLOW_FORM_BUILDER/HIDE_DESIGN_FRAME';\nexport const SET_CUSTOM_PANEL = '@WORKFLOW_FORM_BUILDER/SET_CUSTOM_PANEL';\n","import {\n LEFT_PANEL_TOGGLED,\n RIGHT_PANEL_TOGGLED,\n KEYBOARD_SHORTCUTS_AVAILABLE,\n HIGHLIGHT_ELEMENT,\n REMOVE_ELEMENT_HIGHLIGHT,\n SET_FIELD_ERRORS,\n CLEAR_FIELD_ERRORS,\n CLEAR_ALL_ERRORS,\n SET_SAVING_STATE,\n SET_APP_READY,\n CHANGE_FEATURES,\n SET_CANVAS_LOADING,\n SET_PUBLISH_MODE,\n INTERNET_CONNECTION_LOST,\n INTERNET_CONNECTION_RESTORED,\n SET_DRAG_MODE,\n PUBLISH_WORKFLOW,\n SET_ERROR_PANEL_VISIBILITY,\n SET_ERROR_PANEL_FOCUSED_ELEMENT_ID,\n SET_LEFT_PANEL_VISIBILITY,\n SET_RIGHT_PANEL_VISIBILITY,\n SET_UNDO_AVAILABLE,\n SET_REDO_AVAILABLE,\n UPDATE_TREE,\n PROPERTY_MODAL_TOGGLED,\n SET_CURRENT_EMAIL_TEMPLATE,\n SET_FORCE_TITLE_RENAME,\n SET_LEFT_PANEL_DEFAULT_TAB,\n SET_INTEGRATION_TYPE,\n SET_UI_INTERACTION,\n HIDE_DESIGN_FRAME\n} from './actionTypes';\nimport { DEFAULT_FEATURES } from '../constants/features';\nimport browserHelper from '../utils/browserHelper';\n\nconst standardUIActionHandler = (state, prop, action) => ({ ...state, [prop]: action.data });\n\nconst stdUIActionMap = {\n [HIGHLIGHT_ELEMENT]: 'highlightedElementID',\n [SET_SAVING_STATE]: 'isSaveInProgress',\n [SET_ERROR_PANEL_FOCUSED_ELEMENT_ID]: 'errorPanelFocusedElementID'\n};\n\nconst createUIReducer = (initialValues = {}) => {\n const initialState = {\n isUndoAvailable: false,\n isRedoAvailable: false,\n isKeyboardShortcutsAvailable: true,\n isAppReady: false,\n environment: window.JOTFORM_ENV,\n // Users dont understand where to add fields, lets test it as open. Like we did in pdf editor\n isLeftPanelOpen: !browserHelper.is('mobile'),\n isRightPanelOpen: false,\n isErrorPanelOpen: false,\n highlightedElementID: false,\n isSaveInProgress: false,\n lastUpdateDate: '',\n errors: [],\n features: DEFAULT_FEATURES,\n canvasLoading: true,\n publishMode: false,\n isConnected: true,\n isDragging: false,\n isPropertyModalOpen: false,\n currentEmailTemplate: {},\n forceTitleRename: false,\n leftPanelDefaultTab: 'Basic',\n integrationType: null,\n interactable: true,\n workflowFormBuilder: {\n formID: null,\n visible: false,\n loading: false,\n panelData: null\n },\n ...initialValues\n };\n\n // eslint-disable-next-line complexity\n return (state = initialState, action) => {\n if (typeof stdUIActionMap[action.type] === 'string') {\n return standardUIActionHandler(state, stdUIActionMap[action.type], action);\n }\n switch (action.type) {\n case SET_APP_READY: {\n return { ...state, isAppReady: true };\n }\n case LEFT_PANEL_TOGGLED:\n return {\n ...state,\n isLeftPanelOpen: !state.isLeftPanelOpen,\n isRightPanelOpen: (!state.isLeftPanelOpen) ? false : state.isRightPanelOpen\n };\n case RIGHT_PANEL_TOGGLED:\n return {\n ...state,\n isRightPanelOpen: !state.isRightPanelOpen,\n isLeftPanelOpen: (!state.isRightPanelOpen) ? false : state.isLeftPanelOpen\n };\n case SET_LEFT_PANEL_VISIBILITY:\n return {\n ...state,\n isLeftPanelOpen: action.data\n };\n case SET_RIGHT_PANEL_VISIBILITY:\n return {\n ...state,\n isRightPanelOpen: action.data,\n isLeftPanelOpen: (action.data && state.isLeftPanelOpen) ? false : state.isLeftPanelOpen\n };\n case KEYBOARD_SHORTCUTS_AVAILABLE:\n return {\n ...state,\n isKeyboardShortcutsAvailable: action.data\n };\n case REMOVE_ELEMENT_HIGHLIGHT: {\n return {\n ...state,\n highlightedElementID: false\n };\n }\n case SET_FIELD_ERRORS: {\n return {\n ...state,\n errors: [...state.errors.filter(e => e.elementID !== action.data.elementID), ...action.data.errors]\n };\n }\n case CLEAR_FIELD_ERRORS: {\n return {\n ...state,\n errors: state.errors.filter(e => e.elementID !== action.data.elementID)\n };\n }\n case CLEAR_ALL_ERRORS: {\n return {\n ...state,\n errors: []\n };\n }\n case PUBLISH_WORKFLOW: {\n return {\n ...state,\n isSaveInProgress: false\n };\n }\n case CHANGE_FEATURES: {\n return {\n ...state,\n features: {\n ...state.features,\n ...action.data\n }\n };\n }\n case SET_CANVAS_LOADING: {\n return {\n ...state,\n canvasLoading: action.data\n };\n }\n case SET_PUBLISH_MODE: {\n return {\n ...state,\n publishMode: action.data.publishMode\n };\n }\n case INTERNET_CONNECTION_LOST: {\n return {\n ...state,\n isConnected: false\n };\n }\n case INTERNET_CONNECTION_RESTORED: {\n return {\n ...state,\n isConnected: true\n };\n }\n case SET_DRAG_MODE: {\n return {\n ...state,\n isDragging: action.data.isDragging\n };\n }\n case SET_ERROR_PANEL_VISIBILITY: {\n return {\n ...state,\n isErrorPanelOpen: action.data,\n errorPanelFocusedElementID: action.elementID\n };\n }\n case SET_UNDO_AVAILABLE: {\n return {\n ...state,\n isUndoAvailable: action.data.isUndoAvailable\n };\n }\n case SET_REDO_AVAILABLE: {\n return {\n ...state,\n isRedoAvailable: action.data.isRedoAvailable\n };\n }\n case UPDATE_TREE.SUCCESS: {\n const { data: { elements = [] } } = action;\n const deletedElementIDs = elements.filter(({ action: actionType }) => actionType === 'delete').map(({ elementID }) => elementID);\n return {\n ...state,\n errors: state.errors.filter(({ elementID }) => deletedElementIDs.indexOf(elementID) === -1)\n };\n }\n case PROPERTY_MODAL_TOGGLED: {\n const isOpen = action.data;\n return {\n ...state,\n isPropertyModalOpen: isOpen,\n currentEmailTemplate: {},\n isKeyboardShortcutsAvailable: !isOpen\n };\n }\n case SET_CURRENT_EMAIL_TEMPLATE: {\n return {\n ...state,\n currentEmailTemplate: action.data\n };\n }\n case SET_FORCE_TITLE_RENAME: {\n return {\n ...state,\n forceTitleRename: action.data\n };\n }\n case SET_LEFT_PANEL_DEFAULT_TAB: {\n return {\n ...state,\n leftPanelDefaultTab: action.data\n };\n }\n case SET_INTEGRATION_TYPE: {\n return {\n ...state,\n integrationType: action.data\n };\n }\n case SET_UI_INTERACTION: {\n return {\n ...state,\n interactable: action.data\n };\n }\n case HIDE_DESIGN_FRAME: {\n return {\n ...state,\n isRightPanelOpen: false\n };\n }\n default:\n break;\n }\n return state;\n };\n};\n\nexport default createUIReducer;\n","import {\n ADD_CUSTOM_SENDER, FETCH_USER, SET_USER_SETTINGS, FETCH_USER_FORMS, FETCH_USER_DOCUMENTS,\n SET_FLOW_FORMS\n} from './actionTypes';\n\nconst initialState = {\n account_type: { name: '' },\n showWFDiagramErrors: 'Yes',\n usage: {},\n flowForms: []\n};\n\nconst userReducer = (state = initialState, action) => {\n switch (action.type) {\n case FETCH_USER.SUCCESS: {\n const userTypes = { FORM_USER: 'formuser', USER: 'user' };\n const userType = action.data.type && userTypes[action.data.type];\n\n return {\n ...state,\n ...action.data.credentials,\n USER_TYPE: action.data.type,\n forms: action.data.forms,\n formUsers: action.data.formUsers,\n documents: action.data.documents,\n ...userType ? { userType } : {}\n };\n }\n case ADD_CUSTOM_SENDER: {\n const { senderEmailInfo } = action.data;\n return {\n ...state,\n senderEmails: { ...state.senderEmails, ...senderEmailInfo }\n };\n }\n case SET_USER_SETTINGS.REQUEST: {\n const { key, value } = action.data;\n return {\n ...state,\n [key]: value\n };\n }\n case FETCH_USER_FORMS.SUCCESS: {\n return { ...state, forms: action.data.forms };\n }\n case SET_FLOW_FORMS: {\n return { ...state, flowForms: action.data.flowForms };\n }\n case FETCH_USER_DOCUMENTS.SUCCESS: {\n return { ...state, documents: action.data.documents };\n }\n default:\n return state;\n }\n};\n\nexport default userReducer;\n","/* eslint-disable max-statements */\n/* eslint-disable complexity */\nimport uniqBy from 'lodash/uniqBy';\nimport { elementTypes } from '../constants/elementTypes';\nimport { DEFAULT_FEATURES, NODE_ORDERING, WORKFLOW_V2 } from '../constants/features';\nimport * as ActionTypes from './actionTypes';\nimport { nodeAdapter, linkAdapter } from '../modules/Editor/adapter';\n\nconst isNewCanvas = DEFAULT_FEATURES[WORKFLOW_V2];\n\nexport const initialState = {\n offsetX: 0,\n offsetY: 0,\n zoom: 100,\n links: [],\n nodes: [],\n templateID: null,\n panMode: true,\n hasLoop: false,\n edgeType: 'smoothstep',\n ...(isNewCanvas ? {\n newCanvasNodes: [],\n newCanvasEdges: []\n } : {})\n};\n\nconst putVisitedPropToNodes = (_nodes, links) => {\n const nodes = _nodes.map(n => ({ ...n, visited: false }));\n const getVisitedIDs = () => {\n const [start] = nodes;\n const goDown = (visitedNodes, depth) => {\n if (visitedNodes.length === 0) {\n return [];\n }\n const curr = visitedNodes.pop();\n const _links = links.filter(l => +l.fromElement === +curr.id);\n if (_links.length !== 0) {\n return _links.reduce((acc, link) => {\n const found = nodes.find(n => +link.toElement === +n.id);\n if (found && !found.visited) {\n found.visited = true;\n const reach = goDown([found], depth + 1);\n return [...acc, ...reach];\n }\n return [...acc];\n }, [...visitedNodes, curr]);\n }\n return [...visitedNodes, curr];\n };\n return goDown([{ ...start, visited: true, depth: 0 }], 1).map(n => n.id);\n };\n try {\n const visitedIDs = getVisitedIDs();\n return nodes.map(n => ({ ...n, visited: visitedIDs.includes(n.id) }));\n } catch (err) {\n console.error(err);\n return nodes;\n }\n};\n\nconst detectLoopsAndPutVisitedProps = (_nodes, links) => {\n const isNewCanvasNodeOrdering = DEFAULT_FEATURES[WORKFLOW_V2] ? false : !DEFAULT_FEATURES[NODE_ORDERING];\n if (isNewCanvasNodeOrdering) {\n return { nodes: putVisitedPropToNodes(_nodes, links), hasLoop: false };\n }\n let biggestDepth = 0;\n const nodes = _nodes.map((n, i) => ({\n ...n, visited: false, recursed: false, index: i, predecessors: undefined, childs: undefined, isOrphan: true\n }));\n const detectCycles = () => {\n const checkLoop = (index, predecessors, fromElement, depth) => {\n const node = nodes[index];\n if (fromElement === 0 && (node.depth === undefined ? true : depth < node.depth)) {\n node.depth = depth;\n }\n if (node.depth > biggestDepth) {\n biggestDepth = node.depth;\n }\n node.predecessors = [...new Set([...(node.predecessors || []), ...predecessors])];\n if (node.recursed) return true;\n if (node.visited) return false;\n node.visited = true;\n if (fromElement === 0) {\n node.isOrphan = false;\n }\n node.recursed = true;\n if (node.childs === undefined) {\n node.childs = nodes\n .filter(n => links.filter(l => +l.fromElement === +node.id).map(l => +l.toElement).includes(+n.id))\n .map(n => ({ ...n, childs: undefined }));\n }\n for (let i = 0; i < node.childs.length; i++) {\n if (checkLoop(node.childs[i].index, [...node.predecessors, +node.id], fromElement, depth + 1)) {\n return true;\n }\n }\n node.recursed = false;\n return false;\n };\n\n for (let i = 0; i < nodes.length; i++) {\n if (checkLoop(i, [], i, 0)) {\n return { hasLoop: true, nodes };\n }\n }\n return { hasLoop: false, nodes };\n };\n try {\n const res = detectCycles();\n if (res.hasLoop) console.error('Workflow has cyclic dependency inside nodes.');\n return {\n ...res,\n nodes: res.nodes.map(n => {\n if (n.depth === undefined) {\n return { ...n, visited: undefined, depth: ++biggestDepth };\n }\n return n;\n })\n };\n } catch (err) {\n console.error(err);\n return { nodes: _nodes };\n }\n};\n\nconst createWorkflowReducer = (initialValues = {}) => {\n const overridenInitialState = {\n ...initialState,\n ...initialValues\n };\n return (state = overridenInitialState, action) => {\n switch (action.type) {\n case ActionTypes.CREATE_WORKFLOW.REQUEST: {\n return { ...overridenInitialState };\n }\n case ActionTypes.FETCH_WORKFLOW.SUCCESS: {\n const { data } = action;\n const { nodes, links } = data;\n const isNodeExist = (list, nodeID) => list.find(node => node?.id === nodeID);\n const validLinks = links.filter(link => isNodeExist(nodes, link.toElement) && isNodeExist(nodes, link.fromElement));\n const { nodes: detectedNodes, hasLoop } = detectLoopsAndPutVisitedProps(nodes, validLinks);\n return {\n ...state,\n ...data,\n hasLoop,\n nodes: detectedNodes,\n links: validLinks,\n ...(isNewCanvas ? {\n newCanvasNodes: nodeAdapter(detectedNodes),\n newCanvasEdges: linkAdapter(validLinks)\n } : {})\n };\n }\n case ActionTypes.OFFSET_UPDATED:\n const { data: { offsetX, offsetY } } = action;\n return {\n ...state,\n offsetX,\n offsetY\n };\n case ActionTypes.FETCH_ELEMENT.SUCCESS: {\n const element = { ...action.data, loaded: true };\n return {\n ...state,\n nodes: state.nodes.map(e => (e.id === element.id ? element : e))\n };\n }\n case ActionTypes.UPDATE_LINKS_WITHOUT_REQUEST: {\n if (!isNewCanvas) return state;\n const { id, ...rest } = action.data;\n return {\n ...state,\n newCanvasEdges: state.newCanvasEdges.map(link => {\n if (link.id !== id) return link;\n return { ...link, ...rest };\n })\n };\n }\n case ActionTypes.ADD_LINK_WITHOUT_REQUEST: {\n if (!isNewCanvas) return state;\n const isLinkExist = state.newCanvasEdges.find(link => link.id === action.data.id);\n if (isLinkExist) {\n return state;\n }\n return {\n ...state,\n newCanvasEdges: [...state.newCanvasEdges, action.data]\n };\n }\n case ActionTypes.REMOVE_LINK_WITHOUT_REQUEST: {\n if (!isNewCanvas) return state;\n const { id } = action.data;\n return {\n ...state,\n newCanvasEdges: state.newCanvasEdges.filter(edge => edge.id !== id)\n };\n }\n case ActionTypes.UPDATE_ELEMENT_WITHOUT_REQUEST: {\n const { id, ...rest } = action.data;\n return {\n ...state,\n nodes: state.nodes.map(node => {\n if (node.id === id) {\n return { ...node, ...rest };\n }\n return node;\n }),\n newCanvasNodes: state.newCanvasNodes.map(node => {\n if (+node.id === id) {\n return { ...node, data: { ...node.data, ...rest } };\n }\n return node;\n })\n };\n }\n case ActionTypes.EDGE_SELECTION: {\n const { id } = action.data;\n return {\n ...state,\n newCanvasEdges: state.newCanvasEdges.map(edge => ({ ...edge, selected: edge.id === id }))\n };\n }\n case ActionTypes.UPDATE_TREE.REQUEST:\n case ActionTypes.UPDATE_TREE.SUCCESS: {\n const pickActionsByType = (elementType, actionType) => {\n const idKey = elementType === 'links' ? 'linkID' : 'elementID';\n const actions = action.data[elementType] ?? [];\n const relatedActions = actions.filter(({ action: tmpAction }) => tmpAction === actionType);\n const actionData = relatedActions.map(({ data, [idKey]: id }) => ({ id, ...data }));\n return actionData;\n };\n\n const getNewList = (listKey, elementType) => {\n const { [listKey]: baseList } = state;\n const createList = pickActionsByType(elementType, 'create').map(node => {\n if (elementType === 'elements' && typeof node.y !== 'undefined' && typeof node.x !== 'undefined') {\n return {\n ...node,\n position: { x: node.x, y: node.y }\n };\n }\n return node;\n });\n const updateList = pickActionsByType(elementType, 'update');\n const deleteList = pickActionsByType(elementType, 'delete');\n const isNodeExist = (list, node) => list.find(tmpNode => +tmpNode.id === +node.id);\n const deletedList = baseList.filter(node => !isNodeExist(deleteList, node));\n const updatedList = deletedList.map(node => {\n const updateData = isNodeExist(updateList, node);\n if (!updateData) {\n if (node.focusOnCreate) {\n return { ...node, ...(action.type === ActionTypes.UPDATE_TREE.SUCCESS ? { focusOnCreate: false } : {}) };\n }\n return node;\n }\n const updatedNode = {\n ...node,\n ...updateData\n };\n const extraData = elementType === 'elements' ? { position: { x: updatedNode.x, y: updatedNode.y } } : {};\n return { ...updatedNode, ...extraData };\n });\n const mergedList = [...updatedList, ...createList];\n return uniqBy(mergedList, node => node.id);\n };\n\n const newLinks = getNewList('links', 'links');\n const newNodes = getNewList('nodes', 'elements');\n const { nodes: detectedNodes, hasLoop } = detectLoopsAndPutVisitedProps(newNodes, newLinks);\n return {\n ...state,\n hasLoop,\n nodes: detectedNodes,\n links: newLinks,\n ...(isNewCanvas ? {\n newCanvasNodes: nodeAdapter(detectedNodes),\n newCanvasEdges: linkAdapter(newLinks)\n } : {})\n };\n }\n case ActionTypes.UPDATE_WORKFLOW.REQUEST: {\n return {\n ...state,\n ...action.data\n };\n }\n case ActionTypes.PUBLISH_WORKFLOW: {\n return {\n ...state,\n updated_at: new Date()\n };\n }\n case ActionTypes.SET_START_POINT_RESOURCE_OBJECT: {\n const updatedElements = state.nodes.map(f => {\n if (f.type === elementTypes.START_POINT && f?.resourceObject?.id === `${action.resourceID}`) {\n return {\n ...f,\n resourceObject: {\n ...f.resourceObject,\n ...action.data\n }\n };\n }\n return f;\n });\n return {\n ...state,\n nodes: updatedElements\n };\n }\n\n case ActionTypes.SHARE_TEMPLATE.SUCCESS: {\n const { template: { id } } = action;\n return { ...state, templateID: id };\n }\n\n case ActionTypes.PAN_MODE_SWITCH: {\n return {\n ...state,\n panMode: !state.panMode\n };\n }\n case ActionTypes.SELECTION_CHANGED_V2: {\n const { data } = action;\n const selectionChangesHashMap = data.reduce((result, current) => ({ ...result, [current.id]: current }), {});\n return {\n ...state,\n nodes: state.nodes.map(node => {\n if (selectionChangesHashMap[+node.id]) {\n return { ...node, selected: selectionChangesHashMap[+node.id].selected };\n }\n return node;\n }),\n newCanvasNodes: state.newCanvasNodes.map(node => {\n if (selectionChangesHashMap[+node.id]) {\n return { ...node, selected: selectionChangesHashMap[+node.id].selected };\n }\n return node;\n })\n };\n }\n case ActionTypes.DESELECT_ALL_ELEMENTS_V2: {\n return {\n ...state,\n nodes: state.nodes.map(node => {\n if (node.selected) {\n return { ...node, selected: false };\n }\n return node;\n }),\n newCanvasNodes: state.newCanvasNodes.map(node => {\n if (node.selected) {\n return { ...node, selected: false };\n }\n return node;\n })\n };\n }\n default:\n return state;\n }\n };\n};\n\nexport default createWorkflowReducer;\n","/* eslint-disable complexity */\nimport {\n SELECTION_CHANGED,\n UPDATE_TREE,\n CLEAR_SELECTION,\n UPDATE_USER_SELECTION,\n LOCKED_ELEMENT,\n LOCK_SINGLE_ELEMENT,\n UNLOCK_ALL,\n UPDATE_HOVERED_NODE,\n CLEAR_LINK_SELECTION,\n LINK_SELECTION_CHANGED,\n EDGE_SELECTION,\n SELECTION_CHANGED_V2,\n DESELECT_ALL_ELEMENTS_V2\n} from './actionTypes';\nimport isPointInsideRectangle from '../utils/diagram/isPointInsideRectangle';\nimport CanvasEngineBuilder from '../modules/Canvas/V1/CanvasEngineBuilder';\nimport { DEFAULT_FEATURES, WORKFLOW_V2 } from '../constants/features';\n\nconst initialState = {\n selectedElements: [],\n lockedElements: [],\n lockPressed: false,\n selectedLinks: [],\n selectionActive: false,\n transform: [0, 0, 1],\n userSelectionRect: {\n startX: 0,\n startY: 0,\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n draw: false,\n nodesSelectionActive: false,\n topLeftPoint: 0,\n bottomRightPoint: 0\n }\n};\n\nconst WorkflowInspector = (state = initialState, action) => {\n switch (action.type) {\n case SELECTION_CHANGED: {\n const { id, selected, isMultipleSelection } = action.data;\n const alreadySelectedElements = state.selectedElements;\n let selectedElements = [];\n if (DEFAULT_FEATURES[WORKFLOW_V2]) {\n selectedElements = isMultipleSelection ? [...alreadySelectedElements, id] : [id];\n } else {\n selectedElements = !selected\n ? alreadySelectedElements.filter(selectedID => selectedID !== id)\n : Array.from(new Set([...alreadySelectedElements, id]));\n }\n return {\n ...state,\n userSelectionRect: {\n draw: false\n },\n selectedElements\n };\n }\n case SELECTION_CHANGED_V2: {\n const { data = [] } = action;\n const { selectedElements, ...rest } = state;\n const updatedSelectedElements = data.reduce((result, current) => {\n const id = +current.id;\n if (current.selected) {\n result.add(id);\n return result;\n }\n if (result.has(id)) {\n result.delete(id);\n }\n return result;\n }, new Set([...selectedElements]));\n return {\n ...rest,\n selectedElements: [...updatedSelectedElements]\n };\n }\n case DESELECT_ALL_ELEMENTS_V2: {\n return {\n ...state,\n selectedElements: []\n };\n }\n case LINK_SELECTION_CHANGED: {\n const { id, selected, isMultipleSelection } = action.data;\n const alreadySelectedLinks = state.selectedLinks;\n let selectedLinks = [];\n if (isMultipleSelection) {\n selectedLinks = !selected\n ? alreadySelectedLinks.filter(selectedID => selectedID !== id)\n : Array.from(new Set([...alreadySelectedLinks, id]));\n } else {\n selectedLinks = [id];\n }\n return {\n ...state,\n selectedLinks\n };\n }\n case EDGE_SELECTION:\n case CLEAR_SELECTION: {\n return {\n ...state,\n selectedElements: []\n };\n }\n case UPDATE_HOVERED_NODE: {\n return {\n ...state,\n hoveredNode: action.data\n };\n }\n case CLEAR_LINK_SELECTION: {\n return {\n ...state,\n selectedLinks: []\n };\n }\n case UPDATE_TREE.REQUEST: {\n const { elements } = action.data;\n const { selectedElements } = state;\n const deleteElementActions = elements.filter(({ action: elementAction }) => elementAction === 'delete');\n const deletedElementIDs = deleteElementActions.map(({ elementID }) => elementID);\n const filteredSelectedElements = selectedElements.filter(id => deletedElementIDs.indexOf(id) === -1);\n return {\n ...state,\n selectedElements: filteredSelectedElements\n };\n }\n case UPDATE_USER_SELECTION.SUCCESS: {\n const { mousePos } = action;\n const allNodes = action.data;\n const startX = state.userSelectionRect.startX ?? 0;\n const startY = state.userSelectionRect.startY ?? 0;\n\n const nextUserSelectRect = {\n ...state.userSelectionRect,\n x: mousePos.x < startX ? mousePos.x : state.userSelectionRect.x,\n y: mousePos.y < startY ? mousePos.y : state.userSelectionRect.y,\n width: Math.abs(mousePos.x - startX),\n height: Math.abs(mousePos.y - startY)\n };\n const zoomFactor = CanvasEngineBuilder.model.getZoomLevel() / 100.0;\n const offsetX = CanvasEngineBuilder.model.getOffsetX();\n const offsetY = CanvasEngineBuilder.model.getOffsetY();\n const topLeftPoint = { x: (Math.min(startX, mousePos.x) - offsetX) / zoomFactor, y: (Math.min(startY, mousePos.y) - offsetY) / zoomFactor };\n const bottomRightPoint = { x: (Math.max(startX, mousePos.x) - offsetX) / zoomFactor, y: (Math.max(startY, mousePos.y) - offsetY) / zoomFactor };\n\n const selectedElements = allNodes.filter(node => {\n const element = CanvasEngineBuilder.getNode(node.id);\n if (!element?.options?.locked) {\n const center = element.getCenter();\n return isPointInsideRectangle({ topLeftPoint, bottomRightPoint, position: center });\n }\n return false;\n }).map(node => node.id);\n\n return {\n ...state,\n selectedElements: selectedElements,\n userSelectionRect: nextUserSelectRect\n };\n }\n case LOCKED_ELEMENT.REQUEST: {\n const { selectedElements } = state;\n selectedElements.forEach(nodeId => {\n const node = CanvasEngineBuilder.getNode(nodeId);\n if (!node?.options?.locked) {\n node.setLocked(true);\n node.setGhosted(true);\n }\n });\n return {\n ...state,\n selectedElements: [],\n lockedElements: [...selectedElements, ...state.lockedElements],\n lockPressed: true\n };\n }\n case LOCK_SINGLE_ELEMENT.REQUEST: {\n let newLockedElements = [...state.lockedElements];\n const { elementID } = action.data;\n const element = CanvasEngineBuilder.getNode(elementID);\n if (element.options.locked) {\n element.setLocked(false);\n element.setGhosted(false);\n newLockedElements = newLockedElements.filter(id => id !== elementID);\n } else {\n element.setLocked(true);\n element.setGhosted(true);\n newLockedElements.push(elementID);\n }\n return {\n ...state,\n lockedElements: newLockedElements\n };\n }\n case UNLOCK_ALL.REQUEST: {\n const { lockedElements } = state;\n // console.log(lockedElements);\n lockedElements.forEach(nodeID => {\n const element = CanvasEngineBuilder.getNode(nodeID);\n element.setLocked(false);\n element.setGhosted(false);\n });\n return {\n ...state,\n lockedElements: []\n };\n }\n default:\n return state;\n }\n};\n\nexport default WorkflowInspector;\n","import React from 'react';\nimport { toast } from 'react-toastify';\nimport FatalError from './FatalError';\n\nexport const ChannelToastError = error => {\n console.error('operation failed flushing channel.. Alert user!', error);\n toast.error(, {\n position: toast.POSITION.TOP_RIGHT,\n draggable: false,\n autoClose: false,\n closeOnClick: false,\n closeButton: false\n });\n};\n","import {\n put, call, all\n} from 'redux-saga/effects';\n\nimport Tracking from '@jotforminc/tracking';\nimport { handleCustomNavigation } from '@jotforminc/utils';\nimport { StorageHelper } from '@jotforminc/storage-helper';\nimport * as API from '../modules/api';\nimport * as ActionTypes from '../store/actionTypes';\nimport WatchmanRecorder from '../utils/WatchmanRecorder';\nimport { initializeElementEmails } from './workflowNew';\nimport { ChannelToastError } from '../components/Toast/ChannelToastError';\nimport { LocalStorageKeys } from '../utils/localStorage';\n\nimport { BETA_STATUS_FEATURES, DEFAULT_FEATURES } from '../constants/features';\n\nexport function* fetchUserFlow() {\n if (global.isTemplateMode) {\n return;\n }\n let user;\n try {\n user = yield call(API.fetchUser);\n } catch (e) {\n const userFlowHadFatalError = StorageHelper.getLocalStorageItem({\n key: LocalStorageKeys.USERFLOW_FATAL_ERROR,\n defaultValue: false\n }) === 'true';\n if (userFlowHadFatalError) {\n StorageHelper.setLocalStorageItem({\n key: LocalStorageKeys.USERFLOW_FATAL_ERROR,\n value: 'false'\n });\n const currentURL = window.location.href;\n handleCustomNavigation(`/logout.php?backTo=/login?rp=${currentURL}`, '_self', true);\n return;\n }\n StorageHelper.setLocalStorageItem({\n key: LocalStorageKeys.USERFLOW_FATAL_ERROR,\n value: 'true'\n });\n ChannelToastError(e);\n Tracking.captureException(e);\n return;\n }\n const username = user.credentials.username || user.credentials.email;\n\n Tracking.configureGlobalScope(scope => {\n scope.setUser({ username });\n });\n if (Tracking.FSisInitialized()) {\n Tracking.identify(username, {\n displayName: username,\n jfWorkflow_bool: true\n });\n }\n WatchmanRecorder.setUser(username);\n\n const [formUsers, forms, documents] = yield all([call(API.fetchFormUsers), call(API.fetchUserForms), call(API.fetchDocuments)]);\n\n const { email, name, avatarUrl } = user.credentials;\n const currentUsersFormUserIndex = formUsers.findIndex(fu => fu.email === email);\n if (currentUsersFormUserIndex === -1) {\n // This fixes missing avatars on ContactCards for now..\n formUsers.push({\n id: 'currentUser',\n email,\n name,\n avatarUrl\n });\n } else {\n const currentUsersFormUser = formUsers[currentUsersFormUserIndex];\n formUsers[currentUsersFormUserIndex] = {\n ...currentUsersFormUser,\n name,\n avatarUrl\n };\n }\n\n if (user.credentials.allowWorkflowFeatures) {\n BETA_STATUS_FEATURES.forEach(featureName => {\n DEFAULT_FEATURES[featureName] = true;\n });\n }\n\n global.user = user.credentials;\n yield put({\n type: ActionTypes.FETCH_USER.SUCCESS,\n data: {\n ...user, formUsers, forms, documents\n }\n });\n}\n\nexport function* setUserProp({ key, value }) {\n // TODO: use promise flow\n yield call(API.setUserSettings, key, value);\n}\n\nexport function* userLoginFlow() {\n yield fetchUserFlow();\n yield initializeElementEmails();\n}\n","import {\n call, select, takeEvery\n} from 'redux-saga/effects';\nimport { sendTrackData } from '../utils/sendTrackData';\nimport { getUsername } from '../store/selectors';\n\nimport {\n TRACK_EVENT\n} from '../store/actionTypes';\n\nfunction* trackEvent({ payload: { action = '', target = {} } } = {}) {\n if (!action) return;\n\n const username = yield select(getUsername);\n yield call(sendTrackData, username, action, { wfID: undefined, ...target });\n}\n\nexport function* trackEvents() {\n yield takeEvery(TRACK_EVENT, trackEvent);\n}\n","import { t } from '@jotforminc/translation';\nimport { EMAIL_TEMPLATE_TYPES } from '@jotforminc/email-wizards';\nimport {\n ENDPOINT_POSITION_OFFSET, END_POINT_WIDGET_WIDTH, WIDGETS_VERTICAL_OFFSET, WIDGET_WRAPPER_HEIGHT, WIDGET_WRAPPER_WIDTH, PORT_SVG_HALF_WIDTH\n} from '../styles/variables';\nimport { elementTypes } from './elementTypes';\n\nexport const APPROVAL_WITH_EMAILS_TEMPLATE = {\n templateID: 'system_1',\n templateType: 'predefined_by_system',\n payload: {\n elements: [\n {\n tempID: 'tmp_1',\n type: elementTypes.APPROVAL,\n root: true,\n outcomes: [{\n id: 1,\n outcomeID: 1,\n type: 'APPROVE',\n buttonColor: '#01bd6f',\n text: t('Approve'),\n textColor: '#fff',\n linkID: 'tmp_link_1'\n },\n {\n id: 2,\n outcomeID: 2,\n type: 'DENY',\n text: t('Deny'),\n textColor: '#fff',\n buttonColor: '#D53049',\n linkID: 'tmp_link_2'\n }]\n },\n {\n tempID: 'tmp_2',\n type: elementTypes.SEND_EMAIL,\n elementSubType: EMAIL_TEMPLATE_TYPES.WORKFLOW_APPROVE_APPROVED,\n expectedPosition: {\n reference: 'tmp_1',\n x: -(WIDGET_WRAPPER_WIDTH),\n y: WIDGET_WRAPPER_HEIGHT + WIDGETS_VERTICAL_OFFSET\n }\n },\n {\n tempID: 'tmp_3',\n type: elementTypes.SEND_EMAIL,\n elementSubType: EMAIL_TEMPLATE_TYPES.WORKFLOW_APPROVE_REJECTED,\n expectedPosition: {\n reference: 'tmp_1',\n x: WIDGET_WRAPPER_WIDTH,\n y: WIDGET_WRAPPER_HEIGHT + WIDGETS_VERTICAL_OFFSET\n }\n },\n {\n tempID: 'tmp_4',\n type: elementTypes.END_POINT,\n expectedPosition: {\n reference: 'tmp_2',\n x: (WIDGET_WRAPPER_WIDTH * 1.5) - (END_POINT_WIDGET_WIDTH / 2) + PORT_SVG_HALF_WIDTH,\n y: WIDGET_WRAPPER_HEIGHT + WIDGETS_VERTICAL_OFFSET\n }\n }\n ],\n links: [\n {\n tempID: 'tmp_link_1',\n from: 'tmp_1',\n to: 'tmp_2'\n },\n {\n tempID: 'tmp_link_2',\n from: 'tmp_1',\n to: 'tmp_3'\n },\n {\n tempID: 'tmp_link_3',\n from: 'tmp_2',\n to: 'tmp_4'\n },\n {\n tempID: 'tmp_link_4',\n from: 'tmp_3',\n to: 'tmp_4'\n }\n ]\n }\n};\n\nexport const APPROVAL_WITHOUT_EMAILS_TEMPLATE = {\n templateID: 'system_2',\n templateType: 'predefined_by_system',\n payload: {\n elements: [\n {\n tempID: 'tmp_1',\n type: elementTypes.APPROVAL,\n root: true,\n outcomes: [{\n id: 1,\n outcomeID: 1,\n type: 'APPROVE',\n buttonColor: '#01bd6f',\n text: t('Approve'),\n textColor: '#fff',\n linkID: 'tmp_link_1'\n },\n {\n id: 2,\n outcomeID: 2,\n type: 'DENY',\n text: t('Deny'),\n textColor: '#fff',\n buttonColor: '#D53049',\n linkID: 'tmp_link_2'\n }]\n },\n {\n tempID: 'tmp_2',\n type: elementTypes.END_POINT,\n elementSubType: EMAIL_TEMPLATE_TYPES.WORKFLOW_APPROVE_APPROVED,\n expectedPosition: {\n reference: 'tmp_1',\n x: -(END_POINT_WIDGET_WIDTH + ENDPOINT_POSITION_OFFSET),\n y: WIDGET_WRAPPER_HEIGHT + WIDGETS_VERTICAL_OFFSET\n }\n },\n {\n tempID: 'tmp_3',\n type: elementTypes.END_POINT,\n expectedPosition: {\n reference: 'tmp_1',\n x: WIDGET_WRAPPER_WIDTH + ENDPOINT_POSITION_OFFSET,\n y: WIDGET_WRAPPER_HEIGHT + WIDGETS_VERTICAL_OFFSET\n }\n }\n ],\n links: [\n {\n tempID: 'tmp_link_1',\n from: 'tmp_1',\n to: 'tmp_2'\n },\n {\n tempID: 'tmp_link_2',\n from: 'tmp_1',\n to: 'tmp_3'\n }\n ]\n }\n};\n\nexport const BINARY_DECISION_CONDITION_TEMPLATE = {\n templateID: 'system_3',\n templateType: 'predefined_by_system',\n payload: {\n elements: [\n {\n tempID: 'tmp_1',\n type: elementTypes.BINARY_DECISION,\n root: true,\n outcomes: [\n {\n id: 1,\n outcomeID: 1,\n type: 'CONDITION',\n conditionValue: 'TRUE',\n linkID: 'tmp_link_1'\n },\n {\n id: 2,\n outcomeID: 2,\n type: 'CONDITION',\n conditionValue: 'FALSE',\n linkID: 'tmp_link_2'\n }\n ]\n },\n {\n tempID: 'tmp_2',\n type: elementTypes.PLACEHOLDER,\n expectedPosition: {\n reference: 'tmp_1',\n x: -WIDGET_WRAPPER_WIDTH,\n y: WIDGET_WRAPPER_HEIGHT + WIDGETS_VERTICAL_OFFSET\n }\n },\n {\n tempID: 'tmp_3',\n type: elementTypes.PLACEHOLDER,\n expectedPosition: {\n reference: 'tmp_1',\n x: WIDGET_WRAPPER_WIDTH,\n y: WIDGET_WRAPPER_HEIGHT + WIDGETS_VERTICAL_OFFSET\n }\n }\n ],\n links: [\n {\n tempID: 'tmp_link_1',\n from: 'tmp_1',\n to: 'tmp_2'\n },\n {\n tempID: 'tmp_link_2',\n from: 'tmp_1',\n to: 'tmp_3'\n }\n ]\n }\n};\n\nexport const APPROVAL_WITH_PLACEHOLDER = {\n templateID: 'system_3',\n templateType: 'predefined_by_system',\n payload: {\n elements: [\n {\n root: true,\n tempID: 'tmp_1',\n type: elementTypes.PLACEHOLDER\n }\n ],\n links: []\n }\n};\n\nexport const ELEMENT_TEMPLATES = {\n [elementTypes.BINARY_DECISION]: BINARY_DECISION_CONDITION_TEMPLATE\n};\n","import { call, put, select } from 'redux-saga/effects';\nimport cloneDeep from 'lodash/cloneDeep';\n\nimport * as API from '../../modules/api';\nimport { flattenProperties } from '../../utils';\nimport * as Selectors from '../../store/selectors';\nimport * as ActionTypes from '../../store/actionTypes';\nimport { getNewElementPosition } from '../../utils/diagram/getElementPosition';\nimport CanvasEngineBuilder from '../../modules/Canvas/V1/CanvasEngineBuilder';\nimport { APPROVAL_WITH_EMAILS_TEMPLATE } from '../../constants/elementTemplates';\nimport { getNextElementID, createNodeFromData, generateDefaults } from '../helpers';\nimport { serializeDiagramFromLinkNode } from '../../utils/diagram/diagramToWorkflow';\nimport { DEFAULT_FEATURES, WORKFLOW_V2 } from '../../constants/features';\nimport { findEdgeId } from '../../viewStore/utils';\n\n// TODO: this possibly will not work good if we add a collaboration feature\nexport function* createFromTemplate({\n parentID,\n template: templateData,\n position: rootPosition\n}) {\n const isNewCanvas = DEFAULT_FEATURES[WORKFLOW_V2];\n if (!isNewCanvas) {\n CanvasEngineBuilder.disableRepaint();\n }\n try {\n const template = cloneDeep(templateData || APPROVAL_WITH_EMAILS_TEMPLATE);\n const requestPayload = {\n elements: [],\n links: [],\n ignoreDirtyFlag: true\n };\n const workflowID = yield select(Selectors.getWorkflowID);\n const lastElementID = yield call(getNextElementID);\n const lastLinkID = isNewCanvas ? findEdgeId() : CanvasEngineBuilder.getNextLinkID();\n const elementIDMap = {}; // keeps tempID: realID map\n const linkIDMap = {};\n // Compute elements\n const templateRoot = template.payload.elements.find(el => el.root);\n if (parentID) {\n // create link from parent to root of template\n template.payload.links.push({\n linkID: 'template_root',\n from: parentID,\n to: templateRoot.tempID\n });\n }\n for (let elementIndex = 0; elementIndex < template.payload.elements.length; elementIndex++) {\n const tempElement = template.payload.elements[elementIndex];\n const newID = lastElementID + elementIndex;\n const {\n tempID, type, expectedPosition, root, elementSubType, ...otherProps\n } = tempElement;\n elementIDMap[tempID] = newID;\n let position;\n if (expectedPosition && expectedPosition.reference) {\n const referenceElementID = elementIDMap[expectedPosition.reference];\n const referenceElemen = requestPayload.elements.find(a => a.data.id === referenceElementID);\n const { position: lastElementPosition } = referenceElemen.data;\n position = getNewElementPosition({\n type,\n position: {\n x: lastElementPosition.x + expectedPosition.x,\n y: lastElementPosition.y + expectedPosition.y\n },\n centeredPosition: expectedPosition.centered\n });\n } else if (root && rootPosition) {\n position = getNewElementPosition({ type, position: rootPosition });\n } else {\n position = getNewElementPosition({ type });\n }\n const elementDefaults = yield call(generateDefaults, { type, elementSubType, otherProps: { ...otherProps } });\n yield call(createNodeFromData, {\n id: newID, type, position, isSilent: true, elementSubType\n });\n const data = {\n id: newID, type, x: position.x, y: position.y, position, elementSubType, ...elementDefaults\n };\n requestPayload.elements.push({\n action: 'create',\n data\n });\n }\n\n // Compute links\n for (let linkIndex = 0; linkIndex < template.payload.links.length; linkIndex++) {\n const tempLink = template.payload.links[linkIndex];\n const {\n tempID, from, to\n } = tempLink;\n const newID = lastLinkID + linkIndex;\n linkIDMap[tempID] = newID;\n const fromNodeID = elementIDMap[from] || from;\n const toNodeID = elementIDMap[to] || to;\n const linkNode = CanvasEngineBuilder.addNewLinkNode({\n fromNodeID, toNodeID, labels: [{ label: '' }], isSilent: true\n });\n const data = serializeDiagramFromLinkNode(linkNode);\n requestPayload.links.push({\n action: 'create',\n data\n });\n }\n // TODO: instead of try a recursive replace\n requestPayload.elements.forEach(element => {\n if (Array.isArray(element.data.outcomes)) {\n element.data.outcomes.forEach(outcome => {\n // eslint-disable-next-line no-param-reassign\n outcome.linkID = linkIDMap[outcome.linkID];\n });\n // We need better way for this, but lets to it with this way for now.\n const elementNode = CanvasEngineBuilder.getNode(element.data.id);\n elementNode.setOutcomes(element.data.outcomes);\n }\n });\n const flattenedRequestPayload = cloneDeep(requestPayload);\n flattenedRequestPayload.elements = flattenedRequestPayload.elements.map(({ data, ...props }) => {\n return ({\n ...props,\n data: flattenProperties(data)\n });\n });\n yield call(API.updateTree, workflowID, flattenedRequestPayload);\n yield put({ type: ActionTypes.UPDATE_TREE.SUCCESS, data: { ...requestPayload, initial: true } });\n } catch (e) {\n console.log('Error in createFromTemplateFN', e);\n }\n if (!isNewCanvas) {\n CanvasEngineBuilder.enableRepaint();\n CanvasEngineBuilder.engine.repaintCanvas();\n }\n}\n","import {\n call, put, select, spawn, all\n} from 'redux-saga/effects';\nimport momentTz from 'moment-timezone';\n\nimport { handleCustomNavigation, getMissingPDFAttachmentMessage, getUrlParameter } from '@jotforminc/utils';\nimport { t } from '@jotforminc/translation';\nimport isEmpty from 'lodash/isEmpty';\nimport * as ActionTypes from '../../store/actionTypes';\nimport {\n retryAction, createNodeFromData, normalizeElementFromAPIData, normalizeLinkFromAPIData, normalizeQuestionsFromAPIData\n} from '../helpers';\n\nimport * as API from '../../modules/api';\nimport * as Selectors from '../../store/selectors';\nimport CanvasEngineBuilder from '../../modules/Canvas/V1/CanvasEngineBuilder';\nimport { normalizeTimespan } from '../../utils';\nimport { createFromTemplate } from './elementTemplates';\nimport { generateEngineEventChannel } from '../channels';\nimport WatchmanRecorder from '../../utils/WatchmanRecorder';\n\nimport CONFIGURATION from '../../constants/config';\nimport { WF_WARNING_TYPES } from '../../constants/warningTypes';\nimport { elementSubTypes, elementTypes } from '../../constants/elementTypes';\nimport {\n APPROVAL_WITH_PLACEHOLDER,\n APPROVAL_WITH_EMAILS_TEMPLATE,\n APPROVAL_WITHOUT_EMAILS_TEMPLATE\n} from '../../constants/elementTemplates';\nimport { loadConditionAssets } from '../../modules/ConditionsWizard/utils';\nimport {\n DEFAULT_FEATURES, ESSENTIAL_ELEMENT_PROPS, SHOW_INTERNAL_FORMS, WARNING_PANEL, WORKFLOW_RELEASED\n} from '../../constants/features';\n\nexport function* initializeApprovalFlow({ template }) {\n const startPoint = yield select(Selectors.getFirstStartPoint);\n yield put({ type: ActionTypes.SET_SAVING_STATE, data: true });\n yield call(createFromTemplate, { template, parentID: startPoint.id });\n}\n\nexport function* initializeCanvasEngine({ disableZoomToFit = false }) {\n yield put({ type: ActionTypes.SET_CANVAS_LOADING, data: true });\n const { nodes, links } = yield select(Selectors.getWorkflow);\n\n const fixedLinks = links.map(link => {\n const fromElement = nodes.find(({ id }) => id === link.fromElement);\n if (!fromElement?.outcomes) {\n return link;\n }\n\n const isLinkExist = fromElement.outcomes.find(({ linkID }) => linkID === link.id);\n if (isLinkExist) {\n return link;\n }\n\n const missingLink = fromElement.outcomes.find(({ linkID }) => !links.find(({ id }) => linkID === id));\n if (missingLink && missingLink.linkID) { // I don't remember why this block / logic exists, cem maybe you?\n return {\n ...link,\n id: missingLink?.linkID\n };\n }\n return link;\n });\n\n CanvasEngineBuilder.prepareModel(); // reset model\n // TODO: regenerate nodes right here.., separaate in future\n for (let l = 0; l < nodes.length; l++) {\n const element = nodes[l];\n yield call(createNodeFromData, element);\n }\n\n // TODO: regenerate links right here..., separate in future\n for (let l = 0; l < fixedLinks.length; l++) {\n CanvasEngineBuilder.addLinkNode(fixedLinks[l]);\n }\n\n yield spawn(generateEngineEventChannel(CanvasEngineBuilder.model));\n\n if (!disableZoomToFit && nodes.length > 1) {\n setTimeout(() => {\n CanvasEngineBuilder.zoomToFitScreen([], false);\n CanvasEngineBuilder.zoomToFitScreen([], false);\n }, 1); // Or save previous offset\n }\n\n yield put({ type: ActionTypes.SET_CANVAS_LOADING, data: false });\n}\n\n/**\n * @function createNewWorkflow\n * @param {Object} history\n * @param {Boolean} replaceHistory - Depending on how we arrived at the builder we need to replace history to prevent new\n * workflows being automatically created when hitting the back button. See WorkflowAutoCreator component.\n * @param {String} type\n * @param {String} formID\n */\nexport function* createNewWorkflow({\n history, replaceHistory = false, type, formID\n}) {\n const isWorkflowReleased = yield select(Selectors.isActiveFeature(WORKFLOW_RELEASED));\n const flowDefaultTitle = isWorkflowReleased ? t('Workflow') : t('Approval');\n const data = {\n title: flowDefaultTitle, formID, triggerOnEdit: 'ENABLED'\n };\n\n const fromLanding = getUrlParameter('fromLanding');\n\n if (type === 'scratch' && fromLanding === '1') {\n const forms = yield call(API.fetchUserForms);\n if (forms && Array.isArray(forms) && forms.length < 1) {\n const { id } = yield retryAction(API.cloneForm, 800);\n data.formID = id;\n }\n }\n\n if (formID) {\n const relatedForm = yield retryAction(API.fetchForm, formID);\n const workflowTitle = `${flowDefaultTitle}: ${relatedForm.title}`;\n data.title = workflowTitle;\n }\n yield call(prepareToCreateWF);\n const response = yield retryAction(API.createWorkflow, data);\n const { id: workflowID, isPreviouslyCreated } = response;\n if (isPreviouslyCreated) {\n handleCustomNavigation(`${CONFIGURATION.PUBLIC_BASE_PATH}${workflowID}`, '_self', true);\n return;\n }\n yield fetchWorkflowFlow({ workflowID });\n\n let template;\n switch (true) {\n case type === 'scratch': {\n template = APPROVAL_WITH_PLACEHOLDER;\n break;\n }\n case Boolean(formID): {\n const isEmailQuestionExists = yield select(Selectors.getFirstEmailQuestion);\n template = isEmailQuestionExists ? APPROVAL_WITH_EMAILS_TEMPLATE : APPROVAL_WITHOUT_EMAILS_TEMPLATE;\n break;\n }\n default:\n template = APPROVAL_WITH_EMAILS_TEMPLATE;\n break;\n }\n\n yield initializeCanvasEngine({ disableZoomToFit: false });\n yield initializeApprovalFlow({ template });\n\n const integrationParam = getUrlParameter('integration');\n const hasIntegration = integrationParam.length > 0;\n const integration = (integrationParam || '').replaceAll('+', '').split(' ').join('').toLowerCase();\n const newPath = `/${workflowID}/build${hasIntegration ? `/integration/${integration}` : ''}`;\n\n if (replaceHistory) history.replace(newPath);\n else history.push(newPath);\n}\n\nexport function* updateWorkflowProperties(data) {\n const workflowID = yield select(Selectors.getWorkflowID);\n const updated = yield retryAction(API.updateWorkflow, workflowID, data);\n yield put({ type: ActionTypes.UPDATE_WORKFLOW.SUCCESS, data: updated });\n}\n\nexport function* fetchUserForms() {\n const storeForms = yield select(Selectors.getUserForms);\n if (storeForms && storeForms.length > 0) {\n return;\n }\n const owner = yield select(Selectors.getWorkflowOwner);\n const teamID = yield select(Selectors.getTeamID);\n const forms = yield retryAction(API.loadUserForms, owner, teamID);\n yield put({ type: ActionTypes.FETCH_USER_FORMS.SUCCESS, data: { forms } });\n}\n\n// eslint-disable-next-line complexity, max-statements\nexport function* fetchWorkflowFlow({ workflowID, publishID }) { // make 1 to open draft &publish flow\n const [idParameter, workflowFetchFN] = publishID ? [publishID, API.fetchPublishedWorkflow] : [workflowID, API.fetchWorkflow];\n const {\n workflow,\n elements,\n links,\n templateID\n } = yield retryAction(workflowFetchFN, idParameter);\n if (elements.length === 0 || elements.findIndex(e => e.type === 'workflow_start_point') < 0) {\n const startPoint = yield retryAction(API.createStartPoint, workflowID);\n elements.push(startPoint);\n }\n const formId = elements?.[0]?.resourceID;\n if (workflow.code === '404') {\n handleCustomNavigation('/workflow/not-found', '_self');\n return;\n }\n\n const normalizedElements = [];\n const canUseWarnings = DEFAULT_FEATURES[WARNING_PANEL];\n let pdfs = [];\n WatchmanRecorder.setWorkflowID(workflowID);\n\n const formPromises = {};\n const formsByElements = {};\n\n for (let eIdx = 0; eIdx < elements.length; eIdx++) {\n const e = elements[eIdx];\n\n const normalized = normalizeElementFromAPIData(e);\n\n switch (true) {\n case normalized.type === elementTypes.START_POINT && normalized.resourceType === 'FORM' && !!normalized.resourceID:\n case normalized.type === elementTypes.ASSIGN_FORM && !!normalized.formID:\n case DEFAULT_FEATURES[SHOW_INTERNAL_FORMS] && normalized.type === elementTypes.ASSIGN_TASK && !!normalized.internalFormID:\n case DEFAULT_FEATURES[SHOW_INTERNAL_FORMS] && normalized.type === elementTypes.APPROVAL && !!normalized.internalFormID: {\n const resourceKey = {\n [elementTypes.START_POINT]: 'resourceID',\n [elementTypes.ASSIGN_FORM]: 'formID',\n [elementTypes.APPROVAL]: 'internalFormID',\n [elementTypes.ASSIGN_TASK]: 'internalFormID'\n }[normalized.type];\n const isStartPoint = normalized.type === elementTypes.START_POINT;\n const id = normalized?.[resourceKey];\n const formFetcher = isStartPoint ? API.fetchForm : API.fetchFormFromAPI;\n const questionFetcher = isStartPoint ? API.fetchFormQuestions : API.fetchFormQuestionsFromAPI;\n // Match elements with form promises\n formsByElements[eIdx] = id;\n // Create unique promises for each form\n formPromises[id] = [\n retryAction(() => formFetcher(id).then(result => ({ id, type: 'f', result })).catch(() => null)),\n retryAction(() => questionFetcher(id).then(result => ({ id, type: 'q', result })).catch(() => null))\n ];\n break;\n }\n case normalized.type === elementTypes.SEND_EMAIL: {\n normalized.pdfDocuments = (normalized?.pdfDocuments || []).map(doc => {\n if (doc?.importedPDF) return { ...doc, pdfID: 'importedPDF' };\n return doc;\n });\n break;\n }\n case normalized.type === elementTypes.SIGN_DOCUMENT && !!normalized.documentID: {\n try {\n const documentData = yield retryAction(API.fetchDocument, normalized.documentID);\n normalized.signDocumentObject = documentData;\n } catch (err) {\n console.log(err);\n }\n break;\n }\n default:\n break;\n }\n normalizedElements.push(normalized);\n }\n try {\n let results = (yield all(Object.values(formPromises).flatMap(e => e)));\n // Reduce the unique form promises into object\n results = results.filter(e => e).reduce((acc, curr) => ({ ...acc, [`${curr.id}${curr.type}`]: curr.result }), {});\n const flowForms = {};\n // eslint-disable-next-line no-restricted-syntax, guard-for-in\n for (const [eIdx, currentFormID] of Object.entries(formsByElements)) {\n const [form, questions] = [results?.[`${currentFormID}f`], results?.[`${currentFormID}q`]];\n if (isEmpty(form) || isEmpty(questions)) {\n continue;\n }\n normalizedElements[eIdx].resourceObject = { ...form, questions: normalizeQuestionsFromAPIData(questions) };\n if (normalizedElements[eIdx]?.subType === elementSubTypes.PAYMENT_FORM && !form?.hasPayment) {\n normalizedElements[eIdx].subType = null;\n normalizedElements[eIdx].name = 'Form';\n }\n flowForms[currentFormID] = normalizedElements[eIdx].resourceObject;\n }\n pdfs = Object.values(flowForms).reduce((prev, curr) => [...prev, ...(curr.pdfs || [])], formId ? [{ id: formId }, { id: 'importedPDF' }] : []);\n yield put({ type: ActionTypes.SET_FLOW_FORMS, data: { flowForms: Object.values(flowForms) } });\n } catch (err) {\n console.log(err);\n }\n\n if (canUseWarnings) {\n for (let eIdx = 0; eIdx < normalizedElements.length; eIdx++) {\n const normalized = normalizedElements[eIdx];\n switch (true) {\n case normalized.type === elementTypes.APPROVAL: {\n const { approvalEmail: { email } } = normalized;\n const { pdfattachment, pdfId } = email;\n if (pdfattachment === '1') {\n const pdfIds = pdfId.split(',').filter(Boolean);\n const hasMissingPDFAttachment = Boolean(getMissingPDFAttachmentMessage(\n pdfs.map(pdf => pdf.id), pdfIds\n ));\n if (hasMissingPDFAttachment) {\n yield put({ type: ActionTypes.ADD_WARNING, data: { elementID: `${normalized.id}`, type: WF_WARNING_TYPES.MISSING_PDF, element: normalized } });\n }\n }\n break;\n }\n case normalized.type === elementTypes.SEND_EMAIL: {\n const { pdfattachment, pdfDocuments } = normalized;\n if (pdfattachment === '1') {\n const hasMissingPDFAttachment = Boolean(getMissingPDFAttachmentMessage(\n pdfs.map(pdf => pdf.id), pdfDocuments.map(pdfDocument => pdfDocument.pdfID)\n ));\n if (hasMissingPDFAttachment) {\n yield put({ type: ActionTypes.ADD_WARNING, data: { elementID: `${normalized.id}`, type: WF_WARNING_TYPES.MISSING_PDF, element: normalized } });\n }\n }\n break;\n }\n default:\n break;\n }\n }\n }\n\n const normalizedLinks = links.map(l => normalizeLinkFromAPIData(l));\n let userTimeZone = yield select(Selectors.getUserTimeZone);\n try {\n if (!userTimeZone) {\n userTimeZone = momentTz.tz.guess();\n }\n } catch (e) {\n console.warn('Failed to get tz from client', e);\n }\n const updatedAt = normalizeTimespan(workflow.updated_at, userTimeZone);\n\n const obj = {\n ...workflow,\n templateID,\n updated_at: updatedAt,\n nodes: DEFAULT_FEATURES[ESSENTIAL_ELEMENT_PROPS] ? normalizedElements.map(e => ({ ...e, loaded: false })) : normalizedElements,\n links: normalizedLinks\n };\n\n const hasConditionElements = !!normalizedElements.find(f => [elementTypes.CONDITIONAL_BRANCH, elementTypes.BINARY_DECISION].indexOf(f.type) > -1);\n\n try {\n if (hasConditionElements) {\n yield call(loadConditionAssets); // Load assets to show errors properly on init\n }\n } catch (e) {\n console.log('asset load failed but it is not critical, lets skip');\n }\n yield put({ type: ActionTypes.FETCH_WORKFLOW.SUCCESS, data: obj });\n yield put({ type: ActionTypes.FETCH_WARNINGS.REQUEST });\n}\n\nexport function* prepareToCreateWF() {\n // Cleanup errors from previos workflow weird bug\n yield put({ type: ActionTypes.CLEAR_ALL_ERRORS });\n}\n","export const addSubmissionLink = formID => ({ items, ...rest }) => {\n return {\n items: items.map(item => ({ ...item, submissionLink: `/inbox/${formID}/${item.submissionID}` })),\n ...rest\n };\n};\n\nexport const parseSubmissions = submissions => {\n return submissions.map(({\n created_at: createdAt, trigger_id: submissionID, workflow_instance_id: id, properties: { assigneeUser }\n }) => {\n return {\n created_at: createdAt,\n id,\n assigneeUser,\n submissionID\n };\n });\n};\n\nexport const parseElementWarnings = warnings => {\n const [elementID, elementWarnings] = warnings;\n const entries = Object.entries(elementWarnings).map(([key, submissions]) => {\n const { taskName, message } = submissions?.[0]?.error;\n const reason = key;\n const parsedSubmissions = parseSubmissions(submissions);\n return {\n key: `${elementID}_${reason}`,\n elementID,\n taskName,\n reason,\n message,\n items: parsedSubmissions\n };\n });\n\n return entries;\n};\n","import {\n delay,\n put, select, takeEvery, takeLatest\n} from 'redux-saga/effects';\n\nimport * as API from '../modules/api';\nimport * as ActionTypes from '../store/actionTypes';\nimport {\n getEntryPointFormID, getWorkflowID, getLimits, getUsage, getNodes\n} from '../store/selectors';\nimport { addSubmissionLink, parseElementWarnings } from '../utils/warnings';\nimport { retryAction } from './helpers';\nimport { elementTypes } from '../constants/elementTypes';\nimport { DEFAULT_FEATURES, WARNING_PANEL } from '../constants/features';\n\nexport function* fetchWarnings() {\n yield delay(500);\n const workflowID = yield select(getWorkflowID);\n const formID = yield select(getEntryPointFormID);\n const warnings = yield retryAction(API.fetchWarnings, workflowID);\n const parsedWarnings = Object.entries(warnings).flatMap(parseElementWarnings).map(addSubmissionLink(formID));\n\n const elements = yield select(getNodes);\n const isContainsSignDocumentElement = elements?.filter(q => q.type === elementTypes.SIGN_DOCUMENT);\n const limits = yield select(getLimits);\n const usages = yield select(getUsage);\n const limitWarnings = [];\n\n if (isContainsSignDocumentElement.length > 0 && (usages?.signed_documents >= limits?.signedDocuments)) {\n limitWarnings.push({\n elementID: isContainsSignDocumentElement[0].id,\n key: `${isContainsSignDocumentElement[0].id}_MONTHLY_SIGNED_DOCUMENT_LIMIT_EXCEEDED`,\n text: 'You have reached [1[message]] limit on your account.',\n message: 'monthly signed documents',\n campaign: 'signedDocuments',\n content: '-full-signedDocuments',\n product: 'sign'\n });\n }\n\n yield put({ type: ActionTypes.FETCH_WARNINGS.SUCCESS, data: parsedWarnings, limitWarnings });\n // yield put({ type: ActionTypes.FETCH_WARNINGS.SUCCESS, data: warnings });\n}\n\nexport function* cancelMultipleInstances({ data: { instanceIDs } }) {\n for (let i = 0; i < instanceIDs.length; i++) {\n const instanceID = instanceIDs[i];\n yield cancelSingleInstance({ instanceID });\n }\n}\n\nexport function* cancelSingleInstance({ instanceID }) {\n try {\n const success = yield retryAction(API.cancelInstance, instanceID);\n if (success) {\n yield put({ type: ActionTypes.CANCEL_INSTANCES.SUCCESS });\n yield put({ type: ActionTypes.FETCH_WARNINGS.REQUEST });\n } else {\n yield put({ type: ActionTypes.CANCEL_INSTANCES.ERROR });\n }\n } catch (err) {\n yield put({ type: ActionTypes.CANCEL_INSTANCES.ERROR });\n }\n}\n\nexport function* restartMultipleInstances({ data: { instanceIDs } }) {\n for (let i = 0; i < instanceIDs.length; i++) {\n const instanceID = instanceIDs[i];\n yield restartSingleInstance({ instanceID });\n }\n}\n\nexport function* restartSingleInstance({ instanceID }) {\n try {\n const newInstance = yield retryAction(API.restartInstance, instanceID);\n if (newInstance) {\n yield put({ type: ActionTypes.RESTART_INSTANCES.SUCCESS });\n yield put({ type: ActionTypes.FETCH_WARNINGS.REQUEST });\n } else {\n yield put({ type: ActionTypes.RESTART_INSTANCES.ERROR });\n }\n } catch (err) {\n yield put({ type: ActionTypes.RESTART_INSTANCES.ERROR });\n }\n}\n\nexport function* watchWarningsFlow() {\n if (DEFAULT_FEATURES[WARNING_PANEL]) {\n yield takeLatest([ActionTypes.FETCH_WARNINGS.REQUEST], fetchWarnings);\n }\n yield takeEvery([ActionTypes.CANCEL_INSTANCES.REQUEST], cancelMultipleInstances);\n yield takeEvery([ActionTypes.RESTART_INSTANCES.REQUEST], restartMultipleInstances);\n}\n","import { buffers } from 'redux-saga';\nimport { actionChannel } from 'redux-saga/effects';\n\nexport function* createActionChannel({ actionType, bufferLimit = 1 }) {\n const buffer = buffers.expanding(bufferLimit);\n const channel = yield actionChannel(actionType, buffer);\n return { buffer, channel };\n}\n","import { call, take, flush } from 'redux-saga/effects';\nimport { safeCall } from '../helpers';\nimport { createActionChannel } from '../channels/action';\n\nimport * as ActionTypes from '../../store/actionTypes';\nimport { ChannelToastError } from '../../components/Toast/ChannelToastError';\n\nexport function* watchFetch() {\n const { channel } = yield call(createActionChannel, { actionType: ActionTypes.FETCH });\n while (true) {\n try {\n const { apiCall, callback } = yield take(channel);\n if (!apiCall) {\n continue;\n }\n\n const response = yield safeCall(apiCall);\n if (!callback) {\n continue;\n }\n\n yield callback(response);\n } catch (e) {\n ChannelToastError(e);\n yield flush(channel);\n }\n }\n}\n","import { t } from '@jotforminc/translation';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\n\nexport const CONNECTION_STATES = {\n LOST: 'LOST',\n RESTORED: 'RESTORED'\n};\n\nconst ConnectionState = ({\n // eslint-disable-next-line react/prop-types\n type\n}) => (\n
    \n {ReactDOM.createPortal(
    , document.getElementById('toast-modal-root'))}\n
    {t(type === CONNECTION_STATES.LOST ? 'Internet connection is lost. We are trying to connect..' : 'You are back online!')}
    \n
    \n);\n\nexport default ConnectionState;\n","import { eventChannel } from 'redux-saga';\nimport { INTERNET_CONNECTION_LOST, INTERNET_CONNECTION_RESTORED } from '../../store/actionTypes';\n\nexport const createNetworkStatusChannel = () => {\n return eventChannel(emit => {\n const emitOffline = () => {\n emit(INTERNET_CONNECTION_LOST);\n };\n const emitOnline = () => {\n emit(INTERNET_CONNECTION_RESTORED);\n };\n window.addEventListener('offline', emitOffline);\n window.addEventListener('online', emitOnline);\n return () => {\n window.removeEventListener('offline', emitOffline);\n window.removeEventListener('online', emitOnline);\n };\n });\n};\n","import React from 'react';\nimport { toast } from 'react-toastify';\nimport {\n call, take\n} from 'redux-saga/effects';\nimport ConnectionState, { CONNECTION_STATES } from '../../components/Toast/ConnectionState';\n\nimport * as ActionTypes from '../../store/actionTypes';\nimport { createNetworkStatusChannel } from '../channels/network';\n\nexport function handleNetworkChanges(status) {\n switch (status) {\n case ActionTypes.INTERNET_CONNECTION_RESTORED: {\n toast.dismiss();\n toast.success(, {\n className: 'toast-connection-restored',\n position: toast.POSITION.TOP_RIGHT,\n autoClose: 5000,\n closeOnClick: true,\n closeButton: true\n });\n break;\n }\n default:\n toast.dismiss();\n toast.error(, {\n position: toast.POSITION.TOP_RIGHT,\n className: 'toast-connection-lost',\n autoClose: false,\n closeOnClick: false,\n closeButton: false,\n draggable: false\n });\n break;\n }\n}\n\nexport function* watchNetworkChanges() {\n const channel = yield call(createNetworkStatusChannel);\n while (true) {\n const status = yield take(channel);\n yield call(handleNetworkChanges, status);\n }\n}\n","import sortBy from 'lodash/sortBy';\nimport { select } from 'redux-saga/effects';\nimport { t } from '@jotforminc/translation';\nimport { OutcomeTypes } from '../../constants/OutcomeTypes';\nimport CanvasEngineBuilder from '../../modules/Canvas/V1/CanvasEngineBuilder';\nimport { putUndoableAction } from '../helpers';\nimport * as Selectors from '../../store/selectors';\nimport * as ActionTypes from '../../store/actionTypes';\nimport { updateWorkflowElement } from '../workflowNew';\nimport { getNextOutcomeButtonColor } from '../../utils/diagram/generateNewOutcome';\nimport { DEFAULT_FEATURES, WORKFLOW_V2 } from '../../constants/features';\nimport { generateNewOutcome } from '../../modules/Canvas/V2/utils';\nimport { linkAccesor } from '../workflowNew/temporaryCanvasBuilderAdapter';\nimport { elementTypes } from '../../constants/elementTypes';\n\nconst isNewCanvas = DEFAULT_FEATURES[WORKFLOW_V2];\n\nexport function* updateLinkOutcome({ link, outcome }) {\n let outcomes; let links; let elementID;\n if (isNewCanvas) {\n const wrappedLink = linkAccesor(link);\n const linkOwnerElement = wrappedLink.getOwnerElement();\n if (!linkOwnerElement.canShowOutcomesInDropdown()) {\n return false;\n }\n outcomes = linkOwnerElement.getOutcomes();\n links = linkOwnerElement.getLinksByPortType();\n elementID = linkOwnerElement.getID();\n } else {\n const linkOwnerElement = link.getOwnerElement();\n if (!linkOwnerElement.canShowOutcomesInDropdown()) {\n return false;\n }\n outcomes = linkOwnerElement.getOutcomes();\n links = linkOwnerElement.getLinksByPortType();\n elementID = linkOwnerElement.getID();\n }\n\n const getLinkID = selectedLink => (isNewCanvas ? selectedLink.id : selectedLink.getID());\n\n const updatedOutcomes = outcomes.map(tmpOutcome => {\n const { linkID, id, ...rest } = tmpOutcome;\n if (id === outcome.id) {\n return { ...rest, linkID: getLinkID(link), id };\n }\n if (links.length === 2) {\n const otherSelectedOutcome = outcomes.find(o => o.linkID === getLinkID(link));\n if (otherSelectedOutcome && otherSelectedOutcome.id === id) {\n const previousLinkID = outcomes.find(o => o.id === outcome.id)?.linkID;\n return { ...otherSelectedOutcome, linkID: previousLinkID };\n }\n }\n if (linkID === getLinkID(link)) {\n return { ...rest, id };\n }\n return tmpOutcome;\n });\n\n const sortedOutcomes = sortBy(updatedOutcomes, ({ id }) => id);\n const linkID = getLinkID(link);\n const elementUpdateData = { id: elementID, element_id: elementID, outcomes: sortedOutcomes };\n const payload = {\n elements: [{ action: 'update', elementID, data: elementUpdateData }],\n links: [{ action: 'update', linkID, data: { id: linkID, link_id: linkID, labels: [{ justCreated: true, label: outcome.text || outcome.conditionValue }] } }]\n };\n\n yield putUndoableAction({ type: ActionTypes.UPDATE_TREE.REQUEST, data: payload });\n}\n\nconst handleOutcomeType = ({ text }) => {\n let type;\n switch (text) {\n case t('Approve'):\n type = { type: OutcomeTypes.APPROVE };\n break;\n case t('Deny'):\n type = { type: OutcomeTypes.DENY };\n break;\n default:\n type = { type: OutcomeTypes.CUSTOM };\n break;\n }\n return type;\n};\n\nexport function* updateMultipleOutcome({ elementID, outcomeProps, data }) {\n const ownerOutcomes = yield select(Selectors.getOutcomesByElementID(elementID));\n const updatedOutcomes = ownerOutcomes.map(outcome => {\n const type = handleOutcomeType({ text: outcome.text });\n return { ...outcome, ...type, ...outcomeProps };\n });\n\n yield updateWorkflowElement({ elementID, outcomes: updatedOutcomes, ...data });\n // UPDATE FORM QUESTIONS\n}\n\nexport function* updateElementOutcome({ elementID, outcomeID, data }) {\n const ownerOutcomes = yield select(Selectors.getOutcomesByElementID(elementID));\n const updatedOutcomes = ownerOutcomes.map(outcome => {\n if (outcome.id === outcomeID) {\n const type = handleOutcomeType({ text: data.text });\n return {\n ...outcome,\n ...data,\n ...type\n };\n }\n return outcome;\n });\n\n yield updateWorkflowElement({ elementID, outcomes: updatedOutcomes });\n // UPDATE FORM QUESTIONS\n}\n\nexport function* addOutcomeToElement({ elementID, outcome }) {\n let outcomeToAdd = null;\n\n const outcomes = yield select(Selectors.getOutcomesByElementID(elementID));\n\n if (isNewCanvas) {\n const element = yield select(Selectors.getElementByID(elementID));\n const assignTaskFilter = element?.type === elementTypes.ASSIGN_TASK ? (color => color !== '#D53049') : (f => f);\n outcomeToAdd = outcome || {\n ...generateNewOutcome({\n type: element.type,\n outcomes\n }),\n text: t('New Outcome'),\n buttonColor: getNextOutcomeButtonColor({ outcomes: outcomes, filterFunctions: assignTaskFilter })\n };\n } else {\n outcomeToAdd = outcome || {\n ...CanvasEngineBuilder.getNode(elementID).generateNewOutcome(),\n text: t('New Outcome'),\n buttonColor: getNextOutcomeButtonColor({ outcomes: CanvasEngineBuilder.getNode(elementID).getOutcomes() })\n };\n }\n\n const newOutcomes = [...outcomes, outcomeToAdd];\n yield updateWorkflowElement({ elementID, outcomes: newOutcomes });\n // UPDATE FORM QUESTIONS\n}\n\nexport function* clearLinkFromOutcome({ elementID, outcomeID }) {\n const outcomes = yield select(Selectors.getOutcomesByElementID(elementID));\n const newOutcomes = outcomes.map(({ id, linkID, ...rest }) => {\n if (id === outcomeID) {\n return { id, ...rest };\n }\n return { id, linkID, ...rest };\n });\n yield updateWorkflowElement({ elementID, outcomes: newOutcomes });\n}\n","import * as ActionTypes from '../store/actionTypes';\nimport { fetchElementData, removeOutcome } from './workflow/elements';\nimport {\n createNewWorkflow, fetchWorkflowFlow, updateWorkflowProperties\n} from './workflow';\nimport { setUserProp } from './user';\nimport { shareTemplate } from './workflow/template';\nimport { applyUpdateTree } from './workflowNew/canvas';\nimport {\n updateLinkOutcome,\n addOutcomeToElement,\n clearLinkFromOutcome,\n updateElementOutcome,\n updateMultipleOutcome\n} from './workflow/outcomes';\nimport {\n addWorkflowLink,\n updateWorkflowLink,\n removeWorkflowLink,\n setWorkflowResource,\n placeElementOntoLabel,\n removeWorkflowElement,\n removeMultipleWorkflowElement,\n updateWorkflowElement,\n updateMultipleWorkflowElement,\n duplicateWorkflowElement,\n duplicateMultipleWorkflowElement,\n addWorkflowElementLeftPanel,\n addWorkflowElementOntoLabel,\n replaceWorkflowElementWithPlaceholder,\n replaceWorkflowPlaceholderWithElement,\n calculationOfPushNodes,\n updateWorkflowElementsPDF,\n updateElementWithCreateDefaultEmail,\n updateWorkflowResource,\n updateMultipleElementsAndLinks\n} from './workflowNew';\n\nconst actionMap = {\n [ActionTypes.UPDATE_TREE.REQUEST]: applyUpdateTree,\n [ActionTypes.REMOVE_ELEMENT.REQUEST]: removeWorkflowElement,\n [ActionTypes.REMOVE_MULTIPLE_ELEMENT.REQUEST]: removeMultipleWorkflowElement,\n [ActionTypes.DUPLICATE_ELEMENT.REQUEST]: duplicateWorkflowElement,\n [ActionTypes.DUPLICATE_MULTIPLE_ELEMENT.REQUEST]: duplicateMultipleWorkflowElement,\n [ActionTypes.UPDATE_ELEMENT.REQUEST]: updateWorkflowElement,\n [ActionTypes.UPDATE_MULTIPLE_ELEMENT.REQUEST]: updateMultipleWorkflowElement,\n [ActionTypes.CREATE_WORKFLOW.REQUEST]: createNewWorkflow,\n [ActionTypes.FETCH_WORKFLOW.REQUEST]: fetchWorkflowFlow,\n [ActionTypes.REMOVE_LINK.REQUEST]: removeWorkflowLink,\n [ActionTypes.ADD_LINK.REQUEST]: addWorkflowLink,\n [ActionTypes.UPDATE_LINK.REQUEST]: updateWorkflowLink,\n [ActionTypes.UPDATE_WORKFLOW.REQUEST]: updateWorkflowProperties,\n [ActionTypes.ADD_ELEMENT_FROM_LEFT_PANEL.REQUEST]: addWorkflowElementLeftPanel,\n [ActionTypes.UPDATE_LINK_OUTCOME.REQUEST]: updateLinkOutcome,\n [ActionTypes.UPDATE_ELEMENT_OUTCOME.REQUEST]: updateElementOutcome,\n [ActionTypes.UPDATE_MULTIPLE_OUTCOME.REQUEST]: updateMultipleOutcome,\n [ActionTypes.ADD_OUTCOME_TO_ELEMENT.REQUEST]: addOutcomeToElement,\n [ActionTypes.REMOVE_OUTCOME.REQUEST]: removeOutcome,\n [ActionTypes.CLEAR_LINK_FROM_OUTCOME.REQUEST]: clearLinkFromOutcome,\n [ActionTypes.SET_USER_SETTINGS.REQUEST]: setUserProp,\n [ActionTypes.ADD_ELEMENT_ONTO_LABEL.REQUEST]: addWorkflowElementOntoLabel,\n [ActionTypes.PLACE_ELEMENT_ONTO_LABEL.REQUEST]: placeElementOntoLabel,\n [ActionTypes.CONVERT_ELEMENT_TO_PLACEHOLDER.REQUEST]: replaceWorkflowElementWithPlaceholder,\n [ActionTypes.CONVERT_PLACEHOLDER_TO_ELEMENT.REQUEST]: replaceWorkflowPlaceholderWithElement,\n [ActionTypes.SET_RESOURCE.REQUEST]: setWorkflowResource,\n [ActionTypes.SHARE_TEMPLATE.REQUEST]: shareTemplate,\n [ActionTypes.CALCULATION_OF_PUSH_NODES.REQUEST]: calculationOfPushNodes,\n [ActionTypes.UPDATE_ELEMENTS_PDF.REQUEST]: updateWorkflowElementsPDF,\n [ActionTypes.FETCH_ELEMENT.REQUEST]: fetchElementData,\n [ActionTypes.UPDATE_ELEMENT_WITH_CREATE_DEFAULT_EMAIL.REQUEST]: updateElementWithCreateDefaultEmail,\n [ActionTypes.UPDATE_RESOURCE.REQUEST]: updateWorkflowResource,\n [ActionTypes.UPDATE_ELEMENTS_AND_LINKS.REQUEST]: updateMultipleElementsAndLinks\n};\n\nexport default actionMap;\n","import { put, call, select } from 'redux-saga/effects';\n\nimport { handleCustomNavigation } from '@jotforminc/utils';\nimport * as API from '../../modules/api';\nimport * as Selectors from '../../store/selectors';\nimport * as ActionTypes from '../../store/actionTypes';\n\nexport function* shareTemplate(data) {\n const workflowID = yield select(Selectors.getWorkflowID);\n const requestData = { ...data, approvalID: workflowID };\n const template = yield call(API.shareTemplate, requestData);\n yield put({ type: ActionTypes.SHARE_TEMPLATE.SUCCESS, template });\n const { slug } = template || {};\n if (slug) handleCustomNavigation(`/workflow-templates/${slug}`);\n return template;\n}\n","import {\n call, put, select, all\n} from 'redux-saga/effects';\nimport isEqual from 'lodash/isEqual';\nimport get from 'lodash/get';\nimport chunk from 'lodash/chunk';\nimport { isEnterprise } from '@jotforminc/enterprise-utils';\nimport { singleEmailInputEmailErrored } from '@jotforminc/utils';\nimport {\n SET_FIELD_ERRORS,\n CLEAR_FIELD_ERRORS,\n REPORT_ERRORS\n} from '../store/actionTypes';\nimport {\n getElementByID,\n getNodes,\n getElementLinks,\n getElementErrors,\n getFormEncryptionState,\n getUsedOutcomeIDs,\n getProducts,\n getEmailSuggestionList,\n getCombinedErrors,\n getAllRelatedFormQuestionsPrefixed,\n getIsAdmin,\n getFirstStartPointResourceID\n} from '../store/selectors';\nimport { WF_ERROR_TYPES } from '../constants/errorTypes';\nimport { elementSubTypes, elementTypes, MISSING_CONDITON_TEXT } from '../constants/elementTypes';\nimport { prepareConditionTermString } from '../components/Diagrams/Label/utils';\nimport {\n DEFAULT_FEATURES, DISABLE_FREE_TEXT_ON_RECIPIENTS, ERROR_UPDATE, IS_CONNECTED, INTEGRATIONS, SMTP_ERRORS\n} from '../constants/features';\nimport { isYes } from '../utils';\n\nfunction* checkErrorsForElement({ data }) {\n const { id: elementID } = data;\n const element = yield select(getElementByID(elementID));\n const existingErrors = yield select(getElementErrors(elementID));\n const defaultErrorTypes = errorTypesByElement.default;\n const computed = [];\n let isConnected = true;\n if (element) {\n const elementErrorTypes = errorTypesByElement[element.type] || [];\n const combinedErrorTypes = Array.from(new Set([...defaultErrorTypes, ...elementErrorTypes]));\n\n const links = yield select(getElementLinks(elementID));\n if (!DEFAULT_FEATURES[IS_CONNECTED]) {\n isConnected = isElementConnected(element, links);\n }\n if (!isConnected) {\n if (existingErrors.length > 0) {\n yield put({ type: CLEAR_FIELD_ERRORS, data: { elementID: elementID } }); // needed to clear errors if an elements existing links are removed\n }\n return;\n }\n for (let i = 0; i < combinedErrorTypes.length; i++) {\n const errorType = combinedErrorTypes[i];\n const errorChecker = errorCheckers[errorType];\n const isSuccess = yield call(errorChecker, element, links);\n if (!isSuccess) {\n if (DEFAULT_FEATURES[IS_CONNECTED] && errorType === 'ELEMENT_NOT_CONNECTED') {\n isConnected = false;\n }\n computed.push({ elementID, type: errorType });\n }\n }\n }\n if (computed.length > 0 && !isEqual(existingErrors, computed)) {\n yield put({ type: SET_FIELD_ERRORS, data: { elementID: elementID, errors: computed } });\n } else if (existingErrors.length > 0 && (!element || computed.length === 0)) {\n yield put({ type: CLEAR_FIELD_ERRORS, data: { elementID: elementID } });\n }\n}\n\nexport function* checkAllElements() {\n const allElements = yield select(getNodes);\n const chunkArr = chunk(allElements, 1);\n const existingErrors = (yield select(getCombinedErrors)).map(({ error }) => error);\n yield all(chunkArr.map(element => call(checkErrorsForElement, { data: { id: element[0].id } })));\n const newErrors = (yield select(getCombinedErrors)).map(({ error }) => error);\n if (JSON.stringify(newErrors) !== JSON.stringify(existingErrors)) {\n yield put({ type: REPORT_ERRORS, errors: newErrors });\n }\n}\n\nfunction isElementConnected(element, links) {\n const { id } = element;\n if (element.type === elementTypes.START_POINT) {\n return links.length > 0;\n }\n for (let i = 0; i < links.length; i++) {\n if (parseInt(links[i].toElement, 10) === parseInt(id, 10)) {\n return true;\n }\n }\n return false;\n}\n\nfunction approvalandSignRequireOutcomes(element) {\n if (!DEFAULT_FEATURES[ERROR_UPDATE]) return true;\n if (element?.subType === elementSubTypes.APPROVAL_WITH_SIGN) {\n const isAnyOutcomeChecked = (element?.outcomes || []).find(singleOutcome => singleOutcome?.outcomeSign === 'Yes');\n return isAnyOutcomeChecked;\n }\n return true;\n}\n\nfunction* approvalandSignOutcomesMustBeConnected(element, links) {\n if (!DEFAULT_FEATURES[ERROR_UPDATE]) return true;\n if (element?.subType === elementSubTypes.APPROVAL_WITH_SIGN) {\n const { id } = element;\n const fromLinks = [];\n const usedOutcomeIds = yield select(getUsedOutcomeIDs(id));\n for (let i = 0; i < links.length; i++) {\n if (parseInt(links[i].fromElement, 10) === parseInt(id, 10)) {\n fromLinks.push(links[i]);\n }\n }\n if (fromLinks.length === 0 && usedOutcomeIds.length === 0) {\n return false;\n }\n return true;\n }\n return true;\n}\n\nfunction* outcomesMustBeConnected(element, links) {\n if (!DEFAULT_FEATURES[ERROR_UPDATE]) return true;\n if (element?.subType !== elementSubTypes.APPROVAL_WITH_SIGN) {\n const { id } = element;\n const fromLinks = [];\n const usedOutcomeIds = yield select(getUsedOutcomeIDs(id));\n for (let i = 0; i < links.length; i++) {\n if (parseInt(links[i].fromElement, 10) === parseInt(id, 10)) {\n fromLinks.push(links[i]);\n }\n }\n if (fromLinks.length === 0 && usedOutcomeIds.length === 0) {\n return false;\n }\n return true;\n }\n return true;\n}\n\nfunction approverEmailMustBeFilled(element) {\n return element.isTeamApproval || element.approver.length > 0;\n}\n\nfunction teamApproverMustBeFilled(element) {\n return element?.isTeamApproval ? !!element?.team : true;\n}\n\nfunction assigneeEmailMustBeFilled(element) {\n return element.assignee.length > 0;\n}\n\nfunction approverEmailMustBeValid(element) {\n const { approver } = element;\n // Second parameter is isRequired flag, but on top of this fn we check it already.\n return approver?.length > 1 ? approver.filter(val => singleEmailInputEmailErrored([val], false)).length === 0 : !singleEmailInputEmailErrored(approver, false);\n}\n\nfunction assigneeEmailMustBeValid(element) {\n const { assignee } = element;\n // Second parameter is isRequired flag, but on top of this fn we check it already.\n return assignee?.length > 1 ? assignee.filter(val => singleEmailInputEmailErrored([val], false)).length === 0 : !singleEmailInputEmailErrored(assignee, false);\n}\n\nfunction escalationEmailMustBeValid(element) {\n const { escalation } = element;\n if (isYes(escalation?.escalated)) {\n return !singleEmailInputEmailErrored(escalation?.escalateTask?.escalateTo, false);\n }\n return true;\n}\n\nfunction* allOutcomesMustBeFilled(element, links) {\n const { id } = element;\n const fromLinks = [];\n const usedOutcomeIds = yield select(getUsedOutcomeIDs(id));\n for (let i = 0; i < links.length; i++) {\n if (parseInt(links[i].fromElement, 10) === parseInt(id, 10)) {\n if (usedOutcomeIds.length === 0 && links[i]) {\n return false;\n }\n fromLinks.push(links[i]);\n }\n }\n const hasEmptyOutcome = fromLinks.length > usedOutcomeIds.length;\n return !hasEmptyOutcome;\n}\n\nfunction emailRecipientLimitMustBeCorrect(element) {\n const { to } = element;\n // Todo: should be remove accountType from window!!!\n const emailLimit = ['FREE', 'GUEST'].includes(window?.__accountType) ? 1 : 10;\n const isLimitExceeded = Array.isArray(to) && to.length > emailLimit;\n if (isEnterprise()) {\n return true;\n }\n return !isLimitExceeded;\n}\n\nfunction* formMustBeUnEncrypted() {\n const isEncrypted = yield select(getFormEncryptionState);\n\n return !isEncrypted;\n}\n\nfunction emailRecipientMustBeFilled(element) {\n const { to } = element;\n if (Array.isArray(to)) {\n return to.length > 0;\n }\n return to !== '';\n}\n\nfunction emailRecipientMustBeValid(element) {\n const { to: recipientEmails, assignee } = element;\n const email = recipientEmails || assignee;\n const isValid = (email)\n // emailRecipientMustBeFilled already checks if it is empty\n ? (email.every(recipientEmail => (recipientEmail.isValid || recipientEmail.isValid === undefined))) : true;\n return isValid;\n}\n\nfunction* allConditionalBranchesMustHaveValidQuestions(element) {\n const questions = yield select(getAllRelatedFormQuestionsPrefixed);\n const products = yield select(getProducts);\n const formProps = { questions, products };\n const firstInvalidRecord = element.outcomes.find(({ conditionTerms, linkID }) => {\n return linkID && prepareConditionTermString(conditionTerms, formProps) === MISSING_CONDITON_TEXT;\n });\n return !firstInvalidRecord;\n}\nfunction branchMustHaveConditions(element) {\n if (!DEFAULT_FEATURES[ERROR_UPDATE]) return true;\n const { type } = element;\n if (type === elementTypes.CONDITIONAL_BRANCH) {\n const { outcomes = [] } = element;\n const userOutcomes = outcomes.filter(outcome => outcome.id !== 999);\n if (!userOutcomes.length) return false;\n }\n if (type === elementTypes.BINARY_DECISION) {\n const { conditionTerms } = element;\n if (conditionTerms.length < 1) return false;\n }\n return true;\n}\n\nfunction* binaryDecisionMustHaveValidConditions(element) {\n const questions = yield select(getAllRelatedFormQuestionsPrefixed);\n const products = yield select(getProducts);\n const formProps = { questions, products };\n return prepareConditionTermString(element.conditionTerms || [], formProps) !== MISSING_CONDITON_TEXT;\n}\n\nfunction extractEmail(value) {\n const isArray = Array.isArray(value);\n const singleValue = isArray ? value[0] : value;\n const email = typeof singleValue === 'string' ? singleValue : singleValue?.text;\n return email;\n}\n\nconst enterpriseEmailChecker = key => function* approverMustBeEnterprise(element) {\n if (!DEFAULT_FEATURES[DISABLE_FREE_TEXT_ON_RECIPIENTS]) return true;\n const formUsers = yield select(getEmailSuggestionList);\n const userEmails = formUsers.map(({ email }) => email);\n const emailObj = get(element, key);\n const email = extractEmail(emailObj);\n return userEmails.includes(email);\n};\n\nfunction assignFormAssigneeMustBeFilled(element) {\n const { assignee } = element;\n if (!assignee) return false;\n if (Array.isArray(assignee)) {\n return assignee.length > 0;\n }\n return assignee !== '';\n}\n\nfunction assignFormFormMustBeSelected(element) {\n const { formID } = element;\n return !!formID;\n}\n\nfunction signDocumentDocumentMustBeSelected(element) {\n const { documentID } = element;\n return !!documentID;\n}\n\nfunction signMustHaveParticipant(element) {\n const { signerMapping } = element;\n /*\n When we add a new sign document element three errors appear\n And two of them are almost equal. In order to not bloat the error bar\n We (Servet) decided to prevent this error if SIGN_DOCUMENT_EMPTY_PARTICIPANT error is already present.\n */\n if (!signerMapping) {\n return true;\n }\n return signerMapping.some(e => e?.fields?.length > 0);\n}\n\nfunction signFieldsMustBeFilled(element) {\n const { signerMapping } = element;\n if (!signerMapping) {\n return;\n }\n return signerMapping.length > 0 && signerMapping.filter(e => e?.fields?.length > 0).every(e => e?.email && e?.name);\n}\n\nfunction* checkSMTPConfigError(element) {\n if (!DEFAULT_FEATURES[SMTP_ERRORS]) return true;\n const isAdmin = yield select(getIsAdmin);\n return isAdmin && element?.smtps ? Object.values(element?.smtps)?.every(e => e) : true;\n}\n\nfunction checkIntegrationMissingAuth(element) {\n if (!DEFAULT_FEATURES[INTEGRATIONS]) return true;\n if (element?.subType === 'webhooksV2') return true;\n return element?.integrationAccountID;\n}\n\nfunction checkIntegrationMissingSettings(element) {\n if (!DEFAULT_FEATURES[INTEGRATIONS]) return true;\n return element?.integrationID;\n}\n\nfunction assignTaskMustBeFilled(element) {\n return element.name?.length > 0;\n}\n\nfunction* missingStartPointForm() {\n const id = yield select(getFirstStartPointResourceID);\n return !!id;\n}\n\nconst errorCheckers = {\n [WF_ERROR_TYPES.APPROVAL_OUTCOMES_NOT_CONNECTED]: outcomesMustBeConnected,\n [WF_ERROR_TYPES.APPROVAL_AND_SIGN_OUTCOMES_NOT_CONNECTED]: approvalandSignOutcomesMustBeConnected,\n [WF_ERROR_TYPES.APPROVAL_AND_SIGN_REQUIRE_OUTCOMES]: approvalandSignRequireOutcomes,\n [WF_ERROR_TYPES.EMPTY_APPROVER_EMAIL]: approverEmailMustBeFilled,\n [WF_ERROR_TYPES.INVALID_APPROVER_EMAIL]: approverEmailMustBeValid,\n [WF_ERROR_TYPES.SEND_EMAIL_RECIPIENT_LIMIT]: emailRecipientLimitMustBeCorrect,\n [WF_ERROR_TYPES.SEND_EMAIL_EMPTY_RECIPIENT]: emailRecipientMustBeFilled,\n [WF_ERROR_TYPES.SEND_EMAIL_INVALID_RECIPIENT]: emailRecipientMustBeValid,\n [WF_ERROR_TYPES.DISABLED_ON_ENCRYPTED_FORM]: formMustBeUnEncrypted,\n [WF_ERROR_TYPES.ELEMENT_HAS_EMPTY_OUTCOME]: allOutcomesMustBeFilled,\n [WF_ERROR_TYPES.CONDITIONAL_BRANCH_INVALID]: allConditionalBranchesMustHaveValidQuestions,\n [WF_ERROR_TYPES.BINARY_DECISION_INVALID_CONDITIONS]: binaryDecisionMustHaveValidConditions,\n [WF_ERROR_TYPES.BINARY_DECISION_HAS_EMPTY_OUTCOME]: allOutcomesMustBeFilled,\n [WF_ERROR_TYPES.BRANCH_EMPTY_CONDITIONS]: branchMustHaveConditions,\n [WF_ERROR_TYPES.BRANCHES_NOT_CONNECTED]: outcomesMustBeConnected,\n [WF_ERROR_TYPES.APPROVER_NOT_ENTERPRISE]: enterpriseEmailChecker('approver'),\n [WF_ERROR_TYPES.ESCALATION_NOT_ENTERPRISE]: enterpriseEmailChecker('escalation.escalateTask.escalateTo'),\n [WF_ERROR_TYPES.ASSIGN_FORM_RECIPIENT_EMPTY]: assignFormAssigneeMustBeFilled,\n [WF_ERROR_TYPES.ASSIGN_FORM_RECIPIENT_INVALID]: emailRecipientMustBeValid,\n [WF_ERROR_TYPES.ASSIGN_FORM_FORM_NOT_SELECTED]: assignFormFormMustBeSelected,\n [WF_ERROR_TYPES.ELEMENT_NOT_CONNECTED]: isElementConnected,\n [WF_ERROR_TYPES.SIGN_DOCUMENT_DOCUMENT_NOT_SELECTED]: signDocumentDocumentMustBeSelected,\n [WF_ERROR_TYPES.SIGN_DOCUMENT_NO_PARTICIPANTS]: signMustHaveParticipant,\n [WF_ERROR_TYPES.SIGN_DOCUMENT_EMPTY_PARTICIPANT]: signFieldsMustBeFilled,\n [WF_ERROR_TYPES.INVALID_ESCALATION_EMAIL]: escalationEmailMustBeValid,\n [WF_ERROR_TYPES.EMPTY_TEAM_APPROVAL]: teamApproverMustBeFilled,\n [WF_ERROR_TYPES.SMTP_CONFIG_ERROR]: checkSMTPConfigError,\n [WF_ERROR_TYPES.MISSING_QUCIKBOOKS_AUTHENTICATION]: checkIntegrationMissingAuth,\n [WF_ERROR_TYPES.MISSING_QUCIKBOOKS_SETTINGS]: checkIntegrationMissingSettings,\n [WF_ERROR_TYPES.ASSIGN_TASK_OUTCOMES_NOT_CONNECTED]: outcomesMustBeConnected,\n [WF_ERROR_TYPES.EMPTY_ASSIGN_TASK_EMAIL]: assigneeEmailMustBeFilled,\n [WF_ERROR_TYPES.INVALID_ASSIGN_TASK_EMAIL]: assigneeEmailMustBeValid,\n [WF_ERROR_TYPES.SIGN_DOCUMENT_OUTCOMES_NOT_CONNECTED]: outcomesMustBeConnected,\n [WF_ERROR_TYPES.ASSIGN_TASK_HEADER_EMTPY]: assignTaskMustBeFilled,\n [WF_ERROR_TYPES.ASSIGNEE_NOT_ENTERPRISE]: enterpriseEmailChecker('assignee'),\n [WF_ERROR_TYPES.MISSING_START_POINT]: missingStartPointForm\n};\n\nconst errorTypesByElement = {\n [elementTypes.APPROVAL]: [\n WF_ERROR_TYPES.APPROVAL_OUTCOMES_NOT_CONNECTED,\n WF_ERROR_TYPES.APPROVAL_AND_SIGN_OUTCOMES_NOT_CONNECTED,\n WF_ERROR_TYPES.APPROVAL_AND_SIGN_REQUIRE_OUTCOMES,\n WF_ERROR_TYPES.EMPTY_APPROVER_EMAIL,\n WF_ERROR_TYPES.INVALID_APPROVER_EMAIL,\n WF_ERROR_TYPES.ELEMENT_HAS_EMPTY_OUTCOME,\n WF_ERROR_TYPES.APPROVER_NOT_ENTERPRISE,\n WF_ERROR_TYPES.INVALID_ESCALATION_EMAIL,\n WF_ERROR_TYPES.EMPTY_TEAM_APPROVAL,\n WF_ERROR_TYPES.SMTP_CONFIG_ERROR\n ],\n [elementTypes.SEND_EMAIL]: [\n WF_ERROR_TYPES.SEND_EMAIL_EMPTY_RECIPIENT,\n WF_ERROR_TYPES.SEND_EMAIL_INVALID_RECIPIENT,\n WF_ERROR_TYPES.SEND_EMAIL_RECIPIENT_LIMIT,\n WF_ERROR_TYPES.SMTP_CONFIG_ERROR\n ],\n [elementTypes.START_POINT]: [\n WF_ERROR_TYPES.DISABLED_ON_ENCRYPTED_FORM\n ],\n [elementTypes.CONDITIONAL_BRANCH]: [\n WF_ERROR_TYPES.CONDITIONAL_BRANCH_INVALID,\n WF_ERROR_TYPES.ELEMENT_HAS_EMPTY_OUTCOME,\n WF_ERROR_TYPES.BRANCH_EMPTY_CONDITIONS,\n WF_ERROR_TYPES.BRANCHES_NOT_CONNECTED\n ],\n [elementTypes.BINARY_DECISION]: [\n WF_ERROR_TYPES.BINARY_DECISION_INVALID_CONDITIONS,\n WF_ERROR_TYPES.BINARY_DECISION_HAS_EMPTY_OUTCOME,\n WF_ERROR_TYPES.BRANCH_EMPTY_CONDITIONS,\n WF_ERROR_TYPES.BRANCHES_NOT_CONNECTED\n ],\n [elementTypes.ASSIGN_FORM]: [\n WF_ERROR_TYPES.ASSIGN_FORM_FORM_NOT_SELECTED,\n WF_ERROR_TYPES.ASSIGN_FORM_RECIPIENT_EMPTY,\n WF_ERROR_TYPES.ASSIGN_FORM_RECIPIENT_INVALID,\n WF_ERROR_TYPES.SMTP_CONFIG_ERROR\n ],\n [elementTypes.SIGN_DOCUMENT]: [\n WF_ERROR_TYPES.SIGN_DOCUMENT_DOCUMENT_NOT_SELECTED,\n WF_ERROR_TYPES.SIGN_DOCUMENT_NO_PARTICIPANTS,\n WF_ERROR_TYPES.SIGN_DOCUMENT_EMPTY_PARTICIPANT,\n WF_ERROR_TYPES.ELEMENT_HAS_EMPTY_OUTCOME,\n WF_ERROR_TYPES.SIGN_DOCUMENT_OUTCOMES_NOT_CONNECTED\n ],\n [elementTypes.INTEGRATION]: [\n WF_ERROR_TYPES.MISSING_QUCIKBOOKS_AUTHENTICATION,\n WF_ERROR_TYPES.MISSING_QUCIKBOOKS_SETTINGS,\n WF_ERROR_TYPES.MISSING_START_POINT\n ],\n [elementTypes.ASSIGN_TASK]: [\n WF_ERROR_TYPES.ASSIGN_TASK_OUTCOMES_NOT_CONNECTED,\n WF_ERROR_TYPES.EMPTY_ASSIGN_TASK_EMAIL,\n WF_ERROR_TYPES.INVALID_ASSIGN_TASK_EMAIL,\n WF_ERROR_TYPES.ELEMENT_HAS_EMPTY_OUTCOME,\n WF_ERROR_TYPES.ASSIGNEE_NOT_ENTERPRISE,\n WF_ERROR_TYPES.SMTP_CONFIG_ERROR,\n WF_ERROR_TYPES.ASSIGN_TASK_HEADER_EMTPY\n ],\n default: [\n WF_ERROR_TYPES.ELEMENT_NOT_CONNECTED\n ]\n};\n","import {\n UPDATE_ELEMENT,\n UPDATE_MULTIPLE_ELEMENT,\n UPDATE_LINK,\n ADD_ELEMENT,\n ADD_LINK,\n REMOVE_ELEMENT,\n REMOVE_LINK,\n UPDATE_WORKFLOW,\n ADD_ELEMENT_FROM_LEFT_PANEL,\n ADD_BLOCK_ELEMENT,\n CONVERT_ELEMENT_TO_PLACEHOLDER,\n UPDATE_TREE,\n ADD_ELEMENT_ONTO_LABEL,\n RIGHT_PANEL_TOGGLED,\n SELECTION_CHANGED\n} from './actionTypes';\n\nexport const saveIndicatorActions = [\n UPDATE_ELEMENT.REQUEST,\n UPDATE_MULTIPLE_ELEMENT.REQUEST,\n UPDATE_LINK.REQUEST,\n ADD_ELEMENT.REQUEST,\n ADD_LINK.REQUEST,\n REMOVE_ELEMENT.REQUEST,\n REMOVE_LINK.REQUEST,\n UPDATE_WORKFLOW.REQUEST,\n ADD_ELEMENT_FROM_LEFT_PANEL.REQUEST,\n ADD_BLOCK_ELEMENT.REQUEST,\n CONVERT_ELEMENT_TO_PLACEHOLDER.REQUEST\n];\n\nexport const setDirtyActions = [\n UPDATE_ELEMENT.SUCCESS,\n UPDATE_MULTIPLE_ELEMENT.SUCCESS,\n UPDATE_LINK.SUCCESS,\n ADD_ELEMENT.SUCCESS,\n ADD_LINK.SUCCESS,\n REMOVE_ELEMENT.SUCCESS,\n REMOVE_LINK.SUCCESS,\n UPDATE_TREE.SUCCESS\n];\n\nexport const guestTriggerActions = [\n ADD_ELEMENT_FROM_LEFT_PANEL.REQUEST,\n UPDATE_ELEMENT.REQUEST,\n UPDATE_MULTIPLE_ELEMENT.REQUEST,\n ADD_ELEMENT_ONTO_LABEL.REQUEST,\n UPDATE_WORKFLOW.REQUEST\n];\n\nexport const feedbackTriggerActions = [\n RIGHT_PANEL_TOGGLED,\n ADD_ELEMENT_FROM_LEFT_PANEL.REQUEST,\n UPDATE_ELEMENT.REQUEST,\n UPDATE_MULTIPLE_ELEMENT.REQUEST,\n ADD_ELEMENT_ONTO_LABEL.REQUEST,\n UPDATE_WORKFLOW.REQUEST,\n SELECTION_CHANGED\n];\n","import { select } from 'redux-saga/effects';\nimport { checkObjectHasProperty } from '../../utils';\nimport { IframeManager } from './IframeManager';\nimport { getElementByID, getWorkflowFormBuilder } from '../../store/selectors';\n\nexport const postMessage = message => {\n const iframe = IframeManager.getIframe();\n if (!iframe) return;\n if (iframe.postMessage && typeof iframe.postMessage === 'function') {\n iframe.postMessage(message);\n }\n};\n\nexport function* checkInternalFormUpdateElements(elements) {\n const elementData = elements.map(element => element.data)?.find(value => checkObjectHasProperty(value, ['outcomes', 'name', 'taskDescription', 'header']));\n if (elementData) {\n const { element_id: elementID } = elementData;\n const element = yield select(getElementByID(elementID));\n if (element.internalFormID) {\n postMessage({ type: '@WORKFLOW/FETCH_FORM_QUESTIONS', payload: element.internalFormID });\n }\n }\n}\n\nexport function* checkInternalFormProperties() {\n const { formID } = yield select(getWorkflowFormBuilder);\n postMessage({ type: '@WORKFLOW/FETCH_FORM_PROPERTIES', payload: formID });\n}\n","/* eslint-disable complexity */\nimport {\n take, select, put, call, flush\n} from 'redux-saga/effects';\nimport actionMap from '../actionMap';\nimport * as Selectors from '../../store/selectors';\nimport { updateWorkflow } from '../../actionCreators';\nimport * as ActionTypes from '../../store/actionTypes';\nimport { checkAllElements } from '../workflowSupervisor';\nimport { createActionChannel } from '../channels/action';\nimport { setDirtyActions, saveIndicatorActions } from '../../store/actionGroups';\nimport { ChannelToastError } from '../../components/Toast/ChannelToastError';\nimport { checkInternalFormProperties, checkInternalFormUpdateElements } from '../formBuilder/workflowFormBuilder';\n\nexport function* watchWorkflowRequests() {\n const { buffer, channel } = yield call(createActionChannel, {\n actionType: ({ type }) => /(@WORKFLOW\\/|FETCH_USER).*\\/(REQUEST|SUCCESS|ERROR)/.test(type)\n });\n\n while (true) {\n const { type, data } = yield take(channel);\n const isSaving = yield select(Selectors.getSavingState);\n const isRequestAction = /@WORKFLOW\\/(.*)\\/REQUEST/.test(type);\n const isSuccessAction = /@WORKFLOW\\/(.*)\\/SUCCESS/.test(type);\n const isFetchUserAction = /FETCH_USER(.*)\\/SUCCESS/.test(type);\n try {\n const relatedAction = actionMap[type];\n switch (true) {\n case isSuccessAction:\n if (buffer.isEmpty()) {\n yield call(checkAllElements);\n yield put({ type: ActionTypes.FETCH_WARNINGS.REQUEST });\n\n const isWorkflowFetchRequest = /^@WORKFLOW\\/FETCH_WORKFLOW\\/(REQUEST|FAILURE|SUCCESS)$/.test(type);\n if (!isWorkflowFetchRequest) {\n yield put({ type: ActionTypes.PUBLISH_WORKFLOW });\n }\n }\n // if (relatedAction)\n if (type === ActionTypes.UPDATE_TREE.SUCCESS) {\n const { elements = [] } = data;\n if (elements.length) {\n yield call(checkInternalFormUpdateElements, elements);\n }\n }\n\n if (type === ActionTypes.UPDATE_WORKFLOW.SUCCESS) {\n const { title = null } = data;\n if (title) {\n yield call(checkInternalFormProperties);\n }\n }\n\n const isDirty = yield select(Selectors.getWorkflowIsDirty);\n if (!isDirty && setDirtyActions.includes(type) && !data.ignoreDirtyFlag) {\n yield put(updateWorkflow({ isDirty: '1' }));\n }\n break;\n case isFetchUserAction:\n if (buffer.isEmpty()) {\n yield call(checkAllElements);\n }\n break;\n case isRequestAction && typeof relatedAction !== 'undefined':\n const publishStatus = yield select(Selectors.getPublishStatus);\n const publishedFlowAllowedActions = [ActionTypes.FETCH_WORKFLOW.REQUEST];\n if (publishStatus === 'PUBLISHED' && publishedFlowAllowedActions.includes(type)) {\n console.log(`${type} action is not permitted for published flows`);\n } else {\n if (!isSaving && saveIndicatorActions.includes(type)) {\n yield put({ type: ActionTypes.SET_SAVING_STATE, data: true });\n }\n yield call(relatedAction, data);\n }\n break;\n default:\n console.log('WORKFLOW CHANNEL HAS NO CORRESPONDING ACTION FOR:', type);\n break;\n }\n } catch (e) {\n ChannelToastError(e);\n yield flush(channel);\n }\n }\n}\n","import {\n all, take, put, select\n} from 'redux-saga/effects';\n\nimport CanvasEngineBuilder from '../../modules/Canvas/V1/CanvasEngineBuilder';\n\nimport * as Selectors from '../../store/selectors';\nimport * as ActionTypes from '../../store/actionTypes';\n\nimport { STATE_NAME } from '../../constants/diagramStateNames';\nimport { isIntegrationElement } from '../../utils';\n\nconst undoStack = [];\nconst redoStack = [];\n\nexport function* generateReverseTreeAction({ type, action }) {\n const isElement = type === 'element';\n const [idKey, idKeyForCreateData, selectorFN] = isElement\n ? ['elementID', 'element_id', Selectors.getElementByID]\n : ['linkID', 'link_id', Selectors.getLinkByID];\n const { action: actionType } = action;\n switch (actionType) {\n case 'create': {\n const { data: { [idKeyForCreateData]: id } } = action;\n return { action: 'delete', [idKey]: id, data: { [idKeyForCreateData]: id } };\n }\n case 'delete': {\n const { [idKey]: id } = action;\n const data = yield select(selectorFN(id));\n const extraData = isElement\n ? { position: data.position || { x: data.x, y: data.y } }\n : {};\n if (isIntegrationElement(data?.subType)) {\n const {\n integrationID, mode, integrationAccountName, integrationAccountID, ...integrationData\n } = data;\n return { action: 'create', [idKey]: id, data: { ...integrationData, ...extraData, [idKeyForCreateData]: data?.id } };\n }\n return { action: 'create', [idKey]: id, data: { ...data, ...extraData, [idKeyForCreateData]: data?.id } };\n }\n case 'update': {\n const { [idKey]: id, data } = action;\n const currentData = yield select(selectorFN(id));\n const updatedPropKeys = Object.keys(data);\n const filteredCurrentData = updatedPropKeys.reduce((prev, curr) => ({ ...prev, [curr]: currentData[curr] }), {});\n\n if (updatedPropKeys.indexOf('position') > -1 && !filteredCurrentData.position) {\n filteredCurrentData.position = { x: currentData.x, y: currentData.y };\n }\n\n return {\n action: 'update',\n [idKey]: id,\n data: {\n ...filteredCurrentData,\n [idKeyForCreateData]: id\n }\n };\n }\n default:\n return false;\n }\n}\n\nexport function* generateReverseTreeActionList({ actionList = [], type }) {\n const reverseActionList = [];\n const reverseOrderedActionList = actionList.slice().reverse();\n for (let i = 0; i < reverseOrderedActionList.length; i++) {\n const action = reverseOrderedActionList[i];\n const reverseAction = yield generateReverseTreeAction({ action, type });\n reverseActionList.push(reverseAction);\n }\n\n return reverseActionList;\n}\n\nexport function* generateReverseReduxAction(action) {\n const { type, ...props } = action;\n switch (type) {\n case ActionTypes.UPDATE_TREE.REQUEST:\n case ActionTypes.UPDATE_TREE.SUCCESS: {\n const { data: { links, elements } } = props;\n const reverseLinkActionList = yield generateReverseTreeActionList({ actionList: links, type: 'link' });\n const reverseElementActionList = yield generateReverseTreeActionList({ actionList: elements, type: 'element' });\n return { type: ActionTypes.UPDATE_TREE.REQUEST, data: { elements: reverseElementActionList, links: reverseLinkActionList } };\n }\n default:\n return false;\n }\n}\n\nexport function* triggerAction(action) {\n yield put(action);\n\n const [isUndoAvailableOld, isRedoAvailableOld] = yield all([select(Selectors.getIsUndoAvailable), select(Selectors.getIsRedoAvailable)]);\n const isUndoAvailable = undoStack.length > 0;\n if (isUndoAvailable !== isUndoAvailableOld) {\n yield put({ type: ActionTypes.SET_UNDO_AVAILABLE, data: { isUndoAvailable } });\n }\n\n const isRedoAvailable = redoStack.length > 0;\n if (isRedoAvailable !== isRedoAvailableOld) {\n yield put({ type: ActionTypes.SET_REDO_AVAILABLE, data: { isRedoAvailable } });\n }\n}\n\nexport function* watchUndoActions() {\n while (true) {\n yield take(ActionTypes.UNDO_ACTION);\n\n const stateMachine = CanvasEngineBuilder.engine.getStateMachine();\n if (stateMachine.currentState.options.name !== STATE_NAME) {\n return;\n }\n\n const action = undoStack.pop();\n if (!action) {\n continue;\n }\n\n const redoAction = yield generateReverseReduxAction(action);\n redoStack.push(redoAction);\n yield triggerAction(action);\n }\n}\n\nexport function* watchRedoActions() {\n while (true) {\n yield take(ActionTypes.REDO_ACTION);\n const stateMachine = CanvasEngineBuilder.engine.getStateMachine();\n if (stateMachine.currentState.options.name !== STATE_NAME) {\n return;\n }\n\n const action = redoStack.pop();\n if (!action) {\n continue;\n }\n\n const undoAction = yield generateReverseReduxAction(action);\n undoStack.push(undoAction);\n yield triggerAction(action);\n }\n}\n\nexport function* watchUndoableActions() {\n while (true) {\n const { action } = yield take(ActionTypes.EXECUTE_UNDOABLE_ACTION);\n switch (action.type) {\n case ActionTypes.UPDATE_TREE.REQUEST:\n case ActionTypes.UPDATE_TREE.SUCCESS: {\n const undoAction = yield generateReverseReduxAction(action);\n if (undoAction) {\n redoStack.length = 0;\n undoStack.push(undoAction);\n }\n break;\n }\n default:\n break;\n }\n\n yield triggerAction(action);\n }\n}\n","import { channel } from 'redux-saga';\n\nexport const socketChannel = channel();\n","import sortBy from 'lodash/sortBy';\nimport {\n call, put, select, take\n} from 'redux-saga/effects';\nimport { SET_START_POINT_RESOURCE_OBJECT } from '../../store/actionTypes';\nimport { getAllRelatedFormQuestionsPrefixed } from '../../store/selectors';\nimport { socketChannel } from '../channels/socket';\n\nfunction* syncQuestionsHandler(resourceID, eventType, eventData) {\n const oldQuestions = yield select(getAllRelatedFormQuestionsPrefixed);\n const newQuestions = [];\n switch (eventType) {\n case 'CREATE':\n newQuestions.push(sortBy([...oldQuestions, ...eventData], q => parseInt(q.order, 10)));\n break;\n case 'DELETE':\n newQuestions.push(...(oldQuestions.filter(q => eventData.indexOf(q.qid) > -1)));\n break;\n case 'UPDATE':\n const updatedQuestions = oldQuestions.map(oldQ => {\n const updated = eventData.find(q => q.qid === oldQ.qid);\n if (updated) {\n return {\n ...oldQ,\n ...updated\n };\n }\n return oldQ;\n });\n newQuestions.push(...updatedQuestions);\n break;\n case 'UPDATE_RESOURCE_PROPERTIES': {\n yield put({\n type: SET_START_POINT_RESOURCE_OBJECT,\n resourceID,\n data: eventData\n });\n return;\n }\n default: break;\n }\n yield put({\n type: SET_START_POINT_RESOURCE_OBJECT,\n resourceID,\n data: { questions: newQuestions }\n });\n}\n\nexport function* watchSocketChannel() {\n while (true) {\n const { type, data, resourceID } = yield take(socketChannel);\n yield call(syncQuestionsHandler, resourceID, type, data);\n }\n}\n","import {\n put, call, select, takeEvery\n} from 'redux-saga/effects';\nimport {\n fetchTeamProperties as fetchTeamPropertiesRequest, fetchCustomSenderEmailsForTeams, fetchAllTeams, fetchTeamSettings as fetchTeamSettingsRequest\n} from '../modules/api';\nimport * as ActionTypes from '../store/actionTypes';\nimport * as Selectors from '../store/selectors';\n\nexport function* fetchTeams() {\n try {\n const teams = yield call(fetchAllTeams);\n yield put({ type: ActionTypes.SET_TEAMS.SUCCESS, payload: teams });\n } catch (error) {\n yield put({ type: ActionTypes.SET_TEAMS.ERROR, data: error });\n }\n}\n\nfunction* fetchTeamProperties() {\n const teamID = yield select(Selectors.getTeamID);\n if (!teamID) {\n return;\n }\n try {\n const properties = yield call(fetchTeamPropertiesRequest, teamID);\n yield put({ type: ActionTypes.SET_TEAM_PROPERTIES.SUCCESS, payload: properties });\n } catch (err) {\n yield put({ type: ActionTypes.SET_TEAM_PROPERTIES.ERROR, data: err });\n }\n}\n\nexport function* fetchTeamSettings() {\n try {\n const settings = yield call(fetchTeamSettingsRequest);\n yield put({ type: ActionTypes.SET_TEAM_SETTINGS.SUCCESS, payload: settings });\n } catch (error) {\n yield put({ type: ActionTypes.SET_TEAM_SETTINGS.ERROR, data: error });\n }\n}\n\nexport function* teamFlow() {\n yield takeEvery(ActionTypes.SET_TEAM_PROPERTIES.REQUEST, fetchTeamProperties);\n\n const isTeamMember = yield select(Selectors.getIsTeamMember);\n if (isTeamMember) {\n yield put({\n type: ActionTypes.SET_TEAM_PROPERTIES.REQUEST\n });\n }\n}\n\nexport function* fetchTeamSMTPEmails() {\n try {\n const senderEmails = yield call(fetchCustomSenderEmailsForTeams);\n yield put({ type: ActionTypes.SET_TEAM_CUSTOM_SENDER_EMAILS.SUCCESS, payload: senderEmails.reduce((res, curr) => ({ ...res, [`team_smtp:${curr.config_id}:${curr.emailAddress}`]: curr }), {}) });\n } catch (err) {\n yield put({ type: ActionTypes.SET_TEAM_CUSTOM_SENDER_EMAILS.ERROR, data: err });\n }\n}\n","import {\n handleFormLoaded, handleRightPanelVisibility, handleUpdateSelectedQuestion, handleCloseFrame, handleUpdateElement\n} from './listeners';\n\nexport const INCOMING_MESSAGES = {\n '@FORM_BUILDER/LOADED': handleFormLoaded,\n '@FORM_BUILDER/UI_RIGHT_PANEL_TOGGLE': handleRightPanelVisibility,\n '@FORM_BUILDER/UI_UPDATE_SELECTED_QUESTION': handleUpdateSelectedQuestion,\n '@FORM_BUILDER/CLOSE_FRAME': handleCloseFrame,\n '@FORM_BUILDER/FORM_QUESTION_UPDATING': handleUpdateElement\n};\n\nexport const OUTGOING_MESSAGES = {};\n","import { call, put, select } from 'redux-saga/effects';\nimport { IframeManager } from './IframeManager';\nimport * as ActionTypes from '../../store/actionTypes';\nimport * as Selectors from '../../store/selectors';\nimport { postMessage } from './workflowFormBuilder';\nimport { elementTypes } from '../../constants/elementTypes';\n\nexport function* handleFormLoaded({ source }) {\n yield call(IframeManager.setIframe, source);\n yield put({ type: ActionTypes.SHOW_DESIGN_FRAME });\n yield put({ type: ActionTypes.SET_RIGHT_PANEL_VISIBILITY, data: false });\n yield put({ type: ActionTypes.SET_LEFT_PANEL_VISIBILITY, data: false });\n}\n\nexport function* handleRightPanelVisibility() {\n const isRightPanelOpen = yield select(Selectors.getRightPanelStatus);\n yield put({ type: ActionTypes.SET_RIGHT_PANEL_VISIBILITY, data: !isRightPanelOpen });\n}\n\nexport function* handleUpdateSelectedQuestion({ payload: { isRightPanelOpen, question } }) {\n const isQuestionRelatedToWorkflow = ['outcomeID', 'heading', 'signature'].indexOf(question?.name) !== -1;\n const isWorkflowRightPanelOpen = yield select(Selectors.getRightPanelStatus);\n if (isQuestionRelatedToWorkflow) {\n if (isRightPanelOpen) {\n yield put({ type: ActionTypes.SET_RIGHT_PANEL_VISIBILITY, data: true });\n }\n yield put({ type: ActionTypes.SET_CUSTOM_PANEL, data: question.name });\n } else if (isWorkflowRightPanelOpen) {\n yield put({ type: ActionTypes.SET_RIGHT_PANEL_VISIBILITY, data: false });\n if (question) {\n yield call(postMessage, { type: '@WORKFLOW_BUILDER/RIGHT_PANEL_OPEN', payload: { visibility: true } });\n }\n }\n}\n\nexport function* handleCloseFrame() {\n yield put({ type: ActionTypes.HIDE_DESIGN_FRAME });\n}\n\nexport function* handleUpdateElement({ payload: { data } }) {\n const { elementID } = yield select(Selectors.getWorkflowFormBuilder);\n const { type } = yield select(Selectors.getElementByID(elementID));\n if (!type) return;\n const updateData = { element_id: elementID };\n const { text, subHeader } = data;\n switch (true) {\n case type === elementTypes.APPROVAL: {\n if (text) {\n updateData.header = text;\n }\n break;\n }\n case type === elementTypes.ASSIGN_TASK: {\n if (text) {\n updateData.name = text;\n }\n break;\n }\n default:\n if (subHeader) {\n updateData.taskDescription = subHeader;\n }\n break;\n }\n yield put({\n type: ActionTypes.UPDATE_TREE.REQUEST,\n data: {\n elements: [{\n action: 'update',\n data: updateData,\n elementID\n }]\n }\n });\n}\n","import { eventChannel } from 'redux-saga';\nimport { call } from 'redux-saga/effects';\nimport { INCOMING_MESSAGES } from '../formBuilder/messages';\n\nexport function* listener({ data, source }) {\n const { type, payload } = data;\n if (INCOMING_MESSAGES[type]) {\n yield call(INCOMING_MESSAGES[type], { payload, source });\n }\n}\n\nexport const messageChannel = eventChannel(emitter => {\n window.addEventListener('message', emitter);\n return () => window.removeEventListener('message', emitter);\n});\n","/* eslint-disable max-statements */\nimport {\n call, put, select, spawn, take, takeEvery, all, delay, takeLatest\n} from 'redux-saga/effects';\n\nimport { t } from '@jotforminc/translation';\nimport { isEnterprise } from '@jotforminc/enterprise-utils';\nimport * as ActionTypes from '../store/actionTypes';\n\nimport * as Selectors from '../store/selectors';\n\nimport { fetchUserFlow, userLoginFlow } from './user';\nimport { trackEvents } from './eventTracker';\nimport {\n selectionFlow, elementHighlightFlow, uiConfirmationFlow, uiPanelsWidthCalculationFlow, emailSettingsFlow, errorAwarenessFlow, doubleClickFlow, guestActionFlow,\n signupModalFlow,\n panModeFlow,\n uiSagaFlows,\n updateSelectionBoxLayerFlow,\n introPopupsFlow\n} from './ui';\nimport { fetchUserForms, fetchWorkflowFlow, initializeCanvasEngine } from './workflow';\nimport { watchWarningsFlow } from './errors';\nimport { watchFetch } from './watchers/fetch';\nimport { publishWorkflow } from '../modules/api';\nimport { watchNetworkChanges } from './watchers/network';\nimport { watchWorkflowRequests } from './watchers/workflow';\nimport { watchUndoableActions, watchUndoActions, watchRedoActions } from './watchers/undoRedo';\nimport { watchSocketChannel } from './watchers/socket';\nimport { guestTriggerActions } from '../store/actionGroups';\nimport { isElementsSuitableForEnableFlow } from '../utils/index';\nimport { updateWorkflow } from '../actionCreators';\nimport { handleIntegrationRoute, handleWorkflowForm, updateEmailSettings } from './workflow/elements';\nimport {\n teamFlow, fetchTeamSMTPEmails, fetchTeams, fetchTeamSettings\n} from './team';\nimport { DEFAULT_FEATURES, WORKFLOW_V2 } from '../constants/features';\nimport { listener, messageChannel } from './watchers/watchFormBuilder';\n\nexport function* watchAppReadyStatus() {\n yield all([\n take(ActionTypes.FETCH_WORKFLOW.SUCCESS),\n take(ActionTypes.FETCH_USER.SUCCESS)\n ]);\n yield put({ type: ActionTypes.SET_APP_READY, data: true });\n}\n\nexport function* publishFlow() {\n yield call(autoDisableFlow);\n yield delay(1000);\n const workflowID = yield select(Selectors.getWorkflowID);\n yield call(publishWorkflow, workflowID);\n}\n\nexport function* autoDisableFlow() {\n const allNodes = yield select(Selectors.getNodes);\n const links = yield select(Selectors.getWorkflowLinks);\n const status = yield select(Selectors.getWorkflowStatus);\n const shouldAutoDisabled = allNodes.length === 1 || links.length === 0 || (allNodes.length >= 2 && !isElementsSuitableForEnableFlow(allNodes));\n\n if (status !== 'AUTODISABLED' && shouldAutoDisabled) {\n yield put(updateWorkflow({ status: 'AUTODISABLED' }));\n } else if (!shouldAutoDisabled && status === 'AUTODISABLED') {\n yield put(updateWorkflow({ status: 'ENABLED' }));\n }\n}\n\nexport function* watchAutoPublishRequests() {\n yield takeLatest(ActionTypes.PUBLISH_WORKFLOW, publishFlow);\n}\n\nexport function* watchWorkflowChangeRequests({ history, workflowID }) {\n yield put({ type: ActionTypes.SET_CANVAS_LOADING, data: true });\n yield fetchWorkflowFlow({ workflowID });\n yield put({ type: ActionTypes.INIT_CANVAS_ENGINE });\n history.push(`/${workflowID}/build`);\n}\n\nfunction* feedbackButtonFlow() {\n const [user, flow] = yield all(\n [\n take(ActionTypes.FETCH_USER.SUCCESS),\n take(ActionTypes.FETCH_WORKFLOW.SUCCESS)\n ]\n );\n\n if (user?.data?.credentials && flow?.data?.id && JotformFeedback) { // eslint-disable-line\n // eslint-disable-next-line no-unused-vars\n const feedbackButton = new JotformFeedback({ // eslint-disable-line\n formId: '202732825025954',\n buttonText: t('Give Feedback'),\n base: 'https://form.jotform.com/',\n background: '#FA8014',\n fontColor: '#FFFFFF',\n buttonSide: 'bottom',\n buttonAlign: 'right',\n type: 2,\n width: 700,\n height: 500,\n isCardForm: false,\n iframeParameters: {\n username: user.data.credentials.username,\n approvalID: flow.data.id,\n project: 'workflow_builder'\n }\n });\n try { global?.document?.body?.classList?.add('withFeedback'); } catch (e) { /* noop */ }\n }\n}\nfunction* watchSettingsPanels() {\n yield takeLatest(ActionTypes.PROPERTY_MODAL_TOGGLED, fetchUserForms);\n}\n\nexport function* rootSagaFlow() {\n const isNewCanvas = DEFAULT_FEATURES[WORKFLOW_V2];\n yield spawn(watchUndoableActions);\n yield spawn(watchUndoActions);\n yield spawn(watchRedoActions);\n yield spawn(watchSocketChannel);\n yield spawn(trackEvents);\n yield spawn(feedbackButtonFlow);\n yield spawn(fetchUserFlow);\n yield spawn(watchAppReadyStatus);\n yield spawn(watchWorkflowRequests);\n yield spawn(elementHighlightFlow);\n yield spawn(selectionFlow);\n yield spawn(uiConfirmationFlow);\n yield spawn(emailSettingsFlow);\n yield spawn(watchAutoPublishRequests);\n yield spawn(uiPanelsWidthCalculationFlow);\n yield spawn(watchNetworkChanges);\n yield spawn(errorAwarenessFlow);\n yield spawn(watchWarningsFlow);\n yield spawn(doubleClickFlow);\n yield spawn(watchFetch);\n yield spawn(panModeFlow);\n yield spawn(uiSagaFlows);\n if (!isNewCanvas) {\n yield spawn(updateSelectionBoxLayerFlow);\n }\n yield spawn(introPopupsFlow);\n yield spawn(fetchTeams);\n yield spawn(teamFlow);\n if (!window.isAdmin && isEnterprise()) {\n yield spawn(fetchTeamSettings);\n }\n yield spawn(fetchTeamSMTPEmails);\n yield spawn(watchSettingsPanels);\n yield takeEvery('HANDLE_INTEGRATION_ROUTE', handleIntegrationRoute);\n yield takeEvery(ActionTypes.INIT_CANVAS_ENGINE, initializeCanvasEngine);\n yield takeEvery(guestTriggerActions, guestActionFlow);\n yield takeEvery(ActionTypes.OPEN_SIGNUP_MODAL, signupModalFlow);\n yield takeEvery(ActionTypes.USER_LOGGED_IN, userLoginFlow);\n yield takeEvery(ActionTypes.CHANGE_WORKFLOW, watchWorkflowChangeRequests);\n yield takeEvery(ActionTypes.UPDATE_EMAIL_SETTINGS, ({ data }) => updateEmailSettings(data));\n yield takeEvery(ActionTypes.HANDLE_WORKFLOW_FORM, handleWorkflowForm);\n yield takeEvery(messageChannel, listener);\n}\n","import { FETCH_WARNINGS, ADD_WARNING } from './actionTypes';\n\nconst initialState = {\n warnings: [],\n limitWarnings: []\n};\n\nconst errorReducer = (state = initialState, action) => {\n switch (action.type) {\n case ADD_WARNING: {\n return { ...state, warnings: [...state.warnings, action.data] };\n }\n case FETCH_WARNINGS.SUCCESS: {\n const { data: warnings, limitWarnings } = action;\n return { ...state, warnings: [...state.warnings, ...warnings], limitWarnings };\n }\n default:\n return state;\n }\n};\n\nexport default errorReducer;\n","import {\n SET_TEAM_PROPERTIES, SET_TEAM_CUSTOM_SENDER_EMAILS, SET_TEAMS, SET_TEAM_SETTINGS\n} from './actionTypes';\n\nconst initialState = {\n teamID: window.teamID,\n isTeamMember: window.isTeamMember,\n teamProperties: {},\n teamSettings: { teamCreation: '1' },\n senderEmails: {},\n teams: []\n};\n\nconst teamReducer = (state = initialState, action) => {\n switch (action.type) {\n case SET_TEAMS.SUCCESS: {\n return { ...state, teams: action.payload };\n }\n case SET_TEAM_PROPERTIES.SUCCESS: {\n return { ...state, teamProperties: action.payload };\n }\n case SET_TEAM_SETTINGS.SUCCESS: {\n return { ...state, teamSettings: action.payload };\n }\n case SET_TEAM_CUSTOM_SENDER_EMAILS.SUCCESS: {\n return { ...state, senderEmails: action.payload };\n }\n default:\n return state;\n }\n};\n\nexport default teamReducer;\n","import * as ActionTypes from './actionTypes';\n\nconst initialState = {\n formID: null,\n elementID: null,\n visible: false,\n loading: false,\n panelData: null\n};\n\nconst workflowFormBuilderReducer = (state = initialState, action) => {\n switch (action.type) {\n case ActionTypes.FORM_FETCHING:\n return {\n ...state,\n loading: true,\n elementID: action.data.elementID\n };\n case ActionTypes.SET_INTERNAL_FORM_ID:\n return {\n ...state,\n formID: action.data.internalFormID\n };\n case ActionTypes.SHOW_DESIGN_FRAME:\n return {\n ...state,\n visible: true,\n loading: false\n };\n case ActionTypes.HIDE_DESIGN_FRAME:\n return {\n formID: null,\n elementID: null,\n visible: false,\n loading: false,\n panelData: null\n };\n case ActionTypes.SET_CUSTOM_PANEL:\n return {\n ...state,\n panelData: action.data\n };\n default:\n return state;\n }\n};\n\nexport default workflowFormBuilderReducer;\n","import {\n applyMiddleware, combineReducers, compose, createStore\n} from 'redux';\nimport createSagaMiddleware from 'redux-saga';\nimport createUIReducer from './ui';\nimport userReducer from './user';\nimport createWorkflowReducer from './workflow';\nimport workflowInspectorReducer from './workflowInspector';\nimport { rootSagaFlow } from '../sagas';\nimport errorReducer from './error';\nimport teamReducer from './team';\nimport workflowFormBuilderReducer from './workflowFormBuilder';\n\nconst createRootReducer = ({ workflow = {}, ui = {} }) => combineReducers({\n ui: createUIReducer(ui),\n user: userReducer,\n workflow: createWorkflowReducer(workflow),\n workflowInspector: workflowInspectorReducer,\n error: errorReducer,\n team: teamReducer,\n workflowFormBuilder: workflowFormBuilderReducer\n});\n\nexport const createStoreWithSagas = () => {\n const rootReducer = createRootReducer({});\n const sagaMiddleware = createSagaMiddleware();\n\n const middlewares = applyMiddleware(sagaMiddleware);\n\n const composeEnhancers = (typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__) || compose;\n const store = createStore(rootReducer, composeEnhancers(middlewares));\n\n sagaMiddleware.run(rootSagaFlow);\n return store;\n};\n\nexport const createStoreWithoutSagas = config => {\n const rootReducer = createRootReducer(config);\n\n const store = createStore(rootReducer);\n\n return store;\n};\n\nconst store = createStoreWithSagas();\n\nexport default store;\n","import uniqBy from 'lodash/uniqBy';\nimport maxBy from 'lodash/maxBy';\nimport { createSelector } from 'reselect';\nimport { colorifyFormArray, getPlaceholderListForDynamicQuestions, getUrlParameter } from '@jotforminc/utils';\nimport { PrefillUtils } from '@jotforminc/jotform-common';\nimport { isEnterprise } from '@jotforminc/enterprise-utils';\n\nimport {\n addDisabledProp, fixQuestionsProp, fixQuestionsPropsForForms, prefixQuestionForAssignForm\n} from '../utils';\nimport { elementSubTypes, elementTypes } from '../constants/elementTypes';\nimport {\n DEFAULT_FEATURES,\n AUTOMATCH,\n WORKFLOW_V2,\n LIMITATIONS\n} from '../constants/features';\nimport { AssignFormEmailSubTypes } from '../constants/emailSubTypes';\nimport { TEAM_ID } from '../constants/team';\nimport { ELEMENT_LIMIT_LEVELS } from '../constants/workflowElementLimit';\n\nconst getFirstElementByType = (nodes, type) => nodes.find(l => l.type === type);\n\nexport const getUser = state => state.user;\n\nexport const getUserTimeZone = createSelector(getUser, user => user?.time_zone);\nexport const getUsername = createSelector(getUser, user => user?.username);\nexport const getUserAccountType = createSelector(getUser, user => user?.account_type?.name);\nexport const getShowErrorsOnDiagram = createSelector(getUser, (/* user */) => /* user?.showWFDiagramErrors */ true); // Aytekin's request, show always\nexport const getFormUsers = createSelector(getUser, user => user.formUsers || []);\nexport const getUserForms = createSelector(getUser, user => user.forms || []);\nexport const getUserDocuments = createSelector(getUser, user => user.documents || []);\nexport const getEmailSuggestionList = createSelector(\n [getUser, getFormUsers], ({ name, email, avatarUrl }, formUsers) => uniqBy([{ name, email, avatarUrl }, ...formUsers], ({ email: uniqEmail }) => uniqEmail)\n);\nexport const getIsAdmin = createSelector(getUser, user => user?.account_type && (['ADMIN', 'SUPPORT'].indexOf(user?.account_type?.name) > -1));\nexport const getIsGuest = createSelector(getUser, user => user?.account_type?.name === 'GUEST');\nexport const getIsHIPAA = createSelector(getUser, user => user?.isHIPAA === '1');\nexport const getLimits = createSelector(getUser, user => user?.account_type?.limits);\nexport const getUsage = createSelector(getUser, user => user?.usage);\n\nexport const getEmailLimit = createSelector(getUserAccountType, accountType => {\n // for test\n console.log(accountType);\n if (!accountType) {\n return 1;\n }\n return ['FREE', 'GUEST'].includes(accountType) ? 1 : 3;\n});\n\nexport const getUI = state => state.ui || {};\nexport const getEnvironment = createSelector(getUI, ui => ui.environment);\nexport const getLeftPanelStatus = createSelector(getUI, ui => ui.isLeftPanelOpen);\nexport const getRightPanelStatus = createSelector(getUI, ui => ui.isRightPanelOpen);\nexport const getHighlightedElementID = createSelector(getUI, ui => ui.highlightedElementID);\nexport const getSavingState = createSelector(getUI, ui => ui.isSaveInProgress);\nexport const getAppReady = createSelector(getUI, ui => ui.isAppReady);\nexport const getCanvasLoading = createSelector(getUI, ui => ui.canvasLoading);\nexport const getFeatures = createSelector(getUI, ui => ui.features);\nexport const isActiveFeature = featureName => createSelector(getFeatures, features => !!features[featureName]);\nexport const getPublishMode = createSelector(getUI, ui => ui.publishMode);\nexport const getDragState = createSelector(getUI, ui => ui.isDragging);\nexport const getErrorPanelFocusedElementID = createSelector(getUI, ui => ui.errorPanelFocusedElementID);\nexport const getIsUndoAvailable = createSelector(getUI, ui => ui.isUndoAvailable);\nexport const getIsRedoAvailable = createSelector(getUI, ui => ui.isRedoAvailable);\nexport const getPropertyModalStatus = createSelector(getUI, ui => ui.isPropertyModalOpen);\nexport const getCurrentEmailTemplate = createSelector(getUI, ui => ui.currentEmailTemplate);\nexport const getIsKeyboardShortcutsAvailable = createSelector(getUI, ui => ui.isKeyboardShortcutsAvailable);\nexport const getLeftPanelDefaultActiveTab = createSelector(getUI, ui => ui.leftPanelDefaultTab);\nexport const getPredefinedIntegrationType = createSelector(getUI, ui => ui.integrationType);\nexport const getUIInteractionState = createSelector(getUI, ui => ui.interactable);\n\nexport const getWorkflow = state => state.workflow;\nexport const getWorkflowOwner = createSelector(getWorkflow, workflow => workflow.username);\nexport const getWorkflowIsDirty = createSelector(getWorkflow, workflow => workflow.isDirty !== '0');\nexport const getPublishStatus = createSelector(getWorkflow, workflow => workflow.publishStatus);\nexport const getWorkflowStatus = createSelector(getWorkflow, workflow => workflow.status);\nexport const getHasPublishedFlow = createSelector(getWorkflow, workflow => workflow.hasPublishedFlow);\nexport const getWorkflowID = createSelector(getWorkflow, workflow => workflow.id);\nexport const getEntryPointFormID = createSelector(getWorkflow, workflow => {\n const { entryPointForm, resourceID, nodes = [] } = workflow;\n switch (true) {\n case Boolean(entryPointForm):\n return entryPointForm;\n case Boolean(resourceID):\n return resourceID;\n default:\n const startPoint = getFirstElementByType(nodes, elementTypes.START_POINT);\n return startPoint?.resourceID;\n }\n});\nexport const getWorkflowTitle = createSelector(getWorkflow, workflow => workflow.title);\nexport const getZoom = createSelector(getWorkflow, workflow => workflow.zoom);\nexport const getNodes = createSelector(getWorkflow, workflow => (DEFAULT_FEATURES[WORKFLOW_V2] ? workflow.newCanvasNodes.map(node => node.data) : workflow.nodes));\nexport const getNodeMap = createSelector(getNodes, nodes => nodes.reduce((prev, node) => ({ ...prev, [node.id]: node }), {}));\nexport const getOrphanNodesCount = createSelector(getNodes, nodes => nodes.filter(val => val?.isOrphan).length);\nexport const getConnectedNodesCount = createSelector(getNodes, nodes => nodes.filter(val => !val?.isOrphan || val?.isOrphan === false).length);\n\nexport const getNodesExceptStartPoint = createSelector(getWorkflow, workflow => workflow.nodes.filter(({ type }) => type !== elementTypes.START_POINT));\nexport const getAssignFormNodes = createSelector(getWorkflow, workflow => workflow.nodes.filter(({ type }) => type === elementTypes.ASSIGN_FORM));\nexport const getSendEmailNodes = createSelector(getWorkflow, workflow => workflow.nodes.filter(({ type }) => type === elementTypes.SEND_EMAIL));\nexport const getNodesCount = createSelector(getWorkflow, workflow => workflow.nodes.length);\nexport const getWorkflowLinks = createSelector(getWorkflow, workflow => workflow.links);\nexport const getLastUpdateDate = createSelector(getWorkflow, workflow => workflow.updated_at);\nexport const getCreatedAt = createSelector(getWorkflow, workflow => workflow.created_at);\nexport const getFirstStartPoint = createSelector(getNodes, nodes => getFirstElementByType(nodes, elementTypes.START_POINT));\nexport const getFirstStartPointResourceID = createSelector(getNodes, nodes => getFirstElementByType(nodes, elementTypes.START_POINT)?.resourceID);\nconst getWorkflowInspector = state => state.workflowInspector;\n\nexport const getFormEncryptionState = createSelector(getFirstStartPoint, node => node?.resourceObject?.isEncrypted === 'Yes');\nexport const getPanMode = createSelector(getWorkflow, workflow => workflow.panMode);\n\nexport const getLinkByID = linkID => state => (state.workflow.links || []).find(l => parseInt(l.id, 10) === parseInt(linkID, 10));\nexport const getForm = createSelector(getFirstStartPoint, ({ resourceObject = {} }) => resourceObject);\nexport const getFormType = createSelector(getForm, ({ type = '' }) => type);\nexport const getFormTitle = createSelector(getForm, ({ title = '' }) => title);\nexport const getProducts = createSelector(getForm, ({ products = [] }) => products);\nexport const getQuestions = createSelector(getForm, ({ questions = [] }) => questions);\nexport const getFormSubmissionCount = createSelector(getForm, ({ count = 0 }) => count);\nexport const getEmailQuestions = createSelector(getQuestions, questions => questions.filter(({ type }) => type === 'control_email'));\nexport const getFirstEmailQuestion = createSelector(getEmailQuestions, emailQuestions => emailQuestions[0]);\nexport const getQuestionsByType = questionType => createSelector(getQuestions, questions => questions.filter(({ type }) => type === questionType));\nexport const getFirstFullNameQuestion = createSelector(getQuestionsByType('control_fullname'), fullNameQuestions => fullNameQuestions[0]);\nexport const getQuestionPlaceholders = createSelector(getQuestions, getPlaceholderListForDynamicQuestions);\nexport const getLastQuestionID = createSelector(getQuestions, questions => maxBy(questions, question => question.qid)?.qid);\n\nexport const getAvailablePDFs = createSelector(getForm, ({ pdfs = [] }) => pdfs);\n\nexport const getErrors = createSelector(getUI, ui => ui.errors || []);\nexport const getForceTitleRename = createSelector(getUI, ui => ui.forceTitleRename || false);\nexport const getElementErrors = elementID => createSelector(getErrors, errors => errors.filter(e => e.elementID === elementID));\nexport const getLinksSelector = state => state.workflow.links;\nexport const getElementLinks = elementID => createSelector(getLinksSelector, links => links.filter(l => parseInt(l.fromElement, 10) === elementID || parseInt(l.toElement, 10) === elementID));\nexport const getByID = (nodes, searchID) => {\n const node = nodes[searchID] || null;\n if (!node) {\n return {};\n }\n\n if (!node.position) {\n return {\n ...node,\n position: { x: node.x, y: node.y }\n };\n }\n\n return node;\n};\nexport const getElementByID = elementID => createSelector(getNodeMap, nodes => getByID(nodes, elementID));\nexport const getApprover = elementID => createSelector(getElementByID(elementID), ({ approver }) => approver);\nexport const getTeamApproverByElement = elementID => createSelector(\n getElementByID(elementID), element => element?.teamObject?.teamMembers?.filter(({ role: { role_slug: slug } }) => slug !== 'form_collaborator')\n);\nexport const getApproverEmail = elementID => createSelector(getElementByID(elementID), ({ approver }) => approver?.map(el => el.value)?.[0] || false);\nexport const getElementsByIDList = elementIDList => createSelector(getNodeMap, nodes => elementIDList.map(el => getByID(nodes, el)));\nexport const getAssignFormElementListByID = elementIDList => createSelector(getElementsByIDList(elementIDList), list => list.filter(el => el.type === elementTypes.ASSIGN_FORM));\nexport const getGivenAssignFormIDs = elementIDList => createSelector(getAssignFormElementListByID(elementIDList), list => {\n if (list?.length > 0) {\n return list?.map(el => el?.formID);\n }\n return null;\n});\nexport const getOutcomesByElementID = elementID => createSelector(getElementByID(elementID), el => el?.outcomes || []);\nexport const isLoadedByElementID = elementID => createSelector(getElementByID(elementID), el => el?.loaded || false);\nexport const getSelectionActive = createSelector(getWorkflowInspector, workflowInspector => workflowInspector.selectionActive);\nexport const getUserSelectionRect = createSelector(getWorkflowInspector, workflowInspector => workflowInspector.userSelectionRect);\nexport const getAssignFormElementEmailData = (elementID, emailType, emailSubType) => createSelector(getElementByID(elementID), el => {\n if (emailSubType && emailSubType === AssignFormEmailSubTypes.ASSIGN_FORM_REMINDER && el?.reminder?.customizeReminder?.customReminderEmail) {\n return el?.reminder?.customizeReminder?.customReminderEmail;\n }\n return el?.assignFormEmail?.email;\n});\n\nconst getAllOutcomes = createSelector(getNodes, nodes => nodes.reduce((prev, node) => {\n if (!node.outcomes) return prev;\n return [...prev, ...node.outcomes];\n}, []));\nexport const getOutcomeByLinkID = linkID => createSelector(getAllOutcomes, outcomes => outcomes.find(outcome => outcome.linkID === linkID));\n\nexport const getUsedOutcomeIDs = elementID => createSelector([\n getOutcomesByElementID(elementID),\n getElementLinks(elementID)\n], (elementOutcomes, elementLinks) => {\n if (Array.isArray(elementOutcomes)) {\n // If due to old codes, somehow missing linkID is attached. Also don't send it as used.\n const reallyUsedOutcomes = elementOutcomes.filter(outcome => {\n const isLinkExists = elementLinks.find(l => parseInt(l.id, 10) === parseInt(outcome.linkID, 10));\n return !!isLinkExists;\n });\n return reallyUsedOutcomes;\n }\n return [];\n});\n\nexport const getCombinedErrors = createSelector([getNodes, getErrors],\n (elements, errors) => {\n return errors.map(err => {\n const element = elements.find(e => e.id === err.elementID);\n return {\n error: err,\n element\n };\n });\n });\n\nexport const isLockPressed = createSelector(getWorkflowInspector, workflowInsp => workflowInsp.lockPressed);\nexport const getSelectedElementIDList = createSelector(getWorkflowInspector, workflowInsp => workflowInsp.selectedElements);\nexport const isLockedElements = createSelector(getWorkflowInspector, workflowInsp => workflowInsp.lockedElements.length > 0);\nexport const isSeledtedAll = createSelector([getNodes, getWorkflowInspector], (nodes, workflowInsp) => nodes.length === workflowInsp.selectedElements.length);\nexport const getSelectedElementID = createSelector(getSelectedElementIDList, selectedElementIDList => selectedElementIDList[0]);\nexport const getSelectedElementCount = createSelector(getWorkflowInspector, workflowInsp => workflowInsp.selectedElements.length);\nexport const getSelectedElementInfo = createSelector([getNodeMap, getSelectedElementID], (nodes, selectedElementID) => getByID(nodes, selectedElementID));\nexport const getSelectedElementExceptStartPoint = createSelector(getSelectedElementIDList, workflowInsp => workflowInsp.filter(id => id !== 1));\nexport const getSelectedElementFormID = createSelector(getSelectedElementInfo, element => element?.formID);\nexport const getSelectedFormTitle = elementID => createSelector(getElementByID(elementID), el => el?.resourceObject?.title || el?.resourceObject?.pagetitle || 'Form');\nexport const getSelectedDocumentTitle = elementID => createSelector(getElementByID(elementID), el => el?.signDocumentObject?.title || 'Sign Document');\n\nexport const getWarnings = state => state.error.warnings;\nexport const getLimitWarnings = state => state.error.limitWarnings;\nexport const getWarningInstanceIDs = createSelector(getWarnings, warnings => warnings.map(({ items }) => items.map(({ id }) => id)));\nexport const getErrorPanelOpen = createSelector(getUI, getCombinedErrors, getWarnings, (ui, errors, warnings) => (errors?.length + warnings?.length === 0 ? false : ui.isErrorPanelOpen));\n\nexport const isSomebodyElsesWorkflow = createSelector([\n getUsername,\n getWorkflowOwner\n], (loggedInUserName, workflowOwnerUserName) => {\n return loggedInUserName !== workflowOwnerUserName;\n});\n\nexport const isAdminOnSomebodyElsesWorkflow = createSelector([\n getIsAdmin,\n isSomebodyElsesWorkflow\n], (isAdmin, somebodyElsesWorkflow) => {\n return isAdmin && somebodyElsesWorkflow;\n});\n\nexport const getElementsForm = elementID => createSelector(getElementByID(elementID), element => {\n return element?.resourceObject;\n});\n\nexport const FormSelectors = {\n getFlowForms: createSelector(getUser, user => user?.flowForms || []),\n getAllForms: createSelector(getUserForms, getNodes, (forms, elements) => {\n const allForms = {};\n for (let i = 0; i < forms.length; i++) {\n allForms[forms[i]?.id] = forms[i];\n }\n // For performance\n for (let i = 0; i < elements.length; i++) {\n if (elements[i].resourceObject) {\n allForms[elements[i].resourceObject?.id] = elements[i].resourceObject;\n }\n }\n return Object.values(allForms);\n }),\n getAllUsedForms: createSelector(getNodes, elements => {\n const forms = {};\n for (let i = 0; i < elements.length; i++) {\n if (elements[i].resourceObject) {\n forms[elements[i].resourceObject?.id] = elements[i].resourceObject;\n }\n }\n return Object.values(forms);\n }),\n getAllUsedFormsID: createSelector(getNodes, elements => {\n const formIDs = {};\n for (let i = 0; i < elements.length; i++) {\n if (elements[i].resourceObject) {\n formIDs[(elements[i]?.resourceID || elements[i]?.formID).toString()] = true;\n }\n }\n return Object.keys(formIDs);\n }),\n findFormByID: formID => createSelector(FormSelectors.getAllForms, forms => {\n return forms.find(({ id }) => formID === id) || {};\n }),\n findFormQuestionsByFormID: formID => createSelector(FormSelectors.findFormByID(formID), form => (form ? form.questions : [])),\n getPrefixedQuestionsByFormID: formID => createSelector(FormSelectors.findFormQuestionsByFormID(formID), questions => {\n return questions.map(q => {\n return {\n ...q,\n name: `f${formID}_${q.name}`\n };\n });\n })\n};\n\nexport const DocumentSelectors = {\n getAllUsedDocuments: createSelector([getNodes, getUserDocuments], (elements, userDocuments) => {\n const documents = [];\n for (let i = 0; i < elements.length; i++) {\n if (elements[i].documentID) {\n const doc = userDocuments.find(e => e.id === elements[i].documentID);\n if (doc) documents.push(doc);\n }\n }\n return documents;\n })\n};\n\nexport const getAllRelatedFormQuestionsPrefixed = createSelector(FormSelectors.getFlowForms, getEntryPointFormID, (forms, entryPointID) => {\n return (forms || []).reduce((acc, form) => {\n const { questions = [], id } = form;\n const prefixWithFormID = prefixQuestionForAssignForm(`f${id}`);\n if (entryPointID === id) {\n return [...acc, ...questions];\n }\n // Disable PHI fields on selections\n return [...acc, ...questions.map(prefixWithFormID)].map(addDisabledProp);\n }, []);\n});\n\nexport const getAllRelatedFormQuestionsPrefixedAsNameMap = createSelector(getAllRelatedFormQuestionsPrefixed, questions => {\n return questions.reduce((acc, curr) => ({ ...acc, [`{${curr.name}}`]: curr }), {});\n});\n\nexport const getAllRelatedFormQuestionsPrefixedForTags = text => createSelector(getAllRelatedFormQuestionsPrefixedAsNameMap, questions => {\n const regExp = /\\{([^}]+)\\}/g;\n const relatedQuestions = [];\n let name = null;\n do {\n name = regExp.exec(text);\n if (name && questions?.[name[0]]) {\n relatedQuestions.push(questions?.[name[0]]);\n }\n } while (name);\n return relatedQuestions;\n});\n\nexport const getAllRelatedFormsAndFields = createSelector(FormSelectors.getAllUsedForms, getEntryPointFormID, (forms, entryPointID) => {\n return forms.reduce((acc, form) => {\n const {\n questions = [], id, title, type\n } = form;\n if (entryPointID === id) {\n return [...acc, {\n formTitle: title,\n questions: questions.map(fixQuestionsProp),\n id,\n type,\n isMain: true\n }];\n }\n return [...acc, {\n formTitle: title,\n questions: fixQuestionsPropsForForms(id, questions),\n id,\n isMain: false,\n type,\n staticFields: type === 'WORKFLOW' && []\n }];\n }, []);\n});\n\nexport const getAllRelatedFormsAndEmailFields = createSelector(getAllRelatedFormsAndFields, formQuestionArr => {\n return formQuestionArr.map(f => ({ ...f, questions: f.questions.filter(q => q.type === 'control_email') }));\n});\n\nexport const getColoredFormArray = createSelector(getAllRelatedFormsAndFields, formArray => {\n return colorifyFormArray(formArray);\n});\n\nexport const getAllRelatedEmailQuestions = createSelector(getAllRelatedFormQuestionsPrefixed, questions => questions.filter(({ type }) => type === 'control_email'));\n\nexport const isAllAssigneeValid = createSelector(getSelectedElementInfo, element => {\n if (element && element?.type === elementTypes.ASSIGN_FORM && element?.assignee) {\n return element?.assignee?.filter(value => value.isValid === true)?.length > 0;\n }\n return false;\n});\n\nexport const getPrefillInitialMappings = elementID => createSelector(getElementByID(elementID), FormSelectors.getFlowForms, (element, forms) => {\n if (element && element?.type === elementTypes.ASSIGN_FORM && element?.prefillSettings?.mapping?.length > 0) {\n const mappingNotFormated = [];\n const mapping = element?.prefillSettings?.mapping;\n mapping.forEach(val => {\n const eachMap = [];\n eachMap[0] = val?.target;\n eachMap[1] = val?.jot;\n mappingNotFormated.push(eachMap);\n });\n return mappingNotFormated;\n }\n\n if (DEFAULT_FEATURES[AUTOMATCH]) {\n const sourceForm = forms?.find(f => f.id === element?.prefillFormID);\n const targetForm = forms?.find(f => f.id === element?.formID);\n if (targetForm?.questions && sourceForm?.questions) {\n const rightItems = PrefillUtils.getFormattedQuestions(\n Object.values(targetForm.questions),\n false,\n 'workflow'\n );\n\n const leftItems = PrefillUtils.getFormattedQuestions(\n Object.values(sourceForm.questions),\n true,\n 'workflow',\n true\n );\n\n if (rightItems && leftItems) {\n return PrefillUtils.automatch(\n leftItems,\n rightItems\n );\n }\n } else {\n return [['', '']];\n }\n }\n return [['', '']];\n});\n\nexport const isPrefillAllowEdit = elementID => createSelector(getElementByID(elementID), element => {\n if (element && element?.type === elementTypes.ASSIGN_FORM) {\n return element?.prefillSettings?.fieldBehaviour === 'edit';\n }\n return false;\n});\n\nexport const isAssingFormUsingOtherMapping = formID => createSelector(getAssignFormNodes, elements => {\n return elements?.filter(element => element?.prefillEnabled === 'Yes' && element?.prefillFormID === formID);\n});\n\nexport const getPrefillSettings = elementID => createSelector(getElementByID(elementID), element => {\n if (element && element?.type === elementTypes.ASSIGN_FORM) {\n return element?.prefillSettings;\n }\n return false;\n});\n\nexport const getAvailablePDFsForAllForm = createSelector(FormSelectors.getAllUsedForms, forms => forms?.map(form => ({ id: form.id, pdfs: form?.pdfs })));\nexport const getAvailablePDFsForAllFormIDs = createSelector(FormSelectors.getAllUsedForms, forms => forms?.reduce((prev, curr) => [...prev, ...curr?.pdfs?.map(e => e?.id)], []));\n\nexport const getPDFDocuments = elementID => createSelector(getElementByID(elementID), element => {\n if (element && element?.type === elementTypes.SEND_EMAIL && element?.subType === elementSubTypes.SEND_PDF) {\n return element?.pdfDocuments;\n }\n if (element && element?.type === elementTypes.SEND_EMAIL && element?.subType === elementSubTypes.SEND_APPROVAL_REPORT) {\n return element?.pdfDocuments;\n }\n return [];\n});\n\nexport const getTeam = state => state.team;\nexport const getTeams = createSelector(getTeam, team => team.teams);\nexport const getTeamApprover = elementID => createSelector([getElementByID(elementID), getTeams], (element, teams) => teams?.filter(team => team?.id === element?.team)?.[0]?.members);\nexport const getTeamSettings = createSelector(getTeam, team => team.teamSettings);\nexport const getIsTeamMember = createSelector(getTeam, team => team.isTeamMember);\nexport const getTeamID = createSelector(getTeam, getWorkflow, (team, workflow) => workflow.teamID || team.teamID);\nexport const getTeamProperties = createSelector(getTeam, team => team.teamProperties);\n\nexport const getCustomSenderEmails = createSelector(TEAM_ID && isEnterprise() ? getTeam : getUser, ({ senderEmails = {} }) => {\n const customSenderPrefixes = ['smtp:', 'verified:', 'mandrill:', 'team_smtp:'];\n const regexp = new RegExp(`^(${customSenderPrefixes.join('|')})(.*)$`);\n return Object.keys(senderEmails).filter(key => regexp.test(key));\n});\n\nexport const getFilteredQuestions = (selector, prop, _filtered) => createSelector(selector, questions => {\n if (!questions) {\n return [];\n }\n if (!_filtered || !prop) {\n return questions;\n }\n const filtered = Array.isArray(_filtered) ? _filtered : [_filtered];\n return questions?.filter(q => !filtered?.includes(q[prop]));\n});\n\nexport const getIntegrationProperties = elementID => createSelector(getElementByID(elementID), element => {\n return {\n actionType: element?.actionType,\n integrationID: element?.integrationID\n };\n});\n\nexport const getEdges = createSelector(getWorkflow, workflow => workflow.newCanvasEdges);\nexport const getV2Nodes = createSelector(getWorkflow, workflow => workflow.newCanvasNodes);\nexport const getEdgeType = createSelector(getWorkflow, workflow => workflow.edgeType);\nexport const getHoveredNode = createSelector(getWorkflowInspector, inspector => inspector.hoveredNode);\nexport const getSelectedNodeIds = createSelector(getWorkflowInspector, inspector => inspector.selectedElements);\nexport const getSelectedNode = createSelector(getSelectedNodeIds, selectedNodeIds => ((selectedNodeIds || []).length === 1 ? selectedNodeIds[0] : null));\nexport const getSelectedNodes = createSelector(getV2Nodes, getSelectedNodeIds, (nodes, selectedNodeIds) => nodes.map(node => selectedNodeIds.includes(node.id)));\n\nconst getLimitableNodesCount = createSelector(getNodes, nodes => nodes.filter(({ type }) => type !== elementTypes.PLACEHOLDER).length);\nconst getWorkflowElementLimit = createSelector(getWorkflow, workflow => {\n if (DEFAULT_FEATURES[LIMITATIONS]) {\n const elementLimitParam = getUrlParameter('ELEMENT_LIMIT');\n return elementLimitParam ? parseInt(elementLimitParam, 10) : workflow.elementLimit;\n }\n return null;\n});\nconst getWorkflowElementLimitLevel = createSelector(\n [getWorkflowElementLimit, getLimitableNodesCount],\n (elementLimit, nodesCount) => {\n const warningThreshold = Math.floor(elementLimit * 0.9);\n const normalThreshold = Math.floor(elementLimit * 0.7);\n\n let limitLevel = null;\n\n if (elementLimit !== null) {\n if (nodesCount >= elementLimit) {\n limitLevel = ELEMENT_LIMIT_LEVELS.DANGER;\n } else if (nodesCount >= warningThreshold) {\n limitLevel = ELEMENT_LIMIT_LEVELS.WARNING;\n } else if (nodesCount >= normalThreshold) {\n limitLevel = ELEMENT_LIMIT_LEVELS.NORMAL;\n }\n }\n\n return limitLevel;\n });\nexport const getIsWorkflowElementLimitReached = createSelector(getWorkflowElementLimitLevel, workflowElementLimitLevel => workflowElementLimitLevel === ELEMENT_LIMIT_LEVELS.DANGER);\nexport const getWorkflowElementLimitStatus = createSelector(\n [\n getWorkflowElementLimit,\n getLimitableNodesCount,\n getWorkflowElementLimitLevel,\n isSomebodyElsesWorkflow\n ],\n (elementLimit, nodesCount, limitLevel, somebodyElsesWorkflow) => (\n isEnterprise() || !Number.isFinite(elementLimit) || elementLimit === -1\n ? {}\n : {\n limitLevel,\n elementLimit,\n nodesCount,\n limitCount: elementLimit - nodesCount,\n limitPercent: (100 * (nodesCount > elementLimit ? elementLimit : nodesCount)) / elementLimit,\n isWorkflowOwner: !somebodyElsesWorkflow\n }\n )\n);\n\nexport const getWorkflowFormBuilder = state => state.workflowFormBuilder;\nexport const isWorkflowFormBuilderOpen = createSelector(getWorkflowFormBuilder, workflowFormBuilder => workflowFormBuilder.visible);\n","import browserHelper from '../utils/browserHelper';\n\nexport const EXTRA_PORT_SPACING = 12;\nexport const ARROW_SVG_WIDTH = 7;\nexport const PORT_SVG_WIDTH = browserHelper.is('mobile') ? 28 : 16;\nexport const PORT_SVG_HALF_WIDTH = PORT_SVG_WIDTH / 2;\nexport const WIDGET_WRAPPER_WIDTH = 280;\nexport const WIDGET_WRAPPER_HEIGHT = 85;\nexport const WIDGETS_VERTICAL_OFFSET = 150;\nexport const NUMBER_OF_PORTS = 8;\nexport const LINK_OFFSET = PORT_SVG_WIDTH + EXTRA_PORT_SPACING + 8;\nexport const CURVE_RADIUS = 8;\nexport const ENDPOINT_POSITION_OFFSET = 112;\nexport const END_POINT_WIDGET_WIDTH = 87;\nexport const TERMINATE_WIDGET_WIDTH = 145;\nexport const END_POINT_WIDGET_HEIGHT = 36;\nexport const MERGE_WIDGET_WIDTH = 72;\nexport const MERGE_WIDGET_HEIGHT = 72;\nexport const PADDING_FOR_SELECTION_BOX = 12;\n\nexport const preTheme = {\n leftPanelWidth: 300,\n rightPanelWidth: 364\n};\n\nexport const LINK_STYLE = {\n colors: {\n default: '#9e9fb7',\n selected: '#5e74e6',\n animated: '#5e74e6'\n },\n strokeWidth: 2,\n handleBarStrokeWidth: 32\n};\n\nexport const CIRCLE_COLORS = [\n '#ABDEE6',\n '#CBAACB',\n '#FFA500',\n '#D53049',\n '#86af49',\n '#B8E986',\n '#BD10E0',\n '#9013FE',\n '#4A90E2',\n '#50E3C2',\n '#B8E986',\n '#000000',\n '#4A4A4A',\n '#9B9B9B',\n '#FFFFFF'\n];\n","import debounce from 'lodash/debounce';\n\nimport { sendTrackData } from './sendTrackData';\n\nclass WatchmanRecorder {\n sentEvents = {};\n\n pendingEvents = [];\n\n setUser = username => {\n this.username = username;\n };\n\n setWorkflowID = id => {\n const shouldSendWaitingEvents = !this.workflowID && !!id;\n this.workflowID = id;\n if (shouldSendWaitingEvents) {\n this.pendingEvents.forEach(({ action, target }) => {\n this.trackEvent(action, target);\n });\n }\n };\n\n trackEvent = (action = '', target = {}, requireWorkflowID = false) => {\n if (!this.username) {\n console.log('unable to track, user not found!');\n }\n if (!action) return;\n\n if (requireWorkflowID && !this.workflowID) {\n this.pendingEvents.push({ action, target });\n return;\n }\n sendTrackData(this.username, action, { wfID: this.workflowID, ...target });\n };\n\n trackEventOnce = (action = '', target = {}) => {\n if (this.sentEvents[action]) {\n return;\n }\n this.sentEvents[action] = true;\n return this.trackEvent(action, target);\n };\n\n debouncedTrackEvent = debounce(this.trackEvent, 500);\n}\n\nexport default new WatchmanRecorder();\n\n// Another way of tracking data, we can send track data via saga or directly from this class.\n","import Bowser from 'bowser';\n\nconst browserHelper = Bowser.getParser(window.navigator.userAgent);\n\nexport default browserHelper;\n","class CookieUtils {\n cookieCache = {};\n\n createCookie = (name, value, days) => {\n let expires = '';\n if (days) {\n const date = new Date();\n date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));\n expires = `; expires=${date.toGMTString()}`;\n }\n this.cookieCache[name] = value;\n global.document.cookie = `${name}=${value}${expires}; path=/`;\n };\n\n readCookie = name => {\n if (name in this.cookieCache) return this.cookieCache[name];\n\n const nameEQ = `${name}=`;\n const ca = global.document.cookie.split(';');\n for (let i = 0; i < ca.length; i++) {\n let c = ca[i];\n while (c.charAt(0) === ' ') c = c.substring(1, c.length);\n if (c.indexOf(nameEQ) === 0) {\n const result = c.substring(nameEQ.length, c.length);\n this.cookieCache[name] = result;\n return result;\n }\n }\n return null;\n };\n\n deleteCookie = name => {\n delete this.cookieCache[name];\n this.createCookie(name, '', -1);\n };\n}\n\nexport default new CookieUtils(); // as singleton\n","const calculatePointDelta = (point1, point2) => ({ x: point2.x - point1.x, y: point2.y - point1.y });\n\nexport default calculatePointDelta;\n","import {\n PORT_SVG_WIDTH, WIDGET_WRAPPER_WIDTH, WIDGET_WRAPPER_HEIGHT, NUMBER_OF_PORTS, EXTRA_PORT_SPACING\n} from '../../styles/variables';\nimport { isNonRectangleElement } from './isNonRectangleElement';\n\nconst isTopPort = portName => ['DYNAMIC_TOP_0', 'DYNAMIC_TOP_1', 'DYNAMIC_TOP_2'].indexOf(portName) > -1;\nconst isBottomPort = portName => ['DYNAMIC_BOTTOM_0', 'DYNAMIC_BOTTOM_1', 'DYNAMIC_BOTTOM_2'].indexOf(portName) > -1;\nexport const isPortsEqual = (port1Name, port2Name, elementType) => {\n if (isNonRectangleElement(elementType)) {\n return isTopPort(port1Name, port2Name) || isBottomPort(port1Name, port2Name) || port1Name === port2Name;\n }\n return port1Name === port2Name;\n};\n\nconst calculatePortPositions = ({\n numberOfPorts = NUMBER_OF_PORTS,\n width = WIDGET_WRAPPER_WIDTH,\n height = WIDGET_WRAPPER_HEIGHT\n} = {}) => {\n const MIN_TOP_POSITION = -EXTRA_PORT_SPACING;\n const MAX_TOP_POSITION = height - (PORT_SVG_WIDTH - EXTRA_PORT_SPACING);\n const MIN_LEFT_POSITION = -EXTRA_PORT_SPACING;\n const MAX_LEFT_POSITION = width - (PORT_SVG_WIDTH - EXTRA_PORT_SPACING);\n const MIDDLE_TOP_POSITION = (height - PORT_SVG_WIDTH) / 2;\n const MIDDLE_LEFT_POSITION = (width - PORT_SVG_WIDTH) / 2;\n\n const TOP_MIDDLE = { top: MIN_TOP_POSITION, left: MIDDLE_LEFT_POSITION };\n const BOTTOM_MIDDLE = { top: MAX_TOP_POSITION, left: MIDDLE_LEFT_POSITION };\n const LEFT_MIDDLE = { top: MIDDLE_TOP_POSITION, left: MIN_LEFT_POSITION };\n const RIGHT_MIDDLE = { top: MIDDLE_TOP_POSITION, left: MAX_LEFT_POSITION };\n const BASE_POSITIONS = {\n RIGHT_MIDDLE,\n LEFT_MIDDLE\n };\n\n const NUMBER_OF_BASE_POSITIONS = Object.values(BASE_POSITIONS).length;\n const numberOfDynamicPorts = numberOfPorts - NUMBER_OF_BASE_POSITIONS;\n if (numberOfDynamicPorts <= 0) {\n return BASE_POSITIONS;\n }\n\n if (numberOfDynamicPorts % 2 !== 0) {\n return BASE_POSITIONS;\n }\n\n if (numberOfDynamicPorts === 2) {\n // TODO: Remove extra ones before release. They are for backward compability\n return {\n ...BASE_POSITIONS,\n DYNAMIC_TOP_0: TOP_MIDDLE,\n DYNAMIC_TOP_1: TOP_MIDDLE,\n DYNAMIC_TOP_2: TOP_MIDDLE,\n DYNAMIC_BOTTOM_0: BOTTOM_MIDDLE,\n DYNAMIC_BOTTOM_1: BOTTOM_MIDDLE,\n DYNAMIC_BOTTOM_2: BOTTOM_MIDDLE\n };\n }\n\n const dynamicSpacing = width / (numberOfDynamicPorts - 2);\n const calculateDynamicPositions = topPlacement => (new Array(numberOfDynamicPorts / 2).fill(1)).map((dummyValue, index) => ({ top: topPlacement, left: dynamicSpacing * (index + 1) }));\n const generateDynamicPositionsByPlacement = (topPlacement, prefix) => calculateDynamicPositions(topPlacement).reduce((prev, position, index) => ({ ...prev, [`${prefix}_${index}`]: position }), {});\n const dynamicTopPorts = generateDynamicPositionsByPlacement(MIN_TOP_POSITION, 'DYNAMIC_TOP');\n const dynamicBottomPorts = generateDynamicPositionsByPlacement(MAX_TOP_POSITION, 'DYNAMIC_BOTTOM');\n\n return {\n ...BASE_POSITIONS,\n ...dynamicTopPorts,\n ...dynamicBottomPorts\n };\n};\n\nexport default calculatePortPositions;\n","const calculateSelectionRange = nodesInsideSelection => {\n let topLeft = { x: nodesInsideSelection[0].position.x, y: nodesInsideSelection[0].position.y };\n let bottomRight = { x: nodesInsideSelection[0].position.x + nodesInsideSelection[0].getDimensions().width, y: nodesInsideSelection[0].position.y + nodesInsideSelection[0].getDimensions().height };\n nodesInsideSelection.forEach(node => {\n topLeft = { x: Math.min(topLeft.x, node.position.x), y: Math.min(topLeft.y, node.position.y) };\n bottomRight = { x: Math.max(bottomRight.x, node.position.x + node.getDimensions().width), y: Math.max(bottomRight.y, node.position.y + node.getDimensions().height) };\n });\n\n return { topLeft, bottomRight };\n};\n\nexport default calculateSelectionRange;\n","import { DEFAULT_NODE_LAYER_TYPE, DEFAULT_LINK_LAYER_TYPE } from '../../constants/identifiers';\n\n/* eslint-disable no-shadow */\nconst diagramToWorkflow = (serializedDiagram = {}) => {\n const {\n id, offsetX, offsetY, zoom, layers\n } = serializedDiagram;\n\n let nodes = [];\n let links = [];\n layers.forEach(({ type, models }) => {\n switch (type) {\n case DEFAULT_NODE_LAYER_TYPE:\n nodes = Object.values(models).map(\n ({\n id, locked, name, selected, type, x, y, ports: nodePorts\n }) => {\n const ports = nodePorts.map(({\n id, in: isInPort, label, links: portLinks\n }) => ({\n id, in: isInPort, label, links: portLinks\n }));\n\n return {\n id, locked, name, selected, type, x, y, ports\n };\n }\n );\n break;\n case DEFAULT_LINK_LAYER_TYPE:\n links = Object.values(models).map(({\n id, type, source, sourcePort, target, targetPort, points: nodePoints, labels\n }) => {\n const points = nodePoints.map(({\n id, x, y, isDirty\n }) => ({\n id, x, y, isDirty\n }));\n return ({\n id, type, source, sourcePort, target, targetPort, points, labels\n });\n });\n break;\n default:\n break;\n }\n });\n\n return {\n id, offsetX, offsetY, zoom, nodes, links\n };\n};\n\nexport const serializeDiagramFromLinkNode = linkNode => {\n return {\n id: linkNode.getID(),\n type: linkNode.getType(),\n labels: linkNode.getLabels()?.map(label => {\n const { forceRender, ...serializedLabel } = label.serialize();\n return serializedLabel;\n }),\n points: linkNode.points.map(point => {\n const {\n id, x, y, isDirty\n } = point.serialize();\n return {\n id, x, y, isDirty\n };\n }),\n fromElement: parseInt(linkNode.sourcePort.parent.getID(), 10),\n toElement: linkNode.targetPort ? parseInt(linkNode.targetPort.parent.getID(), 10) : null,\n fromPortName: linkNode.sourcePort.options.name,\n toPortName: linkNode.targetPort ? linkNode.targetPort.options.name : null\n };\n};\n\nexport default diagramToWorkflow;\n","const filterLinkFromOutcomes = ({ outcomes, linkID }) => outcomes.map(outcome => {\n if (parseInt(outcome.linkID, 10) !== parseInt(linkID, 10)) {\n return outcome;\n }\n\n const { linkID: tmpLinkID, ...remainingOutcome } = outcome;\n return remainingOutcome;\n});\n\nexport default filterLinkFromOutcomes;\n","import Ajv from 'ajv';\nimport { t } from '@jotforminc/translation';\n\nimport PROPERTIES_LIST from '../../properties';\nimport WORKFLOW_ELEMENT_MODELS from '../../constants/workflowElementModels';\nimport { elementSubTypes, elementTypes } from '../../constants/elementTypes';\n\nconst ajv = new Ajv({ useDefaults: 'empty' });\nconst precompiledProperties = Object.entries(PROPERTIES_LIST).reduce((list, [key, value]) => ({ ...list, [key]: ajv.compile(value) }), {});\n\nconst generateElementDefaults = ({\n type, subType, withModel = true, ...rest\n}) => {\n const data = {};\n if (subType && Object.values(elementSubTypes).indexOf(subType) !== -1) {\n data.subType = subType;\n }\n const extendWithDefaults = precompiledProperties[type] || precompiledProperties[elementTypes.GENERIC];\n extendWithDefaults(data);\n data.name = t(data.name);\n if (data.outcomes) {\n data.outcomes = data.outcomes.map?.(outcome => ({\n ...outcome,\n text: t(outcome.text)\n }));\n }\n return {\n ...data,\n ...(withModel ? { modelComponent: WORKFLOW_ELEMENT_MODELS[type] } : {}),\n ...rest\n };\n};\n\nexport default generateElementDefaults;\n","export const getNextOutcomeID = outcomes => {\n if (!outcomes.length) return 1;\n const maxID = Math.max.apply(Math, [...outcomes.map(({ id }) => (id / 1 || 0))]);\n return maxID + 1;\n};\n\nconst generateRandomColor = () => {\n const letters = '0123456789ABCDEF';\n let color = '#';\n for (let i = 0; i < 6; i++) {\n color += letters[Math.floor(Math.random() * letters.length)];\n }\n return color;\n};\n\nexport const getNextOutcomeButtonColor = ({ outcomes = [], random = false, filterFunctions = f => f }) => {\n const colorPalette = [\n '#01bd6f', '#D53049', '#9469ce', '#58d7e3',\n '#ff9757', '#e991d6', '#5e74e6', '#21caff',\n '#ff6767', '#363e76', '#8583a9', '#0090ba',\n '#01bd6f', '#ffb811'\n ].filter(filterFunctions);\n const notUsedYetColors = colorPalette.filter(color => !outcomes.some(outcome => outcome.buttonColor === color));\n if (!notUsedYetColors.includes(colorPalette[colorPalette.length - 1])) {\n // eslint-disable-next-line no-param-reassign\n random = true;\n }\n let nextColorIndex = outcomes.length;\n const lastUsedColor = colorPalette.indexOf(outcomes[outcomes.length - 1]?.buttonColor);\n if (!random && (!notUsedYetColors?.includes(colorPalette[outcomes.length]) || lastUsedColor > outcomes.length)) {\n const newPalette = colorPalette.filter((color, idx) => !outcomes.some(outcome => outcome.buttonColor === color) && idx >= lastUsedColor);\n nextColorIndex = colorPalette.indexOf(newPalette[0]);\n }\n let returningColor;\n if (!random) {\n returningColor = colorPalette[nextColorIndex];\n } else {\n const sourcePalette = notUsedYetColors.length ? notUsedYetColors : colorPalette;\n\n returningColor = sourcePalette[Math.floor(Math.random() * (sourcePalette.length - 1))];\n }\n\n return returningColor || generateRandomColor();\n};\n","export const generateRectanglePoints = ({ width, height, point: { x, y } }) => ({\n topLeftPoint: { x, y },\n topRightPoint: { x: x + width, y },\n bottomLeftPoint: { x, y: y + height },\n bottomRightPoint: { x: x + width, y: y + height }\n});\n\nconst generateRectangle = ({ point, width, height }) => {\n const {\n topLeftPoint,\n topRightPoint,\n bottomLeftPoint,\n bottomRightPoint\n } = generateRectanglePoints({ point, width, height });\n\n return {\n TOP: [topLeftPoint, topRightPoint],\n LEFT: [bottomLeftPoint, topLeftPoint],\n RIGHT: [topRightPoint, bottomRightPoint],\n BOTTOM: [bottomRightPoint, bottomLeftPoint]\n };\n};\n\nexport default generateRectangle;\n","import {\n WIDGET_WRAPPER_WIDTH,\n WIDGET_WRAPPER_HEIGHT,\n END_POINT_WIDGET_WIDTH,\n END_POINT_WIDGET_HEIGHT,\n MERGE_WIDGET_HEIGHT,\n MERGE_WIDGET_WIDTH,\n TERMINATE_WIDGET_WIDTH\n} from '../../styles/variables';\n\nimport { elementSubTypes, elementTypes } from '../../constants/elementTypes';\n\nexport const getElementDimensionsByType = ({ type, subType }) => {\n switch (true) {\n case type === elementTypes.END_POINT && subType === elementSubTypes.END_POINT_TERMINATE:\n return { width: TERMINATE_WIDGET_WIDTH, height: END_POINT_WIDGET_HEIGHT };\n case type === elementTypes.END_POINT:\n return { width: END_POINT_WIDGET_WIDTH, height: END_POINT_WIDGET_HEIGHT };\n case type === elementTypes.MERGE:\n case type === elementTypes.SPLIT:\n return { width: MERGE_WIDGET_WIDTH, height: MERGE_WIDGET_HEIGHT };\n default:\n return { width: WIDGET_WRAPPER_WIDTH, height: WIDGET_WRAPPER_HEIGHT };\n }\n};\n","import {\n WIDGET_WRAPPER_HEIGHT, WIDGET_WRAPPER_WIDTH, WIDGETS_VERTICAL_OFFSET\n} from '../../styles/variables';\nimport CanvasEngineBuilder from '../../modules/Canvas/V1/CanvasEngineBuilder';\n\nexport const calculateNewRowPosition = ({\n bottomPosition,\n baseMarginX = 0,\n alignXToStartPoint = false\n}) => {\n const { x: upperLeftX, y: upperLeftY } = bottomPosition;\n const newX = (alignXToStartPoint ? CanvasEngineBuilder.getStartPoint().getX() : upperLeftX) + baseMarginX;\n const newY = upperLeftY + WIDGET_WRAPPER_HEIGHT + WIDGETS_VERTICAL_OFFSET;\n return { x: newX, y: newY };\n};\n\nexport const calculateNextElementPosition = (mainElementPosition, extraOffset = 0) => {\n const { x: mainX, y: mainY } = mainElementPosition;\n return {\n x: mainX + WIDGET_WRAPPER_WIDTH * 2 + extraOffset,\n y: mainY\n };\n};\n","import maxBy from 'lodash/maxBy';\n\nimport CanvasEngineBuilder from '../../modules/Canvas/V1/CanvasEngineBuilder';\n\nimport { calculateNewRowPosition } from '../math/calculateRow';\nimport WORKFLOW_ELEMENT_MODELS from '../../constants/workflowElementModels';\nimport { DEFAULT_FEATURES, WORKFLOW_V2 } from '../../constants/features';\nimport store from '../../store';\n\nconst getMostBottomElement = () => {\n return maxBy(CanvasEngineBuilder.model.getNodes(), ({ position }) => position.y);\n};\n\nconst getElementPositionByID = elementID => CanvasEngineBuilder.getNode(elementID).getPosition();\n\nconst getNewElementPositionDefault = type => {\n const mostBottomElement = getMostBottomElement();\n const { [type]: ModelClass } = WORKFLOW_ELEMENT_MODELS;\n const dummyModel = new ModelClass();\n const { width } = dummyModel.getDimensions();\n\n const newElementPosition = calculateNewRowPosition({ bottomPosition: mostBottomElement.position, alignXToStartPoint: true, width });\n return newElementPosition;\n};\n\nconst getReactFlowMostBottomElement = () => {\n const { getState } = store;\n const { workflow: { newCanvasNodes: nodes } } = getState();\n return maxBy(nodes, ({ position }) => position.y);\n};\n\nconst getReactFlowElementPosition = () => {\n const mostBottomElement = getReactFlowMostBottomElement();\n const newElementPosition = calculateNewRowPosition({ bottomPosition: mostBottomElement.position, alignXToStartPoint: false, width: mostBottomElement.width });\n return newElementPosition;\n};\n\nexport const getNewElementPosition = ({\n elementID, position, type, centeredPosition\n}) => {\n switch (true) {\n case DEFAULT_FEATURES[WORKFLOW_V2]:\n if (position) return position;\n return getReactFlowElementPosition(type);\n case (elementID !== null && elementID !== undefined):\n return getElementPositionByID(elementID);\n case Boolean(position) && centeredPosition:\n const { [type]: ModelClass } = WORKFLOW_ELEMENT_MODELS;\n const dummyModel = new ModelClass();\n const { width, height } = dummyModel.getDimensions();\n return {\n x: position.x - width / 2,\n y: position.y - height / 2\n };\n case Boolean(position):\n return position;\n default:\n return getNewElementPositionDefault(type);\n }\n};\n\nexport const getNextToElementPosition = ({ element }) => {\n const { position, width, height } = element;\n const topMargin = 15;\n const newElementPosition = {\n x: position.x + parseInt(width * 0.15, 10),\n y: position.y + height + topMargin\n };\n return newElementPosition;\n};\n","import calculatePortPositions from './calculatePortPositions';\nimport { PORT_SVG_HALF_WIDTH, LINK_OFFSET } from '../../styles/variables';\n\nexport const getPortOffsettedPositionByName = ({\n width, height, portName, extraOffset, elementPosition\n}) => {\n const position = getPortCenterPositionByName({\n width, height, portName, elementPosition\n });\n return getPortOffsettedPosition({ position, portName, extraOffset });\n};\n\nexport const getPortOffsettedPosition = ({ position, portName, extraOffset }) => {\n const { x: baseX, y: baseY } = position;\n const { x: offsetX, y: offsetY } = getPortOffsetByname({ portName, extraOffset });\n return { x: baseX + offsetX, y: baseY + offsetY };\n};\n\nexport const getPortCenterPositionByName = parameters => {\n const position = getPortPositionByName(parameters);\n return getPortCenterPosition({ position });\n};\n\nexport const getPortPositionByName = ({\n width, height, elementPosition, portName\n}) => {\n const sanitizedPortName = portName.replace(/_(?:in|out)/i, '');\n const { [sanitizedPortName]: portOffset } = calculatePortPositions({ width, height });\n return { x: elementPosition.x + portOffset.left, y: elementPosition.y + portOffset.top };\n};\n\nexport const getPortCenterPosition = ({ position }) => ({\n x: Math.floor(position.x + PORT_SVG_HALF_WIDTH),\n y: Math.floor(position.y + PORT_SVG_HALF_WIDTH)\n});\n\nexport const getPortOffsetByname = ({ portName, extraOffset = 0 }) => {\n const offset = LINK_OFFSET + extraOffset;\n const alignment = getAlignmentByName({ portName });\n switch (alignment) {\n case 'TOP':\n return { x: 0, y: -1 * offset };\n case 'BOTTOM':\n return { x: 0, y: offset };\n case 'LEFT':\n return { x: -1 * offset, y: 0 };\n case 'RIGHT':\n return { x: offset, y: 0 };\n default:\n return { x: 0, y: 0 };\n }\n};\n\nexport const getAlignmentByName = ({ portName }) => {\n const portInfoList = portName.split('_');\n return portInfoList[0] === 'DYNAMIC' ? portInfoList[1] : portInfoList[0];\n};\n","import { elementTypesWithOutcome } from '../../constants/elementTypes';\n\nexport const isElementWithOutcome = type => elementTypesWithOutcome.indexOf(type) > -1;\n","import { nonRectangleElementTypes } from '../../constants/elementTypes';\n\nexport const isNonRectangleElement = type => nonRectangleElementTypes.indexOf(type) > -1;\n","const isPointInsideRectangle = ({\n topLeftPoint, bottomRightPoint, position, offset = 0\n}) => (\n topLeftPoint.x - offset < position.x\n && topLeftPoint.y - offset < position.y\n && bottomRightPoint.x + offset > position.x\n && bottomRightPoint.y + offset > position.y\n);\n\nexport default isPointInsideRectangle;\n","import { EMAIL_TEMPLATE_TYPES } from '@jotforminc/email-wizards';\nimport {\n ApprovalEmailSubTypes, AssignEmailSubTypes, AssignFormEmailSubTypes, AssignTaskEmailSubTypes\n} from './emailSubTypes';\n\nconst emailModalTitleSuffixes = {\n [EMAIL_TEMPLATE_TYPES.WORKFLOW_SEND_EMAIL_GENERAL]: '',\n [ApprovalEmailSubTypes.APPROVAL_REQUEST]: 'Request Email',\n [ApprovalEmailSubTypes.APPROVAL_REMINDER]: 'Reminder Email',\n [AssignEmailSubTypes.ASSIGN_NOTIFICATION]: 'Notification Email',\n [AssignEmailSubTypes.ASSIGN_REMINDER]: 'Reminder Email',\n [AssignFormEmailSubTypes.ASSIGN_FORM_REMINDER]: 'Notification Reminder Email',\n [EMAIL_TEMPLATE_TYPES.WORKFLOW_SEND_REPORT]: '',\n [EMAIL_TEMPLATE_TYPES.WORKFLOW_ASSIGN_TASK]: 'Email',\n [AssignTaskEmailSubTypes.ASSIGN_TASK_REMINDER]: 'Reminder Email'\n\n};\nexport default emailModalTitleSuffixes;\n","import { getOutcomeButtonList } from './fixEmailOutcomes';\n\nexport const getOutcomesFromEmailContent = ({ emailContent }) => {\n const wrapperDiv = document.createElement('div');\n wrapperDiv.innerHTML = emailContent;\n const outcomeElements = getOutcomeButtonList(wrapperDiv);\n const outcomeHrefs = Array.from(outcomeElements).map(element => element.href);\n const outcomeIDs = outcomeHrefs.map(href => {\n try {\n if (href.includes('approve')) return 1;\n if (href.includes('deny')) return 2;\n if (href.includes('moreActions')) return 'moreActions';\n if (href.includes('assigneeLink')) return 'assigneeLink';\n if (href.includes('?outcomeID=undefined')) return 'moreActions';\n return href.split('%3FoutcomeID=')[1] || href.split('?outcomeID=')[1] || href.split('%3FoutcomeID%3D')[1];\n } catch (e) {\n console.error(e);\n console.error(`Error while trying to get outcome id from the button. href=${href}`);\n }\n return null;\n }).filter(_ => _);\n return outcomeIDs;\n};\n\nexport const getRemovableElement = (outcome, editor) => {\n try {\n const allOutcomeButtons = [...editor.dom.doc.getElementsByTagName('a')];\n // You know, it's easy to judge people\n const removableElement = allOutcomeButtons?.find(a => (outcome.id === 'moreAction'\n ? a?.dataset?.mceHref === '{approvalLink}?moreActions'\n || a?.dataset?.mceHref === '{approvalDeeplink}?outcomeID=moreActions'\n || a?.dataset?.mceHref === '{approvalLink}?outcomeID=undefined'\n || a?.dataset?.mceHref === '{approvalDeeplink}?outcomeID=undefined'\n : a?.dataset?.mceHref === `{approvalDeeplink}%3FoutcomeID=${outcome?.id}`\n || a?.dataset?.mceHref === '{assigneeLink}'\n || a?.dataset?.mceHref === `{approvalLink}%3FoutcomeID=${outcome?.id}`\n || a?.dataset?.mceHref === `{approvalLink}?outcomeID=${outcome?.id}`\n || a?.dataset?.mceHref === `{approvalDeeplink}%3FoutcomeID%3D${outcome?.id}`\n || a?.dataset?.mceHref === `{approvalDeeplink}?outcomeID=${outcome?.id}`));\n return removableElement;\n } catch (e) {\n console.error(e);\n return false;\n }\n};\n\nexport const findMoreAction = editor => {\n const editorButtonContent = editor?.dom?.doc?.getElementsByTagName('a');\n if (editorButtonContent) {\n const editorButtonContentContext = [...editorButtonContent];\n const moreActionButton = editorButtonContentContext?.find(button => {\n const mceHrefOfButton = button?.dataset?.mceHref;\n return mceHrefOfButton?.includes('moreActions') || mceHrefOfButton?.includes('undefined');\n });\n return moreActionButton;\n }\n};\n\nexport const findMoreActionText = editor => {\n const defaultText = 'Go to Inbox';\n return (findMoreAction(editor)?.innerText || defaultText).trim();\n};\n","import React from 'react';\nimport {\n bool, func, oneOfType, string, node\n} from 'prop-types';\nimport { CheckboxItem as CommonCheckboxItem } from '@jotforminc/checkbox';\nimport { isYes } from '../../utils';\n\nconst CheckboxWithValue = ({\n value = false,\n onChange = f => f,\n children = null,\n ...props\n}) => {\n const isChecked = isYes(value);\n const handleClick = () => {\n const newSelectedValue = !isChecked;\n onChange(newSelectedValue ? 'Yes' : 'No');\n };\n\n return (\n \n {children}\n \n );\n};\n\nCheckboxWithValue.propTypes = {\n value: oneOfType([string, bool]),\n onChange: func,\n children: node\n};\nexport default CheckboxWithValue;\n","import React, { useRef, useEffect } from 'react';\nimport { string, bool, func } from 'prop-types';\n\nconst MoreAction = ({\n isEditStateEnable, text, onChange, onKeyUp, onBlur\n}) => {\n const className = 'wfEmail-outcome-editable';\n const inputRef = useRef();\n useEffect(() => {\n if (isEditStateEnable && inputRef.current) {\n inputRef.current.focus();\n inputRef.current.select();\n }\n }, [isEditStateEnable, inputRef.current]);\n return isEditStateEnable ? (\n \n ) : (\n
    {text}
    \n );\n};\n\nMoreAction.propTypes = {\n isEditStateEnable: bool.isRequired,\n text: string.isRequired,\n onChange: func.isRequired,\n onKeyUp: func.isRequired,\n onBlur: func.isRequired\n};\n\nexport default MoreAction;\n","import {\n shape, arrayOf, oneOfType, string, number\n} from 'prop-types';\nimport React, { useState, useRef } from 'react';\nimport { Tooltip } from '@jotforminc/tooltip';\nimport { useOnClickOutside } from '@jotforminc/hooks';\nimport { generateOutcomeButtonHTML } from '../../utils/fixEmailOutcomes';\nimport { getRemovableElement, findMoreActionText, findMoreAction } from '../../utils/outcomeUtils';\nimport CheckboxWithValue from '../Checkbox/CheckboxWithValue';\nimport MoreAction from './MoreAction';\n\nconst MultipleCheckbox = ({\n outcomes = [],\n selectedOutcomes = [],\n editor = {},\n moreActionOutcome = [],\n multipleCheckboxDefaultProperties = {}\n}) => {\n const [moreActionText, setMoreActionText] = useState(findMoreActionText(editor));\n const [isUnavailable, setIsUnavailable] = useState('');\n const containerRef = useRef();\n const [isEditStateEnable, setEditStateEnable] = useState(false);\n const [currentSelectedOutcome, setCurrentSelectedOutcome] = useState(selectedOutcomes);\n const className = isUnavailable ? 'isUnavailable' : null;\n\n const handleMoreActionClick = () => setEditStateEnable(true);\n\n const isValueChecked = outcome => {\n return currentSelectedOutcome.map(x => `${x}`).includes(`${outcome.outcomeID || outcome.id}`);\n };\n\n const checkLastItemSelected = outcome => {\n const lastOutcomeExist = currentSelectedOutcome?.length === 1;\n const currentSelectedOutcomeIsMoreAction = currentSelectedOutcome?.[0] === 'MoreActions' && outcome?.outcomeID === 'MoreActions';\n const currentSelectedOutcomeIsOutcome = currentSelectedOutcome?.[0] !== 'MoreActions' && outcome?.outcomeID?.toString() === currentSelectedOutcome?.[0];\n if (lastOutcomeExist) {\n return currentSelectedOutcomeIsMoreAction || currentSelectedOutcomeIsOutcome;\n }\n return false;\n };\n\n const handleChange = (val, outcome, fromMoreAction = false) => {\n if (checkLastItemSelected(outcome)) {\n setIsUnavailable('isUnavailable');\n return;\n }\n setIsUnavailable('');\n\n if (val === 'Yes' && currentSelectedOutcome && !currentSelectedOutcome?.includes(`${outcome?.outcomeID || outcome?.id}`)) {\n const customButtonHTML = generateOutcomeButtonHTML(fromMoreAction ? { ...outcome, text: moreActionText } : outcome);\n setCurrentSelectedOutcome([...currentSelectedOutcome, `${outcome?.outcomeID || outcome?.id}`]);\n editor.insertContent(customButtonHTML);\n editor.fire('change');\n }\n\n if (val === 'No') {\n const removableElement = getRemovableElement(outcome, editor);\n if (removableElement) {\n removableElement.remove();\n editor.fire('change');\n setCurrentSelectedOutcome(currentSelectedOutcome?.filter(el => el !== `${outcome?.outcomeID || outcome?.id}`));\n }\n }\n };\n\n const renderUnavailableTooltip = isUnavailable ? (\n \n You must have at least one button.\n \n ) : null;\n\n const renderOutcomes = () => outcomes.map(outcome => (\n handleChange(val, outcome)}\n size=\"16px\"\n backgroundColor=\"#01BD6F\"\n borderColor=\"#01BD6F\"\n >\n {outcome?.text }\n {renderUnavailableTooltip}\n \n ));\n\n const handleMoreActionOnChange = val => {\n if (val) {\n setMoreActionText(val);\n }\n };\n\n const handleMoreActionOutsideClick = () => {\n if (isEditStateEnable) {\n setEditStateEnable(false);\n const moreActionElement = findMoreAction(editor);\n moreActionElement.innerHTML = moreActionText;\n editor.fire('change');\n }\n };\n\n const onEnterPressed = e => {\n if (e.keyCode === 13 || e.code === 'Enter' || e.key === 'Enter') {\n handleMoreActionOutsideClick();\n setEditStateEnable(false);\n }\n };\n\n useOnClickOutside(containerRef, handleMoreActionOutsideClick);\n\n const renderMoreActions = () => {\n return (\n
    \n handleChange(val, moreActionOutcome?.[0], true)}\n size=\"16px\"\n backgroundColor=\"#01BD6F\"\n borderColor=\"#01BD6F\"\n >\n handleMoreActionOnChange(e.target.value)}\n text={moreActionText}\n onKeyUp={onEnterPressed}\n onBlur={handleMoreActionOutsideClick}\n />\n \n {renderUnavailableTooltip}\n {isValueChecked(moreActionOutcome?.[0]) ?
    : null}\n
    \n \n Users will take approval actions in Jotform Inbox. This option always requires login.\n \n
    \n
    \n );\n };\n\n return (\n <>\n
    \n {multipleCheckboxDefaultProperties.showFirstCheckboxHeader && (\n
    \n {multipleCheckboxDefaultProperties.firstCheckboxListText}\n
    \n )}\n
    \n {renderOutcomes()}\n
    \n
    \n
    \n { multipleCheckboxDefaultProperties.showSecondCheckboxHeader\n && (\n
    \n {multipleCheckboxDefaultProperties.secondCheckboxListText}\n
    \n )}\n
    \n {renderMoreActions()}\n
    \n
    \n \n );\n};\n\nMultipleCheckbox.propTypes = {\n outcomes: arrayOf(shape({})),\n selectedOutcomes: arrayOf(oneOfType([string, number])),\n editor: shape({}),\n moreActionOutcome: arrayOf(shape({})),\n multipleCheckboxDefaultProperties: shape({})\n};\n\nexport default MultipleCheckbox;\n","import {\n array,\n func, oneOfType, shape, string\n} from 'prop-types';\nimport React, { forwardRef, useImperativeHandle, useRef } from 'react';\nimport { Popover, Hooks } from '@jotforminc/uikit';\nimport MultipleCheckbox from '../MultipleCheckbox';\n\nconst EmailOutcomeCheckbox = forwardRef(({\n className = 'wfEmail-outcome-container',\n popoverOptions = { placement: 'bottom' },\n onMouseEnter = f => f,\n outcomes = [],\n selectedOutcomes = [],\n moreActionOutcome = [],\n onMouseLeave = f => f,\n editor = {},\n multipleCheckboxDefaultProperties = {\n headerText: 'SHOW/HIDE APPROVAL ACTIONS',\n firstCheckboxListText: 'Outcomes',\n secondCheckboxListText: 'More Actions',\n showFirstCheckboxHeader: true,\n showSecondCheckboxHeader: true\n },\n targetRef\n}, ref) => {\n const menuRef = useRef();\n const [isMenuVisible, setMenuVisibility] = Hooks.useClickOutsideState(false, [menuRef]);\n useImperativeHandle(ref, () => ({\n setMenuVisibility\n }));\n return (\n isMenuVisible && (\n \n \n
    \n {multipleCheckboxDefaultProperties.headerText}\n
    \n
    \n \n
    \n
    \n \n )\n );\n});\n\nEmailOutcomeCheckbox.propTypes = {\n multipleCheckboxDefaultProperties: shape({}),\n className: string,\n popoverOptions: shape({}),\n targetRef: oneOfType([func, shape({})]).isRequired,\n onMouseEnter: func,\n outcomes: array,\n selectedOutcomes: array,\n onMouseLeave: func,\n moreActionOutcome: array,\n editor: shape({})\n};\n\nexport default EmailOutcomeCheckbox;\n","import {\n array, func, oneOfType, shape\n} from 'prop-types';\nimport React, { useEffect, useRef, useState } from 'react';\nimport EmailOutcomeCheckbox from './index';\n\nconst EmailOutcomeCheckboxWrapper = ({\n selectedOutcomes,\n outcomes,\n targetRef,\n editor,\n multipleCheckboxDefaultProperties\n}) => {\n const moreActionOutcome = {\n id: 'moreAction',\n outcomeID: 'moreActions',\n type: 'MORE',\n buttonColor: '#fff',\n text: 'Go to Inbox',\n textColor: '#5e74e6'\n };\n const [isVisible, setVisible] = useState(true);\n\n const ref = useRef();\n const handleChange = () => {\n setVisible(true);\n };\n useEffect(() => {\n if (ref.current) {\n ref.current.setMenuVisibility(true);\n }\n }, [ref]);\n return isVisible ? (\n \n ) : null;\n};\n\nEmailOutcomeCheckboxWrapper.propTypes = {\n targetRef: oneOfType([func, shape({})]).isRequired,\n outcomes: array,\n selectedOutcomes: array,\n editor: shape({}),\n multipleCheckboxDefaultProperties: shape({})\n};\n\nEmailOutcomeCheckboxWrapper.defaultProps = {\n outcomes: [],\n selectedOutcomes: [],\n editor: {},\n multipleCheckboxDefaultProperties: {\n headerText: 'SHOW/HIDE APPROVAL ACTIONS',\n firstCheckboxListText: 'Outcomes',\n secondCheckboxListText: 'More Actions',\n showFirstCheckboxHeader: true,\n showSecondCheckboxHeader: true\n }\n};\n\nexport default EmailOutcomeCheckboxWrapper;\n","import React from 'react';\nimport EmailOutcomeCheckboxWrapper from './EmailOutcomeCheckboxWrapper';\n\nexport const outcomeButtonsCheckbox = ({\n outcomes, selectedOutcomes, targetRef, editor, multipleCheckboxDefaultProperties\n}) => {\n return (\n \n );\n};\n","export const assignTaskDefinedOutcome = [\n {\n id: 'assigneeLink',\n outcomeID: 'assigneeLink',\n action: 'assigneeLink',\n type: 'CUSTOM',\n buttonColor: '#0075e3',\n text: 'View Task',\n textColor: '#fff',\n linkID: 1\n }\n];\n","/* eslint-disable complexity */\nimport sortBy from 'lodash/sortBy';\nimport get from 'lodash/get';\nimport { t } from '@jotforminc/translation';\nimport { EMAIL_TEMPLATE_TYPES, isImportedPdfAttachable } from '@jotforminc/email-wizards';\nimport { tagDuplicateProperty } from '@jotforminc/utils';\nimport { elementTypes } from '../constants/elementTypes';\nimport emailModalTitleSuffixes from '../constants/emailModalTitleSuffixes';\nimport {\n ApprovalEmailSubTypes, AssignEmailSubTypes, AssignFormEmailSubTypes, AssignTaskEmailSubTypes\n} from '../constants/emailSubTypes';\nimport { isElementUsingMultiPDFDropdown, isYes } from './index';\nimport {\n DEFAULT_FEATURES, MULTI_FORM_PDF, OUTCOME_BUTTONS, CREATE_REMINDER_EMAIL\n} from '../constants/features';\nimport { outcomeButtonsCheckbox } from '../components/EmailOutcomeCheckbox/helper';\nimport { getOutcomesFromEmailContent } from './outcomeUtils';\nimport { assignTaskDefinedOutcome } from '../constants/assignTaskDefinedOutcome';\n\nexport function generateActionButtonsFromOutcomes(outcomes) {\n const hasOutcome = outcomes && outcomes.length > 0;\n if (!hasOutcome) {\n return [\n { backgroundColor: '#01bd6f', text: t('Approve'), actionUrl: '{approvalDeeplink}%3FoutcomeID=1' },\n { backgroundColor: '#f43b57', text: t('Deny'), actionUrl: '{approvalDeeplink}%3FoutcomeID=2' }\n ];\n }\n const outcomeOptions = DEFAULT_FEATURES[OUTCOME_BUTTONS] ? outcomes : outcomes.slice(0, 2);\n return outcomeOptions.map(({\n buttonColor, text, textColor, outcomeID\n }) => ({\n text,\n textColor,\n backgroundColor: buttonColor,\n actionUrl: `{approvalDeeplink}%3FoutcomeID%3D${outcomeID}`\n }));\n}\n\nexport function generateActionButtonsForElement(elementType, ...rest) {\n switch (elementType) {\n case elementTypes.APPROVAL:\n return generateActionButtonsFromOutcomes(...rest);\n case elementTypes.ASSIGN:\n return [{\n textColor: '#fff', backgroundColor: '#5E74E6', text: t('View Task'), actionUrl: '{approvalDeeplink}'\n }];\n case elementTypes.ASSIGN_TASK:\n return [{ backgroundColor: '#0075E3', text: t('View Task'), actionUrl: '{assigneeLink}' }];\n default:\n return [];\n }\n}\n\nconst existingPasswordPlaceholderValue = '*jfplaceholder*'; // also exists in common :/\n\nconst getPDFFormPropertiesByID = (allFormPropertiesArray = [], id) => {\n if (!Array.isArray(allFormPropertiesArray)) {\n return {};\n }\n const formProperties = allFormPropertiesArray?.find(formProps => formProps?.id === id);\n return formProperties || {};\n};\n\nexport const getAllPDFTemplateOptions = (emailProps, availableAllPDFs, allFormProperties) => {\n const formattedOptions = [];\n availableAllPDFs.forEach(pdf => {\n const { id, pdfs } = pdf;\n const formProps = getPDFFormPropertiesByID(allFormProperties, id);\n formattedOptions.push({ ...getPDFTemplateOptions(emailProps, pdfs, formProps, true), formID: formProps.id });\n });\n return formattedOptions;\n};\n\n// TODO: try using EmailWizardWithAdapter this is a copy :/\nexport const getPDFTemplateOptions = ({\n pdfId, pdfPassword, pdfattachment, passwordEnabled, pdfDocuments\n}, availablePDFs = [], formProperties, forAllForms = false) => {\n const selectedPdfId = pdfId;\n let options = [];\n const nonFillablePDFS = availablePDFs.filter(pdf => pdf.type !== 'FORM');\n options = nonFillablePDFS.map(pdf => {\n if (forAllForms) {\n return ({\n value: pdf.id,\n text: pdf.title,\n formID: pdf.formID\n });\n }\n return ({\n value: pdf.id,\n text: pdf.title\n });\n });\n\n if (options.length < 1) {\n options.push({\n value: formProperties?.id,\n formID: formProperties?.id,\n text: t('Default Document')\n });\n }\n\n const isImportedPdfAvailable = isImportedPdfAttachable(formProperties.importedPDF, formProperties.importedPdfIsConnected);\n\n if (isImportedPdfAvailable) {\n options.unshift({\n value: 'importedPDF',\n text: t('The Original PDF with form submission data.'),\n link: `/pdf-editor/${formProperties?.id}`,\n ...(forAllForms ? { formID: formProperties?.id } : {})\n });\n }\n\n const selectedOptionsPredefined = !selectedPdfId ? [] : selectedPdfId.split(',').reduce((acc, curr) => {\n const selectedOption = options.find(option => option.value === curr);\n return [...acc, {\n value: curr,\n text: selectedOption ? selectedOption.text : ''\n }];\n }, []);\n\n const selectedOptions = selectedOptionsPredefined;\n if (!isImportedPdfAvailable && options.length === 1 && selectedOptions.length === 0 && options[0].text === t('Default Document')) { // if only have default document\n selectedOptions.push({\n value: '',\n text: t('Default Document')\n });\n }\n\n // Special case: select first pdf if form has custom pdfs and none is selected.\n // if (selectedOptions.length === 0 && options.length > 0 && pdfattachment === '1') {\n // selectedOptions.push(options[0]);\n // }\n\n return {\n pdfOptions: options,\n selectedPDFOptions: selectedOptions.map(({ value }) => value),\n enablePDFPassword: passwordEnabled === '1',\n PDFPassword: pdfPassword ? existingPasswordPlaceholderValue : '',\n attachPDF: pdfattachment === '1',\n pdfDocuments: pdfDocuments\n };\n};\n\nexport const STATIC_EMAIL_FIELDS = [\n { text: t('Submission ID'), placeholder: '{id}' },\n { text: t('Form Title'), placeholder: '{form_title}' },\n { text: t('Edit Link'), placeholder: '{edit_link}' },\n { text: t('IP Address'), placeholder: '{ip}' },\n { text: t('PDF Link'), placeholder: '{pdf-link}' }\n];\n\nexport const getExtraEditorButtons = elements => {\n const commentEnabledApprovals = elements.filter(e => e.type === elementTypes.APPROVAL);\n const sortedApprovals = sortBy(commentEnabledApprovals, o => o.id);\n const taggedApprovals = tagDuplicateProperty('name')(sortedApprovals);\n const enableOutcomeButtons = DEFAULT_FEATURES[OUTCOME_BUTTONS];\n const renderApprovalActionsButton = enableOutcomeButtons ? {\n id: 'approvalActions'\n } : {};\n return [{\n id: 'approvalFieldsList',\n generator: editor => {\n return {\n type: 'menubutton',\n text: t('Approval Fields'),\n icon: false,\n menu: taggedApprovals.length > 0\n ? taggedApprovals.map(f => ({ text: `${f.name} ${t('comment')}`, onclick: () => editor.insertContent(`{${f.id}_comment}`) })) : [{ text: t('No result found.') }]\n };\n }\n }, renderApprovalActionsButton];\n};\n\n// eslint-disable-next-line complexity\nexport const enrichEmailData = emailResult => {\n const {\n attachPDF, selectedPDFOptions, pdfDocuments, PDFPassword, usesNewPDF, enablePDFPassword, type, subType, ...emailData\n } = emailResult;\n const usedMultiFormPDF = DEFAULT_FEATURES[MULTI_FORM_PDF] && isElementUsingMultiPDFDropdown(type, subType);\n // PDF Related\n emailData.pdfattachment = attachPDF ? '1' : '0';\n if (attachPDF && selectedPDFOptions.length === 0 && !usedMultiFormPDF) {\n emailData.pdfattachment = '0';\n } else if (attachPDF && !usedMultiFormPDF) {\n emailData.pdfId = selectedPDFOptions.join(',');\n } else if (attachPDF && usedMultiFormPDF && pdfDocuments) {\n emailData.pdfattachment = '1';\n if (Array.isArray(pdfDocuments)) {\n emailData.pdfDocuments = pdfDocuments;\n } else {\n const formIDs = Object.keys(pdfDocuments);\n const selectedPDFs = Object.values(pdfDocuments);\n let index = 0;\n const arr = [];\n selectedPDFs?.forEach(pdfs => {\n pdfs?.forEach(value => {\n const formatedPDF = { formID: '', pdfID: '' };\n formatedPDF.formID = formIDs[index];\n formatedPDF.pdfID = value;\n if (value === '') {\n formatedPDF.defaultDocument = true;\n }\n if (value === 'importedPDF') {\n formatedPDF.importedPDF = true;\n formatedPDF.pdfID = '';\n }\n arr.push(formatedPDF);\n });\n index++;\n });\n emailData.pdfDocuments = arr;\n }\n } else if (!attachPDF && usedMultiFormPDF) {\n emailData.pdfattachment = '0';\n }\n\n emailData.passwordEnabled = enablePDFPassword ? '1' : '0';\n\n if (typeof PDFPassword === 'string' && PDFPassword && PDFPassword !== existingPasswordPlaceholderValue) {\n emailData.pdfPassword = PDFPassword;\n if (!PDFPassword) {\n emailData.passwordEnabled = '0';\n }\n }\n\n if (emailData.hideEmptyFields !== undefined) {\n emailData.hideEmptyFields = emailData.hideEmptyFields ? '1' : '0';\n }\n\n if (emailData.uploadAttachment !== undefined) {\n emailData.uploadAttachment = emailData.uploadAttachment ? '1' : '0';\n }\n\n return emailData;\n};\n\nexport const getEmailModalTitle = (element, emailSubType = EMAIL_TEMPLATE_TYPES.WORKFLOW_SEND_EMAIL_GENERAL) => {\n return t('{elementName} {emailTypeSuffix}').replace('{elementName}', element.name).replace('{emailTypeSuffix}', emailModalTitleSuffixes[emailSubType]);\n};\n\nexport const getCommonEmailProps = (element, emailType, emailSubType) => {\n let extractionPath = '';\n const isDirtyCheckDisable = DEFAULT_FEATURES[CREATE_REMINDER_EMAIL];\n switch (emailType) {\n case EMAIL_TEMPLATE_TYPES.WORKFLOW_APPROVE_START:\n extractionPath = 'approvalEmail.email';\n const isReminderEmail = isDirtyCheckDisable ? true : isYes(element?.reminder?.customizeReminder?.customReminderEmail?.isDirty);\n const isReminderEmailDefined = element?.reminder?.customizeReminder?.customReminderEmail?.content;\n if (emailSubType === ApprovalEmailSubTypes.APPROVAL_REMINDER && isReminderEmail && isReminderEmailDefined) {\n extractionPath = 'reminder.customizeReminder.customReminderEmail';\n }\n break;\n case EMAIL_TEMPLATE_TYPES.WORKFLOW_ASSIGN_TASK:\n extractionPath = 'assignTaskEmail.email';\n const isTaskReminderEmail = isDirtyCheckDisable ? true : isYes(element?.reminder?.customizeReminder?.customReminderEmail?.isDirty);\n const isTaskReminderEmailDefined = element?.reminder?.customizeReminder?.customReminderEmail?.content;\n if (emailSubType === AssignTaskEmailSubTypes.ASSIGN_TASK_REMINDER && isTaskReminderEmail && isTaskReminderEmailDefined) {\n extractionPath = 'reminder.customizeReminder.customReminderEmail';\n }\n break;\n case EMAIL_TEMPLATE_TYPES.WORKFLOW_ASSIGN_START:\n extractionPath = 'assignEmail.email';\n if (emailSubType === AssignEmailSubTypes.ASSIGN_REMINDER\n && isYes(element?.reminder?.customizeReminder?.customReminderEmail?.isDirty)) {\n extractionPath = 'reminder.customizeReminder.customReminderEmail';\n }\n break;\n case EMAIL_TEMPLATE_TYPES.WORKFLOW_ASSIGN_FORM_NOTIFICATION: {\n extractionPath = 'assignFormEmail.email';\n const isAssignFormReminderEmail = isDirtyCheckDisable ? true : isYes(element?.reminder?.customizeReminder?.customReminderEmail?.isDirty);\n const isAssignFormReminderEmailDefined = element?.reminder?.customizeReminder?.customReminderEmail?.content;\n if (emailSubType === AssignFormEmailSubTypes.ASSIGN_FORM_REMINDER && isAssignFormReminderEmail && isAssignFormReminderEmailDefined) {\n extractionPath = 'reminder.customizeReminder.customReminderEmail';\n }\n break;\n }\n default:\n break;\n }\n\n const {\n subject,\n content,\n to: toProp,\n senderName,\n replyTo,\n attachment,\n senderEmail,\n passwordEnabled,\n pdfId,\n pdfPassword,\n pdfattachment,\n hideEmptyFields,\n uploadAttachment,\n pdfDocuments\n } = get(element, extractionPath, element);\n\n let to;\n switch (element.type) {\n case elementTypes.APPROVAL:\n to = element.approver;\n break;\n case elementTypes.ASSIGN_FORM:\n to = element.assignee;\n break;\n default:\n to = toProp;\n break;\n }\n\n return {\n subject,\n content,\n to,\n senderName,\n replyTo,\n attachment,\n senderEmail,\n passwordEnabled,\n pdfId,\n pdfDocuments,\n pdfPassword,\n pdfattachment,\n uploadAttachment: uploadAttachment === '1',\n hideEmptyFields: hideEmptyFields === undefined ? true : (hideEmptyFields === '1')\n };\n};\n\nexport const getEditorConfigs = ({ element }) => {\n switch (true) {\n case DEFAULT_FEATURES[OUTCOME_BUTTONS] && element.type === elementTypes.APPROVAL:\n return {\n editorPopoverButtons: [{\n id: 'approvalActions',\n icon: 'bullist',\n tooltip: 'Show/hide approval actions',\n component: editor => {\n const approvalActionsButton = document.getElementById('approvalActions');\n const selectedOutcomes = getOutcomesFromEmailContent({ emailContent: editor.getContent() });\n return outcomeButtonsCheckbox({\n selectedOutcomes: selectedOutcomes,\n outcomes: element.outcomes,\n targetRef: { current: approvalActionsButton },\n editor: editor,\n multipleCheckboxDefaultProperties: {\n headerText: 'SHOW/HIDE TASK ACTIONS',\n firstCheckboxListText: 'Outcomes',\n secondCheckboxListText: 'More Actions',\n showFirstCheckboxHeader: true,\n showSecondCheckboxHeader: true\n }\n });\n }\n }],\n editorInitCallbacks: [\n ref => {\n if (ref && ref.editor && ref.editor.on) {\n if (element.outcomes) {\n // eslint-disable-next-line no-param-reassign\n ref.editor.nonEditableLength = 1;\n }\n ref.editor.on('mouseup', e => {\n if (e.target && e.target.href && e.target.href.includes('outcome')) {\n // eslint-disable-next-line no-undef\n globalThis?.tinyMCE?.activeEditor?.buttons?.approvalActions?.onclick?.();\n }\n });\n }\n }\n ]\n };\n case element.type === elementTypes.ASSIGN_TASK:\n return {\n editorPopoverButtons: [{\n id: 'approvalActions',\n icon: 'bullist',\n tooltip: 'Show/hide task actions',\n component: editor => {\n const approvalActionsButton = document.getElementById('approvalActions');\n const selectedOutcomes = getOutcomesFromEmailContent({ emailContent: editor.getContent() });\n return outcomeButtonsCheckbox({\n selectedOutcomes: selectedOutcomes,\n outcomes: assignTaskDefinedOutcome,\n targetRef: { current: approvalActionsButton },\n editor: editor,\n multipleCheckboxDefaultProperties: {\n headerText: 'SHOW/HIDE TASK ACTIONS',\n firstCheckboxListText: 'Buttons',\n secondCheckboxListText: null,\n showFirstCheckboxHeader: true,\n showSecondCheckboxHeader: false\n }\n });\n }\n }],\n editorInitCallbacks: [\n ref => {\n if (ref && ref.editor && ref.editor.on) {\n if (element.outcomes) {\n // eslint-disable-next-line no-param-reassign\n ref.editor.nonEditableLength = 1;\n }\n ref.editor.on('mouseup', e => {\n if (e.target && e.target.href && e.target.href.includes('outcome')) {\n // eslint-disable-next-line no-undef\n globalThis?.tinyMCE?.activeEditor?.buttons?.approvalActions?.onclick?.();\n }\n });\n }\n }\n ]\n };\n default:\n return {};\n }\n};\n","import React from 'react';\nimport { renderToStaticMarkup } from 'react-dom/server';\nimport { Button as EmailTemplateBlocksButton } from '@jotforminc/email-template';\nimport { t } from '@jotforminc/translation';\n\nimport { rgbToHex } from '@jotforminc/utils';\nimport { DEFAULT_FEATURES, OUTCOME_BUTTONS } from '../constants/features';\n\n/* eslint-disable no-param-reassign */\nconst fixEmailOutcomes = ({ emailBody, outcomes = [], showMoreActions = false }) => {\n if (outcomes.length === 0 && !showMoreActions) {\n return emailBody;\n }\n\n const wrapperDiv = initializeWrapperDiv(emailBody);\n if (!wrapperDiv.firstChild) {\n return emailBody;\n }\n\n const buttonList = getOutcomeButtonList(wrapperDiv);\n const buttonListParent = buttonList.length === 0 ? wrapperDiv.querySelector('#jmOutcome-container table tr') : getOutcomeButtonParent(buttonList);\n if (!buttonListParent) {\n return emailBody;\n }\n\n removeOutcomeButtonList(buttonList);\n\n // Berkay: @cem if outcome count is 0 it was deleting the buttons and never adds the new ones. Please Check :)\n // Ticket: #3088400\n const outcomesWithLink = outcomes.filter(({ linkID }) => Boolean(linkID));\n initializeOutcomeButtonList({ buttonListParent, outcomes, showMoreActions: showMoreActions || outcomesWithLink.length === 0 });\n return wrapperDiv.innerHTML;\n};\n\nexport const fixApprovalEmailsContent = ({ emailBody, outcomes: elementOutcomes = [] }) => {\n const wrapperDiv = document.createElement('div');\n wrapperDiv.innerHTML = emailBody;\n\n const outcomeElements = getOutcomeButtonList(wrapperDiv);\n const outcomeElementsContext = [...outcomeElements];\n outcomeElementsContext?.forEach(button => {\n const hrefOfButton = button?.href;\n const isMoreActions = hrefOfButton?.includes?.('undefined') || hrefOfButton?.includes?.('moreActions');\n if (isMoreActions) return;\n const textOfButton = (button?.innerText).trim();\n const colorOfButton = rgbToHex(button?.style?.['background-color']);\n const foundOutcome = elementOutcomes.find(outcome => (hrefOfButton.includes(`outcomeID=${outcome?.outcomeID}`)));\n if (!foundOutcome) {\n // Means that user has deleted the outcome of the element (not from email).\n button.remove();\n return;\n }\n if (foundOutcome?.text !== textOfButton) {\n button.textContent = foundOutcome.text;\n }\n if (foundOutcome?.buttonColor !== colorOfButton) {\n button.style.backgroundColor = foundOutcome.buttonColor;\n }\n });\n return wrapperDiv.innerHTML;\n};\n\nconst initializeWrapperDiv = emailBody => {\n const wrapperDiv = document.createElement('div');\n wrapperDiv.innerHTML = emailBody;\n return wrapperDiv;\n};\n\nexport const getOutcomeButtonList = element => element.querySelectorAll('a[href^=\"{approvalDeeplink}\"], a[href^=\"{approvalLink}\"], a[href^=\"{assigneeLink}\"]');\n\nconst getOutcomeButtonParent = outcomeButtonList => outcomeButtonList[0].parentNode;\n\nconst removeOutcomeButtonList = outcomeButtonList => outcomeButtonList.forEach(outcomeButton => outcomeButton.parentNode.removeChild(outcomeButton));\n\nconst initializeOutcomeButtonList = ({ buttonListParent, outcomes = [], showMoreActions = false }) => {\n const outcomesWithLink = outcomes.filter(({ linkID }) => Boolean(linkID));\n const outcomeListToAdd = DEFAULT_FEATURES[OUTCOME_BUTTONS] ? outcomesWithLink : outcomesWithLink.slice(0, 2);\n if (showMoreActions || outcomesWithLink.length > 2) {\n outcomeListToAdd.push({\n type: 'MORE',\n buttonColor: '#fff',\n text: 'More Actions',\n textColor: '#5e74e6'\n });\n }\n\n buttonListParent.innerHTML = buttonListParent.innerHTML.split(/ /).join('');\n outcomeListToAdd.forEach(outcome => {\n const buttonHTML = generateOutcomeButtonHTML(outcome);\n buttonListParent.innerHTML += buttonHTML;\n });\n};\n\nexport const generateOutcomeButtonHTML = ({\n buttonColor, textColor, text, type, outcomeID, action = null\n}) => {\n const buttonText = getButtonText({ text, type });\n const buttonHrefAction = getButtonHrefAction({ type, outcomeID });\n\n return renderToStaticMarkup((\n \n {` ${buttonText} `}\n \n ));\n};\n\nconst getButtonText = ({ type, text }) => {\n switch (true) {\n case type === 'APPROVE' && text === 'Approve':\n return t('Approve');\n case type === 'DENY' && text === 'Deny':\n return t('Deny');\n case type === 'MORE' && text === 'More Actions':\n return t('More Actions');\n default:\n return text;\n }\n};\n\nconst getButtonHrefAction = ({ type, outcomeID }) => {\n switch (type) {\n case type === 'APPROVE':\n return 'approve';\n case type === 'DENY':\n return 'deny';\n case type === 'MORE':\n return 'moreActions';\n default:\n return `outcomeID=${outcomeID}`;\n }\n};\n\nexport default fixEmailOutcomes;\n","export const isPathsIntersect = ([{ x: x1, y: y1 }, { x: x2, y: y2 }], [{ x: x3, y: y3 }, { x: x4, y: y4 }]) => {\n const directionA = (((x4 - x3) * (y1 - y3)) - ((y4 - y3) * (x1 - x3))) / (((y4 - y3) * (x2 - x1)) - ((x4 - x3) * (y2 - y1)));\n const directionB = (((x2 - x1) * (y1 - y3)) - ((y2 - y1) * (x1 - x3))) / (((y4 - y3) * (x2 - x1)) - ((x4 - x3) * (y2 - y1)));\n return directionA >= 0 && directionA <= 1 && directionB >= 0 && directionB <= 1;\n};\n","import { ConditionContainerMiniModule } from '@jotforminc/builder-components';\nimport merge from 'lodash/merge';\nimport upperFirst from 'lodash/upperFirst';\nimport { flatten, unflatten } from 'flat';\nimport DOMPurify from 'dompurify';\n\nimport PROPERTIES_LIST from '../properties';\nimport { getNodeProperties } from '../constants/nodeProperties';\nimport { elementSubTypes, elementTypes } from '../constants/elementTypes';\nimport { DEFAULT_FEATURES, TERMINATE_FLOW } from '../constants/features';\nimport { PARTNER_NAMES } from '../constants/IntegrationDetails';\n\nconst { ConditionUtils } = ConditionContainerMiniModule;\n\nexport const isProduction = () => {\n return process.env.NODE_ENV === 'production' || window.JOTFORM_ENV === 'PRODUCTION';\n};\n\nexport const getPropListToSyncByType = type => {\n const baseProperties = PROPERTIES_LIST[type] ? Object.keys(PROPERTIES_LIST[type].properties) : [];\n const elementProperties = getNodeProperties(type);\n\n if (!Array.isArray(elementProperties)) {\n return elementProperties.fields ? merge(Object.keys(elementProperties.fields), baseProperties) : [];\n }\n\n return elementProperties.reduce((prev, { fields }) => ([\n ...prev,\n ...Object.keys(fields)\n ]), baseProperties);\n};\n\nexport const loadScript = src => {\n return new Promise((resolve, reject) => {\n const head = global.document.querySelector('head');\n const script = global.document.createElement('script');\n script.src = src;\n script.onload = resolve;\n // https://github.com/getsentry/sentry-javascript/issues/2546#issuecomment-703331367\n script.onerror = event => {\n console.error(event);\n reject(new Error(`Failed to load ${event.target.src}`));\n };\n head.appendChild(script);\n });\n};\n\nexport const typeHasToolboxAction = (type, actionType) => {\n switch (actionType) {\n case 'editForm':\n case 'viewForm':\n case 'changeForm':\n return type === elementTypes.START_POINT;\n case 'delete':\n return type !== elementTypes.START_POINT;\n case 'duplicate':\n return [elementTypes.PLACEHOLDER, elementTypes.START_POINT].indexOf(type) === -1;\n case 'settings':\n return [\n elementTypes.BINARY_DECISION,\n elementTypes.APPROVAL,\n elementTypes.ASSIGN_TASK,\n elementTypes.CONDITIONAL_BRANCH,\n elementTypes.MERGE,\n elementTypes.SPLIT,\n elementTypes.ASSIGN,\n ...(DEFAULT_FEATURES[TERMINATE_FLOW] ? [elementTypes.END_POINT, elementSubTypes.END_POINT_PSEUDO, elementSubTypes.END_POINT_TERMINATE] : []),\n elementSubTypes.APPROVAL_WITH_SIGN,\n elementSubTypes.SEND_APPROVAL_REPORT,\n elementSubTypes.TEAM_APPROVAL,\n elementSubTypes.SEND_PDF,\n elementTypes.ASSIGN_FORM,\n elementSubTypes.SEND_DEFAULT_REPORT,\n elementTypes.SIGN_DOCUMENT,\n elementTypes.INTEGRATION,\n elementSubTypes.PAYMENT_FORM,\n ...Object.values(PARTNER_NAMES)\n ].indexOf(type) > -1;\n case 'emailSettings':\n return type === elementTypes.SEND_EMAIL;\n default:\n return true;\n }\n};\n\nexport const isYes = val => ((typeof val === 'string') ? val === 'Yes' : !!val);\n\nexport const isMoreThanOne = val => val?.length > 1;\n\nexport const addPrefixToObjectKeys = (obj, prefix) => Object.entries(obj).reduce((prev, [key, value]) => ({ ...prev, [`${prefix}${upperFirst(key)}`]: value }), {});\n\nexport const flattenProperties = properties => {\n const delimiter = '__';\n const propsToFlatten = ['reassign', 'approvalEmail', 'assignTaskEmail', 'comment', 'escalation', 'expiration', 'reminder', 'autoFinish', 'assignEmail', 'checklist'];\n\n const shouldFlatten = Object.keys(properties).some(key => propsToFlatten.includes(key));\n return shouldFlatten ? flatten(properties, { safe: true, delimiter }) : properties; // safe: for not flattening arrays.\n};\n\nexport const handleFlattenedProperties = originalProperties => {\n if (!originalProperties) {\n return {};\n }\n\n const delimiter = '__';\n // Determine flattened props\n const flattenedProperties = Object.entries(originalProperties).reduce((prev, [key, value]) => {\n return key.includes(delimiter) ? { ...prev, [key]: value } : { ...prev };\n }, {});\n\n // Construct unflatted props according to flattened versions\n const unflattenedProperties = unflatten(flattenedProperties, { safe: true, delimiter });\n\n // Combine them and remove flattened props\n return Object.entries({ ...originalProperties, ...unflattenedProperties }).reduce((prev, [key, value]) => {\n return Object.keys(flattenedProperties).includes(key) ? prev : { ...prev, [key]: value };\n }, {});\n};\n\nexport const normalizeTimespan = (_updatedAt = new Date(), userTimeZone = null) => { // TODO: commonize this\n let updatedAt = _updatedAt;\n if (updatedAt && typeof updatedAt.replace === 'function') {\n updatedAt = new Date(`${updatedAt.replace(/-/g, '/')} GMT-0400`).getTime();\n }\n let editDateTimeZone = updatedAt;\n if (userTimeZone !== undefined && userTimeZone !== null) {\n try {\n editDateTimeZone = new Date(updatedAt).toLocaleString('en-US', { timeZone: userTimeZone });\n } catch (e) {\n editDateTimeZone = new Date(updatedAt);\n }\n }\n return new Date(editDateTimeZone);\n};\n\nexport const isInputTarget = event => {\n const inputTargets = ['INPUT', 'SPAN'];\n const nodeName = event?.event ? event?.event?.target?.nodeName : event?.target?.nodeName;\n return inputTargets.includes(nodeName);\n};\n\nexport const sanitizeTextBeforeSet = (data, settings = {}) => {\n return DOMPurify.sanitize(data, settings);\n};\n\nexport const isElementsSuitableForEnableFlow = allNodes => {\n const notSuitableElementList = [elementTypes.PLACEHOLDER, elementTypes.END_POINT];\n // except state\n if (allNodes.length === 2 && allNodes.some(e => e.type === elementTypes.END_POINT) && allNodes.some(e => e.type === elementTypes.START_POINT)) {\n return true;\n }\n const elementTypeArray = [];\n allNodes.forEach(node => {\n if (node.type !== elementTypes.START_POINT) {\n elementTypeArray.push(node.type);\n }\n });\n const differentTypes = elementTypeArray.filter(x => !notSuitableElementList.includes(x));\n if (differentTypes.length === 0) {\n return false;\n }\n return true;\n};\n\nexport const prefixQuestionForAssignForm = prefix => question => ({\n ...question,\n qid: `${question.qid}_${prefix}`,\n name: `${prefix}_${question.name}`\n});\n\nexport const isElementUsingMultiPDFDropdown = (type, subType) => {\n switch (true) {\n case type && type === elementTypes.SEND_EMAIL:\n case subType && subType === elementSubTypes.SEND_PDF:\n case subType && subType === elementSubTypes.SEND_DEFAULT_REPORT:\n return true;\n default:\n return false;\n }\n};\n\nexport const showFPSCounter = () => {\n let fpsCounter = document.getElementById('workflow-fps-counter');\n if (window.isFpsCounterRunning || !window.isAdmin) return;\n\n if (!fpsCounter) {\n const fpsCounterDiv = document.createElement('div');\n fpsCounterDiv.id = 'workflow-fps-counter';\n fpsCounterDiv.style = `\n box-shadow: 0 0 12px rgba(0, 0, 0, .5);\n font-size: 16px;\n display: inline-block;\n position: fixed;\n z-index: 9999;\n top: 0;\n left: 50%;\n transform: translateX(-50%);\n padding: 12px 24px;\n border-radius: 0 0 6px 6px;\n background-color: #fff;\n `;\n fpsCounterDiv.innerHTML = '⌛';\n document.body.append(fpsCounterDiv);\n\n fpsCounter = fpsCounterDiv;\n }\n\n let startTime = Date.now();\n let frame = 0;\n let fps = 0;\n\n function calculateFPS() {\n const time = Date.now();\n frame++;\n\n if (time - startTime > 1000) {\n fps = (frame / ((time - startTime) / 1000)).toFixed(1);\n\n if (fps < 30) {\n fpsCounter.style.backgroundColor = 'yellow';\n\n if (fps < 15) {\n fpsCounter.style.backgroundColor = 'red';\n fpsCounter.style.color = '#fff';\n }\n } else {\n fpsCounter.style.backgroundColor = '#fff';\n fpsCounter.style.color = null;\n }\n\n fpsCounter.innerHTML = `${fps} FPS`;\n startTime = time;\n frame = 0;\n }\n\n window.requestAnimationFrame(calculateFPS);\n }\n\n window.isFpsCounterRunning = true;\n calculateFPS();\n};\n\nglobal.showFPSCounter = showFPSCounter;\n\nexport const modalSaveButtonIsEnable = (type, subType) => {\n const acceptableTypes = ['workflow_sign_document'];\n if ((type && acceptableTypes?.includes(type)) || (subType && acceptableTypes?.includes(subType))) {\n return true;\n }\n return false;\n};\n\nexport const isFormFields = value => {\n const FORM_FIELDS_REGEX = /{(.*?)}/;\n if (!value) {\n return false;\n }\n return Boolean(value.match(FORM_FIELDS_REGEX));\n};\n\nexport const isPasswordEnabledElement = (type, subType) => {\n switch (true) {\n case type && subType && type === elementTypes.SEND_EMAIL && subType === elementSubTypes.SEND_DEFAULT_REPORT:\n return true;\n case type && subType && type === elementTypes.SEND_EMAIL && subType === elementSubTypes.SEND_PDF:\n return true;\n default:\n return false;\n }\n};\n\nexport const isIntegrationElement = type => PARTNER_NAMES?.[type] || false;\n\nexport const checkObjectHasProperty = (object, properties) => properties.find(property => Object.hasOwn(object, property));\n\nexport const addDisabledProp = q => ({ ...q, disabled: q.protected === 'Yes' });\nexport const fixQuestionsProp = q => {\n return ({ ...q, disabled: q.protected === 'Yes', text: ConditionUtils.getQuestionText(q) });\n};\n\nexport const fixQuestionsPropsForForms = (id, questions) => {\n // for assign and internal forms. don't use it for start point\n const prefixWithFormID = prefixQuestionForAssignForm(`f${id}`);\n return questions.reduce((result, question) => {\n const prefixedQuestion = prefixWithFormID({ ...question, ...(question?.workflow_outcomes ? { name: 'outcomeText' } : {}) });\n return [\n ...result,\n {\n ...prefixedQuestion,\n disabled: prefixedQuestion.protected === 'Yes',\n text: ConditionUtils.getQuestionText(prefixedQuestion)\n }\n ];\n }, []);\n};\n","export const LocalStorageKeys = {\n _TESTER: 'workflow_localStorageExists',\n DELETE_ACTION_COUNTER: 'workflow_deleteActionCounter',\n SKIP_DELETE_CONFIRMATION_MODALS: 'workflow_skipDeleteConfirmationModals',\n CLICKED_ERROR_PANEL: 'workflow_clickedToErrorPanel', // should be in persistent storage later,\n USERFLOW_FATAL_ERROR: 'workflow_userflow_fatalerror',\n POPUP_FEEDBACK_FORM: 'workflow_popup_feedback'\n};\n","export const distSquare = (point1, point2) => {\n const diffX = point1.x - point2.x;\n const diffY = point1.y - point2.y;\n return diffX ** 2 + diffY ** 2;\n};\n\nconst findClosestPoint = (pointList, destinationPoint) => {\n return pointList.reduce((prevInfo, currentPoint, index) => {\n const { currentShortestDistance } = prevInfo;\n const shortestDistance = distSquare(currentPoint, destinationPoint);\n return shortestDistance < currentShortestDistance ? { closestPoint: currentPoint, currentShortestDistance: shortestDistance, index } : prevInfo;\n }, { closestPoint: false, currentShortestDistance: Infinity, index: -1 });\n};\n\nexport default findClosestPoint;\n","import Ajv from 'ajv';\n\nimport PROPERTIES_LIST from '../properties';\n\nconst PropertyValidator = new Ajv({ allErrors: true });\nObject.entries(PROPERTIES_LIST).forEach(([key, schema]) => {\n try {\n PropertyValidator.addSchema(schema, key);\n } catch (error) {\n console.group('ADD SCHEMA ERROR');\n console.log(`Schema add failed for ${key} with following schema`);\n console.log({ schema });\n console.groupEnd();\n }\n});\n\nexport default PropertyValidator;\n","export const sendTrackData = (actor, action, target) => {\n if (!window.JotFormActions || window.JOTFORM_ENV !== 'PRODUCTION') {\n if (window.JOTFORM_ENV === 'PRODUCTION' && !window.isTemplateMode) {\n console.warn('JotForm Actions is missing', { actor, action, target });\n }\n return;\n }\n if (!window.jotWorkflowEvents) {\n window.jotWorkflowEvents = window.JotFormActions('workflow');\n }\n window.jotWorkflowEvents.tick({ actor, action, target });\n};\n","import { useCallback } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { getV2Nodes } from '../store/selectors';\nimport * as ActionTypes from '../store/actionTypes';\nimport { updateMultipleWorkflowElement } from '../sagas/workflowNew';\n\nconst useNodes = () => {\n const nodes = useSelector(getV2Nodes);\n const dispatch = useDispatch();\n const nodesHashMap = (nodes || []).reduce((result, current) => ({ ...result, [current.id]: current }), {});\n\n const getNode = useCallback(id => nodesHashMap[id], [nodesHashMap]);\n\n const selectedNodesIDList = (nodes || []).filter(node => node.selected).map(val => val.id);\n\n const getAllParentElementIDs = id => getNode(id)?.data?.predecessors;\n\n const updatePosition = useCallback((id, position) => {\n dispatch(updateMultipleWorkflowElement([{\n elementID: id, position, x: position.x, y: position.y\n }]));\n }, []);\n\n const onNodeSelectionCleanUp = useCallback(() => {\n dispatch({ type: ActionTypes.CLEAR_SELECTION });\n }, []);\n\n const updateNodeHighlight = f => f;\n\n return {\n nodes,\n nodesHashMap,\n getAllParentElementIDs,\n updatePosition,\n updateNodeHighlight,\n onNodeSelectionCleanUp,\n getNode,\n selectedNodesIDList\n };\n};\n\nexport default useNodes;\n","import { useDispatch, useSelector } from 'react-redux';\nimport { useCallback } from 'react';\nimport { useNodes } from '@xyflow/react';\nimport { getEdges } from '../store/selectors';\nimport * as ActionTypes from '../store/actionTypes';\nimport { reversedLinkAdapter } from '../modules/Editor/adapter';\nimport { updateLink, updateMultipleElement } from '../actionCreators';\nimport { getHandleBounds } from '../modules/Canvas/V2/Edge/utils';\nimport { linkAccesor } from '../sagas/workflowNew/temporaryCanvasBuilderAdapter';\nimport { findEdgeId } from './utils';\nimport { elementTypes } from '../constants/elementTypes';\n\nconst useEdges = () => {\n const edges = useSelector(getEdges);\n const nodes = useNodes();\n const dispatch = useDispatch();\n\n const selectedEdge = edges.find(edge => edge?.selected);\n\n const handleTempEdge = useCallback(closeEdge => {\n const tempEdge = edges.find(edge => edge?.tempEdge);\n if (closeEdge) {\n if (tempEdge) {\n // if temp edge exist update temp edge without request\n dispatch({ type: ActionTypes.UPDATE_LINKS_WITHOUT_REQUEST, data: { ...tempEdge, ...closeEdge, id: tempEdge.id } });\n }\n // if temp edge not exist add edge without request\n dispatch({ type: ActionTypes.ADD_LINK_WITHOUT_REQUEST, data: { ...closeEdge, tempEdge: true } });\n } else if (tempEdge) {\n dispatch({ type: ActionTypes.REMOVE_LINK_WITHOUT_REQUEST, data: { id: tempEdge?.id } });\n }\n }, [edges]);\n\n const cleanTempEdge = useCallback(tempEdge => {\n dispatch({ type: ActionTypes.UPDATE_LINKS_WITHOUT_REQUEST, data: { id: tempEdge?.id, cleanTempEdge: true } });\n });\n\n const addEdge = useCallback(connection => {\n const updatedEdge = {\n ...connection,\n id: findEdgeId(),\n type: 'customEdge',\n data: { source: connection.source },\n markerEnd: { type: 'customarrow' },\n updatable: 'source'\n };\n const link = { action: 'create', linkID: updatedEdge.id, data: { ...reversedLinkAdapter(updatedEdge) } };\n dispatch(updateMultipleElement({ links: [link] }));\n }, []);\n\n const getClosestEdge = useCallback((node, reactFlowElement) => {\n const MIN_DISTANCE = 450;\n // MIN_PROXIMITY_DISTANCE + ((dx > 200 || dx < -130) && (dy < 100 || dy > -100) ? 90 : 0\n const closestNode = nodes.reduce(\n (res, n) => {\n if (n.id !== node.id) {\n const dx = n.position.x + (n.measured.width / 2) - node.position.x - (node.measured.width / 2);\n const dy = n.position.y + (n.measured.height / 2) - node.position.y - (node.measured.height / 2);\n const d = Math.sqrt(dx * dx + dy * dy);\n\n if (\n d < res.distance && d < MIN_DISTANCE) {\n res.distance = d;\n res.node = n;\n }\n }\n\n return res;\n },\n {\n distance: Number.MAX_VALUE,\n node: null\n }\n );\n\n if (!closestNode.node) {\n return null;\n }\n\n const nodeToFind = nodes.find(n => n.id === node.id);\n\n const targetElement = reactFlowElement.querySelector(`.react-flow__node[data-id=\"${node.id}\"]`);\n const sourceElement = reactFlowElement.querySelector(`.react-flow__node[data-id=\"${closestNode.node.id}\"]`);\n\n const targetHandleBounds = getHandleBounds('.source, .target', targetElement, 1);\n const sourceHandleBounds = getHandleBounds('.source', sourceElement, 1);\n\n const allHandleDistances = targetHandleBounds.reduce((closest, targetHandle) => {\n let closestHandle = {};\n sourceHandleBounds.forEach(sourceBound => {\n closestHandle = {\n ...closestHandle,\n [Math.abs(\n Math.sqrt(\n Math.pow(\n closestNode.node?.position.x\n + sourceBound.x\n - (nodeToFind?.position.x + targetHandle.x),\n 2\n )\n + Math.pow(\n closestNode.node?.position.y\n + sourceBound.y\n - (nodeToFind?.position.y + targetHandle.y),\n 2\n )\n )\n ).toString()]: [sourceBound.id, targetHandle.id]\n };\n });\n\n return { ...closest, ...closestHandle };\n }, {});\n const keys = [...Object.keys(allHandleDistances)];\n keys.sort((a, b) => a.localeCompare(b, undefined, { numeric: true }));\n\n /*\n targetHandle: closeNodeIsSource ? allHandleDistances[keys[0]][1] : allHandleDistances[keys[0]][0],\n sourceHandle: closeNodeIsSource ? allHandleDistances[keys[0]][0] : allHandleDistances[keys[0]][1]\n */\n\n const notAllowedSourceElements = [elementTypes.END_POINT];\n const notAllowedTargetElements = [elementTypes.START_POINT];\n const closeEdgeSourceType = closestNode?.node?.data?.type;\n const closeEdgeTargetType = node?.data?.type;\n if (notAllowedSourceElements.includes(closeEdgeSourceType) || notAllowedTargetElements.includes(closeEdgeTargetType)) {\n return;\n }\n const isPossibleEdgeAlreadyExists = edges.find(edge => {\n const { source, target } = edge;\n if (source === closestNode.node.id && target === node.id) {\n return true;\n }\n if (source === node.id && target === closestNode.node.id) {\n return true;\n }\n return false;\n });\n\n if (isPossibleEdgeAlreadyExists) {\n return;\n }\n return {\n id: `${findEdgeId(edges)}`,\n source: closestNode.node.id,\n target: node.id,\n sourceHandle: allHandleDistances[keys[0]][0],\n targetHandle: allHandleDistances[keys[0]][1],\n data: { source: closestNode.node.id }\n };\n }, [edges, nodes]);\n\n const changeEdge = useCallback((oldEdge, newConnection) => {\n const updatedEdge = { ...oldEdge, ...newConnection };\n dispatch(updateLink({ link: linkAccesor(reversedLinkAdapter(updatedEdge)) }));\n }, []);\n\n const handleEdgeSelect = useCallback(edge => {\n dispatch({ type: ActionTypes.EDGE_SELECTION, data: { id: edge.id } });\n }, []);\n\n const clearLinkSelection = useCallback(() => {\n dispatch({ type: ActionTypes.EDGE_SELECTION, data: { id: null } });\n }, []);\n\n return {\n edges,\n selectedEdge,\n addEdge,\n getClosestEdge,\n handleTempEdge,\n cleanTempEdge,\n changeEdge,\n handleEdgeSelect,\n clearLinkSelection\n };\n};\n\nexport default useEdges;\n","import { useCallback } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport * as ActionTypes from '../store/actionTypes';\nimport {\n getWorkflowTitle, isActiveFeature, getPanMode, getIsKeyboardShortcutsAvailable,\n getEdgeType,\n getErrorPanelOpen\n} from '../store/selectors';\nimport { CANVAS_AUTO_CONNECT } from '../constants/features';\nimport { updateWorkflow } from '../actionCreators';\n\nconst useSettings = () => {\n const dispatch = useDispatch();\n const isProximityActive = useSelector(isActiveFeature(CANVAS_AUTO_CONNECT));\n const workflowTitle = useSelector(getWorkflowTitle);\n const panMode = useSelector(getPanMode);\n const edgeType = useSelector(getEdgeType);\n const isErrorPanelOpen = useSelector(getErrorPanelOpen);\n const isKeyboardShortcutsAvailable = useSelector(getIsKeyboardShortcutsAvailable);\n\n const handlePanModeChange = useCallback(() => {\n dispatch({ type: ActionTypes.PAN_MODE_SWITCH });\n }, []);\n\n const handleChangeEdgeType = useCallback(newEdgeType => {\n dispatch(updateWorkflow({ edgeType: newEdgeType }));\n }, []);\n\n return {\n panMode,\n isKeyboardShortcutsAvailable,\n handlePanModeChange,\n isProximityActive,\n workflowTitle,\n edgeType,\n isErrorPanelOpen,\n handleChangeEdgeType\n };\n};\n\nexport default useSettings;\n","import { useSelector } from 'react-redux';\nimport {\n getAllRelatedFormQuestionsPrefixed,\n getEmailQuestions, getFirstEmailQuestion,\n getFirstFullNameQuestion, getForm, getFormSubmissionCount, getFormTitle, getFormType,\n getLastQuestionID, getProducts, getQuestionPlaceholders, getQuestions, getSelectedFormTitle\n} from '../store/selectors';\n\nconst useForm = () => {\n const form = useSelector(getForm);\n const formType = useSelector(getFormType);\n const formTitle = useSelector(getFormTitle);\n const products = useSelector(getProducts);\n const questions = useSelector(getQuestions);\n const formSubmissionCount = useSelector(getFormSubmissionCount);\n const emailQuestions = useSelector(getEmailQuestions);\n const firstEmailQuestion = useSelector(getFirstEmailQuestion);\n\n const getQuestionByType = questionType => useSelector(getQuestionByType(questionType));\n const firstFullNameQuestion = useSelector(getFirstFullNameQuestion);\n const questionPlaceHolders = useSelector(getQuestionPlaceholders);\n const lastQuestionID = useSelector(getLastQuestionID);\n const prefixedFormQuestions = useSelector(getAllRelatedFormQuestionsPrefixed);\n const selectedFormTitle = id => useSelector(getSelectedFormTitle(id));\n\n return {\n form,\n formType,\n formTitle,\n products,\n questions,\n formSubmissionCount,\n emailQuestions,\n firstEmailQuestion,\n getQuestionByType,\n firstFullNameQuestion,\n questionPlaceHolders,\n lastQuestionID,\n prefixedFormQuestions,\n selectedFormTitle\n };\n};\n\nexport default useForm;\n","import store from '../store';\n\nexport const findEdgeId = newCanvasEdges => {\n const { getState } = store;\n const { workflow: { newCanvasEdges: edges = [] } } = getState();\n if (!edges.length) return 1;\n const filteredEdges = (newCanvasEdges || edges).filter(edge => !edge?.tempEdge);\n const edgeID = parseInt(filteredEdges[filteredEdges.length - 1].id, 10) + 1;\n return edgeID;\n};\n\nexport const getNode = id => {\n const { getState } = store;\n const { workflow: { newCanvasNodes: nodes = [] } } = getState();\n return nodes.find(node => node.id === id);\n};\n\nexport const findNodeId = () => {\n const { getState } = store;\n const { workflow: { newCanvasNodes: nodes = [] } } = getState();\n if (!nodes.length) return 1;\n const map = nodes.reduce((prev, node) => ({ ...prev, [+node.id]: node }), {});\n const newID = parseInt(nodes[nodes.length - 1].id, 10) + 1;\n const limit = 65534;\n if (newID < limit) {\n return newID;\n }\n for (let index = 1; index < limit; index++) {\n if (!map[index]) {\n return index;\n }\n }\n throw new Error('Please contact us, you are crazy!');\n};\n","import layer from './layer';\n\nexport const isJotformer = user => ['ADMIN', 'SUPPORT', 'INTERN'].indexOf(user?.account_type?.name) > -1;\n\nexport const isMobileApp = () => window.navigator.userAgent.indexOf('JotForm Mobile') > -1 || window.navigator.userAgent.indexOf('JFCEMobile') > -1;\n\nexport const isEnvProd = () => window.__jfrouter?.JOTFORM_ENV === 'PRODUCTION' || window.JOTFORM_ENV === 'PRODUCTION';\n\nexport const getTestStartDate = ({ testName }) => layer.get(`abtest/test/${testName}/start-date`);\n","class ABTestVariantCacheClass {}\n\nexport const ABTestVariantCache = new ABTestVariantCacheClass();\n","import { RequestLayer, Interceptors } from '@jotforminc/request-layer';\n\nexport default new RequestLayer('/API', {\n interceptorConfig: {\n teamID: global.teamID,\n customResponseInterceptors: [Interceptors.requestManagerResponseNormalizer]\n }\n});\n","import { isSalesforceEnv } from '@jotforminc/utils';\nimport { StorageHelper } from '@jotforminc/storage-helper';\nimport { isEnvProd, isJotformer, isMobileApp } from './utils';\nimport { ActionManager } from './ActionManager';\nimport { ABTestVariantCache } from './ABTestVariantCache';\nimport layer from './layer';\n\nexport class ABTestManager {\n constructor({\n user,\n testName,\n urlParam,\n debugMode,\n isTestEnabled,\n testVariantCode,\n controlVariantCode,\n cacheVariantCodeAtLocalStorage,\n customUserChecks,\n setUserSetting,\n forceSingleEpTest\n }) {\n this.user = user || {};\n this.testName = testName;\n this.urlParam = urlParam || '';\n this.isTestEnabled = isTestEnabled || false;\n this.customUserChecks = customUserChecks || {};\n this.cacheVariantCodeAtLocalStorage = cacheVariantCodeAtLocalStorage || false;\n this.isSingleTestVariant = (typeof testVariantCode === 'string') && testVariantCode;\n this.isMultipleTestVariant = (typeof testVariantCode === 'object') && Array.isArray(testVariantCode);\n this.setUserSetting = setUserSetting || null;\n this.forceSingleEpTest = forceSingleEpTest || null;\n this.testConfig = {\n testName, controlVariantCode, testVariantCode, urlParam\n };\n\n this.searchParams = new URLSearchParams(document?.location?.search || '');\n this.localStorageVariantKey = `${this.testName}VariantCode`;\n\n // debug mode\n const debugModeDefaults = {\n forceUserEligible: false, forceTestVariant: false, forceControlVariant: false, logTestState: false\n };\n this.debugMode = { ...debugModeDefaults, ...debugMode };\n if (this.isDebugModeOn) {\n this.showDebugModeWarnings();\n }\n\n // jotform actions\n this.actionManager = new ActionManager({\n user: this.user,\n projectName: this.testName,\n ...(this.isDebugModeOn ? { enableDebugMode: true } : {})\n });\n\n // should register actions\n const shouldRegisterActions = (this.isTestEnabled && this.isUserEligible)\n || this.isDebugModeOn\n || this.hasTestVariantUrlParam\n || this.hasControlVariantUrlParam\n || this.hasTestVariantUrlParamAmongMultiple();\n\n // register ab test action\n this.registerABTestAction = shouldRegisterActions ? this.actionManager.registerJotformAction : f => f;\n }\n\n // is variant code singleton cached\n get isVariantCodeSingletonCached() {\n return !!this.getVariantFromSingletonCache() || false;\n }\n\n // is variant code local storage cached\n get isVariantCodeLocalStorageCached() {\n return !!this.getVariantFromLocalStorage() || false;\n }\n\n // are base checks valid\n get areBaseChecksValid() {\n return isEnvProd() && !isJotformer(this.user) && !isMobileApp() && !isSalesforceEnv();\n }\n\n // are custom user checks valid\n get areCustomUserChecksValid() {\n return Object.values(this.customUserChecks).length > 0\n ? Object.values(this.customUserChecks).every(customCheck => customCheck)\n : true;\n }\n\n // is user eligible\n get isUserEligible() {\n const { forceUserEligible } = this.debugMode;\n if (forceUserEligible) return true;\n const isValid = this.areBaseChecksValid && this.areCustomUserChecksValid;\n if (isValid) {\n return true;\n }\n if (!isValid && this.isDebugModeOn) {\n console.warn(`Warning: ${this.testName} A/B test user is not eligible.`);\n }\n return false;\n }\n\n // has test variant url param\n get hasTestVariantUrlParam() {\n return this.searchParams.get(`${this.urlParam}`) === 'true';\n }\n\n // has control variant url param\n get hasControlVariantUrlParam() {\n return this.searchParams.get(`${this.urlParam}`) === 'false';\n }\n\n get cachedVariantCode() {\n return this.getVariantFromSingletonCache() || this.getVariantFromLocalStorage();\n }\n\n // get/set variant cache\n getVariantFromSingletonCache() {\n return ABTestVariantCache[this.testName] || '';\n }\n\n setVariantToSingletonCache(variation) {\n if (!this.getVariantFromSingletonCache()) {\n ABTestVariantCache[this.testName] = variation;\n }\n if (this.isDebugModeOn) {\n console.warn(`Warning: ${this.testName} A/B test singleton cached variation code: ${variation}`);\n }\n }\n\n // get/set variant local storage\n getVariantFromLocalStorage() {\n return StorageHelper.getLocalStorageItem({ key: this.localStorageVariantKey }) || '';\n }\n\n setVariantToLocalStorage(variation) {\n if (this.getVariantFromLocalStorage()) return;\n StorageHelper.setLocalStorageItem({\n key: this.localStorageVariantKey, value: variation\n });\n if (this.isDebugModeOn) {\n console.warn(`Warning: ${this.testName} A/B test localStorage cached variation code: ${variation}`);\n }\n }\n\n // check current variant matches any of the multiple variants\n includesAnyTestVariant(currentVariant, multipleVariants) {\n return multipleVariants.map(variant => variant.code).includes(currentVariant);\n }\n\n // is variant code equal to test variant\n get isVariantCodeEqualTestVariant() {\n const { testVariantCode } = this.testConfig;\n if (this.isSingleTestVariant) {\n return this.cachedVariantCode === testVariantCode;\n }\n if (this.isMultipleTestVariant) {\n return this.includesAnyTestVariant(this.cachedVariantCode, testVariantCode);\n }\n return false;\n }\n\n // variant resolver\n variantResolver(cb) {\n if (typeof cb !== 'function') return;\n if (this.isSingleTestVariant && this.isVariantCodeEqualTestVariant) {\n cb(true);\n } else if (this.isMultipleTestVariant) {\n const isTestVariant = this.isVariantCodeEqualTestVariant;\n cb([isTestVariant, this.cachedVariantCode]);\n } else {\n cb(false);\n }\n }\n\n // get test variant\n getTestVariant() {\n return new Promise((resolve, reject) => {\n const params = { setUserSetting: this.setUserSetting, forceSingleEpTest: this.forceSingleEpTest };\n layer.get(`user/abtest/${this.testName}/variation`, { params }).then(res => {\n let { variation } = res;\n variation = variation ? variation.toString() : variation;\n resolve(variation);\n if (this.isDebugModeOn) {\n console.warn(`Warning: ${this.testName} A/B test variant request success.`);\n }\n }).catch(reject);\n });\n }\n\n hasTestVariantUrlParamAmongMultiple() {\n if (!this.isMultipleTestVariant) return false;\n const { testVariantCode: multipleVariants } = this.testConfig;\n let result = false;\n multipleVariants.forEach(variant => {\n if (this.searchParams.get(`${variant.urlParam}`) === 'true') {\n result = [true, variant.code];\n }\n });\n return result;\n }\n\n // is test variant\n isTestVariant() {\n return new Promise((resolve, reject) => {\n const { forceTestVariant, forceControlVariant } = this.debugMode;\n\n // checks for enabling\n if (this.isSingleTestVariant && (forceTestVariant || this.hasTestVariantUrlParam)) {\n resolve(true);\n return;\n }\n\n // checks for multiple variant enabling\n const multipleEnablerResult = this.hasTestVariantUrlParamAmongMultiple();\n if (this.isMultipleTestVariant && multipleEnablerResult) {\n resolve(multipleEnablerResult);\n return;\n }\n\n // check for settings cache\n // feature: do not allow user settings variant code for multiple variants for now...\n if (!this.isMultipleTestVariant && this.setUserSetting && this.user[this.testName]) {\n const { testVariantCode } = this.testConfig;\n resolve(this.user[this.testName] === testVariantCode);\n return;\n }\n\n // checks for disabling\n if ((!this.isTestEnabled\n || forceControlVariant\n || this.hasControlVariantUrlParam\n || !this.isUserEligible)) {\n const { controlVariantCode } = this.testConfig;\n const result = this.isSingleTestVariant ? false : [false, controlVariantCode];\n resolve(result);\n return;\n }\n\n // is variant code singleton cached or local storage cached\n if (this.isVariantCodeSingletonCached || this.isVariantCodeLocalStorageCached) {\n this.variantResolver(result => resolve(result));\n return;\n }\n\n // get variant code from api\n this.getTestVariant().then(variation => {\n // between component mount and unmount ABTestHelper instance is created from scratch\n // so caching can be useful to prevent repeating network requests\n\n // cache level 1: singleton cache\n this.setVariantToSingletonCache(variation);\n\n // optional cache level 2: local storage cache\n if (variation && this.cacheVariantCodeAtLocalStorage) {\n this.setVariantToLocalStorage(variation);\n }\n\n if (this.isDebugModeOn) {\n this.showDebugModeWarnings();\n }\n\n this.variantResolver(result => resolve(result));\n }).catch(reject);\n });\n }\n\n // is debug mode on\n get isDebugModeOn() {\n return Object.values(this.debugMode).includes(true);\n }\n\n // show debugMode warnings\n showDebugModeWarnings() {\n const {\n forceUserEligible, forceTestVariant, forceControlVariant, logTestState\n } = this.debugMode;\n const forceFlags = [forceUserEligible, forceTestVariant, forceControlVariant, logTestState];\n\n if (forceFlags.includes(true)) {\n console.warn(`Warning: ${this.testName} A/B test is running on debug mode!`);\n\n // log debug mode flags\n Object.keys(this.debugMode).forEach(forceFlagKey => {\n if (!this.debugMode[forceFlagKey]) return;\n console.warn(`${forceFlagKey} property is ${this.debugMode[forceFlagKey]}`);\n });\n\n const warnData = {\n isTestEnabled: this.isTestEnabled,\n testConfig: this.testConfig,\n variantCaches: {\n singletonCachedVariantCode: this.getVariantFromSingletonCache(),\n localStorageCachedVariantCode: this.getVariantFromLocalStorage()\n },\n baseChecks: {\n isJotFormer: isJotformer(this.user),\n isEnvProd: isEnvProd(),\n isMobileApp: isMobileApp()\n },\n customUserChecks: this.customUserChecks\n };\n\n console.warn(`Warning: ${this.testName} test state:`, warnData);\n }\n }\n}\n","export class ActionManager {\n constructor({\n user,\n projectName,\n trackOnce,\n enableDebugMode\n }) {\n this.user = user || {};\n this.projectName = projectName;\n this.trackOnce = trackOnce || false;\n this.JotFormActions = null;\n this.registerJotformAction = this.registerJotformAction.bind(this);\n this.sentEvents = {};\n this.enableDebugMode = enableDebugMode || false;\n }\n\n setupJotFormActions() {\n const { JotFormActions } = global;\n if (typeof JotFormActions !== 'function') return;\n this.JotFormActions = JotFormActions(this.projectName);\n }\n\n tick({\n actor = '', action = '', target = '', trackOnce = false\n } = {}) {\n this.JotFormActions?.tick({ actor, action, target });\n\n if (this.trackOnce || trackOnce) {\n this.sentEvents[`${action}${target}`] = true;\n }\n }\n\n logDebugAction({\n actor, action, target, trackOnce\n }) {\n console.log({\n actor, action, target, trackOnce\n });\n const hasMissingParameter = [actor, action, target].some(param => !param);\n if (hasMissingParameter) {\n console.error(`[missing-actor]: Couldn't tick action. 'actor', 'action', 'target' parameters are needed. project: ${this.projectName} actor: ${actor} action: ${action} target: ${target}`);\n }\n\n if (this.trackOnce || trackOnce) {\n this.sentEvents[`${action}${target}`] = true;\n }\n }\n\n registerJotformAction({ action, target, trackOnce = false }) {\n if (!this.JotFormActions) {\n this.setupJotFormActions();\n }\n\n if ((this.trackOnce || trackOnce) && this.sentEvents[`${action}${target}`]) {\n return;\n }\n\n const { username: actor = null, account_type: accountType } = this.user;\n const isEnterprise = global.JOTFORM_ENV === 'ENTERPRISE';\n const isEnvProd = global.JOTFORM_ENV === 'PRODUCTION' && !isEnterprise;\n const isJotFormer = ['ADMIN', 'SUPPORT', 'INTERN'].indexOf(accountType?.name) > -1 && !isEnterprise;\n\n if (this.enableDebugMode) {\n this.logDebugAction({\n actor, action, target, trackOnce\n });\n return;\n }\n\n if (!actor) {\n // eslint-disable-next-line max-len\n console.warn(`[missing-actor]: Couldn't tick action. 'ActionManager' constructor needs 'user' parameter with 'username' field. Please check 'user' parameter. project: ${this.projectName} actor: ${actor} action: ${action} target: ${target}`);\n }\n\n if (!this.JotFormActions || !actor || !isEnvProd || isJotFormer) return;\n\n this.tick({\n actor, action, target, trackOnce\n });\n }\n}\n","import React from 'react';\nimport { AlertLabelTypes } from '@jotforminc/constants';\nimport { t } from '@jotforminc/translation';\nimport { string, node, oneOf } from 'prop-types';\nimport { IconInfoCircleFilled, IconExclamationCircleFilled, IconCheckCircleFilled } from '@jotforminc/svg-icons';\n\nconst getLabelClassNames = messageType => {\n const classNames = ['formWizard-label', 'isMessage'];\n switch (messageType) {\n case AlertLabelTypes.INFO:\n classNames.push('isInfo');\n break;\n case AlertLabelTypes.WARNING:\n classNames.push('isWarning');\n break;\n case AlertLabelTypes.SUCCESS:\n classNames.push('isSuccess');\n break;\n default:\n break;\n }\n return classNames.join(' ');\n};\n\nconst AlertLabelWithIcon = ({\n children, htmlFor, label, description, messageType\n}) => {\n const iconMap = {\n [AlertLabelTypes.WARNING]: IconExclamationCircleFilled,\n [AlertLabelTypes.SUCCESS]: IconCheckCircleFilled,\n [AlertLabelTypes.INFO]: IconInfoCircleFilled\n };\n const Icon = iconMap[messageType];\n return (\n \n );\n};\n\nAlertLabelWithIcon.propTypes = {\n children: node,\n htmlFor: string,\n label: string,\n description: node,\n messageType: oneOf(Object.values(AlertLabelTypes))\n};\n\nAlertLabelWithIcon.defaultProps = {\n children: null,\n htmlFor: '',\n label: '',\n description: '',\n messageType: AlertLabelTypes.SUCCESS\n};\n\nexport default AlertLabelWithIcon;\n","import compose from 'lodash/fp/compose';\nimport map from 'lodash/fp/map';\nimport join from 'lodash/fp/join';\nimport getOr from 'lodash/fp/getOr';\nimport orderBy from 'lodash/orderBy';\nimport { setBlotId } from '@jotforminc/jotform-common';\n\nimport fieldProperties from './fieldProperties';\nimport TextInput from '../../../../components/TextInput';\nimport Toggle from '../../../../components/Toggle';\nimport Textarea from '../../../../components/Textarea';\nimport ToggleTextInput from '../ToggleTextInput';\nimport Dropdown from '../../../../components/Dropdown';\nimport Grid from '../../../../components/Grid';\nimport RadioGroup from '../../../../components/RadioGroup';\nimport MultiCheckbox from '../MultiCheckbox';\nimport DateTimeDefault from '../DateTimeDefault';\nimport NumberLimits from '../NumberLimits';\nimport CustomTime from '../CustomTime';\nimport CharacterLimits from '../CharacterLimits';\n\nimport propertiesWithValue from './propertiesWithValue';\n\n// --------- point-free utils ----------------\nconst toUpperCase = t => t.toUpperCase();\n// -------------------------------------------\n\nconst dependency = field => prop => {\n if (field.type === 'control_time' && prop.type === 'showDayPeriods' && field.timeFormat !== 'AM/PM') return false;\n\n return true;\n};\n\nexport const getFieldProperties = (field, question, isPDFImporter) => (\n fieldProperties({ isPDFImporter })[field.type]\n && fieldProperties({ isPDFImporter })[field.type]\n .filter(dependency(field))\n .map(propertiesWithValue({ question, field }))\n);\n\nconst fieldMap = {\n textInput: TextInput,\n toggle: Toggle,\n textarea: Textarea,\n dropdown: Dropdown,\n 'toggle-textinput': ToggleTextInput,\n subLabels: Grid,\n radioGroup: RadioGroup,\n dateTimeDefault: DateTimeDefault,\n options: Textarea,\n 'multi-checkbox': MultiCheckbox,\n numberLimits: NumberLimits,\n customTime: CustomTime,\n 'character-limits': CharacterLimits\n};\n\nexport const getFieldInput = inputType => fieldMap[inputType];\n\nexport const changeField = editedField => field => ((field.id === editedField.id) ? editedField : field);\n\nexport const typeMapper = {\n control_fullname: 'Full Name',\n control_textbox: 'Short Text',\n control_checkbox: 'Multiple Choice',\n control_radio: 'Single Choice',\n control_datetime: 'Date Picker',\n control_time: 'Time',\n control_signature: 'Signature',\n control_address: 'Address',\n control_dropdown: 'Dropdown',\n control_phone: 'Phone',\n control_email: 'Email',\n control_number: 'Number'\n};\n\nexport const typeToName = t => typeMapper[t] || t;\n\n// fieldNameUpper :: FieldType -> FieldName\nexport const fieldNameUpper = compose(\n toUpperCase,\n typeToName\n);\n\nconst getOptions = field => (field && field.options) || [];\nconst toLabel = option => option.label || '';\nconst getFirstNLabels = N => labels => (labels.length > N ? labels.slice(0, N).concat('...') : labels);\n\n// getLabels :: Field -> LabelsString\nexport const getLabels = compose(\n join(', '),\n getFirstNLabels(6),\n map(toLabel),\n getOptions\n);\n\nconst getOptionIndex = field => Number(getOr(0, 'index', field));\nexport const getOrderedFields = fields => orderBy(fields, getOptionIndex, ['asc']);\n\nconst slugify = (text = '') => (\n String(text)\n .toLowerCase()\n .replace(/\\s+/g, '')\n .replace(/[^\\w-]+/g, '')\n);\n\nconst optionTypeMapper = {\n control_dropdown: 'selectbox',\n control_checkbox: 'checkbox',\n control_radio: 'radiobox'\n};\n\nconst getOptionType = field => optionTypeMapper[field.type] || field.type;\n\nexport const buildOptionWithType = type => (name, others = {}) => fieldId => {\n // focus on the newly created field\n const blotId = setBlotId(fieldId)(slugify(name));\n const { qid, ..._others } = others;\n setTimeout(() => {\n const blotElement = document.querySelector(`input[name='q${qid}_inline[${blotId}]']`);\n if (blotElement) {\n blotElement.click();\n }\n }, 200);\n return {\n id: blotId,\n label: ' ',\n name,\n type,\n ..._others\n };\n};\nexport const subfieldsOrder = ['st1', 'st2', 'city', 'state', 'zip', 'country'];\n\nexport const addressSubfieldLabelMap = {\n st1: 'Street Address',\n st2: 'Street Address Line 2',\n city: 'City',\n state: 'State',\n zip: 'Postal/Zip Code',\n country: 'Country'\n};\n\nconst otherChangedProps = (fieldToEdit, value, fieldPropType, qid) => {\n if (fieldToEdit.type === 'control_address' && fieldPropType === 'subfields') {\n const subfieldsArr = value.split('|').sort((a, b) => subfieldsOrder.indexOf(a) - subfieldsOrder.indexOf(b));\n\n const subfieldOptions = {};\n fieldToEdit.options.forEach(opt => subfieldOptions[opt.subfield] = opt);\n\n const newOptions = subfieldsArr.map(subfield => (\n subfieldOptions[subfield]\n ? subfieldOptions[subfield]\n : buildOptionWithType(subfield === 'country' ? 'selectbox' : 'textbox')(addressSubfieldLabelMap[subfield], {\n qid,\n label: addressSubfieldLabelMap[subfield],\n subfield,\n ...(subfield === 'country' ? { special: 'Countries', options: '' } : {})\n })(fieldToEdit.id)\n ));\n\n // FITB > ADDRESS > SUBFIELD TRANSLATION (clicking a checkbox)\n const translatedNewOptions = newOptions.map(option => {\n const cloneOption = { ...option };\n cloneOption.label = cloneOption.label.locale();\n cloneOption.name = cloneOption.name.locale();\n\n return cloneOption;\n });\n\n return { options: translatedNewOptions };\n }\n return {};\n};\n\nconst numberLimits = e => ({\n ...(e.target.name === 'minValue' ? { minValue: e.target.value } : {}),\n ...(e.target.name === 'maxValue' ? { maxValue: e.target.value } : {}),\n ...(e.target.name === 'resetLimits' ? { maxValue: '', minValue: '' } : {}),\n ...(e.target.name === 'defaults' ? { maxValue: '100', minValue: '0' } : {})\n});\n\nconst characterLimits = e => ({\n ...(e.target.name === 'minsize' ? { minsize: e.target.value } : {}),\n ...(e.target.name === 'maxsize' ? { maxsize: e.target.value } : {})\n});\n\nconst buildOptionsFromTextarea = field => (value, qid) => value.split('\\n').map((o, i) => ({\n ...(buildOptionWithType(getOptionType(field))(`option${i + 1}`, { qid })(field.id)),\n label: o\n}));\n\n// data FieldValue = [Option] | String\n// buildFieldValue :: FieldProperties -> Field -> Event -> FieldProp\nexport const buildFieldValue = fProps => field => (e, qid) => {\n const value = (['required', 'drawTimestamp', 'countryCode'].indexOf(fProps.type) !== -1) ? e : e.target.value;\n\n if (fProps.type === 'options' && (\n field.type === 'control_checkbox' || field.type === 'control_dropdown' || field.type === 'control_radio')) {\n return {\n [fProps.type]: buildOptionsFromTextarea(field)(value, qid)\n };\n }\n\n if (fProps.type === 'subfields' && field.type === 'control_address') {\n const checkedValue = value.split('|');\n return {\n [fProps.type]: checkedValue.filter(f => f !== '').join('|'),\n ...(otherChangedProps(field, value, fProps.type, qid))\n };\n }\n\n // TODO: refactor this code\n if (fProps.type === 'countryCode' && value === 'Yes') {\n return {\n options: [\n { ...buildOptionWithType('textbox')('Country Code', { qid })(field.id), label: 'Country Code', inputType: 'tel' },\n ...field.options\n ],\n [fProps.type]: value\n };\n }\n if (fProps.type === 'countryCode' && value === 'No') {\n return {\n options: field.options.filter(f => f.name !== 'Country Code'),\n [fProps.type]: value\n };\n }\n\n if (fProps.type === 'numberLimits') {\n return { ...numberLimits(e) };\n }\n\n if (fProps.inputType === 'character-limits') {\n return { ...characterLimits(e) };\n }\n\n return { [fProps.type]: value };\n};\n\nexport const transformItems = fProps => items => {\n if (fProps.type === 'options') {\n return items.map(item => {\n return {\n header: item.name,\n key: item.id,\n val: item.label,\n prop: 'label',\n __originalItem: item\n };\n });\n }\n return items;\n};\n","\n \n\n","\n \n\n","\n \n\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport {\n IconCartShoppingFilled,\n IconCoinsStackedFilled,\n IconCoinsFilled,\n IconHeartFilled\n} from '@jotforminc/svg-icons';\nimport classNames from 'classnames';\n\nimport Tethered from './Tethered';\nimport { translate } from '../mixins/Translation';\n\nconst PAYMENT_TYPE_ICONS = {\n product: IconCartShoppingFilled,\n subscription: IconCoinsStackedFilled,\n custom: IconCoinsFilled,\n donation: IconHeartFilled\n};\n\nexport class Dropdown extends React.Component {\n static propTypes = {\n name: PropTypes.string,\n id: PropTypes.string,\n ariaLabel: PropTypes.string,\n className: PropTypes.string.isRequired, // class added to \n );\n }\n\n render() {\n const cx = classNames({\n 'm-dropdownWrapper': true,\n [`u-${this.props.size}`]: this.props.size,\n 'u-multiple': this.props.multiple,\n 'm-dropdownTethered': this.props.tethered\n });\n\n const { dropdownMask } = this.props;\n const { selectedElement } = this.state;\n let text = null;\n if (selectedElement && Array.isArray(this.props.options) && this.props.options.length > 0) {\n const opt = this.props.options.find(option => option.key === selectedElement);\n if (opt) {\n text = opt.text;\n }\n }\n\n let options = null;\n if (this.props.options && Array.isArray(this.props.options) && this.props.options.length > 0) {\n let propOptions = this.props.options;\n // 52934d4e3be147110a000027 is the client id of the Country Picker widget\n if (this.props.id === '52934d4e3be147110a000027.country') {\n // it is necessary to sort country names alphabetically regardless of language\n propOptions = propOptions.sort((a, b) => {\n if (!a.value || a.value === 'None' || !b.value || b.value === 'None') return 0;\n const x = a.text.toLowerCase().trim();\n const y = b.text.toLowerCase().trim();\n if (x > y) return 1;\n if (x < y) return -1;\n return 0;\n });\n }\n options = propOptions.map((option, i) => {\n if (typeof option.type !== 'undefined' && option.type === 'group') {\n return this.renderGroup(option.name, option.options, i);\n }\n const disabled = option.disabled || false;\n const style = disabled ? { color: '#CBC6C0' } : {};\n\n return this.renderOption(option.key, option.text, option.value, disabled, i, false, style);\n });\n }\n\n const tetheredOptions = this.props.tethered ? this.props.options.map((option, i) => {\n if (typeof option.type !== 'undefined' && option.type === 'group') {\n return this.renderGroup(option.name, option.options, i, true);\n }\n const disabled = option.disabled || false;\n return this.renderOption(option.key, option.text, option.value, disabled, i, true);\n }) : null;\n const PaymentTypeIcon = this.props.paymentTypeDropdown ? PAYMENT_TYPE_ICONS[this.props.value] : null;\n return this.props.tethered ? (\n {tetheredOptions}
    }\n ref={r => { this.currentTether = r; }}\n className=\"m-dropdownTethered-tether\"\n constraints={[{\n to: 'window',\n attachment: 'together'\n }]}\n toggleOnClick\n >\n
    { this.currentTetheredSelectWrapper = r; }}>\n { this.currentTetheredSelect = r; }}\n style={{ pointerEvents: 'none' }}\n data-testid={this.props.testId}\n >\n { options }\n \n \n
    \n \n ) : (\n
    \n { PaymentTypeIcon && }\n {this.props.type === 'select' ? (\n this.renderSelect(options)\n ) : (\n
    \n {this.props.options && (\n
    \n
    \n {text || this.props.options[1] && this.props.options[1].key === 'none' && this.props.options[1].text || this.props.options[0].text}\n
    \n \n {this.props.options.map((option, index) => (\n \n {option.key === 'addone' && (\n \n )}\n\n {option.key === selectedElement && (\n \n )}\n\n \n {(!this.props.dontShowIndex && this.props.options.length >= 3 && option.key !== 'none' && option.key !== 'addone') && (\n \n {index}\n .\n {' '}\n \n )}\n {option.text}\n \n \n ))}\n \n
    \n )}\n\n
    \n )}\n\n \n
    \n );\n }\n\n handleOnClick = (option, type, e) => {\n if (type === 'close') {\n e.target.closest('.pg-dropdown').classList.remove('open');\n const { onChange } = this.props;\n\n if (onChange) {\n e.persist();\n this.props.onChange(e);\n }\n } else {\n const target = e.target.closest('.pg-dropdown');\n const billingInfoFields = ['emailField', 'billingAdd', 'shippingAdd', 'phoneField', 'customDataField']; // for payments that are enabled billing option\n\n if (target.classList.contains('open')) {\n e.target.closest('.pg-dropdown').classList.remove('open');\n if (billingInfoFields.includes(this.props.testId)) {\n e.target.closest('.m-dropdownWrapper').classList.remove('opened');\n }\n } else {\n e.target.closest('.pg-dropdown').classList.add('open');\n if (billingInfoFields.includes(this.props.testId)) {\n e.target.closest('.m-dropdownWrapper').classList.add('opened');\n }\n }\n }\n };\n\n handleOnChange(e) {\n if (this.props.onChange) {\n e.persist();\n this.props.onChange(e);\n }\n this.props.addActivityLogs(this.props.id, ['alignment'], e.target.value);\n }\n}\n\nexport default Dropdown;\n","import debounce from 'lodash/debounce';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { t } from '@jotforminc/translation';\n\nconst noop = () => { };\n\nexport class TextInput extends React.Component {\n static propTypes = {\n name: PropTypes.string,\n placeholder: PropTypes.string,\n value: PropTypes.string,\n onChange: PropTypes.func,\n onBlur: PropTypes.func,\n disabled: PropTypes.string,\n id: PropTypes.string,\n ariaLabel: PropTypes.string,\n className: PropTypes.string,\n additionalClasses: PropTypes.string,\n inlineStyle: PropTypes.object,\n type: PropTypes.string,\n numberOnly: PropTypes.bool,\n allowDecimal: PropTypes.bool,\n onKeyDown: PropTypes.func,\n preventSpaceAtFirst: PropTypes.bool,\n preventNegativeNumbers: PropTypes.bool,\n preventZeroNumber: PropTypes.bool,\n addActivityLogs: PropTypes.func,\n isThankYou: PropTypes.bool,\n maxLength: PropTypes.string,\n maximumLength: PropTypes.string, // because some components still pass maxLength\n allowInputComma: PropTypes.bool\n };\n\n static defaultProps = {\n onBlur: noop,\n onChange: noop,\n disabled: '',\n type: 'text',\n className: 'inpt',\n isThankYou: false,\n addActivityLogs: () => {}\n };\n\n constructor(props) {\n super(props);\n this._handleKeyDown = this._handleKeyDown.bind(this);\n this._allowTypePoint = this._allowTypePoint.bind(this);\n this._handleOnChange = this._handleOnChange.bind(this);\n this._validateNumber = this._validateNumber.bind(this);\n this._handleOnBlur = this._handleOnBlur.bind(this);\n this.renderTextInput = this.renderTextInput.bind(this);\n this.setInputValue = value => {\n this.setState({ inputValue: value });\n };\n this.setInputValueDebounced = debounce(this.setInputValue, 100);\n\n this.state = {\n inputValue: this.props.value\n };\n }\n\n renderTextInput() {\n // Below method filters out faulty props that are not allowed on elements\n const props = this._preparePropsForRender(this.props);\n return (\n \n );\n }\n\n render() {\n const { isThankYou } = this.props;\n return (\n <>\n {\n isThankYou\n ? (\n
    \n \n {this.renderTextInput()}\n
    \n )\n : this.renderTextInput()\n }\n \n );\n }\n\n UNSAFE_componentWillReceiveProps = nextProps => {\n if (nextProps.value !== this.props.value) {\n this.setInputValueDebounced(nextProps.value);\n }\n };\n\n _preparePropsForRender() {\n const inProps = this.props;\n const unnecessaryProps = ['isV4', 'isMobile', 'isCardForm', 'formProperties', 'updateFormProperty', 'options', 'inlineStyle', 'decimalCount', 'allowDecimal', 'numberOnly', 'preventNegativeNumbers', 'preventZeroNumber', 'allowInputComma'];\n const outProps = new Object; // eslint-disable-line\n\n for (const property in inProps) {\n if (unnecessaryProps.indexOf(property) < 0) {\n Object.assign(outProps, { [property]: inProps[property] });\n }\n }\n\n if (inProps.numberOnly && inProps.type === 'number') {\n outProps.type = 'text';\n }\n\n outProps.className = inProps.className ? inProps.className : 'inpt';\n outProps.className += ' injectCSSPrevention';\n\n return outProps;\n }\n\n _allowTypePoint(target) {\n const strVal = target.value;\n if (strVal && strVal.length) {\n if (strVal.indexOf('.') === -1) {\n return true;\n }\n }\n\n return false;\n }\n\n _validateNumber(numberString) {\n if (this.props.numberOnly) {\n if (this.props.allowDecimal) {\n if (this.props.preventNegativeNumbers) {\n if (this.props.allowInputComma) {\n return numberString.match(/^([0-9]*)([.,][0-9]{0,2})?$/);\n }\n return numberString.match(/^([0-9]*)(\\.[0-9]{0,2})?$/);\n }\n if (this.props.allowInputComma) {\n return numberString.match(/^((-?)[0-9]*)([.,][0-9]{0,2})?$/);\n }\n return numberString.match(/^((-?)[0-9]*)(\\.[0-9]{0,2})?$/);\n }\n\n if (this.props.preventNegativeNumbers) {\n return numberString.match(/^([0-9]*)$/);\n }\n\n if (this.props.preventZeroNumber) {\n return numberString.match(/^$|[1-9][0-9]*$/);\n }\n\n return numberString.match(/^((-?)[0-9]*)$/);\n }\n\n if (this.props.preventWhitespace) { // prevented whitespace for Payment: apiKey, clientId etc\n return !numberString.match(/\\s/);\n }\n\n return true;\n }\n\n _handleOnChange(e) {\n const { maximumLength } = this.props;\n if (this._validateNumber(e.target.value)) {\n if (this.props.onChange) {\n if (e.persist) {\n e.persist(); // For using event in another function || React-15 persist\n }\n\n // convert comma to point for user input consistency\n if (this.props.allowInputComma) {\n const newValue = e.target.value.replace(/,/g, '.');\n if (newValue !== e.target.value) {\n e.target.value = newValue;\n }\n }\n\n if (maximumLength && e.target.value.length > maximumLength) {\n return;\n }\n\n this.props.onChange(e);\n this.setInputValue(e.target.value);\n }\n const ids = ['formWidth', 'lineSpacing', 'labelWidth', 'fontsize'];\n this.props.addActivityLogs(this.props.id, ids, e.target.value);\n } else {\n e.preventDefault();\n }\n }\n\n _handleOnBlur(e) {\n this.props.onBlur && this.props.onBlur(e);\n }\n\n _handleKeyDown(e) {\n if (this.props.preventSpaceAtFirst) {\n const strVal = e.target.value;\n if (!(strVal && strVal.length)) {\n if (e.keyCode === 32) {\n e.preventDefault();\n return;\n }\n }\n }\n if (e.persist) {\n e.persist(); // For using event in another function || React-15 persist\n }\n if (this.props.onKeyDown) this.props.onKeyDown(e);\n }\n}\n\nexport default TextInput;\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\n\nexport class Tooltip extends React.Component {\n static propTypes = {\n kind: PropTypes.string, // error, warning\n arrowTo: PropTypes.string,\n linked: PropTypes.bool,\n className: PropTypes.string,\n style: PropTypes.shape(),\n children: PropTypes.node\n };\n\n render() {\n let linked = 'u-alwaysVisible';\n const externalClasses = (this.props.className ? this.props.className : '');\n if (this.props.linked === true) {\n linked = 'u-tethered';\n }\n let cx = classNames({\n toolTip: true,\n [`u-${this.props.kind}`]: this.props.kind,\n [`u-${this.props.arrowTo}`]: this.props.arrowTo\n });\n cx = `${cx} ${linked} ${externalClasses}`;\n return (\n
    \n { this.props.children }\n
    \n );\n }\n}\n\nexport default Tooltip;\n","\n \n\n","\n \n\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\n\nexport class Icon extends React.Component {\n static propTypes = {\n name: PropTypes.string,\n className: PropTypes.string,\n onClick: PropTypes.oneOfType([PropTypes.func, PropTypes.bool])\n };\n\n render() {\n let cx = classNames({\n ji: true,\n [`ji-${this.props.name}`]: this.props.name\n });\n cx = this.props.className ? `${cx} ${this.props.className}` : cx;\n return (\n \n );\n }\n}\n\nexport default Icon;\n","import React from 'react';\nimport Tether from 'tether';\nimport ReactDOM from 'react-dom';\n\nexport class Tethered extends React.Component {\n constructor(props) {\n // console.log('constrictong');\n super(props);\n const newProps = {};\n if (this.props.toggleOnClick) {\n if (this.props.children.props.onClick !== undefined) {\n if (typeof this.props.children.props.onClick === 'function') {\n const onClickFn = this.props.children.props.onClick;\n newProps.onClick = this.toggleVisibilityByClick;\n newProps.onClick = e => {\n onClickFn(e);\n this.toggleVisibilityByClick(e);\n };\n }\n } else {\n newProps.onClick = this.toggleVisibilityByClick;\n }\n }\n this.injectedProps = newProps;\n\n this.handleClickOutside = this.handleClickOutside.bind(this);\n this.forceFixTetherPosition = this.forceFixTetherPosition.bind(this);\n this.state = { visible: this.props.visible };\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (nextProps.maxWidth) {\n this._tetherContainer.style.maxWidth = `${nextProps.maxWidth}px`;\n }\n // update width if given\n if (nextProps.width) {\n this._tetherContainer.style.width = (typeof nextProps.width === 'number') ? `${nextProps.width}px` : `${nextProps.width}`;\n }\n\n if (nextProps.customVisibility !== undefined) {\n this.setState({\n visible: nextProps.visible\n });\n }\n }\n\n UNSAFE_componentWillMount() {\n const tetheredContainer = document.createElement('div');\n tetheredContainer.id = 'react-tethered-container';\n tetheredContainer.className = 'tethered_container';\n tetheredContainer.style.maxWidth = `${this.props.maxWidth}px`;\n tetheredContainer.style.width = (typeof this.props.width === 'number') ? `${this.props.width}px` : `${this.props.width}px`;\n this._tetherContainer = tetheredContainer;\n document.querySelector('body').appendChild(this._tetherContainer);\n }\n\n componentDidMount() {\n this._renderTether();\n\n if (this.props.forceFixTetherPosition) {\n document.addEventListener('mouseup', this.forceFixTetherPosition);\n document.addEventListener('touchend', this.forceFixTetherPosition);\n }\n\n document.addEventListener('mousedown', this.handleClickOutside);\n document.addEventListener('touchend', this.handleClickOutside);\n // this.forceUpdate();\n }\n\n componentDidUpdate() {\n this._renderTether();\n }\n\n componentWillUnmount() {\n if (this.props.forceFixTetherPosition) {\n document.removeEventListener('mouseup', this.forceFixTetherPosition);\n document.removeEventListener('touchend', this.forceFixTetherPosition);\n }\n\n document.removeEventListener('mousedown', this.handleClickOutside);\n document.removeEventListener('touchend', this.handleClickOutside);\n this._tetherContainer.parentNode.removeChild(this._tetherContainer);\n }\n\n forceFixTetherPosition() {\n setTimeout(() => {\n document.dispatchEvent(new Event('resize', { bubbles: true })); // Fixes some positioning issues.\n });\n }\n\n handleClickOutside(e) {\n if (ReactDOM.findDOMNode(this).contains(e.target)) {\n return;\n }\n if (this.state.visible) {\n if (!this._tetherContainer.contains(e.target)) {\n if (typeof this.props.onClose === 'function') {\n this.props.onClose();\n }\n\n this.setState({\n visible: false\n });\n }\n }\n }\n\n render() {\n // this.props.children\n const el = React.cloneElement(\n this.props.children,\n this.injectedProps\n );\n return el;\n }\n\n _tetherComponent() {\n const newProps = {\n className: this.props.className,\n onClick: this.props.toggleOnSelect ? () => this.setState({ visible: false }) : () => {}\n };\n return (\n
    \n {this.props.attachmentElement}\n
    \n );\n }\n\n _tetherOptions = () => {\n // let containerRect = this._tetherContainer.getBoundingClientRect();\n const targetRect = ReactDOM.findDOMNode(this).getBoundingClientRect();\n const visibleHeight = window.innerHeight;\n // const visibleWidth = window.innerWidth;\n const propOptions = { ...this.props };\n // if not tethered element is not in visible height\n if (targetRect.top + targetRect.height + this.props.height > visibleHeight) {\n let targetOffset = propOptions.targetOffset || '';\n const leftOffset = targetOffset.split(' ')[1] || '0';\n const newTopOffset = `-${this.props.height}px`;\n targetOffset = `${newTopOffset} ${leftOffset}`;\n propOptions.targetOffset = targetOffset;\n }\n const options = {\n element: this._tetherContainer,\n target: ReactDOM.findDOMNode(this),\n ...propOptions\n };\n return options;\n };\n\n _renderTether(options) {\n let tetherOptions = this._tetherOptions();\n if (options !== undefined) {\n tetherOptions = options;\n }\n ReactDOM.render(this._tetherComponent(), this._tetherContainer);\n if (this._tether !== null && this._tether !== undefined) {\n this._tether.setOptions(tetherOptions);\n } else {\n this._tether = new Tether(tetherOptions);\n }\n }\n\n toggleVisibilityByClick = () => {\n this.setState({\n visible: !this.state.visible\n });\n };\n}\n\nexport default Tethered;\n","import { t } from '@jotforminc/translation';\n/**\n * Translation of texts\n * @param {string} str: text for translation\n * @param {Object} params: contains the dynamic variables in the text\n */\n\nexport function translate(str, params) {\n return t(str, params);\n}\n\nexport default {\n translate\n};\n","import { translate } from '../../../mixins/Translation';\n\nexport default [\n translate('United States'),\n translate('Afghanistan'),\n translate('Albania'),\n translate('Algeria'),\n translate('American Samoa'),\n translate('Andorra'),\n translate('Angola'),\n translate('Anguilla'),\n translate('Antigua and Barbuda'),\n translate('Argentina'),\n translate('Armenia'),\n translate('Aruba'),\n translate('Australia'),\n translate('Austria'),\n translate('Azerbaijan'),\n translate('The Bahamas'),\n translate('Bahrain'),\n translate('Bangladesh'),\n translate('Barbados'),\n translate('Belarus'),\n translate('Belgium'),\n translate('Belize'),\n translate('Benin'),\n translate('Bermuda'),\n translate('Bhutan'),\n translate('Bolivia'),\n translate('Bosnia and Herzegovina'),\n translate('Botswana'),\n translate('Brazil'),\n translate('Brunei'),\n translate('Bulgaria'),\n translate('Burkina Faso'),\n translate('Burundi'),\n translate('Cambodia'),\n translate('Cameroon'),\n translate('Canada'),\n translate('Cape Verde'),\n translate('Cayman Islands'),\n translate('Central African Republic'),\n translate('Chad'),\n translate('Chile'),\n translate('China'),\n translate('Christmas Island'),\n translate('Cocos (Keeling) Islands'),\n translate('Colombia'),\n translate('Comoros'),\n translate('Congo'),\n translate('Cook Islands'),\n translate('Costa Rica'),\n translate('Cote d\\'Ivoire'),\n translate('Croatia'),\n translate('Cuba'),\n translate('Curacao'),\n translate('Cyprus'),\n translate('Czech Republic'),\n translate('Democratic Republic of the Congo'),\n translate('Denmark'),\n translate('Djibouti'),\n translate('Dominica'),\n translate('Dominican Republic'),\n translate('Ecuador'),\n translate('Egypt'),\n translate('El Salvador'),\n translate('Equatorial Guinea'),\n translate('Eritrea'),\n translate('Estonia'),\n translate('Ethiopia'),\n translate('Falkland Islands'),\n translate('Faroe Islands'),\n translate('Fiji'),\n translate('Finland'),\n translate('France'),\n translate('French Polynesia'),\n translate('Gabon'),\n translate('The Gambia'),\n translate('Georgia'),\n translate('Germany'),\n translate('Ghana'),\n translate('Gibraltar'),\n translate('Greece'),\n translate('Greenland'),\n translate('Grenada'),\n translate('Guadeloupe'),\n translate('Guam'),\n translate('Guatemala'),\n translate('Guernsey'),\n translate('Guinea'),\n translate('Guinea-Bissau'),\n translate('Guyana'),\n translate('Haiti'),\n translate('Honduras'),\n translate('Hong Kong'),\n translate('Hungary'),\n translate('Iceland'),\n translate('India'),\n translate('Indonesia'),\n translate('Iran'),\n translate('Iraq'),\n translate('Ireland'),\n translate('Israel'),\n translate('Italy'),\n translate('Jamaica'),\n translate('Japan'),\n translate('Jersey'),\n translate('Jordan'),\n translate('Kazakhstan'),\n translate('Kenya'),\n translate('Kiribati'),\n translate('North Korea'),\n translate('South Korea'),\n translate('Kosovo'),\n translate('Kuwait'),\n translate('Kyrgyzstan'),\n translate('Laos'),\n translate('Latvia'),\n translate('Lebanon'),\n translate('Lesotho'),\n translate('Liberia'),\n translate('Libya'),\n translate('Liechtenstein'),\n translate('Lithuania'),\n translate('Luxembourg'),\n translate('Macau'),\n translate('Macedonia'),\n translate('Madagascar'),\n translate('Malawi'),\n translate('Malaysia'),\n translate('Maldives'),\n translate('Mali'),\n translate('Malta'),\n translate('Marshall Islands'),\n translate('Martinique'),\n translate('Mauritania'),\n translate('Mauritius'),\n translate('Mayotte'),\n translate('Mexico'),\n translate('Micronesia'),\n translate('Moldova'),\n translate('Monaco'),\n translate('Mongolia'),\n translate('Montenegro'),\n translate('Montserrat'),\n translate('Morocco'),\n translate('Mozambique'),\n translate('Myanmar'),\n translate('Nagorno-Karabakh'),\n translate('Namibia'),\n translate('Nauru'),\n translate('Nepal'),\n translate('Netherlands'),\n translate('Netherlands Antilles'),\n translate('New Caledonia'),\n translate('New Zealand'),\n translate('Nicaragua'),\n translate('Niger'),\n translate('Nigeria'),\n translate('Niue'),\n translate('Norfolk Island'),\n translate('Turkish Republic of Northern Cyprus'),\n translate('Northern Mariana'),\n translate('Norway'),\n translate('Oman'),\n translate('Pakistan'),\n translate('Palau'),\n translate('Palestine'),\n translate('Panama'),\n translate('Papua New Guinea'),\n translate('Paraguay'),\n translate('Peru'),\n translate('Philippines'),\n translate('Pitcairn Islands'),\n translate('Poland'),\n translate('Portugal'),\n translate('Puerto Rico'),\n translate('Qatar'),\n translate('Republic of the Congo'),\n translate('Romania'),\n translate('Russia'),\n translate('Rwanda'),\n translate('Saint Barthelemy'),\n translate('Saint Helena'),\n translate('Saint Kitts and Nevis'),\n translate('Saint Lucia'),\n translate('Saint Martin'),\n translate('Saint Pierre and Miquelon'),\n translate('Saint Vincent and the Grenadines'),\n translate('Samoa'),\n translate('San Marino'),\n translate('Sao Tome and Principe'),\n translate('Saudi Arabia'),\n translate('Senegal'),\n translate('Serbia'),\n translate('Seychelles'),\n translate('Sierra Leone'),\n translate('Singapore'),\n translate('Slovakia'),\n translate('Slovenia'),\n translate('Solomon Islands'),\n translate('Somalia'),\n translate('Somaliland'),\n translate('South Africa'),\n translate('South Ossetia'),\n translate('Spain'),\n translate('Sri Lanka'),\n translate('Sudan'),\n translate('Suriname'),\n translate('Svalbard'),\n translate('Swaziland'),\n translate('Sweden'),\n translate('Switzerland'),\n translate('Syria'),\n translate('Taiwan'),\n translate('Tajikistan'),\n translate('Tanzania'),\n translate('Thailand'),\n translate('Timor-Leste'),\n translate('Togo'),\n translate('Tokelau'),\n translate('Tonga'),\n translate('Transnistria Pridnestrovie'),\n translate('Trinidad and Tobago'),\n translate('Tristan da Cunha'),\n translate('Tunisia'),\n translate('Turkey'),\n translate('Turkmenistan'),\n translate('Turks and Caicos Islands'),\n translate('Tuvalu'),\n translate('Uganda'),\n translate('Ukraine'),\n translate('United Arab Emirates'),\n translate('United Kingdom'),\n translate('Uruguay'),\n translate('Uzbekistan'),\n translate('Vanuatu'),\n translate('Vatican City'),\n translate('Venezuela'),\n translate('Vietnam'),\n translate('British Virgin Islands'),\n translate('Isle of Man'),\n translate('US Virgin Islands'),\n translate('Wallis and Futuna'),\n translate('Western Sahara'),\n translate('Yemen'),\n translate('Zambia'),\n translate('Zimbabwe')\n];\n","import { translate } from '../../../mixins/Translation';\n\nexport const CountryList = [\n {\n key: 'none',\n text: translate('Select option')\n },\n {\n key: 'United States',\n text: translate('United States')\n },\n {\n key: 'Afghanistan',\n text: translate('Afghanistan')\n },\n {\n key: 'Albania',\n text: translate('Albania')\n },\n {\n key: 'Algeria',\n text: translate('Algeria')\n },\n {\n key: 'American Samoa',\n text: translate('American Samoa')\n },\n {\n key: 'Andorra',\n text: translate('Andorra')\n },\n {\n key: 'Angola',\n text: translate('Angola')\n },\n {\n key: 'Anguilla',\n text: translate('Anguilla')\n },\n {\n key: 'Antigua and Barbuda',\n text: translate('Antigua and Barbuda')\n },\n {\n key: 'Argentina',\n text: translate('Argentina')\n },\n {\n key: 'Armenia',\n text: translate('Armenia')\n },\n {\n key: 'Aruba',\n text: translate('Aruba')\n },\n {\n key: 'Australia',\n text: translate('Australia')\n },\n {\n key: 'Austria',\n text: translate('Austria')\n },\n {\n key: 'Azerbaijan',\n text: translate('Azerbaijan')\n },\n {\n key: 'The Bahamas',\n text: translate('The Bahamas')\n },\n {\n key: 'Bahrain',\n text: translate('Bahrain')\n },\n {\n key: 'Bangladesh',\n text: translate('Bangladesh')\n },\n {\n key: 'Barbados',\n text: translate('Barbados')\n },\n {\n key: 'Belarus',\n text: translate('Belarus')\n },\n {\n key: 'Belgium',\n text: translate('Belgium')\n },\n {\n key: 'Belize',\n text: translate('Belize')\n },\n {\n key: 'Benin',\n text: translate('Benin')\n },\n {\n key: 'Bermuda',\n text: translate('Bermuda')\n },\n {\n key: 'Bhutan',\n text: translate('Bhutan')\n },\n {\n key: 'Bolivia',\n text: translate('Bolivia')\n },\n {\n key: 'Bosnia and Herzegovina',\n text: translate('Bosnia and Herzegovina')\n },\n {\n key: 'Botswana',\n text: translate('Botswana')\n },\n {\n key: 'Brazil',\n text: translate('Brazil')\n },\n {\n key: 'Brunei',\n text: translate('Brunei')\n },\n {\n key: 'Bulgaria',\n text: translate('Bulgaria')\n },\n {\n key: 'Burkina Faso',\n text: translate('Burkina Faso')\n },\n {\n key: 'Burundi',\n text: translate('Burundi')\n },\n {\n key: 'Cambodia',\n text: translate('Cambodia')\n },\n {\n key: 'Cameroon',\n text: translate('Cameroon')\n },\n {\n key: 'Canada',\n text: translate('Canada')\n },\n {\n key: 'Cape Verde',\n text: translate('Cape Verde')\n },\n {\n key: 'Cayman Islands',\n text: translate('Cayman Islands')\n },\n {\n key: 'Central African Republic',\n text: translate('Central African Republic')\n },\n {\n key: 'Chad',\n text: translate('Chad')\n },\n {\n key: 'Chile',\n text: translate('Chile')\n },\n {\n key: 'China',\n text: translate('China')\n },\n {\n key: 'Christmas Island',\n text: translate('Christmas Island')\n },\n {\n key: 'Cocos (Keeling) Islands',\n text: translate('Cocos (Keeling) Islands')\n },\n {\n key: 'Colombia',\n text: translate('Colombia')\n },\n {\n key: 'Comoros',\n text: translate('Comoros')\n },\n {\n key: 'Congo',\n text: translate('Congo')\n },\n {\n key: 'Cook Islands',\n text: translate('Cook Islands')\n },\n {\n key: 'Costa Rica',\n text: translate('Costa Rica')\n },\n {\n key: 'Cote d\\'Ivoire',\n text: translate('Cote d\\'Ivoire')\n },\n {\n key: 'Croatia',\n text: translate('Croatia')\n },\n {\n key: 'Cuba',\n text: translate('Cuba')\n },\n {\n key: 'Curacao',\n text: translate('Curacao')\n },\n {\n key: 'Cyprus',\n text: translate('Cyprus')\n },\n {\n key: 'Czech Republic',\n text: translate('Czech Republic')\n },\n {\n key: 'Democratic Republic of the Congo',\n text: translate('Democratic Republic of the Congo')\n },\n {\n key: 'Denmark',\n text: translate('Denmark')\n },\n {\n key: 'Djibouti',\n text: translate('Djibouti')\n },\n {\n key: 'Dominica',\n text: translate('Dominica')\n },\n {\n key: 'Dominican Republic',\n text: translate('Dominican Republic')\n },\n {\n key: 'Ecuador',\n text: translate('Ecuador')\n },\n {\n key: 'Egypt',\n text: translate('Egypt')\n },\n {\n key: 'El Salvador',\n text: translate('El Salvador')\n },\n {\n key: 'Equatorial Guinea',\n text: translate('Equatorial Guinea')\n },\n {\n key: 'Eritrea',\n text: translate('Eritrea')\n },\n {\n key: 'Estonia',\n text: translate('Estonia')\n },\n {\n key: 'Ethiopia',\n text: translate('Ethiopia')\n },\n {\n key: 'Falkland Islands',\n text: translate('Falkland Islands')\n },\n {\n key: 'Faroe Islands',\n text: translate('Faroe Islands')\n },\n {\n key: 'Fiji',\n text: translate('Fiji')\n },\n {\n key: 'Finland',\n text: translate('Finland')\n },\n {\n key: 'France',\n text: translate('France')\n },\n {\n key: 'French Polynesia',\n text: translate('French Polynesia')\n },\n {\n key: 'Gabon',\n text: translate('Gabon')\n },\n {\n key: 'The Gambia',\n text: translate('The Gambia')\n },\n {\n key: 'Georgia',\n text: translate('Georgia')\n },\n {\n key: 'Germany',\n text: translate('Germany')\n },\n {\n key: 'Ghana',\n text: translate('Ghana')\n },\n {\n key: 'Gibraltar',\n text: translate('Gibraltar')\n },\n {\n key: 'Greece',\n text: translate('Greece')\n },\n {\n key: 'Greenland',\n text: translate('Greenland')\n },\n {\n key: 'Grenada',\n text: translate('Grenada')\n },\n {\n key: 'Guadeloupe',\n text: translate('Guadeloupe')\n },\n {\n key: 'Guam',\n text: translate('Guam')\n },\n {\n key: 'Guatemala',\n text: translate('Guatemala')\n },\n {\n key: 'Guernsey',\n text: translate('Guernsey')\n },\n {\n key: 'Guinea',\n text: translate('Guinea')\n },\n {\n key: 'Guinea-Bissau',\n text: translate('Guinea-Bissau')\n },\n {\n key: 'Guyana',\n text: translate('Guyana')\n },\n {\n key: 'Haiti',\n text: translate('Haiti')\n },\n {\n key: 'Honduras',\n text: translate('Honduras')\n },\n {\n key: 'Hong Kong',\n text: translate('Hong Kong')\n },\n {\n key: 'Hungary',\n text: translate('Hungary')\n },\n {\n key: 'Iceland',\n text: translate('Iceland')\n },\n {\n key: 'India',\n text: translate('India')\n },\n {\n key: 'Indonesia',\n text: translate('Indonesia')\n },\n {\n key: 'Iran',\n text: translate('Iran')\n },\n {\n key: 'Iraq',\n text: translate('Iraq')\n },\n {\n key: 'Ireland',\n text: translate('Ireland')\n },\n {\n key: 'Israel',\n text: translate('Israel')\n },\n {\n key: 'Italy',\n text: translate('Italy')\n },\n {\n key: 'Jamaica',\n text: translate('Jamaica')\n },\n {\n key: 'Japan',\n text: translate('Japan')\n },\n {\n key: 'Jersey',\n text: translate('Jersey')\n },\n {\n key: 'Jordan',\n text: translate('Jordan')\n },\n {\n key: 'Kazakhstan',\n text: translate('Kazakhstan')\n },\n {\n key: 'Kenya',\n text: translate('Kenya')\n },\n {\n key: 'Kiribati',\n text: translate('Kiribati')\n },\n {\n key: 'North Korea',\n text: translate('North Korea')\n },\n {\n key: 'South Korea',\n text: translate('South Korea')\n },\n {\n key: 'Kosovo',\n text: translate('Kosovo')\n },\n {\n key: 'Kuwait',\n text: translate('Kuwait')\n },\n {\n key: 'Kyrgyzstan',\n text: translate('Kyrgyzstan')\n },\n {\n key: 'Laos',\n text: translate('Laos')\n },\n {\n key: 'Latvia',\n text: translate('Latvia')\n },\n {\n key: 'Lebanon',\n text: translate('Lebanon')\n },\n {\n key: 'Lesotho',\n text: translate('Lesotho')\n },\n {\n key: 'Liberia',\n text: translate('Liberia')\n },\n {\n key: 'Libya',\n text: translate('Libya')\n },\n {\n key: 'Liechtenstein',\n text: translate('Liechtenstein')\n },\n {\n key: 'Lithuania',\n text: translate('Lithuania')\n },\n {\n key: 'Luxembourg',\n text: translate('Luxembourg')\n },\n {\n key: 'Macau',\n text: translate('Macau')\n },\n {\n key: 'Macedonia',\n text: translate('Macedonia')\n },\n {\n key: 'Madagascar',\n text: translate('Madagascar')\n },\n {\n key: 'Malawi',\n text: translate('Malawi')\n },\n {\n key: 'Malaysia',\n text: translate('Malaysia')\n },\n {\n key: 'Maldives',\n text: translate('Maldives')\n },\n {\n key: 'Mali',\n text: translate('Mali')\n },\n {\n key: 'Malta',\n text: translate('Malta')\n },\n {\n key: 'Marshall Islands',\n text: translate('Marshall Islands')\n },\n {\n key: 'Martinique',\n text: translate('Martinique')\n },\n {\n key: 'Mauritania',\n text: translate('Mauritania')\n },\n {\n key: 'Mauritius',\n text: translate('Mauritius')\n },\n {\n key: 'Mayotte',\n text: translate('Mayotte')\n },\n {\n key: 'Mexico',\n text: translate('Mexico')\n },\n {\n key: 'Micronesia',\n text: translate('Micronesia')\n },\n {\n key: 'Moldova',\n text: translate('Moldova')\n },\n {\n key: 'Monaco',\n text: translate('Monaco')\n },\n {\n key: 'Mongolia',\n text: translate('Mongolia')\n },\n {\n key: 'Montenegro',\n text: translate('Montenegro')\n },\n {\n key: 'Montserrat',\n text: translate('Montserrat')\n },\n {\n key: 'Morocco',\n text: translate('Morocco')\n },\n {\n key: 'Mozambique',\n text: translate('Mozambique')\n },\n {\n key: 'Myanmar',\n text: translate('Myanmar')\n },\n {\n key: 'Nagorno-Karabakh',\n text: translate('Nagorno-Karabakh')\n },\n {\n key: 'Namibia',\n text: translate('Namibia')\n },\n {\n key: 'Nauru',\n text: translate('Nauru')\n },\n {\n key: 'Nepal',\n text: translate('Nepal')\n },\n {\n key: 'Netherlands',\n text: translate('Netherlands')\n },\n {\n key: 'Netherlands Antilles',\n text: translate('Netherlands Antilles')\n },\n {\n key: 'New Caledonia',\n text: translate('New Caledonia')\n },\n {\n key: 'New Zealand',\n text: translate('New Zealand')\n },\n {\n key: 'Nicaragua',\n text: translate('Nicaragua')\n },\n {\n key: 'Niger',\n text: translate('Niger')\n },\n {\n key: 'Nigeria',\n text: translate('Nigeria')\n },\n {\n key: 'Niue',\n text: translate('Niue')\n },\n {\n key: 'Norfolk Island',\n text: translate('Norfolk Island')\n },\n {\n key: 'Turkish Republic of Northern Cyprus',\n text: translate('Turkish Republic of Northern Cyprus')\n },\n {\n key: 'Northern Mariana',\n text: translate('Northern Mariana')\n },\n {\n key: 'Norway',\n text: translate('Norway')\n },\n {\n key: 'Oman',\n text: translate('Oman')\n },\n {\n key: 'Pakistan',\n text: translate('Pakistan')\n },\n {\n key: 'Palau',\n text: translate('Palau')\n },\n {\n key: 'Palestine',\n text: translate('Palestine')\n },\n {\n key: 'Panama',\n text: translate('Panama')\n },\n {\n key: 'Papua New Guinea',\n text: translate('Papua New Guinea')\n },\n {\n key: 'Paraguay',\n text: translate('Paraguay')\n },\n {\n key: 'Peru',\n text: translate('Peru')\n },\n {\n key: 'Philippines',\n text: translate('Philippines')\n },\n {\n key: 'Pitcairn Islands',\n text: translate('Pitcairn Islands')\n },\n {\n key: 'Poland',\n text: translate('Poland')\n },\n {\n key: 'Portugal',\n text: translate('Portugal')\n },\n {\n key: 'Puerto Rico',\n text: translate('Puerto Rico')\n },\n {\n key: 'Qatar',\n text: translate('Qatar')\n },\n {\n key: 'Republic of the Congo',\n text: translate('Republic of the Congo')\n },\n {\n key: 'Romania',\n text: translate('Romania')\n },\n {\n key: 'Russia',\n text: translate('Russia')\n },\n {\n key: 'Rwanda',\n text: translate('Rwanda')\n },\n {\n key: 'Saint Barthelemy',\n text: translate('Saint Barthelemy')\n },\n {\n key: 'Saint Helena',\n text: translate('Saint Helena')\n },\n {\n key: 'Saint Kitts and Nevis',\n text: translate('Saint Kitts and Nevis')\n },\n {\n key: 'Saint Lucia',\n text: translate('Saint Lucia')\n },\n {\n key: 'Saint Martin',\n text: translate('Saint Martin')\n },\n {\n key: 'Saint Pierre and Miquelon',\n text: translate('Saint Pierre and Miquelon')\n },\n {\n key: 'Saint Vincent and the Grenadines',\n text: translate('Saint Vincent and the Grenadines')\n },\n {\n key: 'Samoa',\n text: translate('Samoa')\n },\n {\n key: 'San Marino',\n text: translate('San Marino')\n },\n {\n key: 'Sao Tome and Principe',\n text: translate('Sao Tome and Principe')\n },\n {\n key: 'Saudi Arabia',\n text: translate('Saudi Arabia')\n },\n {\n key: 'Senegal',\n text: translate('Senegal')\n },\n {\n key: 'Serbia',\n text: translate('Serbia')\n },\n {\n key: 'Seychelles',\n text: translate('Seychelles')\n },\n {\n key: 'Sierra Leone',\n text: translate('Sierra Leone')\n },\n {\n key: 'Singapore',\n text: translate('Singapore')\n },\n {\n key: 'Slovakia',\n text: translate('Slovakia')\n },\n {\n key: 'Slovenia',\n text: translate('Slovenia')\n },\n {\n key: 'Solomon Islands',\n text: translate('Solomon Islands')\n },\n {\n key: 'Somalia',\n text: translate('Somalia')\n },\n {\n key: 'Somaliland',\n text: translate('Somaliland')\n },\n {\n key: 'South Africa',\n text: translate('South Africa')\n },\n {\n key: 'South Ossetia',\n text: translate('South Ossetia')\n },\n {\n key: 'South Sudan',\n text: translate('South Sudan')\n },\n {\n key: 'Spain',\n text: translate('Spain')\n },\n {\n key: 'Sri Lanka',\n text: translate('Sri Lanka')\n },\n {\n key: 'Sudan',\n text: translate('Sudan')\n },\n {\n key: 'Suriname',\n text: translate('Suriname')\n },\n {\n key: 'Svalbard',\n text: translate('Svalbard')\n },\n {\n key: 'Swaziland',\n text: translate('Swaziland')\n },\n {\n key: 'Sweden',\n text: translate('Sweden')\n },\n {\n key: 'Switzerland',\n text: translate('Switzerland')\n },\n {\n key: 'Syria',\n text: translate('Syria')\n },\n {\n key: 'Taiwan',\n text: translate('Taiwan')\n },\n {\n key: 'Tajikistan',\n text: translate('Tajikistan')\n },\n {\n key: 'Tanzania',\n text: translate('Tanzania')\n },\n {\n key: 'Thailand',\n text: translate('Thailand')\n },\n {\n key: 'Timor-Leste',\n text: translate('Timor-Leste')\n },\n {\n key: 'Togo',\n text: translate('Togo')\n },\n {\n key: 'Tokelau',\n text: translate('Tokelau')\n },\n {\n key: 'Tonga',\n text: translate('Tonga')\n },\n {\n key: 'Transnistria Pridnestrovie',\n text: translate('Transnistria Pridnestrovie')\n },\n {\n key: 'Trinidad and Tobago',\n text: translate('Trinidad and Tobago')\n },\n {\n key: 'Tristan da Cunha',\n text: translate('Tristan da Cunha')\n },\n {\n key: 'Tunisia',\n text: translate('Tunisia')\n },\n {\n key: 'Turkey',\n text: translate('Turkey')\n },\n {\n key: 'Turkmenistan',\n text: translate('Turkmenistan')\n },\n {\n key: 'Turks and Caicos Islands',\n text: translate('Turks and Caicos Islands')\n },\n {\n key: 'Tuvalu',\n text: translate('Tuvalu')\n },\n {\n key: 'Uganda',\n text: translate('Uganda')\n },\n {\n key: 'Ukraine',\n text: translate('Ukraine')\n },\n {\n key: 'United Arab Emirates',\n text: translate('United Arab Emirates')\n },\n {\n key: 'United Kingdom',\n text: translate('United Kingdom')\n },\n {\n key: 'Uruguay',\n text: translate('Uruguay')\n },\n {\n key: 'Uzbekistan',\n text: translate('Uzbekistan')\n },\n {\n key: 'Vanuatu',\n text: translate('Vanuatu')\n },\n {\n key: 'Vatican City',\n text: translate('Vatican City')\n },\n {\n key: 'Venezuela',\n text: translate('Venezuela')\n },\n {\n key: 'Vietnam',\n text: translate('Vietnam')\n },\n {\n key: 'British Virgin Islands',\n text: translate('British Virgin Islands')\n },\n {\n key: 'Isle of Man',\n text: translate('Isle of Man')\n },\n {\n key: 'US Virgin Islands',\n text: translate('US Virgin Islands')\n },\n {\n key: 'Wallis and Futuna',\n text: translate('Wallis and Futuna')\n },\n {\n key: 'Western Sahara',\n text: translate('Western Sahara')\n },\n {\n key: 'Yemen',\n text: translate('Yemen')\n },\n {\n key: 'Zambia',\n text: translate('Zambia')\n },\n {\n key: 'Zimbabwe',\n text: translate('Zimbabwe')\n }\n\n];\n\nexport const CanadianProvinces = [\n {\n key: 'none',\n text: translate('Select option')\n },\n {\n key: 'Alberta',\n text: translate('Alberta')\n },\n {\n key: 'British Columbia',\n text: translate('British Columbia')\n },\n {\n key: 'Manitoba',\n text: translate('Manitoba')\n },\n {\n key: 'New Brunswick',\n text: translate('New Brunswick')\n },\n {\n key: 'Newfoundland',\n text: translate('Newfoundland')\n },\n {\n key: 'Northwest Territories',\n text: translate('Northwest Territories')\n },\n {\n key: 'Nova Scotia',\n text: translate('Nova Scotia')\n },\n {\n key: 'Nunavut',\n text: translate('Nunavut')\n },\n {\n key: 'Ontario',\n text: translate('Ontario')\n },\n {\n key: 'Prince Edward Island',\n text: translate('Prince Edward Island')\n },\n {\n key: 'Quebec',\n text: translate('Quebec')\n },\n {\n key: 'Saskatchewan',\n text: translate('Saskatchewan')\n },\n {\n key: 'Yukon',\n text: translate('Yukon')\n }\n\n];\n\nexport const GenderList = [\n {\n key: 'none',\n text: translate('Select option')\n },\n {\n key: 'Male',\n text: translate('Male')\n },\n {\n key: 'Female',\n text: translate('Female')\n },\n {\n key: 'N/A',\n text: translate('N/A')\n }\n\n];\n\nexport const UsStates = [\n {\n key: 'none',\n text: translate('Select option')\n },\n {\n key: 'Alabama',\n text: translate('Alabama')\n },\n {\n key: 'Alaska',\n text: translate('Alaska')\n },\n {\n key: 'Arizona',\n text: translate('Arizona')\n },\n {\n key: 'Arkansas',\n text: translate('Arkansas')\n },\n {\n key: 'California',\n text: translate('California')\n },\n {\n key: 'Colorado',\n text: translate('Colorado')\n },\n {\n key: 'Connecticut',\n text: translate('Connecticut')\n },\n {\n key: 'Delaware',\n text: translate('Delaware')\n },\n {\n key: 'District of Columbia',\n text: translate('District of Columbia')\n },\n {\n key: 'Florida',\n text: translate('Florida')\n },\n {\n key: 'Georgia',\n text: translate('Georgia')\n },\n {\n key: 'Hawaii',\n text: translate('Hawaii')\n },\n {\n key: 'Idaho',\n text: translate('Idaho')\n },\n {\n key: 'Illinois',\n text: translate('Illinois')\n },\n {\n key: 'Indiana',\n text: translate('Indiana')\n },\n {\n key: 'Iowa',\n text: translate('Iowa')\n },\n {\n key: 'Kansas',\n text: translate('Kansas')\n },\n {\n key: 'Kentucky',\n text: translate('Kentucky')\n },\n {\n key: 'Louisiana',\n text: translate('Louisiana')\n },\n {\n key: 'Maine',\n text: translate('Maine')\n },\n {\n key: 'Maryland',\n text: translate('Maryland')\n },\n {\n key: 'Massachusetts',\n text: translate('Massachusetts')\n },\n {\n key: 'Michigan',\n text: translate('Michigan')\n },\n {\n key: 'Minnesota',\n text: translate('Minnesota')\n },\n {\n key: 'Mississippi',\n text: translate('Mississippi')\n },\n {\n key: 'Missouri',\n text: translate('Missouri')\n },\n {\n key: 'Montana',\n text: translate('Montana')\n },\n {\n key: 'Nebraska',\n text: translate('Nebraska')\n },\n {\n key: 'Nevada',\n text: translate('Nevada')\n },\n {\n key: 'New Hampshire',\n text: translate('New Hampshire')\n },\n {\n key: 'New Jersey',\n text: translate('New Jersey')\n },\n {\n key: 'New Mexico',\n text: translate('New Mexico')\n },\n {\n key: 'New York',\n text: translate('New York')\n },\n {\n key: 'North Carolina',\n text: translate('North Carolina')\n },\n {\n key: 'North Dakota',\n text: translate('North Dakota')\n },\n {\n key: 'Ohio',\n text: translate('Ohio')\n },\n {\n key: 'Oklahoma',\n text: translate('Oklahoma')\n },\n {\n key: 'Oregon',\n text: translate('Oregon')\n },\n {\n key: 'Pennsylvania',\n text: translate('Pennsylvania')\n },\n {\n key: 'Puerto Rico',\n text: translate('Puerto Rico')\n },\n {\n key: 'Rhode Island',\n text: translate('Rhode Island')\n },\n {\n key: 'South Carolina',\n text: translate('South Carolina')\n },\n {\n key: 'South Dakota',\n text: translate('South Dakota')\n },\n {\n key: 'Tennessee',\n text: translate('Tennessee')\n },\n {\n key: 'Texas',\n text: translate('Texas')\n },\n {\n key: 'Utah',\n text: translate('Utah')\n },\n {\n key: 'Vermont',\n text: translate('Vermont')\n },\n {\n key: 'Virgin Islands',\n text: translate('Virgin Islands')\n },\n {\n key: 'Virginia',\n text: translate('Virginia')\n },\n {\n key: 'Washington',\n text: translate('Washington')\n },\n {\n key: 'West Virginia',\n text: translate('West Virginia')\n },\n {\n key: 'Wisconsin',\n text: translate('Wisconsin')\n },\n {\n key: 'Wyoming',\n text: translate('Wyoming')\n }\n\n];\n\nexport const UsStatesAbr = [\n {\n key: 'none',\n text: translate('Select option')\n },\n {\n key: 'AL',\n text: translate('AL')\n },\n {\n key: 'AK',\n text: translate('AK')\n },\n {\n key: 'AR',\n text: translate('AR')\n },\n {\n key: 'AZ',\n text: translate('AZ')\n },\n {\n key: 'CA',\n text: translate('CA')\n },\n {\n key: 'CO',\n text: translate('CO')\n },\n {\n key: 'CT',\n text: translate('CT')\n },\n {\n key: 'DC',\n text: translate('DC')\n },\n {\n key: 'DE',\n text: translate('DE')\n },\n {\n key: 'FL',\n text: translate('FL')\n },\n {\n key: 'GA',\n text: translate('GA')\n },\n {\n key: 'HI',\n text: translate('HI')\n },\n {\n key: 'ID',\n text: translate('ID')\n },\n {\n key: 'IL',\n text: translate('IL')\n },\n {\n key: 'IN',\n text: translate('IN')\n },\n {\n key: 'IA',\n text: translate('IA')\n },\n {\n key: 'KS',\n text: translate('KS')\n },\n {\n key: 'KY',\n text: translate('KY')\n },\n {\n key: 'LA',\n text: translate('LA')\n },\n {\n key: 'ME',\n text: translate('ME')\n },\n {\n key: 'MD',\n text: translate('MD')\n },\n {\n key: 'MA',\n text: translate('MA')\n },\n {\n key: 'MI',\n text: translate('MI')\n },\n {\n key: 'MN',\n text: translate('MN')\n },\n {\n key: 'MS',\n text: translate('MS')\n },\n {\n key: 'MO',\n text: translate('MO')\n },\n {\n key: 'MT',\n text: translate('MT')\n },\n {\n key: 'NE',\n text: translate('NE')\n },\n {\n key: 'NV',\n text: translate('NV')\n },\n {\n key: 'NH',\n text: translate('NH')\n },\n {\n key: 'NJ',\n text: translate('NJ')\n },\n {\n key: 'NM',\n text: translate('NM')\n },\n {\n key: 'NY',\n text: translate('NY')\n },\n {\n key: 'NC',\n text: translate('NC')\n },\n {\n key: 'ND',\n text: translate('ND')\n },\n {\n key: 'OH',\n text: translate('OH')\n },\n {\n key: 'OK',\n text: translate('OK')\n },\n {\n key: 'OR',\n text: translate('OR')\n },\n {\n key: 'PA',\n text: translate('PA')\n },\n {\n key: 'RI',\n text: translate('RI')\n },\n {\n key: 'SC',\n text: translate('SC')\n },\n {\n key: 'SD',\n text: translate('SD')\n },\n {\n key: 'TN',\n text: translate('TN')\n },\n {\n key: 'TX',\n text: translate('TX')\n },\n {\n key: 'UT',\n text: translate('UT')\n },\n {\n key: 'VT',\n text: translate('VT')\n },\n {\n key: 'VA',\n text: translate('VA')\n },\n {\n key: 'WA',\n text: translate('WA')\n },\n {\n key: 'WV',\n text: translate('WV')\n },\n {\n key: 'WI',\n text: translate('WI')\n },\n {\n key: 'WY',\n text: translate('WY')\n }\n\n];\n\nexport const LocationCountries = [\n {\n key: 'none',\n text: translate('Select option')\n },\n {\n key: 'Canada',\n text: translate('Canada')\n },\n {\n key: 'United States',\n text: translate('United States')\n },\n {\n key: 'Afghanistan',\n text: translate('Afghanistan')\n },\n {\n key: 'Albania',\n text: translate('Albania')\n },\n {\n key: 'Algeria',\n text: translate('Algeria')\n },\n {\n key: 'American Samoa',\n text: translate('American Samoa')\n },\n {\n key: 'Andorra',\n text: translate('Andorra')\n },\n {\n key: 'Angola',\n text: translate('Angola')\n },\n {\n key: 'Anguilla',\n text: translate('Anguilla')\n },\n {\n key: 'Antarctica',\n text: translate('Antarctica')\n },\n {\n key: 'Antigua and Barbuda',\n text: translate('Antigua and Barbuda')\n },\n {\n key: 'Argentina',\n text: translate('Argentina')\n },\n {\n key: 'Armenia',\n text: translate('Armenia')\n },\n {\n key: 'Aruba',\n text: translate('Aruba')\n },\n {\n key: 'Australia',\n text: translate('Australia')\n },\n {\n key: 'Austria',\n text: translate('Austria')\n },\n {\n key: 'Azerbaijan',\n text: translate('Azerbaijan')\n },\n {\n key: 'Bahamas',\n text: translate('Bahamas')\n },\n {\n key: 'Bahrain',\n text: translate('Bahrain')\n },\n {\n key: 'Bangladesh',\n text: translate('Bangladesh')\n },\n {\n key: 'Barbados',\n text: translate('Barbados')\n },\n {\n key: 'Belarus',\n text: translate('Belarus')\n },\n {\n key: 'Belgium',\n text: translate('Belgium')\n },\n {\n key: 'Belize',\n text: translate('Belize')\n },\n {\n key: 'Benin',\n text: translate('Benin')\n },\n {\n key: 'Bermuda',\n text: translate('Bermuda')\n },\n {\n key: 'Bhutan',\n text: translate('Bhutan')\n },\n {\n key: 'Bolivia',\n text: translate('Bolivia')\n },\n {\n key: 'Bosnia\\/Herzegowina',\n text: translate('Bosnia\\/Herzegowina')\n },\n {\n key: 'Botswana',\n text: translate('Botswana')\n },\n {\n key: 'Bouvet Island',\n text: translate('Bouvet Island')\n },\n {\n key: 'Brazil',\n text: translate('Brazil')\n },\n {\n key: 'British Ind. Ocean',\n text: translate('British Ind. Ocean')\n },\n {\n key: 'Brunei Darussalam',\n text: translate('Brunei Darussalam')\n },\n {\n key: 'Bulgaria',\n text: translate('Bulgaria')\n },\n {\n key: 'Burkina Faso',\n text: translate('Burkina Faso')\n },\n {\n key: 'Burundi',\n text: translate('Burundi')\n },\n {\n key: 'Cambodia',\n text: translate('Cambodia')\n },\n {\n key: 'Cameroon',\n text: translate('Cameroon')\n },\n {\n key: 'Cape Verde',\n text: translate('Cape Verde')\n },\n {\n key: 'Cayman Islands',\n text: translate('Cayman Islands')\n },\n {\n key: 'Central African Rep.',\n text: translate('Central African Rep.')\n },\n {\n key: 'Chad',\n text: translate('Chad')\n },\n {\n key: 'Chile',\n text: translate('Chile')\n },\n {\n key: 'China',\n text: translate('China')\n },\n {\n key: 'Christmas Island',\n text: translate('Christmas Island')\n },\n {\n key: 'Cocoa (Keeling) Is.',\n text: translate('Cocoa (Keeling) Is.')\n },\n {\n key: 'Colombia',\n text: translate('Colombia')\n },\n {\n key: 'Comoros',\n text: translate('Comoros')\n },\n {\n key: 'Congo',\n text: translate('Congo')\n },\n {\n key: 'Cook Islands',\n text: translate('Cook Islands')\n },\n {\n key: 'Costa Rica',\n text: translate('Costa Rica')\n },\n {\n key: 'Cote Divoire',\n text: translate('Cote Divoire')\n },\n {\n key: 'Croatia',\n text: translate('Croatia')\n },\n {\n key: 'Cuba',\n text: translate('Cuba')\n },\n {\n key: 'Curacao',\n text: translate('Curacao')\n },\n {\n key: 'Cyprus',\n text: translate('Cyprus')\n },\n {\n key: 'Czech Republic',\n text: translate('Czech Republic')\n },\n {\n key: 'Democratic Republic of the Congo',\n text: translate('Democratic Republic of the Congo')\n },\n {\n key: 'Denmark',\n text: translate('Denmark')\n },\n {\n key: 'Djibouti',\n text: translate('Djibouti')\n },\n {\n key: 'Dominica',\n text: translate('Dominica')\n },\n {\n key: 'Dominican Republic',\n text: translate('Dominican Republic')\n },\n {\n key: 'East Timor',\n text: translate('East Timor')\n },\n {\n key: 'Ecuador',\n text: translate('Ecuador')\n },\n {\n key: 'Egypt',\n text: translate('Egypt')\n },\n {\n key: 'El Salvador',\n text: translate('El Salvador')\n },\n {\n key: 'Equatorial Guinea',\n text: translate('Equatorial Guinea')\n },\n {\n key: 'Eritrea',\n text: translate('Eritrea')\n },\n {\n key: 'Estonia',\n text: translate('Estonia')\n },\n {\n key: 'Ethiopia',\n text: translate('Ethiopia')\n },\n {\n key: 'Falkland Islands',\n text: translate('Falkland Islands')\n },\n {\n key: 'Faroe Islands',\n text: translate('Faroe Islands')\n },\n {\n key: 'Fiji',\n text: translate('Fiji')\n },\n {\n key: 'Finland',\n text: translate('Finland')\n },\n {\n key: 'France',\n text: translate('France')\n },\n {\n key: 'Gabon',\n text: translate('Gabon')\n },\n {\n key: 'Gambia',\n text: translate('Gambia')\n },\n {\n key: 'Georgia',\n text: translate('Georgia')\n },\n {\n key: 'Germany',\n text: translate('Germany')\n },\n {\n key: 'Ghana',\n text: translate('Ghana')\n },\n {\n key: 'Gibraltar',\n text: translate('Gibraltar')\n },\n {\n key: 'Greece',\n text: translate('Greece')\n },\n {\n key: 'Greenland',\n text: translate('Greenland')\n },\n {\n key: 'Grenada',\n text: translate('Grenada')\n },\n {\n key: 'Guadeloupe',\n text: translate('Guadeloupe')\n },\n {\n key: 'Guam',\n text: translate('Guam')\n },\n {\n key: 'Guatemala',\n text: translate('Guatemala')\n },\n {\n key: 'Guinea',\n text: translate('Guinea')\n },\n {\n key: 'Guinea-Bissau',\n text: translate('Guinea-Bissau')\n },\n {\n key: 'Guyana',\n text: translate('Guyana')\n },\n {\n key: 'Haiti',\n text: translate('Haiti')\n },\n {\n key: 'Honduras',\n text: translate('Honduras')\n },\n {\n key: 'Hong Kong',\n text: translate('Hong Kong')\n },\n {\n key: 'Hungary',\n text: translate('Hungary')\n },\n {\n key: 'Iceland',\n text: translate('Iceland')\n },\n {\n key: 'India',\n text: translate('India')\n },\n {\n key: 'Indonesia',\n text: translate('Indonesia')\n },\n {\n key: 'Iran',\n text: translate('Iran')\n },\n {\n key: 'Iraq',\n text: translate('Iraq')\n },\n {\n key: 'Ireland',\n text: translate('Ireland')\n },\n {\n key: 'Israel',\n text: translate('Israel')\n },\n {\n key: 'Italy',\n text: translate('Italy')\n },\n {\n key: 'Jamaica',\n text: translate('Jamaica')\n },\n {\n key: 'Japan',\n text: translate('Japan')\n },\n {\n key: 'Jordan',\n text: translate('Jordan')\n },\n {\n key: 'Kazakhstan',\n text: translate('Kazakhstan')\n },\n {\n key: 'Kenya',\n text: translate('Kenya')\n },\n {\n key: 'Kiribati',\n text: translate('Kiribati')\n },\n {\n key: 'Korea',\n text: translate('Korea')\n },\n {\n key: 'Kuwait',\n text: translate('Kuwait')\n },\n {\n key: 'Kyrgyzstan',\n text: translate('Kyrgyzstan')\n },\n {\n key: 'Lao',\n text: translate('Lao')\n },\n {\n key: 'Latvia',\n text: translate('Latvia')\n },\n {\n key: 'Lebanon',\n text: translate('Lebanon')\n },\n {\n key: 'Lesotho',\n text: translate('Lesotho')\n },\n {\n key: 'Liberia',\n text: translate('Liberia')\n },\n {\n key: 'Liechtenstein',\n text: translate('Liechtenstein')\n },\n {\n key: 'Lithuania',\n text: translate('Lithuania')\n },\n {\n key: 'Luxembourg',\n text: translate('Luxembourg')\n },\n {\n key: 'Macau',\n text: translate('Macau')\n },\n {\n key: 'Macedonia',\n text: translate('Macedonia')\n },\n {\n key: 'Madagascar',\n text: translate('Madagascar')\n },\n {\n key: 'Malawi',\n text: translate('Malawi')\n },\n {\n key: 'Malaysia',\n text: translate('Malaysia')\n },\n {\n key: 'Maldives',\n text: translate('Maldives')\n },\n {\n key: 'Mali',\n text: translate('Mali')\n },\n {\n key: 'Malta',\n text: translate('Malta')\n },\n {\n key: 'Marshall Islands',\n text: translate('Marshall Islands')\n },\n {\n key: 'Martinique',\n text: translate('Martinique')\n },\n {\n key: 'Mauritania',\n text: translate('Mauritania')\n },\n {\n key: 'Mauritius',\n text: translate('Mauritius')\n },\n {\n key: 'Mayotte',\n text: translate('Mayotte')\n },\n {\n key: 'Mexico',\n text: translate('Mexico')\n },\n {\n key: 'Micronesia',\n text: translate('Micronesia')\n },\n {\n key: 'Moldova',\n text: translate('Moldova')\n },\n {\n key: 'Monaco',\n text: translate('Monaco')\n },\n {\n key: 'Mongolia',\n text: translate('Mongolia')\n },\n {\n key: 'Montserrat',\n text: translate('Montserrat')\n },\n {\n key: 'Morocco',\n text: translate('Morocco')\n },\n {\n key: 'Mozambique',\n text: translate('Mozambique')\n },\n {\n key: 'Myanmar',\n text: translate('Myanmar')\n },\n {\n key: 'Namibia',\n text: translate('Namibia')\n },\n {\n key: 'Nauru',\n text: translate('Nauru')\n },\n {\n key: 'Nepal',\n text: translate('Nepal')\n },\n {\n key: 'Netherlands',\n text: translate('Netherlands')\n },\n {\n key: 'New Caledonia',\n text: translate('New Caledonia')\n },\n {\n key: 'New Zealand',\n text: translate('New Zealand')\n },\n {\n key: 'Nicaragua',\n text: translate('Nicaragua')\n },\n {\n key: 'Niger',\n text: translate('Niger')\n },\n {\n key: 'Nigeria',\n text: translate('Nigeria')\n },\n {\n key: 'Niue',\n text: translate('Niue')\n },\n {\n key: 'Norfolk Island',\n text: translate('Norfolk Island')\n },\n {\n key: 'Norway',\n text: translate('Norway')\n },\n {\n key: 'Oman',\n text: translate('Oman')\n },\n {\n key: 'Pakistan',\n text: translate('Pakistan')\n },\n {\n key: 'Palau',\n text: translate('Palau')\n },\n {\n key: 'Panama',\n text: translate('Panama')\n },\n {\n key: 'Papua New Guinea',\n text: translate('Papua New Guinea')\n },\n {\n key: 'Paraguay',\n text: translate('Paraguay')\n },\n {\n key: 'Peru',\n text: translate('Peru')\n },\n {\n key: 'Philippines',\n text: translate('Philippines')\n },\n {\n key: 'Pitcairn',\n text: translate('Pitcairn')\n },\n {\n key: 'Poland',\n text: translate('Poland')\n },\n {\n key: 'Portugal',\n text: translate('Portugal')\n },\n {\n key: 'Puerto Rico',\n text: translate('Puerto Rico')\n },\n {\n key: 'Qatar',\n text: translate('Qatar')\n },\n {\n key: 'Republic of the Congo',\n text: translate('Republic of the Congo')\n },\n {\n key: 'Reunion',\n text: translate('Reunion')\n },\n {\n key: 'Romania',\n text: translate('Romania')\n },\n {\n key: 'Russia',\n text: translate('Russia')\n },\n {\n key: 'Rwanda',\n text: translate('Rwanda')\n },\n {\n key: 'Saint Lucia',\n text: translate('Saint Lucia')\n },\n {\n key: 'Samoa',\n text: translate('Samoa')\n },\n {\n key: 'San Marino',\n text: translate('San Marino')\n },\n {\n key: 'Saudi Arabia',\n text: translate('Saudi Arabia')\n },\n {\n key: 'Senegal',\n text: translate('Senegal')\n },\n {\n key: 'Seychelles',\n text: translate('Seychelles')\n },\n {\n key: 'Sierra Leone',\n text: translate('Sierra Leone')\n },\n {\n key: 'Singapore',\n text: translate('Singapore')\n },\n {\n key: 'Slovakia',\n text: translate('Slovakia')\n },\n {\n key: 'Solomon Islands',\n text: translate('Solomon Islands')\n },\n {\n key: 'Somalia',\n text: translate('Somalia')\n },\n {\n key: 'South Africa',\n text: translate('South Africa')\n },\n {\n key: 'South Sudan',\n text: translate('South Sudan')\n },\n {\n key: 'Spain',\n text: translate('Spain')\n },\n {\n key: 'Sri Lanka',\n text: translate('Sri Lanka')\n },\n {\n key: 'St. Helena',\n text: translate('St. Helena')\n },\n {\n key: 'Sudan',\n text: translate('Sudan')\n },\n {\n key: 'Suriname',\n text: translate('Suriname')\n },\n {\n key: 'Swaziland',\n text: translate('Swaziland')\n },\n {\n key: 'Sweden',\n text: translate('Sweden')\n },\n {\n key: 'Switzerland',\n text: translate('Switzerland')\n },\n {\n key: 'Syria',\n text: translate('Syria')\n },\n {\n key: 'Taiwan',\n text: translate('Taiwan')\n },\n {\n key: 'Tajikistan',\n text: translate('Tajikistan')\n },\n {\n key: 'Tanzania',\n text: translate('Tanzania')\n },\n {\n key: 'Thailand',\n text: translate('Thailand')\n },\n {\n key: 'Togo',\n text: translate('Togo')\n },\n {\n key: 'Tokelau',\n text: translate('Tokelau')\n },\n {\n key: 'Tonga',\n text: translate('Tonga')\n },\n {\n key: 'Trinidad and Tobago',\n text: translate('Trinidad and Tobago')\n },\n {\n key: 'Tunisia',\n text: translate('Tunisia')\n },\n {\n key: 'Turkey',\n text: translate('Turkey')\n },\n {\n key: 'Turkmenistan',\n text: translate('Turkmenistan')\n },\n {\n key: 'Tuvalu',\n text: translate('Tuvalu')\n },\n {\n key: 'Uganda',\n text: translate('Uganda')\n },\n {\n key: 'Ukraine',\n text: translate('Ukraine')\n },\n {\n key: 'United Arab Emirates',\n text: translate('United Arab Emirates')\n },\n {\n key: 'United Kingdom',\n text: translate('United Kingdom')\n },\n {\n key: 'Uruguay',\n text: translate('Uruguay')\n },\n {\n key: 'Uzbekistan',\n text: translate('Uzbekistan')\n },\n {\n key: 'Vanuatu',\n text: translate('Vanuatu')\n },\n {\n key: 'Vatican',\n text: translate('Vatican')\n },\n {\n key: 'Venezuela',\n text: translate('Venezuela')\n },\n {\n key: 'Viet Nam',\n text: translate('Viet Nam')\n },\n {\n key: 'Virgin Islands',\n text: translate('Virgin Islands')\n },\n {\n key: 'Western Sahara',\n text: translate('Western Sahara')\n },\n {\n key: 'Yeman',\n text: translate('Yeman')\n },\n {\n key: 'Yugoslavia',\n text: translate('Yugoslavia')\n },\n {\n key: 'Zaire',\n text: translate('Zaire')\n },\n {\n key: 'Zambia',\n text: translate('Zambia')\n }\n\n];\n\nexport const Days = [\n {\n key: 'none',\n text: translate('Select option')\n },\n {\n key: 'Monday',\n text: translate('Monday')\n },\n {\n key: 'Tuesday',\n text: translate('Tuesday')\n },\n {\n key: 'Wednesday',\n text: translate('Wednesday')\n },\n {\n key: 'Thursday',\n text: translate('Thursday')\n },\n {\n key: 'Friday',\n text: translate('Friday')\n },\n {\n key: 'Saturday',\n text: translate('Saturday')\n },\n {\n key: 'Sunday',\n text: translate('Sunday')\n }\n\n];\n\nexport const Months = [\n {\n key: 'none',\n text: translate('Select option')\n },\n {\n key: 'January',\n text: translate('January')\n },\n {\n key: 'February',\n text: translate('February')\n },\n {\n key: 'March',\n text: translate('March')\n },\n {\n key: 'April',\n text: translate('April')\n },\n {\n key: 'May',\n text: translate('May')\n },\n {\n key: 'June',\n text: translate('June')\n },\n {\n key: 'July',\n text: translate('July')\n },\n {\n key: 'August',\n text: translate('August')\n },\n {\n key: 'September',\n text: translate('September')\n },\n {\n key: 'October',\n text: translate('October')\n },\n {\n key: 'November',\n text: translate('November')\n },\n {\n key: 'December',\n text: translate('December')\n }\n\n];\nexport const TimeZones = [\n {\n key: 'none',\n text: translate('Select option')\n },\n {\n key: '[[Africa]]',\n text: translate('[[Africa]]')\n },\n {\n key: 'Abidjan (GMT)',\n text: `${translate('Abidjan')} (GMT)`\n },\n {\n key: 'Accra (GMT)',\n text: `${translate('Accra')} (GMT)`\n },\n {\n key: 'Addis Ababa (GMT+03:00)',\n text: `${translate('Addis Ababa')} (GMT+03:00)`\n },\n {\n key: 'Algiers (GMT+01:00)',\n text: `${translate('Algiers')} (GMT+01:00)`\n },\n {\n key: 'Asmara (GMT+03:00)',\n text: `${translate('Asmara')} (GMT+03:00)`\n },\n {\n key: 'Bamako (GMT)',\n text: `${translate('Bamako')} (GMT)`\n },\n {\n key: 'Bangui (GMT+01:00)',\n text: `${translate('Bangui')} (GMT+01:00)`\n },\n {\n key: 'Banjul (GMT)',\n text: `${translate('Banjul')} (GMT)`\n },\n {\n key: 'Bissau (GMT)',\n text: `${translate('Bissau')} (GMT)`\n },\n {\n key: 'Blantyre (GMT+02:00)',\n text: `${translate('Blantyre')} (GMT+02:00)`\n },\n {\n key: 'Brazzaville (GMT+01:00)',\n text: `${translate('Brazzaville')} (GMT+01:00)`\n },\n {\n key: 'Bujumbura (GMT+02:00)',\n text: `${translate('Bujumbura')} (GMT+02:00)`\n },\n {\n key: 'Cairo (GMT+03:00)',\n text: `${translate('Cairo')} (GMT+03:00)`\n },\n {\n key: 'Casablanca (GMT)',\n text: `${translate('Casablanca')} (GMT)`\n },\n {\n key: 'Ceuta (GMT+02:00)',\n text: `${translate('Ceuta')} (GMT+02:00)`\n },\n {\n key: 'Conakry (GMT)',\n text: `${translate('Conakry')} (GMT)`\n },\n {\n key: 'Dakar (GMT)',\n text: `${translate('Dakar')} (GMT)`\n },\n {\n key: 'Dar es Salaam (GMT+03:00)',\n text: `${translate('Dar es Salaam')} (GMT+03:00)`\n },\n {\n key: 'Djibouti (GMT+03:00)',\n text: `${translate('Djibouti')} (GMT+03:00)`\n },\n {\n key: 'Douala (GMT+01:00)',\n text: `${translate('Douala')} (GMT+01:00)`\n },\n {\n key: 'El Aaiun (GMT)',\n text: `${translate('El Aaiun')} (GMT)`\n },\n {\n key: 'Freetown (GMT)',\n text: `${translate('Freetown')} (GMT)`\n },\n {\n key: 'Gaborone (GMT+02:00)',\n text: `${translate('Gaborone')} (GMT+02:00)`\n },\n {\n key: 'Harare (GMT+02:00)',\n text: `${translate('Harare')} (GMT+02:00)`\n },\n {\n key: 'Johannesburg (GMT+02:00)',\n text: `${translate('Johannesburg')} (GMT+02:00)`\n },\n {\n key: 'Kampala (GMT+03:00)',\n text: `${translate('Kampala')} (GMT+03:00)`\n },\n {\n key: 'Khartoum (GMT+03:00)',\n text: `${translate('Khartoum')} (GMT+03:00)`\n },\n {\n key: 'Kigali (GMT+02:00)',\n text: `${translate('Kigali')} (GMT+02:00)`\n },\n {\n key: 'Kinshasa (GMT+01:00)',\n text: `${translate('Kinshasa')} (GMT+01:00)`\n },\n {\n key: 'Lagos (GMT+01:00)',\n text: `${translate('Lagos')} (GMT+01:00)`\n },\n {\n key: 'Libreville (GMT+01:00)',\n text: `${translate('Libreville')} (GMT+01:00)`\n },\n {\n key: 'Lome (GMT)',\n text: `${translate('Lome')} (GMT)`\n },\n {\n key: 'Luanda (GMT+01:00)',\n text: `${translate('Luanda')} (GMT+01:00)`\n },\n {\n key: 'Lubumbashi (GMT+02:00)',\n text: `${translate('Lubumbashi')} (GMT+02:00)`\n },\n {\n key: 'Lusaka (GMT+02:00)',\n text: `${translate('Lusaka')} (GMT+02:00)`\n },\n {\n key: 'Malabo (GMT+01:00)',\n text: `${translate('Malabo')} (GMT+01:00)`\n },\n {\n key: 'Maputo (GMT+02:00)',\n text: `${translate('Maputo')} (GMT+02:00)`\n },\n {\n key: 'Maseru (GMT+02:00)',\n text: `${translate('Maseru')} (GMT+02:00)`\n },\n {\n key: 'Mbabane (GMT+02:00)',\n text: `${translate('Mbabane')} (GMT+02:00)`\n },\n {\n key: 'Mogadishu (GMT+03:00)',\n text: `${translate('Mogadishu')} (GMT+03:00)`\n },\n {\n key: 'Monrovia (GMT)',\n text: `${translate('Monrovia')} (GMT)`\n },\n {\n key: 'Nairobi (GMT+03:00)',\n text: `${translate('Nairobi')} (GMT+03:00)`\n },\n {\n key: 'Ndjamena (GMT+01:00)',\n text: `${translate('Ndjamena')} (GMT+01:00)`\n },\n {\n key: 'Niamey (GMT+01:00)',\n text: `${translate('Niamey')} (GMT+01:00)`\n },\n {\n key: 'Nouakchott (GMT)',\n text: `${translate('Nouakchott')} (GMT)`\n },\n {\n key: 'Ouagadougou (GMT)',\n text: `${translate('Ouagadougou')} (GMT)`\n },\n {\n key: 'Porto-Novo (GMT+01:00)',\n text: `${translate('Porto-Novo')} (GMT+01:00)`\n },\n {\n key: 'Sao Tome (GMT)',\n text: `${translate('Sao Tome')} (GMT)`\n },\n {\n key: 'Tripoli (GMT+02:00)',\n text: `${translate('Tripoli')} (GMT+02:00)`\n },\n {\n key: 'Tunis (GMT+02:00)',\n text: `${translate('Tunis')} (GMT+02:00)`\n },\n {\n key: 'Windhoek (GMT+01:00)',\n text: `${translate('Windhoek')} (GMT+01:00)`\n },\n {\n key: '[[America]]',\n text: translate('[[America]]')\n },\n {\n key: 'Adak (GMT-09:00)',\n text: `${translate('Adak')} (GMT-09:00)`\n },\n {\n key: 'Anchorage (GMT-08:00)',\n text: `${translate('Anchorage')} (GMT-08:00)`\n },\n {\n key: 'Anguilla (GMT-04:00)',\n text: `${translate('Anguilla')} (GMT-04:00)`\n },\n {\n key: 'Antigua (GMT-04:00)',\n text: `${translate('Antigua')} (GMT-04:00)`\n },\n {\n key: 'Araguaina (GMT-03:00)',\n text: `${translate('Araguaina')} (GMT-03:00)`\n },\n {\n key: 'Buenos Aires, Argentina (GMT-03:00)',\n text: `${translate('Buenos Aires, Argentina')} (GMT-03:00)`\n },\n {\n key: 'Catamarca, Argentina (GMT-03:00)',\n text: `${translate('Catamarca, Argentina')} (GMT-03:00)`\n },\n {\n key: 'Cordoba, Argentina (GMT-03:00)',\n text: `${translate('Cordoba, Argentina')} (GMT-03:00)`\n },\n {\n key: 'Jujuy, Argentina (GMT-03:00)',\n text: `${translate('Jujuy, Argentina')} (GMT-03:00)`\n },\n {\n key: 'La Rioja, Argentina (GMT-03:00)',\n text: `${translate('La Rioja, Argentina')} (GMT-03:00)`\n },\n {\n key: 'Mendoza, Argentina (GMT-03:00)',\n text: `${translate('Mendoza, Argentina')} (GMT-03:00)`\n },\n {\n key: 'Rio Gallegos, Argentina (GMT-03:00)',\n text: `${translate('Rio Gallegos, Argentina')} (GMT-03:00)`\n },\n {\n key: 'Salta, Argentina (GMT-03:00)',\n text: `${translate('Salta, Argentina')} (GMT-03:00)`\n },\n {\n key: 'San Juan, Argentina (GMT-03:00)',\n text: `${translate('San Juan, Argentina')} (GMT-03:00)`\n },\n {\n key: 'San Luis, Argentina (GMT-04:00)',\n text: `${translate('San Luis, Argentina')} (GMT-04:00)`\n },\n {\n key: 'Tucuman, Argentina (GMT-03:00)',\n text: `${translate('Tucuman, Argentina')} (GMT-03:00)`\n },\n {\n key: 'Ushuaia, Argentina (GMT-03:00)',\n text: `${translate('Ushuaia, Argentina')} (GMT-03:00)`\n },\n {\n key: 'Aruba (GMT-04:00)',\n text: `${translate('Aruba')} (GMT-04:00)`\n },\n {\n key: 'Asuncion (GMT-04:00)',\n text: `${translate('Asuncion')} (GMT-04:00)`\n },\n {\n key: 'Atikokan (GMT-05:00)',\n text: `${translate('Atikokan')} (GMT-05:00)`\n },\n {\n key: 'Bahia (GMT-03:00)',\n text: `${translate('Bahia')} (GMT-03:00)`\n },\n {\n key: 'Barbados (GMT-04:00)',\n text: `${translate('Barbados')} (GMT-04:00)`\n },\n {\n key: 'Belem (GMT-03:00)',\n text: `${translate('Belem')} (GMT-03:00)`\n },\n {\n key: 'Belize (GMT-06:00)',\n text: `${translate('Belize')} (GMT-06:00)`\n },\n {\n key: 'Blanc-Sablon (GMT-04:00)',\n text: `${translate('Blanc-Sablon')} (GMT-04:00)`\n },\n {\n key: 'Boa Vista (GMT-04:00)',\n text: `${translate('Boa Vista')} (GMT-04:00)`\n },\n {\n key: 'Bogota (GMT-05:00)',\n text: `${translate('Bogota')} (GMT-05:00)`\n },\n {\n key: 'Boise (GMT-06:00)',\n text: `${translate('Boise')} (GMT-06:00)`\n },\n {\n key: 'Cambridge Bay (GMT-06:00)',\n text: `${translate('Cambridge Bay')} (GMT-06:00)`\n },\n {\n key: 'Campo Grande (GMT-04:00)',\n text: `${translate('Campo Grande')} (GMT-04:00)`\n },\n {\n key: 'Cancun (GMT-05:00)',\n text: `${translate('Cancun')} (GMT-05:00)`\n },\n {\n key: 'Caracas (GMT-04:30)',\n text: `${translate('Caracas')} (GMT-04:30)`\n },\n {\n key: 'Cayenne (GMT-03:00)',\n text: `${translate('Cayenne')} (GMT-03:00)`\n },\n {\n key: 'Cayman (GMT-05:00)',\n text: `${translate('Cayman')} (GMT-05:00)`\n },\n {\n key: 'Chicago (GMT-05:00)',\n text: `${translate('Chicago')} (GMT-05:00)`\n },\n {\n key: 'Chihuahua (GMT-06:00)',\n text: `${translate('Chihuahua')} (GMT-06:00)`\n },\n {\n key: 'Costa Rica (GMT-06:00)',\n text: `${translate('Costa Rica')} (GMT-06:00)`\n },\n {\n key: 'Cuiaba (GMT-04:00)',\n text: `${translate('Cuiaba')} (GMT-04:00)`\n },\n {\n key: 'Curacao (GMT-04:00)',\n text: `${translate('Curacao')} (GMT-04:00)`\n },\n {\n key: 'Danmarkshavn (GMT)',\n text: `${translate('Danmarkshavn')} (GMT)`\n },\n {\n key: 'Dawson (GMT-07:00)',\n text: `${translate('Dawson')} (GMT-07:00)`\n },\n {\n key: 'Dawson Creek (GMT-07:00)',\n text: `${translate('Dawson Creek')} (GMT-07:00)`\n },\n {\n key: 'Denver (GMT-06:00)',\n text: `${translate('Denver')} (GMT-06:00)`\n },\n {\n key: 'Detroit (GMT-04:00)',\n text: `${translate('Detroit')} (GMT-04:00)`\n },\n {\n key: 'Dominica (GMT-04:00)',\n text: `${translate('Dominica')} (GMT-04:00)`\n },\n {\n key: 'Edmonton (GMT-06:00)',\n text: `${translate('Edmonton')} (GMT-06:00)`\n },\n {\n key: 'Eirunepe (GMT-04:00)',\n text: `${translate('Eirunepe')} (GMT-04:00)`\n },\n {\n key: 'El Salvador (GMT-06:00)',\n text: `${translate('El Salvador')} (GMT-06:00)`\n },\n {\n key: 'Fortaleza (GMT-03:00)',\n text: `${translate('Fortaleza')} (GMT-03:00)`\n },\n {\n key: 'Glace Bay (GMT-03:00)',\n text: `${translate('Glace Bay')} (GMT-03:00)`\n },\n {\n key: 'Godthab (GMT-02:00)',\n text: `${translate('Godthab')} (GMT-02:00)`\n },\n {\n key: 'Goose Bay (GMT-03:00)',\n text: `${translate('Goose Bay')} (GMT-03:00)`\n },\n {\n key: 'Grand Turk (GMT-04:00)',\n text: `${translate('Grand Turk')} (GMT-04:00)`\n },\n {\n key: 'Grenada (GMT-04:00)',\n text: `${translate('Grenada')} (GMT-04:00)`\n },\n {\n key: 'Guadeloupe (GMT-04:00)',\n text: `${translate('Guadeloupe')} (GMT-04:00)`\n },\n {\n key: 'Guatemala (GMT-06:00)',\n text: `${translate('Guatemala')} (GMT-06:00)`\n },\n {\n key: 'Guayaquil (GMT-05:00)',\n text: `${translate('Guayaquil')} (GMT-05:00)`\n },\n {\n key: 'Guyana (GMT-04:00)',\n text: `${translate('Guyana')} (GMT-04:00)`\n },\n {\n key: 'Halifax (GMT-03:00)',\n text: `${translate('Halifax')} (GMT-03:00)`\n },\n {\n key: 'Havana (GMT-04:00)',\n text: `${translate('Havana')} (GMT-04:00)`\n },\n {\n key: 'Hermosillo (GMT-07:00)',\n text: `${translate('Hermosillo')} (GMT-07:00)`\n },\n {\n key: 'Indianapolis, Indiana (GMT-04:00)',\n text: `${translate('Indianapolis, Indiana')} (GMT-04:00)`\n },\n {\n key: 'Knox, Indiana (GMT-05:00)',\n text: `${translate('Knox, Indiana')} (GMT-05:00)`\n },\n {\n key: 'Marengo, Indiana (GMT-04:00)',\n text: `${translate('Marengo, Indiana')} (GMT-04:00)`\n },\n {\n key: 'Petersburg, Indiana (GMT-04:00)',\n text: `${translate('Petersburg, Indiana')} (GMT-04:00)`\n },\n {\n key: 'Tell City, Indiana (GMT-05:00)',\n text: `${translate('Tell City, Indiana')} (GMT-05:00)`\n },\n {\n key: 'Vevay, Indiana (GMT-04:00)',\n text: `${translate('Vevay, Indiana')} (GMT-04:00)`\n },\n {\n key: 'Vincennes, Indiana (GMT-04:00)',\n text: `${translate('Vincennes, Indiana')} (GMT-04:00)`\n },\n {\n key: 'Winamac, Indiana (GMT-04:00)',\n text: `${translate('Winamac, Indiana')} (GMT-04:00)`\n },\n {\n key: 'Inuvik (GMT-06:00)',\n text: `${translate('Inuvik')} (GMT-06:00)`\n },\n {\n key: 'Iqaluit (GMT-04:00)',\n text: `${translate('Iqaluit')} (GMT-04:00)`\n },\n {\n key: 'Jamaica (GMT-05:00)',\n text: `${translate('Jamaica')} (GMT-05:00)`\n },\n {\n key: 'Juneau (GMT-08:00)',\n text: `${translate('Juneau')} (GMT-08:00)`\n },\n {\n key: 'Louisville, Kentucky (GMT-04:00)',\n text: `${translate('Louisville, Kentucky')} (GMT-04:00)`\n },\n {\n key: 'Monticello, Kentucky (GMT-04:00)',\n text: `${translate('Monticello, Kentucky')} (GMT-04:00)`\n },\n {\n key: 'La Paz (GMT-04:00)',\n text: `${translate('La Paz')} (GMT-04:00)`\n },\n {\n key: 'Lima (GMT-05:00)',\n text: `${translate('Lima')} (GMT-05:00)`\n },\n {\n key: 'Los Angeles (GMT-07:00)',\n text: `${translate('Los Angeles')} (GMT-07:00)`\n },\n {\n key: 'Maceio (GMT-03:00)',\n text: `${translate('Maceio')} (GMT-03:00)`\n },\n {\n key: 'Managua (GMT-06:00)',\n text: `${translate('Managua')} (GMT-06:00)`\n },\n {\n key: 'Manaus (GMT-04:00)',\n text: `${translate('Manaus')} (GMT-04:00)`\n },\n {\n key: 'Marigot (GMT-04:00)',\n text: `${translate('Marigot')} (GMT-04:00)`\n },\n {\n key: 'Martinique (GMT-04:00)',\n text: `${translate('Martinique')} (GMT-04:00)`\n },\n {\n key: 'Mazatlan (GMT-06:00)',\n text: `${translate('Mazatlan')} (GMT-06:00)`\n },\n {\n key: 'Menominee (GMT-05:00)',\n text: `${translate('Menominee')} (GMT-05:00)`\n },\n {\n key: 'Merida (GMT-05:00)',\n text: `${translate('Merida')} (GMT-05:00)`\n },\n {\n key: 'Mexico City (GMT-05:00)',\n text: `${translate('Mexico City')} (GMT-05:00)`\n },\n {\n key: 'Miquelon (GMT-02:00)',\n text: `${translate('Miquelon')} (GMT-02:00)`\n },\n {\n key: 'Moncton (GMT-03:00)',\n text: `${translate('Moncton')} (GMT-03:00)`\n },\n {\n key: 'Monterrey (GMT-05:00)',\n text: `${translate('Monterrey')} (GMT-05:00)`\n },\n {\n key: 'Montevideo (GMT-03:00)',\n text: `${translate('Montevideo')} (GMT-03:00)`\n },\n {\n key: 'Montreal (GMT-04:00)',\n text: `${translate('Montreal')} (GMT-04:00)`\n },\n {\n key: 'Montserrat (GMT-04:00)',\n text: `${translate('Montserrat')} (GMT-04:00)`\n },\n {\n key: 'Nassau (GMT-04:00)',\n text: `${translate('Nassau')} (GMT-04:00)`\n },\n {\n key: 'New York (GMT-04:00)',\n text: `${translate('New York')} (GMT-04:00)`\n },\n {\n key: 'Nipigon (GMT-04:00)',\n text: `${translate('Nipigon')} (GMT-04:00)`\n },\n {\n key: 'Nome (GMT-08:00)',\n text: `${translate('Nome')} (GMT-08:00)`\n },\n {\n key: 'Noronha (GMT-02:00)',\n text: `${translate('Noronha')} (GMT-02:00)`\n },\n {\n key: 'Center, North Dakota (GMT-05:00)',\n text: `${translate('Center, North Dakota')} (GMT-05:00)`\n },\n {\n key: 'New Salem, North Dakota (GMT-05:00)',\n text: `${translate('New Salem, North Dakota')} (GMT-05:00)`\n },\n {\n key: 'Panama (GMT-05:00)',\n text: `${translate('Panama')} (GMT-05:00)`\n },\n {\n key: 'Pangnirtung (GMT-04:00)',\n text: `${translate('Pangnirtung')} (GMT-04:00)`\n },\n {\n key: 'Paramaribo (GMT-03:00)',\n text: `${translate('Paramaribo')} (GMT-03:00)`\n },\n {\n key: 'Phoenix (GMT-07:00)',\n text: `${translate('Phoenix')} (GMT-07:00)`\n },\n {\n key: 'Port-au-Prince (GMT-05:00)',\n text: `${translate('Port-au-Prince')} (GMT-05:00)`\n },\n {\n key: 'Port of Spain (GMT-04:00)',\n text: `${translate('Port of Spain')} (GMT-04:00)`\n },\n {\n key: 'Porto Velho (GMT-04:00)',\n text: `${translate('Porto Velho')} (GMT-04:00)`\n },\n {\n key: 'Puerto Rico (GMT-04:00)',\n text: `${translate('Puerto Rico')} (GMT-04:00)`\n },\n {\n key: 'Rainy River (GMT-05:00)',\n text: `${translate('Rainy River')} (GMT-05:00)`\n },\n {\n key: 'Rankin Inlet (GMT-05:00)',\n text: `${translate('Rankin Inlet')} (GMT-05:00)`\n },\n {\n key: 'Recife (GMT-03:00)',\n text: `${translate('Recife')} (GMT-03:00)`\n },\n {\n key: 'Regina (GMT-06:00)',\n text: `${translate('Regina')} (GMT-06:00)`\n },\n {\n key: 'Resolute (GMT-05:00)',\n text: `${translate('Resolute')} (GMT-05:00)`\n },\n {\n key: 'Rio Branco (GMT-04:00)',\n text: `${translate('Rio Branco')} (GMT-04:00)`\n },\n {\n key: 'Santarem (GMT-03:00)',\n text: `${translate('Santarem')} (GMT-03:00)`\n },\n {\n key: 'Santiago (GMT-04:00)',\n text: `${translate('Santiago')} (GMT-04:00)`\n },\n {\n key: 'Santo Domingo (GMT-04:00)',\n text: `${translate('Santo Domingo')} (GMT-04:00)`\n },\n {\n key: 'Sao Paulo (GMT-03:00)',\n text: `${translate('Sao Paulo')} (GMT-03:00)`\n },\n {\n key: 'Scoresbysund (GMT)',\n text: `${translate('Scoresbysund')} (GMT)`\n },\n {\n key: 'Shiprock (GMT-06:00)',\n text: `${translate('Shiprock')} (GMT-06:00)`\n },\n {\n key: 'St Barthelemy (GMT-04:00)',\n text: `${translate('St Barthelemy')} (GMT-04:00)`\n },\n {\n key: 'St Johns (GMT-02:30)',\n text: `${translate('St Johns')} (GMT-02:30)`\n },\n {\n key: 'St Kitts (GMT-04:00)',\n text: `${translate('St Kitts')} (GMT-04:00)`\n },\n {\n key: 'St Lucia (GMT-04:00)',\n text: `${translate('St Lucia')} (GMT-04:00)`\n },\n {\n key: 'St Thomas (GMT-04:00)',\n text: `${translate('St Thomas')} (GMT-04:00)`\n },\n {\n key: 'St Vincent (GMT-04:00)',\n text: `${translate('St Vincent')} (GMT-04:00)`\n },\n {\n key: 'Swift Current (GMT-06:00)',\n text: `${translate('Swift Current')} (GMT-06:00)`\n },\n {\n key: 'Tegucigalpa (GMT-06:00)',\n text: `${translate('Tegucigalpa')} (GMT-06:00)`\n },\n {\n key: 'Thule (GMT-03:00)',\n text: `${translate('Thule')} (GMT-03:00)`\n },\n {\n key: 'Thunder Bay (GMT-04:00)',\n text: `${translate('Thunder Bay')} (GMT-04:00)`\n },\n {\n key: 'Tijuana (GMT-07:00)',\n text: `${translate('Tijuana')} (GMT-07:00)`\n },\n {\n key: 'Toronto (GMT-04:00)',\n text: `${translate('Toronto')} (GMT-04:00)`\n },\n {\n key: 'Tortola (GMT-04:00)',\n text: `${translate('Tortola')} (GMT-04:00)`\n },\n {\n key: 'Vancouver (GMT-07:00)',\n text: `${translate('Vancouver')} (GMT-07:00)`\n },\n {\n key: 'Whitehorse (GMT-07:00)',\n text: `${translate('Whitehorse')} (GMT-07:00)`\n },\n {\n key: 'Winnipeg (GMT-05:00)',\n text: `${translate('Winnipeg')} (GMT-05:00)`\n },\n {\n key: 'Yakutat (GMT-08:00)',\n text: `${translate('Yakutat')} (GMT-08:00)`\n },\n {\n key: 'Yellowknife (GMT-06:00)',\n text: `${translate('Yellowknife')} (GMT-06:00)`\n },\n {\n key: '[[Antarctica]]',\n text: translate('[[Antarctica]]')\n },\n {\n key: 'Casey (GMT+11:00)',\n text: `${translate('Casey')} (GMT+11:00)`\n },\n {\n key: 'Davis (GMT+05:00)',\n text: `${translate('Davis')} (GMT+05:00)`\n },\n {\n key: 'DumontDUrville (GMT+10:00)',\n text: `${translate('DumontDUrville')} (GMT+10:00)`\n },\n {\n key: 'Mawson (GMT+05:00)',\n text: `${translate('Mawson')} (GMT+05:00)`\n },\n {\n key: 'McMurdo (GMT+12:00)',\n text: `${translate('McMurdo')} (GMT+12:00)`\n },\n {\n key: 'Palmer (GMT-04:00)',\n text: `${translate('Palmer')} (GMT-04:00)`\n },\n {\n key: 'Rothera (GMT-03:00)',\n text: `${translate('Rothera')} (GMT-03:00)`\n },\n {\n key: 'South Pole (GMT+12:00)',\n text: `${translate('South Pole')} (GMT+12:00)`\n },\n {\n key: 'Syowa (GMT+03:00)',\n text: `${translate('Syowa')} (GMT+03:00)`\n },\n {\n key: 'Vostok (GMT+06:00)',\n text: `${translate('Vostok')} (GMT+06:00)`\n },\n {\n key: '[[Arctic]]',\n text: translate('[[Arctic]]')\n },\n {\n key: 'Longyearbyen (GMT+02:00)',\n text: `${translate('Longyearbyen')} (GMT+02:00)`\n },\n {\n key: '[[Asia]]',\n text: translate('[[Asia]]')\n },\n {\n key: 'Aden (GMT+03:00)',\n text: `${translate('Aden')} (GMT+03:00)`\n },\n {\n key: 'Almaty (GMT+06:00)',\n text: `${translate('Almaty')} (GMT+06:00)`\n },\n {\n key: 'Amman (GMT+03:00)',\n text: `${translate('Amman')} (GMT+03:00)`\n },\n {\n key: 'Anadyr (GMT+13:00)',\n text: `${translate('Anadyr')} (GMT+13:00)`\n },\n {\n key: 'Aqtau (GMT+05:00)',\n text: `${translate('Aqtau')} (GMT+05:00)`\n },\n {\n key: 'Aqtobe (GMT+05:00)',\n text: `${translate('Aqtobe')} (GMT+05:00)`\n },\n {\n key: 'Ashgabat (GMT+05:00)',\n text: `${translate('Ashgabat')} (GMT+05:00)`\n },\n {\n key: 'Baghdad (GMT+03:00)',\n text: `${translate('Baghdad')} (GMT+03:00)`\n },\n {\n key: 'Bahrain (GMT+03:00)',\n text: `${translate('Bahrain')} (GMT+03:00)`\n },\n {\n key: 'Baku (GMT+05:00)',\n text: `${translate('Baku')} (GMT+05:00)`\n },\n {\n key: 'Bangkok (GMT+07:00)',\n text: `${translate('Bangkok')} (GMT+07:00)`\n },\n {\n key: 'Beirut (GMT+03:00)',\n text: `${translate('Beirut')} (GMT+03:00)`\n },\n {\n key: 'Bishkek (GMT+06:00)',\n text: `${translate('Bishkek')} (GMT+06:00)`\n },\n {\n key: 'Brunei (GMT+08:00)',\n text: `${translate('Brunei')} (GMT+08:00)`\n },\n {\n key: 'Choibalsan (GMT+08:00)',\n text: `${translate('Choibalsan')} (GMT+08:00)`\n },\n {\n key: 'Chongqing (GMT+08:00)',\n text: `${translate('Chongqing')} (GMT+08:00)`\n },\n {\n key: 'Colombo (GMT+05:30)',\n text: `${translate('Colombo')} (GMT+05:30)`\n },\n {\n key: 'Damascus (GMT+03:00)',\n text: `${translate('Damascus')} (GMT+03:00)`\n },\n {\n key: 'Dhaka (GMT+07:00)',\n text: `${translate('Dhaka')} (GMT+07:00)`\n },\n {\n key: 'Dili (GMT+09:00)',\n text: `${translate('Dili')} (GMT+09:00)`\n },\n {\n key: 'Dubai (GMT+04:00)',\n text: `${translate('Dubai')} (GMT+04:00)`\n },\n {\n key: 'Dushanbe (GMT+05:00)',\n text: `${translate('Dushanbe')} (GMT+05:00)`\n },\n {\n key: 'Gaza (GMT+03:00)',\n text: `${translate('Gaza')} (GMT+03:00)`\n },\n {\n key: 'Harbin (GMT+08:00)',\n text: `${translate('Harbin')} (GMT+08:00)`\n },\n {\n key: 'Ho Chi Minh (GMT+07:00)',\n text: `${translate('Ho Chi Minh')} (GMT+07:00)`\n },\n {\n key: 'Hong Kong (GMT+08:00)',\n text: `${translate('Hong Kong')} (GMT+08:00)`\n },\n {\n key: 'Hovd (GMT+07:00)',\n text: `${translate('Hovd')} (GMT+07:00)`\n },\n {\n key: 'Irkutsk (GMT+09:00)',\n text: `${translate('Irkutsk')} (GMT+09:00)`\n },\n {\n key: 'Jakarta (GMT+07:00)',\n text: `${translate('Jakarta')} (GMT+07:00)`\n },\n {\n key: 'Jayapura (GMT+09:00)',\n text: `${translate('Jayapura')} (GMT+09:00)`\n },\n {\n key: 'Jerusalem (GMT+03:00)',\n text: `${translate('Jerusalem')} (GMT+03:00)`\n },\n {\n key: 'Kabul (GMT+04:30)',\n text: `${translate('Kabul')} (GMT+04:30)`\n },\n {\n key: 'Kamchatka (GMT+13:00)',\n text: `${translate('Kamchatka')} (GMT+13:00)`\n },\n {\n key: 'Karachi (GMT+06:00)',\n text: `${translate('Karachi')} (GMT+06:00)`\n },\n {\n key: 'Kashgar (GMT+08:00)',\n text: `${translate('Kashgar')} (GMT+08:00)`\n },\n {\n key: 'Kathmandu (GMT+05:45)',\n text: `${translate('Kathmandu')} (GMT+05:45)`\n },\n {\n key: 'Kolkata (GMT+05:30)',\n text: `${translate('Kolkata')} (GMT+05:30)`\n },\n {\n key: 'Krasnoyarsk (GMT+08:00)',\n text: `${translate('Krasnoyarsk')} (GMT+08:00)`\n },\n {\n key: 'Kuala Lumpur (GMT+08:00)',\n text: `${translate('Kuala Lumpur')} (GMT+08:00)`\n },\n {\n key: 'Kuching (GMT+08:00)',\n text: `${translate('Kuching')} (GMT+08:00)`\n },\n {\n key: 'Kuwait (GMT+03:00)',\n text: `${translate('Kuwait')} (GMT+03:00)`\n },\n {\n key: 'Macau (GMT+08:00)',\n text: `${translate('Macau')} (GMT+08:00)`\n },\n {\n key: 'Magadan (GMT+12:00)',\n text: `${translate('Magadan')} (GMT+12:00)`\n },\n {\n key: 'Makassar (GMT+08:00)',\n text: `${translate('Makassar')} (GMT+08:00)`\n },\n {\n key: 'Manila (GMT+08:00)',\n text: `${translate('Manila')} (GMT+08:00)`\n },\n {\n key: 'Muscat (GMT+04:00)',\n text: `${translate('Muscat')} (GMT+04:00)`\n },\n {\n key: 'Nicosia (GMT+03:00)',\n text: `${translate('Nicosia')} (GMT+03:00)`\n },\n {\n key: 'Novokuznetsk (GMT+07:00)',\n text: `${translate('Novokuznetsk')} (GMT+07:00)`\n },\n {\n key: 'Novosibirsk (GMT+07:00)',\n text: `${translate('Novosibirsk')} (GMT+07:00)`\n },\n {\n key: 'Omsk (GMT+07:00)',\n text: `${translate('Omsk')} (GMT+07:00)`\n },\n {\n key: 'Oral (GMT+05:00)',\n text: `${translate('Oral')} (GMT+05:00)`\n },\n {\n key: 'Phnom Penh (GMT+07:00)',\n text: `${translate('Phnom Penh')} (GMT+07:00)`\n },\n {\n key: 'Pontianak (GMT+07:00)',\n text: `${translate('Pontianak')} (GMT+07:00)`\n },\n {\n key: 'Pyongyang (GMT+09:00)',\n text: `${translate('Pyongyang')} (GMT+09:00)`\n },\n {\n key: 'Qatar (GMT+03:00)',\n text: `${translate('Qatar')} (GMT+03:00)`\n },\n {\n key: 'Qyzylorda (GMT+06:00)',\n text: `${translate('Qyzylorda')} (GMT+06:00)`\n },\n {\n key: 'Rangoon (GMT+06:30)',\n text: `${translate('Rangoon')} (GMT+06:30)`\n },\n {\n key: 'Riyadh (GMT+03:00)',\n text: `${translate('Riyadh')} (GMT+03:00)`\n },\n {\n key: 'Sakhalin (GMT+11:00)',\n text: `${translate('Sakhalin')} (GMT+11:00)`\n },\n {\n key: 'Samarkand (GMT+05:00)',\n text: `${translate('Samarkand')} (GMT+05:00)`\n },\n {\n key: 'Seoul (GMT+09:00)',\n text: `${translate('Seoul')} (GMT+09:00)`\n },\n {\n key: 'Shanghai (GMT+08:00)',\n text: `${translate('Shanghai')} (GMT+08:00)`\n },\n {\n key: 'Singapore (GMT+08:00)',\n text: `${translate('Singapore')} (GMT+08:00)`\n },\n {\n key: 'Taipei (GMT+08:00)',\n text: `${translate('Taipei')} (GMT+08:00)`\n },\n {\n key: 'Tashkent (GMT+05:00)',\n text: `${translate('Tashkent')} (GMT+05:00)`\n },\n {\n key: 'Tbilisi (GMT+04:00)',\n text: `${translate('Tbilisi')} (GMT+04:00)`\n },\n {\n key: 'Tehran (GMT+04:30)',\n text: `${translate('Tehran')} (GMT+04:30)`\n },\n {\n key: 'Thimphu (GMT+06:00)',\n text: `${translate('Thimphu')} (GMT+06:00)`\n },\n {\n key: 'Tokyo (GMT+09:00)',\n text: `${translate('Tokyo')} (GMT+09:00)`\n },\n {\n key: 'Ulaanbaatar (GMT+08:00)',\n text: `${translate('Ulaanbaatar')} (GMT+08:00)`\n },\n {\n key: 'Urumqi (GMT+08:00)',\n text: `${translate('Urumqi')} (GMT+08:00)`\n },\n {\n key: 'Vientiane (GMT+07:00)',\n text: `${translate('Vientiane')} (GMT+07:00)`\n },\n {\n key: 'Vladivostok (GMT+11:00)',\n text: `${translate('Vladivostok')} (GMT+11:00)`\n },\n {\n key: 'Yakutsk (GMT+10:00)',\n text: `${translate('Yakutsk')} (GMT+10:00)`\n },\n {\n key: 'Yekaterinburg (GMT+06:00)',\n text: `${translate('Yekaterinburg')} (GMT+06:00)`\n },\n {\n key: 'Yerevan (GMT+05:00)',\n text: `${translate('Yerevan')} (GMT+05:00)`\n },\n {\n key: '[[Atlantic]]',\n text: translate('[[Atlantic]]')\n },\n {\n key: 'Azores (GMT)',\n text: `${translate('Azores')} (GMT)`\n },\n {\n key: 'Bermuda (GMT-03:00)',\n text: `${translate('Bermuda')} (GMT-03:00)`\n },\n {\n key: 'Canary (GMT+01:00)',\n text: `${translate('Canary')} (GMT+01:00)`\n },\n {\n key: 'Cape Verde (GMT-01:00)',\n text: `${translate('Cape Verde')} (GMT-01:00)`\n },\n {\n key: 'Faroe (GMT+01:00)',\n text: `${translate('Faroe')} (GMT+01:00)`\n },\n {\n key: 'Madeira (GMT+01:00)',\n text: `${translate('Madeira')} (GMT+01:00)`\n },\n {\n key: 'Reykjavik (GMT)',\n text: `${translate('Reykjavik')} (GMT)`\n },\n {\n key: 'South Georgia (GMT-02:00)',\n text: `${translate('South Georgia')} (GMT-02:00)`\n },\n {\n key: 'St Helena (GMT)',\n text: `${translate('St Helena')} (GMT)`\n },\n {\n key: 'Stanley (GMT-04:00)',\n text: `${translate('Stanley')} (GMT-04:00)`\n },\n {\n key: '[[Australia]]',\n text: translate('[[Australia]]')\n },\n {\n key: 'Adelaide (GMT+09:30)',\n text: `${translate('Adelaide')} (GMT+09:30)`\n },\n {\n key: 'Brisbane (GMT+10:00)',\n text: `${translate('Brisbane')} (GMT+10:00)`\n },\n {\n key: 'Broken Hill (GMT+09:30)',\n text: `${translate('Broken Hill')} (GMT+09:30)`\n },\n {\n key: 'Currie (GMT+10:00)',\n text: `${translate('Currie')} (GMT+10:00)`\n },\n {\n key: 'Darwin (GMT+09:30)',\n text: `${translate('Darwin')} (GMT+09:30)`\n },\n {\n key: 'Eucla (GMT+08:45)',\n text: `${translate('Eucla')} (GMT+08:45)`\n },\n {\n key: 'Hobart (GMT+10:00)',\n text: `${translate('Hobart')} (GMT+10:00)`\n },\n {\n key: 'Lindeman (GMT+10:00)',\n text: `${translate('Lindeman')} (GMT+10:00)`\n },\n {\n key: 'Lord Howe (GMT+10:30)',\n text: `${translate('Lord Howe')} (GMT+10:30)`\n },\n {\n key: 'Melbourne (GMT+10:00)',\n text: `${translate('Melbourne')} (GMT+10:00)`\n },\n {\n key: 'Perth (GMT+08:00)',\n text: `${translate('Perth')} (GMT+08:00)`\n },\n {\n key: 'Sydney (GMT+10:00)',\n text: `${translate('Sydney')} (GMT+10:00)`\n },\n {\n key: '[[Europe]]',\n text: translate('[[Europe]]')\n },\n {\n key: 'Amsterdam (GMT+02:00)',\n text: `${translate('Amsterdam')} (GMT+02:00)`\n },\n {\n key: 'Andorra (GMT+02:00)',\n text: `${translate('Andorra')} (GMT+02:00)`\n },\n {\n key: 'Athens (GMT+03:00)',\n text: `${translate('Athens')} (GMT+03:00)`\n },\n {\n key: 'Belgrade (GMT+02:00)',\n text: `${translate('Belgrade')} (GMT+02:00)`\n },\n {\n key: 'Berlin (GMT+02:00)',\n text: `${translate('Berlin')} (GMT+02:00)`\n },\n {\n key: 'Bratislava (GMT+02:00)',\n text: `${translate('Bratislava')} (GMT+02:00)`\n },\n {\n key: 'Brussels (GMT+02:00)',\n text: `${translate('Brussels')} (GMT+02:00)`\n },\n {\n key: 'Bucharest (GMT+03:00)',\n text: `${translate('Bucharest')} (GMT+03:00)`\n },\n {\n key: 'Budapest (GMT+02:00)',\n text: `${translate('Budapest')} (GMT+02:00)`\n },\n {\n key: 'Chisinau (GMT+03:00)',\n text: `${translate('Chisinau')} (GMT+03:00)`\n },\n {\n key: 'Copenhagen (GMT+02:00)',\n text: `${translate('Copenhagen')} (GMT+02:00)`\n },\n {\n key: 'Dublin (GMT+01:00)',\n text: `${translate('Dublin')} (GMT+01:00)`\n },\n {\n key: 'Gibraltar (GMT+02:00)',\n text: `${translate('Gibraltar')} (GMT+02:00)`\n },\n {\n key: 'Guernsey (GMT+01:00)',\n text: `${translate('Guernsey')} (GMT+01:00)`\n },\n {\n key: 'Helsinki (GMT+03:00)',\n text: `${translate('Helsinki')} (GMT+03:00)`\n },\n {\n key: 'Isle of Man (GMT+01:00)',\n text: `${translate('Isle of Man')} (GMT+01:00)`\n },\n {\n key: 'Istanbul (GMT+03:00)',\n text: `${translate('Istanbul')} (GMT+03:00)`\n },\n {\n key: 'Jersey (GMT+01:00)',\n text: `${translate('Jersey')} (GMT+01:00)`\n },\n {\n key: 'Kaliningrad (GMT+03:00)',\n text: `${translate('Kaliningrad')} (GMT+03:00)`\n },\n {\n key: 'Kiev (GMT+03:00)',\n text: `${translate('Kiev')} (GMT+03:00)`\n },\n {\n key: 'Lisbon (GMT+01:00)',\n text: `${translate('Lisbon')} (GMT+01:00)`\n },\n {\n key: 'Ljubljana (GMT+02:00)',\n text: `${translate('Ljubljana')} (GMT+02:00)`\n },\n {\n key: 'London (GMT+01:00)',\n text: `${translate('London')} (GMT+01:00)`\n },\n {\n key: 'Luxembourg (GMT+02:00)',\n text: `${translate('Luxembourg')} (GMT+02:00)`\n },\n {\n key: 'Madrid (GMT+02:00)',\n text: `${translate('Madrid')} (GMT+02:00)`\n },\n {\n key: 'Malta (GMT+02:00)',\n text: `${translate('Malta')} (GMT+02:00)`\n },\n {\n key: 'Mariehamn (GMT+03:00)',\n text: `${translate('Mariehamn')} (GMT+03:00)`\n },\n {\n key: 'Minsk (GMT+03:00)',\n text: `${translate('Minsk')} (GMT+03:00)`\n },\n {\n key: 'Monaco (GMT+02:00)',\n text: `${translate('Monaco')} (GMT+02:00)`\n },\n {\n key: 'Moscow (GMT+04:00)',\n text: `${translate('Moscow')} (GMT+04:00)`\n },\n {\n key: 'Oslo (GMT+02:00)',\n text: `${translate('Oslo')} (GMT+02:00)`\n },\n {\n key: 'Paris (GMT+02:00)',\n text: `${translate('Paris')} (GMT+02:00)`\n },\n {\n key: 'Podgorica (GMT+02:00)',\n text: `${translate('Podgorica')} (GMT+02:00)`\n },\n {\n key: 'Prague (GMT+02:00)',\n text: `${translate('Prague')} (GMT+02:00)`\n },\n {\n key: 'Riga (GMT+03:00)',\n text: `${translate('Riga')} (GMT+03:00)`\n },\n {\n key: 'Rome (GMT+02:00)',\n text: `${translate('Rome')} (GMT+02:00)`\n },\n {\n key: 'Samara (GMT+05:00)',\n text: `${translate('Samara')} (GMT+05:00)`\n },\n {\n key: 'San Marino (GMT+02:00)',\n text: `${translate('San Marino')} (GMT+02:00)`\n },\n {\n key: 'Sarajevo (GMT+02:00)',\n text: `${translate('Sarajevo')} (GMT+02:00)`\n },\n {\n key: 'Simferopol (GMT+03:00)',\n text: `${translate('Simferopol')} (GMT+03:00)`\n },\n {\n key: 'Skopje (GMT+02:00)',\n text: `${translate('Skopje')} (GMT+02:00)`\n },\n {\n key: 'Sofia (GMT+03:00)',\n text: `${translate('Sofia')} (GMT+03:00)`\n },\n {\n key: 'Stockholm (GMT+02:00)',\n text: `${translate('Stockholm')} (GMT+02:00)`\n },\n {\n key: 'Tallinn (GMT+03:00)',\n text: `${translate('Tallinn')} (GMT+03:00)`\n },\n {\n key: 'Tirane (GMT+02:00)',\n text: `${translate('Tirane')} (GMT+02:00)`\n },\n {\n key: 'Uzhgorod (GMT+03:00)',\n text: `${translate('Uzhgorod')} (GMT+03:00)`\n },\n {\n key: 'Vaduz (GMT+02:00)',\n text: `${translate('Vaduz')} (GMT+02:00)`\n },\n {\n key: 'Vatican (GMT+02:00)',\n text: `${translate('Vatican')} (GMT+02:00)`\n },\n {\n key: 'Vienna (GMT+02:00)',\n text: `${translate('Vienna')} (GMT+02:00)`\n },\n {\n key: 'Vilnius (GMT+03:00)',\n text: `${translate('Vilnius')} (GMT+03:00)`\n },\n {\n key: 'Volgograd (GMT+04:00)',\n text: `${translate('Volgograd')} (GMT+04:00)`\n },\n {\n key: 'Warsaw (GMT+02:00)',\n text: `${translate('Warsaw')} (GMT+02:00)`\n },\n {\n key: 'Zagreb (GMT+02:00)',\n text: `${translate('Zagreb')} (GMT+02:00)`\n },\n {\n key: 'Zaporozhye (GMT+03:00)',\n text: `${translate('Zaporozhye')} (GMT+03:00)`\n },\n {\n key: 'Zurich (GMT+02:00)',\n text: `${translate('Zurich')} (GMT+02:00)`\n },\n {\n key: '[[Indian]]',\n text: translate('[[Indian]]')\n },\n {\n key: 'Antananarivo (GMT+03:00)',\n text: `${translate('Antananarivo')} (GMT+03:00)`\n },\n {\n key: 'Chagos (GMT+06:00)',\n text: `${translate('Chagos')} (GMT+06:00)`\n },\n {\n key: 'Christmas (GMT+07:00)',\n text: `${translate('Christmas')} (GMT+07:00)`\n },\n {\n key: 'Cocos (GMT+06:30)',\n text: `${translate('Cocos')} (GMT+06:30)`\n },\n {\n key: 'Comoro (GMT+03:00)',\n text: `${translate('Comoro')} (GMT+03:00)`\n },\n {\n key: 'Kerguelen (GMT+05:00)',\n text: `${translate('Kerguelen')} (GMT+05:00)`\n },\n {\n key: 'Mahe (GMT+04:00)',\n text: `${translate('Mahe')} (GMT+04:00)`\n },\n {\n key: 'Maldives (GMT+05:00)',\n text: `${translate('Maldives')} (GMT+05:00)`\n },\n {\n key: 'Mauritius (GMT+04:00)',\n text: `${translate('Mauritius')} (GMT+04:00)`\n },\n {\n key: 'Mayotte (GMT+03:00)',\n text: `${translate('Mayotte')} (GMT+03:00)`\n },\n {\n key: 'Reunion (GMT+04:00)',\n text: `${translate('Reunion')} (GMT+04:00)`\n },\n {\n key: '[[Pacific]]',\n text: translate('[[Pacific]]')\n },\n {\n key: 'Apia (GMT-11:00)',\n text: `${translate('Apia')} (GMT-11:00)`\n },\n {\n key: 'Auckland (GMT+12:00)',\n text: `${translate('Auckland')} (GMT+12:00)`\n },\n {\n key: 'Chatham (GMT+12:45)',\n text: `${translate('Chatham')} (GMT+12:45)`\n },\n {\n key: 'Easter (GMT-06:00)',\n text: `${translate('Easter')} (GMT-06:00)`\n },\n {\n key: 'Efate (GMT+11:00)',\n text: `${translate('Efate')} (GMT+11:00)`\n },\n {\n key: 'Enderbury (GMT+13:00)',\n text: `${translate('Enderbury')} (GMT+13:00)`\n },\n {\n key: 'Fakaofo (GMT-10:00)',\n text: `${translate('Fakaofo')} (GMT-10:00)`\n },\n {\n key: 'Fiji (GMT+12:00)',\n text: `${translate('Fiji')} (GMT+12:00)`\n },\n {\n key: 'Funafuti (GMT+12:00)',\n text: `${translate('Funafuti')} (GMT+12:00)`\n },\n {\n key: 'Galapagos (GMT-06:00)',\n text: `${translate('Galapagos')} (GMT-06:00)`\n },\n {\n key: 'Gambier (GMT-09:00)',\n text: `${translate('Gambier')} (GMT-09:00)`\n },\n {\n key: 'Guadalcanal (GMT+11:00)',\n text: `${translate('Guadalcanal')} (GMT+11:00)`\n },\n {\n key: 'Guam (GMT+10:00)',\n text: `${translate('Guam')} (GMT+10:00)`\n },\n {\n key: 'Honolulu (GMT-10:00)',\n text: `${translate('Honolulu')} (GMT-10:00)`\n },\n {\n key: 'Johnston (GMT-10:00)',\n text: `${translate('Johnston')} (GMT-10:00)`\n },\n {\n key: 'Kiritimati (GMT+14:00)',\n text: `${translate('Kiritimati')} (GMT+14:00)`\n },\n {\n key: 'Kosrae (GMT+11:00)',\n text: `${translate('Kosrae')} (GMT+11:00)`\n },\n {\n key: 'Kwajalein (GMT+12:00)',\n text: `${translate('Kwajalein')} (GMT+12:00)`\n },\n {\n key: 'Majuro (GMT+12:00)',\n text: `${translate('Majuro')} (GMT+12:00)`\n },\n {\n key: 'Marquesas (GMT-09:30)',\n text: `${translate('Marquesas')} (GMT-09:30)`\n },\n {\n key: 'Midway (GMT-11:00)',\n text: `${translate('Midway')} (GMT-11:00)`\n },\n {\n key: 'Nauru (GMT+12:00)',\n text: `${translate('Nauru')} (GMT+12:00)`\n },\n {\n key: 'Niue (GMT-11:00)',\n text: `${translate('Niue')} (GMT-11:00)`\n },\n {\n key: 'Norfolk (GMT+11:30)',\n text: `${translate('Norfolk')} (GMT+11:30)`\n },\n {\n key: 'Noumea (GMT+11:00)',\n text: `${translate('Noumea')} (GMT+11:00)`\n },\n {\n key: 'Pago Pago (GMT-11:00)',\n text: `${translate('Pago Pago')} (GMT-11:00)`\n },\n {\n key: 'Palau (GMT+09:00)',\n text: `${translate('Palau')} (GMT+09:00)`\n },\n {\n key: 'Pitcairn (GMT-08:00)',\n text: `${translate('Pitcairn')} (GMT-08:00)`\n },\n {\n key: 'Ponape (GMT+11:00)',\n text: `${translate('Ponape')} (GMT+11:00)`\n },\n {\n key: 'Port Moresby (GMT+10:00)',\n text: `${translate('Port Moresby')} (GMT+10:00)`\n },\n {\n key: 'Rarotonga (GMT-10:00)',\n text: `${translate('Rarotonga')} (GMT-10:00)`\n },\n {\n key: 'Saipan (GMT+10:00)',\n text: `${translate('Saipan')} (GMT+10:00)`\n },\n {\n key: 'Tahiti (GMT-10:00)',\n text: `${translate('Tahiti')} (GMT-10:00)`\n },\n {\n key: 'Tarawa (GMT+12:00)',\n text: `${translate('Tarawa')} (GMT+12:00)`\n },\n {\n key: 'Tongatapu (GMT+13:00)',\n text: `${translate('Tongatapu')} (GMT+13:00)`\n },\n {\n key: 'Truk (GMT+10:00)',\n text: `${translate('Truk')} (GMT+10:00)`\n },\n {\n key: 'Wake (GMT+12:00)',\n text: `${translate('Wake')} (GMT+12:00)`\n },\n {\n key: 'Wallis (GMT+12:00)',\n text: `${translate('Wallis')} (GMT+12:00)`\n }\n\n];\n","export const DO_ACTIONS_MAP = {\n Require: 'Require',\n Unrequire: 'Unrequire',\n RequireMultiple: 'Require Multiple',\n UnrequireMultiple: 'Unrequire Multiple',\n Disable: 'Disable',\n Enable: 'Enable',\n HideMultiple: 'Hide',\n ShowMultiple: 'Show',\n Show: 'Show',\n Hide: 'Hide',\n DisableSubmit: 'Disable Submit'\n};\n","export const OPERATOR_TEXT_MAP = {\n equals: 'Is Equal To',\n notEquals: 'Is Not Equal To',\n isEmpty: 'Is Empty',\n isFilled: 'Is Filled',\n equal: 'Equals',\n contains: 'Contains',\n startsWith: 'Starts With',\n notEndsWith: 'Doesn\\'t End With',\n notStartsWith: 'Doesn\\'t Start With',\n endsWith: 'Ends With',\n notContains: 'Does not Contain',\n notEqualCountry: 'Country Doesn\\'t Equal',\n equalCountry: 'Country Equals',\n notEqualState: 'State Doesn\\'t Equal',\n equalState: 'State Equals',\n equalDay: 'Is Equal to Day',\n notEqualDay: 'Not Equal to Day',\n quantityEquals: 'Quantity is Equal to',\n quantityNotEquals: 'Quantity is Not Equal to',\n quantityLess: 'Quantity is Less Than',\n quantityGreater: 'Quantity is Greater Than',\n lessThan: 'Less Than',\n greaterThan: 'Greater Than',\n before: 'Before',\n after: 'After',\n equalDate: 'Is Equal to Date',\n notEqualDate: 'Not Equal to Date'\n};\n","import uniq from 'lodash/uniq';\nimport isNull from 'lodash/isNull';\nimport isArray from 'lodash/isArray';\nimport isUndefined from 'lodash/isUndefined';\nimport isString from 'lodash/isString';\nimport unescape from 'lodash/unescape';\nimport transform from 'lodash/transform';\nimport isEqual from 'lodash/isEqual';\nimport isObject from 'lodash/isObject';\nimport { NON_INPUT_QUESTIONS } from '@jotforminc/constants';\nimport { safeJSONParse } from '@jotforminc/utils';\n\nimport { DO_ACTIONS_MAP } from './constants/Actions';\nimport { translate } from '../../mixins/Translation';\nimport { OPERATOR_TEXT_MAP } from './constants/Operators';\nimport { CONDITION_TITLE_MAP } from './constants/ConditionTitles';\nimport { typeMapper, getOrderedFields } from '../question-properties-editor/customs/InlineFields/helpers';\n\nclass ConditionUtils {\n questions = {};\n\n formProperties = {};\n\n filterFrom = '';\n\n static fieldTextHashMap = {};\n\n static conditionTitleString = CONDITION_TITLE_MAP;\n\n static removeObjectFromArray(numberOfObjectToRemove, arrayObject) {\n if (numberOfObjectToRemove === undefined || numberOfObjectToRemove === null || arrayObject === undefined || arrayObject === null) {\n return [];\n }\n\n arrayObject.splice(0, numberOfObjectToRemove);\n return arrayObject;\n }\n\n static getDoActionByKey(doActionKey) {\n return DO_ACTIONS_MAP[doActionKey] || '';\n }\n\n static getComparisonOperatorByKey(comparisonOperatorKey) {\n return OPERATOR_TEXT_MAP[comparisonOperatorKey] || '';\n }\n\n static putQuotesAroundString(text) {\n let tempText = '';\n\n if (typeof text === 'string') {\n const firstChar = text.substring(0, 1);\n if (text.length > 0 && (firstChar !== '\"' || firstChar !== '\\'')) {\n tempText = `\"${text}\"`;\n }\n }\n\n return tempText;\n }\n\n static isTermNeedValue(termOperator) {\n return !(typeof termOperator === 'string' && (termOperator === 'isEmpty' || termOperator === 'isFilled'));\n }\n\n static stripHTMLTagsFromRawQuestions(rawQuestionArray) {\n return rawQuestionArray.map(question => ({ ...question, text: ConditionUtils.stripHTMLTags(question.text) }));\n }\n\n static stripHTMLTags(text) {\n if (typeof text !== 'string') {\n return text;\n }\n\n return text.replace(/ /g, '').replace(/<\\/?[^>]+>/gi, '');\n }\n\n static jsonParse(jsonText) {\n // Workarround for inconsistent return from API/FormProperties\n let jsonObject = null;\n // IDK why we send objects to this fn as texts but this is a quick performance update\n if (typeof jsonText === 'object') {\n return jsonText;\n }\n\n if (jsonText !== undefined && jsonText !== null) {\n try {\n jsonObject = JSON.parse(jsonText);\n } catch (e) {\n jsonObject = jsonText;\n }\n }\n\n return jsonObject;\n }\n\n static getQuestionType(question) {\n let questionType = question.type.replace('control_', '');\n questionType = `${questionType[0].toUpperCase() + questionType.slice(1)}`;\n\n // Add type descriptions for controls\n if (question.type === 'control_widget') {\n questionType = `${question.cfname} ${questionType} (` + `id${question.qid})`;\n }\n\n return questionType;\n }\n\n static getQuestionText(question, data, pageBreaks = []) {\n let finalFieldText = '';\n if (question === undefined || question === null) {\n return '';\n }\n\n const questionType = this.getQuestionType(question);\n\n let fieldText = question.text || '';\n\n switch (true) {\n case (fieldText === '' || fieldText.trim() === 'Click to edit...') && (question.type === 'control_widget'):\n finalFieldText = questionType;\n break;\n case data && question.type === 'control_mixed': {\n let subfieldText = '';\n if (typeof data.value === 'string' && data.value.indexOf('|') > -1) {\n const slicedQid = data.value.split('|');\n const fieldId = slicedQid[1];\n const subfield = question.fields && Array.isArray(question.fields) && question.fields.find(({ fieldID: id }) => id === fieldId);\n subfieldText = subfield ? question.sublabels[`field_${fieldId}`] || this.getQuestionType(subfield) : '\"MISSING FIELD\"';\n }\n\n finalFieldText = fieldText + (subfieldText ? ` / ${subfieldText}` : '');\n break;\n }\n case question.type === 'control_inline': {\n fieldText = question.text || 'Fill in the Blank';\n let subfieldText = '';\n if (data) {\n if (typeof data.value === 'string' && data.value.indexOf('|') > -1) {\n const slicedQid = data.value.split('|');\n const fieldId = slicedQid[1];\n const subfield = question.fields && Array.isArray(question.fields) && question.fields.find(field => field.id === fieldId);\n subfieldText = subfield ? (subfield.label || this.getQuestionType(subfield)) : '\"MISSING FIELD\"';\n }\n }\n finalFieldText = fieldText + (subfieldText ? ` / ${subfieldText}` : '');\n break;\n }\n case question.type === 'control_text': {\n finalFieldText = this.stripHTMLTags(question.text || '');\n if (!finalFieldText) {\n finalFieldText = `${translate('Paragraph')} (${question.name})`;\n }\n break;\n }\n case fieldText === '' || fieldText.trim() === 'Click to edit...' || fieldText === '....':\n finalFieldText = `${questionType} Field (id${question.qid})`;\n break;\n case question.type === 'control_pagebreak' && pageBreaks.length > 0: {\n finalFieldText = ConditionUtils.getPagebreakTextWithQuestionID(pageBreaks, question);\n return finalFieldText;\n }\n default:\n finalFieldText = fieldText;\n break;\n }\n\n finalFieldText = ConditionUtils.checkFieldTextLength(finalFieldText);\n return unescape(finalFieldText.replace(/&/g, '&'));\n }\n\n static checkFieldTextLength(fieldText) {\n let tempFieldText = fieldText;\n\n if (isString(fieldText) && fieldText.length >= 50) {\n tempFieldText = `${fieldText.substring(0, 50)}...`;\n }\n return tempFieldText;\n }\n\n static isQuestionDisabled(question) {\n let isDisabled = false;\n\n switch (question.type) {\n case 'control_head':\n case 'control_captcha':\n case 'control_image':\n case 'control_collapse':\n case 'control_html':\n case 'control_text':\n case 'control_button':\n case 'control_pagebreak':\n case 'control_divider':\n case 'control_paymentmethods':\n isDisabled = true;\n break;\n\n default:\n isDisabled = false;\n }\n\n return isDisabled;\n }\n\n static prepareQuestionsForDisable(questions, disableFieldsForDropdown, builderType, mode) {\n let finalQuestions = [];\n\n const pageBreaks = ConditionUtils.filterPagebreaks(questions, true);\n if (questions !== undefined && questions !== null) {\n let i = 0;\n finalQuestions = questions.map(question => {\n let finalFieldText = ConditionUtils.getQuestionText(question, {}, pageBreaks);\n const isDisabled = this.isQuestionDisabled(question);\n\n i += 1;\n finalFieldText = `${i}. ${finalFieldText}`;\n\n if (question.type === 'language') {\n finalFieldText = `- ${finalFieldText}`;\n }\n\n if (question.type === 'control_mixed' && (builderType === 'card' || builderType === 'old')) {\n return Array.isArray(question.fields) ? question.fields.map(f => {\n let fieldText = question.sublabels[`field_${f.fieldID}`];\n if (!fieldText || fieldText.length === 0) {\n fieldText = f.type;\n }\n return {\n id: question.qid,\n key: question.qid,\n value: `${question.qid}|${f.fieldID}`,\n text: `${finalFieldText} / ${fieldText}`,\n disabled: isDisabled\n };\n }) : [];\n }\n\n if (question.type === 'control_inline') {\n return Array.isArray(question.fields) ? (mode === 'action' ? [{\n id: question.qid,\n key: question.qid,\n value: question.qid,\n text: finalFieldText,\n disabled: isDisabled\n }] : []).concat(getOrderedFields(question.fields).map(f => {\n return {\n id: question.qid,\n key: question.qid,\n value: `${question.qid}|${f.id}`,\n text: `${finalFieldText} / ${f.label || typeMapper[f.type]}`,\n disabled: isDisabled\n };\n })) : [];\n }\n\n let tempQuestion = null;\n\n if (typeof disableFieldsForDropdown !== 'undefined' && disableFieldsForDropdown === true) {\n tempQuestion = {\n id: question.qid,\n key: question.qid,\n text: finalFieldText,\n disabled: isDisabled\n };\n } else {\n tempQuestion = {\n id: question.qid,\n key: question.qid,\n value: question.qid,\n text: finalFieldText,\n disabled: isDisabled\n };\n }\n return tempQuestion;\n });\n }\n\n // eslint-disable-next-line prefer-spread\n finalQuestions = [].concat.apply([], finalQuestions);\n return finalQuestions;\n }\n\n static dropdownPrepareWithDisable(questions, builderType, mode) {\n let finalQuestions = [];\n\n if (questions !== undefined && questions !== null) {\n finalQuestions = this.prepareQuestionsForDisable(questions, false, builderType, mode);\n\n finalQuestions.unshift({\n id: 'none',\n key: 'none',\n text: translate('Select field'),\n disabled: true\n });\n }\n return finalQuestions;\n }\n\n static getQuestions(questions) {\n const result = questions.map(question => {\n const questionText = ConditionUtils.getQuestionText(question);\n return {\n id: question.qid, key: question.qid, value: question.qid, text: questionText\n };\n });\n result.unshift({ id: 'none', key: 'none', text: translate('Select field') });\n return result;\n }\n\n static dropdownPrepare(questions, type) {\n let finalQuestions = [];\n\n if (questions !== undefined && questions !== null) {\n let i = 1;\n const pageBreaks = ConditionUtils.filterPagebreaks(questions, true);\n finalQuestions = questions.map(question => {\n const finalFieldText = ConditionUtils.getQuestionText(question, {}, pageBreaks);\n const tempQuestion = {\n id: question.qid,\n key: question.qid,\n text: `${i}. ${finalFieldText}`\n };\n i += 1;\n return tempQuestion;\n });\n\n let text = '';\n if (type === 'ShowMultiple' || type === 'HideMultiple') {\n text = 'Select one or more fields';\n } else {\n text = 'Select field';\n }\n\n finalQuestions.unshift({\n id: 'none',\n key: 'none',\n text: translate(text),\n disabled: false\n });\n }\n return finalQuestions;\n }\n\n static filterDropdownPrepareAsFormFields(conditions, questions) {\n const orderedQuestions = this.orderQuestions(questions);\n\n ConditionUtils.questions = questions;\n ConditionUtils.filterFrom = 'dropdown';\n const finalQuestions = orderedQuestions.map((question, questionCounter) => {\n const finalFieldText = ConditionUtils.getQuestionText(question);\n return {\n value: question.qid,\n type: question.text,\n text: `${questionCounter + 1}. ${finalFieldText}`,\n disabled: !ConditionUtils.searchInConditionList(conditions, question.qid)\n };\n });\n\n finalQuestions.unshift({ text: translate('All Fields'), value: '', type: '' });\n return uniq(finalQuestions, item => item.value);\n }\n\n static filterDropdownPrepareAsConditionType(conditions) {\n const conditionTypes = this.getConditionTypes();\n const dropdownValues = this.createDropdownValuesAsConditionTypes(conditionTypes, conditions);\n return dropdownValues;\n }\n\n static createDropdownValuesAsConditionTypes(conditionTypes, conditions) {\n const dropdownValues = [];\n\n // converting the dropdown values as dropdown\n const dropdownValuesObject = {\n 'SHOW / HIDE FIELD': 'Show / Hide Fields',\n 'UPDATE / CALCULATE FIELD': 'Update / Calculate',\n 'ENABLE / REQUIRE FIELD': 'Enable / Disable',\n 'SKIP TO / HIDE A PAGE': 'Skip to / Hide a Page',\n 'CHANGE E-MAIL RECIPIENT': 'Change E-mail Recipient',\n 'CHANGE \"THANK YOU\" PAGE': 'Change \\'Thank You\\' Page'\n };\n\n // There are some condition types which have the same value.\n const valueMultipleKeys = {\n require: 'enable-disable',\n mask: 'enable-disable',\n url: 'thank-you',\n message: 'thank-you'\n };\n\n // adding top value => filter all condition types\n dropdownValues.push({\n text: translate('All Types'),\n value: '',\n type: ''\n });\n\n const currentConditionTypes = conditions ? conditions.map(condition => condition.type) : null;\n\n // preparing the filter dropdown value object\n Object.keys(conditionTypes).forEach(key => {\n const text = translate(dropdownValuesObject[conditionTypes[key]]);\n const value = valueMultipleKeys[key] || key;\n\n dropdownValues.push({\n text,\n value,\n type: conditionTypes[key],\n disabled: !this.shouldEnableOption(key, currentConditionTypes)\n });\n });\n\n return this.getUniqueObject(dropdownValues, 'text');\n }\n\n static shouldEnableOption(key, currentConditionTypes) {\n return (\n currentConditionTypes.includes(key)\n || ['url', 'message'].includes(key)\n || ['require', 'mask'].includes(key)\n );\n }\n\n // making unique the the object array according to the comp parameter\n static getUniqueObject(arr, comp) {\n const arrayUniqueByKey = [...new Map(arr.map(item => [item[comp], item])).values()];\n return arrayUniqueByKey;\n }\n\n // getting condition types for the dropdown values\n static getConditionTypes() {\n const conditionTypes = {};\n Object.keys(this.conditionTitleString).forEach(list => {\n conditionTypes[list] = this.conditionTitleString[list].title;\n });\n return conditionTypes;\n }\n\n static getQuestionByName(questionName, questions) {\n let questionTemp = null;\n\n if (typeof questionName === 'string' && questions !== undefined && questions !== null) {\n questions.forEach(question => {\n if (`{${question.name}}` === questionName) {\n questionTemp = question;\n }\n });\n }\n\n return questionTemp;\n }\n\n static getQuestionByName2(questionName, questions) {\n let questionTemp = null;\n\n if (typeof questionName === 'string' && questions !== undefined && questions !== null) {\n questions.forEach(question => {\n if (question.name === questionName) {\n questionTemp = question;\n }\n });\n }\n\n return questionTemp;\n }\n\n static resetFieldTextHashMap() {\n ConditionUtils.fieldTextHashMap = {};\n }\n\n static getFieldTextByQid(questionId, questions) {\n if (ConditionUtils.fieldTextHashMap[questionId]) return ConditionUtils.fieldTextHashMap[questionId];\n\n let fieldText = '\"MISSING FIELD\"';\n const tempQuestionId = '';\n const pageBreaks = ConditionUtils.filterPagebreaks(questions, true);\n\n let questionIdProcessed = '';\n if (tempQuestionId.indexOf('|') > -1) {\n questionIdProcessed = questionId.split('|')[0];\n } else {\n questionIdProcessed = questionId;\n }\n\n if ((questions !== undefined && questions !== null) && (questionIdProcessed !== undefined && questionIdProcessed !== null)) {\n const question = ConditionUtils.getQuestionByQid(questionIdProcessed, questions);\n\n if (question !== null) {\n fieldText = ConditionUtils.getQuestionText(question, { value: questionId }, pageBreaks);\n }\n }\n ConditionUtils.fieldTextHashMap[questionId] = fieldText;\n return fieldText;\n }\n\n static getQuestionIdFromString(questionIdString) {\n let questionIdProcessed = '';\n let fieldIdProcessed;\n\n let isMultiple = false;\n if (questionIdString.indexOf('|') > -1) {\n questionIdProcessed = questionIdString.split('|')[0];\n fieldIdProcessed = questionIdString.split('|')[1];\n isMultiple = true;\n } else {\n questionIdProcessed = questionIdString;\n fieldIdProcessed = null;\n isMultiple = false;\n }\n\n return {\n isMultiple: isMultiple,\n qid: questionIdProcessed,\n field: fieldIdProcessed\n };\n }\n\n static getQuestionByQid(questionId, tempQuestions) {\n let tempQuestionId = '';\n let question = null;\n\n if ((tempQuestions !== undefined && tempQuestions !== null) && (questionId !== undefined && questionId !== null)) {\n if (typeof questionId === 'string') {\n tempQuestionId = questionId.trim();\n } else {\n tempQuestionId = `${questionId}`;\n }\n\n const questions = tempQuestions;\n for (let j = 0; j < questions.length; j++) {\n let questionIdProcessed = '';\n if (tempQuestionId.indexOf('|') > -1) {\n questionIdProcessed = tempQuestionId.split('|')[0];\n } else {\n questionIdProcessed = tempQuestionId;\n }\n\n if (questionIdProcessed === `${questions[j].qid}`) {\n question = questions[j];\n break;\n }\n }\n }\n\n return question;\n }\n\n static getProductPid(productTermField, products) {\n if (productTermField === null || productTermField === undefined || products === null || products === undefined) {\n return false;\n }\n let index = productTermField.indexOf('_quantity_');\n const tempText = productTermField.substring(index + '_quantity_'.length);\n index = tempText.indexOf('_');\n const productPid = tempText.substring(0, index);\n for (let i = 0; i < products.length; i++) {\n if (productPid === products[i].pid) {\n return productPid;\n }\n }\n return false;\n }\n\n static getProductText(productTermField, products) {\n let productText = '';\n if (productTermField === null || productTermField === undefined || products === null || products === undefined) {\n return productText;\n }\n\n let index = productTermField.indexOf('_quantity_');\n const tempText = productTermField.substring(index + '_quantity_'.length);\n index = tempText.indexOf('_');\n const productPid = tempText.substring(0, index);\n\n for (let i = 0; i < products.length; i++) {\n if (productPid === products[i].pid) {\n productText = products[i].name;\n break;\n }\n }\n\n return productText;\n }\n\n static getProductTextByProductId(pid, products) {\n let productText = '';\n if (products === null || products === undefined || pid === null || pid === undefined) {\n return productText;\n }\n\n for (let i = 0; i < products.length; i++) {\n if (pid === `${products[i].pid}`) {\n productText = products[i].name;\n break;\n }\n }\n\n return productText;\n }\n\n static isPaymentProduct(qid, questions) {\n let isPayment = false;\n\n if ((questions !== null && questions !== undefined) && (qid !== null && qid !== undefined)) {\n for (let i = 0; i < questions.length; i++) {\n if (qid === questions[i].qid) {\n const { type } = questions[i];\n if (\n type === 'control_2co'\n || type === 'control_authnet'\n || type === 'control_bluepay'\n || type === 'control_bluesnap'\n || type === 'control_braintree'\n || type === 'control_cardconnect'\n || type === 'control_clickbank'\n || type === 'control_dwolla'\n || type === 'control_echeck'\n || type === 'control_eway'\n || type === 'control_firstdata'\n || type === 'control_paypalInvoicing'\n || type === 'control_googleco'\n || type === 'control_onebip'\n || type === 'control_payment'\n || type === 'control_paymentwall'\n || type === 'control_payjunction'\n || type === 'control_chargify'\n || type === 'control_paymill'\n || type === 'control_paypal'\n || type === 'control_paypalexpress'\n || type === 'control_paypalpro'\n || type === 'control_paypalcomplete'\n || type === 'control_stripe'\n || type === 'control_stripeCheckout'\n || type === 'control_stripeACH'\n || type === 'control_stripeACHManual'\n || type === 'control_square'\n || type === 'control_worldpay'\n || type === 'control_worldpayus'\n || type === 'control_payu'\n || type === 'control_payuMoney'\n || type === 'control_pagseguro'\n || type === 'control_moneris'\n || type === 'control_sofort'\n || type === 'control_sensepass'\n || type === 'control_paysafe'\n || type === 'control_iyzico'\n || type === 'control_skrill'\n || type === 'control_gocardless'\n || type === 'control_mollie'\n || type === 'control_paypalSPB'\n || type === 'control_cybersource'\n || type === 'control_payfast'\n ) {\n isPayment = true;\n break;\n }\n }\n }\n }\n\n return isPayment;\n }\n\n static isStringContains(stringNeedsToBeSearched, searchString) {\n let result = false;\n\n if (typeof stringNeedsToBeSearched === 'string' && typeof searchString === 'string') {\n result = stringNeedsToBeSearched.indexOf(searchString) > -1;\n }\n\n return result;\n }\n\n static retriveQidFromProductTermField(productTermField) {\n let qid = null;\n\n if (productTermField !== null && productTermField !== undefined) {\n const index = productTermField.indexOf('_quantity');\n\n if (index > 0) {\n qid = productTermField.substring(0, index);\n }\n }\n\n return qid;\n }\n\n static dropdownPrepareWithDisableForTarget(questions) {\n let finalQuestions = [];\n\n if (questions !== null && questions !== undefined) {\n let i = 1;\n finalQuestions = questions.map(question => {\n const finalFieldText = ConditionUtils.getQuestionText(question);\n const isDisabled = this.isQuestionDisabled(question);\n\n const tempQuestion = {\n id: question.qid,\n key: `{${question.name}}`,\n value: `{${question.name}}`,\n text: `${i}. ${finalFieldText}`,\n disabled: isDisabled\n };\n i += 1;\n return tempQuestion;\n });\n\n if (finalQuestions.length > 0) {\n finalQuestions.unshift({\n text: translate('Select field'),\n value: 'none',\n key: 'none',\n type: ['none'],\n disabled: true\n });\n }\n }\n return finalQuestions;\n }\n\n static prepareQuestionsForAddField(questions) {\n let finalQuestions = [];\n\n if (questions !== null && questions !== undefined) {\n finalQuestions = questions.map(question => {\n const tempQuestion = {\n id: question.qid,\n key: `{${question.qid}}`,\n value: `{${question.qid}}`,\n text: question.text || ConditionUtils.getQuestionText(question)\n };\n return tempQuestion;\n });\n }\n\n return finalQuestions;\n }\n\n static prepareFromQuestionsForCalculation(questions, builderType) {\n let finalQuestions = [];\n const disableFieldsForDropdown = true;\n\n if (questions !== null && questions !== undefined) {\n finalQuestions = this.prepareQuestionsForDisable(questions, disableFieldsForDropdown, builderType);\n\n if (finalQuestions.length > 0) {\n finalQuestions.unshift({\n id: 'none',\n key: 'none',\n value: '',\n text: translate('Select a field to copy value from'),\n disabled: true\n });\n }\n }\n\n return finalQuestions;\n }\n\n static prepareToQuestionsForCalculation(questions, builderType) {\n let finalQuestions = [];\n const disableFieldsForDropdown = true;\n\n if (questions !== null && questions !== undefined) {\n finalQuestions = this.prepareQuestionsForDisable(questions, disableFieldsForDropdown, builderType);\n\n if (finalQuestions.length > 0) {\n finalQuestions.unshift({\n id: 'none',\n key: 'none',\n value: 'none',\n text: translate('Select a field to paste value in'),\n disabled: true\n });\n }\n }\n\n return finalQuestions;\n }\n\n static prepareFieldQuestionsForCalculation(questions, builderType) {\n let finalQuestions = [];\n const disableFieldsForDropdown = true;\n\n if (questions !== null && questions !== undefined) {\n finalQuestions = this.prepareQuestionsForDisable(questions, disableFieldsForDropdown, builderType);\n\n if (finalQuestions.length > 0) {\n finalQuestions.unshift({\n id: 'none',\n key: 'none',\n value: 'none',\n text: translate('Select a field for final output'),\n disabled: true\n });\n }\n }\n return finalQuestions;\n }\n\n static getEmailObjectByKey(emailKey, emailsArray) {\n let email;\n if (emailKey === undefined || emailKey === null || emailsArray === undefined || emailsArray === null) {\n email = '';\n } else {\n const dashIndex = emailKey.indexOf('-');\n const emailIndex = emailKey.substr(dashIndex + 1);\n\n for (let i = 0; i < emailsArray.length; i++) {\n const tempEmail = emailsArray[i];\n if (emailIndex === `${i}`) {\n email = tempEmail;\n break;\n }\n }\n }\n\n return email;\n }\n\n static getTextFromDropDown(value, dropDownOptions) {\n let dropDownText = '';\n\n if ((dropDownOptions !== null && dropDownOptions !== undefined) && (value !== null && value !== undefined)) {\n for (let i = 0; i < dropDownOptions.length; i++) {\n const option = dropDownOptions[i];\n if (option.value === value) {\n dropDownText = option.text;\n }\n }\n }\n\n return dropDownText;\n }\n\n static checkEmail(val) {\n let result = true;\n if (!val.match(/\\S+@\\S+\\.\\S+/)) {\n result = false;\n }\n if (val.indexOf(' ') !== -1 || val.indexOf('..') !== -1) {\n result = false;\n }\n return result;\n }\n\n static isField(fieldValue) {\n let result = false;\n\n if (typeof fieldValue === 'string' && fieldValue.length > 1) {\n const firstChar = fieldValue.charAt(0);\n const lastChar = fieldValue.charAt(fieldValue.length - 1);\n\n if (firstChar === '{' && lastChar === '}') {\n const valueWihoutBraces = fieldValue.substring(1, fieldValue.length - 1);\n result = valueWihoutBraces.trim().length > 0;\n }\n }\n return result;\n }\n\n static removeCurlyBraces(value) {\n let valueWihoutBraces = '';\n if (typeof value === 'string' && value.length > 1) {\n const firstChar = value.charAt(0);\n const lastChar = value.charAt(value.length - 1);\n\n if (firstChar === '{' && lastChar === '}') {\n valueWihoutBraces = value.substring(1, value.length - 1);\n } else {\n valueWihoutBraces = value;\n }\n }\n return valueWihoutBraces;\n }\n\n static isTermsValid(terms) {\n const conditionCorrect = [true];\n let errorText = '';\n\n if (terms !== null && terms !== undefined) {\n // this threshold is for preventing the term to be truncated while inserting to the database.\n if (JSON.stringify(terms).length > 65000) {\n return {\n success: false,\n text: translate('\"If term\" is too large, please split it to multiple conditions')\n };\n }\n\n const safeTerms = safeJSONParse(terms, false, true);\n\n if (!safeTerms) {\n return {\n success: false,\n text: translate('Unexpected Error')\n };\n }\n\n safeTerms.forEach(theTerm => {\n const { field, operator, value } = theTerm;\n if (field !== 'none' && operator !== 'none' && (value !== undefined && value !== 'none')) {\n if (theTerm.operator !== 'isFilled' && theTerm.operator !== 'isEmpty') {\n if (value.length === 0) {\n theTerm.isError = true;\n conditionCorrect.push(false);\n errorText = translate('Please type a value or select a field');\n } else {\n theTerm.isError = false;\n conditionCorrect.push(true);\n }\n } else {\n theTerm.isError = false;\n conditionCorrect.push(true);\n }\n } else {\n theTerm.isError = true;\n conditionCorrect.push(false);\n if (field === 'none') {\n errorText = translate('Please select field(s) to affect');\n } else if (operator === 'none') {\n errorText = translate('Please select a field state');\n } else {\n errorText = translate('Please select state/target for if term');\n }\n }\n if (theTerm.value === undefined) {\n theTerm.value = '';\n theTerm.isError = true;\n conditionCorrect.push(false);\n }\n if (conditionCorrect.indexOf(false) > -1) {\n return false;\n }\n });\n } else {\n conditionCorrect.push(false);\n errorText = translate('Either terms is null or undefined');\n }\n\n return {\n success: conditionCorrect.indexOf(false) === -1,\n text: errorText\n };\n }\n\n static isActionValid(actions, conditionType, questions) {\n let conditionActionCorrect = {};\n\n if (typeof conditionType === 'string' && actions !== null && actions !== undefined) {\n // validate condition do action fields\n switch (conditionType) {\n case 'field': // Show/Hide Field\n conditionActionCorrect = this.isFieldDoActionsValid(actions);\n break;\n\n case 'email': // Send an e-mail after submission\n conditionActionCorrect = this.isEmailDoActionsValid(actions);\n break;\n\n case 'mask': // setMask\n case 'require': // Change attributes of a Field\n conditionActionCorrect = this.isRequireOrSetMaskValid(actions);\n break;\n\n case 'page': // Skip to a page or end of the form\n conditionActionCorrect = this.isPageDoActionsValid(actions, questions);\n break;\n\n case 'calculation':\n conditionActionCorrect = this.isCalculationDoActionsValid(actions);\n break;\n\n case 'url': // Change Thank You URL\n conditionActionCorrect = this.isUrlDoActionsValid(actions);\n break;\n\n case 'message': // Change Thank You Message\n conditionActionCorrect = this.isMessageDoActionsValid(actions);\n break;\n\n default:\n }\n } else {\n return {\n success: false,\n text: 'Either conditionType or actions is null or undefined'\n };\n }\n\n return conditionActionCorrect;\n }\n\n static isParamsValid(condition, conditionParams, isUpdating) {\n let conditionParamsCorrect = { success: true, text: '' };\n // In case validations for other types could necessitate in future\n switch (condition.type) {\n case 'email':\n const { action = [{ to: '', mailType: '' }] } = condition;\n const { existingConditions = [] } = conditionParams;\n let conditions = existingConditions;\n\n if (this.isFreeAccount(conditionParams) && !this.isCoronaFighter(conditionParams)) {\n if (isUpdating === true) {\n if (existingConditions.length >= 1) {\n const otherConditions = existingConditions.filter(cond => cond.id !== condition.id);\n conditions = otherConditions;\n }\n }\n const isOverLimit = this.isOverLimitForNewEmailCondition(action, conditions, conditionParams.limits);\n if (isOverLimit) {\n conditionParamsCorrect = {\n success: false,\n text: isOverLimit\n };\n }\n }\n break;\n default:\n }\n return conditionParamsCorrect;\n }\n\n static isOverLimitForNewEmailCondition(action, existingConditions, limits) {\n const conditions = existingConditions === 0 ? [] : existingConditions;\n if (!Array.isArray(conditions)) return false;\n\n const isMoreThanOneEmail = (emails = '') => (emails.match(/@/g) || []).length > 1;\n const isLimitRewarded = limits.conditionalEmails !== undefined;\n\n const enabledEmailConditions = conditions.filter(cond => cond.type === 'email' && !cond.disabled);\n\n const getActionCountByType = type => enabledEmailConditions\n .filter(cnd => cnd.action.some(act => act.mailType === type))\n .length;\n\n const notificationCount = getActionCountByType('notification');\n // If more than one email address is added for free accounts, warn user\n // Addition to this, only one email notification rule can be added for free accounts\n if (enabledEmailConditions.length >= 3 || action.length > 3 && !isLimitRewarded) {\n return 'Users on a free plan can add a maximum of three conditional emails';\n }\n\n for (let i = 0; i < action.length; i++) {\n if (!isLimitRewarded && action[i].mailType === 'notification' && (isMoreThanOneEmail(action[i].to) || (notificationCount >= 1))) {\n return 'To use multiple recipients';\n }\n }\n\n return false;\n }\n\n static isFreeAccount(conditionParams) {\n return (conditionParams.isSubUser && (conditionParams.formOwnerAccountType === 'FREE' || conditionParams.formOwnerAccountType === 'GUEST'))\n || (!conditionParams.isSubUser && (conditionParams.userAccoutType === 'FREE' || conditionParams.userAccoutType === 'GUEST'));\n }\n\n static isCoronaFighter(conditionParams) {\n return conditionParams.isFormOwnerCoronaFighter === true;\n }\n\n static isMessageDoActionsValid(actions) {\n let conditionCorrect = true;\n let errorText = '';\n\n if (actions !== null && actions !== undefined) {\n actions.forEach(action => {\n if (typeof action.message === 'object' || (action.message !== undefined && action.message.trim().length > 0)) {\n action.isError = false;\n } else {\n action.isError = true;\n conditionCorrect = false;\n errorText = 'Please set a message';\n }\n });\n } else {\n conditionCorrect = false;\n errorText = 'actions is null or undefined';\n }\n\n return {\n success: conditionCorrect,\n text: translate(errorText)\n };\n }\n\n static isUrlDoActionsValid(actions) {\n let conditionCorrect = true;\n let errorText = '';\n\n if (actions !== null && actions !== undefined) {\n actions.forEach(theAction => {\n if (theAction.redirect !== 'none' && theAction.redirect !== undefined && theAction.redirect.trim().length > 0 && ConditionUtils.verifyURL(theAction.redirect)) {\n theAction.isError = false;\n } else {\n theAction.isError = true;\n conditionCorrect = false;\n errorText = 'Please set a valid url';\n }\n });\n } else {\n conditionCorrect = false;\n errorText = 'actions is null or undefined';\n }\n\n return {\n success: conditionCorrect,\n text: translate(errorText)\n };\n }\n\n static isChangeAttributesDoActionValid(actions) {\n let conditionCorrect = true;\n let errorText = '';\n\n if (actions !== null && actions !== undefined) {\n actions.forEach(theAction => {\n let conditionCorrectInternal = true;\n\n if (typeof theAction.visibility === 'undefined' || theAction.visibility === 'none') {\n conditionCorrectInternal = false;\n errorText = 'Please select do action';\n } else if ((theAction.visibility === 'Require' || theAction.visibility === 'Unrequire' || theAction.visibility === 'Disable' || theAction.visibility === 'Enable')\n && (typeof theAction.field === 'undefined' || theAction.field === 'none')) {\n conditionCorrectInternal = false;\n errorText = 'Please select a field for do action';\n } else if ((theAction.visibility === 'RequireMultiple' || theAction.visibility === 'UnrequireMultiple')\n && (typeof theAction.fields === 'undefined' || theAction.fields === 'none' || theAction.fields.length === 0 || theAction.fields[0] === 'none')) {\n errorText = 'Please select at least one field for do action';\n conditionCorrectInternal = false;\n }\n\n if (conditionCorrectInternal === false) {\n theAction.isError = true;\n conditionCorrect = false;\n } else {\n theAction.isError = false;\n delete theAction.isChangeAttributeOrSetMask;\n }\n });\n } else {\n conditionCorrect = false;\n errorText = 'actions is null or undefined';\n }\n\n return {\n success: conditionCorrect,\n text: translate(errorText)\n };\n }\n\n static isCalculationDoActionsValid(actions) {\n let conditionCorrect = true;\n let errorText = '';\n\n if (actions !== null && actions !== undefined) {\n actions.forEach(theAction => {\n let conditionCorrectInternal = true;\n\n // console.log( 'Equation is : ', theAction.equation );\n\n conditionCorrectInternal = true;\n\n if (typeof theAction.equation === 'undefined') {\n conditionCorrectInternal = false;\n // console.log( 'Equation missing' );\n } else {\n if (global.MathProcessor && !ConditionUtils.checkEquationValidity(theAction.equation)) {\n conditionCorrectInternal = false;\n // console.log( 'Calculation is not valid according to MathProcessor' );\n }\n\n if (ConditionUtils.equationMatchParantheses(theAction.equation) === false) {\n conditionCorrectInternal = false;\n // console.log( 'Equation paranthesis do not match' );\n }\n\n if (conditionCorrectInternal === true && (actions[0].resultField === undefined || actions[0].resultField === null || actions[0].resultField === '')) {\n conditionCorrectInternal = false;\n // console.log( 'Result field is incorrect' );\n }\n\n if (conditionCorrectInternal === true && theAction.equation === '') {\n conditionCorrectInternal = false;\n // console.log( 'Equation is empty' );\n }\n }\n\n if (conditionCorrectInternal === false) {\n theAction.isError = true;\n conditionCorrect = false;\n } else {\n theAction.isError = false;\n }\n });\n } else {\n conditionCorrect = false;\n errorText = 'actions is null or undefined';\n }\n\n return {\n success: conditionCorrect,\n text: translate(errorText)\n };\n }\n\n static isRequireOrSetMaskValid(actions) {\n let conditionCorrect = {\n success: true,\n text: ''\n };\n\n if (actions !== null && actions !== undefined) {\n for (let i = 0; i < actions.length; i++) {\n if (typeof actions[i].visibility === 'string' && actions[i].visibility === 'Mask') {\n conditionCorrect = this.isMaskDoActionsValid(actions);\n } else {\n conditionCorrect = this.isChangeAttributesDoActionValid(actions);\n }\n\n if (conditionCorrect.success === false) {\n break;\n }\n }\n } else {\n conditionCorrect.success = false;\n conditionCorrect.text = 'actions is null or undefined';\n }\n\n return conditionCorrect;\n }\n\n static isMaskDoActionsValid(actions) {\n let conditionCorrect = true;\n let errorText = '';\n\n if (actions !== null && actions !== undefined) {\n actions.forEach(theAction => {\n if (theAction.visibility === 'Mask' && (theAction.field === undefined || theAction.field === 'none' || theAction.field.trim() === ''\n || theAction.mask === undefined || theAction.mask === 'none' || theAction.mask.trim() === '')) {\n theAction.isError = true;\n conditionCorrect = false;\n errorText = 'Please set a proper mask for field';\n } else {\n theAction.isError = false;\n delete theAction.isChangeAttributeOrSetMask;\n }\n });\n } else {\n conditionCorrect = false;\n errorText = 'actions is null or undefined';\n }\n\n return {\n success: conditionCorrect,\n text: translate(errorText)\n };\n }\n\n static isPageDoActionsValid(actions, questions) {\n let conditionCorrect = true;\n let errorText = '';\n const invalidPageBreaks = ConditionUtils.getInvalidOptionsForHidePageCondition(questions);\n\n if (actions !== null && actions !== undefined) {\n actions.forEach(theAction => {\n if (theAction.skipTo === 'none' || theAction.skipTo === undefined) {\n theAction.isError = true;\n conditionCorrect = false;\n errorText = 'Please select a page';\n } else if (invalidPageBreaks && invalidPageBreaks.indexOf(theAction.skipTo) > -1 && theAction.skipHide === 'hidePage') {\n theAction.isError = true;\n conditionCorrect = false;\n errorText = 'Please select a valid page';\n } else {\n theAction.isError = false;\n }\n });\n } else {\n conditionCorrect = false;\n errorText = 'actions is null or undefined';\n }\n\n return {\n success: conditionCorrect,\n text: translate(errorText)\n };\n }\n\n static isPageExist(action, questions) {\n const invalidPageBreaks = ConditionUtils.getInvalidOptionsForHidePageCondition(questions);\n return !(invalidPageBreaks.indexOf(action.skipTo) > -1 && action.skipHide === 'hidePage');\n }\n\n static getInvalidOptionsForHidePageCondition(questions) {\n const pageBreaks = ConditionUtils.filterPagebreaks(questions);\n if (pageBreaks && pageBreaks.length >= 2) { // check the first and last page\n return [pageBreaks[0].key, pageBreaks[1].key, pageBreaks[pageBreaks.length - 1].key];\n }\n return null;\n }\n\n static isEmailDoActionsValid(actions) {\n let conditionCorrect = true;\n let errorText = '';\n\n if (actions !== null && actions !== undefined) {\n actions.forEach(theAction => {\n if (theAction.email === 'none' || (theAction.to === '' || theAction.to === undefined)) {\n theAction.isError = true;\n conditionCorrect = false;\n errorText = 'Please select a email';\n } else {\n theAction.isError = false;\n }\n });\n } else {\n conditionCorrect = false;\n errorText = 'actions is null or undefined';\n }\n\n return {\n success: conditionCorrect,\n text: translate(errorText)\n };\n }\n\n static isFieldDoActionsValid(actions) {\n let conditionCorrect = true;\n let errorText = '';\n\n if (actions !== null && actions !== undefined) {\n actions.forEach(theAction => {\n let conditionCorrectInternal = true;\n\n if (typeof theAction.visibility === 'undefined') {\n conditionCorrectInternal = false;\n errorText = 'Please select condition action';\n } else if (theAction.visibility === 'none') {\n conditionCorrectInternal = false;\n errorText = 'Please select condition action';\n } else if ((theAction.visibility === 'Show' || theAction.visibility === 'Hide') && (typeof theAction.field === 'undefined' || theAction.field === 'none') && (typeof theAction.value === 'undefined' || theAction.value === 'none')) {\n conditionCorrectInternal = false;\n errorText = 'Please select field(s) to affect';\n } else if ((theAction.visibility === 'ShowMultiple' || theAction.visibility === 'HideMultiple') && (typeof theAction.fields === 'undefined' || theAction.fields === 'none' || theAction.fields.length === 0 || theAction.fields[0] === 'none')) {\n conditionCorrectInternal = false;\n errorText = 'Please select field(s) to affect';\n }\n if (conditionCorrectInternal === false) {\n theAction.isError = true;\n conditionCorrect = false;\n } else {\n theAction.isError = false;\n }\n });\n } else {\n conditionCorrect = false;\n errorText = 'actions is null or undefined';\n }\n\n return {\n success: conditionCorrect,\n text: translate(errorText)\n };\n }\n\n static changeSkipToPageMoreReadable(skipAction, questions) {\n const pageBreaks = ConditionUtils.filterPagebreaks(questions);\n const pageId = parseInt(skipAction.replace('page-', ''), 10);\n const pageValue = `page-${pageId}`;\n const { text: pageText = 'MISSING PAGE' } = pageBreaks.find(pb => pb.key === pageValue) || {};\n return pageText;\n }\n\n static orderConditions(conditions) {\n if (isArray(conditions)) {\n return conditions.sort((a, b) => {\n if (parseInt(a.index, 10) < parseInt(b.index, 10)) {\n return -1;\n }\n if (parseInt(a.index, 10) > parseInt(b.index, 10)) {\n return 1;\n }\n return 0;\n });\n }\n\n return [];\n }\n\n static searchInConditionList(conditions, searchKey) {\n if (typeof searchKey !== 'string' || conditions === null || conditions === undefined) {\n return false;\n }\n\n return Boolean(conditions.some(condition => ConditionUtils.searchInCondition(condition, searchKey)));\n }\n\n static searchInCondition(list, searchKey) {\n if (typeof searchKey !== 'string' || list === null && list === undefined) {\n return false;\n }\n\n const sanitizedActionList = (typeof list.action === 'string' && JSON.parse(list.action)) || list.action;\n if (sanitizedActionList && sanitizedActionList.some(actionList => ConditionUtils.searchInConditionObj(actionList, searchKey))) {\n return true;\n }\n\n const sanitizedTerms = ((typeof list.terms === 'string' && JSON.parse(list.terms)) || list.terms);\n if (sanitizedTerms && sanitizedTerms.some(termList => ConditionUtils.searchInConditionObj(termList, searchKey))) {\n return true;\n }\n\n return this.filterFrom === 'dropdown' ? false : Boolean(ConditionUtils.searchInConditionType(list.type, searchKey));\n }\n\n static searchInConditionObj(obj, searchKey) {\n if (this.filterFrom === 'dropdown' && searchKey === '') {\n return true;\n }\n\n if (typeof searchKey !== 'string' || obj === null || obj === undefined) {\n return false;\n }\n\n const searchExeption = ['id', 'isError'];\n // matches the exact key if the search key is used for qids\n const regexp = new RegExp(searchKey, 'i');\n const regexpQid = new RegExp(`^${searchKey}$`, 'i');\n const isNum = /^\\d+$/.test(searchKey);\n const correctRegexp = isNum ? regexpQid : regexp;\n const entries = Object.entries(obj);\n return entries.some(([key, term]) => {\n if (searchExeption.indexOf(key) >= 0) {\n return false;\n }\n\n switch (true) {\n case key === 'fields': {\n if (!isArray(term)) {\n return false;\n }\n\n return term.some(termPart => this.filterFrom === 'dropdown' && termPart === searchKey || termPart.match(correctRegexp) || ConditionUtils.getFieldTextByQid(termPart, ConditionUtils.questions).match(correctRegexp));\n }\n case typeof term !== 'string':\n return false;\n case this.filterFrom === 'dropdown' && ((key === 'field' || key === 'resultField') && term.split('|')[0] === searchKey):\n return true;\n case (key === 'field' || key === 'resultField') && Boolean(ConditionUtils.getFieldTextByQid(term, ConditionUtils.questions).match(correctRegexp)):\n return true;\n case key === 'email' && Boolean(this.getEmailFromKey(this.formProperties?.emails || [], term.replace('email-', ''))?.name?.match(correctRegexp)):\n return true;\n case key === 'operator' && this.getComparisonOperatorByKey(term).length > 0 && Boolean(this.getComparisonOperatorByKey(term).match(correctRegexp)):\n return true;\n case key === 'operands' && term.split(',').includes(searchKey):\n return true;\n case key === 'equation' && term.includes(searchKey) && this.filterFrom === 'search':\n return true;\n case key === 'value' && term.includes(searchKey) && this.filterFrom === 'search':\n return true;\n case Boolean(term.match(correctRegexp)) && key !== 'value':\n return true;\n default:\n return false;\n }\n });\n }\n\n static searchInConditionType(type, searchKey) {\n const regexp = new RegExp(searchKey, 'i');\n return typeof this.conditionTitleString[type] !== 'undefined' && this.conditionTitleString[type].title.match(regexp);\n }\n\n static increaseConditionsIndexAndPriorityByOne(conditions) {\n const tempConditions = conditions;\n\n if (conditions !== null && conditions !== undefined) {\n for (let i = 0; i < tempConditions.length; i++) {\n const condition = tempConditions[i];\n const newPriority = parseInt(condition.priority, 10) + 1;\n const newIndex = parseInt(condition.index, 10) + 1;\n condition.priority = `${newPriority}`;\n condition.index = `${newIndex}`;\n }\n }\n\n return tempConditions;\n }\n\n static getPagebreakTextWithQuestionID(pageBreaks, question) {\n const value = pageBreaks.filter(pagebreak => pagebreak.qid === question.qid)?.[0];\n const { pageNum = '' } = value || {};\n const pageBreakName = question.pageInfo?.length > 0 ? `(${question.pageInfo})` : '';\n return `Page Break: ${pageNum} ${pageBreakName}`;\n }\n\n static filterPagebreaks(questions, addQuestionID = false) {\n const tempArray = [];\n tempArray.push({\n key: 'none',\n value: 'none',\n text: translate('Select page'),\n disabled: true\n });\n\n let pageNum = 2;\n const questionPageInfos = [];\n\n if (questions !== null && questions !== undefined) {\n questions.forEach(question => {\n if (question.type === 'control_pagebreak') {\n questionPageInfos.push({\n questionPageInfo: question.pageInfo !== '' ? `: ${question.pageInfo}` : '',\n ...(addQuestionID ? { qid: question?.qid } : {})\n });\n }\n });\n\n // push the first page with page info\n tempArray.push({\n key: 'page-1',\n value: `page-1${questionPageInfos[0]?.questionPageInfo === undefined ? '' : questionPageInfos[0]?.questionPageInfo}`,\n text: `${translate('Page')} 1${questionPageInfos[0]?.questionPageInfo === undefined ? '' : questionPageInfos[0]?.questionPageInfo}`,\n ...(addQuestionID ? { pageNum: 1 } : {}),\n ...(questionPageInfos[0]?.qid ? { qid: questionPageInfos[0]?.qid } : {})\n });\n questionPageInfos.forEach((questionPage, index) => {\n // push the second page to last page with page infos\n if (index < questionPageInfos.length - 1) {\n tempArray.push({\n key: `page-${pageNum}`,\n value: `page-${pageNum}`,\n text: `${translate('Page')} ${pageNum}${questionPageInfos[index + 1].questionPageInfo}`,\n ...(addQuestionID ? { pageNum } : {}),\n ...(questionPage?.qid ? { qid: questionPageInfos[index + 1]?.qid } : {})\n });\n } else {\n // push last page with first page's info because they are used same page info\n tempArray.push({\n key: `page-${pageNum}`,\n value: `page-${pageNum}`,\n text: `${translate('Page')} ${pageNum}: ${translate('Last Page')}`,\n ...(addQuestionID ? { pageNum } : {}),\n ...(questionPage?.qid ? { qid: questionPageInfos[index + 1]?.qid } : {})\n });\n }\n pageNum += 1;\n });\n }\n\n return tempArray;\n }\n\n static getDropDownOptionsForEmails(emails) {\n const emailOptions = [];\n\n emailOptions.push({\n id: 'none',\n key: 'none',\n text: translate('Select email'),\n disabled: true\n });\n\n if (emails !== null && emails !== undefined) {\n emails.forEach((email, i) => {\n emailOptions.push({\n id: email.name,\n key: `email-${i}`,\n text: email.name\n });\n });\n }\n\n return emailOptions;\n }\n\n static getEmailFromKey(emails, key) {\n return emails[key] || null;\n }\n\n static orderQuestions(questionz) {\n const questions = JSON.parse(JSON.stringify(questionz));\n if (questions !== null && questions !== undefined) {\n return questions.sort((a, b) => {\n let result;\n if (parseInt(a.order, 10) < parseInt(b.order, 10)) {\n result = -1;\n } else if (parseInt(a.order, 10) > parseInt(b.order, 10)) {\n result = 1;\n } else {\n result = 0;\n }\n return result;\n });\n }\n\n return [];\n }\n\n static filterQuestions(questions) {\n const excludedFields = NON_INPUT_QUESTIONS;\n return questions.filter(question => {\n return excludedFields.indexOf(question.type) < 0;\n });\n }\n\n static parseEquationToList(equation, questionsRaw) {\n let tempEquation = equation;\n let tempStack = '';\n let tempChar = '';\n let tempQuestion = '';\n let separatorCount = 0;\n let numberOpenerCount = 0;\n let tempStrings = '';\n let modeCalculator = false;\n\n const listItems = [];\n\n if (tempEquation !== '' && tempEquation !== undefined && tempEquation !== null) {\n for (let i = 0; i <= equation.length; i++) {\n tempChar = tempEquation.charAt(0);\n\n if (tempChar !== '') {\n tempStack += tempChar;\n tempEquation = tempEquation.substr(1);\n\n // Check if mode is calculation\n if (tempChar === '[') {\n // Check if a string exists and add it to the item list\n if (tempStrings !== '') {\n listItems.push({\n type: modeCalculator === true ? 'operator' : 'string',\n value: tempStrings,\n modeCalculator: modeCalculator\n });\n tempStrings = '';\n }\n modeCalculator = true;\n tempStack = '';\n }\n\n if (tempChar === ']') {\n // Check if a string exists and add it to the item list\n if (tempStrings !== '') {\n listItems.push({\n type: modeCalculator === true ? 'operator' : 'string',\n value: tempStrings,\n modeCalculator: modeCalculator\n });\n tempStrings = '';\n }\n modeCalculator = false;\n tempStack = '';\n }\n\n // evaluate\n if (tempChar === '{') {\n numberOpenerCount++;\n }\n\n if (tempChar === '}') {\n // Check if a string exists and add it to the item list\n if (tempStrings !== '') {\n listItems.push({\n type: 'string',\n value: tempStrings,\n modeCalculator: false\n });\n tempStrings = '';\n }\n\n // found question, extract number\n tempQuestion = tempStack;\n tempQuestion = tempQuestion.split('{').join('');\n tempQuestion = tempQuestion.split('}').join('');\n\n let qidReal;\n let fieldId;\n let isMatrixField = false;\n let isMultipleField = false;\n let tempQidSplit;\n\n if (tempQuestion.indexOf('_') > -1) {\n // found _ in question string, this should be a special item\n // maybe a matrix field, maybe something else?\n tempQidSplit = tempQuestion.split('_');\n qidReal = tempQidSplit[0];\n isMatrixField = true;\n } else if (tempQuestion.indexOf('|') > -1) {\n isMultipleField = true;\n tempQidSplit = tempQuestion.split('|');\n qidReal = tempQidSplit[0];\n fieldId = tempQidSplit[1];\n } else {\n qidReal = tempQuestion;\n }\n\n const tempQuestionInfo = ConditionUtils.getQuestionByQid(qidReal, questionsRaw);\n\n if (tempQuestionInfo !== null) {\n if (isMatrixField === false && isMultipleField === false) {\n listItems.push({\n type: 'question',\n value: tempQuestionInfo.text,\n qid: tempQuestionInfo.qid,\n modeCalculator: modeCalculator\n });\n } else if (isMultipleField === true) {\n if (tempQuestionInfo.type === 'control_inline') {\n const tempInlineField = tempQuestionInfo.fields.find(field => field.id === fieldId);\n listItems.push({\n type: 'question',\n value: `${tempQuestionInfo.text || 'Fill in the Blank'} / ${tempInlineField ? tempInlineField.label : '\"MISSING FIELD\"'}`,\n qid: tempQuestion,\n modeCalculator: modeCalculator\n });\n } else {\n listItems.push({\n type: 'question',\n value: `${tempQuestionInfo.text} / ${tempQuestionInfo.sublabels[`field_${fieldId}`]}`,\n qid: tempQuestion,\n modeCalculator: modeCalculator\n });\n }\n } else {\n listItems.push({\n type: 'question',\n value: `${tempQuestionInfo.qid}_${tempQidSplit[1]}_${tempQidSplit[2]}`,\n qid: tempQuestion,\n modeCalculator: modeCalculator\n });\n }\n }\n\n tempQuestion = '';\n tempStack = '';\n numberOpenerCount = 0;\n } else if (['(', ')', '+', '-', '*', '/', '.', ',', ' '].indexOf(tempChar) > -1) {\n // Check if a string exists and add it to the item list\n if (tempStrings !== '') {\n listItems.push({\n type: modeCalculator === true ? 'operator' : 'string',\n value: tempStrings,\n modeCalculator: modeCalculator\n });\n tempStrings = '';\n }\n\n // found special char\n listItems.push({\n type: modeCalculator === true ? 'operator' : 'string',\n value: tempChar,\n modeCalculator: modeCalculator\n });\n\n tempQuestion = '';\n tempStack = '';\n } else if (numberOpenerCount === 0 && ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0'].indexOf(tempChar) > -1) {\n // Check if a string exists and add it to the item list\n if (tempStrings !== '') {\n listItems.push({\n type: 'string',\n value: tempStrings,\n modeCalculator: modeCalculator\n });\n tempStrings = '';\n }\n\n tempQuestion = tempStack;\n\n if (Number.isNaN(Number.parseInt(tempQuestion, 10)) !== true) {\n listItems.push({\n type: 'number',\n value: tempQuestion,\n modeCalculator: modeCalculator\n });\n\n tempQuestion = '';\n tempStack = '';\n }\n } else if (tempChar === '©') {\n if (separatorCount === 1) {\n // Check if a string exists and add it to the item list\n if (tempStrings !== '') {\n listItems.push({\n type: 'string',\n value: tempStrings,\n modeCalculator: modeCalculator\n });\n tempStrings = '';\n }\n\n tempQuestion = tempStack.split('©').join('');\n\n listItems.push({\n type: 'math',\n value: tempQuestion,\n modeCalculator: modeCalculator\n });\n\n tempQuestion = '';\n tempStack = '';\n separatorCount = 0;\n } else {\n separatorCount++;\n }\n } else if (tempChar === '^') {\n // Check if a string exists and add it to the item list\n if (tempStrings !== '') {\n listItems.push({\n type: 'string',\n value: tempStrings,\n modeCalculator: modeCalculator\n });\n tempStrings = '';\n }\n\n // get next char :)\n tempQuestion = tempEquation.charAt(0);\n\n // smaller than?\n listItems.push({\n type: 'square',\n value: tempQuestion,\n modeCalculator: modeCalculator\n });\n\n tempQuestion = '';\n tempStack = '';\n } else if (separatorCount === 0 && numberOpenerCount === 0) {\n // Found String\n tempStrings += tempStack;\n\n tempQuestion = '';\n tempStack = '';\n }\n }\n }\n\n // Check if a string exists and add it to the item list\n if (tempStrings !== '') {\n // console.log( 'Parsing String as: ', tempStrings );\n listItems.push({\n type: 'string',\n value: tempStrings,\n modeCalculator: modeCalculator\n });\n tempStrings = '';\n }\n }\n\n // console.log( 'Parse finished with: ', listItems );\n\n return listItems;\n }\n\n static generateEquationFromList(equationList) {\n let renderedEquation = '';\n let calculateBracketOpen = false;\n let lastModeCalculator = false;\n\n if (equationList !== null && equationList !== undefined) {\n equationList.forEach(equationItem => {\n if (lastModeCalculator !== equationItem.modeCalculator) {\n // last modeCalculator value is different from the previous one\n // which means either it is opening or closing.\n\n if (calculateBracketOpen === false) {\n // opening\n renderedEquation += '[';\n calculateBracketOpen = true;\n } else {\n renderedEquation += ']';\n calculateBracketOpen = false;\n }\n }\n lastModeCalculator = equationItem.modeCalculator;\n\n switch (equationItem.type) {\n case 'deleted':\n case 'question':\n renderedEquation += `{${equationItem.qid}}`;\n break;\n\n case 'number':\n case 'string':\n case 'math_string':\n case 'operator':\n renderedEquation += equationItem.value;\n break;\n\n case 'math':\n renderedEquation += `|*|${equationItem.value}|*|`;\n break;\n\n case 'square':\n renderedEquation += `^${equationItem.value}`;\n break;\n\n default:\n // console.log( 'Item type not found:', equationItem.type );\n }\n });\n\n // finally, after the loop, if calculate bracket is open, close it.\n if (calculateBracketOpen === true) {\n renderedEquation += ']';\n }\n }\n\n // console.log( '' );\n // console.log( '' );\n // console.log( '' );\n // console.log( '-----------------' );\n // console.log( 'Final Equation:', renderedEquation, equationList );\n // console.log( '-----------------' );\n\n return renderedEquation;\n }\n\n static preprocessEquation(equation) {\n let equationProcessed = equation;\n\n if (equationProcessed === undefined || equationProcessed === null) {\n equationProcessed = '';\n }\n\n // Pre-process equation\n if (equationProcessed !== undefined) {\n equationProcessed = equationProcessed.split('|*|').join('©');\n // equationProcessed = equationProcessed.split( '[' ).join( '' );\n // equationProcessed = equationProcessed.split( ']' ).join( '' );\n } else {\n equationProcessed = '';\n }\n return equationProcessed;\n }\n\n static equationMatchParantheses(equation) {\n let result;\n const open = equation.match(/\\(/g) || [];\n const close = equation.match(/\\)/g) || [];\n if (open.length !== close.length) {\n result = false;\n } else {\n result = true;\n }\n return result;\n }\n\n static checkEquationValidity(equation, numeric) {\n let out = 'initial-value'; // in order not to return error in empty values\n\n for (let i = 0; i < equation.length; i++) {\n const character = equation.charAt(i);\n\n if (character === '[' && !numeric) {\n let end = '';\n const isFieldTypeString = equation.split('').filter(char => char === '[' || char === ']');\n if (isFieldTypeString.length > 2) {\n end = equation.indexOf(']', equation.indexOf(']') + 1);\n } else {\n end = equation.indexOf(']', i);\n }\n try {\n let num = ConditionUtils.checkEquationValidity(equation.substring(i + 1, end), true);\n if (num) {\n if (num.indexOf(',') === -1) { // normal calc string\n num = new MathProcessor().parse(num);\n }\n out += num;\n }\n } catch (e) {\n return false;\n }\n i = end;\n } else if (equation.substr(i, 3) === '|*|') {\n try {\n i += 3;\n const end = equation.indexOf('|*|', i);\n if (end === -1) continue;\n i += end + 2 - i;\n if (equation.charAt(i + 1) === '(' || (equation.charAt(i + 1) === '[' && equation.charAt(i + 2) === '(')) {\n i += (equation.charAt(i + 1) === '[') ? 3 : 2;\n let endSpecial = -1;\n let balance = 1;\n\n for (let k = i; k < equation.length; k++) {\n if (equation.charAt(k) === ')') {\n balance--;\n if (balance === 0) {\n endSpecial = k;\n break;\n }\n } else if (equation.charAt(k) === '(') {\n balance++;\n }\n }\n\n if (endSpecial === -1) continue;\n\n const args = equation.substring(i, endSpecial).split(',');\n\n for (let j = 0; j < args.length; j++) {\n args[j] = ConditionUtils.checkEquationValidity(args[j], true);\n if (args[j]) {\n args[j] = new MathProcessor().parse(args[j]);\n }\n }\n i += endSpecial - i;\n out += 0; // trivial value\n } else {\n out += 0; // trivial value\n }\n } catch (e) {\n return false;\n }\n } else if (character === '{') {\n const end = equation.indexOf('}', i);\n if (end < 0) {\n throw new Error();\n }\n out += numeric ? 1 : '1';\n i += end - i;\n } else {\n out += character;\n }\n }\n if (out === 'initial-value') { // in order not to return error in empty values\n return out;\n }\n return out.replace('initial-value', '');\n }\n\n static operandsFromEquation(equation) {\n const equationProcessed = equation;\n let operands = '';\n\n if (equationProcessed !== undefined && equationProcessed !== null) {\n operands = equationProcessed.match(/{(\\d+)?\\w+}|{(\\d+)\\|(\\d+)}/g) || [];\n // handle matrix fields\n if (operands === null) {\n operands = equationProcessed;\n } else {\n const tempOperands = [];\n operands.forEach(operand => {\n if (operand.indexOf('_') > -1) {\n tempOperands.push(`${operand.substring(0, operand.indexOf('_'))}}`);\n }\n });\n operands += tempOperands.join(',');\n }\n operands = operands.match(/{(\\d+)}|{(\\d+)\\|(\\d+)}/g) || [];\n operands = uniq(operands).join(',').replace(/({|})/g, '');\n }\n\n return operands;\n }\n\n static isLanguageSet(languagesString, language) {\n let result = false;\n\n if ((languagesString !== null && languagesString !== undefined && languagesString !== ''\n && languagesString[0] !== undefined && languagesString[0].options !== undefined)\n && (language !== null && language !== undefined && language !== '')) {\n const languageList = languagesString[0].options.split('|');\n\n for (let i = 0; i < languageList.length; i++) {\n if (languageList[i] === language) {\n result = true;\n break;\n }\n }\n }\n\n return result;\n }\n\n static replaceEquationWithQuestionFieldText(tempEquation, questions) {\n let equation = tempEquation;\n if (equation === null || equation === undefined) {\n equation = '';\n }\n\n if (equation === true || equation === false) {\n equation = '';\n }\n\n equation = equation.replace(/[\\][]/g, ''); // remove brackets\n let tempMatch = equation;\n tempMatch = tempMatch.replace(/[\\{\\}]/g, '');\n let subField = '';\n if (tempMatch.indexOf('_') > -1) { // matrix sub field\n subField = tempMatch.substring(tempMatch.indexOf('_'));\n tempMatch = tempMatch.substring(0, tempMatch.indexOf('_'));\n }\n\n tempMatch = ConditionUtils.getFieldTextByQid(tempMatch, questions);\n if (!tempMatch) {\n return '';\n }\n\n equation = tempMatch + subField;\n\n return equation;\n }\n\n static validateCalculationItemsValue(calculationItems, questions) {\n if (calculationItems === undefined || calculationItems === null || questions === undefined || questions === null) {\n return calculationItems;\n }\n\n calculationItems.forEach(calculationItem => {\n if (calculationItem.type === 'question') {\n const fieldText = this.getFieldTextByQid(calculationItem.qid, questions);\n if (fieldText !== undefined && fieldText !== null && fieldText === '\"MISSING FIELD\"') {\n calculationItem.value = fieldText;\n } else if (calculationItem.value === '') {\n calculationItem.value = fieldText;\n }\n }\n });\n\n return calculationItems;\n }\n\n static filterLanguageFieldFromQuestions(questions) {\n let tempQuestions = [];\n if (!isUndefined(questions) && !isNull(questions) && isArray(questions)) {\n tempQuestions = questions.filter(el => {\n return el.qid !== 'language';\n });\n }\n\n return tempQuestions;\n }\n\n static createItem(type, value, qid, modeCalculatorFlag) {\n let overrideModeCalculatorFlag = modeCalculatorFlag;\n const overrideValues = ['dateString', 'addDays', 'subtractDays'];\n if (overrideValues.includes(value)) {\n overrideModeCalculatorFlag = false;\n }\n\n let item = {};\n\n if (type === 'matrix_field' || type === 'question') {\n item = {\n type: type,\n value: value,\n qid: qid,\n modeCalculator: overrideModeCalculatorFlag\n };\n } else {\n item = {\n type: type,\n value: value,\n modeCalculator: overrideModeCalculatorFlag\n };\n }\n\n return item;\n }\n\n static verifyURL(str) {\n if (!global.JotForm.browserIs.ie() && (str.substr(0, 7) === 'http://' || str.substr(0, 8) === 'https://')) {\n try {\n return !!new URL(str);\n } catch (error) {\n return false;\n }\n }\n\n const pattern = new RegExp('^(https?:\\\\/\\\\/)?' // protocol\n + '((((\\\\{[a-z\\\\d-]+\\\\})|([a-z\\\\d-]([a-z\\\\d-]*[a-z\\\\d-])*))+\\\\.)+[a-z]{2,}|' // domain name\n + '((\\\\d{1,3}\\\\.){3}\\\\d{1,3}))' // OR ip (v4) address\n + '(\\\\:\\\\d+)?(\\\\/[-a-z\\\\d%_.~+\\\\{\\\\}\\\\[\\\\]]*)*' // port and path\n + '(\\\\?[^ \\\\t\\\\r\\\\n\\\\f]*)?' // query string\n + '(\\\\#[-a-z\\\\d_]*)?$', 'i'); // fragment locator\n return !!pattern.test(str);\n }\n\n static difference(origObj, newObj) {\n function changes(newObjTmp, origObjTmp) {\n let arrayIndexCounter = 0;\n return transform(newObjTmp, (result, value, key) => {\n if (!isEqual(value, origObjTmp[key])) {\n const resultKey = isArray(origObjTmp) ? arrayIndexCounter++ : key;\n result[resultKey] = (isObject(value) && isObject(origObjTmp[key])) ? changes(value, origObjTmp[key]) : value;\n }\n });\n }\n return changes(newObj, origObj);\n }\n}\nexport default ConditionUtils;\n","export const CONDITION_TITLE_MAP = {\n field: {\n title: 'SHOW / HIDE FIELD',\n color: 'blue'\n },\n calculation: {\n title: 'UPDATE / CALCULATE FIELD',\n color: 'blue'\n },\n email: {\n title: 'CHANGE E-MAIL RECIPIENT',\n color: 'purple'\n },\n require: {\n title: 'ENABLE / REQUIRE FIELD',\n color: 'blue'\n },\n page: {\n title: 'SKIP TO / HIDE A PAGE',\n color: 'green'\n },\n url: {\n title: 'CHANGE \"THANK YOU\" PAGE',\n color: 'green'\n },\n message: {\n title: 'CHANGE \"THANK YOU\" PAGE',\n color: 'green'\n },\n mask: {\n title: 'ENABLE / REQUIRE FIELD',\n color: 'blue'\n }\n};\n","import PropTypes from 'prop-types';\nimport React from 'react';\n\nimport { findSubField } from '@jotforminc/utils';\nimport { IconInfoCircleFilled } from '@jotforminc/svg-icons';\nimport Dropdown from '../../components/Dropdown';\nimport TextInput from '../../components/TextInput';\nimport Tooltip from '../../components/Tooltip';\nimport { constantTerms } from './constants/Terms';\nimport { default as ConstantCountries } from './constants/Countries';\nimport {\n UsStates, UsStatesAbr, GenderList, CanadianProvinces, CountryList, Days, Months, TimeZones, LocationCountries\n} from './constants/Specials';\nimport ConditionUtils from './ConditionUtils';\nimport { translate } from '../../mixins/Translation';\n\nlet dropdownContentOperator = [];\nlet dropdownContentValue = [];\n\n// THIS FILE IS ALSO USED IN WORKFLOW REPO, PLEASE BE CAREFUL!\nclass IfTerm extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n target: this.getTargetValue(this.props.value)\n };\n }\n\n getTargetValue(value) {\n if (value !== undefined && String(value).indexOf('}') !== -1 && !this.valueIsOption(value)) {\n return 'anotherField';\n }\n\n return 'value';\n }\n\n getVisibleName(str, index) {\n const [text] = str.split('|');\n if (text) {\n return text;\n }\n return `Option ${index + 1}`;\n }\n\n renderAddButton() {\n return (\n
    \n { this.props.handleAddButton(e); }}\n />\n
    \n );\n }\n\n renderRemoveButton() {\n return (\n
    \n { this.props.handleRemoveButton(e, this.props.id); }}\n />\n
    \n );\n }\n\n renderTermValue(options) {\n const questionField = ConditionUtils.getQuestionByQid(this.props.field, this.props.questions);\n let tempReturn = '';\n switch (this.state.target) {\n case 'none':\n tempReturn = '';\n break;\n case 'value':\n if (options.showDropdown !== true) {\n if (questionField !== null && questionField.paymentType !== undefined) {\n let dropdownValue = this.props.value;\n if (!dropdownValue || dropdownValue === null) {\n dropdownValue = 'none';\n }\n\n tempReturn = (\n
    \n { this.handleValueChange(e); }}\n />\n
    \n );\n } else if (questionField !== null && questionField.type === 'language') {\n tempReturn = (\n
    \n { this.handleValueChange(e); }}\n />\n
    \n );\n } else {\n const textInputValue = this.props.value || options.defaultValue;\n tempReturn = (\n
    \n { this.handleValueChange(e); }}\n />\n
    \n );\n }\n } else {\n tempReturn = (\n
    \n { this.handleValueChange(e); }}\n />\n
    \n );\n }\n break;\n case 'anotherField':\n const selectedQuestion = ConditionUtils.getQuestionByName(this.props.value, this.props.questions);\n let selectedQuestionName = '';\n if (selectedQuestion !== null && selectedQuestion !== undefined) {\n selectedQuestionName = `{${selectedQuestion.name}}`;\n }\n if (this.props.usedFromWorkflow) {\n selectedQuestionName = this.props.value;\n }\n\n const tempQuestions = ConditionUtils.filterLanguageFieldFromQuestions(this.props.questions);\n const targetQuestions = ConditionUtils.dropdownPrepareWithDisableForTarget(tempQuestions);\n\n tempReturn = (\n
    \n { this.handleValueChange(e); }}\n Renderer={this.props.TermRenderer}\n anotherFieldDropdown={this.state.target === 'anotherField'}\n fieldValue={this.props.field}\n />\n
    \n );\n break;\n\n default:\n }\n return tempReturn;\n }\n\n renderTooltip(termInfo) {\n let tempReturn = null;\n let header = null;\n\n if (termInfo.showHeader) {\n header = (\n
    \n \n {translate('Usage Info:')}\n \n
    \n
    \n );\n }\n\n if (termInfo.text.length > 0) {\n tempReturn = (\n \n
    \n \n
    \n \n { header }\n { termInfo.text }\n \n \n );\n }\n\n return tempReturn;\n }\n\n render() {\n const questionsIf = ConditionUtils.dropdownPrepareWithDisable(this.props.questions, this.props.builderType);\n\n const targetDropDownOptions = [{ id: 'value', key: 'value', text: translate('Value') }, { id: 'anotherField', key: 'anotherField', text: translate('Another Field') }];\n\n // Detect if the \"field\" has a special type like quantity type for products\n let isSelectedFieldProduct = false;\n const tempField = `${this.props.field}`;\n const isPaymentProduct = ConditionUtils.isPaymentProduct(this.props.field, this.props.questions);\n if (tempField.indexOf('_') > 0) {\n isSelectedFieldProduct = true;\n // checks if it is used from workflow; since workflow doesnt support products, avoid quantity type for now\n if (this.props?.usedFromWorkflow) {\n const selectedQuestion = this.props?.questions?.find(question => question?.qid === `${this.props?.field}`);\n if (selectedQuestion && (!selectedQuestion.paymentType || isPaymentProduct)) {\n isSelectedFieldProduct = false;\n }\n }\n }\n\n let paymentQuestionId = false;\n if (this.props.products !== undefined && this.props.products !== null) {\n // Detect payment control\n this.props.questions.forEach(question => {\n if (question.paymentType !== undefined) {\n paymentQuestionId = question;\n }\n });\n\n // look through products and search for options that are set for quantity\n this.props.products.forEach(product => {\n if (product.options !== undefined) {\n let parsedOptions;\n if (typeof product.options === 'string') {\n parsedOptions = JSON.parse(product.options);\n } else {\n parsedOptions = product.options;\n }\n\n parsedOptions.forEach((option, optionIndex) => {\n if (paymentQuestionId !== false && option.type !== undefined && option.type === 'quantity') {\n // \"7_quantity_1001_0\"\n questionsIf.push({\n id: paymentQuestionId,\n key: `${paymentQuestionId.qid}_` + 'quantity' + `_${product.pid}_${optionIndex}`,\n text: `${paymentQuestionId.name}: ${product.name} ${translate('(Quantity Product)')}`\n });\n }\n });\n }\n });\n }\n\n let selectedQuestion;\n // distinct between payment field and actual selected \"product\" (used for match with quantities)\n if (paymentQuestionId !== false && isSelectedFieldProduct !== false) {\n selectedQuestion = paymentQuestionId;\n } else {\n selectedQuestion = this.props.questions.find(question => {\n const qid = `${this.props.field}`;\n let qidFinal = '';\n\n if (qid.indexOf('|') > -1) {\n const slicedQid = qid.split('|');\n qidFinal = `${question.qid}` === slicedQid[0];\n } else {\n qidFinal = `${question.qid}` === this.props.field;\n }\n\n return qidFinal;\n });\n }\n\n let showTarget = this.props.showTarget;\n\n if ((typeof selectedQuestion !== 'undefined' && selectedQuestion.type === 'language') || (isPaymentProduct === true)) {\n showTarget = false;\n }\n\n let showDropdown = false;\n let defaultValue = '';\n let termInfo = {\n text: '',\n showHeader: true\n };\n\n if (typeof selectedQuestion !== 'undefined') {\n // Handle Multiline question for each of its child question types\n if (selectedQuestion.type === 'control_mixed' && selectedQuestion.fields) {\n const childQid = this.props.field.split('|')[1];\n for (let index = 0; index < selectedQuestion.fields.length; index += 1) {\n const childQuestion = selectedQuestion.fields[index];\n // eqeqeq is not used because ID is coming as integer or string depending on number of child questions\n if (childQuestion && childQuestion.fieldID == childQid) { // eslint-disable-line eqeqeq\n switch (childQuestion.type) {\n case 'dropdown':\n if (childQuestion.options) {\n selectedQuestion.options = childQuestion.options.split('\\n').join('|');\n }\n selectedQuestion.type = 'control_dropdown';\n break;\n case 'number':\n selectedQuestion.type = 'control_number';\n break;\n case 'email':\n selectedQuestion.type = 'control_email';\n break;\n case 'phone':\n selectedQuestion.type = 'control_phone';\n break;\n case 'textbox':\n default:\n selectedQuestion.type = 'control_textbox';\n break;\n }\n // Question found\n break;\n }\n }\n }\n\n if (this.props.usedFromWorkflow && selectedQuestion && selectedQuestion?.type === 'control_inline' && selectedQuestion.fields) {\n const qid = `${this.props.field}`;\n const slicedQid = qid.split('|');\n const subfieldID = slicedQid[1];\n\n const subfield = findSubField(selectedQuestion, subfieldID);\n selectedQuestion = subfield;\n selectedQuestion.options = Array.isArray(selectedQuestion?.options)\n ? selectedQuestion?.options.reduce((a, b) => (`${a?.label || a}|${b.label || ''}`))\n : (selectedQuestion?.options || '');\n }\n switch (selectedQuestion.type) {\n case 'language':\n this.dropdownStateFill(['language']);\n\n dropdownContentValue = [];\n\n dropdownContentValue.push({\n text: translate('Select language'),\n value: 'none',\n type: ''\n });\n\n const language = this.props.formProperties.language;\n const languageList = language[0].options.split('|');\n\n languageList.forEach(keyLanguage => {\n dropdownContentValue.push({\n text: keyLanguage,\n value: keyLanguage,\n type: ''\n });\n });\n break;\n\n case 'control_email':\n case 'control_text':\n case 'control_textbox':\n case 'control_autocomp':\n case 'control_textarea':\n case 'control_hidden':\n this.dropdownStateFill([\n 'exact',\n 'partial'\n ]);\n break;\n\n case 'control_mixed':\n // We should not be here, however let's fill it with generic one\n this.dropdownStateFill([\n 'exact'\n ]);\n break;\n\n case 'control_signature':\n this.dropdownStateFill([\n 'value_check'\n ]);\n break;\n\n case 'control_calculation':\n this.dropdownStateFill([\n 'numeric',\n 'exact',\n 'partial'\n ]);\n break;\n\n case 'control_checkbox':\n case 'control_radio':\n case 'control_dropdown':\n case 'control_imagechoice':\n case 'control_yesno':\n this.dropdownStateFill([\n 'exact'\n ]);\n dropdownContentValue = [];\n dropdownContentValue.push({\n text: translate('Select option'),\n key: '',\n type: ''\n });\n const isImageChoice = selectedQuestion.type === 'control_imagechoice';\n let tempItems;\n if (this.props.usedFromWorkflow) {\n // if the question is from workflow and if the question doesn't have options, don't add an empty string to the dropdown content\n if (Array.isArray(selectedQuestion.options)) {\n tempItems = selectedQuestion.options.map(opt => opt && `${opt.text.trim() || ''}|${opt.link || ''}`);\n } else {\n tempItems = (selectedQuestion.options.toString() === '') ? [] : selectedQuestion.options.toString().split('|');\n }\n } else {\n tempItems = Array.isArray(selectedQuestion.options)\n ? selectedQuestion.options.map(opt => opt && `${opt.text.trim() || ''}|${opt.link || ''}`)\n : selectedQuestion.options.toString().split('|');\n }\n\n for (let i = 0; i < tempItems.length; i++) {\n dropdownContentValue.push(\n {\n text: !isImageChoice ? tempItems[i] : this.getVisibleName(tempItems[i], i),\n key: tempItems[i],\n type: ''\n }\n );\n }\n tempItems = [];\n\n if (selectedQuestion.allowOther === 'Yes') {\n dropdownContentValue.push(\n {\n text: `-- ${selectedQuestion.otherText} --`,\n value: `-- ${selectedQuestion.otherText} --`,\n type: ''\n }\n );\n }\n showDropdown = true;\n\n if (selectedQuestion.special !== undefined && selectedQuestion.special !== 'None') {\n switch (selectedQuestion.special) {\n case 'US States':\n dropdownContentValue = [];\n dropdownContentValue = UsStates;\n break;\n\n case 'US States Abbr':\n dropdownContentValue = [];\n dropdownContentValue = UsStatesAbr;\n break;\n\n case 'Canadian Provinces':\n dropdownContentValue = [];\n dropdownContentValue = CanadianProvinces;\n break;\n\n case 'Countries':\n dropdownContentValue = [];\n dropdownContentValue = CountryList;\n break;\n\n case 'LocationCountries':\n dropdownContentValue = [];\n dropdownContentValue = LocationCountries;\n break;\n\n case 'Last 100 Years':\n dropdownContentValue = [];\n const date = new Date();\n const cyear = (date.getYear() < 1000) ? date.getYear() + 1900 : date.getYear();\n for (let year = cyear; year >= (cyear - 100); year--) {\n dropdownContentValue.push({\n key: year,\n text: year\n });\n }\n dropdownContentValue.unshift({\n key: 'none',\n text: translate('Select option')\n });\n break;\n\n case 'Gender':\n dropdownContentValue = [];\n dropdownContentValue = GenderList;\n break;\n\n case 'Time Zones':\n dropdownContentValue = [];\n dropdownContentValue = TimeZones;\n break;\n\n case 'Months':\n dropdownContentValue = [];\n dropdownContentValue = Months;\n break;\n\n case 'Days':\n dropdownContentValue = [];\n dropdownContentValue = Days;\n break;\n\n default:\n }\n }\n\n break;\n\n case 'control_spinner':\n case 'control_slider':\n case 'control_rating':\n case 'control_scale':\n case 'control_number':\n case 'control_autoincrement':\n case 'control_emojislider':\n this.dropdownStateFill([\n 'exact',\n 'numeric'\n ]);\n break;\n\n case 'control_range':\n case 'control_fileupload':\n case 'control_fullname':\n case 'control_phone':\n this.dropdownStateFill([\n 'value_check'\n ]);\n break;\n\n case 'control_2co':\n case 'control_authnet':\n case 'control_bluepay':\n case 'control_bluesnap':\n case 'control_braintree':\n case 'control_cardconnect':\n case 'control_clickbank':\n case 'control_dwolla':\n case 'control_echeck':\n case 'control_eway':\n case 'control_firstdata':\n case 'control_paypalInvoicing':\n case 'control_googleco':\n case 'control_onebip':\n case 'control_payment':\n case 'control_paymentwall':\n case 'control_paymill':\n case 'control_paypal':\n case 'control_paypalexpress':\n case 'control_paypalpro':\n case 'control_paypalcomplete':\n case 'control_payjunction':\n case 'control_chargify':\n case 'control_stripe':\n case 'control_stripeCheckout':\n case 'control_stripeACH':\n case 'control_stripeACHManual':\n case 'control_square':\n case 'control_worldpay':\n case 'control_worldpayus':\n case 'control_payu':\n case 'control_payuMoney':\n case 'control_pagseguro':\n case 'control_moneris':\n case 'control_sofort':\n case 'control_sensepass':\n case 'control_paysafe':\n case 'control_iyzico':\n case 'control_skrill':\n case 'control_gocardless':\n case 'control_mollie':\n case 'control_paypalSPB':\n case 'control_cybersource':\n case 'control_payfast':\n if (isSelectedFieldProduct === false) {\n this.dropdownStateFill([\n 'exact'\n ]);\n\n dropdownContentValue = [];\n\n const tempProducts = this.props.products;\n dropdownContentValue.push({\n text: translate('Select product'),\n value: 'none',\n type: ''\n });\n for (const keyProduct in tempProducts) {\n if (tempProducts.hasOwnProperty(keyProduct)) {\n dropdownContentValue.push({\n text: tempProducts[keyProduct].name,\n value: tempProducts[keyProduct].pid,\n type: ''\n });\n }\n }\n } else {\n this.dropdownStateFill([\n 'quantityNumeric'\n ]);\n }\n\n break;\n\n case 'control_datetime':\n case 'control_birthdate':\n\n this.dropdownStateFill([\n 'date',\n 'value_check'\n ]);\n\n dropdownContentValue = [];\n\n if (typeof this.props.operator !== 'undefined' && this.props.operator !== 'equalDay' && this.props.operator !== 'notEqualDay') {\n showDropdown = false;\n defaultValue = (new Date()).toISOString().split('T')[0];\n termInfo = {\n text: translate('Static Dates: YYYY-MM-DD. Dynamic Dates:today +1 today -1'),\n showHeader: true\n };\n } else {\n dropdownContentValue = [];\n dropdownContentValue = Days;\n\n showDropdown = true;\n }\n break;\n\n case 'control_time':\n\n this.dropdownStateFill([\n 'exact',\n 'time'\n ]);\n\n termInfo = {\n text: translate('Select \"After\" from state and set the time like \"13:00\"'),\n showHeader: true\n };\n\n break;\n\n case 'control_address':\n dropdownContentValue = [];\n this.dropdownStateFill([\n 'value_check',\n 'address'\n ]);\n\n break;\n\n case 'control_button':\n dropdownContentOperator = [];\n break;\n\n case 'control_grading':\n this.dropdownStateFill([\n 'exact',\n 'grading'\n ]);\n\n break;\n\n case 'control_widget':\n this.dropdownStateFill([\n 'exact',\n 'partial',\n 'numeric'\n ]);\n\n break;\n\n case 'control_matrix':\n this.dropdownStateFill([\n 'matrix',\n 'value_check'\n ]);\n termInfo = {\n text: translate('Separate multiple possible values with commas.'),\n showHeader: true\n };\n\n break;\n case 'control_inline':\n this.dropdownStateFill([\n 'exact',\n 'partial'\n ]);\n break;\n\n case 'control_appointment':\n this.dropdownStateFill([\n 'exact',\n 'date'\n ]);\n\n dropdownContentValue = [];\n\n if (typeof this.props.operator !== 'undefined' && this.props.operator !== 'equalDay' && this.props.operator !== 'notEqualDay') {\n showDropdown = false;\n defaultValue = `${(new Date()).toISOString().split('T')[0]} 00:00`;\n termInfo = {\n text: translate('Static Dates: YYYY-MM-DD HH:MM.'),\n showHeader: true\n };\n } else {\n dropdownContentValue = [];\n dropdownContentValue = Days;\n\n showDropdown = true;\n }\n break;\n\n default:\n dropdownContentOperator = [];\n break;\n }\n } else {\n this.dropdownStateFill([\n 'none'\n ]);\n dropdownContentValue = [];\n }\n\n if (typeof this.props.operator !== 'undefined') {\n switch (this.props.operator) {\n case 'isEmpty':\n case 'isFilled':\n break;\n\n case 'equalDay':\n case 'notEqualDay':\n break;\n\n case 'equalCountry':\n case 'notEqualCountry':\n dropdownContentValue.push({\n text: translate('Select country'),\n value: 'none',\n type: '',\n disabled: true\n });\n ConstantCountries.forEach(elementCountry => {\n dropdownContentValue.push({\n text: elementCountry,\n value: elementCountry,\n type: ''\n });\n });\n showDropdown = true;\n break;\n case 'equalState':\n case 'notEqualState':\n // if state section is us state dropdown in adress field\n if (selectedQuestion.states === 'americanStates') {\n UsStates.forEach(elementState => {\n dropdownContentValue.push({\n text: elementState.text,\n value: elementState.text,\n type: ''\n });\n });\n showDropdown = true;\n break;\n } else {\n break;\n }\n\n default:\n break;\n }\n }\n\n const renderShowAddButton = this.props.showAddButton && this.renderAddButton();\n const renderShowRemoveButton = this.props.showRemoveButton && this.renderRemoveButton();\n\n const termValueOptions = {\n showDropdown: showDropdown,\n defaultValue: defaultValue\n };\n const renderTermValue = this.renderTermValue(termValueOptions);\n const renderTooltip = this.renderTooltip(termInfo);\n const renderDisabledTooltip = this.renderTooltip({\n text: translate('Gray (Disabled) fields can not be used as a condition trigger point.'),\n showHeader: false\n });\n\n let valueOrField = translate('VALUE');\n if (this.state.target === 'anotherField') {\n valueOrField = translate('Field');\n }\n\n let cssValue = '';\n if (this.props.operator === 'isEmpty' || this.props.operator === 'isFilled') {\n cssValue = 'clearfix isDisabled u-hide';\n } else if (this.props.operator === 'none') {\n cssValue = 'line clearfix isDisabled u-unselectable';\n } else {\n cssValue = 'clearfix';\n }\n\n return (\n
    \n
    \n
    \n { renderShowAddButton }\n { renderShowRemoveButton }\n
    \n
    \n\n
      \n
    • \n
      \n \n { translate('If') }\n \n
      \n
      \n
      \n
      { renderDisabledTooltip }
      \n { this.handleFieldChange(e, defaultValue); }}\n Renderer={this.props.TermRenderer}\n />\n
      \n
      \n
    • \n\n
    • \n
      \n \n { translate('STATE') }\n \n
      \n
      \n { this.handleOperatorChange(e, defaultValue); }}\n Renderer={this.props.DropdownRenderer}\n />\n
      \n
    • \n\n
    • \n
      \n \n { translate('Target') }\n \n
      \n
      \n { this.handleTargetChange(e, defaultValue); }}\n Renderer={this.props.DropdownRenderer}\n />\n
      \n
    • \n\n
    • \n
      \n \n { valueOrField }\n \n
      \n
      \n
      \n { renderTermValue }\n { renderTooltip }\n
      \n
      \n
    • \n
    \n
    \n );\n }\n\n valueIsOption(value) {\n const { questions, field } = this.props;\n let isOption = false;\n const currentQuestion = questions.find(question => {\n return question.qid === field && question.options !== undefined;\n });\n if (currentQuestion === undefined) {\n return false;\n }\n const options = currentQuestion.options.split('|');\n isOption = options.includes(value);\n return isOption;\n }\n\n handleFieldChange(e, defaultValue) {\n this.props.handleFieldChange({\n id: this.props.id,\n field: e.target.value\n });\n this.props.handleOperatorChange({\n id: this.props.id,\n operator: 'none'\n });\n this.props.handleValueChange({\n id: this.props.id,\n value: defaultValue\n });\n this.setState({ target: this.getTargetValue(defaultValue) });\n }\n\n handleOperatorChange(e, defaultValue) {\n this.props.handleOperatorChange({\n id: this.props.id,\n operator: e.target.value\n });\n this.props.handleValueChange({\n id: this.props.id,\n value: defaultValue\n });\n }\n\n handleTargetChange(e, defaultValue) {\n this.setState({\n target: e.target.value\n });\n\n this.props.handleTargetChange(this.props.id);\n this.props.handleValueChange({\n id: this.props.id,\n value: defaultValue\n });\n }\n\n handleValueChange(e) {\n this.props.handleValueChange({\n id: this.props.id,\n value: e.target.value\n });\n }\n\n dropdownStateFill(objectType) {\n dropdownContentOperator = [];\n dropdownContentOperator.push(\n {\n text: translate('Select field state'),\n value: 'none',\n key: 'none',\n type: ['none'],\n disabled: true\n }\n );\n constantTerms().forEach(stateSingle => {\n stateSingle.type.forEach(stateLoop => {\n objectType.forEach(objectTypeSingle => {\n if (objectTypeSingle === stateLoop) {\n dropdownContentOperator.push({\n id: stateSingle.value,\n key: stateSingle.value,\n text: stateSingle.text\n });\n }\n });\n });\n });\n }\n}\n\nIfTerm.propTypes = {\n id: PropTypes.string.isRequired,\n isError: PropTypes.bool,\n field: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired,\n operator: PropTypes.string.isRequired,\n questions: PropTypes.array.isRequired,\n products: PropTypes.array,\n formProperties: PropTypes.object,\n showAddButton: PropTypes.bool.isRequired,\n showRemoveButton: PropTypes.bool.isRequired,\n showTarget: PropTypes.bool.isRequired,\n handleAddButton: PropTypes.func,\n handleRemoveButton: PropTypes.func,\n handleFieldChange: PropTypes.func,\n handleOperatorChange: PropTypes.func,\n handleValueChange: PropTypes.func,\n handleTargetChange: PropTypes.func,\n builderType: PropTypes.string,\n TermRenderer: PropTypes.elementType,\n DropdownRenderer: PropTypes.elementType,\n usedFromWorkflow: PropTypes.bool\n};\n\nIfTerm.defaultProps = {\n usedFromWorkflow: false\n};\n\nexport default IfTerm;\n","/*\n Term to use in the dropdown according to the field type\n {\n text => visual represantation of a term\n value => programatic representation\n type => to define which type of term is this\n }\n */\nimport { translate } from '../../../mixins/Translation';\n\nexport function constantTerms() {\n return [\n {\n text: translate('Is Equal To'),\n value: 'equals',\n type: ['exact']\n },\n {\n text: translate('Quantity is Equal to'),\n value: 'quantityEquals',\n type: ['quantityNumeric']\n },\n {\n text: translate('Quantity is Not Equal to'),\n value: 'quantityNotEquals',\n type: ['quantityNumeric']\n },\n {\n text: translate('Quantity is Less Than'),\n value: 'quantityLess',\n type: ['quantityNumeric']\n },\n {\n text: translate('Quantity is Greater Than'),\n value: 'quantityGreater',\n type: ['quantityNumeric']\n },\n {\n text: translate('Is Not Equal To'),\n value: 'notEquals',\n type: ['exact']\n },\n {\n text: translate('Contains'),\n value: 'contains',\n type: ['partial', 'matrix']\n },\n {\n text: translate('Does not Contain'),\n value: 'notContains',\n type: ['partial', 'matrix']\n },\n {\n text: translate('Starts With'),\n value: 'startsWith',\n type: ['partial']\n },\n {\n text: translate('Doesn\\'t Start With'),\n value: 'notStartsWith',\n type: ['partial']\n },\n {\n text: translate('Ends With'),\n value: 'endsWith',\n type: ['partial']\n },\n {\n text: translate('Doesn\\'t End With'),\n value: 'notEndsWith',\n type: ['partial']\n },\n {\n text: translate('Is Empty'),\n value: 'isEmpty',\n type: ['exact', 'value_check']\n },\n {\n text: translate('Is Filled'),\n value: 'isFilled',\n type: ['exact', 'value_check']\n },\n {\n text: translate('Less Than'),\n value: 'lessThan',\n type: ['numeric']\n },\n {\n text: translate('Greater Than'),\n value: 'greaterThan',\n type: ['numeric']\n },\n {\n text: translate('Before'),\n value: 'before',\n type: ['date', 'time']\n },\n {\n text: translate('After'),\n value: 'after',\n type: ['date', 'time']\n },\n {\n text: translate('Is Equal to Date'),\n value: 'equalDate',\n type: ['date']\n },\n {\n text: translate('Not Equal to Date'),\n value: 'notEqualDate',\n type: ['date']\n },\n {\n text: translate('Is Equal to Day'),\n value: 'equalDay',\n type: ['date']\n },\n {\n text: translate('Not Equal to Day'),\n value: 'notEqualDay',\n type: ['date']\n },\n {\n text: translate('Country Equals'),\n value: 'equalCountry',\n type: ['address']\n },\n {\n text: translate('Country Doesn\\'t Equal'),\n value: 'notEqualCountry',\n type: ['address']\n },\n {\n text: translate('State Equals'),\n value: 'equalState',\n type: ['address']\n },\n {\n text: translate('State Doesn\\'t Equal'),\n value: 'notEqualState',\n type: ['address']\n },\n {\n text: translate('Total Greater Than'),\n value: 'greaterThan',\n type: ['grading']\n },\n {\n text: translate('Total Less Than'),\n value: 'lessThan',\n type: ['grading']\n },\n {\n text: translate('Total Equals'),\n value: 'equals',\n type: ['grading']\n },\n {\n text: translate('Is Equal To'),\n value: 'equals',\n type: ['language']\n },\n {\n text: translate('Is Not Equal To'),\n value: 'notEquals',\n type: ['language']\n }\n ];\n}\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport isString from 'lodash/isString';\nimport IfTerm from './IfTerm';\nimport Dropdown from '../../components/Dropdown';\nimport ConditionUtils from './ConditionUtils';\nimport { translate } from '../../mixins/Translation';\n\n// THIS FILE IS ALSO USED IN WORKFLOW REPO, PLEASE BE CAREFUL!\nclass IfTermsContainer extends React.Component {\n renderRuleMatch() {\n if (this.props.terms.length <= 1) {\n return false;\n }\n return (\n
    \n {translate('If')}\n this.props.onConditionLinkChange(e)}\n options={[{ id: 'Any', key: 'Any', text: translate('Any') }, { id: 'All', key: 'All', text: translate('All') }]}\n value={this.props.link}\n />\n {translate('OF THE “IF” RULES ARE MATCHED')}\n ,\n
    \n );\n }\n\n render() {\n const listTerms = this.props.terms.map((term, i) => {\n // detect if term is a product\n let qidField = false;\n // TODO: check if this condition ever exist??? Checking product type this way???\n if (term.field.length > 3) {\n const tempTerm = term.field.split('_');\n qidField = `${tempTerm[0]}`;\n } else {\n qidField = `${term.field}`;\n }\n\n const selectedQuestion = this.props.questions.find(question => {\n if (qidField.indexOf('|') > -1) {\n const slicedQid = qidField.split('|');\n return `${question.qid}` === slicedQid[0];\n }\n if (this.props?.usedFromWorkflow && question?.qid?.indexOf('_') > -1) {\n const slicedQid = question?.qid?.split('_');\n return `${qidField}` === slicedQid?.[0];\n }\n return `${question.qid}` === qidField;\n });\n\n let showTarget = false;\n\n let termIsError;\n let termValue;\n\n if (selectedQuestion !== undefined) {\n let excludedQuestion = ['none', 'control_dropdown', 'control_checkbox', 'control_radio', 'control_yesno'];\n\n // mixed to dropdown converter for multiline question field conditions\n // if multiline->dropdown selected, concat the control_mixed to excludedQuestion\n if (selectedQuestion.type && selectedQuestion.type === 'control_mixed') {\n const n = qidField.indexOf('|') + 1;\n const fieldID = qidField.substring(n);\n selectedQuestion.fields.forEach(element => {\n if (element.fieldID && element.fieldID === fieldID) {\n if (element.type && element.type === 'dropdown') {\n excludedQuestion = excludedQuestion.concat(['control_mixed']);\n }\n }\n });\n }\n\n if ((term.operator !== 'isFilled' && term.operator !== 'isEmpty' && term.operator !== 'none') && (excludedQuestion.indexOf(selectedQuestion.type) === -1)) {\n // Condition is found\n showTarget = true;\n } else {\n showTarget = false;\n }\n termIsError = term.isError;\n termValue = term.value;\n\n // check if the language is still exist\n if (isString(term.field) && term.field === 'language' && isString(term.value) && term.value !== '') {\n const isLanguageExist = ConditionUtils.isLanguageSet(this.props.formProperties.language, term.value);\n if (isLanguageExist === false) {\n term.value = '';\n termValue = '';\n }\n }\n } else {\n // Condition is not found\n showTarget = false;\n termValue = '';\n\n // Change the field value to \"none\" if the question cannot be matched from field.\n // Otherwise the \"IF\" value says \"Please select\" however the value is not equal to \"none\"\n // Which results in the condition being skipped on save\n if (term.field !== 'none') {\n term.field = 'none';\n }\n\n // Determine if the render event is being triggered from an actual \"Save\" event or the user\n // Selects a condition for the first time\n if (term.isError === undefined) {\n termIsError = false;\n } else {\n termIsError = true;\n }\n }\n\n return (\n 1}\n showTarget={showTarget}\n handleAddButton={() => { this.handleIfAdd(); }}\n handleRemoveButton={(e, id) => { this.handleIfRemove(e, id); }}\n handleFieldChange={dataChange => { this.handleFieldChange(dataChange); }} // change question\n handleOperatorChange={dataChange => { this.handleOperatorChange(dataChange); }} // change operator (2nd)\n handleValueChange={dataChange => { this.handleValueChange(dataChange); }} // change value\n handleTargetChange={id => { this.handleTargetChange(id); }}\n builderType={this.props.builderType}\n TermRenderer={this.props.TermRenderer}\n DropdownRenderer={this.props.DropdownRenderer}\n usedFromWorkflow={this.props.usedFromWorkflow}\n />\n );\n });\n // this.validateAndNotify();\n return (\n
    \n { listTerms }\n { this.renderRuleMatch() }\n
    \n );\n }\n\n handleIfAdd() {\n const terms = this.props.terms;\n const validationType = {\n containerType: 'ifterm',\n items: terms\n };\n if (this.props.containerValidation(validationType).success) {\n terms.unshift(this.addEmptyTerm());\n }\n\n this.props.onChange(terms);\n }\n\n handleIfRemove(e, id) {\n let terms = this.props.terms;\n terms = terms.filter(term => {\n return term.id !== id;\n });\n this.props.onChange(terms);\n }\n\n handleFieldChange(dataChange) {\n const id = dataChange.id;\n const field = dataChange.field;\n const terms = this.props.terms;\n terms.forEach(term => {\n if (term.id === id) {\n // abuse forEach to change the array we are iterating\n term.field = field;\n term.isError = false;\n }\n });\n this.props.onChange(terms);\n }\n\n handleOperatorChange(dataChange) {\n const id = dataChange.id;\n const operator = dataChange.operator;\n const terms = this.props.terms;\n terms.forEach(term => {\n if (term.id === id) {\n // abuse forEach to change the array we are iterating\n term.operator = operator;\n term.isError = false;\n }\n });\n this.props.onChange(terms);\n }\n\n handleValueChange(dataChange) {\n const id = dataChange.id;\n const value = dataChange.value;\n const terms = this.props.terms;\n terms.forEach(term => {\n if (term.id === id) {\n // abuse forEach to change the array we are iterating\n term.value = value;\n term.isError = false;\n }\n });\n this.props.onChange(terms);\n }\n\n handleTargetChange(id) {\n const terms = this.props.terms;\n terms.forEach(term => {\n if (term.id === id) {\n term.value = '';\n term.isError = false;\n }\n });\n this.props.onChange(terms);\n }\n\n addEmptyTerm() {\n const tempTerms = {\n id: `term_${new Date().getTime()}`,\n // field: this.props.questions[0].qid,\n field: 'none',\n operator: 'none',\n value: ''\n };\n return tempTerms;\n }\n}\n\nIfTermsContainer.propTypes = {\n terms: PropTypes.array,\n link: PropTypes.string,\n questions: PropTypes.array,\n products: PropTypes.array,\n onChange: PropTypes.func,\n onConditionLinkChange: PropTypes.func,\n formProperties: PropTypes.object,\n containerValidation: PropTypes.func,\n builderType: PropTypes.string,\n // Note :: below 2 properties added for workflow\n TermRenderer: PropTypes.elementType,\n DropdownRenderer: PropTypes.elementType,\n usedFromWorkflow: PropTypes.bool\n};\n\nIfTermsContainer.defaultProps = {\n usedFromWorkflow: false\n};\n\nexport default IfTermsContainer;\n","import { getRevision } from '@jotforminc/router-bridge';\nimport { t } from '@jotforminc/translation';\n\nexport const ActionTypes = {\n // User constants\n USER_API_KEYS_LOADING: 'user:api-keys-loading',\n USER_API_KEYS_LOADED: 'user:api-keys-loaded',\n USER_API_KEYS_LOAD_ERROR: 'user:api-keys-load-failed',\n USER_API_KEYS_AUTHORIZE_ERROR: 'user:api-keys-load-failed',\n CREATING_API_KEY: 'user:api-key-creating',\n CREATED_API_KEY: 'user:api-key-created',\n CREATING_API_KEY_ERROR: 'user:api-key-creating-failed',\n CREATING_API_KEY_AUTHORIZE_ERROR: 'user:api-key-creating-failed',\n UPDATING_API_KEY: 'user:api-key-updating',\n UPDATED_API_KEY: 'user:api-key-updated',\n UPDATING_API_KEY_ERROR: 'user:api-key-updating-failed',\n UPDATING_API_KEY_AUTHORIZE_ERROR: 'user:api-key-updating-failed',\n // fetch user data\n USER_DATA_LOADED: 'user:loaded',\n USER_DATA_LOADING: 'user:loading',\n USER_DATA_LOAD_ERROR: 'user:load-error',\n USER_DATA_AUTHORIZE_ERROR: 'user:authorize-error',\n USER_DATA_UPDATED: 'user:updated',\n // fetch user uploads\n USER_UPLOADS_LOADED: 'user:uploads:loaded',\n USER_UPLOADS_LOADING: 'user:uploads:loading',\n USER_UPLOADS_LOAD_ERROR: 'user:uploads:load-error',\n USER_UPLOADS_AUTHORIZE_ERROR: 'user:uploads:authorize-error',\n USER_UPLOADS_DELETING: 'user:uploads:deleting',\n USER_UPLOADS_DELETE_ERROR: 'user:uploads:delete-error',\n USER_UPLOADS_DELETED: 'user:uploads:deleted',\n USER_UPLOADS_ADD: 'user:uploads:add',\n USER_MULTIPLE_UPLOADS_ADD: 'user:multiple:uploads:add',\n // Form Properties constants\n FORM_PROPERTIES_LOADING: 'form-properties:loading',\n FORM_PROPERTIES_LOADED: 'form-properties:loaded',\n FORM_PROPERTIES_LOAD_ERROR: 'form-properties:load-failed',\n FORM_PROPERTIES_AUTHORIZE_ERROR: 'form-properties:load-failed',\n FORM_PROPERTIES_UPDATED: 'form-properties:updated',\n FORM_PROPERTIES_COMMITTED: 'form-properties:committed',\n FORM_PROPERTIES_UPDATE_ERROR: 'form-properties:updating-failed',\n FORM_PROPERTIES_UPDATE_AUTHORIZE_ERROR: 'form-properties:updating-failed',\n // User Forms constants\n USER_FORMS_LOADING: 'user-forms:loading',\n USER_FORMS_LOADED: 'user-forms:loaded',\n USER_FORMS_LOAD_ERROR: 'user-forms:load-failed',\n USER_FORMS_AUTHORIZE_ERROR: 'user-forms:authorize-error',\n // Integration constants\n CURRENT_INTEGRATIONS_LOADED: 'integrations:current-loaded',\n INTEGRATIONS_LOADED: 'integrations:loaded',\n BUILDER_CUSTOMIZATION_STATUS_LOADED: 'integrations:builder-customization-status-loaded',\n INTEGRATIONS_INTEGRATED: 'integrations:integrated',\n INTEGRATION_AUTH_STARTED: 'integrations:auth-started',\n INTEGRATION_AUTH_SUCCESS: 'integrations:auth-success',\n INTEGRATION_AUTH_FAIL: 'integrations:auth-fail',\n INTEGRATION_SHOULD_RECONNECT_ACCOUNT: 'integrations:account-should-reconnect',\n INTEGRATION_UPDATE_APP_STATE: 'integrations:update-app-state',\n INTEGRATION_LIST_OPTIONS_LOADED: 'integrations:list-options-loaded',\n INTEGRATION_LIST_OPTIONS_FAILED: 'integrations:list-options-failed',\n INTEGRATION_CLIENT_OPTIONS_LOADED: 'integrations:client-options-loaded',\n INTEGRATION_RESET: 'integrations:reset',\n INTEGRATION_RESET_ALL: 'integrations:reset-all',\n INTEGRATION_SAVE_STARTED: 'integrations:save-started',\n INTEGRATION_SAVE_SUCCESS: 'integrations:save-success',\n INTEGRATION_ITEM_SAVE_SUCCESS: 'integrations:item-save-success',\n INTEGRATION_SAVE_FAIL: 'integrations:save-fail',\n INTEGRATION_NOT_DIRTY: 'integrations:not-dirty',\n INTEGRATION_LIST_FORM_FIELDS_STARTED: 'integrations:list-form-fields-started',\n INTEGRATION_LIST_FORM_FIELDS_FAIL: 'integrations:list-form-fields-fail',\n INTEGRATION_LIST_FORM_FIELDS_SUCCESS: 'integrations:list-form-fields-success',\n INTEGRATION_CREATE_FOLDER_LOADING: 'integrations:create-folder-loading',\n INTEGRATION_CREATE_FOLDER_FAIL: 'integrations:create-folder-fail',\n INTEGRATION_CREATE_FOLDER_SUCCESS: 'integrations:create-folder-success',\n INTEGRATION_LIST_GROUP_SUCCESS: 'integrations:list-group-success',\n INTEGRATION_TEXT_CHANGED: 'integrations:text-changed',\n INTEGRATION_TAGS_SUCCESS: 'integrations:tags-success',\n INTEGRATION_CONFIG_REQUEST: 'integrations:config-request',\n INTEGRATION_CONFIG_SUCCESS: 'integrations:config-success',\n INTEGRATION_CONFIG_FAILURE: 'integrations:config-failure',\n INTEGRATION_CONFIG_RESET: 'integrations:config-reset',\n WEBHOOKS_CLEAR_URL: 'integrations:webhooks-cleared',\n ICONTACT_FOLDERID_SETTED: 'integrations:icontacts-folderid-success',\n EGNYTE_FOLDERLIST_LOADED: 'integrations:egnyte-folderlist-loaded',\n MAILCHIMP_MARKETINGPERMISSIONS_LOADED: 'integraitons:mailchimp-marketingpermissions-loaded',\n INITIALIZE_APP_FROM_CURRENT_INTEGRATION: 'integrations:initialize-app-from-current-integration',\n UPDATE_CURRENT_INTEGRATION: 'integrations:update-current-integration',\n REMOVE_CURRENT_INTEGRATION: 'integrations:remove-current-integration',\n SET_CURRENT_ERRORS: 'integrations:set_current_errors',\n\n // Prefill constants\n SET_LIST_ENTRIES: 'prefills:set-list-entries',\n PREFILLS_SET_ACCOUNTS: 'prefills:set-accounts',\n PREFILLS_SET: 'prefills:set',\n PREFILLS_UPDATE: 'prefills:update',\n PREFILLS_RESET: 'prefills:reset',\n PREFILLS_REMOVE: 'prefills:remove',\n PREFILLS_SET_TARGETS: 'prefills:set-targets',\n PREFILLS_SET_LISTS: 'prefills:set-lists',\n SET_SALESFORCE_TOKEN: 'set-salesforce-token',\n PREFILLS_SET_URL: 'prefills:set-url',\n PREFILLS_REMOVE_URL: 'prefills:remove-url',\n PREFILLS_UPDATE_URL: 'prefills:update-url',\n PREFILLS_UPDATE_UI: 'prefills:update-ui',\n RESET_STORE: 'prefills:reset-store',\n\n // Payment constants\n PAYMENT_INIT: 'payment:init',\n PAYMENT_CHANGEMODE: 'payment:changemode',\n PAYMENT_CHANGEPAYMENTTYPE: 'payment:changepaymenttype',\n PAYMENT_CHANGESHOWTOTAL: 'payment:changeshowtotal',\n PAYMENT_CHANGEMODEWITHDATA: 'payment:changemodewithdata',\n PAYMENT_CHANGEPAYMENTQUESTION: 'payment:changepaymentquestion',\n PAYMENT_CHANGEPAYMENTQUESTIONMULTIPROPS: 'payment:changepaymentquestionmultiprops',\n PAYMENT_GETDATA: 'payment:getdata',\n PAYMENT_ORDERPRODUCTS: 'payment:orderproducts',\n PAYMENT_UPDATESTORE: 'payment:updatestore',\n PAYMENT_SAVEPRODUCT: 'payment:saveproduct',\n PAYMENT_ADDPRODUCT: 'payment:addproduct',\n PAYMENT_SETONLYPRODUCT: 'payment:setonlyproduct',\n PAYMENT_ENABLEPRODUCT: 'payment:enableproduct',\n PAYMENT_DISABLEPRODUCT: 'payment:disableproduct',\n PAYMENT_DUPLICATEPRODUCT: 'payment:duplicateproduct',\n PAYMENT_DELETEPRODUCT: 'payment:deleteproduct',\n PAYMENT_SAVEWORLDPAY: 'payment:saveworldpay',\n PAYMENT_SETACTIVEPRODUCTOPTION: 'payment:setactiveproductoption',\n PAYMENT_SETACTIVEPRODUCT: 'payment:setactiveproduct',\n PAYMENT_UPDATEACTIVEPRODUCTOPTION: 'payment:updateactiveproductoption',\n PAYMENT_UPDATEACTIVEPRODUCT: 'payment:updateactiveproduct',\n PAYMENT_SETSUGGESTEDPRODUCT: 'payment:setsuggestedproduct',\n PAYMENT_DUPLICATEOPTION: 'payment:duplicateoption',\n\n PAYMENT_SAVESUBSCRIPTION: 'payment:savesubscription',\n PAYMENT_SETACTIVESUBSCRIPTION: 'payment:setactivesubscription',\n PAYMENT_UPDATEACTIVESUBSCRIPTION: 'payment:updateactivesubscription',\n\n PAYMENT_ADDCOUPON: 'payment:addcoupon',\n PAYMENT_SAVECOUPON: 'payment:savecoupon',\n PAYMENT_EDITCOUPON: 'payment:editcoupon',\n PAYMENT_ORDERCOUPONS: 'payment:ordercoupons',\n PAYMENT_SETACTIVETAB: 'payment:setactivetab',\n PAYMENT_SETACTIVEPRODUCTTAB: 'payment:setactiveproducttab',\n PAYMENT_SAVEGLOBALCOUPONTEXT: 'payment:saveglobalcoupontext',\n PAYMENT_DUPLICATECOUPON: 'payment:duplicatecoupon',\n PAYMENT_CHANGECOUPONVISIBILITY: 'payment:changecouponvisibility',\n PAYMENT_DELETECOUPON: 'payment:deletecoupon',\n PAYMENT_GETCOUPONUSAGES: 'payment:getcouponusages',\n PAYMENT_UPDATEACTIVECOUPON: 'payment:updateactivecoupon',\n\n PAYMENT_BULKADDSTRIPEPLANS: 'payment:bulkAddStripePlan',\n PAYMENT_BULKADDSTRIPECOUPONS: 'payment:bulkaddstripecoupons',\n\n PAYMENT_SETSTRIPECOUPONUSAGE: 'payment:setstripecouponusage',\n PAYMENT_SETSTRIPESUBSCRIPTIONUSAGE: 'payment:setstripesubscriptionusage',\n\n PAYMENT_SAVETAX: 'payment:savetax',\n\n PAYMENT_SETACTIVETAX: 'payment:setactivetax',\n PAYMENT_SAVESHIPPING: 'payment:saveshipping',\n\n PAYMENT_ADDFETCHEDSUBSCRIPTIONPRODUCTS: 'payment:addfetchedsubscriptionproducts',\n\n PAYMENT_SETACTIVEQUANTITY: 'payment:setactivequantity',\n PAYMENT_UPDATEACTIVEQUANTITYOPTION: 'payment:updateactivequantityoption',\n\n PAYMENT_CLEARPRODUCTS: 'payment:clearproducts',\n\n PAYMENT_SETDIRTYFLAG: 'payment:setdirtyflag',\n\n PAYMENT_ORDERPRODUCTIMAGES: 'payment:orderproductimages',\n PAYMENT_ORDERSUBSCRIPTIONIMAGES: 'payment:ordersubscriptionimages',\n PAYMENT_REMOVEPRODUCTSLIDERIMAGE: 'payment:removeproductsliderimage',\n PAYMENT_REMOVESUBSCRIPTIONSLIDERIMAGE: 'payment:removesubscriptionsliderimage',\n\n // PaymentListSettings\n PAYMENT_SAVEPAYMENTLISTSETTINGS: 'paymet:savepaymentlistsettings',\n PAYMENT_ADDPAYMENTCATEGORY: 'paymet:addpaymentcategory',\n PAYMENT_ADDPAYMENTCATEGORYWITHOUTEMIT: 'payment:addpaymentcategorywithoutemit',\n PAYMENT_DELETEPAYMENTCATEGORY: 'payment:deletepaymentcategory',\n PAYMENT_EDITPAYMENTCATEGORY: 'payment:editpaymentcategory',\n PAYMENT_CHANGEPAYMENTCATEGORYORDER: 'payment:changepaymentcategoryorder',\n PAYMENT_SETGLOBALNOTIFICATION: 'payment:setglobalnotification',\n\n // ProductCategoryOrder\n PAYMENT_ADDPRODUCTCATEGORYORDER: 'payment:addproductcategoryorder',\n PAYMENT_ADDPRODUCTCATEGORYORDERWITHOUTEMIT: 'payment:addproductcategoryorderwithoutemit',\n PAYMENT_REMOVEPRODUCTCATEGORYORDER: 'payment:removeproductcategoryorder',\n PAYMENT_CHANGECATEGORYPRODUCTORDER: 'payment:changecategoryproductorder',\n\n PAYMENT_SAVEINVOICE: 'payment:saveinvoice',\n PAYMENT_BULKSAVEINVOICE: 'payment:bulksaveinvoice',\n\n // Active Product Key\n PAYMENT_ADDUPDATEDACTIVEPRODUCTKEY: 'payment:addupdatedactiveproductkey',\n PAYMENT_RESETUPDATEDACTIVEPRODUCTKEY: 'payment:resetupdatedactiveproductkey',\n\n PAYMENT_SETPRODUCTSARRAY: 'payment:setproductsarray',\n PAYMENT_SETPREVIEWINVOICEBTNVISIBILITY: 'payment:setpreviewinvoicebtnvisibility',\n PAYMENT_SETISCOUPONEDITEDFLAG: 'payment:setiscouponeditedflag',\n PAYMENT_SETISSTOCKCHANGED: 'payment:setisstockchanged',\n\n PAYMENT_SETADDPAYMENTBUTTONCLICKEDFLAG: 'payment:setaddpaymentbuttonclickedflag',\n // Conditions constants\n CONDITION_ADDED: 'condition:added',\n CONDITION_BULK_ADDED: 'condition:bulk_added',\n CONDITION_BULK_UPDATED: 'condition:bulk-updated',\n CONDITION_DELETED: 'condition:deleted',\n CONDITION_DISABLED: 'condition:disabled',\n CONDITION_ENABLED: 'condition:enabled',\n CONDITION_DUPLICATED: 'condition:duplicated',\n CONDITION_EMAIL_UPDATED: 'condition:email-updated',\n CONDITION_DIRTY: 'condition:is-dirty',\n CONDITION_MULTIPLE_DISABLE: 'condition:multiple-disable',\n CONDITION_MULTIPLE_ENABLE: 'condition:multiple-enable',\n CONDITION_MULTIPLE_DELETE: 'condition:multiple-delete'\n};\n\n// Form User Email constants\nexport const FormUsersActionTypes = {\n FORM_USERS_LOADED: 'formUsers:loaded',\n FORM_USERS_ADDED: 'formUsers:added',\n FORM_USERS_REVOKED: 'formUsers:revoked',\n FORM_USER_UPDATED: 'formUser:updated',\n FORM_USER_APPROVED: 'formUser:approved',\n FORM_USER_HIGHLIGHTED: 'formUser:higlighted'\n};\n\nexport const FormPortalsActionTypes = {\n FORM_PORTALS_FETCHED: 'formPortals:loaded'\n};\n\nexport const TeamsActionTypes = {\n TEAM_PROPERTIES_FETCHED: 'teamProps:loaded',\n TEAM_MEMBERS_FETCHED: 'teamUsers:loaded'\n};\n\n// Form User Email constants\nexport const FormUserEmailContentActionTypes = {\n EMAIL_CONTENT_LOADED: 'formUserEmailContent:loaded'\n};\n\n// Question constants\nexport const QuestionActionTypes = {\n QUESTIONS_LOADING: 'questions:loading',\n QUESTIONS_LOADED: 'questions:loaded',\n QUESTIONS_LOAD_ERROR: 'questions:loading-failed',\n QUESTIONS_AUTHORIZE_ERROR: 'questions:loading-failed',\n QUESTION_CREATED: 'questions:created',\n QUESTION_UPDATING: 'questions:updating',\n QUESTION_UPDATE_ERROR: 'questions:updating-failed',\n QUESTION_UPDATED: 'questions:updated',\n QUESTION_DELETED: 'questions:deleted'\n};\n\n// App view constants\nexport const ViewActionTypes = {\n CLOSE_MODULE: 'app:module-close',\n SCROLLED: 'app:scroll',\n // TODO: aren't these just form properties?\n SLUG_SAVING: 'app:slug-saving',\n SLUG_SAVED: 'app:slug-saved'\n};\n\n// Widget constants\nexport const WidgetActionTypes = {\n WIDGETS_LOADING: 'widgets:loading',\n WIDGETS_LOADED: 'widgets:loaded',\n WIDGETS_LOAD_ERROR: 'widgets:loading-failed',\n WIDGET_LOADING: 'widget:loading',\n WIDGET_LOADED: 'widget:loaded',\n WIDGET_LOAD_ERROR: 'widget:loading-failed',\n WIDGET_UPDATING: 'widget:updating',\n WIDGET_UPDATE_ERROR: 'widget:updating-failed',\n WIDGET_UPDATED: 'widget:updated'\n};\n\nexport const SafeharborActionTypes = {\n SAFEHARBOR_TRANSFER_STARTING: 'safeharbor:transfer-starting',\n SAFEHARBOR_TRANSFER_STARTED: 'safeharbor:transfer-started',\n SAFEHARBOR_TRANSFER_START_ERROR: 'safeharbor:transfer-start-error',\n SAFEHARBOR_TRANSFER_START_AUTHORIZE_ERROR: 'safeharbor:transfer-start-authorize-error',\n SAFEHARBOR_TRANSFER_STATUS_LOADED: 'safeharbor:transfer-transfer-status-loaded',\n SAFEHARBOR_TRANSFER_STATUS_LOAD_ERROR: 'safeharbor:transfer-transfer-status-load-error',\n SAFEHARBOR_TRANSFER_STATUS_AUTHORZE_ERROR: 'safeharbor:transfer-transfer-status-load-error',\n SAFEHARBOR_TRANSFER_STATUS_CANCELLED: 'safeharbor:transfer-transfer-status-cancelled'\n};\n\nexport const EmailActionTypes = {\n EMAILS_INIT: 'emails:init',\n EMAIL_ADDED: 'emails:added',\n EMAIL_UPDATED: 'emails:updated',\n EMAIL_REMOVED: 'emails:removed'\n};\n\n// Email settings action tpyes\nexport const EmailSettingsActionTypes = {\n EMAIL_SETTINGS_FETCHING: 'emailsettings:fetching',\n EMAIL_SETTINGS_FETCH_SUCCESS: 'emailsettings:success',\n EMAIL_SETTINGS_FETCH_ERROR: 'emailsettings:error'\n};\n\nexport const ExportDataActionTypes = {\n EXPORTDATA_INIT: 'exportdata:init',\n EXPORTDATA_ADDED: 'exportdata:added'\n};\n\nexport const LanguageActionTypes = {\n LANGUAGE_FILE_LOADING: 'language:lang-file-loading',\n LANGUAGE_FILE_LOAD_ERROR: 'language:lang-file-load-error',\n LANGUAGE_FILE_LOADED: 'language:lang-file-loaded',\n TRANSLATION_SAVING: 'language:translation-saving',\n TRANSLATION_SAVE_ERROR: 'language:translation-save-error',\n TRANSLATION_SAVED: 'language:translation-saved'\n};\n\nexport const ReminderEmailActionTypes = {\n REMINDER_EMAILS_INIT: 'reminder_emails:init',\n REMINDER_EMAIL_ADDED: 'reminder_emails:added',\n REMINDER_EMAIL_UPDATED: 'reminder_emails:updated',\n REMINDER_EMAIL_REMOVED: 'reminder_emails:removed',\n REMINDER_GET_SCHEDULE: 'reminder_emails:get-schedule',\n REMINDER_GET_SCHEDULE_ERROR: 'reminder_emails:get-schedule-error',\n APP_STATUS_CHANGED: 'reminder_emails:app-status-changed'\n};\n\nexport const SFLivePrefillActionTypes = {\n ENABLED_PROVIDER_FETCHING: 'sf-prefill:ENABLED_PROVIDER_FETCHING',\n ENABLED_PROVIDER_FETCH_SUCCESS: 'sf-prefill:ENABLED_PROVIDER_FETCH_SUCCESS',\n ENABLED_PROVIDER_FETCH_ERROR: 'sf-prefill:ENABLED_PROVIDER_FETCH_ERROR',\n SETTINGS_FETCHING: 'sf-prefill:SETTINGS_FETCHING',\n SETTINGS_FETCH_SUCCESS: 'sf-prefill:SETTINGS_FETCH_SUCCESS',\n SETTINGS_FETCH_ERROR: 'sf-prefill:SETTINGS_FETCH_ERROR',\n SETTINGS_DELETING: 'sf-prefill:SETTINGS_DELETING',\n SETTINGS_DELETE_SUCCESS: 'sf-prefill:SETTINGS_DELETE_SUCCESS',\n SETTINGS_DELETE_ERROR: 'sf-prefill:SETTINGS_DELETE_ERROR',\n CREATE_FETCHING: 'sf-prefill:CREATE_FETCHING',\n CREATE_FETCH_SUCCESS: 'sf-prefill:CREATE_FETCH_SUCCESS',\n CREATE_FETCH_ERROR: 'sf-prefill:CREATE_FETCH_ERROR',\n UPDATE_FETCHING: 'sf-prefill:UPDATE_FETCHING',\n UPDATE_FETCH_SUCCESS: 'sf-prefill:UPDATE_FETCH_SUCCESS',\n UPDATE_FETCH_ERROR: 'sf-prefill:UPDATE_FETCH_ERROR',\n GENERATE_TOKEN_SUCCESS: 'sf-prefill:GENERATE_TOKEN_SUCCESS',\n OBJECTS_FETCHING: 'sf-prefill:OBJECTS_FETCHING',\n OBJECTS_FETCH_SUCCESS: 'sf-prefill:OBJECTS_FETCH_SUCCESS',\n OBJECTS_FETCH_ERROR: 'sf-prefill:OBJECTS_FETCH_ERROR',\n TARGET_FIELD_FETCHING: 'sf-prefill:TARGET_FIELD_FETCHING',\n TARGET_FIELD_FETCH_SUCCESS: 'sf-prefill:TARGET_FIELD_FETCH_SUCCESS',\n TARGET_FIELD_FETCH_ERROR: 'sf-prefill:TARGET_FIELD_FETCH_ERROR',\n CREATE: 'sf-prefill:CREATE',\n CLEAR: 'sf-prefill:CLEAR',\n SELECT_SOURCE: 'sf-prefill:SELECT_SOURCE',\n CANCEL_SOURCE: 'sf-prefill:CANCEL_SOURCE',\n ADD_EMPTY_SOURCE: 'sf-prefill:ADD_EMPTY_SOURCE',\n DELETE_SOURCE: 'sf-prefill:DELETE_SOURCE',\n UPDATE_SOURCE_NAME: 'sf-prefill:UPDATE_SOURCE_NAME',\n UPDATE_SOURCE_OBJECT: 'sf-prefill:UPDATE_SOURCE_OBJECT',\n UPDATE_SOURCE_DISABLED: 'sf-prefill:UPDATE_SOURCE_DISABLED',\n ADD_EMPTY_SOURCE_FILTER: 'sf-prefill:ADD_EMPTY_SOURCE_FILTER',\n DELETE_SOURCE_FILTER: 'sf-prefill:DELETE_SOURCE_FILTER',\n UPDATE_FILTER_TARGET_FIELD: 'sf-prefill:UPDATE_FILTER_TARGET_FIELD',\n UPDATE_FILTER_SOURCE: 'sf-prefill:UPDATE_FILTER_SOURCE',\n UPDATE_FILTER_SOURCE_FIELD: 'sf-prefill:UPDATE_FILTER_SOURCE_FIELD',\n UPDATE_FILTER_OPERATOR: 'sf-prefill:UPDATE_FILTER_OPERATOR',\n ACTION_FOR_MULTIPLE_MATCH: 'sf-prefill:ACTION_FOR_MULTIPLE_MATCH',\n ADD_EMPTY_SOURCE_MAPPING: 'sf-prefill:ADD_EMPTY_SOURCE_MAPPING',\n DELETE_SOURCE_MAPPING: 'sf-prefill:DELETE_SOURCE_MAPPING',\n UPDATE_SOURCE_MAPPING: 'sf-prefill:UPDATE_SOURCE_MAPPING',\n UPDATE_MAPPING_FIELD: 'sf-prefill:UPDATE_MAPPING_FIELD',\n UPDATE_MAPPING_QID: 'sf-prefill:UPDATE_MAPPING_QID',\n CONTACTS_FETCHING: 'sf-prefill:CONTACTS_FETCHING',\n CONTACTS_FETCH_SUCCESS: 'sf-prefill:CONTACTS_FETCH_SUCCESS',\n CONTACTS_FETCH_ERROR: 'sf-prefill:CONTACTS_FETCH_ERROR',\n LEADS_FETCHING: 'sf-prefill:LEADS_FETCHING',\n LEADS_FETCH_SUCCESS: 'sf-prefill:LEADS_FETCH_SUCCESS',\n LEADS_FETCH_ERROR: 'sf-prefill:LEADS_FETCH_ERROR',\n SEND_EMAIL_SUCCESS: 'sf-prefill:SEND_EMAIL_SUCCESS',\n SEND_EMAIL_ERROR: 'sf-prefill:SEND_EMAIL_ERROR',\n AUTH_STARTED: 'sf-prefill:AUTH_STARTED',\n AUTH_FAILED: 'sf-prefill:AUTH_FAILED',\n AUTH_SUCCESS: 'sf-prefill:AUTH_SUCCESS',\n ACCOUNTS_FETCHING: 'sf-prefill:ACCOUNTS_FETCHING',\n ACCOUNTS_FETCH_SUCCESS: 'sf-prefill:ACCOUNTS_FETCH_SUCCESS',\n ACCOUNTS_FETCH_ERROR: 'sf-prefill:ACCOUNTS_FETCH_ERROR',\n EXPAND_INVITE_BY_EMAIL_SECTION: 'sf-prefill:EXPAND_INVITE_BY_EMAIL_SECTION',\n SHRINK_INVITE_BY_EMAIL_SECTION: 'sf-prefill:SHRINK_INVITE_BY_EMAIL_SECTION',\n SET_INVITE_BY_EMAIL_SECTION_MESSAGE: 'sf-prefill:SET_INVITE_BY_EMAIL_SECTION_MESSAGE',\n SET_INVITE_LIST: 'sf-prefill:SET_INVITE_LIST',\n SEND_EMAIL_STARTED: 'sf-prefill:SEND_EMAIL_STARTED',\n FETCH_PERSONALIZED_LINK_STARTED: 'sf-prefill:FETCH_PERSONALIZED_LINK_STARTED',\n FETCH_PERSONALIZED_LINK_SUCCESS: 'sf-prefill:FETCH_PERSONALIZED_LINK_SUCCESS',\n FETCH_PERSONALIZED_LINK_FAILED: 'sf-prefill:FETCH_PERSONALIZED_LINK_FAILED',\n CREATE_PERSONALIZED_LINK: 'sf-prefill:CREATE_PERSONALIZED_LINK',\n RECORD_LIST_FETCH_STARTED: 'sf-prefill:RECORD_LIST_FETCH_STARTED',\n RECORD_LIST_FETCH_SUCCESS: 'sf-prefill:RECORD_LIST_FETCH_SUCCESS',\n RECORD_LIST_FETCH_FAILED: 'sf-prefill:RECORD_LIST_FETCH_FAILED',\n DELETE_PERSONALIZED_LINK_SUCCESS: 'sf-prefill:DELETE_PERSONALIZED_LINK_SUCCESS',\n DELETE_PERSONALIZED_LINK_FAILED: 'sf-prefill:DELETE_PERSONALIZED_LINK_FAILED',\n EXPORT_PERSONALIZED_LINK_SUCCESS: 'sf-prefill:EXPORT_PERSONALIZED_LINK_SUCCESS',\n EXPORT_PERSONALIZED_LINK_FAILED: 'sf-prefill:EXPORT_PERSONALIZED_LINK_FAILED',\n SET_LINK_SEARCH_KEY: 'sf-prefill:SET_LINK_SEARCH_KEY',\n TOGGLE_LINK_CHECKBOX: 'sf-prefill:TOGGLE_LINK_CHECKBOX',\n TOGGLE_ALL_LINK_CHECKBOXES: 'sf-prefill:TOGGLE_ALL_LINK_CHECKBOXES',\n CHANGE_PUBLISH_TAB: 'sf-prefill:CHANGE_PUBLISH_TAB',\n SEND_LINKS_BY_EMAIL_STARTED: 'sf-prefill:SEND_LINKS_BY_EMAIL_STARTED',\n SEND_LINKS_BY_EMAIL_SUCCESS: 'sf-prefill:SEND_LINKS_BY_EMAIL_SUCCESS',\n SEND_LINKS_BY_EMAIL_ERROR: 'sf-prefill:SEND_LINKS_BY_EMAIL_ERROR',\n SET_SEND_INVITATION_MODAL_VISIBILITY: 'sf-prefill:SET_SEND_INVITATION_MODAL_VISIBILITY',\n REMOVE_LINK_FROM_INVITATION_LIST: 'sf-prefill:REMOVE_LINK_FROM_INVITATION_LIST',\n UPDATE_LINK_EMAIL_FOR_INVITATION_LIST: 'sf-prefill:UPDATE_LINK_EMAIL_FOR_INVITATION_LIST',\n SET_LINK_INVITATION_LIST: 'sf-prefill:SET_LINK_INVITATION_LIST',\n CLOSE_SUCCESS_LINK_SENDING_DIALOG: 'sf-prefill:CLOSE_SUCCESS_LINK_SENDING_DIALOG'\n};\n\nexport const SFLivePrefillUIModes = {\n EDIT_SOURCE: 'EDIT_SOURCE',\n LIST_SOURCES: 'LIST_SOURCES',\n LIST_ACCOUNTS: 'LIST_ACCOUNTS'\n};\n\nexport const fetchingStatus = {\n NOT_STARTED: 'NOT_STARTED',\n STARTED: 'STARTED',\n FAILED: 'FAILED',\n SUCCESS: 'SUCCESS'\n};\n\nexport const wizardType = {\n dropbox: 'DropboxWizard',\n aweber: 'AweberWizard',\n google: 'GoogleDocsWizard',\n 'google-drive': 'GoogleDriveWizard',\n boxnet: 'BoxnetWizard',\n egnyte: 'EgnyteWizard',\n campaignMonitor: 'CampaignMonitorWizard',\n constantContact: 'ConstantContactWizard',\n 'facebook-login': 'FacebookWizard',\n '5385ef083b2acbeb58000012': 'FormisimoWizard',\n highRise: 'HighRiseWizard',\n iContact: 'IContactWizard',\n madMimi: 'MadMimiWizard',\n mailChimp: 'MailChimpWizard',\n salesForce: 'SalesForceWizard',\n verticalResponse: 'VerticalResponseWizard',\n webhooks: 'WebHooksWizard',\n zohoCrm: 'ZohoCrmWizard',\n insightlyCrm: 'InsightlyCrmWizard',\n trello: 'TrelloWizard',\n asana: 'AsanaWizard',\n callingly: 'CallinglyWizard',\n googleCalendar: 'GoogleCalendarWizard',\n airtable: 'AirtableWizard',\n sendGrid: 'SendGridWizard',\n getResponse: 'GetResponseWizard',\n infusionsoft: 'InfusionsoftWizard',\n solve360: 'Solve360Wizard',\n hubspot: 'HubSpotWizard',\n xzazu: 'XzazuWizard',\n slack: 'SlackWizard',\n activeCampaign: 'ActiveCampaignWizard',\n mondayCom: 'MondayWizard',\n paymo: 'PaymoWizard',\n pipedrive: 'PipedriveWizard',\n zohoCrmV2: 'ZohoCrmV2Wizard',\n bisoft: 'BisoftWizard',\n automateIo: 'AutomateIoWizard',\n msflow: 'MicrosoftFlowWizard',\n platformly: 'PlatformlyWizard',\n zendesk: 'ZendeskWizard',\n zoom: 'ZoomWizard',\n 'google-sheets': 'GoogleSheetsWizard',\n pieSync: 'PieSyncWizard',\n salesforceV2: 'SalesforceV2Wizard',\n engageBay: 'EngageBayWizard',\n FTP: 'FTPWizard',\n onedrive: 'OneDriveWizard',\n openCRM: 'OpenCRMWizard',\n integromat: 'IntegromatWizard',\n constantContactV2: 'ConstantContactV2Wizard',\n mailerlite: 'MailerliteWizard',\n clickup: 'ClickUpWizard',\n 'box-sign': 'BoxSignWizard'\n};\n\nexport default {\n wizardType,\n ActionTypes,\n QuestionActionTypes,\n ViewActionTypes,\n WidgetActionTypes,\n SafeharborActionTypes,\n EmailActionTypes,\n ExportDataActionTypes,\n LanguageActionTypes,\n ReminderEmailActionTypes\n};\n\nexport const prettyContainerTitles = {\n control_yesno: 'Yes/No',\n control_head: 'Heading',\n control_fullname: 'Full Name',\n control_image: 'Image',\n control_number: 'Number',\n control_email: 'Email',\n control_captcha: 'Captcha',\n control_collapse: 'Form Collapse',\n control_address: 'Address',\n control_button: 'Submit Button',\n control_spinner: 'Spinner',\n control_scale: 'Scale Rating',\n control_phone: 'Phone',\n control_rating: 'Star Rating',\n control_matrix: 'Input Table',\n control_pagebreak: 'Page Break',\n control_textbox: 'Short Text',\n control_fileupload: 'File Upload',\n control_time: 'Time',\n control_textarea: 'Long Text',\n control_dropdown: 'Dropdown',\n control_radio: 'Single Choice',\n control_checkbox: 'Multiple Choice',\n control_datetime: 'Date Picker',\n control_hidden: 'Hidden',\n control_slider: 'Slider',\n control_paypal: 'PayPal',\n control_paypalpro: 'PayPal Pro',\n control_cybersource: 'Cyber Source',\n control_paypalexpress: 'PayPal Express',\n control_sensepass: 'SensePass',\n control_stripe: 'Stripe',\n control_stripeCheckout: 'Stripe Checkout',\n control_payfast: 'Payfast',\n control_braintree: 'Braintree',\n control_authnet: 'Authorize.net',\n control_dwolla: 'Dwolla',\n control_eway: 'Eway',\n control_square: 'Square',\n control_2co: '2CheckOut',\n control_clickbank: 'ClickBank',\n control_worldpay: 'worldpay',\n control_onebip: 'onebip',\n control_mollie: 'Mollie',\n control_payment: 'Purchase Order',\n control_text: 'Text',\n control_emojislider: 'Emoji Slider',\n control_signature: 'E-Signature',\n control_imagechoice: 'Image Choice',\n control_appointment: 'Appointment',\n control_inline: 'Fill in the Blank',\n 'control_appointment-date': 'Appointment Date',\n 'control_appointment-duration': 'Appointment Duration',\n submissionID: 'Submission ID',\n submissionDate: 'Submission Date',\n formID: 'Form ID'\n};\n\nexport const paymentFields = [\n 'control_payu',\n 'control_payuMoney',\n 'control_square',\n 'control_paypalSPB',\n 'control_authnet',\n 'control_paypalpro',\n 'control_cybersource',\n 'control_stripe',\n 'control_stripeCheckout',\n 'control_echeck',\n 'control_stripeACHManual',\n 'control_stripeACH',\n 'control_gocardless',\n 'control_mollie',\n 'control_moneris',\n 'control_sofort',\n 'control_pagseguro',\n 'control_bluesnap',\n 'control_payment',\n 'control_payjunction',\n 'control_chargify',\n 'control_bluepay',\n 'control_braintree',\n 'control_2co',\n 'control_cardconnect',\n 'control_firstdata',\n 'control_paypalInvoicing',\n 'control_paysafe',\n 'control_iyzico',\n 'control_sensepass',\n 'control_skrill',\n 'control_paypal',\n 'control_paypalexpress', // removed gateway but it should stay here for forms already have\n 'control_worldpay',\n 'control_worldpayus',\n 'control_eway',\n 'control_clickbank',\n 'control_onebip',\n 'control_paymentwall',\n 'control_paypalcomplete',\n 'control_payfast',\n 'control_dwolla', // removed gateway but it should stay here for forms already have\n 'control_wepay'\n];\n\n// for tracking integration events\nexport const integrationEventTypes = {\n category_changed: 'category_changed',\n search_not_found: 'search_not_found',\n integration_opened: 'integration_opened',\n integration_deleted: 'integration_deleted',\n integration_updated: 'integration_updated',\n integration_created: 'integration_created',\n authentication_started: 'authentication_started',\n authentication_failed: 'authentication_failed',\n authentication_succeeded: 'authentication_succeeded',\n authentication_user_cancelled: 'authentication_user_cancelled',\n integration_fetch_failed: 'integration_fetch_failed',\n disconnect_started: 'disconnect_started',\n disconnect_failed: 'disconnect_failed',\n disconnect_succeded: 'disconnect_succeded',\n disconnect_user_cancelled: 'disconnect_user_cancelled',\n new_action_add_clicked: 'new_action_add_clicked',\n promoted_alternative_app_clicked: 'promoted_alternative_app_clicked',\n banner_clicked: 'banner_clicked',\n simple_wizard_action_clicked: 'simple_wizard_action_clicked',\n use_this_zap: 'use_this_zap',\n edit_this_zap: 'edit_this_zap',\n search_input: 'search_input',\n integration_request_modal_open: 'integration_request_modal_open',\n integration_request_failed: 'integration_request_failed',\n integration_request_succeeded: 'integration_request_succeeded',\n guest_flow_started: 'guest_flow_started',\n guest_flow_cancelled: 'guest_flow_cancelled',\n guest_flow_completed: 'guest_flow_completed',\n microsoft_teams_cta_clicked: 'microsoft_teams_banner_clicked'\n};\n\nexport const { teamID: TEAM_ID, isTeamMember } = window;\n\nexport const AssignPrefillProviderUrls = {\n salesforceV2SAPP: '/API/salesforce/'\n};\n\nexport const PREFILL_PROVIDER_MAP = {\n salesforceLive: 'salesforceV2',\n salesforceV2: 'salesforceV2',\n monday: 'monday',\n pipedrive: 'pipedrive',\n hubspot: 'hubspot',\n airtable: 'airtable',\n sso: 'sso',\n manual: 'manual',\n anotherForm: 'anotherForm',\n tables: 'tables'\n};\n\nexport const LIVE_PREFILL_ACTION_UI_ACTION_MAP = {\n getObjects: 'FETCH_PREFILL_OBJECTS'\n};\n\nexport const RICH_TEXT_EDITOR_URL = `https://cdn.jotfor.ms/js/rich-text-editor/editor.min.js?v=${getRevision()}`;\n\nexport const FormCopilotActionTypes = {\n LOADING: 'formCopilot:material-loading',\n LOADED: 'formCopilot:material-loaded',\n LOAD_ERROR: 'formCopilot:material-load-error',\n MATERIAL_ADDED: 'formCopilot:material-added',\n MATERIAL_UPDATED: 'formCopilot:material-updated',\n MATERIAL_DELETED: 'formCopilot:material-deleted',\n MATERIAL_UPDATE_STATUS: 'formCopilot:material-update-status',\n SET_AGENT_PROPS: 'formCopilot:set-agent-props',\n SET_AGENT_ID: 'formCopilot:set-agent-id',\n SET_MATERIALS: 'formCopilot:set-materials'\n};\n\nexport const aiConditionInputPropsMap = {\n field: {\n description: t('Use AI to Create Dynamic Show/Hide Conditions Effortlessly'),\n placeholder: t('e.g. If name is empty do not show submit button')\n },\n require: {\n description: t('Use AI to Create Dynamic Require/Enable/Mask Conditions'),\n placeholder: t('e.g. If phone number is empty require email')\n },\n mask: {\n description: t('Use AI to Create Dynamic Require/Enable/Mask Conditions'),\n placeholder: t('e.g. If phone number is empty require email')\n },\n page: {\n description: t('Use AI to Create Dynamic Skip To/Hide a page Conditions Easily'),\n placeholder: t('e.g. If email is empty hide page 2')\n },\n email: {\n description: t('Use AI to Create Dynamic Email Conditions Easily'),\n placeholder: t('e.g. Send empty name notification if name is empty')\n },\n message: {\n description: t('Use AI to Create Dynamic Thank You Page conditions'),\n placeholder: t('e.g. Send notification email to example@mail.com if name is empty')\n },\n url: {\n description: t('Use AI to Create Dynamic Thank You Page conditions'),\n placeholder: t('e.g. Send notification email to example@mail.com if name is empty')\n },\n calculation: {\n description: t('Use AI to Create Calculation Conditions'),\n placeholder: t('e.g. If name is empty copy email to fullname')\n }\n};\n","import { Dispatcher } from 'flux';\n\nexport default Object.assign(new Dispatcher(), {\n handleServerAction: function (action) {\n this.dispatch({\n action: action\n });\n },\n\n handleViewAction: function (action) {\n this.dispatch({\n action: action\n });\n },\n\n handleLegacyAction: function (action) {\n this.dispatch({\n action: action\n });\n }\n});\n","import { ActionTypes } from '../constants';\nimport AppDispatcher from '../dispatchers/AppDispatcher';\n\nexport function addCondition(newCondition, isUndo) {\n AppDispatcher.handleViewAction({\n type: ActionTypes.CONDITION_ADDED,\n condition: newCondition,\n isUndo\n });\n}\n\nexport function bulkAddCondition(conditions) {\n AppDispatcher.handleViewAction({\n type: ActionTypes.CONDITION_BULK_ADDED,\n conditions\n });\n}\n\nexport function updateConditions(conditions, otherType, sortIndexs) {\n AppDispatcher.handleViewAction({\n type: ActionTypes.CONDITION_BULK_UPDATED,\n conditions: conditions,\n otherType,\n sortIndexs\n });\n}\n\nexport function disableCondition(condition) {\n AppDispatcher.handleViewAction({\n type: ActionTypes.CONDITION_DISABLED,\n condition: condition\n });\n}\n\nexport function enableCondition(condition) {\n AppDispatcher.handleViewAction({\n type: ActionTypes.CONDITION_ENABLED,\n condition: condition\n });\n}\n\nexport function updateCondition() {\n\n}\n\nexport function updateEmailCondition(emailIndex) {\n AppDispatcher.handleViewAction({\n type: ActionTypes.CONDITION_EMAIL_UPDATED,\n emailIndex: emailIndex\n });\n}\n\nexport function deleteCondition(condition) {\n AppDispatcher.handleViewAction({\n type: ActionTypes.CONDITION_DELETED,\n condition: condition\n });\n}\n\nexport function duplicateCondition(condition) {\n AppDispatcher.handleViewAction({\n type: ActionTypes.CONDITION_DUPLICATED,\n condition: condition\n });\n}\n\nexport function updateConditionDirty(isDirty) {\n AppDispatcher.handleViewAction({\n type: ActionTypes.CONDITION_DIRTY,\n isDirty: isDirty\n });\n}\n\nexport function disableMultipleConditions(checkList) {\n AppDispatcher.handleViewAction({\n type: ActionTypes.CONDITION_MULTIPLE_DISABLE,\n checkList\n });\n}\n\nexport function enableMultipleConditions(checkList) {\n AppDispatcher.handleViewAction({\n type: ActionTypes.CONDITION_MULTIPLE_ENABLE,\n checkList\n });\n}\n\nexport function deleteMultipleConditions(checkList) {\n AppDispatcher.handleViewAction({\n type: ActionTypes.CONDITION_MULTIPLE_DELETE,\n checkList\n });\n}\n","/* eslint-disable no-template-curly-in-string */\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport reactMixin from 'react-mixin';\nimport classNames from 'classnames';\nimport isArray from 'lodash/isArray';\nimport isEmpty from 'lodash/isEmpty';\n\nimport {\n IconPauseFilled, IconTrashFilled, IconCopyFilled, IconPencilFilled, IconCaretsFromCenter\n} from '@jotforminc/svg-icons';\nimport Icon from '../../components/Icon';\nimport ConditionUtils from './ConditionUtils';\nimport * as ConditionActions from '../../actions/ConditionActions';\nimport TranslationMixin from '../../mixins/Translation';\n\nconst noop = () => {};\n\n// THIS FILE IS ALSO USED IN WORKFLOW REPO, PLEASE BE CAREFUL!\nclass Condition extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n renderExpandStyle: false,\n isConditionExpandVisible: true\n };\n this.isFieldDeleted = false;\n this.isPageDeleted = false;\n this.isEquationDeleted = false;\n this.handleOptionsMenuToggle = this.handleOptionsMenuToggle.bind(this);\n this.handleDelete = this.handleDelete.bind(this);\n this.handleDuplicate = this.handleDuplicate.bind(this);\n this.handleDisable = this.handleDisable.bind(this);\n this.handleEnable = this.handleEnable.bind(this);\n\n // for the close settings tab of conditions\n this.handleClickOutside = this.handleClickOutside.bind(this);\n this.setWrapperRef = this.setWrapperRef.bind(this);\n this.handleExpandTheConditionCard = this.handleExpandTheConditionCard.bind(this);\n }\n\n shouldComponentUpdate(nextProps, nextState) {\n const propsDifference = ConditionUtils.difference(this.props, nextProps);\n const stateDifference = ConditionUtils.difference(this.state, nextState);\n const isPropsChanged = !isEmpty(propsDifference);\n const isStateChanged = !isEmpty(stateDifference);\n return isPropsChanged || isStateChanged;\n }\n\n componentDidMount() {\n document.addEventListener('click', this.handleClickOutside);\n }\n\n componentWillUnmount() {\n document.removeEventListener('click', this.handleClickOutside);\n }\n\n setWrapperRef(node) {\n this.wrapperRef = node;\n }\n\n handleClickOutside(event) {\n if (this.wrapperRef && !this.wrapperRef.contains(event.target)) {\n if (this.props.selected) {\n // If conditions setting is open and click target doesn't cover the target condition\n this.props.onConditionClick(-1);\n }\n\n // If conditions is expand, click outside to shrink again\n this.handleExpandTheConditionCard(false, true);\n }\n }\n\n UNSAFE_componentWillReceiveProps() {\n this.isFieldDeleted = false;\n }\n\n getConditionActionNoteRow() {\n return (\n
    \n
    {this.translate('Please note that emails will not be sent unless their conditions are met.')}
    \n
    \n );\n }\n\n getConditionDeletedFieldRow() {\n let deletedConditionItem = '';\n switch (true) {\n case this.isPageDeleted:\n deletedConditionItem = 'pages';\n break;\n case this.isFieldDeleted:\n deletedConditionItem = 'fields';\n break;\n case this.isEquationDeleted:\n deletedConditionItem = 'equations';\n break;\n default:\n }\n return (\n
    \n
    \n {this.translate('ERROR:')}\n {\n this.translate('One or more ${deletedConditionItem} have been deleted which are required by this condition.').replace('${deletedConditionItem}', deletedConditionItem)\n }\n
    \n
    \n );\n }\n\n getConditionActionStatementRow(id, actionText, messageText, statementText, fieldText, visibility) {\n let contentInfosDoName = 'content-infos do';\n let spanClassNameForFieldText = '';\n let spanClassNameForMessageText = '';\n\n if (typeof messageText === 'string' && messageText.indexOf('\"MISSING FIELD\"') > -1) {\n contentInfosDoName = 'content-infos do ifdoerror';\n spanClassNameForMessageText = 'error';\n this.isFieldDeleted = true;\n }\n\n if (typeof messageText === 'string' && messageText.indexOf('\"MISSING EQUATION\"') > -1) {\n contentInfosDoName = 'content-infos do ifdoerror';\n spanClassNameForMessageText = 'error';\n this.isEquationDeleted = true;\n }\n\n if (typeof messageText === 'string' && messageText === 'MISSING PAGE') {\n contentInfosDoName = 'content-infos do ifdoerror';\n spanClassNameForMessageText = 'error';\n this.isFieldDeleted = true;\n this.isPageDeleted = true;\n }\n\n if (typeof fieldText === 'string' && fieldText === '\"MISSING FIELD\"') {\n contentInfosDoName = 'content-infos do ifdoerror';\n spanClassNameForFieldText = 'error';\n\n this.isFieldDeleted = true;\n }\n\n if (visibility) {\n contentInfosDoName = `${contentInfosDoName} icon_${visibility}`;\n }\n\n const temp = `${actionText ? `${actionText} ` : ''}{messageText} ${statementText ? `${statementText} ` : ''}{fieldText}`;\n const translatedText = this.translate(temp);\n\n return (\n
    \n
    \n
    \n {translatedText.split(' ').map((el, i) => {\n if (el[0] === '{') {\n if (el.includes('messageText')) {\n return ({ messageText });\n }\n return ({ fieldText });\n }\n return (\n \n {' '}\n {el}\n {' '}\n \n );\n })}\n
    \n
    \n
    \n );\n }\n\n getConditionStatementRowForOperator(operator) {\n return (\n
    \n
    \n {this.translate('If')}\n {' '}\n \"\n {this.translate(operator)}\n \"\n {' '}\n {this.translate('of the \"If\" rules are matched')}\n ,\n
    \n
    \n );\n }\n\n getConditionStatementMoreRow(numberOfStatements) {\n return (\n
    \n
    \n ...\n {this.translate('and')}\n {' '}\n {this.translate(numberOfStatements)}\n {' '}\n {this.translate('other')}\n {' '}\n “\n {this.translate('If')}\n ”\n {' '}\n {this.translate('rules')}\n {' '}\n ...\n
    \n
    \n );\n }\n\n getConditionActionStatementMoreRow(numberOfFields) {\n return (\n
    \n
    \n ...\n {this.translate('and')}\n {this.translate(numberOfFields)}\n {this.translate('more affected fields')}\n {' '}\n ...\n
    \n
    \n );\n }\n\n getConditionStatementRow(id, questionText, comparisonOperator, termValue, isPaymentProduct) {\n let tempTermValue = termValue;\n let contentInfosIfName = 'content-infos if';\n let spanClassNameForQuestionText = '';\n let spanClassNameForTermValue = '';\n\n if (questionText === '\"MISSING FIELD\"' || termValue === '\"MISSING FIELD\"') {\n contentInfosIfName = 'content-infos if ifdoerror';\n this.isFieldDeleted = true;\n\n if (questionText === '\"MISSING FIELD\"') {\n spanClassNameForQuestionText = 'error';\n }\n\n if (termValue === '\"MISSING FIELD\"') {\n spanClassNameForTermValue = 'error';\n }\n } else if (isPaymentProduct === true) {\n tempTermValue = tempTermValue.replace(/\"/g, '');\n tempTermValue = ConditionUtils.getProductTextByProductId(tempTermValue, this.props.products);\n tempTermValue = ConditionUtils.putQuotesAroundString(tempTermValue);\n }\n\n const temp = `If {questionText} ${comparisonOperator ? `${comparisonOperator.trim()} ` : ''}{tempTermValue}`;\n const translatedText = this.translate(temp);\n\n return (\n
    \n
    \n
    \n {translatedText.split(' ').map((el, i) => {\n if (el[0] === '{') {\n if (el.includes('questionText')) {\n return ({ questionText });\n }\n return ({ tempTermValue });\n }\n return (\n \n {' '}\n {el}\n {' '}\n \n );\n })}\n
    \n
    \n
    \n );\n }\n\n renderToggleLogic() {\n const showEnable = !!(typeof this.props.condition.disabled !== 'undefined' && this.props.condition.disabled === '1');\n if (showEnable === true) {\n return (\n
  • \n
    \n \n {this.translate('Enable')}\n
    \n
  • \n );\n }\n\n return (\n
  • \n
    \n
    \n \n
    \n {this.translate('Disable')}\n
    \n
  • \n );\n }\n\n render() {\n let renderFinal = null;\n\n let conditionStatementForOperator = '';\n let conditionActionStatementMoreRow = '';\n let conditionStatementMoreRow = '';\n let conditionActionNoteRow = null;\n\n let conditionStatementArray = [];\n let actionStatementArray = [];\n let listActions = [];\n let termsArray = [];\n\n listActions = isArray(ConditionUtils.jsonParse(this.props.condition.action)) ? ConditionUtils.jsonParse(this.props.condition.action) : [];\n termsArray = ConditionUtils.jsonParse(this.props.condition.terms);\n\n if (termsArray && termsArray.length > 0) {\n const conditionsStatementsWithOperatorArray = this.setConditionStatements(termsArray);\n conditionStatementArray = conditionsStatementsWithOperatorArray[0];\n\n if (conditionsStatementsWithOperatorArray.length > 1) {\n conditionStatementForOperator = conditionsStatementsWithOperatorArray[1];\n }\n\n if (conditionStatementArray && conditionStatementArray.length > 5) {\n conditionStatementMoreRow = this.getConditionStatementMoreRow(conditionStatementArray.length - 5);\n conditionStatementArray = ConditionUtils.removeObjectFromArray(conditionStatementArray.length - 5, conditionStatementArray);\n }\n\n const conditionType = this.props.condition.type;\n switch (conditionType) {\n case 'field': // Show/Hide Field\n actionStatementArray = this.setShowHideFieldActionStatements(listActions);\n break;\n case 'calculation': // Update a form field value\n actionStatementArray = this.setUpdateFormFieldActionStatements(listActions);\n break;\n case 'email': // Send an e-mail after submission\n const actionStatementWithNoteArray = this.setSendEmailActionStatements(listActions);\n actionStatementArray = actionStatementWithNoteArray[0];\n conditionActionNoteRow = actionStatementWithNoteArray[1];\n break;\n case 'mask': // Set content mask on a form field\n case 'require': // Change attributes of a Field\n actionStatementArray = this.setChangeAttributesOrContentMaskMessageActionStatements(listActions);\n break;\n case 'page': // Skip to a page or end of the form\n actionStatementArray = this.setSkipToPageActionStatements(listActions);\n break;\n case 'url': // Change thank you URL after submission\n actionStatementArray = this.setChangeThankYouUrlActionStatements(listActions);\n break;\n case 'message': // Change thank you message after submission\n actionStatementArray = this.setChangeThankYouMessageActionStatements(listActions);\n break;\n\n default:\n // TODO: handle it\n }\n\n if (actionStatementArray.length > 5) {\n conditionActionStatementMoreRow = this.getConditionActionStatementMoreRow(actionStatementArray.length - 5);\n actionStatementArray = ConditionUtils.removeObjectFromArray(actionStatementArray.length - 5, actionStatementArray);\n }\n\n let conditionDeletedFieldRow = null;\n if (this.isFieldDeleted || this.isEquationDeleted) {\n conditionDeletedFieldRow = this.getConditionDeletedFieldRow();\n }\n\n const renderToggleLogic = this.renderToggleLogic();\n let conditionColor = '';\n let conditionTitle = '';\n let conditionTypeLowercase = '';\n if (typeof conditionType !== 'undefined' && conditionType !== '') {\n conditionTypeLowercase = conditionType.toLowerCase();\n conditionColor = ConditionUtils.conditionTitleString[conditionTypeLowercase].color;\n conditionTitle = ConditionUtils.conditionTitleString[this.props.condition.type.toLowerCase()].title;\n } else {\n conditionTypeLowercase = '';\n conditionColor = '';\n }\n\n // added for workflow condition elements\n const branchName = (this.props.condition.title && !isEmpty(this.props.condition.title)) ? this.props.condition.title : false;\n\n const cx = classNames({\n mediaBox: true,\n 'conditions isDraggable': true,\n fadeInDown: false,\n [`icon_${conditionTypeLowercase}`]: true,\n disabled: this.props.condition.disabled === '1',\n 'u-unselectable': this.props.condition.disabled === '1',\n [conditionColor]: true\n });\n renderFinal = (\n { this.props.onClick(this.props.selected ? -1 : this.props.count); }}\n style={this.handleConditionCardStyle()}\n ref={ref => this.setWrapperRef(ref)}\n >\n {\n this.props.numberOfCondition > 1\n ? (\n \n );\n }\n}\n\nCheckboxItem.propTypes = {\n children: oneOfType([node, elementType]),\n icon: oneOfType([node, elementType]),\n name: string,\n indeterminate: bool,\n checked: bool,\n onChange: func,\n onClick: func,\n className: string,\n isReverse: bool,\n backgroundColor: string,\n borderColor: string,\n disabled: bool,\n dataId: string,\n tabIndex: string,\n size: string,\n ariaLabel: string,\n labelProps: shape({})\n};\n\nCheckboxItem.defaultProps = {\n children: null,\n icon: null,\n name: null,\n indeterminate: false,\n checked: false,\n onChange: f => f,\n onClick: f => f,\n className: null,\n isReverse: false,\n backgroundColor: null,\n borderColor: null,\n disabled: false,\n dataId: null,\n tabIndex: null,\n size: null,\n ariaLabel: '',\n labelProps: {}\n};\n\nexport default React.forwardRef((props, ref) => );\n","import React, { useRef } from 'react';\nimport {\n any, arrayOf, bool, elementType, func, number, oneOfType, shape, string\n} from 'prop-types';\nimport { t } from '@jotforminc/translation';\nimport { IconXmark, IconCheckSm } from '@jotforminc/svg-icons';\nimport ColoredBarGroup from './ColoredBarGroup';\n\n// eslint-disable-next-line react/prop-types\nconst RemoveButton = props => (\n \n \n \n \n);\n\nconst ColoredBarDropdown = ({\n options, isVisible, disabledOptionList, selectedOption, headerText, showHeaderIcon, HeaderIcon,\n onItemRemoved, onItemClicked, onHeaderIconClick, tooltipRenderer, headerIconProps, otherSelectedOptions\n}) => {\n const containerRef = useRef();\n return isVisible && (\n <>\n
    \n
    \n
    \n {headerText}\n
    \n {showHeaderIcon && HeaderIcon && (\n
    f} onClick={onHeaderIconClick}>\n \n
    \n )}\n
    \n \n
    \n \n );\n};\n\nconst IdentifierType = oneOfType([string, number]);\n\nColoredBarDropdown.propTypes = {\n options: arrayOf(shape({\n id: IdentifierType,\n value: string,\n color: string\n })).isRequired,\n targetRef: shape({ current: any }).isRequired,\n headerIconProps: shape({}),\n isVisible: bool,\n showHeaderIcon: bool,\n HeaderIcon: elementType,\n disabledOptionList: arrayOf(IdentifierType),\n selectedOption: IdentifierType,\n headerText: string,\n onItemRemoved: func,\n onItemClicked: func,\n onHeaderIconClick: func,\n tooltipRenderer: func,\n otherSelectedOptions: arrayOf(IdentifierType)\n};\n\nColoredBarDropdown.defaultProps = {\n isVisible: false,\n showHeaderIcon: false,\n disabledOptionList: [],\n selectedOption: '',\n headerText: '',\n headerIconProps: {},\n onItemRemoved: f => f,\n onItemClicked: f => f,\n onHeaderIconClick: f => f,\n HeaderIcon: () => null,\n tooltipRenderer: () => null,\n otherSelectedOptions: []\n};\n\nexport default ColoredBarDropdown;\n","import {\n arrayOf, bool, func, number, oneOfType, shape, string\n} from 'prop-types';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { t } from '@jotforminc/translation';\nimport ColoredBar from '.';\n\nconst ColoredBarGroup = ({\n options, extendButtonText, initialFocusToItem, colorPalette, disabledOptionList,\n selectedOption, selectedProps, popoverOptions,\n canExtend, canRemove, canChangeColor, canChangeValue,\n onItemValueChanged, onItemColorChanged, onItemAdded, onItemRemoved, onItemClicked,\n onItemValueFocused, onItemValueBlurred, tooltipRenderer, otherSelectedOptions\n}) => {\n const [hasEmptyElement, setHasEmptyElement] = useState(false);\n const focusedElement = useRef();\n const checkIfHasEmptyElement = ({ id: externalID = '', value: externalValue = '' } = {}) => {\n setHasEmptyElement(options.some(({ id, value }) => {\n const valueToCheck = id === externalID ? externalValue : value;\n return !valueToCheck;\n }));\n };\n\n const onColorChanged = (id, value) => {\n onItemColorChanged({\n id,\n value\n });\n };\n const onValueChanged = (id, value) => {\n onItemValueChanged({\n id,\n value\n });\n checkIfHasEmptyElement({ id, value });\n };\n const onValueBlur = (id, event) => {\n onItemValueBlurred({\n id,\n event\n });\n };\n const onRemoved = id => {\n onItemRemoved(id);\n };\n const onClicked = (id, event) => {\n onItemClicked({\n id,\n event\n });\n };\n const onValueFocused = (id, event) => {\n onItemValueFocused({\n id,\n event\n });\n };\n useEffect(() => {\n focusedElement.current?.focus?.();\n checkIfHasEmptyElement();\n }, [options]);\n\n return (\n
    \n {options.map(({\n id, value, color, type\n }) => {\n const isFocused = initialFocusToItem === id;\n const isDisabled = disabledOptionList.includes(id);\n const isUsed = otherSelectedOptions.includes(id) && selectedOption !== id;\n return (\n
    \n onValueChanged(id, val)}\n onColorChange={val => onColorChanged(id, val)}\n onRemoveClick={() => onRemoved(id)}\n onClick={e => onClicked(id, e)}\n canRemove={canRemove}\n canChangeColor={canChangeColor}\n canChangeValue={canChangeValue}\n disabled={isDisabled}\n onValueFocus={e => onValueFocused(id, e)}\n onValueBlur={e => onValueBlur(id, e)}\n isUsed={isUsed}\n {...(selectedOption === id ? selectedProps : {})}\n {...(isFocused ? { ref: focusedElement } : {})}\n />\n {tooltipRenderer ? tooltipRenderer(type) : null}\n
    \n );\n })}\n {canExtend && (\n
    \n \n {extendButtonText}\n \n
    \n )}\n
    \n );\n};\n\nconst IdentifierType = oneOfType([string, number]);\n\nColoredBarGroup.propTypes = {\n options: arrayOf(shape(\n {\n id: IdentifierType,\n value: string,\n color: string\n }\n )).isRequired,\n extendButtonText: string,\n initialFocusToItem: IdentifierType,\n colorPalette: arrayOf(string),\n disabledOptionList: arrayOf(IdentifierType),\n selectedOption: IdentifierType,\n selectedProps: shape({}),\n popoverOptions: shape({}),\n canExtend: bool,\n canRemove: bool,\n canChangeColor: bool,\n canChangeValue: bool,\n onItemValueChanged: func,\n onItemColorChanged: func,\n onItemRemoved: func,\n onItemAdded: func,\n onItemClicked: func,\n onItemValueFocused: func,\n onItemValueBlurred: func,\n tooltipRenderer: func,\n otherSelectedOptions: arrayOf(IdentifierType)\n};\n\nColoredBarGroup.defaultProps = {\n extendButtonText: '',\n initialFocusToItem: null,\n colorPalette: [\n '#ff5782', '#ff1d41', '#9469ce', '#58d7e3',\n '#ff9757', '#e991d6', '#5e74e6', '#21caff',\n '#ff6767', '#363e76', '#8583a9', '#0090ba',\n '#01bd6f', '#ffb811'\n ],\n disabledOptionList: [],\n selectedOption: '',\n selectedProps: {},\n popoverOptions: {},\n canExtend: true,\n canRemove: true,\n canChangeColor: true,\n canChangeValue: true,\n onItemValueChanged: f => f,\n onItemColorChanged: f => f,\n onItemRemoved: f => f,\n onItemAdded: f => f,\n onItemClicked: f => f,\n onItemValueFocused: f => f,\n onItemValueBlurred: f => f,\n tooltipRenderer: () => null,\n otherSelectedOptions: []\n};\n\nexport default ColoredBarGroup;\n","\n \n\n","import React, {\n forwardRef, useEffect, useRef, useState\n} from 'react';\nimport classNames from 'classnames';\nimport { ColorPicker as UIKitColorPicker, Hooks } from '@jotforminc/uikit';\nimport { isBright } from '@jotforminc/utils';\nimport {\n bool, elementType, func, shape, string\n} from 'prop-types';\nimport { t } from '@jotforminc/translation';\nimport '../styles/ColoredBar.scss';\nimport { IconDropletFilled, IconXmark } from '@jotforminc/svg-icons';\n\nconst ColorPickerWrapper = props =>
    ;\n\nconst ColorPickerButton = forwardRef((props, ref) => {\n return (\n \n \n \n );\n});\n\nColorPickerButton.defaultProps = {\n ariaLabel: ''\n};\n\nColorPickerButton.propTypes = {\n ariaLabel: string\n};\n\nconst RemoveButton = props => (\n \n \n \n);\n\nconst TextInputRenderer = forwardRef((props, ref) => {\n return
    ;\n});\n\nconst ColoredBar = forwardRef(({\n color, value, placeholder, disabled, className, popoverOptions,\n onColorChange, onValueChange, onRemoveClick, onClick, onValueFocus, onValueBlur,\n canRemove, canChangeColor, canChangeValue,\n ColorButtonRenderer, RemoveButtonRenderer, isUsed\n}, ref) => {\n const [colorValue, setColorValue] = useState(color);\n const [textValue, setTextValue] = useState(value);\n const onTextChange = v => {\n setTextValue(v);\n onValueChange(v);\n };\n const onColorValueChange = c => {\n setColorValue(c);\n onColorChange(c);\n };\n useEffect(() => {\n setTextValue(value);\n }, [value]);\n useEffect(() => {\n setColorValue(color);\n }, [color]);\n const combinedRefs = useRef();\n const rootRef = Hooks.useCombinedRefs(ref, combinedRefs);\n return (\n \n
    \n {canChangeValue ? (\n onTextChange(e.target.value)}\n onBlur={onValueBlur}\n onFocus={onValueFocus}\n disabled={disabled}\n type=\"text\"\n className={classNames('jfColoredBar-input')}\n maxLength={30}\n />\n ) : textValue}\n
    \n {canChangeColor && (\n
    \n \n
    \n )}\n {canRemove && (\n
    \n \n
    \n )}\n {isUsed && (\n
    \n )}\n
    \n );\n});\n\nColoredBar.propTypes = {\n color: string,\n value: string,\n placeholder: string,\n disabled: bool,\n className: string,\n popoverOptions: shape({}),\n onColorChange: func,\n onValueChange: func,\n onRemoveClick: func,\n onClick: func,\n onValueFocus: func,\n onValueBlur: func,\n canRemove: bool,\n canChangeColor: bool,\n canChangeValue: bool,\n ColorButtonRenderer: elementType,\n RemoveButtonRenderer: elementType,\n isUsed: bool\n};\n\nColoredBar.defaultProps = {\n color: '',\n value: '',\n placeholder: '',\n disabled: false,\n className: '',\n popoverOptions: {},\n onColorChange: f => f,\n onValueChange: f => f,\n onRemoveClick: f => f,\n onClick: f => f,\n onValueFocus: f => f,\n onValueBlur: f => f,\n canRemove: true,\n canChangeColor: true,\n canChangeValue: true,\n ColorButtonRenderer: ColorPickerButton,\n RemoveButtonRenderer: RemoveButton,\n isUsed: false\n};\n\nexport default ColoredBar;\n","import React, { useRef } from 'react';\nimport { string } from 'prop-types';\nimport Styled from 'styled-components';\nimport { Button as UIKitButton, Tooltip as UIKitTooltip, Hooks } from '@jotforminc/uikit';\n\n/* eslint-disable max-len */\nconst ScUIKitButton = Styled(UIKitButton)`\n &.bare {\n font-size: .875em;\n color: #4170e2;\n text-decoration: none;\n background: transparent;\n cursor: pointer;\n box-shadow: none;\n padding: 0;\n border: 0;\n\n &.forSettings {\n svg {\n vertical-align: text-bottom;\n margin-right: 2px;\n width: 18px;\n height: 18px;\n\n html[dir=\"rtl\"] & {\n margin-right: 0;\n margin-left: 2px;\n }\n }\n\n span {\n font-size: 16px;\n margin-left: 4px;\n }\n\n }\n }\n\n &.taste {\n display: inline-block;\n padding: 12px 1em;\n border-radius: 4px;\n cursor: pointer;\n text-transform: uppercase;\n border: 0;\n font-weight: 500;\n font-size: 15px;\n line-height: 14px;\n\n &[disabled] { opacity: .6; cursor: initial; }\n }\n\n &.taste.isBold {\n font-weight: bold;\n }\n\n &.taste.isGhost {\n background-color: #FAFAFC;\n border: 1px solid #ADB4D2;\n color: #ADB4D2;\n transition: all .3s;\n\n &:hover {\n color: #6F76A7;\n border: 1px solid #ADB4D2;\n background-color: #F3F3FE;\n }\n }\n\n &.taste.isGreen {\n background-color: #78BB07;\n color: #fff;\n transition: background-color .3s;\n\n &:hover {\n background-color: #4EB100;\n }\n }\n\n &.taste.isRed {\n background-color: #DC2626;\n color: #fff;\n }\n\n &.taste.isGray {\n background-color: #dddfe9;\n color: #2c3345;\n }\n\n &.taste.isBlue {\n background-color: #4170e2;\n color: #fff;\n }\n\n &.taste.forCopy {\n padding: 0;\n white-space: nowrap;\n\n svg {\n margin-right: .5em;\n vertical-align: -3px;\n width: 17px;\n height: 17px;\n }\n > div { padding: .5em 1em; }\n }\n\n &.outline {\n display: inline-block;\n padding: .5em 1em;\n border-radius: 2px;\n cursor: pointer;\n background: transparent;\n border: 1px solid currentColor;\n font-size: .875em;\n line-height: 1rem;\n font-weight: 500;\n }\n &.forRevoke {\n font-size: .875em;\n color: #f9535c;\n margin: 0 .5rem 0 auto;\n padding: 0.5em 0.7em;\n border-radius: 4px;\n display: inline-flex;\n align-items: center;\n\n &:hover { background-color: #FEF2F2; }\n\n svg {\n width: 14px;\n height: 14px;\n margin-right: 4px;\n }\n }\n\n @media screen and (max-width: 480px) {\n .hom { display: none; }\n }\n`;\n\n/* eslint-enable max-len */\n\nexport const ScUIKitTooltip = Styled(props => )`\n font-size: .75rem;\n line-height: 1;\n padding: .5rem .5rem;\n text-transform: lowercase;\n border-radius: 2px;\n color: #fff;\n font-weight: 400;\n background-color: #2c3345;\n\n &:first-letter { text-transform: uppercase; }\n\n &:before {\n content: \"\";\n display: block;\n position: absolute;\n width: 10px; height: 10px;\n background-color: #2c3345;\n border-radius: 1px;\n transform: rotate(45deg);\n }\n\n @keyframes c { to { opacity: 1; margin-top: 2px; }}\n @keyframes d { to { opacity: 1; margin-bottom: 2px; }}\n\n &[data-popper-placement] {\n z-index: 1;\n }\n\n &[data-popper-placement=\"bottom\"] {\n opacity: 0; margin-top: 0px!important;\n\n &:before { top: -4px; left: 50%; margin-left: -4px; margin-top: 6px; }\n\n &, &:before { animation: c .1s cubic-bezier(.3,.71,.67,.58) 1 forwards; }\n }\n\n &[data-popper-placement=\"top\"] {\n opacity: 0; margin-bottom: 0px!important;\n\n &:before { bottom: -4px; left: 50%; margin-left: -4px; margin-bottom: 6px; }\n\n &, &:before { animation: d .1s cubic-bezier(.3,.71,.67,.58) 1 forwards; }\n }\n`;\n\nconst Button = React.forwardRef(({ name, ...props }, ref) => {\n const innerRef = useRef();\n const combinedRef = Hooks.useCombinedRefs(innerRef, ref);\n\n return (\n <>\n \n {true && name && {name}}\n \n );\n});\n\nButton.propTypes = {\n name: string\n};\n\nButton.defaultProps = {\n name: ''\n};\n\nexport default Button;\n","import React from 'react';\nimport { string } from 'prop-types';\nimport classNames from 'classnames';\n\nconst Text = ({ className, ...props }) => {\n return (\n
    \n );\n};\n\nText.defaultProps = {\n className: null\n};\n\nText.propTypes = {\n className: string\n};\n\nexport default Text;\n","import React from 'react';\nimport { string } from 'prop-types';\nimport classNames from 'classnames';\n\nconst Select = ({ className, ...props }) => {\n return (\n
    \n );\n};\n\nSelect.defaultProps = {\n className: null\n};\n\nSelect.propTypes = {\n className: string\n};\n\nexport default Select;\n","import React from 'react';\nimport { string, node, bool } from 'prop-types';\nimport classNames from 'classnames';\n\nconst Approver = ({\n className,\n children,\n showAvatars,\n type,\n ...props\n}) => {\n return (\n
    \n {showAvatars &&
    }\n
    \n {children}\n
    \n
    \n );\n};\n\nApprover.defaultProps = {\n className: null,\n children: null,\n type: null,\n showAvatars: true\n};\n\nApprover.propTypes = {\n className: string,\n children: node,\n type: string,\n showAvatars: bool\n};\n\nexport default Approver;\n","/* eslint-disable max-len */\nimport React from 'react';\nimport { string } from 'prop-types';\nimport classNames from 'classnames';\n\nconst Sign = ({ className, ...props }) => {\n return (\n
    \n \n \n \n
    \n );\n};\n\nSign.defaultProps = {\n className: null\n};\n\nSign.propTypes = {\n className: string\n};\n\nexport default Sign;\n","/* eslint-disable max-len */\n\nimport { node, string, func } from 'prop-types';\nimport React from 'react';\nimport './ApprovalReportSample.scss';\nimport {\n Select,\n Text,\n Sign,\n Approver\n} from './Demo';\n\nconst ReportSample = ({ threadState, logo, t }) => {\n const {\n showSignature, showComments, showAssigneeEmail, showAvatars\n } = threadState;\n return (\n
    \n
    \n
    \n \"Jotform\n
    \n
    \n {t('Audit Trail')}\n
    \n
    \n
    \n
    \n
    \n
    \n {t('TITLE')}\n
    \n
    \n
    \n Travel Expense Reimbursement\n
    \n
    \n
    \n
    \n
    \n {t('STATUS')}\n
    \n
    \n \n
    \n
    \n
    \n
    \n {t('FLOW ACTIVITY HISTORY')}\n
    \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    {t('Actor/Event')}{t('Actions')}{t('Date')}
    \n \n Notification\n \n \n \n Travel Expense Form Submitted\n \n \n \n May 26, 2021\n \n
    \n \n Approver Name 1\n
    \n {showAssigneeEmail && 'example@sample.com'}\n
    \n
    \n \n { showComments && Approval comment will be here.}\n { showSignature && }\n \n \n May 25, 2021\n \n
    \n \n Notification\n \n \n \n Email sent.\n
    \n Your travel expense has been approved.\n
    \n To: ashley@example.com\n
    \n
    \n \n May 26, 2021\n \n
    \n
    \n
    \n
    \n
    \n
    \n );\n};\n\nReportSample.defaultProps = {\n threadState: {},\n logo: '//cdn.jotfor.ms/assets/img/logo2021/jotform-logo.svg',\n t: f => f\n};\n\nReportSample.propTypes = {\n threadState: node,\n logo: string,\n t: func\n};\n\nexport default ReportSample;\n","export const allowedQuestions = [\n 'control_fullname',\n 'control_email',\n 'control_address',\n 'control_phone',\n 'control_textbox',\n 'control_textarea',\n 'control_dropdown',\n 'control_radio',\n 'control_checkbox',\n 'control_number',\n 'control_spinner',\n 'control_scale'\n];\n\nexport const prettyFieldLabels = {\n control_fullname: {\n prefix: 'Prefix',\n first: 'First Name',\n middle: 'Middle Name',\n last: 'Last Name',\n suffix: 'Suffix'\n },\n control_address: {\n addr_line1: 'Street Address',\n addr_line2: 'Street Address Line 2',\n city: 'City',\n state: 'State / Province',\n postal: 'Postal / Zip Code'\n },\n control_phone: {\n area: 'Area Code',\n phone: 'Phone Number',\n country: 'Country Code'\n },\n control_time: {\n hour: 'Hour',\n minutes: 'Minutes',\n ampm: 'AM/PM'\n },\n control_datetime: {\n day: 'Day',\n month: 'Month',\n year: 'Year',\n hour: 'Hour',\n minutes: 'Minutes',\n ampm: 'AM/PM'\n }\n};\n\nexport const prettyContainerTitles = {\n control_yesno: 'Yes/No',\n control_head: 'Heading',\n control_fullname: 'Full Name',\n control_image: 'Image',\n control_number: 'Number',\n control_email: 'Email',\n control_captcha: 'Captcha',\n control_collapse: 'Form Collapse',\n control_address: 'Address',\n control_button: 'Submit Button',\n control_spinner: 'Spinner',\n control_scale: 'Scale Rating',\n control_phone: 'Phone',\n control_rating: 'Star Rating',\n control_matrix: 'Input Table',\n control_pagebreak: 'Page Break',\n control_textbox: 'Short Text',\n control_fileupload: 'File Upload',\n control_time: 'Time',\n control_textarea: 'Long Text',\n control_dropdown: 'Dropdown',\n control_radio: 'Single Choice',\n control_checkbox: 'Multiple Choice',\n control_datetime: 'Date Picker',\n control_hidden: 'Hidden',\n control_slider: 'Slider',\n control_paypal: 'PayPal',\n control_paypalpro: 'PayPal Pro',\n control_cybersource: 'Cyber Source',\n control_paypalexpress: 'PayPal Express',\n control_stripe: 'Stripe',\n control_stripeCheckout: 'Stripe Checkout',\n control_payfast: 'Payfast',\n control_braintree: 'Braintree',\n control_authnet: 'Authorize.net',\n control_dwolla: 'Dwolla',\n control_eway: 'Eway',\n control_square: 'Square',\n control_2co: '2CheckOut',\n control_clickbank: 'ClickBank',\n control_worldpay: 'worldpay',\n control_onebip: 'onebip',\n control_payment: 'Purchase Order',\n control_text: 'Text',\n control_emojislider: 'Emoji Slider',\n control_signature: 'E-Signature',\n control_imagechoice: 'Image Choice',\n control_appointment: 'Appointment',\n control_inline: 'Fill in the Blank',\n 'control_appointment-date': 'Appointment Date',\n 'control_appointment-duration': 'Appointment Duration',\n submissionID: 'Submission ID',\n submissionDate: 'Submission Date',\n formID: 'Form ID'\n};\n\nexport const addressSubFields = {\n st1: 'addr_line1',\n st2: 'addr_line2',\n zip: 'postal',\n state: 'state',\n city: 'city',\n country: 'country'\n};\n","import { t } from '@jotforminc/translation';\n\nimport {\n addressSubFields,\n allowedQuestions,\n prettyContainerTitles,\n prettyFieldLabels\n} from './constants';\n\nfunction getQuestionLabel({\n questionText, qid, type, key\n}) {\n if (questionText) {\n return questionText;\n }\n const labels = prettyFieldLabels[type];\n if (key) {\n return labels && labels[key] ? t(labels[key]) : '';\n }\n return prettyContainerTitles[type]\n ? `${t(prettyContainerTitles[type])} (id${qid})`\n : `(id${qid})`;\n}\n\nexport function automatch(left, right) {\n const autoMatches = [];\n const matchedTypes = {};\n\n const rightTypes = right.reduce((acc, item) => {\n if (item.autoMatchType in acc) {\n return acc;\n }\n\n acc[item.autoMatchType] = item;\n return acc;\n }, {});\n\n left.forEach(target => {\n if (!target.autoMatchType) {\n return;\n }\n\n if (\n target.autoMatchType in rightTypes\n && !(target.autoMatchType in matchedTypes)\n ) {\n autoMatches.push([target.value, rightTypes[target.autoMatchType].selector]);\n matchedTypes[target.autoMatchType] = true;\n }\n });\n\n if (autoMatches.length === 0) {\n return [['', '']];\n }\n\n return autoMatches;\n}\n\n// eslint-disable-next-line complexity\nconst getQuestionSubFields = (question, includeQuestion = false, provider = null) => {\n const { qid, type } = question;\n const data = [];\n let label = '';\n const questionText = question.label || question.text; // label for table columns, text for form questions\n switch (type) {\n case 'control_fullname':\n if (includeQuestion) {\n data.push({\n selector: qid,\n label: questionText,\n qid,\n autoMatchType: type\n });\n }\n\n ['prefix', 'first', 'middle', 'last', 'suffix'].forEach(key => {\n if (question[key] === 'Yes' || ['first', 'last'].indexOf(key) > -1) {\n label = `${getQuestionLabel({\n questionText,\n qid,\n type\n })} - ${getQuestionLabel({\n questionText: question.sublabels?.[key],\n type,\n key\n })}`;\n data.push({\n selector: `${key}_${qid}`,\n label,\n qid: `${qid}-${key}`,\n autoMatchType: `${type}-${key}`\n });\n }\n });\n break;\n case 'control_address':\n if (includeQuestion) {\n data.push({\n selector: qid,\n label: questionText,\n qid,\n autoMatchType: type\n });\n }\n if (question.subfields) {\n question.subfields.split('|').forEach(key => {\n const subKey = addressSubFields[key];\n if (!subKey) return;\n label = `${getQuestionLabel({\n questionText,\n qid,\n type\n })} - ${getQuestionLabel({\n questionText: question.sublabels?.[subKey],\n type,\n key: subKey\n })}`;\n data.push({\n selector: `input_${qid}_${subKey}`,\n label,\n qid: `${qid}-${subKey}`,\n autoMatchType: `${question.type}-${subKey}`\n });\n });\n }\n break;\n case 'control_phone':\n if (question.inputMask === 'enable') {\n data.push({\n selector: `input_${qid}_full`,\n label: getQuestionLabel({ questionText, qid, type }),\n qid,\n autoMatchType: question.type\n });\n } else {\n if (includeQuestion) {\n data.push({\n selector: qid,\n label: questionText,\n qid,\n autoMatchType: type\n });\n }\n\n const keys = ['area', 'phone'];\n if (question.countryCode === 'Yes') {\n keys.unshift('country');\n }\n keys.forEach(key => {\n label = `${getQuestionLabel({\n questionText,\n qid,\n type\n })} - ${getQuestionLabel({\n questionText: question.sublabels?.[key],\n type,\n key\n })}`;\n data.push({\n selector: `input_${qid}_${key}`,\n label,\n qid: `${qid}-${key}`\n });\n });\n }\n break;\n case 'control_datetime':\n if (question.liteMode === 'Yes') {\n const newData = {\n selector: `lite_mode_${qid}`,\n label: `${questionText} - ${question.sublabels?.litemode || ''}`,\n qid\n };\n // adds automatch feature for workflow on datetime question type\n data.push(provider === 'workflow' ? { ...newData, autoMatchType: type } : newData);\n } else {\n ['day', 'month', 'year'].forEach(key => {\n label = `${getQuestionLabel({\n questionText,\n qid,\n type\n })} - ${getQuestionLabel({\n questionText: question.sublabels?.[key],\n type,\n key\n })}`;\n data.push({\n selector: `${key}_${qid}`,\n label,\n qid: `${qid}-${key}`\n });\n });\n }\n\n if (question.allowTime === 'Yes') {\n const hour = getQuestionLabel({\n questionText: question.sublabels.hour,\n type,\n key: 'hour'\n });\n const minutes = getQuestionLabel({\n questionText: question.sublabels.minutes,\n type,\n key: 'minutes'\n });\n label = `${getQuestionLabel({\n questionText,\n qid,\n type\n })} - ${hour} ${minutes}`;\n data.push({\n selector: `input_${qid}_timeInput`,\n label,\n qid: `${qid}-timeInput`\n });\n\n if (question.timeFormat === 'AM/PM') {\n data.push({\n selector: `input_${qid}_ampm`,\n label: `${getQuestionLabel({\n questionText,\n qid,\n type\n })} - ${getQuestionLabel({\n questionText: question.sublabels.ampm,\n type,\n key: 'ampm'\n })}`,\n qid: `${qid}-ampm`\n });\n }\n }\n break;\n case 'control_radio':\n case 'control_checkbox':\n case 'control_scale':\n data.push({\n selector: `input_${qid}_1`,\n label: getQuestionLabel({ questionText, qid, type }),\n qid\n });\n break;\n case 'control_time':\n const hourLabel = getQuestionLabel({\n questionText: question.sublabels.hour,\n type,\n key: 'hour'\n });\n const minLabel = getQuestionLabel({\n questionText: question.sublabels.minutes,\n type,\n key: 'minutes'\n });\n label = `${getQuestionLabel({\n questionText,\n qid,\n type\n })} - ${hourLabel} ${minLabel}`;\n\n const newData = {\n selector: `input_${qid}_timeField`,\n label,\n qid: `${qid}-timeField`\n };\n\n // adds automatch feature for workflow on datetime question type\n data.push(provider === 'workflow' ? { ...newData, autoMatchType: type } : newData);\n\n if (question.timeFormat === 'AM/PM') {\n data.push({\n selector: `input_${qid}_ampm`,\n label: `${getQuestionLabel({\n questionText,\n qid,\n type\n })} - ${getQuestionLabel({\n questionText: question.sublabels.ampm,\n type,\n key: 'ampm'\n })}`,\n qid: `${qid}-ampm`\n });\n }\n break;\n case 'control_email':\n data.push({\n selector: `input_${qid}`,\n label: getQuestionLabel({ questionText, qid, type }),\n qid,\n autoMatchType: question.type\n });\n break;\n default:\n data.push({\n selector: `input_${qid}`,\n label: getQuestionLabel({ questionText, qid, type }),\n qid\n });\n break;\n }\n\n return data;\n};\n\nfunction extendAllowedQuestionWithProvider(provider, isLeftQuestions) {\n const supportedQuestion = allowedQuestions;\n switch (true) {\n case ['workflow', 'tables', 'anotherForm'].indexOf(provider) > -1:\n const questionTypes = supportedQuestion?.concat(['control_datetime', 'control_time']);\n if (isLeftQuestions) {\n return questionTypes?.concat(['control_autoincrement']);\n }\n return questionTypes;\n case provider === 'thankYou':\n return supportedQuestion?.concat(['control_datetime']);\n default:\n return supportedQuestion;\n }\n}\n\nexport function getFormattedQuestions(questions, includeQuestion = false, provider = null, isLeftQuestions = false) {\n const _questions = [];\n questions.forEach(item => {\n let supportedQuestion = allowedQuestions;\n if (provider) supportedQuestion = extendAllowedQuestionWithProvider(provider, isLeftQuestions);\n if (supportedQuestion.indexOf(item.type) === -1) return;\n\n const subFieldData = getQuestionSubFields(item, includeQuestion, provider);\n\n subFieldData.forEach((field, index) => {\n _questions.push({\n ...field,\n qid: item.qid,\n id: `jot_${item.qid}_${index}`,\n value: includeQuestion ? field.qid : field.selector,\n questionValue: field.qid,\n isProtected: item.protected === 'Yes'\n });\n });\n });\n\n return _questions;\n}\n\nexport function isMappingValid(mapping, leftOptions, rightOptions) {\n for (let i = 0; i < mapping.length; i++) {\n const item = mapping[i];\n const isLeftDeleted = item[0] && leftOptions.find(q => q.value === item[0]) === undefined;\n const isRightDeleted = item[1] !== '' && rightOptions.find(q => q.value === item[1]) === undefined;\n if (isLeftDeleted || isRightDeleted) {\n return false;\n }\n }\n return true;\n}\n\nexport function convertItemsToOptions(items) {\n return items.map(item => {\n return {\n text: item.label,\n value: item.value,\n name: item.selector,\n isProtected: item.isProtected\n };\n });\n}\n\nexport function convertPrefillSettingsToPrefillFieldMapping(prefill) {\n if (!prefill) {\n return null;\n }\n const { configuration: { mapping = [] } = {} } = prefill;\n return mapping.map(e => {\n return [e.target, e.jot];\n });\n}\n\nexport function convertPrefillFieldMappingToPrefillSettings(mapping) {\n if (!mapping || mapping.length === 0) {\n return null;\n }\n\n const mapPrefillsToSettings = [];\n\n mapping.forEach(element => {\n mapPrefillsToSettings.push({\n target: element[0],\n jot: element[1]\n });\n });\n return {\n mapping: mapPrefillsToSettings\n };\n}\n\nexport function removeIncompleteMatches(mapping) {\n if (!mapping) {\n return [];\n }\n return mapping.filter(m => {\n return m[0] !== '' && m[1] !== '';\n });\n}\n","/* eslint-disable */\nimport tlds from 'tlds';\n\nexport const TLDs = tlds.join('|');\nexport const EMAIL_PATTERN = new RegExp(`^[a-z0-9_\\`'\\\\-\\\\+\\\\&+]+(\\\\.[_a-z0-9'\\\\-\\\\+]+)*@([_a-z0-9\\\\-]+\\\\.)+([a-z]{2}|${TLDs})$`, 'i');\n","export const Languages = [\n { key: 'aa', value: 'Afar' },\n { key: 'ab', value: 'Abkhazian' },\n { key: 'ae', value: 'Avestan' },\n { key: 'af', value: 'Afrikaans' },\n { key: 'ak', value: 'Akan' },\n { key: 'am', value: 'Amharic' },\n { key: 'an', value: 'Aragonese' },\n { key: 'ar', value: 'Arabic' },\n { key: 'as', value: 'Assamese' },\n { key: 'av', value: 'Avaric' },\n { key: 'ay', value: 'Aymara' },\n { key: 'az', value: 'Azerbaijani' },\n { key: 'ba', value: 'Bashkir' },\n { key: 'be', value: 'Belarusian' },\n { key: 'bg', value: 'Bulgarian' },\n { key: 'bh', value: 'Bihari' },\n { key: 'bi', value: 'Bislama' },\n { key: 'bm', value: 'Bambara' },\n { key: 'bn', value: 'Bengali' },\n { key: 'bo', value: 'Tibetan' },\n { key: 'br', value: 'Breton' },\n { key: 'bs', value: 'Bosnian' },\n { key: 'ca', value: 'Catalan' },\n { key: 'ce', value: 'Chechen' },\n { key: 'ch', value: 'Chamorro' },\n { key: 'co', value: 'Corsican' },\n { key: 'cr', value: 'Cree' },\n { key: 'cs', value: 'Czech' },\n { key: 'cu', value: 'Church Slavic' },\n { key: 'cv', value: 'Chuvash' },\n { key: 'cy', value: 'Welsh' },\n { key: 'da', value: 'Danish' },\n { key: 'de', value: 'German' },\n { key: 'dv', value: 'Divehi' },\n { key: 'dz', value: 'Dzongkha' },\n { key: 'ee', value: 'Ewe' },\n { key: 'el', value: 'Greek' },\n { key: 'en', value: 'English' },\n { key: 'eo', value: 'Esperanto' },\n { key: 'es', value: 'Spanish' },\n { key: 'et', value: 'Estonian' },\n { key: 'eu', value: 'Basque' },\n { key: 'fa', value: 'Persian' },\n { key: 'ff', value: 'Fulah' },\n { key: 'fi', value: 'Finnish' },\n { key: 'fj', value: 'Fijian' },\n { key: 'fo', value: 'Faroese' },\n { key: 'fr', value: 'Français' },\n { key: 'fy', value: 'Western Frisian' },\n { key: 'ga', value: 'Irish' },\n { key: 'gd', value: 'Scottish Gaelic' },\n { key: 'gl', value: 'Galician' },\n { key: 'gn', value: 'Guarani' },\n { key: 'gu', value: 'Gujarati' },\n { key: 'gv', value: 'Manx' },\n { key: 'ha', value: 'Hausa' },\n { key: 'he', value: 'Hebrew' },\n { key: 'hi', value: 'Hindi' },\n { key: 'ho', value: 'Hiri Motu' },\n { key: 'hr', value: 'Croatian' },\n { key: 'ht', value: 'Haitian' },\n { key: 'hu', value: 'Hungarian' },\n { key: 'hy', value: 'Armenian' },\n { key: 'hz', value: 'Herero' },\n { key: 'ia', value: 'Interlingua' },\n { key: 'id', value: 'Indonesian' },\n { key: 'ie', value: 'Interlingue' },\n { key: 'ig', value: 'Igbo' },\n { key: 'ii', value: 'Sichuan Yi' },\n { key: 'ik', value: 'Inupiaq' },\n { key: 'io', value: 'Ido' },\n { key: 'is', value: 'Icelandic' },\n { key: 'it', value: 'Italian' },\n { key: 'iu', value: 'Inuktitut' },\n { key: 'ja', value: 'Japanese' },\n { key: 'jv', value: 'Javanese' },\n { key: 'ka', value: 'Georgian' },\n { key: 'kg', value: 'Kongo' },\n { key: 'ki', value: 'Kikuyu' },\n { key: 'kj', value: 'Kwanyama' },\n { key: 'kk', value: 'Kazakh' },\n { key: 'kl', value: 'Kalaallisut' },\n { key: 'km', value: 'Khmer' },\n { key: 'kn', value: 'Kannada' },\n { key: 'ko', value: 'Korean' },\n { key: 'kr', value: 'Kanuri' },\n { key: 'ks', value: 'Kashmiri' },\n { key: 'ku', value: 'Kurdish' },\n { key: 'kv', value: 'Komi' },\n { key: 'kw', value: 'Cornish' },\n { key: 'ky', value: 'Kirghiz' },\n { key: 'la', value: 'Latin' },\n { key: 'lb', value: 'Luxembourgish' },\n { key: 'lg', value: 'Ganda' },\n { key: 'li', value: 'Limburgish' },\n { key: 'ln', value: 'Lingala' },\n { key: 'lo', value: 'Lao' },\n { key: 'lt', value: 'Lithuanian' },\n { key: 'lu', value: 'Luba-Katanga' },\n { key: 'lv', value: 'Latvian' },\n { key: 'mg', value: 'Malagasy' },\n { key: 'mh', value: 'Marshallese' },\n { key: 'mi', value: 'Maori' },\n { key: 'mk', value: 'Macedonian' },\n { key: 'ml', value: 'Malayalam' },\n { key: 'mn', value: 'Mongolian' },\n { key: 'mr', value: 'Marathi' },\n { key: 'ms', value: 'Malay' },\n { key: 'mt', value: 'Maltese' },\n { key: 'my', value: 'Burmese' },\n { key: 'na', value: 'Nauru' },\n { key: 'nb', value: 'Norwegian Bokmal' },\n { key: 'nd', value: 'North Ndebele' },\n { key: 'ne', value: 'Nepali' },\n { key: 'ng', value: 'Ndonga' },\n { key: 'nl', value: 'Nederlands' },\n { key: 'nn', value: 'Norwegian Nynorsk' },\n { key: 'no', value: 'Norwegian' },\n { key: 'nr', value: 'South Ndebele' },\n { key: 'nv', value: 'Navajo' },\n { key: 'ny', value: 'Chichewa' },\n { key: 'oc', value: 'Occitan' },\n { key: 'oj', value: 'Ojibwa' },\n { key: 'om', value: 'Oromo' },\n { key: 'or', value: 'Oriya' },\n { key: 'os', value: 'Ossetian' },\n { key: 'pa', value: 'Panjabi' },\n { key: 'pi', value: 'Pali' },\n { key: 'pl', value: 'Polish' },\n { key: 'ps', value: 'Pashto' },\n { key: 'pt', value: 'Portuguese' },\n { key: 'qu', value: 'Quechua' },\n { key: 'rm', value: 'Raeto-Romance' },\n { key: 'rn', value: 'Kirundi' },\n { key: 'ro', value: 'Română' },\n { key: 'ru', value: 'Russian' },\n { key: 'rw', value: 'Kinyarwanda' },\n { key: 'sa', value: 'Sanskrit' },\n { key: 'sc', value: 'Sardinian' },\n { key: 'sd', value: 'Sindhi' },\n { key: 'se', value: 'Northern Sami' },\n { key: 'sg', value: 'Sango' },\n { key: 'si', value: 'Sinhala' },\n { key: 'sk', value: 'Slovak' },\n { key: 'sl', value: 'Slovenian' },\n { key: 'sm', value: 'Samoan' },\n { key: 'sn', value: 'Shona' },\n { key: 'so', value: 'Somali' },\n { key: 'sq', value: 'Albanian' },\n { key: 'sr', value: 'Serbian' },\n { key: 'ss', value: 'Swati' },\n { key: 'st', value: 'Southern Sotho' },\n { key: 'su', value: 'Sundanese' },\n { key: 'sv', value: 'Swedish' },\n { key: 'sw', value: 'Swahili' },\n { key: 'ta', value: 'Tamil' },\n { key: 'te', value: 'Telugu' },\n { key: 'tg', value: 'Tajik' },\n { key: 'th', value: 'Thai' },\n { key: 'ti', value: 'Tigrinya' },\n { key: 'tk', value: 'Turkmen' },\n { key: 'tl', value: 'Filipino' },\n { key: 'tn', value: 'Tswana' },\n { key: 'to', value: 'Tonga' },\n { key: 'tr', value: 'Turkish' },\n { key: 'ts', value: 'Tsonga' },\n { key: 'tt', value: 'Tatar' },\n { key: 'tw', value: 'Twi' },\n { key: 'ty', value: 'Tahitian' },\n { key: 'ug', value: 'Uighur' },\n { key: 'uk', value: 'Ukrainian' },\n { key: 'ur', value: 'Urdu' },\n { key: 'uz', value: 'Uzbek' },\n { key: 've', value: 'Venda' },\n { key: 'vi', value: 'Vietnamese' },\n { key: 'vo', value: 'Volapuk' },\n { key: 'wa', value: 'Walloon' },\n { key: 'wo', value: 'Wolof' },\n { key: 'xh', value: 'Xhosa' },\n { key: 'yi', value: 'Yiddish' },\n { key: 'yo', value: 'Yoruba' },\n { key: 'za', value: 'Zhuang' },\n { key: 'zh', value: 'Chinese' },\n { key: 'zu', value: 'Zulu' }\n];\n","import {\n bool, oneOfType, shape, number, string, node, elementType, objectOf, oneOf, arrayOf\n} from 'prop-types';\n\nconst answersPropType = oneOfType([\n objectOf(shape({})).isRequired,\n bool\n]);\n\nconst formPropType = shape({\n id: oneOfType([string, number]).isRequired,\n title: string.isRequired,\n isEncrypted: oneOf(['Yes', 'No']),\n count: oneOfType([string, number]).isRequired,\n new: oneOfType([string, number]).isRequired,\n flag: oneOfType([string, number]),\n last_submission: string,\n pdfTemplates: arrayOf(shape({})),\n paymentStrings: arrayOf(objectOf(string)),\n products: arrayOf(objectOf(oneOfType([shape({}), string]))),\n hideSubmissionHeader: oneOf(['Yes', 'No']),\n showApprovalStatus: oneOf(['Yes', 'No'])\n});\n\nconst propTypes = {\n renderable: oneOfType([\n elementType,\n node\n ]),\n stringOrNumber: oneOfType([\n number,\n string\n ]),\n submissionPropType: shape({\n id: oneOfType([string, number]).isRequired,\n answers: answersPropType.isRequired,\n created_at: string.isRequired\n }),\n userPropType: shape({\n email: string,\n username: string.isRequired,\n language: string.isRequired,\n forms: arrayOf(formPropType).isRequired,\n account_type: oneOfType([string, shape({\n name: string\n })]).isRequired\n })\n};\n\nexport {\n propTypes\n};\n","export const NON_INPUT_QUESTIONS = [\n 'control_pagebreak',\n 'control_collapse',\n 'control_head',\n 'control_text',\n 'control_image',\n 'control_button',\n 'control_captcha',\n 'control_separator',\n 'control_clear',\n 'control_divider'\n];\n\n// these are widgets that do not generate answers.\nexport const NON_INPUT_WIDGETS = [\n '5273bb4faa80af0979000005', // Youtube\n '52a8531850e4cbc101000004', // Progress Bar\n '0fff4c94790070b09933edd8', // Open Street Map\n '5295bb771a667c525e000007', // Kinomap\n '5295c0a8ba5d618d5f000004', // Video Detective\n '526a2cd08a881e882100000c', // Vimeo\n '526a318cdeab09892100001c', // Animoto\n '52721d0af9879ec031000026', // Mobypicture\n '5295afd37da55cb758000008', // 23 Video\n '5295beee9319dafd5e000004', // Socialcam\n '526a2dbf8a881e882100000f', // Funny or Die\n '5295bf984d4ed6385f000004', // TED\n '5295ba694a87e6175e000007', // Howcast\n '5295c1831c9dde8961000004', // Worldstar HipHop\n '526a2d72deab09892100000d', // Dotsub\n '5295bc6528947a7d5e000004', // LogoTV\n '573985710fe4dd7d72000009', // Wistia\n '52930ea905a7114f7000002e', // Embed Flash\n '526a31538a881e8821000015', // Dailymotion\n '5295bfef3c0d37545f000004', // Twitch\n '5295bd563a20442323000004', // MySpace Videos\n '5295b815485bd19f5d000008', // Comedy Central\n '5295b794b3a63a910c000004', // Colbert Nation\n '5295b4bd22d53d3d59000004', // Bambuser\n '5295bfc6edbacd465f000004', // Trailer Addict\n '5295c0785a989c8c5f000004', // UStream\n '529ca19069fc7db354000004', // Livestream\n '5295b856ebc6f2bf5d000004', // Coub\n '5295c144a9770db75f000004', // WordPress TV\n '5295bec630696cfc5e000004', // Screenr\n '526a3007deab098921000016', // Vzaar\n '526a33258a881e882100001b', // Minoto Video\n '5295b9b357166ffb5d000004', // Fora.tv\n '5295bd883a20442323000007', // NFB\n '5295bc310802796e5e000004', // LiveLeak\n '5295bb401a667c525e000004', // KickStarter\n '5295bf7a1750fa375f000004', // StreetFire\n '5295c117bb1d7ea95f000004', // Weavly\n '526a2c3fdeab098921000007', // Hulu\n '5283818625d5b96b67000004', // Viddler\n '5295b9701667a0de5d000008', // ESPN\n '526a33768a881e882100001e', // Youku\n '5295bc9989cc268a5e000004', // MixBit\n '5295b142ba053ae558000004', // AOL On\n '526a32b68a881e8821000018', // Veoh\n '5295c1aaaa24319761000004', // Zapiks\n '526a2ef1deab098921000013', // Metacafe\n '5295b9f083a5d70a5e000004', // Game Trailers\n '52a604a359583c1d56000006', // Movie\n '529cd0ea8afa8f742d000004', // Image Slider\n '5293065005a7114f7000002a', // Fit Text\n '5297606bfe8fa6bf0d000016', // Data grid\n '529260f705a7114f70000008', // Social Follow\n '529641beb15ce2ac76000007', // PDF Embedder\n '528ef93577d598b430000010' // Countdown\n];\n\nexport const STATIC_FIELDS_WITH_PLACEHOLDER = [\n { text: 'Submission ID', placeholder: '{id}' },\n { text: 'Form Title', placeholder: '{form_title}' },\n { text: 'IP Address', placeholder: '{ip}' }\n];\n","export const twoFactorTypeKeys = {\n sms: 'phone',\n authenticatorApp: 'totp'\n};\n\nexport const Texts = {\n MY_FORMS: 'My Forms',\n PROFILE: 'Profile',\n SKIP_CREATE_ACCOUNT: 'Skip Create an Account',\n CONTINUE_DRAFT: 'Continue With Draft',\n DISCARD_START_BLANK: 'You can continue your draft or discard and start with a blank form',\n SAVED_DRAFT_SUBMISSION: 'You have a draft for this form.',\n HELLO_TEXT: 'Hello,',\n LOG_OUT: 'Log out',\n LOGOUT: 'Logout',\n LOGIN_TEXT: 'Log in',\n GET_SHARE_LINK: 'Get Shareable Link',\n EMAIL: 'Email',\n RE_EMAIL: 'Resend Email',\n COPIED_CLIPBOARD: 'Link copied to clipboard!',\n SENT_TO: 'Email sent to',\n DOESNT_SUPPORT_BROWSER: 'Your browser doesn\\'t support this operation',\n SEND_LINK_COMPLETE: 'We’ve sent you an email with a link to complete your submission.',\n START_OVER: `Discard ${encodeURIComponent('&')} Start Over`,\n SAVE_PROGRESS: 'Save your progress',\n ALREADY_HAVE_ACCOUNT: 'Already have an account?',\n DONT_HAVE_ACCOUNT: 'Don’t have an account?',\n ARE_YOU_JOTFORM_ENTERPRISE_USER: 'Are you a Jotform Enterprise user?',\n LOGIN_TO_JOTFORM_ENTERPRISE: 'Log into Jotform Enterprise',\n LOGIN_CAPITAL: 'LOG IN',\n SIGN_UP: 'Sign up',\n CREATE_ACCOUNT: 'Create an Account',\n OTHER_OPTIONS: 'More sign up options',\n SIGN_UP_EMAIL: 'Sign up with Email',\n SIGN_UP_EMAIL_LOWERCASE: 'Sign up with email',\n FULL_NAME: 'Full Name',\n NAME_TEXT: 'Name',\n EMAIL_TEXT: 'Email',\n PASSWORD_TEXT: 'Password',\n CONF_PASSWORD_TEXT: 'Confirm Password',\n TERMS_SERVICE: 'Terms of Service',\n TERMS_OF_USE: 'Terms of Use',\n PRIVACY_POLICY: 'Privacy Policy',\n AND_KEY: 'and',\n OR_KEY: 'OR',\n SUBMISSIONS_SAVED_DRAFT: 'Your form has been saved as a draft.',\n SEND_DRAFT_CONTINUE: 'We’ve sent you an email with a link to continue your form.',\n ENTER_EMAIL: 'If you want to continue your form later, please enter the email address you would like to send the link to:',\n EMAIL_NOT_BLANK: 'Email cannot be left blank',\n SEND_LINK: 'Send link',\n SEND: 'Send',\n BACK_KEY: 'Back',\n SAVE_SUBMISSION: 'Save Submission',\n SAVE_KEY: 'Save',\n SKIP_KEY: 'Skip',\n USERNAME_EMAIL: 'Username or Email',\n LOGIN_SAVE: 'Login and Save Submission',\n AGREE_SERVICE_POLICY: 'I agree to the [1[Terms of Service]], [2[Privacy Policy]] and [3[Cookie Policy]].',\n AGREE_FOR_TURKISH_USERS: 'I have read the [1[KVKK Clarification Text]] and I accept the processing of my personal data in accordance with the [2[Explicit Consent Text]].',\n MORE_HELP_CONTACT: 'If you need more help, please [1[contact our support team.]]',\n MORE_HELP_CONTACT_ENTERPRISE: 'If you need help, please contact with your administrator.',\n FORGOT_PASSWORD: 'Forgot password?',\n FORGOT_YOUR_PASSWORD: 'Forgot your password?',\n PASSWORD_RESET_SENT: 'Password reset instructions have been sent successfully via email.',\n FIELD_REQUIRED: 'This field is required',\n EMAIL_FIELD_REQUIRED: 'Username or email field is required',\n PASS_FIELD_REQUIRED: 'Password field is required',\n ENTER_A_PASSWORD: 'Please enter a password.',\n PASSWORD_OK: 'Password ok',\n PASSWORD_CONFIRMATION_OK: 'Password confirmation ok',\n PASSWORD_CANNOT_BLANK: 'Password cannot be left blank',\n PASS_MIN_CHAR_COUNT: 'Should have minimum 8 characters',\n PASS_INCL_CHARS: 'Should be a mix of upper case, lower case characters, and numbers or special characters',\n FIELDS_SHOULD_MATCH: 'Passwords don\\'t match.',\n SECURE_PASS_DESC: 'Your password must contain at least',\n SECURE_PASS_REUSE: 'Your password must be different from your last 6 passwords',\n SECURE_PASS_REUSE_CONT: ' and contain at least',\n SECURE_PASS_CHAR_COUNT: '8 characters',\n SECURE_PASS_TEST_DESC: 'Your password must include at least',\n SECURE_PASS_UPPERCASE: '1 uppercase letter',\n SECURE_PASS_LOWERCASE: '1 lowercase letter',\n SECURE_PASS_NUMBER: '1 number',\n SECURE_PASS_SPECIAL_CHAR: '1 special character',\n SECURE_PASS_NO_LEADING_OR_TRAILING_WHITESPACE: 'No blank spaces, either at the beginning or at the end',\n PASS_DIFF_PREV: 'Should be different from your last 6 passwords',\n CONNECT_SALESFORCE: 'Connect with Salesforce',\n CONNECT_APPLE: 'Connect with Apple',\n CONNECT_GOOGLE: 'Connect with Google',\n CONNECT_MICROSOFT: 'Connect with Microsoft',\n CONNECT_FACEBOOK: 'Connect with Facebook',\n SIGN_UP_SALESFORCE: 'Sign up with Salesforce',\n SIGN_UP_SALESFORCE_MOBILE: 'Salesforce',\n SIGN_UP_APPLE: 'Sign up with Apple',\n SIGN_UP_GOOGLE: 'Sign up with Google',\n SIGN_UP_GOOGLE_MOBILE: 'Google',\n SIGN_UP_FACEBOOK: 'Sign up with Facebook',\n SIGN_UP_FACEBOOK_MOBILE: 'Facebook',\n SIGN_UP_MICROSOFT: 'Sign up with Microsoft',\n SIGN_UP_MICROSOFT_MOBILE: 'Microsoft',\n SIGN_UP_NOW: 'Sign Up Now!',\n SIGN_UP_NOW_NO_EXCLAMATION_MARK: 'Sign Up Now',\n LOGIN_WITH: 'Log in with',\n LOGIN_SALESFORCE: 'Login with Salesforce',\n SALESFORCE: 'Salesforce',\n LOGIN_GOOGLE: 'Login with Google',\n GOOGLE: 'Google',\n LOGIN_FACEBOOK: 'Login with Facebook',\n FACEBOOK: 'Facebook',\n LOGIN_APPLE: 'Login with Apple',\n APPLE: 'Apple',\n LOGIN_MICROSOFT: 'Login with Microsoft',\n MICROSOFT: 'Microsoft',\n ENTER_USERNAME_EMAIL: 'Enter your username or email',\n SEND_INSTRUCTIONS: 'Send Reset Instructions',\n GO_BACK_TEXT: 'Go back',\n BACK_TO_PRIMARY_METHOD: 'Back to Primary Method',\n CAN_NOT_ACCESS_MY_DEVICE: \"I can't access my authentication device\",\n // eslint-disable-next-line max-len\n RECOVER_ACCOUNT_TEXT: \"If you can't access your authentication device or recovery codes, you can ask for assistance from Jotform support. Click the button below to start your recovery process.\",\n RECOVER_ACCOUNT_MAIL_HAS_BEEN_SENT: 'Your request to have your account recovered has already been sent in. You are unable to submit another request to recover your account until it is finished.',\n RECOVER_YOUR_ACCOUNT: 'Recover Your Account',\n VIEW_SUPPORT_TICKET: 'View Support Ticket',\n VERIFICATION_EMAIL_SENT_TO: 'The verification email has been sent to',\n RECOVER_ACCOUNT_EMAIL_INFO_TEXT: 'Click on the button in the email to create a ticket.',\n RECOVER_ACCOUNT_NOTIFICATION_TEXT: 'After you submit, a member of our support staff will examine your request and get in touch with you to offer assistance within 48 to 72 hours.',\n BACK_TO_LOGIN: 'Back to Login',\n VALID_EMAIL: 'Please type a valid email',\n SENDING: 'Sending...',\n AGREE_TERMS_CONDITIONS: 'Please agree terms and conditions',\n NEED_TO_ACCEPT_TERMS: 'You need to accept our Terms of Service and Privacy Policy to create an account.',\n CHECK_SPAM_FOLDER: 'If you don’t get the email, please check your spam folder.',\n GET_INSTRUCTION_EMAIL: 'You should get the password reset instructions via email soon.',\n OK_TEXT: 'OK',\n CHECK_EMAIL: 'Check your email',\n EMAIL_IS_USE: 'Email is in use:',\n EMAIL_IS_NOTVALID: 'Email is not valid.',\n CURRENT_PASSWORD: 'Current Password',\n SHOW_PASSWORD: 'Show Password',\n HIDE_PASSWORD: 'Hide Password',\n PLEASE_WAIT: 'Please wait',\n WELCOME_BACK: 'Welcome Back!',\n CREATE_MY_ACCOUNT: 'CREATE MY ACCOUNT',\n BY_CLICKING_YOU_AGREE: 'By clicking \"Signup\" you agree our [1[Terms of Service]] and [2[Privacy Policy]]',\n ERROR_TRY_AGAIN: 'There was an error. Please try again later.',\n VERIFY_ITS_YOU: 'Verify it\\'s you!',\n TWO_FACTOR_DESCRIPTION: {\n [twoFactorTypeKeys.sms]: \"We've sent an authentication code to [1[receiver]]. Please check your messages and enter the six-digit code to enable 2FA\",\n [twoFactorTypeKeys.authenticatorApp]: 'Enter the six-digit code from your configured Authenticator App below.'\n },\n EMAIL_AUTHENTICATION_DESCRIPTION: \"We've sent an authentication code to [1[receiver]]. Please check your inbox and enter the six-digit code.\",\n VERIFICATION_CODE: 'Authentication code',\n RECOVERY_CODE: 'Recovery code',\n VERIFY: 'VERIFY',\n VERIFY_BUTTON_TEXT: 'Verify',\n NO_CODE: 'No code?',\n SEND_AGAIN: 'Send again',\n HAVING_PROBLEMS: 'Having problems?',\n SEE_OTHER_AUTHENTICATION_METHODS: 'See Other Methods',\n SEND_CODE_TO: {\n [twoFactorTypeKeys.sms]: 'Send code to [1[receiver]]',\n [twoFactorTypeKeys.authenticatorApp]: 'Use authenticator app'\n },\n USE_YOUR_RECOVERY_CODES: 'Use your recovery codes',\n USE_YOUR_AUTHENTICATOR_APP: 'Use code from Authenticator App',\n TWO_FACTOR_AUTHENTICATION: 'Two-Factor Authentication',\n EMAIL_AUTHENTICATION: 'E-mail Authentication',\n ENTER_RECOVERY_CODES: 'Enter one of your 6-digit recovery codes below.',\n DAILY_LIMIT: 'You\\'ve reached the daily text message limit',\n INVALID_TOKEN: 'Invalid code; please try again',\n BACKUP_CODES_ERROR: 'You entered a wrong or already used recovery code',\n BLANK_VERIFICATION_CODE: 'Code cannot be blank.',\n GREETING_DESCRIPTION: '',\n SHOW_MORE: 'Show More',\n CHOOSE_A_METHOD: 'Choose a method',\n CHOOSE_A_METHOD_DESCRIPTION: 'Select a verification method to login your account',\n REACH_DAILY_LIMIT_FORCE_TO_EMAIL: 'Your verification code has been sent to your email due to you have reached the daily SMS limit.',\n USED_RECOVERY_CODES: 'Used recovery codes will be invalidated.',\n ENTER_YOUR_EMAIL: 'Enter your email',\n THANK_YOU: 'THANK YOU!',\n VIEW_COMPLETED_APPROVALS: 'View your completed approvals',\n COMPLETED_TASK: 'The task has been completed.',\n PLEASE_LOGIN: 'Please [1[Log in]].',\n EMAIL_ERROR: 'This email address is already associated with a Jotform account.',\n EMAIL_ERROR_ENTERPRISE: 'This email address is already associated with an account.',\n // Delete my account flow\n ARE_YOU_SURE_YOU_WANT_TO_DELETE_YOUR_ACCOUNT: 'Are you sure you want to delete your account?',\n YOU_ARE_ABOUT_TO_DELETE_YOUR_ACCOUNT_NAMELY: 'You’re about to delete your account namely:',\n GET_IN_TOUCH_WITH_US: '[1[Get in touch]] with us if you have any questions.',\n YES_DELETE: 'Yes, Delete',\n CANCEL: 'Cancel',\n VERIFY_THAT_ITS_YOU_TO_DELETE_YOUR_ACCOUNT: 'Verify That It’s You to Delete Your Account',\n VERIFY_WITH: 'Verify with',\n PLEASE_ENTER_YOUR_PASSWORD: 'Please enter your password',\n YOU_HAVE_ENTERED_YOUR_CURRENT_PASSWORD_WRONG: 'You have entered your current password wrong',\n YOU_HAVE_VERIFIED_SUCCESSFULLY: 'You have verified successfully',\n DELETE_MY_ACCOUNT: 'Delete My Account',\n YOUR_ACCOUNT_COULD_NOT_BE_DELETED: 'Your account could not be deleted. Please try again.',\n YOU_COULD_NOT_BE_VERIFIED: 'You could not be verified. Try again later',\n VERIFY_DELETE: 'Verify',\n CONTINUE_LATER: 'We’ve emailed you a link you can use to continue it later.',\n DRAFT_SAVED: 'Submission saved as draft',\n INCOMPLETE_SUBMISSION: 'You have an incomplete submission for this form',\n DRAFT_TEXT: 'Discard this submission draft to start over, or continue with your saved draft.',\n DISCARD_DRAFT: 'Discard and start over',\n CONTINUE_WITH_DRAFT: 'Continue with draft',\n SAVE_AS_DRAFT: 'Sign up to save submission as a draft',\n PLEASE_WAIT_SAVE: 'Please wait while we save your submission.',\n SAVE_ERROR: \"Your submission couldn't be saved\",\n PLEASE_TRY_AGAIN: 'Please try again.',\n TRY_AGAIN: 'Try Again',\n GET_DRAFT_LINK: 'Get Draft Link',\n DRAFT_BEING_SAVED: 'Your submission is being saved',\n ENTER_EMAIL_ADDRESS: 'Enter your email address',\n PLEASE_ENTER_VALID_EMAIL: 'Please enter valid email',\n CONTINUE_FORM_LATER: 'If you want to continue your form later, please enter your email address.',\n TO_KEY: 'To',\n DONT_ACCESS_DRAFT: 'You don’t have access to this submission draft',\n FILL_OUT_DRAFT: 'Fill out the form to create a new submission.',\n CHANGE_ACCOUNT: 'Change Account',\n START_OVER_FORM: 'Start Over',\n NOT_FOUND: 'Submission draft not found',\n DELETED_DRAFT: 'This draft was deleted or has already been submitted.',\n USER_IS_SSO_ERROR: 'Email already in use by SSO user.'\n};\n\nexport const AlertLabelTypes = {\n WARNING: 'WARNING',\n SUCCESS: 'SUCCESS',\n INFO: 'INFO'\n};\n\nexport const prepareLoginFlowDefaultGreetings = () => {\n const isPartnershipPages = window.location.href.indexOf('/partnership/') >= 0;\n const isAffiliateSignup = window.location.href.indexOf('/affiliate/') >= 0;\n const isJotformForBeginners = window.location.href.indexOf('/jotform-for-beginners/') >= 0;\n if (isPartnershipPages) {\n return `You will need a free Jotform account\n in order to access your Dashboard. If you already have a Jotform account,\n please log in to your account first to be able to fill out your application.\n If you have more than one Jotform account, please use the registered account to the\n Jotform ${isAffiliateSignup ? 'Affiliate Program' : 'Solutions Program'}.`;\n }\n if (isJotformForBeginners) {\n return 'Create a free Jotform account to download the book, Jotform for Beginners.';\n }\n if (window.JOTFORM_ENV !== 'ENTERPRISE') {\n return 'Collect information, payments, and signatures with custom online forms.';\n }\n return '';\n};\n\nexport const FORM_TEXTS = {\n confirmEmail: 'E-mail does not match',\n pleaseWait: 'Please wait...',\n validateEmail: 'You need to validate this e-mail',\n confirmClearForm: 'Are you sure you want to clear the form',\n lessThan: 'Your score should be less than or equal to',\n incompleteFields: 'There are incomplete required fields. Please complete them.',\n required: 'This field is required.',\n requireOne: 'At least one field required.',\n requireEveryRow: 'Every row is required.',\n requireEveryCell: 'Every cell is required.',\n email: 'Enter a valid e-mail address',\n alphabetic: 'This field can only contain letters',\n numeric: 'This field can only contain numeric values',\n alphanumeric: 'This field can only contain letters and numbers.',\n cyrillic: 'This field can only contain cyrillic characters',\n url: 'This field can only contain a valid URL',\n currency: 'This field can only contain currency values.',\n fillMask: 'Field value must fill mask.',\n uploadExtensions: 'You can only upload following files:',\n noUploadExtensions: 'File has no extension file type (e.g. .txt, .png, .jpeg)',\n uploadFilesize: 'File size cannot be bigger than:',\n uploadFilesizemin: 'File size cannot be smaller than:',\n gradingScoreError: 'Score total should only be less than or equal to',\n inputCarretErrorA: 'Input should not be less than the minimum value:',\n inputCarretErrorB: 'Input should not be greater than the maximum value:',\n maxDigitsError: 'The maximum digits allowed is',\n minCharactersError: 'The number of characters should not be less than the minimum value:',\n maxCharactersError: 'The number of characters should not be more than the maximum value:',\n freeEmailError: 'Free email accounts are not allowed',\n minSelectionsError: 'The minimum required number of selections is ',\n maxSelectionsError: 'The maximum number of selections allowed is ',\n pastDatesDisallowed: 'Date must not be in the past.',\n dateLimited: 'This date is unavailable.',\n dateInvalid: 'This date is not valid. The date format is {format}',\n dateInvalidSeparate: 'This date is not valid. Enter a valid {element}.',\n ageVerificationError: 'You must be older than {minAge} years old to submit this form.',\n multipleFileUploads_typeError: '{file} has invalid extension. Only {extensions} are allowed.',\n multipleFileUploads_sizeError: '{file} is too large, maximum file size is {sizeLimit}.',\n multipleFileUploads_minSizeError: '{file} is too small, minimum file size is {minSizeLimit}.',\n multipleFileUploads_emptyError: '{file} is empty, please select files again without it.',\n multipleFileUploads_uploadFailed: 'File upload failed, please remove it and upload the file again.',\n multipleFileUploads_onLeave: 'The files are being uploaded, if you leave now the upload will be cancelled.',\n multipleFileUploads_fileLimitError: 'Only {fileLimit} file uploads allowed.',\n dragAndDropFilesHere_infoMessage: 'Drag and drop files here',\n chooseAFile_infoMessage: 'Choose a file',\n maxFileSize_infoMessage: 'Max. file size',\n generalError: 'There are errors on the form. Please fix them before continuing.',\n generalPageError: 'There are errors on this page. Please fix them before continuing.',\n wordLimitError: 'Too many words. The limit is',\n wordMinLimitError: 'Too few words. The minimum is',\n characterLimitError: 'Too many Characters. The limit is',\n characterMinLimitError: 'Too few characters. The minimum is',\n ccInvalidNumber: 'Credit Card Number is invalid.',\n ccInvalidCVC: 'CVC number is invalid.',\n ccInvalidExpireDate: 'Expire date is invalid.',\n ccInvalidExpireMonth: 'Expiration month is invalid.',\n ccInvalidExpireYear: 'Expiration year is invalid.',\n ccMissingDetails: 'Please fill up the credit card details.',\n ccMissingProduct: 'Please select at least one product.',\n ccMissingDonation: 'Please enter numeric values for donation amount.',\n disallowDecimals: 'Please enter a whole number.',\n restrictedDomain: 'This domain is not allowed',\n ccDonationMinLimitError: 'Minimum amount is {minAmount} {currency}',\n requiredLegend: 'All fields marked with * are required and must be filled.',\n geoPermissionTitle: 'Permission Denied',\n geoPermissionDesc: 'Check your browser\\'s privacy settings.',\n geoNotAvailableTitle: 'Position Unavailable',\n geoNotAvailableDesc: 'Location provider not available. Please enter the address manually.',\n geoTimeoutTitle: 'Timeout',\n geoTimeoutDesc: 'Please check your internet connection and try again.',\n selectedTime: 'Selected Time',\n formerSelectedTime: 'Former Time',\n cancelAppointment: 'Cancel Appointment',\n cancelSelection: 'Cancel Selection',\n noSlotsAvailable: 'No slots available',\n slotUnavailable: '{time} on {date} has been selected is unavailable. Please select another slot.',\n multipleError: 'There are {count} errors on this page. Please correct them before moving on.',\n oneError: 'There is {count} error on this page. Please correct it before moving on.',\n doneMessage: 'Well done! All errors are fixed.',\n invalidTime: 'Enter a valid time',\n doneButton: 'Done',\n reviewSubmitText: 'Review and Submit',\n nextButtonText: 'Next',\n prevButtonText: 'Previous',\n seeErrorsButton: 'See Errors',\n notEnoughStock: 'Not enough stock for the current selection',\n notEnoughStock_remainedItems: 'Not enough stock for the current selection ({count} items left)',\n soldOut: 'Sold Out',\n justSoldOut: 'Just Sold Out',\n selectionSoldOut: 'Selection Sold Out',\n subProductItemsLeft: '({count} items left)',\n startButtonText: 'START',\n submitButtonText: 'Submit',\n submissionLimit: 'Sorry! Only one entry is allowed.
    Multiple submissions are disabled for this form.',\n reviewBackText: 'Back to Form',\n seeAllText: 'See All',\n progressMiddleText: 'of',\n fieldError: 'field has an error.',\n error: 'Error'\n};\n","export const TIME_ZONES = [\n {\n text: 'Africa',\n name: 'Africa',\n type: 'group',\n options: [\n { key: 'Africa/Abidjan', value: 'Africa/Abidjan', text: 'Abidjan (GMT)' },\n { key: 'Africa/Accra', value: 'Africa/Accra', text: 'Accra (GMT)' },\n { key: 'Africa/Addis_Ababa', value: 'Africa/Addis_Ababa', text: 'Addis Ababa (GMT+03:00)' },\n { key: 'Africa/Algiers', value: 'Africa/Algiers', text: 'Algiers (GMT+01:00)' },\n { key: 'Africa/Asmara', value: 'Africa/Asmara', text: 'Asmara (GMT+03:00)' },\n { key: 'Africa/Bamako', value: 'Africa/Bamako', text: 'Bamako (GMT)' },\n { key: 'Africa/Bangui', value: 'Africa/Bangui', text: 'Bangui (GMT+01:00)' },\n { key: 'Africa/Banjul', value: 'Africa/Banjul', text: 'Banjul (GMT)' },\n { key: 'Africa/Bissau', value: 'Africa/Bissau', text: 'Bissau (GMT)' },\n { key: 'Africa/Blantyre', value: 'Africa/Blantyre', text: 'Blantyre (GMT+02:00)' },\n { key: 'Africa/Brazzaville', value: 'Africa/Brazzaville', text: 'Brazzaville (GMT+01:00)' },\n { key: 'Africa/Bujumbura', value: 'Africa/Bujumbura', text: 'Bujumbura (GMT+02:00)' },\n { key: 'Africa/Cairo', value: 'Africa/Cairo', text: 'Cairo (GMT+02:00)' },\n { key: 'Africa/Casablanca', value: 'Africa/Casablanca', text: 'Casablanca (GMT)' },\n { key: 'Africa/Ceuta', value: 'Africa/Ceuta', text: 'Ceuta (GMT+01:00)' },\n { key: 'Africa/Conakry', value: 'Africa/Conakry', text: 'Conakry (GMT)' },\n { key: 'Africa/Dakar', value: 'Africa/Dakar', text: 'Dakar (GMT)' },\n { key: 'Africa/Dar_es_Salaam', value: 'Africa/Dar_es_Salaam', text: 'Dar es Salaam (GMT+03:00)' },\n { key: 'Africa/Djibouti', value: 'Africa/Djibouti', text: 'Djibouti (GMT+03:00)' },\n { key: 'Africa/Douala', value: 'Africa/Douala', text: 'Douala (GMT+01:00)' },\n { key: 'Africa/El_Aaiun', value: 'Africa/El_Aaiun', text: 'El Aaiun (GMT)' },\n { key: 'Africa/Freetown', value: 'Africa/Freetown', text: 'Freetown (GMT)' },\n { key: 'Africa/Gaborone', value: 'Africa/Gaborone', text: 'Gaborone (GMT+02:00)' },\n { key: 'Africa/Harare', value: 'Africa/Harare', text: 'Harare (GMT+02:00)' },\n { key: 'Africa/Johannesburg', value: 'Africa/Johannesburg', text: 'Johannesburg (GMT+02:00)' },\n { key: 'Africa/Juba', value: 'Africa/Juba', text: 'Juba (GMT+03:00)' },\n { key: 'Africa/Kampala', value: 'Africa/Kampala', text: 'Kampala (GMT+03:00)' },\n { key: 'Africa/Khartoum', value: 'Africa/Khartoum', text: 'Khartoum (GMT+03:00)' },\n { key: 'Africa/Kigali', value: 'Africa/Kigali', text: 'Kigali (GMT+02:00)' },\n { key: 'Africa/Kinshasa', value: 'Africa/Kinshasa', text: 'Kinshasa (GMT+01:00)' },\n { key: 'Africa/Lagos', value: 'Africa/Lagos', text: 'Lagos (GMT+01:00)' },\n { key: 'Africa/Libreville', value: 'Africa/Libreville', text: 'Libreville (GMT+01:00)' },\n { key: 'Africa/Lome', value: 'Africa/Lome', text: 'Lome (GMT)' },\n { key: 'Africa/Luanda', value: 'Africa/Luanda', text: 'Luanda (GMT+01:00)' },\n { key: 'Africa/Lubumbashi', value: 'Africa/Lubumbashi', text: 'Lubumbashi (GMT+02:00)' },\n { key: 'Africa/Lusaka', value: 'Africa/Lusaka', text: 'Lusaka (GMT+02:00)' },\n { key: 'Africa/Malabo', value: 'Africa/Malabo', text: 'Malabo (GMT+01:00)' },\n { key: 'Africa/Maputo', value: 'Africa/Maputo', text: 'Maputo (GMT+02:00)' },\n { key: 'Africa/Maseru', value: 'Africa/Maseru', text: 'Maseru (GMT+02:00)' },\n { key: 'Africa/Mbabane', value: 'Africa/Mbabane', text: 'Mbabane (GMT+02:00)' },\n { key: 'Africa/Mogadishu', value: 'Africa/Mogadishu', text: 'Mogadishu (GMT+03:00)' },\n { key: 'Africa/Monrovia', value: 'Africa/Monrovia', text: 'Monrovia (GMT)' },\n { key: 'Africa/Nairobi', value: 'Africa/Nairobi', text: 'Nairobi (GMT+03:00)' },\n { key: 'Africa/Ndjamena', value: 'Africa/Ndjamena', text: 'Ndjamena (GMT+01:00)' },\n { key: 'Africa/Niamey', value: 'Africa/Niamey', text: 'Niamey (GMT+01:00)' },\n { key: 'Africa/Nouakchott', value: 'Africa/Nouakchott', text: 'Nouakchott (GMT)' },\n { key: 'Africa/Ouagadougou', value: 'Africa/Ouagadougou', text: 'Ouagadougou (GMT)' },\n { key: 'Africa/Porto', value: 'Africa/Porto', text: 'Porto-Novo (GMT+01:00)' },\n { key: 'Africa/Sao_Tome', value: 'Africa/Sao_Tome', text: 'Sao Tome (GMT)' },\n { key: 'Africa/Tripoli', value: 'Africa/Tripoli', text: 'Tripoli (GMT+02:00)' },\n { key: 'Africa/Tunis', value: 'Africa/Tunis', text: 'Tunis (GMT+01:00)' },\n { key: 'Africa/Windhoek', value: 'Africa/Windhoek', text: 'Windhoek (GMT+02:00)' }\n ]\n },\n {\n text: 'America',\n name: 'America',\n type: 'group',\n options: [\n { key: 'America/Adak', value: 'America/Adak', text: 'Adak (GMT-10:00)' },\n { key: 'America/Anchorage', value: 'America/Anchorage', text: 'Anchorage (GMT-09:00)' },\n { key: 'America/Anguilla', value: 'America/Anguilla', text: 'Anguilla (GMT-04:00)' },\n { key: 'America/Antigua', value: 'America/Antigua', text: 'Antigua (GMT-04:00)' },\n { key: 'America/Araguaina', value: 'America/Araguaina', text: 'Araguaina (GMT-03:00)' },\n { key: 'America/Argentina/Buenos_Aires', value: 'America/Argentina/Buenos_Aires', text: 'Buenos Aires, Argentina (GMT-03:00)' },\n { key: 'America/Argentina/Catamarca', value: 'America/Argentina/Catamarca', text: 'Catamarca, Argentina (GMT-03:00)' },\n { key: 'America/Argentina/Cordoba', value: 'America/Argentina/Cordoba', text: 'Cordoba, Argentina (GMT-03:00)' },\n { key: 'America/Argentina/Jujuy', value: 'America/Argentina/Jujuy', text: 'Jujuy, Argentina (GMT-03:00)' },\n { key: 'America/Argentina/La_Rioja', value: 'America/Argentina/La_Rioja', text: 'La Rioja, Argentina (GMT-03:00)' },\n { key: 'America/Argentina/Mendoza', value: 'America/Argentina/Mendoza', text: 'Mendoza, Argentina (GMT-03:00)' },\n { key: 'America/Argentina/Rio_Gallegos', value: 'America/Argentina/Rio_Gallegos', text: 'Rio Gallegos, Argentina (GMT-03:00)' },\n { key: 'America/Argentina/Salta', value: 'America/Argentina/Salta', text: 'Salta, Argentina (GMT-03:00)' },\n { key: 'America/Argentina/San_Juan', value: 'America/Argentina/San_Juan', text: 'San Juan, Argentina (GMT-03:00)' },\n { key: 'America/Argentina/San_Luis', value: 'America/Argentina/San_Luis', text: 'San Luis, Argentina (GMT-03:00)' },\n { key: 'America/Argentina/Tucuman', value: 'America/Argentina/Tucuman', text: 'Tucuman, Argentina (GMT-03:00)' },\n { key: 'America/Argentina/Ushuaia', value: 'America/Argentina/Ushuaia', text: 'Ushuaia, Argentina (GMT-03:00)' },\n { key: 'America/Aruba', value: 'America/Aruba', text: 'Aruba (GMT-04:00)' },\n { key: 'America/Asuncion', value: 'America/Asuncion', text: 'Asuncion (GMT-03:00)' },\n { key: 'America/Atikokan', value: 'America/Atikokan', text: 'Atikokan (GMT-05:00)' },\n { key: 'America/Bahia', value: 'America/Bahia', text: 'Bahia (GMT-02:00)' },\n { key: 'America/Bahia_Banderas', value: 'America/Bahia_Banderas', text: 'Bahia Banderas (GMT-06:00)' },\n { key: 'America/Barbados', value: 'America/Barbados', text: 'Barbados (GMT-04:00)' },\n { key: 'America/Belem', value: 'America/Belem', text: 'Belem (GMT-03:00)' },\n { key: 'America/Belize', value: 'America/Belize', text: 'Belize (GMT-06:00)' },\n { key: 'America/Blanc-Sablon', value: 'America/Blanc-Sablon', text: 'Blanc-Sablon (GMT-04:00)' },\n { key: 'America/Boa_Vista', value: 'America/Boa_Vista', text: 'Boa Vista (GMT-04:00)' },\n { key: 'America/Bogota', value: 'America/Bogota', text: 'Bogota (GMT-05:00)' },\n { key: 'America/Boise', value: 'America/Boise', text: 'Boise (GMT-07:00)' },\n { key: 'America/Cambridge_Bay', value: 'America/Cambridge_Bay', text: 'Cambridge Bay (GMT-07:00)' },\n { key: 'America/Campo_Grande', value: 'America/Campo_Grande', text: 'Campo Grande (GMT-03:00)' },\n { key: 'America/Cancun', value: 'America/Cancun', text: 'Cancun (GMT-06:00)' },\n { key: 'America/Caracas', value: 'America/Caracas', text: 'Caracas (GMT-04:30)' },\n { key: 'America/Cayenne', value: 'America/Cayenne', text: 'Cayenne (GMT-03:00)' },\n { key: 'America/Cayman', value: 'America/Cayman', text: 'Cayman (GMT-05:00)' },\n { key: 'America/Chicago', value: 'America/Chicago', text: 'Chicago (GMT-06:00)' },\n { key: 'America/Chihuahua', value: 'America/Chihuahua', text: 'Chihuahua (GMT-07:00)' },\n { key: 'America/Costa_Rica', value: 'America/Costa_Rica', text: 'Costa Rica (GMT-06:00)' },\n { key: 'America/Creston', value: 'America/Creston', text: 'Creston (GMT-07:00)' },\n { key: 'America/Cuiaba', value: 'America/Cuiaba', text: 'Cuiaba (GMT-03:00)' },\n { key: 'America/Curacao', value: 'America/Curacao', text: 'Curacao (GMT-04:00)' },\n { key: 'America/Danmarkshavn', value: 'America/Danmarkshavn', text: 'Danmarkshavn (GMT)' },\n { key: 'America/Dawson', value: 'America/Dawson', text: 'Dawson (GMT-08:00)' },\n { key: 'America/Dawson_Creek', value: 'America/Dawson_Creek', text: 'Dawson Creek (GMT-07:00)' },\n { key: 'America/Denver', value: 'America/Denver', text: 'Denver (GMT-07:00)' },\n { key: 'America/Detroit', value: 'America/Detroit', text: 'Detroit (GMT-05:00)' },\n { key: 'America/Dominica', value: 'America/Dominica', text: 'Dominica (GMT-04:00)' },\n { key: 'America/Edmonton', value: 'America/Edmonton', text: 'Edmonton (GMT-07:00)' },\n { key: 'America/Eirunepe', value: 'America/Eirunepe', text: 'Eirunepe (GMT-04:00)' },\n { key: 'America/El_Salvador', value: 'America/El_Salvador', text: 'El Salvador (GMT-06:00)' },\n { key: 'America/Fortaleza', value: 'America/Fortaleza', text: 'Fortaleza (GMT-03:00)' },\n { key: 'America/Glace_Bay', value: 'America/Glace_Bay', text: 'Glace Bay (GMT-04:00)' },\n { key: 'America/Godthab', value: 'America/Godthab', text: 'Godthab (GMT-03:00)' },\n { key: 'America/Goose_Bay', value: 'America/Goose_Bay', text: 'Goose Bay (GMT-04:00)' },\n { key: 'America/Grand_Turk', value: 'America/Grand_Turk', text: 'Grand Turk (GMT-05:00)' },\n { key: 'America/Grenada', value: 'America/Grenada', text: 'Grenada (GMT-04:00)' },\n { key: 'America/Guadeloupe', value: 'America/Guadeloupe', text: 'Guadeloupe (GMT-04:00)' },\n { key: 'America/Guatemala', value: 'America/Guatemala', text: 'Guatemala (GMT-06:00)' },\n { key: 'America/Guayaquil', value: 'America/Guayaquil', text: 'Guayaquil (GMT-05:00)' },\n { key: 'America/Guyana', value: 'America/Guyana', text: 'Guyana (GMT-04:00)' },\n { key: 'America/Halifax', value: 'America/Halifax', text: 'Halifax (GMT-04:00)' },\n { key: 'America/Havana', value: 'America/Havana', text: 'Havana (GMT-05:00)' },\n { key: 'America/Hermosillo', value: 'America/Hermosillo', text: 'Hermosillo (GMT-07:00)' },\n { key: 'America/Indiana/Indianapolis', value: 'America/Indiana/Indianapolis', text: 'Indianapolis, Indiana (GMT-05:00)' },\n { key: 'America/Indiana/Knox', value: 'America/Indiana/Knox', text: 'Knox, Indiana (GMT-06:00)' },\n { key: 'America/Indiana/Marengo', value: 'America/Indiana/Marengo', text: 'Marengo, Indiana (GMT-05:00)' },\n { key: 'America/Indiana/Petersburg', value: 'America/Indiana/Petersburg', text: 'Petersburg, Indiana (GMT-05:00)' },\n { key: 'America/Indiana/Tell_City', value: 'America/Indiana/Tell_City', text: 'Tell City, Indiana (GMT-06:00)' },\n { key: 'America/Indiana/Vevay', value: 'America/Indiana/Vevay', text: 'Vevay, Indiana (GMT-05:00)' },\n { key: 'America/Indiana/Vincennes', value: 'America/Indiana/Vincennes', text: 'Vincennes, Indiana (GMT-05:00)' },\n { key: 'America/Indiana/Winamac', value: 'America/Indiana/Winamac', text: 'Winamac, Indiana (GMT-05:00)' },\n { key: 'America/Inuvik', value: 'America/Inuvik', text: 'Inuvik (GMT-07:00)' },\n { key: 'America/Iqaluit', value: 'America/Iqaluit', text: 'Iqaluit (GMT-05:00)' },\n { key: 'America/Jamaica', value: 'America/Jamaica', text: 'Jamaica (GMT-05:00)' },\n { key: 'America/Juneau', value: 'America/Juneau', text: 'Juneau (GMT-09:00)' },\n { key: 'America/Kentucky/Louisville', value: 'America/Kentucky/Louisville', text: 'Louisville, Kentucky (GMT-05:00)' },\n { key: 'America/Kentucky/Monticello', value: 'America/Kentucky/Monticello', text: 'Monticello, Kentucky (GMT-05:00)' },\n { key: 'America/Kralendijk', value: 'America/Kralendijk', text: 'Kralendijk (GMT-04:00)' },\n { key: 'America/La_Paz', value: 'America/La_Paz', text: 'La Paz (GMT-04:00)' },\n { key: 'America/Lima', value: 'America/Lima', text: 'Lima (GMT-05:00)' },\n { key: 'America/Los_Angeles', value: 'America/Los_Angeles', text: 'Los Angeles (GMT-08:00)' },\n { key: 'America/Lower_Princes', value: 'America/Lower_Princes', text: 'Lower Princes (GMT-04:00)' },\n { key: 'America/Maceio', value: 'America/Maceio', text: 'Maceio (GMT-03:00)' },\n { key: 'America/Managua', value: 'America/Managua', text: 'Managua (GMT-06:00)' },\n { key: 'America/Manaus', value: 'America/Manaus', text: 'Manaus (GMT-04:00)' },\n { key: 'America/Marigot', value: 'America/Marigot', text: 'Marigot (GMT-04:00)' },\n { key: 'America/Martinique', value: 'America/Martinique', text: 'Martinique (GMT-04:00)' },\n { key: 'America/Matamoros', value: 'America/Matamoros', text: 'Matamoros (GMT-06:00)' },\n { key: 'America/Mazatlan', value: 'America/Mazatlan', text: 'Mazatlan (GMT-07:00)' },\n { key: 'America/Menominee', value: 'America/Menominee', text: 'Menominee (GMT-06:00)' },\n { key: 'America/Merida', value: 'America/Merida', text: 'Merida (GMT-06:00)' },\n { key: 'America/Metlakatla', value: 'America/Metlakatla', text: 'Metlakatla (GMT-08:00)' },\n { key: 'America/Mexico_City', value: 'America/Mexico_City', text: 'Mexico City (GMT-06:00)' },\n { key: 'America/Miquelon', value: 'America/Miquelon', text: 'Miquelon (GMT-03:00)' },\n { key: 'America/Moncton', value: 'America/Moncton', text: 'Moncton (GMT-04:00)' },\n { key: 'America/Monterrey', value: 'America/Monterrey', text: 'Monterrey (GMT-06:00)' },\n { key: 'America/Montevideo', value: 'America/Montevideo', text: 'Montevideo (GMT-02:00)' },\n { key: 'America/Montreal', value: 'America/Montreal', text: 'Montreal (GMT-05:00)' },\n { key: 'America/Montserrat', value: 'America/Montserrat', text: 'Montserrat (GMT-04:00)' },\n { key: 'America/Nassau', value: 'America/Nassau', text: 'Nassau (GMT-05:00)' },\n { key: 'America/New_York', value: 'America/New_York', text: 'New York (GMT-05:00)' },\n { key: 'America/Nipigon', value: 'America/Nipigon', text: 'Nipigon (GMT-05:00)' },\n { key: 'America/Nome', value: 'America/Nome', text: 'Nome (GMT-09:00)' },\n { key: 'America/Noronha', value: 'America/Noronha', text: 'Noronha (GMT-02:00)' },\n { key: 'America/North_Dakota/Beulah', value: 'America/North_Dakota/Beulah', text: 'Beulah, North Dakota (GMT-06:00)' },\n { key: 'America/North_Dakota/Center', value: 'America/North_Dakota/Center', text: 'Center, North Dakota (GMT-06:00)' },\n { key: 'America/North_Dakota/New_Salem', value: 'America/North_Dakota/New_Salem', text: 'New Salem, North Dakota (GMT-06:00)' },\n { key: 'America/Ojinaga', value: 'America/Ojinaga', text: 'Ojinaga (GMT-07:00)' },\n { key: 'America/Panama', value: 'America/Panama', text: 'Panama (GMT-05:00)' },\n { key: 'America/Pangnirtung', value: 'America/Pangnirtung', text: 'Pangnirtung (GMT-05:00)' },\n { key: 'America/Paramaribo', value: 'America/Paramaribo', text: 'Paramaribo (GMT-03:00)' },\n { key: 'America/Phoenix', value: 'America/Phoenix', text: 'Phoenix (GMT-07:00)' },\n { key: 'America/Port-au-Prince', value: 'America/Port-au-Prince', text: 'Port-au-Prince (GMT-05:00)' },\n { key: 'America/Port_of_Spain', value: 'America/Port_of_Spain', text: 'Port of Spain (GMT-04:00)' },\n { key: 'America/Porto_Velho', value: 'America/Porto_Velho', text: 'Porto Velho (GMT-04:00)' },\n { key: 'America/Puerto_Rico', value: 'America/Puerto_Rico', text: 'Puerto Rico (GMT-04:00)' },\n { key: 'America/Rainy_River', value: 'America/Rainy_River', text: 'Rainy River (GMT-06:00)' },\n { key: 'America/Rankin_Inlet', value: 'America/Rankin_Inlet', text: 'Rankin Inlet (GMT-06:00)' },\n { key: 'America/Recife', value: 'America/Recife', text: 'Recife (GMT-03:00)' },\n { key: 'America/Regina', value: 'America/Regina', text: 'Regina (GMT-06:00)' },\n { key: 'America/Resolute', value: 'America/Resolute', text: 'Resolute (GMT-06:00)' },\n { key: 'America/Rio_Branco', value: 'America/Rio_Branco', text: 'Rio Branco (GMT-04:00)' },\n { key: 'America/Santa_Isabel', value: 'America/Santa_Isabel', text: 'Santa Isabel (GMT-08:00)' },\n { key: 'America/Santarem', value: 'America/Santarem', text: 'Santarem (GMT-03:00)' },\n { key: 'America/Santiago', value: 'America/Santiago', text: 'Santiago (GMT-03:00)' },\n { key: 'America/Santo_Domingo', value: 'America/Santo_Domingo', text: 'Santo Domingo (GMT-04:00)' },\n { key: 'America/Sao_Paulo', value: 'America/Sao_Paulo', text: 'Sao Paulo (GMT-03:00)' },\n { key: 'America/Scoresbysund', value: 'America/Scoresbysund', text: 'Scoresbysund (GMT-01:00)' },\n { key: 'America/Shiprock', value: 'America/Shiprock', text: 'Shiprock (GMT-07:00)' },\n { key: 'America/Sitka', value: 'America/Sitka', text: 'Sitka (GMT-09:00)' },\n { key: 'America/St_Barthelemy', value: 'America/St_Barthelemy', text: 'St Barthelemy (GMT-04:00)' },\n { key: 'America/St_Johns', value: 'America/St_Johns', text: 'St Johns (GMT-03:30)' },\n { key: 'America/St_Kitts', value: 'America/St_Kitts', text: 'St Kitts (GMT-04:00)' },\n { key: 'America/St_Lucia', value: 'America/St_Lucia', text: 'St Lucia (GMT-04:00)' },\n { key: 'America/St_Thomas', value: 'America/St_Thomas', text: 'St Thomas (GMT-04:00)' },\n { key: 'America/St_Vincent', value: 'America/St_Vincent', text: 'St Vincent (GMT-04:00)' },\n { key: 'America/Swift_Current', value: 'America/Swift_Current', text: 'Swift Current (GMT-06:00)' },\n { key: 'America/Tegucigalpa', value: 'America/Tegucigalpa', text: 'Tegucigalpa (GMT-06:00)' },\n { key: 'America/Thule', value: 'America/Thule', text: 'Thule (GMT-04:00)' },\n { key: 'America/Thunder_Bay', value: 'America/Thunder_Bay', text: 'Thunder Bay (GMT-05:00)' },\n { key: 'America/Tijuana', value: 'America/Tijuana', text: 'Tijuana (GMT-08:00)' },\n { key: 'America/Toronto', value: 'America/Toronto', text: 'Toronto (GMT-05:00)' },\n { key: 'America/Tortola', value: 'America/Tortola', text: 'Tortola (GMT-04:00)' },\n { key: 'America/Vancouver', value: 'America/Vancouver', text: 'Vancouver (GMT-08:00)' },\n { key: 'America/Whitehorse', value: 'America/Whitehorse', text: 'Whitehorse (GMT-08:00)' },\n { key: 'America/Winnipeg', value: 'America/Winnipeg', text: 'Winnipeg (GMT-06:00)' },\n { key: 'America/Yakutat', value: 'America/Yakutat', text: 'Yakutat (GMT-09:00)' },\n { key: 'America/Yellowknife', value: 'America/Yellowknife', text: 'Yellowknife (GMT-07:00)' }\n ]\n },\n {\n text: 'Antarctica',\n name: 'Antarctica',\n type: 'group',\n options: [\n { key: 'Antarctica/Casey', value: 'Antarctica/Casey', text: 'Casey (GMT+08:00)' },\n { key: 'Antarctica/Davis', value: 'Antarctica/Davis', text: 'Davis (GMT+07:00)' },\n { key: 'Antarctica/DumontDUrville', value: 'Antarctica/DumontDUrville', text: 'DumontDUrville (GMT+10:00)' },\n { key: 'Antarctica/Macquarie', value: 'Antarctica/Macquarie', text: 'Macquarie (GMT+11:00)' },\n { key: 'Antarctica/Mawson', value: 'Antarctica/Mawson', text: 'Mawson (GMT+05:00)' },\n { key: 'Antarctica/McMurdo', value: 'Antarctica/McMurdo', text: 'McMurdo (GMT+13:00)' },\n { key: 'Antarctica/Palmer', value: 'Antarctica/Palmer', text: 'Palmer (GMT-03:00)' },\n { key: 'Antarctica/Rothera', value: 'Antarctica/Rothera', text: 'Rothera (GMT-03:00)' },\n { key: 'Antarctica/South_Pole', value: 'Antarctica/South_Pole', text: 'South Pole (GMT+13:00)' },\n { key: 'Antarctica/Syowa', value: 'Antarctica/Syowa', text: 'Syowa (GMT+03:00)' },\n { key: 'Antarctica/Vostok', value: 'Antarctica/Vostok', text: 'Vostok (GMT+06:00)' }\n ]\n },\n {\n text: 'Arctic',\n name: 'Arctic',\n type: 'group',\n options: [\n { key: 'Arctic/Longyearbyen', value: 'Arctic/Longyearbyen', text: 'Longyearbyen (GMT+01:00)' }\n ]\n },\n {\n text: 'Asia',\n name: 'Asia',\n type: 'group',\n options: [\n { key: 'Asia/Aden', value: 'Asia/Aden', text: 'Aden (GMT+03:00)' },\n { key: 'Asia/Almaty', value: 'Asia/Almaty', text: 'Almaty (GMT+06:00)' },\n { key: 'Asia/Amman', value: 'Asia/Amman', text: 'Amman (GMT+02:00)' },\n { key: 'Asia/Anadyr', value: 'Asia/Anadyr', text: 'Anadyr (GMT+12:00)' },\n { key: 'Asia/Aqtau', value: 'Asia/Aqtau', text: 'Aqtau (GMT+05:00)' },\n { key: 'Asia/Aqtobe', value: 'Asia/Aqtobe', text: 'Aqtobe (GMT+05:00)' },\n { key: 'Asia/Ashgabat', value: 'Asia/Ashgabat', text: 'Ashgabat (GMT+05:00)' },\n { key: 'Asia/Baghdad', value: 'Asia/Baghdad', text: 'Baghdad (GMT+03:00)' },\n { key: 'Asia/Bahrain', value: 'Asia/Bahrain', text: 'Bahrain (GMT+03:00)' },\n { key: 'Asia/Baku', value: 'Asia/Baku', text: 'Baku (GMT+04:00)' },\n { key: 'Asia/Bangkok', value: 'Asia/Bangkok', text: 'Bangkok (GMT+07:00)' },\n { key: 'Asia/Beirut', value: 'Asia/Beirut', text: 'Beirut (GMT+02:00)' },\n { key: 'Asia/Bishkek', value: 'Asia/Bishkek', text: 'Bishkek (GMT+06:00)' },\n { key: 'Asia/Brunei', value: 'Asia/Brunei', text: 'Brunei (GMT+08:00)' },\n { key: 'Asia/Choibalsan', value: 'Asia/Choibalsan', text: 'Choibalsan (GMT+08:00)' },\n { key: 'Asia/Chongqing', value: 'Asia/Chongqing', text: 'Chongqing (GMT+08:00)' },\n { key: 'Asia/Colombo', value: 'Asia/Colombo', text: 'Colombo (GMT+05:30)' },\n { key: 'Asia/Damascus', value: 'Asia/Damascus', text: 'Damascus (GMT+02:00)' },\n { key: 'Asia/Dhaka', value: 'Asia/Dhaka', text: 'Dhaka (GMT+06:00)' },\n { key: 'Asia/Dili', value: 'Asia/Dili', text: 'Dili (GMT+09:00)' },\n { key: 'Asia/Dubai', value: 'Asia/Dubai', text: 'Dubai (GMT+04:00)' },\n { key: 'Asia/Dushanbe', value: 'Asia/Dushanbe', text: 'Dushanbe (GMT+05:00)' },\n { key: 'Asia/Gaza', value: 'Asia/Gaza', text: 'Gaza (GMT+02:00)' },\n { key: 'Asia/Harbin', value: 'Asia/Harbin', text: 'Harbin (GMT+08:00)' },\n { key: 'Asia/Hebron', value: 'Asia/Hebron', text: 'Hebron (GMT+02:00)' },\n { key: 'Asia/Ho_Chi_Minh', value: 'Asia/Ho_Chi_Minh', text: 'Ho Chi Minh (GMT+07:00)' },\n { key: 'Asia/Hong_Kong', value: 'Asia/Hong_Kong', text: 'Hong Kong (GMT+08:00)' },\n { key: 'Asia/Hovd', value: 'Asia/Hovd', text: 'Hovd (GMT+07:00)' },\n { key: 'Asia/Irkutsk', value: 'Asia/Irkutsk', text: 'Irkutsk (GMT+09:00)' },\n { key: 'Asia/Jakarta', value: 'Asia/Jakarta', text: 'Jakarta (GMT+07:00)' },\n { key: 'Asia/Jayapura', value: 'Asia/Jayapura', text: 'Jayapura (GMT+09:00)' },\n { key: 'Asia/Jerusalem', value: 'Asia/Jerusalem', text: 'Jerusalem (GMT+02:00)' },\n { key: 'Asia/Kabul', value: 'Asia/Kabul', text: 'Kabul (GMT+04:30)' },\n { key: 'Asia/Kamchatka', value: 'Asia/Kamchatka', text: 'Kamchatka (GMT+12:00)' },\n { key: 'Asia/Karachi', value: 'Asia/Karachi', text: 'Karachi (GMT+05:00)' },\n { key: 'Asia/Kashgar', value: 'Asia/Kashgar', text: 'Kashgar (GMT+08:00)' },\n { key: 'Asia/Kathmandu', value: 'Asia/Kathmandu', text: 'Kathmandu (GMT+05:45)' },\n { key: 'Asia/Kolkata', value: 'Asia/Kolkata', text: 'Kolkata (GMT+05:30)' },\n { key: 'Asia/Krasnoyarsk', value: 'Asia/Krasnoyarsk', text: 'Krasnoyarsk (GMT+08:00)' },\n { key: 'Asia/Kuala_Lumpur', value: 'Asia/Kuala_Lumpur', text: 'Kuala Lumpur (GMT+08:00)' },\n { key: 'Asia/Kuching', value: 'Asia/Kuching', text: 'Kuching (GMT+08:00)' },\n { key: 'Asia/Kuwait', value: 'Asia/Kuwait', text: 'Kuwait (GMT+03:00)' },\n { key: 'Asia/Macau', value: 'Asia/Macau', text: 'Macau (GMT+08:00)' },\n { key: 'Asia/Magadan', value: 'Asia/Magadan', text: 'Magadan (GMT+12:00)' },\n { key: 'Asia/Makassar', value: 'Asia/Makassar', text: 'Makassar (GMT+08:00)' },\n { key: 'Asia/Manila', value: 'Asia/Manila', text: 'Manila (GMT+08:00)' },\n { key: 'Asia/Muscat', value: 'Asia/Muscat', text: 'Muscat (GMT+04:00)' },\n { key: 'Asia/Nicosia', value: 'Asia/Nicosia', text: 'Nicosia (GMT+02:00)' },\n { key: 'Asia/Novokuznetsk', value: 'Asia/Novokuznetsk', text: 'Novokuznetsk (GMT+07:00)' },\n { key: 'Asia/Novosibirsk', value: 'Asia/Novosibirsk', text: 'Novosibirsk (GMT+07:00)' },\n { key: 'Asia/Omsk', value: 'Asia/Omsk', text: 'Omsk (GMT+07:00)' },\n { key: 'Asia/Oral', value: 'Asia/Oral', text: 'Oral (GMT+05:00)' },\n { key: 'Asia/Phnom_Penh', value: 'Asia/Phnom_Penh', text: 'Phnom Penh (GMT+07:00)' },\n { key: 'Asia/Pontianak', value: 'Asia/Pontianak', text: 'Pontianak (GMT+07:00)' },\n { key: 'Asia/Pyongyang', value: 'Asia/Pyongyang', text: 'Pyongyang (GMT+09:00)' },\n { key: 'Asia/Qatar', value: 'Asia/Qatar', text: 'Qatar (GMT+03:00)' },\n { key: 'Asia/Qyzylorda', value: 'Asia/Qyzylorda', text: 'Qyzylorda (GMT+06:00)' },\n { key: 'Asia/Rangoon', value: 'Asia/Rangoon', text: 'Rangoon (GMT+06:30)' },\n { key: 'Asia/Riyadh', value: 'Asia/Riyadh', text: 'Riyadh (GMT+03:00)' },\n { key: 'Asia/Sakhalin', value: 'Asia/Sakhalin', text: 'Sakhalin (GMT+11:00)' },\n { key: 'Asia/Samarkand', value: 'Asia/Samarkand', text: 'Samarkand (GMT+05:00)' },\n { key: 'Asia/Seoul', value: 'Asia/Seoul', text: 'Seoul (GMT+09:00)' },\n { key: 'Asia/Shanghai', value: 'Asia/Shanghai', text: 'Shanghai (GMT+08:00)' },\n { key: 'Asia/Singapore', value: 'Asia/Singapore', text: 'Singapore (GMT+08:00)' },\n { key: 'Asia/Taipei', value: 'Asia/Taipei', text: 'Taipei (GMT+08:00)' },\n { key: 'Asia/Tashkent', value: 'Asia/Tashkent', text: 'Tashkent (GMT+05:00)' },\n { key: 'Asia/Tbilisi', value: 'Asia/Tbilisi', text: 'Tbilisi (GMT+04:00)' },\n { key: 'Asia/Tehran', value: 'Asia/Tehran', text: 'Tehran (GMT+03:30)' },\n { key: 'Asia/Thimphu', value: 'Asia/Thimphu', text: 'Thimphu (GMT+06:00)' },\n { key: 'Asia/Tokyo', value: 'Asia/Tokyo', text: 'Tokyo (GMT+09:00)' },\n { key: 'Asia/Ulaanbaatar', value: 'Asia/Ulaanbaatar', text: 'Ulaanbaatar (GMT+08:00)' },\n { key: 'Asia/Urumqi', value: 'Asia/Urumqi', text: 'Urumqi (GMT+08:00)' },\n { key: 'Asia/Vientiane', value: 'Asia/Vientiane', text: 'Vientiane (GMT+07:00)' },\n { key: 'Asia/Vladivostok', value: 'Asia/Vladivostok', text: 'Vladivostok (GMT+11:00)' },\n { key: 'Asia/Yakutsk', value: 'Asia/Yakutsk', text: 'Yakutsk (GMT+10:00)' },\n { key: 'Asia/Yekaterinburg', value: 'Asia/Yekaterinburg', text: 'Yekaterinburg (GMT+06:00)' },\n { key: 'Asia/Yerevan', value: 'Asia/Yerevan', text: 'Yerevan (GMT+04:00)' }\n ]\n },\n {\n text: 'Atlantic',\n name: 'Atlantic',\n type: 'group',\n options: [\n { key: 'Atlantic/Azores', value: 'Atlantic/Azores', text: 'Azores (GMT-01:00)' },\n { key: 'Atlantic/Bermuda', value: 'Atlantic/Bermuda', text: 'Bermuda (GMT-04:00)' },\n { key: 'Atlantic/Canary', value: 'Atlantic/Canary', text: 'Canary (GMT)' },\n { key: 'Atlantic/Cape_Verde', value: 'Atlantic/Cape_Verde', text: 'Cape Verde (GMT-01:00)' },\n { key: 'Atlantic/Faroe', value: 'Atlantic/Faroe', text: 'Faroe (GMT)' },\n { key: 'Atlantic/Madeira', value: 'Atlantic/Madeira', text: 'Madeira (GMT)' },\n { key: 'Atlantic/Reykjavik', value: 'Atlantic/Reykjavik', text: 'Reykjavik (GMT)' },\n { key: 'Atlantic/South_Georgia', value: 'Atlantic/South_Georgia', text: 'South Georgia (GMT-02:00)' },\n { key: 'Atlantic/St_Helena', value: 'Atlantic/St_Helena', text: 'St Helena (GMT)' },\n { key: 'Atlantic/Stanley', value: 'Atlantic/Stanley', text: 'Stanley (GMT-03:00)' }\n ]\n },\n {\n text: 'Australia',\n name: 'Australia',\n type: 'group',\n options: [\n { key: 'Australia/Adelaide', value: 'Australia/Adelaide', text: 'Adelaide (GMT+10:30)' },\n { key: 'Australia/Brisbane', value: 'Australia/Brisbane', text: 'Brisbane (GMT+10:00)' },\n { key: 'Australia/Broken_Hill', value: 'Australia/Broken_Hill', text: 'Broken Hill (GMT+10:30)' },\n { key: 'Australia/Currie', value: 'Australia/Currie', text: 'Currie (GMT+11:00)' },\n { key: 'Australia/Darwin', value: 'Australia/Darwin', text: 'Darwin (GMT+09:30)' },\n { key: 'Australia/Eucla', value: 'Australia/Eucla', text: 'Eucla (GMT+08:45)' },\n { key: 'Australia/Hobart', value: 'Australia/Hobart', text: 'Hobart (GMT+11:00)' },\n { key: 'Australia/Lindeman', value: 'Australia/Lindeman', text: 'Lindeman (GMT+10:00)' },\n { key: 'Australia/Lord_Howe', value: 'Australia/Lord_Howe', text: 'Lord Howe (GMT+11:00)' },\n { key: 'Australia/Melbourne', value: 'Australia/Melbourne', text: 'Melbourne (GMT+11:00)' },\n { key: 'Australia/Perth', value: 'Australia/Perth', text: 'Perth (GMT+08:00)' },\n { key: 'Australia/Sydney', value: 'Australia/Sydney', text: 'Sydney (GMT+11:00)' }\n ]\n },\n {\n text: 'Europe',\n name: 'Europe',\n type: 'group',\n options: [\n { key: 'Europe/Amsterdam', value: 'Europe/Amsterdam', text: 'Amsterdam (GMT+01:00)' },\n { key: 'Europe/Andorra', value: 'Europe/Andorra', text: 'Andorra (GMT+01:00)' },\n { key: 'Europe/Athens', value: 'Europe/Athens', text: 'Athens (GMT+02:00)' },\n { key: 'Europe/Belgrade', value: 'Europe/Belgrade', text: 'Belgrade (GMT+01:00)' },\n { key: 'Europe/Berlin', value: 'Europe/Berlin', text: 'Berlin (GMT+01:00)' },\n { key: 'Europe/Bratislava', value: 'Europe/Bratislava', text: 'Bratislava (GMT+01:00)' },\n { key: 'Europe/Brussels', value: 'Europe/Brussels', text: 'Brussels (GMT+01:00)' },\n { key: 'Europe/Bucharest', value: 'Europe/Bucharest', text: 'Bucharest (GMT+02:00)' },\n { key: 'Europe/Budapest', value: 'Europe/Budapest', text: 'Budapest (GMT+01:00)' },\n { key: 'Europe/Chisinau', value: 'Europe/Chisinau', text: 'Chisinau (GMT+02:00)' },\n { key: 'Europe/Copenhagen', value: 'Europe/Copenhagen', text: 'Copenhagen (GMT+01:00)' },\n { key: 'Europe/Dublin', value: 'Europe/Dublin', text: 'Dublin (GMT)' },\n { key: 'Europe/Gibraltar', value: 'Europe/Gibraltar', text: 'Gibraltar (GMT+01:00)' },\n { key: 'Europe/Guernsey', value: 'Europe/Guernsey', text: 'Guernsey (GMT)' },\n { key: 'Europe/Helsinki', value: 'Europe/Helsinki', text: 'Helsinki (GMT+02:00)' },\n { key: 'Europe/Isle_of_Man', value: 'Europe/Isle_of_Man', text: 'Isle of Man (GMT)' },\n { key: 'Europe/Istanbul', value: 'Europe/Istanbul', text: 'Istanbul (GMT+03:00)' },\n { key: 'Europe/Jersey', value: 'Europe/Jersey', text: 'Jersey (GMT)' },\n { key: 'Europe/Kaliningrad', value: 'Europe/Kaliningrad', text: 'Kaliningrad (GMT+03:00)' },\n { key: 'Europe/Kiev', value: 'Europe/Kiev', text: 'Kiev (GMT+02:00)' },\n { key: 'Europe/Lisbon', value: 'Europe/Lisbon', text: 'Lisbon (GMT)' },\n { key: 'Europe/Ljubljana', value: 'Europe/Ljubljana', text: 'Ljubljana (GMT+01:00)' },\n { key: 'Europe/London', value: 'Europe/London', text: 'London (GMT)' },\n { key: 'Europe/Luxembourg', value: 'Europe/Luxembourg', text: 'Luxembourg (GMT+01:00)' },\n { key: 'Europe/Madrid', value: 'Europe/Madrid', text: 'Madrid (GMT+01:00)' },\n { key: 'Europe/Malta', value: 'Europe/Malta', text: 'Malta (GMT+01:00)' },\n { key: 'Europe/Mariehamn', value: 'Europe/Mariehamn', text: 'Mariehamn (GMT+02:00)' },\n { key: 'Europe/Minsk', value: 'Europe/Minsk', text: 'Minsk (GMT+03:00)' },\n { key: 'Europe/Monaco', value: 'Europe/Monaco', text: 'Monaco (GMT+01:00)' },\n { key: 'Europe/Moscow', value: 'Europe/Moscow', text: 'Moscow (GMT+03:00)' },\n { key: 'Europe/Oslo', value: 'Europe/Oslo', text: 'Oslo (GMT+01:00)' },\n { key: 'Europe/Paris', value: 'Europe/Paris', text: 'Paris (GMT+01:00)' },\n { key: 'Europe/Podgorica', value: 'Europe/Podgorica', text: 'Podgorica (GMT+01:00)' },\n { key: 'Europe/Prague', value: 'Europe/Prague', text: 'Prague (GMT+01:00)' },\n { key: 'Europe/Riga', value: 'Europe/Riga', text: 'Riga (GMT+02:00)' },\n { key: 'Europe/Rome', value: 'Europe/Rome', text: 'Rome (GMT+01:00)' },\n { key: 'Europe/Samara', value: 'Europe/Samara', text: 'Samara (GMT+04:00)' },\n { key: 'Europe/San_Marino', value: 'Europe/San_Marino', text: 'San Marino (GMT+01:00)' },\n { key: 'Europe/Sarajevo', value: 'Europe/Sarajevo', text: 'Sarajevo (GMT+01:00)' },\n { key: 'Europe/Simferopol', value: 'Europe/Simferopol', text: 'Simferopol (GMT+02:00)' },\n { key: 'Europe/Skopje', value: 'Europe/Skopje', text: 'Skopje (GMT+01:00)' },\n { key: 'Europe/Sofia', value: 'Europe/Sofia', text: 'Sofia (GMT+02:00)' },\n { key: 'Europe/Stockholm', value: 'Europe/Stockholm', text: 'Stockholm (GMT+01:00)' },\n { key: 'Europe/Tallinn', value: 'Europe/Tallinn', text: 'Tallinn (GMT+02:00)' },\n { key: 'Europe/Tirane', value: 'Europe/Tirane', text: 'Tirane (GMT+01:00)' },\n { key: 'Europe/Uzhgorod', value: 'Europe/Uzhgorod', text: 'Uzhgorod (GMT+02:00)' },\n { key: 'Europe/Vaduz', value: 'Europe/Vaduz', text: 'Vaduz (GMT+01:00)' },\n { key: 'Europe/Vatican', value: 'Europe/Vatican', text: 'Vatican (GMT+01:00)' },\n { key: 'Europe/Vienna', value: 'Europe/Vienna', text: 'Vienna (GMT+01:00)' },\n { key: 'Europe/Vilnius', value: 'Europe/Vilnius', text: 'Vilnius (GMT+02:00)' },\n { key: 'Europe/Volgograd', value: 'Europe/Volgograd', text: 'Volgograd (GMT+04:00)' },\n { key: 'Europe/Warsaw', value: 'Europe/Warsaw', text: 'Warsaw (GMT+01:00)' },\n { key: 'Europe/Zagreb', value: 'Europe/Zagreb', text: 'Zagreb (GMT+01:00)' },\n { key: 'Europe/Zaporozhye', value: 'Europe/Zaporozhye', text: 'Zaporozhye (GMT+02:00)' },\n { key: 'Europe/Zurich', value: 'Europe/Zurich', text: 'Zurich (GMT+01:00)' }\n ]\n },\n {\n text: 'Indian',\n name: 'Indian',\n type: 'group',\n options: [\n { key: 'Indian/Antananarivo', value: 'Indian/Antananarivo', text: 'Antananarivo (GMT+03:00)' },\n { key: 'Indian/Chagos', value: 'Indian/Chagos', text: 'Chagos (GMT+06:00)' },\n { key: 'Indian/Christmas', value: 'Indian/Christmas', text: 'Christmas (GMT+07:00)' },\n { key: 'Indian/Cocos', value: 'Indian/Cocos', text: 'Cocos (GMT+06:30)' },\n { key: 'Indian/Comoro', value: 'Indian/Comoro', text: 'Comoro (GMT+03:00)' },\n { key: 'Indian/Kerguelen', value: 'Indian/Kerguelen', text: 'Kerguelen (GMT+05:00)' },\n { key: 'Indian/Mahe', value: 'Indian/Mahe', text: 'Mahe (GMT+04:00)' },\n { key: 'Indian/Maldives', value: 'Indian/Maldives', text: 'Maldives (GMT+05:00)' },\n { key: 'Indian/Mauritius', value: 'Indian/Mauritius', text: 'Mauritius (GMT+04:00)' },\n { key: 'Indian/Mayotte', value: 'Indian/Mayotte', text: 'Mayotte (GMT+03:00)' },\n { key: 'Indian/Reunion', value: 'Indian/Reunion', text: 'Reunion (GMT+04:00)' }\n ]\n },\n {\n text: 'Pacific',\n name: 'Pacific',\n type: 'group',\n options: [\n { key: 'Pacific/Apia', value: 'Pacific/Apia', text: 'Apia (GMT+13:00)' },\n { key: 'Pacific/Auckland', value: 'Pacific/Auckland', text: 'Auckland (GMT+13:00)' },\n { key: 'Pacific/Chatham', value: 'Pacific/Chatham', text: 'Chatham (GMT+13:45)' },\n { key: 'Pacific/Chuuk', value: 'Pacific/Chuuk', text: 'Chuuk (GMT+10:00)' },\n { key: 'Pacific/Easter', value: 'Pacific/Easter', text: 'Easter (GMT-05:00)' },\n { key: 'Pacific/Efate', value: 'Pacific/Efate', text: 'Efate (GMT+11:00)' },\n { key: 'Pacific/Enderbury', value: 'Pacific/Enderbury', text: 'Enderbury (GMT+13:00)' },\n { key: 'Pacific/Fakaofo', value: 'Pacific/Fakaofo', text: 'Fakaofo (GMT+13:00)' },\n { key: 'Pacific/Fiji', value: 'Pacific/Fiji', text: 'Fiji (GMT+12:00)' },\n { key: 'Pacific/Funafuti', value: 'Pacific/Funafuti', text: 'Funafuti (GMT+12:00)' },\n { key: 'Pacific/Galapagos', value: 'Pacific/Galapagos', text: 'Galapagos (GMT-06:00)' },\n { key: 'Pacific/Gambier', value: 'Pacific/Gambier', text: 'Gambier (GMT-09:00)' },\n { key: 'Pacific/Guadalcanal', value: 'Pacific/Guadalcanal', text: 'Guadalcanal (GMT+11:00)' },\n { key: 'Pacific/Guam', value: 'Pacific/Guam', text: 'Guam (GMT+10:00)' },\n { key: 'Pacific/Honolulu', value: 'Pacific/Honolulu', text: 'Honolulu (GMT-10:00)' },\n { key: 'Pacific/Johnston', value: 'Pacific/Johnston', text: 'Johnston (GMT-10:00)' },\n { key: 'Pacific/Kiritimati', value: 'Pacific/Kiritimati', text: 'Kiritimati (GMT+14:00)' },\n { key: 'Pacific/Kosrae', value: 'Pacific/Kosrae', text: 'Kosrae (GMT+11:00)' },\n { key: 'Pacific/Kwajalein', value: 'Pacific/Kwajalein', text: 'Kwajalein (GMT+12:00)' },\n { key: 'Pacific/Majuro', value: 'Pacific/Majuro', text: 'Majuro (GMT+12:00)' },\n { key: 'Pacific/Marquesas', value: 'Pacific/Marquesas', text: 'Marquesas (GMT-09:30)' },\n { key: 'Pacific/Midway', value: 'Pacific/Midway', text: 'Midway (GMT-11:00)' },\n { key: 'Pacific/Nauru', value: 'Pacific/Nauru', text: 'Nauru (GMT+12:00)' },\n { key: 'Pacific/Niue', value: 'Pacific/Niue', text: 'Niue (GMT-11:00)' },\n { key: 'Pacific/Norfolk', value: 'Pacific/Norfolk', text: 'Norfolk (GMT+11:30)' },\n { key: 'Pacific/Noumea', value: 'Pacific/Noumea', text: 'Noumea (GMT+11:00)' },\n { key: 'Pacific/Pago_Pago', value: 'Pacific/Pago_Pago', text: 'Pago Pago (GMT-11:00)' },\n { key: 'Pacific/Palau', value: 'Pacific/Palau', text: 'Palau (GMT+09:00)' },\n { key: 'Pacific/Pitcairn', value: 'Pacific/Pitcairn', text: 'Pitcairn (GMT-08:00)' },\n { key: 'Pacific/Pohnpei', value: 'Pacific/Pohnpei', text: 'Pohnpei (GMT+11:00)' },\n { key: 'Pacific/Port_Moresby', value: 'Pacific/Port_Moresby', text: 'Port Moresby (GMT+10:00)' },\n { key: 'Pacific/Rarotonga', value: 'Pacific/Rarotonga', text: 'Rarotonga (GMT-10:00)' },\n { key: 'Pacific/Saipan', value: 'Pacific/Saipan', text: 'Saipan (GMT+10:00)' },\n { key: 'Pacific/Tahiti', value: 'Pacific/Tahiti', text: 'Tahiti (GMT-10:00)' },\n { key: 'Pacific/Tarawa', value: 'Pacific/Tarawa', text: 'Tarawa (GMT+12:00)' },\n { key: 'Pacific/Tongatapu', value: 'Pacific/Tongatapu', text: 'Tongatapu (GMT+13:00)' },\n { key: 'Pacific/Wake', value: 'Pacific/Wake', text: 'Wake (GMT+12:00)' },\n { key: 'Pacific/Wallis', value: 'Pacific/Wallis', text: 'Wallis (GMT+12:00)' }\n ]\n }\n];\n\nexport const ScheduleDropdownOptions = {\n interval() {\n return [\n { key: 'daily', value: 'daily', text: 'Daily' },\n { key: 'weekly', value: 'weekly', text: 'Weekly' },\n { key: 'monthly', value: 'monthly', text: 'Monthly' }\n ];\n },\n time: {\n sendTime: [\n { key: '0', value: '00:00', text: '12:00 AM' },\n { key: '1', value: '01:00', text: '1:00 AM' },\n { key: '2', value: '02:00', text: '2:00 AM' },\n { key: '3', value: '03:00', text: '3:00 AM' },\n { key: '4', value: '04:00', text: '4:00 AM' },\n { key: '5', value: '05:00', text: '5:00 AM' },\n { key: '6', value: '06:00', text: '6:00 AM' },\n { key: '7', value: '07:00', text: '7:00 AM' },\n { key: '8', value: '08:00', text: '8:00 AM' },\n { key: '9', value: '09:00', text: '9:00 AM' },\n { key: '10', value: '10:00', text: '10:00 AM' },\n { key: '11', value: '11:00', text: '11:00 AM' },\n { key: '12', value: '12:00', text: '12:00 PM' },\n { key: '13', value: '13:00', text: '1:00 PM' },\n { key: '14', value: '14:00', text: '2:00 PM' },\n { key: '15', value: '15:00', text: '3:00 PM' },\n { key: '16', value: '16:00', text: '4:00 PM' },\n { key: '17', value: '17:00', text: '5:00 PM' },\n { key: '18', value: '18:00', text: '6:00 PM' },\n { key: '19', value: '19:00', text: '7:00 PM' },\n { key: '20', value: '20:00', text: '8:00 PM' },\n { key: '21', value: '21:00', text: '9:00 PM' },\n { key: '22', value: '22:00', text: '10:00 PM' },\n { key: '23', value: '23:00', text: '11:00 PM' }\n ],\n timeZone: TIME_ZONES\n },\n sendDate() {\n return {\n daily: [\n { key: 'weekIn', value: 'weekIn', text: 'Monday - Friday' },\n { key: 'weekEnd', value: 'weekEnd', text: 'Saturday - Sunday' },\n { key: 'weekFull', value: 'weekFull', text: 'Monday - Sunday' }\n ],\n weekly: [\n { key: 'everyMonday', value: 'everyMonday', text: 'Every Monday' },\n { key: 'everyTuesday', value: 'everyTuesday', text: 'Every Tuesday' },\n { key: 'everyWednesday', value: 'everyWednesday', text: 'Every Wednesday' },\n { key: 'everyThursday', value: 'everyThursday', text: 'Every Thursday' },\n { key: 'everyFriday', value: 'everyFriday', text: 'Every Friday' },\n { key: 'everySaturday', value: 'everySaturday', text: 'Every Saturday' },\n { key: 'everySunday', value: 'everySunday', text: 'Every Sunday' }\n ],\n monthly: [\n { key: 'firstWorkDay', value: 'firstWorkDay', text: 'First work day of the month' },\n { key: 'firstMonday', value: 'firstMonday', text: 'First monday of the month' },\n { key: 'lastFriday', value: 'lastFriday', text: 'Last friday of the month' },\n { key: 'firstDay', value: 'firstDay', text: 'First day of the month' },\n { key: 'selectedDay', value: 'selectedDay', text: 'Select a day of the month' }\n ],\n selectedDay: (() => {\n const optionArray = [];\n for (let i = 1; i < 32; i++) {\n optionArray.push({ key: `${i}`, value: `${i}`, text: `${i}` });\n }\n return optionArray;\n })()\n };\n }\n};\n","const getFirstChar = (target, splitter) => {\n return target.split(splitter).filter(t => t).map(t => t.slice(0, 1)).join('')\n .slice(0, 1)\n .toLocaleUpperCase();\n};\n\nexport const hasValidAvatar = avatarUrl => {\n return typeof avatarUrl === 'string' && avatarUrl.length > 3;\n};\n\nexport const getAvatarHolder = (name = '', email = '') => {\n switch (true) {\n case (name && name.length > 0):\n return getFirstChar(name, ' ');\n case (email && email.length > 0):\n const [beforeAt] = email.split('@');\n if (beforeAt.indexOf('.') > -1) {\n return getFirstChar(beforeAt, '.');\n }\n if (beforeAt.indexOf('_') > -1) {\n return getFirstChar(beforeAt, '_');\n }\n return beforeAt.slice(0, 2).toLocaleUpperCase();\n default: return 'N/A';\n }\n};\n","import React from 'react';\nimport classNames from 'classnames';\nimport { shape } from 'prop-types';\nimport { ContactDefaultProps, ContactPropTypes } from '../constants';\nimport { getAvatarHolder, hasValidAvatar } from '../utils';\n\nimport '../styles/Contact.scss';\n\nconst ContactAvatar = ({\n contact\n}) => {\n const { avatarUrl, name, email } = contact;\n const useAvatarHolder = React.useMemo(() => !hasValidAvatar(avatarUrl), [avatarUrl]);\n const holder = React.useMemo(() => {\n if (useAvatarHolder) {\n return getAvatarHolder(name, email);\n }\n return '';\n }, [useAvatarHolder, name, email]);\n\n const isQuestion = contact.isQuestion === true;\n const isAvatar = !isQuestion && useAvatarHolder;\n const isImage = !isQuestion && !useAvatarHolder;\n\n return (\n \n {isAvatar && holder}\n
    \n );\n};\n\nContactAvatar.propTypes = { contact: shape(ContactPropTypes) };\nContactAvatar.defaultProps = { contact: ContactDefaultProps };\n\nexport default ContactAvatar;\n","import { shape } from 'prop-types';\nimport React from 'react';\nimport { t } from '@jotforminc/translation';\n\nimport { ContactDefaultProps, ContactPropTypes } from '../constants';\nimport ContactAvatar from './ContactAvatar';\n\nconst QuestionBasedContactCard = ({ contact }) => {\n const parsed = React.useMemo(() => {\n const [lastPart, firstPart] = t('{fieldName} field {formName}').replace('{fieldName}', contact.name).split('{formName}');\n return (\n <>\n {firstPart}\n {/* eslint-disable-next-line */}\n {contact.formName}\n {lastPart}\n \n ); // TODO: formID\n });\n return (\n
    \n \n
    \n {parsed}\n
    \n
    \n );\n};\n\nQuestionBasedContactCard.propTypes = {\n contact: shape(ContactPropTypes)\n};\n\nQuestionBasedContactCard.defaultProps = {\n contact: ContactDefaultProps\n};\n\nexport default QuestionBasedContactCard;\n","import React from 'react';\nimport {\n arrayOf, func, shape, string, oneOfType\n} from 'prop-types';\nimport { FilterHoverText } from '@jotforminc/search-filter';\nimport { ContactDefaultProps, ContactPropTypes } from '../constants';\nimport ContactAvatar from './ContactAvatar';\n\nimport '../styles/Contact.scss';\nimport QuestionBasedContactCard from './QuestionBasedContactCard';\n\nconst ContactCard = ({\n ContainerRenderer, contact, renderElement, conditionFilter, questions, getQuestionText\n}) => {\n const {\n name, email, additionalInfo = [], isQuestion, role\n } = contact;\n if (renderElement) {\n return (\n \n \n \n );\n }\n if (isQuestion) {\n return (\n \n \n \n );\n }\n return (\n \n
    \n \n
    \n {!isQuestion && name && (\n
    \n {name}\n
    \n )}\n {!isQuestion && email && (\n
    \n {email}\n
    \n )}\n
    \n {role &&
    {role}
    }\n
    \n {additionalInfo.length > 0 && (\n
    \n {additionalInfo.map(info => (\n
    {info}
    \n ))}\n
    \n )}\n
    \n );\n};\n\nContactCard.propTypes = {\n ContainerRenderer: func,\n contact: shape(ContactPropTypes),\n conditionFilter: shape(),\n questions: arrayOf(shape()),\n renderElement: oneOfType([\n shape(),\n string,\n arrayOf(shape())\n ]),\n getQuestionText: func\n};\n\nContactCard.defaultProps = {\n ContainerRenderer: ({ ...props }) =>
    ,\n contact: ContactDefaultProps,\n conditionFilter: null,\n questions: [],\n renderElement: null,\n getQuestionText: null\n};\n\nexport default ContactCard;\n","import React from 'react';\nimport {\n bool, shape, object, oneOfType, element, func, string\n} from 'prop-types';\nimport classNames from 'classnames';\nimport { Popover } from '@jotforminc/uikit';\nimport ContactCard from './ContactCard';\n\nconst ContactCardPopover = ({\n isHovered, contact, targetRef, usePortal, className\n}) => {\n return isHovered && (\n \n \n \n );\n};\n\nContactCardPopover.defaultProps = {\n className: null,\n isHovered: false,\n targetRef: null,\n usePortal: false,\n contact: {}\n};\n\nContactCardPopover.propTypes = {\n className: string,\n isHovered: bool,\n targetRef: oneOfType([\n shape({ current: element }),\n func\n ]),\n usePortal: bool,\n contact: object\n};\n\nexport default ContactCardPopover;\n","import { arrayOf, string } from 'prop-types';\n\nexport const ContactPropTypes = {\n name: string,\n email: string,\n additionalInfo: arrayOf(string),\n formName: string\n};\n\nexport const ContactDefaultProps = {\n name: '',\n additionalInfo: [],\n formName: 'Form'\n};\n","import React, { forwardRef, useMemo } from 'react';\nimport { bool, string } from 'prop-types';\nimport DatePicker from 'react-datepicker';\nimport Styled from 'styled-components';\n\nimport './styles/Datepicker.scss';\n\nconst StyledDiv = Styled.div`\n * { box-sizing: border-box; }\n\n &[data-errored=\"true\"] .react-datepicker-wrapper {\n border: 1px solid #f90321;\n }\n`;\n\nconst StyledDatePicker = forwardRef(({ isErrored, ariaLabel, ...props }, ref) => {\n const isBranding21 = true;\n const customInput = useMemo(() => (ariaLabel !== '' ? : null), [ariaLabel]);\n return (\n \n \n \n );\n});\n\nStyledDatePicker.propTypes = {\n isErrored: bool,\n ariaLabel: string\n};\n\nStyledDatePicker.defaultProps = {\n isErrored: false,\n ariaLabel: ''\n};\n\nexport default StyledDatePicker;\n","\n \n\n","var _path, _path2, _path3, _path4, _path5;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgIconHipaaWarning = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 64 64\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M51.009 11.59L34.623 6.44602C32.7296 5.85157 30.6994 5.85157 28.806 6.44602L12.422 11.59C11.723 11.8079 11.1114 12.2426 10.676 12.8312C10.2405 13.4199 10.0038 14.1318 10 14.864V20.994C10.0078 28.0964 11.7337 35.0915 15.0303 41.3825C18.3269 47.6734 23.0965 53.0735 28.932 57.122C29.7335 57.6934 30.6936 58.0001 31.678 57.999C32.6708 58.0169 33.6415 57.7049 34.438 57.112C40.2731 53.0634 45.0441 47.6656 48.3455 41.3775C51.6468 35.0894 53.3808 28.097 53.4 20.995V14.916C53.4541 14.1693 53.2444 13.4272 52.8075 12.8192C52.3705 12.2112 51.734 11.7758 51.009 11.589V11.59Z\",\n fill: \"#008EF9\",\n stroke: \"#13B4FF\",\n strokeWidth: 2.017\n})), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M38.5 16.719C37.396 15.809 36.594 16.037 35.489 18.005C35.2438 18.48 34.8622 18.8708 34.3932 19.1272C33.9242 19.3837 33.3892 19.494 32.857 19.444V19.178C33.3793 18.9273 33.8009 18.5067 34.0528 17.9849C34.3047 17.4632 34.3718 16.8714 34.2433 16.3066C34.1148 15.7417 33.7981 15.2372 33.3453 14.8758C32.8925 14.5145 32.3303 14.3177 31.751 14.3177C31.1717 14.3177 30.6095 14.5145 30.1567 14.8758C29.7039 15.2372 29.3873 15.7417 29.2587 16.3066C29.1302 16.8714 29.1974 17.4632 29.4492 17.9849C29.7011 18.5067 30.1227 18.9273 30.645 19.178V19.448C30.1127 19.4972 29.5779 19.3861 29.1092 19.129C28.6405 18.8718 28.2595 18.4804 28.015 18.005C26.912 16.007 26.11 15.807 25.005 16.719C23.861 17.626 19.438 22.887 14.015 22.394C14.3725 23.1117 14.9609 23.6884 15.6856 24.0316C16.4103 24.3747 17.2293 24.4643 18.011 24.286C18.5595 24.7748 19.2445 25.0839 19.974 25.1717C20.7034 25.2595 21.4422 25.1218 22.091 24.777C22.5877 25.1336 23.179 25.3348 23.7901 25.3553C24.4011 25.3757 25.0046 25.2145 25.524 24.892C25.9863 25.2212 26.5335 25.4105 27.1003 25.4372C27.6672 25.464 28.2298 25.3272 28.721 25.043C29.301 25.44 30.005 25.615 30.704 25.535L30.783 31.629C30.668 31.591 30.555 31.591 30.44 31.55C30.44 31.55 28.61 31.173 26.704 30.643C25.2318 30.3363 23.8251 29.7731 22.548 28.979C22.588 28.94 22.627 28.94 22.662 28.9C22.903 28.785 23.161 28.708 23.426 28.672C24.2577 28.5301 25.0994 28.4548 25.943 28.447C26.6763 28.3464 27.4207 28.3593 28.15 28.485C28.15 28.405 29.219 28.599 29.484 27.539C29.4891 27.5343 29.4932 27.5286 29.4959 27.5222C29.4987 27.5158 29.5001 27.5089 29.5 27.502C29.5 27.4951 29.4986 27.4882 29.4958 27.4819C29.4931 27.4755 29.4891 27.4698 29.484 27.465C29.406 26.745 28.834 26.707 28.381 26.594C27.929 26.5018 27.4644 26.4889 27.008 26.556C25.329 26.669 20.144 26.254 19.497 28.98V29.167C19.724 31.513 24.607 32.537 28.191 33.254C27.6287 33.6148 27.1504 34.0921 26.7885 34.6536C26.4265 35.2152 26.1894 35.8479 26.093 36.509C25.979 37.985 27.16 39.384 29.867 40.937C27.807 42.413 26.434 43.775 26.549 45.402C26.7935 46.3577 27.2589 47.2427 27.9078 47.9858C28.5566 48.7288 29.3709 49.3091 30.285 49.68C29.484 48.5023 28.8908 47.1961 28.531 45.818C28.417 45.018 28.874 43.847 30.895 42.421L30.975 47.416C30.975 47.6181 31.0553 47.8119 31.1982 47.9548C31.3411 48.0977 31.5349 48.178 31.737 48.178C31.9391 48.178 32.1329 48.0977 32.2758 47.9548C32.4187 47.8119 32.499 47.6181 32.499 47.416L32.578 42.533C34.408 43.896 34.828 45.03 34.751 45.788C34.3916 47.1662 33.7984 48.4725 32.997 49.65C33.912 49.2805 34.727 48.7006 35.3761 47.9573C36.0252 47.2141 36.49 46.3284 36.733 45.372C36.847 43.708 35.473 42.345 33.415 40.907C36.16 39.354 37.305 37.955 37.189 36.479C37.082 35.8213 36.8404 35.1928 36.4794 34.6327C36.1184 34.0727 35.6458 33.5931 35.091 33.224C38.638 32.504 43.557 31.484 43.785 29.138V28.95C43.138 26.262 37.951 26.68 36.274 26.526C35.8162 26.496 35.3565 26.5087 34.901 26.564C34.441 26.642 33.871 26.677 33.798 27.434V27.514C33.89 27.7935 34.0692 28.0362 34.3093 28.2063C34.5494 28.3764 34.8378 28.465 35.132 28.459C35.8677 28.3907 36.6075 28.3784 37.345 28.422C38.1876 28.4489 39.028 28.524 39.862 28.647C40.124 28.695 40.38 28.771 40.626 28.873C40.664 28.913 40.74 28.913 40.74 28.953C39.4632 29.7475 38.0563 30.3108 36.584 30.617C35.3476 30.9562 34.1014 31.2586 32.847 31.524C32.8264 31.5217 32.8055 31.5239 32.7858 31.5305C32.7661 31.537 32.7481 31.5478 32.733 31.562L32.812 25.544C33.5108 25.6308 34.2169 25.4555 34.794 25.052C35.2854 25.3362 35.8483 25.473 36.4154 25.4461C36.9824 25.4191 37.5298 25.2296 37.992 24.9C38.5037 25.2252 39.1017 25.3884 39.7076 25.368C40.3136 25.3477 40.8993 25.1448 41.388 24.786C42.0369 25.1306 42.7758 25.2682 43.5052 25.1803C44.2347 25.0923 44.9196 24.783 45.468 24.294C46.2499 24.4725 47.0691 24.3831 47.794 24.0399C48.5189 23.6968 49.1075 23.1199 49.465 22.402C44.034 22.889 39.61 17.626 38.5 16.719ZM29.31 38.259C28.623 37.843 28.311 37.276 28.395 36.897C28.433 36.367 28.244 35.118 30.76 34.171L30.839 39.204C30.352 38.897 29.847 38.557 29.313 38.259H29.31ZM34.801 36.897C34.881 37.276 34.533 37.843 33.886 38.259C33.429 38.524 33.009 38.826 32.589 39.092L32.669 34.283C34.92 35.151 34.767 36.36 34.805 36.891L34.801 36.897Z\",\n fill: \"white\"\n})), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M47 60.334C53.6274 60.334 59 54.9471 59 48.302C59 41.6569 53.6274 36.27 47 36.27C40.3726 36.27 35 41.6569 35 48.302C35 54.9471 40.3726 60.334 47 60.334Z\",\n fill: \"#FF4947\"\n})), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M45 40.28H48.6L48.2 50.829H45.8L45 40.28Z\",\n fill: \"white\"\n})), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M47 56.285C48.1046 56.285 49 55.4706 49 54.466C49 53.4614 48.1046 52.647 47 52.647C45.8954 52.647 45 53.4614 45 54.466C45 55.4706 45.8954 56.285 47 56.285Z\",\n fill: \"white\"\n})));\nexport default SvgIconHipaaWarning;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ReactModal from 'react-modal';\nimport classNames from 'classnames';\n\nimport {\n IconCheck, IconExclamationTriangleFilled, IconLinkDiagonalBroken, IconTrashExclamationFilled, IconXmark\n} from '@jotforminc/svg-icons';\nimport { t } from '@jotforminc/translation';\nimport IconHIPAAWarning from '../assets/svg/iconHipaaWarning.svg';\n\nimport '../styles/_jfDialog.scss';\n\nclass Dialog extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n loadingState: 'default'\n };\n }\n\n onSubmit = e => {\n e.preventDefault();\n\n const { onSubmit } = this.props;\n onSubmit(e.target.doNotShowAgain ? { doNotShowAgain: e.target.doNotShowAgain.checked } : null);\n };\n\n onCancel = e => {\n if (e) {\n e.preventDefault();\n }\n const { onClose, modalID } = this.props;\n\n onClose(modalID);\n };\n\n onOtherButtonClickHandle = async (loadingButtonEnable, onOtherButtonClick) => {\n if (loadingButtonEnable) {\n this.setState({ loadingState: 'loading' });\n await onOtherButtonClick();\n setTimeout(() => {\n this.setState({ loadingState: 'default' });\n }, 2000);\n return;\n }\n onOtherButtonClick();\n };\n\n get headerIcon() {\n const { type } = this.props;\n switch (type) {\n case 'warning':\n return {\n svg: ,\n class: 'warningIcon'\n };\n case 'success':\n return {\n svg: ,\n class: 'successIcon'\n };\n case 'removeConnection':\n return {\n svg: ,\n class: 'removeConnectionIcon'\n };\n case 'trash':\n return {\n svg: ,\n class: 'dialogTrashIcon'\n };\n case 'hipaaWarning':\n return {\n svg: ,\n class: 'dialogHIPAAWarningIcon'\n };\n // case 'error':\n // return {\n // svg: errorSVG,\n // class: 'error'\n // };\n default:\n return null;\n }\n }\n\n render() {\n const {\n closable, isOpen, modalID, submitButtonText, cancelButtonText, oneButtonDialog, isOneButtonColor,\n title, subTitles, hasCheckboxForDisabling, otherButtonText, onOtherButtonClick, dialogClass, renderFields, wrapperClassName, headerImg, isSolidButtonGreen,\n loadingButtonEnable, parentSelector\n } = this.props;\n\n const { loadingState } = this.state;\n return (\n \n
    \n
    \n {this.headerIcon && {this.headerIcon.svg}}\n {headerImg && {headerImg}}\n {title &&

    {title}

    }\n {subTitles && subTitles.map(subTitle =>

    )}\n {hasCheckboxForDisabling && (\n \n )}\n {closable && (\n \n \n \n )}\n

    \n
    \n {renderFields !== null ? renderFields().map((item, index) => {\n return (\n \n

    {item.fieldTitle}

    \n

    {item.fieldSubTitle}

    \n {item.element}\n
    \n );\n }) : null}\n
    \n
    \n {!oneButtonDialog && }\n {otherButtonText && (\n this.onOtherButtonClickHandle(loadingButtonEnable, onOtherButtonClick)}\n >\n {loadingState === 'default' && (otherButtonText)}\n {loadingButtonEnable && loadingState === 'loading' && ('PLEASE WAIT...')}\n {loadingButtonEnable && loadingState === 'completed' && ('REQUEST COMPLETED')}\n \n )}\n {cancelButtonText && (\n \n )}\n
    \n \n \n );\n }\n}\n\nDialog.propTypes = {\n isOpen: PropTypes.bool,\n closable: PropTypes.bool,\n modalID: PropTypes.string,\n type: PropTypes.string,\n onSubmit: PropTypes.func.isRequired,\n onClose: PropTypes.func.isRequired,\n hasCheckboxForDisabling: PropTypes.bool,\n title: PropTypes.string,\n subTitles: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.arrayOf(PropTypes.string)\n ]),\n onOtherButtonClick: PropTypes.func,\n submitButtonText: PropTypes.string,\n otherButtonText: PropTypes.string,\n cancelButtonText: PropTypes.string,\n dialogClass: PropTypes.string,\n renderFields: PropTypes.func,\n wrapperClassName: PropTypes.string,\n headerImg: PropTypes.node,\n isSolidButtonGreen: PropTypes.bool,\n oneButtonDialog: PropTypes.bool,\n isOneButtonColor: PropTypes.string,\n loadingButtonEnable: PropTypes.bool,\n parentSelector: PropTypes.func\n};\n\nDialog.defaultProps = {\n isOpen: false,\n closable: true,\n modalID: '',\n type: '',\n hasCheckboxForDisabling: false,\n title: '',\n subTitles: '',\n onOtherButtonClick: () => { },\n submitButtonText: '',\n otherButtonText: '',\n cancelButtonText: '',\n dialogClass: 'isDefault',\n renderFields: null,\n wrapperClassName: '',\n headerImg: null,\n isSolidButtonGreen: false,\n oneButtonDialog: false,\n isOneButtonColor: null,\n loadingButtonEnable: false,\n parentSelector: () => document.body\n};\n\nexport default Dialog;\n","import clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React, { useEffect, useState } from 'react';\n\nconst GroupOptionRenderer = ({\n defaultOptionGroupTextClass, optionGroupWrapperClass,\n optionGroupTextClass, optionGroupClass, children, text, color, defaultExpandValue\n}) => {\n const [expanded, setExpanded] = useState(defaultExpandValue);\n\n const toggleExpand = () => {\n setExpanded(!expanded);\n };\n\n useEffect(() => {\n setExpanded(defaultExpandValue);\n }, [defaultExpandValue]);\n\n return (\n \n \n {text}\n \n {expanded && (\n
    \n {children}\n
    \n )}\n
    \n );\n};\nGroupOptionRenderer.propTypes = {\n defaultOptionGroupTextClass: PropTypes.string,\n optionGroupWrapperClass: PropTypes.string,\n optionGroupTextClass: PropTypes.string,\n optionGroupClass: PropTypes.string,\n text: PropTypes.string,\n color: PropTypes.string,\n children: PropTypes.node,\n defaultExpandValue: PropTypes.bool\n\n};\n\nGroupOptionRenderer.defaultProps = {\n defaultOptionGroupTextClass: 'jfSelect-optionGroup',\n optionGroupWrapperClass: '',\n optionGroupTextClass: '',\n optionGroupClass: '',\n text: '',\n color: null,\n children: null,\n defaultExpandValue: false\n};\n\nexport default GroupOptionRenderer;\n","/* eslint-disable complexity */\nimport PropTypes from 'prop-types';\nimport { createPortal } from 'react-dom';\nimport React, { Component } from 'react';\nimport clsx from 'clsx';\nimport { Portal } from '@jotforminc/magnet';\nimport GroupOptionRenderer from './GroupOptionRenderer';\n\nimport './style.scss';\n\nclass Dropdown extends Component {\n constructor(props) {\n super(props);\n\n this.handleRemoveTag = this.handleRemoveTag.bind(this);\n this.handleInputClick = this.handleInputClick.bind(this);\n this.handleKey = this.handleKey.bind(this);\n this.stopKeyEvent = this.stopKeyEvent.bind(this);\n this.handleMouseEnter = this.handleMouseEnter.bind(this);\n this.handleMouseLeave = this.handleMouseLeave.bind(this);\n this.handleSearch = this.handleSearch.bind(this);\n this.handleSearchClear = this.handleSearchClear.bind(this);\n this.handleClickOutside = this.handleClickOutside.bind(this);\n this.handleResize = this.handleResize.bind(this);\n this.handleScroll = this.handleScroll.bind(this);\n this.createTags = this.createTags.bind(this);\n\n this.inputRef = React.createRef();\n this.listRef = React.createRef();\n this.searchRef = React.createRef();\n this.optionListRef = React.createRef();\n this.areAllOptionsDisabled = this.flattenOptions(props.data).every(({ isDisabled }) => isDisabled);\n\n this.state = {\n isOpen: false,\n currentOptionIndex: 0,\n searchTerm: '',\n filteredOptions: props.data || []\n };\n }\n\n componentDidMount() {\n const { searchable } = this.props;\n document.addEventListener('scroll', this.handleScroll, true);\n document.addEventListener('click', this.handleClickOutside, true);\n window.addEventListener('resize', this.handleResize);\n\n if (this.inputRef.current) {\n this.inputRef.current.addEventListener('keyup', this.handleKey);\n this.inputRef.current.addEventListener('keydown', this.stopKeyEvent);\n this.inputRef.current.addEventListener('keypress', this.handleKey);\n }\n\n if (this.listRef.current) this.listRef.current.addEventListener('keyup', this.stopKeyEvent);\n\n if (this.searchRef.current && searchable) {\n this.searchRef.current.addEventListener('keydown', this.handleKey);\n }\n }\n\n componentDidUpdate(prevProps, prevState) {\n const { data, searchable } = this.props;\n const { data: prevData } = prevProps;\n const { isOpen: prevIsOpen } = prevState;\n const { searchTerm, isOpen } = this.state;\n if (prevData !== data) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({ filteredOptions: this.filterOptions(data, searchTerm) });\n }\n if (isOpen && !prevIsOpen && searchable) {\n this.searchRef.current.focus();\n } else if (!isOpen && prevIsOpen && searchable) {\n this.searchRef.current.value = '';\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({ searchTerm: '', filteredOptions: data });\n }\n }\n\n componentWillUnmount() {\n const { searchable } = this.props;\n document.removeEventListener('click', this.handleClickOutside, true);\n window.removeEventListener('resize', this.handleResize);\n document.removeEventListener('scroll', this.handleScroll);\n\n this.inputRef.current.removeEventListener('keyup', this.handleKey);\n\n this.listRef.current.removeEventListener('keyup', this.stopKeyEvent);\n this.inputRef.current.removeEventListener('keydown', this.stopKeyEvent);\n this.inputRef.current.removeEventListener('keypress', this.handleKey);\n if (searchable) {\n this.searchRef.current.removeEventListener('keydown', this.handleKey);\n }\n }\n\n handleClickOutside(e) {\n const { isOpen } = this.state;\n const isClickedInput = this.inputRef.current && this.inputRef.current.contains(e.target);\n const isClickedWrapper = this.listRef.current && this.listRef.current.contains(e.target);\n\n if (isClickedInput || isClickedWrapper) return;\n if (isOpen) this.hideDropdown(true);\n }\n\n handleResize() {\n const { isOpen } = this.state;\n\n const minKeyboardHeight = 300;\n const visualViewportHeight = window?.visualViewport?.height || window.screen.height;\n const isKeyboardOpen = window.screen.height - minKeyboardHeight > visualViewportHeight;\n\n if (isOpen && !isKeyboardOpen) this.hideDropdown();\n }\n\n handleScroll(e) {\n const { isOpen } = this.state;\n const { isMobile } = this.props;\n const isDisabledScrollHandler = isMobile ? this.searchRef.current !== document.activeElement : true;\n if (e.target !== this.optionListRef.current && isDisabledScrollHandler && isOpen) this.hideDropdown();\n }\n\n handleKey(event) {\n const { isKeyboardHandlingActive, disabled, defaultOptionClass } = this.props;\n const { isOpen, currentOptionIndex, filteredOptions } = this.state;\n\n if (isKeyboardHandlingActive && !disabled) {\n if (event.key === 'Enter') {\n event.stopPropagation();\n\n if (isOpen) {\n const currentOption = this.flattenOptions(filteredOptions)[currentOptionIndex];\n const searchRegExp = /\\s/g; // replacing all ' ' with '.'\n const replaceWith = '.';\n if (currentOption) {\n const currentOptionEl = this.listRef?.current?.querySelector(`.${defaultOptionClass.replace(searchRegExp, replaceWith)}[value=\"${currentOption.value}\"]`);\n currentOptionEl?.focus();\n currentOptionEl?.click();\n } else {\n this.hideDropdown();\n }\n }\n } else if (event.key === 'ArrowDown') {\n if (isOpen) {\n event.preventDefault();\n this.handleArrowKey(1);\n } else {\n this.openDropdown();\n }\n } else if (event.key === 'ArrowUp') {\n if (isOpen) {\n event.preventDefault();\n this.handleArrowKey(-1);\n }\n }\n }\n }\n\n handleArrowKey(indicator) {\n if (this.areAllOptionsDisabled) return;\n const { defaultOptionClass } = this.props;\n this.setState(state => {\n const flattenedOptions = this.flattenOptions(state.filteredOptions);\n const newIndex = (state.currentOptionIndex + indicator + flattenedOptions.length) % flattenedOptions.length;\n return { currentOptionIndex: newIndex };\n }, () => {\n const { currentOptionIndex, filteredOptions } = this.state;\n const { value, isDisabled } = this.flattenOptions(filteredOptions)[currentOptionIndex];\n if (isDisabled) {\n this.handleArrowKey(indicator);\n return;\n }\n const searchRegExp = /\\s/g; // replacing all ' ' with '.'\n const replaceWith = '.';\n const currentOptionEl = this.listRef?.current?.querySelector(`.${defaultOptionClass.replace(searchRegExp, replaceWith)}[value=\"${value}\"]`);\n currentOptionEl?.scrollIntoView({ block: 'nearest' });\n });\n }\n\n handleInputClick() {\n const { isOpen } = this.state;\n const {\n disabled,\n onInputClick,\n autoFocus,\n listAutoFocus\n } = this.props;\n\n if (!disabled) {\n if (!isOpen) {\n this.openDropdown();\n onInputClick();\n if (this.listRef.current && (autoFocus || listAutoFocus)) {\n this.listRef.current.focus();\n }\n }\n this.hideDropdown();\n }\n }\n\n handleSearch(e) {\n const { data, onSearch } = this.props;\n const { value } = e.target;\n\n this.setState({ filteredOptions: this.filterOptions(data, value), searchTerm: value });\n setTimeout(() => { this.handleDropdownPosition(); }, 0);\n onSearch(value);\n }\n\n handleSearchClear() {\n const value = '';\n this.searchRef.current.value = value;\n this.handleSearch({ target: { value } });\n }\n\n handleDropdownPosition() {\n const {\n dropdownLeft,\n dropdownTop,\n dropdownWidth,\n getDropdownPosition,\n isLite,\n dropdownPositionResolver\n } = this.props;\n const listRefStyle = this.listRef?.current?.style || {};\n\n listRefStyle.opacity = 1;\n listRefStyle.visibility = 'visible';\n listRefStyle.width = `${this.inputRef?.current?.offsetWidth}px`;\n\n if (isLite) { return; }\n\n const {\n left = 0,\n top = 0,\n width = 0,\n height = 0,\n right = 0\n } = this.inputRef?.current?.getBoundingClientRect() || {};\n\n const {\n offsetHeight: listRefHeight = 0\n } = this.listRef.current || {};\n\n let positions = {};\n const topOffset = height + top;\n const totalHeight = topOffset + listRefHeight;\n\n positions.left = left;\n positions.width = width;\n\n if (totalHeight > window.innerHeight) {\n positions.top = top - listRefHeight;\n this.listRef?.current?.setAttribute('data-position', 'top');\n this.inputRef?.current?.setAttribute('data-position', 'top');\n getDropdownPosition('top');\n } else {\n positions.top = topOffset;\n this.listRef?.current?.setAttribute('data-position', 'bottom');\n this.inputRef?.current?.setAttribute('data-position', 'bottom');\n getDropdownPosition('bottom');\n }\n\n if (dropdownPositionResolver && typeof dropdownPositionResolver === 'function') {\n positions = {\n ...positions,\n ...dropdownPositionResolver({\n left, top, width, height, right\n })\n };\n }\n\n listRefStyle.top = dropdownTop\n ? `${dropdownTop}px`\n : `${positions.top}px`;\n listRefStyle.left = dropdownLeft\n ? `${dropdownLeft}px`\n : `${positions.left}px`;\n listRefStyle.width = dropdownWidth\n ? `${dropdownWidth}px`\n : `${positions.width}px`;\n }\n\n handleOptionClick = option => e => {\n const { value } = e.currentTarget;\n const {\n multiple, isKeyboardHandlingActive, onOptionClick, autoFocus,\n sendFullOption, listAutoFocus\n } = this.props;\n\n if (isKeyboardHandlingActive) {\n e.stopPropagation();\n e.nativeEvent.stopImmediatePropagation();\n }\n\n if (multiple) {\n setTimeout(() => {\n this.handleDropdownPosition();\n }, 0);\n } else {\n setTimeout(() => {\n this.hideDropdown();\n }, 0);\n }\n onOptionClick(sendFullOption ? option : value, e);\n if (this.inputRef.current && (autoFocus || listAutoFocus)) {\n this.inputRef.current.focus();\n }\n };\n\n handleRemoveTag(e) {\n const { onRemoveTag } = this.props;\n const { value } = e.target;\n onRemoveTag(value, e);\n e.stopPropagation();\n }\n\n handleMouseEnter(e) {\n const { target } = e;\n const { filteredOptions } = this.state;\n const newIndex = this.flattenOptions(filteredOptions).findIndex(opt => opt.value === target.value);\n this.setState({ currentOptionIndex: newIndex });\n }\n\n handleMouseLeave() {\n this.setState({ currentOptionIndex: -1 });\n }\n\n isValueInOption(option, value) {\n if (option?.searchTerm) {\n return option.searchTerm.toLowerCase().indexOf(value?.toLowerCase()) !== -1;\n }\n return typeof option.text === 'string' ? option.text?.toLowerCase().indexOf(value?.toLowerCase()) > -1 : false;\n }\n\n isLastElement(options, index) {\n return options?.length > 0 && options?.length > index + 1;\n }\n\n filterOptions(options, value) {\n return options.reduce((acc, currentOption) => {\n if (currentOption.type === 'group') {\n const groupOptions = this.filterOptions(currentOption.options, value);\n return groupOptions.length > 0 ? [...acc, { ...currentOption, options: groupOptions }] : acc;\n }\n\n return this.isValueInOption(currentOption, value) ? [...acc, currentOption] : acc;\n }, []);\n }\n\n flattenOptions(options) {\n return options.flatMap(option => {\n return option.type === 'group' ? (this.flattenOptions(option?.options) || []) : option;\n });\n }\n\n openDropdown() {\n const { isDropdownOpen, selectedOptionValues, multiple } = this.props;\n\n this.setState(state => {\n const flattenedOptions = this.flattenOptions(state.filteredOptions);\n const currentOptionIndex = multiple ? 0 : flattenedOptions.findIndex(opt => opt.value === selectedOptionValues[0]);\n return {\n isOpen: true,\n currentOptionIndex\n };\n });\n this.handleDropdownPosition();\n isDropdownOpen(true);\n }\n\n stopKeyEvent(event) {\n const { isKeyboardHandlingActive } = this.props;\n const { isOpen } = this.state;\n if (isKeyboardHandlingActive && isOpen) {\n event.stopPropagation();\n }\n }\n\n hideDropdown(noFocus = true) {\n const { isOpen } = this.state;\n const { isDropdownOpen } = this.props;\n\n if (!noFocus && this.inputRef.current) {\n this.inputRef.current.focus();\n }\n\n if (isOpen && this.listRef.current) {\n this.listRef.current.style.opacity = 0;\n this.listRef.current.style.visibility = 'hidden';\n\n this.setState({\n isOpen: false,\n currentOptionIndex: 0\n });\n isDropdownOpen(false);\n }\n }\n\n createTags() {\n const {\n data, defaultTagClass, defaultRemoveButtonClass, tagClass, removeButtonClass, removeButtonIcon, selectedOptionStyles\n } = this.props;\n const { selectedOptionValues } = this.props;\n\n const removeButtonClasses = clsx(defaultRemoveButtonClass, removeButtonClass);\n\n return this.flattenOptions(data).map(option => {\n const {\n value, text, dataAttributes, key, additionalTagClass\n } = option;\n if (selectedOptionValues.indexOf(value) > -1) {\n return (\n \n {text}\n \n {removeButtonIcon}\n \n \n );\n }\n return null;\n });\n }\n\n renderOptionComponent(option, name = 'beforeComponent') {\n return option && option[name] !== undefined ? option[name] : null;\n }\n\n renderOptionItem(option, index) {\n const {\n selectedOptionValues, defaultOptionClass,\n activeOptionClass, disabledOptionClass, hoverOptionClass,\n optionTextClass, inActiveOptionClass\n } = this.props;\n\n const { currentOptionIndex } = this.state;\n const isOptionSelected = selectedOptionValues.indexOf(option.value) > -1;\n return (\n -1}\n value={option.value}\n disabled={option.isDisabled && option.isDisabled === true ? 'true' : null}\n {...option.dataAttributes}\n aria-label={option.ariaLabel || option.text}\n >\n {this.renderOptionComponent(option)}\n {optionTextClass ? {option.text} : option.text}\n {this.renderOptionComponent(option, 'afterComponent')}\n \n );\n }\n\n renderOptionItemGroup(groupOption, groupIndex, isLastElement) {\n const {\n defaultOptionGroupTextClass, optionGroupWrapperClass,\n optionGroupTextClass, optionGroupClass\n } = this.props;\n\n const divider = groupOption.hideLabel && isLastElement;\n return (\n \n { !groupOption.hideLabel && {groupOption.text} }\n
    \n { groupOption.options.map((option, index) => (option.type === 'group'\n ? this.renderOptionItemGroup(option, groupIndex + index, this.isLastElement(groupOption.options, index))\n : this.renderOptionItem(option, groupIndex + index))) }\n
    \n { divider &&
    }\n
    \n );\n }\n\n renderMultipleGroupItem(option, index, isLastElement) {\n const {\n defaultOptionGroupTextClass, optionGroupWrapperClass,\n optionGroupTextClass, optionGroupClass\n } = this.props;\n\n const {\n text, color, options, collapsible, defaultExpandValue\n } = option;\n\n const { filteredOptions, searchTerm } = this.state;\n const isOptionFiltered = searchTerm && filteredOptions?.findIndex(filteredOption => filteredOption === option) > -1;\n\n if (collapsible) {\n return (\n \n {options?.map((val, optionIndex) => (val.type === 'group'\n ? this.renderOptionItemGroup(val, index + optionIndex, this.isLastElement(options, optionIndex))\n : this.renderOptionItem(val, index + optionIndex)))}\n \n );\n }\n return (\n this.renderOptionItemGroup(option, index, isLastElement)\n );\n }\n\n renderOptions() {\n const {\n defaultNotResultFoundClass, notResultFoundClass, notResultFoundText,\n defaultOptionClass, dropdownOpenInEmail, data\n } = this.props;\n\n const { filteredOptions } = this.state;\n const notResultFoundClassses = clsx(defaultNotResultFoundClass, notResultFoundClass);\n\n if (!dropdownOpenInEmail && filteredOptions?.length === 0) {\n return
    {notResultFoundText}
    ;\n }\n\n if (dropdownOpenInEmail && data?.length === 0) {\n return
    {notResultFoundText}
    ;\n }\n\n const filteredValue = dropdownOpenInEmail ? data : filteredOptions;\n\n const { items } = filteredValue.reduce((result, current) => {\n switch (true) {\n case current?.showOutsideButton:\n return {\n itemIndex: result.itemIndex + 1,\n items: [\n ...result.items,\n (\n
    \n {this.renderOptionComponent(current)}\n
    \n )\n ]\n };\n case current.type === 'group':\n return {\n itemIndex: result.itemIndex + current.options.length,\n items: [...result.items, this.renderMultipleGroupItem(current, result.itemIndex, this.isLastElement(current.options, result.itemIndex))]\n };\n default:\n return { itemIndex: result.itemIndex + 1, items: [...result.items, this.renderOptionItem(current, result.itemIndex)] };\n }\n }, { itemIndex: 0, items: [] });\n\n return items;\n }\n\n renderInput() {\n const { isOpen } = this.state;\n const {\n inputAfter,\n inputBefore,\n inputClass,\n inputTextClass,\n tagWrapperClass,\n defaultInputClass,\n defaultInputTextClass,\n defaultOptionText,\n defaultOptionTitle,\n defaultTagWrapperClass,\n activeInputClass,\n selectedOptionValues,\n searchableClass,\n isDarkClass,\n disabledClass,\n multipleClass,\n multiple,\n searchable,\n disabled,\n data,\n inputTabIndex,\n isDark,\n autoFocus,\n defaultInnerInput,\n pdfOptions\n } = this.props;\n\n const inputClasses = clsx(defaultInputClass, inputClass, {\n [activeInputClass]: activeInputClass && isOpen,\n [multipleClass]: multiple,\n [searchableClass]: searchable,\n [disabledClass]: disabled,\n [isDarkClass]: isDark\n });\n\n const inputTextClasses = clsx(defaultInputTextClass, inputTextClass);\n const tagWrapperClasses = clsx(defaultTagWrapperClass, tagWrapperClass);\n\n if (multiple) {\n return (\n \n {inputBefore && inputBefore}\n \n {selectedOptionValues.length === 0 ? defaultOptionText : this.createTags()}\n \n {inputAfter && inputAfter}\n \n );\n }\n const selectedOption = this.flattenOptions(data).find(option => selectedOptionValues[0] === option.value);\n const setOpen = () => this.setState({ isOpen: true });\n const hasNoOptions = pdfOptions?.length === 0;\n\n return (\n 0 ? true : null}\n type=\"button\"\n aria-disabled={disabled}\n aria-haspopup=\"true\"\n aria-expanded={isOpen}\n autoFocus={autoFocus}\n title={(selectedOptionValues.length === 0 || !selectedOption) ? (defaultOptionTitle || defaultOptionText) : (selectedOption.title || selectedOption.text)}\n >\n {inputBefore && inputBefore}\n {selectedOptionValues.length > 0 && this.renderOptionComponent(selectedOption)}\n \n {(selectedOptionValues.length === 0 || !selectedOption) ? defaultOptionText : selectedOption.text}\n \n {selectedOptionValues.length > 0 && this.renderOptionComponent(selectedOption, 'afterComponent')}\n {defaultInnerInput && pdfOptions?.length >= 0 && (\n
    \n {hasNoOptions ? 'Select Document' : `${pdfOptions.length} document${pdfOptions.length > 1 ? 's' : ''} selected`}\n
    \n )}\n {inputAfter && inputAfter}\n \n );\n }\n\n render() {\n const { isOpen, searchTerm } = this.state;\n const {\n defaultWrapperClass,\n wrapperClass,\n activeWrapperClass,\n defaultListClass,\n listClass,\n liteClass,\n searchable,\n multiple,\n searchableClass,\n isDarkClass,\n isDark,\n multipleClass,\n defaultSearchBoxClass,\n searchBoxClass,\n defaultSearchInputClass,\n searchInputClass,\n searchInputPlaceholder,\n zIndex,\n isLite,\n listAriaLabel,\n searchIcon,\n useMagnetPortal,\n clearSearchButtonText\n } = this.props;\n\n const listClasses = clsx(defaultListClass, listClass);\n const wrapperClasses = clsx(defaultWrapperClass, wrapperClass, {\n [activeWrapperClass]: activeWrapperClass && isOpen,\n [multipleClass]: multiple,\n [searchableClass]: searchable,\n [isDarkClass]: isDark,\n [liteClass]: isLite\n });\n const searchBoxClasses = clsx(defaultSearchBoxClass, searchBoxClass);\n const searchInputClasses = clsx(defaultSearchInputClass, searchInputClass);\n\n const renderWrapper = () => {\n return (\n \n {searchable\n && (\n \n \n {searchIcon && searchIcon}\n \n {clearSearchButtonText && searchTerm !== '' && }\n
    \n )}\n \n {this.renderOptions()}\n
    \n
    \n );\n };\n\n return (\n <>\n {isLite ? (\n
    \n {this.renderInput()}\n {renderWrapper()}\n
    \n ) : (\n <>\n {this.renderInput()}\n {!useMagnetPortal ? createPortal(renderWrapper(), document.body) : {renderWrapper()}}\n \n )}\n \n );\n }\n}\n\nDropdown.defaultProps = {\n defaultOptionText: 'Dropdown',\n defaultOptionTitle: 'Select',\n defaultInputClass: 'jfSelect-input',\n defaultInputTextClass: 'jfSelect-inputText',\n defaultWrapperClass: 'jfSelect-wrapper',\n defaultOptionClass: 'jfSelect-option',\n defaultOptionGroupTextClass: 'jfSelect-optionGroup',\n defaultListClass: 'jfSelect-list',\n defaultTagClass: 'jfSelect-tag',\n defaultTagWrapperClass: 'jfSelect-tagWrapper',\n defaultRemoveButtonClass: 'jfSelect-removeButton',\n defaultNotResultFoundClass: 'jfSelect-notResultFound',\n defaultSearchBoxClass: 'jfSelect-searchBox',\n defaultSearchInputClass: 'jfSelect-searchInput',\n defaultOptionTextClass: 'jfSelect-optionText',\n activeWrapperClass: 'isActive',\n activeInputClass: 'isActive',\n activeOptionClass: 'isActive',\n hoverOptionClass: 'isHover',\n searchableClass: 'isSearchable',\n multipleClass: 'isMultiple',\n disabledClass: 'isDisabled',\n disabledOptionClass: 'isDisabled',\n isDarkClass: 'isDark',\n liteClass: 'jfSelect-liteWrapper',\n notResultFoundText: 'No results found.',\n inActiveOptionClass: 'inActive',\n removeButtonIcon:\n \n \n ,\n inputClass: '',\n inputTextClass: '',\n wrapperClass: '',\n listClass: '',\n tagClass: '',\n tagWrapperClass: '',\n notResultFoundClass: '',\n searchBoxClass: '',\n searchInputClass: '',\n removeButtonClass: '',\n optionGroupWrapperClass: '',\n optionGroupTextClass: '',\n optionGroupClass: '',\n inputAfter: '',\n inputBefore: '',\n zIndex: 1000,\n optionTextClass: null,\n dropdownWidth: null,\n dropdownLeft: null,\n dropdownTop: null,\n multiple: false,\n disabled: false,\n isKeyboardHandlingActive: false,\n searchable: false,\n inputTabIndex: 0,\n searchInputPlaceholder: null,\n isDark: false,\n autoFocus: false,\n data: [],\n selectedOptionValues: [],\n selectedOptionStyles: {},\n onInputClick: f => f,\n onOptionClick: f => f,\n onRemoveTag: f => f,\n onSearch: f => f,\n isLite: false,\n defaultInnerInput: false,\n dropdownOpenInEmail: false,\n isDropdownOpen: f => f,\n getDropdownPosition: f => f,\n pdfOptions: null,\n listAriaLabel: null,\n sendFullOption: false,\n dropdownPositionResolver: null,\n listAutoFocus: false,\n isMobile: false,\n searchIcon: null,\n useMagnetPortal: false,\n clearSearchButtonText: null\n};\n\nconst dataOptionType = PropTypes.shape({\n text: PropTypes.string,\n value: PropTypes.string,\n beforeComponent: PropTypes.node,\n afterComponent: PropTypes.node,\n additionalClassName: PropTypes.string\n});\n\nconst dataOptionGroupType = PropTypes.shape({\n type: PropTypes.oneOf(['group']),\n text: PropTypes.string,\n options: PropTypes.arrayOf(dataOptionType),\n beforeComponent: PropTypes.node\n});\n\nDropdown.propTypes = {\n defaultOptionText: PropTypes.string,\n defaultOptionTitle: PropTypes.string,\n defaultInputClass: PropTypes.string,\n defaultInputTextClass: PropTypes.string,\n defaultWrapperClass: PropTypes.string,\n defaultListClass: PropTypes.string,\n defaultOptionClass: PropTypes.string,\n defaultOptionGroupTextClass: PropTypes.string,\n defaultTagClass: PropTypes.string,\n defaultTagWrapperClass: PropTypes.string,\n defaultRemoveButtonClass: PropTypes.string,\n defaultNotResultFoundClass: PropTypes.string,\n defaultSearchBoxClass: PropTypes.string,\n defaultSearchInputClass: PropTypes.string,\n defaultOptionTextClass: PropTypes.string,\n activeWrapperClass: PropTypes.string,\n activeOptionClass: PropTypes.string,\n hoverOptionClass: PropTypes.string,\n activeInputClass: PropTypes.string,\n isKeyboardHandlingActive: PropTypes.bool,\n inputClass: PropTypes.string,\n inputTextClass: PropTypes.string,\n wrapperClass: PropTypes.string,\n tagClass: PropTypes.string,\n zIndex: PropTypes.number,\n tagWrapperClass: PropTypes.string,\n removeButtonClass: PropTypes.string,\n optionGroupWrapperClass: PropTypes.string,\n optionGroupTextClass: PropTypes.string,\n optionGroupClass: PropTypes.string,\n multipleClass: PropTypes.string,\n disabledClass: PropTypes.string,\n searchableClass: PropTypes.string,\n isDarkClass: PropTypes.string,\n listClass: PropTypes.string,\n liteClass: PropTypes.string,\n searchInputClass: PropTypes.string,\n searchBoxClass: PropTypes.string,\n optionTextClass: PropTypes.string,\n notResultFoundClass: PropTypes.string,\n notResultFoundText: PropTypes.string,\n disabledOptionClass: PropTypes.string,\n removeButtonIcon: PropTypes.node,\n inputAfter: PropTypes.node,\n inputBefore: PropTypes.node,\n dropdownWidth: PropTypes.number,\n dropdownLeft: PropTypes.number,\n dropdownTop: PropTypes.number,\n multiple: PropTypes.bool,\n searchable: PropTypes.bool,\n disabled: PropTypes.bool,\n data: PropTypes.arrayOf(PropTypes.oneOfType([dataOptionType, dataOptionGroupType])),\n selectedOptionValues: PropTypes.arrayOf(PropTypes.string),\n selectedOptionStyles: PropTypes.shape({}),\n onInputClick: PropTypes.func,\n onOptionClick: PropTypes.func,\n onSearch: PropTypes.func,\n onRemoveTag: PropTypes.func,\n inputTabIndex: PropTypes.number,\n searchInputPlaceholder: PropTypes.string,\n isDark: PropTypes.bool,\n autoFocus: PropTypes.bool,\n isLite: PropTypes.bool,\n defaultInnerInput: PropTypes.bool,\n dropdownOpenInEmail: PropTypes.bool,\n isDropdownOpen: PropTypes.func,\n getDropdownPosition: PropTypes.func,\n inActiveOptionClass: PropTypes.string,\n pdfOptions: PropTypes.array,\n listAriaLabel: PropTypes.string,\n sendFullOption: PropTypes.bool,\n dropdownPositionResolver: PropTypes.func,\n listAutoFocus: PropTypes.bool,\n isMobile: PropTypes.bool,\n searchIcon: PropTypes.node,\n useMagnetPortal: PropTypes.bool,\n clearSearchButtonText: PropTypes.string\n};\n\nexport default Dropdown;\n","var _g;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgIconCross = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"currentColor\",\n viewBox: \"0 0 12 12\"\n}, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n fillRule: \"evenodd\",\n transform: \"rotate(45 7.784 5.486)\"\n}, /*#__PURE__*/React.createElement(\"rect\", {\n width: 13.784,\n height: 1.579,\n y: 6.316,\n rx: 0.789\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6.892 13.997a.788.788 0 0 1-.79-.78V.994c0-.431.351-.781.79-.781.436 0 .79.355.79.78v12.224c0 .431-.35.78-.79.78z\"\n}))));\nexport default SvgIconCross;","var _path, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgIconPill = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 9 11\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4.18225 5.03352C5.56488 5.03352 6.68572 3.90673 6.68572 2.51676C6.68572 1.12679 5.56488 0 4.18225 0C2.79962 0 1.67877 1.12679 1.67877 2.51676C1.67877 3.90673 2.79962 5.03352 4.18225 5.03352Z\",\n fill: \"#81829E\"\n})), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4.18222 5.87244C1.36581 5.87244 0.00976562 7.63921 0.00976562 8.66856V9.22813C0.00976562 9.69145 0.38338 10.067 0.844257 10.067H7.52019C7.98106 10.067 8.35468 9.69145 8.35468 9.22813V8.66856C8.35468 7.63921 6.99863 5.87244 4.18222 5.87244Z\",\n fill: \"#81829E\"\n})));\nexport default SvgIconPill;","import React, {\n useRef, useState, useEffect, forwardRef, useImperativeHandle\n} from 'react';\nimport {\n arrayOf, string, bool, func, shape, elementType\n} from 'prop-types';\nimport classNames from 'classnames';\nimport { Utils } from '@jotforminc/uikit';\nimport { useLongPress } from '@jotforminc/hooks';\n\nimport IconCross from './assets/svg/icon_cross.svg';\nimport IconPill from './assets/svg/icon_pill.svg';\n\nconst EditablePill = forwardRef(({\n id, text, displayedText, pillIconURL, isValid, removePill, pillIcon: PillIcon, showPillIcon,\n allowEmpty, allowedKeys, updatePill, hideRemoveIcon,\n initialEditable, inputProps, preventEditable, onEditableChange, isBright,\n ...props\n}, ref) => {\n const pillTextRef = useRef();\n const [inputValue, setInputValue] = useState(text);\n const [isEditable, setEditable] = useState(initialEditable);\n const setEditableState = tmpIsEditable => setEditable(!preventEditable && tmpIsEditable);\n\n const handleEditableStateChange = tmpIsEditable => {\n setEditableState(tmpIsEditable);\n onEditableChange(tmpIsEditable);\n };\n const longPressMouseEvents = useLongPress(() => handleEditableStateChange(true));\n\n useImperativeHandle(ref, () => ({\n setEditableState\n }));\n\n const onPillKeyDown = event => {\n const { key, keyCode } = event;\n event.nativeEvent.stopPropagation();\n event.nativeEvent.stopImmediatePropagation();\n if (!isEditable) {\n return;\n }\n\n const abortTyping = key === 'Escape' || keyCode === 27;\n const finalizeTyping = Utils.isPressedKeyPillboxAddKey(event) && !Utils.isPressedKeyOneOf(allowedKeys)(event);\n switch (true) {\n case finalizeTyping:\n if (!allowEmpty && inputValue === '') {\n removePill({ id });\n break;\n }\n updatePill({ id, text: inputValue });\n handleEditableStateChange(false);\n break;\n case abortTyping:\n handleEditableStateChange(false);\n setInputValue(text);\n break;\n default:\n break;\n }\n };\n\n const onPillDoubleClick = () => handleEditableStateChange(true);\n const onPillTextChange = ({ target: { value } }) => setInputValue(value);\n const onRemovePillKeyPress = event => Utils.isPressedKeyEnter(event) && removePill();\n const onPillBlur = () => {\n if (!allowEmpty && inputValue === '') {\n removePill({ id });\n return;\n }\n\n updatePill({ id, text: inputValue });\n handleEditableStateChange(false);\n };\n\n useEffect(() => {\n if (isEditable) {\n pillTextRef.current.focus();\n pillTextRef.current.setSelectionRange(0, inputValue.length);\n }\n }, [isEditable]);\n\n const handleRemovePill = event => {\n event.stopPropagation();\n removePill(event);\n event.preventDefault();\n };\n\n const handleMouseDown = event => {\n event.preventDefault();\n };\n\n const pillSpanClasses = classNames({ isBright }, 'pill-icon');\n const pillClasses = classNames({ isBright, hasBackgroundColor: props?.style?.backgroundColor }, 'pill'); // eslint-disable-line\n\n return (\n \n {!hideRemoveIcon && (\n \n \n \n )}\n {showPillIcon && (\n \n { pillIconURL\n ? (\n \n )\n : }\n \n )}\n \n \n {!isEditable ? (displayedText || text) : null}\n \n \n );\n});\n\nEditablePill.propTypes = {\n id: string.isRequired,\n text: string.isRequired,\n displayedText: string,\n pillIconURL: string,\n allowEmpty: bool,\n allowedKeys: arrayOf(string),\n isValid: bool.isRequired,\n removePill: func,\n updatePill: func.isRequired,\n hideRemoveIcon: bool,\n pillIcon: elementType,\n showPillIcon: bool,\n initialEditable: bool,\n preventEditable: bool,\n inputProps: shape({}),\n onEditableChange: func,\n isBright: bool\n};\n\nEditablePill.defaultProps = {\n displayedText: '',\n pillIconURL: '',\n showPillIcon: false,\n hideRemoveIcon: false,\n pillIcon: IconPill,\n initialEditable: false,\n preventEditable: false,\n allowEmpty: false,\n allowedKeys: [],\n inputProps: {},\n onEditableChange: f => f,\n removePill: f => f,\n isBright: null\n};\n\nexport default EditablePill;\n","import React, {\n useState, useEffect, forwardRef, useImperativeHandle, useMemo\n} from 'react';\nimport {\n func,\n bool,\n shape,\n elementType,\n arrayOf,\n string,\n number,\n oneOfType\n} from 'prop-types';\n\nimport TextInput from '../TextInput';\n\nimport {\n generateShortID, isPressedKeyTab, isPressedKeyPillboxAddKey, isPressedKeyBackspace\n} from '../../utils';\nimport { useEffectIgnoreFirst } from '../../utils/hooks';\n\nconst Pillbox = forwardRef(({\n inputProps,\n isUniqueList,\n pillValidation,\n PillRenderer,\n PillContainerRenderer,\n RemainingCountRenderer,\n onPillAdd,\n onPillRemove,\n onPillUpdate,\n onPillListChange,\n pills,\n maxCount,\n showRemainingCount,\n showPillIcon,\n readOnly,\n fixedValue,\n setTextInputValue,\n getValidatedList\n}, ref) => {\n // States\n const [items, setItems] = useState(pills);\n const remainingCount = maxCount - items.length;\n\n // State based methods\n const findItemByText = item => Boolean(items.find(({ text }) => text.toLowerCase() === item.toLowerCase()));\n const findItemById = item => Boolean(items.find(({ id }) => id === item.id));\n const generateItem = item => ({\n id: item.id || generateShortID(), text: item.email || item, isValid: pillValidation(item), showPillIcon\n });\n const isValidToAdd = item => {\n if (!isUniqueList) {\n return Boolean(item.email || item);\n }\n\n if (item.id) {\n return Boolean(item.email) && (isUniqueList && !findItemById(item));\n }\n return Boolean(item) && (isUniqueList && !findItemByText(item));\n };\n\n const addTeamItem = ({ teamName, value, teamAvatarURL }) => {\n if (!isValidToAdd(value)) {\n return;\n }\n\n const newItem = {\n id: generateShortID(), text: value, displayedText: teamName, pillIconURL: teamAvatarURL, isValid: pillValidation(value), showPillIcon: true\n };\n const newItems = [...items, newItem];\n setItems(newItems);\n onPillAdd(newItem);\n };\n\n const addItem = item => {\n if (!isValidToAdd(item)) {\n setTextInputValue('');\n return;\n }\n\n const newItem = generateItem(item);\n const newItems = getValidatedList ? getValidatedList([...items, newItem]) : [...items, newItem];\n setItems(newItems);\n onPillAdd(newItem);\n };\n\n const removeItem = item => {\n if (fixedValue.indexOf(item.value) > -1) return;\n\n const newItems = items.filter(({ id }) => (id !== item.id));\n setItems(newItems);\n onPillRemove(item);\n };\n\n const updateItem = newItem => {\n const validatedNewItem = { ...newItem, isValid: pillValidation(newItem.text) };\n const newItems = items.map(item => (item.id === newItem.id ? { ...item, ...validatedNewItem } : item));\n setItems(newItems);\n onPillUpdate(validatedNewItem);\n };\n\n // Effects\n useEffect(() => {\n if (items !== pills) {\n setItems(pills);\n }\n }, [pills]);\n\n useEffectIgnoreFirst(() => {\n onPillListChange(items);\n }, [items]);\n\n useImperativeHandle(ref, () => ({\n addItem,\n addTeamItem,\n removeItem,\n updateItem,\n setItems,\n items\n }));\n\n // Event handlers\n const onBlur = (...parameters) => {\n const { onBlur: onBlurInput, suggestionSelected } = inputProps;\n const [e, inputValue, setInputValue] = parameters;\n\n const preventOnBlur = e.relatedTarget && e.relatedTarget.classList.contains('prevent-onblur-input');\n if (preventOnBlur) {\n return;\n }\n\n const isFocusSuggestion = e.relatedTarget && e.relatedTarget.classList.contains('suggestion');\n\n if (inputValue && !isFocusSuggestion && !suggestionSelected) { // if suggestion Selected is true prevent adding item from input value\n addItem(inputValue);\n setInputValue('');\n setTextInputValue('');\n }\n\n if (onBlurInput) {\n onBlurInput(...parameters);\n }\n };\n\n const onKeyDown = (...parameters) => {\n const { onKeyDown: onKeyDownInput } = inputProps;\n const [e, inputValue, setInputValue] = parameters;\n switch (true) {\n case isPressedKeyPillboxAddKey(e): {\n if (!isPressedKeyTab(e)) {\n e.preventDefault();\n }\n\n if (inputValue) {\n addItem(inputValue);\n setInputValue('');\n }\n break;\n }\n case isPressedKeyBackspace(e) && !inputValue: {\n const [item] = items.slice(-1);\n if (item) {\n removeItem(item);\n }\n break;\n }\n default:\n break;\n }\n\n if (onKeyDownInput) {\n onKeyDownInput(...parameters);\n }\n };\n\n // KeyDown fallback for android chrome\n const onInput = (...parameters) => {\n const { onInput: onTextInput } = inputProps;\n const [e, inputValue, setInputValue] = parameters;\n const lastCharacter = e.nativeEvent.data && e.nativeEvent.data.slice(-1);\n if (lastCharacter && [' ', ','].indexOf(lastCharacter) > -1) {\n e.preventDefault();\n addItem(inputValue);\n setInputValue('');\n e.target.value = '';\n }\n\n if (onTextInput) {\n onTextInput(...parameters);\n }\n };\n\n const onPaste = (...parameters) => {\n const [e] = parameters;\n e.preventDefault();\n const pastedValue = e.clipboardData.getData('Text');\n const pillsToAdd = pastedValue.split(/\\s|,/).filter(isValidToAdd).map(generateItem);\n setItems([...items, ...pillsToAdd]);\n };\n\n const renderedPills = useMemo(() => items.map(item => (\n removeItem(item)}\n readOnly={readOnly || fixedValue.indexOf(item.value) > -1}\n />\n )), [items]);\n\n return (\n \n {renderedPills}\n {\n !readOnly && remainingCount > 0 ? (\n \n )\n : null\n }\n {showRemainingCount && maxCount !== Infinity && (\n \n {remainingCount}\n \n )}\n \n );\n});\n\nPillbox.propTypes = {\n pills: arrayOf(shape({\n id: string,\n text: string,\n isValid: bool\n })),\n isUniqueList: bool,\n inputProps: shape(TextInput.propTypes),\n PillRenderer: elementType,\n PillContainerRenderer: elementType,\n RemainingCountRenderer: elementType,\n onPillAdd: func,\n onPillRemove: func,\n onPillUpdate: func,\n onPillListChange: func,\n pillValidation: func,\n onKeyDown: func,\n maxCount: number,\n showRemainingCount: bool,\n showPillIcon: bool,\n readOnly: bool,\n fixedValue: arrayOf(string),\n setTextInputValue: func,\n getValidatedList: oneOfType([bool, func]),\n suggestionSelected: bool\n};\n\n/* eslint react/prop-types: \"off\" */\nPillbox.defaultProps = {\n pills: [],\n isUniqueList: true,\n inputProps: {},\n PillRenderer: ({ id, text, isValid }) =>
    {text}
    ,\n PillContainerRenderer: ({ children }) =>
    {children}
    ,\n RemainingCountRenderer: ({ children }) =>
    {children}
    ,\n onPillAdd: f => f,\n onPillRemove: f => f,\n onPillUpdate: f => f,\n onKeyDown: f => f,\n onPillListChange: f => f,\n pillValidation: () => true,\n maxCount: Infinity,\n showRemainingCount: false,\n showPillIcon: false,\n readOnly: false,\n fixedValue: [],\n setTextInputValue: f => f,\n getValidatedList: false,\n suggestionSelected: false\n};\n\nexport default Pillbox;\n","import React from 'react';\nimport { bool, func } from 'prop-types';\n\nimport EditablePill from '@jotforminc/editable-pill';\n\nconst Pill = ({\n isQuestion, preventEditablePill, readOnly, onQuestionClick, ...props\n}) => {\n const onClick = isQuestion ? onQuestionClick : undefined;\n\n return (\n \n );\n};\n\nPill.propTypes = {\n isQuestion: bool,\n preventEditablePill: bool,\n readOnly: bool,\n onQuestionClick: func,\n ...EditablePill.propTypes\n};\n\nPill.defaultProps = {\n isQuestion: false,\n preventEditablePill: false,\n readOnly: false,\n onQuestionClick: f => f,\n ...EditablePill.defaultProps\n};\n\nexport default Pill;\n","import { v4 as uuid } from 'uuid';\nimport { getQuestionByPlaceholder } from '@jotforminc/utils';\n\nexport const preparePillObjectWithCustomValue = (text, value) => ({\n id: uuid(),\n value,\n text,\n isValid: true,\n isQuestion: true\n});\n\nexport const prepareSelectedQuestions = (emailList, questions) => emailList\n .filter(({ value: email }) => /{.*?}/.test(email) && getQuestionByPlaceholder(email, questions))\n .map(({ value }) => value);\n\nexport const filterEmailQuestions = (questions = [], allowDuplicateQids = false) => {\n const arraySource = Array.isArray(questions) ? questions : Object.values(questions);\n const normalized = arraySource.reduce((acc, question) => {\n const {\n qid, type, validation, name\n } = question;\n const key = allowDuplicateQids ? name : qid;\n if (type === 'control_email' || (type === 'control_textbox' && validation === 'Email') || type === 'control_assignee') {\n return { [key]: question, ...acc };\n }\n if ((type === 'control_inline' || type === 'control_mixed') && Array.isArray(question.fields)) {\n const newFields = question.fields.filter(f => f.validation === 'Email' || f.type === 'email');\n if (newFields.length > 0) {\n return {\n [key]: {\n ...question,\n fields: [...newFields]\n },\n ...acc\n };\n }\n }\n return acc;\n }, {});\n return Object.values(normalized);\n};\n\nexport const findFormFromQuestionValue = (formArray, value) => {\n const rawValue = value.substring(1, value.length - 1);\n return formArray.find(({ questions }) => questions?.find(q => q.name === rawValue));\n};\n","import Styled from 'styled-components';\n\nexport const ScEmailInput = Styled.label`\n display: inline-block;\n width: 100%;\n font-size: 1em;\n border: 1px solid #ccc;\n border-radius: 2px;\n padding: .5em;\n cursor: text;\n\n .pill {\n color: #2c3345;\n height: 28px;\n border-radius: 15px;\n background-color: #ebedf3;\n display: inline-flex;\n align-items: center;\n padding: 0 .5em;\n margin: 0 .375em .25em 0;\n cursor: default;\n\n &.hasBackgroundColor:not(.isBright) {\n color: #fff;\n }\n\n &-remove {\n width: 12px;\n margin-left: .375em;\n cursor: pointer;\n order: 3;\n\n svg {\n display: block;\n fill: currentColor;\n }\n }\n }\n\n .emailInput-input {\n font-size: .875em;\n padding: .5em;\n border: 0;\n\n &:focus { outline: 0; }\n }\n`;\n\nexport const ScRemainingCount = Styled.div`\n position: absolute;\n bottom: 1.5px;\n right: 1px;\n color: #23283a;\n background-color: #fff;\n border-radius: 3px;\n padding: 0 8px;\n`;\n","import React, {\n useState, useRef, useEffect, useMemo, forwardRef, useImperativeHandle\n} from 'react';\nimport {\n arrayOf, string, shape, func, elementType, bool, oneOfType, object\n} from 'prop-types';\nimport isEqual from 'lodash/isEqual';\nimport uniqBy from 'lodash/uniqBy';\nimport { Pillbox, Popover, Hooks } from '@jotforminc/uikit';\nimport { t as translate } from '@jotforminc/translation';\nimport { useFuse } from '@jotforminc/hooks';\nimport {\n getPlaceholderListForDynamicQuestions,\n isBright,\n pillValidator,\n sanitizeEmailList,\n isTeamEmail\n} from '@jotforminc/utils';\nimport FormFields from '@jotforminc/form-fields-menu';\nimport UserList from '@jotforminc/user-list';\n\nimport DefaultPillRenderer from './components/Pill';\n\nimport {\n prepareSelectedQuestions,\n filterEmailQuestions,\n preparePillObjectWithCustomValue,\n findFormFromQuestionValue\n} from './utils';\n\nimport { ScEmailInput, ScRemainingCount } from './styles';\n\n// eslint-disable-next-line react/prop-types\nconst RemainingCountRenderer = ({ children }) => {\n const setRemainingCount = children <= 0 ? 0 : children;\n return (\n \n {translate('{number} left').replace('{number}', setRemainingCount)}\n \n );\n};\n\nconst EmailInput = forwardRef(({\n value, defaultValue, onChange, userList, dontFilterListByEmails, onType,\n questions: baseQuestions, addFormFields, dontFilterListByTextInput,\n PillRenderer, SuggestionRenderer, formTitle,\n inputProps, popoverProps, containerClassName,\n pillValidation, fuseOptions, pillIcon, showPillIcon,\n showSuggestionsOnFocus, suggestionProps, onClick, fieldsLabelText, stickToBottom,\n useMultipleForms, formArray, showProtectedTag, preventEditablePill, ...pillboxProps\n}, ref) => {\n const colorifyPills = emailObj => {\n if (useMultipleForms) {\n const currentValue = findFormFromQuestionValue(formArray, emailObj.value || '');\n const backgroundColor = currentValue?.color;\n const style = {\n backgroundColor\n };\n const bright = isBright(backgroundColor);\n return {\n ...emailObj,\n style,\n isBright: bright,\n formTitle: currentValue?.formTitle || 'Form'\n };\n }\n return emailObj;\n };\n const pillboxRef = useRef();\n const textInputRef = useRef();\n const formFieldsRef = useRef();\n const suggestionListRef = useRef();\n const emailContainerRef = useRef();\n const questions = useMemo(() => filterEmailQuestions(useMultipleForms ? formArray.flatMap(f => f.questions) : baseQuestions, useMultipleForms), [baseQuestions, formArray, useMultipleForms]);\n const formFieldsFormArray = useMemo(() => formArray.map(f => ({ ...f, questions: filterEmailQuestions(f.questions) })), [formArray]);\n const sanitizeEmailListWithQuestions = useMemo(() => emailList => sanitizeEmailList(emailList, questions), [questions]);\n\n const [isFocused, setFocused] = useState(false);\n const [textInputValue, setTextInputValue] = useState('');\n const [emails, setEmails] = useState(sanitizeEmailListWithQuestions(value || defaultValue, questions).map(colorifyPills));\n const [isSuggestionVisible, setSuggestionVisibility] = Hooks.useClickOutsideState(false, [textInputRef, suggestionListRef]);\n\n // user list item selection state\n const [suggestionSelected, setSuggestionSelected] = useState(false);\n\n // const [isSuggestionVisible, setSuggestionVisibility] = Hooks.useClickOutsideState(false, [textInputRef, suggestionListRef]);\n\n useImperativeHandle(ref, () => ({\n focusTextInput: () => {\n textInputRef.current?.focus();\n }\n }));\n\n const selectedQuestions = prepareSelectedQuestions(emails, questions);\n const userListFilteredByEmails = dontFilterListByEmails ? userList : userList.filter(({ email }) => emails.findIndex(({ text }) => text === email) === -1);\n const suggestedUsers = dontFilterListByTextInput\n ? userListFilteredByEmails\n : useFuse(userListFilteredByEmails, textInputValue, ['name', 'email'], fuseOptions).filter(user => user?.email !== 'enterprise-support@jotform.com');\n\n const handlePillListChange = newEmailList => {\n const emailsLength = emails.length;\n let emailList = newEmailList;\n let sanitizedEmailList = sanitizeEmailListWithQuestions(newEmailList, questions);\n if (!(pillboxProps && pillboxProps.isUniqueList === false)) {\n sanitizedEmailList = uniqBy(sanitizedEmailList, v => (v.value ? v.value : v.text)); // gets rid of duplicates\n if (sanitizedEmailList.length !== newEmailList.length) {\n emailList = uniqBy(newEmailList, v => (v.value ? v.value : v.text)); // removes the duplicate email element if there is any\n }\n }\n setTextInputValue('');\n onType('');\n setEmails(emailList);\n onChange(sanitizedEmailList);\n\n // stick to bottom for only adding a new pill\n if (stickToBottom && newEmailList.length > emailsLength && emailContainerRef.current) {\n if (emailContainerRef.current.scrollHeight > emailContainerRef.current.clientHeight) {\n emailContainerRef.current.scrollTo(0, emailContainerRef.current.scrollHeight);\n }\n }\n };\n\n const handleSuggestionClick = ({ id = '', name = '', email }) => {\n setTextInputValue('');\n onType('');\n setSuggestionSelected(true);\n if (isTeamEmail(email)) {\n pillboxRef.current.addTeamItem({ teamName: name, value: email });\n } else if (id) {\n pillboxRef.current.addItem({ id: id, email: email });\n } else {\n pillboxRef.current.addItem(email);\n }\n };\n\n const handleTextInputChange = ({ target: { value: inputValue } }) => {\n onType(inputValue);\n setTextInputValue(inputValue);\n };\n\n const handleSelectionChange = selectedPlaceholders => {\n if (pillboxProps.maxCount && emails.length === pillboxProps.maxCount) {\n return;\n }\n const allPlaceholders = getPlaceholderListForDynamicQuestions(questions);\n\n const questionPlaceholders = selectedPlaceholders.map(placeholder => {\n const found = allPlaceholders.find(p => p.placeholder === placeholder);\n if (!found) { return; }\n return preparePillObjectWithCustomValue(found.text, found.placeholder);\n }).filter(q => q);\n const emailListWithQuestionRemoved = emails.filter(({ value: email }) => !/{.*?}/.test(email));\n const newEmailList = uniqBy([...emailListWithQuestionRemoved, ...questionPlaceholders], p => (p.value ? p.value : p.text)).map(colorifyPills);\n setEmails(newEmailList);\n };\n\n const handleQuestionClick = () => formFieldsRef.current && formFieldsRef.current.setMenuVisibility(true);\n const pillRendererProps = {\n onQuestionClick: handleQuestionClick,\n showPillIcon,\n preventEditablePill,\n ...(pillIcon ? { pillIcon } : {})\n };\n const PillRendererWithQuestionClick = useMemo(() => props => , [PillRenderer, formFieldsRef.current, pillRendererProps]);\n\n useEffect(() => {\n setSuggestionVisibility(Boolean(textInputValue && suggestedUsers.length > 0));\n }, [textInputValue, suggestedUsers]);\n\n Hooks.useEffectIgnoreFirst(() => {\n if (value && !isEqual(value, emails)) {\n pillboxRef.current.setItems(sanitizeEmailListWithQuestions(value, questions));\n }\n }, [value]);\n\n const randomId = useMemo(() => `emailInput_${Math.random().toString(36).substring(2)}`, []);\n\n const handleSuggestionListBlurEvent = event => {\n if (event.relatedTarget !== textInputRef.current && !(suggestionListRef.current && suggestionListRef.current.contains(event.relatedTarget))) {\n pillboxRef.current.addItem(textInputValue);\n setTextInputValue('');\n }\n };\n\n const shouldShowSuggestions = showSuggestionsOnFocus ? (isSuggestionVisible || isFocused) && suggestedUsers.length > 0 : isSuggestionVisible;\n\n return (\n
    \n {addFormFields && questions && (\n \n )}\n \n {\n setFocused(true);\n if (inputProps.onFocus) inputProps.onFocus();\n },\n onBlur: () => {\n setFocused(false);\n if (inputProps.onBlur) inputProps.onBlur();\n },\n suggestionSelected: suggestionSelected\n }}\n setTextInputValue={setTextInputValue}\n {...pillboxProps}\n />\n {shouldShowSuggestions && (\n \n \n \n )}\n \n
    \n );\n});\n\nEmailInput.propTypes = {\n value: arrayOf(string),\n defaultValue: arrayOf(string),\n userList: arrayOf(shape({\n name: string,\n email: string,\n avatarUrl: string\n })),\n questions: oneOfType([arrayOf(shape({})), shape({})]),\n addFormFields: bool,\n inputProps: shape({\n onFocus: func,\n onBlur: func\n }),\n popoverProps: shape({}),\n PillRenderer: elementType,\n SuggestionRenderer: elementType,\n onChange: func,\n onType: func,\n formTitle: string,\n containerClassName: string,\n pillValidation: oneOfType([func, bool]),\n showPillIcon: bool,\n pillIcon: elementType,\n fuseOptions: object,\n showSuggestionsOnFocus: bool,\n suggestionProps: shape({}),\n onClick: func,\n fieldsLabelText: string,\n useMultipleForms: bool,\n formArray: arrayOf(shape({})),\n showProtectedTag: bool,\n dontFilterListByEmails: bool,\n dontFilterListByTextInput: bool,\n preventEditablePill: bool,\n stickToBottom: bool\n};\n\nEmailInput.defaultProps = {\n value: undefined,\n defaultValue: [],\n userList: [],\n questions: undefined,\n addFormFields: false,\n inputProps: {\n onFocus: f => f,\n onBlur: f => f\n },\n popoverProps: {},\n PillRenderer: DefaultPillRenderer,\n SuggestionRenderer: UserList,\n onChange: f => f,\n onType: f => f,\n formTitle: undefined,\n containerClassName: '',\n pillValidation: false,\n showPillIcon: false,\n pillIcon: undefined,\n fuseOptions: {},\n showSuggestionsOnFocus: false,\n suggestionProps: {},\n onClick: f => f,\n fieldsLabelText: 'Form Fields',\n useMultipleForms: false,\n formArray: [],\n showProtectedTag: false,\n dontFilterListByEmails: false,\n dontFilterListByTextInput: false,\n preventEditablePill: false,\n stickToBottom: false\n};\n\nexport default EmailInput;\n","import React from 'react';\nimport {\n string, node, shape, elementType\n} from 'prop-types';\n\nexport const isIE = () => {\n const ua = window.navigator.userAgent;\n const msie = ua.indexOf('MSIE '); // IE 10 or older\n const trident = ua.indexOf('Trident/'); // IE 11\n return (msie > 0 || trident > 0);\n};\n\nconst defaultStyle = {\n minWidth: '64px',\n backgroundColor: '#666',\n color: '#fff',\n borderRadius: '4px',\n fontSize: '14px',\n textAlign: 'center',\n padding: '10px 42px',\n display: 'inline-block',\n textDecoration: 'none',\n marginTop: '8px'\n};\n\nconst Button = ({\n style, children, icon, TagRenderer, ...props\n}) => {\n if (isIE()) {\n return (\n \n {icon && (\n \n )}\n {children}\n \n \n );\n }\n // IE doesnt spport fragments on renderToStaticMarkup\n return (\n <>\n \n {icon && (\n \n )}\n  \n {children}\n \n \n  \n \n );\n};\n\nButton.propTypes = {\n className: string,\n style: shape(),\n children: node,\n icon: string,\n TagRenderer: elementType\n};\n\nButton.defaultProps = {\n className: '',\n style: defaultStyle,\n children: null,\n icon: null,\n TagRenderer: props => \n};\n\nexport default Button;\n","\n \n\n","\n \n\n","import React, { useMemo } from 'react';\nimport {\n bool, elementType, func, string, oneOfType\n} from 'prop-types';\nimport Toggle from '@jotforminc/toggle';\nimport { Tooltip } from '@jotforminc/tooltip';\nimport { isYes } from '../../utils/helper';\nimport Password from '../Password/index';\n\nconst PasswordWithToggle = ({\n isHIPAA,\n isPasswordEnabled,\n initialPasswordValue,\n onToggleClick,\n onPasswordChange,\n onPasswordValidate,\n isToggleReadOnly,\n label,\n sublabel,\n disclaimer,\n clearInitialOnFocus,\n autoComplete,\n LabelRenderer,\n SublabelRenderer,\n ToggleWrapper,\n LabelWrapper,\n MainWrapper,\n PasswordWrapper\n}) => {\n const isHIPAABool = isYes(isHIPAA);\n\n const isPasswordRequired = useMemo(() => {\n const isEnterprise = window.JOTFORM_ENV === 'ENTERPRISE';\n const isHIPAAEnterprise = isEnterprise && isHIPAABool;\n if (isHIPAAEnterprise) {\n const { CUSTOMIZED_CONFIGS: { HIPAA_REQUIRE_PDF_PASSWORD: requirePasswordSetupOnHIPAA = true } = {} } = window;\n return !!requirePasswordSetupOnHIPAA;\n }\n return isHIPAABool;\n }, [isHIPAABool]);\n\n const isPasswordEnabledBool = useMemo(() => {\n return isPasswordRequired || isYes(isPasswordEnabled);\n }, [isPasswordRequired, isPasswordEnabled]);\n\n const handlePasswordValidate = resultObject => {\n const allValidationResults = Object.values(resultObject).reduce((prev, value = {}) => {\n return { ...prev, ...value };\n }, {});\n onPasswordValidate(allValidationResults);\n };\n\n return (\n \n \n \n {label && {label}}\n {sublabel && {sublabel}}\n \n
    \n \n {disclaimer && isPasswordRequired && (\n \n {disclaimer}\n \n )}\n
    \n
    \n {isPasswordEnabledBool && (\n \n \n \n )}\n
    \n );\n};\n\nPasswordWithToggle.propTypes = {\n isHIPAA: oneOfType([string, bool]),\n isPasswordEnabled: oneOfType([string, bool]),\n disclaimer: oneOfType([string, bool]),\n initialPasswordValue: string,\n onToggleClick: func,\n onPasswordChange: func,\n onPasswordValidate: func,\n isToggleReadOnly: bool,\n label: string,\n sublabel: string,\n clearInitialOnFocus: bool,\n autoComplete: string,\n LabelRenderer: elementType,\n SublabelRenderer: elementType,\n ToggleWrapper: elementType,\n LabelWrapper: elementType,\n MainWrapper: elementType,\n PasswordWrapper: elementType\n};\n\nPasswordWithToggle.defaultProps = {\n isHIPAA: '',\n isPasswordEnabled: '',\n disclaimer: '',\n initialPasswordValue: '',\n onToggleClick: f => f,\n onPasswordChange: f => f,\n onPasswordValidate: f => f,\n isToggleReadOnly: false,\n label: '',\n sublabel: '',\n clearInitialOnFocus: false,\n autoComplete: null,\n /* eslint-disable react/prop-types */\n LabelRenderer: ({ children }) =>
    {children}
    ,\n SublabelRenderer: ({ children }) =>
    {children}
    ,\n ToggleWrapper: ({ children }) =>
    {children}
    ,\n LabelWrapper: ({ children }) =>
    {children}
    ,\n MainWrapper: ({ children }) =>
    {children}
    ,\n PasswordWrapper: ({ children }) =>
    {children}
    \n};\n\nexport default PasswordWithToggle;\n","import React from 'react';\n\nconst TablistWrapper = props =>
    ;\n\nexport default TablistWrapper;\n","export const STATIC_FIELDS_WITH_PLACEHOLDER_FOR_SACL = [\n { text: 'Form Title', placeholder: '{form_title}' }\n];\n","import React from 'react';\nimport { shape, string, func } from 'prop-types';\nimport { t } from '@jotforminc/translation';\nimport { FileUpload as UiKitFileUpload, FileUploadComponents } from '@jotforminc/uikit';\n\nimport './styles/style.scss';\n\nconst {\n Form,\n Text,\n ErrorText,\n Thumbnail,\n FileInput,\n FilePreview,\n TextWrapper,\n DragContainer\n} = FileUploadComponents;\n\nconst Wrapper = ({ children, ...props }) =>
    {children}
    ; // eslint-disable-line\n\nconst FileUpload = ({ value, onChange, ...props }) => {\n const handleFileRemove = () => onChange({});\n return (\n \n );\n};\n\nFileUpload.propTypes = {\n value: shape({\n name: string,\n type: string,\n url: string\n }),\n onChange: func.isRequired\n};\n\nFileUpload.defaultProps = {\n value: {}\n};\n\nexport default FileUpload;\n","export const COMPONENT_NAMES = {\n AlertLabelWithIcon: 'FORMWIZARD_ALERT_LABEL_WITH_ICON',\n Button: 'FORMWIZARD_BUTTON',\n TextInput: 'FORMWIZARD_TEXTINPUT',\n InputWithList: 'FORMWIZARD_INPUTWITHLIST',\n RichTextEditor: 'FORMWIZARD_RICHTEXT',\n Toggle: 'FORMWIZARD_TOGGLE',\n FileUpload: 'FORMWIZARD_FILE_UPLOAD',\n SingleEmailInput: 'FORMWIZARD_SINGLE_EMAIL_INPUT',\n MultipleEmailInput: 'FORMWIZARD_MULTIPLE_EMAIL_INPUT',\n Dropdown: 'FORMWIZARD_DROPDOWN',\n EmailToggle: 'FORMWIZARD_EMAIL_TOGGLE',\n SelectList: 'FORMWIZARD_SELECT_LIST',\n Password: 'FORMWIZARD_PASSWORD',\n Checkbox: 'FORMWIZARD_CHECKBOX',\n Datepicker: 'FORMWIZARD_DATEPICKER',\n EmailDropdown: 'FORMWIZARD_EMAIL_DROPDOWN',\n PDFSelectList: 'FORMWIZARD_PDF_SELECT_LIST',\n ResettablePassword: 'FORMWIZARD_RESETTABLE_PASSWORD',\n MagnetCheckbox: 'FORMWIZARD_MAGNET_CHECKBOX',\n GroupedDropdown: 'FORMWIZARD_GROUPED_DROPDOWN'\n};\n","import React from 'react';\nimport { shape } from 'prop-types';\nimport { Button } from '@jotforminc/magnet';\n\nconst NewEmailWizardButton = ({ valueList, ...props }) => {\n return (\n \n );\n});\n\nButtonRenderer.propTypes = {\n option: shape()\n};\n\nButtonRenderer.defaultProps = {\n option: {\n text: '',\n value: ''\n }\n};\n\nconst NewEmailWizardDropdown = ({ onChange, ...properties }) => {\n const handleOptionSelect = ({ value }) => onChange(value);\n const { valueList: { securityProtocol = '' }, disabled = false } = properties;\n\n return (\n
    \n \n
    \n );\n};\n\nNewEmailWizardDropdown.propTypes = {\n onChange: func.isRequired\n};\n\nexport default NewEmailWizardDropdown;\n","import { bool, shape, string } from 'prop-types';\nimport React, { useState } from 'react';\n\nimport {\n FormControl, FormHelperText, InputText, Button\n} from '@jotforminc/magnet';\nimport { IconEyeSlashFilled, IconEyeFilled } from '@jotforminc/svg-icons';\nimport { Texts } from '@jotforminc/constants';\nimport { t } from '@jotforminc/translation';\n\nconst FormControlElement = ({\n id,\n placeholder,\n type,\n disabled,\n readOnly,\n ...props\n}) => {\n const { errorList } = props;\n const errorMessage = errorList[id];\n const isPasswordField = type && type === 'password';\n\n const [passwordMode, setPasswordMode] = useState('hide');\n\n const handlePasswordModeToggle = () => {\n setPasswordMode(passwordMode === 'hide' ? 'show' : 'hide');\n };\n\n return (\n <>\n \n \n {isPasswordField && (\n
    \n handlePasswordModeToggle()}\n />\n
    {passwordMode === 'hide' ? t(Texts.SHOW_PASSWORD) : t(Texts.HIDE_PASSWORD)}
    \n
    \n )}\n {errorMessage && (\n \n
    \n {t(errorMessage)}\n
    \n
    \n )}\n \n \n );\n};\n\nexport default FormControlElement;\n\nFormControlElement.propTypes = {\n id: string,\n placeholder: string,\n type: string,\n disabled: bool,\n readOnly: bool,\n errorList: shape({})\n};\n\nFormControlElement.defaultProps = {\n id: '',\n placeholder: '',\n type: '',\n disabled: false,\n readOnly: false,\n errorList: {}\n};\n","import React from 'react';\nimport Styled from 'styled-components';\nimport { Button } from '@jotforminc/magnet';\nimport { t } from '@jotforminc/translation';\nimport {\n bool, func, shape, string\n} from 'prop-types';\n\nconst ScRF = Styled.div`\n display: flex;\n justify-content: space-between;\n margin-top: 18px\n`;\n\nconst SmtpWizardFooter = ({\n testDisable,\n testEmail,\n saveEmail,\n confirmText,\n confirmationDisable,\n isTestButtonVisible,\n testEmailText,\n saveButtonColor,\n isLoading,\n testEmailMessage\n}) => {\n return (\n \n
    \n {isTestButtonVisible && (\n \n {t(testEmailText)}\n \n )}\n {(testEmailMessage.showMessage) &&
    {t(testEmailMessage.message)}
    }\n
    \n
    \n \n {t(confirmText)}\n \n
    \n
    \n );\n};\n\nSmtpWizardFooter.propTypes = {\n testDisable: bool,\n testEmail: func,\n saveEmail: func,\n confirmText: string,\n testEmailText: string,\n saveButtonColor: string,\n confirmationDisable: bool,\n isTestButtonVisible: bool,\n isLoading: bool,\n testEmailMessage: shape({\n showMessage: bool,\n messageType: string,\n message: string\n })\n};\n\nSmtpWizardFooter.defaultProps = {\n testDisable: false,\n testEmail: f => f,\n saveEmail: f => f,\n confirmText: 'Save Email',\n testEmailText: 'Test Email',\n saveButtonColor: 'success',\n confirmationDisable: false,\n isTestButtonVisible: false,\n isLoading: false,\n testEmailMessage: {\n showMessage: false,\n messageType: '',\n message: ''\n }\n};\n\nexport default SmtpWizardFooter;\n","import React, { useEffect } from 'react';\nimport { bool, shape, string } from 'prop-types';\nimport { useStateWithAutoReset } from '@jotforminc/hooks';\n\nconst StandAloneErrorWizard = ({ errorList, id, autoReset }) => {\n const baseErrorMessage = errorList[id];\n const [errorMessage, setErrorMessage] = useStateWithAutoReset(autoReset ? '' : baseErrorMessage, 50000);\n\n useEffect(() => {\n setErrorMessage(baseErrorMessage);\n }, [baseErrorMessage]);\n return errorMessage ?
    {errorMessage}
    : null; // Form wizard will show the error\n};\n\nStandAloneErrorWizard.propTypes = {\n errorList: shape({}),\n id: string.isRequired,\n autoReset: bool\n};\n\nStandAloneErrorWizard.defaultProps = {\n errorList: {},\n autoReset: false\n};\n\nexport default StandAloneErrorWizard;\n","import NewEmailWizardButton from '../components/Button';\nimport NewEmailWizardDropdown from '../components/Dropdown';\nimport FormControlElement from '../components/FormControlElement';\nimport NewEmailWizardPassword from '../components/Password';\nimport SmtpWizardFooter from '../components/SmtpWizardFooter';\nimport StandAloneErrorWizard from '../components/StandAloneEmailWizard';\n\nexport const SMTP_VALUE = 'smtp';\nexport const VERIFIED_VALUE = 'verified';\nexport const EMAIL_TYPE = 'emailType';\n\nexport const BUTTON_KEY = 'button';\nexport const DROPDOWN_KEY = 'dropdown';\nexport const PASSWORD_KEY = 'password';\nexport const FORM_CONTROL_ELEMENT = 'formControlElement';\n\nexport const STAND_ALONE_ERROR_KEY = 'standAloneError';\nexport const SMTP_WIZARD_FOOTER = 'smtpWizardFooter';\n\n// Server-wide Smtp Mail Status\nexport const DEFAULT = 'DEFAULT';\nexport const ENFORCED = 'ENFORCED';\nexport const DEFAULT_ENTEPRISE_SENDER_EMAIL = 'noreply@formresponse.com';\nexport const DEFAULT_SENDER_EMAIL = 'noreply@jotform.com';\nexport const JOTFORM_DEFAULT = 'JOTFORM_DEFAULT';\nexport const DELETING = 'Deleting...';\n\nexport const COMPONENT_TYPE_LIST = {\n [BUTTON_KEY]: NewEmailWizardButton,\n [DROPDOWN_KEY]: NewEmailWizardDropdown,\n [PASSWORD_KEY]: NewEmailWizardPassword,\n [STAND_ALONE_ERROR_KEY]: StandAloneErrorWizard,\n [SMTP_WIZARD_FOOTER]: SmtpWizardFooter,\n [FORM_CONTROL_ELEMENT]: FormControlElement\n};\n","import React, { useState } from 'react';\nimport { Input } from '@jotforminc/form-wizard';\nimport { IconEyeFilled, IconEyeSlashFilled } from '@jotforminc/svg-icons';\nimport { Texts } from '@jotforminc/constants';\nimport { t } from '@jotforminc/translation';\nimport { Button } from '@jotforminc/magnet';\n\nconst Password = props => {\n const [passwordMode, setPasswordMode] = useState('hide');\n const passwordInput = document.getElementById('password');\n\n const handlePasswordModeToggle = () => {\n setPasswordMode(passwordMode === 'hide' ? 'show' : 'hide');\n };\n\n return (\n <>\n \n
    \n handlePasswordModeToggle()}\n />\n
    {passwordMode === 'hide' ? t(Texts.SHOW_PASSWORD) : t(Texts.HIDE_PASSWORD)}
    \n
    \n \n );\n};\n\nexport default Password;\n","import React from 'react';\nimport { objectOf, elementType } from 'prop-types';\nimport { FormWizard } from '@jotforminc/form-wizard';\n\nimport { COMPONENT_TYPE_LIST } from '../utils/constants';\n\nconst Wizard = props => {\n const { componentTypeList = {}, ...rest } = props;\n return (\n \n );\n};\n\nWizard.propTypes = {\n componentTypeList: objectOf(elementType)\n};\n\nWizard.defaultProps = {\n componentTypeList: COMPONENT_TYPE_LIST\n};\n\nexport default Wizard;\n","/* eslint-disable no-undef */\nimport { t } from '@jotforminc/translation';\nimport QueryString from 'querystring';\nimport isEmpty from 'lodash/isEmpty';\nimport isObject from 'lodash/isObject';\n\nimport { RequestLayer, Interceptors } from '@jotforminc/request-layer';\nimport { isNewSMTPFlow } from '@jotforminc/enterprise-utils';\n\nconst layer = new RequestLayer('/API', {\n interceptorConfig: {\n customResponseInterceptors: [Interceptors.requestManagerResponseNormalizer],\n teamID: global.teamID\n }\n});\n// User Endpoints\nexport const userFetchSMTP = () => layer.get('smtpConfig/user/all');\nexport const userAddSMTP = data => layer.post('user/settings', new URLSearchParams({ [`smtp:${data.hostname}`]: JSON.stringify({ ...data, isValid: true }) }));\nexport const userEditSMTP = ({ currentEmailAddress = '', configId = '', ...rest }) => {\n const queryParams = {\n ...(currentEmailAddress && { currentEmailAddress: currentEmailAddress }),\n ...(configId && { configId: configId })\n };\n return layer.post(`smtpConfig/user/update?${QueryString.stringify(queryParams)}`, rest);\n};\nexport const userDeleteSMTP = ({ email }) => (layer.delete(`user/settings/${email}`));\nexport const userCloneSMTP = ({ data }) => layer.post('smtpConfig/user/cloneToTeam', data);\n\n// Team Endpoints\nexport const teamFetchSMTP = teamID => layer.get(`smtpConfig/team/${teamID}/all`);\nexport const teamAddSMTP = ({ teamId, ...rest }) => layer.post(`smtpConfig/team/${teamId}`, rest);\nexport const teamEditSMTP = ({ config_id: configID, teamId, ...rest }) => layer.put(`smtpConfig/team/${teamId}/${configID}`, rest);\nexport const teamCloneSMTP = ({ data, currentTeamID }) => layer.post(`smtpConfig/team/${currentTeamID}/clone`, data, {\n headers: {\n 'Content-Type': 'application/json',\n 'jf-team-id': currentTeamID\n }\n});\nexport const teamFetchUserTeams = () => layer.get('listings/team/user/me?addTeamPermissions=1&returnTeamProperties=1&addTeamSMTPSettings=1');\nexport const teamDeleteSMTP = data => {\n const { configId = '', teamID = '', ...rest } = data;\n const hasRestParameter = isObject(rest) && !isEmpty(rest);\n\n return layer.delete(`smtpConfig/team/${teamID}/${configId}${hasRestParameter ? `?${QueryString.stringify(rest)}` : ''}`, {\n headers: {\n 'jf-team-id': teamID\n }\n });\n};\n\n// Server Endpoints\nexport const serverFetchSMTP = () => {\n return layer.get('smtpConfig/server/all');\n};\n\nexport const serverAddSMTP = data => layer.post('smtpConfig/server', data);\nexport const serverEditSmtp = ({ config_id: configID, ...rest }) => layer.put(`smtpConfig/server/${configID}`, rest);\nexport const fetchSmtpConfigs = () => layer.get(`smtpConfig/server/${isNewSMTPFlow() ? 'settings' : 'primary'}`);\nexport const getServerWideSMTPConfig = configId => layer.get(`smtpConfig/server/${configId}?includeInUse=1`);\nexport const fetchSMTPSettings = () => layer.get('smtpConfig/server/settings'); // New Fetch SMTP Settings endpoint\nexport const updateSMTPSettings = payload => layer.put('smtpConfig/server/settings', payload); // New Fetch SMTP Settings endpoint\n// export const serverUpdatePrimarySmtp = (smtpId, type = { showDefaultEmail: false, showAddNewButton: false }) => layer.put('smtpConfig/server/primary', { data: { configId: smtpId, ...type } });\nexport const serverDeleteSMTP = data => {\n const { configId = '', ...rest } = data;\n const hasRestParameter = isObject(rest) && !isEmpty(rest);\n return layer.delete(`smtpConfig/server/${configId}${hasRestParameter ? `?${QueryString.stringify(rest)}` : ''}`);\n};\n\nexport const testSMTPAccount = data => {\n const formData = new FormData();\n Object.keys(data).forEach(elem => {\n formData.append(elem, data[elem]);\n });\n return layer.post('user/sendSMTPTestEmail', formData);\n};\n\nexport const sendVerificationCode = emailAddress => layer.get(`/server.php?action=sendVerificationCode&emailAddress=${emailAddress}`);\nexport const checkVerificationCode = (emailAddress, verificationCode) => layer.get(`/server.php?action=checkVerificationCode&emailAddress=${emailAddress}&verificationCode=${verificationCode}`);\n\nexport const getErrorMessage = (error, defaultErrorText = t('An error occurred')) => {\n const { response: { status, data: { error: errorContent = '' } = {} } = {} } = error;\n return (status && status === 400 && errorContent) ? errorContent : defaultErrorText;\n};\n// oAuth2 Endpoints\nexport const getEmailCredentials = (data, teamID = '') => {\n const formData = new FormData();\n Object.keys(data).forEach(elem => {\n formData.append(elem, data[elem]);\n });\n\n return layer.post('smtpConfig/getEmailCredentials', formData, teamID ? {\n headers: {\n 'jf-team-id': teamID\n }\n } : {});\n};\n\nexport const userAddGmailSmtp = data => {\n return layer.post('smtpConfig/user', data);\n};\n\nexport const userDeleteSmtpNewFlow = data => {\n const { emailData = '', ...rest } = data;\n const hasRestParameter = isObject(rest) && !isEmpty(rest);\n return layer.delete(`smtpConfig/user/${emailData}${hasRestParameter ? `?${QueryString.stringify(rest)}` : ''}`);\n};\n\nexport const addSmtp = (target = '', isOAuth2 = '') => {\n switch (target) {\n case 'user':\n return isOAuth2 === '1' ? userAddGmailSmtp : userAddSMTP;\n case 'team':\n return teamAddSMTP;\n case 'instance':\n return serverAddSMTP;\n default:\n }\n};\n\nexport const editSmtp = (target = '') => {\n switch (target) {\n case 'user':\n return userEditSMTP;\n case 'team':\n return teamEditSMTP;\n case 'instance':\n return serverEditSmtp;\n default:\n }\n};\n\nexport const fetchSmtp = (target = '') => {\n switch (target) {\n case 'user':\n return userFetchSMTP;\n case 'team':\n return teamFetchSMTP;\n case 'instance':\n return serverFetchSMTP;\n default:\n }\n};\n\nexport const deleteSmtp = (target = '') => {\n switch (target) {\n case 'user':\n if (isNewSMTPFlow()) {\n return userDeleteSmtpNewFlow;\n }\n return userDeleteSMTP;\n case 'team':\n return teamDeleteSMTP;\n case 'instance':\n return serverDeleteSMTP;\n default:\n }\n};\n\nexport const cloneSmtp = (target = '') => {\n switch (target) {\n case 'user':\n return userCloneSMTP;\n case 'team':\n return teamCloneSMTP;\n default:\n }\n};\n","import React from 'react';\nimport { isEmpty } from '@jotforminc/utils';\n\nimport Wizard from '../../Wizard';\n\nimport { BUTTON_KEY } from '../../../utils/constants';\nimport { checkVerificationCode, getErrorMessage } from '../../../utils/api';\n\nconst CHECK_EMAIL_ELEMENT_LIST = {\n verificationCode: {\n labelProps: { label: 'Verification Code' },\n componentProps: { placeholder: 'Verification Code', isErrored: value => isEmpty(value) && 'Invalid verification code' }\n },\n addEmail: {\n type: BUTTON_KEY,\n componentProps: ({\n onChange,\n valueList: { emailAddress, verificationCode },\n errorList,\n setErrorList\n }) => {\n const disabled = isEmpty(verificationCode);\n const onClick = () => {\n checkVerificationCode(emailAddress, verificationCode)\n .then(() => onChange(`verified:${emailAddress}`))\n .catch(e => {\n setErrorList({\n ...errorList,\n verificationCode: getErrorMessage(e)\n });\n return onChange(false);\n });\n };\n\n return {\n disabled,\n onClick,\n children: 'Add',\n colorStyle: 'secondary',\n variant: 'outline'\n };\n }\n }\n};\n\nconst CheckEmailWizard = props => (\n \n);\n\nexport default CheckEmailWizard;\n","import React from 'react';\nimport { isEmpty, isEmail } from '@jotforminc/utils';\nimport AlertLabelWithIcon from '@jotforminc/alert-label';\nimport { AlertLabelTypes } from '@jotforminc/constants';\n\nimport CheckEmailWizard from '../CheckEmail';\nimport Wizard from '../../Wizard';\n\nimport { BUTTON_KEY } from '../../../utils/constants';\nimport { getErrorMessage, sendVerificationCode } from '../../../utils/api';\n\nconst isVerificationCodeSent = valueList => valueList.sendVerificationCode;\n\nconst VERIFIED_ELEMENT_LIST = {\n emailAddress: {\n labelProps: { label: 'Email Address' },\n componentProps: { placeholder: 'john@smith.com', isErrored: value => !isEmail(value) && 'Invalid Email Address' }\n },\n sendVerificationCode: {\n type: BUTTON_KEY,\n componentProps: ({\n onChange, valueList: { emailAddress }, errorList, setErrorList\n }) => {\n const { emailAddress: isEmailErrored } = errorList;\n const disabled = Boolean(isEmpty(emailAddress) || isEmailErrored || !isEmail(emailAddress));\n const onClick = () => {\n sendVerificationCode(emailAddress)\n .then(() => onChange(true))\n .catch(e => {\n setErrorList({\n ...errorList,\n emailAddress: getErrorMessage(e)\n });\n return onChange(false);\n });\n };\n\n return {\n disabled,\n onClick,\n children: 'SEND VERIFICATION CODE',\n fullWidth: true\n };\n }\n },\n checkEmailWizard: {\n condition: isVerificationCodeSent,\n labelProps: {\n label: 'Check your email',\n description: 'We have sent you a verification code, please verify your email address.'\n },\n LabelRenderer: props => ,\n ComponentRenderer: CheckEmailWizard\n }\n};\n\nconst VerificationWizard = props => (\n \n);\n\nexport default VerificationWizard;\n","export const SMTP_SETUP_MODAL_ARIA_LABEL = 'SMTP Setup Modal';\nexport const SETUP_MODAL_TITLE = 'Sender Email (SMTP) Configuration';\nexport const SETUP_MODAL_SUB_TITLE = 'Select your SMTP provider to create a new SMTP address';\nexport const SETUP_MODAL_OAUTH_GOOGLE_TITLE = 'Google SMTP Configuration';\nexport const SETUP_MODAL_OAUTH_MICROSOFT_TITLE = 'Microsoft SMTP Configuration';\nexport const HOW_TO_CONFIGURE = 'Need help configuring your SMTP settings?';\nexport const LEARN_MORE = 'Learn more';\nexport const CONTINUE = 'Continue';\nexport const SAVE = 'Save';\nexport const SAVING = 'Saving..';\nexport const SMTP_ACCOUNT_USERNAME = 'SMTP Account Username';\nexport const SMTP_ACCOUNT_USERNAME_PLACEHOLDER = 'Use the SMTP email account';\nexport const SMTP_ACCOUNT_PASSWORD = 'SMTP Account Password';\nexport const SMTP_ACCOUNT_PASSWORD_PLACEHOLDER = 'Use the SMTP email account\\'s password';\nexport const HOST_NAME = 'Host Name';\nexport const HOST_NAME_PLACEHOLDER = 'smtp.example.com';\nexport const EMAIL_ADDRESS = 'Email Address';\nexport const EMAIL_ADDRESS_PLACEHOLDER = 'name@example.com';\nexport const SECURITY_PROTOCOL = 'Security Protocol';\nexport const SECURITY_PROTOCOL_PLACEHOLDER = 'Choose your security protocol';\nexport const PORT = 'Port';\nexport const PORT_PLACEHOLDER = '465';\nexport const SEND_TEST_EMAIL = 'Send Test Email';\nexport const SENDING = 'Sending..';\nexport const TEST_EMAIL_SENT = 'Test email sent to [1[{userEmail}]]';\nexport const TEST_EMAIL_FAILED = 'Test email failed to send';\nexport const GOOGLE = 'Google';\nexport const MICROSOFT = 'Microsoft';\nexport const CUSTOM = 'Custom';\nexport const DELETE_SENDER_EMAIL_TITLE = 'Delete sender email?';\nexport const DELETE_SENDER_EMAIL_DESC = 'Are you sure you want to delete the selected sender email? Once you delete it, [1[{userEmail}]] will be set as the default sender email.';\nexport const NEW_DELETE_SENDER_EMAIL_DESC = 'Are you sure you want to delete the [1[{userEmail}]] sender email?';\nexport const YES_DELETE = 'Delete Now';\nexport const CANCEL = 'Cancel';\nexport const COPY_MODAL_TITLE = 'Copy to Team';\nexport const PROCEED = 'Proceed';\nexport const COPY_MODAL_DESC = 'Please select the team(s) you would like to copy the sender email information to.';\nexport const COPY_MODAL_ERROR = 'The following team(s) already have this sender email address set.';\nexport const COPY_MODAL_ARIA_LABEL = 'This modal allows you to copy your sender emails to teams that you are allowed to.';\nexport const LOADING = 'Loading...';\nexport const NO_KEEP = 'No, Keep';\nexport const REPLACED_EMAILS_SECTION_TITLE = 'Select new email';\n","import { isEmpty, isEmail } from '@jotforminc/utils';\nimport { t } from '@jotforminc/translation';\nimport { useState } from 'react';\nimport {\n SMTP_VALUE, VERIFIED_VALUE, EMAIL_TYPE, DROPDOWN_KEY, PASSWORD_KEY, STAND_ALONE_ERROR_KEY, SMTP_WIZARD_FOOTER, BUTTON_KEY,\n FORM_CONTROL_ELEMENT\n\n} from './constants';\nimport {\n addSmtp, editSmtp, testSMTPAccount,\n userAddSMTP\n} from './api';\nimport {\n EMAIL_ADDRESS, EMAIL_ADDRESS_PLACEHOLDER,\n HOST_NAME, HOST_NAME_PLACEHOLDER, PORT,\n SECURITY_PROTOCOL, SECURITY_PROTOCOL_PLACEHOLDER,\n SMTP_ACCOUNT_PASSWORD, SMTP_ACCOUNT_PASSWORD_PLACEHOLDER,\n SMTP_ACCOUNT_USERNAME, SMTP_ACCOUNT_USERNAME_PLACEHOLDER\n} from '../components/SmtpSetupModal/constants';\n\nexport const getObjectValuesByKeyList = (obj, keyList) => Object.entries(obj)\n .reduce((prev, [key, value]) => {\n return keyList.includes(key) ? { ...prev, [key]: value } : { ...prev };\n }, {});\nexport const isSMTP = valueList => valueList[EMAIL_TYPE] === SMTP_VALUE;\nexport const isVerified = valueList => valueList[EMAIL_TYPE] === VERIFIED_VALUE;\n\nexport const isValidHostName = value => {\n const hostNameRegex = new RegExp('^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9])$'); // eslint-disable-line no-useless-escape\n return hostNameRegex.test(value);\n};\n\nexport const isValidPort = value => {\n const portRegex = new RegExp('^([0-9]{1,4}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$');\n return portRegex.test(value);\n};\n\nexport const generatePayload = ({\n smtpType, smtpValues, smtpValues: { protocol = 'smtp', config_id: inlineID }, currentEmailAddress = '', configId = '', teamId = '', isOAuth = false\n}) => {\n switch (smtpType) {\n case 'user':\n return {\n ...smtpValues,\n ...(currentEmailAddress && !isOAuth && { currentEmailAddress: `${protocol}:${currentEmailAddress}` }),\n ...(configId && { configId: configId }),\n ...(teamId && { teamId: teamId })\n };\n default:\n return { ...smtpValues, config_id: inlineID || configId, teamId: teamId };\n }\n};\n\nexport const generateSMTPWizardList = ({\n smtpType, callback, closeModal, currentTeamID, isEditMode, fetchSmtpList, configId, currentSMTPCredentials\n}) => {\n return {\n emailAddress: {\n labelProps: { label: t('Email Address') },\n componentProps: { placeholder: 'john@smith.com', isErrored: value => !isEmail(value) && t('Invalid Email Address') }\n },\n hostname: {\n labelProps: { label: t('Host Name') },\n componentProps: { placeholder: 'smtp.smith.com', isErrored: value => !isValidHostName(value) && t('Invalid Host Name') }\n },\n port: {\n labelProps: { label: t('Port') },\n componentProps: { placeholder: '25', isErrored: value => !isValidPort(value) && t('Invalid Port') }\n },\n username: {\n labelProps: { label: t('Username') },\n componentProps: {\n placeholder: 'john', isErrored: value => isEmpty(value) && t('Invalid Username'), autoComplete: 'off', type: 'text'\n }\n },\n password: {\n type: PASSWORD_KEY,\n labelProps: { label: t('Password') },\n componentProps: {\n type: 'password', placeholder: '#supersecretpassword', isErrored: value => isEmpty(value) && t('Invalid Password')\n }\n },\n securityProtocol: {\n type: DROPDOWN_KEY,\n labelProps: { label: t('Security Protocol') },\n componentProps: {\n placeholder: t(SECURITY_PROTOCOL_PLACEHOLDER),\n options: [\n { text: t(SECURITY_PROTOCOL_PLACEHOLDER), value: '' },\n { text: 'TLS', value: 'TLS' },\n { text: 'SSL', value: 'SSL' }\n ]\n }\n },\n addSMTPFail: { type: STAND_ALONE_ERROR_KEY, noLabel: true, componentProps: { autoReset: true } },\n testSMTPEmail: {\n type: SMTP_WIZARD_FOOTER,\n noLabel: true,\n componentProps: ({\n onChange, errorList, valueList, setErrorList\n }) => {\n const smtpInfoKeys = ['emailAddress', 'hostname', 'port', 'username', 'password', 'securityProtocol'];\n const smtpValues = getObjectValuesByKeyList(valueList, smtpInfoKeys);\n const smtpErrors = getObjectValuesByKeyList(errorList, smtpInfoKeys);\n const isEmptyValueExist = smtpInfoKeys.filter(key => !smtpValues[key]).length > 0;\n const isErroredValueExist = Object.values(smtpErrors).findIndex(value => value) > -1;\n const disabled = Boolean(isEmptyValueExist || isErroredValueExist);\n const [testEmailMessage, setTestEmailMessage] = useState({ showMessage: false, messageType: 'error', message: 'An error occured' });\n const [isLoading, setLoading] = useState(false);\n const testEmail = () => {\n setLoading(true);\n setErrorList({\n ...errorList,\n addSMTPFail: ''\n }); // Clear Error\n setTestEmailMessage({ showMessage: true, messageType: 'info', message: 'Test is running' });\n testSMTPAccount(smtpValues).then(() => {\n setTestEmailMessage({ showMessage: true, messageType: 'success', message: 'Successful' });\n setLoading(false);\n })\n .catch(e => {\n setErrorList({\n ...errorList,\n addSMTPFail: e?.data?.message || t('An error occurred')\n });\n setTestEmailMessage({ showMessage: true, messageType: 'error', message: 'Test Failed' });\n setLoading(false);\n return onChange(false);\n });\n };\n const saveEmail = () => {\n setErrorList({\n ...errorList,\n addSMTPFail: ''\n }); // Clear error\n setTestEmailMessage({ ...testEmailMessage, showMessage: false });\n setLoading(true);\n if (isEditMode) {\n editSmtp(smtpType)(generatePayload({\n smtpType, smtpValues, currentEmailAddress: currentSMTPCredentials?.emailAddress, configId, teamId: currentTeamID\n })).then(() => {\n fetchSmtpList();\n closeModal();\n setLoading(false);\n }).catch(({ data: { message } = {} }) => {\n setTestEmailMessage({ showMessage: true, messageType: 'error', message: message });\n setLoading(false);\n return onChange(false);\n });\n } else {\n addSmtp(smtpType)({ ...smtpValues, teamId: currentTeamID }).then(() => {\n onChange(`smtp:${smtpValues.emailAddress}`);\n fetchSmtpList();\n setLoading(false);\n callback?.();\n closeModal();\n }).catch(e => {\n setTestEmailMessage({ showMessage: true, messageType: 'error', message: e?.data?.message });\n setLoading(false);\n return onChange(false);\n });\n }\n };\n\n return {\n testDisable: disabled,\n testEmail,\n saveEmail,\n confirmationDisable: disabled,\n isTestButtonVisible: smtpValues.protocol !== 'mandrill',\n isLoading,\n testEmailMessage\n };\n }\n }\n };\n};\n\nexport const generateUserSMTPWizardList = handleAddNewSmtp => {\n return {\n emailAddress: {\n labelProps: { label: t('Email Address') },\n componentProps: { placeholder: 'john@smith.com', isErrored: value => !isEmail(value) && t('Invalid Email Address') }\n },\n hostname: {\n labelProps: { label: t('Host Name') },\n componentProps: { placeholder: 'smtp.smith.com', isErrored: value => !isValidHostName(value) && t('Invalid Host Name') }\n },\n port: {\n labelProps: { label: t('Port') },\n componentProps: { placeholder: '25', isErrored: value => !isValidPort(value) && t('Invalid Port') }\n },\n username: {\n labelProps: { label: t('Username') },\n componentProps: {\n placeholder: 'john', isErrored: value => isEmpty(value) && t('Invalid Username'), autoComplete: 'off', type: 'text'\n }\n },\n password: {\n type: PASSWORD_KEY,\n labelProps: { label: t('Password') },\n componentProps: { type: 'password', placeholder: '#supersecretpassword', isErrored: value => isEmpty(value) && t('Invalid Password') }\n },\n securityProtocol: {\n type: DROPDOWN_KEY,\n labelProps: { label: t('Security Protocol') },\n componentProps: {\n defaultValue: 'tls',\n options: [\n { text: 'TLS', value: 'tls' },\n { text: 'SSL', value: 'ssl' }\n ]\n }\n },\n addSMTPFail: { type: STAND_ALONE_ERROR_KEY, noLabel: true, componentProps: { autoReset: true } },\n addSmtpAccount: {\n type: BUTTON_KEY,\n noLabel: true,\n componentProps: ({\n onChange, errorList, valueList, setErrorList\n }) => {\n const smtpInfoKeys = ['emailAddress', 'hostname', 'port', 'username', 'password', 'securityProtocol'];\n const smtpValues = getObjectValuesByKeyList(valueList, smtpInfoKeys);\n const smtpErrors = getObjectValuesByKeyList(errorList, smtpInfoKeys);\n const isEmptyValueExist = Object.values(smtpValues).findIndex(isEmpty) > -1;\n const isErroredValueExist = Object.values(smtpErrors).findIndex(value => value) > -1;\n const disabled = Boolean(isEmptyValueExist || isErroredValueExist);\n if (!smtpValues.securityProtocol || smtpValues.securityProtocol === '') {\n smtpValues.securityProtocol = 'tls';\n }\n const onClick = () => {\n setErrorList({\n ...errorList,\n addSMTPFail: ''\n }); // Clear error\n userAddSMTP(smtpValues)\n .then(() => {\n handleAddNewSmtp(`smtp:${smtpValues.emailAddress}`);\n onChange(`smtp:${smtpValues.emailAddress}`);\n })\n .catch(e => {\n setErrorList({\n ...errorList,\n addSMTPFail: e?.data?.message || t('An error occurred')\n });\n return onChange(false);\n });\n };\n return {\n onClick,\n disabled,\n children: t('ADD EMAIL'),\n fullWidth: true\n };\n }\n }\n };\n};\n\nexport const NEW_SMTP_SETUP_WIZARD_ELEMENT_LIST = {\n username: {\n type: FORM_CONTROL_ELEMENT,\n labelProps: { label: t(SMTP_ACCOUNT_USERNAME), className: 'formWizard-wrapper customSetupWizard' },\n componentProps: { id: 'username', placeholder: t(SMTP_ACCOUNT_USERNAME_PLACEHOLDER), isErrored: value => isEmpty(value) && t('Invalid Username') }\n },\n password: {\n type: FORM_CONTROL_ELEMENT,\n labelProps: { label: t(SMTP_ACCOUNT_PASSWORD), className: 'formWizard-wrapper customSetupWizard' },\n componentProps: {\n id: 'password', type: 'password', placeholder: t(SMTP_ACCOUNT_PASSWORD_PLACEHOLDER), isErrored: value => isEmpty(value) && t('Invalid Password')\n }\n },\n hostname: {\n type: FORM_CONTROL_ELEMENT,\n labelProps: { label: t(HOST_NAME), className: 'formWizard-wrapper customSetupWizard' },\n componentProps: { id: 'hostname', placeholder: t(HOST_NAME_PLACEHOLDER), isErrored: value => !isValidHostName(value) && t('Invalid Host Name') }\n },\n emailAddress: {\n type: FORM_CONTROL_ELEMENT,\n labelProps: { label: t(EMAIL_ADDRESS), className: 'formWizard-wrapper customSetupWizard' },\n componentProps: { id: 'emailAddress', placeholder: t(EMAIL_ADDRESS_PLACEHOLDER), isErrored: value => !isEmail(value) && t('Invalid Email Address') }\n },\n securityProtocol: {\n type: DROPDOWN_KEY,\n labelProps: { label: t(SECURITY_PROTOCOL) },\n componentProps: {\n placeholder: t(SECURITY_PROTOCOL),\n options: [\n { text: t(SECURITY_PROTOCOL_PLACEHOLDER), value: '' },\n { text: 'TLS', value: 'TLS' },\n { text: 'SSL', value: 'SSL' }\n ]\n }\n },\n port: {\n type: FORM_CONTROL_ELEMENT,\n labelProps: { label: t(PORT), className: 'formWizard-wrapper customSetupWizard' },\n componentProps: { id: 'port', placeholder: '465', isErrored: value => !isValidPort(value) && t('Invalid Port') }\n }\n};\n\nexport const OAUTH_GOOGLE_SMTP_ELEMENT_LIST = {\n emailAddress: {\n type: FORM_CONTROL_ELEMENT,\n labelProps: { label: t(EMAIL_ADDRESS), className: 'formWizard-wrapper customSetupWizard' },\n componentProps: {\n id: 'emailAddress', placeholder: t(EMAIL_ADDRESS_PLACEHOLDER), isErrored: value => !isEmail(value) && t('Invalid Email Address'), disabled: true, readOnly: true\n }\n },\n securityProtocol: {\n type: DROPDOWN_KEY,\n labelProps: { label: t(SECURITY_PROTOCOL), className: 'formWizard-wrapper customSetupWizard' },\n componentProps: ({ valueList, setValueList }) => {\n const onChange = ({ target: { value } }) => {\n if (value === 'TLS') setValueList({ ...valueList, port: '587' });\n if (value === 'SSL') setValueList({ ...valueList, port: '465' });\n };\n return {\n placeholder: t(SECURITY_PROTOCOL),\n options: [\n { text: t(SECURITY_PROTOCOL_PLACEHOLDER), value: '' },\n { text: 'TLS', value: 'TLS' },\n { text: 'SSL', value: 'SSL' }\n ],\n onChange,\n disabled: true\n };\n }\n },\n port: {\n type: FORM_CONTROL_ELEMENT,\n labelProps: { label: t(PORT), className: 'formWizard-wrapper customSetupWizard' },\n componentProps: {\n id: 'port', placeholder: '465', isErrored: value => !isValidPort(value) && t('Invalid Port'), disabled: true, readOnly: true\n }\n }\n};\n\nexport const getRootElement = rootId => {\n let root = document.querySelector(`#${rootId}`);\n\n if (root) {\n return root;\n }\n\n root = document.createElement('div');\n root.id = rootId;\n document.body.appendChild(root);\n return root;\n};\n","import React from 'react';\nimport { func, shape } from 'prop-types';\nimport Wizard from '../../Wizard';\nimport { generateUserSMTPWizardList } from '../../../utils/utils';\nimport '../../../styles/smtpList.scss';\n\nconst UserSmtpWizard = ({ handleAddNewSmtp, ...props }) => {\n const ELEMENT_LIST = generateUserSMTPWizardList(handleAddNewSmtp);\n\n return (\n \n );\n};\n\nUserSmtpWizard.propTypes = {\n valueList: shape({})\n};\nUserSmtpWizard.defaultProps = {\n valueList: undefined // Necessary for Wizard>FormWizard to initialize w/default values\n};\n\nexport default UserSmtpWizard;\n\nUserSmtpWizard.propTypes = {\n handleAddNewSmtp: func\n};\n\nUserSmtpWizard.defaultProps = {\n handleAddNewSmtp: f => f\n};\n","import React from 'react';\nimport { func } from 'prop-types';\nimport { t } from '@jotforminc/translation';\nimport AlertLabelWithIcon from '@jotforminc/alert-label';\nimport { AlertLabelTypes } from '@jotforminc/constants';\n\nimport Wizard from './Wizard';\nimport VerificationWizard from './wizards/Verification';\n\nimport { isSMTP, isVerified } from '../utils/utils';\nimport {\n SMTP_VALUE, VERIFIED_VALUE, EMAIL_TYPE, DROPDOWN_KEY\n} from '../utils/constants';\nimport UserSmtpWizard from './wizards/Smtp/UserSmtpWizard';\nimport '../styles/smtpList.scss';\n\nconst rootElementList = {\n [EMAIL_TYPE]: {\n type: DROPDOWN_KEY,\n labelProps: { label: t('Email Type') },\n componentProps: {\n initialValue: '',\n options: [\n { text: t('Please Select'), value: '' },\n { text: 'SMTP', value: SMTP_VALUE }\n // { text: 'Verified', value: VERIFIED_VALUE }\n ],\n ignoreBlurRequirementOnValidation: true,\n validateOnMount: false,\n isErrored: value => {\n if (value === '') {\n return t('Email type is required.');\n }\n return false;\n }\n }\n },\n [SMTP_VALUE]: {\n condition: isSMTP,\n labelProps: {\n label: t('SMTP Details'),\n description: t('SMTP ( Simple Mail Transfer Protocol ) enables you to send your email through the specified server setting.')\n },\n ComponentRenderer: UserSmtpWizard\n },\n [VERIFIED_VALUE]: {\n condition: isVerified,\n labelProps: {\n label: t('Verified Email Details'),\n description: t('A confirmation email will be sent to the added email address. Please verify your email to help us ensure that your email address has been entered correctly.')\n },\n LabelRenderer: props => ,\n ComponentRenderer: VerificationWizard\n }\n};\n\nconst NewEmailWizard = ({ onAddEmail, handleAddNewSmtp, ...props }) => {\n const handleChange = (valueList, { key, value }) => {\n if (['addSmtpAccount', 'addEmail'].indexOf(key) === -1 || !value) {\n return;\n }\n\n const emailAddress = key === 'addSmtpAccount'\n ? valueList[SMTP_VALUE][key]\n : valueList[VERIFIED_VALUE].checkEmailWizard[key];\n onAddEmail(emailAddress);\n };\n\n const updatedRootElementList = { ...rootElementList, [SMTP_VALUE]: { ...rootElementList[SMTP_VALUE], componentProps: { handleAddNewSmtp: handleAddNewSmtp } } };\n return (\n \n );\n};\n\nNewEmailWizard.propTypes = {\n onAddEmail: func,\n handleAddNewSmtp: func\n};\n\nNewEmailWizard.defaultProps = {\n onAddEmail: f => f,\n handleAddNewSmtp: f => f\n};\n\nexport default NewEmailWizard;\n","import React, { useState } from 'react';\nimport {\n string, func, arrayOf, shape, bool\n} from 'prop-types';\nimport RichTextEditor from '@jotforminc/rich-text-editor';\n\nconst EmailEditorManager = ({\n value,\n onChange,\n questions,\n modalProperties,\n addFormFields,\n config,\n onBlur,\n onEditorInit,\n extraEditorButtons,\n staticFields,\n popoverButtons,\n customActionButtons,\n onCustomButtonSettingClick,\n selectedRow,\n editorInitCallbacks\n}) => {\n const [editor, setEditor] = useState(false);\n\n const handleEditorInit = (e, tempEditor) => {\n setEditor(tempEditor);\n onEditorInit(tempEditor);\n };\n\n const handleEditorBlur = (e, ...params) => {\n e.target.value = e.target.getBody().textContent;\n onBlur(e, ...params);\n };\n\n const handleEditorChange = (e, _editor) => {\n if (editor) {\n return onChange(editor.getContent());\n }\n // Somehow `editor` remains false even `setEditor` invoked with the inited editor..\n // Is useDebouncedCallback is necessary here as it's used in worfkflow/RichTextEditor??\n if (_editor && _editor.getContent) {\n return onChange(_editor.getContent());\n }\n };\n\n return (\n \n );\n};\n\nEmailEditorManager.propTypes = {\n onChange: func.isRequired,\n value: string,\n questions: arrayOf(shape({})),\n modalProperties: shape({}),\n addFormFields: bool,\n onBlur: func,\n onEditorInit: func,\n extraEditorButtons: arrayOf(shape({})),\n config: shape({}),\n staticFields: arrayOf(shape({ text: string, placeholder: string })),\n popoverButtons: arrayOf(shape({})),\n customActionButtons: arrayOf(string),\n onCustomButtonSettingClick: func,\n selectedRow: shape({}),\n editorInitCallbacks: arrayOf(func)\n};\n\nEmailEditorManager.defaultProps = {\n value: '',\n questions: [],\n modalProperties: {},\n addFormFields: false,\n onBlur: () => {},\n onEditorInit: () => {},\n extraEditorButtons: [],\n config: {},\n staticFields: undefined,\n popoverButtons: [],\n customActionButtons: [],\n onCustomButtonSettingClick: () => {},\n selectedRow: {},\n editorInitCallbacks: []\n};\nexport default EmailEditorManager;\n","import React from 'react';\nimport {\n bool, func, oneOfType, string\n} from 'prop-types';\nimport LibToggle from '@jotforminc/toggle';\n\nconst isYes = val => ((typeof val === 'string') ? val === 'Yes' : !!val);\n\nconst Toggle = ({\n value, onChange, ...props\n}) => {\n const isSelected = isYes(value);\n const handleClick = () => onChange(!isSelected);\n\n return (\n <>\n \n \n );\n};\n\nToggle.propTypes = {\n value: oneOfType([string, bool]),\n onChange: func\n};\n\nToggle.defaultProps = {\n value: false,\n onChange: f => f\n};\n\nexport default Toggle;\n","import React, { forwardRef } from 'react';\nimport { func } from 'prop-types';\nimport { Dropdown as UiKitDropdown } from '@jotforminc/uikit';\n\nconst ContainerRenderer = props =>
      ;\nconst OptionContainerRenderer = props =>
    • ;\nconst ButtonRenderer = forwardRef(({ option: { text, value }, ...props }, ref) => { // eslint-disable-line\n return (\n \n {text}\n \n );\n});\n\nconst Dropdown = ({ onChange, ...properties }) => {\n const handleOptionSelect = ({ value }) => onChange(value);\n\n return (\n
      \n \n
      \n );\n};\n\nDropdown.propTypes = {\n onChange: func.isRequired\n};\n\nexport default Dropdown;\n","import { t } from '@jotforminc/translation';\nimport { node, string } from 'prop-types';\nimport React from 'react';\nimport { useIsMobile } from '@jotforminc/hooks';\n\nconst CustomBadge = ({\n text,\n Icon,\n iconColor,\n backgrounColor,\n textColor\n}) => {\n const isMobile = useIsMobile(1040);\n\n return (\n
      \n {Icon && }\n {!isMobile && {t(text)}}\n
      \n );\n};\n\nexport default CustomBadge;\n\nCustomBadge.propTypes = {\n text: string,\n Icon: node,\n iconColor: string,\n backgrounColor: string,\n textColor: string\n};\n\nCustomBadge.defaultProps = {\n text: '',\n Icon: null,\n iconColor: '',\n backgrounColor: '',\n textColor: ''\n};\n","/* eslint-disable max-len */\nimport { string } from 'prop-types';\nimport React from 'react';\n\nexport const GoogleIcon = ({\n className\n}) => (\n \n \n \n \n \n \n \n \n \n \n);\n\nGoogleIcon.propTypes = {\n className: string\n};\n\nGoogleIcon.defaultProps = {\n className: ''\n};\n","import { string } from 'prop-types';\nimport React from 'react';\n\nexport const MicrosoftIcon = ({ className }) => (\n \n \n \n \n \n \n);\n\nMicrosoftIcon.propTypes = {\n className: string\n};\n\nMicrosoftIcon.defaultProps = {\n className: ''\n};\n","import { string } from 'prop-types';\nimport React from 'react';\n\nimport { useIsMobile } from '@jotforminc/hooks';\n\nimport { GoogleIcon } from '../../assets/google';\nimport { MicrosoftIcon } from '../../assets/microsoft';\n\nconst ProviderBadge = ({\n provider\n}) => {\n const isMobile = useIsMobile(1040);\n\n const renderProvider = () => {\n switch (provider) {\n case 'google':\n return (\n
      \n \n {!isMobile && Google}\n
      \n );\n case 'microsoft':\n return (\n
      \n \n {!isMobile && Microsoft}\n
      \n );\n default:\n return '';\n }\n };\n\n return renderProvider();\n};\n\nexport default ProviderBadge;\n\nProviderBadge.propTypes = {\n provider: string\n};\n\nProviderBadge.defaultProps = {\n provider: ''\n};\n","import { IconBuilding, IconUserFilled, IconProductTeamsBasicFilled } from '@jotforminc/svg-icons';\n\nexport const DROPDOWN_BADGE_TYPES = {\n organization: {\n badgeText: 'Organization',\n Icon: IconBuilding,\n iconColor: 'color-blue-500',\n backgroundColor: 'bg-blue-100',\n textColor: 'color-navy-700'\n },\n resourceOwner: {\n badgeText: 'Resource Owner',\n Icon: IconUserFilled,\n iconColor: 'color-orange-600',\n backgroundColor: 'bg-orange-100',\n textColor: 'color-navy-700'\n },\n team: {\n badgeText: 'Team',\n Icon: IconProductTeamsBasicFilled,\n iconColor: 'color-orange-600',\n backgroundColor: 'bg-orange-100',\n textColor: 'color-navy-700'\n }\n};\n","import { func, string } from 'prop-types';\nimport React from 'react';\n\nimport { IconCheckCircleFilled } from '@jotforminc/svg-icons';\nimport { isEnterprise } from '@jotforminc/enterprise-utils';\nimport CustomBadge from './CustomBadge';\nimport ProviderBadge from './ProviderBadge';\nimport { DROPDOWN_BADGE_TYPES } from '../../helpers/constants';\n\nconst DropdownItem = ({\n text,\n value,\n selectedValue,\n badgeType,\n provider,\n handleOptionSelect\n}) => {\n const isSelected = selectedValue === value;\n const {\n badgeText = '',\n Icon = null,\n iconColor = '',\n backgroundColor = '',\n textColor = ''\n } = DROPDOWN_BADGE_TYPES[badgeType] || {};\n\n return (\n handleOptionSelect(value)}\n onKeyDown={() => {}}\n >\n
      \n
      \n {text}\n {badgeType && isEnterprise() && (\n \n )}\n {provider && }\n
      \n {isSelected && (\n \n )}\n
      \n
    \n );\n};\n\nexport default DropdownItem;\n\nDropdownItem.propTypes = {\n text: string,\n value: string,\n selectedValue: string,\n badgeType: string,\n provider: string,\n handleOptionSelect: func\n};\n\nDropdownItem.defaultProps = {\n text: '',\n value: '',\n selectedValue: '',\n badgeType: '',\n provider: '',\n handleOptionSelect: f => f\n};\n","import { array, func, string } from 'prop-types';\nimport React from 'react';\n\nimport isArray from 'lodash/isArray';\nimport { t } from '@jotforminc/translation';\nimport DropdownItem from './DropdownItem';\n\nconst DropdownList = ({\n list,\n selectedValue,\n handleOptionSelect\n}) => {\n return (\n
    \n {list.map(({\n groupName = '',\n items = []\n }) => {\n return isArray(items) && items.length > 0 ? (\n
    \n {t(groupName)}\n {items.map(({\n text,\n value,\n owner = '',\n provider = ''\n }) => {\n return (\n \n );\n })}\n
    \n
    \n ) : '';\n })}\n
    \n );\n};\n\nexport default DropdownList;\n\nDropdownList.propTypes = {\n list: array,\n selectedValue: string,\n handleOptionSelect: func\n};\n\nDropdownList.defaultProps = {\n list: [],\n selectedValue: '',\n handleOptionSelect: f => f\n};\n","import {\n array, bool, func, shape, string\n} from 'prop-types';\nimport React, { useEffect, useRef, useState } from 'react';\n\nimport isArray from 'lodash/isArray';\nimport isObject from 'lodash/isObject';\nimport isEmpty from 'lodash/isEmpty';\nimport isEqual from 'lodash/isEqual';\nimport '../../styles/jfEmailWizard.scss';\nimport { t } from '@jotforminc/translation';\nimport { Button } from '@jotforminc/magnet';\nimport { isEnterprise } from '@jotforminc/enterprise-utils';\n\nimport DropdownList from './DropdownList';\nimport CustomBadge from './CustomBadge';\nimport ProviderBadge from './ProviderBadge';\n\nconst GroupedDropdown = ({\n options,\n value,\n setErrorList,\n errorList,\n onChange,\n navigationButtonProps,\n badgeTypesList,\n groupedList,\n ...properties\n}) => {\n const showNavigationProps = isObject(navigationButtonProps) && !isEmpty(navigationButtonProps);\n\n // Refs\n const dropdownRef = useRef(null);\n // States\n const [isOpened, setIsOpened] = useState(false);\n const [selectedOption, setSelectedOption] = useState({});\n const { senderEmail: isErrored } = errorList;\n const placeholderText = t('Choose one');\n const hasPlaceholderText = !selectedOption?.text;\n const badgeProperties = badgeTypesList[selectedOption?.owner || ''] || {};\n const isReadOnly = isObject(selectedOption) && !isEmpty(selectedOption) && isArray(options) && options.length === 1;\n\n const {\n badgeText,\n Icon,\n iconColor,\n backgroundColor,\n textColor\n } = badgeProperties;\n\n const handleOptionSelect = optionValue => {\n onChange(optionValue);\n setIsOpened(false);\n };\n\n useEffect(() => {\n if (!selectedOption && !errorList?.senderEmail && (!value || value === 'addNewAddress')) {\n setErrorList(prev => ({ ...prev, senderEmail: true }));\n } else if (selectedOption && errorList?.senderEmail) {\n setErrorList(prev => ({ ...prev, senderEmail: false }));\n }\n }, [selectedOption, errorList]);\n\n useEffect(() => {\n const newSelectedOption = isArray(options) && options.find(({ value: optionValue }) => optionValue === value);\n\n if (!isEqual(newSelectedOption, selectedOption)) {\n setSelectedOption(newSelectedOption);\n }\n }, [options, selectedOption, value]);\n\n useEffect(() => {\n /**\n * set isOpened to false, if clicked on outside of element\n */\n function handleClickOutside(event) {\n if (dropdownRef.current && !dropdownRef.current.contains(event.target)) {\n setIsOpened(false);\n }\n }\n // Bind the event listener\n document.addEventListener('mousedown', handleClickOutside);\n return () => {\n // Unbind the event listener on clean up\n document.removeEventListener('mousedown', handleClickOutside);\n };\n }, [dropdownRef]);\n\n useEffect(() => {\n if (isOpened) {\n const scrollableContent = document.querySelector('[data-testid=\"advance\"]');\n if (scrollableContent) {\n scrollableContent.scrollTo({\n top: scrollableContent.scrollHeight,\n behavior: 'smooth'\n });\n }\n }\n }, [isOpened]);\n\n return (\n
    \n
    \n setIsOpened(curr => !curr)}\n >\n
    \n {selectedOption?.text || placeholderText}\n {badgeProperties && isEnterprise() && (\n \n )}\n {selectedOption?.provider && }\n
    \n \n {isOpened && (\n
    \n \n
    \n )}\n {showNavigationProps && (\n \n {navigationButtonProps?.text}\n \n )}\n
    \n
    \n );\n};\n\nexport default GroupedDropdown;\n\nGroupedDropdown.propTypes = {\n options: array,\n value: string,\n errorList: shape({\n senderEmail: bool\n }),\n navigationButtonProps: shape(),\n setErrorList: func,\n onChange: func,\n groupedList: array,\n badgeTypesList: shape()\n};\n\nGroupedDropdown.defaultProps = {\n options: [],\n value: '',\n errorList: {\n senderEmail: false\n },\n navigationButtonProps: {},\n setErrorList: f => f,\n onChange: f => f,\n groupedList: [],\n badgeTypesList: {}\n};\n","import React from 'react';\nimport { func, string } from 'prop-types';\nimport { CheckboxItem } from '@jotforminc/checkbox';\n\nconst Checkbox = ({\n value, onChange, onClick: propClick, ...props\n}) => {\n const onClick = () => {\n onChange(!value);\n propClick();\n };\n return (\n \n );\n};\n\nCheckbox.propTypes = {\n value: string,\n onChange: func,\n onClick: func\n};\n\nCheckbox.defaultProps = {\n value: undefined,\n onChange: f => f,\n onClick: f => f\n};\n\nexport default Checkbox;\n","import React from 'react';\nimport { func, string } from 'prop-types';\nimport { Checkbox } from '@jotforminc/magnet';\n\nconst MagnetCheckbox = ({\n value, onChange, ...props\n}) => {\n return (\n onChange(e.target.checked)}\n {...props}\n />\n );\n};\n\nMagnetCheckbox.propTypes = {\n value: string,\n onChange: func\n};\n\nMagnetCheckbox.defaultProps = {\n value: undefined,\n onChange: f => f\n};\n\nexport default MagnetCheckbox;\n","import { func, string } from 'prop-types';\nimport React from 'react';\nimport DatepickerCommon from '@jotforminc/date-picker';\n\nconst DatePicker = ({ value, onChange, ...props }) => {\n return (\n \n );\n};\n\nDatePicker.propTypes = {\n value: string,\n onChange: func\n};\n\nDatePicker.defaultProps = {\n value: '',\n onChange: f => f\n};\n\nexport default DatePicker;\n","import React, { useEffect, useState } from 'react';\nimport {\n arrayOf,\n func,\n shape,\n string,\n bool\n} from 'prop-types';\nimport Dropdown from '../Dropdown';\nimport '../../styles/jfEmailWizard.scss';\n\nexport default function EmailDropdown({\n value,\n onChange,\n options,\n filterable,\n textInputPlaceholder\n}) {\n const [defaultValue, setDefaultValue] = useState(value);\n useEffect(() => {\n if (value.length && value[0].value !== defaultValue[0].value) {\n setDefaultValue(value);\n }\n }, [value]);\n const wrappedOnChange = val => {\n onChange([{ value: val, email: val, text: val }]);\n };\n return (\n \n );\n}\n\nEmailDropdown.propTypes = {\n value: arrayOf(shape({\n value: string\n })),\n options: arrayOf(shape({\n value: string,\n text: string\n })).isRequired,\n onChange: func,\n filterable: bool,\n textInputPlaceholder: string\n};\n\nEmailDropdown.defaultProps = {\n value: [],\n onChange: f => f,\n filterable: false,\n textInputPlaceholder: null\n};\n","import {\n bool, func, shape, string\n} from 'prop-types';\nimport React, { useEffect, useRef } from 'react';\nimport { Password } from '@jotforminc/login-flow';\n\nfunction ResettablePassword({\n valueList, resetterKey, onChange, isHIPAA, ...props\n}) {\n const dependentValueRef = useRef(valueList[resetterKey]);\n\n useEffect(() => {\n if (valueList[resetterKey] !== dependentValueRef.current) {\n dependentValueRef.current = valueList[resetterKey];\n onChange();\n }\n }, [valueList]);\n\n return (\n onChange({ PDFPassword: password })}\n valueList={valueList}\n allowPasswordShow={false}\n secure={isHIPAA}\n clearInitialOnFocus={!isHIPAA}\n />\n );\n}\n\nResettablePassword.propTypes = {\n valueList: shape({}).isRequired,\n resetterKey: string,\n onChange: func.isRequired,\n isHIPAA: bool.isRequired\n};\n\nResettablePassword.defaultProps = {\n resetterKey: 'enablePDFPassword'\n};\n\nexport default ResettablePassword;\n","import React, { useState } from 'react';\nimport {\n func, bool, string\n} from 'prop-types';\nimport { PasswordWithToggle as LoginFlowPasswordWithToggle } from '@jotforminc/login-flow';\nimport { t } from '@jotforminc/translation';\n\nconst PasswordWithToggle = ({\n onChange, isHIPAA,\n isSelected,\n initialValue,\n setErrorList,\n ...props\n}) => {\n const [isPasswordEnabled, setIsPasswordEnabled] = useState(isSelected);\n\n const handleToggleClick = () => setIsPasswordEnabled(state => {\n onChange({ enablePDFPassword: !state });\n return !state;\n });\n\n const handlePasswordChange = password => onChange({ PDFPassword: password });\n\n const handlePasswordValidate = resultObject => {\n const hasError = Object.values(resultObject).some(value => value === false);\n setErrorList(prev => ({ ...prev, PDFPassword: hasError }));\n };\n\n return (\n
    \n \n
    \n );\n};\n\nPasswordWithToggle.propTypes = {\n onChange: func,\n isHIPAA: bool,\n isSelected: bool,\n initialValue: string,\n disclaimer: string,\n clearInitialOnFocus: bool,\n setErrorList: func\n};\n\nPasswordWithToggle.defaultProps = {\n onChange: f => f,\n isHIPAA: false,\n isSelected: false,\n initialValue: null,\n disclaimer: null,\n clearInitialOnFocus: false,\n setErrorList: f => f\n};\n\nexport default PasswordWithToggle;\n","import FileUpload from '@jotforminc/file-upload';\nimport SingleEmailInput from '@jotforminc/single-email-input';\nimport { MultipleFormPDFDropdown } from '@jotforminc/resource-picker';\nimport Toggle from '@jotforminc/toggle';\nimport TagInput from '@jotforminc/tag-input';\nimport EmailInput from '@jotforminc/email-input';\nimport AlertLabelWithIcon from '@jotforminc/alert-label';\nimport { Input, COMPONENT_NAMES } from '@jotforminc/form-wizard';\nimport { NewEmailWizard } from '@jotforminc/smtp-wizard';\n\nimport EmailEditorManager from '../components/EmailEditorManager';\nimport EmailToggle from '../components/Toggle';\nimport SelectList from '../components/SelectList';\nimport Dropdown from '../components/Dropdown';\nimport GroupedDropdown from '../components/GroupedDropdown';\nimport Checkbox from '../components/Checkbox';\nimport MagnetCheckbox from '../components/MagnetCheckbox';\nimport Datepicker from '../components/Datepicker';\nimport EmailDropdown from '../components/EmailDropdown';\nimport ResettablePassword from '../components/ResettablePassword';\nimport PasswordWithToggle from '../components/PasswordWithToggle';\nimport LoadingDots from '../components/LoadingDots';\n\nconst EMAIL_WIZARD_FORM_WIZARD_COMPONENT_TYPE_LIST = {\n [COMPONENT_NAMES.TextInput]: Input,\n [COMPONENT_NAMES.InputWithList]: TagInput,\n [COMPONENT_NAMES.RichTextEditor]: EmailEditorManager,\n [COMPONENT_NAMES.MultipleEmailInput]: EmailInput,\n [COMPONENT_NAMES.SingleEmailInput]: SingleEmailInput,\n [COMPONENT_NAMES.Toggle]: Toggle,\n [COMPONENT_NAMES.FileUpload]: FileUpload,\n [COMPONENT_NAMES.Dropdown]: Dropdown,\n [COMPONENT_NAMES.EmailToggle]: EmailToggle,\n [COMPONENT_NAMES.SelectList]: SelectList,\n [COMPONENT_NAMES.Checkbox]: Checkbox,\n [COMPONENT_NAMES.MagnetCheckbox]: MagnetCheckbox,\n [COMPONENT_NAMES.Datepicker]: Datepicker,\n [COMPONENT_NAMES.Password]: PasswordWithToggle,\n [COMPONENT_NAMES.ResettablePassword]: ResettablePassword,\n [COMPONENT_NAMES.AlertLabelWithIcon]: AlertLabelWithIcon,\n [COMPONENT_NAMES.EmailDropdown]: EmailDropdown,\n [COMPONENT_NAMES.PDFSelectList]: MultipleFormPDFDropdown,\n [COMPONENT_NAMES.GroupedDropdown]: GroupedDropdown,\n LOADING: LoadingDots,\n email_wizard_new_sender_email_wizard: NewEmailWizard\n};\n\nexport default EMAIL_WIZARD_FORM_WIZARD_COMPONENT_TYPE_LIST;\n","import React from 'react';\n\nconst LoadingDots = () => {\n // CSS is from moodular\n return (\n \n \n \n \n
    \n );\n};\n\nexport default LoadingDots;\n","import { func } from 'prop-types';\nimport React, { useEffect, useRef, useState } from 'react';\nimport FormFields from '@jotforminc/form-fields-menu';\n\nconst FormFieldsWrapper = ({\n onChange,\n ...rest\n}) => {\n const [isVisible, setVisible] = useState(true);\n const ref = useRef();\n const handleChange = val => {\n onChange(val);\n setVisible(false);\n };\n useEffect(() => {\n if (ref.current) {\n ref.current.setMenuVisibility(true);\n }\n }, [ref]);\n return isVisible ? (\n \n ) : null;\n};\n\nFormFieldsWrapper.propTypes = {\n onChange: func.isRequired\n};\n\nexport default FormFieldsWrapper;\n","import React from 'react';\nimport { t } from '@jotforminc/translation';\nimport { generateIsErroredFromValidations } from '@jotforminc/utils';\nimport { COMPONENT_NAMES } from '@jotforminc/form-wizard';\n\nimport { EMAIL_TEMPLATE_TYPES } from '../../constants/EmailTemplateTypes';\nimport FormFieldsWrapper from '../../components/Wrappers/formFieldsWrapper';\n\nconst validatePopoverButtons = (buttonsArray = []) => {\n const erroredButton = buttonsArray.find(button => {\n return !button.id && !button.component;\n });\n if (erroredButton) {\n // this is just for development purposes.\n console.error('Errored button found. Please make sure that buttons in the popover button config has an id and component property.');\n }\n};\n\nconst FormFieldsPopover = ({\n useMultipleForms, formArray, fieldList, staticFields, showProtectedTag\n}) => ({\n id: 'form_fields_popover',\n text: 'Form Fields',\n component: editor => {\n const formFieldsButton = document.getElementById('form_fields_popover');\n const handleChange = val => {\n let [insertedValue] = val;\n if (insertedValue === '{edit_link}') {\n insertedValue = '
    {edit_link}';\n }\n editor.insertContent(insertedValue);\n };\n return (\n \n );\n }\n});\n\nconst getEditorConfig = params => {\n const {\n user: { language } = {}, emailType, extraEditorButtons = [], useMultipleForms\n } = params;\n const userLanguage = language || 'en-US';\n const languageUrl = `//${global.location.hostname}/js/rich-text-editor/langs/${userLanguage}.js`;\n\n const formFieldsToolbarName = useMultipleForms ? 'form_fields_popover' : 'questionlist';\n const extraButtonsToolbarName = (extraEditorButtons || []).map(f => f.id).join(' ');\n switch (emailType) {\n case EMAIL_TEMPLATE_TYPES.FORM_SHARE:\n return {\n languageUrl,\n min_height: 180,\n plugins: 'autolink link image lists print preview textcolor code fullscreen table',\n toolbar: 'fontsizeselect | bold italic | alignment | forecolor | link image | code | table | dummy1 | dummy2 | dummy3',\n content_style: `\n [contentEditable=\"true\"] img {\n max-width: 100%;\n }\n `\n };\n case EMAIL_TEMPLATE_TYPES.FORM_REMINDER:\n return {\n languageUrl,\n plugins: 'textcolor noneditable paste autoresize jotformuploadx3',\n toolbar: 'fontsizeselect | bold italic | alignment | forecolor | customimage | jotformuploadx3 | dummy1 | dummy2',\n visual: false,\n forced_root_block: false,\n object_resizing: 'img',\n paste_block_drop: false,\n autoresize_bottom_margin: 10,\n autoresize_max_height: 650,\n autoresize_min_height: 180,\n content_style: `\n [contentEditable=\"true\"]:focus { outline: none; }\n [contentEditable=\"true\"] a { white-space: nowrap; }\n [contentEditable=\"true\"] a br { display: none; }\n [contentEditable=\"true\"] a * {\n display: inline;\n white-space: nowrap;\n }\n [contentEditable=\"true\"] img {\n max-width: 100%;\n }\n `\n };\n case EMAIL_TEMPLATE_TYPES.WORKFLOW_APPROVE_START:\n case EMAIL_TEMPLATE_TYPES.WORKFLOW_ASSIGN_TASK:\n return {\n toolbar: `customfontfamily | customfontsize | bold italic | alignment | forecolor | link customimage | code | table | ${formFieldsToolbarName} | ${extraButtonsToolbarName} | customfullscreen`,\n plugins: 'autolink link code table textcolor noneditable'\n };\n case EMAIL_TEMPLATE_TYPES.FORM_SUBMIT_AUTORESPONDER:\n case EMAIL_TEMPLATE_TYPES.FORM_SUBMIT_NOTIFICATION:\n return {\n toolbar: `customfontfamily \n | customfontsize \n | bold italic \n | alignment \n | forecolor \n | link customimage \n | fullscreen \n | code \n | table \n | ${extraButtonsToolbarName} | questionlist \n | submission-table`,\n content_style: `\n [contentEditable=\"true\"] img {\n max-width: 100%;\n }\n `\n };\n case EMAIL_TEMPLATE_TYPES.WORKFLOW_SEND_EMAIL_GENERAL:\n case EMAIL_TEMPLATE_TYPES.WORKFLOW_APPROVE_REASSIGN:\n case EMAIL_TEMPLATE_TYPES.WORKFLOW_ASSIGN_START:\n case EMAIL_TEMPLATE_TYPES.WORKFLOW_ASSIGN_FORM_NOTIFICATION:\n return {\n toolbar: `customfontfamily | customfontsize | bold italic | alignment | forecolor | link customimage | code | table | ${formFieldsToolbarName} | ${extraButtonsToolbarName} | customfullscreen`\n };\n default:\n return {\n toolbar: `customfontfamily | customfontsize | bold italic | alignment | forecolor | link customimage | code | table | ${extraButtonsToolbarName} | questionlist | submission-table`\n };\n }\n};\n\nconst generateContentConfig = params => {\n const {\n emailType,\n fieldList,\n onEditorInit,\n extraEditorButtons,\n staticFields,\n useMultipleForms,\n formArray,\n customActionButtons,\n onCustomButtonSettingClick,\n selectedRow,\n editorPopoverButtons = [],\n editorInitCallbacks = [],\n showProtectedTag,\n isAIAgentCreated\n } = params;\n\n const shouldShowAIAgentLink = [EMAIL_TEMPLATE_TYPES.FORM_SUBMIT_AUTORESPONDER, EMAIL_TEMPLATE_TYPES.FORM_SUBMIT_NOTIFICATION].indexOf(emailType) > -1 && isAIAgentCreated;\n\n const staticFieldsWithAIAgentLink = shouldShowAIAgentLink ? [...staticFields, { text: t('AI Agent Link'), placeholder: '{aiAgentChatLink}' }] : staticFields;\n const popoverButtons = [\n ...editorPopoverButtons,\n FormFieldsPopover({\n useMultipleForms, formArray, fieldList, staticFields: staticFieldsWithAIAgentLink, showProtectedTag\n })\n ];\n validatePopoverButtons(popoverButtons);\n return {\n type: COMPONENT_NAMES.RichTextEditor,\n labelProps: { label: t('Email Content'), required: true },\n componentProps: {\n isErrored: generateIsErroredFromValidations(['content']),\n onEditorInit,\n modalProperties: {\n usePortal: false // Inner portals breaks modal, skip for now\n },\n addFormFields: [EMAIL_TEMPLATE_TYPES.FORM_SHARE, EMAIL_TEMPLATE_TYPES.FORM_REMINDER].indexOf(emailType) === -1,\n questions: fieldList,\n config: getEditorConfig(params),\n extraEditorButtons,\n customActionButtons,\n onCustomButtonSettingClick,\n staticFields: staticFieldsWithAIAgentLink,\n selectedRow,\n popoverButtons,\n editorInitCallbacks\n }\n };\n};\n\nconst generateSubjectConfig = params => {\n const {\n formTitle, fieldList, emailType, useMultipleForms, formArray, showProtectedTag, isEncrypted\n } = params;\n const isShareEmail = [EMAIL_TEMPLATE_TYPES.FORM_SHARE, EMAIL_TEMPLATE_TYPES.FORM_REMINDER].indexOf(emailType) > -1;\n\n return {\n type: isShareEmail ? COMPONENT_NAMES.TextInput : COMPONENT_NAMES.InputWithList,\n labelProps: {\n label: t('Email Subject'),\n required: true\n },\n componentProps: {\n isErrored: generateIsErroredFromValidations(['required']),\n ...(isShareEmail ? {} : {\n questions: fieldList,\n formTitle,\n addFormFields: true,\n addStaticFields: true,\n settings: { mode: 'mix', emailType },\n useMultipleForms,\n formArray,\n showProtectedTag,\n isEncrypted\n })\n }\n };\n};\n\nexport const GenerateEmailTabElementList = params => ({\n subject: generateSubjectConfig(params),\n content: generateContentConfig(params)\n});\n","import React, { useMemo, forwardRef } from 'react';\nimport {\n arrayOf,\n bool,\n func,\n shape,\n string\n} from 'prop-types';\nimport { STATIC_FIELDS_WITH_PLACEHOLDER } from '@jotforminc/constants';\nimport { FormWizard, FormWizardWithoutErrorProvider } from '@jotforminc/form-wizard';\n\nimport { STATIC_FIELDS_WITH_PLACEHOLDER_FOR_SACL } from './constants';\nimport { EMAIL_TEMPLATE_TYPES } from '../../constants/EmailTemplateTypes';\nimport EMAIL_WIZARD_FORM_WIZARD_COMPONENT_TYPE_LIST from '../../constants/FormWizardComponentTypes';\nimport { GenerateEmailTabElementList } from './ElementListGenerator';\n\nconst EmailWizard = forwardRef((props, ref) => {\n const {\n user, questions, formTitle, emailType,\n valueList, onChange, onEditorInit, extraEditorButtons = [], customActionButtons = [], onCustomButtonSettingClick,\n staticFields, useMultipleForms, formArray, selectedRow, editorPopoverButtons = [], editorInitCallbacks = [], showProtectedTag,\n useJotformSign, isEncrypted, isAIAgentCreated\n } = props;\n\n const isEmailTypeSACL = emailType === EMAIL_TEMPLATE_TYPES.FORM_SAVE_AND_CONTINUE_LATER;\n const elements = useMemo(() => GenerateEmailTabElementList({\n emailType,\n fieldList: (!isEmailTypeSACL ? questions : []),\n formTitle,\n onEditorInit,\n user,\n customActionButtons,\n onCustomButtonSettingClick,\n selectedRow,\n extraEditorButtons,\n staticFields: (!isEmailTypeSACL ? staticFields : STATIC_FIELDS_WITH_PLACEHOLDER_FOR_SACL),\n useMultipleForms,\n formArray,\n editorPopoverButtons,\n editorInitCallbacks,\n showProtectedTag,\n useJotformSign,\n isEncrypted,\n isAIAgentCreated\n }), [\n emailType,\n extraEditorButtons,\n selectedRow,\n formArray,\n formTitle,\n isEmailTypeSACL,\n onEditorInit,\n questions,\n staticFields,\n useMultipleForms,\n user,\n editorPopoverButtons,\n editorInitCallbacks,\n showProtectedTag,\n useJotformSign,\n isEncrypted\n ]);\n\n return (\n \n );\n});\n\nEmailWizard.propTypes = {\n ...FormWizard.propTypes,\n extraEditorButtons: arrayOf(shape({})),\n staticFields: arrayOf(shape({})),\n formTitle: string,\n selectedRow: shape({}),\n customActionButtons: arrayOf(string),\n editorPopoverButtons: arrayOf(shape({})),\n editorInitCallbacks: arrayOf(func),\n showProtectedTag: bool,\n useJotformSign: bool,\n isEncrypted: bool,\n isAIAgentCreated: bool\n};\nEmailWizard.defaultProps = {\n ...FormWizard.defaultProps,\n staticFields: STATIC_FIELDS_WITH_PLACEHOLDER,\n extraEditorButtons: [],\n formTitle: '',\n selectedRow: {},\n customActionButtons: [],\n editorPopoverButtons: [],\n editorInitCallbacks: [],\n showProtectedTag: false,\n useJotformSign: false,\n isEncrypted: false,\n isAIAgentCreated: false\n};\n\nexport default EmailWizard;\n","import React from 'react';\nimport { translationRenderer } from '@jotforminc/translation';\n\nconst upgradeLinkHref = 'https://www.jotform.com/pricing/?utm_source=notification_settings&utm_medium=remove_recipient_limit&utm_campaign=notification_multiple_recipients';\n\nconst RecipientError = () => (\n
    \n {translationRenderer('To use multiple recipients, please [1[upgrade your account]]')({\n renderer1: str => {str},\n fallback: str => {str}\n })}\n
    \n);\n\nexport default RecipientError;\n","const EmptyRenderer = () => null;\n\nexport default EmptyRenderer;\n","import React from 'react';\nimport merge from 'lodash/merge';\nimport { t } from '@jotforminc/translation';\nimport {\n isEmail,\n generateIsErroredFromValidations,\n singleEmailInputEmailErrored,\n handleCustomNavigation\n} from '@jotforminc/utils';\nimport { isNewSMTPFlow } from '@jotforminc/enterprise-utils';\nimport { getBaseURL } from '@jotforminc/router-bridge';\nimport AlertLabelWithIcon from '@jotforminc/alert-label';\nimport { AlertLabelTypes } from '@jotforminc/constants';\nimport { COMPONENT_NAMES } from '@jotforminc/form-wizard';\n\nimport { IconLinkDiagonal } from '@jotforminc/svg-icons';\nimport { EMAIL_TEMPLATE_TYPES } from '../../constants/EmailTemplateTypes';\nimport RecipientError from '../../components/RecipientError';\nimport {\n getEmailFields, getNameFields, extendCustomSenderOptions, prepareGroupedList\n} from '../../helpers/utils';\nimport EmptyRenderer from '../../components/EmptyRenderer';\nimport { DROPDOWN_BADGE_TYPES } from '../../helpers/constants';\n\nconst RecipientLimitDesc = ;\n\nconst getBaseConfiguration = extendedParams => {\n const {\n recipientLimit, emailType, hideToError, setExceededMessage, showSender, showProtectedTag, isBCCandCCEnabled\n } = extendedParams;\n // TODO: refactor for sender email tab\n if (emailType === EMAIL_TEMPLATE_TYPES.WORKFLOW_ASSIGN_FORM_NOTIFICATION\n || emailType === EMAIL_TEMPLATE_TYPES.WORKFLOW_APPROVE_START\n || emailType === EMAIL_TEMPLATE_TYPES.WORKFLOW_ASSIGN_TASK\n || emailType === EMAIL_TEMPLATE_TYPES.SHEETS_SEND_FORM\n ) {\n return {\n senderName: {\n labelProps: { label: t('Sender Name') }\n\n },\n replyTo: {\n labelProps: {\n label: t('Reply-to Email')\n }\n }\n };\n }\n if (showSender) {\n return {\n senderName: {\n labelProps: { label: t('Sender Name') }\n\n },\n replyTo: {\n labelProps: {\n label: t('Reply-to Email')\n }\n }\n };\n }\n if (isBCCandCCEnabled) {\n return {\n senderName: {\n labelProps: { label: t('Sender Name') }\n\n },\n replyTo: {\n labelProps: {\n label: t('Reply-to Email')\n }\n },\n to: {\n labelProps: { label: t('Recipient Email') },\n componentProps: { placeholder: t('+ Add new email'), showProtectedTag }\n },\n toError: {\n type: 'error',\n labelProps: { label: '', description: setExceededMessage || RecipientLimitDesc },\n condition: valueList => {\n if (hideToError) {\n return false;\n }\n\n if (!setExceededMessage) {\n return false;\n }\n\n if (!valueList || !valueList.to || !Array.isArray(valueList.to)) {\n return false;\n }\n const validRecipients = valueList.to.filter(r => r.isValid);\n if (recipientLimit) {\n if (validRecipients.length > recipientLimit) {\n return true;\n }\n\n if ([EMAIL_TEMPLATE_TYPES.FORM_SHARE, EMAIL_TEMPLATE_TYPES.FORM_REMINDER].indexOf(emailType) > -1 && validRecipients.length === recipientLimit) {\n return true;\n }\n }\n\n return false;\n },\n LabelRenderer: props => ,\n ComponentRenderer: EmptyRenderer\n },\n cc: {\n labelProps: { label: t('CC') },\n componentProps: { placeholder: t('+ Add new email'), showProtectedTag }\n },\n bcc: {\n labelProps: { label: t('BCC') },\n componentProps: { placeholder: t('+ Add new email'), showProtectedTag }\n }\n };\n }\n return {\n senderName: {\n labelProps: { label: t('Sender Name') }\n\n },\n replyTo: {\n labelProps: {\n label: t('Reply-to Email')\n }\n },\n to: {\n labelProps: { label: t('Recipient Email') },\n componentProps: { placeholder: t('+ Add new email'), showProtectedTag }\n },\n toError: {\n type: 'error',\n labelProps: { label: '', description: setExceededMessage || RecipientLimitDesc },\n condition: valueList => {\n if (hideToError) {\n return false;\n }\n\n if (!setExceededMessage) {\n return false;\n }\n\n if (!valueList || !valueList.to || !Array.isArray(valueList.to)) {\n return false;\n }\n const validRecipients = valueList.to.filter(r => r.isValid);\n if (recipientLimit) {\n if (validRecipients.length > recipientLimit) {\n return true;\n }\n\n if ([EMAIL_TEMPLATE_TYPES.FORM_SHARE, EMAIL_TEMPLATE_TYPES.FORM_REMINDER].indexOf(emailType) > -1 && validRecipients.length === recipientLimit) {\n return true;\n }\n }\n\n return false;\n },\n LabelRenderer: props => ,\n ComponentRenderer: EmptyRenderer\n }\n };\n};\n\nconst defaultParams = {\n emailType: EMAIL_TEMPLATE_TYPES.FORM_SUBMIT_NOTIFICATION,\n userList: [],\n fieldList: [], // Questions\n formTitle: '',\n companyTitle: 'JotForm',\n isSSOProtected: false,\n recipientLimit: false,\n showUpgradeWarning: false,\n isEnterprise: false,\n disableFreeTextOnRecipients: false,\n allowFormFieldsOnRecipients: true,\n setExceededMessage: null,\n useMultipleForms: false,\n formArray: [],\n senderEmails: [],\n handleAddNewEmail: () => console.warn('New email added without add fn passed.')\n};\n\nconst generateEmailTagInputProps = extendedParams => {\n const {\n userList, emailType, fieldList, formTitle, recipientLimit, showUpgradeWarning, isEnterprise, useMultipleForms, formArray = [], customType\n } = extendedParams;\n\n const showRemainingCount = !isEnterprise;\n\n const isPublishEmail = [EMAIL_TEMPLATE_TYPES.FORM_SHARE, EMAIL_TEMPLATE_TYPES.FORM_REMINDER].indexOf(emailType) !== -1;\n const addFormFields = customType || (EMAIL_TEMPLATE_TYPES.FORM_SUBMIT_NOTIFICATION !== emailType && !isPublishEmail);\n\n return {\n type: COMPONENT_NAMES.MultipleEmailInput,\n labelProps: {\n required: true\n },\n componentProps: {\n inputProps: {}, // add classname if necessary\n userList,\n addFormFields,\n ignoreBlurRequirementOnValidation: true,\n questions: fieldList,\n formTitle,\n isErrored: (value = []) => {\n if (Array.isArray(value) && value.length === 0) {\n return t('At least one recipient is required');\n }\n const validRecipients = value?.filter?.(r => (typeof r === 'string' ? isEmail(r) : r.isValid)) || [];\n const invalidEmailCount = value.length - validRecipients.length;\n if (invalidEmailCount) {\n return t(`${invalidEmailCount} invalid email address`);\n }\n\n if (recipientLimit && validRecipients.length > recipientLimit) {\n return true;\n }\n\n return false;\n },\n popoverProps: {\n style: { zIndex: 99999 }\n },\n isWarned: ({ value } = {}) => {\n const toLength = value?.length;\n if (toLength === recipientLimit && showUpgradeWarning) {\n return ;\n }\n return false;\n },\n showPillIcon: true,\n pillIcon: IconLinkDiagonal,\n useMultipleForms,\n formArray: emailType && emailType === EMAIL_TEMPLATE_TYPES.WORKFLOW_SEND_EMAIL_GENERAL ? (formArray || []).filter(form => form?.type !== 'WORKFLOW') : formArray,\n ...((isPublishEmail || (recipientLimit && recipientLimit > 0)) ? { maxCount: recipientLimit, showRemainingCount } : {})\n }\n };\n};\n\nconst generateSingleEmailInputConfig = (extendedParams, { isErrored = singleEmailInputEmailErrored, required = false, addFormFields = false } = {}) => {\n const {\n userList, fieldList, formTitle, useMultipleForms, showProtectedTag, formArray = []\n } = extendedParams;\n return ({\n type: COMPONENT_NAMES.SingleEmailInput,\n labelProps: {\n required // Can be moved to base config after implementing emailTagInputProps.isErrored\n },\n componentProps: {\n userList,\n isErrored,\n formTitle,\n addFormFields,\n useArrayAsValue: true,\n questions: fieldList.filter(({ type }) => type === 'control_email'),\n formArray: formArray.map(q => ({ ...q, questions: q?.questions?.filter?.(({ type }) => type === 'control_email') })),\n useMultipleForms,\n showProtectedTag\n }\n });\n};\n\n// eslint-disable-next-line complexity\nexport const GenerateRecipientTabElementList = (params = defaultParams) => {\n const extended = {\n ...defaultParams,\n ...params,\n ...params.branding21 ? { companyTitle: params.companyTitle.replace(/JotForm/gm, 'Jotform') } : {}\n };\n\n const {\n emailType, fieldList, companyTitle, isSSOProtected, isEncrypted,\n emailSubType, showSender, isEnterprise, branding21, senderEmails, user: userData, valueList, handleAddNewEmail, isBCCandCCEnabled, customType\n } = extended;\n\n const customConfigSetter = isBCCandCCEnabled && customType ? customType : false;\n const { senderEmail } = valueList;\n\n const customConfig = {\n [EMAIL_TEMPLATE_TYPES.FORM_SUBMIT_AUTORESPONDER]: {\n senderName: { type: COMPONENT_NAMES.TextInput },\n replyTo: generateSingleEmailInputConfig(extended),\n to: {\n labelProps: {\n required: true\n },\n type: COMPONENT_NAMES.Dropdown,\n componentProps: {\n ignoreBlurRequirementOnValidation: true,\n isErrored: generateIsErroredFromValidations(['required_withnone']),\n options: getEmailFields(isSSOProtected, fieldList).map(({ key: value, text }) => ({ text, value }))\n }\n }\n },\n [EMAIL_TEMPLATE_TYPES.FORM_SUBMIT_NOTIFICATION]: {\n senderName: {\n type: COMPONENT_NAMES.Dropdown,\n componentProps: {\n ignoreBlurRequirementOnValidation: true,\n options: getNameFields(companyTitle, fieldList, isEncrypted).map(({ key: value, text }) => ({ text, value }))\n }\n },\n replyTo: {\n type: COMPONENT_NAMES.Dropdown,\n ignoreBlurRequirementOnValidation: true,\n componentProps: {\n options: getEmailFields(isSSOProtected, fieldList).map(({ key: value, text }) => ({ text, value }))\n }\n },\n to: generateEmailTagInputProps(extended)\n },\n [EMAIL_TEMPLATE_TYPES.SHEETS_NOTIFICATION]: {\n senderName: {\n type: COMPONENT_NAMES.Dropdown,\n componentProps: {\n ignoreBlurRequirementOnValidation: true,\n options: getNameFields(companyTitle, fieldList, isEncrypted).map(({ key: value, text }) => ({ text, value }))\n }\n },\n replyTo: {\n type: COMPONENT_NAMES.Dropdown,\n ignoreBlurRequirementOnValidation: true,\n componentProps: {\n options: getEmailFields(isSSOProtected, fieldList).map(({ key: value, text }) => ({ text, value }))\n }\n },\n to: {\n ...generateEmailTagInputProps(extended),\n componentProps: {\n ...(generateEmailTagInputProps(extended).componentProps),\n addFormFields: false\n }\n },\n cc: {\n ...generateEmailTagInputProps(extended),\n labelProps: {\n required: false\n },\n componentProps: {\n ...(generateEmailTagInputProps(extended).componentProps),\n isErrored: (value = []) => {\n const validRecipients = value?.filter?.(r => (typeof r === 'string' ? isEmail(r) : r.isValid)) || [];\n const invalidEmailCount = value.length - validRecipients.length;\n if (invalidEmailCount) {\n return t(`${invalidEmailCount} invalid email address`);\n }\n return false;\n }\n }\n },\n bcc: {\n ...generateEmailTagInputProps(extended),\n labelProps: {\n required: false\n },\n componentProps: {\n ...(generateEmailTagInputProps(extended).componentProps),\n isErrored: (value = []) => {\n const validRecipients = value?.filter?.(r => (typeof r === 'string' ? isEmail(r) : r.isValid)) || [];\n const invalidEmailCount = value.length - validRecipients.length;\n if (invalidEmailCount) {\n return t(`${invalidEmailCount} invalid email address`);\n }\n return false;\n }\n }\n }\n },\n [EMAIL_TEMPLATE_TYPES.SHEETS_AUTORESPONDER]: {\n senderName: { type: COMPONENT_NAMES.TextInput },\n replyTo: generateSingleEmailInputConfig(extended),\n to: {\n labelProps: {\n required: true\n },\n type: COMPONENT_NAMES.Dropdown,\n componentProps: {\n ignoreBlurRequirementOnValidation: true,\n isErrored: generateIsErroredFromValidations(['required_withnone']),\n options: getEmailFields(isSSOProtected, fieldList).map(({ key: value, text }) => ({ text, value }))\n }\n },\n cc: {\n ...generateEmailTagInputProps(extended),\n labelProps: {\n required: false\n },\n componentProps: {\n ...(generateEmailTagInputProps(extended).componentProps),\n isErrored: (value = []) => {\n const validRecipients = value?.filter?.(r => (typeof r === 'string' ? isEmail(r) : r.isValid)) || [];\n const invalidEmailCount = value.length - validRecipients.length;\n if (invalidEmailCount) {\n return t(`${invalidEmailCount} invalid email address`);\n }\n return false;\n }\n }\n },\n bcc: {\n ...generateEmailTagInputProps(extended),\n labelProps: {\n required: false\n },\n componentProps: {\n ...(generateEmailTagInputProps(extended).componentProps),\n isErrored: (value = []) => {\n const validRecipients = value?.filter?.(r => (typeof r === 'string' ? isEmail(r) : r.isValid)) || [];\n const invalidEmailCount = value.length - validRecipients.length;\n if (invalidEmailCount) {\n return t(`${invalidEmailCount} invalid email address`);\n }\n return false;\n }\n }\n }\n },\n [EMAIL_TEMPLATE_TYPES.WORKFLOW_APPROVE_START]: {\n senderName: { type: COMPONENT_NAMES.TextInput },\n replyTo: generateSingleEmailInputConfig(extended)\n },\n [EMAIL_TEMPLATE_TYPES.WORKFLOW_ASSIGN_TASK]: {\n senderName: { type: COMPONENT_NAMES.TextInput },\n replyTo: generateSingleEmailInputConfig(extended)\n },\n [EMAIL_TEMPLATE_TYPES.FORM_SHARE]: {\n senderName: { type: 'textInput' },\n replyTo: generateSingleEmailInputConfig(extended, { required: true, isErrored: generateIsErroredFromValidations(['required', 'email']) }),\n to: {\n ...generateEmailTagInputProps(extended),\n labelProps: {\n label: t('To'),\n required: true\n }\n }\n },\n [EMAIL_TEMPLATE_TYPES.FORM_REMINDER]: {\n senderName: { type: 'textInput' },\n replyTo: generateSingleEmailInputConfig(extended, { required: true, isErrored: generateIsErroredFromValidations(['required', 'email']) }),\n to: {\n ...generateEmailTagInputProps(extended),\n labelProps: {\n label: t('To'),\n required: true\n }\n }\n },\n [EMAIL_TEMPLATE_TYPES.WORKFLOW_ASSIGN_FORM_NOTIFICATION]: {\n senderName: { type: 'textInput' },\n replyTo: generateSingleEmailInputConfig(extended, { required: true, isErrored: generateIsErroredFromValidations(['required', 'email']) })\n },\n [EMAIL_TEMPLATE_TYPES.WORKFLOW_SEND_REPORT]: {\n senderName: { type: 'textInput' },\n replyTo: generateSingleEmailInputConfig(extended, { isErrored: generateIsErroredFromValidations(['required', 'email']) })\n },\n [EMAIL_TEMPLATE_TYPES.WORKFLOW_SEND_PDF]: {\n senderName: { type: 'textInput' },\n replyTo: generateSingleEmailInputConfig(extended, { required: true, isErrored: generateIsErroredFromValidations(['required', 'email']) }),\n senderEmail: {\n type: isNewSMTPFlow(userData) ? COMPONENT_NAMES.GroupedDropdown : COMPONENT_NAMES.Dropdown,\n labelProps: {\n label: t('Sender Email'),\n // replace after to not break translations\n description: t('Select an email address to show as the sender', { branding21 })\n },\n componentProps: {\n triggerChangeOnDatasetChange: true,\n ignoreBlurRequirementOnValidation: true,\n options: extendCustomSenderOptions(senderEmails, isEnterprise, userData),\n ...(isNewSMTPFlow(userData) && {\n groupedList: prepareGroupedList(extendCustomSenderOptions(senderEmails, isEnterprise, userData))\n }),\n ...(isNewSMTPFlow(userData) && { badgeTypesList: DROPDOWN_BADGE_TYPES }),\n ...(isNewSMTPFlow(userData) && {\n navigationButtonProps: {\n text: t('Manage Your Sender Email Addresses'),\n onClick: () => {\n const navigateToSMTPSettings = `${getBaseURL()}/${window?.teamID ? `myaccount/team/${window.teamID}/team-settings` : 'myaccount/settings'}`;\n handleCustomNavigation(navigateToSMTPSettings, '_blank', true);\n }\n }\n }),\n isErrored: value => {\n if (isNewSMTPFlow(userData)) {\n if (!value) {\n return true;\n }\n return false;\n }\n if (value === 'addNewAddress') {\n return t('Sender email is required.');\n }\n return false;\n }\n }\n },\n ...(!isNewSMTPFlow(userData) && {\n newEmailWizard: {\n type: 'email_wizard_new_sender_email_wizard',\n static: true,\n componentProps: {\n onAddEmail: handleAddNewEmail\n },\n condition: () => senderEmail === 'addNewAddress'\n }\n })\n },\n [EMAIL_TEMPLATE_TYPES.SHEETS_SEND_FORM]: {\n senderName: { type: 'textInput' },\n replyTo: generateSingleEmailInputConfig(extended, { required: true, isErrored: generateIsErroredFromValidations(['required', 'email']) }),\n senderEmail: {\n type: COMPONENT_NAMES.Dropdown,\n labelProps: {\n label: t('Sender Email'),\n // replace after to not break translations\n description: t('Select an email address to show as the sender', { branding21 })\n },\n componentProps: {\n triggerChangeOnDatasetChange: true,\n ignoreBlurRequirementOnValidation: true,\n options: extendCustomSenderOptions(senderEmails, isEnterprise, userData),\n isErrored: value => {\n if (value === 'addNewAddress') {\n return t('Sender email is required.');\n }\n return false;\n }\n }\n },\n ...(!isNewSMTPFlow(userData) && {\n newEmailWizard: {\n type: 'email_wizard_new_sender_email_wizard',\n static: true,\n componentProps: {\n onAddEmail: handleAddNewEmail\n },\n condition: () => senderEmail === 'addNewAddress'\n }\n })\n },\n default: {\n senderName: { type: 'textInput' },\n replyTo: generateSingleEmailInputConfig(extended),\n to: generateEmailTagInputProps(extended)\n }\n };\n\n const workflowEmailSubType = showSender && emailSubType\n && (emailSubType === EMAIL_TEMPLATE_TYPES.WORKFLOW_SEND_REPORT || emailSubType === EMAIL_TEMPLATE_TYPES.WORKFLOW_SEND_PDF) ? emailSubType : null;\n const target = customConfigSetter ? customConfig[customConfigSetter] : customConfig[workflowEmailSubType || emailType] || customConfig.default;\n const merged = merge(getBaseConfiguration(extended), target);\n return merged;\n};\n","import React, { forwardRef } from 'react';\nimport {\n bool, number, oneOfType, string\n} from 'prop-types';\nimport { t } from '@jotforminc/translation';\nimport { useStateWithAutoReset } from '@jotforminc/hooks';\nimport AlertLabelWithIcon from '@jotforminc/alert-label';\nimport { AlertLabelTypes } from '@jotforminc/constants';\nimport { FormWizard, FormWizardWithoutErrorProvider } from '@jotforminc/form-wizard';\n\nimport EMAIL_WIZARD_FORM_WIZARD_COMPONENT_TYPE_LIST from '../../constants/FormWizardComponentTypes';\nimport { GenerateRecipientTabElementList } from './ElementListGenerator';\n\nconst RecipientsWizard = forwardRef(({\n emailType,\n emailSubType,\n userList,\n questions,\n formTitle,\n valueList,\n defaultValue: BaseDefaultValue,\n onChange,\n errorList,\n companyTitle,\n isSSOProtected,\n recipientLimit,\n hideToError,\n showUpgradeWarning,\n isEnterprise,\n isEncrypted,\n isBCCandCCEnabled,\n customType,\n disableFreeTextOnRecipients,\n allowFormFieldsOnRecipients,\n setExceededMessage,\n useMultipleForms,\n formArray,\n onAddEmail,\n showSender,\n customSenders,\n user,\n showProtectedTag,\n ...props\n}, ref) => {\n const [isNewEmailAdded, setIsNewEmailAdded] = useStateWithAutoReset(false);\n\n const handleAddNewEmail = newEmailAddress => {\n onAddEmail(newEmailAddress);\n onChange({\n ...valueList,\n senderEmail: newEmailAddress,\n recentlyAddedCustomSenderEmails: [...(valueList.recentlyAddedCustomSenderEmails || []), newEmailAddress].map(e => e)\n });\n setIsNewEmailAdded(true);\n };\n\n const ELEMENT_LIST = GenerateRecipientTabElementList({\n emailType,\n userList,\n fieldList: questions,\n formTitle,\n companyTitle,\n isSSOProtected,\n recipientLimit,\n hideToError,\n showUpgradeWarning,\n isEnterprise,\n disableFreeTextOnRecipients,\n allowFormFieldsOnRecipients,\n branding21: true,\n isBCCandCCEnabled,\n customType,\n isEncrypted,\n setExceededMessage,\n useMultipleForms,\n formArray,\n emailSubType,\n showSender,\n valueList,\n handleAddNewEmail,\n senderEmails: customSenders,\n user,\n showProtectedTag\n });\n\n return (\n <>\n \n {isNewEmailAdded && }\n\n \n );\n});\n\nRecipientsWizard.propTypes = {\n emailType: string,\n emailSubType: string,\n formTitle: string,\n companyTitle: string,\n isSSOProtected: bool,\n recipientLimit: oneOfType([bool, number]),\n hideToError: bool,\n showSender: bool,\n ...FormWizard.propTypes\n};\n\nRecipientsWizard.defaultProps = {\n emailType: 'notification',\n emailSubType: null,\n formTitle: '',\n companyTitle: 'JotForm',\n isSSOProtected: false,\n recipientLimit: false,\n hideToError: false,\n showSender: false,\n ...FormWizard.defaultProps\n};\n\nexport default RecipientsWizard;\n","import React, { useMemo } from 'react';\nimport Moment from 'moment'; // This is a big library, do we really need it?\nimport isUndefined from 'lodash/isUndefined';\nimport DatePicker from '../../components/Datepicker';\nimport Dropdown from '../../components/Dropdown';\n\nconst CUSTOM_SEND_DATE_VAL = 'custom';\n\nconst SendDateRenderer = props => {\n const { value, onChange, options: sendDateOptions } = props; // eslint-disable-line react/prop-types\n const options = sendDateOptions.map(({ value: val }) => (val === '' ? 'rightAway' : val)); // eslint-disable-line react/prop-types\n const dateVal = (value === '' || isUndefined(value)) ? 'rightAway' : value;\n const handleDPChange = date => {\n const momentified = Moment.isMoment(date) ? Moment(date).format() : Moment(date);\n onChange(momentified);\n };\n const now = useMemo(() => new Moment(), []);\n const showDatePicker = value === CUSTOM_SEND_DATE_VAL || !(options || []).includes(dateVal);\n const momentValue = useMemo(() => {\n if (!showDatePicker || dateVal === CUSTOM_SEND_DATE_VAL || !dateVal) { return null; }\n const validDate = Moment(dateVal);\n if (!validDate.isValid()) {\n return null;\n }\n if (validDate.diff(Moment(), 'days') < 0) {\n return Moment();\n }\n return validDate;\n }, [showDatePicker, dateVal]);\n return (\n
    \n \n {showDatePicker && (\n <>\n \n on\n \n \n \n )}\n
    \n );\n};\n\nexport default SendDateRenderer;\n","/* eslint-disable complexity */\nimport React, { useCallback } from 'react';\n\nimport { t } from '@jotforminc/translation';\nimport { AlertLabelTypes } from '@jotforminc/constants';\nimport { COMPONENT_NAMES } from '@jotforminc/form-wizard';\nimport { handleCustomNavigation } from '@jotforminc/utils';\nimport { isNewSMTPFlow } from '@jotforminc/enterprise-utils';\nimport { getBaseURL } from '@jotforminc/router-bridge';\n\nimport { EMAIL_TEMPLATE_TYPES } from '../../constants/EmailTemplateTypes';\nimport {\n extendCustomSenderOptions, hasPDFPasswordError,\n prepareGroupedList\n} from '../../helpers/utils';\nimport SendDateRenderer from './SendDateRenderer';\nimport { DROPDOWN_BADGE_TYPES } from '../../helpers/constants';\n\nconst defaults = {\n emailType: EMAIL_TEMPLATE_TYPES.FORM_SUBMIT_NOTIFICATION,\n isEncrypted: false,\n usesNewPDF: 'Yes',\n formID: false,\n isEnterprise: false,\n isHIPAA: false,\n senderEmails: [],\n isSubUser: false,\n valueList: {},\n pdfOptions: [],\n sendDateOptions: [],\n // eslint-disable-next-line no-console\n handleAddNewEmail: () => console.warn('New email added without add fn passed.'),\n v3: false,\n showManualEmailWarning: false,\n allowPDFAttachment: false,\n useMultiFormPDF: false\n};\n\nconst checkIsWorkflowEmail = emailType => emailType.indexOf('WORKFLOW_') === 0;\n\nexport const GenerateAdvanceTabElementList = (params = defaults) => {\n const extended = { ...defaults, ...params };\n const {\n user: userData,\n emailType,\n isEncrypted,\n usesNewPDF,\n formID,\n formTitle,\n isEnterprise,\n senderEmails,\n valueList,\n pdfOptions,\n isHIPAA,\n sendDateOptions,\n handleAddNewEmail,\n v3,\n showManualEmailWarning,\n allowPDFAttachment,\n branding21,\n forms,\n PDFData,\n newFormatedData,\n useMultiFormPDF,\n pdfRelatedConfigsForAllForm,\n attachPDFLoading,\n isAttachPDFLimitExceeded,\n hasMissingPDFAttachment,\n handleAddNewSmtp\n } = extended;\n const { senderEmail } = valueList;\n const isWorkflowEmail = checkIsWorkflowEmail(emailType);\n const isAutoResponder = emailType === EMAIL_TEMPLATE_TYPES.FORM_SUBMIT_AUTORESPONDER;\n const isNotification = emailType === EMAIL_TEMPLATE_TYPES.FORM_SUBMIT_NOTIFICATION;\n const isAppointmentReminder = emailType === EMAIL_TEMPLATE_TYPES.APPOINTMENT_REMINDER;\n const isSendEmail = emailType === EMAIL_TEMPLATE_TYPES.WORKFLOW_SEND_EMAIL_GENERAL;\n const isAssignFormEmail = emailType === EMAIL_TEMPLATE_TYPES.WORKFLOW_ASSIGN_FORM_NOTIFICATION;\n const showSelectedPDFOptionsWithMultipleForm = useMultiFormPDF && isSendEmail;\n let isPDFPasswordRequiredOnHIPAA = true;\n if (isEnterprise && valueList?.isPDFPasswordRequiredOnHIPAA !== undefined) {\n isPDFPasswordRequiredOnHIPAA = valueList?.isPDFPasswordRequiredOnHIPAA;\n }\n\n const requirePasswordSetupOnHIPAA = isEnterprise ? (isHIPAA && isPDFPasswordRequiredOnHIPAA) : isHIPAA;\n\n return {\n sendOnSubmit: {\n condition: () => (v3 && (isAutoResponder || isNotification)),\n componentProps: {\n className: 'newEmailsCheckbox py-1',\n label: t('When a submission is received')\n },\n type: COMPONENT_NAMES.MagnetCheckbox,\n labelProps: {\n label: t('Send Email Automatically'),\n description: t('Automatically trigger the email when a specific action occurs')\n }\n },\n sendOnEdit: v3 ? {\n condition: () => isAutoResponder || isNotification,\n componentProps: {\n className: 'newEmailsCheckbox py-1',\n label: t('When a submission is edited')\n },\n type: COMPONENT_NAMES.MagnetCheckbox\n } : {\n condition: () => isAutoResponder || isNotification,\n type: COMPONENT_NAMES.EmailToggle,\n labelProps: {\n className: 'formWizard-wrapper isVertical',\n label: t('Send on Edit'),\n description: emailType === EMAIL_TEMPLATE_TYPES.FORM_SUBMIT_NOTIFICATION\n ? t('Decide when you\\'d like to send this email')\n : t('Users can get a new email every time the form submission is edited.')\n }\n },\n sendingManuallyWarning: {\n condition: () => (v3 && showManualEmailWarning && (isAutoResponder || isNotification) && !valueList.sendOnEdit && !valueList.sendOnSubmit),\n labelProps: {\n className: 'sendingManuallyWarning'\n },\n componentProps: {\n children: (\n \n {t('VIEW')}\n \n ),\n label: t('This email can only be sent manually from the {TABLE_NAME} Table').replace('{TABLE_NAME}', formTitle),\n messageType: AlertLabelTypes.INFO\n },\n type: COMPONENT_NAMES.AlertLabelWithIcon\n },\n uploadAttachment: {\n condition: () => ((isNotification || isWorkflowEmail) && !isAssignFormEmail && !isEncrypted),\n type: COMPONENT_NAMES.EmailToggle,\n labelProps: {\n className: 'formWizard-wrapper isVertical newStyledToggle',\n label: t('Send File Uploads as Attachments'),\n description: t('Attach files uploaded through your form to this email')\n }\n },\n attachPDF: {\n condition: () => ((allowPDFAttachment || isAppointmentReminder || isNotification || isAutoResponder) && !isEncrypted && !isAssignFormEmail),\n type: attachPDFLoading ? 'LOADING' : COMPONENT_NAMES.EmailToggle,\n labelProps: {\n className: 'formWizard-wrapper isVertical newStyledToggle',\n label: showSelectedPDFOptionsWithMultipleForm ? t('Send Submission PDFs') : t('Attach PDF'),\n // eslint-disable-next-line no-nested-ternary\n description: (usesNewPDF === 'Yes')\n ? (showSelectedPDFOptionsWithMultipleForm ? t('Selected submissions will be sent as PDF Documents.') : t('Select PDFs to attach to this email'))\n : ( // TODO: @Gokay, add translation please.\n
    \n Recipients can get a PDF attachments of submitted form data. You can edit PDF in \n \n PDF Editor\n \n
    \n )\n }\n },\n selectedPDFOptions: {\n type: COMPONENT_NAMES.SelectList,\n componentProps: {\n formID,\n isAttachPDFLimitExceeded,\n emailType,\n username: userData?.username,\n planType: userData?.accountType || userData?.account_type?.name,\n options: pdfOptions,\n showSelectAll: pdfOptions?.length > 1,\n showSelectedItemCount: false,\n hasMissingPDFAttachment\n },\n condition: () => (!showSelectedPDFOptionsWithMultipleForm && usesNewPDF === 'Yes' && valueList.attachPDF)\n },\n pdfDocuments: {\n type: COMPONENT_NAMES.PDFSelectList,\n componentProps: {\n forms,\n PDFData,\n pdfOptions,\n newFormatedData,\n pdfRelatedConfigsForAllForm\n },\n condition: () => (showSelectedPDFOptionsWithMultipleForm && usesNewPDF === 'Yes' && valueList.attachPDF)\n },\n ...(isWorkflowEmail ? {\n enablePDFPassword: {\n type: COMPONENT_NAMES.EmailToggle,\n componentProps: {\n squareMode: true,\n label: t('Enable PDF Password'),\n backgroundColor: '#01bd6f',\n borderColor: '#d8dae9',\n ...(requirePasswordSetupOnHIPAA\n ? {\n readOnly: true,\n value: true\n }\n : {}\n )\n },\n labelProps: {\n className: 'formWizard-wrapper isVertical',\n label: t('Enable PDF Password'),\n description: t('Secure your PDF with a password.')\n },\n condition: () => valueList.attachPDF\n }\n } : {}),\n PDFPassword: {\n type: isWorkflowEmail ? COMPONENT_NAMES.ResettablePassword : COMPONENT_NAMES.Password,\n isCompositeFields: true,\n componentProps: {\n initialValue: valueList.PDFPassword === '*jfplaceholder*' ? '*****' : '',\n disclaimer: requirePasswordSetupOnHIPAA ? t('Due to HIPAA regulations, you need to set a password to the PDF.') : '',\n isHIPAA: requirePasswordSetupOnHIPAA,\n isSelected: valueList.enablePDFPassword,\n ignoreBlurRequirementOnValidation: true,\n validateOnMount: requirePasswordSetupOnHIPAA && valueList.PDFPassword !== '*jfplaceholder*',\n autoComplete: 'new-password',\n MainWrapper: useCallback(({ children }) => , []),\n ToggleWrapper: useCallback(({ children }) =>
    {children}
    , []),\n LabelWrapper: useCallback(({ children }) =>
    {children}
    , []),\n SublabelRenderer: useCallback(({ children }) =>
    {children}
    , []),\n LabelRenderer: useCallback(({ children }) =>
    {children}
    , []),\n PasswordWrapper: useCallback(({ children }) =>
    {children}
    , []),\n isErrored: value => {\n const { PDFPassword } = value || {};\n const isPasswordProtectionEnabled = valueList.enablePDFPassword || requirePasswordSetupOnHIPAA;\n if (PDFPassword && valueList.attachPDF\n && isPasswordProtectionEnabled\n && valueList.PDFPassword !== '*jfplaceholder*'\n ) return hasPDFPasswordError(PDFPassword);\n return false;\n }\n },\n condition: () => (isWorkflowEmail ? valueList.attachPDF && (valueList.enablePDFPassword || requirePasswordSetupOnHIPAA) : valueList.attachPDF)\n },\n attachment: {\n condition: () => (isAppointmentReminder || isWorkflowEmail || isAutoResponder),\n type: COMPONENT_NAMES.FileUpload,\n componentProps: {\n multi: false,\n allowedTypes: 'application/pdf, application/doc, application/msword, image/png, image/jpg, image/jpeg, application/vnd.openxmlformats-officedocument.wordprocessingml.document'\n },\n labelProps: {\n label: t('Attach File'),\n description: t('Attach a file to this email')\n }\n },\n sendDate: {\n condition: () => (isAutoResponder),\n type: COMPONENT_NAMES.Dropdown,\n labelProps: {\n className: 'formWizard-wrapper',\n label: t('Send Email Later'),\n description: t('Choose to send this email instantly upon submission, or at a later date')\n },\n componentProps: {\n options: sendDateOptions\n },\n ComponentRenderer: SendDateRenderer\n },\n hideEmptyFields: {\n condition: () => ((isAppointmentReminder || isNotification || isAutoResponder || isWorkflowEmail) && !isAssignFormEmail),\n type: COMPONENT_NAMES.EmailToggle,\n labelProps: {\n className: 'formWizard-wrapper isVertical newStyledToggle',\n label: t('Hide Empty Fields'),\n description: t(('Don\\'t show unanswered fields in email'))\n }\n },\n updateEmail: {\n condition: () => isAutoResponder || isNotification,\n type: COMPONENT_NAMES.EmailToggle,\n labelProps: {\n className: 'formWizard-wrapper isVertical newStyledToggle',\n label: t('Update Email'),\n description: t('Update this email automatically when its form is edited')\n }\n },\n senderEmail: {\n type: isNewSMTPFlow(userData) ? COMPONENT_NAMES.GroupedDropdown : COMPONENT_NAMES.Dropdown,\n labelProps: {\n label: t('Sender Email'),\n // replace after to not break translations\n description: t('Select an email address to show as the sender', { branding21 })\n },\n componentProps: {\n triggerChangeOnDatasetChange: true,\n ignoreBlurRequirementOnValidation: true,\n options: extendCustomSenderOptions(senderEmails, isEnterprise, userData),\n ...(isNewSMTPFlow(userData) && {\n groupedList: prepareGroupedList(extendCustomSenderOptions(senderEmails, isEnterprise, userData))\n }),\n ...(isNewSMTPFlow(userData) && { badgeTypesList: DROPDOWN_BADGE_TYPES }),\n ...(isNewSMTPFlow(userData) && {\n navigationButtonProps: {\n text: t('Manage Your Sender Email Addresses'),\n onClick: () => {\n const navigateToSMTPSettings = `${getBaseURL()}/${window?.teamID ? `myaccount/team/${window.teamID}/team-settings` : 'myaccount/settings'}`;\n handleCustomNavigation(navigateToSMTPSettings, '_blank', true);\n }\n }\n }),\n isErrored: value => {\n if (isNewSMTPFlow(userData)) {\n if (!value) {\n return true;\n }\n return false;\n }\n if (value === 'addNewAddress') {\n return true;\n }\n return false;\n }\n }\n },\n ...(!isNewSMTPFlow(userData) && {\n newEmailWizard: {\n type: 'email_wizard_new_sender_email_wizard',\n static: true,\n componentProps: {\n onAddEmail: handleAddNewEmail,\n handleAddNewSmtp: handleAddNewSmtp\n },\n condition: () => senderEmail === 'addNewAddress'\n }\n })\n };\n};\n","import {\n arrayOf, bool, func, shape, string\n} from 'prop-types';\nimport React, {\n useState, forwardRef, useMemo\n} from 'react';\nimport { t } from '@jotforminc/translation';\nimport { useStateWithAutoReset } from '@jotforminc/hooks';\nimport { Hooks } from '@jotforminc/uikit';\nimport AlertLabelWithIcon from '@jotforminc/alert-label';\nimport { AlertLabelTypes } from '@jotforminc/constants';\nimport { FormWizard, FormWizardWithoutErrorProvider } from '@jotforminc/form-wizard';\n\nimport { getMissingPDFAttachmentMessage } from '@jotforminc/utils';\nimport EMAIL_WIZARD_FORM_WIZARD_COMPONENT_TYPE_LIST from '../../constants/FormWizardComponentTypes';\nimport { GenerateAdvanceTabElementList } from './ElementListGenerator';\nimport { actionTrack } from '../../helpers/utils';\n\nconst AdvanceWizard = forwardRef(({\n emailType,\n customSenders,\n valueList,\n defaultValue: BaseDefaultValue,\n onChange, onAddEmail,\n isEnterprise, isHIPAA, isEncrypted, isBuilder, usesNewPDF, formID, formTitle, user, forms, useMultiFormPDF, pdfRelatedConfigsForAllForm,\n PDFData, newFormatedData, isSubUser, pdfOptions, sendDateOptions, v3, showManualEmailWarning, allowPDFAttachment, attachPDFLoading, isAttachPDFLimitExceeded, ...props\n}, ref) => {\n const [missingAttachmentWarningShowed, setMissingAttachmentWarningShowed] = useState(false);\n const [isNewEmailAdded, setIsNewEmailAdded] = useStateWithAutoReset(false);\n\n const handleAddNewEmail = newEmailAddress => {\n onAddEmail(newEmailAddress, () => {\n onChange({\n ...valueList,\n senderEmail: newEmailAddress,\n recentlyAddedCustomSenderEmails: [...(valueList.recentlyAddedCustomSenderEmails || []), newEmailAddress].map(e => e)\n });\n setIsNewEmailAdded(true);\n });\n };\n\n const handleAddNewSmtp = newEmailAddress => {\n onChange({\n ...valueList,\n senderEmail: newEmailAddress,\n recentlyAddedCustomSenderEmails: [...(valueList.recentlyAddedCustomSenderEmails || []), newEmailAddress].map(e => e)\n });\n setIsNewEmailAdded(true);\n };\n\n const missingPDFAttachmentMessage = useMemo(() => {\n if (valueList && Object.keys(valueList).length) {\n const { selectedPDFOptions = [] } = valueList;\n const sanitizedSelectedPDFOptions = !Array.isArray(selectedPDFOptions) ? [selectedPDFOptions] : selectedPDFOptions;\n // form id is added as default selected attachment while creating the email for the first time,\n // therefore, when the form already has PDF documents, form id should be excluded from difference check.\n const currentSelectedPDFIDs = sanitizedSelectedPDFOptions.reduce((prev, pdfID) => {\n if (pdfID === formID || pdfID === 'importedPDF') {\n return [...prev];\n }\n return [...prev, pdfID];\n }, []);\n const availablePDFIDs = (Array.isArray(pdfOptions) ? pdfOptions : []).reduce((prev, curr) => {\n const { value } = curr;\n if (value) {\n return [...prev, value];\n }\n return prev;\n }, []);\n return getMissingPDFAttachmentMessage(availablePDFIDs, currentSelectedPDFIDs);\n }\n }, [valueList, pdfOptions]);\n\n const elementList = GenerateAdvanceTabElementList({\n user,\n emailType,\n isEncrypted,\n usesNewPDF,\n formID,\n formTitle,\n isEnterprise,\n senderEmails: customSenders,\n isSubUser,\n valueList,\n pdfOptions,\n isHIPAA,\n isBuilder,\n sendDateOptions,\n handleAddNewEmail,\n handleAddNewSmtp,\n v3,\n showManualEmailWarning,\n allowPDFAttachment,\n branding21: true,\n forms,\n PDFData,\n newFormatedData,\n useMultiFormPDF,\n pdfRelatedConfigsForAllForm,\n attachPDFLoading,\n isAttachPDFLimitExceeded,\n hasMissingPDFAttachment: Boolean(missingPDFAttachmentMessage) && !missingAttachmentWarningShowed\n });\n\n Hooks.useEffectIgnoreFirst(() => {\n // Needed for track AB test metrics.\n actionTrack({ username: user?.username, action: valueList?.attachPDF ? 'toggled-on' : 'toggled-off', target: `${emailType}-attach-pdf` });\n }, [valueList?.attachPDF]);\n\n Hooks.useEffectIgnoreFirst(() => {\n setMissingAttachmentWarningShowed(true);\n }, [valueList?.selectedPDFOptions]);\n\n return (\n <>\n \n {isNewEmailAdded && }\n \n );\n});\n\nAdvanceWizard.propTypes = {\n ...FormWizard.propTypes,\n onAddEmail: func,\n emailType: string.isRequired,\n pdfOptions: arrayOf(shape({})),\n isEnterprise: bool,\n isBuilder: bool,\n enableLimitPDFAttachment: bool,\n attachPDFLoading: bool\n};\n\nAdvanceWizard.defaultProps = {\n ...FormWizard.defaultProps,\n onAddEmail: f => f,\n pdfOptions: [],\n isEnterprise: false,\n isBuilder: false,\n enableLimitPDFAttachment: false,\n attachPDFLoading: false\n};\n\nexport default AdvanceWizard;\n","import React, { forwardRef } from 'react';\nimport Styled from 'styled-components';\nimport { Dropdown as UIKitDropdown } from '@jotforminc/uikit';\nimport { IconAngleDown } from '@jotforminc/svg-icons';\nimport { node, shape, string } from 'prop-types';\n\nconst ScButton = Styled.button`\n background: transparent;\n display: flex;\n align-items: center;\n border-radius: 2px;\n border: 1px solid #d8dae9;\n box-shadow: none;\n font-size: 16px;\n line-height: 1.25;\n padding: 0;\n cursor: pointer;\n width: 100%;\n\n .dd-t { flex: 1 1 auto; padding: .5rem .5rem .5rem .75rem; color: #2c3345; font-size: .875em; line-height: 1.25rem;\n text-align: left; }\n .dd-s { padding: .5em; }\n .dd-s svg { display: block; width: 24px; height: 24px; }\n\n &:focus { outline: none; border-color: #bbb; }\n`;\n\nconst ScOptionList = Styled.ul`\n list-style: none;\n margin: 0;\n padding: .25em 0;\n background-color: #fff;\n border: 1px solid #d8dae9;\n font-size: .875em;\n border-radius: 0 0 2px 2px;\n box-shadow: 0 0 9px 0 rgba(0, 0, 0, 0.16);\n max-height: 215px;\n overflow-y: auto;\n\n li.i div {\n padding: .5rem .75rem;\n user-select: none;\n cursor: pointer;\n }\n li.i:hover div,\n li.i.isHovering div {\n background-color: rgba(0,0,0,.1);\n }\n\n li.i div[data-selected=true] { background-color: #e5e6e7; }\n\n /* option group listing */\n .og-l { list-style: none; padding: 0; margin: 0; text-indent: 1em; }\n .og-t { font-weight: 700; padding: .5rem .75rem; }\n .og + .og .og-t { padding: .75rem .75rem .5rem; border-top: 1px solid #d8dae9; margin-top: .5em; }\n`;\n\nconst DdButton = forwardRef(({ option, ...props }, ref) => {\n if (!option) {\n return
    ;\n }\n const { text, value } = option;\n return (\n \n {text}\n \n \n );\n});\n\nDdButton.propTypes = {\n option: shape().isRequired\n};\n\nconst DdList = ({ children, id }) => (\n \n {children}\n \n);\n\nDdList.propTypes = {\n children: node.isRequired,\n id: string.isRequired\n};\n\nconst Dropdown = props => {\n return (\n
    {text}
    }\n OptionContainerRenderer={pr =>
  • }\n GroupRenderer={({ text, children, ...p }) => (\n
  • \n
    {text}
    \n
      {children}
    \n
  • \n )}\n {...props}\n />\n );\n};\n\nexport default Dropdown;\n","import Styled from 'styled-components';\n\nconst customFont = '-apple-system, BlinkMacSystemFont, \"Segoe UI\", roboto, oxygen-sans, ubuntu, cantarell, \"Helvetica Neue\", sans-serif';\n// '\"CircularStd\", \"Work Sans SemiBold\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", roboto, oxygen-sans, ubuntu, cantarell, \"Helvetica Neue\", sans-serif';\n\nconst commonStyles = `\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n text-rendering: optimizeLegibility;\n font-family: ${customFont};\n font-size: 1em;\n`;\n\nexport const ScSchWrapper = Styled.div`\n ${commonStyles}\n\n &, * { box-sizing: border-box; }\n\n .isub { padding: 1.5em 0; }\n .isub:first-child { padding-top: 0; }\n .isub:last-child { padding-bottom: 0; }\n .isub + .isub { border-top: 1px solid #eaebf2; }\n\n .iline { display: flex; justify-content: space-between; }\n .iline + .iline { margin-top: 1.5em; }\n\n .icell { flex: 0 0 calc(50% - .4375em); min-width: 0; }\n .icell.isF { flex: 0 0 100%; }\n .icell + .icell { margin: 0 0 0 .875em; }\n\n .ilabel { display: block; color: #2c3345; font-weight: 700; margin: 0 0 .375em 0; }\n .iddw { position: relative; }\n\n .sei + & { margin-top: .75em; padding-top: 1.5em; border-top: 1px solid #eaebf2; }\n\n @media screen and (max-width: 480px) {\n .iline { flex-direction: column; }\n .icell, .icell.isF { flex: 1 1 auto; }\n .icell + .icell { margin: 1.5em 0 0; }\n }\n`;\n","// extracted by css-extract-rspack-plugin\nexport {};","/* eslint-disable react/prop-types */\nimport React from 'react';\nimport Styled from 'styled-components';\nimport { SelectionGroup as UIKitOptionGroup } from '@jotforminc/uikit';\n\nconst ScToggleItem = Styled.div`\n font-size: 16px;\n padding: 0.5em 0;\n line-height: 1.25;\n text-align: center;\n color: #2c3345;\n transition: all .15s ease;\n letter-spacing: -.2px;\n cursor: pointer;\n border: 1px solid #d8dae9;\n\n &[data-selected=true] {\n background: #54b45c;\n color: #fff;\n font-weight: 700;\n cursor: default;\n border-color: #54b45c;\n }\n\n &:focus {\n box-shadow: 0 0 0px 3px rgba(84, 180, 92, 0.3);\n outline: 0;\n }\n`;\n\nconst ScToggle = Styled.ul`\n list-style: none;\n display: flex;\n margin: 0;\n padding: 0;\n\n li { flex: 1 1 auto; }\n li + li { ${ScToggleItem} { border-left: 0; } }\n li:first-child ${ScToggleItem} { border-radius: 2px 0 0 2px; }\n li:last-child ${ScToggleItem} { border-radius: 0 2px 2px 0; }\n`;\n\nconst ToggleItem = ({\n option: {\n text, value, key\n }, isSelected, disabled\n}) => (\n \n {text}\n \n);\n\nconst Toggle = props => {\n const { disabled, name } = props;\n\n return (\n {children}}\n OptionRenderer={optionProps => (\n \n )}\n {...props}\n />\n );\n};\n\nexport default Toggle;\n","import React, { Component, createRef } from 'react';\nimport PropTypes from 'prop-types';\nimport moment from 'moment-timezone';\nimport { OptionGroup } from '@jotforminc/option-group';\nimport DatePicker from '@jotforminc/date-picker';\nimport { getTimeZone } from '@jotforminc/utils';\nimport { ScheduleDropdownOptions } from '@jotforminc/constants';\nimport { t } from '@jotforminc/translation';\n\nimport Dd from './components/Dropdown';\nimport { ScSchWrapper } from './scIndex';\nimport Toggle from './components/Toggle';\n\nexport default class SchedulePanel extends Component {\n constructor(props) {\n super(props);\n\n this.state = this.prepareState();\n\n this.endDatePickerRef = createRef();\n this.renderIntervalRadio = this.renderIntervalRadio.bind(this);\n }\n\n handleDatePickerChange(date, key) {\n if (date) {\n const stringDate = moment(date).format('LL');\n this.setState({ [key]: stringDate });\n }\n }\n\n get scheduleDuration() {\n const { interval } = this.state;\n const scheduleDuration = new Date();\n const f = { daily: 1, weekly: 2, monthly: 12 };\n const disabledYears = new Date().getMonth() + f[interval];\n scheduleDuration.setMonth(disabledYears);\n return scheduleDuration;\n }\n\n get scheduleData() {\n const {\n interval, timeZone, sendTime, startDate, endDate, sendDate, selectedDay\n } = this.state;\n return {\n interval,\n timeZone,\n sendTime,\n startDate,\n endDate: endDate || 'noEndDate',\n sendDate: sendDate[interval],\n selectedDay\n };\n }\n\n prepareState = () => {\n const { timeZone, currentEmailProps } = this.props;\n const { endDate } = currentEmailProps;\n\n const preferedTz = currentEmailProps.timeZone || timeZone;\n const activeEnd = endDate && endDate !== 'noEndDate' ? endDate : '';\n const validTZ = getTimeZone(preferedTz);\n return {\n interval: currentEmailProps.interval || 'daily',\n timeZone: validTZ,\n sendTime: currentEmailProps.sendTime || '09:00',\n sendDate: {\n daily: (currentEmailProps.interval === 'daily' && currentEmailProps.sendDate) || 'weekIn',\n weekly: (currentEmailProps.interval === 'weekly' && currentEmailProps.sendDate) || 'everyMonday',\n monthly: (currentEmailProps.interval === 'monthly' && currentEmailProps.sendDate) || 'firstWorkDay'\n },\n startDate: currentEmailProps.startDate || new Date().toDateString(),\n endDate,\n activeEnd,\n selectedDay: currentEmailProps.selectedDay || '15'\n };\n };\n\n reInitializeState = () => {\n const newState = this.prepareState();\n this.setState(newState);\n };\n\n // translation of 'Send Time' translation\n translatedTimeValue() {\n const translatedValue = [];\n ScheduleDropdownOptions.time.sendTime.forEach(el => {\n translatedValue.push({\n ...el,\n text: el.text.split(' ').map(a => t(a)).join(' ')\n });\n });\n return translatedValue;\n }\n\n // translation of 'Send date' dropdown list\n translatedDateValue() {\n const { interval } = this.state;\n const translatedValue = ScheduleDropdownOptions.sendDate()[interval].map(el => {\n return { ...el, text: t(el.text) };\n });\n return translatedValue;\n }\n\n // translation of Repeat interval tabs\n translatedRepeatsTabValue() {\n const translatedValue = ScheduleDropdownOptions.interval().map(el => {\n return { ...el, text: t(el.text) };\n });\n return translatedValue;\n }\n\n renderIntervalRadio() {\n const { changeInterval } = this.props;\n const { interval } = this.state;\n return (\n
    \n
    \n
    {t('Repeats')}
    \n {\n this.setState({ interval: option, activeEnd: false, endDate: 'noEndDate' });\n changeInterval(option);\n }}\n />\n
    \n
    \n );\n }\n\n renderSendTime() {\n const { sendTime, timeZone } = this.state;\n const {\n timeZoneProps: {\n extendOnGroupSearch = false,\n filterable = false,\n NoResultsRenderer = null,\n textInputPlaceholder = ''\n }\n } = this.props;\n\n return (\n
    \n
    \n
    {t('Send Time')}
    \n
    \n this.setState({ sendTime: option.value })}\n />\n
    \n
    \n
    \n
    {t('Time Zone')}
    \n
    \n this.setState({ timeZone: option.value })}\n extendOnGroupSearch={extendOnGroupSearch}\n filterable={filterable}\n textInputPlaceholder={textInputPlaceholder}\n NoResultsRenderer={NoResultsRenderer}\n />\n
    \n
    \n
    \n );\n }\n\n renderSendDate() {\n const { sendDate, interval, selectedDay } = this.state;\n return (\n
    \n
    \n
    {t('Send Date')}
    \n
    \n this.setState(\n { sendDate: { ...sendDate, ...{ [interval]: option.value } } }\n )}\n />\n
    \n
    \n {sendDate[interval] === 'selectedDay' && (\n
    \n
    {t('Select a Day')}
    \n
    \n this.setState({ selectedDay: option.value })}\n />\n
    \n
    \n )}\n
    \n );\n }\n\n renderStartDate() {\n const { startDate, endDate, activeEnd } = this.state;\n const startDateMoment = moment(startDate, ['LL', 'ddd MMM DD YYYY'], 'en'); // ['February 28, 2020' , 'Tue Feb 25 2020']\n const definedEndDate = endDate || moment(this.scheduleDuration).format('LL');\n const endDateMoment = activeEnd ? moment(definedEndDate, ['LL', 'ddd MMM DD YYYY']) : null;\n\n const picker = (\n date.isAfter(startDateMoment)}\n onChange={date => {\n this.handleDatePickerChange(date, 'endDate');\n this.setState({ activeEnd: true });\n }}\n preventOpenOnFocus={true}\n startOpen={!!(endDate === undefined && activeEnd)}\n />\n );\n\n return (\n
    \n
    \n
    {t('Start Date')}
    \n {\n this.handleDatePickerChange(date, 'startDate');\n }}\n />\n
    \n
    \n
    {t('End Date')}
    \n {\n if (newVal === 'activeEnd') {\n if (endDate === '' || endDate === 'noEndDate') {\n if (this.endDatePickerRef.current && global.document.activeElement === this.endDatePickerRef.current.input) {\n return;\n }\n\n this.setState({ endDate: moment(this.scheduleDuration).format('LL') });\n }\n this.setState({ activeEnd: true });\n } else { // noEndDate\n this.setState({ activeEnd: false, endDate: '' });\n }\n }}\n />\n
    \n
    \n );\n }\n\n renderMessage() {\n const { message } = this.props;\n const { type, text } = message;\n if (!type || !text) {\n return;\n }\n let style = {};\n\n if (type === 'error') {\n style = {\n color: '#f90321',\n fontSize: '14px'\n };\n }\n\n return
    {text}
    ;\n }\n\n render() {\n const { hideStartDate } = this.props;\n return (\n \n
    \n { this.renderIntervalRadio() }\n { this.renderSendDate() }\n
    \n
    \n { this.renderSendTime() }\n
    \n {\n !hideStartDate && (\n
    \n { this.renderStartDate() }\n
    \n )\n }\n { this.renderMessage() }\n
    \n );\n }\n}\n\nSchedulePanel.propTypes = {\n timeZone: PropTypes.string,\n currentEmailProps: PropTypes.object,\n changeInterval: PropTypes.func,\n message: PropTypes.object,\n hideStartDate: PropTypes.bool,\n timeZoneProps: PropTypes.object\n};\n\nSchedulePanel.defaultProps = {\n timeZone: '',\n currentEmailProps: {},\n changeInterval: f => f,\n message: {\n type: '',\n text: ''\n },\n hideStartDate: false,\n timeZoneProps: {}\n};\n","import React, { forwardRef } from 'react';\nimport { shape, func } from 'prop-types';\nimport { t } from '@jotforminc/translation';\nimport SchedulePanel from '@jotforminc/schedule-panel';\nimport { capitalizeFirstLetter } from '@jotforminc/utils';\n\nconst ScheduleWizard = forwardRef(({\n valueList,\n onChange\n}, ref) => {\n const handleIntervalChange = interval => {\n const { subject = '', ...remainingValueList } = valueList;\n const pattern = `(^${t('Daily Reminder')}|^${t('Weekly Reminder')}|^${t('Monthly Reminder')})`;\n const regexp = new RegExp(`${pattern}:`);\n const intervalReplacedSubject = subject.replace(regexp, `${t(`${capitalizeFirstLetter(interval)} Reminder`)}:`);\n\n onChange({ scheduleReminderProps: { ...remainingValueList, interval }, subject: intervalReplacedSubject });\n };\n\n return (\n \n );\n});\n\nScheduleWizard.propTypes = {\n valueList: shape({\n currentEmailProps: shape({})\n }).isRequired,\n onChange: func.isRequired\n};\n\nexport default ScheduleWizard;\n","import { t } from '@jotforminc/translation';\n\nexport const generateTabList = () => ({ // Func due to translation\n email: { label: t('Email').toUpperCase() },\n recipients: { label: t('Recipients').toUpperCase() },\n sender: { label: t('Sender').toUpperCase() },\n advance: { label: t('Advanced').toUpperCase() },\n schedule: { label: t('Schedule').toUpperCase() }\n});\n","import { RequestLayer, Interceptors } from '@jotforminc/request-layer';\n\nexport const requestLayer = new RequestLayer('/API', {\n interceptorConfig: {\n teamID: global.teamID,\n customResponseInterceptors: [Interceptors.requestManagerResponseNormalizer],\n shouldCache: true,\n logCachePayload: {\n projectName: 'email-wizards'\n }\n }\n});\n\nexport const getSenderEmailList = (formID, resourceID, iak = '') => requestLayer.get(`smtpConfig/getConfigsByResource/${formID}/${resourceID}${iak ? `?apiKey=${iak}` : ''}`);\n","/* eslint-disable max-statements */\nimport React, {\n forwardRef, useEffect, useImperativeHandle, useState, useMemo, useRef, useReducer, useCallback\n} from 'react';\nimport {\n array,\n arrayOf, bool, func, number, shape, string\n} from 'prop-types';\nimport { Hooks } from '@jotforminc/uikit';\n\nimport { Tab, TabListWithStyles } from '@jotforminc/tabs';\nimport { colorifyFormArray, getAccountTypeName, computeQuestions } from '@jotforminc/utils';\nimport { withErrorProvider, useErrors } from '@jotforminc/form-wizard';\nimport { getActiveApp, getFullPath } from '@jotforminc/router-bridge';\n\nimport { PasswordWithToggle } from '@jotforminc/login-flow';\nimport { t } from '@jotforminc/translation';\nimport { isEnterprise } from '@jotforminc/enterprise-utils';\nimport TabListWrapper from './components/TabList/TabListWrapper';\n\nimport EmailWizard from './wizards/Email';\nimport RecipientsWizard from './wizards/Recipients';\nimport AdvanceWizard from './wizards/Advance';\nimport ScheduleWizard from './wizards/Schedule';\n\nimport './styles/jfEmailWizard.scss';\nimport {\n arrangeCustomSender,\n computeDropdownOptions, computeStaticFields, extractResourceID, fixLogos, getApiKeyFromUrl, getRecipientLimitConfig,\n getSenderOptions\n} from './helpers/utils';\nimport { EmailsUtils } from './helpers/EmailWizardHelper';\nimport { generateTabList } from './constants/TabList';\nimport { EMAIL_WIZARD_COMMON_DEFAULT_PROPS, EMAIL_WIZARD_COMMON_PROP_TYPES } from './constants/PropTypes';\nimport { EMAIL_TEMPLATE_TYPES } from './constants/EmailTemplateTypes';\nimport { getSenderEmailList } from './api';\n\nconst getTabList = (emailType, emailSubType) => {\n const TAB_LIST = generateTabList();\n switch (emailType) {\n case EMAIL_TEMPLATE_TYPES.FORM_SAVE_AND_CONTINUE_LATER: {\n const {\n recipients, sender, schedule, ...rest\n } = TAB_LIST;\n return {\n ...rest\n };\n }\n case EMAIL_TEMPLATE_TYPES.FORM_SHARE: {\n const {\n sender, advance, schedule, ...rest\n } = TAB_LIST;\n return {\n ...rest\n };\n }\n case EMAIL_TEMPLATE_TYPES.FORM_REMINDER: {\n const { sender, advance, ...rest } = TAB_LIST;\n return {\n ...rest\n };\n }\n case EMAIL_TEMPLATE_TYPES.WORKFLOW_ASSIGN_FORM_NOTIFICATION: {\n const { recipients, schedule, ...rest } = TAB_LIST;\n return {\n ...rest\n };\n }\n case EMAIL_TEMPLATE_TYPES.SHEETS_SEND_FORM: {\n const {\n recipients, schedule, advance, ...rest\n } = TAB_LIST;\n return {\n ...rest\n };\n }\n case EMAIL_TEMPLATE_TYPES.WORKFLOW_APPROVE_START: {\n const { recipients, schedule, ...rest } = TAB_LIST;\n return {\n ...rest\n };\n }\n case EMAIL_TEMPLATE_TYPES.WORKFLOW_ASSIGN_TASK: {\n const { recipients, schedule, ...rest } = TAB_LIST;\n return {\n ...rest\n };\n }\n case EMAIL_TEMPLATE_TYPES.WORKFLOW_SEND_EMAIL_GENERAL: {\n if (emailSubType && emailSubType === EMAIL_TEMPLATE_TYPES.WORKFLOW_SEND_PDF) {\n const {\n recipients, advance, schedule, ...rest\n } = TAB_LIST;\n return {\n ...rest\n };\n }\n if (emailSubType && emailSubType === EMAIL_TEMPLATE_TYPES.WORKFLOW_SEND_REPORT) {\n const {\n recipients, schedule, ...rest\n } = TAB_LIST;\n return {\n ...rest\n };\n }\n const { sender, schedule, ...rest } = TAB_LIST;\n return {\n ...rest\n };\n }\n default: {\n const { sender, schedule, ...rest } = TAB_LIST;\n return {\n ...rest\n };\n }\n }\n};\n\nconst TabbedWizards = forwardRef(({\n // Configuration values\n emailType, formTitle, questions, userList, companyTitle, user, owner, formID, recipientLimit, defaultActiveTab,\n // Flags\n isHIPAA, isEncrypted, isSSOProtected, isSubUser, usesNewPDF, v3, showManualEmailWarning, disableFreeTextOnRecipients,\n allowFormFieldsOnRecipients, showProtectedTag, isBuilder, isBCCandCCEnabled, customType,\n // Form values\n subject, content, replyTo, to, cc, bcc, attachment, senderName, senderEmail,\n hideEmptyFields, sendOnEdit, sendOnSubmit, attachPDF, pdfOptions, enablePDFPassword, isPDFPasswordRequiredOnHIPAA,\n sendDate, sendDateOptions, uploadAttachment, selectedPDFOptions, pdfDocuments, pdfRelatedConfigsForAllForm,\n updateEmail, PDFPassword, useJotformSign,\n // Schedule reminder props\n scheduleReminderProps,\n // Handlers\n onChange: baseOnChange, onError, onAddEmail, onEditorInit,\n extraEditorButtons = [],\n staticFields,\n allowPDFAttachment,\n useMultipleForms,\n forms,\n PDFData,\n formArray: formArrayProp,\n useMultiFormPDF,\n emailSubType,\n customActionButtons,\n onCustomButtonSettingClick,\n selectedRow,\n editorPopoverButtons,\n editorInitCallbacks,\n teamMembers,\n showPasswordProtectionToggle,\n onPDFPasswordValidate,\n enableLimitPDFAttachment,\n attachPDFLoading,\n formProperties\n}, ref) => {\n const [valueList, setValueList] = useState({\n subject,\n content: fixLogos(content),\n replyTo,\n to,\n attachment,\n senderName: senderName?.replace(/JotForm/gm, 'Jotform'),\n senderEmail,\n hideEmptyFields,\n sendOnEdit,\n sendOnSubmit,\n attachPDF,\n enablePDFPassword,\n isPDFPasswordRequiredOnHIPAA,\n sendDate,\n uploadAttachment,\n usesNewPDF,\n selectedPDFOptions,\n updateEmail,\n PDFPassword,\n recipientLimit,\n scheduleReminderProps,\n pdfDocuments,\n teamMembers,\n cc,\n bcc\n });\n\n // A/B Test : builderAttachPDFLimit - Limits PDF attach selection to 1 for new free users.\n const [filteredPdfOptions, setFilteredPdfOptions] = useState(pdfOptions);\n const [isAttachPDFLimitExceeded, setIsAttachPDFLimitExceeded] = useState(false);\n\n useMemo(() => {\n if (!enableLimitPDFAttachment) return;\n\n if (valueList?.selectedPDFOptions?.length > 1) {\n setFilteredPdfOptions(pdfOptions.map(q => (valueList?.selectedPDFOptions?.includes(q?.value) ? q : {\n disabled: true,\n ...q\n })));\n\n setIsAttachPDFLimitExceeded(true);\n } else {\n setFilteredPdfOptions(pdfOptions);\n setIsAttachPDFLimitExceeded(false);\n }\n }, [valueList?.selectedPDFOptions]);\n\n const panelRefs = {\n email: useRef(false),\n advance: useRef(false),\n recipients: useRef(false),\n schedule: useRef(false),\n sender: useRef(false)\n };\n\n const { errorList, setErrorList } = useErrors();\n const hasError = useMemo(() => Object.values(errorList).filter(e => [undefined, false].indexOf(e) === -1).length > 0, [errorList]);\n const computedStaticFields = useMemo(() => computeStaticFields(emailType, isHIPAA, staticFields, { useJotformSign }), [isHIPAA, emailType, staticFields, useJotformSign]);\n const hipaaExcludedQuestions = useMemo(() => computeQuestions(questions, isHIPAA), [questions]);\n const computedQuestions = useMemo(() => computeQuestions(questions, false), [questions]);\n const accountType = useMemo(() => {\n const inheritedAccountType = (isSubUser && owner) ? getAccountTypeName(owner) : null;\n return inheritedAccountType ?? (getAccountTypeName(user) || 'GUEST');\n }, [isSubUser, owner, user]);\n const recipientLimitConfig = useMemo(() => getRecipientLimitConfig(accountType, recipientLimit), [accountType, recipientLimit]);\n const computedSendDateOptions = useMemo(() => computeDropdownOptions(EmailsUtils.getDateOptions(questions, sendDateOptions), 'key'), [questions, sendDateOptions]);\n const [customSenders, setCustomSenders] = useState([]);\n const [emailTabErrored, setEmailTabErrored] = useState(false);\n const [recipientsTabErrored, setRecipientsTabErrored] = useState(false);\n const [advanceTabErrored, setAdvanceTabErrored] = useState(false);\n const [isPasswordEnabled, toggleIsPasswordEnabled] = useReducer(state => !state, enablePDFPassword || false);\n const hipaaDisclaimer = isHIPAA ? t('Due to HIPAA regulations, you need to set a password to the PDF.') : '';\n\n const erroredTabs = useMemo(() => {\n return [emailTabErrored, recipientsTabErrored, advanceTabErrored];\n }, [emailTabErrored, recipientsTabErrored, advanceTabErrored]);\n const computedTabList = useMemo(() => getTabList(emailType, emailSubType), [emailType]);\n const formArray = useMemo(() => colorifyFormArray(formArrayProp), [formArrayProp]);\n const showSender = () => {\n switch (true) {\n case emailType === EMAIL_TEMPLATE_TYPES.WORKFLOW_ASSIGN_FORM_NOTIFICATION:\n case emailType === EMAIL_TEMPLATE_TYPES.SHEETS_SEND_FORM:\n case emailType === EMAIL_TEMPLATE_TYPES.WORKFLOW_APPROVE_START:\n case emailType === EMAIL_TEMPLATE_TYPES.WORKFLOW_ASSIGN_TASK:\n case emailSubType && emailSubType === EMAIL_TEMPLATE_TYPES.WORKFLOW_SEND_PDF:\n case emailSubType && emailSubType === EMAIL_TEMPLATE_TYPES.WORKFLOW_SEND_REPORT:\n return true;\n default:\n return false;\n }\n };\n\n const newFormatedData = useMemo(() => forms.map(({\n title, id, type: _type\n }) => {\n const type = _type === 'CARD' ? 'cardform' : 'form';\n\n return {\n text: title,\n type,\n value: id,\n subtext: 'Subtext'\n };\n }), [forms]);\n\n const getResourceType = type => {\n switch (type) {\n case 'form-builder':\n return 'FORM';\n case 'sheets':\n return 'SHEET';\n case 'workflow':\n return 'WORKFLOW';\n default:\n return 'FORM';\n }\n };\n\n const getResourceID = () => {\n const { pathname = '' } = window.location;\n\n if (getActiveApp() === 'workflow' && pathname !== getFullPath()) return pathname;\n if (getActiveApp() === 'listings') return `/${formID}`;\n return getFullPath();\n };\n\n const fetchSenderEmailsList = () => {\n const resourceType = getResourceType(getActiveApp());\n const resourceID = extractResourceID(getResourceID());\n const iak = getApiKeyFromUrl();\n getSenderEmailList(resourceID, resourceType, iak).then(resp => {\n const senderOptions = getSenderOptions(arrangeCustomSender(resp));\n setCustomSenders(senderOptions);\n const { senderEmail: updatedSenderEmail = '' } = valueList;\n if (senderOptions && Array.isArray(senderOptions)) {\n if (\n (typeof updatedSenderEmail === 'string' && !!updatedSenderEmail.trim() && senderOptions.map(option => option.key).indexOf(updatedSenderEmail) === -1)\n || !updatedSenderEmail\n ) {\n setValueList(currentValue => ({ ...currentValue, senderEmail: senderOptions[0].key }));\n }\n }\n }).catch(({ message = 'Something Went Wrong' }) => {\n console.error(message);\n });\n };\n\n useEffect(() => {\n onError(hasError, errorList, erroredTabs);\n }, [hasError, erroredTabs]);\n\n useEffect(() => {\n fetchSenderEmailsList();\n }, []);\n\n Hooks.useEffectIgnoreFirst(() => {\n setValueList(prevValues => ({ ...prevValues, ...{ enablePDFPassword: isPasswordEnabled } }));\n }, [isPasswordEnabled]);\n\n Hooks.useEffectIgnoreFirst(() => {\n if (\n valueList.recentlyAddedCustomSenderEmails\n && valueList.recentlyAddedCustomSenderEmails.length\n && !valueList.recentlyAddedCustomSenderEmails.find(recentlyAddedEmail => customSenders.find(customSender => customSender.key === recentlyAddedEmail))\n ) {\n fetchSenderEmailsList();\n }\n baseOnChange(valueList);\n }, [valueList]);\n\n Hooks.useEffectIgnoreFirst(() => {\n setValueList({\n ...valueList,\n scheduleReminderProps\n });\n }, [scheduleReminderProps]);\n\n const handleChange = changedValueList => {\n const updatedValueList = { ...valueList, ...changedValueList };\n setValueList(updatedValueList);\n };\n\n const handleTabError = tabID => changedErrorList => {\n const tabHasError = Object.values(changedErrorList)\n .filter(e => e).length > 0;\n switch (tabID) {\n case 'email':\n setEmailTabErrored(tabHasError);\n break;\n case 'sender':\n case 'recipients':\n setRecipientsTabErrored(tabHasError);\n break;\n case 'advance':\n setAdvanceTabErrored(tabHasError);\n break;\n default:\n break;\n }\n\n return tabHasError;\n };\n\n const validate = () => {\n let tempErrorList = {};\n const erroredTabList = Object.keys(computedTabList).map(tabID => {\n if (!panelRefs[tabID] || !panelRefs[tabID].current || !panelRefs[tabID].current.validate) {\n return false;\n }\n\n const currentErrorList = panelRefs[tabID].current.validate();\n tempErrorList = { ...tempErrorList, ...currentErrorList };\n const isTabErrored = handleTabError(tabID)(currentErrorList);\n return isTabErrored ? tabID : false;\n }).filter(tab => tab);\n setErrorList(tempErrorList);\n return erroredTabList.find(isErroredTab => isErroredTab);\n };\n\n useEffect(() => {\n if (advanceTabErrored) { // Otherwise it will init tabs with errors\n validate();\n }\n }, [valueList]);\n\n useImperativeHandle(ref, () => ({\n validate,\n panelRefs,\n getValues: () => {\n const { recentlyAddedCustomSenderEmails, ...actualValueList } = valueList;\n return actualValueList;\n }\n }));\n\n const handlePasswordValidate = resultObject => {\n const isValidationSuccess = !Object.values(resultObject).some(value => value === false);\n onPDFPasswordValidate(isValidationSuccess);\n };\n\n const handlePasswordChange = passwordValue => handleChange({ PDFPassword: passwordValue });\n\n const MainWrapper = useCallback(({ children }) => , []);\n const ToggleWrapper = useCallback(({ children }) =>
    {children}
    , []);\n const LabelWrapper = useCallback(({ children }) =>
    {children}
    , []);\n const SublabelRenderer = useCallback(({ children }) =>
    {children}
    , []);\n const LabelRenderer = useCallback(({ children }) =>
    {children}
    , []);\n const PasswordWrapper = useCallback(({ children }) =>
    {children}
    , []);\n\n return (\n \n \n \n {showPasswordProtectionToggle && (\n \n )}\n \n \n \n \n \n \n \n \n {\n (emailType && showSender())\n && (\n \n )\n }\n\n \n \n \n \n \n );\n});\n\nTabbedWizards.propTypes = {\n ...EMAIL_WIZARD_COMMON_PROP_TYPES,\n onError: func,\n recipientLimit: number,\n extraEditorButtons: arrayOf(shape({})),\n scheduleReminderProps: shape({}),\n useMultipleForms: bool,\n forms: array,\n PDFData: shape({}),\n useMultiFormPDF: bool,\n customActionButtons: arrayOf(string),\n onCustomButtonSettingClick: func,\n selectedRow: shape({}),\n showProtectedTag: bool,\n useJotformSign: bool,\n isBuilder: bool,\n isPDFPasswordRequiredOnHIPAA: bool,\n showPasswordProtectionToggle: bool,\n onPDFPasswordValidate: func,\n enableLimitPDFAttachment: bool,\n attachPDFLoading: bool,\n defaultActiveTab: string\n};\n\nTabbedWizards.defaultProps = {\n ...EMAIL_WIZARD_COMMON_DEFAULT_PROPS,\n onError: f => f,\n recipientLimit: 0,\n extraEditorButtons: [],\n scheduleReminderProps: {},\n useMultipleForms: false,\n forms: [],\n PDFData: {},\n useMultiFormPDF: false,\n customActionButtons: [],\n onCustomButtonSettingClick: f => f,\n selectedRow: {},\n showProtectedTag: false,\n useJotformSign: false,\n isBuilder: false,\n isPDFPasswordRequiredOnHIPAA: true,\n showPasswordProtectionToggle: false,\n onPDFPasswordValidate: f => f,\n enableLimitPDFAttachment: false,\n attachPDFLoading: false,\n defaultActiveTab: null\n};\n\nexport default withErrorProvider(TabbedWizards);\n","import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { translationRenderer } from '@jotforminc/translation';\nimport { IconExclamationCircleFilled } from '@jotforminc/svg-icons';\n\nimport { UPGRADE_PDF_ATTACHMENT } from '../../constants/texts';\nimport { actionTracker, bsgUtmCreator } from '../../utils';\n\nconst AttachPDFWarning = ({ username, planType, emailType }) => {\n const assetType = `${emailType}-attach-pdf-warning-v2`;\n\n useEffect(() => {\n actionTracker({\n username,\n target: assetType,\n action: 'seen'\n });\n }, []);\n\n const handleUpgradeClicked = () => {\n actionTracker({\n username,\n target: assetType,\n action: 'upgrade-text-clicked'\n });\n\n window.open(`/pricing${bsgUtmCreator({ planType: planType?.toLowerCase(), assetType, campaign: 'builder-emails-attach-pdf-limit' })}`);\n };\n\n return (\n
    \n \n

    \n {translationRenderer(UPGRADE_PDF_ATTACHMENT)({\n renderer1: upgradeText => \n })}\n

    \n
    \n );\n};\n\nAttachPDFWarning.propTypes = {\n username: PropTypes.string,\n planType: PropTypes.string,\n emailType: PropTypes.string\n};\n\nAttachPDFWarning.defaultProps = {\n username: '',\n planType: '',\n emailType: ''\n};\n\nexport default AttachPDFWarning;\n","/* eslint-disable max-len */\nimport React, { forwardRef } from 'react';\nimport {\n arrayOf, bool, func, number, oneOfType, shape, string\n} from 'prop-types';\nimport { t } from '@jotforminc/translation';\nimport { Tooltip } from '@jotforminc/tooltip';\nimport { propTypes } from '@jotforminc/constants';\nimport { AttachPDFWarning } from '@jotforminc/limit-assets';\n\nimport { SmartList } from '@jotforminc/smart-list';\nimport { Checkbox } from '@jotforminc/magnet';\n\n// eslint-disable-next-line react/prop-types\nconst AttachPDFListItem = ({\n option: {\n text, value, link, disabled = false\n }, formID, isSelected, disabledHoverText, disableDefaultDocument\n}) => {\n if (value === '' && text === 'Default Document' && disableDefaultDocument) {\n return (\n
    \n
    \n {t('You dont have any PDF documents yet.')}\n
    \n
    \n e.stopPropagation()}\n >\n  \n \n \n Open in PDF Editor\n \n
    \n
    \n );\n }\n return (\n
    \n
    \n \n
    \n
    \n {text}\n
    \n {disabledHoverText && (\n \n {t(disabledHoverText)}\n \n )}\n
    \n e.stopPropagation()}\n >\n \n \n \n {t('Open in PDF Editor')}\n \n
    \n
    \n );\n};\n\nAttachPDFListItem.propTypes = {\n option: shape({ value: oneOfType([string, number]), disabled: bool }),\n formID: string,\n isSelected: bool,\n disabledHoverText: string,\n disableDefaultDocument: bool\n};\n\nAttachPDFListItem.defaultProps = {\n option: {},\n formID: '',\n isSelected: false,\n disabledHoverText: null,\n disableDefaultDocument: false\n};\n\nconst SelectList = forwardRef(({\n onChange, options, value, ItemComponent, showSelectAll, showSelectedItemCount, disabledHoverText, ignoreDefaultValueCheck, disableDefaultDocument, isAttachPDFLimitExceeded, username, planType, emailType, hasMissingPDFAttachment, ...props\n}, ref) => {\n return (\n <>\n <>{children}}\n ignoreDefaultValueCheck={ignoreDefaultValueCheck}\n disabledHoverText={disabledHoverText}\n disableDefaultDocument={disableDefaultDocument}\n {...(hasMissingPDFAttachment ? {\n // eslint-disable-next-line react/prop-types, no-shadow\n ContainerRenderer: forwardRef(({ children }, ref) => (\n \n {children}\n \n ))\n } : {})}\n {...props}\n />\n {isAttachPDFLimitExceeded && (\n \n )}\n \n );\n});\n\nSelectList.propTypes = {\n onChange: func,\n options: arrayOf(shape({ value: oneOfType([string, number]), disabled: bool })),\n value: arrayOf(shape({})),\n ItemComponent: propTypes.renderable,\n showSelectAll: bool,\n showSelectedItemCount: bool,\n ignoreDefaultValueCheck: bool,\n disabledHoverText: string,\n disableDefaultDocument: bool,\n isAttachPDFLimitExceeded: bool,\n username: string,\n planType: string,\n emailType: string,\n hasMissingPDFAttachment: string\n};\n\nSelectList.defaultProps = {\n onChange: f => f,\n options: [],\n value: [],\n ItemComponent: AttachPDFListItem,\n showSelectAll: true,\n showSelectedItemCount: true,\n ignoreDefaultValueCheck: false,\n disabledHoverText: null,\n disableDefaultDocument: false,\n isAttachPDFLimitExceeded: false,\n username: '',\n planType: '',\n emailType: '',\n hasMissingPDFAttachment: ''\n};\n\nexport default SelectList;\n","export const EMAIL_TEMPLATE_TYPES = {\n WORKFLOW_APPROVE_START: 'WORKFLOW_APPROVE_START',\n WORKFLOW_APPROVE_APPROVED: 'WORKFLOW_APPROVE_APPROVED',\n WORKFLOW_APPROVE_REJECTED: 'WORKFLOW_APPROVE_REJECTED',\n WORKFLOW_SEND_EMAIL_GENERAL: 'WORKFLOW_SEND_EMAIL_GENERAL',\n WORKFLOW_APPROVE_REASSIGN: 'WORKFLOW_APPROVE_REASSIGN',\n WORKFLOW_APPROVE_REASSIGN_APPROVER: 'WORKFLOW_APPROVE_REASSIGN_ASSIGNEE',\n WORKFLOW_ASSIGN_START: 'WORKFLOW_ASSIGN_START',\n WORKFLOW_ASSIGN_TASK: 'WORKFLOW_ASSIGN_TASK',\n FORM_SUBMIT_AUTORESPONDER: 'autorespond',\n FORM_SUBMIT_NOTIFICATION: 'notification',\n FORM_SAVE_AND_CONTINUE_LATER: 'sacl',\n FORM_SUBMIT_CONDITIONAL: 'FORM_SUBMIT_CONDITIONAL',\n FORM_SHARE: 'FORM_SHARE',\n FORM_REMINDER: 'FORM_REMINDER',\n APPOINTMENT_REMINDER: 'APPOINTMENT_REMINDER',\n WORKFLOW_ASSIGN_FORM_NOTIFICATION: 'WORKFLOW_ASSIGN_FORM_NOTIFICATION',\n WORKFLOW_SEND_PDF: 'WORKFLOW_SEND_PDF',\n WORKFLOW_SEND_REPORT: 'WORKFLOW_SEND_REPORT',\n SHEETS_NOTIFICATION: 'SHEETS_NOTIFICATION',\n SHEETS_AUTORESPONDER: 'SHEETS_AUTORESPONDER',\n SHEETS_SEND_FORM: 'SHEETS_SEND_FORM'\n};\n\nexport const EMAIL_SUB_TEMPLATE_TYPES = {\n APPROVAL_REMINDER: 'APPROVAL_REMINDER',\n ASSIGN_FORM_REMINDER: 'ASSIGN_FORM_REMINDER',\n ASSIGN_TASK_REMINDER: 'ASSIGN_TASK_REMINDER'\n};\n","import {\n string, oneOfType, arrayOf, shape, number, func, bool\n} from 'prop-types';\nimport { STATIC_FIELDS_WITH_PLACEHOLDER } from '@jotforminc/constants';\n\nimport { EMAIL_TEMPLATE_TYPES } from './EmailTemplateTypes';\n\nexport const EMAIL_WIZARD_COMMON_PROP_TYPES = {\n subject: string,\n content: string,\n senderName: string,\n senderEmail: string,\n replyToEmail: string,\n to: oneOfType([string, arrayOf(string)]),\n questions: arrayOf(shape({\n qid: oneOfType([number, string]),\n text: string,\n name: string\n })),\n userList: arrayOf(shape({\n text: string,\n value: string\n })),\n formProperties: shape({}),\n customSenders: arrayOf(string),\n emailType: string,\n onAddEmail: func,\n user: shape({\n email: string.isRequired,\n name: string,\n username: string.isRequired\n }).isRequired,\n owner: shape({}),\n formTitle: string,\n isHIPAA: bool,\n isEnterprise: bool,\n isEncrypted: bool,\n usesNewPDF: string,\n disableFreeTextOnRecipients: bool,\n allowFormFieldsOnRecipients: bool,\n staticFields: arrayOf(shape({})),\n companyTitle: string,\n recipientLimit: oneOfType([bool, number]),\n isSSOProtected: bool,\n hideEmptyFields: oneOfType([bool, string]),\n sendOnEdit: oneOfType([bool, string]),\n attachPDF: oneOfType([bool, string]),\n pdfOptions: arrayOf(shape({})),\n enablePDFPassword: oneOfType([bool, string]),\n sendDateOptions: arrayOf(shape({})),\n uploadAttachment: shape({}),\n selectedPDFOptions: arrayOf(shape({})),\n pdfDocuments: arrayOf(shape({})),\n updateEmail: oneOfType([bool, string]),\n onChange: func,\n onError: func,\n onEditorInit: func,\n allowPDFAttachment: bool,\n formArray: arrayOf(shape({})),\n customActionButtons: arrayOf(string),\n editorPopoverButtons: arrayOf(shape({})),\n editorInitCallbacks: arrayOf(func)\n};\n\nexport const EMAIL_WIZARD_COMMON_DEFAULT_PROPS = {\n userList: [],\n customSenders: [],\n emailType: EMAIL_TEMPLATE_TYPES.FORM_SUBMIT_AUTORESPONDER,\n staticFields: STATIC_FIELDS_WITH_PLACEHOLDER,\n questions: [],\n onAddEmail: f => f,\n onChange: f => f,\n onError: f => f,\n onEditorInit: f => f,\n formProperties: {},\n owner: null,\n isHIPAA: false,\n isEnterprise: false,\n isEncrypted: false,\n usesNewPDF: 'Yes',\n disableFreeTextOnRecipients: false,\n allowFormFieldsOnRecipients: true,\n formTitle: '',\n companyTitle: 'JotForm',\n isSSOProtected: false,\n hideEmptyFields: false,\n sendOnEdit: false,\n attachPDF: false,\n pdfOptions: [],\n enablePDFPassword: false,\n sendDateOptions: [],\n uploadAttachment: null,\n selectedPDFOptions: [],\n pdfDocuments: [],\n updateEmail: false,\n user: {},\n allowPDFAttachment: false,\n formArray: [],\n editorPopoverButtons: [],\n editorInitCallbacks: []\n};\n","/* eslint-disable complexity */\nimport isEmpty from 'lodash/isEmpty';\nimport isUndefined from 'lodash/isUndefined';\nimport { t } from '@jotforminc/translation';\nimport {\n preparePillObjectFromEmail,\n preparePillObjectFromQuestion,\n isEmail,\n removeHtmlTags,\n selectText\n} from '@jotforminc/utils';\nimport { NON_INPUT_QUESTIONS } from '@jotforminc/constants';\nimport { EMAIL_SUB_TEMPLATE_TYPES, EMAIL_TEMPLATE_TYPES } from '../constants/EmailTemplateTypes';\nimport {\n getDefaultEmailBody,\n getEmailFields, getFirstField, getNameFields\n} from './utils';\nimport layer from './layer';\n\nexport class EmailsUtils {\n constructor({\n user, formProperties, emails, questions, companyTitle\n }) {\n if (!user || !formProperties || !emails || !questions) {\n throw Error('Missing parameter while initializing an EmailsUtils object');\n }\n this.user = user;\n this.formProperties = formProperties;\n this.emails = emails;\n this.questions = questions;\n this.environment = window.JOTFORM_ENV || 'PRODUCTION'; // TODO: get from props\n this.companyTitle = companyTitle || 'JotForm';\n }\n\n // TODO: new function for generating default emails\n generateDefaultEmail(emailType, config = {}, emailSubType) {\n return {\n // name: 'Unique Email Name', // TODO: implement\n type: emailType,\n to: this.getRecipients(emailType),\n subject: this.getEmailSubject(emailType, config, emailSubType),\n content: getDefaultEmailBody(\n emailType,\n emailType === EMAIL_TEMPLATE_TYPES.WORKFLOW_APPROVE_REASSIGN ? [] : this.questions,\n { isBrandingEnabled: config.branding21 === true, isEnterprise: this.environment === 'ENTERPRISE', ...config }\n ),\n senderName: this.getSenderName(emailType),\n replyTo: this.getReplyTo(emailType),\n branding21Email: config.branding21 === true ? '1' : '0'\n };\n }\n\n getEmailSubject(emailType, config = {}, emailSubType) {\n const firstFullName = getFirstField(this.questions, 'control_fullname') || '';\n switch (emailType) {\n case EMAIL_TEMPLATE_TYPES.WORKFLOW_APPROVE_START: {\n if (emailSubType && emailSubType === EMAIL_SUB_TEMPLATE_TYPES.APPROVAL_REMINDER) {\n return t('Reminder: Your action required.');\n }\n return t('Your action required.');\n }\n case EMAIL_TEMPLATE_TYPES.WORKFLOW_ASSIGN_TASK: {\n if (emailSubType && emailSubType === EMAIL_SUB_TEMPLATE_TYPES.ASSIGN_TASK_REMINDER) {\n return t('Reminder: A task is assigned to you.');\n }\n return t('A task is assigned to you.');\n }\n case EMAIL_TEMPLATE_TYPES.WORKFLOW_SEND_EMAIL_GENERAL:\n return t('Email');\n case EMAIL_TEMPLATE_TYPES.WORKFLOW_APPROVE_APPROVED:\n return t('Your request has been approved.');\n case EMAIL_TEMPLATE_TYPES.WORKFLOW_APPROVE_REJECTED:\n return t('Your request has been denied.');\n case EMAIL_TEMPLATE_TYPES.WORKFLOW_APPROVE_REASSIGN:\n case EMAIL_TEMPLATE_TYPES.WORKFLOW_APPROVE_REASSIGN_APPROVER: {\n const subject = config.isHIPAA ? 'Reassigned Task: {form_title} Approval' : 'Reassigned Task: {firstFullName} {form_title} Approval';\n return t(subject).replace('{firstFullName}', firstFullName || '');\n }\n case EMAIL_TEMPLATE_TYPES.WORKFLOW_ASSIGN_START: {\n const subject = config.isHIPAA ? 'Assigned Task: {form_title}' : 'Assigned Task: {firstFullName} {form_title}';\n return t(subject).replace('{firstFullName}', firstFullName || '');\n }\n case EMAIL_TEMPLATE_TYPES.WORKFLOW_ASSIGN_FORM_NOTIFICATION:\n {\n if (emailSubType && emailSubType === EMAIL_SUB_TEMPLATE_TYPES.ASSIGN_FORM_REMINDER) {\n return t('Reminder: A form is assigned to you.');\n }\n return t('A form is assigned to you.');\n }\n case EMAIL_TEMPLATE_TYPES.SHEETS_SEND_FORM: {\n return t('Form is sent to you.');\n }\n default:\n return 'none';\n }\n }\n\n getRecipients(emailType) {\n switch (emailType) {\n case EMAIL_TEMPLATE_TYPES.WORKFLOW_APPROVE_START:\n case EMAIL_TEMPLATE_TYPES.WORKFLOW_ASSIGN_START:\n case EMAIL_TEMPLATE_TYPES.WORKFLOW_APPROVE_REASSIGN:\n case EMAIL_TEMPLATE_TYPES.WORKFLOW_ASSIGN_TASK:\n return [preparePillObjectFromEmail(this.user.email)];\n case EMAIL_TEMPLATE_TYPES.WORKFLOW_APPROVE_APPROVED:\n case EMAIL_TEMPLATE_TYPES.WORKFLOW_APPROVE_REJECTED:\n case EMAIL_TEMPLATE_TYPES.WORKFLOW_SEND_EMAIL_GENERAL:\n case EMAIL_TEMPLATE_TYPES.WORKFLOW_ASSIGN_FORM_NOTIFICATION:\n case EMAIL_TEMPLATE_TYPES.SHEETS_SEND_FORM:\n case EMAIL_TEMPLATE_TYPES.APPOINTMENT_REMINDER:\n const firstEmail = getFirstField(this.questions, 'control_email', true);\n if (firstEmail) {\n return [preparePillObjectFromQuestion(firstEmail)];\n }\n return '';\n default:\n return 'none';\n }\n }\n\n getSenderName(emailType) {\n switch (emailType) {\n case EMAIL_TEMPLATE_TYPES.WORKFLOW_APPROVE_START:\n case EMAIL_TEMPLATE_TYPES.WORKFLOW_ASSIGN_TASK:\n case EMAIL_TEMPLATE_TYPES.WORKFLOW_APPROVE_APPROVED:\n case EMAIL_TEMPLATE_TYPES.WORKFLOW_APPROVE_REJECTED:\n case EMAIL_TEMPLATE_TYPES.WORKFLOW_SEND_EMAIL_GENERAL:\n case EMAIL_TEMPLATE_TYPES.WORKFLOW_APPROVE_REASSIGN:\n case EMAIL_TEMPLATE_TYPES.WORKFLOW_ASSIGN_START:\n case EMAIL_TEMPLATE_TYPES.APPOINTMENT_REMINDER:\n case EMAIL_TEMPLATE_TYPES.WORKFLOW_ASSIGN_FORM_NOTIFICATION:\n case EMAIL_TEMPLATE_TYPES.SHEETS_SEND_FORM:\n return this.companyTitle;\n default:\n return getFirstField(this.questions, 'control_fullname') || this.companyTitle;\n }\n }\n\n getReplyTo(emailType) {\n switch (emailType) {\n case EMAIL_TEMPLATE_TYPES.WORKFLOW_APPROVE_START:\n case EMAIL_TEMPLATE_TYPES.WORKFLOW_ASSIGN_TASK:\n case EMAIL_TEMPLATE_TYPES.WORKFLOW_ASSIGN_START:\n case EMAIL_TEMPLATE_TYPES.WORKFLOW_APPROVE_REASSIGN:\n case EMAIL_TEMPLATE_TYPES.WORKFLOW_APPROVE_APPROVED:\n case EMAIL_TEMPLATE_TYPES.WORKFLOW_APPROVE_REJECTED:\n case EMAIL_TEMPLATE_TYPES.WORKFLOW_SEND_EMAIL_GENERAL:\n case EMAIL_TEMPLATE_TYPES.WORKFLOW_ASSIGN_FORM_NOTIFICATION:\n case EMAIL_TEMPLATE_TYPES.SHEETS_SEND_FORM:\n case EMAIL_TEMPLATE_TYPES.APPOINTMENT_REMINDER:\n return this.user.email;\n default:\n return getFirstField(this.questions, 'control_email') || 'none';\n }\n }\n\n getDefaultNotification(isEnterprise, formProperties, isHIPAA = false) {\n const { user } = this;\n\n const toAddress = user.email || '';\n const isEncrypted = formProperties.isEncrypted === 'Yes';\n const senderName = isEncrypted ? getFirstField(this.questions, 'control_fullname') : '';\n const fromAddress = senderName ? `${'default|'}${senderName}` : 'default';\n\n const emailSettings = {\n type: 'notification',\n name: this.setEmailName('notification'),\n from: fromAddress,\n to: toAddress,\n replyTo: this.getReplyTo(EMAIL_TEMPLATE_TYPES.FORM_SUBMIT_NOTIFICATION),\n subject: this.setEmailSubject(),\n dirty: '',\n html: true,\n body: this.getDefaultEmailBody('notification', isEnterprise),\n lastQuestionID: this.getLastUsableElement(),\n hideEmptyFields: true,\n sendOnEdit: true\n };\n\n const { importedPDF, importedPdfNotificationAttachment, importedPDFNotificationPassword } = formProperties || {};\n if (importedPDF) {\n if (isHIPAA && importedPdfNotificationAttachment === 'Yes' && importedPDFNotificationPassword) {\n emailSettings.pdfattachment = true;\n emailSettings.pdfId = 'importedPDF';\n emailSettings.pdfPassword = importedPDFNotificationPassword;\n }\n\n if (!isHIPAA) {\n emailSettings.pdfattachment = true;\n emailSettings.pdfId = 'importedPDF';\n }\n }\n\n return emailSettings;\n }\n\n getLogoURL() {\n return window.JOTFORM_ENV === 'ENTERPRISE'\n ? `${window.location.origin}/enterprise/logo.png`\n : 'https://cdn.jotfor.ms/resources/assets/logo/jotform-logo-transparent-400x100.png';\n }\n\n isNewSCLAvailable() {\n if (global.JOTFORM_ENV === 'ENTERPRISE' && !this.isEnterpriseDev() && !this.isEnterpriseProductionTestingDomain()) return false; // dont open to enterprise since it is fully released\n\n return true;\n }\n\n // check enterprise development environment\n isEnterpriseDev() {\n return window.location.href.indexOf('.jotform.biz') > -1;\n }\n\n // for production testing\n isEnterpriseProductionTestingDomain() {\n return window.location.host === 'demo.jotform.com' || window.location.host === 'hipaa.jotformers.com';\n }\n\n setEmailName(type) {\n let count = 0;\n let name = '';\n this.emails.forEach(email => {\n if (email.type === type) {\n count += 1;\n }\n });\n this.emails.forEach(email => {\n if (email.type === type && (email.name.indexOf(count + 1) > -1)) {\n count += 1;\n }\n });\n\n switch (type) {\n case 'notification':\n name = t('Notification ') + (count + 1);\n break;\n case 'autorespond':\n name = t('Autoresponder ') + (count + 1);\n break;\n default:\n break;\n }\n return name;\n }\n\n setEmailSubject() {\n const isEncrypted = this.formProperties.isEncrypted === 'Yes';\n let subject = 'Re: {form_title}';\n const firstField = getFirstField(this.questions, 'control_fullname');\n if (firstField && firstField !== '{}' && !isEncrypted) {\n subject = `${subject} - ${firstField}`;\n } else if (isEncrypted) {\n subject = `${subject} - {DATE}`;\n }\n return subject;\n }\n\n getLastUsableElement() {\n const { questions } = this;\n let lastQuestionID = 0;\n\n questions.forEach(item => {\n if (NON_INPUT_QUESTIONS.indexOf(item.type) === -1) {\n if (Number(item.qid) > lastQuestionID) {\n lastQuestionID = Number(item.qid);\n }\n }\n });\n return lastQuestionID;\n }\n\n // eslint-disable-next-line max-statements, complexity\n mergeEmail(emailProps) {\n const email = { ...emailProps };\n const accountEmail = this.user.email;\n if (email.from === 'default') {\n email.senderName = 'JotForm';\n email.senderEmail = 'noreply@jotform.com';\n } else {\n const [senderEmail, senderName] = email.from.split('|');\n email.senderEmail = senderEmail;\n email.senderName = senderName;\n if (email.senderEmail === 'default' || email.senderEmail === 'none' || email.senderEmail === undefined) {\n email.senderEmail = 'noreply@jotform.com';\n }\n if (email.senderName === 'default' || email.senderName === undefined) {\n email.senderName = 'JotForm';\n }\n }\n\n if (email.hideEmptyFields === '1' || email.hideEmptyFields === 'true' || isUndefined(email.hideEmptyFields)) {\n email.hideEmptyFields = true;\n } else if (email.hideEmptyFields === '') {\n email.hideEmptyFields = false;\n }\n\n if (isUndefined(email.disabled) || email.disabled === '') {\n email.disabled = false;\n } else if (email.disabled === '1' || email.disabled === 'true') {\n email.disabled = true;\n }\n\n if (email.type === 'autorespond') {\n if (email.sendOnEdit === '' || isUndefined(email.sendOnEdit)) {\n email.sendOnEdit = false;\n } else if (email.sendOnEdit === '1' || email.sendOnEdit === 'true') {\n email.sendOnEdit = true;\n }\n\n let { replyTo } = email;\n if (email.replyTo !== '' && !isUndefined(replyTo) && replyTo.indexOf('{user_email}') > -1) {\n replyTo = replyTo.replace('{user_email}', accountEmail);\n email.replyTo = replyTo;\n }\n }\n\n if (email.pdfattachment === '' || isUndefined(email.pdfattachment)) {\n email.pdfattachment = false;\n } else if (email.pdfattachment === '1' || email.pdfattachment === 'true') {\n email.pdfattachment = true;\n }\n\n if (email.updateEmail === '' || email.updateEmail === 'false' || email.updateEmail === '0') {\n email.updateEmail = false;\n } else if (email.updateEmail === '1' || email.updateEmail === 'true' || isUndefined(email.updateEmail)) {\n email.updateEmail = true;\n }\n\n if (email.uploadAttachment === '1' || email.uploadAttachment === 'true') {\n email.uploadAttachment = true;\n }\n\n if (email.type === 'notification') {\n if (!isUndefined(email.pdfAttachment)) {\n email.pdfattachment = email.pdfAttachment;\n delete email.pdfAttachment;\n }\n\n if (email.uploadAttachment === '1') {\n email.uploadAttachment = true;\n } else if (email.uploadAttachment === '') {\n email.uploadAttachment = false;\n }\n\n let emailTo = email.to;\n if (emailTo.indexOf('{user_email}') > -1) {\n emailTo = emailTo.replace('{user_email}', accountEmail);\n }\n email.to = emailTo;\n\n if (email.sendOnEdit === '') {\n email.sendOnEdit = false;\n } else if (email.sendOnEdit === '1' || email.sendOnEdit === 'true' || isUndefined(email.sendOnEdit)) {\n email.sendOnEdit = true;\n }\n }\n\n if (email.replyTo === '') {\n email.replyTo = 'none';\n }\n\n return email;\n }\n\n static combineAutoresponder(email) {\n const senderEmail = email?.senderEmail === 'noreply@jotform.com' ? 'none' : email?.senderEmail;\n const { replyTo } = email;\n const newEmail = {\n ...email,\n replyTo,\n from: `${senderEmail}|${email?.senderName}`\n };\n return newEmail;\n }\n\n static combineNotification(email) {\n const senderEmail = email?.senderEmail === 'noreply@jotform.com' ? 'default' : email?.senderEmail;\n const senderName = email?.senderName === 'JotForm' ? 'default' : email?.senderName;\n const { to: toAddress } = email;\n const newEmail = {\n ...email,\n from: `${senderEmail}|${senderName}`,\n to: toAddress\n };\n return newEmail;\n }\n\n static combineEmail(email) {\n let newEmail = email;\n if (email?.type === 'autorespond') {\n newEmail = EmailsUtils.combineAutoresponder(email);\n } else {\n newEmail = EmailsUtils.combineNotification(email);\n }\n\n if (newEmail?.mandrillFromAddress === '' || newEmail?.senderEmail?.indexOf('mandrill:') === -1) {\n delete newEmail.mandrillFromAddress;\n }\n\n if (newEmail?.sendDate === '') {\n delete newEmail.sendDate;\n }\n\n delete newEmail.senderName;\n delete newEmail.senderEmail;\n return newEmail;\n }\n\n findEmailConditions(conditions) {\n const emailConditions = {\n conditions: [],\n mapper: {},\n emailConditionIndexList: []\n };\n\n if (conditions.length > 0) {\n conditions.forEach((condition, conditionIndex) => {\n const emailIndexes = [];\n\n if (!('disabled' in condition)) {\n let conditionAction = condition.action;\n if (typeof condition.action === 'string') {\n conditionAction = JSON.parse(condition.action);\n }\n\n conditionAction.forEach(action => {\n if (action.email && typeof action.email === 'string') {\n const indexArr = action.email.split('email-');\n const index = Number(indexArr.pop());\n emailIndexes.push(index);\n if (typeof emailConditions.mapper[index] === 'undefined') {\n emailConditions.mapper[index] = [];\n }\n if (emailConditions.mapper[index].indexOf(condition) === -1) {\n emailConditions.mapper[index].push(condition);\n }\n }\n });\n // eslint-disable-next-line no-param-reassign\n condition.emailIndexes = emailIndexes;\n // eslint-disable-next-line no-param-reassign\n condition.conditionIndex = conditionIndex;\n emailConditions.conditions.push(condition);\n }\n });\n\n emailConditions.conditions.forEach(e => {\n e.emailIndexes.forEach(index => {\n if (emailConditions.emailConditionIndexList.indexOf(index) === -1) {\n emailConditions.emailConditionIndexList.push(index);\n }\n });\n });\n }\n\n return emailConditions;\n }\n\n sendVerificationCode(email, success, error) {\n layer.post(\n '/server.php',\n {\n action: 'sendVerificationCode',\n emailAddress: email\n },\n {\n headers: {\n 'Content-Type': 'application/json'\n }\n }\n ).then(() => {\n success();\n }).fail(err => {\n error(err);\n });\n }\n\n checkVerificationCode(email, code, success, error) {\n layer.post('/server.php', {\n action: 'checkVerificationCode',\n emailAddress: email,\n verificationCode: code\n }, {\n headers: {\n 'Content-Type': 'application/json'\n }\n }).then(() => {\n success();\n }).fail(err => {\n error(err);\n });\n }\n\n addSMTPAccount(email, smtpData, success, error) {\n const emailData = {};\n const smtpSettings = { ...smtpData };\n smtpSettings.emailAddress = email;\n emailData[`smtp:${smtpData.hostname}`] = JSON.stringify(smtpSettings);\n layer.post('user/settings', emailData, {\n headers: {\n 'Content-Type': 'application/json'\n }\n }).then(resp => {\n success(resp);\n }).fail(() => {\n error();\n });\n }\n\n removeCustomSenderAddress(email, cb) {\n layer.delete(`user/settings/${email}`, {\n headers: {\n 'Content-Type': 'application/json'\n }\n }).then(() => {\n cb();\n }).fail(() => {\n });\n }\n\n arrangeCustomSender(emails) {\n const senderEmails = {\n verified: [],\n smtp: [],\n mandrill: [],\n other: []\n };\n\n if (!isEmpty(emails)) {\n const senderEmailsKeys = Object.keys(emails);\n senderEmailsKeys.forEach(email => {\n if (email.indexOf('verified:') !== -1) {\n // let replacedEmail = email.replace('verified:', '');\n senderEmails.verified.push(email);\n } else if (email.indexOf('smtp:') !== -1) {\n // let replacedEmail = email.replace('smtp:', '');\n senderEmails.smtp.push(email);\n } else if (email.indexOf('mandrill:') !== -1) {\n senderEmails.mandrill.push(email);\n } else {\n senderEmails.other.push(email);\n }\n });\n }\n\n return senderEmails;\n }\n\n getSenderField(email) {\n let sender = '';\n if (email.senderName) {\n sender = email.senderName;\n } else if (email.replyTo && email.replyTo !== 'none') {\n sender = email.replyTo;\n } else if (email.senderEmail.indexOf('verified:') !== -1) {\n sender = email.senderEmail.replace('verified:', '');\n } else if (email.senderEmail.indexOf('smtp:') !== -1) {\n sender = email.senderEmail.replace('smtp:', '');\n } else {\n sender = email.senderEmail;\n }\n if (sender.indexOf('{') !== -1) {\n sender = this.getQuestionLabel(sender);\n }\n return sender;\n }\n\n getQuestionLabel(val) {\n let label;\n const value = val.replace(/{/g, '').replace(/}/g, '');\n this.questions.forEach(question => {\n if (question.type === 'control_mixed') {\n const toVal = value.split('[');\n\n if (toVal.length > 1 && question.name === toVal[0]) {\n const fieldID = toVal[1].replace(']', '');\n let fieldSublabel = question.sublabels[`field_${fieldID}`];\n if (fieldSublabel && fieldSublabel.length === 0) {\n const field = question.fields.filter(f => f.fieldID === fieldID);\n\n fieldSublabel = field[0].type;\n }\n\n label = `${toVal[0]}/${fieldSublabel}`;\n }\n } else if (question.name === value) {\n label = selectText(question);\n }\n });\n return label;\n }\n\n checkEmail(email) {\n return isEmail(email);\n }\n\n static getDateOptions(questions, dateOptions = []) {\n const options = dateOptions.length !== 0 ? dateOptions : [\n { key: '', text: t('Right away') },\n { key: '1', text: t('1 day') },\n { key: '2', text: t('2 days') },\n { key: '3', text: t('3 days') },\n { key: '7', text: t('7 days') },\n { key: '14', text: t('14 days') },\n { key: '30', text: t('30 days') },\n { key: 'custom', text: t('At a later date') }\n ];\n\n // append date elements from questions, if any.\n questions.forEach(question => {\n if (question.type === 'control_datetime') {\n options.push({ key: `{${question.name}}`, text: question.name });\n }\n });\n return options;\n }\n\n handleDateValue(sendDate) {\n if (isUndefined(sendDate)) {\n return '';\n } if (sendDate.split(' ').length > 1 && sendDate === 'custom') {\n return 'custom';\n }\n return sendDate;\n }\n\n rehydrateContent = (content, moisture = {}) => {\n return Object.entries(moisture).reduce((text, [key, value]) => {\n const regex = typeof key === typeof /someRegex/ ? key : new RegExp(key, 'g');\n return text.replace(regex, value);\n }, content);\n };\n\n selectText = selectText;\n\n removeHTMLTags = removeHtmlTags;\n\n getEmailFields = () => {\n const { ssoProtected } = this.formProperties;\n const isSSOProtected = ssoProtected === '1';\n return getEmailFields(isSSOProtected, this.questions);\n };\n\n getNameFields = title => getNameFields(title, this.questions, this.formProperties.isEncrypted === 'Yes');\n\n static arrangeCustomSender = emails => {\n const senderEmails = {\n verified: [],\n smtp: [],\n mandrill: [],\n other: []\n };\n\n if (!isEmpty(emails)) {\n const senderEmailsKeys = Object.keys(emails);\n senderEmailsKeys.forEach(email => {\n if (email.indexOf('verified:') !== -1) {\n // let replacedEmail = email.replace('verified:', '');\n senderEmails.verified.push(email);\n } else if (email.indexOf('smtp:') !== -1) {\n // let replacedEmail = email.replace('smtp:', '');\n senderEmails.smtp.push(email);\n } else if (email.indexOf('mandrill:') !== -1) {\n senderEmails.mandrill.push(email);\n } else {\n senderEmails.other.push(email);\n }\n });\n }\n\n return senderEmails;\n };\n\n static isWorkflowEmail(type) {\n return String(type).includes('WORKFLOW');\n }\n\n static getSenderOptions(senderEmails, isEnterprise, isSubuser, disableDefaults = false, withoutDefaults = false) {\n let senderOptions = [];\n\n if (!withoutDefaults) {\n senderOptions = isEnterprise ? [{ key: 'noreply@formresponse.com', text: 'noreply@formresponse.com' }]\n : [{ key: 'noreply@jotform.com', text: 'noreply@jotform.com' },\n { key: 'noreply@formresponse.com', text: 'noreply@formresponse.com' }];\n }\n\n if (isSubuser) {\n senderOptions.push({ key: senderEmails, text: senderEmails.split(':')[1] });\n } else {\n senderEmails.verified.forEach(verified => {\n senderOptions.push({ key: verified, text: verified.replace('verified:', '') });\n });\n\n senderEmails.smtp.forEach(smtp => {\n senderOptions.push({ key: smtp, text: smtp.replace('smtp:', '') });\n });\n\n senderEmails.mandrill.forEach(mandrill => {\n senderOptions.push({ key: mandrill, text: mandrill.replace('mandrill:', '') });\n });\n }\n\n if (!disableDefaults) {\n senderOptions.push({ key: 'addNewAddress', text: t('+ Add email address') });\n }\n return senderOptions;\n }\n}\n","import { RequestLayer, Interceptors, getAPIURL } from '@jotforminc/request-layer';\n\nexport default new RequestLayer(getAPIURL(), {\n interceptorConfig: {\n teamID: global.teamID,\n customResponseInterceptors: [Interceptors.requestManagerResponseNormalizer]\n }\n});\n","import React from 'react';\nimport { t } from '@jotforminc/translation';\n\nimport {\n Blockquote,\n Button,\n Table,\n Header,\n Paragraph,\n isIE\n} from '@jotforminc/email-template';\n\nimport { EMAIL_TEMPLATE_TYPES } from './EmailTemplateTypes';\n\n// eslint-disable-next-line react/prop-types\nconst Dummy = ({ children, ...props }) =>
    {children}
    ;\nconst IECompatFragment = isIE() ? Dummy : React.Fragment;\nconst isBranding21 = !!window?.branding21;\nconst formDefaultConfig = {\n id: 0,\n hideMailEmptyFields: false,\n showEditLinkOnMail: false,\n isEnterprise: false,\n isBrandingEnabled: false\n};\n\nconst wfDefaultConfig = {\n id: 0,\n hideMailEmptyFields: false,\n showEditLinkOnMail: false,\n isEnterprise: false,\n isBrandingEnabled: false,\n addActionButtons: false,\n hideMoreActions: false\n};\n\nconst DEFAULT_EMAIL_CONFIGS = {\n [EMAIL_TEMPLATE_TYPES.FORM_SUBMIT_AUTORESPONDER]: formDefaultConfig,\n [EMAIL_TEMPLATE_TYPES.FORM_SUBMIT_NOTIFICATION]: formDefaultConfig,\n [EMAIL_TEMPLATE_TYPES.FORM_SUBMIT_CONDITIONAL]: formDefaultConfig,\n [EMAIL_TEMPLATE_TYPES.WORKFLOW_APPROVE_START]: {\n ...wfDefaultConfig,\n addActionButtons: true,\n moreActionText: t('Go to Inbox'),\n actionButtonsHeaderText: t('Please review the request below.')\n },\n [EMAIL_TEMPLATE_TYPES.WORKFLOW_APPROVE_APPROVED]: {\n ...wfDefaultConfig,\n actionButtonsHeaderText: t('Your request has been approved.')\n },\n [EMAIL_TEMPLATE_TYPES.WORKFLOW_APPROVE_REJECTED]: {\n ...wfDefaultConfig,\n actionButtonsHeaderText: t('Your request has been denied.')\n },\n [EMAIL_TEMPLATE_TYPES.WORKFLOW_SEND_EMAIL_GENERAL]: {\n ...wfDefaultConfig,\n actionButtonsHeaderText: t('You can see the submission details below.')\n },\n [EMAIL_TEMPLATE_TYPES.WORKFLOW_ASSIGN_START]: {\n ...wfDefaultConfig,\n addActionButtons: true,\n actionButtonsHeaderText: t('Please review this submission.')\n },\n [EMAIL_TEMPLATE_TYPES.WORKFLOW_APPROVE_REASSIGN]: {\n ...wfDefaultConfig,\n showSubmissionTable: !isBranding21,\n clearHeight: isBranding21,\n showFooter: isBranding21,\n noSidePadding: true,\n emailPreviewHack: isBranding21 ? (\n
    \n
    \n {t('The {approvalFlowName} has been reassigned to {titleAssigneeName}.')}\n
    \n
    \n {t('Your assignee {oldAssigneeName} ({oldAssigneeEmail}) reassigned his/her task to {newAssigneeName} ({newAssigneeEmail}).')}\n
    \n
    \n ) : null,\n actionButtonsHeaderText: (\n isBranding21 ? (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {`${window.JOTFORM_ENV !== 'ENTERPRISE' ? 'Jotform' : ''} Approvals`}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {t('The {approvalFlowName} has been reassigned to {titleAssigneeName}.')}\n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {/* eslint-disable-next-line max-len */}\n {t('Your assignee {oldAssigneeName} ({oldAssigneeEmail}) reassigned his/her task to {newAssigneeName} ({newAssigneeEmail}).')}\n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n View Task\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {\n window.JOTFORM_ENV !== 'ENTERPRISE' && (\n \n \n \n
    \n \n \n \n  \n \n \n \n \n  \n \n \n \n
    \n \n \n \n )\n }\n {\n window.JOTFORM_ENV !== 'ENTERPRISE' && (\n \n \n \n \n \n \n \n \n \n Jotform Approvals\n \n {/* eslint-disable-next-line max-len, react/no-unescaped-entities */}\n {' '}\n {\n /* eslint-disable-next-line max-len */\n \"is a powerful tool that enables users to build, track, and control approval processes. It's intuitive drag and drop user interface makes creating approval flows incredibly simple and doesn't require you to write a single line of code.\"\n }\n

    \n \n \n \n \n \n \n \n )\n }\n \n \n \n \n \n \n \n \n
    \n )\n : (\n \n
    \n
    \n
    \n \n
    \n
    \n
    \n Hi there,\n
    \n
    \n {t('We are sending this email to inform you. Your assignee {oldAssigneeEmail} reassigned his/her task to {newAssigneeEmail}.')}\n
    \n
    \n
    \n \n
    \n
    \n
    \n )\n )\n },\n [EMAIL_TEMPLATE_TYPES.WORKFLOW_ASSIGN_TASK]: {\n ...wfDefaultConfig,\n addActionButtons: true,\n actionButtonsHeaderText: t('{taskName} is assigned to you. Please complete this task.'),\n moreActionText: t('Go to Inbox')\n },\n [EMAIL_TEMPLATE_TYPES.WORKFLOW_APPROVE_REASSIGN_APPROVER]: {\n ...wfDefaultConfig,\n addActionButtons: true,\n hideMoreActions: false,\n actionButtonsHeaderText: (\n \n {t('{oldAssigneeEmail} reassigned this task to you.')}\n
    \n
    \n {t('Please review the request below.')}\n
    \n
    \n
    \n {'{comment}'}\n
    \n
    \n )\n },\n [EMAIL_TEMPLATE_TYPES.WORKFLOW_ASSIGN_FORM_NOTIFICATION]: {\n ...wfDefaultConfig,\n showSubmissionTable: false,\n withBrandingAccent: true,\n actionButtonsHeaderText: (\n \n
    \n {t('{Form Name} has been assigned to you!')}\n
    \n {!window?.teamID && (\n \n {t('{user__fullname} ({user__email}) has assigned you')}\n {' '}\n {t('{Form Name}')}\n .\n \n )}\n \n {t('Click the button below to fill out this form.')}\n \n \n \n View Form\n \n
    \n
    \n )\n },\n [EMAIL_TEMPLATE_TYPES.FORM_SHARE]: {\n ...wfDefaultConfig,\n actionButtonsHeaderText: (\n \n Hi,\n
    \n Please click on the link below to complete this form...\n
    \n {'{shareLink}'}\n
    \n Thank you!\n
    \n )\n },\n [EMAIL_TEMPLATE_TYPES.APPOINTMENT_REMINDER]: {\n ...formDefaultConfig,\n // addActionButtons: true,\n actionButtonsHeaderText: (\n \n \n \n \n
    \n \n Here is a friendly reminder email of your appointment\n
    \n \n \n \n \n \n \n \n \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \n {t('Appointment')}\n \n
    \n \n {'{appointmentValue:date}'}\n \n\n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \n {t('Duration')}\n \n
    \n \n {'{appointmentValue:duration}'}\n \n\n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \n {t('Timezone')}\n \n
    \n \n {'{appointmentValue:timezone}'}\n \n\n
    \n \n \n \n \n
    \n \n \n \n \n \n \n \n \n \n {'{appointmentCalendarLinks}'}\n \n \n \n \n \n \n \n \n \n {'{appointmentRescheduleCancelButton}'}\n \n \n \n \n \n \n )\n },\n [EMAIL_TEMPLATE_TYPES.SHEETS_SEND_FORM]: {\n ...wfDefaultConfig,\n showSubmissionTable: false,\n withBrandingAccent: true,\n actionButtonsHeaderText: (\n \n
    \n {t('{formName} is sent to you!')}\n
    \n {!window?.teamID && (\n \n {t('{userFullName} ({userEmail}) has invited you to fill out')}\n {' '}\n {t('{formName}')}\n .\n \n )}\n \n {t('You can fill out this form on your computer or mobile device.')}\n \n \n \n View Form\n \n
    \n
    \n )\n }\n};\n\nexport default DEFAULT_EMAIL_CONFIGS;\n","import React from 'react';\nimport { string, node, shape } from 'prop-types';\n\nconst defaultStyle = {\n blockquoteBorderColor: '#d6dbee'\n};\n\nconst Blockquote = ({\n className, style, children, withPadding, ...props\n}) => {\n const combinedStyles = { ...defaultStyle, ...style };\n const { blockquoteBorderColor, ...tableStyles } = combinedStyles;\n\n return (\n \n \n \n {children}\n \n \n \n );\n};\n\nBlockquote.propTypes = {\n className: string,\n withPadding: string,\n style: shape(),\n children: node\n};\n\nBlockquote.defaultProps = {\n className: 'jmButton',\n withPadding: null,\n style: defaultStyle,\n children: null\n};\n\nexport default Blockquote;\n","import React from 'react';\nimport {\n string, node, shape\n} from 'prop-types';\n\nconst defaultStyle = {\n color: '#0A1551',\n fontSize: '26px',\n marginTop: '1em',\n marginBottom: '0',\n fontWeight: '600'\n};\n\nconst Header = ({\n style, children, ...props\n}) => {\n return (\n

    {children}

    \n );\n};\n\nHeader.propTypes = {\n className: string,\n style: shape(),\n children: node\n};\n\nHeader.defaultProps = {\n className: '',\n style: defaultStyle,\n children: null\n};\n\nexport default Header;\n","import React from 'react';\nimport {\n string, node, shape\n} from 'prop-types';\n\nconst defaultStyle = {\n color: '#0A1551',\n fontSize: '20px',\n marginTop: '1.6em',\n marginBottom: '0',\n fontWeight: '400'\n};\n\nconst Header = ({\n style, children, ...props\n}) => {\n return (\n

    {children}

    \n );\n};\n\nHeader.propTypes = {\n className: string,\n style: shape(),\n children: node\n};\n\nHeader.defaultProps = {\n className: '',\n style: defaultStyle,\n children: null\n};\n\nexport default Header;\n","import React from 'react';\nimport { string, node, shape } from 'prop-types';\n\nconst defaultStyle = {\n minWidth: '480px',\n maxWidth: '720px',\n width: '100%',\n backgroundColor: '#fff'\n};\n\nconst Table = ({\n className, style, children, ...props\n}) => {\n return (\n \n \n \n {children}\n \n \n \n );\n};\n\nTable.propTypes = {\n className: string,\n style: shape(),\n children: node\n};\n\nTable.defaultProps = {\n className: 'jmTable',\n style: defaultStyle,\n children: null\n};\n\nexport default Table;\n","import React from 'react';\nimport { node } from 'prop-types';\n\n/*\n\n \n \n \n \n \n\n*/\n\nconst MailWrapper = ({ children }) => {\n return (\n \n \n \n  \n \n {children}\n \n  \n \n \n \n );\n};\n\nMailWrapper.propTypes = {\n children: node\n};\n\nMailWrapper.defaultProps = {\n children: null\n};\n\nexport default MailWrapper;\n","import React from 'react';\nimport {\n string,\n node,\n shape,\n number,\n bool\n} from 'prop-types';\n\nconst defaultStyle = {\n width: '100%'\n};\n\nconst TableWrapper = ({\n className,\n style,\n children,\n topSpacing,\n bottomSpacing,\n showHeader,\n showFooter,\n ...props\n}) => {\n return (\n \n \n \n  \n \n \n {children}\n \n \n  \n \n \n \n );\n};\n\nTableWrapper.propTypes = {\n className: string,\n style: shape(),\n children: node,\n topSpacing: number,\n bottomSpacing: number,\n showHeader: bool,\n showFooter: bool\n};\n\nTableWrapper.defaultProps = {\n className: 'jmTable-wrapper',\n style: defaultStyle,\n children: null,\n topSpacing: 64,\n bottomSpacing: 64,\n showHeader: true,\n showFooter: true\n};\n\nexport default TableWrapper;\n","import React from 'react';\nimport {\n string,\n arrayOf,\n shape,\n node,\n bool\n} from 'prop-types';\nimport Button from './Button';\nimport Table from './Table';\n\nconst HeaderTable = ({\n buttons,\n headerText,\n clearHeight,\n children,\n withBrandingAccent,\n noSidePadding,\n ...props\n}) => {\n const hasButtons = buttons.length > 0;\n\n return (\n \n
    \n \n {withBrandingAccent && (\n \n \n \n \n  \n \n \n \n
    \n \n
    \n \n \n )}\n {!clearHeight && (\n \n  \n \n )}\n \n {!noSidePadding && }\n \n {children}\n {hasButtons &&
    }\n {hasButtons\n && buttons.map(({\n backgroundColor, textColor = '#fff', text, actionUrl, ...remainingStyle\n }) => (\n \n {text}\n \n ))}\n \n {!noSidePadding && }\n \n {!clearHeight\n && (\n \n  \n \n )}\n \n \n \n );\n};\n\nHeaderTable.propTypes = {\n headerText: string,\n children: node,\n clearHeight: bool,\n withBrandingAccent: bool,\n buttons: arrayOf(shape({\n text: string,\n textColor: string,\n backgroundColor: string,\n actionUrl: string\n })),\n noSidePadding: bool\n};\n\nHeaderTable.defaultProps = {\n buttons: [],\n children: null,\n headerText: '',\n clearHeight: false,\n withBrandingAccent: false,\n noSidePadding: false\n};\n\nexport default HeaderTable;\n","import React from 'react';\nimport {\n string, node, shape, oneOfType, arrayOf\n} from 'prop-types';\nimport { NON_INPUT_QUESTIONS } from '@jotforminc/constants';\n\nconst defaultStyle = {\n width: '100%'\n};\n\nconst questionColumnDefaultStyle = {\n color: '#6f76a7',\n fontSize: '14px'\n};\n\nconst answerColumnDefaultStyle = {\n color: '#0a1551',\n fontSize: '14px'\n};\n\nconst SubmissionTable = ({\n data,\n className,\n style,\n questionColumnStyle,\n answerColumnStyle,\n children,\n ...props\n}) => {\n const renderData = () => {\n return data.filter(item => NON_INPUT_QUESTIONS.indexOf(item.type) === -1).map(item => {\n const qid = Number(item.qid);\n return (\n \n \n {item.text}\n \n \n {`{${item.name}}`}\n \n \n );\n });\n };\n return (\n \n \n \n \n \n \n {renderData()}\n \n \n \n \n \n \n );\n};\n\nSubmissionTable.propTypes = {\n className: string,\n data: oneOfType([shape(), arrayOf(shape())]),\n style: shape(),\n questionColumnStyle: shape(),\n answerColumnStyle: shape(),\n children: node\n};\n\nSubmissionTable.defaultProps = {\n className: 'jmSubmissionTable',\n data: [],\n style: null,\n questionColumnStyle: null,\n answerColumnStyle: null,\n children: null\n};\n\nexport default SubmissionTable;\n","import React from 'react';\nimport {\n string,\n arrayOf,\n object,\n bool,\n node\n} from 'prop-types';\nimport ReactDOMServer from 'react-dom/server';\n\nimport {\n MailWrapper,\n TableWrapper,\n Table,\n HeaderTable,\n SubmissionTable,\n Button\n} from '@jotforminc/email-template';\n\n// VERY IMPORTANT NOTE: !!!\n// IE doesnt support fragments to render on server-side so; if you put a React.Fragment(<>) workflow builder will fail on IE!!\nconst DefaultEmail = ({\n actionButtons = [],\n withBrandingAccent,\n actionButtonsHeaderText,\n titleText,\n fieldSet,\n cdnLink,\n showEditButton\n}) => (\n \n \n {window.JOTFORM_ENV === 'ENTERPRISE' ?
    \n : (\n \n \n
    \n )}\n
    \n \n \n {actionButtonsHeaderText}\n \n \n
    \n \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {showEditButton && (\n \n \n \n )}\n {showEditButton && (\n \n \n \n )}\n {showEditButton && (\n \n \n \n ) }\n {showEditButton && (\n \n \n \n )}\n \n
     
    \n \n \n {titleText}\n \n \n
     
    \n \n
     
    \n \n \n \n
     
    \n \n \n \n);\n\nexport function DefaultEmailMarkupGenerator(config = {}, fieldSet = []) {\n const extendedConfig = { ...DefaultEmail.defaultProps, ...config };\n return ReactDOMServer.renderToStaticMarkup();\n}\n\nDefaultEmail.propTypes = {\n actionButtons: arrayOf(object),\n actionButtonsHeaderText: node,\n withBrandingAccent: bool,\n titleText: string,\n fieldSet: arrayOf(object),\n cdnLink: string,\n showEditButton: bool\n};\n\nDefaultEmail.defaultProps = {\n actionButtons: [],\n actionButtonsHeaderText: null,\n withBrandingAccent: false,\n titleText: '{form_title}',\n fieldSet: [],\n cdnLink: 'https://cdn.jotfor.ms',\n showEditButton: false\n};\n\nexport default DefaultEmail;\n","import React from 'react';\nimport {\n string,\n arrayOf,\n object,\n bool,\n node\n} from 'prop-types';\nimport ReactDOMServer from 'react-dom/server';\n\nimport {\n MailWrapper,\n TableWrapper,\n Table,\n HeaderTable,\n SubmissionTable,\n Button\n} from '@jotforminc/email-template';\n\n// VERY IMPORTANT NOTE: !!!\n// IE doesnt support fragments to render on server-side so; if you put a React.Fragment(<>) workflow builder will fail on IE!!\nconst DefaultEmail = ({\n actionButtons = [],\n emailPreviewHack,\n withBrandingAccent,\n actionButtonsHeaderText,\n titleText,\n fieldSet,\n cdnLink,\n showEditButton,\n showSubmissionTable,\n showFooter,\n clearHeight,\n noSidePadding\n}) => (\n \n {emailPreviewHack}\n \n {window.JOTFORM_ENV === 'ENTERPRISE' ?
    \n : (\n \n \n
    \n )}\n
    \n \n \n {actionButtonsHeaderText}\n \n \n
    \n {showFooter && window.JOTFORM_ENV !== 'ENTERPRISE'\n && (\n \n \n \n \n \n \n \n \"\"\n \n \n \n \n

    \n {' '}\n 111 Pine St. Suite 1815, San Francisco, CA 94111\n

    \n \n \n \n \n \n \n \n \"\"\n \n \n \n \n \"\"\n \n \n \n \n \n \n \n \n 24/7 Support\n \n \n \n \n \n \n \n \n \n \n \n )}\n {showSubmissionTable && (\n \n \n \n \n \n  \n \n \n \n \n \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n {showEditButton && (\n \n \n \n )}\n {showEditButton && (\n \n \n \n )}\n {showEditButton && (\n \n \n \n ) }\n {showEditButton && (\n \n \n \n )}\n \n
     
    \n \n \n {titleText}\n \n \n
    \n \n \n
    \n \n
     
    \n \n \n \n
     
    \n \n
    \n )}\n \n \n);\n\nexport function DefaultEmailMarkupGenerator(config = {}, fieldSet = []) {\n const extendedConfig = { ...DefaultEmail.defaultProps, ...config };\n return ReactDOMServer.renderToStaticMarkup();\n}\n\nDefaultEmail.propTypes = {\n actionButtons: arrayOf(object),\n actionButtonsHeaderText: node,\n withBrandingAccent: bool,\n emailPreviewHack: node,\n titleText: string,\n fieldSet: arrayOf(object),\n cdnLink: string,\n showEditButton: bool,\n showSubmissionTable: bool,\n showFooter: bool,\n clearHeight: bool,\n noSidePadding: bool\n};\n\nDefaultEmail.defaultProps = {\n actionButtons: [],\n actionButtonsHeaderText: null,\n withBrandingAccent: false,\n emailPreviewHack: null,\n titleText: '{form_title}',\n fieldSet: [],\n cdnLink: 'https://cdn.jotfor.ms',\n showEditButton: false,\n showSubmissionTable: true,\n showFooter: false,\n clearHeight: false,\n noSidePadding: false\n};\n\nexport default DefaultEmail;\n","import uniqBy from 'lodash/uniqBy';\nimport { t } from '@jotforminc/translation';\nimport { STATIC_FIELDS_WITH_PLACEHOLDER } from '@jotforminc/constants';\nimport { selectText, isProduction } from '@jotforminc/utils';\nimport { isEnterprise as isEnterpriseEnv, isNewSMTPFlow } from '@jotforminc/enterprise-utils';\n\nimport isEmpty from 'lodash/isEmpty';\nimport isArray from 'lodash/isArray';\nimport DEFAULT_EMAIL_CONFIGS from '../constants/DefaultEmailConfigs';\nimport { EMAIL_TEMPLATE_TYPES } from '../constants/EmailTemplateTypes';\nimport { DefaultEmailMarkupGenerator } from '../templates/DefaultEmail';\nimport { DefaultEmailMarkupGenerator as DefaultEmailMarkupGeneratorNew } from '../templates/DefaultEmailBranding';\nimport layer from './layer';\n\nconst DEFAULT_API_REQUEST_OPTIONS = { type: 'json', crossOrigin: true };\nconst DEFAULT_API_POST_REQUEST_OPTIONS = { method: 'post', ...DEFAULT_API_REQUEST_OPTIONS };\n\nexport const fixLogos = body => {\n if (typeof body !== typeof 'string') return body;\n const regexPairs = [\n [/()/g, 'https://cdn.jotfor.ms/assets/img/logo2021/jotform-logo@144x144.png', 30],\n [/()/g, 'https://cdn.jotfor.ms/assets/img/logo2021/jotform-logo.png', 40],\n [/()/g, 'https://cdn.jotfor.ms/assets/img/logo2021/jotform-logo@144x144.png', 40],\n [/()/g, 'https://cdn.jotfor.ms/assets/img/logo2021/jotform-logo.png', 36]\n ];\n return regexPairs.reduce((curr, pair) => {\n const regex = pair[0];\n const newLogoSrc = pair[1];\n const height = pair[2];\n return curr.replace(regex, (whole, g1, image) => {\n return whole.replace(image, newLogoSrc).replace(' {\n const filter = ['control_textbox', 'control_textarea', 'control_dropdown', 'control_radio', 'control_checkbox', 'control_fullname', 'control_autocomp', 'control_hidden'];\n const defaultOption = {\n key: companyTitle,\n text: companyTitle\n };\n\n const usableFields = [];\n usableFields.push({ key: '', text: t('Please Select') });\n\n if (!isEncrypted) {\n questions.forEach(question => {\n if (filter.indexOf(question.type) > -1) {\n usableFields.push({ key: `{${question.name}}`, text: selectText(question) });\n }\n });\n }\n\n usableFields.push(defaultOption);\n return usableFields;\n};\n\nexport const getEmailFields = (isSSOProtected, questions) => {\n const filter = [\n 'control_textbox',\n 'control_textarea',\n 'control_dropdown',\n 'control_radio',\n 'control_checkbox',\n 'control_email',\n 'control_autocomp',\n 'control_hidden',\n 'control_widget',\n 'control_mixed',\n 'control_assignee'\n ];\n\n const usableFields = [];\n usableFields.push({ key: 'none', text: t('Please Select') });\n\n if (isSSOProtected) {\n usableFields.push({ key: 'submitter', text: t('Submitter') });\n }\n\n questions.forEach(question => {\n if (filter.indexOf(question.type) > -1) {\n if (question.fields && typeof (question.fields) === 'object' && question.type === 'control_mixed') {\n question.fields.forEach(field => {\n if (['email', 'textbox', 'dropdown'].indexOf(field.type) > -1) {\n let fieldLabel = question.sublabels?.[`field_${field.fieldID}`];\n fieldLabel = fieldLabel && fieldLabel.length && fieldLabel.length > 0 ? fieldLabel : field.type;\n\n usableFields.push({ key: `{${question.name}[${field.fieldID}]}`, text: `${question.text}/${fieldLabel}` });\n }\n });\n } else {\n usableFields.push({ key: `{${question.name}}`, text: selectText(question) });\n }\n }\n });\n\n return usableFields;\n};\n\nexport const computeStaticFields = (emailType, isHIPAA, statics = STATIC_FIELDS_WITH_PLACEHOLDER, { useJotformSign } = {}) => {\n switch (true) {\n case EMAIL_TEMPLATE_TYPES.FORM_SUBMIT_AUTORESPONDER === emailType && isHIPAA: {\n return statics.filter(q => ['{ip}'].indexOf(q.placeholder) < 0);\n }\n case [EMAIL_TEMPLATE_TYPES.FORM_SUBMIT_AUTORESPONDER, EMAIL_TEMPLATE_TYPES.FORM_SUBMIT_NOTIFICATION].includes(emailType): {\n return statics.filter(({ placeholder }) => {\n const useNewActionButtons = window.isNewActionButtons;\n if (useNewActionButtons && ['{edit_link}', '{pdf-link}'].includes(placeholder)) return false;\n\n if (useJotformSign && placeholder === '{edit_link}') return false;\n\n return true;\n });\n }\n case EMAIL_TEMPLATE_TYPES.FORM_SAVE_AND_CONTINUE_LATER: {\n return [];\n }\n default:\n return statics;\n }\n};\n\nexport const getRecipientLimitConfig = (accountType, recipientLimit) => {\n const defaultData = {\n accountType,\n showUpgradeWarning: false,\n hideToError: false,\n maxLimit: 10,\n defaultExceededMessage: 'You can add up to 10 recipients.'\n };\n\n const isFreeLimit = ['FREE', 'GUEST'].includes(defaultData.accountType);\n const isUnlimited = ['ADMIN', 'SUPPORT'].includes(defaultData.accountType) || isEnterpriseEnv();\n\n if (isFreeLimit) {\n defaultData.maxLimit = 1;\n defaultData.showUpgradeWarning = true;\n defaultData.defaultExceededMessage = null;\n } else if (isUnlimited) {\n defaultData.maxLimit = Infinity;\n defaultData.showUpgradeWarning = false;\n defaultData.hideToError = true;\n } else {\n defaultData.maxLimit = recipientLimit || 10;\n defaultData.showUpgradeWarning = false;\n defaultData.defaultExceededMessage = `You can add up to ${recipientLimit || 10} recipients`;\n defaultData.hideToError = false;\n }\n\n return defaultData;\n};\n\nexport const computeDropdownOptions = (options, key) => {\n return options.map(option => ({ value: option.value ? option.value : option[key], text: option.text }));\n};\n\nexport const getFirstField = (questions, search, asQuestion) => {\n const found = questions.find(q => q && q.type === search);\n if (found && asQuestion) {\n return found;\n }\n if (found) {\n return `{${found.name}}`;\n }\n return false;\n};\n\n/**\n * New Email Body Getter, currently only for development purposes.\n*/\n\nexport const getDefaultEmailBody = (emailType, fieldSet = [], config = {}) => {\n const defaultOptions = (DEFAULT_EMAIL_CONFIGS[emailType] || {});\n const {\n outcomes = [],\n addActionButtons,\n hideMoreActions,\n actionButtons = [],\n moreActionText = null,\n isOutcomeButtonsActive = false,\n ...extendedConfig\n } = { ...defaultOptions, ...config };\n const moreActionButtonText = isOutcomeButtonsActive ? moreActionText || 'More Actions' : 'More Actions';\n const moreActionsButton = {\n textColor: '#5e74e6', backgroundColor: '#fff', text: moreActionButtonText, actionUrl: '{approvalLink}?moreActions', border: '1px solid #E7E9F0'\n };\n\n const hasMoreActions = !hideMoreActions || (outcomes && outcomes.length > 2);\n const configWithActionButtons = {\n ...extendedConfig,\n actionButtons: addActionButtons ? [\n ...actionButtons, ...(hasMoreActions ? [moreActionsButton] : [])\n ] : []\n };\n\n return config.branding21 === true\n ? DefaultEmailMarkupGeneratorNew(configWithActionButtons, fieldSet)\n : DefaultEmailMarkupGenerator(configWithActionButtons, fieldSet);\n};\n\nexport const sendTestEmail = (email, user) => {\n return new Promise((resolve, reject) => {\n if (user.accountType === 'GUEST') {\n return reject(new Error('Guests are not allowed!'));\n } if (user.email) {\n const formData = new window.FormData();\n const { senderEmail: fromEmail = '' } = email;\n const emailData = {\n action: 'sendTestEmail',\n from: fromEmail,\n to: user.email,\n senderName: user.name || user.username,\n subject: email.subject,\n body: email.content,\n html: 1\n };\n Object.keys(emailData).forEach(keyName => {\n formData.append(keyName, emailData[keyName]);\n });\n layer.post('/server.php', formData).then(resp => {\n resolve(resp);\n }).catch(e => {\n reject(e);\n });\n }\n });\n};\n\nexport const extendCustomSenderOptions = (customSenderEmails = [], isEnterprise = false, userData = {}) => {\n let emails = customSenderEmails;\n const blockDate = new Date('2021-11-29');\n const accountCreateData = new Date(userData?.created_at);\n const isBlock = (userData && !isEnterprise) && accountCreateData.getTime() >= blockDate.getTime();\n\n if (isBlock) {\n emails = customSenderEmails.filter(e => e.key !== 'noreply@formresponse.com');\n }\n\n const list = [\n ...emails.map(emailInfo => {\n return {\n text: emailInfo.text,\n value: emailInfo.key\n };\n })\n ];\n\n const filteredEmails = emails.filter(({ key: emailKey = '' }) => emailKey !== 'addNewAddress');\n const newList = [\n ...filteredEmails.map(emailInfo => {\n const {\n text = '', key = '', owner = '', type = false, provider = ''\n } = emailInfo;\n\n return {\n text: text,\n value: key,\n owner: owner,\n type: type,\n provider: provider\n };\n })\n ];\n\n const uniqueList = uniqBy(isNewSMTPFlow(userData) ? newList : list, e => e.value);\n return uniqueList;\n};\n\nexport const prepareGroupedList = list => {\n if (isArray(list) && list.length > 0) {\n const defaultEmail = list.find(({ type = false }) => type === 'DEFAULT');\n const otherEmails = list.filter(({ type = false }) => !type);\n\n const groupedList = [\n {\n groupName: 'Default Email',\n items: [\n { ...defaultEmail }\n ]\n },\n {\n groupName: 'Other Emails',\n items: otherEmails\n }\n ];\n\n return groupedList;\n }\n\n return [];\n};\n\nexport const existingPasswordPlaceholderValue = '*jfplaceholder*';\n\nexport const isImportedPdfAttachable = (importedPDF, importedPdfIsConnected) => {\n if (!importedPDF || importedPdfIsConnected === 'No') return false;\n return true;\n};\n\nexport const getPDFTemplateOptions = (availablePDFs, {\n importedPDF,\n importedPdfIsConnected,\n passwordEnabled,\n pdfattachment,\n pdfId,\n pdfPassword,\n enforceDefaultPDFOption = false\n}) => {\n const selectedPdfId = pdfId;\n let options = [];\n const nonFillablePDFS = availablePDFs.filter(pdf => pdf.type !== 'FORM');\n options = nonFillablePDFS.map(pdf => ({\n value: pdf.id,\n text: pdf.title\n }));\n if (options.length < 1 || enforceDefaultPDFOption) {\n options.unshift({\n value: '',\n text: t('Default Document')\n });\n }\n\n const isImportedPdfAvailable = isImportedPdfAttachable(importedPDF, importedPdfIsConnected);\n\n if (isImportedPdfAvailable) {\n options.unshift({\n value: 'importedPDF',\n text: t('The Original PDF with form submission data.')\n });\n }\n\n const selectedOptionsPredefined = !selectedPdfId ? [] : selectedPdfId.split(',').reduce((acc, curr) => {\n const selectedOption = options.find(option => option.value === curr);\n return [...acc, {\n value: curr,\n text: selectedOption ? selectedOption.text : ''\n }];\n }, []);\n\n const selectedOptions = selectedOptionsPredefined;\n if (!isImportedPdfAvailable && options.length === 1 && selectedOptions.length === 0 && options[0].text === t('Default Document')) { // if only have default document\n selectedOptions.push({\n value: '',\n text: t('Default Document')\n });\n }\n\n return {\n pdfOptions: options,\n selectedPDFOptions: selectedOptions.map(({ value }) => value),\n enablePDFPassword: passwordEnabled === '1',\n PDFPassword: pdfPassword ? existingPasswordPlaceholderValue : '',\n attachPDF: pdfattachment === '1'\n };\n};\n\nexport const hasPDFPasswordError = (isHIPAA, password) => {\n if (!password || (isHIPAA && (/^(.{0,7}|[^0-9]*|[^A-Z]*|[^a-z]*|[a-zA-Z0-9]*|[^\\s]*\\s.*)$/).test((password || '')))) {\n return true;\n }\n return false;\n};\n\nexport const actionTrack = ({ username, action, target }) => {\n if (!username) {\n return console.log('[Email Wizards Actions] :: Unable to track, user not found.');\n }\n\n const log = {\n project: 'email-wizards',\n oldActions: {\n action: action,\n target: target\n },\n actor: username,\n location: window.location && window.location.href\n };\n\n if (!isProduction()) {\n return console.log('[Email Wizards Actions] :: ', log);\n }\n\n layer.post('t/jfrev', log);\n};\n\nconst createAPIRequest = function createAPI(options) {\n return new Promise((resolve, reject) => {\n const req = fetch(options);\n req.then(resp => {\n const { responseCode } = resp;\n if ([400, 401, 404].indexOf(responseCode) > -1) {\n reject(resp);\n }\n if (responseCode === 200) {\n resolve(resp.content);\n }\n });\n req.catch(resp => {\n let res = resp.response;\n try {\n res = JSON.parse(resp.response);\n } catch (e) {\n // eslint-disable-next-line prefer-promise-reject-errors\n reject('JSON parse error');\n }\n reject(res);\n });\n });\n};\n\nexport function createPrefill(formID, data, provider) {\n const _data = data;\n _data.provider = provider;\n const options = {\n method: 'post',\n url: `/API/form/${formID}/prefills`,\n data: JSON.stringify(data)\n };\n Object.assign(options, DEFAULT_API_POST_REQUEST_OPTIONS);\n return createAPIRequest(options);\n}\n\nexport function updatePrefill(formID, data, prefillID, provider) {\n const _data = data;\n _data.provider = provider;\n const options = {\n method: 'put',\n url: `/API/form/${formID}/prefills/${prefillID}`,\n data: JSON.stringify(data)\n };\n Object.assign(options, DEFAULT_API_REQUEST_OPTIONS);\n return createAPIRequest(options);\n}\n\nexport const generateUniqueID = (value = '') => {\n const randomID = String((Date.now() + ((Math.random() * 1000000).toFixed())));\n return randomID + value;\n};\n\nexport const extractResourceID = str => {\n const regex = /\\/(\\d+)/;\n const match = str.match(regex);\n return match ? match[1] : '';\n};\n\nexport const arrangeCustomSender = emails => {\n const senderEmails = {\n smtp: [],\n addNewButton: true\n };\n\n if (!isEmpty(emails)) {\n const senderEmailsKeysAndValues = Object.entries(emails);\n senderEmailsKeysAndValues.forEach(email => {\n if (email[0].indexOf('smtpConfigs') !== -1) {\n email[1].forEach(emailSettings => senderEmails.smtp.push(emailSettings));\n } else if (email[0].indexOf('addNewButton') !== -1) {\n // eslint-disable-next-line prefer-destructuring\n senderEmails.addNewButton = email[1];\n }\n });\n }\n return senderEmails;\n};\n\nexport const getSenderOptions = senderEmails => {\n const senderOptions = [];\n senderEmails.smtp.map(smtp => senderOptions.push(smtp));\n if (senderEmails.addNewButton) {\n senderOptions.push({ key: 'addNewAddress', text: t('+ Add email address') });\n }\n\n return senderOptions;\n};\n\nexport const getApiKeyFromUrl = () => {\n const isThereInvitation = global.location.href.match(/iak=([\\d | \\w | -]*)/) !== null && global.location.href.match(/iak=([\\d | \\w | -]*)/).length === 2;\n if (isThereInvitation) {\n const invitationAPIKey = global.location.href.match(/iak=([\\d | \\w | -]*)/)[1];\n return invitationAPIKey;\n }\n return '';\n};\n","var _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _g, _path9, _path10, _path11, _path12, _g2, _path13, _path14, _path15, _path16, _path17, _path18, _path19, _g3, _path20, _path21, _path22, _path23, _g4, _path24, _path25, _path26, _path27, _path28, _path29, _path30, _path31, _path32, _path33, _path34, _path35, _path36, _path37, _path38, _path39, _path40, _path41, _path42, _path43, _path44, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgNoFormsIcon = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 198 141\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0 97.4367C0 73.8043 19.1578 54.6465 42.7902 54.6465H155.115C178.747 54.6465 197.905 73.8043 197.905 97.4367C197.905 121.069 178.747 140.227 155.115 140.227H42.7902C19.1578 140.227 0 121.069 0 97.4367Z\",\n fill: \"#E6E6F5\"\n})), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask0_624:16012\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 0,\n y: 54,\n width: 198,\n height: 87\n}, _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0 97.4367C0 73.8043 19.1578 54.6465 42.7902 54.6465H155.115C178.747 54.6465 197.905 73.8043 197.905 97.4367C197.905 121.069 178.747 140.227 155.115 140.227H42.7902C19.1578 140.227 0 121.069 0 97.4367Z\",\n fill: \"#E6E6F5\"\n}))), /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask0_624:16012)\"\n}, _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M115.336 77.9239C106.901 88.5617 99.9998 95.4214 94.6306 98.5029C86.5769 103.125 85.9877 98.2682 56.4901 77.7583C54.439 76.8969 52.7754 76.6674 49.9956 79.7585C48.3335 81.6069 44.7598 82.0931 39.2746 81.2173L39.2746 81.2173C38.7245 81.1295 38.2053 81.504 38.115 82.0539C38.0701 82.3274 38.1397 82.6067 38.3074 82.8265C39.6577 84.5955 41.994 85.5598 45.3164 85.7196C51.9089 86.0364 52.6163 83.5632 56.326 86.4774C60.0356 89.3916 79.9102 112.691 91.8962 113.269C103.882 113.848 119.63 96.0418 124.085 94.6697C127.055 93.7549 129.477 86.5287 131.353 72.9909L115.336 77.9239Z\",\n fill: \"#CD7448\"\n})), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M58.9543 90.0563C62.224 86.9336 64.2069 84.21 64.903 81.8853C79.5311 92.8149 87.8103 97.9805 89.7407 97.382C92.3874 96.5614 113.744 77.3633 121.165 72.8215C121.839 72.149 121.886 77.8987 122.422 77.2795L120.015 99.5943C111.348 105.796 105.826 109.617 103.45 111.057C99.8843 113.217 90.5281 117.172 82.0782 110.302C76.4449 105.722 68.7369 98.9735 58.9543 90.0563Z\",\n fill: \"#F4F5FE\"\n})), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M110.638 114.549C111.986 119.246 111.986 125.139 110.638 135.875L160.179 128.641L157.146 88.3777C155.124 81.6671 152.765 76.9698 150.069 74.2855C146.025 70.2592 124.793 72.2724 119.737 74.2855C114.682 76.2987 113.671 85.3579 108.616 93.4106C103.561 101.463 108.616 107.503 110.638 114.549Z\",\n fill: \"white\"\n})), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M141.981 72.1544C139.959 88.6243 134.277 96.8593 124.934 96.8593C110.92 96.8593 114.206 89.4872 115.961 86.0305C117.131 83.726 118.417 79.6245 119.82 73.7258C124.641 72.1872 128.321 71.3278 130.86 71.1478C133.398 70.9679 137.105 71.3034 141.981 72.1544Z\",\n fill: \"#CD7448\"\n})), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask1_624:16012\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 51,\n y: -1,\n width: 110,\n height: 94\n}, _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M51.2891 -0.625H160.642V92.0872H51.2891V-0.625Z\",\n fill: \"#C4C4C4\"\n}))), /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask1_624:16012)\"\n}, /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask2_624:16012\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 106,\n y: 71,\n width: 59,\n height: 93\n}, _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M110.638 138.541C111.986 127.804 111.986 119.246 110.638 114.549C108.616 107.503 103.561 101.463 108.616 93.4106C113.671 85.3579 114.682 76.2987 119.737 74.2855C124.793 72.2724 146.025 70.2592 150.069 74.2855C152.765 76.9698 155.124 81.6671 157.146 88.3777L160.179 128.641C164.898 146.759 165.572 157.832 162.201 161.858C157.146 167.898 155.124 151.792 132.881 142.733C128.163 140.72 120.748 139.883 110.638 138.541Z\",\n fill: \"white\"\n}))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask2_624:16012)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M110.638 138.539C111.986 127.803 111.986 120.085 110.638 115.388C108.616 108.342 103.561 102.302 108.616 94.2498C113.671 86.1972 114.398 76.4272 119.454 74.414C124.509 72.4008 145.286 69.4997 149.33 73.526C152.026 76.2102 155.124 82.5064 157.146 89.2169V102.827L160.179 129.48C164.898 147.599 165.572 158.671 162.201 162.697C157.146 168.737 155.124 152.632 132.881 143.572C128.163 141.559 120.748 139.882 110.638 138.539Z\",\n fill: \"white\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M141.981 72.1544C139.959 88.6243 134.277 96.8593 124.934 96.8593C110.92 96.8593 114.206 89.4872 115.961 86.0305C117.131 83.726 118.417 79.6245 119.82 73.7258C124.641 72.1872 128.321 71.3278 130.86 71.1478C133.398 70.9679 137.105 71.3034 141.981 72.1544Z\",\n fill: \"#CD7448\"\n}))), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M113.82 33.3166C110.43 47.7514 109.279 49.4479 108.018 52.6186C107.705 53.4047 107.867 54.3038 108.456 54.912C113.256 59.8667 119.676 61.4146 127.717 59.5556C136.283 57.5753 136.242 54.5995 130.934 30.4186L113.82 33.3166Z\",\n fill: \"#0A1551\"\n})), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M136.285 53.9991C134.625 66.972 140.19 71.5228 142.1 71.5552C144.009 71.5876 136.698 79.5784 123.067 92.3643C118.606 83.7663 118.107 76.0982 119.5 73.8743C121.59 70.5386 123.529 73.3922 122.813 61.7133C122.343 54.0415 132.544 54.7707 139.81 53.5254C136.285 53.9991 130.529 54.1174 136.285 53.9991Z\",\n fill: \"#CD7448\"\n})), _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.677232,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M122.313 56.5259C123.105 63.7532 123.082 67.7391 123 68.3752C122.878 69.3293 140.282 68.5234 135.312 53.2024C130.342 37.8815 128.68 55.0076 122.313 56.5259Z\",\n fill: \"#BD5826\"\n})), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask3_624:16012\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 113,\n y: 24,\n width: 38,\n height: 44\n}, _path12 || (_path12 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M145.092 57.0491C140.516 63.1625 134.135 66.5174 125.949 67.1136C117.636 67.7191 112.086 56.8794 113.156 45.7503C113.667 40.4403 114.843 35.7532 119.518 30.9235C129.169 20.9553 138.236 22.2718 146.718 34.8728L150.38 44.6449L145.092 57.0491Z\",\n fill: \"white\"\n}))), _g2 || (_g2 = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask3_624:16012)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M143.966 56.1764C138.857 61.8531 132.197 64.6207 123.988 64.4795C115.652 64.336 111.101 53.0441 113.171 42.0585C114.159 36.8169 115.753 32.2554 120.847 27.866C131.36 18.8066 140.273 20.9315 147.587 34.2405L150.353 44.2998L143.966 56.1764Z\",\n fill: \"#CD7448\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.422879,\n d: \"M131.771 56.3898C129.076 55.9732 127.129 54.1378 127.423 52.2901C127.718 50.4425 130.141 49.2824 132.836 49.6989C135.532 50.1155 137.478 51.9509 137.184 53.7985C136.89 55.6462 134.466 56.8063 131.771 56.3898Z\",\n fill: \"#A44616\"\n}))), _path13 || (_path13 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M125.579 55.9777C123.46 56.8827 120.96 56.4158 118.079 54.5768C119.435 58.4286 120.976 60.1813 122.702 59.8349C124.428 59.4886 125.387 58.2028 125.579 55.9777Z\",\n fill: \"#A5330A\"\n})), _path14 || (_path14 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M126.938 38.462C119.116 37.1633 115.933 36.5576 113.227 34.4149C113.384 24.3556 121.661 18.4345 125.497 17.5383C134.368 15.3748 143.999 18.0813 149.91 25.865C150.496 26.6367 150.986 27.4266 151.389 28.2296C151.621 28.6034 151.85 29.0216 152.077 29.4864C155.776 40.1435 157.722 55.6928 156.667 61.4529C153.71 65.2542 129.978 66.0739 132.95 61.3098C133.116 61.0439 133.301 60.7682 133.498 60.4748C134.894 58.3952 136.885 55.4288 136.866 48.7651C136.862 47.1514 136.396 45.2638 135.87 43.1353C135.692 42.4157 135.507 41.6685 135.332 40.8951C134.913 40.7489 134.514 40.6101 134.135 40.4782C132.443 39.8904 131.149 39.4404 130.345 39.0921C129.465 38.7109 130.304 36.1681 130.907 34.3427C131.433 32.7486 131.778 31.7015 130.641 33.1186C129.176 34.9439 128.616 36.3723 128.341 37.492C128.184 38.1288 127.585 38.5694 126.938 38.462Z\",\n fill: \"#0A1551\"\n})), _path15 || (_path15 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M115.165 138.735C120.494 135.738 144.433 142.471 162.674 135.789C172.674 132.126 165.022 110.79 160.852 92.8997C158.213 82.9975 153.845 76.4349 149.863 74.0075L141.201 80.3815L143.406 92.2543C143.406 92.2543 142.036 96.5649 144.923 104.397C147.811 112.229 152.298 122.076 152.298 122.076L109.373 131.081C109.528 134.632 110.902 141.133 115.165 138.735Z\",\n fill: \"white\"\n}))), _path16 || (_path16 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M120.877 137.279C118.784 138.945 117.779 138.998 115.278 140.92C113.265 141.884 111.779 142.298 107.412 140.994C104.792 140.212 101.091 140.012 96.3082 140.393L96.3082 140.393C95.7516 140.438 95.2652 140.024 95.2217 139.47C95.2055 139.263 95.2538 139.057 95.3599 138.878C96.5754 136.833 98.9431 135.637 102.463 135.287C109.043 134.635 109.862 137.065 113.441 133.969C115.827 131.905 118.306 133.008 120.877 137.279Z\",\n fill: \"#CD7448\"\n})), _path17 || (_path17 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M116.883 140.747C127.5 139.876 146.152 144.482 164.392 137.801C174.393 134.137 166.74 112.802 162.57 94.9114C159.932 85.0092 155.564 78.4466 151.582 76.0192L142.92 82.3932L145.125 94.266C145.125 94.266 143.755 98.5766 146.642 106.408C149.529 114.24 154.017 124.088 154.017 124.088L111.092 133.093C111.246 136.643 110 140.376 116.883 140.747Z\",\n fill: \"url(#paint0_linear_624:16012)\"\n}))), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask4_624:16012\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 96,\n y: 14,\n width: 64,\n height: 79\n}, _path18 || (_path18 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M96 14.375H160V92.375H96V14.375Z\",\n fill: \"#C4C4C4\"\n}))), /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask4_624:16012)\"\n}, /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask5_624:16012\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 106,\n y: 71,\n width: 59,\n height: 93\n}, _path19 || (_path19 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M110.349 138.541C111.697 127.804 111.697 119.246 110.349 114.549C108.327 107.503 103.272 101.463 108.327 93.4106C113.382 85.3579 114.393 76.2987 119.448 74.2855C124.504 72.2724 145.736 70.2592 149.78 74.2855C152.476 76.9698 154.835 81.6671 156.857 88.3777L159.89 128.641C164.609 146.759 165.283 157.832 161.912 161.858C156.857 167.898 154.835 151.792 132.592 142.733C127.874 140.72 120.459 139.883 110.349 138.541Z\",\n fill: \"white\"\n}))), _g3 || (_g3 = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask5_624:16012)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M110.349 138.539C111.697 127.803 111.697 120.085 110.349 115.388C108.327 108.342 103.272 102.302 108.327 94.2498C113.382 86.1972 114.109 76.4272 119.165 74.414C124.22 72.4008 144.997 69.4997 149.041 73.526C151.737 76.2102 154.835 82.5064 156.857 89.2169V102.827L159.89 129.48C164.609 147.599 165.283 158.671 161.912 162.697C156.857 168.737 154.835 152.632 132.592 143.572C127.874 141.559 120.459 139.882 110.349 138.539Z\",\n fill: \"white\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M141.692 72.1544C139.67 88.6243 133.988 96.8593 124.645 96.8593C110.631 96.8593 113.917 89.4872 115.672 86.0305C116.842 83.726 118.128 79.6245 119.531 73.7258C124.352 72.1872 128.032 71.3278 130.571 71.1478C133.109 70.9679 136.816 71.3034 141.692 72.1544Z\",\n fill: \"#CD7448\"\n}))), _path20 || (_path20 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M113.531 33.3166C110.141 47.7514 108.989 49.4479 107.729 52.6186C107.416 53.4047 107.578 54.3038 108.167 54.912C112.967 59.8667 119.387 61.4146 127.428 59.5556C135.994 57.5753 135.953 54.5995 130.645 30.4186L113.531 33.3166Z\",\n fill: \"#0A1551\"\n})), _path21 || (_path21 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M135.996 53.9991C134.335 66.972 139.901 71.5228 141.811 71.5552C143.72 71.5876 136.409 79.5784 122.778 92.3643C118.317 83.7663 117.818 76.0982 119.211 73.8743C121.301 70.5386 123.24 73.3922 122.524 61.7133C122.054 54.0415 132.255 54.7707 139.521 53.5254C135.996 53.9991 130.24 54.1174 135.996 53.9991Z\",\n fill: \"#CD7448\"\n})), _path22 || (_path22 = /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.677232,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M122.024 56.5259C122.816 63.7532 122.793 67.7391 122.711 68.3752C122.589 69.3293 139.993 68.5234 135.023 53.2024C130.053 37.8815 128.391 55.0076 122.024 56.5259Z\",\n fill: \"#BD5826\"\n})), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask6_624:16012\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 112,\n y: 24,\n width: 39,\n height: 44\n}, _path23 || (_path23 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M144.803 57.0491C140.227 63.1625 133.846 66.5174 125.66 67.1136C117.347 67.7191 111.797 56.8794 112.867 45.7503C113.377 40.4403 114.553 35.7532 119.229 30.9235C128.88 20.9553 137.947 22.2718 146.429 34.8728L150.091 44.6449L144.803 57.0491Z\",\n fill: \"white\"\n}))), _g4 || (_g4 = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask6_624:16012)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M143.677 56.1764C138.567 61.8531 131.908 64.6207 123.699 64.4795C115.363 64.336 110.812 53.0441 112.882 42.0585C113.87 36.8169 115.464 32.2554 120.558 27.866C131.071 18.8066 139.984 20.9315 147.298 34.2405L150.064 44.2998L143.677 56.1764Z\",\n fill: \"#CD7448\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M128.904 40.8301C130.107 41.4177 130.959 42.3601 131.387 43.0696C131.557 43.3507 131.466 43.716 131.185 43.8855C130.905 44.0549 130.539 43.9644 130.37 43.6833C130.041 43.1393 129.35 42.3705 128.383 41.8981C127.438 41.4364 126.218 41.2495 124.756 41.8547C124.453 41.9803 124.106 41.8362 123.98 41.5329C123.854 41.2296 123.998 40.882 124.301 40.7564C126.103 40.01 127.679 40.2318 128.904 40.8301Z\",\n fill: \"#37120C\",\n fillOpacity: 0.25\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M117.443 38.8566C116.482 38.8034 115.689 39.1609 115.177 39.5723C114.922 39.778 114.882 40.152 115.088 40.4078C115.294 40.6636 115.668 40.7042 115.923 40.4985C116.242 40.2424 116.753 40.0088 117.379 40.0434C117.994 40.0774 118.794 40.3744 119.692 41.3119C119.919 41.5491 120.295 41.5576 120.532 41.3308C120.769 41.104 120.777 40.7278 120.55 40.4905C119.487 39.38 118.416 38.9104 117.443 38.8566Z\",\n fill: \"#37120C\",\n fillOpacity: 0.25\n}), /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.422879,\n d: \"M131.482 56.3898C128.787 55.9732 126.84 54.1378 127.134 52.2901C127.428 50.4425 129.852 49.2824 132.547 49.6989C135.243 50.1155 137.189 51.9509 136.895 53.7985C136.601 55.6462 134.177 56.8063 131.482 56.3898Z\",\n fill: \"#A44616\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.422879,\n d: \"M109.964 51.9299C107.316 51.2573 105.484 49.2294 105.872 47.4007C106.26 45.5719 108.72 44.6347 111.368 45.3074C114.016 45.9801 115.848 48.0079 115.46 49.8367C115.072 51.6654 112.612 52.6026 109.964 51.9299Z\",\n fill: \"#A44616\"\n}))), _path24 || (_path24 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M125.29 55.9777C123.171 56.8827 120.671 56.4158 117.79 54.5768C119.146 58.4286 120.687 60.1813 122.413 59.8349C124.139 59.4886 125.098 58.2028 125.29 55.9777Z\",\n fill: \"#A5330A\"\n})), _path25 || (_path25 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M126.298 46.5747C125.74 46.5652 125.298 45.8942 125.311 45.0761C125.324 44.2579 125.787 43.6023 126.345 43.6118C126.903 43.6212 127.345 44.2922 127.332 45.1104C127.319 45.9285 126.856 46.5841 126.298 46.5747Z\",\n fill: \"#321907\"\n})), _path26 || (_path26 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M117.699 45.0239C117.141 45.0144 116.699 44.3435 116.712 43.5253C116.725 42.7071 117.187 42.0515 117.745 42.061C118.303 42.0704 118.745 42.7414 118.732 43.5596C118.72 44.3778 118.257 45.0334 117.699 45.0239Z\",\n fill: \"#321907\"\n})), _path27 || (_path27 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M122.715 43.9712C122.557 43.8531 122.333 43.8846 122.215 44.0417C121.233 45.3458 120.594 45.9805 119.993 46.4194C119.691 46.6402 119.392 46.8164 119.05 47.0061C118.957 47.0578 118.86 47.1107 118.759 47.1659C118.492 47.3116 118.197 47.473 117.868 47.667C116.711 48.3477 116.542 49.9158 117.066 51.0793C117.337 51.6792 117.802 52.2141 118.46 52.5212C119.121 52.8298 119.943 52.8927 120.894 52.6054C121.082 52.5484 121.189 52.3497 121.131 52.1616C121.073 51.9735 120.874 51.8672 120.685 51.9242C119.876 52.1686 119.239 52.0996 118.762 51.8768C118.281 51.6523 117.929 51.2561 117.718 50.789C117.281 49.8185 117.503 48.7093 118.232 48.28C118.551 48.0922 118.831 47.9392 119.095 47.7951C119.198 47.7386 119.299 47.6835 119.399 47.6282C119.749 47.4336 120.079 47.2406 120.417 46.9937C121.096 46.4969 121.784 45.8014 122.787 44.4696C122.905 44.3125 122.873 44.0894 122.715 43.9712Z\",\n fill: \"#8A3110\"\n})), _path28 || (_path28 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M126.649 38.462C118.827 37.1633 115.644 36.5576 112.938 34.4149C113.095 24.3556 121.372 18.4345 125.208 17.5383C134.079 15.3748 143.71 18.0813 149.621 25.865C150.207 26.6367 150.697 27.4266 151.1 28.2296C151.332 28.6034 151.561 29.0216 151.788 29.4864C155.487 40.1435 157.433 55.6928 156.378 61.4529C153.421 65.2542 129.689 66.0739 132.661 61.3098C132.827 61.0439 133.012 60.7682 133.209 60.4748C134.605 58.3952 136.596 55.4288 136.577 48.7651C136.573 47.1514 136.106 45.2638 135.581 43.1353C135.403 42.4157 135.218 41.6685 135.043 40.8951C134.624 40.7489 134.225 40.6101 133.846 40.4782C132.154 39.8904 130.859 39.4404 130.056 39.0921C129.176 38.7109 130.015 36.1681 130.618 34.3427C131.144 32.7486 131.489 31.7015 130.352 33.1186C128.887 34.9439 128.327 36.3723 128.052 37.492C127.895 38.1288 127.296 38.5694 126.649 38.462Z\",\n fill: \"#0A1551\"\n})), _path29 || (_path29 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M114.876 138.735C120.204 135.738 144.144 142.471 162.384 135.789C172.385 132.126 164.732 110.79 160.563 92.8997C157.924 82.9975 153.556 76.4349 149.574 74.0075L140.912 80.3815L143.117 92.2543C143.117 92.2543 141.747 96.5649 144.634 104.397C147.522 112.229 152.009 122.076 152.009 122.076L109.084 131.081C109.239 134.632 110.612 141.133 114.876 138.735Z\",\n fill: \"white\"\n}))), _path30 || (_path30 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M38 4.95802C38 2.42689 40.0519 0.375 42.583 0.375H64.3524C66.8835 0.375 68.9354 2.42689 68.9354 4.95802V32.4562C68.9354 34.9873 66.8835 37.0392 64.3524 37.0392H42.583C40.0519 37.0392 38 34.9873 38 32.4562V4.95802Z\",\n fill: \"white\"\n})), _path31 || (_path31 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M64.3524 1.52076H42.583C40.6847 1.52076 39.1458 3.05967 39.1458 4.95802V32.4562C39.1458 34.3545 40.6847 35.8934 42.583 35.8934H64.3524C66.2507 35.8934 67.7897 34.3545 67.7897 32.4562V4.95802C67.7897 3.05967 66.2507 1.52076 64.3524 1.52076ZM42.583 0.375C40.0519 0.375 38 2.42689 38 4.95802V32.4562C38 34.9873 40.0519 37.0392 42.583 37.0392H64.3524C66.8835 37.0392 68.9354 34.9873 68.9354 32.4562V4.95802C68.9354 2.42689 66.8835 0.375 64.3524 0.375H42.583Z\",\n fill: \"#C8CEED\"\n})), _path32 || (_path32 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M44.5469 12.8157C44.5469 11.7309 45.4263 10.8516 46.511 10.8516H60.9148C61.9996 10.8516 62.879 11.7309 62.879 12.8157C62.879 13.9005 61.9996 14.7799 60.9148 14.7799H46.511C45.4263 14.7799 44.5469 13.9005 44.5469 12.8157Z\",\n fill: \"#0099FF\"\n})), _path33 || (_path33 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M44.5469 19.3626C44.5469 18.2778 45.4263 17.3984 46.511 17.3984H60.9148C61.9996 17.3984 62.879 18.2778 62.879 19.3626C62.879 20.4474 61.9996 21.3267 60.9148 21.3267H46.511C45.4263 21.3267 44.5469 20.4474 44.5469 19.3626Z\",\n fill: \"#FF6100\"\n})), _path34 || (_path34 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M44.5469 25.9095C44.5469 24.8247 45.4263 23.9453 46.511 23.9453H60.9148C61.9996 23.9453 62.879 24.8247 62.879 25.9095C62.879 26.9942 61.9996 27.8736 60.9148 27.8736H46.511C45.4263 27.8736 44.5469 26.9942 44.5469 25.9095Z\",\n fill: \"#FFB629\"\n})), _path35 || (_path35 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M57.0645 44.958C57.0645 42.4269 59.1163 40.375 61.6475 40.375H83.4168C85.948 40.375 87.9999 42.4269 87.9999 44.958V72.4562C87.9999 74.9873 85.948 77.0392 83.4168 77.0392H61.6475C59.1163 77.0392 57.0645 74.9873 57.0645 72.4562V44.958Z\",\n fill: \"white\"\n})), _path36 || (_path36 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M83.4168 41.5208H61.6475C59.7491 41.5208 58.2102 43.0597 58.2102 44.958V72.4562C58.2102 74.3545 59.7491 75.8934 61.6475 75.8934H83.4168C85.3152 75.8934 86.8541 74.3545 86.8541 72.4562V44.958C86.8541 43.0597 85.3152 41.5208 83.4168 41.5208ZM61.6475 40.375C59.1163 40.375 57.0645 42.4269 57.0645 44.958V72.4562C57.0645 74.9873 59.1163 77.0392 61.6475 77.0392H83.4168C85.948 77.0392 87.9999 74.9873 87.9999 72.4562V44.958C87.9999 42.4269 85.948 40.375 83.4168 40.375H61.6475Z\",\n fill: \"#C8CEED\"\n})), _path37 || (_path37 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M63.6113 52.8157C63.6113 51.7309 64.4907 50.8516 65.5755 50.8516H79.9793C81.064 50.8516 81.9434 51.7309 81.9434 52.8157C81.9434 53.9005 81.064 54.7799 79.9793 54.7799H65.5755C64.4907 54.7799 63.6113 53.9005 63.6113 52.8157Z\",\n fill: \"#0099FF\"\n})), _path38 || (_path38 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M63.6113 59.3626C63.6113 58.2778 64.4907 57.3984 65.5755 57.3984H79.9793C81.064 57.3984 81.9434 58.2778 81.9434 59.3626C81.9434 60.4474 81.064 61.3267 79.9793 61.3267H65.5755C64.4907 61.3267 63.6113 60.4474 63.6113 59.3626Z\",\n fill: \"#FF6100\"\n})), _path39 || (_path39 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M63.6113 65.9095C63.6113 64.8247 64.4907 63.9453 65.5755 63.9453H79.9793C81.064 63.9453 81.9434 64.8247 81.9434 65.9095C81.9434 66.9942 81.064 67.8736 79.9793 67.8736H65.5755C64.4907 67.8736 63.6113 66.9942 63.6113 65.9095Z\",\n fill: \"#FFB629\"\n})), _path40 || (_path40 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18 44.958C18 42.4269 20.0519 40.375 22.583 40.375H44.3524C46.8835 40.375 48.9354 42.4269 48.9354 44.958V72.4562C48.9354 74.9873 46.8835 77.0392 44.3524 77.0392H22.583C20.0519 77.0392 18 74.9873 18 72.4562V44.958Z\",\n fill: \"white\"\n})), _path41 || (_path41 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M44.3524 41.5208H22.583C20.6847 41.5208 19.1458 43.0597 19.1458 44.958V72.4562C19.1458 74.3545 20.6847 75.8934 22.583 75.8934H44.3524C46.2507 75.8934 47.7897 74.3545 47.7897 72.4562V44.958C47.7897 43.0597 46.2507 41.5208 44.3524 41.5208ZM22.583 40.375C20.0519 40.375 18 42.4269 18 44.958V72.4562C18 74.9873 20.0519 77.0392 22.583 77.0392H44.3524C46.8835 77.0392 48.9354 74.9873 48.9354 72.4562V44.958C48.9354 42.4269 46.8835 40.375 44.3524 40.375H22.583Z\",\n fill: \"#C8CEED\"\n})), _path42 || (_path42 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.5469 52.8157C24.5469 51.7309 25.4263 50.8516 26.511 50.8516H40.9148C41.9996 50.8516 42.879 51.7309 42.879 52.8157C42.879 53.9005 41.9996 54.7799 40.9148 54.7799H26.511C25.4263 54.7799 24.5469 53.9005 24.5469 52.8157Z\",\n fill: \"#0099FF\"\n})), _path43 || (_path43 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.5469 59.3626C24.5469 58.2778 25.4263 57.3984 26.511 57.3984H40.9148C41.9996 57.3984 42.879 58.2778 42.879 59.3626C42.879 60.4474 41.9996 61.3267 40.9148 61.3267H26.511C25.4263 61.3267 24.5469 60.4474 24.5469 59.3626Z\",\n fill: \"#FF6100\"\n})), _path44 || (_path44 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.5469 65.9095C24.5469 64.8247 25.4263 63.9453 26.511 63.9453H40.9148C41.9996 63.9453 42.879 64.8247 42.879 65.9095C42.879 66.9942 41.9996 67.8736 40.9148 67.8736H26.511C25.4263 67.8736 24.5469 66.9942 24.5469 65.9095Z\",\n fill: \"#FFB629\"\n})), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint0_linear_624:16012\",\n x1: 152.19,\n y1: 93.8799,\n x2: 149.764,\n y2: 110.89,\n gradientUnits: \"userSpaceOnUse\"\n}, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"white\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#F3F5FE\"\n})))));\nexport default SvgNoFormsIcon;","var _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _path9, _path10, _path11, _g, _path12, _path13, _path14, _path15, _path16, _path17, _path18, _path19, _circle, _path20, _path21, _path22, _path23, _path24, _path25, _rect, _path26, _path27, _path28, _path29, _path30, _rect2, _path31, _path32, _path33, _path34, _path35, _rect3, _path36, _path37, _path38, _path39, _path40, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgNoAppsIcon = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 198 138\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0 94.4357C0 70.8034 19.1578 51.6455 42.7902 51.6455H155.115C178.747 51.6455 197.905 70.8034 197.905 94.4357C197.905 118.068 178.747 137.226 155.115 137.226H42.7902C19.1578 137.226 0 118.068 0 94.4357Z\",\n fill: \"#E6E6F5\"\n})), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M65.8372 81.9592C64.5361 80.8456 63.0223 80.0079 61.3877 79.4968C59.7531 78.9858 58.032 78.8122 56.3283 78.9865L51.2601 76.694C50.8846 76.5178 50.4599 76.4753 50.0569 76.5736C49.654 76.6718 49.297 76.9049 49.0446 77.234C48.924 77.4075 48.8398 77.6037 48.7972 77.8106C48.7546 78.0176 48.7542 78.231 48.7965 78.438C48.8389 78.645 48.9228 78.8413 49.0432 79.015C49.1637 79.1886 49.3181 79.336 49.4971 79.4482L52.2518 81.2906L51.0775 81.1933C49.2316 81.0459 47.4791 80.3203 46.0693 79.1196L42.156 75.7349C41.9289 75.5451 41.6577 75.4154 41.3673 75.3579C41.0769 75.3004 40.7768 75.317 40.4945 75.4059C40.2447 75.4669 40.0149 75.5918 39.8279 75.7684C39.6409 75.945 39.5035 76.1672 39.4283 76.4131C39.3531 76.6591 39.3431 76.9203 39.3994 77.1712C39.4557 77.4222 39.5761 77.6541 39.7491 77.8444L44.3206 82.8871C45.2215 83.8663 46.3102 84.6544 47.5217 85.2045C48.7332 85.7547 50.043 86.0557 51.3731 86.0897L66.0281 86.5405L65.8372 81.9592Z\",\n fill: \"#EFBB9D\"\n})), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M114.82 31.3173C111.43 45.7521 107.561 80.2678 106.301 83.4385C105.988 84.2245 106.15 85.1237 106.739 85.7319C111.539 90.6866 117.959 92.2345 126 90.3755C134.566 88.3952 137.243 52.6002 131.935 28.4193L114.82 31.3173Z\",\n fill: \"#091141\"\n})), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M59.9552 88.0553C63.225 84.9327 65.2079 82.209 65.9039 79.8843C80.5321 90.814 88.8113 95.9795 90.7416 95.381C93.3884 94.5604 114.745 75.3623 122.166 70.8205C122.84 70.148 122.887 75.8977 123.423 75.2786L121.016 97.5933C112.349 103.795 106.827 107.616 104.451 109.056C100.885 111.216 91.5291 115.171 83.0792 108.301C77.4459 103.721 69.7379 96.9725 59.9552 88.0553Z\",\n fill: \"#F4F5FE\"\n})), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M110.591 112.816C111.714 117.571 113.857 121.714 112 132.375C122.035 134.192 128.883 131.142 133.5 133.375L151 125.375L163.5 119.875L157.644 102.462L158.292 88.8673C156.591 82.0689 153.796 75.6337 151.23 72.8253C147.382 68.6128 126.49 70.5307 121.345 72.3032C116.2 74.0757 115.009 83.8004 109.576 91.6056C104.144 99.4108 108.906 105.682 110.591 112.816Z\",\n fill: \"white\"\n})), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M142.981 70.1537C140.959 86.6236 135.276 94.8586 125.934 94.8586C111.92 94.8586 115.206 87.4865 116.961 84.0298C118.131 81.7253 119.417 77.6237 120.82 71.7251C125.641 70.1864 129.321 69.3271 131.859 69.1471C134.398 68.9671 138.105 69.3026 142.981 70.1537Z\",\n fill: \"#EFBB9D\"\n})), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M122.003 47.5342C121.451 47.6155 120.906 47.0251 120.785 46.2156C120.664 45.4061 121.013 44.6839 121.565 44.6026C122.117 44.5212 122.662 45.1116 122.783 45.9211C122.904 46.7307 122.555 47.4528 122.003 47.5342Z\",\n fill: \"#321907\"\n})), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M114.454 47.4026C113.902 47.4839 113.356 46.8935 113.235 46.084C113.114 45.2745 113.464 44.5523 114.015 44.471C114.567 44.3897 115.113 44.98 115.234 45.7895C115.355 46.5991 115.006 47.3212 114.454 47.4026Z\",\n fill: \"#321907\"\n})), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M137.286 51.9998C135.625 64.9726 141.591 69.8426 143.5 69.875C145.409 69.9074 137.698 77.5791 124.067 90.365C119.607 81.7669 119.107 74.0988 120.501 71.875C122.59 68.5393 124.53 71.3929 123.813 59.714C123.343 52.0421 133.544 52.7714 140.811 51.5261C137.286 51.9998 131.529 52.1181 137.286 51.9998Z\",\n fill: \"#EFBB9D\"\n})), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.677232,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M123.313 54.5259C124.105 61.7532 124.082 65.7391 124 66.3752C123.878 67.3293 141.282 66.5234 136.312 51.2024C131.342 35.8815 129.68 53.0076 123.313 54.5259Z\",\n fill: \"#DC9F7E\"\n})), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask0\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 114,\n y: 22,\n width: 38,\n height: 44\n}, _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M146.092 55.0486C141.517 61.1621 135.136 64.5169 126.949 65.1132C118.636 65.7186 113.086 54.8789 114.156 43.7498C114.667 38.4398 115.843 33.7527 120.519 28.923C130.169 18.9548 139.236 20.2713 147.719 32.8723L151.381 42.6444L146.092 55.0486Z\",\n fill: \"white\"\n}))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask0)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M144.967 54.1757C139.857 59.8523 133.198 62.62 124.989 62.4787C116.653 62.3353 112.102 51.0434 114.172 40.0578C115.16 34.8162 116.754 30.2546 121.848 25.8652C132.361 16.8059 141.274 18.9308 148.588 32.2398L151.354 42.2991L144.967 54.1757Z\",\n fill: \"#EFBB9D\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M132.771 54.3902C130.075 53.9737 128.129 52.1383 128.423 50.2906C128.717 48.443 131.141 47.2829 133.836 47.6994C136.531 48.1159 138.478 49.9514 138.184 51.799C137.89 53.6467 135.466 54.8068 132.771 54.3902Z\",\n fill: \"#EFA77F\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M111.252 49.9304C108.605 49.2578 106.773 47.2299 107.16 45.4012C107.548 43.5724 110.009 42.6352 112.657 43.3079C115.304 43.9806 117.136 46.0084 116.749 47.8372C116.361 49.6659 113.9 50.6031 111.252 49.9304Z\",\n fill: \"#EFA77F\"\n}))), _path12 || (_path12 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M126.024 53.9409C123.905 54.8459 121.405 54.3789 118.523 52.5399C119.88 56.3917 121.421 58.1444 123.147 57.798C124.873 57.4517 125.832 56.166 126.024 53.9409Z\",\n fill: \"#A5330A\"\n})), _path13 || (_path13 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M127.588 44.5756C127.03 44.5662 126.588 43.8952 126.601 43.077C126.613 42.2588 127.076 41.6033 127.634 41.6127C128.192 41.6222 128.634 42.2932 128.621 43.1113C128.609 43.9295 128.146 44.5851 127.588 44.5756Z\",\n fill: \"#0A1551\"\n})), _path14 || (_path14 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M118.988 43.0239C118.43 43.0144 117.988 42.3435 118.001 41.5253C118.014 40.7071 118.477 40.0515 119.035 40.061C119.593 40.0704 120.035 40.7414 120.022 41.5596C120.009 42.3778 119.546 43.0334 118.988 43.0239Z\",\n fill: \"#0A1551\"\n})), _path15 || (_path15 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M142.981 70.1542C140.959 86.6241 135.276 94.8591 125.934 94.8591C111.92 94.8591 115.206 87.487 116.961 84.0303C118.131 81.7258 119.417 77.6242 120.82 71.7256C125.641 70.1869 129.321 69.3276 131.859 69.1476C134.398 68.9676 138.105 69.3031 142.981 70.1542Z\",\n fill: \"#EFBB9D\"\n})), _path16 || (_path16 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M142.201 78.3815L144.407 90.2543C144.407 90.2543 143.036 94.5649 145.923 102.397C148.811 110.229 153.298 120.076 153.298 120.076L163.674 133.789C173.674 130.126 166.022 108.79 161.852 90.8997C159.213 80.9975 154.846 74.4349 150.863 72.0075L142.201 78.3815Z\",\n fill: \"white\"\n})), _path17 || (_path17 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M144.231 81.3883L146.436 93.2611C146.436 93.2611 145.066 97.5717 147.953 105.404C150.841 113.235 155.328 123.083 155.328 123.083L164.5 135.375C174.5 131.712 168.051 111.797 163.881 93.9065C161.243 84.0043 156.875 77.4416 152.893 75.0142L144.231 81.3883Z\",\n fill: \"url(#paint0_linear)\"\n})), _path18 || (_path18 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M142.501 69.375C131.301 71.775 125.168 70.0417 123.501 68.875C122.702 69.275 120.834 71.375 120 72.375C118.5 76.0417 115.201 84.075 114.001 86.875C112.501 90.375 115.001 92.375 118.501 96.375C122.001 100.375 133.001 96.875 137.001 95.875C140.201 95.075 144.001 78.5417 145.501 70.375C143.501 69.975 142.668 69.5417 142.501 69.375Z\",\n fill: \"white\"\n})), _path19 || (_path19 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M127.938 36.4629C120.117 35.1642 116.934 34.5586 114.228 32.4159C114.384 22.3566 122.661 16.4355 126.497 15.5393C135.368 13.3758 144.999 16.0823 150.91 23.866C151.496 24.6377 151.986 25.4275 152.389 26.2306C152.622 26.6044 152.851 27.0226 153.078 27.4874C156.776 38.1445 156.679 78.258 155.624 84.0181C152.667 87.8194 128.935 88.6391 131.907 83.875C132.073 83.609 132.258 83.3333 132.455 83.04C133.851 80.9604 137.885 53.4298 137.866 46.7661C137.862 45.1523 137.396 43.2648 136.87 41.1363C136.692 40.4167 136.508 39.6695 136.332 38.896C135.914 38.7499 135.514 38.6111 135.135 38.4792C133.444 37.8914 132.149 37.4414 131.345 37.0931C130.465 36.7119 131.304 34.1691 131.907 32.3436C132.433 30.7495 132.779 29.7024 131.641 31.1196C130.176 32.9449 129.616 34.3733 129.341 35.493C129.184 36.1298 128.586 36.5704 127.938 36.4629Z\",\n fill: \"#091141\"\n})), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 145.5,\n cy: 16.875,\n r: 9.5,\n fill: \"#091141\"\n})), _path20 || (_path20 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M129.897 38.4106C129.897 38.4106 126.839 37.5691 126.481 38.8687C126.481 38.8687 126.241 39.7406 129.026 40.4412C131.81 41.1417 132.489 41.0654 132.889 40.2708C133.288 39.4761 131.379 38.7034 129.897 38.4106Z\",\n fill: \"#091141\"\n})), _path21 || (_path21 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M118.797 36.4607C118.797 36.4607 121.443 36.6167 121.438 37.909C121.438 37.909 121.429 38.7744 119.107 38.5708C116.785 38.3672 116.107 37.9472 116.011 37.235C115.916 36.5228 117.553 36.2718 118.797 36.4607Z\",\n fill: \"#091141\"\n})), _path22 || (_path22 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M121.942 45.389L121 48.2849L122.873 48.7786\",\n stroke: \"#D97D4A\",\n strokeWidth: 0.919783,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n})), _path23 || (_path23 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M124.604 130.031L132.63 129.412L132.384 137.438H125.435L124.604 130.031Z\",\n fill: \"#EFBB9D\"\n})), _path24 || (_path24 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M126.861 129.813L127.262 131.418L128.065 137.438H108C108.402 133.425 114.02 129.412 118.033 129.412C121.243 129.412 126.058 129.679 126.861 129.813Z\",\n fill: \"#EFBB9D\"\n})), _path25 || (_path25 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M161.399 122.431L130 123.372L132 137.375L162 136.875C163.085 136.729 164.344 136.671 165.256 136.065C166.256 135.4 167.941 134.131 168.495 133.187C169.05 132.242 169.382 131.184 169.467 130.092C169.551 129.001 169.387 127.904 168.985 126.886C168.388 125.411 167.321 124.174 165.949 123.369C164.578 122.563 162.978 122.233 161.399 122.431Z\",\n fill: \"#F4F6FF\"\n})), _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n x: 38.3032,\n y: 1.625,\n width: 30.3839,\n height: 30.3839,\n rx: 2.75,\n fill: \"white\",\n stroke: \"#B1C3E9\",\n strokeWidth: 1.5\n})), _path26 || (_path26 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M41.4697 7.79267C41.4697 6.13099 42.8168 4.78394 44.4785 4.78394H62.5309C64.1926 4.78394 65.5396 6.13099 65.5396 7.79267V25.8451C65.5396 27.5068 64.1926 28.8538 62.5309 28.8538H44.4785C42.8168 28.8538 41.4697 27.5068 41.4697 25.8451V7.79267Z\",\n fill: \"white\"\n})), _path27 || (_path27 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M58.5096 18.4526C58.2886 18.4526 58.1093 18.6319 58.1093 18.8528V21.2041H55.7581C55.5372 21.2041 55.3579 21.3833 55.3579 21.6043C55.3579 21.8252 55.5372 22.0045 55.7581 22.0045H58.1093V24.3557C58.1093 24.5767 58.2886 24.7559 58.5096 24.7559C58.7305 24.7559 58.9098 24.5767 58.9098 24.3557V22.0045H61.261C61.482 22.0045 61.6612 21.8252 61.6612 21.6043C61.6612 21.3833 61.482 21.2041 61.261 21.2041H58.9098V18.8528C58.9098 18.6319 58.7305 18.4526 58.5096 18.4526Z\",\n fill: \"#97ACDA\",\n stroke: \"#97ACDA\",\n strokeWidth: 0.651698\n})), _path28 || (_path28 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M54.6129 8.44541C54.6129 8.08278 54.9068 7.78882 55.2694 7.78882H61.8354C62.198 7.78882 62.492 8.08279 62.492 8.44541V15.0113C62.492 15.374 62.198 15.6679 61.8354 15.6679H55.2694C54.9068 15.6679 54.6129 15.374 54.6129 15.0113V8.44541Z\",\n fill: \"#FF6100\"\n})), _path29 || (_path29 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M44.4761 8.44517C44.4761 8.08254 44.7701 7.78857 45.1327 7.78857H51.6987C52.0613 7.78857 52.3553 8.08254 52.3553 8.44517V15.0111C52.3553 15.3737 52.0613 15.6677 51.6987 15.6677H45.1327C44.7701 15.6677 44.4761 15.3737 44.4761 15.0111V8.44517Z\",\n fill: \"#0099FF\"\n})), _path30 || (_path30 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M44.4756 18.5816C44.4756 18.219 44.7696 17.925 45.1322 17.925H51.6981C52.0607 17.925 52.3547 18.219 52.3547 18.5816V25.1476C52.3547 25.5102 52.0607 25.8042 51.6981 25.8042H45.1322C44.7696 25.8042 44.4756 25.5102 44.4756 25.1476V18.5816Z\",\n fill: \"#FFB629\"\n})), _rect2 || (_rect2 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 18.25,\n y: 41.741,\n width: 30.3839,\n height: 30.3839,\n rx: 2.75,\n fill: \"white\",\n stroke: \"#B1C3E9\",\n strokeWidth: 1.5\n})), _path31 || (_path31 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21.4027 47.9084C21.4027 46.2467 22.7498 44.8997 24.4114 44.8997H42.4639C44.1256 44.8997 45.4726 46.2467 45.4726 47.9084V65.9608C45.4726 67.6225 44.1256 68.9696 42.4639 68.9696H24.4114C22.7498 68.9696 21.4027 67.6225 21.4027 65.9608V47.9084Z\",\n fill: \"white\"\n})), _path32 || (_path32 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M38.4411 58.5681C38.2202 58.5681 38.0409 58.7474 38.0409 58.9683V61.3196H35.6897C35.4687 61.3196 35.2895 61.4988 35.2895 61.7198C35.2895 61.9407 35.4687 62.12 35.6897 62.12H38.0409V64.4712C38.0409 64.6922 38.2202 64.8714 38.4411 64.8714C38.6621 64.8714 38.8413 64.6922 38.8413 64.4712V62.12H41.1926C41.4135 62.12 41.5928 61.9407 41.5928 61.7198C41.5928 61.4988 41.4135 61.3196 41.1926 61.3196H38.8413V58.9683C38.8413 58.7474 38.6621 58.5681 38.4411 58.5681Z\",\n fill: \"#97ACDA\",\n stroke: \"#97ACDA\",\n strokeWidth: 0.651698\n})), _path33 || (_path33 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M34.5474 48.5628C34.5474 48.2002 34.8413 47.9062 35.204 47.9062H41.7699C42.1325 47.9062 42.4265 48.2002 42.4265 48.5628V55.1288C42.4265 55.4914 42.1325 55.7854 41.7699 55.7854H35.204C34.8413 55.7854 34.5474 55.4914 34.5474 55.1288V48.5628Z\",\n fill: \"#FF6100\"\n})), _path34 || (_path34 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.4124 48.5643C24.4124 48.2017 24.7064 47.9077 25.069 47.9077H31.6349C31.9976 47.9077 32.2915 48.2017 32.2915 48.5643V55.1302C32.2915 55.4929 31.9976 55.7868 31.6349 55.7868H25.069C24.7064 55.7868 24.4124 55.4929 24.4124 55.1302V48.5643Z\",\n fill: \"#0099FF\"\n})), _path35 || (_path35 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.4072 58.6971C24.4072 58.3345 24.7011 58.0405 25.0638 58.0405H31.6297C31.9923 58.0405 32.2863 58.3345 32.2863 58.6971V65.2631C32.2863 65.6257 31.9923 65.9196 31.6297 65.9196H25.0638C24.7011 65.9196 24.4072 65.6257 24.4072 65.2631V58.6971Z\",\n fill: \"#FFB629\"\n})), _rect3 || (_rect3 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 57.567,\n y: 41.741,\n width: 30.3839,\n height: 30.3839,\n rx: 2.75,\n fill: \"white\",\n stroke: \"#B1C3E9\",\n strokeWidth: 1.5\n})), _path36 || (_path36 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M60.7231 47.9084C60.7231 46.2467 62.0702 44.8997 63.7319 44.8997H81.7843C83.446 44.8997 84.793 46.2467 84.793 47.9084V65.9608C84.793 67.6225 83.446 68.9696 81.7843 68.9696H63.7319C62.0702 68.9696 60.7231 67.6225 60.7231 65.9608V47.9084Z\",\n fill: \"white\"\n})), _path37 || (_path37 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M77.7713 58.5681C77.5503 58.5681 77.3711 58.7474 77.3711 58.9683V61.3196H75.0198C74.7989 61.3196 74.6196 61.4988 74.6196 61.7198C74.6196 61.9407 74.7989 62.12 75.0198 62.12H77.3711V64.4712C77.3711 64.6922 77.5503 64.8714 77.7713 64.8714C77.9922 64.8714 78.1715 64.6922 78.1715 64.4712V62.12H80.5227C80.7437 62.12 80.9229 61.9407 80.9229 61.7198C80.9229 61.4988 80.7437 61.3196 80.5227 61.3196H78.1715V58.9683C78.1715 58.7474 77.9922 58.5681 77.7713 58.5681Z\",\n fill: \"#97ACDA\",\n stroke: \"#97ACDA\",\n strokeWidth: 0.651698\n})), _path38 || (_path38 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M73.8698 48.5628C73.8698 48.2002 74.1637 47.9062 74.5263 47.9062H81.0923C81.4549 47.9062 81.7489 48.2002 81.7489 48.5628V55.1288C81.7489 55.4914 81.4549 55.7854 81.0923 55.7854H74.5263C74.1637 55.7854 73.8698 55.4914 73.8698 55.1288V48.5628Z\",\n fill: \"#FF6100\"\n})), _path39 || (_path39 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M63.7274 48.5641C63.7274 48.2014 64.0213 47.9075 64.3839 47.9075H70.9499C71.3125 47.9075 71.6065 48.2014 71.6065 48.5641V55.13C71.6065 55.4926 71.3125 55.7866 70.9499 55.7866H64.3839C64.0213 55.7866 63.7274 55.4926 63.7274 55.13V48.5641Z\",\n fill: \"#0099FF\"\n})), _path40 || (_path40 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M63.7277 58.6971C63.7277 58.3345 64.0216 58.0405 64.3843 58.0405H70.9502C71.3128 58.0405 71.6068 58.3345 71.6068 58.6971V65.2631C71.6068 65.6257 71.3128 65.9196 70.9502 65.9196H64.3843C64.0216 65.9196 63.7277 65.6257 63.7277 65.2631V58.6971Z\",\n fill: \"#FFB629\"\n})), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint0_linear\",\n x1: 160,\n y1: 122.375,\n x2: 148.271,\n y2: 68.4249,\n gradientUnits: \"userSpaceOnUse\"\n}, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#F4F5FE\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"white\"\n})))));\nexport default SvgNoAppsIcon;","var _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _g, _path9, _path10, _path11, _path12, _g2, _path13, _path14, _path15, _path16, _path17, _path18, _path19, _g3, _path20, _path21, _path22, _path23, _g4, _path24, _path25, _path26, _path27, _path28, _path29, _path30, _path31, _path32, _path33, _path34, _path35, _path36, _path37, _path38, _path39, _path40, _g5, _path41, _path42, _path43, _path44, _path45, _path46, _path47, _path48, _circle, _path49, _path50, _path51, _path52, _path53, _path54, _path55, _rect, _path56, _path57, _path58, _path59, _path60, _path61, _path62, _path63, _path64, _rect2, _path65, _rect3, _path66, _path67, _path68, _path69, _path70, _path71, _path72, _path73, _path74, _rect4, _path75, _rect5, _path76, _path77, _path78, _path79, _path80, _path81, _path82, _path83, _path84, _rect6, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgNoTablesIcon = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 201 138\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3 93.8117C3 70.1793 22.1578 51.0215 45.7902 51.0215H158.115C181.747 51.0215 200.905 70.1793 200.905 93.8117C200.905 117.444 181.747 136.602 158.115 136.602H45.7902C22.1578 136.602 3 117.444 3 93.8117Z\",\n fill: \"#E6E6F5\"\n})), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask0_614:19850\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 3,\n y: 51,\n width: 198,\n height: 86\n}, _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3 93.8117C3 70.1793 22.1578 51.0215 45.7902 51.0215H158.115C181.747 51.0215 200.905 70.1793 200.905 93.8117C200.905 117.444 181.747 136.602 158.115 136.602H45.7902C22.1578 136.602 3 117.444 3 93.8117Z\",\n fill: \"#E6E6F5\"\n}))), /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask0_614:19850)\"\n}, _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M118.336 74.2989C109.901 84.9367 103 91.7964 97.6306 94.8779C89.5769 99.5003 88.9877 94.6432 59.4901 74.1333C57.439 73.2719 55.7754 73.0424 52.9956 76.1335C51.3335 77.9819 47.7598 78.4681 42.2746 77.5923L42.2746 77.5923C41.7245 77.5045 41.2053 77.879 41.115 78.4289C41.0701 78.7024 41.1397 78.9817 41.3074 79.2015C42.6577 80.9705 44.994 81.9348 48.3164 82.0946C54.9089 82.4114 55.6163 79.9382 59.326 82.8524C63.0356 85.7666 82.9102 109.066 94.8962 109.644C106.882 110.223 122.63 92.4168 127.085 91.0447C130.055 90.1299 132.477 82.9037 134.353 69.3659L118.336 74.2989Z\",\n fill: \"#CD7448\"\n})), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M61.9543 86.4313C65.224 83.3086 67.2069 80.585 67.903 78.2603C82.5311 89.1899 90.8103 94.3555 92.7407 93.757C95.3874 92.9364 116.744 73.7383 124.165 69.1965C124.839 68.524 124.886 74.2737 125.422 73.6545L123.015 95.9693C114.348 102.171 108.826 105.992 106.45 107.432C102.884 109.592 93.5281 113.547 85.0782 106.677C79.4449 102.097 71.7369 95.3485 61.9543 86.4313Z\",\n fill: \"#F4F5FE\"\n})), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M113.638 110.924C114.986 115.621 114.986 121.514 113.638 132.25L163.179 125.016L160.146 84.7527C158.124 78.0421 155.765 73.3448 153.069 70.6605C149.025 66.6342 127.793 68.6474 122.737 70.6605C117.682 72.6737 116.671 81.7329 111.616 89.7856C106.561 97.8382 111.616 103.878 113.638 110.924Z\",\n fill: \"white\"\n})), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M144.981 68.5294C142.959 84.9993 137.277 93.2343 127.934 93.2343C113.92 93.2343 117.206 85.8622 118.961 82.4055C120.131 80.101 121.417 75.9995 122.82 70.1008C127.641 68.5622 131.321 67.7028 133.86 67.5228C136.398 67.3429 140.105 67.6784 144.981 68.5294Z\",\n fill: \"#CD7448\"\n})), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask1_614:19850\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 54,\n y: -5,\n width: 110,\n height: 94\n}, _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M54.2891 -4.25H163.642V88.4622H54.2891V-4.25Z\",\n fill: \"#C4C4C4\"\n}))), /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask1_614:19850)\"\n}, /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask2_614:19850\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 109,\n y: 68,\n width: 59,\n height: 92\n}, _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M113.638 134.916C114.986 124.179 114.986 115.621 113.638 110.924C111.616 103.878 106.561 97.8382 111.616 89.7856C116.671 81.7329 117.682 72.6737 122.737 70.6605C127.793 68.6474 149.025 66.6342 153.069 70.6605C155.765 73.3448 158.124 78.0421 160.146 84.7527L163.179 125.016C167.898 143.134 168.572 154.207 165.201 158.233C160.146 164.273 158.124 148.167 135.881 139.108C131.163 137.095 123.748 136.258 113.638 134.916Z\",\n fill: \"white\"\n}))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask2_614:19850)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M113.638 134.914C114.986 124.178 114.986 116.46 113.638 111.763C111.616 104.717 106.561 98.6775 111.616 90.6248C116.671 82.5722 117.398 72.8022 122.454 70.789C127.509 68.7758 148.286 65.8747 152.33 69.901C155.026 72.5852 158.124 78.8814 160.146 85.5919V99.2016L163.179 125.855C167.898 143.974 168.572 155.046 165.201 159.072C160.146 165.112 158.124 149.007 135.881 139.947C131.163 137.934 123.748 136.257 113.638 134.914Z\",\n fill: \"white\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M144.981 68.5294C142.959 84.9993 137.277 93.2343 127.934 93.2343C113.92 93.2343 117.206 85.8622 118.961 82.4055C120.131 80.101 121.417 75.9995 122.82 70.1008C127.641 68.5622 131.321 67.7028 133.86 67.5228C136.398 67.3429 140.105 67.6784 144.981 68.5294Z\",\n fill: \"#CD7448\"\n}))), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M116.82 29.6916C113.43 44.1264 112.279 45.8229 111.018 48.9936C110.705 49.7797 110.867 50.6788 111.456 51.287C116.256 56.2417 122.676 57.7896 130.717 55.9306C139.283 53.9503 139.242 50.9745 133.934 26.7936L116.82 29.6916Z\",\n fill: \"#0A1551\"\n})), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M139.285 50.3741C137.625 63.347 143.19 67.8978 145.1 67.9302C147.009 67.9626 139.698 75.9534 126.067 88.7393C121.606 80.1413 121.107 72.4732 122.5 70.2493C124.59 66.9136 126.529 69.7672 125.813 58.0883C125.343 50.4165 135.544 51.1457 142.81 49.9004C139.285 50.3741 133.529 50.4924 139.285 50.3741Z\",\n fill: \"#CD7448\"\n})), _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.677232,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M125.313 52.9009C126.105 60.1282 126.082 64.1141 126 64.7502C125.878 65.7043 143.282 64.8984 138.312 49.5774C133.342 34.2565 131.68 51.3826 125.313 52.9009Z\",\n fill: \"#BD5826\"\n})), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask3_614:19850\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 116,\n y: 20,\n width: 38,\n height: 44\n}, _path12 || (_path12 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M148.092 53.4241C143.516 59.5375 137.135 62.8924 128.949 63.4886C120.636 64.0941 115.086 53.2544 116.156 42.1253C116.667 36.8153 117.843 32.1282 122.518 27.2985C132.169 17.3303 141.236 18.6468 149.718 31.2478L153.38 41.0199L148.092 53.4241Z\",\n fill: \"white\"\n}))), _g2 || (_g2 = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask3_614:19850)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M146.966 52.5514C141.857 58.2281 135.197 60.9957 126.988 60.8545C118.652 60.711 114.101 49.4191 116.171 38.4335C117.159 33.1919 118.753 28.6304 123.847 24.241C134.36 15.1816 143.273 17.3065 150.587 30.6155L153.353 40.6748L146.966 52.5514Z\",\n fill: \"#CD7448\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.422879,\n d: \"M134.771 52.7648C132.076 52.3482 130.129 50.5128 130.423 48.6651C130.718 46.8175 133.141 45.6574 135.836 46.0739C138.532 46.4905 140.478 48.3259 140.184 50.1735C139.89 52.0212 137.466 53.1813 134.771 52.7648Z\",\n fill: \"#A44616\"\n}))), _path13 || (_path13 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M128.579 52.3527C126.46 53.2577 123.96 52.7908 121.079 50.9518C122.435 54.8036 123.976 56.5563 125.702 56.2099C127.428 55.8636 128.387 54.5778 128.579 52.3527Z\",\n fill: \"#A5330A\"\n})), _path14 || (_path14 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M129.938 34.837C122.116 33.5383 118.933 32.9326 116.227 30.7899C116.384 20.7306 124.661 14.8095 128.497 13.9133C137.368 11.7498 146.999 14.4563 152.91 22.24C153.496 23.0117 153.986 23.8016 154.389 24.6046C154.621 24.9784 154.85 25.3966 155.077 25.8614C158.776 36.5185 160.722 52.0678 159.667 57.8279C156.71 61.6292 132.978 62.4489 135.95 57.6848C136.116 57.4189 136.301 57.1432 136.498 56.8498C137.894 54.7702 139.885 51.8038 139.866 45.1401C139.862 43.5264 139.396 41.6388 138.87 39.5103C138.692 38.7907 138.507 38.0435 138.332 37.2701C137.913 37.1239 137.514 36.9851 137.135 36.8532C135.443 36.2654 134.149 35.8154 133.345 35.4671C132.465 35.0859 133.304 32.5431 133.907 30.7177C134.433 29.1236 134.778 28.0765 133.641 29.4936C132.176 31.3189 131.616 32.7473 131.341 33.867C131.184 34.5038 130.585 34.9444 129.938 34.837Z\",\n fill: \"#0A1551\"\n})), _path15 || (_path15 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M118.165 135.11C123.494 132.113 147.433 138.846 165.674 132.164C175.674 128.501 168.022 107.165 163.852 89.2747C161.213 79.3725 156.845 72.8099 152.863 70.3825L144.201 76.7565L146.406 88.6293C146.406 88.6293 145.036 92.9399 147.923 100.772C150.811 108.604 155.298 118.451 155.298 118.451L112.373 127.456C112.528 131.007 113.902 137.508 118.165 135.11Z\",\n fill: \"white\"\n}))), _path16 || (_path16 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M123.877 133.654C121.784 135.32 120.779 135.373 118.278 137.295C116.265 138.259 114.779 138.673 110.412 137.369C107.792 136.587 104.091 136.387 99.3082 136.768L99.3082 136.768C98.7516 136.813 98.2652 136.399 98.2217 135.845C98.2055 135.638 98.2538 135.432 98.3599 135.253C99.5754 133.208 101.943 132.012 105.463 131.662C112.043 131.01 112.862 133.44 116.441 130.344C118.827 128.28 121.306 129.383 123.877 133.654Z\",\n fill: \"#CD7448\"\n})), _path17 || (_path17 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M119.883 137.122C130.5 136.251 149.152 140.857 167.392 134.176C177.393 130.512 169.74 109.177 165.57 91.2864C162.932 81.3842 158.564 74.8216 154.582 72.3942L145.92 78.7682L148.125 90.641C148.125 90.641 146.755 94.9516 149.642 102.783C152.529 110.615 157.017 120.463 157.017 120.463L114.092 129.468C114.246 133.018 113 136.751 119.883 137.122Z\",\n fill: \"url(#paint0_linear_614:19850)\"\n}))), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask4_614:19850\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 99,\n y: 10,\n width: 64,\n height: 79\n}, _path18 || (_path18 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M99 10.75H163V88.75H99V10.75Z\",\n fill: \"#C4C4C4\"\n}))), /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask4_614:19850)\"\n}, /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask5_614:19850\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 109,\n y: 68,\n width: 59,\n height: 92\n}, _path19 || (_path19 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M113.349 134.916C114.697 124.179 114.697 115.621 113.349 110.924C111.327 103.878 106.272 97.8382 111.327 89.7856C116.382 81.7329 117.393 72.6737 122.448 70.6605C127.504 68.6474 148.736 66.6342 152.78 70.6605C155.476 73.3448 157.835 78.0421 159.857 84.7527L162.89 125.016C167.609 143.134 168.283 154.207 164.912 158.233C159.857 164.273 157.835 148.167 135.592 139.108C130.874 137.095 123.459 136.258 113.349 134.916Z\",\n fill: \"white\"\n}))), _g3 || (_g3 = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask5_614:19850)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M113.349 134.914C114.697 124.178 114.697 116.46 113.349 111.763C111.327 104.717 106.272 98.6775 111.327 90.6248C116.382 82.5722 117.109 72.8022 122.165 70.789C127.22 68.7758 147.997 65.8747 152.041 69.901C154.737 72.5852 157.835 78.8814 159.857 85.5919V99.2016L162.89 125.855C167.609 143.974 168.283 155.046 164.912 159.072C159.857 165.112 157.835 149.007 135.592 139.947C130.874 137.934 123.459 136.257 113.349 134.914Z\",\n fill: \"white\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M144.692 68.5294C142.67 84.9993 136.988 93.2343 127.645 93.2343C113.631 93.2343 116.917 85.8622 118.672 82.4055C119.842 80.101 121.128 75.9995 122.531 70.1008C127.352 68.5622 131.032 67.7028 133.571 67.5228C136.109 67.3429 139.816 67.6784 144.692 68.5294Z\",\n fill: \"#CD7448\"\n}))), _path20 || (_path20 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M116.531 29.6916C113.141 44.1264 111.989 45.8229 110.729 48.9936C110.416 49.7797 110.578 50.6788 111.167 51.287C115.967 56.2417 122.387 57.7896 130.428 55.9306C138.994 53.9503 138.953 50.9745 133.645 26.7936L116.531 29.6916Z\",\n fill: \"#0A1551\"\n})), _path21 || (_path21 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M138.996 50.3741C137.335 63.347 142.901 67.8978 144.811 67.9302C146.72 67.9626 139.409 75.9534 125.778 88.7393C121.317 80.1413 120.818 72.4732 122.211 70.2493C124.301 66.9136 126.24 69.7672 125.524 58.0883C125.054 50.4165 135.255 51.1457 142.521 49.9004C138.996 50.3741 133.24 50.4924 138.996 50.3741Z\",\n fill: \"#CD7448\"\n})), _path22 || (_path22 = /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.677232,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M125.024 52.9009C125.816 60.1282 125.793 64.1141 125.711 64.7502C125.589 65.7043 142.993 64.8984 138.023 49.5774C133.053 34.2565 131.391 51.3826 125.024 52.9009Z\",\n fill: \"#BD5826\"\n})), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask6_614:19850\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 115,\n y: 20,\n width: 39,\n height: 44\n}, _path23 || (_path23 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M147.803 53.4241C143.227 59.5375 136.846 62.8924 128.66 63.4886C120.347 64.0941 114.797 53.2544 115.867 42.1253C116.377 36.8153 117.553 32.1282 122.229 27.2985C131.88 17.3303 140.947 18.6468 149.429 31.2478L153.091 41.0199L147.803 53.4241Z\",\n fill: \"white\"\n}))), _g4 || (_g4 = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask6_614:19850)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M146.677 52.5514C141.567 58.2281 134.908 60.9957 126.699 60.8545C118.363 60.711 113.812 49.4191 115.882 38.4335C116.87 33.1919 118.464 28.6304 123.558 24.241C134.071 15.1816 142.984 17.3065 150.298 30.6155L153.064 40.6748L146.677 52.5514Z\",\n fill: \"#CD7448\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M131.904 37.2051C133.107 37.7927 133.959 38.7351 134.387 39.4446C134.557 39.7257 134.466 40.091 134.185 40.2605C133.905 40.4299 133.539 40.3394 133.37 40.0583C133.041 39.5143 132.35 38.7455 131.383 38.2731C130.438 37.8114 129.218 37.6245 127.756 38.2297C127.453 38.3553 127.106 38.2112 126.98 37.9079C126.854 37.6046 126.998 37.257 127.301 37.1314C129.103 36.385 130.679 36.6068 131.904 37.2051Z\",\n fill: \"#37120C\",\n fillOpacity: 0.25\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M120.443 35.2316C119.482 35.1784 118.689 35.5359 118.177 35.9473C117.922 36.153 117.882 36.527 118.088 36.7828C118.294 37.0386 118.668 37.0792 118.923 36.8735C119.242 36.6174 119.753 36.3838 120.379 36.4184C120.994 36.4524 121.794 36.7494 122.692 37.6869C122.919 37.9241 123.295 37.9326 123.532 37.7058C123.769 37.479 123.777 37.1028 123.55 36.8655C122.487 35.755 121.416 35.2854 120.443 35.2316Z\",\n fill: \"#37120C\",\n fillOpacity: 0.25\n}), /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.422879,\n d: \"M134.482 52.7648C131.787 52.3482 129.84 50.5128 130.134 48.6651C130.428 46.8175 132.852 45.6574 135.547 46.0739C138.243 46.4905 140.189 48.3259 139.895 50.1735C139.601 52.0212 137.177 53.1813 134.482 52.7648Z\",\n fill: \"#A44616\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.422879,\n d: \"M112.964 48.3049C110.316 47.6323 108.484 45.6044 108.872 43.7757C109.26 41.9469 111.72 41.0097 114.368 41.6824C117.016 42.3551 118.848 44.3829 118.46 46.2117C118.072 48.0404 115.612 48.9776 112.964 48.3049Z\",\n fill: \"#A44616\"\n}))), _path24 || (_path24 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M128.29 52.3527C126.171 53.2577 123.671 52.7908 120.79 50.9518C122.146 54.8036 123.687 56.5563 125.413 56.2099C127.139 55.8636 128.098 54.5778 128.29 52.3527Z\",\n fill: \"#A5330A\"\n})), _path25 || (_path25 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M129.298 42.9497C128.74 42.9402 128.298 42.2692 128.311 41.4511C128.324 40.6329 128.787 39.9773 129.345 39.9868C129.903 39.9962 130.345 40.6672 130.332 41.4854C130.319 42.3035 129.856 42.9591 129.298 42.9497Z\",\n fill: \"#321907\"\n})), _path26 || (_path26 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M120.699 41.3989C120.141 41.3894 119.699 40.7185 119.712 39.9003C119.725 39.0821 120.187 38.4265 120.745 38.436C121.303 38.4454 121.745 39.1164 121.732 39.9346C121.72 40.7528 121.257 41.4084 120.699 41.3989Z\",\n fill: \"#321907\"\n})), _path27 || (_path27 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M125.715 40.3462C125.557 40.2281 125.333 40.2596 125.215 40.4167C124.233 41.7208 123.594 42.3555 122.993 42.7944C122.691 43.0152 122.392 43.1914 122.05 43.3811C121.957 43.4328 121.86 43.4857 121.759 43.5409C121.492 43.6866 121.197 43.848 120.868 44.042C119.711 44.7227 119.542 46.2908 120.066 47.4543C120.337 48.0542 120.802 48.5891 121.46 48.8962C122.121 49.2048 122.943 49.2677 123.894 48.9804C124.082 48.9234 124.189 48.7247 124.131 48.5366C124.073 48.3485 123.874 48.2422 123.685 48.2992C122.876 48.5436 122.239 48.4746 121.762 48.2518C121.281 48.0273 120.929 47.6311 120.718 47.164C120.281 46.1935 120.503 45.0843 121.232 44.655C121.551 44.4672 121.831 44.3142 122.095 44.1701C122.198 44.1136 122.299 44.0585 122.399 44.0032C122.749 43.8086 123.079 43.6156 123.417 43.3687C124.096 42.8719 124.784 42.1764 125.787 40.8446C125.905 40.6875 125.873 40.4644 125.715 40.3462Z\",\n fill: \"#8A3110\"\n})), _path28 || (_path28 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M129.649 34.837C121.827 33.5383 118.644 32.9326 115.938 30.7899C116.095 20.7306 124.372 14.8095 128.208 13.9133C137.079 11.7498 146.71 14.4563 152.621 22.24C153.207 23.0117 153.697 23.8016 154.1 24.6046C154.332 24.9784 154.561 25.3966 154.788 25.8614C158.487 36.5185 160.433 52.0678 159.378 57.8279C156.421 61.6292 132.689 62.4489 135.661 57.6848C135.827 57.4189 136.012 57.1432 136.209 56.8498C137.605 54.7702 139.596 51.8038 139.577 45.1401C139.573 43.5264 139.106 41.6388 138.581 39.5103C138.403 38.7907 138.218 38.0435 138.043 37.2701C137.624 37.1239 137.225 36.9851 136.846 36.8532C135.154 36.2654 133.859 35.8154 133.056 35.4671C132.176 35.0859 133.015 32.5431 133.618 30.7177C134.144 29.1236 134.489 28.0765 133.352 29.4936C131.887 31.3189 131.327 32.7473 131.052 33.867C130.895 34.5038 130.296 34.9444 129.649 34.837Z\",\n fill: \"#0A1551\"\n})), _path29 || (_path29 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M117.876 135.11C123.204 132.113 147.144 138.846 165.384 132.164C175.385 128.501 167.732 107.165 163.563 89.2747C160.924 79.3725 156.556 72.8099 152.574 70.3825L143.912 76.7565L146.117 88.6293C146.117 88.6293 144.747 92.9399 147.634 100.772C150.522 108.604 155.009 118.451 155.009 118.451L112.084 127.456C112.239 131.007 113.612 137.508 117.876 135.11Z\",\n fill: \"white\"\n}))), _path30 || (_path30 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0 94.4348C0 70.8024 19.1578 51.6445 42.7902 51.6445H155.115C178.747 51.6445 197.905 70.8024 197.905 94.4348C197.905 118.067 178.747 137.225 155.115 137.225H42.7902C19.1578 137.225 0 118.067 0 94.4348Z\",\n fill: \"#E6E6F5\"\n})), _path31 || (_path31 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M65.837 81.9592C64.5359 80.8456 63.022 80.0079 61.3875 79.4968C59.7529 78.9858 58.0318 78.8122 56.3281 78.9865L51.2598 76.694C50.8843 76.5178 50.4597 76.4753 50.0567 76.5736C49.6537 76.6718 49.2967 76.9049 49.0444 77.234C48.9237 77.4075 48.8395 77.6037 48.7969 77.8106C48.7543 78.0176 48.7539 78.231 48.7963 78.438C48.8386 78.645 48.9226 78.8413 49.043 79.015C49.1634 79.1886 49.3178 79.336 49.4969 79.4482L52.2516 81.2906L51.0773 81.1933C49.2314 81.0459 47.4788 80.3203 46.0691 79.1196L42.1557 75.7349C41.9286 75.5451 41.6574 75.4154 41.3671 75.3579C41.0767 75.3004 40.7766 75.317 40.4943 75.4059C40.2444 75.4669 40.0146 75.5918 39.8277 75.7684C39.6407 75.945 39.5032 76.1672 39.428 76.4131C39.3529 76.6591 39.3429 76.9203 39.3992 77.1712C39.4554 77.4222 39.5758 77.6541 39.7488 77.8444L44.3203 82.8871C45.2213 83.8663 46.3099 84.6544 47.5215 85.2045C48.733 85.7547 50.0428 86.0557 51.3729 86.0897L66.0279 86.5405L65.837 81.9592Z\",\n fill: \"#EFBB9D\"\n})), _path32 || (_path32 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M114.82 31.3168C111.43 45.7517 107.561 80.2673 106.301 83.438C105.988 84.2241 106.15 85.1232 106.739 85.7314C111.538 90.6861 117.959 92.234 126 90.375C134.565 88.3947 137.243 52.5997 131.934 28.4188L114.82 31.3168Z\",\n fill: \"#091141\"\n})), _path33 || (_path33 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M59.9562 88.0544C63.226 84.9317 65.2089 82.208 65.9049 79.8834C80.533 90.813 88.8123 95.9785 90.7426 95.38C93.3894 94.5594 114.746 75.3614 122.167 70.8196C122.841 70.147 122.888 75.8967 123.424 75.2776L121.017 97.5923C112.35 103.794 106.828 107.615 104.451 109.055C100.886 111.215 91.53 115.17 83.0801 108.3C77.4469 103.72 69.7389 96.9715 59.9562 88.0544Z\",\n fill: \"#F4F5FE\"\n})), _path34 || (_path34 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M110.592 112.816C111.715 117.572 113.858 121.714 112 132.376C122.036 134.193 128.883 131.142 133.5 133.376L151 125.376L163.5 119.876L157.645 102.462L158.292 88.868C156.591 82.0696 153.796 75.6344 151.231 72.8261C147.382 68.6135 126.491 70.5315 121.346 72.3039C116.2 74.0764 115.009 83.8012 109.577 91.6064C104.144 99.4116 108.907 105.683 110.592 112.816Z\",\n fill: \"white\"\n})), _path35 || (_path35 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M142.981 70.1544C140.959 86.6243 135.277 94.8593 125.934 94.8593C111.92 94.8593 115.206 87.4872 116.961 84.0305C118.131 81.726 119.417 77.6245 120.82 71.7258C125.641 70.1872 129.321 69.3278 131.86 69.1478C134.398 68.9679 138.105 69.3034 142.981 70.1544Z\",\n fill: \"#EFBB9D\"\n})), _path36 || (_path36 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M122.004 47.5359C121.452 47.6172 120.906 47.0268 120.785 46.2173C120.664 45.4078 121.013 44.6856 121.565 44.6043C122.117 44.523 122.663 45.1133 122.784 45.9228C122.905 46.7324 122.556 47.4546 122.004 47.5359Z\",\n fill: \"#321907\"\n})), _path37 || (_path37 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M114.453 47.403C113.901 47.4844 113.355 46.894 113.234 46.0845C113.113 45.275 113.462 44.5528 114.014 44.4715C114.566 44.3901 115.112 44.9805 115.233 45.79C115.354 46.5995 115.005 47.3217 114.453 47.403Z\",\n fill: \"#321907\"\n})), _path38 || (_path38 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M137.285 52.0003C135.625 64.9731 141.59 69.8431 143.5 69.8755C145.409 69.9079 137.698 77.5795 124.067 90.3655C119.606 81.7674 119.107 74.0993 120.5 71.8755C122.59 68.5397 124.529 71.3934 123.813 59.7145C123.343 52.0426 133.544 52.7719 140.811 51.5265C137.285 52.0003 131.529 52.1186 137.285 52.0003Z\",\n fill: \"#EFBB9D\"\n})), _path39 || (_path39 = /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.677232,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M123.313 54.5259C124.105 61.7532 124.082 65.7391 124 66.3752C123.878 67.3293 141.282 66.5234 136.312 51.2024C131.342 35.8815 129.68 53.0076 123.313 54.5259Z\",\n fill: \"#DC9F7E\"\n})), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask7_614:19850\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 114,\n y: 22,\n width: 38,\n height: 44\n}, _path40 || (_path40 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M146.092 55.0491C141.516 61.1625 135.135 64.5174 126.949 65.1136C118.636 65.7191 113.086 54.8794 114.156 43.7503C114.667 38.4403 115.843 33.7532 120.518 28.9235C130.169 18.9553 139.236 20.2718 147.718 32.8728L151.38 42.6449L146.092 55.0491Z\",\n fill: \"white\"\n}))), _g5 || (_g5 = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask7_614:19850)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M144.966 54.1764C139.857 59.8531 133.197 62.6207 124.988 62.4795C116.652 62.336 112.101 51.0441 114.171 40.0585C115.159 34.8169 116.753 30.2554 121.847 25.866C132.36 16.8066 141.273 18.9315 148.587 32.2405L151.353 42.2998L144.966 54.1764Z\",\n fill: \"#EFBB9D\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M132.771 54.3898C130.076 53.9732 128.129 52.1378 128.423 50.2901C128.718 48.4425 131.141 47.2824 133.836 47.6989C136.532 48.1155 138.478 49.9509 138.184 51.7985C137.89 53.6462 135.466 54.8063 132.771 54.3898Z\",\n fill: \"#EFA77F\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M111.253 49.9299C108.605 49.2573 106.773 47.2294 107.161 45.4007C107.549 43.5719 110.009 42.6347 112.657 43.3074C115.305 43.9801 117.137 46.0079 116.749 47.8367C116.361 49.6654 113.901 50.6026 111.253 49.9299Z\",\n fill: \"#EFA77F\"\n}))), _path41 || (_path41 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M126.024 53.9406C123.906 54.8456 121.406 54.3786 118.524 52.5397C119.88 56.3915 121.422 58.1442 123.148 57.7978C124.874 57.4515 125.833 56.1657 126.024 53.9406Z\",\n fill: \"#A5330A\"\n})), _path42 || (_path42 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M127.587 44.5747C127.029 44.5652 126.587 43.8942 126.6 43.0761C126.613 42.2579 127.076 41.6023 127.634 41.6118C128.192 41.6212 128.634 42.2922 128.621 43.1104C128.608 43.9285 128.145 44.5841 127.587 44.5747Z\",\n fill: \"#0A1551\"\n})), _path43 || (_path43 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M118.988 43.0239C118.43 43.0144 117.988 42.3435 118.001 41.5253C118.014 40.7071 118.476 40.0515 119.035 40.061C119.593 40.0704 120.034 40.7414 120.022 41.5596C120.009 42.3778 119.546 43.0334 118.988 43.0239Z\",\n fill: \"#0A1551\"\n})), _path44 || (_path44 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M142.981 70.1544C140.959 86.6243 135.277 94.8593 125.934 94.8593C111.92 94.8593 115.206 87.4872 116.961 84.0305C118.131 81.726 119.417 77.6245 120.82 71.7258C125.641 70.1872 129.321 69.3278 131.86 69.1478C134.398 68.9679 138.105 69.3034 142.981 70.1544Z\",\n fill: \"#EFBB9D\"\n})), _path45 || (_path45 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M142.201 78.3815L144.406 90.2543C144.406 90.2543 143.036 94.5649 145.923 102.397C148.811 110.229 153.298 120.076 153.298 120.076L163.674 133.789C173.674 130.126 166.022 108.79 161.852 90.8997C159.213 80.9975 154.845 74.4349 150.863 72.0075L142.201 78.3815Z\",\n fill: \"white\"\n})), _path46 || (_path46 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M144.23 81.3875L146.435 93.2604C146.435 93.2604 145.065 97.571 147.952 105.403C150.84 113.235 155.327 123.082 155.327 123.082L164.499 135.374C174.499 131.711 168.05 111.797 163.881 93.9058C161.242 84.0035 156.874 77.4409 152.892 75.0135L144.23 81.3875Z\",\n fill: \"url(#paint1_linear_614:19850)\"\n})), _path47 || (_path47 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M142.501 69.375C131.301 71.775 125.167 70.0417 123.501 68.875C122.701 69.275 120.834 71.375 120 72.375C118.5 76.0417 115.201 84.075 114.001 86.875C112.501 90.375 115.001 92.375 118.501 96.375C122.001 100.375 133.001 96.875 137.001 95.875C140.201 95.075 144.001 78.5417 145.501 70.375C143.501 69.975 142.667 69.5417 142.501 69.375Z\",\n fill: \"white\"\n})), _path48 || (_path48 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M127.938 36.462C120.116 35.1633 116.933 34.5576 114.227 32.4149C114.384 22.3556 122.661 16.4345 126.497 15.5383C135.368 13.3748 144.999 16.0813 150.91 23.865C151.496 24.6367 151.986 25.4266 152.389 26.2296C152.621 26.6034 152.85 27.0216 153.077 27.4864C156.776 38.1435 156.679 78.257 155.623 84.0171C152.666 87.8184 128.935 88.6381 131.907 83.874C132.073 83.6081 132.258 83.3324 132.455 83.039C133.85 80.9594 137.885 53.4288 137.866 46.7651C137.862 45.1514 137.396 43.2638 136.87 41.1353C136.692 40.4157 136.507 39.6685 136.332 38.8951C135.913 38.7489 135.514 38.6101 135.135 38.4782C133.443 37.8904 132.149 37.4404 131.345 37.0921C130.465 36.7109 131.304 34.1681 131.907 32.3427C132.433 30.7486 132.778 29.7015 131.641 31.1186C130.176 32.9439 129.616 34.3723 129.341 35.492C129.184 36.1288 128.585 36.5694 127.938 36.462Z\",\n fill: \"#091141\"\n})), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 145.5,\n cy: 16.875,\n r: 9.5,\n fill: \"#091141\"\n})), _path49 || (_path49 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M129.897 38.4111C129.897 38.4111 126.839 37.5696 126.481 38.8692C126.481 38.8692 126.241 39.7411 129.025 40.4416C131.81 41.1422 132.489 41.0659 132.888 40.2713C133.288 39.4766 131.379 38.7038 129.897 38.4111Z\",\n fill: \"#091141\"\n})), _path50 || (_path50 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M118.797 36.4602C118.797 36.4602 121.442 36.6162 121.438 37.9085C121.438 37.9085 121.428 38.7739 119.107 38.5703C116.785 38.3667 116.107 37.9467 116.011 37.2345C115.916 36.5223 117.552 36.2713 118.797 36.4602Z\",\n fill: \"#091141\"\n})), _path51 || (_path51 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M121.942 45.389L121 48.2849L122.873 48.7786\",\n stroke: \"#D97D4A\",\n strokeWidth: 0.919783,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n})), _path52 || (_path52 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M124.604 130.031L132.629 129.412L132.384 137.438H125.434L124.604 130.031Z\",\n fill: \"#EFBB9D\"\n})), _path53 || (_path53 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M126.861 129.813L127.262 131.419L128.065 137.438H108C108.401 133.425 114.019 129.412 118.032 129.412C121.243 129.412 126.058 129.68 126.861 129.813Z\",\n fill: \"#EFBB9D\"\n})), _path54 || (_path54 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M161.399 122.431L130 123.372L132 137.375L162 136.875C163.085 136.729 164.344 136.671 165.256 136.065C166.256 135.4 167.941 134.131 168.495 133.187C169.05 132.242 169.382 131.184 169.467 130.092C169.551 129.001 169.387 127.904 168.985 126.886C168.388 125.411 167.321 124.174 165.949 123.369C164.578 122.563 162.978 122.233 161.399 122.431Z\",\n fill: \"#F4F6FF\"\n})), _path55 || (_path55 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M41.134 31.2582C39.5049 31.2582 39.0603 30.8194 39.0601 29.1831C39.058 14.5092 39.0582 19.091 39.06 4.41714C39.0601 2.85541 39.5295 2.37824 41.1004 2.37789C55.7861 2.37404 51.2159 2.37404 65.9015 2.37789C67.4504 2.37824 67.9399 2.87413 67.9402 4.42922C67.943 19.1031 67.9429 14.5213 67.9406 29.1952C67.9403 30.8131 67.4816 31.258 65.8476 31.2582C58.5049 31.2591 60.7899 31.2586 53.4472 31.2586C46.1335 31.2586 48.4477 31.2591 41.134 31.2582ZM65.3567 29.1956C65.6453 29.1956 65.8792 28.9617 65.8792 28.6731V23.0464C65.8792 22.7579 65.6453 22.5239 65.3567 22.5239H59.73C59.4415 22.5239 59.2075 22.7579 59.2075 23.0464V28.6731C59.2075 28.9617 59.4415 29.1956 59.73 29.1956H65.3567ZM50.6871 29.1956H56.3138C56.6024 29.1956 56.8363 28.9617 56.8363 28.6731V23.0464C56.8363 22.7579 56.6024 22.5239 56.3138 22.5239H50.6871C50.3985 22.5239 50.1646 22.7579 50.1646 23.0464V28.6731C50.1646 28.9617 50.3985 29.1956 50.6871 29.1956ZM41.6442 29.1956H47.2709C47.5594 29.1956 47.7934 28.9617 47.7934 28.6731V23.0464C47.7934 22.7579 47.5594 22.5239 47.2709 22.5239H41.6442C41.3556 22.5239 41.1217 22.7579 41.1217 23.0464V28.6731C41.1217 28.9617 41.3556 29.1956 41.6442 29.1956ZM59.73 20.1527H65.3567C65.6453 20.1527 65.8792 19.9188 65.8792 19.6302V14.0035C65.8792 13.715 65.6453 13.481 65.3567 13.481H59.73C59.4415 13.481 59.2075 13.715 59.2075 14.0035V19.6302C59.2075 19.9188 59.4415 20.1527 59.73 20.1527ZM50.6871 20.1527H56.3138C56.6024 20.1527 56.8363 19.9188 56.8363 19.6302V14.0035C56.8363 13.715 56.6024 13.481 56.3138 13.481H50.6871C50.3985 13.481 50.1646 13.715 50.1646 14.0035V19.6302C50.1646 19.9188 50.3985 20.1527 50.6871 20.1527ZM41.6442 20.1527H47.2709C47.5594 20.1527 47.7934 19.9188 47.7934 19.6302V14.0035C47.7934 13.715 47.5594 13.481 47.2709 13.481H41.6442C41.3556 13.481 41.1217 13.715 41.1217 14.0035V19.6302C41.1217 19.9188 41.3556 20.1527 41.6442 20.1527ZM50.6871 11.1098H56.3138C56.6024 11.1098 56.8363 10.9685 56.8363 10.7942V7.396C56.8363 7.22172 56.6024 7.08045 56.3138 7.08045H50.6871C50.3985 7.08045 50.1646 7.22172 50.1646 7.396V10.7942C50.1646 10.9685 50.3985 11.1098 50.6871 11.1098ZM59.7133 11.1098H65.34C65.6285 11.1098 65.8625 10.9685 65.8625 10.7942V7.396C65.8625 7.22172 65.6285 7.08045 65.34 7.08045H59.7133C59.4247 7.08045 59.1908 7.22172 59.1908 7.396V10.7942C59.1908 10.9685 59.4247 11.1098 59.7133 11.1098ZM41.6442 11.1098H47.2709C47.5594 11.1098 47.7934 10.9685 47.7934 10.7942V7.396C47.7934 7.22172 47.5594 7.08045 47.2709 7.08045H41.6442C41.3556 7.08045 41.1217 7.22172 41.1217 7.396V10.7942C41.1217 10.9685 41.3556 11.1098 41.6442 11.1098Z\",\n fill: \"white\"\n})), _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n x: 40.6641,\n y: 4.78125,\n width: 25.6744,\n height: 24.8721,\n fill: \"white\"\n})), _path56 || (_path56 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M59.1172 7.38672C59.1172 6.83443 59.5649 6.38672 60.1172 6.38672H64.8629C65.4152 6.38672 65.8629 6.83443 65.8629 7.38672V10.2007C65.8629 10.753 65.4152 11.2007 64.8629 11.2007H60.1172C59.5649 11.2007 59.1172 10.753 59.1172 10.2007V7.38672Z\",\n fill: \"#0D953B\"\n})), _path57 || (_path57 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M59.1172 14.6074C59.1172 14.0551 59.5649 13.6074 60.1172 13.6074H64.5358C65.0881 13.6074 65.5358 14.0551 65.5358 14.6074V19.026C65.5358 19.5783 65.0881 20.026 64.5358 20.026H60.1172C59.5649 20.026 59.1172 19.5783 59.1172 19.026V14.6074Z\",\n fill: \"#FFB629\"\n})), _path58 || (_path58 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M59.1172 23.4336C59.1172 22.8813 59.5649 22.4336 60.1172 22.4336H64.5358C65.0881 22.4336 65.5358 22.8813 65.5358 23.4336V27.8522C65.5358 28.4045 65.0881 28.8522 64.5358 28.8522H60.1172C59.5649 28.8522 59.1172 28.4045 59.1172 27.8522V23.4336Z\",\n fill: \"#FFB629\"\n})), _path59 || (_path59 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M50.166 7.38672C50.166 6.83443 50.6137 6.38672 51.166 6.38672H56.0378C56.59 6.38672 57.0378 6.83443 57.0378 7.38672V10.2007C57.0378 10.753 56.59 11.2007 56.0378 11.2007H51.166C50.6137 11.2007 50.166 10.753 50.166 10.2007V7.38672Z\",\n fill: \"#0D953B\"\n})), _path60 || (_path60 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M50.2929 14.6074C50.2929 14.0551 50.7407 13.6074 51.2929 13.6074H55.7116C56.2639 13.6074 56.7116 14.0551 56.7116 14.6074V19.026C56.7116 19.5783 56.2639 20.026 55.7116 20.026H51.2929C50.7407 20.026 50.2929 19.5783 50.2929 19.026V14.6074Z\",\n fill: \"#FF6100\"\n})), _path61 || (_path61 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M50.2929 23.4336C50.2929 22.8813 50.7407 22.4336 51.2929 22.4336H55.7116C56.2639 22.4336 56.7116 22.8813 56.7116 23.4336V27.8522C56.7116 28.4045 56.2639 28.8522 55.7116 28.8522H51.2929C50.7407 28.8522 50.2929 28.4045 50.2929 27.8522V23.4336Z\",\n fill: \"#FF6100\"\n})), _path62 || (_path62 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M41.0645 7.38672C41.0645 6.83443 41.5122 6.38672 42.0645 6.38672H46.8842C47.4365 6.38672 47.8842 6.83443 47.8842 7.38672V10.2007C47.8842 10.753 47.4365 11.2007 46.8842 11.2007H42.0645C41.5122 11.2007 41.0645 10.753 41.0645 10.2007V7.38672Z\",\n fill: \"#0D953B\"\n})), _path63 || (_path63 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M41.0645 14.6074C41.0645 14.0551 41.5122 13.6074 42.0645 13.6074H46.8842C47.4365 13.6074 47.8842 14.0551 47.8842 14.6074V19.026C47.8842 19.5783 47.4365 20.026 46.8842 20.026H42.0645C41.5122 20.026 41.0645 19.5783 41.0645 19.026V16.8167V14.6074Z\",\n fill: \"#0099FF\"\n})), _path64 || (_path64 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M41.0645 23.4336C41.0645 22.8813 41.5122 22.4336 42.0645 22.4336H46.8842C47.4365 22.4336 47.8842 22.8813 47.8842 23.4336V27.8522C47.8842 28.4045 47.4365 28.8522 46.8842 28.8522H42.0645C41.5122 28.8522 41.0645 28.4045 41.0645 27.8522V25.6429V23.4336Z\",\n fill: \"#0099FF\"\n})), _rect2 || (_rect2 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 38.3086,\n y: 1.625,\n width: 30.3837,\n height: 30.3837,\n rx: 2.75,\n stroke: \"#B1C3E9\",\n strokeWidth: 1.5\n})), _path65 || (_path65 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21.0754 71.3754C19.4463 71.3754 19.0017 70.9366 19.0015 69.3003C18.9994 54.6264 18.9996 59.2082 19.0014 44.5343C19.0015 42.9726 19.4709 42.4954 21.0418 42.4951C35.7275 42.4912 31.1573 42.4912 45.8429 42.4951C47.3918 42.4954 47.8813 42.9913 47.8816 44.5464C47.8844 59.2203 47.8843 54.6385 47.882 69.3124C47.8817 70.9303 47.4231 71.3752 45.789 71.3754C38.4463 71.3763 40.7313 71.3758 33.3886 71.3758C26.0749 71.3758 28.3891 71.3763 21.0754 71.3754ZM45.2981 69.3128C45.5867 69.3128 45.8206 69.0789 45.8206 68.7903V63.1636C45.8206 62.8751 45.5867 62.6411 45.2981 62.6411H39.6714C39.3829 62.6411 39.1489 62.8751 39.1489 63.1636V68.7903C39.1489 69.0789 39.3829 69.3128 39.6714 69.3128H45.2981ZM30.6285 69.3128H36.2552C36.5438 69.3128 36.7777 69.0789 36.7777 68.7903V63.1636C36.7777 62.8751 36.5438 62.6411 36.2552 62.6411H30.6285C30.3399 62.6411 30.106 62.8751 30.106 63.1636V68.7903C30.106 69.0789 30.3399 69.3128 30.6285 69.3128ZM21.5856 69.3128H27.2123C27.5008 69.3128 27.7348 69.0789 27.7348 68.7903V63.1636C27.7348 62.8751 27.5008 62.6411 27.2123 62.6411H21.5856C21.297 62.6411 21.0631 62.8751 21.0631 63.1636V68.7903C21.0631 69.0789 21.297 69.3128 21.5856 69.3128ZM39.6714 60.2699H45.2981C45.5867 60.2699 45.8206 60.036 45.8206 59.7474V54.1207C45.8206 53.8321 45.5867 53.5982 45.2981 53.5982H39.6714C39.3829 53.5982 39.1489 53.8321 39.1489 54.1207V59.7474C39.1489 60.036 39.3829 60.2699 39.6714 60.2699ZM30.6285 60.2699H36.2552C36.5438 60.2699 36.7777 60.036 36.7777 59.7474V54.1207C36.7777 53.8321 36.5438 53.5982 36.2552 53.5982H30.6285C30.3399 53.5982 30.106 53.8321 30.106 54.1207V59.7474C30.106 60.036 30.3399 60.2699 30.6285 60.2699ZM21.5856 60.2699H27.2123C27.5008 60.2699 27.7348 60.036 27.7348 59.7474V54.1207C27.7348 53.8321 27.5008 53.5982 27.2123 53.5982H21.5856C21.297 53.5982 21.0631 53.8321 21.0631 54.1207V59.7474C21.0631 60.036 21.297 60.2699 21.5856 60.2699ZM30.6285 51.227H36.2552C36.5438 51.227 36.7777 51.0857 36.7777 50.9114V47.5132C36.7777 47.3389 36.5438 47.1976 36.2552 47.1976H30.6285C30.3399 47.1976 30.106 47.3389 30.106 47.5132V50.9114C30.106 51.0857 30.3399 51.227 30.6285 51.227ZM39.6547 51.227H45.2814C45.5699 51.227 45.8039 51.0857 45.8039 50.9114V47.5132C45.8039 47.3389 45.5699 47.1976 45.2814 47.1976H39.6547C39.3661 47.1976 39.1322 47.3389 39.1322 47.5132V50.9114C39.1322 51.0857 39.3661 51.227 39.6547 51.227ZM21.5856 51.227H27.2123C27.5008 51.227 27.7348 51.0857 27.7348 50.9114V47.5132C27.7348 47.3389 27.5008 47.1976 27.2123 47.1976H21.5856C21.297 47.1976 21.0631 47.3389 21.0631 47.5132V50.9114C21.0631 51.0857 21.297 51.227 21.5856 51.227Z\",\n fill: \"white\"\n})), _rect3 || (_rect3 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 20.6055,\n y: 44.8984,\n width: 25.6744,\n height: 24.8721,\n fill: \"white\"\n})), _path66 || (_path66 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M39.0586 47.5039C39.0586 46.9516 39.5063 46.5039 40.0586 46.5039H44.8043C45.3566 46.5039 45.8043 46.9516 45.8043 47.5039V50.3179C45.8043 50.8701 45.3566 51.3179 44.8043 51.3179H40.0586C39.5063 51.3179 39.0586 50.8701 39.0586 50.3179V47.5039Z\",\n fill: \"#0D953B\"\n})), _path67 || (_path67 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M39.0586 54.7246C39.0586 54.1723 39.5063 53.7246 40.0586 53.7246H44.4772C45.0295 53.7246 45.4772 54.1723 45.4772 54.7246V59.1432C45.4772 59.6955 45.0295 60.1432 44.4772 60.1432H40.0586C39.5063 60.1432 39.0586 59.6955 39.0586 59.1432V54.7246Z\",\n fill: \"#FFB629\"\n})), _path68 || (_path68 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M39.0586 63.5508C39.0586 62.9985 39.5063 62.5508 40.0586 62.5508H44.4772C45.0295 62.5508 45.4772 62.9985 45.4772 63.5508V67.9694C45.4772 68.5217 45.0295 68.9694 44.4772 68.9694H40.0586C39.5063 68.9694 39.0586 68.5217 39.0586 67.9694V63.5508Z\",\n fill: \"#FFB629\"\n})), _path69 || (_path69 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M30.1074 47.5039C30.1074 46.9516 30.5551 46.5039 31.1074 46.5039H35.9792C36.5314 46.5039 36.9792 46.9516 36.9792 47.5039V50.3179C36.9792 50.8701 36.5315 51.3179 35.9792 51.3179H31.1074C30.5551 51.3179 30.1074 50.8701 30.1074 50.3179V47.5039Z\",\n fill: \"#0D953B\"\n})), _path70 || (_path70 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M30.2324 54.7246C30.2324 54.1723 30.6801 53.7246 31.2324 53.7246H35.651C36.2033 53.7246 36.651 54.1723 36.651 54.7246V59.1432C36.651 59.6955 36.2033 60.1432 35.651 60.1432H31.2324C30.6801 60.1432 30.2324 59.6955 30.2324 59.1432V54.7246Z\",\n fill: \"#FF6100\"\n})), _path71 || (_path71 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M30.2324 63.5508C30.2324 62.9985 30.6801 62.5508 31.2324 62.5508H35.651C36.2033 62.5508 36.651 62.9985 36.651 63.5508V67.9694C36.651 68.5217 36.2033 68.9694 35.651 68.9694H31.2324C30.6801 68.9694 30.2324 68.5217 30.2324 67.9694V63.5508Z\",\n fill: \"#FF6100\"\n})), _path72 || (_path72 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21.0059 47.5039C21.0059 46.9516 21.4536 46.5039 22.0059 46.5039H26.8256C27.3779 46.5039 27.8256 46.9516 27.8256 47.5039V50.3179C27.8256 50.8701 27.3779 51.3179 26.8256 51.3179H22.0059C21.4536 51.3179 21.0059 50.8701 21.0059 50.3179V47.5039Z\",\n fill: \"#0D953B\"\n})), _path73 || (_path73 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21.0059 54.7246C21.0059 54.1723 21.4536 53.7246 22.0059 53.7246H26.8256C27.3779 53.7246 27.8256 54.1723 27.8256 54.7246V59.1432C27.8256 59.6955 27.3779 60.1432 26.8256 60.1432H22.0059C21.4536 60.1432 21.0059 59.6955 21.0059 59.1432V56.9339V54.7246Z\",\n fill: \"#0099FF\"\n})), _path74 || (_path74 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21.0059 63.5508C21.0059 62.9985 21.4536 62.5508 22.0059 62.5508H26.8256C27.3779 62.5508 27.8256 62.9985 27.8256 63.5508V67.9694C27.8256 68.5217 27.3779 68.9694 26.8256 68.9694H22.0059C21.4536 68.9694 21.0059 68.5217 21.0059 67.9694V65.7601V63.5508Z\",\n fill: \"#0099FF\"\n})), _rect4 || (_rect4 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 18.25,\n y: 41.7422,\n width: 30.3837,\n height: 30.3837,\n rx: 2.75,\n stroke: \"#B1C3E9\",\n strokeWidth: 1.5\n})), _path75 || (_path75 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M60.3898 71.3754C58.7607 71.3754 58.3162 70.9366 58.316 69.3003C58.3139 54.6264 58.3141 59.2082 58.3158 44.5343C58.316 42.9726 58.7854 42.4954 60.3563 42.4951C75.0419 42.4912 70.4717 42.4912 85.1574 42.4951C86.7062 42.4954 87.1957 42.9913 87.1961 44.5464C87.1989 59.2203 87.1987 54.6385 87.1965 69.3124C87.1961 70.9303 86.7375 71.3752 85.1035 71.3754C77.7608 71.3763 80.0458 71.3758 72.703 71.3758C65.3893 71.3758 67.7035 71.3763 60.3898 71.3754ZM84.6126 69.3128C84.9011 69.3128 85.1351 69.0789 85.1351 68.7903V63.1636C85.1351 62.8751 84.9011 62.6411 84.6126 62.6411H78.9859C78.6973 62.6411 78.4634 62.8751 78.4634 63.1636V68.7903C78.4634 69.0789 78.6973 69.3128 78.9859 69.3128H84.6126ZM69.943 69.3128H75.5697C75.8582 69.3128 76.0921 69.0789 76.0921 68.7903V63.1636C76.0921 62.8751 75.8582 62.6411 75.5697 62.6411H69.943C69.6544 62.6411 69.4205 62.8751 69.4205 63.1636V68.7903C69.4205 69.0789 69.6544 69.3128 69.943 69.3128ZM60.9 69.3128H66.5267C66.8153 69.3128 67.0492 69.0789 67.0492 68.7903V63.1636C67.0492 62.8751 66.8153 62.6411 66.5267 62.6411H60.9C60.6115 62.6411 60.3776 62.8751 60.3776 63.1636V68.7903C60.3776 69.0789 60.6115 69.3128 60.9 69.3128ZM78.9859 60.2699H84.6126C84.9011 60.2699 85.1351 60.036 85.1351 59.7474V54.1207C85.1351 53.8321 84.9011 53.5982 84.6126 53.5982H78.9859C78.6973 53.5982 78.4634 53.8321 78.4634 54.1207V59.7474C78.4634 60.036 78.6973 60.2699 78.9859 60.2699ZM69.943 60.2699H75.5697C75.8582 60.2699 76.0921 60.036 76.0921 59.7474V54.1207C76.0921 53.8321 75.8582 53.5982 75.5697 53.5982H69.943C69.6544 53.5982 69.4205 53.8321 69.4205 54.1207V59.7474C69.4205 60.036 69.6544 60.2699 69.943 60.2699ZM60.9 60.2699H66.5267C66.8153 60.2699 67.0492 60.036 67.0492 59.7474V54.1207C67.0492 53.8321 66.8153 53.5982 66.5267 53.5982H60.9C60.6115 53.5982 60.3776 53.8321 60.3776 54.1207V59.7474C60.3776 60.036 60.6115 60.2699 60.9 60.2699ZM69.943 51.227H75.5697C75.8582 51.227 76.0921 51.0857 76.0921 50.9114V47.5132C76.0921 47.3389 75.8582 47.1976 75.5697 47.1976H69.943C69.6544 47.1976 69.4205 47.3389 69.4205 47.5132V50.9114C69.4205 51.0857 69.6544 51.227 69.943 51.227ZM78.9691 51.227H84.5958C84.8844 51.227 85.1183 51.0857 85.1183 50.9114V47.5132C85.1183 47.3389 84.8844 47.1976 84.5958 47.1976H78.9691C78.6806 47.1976 78.4466 47.3389 78.4466 47.5132V50.9114C78.4466 51.0857 78.6806 51.227 78.9691 51.227ZM60.9 51.227H66.5267C66.8153 51.227 67.0492 51.0857 67.0492 50.9114V47.5132C67.0492 47.3389 66.8153 47.1976 66.5267 47.1976H60.9C60.6115 47.1976 60.3776 47.3389 60.3776 47.5132V50.9114C60.3776 51.0857 60.6115 51.227 60.9 51.227Z\",\n fill: \"white\"\n})), _rect5 || (_rect5 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 59.9199,\n y: 44.8984,\n width: 25.6744,\n height: 24.8721,\n fill: \"white\"\n})), _path76 || (_path76 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M78.373 47.5039C78.373 46.9516 78.8208 46.5039 79.373 46.5039H84.1188C84.6711 46.5039 85.1188 46.9516 85.1188 47.5039V50.3179C85.1188 50.8701 84.6711 51.3179 84.1188 51.3179H79.373C78.8208 51.3179 78.373 50.8701 78.373 50.3179V47.5039Z\",\n fill: \"#0D953B\"\n})), _path77 || (_path77 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M78.373 54.7246C78.373 54.1723 78.8208 53.7246 79.373 53.7246H83.7917C84.3439 53.7246 84.7917 54.1723 84.7917 54.7246V59.1432C84.7917 59.6955 84.3439 60.1432 83.7917 60.1432H79.373C78.8208 60.1432 78.373 59.6955 78.373 59.1432V54.7246Z\",\n fill: \"#FFB629\"\n})), _path78 || (_path78 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M78.373 63.5508C78.373 62.9985 78.8208 62.5508 79.373 62.5508H83.7917C84.3439 62.5508 84.7917 62.9985 84.7917 63.5508V67.9694C84.7917 68.5217 84.3439 68.9694 83.7917 68.9694H79.373C78.8208 68.9694 78.373 68.5217 78.373 67.9694V63.5508Z\",\n fill: \"#FFB629\"\n})), _path79 || (_path79 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M69.4218 47.5039C69.4218 46.9516 69.8696 46.5039 70.4218 46.5039H75.2936C75.8459 46.5039 76.2936 46.9516 76.2936 47.5039V50.3179C76.2936 50.8701 75.8459 51.3179 75.2936 51.3179H70.4218C69.8696 51.3179 69.4218 50.8701 69.4218 50.3179V47.5039Z\",\n fill: \"#0D953B\"\n})), _path80 || (_path80 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M69.5469 54.7246C69.5469 54.1723 69.9946 53.7246 70.5469 53.7246H74.9655C75.5178 53.7246 75.9655 54.1723 75.9655 54.7246V59.1432C75.9655 59.6955 75.5178 60.1432 74.9655 60.1432H70.5469C69.9946 60.1432 69.5469 59.6955 69.5469 59.1432V54.7246Z\",\n fill: \"#FF6100\"\n})), _path81 || (_path81 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M69.5469 63.5508C69.5469 62.9985 69.9946 62.5508 70.5469 62.5508H74.9655C75.5178 62.5508 75.9655 62.9985 75.9655 63.5508V67.9694C75.9655 68.5217 75.5178 68.9694 74.9655 68.9694H70.5469C69.9946 68.9694 69.5469 68.5217 69.5469 67.9694V63.5508Z\",\n fill: \"#FF6100\"\n})), _path82 || (_path82 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M60.3203 47.5039C60.3203 46.9516 60.768 46.5039 61.3203 46.5039H66.1401C66.6924 46.5039 67.1401 46.9516 67.1401 47.5039V50.3179C67.1401 50.8701 66.6924 51.3179 66.1401 51.3179H61.3203C60.768 51.3179 60.3203 50.8701 60.3203 50.3179V47.5039Z\",\n fill: \"#0D953B\"\n})), _path83 || (_path83 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M60.3203 54.7246C60.3203 54.1723 60.768 53.7246 61.3203 53.7246H66.1401C66.6924 53.7246 67.1401 54.1723 67.1401 54.7246V59.1432C67.1401 59.6955 66.6924 60.1432 66.1401 60.1432H61.3203C60.768 60.1432 60.3203 59.6955 60.3203 59.1432V56.9339V54.7246Z\",\n fill: \"#0099FF\"\n})), _path84 || (_path84 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M60.3203 63.5508C60.3203 62.9985 60.768 62.5508 61.3203 62.5508H66.1401C66.6924 62.5508 67.1401 62.9985 67.1401 63.5508V67.9694C67.1401 68.5217 66.6924 68.9694 66.1401 68.9694H61.3203C60.768 68.9694 60.3203 68.5217 60.3203 67.9694V65.7601V63.5508Z\",\n fill: \"#0099FF\"\n})), _rect6 || (_rect6 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 57.5645,\n y: 41.7422,\n width: 30.3837,\n height: 30.3837,\n rx: 2.75,\n stroke: \"#B1C3E9\",\n strokeWidth: 1.5\n})), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint0_linear_614:19850\",\n x1: 155.19,\n y1: 90.2549,\n x2: 152.764,\n y2: 107.265,\n gradientUnits: \"userSpaceOnUse\"\n}, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"white\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#F3F5FE\"\n})), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint1_linear_614:19850\",\n x1: 159.999,\n y1: 122.374,\n x2: 148.27,\n y2: 68.4241,\n gradientUnits: \"userSpaceOnUse\"\n}, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#F4F5FE\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"white\"\n})))));\nexport default SvgNoTablesIcon;","var _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _path9, _path10, _path11, _path12, _path13, _path14, _path15, _path16, _path17, _path18, _path19, _path20, _path21, _path22, _path23, _path24, _path25, _circle, _path26, _path27, _path28, _path29, _path30, _path31, _path32, _path33, _path34, _path35, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgNoReportsIcon = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 198 145\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0 101.437C0 77.8043 19.1578 58.6465 42.7902 58.6465H155.115C178.747 58.6465 197.905 77.8043 197.905 101.437C197.905 125.069 178.747 144.227 155.115 144.227H42.7902C19.1578 144.227 0 125.069 0 101.437Z\",\n fill: \"#E6E6F5\"\n})), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M36.9316 5.17167C36.9316 2.52254 39.0792 0.375 41.7283 0.375H64.5125C67.1616 0.375 69.3092 2.52254 69.3092 5.17167V33.9517C69.3092 36.6008 67.1616 38.7483 64.5125 38.7483H41.7283C39.0792 38.7483 36.9316 36.6008 36.9316 33.9517V5.17167Z\",\n fill: \"white\"\n})), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M64.5125 1.57417H41.7283C39.7415 1.57417 38.1308 3.18482 38.1308 5.17167V33.9517C38.1308 35.9385 39.7415 37.5492 41.7283 37.5492H64.5125C66.4993 37.5492 68.11 35.9385 68.11 33.9517V5.17167C68.11 3.18482 66.4993 1.57417 64.5125 1.57417ZM41.7283 0.375C39.0792 0.375 36.9316 2.52254 36.9316 5.17167V33.9517C36.9316 36.6008 39.0792 38.7483 41.7283 38.7483H64.5125C67.1616 38.7483 69.3092 36.6008 69.3092 33.9517V5.17167C69.3092 2.52254 67.1616 0.375 64.5125 0.375H41.7283Z\",\n fill: \"#D3DCEF\"\n})), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M42.3809 10.3907C42.3809 9.67225 42.9633 9.08984 43.6817 9.08984H46.2834C47.0018 9.08984 47.5842 9.67225 47.5842 10.3907V29.9032H42.3809V10.3907Z\",\n fill: \"#0099FF\"\n})), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M50.3672 16.2442C50.3672 15.5258 50.9496 14.9434 51.668 14.9434H54.2697C54.9881 14.9434 55.5705 15.5258 55.5705 16.2442V29.9029H50.3672V16.2442Z\",\n fill: \"#FF6100\"\n})), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M58.3555 11.0411C58.3555 10.3226 58.9379 9.74023 59.6563 9.74023H62.258C62.9764 9.74023 63.5588 10.3226 63.5588 11.0411V29.9031H58.3555V11.0411Z\",\n fill: \"#FFB629\"\n})), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16 46.7986C16 44.1495 18.1475 42.002 20.7967 42.002H43.5808C46.23 42.002 48.3775 44.1495 48.3775 46.7986V75.5786C48.3775 78.2278 46.23 80.3753 43.5808 80.3753H20.7967C18.1475 80.3753 16 78.2278 16 75.5786V46.7986Z\",\n fill: \"white\"\n})), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M43.5808 43.2011H20.7967C18.8098 43.2011 17.1992 44.8118 17.1992 46.7986V75.5786C17.1992 77.5655 18.8098 79.1761 20.7967 79.1761H43.5808C45.5677 79.1761 47.1783 77.5655 47.1783 75.5786V46.7986C47.1783 44.8118 45.5677 43.2011 43.5808 43.2011ZM20.7967 42.002C18.1475 42.002 16 44.1495 16 46.7986V75.5786C16 78.2278 18.1475 80.3753 20.7967 80.3753H43.5808C46.23 80.3753 48.3775 78.2278 48.3775 75.5786V46.7986C48.3775 44.1495 46.23 42.002 43.5808 42.002H20.7967Z\",\n fill: \"#D3DCEF\"\n})), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21.4492 52.0176C21.4492 51.2992 22.0316 50.7168 22.7501 50.7168H25.3517C26.0701 50.7168 26.6526 51.2992 26.6526 52.0176V71.5301H21.4492V52.0176Z\",\n fill: \"#0099FF\"\n})), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M29.4375 57.8711C29.4375 57.1527 30.0199 56.5703 30.7383 56.5703H33.34C34.0584 56.5703 34.6408 57.1527 34.6408 57.8711V71.5299H29.4375V57.8711Z\",\n fill: \"#FF6100\"\n})), _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M37.4238 52.668C37.4238 51.9496 38.0062 51.3672 38.7247 51.3672H41.3263C42.0448 51.3672 42.6272 51.9496 42.6272 52.668V71.5301H37.4238V52.668Z\",\n fill: \"#FFB629\"\n})), _path12 || (_path12 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M56.7949 46.7986C56.7949 44.1495 58.9425 42.002 61.5916 42.002H84.3758C87.0249 42.002 89.1724 44.1495 89.1724 46.7986V75.5786C89.1724 78.2278 87.0249 80.3753 84.3758 80.3753H61.5916C58.9425 80.3753 56.7949 78.2278 56.7949 75.5786V46.7986Z\",\n fill: \"white\"\n})), _path13 || (_path13 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M84.3758 43.2011H61.5916C59.6047 43.2011 57.9941 44.8118 57.9941 46.7986V75.5786C57.9941 77.5655 59.6047 79.1761 61.5916 79.1761H84.3758C86.3626 79.1761 87.9733 77.5655 87.9733 75.5786V46.7986C87.9733 44.8118 86.3626 43.2011 84.3758 43.2011ZM61.5916 42.002C58.9425 42.002 56.7949 44.1495 56.7949 46.7986V75.5786C56.7949 78.2278 58.9425 80.3753 61.5916 80.3753H84.3758C87.0249 80.3753 89.1724 78.2278 89.1724 75.5786V46.7986C89.1724 44.1495 87.0249 42.002 84.3758 42.002H61.5916Z\",\n fill: \"#D3DCEF\"\n})), _path14 || (_path14 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M62.2441 52.0176C62.2441 51.2992 62.8265 50.7168 63.545 50.7168H66.1466C66.8651 50.7168 67.4475 51.2992 67.4475 52.0176V71.5301H62.2441V52.0176Z\",\n fill: \"#0099FF\"\n})), _path15 || (_path15 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M70.2305 57.8711C70.2305 57.1527 70.8129 56.5703 71.5313 56.5703H74.133C74.8514 56.5703 75.4338 57.1527 75.4338 57.8711V71.5299H70.2305V57.8711Z\",\n fill: \"#FF6100\"\n})), _path16 || (_path16 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M78.2188 52.668C78.2188 51.9496 78.8012 51.3672 79.5196 51.3672H82.1212C82.8397 51.3672 83.4221 51.9496 83.4221 52.668V71.5301H78.2188V52.668Z\",\n fill: \"#FFB629\"\n})), _path17 || (_path17 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M69.0707 103.549C67.3802 102.288 65.451 101.383 63.4004 100.89C61.3498 100.397 59.2207 100.326 57.1416 100.68L50.725 98.2814C50.2491 98.096 49.7238 98.0788 49.2368 98.2327C48.7497 98.3867 48.3303 98.7025 48.0473 99.1277C47.9134 99.3508 47.8261 99.5988 47.7908 99.8566C47.7556 100.114 47.7727 100.377 47.8418 100.628C47.9108 100.878 48.0302 101.113 48.1925 101.316C48.3548 101.52 48.5566 101.688 48.7859 101.811L52.3227 103.848L50.8717 103.825C48.5914 103.796 46.3782 103.049 44.5469 101.69L39.4594 97.8537C39.1647 97.6392 38.8207 97.5022 38.4592 97.4556C38.0977 97.4089 37.7303 97.4539 37.3907 97.5865C37.0888 97.6821 36.8167 97.8545 36.6015 98.0868C36.3863 98.3192 36.2357 98.6036 36.1636 98.912C36.0916 99.2204 36.1008 99.5422 36.1907 99.8459C36.2805 100.15 36.4476 100.425 36.6758 100.644L42.7089 106.463C43.8966 107.592 45.2993 108.471 46.8333 109.047C48.3673 109.623 50.0015 109.885 51.6387 109.817L69.6831 109.163L69.0707 103.549Z\",\n fill: \"#B46458\"\n})), _path18 || (_path18 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M104.657 85.0995C96.9777 98.6859 90.622 112.979 85.6775 127.782C85.2695 129.045 85.1818 130.391 85.4228 131.696C85.6638 133.002 86.2256 134.227 87.0578 135.262C90.8717 139.967 99.4037 137.94 102.284 132.921C102.284 132.921 124.25 95.1214 123.021 93.8093C122.734 93.4872 104.657 85.0995 104.657 85.0995Z\",\n fill: \"url(#paint0_linear_614:20297)\"\n})), _path19 || (_path19 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M130.469 80.6016L107.252 83.599C106.12 83.7385 105.086 84.3132 104.37 85.2011C103.654 86.089 103.311 87.2204 103.415 88.3565L117 144.376L166.5 143.876L163.202 88.5152C163.271 87.9372 163.225 87.351 163.066 86.7908C162.908 86.2306 162.641 85.7073 162.28 85.2507C161.919 84.794 161.471 84.4129 160.963 84.1294C160.455 83.846 159.895 83.6659 159.317 83.599L130.469 80.6016Z\",\n fill: \"white\"\n})), _path20 || (_path20 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M141.807 92.865C146.99 108.7 153.141 124.174 160.225 139.195C161.363 141.548 164.678 143.119 167.236 143.372C172.995 143.957 176.35 137.968 174.947 132.473C174.947 132.473 163.026 86.1336 160.589 85.0574C160.2 84.8781 141.807 92.865 141.807 92.865Z\",\n fill: \"url(#paint1_linear_614:20297)\"\n})), _path21 || (_path21 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M121.352 68.0419L122.509 81.6648C122.906 86.4223 125.982 88.753 130.534 88.3248C134.419 87.9442 138.463 85.6922 138.003 81.4898L135.196 60.1445L121.352 68.0419Z\",\n fill: \"#B46458\"\n})), _path22 || (_path22 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M124.615 72.338C116.829 73.004 109.883 67.2163 109.105 60.6827L107.52 46.9964C106.994 43.1192 107.993 39.1899 110.306 36.0342C112.619 32.8784 116.065 30.7423 119.921 30.0757C128.009 28.807 137.016 34.3257 138.285 42.7623L139.379 53.435C139.866 57.8884 138.596 62.3563 135.839 65.887C133.081 69.4177 129.054 71.7322 124.615 72.338Z\",\n fill: \"#B46458\"\n})), _path23 || (_path23 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M134.067 46.2851C126.788 40.6554 130.451 35.8978 130.451 35.8978L135.637 33.8203C152.986 33.8203 141.885 50.6934 141.885 50.6934L139.744 57.8777C139.744 57.8777 138.048 74.2592 121.936 73.609C109.82 73.1174 109.582 62.8411 109.582 62.8411C116.496 58.0202 131.244 61.0493 131.244 61.0493C132.83 58.0521 134.067 46.2851 134.067 46.2851Z\",\n fill: \"#091141\"\n})), _path24 || (_path24 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M131.103 36.6104C123.912 37.0574 116.702 37.1154 109.504 36.7846C109.504 36.7846 101.464 33.7715 104.747 28.8555C107.379 25.0019 113.754 28.1419 113.754 28.1419C113.754 28.1419 113.643 24.1774 116.45 23.0991C119.796 21.7987 129.597 20.7519 137.938 34.0412L131.103 36.6104Z\",\n fill: \"#091141\"\n})), _path25 || (_path25 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M122.381 81.6482L118.068 82.2034C118.068 82.2034 116.149 89.3872 126.124 90.1325C136.527 90.8779 140.634 86.961 142.633 81.9021L131.183 79.6504L122.381 81.6482Z\",\n fill: \"#B46458\"\n})), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 140,\n cy: 51.375,\n r: 4,\n fill: \"#B46458\"\n})), _path26 || (_path26 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M116.782 53.5938L116.734 56.6386L118.669 56.5593\",\n stroke: \"#893B2F\",\n strokeWidth: 0.919783,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n})), _path27 || (_path27 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M112.752 51.5131C112.164 51.5031 111.698 50.7964 111.712 49.9345C111.726 49.0727 112.213 48.3821 112.801 48.3921C113.389 48.4021 113.854 49.1088 113.841 49.9707C113.827 50.8325 113.339 51.5231 112.752 51.5131Z\",\n fill: \"#0A1551\"\n})), _path28 || (_path28 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M123.752 51.5131C123.164 51.5031 122.698 50.7964 122.712 49.9345C122.726 49.0727 123.213 48.3821 123.801 48.3921C124.389 48.4021 124.854 49.1088 124.841 49.9707C124.827 50.8325 124.339 51.5231 123.752 51.5131Z\",\n fill: \"#0A1551\"\n})), _path29 || (_path29 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M124.601 44.4004C124.601 44.4004 121.43 44.4006 121.43 45.7485C121.43 45.7485 121.43 46.6529 124.3 46.5894C127.17 46.526 127.805 46.2723 127.979 45.4001C128.154 44.5279 126.108 44.2894 124.601 44.4004Z\",\n fill: \"#091141\"\n})), _path30 || (_path30 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M112.816 44.8345C112.816 44.8345 115.462 44.7005 115.599 45.9856C115.599 45.9856 115.684 46.8468 113.354 46.8982C111.023 46.9496 110.303 46.6062 110.131 45.9088C109.958 45.2113 111.557 44.7828 112.816 44.8345Z\",\n fill: \"#091141\"\n})), _path31 || (_path31 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M117 64.584L122.555 64.1706C122.555 64.1706 122.799 66.2381 119.921 66.3721C117.043 66.5061 117 64.584 117 64.584Z\",\n fill: \"white\"\n})), _path32 || (_path32 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M93.8821 119.624L67.5011 99.3745L57.7583 113.229L86.5332 135.082C87.561 135.89 88.806 136.372 90.1094 136.467C92.3382 136.604 94.5348 135.882 96.248 134.45C97.9613 133.018 99.0615 130.984 99.3224 128.766C99.5536 126.855 99.145 124.922 98.1607 123.268C97.1764 121.614 95.6719 120.332 93.8821 119.624Z\",\n fill: \"white\"\n})), _path33 || (_path33 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M117.688 135.146L127.688 134.375L127.381 144.375H118.723L117.688 135.146Z\",\n fill: \"#B46458\"\n})), _path34 || (_path34 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M120.5 134.875L121 136.875L122 144.375H97C97.5 139.375 104.5 134.375 109.5 134.375C113.5 134.375 119.5 134.708 120.5 134.875Z\",\n fill: \"#B46458\"\n})), _path35 || (_path35 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M164.171 126.923L125.049 128.096L124.5 144.375L168.5 143.875C169.852 143.693 169.1 144.016 170.236 143.261C171.372 142.505 172.322 141.501 173.012 140.324C173.703 139.148 174.117 137.829 174.223 136.469C174.328 135.109 174.123 133.743 173.623 132.473C172.879 130.636 171.55 129.095 169.84 128.092C168.131 127.088 166.138 126.677 164.171 126.923Z\",\n fill: \"#F4F6FF\"\n})), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint0_linear_614:20297\",\n x1: 96.5,\n y1: 120.875,\n x2: 156.139,\n y2: 53.9192,\n gradientUnits: \"userSpaceOnUse\"\n}, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"white\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#A1A9EE\"\n})), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint1_linear_614:20297\",\n x1: 173.499,\n y1: 142.771,\n x2: 153.836,\n y2: 84.7064,\n gradientUnits: \"userSpaceOnUse\"\n}, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.307292,\n stopColor: \"#F4F6FF\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"white\"\n})))));\nexport default SvgNoReportsIcon;","var _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _path9, _path10, _circle, _path11, _path12, _path13, _path14, _path15, _path16, _path17, _path18, _path19, _path20, _rect, _path21, _path22, _path23, _path24, _path25, _rect2, _rect3, _path26, _path27, _path28, _path29, _path30, _rect4, _rect5, _path31, _path32, _path33, _path34, _path35, _rect6, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgNoApprovalsIcon = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 198 140\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0 97.0607C0 73.4284 19.1578 54.2705 42.7902 54.2705H155.115C178.747 54.2705 197.905 73.4284 197.905 97.0607C197.905 120.693 178.747 139.851 155.115 139.851H42.7902C19.1578 139.851 0 120.693 0 97.0607Z\",\n fill: \"#E6E6F5\"\n})), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M66.0704 99.1741C64.3799 97.9131 62.4507 97.0085 60.4001 96.5154C58.3495 96.0222 56.2203 95.9509 54.1413 96.3054L47.7247 93.9064C47.2488 93.721 46.7235 93.7038 46.2364 93.8577C45.7494 94.0117 45.33 94.3275 45.047 94.7527C44.9131 94.9758 44.8258 95.2238 44.7905 95.4816C44.7553 95.7395 44.7724 96.0017 44.8414 96.2526C44.9105 96.5035 45.0299 96.7377 45.1922 96.9411C45.3545 97.1446 45.5563 97.3129 45.7856 97.436L49.3224 99.4727L47.8714 99.4501C45.5911 99.4212 43.3779 98.6741 41.5466 97.3149L36.4591 93.4787C36.1643 93.2642 35.8204 93.1272 35.4589 93.0806C35.0974 93.0339 34.73 93.0789 34.3904 93.2115C34.0885 93.3071 33.8164 93.4795 33.6012 93.7118C33.386 93.9442 33.2354 94.2286 33.1633 94.537C33.0913 94.8454 33.1005 95.1672 33.1904 95.4709C33.2802 95.7746 33.4472 96.0497 33.6755 96.2692L39.7086 102.088C40.8963 103.217 42.299 104.096 43.833 104.672C45.367 105.248 47.0012 105.51 48.6384 105.442L66.6828 104.788L66.0704 99.1741Z\",\n fill: \"#B46458\"\n})), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M101.657 80.7244C93.9774 94.3108 87.6216 108.604 82.6772 123.407C82.2691 124.67 82.1815 126.015 82.4225 127.321C82.6635 128.627 83.2253 129.852 84.0575 130.887C87.8714 135.592 96.4034 133.565 99.2834 128.546C99.2834 128.546 121.25 90.7463 120.02 89.4342C119.733 89.1121 101.657 80.7244 101.657 80.7244Z\",\n fill: \"url(#paint0_linear_2531_7001)\"\n})), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M127.468 76.2256L104.252 79.223C103.12 79.3625 102.086 79.9372 101.37 80.8251C100.654 81.713 100.311 82.8444 100.414 83.9805L114 140L163.843 139.873L160.202 84.1393C160.27 83.5612 160.224 82.975 160.066 82.4148C159.908 81.8547 159.64 81.3314 159.279 80.8747C158.919 80.418 158.471 80.0369 157.963 79.7534C157.454 79.47 156.895 79.2899 156.317 79.223L127.468 76.2256Z\",\n fill: \"white\"\n})), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M138.807 88.491C143.99 104.326 150.141 119.8 157.225 134.821C158.363 137.174 161.677 138.745 164.236 138.998C169.994 139.583 173.35 133.594 171.946 128.099C171.946 128.099 160.026 81.7595 157.588 80.6834C157.199 80.5041 138.807 88.491 138.807 88.491Z\",\n fill: \"url(#paint1_linear_2531_7001)\"\n})), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M118.351 63.666L119.509 77.2888C119.905 82.0463 122.982 84.377 127.533 83.9488C131.419 83.5682 135.462 81.3163 135.002 77.1138L132.196 55.7686L118.351 63.666Z\",\n fill: \"#B46458\"\n})), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M121.615 67.9639C113.828 68.63 106.882 62.8423 106.105 56.3087L104.519 42.6224C103.994 38.7452 104.993 34.8159 107.306 31.6601C109.619 28.5044 113.065 26.3683 116.92 25.7017C125.008 24.433 134.016 29.9517 135.285 38.3883L136.379 49.0609C136.866 53.5144 135.596 57.9822 132.838 61.513C130.081 65.0437 126.054 67.3582 121.615 67.9639Z\",\n fill: \"#B46458\"\n})), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M131.067 41.9091C123.788 36.2794 127.451 31.5219 127.451 31.5219L132.637 29.4443C149.986 29.4443 138.885 46.3174 138.885 46.3174L136.744 53.5017C136.744 53.5017 135.047 69.8832 118.935 69.233C106.819 68.7414 106.582 58.4651 106.582 58.4651C113.496 53.6442 128.244 56.6733 128.244 56.6733C129.83 53.6761 131.067 41.9091 131.067 41.9091Z\",\n fill: \"#091141\"\n})), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M128.103 32.2354C120.912 32.6824 113.701 32.7404 106.504 32.4096C106.504 32.4096 98.4636 29.3965 101.746 24.4805C104.379 20.6269 110.754 23.7669 110.754 23.7669C110.754 23.7669 110.643 19.8024 113.45 18.7241C116.796 17.4237 126.596 16.3769 134.938 29.6662L128.103 32.2354Z\",\n fill: \"#091141\"\n})), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M119.381 77.2732L115.068 77.8284C115.068 77.8284 113.149 85.0122 123.124 85.7575C133.527 86.5029 137.634 82.586 139.632 77.5271L128.183 75.2754L119.381 77.2732Z\",\n fill: \"#B46458\"\n})), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 137,\n cy: 47,\n r: 4,\n fill: \"#B46458\"\n})), _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M113.782 49.2178L113.734 52.2626L115.669 52.1833\",\n stroke: \"#893B2F\",\n strokeWidth: 0.919783,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n})), _path12 || (_path12 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M109.751 47.1391C109.164 47.1291 108.698 46.4224 108.712 45.5605C108.725 44.6987 109.213 44.0081 109.801 44.0181C110.388 44.028 110.854 44.7348 110.84 45.5966C110.827 46.4585 110.339 47.1491 109.751 47.1391Z\",\n fill: \"#0A1551\"\n})), _path13 || (_path13 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M120.751 47.1391C120.164 47.1291 119.698 46.4224 119.712 45.5605C119.725 44.6987 120.213 44.0081 120.801 44.0181C121.388 44.028 121.854 44.7348 121.84 45.5966C121.827 46.4585 121.339 47.1491 120.751 47.1391Z\",\n fill: \"#0A1551\"\n})), _path14 || (_path14 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M121.601 40.0254C121.601 40.0254 118.429 40.0256 118.429 41.3735C118.429 41.3735 118.429 42.2779 121.3 42.2144C124.17 42.151 124.804 41.8973 124.979 41.0251C125.153 40.1529 123.108 39.9144 121.601 40.0254Z\",\n fill: \"#091141\"\n})), _path15 || (_path15 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M109.815 40.4595C109.815 40.4595 112.462 40.3255 112.598 41.6106C112.598 41.6106 112.683 42.4718 110.353 42.5232C108.023 42.5746 107.303 42.2312 107.13 41.5338C106.958 40.8363 108.557 40.4078 109.815 40.4595Z\",\n fill: \"#091141\"\n})), _path16 || (_path16 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M114 60.2094L119.555 59.796C119.555 59.796 119.799 61.8636 116.921 61.9976C114.043 62.1316 114 60.2094 114 60.2094Z\",\n fill: \"white\"\n})), _path17 || (_path17 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M90.8818 115.25L64.5008 95L54.758 108.855L83.5329 130.708C84.5607 131.515 85.8057 131.997 87.1091 132.093C89.3379 132.229 91.5345 131.507 93.2477 130.075C94.961 128.643 96.0612 126.609 96.3221 124.391C96.5533 122.481 96.1447 120.547 95.1604 118.893C94.1761 117.239 92.6716 115.958 90.8818 115.25Z\",\n fill: \"white\"\n})), _path18 || (_path18 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M114.687 130.771L124.687 130L124.381 140H115.722L114.687 130.771Z\",\n fill: \"#B46458\"\n})), _path19 || (_path19 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M117.5 130.5L118 132.5L119 140H93.9998C94.4998 135 101.5 130 106.5 130C110.5 130 116.5 130.333 117.5 130.5Z\",\n fill: \"#B46458\"\n})), _path20 || (_path20 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M161.171 122.548L122.049 123.721L121.5 140L165.5 139.5C166.852 139.318 166.1 139.641 167.236 138.886C168.372 138.13 169.322 137.126 170.012 135.949C170.703 134.773 171.117 133.454 171.223 132.094C171.328 130.734 171.123 129.368 170.623 128.098C169.879 126.261 168.55 124.72 166.84 123.717C165.131 122.713 163.138 122.302 161.171 122.548Z\",\n fill: \"#F4F6FF\"\n})), _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n x: 34.5,\n y: 0.5,\n width: 29.0625,\n height: 36,\n rx: 5.28125,\n fill: \"white\",\n stroke: \"#C8CEED\"\n})), _path21 || (_path21 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M49.0309 11.1233V14.4454M49.0309 14.4454H42.4965C41.7302 14.4454 41.109 15.0666 41.109 15.8329V16.3619M49.0309 14.4454H55.3097C56.076 14.4454 56.6972 15.0666 56.6972 15.8329V16.3619\",\n stroke: \"#97ACDA\",\n strokeWidth: 1.73438\n})), _path22 || (_path22 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M49.0309 27.0568L49.0309 23.2622M49.0309 23.2622L42.4965 23.2622C41.7302 23.2622 41.109 22.641 41.109 21.8747L41.109 21.3456M49.0309 23.2622L55.3097 23.2622C56.076 23.2622 56.6972 22.641 56.6972 21.8747L56.6972 21.3456\",\n stroke: \"#97ACDA\",\n strokeWidth: 1.73438\n})), _path23 || (_path23 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M36.2537 18.7898C36.2537 17.3785 37.3978 16.2344 38.8091 16.2344H43.92C45.3313 16.2344 46.4754 17.3785 46.4754 18.7898C46.4754 20.2011 45.3313 21.3452 43.92 21.3452H38.8091C37.3978 21.3452 36.2537 20.2011 36.2537 18.7898Z\",\n fill: \"#FFB629\"\n})), _path24 || (_path24 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M51.5851 18.7898C51.5851 17.3785 52.7292 16.2344 54.1406 16.2344H59.2515C60.6628 16.2344 61.8069 17.3785 61.8069 18.7898C61.8069 20.2011 60.6628 21.3452 59.2515 21.3452H54.1406C52.7292 21.3452 51.5851 20.2011 51.5851 18.7898Z\",\n fill: \"#FFB629\"\n})), _path25 || (_path25 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M43.9205 29.6121C43.9205 28.2008 45.0646 27.0567 46.4759 27.0567H51.5868C52.9981 27.0567 54.1422 28.2008 54.1422 29.6121C54.1422 31.0234 52.9981 32.1675 51.5868 32.1675H46.4759C45.0646 32.1675 43.9205 31.0234 43.9205 29.6121Z\",\n fill: \"#0099FF\"\n})), _rect2 || (_rect2 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 43.9206,\n y: 6.01276,\n width: 10.2218,\n height: 5.11088,\n rx: 2.55544,\n fill: \"#FF6100\"\n})), _rect3 || (_rect3 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 15.5,\n y: 40.5,\n width: 29.0625,\n height: 36,\n rx: 5.28125,\n fill: \"white\",\n stroke: \"#C8CEED\"\n})), _path26 || (_path26 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M30.0309 51.1233V54.4454M30.0309 54.4454H23.4965C22.7302 54.4454 22.109 55.0666 22.109 55.8329V56.3619M30.0309 54.4454H36.3097C37.076 54.4454 37.6972 55.0666 37.6972 55.8329V56.3619\",\n stroke: \"#97ACDA\",\n strokeWidth: 1.73438\n})), _path27 || (_path27 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M30.0309 67.0568L30.0309 63.2622M30.0309 63.2622L23.4965 63.2622C22.7302 63.2622 22.109 62.641 22.109 61.8747L22.109 61.3456M30.0309 63.2622L36.3097 63.2622C37.076 63.2622 37.6972 62.641 37.6972 61.8747L37.6972 61.3456\",\n stroke: \"#97ACDA\",\n strokeWidth: 1.73438\n})), _path28 || (_path28 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.2537 58.7898C17.2537 57.3785 18.3978 56.2344 19.8091 56.2344H24.92C26.3313 56.2344 27.4754 57.3785 27.4754 58.7898C27.4754 60.2011 26.3313 61.3452 24.92 61.3452H19.8091C18.3978 61.3452 17.2537 60.2011 17.2537 58.7898Z\",\n fill: \"#FFB629\"\n})), _path29 || (_path29 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32.5851 58.7898C32.5851 57.3785 33.7292 56.2344 35.1406 56.2344H40.2515C41.6628 56.2344 42.8069 57.3785 42.8069 58.7898C42.8069 60.2011 41.6628 61.3452 40.2515 61.3452H35.1406C33.7292 61.3452 32.5851 60.2011 32.5851 58.7898Z\",\n fill: \"#FFB629\"\n})), _path30 || (_path30 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.9205 69.6121C24.9205 68.2008 26.0646 67.0567 27.4759 67.0567H32.5868C33.9981 67.0567 35.1422 68.2008 35.1422 69.6121C35.1422 71.0234 33.9981 72.1675 32.5868 72.1675H27.4759C26.0646 72.1675 24.9205 71.0234 24.9205 69.6121Z\",\n fill: \"#0099FF\"\n})), _rect4 || (_rect4 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 24.9206,\n y: 46.0128,\n width: 10.2218,\n height: 5.11088,\n rx: 2.55544,\n fill: \"#FF6100\"\n})), _rect5 || (_rect5 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 54.5,\n y: 40.5,\n width: 29.0625,\n height: 36,\n rx: 5.28125,\n fill: \"white\",\n stroke: \"#C8CEED\"\n})), _path31 || (_path31 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M69.0309 51.1233V54.4454M69.0309 54.4454H62.4965C61.7302 54.4454 61.109 55.0666 61.109 55.8329V56.3619M69.0309 54.4454H75.3097C76.076 54.4454 76.6972 55.0666 76.6972 55.8329V56.3619\",\n stroke: \"#97ACDA\",\n strokeWidth: 1.73438\n})), _path32 || (_path32 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M69.0309 67.0568L69.0309 63.2622M69.0309 63.2622L62.4965 63.2622C61.7302 63.2622 61.109 62.641 61.109 61.8747L61.109 61.3456M69.0309 63.2622L75.3097 63.2622C76.076 63.2622 76.6972 62.641 76.6972 61.8747L76.6972 61.3456\",\n stroke: \"#97ACDA\",\n strokeWidth: 1.73438\n})), _path33 || (_path33 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M56.2537 58.7898C56.2537 57.3785 57.3978 56.2344 58.8091 56.2344H63.92C65.3313 56.2344 66.4754 57.3785 66.4754 58.7898C66.4754 60.2011 65.3313 61.3452 63.92 61.3452H58.8091C57.3978 61.3452 56.2537 60.2011 56.2537 58.7898Z\",\n fill: \"#FFB629\"\n})), _path34 || (_path34 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M71.5851 58.7898C71.5851 57.3785 72.7292 56.2344 74.1406 56.2344H79.2515C80.6628 56.2344 81.8069 57.3785 81.8069 58.7898C81.8069 60.2011 80.6628 61.3452 79.2515 61.3452H74.1406C72.7292 61.3452 71.5851 60.2011 71.5851 58.7898Z\",\n fill: \"#FFB629\"\n})), _path35 || (_path35 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M63.9205 69.6121C63.9205 68.2008 65.0646 67.0567 66.4759 67.0567H71.5868C72.9981 67.0567 74.1422 68.2008 74.1422 69.6121C74.1422 71.0234 72.9981 72.1675 71.5868 72.1675H66.4759C65.0646 72.1675 63.9205 71.0234 63.9205 69.6121Z\",\n fill: \"#0099FF\"\n})), _rect6 || (_rect6 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 63.9206,\n y: 46.0128,\n width: 10.2218,\n height: 5.11088,\n rx: 2.55544,\n fill: \"#FF6100\"\n})), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint0_linear_2531_7001\",\n x1: 93.4997,\n y1: 116.5,\n x2: 153.138,\n y2: 49.5441,\n gradientUnits: \"userSpaceOnUse\"\n}, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"white\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#A1A9EE\"\n})), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint1_linear_2531_7001\",\n x1: 170.498,\n y1: 138.397,\n x2: 150.836,\n y2: 80.3324,\n gradientUnits: \"userSpaceOnUse\"\n}, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.307292,\n stopColor: \"#F4F6FF\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"white\"\n})))));\nexport default SvgNoApprovalsIcon;","var _path, _g, _g2, _g3, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _g4, _path9, _path10, _path11, _path12, _g5, _path13, _path14, _path15, _path16, _path17, _path18, _path19, _g6, _path20, _path21, _path22, _path23, _g7, _path24, _path25, _path26, _path27, _path28, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgNoSignDocumentsIcon = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 199 145\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M.284 102.074c0-23.195 19.167-42 42.81-42h112.379c23.644 0 42.811 18.805 42.811 42 0 23.196-19.167 42-42.811 42H43.095c-23.644 0-42.811-18.804-42.811-42Z\",\n fill: \"#E6E6F5\"\n})), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#a)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M38.964 35.597V9.019a4.983 4.983 0 0 1 4.984-4.983h16.267a.83.83 0 0 1 .587.243l3.91 3.91 3.909 3.909a.83.83 0 0 1 .243.587v22.912a4.983 4.983 0 0 1-4.983 4.983H43.948a4.983 4.983 0 0 1-4.984-4.983Z\",\n fill: \"#fff\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M44.778 19.218c0-1.046.848-1.893 1.894-1.893h14.485a1.894 1.894 0 0 1 0 3.787H46.672a1.894 1.894 0 0 1-1.894-1.894Z\",\n fill: \"#09F\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M44.778 25.73c0-1.046.848-1.894 1.894-1.894h14.485a1.894 1.894 0 0 1 0 3.787H46.672a1.894 1.894 0 0 1-1.894-1.893Z\",\n fill: \"#FF6100\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M49.44 32.443c0-.122-.047-.098-.116-.096-.093.002-1.836 1.086-1.836 1.086s-.762.328-.967.494c-1.192 1.15-1.592.166-1.662 0-.236-.56.079-1.068.47-1.484.203-.164 1.191-1.008 2.253-1.514.547-.26 1.016-.543 1.65-.557.25-.025.977-.098 1.44.233.346.245.378 1.144.448 1.306.129.303.228.372.228.954 0 .284-.534 1.22-.673 1.884.067-.038.567-.202.867-.3.435-.142.687-.12 1.125-.327l.342-.162c1.737-.824 4.308-1.694 5.061-1.914.22-.064 1.18-.176 1.74.22.516.366.78 1.422.78 1.422s.05.239.705 0v1.517c-.362-.109-.638-.123-.853-.281-.467-.492-.744-1.227-.964-1.163-1.481.434-2.16.996-5.484 2.143-.662.228-1.142.596-1.66.68-.725.12-1.273.24-1.85.183-.41-.041-.574-.145-.831-.396-.346-.339-.282-.702-.42-1.166-.148-.491-.32-.772-.304-1.278.015-.423.303-1.062.303-1.062s.209-.3.209-.422Z\",\n fill: \"#FFB629\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M38.964 9.019a4.983 4.983 0 0 1 4.984-4.983h17.441a.83.83 0 0 1 .588.243l6.644 6.644a.83.83 0 0 1 .243.588v24.086a4.983 4.983 0 0 1-4.983 4.983H43.948a4.983 4.983 0 0 1-4.984-4.983V9.019Zm4.984-3.322a3.322 3.322 0 0 0-3.322 3.322v26.578a3.322 3.322 0 0 0 3.322 3.322H63.88a3.322 3.322 0 0 0 3.322-3.322V12.34H63.05A2.492 2.492 0 0 1 60.56 9.85V5.697H43.948Z\",\n fill: \"#C8CEED\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M71.934 23.239a1.387 1.387 0 0 0-1.962 0l-3.55 3.55-4.532 4.532-.745 2.98a.694.694 0 0 0 .84.841l2.98-.745 4.532-4.531 3.551-3.551a1.387 1.387 0 0 0 0-1.962l-1.114-1.114Z\",\n fill: \"#0A1551\"\n}))), _g2 || (_g2 = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#b)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.03 75.463V48.886a4.983 4.983 0 0 1 4.984-4.984h16.267a.83.83 0 0 1 .588.244l3.91 3.91 3.909 3.909a.83.83 0 0 1 .243.587v22.911a4.983 4.983 0 0 1-4.983 4.984H24.014a4.983 4.983 0 0 1-4.983-4.984Z\",\n fill: \"#fff\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.845 59.085c0-1.046.848-1.894 1.893-1.894h14.485a1.894 1.894 0 1 1 0 3.787H26.738a1.894 1.894 0 0 1-1.893-1.893Z\",\n fill: \"#09F\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.845 65.596c0-1.046.848-1.893 1.893-1.893h14.485a1.894 1.894 0 1 1 0 3.787H26.738a1.894 1.894 0 0 1-1.893-1.894Z\",\n fill: \"#FF6100\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M29.507 72.31c0-.123-.047-.098-.117-.096-.093.002-1.835 1.086-1.835 1.086s-.762.328-.968.494c-1.191 1.15-1.59.166-1.66 0-.237-.56.078-1.068.469-1.485.203-.164 1.19-1.007 2.253-1.513.546-.26 1.016-.543 1.65-.557.249-.025.976-.098 1.44.232.345.245.378 1.144.447 1.307.13.302.228.372.228.954 0 .284-.534 1.22-.673 1.884.068-.038.567-.202.868-.3.435-.142.686-.12 1.125-.327l.341-.162c1.738-.825 4.309-1.694 5.062-1.914.22-.065 1.18-.176 1.739.22.517.366.781 1.421.781 1.421s.05.24.705 0v1.518c-.362-.109-.638-.124-.853-.282-.467-.491-.745-1.227-.964-1.162-1.481.434-2.16.996-5.484 2.142-.663.229-1.143.597-1.66.681-.726.12-1.274.24-1.85.183-.41-.041-.574-.145-.831-.397-.346-.338-.282-.701-.421-1.165-.147-.492-.32-.772-.303-1.278.014-.424.303-1.062.303-1.062s.208-.3.208-.423Z\",\n fill: \"#FFB629\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M19.031 48.886a4.983 4.983 0 0 1 4.983-4.984h17.442a.83.83 0 0 1 .587.244l6.645 6.644a.83.83 0 0 1 .243.587v24.086a4.983 4.983 0 0 1-4.983 4.984H24.014a4.983 4.983 0 0 1-4.983-4.984V48.886Zm4.983-3.323a3.322 3.322 0 0 0-3.322 3.323v26.577a3.322 3.322 0 0 0 3.322 3.323h19.934a3.322 3.322 0 0 0 3.322-3.323V52.209h-4.153a2.492 2.492 0 0 1-2.492-2.492v-4.153h-16.61Z\",\n fill: \"#C8CEED\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M52 63.105a1.387 1.387 0 0 0-1.961 0l-3.551 3.551-4.532 4.532-.745 2.98a.693.693 0 0 0 .841.84l2.98-.744 4.532-4.532 3.55-3.55a1.387 1.387 0 0 0 0-1.962L52 63.106Z\",\n fill: \"#0A1551\"\n}))), _g3 || (_g3 = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#c)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M58.898 75.463V48.886a4.983 4.983 0 0 1 4.983-4.984h16.267a.83.83 0 0 1 .587.244l3.91 3.91 3.91 3.909a.83.83 0 0 1 .243.587v22.911a4.983 4.983 0 0 1-4.984 4.984H63.881a4.983 4.983 0 0 1-4.983-4.984Z\",\n fill: \"#fff\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M64.711 59.085c0-1.046.848-1.894 1.894-1.894H81.09a1.894 1.894 0 1 1 0 3.787H66.605a1.894 1.894 0 0 1-1.894-1.893Z\",\n fill: \"#09F\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M64.711 65.596c0-1.046.848-1.893 1.894-1.893H81.09a1.894 1.894 0 1 1 0 3.787H66.605a1.894 1.894 0 0 1-1.894-1.894Z\",\n fill: \"#FF6100\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M69.374 72.31c0-.123-.047-.098-.117-.096-.093.002-1.836 1.086-1.836 1.086s-.762.328-.967.494c-1.191 1.15-1.591.166-1.661 0-.236-.56.078-1.068.47-1.485.203-.164 1.19-1.007 2.252-1.513.547-.26 1.017-.543 1.65-.557.25-.025.977-.098 1.441.232.345.245.378 1.144.447 1.307.13.302.228.372.228.954 0 .284-.534 1.22-.673 1.884.068-.038.567-.202.868-.3.435-.142.686-.12 1.124-.327l.342-.162c1.737-.825 4.309-1.694 5.061-1.914.221-.065 1.181-.176 1.74.22.516.366.78 1.421.78 1.421s.05.24.705 0v1.518c-.361-.109-.637-.124-.852-.282-.467-.491-.745-1.227-.964-1.162-1.482.434-2.161.996-5.484 2.142-.663.229-1.143.597-1.66.681-.726.12-1.274.24-1.85.183-.41-.041-.575-.145-.832-.397-.346-.338-.281-.701-.42-1.165-.148-.492-.32-.772-.303-1.278.014-.424.303-1.062.303-1.062s.208-.3.208-.423Z\",\n fill: \"#FFB629\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M58.898 48.886a4.983 4.983 0 0 1 4.983-4.984h17.442a.83.83 0 0 1 .587.244l6.644 6.644a.83.83 0 0 1 .244.587v24.086a4.983 4.983 0 0 1-4.984 4.984H63.881a4.983 4.983 0 0 1-4.983-4.984V48.886Zm4.983-3.323a3.322 3.322 0 0 0-3.322 3.323v26.577a3.322 3.322 0 0 0 3.322 3.323h19.933a3.322 3.322 0 0 0 3.323-3.323V52.209h-4.153a2.492 2.492 0 0 1-2.492-2.492v-4.153H63.881Z\",\n fill: \"#C8CEED\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M91.867 63.105a1.387 1.387 0 0 0-1.961 0l-3.551 3.551-4.532 4.532-.745 2.98a.693.693 0 0 0 .841.84l2.98-.744 4.531-4.532 3.551-3.55a1.387 1.387 0 0 0 0-1.962l-1.114-1.114Z\",\n fill: \"#0A1551\"\n}))), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"d\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 0,\n y: 58,\n width: 199,\n height: 86\n}, _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M.284 101.135c0-23.632 19.158-42.79 42.79-42.79H155.4c23.632 0 42.79 19.158 42.79 42.79 0 23.633-19.158 42.791-42.79 42.791H43.074c-23.632 0-42.79-19.158-42.79-42.791Z\",\n fill: \"#F3F3FE\"\n}))), /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#d)\"\n}, _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M115.62 81.621C107.186 92.26 100.284 99.12 94.915 102.2c-8.054 4.623-8.643-.235-38.14-20.744-2.052-.862-3.715-1.091-6.495 2-1.662 1.848-5.236 2.334-10.721 1.459a1.014 1.014 0 0 0-1.16.836c-.045.274.025.553.193.773 1.35 1.769 3.686 2.733 7.009 2.893 6.592.317 7.3-2.157 11.01.758 3.709 2.914 23.583 26.213 35.57 26.791 11.985.579 27.733-17.227 32.188-18.599 2.97-.915 5.393-8.141 7.268-21.679l-16.017 4.933Z\",\n fill: \"#CD7448\"\n})), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M59.239 93.755c3.27-3.123 5.253-5.846 5.949-8.171 14.628 10.93 22.907 16.095 24.837 15.496 2.647-.82 24.004-20.018 31.425-24.56.673-.672.721 5.077 1.257 4.458l-2.407 22.315c-8.667 6.202-14.189 10.023-16.566 11.462-3.565 2.16-12.921 6.116-21.371-.754-5.633-4.58-13.341-11.329-23.124-20.246Z\",\n fill: \"#F4F5FE\"\n})), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M110.922 118.248c1.348 4.697 1.348 10.59 0 21.326l49.541-7.234-3.033-40.263c-2.022-6.71-4.381-11.408-7.077-14.093-4.045-4.026-25.277-2.013-30.332 0-5.055 2.014-6.066 11.073-11.121 19.126-5.056 8.052 0 14.092 2.022 21.138Z\",\n fill: \"#fff\"\n})), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M142.265 75.853c-2.023 16.47-7.705 24.705-17.047 24.705-14.014 0-10.728-7.372-8.973-10.829 1.169-2.304 2.456-6.406 3.859-12.304 4.821-1.539 8.501-2.398 11.039-2.578 2.538-.18 6.245.155 11.122 1.006Z\",\n fill: \"#CD7448\"\n})), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"e\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 51,\n y: 3,\n width: 110,\n height: 93\n}, _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M51.572 3.074h109.353v92.713H51.572V3.074Z\",\n fill: \"#C4C4C4\"\n}))), /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#e)\"\n}, /*#__PURE__*/React.createElement(\"mask\", {\n id: \"f\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 106,\n y: 75,\n width: 59,\n height: 92\n}, _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M110.921 142.24c1.348-10.737 1.348-19.295 0-23.992-2.022-7.046-7.077-13.086-2.022-21.138 5.055-8.053 6.066-17.112 11.122-19.125 5.055-2.013 26.287-4.027 30.331 0 2.696 2.684 5.055 7.381 7.077 14.092l3.034 40.263c4.718 18.119 5.392 29.191 2.022 33.217-5.056 6.04-7.078-10.065-29.321-19.125-4.718-2.013-12.132-2.85-22.243-4.192Z\",\n fill: \"#fff\"\n}))), _g4 || (_g4 = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#f)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M110.921 142.238c1.349-10.736 1.349-18.454 0-23.151-2.022-7.046-7.077-13.086-2.022-21.138 5.056-8.053 5.783-17.823 10.838-19.836 5.055-2.013 25.832-4.914 29.876-.888 2.697 2.684 5.795 8.98 7.817 15.69v13.611l3.033 26.653c4.718 18.119 5.392 29.191 2.022 33.217-5.055 6.04-7.077-10.065-29.32-19.125-4.719-2.013-12.133-3.691-22.244-5.033Z\",\n fill: \"#fff\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M142.264 75.853c-2.022 16.47-7.705 24.705-17.047 24.705-14.014 0-10.728-7.372-8.973-10.829 1.17-2.304 2.456-6.406 3.859-12.304 4.821-1.539 8.501-2.398 11.039-2.578 2.539-.18 6.246.155 11.122 1.006Z\",\n fill: \"#CD7448\"\n}))), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M114.104 37.017c-3.39 14.435-4.542 16.131-5.802 19.302a2.149 2.149 0 0 0 .438 2.293c4.8 4.955 11.22 6.503 19.261 4.644 8.566-1.98 8.525-4.956 3.217-29.137l-17.114 2.898Z\",\n fill: \"#0A1551\"\n})), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M136.569 57.7c-1.661 12.972 3.905 17.523 5.814 17.555 1.91.033-5.401 8.024-19.033 20.81-4.46-8.599-4.959-16.267-3.566-18.49 2.09-3.336 4.029-.483 3.313-12.162-.471-7.671 9.73-6.942 16.997-8.187-3.525.473-9.282.592-3.525.473Z\",\n fill: \"#CD7448\"\n})), _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.677,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M122.596 60.225c.792 7.227.769 11.213.688 11.85-.122.953 17.282.148 12.312-15.173-4.971-15.321-6.633 1.805-13 3.323Z\",\n fill: \"#BD5826\"\n})), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"g\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 113,\n y: 28,\n width: 38,\n height: 43\n}, _path12 || (_path12 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M145.376 60.748c-4.575 6.114-10.956 9.468-19.143 10.065-8.313.605-13.862-10.235-12.793-21.364.511-5.31 1.687-9.997 6.363-14.826 9.65-9.969 18.717-8.652 27.2 3.949l3.662 9.772-5.289 12.404Z\",\n fill: \"#fff\"\n}))), _g5 || (_g5 = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#g)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M144.251 59.875c-5.109 5.677-11.769 8.445-19.978 8.303-8.336-.143-12.887-11.435-10.817-22.42.988-5.242 2.582-9.804 7.676-14.193 10.513-9.06 19.426-6.935 26.74 6.374L150.639 48l-6.388 11.876Z\",\n fill: \"#CD7448\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.423,\n d: \"M132.055 60.09c-2.695-.417-4.642-2.252-4.348-4.1.294-1.848 2.718-3.008 5.413-2.591 2.696.416 4.642 2.252 4.348 4.1-.294 1.847-2.718 3.007-5.413 2.59Z\",\n fill: \"#A44616\"\n}))), _path13 || (_path13 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M125.862 59.677c-2.118.905-4.618.438-7.5-1.4 1.356 3.851 2.898 5.604 4.624 5.258 1.726-.347 2.685-1.632 2.876-3.858Z\",\n fill: \"#A5330A\"\n})), _path14 || (_path14 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M127.222 42.163c-7.822-1.3-11.005-1.905-13.711-4.047.156-10.06 8.433-15.98 12.27-16.877 8.871-2.163 18.502.543 24.413 8.327a15.038 15.038 0 0 1 1.478 2.364c.233.374.462.792.689 1.257 3.699 10.657 5.645 26.207 4.589 31.967-2.957 3.8-26.689 4.62-23.717-.144.166-.266.351-.541.548-.835 1.396-2.08 3.387-5.045 3.369-11.71-.005-1.613-.471-3.5-.997-5.629-.177-.72-.362-1.467-.538-2.24a585.3 585.3 0 0 0-1.197-.417c-1.691-.588-2.986-1.038-3.79-1.386-.88-.381-.04-2.924.562-4.75.527-1.594.872-2.64-.265-1.224-1.466 1.826-2.026 3.254-2.301 4.374-.156.637-.755 1.077-1.402.97Z\",\n fill: \"#0A1551\"\n})), _path15 || (_path15 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M115.449 142.435c5.328-2.997 29.268 3.735 47.508-2.946 10.001-3.664 2.348-24.999-1.821-42.89-2.639-9.902-7.007-16.464-10.989-18.892l-8.662 6.374 2.205 11.873s-1.37 4.311 1.517 12.142c2.888 7.832 7.375 17.68 7.375 17.68l-42.925 9.005c.155 3.55 1.528 10.051 5.792 7.654Z\",\n fill: \"#fff\"\n}))), _path16 || (_path16 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M121.161 140.978c-2.093 1.666-3.098 1.719-5.599 3.641-2.013.964-3.499 1.378-7.866.074-2.619-.782-6.321-.982-11.104-.601a1.007 1.007 0 0 1-.948-1.515c1.216-2.045 3.583-3.241 7.103-3.591 6.58-.652 7.399 1.778 10.978-1.318 2.386-2.064 4.865-.961 7.436 3.31Z\",\n fill: \"#CD7448\"\n})), _path17 || (_path17 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M117.167 144.445c10.617-.871 29.269 3.735 47.509-2.946 10.001-3.664 2.348-24.999-1.822-42.89-2.638-9.902-7.006-16.464-10.989-18.892l-8.662 6.374 2.206 11.873s-1.371 4.311 1.517 12.142c2.887 7.832 7.374 17.68 7.374 17.68l-42.924 9.005c.154 3.55-1.092 7.283 5.791 7.654Z\",\n fill: \"url(#h)\"\n}))), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"i\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 96,\n y: 18,\n width: 65,\n height: 79\n}, _path18 || (_path18 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M96.284 18.075h64v78h-64v-78Z\",\n fill: \"#C4C4C4\"\n}))), /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#i)\"\n}, /*#__PURE__*/React.createElement(\"mask\", {\n id: \"j\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 106,\n y: 75,\n width: 59,\n height: 92\n}, _path19 || (_path19 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M110.633 142.24c1.348-10.737 1.348-19.295 0-23.992-2.022-7.046-7.078-13.086-2.022-21.138 5.055-8.053 6.066-17.112 11.121-19.125 5.055-2.013 26.287-4.027 30.332 0 2.696 2.684 5.055 7.381 7.077 14.092l3.033 40.263c4.718 18.119 5.392 29.191 2.022 33.217-5.055 6.04-7.077-10.065-29.32-19.125-4.719-2.013-12.133-2.85-22.243-4.192Z\",\n fill: \"#fff\"\n}))), _g6 || (_g6 = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#j)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M110.633 142.238c1.348-10.736 1.348-18.454 0-23.151-2.022-7.046-7.077-13.086-2.022-21.138 5.055-8.053 5.782-17.823 10.837-19.836 5.056-2.013 25.833-4.914 29.877-.888 2.696 2.684 5.794 8.98 7.816 15.69v13.611l3.033 26.653c4.718 18.119 5.393 29.191 2.022 33.217-5.055 6.04-7.077-10.065-29.32-19.125-4.718-2.013-12.133-3.691-22.243-5.033Z\",\n fill: \"#fff\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M141.975 75.853c-2.022 16.47-7.704 24.705-17.047 24.705-14.013 0-10.728-7.372-8.973-10.829 1.17-2.304 2.456-6.406 3.859-12.304 4.822-1.539 8.501-2.398 11.04-2.578 2.538-.18 6.245.155 11.121 1.006Z\",\n fill: \"#CD7448\"\n}))), _path20 || (_path20 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M113.815 37.017c-3.39 14.435-4.541 16.131-5.802 19.302a2.15 2.15 0 0 0 .438 2.293c4.8 4.955 11.221 6.503 19.262 4.644 8.565-1.98 8.525-4.956 3.216-29.137l-17.114 2.898Z\",\n fill: \"#0A1551\"\n})), _path21 || (_path21 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M136.28 57.7c-1.66 12.972 3.905 17.523 5.815 17.555 1.909.033-5.402 8.024-19.033 20.81-4.461-8.599-4.96-16.267-3.567-18.49 2.09-3.336 4.029-.483 3.313-12.162-.47-7.671 9.731-6.942 16.998-8.187-3.526.473-9.282.592-3.526.473Z\",\n fill: \"#CD7448\"\n})), _path22 || (_path22 = /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.677,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M122.308 60.225c.792 7.227.769 11.213.687 11.85-.122.953 17.282.148 12.312-15.173-4.97-15.321-6.632 1.805-12.999 3.323Z\",\n fill: \"#BD5826\"\n})), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"k\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 113,\n y: 28,\n width: 38,\n height: 43\n}, _path23 || (_path23 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M145.088 60.748c-4.576 6.114-10.957 9.468-19.143 10.065-8.314.605-13.863-10.235-12.793-21.364.51-5.31 1.686-9.997 6.362-14.826 9.651-9.969 18.717-8.652 27.2 3.949l3.662 9.772-5.288 12.404Z\",\n fill: \"#fff\"\n}))), _g7 || (_g7 = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#k)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M143.963 59.875c-5.11 5.677-11.769 8.445-19.978 8.303-8.337-.143-12.887-11.435-10.817-22.42.987-5.242 2.582-9.804 7.675-14.193 10.513-9.06 19.427-6.935 26.74 6.374L150.35 48l-6.387 11.876Z\",\n fill: \"#CD7448\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M129.189 44.53c1.203.587 2.055 1.53 2.483 2.24a.594.594 0 1 1-1.017.613c-.329-.544-1.02-1.313-1.987-1.785-.945-.462-2.165-.649-3.626-.044a.595.595 0 0 1-.456-1.098c1.802-.746 3.379-.525 4.603.074ZM117.728 42.555a3.335 3.335 0 0 0-2.266.715.594.594 0 1 0 .746.927c.318-.256.829-.49 1.455-.455.615.034 1.415.33 2.313 1.268a.594.594 0 1 0 .858-.821c-1.063-1.11-2.133-1.58-3.106-1.634Z\",\n fill: \"#37120C\",\n fillOpacity: 0.25\n}), /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.423,\n d: \"M131.766 60.09c-2.695-.417-4.641-2.252-4.347-4.1.294-1.848 2.717-3.008 5.413-2.591 2.695.416 4.642 2.252 4.347 4.1-.294 1.847-2.717 3.007-5.413 2.59ZM110.248 55.63c-2.648-.673-4.48-2.7-4.092-4.53.388-1.828 2.848-2.765 5.496-2.093 2.648.673 4.48 2.7 4.092 4.53-.388 1.828-2.848 2.766-5.496 2.093Z\",\n fill: \"#A44616\"\n}))), _path24 || (_path24 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M125.574 59.677c-2.119.905-4.619.438-7.501-1.4 1.357 3.851 2.898 5.604 4.624 5.258 1.726-.347 2.685-1.632 2.877-3.858Z\",\n fill: \"#A5330A\"\n})), _path25 || (_path25 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M126.583 50.275c-.558-.01-1-.68-.987-1.499.013-.818.476-1.474 1.034-1.464.558.01 1 .68.987 1.499-.013.818-.475 1.473-1.034 1.464ZM117.984 48.723c-.558-.01-1-.68-.987-1.498.013-.818.475-1.474 1.033-1.465.558.01 1 .68.987 1.499-.013.818-.475 1.474-1.033 1.464Z\",\n fill: \"#321907\"\n})), _path26 || (_path26 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M122.999 47.67a.358.358 0 0 0-.5.071c-.982 1.304-1.621 1.939-2.222 2.378-.302.22-.601.397-.943.587l-.291.16c-.267.145-.562.306-.891.5-1.157.681-1.326 2.25-.802 3.413.271.6.736 1.135 1.394 1.442.661.308 1.483.371 2.434.084a.356.356 0 1 0-.209-.681c-.809.244-1.446.175-1.923-.048a2.156 2.156 0 0 1-1.044-1.087c-.437-.971-.215-2.08.514-2.51.319-.187.599-.34.863-.484l.304-.167c.35-.195.68-.388 1.018-.635.679-.497 1.367-1.192 2.37-2.524a.356.356 0 0 0-.072-.498Z\",\n fill: \"#8A3110\"\n})), _path27 || (_path27 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M126.933 42.163c-7.821-1.3-11.005-1.905-13.71-4.047.156-10.06 8.433-15.98 12.269-16.877 8.871-2.163 18.502.543 24.413 8.327a15.12 15.12 0 0 1 1.479 2.364c.232.374.462.792.689 1.257 3.698 10.657 5.644 26.207 4.589 31.967-2.957 3.8-26.689 4.62-23.717-.144.166-.266.351-.541.548-.835 1.396-2.08 3.387-5.045 3.368-11.71-.004-1.613-.47-3.5-.996-5.629-.178-.72-.362-1.467-.538-2.24l-1.197-.417c-1.692-.588-2.986-1.038-3.79-1.386-.88-.381-.041-2.924.562-4.75.526-1.594.872-2.64-.266-1.224-1.465 1.826-2.025 3.254-2.3 4.374-.157.637-.756 1.077-1.403.97Z\",\n fill: \"#0A1551\"\n})), _path28 || (_path28 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M115.16 142.435c5.329-2.997 29.269 3.735 47.509-2.946 10-3.664 2.348-24.999-1.822-42.89-2.638-9.902-7.006-16.464-10.989-18.892l-8.662 6.374 2.206 11.873s-1.371 4.311 1.517 12.142c2.887 7.832 7.374 17.68 7.374 17.68l-42.924 9.005c.154 3.55 1.528 10.051 5.791 7.654Z\",\n fill: \"#fff\"\n}))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"a\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M33.981 2.375h39.867v39.867H33.981z\"\n})), /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"b\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M14.048 42.241h39.867v39.867H14.048z\"\n})), /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"c\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M53.914 42.241h39.867v39.867H53.914z\"\n})), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"h\",\n x1: 152.474,\n y1: 97.578,\n x2: 150.048,\n y2: 114.588,\n gradientUnits: \"userSpaceOnUse\"\n}, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#fff\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#F3F5FE\"\n})))));\nexport default SvgNoSignDocumentsIcon;","var _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _g, _path9, _path10, _path11, _path12, _g2, _path13, _path14, _path15, _path16, _path17, _path18, _path19, _g3, _path20, _path21, _path22, _path23, _g4, _path24, _path25, _path26, _path27, _path28, _path29, _path30, _path31, _path32, _path33, _path34, _path35, _path36, _path37, _path38, _path39, _path40, _path41, _path42, _path43, _path44, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgNoTeamFormsIcon = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 198 141\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0 97.4367C0 73.8043 19.1578 54.6465 42.7902 54.6465H155.115C178.747 54.6465 197.905 73.8043 197.905 97.4367C197.905 121.069 178.747 140.227 155.115 140.227H42.7902C19.1578 140.227 0 121.069 0 97.4367Z\",\n fill: \"#E6E6F5\"\n})), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask0_624:16012\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 0,\n y: 54,\n width: 198,\n height: 87\n}, _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0 97.4367C0 73.8043 19.1578 54.6465 42.7902 54.6465H155.115C178.747 54.6465 197.905 73.8043 197.905 97.4367C197.905 121.069 178.747 140.227 155.115 140.227H42.7902C19.1578 140.227 0 121.069 0 97.4367Z\",\n fill: \"#E6E6F5\"\n}))), /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask0_624:16012)\"\n}, _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M115.336 77.9239C106.901 88.5617 99.9998 95.4214 94.6306 98.5029C86.5769 103.125 85.9877 98.2682 56.4901 77.7583C54.439 76.8969 52.7754 76.6674 49.9956 79.7585C48.3335 81.6069 44.7598 82.0931 39.2746 81.2173L39.2746 81.2173C38.7245 81.1295 38.2053 81.504 38.115 82.0539C38.0701 82.3274 38.1397 82.6067 38.3074 82.8265C39.6577 84.5955 41.994 85.5598 45.3164 85.7196C51.9089 86.0364 52.6163 83.5632 56.326 86.4774C60.0356 89.3916 79.9102 112.691 91.8962 113.269C103.882 113.848 119.63 96.0418 124.085 94.6697C127.055 93.7549 129.477 86.5287 131.353 72.9909L115.336 77.9239Z\",\n fill: \"#CD7448\"\n})), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M58.9543 90.0563C62.224 86.9336 64.2069 84.21 64.903 81.8853C79.5311 92.8149 87.8103 97.9805 89.7407 97.382C92.3874 96.5614 113.744 77.3633 121.165 72.8215C121.839 72.149 121.886 77.8987 122.422 77.2795L120.015 99.5943C111.348 105.796 105.826 109.617 103.45 111.057C99.8843 113.217 90.5281 117.172 82.0782 110.302C76.4449 105.722 68.7369 98.9735 58.9543 90.0563Z\",\n fill: \"#F4F5FE\"\n})), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M110.638 114.549C111.986 119.246 111.986 125.139 110.638 135.875L160.179 128.641L157.146 88.3777C155.124 81.6671 152.765 76.9698 150.069 74.2855C146.025 70.2592 124.793 72.2724 119.737 74.2855C114.682 76.2987 113.671 85.3579 108.616 93.4106C103.561 101.463 108.616 107.503 110.638 114.549Z\",\n fill: \"white\"\n})), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M141.981 72.1544C139.959 88.6243 134.277 96.8593 124.934 96.8593C110.92 96.8593 114.206 89.4872 115.961 86.0305C117.131 83.726 118.417 79.6245 119.82 73.7258C124.641 72.1872 128.321 71.3278 130.86 71.1478C133.398 70.9679 137.105 71.3034 141.981 72.1544Z\",\n fill: \"#CD7448\"\n})), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask1_624:16012\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 51,\n y: -1,\n width: 110,\n height: 94\n}, _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M51.2891 -0.625H160.642V92.0872H51.2891V-0.625Z\",\n fill: \"#C4C4C4\"\n}))), /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask1_624:16012)\"\n}, /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask2_624:16012\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 106,\n y: 71,\n width: 59,\n height: 93\n}, _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M110.638 138.541C111.986 127.804 111.986 119.246 110.638 114.549C108.616 107.503 103.561 101.463 108.616 93.4106C113.671 85.3579 114.682 76.2987 119.737 74.2855C124.793 72.2724 146.025 70.2592 150.069 74.2855C152.765 76.9698 155.124 81.6671 157.146 88.3777L160.179 128.641C164.898 146.759 165.572 157.832 162.201 161.858C157.146 167.898 155.124 151.792 132.881 142.733C128.163 140.72 120.748 139.883 110.638 138.541Z\",\n fill: \"white\"\n}))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask2_624:16012)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M110.638 138.539C111.986 127.803 111.986 120.085 110.638 115.388C108.616 108.342 103.561 102.302 108.616 94.2498C113.671 86.1972 114.398 76.4272 119.454 74.414C124.509 72.4008 145.286 69.4997 149.33 73.526C152.026 76.2102 155.124 82.5064 157.146 89.2169V102.827L160.179 129.48C164.898 147.599 165.572 158.671 162.201 162.697C157.146 168.737 155.124 152.632 132.881 143.572C128.163 141.559 120.748 139.882 110.638 138.539Z\",\n fill: \"white\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M141.981 72.1544C139.959 88.6243 134.277 96.8593 124.934 96.8593C110.92 96.8593 114.206 89.4872 115.961 86.0305C117.131 83.726 118.417 79.6245 119.82 73.7258C124.641 72.1872 128.321 71.3278 130.86 71.1478C133.398 70.9679 137.105 71.3034 141.981 72.1544Z\",\n fill: \"#CD7448\"\n}))), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M113.82 33.3166C110.43 47.7514 109.279 49.4479 108.018 52.6186C107.705 53.4047 107.867 54.3038 108.456 54.912C113.256 59.8667 119.676 61.4146 127.717 59.5556C136.283 57.5753 136.242 54.5995 130.934 30.4186L113.82 33.3166Z\",\n fill: \"#0A1551\"\n})), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M136.285 53.9991C134.625 66.972 140.19 71.5228 142.1 71.5552C144.009 71.5876 136.698 79.5784 123.067 92.3643C118.606 83.7663 118.107 76.0982 119.5 73.8743C121.59 70.5386 123.529 73.3922 122.813 61.7133C122.343 54.0415 132.544 54.7707 139.81 53.5254C136.285 53.9991 130.529 54.1174 136.285 53.9991Z\",\n fill: \"#CD7448\"\n})), _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.677232,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M122.313 56.5259C123.105 63.7532 123.082 67.7391 123 68.3752C122.878 69.3293 140.282 68.5234 135.312 53.2024C130.342 37.8815 128.68 55.0076 122.313 56.5259Z\",\n fill: \"#BD5826\"\n})), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask3_624:16012\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 113,\n y: 24,\n width: 38,\n height: 44\n}, _path12 || (_path12 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M145.092 57.0491C140.516 63.1625 134.135 66.5174 125.949 67.1136C117.636 67.7191 112.086 56.8794 113.156 45.7503C113.667 40.4403 114.843 35.7532 119.518 30.9235C129.169 20.9553 138.236 22.2718 146.718 34.8728L150.38 44.6449L145.092 57.0491Z\",\n fill: \"white\"\n}))), _g2 || (_g2 = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask3_624:16012)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M143.966 56.1764C138.857 61.8531 132.197 64.6207 123.988 64.4795C115.652 64.336 111.101 53.0441 113.171 42.0585C114.159 36.8169 115.753 32.2554 120.847 27.866C131.36 18.8066 140.273 20.9315 147.587 34.2405L150.353 44.2998L143.966 56.1764Z\",\n fill: \"#CD7448\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.422879,\n d: \"M131.771 56.3898C129.076 55.9732 127.129 54.1378 127.423 52.2901C127.718 50.4425 130.141 49.2824 132.836 49.6989C135.532 50.1155 137.478 51.9509 137.184 53.7985C136.89 55.6462 134.466 56.8063 131.771 56.3898Z\",\n fill: \"#A44616\"\n}))), _path13 || (_path13 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M125.579 55.9777C123.46 56.8827 120.96 56.4158 118.079 54.5768C119.435 58.4286 120.976 60.1813 122.702 59.8349C124.428 59.4886 125.387 58.2028 125.579 55.9777Z\",\n fill: \"#A5330A\"\n})), _path14 || (_path14 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M126.938 38.462C119.116 37.1633 115.933 36.5576 113.227 34.4149C113.384 24.3556 121.661 18.4345 125.497 17.5383C134.368 15.3748 143.999 18.0813 149.91 25.865C150.496 26.6367 150.986 27.4266 151.389 28.2296C151.621 28.6034 151.85 29.0216 152.077 29.4864C155.776 40.1435 157.722 55.6928 156.667 61.4529C153.71 65.2542 129.978 66.0739 132.95 61.3098C133.116 61.0439 133.301 60.7682 133.498 60.4748C134.894 58.3952 136.885 55.4288 136.866 48.7651C136.862 47.1514 136.396 45.2638 135.87 43.1353C135.692 42.4157 135.507 41.6685 135.332 40.8951C134.913 40.7489 134.514 40.6101 134.135 40.4782C132.443 39.8904 131.149 39.4404 130.345 39.0921C129.465 38.7109 130.304 36.1681 130.907 34.3427C131.433 32.7486 131.778 31.7015 130.641 33.1186C129.176 34.9439 128.616 36.3723 128.341 37.492C128.184 38.1288 127.585 38.5694 126.938 38.462Z\",\n fill: \"#0A1551\"\n})), _path15 || (_path15 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M115.165 138.735C120.494 135.738 144.433 142.471 162.674 135.789C172.674 132.126 165.022 110.79 160.852 92.8997C158.213 82.9975 153.845 76.4349 149.863 74.0075L141.201 80.3815L143.406 92.2543C143.406 92.2543 142.036 96.5649 144.923 104.397C147.811 112.229 152.298 122.076 152.298 122.076L109.373 131.081C109.528 134.632 110.902 141.133 115.165 138.735Z\",\n fill: \"white\"\n}))), _path16 || (_path16 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M120.877 137.279C118.784 138.945 117.779 138.998 115.278 140.92C113.265 141.884 111.779 142.298 107.412 140.994C104.792 140.212 101.091 140.012 96.3082 140.393L96.3082 140.393C95.7516 140.438 95.2652 140.024 95.2217 139.47C95.2055 139.263 95.2538 139.057 95.3599 138.878C96.5754 136.833 98.9431 135.637 102.463 135.287C109.043 134.635 109.862 137.065 113.441 133.969C115.827 131.905 118.306 133.008 120.877 137.279Z\",\n fill: \"#CD7448\"\n})), _path17 || (_path17 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M116.883 140.747C127.5 139.876 146.152 144.482 164.392 137.801C174.393 134.137 166.74 112.802 162.57 94.9114C159.932 85.0092 155.564 78.4466 151.582 76.0192L142.92 82.3932L145.125 94.266C145.125 94.266 143.755 98.5766 146.642 106.408C149.529 114.24 154.017 124.088 154.017 124.088L111.092 133.093C111.246 136.643 110 140.376 116.883 140.747Z\",\n fill: \"url(#paint0_linear_624:16012)\"\n}))), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask4_624:16012\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 96,\n y: 14,\n width: 64,\n height: 79\n}, _path18 || (_path18 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M96 14.375H160V92.375H96V14.375Z\",\n fill: \"#C4C4C4\"\n}))), /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask4_624:16012)\"\n}, /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask5_624:16012\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 106,\n y: 71,\n width: 59,\n height: 93\n}, _path19 || (_path19 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M110.349 138.541C111.697 127.804 111.697 119.246 110.349 114.549C108.327 107.503 103.272 101.463 108.327 93.4106C113.382 85.3579 114.393 76.2987 119.448 74.2855C124.504 72.2724 145.736 70.2592 149.78 74.2855C152.476 76.9698 154.835 81.6671 156.857 88.3777L159.89 128.641C164.609 146.759 165.283 157.832 161.912 161.858C156.857 167.898 154.835 151.792 132.592 142.733C127.874 140.72 120.459 139.883 110.349 138.541Z\",\n fill: \"white\"\n}))), _g3 || (_g3 = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask5_624:16012)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M110.349 138.539C111.697 127.803 111.697 120.085 110.349 115.388C108.327 108.342 103.272 102.302 108.327 94.2498C113.382 86.1972 114.109 76.4272 119.165 74.414C124.22 72.4008 144.997 69.4997 149.041 73.526C151.737 76.2102 154.835 82.5064 156.857 89.2169V102.827L159.89 129.48C164.609 147.599 165.283 158.671 161.912 162.697C156.857 168.737 154.835 152.632 132.592 143.572C127.874 141.559 120.459 139.882 110.349 138.539Z\",\n fill: \"white\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M141.692 72.1544C139.67 88.6243 133.988 96.8593 124.645 96.8593C110.631 96.8593 113.917 89.4872 115.672 86.0305C116.842 83.726 118.128 79.6245 119.531 73.7258C124.352 72.1872 128.032 71.3278 130.571 71.1478C133.109 70.9679 136.816 71.3034 141.692 72.1544Z\",\n fill: \"#CD7448\"\n}))), _path20 || (_path20 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M113.531 33.3166C110.141 47.7514 108.989 49.4479 107.729 52.6186C107.416 53.4047 107.578 54.3038 108.167 54.912C112.967 59.8667 119.387 61.4146 127.428 59.5556C135.994 57.5753 135.953 54.5995 130.645 30.4186L113.531 33.3166Z\",\n fill: \"#0A1551\"\n})), _path21 || (_path21 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M135.996 53.9991C134.335 66.972 139.901 71.5228 141.811 71.5552C143.72 71.5876 136.409 79.5784 122.778 92.3643C118.317 83.7663 117.818 76.0982 119.211 73.8743C121.301 70.5386 123.24 73.3922 122.524 61.7133C122.054 54.0415 132.255 54.7707 139.521 53.5254C135.996 53.9991 130.24 54.1174 135.996 53.9991Z\",\n fill: \"#CD7448\"\n})), _path22 || (_path22 = /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.677232,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M122.024 56.5259C122.816 63.7532 122.793 67.7391 122.711 68.3752C122.589 69.3293 139.993 68.5234 135.023 53.2024C130.053 37.8815 128.391 55.0076 122.024 56.5259Z\",\n fill: \"#BD5826\"\n})), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask6_624:16012\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 112,\n y: 24,\n width: 39,\n height: 44\n}, _path23 || (_path23 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M144.803 57.0491C140.227 63.1625 133.846 66.5174 125.66 67.1136C117.347 67.7191 111.797 56.8794 112.867 45.7503C113.377 40.4403 114.553 35.7532 119.229 30.9235C128.88 20.9553 137.947 22.2718 146.429 34.8728L150.091 44.6449L144.803 57.0491Z\",\n fill: \"white\"\n}))), _g4 || (_g4 = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask6_624:16012)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M143.677 56.1764C138.567 61.8531 131.908 64.6207 123.699 64.4795C115.363 64.336 110.812 53.0441 112.882 42.0585C113.87 36.8169 115.464 32.2554 120.558 27.866C131.071 18.8066 139.984 20.9315 147.298 34.2405L150.064 44.2998L143.677 56.1764Z\",\n fill: \"#CD7448\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M128.904 40.8301C130.107 41.4177 130.959 42.3601 131.387 43.0696C131.557 43.3507 131.466 43.716 131.185 43.8855C130.905 44.0549 130.539 43.9644 130.37 43.6833C130.041 43.1393 129.35 42.3705 128.383 41.8981C127.438 41.4364 126.218 41.2495 124.756 41.8547C124.453 41.9803 124.106 41.8362 123.98 41.5329C123.854 41.2296 123.998 40.882 124.301 40.7564C126.103 40.01 127.679 40.2318 128.904 40.8301Z\",\n fill: \"#37120C\",\n fillOpacity: 0.25\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M117.443 38.8566C116.482 38.8034 115.689 39.1609 115.177 39.5723C114.922 39.778 114.882 40.152 115.088 40.4078C115.294 40.6636 115.668 40.7042 115.923 40.4985C116.242 40.2424 116.753 40.0088 117.379 40.0434C117.994 40.0774 118.794 40.3744 119.692 41.3119C119.919 41.5491 120.295 41.5576 120.532 41.3308C120.769 41.104 120.777 40.7278 120.55 40.4905C119.487 39.38 118.416 38.9104 117.443 38.8566Z\",\n fill: \"#37120C\",\n fillOpacity: 0.25\n}), /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.422879,\n d: \"M131.482 56.3898C128.787 55.9732 126.84 54.1378 127.134 52.2901C127.428 50.4425 129.852 49.2824 132.547 49.6989C135.243 50.1155 137.189 51.9509 136.895 53.7985C136.601 55.6462 134.177 56.8063 131.482 56.3898Z\",\n fill: \"#A44616\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.422879,\n d: \"M109.964 51.9299C107.316 51.2573 105.484 49.2294 105.872 47.4007C106.26 45.5719 108.72 44.6347 111.368 45.3074C114.016 45.9801 115.848 48.0079 115.46 49.8367C115.072 51.6654 112.612 52.6026 109.964 51.9299Z\",\n fill: \"#A44616\"\n}))), _path24 || (_path24 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M125.29 55.9777C123.171 56.8827 120.671 56.4158 117.79 54.5768C119.146 58.4286 120.687 60.1813 122.413 59.8349C124.139 59.4886 125.098 58.2028 125.29 55.9777Z\",\n fill: \"#A5330A\"\n})), _path25 || (_path25 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M126.298 46.5747C125.74 46.5652 125.298 45.8942 125.311 45.0761C125.324 44.2579 125.787 43.6023 126.345 43.6118C126.903 43.6212 127.345 44.2922 127.332 45.1104C127.319 45.9285 126.856 46.5841 126.298 46.5747Z\",\n fill: \"#321907\"\n})), _path26 || (_path26 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M117.699 45.0239C117.141 45.0144 116.699 44.3435 116.712 43.5253C116.725 42.7071 117.187 42.0515 117.745 42.061C118.303 42.0704 118.745 42.7414 118.732 43.5596C118.72 44.3778 118.257 45.0334 117.699 45.0239Z\",\n fill: \"#321907\"\n})), _path27 || (_path27 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M122.715 43.9712C122.557 43.8531 122.333 43.8846 122.215 44.0417C121.233 45.3458 120.594 45.9805 119.993 46.4194C119.691 46.6402 119.392 46.8164 119.05 47.0061C118.957 47.0578 118.86 47.1107 118.759 47.1659C118.492 47.3116 118.197 47.473 117.868 47.667C116.711 48.3477 116.542 49.9158 117.066 51.0793C117.337 51.6792 117.802 52.2141 118.46 52.5212C119.121 52.8298 119.943 52.8927 120.894 52.6054C121.082 52.5484 121.189 52.3497 121.131 52.1616C121.073 51.9735 120.874 51.8672 120.685 51.9242C119.876 52.1686 119.239 52.0996 118.762 51.8768C118.281 51.6523 117.929 51.2561 117.718 50.789C117.281 49.8185 117.503 48.7093 118.232 48.28C118.551 48.0922 118.831 47.9392 119.095 47.7951C119.198 47.7386 119.299 47.6835 119.399 47.6282C119.749 47.4336 120.079 47.2406 120.417 46.9937C121.096 46.4969 121.784 45.8014 122.787 44.4696C122.905 44.3125 122.873 44.0894 122.715 43.9712Z\",\n fill: \"#8A3110\"\n})), _path28 || (_path28 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M126.649 38.462C118.827 37.1633 115.644 36.5576 112.938 34.4149C113.095 24.3556 121.372 18.4345 125.208 17.5383C134.079 15.3748 143.71 18.0813 149.621 25.865C150.207 26.6367 150.697 27.4266 151.1 28.2296C151.332 28.6034 151.561 29.0216 151.788 29.4864C155.487 40.1435 157.433 55.6928 156.378 61.4529C153.421 65.2542 129.689 66.0739 132.661 61.3098C132.827 61.0439 133.012 60.7682 133.209 60.4748C134.605 58.3952 136.596 55.4288 136.577 48.7651C136.573 47.1514 136.106 45.2638 135.581 43.1353C135.403 42.4157 135.218 41.6685 135.043 40.8951C134.624 40.7489 134.225 40.6101 133.846 40.4782C132.154 39.8904 130.859 39.4404 130.056 39.0921C129.176 38.7109 130.015 36.1681 130.618 34.3427C131.144 32.7486 131.489 31.7015 130.352 33.1186C128.887 34.9439 128.327 36.3723 128.052 37.492C127.895 38.1288 127.296 38.5694 126.649 38.462Z\",\n fill: \"#0A1551\"\n})), _path29 || (_path29 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M114.876 138.735C120.204 135.738 144.144 142.471 162.384 135.789C172.385 132.126 164.732 110.79 160.563 92.8997C157.924 82.9975 153.556 76.4349 149.574 74.0075L140.912 80.3815L143.117 92.2543C143.117 92.2543 141.747 96.5649 144.634 104.397C147.522 112.229 152.009 122.076 152.009 122.076L109.084 131.081C109.239 134.632 110.612 141.133 114.876 138.735Z\",\n fill: \"white\"\n}))), _path30 || (_path30 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M38 4.95802C38 2.42689 40.0519 0.375 42.583 0.375H64.3524C66.8835 0.375 68.9354 2.42689 68.9354 4.95802V32.4562C68.9354 34.9873 66.8835 37.0392 64.3524 37.0392H42.583C40.0519 37.0392 38 34.9873 38 32.4562V4.95802Z\",\n fill: \"white\"\n})), _path31 || (_path31 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M64.3524 1.52076H42.583C40.6847 1.52076 39.1458 3.05967 39.1458 4.95802V32.4562C39.1458 34.3545 40.6847 35.8934 42.583 35.8934H64.3524C66.2507 35.8934 67.7897 34.3545 67.7897 32.4562V4.95802C67.7897 3.05967 66.2507 1.52076 64.3524 1.52076ZM42.583 0.375C40.0519 0.375 38 2.42689 38 4.95802V32.4562C38 34.9873 40.0519 37.0392 42.583 37.0392H64.3524C66.8835 37.0392 68.9354 34.9873 68.9354 32.4562V4.95802C68.9354 2.42689 66.8835 0.375 64.3524 0.375H42.583Z\",\n fill: \"#C8CEED\"\n})), _path32 || (_path32 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M44.5469 12.8157C44.5469 11.7309 45.4263 10.8516 46.511 10.8516H60.9148C61.9996 10.8516 62.879 11.7309 62.879 12.8157C62.879 13.9005 61.9996 14.7799 60.9148 14.7799H46.511C45.4263 14.7799 44.5469 13.9005 44.5469 12.8157Z\",\n fill: \"#0099FF\"\n})), _path33 || (_path33 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M44.5469 19.3626C44.5469 18.2778 45.4263 17.3984 46.511 17.3984H60.9148C61.9996 17.3984 62.879 18.2778 62.879 19.3626C62.879 20.4474 61.9996 21.3267 60.9148 21.3267H46.511C45.4263 21.3267 44.5469 20.4474 44.5469 19.3626Z\",\n fill: \"#FF6100\"\n})), _path34 || (_path34 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M44.5469 25.9095C44.5469 24.8247 45.4263 23.9453 46.511 23.9453H60.9148C61.9996 23.9453 62.879 24.8247 62.879 25.9095C62.879 26.9942 61.9996 27.8736 60.9148 27.8736H46.511C45.4263 27.8736 44.5469 26.9942 44.5469 25.9095Z\",\n fill: \"#FFB629\"\n})), _path35 || (_path35 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M57.0645 44.958C57.0645 42.4269 59.1163 40.375 61.6475 40.375H83.4168C85.948 40.375 87.9999 42.4269 87.9999 44.958V72.4562C87.9999 74.9873 85.948 77.0392 83.4168 77.0392H61.6475C59.1163 77.0392 57.0645 74.9873 57.0645 72.4562V44.958Z\",\n fill: \"white\"\n})), _path36 || (_path36 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M83.4168 41.5208H61.6475C59.7491 41.5208 58.2102 43.0597 58.2102 44.958V72.4562C58.2102 74.3545 59.7491 75.8934 61.6475 75.8934H83.4168C85.3152 75.8934 86.8541 74.3545 86.8541 72.4562V44.958C86.8541 43.0597 85.3152 41.5208 83.4168 41.5208ZM61.6475 40.375C59.1163 40.375 57.0645 42.4269 57.0645 44.958V72.4562C57.0645 74.9873 59.1163 77.0392 61.6475 77.0392H83.4168C85.948 77.0392 87.9999 74.9873 87.9999 72.4562V44.958C87.9999 42.4269 85.948 40.375 83.4168 40.375H61.6475Z\",\n fill: \"#C8CEED\"\n})), _path37 || (_path37 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M63.6113 52.8157C63.6113 51.7309 64.4907 50.8516 65.5755 50.8516H79.9793C81.064 50.8516 81.9434 51.7309 81.9434 52.8157C81.9434 53.9005 81.064 54.7799 79.9793 54.7799H65.5755C64.4907 54.7799 63.6113 53.9005 63.6113 52.8157Z\",\n fill: \"#0099FF\"\n})), _path38 || (_path38 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M63.6113 59.3626C63.6113 58.2778 64.4907 57.3984 65.5755 57.3984H79.9793C81.064 57.3984 81.9434 58.2778 81.9434 59.3626C81.9434 60.4474 81.064 61.3267 79.9793 61.3267H65.5755C64.4907 61.3267 63.6113 60.4474 63.6113 59.3626Z\",\n fill: \"#FF6100\"\n})), _path39 || (_path39 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M63.6113 65.9095C63.6113 64.8247 64.4907 63.9453 65.5755 63.9453H79.9793C81.064 63.9453 81.9434 64.8247 81.9434 65.9095C81.9434 66.9942 81.064 67.8736 79.9793 67.8736H65.5755C64.4907 67.8736 63.6113 66.9942 63.6113 65.9095Z\",\n fill: \"#FFB629\"\n})), _path40 || (_path40 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18 44.958C18 42.4269 20.0519 40.375 22.583 40.375H44.3524C46.8835 40.375 48.9354 42.4269 48.9354 44.958V72.4562C48.9354 74.9873 46.8835 77.0392 44.3524 77.0392H22.583C20.0519 77.0392 18 74.9873 18 72.4562V44.958Z\",\n fill: \"white\"\n})), _path41 || (_path41 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M44.3524 41.5208H22.583C20.6847 41.5208 19.1458 43.0597 19.1458 44.958V72.4562C19.1458 74.3545 20.6847 75.8934 22.583 75.8934H44.3524C46.2507 75.8934 47.7897 74.3545 47.7897 72.4562V44.958C47.7897 43.0597 46.2507 41.5208 44.3524 41.5208ZM22.583 40.375C20.0519 40.375 18 42.4269 18 44.958V72.4562C18 74.9873 20.0519 77.0392 22.583 77.0392H44.3524C46.8835 77.0392 48.9354 74.9873 48.9354 72.4562V44.958C48.9354 42.4269 46.8835 40.375 44.3524 40.375H22.583Z\",\n fill: \"#C8CEED\"\n})), _path42 || (_path42 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.5469 52.8157C24.5469 51.7309 25.4263 50.8516 26.511 50.8516H40.9148C41.9996 50.8516 42.879 51.7309 42.879 52.8157C42.879 53.9005 41.9996 54.7799 40.9148 54.7799H26.511C25.4263 54.7799 24.5469 53.9005 24.5469 52.8157Z\",\n fill: \"#0099FF\"\n})), _path43 || (_path43 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.5469 59.3626C24.5469 58.2778 25.4263 57.3984 26.511 57.3984H40.9148C41.9996 57.3984 42.879 58.2778 42.879 59.3626C42.879 60.4474 41.9996 61.3267 40.9148 61.3267H26.511C25.4263 61.3267 24.5469 60.4474 24.5469 59.3626Z\",\n fill: \"#FF6100\"\n})), _path44 || (_path44 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.5469 65.9095C24.5469 64.8247 25.4263 63.9453 26.511 63.9453H40.9148C41.9996 63.9453 42.879 64.8247 42.879 65.9095C42.879 66.9942 41.9996 67.8736 40.9148 67.8736H26.511C25.4263 67.8736 24.5469 66.9942 24.5469 65.9095Z\",\n fill: \"#FFB629\"\n})), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint0_linear_624:16012\",\n x1: 152.19,\n y1: 93.8799,\n x2: 149.764,\n y2: 110.89,\n gradientUnits: \"userSpaceOnUse\"\n}, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"white\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#F3F5FE\"\n})))));\nexport default SvgNoTeamFormsIcon;","var _rect, _path, _path2, _path3, _path4, _path5, _rect2, _path6, _path7;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgNoDocumentIcon = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 106 121\"\n}, props), _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n x: 0.5,\n y: 15.5,\n width: 105,\n height: 105,\n rx: 52.5,\n fill: \"#DADEF3\"\n})), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M28.25 90V46C28.25 41.4437 31.9436 37.75 36.5 37.75H63.4305C63.7951 37.75 64.1449 37.8949 64.4027 38.1527L70.875 44.625L77.3473 51.0973C77.6051 51.3551 77.75 51.7049 77.75 52.0695V90C77.75 94.5564 74.0563 98.25 69.5 98.25H36.5C31.9436 98.25 28.25 94.5564 28.25 90Z\",\n fill: \"white\"\n})), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M37.875 60.135C37.875 58.4036 39.2786 57 41.01 57H64.99C66.7214 57 68.125 58.4036 68.125 60.135C68.125 61.8664 66.7214 63.27 64.99 63.27H41.01C39.2786 63.27 37.875 61.8664 37.875 60.135Z\",\n fill: \"#0099FF\"\n})), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M37.875 70.7493C37.875 69.0178 39.2786 67.6143 41.01 67.6143H64.99C66.7214 67.6143 68.125 69.0178 68.125 70.7493C68.125 72.4807 66.7214 73.8843 64.99 73.8843H41.01C39.2786 73.8843 37.875 72.4807 37.875 70.7493Z\",\n fill: \"#FF6100\"\n})), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M37.875 81.3645C37.875 79.6331 39.2786 78.2295 41.01 78.2295H64.99C66.7214 78.2295 68.125 79.6331 68.125 81.3645C68.125 83.0959 66.7214 84.4995 64.99 84.4995H41.01C39.2786 84.4995 37.875 83.0959 37.875 81.3645Z\",\n fill: \"#FFB629\"\n})), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M28.25 46C28.25 41.4437 31.9437 37.75 36.5 37.75H65.375C65.7397 37.75 66.0894 37.8949 66.3473 38.1527L77.3473 49.1527C77.6051 49.4106 77.75 49.7603 77.75 50.125V90C77.75 94.5564 74.0564 98.25 69.5 98.25H36.5C31.9437 98.25 28.25 94.5563 28.25 90V46ZM36.5 40.5C33.4624 40.5 31 42.9624 31 46V90C31 93.0376 33.4624 95.5 36.5 95.5H69.5C72.5376 95.5 75 93.0376 75 90V51.5H68.125C65.8468 51.5 64 49.6532 64 47.375V40.5H36.5Z\",\n fill: \"#C8CEED\"\n})), _rect2 || (_rect2 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 39.7285,\n y: 0.5,\n width: 27.5443,\n height: 27.5443,\n rx: 6.88608,\n fill: \"#292D3C\"\n})), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M50.753 14.5792C50.753 15.2816 50.8081 15.9289 50.9183 16.5211C51.0285 17.0995 51.2144 17.5884 51.4761 17.9878C51.6827 18.3183 51.9512 18.5869 52.2817 18.7935C52.6123 18.9863 53.0186 19.0827 53.5006 19.0827C53.9964 19.0827 54.4027 18.9863 54.7194 18.7935C55.0362 18.5869 55.2978 18.3183 55.5044 17.9878C55.7799 17.5884 55.9727 17.0995 56.0829 16.5211C56.193 15.9289 56.2481 15.2816 56.2481 14.5792C56.2481 13.8768 56.193 13.2364 56.0829 12.658C55.9727 12.0658 55.7799 11.57 55.5044 11.1706C55.2978 10.8401 55.0362 10.5784 54.7194 10.3856C54.4027 10.179 53.9964 10.0757 53.5006 10.0757C53.0186 10.0757 52.6123 10.179 52.2817 10.3856C51.9512 10.5784 51.6827 10.8401 51.4761 11.1706C51.2144 11.57 51.0285 12.0658 50.9183 12.658C50.8081 13.2364 50.753 13.8768 50.753 14.5792ZM47.9022 14.5792C47.9022 13.7115 47.9848 12.8783 48.1501 12.0795C48.3154 11.267 48.6252 10.5095 49.0797 9.80714C49.5204 9.14608 50.1057 8.60897 50.8357 8.1958C51.5656 7.76887 52.4539 7.5554 53.5006 7.5554C54.5473 7.5554 55.4287 7.76887 56.1448 8.1958C56.8748 8.60897 57.4601 9.14608 57.9008 9.80714C58.3553 10.5095 58.6651 11.267 58.8304 12.0795C59.0094 12.8783 59.099 13.7115 59.099 14.5792C59.099 15.4468 59.0094 16.2869 58.8304 17.0995C58.6651 17.8983 58.3553 18.6489 57.9008 19.3512C57.4601 20.0123 56.8748 20.5563 56.1448 20.9832C55.4287 21.3964 54.5473 21.603 53.5006 21.603C52.4539 21.603 51.5656 21.3964 50.8357 20.9832C50.1057 20.5563 49.5204 20.0123 49.0797 19.3512C48.6252 18.6489 48.3154 17.8983 48.1501 17.0995C47.9848 16.2869 47.9022 15.4468 47.9022 14.5792Z\",\n fill: \"white\"\n})), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M54.8395 32.8436C54.1505 33.6961 52.8509 33.6961 52.1618 32.8436L48.2826 28.0443H58.7188L54.8395 32.8436Z\",\n fill: \"#292D3C\"\n})));\nexport default SvgNoDocumentIcon;","import React from 'react';\nimport {\n arrayOf, node, oneOfType, string, bool\n} from 'prop-types';\n\nimport EmptyListBase from './EmptyListBase';\n\nimport NoFormsIcon from '../assets/svg/noFormsIcon.svg';\nimport NoAppsIcon from '../assets/svg/noAppsIcon.svg';\nimport NoTablesIcon from '../assets/svg/noTablesIcon.svg';\nimport NoReportsIcon from '../assets/svg/noReportsIcon.svg';\nimport NoApprovalsIcon from '../assets/svg/noApprovalsIcon.svg';\nimport NoSignDocumentsIcon from '../assets/svg/noSignDocumentsIcon.svg';\nimport NoTeamFormsIcon from '../assets/svg/noTeamFormsIcon.svg';\nimport NoDocumentIcon from '../assets/svg/noDocumentIcon.svg';\n\nexport const resourceData = {\n form: {\n title: 'You don\\'t have any forms yet.',\n description: 'Your forms will appear here.',\n icon: \n },\n portal: {\n title: 'You don\\'t have any apps yet.',\n description: '',\n icon: \n },\n table: {\n title: 'You don\\'t have any tables yet.',\n description: '',\n icon: \n },\n report: {\n title: 'You don\\'t have any reports yet.',\n description: '',\n icon: \n },\n approval: {\n title: 'You don\\'t have any approvals yet.',\n description: '',\n icon: \n },\n sign: {\n title: 'You don\\'t have any signs in the app yet.',\n description: '',\n icon: \n },\n pdf: {\n title: 'You don\\'t have any documents yet.',\n description: 'Your documents will appear here.',\n icon: \n },\n teamform: {\n title: 'This team doesn\\'t have any forms yet',\n description: 'Team forms will appear here.',\n icon: \n }\n};\n\nfunction EmptyList({\n icon,\n title,\n description,\n resourceType,\n isTitleUppercase\n}) {\n const defaults = (resourceType && resourceData[resourceType]) ? resourceData[resourceType] : resourceData.form;\n const uppercase = isTitleUppercase !== null ? isTitleUppercase : true;\n\n return (\n \n );\n}\n\nEmptyList.propTypes = {\n icon: oneOfType([arrayOf(node), node]),\n title: string,\n description: string,\n resourceType: string,\n isTitleUppercase: bool\n};\n\nEmptyList.defaultProps = {\n icon: null,\n title: null,\n description: null,\n resourceType: 'form',\n isTitleUppercase: null\n};\n\nexport default EmptyList;\n","import React from 'react';\nimport {\n arrayOf, node, oneOfType, string, bool\n} from 'prop-types';\nimport classNames from 'classnames';\nimport { t } from '@jotforminc/translation';\nimport '@jotforminc/jotform.css';\n\nfunction EmptyListBase({\n icon,\n title,\n description,\n isTitleUppercase\n}) {\n return (\n
    \n {icon}\n
    {t(title)}
    \n
    {t(description)}
    \n
    \n );\n}\n\nEmptyListBase.propTypes = {\n icon: oneOfType([arrayOf(node), node]),\n title: string,\n description: string,\n isTitleUppercase: bool\n};\n\nEmptyListBase.defaultProps = {\n icon: null,\n title: null,\n description: null,\n isTitleUppercase: true\n};\n\nexport default EmptyListBase;\n","var _g, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgNoFormsFoundIcon = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 108 121\"\n}, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0)\"\n}, /*#__PURE__*/React.createElement(\"circle\", {\n cx: 54.5,\n cy: 58.4492,\n r: 52.5,\n fill: \"#F3F3FE\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M61.1099 58.4224C61.1099 55.2404 63.6894 52.6609 66.8714 52.6609H94.2387C97.4207 52.6609 100 55.2404 100 58.4224V92.9916C100 96.1736 97.4207 98.7532 94.2387 98.7532H66.8714C63.6894 98.7532 61.1099 96.1736 61.1099 92.9916V58.4224Z\",\n fill: \"white\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M94.2387 54.1013H66.8714C64.4849 54.1013 62.5502 56.0359 62.5502 58.4224V92.9916C62.5502 95.3781 64.4849 97.3128 66.8714 97.3128H94.2387C96.6252 97.3128 98.5598 95.3781 98.5598 92.9916V58.4224C98.5598 56.0359 96.6252 54.1013 94.2387 54.1013ZM66.8714 52.6609C63.6894 52.6609 61.1099 55.2404 61.1099 58.4224V92.9916C61.1099 96.1736 63.6894 98.7532 66.8714 98.7532H94.2387C97.4207 98.7532 100 96.1736 100 92.9916V58.4224C100 55.2404 97.4207 52.6609 94.2387 52.6609H66.8714Z\",\n fill: \"#B1C3E9\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M69.3403 68.2993C69.3403 66.9356 70.4458 65.8301 71.8096 65.8301H89.9172C91.281 65.8301 92.3865 66.9356 92.3865 68.2993C92.3865 69.663 91.281 70.7685 89.9172 70.7685H71.8096C70.4458 70.7685 69.3403 69.663 69.3403 68.2993Z\",\n fill: \"#0099FF\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M69.3403 76.5298C69.3403 75.1661 70.4458 74.0605 71.8096 74.0605H89.9172C91.281 74.0605 92.3865 75.1661 92.3865 76.5298C92.3865 77.8935 91.281 78.999 89.9172 78.999H71.8096C70.4458 78.999 69.3403 77.8935 69.3403 76.5298Z\",\n fill: \"#FF6100\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M69.3403 84.7607C69.3403 83.397 70.4458 82.2915 71.8096 82.2915H89.9172C91.281 82.2915 92.3865 83.397 92.3865 84.7607C92.3865 86.1245 91.281 87.23 89.9172 87.23H71.8096C70.4458 87.23 69.3403 86.1245 69.3403 84.7607Z\",\n fill: \"#FFB629\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M37.1431 8.13654C37.1431 4.95453 39.7226 2.375 42.9046 2.375H70.2719C73.4539 2.375 76.0334 4.95453 76.0334 8.13654V42.7057C76.0334 45.8878 73.4539 48.4673 70.2719 48.4673H42.9046C39.7226 48.4673 37.1431 45.8878 37.1431 42.7057V8.13654Z\",\n fill: \"white\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M70.2719 3.81538H42.9046C40.5181 3.81538 38.5835 5.75003 38.5835 8.13654V42.7057C38.5835 45.0923 40.5181 47.0269 42.9046 47.0269H70.2719C72.6584 47.0269 74.593 45.0923 74.593 42.7057V8.13654C74.593 5.75003 72.6584 3.81538 70.2719 3.81538ZM42.9046 2.375C39.7226 2.375 37.1431 4.95453 37.1431 8.13654V42.7057C37.1431 45.8878 39.7226 48.4673 42.9046 48.4673H70.2719C73.4539 48.4673 76.0334 45.8878 76.0334 42.7057V8.13654C76.0334 4.95453 73.4539 2.375 70.2719 2.375H42.9046Z\",\n fill: \"#B1C3E9\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M45.3735 18.0134C45.3735 16.6497 46.479 15.5442 47.8428 15.5442H65.9504C67.3142 15.5442 68.4197 16.6497 68.4197 18.0134C68.4197 19.3771 67.3142 20.4826 65.9504 20.4826H47.8428C46.479 20.4826 45.3735 19.3771 45.3735 18.0134Z\",\n fill: \"#0099FF\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M45.3735 26.2439C45.3735 24.8802 46.479 23.7747 47.8428 23.7747H65.9504C67.3142 23.7747 68.4197 24.8802 68.4197 26.2439C68.4197 27.6076 67.3142 28.7131 65.9504 28.7131H47.8428C46.479 28.7131 45.3735 27.6076 45.3735 26.2439Z\",\n fill: \"#FF6100\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M45.3735 34.4748C45.3735 33.1111 46.479 32.0056 47.8428 32.0056H65.9504C67.3142 32.0056 68.4197 33.1111 68.4197 34.4748C68.4197 35.8386 67.3142 36.9441 65.9504 36.9441H47.8428C46.479 36.9441 45.3735 35.8386 45.3735 34.4748Z\",\n fill: \"#FFB629\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 58.4224C12 55.2404 14.5795 52.6609 17.7615 52.6609H45.1288C48.3108 52.6609 50.8904 55.2404 50.8904 58.4224V92.9916C50.8904 96.1736 48.3108 98.7532 45.1288 98.7532H17.7615C14.5795 98.7532 12 96.1736 12 92.9916V58.4224Z\",\n fill: \"white\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M45.1288 54.1013H17.7615C15.375 54.1013 13.4404 56.0359 13.4404 58.4224V92.9916C13.4404 95.3781 15.375 97.3128 17.7615 97.3128H45.1288C47.5153 97.3128 49.45 95.3781 49.45 92.9916V58.4224C49.45 56.0359 47.5153 54.1013 45.1288 54.1013ZM17.7615 52.6609C14.5795 52.6609 12 55.2404 12 58.4224V92.9916C12 96.1736 14.5795 98.7532 17.7615 98.7532H45.1288C48.3108 98.7532 50.8904 96.1736 50.8904 92.9916V58.4224C50.8904 55.2404 48.3108 52.6609 45.1288 52.6609H17.7615Z\",\n fill: \"#B1C3E9\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20.2305 68.2993C20.2305 66.9356 21.336 65.8301 22.6997 65.8301H40.8074C42.1711 65.8301 43.2766 66.9356 43.2766 68.2993C43.2766 69.663 42.1711 70.7685 40.8074 70.7685H22.6997C21.336 70.7685 20.2305 69.663 20.2305 68.2993Z\",\n fill: \"#0099FF\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20.2305 76.5298C20.2305 75.1661 21.336 74.0605 22.6997 74.0605H40.8074C42.1711 74.0605 43.2766 75.1661 43.2766 76.5298C43.2766 77.8935 42.1711 78.999 40.8074 78.999H22.6997C21.336 78.999 20.2305 77.8935 20.2305 76.5298Z\",\n fill: \"#FF6100\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20.2305 84.7607C20.2305 83.397 21.336 82.2915 22.6997 82.2915H40.8074C42.1711 82.2915 43.2766 83.397 43.2766 84.7607C43.2766 86.1245 42.1711 87.23 40.8074 87.23H22.6997C21.336 87.23 20.2305 86.1245 20.2305 84.7607Z\",\n fill: \"#FFB629\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.5,\n d: \"M53.4659 100.228C60.6527 99.0526 65.526 92.2739 64.3508 85.0871C63.1756 77.9003 56.3969 73.027 49.2101 74.2022C42.0233 75.3774 37.15 82.1561 38.3252 89.3429C39.5004 96.5297 46.2791 101.403 53.4659 100.228Z\",\n fill: \"url(#paint0_linear)\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M56.6883 100.626L59.2301 99.3097L64.5955 109.657L62.0567 110.975L56.6883 100.626Z\",\n fill: \"#0A1551\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M44.649 74.3221C42.1006 75.6452 40.0015 77.6942 38.6174 80.21C37.2334 82.7257 36.6265 85.5953 36.8732 88.456C37.1199 91.3168 38.2092 94.0401 40.0035 96.2818C41.7978 98.5235 44.2166 100.183 46.9539 101.05C49.6911 101.917 52.6239 101.954 55.3817 101.154C58.1395 100.355 60.5985 98.7553 62.4476 96.5585C64.2966 94.3617 65.4527 91.6659 65.7698 88.8121C66.0869 85.9583 65.5508 83.0746 64.2292 80.5255C62.4551 77.1072 59.396 74.5335 55.7247 73.3701C52.0534 72.2068 48.0705 72.549 44.6515 74.3217L44.649 74.3221ZM56.836 97.7931C54.7413 98.8817 52.371 99.3247 50.0246 99.0659C47.6782 98.807 45.461 97.8581 43.654 96.3391C41.8469 94.8201 40.531 92.7993 39.8726 90.5323C39.2142 88.2653 39.2429 85.854 39.9551 83.6033C40.6673 81.3527 42.0311 79.3638 43.8738 77.8883C45.7165 76.4128 47.9554 75.517 50.3073 75.3141C52.6593 75.1112 55.0186 75.6105 57.0867 76.7486C59.1549 77.8868 60.8391 79.6128 61.9262 81.7083C63.3813 84.516 63.6623 87.7866 62.7078 90.8016C61.7532 93.8165 59.6411 96.3293 56.8352 97.788L56.836 97.7931Z\",\n fill: \"#0A1551\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M67.435 118.328C67.1874 118.457 66.9168 118.536 66.6387 118.56C66.3605 118.585 66.0804 118.554 65.8142 118.469C65.548 118.385 65.301 118.249 65.0875 118.069C64.8739 117.889 64.6982 117.669 64.57 117.421L57.2159 103.261L60.9853 101.301L68.3419 115.461C68.4713 115.708 68.5506 115.979 68.5751 116.257C68.5995 116.536 68.5689 116.816 68.4846 117.083C68.4003 117.349 68.2641 117.597 68.084 117.81C67.9039 118.024 67.6833 118.2 67.435 118.328Z\",\n fill: \"#0A1551\"\n}))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint0_linear\",\n x1: 49.2101,\n y1: 74.2022,\n x2: 53.4659,\n y2: 100.228,\n gradientUnits: \"userSpaceOnUse\"\n}, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#92B0EC\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#92B0EC\",\n stopOpacity: 0.51\n})), /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0\"\n}, /*#__PURE__*/React.createElement(\"rect\", {\n width: 108,\n height: 120,\n fill: \"white\",\n transform: \"translate(0 0.375)\"\n})))));\nexport default SvgNoFormsFoundIcon;","var _g, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgNoAppsFoundIcon = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 108 120\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0)\"\n}, /*#__PURE__*/React.createElement(\"circle\", {\n cx: 54.5,\n cy: 55.5,\n r: 52.5,\n fill: \"#F3F3FE\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n x: 38.25,\n y: 3.67578,\n width: 37.5,\n height: 37.5,\n rx: 2.75,\n fill: \"white\",\n stroke: \"#B1C3E9\",\n strokeWidth: 1.5\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M42 11.1758C42 9.10471 43.6789 7.42578 45.75 7.42578H68.25C70.3211 7.42578 72 9.10471 72 11.1758V33.6758C72 35.7468 70.3211 37.4258 68.25 37.4258H45.75C43.6789 37.4258 42 35.7468 42 33.6758V11.1758Z\",\n fill: \"white\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M63.2489 24.4626C62.9735 24.4626 62.7501 24.6861 62.7501 24.9615V27.892H59.8196C59.5442 27.892 59.3208 28.1154 59.3208 28.3908C59.3208 28.6662 59.5442 28.8896 59.8196 28.8896H62.7501V31.8201C62.7501 32.0955 62.9735 32.3189 63.2489 32.3189C63.5243 32.3189 63.7477 32.0955 63.7477 31.8201V28.8896H66.6782C66.9536 28.8896 67.177 28.6662 67.177 28.3908C67.177 28.1154 66.9536 27.892 66.6782 27.892H63.7477V24.9615C63.7477 24.6861 63.5243 24.4626 63.2489 24.4626Z\",\n fill: \"#97ACDA\",\n stroke: \"#97ACDA\",\n strokeWidth: 0.651698\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M58.3838 11.994C58.3838 11.5421 58.7502 11.1757 59.2021 11.1757H67.3857C67.8377 11.1757 68.2041 11.5421 68.2041 11.994V20.1776C68.2041 20.6296 67.8377 20.9959 67.3857 20.9959H59.2021C58.7502 20.9959 58.3838 20.6296 58.3838 20.1776V11.994Z\",\n fill: \"#FF6100\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M45.751 11.994C45.751 11.5421 46.1174 11.1757 46.5693 11.1757H54.7529C55.2049 11.1757 55.5713 11.5421 55.5713 11.994V20.1776C55.5713 20.6296 55.2049 20.9959 54.7529 20.9959H46.5693C46.1174 20.9959 45.751 20.6296 45.751 20.1776V11.994Z\",\n fill: \"#0099FF\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M45.751 24.6268C45.751 24.1749 46.1174 23.8085 46.5693 23.8085H54.7529C55.2049 23.8085 55.5713 24.1749 55.5713 24.6268V32.8104C55.5713 33.2624 55.2049 33.6288 54.7529 33.6288H46.5693C46.1174 33.6288 45.751 33.2624 45.751 32.8104V24.6268Z\",\n fill: \"#FFB629\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n x: 13.25,\n y: 53.6758,\n width: 37.5,\n height: 37.5,\n rx: 2.75,\n fill: \"white\",\n stroke: \"#B1C3E9\",\n strokeWidth: 1.5\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17 61.1758C17 59.1047 18.6789 57.4258 20.75 57.4258H43.25C45.3211 57.4258 47 59.1047 47 61.1758V83.6758C47 85.7468 45.3211 87.4258 43.25 87.4258H20.75C18.6789 87.4258 17 85.7468 17 83.6758V61.1758Z\",\n fill: \"white\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M38.2489 74.4626C37.9735 74.4626 37.7501 74.6861 37.7501 74.9615V77.892H34.8196C34.5442 77.892 34.3208 78.1154 34.3208 78.3908C34.3208 78.6662 34.5442 78.8896 34.8196 78.8896H37.7501V81.8201C37.7501 82.0955 37.9735 82.3189 38.2489 82.3189C38.5243 82.3189 38.7477 82.0955 38.7477 81.8201V78.8896H41.6782C41.9536 78.8896 42.177 78.6662 42.177 78.3908C42.177 78.1154 41.9536 77.892 41.6782 77.892H38.7477V74.9615C38.7477 74.6861 38.5243 74.4626 38.2489 74.4626Z\",\n fill: \"#97ACDA\",\n stroke: \"#97ACDA\",\n strokeWidth: 0.651698\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M33.3838 61.994C33.3838 61.5421 33.7502 61.1757 34.2021 61.1757H42.3857C42.8377 61.1757 43.2041 61.5421 43.2041 61.994V70.1776C43.2041 70.6296 42.8377 70.9959 42.3857 70.9959H34.2021C33.7502 70.9959 33.3838 70.6296 33.3838 70.1776V61.994Z\",\n fill: \"#FF6100\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20.751 61.994C20.751 61.5421 21.1174 61.1757 21.5693 61.1757H29.7529C30.2049 61.1757 30.5713 61.5421 30.5713 61.994V70.1776C30.5713 70.6296 30.2049 70.9959 29.7529 70.9959H21.5693C21.1174 70.9959 20.751 70.6296 20.751 70.1776V61.994Z\",\n fill: \"#0099FF\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20.751 74.6267C20.751 74.1747 21.1174 73.8083 21.5693 73.8083H29.7529C30.2049 73.8083 30.5713 74.1747 30.5713 74.6267V82.8103C30.5713 83.2622 30.2049 83.6286 29.7529 83.6286H21.5693C21.1174 83.6286 20.751 83.2622 20.751 82.8103V74.6267Z\",\n fill: \"#FFB629\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n x: 62.25,\n y: 53.6758,\n width: 37.5,\n height: 37.5,\n rx: 2.75,\n fill: \"white\",\n stroke: \"#B1C3E9\",\n strokeWidth: 1.5\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M66 61.1758C66 59.1047 67.6789 57.4258 69.75 57.4258H92.25C94.3211 57.4258 96 59.1047 96 61.1758V83.6758C96 85.7468 94.3211 87.4258 92.25 87.4258H69.75C67.6789 87.4258 66 85.7468 66 83.6758V61.1758Z\",\n fill: \"white\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M87.2489 74.4626C86.9735 74.4626 86.7501 74.6861 86.7501 74.9615V77.892H83.8196C83.5442 77.892 83.3208 78.1154 83.3208 78.3908C83.3208 78.6662 83.5442 78.8896 83.8196 78.8896H86.7501V81.8201C86.7501 82.0955 86.9735 82.3189 87.2489 82.3189C87.5243 82.3189 87.7477 82.0955 87.7477 81.8201V78.8896H90.6782C90.9536 78.8896 91.177 78.6662 91.177 78.3908C91.177 78.1154 90.9536 77.892 90.6782 77.892H87.7477V74.9615C87.7477 74.6861 87.5243 74.4626 87.2489 74.4626Z\",\n fill: \"#97ACDA\",\n stroke: \"#97ACDA\",\n strokeWidth: 0.651698\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M82.3838 61.994C82.3838 61.5421 82.7502 61.1757 83.2021 61.1757H91.3857C91.8377 61.1757 92.2041 61.5421 92.2041 61.994V70.1776C92.2041 70.6296 91.8377 70.9959 91.3857 70.9959H83.2021C82.7502 70.9959 82.3838 70.6296 82.3838 70.1776V61.994Z\",\n fill: \"#FF6100\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M69.751 61.994C69.751 61.5421 70.1174 61.1757 70.5693 61.1757H78.7529C79.2049 61.1757 79.5713 61.5421 79.5713 61.994V70.1776C79.5713 70.6296 79.2049 70.9959 78.7529 70.9959H70.5693C70.1174 70.9959 69.751 70.6296 69.751 70.1776V61.994Z\",\n fill: \"#0099FF\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M69.751 74.6267C69.751 74.1747 70.1174 73.8083 70.5693 73.8083H78.7529C79.2049 73.8083 79.5713 74.1747 79.5713 74.6267V82.8103C79.5713 83.2622 79.2049 83.6286 78.7529 83.6286H70.5693C70.1174 83.6286 69.751 83.2622 69.751 82.8103V74.6267Z\",\n fill: \"#FFB629\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.5,\n d: \"M53.4659 97.2786C60.6527 96.1034 65.526 89.3246 64.3508 82.1379C63.1756 74.9511 56.3969 70.0777 49.2101 71.2529C42.0233 72.4282 37.15 79.2069 38.3252 86.3937C39.5004 93.5805 46.2791 98.4538 53.4659 97.2786Z\",\n fill: \"url(#paint0_linear)\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M56.6883 97.6764L59.2301 96.3605L64.5955 106.708L62.0567 108.026L56.6883 97.6764Z\",\n fill: \"#0A1551\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M44.649 71.3729C42.1006 72.6959 40.0015 74.745 38.6174 77.2607C37.2334 79.7765 36.6265 82.6461 36.8732 85.5068C37.1199 88.3675 38.2092 91.0909 40.0035 93.3326C41.7978 95.5743 44.2166 97.2337 46.9539 98.1009C49.6911 98.9682 52.6239 99.0043 55.3817 98.2048C58.1395 97.4053 60.5985 95.8061 62.4476 93.6093C64.2966 91.4125 65.4527 88.7167 65.7698 85.8629C66.0869 83.0091 65.5508 80.1254 64.2292 77.5763C62.4551 74.158 59.396 71.5843 55.7247 70.4209C52.0534 69.2576 48.0705 69.5998 44.6515 71.3725L44.649 71.3729ZM56.836 94.8439C54.7413 95.9325 52.371 96.3755 50.0246 96.1166C47.6782 95.8578 45.461 94.9089 43.654 93.3899C41.8469 91.8709 40.531 89.8501 39.8726 87.5831C39.2142 85.3161 39.2429 82.9048 39.9551 80.6541C40.6673 78.4034 42.0311 76.4146 43.8738 74.9391C45.7165 73.4636 47.9554 72.5677 50.3073 72.3649C52.6593 72.162 55.0186 72.6612 57.0867 73.7994C59.1549 74.9376 60.8391 76.6636 61.9262 78.759C63.3813 81.5668 63.6623 84.8374 62.7078 87.8524C61.7532 90.8673 59.6411 93.3801 56.8352 94.8388L56.836 94.8439Z\",\n fill: \"#0A1551\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M67.435 115.379C67.1874 115.508 66.9168 115.587 66.6387 115.611C66.3605 115.635 66.0804 115.604 65.8142 115.52C65.548 115.436 65.301 115.3 65.0875 115.12C64.8739 114.94 64.6982 114.72 64.57 114.472L57.2159 100.312L60.9853 98.3516L68.3419 112.511C68.4713 112.759 68.5506 113.03 68.5751 113.308C68.5995 113.587 68.5689 113.867 68.4846 114.134C68.4003 114.4 68.2641 114.647 68.084 114.861C67.9039 115.075 67.6833 115.251 67.435 115.379Z\",\n fill: \"#0A1551\"\n}))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint0_linear\",\n x1: 49.2101,\n y1: 71.2529,\n x2: 53.4659,\n y2: 97.2786,\n gradientUnits: \"userSpaceOnUse\"\n}, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#92B0EC\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#92B0EC\",\n stopOpacity: 0.51\n})), /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0\"\n}, /*#__PURE__*/React.createElement(\"rect\", {\n width: 108,\n height: 120,\n fill: \"white\"\n})))));\nexport default SvgNoAppsFoundIcon;","var _circle, _path, _rect, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _path9, _path10, _rect2, _path11, _rect3, _path12, _path13, _path14, _path15, _path16, _path17, _path18, _path19, _path20, _rect4, _path21, _rect5, _path22, _path23, _path24, _path25, _path26, _path27, _path28, _path29, _path30, _rect6, _path31, _path32, _path33, _path34, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgNoTablesFoundIcon = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 105 118\"\n}, props), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 52.5,\n cy: 52.875,\n r: 52.5,\n fill: \"#F3F3FE\"\n})), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M39.5867 37.8002C37.5562 37.8002 37.0021 37.2532 37.0019 35.2137C36.9993 16.9246 36.9995 22.6352 37.0017 4.34606C37.0019 2.39955 37.587 1.80482 39.5449 1.80438C57.8487 1.79958 52.1526 1.79958 70.4564 1.80438C72.3869 1.80482 72.997 2.42289 72.9974 4.36111C73.0009 22.6503 73.0007 16.9396 72.9979 35.2288C72.9974 37.2453 72.4258 37.7999 70.3892 37.8002C61.2374 37.8012 64.0854 37.8006 54.9336 37.8006C45.818 37.8006 48.7023 37.8012 39.5867 37.8002ZM69.7774 35.2294C70.137 35.2294 70.4286 34.9378 70.4286 34.5781V27.5652C70.4286 27.2055 70.137 26.914 69.7774 26.914H62.7644C62.4047 26.914 62.1132 27.2055 62.1132 27.5652V34.5781C62.1132 34.9378 62.4047 35.2294 62.7644 35.2294H69.7774ZM51.4935 35.2294H58.5065C58.8661 35.2294 59.1577 34.9378 59.1577 34.5781V27.5652C59.1577 27.2055 58.8661 26.914 58.5065 26.914H51.4935C51.1338 26.914 50.8423 27.2055 50.8423 27.5652V34.5781C50.8423 34.9378 51.1338 35.2294 51.4935 35.2294ZM40.2226 35.2294H47.2356C47.5953 35.2294 47.8868 34.9378 47.8868 34.5781V27.5652C47.8868 27.2055 47.5953 26.914 47.2356 26.914H40.2226C39.863 26.914 39.5714 27.2055 39.5714 27.5652V34.5781C39.5714 34.9378 39.863 35.2294 40.2226 35.2294ZM62.7644 23.9585H69.7774C70.137 23.9585 70.4286 23.6669 70.4286 23.3073V16.2943C70.4286 15.9346 70.137 15.6431 69.7774 15.6431H62.7644C62.4047 15.6431 62.1132 15.9346 62.1132 16.2943V23.3073C62.1132 23.6669 62.4047 23.9585 62.7644 23.9585ZM51.4935 23.9585H58.5065C58.8661 23.9585 59.1577 23.6669 59.1577 23.3073V16.2943C59.1577 15.9346 58.8661 15.6431 58.5065 15.6431H51.4935C51.1338 15.6431 50.8423 15.9346 50.8423 16.2943V23.3073C50.8423 23.6669 51.1338 23.9585 51.4935 23.9585ZM40.2226 23.9585H47.2356C47.5953 23.9585 47.8868 23.6669 47.8868 23.3073V16.2943C47.8868 15.9346 47.5953 15.6431 47.2356 15.6431H40.2226C39.863 15.6431 39.5714 15.9346 39.5714 16.2943V23.3073C39.5714 23.6669 39.863 23.9585 40.2226 23.9585ZM51.4935 12.6876H58.5065C58.8661 12.6876 59.1577 12.5115 59.1577 12.2943V8.05883C59.1577 7.84162 58.8661 7.66554 58.5065 7.66554H51.4935C51.1338 7.66554 50.8423 7.84162 50.8423 8.05883V12.2943C50.8423 12.5115 51.1338 12.6876 51.4935 12.6876ZM62.7435 12.6876H69.7565C70.1161 12.6876 70.4077 12.5115 70.4077 12.2943V8.05883C70.4077 7.84162 70.1161 7.66554 69.7565 7.66554H62.7435C62.3839 7.66554 62.0923 7.84162 62.0923 8.05883V12.2943C62.0923 12.5115 62.3839 12.6876 62.7435 12.6876ZM40.2226 12.6876H47.2356C47.5953 12.6876 47.8868 12.5115 47.8868 12.2943V8.05883C47.8868 7.84162 47.5953 7.66554 47.2356 7.66554H40.2226C39.863 7.66554 39.5714 7.84162 39.5714 8.05883V12.2943C39.5714 12.5115 39.863 12.6876 40.2226 12.6876Z\",\n fill: \"white\"\n})), _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n x: 39,\n y: 4.80078,\n width: 32,\n height: 31,\n fill: \"white\"\n})), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M62 7.80078C62 7.2485 62.4477 6.80078 63 6.80078H69.4077C69.96 6.80078 70.4077 7.2485 70.4077 7.80078V11.8008C70.4077 12.3531 69.96 12.8008 69.4077 12.8008H63C62.4477 12.8008 62 12.3531 62 11.8008V7.80078Z\",\n fill: \"#0D953B\"\n})), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M62 16.8008C62 16.2485 62.4477 15.8008 63 15.8008H69C69.5523 15.8008 70 16.2485 70 16.8008V22.8008C70 23.3531 69.5523 23.8008 69 23.8008H63C62.4477 23.8008 62 23.3531 62 22.8008V16.8008Z\",\n fill: \"#FFB629\"\n})), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M62 27.8008C62 27.2485 62.4477 26.8008 63 26.8008H69C69.5523 26.8008 70 27.2485 70 27.8008V33.8008C70 34.3531 69.5523 34.8008 69 34.8008H63C62.4477 34.8008 62 34.3531 62 33.8008V27.8008Z\",\n fill: \"#FFB629\"\n})), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M50.8437 7.80078C50.8437 7.2485 51.2914 6.80078 51.8437 6.80078H58.4085C58.9608 6.80078 59.4085 7.2485 59.4085 7.80078V11.8008C59.4085 12.3531 58.9608 12.8008 58.4085 12.8008H51.8437C51.2914 12.8008 50.8437 12.3531 50.8437 11.8008V7.80078Z\",\n fill: \"#0D953B\"\n})), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M51 16.8008C51 16.2485 51.4477 15.8008 52 15.8008H58C58.5523 15.8008 59 16.2485 59 16.8008V22.8008C59 23.3531 58.5523 23.8008 58 23.8008H52C51.4477 23.8008 51 23.3531 51 22.8008V16.8008Z\",\n fill: \"#FF6100\"\n})), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M51 27.8008C51 27.2485 51.4477 26.8008 52 26.8008H58C58.5523 26.8008 59 27.2485 59 27.8008V33.8008C59 34.3531 58.5523 34.8008 58 34.8008H52C51.4477 34.8008 51 34.3531 51 33.8008V27.8008Z\",\n fill: \"#FF6100\"\n})), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M39.5 7.80078C39.5 7.2485 39.9477 6.80078 40.5 6.80078H47C47.5523 6.80078 48 7.2485 48 7.80078V11.8008C48 12.3531 47.5523 12.8008 47 12.8008H40.5C39.9477 12.8008 39.5 12.3531 39.5 11.8008V7.80078Z\",\n fill: \"#0D953B\"\n})), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M39.5 16.8008C39.5 16.2485 39.9477 15.8008 40.5 15.8008H47C47.5523 15.8008 48 16.2485 48 16.8008V22.8008C48 23.3531 47.5523 23.8008 47 23.8008H40.5C39.9477 23.8008 39.5 23.3531 39.5 22.8008V19.8008V16.8008Z\",\n fill: \"#0099FF\"\n})), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M39.5 27.8008C39.5 27.2485 39.9477 26.8008 40.5 26.8008H47C47.5523 26.8008 48 27.2485 48 27.8008V33.8008C48 34.3531 47.5523 34.8008 47 34.8008H40.5C39.9477 34.8008 39.5 34.3531 39.5 33.8008V30.8008V27.8008Z\",\n fill: \"#0099FF\"\n})), _rect2 || (_rect2 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 36.25,\n y: 1.05078,\n width: 37.5,\n height: 37.5,\n rx: 2.75,\n stroke: \"#B1C3E9\",\n strokeWidth: 1.5\n})), _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14.5867 87.8002C12.5562 87.8002 12.0021 87.2532 12.0019 85.2137C11.9993 66.9246 11.9995 72.6352 12.0017 54.3461C12.0019 52.3995 12.587 51.8048 14.5449 51.8044C32.8487 51.7996 27.1526 51.7996 45.4564 51.8044C47.3869 51.8048 47.997 52.4229 47.9974 54.3611C48.0009 72.6503 48.0007 66.9396 47.9979 85.2288C47.9974 87.2453 47.4258 87.7999 45.3892 87.8002C36.2374 87.8012 39.0854 87.8006 29.9336 87.8006C20.818 87.8006 23.7023 87.8012 14.5867 87.8002ZM44.7774 85.2294C45.137 85.2294 45.4286 84.9378 45.4286 84.5781V77.5652C45.4286 77.2055 45.137 76.914 44.7774 76.914H37.7644C37.4047 76.914 37.1132 77.2055 37.1132 77.5652V84.5781C37.1132 84.9378 37.4047 85.2294 37.7644 85.2294H44.7774ZM26.4935 85.2294H33.5065C33.8661 85.2294 34.1577 84.9378 34.1577 84.5781V77.5652C34.1577 77.2055 33.8661 76.914 33.5065 76.914H26.4935C26.1338 76.914 25.8423 77.2055 25.8423 77.5652V84.5781C25.8423 84.9378 26.1338 85.2294 26.4935 85.2294ZM15.2226 85.2294H22.2356C22.5953 85.2294 22.8868 84.9378 22.8868 84.5781V77.5652C22.8868 77.2055 22.5953 76.914 22.2356 76.914H15.2226C14.863 76.914 14.5714 77.2055 14.5714 77.5652V84.5781C14.5714 84.9378 14.863 85.2294 15.2226 85.2294ZM37.7644 73.9585H44.7774C45.137 73.9585 45.4286 73.6669 45.4286 73.3073V66.2943C45.4286 65.9346 45.137 65.6431 44.7774 65.6431H37.7644C37.4047 65.6431 37.1132 65.9346 37.1132 66.2943V73.3073C37.1132 73.6669 37.4047 73.9585 37.7644 73.9585ZM26.4935 73.9585H33.5065C33.8661 73.9585 34.1577 73.6669 34.1577 73.3073V66.2943C34.1577 65.9346 33.8661 65.6431 33.5065 65.6431H26.4935C26.1338 65.6431 25.8423 65.9346 25.8423 66.2943V73.3073C25.8423 73.6669 26.1338 73.9585 26.4935 73.9585ZM15.2226 73.9585H22.2356C22.5953 73.9585 22.8868 73.6669 22.8868 73.3073V66.2943C22.8868 65.9346 22.5953 65.6431 22.2356 65.6431H15.2226C14.863 65.6431 14.5714 65.9346 14.5714 66.2943V73.3073C14.5714 73.6669 14.863 73.9585 15.2226 73.9585ZM26.4935 62.6876H33.5065C33.8661 62.6876 34.1577 62.5115 34.1577 62.2943V58.0588C34.1577 57.8416 33.8661 57.6655 33.5065 57.6655H26.4935C26.1338 57.6655 25.8423 57.8416 25.8423 58.0588V62.2943C25.8423 62.5115 26.1338 62.6876 26.4935 62.6876ZM37.7435 62.6876H44.7565C45.1161 62.6876 45.4077 62.5115 45.4077 62.2943V58.0588C45.4077 57.8416 45.1161 57.6655 44.7565 57.6655H37.7435C37.3839 57.6655 37.0923 57.8416 37.0923 58.0588V62.2943C37.0923 62.5115 37.3839 62.6876 37.7435 62.6876ZM15.2226 62.6876H22.2356C22.5953 62.6876 22.8868 62.5115 22.8868 62.2943V58.0588C22.8868 57.8416 22.5953 57.6655 22.2356 57.6655H15.2226C14.863 57.6655 14.5714 57.8416 14.5714 58.0588V62.2943C14.5714 62.5115 14.863 62.6876 15.2226 62.6876Z\",\n fill: \"white\"\n})), _rect3 || (_rect3 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 14,\n y: 54.8008,\n width: 32,\n height: 31,\n fill: \"white\"\n})), _path12 || (_path12 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M37 57.8008C37 57.2485 37.4477 56.8008 38 56.8008H44.4077C44.96 56.8008 45.4077 57.2485 45.4077 57.8008V61.8008C45.4077 62.3531 44.96 62.8008 44.4077 62.8008H38C37.4477 62.8008 37 62.3531 37 61.8008V57.8008Z\",\n fill: \"#0D953B\"\n})), _path13 || (_path13 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M37 66.8008C37 66.2485 37.4477 65.8008 38 65.8008H44C44.5523 65.8008 45 66.2485 45 66.8008V72.8008C45 73.3531 44.5523 73.8008 44 73.8008H38C37.4477 73.8008 37 73.3531 37 72.8008V66.8008Z\",\n fill: \"#FFB629\"\n})), _path14 || (_path14 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M37 77.8008C37 77.2485 37.4477 76.8008 38 76.8008H44C44.5523 76.8008 45 77.2485 45 77.8008V83.8008C45 84.3531 44.5523 84.8008 44 84.8008H38C37.4477 84.8008 37 84.3531 37 83.8008V77.8008Z\",\n fill: \"#FFB629\"\n})), _path15 || (_path15 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25.8437 57.8008C25.8437 57.2485 26.2914 56.8008 26.8437 56.8008H33.4085C33.9608 56.8008 34.4085 57.2485 34.4085 57.8008V61.8008C34.4085 62.3531 33.9608 62.8008 33.4085 62.8008H26.8437C26.2914 62.8008 25.8437 62.3531 25.8437 61.8008V57.8008Z\",\n fill: \"#0D953B\"\n})), _path16 || (_path16 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M26 66.8008C26 66.2485 26.4477 65.8008 27 65.8008H33C33.5523 65.8008 34 66.2485 34 66.8008V72.8008C34 73.3531 33.5523 73.8008 33 73.8008H27C26.4477 73.8008 26 73.3531 26 72.8008V66.8008Z\",\n fill: \"#FF6100\"\n})), _path17 || (_path17 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M26 77.8008C26 77.2485 26.4477 76.8008 27 76.8008H33C33.5523 76.8008 34 77.2485 34 77.8008V83.8008C34 84.3531 33.5523 84.8008 33 84.8008H27C26.4477 84.8008 26 84.3531 26 83.8008V77.8008Z\",\n fill: \"#FF6100\"\n})), _path18 || (_path18 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14.5 57.8008C14.5 57.2485 14.9477 56.8008 15.5 56.8008H22C22.5523 56.8008 23 57.2485 23 57.8008V61.8008C23 62.3531 22.5523 62.8008 22 62.8008H15.5C14.9477 62.8008 14.5 62.3531 14.5 61.8008V57.8008Z\",\n fill: \"#0D953B\"\n})), _path19 || (_path19 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14.5 66.8008C14.5 66.2485 14.9477 65.8008 15.5 65.8008H22C22.5523 65.8008 23 66.2485 23 66.8008V72.8008C23 73.3531 22.5523 73.8008 22 73.8008H15.5C14.9477 73.8008 14.5 73.3531 14.5 72.8008V69.8008V66.8008Z\",\n fill: \"#0099FF\"\n})), _path20 || (_path20 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14.5 77.8008C14.5 77.2485 14.9477 76.8008 15.5 76.8008H22C22.5523 76.8008 23 77.2485 23 77.8008V83.8008C23 84.3531 22.5523 84.8008 22 84.8008H15.5C14.9477 84.8008 14.5 84.3531 14.5 83.8008V80.8008V77.8008Z\",\n fill: \"#0099FF\"\n})), _rect4 || (_rect4 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 11.25,\n y: 51.0508,\n width: 37.5,\n height: 37.5,\n rx: 2.75,\n stroke: \"#B1C3E9\",\n strokeWidth: 1.5\n})), _path21 || (_path21 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M63.5867 87.8002C61.5562 87.8002 61.0021 87.2532 61.0019 85.2137C60.9993 66.9246 60.9995 72.6352 61.0017 54.3461C61.0019 52.3995 61.587 51.8048 63.5449 51.8044C81.8487 51.7996 76.1526 51.7996 94.4564 51.8044C96.3869 51.8048 96.997 52.4229 96.9974 54.3611C97.0009 72.6503 97.0007 66.9396 96.9979 85.2288C96.9974 87.2453 96.4258 87.7999 94.3892 87.8002C85.2374 87.8012 88.0854 87.8006 78.9336 87.8006C69.818 87.8006 72.7023 87.8012 63.5867 87.8002ZM93.7774 85.2294C94.137 85.2294 94.4286 84.9378 94.4286 84.5781V77.5652C94.4286 77.2055 94.137 76.914 93.7774 76.914H86.7644C86.4047 76.914 86.1132 77.2055 86.1132 77.5652V84.5781C86.1132 84.9378 86.4047 85.2294 86.7644 85.2294H93.7774ZM75.4935 85.2294H82.5065C82.8661 85.2294 83.1577 84.9378 83.1577 84.5781V77.5652C83.1577 77.2055 82.8661 76.914 82.5065 76.914H75.4935C75.1338 76.914 74.8423 77.2055 74.8423 77.5652V84.5781C74.8423 84.9378 75.1338 85.2294 75.4935 85.2294ZM64.2226 85.2294H71.2356C71.5953 85.2294 71.8868 84.9378 71.8868 84.5781V77.5652C71.8868 77.2055 71.5953 76.914 71.2356 76.914H64.2226C63.863 76.914 63.5714 77.2055 63.5714 77.5652V84.5781C63.5714 84.9378 63.863 85.2294 64.2226 85.2294ZM86.7644 73.9585H93.7774C94.137 73.9585 94.4286 73.6669 94.4286 73.3073V66.2943C94.4286 65.9346 94.137 65.6431 93.7774 65.6431H86.7644C86.4047 65.6431 86.1132 65.9346 86.1132 66.2943V73.3073C86.1132 73.6669 86.4047 73.9585 86.7644 73.9585ZM75.4935 73.9585H82.5065C82.8661 73.9585 83.1577 73.6669 83.1577 73.3073V66.2943C83.1577 65.9346 82.8661 65.6431 82.5065 65.6431H75.4935C75.1338 65.6431 74.8423 65.9346 74.8423 66.2943V73.3073C74.8423 73.6669 75.1338 73.9585 75.4935 73.9585ZM64.2226 73.9585H71.2356C71.5953 73.9585 71.8868 73.6669 71.8868 73.3073V66.2943C71.8868 65.9346 71.5953 65.6431 71.2356 65.6431H64.2226C63.863 65.6431 63.5714 65.9346 63.5714 66.2943V73.3073C63.5714 73.6669 63.863 73.9585 64.2226 73.9585ZM75.4935 62.6876H82.5065C82.8661 62.6876 83.1577 62.5115 83.1577 62.2943V58.0588C83.1577 57.8416 82.8661 57.6655 82.5065 57.6655H75.4935C75.1338 57.6655 74.8423 57.8416 74.8423 58.0588V62.2943C74.8423 62.5115 75.1338 62.6876 75.4935 62.6876ZM86.7435 62.6876H93.7565C94.1161 62.6876 94.4077 62.5115 94.4077 62.2943V58.0588C94.4077 57.8416 94.1161 57.6655 93.7565 57.6655H86.7435C86.3839 57.6655 86.0923 57.8416 86.0923 58.0588V62.2943C86.0923 62.5115 86.3839 62.6876 86.7435 62.6876ZM64.2226 62.6876H71.2356C71.5953 62.6876 71.8868 62.5115 71.8868 62.2943V58.0588C71.8868 57.8416 71.5953 57.6655 71.2356 57.6655H64.2226C63.863 57.6655 63.5714 57.8416 63.5714 58.0588V62.2943C63.5714 62.5115 63.863 62.6876 64.2226 62.6876Z\",\n fill: \"white\"\n})), _rect5 || (_rect5 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 63,\n y: 54.8008,\n width: 32,\n height: 31,\n fill: \"white\"\n})), _path22 || (_path22 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M86 57.8008C86 57.2485 86.4477 56.8008 87 56.8008H93.4077C93.96 56.8008 94.4077 57.2485 94.4077 57.8008V61.8008C94.4077 62.3531 93.96 62.8008 93.4077 62.8008H87C86.4477 62.8008 86 62.3531 86 61.8008V57.8008Z\",\n fill: \"#0D953B\"\n})), _path23 || (_path23 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M86 66.8008C86 66.2485 86.4477 65.8008 87 65.8008H93C93.5523 65.8008 94 66.2485 94 66.8008V72.8008C94 73.3531 93.5523 73.8008 93 73.8008H87C86.4477 73.8008 86 73.3531 86 72.8008V66.8008Z\",\n fill: \"#FFB629\"\n})), _path24 || (_path24 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M86 77.8008C86 77.2485 86.4477 76.8008 87 76.8008H93C93.5523 76.8008 94 77.2485 94 77.8008V83.8008C94 84.3531 93.5523 84.8008 93 84.8008H87C86.4477 84.8008 86 84.3531 86 83.8008V77.8008Z\",\n fill: \"#FFB629\"\n})), _path25 || (_path25 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M74.8437 57.8008C74.8437 57.2485 75.2914 56.8008 75.8437 56.8008H82.4085C82.9608 56.8008 83.4085 57.2485 83.4085 57.8008V61.8008C83.4085 62.3531 82.9608 62.8008 82.4085 62.8008H75.8437C75.2914 62.8008 74.8437 62.3531 74.8437 61.8008V57.8008Z\",\n fill: \"#0D953B\"\n})), _path26 || (_path26 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M75 66.8008C75 66.2485 75.4477 65.8008 76 65.8008H82C82.5523 65.8008 83 66.2485 83 66.8008V72.8008C83 73.3531 82.5523 73.8008 82 73.8008H76C75.4477 73.8008 75 73.3531 75 72.8008V66.8008Z\",\n fill: \"#FF6100\"\n})), _path27 || (_path27 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M75 77.8008C75 77.2485 75.4477 76.8008 76 76.8008H82C82.5523 76.8008 83 77.2485 83 77.8008V83.8008C83 84.3531 82.5523 84.8008 82 84.8008H76C75.4477 84.8008 75 84.3531 75 83.8008V77.8008Z\",\n fill: \"#FF6100\"\n})), _path28 || (_path28 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M63.5 57.8008C63.5 57.2485 63.9477 56.8008 64.5 56.8008H71C71.5523 56.8008 72 57.2485 72 57.8008V61.8008C72 62.3531 71.5523 62.8008 71 62.8008H64.5C63.9477 62.8008 63.5 62.3531 63.5 61.8008V57.8008Z\",\n fill: \"#0D953B\"\n})), _path29 || (_path29 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M63.5 66.8008C63.5 66.2485 63.9477 65.8008 64.5 65.8008H71C71.5523 65.8008 72 66.2485 72 66.8008V72.8008C72 73.3531 71.5523 73.8008 71 73.8008H64.5C63.9477 73.8008 63.5 73.3531 63.5 72.8008V69.8008V66.8008Z\",\n fill: \"#0099FF\"\n})), _path30 || (_path30 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M63.5 77.8008C63.5 77.2485 63.9477 76.8008 64.5 76.8008H71C71.5523 76.8008 72 77.2485 72 77.8008V83.8008C72 84.3531 71.5523 84.8008 71 84.8008H64.5C63.9477 84.8008 63.5 84.3531 63.5 83.8008V80.8008V77.8008Z\",\n fill: \"#0099FF\"\n})), _rect6 || (_rect6 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 60.25,\n y: 51.0508,\n width: 37.5,\n height: 37.5,\n rx: 2.75,\n stroke: \"#B1C3E9\",\n strokeWidth: 1.5\n})), _path31 || (_path31 = /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.5,\n d: \"M51.4659 94.6536C58.6527 93.4784 63.526 86.6996 62.3508 79.5129C61.1756 72.3261 54.3969 67.4527 47.2101 68.6279C40.0233 69.8032 35.15 76.5819 36.3252 83.7687C37.5004 90.9555 44.2791 95.8288 51.4659 94.6536Z\",\n fill: \"url(#paint0_linear_624:11312)\"\n})), _path32 || (_path32 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M54.6883 95.0506L57.2301 93.7347L62.5955 104.082L60.0567 105.4L54.6883 95.0506Z\",\n fill: \"#0A1551\"\n})), _path33 || (_path33 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M42.648 68.7479C40.0996 70.0709 38.0005 72.12 36.6164 74.6357C35.2324 77.1515 34.6255 80.0211 34.8722 82.8818C35.1189 85.7425 36.2082 88.4659 38.0025 90.7076C39.7969 92.9493 42.2156 94.6087 44.9529 95.4759C47.6901 96.3432 50.6229 96.3793 53.3808 95.5798C56.1386 94.7803 58.5976 93.1811 60.4466 90.9843C62.2956 88.7875 63.4517 86.0917 63.7688 83.2379C64.086 80.3841 63.5499 77.5004 62.2282 74.9513C60.4542 71.533 57.395 68.9593 53.7237 67.7959C50.0524 66.6326 46.0695 66.9748 42.6505 68.7475L42.648 68.7479ZM54.835 92.2189C52.7403 93.3075 50.3701 93.7505 48.0236 93.4916C45.6772 93.2328 43.4601 92.2839 41.653 90.7649C39.846 89.2459 38.5301 87.2251 37.8717 84.9581C37.2132 82.6911 37.2419 80.2798 37.9541 78.0291C38.6664 75.7784 40.0301 73.7896 41.8728 72.3141C43.7156 70.8386 45.9544 69.9427 48.3064 69.7399C50.6583 69.537 53.0176 70.0362 55.0858 71.1744C57.1539 72.3126 58.8381 74.0386 59.9252 76.134C61.3804 78.9418 61.6614 82.2124 60.7068 85.2274C59.7523 88.2423 57.6401 90.7551 54.8342 92.2138L54.835 92.2189Z\",\n fill: \"#0A1551\"\n})), _path34 || (_path34 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M65.435 112.755C65.1874 112.884 64.9168 112.963 64.6387 112.987C64.3605 113.011 64.0804 112.98 63.8142 112.896C63.548 112.812 63.301 112.676 63.0875 112.496C62.8739 112.316 62.6982 112.096 62.57 111.848L55.2159 97.6875L58.9853 95.7275L66.3419 109.887C66.4713 110.135 66.5506 110.406 66.5751 110.684C66.5995 110.963 66.5689 111.243 66.4846 111.51C66.4003 111.776 66.2641 112.023 66.084 112.237C65.9039 112.451 65.6833 112.627 65.435 112.755Z\",\n fill: \"#0A1551\"\n})), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint0_linear_624:11312\",\n x1: 47.2101,\n y1: 68.6279,\n x2: 51.4659,\n y2: 94.6536,\n gradientUnits: \"userSpaceOnUse\"\n}, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#92B0EC\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#92B0EC\",\n stopOpacity: 0.51\n})))));\nexport default SvgNoTablesFoundIcon;","var _circle, _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _path9, _path10, _path11, _path12, _path13, _path14, _path15, _path16, _path17, _path18, _path19, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgNoReportsFoundIcon = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 105 119\"\n}, props), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 52.5,\n cy: 56.4492,\n r: 52.5,\n fill: \"#F3F3FE\"\n})), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M35.1426 6.13654C35.1426 2.95453 37.7221 0.375 40.9041 0.375H68.2714C71.4534 0.375 74.0329 2.95453 74.0329 6.13654V40.7057C74.0329 43.8878 71.4534 46.4673 68.2714 46.4673H40.9041C37.7221 46.4673 35.1426 43.8878 35.1426 40.7057V6.13654Z\",\n fill: \"white\"\n})), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M68.2714 1.81538H40.9041C38.5176 1.81538 36.583 3.75003 36.583 6.13654V40.7057C36.583 43.0923 38.5176 45.0269 40.9041 45.0269H68.2714C70.6579 45.0269 72.5926 43.0923 72.5926 40.7057V6.13654C72.5926 3.75003 70.6579 1.81538 68.2714 1.81538ZM40.9041 0.375C37.7221 0.375 35.1426 2.95453 35.1426 6.13654V40.7057C35.1426 43.8878 37.7221 46.4673 40.9041 46.4673H68.2714C71.4534 46.4673 74.0329 43.8878 74.0329 40.7057V6.13654C74.0329 2.95453 71.4534 0.375 68.2714 0.375H40.9041Z\",\n fill: \"#B1C3E9\"\n})), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M41.6875 12.4062C41.6875 11.5433 42.3871 10.8438 43.25 10.8438H46.375C47.2379 10.8438 47.9375 11.5433 47.9375 12.4062V35.8438H41.6875V12.4062Z\",\n fill: \"#0099FF\"\n})), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M51.2812 19.4375C51.2812 18.5746 51.9808 17.875 52.8438 17.875H55.9688C56.8317 17.875 57.5312 18.5746 57.5312 19.4375V35.8438H51.2812V19.4375Z\",\n fill: \"#FF6100\"\n})), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M60.875 13.1875C60.875 12.3246 61.5746 11.625 62.4375 11.625H65.5625C66.4254 11.625 67.125 12.3246 67.125 13.1875V35.8438H60.875V13.1875Z\",\n fill: \"#FFB629\"\n})), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10 56.1365C10 52.9545 12.5795 50.375 15.7615 50.375H43.1288C46.3108 50.375 48.8904 52.9545 48.8904 56.1365V90.7057C48.8904 93.8878 46.3108 96.4673 43.1288 96.4673H15.7615C12.5795 96.4673 10 93.8878 10 90.7057V56.1365Z\",\n fill: \"white\"\n})), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M43.1288 51.8154H15.7615C13.375 51.8154 11.4404 53.75 11.4404 56.1365V90.7057C11.4404 93.0923 13.375 95.0269 15.7615 95.0269H43.1288C45.5153 95.0269 47.45 93.0923 47.45 90.7057V56.1365C47.45 53.75 45.5153 51.8154 43.1288 51.8154ZM15.7615 50.375C12.5795 50.375 10 52.9545 10 56.1365V90.7057C10 93.8878 12.5795 96.4673 15.7615 96.4673H43.1288C46.3108 96.4673 48.8904 93.8878 48.8904 90.7057V56.1365C48.8904 52.9545 46.3108 50.375 43.1288 50.375H15.7615Z\",\n fill: \"#B1C3E9\"\n})), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16.5449 62.4062C16.5449 61.5433 17.2445 60.8438 18.1074 60.8438H21.2324C22.0954 60.8438 22.7949 61.5433 22.7949 62.4062V85.8438H16.5449V62.4062Z\",\n fill: \"#0099FF\"\n})), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M26.1387 69.4375C26.1387 68.5746 26.8382 67.875 27.7012 67.875H30.8262C31.6891 67.875 32.3887 68.5746 32.3887 69.4375V85.8438H26.1387V69.4375Z\",\n fill: \"#FF6100\"\n})), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M35.7324 63.1875C35.7324 62.3246 36.432 61.625 37.2949 61.625H40.4199C41.2829 61.625 41.9824 62.3246 41.9824 63.1875V85.8438H35.7324V63.1875Z\",\n fill: \"#FFB629\"\n})), _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M59 56.1365C59 52.9545 61.5795 50.375 64.7615 50.375H92.1288C95.3108 50.375 97.8904 52.9545 97.8904 56.1365V90.7057C97.8904 93.8878 95.3108 96.4673 92.1288 96.4673H64.7615C61.5795 96.4673 59 93.8878 59 90.7057V56.1365Z\",\n fill: \"white\"\n})), _path12 || (_path12 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M92.1288 51.8154H64.7615C62.375 51.8154 60.4404 53.75 60.4404 56.1365V90.7057C60.4404 93.0923 62.375 95.0269 64.7615 95.0269H92.1288C94.5153 95.0269 96.45 93.0923 96.45 90.7057V56.1365C96.45 53.75 94.5153 51.8154 92.1288 51.8154ZM64.7615 50.375C61.5795 50.375 59 52.9545 59 56.1365V90.7057C59 93.8878 61.5795 96.4673 64.7615 96.4673H92.1288C95.3108 96.4673 97.8904 93.8878 97.8904 90.7057V56.1365C97.8904 52.9545 95.3108 50.375 92.1288 50.375H64.7615Z\",\n fill: \"#B1C3E9\"\n})), _path13 || (_path13 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M65.5449 62.4062C65.5449 61.5433 66.2445 60.8438 67.1074 60.8438H70.2324C71.0954 60.8438 71.7949 61.5433 71.7949 62.4062V85.8438H65.5449V62.4062Z\",\n fill: \"#0099FF\"\n})), _path14 || (_path14 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M75.1387 69.4375C75.1387 68.5746 75.8382 67.875 76.7012 67.875H79.8262C80.6891 67.875 81.3887 68.5746 81.3887 69.4375V85.8438H75.1387V69.4375Z\",\n fill: \"#FF6100\"\n})), _path15 || (_path15 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M84.7324 63.1875C84.7324 62.3246 85.432 61.625 86.2949 61.625H89.4199C90.2829 61.625 90.9824 62.3246 90.9824 63.1875V85.8438H84.7324V63.1875Z\",\n fill: \"#FFB629\"\n})), _path16 || (_path16 = /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.5,\n d: \"M51.4659 98.2278C58.6527 97.0526 63.526 90.2739 62.3508 83.0871C61.1756 75.9003 54.3969 71.027 47.2101 72.2022C40.0233 73.3774 35.15 80.1561 36.3252 87.3429C37.5004 94.5297 44.2791 99.403 51.4659 98.2278Z\",\n fill: \"url(#paint0_linear_624:15640)\"\n})), _path17 || (_path17 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M54.6883 98.6248L57.2301 97.309L62.5955 107.656L60.0567 108.974L54.6883 98.6248Z\",\n fill: \"#0A1551\"\n})), _path18 || (_path18 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M42.648 72.3221C40.0996 73.6452 38.0005 75.6942 36.6164 78.21C35.2324 80.7257 34.6255 83.5953 34.8722 86.456C35.1189 89.3168 36.2082 92.0401 38.0025 94.2818C39.7969 96.5235 42.2156 98.183 44.9529 99.0502C47.6901 99.9174 50.6229 99.9535 53.3808 99.154C56.1386 98.3545 58.5976 96.7553 60.4466 94.5585C62.2956 92.3617 63.4517 89.6659 63.7688 86.8121C64.086 83.9583 63.5499 81.0746 62.2282 78.5255C60.4542 75.1072 57.395 72.5335 53.7237 71.3701C50.0524 70.2068 46.0695 70.549 42.6505 72.3217L42.648 72.3221ZM54.835 95.7931C52.7403 96.8817 50.3701 97.3247 48.0236 97.0659C45.6772 96.807 43.4601 95.8581 41.653 94.3391C39.846 92.8201 38.5301 90.7993 37.8717 88.5323C37.2132 86.2653 37.2419 83.854 37.9541 81.6033C38.6664 79.3527 40.0301 77.3638 41.8728 75.8883C43.7156 74.4128 45.9544 73.517 48.3064 73.3141C50.6583 73.1112 53.0176 73.6105 55.0858 74.7486C57.1539 75.8868 58.8381 77.6128 59.9252 79.7083C61.3804 82.516 61.6614 85.7866 60.7068 88.8016C59.7523 91.8165 57.6401 94.3293 54.8342 95.788L54.835 95.7931Z\",\n fill: \"#0A1551\"\n})), _path19 || (_path19 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M65.435 116.329C65.1874 116.458 64.9168 116.537 64.6387 116.561C64.3605 116.586 64.0804 116.555 63.8142 116.47C63.548 116.386 63.301 116.25 63.0875 116.07C62.8739 115.89 62.6982 115.67 62.57 115.422L55.2159 101.262L58.9853 99.3018L66.3419 113.462C66.4713 113.709 66.5506 113.98 66.5751 114.258C66.5995 114.537 66.5689 114.817 66.4846 115.084C66.4003 115.35 66.2641 115.598 66.084 115.811C65.9039 116.025 65.6833 116.201 65.435 116.329Z\",\n fill: \"#0A1551\"\n})), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint0_linear_624:15640\",\n x1: 47.2101,\n y1: 72.2022,\n x2: 51.4659,\n y2: 98.2278,\n gradientUnits: \"userSpaceOnUse\"\n}, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#92B0EC\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#92B0EC\",\n stopOpacity: 0.51\n})))));\nexport default SvgNoReportsFoundIcon;","var _g, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgNoApprovalsFoundIcon = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 108 120\"\n}, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0_2531_6757)\"\n}, /*#__PURE__*/React.createElement(\"circle\", {\n cx: 54.5,\n cy: 58.0742,\n r: 52.5,\n fill: \"#F3F3FE\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M61.1098 58.0474C61.1098 54.8654 63.6893 52.2859 66.8713 52.2859H94.2386C97.4206 52.2859 100 54.8654 100 58.0474V92.6166C100 95.7986 97.4206 98.3782 94.2386 98.3782H66.8713C63.6893 98.3782 61.1098 95.7986 61.1098 92.6166V58.0474Z\",\n fill: \"white\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M94.2386 53.7263H66.8713C64.4848 53.7263 62.5502 55.6609 62.5502 58.0474V92.6166C62.5502 95.0031 64.4848 96.9378 66.8713 96.9378H94.2386C96.6251 96.9378 98.5598 95.0031 98.5598 92.6166V58.0474C98.5598 55.6609 96.6251 53.7263 94.2386 53.7263ZM66.8713 52.2859C63.6893 52.2859 61.1098 54.8654 61.1098 58.0474V92.6166C61.1098 95.7986 63.6893 98.3782 66.8713 98.3782H94.2386C97.4206 98.3782 100 95.7986 100 92.6166V58.0474C100 54.8654 97.4206 52.2859 94.2386 52.2859H66.8713Z\",\n fill: \"#B1C3E9\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M80.505 65.802V69.573M80.505 69.573H72.7126C72.0498 69.573 71.5126 70.1102 71.5126 70.773V71.7485M80.505 69.573H88.0073C88.67 69.573 89.2073 70.1102 89.2073 70.773V71.7485\",\n stroke: \"#97ACDA\",\n strokeWidth: 1.5\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M80.505 83.8884L80.505 79.581M80.505 79.581L72.7126 79.581C72.0498 79.581 71.5126 79.0437 71.5126 78.381L71.5126 77.4054M80.505 79.581L88.0073 79.581C88.67 79.581 89.2073 79.0437 89.2073 78.381L89.2073 77.4054\",\n stroke: \"#97ACDA\",\n strokeWidth: 1.5\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M66.0005 74.5047C66.0005 72.9026 67.2992 71.6039 68.9012 71.6039H74.7028C76.3048 71.6039 77.6035 72.9026 77.6035 74.5047C77.6035 76.1067 76.3048 77.4054 74.7028 77.4054H68.9012C67.2992 77.4054 66.0005 76.1067 66.0005 74.5047Z\",\n fill: \"#FFB629\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M83.3989 74.5047C83.3989 72.9026 84.6976 71.6039 86.2997 71.6039H92.1012C93.7033 71.6039 95.002 72.9026 95.002 74.5047C95.002 76.1067 93.7033 77.4054 92.1012 77.4054H86.2997C84.6976 77.4054 83.3989 76.1067 83.3989 74.5047Z\",\n fill: \"#FFB629\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M74.6997 86.7891C74.6997 85.1871 75.9984 83.8883 77.6005 83.8883H83.4021C85.0041 83.8883 86.3028 85.1871 86.3028 86.7891C86.3028 88.3911 85.0041 89.6898 83.4021 89.6898H77.6005C75.9984 89.6898 74.6997 88.3911 74.6997 86.7891Z\",\n fill: \"#0099FF\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n x: 74.6997,\n y: 60,\n width: 11.6031,\n height: 5.80154,\n rx: 2.90077,\n fill: \"#FF6100\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M37.0004 7.76154C37.0004 4.57953 39.5799 2 42.7619 2H70.1292C73.3112 2 75.8907 4.57953 75.8907 7.76154V42.3307C75.8907 45.5128 73.3112 48.0923 70.1292 48.0923H42.7619C39.5799 48.0923 37.0004 45.5128 37.0004 42.3307V7.76154Z\",\n fill: \"white\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M70.2698 3.44038H42.9025C40.516 3.44038 38.5814 5.37503 38.5814 7.76154V42.3307C38.5814 44.7173 40.516 46.6519 42.9025 46.6519H70.2698C72.6563 46.6519 74.591 44.7173 74.591 42.3307V7.76154C74.591 5.37503 72.6563 3.44038 70.2698 3.44038ZM42.9025 2C39.7205 2 37.141 4.57953 37.141 7.76154V42.3307C37.141 45.5128 39.7205 48.0923 42.9025 48.0923H70.2698C73.4518 48.0923 76.0314 45.5128 76.0314 42.3307V7.76154C76.0314 4.57953 73.4518 2 70.2698 2H42.9025Z\",\n fill: \"#B1C3E9\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M56.5047 15.802V19.573M56.5047 19.573H48.7123C48.0496 19.573 47.5123 20.1102 47.5123 20.773V21.7485M56.5047 19.573H64.007C64.6698 19.573 65.207 20.1102 65.207 20.773V21.7485\",\n stroke: \"#97ACDA\",\n strokeWidth: 1.5\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M56.5047 33.8883L56.5047 29.581M56.5047 29.581L48.7123 29.581C48.0496 29.581 47.5123 29.0437 47.5123 28.381L47.5123 27.4054M56.5047 29.581L64.007 29.581C64.6698 29.581 65.207 29.0437 65.207 28.381L65.207 27.4054\",\n stroke: \"#97ACDA\",\n strokeWidth: 1.5\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M42.0002 24.5047C42.0002 22.9026 43.2989 21.6039 44.9009 21.6039H50.7025C52.3046 21.6039 53.6033 22.9026 53.6033 24.5047C53.6033 26.1067 52.3046 27.4054 50.7025 27.4054H44.9009C43.2989 27.4054 42.0002 26.1067 42.0002 24.5047Z\",\n fill: \"#FFB629\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M59.3986 24.5047C59.3986 22.9026 60.6973 21.6039 62.2994 21.6039H68.101C69.703 21.6039 71.0017 22.9026 71.0017 24.5047C71.0017 26.1067 69.703 27.4054 68.101 27.4054H62.2994C60.6973 27.4054 59.3986 26.1067 59.3986 24.5047Z\",\n fill: \"#FFB629\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M50.6994 36.7891C50.6994 35.187 51.9981 33.8883 53.6002 33.8883H59.4018C61.0038 33.8883 62.3025 35.187 62.3025 36.7891C62.3025 38.3911 61.0038 39.6898 59.4018 39.6898H53.6002C51.9981 39.6898 50.6994 38.3911 50.6994 36.7891Z\",\n fill: \"#0099FF\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n x: 50.6994,\n y: 9.99999,\n width: 11.6031,\n height: 5.80154,\n rx: 2.90077,\n fill: \"#FF6100\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 58.0474C12 54.8654 14.5795 52.2859 17.7615 52.2859H45.1288C48.3108 52.2859 50.8904 54.8654 50.8904 58.0474V92.6166C50.8904 95.7986 48.3108 98.3782 45.1288 98.3782H17.7615C14.5795 98.3782 12 95.7986 12 92.6166V58.0474Z\",\n fill: \"white\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M45.1288 53.7263H17.7615C15.375 53.7263 13.4404 55.6609 13.4404 58.0474V92.6166C13.4404 95.0031 15.375 96.9378 17.7615 96.9378H45.1288C47.5153 96.9378 49.45 95.0031 49.45 92.6166V58.0474C49.45 55.6609 47.5153 53.7263 45.1288 53.7263ZM17.7615 52.2859C14.5795 52.2859 12 54.8654 12 58.0474V92.6166C12 95.7986 14.5795 98.3782 17.7615 98.3782H45.1288C48.3108 98.3782 50.8904 95.7986 50.8904 92.6166V58.0474C50.8904 54.8654 48.3108 52.2859 45.1288 52.2859H17.7615Z\",\n fill: \"#B1C3E9\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M31.505 65.802V69.573M31.505 69.573H23.7126C23.0498 69.573 22.5126 70.1102 22.5126 70.773V71.7485M31.505 69.573H39.0073C39.67 69.573 40.2073 70.1102 40.2073 70.773V71.7485\",\n stroke: \"#97ACDA\",\n strokeWidth: 1.5\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M31.505 83.8884L31.505 79.581M31.505 79.581L23.7126 79.581C23.0498 79.581 22.5126 79.0437 22.5126 78.381L22.5126 77.4054M31.505 79.581L39.0073 79.581C39.67 79.581 40.2073 79.0437 40.2073 78.381L40.2073 77.4054\",\n stroke: \"#97ACDA\",\n strokeWidth: 1.5\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.0005 74.5047C17.0005 72.9026 18.2992 71.6039 19.9012 71.6039H25.7028C27.3048 71.6039 28.6035 72.9026 28.6035 74.5047C28.6035 76.1067 27.3048 77.4054 25.7028 77.4054H19.9012C18.2992 77.4054 17.0005 76.1067 17.0005 74.5047Z\",\n fill: \"#FFB629\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M34.3989 74.5047C34.3989 72.9026 35.6976 71.6039 37.2997 71.6039H43.1012C44.7033 71.6039 46.002 72.9026 46.002 74.5047C46.002 76.1067 44.7033 77.4054 43.1012 77.4054H37.2997C35.6976 77.4054 34.3989 76.1067 34.3989 74.5047Z\",\n fill: \"#FFB629\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25.6997 86.7891C25.6997 85.1871 26.9984 83.8883 28.6005 83.8883H34.4021C36.0041 83.8883 37.3028 85.1871 37.3028 86.7891C37.3028 88.3911 36.0041 89.6898 34.4021 89.6898H28.6005C26.9984 89.6898 25.6997 88.3911 25.6997 86.7891Z\",\n fill: \"#0099FF\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n x: 25.6997,\n y: 60,\n width: 11.6031,\n height: 5.80154,\n rx: 2.90077,\n fill: \"#FF6100\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.5,\n d: \"M53.463 99.8529C60.6498 98.6777 65.5231 91.899 64.3479 84.7122C63.1727 77.5254 56.3939 72.6521 49.2072 73.8273C42.0204 75.0025 37.147 81.7812 38.3222 88.968C39.4975 96.1548 46.2762 101.028 53.463 99.8529Z\",\n fill: \"url(#paint0_linear_2531_6757)\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M56.6854 100.25L59.2272 98.9346L64.5926 109.282L62.0538 110.6L56.6854 100.25Z\",\n fill: \"#0A1551\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M44.646 73.9471C42.0976 75.2702 39.9985 77.3192 38.6145 79.835C37.2304 82.3507 36.6236 85.2203 36.8703 88.081C37.117 90.9418 38.2063 93.6651 40.0006 95.9068C41.7949 98.1485 44.2136 99.808 46.9509 100.675C49.6882 101.542 52.621 101.579 55.3788 100.779C58.1366 99.9795 60.5956 98.3803 62.4446 96.1835C64.2936 93.9867 65.4498 91.2909 65.7669 88.4371C66.084 85.5833 65.5479 82.6996 64.2263 80.1505C62.4522 76.7322 59.3931 74.1585 55.7218 72.9951C52.0505 71.8318 48.0676 72.174 44.6486 73.9467L44.646 73.9471ZM56.8331 97.4181C54.7384 98.5067 52.3681 98.9497 50.0217 98.6909C47.6752 98.432 45.4581 97.4831 43.6511 95.9641C41.844 94.4451 40.5281 92.4243 39.8697 90.1573C39.2113 87.8903 39.24 85.479 39.9522 83.2283C40.6644 80.9777 42.0282 78.9888 43.8709 77.5133C45.7136 76.0378 47.9525 75.142 50.3044 74.9391C52.6563 74.7362 55.0156 75.2355 57.0838 76.3736C59.152 77.5118 60.8362 79.2378 61.9233 81.3333C63.3784 84.141 63.6594 87.4116 62.7049 90.4266C61.7503 93.4415 59.6382 95.9543 56.8322 97.413L56.8331 97.4181Z\",\n fill: \"#0A1551\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M67.432 117.953C67.1844 118.082 66.9139 118.161 66.6357 118.185C66.3576 118.21 66.0775 118.179 65.8113 118.094C65.5451 118.01 65.298 117.874 65.0845 117.694C64.871 117.514 64.6952 117.294 64.5671 117.046L57.213 102.886L60.9824 100.926L68.339 115.086C68.4684 115.333 68.5477 115.604 68.5721 115.882C68.5966 116.161 68.566 116.441 68.4817 116.708C68.3974 116.974 68.2612 117.222 68.0811 117.435C67.901 117.649 67.6804 117.825 67.432 117.953Z\",\n fill: \"#0A1551\"\n}))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint0_linear_2531_6757\",\n x1: 49.2072,\n y1: 73.8273,\n x2: 53.463,\n y2: 99.8529,\n gradientUnits: \"userSpaceOnUse\"\n}, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#92B0EC\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#92B0EC\",\n stopOpacity: 0.51\n})), /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0_2531_6757\"\n}, /*#__PURE__*/React.createElement(\"rect\", {\n width: 108,\n height: 120,\n fill: \"white\"\n})))));\nexport default SvgNoApprovalsFoundIcon;","var _circle, _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _path9, _path10, _path11, _path12, _path13, _path14, _path15, _path16, _path17, _path18, _path19, _path20, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgNoSignDocumentsFoundIcon = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 104 120\"\n}, props), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 52,\n cy: 63,\n r: 52,\n fill: \"#F3F3FE\"\n})), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32.5 46.334V11.666a6.5 6.5 0 0 1 6.5-6.5h21.218c.287 0 .563.114.766.317l5.1 5.1 5.099 5.099c.203.203.317.479.317.766v29.884a6.5 6.5 0 0 1-6.5 6.5H39a6.5 6.5 0 0 1-6.5-6.5Z\",\n fill: \"#fff\"\n})), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M40.083 24.97a2.47 2.47 0 0 1 2.47-2.47h18.894a2.47 2.47 0 0 1 0 4.94H42.553a2.47 2.47 0 0 1-2.47-2.47Z\",\n fill: \"#09F\"\n})), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M40.083 33.463a2.47 2.47 0 0 1 2.47-2.47h18.894a2.47 2.47 0 1 1 0 4.94H42.553a2.47 2.47 0 0 1-2.47-2.47Z\",\n fill: \"#FF6100\"\n})), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M46.165 42.22c0-.16-.062-.127-.153-.125-.12.002-2.394 1.416-2.394 1.416s-.994.428-1.262.645c-1.554 1.5-2.075.216-2.167 0-.308-.731.103-1.393.613-1.937.265-.213 1.553-1.313 2.939-1.974.712-.34 1.325-.707 2.152-.726.325-.033 1.273-.128 1.88.303.449.32.491 1.492.582 1.705.169.394.297.484.297 1.243 0 .371-.696 1.592-.878 2.458.089-.05.74-.264 1.132-.392.567-.185.895-.155 1.467-.426l.446-.211c2.266-1.075 5.62-2.21 6.602-2.497.288-.084 1.54-.23 2.268.287.674.478 1.019 1.854 1.019 1.854s.064.313.919 0v1.98c-.472-.142-.832-.161-1.112-.367-.61-.641-.971-1.6-1.258-1.517-1.932.567-2.818 1.3-7.153 2.795-.864.298-1.49.778-2.165.888-.946.156-1.66.313-2.413.238-.534-.053-.749-.189-1.084-.517-.452-.44-.368-.915-.549-1.52-.192-.641-.418-1.007-.395-1.667.019-.553.395-1.386.395-1.386s.272-.392.272-.55Z\",\n fill: \"#FFB629\"\n})), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M32.5 11.667a6.5 6.5 0 0 1 6.5-6.5h22.75c.287 0 .563.114.766.317l8.667 8.667c.203.203.317.479.317.766v31.416a6.5 6.5 0 0 1-6.5 6.5H39a6.5 6.5 0 0 1-6.5-6.5V11.668ZM39 7.333a4.333 4.333 0 0 0-4.333 4.334v34.666A4.333 4.333 0 0 0 39 50.668h26a4.333 4.333 0 0 0 4.333-4.334V16h-5.416a3.25 3.25 0 0 1-3.25-3.25V7.333H39Z\",\n fill: \"#C8CEED\"\n})), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M75.504 30.215a1.809 1.809 0 0 0-2.559 0l-4.631 4.631-5.911 5.911-.972 3.887a.905.905 0 0 0 1.097 1.097l3.887-.972 5.91-5.91 4.632-4.633a1.81 1.81 0 0 0 0-2.558l-1.453-1.453Z\",\n fill: \"#0A1551\"\n})), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6.5 98.334V63.666a6.5 6.5 0 0 1 6.5-6.5h21.218c.287 0 .563.114.766.317l5.1 5.1 5.099 5.099c.203.203.317.479.317.766v29.885a6.5 6.5 0 0 1-6.5 6.499H13a6.5 6.5 0 0 1-6.5-6.5Z\",\n fill: \"#fff\"\n})), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14.083 76.97a2.47 2.47 0 0 1 2.47-2.47h18.894a2.47 2.47 0 0 1 0 4.94H16.553a2.47 2.47 0 0 1-2.47-2.47Z\",\n fill: \"#09F\"\n})), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14.083 85.463a2.47 2.47 0 0 1 2.47-2.47h18.894a2.47 2.47 0 1 1 0 4.94H16.553a2.47 2.47 0 0 1-2.47-2.47Z\",\n fill: \"#FF6100\"\n})), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20.165 94.22c0-.16-.062-.127-.153-.125-.12.002-2.394 1.416-2.394 1.416s-.994.428-1.262.645c-1.554 1.5-2.075.216-2.167 0-.308-.731.103-1.393.613-1.937.265-.213 1.553-1.313 2.939-1.974.712-.34 1.325-.707 2.152-.726.325-.033 1.273-.128 1.88.303.449.32.491 1.492.582 1.705.168.394.297.484.297 1.243 0 .371-.696 1.592-.878 2.458.089-.05.74-.264 1.132-.392.567-.185.895-.155 1.467-.426l.446-.211c2.266-1.075 5.62-2.21 6.602-2.497.288-.084 1.54-.23 2.268.287.674.478 1.019 1.854 1.019 1.854s.064.313.919 0v1.98c-.472-.142-.832-.161-1.112-.367-.61-.641-.971-1.6-1.258-1.517-1.932.567-2.818 1.3-7.153 2.795-.864.298-1.49.778-2.165.888-.946.156-1.66.313-2.413.238-.534-.053-.749-.189-1.084-.517-.451-.44-.368-.915-.549-1.52-.192-.641-.418-1.007-.395-1.667.018-.553.395-1.386.395-1.386s.272-.392.272-.55Z\",\n fill: \"#FFB629\"\n})), _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M6.5 63.667a6.5 6.5 0 0 1 6.5-6.5h22.75c.287 0 .563.114.766.317l8.667 8.667c.203.203.317.478.317.766v31.416a6.5 6.5 0 0 1-6.5 6.5H13a6.5 6.5 0 0 1-6.5-6.5V63.668Zm6.5-4.334a4.333 4.333 0 0 0-4.333 4.334v34.666A4.333 4.333 0 0 0 13 102.668h26a4.333 4.333 0 0 0 4.333-4.334V68h-5.416a3.25 3.25 0 0 1-3.25-3.25v-5.416H13Z\",\n fill: \"#C8CEED\"\n})), _path12 || (_path12 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M49.504 82.215a1.809 1.809 0 0 0-2.559 0l-4.632 4.631-5.91 5.911-.972 3.887a.905.905 0 0 0 1.097 1.097l3.886-.972 5.911-5.91 4.632-4.632a1.81 1.81 0 0 0 0-2.559l-1.453-1.454Z\",\n fill: \"#0A1551\"\n})), _path13 || (_path13 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M58.5 98.334V63.666a6.5 6.5 0 0 1 6.5-6.5h21.218c.287 0 .563.114.766.317l5.1 5.1 5.099 5.099c.203.203.317.479.317.766v29.885a6.5 6.5 0 0 1-6.5 6.499H65a6.5 6.5 0 0 1-6.5-6.5Z\",\n fill: \"#fff\"\n})), _path14 || (_path14 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M66.083 76.97a2.47 2.47 0 0 1 2.47-2.47h18.894a2.47 2.47 0 0 1 0 4.94H68.553a2.47 2.47 0 0 1-2.47-2.47Z\",\n fill: \"#09F\"\n})), _path15 || (_path15 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M66.083 85.463a2.47 2.47 0 0 1 2.47-2.47h18.894a2.47 2.47 0 1 1 0 4.94H68.553a2.47 2.47 0 0 1-2.47-2.47Z\",\n fill: \"#FF6100\"\n})), _path16 || (_path16 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M72.165 94.22c0-.16-.062-.127-.153-.125-.12.002-2.394 1.416-2.394 1.416s-.994.428-1.262.645c-1.554 1.5-2.075.216-2.167 0-.308-.731.103-1.393.613-1.937.265-.213 1.553-1.313 2.939-1.974.712-.34 1.325-.707 2.152-.726.325-.033 1.273-.128 1.88.303.449.32.491 1.492.582 1.705.168.394.297.484.297 1.243 0 .371-.696 1.592-.878 2.458.089-.05.74-.264 1.132-.392.567-.185.895-.155 1.467-.426l.446-.211c2.266-1.075 5.62-2.21 6.602-2.497.288-.084 1.54-.23 2.268.287.674.478 1.019 1.854 1.019 1.854s.064.313.919 0v1.98c-.472-.142-.832-.161-1.112-.367-.61-.641-.972-1.6-1.258-1.517-1.932.567-2.818 1.3-7.153 2.795-.864.298-1.49.778-2.165.888-.946.156-1.66.313-2.413.238-.534-.053-.749-.189-1.084-.517-.451-.44-.368-.915-.549-1.52-.192-.641-.418-1.007-.395-1.667.018-.553.395-1.386.395-1.386s.272-.392.272-.55Z\",\n fill: \"#FFB629\"\n})), _path17 || (_path17 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M58.5 63.667a6.5 6.5 0 0 1 6.5-6.5h22.75c.287 0 .563.114.766.317l8.667 8.667c.203.203.317.478.317.766v31.416a6.5 6.5 0 0 1-6.5 6.5H65a6.5 6.5 0 0 1-6.5-6.5V63.668Zm6.5-4.334a4.333 4.333 0 0 0-4.333 4.334v34.666A4.333 4.333 0 0 0 65 102.668h26a4.333 4.333 0 0 0 4.333-4.334V68h-5.416a3.25 3.25 0 0 1-3.25-3.25v-5.416H65Z\",\n fill: \"#C8CEED\"\n})), _path18 || (_path18 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M101.504 82.215a1.81 1.81 0 0 0-2.559 0l-4.631 4.631-5.911 5.911-.972 3.887a.905.905 0 0 0 1.097 1.097l3.886-.972 5.911-5.91 4.632-4.632a1.808 1.808 0 0 0 0-2.559l-1.453-1.454Z\",\n fill: \"#0A1551\"\n})), _path19 || (_path19 = /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.5,\n d: \"M44.518 99.71c7.283 0 13.186-5.904 13.186-13.186 0-7.283-5.903-13.186-13.186-13.186-7.282 0-13.185 5.903-13.185 13.186 0 7.282 5.903 13.185 13.185 13.185Z\",\n fill: \"url(#a)\"\n})), _path20 || (_path20 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M37.83 73.63a14.52 14.52 0 0 0 12.074 26.372l1.153 2.224-.66.343 7.354 14.16a2.114 2.114 0 0 0 2.068 1.14c.278-.024.549-.103.796-.232a2.115 2.115 0 0 0 1.05-1.246 2.12 2.12 0 0 0-.143-1.622l-7.356-14.16-.57.296-1.152-2.222a14.518 14.518 0 0 0-3.539-26.004 14.524 14.524 0 0 0-11.073.951h-.002Zm12.187 23.472a11.933 11.933 0 0 1-12.963-19.905 11.933 11.933 0 0 1 18.053 3.82 11.934 11.934 0 0 1-5.091 16.08v.005Z\",\n fill: \"#0A1551\"\n})), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"a\",\n x1: 44.518,\n y1: 73.338,\n x2: 44.518,\n y2: 99.709,\n gradientUnits: \"userSpaceOnUse\"\n}, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#92B0EC\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#92B0EC\",\n stopOpacity: 0.51\n})))));\nexport default SvgNoSignDocumentsFoundIcon;","import React from 'react';\nimport {\n arrayOf, node, oneOfType, string, bool\n} from 'prop-types';\nimport { IconMagnifyingGlass } from '@jotforminc/svg-icons';\n\nimport EmptyListBase from './EmptyListBase';\n\nimport NoFormsFoundIcon from '../assets/svg/noFormsFoundIcon.svg';\nimport NoAppsFoundIcon from '../assets/svg/noAppsFoundIcon.svg';\nimport NoTablessFoundIcon from '../assets/svg/noTablesFoundIcon.svg';\nimport NoReportsFoundIcon from '../assets/svg/noReportsFoundIcon.svg';\nimport NoApprovalsFoundIcon from '../assets/svg/noApprovalsFoundIcon.svg';\nimport NoSignDocumentsFoundIcon from '../assets/svg/noSignDocumentsFoundIcon.svg';\n\nexport const resourceData = {\n item: {\n title: 'No results found.',\n description: 'We couldn\\'t find any matching items.',\n icon: (\n
    \n \n
    \n )\n },\n form: {\n title: 'No results found.',\n description: 'We couldn\\'t find any matching items.',\n icon: \n },\n portal: {\n title: 'No results found.',\n description: 'We couldn\\'t find any matching items.',\n icon: \n },\n table: {\n title: 'No results found.',\n description: 'We couldn\\'t find any matching items.',\n icon: \n },\n report: {\n title: 'No results found.',\n description: 'We couldn\\'t find any matching items.',\n icon: \n },\n approval: {\n title: 'No results found.',\n description: 'We couldn\\'t find any matching items.',\n icon: \n },\n sign: {\n title: 'No results found.',\n description: 'We couldn\\'t find any matching items.',\n icon: \n }\n};\n\nfunction NotFoundList({\n icon,\n title,\n description,\n resourceType,\n isTitleUppercase\n}) {\n const defaults = (resourceType && resourceData[resourceType]) ? resourceData[resourceType] : resourceData.form;\n const uppercase = isTitleUppercase !== null ? isTitleUppercase : false;\n\n return (\n \n );\n}\n\nNotFoundList.propTypes = {\n icon: oneOfType([arrayOf(node), node]),\n title: string,\n description: string,\n resourceType: string,\n isTitleUppercase: bool\n};\n\nNotFoundList.defaultProps = {\n icon: null,\n title: null,\n description: null,\n resourceType: 'form',\n isTitleUppercase: null\n};\n\nexport default NotFoundList;\n","import { LATEST_ACTIVE_SERVERS_LIST, RANDOM_ACTIVE_200_SERVERS_LIST, RANDOM_ACTIVE_300_SERVERS_LIST } from './constants/latestActiveServers';\n\nconst isActive = (testEnvList = [], parameter) => {\n const { host, search } = window.location;\n return host.indexOf('jotform.biz') > -1 || host.indexOf('jotform.pro') > -1 || testEnvList.indexOf(host) > -1 || (parameter && search.indexOf(parameter) > -1);\n};\n\nexport const isEnterprise = () => {\n if (!window) {\n return false;\n }\n\n if (window.JOTFORM_ENV === 'ENTERPRISE') {\n return true;\n }\n\n if (window.JotForm && window.JotForm.enterprise) {\n return true;\n }\n\n return false;\n};\n\nexport const isTestAndDevelopmentEnvironment = () => isActive([\n 'eeproduct2.jotform.com',\n 'enterpriseqa.jotform.com',\n 'enterpriseqahipaa.jotform.com',\n 'demo.jotform.com',\n 'acmetest.jotform.com',\n 'uxlabs.jotform.com',\n 'soc2-test1.jotform.com',\n 'mobile-test.jotform.com',\n 'enterpriseqamanual.jotform.com',\n 'marketing.jotform.com',\n 'passgp.jotform.com',\n 'mcrcbiobank.jotform.com',\n 'aat.jotform.com',\n 'sso-multi-test.jotform.com'\n]);\n\nexport const isOneOfTheMostActiveEnterpriseServers = () => {\n return isActive(LATEST_ACTIVE_SERVERS_LIST) || isActive(RANDOM_ACTIVE_200_SERVERS_LIST) || isActive(RANDOM_ACTIVE_300_SERVERS_LIST) || isTestAndDevelopmentEnvironment();\n};\n\nexport const isNew2FAEnabled = () => window.location.search.indexOf('new2FA') > -1;\n\nexport const isNewSMTPFlow = (user = {}) => {\n const { isNewSMTPFlowEnabled = false } = user;\n return window?.user?.isNewSMTPFlowEnabled || isNewSMTPFlowEnabled;\n};\n","import { RequestLayer, Interceptors } from '@jotforminc/request-layer';\nimport { isEnterprise } from '@jotforminc/enterprise-utils';\nimport { ACTION_PROJECT_NAMES } from '../constants';\nimport { isProd } from '../utils';\n\nconst layer = new RequestLayer('/API', {\n interceptorConfig: {\n teamID: global.teamID,\n customResponseInterceptors: [Interceptors.requestManagerResponseNormalizer]\n }\n});\n\n// set enterprise promotions user settings by key\nexport const setEpUserSettings = (key, value = 1) => {\n return layer.post('ep/user/settings',\n new URLSearchParams({ key, value }));\n};\n\n// get enterprise promotions user settings by key\nexport const getEpUserSettings = key => {\n return layer.get(`ep/user/settings/${key}`);\n};\n\n// get enterprise promotions user settings by key\nexport const getEpUserDetails = () => {\n return layer.get('ep/user-details');\n};\n\n// enterprise promotion assets\nexport const getFirstAvailableEnterprisePromotion = () => {\n const searchParams = new URLSearchParams(window.location.search);\n return layer.get(`ep/user/promotion?${searchParams}`);\n};\n\n// enterprise promotion assets\nexport const getEnterprisePromotionByAssetName = asset => {\n const searchParams = new URLSearchParams(window.location.search);\n return layer.get(`ep/user/promotion/${asset}?${searchParams}`);\n};\n\n// save customer to hubspot as form submission\nexport const saveCustomerAsHubspotFormByUsername = params => {\n if (isEnterprise()) return;\n\n const searchParams = new URLSearchParams();\n\n const { lastProductAssetInteraction } = params;\n\n if (lastProductAssetInteraction) {\n searchParams.append('last_product_asset_interaction', lastProductAssetInteraction);\n }\n\n return layer.post('ep/user/hubspot-contact-form', searchParams);\n};\n\nexport const setEPActions = ({\n asset, target, action, intent\n}) => {\n if (isProd()) {\n const paramsObj = {\n project: ACTION_PROJECT_NAMES.ENTERPRISE_PROMOTIONS,\n asset,\n target,\n action\n };\n\n if (intent) {\n paramsObj.intent = intent;\n }\n\n const params = new URLSearchParams(paramsObj);\n\n return layer.post('ep/user/actions', params);\n }\n};\n","import { AB_TEST } from './abTest';\nimport { CAMPAIGN } from './campaign';\nimport { PRODUCT } from './product';\nimport { AUTOMATION } from './automation';\nimport { WEBINAR } from './webinar';\n\nexport const ASSET_IDENTIFIER = {\n AB_TEST, CAMPAIGN, PRODUCT, AUTOMATION, WEBINAR\n};\n","export const AB_TEST = {\n // modals\n ADD_COLLABORATOR_MODAL: 'addCollaboratorModal',\n ADD_COLLABORATOR_BANNER: 'addColabBanner',\n ADMIN_CONSOLE_SINGLE_MODAL: 'adminConsoleSingleModal',\n ADMIN_CONSOLE_SLIDER_MODAL: 'adminConsoleSliderModal',\n ADVERTISEMENT_LEAD_FLOW_MODAL: 'adLeadFlowModal',\n AD_BANNER_MODAL: 'adBannerModal',\n AD_FIRST_EXIT_INTENT_MODAL: 'adFirstExitIntentModal',\n AD_SECOND_EXIT_INTENT_MODAL: 'adSecondExitIntentModal',\n APPLY_REAL_TIME_SUPPORT_MODAL: 'applyRealTimeSupportModal',\n ASSIGN_FORM_MODAL: 'assignFormModal',\n BLOG_CONTENT_BANNER_MODAL: 'blogContentBannerModal',\n BSG_EDUCATION_DISCOUNT_MODAL: 'bsgEducationDiscountModal',\n BSG_NONPROFIT_DISCOUNT_MODAL: 'bsgNonprofitDiscountModal',\n CONTACT_SUPPORT_MODAL: 'contactSupportModal',\n DEDICATED_SUPPORT_MODAL: 'dedicatedSupportModal',\n SINGLE_COLUMN_DEDICATED_SUPPORT_MODAL: 'singleColumnDedicatedSupportModal',\n EDUCATION_BDM_FLOW_MODAL: 'educationBdmFlowModal',\n EDUCATION_DISCOUNT_MODAL: 'educationDiscountModal',\n EDUCATION_DISCOUNT_MODAL_FERPA_VIOLATION_EXAMPLES: 'educationDiscountModalFerpaViolationExamples',\n ENHANCE_COLLAB_MODAL: 'enhanceCollaborationModal',\n FASTER_SUPPORT_RESPONSE_MODAL: 'fasterSupportResponseModal',\n FEATURE_SLIDER_MODAL: 'featureSliderModal',\n LOCAL_DATA_RESIDENCY_MODAL: 'localDataResidencyModal',\n PRICING_TABLE_MODAL: 'pricingTableModal',\n PRICING_TABLE_ISOLATED_MODAL: 'pricingTableIsolatedModal',\n SHARE_FOLDER_MODAL: 'shareFolderModal',\n SOC2_COMPLIANCE_MODAL: 'soc2ComplianceModal',\n SSO_PREFILL_MODAL: 'ssoPrefillModal',\n SSO_PREFILL_DETAILED_MODAL: 'ssoPrefillDetailedModal',\n PROFESSIONAL_SERVICES_MODAL: 'professionalServicesModal',\n REQUIRE_SSO_MODAL: 'requireSsoModal',\n SECURITY_PROPERTIES_MODAL: 'securityPropertiesModal',\n SYSTEM_LOGS_MODAL: 'systemLogsModal',\n ZOOM_SUPPORT_MODAL: 'zoomSupportModal',\n APPEXCHANGE_MODAL: 'appExchangeModal',\n TEAMS_WHITE_LABELING_MODAL: 'teamsWhiteLabelingModal',\n SCHEDULE_ZOOM_MODAL: 'scheduleZoomModal',\n // bsge plan discount modals\n BRONZE_PLAN_DISCOUNT_MODAL: 'bronzePlanDiscountModal',\n SILVER_PLAN_DISCOUNT_MODAL: 'silverPlanDiscountModal',\n GOLD_PLAN_DISCOUNT_MODAL: 'goldPlanDiscountModal',\n ENTERPRISE_PLAN_DISCOUNT_MODAL: 'enterprisePlanDiscountModal',\n // banners\n ACTIVE_SUBMISSON_BANNER: 'activeSubmissionBanner',\n ADMIN_CONSOLE_BANNER: 'adminConsoleBanner',\n ADD_AND_MANAGE_USERS_BANNER_ALT: 'addAndManageUsersBannerAlt',\n ADVERTISEMENT_LEAD_FLOW_BANNER: 'advertisementLeadFlowBanner',\n APPLY_REAL_TIME_SUPPORT_BANNER: 'applyRealTimeSupportBanner',\n ASSIGN_FORM_BANNER: 'assignFormBanner',\n BLOG_CONTENT_BOOST_BANNER: 'blogContentBoostBanner',\n BLOG_CONTENT_SPEED_UP_BANNER: 'blogContentSpeedUpBanner',\n BLOG_EDUCATION_CONTENT_BANNER: 'blogEducationContentBanner',\n BLOG_CONTENT_SIDE_BANNER: 'blogContentSideBanner',\n CUSTOM_DOMAIN_TOOLTIP_BANNER: 'customDomainTooltip',\n EDUCATION_BDM_FLOW_BANNER: 'educationBdmFlowBanner',\n ENTERPRISE_BILLING_BANNER: 'enterpriseBillingBanner',\n ENTERPRISE_SECURITY_ITEMS_SECTION: 'enterpriseSecurityItemsSection',\n ENTERPRISE_WHITE_LABELING_BANNER: 'enterpriseWhiteLabelingBanner',\n ENTERPRISE_EDUCATION_DISCOUNT_MODAL: 'enterpriseEducationDiscountModal',\n ENTERPRISE_NONPROFIT_DISCOUNT_MODAL: 'enterpriseNonprofitDiscountModal',\n FASTER_SUPPORT_RESPONSE_BANNER: 'fasterSupportResponseBanner',\n FASTER_SUPPORT_RESPONSE_TOGGLE_BANNER: 'fasterSupportResponseToggleBanner',\n FULLY_CUSTOMIZE_BANNER: 'fullyCustomizeBanner',\n IP_RESTRICTION_BANNER: 'ipRestrictionBanner',\n LOCAL_DATA_RESIDENCY_ALT_BANNER: 'localDataResidencyAltBanner',\n MYFORMS_WHITE_LABELING_TOOLTIP_BANNER: 'whiteLabelingTooltipBanner',\n MY_ACCOUNT_STORE_DATA_IN_AU_BANNER: 'storeDataInAuBanner',\n MOBILE_FOOTER_CONTACT_BANNER: 'mobileFooterContactBanner',\n PUSH_DAY_BANNER: 'profSolutionsBanner',\n PROFESSIONAL_SERVICES_TOOLTIP: 'professionalServicesTooltip',\n PROFESSIONAL_SERVICES_CONTACT_BANNER: 'professionalServicesContactBanner',\n SHARE_PANEL_COLLAB_BANNER: 'sharePanelCollabBanner',\n SSO_ACCESS_BANNER: 'ssoAccessBanner',\n SSO_PREFILL_BANNER: 'ssoPrefillBanner', // live\n SYSTEM_LOGS_BANNER: 'systemLogsBanner',\n SYSTEM_LOGS_TINY_BANNER: 'systemLogsTinyBanner',\n DEDICATED_SUPPORT_BANNER_V2: 'dedicatedSupportBannerV2',\n SCHEDULE_ZOOM_BANNER: 'scheduleZoomBanner',\n SOC2_COMPLIANCE_BANNER: 'soc2ComplianceBanner',\n // sections\n ACCESS_CONTROL_SECTION: 'accessControlSection',\n ASSIGN_TO_EVERYONE_PROMOTION: 'assignToEveryonePromotionSection',\n ASSIGN_TO_EVERYONE_PROMOTION_ALT: 'assignToEveryonePromotionSectionAlt',\n ENTERPRISE_CHECKOUT_LIKE_SECTION: 'enterpriseCheckoutLikeSection', // live\n USERS_SECTION: 'usersSection',\n USERS_SECTION_ALT: 'usersSectionAlt',\n WHITE_LABELING_SECTION: 'whiteLabelingSection',\n // buttons\n EXPANDABLE_ADMIN_CONSOLE_BUTTON: 'expandableAdminConsoleButton',\n FASTER_SUPPORT_RESPONSE_TOGGLE_BUTTON: 'fasterSupportResponseToggleButton',\n ZOOM_MEETING_BUTTON: 'zoomMeetingButton',\n ASSIGN_TO_ORGANIZATION_BUTTON: 'assignToOrganizationButton',\n // badges\n ENTERPRISE_FEATURE_BADGE: 'enterpriseFeatureBadge'\n};\n","export const CAMPAIGN = {\n EARNED_BADGES_MODAL: 'earnedBadgesModal',\n ETT_EDUCATION_GATED_CONTENT_MODAL: 'ettEducationGatedCotentModal',\n ETT_EDUCATION_EXIT_INTENT_MODAL: 'ettEducationExitIntentModal',\n FOMO_MODAL: 'fomoModal',\n FQHC_MODAL: 'fqhcModal',\n HEALTHCARE_REPORT_BANNER: 'healthcareReportBanner',\n HEALTHCARE_REPORT_MODAL: 'healthcareReportModal',\n NHS_MODAL: 'nhsModal'\n};\n","export const PRODUCT = {\n // modals\n ADMIN_CONSOLE_DARK_MODAL: 'adminConsoleDarkModal',\n ASSIGN_TO_ORGANIZATON_MODAL: 'assignToOrganizationModal',\n CONTACT_DEDICATED_SUPPORT_MODAL: 'contactDedicatedSupportModal',\n ENTERPRISE_PROPERTY_MODAL: 'enterprisePropertyModal',\n ENTERPRISE_TEAMS_MODAL: 'enterpriseTeamsModal',\n TEAMS_MODAL: 'teamsModal',\n FOLDER_LIMIT_MODAL: 'folderLimitModal',\n HELP_DEDICATED_SUPPORT_MODAL: 'helpDedicatedSupportModal',\n TEAM_CREATION_LIMIT_MODAL: 'teamCreationLimitModal',\n WHITE_LABELING_MODAL: 'whiteLabelingModal',\n APPEXCHANGE_MODAL: 'appexchangeModal',\n ENTERPRISE_BEGINNERS_BOOK_MODAL: 'enterpriseBeginnersBookModal',\n ENTERPRISE_DATA_CENTERS_MODAL: 'enterpriseDataCentersModal',\n PDF_DOWNLOAD_MODAL: 'pdfDownloadModal',\n // banners\n ADD_AND_MANAGE_USERS_BANNER: 'addAndManageUsersBanner',\n CUSTOM_DOMAIN_API_BANNER: 'customDomainApiBanner',\n FORM_CUSTOM_DOMAIN_TOOLTIP: 'formCustomDomainTooltip',\n CUSTOM_DOMAIN_TOOLTIP_LEGACY: 'customDomainTooltipLegacy',\n TEAMS_CUSTOM_DOMAIN_LEGACY_TOOLTIP: 'teamsCustomDomainLegacyTooltip',\n DEDICATED_SUPPORT_BANNER: 'dedicatedSupportBanner',\n GENERAL_FAQ_PROF_SERVICES_BANNER: 'generalFaqProfessionalServicesBanner',\n LIMIT_BANNER: 'limitBanner',\n LOCAL_DATA_RESIDENCY_BANNER: 'localDataResidencyBanner',\n SESSIONS_ACCOUNT_SHARING_BANNER: 'sessionsAccountSharingBanner',\n SSO_ACCESS_LEGACY_BANNER: 'ssoAccessLegacyBanner',\n SSO_LEGACY_TOOLTIP: 'ssoLegacyTooltip',\n SSO_PREFILL_LEGACY_BANNER: 'ssoPrefillLegacyBanner',\n USER_GUIDE_PROF_SERVICES_BANNER: 'userGuideProfessionalServicesBanner',\n WHITE_LABELING_BANNER: 'whiteLabelingBanner',\n APPROVAL_WHITE_LABELING_BANNER: 'approvalWhiteLabelingBanner',\n WORKFLOW_GROUP_APPROVAL_BANNER: 'workflowGroupApprovalBanner',\n BLOG_EDUCATION_SIDE_BANNER: 'blogEducationSideBanner',\n PDF_DOWNLOAD_BANNER: 'pdfDownloadBanner',\n // sections\n MY_ACCOUNT_USERS_SECTION_WITH_FORM: 'myAccountUsersSection', // old: myAccountUsersSectionWithForm\n ENTERPRISE_DATA_CENTERS_SECTION: 'enterpriseDataCentersSection',\n DEDICATED_SUPPORT_SECTION: 'dedicatedSupportSection',\n // buttons\n ADMIN_CONSOLE_PROMOTION_BUTTON: 'adminConsolePromotionButton'\n};\n","export const AUTOMATION = {\n // segmented modals\n EDUCATION_MODAL: 'segmentedEducationModal', // old: educationModal\n EDUCATION_MODAL_ALT: 'segmentedEducationModalAlt', // old: educationModalAlt\n FIELD_SERVICE_MANAGEMENT_MODAL: 'segmentedFieldServiceManagementModal', // old: fieldServiceManagementModal\n GOVERNMENT_MODAL: 'segmentedGovernmentModal', // old: governmentModal\n HEALTHCARE_MODAL: 'segmentedHealthcareModal', // old: healthcareModal\n NONPROFIT_MODAL: 'segmentedNonprofitModal', // old: nonprofitModal\n // other modals\n AU_DATA_RESIDENCY_MODAL: 'australianDataResidencyModal',\n HK_DATA_RESIDENCY_MODAL: 'hongKongDataResidencyModal',\n SG_DATA_RESIDENCY_MODAL: 'singaporeDataResidencyModal',\n ENTERPRISE_DISCOUNT_MODAL: 'enterpriseDiscountModal',\n HUBSPOT_MODAL: 'milestoneHubspotModal',\n BLOG_GATED_CONTENT_MODAL: 'blogGatedContentModal'\n};\n","export const WEBINAR = {\n COST_CUTTING_WEBINAR_BANNER: 'costCuttingWebinarBanner',\n COST_CUTTING_WEBINAR_MODAL: 'costCuttingWebinarModal',\n ED_TECH_WEBINAR_MODAL: 'edTechWebinarModal',\n FIELD_SERVICE_WEBINAR_MODAL: 'fieldServiceWebinarModal',\n HR_WEBINAR_MODAL: 'hrWebinarModal',\n HEALTHCARE_TECHNOLOGY_MODAL: 'healthcareTechnologyModal',\n HEALTHCARE_AUTOMATION_STRATEGIES_WEBINAR_MODAL: 'hasWebinarModal',\n LUNCH_AND_LEARN_MODAL: 'lunchAndLearnModal',\n LUNCH_AND_LEARN_BANNER: 'lunchAndLearnBanner',\n NONPROFIT_WEBINAR_BANNER: 'nonProfitWebinarBanner',\n MAXIMUM_IMPACT_WEBINAR_MODAL: 'maximumImpactWebinarModal',\n HEALTHCARE_FUTURE_WEBINAR_MODAL: 'healthcareFutureWebinarModal',\n NONPROFIT_WEBINAR_MODAL: 'nonProfitWebinarModal',\n PRIVACY_CONCERN_WEBINAR_MODAL: 'privacyConcernWebinarModal'\n};\n","import { ALL_TEXTS } from './texts';\n\nexport const ENTERPRSE_PROMOTIONS_ROOT_EL_ID = 'enterprise-promotions-root';\n\nexport const ACTION_PROJECT_NAMES = {\n TEAMS: 'teams',\n AU_DATA_RESIDENCY_MODAL: 'auDataResidencyModalCampaign',\n ENTERPRISE_PROMOTIONS: 'enterprisePromotions' // always use this\n // dont use new project name for enterprise promotions assets\n};\n\nexport const SHORT_LEAD_FORM_IFRAME_ID = 'enterprise-short-lead-form';\n\nexport const VARIANTS = {\n CONTROL_CODE: '8521',\n TEST_CODE: '8531'\n};\n\nexport const govModalSeenAtUserSettingsKey = 'enterpriseGovernmentModalSeenAt';\nexport const nonProfitModalSeenAtUserSettingsKey = 'enterpriseNonProfitWebinarModalSeenAt';\nexport const nonProfitBannerSeenAtUserSettingsKey = 'enterpriseNonProfitWebinarBannerSeenAt';\nexport const healthcareReportModalSeenAtUserSettingsKey = 'enterprise2024HealthcareReportModalSeenAt';\nexport const healthcareReportBannerSeenAtUserSettingsKey = 'enterprise2024HealthcareReportBannerSeenAt';\nexport const professionalSolutionsBannerSeenAtKey = 'professionalSolutionsBannerSeenAt';\nexport const costCuttingWebinarModalSeenAtKey = 'costCuttingWebinarModalSeenAt';\nexport const costCuttingWebinarBannerSeenAtKey = 'costCuttingWebinarBannerSeenAt';\nexport const australianDataResidencyModalSeenAtKey = 'australianDataResidencyModalSeenAt';\nexport const fieldServiceWebinarModalSeenAtKey = 'fieldServiceWebinarModalSeenAt';\nexport const privacyConcernWebinarModalSeenAtKey = 'privacyConcernWebinarModalSeenAt';\nexport const milestoneHubspotModalKey = 'milestoneHubspotModalSeenAt';\nexport const earnedBadgesModalSeenAtKey = 'earnedBadgesModalSeenAt';\nexport const hasWebinarModalSeenAtKey = 'hasWebinarModalSeenAt';\nexport const ettEducationReportModalSeenAtKey = 'ettEducationReportModalSeenAt';\nexport const maximumImpactWebinarModalSeenAtKey = 'maximumImpactWebinarModalSeenAt';\nexport const healthcareFutureWebinarModalSeenAtKey = 'healthcareFutureWebinarModalSeenAt';\n\nexport const lunchAndLearnNotificationSeenAtKey = 'lunchAndLearnNotificationSession2SeenAt';\nexport const enterprisePriceAdjustmentNotificationSeenAtKey = 'fomoNotificationSeenAt';\nexport const enterprisePriceAdjustmentNotificationA1FirstSeenAtKey = 'fomoA1ThirdNotificationSeenAt';\nexport const fomoB1FirstModalSeenAtKey = 'fomoB1FirstModalSeenAt';\nexport const adTechWebinarModalSeenAtKey = 'edtechWebinarSept2023SeenAt';\n\nexport const COUNTDOWN_UNIT = {\n DAYS: 'DAYS',\n HOURS: 'HOURS',\n MINUTES: 'MINUTES',\n LIVE: 'LIVE'\n};\n\n// lunch and learn banner\n// update these constants for the next session\nexport const lalbSession = 5;\nexport const lalbSessionName = `session${lalbSession}`;\nexport const lalbNeverShowKey = 'lunchAndLearnBannerSeenAt';\nexport const lalbSessionKey = `lunchAndLearnBannerSession${lalbSession}SeenAt`;\n\nexport const TEST_EVENT_DATE = {\n ANNOUNCEMENT_DATE_TIME: '2023-03-09T10:00:00.000+03:00',\n EVENT_DATE_TIME: '2023-03-10T14:00:00.000-05:00',\n EVENT_DURATION: '03:00'\n};\n\nexport const LUNCH_AND_LEARN_SESSIONS = [{\n ANNOUNCEMENT_DATE_TIME: '2023-02-28T10:00:00.000+03:00', // UTC+3\n EVENT_DATE_TIME: '2023-03-02T12:00:00.000-05:00', // UTC-5\n EVENT_DURATION: '00:30',\n CONTENT: ALL_TEXTS.LUNCH_LEARN_CONTENT_SESSION_1\n}, {\n ANNOUNCEMENT_DATE_TIME: '2023-03-13T10:00:00.000+03:00', // UTC+3\n EVENT_DATE_TIME: '2023-03-16T12:00:00.000-05:00', // UTC-5\n EVENT_DURATION: '00:30',\n CONTENT: ALL_TEXTS.LUNCH_LEARN_CONTENT_SESSION_2\n}, {\n ANNOUNCEMENT_DATE_TIME: '2023-03-27T10:00:00.000+03:00', // UTC+3\n EVENT_DATE_TIME: '2023-03-30T12:00:00.000-05:00', // UTC-5\n EVENT_DURATION: '00:30',\n CONTENT: ALL_TEXTS.LUNCH_LEARN_CONTENT_SESSION_3\n},\n{\n ANNOUNCEMENT_DATE_TIME: '2023-04-10T10:00:00.000+03:00', // UTC+3\n EVENT_DATE_TIME: '2023-04-13T12:00:00.000-05:00', // UTC-5\n EVENT_DURATION: '00:30',\n CONTENT: ALL_TEXTS.LUNCH_LEARN_CONTENT_SESSION_4\n},\n{\n ANNOUNCEMENT_DATE_TIME: '2023-04-24T10:00:00.000+03:00', // UTC+3\n EVENT_DATE_TIME: '2023-04-27T12:00:00.000-05:00', // UTC-5\n EVENT_DURATION: '00:30',\n CONTENT: ALL_TEXTS.LUNCH_LEARN_CONTENT_SESSION_5\n},\n{\n ANNOUNCEMENT_DATE_TIME: '2023-05-08T10:00:00.000+03:00', // UTC+3\n EVENT_DATE_TIME: '2023-05-11T12:00:00.000-05:00', // UTC-5\n EVENT_DURATION: '00:30',\n CONTENT: ALL_TEXTS.LUNCH_LEARN_CONTENT_SESSION_6\n}];\n\nexport const COST_CUTTING_WEBINAR_ASSET_TYPE = {\n MODAL: 'modal',\n BANNER: 'banner'\n};\n\nexport const SEGMENTED_MODAL_TYPES = {\n GOVERNMENT: 'government',\n HEALTHCARE: 'healthcare',\n EDUCATION: 'education',\n FIELD_SERVICES_MANAGEMENT: 'fieldServicesManagement',\n NONPROFIT: 'nonprofit'\n};\n\nexport const PRICING_TABLE_AB_TEST_VARIANTS = {\n CONTROL_A: '8701',\n TEST_B: '8711',\n TEST_C: '8721'\n};\n\nexport const PRICING_TABLE_SOURCE_PAGES = {\n EDUCATION: 'education',\n NONPROFIT: 'nonprofit'\n};\n\nconst { EDUCATION, NONPROFIT } = PRICING_TABLE_SOURCE_PAGES;\n\nexport const BRONZE_DM_DESCRIPTION = {\n [EDUCATION]: ALL_TEXTS.APPLY_BRONZE_EDUCATION_DISCOUNT,\n [NONPROFIT]: ALL_TEXTS.APPLY_BRONZE_NONPROFIT_DISCOUNT\n};\n\nexport const SILVER_DM_DESCRIPTION = {\n [EDUCATION]: ALL_TEXTS.APPLY_SILVER_EDUCATION_DISCOUNT,\n [NONPROFIT]: ALL_TEXTS.APPLY_SILVER_NONPROFIT_DISCOUNT\n};\n\nexport const GOLD_DM_DESCRIPTION = {\n [EDUCATION]: ALL_TEXTS.APPLY_GOLD_EDUCATION_DISCOUNT,\n [NONPROFIT]: ALL_TEXTS.APPLY_GOLD_NONPROFIT_DISCOUNT\n};\n\nexport const ENTERPRISE_DM_DESCRIPTION = {\n [EDUCATION]: ALL_TEXTS.ENTERPRISE_DISCOUNT_EDUCATION_DESCRIPTION,\n [NONPROFIT]: ALL_TEXTS.ENTERPRISE_DISCOUNT_NONPROFIT_DESCRIPTION\n};\n\nexport const leadFlowBannerUrlParam = 'epalf';\nexport const leadFlowBannerAutoVisibleLcStKey = 'leadFlowBannerAutoVisible';\n\nexport const eduBdmFlowInterctedLcStKey = 'eduBdmFlowBannerInteracted';\nexport const eduBdmFlowVisitCountLcStKey = 'eduBdmFlowBannerVisitCount';\nexport const eduBdmFlowAutoVisibleLcStKey = 'eduBdmFlowBannerAutoVisible';\n\nexport const CHECKOUT_LIKE_SECTION_STEPS = {\n FORM_STEP: 'FORM_STEP',\n THANK_YOU_STEP: 'THANK_YOU_STEP'\n};\n\nexport const SHOULD_SHOW_AD_FORM = false;\n","import { ASSET_IDENTIFIER } from './assetIdentifier';\n\nconst { ADMIN_CONSOLE_DARK_MODAL, ENTERPRISE_TEAMS_MODAL } = ASSET_IDENTIFIER.PRODUCT;\n\nexport const LEAD_FORM_MAP = {\n COMMON: { // with labels and the rest of it will have no label\n LIVE: '230813613795964',\n DEV: '242061587960966',\n AD_FORM_LIVE: '203132649531955',\n AD_FORM_DEV: '242062244074953'\n },\n [ENTERPRISE_TEAMS_MODAL]: {\n LIVE: '233313413335950',\n DEV: '240032774763961'\n },\n [ADMIN_CONSOLE_DARK_MODAL]: {\n LIVE: '240023409519955',\n DEV: '240032556858964'\n }\n};\n","// What is SDR? Sales Development Representative\n// Information of the users that show intent to Jotform Enterprise Product are being added to Hubspot.\n// Our agents (SDR) get in touch with the users that have record on Hubspot.\nexport const SDR_SOURCES = {\n ACCOUNT_BOX_ADMIN_CONSOLE_BUTTON: 'AdminConsole',\n ACCOUNT_BOX_ENTERPRISE_PROMO: 'AccountBoxEnterprisePromotion',\n CONTACT_PAGE_DEDICATED_SUPPORT: 'ContactPageDedicatedSupport',\n ENTERPRISE_GOVERNMENT_MODAL: 'EnterpriseGovernmentModal',\n ENTERPRISE_HEALTHCARE_REPORT_BANNER: 'EnterpriseHealthcareReportBanner',\n FORM_BUILDER_ADD_COLLABORATORS_BANNER: 'AddCollaborators',\n FORM_BUILDER_HELP_MENU: 'FormBuilderHelpMenu',\n FORM_BUILDER_SSO_PREFILL: 'SsoPrefill',\n FORM_PROPERTIES_EDITOR_SSO: 'SsoToggle',\n GENERAL_FAQ_PROF_SERVICES_BANNER: 'GeneralFaqProfessionalServicesBanner',\n INBOX_PROFESSIONAL_SOLUTIONS_BANNER: 'InboxProfessionalSolutionsBanner',\n MILESTONE_HUBSPOT_MODAL: 'MilestoneHubspotModal',\n MY_ACCOUNT_CUSTOM_DOMAIN_API_BANNER: 'MyAccountCustomDomainApiBanner',\n MY_ACCOUNT_DEDICATED_SERVER: 'DedicatedServer',\n MY_ACCOUNT_TEAMS_SETTINGS_CUSTOM_URL: 'TeamCustomURL',\n MY_ACCOUNT_SESSIONS_ACCOUNT_SHARING_BANNER: 'SessionsAccountSharingBanner',\n MY_ACCOUNT_SESSIONS_ACCOUNT_SHARING_BANNER_CS_CLICK: 'SessionsAccountSharingBannerCsClick',\n MY_ACCOUNT_WHITE_LABEL: 'WhiteLabel',\n APPROVAL_WHITE_LABEL: 'ApprovalWhiteLabel',\n MY_FORMS_AU_DATA_RESIDENCY_MODAL: 'MyFormsAuDataResidencyModal',\n MY_FORMS_HK_DATA_RESIDENCY_MODAL: 'MyFormsHkDataResidencyModal',\n MY_FORMS_SG_DATA_RESIDENCY_MODAL: 'MyFormsSgDataResidencyModal',\n MY_FORMS_SHARE_FOLDER: 'ShareFolder',\n PROFESSIONAL_SERVICES_CONTACT_BANNER: 'ProfessionalServicesContactBanner',\n SHARE_PANEL_ASSIGN_TO_EVERYONE: 'AssignToggle',\n SHARE_PANEL_SETTINGS_SSO_BANNER: 'SsoBanner',\n SHARE_PANEL_SHARE_LINK: 'CustomDomain',\n TEAMS_ADD_NEW_USER: 'TeamInvite',\n USER_GUIDE_PROF_SERVICES_BANNER: 'UserGuideProfessionalServicesBanner',\n WORKFLOW_GROUP_APPROVAL_BANNER: 'WorkflowGroupApprovalBanner',\n ENTERPRISE_BEGINNERS_BOOK_MODAL: 'EnterpriseBookDownload',\n SUPPORT_MENU: 'HeaderSupportMenu',\n PAGE_VIEW_PRICING_ENTERPRISE: 'pageview_pricing/enterprise'\n};\n","/* eslint-disable max-len */\nexport const ALL_TEXTS = {\n DASHBOARD: 'DASHBOARD',\n ADD_AND_MANAGE_USERS: 'ADD & MANAGE USERS',\n ADMIN_CONSOLE_CAPITALIZED: 'ADMIN CONSOLE',\n ENTERPRISE_ADMIN_CONSOLE: 'Enterprise Admin Console',\n ENTERPRISE_ADMIN_DASHBOARD: 'Jotform Enterprise Admin Dashboard',\n ENHANCE_COLLABORATION: 'Enhance Collaboration',\n CLOSE_MODAL: 'Close modal',\n CLOSE: 'Close',\n ENTERPRISE: 'ENTERPRISE',\n COLLABORATOR_AVATARS: 'Collaborator avatars',\n ENTERPRISE_CAPITALIZED: 'Enterprise',\n CREATE_USER_WITH_CUSTOM_PERMISSONS: 'Create User or Admin accounts with custom permission settings to use Jotform with your whole team.',\n CREATE_USER_WITH_CUSTOM_PERMISSONS_ALT: '[1[Upgrade to Jotform Enterprise]] and create User or Admin accounts with custom permission settings to use Jotform with your whole team.',\n MANAGE_YOUR_COMPANY_FROM_ONE_LOC: 'Manage your company from one central location',\n UPGRADE_TO_ENTERPRISE_TO_USE_JOTFORM_WITH_YOUR_TEAM: 'Upgrade to Enterprise to use Jotform with your team',\n CONTROL_WHO_CAN_ACCESS_YOUR_FORMS: 'Control who can access your forms and submissions with Jotform Enterprise’s customizable permission settings. Add members of your team as Users or Admins to work together while you stay in full control of your data.',\n CONTACT_SALES: 'Contact Sales',\n UPGRADE: 'Upgrade',\n LEARN_MORE: 'Learn More',\n APPLY_NOW: 'Apply Now',\n DISMISS: 'Dismiss',\n LOADING: 'Loading...',\n USE_JOTFORM_FOR_YOUR_ENTIRE_ORG: 'Use Jotform for your entire organization',\n ASSIGN_AT_ONCE: 'Upgrade to Jotform Enterprise today to assign forms to your entire organization at once and',\n COLLABORATE_WITH_COWORKERS: 'Collaborate with your coworkers',\n CONTROL_ACCESS_TO: 'Control access to forms and submissions',\n MANAGE_ALL_OF_YOUR_FORMS: 'Manage all of your forms and data from the Admin Console',\n UPGRADE_TO_JOTFORM_ENTERPRISE_TO_MANAGE_USER_DATA: 'Upgrade to Jotform Enterprise to manage user data across your organization',\n QUICKLY_ACCESS_USER_HISTORY_AND_PROFILE: 'Quickly access user history and profile configurations to manage forms and form data overall.',\n MANAGE_USERS_AND_THEIR_ACCESS: 'Manage Users and Their Access',\n REVIEW_ACTIVITY_LOG: 'Review Activity Log',\n KEEP_TRACK_OF_USER_ACTIONS: 'Keep track of user actions with the activity log. See who has logged in and when, as well as who has created an app, form, and more.',\n TAKE_YOUR_BUSINESS_COLLAB_TO_NEXT_STEP: 'Take your business’s collaboration to the next level. Upgrade to Jotform Enterprise today to securely manage data and users from one place. Users can give each other access to forms and form data, while admins manage all forms, data, and responses.',\n NEXT: 'Next',\n PREVIOUS: 'Previous',\n ENTERPRISE_ROCKET: 'Jotform Enterprise rocket',\n // slider items\n VIEW_ALL_FORM_STATS: 'View all form stats from your dashboard. Jotform Enterprise administrators can seamlessly review stats for submissions, forms, and views. You can even filter your data by time range — daily, weekly, and monthly — or choose a specific time frame to pinpoint the exact data you’re searching for.',\n SECURELY_MANAGE_DATA: 'Securely manage data and users from one central account. All your Enterprise users are listed, ensuring quick access to user history and profile configuration. Users can give each other access to their forms and form data, while admins will always have access to shared forms and data.',\n MANAGE_ALL_AVAILABLE_FORMS: 'Manage all available forms on your Enterprise server from a single page. Select individuals or multiple forms to change form ownership or delete forms. You can also easily export a list of your forms into an Excel or CSV file in just one click.',\n KEEP_TRACK_OF_USER: 'Keep track of and search for a specific user’s form responses across your entire organization with Jotform Enterprise. Easily create reports of an individual’s submissions with options to review every submission or delete them all at once.',\n USE_ACTIVITY_LOG: 'Use the Activity Log to track new forms, form modifications and deletions, data purges, logins, and submission edits and deletions. You can also create a consolidated service activity log and export it as an Excel or CSV file.',\n GET_A_PROFFESSIONAL_CUSTOM_APP: 'Get a professional, custom branded app for your team. Submit your request from the Admin Console, and we’ll build an app just for you. From the Mobile App tab, you can also track users and devices logged, as well as invite your users to download your app.',\n NO_MATTER_DEDICATED_SUPPORT: 'No matter what you’re using Jotform Enterprise for, we’ve got your back. Our support team works tirelessly to respond to your concerns quickly. From this tab, you can create support tickets and track all support tickets sent from your account.',\n CUSTOMIZE_LOOK_AND_FEEL: 'Customize the look and feel of your Admin Console and forms without any coding or design knowledge. Upload your company logo, create custom themes, choose a favicon, and add your company’s name and domain address. Additionally, you can integrate your Jotform Enterprise account with an identity provider platform to enable SSO and IP address restrictions.',\n // enterprise billing banner\n ARE_YOU_LOOKING_FOR_ENTERPRISE_FEATURES: 'Are you looking for [1[enterprise level]] features?',\n GET_UNLIMITED_ACCESS_TO_THE_TOOLS_YOU_NEED: 'Get unlimited access to the tools you need to improve your online forms and data collection.',\n CHECKOUT_JOTFORM_ENTERPRISE: 'Check out Jotform Enterprise',\n // enterprise white labeling banner\n FULLY_CUSTOMIZE: 'Fully Customize with Enterprise',\n FULLY_INCORPORATE: 'Fully incorporate your brand into Jotform. Enjoy a personalized look without having to build your own product from scratch.',\n CUSTOMIZE_SSO: 'Customize our platform to match with your brand. Get custom domains and form URLs as well as single sign-on (SSO).',\n // enterprise goverment modal\n GOVERNMENT_SOLUTION_TITLE: 'Government Enterprise Solutions',\n GOVERNMENT_SOLUTION_SUB_TITLE: 'MORE POWER MORE SUPPORT',\n GOVERNMENT_SOC: 'SOC2, FERPA, HIPAA, PCI',\n GOVERNMENT_MULTIUSER: 'Multiuser Environment',\n GOVERNMENT_SSO: 'Single Sign On (SSO)',\n GOVERNMENT_ADMIN_DASHBOARD: 'Admin Dashboard',\n GOVERNMENT_UNLIMITED: 'Unlimited everything',\n // account box enterprise property modal\n GET_RID_OF_LIMITS: 'Get rid off all your limits!',\n CONGRATULATIONS: 'Congratulations!',\n EXCLUSIVE_ENTERPRISE_FEATURES: 'Start using all exclusive Enterprise features with your team.',\n YOU_MAY_CONSIDER_UPGRADING: 'You have received more than [1[{usagePhrase}]] so far! You may consider upgrading to [2[Jotform Enterprise]] and get rid of all your limits.',\n DEDICATED_SUPPORT_SUB_TITLE: 'Jotform Enterprise',\n DEDICATED_SUPPORT: 'Need Dedicated Support?',\n DEDICATED_SUPPORT_CONTENT: 'Get a dedicated support team with Jotform Enterprise.',\n\n JOTFORM_ENTERPRISE: 'Jotform Enterprise',\n JOTFORM_ENTERPRISE_CAPITALIZED: 'JOTFORM ENTERPRISE',\n COMPLETE_CUSTOMIZATION: 'Complete Customization with Enterprise',\n COMPLETE_CUSTOMIZATION_CONTENT: 'Create a seamless customer experience by white labeling your forms to showcase your company. Without coding, you can fully customize forms to match your branding, create custom form URLs, and even use your custom domain via Jotform Enterprise.',\n COMPLETE_CUSTOMIZATION_COMPANY_SETTINGS: 'Jotform Enterprise company settings',\n\n ACCESS_CONTROL: 'Stay in Full Control of Your Data',\n ACCESS_CONTROL_CONTENT: 'With a multiuser Jotform Enterprise plan, you can grant form access to multiple users. You’ll have full control over permission settings — add or delete users, filter your user list, send notifications, and review user activity for easy user management.',\n ACCESS_CONTROL_USERS_DASHBOARD: 'Jotform Enterprise user management dashboard',\n\n // webhook integration\n WEBHOOK_TITLE: 'White label your Jotform experience',\n WEBHOOK_CONTENT: 'Add your branding to all aspects of Jotform with Enterprise',\n\n // non profit lightbox\n FREE_WEBINAR_NONPROFIT_TITLE: 'Free Webinar for Nonprofits',\n FREE_WEBINAR_NONPROFIT_DATE: 'Thursday, February 9, 2023/11am PST',\n FREE_WEBINAR_NONPROFIT_DESCRIPTION: 'Increase Your Nonprofit’s Impact with the Right Technology',\n\n WEBINAR_NONPROFIT_DETAIL_TITLE: 'You’ll find out how to:',\n WEBINAR_NONPROFIT_DETAIL_IMPACT: 'Demonstrate impact',\n WEBINAR_NONPROFIT_DETAIL_COST: 'Control costs',\n WEBINAR_NONPROFIT_DETAIL_TRANSPARENCY: 'Improve transparency',\n WEBINAR_NONPROFIT_DETAIL_EXPLANATION: 'Join us to learn more and get additional valuable resources.',\n WEBINAR_NONPROFIT_FORM_TITLE: 'Please fill the related fields and get registered.',\n\n WEBINAR_NONPROFIT_SAVE_CTA: 'Save your seat!',\n WEBINAR_NONPROFIT_NOT_INTERESTED_CTA: 'Not interested',\n\n GET_CUSTOM_DOMAIN: '[1[Get custom domain with]] [2[Jotform Enterprise]]',\n\n ENTERPRISE_DO_YOU_WANT_DOMAIN_NAME: 'Do you want to use your own domain name?',\n WANT_TO_USE_YOUR_OWN_DOMAIN: 'Want to use your own domain name?',\n ENTERPRISE_TRY_JOTFORM: 'Try Jotform Enterprise!',\n APPLY_FOR_ENTERPRISE: 'Apply for Jotform Enterprise',\n CONTACT_SALES_REPRESENTATIVE: 'Contact an Enterprise sales representative',\n\n APPLY_FOR_DEDICATED_ZOOM_SUPPORT: 'Apply for Jotform Enterprise to schedule Zoom calls with a dedicated support team.',\n LEARN_MORE_ABOUT_JOTFORM_ENTERPRISE: 'Learn more about Jotform Enterprise',\n CONTACT_ENTERPRISE_SALES_REPRESENTATIVE: 'Contact an Enterprise sales representative',\n\n BOOST_COLLABORATION_WITH_ENTERPRISE: 'Boost collaboration with Enterprise',\n ADD_MULTIPLE_USERS: 'Add multiple users to work together with your team',\n\n HEALTHCARE_REPORT_TITLE: 'Get the latest insights on 2024 healthcare trends',\n HEALTHCARE_REPORT_GET_INSIGHTS: 'Get insights now!',\n HEALTHCARE_REPORT_DISMISS: 'Dismiss this banner',\n\n HEALTHCARE_REPORT_MODAL_MOBILE_TITLE: 'Get the latest insights on [1[2023]] healthcare trends.',\n HEALTHCARE_REPORT_MODAL_TITLE: 'Get the latest insights.',\n HEALTHCARE_REPORT_MODAL_CONTENT: 'Fill the form and get 2024 Healthcare Industry Trends report via email.',\n\n NEED_PROFESSIONAL_SOLUTIONS: 'Need enterprise level solutions?',\n NEED_PROFESSIONAL_SOLUTIONS_CONTENT: 'Try Jotform Enterprise with your team!',\n\n UPGRADE_TO_JOTFORM_ENTERPRISE_AND_START_MANAGING: 'Upgrade to [1[Jotform Enterprise]] and start managing your company from one central location.',\n\n CUSTOM_DOMAIN_API: 'Make your API url [1[your-domain.com/API]] or [2[subdomain.jotform.com/API]] instead of api.jotform.com with [3[Jotform Enterprise]].',\n\n ENTERPRISE_LEVEL_ANALYTICS_TITLE: 'Manage your company from one central location',\n ENTERPRISE_LEVEL_ANALYTICS_CONTENT: 'Manage user access, forms, and audit logs from a powerful Admin Console. Analyze data to reveal important insights.',\n ENTERPRISE_LEVEL_ANALYTICS_GRAPH: 'Jotform Enterprise line graph',\n\n WHITE_LABEL_TITLE: 'Want more customization?',\n WHITE_LABEL_CONTENT: 'White label your experience with Jotform Enterprise. Add your branding, create custom URLs, and use your own domain.',\n WHITE_LABEL_LOGO_PLACEMENT_ANIMATION: 'Logo placement animation',\n\n JOTFORM_GOVERNMENT_TITLE: 'JOTFORM GOVERNMENT',\n JOTFORM_ENTERPRISE_TITLE: 'JOTFORM ENTERPRISE',\n AUSTRALIAN_DATA_RESIDENCY_MODAL_TITLE: 'Need to store data in [1[Australia]]? Contact our [1[Enterprise]] team to start complying with regulations.',\n HONG_KONG_DATA_RESIDENCY_MODAL_TITLE: 'Unlock advanced data security in Hong Kong',\n HONG_KONG_DATA_RESIDENCY_MODAL_DESCRIPTION: 'Explore enterprise solutions with enhanced security and compliance features tailored for Hong Kong-based organizations.',\n SINGAPORE_DATA_RESIDENCY_MODAL_TITLE: 'Unlock advanced data security in Singapore',\n SINGAPORE_DATA_RESIDENCY_MODAL_DESCRIPTION: 'Explore enterprise solutions with enhanced security and compliance features tailored for Singapore-based organizations.',\n\n LUNCH_LEARN_TITLE: 'LUNCH & LEARN SERIES',\n\n LUNCH_LEARN_CONTENT_SESSION_1: '[1[Next Session:]] How to white label',\n LUNCH_LEARN_CONTENT_SESSION_2: '[1[Next Session:]] How to manage your server as a server admin',\n LUNCH_LEARN_CONTENT_SESSION_3: '[1[Next Session:]] How to manage Teams',\n LUNCH_LEARN_CONTENT_SESSION_4: '[1[Next Session:]] How to use Jotform Sign',\n LUNCH_LEARN_CONTENT_SESSION_5: '[1[Next Session:]] How to configure single sign-on (SSO) and Prefill',\n LUNCH_LEARN_CONTENT_SESSION_6: '[1[Next Session:]] Intro to app building',\n\n LUNCH_LEARN_CLOSE: 'Close Lunch and Learn Banner',\n LUNCH_LEARN_SAVE_YOUR_SEAT: 'Save your seat!',\n\n STORE_DATA_IN_AUSTRALIA_CONTENT: 'Store your data only in Australia (Sydney) with [1[Jotform Enterprise]].',\n\n LUNCH_LEARN_MODAL_SUP_TITLE: 'COMING SOON',\n LUNCH_LEARN_MODAL_TITLE: 'Join Enterprise Lunch & Learn sessions',\n LUNCH_LEARN_MODAL_CONTENT: 'Join our customer success team to learn about forms, tables, approvals, and report basics; get guidance for server management and SSO configuration; or level up with conditional logic, prefill, payments, and more.',\n LUNCH_LEARN_MODAL_SAVE_SPOT: 'Save Your Spot!',\n LUNCH_LEARN_MODAL_LEARN_DETAILS: 'See details',\n LIVE: 'LIVE',\n JOIN_NOW: 'Join now!',\n NEVER_SHOW_THIS_CONTENT: 'Never show this content again.',\n\n IP_RESTRICTION_TITLE: 'Go pro with Jotform Enterprise',\n IP_RESTRICTION_CONTENT: 'Need to limit access? Switch to Jotform Enterprise for an extra layer of security.',\n IP_RESTRICTION_DISCOVER: 'Discover More',\n IP_WORLD: 'World map with IP pointer',\n\n COST_CUTTING_WEBINAR_BADGE: 'FREE',\n COST_CUTTING_WEBINAR_TITLE: 'Join our webinar',\n COST_CUTTING_WEBINAR_DATE: 'Tuesday, March 21, at 11 a.m. PT',\n COST_CUTTING_WEBINAR_DATE_SHORT: 'March 21, at 11 a.m. PT',\n COST_CUTTING_WEBINAR_EXPLANATION: '3 ways to cut costs from business processes',\n FREE_WEBINAR_BADGE: 'FREE WEBINAR',\n SAVE_SPOT_CTA: 'Save your spot!',\n COST_CUTTING_WEBINAR_FILL_MESSAGE: 'Please fill the related fields and get registered.',\n\n ADMIN_CONSOLE_DARK_MODAL_DESCRIPTION: 'Contact an [1[Enterprise]] sales representative to start managing your organization\\'s data from one central location',\n ADMIN_CONSOLE_DARK_MODAL_DESCRIPTION_V2: 'Get a free consultation for [1[Jotform Enterprise]] and start managing your company from one [2[central location]]',\n SHORT_LEAD_FORM_TITLE: 'JotForm Enterprise Sales Contact Request- Content Team - Short version',\n\n SAVE: 'save',\n DISCOUNT_PERCENTAGE: '[1[30]] [2[%]]',\n APPLY_ENTERPRISE_DISCOUNT: 'Apply for your Enterprise {discount_type} discount',\n\n GROUP_APPROVAL_BANNER_CONTENT: 'Upgrade to Jotform Enterprise to add more approvers',\n\n FIELD_SERVICE_WEBINAR_BADGE: 'FREE WEBINAR',\n FIELD_SERVICE_WEBINAR_EXPLANATION: '3 steps to safer, more sustainable field service operations',\n FIELD_SERVICE_WEBINAR_DATE: 'Tuesday, April 25, at 11 a.m. PT',\n\n HR_WEBINAR_BADGE: 'FREE HR WEBINAR',\n HR_WEBINAR_EXPLANATION: 'Less paperwork. More empowerment. HR automation that works.',\n HR_WEBINAR_DATE: 'Thursday, February 8, at 11 a.m. PT',\n\n HEALTHCARE_TECHNOLOGY_BADGE: 'FREE NON-PROFIT WEBINAR',\n HEALTHCARE_TECHNOLOGY_EXPLANATION: 'Surprising ways to delight donors with forms',\n HEALTHCARE_TECHNOLOGY_DATE: 'Thursday, March 21 at 11 a.m. PT',\n\n BOOK_CONSULTATION: 'Book Consultation',\n YOUR_INFO: 'YOUR INFO',\n CHOOSE_TIME: 'CHOOSE TIME',\n\n USERS_SECTION_TITLE: 'Contact an [1[Enterprise]] sales representative to add multiple users and manage user access and activity across your entire organization with powerful administrative features.',\n USERS_HEADER_ALT: 'Jotform Enterprise User Preview',\n USERS_FOOTER_ALT: 'Jotform Enterprise Admin and Regular User Preview',\n ADMIN: 'Admin',\n USER: 'User',\n\n PRIVACY_CONCERN_WEBINAR_BADGE: 'FREE WEBINAR',\n PRIVACY_CONCERN_WEBINAR_EXPLANATION: 'How to manage customer data in an era of privacy concerns',\n PRIVACY_CONCERN_WEBINAR_DATE: 'Thursday, May 18, at 11 a.m. PT',\n\n GOVERNMENT_SOLUTION_TAILORED_TITLE: 'Get tailored solutions for your government agency',\n GOVERNMENT_LIST1: 'SOC 2, FERPA, HIPAA, PCI',\n GOVERNMENT_LIST1_WITHOUT_SOC2: 'FERPA, HIPAA, PCI',\n GOVERNMENT_LIST2: 'Multiuser environment',\n GOVERNMENT_LIST3: 'Single Sign-On (SSO)',\n GOVERNMENT_LIST4: 'Admin dashboard',\n GOVERNMENT_LIST5: 'Unlimited everything',\n\n GET_30_PERCENT_ED_TECH: 'Get [1[30% off]] powerful EdTech features with Jotform Enterprise',\n MULTIPLE_USERS: 'Multiple users',\n\n EARNED_BADGES_TITLE: 'Jotform received [1[500+]] software review awards',\n READ_THE_REPORT: 'Read the Report',\n\n EXPANDABLE_ADMIN_CONSOLE_CONTENT: 'Apply to [1[Jotform Enterprise]] to start managing your company from one central location',\n\n JOTFORM_TEAMS_MODAL_CONTENT: 'Contact an Enterprise sales representative to start using Jotform Enterprise with your whole team',\n JOTFORM_TEAMS_MODAL_CONTENT_ALT: 'Get your whole team on board with Jotform Enterprise',\n ENTERPRISE_ONLY: 'ENTERPRISE ONLY',\n JOTFORM_TEAMS_MODAL_CONTENT_ALT_CLEAR: 'Upgrade to Enterprise to get your team on board',\n\n TEAM_LIMITATION_MODAL_PRE_CONTENT: 'You have reached your Team creation limits.',\n TEAM_LIMITATION_MODAL_CONTENT: 'Contact an Enterprise sales representative to create unlimited Teams for your organization.',\n\n APPLY_FOR_ENTERPRISE_ORGANIZATION: 'Contact an Enterprise sales representative to start using Jotform with your whole organization',\n CONTACT_FOR_TEAM_ON_BOARD: 'Contact an Enterprise sales representative to bring your team on board',\n\n PRICING_TABLE_MODAL_CONTENT: 'Send request to contact with Jotform representative',\n\n UNLIMITED_USAGE: 'Unlimited Usage',\n MULTIUSER_ENVIRONMENT: 'Multiuser Environment',\n SLA: 'Service Level Agreements (SLA)',\n HIPAA_COMPLIANCE_AVAILABLE: 'HIPAA Compliance Features Available',\n CUSTOM_DOMAIN: 'Custom Domain',\n PRIORITY_REAL_TIME_SUPPORT: 'Priority Real-Time Support',\n LOCAL_DATA_RESIDENCY_OPTION: 'Local Data Residency Option',\n SSO_INTEGRATIONS: 'Single Sign-On (SSO) Integrations',\n\n DISCOUNT: 'DISCOUNT',\n GET_DISCOUNT: 'GET DISCOUNT',\n\n APPLY_BRONZE_EDUCATION_DISCOUNT: 'Apply for Bronze plan education discount and save 50%',\n APPLY_SILVER_EDUCATION_DISCOUNT: 'Apply for Silver plan education discount and save 50%',\n APPLY_GOLD_EDUCATION_DISCOUNT: 'Apply for Gold plan education discount and save 50%',\n ENTERPRISE_DISCOUNT_EDUCATION_DESCRIPTION: 'Apply for Jotform Enterprise and get a 30% education discount',\n\n APPLY_BRONZE_NONPROFIT_DISCOUNT: 'Apply for Bronze plan nonprofit discount and save 50%',\n APPLY_SILVER_NONPROFIT_DISCOUNT: 'Apply for Silver plan nonprofit discount and save 50%',\n APPLY_GOLD_NONPROFIT_DISCOUNT: 'Apply for Gold plan nonprofit discount and save 50%',\n ENTERPRISE_DISCOUNT_NONPROFIT_DESCRIPTION: 'Apply for Jotform Enterprise and get a 30% nonprofit discount',\n\n BRONZE_PLAN: 'Bronze',\n SILVER_PLAN: 'Silver',\n GOLD_PLAN: 'Gold',\n\n WEBINAR_BADGE: 'FREE WEBINAR',\n\n AUTOMATE_ORGANIZATION_PROCESS: 'Automate your organization’s processes',\n APPLY_FOR_POWERFUL_AUTOMATION: 'Apply for Jotform Enterprise to get access to powerful automation features and a multiuser environment.',\n GET_YOUR_TEAM_ONBOARD: 'GET YOUR TEAM ON BOARD',\n GET_YOUR_TEAM_EXPLANATION: 'Apply to Jotform Enterprise and maximize your teamwork potential with Enterprise’s multiuser capabilities.',\n GET_YOUR_TEAM_EXPLANATION_V2: 'Maximize your teamwork with multiuser features from Jotform Enterprise.',\n\n HEALTHCARE_WEBINAR_PROMOTION_MODAL_DESCRIPTION: 'Healthcare automation strategies for streamlined operations',\n HEALTHCARE_WEBINAR_PROMOTION_DATE: 'Thursday, July 20, at 11 a.m. PT',\n\n EDUCATION_REPORT_DOWNLOAD_TITLE: 'Fill out the form and get the educator’s technology toolkit via email',\n EDUCATION_REPORT_TITLE: 'Get the latest insights.',\n EDUCATION_REPORT_EXPLANATION: 'Fill out the form and get the educator’s technology toolkit via email.',\n\n LUNCH_LEARN: 'LUNCH & LEARN',\n LUNCH_LEARN_DESCRIPTION: 'Save your seat for upcoming Lunch & Learn sessions',\n\n ENTERPRISE_SECURITY_ITEM_SSO: 'Enable Single Sign-On.',\n ENTERPRISE_SECURITY_ITEM_SPECIFIED_IP: 'Allow access only to a specified IP.',\n ENTERPRISE_SECURITY_ITEM_AUTOMATIC_LOGOUT: 'Activate automatic logout.',\n\n SEGMENTED_MODAL_VIRGIN_ISLAND_ALT: 'Virgin Island Logo',\n SEGMENTED_MODAL_STAFFORDSHIRE_POLICE_ALT: 'Staffordshire Police Logo',\n SEGMENTED_MODAL_COUNTY_OF_MARIN_ALT: 'County of Marin Logo',\n SEGMENTED_MODAL_SAN_ANTONIO_ALT: 'San Antonio Logo',\n SEGMENTED_MODAL_BRUSSELS_ALT: 'Brussels Logo',\n SEGMENTED_MODAL_BERKELEY_ALT: 'Berkeley Logo',\n\n MAXIMUM_IMPACT_WEBINAR_DESCRIPTION: 'Maximum Impact: 5 ways to automate year-end giving',\n MAXIMUM_IMPACT_WEBINAR_DATE: 'Thursday, August 24, at 11 a.m. PT',\n\n HEALTHCARE_FUTURE_WEBINAR_DESCRIPTION: 'Powering healthcare’s future with form automation',\n HEALTHCARE_FUTURE_WEBINAR_DATE: 'Thursday, April 25, at 11 a.m. PT',\n\n BEFORE_YOU_GO: 'BEFORE YOU GO',\n ADV_TITLE_1: 'Request a free demo to learn more about the advanced features of Jotform Enterprise',\n\n ADV_BANNER_TITLE: 'Don\\'t miss your chance to improve your business operations with Jotform Enterprise!',\n ADV_BANNER_DESCRIPTION: 'Get a free demo in which you will be told the Enterprise solutions that will benefit your business.',\n REQUEST_A_DEMO: 'Request a Demo',\n NOT_NOW: 'Not Now',\n\n FOMO_MODAL_BADGE: 'ACT FAST & SAVE',\n FOMO_TITLE: 'Jotform Enterprise Price Adjustment',\n FOMO_DATE: 'Act before October 1',\n FOMO_GREETING: 'On October 1st, Jotform Enterprise will have a price adjustment.Don’t miss your chance to save and lock in our current pricing.',\n FOMO_CONTENT: 'Contact the Enterprise Sales team today to sign up before October 1.',\n FOMO_THANK_YOU: 'Thank You',\n FOMO_THANK_YOU_SUB_TITLE: 'Our sales representative will get in touch with you shortly.',\n\n FORMS: 'Forms',\n MONTHLY_SUBMISSION: 'Monthly Submissions',\n SIGNED_DOCUMENTS: 'Signed Documents',\n SUBMISSION_STORAGE: 'Submission Storage',\n PAYMENT_SUBMISSIONS: 'Payment Submissions',\n API_AND_MORE: 'API [1[and more...]] ',\n MULTIUSER_PLATFORM: 'Multiuser Platform',\n MULTIPLE_TEAMS_AND_USERS: 'Multiple Teams and Users',\n DEDICATED_SUPPORT_LIST: 'Dedicated Support',\n USER_MANAGEMENT: 'User Management',\n USER_ACCESS_CONTROL: 'User Access Control',\n SINGLE_SIGN_ON: 'Single Sign-On',\n SINGLE_SIGN_ON_EXAMPLE: 'Microsoft, Google, Okta & more...',\n SLA_SHORT: 'SLA',\n SLA_EXPLANATION: 'Service Level Agreements',\n DATA_RESIDENCY: 'Data Residency',\n LOCAL_RESIDENCY: 'Local Residency & Dedicated Server',\n PROFESSIONAL_SERVICES: 'Professional Services',\n FORM_AND_WORKFLOW_SERVICES: 'Form & Workflow Building Services',\n HIPAA_COMPLIANCE_AVAILABLE_SHORT: 'HIPAA Compliance Features Available',\n CUSTOM_BRANDING_DOMAIN: 'Custom Branding & Domain',\n SHOW_ALL: 'Show all',\n\n BLOG_CONTENT_SPEED_UP_BANNER_TITLE: 'Speed up your workflows and improve efficiency with Jotform Enterprise',\n BLOG_CONTENT_SPEED_UP_BANNER_DIVIDER: 'OR FOR ADVANCED SOLUTIONS',\n BLOG_CONTENT_BOOST_BANNER_TITLE: 'Ready to boost your company’s productivity?',\n BLOG_CONTENT_SIDE_BANNER_TITLE: 'Need Jotform for your organization?',\n BLOG_CONTENT_SIDE_BANNER_DESCRIPTION: 'Contact us to book a demo and learn more about Enterprise-level features.',\n\n BLOG_CONTENT_BANNER_SIGN_UP_CTA: 'Sign Up',\n BLOG_CONTENT_BANNER_CUSTOM_QUOTE_CTA: 'Get Custom Quote',\n\n DEDICATED_SUPPORT_DESC: 'Apply to Jotform Enterprise to get access to a dedicated support team',\n DEDICATED_SUPPORT_DESC_ALT: 'Jotform Enterprise offers [1[dedicated support, Zoom calls,]] professional services, and more',\n\n FASTER_SUPPORT_RESP_BANNER_DESC: 'Get faster responses from a dedicated support team with Jotform Enterprise',\n PRIORITIZE_QUESTION: 'Turn On Faster Responses',\n\n FASTER_SUPPORT_RESP_MODAL_DESC: 'Apply for Enterprise to get faster responses from a dedicated support team',\n\n CONTACT_FOR_DEDICATED_SUPPORT_TEAM: 'Contact an Enterprise sales [1[representative to get access to a]] dedicated support team',\n\n CONTACT_ENTERPRISE: 'Contact Enterprise',\n SEE_PLAN_DETAILS: 'See plan details',\n CUSTOM_PRICING: 'Custom Pricing',\n USER_MANAGEMENT_AND_ACCESS_CONTROL: 'User Management & Access Control',\n LOCAL_DATA_RESIDENCY: 'Local Data Residency',\n CUSTOM_BRANDING: 'Custom Branding',\n ENTERPRISE_CONTACT_FORM: 'Enterprise Contact Form',\n EDUCATION_AND_NONPROFIT_DISCOUNT: '30% Off for Educators & Nonprofits',\n EDUCATION_AND_NONPROFIT_DISCOUNT_EXPLANATION: 'Request a quote to apply for a discount',\n TRUSTED_PLUS_TEXT: 'Trusted by 100+',\n LEADING_COMPANIES: 'Leading Companies',\n\n ED_TECH_WEBINAR_DESCRIPTION: 'EdTech tips to speed up administration and slash costs',\n ED_TECH_WEBINAR_DATE: 'Thursday, September 28, at 11 a.m. PT',\n\n SURE_TO_GO_BACK: 'Are you sure you want to go back to the pricing page?',\n GO_TO_PRICING: 'Go to Pricing',\n STAY: 'Stay',\n REQUEST_RECEIVED: 'Request received',\n THANKS_FOR_GETTING_TOUCH: 'Thanks for getting in touch. Our sales team will respond to you shortly.',\n\n BLOG_BANNER_MODAL_TITLE: 'Contact us to book a demo & learn more about Enterprise-level features',\n\n GET_HANDS_ON_PROFESSIONAL_SERVICES: 'Get hands-on help from Jotform Enterprise Professional Services',\n GET_HANDS_ON_PROFESSIONAL_SERVICES_DESCRIPTION: 'Fast-track onboarding, implementation, and more with a team committed to your success.',\n GET_A_QUOTE: 'Get a Quote',\n SESSIONS_BANNER_TEXT: '[1[Add multiple users to your account with Jotform Enterprise!]] You can add or delete users, review user activity.',\n\n SSO_ACCESS_TITLE: 'Access forms using Single Sign-On (SSO)',\n SSO_ACCESS_DESCRIPTION: 'Use a single set of login credentials to access and manage your forms with Jotform Enterprise.',\n\n SSO_PREFILL_TITLE: 'Single Sign-On Prefill',\n SSO_PREFILL_DESCRIPTION: 'Jotform Enterprise offers single sign-on configuration. With this configuration you can pre-populate your form fields with data from SSO provider.',\n\n APPLY_ENTERPRISE_FOR_SSO_PREFILL: 'Apply for Enterprise to start using Single Sign-On (SSO) prefill',\n CONTACT_ENTERPRISE_SALES_SSO_PREFILL: 'Contact an Enterprise sales representative to enable Single Sign-On (SSO) Prefill',\n\n WITHOUT_CODING_FULLY_CUSTOMIZE_JOTFORM: 'Fully customize Jotform to match your branding without any coding. Enjoy custom domains and form URLs as well as single sign-on (SSO).',\n WANT_TO_CUSTOMIZE_WORKFLOW: 'Want to customize workflow pages with your company colors and logo?',\n\n NHS_TITLE: 'Elevate Data Security, Elevate Trust',\n NHS_DESCRIPTION: 'Unlock tailored enterprise solutions for your trust, backed by top-tier security compliance, all within UK borders.',\n SCHEDULE_MEETING: 'Schedule a Meeting',\n\n SCHEDULE: 'Schedule',\n HEY_THERE: 'Hi there,',\n EXCLUSIVE_OFFER_FOR_YOU: 'Exclusive offer for you!',\n CHOOSE_MEETING_TIME_EDUCATION: 'Choose a 10-minute time slot to chat with me. I\\'d love to help you get the most out of Jotform Enterprise\\'s EdTech features and share my experience.',\n CONTACT_WITH_ME_UNLOCK_EDUCATION: 'Contact me to unlock a 30% discount on our Enterprise plan tailored for the education industry. Let’s discuss how our EdTech features can supercharge your organization.',\n BEST: 'Best,',\n AUSTIN_FOLEY: 'Austin Foley',\n EDUCATION_VERTICAL_SPECIALIST: 'Education Vertical Specialist',\n CONTACT_NOW: 'Contact Now',\n\n APPLY_FULLY_BRANDED_EXPERIENCE: 'Apply for Jotform Enterprise to build a fully branded experience',\n CONTACT_SALES_REPRESENTATIVE_BRANDED_EXPERIENCE: 'Contact an Enterprise sales representative to use your own domain name',\n\n JOIN_ENTERPRISE_SOC2: 'Join [1[Jotform Enterprise]] to secure your data with [2[SOC 2 compliance]] solutions',\n\n APPLY_ENTERPRISE_TO_GET_DISCOUNT_ED_TECH: 'Contact an Enterprise sales representative to get 30% off powerful EdTech features',\n APPLY_ENTERPRISE_TO_GET_DISCOUNT_ED_TECH_LINED: 'Contact an Enterprise sales representative to get 30% off powerful EdTech features',\n FERPA_COMPLIANCE: 'FERPA Compliance Badge',\n HIPAA_COMPLIANCE: 'HIPAA Compliance Badge',\n SOC2_COMPLIANCE: 'SOC2 Compliance Badge',\n GDPR_COMPLIANCE: 'GDPR Compliance Badge',\n PCI_COMPLIANCE: 'PCI Compliance Badge',\n BIT_256_SSL: '256 Bit SSL Encryption Badge',\n\n SOC2_COMP: 'SOC 2 Compliance',\n SOC2_COMP_EXPLANATION: 'Uphold all five SOC 2 Trust Service Principles: security, confidentiality, availability, privacy, and processing integrity.',\n SOC2_COMP_ENABLE: 'Enable SOC 2 Compliance',\n\n EDUCATION_DISCOUNT_PERCENT: '30% Education Discount',\n\n GET_HANDS_ON_HELP: 'Get hands-on help with setup, training, and more',\n TAKE_ADVANTAGE_OF_EXPERT_LED_BUILD: 'Take advantage of expert-led builds and training to optimize your workflow and empower your team. Apply for Jotform Enterprise Professional Services today.',\n\n APPLY_ENTERPRISE_TO_GET_PROFESSIONAL_SERVICES: 'Apply for Enterprise to get [1[professional services]]',\n\n PERCENT_30: '30%',\n PERCENT_30_OFF: '30% off',\n JOIN_AND_GET_30_PERCENT_EDU_DISCOUNT: 'Join and get 30% Education Discount',\n\n APPLY_ENTERPRISE_TO_GET_LIVE_ZOOM_SUPPORT: '[1[Apply for Enterprise to get]] live Zoom support',\n ZOOM_MEETING_VISUAL_DESCRIPTION: 'Enterprise user and Jotform Enterprise Representative Zoom Meeting',\n SCHEDULE_ZOOM_MEETING: 'Schedule Zoom Meeting',\n\n MORE_POWER_MORE_SUPPORT: 'More power. More support.',\n JOTFORM_ENTERPRISE_SSO_FEATURE: 'Would you like to use the Require SSO feature? Learn how with Jotform Enterprise.',\n EXPLORE_JOTFORM_ENTERPRISE: 'Explore Jotform Enterprise',\n\n JOTFORM_ENTERPRISE_OFFERS_SSO: 'Jotform Enterprise offers single sign-on configuration. With this configuration you can pre-populate your form fields with data from SSO provider.',\n FULL_NAME: 'Full Name',\n PHONE_NUMBER: 'Phone Number',\n JOB_TITLE: 'Job Title',\n UPGRADE_TO_ENTERPRISE: 'Upgrade to Enterprise',\n UPGRADE_TO_JOTFORM_ENTERPRISE: 'Upgrade to Jotform Enterprise',\n\n TOP_NOTCH_SECURITY: 'Top-Notch Security',\n HOST_YOUR_DATA_IN_ANY_PART_OF_THE_WORLD: 'Host your data anywhere in the world with local data residency. Your data is protected by 256-bit SSL, PCI DSS Level 1 certification, and the option to enable HIPAA compliance features.',\n LOCAL_DATA_RESIDENCY_BANNER: 'Local data residency banner',\n\n SSO_PREFILL: 'SSO PREFILL',\n SSO_PREFILL_APPLY_TITLE: 'Apply for Jotform Enterprise to enable single sign-on prefill',\n SSO_PREFILL_PROVIDER_DESCRIPTION: 'Jotform Enterprise offers single sign-on configuration which you can pre-populate your form fields with data from SSO provider.',\n\n APPLY_ENTERPRISE_TO_HOST_ANYWHERE: 'Apply for Enterprise to host your data anywhere in the world',\n DATA_PROTECTION_SSL_PCI_DSS: 'Protect your data with 256-bit SSL, PCI DSS Level 1 certification, and the option to enable HIPAA compliance features.',\n\n REACHED_FOLDER_LIMIT: 'You have reached your [1[folder limit]]',\n APPLY_FOR_ENTERPRISE_FOLDER: 'Contact an Enterprise sales representative to create unlimited folders and easily find your forms [1[and data.]]',\n\n PLEASE_SUBMIT_EMAIL: 'To get access to this content, please submit your email.',\n\n GET_REAL_TIME_SUPPORT: 'Apply for Enterprise to get real-time support',\n APPLY_ENTERPRISE_TO_GET_REAL_TIME_SUPPORT: 'Apply for Enterprise to get real-time support',\n\n FQHC_TITLE: 'Request a meeting with an Enterprise expert with insights into how Jotform Enterprise helps FQHC',\n\n DEDICATED_VIDEO_CHAT: 'Get dedicated video chat support',\n DEDICATED_VIDEO_CHAT_MODAL_DESC: 'Apply for Enterprise to get dedicated video chat support',\n\n APPLY_ENTERPRISE_FOR_SPECIFIC_LOCATION: '[1[Contact an Enterprise sales]] representative to store your data in a specific location',\n\n ENTERPRISE_DATA_CENTERS: 'Enterprise Data Centers',\n STORE_DATA_IN_SPECIFIC_LOCATION: 'Store my data in a specific location',\n SELECT_DATA_CENTER: 'Select data center',\n SEARCH: 'Search',\n\n THIS_FEATURE_AVAILABLE_FOR_ENTERPRISE: 'This feature is available only with [1[Jotform Enterprise]]',\n\n ENTERPRISE_FEATURE: 'Enterprise feature',\n\n APPLY_ENTERPRISE_TO_ENABLE_SSO: 'Apply for Enterprise to enable Single Sign-On (SSO)',\n SSO_MODAL_VISUAL_DESCRIPTION: 'SSO Login Preview',\n\n GET_ACCESS_TO_SYSTEM_LOGS: 'Get access to system logs for powerful Enterprise reporting',\n TRACK_ALL_OUTGOING_MESSAGES: 'Track all outgoing emails and integration actions for your Jotform Enterprise team.',\n TRACK_ALL_OUTGOING_EMAILS: '[1[Contact an Enterprise sales representative]] to track all outgoing emails with system logs',\n APPLY_ENTERPRISE_TO_TRACK_ALL_OUTGOING_EMAILS: 'Apply for Enterprise to track all outgoing emails and integration actions',\n\n APPLY_ENTERPRISE_TO_ENABLE_SSO_PREFILL: 'Apply for Enterprise to enable Single Sign-On (SSO) Prefill',\n APPLY_ENTERPRISE_TO_ENABLE_SSO_PREFILL_DESCRIPTION: 'Jotform Enterprise lets you pre-populate fields using data from your SSO provider. You’ll also get unlimited forms, submissions, and more!',\n SSO_PREFILL_VISUAL_EXPLANATION: 'Single Sign-On (SSO) Prefill Preview',\n\n YOUR_DOMAIN: 'https://www.[1[yourdomain]].ext/login',\n YOUR_LOGO: 'Your Logo',\n\n GET_THE_APP: 'Get the App',\n ITS_FREE: 'It\\'s Free!',\n JOTFORM_IS_ON_APP_EXCHANGE: 'Jotform is now on Salesforce AppExchange!',\n USE_JOTFORM_WITHOUT_LEAVING_SALESFORCE: 'Use Jotform without leaving Salesforce',\n CONTACT_SALES_TO_USE_JOTFORM_WITHOUT_LEAVING_SALESFORCE: 'Start using Jotform right from your [1[Salesforce dashboard]]',\n CONTACT_OUR_SALES_TEAM_TO_USE_JOTFORM_IN_SALESFORCE: 'Contact our sales team to use Jotform in Salesforce',\n APPEXCHANGE_MODAL_VISUAL_DESCRIPTION: 'Jotform and Salesforce Icons',\n\n THANK_YOU_FOR_DOWNLOADING: 'Thank you for downloading',\n THANK_YOU_FOR_DOWNLOADING_EXPLANATION: 'Request a free demo to learn more about the advanced features of Jotform Enterprise',\n\n DOWNLOAD_JOTFORM_ENTERPRISE_FOR_BEGINNERS: 'Download Jotform Enterprise for Beginners',\n DOWNLOAD_JOTFORM_ENTERPRISE_FOR_BEGINNERS_EXPLANATION: 'Please fill out the form below to download the book ',\n\n NEED_PROFESSIONAL_SERVICE: 'Need professional services? Upgrade to Jotform Enterprise',\n DISCOVER_NOW: 'Discover Now',\n\n DEDICATED_SUPPORT_SECTION_DESCRIPTION: 'Get a dedicated support team with Jotform Enterprise.',\n DEDICATED_SUPPORT_BANNER_DESCRIPTION: 'Want real-time support? Jotform Enterprise customers get a dedicated support team.',\n GET_NOW: 'Get Now',\n APPLY_TO_JOTFORM_ENTERPRISE_PLAN: 'Apply to Jotform Enterprise Plan',\n\n CONTACT_SALES_REPRESENTATIVE_DEDICATED_SUPPORT: 'Contact an Enterprise Sales representative to get access to a dedicated support team',\n\n SCHEDULE_ZOOM_CALL: 'Schedule a Zoom Call',\n\n GET_PDF: 'GET PDF'\n\n};\n","/* eslint-disable max-len */\nexport const CTA_URLS = {\n ADD_AND_MANAGE_USERS: {\n CONTACT_SALES_URL: '/enterprise/contact-sales/?utm_medium=referral&utm_source=jotform.com&utm_content=collaboration_enterprise_accountbox_admin_console_link&utm_campaign=enterprise_cta&utm_enterprise_actions_target=contact_sales_link',\n LEARN_MORE_URL: '/enterprise/multiple-users/?utm_medium=referral&utm_source=jotform.com&utm_content=collaboration_enterprise_accountbox_admin_console_link&utm_campaign=enterprise_cta&utm_enterprise_actions_target=learn_more_link'\n },\n ADMIN_CONSOLE_PROMOTION: {\n CONTACT_SALES_URL: '/enterprise/contact-sales/?utm_medium=referral&utm_source=jotform.com&utm_content=enterprise_accountbox_admin_console_link&utm_campaign=enterprise_cta&utm_enterprise_actions_target=contact_sales_link',\n LEARN_MORE_URL: '/enterprise/multiple-users/?utm_medium=referral&utm_source=jotform.com&utm_content=enterprise_accountbox_admin_console_link&utm_campaign=enterprise_cta&utm_enterprise_actions_target=learn_more_link'\n },\n UPGRADE_TO_ENTERPRISE_FULL_PAGE: {\n CONTACT_SALES_URL: '/enterprise/contact-sales/?utm_medium=referral&utm_source=myaccount_users&utm_content=contact_sales_button&utm_campaign=enterprise_cta&utm_enterprise_actions_target=contact_sales_link',\n LEARN_MORE_URL: '/enterprise/multiple-users/?utm_medium=referral&utm_source=myaccount_users&utm_content=learn_more_button&utm_campaign=enterprise_cta&utm_enterprise_actions_target=learn_more_link'\n },\n ASSIGN_TO_EVERYONE_PROMOTION: {\n CONTACT_SALES_URL: '/enterprise/contact-sales/?utm_medium=referral&utm_source=form_builder&utm_content=assign_everyone_toggle&utm_campaign=enterprise_cta&utm_enterprise_actions_target=contact_sales_link',\n LEARN_MORE_URL: '/enterprise/multiple-users/?utm_medium=referral&utm_source=form_builder&utm_content=assign_everyone_toggle&utm_campaign=enterprise_cta&utm_enterprise_actions_target=learn_more_link'\n },\n ASSIGN_TO_EVERYONE_BUTTON: {\n URL: '/enterprise/multiple-users/?utm_medium=referral&utm_source=assign_everyone_button&utm_content=assign_everyone_button_link&utm_campaign=enterprise_cta'\n },\n ASSIGN_FORM_BANNER: {\n LEARN_MORE_URL: '/teams/?utm_medium=referral&utm_source=form_builder&utm_content=assign_form_banner&utm_campaign=enterprise_cta&utm_enterprise_actions_target=learn_more_link'\n },\n ENTERPRISE_WHITE_LABELING_BANNER: { // a/b test\n CONTACT_SALES_URL: '/enterprise/contact-sales/?utm_medium=referral&utm_source=form_builder&utm_content=mini_designer_white_labeling&utm_campaign=enterprise_cta&utm_enterprise_actions_target=contact_sales_link',\n LEARN_MORE_URL: '/enterprise/white-label/?utm_medium=referral&utm_source=form_builder&utm_content=mini_designer_white_labeling&utm_campaign=enterprise_cta&utm_enterprise_actions_target=learn_more_link'\n },\n WHITE_LABELING_BANNER: {\n CONTACT_SALES_URL: '/enterprise/contact-sales/?utm_medium=referral&utm_source=myaccount_settings&utm_content=white_labeling_banner&utm_campaign=enterprise_cta&utm_enterprise_actions_target=contact_sales_link',\n LEARN_MORE_URL: '/enterprise/white-label/?utm_medium=referral&utm_source=myaccount_settings&utm_content=white_labeling_banner&utm_campaign=enterprise_cta&utm_enterprise_actions_target=learn_more_link'\n },\n APPROVAL_WHITE_LABELING_BANNER: {\n UPGRADE_URL: '/enterprise/contact-sales/?utm_medium=referral&utm_source=approval&utm_content=white_labeling_banner&utm_campaign=enterprise_cta&utm_enterprise_actions_target=upgrade_link',\n LEARN_MORE_URL: '/enterprise/white-label/?utm_medium=referral&utm_source=approval&utm_content=white_labeling_banner&utm_campaign=enterprise_cta&utm_enterprise_actions_target=learn_more_link'\n },\n ENTERPRISE_GOVERNMENT_MODAL: {\n CONTACT_SALES_URL: '/enterprise/contact-sales/?utm_medium=referral&utm_source=my_forms&utm_content=enterprise_government_modal&utm_campaign=enterprise_cta&utm_enterprise_actions_target=contact_sales_link',\n LEARN_MORE_URL: '/enterprise/government-solution/?utm_medium=referral&utm_source=my_forms&utm_content=enterprise_government_modal&utm_campaign=enterprise_cta&utm_enterprise_actions_target=learn_more_link'\n },\n ENTERPRISE_ACCOUNTBOX_PROMOTION: {\n CONTACT_SALES_URL: '/enterprise/contact-sales/?utm_medium=referral&utm_source=account_box&utm_content=inline_alert&utm_campaign=enterprise_cta&utm_enterprise_actions_target=contact_sales_link',\n LEARN_MORE_URL: '/enterprise/?utm_medium=referral&utm_source=account_box&utm_content=inline_alert&utm_campaign=enterprise_cta&utm_enterprise_actions_target=learn_more_link'\n },\n ENTERPRISE_PROMO_IN_BILLING_URL: '/enterprise/?utm_medium=referral&utm_source=myaccount_upgrade&utm_content=check_out_jotform_enterprise&utm_campaign=enterprise_cta&utm_enterprise_actions_target=check_out_jotform_enterprise',\n FULLY_CUSTOMIZE_BANNER: {\n CONTACT_SALES_URL: '/enterprise/contact-sales/?utm_medium=referral&utm_source=form_builder&utm_content=webhook_banner&utm_campaign=enterprise_cta&utm_enterprise_actions_target=contact_sales_link',\n LEARN_MORE_URL: '/enterprise/?utm_medium=referral&utm_source=form_builder&utm_content=webhook_banner&utm_campaign=enterprise_cta&utm_enterprise_actions_target=learn_more_link'\n },\n IP_RESTRICTION_BANNER: {\n CONTACT_SALES_URL: '/enterprise/contact-sales/?utm_medium=referral&utm_source={{app_name}}&utm_content=ip_restriction_banner&utm_campaign=enterprise_cta&utm_enterprise_actions_target=contact_sales_link',\n DISCOVER_MORE_URL: '/enterprise/?utm_medium=referral&utm_source={{app_name}}&utm_content=ip_restriction_banner&utm_campaign=enterprise_cta&utm_enterprise_actions_target=discover_now_link'\n },\n CUSTOM_DOMAIN_API_BANNER: {\n CONTACT_SALES_URL: '/enterprise/contact-sales/?utm_medium=referral&utm_source=myaccount_api&utm_content=myaccount_api_custom_domain_contact_sales&utm_campaign=enterprise_cta&utm_enterprise_actions_target=contact_sales_link',\n ENTERPRISE_URL: '/enterprise/?utm_medium=referral&utm_source=myaccount_api&utm_content=myaccount_api_custom_domain_enterprise&utm_campaign=enterprise_cta&utm_enterprise_actions_target=enterprise_link'\n },\n MY_ACCOUNT_STORE_DATA_IN_AU_BANNER: {\n CONTACT_SALES_URL: '/enterprise/contact-sales/?utm_medium=referral&utm_source=myaccount_data&utm_content=store_data_in_au_banner&utm_campaign=enterprise_cta&utm_enterprise_actions_target=contact_sales_link',\n ENTERPRISE_URL: '/enterprise/?utm_medium=referral&utm_source=myaccount_data&utm_content=store_data_in_au_banner&utm_campaign=enterprise_cta&utm_enterprise_actions_target=enterprise_link'\n },\n DEDICATED_SUPPORT_BANNER: {\n CONTACT_SALES_URL: '/enterprise/contact-sales/?utm_medium=referral&utm_source=form_builder_help_menu&utm_content=dedicated_support&utm_campaign=enterprise_cta&utm_enterprise_actions_target=contact_sales_link'\n },\n DEDICATED_SUPPORT_SECTION: {\n CONTACT_SALES_URL: '/enterprise/contact-sales/?utm_medium=referral&utm_source=jotform.com&utm_content=dedicated_support_contact_sales_cta&utm_campaign=enterprise_common_header'\n },\n WHITE_LABEL_SECTION: {\n CONTACT_SALES_URL: '/enterprise/contact-sales/?utm_medium=referral&utm_source=form_builder&utm_content=white-label-section&utm_campaign=enterprise_cta&utm_enterprise_actions_target=contact_sales_link',\n LEARN_MORE_URL: '/enterprise/?utm_medium=referral&utm_source=form_builder&utm_content=white-label-section&utm_campaign=enterprise_cta&utm_enterprise_actions_target=learn_more_link'\n },\n ACCESS_CONTROL_SECTION: {\n CONTACT_SALES_URL: '/enterprise/contact-sales/?utm_medium=referral&utm_source=form_builder&utm_content=access-control-section&utm_campaign=enterprise_cta&utm_enterprise_actions_target=contact_sales_link',\n LEARN_MORE_URL: '/enterprise/?utm_medium=referral&utm_source=form_builder&utm_content=access-control-section&utm_campaign=enterprise_cta&utm_enterprise_actions_target=learn_more_link'\n },\n CUSTOM_DOMAIN_TOOLTIP: {\n WHITE_LABEL_URL_FORM_BUILDER: '/enterprise/white-label/?utm_medium=referral&utm_source=form_builder&utm_content=publish_quick_share_enterprise_cta&utm_campaign=enterprise_cta&utm_enterprise_actions_target=white_label_link',\n WHITE_LABEL_URL_PORTAL: '/enterprise/white-label/?utm_medium=referral&utm_source=portal&utm_content=publish_quick_share_enterprise_cta&utm_campaign=enterprise_cta&utm_enterprise_actions_target=white_label_link'\n },\n SHARE_PANEL_BOTTOM_BANNER: {\n CONTACT_SALES_URL: '/enterprise/contact-sales/?utm_medium=referral&utm_source=share_panel&utm_content=collab_bottom_banner&utm_campaign=enterprise_cta&utm_enterprise_actions_target=contact_sales_link',\n LEARN_MORE_URL: '/enterprise/?utm_medium=referral&utm_source=share_panel&utm_content=collab_bottom_banner&utm_campaign=enterprise_cta&utm_enterprise_actions_target=learn_more_link'\n },\n PUSH_DAY_BANNER: {\n CONTACT_SALES_URL: '/enterprise/contact-sales/?utm_medium=referral&utm_source=my_forms&utm_content=push_day_banner&utm_campaign=enterprise_cta&utm_enterprise_actions_target=contact_sales_link'\n },\n PROFESSIONAL_SOLUTIONS_BANNER: {\n CONTACT_SALES_URL_INBOX: '/enterprise/contact-sales/?utm_medium=referral&utm_source=inbox&utm_content=professional_solutions_banner&utm_campaign=enterprise_cta&utm_enterprise_actions_target=contact_sales_link',\n CONTACT_SALES_URL_TABLES: '/enterprise/contact-sales/?utm_medium=referral&utm_source=tables&utm_content=professional_solutions_banner&utm_campaign=enterprise_cta&utm_enterprise_actions_target=contact_sales_link'\n },\n ADMIN_CONSOLE_SLIDER_MODAL: {\n CONTACT_SALES_URL: '/enterprise/contact-sales/?utm_medium=referral&utm_source=my_forms_more_menu&utm_content=admin_console_slider_modal&utm_campaign=enterprise_cta&utm_enterprise_actions_target=contact_sales_link',\n LEARN_MORE_URL: '/enterprise/?utm_medium=referral&utm_source=my_forms_more_menu&utm_content=admin_console_slider_modal&utm_campaign=enterprise_cta&utm_enterprise_actions_target=learn_more_link'\n },\n MYACCOUNT_USAGE_INLINE_LIMIT_ALERT: {\n CONTACT_SALES_URL: '?utm_medium=referral&utm_source=myaccount_usage&utm_content=inline_limit_alert_upgrade_button&utm_campaign=enterprise_cta&utm_enterprise_actions_target=contact_sales_link'\n },\n FORM_ANALYTICS_ADMIN_CONSOLE_BANNER: {\n LEARN_MORE_URL: '/enterprise/?utm_medium=referral&utm_source=form_analytics&utm_content=admin_console_banner&utm_campaign=enterprise_cta&utm_enterprise_actions_target=learn_more_link'\n },\n MYFORMS_WHITE_LABELING_TOOLTIP_BANNER: {\n LEARN_MORE_URL: '/enterprise/white-label/?utm_medium=referral&utm_source=my_forms&utm_content=white_labeling_tooltip&utm_campaign=enterprise_cta&utm_enterprise_actions_target=learn_more_link'\n },\n MY_FORMS_AU_DATA_RESIDENCY_MODAL: {\n DISCOVER_URL: '/enterprise/local-data-residency/?utm_medium=referral&utm_source=my_forms?&utm_content=australian_data_residency_modal&utm_campaign=enterprise_cta&utm_enterprise_actions_target=discover_link'\n },\n MY_FORMS_LUNCH_AND_LEARN_BANNER: {\n SEE_DETAILS: 'https://jotform.com/enterprise/lunch-and-learn-sessions/?utm_medium=referral&utm_source=my_forms&utm_content=lunch_and_learn_banner&utm_campaign=enterprise_cta&utm_enterprise_actions_target=see_details_link#sessions',\n SAVE_YOUR_SEAT: 'https://jotform.com/enterprise/lunch-and-learn-sessions/?utm_medium=referral&utm_source=my_forms&utm_content=lunch_and_learn_banner&utm_campaign=enterprise_cta&utm_enterprise_actions_target=save_your_seat_link',\n JOIN_NOW: 'https://us06web.zoom.us/w/82258346077'\n },\n COST_CUTTING_WEBINAR_MODAL: {\n LEARN_MORE_URL: '/blog/webinar-cutting-costs-from-business-processes/?utm_medium=referral&utm_source=my_forms&utm_content=cost_cutting_webinar_modal&utm_campaign=enterprise_cta&utm_enterprise_actions_target=learn_more_link'\n },\n COST_CUTTING_WEBINAR_BANNER: {\n LEARN_MORE_URL: '/blog/webinar-cutting-costs-from-business-processes/?utm_medium=referral&utm_source=my_forms&utm_content=cost_cutting_webinar_banner&utm_campaign=enterprise_cta&utm_enterprise_actions_target=learn_more_link'\n },\n WORKFLOW_GROUP_APPROVAL_BANNER: {\n CONTACT_SALES_URL: '/enterprise/contact-sales/?utm_medium=referral&utm_source=workflow&utm_content=group_approval_banner&utm_campaign=enterprise_cta&utm_enterprise_actions_target=contact_sales_link',\n LEARN_MORE_URL: '/teams/?utm_medium=referral&utm_source=workflow&utm_content=group_approval_banner&utm_campaign=enterprise_cta&utm_enterprise_actions_target=learn_more_link'\n },\n EXPANDABLE_ADMIN_CONSOLE_BUTTON: {\n LEARN_MORE_URL: '/enterprise/admin-console/?utm_medium=referral&utm_source=my_forms&utm_content=expandable_admin_console_button&utm_campaign=enterprise_cta&utm_enterprise_actions_target=learn_more_link'\n },\n ADD_COLLABORATOR_BANNER: {\n CONTACT_SALES_URL: '/enterprise/multiple-users/?utm_medium=referral&utm_source=form_builder&utm_content=add_collaborator_contact_sales_link&utm_campaign=enterprise_cta&utm_enterprise_actions_target=contact_sales_link',\n LEARN_MORE_URL: '/enterprise/multiple-users/?utm_medium=referral&utm_source=form_builder&utm_content=add_collaborator_learn_more_link&utm_campaign=enterprise_cta&utm_enterprise_actions_target=learn_more_link'\n },\n ENTERPRISE_SECURITY_ITEMS_SECTION: {\n LEARN_MORE_URL: '/enterprise/security/?utm_medium=referral&utm_source=my_account&utm_content=enterprise-security-items&utm_campaign=enterprise_cta&utm_enterprise_actions_target=learn_more_link'\n },\n BLOG_CONTENT_BOOST_BANNER: {\n GET_CUSTOM_QUOTE_URL: utmSource => `/enterprise/contact-sales/?utm_medium=referral&utm_source=${utmSource}&utm_content=boost_banner&utm_campaign=enterprise_cta&utm_enterprise_actions_target=get_custom_quote_link`\n },\n BLOG_CONTENT_SPEED_UP_BANNER: {\n GET_CUSTOM_QUOTE_URL: utmSource => `/enterprise/contact-sales/?utm_medium=referral&utm_source=${utmSource}&utm_content=speed_up_banner&utm_campaign=enterprise_cta&utm_enterprise_actions_target=get_custom_quote_link`\n },\n USER_GUIDE_PROFESSIONAL_SERVICES: {\n CONTACT_SALES_URL: '/enterprise/contact-sales/?utm_medium=referral&utm_source=user_guide_home&utm_content=prof_services_banner&utm_campaign=enterprise_cta&utm_enterprise_actions_target=contact_sales_link',\n LEARN_MORE_URL: '/enterprise/professional-services/?utm_medium=referral&utm_source=user_guide_home&utm_content=prof_services_banner&utm_campaign=enterprise_cta&utm_enterprise_actions_target=learn_more_link'\n },\n GENERAL_FAQ_PROFESSIONAL_SERVICES: {\n CONTACT_SALES_URL: '/enterprise/contact-sales/?utm_medium=referral&utm_source=faq_home&utm_content=prof_services_banner&utm_campaign=enterprise_cta&utm_enterprise_actions_target=contact_sales_link',\n LEARN_MORE_URL: '/enterprise/professional-services/?utm_medium=referral&utm_source=faq_home&utm_content=prof_services_banner&utm_campaign=enterprise_cta&utm_enterprise_actions_target=learn_more_link'\n },\n SESSIONS_ACCOUNT_SHARING_BANNER: {\n CONTACT_SALES_URL: '/enterprise/contact-sales/?utm_medium=referral&utm_source=my_account_security&utm_content=sessions_account_sharing&utm_campaign=enterprise_cta&utm_enterprise_actions_target=contact_sales_link'\n },\n SSO_ACCESS_BANNER: {\n CONTACT_SALES_URL: '/enterprise/contact-sales/?utm_medium=referral&utm_source=form_builder&utm_content=publish_sso_banner&utm_campaign=enterprise_cta&utm_enterprise_actions_target=contact_sales_link',\n LEARN_MORE_URL: '/enterprise/single-sign-on/?utm_medium=referral&utm_source=form_builder&utm_content=publish_sso_banner&utm_campaign=enterprise_cta&utm_enterprise_actions_target=learn_more_link'\n },\n SSO_ACCESS_LEGACY_BANNER: {\n JOTFORM_ENTERPRISE: '/enterprise/single-sign-on/?utm_medium=referral&utm_source=form_builder&utm_content=publish_sso_banner&utm_campaign=enterprise_cta&utm_enterprise_actions_target=jotform_enterprise_link'\n },\n CUSTOM_DOMAIN_TOOLTIP_LEAGACY: {\n TRY_JOTFORM_ENTERPRISE_URL: '/enterprise/white-label/?utm_medium=referral&utm_source=form_builder&utm_content=publish_edit_custom_domain&utm_campaign=enterprise_cta&utm_enterprise_actions_target=try_jotform_enterprise_link'\n },\n SSO_PREFILL_LEGACY_BANNER: {\n UPGRADE_TO_ENTERPRISE: '/enterprise/single-sign-on/?utm_medium=referral&utm_source=form_builder&utm_content=enable_sso_prefill&utm_campaign=enterprise_cta&utm_enterprise_actions_target=upgrade_to_enterprise_link'\n },\n LOCAL_DATA_RESIDENCY_BANNER: {\n UPGRADE_TO_ENTERPRISE: '/enterprise/local-data-residency/?utm_medium=referral&utm_source=myaccount_data_section&utm_content=local_data_residency_banner&utm_campaign=enterprise_cta&utm_enterprise_actions_target=upgrade_to_enterprise_link'\n },\n LOCAL_DATA_RESIDENCY_ALT_BANNER: {\n CONTACT_SALES: '/enterprise/contact-sales/?utm_medium=referral&utm_source=myaccount_data_section&utm_content=local_data_residency_banner&utm_campaign=enterprise_cta&utm_enterprise_actions_target=contact_sales_link',\n LEARN_MORE: '/enterprise/local-data-residency/?utm_medium=referral&utm_source=myaccount_data_section&utm_content=local_data_residency_banner&utm_campaign=enterprise_cta&utm_enterprise_actions_target=learn_more_link'\n },\n TEAMS_CUSTOM_DOMAIN_LEGACY_TOOLTIP: {\n TRY_JOTFORM_ENTERPRISE_URL: '/enterprise/white-label/?utm_medium=referral&utm_source=team_url_section&utm_content=edit_custom_domain&utm_campaign=teams&utm_enterprise_actions_target=try_jotform_enterprise_link'\n },\n SSO_LEGACY_TOOLTIP: {\n JOTFORM_ENTERPRISE_URL: '/enterprise/single-sign-on/?utm_medium=referral&utm_source=form_builder&utm_content=require_sso_toggle&utm_campaign=enterprise_cta&utm_enterprise_actions_target=jotform_enterprise_link'\n },\n TEAMS_MODAL: {\n LEARN_MORE_URL: '/enterprise/teams/?utm_medium=referral&utm_source=teams_modal&utm_content=teams_modal_learn_more_link&utm_campaign=enterprise_cta&utm_enterprise_actions_target=learn_more_link'\n },\n PROFESSIONAL_SERVICES_CONTACT_BANNER: {\n DISCOVER_NOW_URL: '/enterprise/professional-services/?utm_medium=referral&utm_source=professional_services_contact_banner&utm_content=pscb_discover_more_link&utm_campaign=enterprise_cta&utm_enterprise_actions_target=discover_now_link'\n },\n SCHEDULE_ZOOM_MODAL: {\n LEARN_MORE_URL: '/enterprise/?utm_medium=referral&utm_source=schedule_zoom_modal&utm_content=schedule_zoom_modal_learn_more_link&utm_campaign=enterprise_cta&utm_enterprise_actions_target=learn_more_link'\n },\n SOC2_COMPLIANCE_BANNER: {\n LEARN_MORE_URL: '/enterprise/soc-2-compliance/?utm_medium=referral&utm_source=soc2_compliance_banner&utm_content=soc2_compliance_banner_learn_more_link&utm_campaign=enterprise_cta&utm_enterprise_actions_target=learn_more_link'\n }\n};\n","const GA_PROJECT = 'enterprise-promotions';\n\nconst ASSET_TYPES = {\n MODAL: 'modal',\n BANNER: 'banner',\n SECTION: 'section',\n BUTTON: 'button',\n TOOLTIP: 'tooltip'\n};\n\nconst kebabizeReplacer = (match, offset) => (offset ? '-' : '') + match.toLowerCase();\n\nconst kebabize = str => str.replace(/[A-Z]+(?![a-z])|[A-Z]/g, kebabizeReplacer);\n\nconst findAssetType = assetName => Object.values(ASSET_TYPES).find(type => assetName.toLowerCase().includes(type));\n\nexport const createGaAttributes = (assetName = '', suffix = '') => {\n const assetType = findAssetType(assetName);\n return {\n 'data-ga': `${GA_PROJECT}-${assetType}`,\n 'data-id': suffix ? `${kebabize(assetName)}-${kebabize(suffix)}` : `${kebabize(assetName)}`\n };\n};\n\nexport const mapCallbacksToGaTrackingItems = (trackingItems, callbacks = []) => {\n const trackingItemsWithCb = trackingItems.map((item, i) => {\n const isFunc = typeof callbacks[i] === 'function';\n if (!isFunc) return { ...item };\n return { ...item, callback: callbacks[i] };\n });\n return trackingItemsWithCb;\n};\n\nexport const gaDataLayerPushClose = (gaAttributes = {}) => {\n const dataId = gaAttributes['data-id'];\n const assetType = findAssetType(dataId);\n window.dataLayer?.push({\n event: `${assetType}_close`,\n 'data-id': dataId\n });\n};\n\nexport const GA_SUFFIXES = {\n APPLY_NOW: 'applyNow',\n CHECK_OUT_JOTFORM_ENTERPRISE: 'checkOutJotformEnterprise',\n CLOSE: 'close',\n CONTACT_SALES: 'contactSales',\n UPGRADE: 'upgrade',\n DISCOVER_MORE: 'discoverMore',\n DISMISS: 'dismiss',\n ENTERPRISE_LANDING: 'enterpriseLanding',\n ENTERPRISE_WHITE_LABELING: 'enterpriseWhiteLabeling',\n GET_CUSTOM_QUOTE: 'getCustomQuote',\n GET_INSIGHT_NOW: 'getInsightNow',\n GET_A_QUOTE: 'getAQuote',\n JOIN_NOW: 'joinNow',\n LEARN_MORE: 'learnMore',\n LEARN_DETAILS: 'learnDetails',\n NOT_INTERESTED: 'notInterested',\n NOT_NOW: 'notNow',\n READ_THE_REPORT: 'readTheReport',\n REQUEST_A_DEMO: 'requestADemo',\n SAVE_YOUR_SEAT: 'saveYourSeat',\n SAVE_YOUR_SPOT: 'saveYourSpot',\n SEE_DETAILS: 'seeDetails',\n SIGN_UP: 'signUp',\n UPGRADE_TO_JOTFORM_ENTERPRISE: 'upgradeToJotformEnterprise',\n SCHEDULE: 'schedule',\n JOTFORM_ENTERPRISE: 'jotformEnterprise',\n TRY_JOTFORM_ENTERPRISE: 'tryJotformEnterprise',\n UPGRADE_TO_ENTERPRISE: 'upgradeToEnterprise',\n GET_NOW: 'getNow',\n SCHEDULE_ZOOM_CALL: 'scheduleZoomCall',\n GET_PDF: 'getPdf'\n};\n","import { ABTestManager } from '@jotforminc/abtest-manager';\n/* global HTMLElement */\n\nimport Moment from 'moment';\nimport utf8 from 'utf8';\nimport {\n COUNTDOWN_UNIT, lalbSession, LEAD_FORM_MAP, LUNCH_AND_LEARN_SESSIONS, PRICING_TABLE_SOURCE_PAGES\n} from '../constants';\n\nexport const decodeUTF8 = text => {\n if (!text) return '';\n\n try {\n return utf8.decode(text);\n } catch (error) {\n console.log(error);\n return text;\n }\n};\n\nexport const getCurrentDateWithoutTimeZone = () => {\n const currentDate = new Date();\n const offset = currentDate.getTimezoneOffset();\n const currentDateWithoutOffset = new Date(currentDate.getTime() - (offset * 60 * 1000));\n const formattedDate = currentDateWithoutOffset.toISOString().split('T')[0];\n return formattedDate;\n};\n\nexport const getRootElement = id => {\n if (document.getElementById(id)) {\n return document.getElementById(id);\n }\n const rootEl = document.createElement('div');\n rootEl.id = id;\n document.body.appendChild(rootEl);\n return rootEl;\n};\n\nexport const isHTMLElement = el => el instanceof HTMLElement;\n\n// decimal seperator 7 70 700 7.000 70.000 etc.\nexport const formatNumber = num => num.toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, '$1.');\n\nexport const getCountdownInfo = () => {\n const EVENT_DATE = LUNCH_AND_LEARN_SESSIONS[lalbSession - 1];\n const { ANNOUNCEMENT_DATE_TIME, EVENT_DATE_TIME, EVENT_DURATION } = EVENT_DATE;\n\n const eventDateTime = new Date(EVENT_DATE_TIME).getTime();\n const announcementDateTime = new Date(ANNOUNCEMENT_DATE_TIME).getTime();\n\n const campaignTimespan = eventDateTime - announcementDateTime;\n\n const currentDate = new Date();\n const currentDateTimeWithoutOffset = currentDate.getTime();\n\n const eventDurHours = EVENT_DURATION.split(':')[0] * 60 * 60 * 1000;\n const eventDurMinutes = EVENT_DURATION.split(':')[1] * 60 * 1000;\n const eventDuration = eventDurHours + eventDurMinutes;\n\n const eventEndsAt = eventDateTime + eventDuration;\n const isEventCompleted = currentDateTimeWithoutOffset > eventEndsAt;\n const remainingTimespan = eventDateTime - currentDateTimeWithoutOffset;\n const remainingPercentage = Math.floor((remainingTimespan / campaignTimespan) * 100);\n\n let unit;\n let remainingTime;\n\n const remainingTimeDays = Math.floor(Moment.duration(remainingTimespan, 'milliseconds').asDays());\n const remainingTimeHours = Math.floor(Moment.duration(remainingTimespan, 'milliseconds').asHours());\n const remainingTimeMinutes = Math.floor(Moment.duration(remainingTimespan, 'milliseconds').asMinutes());\n\n if (remainingTimeDays >= 1) {\n unit = COUNTDOWN_UNIT.DAYS;\n remainingTime = remainingTimeDays;\n } else if (remainingTimeHours >= 1) {\n unit = COUNTDOWN_UNIT.HOURS;\n remainingTime = remainingTimeHours;\n } else if (remainingTimeMinutes >= 1) {\n unit = COUNTDOWN_UNIT.MINUTES;\n remainingTime = remainingTimeMinutes;\n } else {\n unit = COUNTDOWN_UNIT.LIVE;\n remainingTime = 0;\n }\n\n return {\n unit,\n remainingTime,\n isEventCompleted,\n remainingPercentage\n };\n};\n\nexport const getAppName = () => window.__jfrouter?.ACTIVE_APP?.replace('-', '_') || '';\n\nexport const getMandatoryPrefillValues = user => {\n const username = user?.username || '';\n const bsgEmail = user?.email || '';\n\n return {\n username: decodeUTF8(username),\n bsgEmail: decodeUTF8(bsgEmail)\n };\n};\n\nexport const getUserPrefillValues = user => {\n const fullNameItems = user?.name?.split(' ') || [];\n const lastNameIndex = fullNameItems.length - 1;\n const nameFirst = fullNameItems.length === 1 ? fullNameItems[0] : fullNameItems.slice(0, -1).join(' ').trim();\n const nameLast = fullNameItems.length === 1 ? '' : (fullNameItems[lastNameIndex] || '');\n const email = user?.email || '';\n const jobTitle = '';\n const company = user?.company || '';\n const country = user?.location?.country_name || '';\n const username = user?.username || '';\n\n return {\n username: decodeUTF8(username),\n nameFirst: decodeUTF8(nameFirst),\n nameLast: decodeUTF8(nameLast),\n email: decodeUTF8(email),\n bsgEmail: decodeUTF8(email),\n jobTitle: decodeUTF8(jobTitle),\n company: decodeUTF8(company),\n country: decodeUTF8(country)\n };\n};\n\nexport const shouldShowStepInfo = user => {\n const name = user?.name;\n const uemail = user?.email;\n const countryName = user?.location?.country_name;\n const requiredFields = [name, uemail, countryName];\n return requiredFields.some(field => !field);\n};\n\nexport const isProd = () => window.JOTFORM_ENV === 'PRODUCTION';\nexport const isDevelopment = () => window.JOTFORM_ENV === 'DEVELOPMENT';\n\nexport const readMilestoneJotformFieldValues = iframeDocument => ({\n firstName: iframeDocument?.querySelector('#first_4')?.value || '',\n lastName: iframeDocument?.querySelector('#last_4')?.value || '',\n email: iframeDocument?.querySelector('#input_5')?.value || '',\n country: iframeDocument?.querySelector('#input_7')?.value || '',\n state: iframeDocument?.querySelector('#input_8')?.value || iframeDocument?.querySelector('#input_12')?.value || iframeDocument.querySelector('#input_13')?.value || ''\n});\n\nexport const getSourceLandingPage = () => {\n const { EDUCATION, NONPROFIT } = PRICING_TABLE_SOURCE_PAGES;\n if (window.location.pathname.includes(EDUCATION)) return EDUCATION;\n if (window.location.pathname.includes(NONPROFIT)) return NONPROFIT;\n return '';\n};\nexport const snakeizePathname = () => window.location.pathname.replaceAll('/', '_').replaceAll('-', '_').slice(1, -1);\n\nexport const isGuest = user => (user?.accountType || user?.account_type?.name) === 'GUEST';\n\nexport const isScrollCloseToElement = (targetEl, offset = 250) => {\n if (!targetEl) return false;\n return (targetEl.getBoundingClientRect().top + targetEl.offsetHeight) - window.innerHeight - offset <= 0;\n};\n\nexport const getLiveFormID = (isTestVariant, target) => {\n return (isTestVariant\n ? LEAD_FORM_MAP[target].LIVE\n : LEAD_FORM_MAP.COMMON.LIVE);\n};\n\nexport const getDevFormID = (isTestVariant, target) => {\n return isTestVariant\n ? LEAD_FORM_MAP[target].DEV\n : LEAD_FORM_MAP.COMMON.DEV;\n};\n\nexport async function getIsEnterpriseAIAgentChatActive(user) {\n if (user.enterpriseAIAgentMyAccount === '27521') {\n return true;\n }\n\n if (window.JOTFORM_ENV === 'ENTERPRISE' || user.enterpriseAIAgentMyAccount) {\n return false;\n }\n\n const abTestManager = new ABTestManager({\n user: user,\n isTestEnabled: true,\n testName: 'enterpriseAIAgentMyAccount',\n testVariantCode: '27521',\n controlVariantCode: '27511'\n });\n\n return abTestManager.isTestVariant();\n}\n\nexport const isGenericEmail = email => {\n if (!email) return '';\n // eslint-disable-next-line max-len\n const freeDomains = ['aol', 'bellsouth', 'bigpond', 'bright', 'cfl', 'citlink', 'comcast', 'cox', 'earthlink', 'email', 'emailboxi', 'embarqmail', 'free', 'frontiernet', 'gmail', 'googlemail', 'hotmail', 'icloud', 'iinet', 'libero', 'live', 'mac', 'mail', 'me', 'mindspring', 'msn', 'myyahoo', 'naver', 'netscape', 'online', 'optonline', 'orange', 'outlook', 'privaterelay', 'proton', 'protonmail', 'sbcglobal', 'shaw', 'skynet', 'telenet', 'tiscali', 'verizon', 'virginmedia', 'windowslive', 'yahoo', 'yandex', 'ymail'];\n\n return freeDomains.some(domain => email.includes(`@${domain}.`));\n};\n","import { createStore, compose } from 'redux';\n\nconst makeFeatureReducer = initialState => {\n return (state = initialState, action) => {\n if (!action.type) return state;\n if (action.type === 'ADD_NEW_FEATURE') {\n return {\n ...state,\n [action.payload.featureName]: {\n name: action.payload.featureName,\n value: action.payload.featureValue\n }\n };\n }\n if (action.type === 'ADD_FEATURE_FLAG_LIST') {\n return {\n ...state,\n ...action.payload.featureFlagList\n };\n }\n if (action.type === 'RENEW_FEATURE_FLAG') {\n return {\n ...action.payload.featureFlagList\n };\n }\n if (action.type === 'RESET_FEATURE_FLAG') {\n return {};\n }\n if (!state[action.type]) return state;\n return {\n ...state,\n [action.type]: {\n ...state[action.type],\n value: !state[action.type].value\n }\n };\n };\n};\n\nconst composeEnhancers = (typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({ name: 'JF Feature Flag Reducer' })) || compose;\nclass FeatureFlag {\n store = createStore(makeFeatureReducer({}), composeEnhancers());\n\n constructor() {\n if (global.FeatureFlag) return global.FeatureFlag;\n global.FeatureFlag = this;\n }\n\n init = featureList => {\n this.store.dispatch({ type: 'ADD_FEATURE_FLAG_LIST', payload: { featureFlagList: featureList } });\n };\n\n getStore = () => {\n // TODO: return singleton store;\n return this.store;\n };\n\n addNewFeature = (featureName, featureValue) => {\n this.store.dispatch({ type: 'ADD_NEW_FEATURE', payload: { featureName, featureValue } });\n };\n\n getList = () => {\n return this.store.getState();\n };\n\n getFeature = feature => {\n const featureName = this.getFeatureName(feature);\n const featureValue = this.store.getState()[featureName]?.value;\n if (typeof featureValue === 'undefined') {\n console.log(JSON.stringify(feature), ': feature is not defined.');\n return false;\n }\n return featureValue;\n };\n\n toggleFeature = feature => {\n const featureName = this.getFeatureName(feature);\n this.store.dispatch({ type: featureName });\n };\n\n getFeatureName = feature => {\n if (typeof feature === 'undefined') return null;\n if (typeof feature === 'string') return feature;\n return feature.name;\n };\n}\n\nexport default new FeatureFlag();\n","import React, { useState } from 'react';\nimport { string, func, bool } from 'prop-types';\nimport { Hooks } from '@jotforminc/uikit';\nimport { t } from '@jotforminc/translation';\nimport classNames from 'classnames';\n\nfunction SearchInput({\n placeholder,\n value: defaultValue,\n onChange,\n autoFocus,\n className,\n isNewBranding\n}) {\n const [value, setValue] = useState(defaultValue);\n\n const handleInputChange = e => setValue(e.target.value);\n\n Hooks.useEffectIgnoreFirst(() => onChange(value), [value]);\n\n return (\n \n );\n}\n\nSearchInput.propTypes = {\n placeholder: string,\n value: string,\n onChange: func,\n autoFocus: bool,\n className: string,\n isNewBranding: bool\n};\n\nSearchInput.defaultProps = {\n placeholder: t('Search'),\n value: '',\n onChange: f => f,\n autoFocus: false,\n className: null,\n isNewBranding: false\n};\n\nexport default SearchInput;\n","import React from 'react';\nimport { SelectionGroup as UiKitSelectionGroup } from '@jotforminc/uikit';\n\nconst ContainerRenderer = props =>
      ;\nconst OptionContainerRenderer = props =>
    • ;\n\nconst SelectionGroup = properties => (\n \n);\n\nSelectionGroup.propTypes = UiKitSelectionGroup.propTypes;\nSelectionGroup.defaultProps = UiKitSelectionGroup.defaultProps;\n\nexport default SelectionGroup;\n","import React from 'react';\nimport { Tooltip } from '@jotforminc/tooltip';\nimport { t } from '@jotforminc/translation';\n\nconst ProtectedTag = () => (\n <>\n
      \n \n {t('Protected Health Information: This field includes sensitive information. This data can’t be added.')}\n \n
      \n \n);\n\nexport default ProtectedTag;\n","import React from 'react';\nimport { Tooltip } from '@jotforminc/tooltip';\nimport { t } from '@jotforminc/translation';\nimport { IconLockFilled } from '@jotforminc/svg-icons';\n\nconst EncryptedTag = () => (\n <>\n
      \n \n \n {t('Encrypted Form: This field includes encrypted information. This data can’t be added.')}\n \n
      \n \n);\n\nexport default EncryptedTag;\n","/* eslint-disable react/prop-types */\nimport React from 'react';\nimport { Checkbox } from '@jotforminc/magnet';\nimport ProtectedTag from './ProtectedTag';\nimport EncryptedTag from './EncryptedTag';\n\nconst WithOptionRenderer = (isSingle, showOptionValue) => {\n return ({\n option: {\n text, value, isProtected, isEncrypted\n }, isSelected\n }) => {\n return (\n \n {isSingle && (\n f}\n data-testid={`selectiongroup-option-checkbox-${value}`}\n />\n )}\n
      \n {text}\n {showOptionValue && (\n \n {' '}\n { ` - ${value}` }\n {' '}\n \n )}\n
      \n {(isProtected || isEncrypted) && (\n
      \n {isProtected ? : }\n
      \n )}\n
    \n );\n };\n};\n\nexport default WithOptionRenderer;\n","import classNames from 'classnames';\nimport {\n arrayOf, bool, func, objectOf, oneOfType, shape, string\n} from 'prop-types';\nimport React, { useState } from 'react';\nimport { t } from '@jotforminc/translation';\nimport { useFuse } from '@jotforminc/hooks';\nimport SearchInput from '@jotforminc/search-input';\n\nimport { IconMagnifyingGlass, IconAngleUp } from '@jotforminc/svg-icons';\nimport SelectionGroup from './SelectionGroup';\nimport Option from './Option';\n\nconst questionsPropType = arrayOf(\n shape({\n formTitle: string,\n questions: oneOfType([\n arrayOf(shape({ text: string, qid: string })),\n objectOf(shape({ text: string, qid: string }))\n ])\n })\n);\n\nfunction ColoredFieldsRenderer({\n formTitle,\n questions,\n color,\n optionParser,\n suggestions,\n setMenuVisibility,\n isSingle,\n defaultValue,\n hasForm,\n onChange,\n formID,\n staticFields,\n isMain,\n isExpanded,\n setExpanded\n}) {\n const options = optionParser(questions, { staticFields: staticFields.map(f => ({ ...f, placeholder: isMain ? f.placeholder : f.placeholder.replace('{', `{f${formID}_`) })) });\n const suggestedOptions = options.filter(({ text }) => suggestions?.find(({ text: suggestionText }) => text === suggestionText));\n const wrapperClasses = classNames('formFields-wrapper', { isCollapsed: !isExpanded });\n const suggestionText = suggestions?.[0]?.text?.toLowerCase();\n\n return (\n
    \n
    \n {formTitle && (\n \n
    \n {formTitle}\n
    \n
    \n \n
    \n
    \n )}\n {suggestedOptions.length !== 0 && hasForm && isExpanded && (\n {\n if (!isSingle) {\n setMenuVisibility(false);\n }\n onChange(isSingle ? val : [val]);\n }}\n OptionRenderer={Option(isSingle)}\n />\n )}\n {options.length === 0 && hasForm && isExpanded && (\n
    \n {t(`This form doesn't have any ${suggestionText || 'appropriate'} fields to add.`)}\n
    \n )}\n
    \n
    \n );\n}\n\nColoredFieldsRenderer.propTypes = {\n formTitle: string.isRequired,\n color: string.isRequired,\n suggestions: arrayOf(shape({})).isRequired,\n questions: arrayOf(questionsPropType).isRequired,\n hasForm: bool.isRequired,\n isSingle: bool.isRequired,\n setMenuVisibility: func.isRequired,\n defaultValue: arrayOf(string).isRequired,\n onChange: func.isRequired,\n optionParser: func.isRequired,\n formID: string.isRequired,\n staticFields: arrayOf(shape({})).isRequired,\n isMain: bool.isRequired,\n isExpanded: bool,\n setExpanded: func\n};\n\nColoredFieldsRenderer.defaultProps = {\n isExpanded: true,\n setExpanded: x => x\n};\n\nexport default function MultipleForms({\n hasForm,\n isSingle,\n setMenuVisibility,\n defaultValue,\n onChange,\n optionParser,\n formArray,\n staticFields,\n isDark\n}) {\n const [searchTerm, setSearchTerm] = useState('');\n const [expandedIndex, setExpandedIndex] = useState(0);\n const allQuestions = formArray.flatMap(q => optionParser(q.questions));\n const suggestions = useFuse(allQuestions, searchTerm, ['name', 'text']);\n const noResultFound = suggestions.length === 0 && optionParser(formArray.flatMap(q => q.questions)).length !== 0;\n\n const setExpanded = index => setExpandedIndex(expandedIndex === index ? -1 : index);\n\n return (\n
    \n
    \n
    \n \n
    \n \n
    \n
    \n {formArray.map(({\n formTitle, questions, color, id, isMain, staticFields: formSpecificStaticFields = undefined\n }, index) => {\n const toggleExpand = () => setExpanded(index);\n return (\n 2}\n setExpanded={toggleExpand}\n />\n );\n })}\n
    \n {noResultFound ? (\n
    \n {t('No result found. We couldn’t find any matching items.')}\n
    \n ) : null}\n {!hasForm && (\n
    \n {t(\"You don't have a form to select a field.\")}\n
    \n )}\n
    \n );\n}\n\nMultipleForms.propTypes = {\n formArray: questionsPropType.isRequired,\n hasForm: bool.isRequired,\n isSingle: bool.isRequired,\n setMenuVisibility: func.isRequired,\n defaultValue: arrayOf(string).isRequired,\n onChange: func.isRequired,\n optionParser: func.isRequired,\n staticFields: arrayOf(shape({})).isRequired,\n isDark: string\n};\n\nMultipleForms.defaultProps = {\n isDark: false\n};\n","import {\n arrayOf, bool, func, objectOf, oneOfType, shape, string\n} from 'prop-types';\nimport React from 'react';\nimport { t } from '@jotforminc/translation';\n\nimport SelectionGroup from './SelectionGroup';\nimport Option from './Option';\n\nexport default function SingleForm({\n formTitle,\n questions,\n hasForm,\n isSingle,\n setMenuVisibility,\n defaultValue,\n onChange,\n showOptionValue,\n isEncrypted\n}) {\n const checkIsEncrypted = value => (isEncrypted && !['{form_title}', '{id}'].includes(value));\n\n const refactoredQuestions = questions.map(question => ({\n ...question,\n isEncrypted: checkIsEncrypted(question.value)\n }));\n return (\n
    \n
    \n {formTitle && (\n
    \n {formTitle}\n
    \n )}\n {questions.length !== 0 && hasForm && (\n {\n if (!isSingle) {\n setMenuVisibility(false);\n }\n onChange(isSingle ? val : [val]);\n }}\n OptionRenderer={Option(isSingle, showOptionValue)}\n />\n )}\n {questions.length === 0 && hasForm && (\n
    \n {t(\"Your form doesn't have any appropriate fields to add.\")}\n
    \n )}\n {!hasForm && (\n
    \n {t(\"You don't have a form to select a field.\")}\n
    \n )}\n
    \n
    \n );\n}\n\nconst questionsPropType = oneOfType([\n arrayOf(shape({ text: string, qid: string })),\n objectOf(shape({ text: string, qid: string }))\n]);\n\nSingleForm.defaultProps = {\n formTitle: '',\n showOptionValue: false,\n isEncrypted: false\n};\n\nSingleForm.propTypes = {\n formTitle: string,\n questions: questionsPropType.isRequired,\n hasForm: bool.isRequired,\n isSingle: bool.isRequired,\n setMenuVisibility: func.isRequired,\n defaultValue: arrayOf(string).isRequired,\n onChange: func.isRequired,\n showOptionValue: bool,\n isEncrypted: bool\n};\n","import React, {\n useRef, useImperativeHandle, forwardRef, useEffect\n} from 'react';\nimport {\n arrayOf, shape, string, func, bool, oneOfType, objectOf\n} from 'prop-types';\nimport classNames from 'classnames';\nimport { Popover, Hooks } from '@jotforminc/uikit';\nimport { t } from '@jotforminc/translation';\nimport { getPlaceholderListWithStaticFields, preparePlaceholderDynamicList } from '@jotforminc/utils';\nimport { STATIC_FIELDS_WITH_PLACEHOLDER } from '@jotforminc/constants';\n\nimport { IconLinkDiagonal } from '@jotforminc/svg-icons';\nimport {\n SingleForm, MultipleForms\n} from './components';\n\nimport './styles/FormFields.scss';\n\nconst FormFields = forwardRef(({\n usedFromWorkflow,\n anotherFieldDropdown,\n defaultValue,\n questions,\n onChange,\n addStaticFields,\n staticFields,\n hasForm,\n formTitle,\n isSingle,\n menuTargetRef,\n isButtonVisible,\n fieldsLabelText,\n useMultipleForms,\n formArray,\n isDark,\n usePortal,\n popoverClassName,\n showOptionValue,\n showProtectedTag,\n onVisibilityChange,\n duplicatedEmails,\n isEncrypted\n}, ref) => {\n const menuRef = useRef();\n const buttonRef = useRef();\n const onButtonClickCallbackRef = useRef(null);\n const [isMenuVisible, setMenuVisibility] = Hooks.useClickOutsideState(false, [menuRef, buttonRef]);\n const isFormFieldsDisabledForWorkflow = value => duplicatedEmails && value && duplicatedEmails?.length > 0 && duplicatedEmails.includes(value);\n const getOptions = (formQuestions, opts = {}) => {\n const { staticFields: staticFieldsOptions = staticFields } = opts;\n const questionsArray = Object.values(formQuestions);\n const placeholderList = addStaticFields\n ? getPlaceholderListWithStaticFields({\n questions: questionsArray, includeSeparator: false, staticFields: staticFieldsOptions, anotherFieldDropdown, usedFromWorkflow\n })\n : preparePlaceholderDynamicList(questionsArray, anotherFieldDropdown, usedFromWorkflow);\n // 'protected' is a reserved word in strict mode. so mapeed it to isProtected field\n return placeholderList.map(({\n text, placeholder: value, disabled, isProtected\n }) => ({\n text, value, disabled: isFormFieldsDisabledForWorkflow(value) || disabled, isProtected: isProtected && showProtectedTag\n }));\n };\n\n const handleButtonClick = () => {\n onButtonClickCallbackRef.current?.();\n setMenuVisibility(!isMenuVisible);\n };\n\n useImperativeHandle(ref, () => ({\n setMenuVisibility,\n getIsMenuVisible: () => isMenuVisible,\n setOnButtonClickCallback: callback => {\n onButtonClickCallbackRef.current = callback;\n }\n }));\n\n useEffect(() => {\n onVisibilityChange(isMenuVisible);\n }, [isMenuVisible]);\n\n return (\n
    \n {isButtonVisible && (\n \n
    \n \n
    \n
    \n {t(fieldsLabelText)}\n
    \n \n )}\n {isMenuVisible && (\n \n {useMultipleForms ? (\n \n ) : (\n \n )}\n \n )}\n
    \n );\n});\n\nconst questionsPropType = oneOfType([\n arrayOf(shape({ text: string, qid: string })),\n objectOf(shape({ text: string, qid: string }))\n]);\n\nFormFields.propTypes = {\n usedFromWorkflow: bool,\n anotherFieldDropdown: bool,\n defaultValue: arrayOf(string),\n questions: questionsPropType,\n addStaticFields: bool,\n staticFields: arrayOf(shape({})),\n isSingle: bool,\n onChange: func,\n hasForm: bool,\n formTitle: string,\n menuTargetRef: shape({}),\n isButtonVisible: bool,\n fieldsLabelText: string,\n useMultipleForms: bool,\n formArray: arrayOf(shape({})),\n isDark: bool,\n usePortal: bool,\n popoverClassName: string,\n showOptionValue: bool,\n showProtectedTag: bool,\n onVisibilityChange: func,\n duplicatedEmails: shape(),\n isEncrypted: bool\n};\n\nFormFields.defaultProps = {\n usedFromWorkflow: false,\n anotherFieldDropdown: false,\n defaultValue: [],\n questions: [],\n addStaticFields: false,\n staticFields: STATIC_FIELDS_WITH_PLACEHOLDER,\n isSingle: false,\n onChange: f => f,\n hasForm: true,\n formTitle: '',\n menuTargetRef: null,\n isButtonVisible: true,\n fieldsLabelText: 'Form Fields',\n useMultipleForms: false,\n formArray: [],\n isDark: false,\n usePortal: false,\n popoverClassName: null,\n showOptionValue: false,\n showProtectedTag: false,\n onVisibilityChange: () => null,\n duplicatedEmails: [],\n isEncrypted: false\n};\n\nexport default FormFields;\n","import React from 'react';\nimport {\n string, node, func, shape, bool\n} from 'prop-types';\nimport isString from 'lodash/isString';\nimport { TextInput } from '@jotforminc/uikit';\nimport DomPurify from 'dompurify';\n\nexport const Label = ({\n htmlFor,\n label,\n children,\n description,\n valueList,\n errorList,\n elementID,\n componentTypeList,\n wrapperClassName,\n required,\n ...props\n}) => {\n const errorMsg = errorList[elementID];\n return (\n
    \n
    \n
    \n {name}\n {sizeText}\n
    \n \n {t(removeButtonText)}\n \n
    \n \n );\n};\n\nImagePreview.propTypes = {\n file: shape({\n name: string,\n url: string,\n size: oneOfType([string, number])\n }),\n changeModeToUpload: func,\n Thumbnail: elementType,\n removeButtonText: string\n};\n\nImagePreview.defaultProps = {\n file: {},\n changeModeToUpload: f => f,\n Thumbnail: ({ url }) => \"ImageUpload-preview_alternative\", // eslint-disable-line react/prop-types\n removeButtonText: 'Remove Image'\n};\n\nexport default ImagePreview;\n","export const ICON_TYPES_ALL = {\n png: 'PNG',\n jpg: 'JPG',\n jpeg: 'JPEG',\n gif: 'GIF',\n bmp: 'BMP',\n tiff: 'TIFF',\n tif: 'TIF',\n mp3: 'MP3',\n ogg: 'OGG',\n mav: 'WAV',\n wma: 'WMA',\n mp4: 'MP4',\n webm: 'WEBM',\n mpg: 'MPG',\n flv: 'FLV',\n avi: 'AVI',\n pdf: 'PDF',\n csv: 'CSV',\n txt: 'TXT',\n rtf: 'RTF',\n html: 'HTML',\n zip: 'ZIP',\n xls: 'XLS',\n xlsx: 'XLSX',\n doc: 'DOC',\n docx: 'DOCX'\n};\nexport const ICON_TYPES = {\n iconFileImage: ['PNG', 'JPG', 'JPEG', 'GIF', 'BMP', 'TIFF', 'TIF'],\n iconFileAudio: ['MP3', 'OGG', 'WAV', 'WMA'],\n iconFileVideo: ['MP4', 'WEBM', 'MPG', 'FLV', 'AVI'],\n iconFileDocument: ['PDF', 'CSV', 'TXT', 'RTF', 'HTML', 'ZIP'],\n iconFileExcel: ['XLS', 'XLSX'],\n iconFileDoc: ['DOC', 'DOCX'],\n iconFileUnsupported: []\n};\nexport const getIconType = fileFormat => {\n const findIndex = Object.values(ICON_TYPES).findIndex(iconType => iconType.includes(fileFormat));\n return findIndex > -1 ? Object.keys(ICON_TYPES)[findIndex] : 'iconFileUnsupported';\n};\n\nexport const makeCamelCase = str => {\n if (typeof str !== 'string') return null;\n const newStr = str.length > 0 ? str[0].toUpperCase() + str.slice(1).toLowerCase() : '';\n newStr.replace('_', ' ');\n return newStr;\n};\n\nexport const getFileName = url => {\n return (url || '').split('/').pop().split('?')[0];\n};\n\nexport const getFileExtension = url => {\n return getFileName(url).split('.').pop().toUpperCase();\n};\n\nexport const isImage = src => ['JPEG', 'PNG', 'GIF', 'TIFF', 'JPG']\n .indexOf(getFileExtension(src)) !== -1;\n\nconst encodeRequestUrl = url => {\n return url.replace('#', '%23').replace('&', '%26');\n};\n\nexport const prepareFiles = (answer, withIconType = false) => (\n answer.map(file => {\n const fileName = getFileName(file);\n const fileUrl = encodeRequestUrl(file);\n const extension = getFileExtension(fileName);\n return {\n fileName,\n fileUrl,\n isImageFile: isImage(fileName),\n extension,\n previewUrl: fileUrl,\n ...(withIconType ? { iconType: getIconType(extension) } : {})\n };\n })\n);\n\nexport const getUploadUrl = url => {\n return url.split('?')[0];\n};\n\nexport const removeExtension = filename => {\n return filename.replace(/\\.[^/.]+$/, '');\n};\n\nexport const isPDF = src => getFileExtension(src) === 'PDF';\n\nexport function isImageFile(filename = '') {\n return filename.match(/(jpg|jpeg|gif|png)((\\?.*)$|$)/i) !== null;\n}\n","import { FileUtils } from '@jotforminc/upload-fields';\n\nexport const filterImages = imageList => imageList.filter(image => FileUtils.isImage(image));\n","import * as Utils from './utils';\n\nexport * from './components';\n\nexport const FileUtils = Utils;\n","import { RequestLayer, Interceptors } from '@jotforminc/request-layer';\n\nimport { filterImages } from '../utils';\n\nconst layer = new RequestLayer('/API', {\n interceptorConfig: {\n teamID: global.teamID,\n customResponseInterceptors: [Interceptors.requestManagerResponseNormalizer]\n }\n});\n\nexport const deleteSelectedImage = url => {\n const requestURL = Array.isArray(url) ? url.join('\",\"') : url;\n return layer.post(`/server.php?action=deleteUserUpload&file=[\"${requestURL}\"]`, null, { disableResponseInterceptors: true });\n};\n\nexport const getUploadedUserImage = showOnlyImages => {\n return layer.post('/server.php?action=getUploadedImages', null, { disableResponseInterceptors: true })\n .then(response => {\n const { data: { files = [] } = {} } = response;\n // Files may be both array and object\n const fileList = Array.isArray(files) ? files : Object.values(files);\n return showOnlyImages ? filterImages(fileList) : fileList;\n });\n};\n\nexport const searchUnsplash = (keyword, count = 16, page = 1) => {\n return layer.get(`image/searchUnsplash?keyword=${keyword}&limit=${count}&page=${page}`);\n};\n\nexport const getRandomImagesFromUnsplash = (count = 16) => {\n return layer.get(`unsplash/photos/random?count=${count}`);\n};\n","import React from 'react';\nimport { t } from '@jotforminc/translation';\n\nimport { Button } from '@jotforminc/magnet';\nimport UnsplashIcon from '../assets/svg/unsplash_icon.svg';\n\nexport const DEFAULT_TAB_LIST = {\n upload: { label: 'UPLOAD' },\n choose: { label: 'MY IMAGES' },\n link: { label: 'ENTER URL' },\n icon: { label: 'SELECT ICON' },\n gallery: { label: 'GALLERY' },\n groupedGallery: { label: 'GALLERY' },\n unsplash: {\n label: (\n
    \n \n Unsplash\n
    \n )\n }\n};\n\nexport const THEME_MAP = {\n isDark: 'isDark',\n isLight: 'isLight',\n isTransparent: 'isTransparent'\n};\n\n/* eslint-disable */\nexport const DefaultDeleteButton = ({ onClick, disabled }) => {\n return (\n \n )\n};\n\nexport const DefaultSelectButton = ({ onClick }) => (\n \n)\n/* eslint-enable */\n\nexport const modesRequireUploadedImages = ['imageUpload'];\n","/* eslint-disable max-statements */\nimport React, {\n useEffect, useState, useRef, useCallback, forwardRef, useImperativeHandle\n} from 'react';\nimport {\n array, arrayOf, bool, elementType, func, shape, string\n} from 'prop-types';\nimport InfiniteScroll from 'react-infinite-scroll-component';\nimport { FileUpload } from '@jotforminc/uikit';\nimport { t } from '@jotforminc/translation';\nimport { TabListWithStyles, Tab } from '@jotforminc/tabs';\nimport { useDebounce } from '@jotforminc/hooks';\nimport {\n Button, InputText, Textarea, FormLabel, FormControl, FormHelperText\n} from '@jotforminc/magnet';\nimport { IconMagnifyingGlass } from '@jotforminc/svg-icons';\nimport IconSelector from './IconSelector';\n\nimport UploadedImagesPanel from './UploadedImagesPanel';\nimport ImagePreview from './ImagePreview';\nimport LoadingScreen from './LoadingScreen';\n\nimport '../styles/ImageUpload.scss';\n\nimport {\n deleteSelectedImage, getUploadedUserImage, searchUnsplash, getRandomImagesFromUnsplash\n} from '../actions';\nimport {\n DEFAULT_TAB_LIST, THEME_MAP, DefaultDeleteButton, DefaultSelectButton, modesRequireUploadedImages\n} from '../constants';\nimport { filterImages } from '../utils';\n\nconst ImageUpload = forwardRef(({\n onImageUpload,\n onImageSelect,\n onImageChange,\n onImageRemove,\n isAltTextActive,\n onAltTextChange,\n renderTabs,\n allowMultipleSelection,\n forceSelect,\n optimize,\n addNotification,\n limitType,\n multipleFileUpload,\n targetURL,\n onlyColoredIcons,\n linkTextInputDefaultValue,\n onLinkTextInputSubmit,\n linkTextInputPlaceholder,\n imgDescInputPlaceholder,\n imageList: originalImageList,\n galleryImageList,\n useAPI,\n theme,\n showLabel,\n showActionButtons,\n SelectButtonRenderer,\n DeleteButtonRenderer,\n ActionButtonsWrapper,\n onLinkInputChange,\n ImageUploadPreviewRenderer,\n ImageLoadingScreenRenderer,\n allowedTypes,\n allowImageUpload,\n onFileUploading,\n onFileRemove,\n isFileUploading,\n value: uploadedFile,\n removeButtonText,\n PreviewThumbnail,\n FileInputRenderer,\n showOnlyImages,\n mode,\n TextWrapperRenderer,\n onFileUploadError,\n noUploadedImageText,\n galleryMode,\n inputButtonText,\n initialSelectedImage,\n groupedGalleryClass,\n groupedGalleryImageList,\n isDeleteSelectedDisabled\n}, ref) => {\n const [imageList, setImageList] = useState(showOnlyImages ? filterImages(originalImageList) : originalImageList);\n const [altText, setAltText] = useState('');\n const [fileUploadDisplayMode, setFileUploadDisplayMode] = useState(uploadedFile.url ? 'display' : 'upload');\n const defaultSelectedImg = initialSelectedImage || '';\n const [selectedImage, setSelectedImage] = useState(allowMultipleSelection ? [] : defaultSelectedImg);\n const [isActionButtonsVisible, setActionButtonsVisible] = useState(false);\n const [unsplashImageList, setUnsplashImageList] = useState([]);\n const [randomUnsplashImageList, setRandomUnsplashImageList] = useState([]);\n const [unsplashPageNumber, setUnsplashPageNumber] = useState(1);\n const [stopLoadMore, setStopLoadMore] = useState(false);\n const allowGettingUploadedImages = modesRequireUploadedImages.includes(mode);\n const textInputRef = useRef();\n const unsplashSearchInputRef = useRef();\n const isBranding21 = true;\n\n useImperativeHandle(ref, () => ({\n setSelectedImage\n }));\n\n const prepareTabTitleList = () => {\n return renderTabs.reduce((prev, tabKey) => {\n return {\n ...prev,\n [tabKey]: {\n ...DEFAULT_TAB_LIST[tabKey],\n label: t(DEFAULT_TAB_LIST[tabKey]?.label)\n }\n };\n }, {});\n };\n const [tabTitleList, setTabTitleList] = useState(prepareTabTitleList());\n\n const handleGetUploadedImages = () => {\n getUploadedUserImage(showOnlyImages)\n .then((images = []) => setImageList(images));\n };\n\n const handleAltTextChange = ({ target: { value } }) => {\n setAltText(value);\n };\n\n const handleImageSelect = url => () => {\n onImageChange(url, selectedImage);\n\n if (allowMultipleSelection) {\n setSelectedImage([\n ...selectedImage,\n url\n ]);\n } else {\n if (forceSelect || !showActionButtons) {\n onImageSelect(url);\n }\n setSelectedImage(url);\n }\n };\n\n const handleImageDeselect = url => () => {\n if (allowMultipleSelection) {\n setSelectedImage(selectedImage.filter(image => image !== url));\n }\n };\n\n const handleUseSelectedImage = url => {\n onImageSelect(url);\n };\n\n const handleImageUpload = fileData => {\n onImageUpload(fileData);\n };\n\n const handleLinkTextClick = () => {\n const { current: { value } } = textInputRef;\n onLinkTextInputSubmit(value);\n };\n\n const handleFileUploadDisplayModeChange = displayMode => {\n setFileUploadDisplayMode(displayMode);\n };\n\n const renderAltTextInput = () => (\n
    \n \n {t('Image Description')}\n \n \n {t('Add alt text for accessibility and SEO purposes. This text will be shown if the image can\\'t be loaded.')}\n \n \n
    \n );\n\n const handleDeleteSelectedImage = () => {\n setSelectedImage('');\n setImageList(imageList.filter(image => !selectedImage.includes(image)));\n if (useAPI) {\n deleteSelectedImage(selectedImage)\n .then(() => handleGetUploadedImages());\n }\n onImageRemove(selectedImage);\n };\n\n const renderActionButtons = () => (\n \n handleDeleteSelectedImage()} disabled={isDeleteSelectedDisabled} />\n {\n !forceSelect\n && handleUseSelectedImage(selectedImage)} />\n }\n \n );\n\n const renderLinkTabInput = () => {\n if (allowMultipleSelection) {\n return (\n onLinkInputChange(value)}\n defaultValue={linkTextInputDefaultValue}\n placeholder={linkTextInputPlaceholder}\n rows={5}\n resize=\"both\"\n />\n );\n }\n return (\n onLinkInputChange(value)}\n defaultValue={linkTextInputDefaultValue}\n placeholder={linkTextInputPlaceholder}\n />\n );\n };\n\n const renderEnterUrl = () => (\n
    \n \n {showLabel && (\n {t('Enter URL')}\n )}\n {renderLinkTabInput()}\n \n {/* eslint-disable */}\n {showActionButtons &&
    \n \n
    }\n {/* eslint-enable */}\n
    \n );\n\n const renderUploadImage = () => {\n return (\n <>\n
    \n handleImageUpload(fileData)}\n allowedTypes={allowedTypes}\n targetURL={targetURL}\n multipleFileUpload={multipleFileUpload}\n optimize={optimize}\n addNotification={addNotification}\n limitType={limitType}\n displayUpload={true}\n translate={t}\n FilePreviewRenderer={ImageUploadPreviewRenderer}\n LoadingScreenRenderer={ImageLoadingScreenRenderer}\n onFileRemove={onFileRemove}\n removeButtonText={removeButtonText}\n Thumbnail={PreviewThumbnail}\n FileInputRenderer={FileInputRenderer}\n TextWrapperRenderer={TextWrapperRenderer}\n onError={onFileUploadError}\n onDisplayModeChange={handleFileUploadDisplayModeChange}\n buttonText={inputButtonText}\n />\n
    \n {fileUploadDisplayMode === 'display' && isAltTextActive && renderAltTextInput()}\n {fileUploadDisplayMode === 'upload' && isAltTextActive && renderEnterUrl()}\n \n );\n };\n\n const renderChooseImage = () => (\n <>\n
    \n \n
    \n {isAltTextActive && renderAltTextInput()}\n {isActionButtonsVisible && showActionButtons && renderActionButtons()}\n \n );\n\n const renderGallery = () => (\n <>\n
    \n \n
    \n {isAltTextActive && renderAltTextInput()}\n {isActionButtonsVisible && showActionButtons && renderActionButtons()}\n \n );\n\n const renderGroupedGallery = () => {\n return (\n
    \n {groupedGalleryImageList.map(list => (\n
    \n {t(list.text)}\n
    \n () => {\n setSelectedImage(url);\n onImageSelect(url);\n }}\n onImageDeselect={url => () => {\n setSelectedImage('');\n onImageRemove(url);\n }}\n selectedImage={selectedImage}\n />\n
    \n
    \n ))}\n
    \n );\n };\n\n const createUnsplashImageList = (list = []) => list.map(image => {\n const {\n id = '',\n urls: { full = '', thumb = '' } = {},\n user: { name = '' } = {}\n } = image;\n\n return {\n urlFull: full,\n urlThumb: thumb,\n userInfo: name,\n id\n };\n });\n\n const getRandomUnsplashImages = () => {\n getRandomImagesFromUnsplash().then(response => {\n const list = createUnsplashImageList(response);\n const newList = [...randomUnsplashImageList, ...list];\n setRandomUnsplashImageList(newList);\n setUnsplashImageList(newList);\n }).catch(() => {});\n };\n\n const getUnsplashImages = loadMore => {\n const keyword = unsplashSearchInputRef && unsplashSearchInputRef.current && unsplashSearchInputRef.current.value;\n\n if (keyword) {\n if (loadMore && stopLoadMore) return;\n const count = 16;\n const page = loadMore ? unsplashPageNumber + 1 : 1;\n\n searchUnsplash(keyword, count, page).then(response => {\n const newImageList = createUnsplashImageList(response);\n setUnsplashImageList(currList => (loadMore ? [...currList, ...newImageList] : newImageList));\n setUnsplashPageNumber(page);\n setStopLoadMore(response.length < count);\n }).catch(() => {\n setUnsplashImageList([]);\n setStopLoadMore(true);\n });\n } else if (loadMore) {\n getRandomUnsplashImages();\n } else {\n setUnsplashImageList(randomUnsplashImageList);\n }\n };\n\n const renderUnsplash = () => {\n return (\n
    \n {\n setUnsplashPageNumber(1);\n setStopLoadMore(false);\n getUnsplashImages();\n }, 600)}\n prefix={{ icon: IconMagnifyingGlass }}\n />\n getUnsplashImages(true)}\n className=\"prevUploads-list\"\n height=\"190px\"\n >\n () => {\n setSelectedImage(urlFull);\n onImageSelect(urlFull);\n }}\n onImageDeselect={urlFull => () => {\n setSelectedImage('');\n onImageRemove(urlFull);\n }}\n selectedImage={selectedImage}\n />\n \n
    \n );\n };\n\n const renderLinkTab = () => (\n <>\n \n {showLabel && (\n {t('Enter URL')}\n )}\n {renderLinkTabInput()}\n \n {isAltTextActive && (\n
    \n \n {t('Add Alt Text')}\n \n \n
    \n )}\n {/* eslint-disable */}\n {showActionButtons &&
    \n \n
    }\n {/* eslint-enable */}\n \n );\n\n const renderIconSelector = () => (\n handleUseSelectedImage(res.url)}\n onRemove={() => handleUseSelectedImage('')}\n onlyColored={onlyColoredIcons}\n />\n );\n\n const tabPanelRendererMap = {\n upload: renderUploadImage,\n choose: renderChooseImage,\n link: renderLinkTab,\n icon: renderIconSelector,\n gallery: renderGallery,\n groupedGallery: renderGroupedGallery,\n unsplash: renderUnsplash\n };\n\n const getRootClassNames = () => {\n const classNames = ['imageUpload'];\n if (isBranding21) classNames.push('branding21');\n if (THEME_MAP[theme]) classNames.push(THEME_MAP[theme]);\n\n return classNames.join(' ');\n };\n\n useEffect(() => {\n setActionButtonsVisible(selectedImage.length > 0);\n }, [selectedImage]);\n\n useEffect(() => {\n setTabTitleList(prepareTabTitleList());\n }, [renderTabs]);\n\n useEffect(() => {\n if (!imageList.length && useAPI && allowGettingUploadedImages) {\n handleGetUploadedImages();\n }\n\n if (renderTabs.indexOf('unsplash') > -1) {\n getRandomUnsplashImages();\n }\n }, []);\n\n useEffect(() => {\n setImageList(showOnlyImages ? filterImages(originalImageList) : originalImageList);\n }, [originalImageList]);\n\n useEffect(() => {\n onAltTextChange(altText);\n }, [altText]);\n\n return (\n
    , [])}\n TabButtonContainer={useCallback(props =>
    , [])}\n Wrapper={useCallback(props =>
    , [])}\n TabListContainer={useCallback(props =>
    , [])}\n >\n {\n renderTabs\n .filter(tabKey => Object.keys(tabPanelRendererMap)\n .includes(tabKey))\n .map(tabKey => (\n \n {tabPanelRendererMap[tabKey]()}\n \n ))\n }\n \n );\n});\n\nImageUpload.propTypes = {\n onImageUpload: func,\n onImageSelect: func,\n onImageChange: func,\n onImageRemove: func,\n addNotification: func,\n onAltTextChange: func,\n onLinkInputChange: func,\n onLinkTextInputSubmit: func,\n isAltTextActive: bool,\n allowMultipleSelection: bool,\n forceSelect: bool,\n optimize: bool,\n multipleFileUpload: bool,\n onlyColoredIcons: bool,\n useAPI: bool,\n showLabel: bool,\n showActionButtons: bool,\n limitType: string,\n targetURL: string,\n linkTextInputDefaultValue: string,\n linkTextInputPlaceholder: string,\n imgDescInputPlaceholder: string,\n imageList: arrayOf(string),\n galleryImageList: array,\n theme: string,\n renderTabs: array,\n ActionButtonsWrapper: elementType,\n SelectButtonRenderer: elementType,\n DeleteButtonRenderer: elementType,\n ImageUploadPreviewRenderer: elementType,\n ImageLoadingScreenRenderer: elementType,\n allowedTypes: string,\n allowImageUpload: bool,\n onFileUploading: func,\n onFileRemove: func,\n isFileUploading: bool,\n value: shape({\n name: string,\n type: string,\n url: string,\n size: string\n }),\n removeButtonText: string,\n PreviewThumbnail: elementType,\n TextWrapperRenderer: elementType,\n FileInputRenderer: elementType,\n mode: string,\n showOnlyImages: bool,\n onFileUploadError: func,\n noUploadedImageText: string,\n galleryMode: string,\n inputButtonText: string,\n initialSelectedImage: string,\n groupedGalleryClass: string,\n groupedGalleryImageList: arrayOf(shape({})),\n isDeleteSelectedDisabled: bool\n};\n\nImageUpload.defaultProps = {\n onImageUpload: f => f,\n onImageSelect: f => f,\n onImageChange: f => f,\n onImageRemove: f => f,\n onAltTextChange: f => f,\n addNotification: f => f,\n onLinkTextInputSubmit: f => f,\n onLinkInputChange: f => f,\n isAltTextActive: false,\n allowMultipleSelection: false,\n forceSelect: false,\n optimize: false,\n multipleFileUpload: false,\n onlyColoredIcons: false,\n useAPI: false,\n showLabel: false,\n showActionButtons: true,\n limitType: '',\n linkTextInputDefaultValue: '',\n theme: '',\n linkTextInputPlaceholder: 'https://',\n imgDescInputPlaceholder: t('Alternative Text'),\n renderTabs: ['upload', 'choose', 'link'],\n imageList: [],\n galleryImageList: [],\n targetURL: undefined,\n ActionButtonsWrapper: props =>
    ,\n DeleteButtonRenderer: ({ onClick, disabled }) => , // eslint-disable-line react/prop-types\n SelectButtonRenderer: ({ onClick }) => , // eslint-disable-line react/prop-types\n ImageUploadPreviewRenderer: ImagePreview,\n ImageLoadingScreenRenderer: LoadingScreen,\n allowedTypes: 'image/*',\n allowImageUpload: true,\n onFileUploading: f => f,\n onFileRemove: f => f,\n isFileUploading: false,\n value: {},\n removeButtonText: 'Remove Image',\n PreviewThumbnail: undefined,\n TextWrapperRenderer: undefined,\n FileInputRenderer: undefined,\n mode: 'imageUpload',\n showOnlyImages: true,\n onFileUploadError: f => f,\n noUploadedImageText: t('There is no image to show!'),\n galleryMode: '',\n inputButtonText: 'Upload File',\n initialSelectedImage: '',\n groupedGalleryClass: '',\n groupedGalleryImageList: [],\n isDeleteSelectedDisabled: false\n};\n\nexport default ImageUpload;\n","import React from 'react';\nimport { t } from '@jotforminc/translation';\n\nconst LoadingScreen = () => {\n return (\n <>\n
    \n
    {t('Uploading...')}
    \n \n );\n};\n\nexport default LoadingScreen;\n","/* eslint-disable max-len */\nexport const UPGRADE_PDF_ATTACHMENT = '[1[Upgrade your account]] to attach multiple PDFs.';\nexport const ESTIMATION_WARNING = 'You will likely reach your [1[{limitType}]] limit by [2[{estimationDate}]].';\nexport const UPGRADE_NOW = 'Upgrade Now';\nexport const BUILDER_BRANDING_WARNING = 'If you want to remove Jotform Branding, [1[please upgrade your account]]';\nexport const BUILDER_EMAIL_LIMIT_WARNING = '[1[Upgrade your account]] to use multiple [2[{emailType}]] emails.';\nexport const OVERQUOTA_WARNING = 'You have reached [1[{messageContent}]] limit.';\nexport const ALMOST_FULL_WARNING = 'You have almost reached [1[{messageContent}]] limit.';\n\nexport const GET_MORE_FORMS = 'Get more forms - for free';\nexport const LIMITED_TO_FIVE_FORMS = 'You’re currently limited to [1[{formCount}]] [2[forms]]. Want to create more forms? Invite others to Jotform and get one extra form per signup! Once an invitee verifies their email, you’ll receive your extra form.';\nexport const TRACK_YOUR_EARNINGS = 'Track your earnings from [1[Increase Limits]]';\nexport const TWITTER_SHARE_TEXT = 'Cards are fun and friendly online forms! They interact with respondents like a real person would';\n","import { RequestLayer, Interceptors } from '@jotforminc/request-layer';\n\nconst layer = new RequestLayer('/API', {\n interceptorConfig: {\n teamID: global.teamID,\n customResponseInterceptors: [Interceptors.requestManagerResponseNormalizer]\n }\n});\n\nconst serverRequestLayer = new RequestLayer('/server.php/', {\n interceptorConfig: {\n teamID: global.teamID,\n disableResponseNormalizer: true,\n shouldCache: true,\n logCachePayload: {\n projectName: 'myaccount'\n }\n }\n});\n\nexport const trackAction = data => layer.post('t/jfrev', data, {\n headers: {\n 'Content-Type': 'application/json'\n }\n});\n\nexport const userReferralDetails = () => serverRequestLayer.post('?action=getReferralDetails&source=7');\n","export const LimitTypes = {\n submissions: 'Monthly Submission',\n payments: 'Payment Submission',\n uploads: 'Upload Space',\n views: 'Form View',\n signed_documents: 'Monthly Signed Documents',\n signedDocuments: 'Monthly Signed Documents',\n total_submissions: 'Submission Storage'\n};\n","/* eslint-disable max-len */\nimport { isProduction } from '@jotforminc/utils';\nimport { trackAction } from '../api';\nimport { LimitTypes } from '../constants';\n\nexport const actionTracker = ({\n username, action, target, project\n}) => {\n if (!username) {\n return console.log('[Limit Assets Actions] :: Unable to track, user not found.');\n }\n\n const log = {\n project: project ?? 'limit-assets',\n oldActions: {\n action: action,\n target: target\n },\n actor: username,\n location: window.location && window.location.href\n };\n\n if (!isProduction()) {\n return console.log('[Limit Assets Actions] :: ', log);\n }\n\n trackAction(log);\n};\n\nexport const bsgUtmCreator = ({ planType, campaign, assetType }) => `?utm_source=limit-assets&utm_medium=banner&utm_content=${planType}-${assetType}&utm_campaign=${campaign}`;\n\nexport const freeBuilderUtmCreator = ({\n campaign, formId, assetType, source = 'builder'\n}) => `?utm_source=${source}&utm_medium=banner&utm_content=${formId}&utm_campaign=${campaign}&utm_term=${assetType}`;\n\nexport const mapLimitType = type => (LimitTypes?.[type] || '').toLowerCase();\n\nexport const copyToClipboard = text => {\n window.navigator.clipboard.writeText(text);\n};\n\nexport const getBaseURI = () => (window.__jfrouter?.BASE_URL ? window.__jfrouter?.BASE_URL : `${window.location.protocol}//${window.location.hostname}`);\n\nexport const setLocalStorageWithExpiry = (key, value, ttl = 0) => {\n const now = new Date();\n const item = {\n value: value,\n expiry: ttl === 0 ? undefined : now.getTime() + ttl\n };\n global?.localStorage.setItem(key, JSON.stringify(item));\n};\n","/* eslint-disable max-len */\nexport const FORM_LIMIT = 'form limit';\nexport const SUBMISSION_LIMIT = 'submission limit';\nexport const WORKFLOW_RUNS_LIMIT = 'workflow runs limit';\nexport const AI_AGENTS_LIMIT = 'agents limit';\nexport const FORMS = 'forms';\nexport const SUBMISSIONS = 'submissions';\nexport const WORKFLOW_RUNS = 'workflow runs';\nexport const AI_AGENTS = 'agents';\nexport const YOU_HAVE_REACHED_YOUR_LIMIT = 'You have reached your [1[{limitType}]]';\nexport const ACCOUNTS_LIMITED_TO = '[1[{planType}]] accounts are limited to [2[{limit}]] [3[{limitType}]] per month.';\nexport const UPGRADE_CTA_SUBMISSIONS = '[1[Upgrade]] your account to see all your submissions.';\nexport const UPGRADE_CTA_FORM_COUNT = '[1[{planType}]] accounts are limited to [2[{limit}]] forms. Delete an existing form or [3[Upgrade]] to increase your form limit.';\nexport const UPGRADE_CTA_WORKFLOW_RUNS = '[1[Upgrade]] your account to run your workflow.';\nexport const UPGRADE_CTA_AI_AGENTS = '[1[Upgrade]] your account to create agent.';\nexport const NEWUSER_CAMPAIGN_CTA = '[1[Today ONLY]] Save 50%';\nexport const YOU_HAVE_REACHED_YOUR_WORKFLOW_RUNS_LIMIT = 'You have reached your workflow runs limit';\nexport const YOU_HAVE_REACHED_YOUR_AI_AGENTS_LIMIT = 'You have reached your agents limit';\nexport const YOU_HAVE_REACHED_YOU_FORM_LIMIT = 'You have reached your form limit';\n\n// Builder Overquota Warning Texts\nexport const CURRENTLY_UNAVAILABLE = 'This form is currently unavailable to form fillers';\nexport const UPGRADE_YOUR_ACCOUNT = 'As a starter account user, you’ve reached your [1[{limitType}]] limit of [2[{limitValue}]]. [3[Upgrade]] your account to increase your [1[{limitType}]].';\n","import { RequestLayer, Interceptors } from '@jotforminc/request-layer';\n\nconst layer = new RequestLayer('/API', {\n interceptorConfig: {\n teamID: global.teamID,\n customResponseInterceptors: [Interceptors.requestManagerResponseNormalizer]\n }\n});\n\nexport const combinedInfo = () => layer.get('user/combinedinfo?loc=1&campaign=1');\nexport const systemPlans = () => layer.get('system/plans');\nexport const trackAction = data => layer.post('t/jfrev', data, {\n headers: {\n 'Content-Type': 'application/json'\n }\n});\n","import { t } from '@jotforminc/translation';\nimport { capitalizeFirstLetter, isProduction } from '@jotforminc/utils';\n\nimport * as Texts from '../constants/texts';\nimport { trackAction, systemPlans, combinedInfo } from '../api';\n\nexport const getCurrencySymbol = currency => {\n switch (currency) {\n case 'EUR':\n return '€';\n case 'GBP':\n return '£';\n case 'BRL':\n return 'R$';\n case 'JPY':\n return '¥';\n case 'USD':\n return '$';\n case 'AUD':\n case 'CAD':\n case 'NZD':\n case 'SGD':\n case 'HKD':\n case 'CLP':\n return '$';\n case 'TRY':\n return 'TL';\n default:\n return '';\n }\n};\nexport const getPlanClasName = accountTypeName => `is${capitalizeFirstLetter(accountTypeName === 'FREE' ? 'STARTER' : accountTypeName.toLowerCase())}`;\n\n// Also Translates\nexport const prettyAccountName = accountTypeName => (accountTypeName === 'FREE' ? t('STARTER') : t(accountTypeName));\n\nexport const getCurrencyDirection = currency => {\n return currency === 'TRY' ? 'right' : 'left';\n};\n\nexport const LimitTypes = {\n formCount: {\n title: Texts.FORM_LIMIT,\n body: Texts.FORMS\n },\n submissions: {\n title: Texts.SUBMISSION_LIMIT,\n body: Texts.SUBMISSIONS\n },\n workflowRuns: {\n title: Texts.WORKFLOW_RUNS_LIMIT,\n body: Texts.WORKFLOW_RUNS\n },\n aiAgents: {\n title: Texts.AI_AGENTS_LIMIT,\n body: Texts.AI_AGENTS\n }\n};\n\nexport const fetchUserPlans = async () => {\n const plans = await systemPlans();\n return plans;\n};\n\nexport const fetchCombinedInfo = async () => {\n const { credentials } = await combinedInfo();\n return credentials;\n};\n\nexport const getLimitFromType = (user, limitType) => {\n return user?.account_type?.limits?.[limitType] || null;\n};\n\nexport const actionTracker = ({\n username, action, target, isV2\n}) => {\n if (!username) {\n return console.log('[Limit Dialog Actions] :: Unable to track, user not found.');\n }\n\n const log = {\n project: `limitDialog${isV2 ? '-v2' : ''}`,\n oldActions: {\n action: action,\n target: target\n },\n actor: username,\n location: window.location && window.location.href\n };\n\n if (!isProduction()) {\n return console.log('[Limit Dialog Actions] :: ', log);\n }\n\n trackAction(log);\n};\n\nexport const setLocalStorageWithExpiry = (key, value, ttl = 0) => {\n const now = new Date();\n const item = {\n value: value,\n expiry: ttl === 0 ? undefined : now.getTime() + ttl\n };\n global?.localStorage.setItem(key, JSON.stringify(item));\n};\n\nexport const getLocalStorageWithExpiry = key => {\n const itemStr = global?.localStorage.getItem(key);\n if (!itemStr) {\n return null;\n }\n const item = JSON.parse(itemStr);\n const now = new Date();\n if (now.getTime() > item.expiry) {\n global?.localStorage.removeItem(key);\n return null;\n }\n return item.value;\n};\n","import React from 'react';\nimport { string } from 'prop-types';\nimport classNames from 'classnames';\nimport Styled from 'styled-components';\n\nconst StyledSVG = Styled.svg`\n position: absolute;\n top: 50%;\n left: 50%;\n width: ${({ size = '70px' }) => size};\n height: ${({ size = '70px' }) => size};\n transform: translate(-50%, -50%);\n animation: jfLoading-svgRotate 2s linear 0s infinite normal none running;\n transform-origin: center center 0;\n\n .jfLoading-svgPath {\n stroke-dasharray: 1, 200;\n stroke-dashoffset: 0;\n animation: jfLoading-svgPath 1.5s ease-in-out 0s infinite normal none running;\n stroke-linecap: round;\n }\n\n @keyframes jfLoading-svgPath {\n 0% {\n stroke-dasharray: 1, 200;\n stroke-dashoffset: 0;\n }\n 50% {\n stroke-dasharray: 89, 200;\n stroke-dashoffset: -35px;\n }\n 100% {\n stroke-dasharray: 89, 200;\n stroke-dashoffset: -124px;\n }\n }\n\n @keyframes jfLoading-svgRotate {\n 100% {\n transform: rotate(360deg) translate(-50%, -50%);\n }\n }\n`;\n\nexport const Loading = ({\n className = null,\n strokeWidth = '2',\n strokeColor = 'rgba(0,0,0,0.5)',\n ...props\n}) => (\n \n \n \n);\n\nLoading.propTypes = {\n className: string,\n strokeColor: string,\n strokeWidth: string\n};\n","import React from 'react';\nimport styled from 'styled-components';\nimport { string, number, shape } from 'prop-types';\n\nconst SpinnerBlade = styled.div`\n @keyframes blinkAnim {\n 0% { opacity: 1 }\n 100% { opacity: 0 }\n }\n\n width: ${({ blade }) => blade.width}px; height: 100%;\n position: absolute;\n top: 50%; left: 50%;\n\n &:before {\n content: \"\";\n top: 0; left: 0;\n position: absolute;\n width: 100%; height: ${({ blade }) => blade.height}px;\n background-color: ${({ color }) => color};\n border-radius: 4px;\n animation: blinkAnim linear ${({ duration }) => duration}s infinite;\n }\n\n &:nth-child(${({ i }) => (i + 1)}) {\n transform: translate(-50%, -50%) rotate(${({ blade, i }) => (360 / blade.count) * i}deg);\n &:before { animation-delay: -${({ i, blade, duration }) => (duration / blade.count) * (blade.count - i)}s; }\n }\n`;\n\nconst SpinnerContainer = styled.div`\n width: ${({ size }) => size}px; height: ${({ size }) => size}px;\n position: relative;\n`;\n\nexport const Spinner = ({\n size,\n blade,\n duration,\n color\n}) => (\n \n {[...Array(blade.count)].map((_, i) => (\n \n ))}\n \n);\n\nSpinner.propTypes = {\n size: number,\n blade: shape({\n count: number,\n width: number,\n height: number,\n radius: number\n }),\n duration: number,\n color: string\n};\n\nSpinner.defaultProps = {\n size: 28,\n blade: {\n count: 14,\n width: 3,\n height: 6,\n radius: 4\n },\n duration: 1,\n color: '#31a44a'\n};\n","import React, { useEffect, useState } from 'react';\nimport { bool, string } from 'prop-types';\nimport { t } from '@jotforminc/translation';\n\nconst ErrorAlert = ({\n message,\n enableScreenReaderAlert\n}) => {\n const [readAlertMessage, setReadAlertMessage] = useState(true);\n\n useEffect(() => {\n if (!enableScreenReaderAlert) return;\n\n const timer = setTimeout(\n () => {\n setReadAlertMessage(false);\n }, 5000\n );\n\n return () => {\n clearTimeout(timer);\n };\n }, []);\n\n return (\n
    \n {t(message)}\n
    \n );\n};\n\nErrorAlert.propTypes = {\n message: string.isRequired,\n enableScreenReaderAlert: bool\n};\n\nErrorAlert.defaultProps = {\n enableScreenReaderAlert: true\n};\n\nexport default ErrorAlert;\n","var _circle, _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgClose = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 40 40\"\n}, props), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 20,\n cy: 20,\n r: 20,\n fill: \"#E3E5F5\"\n})), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M26.2929 27.7071C26.6834 28.0976 27.3166 28.0976 27.7071 27.7071C28.0976 27.3166 28.0976 26.6834 27.7071 26.2929L21.4142 20L27.7071 13.7071C28.0976 13.3166 28.0976 12.6834 27.7071 12.2929C27.3166 11.9024 26.6834 11.9024 26.2929 12.2929L20 18.5858L13.7071 12.2929C13.3166 11.9024 12.6834 11.9024 12.2929 12.2929C11.9024 12.6834 11.9024 13.3166 12.2929 13.7071L18.5858 20L12.2929 26.2929C11.9024 26.6834 11.9024 27.3166 12.2929 27.7071C12.6834 28.0976 13.3166 28.0976 13.7071 27.7071L20 21.4142L26.2929 27.7071Z\",\n fill: \"#6F76A7\"\n})));\nexport default SvgClose;","var _g;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgIconFb = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"24px\",\n height: \"24px\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\"\n}, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: 1,\n fill: \"none\",\n fillRule: \"evenodd\"\n}, /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(-552.000000, -332.000000)\",\n fill: \"#FFFFFF\"\n}, /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(448.000000, 108.000000)\"\n}, /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(88.000000, 48.000000)\"\n}, /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(0.000000, 160.000000)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M28,16 C34.627417,16 40,21.372583 40,28 C40,34.0950735 35.4558524,39.1288044 29.570608,39.8981421 L29.5703125,31.71875 L32.6992422,31.71875 L33.1676641,28.0859375 L29.5703125,28.0859375 L29.5718914,25.6427048 C29.5966115,24.665022 29.9231963,24.0086797 31.3605391,24.0086797 L31.3605391,24.0086797 L33.2734375,24.0078125 L33.2734375,20.7695938 C32.9830674,20.7310186 32.0751609,20.6506869 30.9653941,20.6312067 L30.9653941,20.6312067 L30.4786328,20.6268828 C27.7134297,20.6268828 25.8203125,22.3148516 25.8203125,25.4147422 L25.8203125,25.4147422 L25.8203125,28.0859375 L22.703125,28.0859375 L22.703125,31.71875 L25.8203125,31.71875 L25.820385,39.8025395 C20.2335827,38.777408 16,33.8831071 16,28 C16,21.372583 21.372583,16 28,16 Z\"\n}))))))));\nexport default SvgIconFb;","var _g;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgIconGl = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"24px\",\n height: \"24px\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n \"aria-hidden\": \"true\"\n}, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: 1,\n fill: \"none\",\n fillRule: \"evenodd\"\n}, /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(-564.000000, -544.000000)\"\n}, /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(292.000000, 328.000000)\"\n}, /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(256.000000, 200.000000)\"\n}, /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(16.000000, 16.000000)\"\n}, /*#__PURE__*/React.createElement(\"circle\", {\n fill: \"#FFFFFF\",\n cx: 12,\n cy: 12,\n r: 12\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.84375,10.4328124 L19.2,10.4328124 L19.2,10.4 L12,10.4 L12,13.6 L16.5218752,13.6 C15.8609376,15.4625 14.0890624,16.8 12,16.8 C9.3484376,16.8 7.2,14.6515624 7.2,12 C7.2,9.3484376 9.3484376,7.2 12,7.2 C13.2234376,7.2 14.3375,7.6609376 15.1843752,8.4156252 L17.4468752,6.1531252 C16.01875,4.8218752 14.1078124,4 12,4 C7.58125,4 4,7.58125 4,12 C4,16.41875 7.58125,20 12,20 C16.41875,20 20,16.41875 20,12 C20,11.4640624 19.9453124,10.9406252 19.84375,10.4328124 Z\",\n fill: \"#FFC107\",\n fillRule: \"nonzero\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4.9218752,8.2765624 L7.5515624,10.2046876 C8.2625,8.44375 9.9843752,7.2 12,7.2 C13.2234376,7.2 14.3375,7.6609376 15.1843752,8.4156252 L17.4468752,6.1531252 C16.01875,4.8218752 14.1078124,4 12,4 C8.9265624,4 6.2625,5.7343752 4.9218752,8.2765624 Z\",\n fill: \"#FF3D00\",\n fillRule: \"nonzero\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12,20 C14.0656252,20 15.94375,19.2093752 17.3640624,17.9234376 L14.8875,15.8281252 C14.0843752,16.4359376 13.0859376,16.8 12,16.8 C9.91875,16.8 8.1531252,15.4734376 7.4875,13.6218752 L4.8781252,15.63125 C6.2015624,18.2218752 8.8906252,20 12,20 Z\",\n fill: \"#4CAF50\",\n fillRule: \"nonzero\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.84375,10.4 L12,10.4 L12,13.6 L16.5218752,13.6 C16.2046876,14.4953124 15.6281252,15.2656252 14.8859376,15.8281252 C14.8875,15.8281252 14.8875,15.8281252 14.8875,15.8281252 L17.3640624,17.9234376 C17.1890624,18.08125 20,16 20,12 C20,11.4640624 19.9453124,10.9078128 19.84375,10.4 Z\",\n fill: \"#1976D2\",\n fillRule: \"nonzero\"\n}))))))));\nexport default SvgIconGl;","var _path, _path2, _path3, _path4, _path5;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgIconMs = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 24C18.6274 24 24 18.6274 24 12C24 5.37258 18.6274 0 12 0C5.37258 0 0 5.37258 0 12C0 18.6274 5.37258 24 12 24Z\",\n fill: \"white\"\n})), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.4231 12.583H12.5839V18.4222H18.4231V12.583Z\",\n fill: \"#FEBA08\"\n})), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.416 12.583H5.57678V18.4222H11.416V12.583Z\",\n fill: \"#05A6F0\"\n})), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.4231 5.57617H12.5839V11.4154H18.4231V5.57617Z\",\n fill: \"#80BC06\"\n})), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.4163 5.57617H5.57703V11.4154H11.4163V5.57617Z\",\n fill: \"#F25325\"\n})));\nexport default SvgIconMs;","var _g;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgIconEm = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"24px\",\n height: \"16px\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n \"aria-hidden\": \"true\"\n}, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: 1,\n fill: \"none\",\n fillRule: \"evenodd\"\n}, /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(-564.000000, -732.000000)\",\n fill: \"#FF8811\",\n fillRule: \"nonzero\"\n}, /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(292.000000, 328.000000)\"\n}, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group-2-Copy-2\",\n transform: \"translate(256.000000, 384.000000)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M38.5180432,20.0677432 L28,30.5857864 L17.4819568,20.0677432 C17.6471834,20.0235573 17.8208407,20 18,20 L38,20 C38.1791593,20 38.3528166,20.0235573 38.5180432,20.0677432 Z M39.9322568,21.4819568 C39.9764427,21.6471834 40,21.8208407 40,22 L40,33 C40,33.4631465 39.8950478,33.9017802 39.707629,34.2934155 L33.4142136,28 L39.9322568,21.4819568 L39.9322568,21.4819568 Z M38.2934155,35.707629 C37.9017802,35.8950478 37.4631465,36 37,36 L19,36 C18.5368535,36 18.0982198,35.8950478 17.7065845,35.707629 L24,29.4142136 L27.2928932,32.7071068 C27.6834175,33.0976311 28.3165825,33.0976311 28.7071068,32.7071068 L32,29.4142136 L38.2934155,35.707629 L38.2934155,35.707629 Z M16.292371,34.2934155 C16.1049522,33.9017802 16,33.4631465 16,33 L16,22 C16,21.8208407 16.0235573,21.6471834 16.0677432,21.4819568 L22.5857864,28 L16.292371,34.2934155 L16.292371,34.2934155 Z\",\n id: \"Shape\"\n})))))));\nexport default SvgIconEm;","var _circle, _path, _path2, _path3, _path4;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgIconGl36 = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 36 36\"\n}, props), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 18.5,\n cy: 18,\n r: 18,\n fill: \"white\"\n})), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M30.8759 18.2751C30.8759 17.2576 30.7916 16.5151 30.6093 15.7451H18.7534V20.3376H25.7125C25.5723 21.4789 24.8146 23.1976 23.1309 24.3525L23.1073 24.5063L26.8559 27.3522L27.1156 27.3776C29.5008 25.2188 30.8759 22.0426 30.8759 18.2751Z\",\n fill: \"#4285F4\"\n})), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.7518 30.3758C22.1612 30.3758 25.0234 29.2758 27.114 27.3783L23.1293 24.3532C22.063 25.082 20.6318 25.5907 18.7518 25.5907C15.4125 25.5907 12.5784 23.432 11.5681 20.4482L11.42 20.4606L7.52217 23.4169L7.47119 23.5557C9.54769 27.5982 13.813 30.3758 18.7518 30.3758Z\",\n fill: \"#34A853\"\n})), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.5695 20.4475C11.303 19.6775 11.1487 18.8525 11.1487 18C11.1487 17.1475 11.303 16.3225 11.5555 15.5525L11.5485 15.3885L7.60177 12.3848L7.47264 12.445C6.61681 14.1225 6.12573 16.0063 6.12573 18C6.12573 19.9938 6.61681 21.8774 7.47264 23.555L11.5695 20.4475Z\",\n fill: \"#FBBC05\"\n})), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.7519 10.4109C21.123 10.4109 22.7225 11.4147 23.6345 12.2535L27.1983 8.84348C25.0095 6.84973 22.1612 5.62598 18.7519 5.62598C13.813 5.62598 9.5477 8.40346 7.47119 12.4459L11.5541 15.5535C12.5784 12.5697 15.4126 10.4109 18.7519 10.4109Z\",\n fill: \"#EB4335\"\n})));\nexport default SvgIconGl36;","var _circle, _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgIconFb36 = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 37 36\"\n}, props), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 18.4999,\n cy: 18.0002,\n r: 14.6496,\n fill: \"#1877F2\"\n})), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M23.9554 22.4803L24.6062 18.3455H20.5353V15.6635C20.5353 14.532 21.1029 13.4285 22.9263 13.4285H24.7782V9.90828C24.7782 9.90828 23.0982 9.62891 21.4928 9.62891C18.1387 9.62891 15.9484 11.6097 15.9484 15.1941V18.3455H12.2214V22.4803H15.9484V32.4765C16.6966 32.591 17.462 32.6497 18.2418 32.6497C19.0216 32.6497 19.7871 32.591 20.5353 32.4765V22.4803H23.9554Z\",\n fill: \"white\"\n})));\nexport default SvgIconFb36;","\n \n \n\n","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgIconAppleWhite = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 22 27\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.361 14.3443C18.3989 18.4302 21.9454 19.7899 21.9847 19.8073C21.9547 19.9032 21.418 21.745 20.1162 23.6474C18.9909 25.2922 17.8229 26.931 15.983 26.9649C14.1752 26.9982 13.5938 25.8928 11.5269 25.8928C9.46063 25.8928 8.81475 26.931 7.10339 26.9982C5.32743 27.0654 3.97506 25.2196 2.84036 23.5809C0.521733 20.2287 -1.25018 14.1086 1.12905 9.97732C2.311 7.92574 4.42323 6.62659 6.71587 6.59328C8.45982 6.56001 10.1059 7.76655 11.172 7.76655C12.2374 7.76655 14.2377 6.31558 16.3406 6.52868C17.221 6.56532 19.6921 6.88428 21.2789 9.20691C21.151 9.28617 18.3303 10.9282 18.361 14.3443V14.3443ZM14.9633 4.31095C15.9061 3.16965 16.5407 1.58085 16.3676 0C15.0085 0.0546226 13.3651 0.905649 12.3903 2.04633C11.5166 3.05645 10.7515 4.67321 10.958 6.22277C12.4728 6.33998 14.0204 5.45299 14.9633 4.31096\",\n fill: \"white\"\n})));\nexport default SvgIconAppleWhite;","var _rect, _rect2, _rect3, _rect4;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgIconMs36 = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 36 36\"\n}, props), _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n x: 19.8198,\n y: 19.125,\n width: 11.25,\n height: 11.25,\n fill: \"#FEBA08\"\n})), _rect2 || (_rect2 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 6.31982,\n y: 19.125,\n width: 11.25,\n height: 11.25,\n fill: \"#05A6F0\"\n})), _rect3 || (_rect3 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 19.8198,\n y: 5.625,\n width: 11.25,\n height: 11.25,\n fill: \"#80BC06\"\n})), _rect4 || (_rect4 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 6.31982,\n y: 5.625,\n width: 11.25,\n height: 11.25,\n fill: \"#F25325\"\n})));\nexport default SvgIconMs36;","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgIconAp36 = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 36 36\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M29.7684 13.7093C29.6395 13.7845 26.5705 15.3717 26.5705 18.8908C26.7152 22.904 30.4434 24.3115 30.5073 24.3115C30.4434 24.3867 29.9445 26.2287 28.4666 28.1597C27.2937 29.823 25.9919 31.5 24.0152 31.5C22.1348 31.5 21.4598 30.3914 19.2901 30.3914C16.9601 30.3914 16.3008 31.5 14.5169 31.5C12.5401 31.5 11.1419 29.7331 9.9051 28.0854C8.2983 25.9289 6.93257 22.5446 6.88436 19.2951C6.85187 17.5732 7.20614 15.8806 8.10544 14.4428C9.37474 12.4357 11.6408 11.0732 14.1155 11.0283C16.0116 10.9687 17.6991 12.2414 18.8562 12.2414C19.9651 12.2414 22.0384 11.0283 24.3841 11.0283C25.3966 11.0293 28.0966 11.3135 29.7684 13.7093ZM18.6958 10.6845C18.3583 9.112 19.2901 7.5395 20.158 6.53643C21.2669 5.32336 23.0184 4.5 24.5287 4.5C24.6252 6.07249 24.0141 7.61471 22.9219 8.73792C21.9419 9.95098 20.2544 10.8642 18.6958 10.6845Z\",\n fill: \"black\"\n})));\nexport default SvgIconAp36;","var _circle, _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgIconBack3 = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 16 16\"\n}, props), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 8,\n cy: 8,\n r: 8,\n fill: \"#8A94A9\"\n})), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9 6L7 8.5 9 11\",\n stroke: \"#fff\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n})));\nexport default SvgIconBack3;","var _g;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgIconBack = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"16px\",\n height: \"16px\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\"\n}, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Page-1\",\n stroke: \"none\",\n strokeWidth: 1,\n fill: \"none\",\n fillRule: \"evenodd\"\n}, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Artboard-Copy-9\",\n transform: \"translate(-548.000000, -321.000000)\"\n}, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group-5\",\n transform: \"translate(292.000000, 269.000000)\"\n}, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group-2\",\n transform: \"translate(256.000000, 48.000000)\"\n}, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group\"\n}, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group-6\",\n transform: \"translate(0.000000, 4.000000)\"\n}, /*#__PURE__*/React.createElement(\"circle\", {\n id: \"Oval\",\n stroke: \"#CFD8DC\",\n cx: 8,\n cy: 8,\n r: 7.5\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4,8 L12,8\",\n id: \"Path-2\",\n stroke: \"#607D8B\"\n}), /*#__PURE__*/React.createElement(\"polyline\", {\n id: \"Path-3\",\n stroke: \"#607D8B\",\n points: \"7 5 4 8 7 11\"\n})))))))));\nexport default SvgIconBack;","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgAuth0LogoIcon = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 32 32\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), /*#__PURE__*/React.createElement(\"g\", {\n style: {\n mixBlendMode: \"darken\"\n },\n fill: \"#000\"\n}, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.95 14.158c4.59-.756 8.186-4.552 8.943-9.14l.253-2.207c.061-.351-.175-.838-.619-.804-3.47.27-6.739 1.414-8.563 2.16A2.402 2.402 0 0 0 4.47 6.39v7.197c0 .428.382.75.804.683l.675-.11v-.002ZM17.106 5.015c.756 4.592 4.352 8.384 8.943 9.14l.675.11a.691.691 0 0 0 .804-.683V6.385c0-.976-.59-1.853-1.493-2.224C24.213 3.416 20.94 2.27 17.47 2c-.444-.033-.674.459-.621.805l.253 2.207.003.002ZM26.046 16.171c-6.273 1.237-9.185 5.406-9.185 13.3 0 .397.393.67.722.45 2.885-1.945 9.233-7.022 9.888-13.376.026-.801-.975-.425-1.425-.374ZM5.952 16.171c6.272 1.237 9.185 5.407 9.185 13.301 0 .396-.394.669-.723.45-2.884-1.946-9.233-7.023-9.888-13.377-.025-.801.976-.425 1.426-.374Z\"\n}))));\nexport default SvgAuth0LogoIcon;","var _path, _path2, _path3, _path4, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgAzureLogoIcon = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 32 32\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.049 2h8.792l-9.127 27.045c-.193.57-.727.953-1.329.953H2.543a1.4 1.4 0 0 1-1.327-1.848L9.72 2.954c.193-.57.727-.954 1.329-.954Z\",\n fill: \"url(#a)\"\n})), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M23.827 20.14H9.885a.646.646 0 0 0-.441 1.118l8.96 8.363c.26.243.604.378.96.378h7.896l-3.433-9.858Z\",\n fill: \"#0078D4\"\n})), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.048 2a1.391 1.391 0 0 0-1.331.972L1.226 28.13a1.399 1.399 0 0 0 1.32 1.87h7.02a1.501 1.501 0 0 0 1.152-.979l1.693-4.99 6.048 5.64c.253.21.571.327.9.33h7.866l-3.45-9.86-10.057.003L19.873 2h-8.825Z\",\n fill: \"url(#b)\"\n})), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22.28 2.953A1.4 1.4 0 0 0 20.955 2h-9.8a1.4 1.4 0 0 1 1.326.952l8.505 25.198A1.4 1.4 0 0 1 19.66 30h9.8a1.4 1.4 0 0 0 1.326-1.849L22.28 2.953Z\",\n fill: \"url(#c)\"\n})), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"a\",\n x1: 14.254,\n y1: 4.075,\n x2: 5.122,\n y2: 31.051,\n gradientUnits: \"userSpaceOnUse\"\n}, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#114A8B\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#0669BC\"\n})), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"b\",\n x1: 17.105,\n y1: 16.646,\n x2: 14.993,\n y2: 17.36,\n gradientUnits: \"userSpaceOnUse\"\n}, /*#__PURE__*/React.createElement(\"stop\", {\n stopOpacity: 0.3\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.071,\n stopOpacity: 0.2\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.321,\n stopOpacity: 0.1\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.623,\n stopOpacity: 0.05\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopOpacity: 0\n})), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"c\",\n x1: 16.011,\n y1: 3.263,\n x2: 26.034,\n y2: 29.968,\n gradientUnits: \"userSpaceOnUse\"\n}, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#3CCBF4\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#2892DF\"\n})))));\nexport default SvgAzureLogoIcon;","var _path, _path2, _path3, _path4;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgGoogleLogoIcon = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 32 32\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M29.728 13.258H28.6V13.2H16v5.6h7.913c-1.155 3.26-4.256 5.6-7.912 5.6a8.4 8.4 0 0 1 0-16.8c2.14 0 4.089.808 5.572 2.127l3.96-3.96C23.033 3.437 19.688 2 16.001 2 8.269 2 2 8.268 2 16c0 7.731 6.268 14 14 14 7.731 0 14-6.269 14-14 0-.939-.097-1.855-.273-2.742Z\",\n fill: \"#FFC107\"\n})), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m3.615 9.484 4.6 3.373A8.396 8.396 0 0 1 16 7.6c2.141 0 4.09.808 5.572 2.127l3.96-3.96C23.033 3.437 19.688 2 16.001 2 10.623 2 5.96 5.036 3.615 9.484Z\",\n fill: \"#FF3D00\"\n})), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16 29.999c3.616 0 6.902-1.384 9.386-3.634l-4.332-3.667A8.337 8.337 0 0 1 16 24.399c-3.641 0-6.733-2.322-7.898-5.562l-4.565 3.517C5.854 26.888 10.56 30 16 30Z\",\n fill: \"#4CAF50\"\n})), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M29.727 13.258H28.6V13.2H16v5.6h7.912a8.428 8.428 0 0 1-2.86 3.9l.001-.002 4.333 3.667C25.08 26.643 30 23 30 16c0-.938-.097-1.855-.273-2.742Z\",\n fill: \"#1976D2\"\n})));\nexport default SvgGoogleLogoIcon;","var _path, _path2, _path3, _path4;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgMicrosoftLogoIcon = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 32 32\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14.444 14.444H2V1.999h12.445v12.445Z\",\n fill: \"#FF5722\"\n})), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M30.001 14.444H17.556V1.999h12.445v12.445Z\",\n fill: \"#4CAF50\"\n})), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M30.001 30H17.556V17.555h12.445V30Z\",\n fill: \"#FFC107\"\n})), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14.444 30H2V17.555h12.445V30Z\",\n fill: \"#03A9F4\"\n})));\nexport default SvgMicrosoftLogoIcon;","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgOktaLogoIcon = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 32 32\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"m17.405 2.194-.576 7.094a7.23 7.23 0 0 0-.825-.047c-.35 0-.693.023-1.028.078L14.65 5.88a.188.188 0 0 1 .186-.202h.584l-.28-3.477c-.008-.109.078-.202.179-.202h1.907c.109 0 .194.093.179.202v-.008Zm-4.81.35c-.031-.1-.14-.163-.241-.124l-1.79.653c-.102.04-.148.156-.102.25l1.456 3.173-.553.202c-.101.039-.148.155-.101.249l1.487 3.119a6.673 6.673 0 0 1 1.735-.662l-1.883-6.86h-.008ZM8.205 4.52l4.117 5.802a6.744 6.744 0 0 0-1.4 1.214L8.454 9.109a.188.188 0 0 1 .008-.272l.452-.374-2.452-2.48a.182.182 0 0 1 .015-.273l1.456-1.221a.18.18 0 0 1 .264.031h.008ZM4.75 7.88c-.086-.062-.21-.031-.265.062l-.95 1.65a.184.184 0 0 0 .078.256l3.16 1.493-.296.506a.179.179 0 0 0 .086.256l3.144 1.44c.226-.584.53-1.129.903-1.619L4.75 7.88Zm-2.328 4.48c.016-.109.125-.171.226-.148l6.888 1.797a6.808 6.808 0 0 0-.296 1.835l-3.447-.28a.18.18 0 0 1-.164-.217l.101-.576-3.479-.327c-.109-.007-.179-.108-.163-.217l.327-1.875.007.008Zm-.256 4.651c-.11.008-.18.109-.164.218l.335 1.874c.015.11.124.171.226.148l3.377-.879.102.576c.015.109.124.17.225.148l3.331-.918a6.736 6.736 0 0 1-.35-1.82l-7.09.653h.008Zm1.105 4.931a.184.184 0 0 1 .078-.256l6.428-3.05c.242.576.569 1.113.958 1.595l-2.818 2.007a.183.183 0 0 1-.264-.055l-.296-.513-2.872 1.983c-.086.063-.21.031-.265-.062l-.957-1.649h.008Zm7.79-1.338-5.004 5.064a.182.182 0 0 0 .016.272l1.463 1.221a.18.18 0 0 0 .265-.031l2.023-2.847.452.381c.085.07.21.055.272-.038l1.961-2.847a6.99 6.99 0 0 1-1.44-1.175h-.007Zm-.988 8.128a.182.182 0 0 1-.101-.249l2.965-6.47c.545.28 1.137.49 1.752.606l-.872 3.344a.184.184 0 0 1-.241.125l-.553-.202-.926 3.367c-.031.101-.14.164-.242.125l-1.79-.654.008.008Zm5.106-6.028-.576 7.094c-.008.109.078.202.179.202h1.907a.178.178 0 0 0 .179-.202l-.28-3.477h.583a.188.188 0 0 0 .187-.202l-.327-3.438a6.384 6.384 0 0 1-1.027.078c-.28 0-.553-.016-.825-.055Zm6.865-19.203a.18.18 0 0 0-.102-.249l-1.79-.653c-.1-.039-.21.023-.241.124l-.926 3.368-.553-.202c-.101-.039-.21.023-.241.124l-.872 3.345a6.963 6.963 0 0 1 1.751.606l2.974-6.463Zm3.907 2.823-5.005 5.064a6.792 6.792 0 0 0-1.44-1.175l1.962-2.846a.19.19 0 0 1 .272-.04l.451.382 2.024-2.847a.18.18 0 0 1 .265-.03l1.463 1.22c.085.07.085.195.015.272h-.007Zm2.708 3.983a.178.178 0 0 0 .078-.257l-.957-1.649a.192.192 0 0 0-.265-.062l-2.872 1.983-.296-.505c-.054-.094-.179-.125-.264-.055l-2.818 2.007c.39.482.709 1.019.958 1.594l6.428-3.049.008-.007Zm1.012 2.582.327 1.874a.188.188 0 0 1-.164.218l-7.09.661a6.676 6.676 0 0 0-.35-1.82l3.33-.918a.179.179 0 0 1 .227.148l.1.576 3.379-.88c.1-.022.21.04.225.149l.016-.008Zm-.32 6.883c.102.024.211-.039.227-.148l.326-1.874a.188.188 0 0 0-.163-.218l-3.479-.326.101-.576a.188.188 0 0 0-.163-.218l-3.448-.28a6.81 6.81 0 0 1-.296 1.836l6.888 1.796.008.008Zm-1.836 4.278a.191.191 0 0 1-.265.062l-5.86-4.044c.373-.49.677-1.035.903-1.618l3.144 1.439a.18.18 0 0 1 .086.257l-.296.505 3.16 1.493a.184.184 0 0 1 .078.257l-.95 1.649Zm-7.838-2.388 4.118 5.802a.18.18 0 0 0 .264.032l1.456-1.222a.188.188 0 0 0 .015-.272l-2.451-2.48.451-.374a.182.182 0 0 0 .008-.272l-2.467-2.427c-.413.467-.88.879-1.401 1.213h.007Zm-.038 7.902c-.102.04-.21-.023-.242-.124l-1.883-6.86a6.677 6.677 0 0 0 1.735-.661l1.487 3.119c.047.1 0 .218-.101.249l-.553.202 1.456 3.173a.18.18 0 0 1-.102.25l-1.79.652h-.007Z\",\n fill: \"#000\"\n})));\nexport default SvgOktaLogoIcon;","\n \n\n","var _g;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgIconGl = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"24px\",\n height: \"24px\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n \"aria-hidden\": \"true\"\n}, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: 1,\n fill: \"none\",\n fillRule: \"evenodd\"\n}, /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(-564.000000, -544.000000)\"\n}, /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(292.000000, 328.000000)\"\n}, /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(256.000000, 200.000000)\"\n}, /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(16.000000, 16.000000)\"\n}, /*#__PURE__*/React.createElement(\"circle\", {\n fill: \"#FFFFFF\",\n cx: 12,\n cy: 12,\n r: 12\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.84375,10.4328124 L19.2,10.4328124 L19.2,10.4 L12,10.4 L12,13.6 L16.5218752,13.6 C15.8609376,15.4625 14.0890624,16.8 12,16.8 C9.3484376,16.8 7.2,14.6515624 7.2,12 C7.2,9.3484376 9.3484376,7.2 12,7.2 C13.2234376,7.2 14.3375,7.6609376 15.1843752,8.4156252 L17.4468752,6.1531252 C16.01875,4.8218752 14.1078124,4 12,4 C7.58125,4 4,7.58125 4,12 C4,16.41875 7.58125,20 12,20 C16.41875,20 20,16.41875 20,12 C20,11.4640624 19.9453124,10.9406252 19.84375,10.4328124 Z\",\n fill: \"#FFC107\",\n fillRule: \"nonzero\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4.9218752,8.2765624 L7.5515624,10.2046876 C8.2625,8.44375 9.9843752,7.2 12,7.2 C13.2234376,7.2 14.3375,7.6609376 15.1843752,8.4156252 L17.4468752,6.1531252 C16.01875,4.8218752 14.1078124,4 12,4 C8.9265624,4 6.2625,5.7343752 4.9218752,8.2765624 Z\",\n fill: \"#FF3D00\",\n fillRule: \"nonzero\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12,20 C14.0656252,20 15.94375,19.2093752 17.3640624,17.9234376 L14.8875,15.8281252 C14.0843752,16.4359376 13.0859376,16.8 12,16.8 C9.91875,16.8 8.1531252,15.4734376 7.4875,13.6218752 L4.8781252,15.63125 C6.2015624,18.2218752 8.8906252,20 12,20 Z\",\n fill: \"#4CAF50\",\n fillRule: \"nonzero\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.84375,10.4 L12,10.4 L12,13.6 L16.5218752,13.6 C16.2046876,14.4953124 15.6281252,15.2656252 14.8859376,15.8281252 C14.8875,15.8281252 14.8875,15.8281252 14.8875,15.8281252 L17.3640624,17.9234376 C17.1890624,18.08125 20,16 20,12 C20,11.4640624 19.9453124,10.9078128 19.84375,10.4 Z\",\n fill: \"#1976D2\",\n fillRule: \"nonzero\"\n}))))))));\nexport default SvgIconGl;","var _g;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgIconFb = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"24px\",\n height: \"24px\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\"\n}, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: 1,\n fill: \"none\",\n fillRule: \"evenodd\"\n}, /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(-552.000000, -332.000000)\",\n fill: \"#FFFFFF\"\n}, /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(448.000000, 108.000000)\"\n}, /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(88.000000, 48.000000)\"\n}, /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(0.000000, 160.000000)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M28,16 C34.627417,16 40,21.372583 40,28 C40,34.0950735 35.4558524,39.1288044 29.570608,39.8981421 L29.5703125,31.71875 L32.6992422,31.71875 L33.1676641,28.0859375 L29.5703125,28.0859375 L29.5718914,25.6427048 C29.5966115,24.665022 29.9231963,24.0086797 31.3605391,24.0086797 L31.3605391,24.0086797 L33.2734375,24.0078125 L33.2734375,20.7695938 C32.9830674,20.7310186 32.0751609,20.6506869 30.9653941,20.6312067 L30.9653941,20.6312067 L30.4786328,20.6268828 C27.7134297,20.6268828 25.8203125,22.3148516 25.8203125,25.4147422 L25.8203125,25.4147422 L25.8203125,28.0859375 L22.703125,28.0859375 L22.703125,31.71875 L25.8203125,31.71875 L25.820385,39.8025395 C20.2335827,38.777408 16,33.8831071 16,28 C16,21.372583 21.372583,16 28,16 Z\"\n}))))))));\nexport default SvgIconFb;","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgIconAppleWhite = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 22 27\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.361 14.3443C18.3989 18.4302 21.9454 19.7899 21.9847 19.8073C21.9547 19.9032 21.418 21.745 20.1162 23.6474C18.9909 25.2922 17.8229 26.931 15.983 26.9649C14.1752 26.9982 13.5938 25.8928 11.5269 25.8928C9.46063 25.8928 8.81475 26.931 7.10339 26.9982C5.32743 27.0654 3.97506 25.2196 2.84036 23.5809C0.521733 20.2287 -1.25018 14.1086 1.12905 9.97732C2.311 7.92574 4.42323 6.62659 6.71587 6.59328C8.45982 6.56001 10.1059 7.76655 11.172 7.76655C12.2374 7.76655 14.2377 6.31558 16.3406 6.52868C17.221 6.56532 19.6921 6.88428 21.2789 9.20691C21.151 9.28617 18.3303 10.9282 18.361 14.3443V14.3443ZM14.9633 4.31095C15.9061 3.16965 16.5407 1.58085 16.3676 0C15.0085 0.0546226 13.3651 0.905649 12.3903 2.04633C11.5166 3.05645 10.7515 4.67321 10.958 6.22277C12.4728 6.33998 14.0204 5.45299 14.9633 4.31096\",\n fill: \"white\"\n})));\nexport default SvgIconAppleWhite;","var _rect, _path, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgIconSf36 = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 36 36\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n x: 5.625,\n y: 14.625,\n width: 25.875,\n height: 7.875,\n fill: \"white\"\n})), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22.7745 17.46C22.8945 17.6385 22.9545 17.892 22.9545 18.216C22.9545 18.5385 22.8945 18.795 22.7745 18.975C22.6545 19.1535 22.4745 19.2405 22.224 19.2405C21.972 19.2405 21.7935 19.1535 21.6765 18.975C21.5565 18.795 21.4965 18.54 21.4965 18.216C21.4965 17.892 21.5565 17.6385 21.6765 17.46C21.7935 17.283 21.972 17.1975 22.224 17.1975C22.4745 17.1975 22.6545 17.283 22.7745 17.46ZM30.5145 17.9055H29.1495C29.1678 17.7477 29.22 17.5957 29.3025 17.46C29.3618 17.3701 29.4438 17.2973 29.5402 17.2492C29.6366 17.201 29.7439 17.179 29.8515 17.1855C30.102 17.1855 30.267 17.283 30.387 17.46C30.4662 17.5954 30.5101 17.7487 30.5145 17.9055ZM15.195 17.9055H13.83C13.8487 17.7476 13.9014 17.5956 13.9845 17.46C14.0436 17.3702 14.1253 17.2975 14.2214 17.2493C14.3176 17.2011 14.4247 17.1791 14.532 17.1855C14.7825 17.1855 14.949 17.283 15.0675 17.46C15.1463 17.5956 15.1901 17.7487 15.195 17.9055ZM10.257 19.254C9.867 19.2765 9.6945 19.143 9.696 19.143C9.65195 19.1143 9.6146 19.0764 9.5865 19.032C9.54328 18.957 9.52295 18.8709 9.528 18.7845C9.528 18.6195 9.585 18.4995 9.699 18.42C9.699 18.42 9.864 18.2775 10.254 18.2835C10.5285 18.2865 10.773 18.327 10.773 18.327V19.1865C10.773 19.1865 10.53 19.2375 10.257 19.254Z\",\n fill: \"#138ED8\"\n})), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M19.4175 8.214C17.7795 8.214 16.2975 8.895 15.2325 9.99C14.6325 9.21343 13.8615 8.58566 12.9795 8.1555C12.0943 7.7232 11.1221 7.49899 10.137 7.5C6.597 7.5 3.7275 10.332 3.7275 13.8255C3.7275 14.691 3.906 15.5475 4.254 16.3425C3.41637 16.8272 2.72027 17.5227 2.235 18.36C1.70606 19.2811 1.45489 20.3355 1.51177 21.3962C1.56865 22.4568 1.93116 23.4784 2.55557 24.3376C3.17998 25.1969 4.03964 25.8571 5.03087 26.2388C6.0221 26.6204 7.10258 26.7071 8.142 26.4885C8.56884 27.619 9.33075 28.5923 10.3258 29.278C11.3208 29.9637 12.5016 30.3291 13.71 30.3255C14.8699 30.3287 16.0053 29.992 16.9759 29.357C17.9465 28.722 18.7098 27.8165 19.1715 26.7525C19.8585 27.0855 20.631 27.27 21.447 27.27C23.397 27.27 25.095 26.2095 25.986 24.639C26.439 24.729 26.907 24.7755 27.3885 24.7755C29.2717 24.7779 31.0787 24.0323 32.4123 22.7027C33.7459 21.373 34.4968 19.5682 34.5 17.685C34.4986 16.7523 34.3135 15.829 33.9553 14.9678C33.5971 14.1066 33.0728 13.3244 32.4123 12.6658C31.7518 12.0073 30.968 11.4853 30.1058 11.1296C29.2436 10.774 28.3197 10.5916 27.387 10.593C26.3958 10.591 25.4152 10.797 24.5085 11.1975C24.0002 10.2939 23.261 9.54145 22.3665 9.01724C21.472 8.49303 20.4543 8.21583 19.4175 8.214ZM6.4125 18.972L6.2805 19.338C6.264 19.383 6.2805 19.398 6.2895 19.407L6.294 19.4115C6.3405 19.446 6.387 19.4715 6.435 19.497L6.483 19.524C6.819 19.701 7.137 19.752 7.47 19.752C8.145 19.752 8.5665 19.3965 8.5665 18.8235V18.813C8.5665 18.2835 8.0925 18.09 7.647 17.9505L7.59 17.934C7.254 17.826 6.9645 17.7315 6.9645 17.514V17.502C6.9645 17.316 7.1325 17.178 7.3965 17.178C7.6965 17.184 7.9905 17.259 8.256 17.3955C8.256 17.3955 8.322 17.4375 8.346 17.3745L8.4825 17.0085C8.496 16.974 8.4735 16.9485 8.451 16.9335C8.15573 16.7639 7.82103 16.6749 7.4805 16.6755H7.413C6.7935 16.6755 6.36 17.046 6.36 17.5755V17.5875C6.36 18.147 6.8385 18.3285 7.284 18.453L7.356 18.477C7.6815 18.5745 7.9635 18.66 7.9635 18.8865V18.897C7.9635 19.1055 7.7805 19.2585 7.4865 19.2585C7.3725 19.2585 7.008 19.257 6.615 19.011C6.588 18.996 6.57 18.9825 6.5505 18.9705C6.53473 18.9601 6.51872 18.9501 6.5025 18.9405C6.483 18.93 6.435 18.9105 6.4125 18.972ZM16.323 18.972L16.1895 19.338C16.173 19.383 16.1895 19.398 16.1985 19.407L16.2045 19.4115C16.2495 19.446 16.2975 19.4715 16.344 19.497L16.392 19.524C16.728 19.701 17.046 19.752 17.379 19.752C18.0555 19.752 18.477 19.3965 18.477 18.8235V18.813C18.477 18.2835 18.0015 18.09 17.5575 17.9505L17.499 17.934C17.163 17.826 16.8735 17.7315 16.8735 17.514V17.502C16.8735 17.316 17.043 17.178 17.3055 17.178C17.6055 17.184 17.8995 17.259 18.1665 17.3955C18.1665 17.3955 18.231 17.4375 18.2565 17.3745L18.393 17.0085C18.4065 16.974 18.3825 16.9485 18.3615 16.9335C18.0657 16.7638 17.7305 16.6748 17.3895 16.6755H17.322C16.7025 16.6755 16.2705 17.046 16.2705 17.5755V17.5875C16.2705 18.147 16.7475 18.3285 17.1945 18.453L17.2665 18.477C17.592 18.5745 17.874 18.66 17.874 18.8865V18.897C17.874 19.1055 17.6895 19.2585 17.397 19.2585C17.0592 19.2619 16.7288 19.1596 16.452 18.966L16.4115 18.942C16.3995 18.9345 16.3425 18.912 16.323 18.972ZM23.6025 18.216C23.6025 18.0015 23.5755 17.8005 23.52 17.616C23.4722 17.4383 23.3855 17.2735 23.2661 17.1334C23.1468 16.9933 22.9978 16.8815 22.83 16.806C22.6391 16.7224 22.4323 16.6815 22.224 16.686C22.0157 16.6815 21.8089 16.7224 21.618 16.806C21.4501 16.8814 21.3011 16.9932 21.1817 17.1333C21.0624 17.2734 20.9757 17.4383 20.928 17.616C20.8709 17.8108 20.8426 18.013 20.844 18.216C20.8425 18.4185 20.8695 18.621 20.9265 18.816C20.9732 18.994 21.0596 19.1592 21.179 19.2992C21.2985 19.4392 21.448 19.5504 21.6165 19.6245C21.8083 19.7065 22.0155 19.7464 22.224 19.7415C22.4315 19.7459 22.6376 19.706 22.8285 19.6245C22.9974 19.5504 23.1473 19.439 23.2671 19.2988C23.3868 19.1585 23.4733 18.9929 23.52 18.8145C23.5755 18.6315 23.6025 18.4305 23.6025 18.2145V18.216ZM28.299 19.533L28.161 19.1535C28.1415 19.0995 28.089 19.119 28.089 19.119C28.0044 19.1533 27.9164 19.1785 27.8265 19.194C27.732 19.209 27.627 19.2165 27.516 19.2165C27.3978 19.2226 27.2796 19.2045 27.1687 19.1632C27.0577 19.122 26.9564 19.0584 26.871 18.9765C26.7135 18.8175 26.625 18.561 26.6265 18.2145C26.6265 17.8965 26.706 17.6595 26.844 17.478C26.9805 17.298 27.192 17.2065 27.471 17.2065C27.7035 17.2065 27.882 17.232 28.068 17.2905C28.068 17.2905 28.113 17.3085 28.134 17.2515L28.1835 17.115L28.2735 16.8705C28.2885 16.8255 28.251 16.809 28.2375 16.8045C27.98 16.7161 27.7087 16.6744 27.4365 16.6815C27.1995 16.6815 26.9865 16.722 26.8065 16.8015C26.6338 16.876 26.4792 16.987 26.3534 17.1268C26.2276 17.2666 26.1335 17.4319 26.0775 17.6115C26.0143 17.8062 25.9829 18.0098 25.9845 18.2145C25.9845 18.6765 26.112 19.05 26.3595 19.3245C26.6115 19.6005 26.9865 19.74 27.477 19.74C27.765 19.74 28.062 19.68 28.2765 19.599C28.2765 19.599 28.317 19.5795 28.299 19.533ZM31.1085 18.318C31.1175 18.261 31.1685 17.9115 31.0515 17.511C31.0031 17.3475 30.9197 17.1965 30.807 17.0685C30.7057 16.9529 30.5816 16.8594 30.4425 16.794C30.2696 16.7214 30.084 16.6841 29.8965 16.6845C29.6565 16.6845 29.439 16.725 29.2635 16.806C29.093 16.8825 28.9417 16.9962 28.8208 17.1386C28.6998 17.2811 28.6123 17.4488 28.5645 17.6295C28.5074 17.8254 28.4791 18.0285 28.4805 18.2325C28.4805 18.4365 28.509 18.6405 28.5675 18.8355C28.6239 19.0175 28.7216 19.1839 28.853 19.3219C28.9844 19.4598 29.146 19.5654 29.325 19.6305C29.5185 19.7055 29.7525 19.743 30.0195 19.7415C30.573 19.7415 30.864 19.6185 30.984 19.5525C31.005 19.5405 31.0245 19.521 30.999 19.4625L30.8745 19.1175C30.855 19.065 30.8025 19.083 30.8025 19.083C30.79 19.0879 30.7775 19.0929 30.765 19.098C30.6285 19.149 30.4305 19.224 30.018 19.2225C29.721 19.2225 29.5005 19.1355 29.3625 19.0005C29.2215 18.8625 29.1525 18.66 29.1405 18.372L31.053 18.3735C31.053 18.3735 31.104 18.3735 31.1085 18.324V18.318ZM15.7905 18.318C15.7995 18.261 15.849 17.913 15.732 17.511C15.686 17.3559 15.6082 17.2121 15.5036 17.0886C15.399 16.9652 15.2699 16.8649 15.1245 16.794C14.9512 16.7212 14.765 16.684 14.577 16.6845C14.3602 16.6793 14.1449 16.7208 13.9455 16.806C13.7752 16.8829 13.6242 16.9966 13.5033 17.139C13.3824 17.2815 13.2947 17.449 13.2465 17.6295C13.1896 17.8254 13.1613 18.0285 13.1625 18.2325C13.1595 18.4365 13.1895 18.6405 13.2495 18.8355C13.3035 19.0155 13.3995 19.179 13.5255 19.3155C13.6605 19.4565 13.8255 19.5645 14.007 19.6305C14.199 19.7055 14.433 19.743 14.7015 19.7415C15.2535 19.7415 15.5445 19.6185 15.6645 19.5525C15.6855 19.5405 15.7065 19.521 15.681 19.4625L15.5565 19.1175C15.537 19.065 15.4845 19.083 15.4845 19.083L15.447 19.098C15.312 19.149 15.1125 19.224 14.6985 19.2225C14.4015 19.2225 14.1825 19.1355 14.0445 19.0005C13.9035 18.8625 13.8345 18.66 13.821 18.372L15.735 18.3735C15.735 18.3735 15.7845 18.3735 15.7905 18.324V18.318ZM10.773 17.853C10.608 17.829 10.458 17.8155 10.458 17.8155C10.3581 17.8088 10.2581 17.8058 10.158 17.8065C9.9945 17.8065 9.837 17.8275 9.687 17.8665C9.54422 17.9034 9.40913 17.9654 9.288 18.0495C9.17269 18.1307 9.07771 18.2375 9.0105 18.3615C8.94072 18.4957 8.90565 18.6453 8.9085 18.7965C8.9085 18.9645 8.9385 19.11 8.997 19.2285C9.05406 19.3462 9.13966 19.4478 9.246 19.524C9.36346 19.6052 9.49611 19.6618 9.636 19.6905C9.786 19.725 9.9555 19.7415 10.1415 19.7415C10.3365 19.7415 10.5315 19.7265 10.722 19.695C10.911 19.6635 11.142 19.617 11.205 19.602L11.3385 19.5675C11.3865 19.557 11.3835 19.5075 11.3835 19.5075L11.3805 17.778C11.3805 17.3985 11.2785 17.118 11.0775 16.9425C10.8765 16.77 10.581 16.6815 10.1985 16.6815C10.0265 16.6832 9.85497 16.6987 9.6855 16.728C9.6855 16.728 9.2685 16.809 9.096 16.941C9.096 16.941 9.0585 16.965 9.081 17.016L9.216 17.376C9.231 17.4225 9.2775 17.406 9.2775 17.406C9.2775 17.406 9.2925 17.4015 9.3075 17.391C9.6765 17.193 10.143 17.199 10.143 17.199C10.3096 17.1884 10.4752 17.2315 10.6155 17.322C10.7205 17.4015 10.773 17.52 10.773 17.772V17.8515V17.853ZM25.74 17.238C25.7915 17.0996 25.8415 16.9606 25.89 16.821C25.8898 16.8142 25.8882 16.8075 25.8854 16.8013C25.8825 16.7952 25.8785 16.7896 25.8735 16.785C25.8689 16.7799 25.8633 16.7758 25.857 16.773C25.752 16.7445 25.6445 16.7264 25.536 16.719C25.3669 16.7009 25.196 16.7283 25.041 16.7985C24.9166 16.8508 24.8062 16.9314 24.7185 17.034V16.803C24.7187 16.7956 24.7174 16.7882 24.7147 16.7813C24.712 16.7744 24.708 16.7681 24.7028 16.7628C24.6976 16.7575 24.6914 16.7532 24.6846 16.7504C24.6778 16.7475 24.6704 16.746 24.663 16.746H24.174C24.1666 16.746 24.1592 16.7475 24.1524 16.7504C24.1456 16.7532 24.1394 16.7575 24.1342 16.7628C24.129 16.7681 24.125 16.7744 24.1223 16.7813C24.1196 16.7882 24.1183 16.7956 24.1185 16.803V19.623C24.1185 19.6305 24.1185 19.638 24.123 19.644C24.1278 19.6543 24.1354 19.663 24.145 19.6691C24.1546 19.6752 24.1657 19.6784 24.177 19.6785H24.6795C24.687 19.6785 24.6945 19.6785 24.702 19.6755C24.7125 19.671 24.7214 19.6634 24.7276 19.6538C24.7337 19.6442 24.7368 19.6329 24.7365 19.6215V18.2145C24.7365 18.0255 24.759 17.8365 24.801 17.7195C24.8341 17.6145 24.8917 17.5189 24.969 17.4405C25.035 17.3752 25.1158 17.3268 25.2045 17.2995C25.3561 17.2567 25.5161 17.2531 25.6695 17.289C25.7085 17.2935 25.7295 17.271 25.74 17.238ZM21.2025 15.6C21.2175 15.558 21.1815 15.54 21.168 15.534C21.0221 15.4899 20.8704 15.4681 20.718 15.4695C20.373 15.4695 20.1 15.567 19.908 15.7575C19.7175 15.9465 19.5885 16.236 19.524 16.6155L19.5 16.743H19.0665C19.0665 16.743 19.014 16.74 19.002 16.797L18.9315 17.19C18.9255 17.229 18.9435 17.2515 18.993 17.2515H19.416L18.987 19.6185C18.9616 19.7763 18.9235 19.9318 18.873 20.0835C18.8424 20.18 18.7968 20.2711 18.738 20.3535C18.6957 20.4151 18.6347 20.4614 18.564 20.4855C18.4417 20.5245 18.311 20.5297 18.186 20.5005C18.1504 20.4942 18.1156 20.4836 18.0825 20.469C18.0825 20.469 18.033 20.4495 18.0135 20.499L17.871 20.883C17.8575 20.9205 17.877 20.9505 17.901 20.958C18.0463 21.0142 18.2013 21.0407 18.357 21.036C18.5161 21.0384 18.6743 21.0136 18.825 20.9625C18.9613 20.9121 19.0829 20.8286 19.179 20.7195C19.2891 20.5963 19.3738 20.4526 19.428 20.2965C19.503 20.0895 19.5585 19.8765 19.596 19.662L20.0265 17.2515H20.6565C20.6565 17.2515 20.709 17.2545 20.721 17.196L20.7915 16.8045C20.7975 16.767 20.781 16.743 20.7285 16.743H20.118L20.121 16.722C20.1315 16.662 20.16 16.4835 20.2185 16.317C20.2481 16.2404 20.2941 16.1712 20.3535 16.1145C20.3979 16.0697 20.4524 16.0362 20.5125 16.017C20.579 15.9961 20.6483 15.986 20.718 15.987C20.8045 15.9873 20.8904 16.0004 20.973 16.026C21.036 16.0455 21.0435 16.026 21.0555 15.996L21.2025 15.6ZM12.57 19.68C12.6015 19.68 12.624 19.6545 12.624 19.623V15.588C12.624 15.5565 12.6015 15.531 12.57 15.531H12.06C12.0527 15.5312 12.0455 15.5328 12.0389 15.5358C12.0322 15.5388 12.0262 15.543 12.0212 15.5483C12.0162 15.5536 12.0122 15.5598 12.0096 15.5666C12.007 15.5735 12.0058 15.5807 12.006 15.588V19.623C12.006 19.653 12.0285 19.68 12.06 19.68H12.5685H12.57Z\",\n fill: \"#138ED8\"\n})));\nexport default SvgIconSf36;","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgCloseWithCircle = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 16 16\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#B0BEC5\",\n d: \"M8,6.6l6.3-6.3c0.4-0.4,1-0.4,1.4,0c0.4,0.4,0.4,1,0,1.4L9.4,8l6.3,6.3c0.4,0.4,0.4,1,0,1.4c-0.4,0.4-1,0.4-1.4,0L8,9.4l-6.3,6.3c-0.4,0.4-1,0.4-1.4,0c-0.4-0.4-0.4-1,0-1.4L6.6,8L0.3,1.7c-0.4-0.4-0.4-1,0-1.4c0.4-0.4,1-0.4,1.4,0L8,6.6z\"\n})));\nexport default SvgCloseWithCircle;","\n \n\n","import Axios from 'axios';\n\nexport const initAppleSignin = nonce => {\n if (!window.AppleID) return;\n\n window.AppleID.auth.init({\n clientId: 'com.jotform.applesignin',\n scope: 'name email',\n redirectURI: `https://${global.location.host}/API/login/apple`,\n response_type: 'code',\n response_mode: 'form_post',\n nonce,\n usePopup: true\n });\n\n return window.AppleID.auth.signIn();\n};\n\nexport const initFBSignin = () => {\n // https://sentry.io/organizations/jotform/issues/1769596448/?project=4142374\n if (!window.FB) return;\n\n window.FB.init({\n appId: window.FACEBOOK_SIGNON_APP_ID,\n cookie: true,\n xfbml: true,\n version: 'v3.2'\n });\n return window.FB.login;\n};\n\nexport const initGoogleSignin = callback => {\n if (!window.google) return;\n\n const client = window.google.accounts.oauth2.initCodeClient({\n client_id: window.GOOGLE_SIGNON,\n scope: 'openid profile email',\n ux_mode: 'popup',\n cookiepolicy: 'single_host_origin',\n callback: async response => {\n await callback(response);\n }\n });\n\n return client;\n};\n\nexport const initMicrosoftSignin = () => {\n const myMSALObj = new window.msal.PublicClientApplication({\n auth: {\n clientId: window.MICROSOFT_SIGNON_CLIENT_ID,\n redirectUri: `https://${global.location.host}/login-redirect.html`\n }\n });\n return myMSALObj.loginPopup({\n scopes: ['user.read']\n });\n};\n\nexport const initSalesforceSignin = async () => {\n const openPopupWindowCentered = function openPopupWindowCentered(url, windowName, w, h) {\n const x = window.outerWidth / 2 + window.screenX - w / 2;\n const y = window.outerHeight / 2 + window.screenY - h / 2;\n let features = 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, copyhistory=no, width=';\n features = features.concat(w, ', height=').concat(h, ', top=').concat(y, ', left=').concat(x);\n return window.open(url, windowName, features);\n };\n\n let popUpWindow = null;\n\n const handleLogin = async () => {\n const response = await Axios.get(`https://${global.location.host}/API/user/salesforce-auth-provider`);\n popUpWindow = openPopupWindowCentered(response.data.content, 'login-flow-salesforce', 600, 680);\n };\n\n await handleLogin();\n\n const data = await new Promise(resolve => {\n window.addEventListener('message', message => {\n if (!message || !message.data) {\n resolve('error');\n }\n\n if (message.data.source === 'jfsalesforce_login') {\n if (popUpWindow) {\n popUpWindow.close();\n }\n\n const res = {\n code: message.data.code,\n token: message.data.token\n };\n resolve(res);\n }\n });\n });\n\n return data;\n};\n\nexport const randomString = length => {\n const possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n let text = '';\n for (let i = 0; i < length; i++) {\n text += possible.charAt(Math.floor(Math.random() * possible.length));\n }\n return text;\n};\n\nexport const initGoogleMailSignin = async () => {\n const openPopupWindowCentered = (url, windowName, w, h) => {\n const x = window.outerWidth / 2 + window.screenX - w / 2;\n const y = window.outerHeight / 2 + window.screenY - h / 2;\n const features = `toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, copyhistory=no, width=${w}, height=${h}, top=${y}, left=${x}`;\n return window.open(url, windowName, features);\n };\n\n let popUpWindow = null;\n\n const handleLogin = async () => {\n popUpWindow = openPopupWindowCentered('/api/smtp-oauth2/google.php?startFlow=1', 'smtp-oauth2-google', 600, 680);\n if (!popUpWindow) {\n throw new Error('Pop-up window could not be opened. It might be blocked.');\n }\n };\n\n const handlePostMessage = (event, resolve) => {\n if (event.origin !== window.location.origin) {\n return; // Only accept messages from the same origin\n }\n\n const { data: messageData = '' } = event;\n\n if (!messageData) {\n resolve(new Error('No message data received.'));\n return;\n }\n\n if (messageData?.source === 'smtp_oauth2_google') {\n if (popUpWindow) {\n popUpWindow.close();\n popUpWindow = null;\n }\n\n const res = { authToken: messageData?.authToken };\n resolve(res);\n }\n };\n\n await handleLogin();\n\n const data = await new Promise((resolve, reject) => {\n const listener = event => handlePostMessage(event, resolve);\n\n window.addEventListener('message', listener);\n\n const id = setInterval(() => {\n if (!popUpWindow || popUpWindow.closed) {\n window.removeEventListener('message', listener);\n clearInterval(id);\n }\n }, 500);\n\n setTimeout(() => {\n clearInterval(id);\n window.removeEventListener('message', listener);\n if (popUpWindow && !popUpWindow.closed) {\n popUpWindow.close();\n reject(new Error('Authentication timeout.'));\n }\n }, 60000); // 60 seconds timeout\n });\n\n return data;\n};\n\nexport const initOAuth2MailSignin = async provider => {\n const openPopupWindowCentered = (url, windowName, w, h) => {\n const x = window.outerWidth / 2 + window.screenX - w / 2;\n const y = window.outerHeight / 2 + window.screenY - h / 2;\n const features = `toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, copyhistory=no, width=${w}, height=${h}, top=${y}, left=${x}`;\n return window.open(url, windowName, features);\n };\n\n let popUpWindow = null;\n\n const handleLogin = async () => {\n const url = `/api/smtp-oauth2/${provider === 'google' ? 'google' : 'microsoft'}.php?startFlow=1`;\n popUpWindow = openPopupWindowCentered(url, `smtp-oauth2-${provider}`, 600, 680);\n if (!popUpWindow) {\n throw new Error('Pop-up window could not be opened. It might be blocked.');\n }\n };\n\n const handlePostMessage = (event, resolve) => {\n if (event.origin !== window.location.origin) {\n return; // Only accept messages from the same origin\n }\n\n const { data: messageData = '' } = event;\n\n if (!messageData) {\n resolve(new Error('No message data received.'));\n return;\n }\n\n if (messageData?.source === `smtp_oauth2_${provider}`) {\n if (popUpWindow) {\n popUpWindow.close();\n popUpWindow = null;\n }\n\n const res = { authToken: messageData?.authToken };\n resolve(res);\n }\n };\n\n await handleLogin();\n\n const data = await new Promise((resolve, reject) => {\n const listener = event => handlePostMessage(event, resolve);\n\n window.addEventListener('message', listener);\n\n const id = setInterval(() => {\n if (!popUpWindow || popUpWindow.closed) {\n window.removeEventListener('message', listener);\n clearInterval(id);\n }\n }, 500);\n\n setTimeout(() => {\n clearInterval(id);\n window.removeEventListener('message', listener);\n if (popUpWindow && !popUpWindow.closed) {\n popUpWindow.close();\n reject(new Error('Authentication timeout.'));\n }\n }, 60000); // 60 seconds timeout\n });\n\n return data;\n};\n","/* eslint-disable no-unused-vars */\nimport React, {\n forwardRef, useRef, useEffect\n} from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { t } from '@jotforminc/translation';\nimport { IconExclamationCircle } from '@jotforminc/svg-icons';\nimport { useOnClickOutside } from '@jotforminc/hooks';\nimport cx from 'classnames';\nimport { getPortalElement } from '../../utils/helper';\n\nimport Close from '../../assets/close.svg';\nimport '../../styles/ofac-modal.scss';\n\nconst OFACModal = forwardRef(({ isModal, email }, ref) => {\n const innerRef = useRef();\n const actor = email || window.user?.username || window.__formInfo?.username || 'unknown';\n const logger = window.JotFormActions ? new window.JotFormActions('ofacModal') : null;\n\n const unmountModal = () => {\n ReactDOM.unmountComponentAtNode(getPortalElement('ofacModal'));\n };\n\n const onClose = () => {\n logger?.tick({ actor, action: 'close', target: 'ofacSignupModal' });\n unmountModal();\n };\n\n useEffect(() => {\n logger?.tick({ actor, action: 'seen', target: 'ofacSignupModal' });\n }, []);\n\n useOnClickOutside(innerRef, () => unmountModal());\n\n return (\n
    \n
    \n {isModal && (\n \n \n \n )}\n
    \n \n
    \n
    \n {t('Sorry, you can’t signup from this country')}\n
    \n
    \n

    \n {t('We comply with OFAC’s (The Office of Foreign Assets Control) sanctions and under those sanctions, we no longer serve users from your country.')}\n

    \n

    \n {t('Thank you for your interest in Jotform!')}\n

    \n
    \n
    \n \n {t('Contact Us')}\n \n
    \n
    \n
    \n );\n});\n\nOFACModal.propTypes = {\n isModal: PropTypes.bool,\n email: PropTypes.string\n};\n\nOFACModal.defaultProps = {\n isModal: false,\n email: ''\n};\n\nexport default OFACModal;\n","/* eslint-disable no-param-reassign */\nimport React, { createRef } from 'react';\nimport ReactDOM from 'react-dom';\nimport OFACModal from './OFACModal';\nimport { getPortalElement } from '../../utils/helper';\n\nconst openOFACModal = (ref, email) => {\n if (!ref) {\n ref = createRef();\n }\n\n const portalElement = getPortalElement('ofacModal');\n ReactDOM.render(, portalElement);\n};\n\nexport { OFACModal, openOFACModal };\n","/* global navigator */\nimport Axios from 'axios';\nimport qs from 'querystring';\nimport { getPossibleTimeZone, handleCustomNavigation } from '@jotforminc/utils';\nimport { openOFACModal } from '../components/OFACModal';\n\nexport const getScreenResolution = () => {\n const { screen: { availWidth, availHeight } } = window;\n if (availWidth && availHeight) {\n return `${availWidth}x${availHeight}`;\n }\n return '';\n};\n\nexport const getSocialLoginOptionsByType = type => {\n const options = {\n google: { tokenKey: 'gtoken', action: 'loginWithGoogle' },\n googleOneTap: { tokenKey: 'gtoken', action: 'loginWithGoogle' },\n facebook: { tokenKey: 'ftoken', action: 'loginWithFacebook' },\n microsoft: { tokenKey: 'mtoken', action: 'loginWithMicrosoft' },\n salesforce: { tokenKey: 'stoken', action: 'loginWithSalesforce' }\n };\n\n return options[type];\n};\n\nexport const pushDataLayerEvent = ({ event, eventAction }) => {\n if (window.dataLayer && (typeof window.dataLayer === 'object')) {\n window.dataLayer.push({ event, eventAction });\n }\n};\n\nconst handleSignupVariationTest = username => {\n if (!window.dataLayer || !window.signupEvents) return;\n if (Math.random() < 0.5) {\n pushDataLayerEvent({\n event: 'Signup',\n eventAction: 'Complete-Remarketing'\n });\n if (window.location.href.indexOf('jotform.pro') < 0) {\n window.signupEvents.tick({\n actor: username || 'unknown',\n action: 'Signup',\n target: 'Complete-Remarketing'\n });\n }\n } else if (window.location.href.indexOf('jotform.pro') < 0) {\n window.signupEvents.tick({\n actor: username || 'unknown',\n action: 'Signup',\n target: 'Complete-Remarketing-Passive'\n });\n }\n};\n\nexport const handleSignupCompletedEvents = (username, type) => {\n if (typeof window.signupEvents === 'undefined' && typeof username !== 'undefined' && typeof JotFormActions !== 'undefined') {\n window.signupEvents = window.JotFormActions('jotform-signup-events');\n handleSignupVariationTest(username);\n }\n\n pushDataLayerEvent({\n event: 'Signup',\n eventAction: 'Complete'\n });\n\n if (type) {\n pushDataLayerEvent({\n event: `sign_up_social_${type}`\n });\n }\n\n window.uetq = window.uetq || [];\n window.uetq.push({\n ec: 'Signup',\n ea: 'Complete'\n });\n window.dotq = window.dotq || [];\n window.dotq.push({\n projectId: '10000',\n properties: {\n pixelId: '10027312',\n qstrings: {\n et: 'custom',\n ec: 'Signup',\n ea: 'Completed'\n }\n }\n });\n};\n\nexport const forceUserSocialLogin = (\n type = '',\n token = '',\n onSuccess = f => f,\n onFailure = f => f,\n appName = '',\n tfaResponseCallback = f => f,\n tfaVerificationToken,\n tfaMethod,\n buttonNames = {},\n socialLoginVerificationHash = '',\n onSocialTermsRequired = f => f,\n enableSocialTerms = false,\n eaResponseCallback = f => f,\n eaVerificationToken,\n newGoogleFlow,\n ofacModalRef\n) => {\n const config = getSocialLoginOptionsByType(type);\n if (!config) {\n // eslint-disable-next-line\n console.error('Unsupported social login type', type);\n return;\n }\n\n const actionData = {\n action: config.action,\n [config.tokenKey]: token\n };\n\n const defaultButtonName = appName ? `${type}-${appName}` : '';\n const buttonName = buttonNames[type] ? buttonNames[type] : defaultButtonName;\n\n Axios.post('/server.php', qs.stringify({\n ...(actionData),\n ...(tfaVerificationToken && { token: tfaVerificationToken }),\n ...(eaVerificationToken && { eaToken: eaVerificationToken }),\n ...(socialLoginVerificationHash && { socialLoginHash: socialLoginVerificationHash }),\n ...(enableSocialTerms && { enableSocialTerms }),\n tokenType: tfaMethod,\n language: navigator.language,\n timezone: getPossibleTimeZone(),\n screen_resolution: getScreenResolution(),\n location: global.location.pathname,\n button_name: buttonName,\n ref_app: appName,\n eat: 1,\n return: 1,\n ...(newGoogleFlow && { newGoogleFlow })\n }), {\n withCredentials: true,\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded'\n }\n })\n .then(async ({ data: responseData }) => {\n const {\n success, message, token: tfaToken, newUser, user, socialLoginHash, emailAuthToken, idToken\n } = responseData;\n if (!success) {\n // eslint-disable-next-line\n console.error('Couldn\\'t login', message);\n }\n\n if (socialLoginHash) {\n const { fullName, email, imageUrl } = responseData;\n onSocialTermsRequired({\n socialLoginHash,\n socialUserProfile: { fullName, email, imageUrl },\n idToken\n });\n return;\n }\n\n if (tfaToken) {\n tfaResponseCallback(responseData);\n return;\n }\n\n if (emailAuthToken) {\n eaResponseCallback(responseData);\n return;\n }\n\n if (newUser) {\n handleSignupCompletedEvents(user.username, type);\n }\n\n onSuccess({ data: responseData });\n })\n .catch(error => {\n // eslint-disable-next-line\n const { response: { data: { error: message = '' } = {} } = {} } = error;\n if (message === \"Sorry, you can't signup from this country.\") {\n openOFACModal(ofacModalRef);\n }\n\n if (message?.toLowerCase()?.includes('suspended')) {\n return handleCustomNavigation('/account-suspended', '_self', true);\n }\n\n if (typeof onFailure === 'function') {\n onFailure(error);\n }\n\n // eslint-disable-next-line no-console\n console.error('--Couldn\\'t login', error);\n });\n};\n\nexport const forceUserLoginRequest = async (username, password, appName, recaptcha, tfaToken, tfaTokenType, buttonNames, eaToken, rememberDevice) => {\n try {\n /**\n * TODO: Base url fix required\n *\n * This method is currently dedicated for applications (reports, sheets, inbox etc.).\n * Therefore we do not use `apiURL` like on other requests and leave the url as relative which may cause problems on\n * forms due to cached urls like 'form.jotform.com'.\n *\n * To sum up, please do not use this method on forms. If you are consider doing it then fix the url issue mentioned at above.\n */\n const response = await Axios.post('/server.php', qs.stringify({\n action: 'login',\n ...(!tfaToken && { password: password }),\n remember: true,\n ...(!tfaToken && { username: username }),\n ref_app: appName,\n recaptcha,\n language: global.navigator.language,\n timezone: getPossibleTimeZone(),\n screen_resolution: getScreenResolution(),\n location: global.location.pathname,\n button_name: buttonNames.emailLogin || `emailLogin-${appName}`,\n ...(tfaToken && { token: tfaToken }),\n ...(eaToken && { eaToken: eaToken }),\n tokenType: tfaTokenType,\n rememberDevice: rememberDevice,\n ...(!tfaToken && { eat: '1' }) // email auth parameter\n }), {\n withCredentials: true,\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded'\n }\n });\n\n if (response.data.token) return [false, { content: response.data }, true, false]; // 2fa\n if (response?.data?.emailAuthToken) return [false, { content: response.data }, false, true]; // email authentication\n\n return [true, { content: response.data.user, responseCode: response.status }];\n } catch (error) {\n return [false, error.response || error.message];\n }\n};\n\nexport const handleLoginHelper = async ({\n username,\n password,\n tfaToken = '',\n tfaTokenType = '',\n regularLoginRequest,\n forceUser,\n handleLoginSuccess,\n handleNavigationChangeRequest,\n screenToNavigate = 'epilogue',\n shouldCallNavigate = true,\n appName,\n recaptcha,\n handleTFAResponse,\n buttonNames,\n eaToken,\n handleEAResponse,\n rememberDevice,\n isRecovery\n}) => {\n // Added temporary user list for testing purposes, will be deleted later when 2fa is enabled for all BSG users\n const loginFunction = forceUser ? forceUserLoginRequest : regularLoginRequest;\n\n const [loginSuccess, loginResponse, tfaResponse = false, eaResponse = false] = await loginFunction(\n username, password, appName, recaptcha, tfaToken, tfaTokenType, buttonNames, eaToken, rememberDevice\n );\n\n if (tfaResponse) {\n const { content } = loginResponse;\n handleTFAResponse(content, username, password);\n }\n\n if (eaResponse) {\n const { content } = loginResponse;\n handleEAResponse(content, username, password);\n }\n\n if (!loginSuccess && typeof loginResponse?.message === 'string' && loginResponse?.message?.toLowerCase()?.includes('suspended')) {\n return handleCustomNavigation('/account-suspended', '_self', true);\n }\n\n if (!loginSuccess) return [loginSuccess, loginResponse, tfaResponse, eaResponse];\n\n if (isRecovery) return handleCustomNavigation('/myaccount/security', '_self', true);\n\n handleLoginSuccess(loginResponse);\n if (shouldCallNavigate) handleNavigationChangeRequest(screenToNavigate);\n};\n\nexport const getTermsOfUseLinkByLanguage = isTurkish => (\n isTurkish\n ? 'https://www.jotform.com/hizmet-kosullari'\n : 'https://www.jotform.com/terms'\n);\n\nexport const getPrivacyLinkByLanguage = isTurkish => (\n isTurkish\n ? 'https://www.jotform.com/gizlilik-politikasi'\n : 'https://www.jotform.com/privacy'\n);\n\nexport const isTurkishLanguage = (user = {}) => {\n if (!user) return false;\n const { language, location: { country_code: countryCode } = {} } = user;\n return countryCode === 'TR' || language === 'tr-TR';\n};\n\nexport const createGoogleOneTapContainerEl = () => {\n if (!document.querySelector('#oneTapLoginArea')) {\n const container = document.createElement('div');\n container.setAttribute('id', 'oneTapLoginArea');\n document.getElementsByTagName('body')[0].appendChild(container);\n }\n};\n\nexport const hideGoogleOneTapContainerEl = () => {\n const container = document.querySelector('#oneTapLoginArea');\n if (container) {\n container.style.display = 'none';\n }\n};\n","import React from 'react';\nimport { string, func, element } from 'prop-types';\nimport { t } from '@jotforminc/translation';\nimport { Texts } from '@jotforminc/constants';\nimport { LogoSalesforceLogomarkColor } from '@jotforminc/svg-icons';\n\nexport default function SalesforceButton({\n text,\n onClick,\n classNames,\n icon,\n ariaLabel\n}) {\n return (\n \n {icon}\n {text || t(Texts.CONNECT_SALESFORCE)}\n \n );\n}\n\nSalesforceButton.propTypes = {\n text: string,\n onClick: func.isRequired,\n classNames: string,\n icon: element,\n ariaLabel: string\n};\n\nSalesforceButton.defaultProps = {\n text: '',\n classNames: '',\n icon: ,\n ariaLabel: t(Texts.SIGN_UP_SALESFORCE)\n};\n","import React from 'react';\nimport { string, func, element } from 'prop-types';\nimport { t } from '@jotforminc/translation';\nimport { Texts } from '@jotforminc/constants';\n\nimport FBIcon from '../temporary-duplicate/assets/svg/icon_fb.svg';\n\nexport default function FacebookButton({\n text,\n onClick,\n classNames,\n icon,\n ariaLabel\n}) {\n return (\n \n {icon}\n {text || t(Texts.CONNECT_FACEBOOK)}\n \n );\n}\n\nFacebookButton.propTypes = {\n text: string,\n onClick: func.isRequired,\n classNames: string,\n icon: element,\n ariaLabel: string\n};\n\nFacebookButton.defaultProps = {\n text: '',\n classNames: 'xcl-button-fb test_fb_login',\n icon: ,\n ariaLabel: t(Texts.SIGN_UP_FACEBOOK)\n};\n","import React from 'react';\nimport { string, func, element } from 'prop-types';\nimport { t } from '@jotforminc/translation';\nimport { Texts } from '@jotforminc/constants';\n\nimport GoogleIcon from '../temporary-duplicate/assets/svg/icon_gl.svg';\n\nexport default function GoogleButton({\n text,\n onClick,\n classNames,\n icon,\n ariaLabel\n}) {\n return (\n \n {icon}\n {text || t(Texts.CONNECT_GOOGLE)}\n \n );\n}\n\nGoogleButton.propTypes = {\n text: string,\n onClick: func.isRequired,\n classNames: string,\n icon: element,\n ariaLabel: string\n};\n\nGoogleButton.defaultProps = {\n text: '',\n classNames: 'xcl-button-gl test_gl_login',\n icon: ,\n ariaLabel: t(Texts.SIGN_UP_GOOGLE)\n};\n","import React from 'react';\nimport { bool, element } from 'prop-types';\nimport { translationRenderer } from '@jotforminc/translation';\nimport { Texts } from '@jotforminc/constants';\n\nimport { getTermsOfUseLinkByLanguage, getPrivacyLinkByLanguage } from '../utils/loginSignup';\n\nconst TermsAndConditionsUrls = ({ LabelRenderer, isTurkish }) => {\n return (\n \n {translationRenderer(Texts.AGREE_SERVICE_POLICY)({\n renderer1: str => {str},\n renderer2: str => {str},\n renderer3: str => {str}\n })}\n {' '}\n {/* additional terms only for the turkish users */}\n {isTurkish && (\n translationRenderer(Texts.AGREE_FOR_TURKISH_USERS)({\n renderer1: str => (\n \n {' '}\n {str}\n \n ),\n renderer2: str => {str}\n })\n )}\n \n );\n};\n\nTermsAndConditionsUrls.propTypes = {\n LabelRenderer: element,\n isTurkish: bool\n};\n\nTermsAndConditionsUrls.defaultProps = {\n // eslint-disable-next-line react/prop-types\n LabelRenderer: ({ children }) => <>{children},\n isTurkish: false\n};\n\nexport default TermsAndConditionsUrls;\n","import React from 'react';\nimport { string, func, element } from 'prop-types';\nimport { t } from '@jotforminc/translation';\nimport { Texts } from '@jotforminc/constants';\nimport MicrosoftIcon from '../assets/icon_ms.svg';\n\nexport default function MicrosoftButton({\n text,\n onClick,\n classNames,\n icon,\n ariaLabel\n}) {\n return (\n \n {icon}\n {text || t(Texts.CONNECT_MICROSOFT)}\n \n );\n}\n\nMicrosoftButton.propTypes = {\n text: string,\n onClick: func.isRequired,\n classNames: string,\n icon: element,\n ariaLabel: string\n};\n\nMicrosoftButton.defaultProps = {\n text: '',\n classNames: 'xcl-button-ms test_ms_login',\n icon: ,\n ariaLabel: t(Texts.SIGN_UP_MICROSOFT)\n};\n","import React from 'react';\nimport { string, func, element } from 'prop-types';\nimport { t } from '@jotforminc/translation';\nimport { Texts } from '@jotforminc/constants';\n\nimport AppleIcon from '../temporary-duplicate/assets/svg/icon_apple_white.svg';\n\nexport default function AppleButton({\n text,\n onClick,\n classNames,\n icon,\n ariaLabel\n}) {\n return (\n \n {icon}\n {text || t(Texts.LOGIN_APPLE)}\n \n );\n}\n\nAppleButton.propTypes = {\n text: string,\n onClick: func.isRequired,\n classNames: string,\n icon: element,\n ariaLabel: string\n};\n\nAppleButton.defaultProps = {\n text: '',\n classNames: 'xcl-button-ap test_apple_login',\n icon: ,\n ariaLabel: t(Texts.SIGN_UP_APPLE)\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { t } from '@jotforminc/translation';\nimport { Texts } from '@jotforminc/constants';\nimport { IconSalesforceFilled } from '@jotforminc/svg-icons';\n\nimport { isPlatformSalesforce, salesforceSocialLoginLogger } from '../utils/helper';\nimport GoogleButton from './GoogleButton';\nimport SalesforceButton from './SalesforceButton';\nimport MicrosoftButton from './MicrosoftButton';\nimport FacebookButton from './FacebookButton';\nimport AppleButton from './AppleButton';\n\nimport GoogleIcon36 from '../assets/icon_gl_36.svg';\nimport MicrosoftIcon36 from '../assets/icon_ms_36.svg';\nimport FacebookIcon36 from '../assets/icon_fb_36.svg';\nimport AppleIcon36 from '../assets/icon_ap_36.svg';\n\nconst RenderSocialButtons = ({\n registerMsAbTestAction,\n showSalesforceLogin,\n onGoogleLoginClick,\n onSalesforceLoginClick,\n onMicrosoftLoginClick,\n onFBLoginClick,\n onAppleLoginClick\n}) => {\n const isMicrosoftTeamsFormsLanding = window.location.pathname.includes('/microsoft-teams-forms/');\n const isSalesforceRelatedLanding = window.location.pathname.includes('/formassembly-alternative/');\n\n const getSocialBtnOrder = (socialPlatform = '') => {\n switch (socialPlatform) {\n case 'Google':\n if (isMicrosoftTeamsFormsLanding || isSalesforceRelatedLanding) return 2;\n return 1;\n case 'Microsoft':\n if (isMicrosoftTeamsFormsLanding) return 1;\n if (isSalesforceRelatedLanding) return 3;\n return 2;\n case 'Salesforce':\n if (isSalesforceRelatedLanding) return 1;\n return 5;\n default:\n break;\n }\n };\n\n const jfSocialOpts = [\n {\n order: getSocialBtnOrder('Google'),\n loginType: 'Google',\n renderCondition: true,\n component: }\n classNames=\"test_gl_login xcl-square-button button-gl\"\n onClick={() => {\n onGoogleLoginClick();\n registerMsAbTestAction({ action: 'click', target: 'googleLoginButton' });\n salesforceSocialLoginLogger({ action: 'click', target: 'google-login-button' });\n }}\n />\n },\n {\n order: getSocialBtnOrder('Microsoft'),\n loginType: 'Microsoft',\n renderCondition: true,\n component: }\n classNames=\"xcl-square-button button-ms\"\n onClick={() => {\n onMicrosoftLoginClick();\n registerMsAbTestAction({ action: 'click', target: 'microsoftLoginButton' });\n salesforceSocialLoginLogger({ action: 'click', target: 'microsoft-login-button' });\n }}\n />\n },\n {\n order: 3,\n loginType: 'Facebook',\n renderCondition: true,\n component: }\n classNames=\"test_fb_login xcl-square-button button-fb\"\n onClick={() => {\n onFBLoginClick();\n registerMsAbTestAction({ action: 'click', target: 'facebookLoginButton' });\n salesforceSocialLoginLogger({ action: 'click', target: 'facebook-login-button' });\n }}\n />\n },\n {\n order: 4,\n loginType: 'Apple',\n renderCondition: true,\n component: }\n classNames=\"test_apple_login xcl-square-button button-ap\"\n onClick={() => {\n onAppleLoginClick();\n registerMsAbTestAction({ action: 'click', target: 'appleLoginButton' });\n salesforceSocialLoginLogger({ action: 'click', target: 'apple-login-button' });\n }}\n />\n },\n {\n order: getSocialBtnOrder('Salesforce'),\n loginType: 'Salesforce',\n renderCondition: showSalesforceLogin === true,\n component: }\n classNames=\"test_sf_login xcl-square-button xcl-square-button-salesforce button-sf\"\n onClick={() => {\n onSalesforceLoginClick();\n registerMsAbTestAction({ action: 'click', target: 'salesforceLoginButton' });\n salesforceSocialLoginLogger({ action: 'click', target: 'salesforce-login-button' });\n }}\n />\n }\n ].sort((socialOptA, socialOptB) => (socialOptA.order - socialOptB.order));\n\n return isPlatformSalesforce() ? [\n ...jfSocialOpts.filter(q => q.loginType === 'Salesforce'),\n ...jfSocialOpts.filter(q => q.loginType !== 'Salesforce')\n ].map(q => q.renderCondition && q.component) : jfSocialOpts.map(q => q.renderCondition && q.component);\n};\n\nRenderSocialButtons.propTypes = {\n registerMsAbTestAction: PropTypes.func,\n showSalesforceLogin: PropTypes.bool,\n onGoogleLoginClick: PropTypes.func.isRequired,\n onMicrosoftLoginClick: PropTypes.func.isRequired,\n onFBLoginClick: PropTypes.func.isRequired,\n onAppleLoginClick: PropTypes.func.isRequired,\n onSalesforceLoginClick: PropTypes.func.isRequired\n};\n\nRenderSocialButtons.defaultProps = {\n registerMsAbTestAction: f => f,\n showSalesforceLogin: false\n};\n\nexport default RenderSocialButtons;\n","export const INITIATOR_TYPES = {\n SACL: 'sacl',\n INBOX: 'inbox',\n PORTAL: 'portal',\n WORKFLOW_HANDLER: 'workflow_handler',\n SSV: 'ssv' // Single Submission View\n};\n","import { RequestLayer } from '@jotforminc/request-layer';\n\nconst serverRequestInterceptor = ctx => {\n const { resp } = ctx;\n\n if (!resp?.data?.success) {\n ctx.result = Promise.reject(new Error(resp?.data?.error, { cause: resp?.data?.error_type ?? '' }));\n return;\n }\n\n if (resp) {\n ctx.result = resp;\n }\n};\n\nconst apiRequestInterceptor = ctx => {\n const { resp } = ctx;\n\n if (resp && resp.data && typeof resp.data.responseCode === 'number' && (resp.data.responseCode < 200 || resp.data.responseCode > 299)) {\n ctx.result = Promise.reject(new Error(resp?.data?.message, { cause: resp?.data?.errorType ?? '' }));\n return;\n }\n\n if (resp && resp.data) {\n ctx.result = resp.data;\n }\n};\n\nclass LoginFlowRequestManager {\n constructor({ baseURI = '/API', serverRequest = false } = {}) {\n this.layer = new RequestLayer(baseURI, {\n interceptorConfig: {\n customResponseInterceptors: [!serverRequest ? apiRequestInterceptor : serverRequestInterceptor]\n },\n engineConfig: {\n disableEngineThrowOnError: true,\n validateStatus: () => true\n }\n });\n }\n\n rsPost = data => this.layer.post('', data, {\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded'\n }\n });\n\n post = (url, ...args) => this.layer.post(url, ...args);\n\n get = (url, ...args) => this.layer.get(url, ...args);\n}\n\nexport default LoginFlowRequestManager;\n","import { getPossibleTimeZone } from '@jotforminc/utils';\nimport { INITIATOR_TYPES } from '@jotforminc/constants';\n\nimport { getScreenResolution } from '../utils/loginSignup';\nimport LoginFlowRequestManager from './manager';\n\nconst ServerManager = new LoginFlowRequestManager({ baseURI: '/server.php', serverRequest: true });\nconst APIManager = new LoginFlowRequestManager();\n\nexport const registerNewUser = ({\n email,\n password,\n name,\n username = '',\n buttonName,\n refApp,\n isAgreedTerms = '0',\n recaptcha = ''\n}) => ServerManager.rsPost({\n action: 'registerNewUser',\n email,\n password,\n name,\n isAgreedTerms,\n timezone: getPossibleTimeZone(),\n screen_resolution: getScreenResolution(),\n location: window.location.pathname,\n username,\n button_name: buttonName,\n ref_app: refApp,\n return: 1,\n recaptcha\n});\n\nexport const isEmailEligibleForRegister = ({ email, verificationHash = '' }) => ServerManager.rsPost({\n action: 'isEmailEligibleForRegister',\n email,\n ...(verificationHash && { form_user_hash: verificationHash })\n});\n\nexport const formUserPretendCreate = ({\n email,\n password,\n name,\n verificationHash,\n isHIPAA = '',\n isAgreedTerms = '0'\n}) => APIManager.post('formuser/pretendCreate?master=1', new URLSearchParams({\n email,\n password,\n name,\n isAgreedTerms,\n hash: verificationHash,\n ...(isHIPAA && { isHIPAA })\n}));\n\nexport const formUserCreate = ({\n email,\n password,\n name,\n sendVerification,\n initiator,\n isHIPAA = '',\n appName = '',\n redirectURL = '',\n isAgreedTerms = '0'\n}) => APIManager.post('formuser/register?master=1', new URLSearchParams({\n email,\n password,\n confirm_password: password,\n name,\n sendVerification,\n isAgreedTerms,\n ...(isHIPAA && { isHIPAA }),\n disablePasswordConstraints: '1',\n saclSignup: initiator === INITIATOR_TYPES.SACL,\n ...(initiator && { initiator }),\n ...(appName === 'portal-apps' && window) && { jotform_pwa: '1', referrerURL: window.location.href },\n ...(redirectURL && window) && { redirectUrl: redirectURL }\n}));\n\nexport const getEnterpriseConfigs = () => APIManager.get('enterprise/customized-configs');\n\n/**\n * Atttempt to fetch current user, if that fails,\n * attempt to fetch a formuser. combinedinfo does not\n * work here, as its return value does not fit the\n * requested parameter of the onLoginSuccess.\n */\nexport const fetchUser = () => APIManager.get('user')\n .catch(() => APIManager.get('formuser'));\n\n/**\n * Check if the user should login to the server via SSO.\n *\n * @param {string} usernameOrEmail Email or username belonging to user.\n * @returns SSO status of the user.\n */\nexport const getUserSSOStatus = usernameOrEmail => APIManager.get(`users/${usernameOrEmail}/ssoStatus`);\n\nexport const send2FAAccountRecoveryEmail = () => APIManager.post('mfa/account-recovery/send-email');\n\nexport const dispatchAction = ({ actor, action, target }) => APIManager.post('t/jfrev', {\n project: 'login-flow',\n actor,\n location: window.location && window.location.href,\n oldActions: {\n action,\n target\n }\n});\n","/* eslint-disable max-len */\n/* eslint-disable jsx-a11y/click-events-have-key-events */\n/* eslint-disable jsx-a11y/anchor-is-valid, react/sort-comp */\nimport React, { createRef } from 'react';\nimport {\n shape, bool, string, func, number, object\n} from 'prop-types';\nimport Axios from 'axios';\nimport qs from 'querystring';\nimport classNames from 'classnames';\nimport ReCAPTCHA from 'react-google-recaptcha';\nimport { t, translationRenderer } from '@jotforminc/translation';\nimport { Loading } from '@jotforminc/loading';\nimport { getEnterpriseLogo } from '@jotforminc/request-layer';\nimport {\n listenEnter,\n validateEmail,\n getPossibleTimeZone\n} from '@jotforminc/utils';\nimport { isEnterprise } from '@jotforminc/enterprise-utils';\nimport { Texts } from '@jotforminc/constants';\nimport { IconEnvelopeClosedFilled } from '@jotforminc/svg-icons';\n\nimport {\n isTurkishLanguage,\n getScreenResolution,\n handleSignupCompletedEvents,\n pushDataLayerEvent\n} from '../utils/loginSignup';\nimport SalesforceButton from './SalesforceButton';\nimport FacebookButton from './FacebookButton';\nimport GoogleButton from './GoogleButton';\nimport Password from './Password';\nimport TermsAndConditionsUrls from './TermsAndConditionsUrls';\nimport MicrosoftButton from './MicrosoftButton';\nimport EmailIcon from '../temporary-duplicate/assets/svg/icon_em.svg';\nimport ErrorAlert from './ErrorAlert';\nimport BonusSignupInfoBox from './BonusSignupInfoBox';\nimport { openOFACModal } from './OFACModal';\nimport { salesforceSocialLoginLogger, errorNormalizer } from '../utils/helper';\n\nimport GoogleIcon36 from '../assets/icon_gl_36.svg';\nimport FacebookIcon36 from '../assets/icon_fb_36.svg';\nimport RenderSocialButtons from './SocialButtons';\nimport { dispatchAction } from '../api';\n\nconst errorMessages = {\n required: Texts.FIELD_REQUIRED,\n validEmail: Texts.VALID_EMAIL,\n termsRequired: Texts.AGREE_TERMS_CONDITIONS,\n hipaaPass: {\n minCharCount: Texts.PASS_MIN_CHAR_COUNT,\n includeChars: Texts.PASS_INCL_CHARS,\n differentThanPrev: Texts.PASS_DIFF_PREV\n }\n};\nconst securePasswordTestEnabled = true;\n\nclass SignupOptions extends React.Component {\n constructor(props) {\n super(props);\n\n this.isTurkish = isTurkishLanguage(props.user);\n this.captchaRef = createRef();\n this.state = {\n name: '',\n email: props.signupPredefinedEmail,\n isAggreedTerms: false,\n isSignupLoading: false,\n screenHeight: window.innerHeight,\n user: props.user,\n showRecaptcha: false,\n recaptcha: null\n };\n this.emailRef = React.createRef();\n this.passwordRef = React.createRef();\n this.termsRef = React.createRef();\n this.isEnterpriseEnv = isEnterprise();\n this.updateWindowDimensions = this.updateWindowDimensions.bind(this);\n\n // Accessibility validation controls\n this.invalidFieldRefs = {};\n this.invalidFieldFocusOrder = ['email', 'password', 'terms'];\n }\n\n componentDidMount() {\n const { shrinkConfirmOnMobile, registerMsAbTestAction } = this.props;\n registerMsAbTestAction({ action: 'seen', target: 'signupOptions' });\n if (shrinkConfirmOnMobile) window.addEventListener('resize', this.updateWindowDimensions);\n if (window.sendMessageToJFMobile) {\n window.sendMessageToJFMobile({ signupOptions: true });\n }\n }\n\n componentWillUnmount() {\n const { shrinkConfirmOnMobile } = this.props;\n if (shrinkConfirmOnMobile) window.removeEventListener('resize', this.updateWindowDimensions);\n }\n\n getMsSignupTestClassName() {\n const { isMsSignupControlVariant, isMsSignupTestBVariant, isMsSignupTestCVariant } = this.props;\n\n switch (true) {\n case isMsSignupControlVariant:\n return 'xcl-button-control';\n case isMsSignupTestBVariant:\n return 'xcl-button-b';\n case isMsSignupTestCVariant:\n return 'xcl-button-c';\n default:\n return 'xcl-button-control';\n }\n }\n\n handleFieldChange = propName => e => {\n const { value } = e.target;\n const erroredName = `${propName}Error`;\n const showRequiredMessage = propName !== 'name' && !value;\n this.setState({\n [propName]: value,\n [erroredName]: showRequiredMessage ? t(errorMessages.required) : ''\n });\n };\n\n handleTermsChange = () => {\n const { isAggreedTerms, termsError } = this.state;\n this.setState({\n isAggreedTerms: !isAggreedTerms,\n termsError: (termsError && !isAggreedTerms) ? '' : termsError\n });\n };\n\n resetPasswordError = () => {\n this.setState({ passwordError: '', securePassErrors: [] });\n };\n\n setSecurePaswordError = errorCodes => {\n this.setState({ securePassErrors: errorCodes });\n };\n\n callbackConfirmPassError = confirmPassErrorCode => {\n this.setState({ confirmPassErrorCode });\n };\n\n focusFirstInvalidField = () => {\n let firstInvalidFieldByOrder = '';\n this.invalidFieldFocusOrder.forEach(fieldName => {\n if (!firstInvalidFieldByOrder && this.invalidFieldRefs[fieldName]) {\n firstInvalidFieldByOrder = fieldName;\n }\n });\n\n if (firstInvalidFieldByOrder && firstInvalidFieldByOrder === 'password') {\n this.invalidFieldRefs.password.current.inputRef.current.focus();\n } else if (firstInvalidFieldByOrder) {\n this.invalidFieldRefs[firstInvalidFieldByOrder]?.current?.focus();\n }\n this.invalidFieldRefs = {};\n };\n\n makeAllValidations = () => {\n return new Promise(resolve => {\n const {\n isAggreedTerms, email\n } = this.state;\n const nextState = {};\n let emailErrCode = '';\n if (!email) {\n nextState.emailError = t(errorMessages.required);\n emailErrCode = 'emailRequired';\n this.invalidFieldRefs.email = this.emailRef;\n } else if (!validateEmail(email)) {\n nextState.emailError = t(errorMessages.validEmail);\n emailErrCode = 'emailInvalid';\n this.invalidFieldRefs.email = this.emailRef;\n }\n nextState.emailErrorCode = emailErrCode;\n\n if (!this.isEnterpriseEnv && !isAggreedTerms) { // Aytekin's Request, hiding terms on enterprise signup flow.\n nextState.termsError = t(errorMessages.termsRequired);\n this.invalidFieldRefs.terms = this.termsRef;\n }\n\n this.passwordRef.current.validate().then(({ isValid }) => {\n if (!isValid) {\n this.invalidFieldRefs.password = this.passwordRef;\n }\n }).then(() => this.focusFirstInvalidField());\n\n this.setState({\n ...nextState\n }, resolve);\n }).then(() => this.passwordRef.current.validate());\n };\n\n handleKeyDown = e => listenEnter(e, this.handleSubmit);\n\n handleCaptchaSubmit = hash => {\n if (!hash) {\n dispatchAction({\n actor: window?.user?.username || window?.__formInfo?.username || 'unknown',\n target: 'so',\n action: 'captcha-expired'\n });\n return this.setState({ isSignupLoading: false });\n }\n\n this.setState({\n recaptcha: hash\n });\n\n dispatchAction({\n actor: window?.user?.username || window?.__formInfo?.username || 'unknown',\n target: 'so',\n action: 'captcha-passed'\n });\n };\n\n forceUserSignup = async (name, email, password, isAggreedTerms, recaptcha) => {\n const {\n onLoginSuccess,\n appName,\n buttonNames,\n ofacModalRef\n } = this.props;\n\n const defaultButtonName = appName ? `emailSignup-${appName}` : '';\n const buttonName = buttonNames.emailSignup ? buttonNames.emailSignup : defaultButtonName;\n const signedFromDocusignApp = new URLSearchParams(global.location.search).has('signedFromDocusignApp');\n try {\n const response = await Axios.post(\n '/server.php',\n qs.stringify({\n action: 'registerNewUser',\n email,\n password,\n name,\n isAgreedTerms: isAggreedTerms ? '1' : '0',\n timezone: getPossibleTimeZone(),\n screen_resolution: getScreenResolution(),\n location: global.location.pathname,\n username: '',\n button_name: buttonName,\n ref_app: appName,\n return: 1,\n recaptcha,\n ...(signedFromDocusignApp && { signedFromDocusignApp: 'Yes' })\n }),\n {\n withCredentials: true,\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded'\n }\n }\n );\n\n if (response.status === 200) {\n handleSignupCompletedEvents(response.data.user.username);\n response.data.newUser = true;\n onLoginSuccess(response, true);\n } else {\n this.setState({\n emailError: t('Something went wrong'),\n isSignupLoading: false,\n passwordError: ''\n });\n }\n } catch (error) {\n const { response: { data: { error: message, error_type: errorType } = {} } = {} } = error;\n const hasPasswordWarning = message.includes('PasswordWarning::');\n if (message && securePasswordTestEnabled && (hasPasswordWarning || errorType === 'password')) {\n const removedErrorCode = hasPasswordWarning ? message.replace('PasswordWarning::', '') : message;\n this.setState({\n passwordError: t(removedErrorCode),\n isSignupLoading: false\n });\n } else {\n if (this.captchaRef) {\n this.captchaRef.current?.reset();\n }\n\n if (message === \"Sorry, you can't signup from this country.\") {\n openOFACModal(ofacModalRef, email);\n }\n\n if (message === 'REQUIRE_CAPTCHA') {\n dispatchAction({\n actor: window?.user?.username || window?.__formInfo?.username || 'unknown',\n target: 'so',\n action: 'captcha-required'\n });\n return this.setState({\n isSignupLoading: false,\n showRecaptcha: true\n });\n }\n\n this.setState({\n emailError: t(message || 'Something went wrong, please try again.'),\n isSignupLoading: false,\n passwordError: ''\n });\n }\n }\n };\n\n handleSubmit = e => {\n if (e) {\n e.preventDefault();\n }\n\n pushDataLayerEvent({\n event: 'Signup',\n eventAction: 'Click'\n });\n\n const {\n name, email, isAggreedTerms, recaptcha\n } = this.state;\n const {\n apiURL,\n forceUser,\n isHIPAA,\n onLoginSuccess,\n signupPredefinedEmail,\n verificationHash,\n ofacModalRef\n } = this.props;\n\n this.handleFieldChange('name')({ target: { value: name } });\n this.makeAllValidations().then(({ isValid: isPasswordValid, password }) => {\n if (securePasswordTestEnabled) {\n const {\n emailError, emailErrorCode, termsError, confirmPassErrorCode, securePassErrors\n } = this.state;\n const currentErrors = [\n { emailError: emailError !== '' ? emailErrorCode : '' },\n { termsError: (termsError !== '' && termsError) ? 'termsRequired' : '' },\n { confirmPassErrorCode }\n ];\n securePassErrors.forEach(errCode => {\n currentErrors.push({ passwordError: errCode });\n });\n currentErrors.forEach(type => {\n const errObj = Object.entries(type)[0];\n if (errObj[1] && errObj[1] !== '') {\n if (typeof window.JotFormActions === 'function') {\n const actor = window?.user?.username || window?.__formInfo?.username || 'unknown';\n const logger = new window.JotFormActions('strongPasswordonSignupsWithNew');\n logger.tick({ actor, action: 'signUpClick', target: errObj[1] });\n }\n }\n });\n }\n\n if (!isPasswordValid) return;\n\n const errorProps = ['emailError', 'nameError', 'termsError'];\n const firstError = errorProps.find(errorProp => {\n // eslint-disable-next-line react/destructuring-assignment\n const error = this.state[errorProp];\n return !!error;\n });\n if (firstError || !isPasswordValid) {\n this.setState({ isSignupLoading: false });\n return;\n }\n const isHIPAARequestPart = isHIPAA ? '&isHIPAA=1' : '';\n this.setState({ isSignupLoading: true });\n if (forceUser) {\n this.forceUserSignup(name, email, password, isAggreedTerms, recaptcha);\n } else if (signupPredefinedEmail && verificationHash) { // TODO: need another prop\n Axios.post(\n `${apiURL}/formuser/pretendCreate?master=1`,\n qs.stringify({\n email,\n password,\n name,\n isAgreedTerms: isAggreedTerms ? '1' : '0',\n hash: verificationHash,\n isHIPAA: isHIPAA ? '1' : ''\n }),\n {\n withCredentials: true,\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded'\n }\n }\n ).then(({ data: resp }) => {\n if (resp && resp.responseCode === 200) {\n onLoginSuccess(resp);\n } else if (resp && resp.errorType) {\n if (resp.errorType === 'E_TYPE_EMAIL') {\n this.setState({ emailError: resp.message });\n }\n\n if (resp?.message === \"Sorry, you can't signup from this country.\") {\n openOFACModal(ofacModalRef, email);\n }\n\n this.setState({ isSignupLoading: false });\n } else if (resp && typeof resp.message === 'string') {\n // Shitty error handling\n // we need to change api's error results to human readable format.\n const splitted = resp.message.split('-');\n const lastPart = splitted[splitted.length - 1];\n this.setState({ emailError: lastPart.trim(), isSignupLoading: false });\n }\n });\n } else {\n const { productType, appName } = this.props;\n const sendVerification = productType === 'form' ? '1' : '0';\n const referrerURL = appName === 'portal-apps' && window ? `&jotform_pwa=1&referrerURL=${window.location.href}` : '';\n const encodedEmail = encodeURIComponent(email);\n const encodedPW = encodeURIComponent(password);\n Axios.post(`${apiURL}/formuser/register?master=1`,\n `email=${encodedEmail}&password=${encodedPW}&confirm_password=${encodedPW}&disablePasswordConstraints=1&name=${name}&isAgreedTerms=${isAggreedTerms ? '1' : ' 0'}&sendVerification=${sendVerification}${isHIPAARequestPart}${referrerURL}`,\n {\n withCredentials: true,\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded'\n }\n }).then(({ data: resp }) => {\n if (resp && resp.responseCode === 200) {\n const { content: user } = resp;\n if (window?.JFAppsManager?.isOpenedInPortal()) {\n window.JFAppsManager.userChanged(user);\n }\n\n onLoginSuccess(resp);\n } else if (resp && resp.errorType) {\n if (resp.errorType === 'E_TYPE_EMAIL') {\n let newRespMessage = (resp.message.split(':'));\n newRespMessage = t(`${newRespMessage[0]}${newRespMessage[1] ? ':' : ''}`).concat(newRespMessage[1] ? newRespMessage[1] : '').toString();\n this.setState({ emailError: newRespMessage });\n }\n\n if (resp?.message === \"Sorry, you can't signup from this country.\") {\n openOFACModal(ofacModalRef, email);\n }\n\n this.setState({ isSignupLoading: false });\n }\n });\n }\n });\n };\n\n updateWindowDimensions() {\n this.setState({ screenHeight: window.innerHeight });\n }\n\n // eslint-disable-next-line complexity\n render() {\n const enterpriseEnv = isEnterprise();\n // const isEmbed = window && window.parent && window.parent !== window;\n const {\n onNavigationChangeRequest, onSalesforceLoginClick, onGoogleLoginClick, onFBLoginClick, onMicrosoftLoginClick, enterpriseLogo,\n skippable, onSkip, greetingMessage, thereSocialError, thereErrorMessage, showLogoOnSignupOptions, greetingDescription, showFormOnSignupOptions,\n isHIPAA, includeConfirm, signupButtonText, shrinkConfirmOnMobile, shrinkConfirmHeight, disableEmail, logoSource,\n registerMsAbTestAction, isMsSignupControlVariant, isMsSignupTestBVariant, onAppleLoginClick, areSocialButtonsLoading, horizontalSocialButtons,\n squareSocialButtonStyle, hideGreetingMessageOnSignupOptions, useSwsoButtons\n } = this.props;\n\n const jfLogoSource = logoSource || 'https://cdn.jotfor.ms/assets/img/v4/logo-branding21.png';\n const jfLogo = enterpriseEnv ? getEnterpriseLogo() : jfLogoSource;\n\n const {\n email, name, emailError, nameError, isAggreedTerms, termsError, isSignupLoading, screenHeight, passwordError, user, showRecaptcha\n } = this.state;\n const userCampaign = user?.campaign || {};\n const isGuestUser = user?.account_type?.name === 'GUEST';\n const isMobileTexts = (((window.innerHeight > shrinkConfirmHeight) || !showFormOnSignupOptions) && !horizontalSocialButtons);\n\n const shouldShowBonusSignupBox = isGuestUser && userCampaign?.type === 'NEWUSER' && userCampaign?.status && userCampaign?.expires;\n return (\n
    \n {showLogoOnSignupOptions && \"Logo\"}\n {!enterpriseEnv && !hideGreetingMessageOnSignupOptions && (

    {t(greetingMessage)}

    )}\n {Boolean(greetingDescription) && (

    {t(greetingDescription)}

    )}\n { (false && shouldShowBonusSignupBox) && }\n
    \n {!enterpriseEnv\n && (\n <>\n
    \n {/* TODO: enable areSocialButtonsLoading flag to prevent flick effect */}\n {/* loading */}\n {areSocialButtonsLoading && (\n
    \n \n
    \n )}\n {/* control variant */}\n {!areSocialButtonsLoading && squareSocialButtonStyle && isMsSignupControlVariant && (\n
    \n {\n onSalesforceLoginClick();\n salesforceSocialLoginLogger({ action: 'click', target: 'salesforce-signup-button' });\n // registerMsAbTestAction({ action: 'click', target: 'salesforceSignupButton' });\n }}\n text={isMobileTexts\n ? t(Texts.SIGN_UP_SALESFORCE)\n : t(Texts.SIGN_UP_SALESFORCE_MOBILE)}\n />\n }\n onClick={() => {\n onGoogleLoginClick();\n registerMsAbTestAction({ action: 'click', target: 'googleSignupButton' });\n salesforceSocialLoginLogger({ action: 'click', target: 'google-signup-button' });\n }}\n text={isMobileTexts\n ? t(Texts.SIGN_UP_GOOGLE)\n : t(Texts.SIGN_UP_GOOGLE_MOBILE)}\n />\n }\n onClick={() => {\n onFBLoginClick();\n registerMsAbTestAction({ action: 'click', target: 'facebookSignupButton' });\n salesforceSocialLoginLogger({ action: 'click', target: 'facebook-signup-button' });\n }}\n text={isMobileTexts\n ? t(Texts.SIGN_UP_FACEBOOK)\n : t(Texts.SIGN_UP_FACEBOOK_MOBILE)}\n />\n
    \n )}\n {!areSocialButtonsLoading && !squareSocialButtonStyle && isMsSignupControlVariant && (\n <>\n {\n onGoogleLoginClick();\n registerMsAbTestAction({ action: 'click', target: 'googleSignupButton' });\n }}\n text={isMobileTexts\n ? t(Texts.SIGN_UP_GOOGLE)\n : t(Texts.SIGN_UP_GOOGLE_MOBILE)}\n />\n {\n onFBLoginClick();\n registerMsAbTestAction({ action: 'click', target: 'facebookSignupButton' });\n }}\n text={isMobileTexts\n ? t(Texts.SIGN_UP_FACEBOOK)\n : t(Texts.SIGN_UP_FACEBOOK_MOBILE)}\n />\n \n )}\n {/* test variants */}\n {useSwsoButtons && (\n
    \n \n
    \n )}\n {!areSocialButtonsLoading && !isMsSignupControlVariant && !useSwsoButtons && (\n
    \n {\n onGoogleLoginClick();\n registerMsAbTestAction({ action: 'click', target: 'googleSignupButton' });\n }}\n />\n {\n onMicrosoftLoginClick();\n registerMsAbTestAction({ action: 'click', target: 'microsoftSignupButton' });\n }}\n />\n {!isMsSignupTestBVariant\n && (\n {\n onFBLoginClick();\n registerMsAbTestAction({ action: 'click', target: 'facebookSignupButton' });\n }}\n />\n )}\n
    \n )}\n
    \n {thereSocialError\n && (\n
    \n {t(errorNormalizer(thereErrorMessage))}\n
    \n )}\n
    {t(Texts.OR_KEY)}
    \n \n )}\n {!showFormOnSignupOptions ? (\n onNavigationChangeRequest('signupWithEmail')}\n type=\"button\"\n id=\"signup-with-email\"\n >\n { squareSocialButtonStyle ? : }\n { squareSocialButtonStyle ? t(Texts.SIGN_UP_EMAIL_LOWERCASE) : t(Texts.SIGN_UP_EMAIL) }\n \n ) : (\n
    \n
    \n
    \n \n \n {nameError && }\n
    \n\n
    \n \n \n
    \n {emailError || null}\n {(emailError === Texts.EMAIL_ERROR || emailError === Texts.EMAIL_ERROR_ENTERPRISE) && (\n <>\n  \n {translationRenderer(Texts.PLEASE_LOGIN)({\n renderer1: text => ( onNavigationChangeRequest('loginOptions')}>{text})\n })}\n \n )}\n
    \n
    \n\n \n\n {!this.isEnterpriseEnv && (\n
    \n
    \n \n }\n />\n
    \n
    \n {termsError || null}\n
    \n
    \n ) }\n {showRecaptcha && (\n
    \n this.handleCaptchaSubmit(hash)}\n />\n
    \n )}\n \n {isSignupLoading\n ? (\n
    \n
    \n
    \n
    \n
    \n )\n : t(signupButtonText)}\n \n
    \n {t(Texts.ALREADY_HAVE_ACCOUNT)}\n onNavigationChangeRequest('loginOptions')}\n id=\"login-link\"\n >\n {t(Texts.LOGIN_TEXT)}\n \n
    \n
    \n \n )}\n
    \n {!showFormOnSignupOptions ? (\n
    \n {t(Texts.ALREADY_HAVE_ACCOUNT)}\n onNavigationChangeRequest('loginOptions')}\n id=\"login-link\"\n >\n {t(Texts.LOGIN_TEXT)}\n \n
    \n ) : null}\n {skippable ? (\n {\n onNavigationChangeRequest('withoutSignup');\n if (typeof onSkip === 'function') {\n onSkip();\n }\n }}\n >\n {t(Texts.SKIP_CREATE_ACCOUNT)}\n \n ) : null}\n
    \n );\n }\n}\n\nSignupOptions.propTypes = {\n onNavigationChangeRequest: func.isRequired,\n thereSocialError: bool,\n onSalesforceLoginClick: func.isRequired,\n onFBLoginClick: func.isRequired,\n onGoogleLoginClick: func.isRequired,\n onMicrosoftLoginClick: func.isRequired,\n onAppleLoginClick: func.isRequired,\n enterpriseLogo: string,\n skippable: bool,\n onSkip: func,\n greetingMessage: string,\n hideGreetingMessageOnSignupOptions: bool,\n showLogoOnSignupOptions: bool,\n greetingDescription: string,\n horizontalSocialButtons: bool,\n squareSocialButtonStyle: bool,\n showFormOnSignupOptions: bool,\n onLoginSuccess: func.isRequired,\n apiURL: string.isRequired,\n signupPredefinedEmail: string,\n disableEmail: bool,\n verificationHash: string,\n productType: string,\n isHIPAA: bool,\n appName: string,\n forceUser: bool,\n includeConfirm: bool,\n shrinkConfirmOnMobile: bool,\n shrinkConfirmHeight: number,\n user: shape(),\n signupButtonText: string,\n buttonNames: shape({\n google: string,\n facebook: string,\n apple: string,\n microsoft: string,\n emailLogin: string,\n emailSignup: string\n }),\n logoSource: string,\n registerMsAbTestAction: func,\n isMsSignupControlVariant: bool,\n isMsSignupTestBVariant: bool,\n isMsSignupTestCVariant: bool,\n areSocialButtonsLoading: bool,\n useSwsoButtons: bool,\n ofacModalRef: object,\n thereErrorMessage: string\n};\n\nSignupOptions.defaultProps = {\n enterpriseLogo: null,\n skippable: false,\n onSkip: f => f,\n greetingMessage: Texts.SIGN_UP_NOW,\n hideGreetingMessageOnSignupOptions: false,\n thereSocialError: false,\n showLogoOnSignupOptions: true,\n greetingDescription: '',\n horizontalSocialButtons: false,\n squareSocialButtonStyle: false,\n showFormOnSignupOptions: false,\n productType: 'form',\n signupPredefinedEmail: '',\n disableEmail: false,\n verificationHash: '',\n isHIPAA: false,\n appName: '',\n forceUser: false,\n includeConfirm: false,\n user: null,\n signupButtonText: Texts.CREATE_MY_ACCOUNT,\n buttonNames: {},\n shrinkConfirmOnMobile: false,\n shrinkConfirmHeight: 750,\n logoSource: '',\n registerMsAbTestAction: f => f,\n isMsSignupControlVariant: true,\n isMsSignupTestBVariant: false,\n isMsSignupTestCVariant: false,\n areSocialButtonsLoading: true,\n useSwsoButtons: true,\n ofacModalRef: null,\n thereErrorMessage: Texts.ERROR_TRY_AGAIN\n};\n\nexport default SignupOptions;\n","/* eslint-disable max-len */\nimport { Texts } from '@jotforminc/constants';\n\n// Unusual Signup Flow Texts\nexport const REPORT_UNUSUAL_SIGNUP = 'Report Unusual Signup';\nexport const NOT_CREATE_THIS_ACCOUNT = 'If you didn’t create an account using [1[{email}]], please report this so that we can take the necessary action.';\nexport const REPORT_ACCOUNT = 'Report this account';\nexport const KEEP_ACCOUNT = 'This is my account';\nexport const CONTINUE = 'Continue';\nexport const RECEIVED_RESPONSE = 'We’ve received your report';\nexport const THANKS_FOR_REPORTING = 'Thank you for reporting this. We’ve taken the necessary actions for the account associated with [1[{email}]]. If you need help with anything else, please [2[contact us.]]';\nexport const ERROR_MESSAGE = 'An error occured. Please [1[contact us]].';\n\n// Signup With Login Opts Texts\nexport const TITLE_MESSAGE = 'Sign Up Now';\nexport const DESCRIPTION_MESSAGE = 'Collect information, payments, and signatures with custom online forms';\nexport const SIGN_UP_WITH = 'Sign up with';\nexport const OR = 'OR';\nexport const EMAIL = 'Email';\nexport const BACK = 'Back';\nexport const CONTINUE_SIGNUP = 'Continue Signing Up';\nexport const SIGNING_UP_WITH = 'You’re signing up with [1[{email}]]';\nexport const LOGIN_SESSION_EXPIRED_MESSAGE = 'Login timed out. Please refresh the page and try logging in again.';\n\n// A/B Test: signupOnboardingIV\nexport const OR_SIGN_UP_WITH = 'or sign up with';\nexport const OR_LOGIN_WITH = 'or login with';\nexport const EMAIL_ADDRESS = 'Email address';\nexport const CREATE_ACCOUNT = 'Create Account';\nexport const ENTER_EMAIL_ADDRESS = 'Enter your email address';\nexport const ENTER_FULL_NAME = 'Enter your full name';\n\nexport const errorMessages = {\n tryAgain: Texts.ERROR_TRY_AGAIN,\n required: Texts.FIELD_REQUIRED,\n validEmail: Texts.VALID_EMAIL,\n termsRequired: Texts.AGREE_TERMS_CONDITIONS,\n hipaaPass: {\n minCharCount: Texts.PASS_MIN_CHAR_COUNT,\n includeChars: Texts.PASS_INCL_CHARS,\n differentThanPrev: Texts.PASS_DIFF_PREV\n }\n};\n","/* eslint-disable react/jsx-one-expression-per-line, react/sort-comp */\n\nimport React, { createRef } from 'react';\nimport {\n bool,\n func,\n string,\n shape,\n number,\n object\n} from 'prop-types';\nimport Axios from 'axios';\nimport qs from 'querystring';\nimport ReCAPTCHA from 'react-google-recaptcha';\nimport { t, translationRenderer } from '@jotforminc/translation';\nimport { isEnterprise } from '@jotforminc/enterprise-utils';\nimport { INITIATOR_TYPES, Texts } from '@jotforminc/constants';\nimport {\n listenEnter,\n validateEmail,\n getPossibleTimeZone\n} from '@jotforminc/utils';\n\nimport BackIcon from '../temporary-duplicate/assets/svg/icon_back3.svg';\nimport Password from './Password';\nimport {\n isTurkishLanguage,\n getScreenResolution,\n handleSignupCompletedEvents,\n pushDataLayerEvent\n} from '../utils/loginSignup';\nimport TermsAndConditionsUrls from './TermsAndConditionsUrls';\nimport ErrorAlert from './ErrorAlert';\nimport { openOFACModal } from './OFACModal';\nimport { objToQueryString } from '../utils/helper';\nimport { errorMessages } from '../constants';\nimport { dispatchAction } from '../api';\n\nconst securePasswordTestEnabled = true;\n\nclass SignupWithEmail extends React.Component {\n constructor(props) {\n super(props);\n\n try {\n if (window.opener) {\n this.signUpDefaultName = window.opener.signUpDefaultName || '';\n this.signUpDefaultEmail = window.opener.signUpDefaultEmail || '';\n }\n } catch (error) {\n // eslint-disable-next-line no-console\n console.log('CORS', error);\n }\n\n this.isTurkish = isTurkishLanguage(props.user);\n this.captchaRef = createRef();\n this.state = {\n name: props.signupPredefinedName || this.signUpDefaultName || '',\n email: props.signupPredefinedEmail || this.signUpDefaultEmail || '',\n isAggreedTerms: false,\n isSignupLoading: false,\n screenHeight: window.innerHeight,\n showRecaptcha: false,\n recaptcha: null\n };\n this.emailRef = React.createRef();\n this.passwordRef = React.createRef();\n this.termsRef = React.createRef();\n this.isEnterpriseEnv = isEnterprise();\n this.updateWindowDimensions = this.updateWindowDimensions.bind(this);\n\n // Accessibility validation controls\n this.invalidFieldRefs = {};\n this.invalidFieldFocusOrder = ['email', 'password', 'terms'];\n }\n\n componentDidMount() {\n const { shrinkConfirmOnMobile } = this.props;\n if (shrinkConfirmOnMobile) window.addEventListener('resize', this.updateWindowDimensions);\n }\n\n componentWillUnmount() {\n const { shrinkConfirmOnMobile } = this.props;\n if (shrinkConfirmOnMobile) window.removeEventListener('resize', this.updateWindowDimensions);\n }\n\n handleFieldChange = propName => e => {\n const { value } = e.target;\n const erroredName = `${propName}Error`;\n const showRequiredMessage = propName !== 'name' && !value;\n this.setState({\n [propName]: value,\n [erroredName]: showRequiredMessage ? t(errorMessages.required) : ''\n });\n };\n\n handleTermsChange = () => {\n const { isAggreedTerms, termsError } = this.state;\n this.setState({\n isAggreedTerms: !isAggreedTerms,\n termsError: (termsError && !isAggreedTerms) ? '' : termsError\n });\n };\n\n resetPasswordError = () => {\n this.setState({ passwordError: '', securePassErrors: [] });\n };\n\n setSecurePaswordError = errorCodes => {\n this.setState({ securePassErrors: errorCodes });\n };\n\n callbackConfirmPassError = confirmPassErrorCode => {\n this.setState({ confirmPassErrorCode });\n };\n\n focusFirstInvalidField = () => {\n let firstInvalidFieldByOrder = '';\n this.invalidFieldFocusOrder.forEach(fieldName => {\n if (!firstInvalidFieldByOrder && this.invalidFieldRefs[fieldName]) {\n firstInvalidFieldByOrder = fieldName;\n }\n });\n\n if (firstInvalidFieldByOrder && firstInvalidFieldByOrder === 'password') {\n this.invalidFieldRefs.password.current.inputRef.current.focus();\n } else if (firstInvalidFieldByOrder) {\n this.invalidFieldRefs[firstInvalidFieldByOrder]?.current?.focus();\n }\n this.invalidFieldRefs = {};\n };\n\n makeAllValidations = () => {\n return new Promise(resolve => {\n const {\n isAggreedTerms, email\n } = this.state;\n const nextState = {};\n let emailErrCode = '';\n if (!email) {\n nextState.emailError = t(errorMessages.required);\n emailErrCode = 'emailRequired';\n this.invalidFieldRefs.email = this.emailRef;\n } else if (!validateEmail(email)) {\n nextState.emailError = t(errorMessages.validEmail);\n emailErrCode = 'emailInvalid';\n this.invalidFieldRefs.email = this.emailRef;\n }\n nextState.emailErrorCode = emailErrCode;\n\n if (!this.isEnterpriseEnv && !isAggreedTerms) { // Aytekin's Request, hiding terms on enterprise signup flow.\n nextState.termsError = t(errorMessages.termsRequired);\n this.invalidFieldRefs.terms = this.termsRef;\n }\n\n this.passwordRef.current.validate().then(({ isValid }) => {\n if (!isValid) {\n this.invalidFieldRefs.password = this.passwordRef;\n }\n }).then(() => this.focusFirstInvalidField());\n\n this.setState({\n ...nextState\n }, resolve);\n }).then(() => this.passwordRef.current.validate());\n };\n\n handleKeyDown = e => listenEnter(e, this.handleSubmit);\n\n handleCaptchaSubmit = hash => {\n if (!hash) {\n dispatchAction({\n actor: window?.user?.username || window?.__formInfo?.username || 'unknown',\n target: 'swe',\n action: 'captcha-expired'\n });\n return this.setState({ isSignupLoading: false });\n }\n\n this.setState({\n recaptcha: hash\n });\n\n dispatchAction({\n actor: window?.user?.username || window?.__formInfo?.username || 'unknown',\n target: 'swe',\n action: 'captcha-passed'\n });\n };\n\n forceUserSignup = async (name, email, password, isAggreedTerms, recaptcha) => {\n const {\n onLoginSuccess,\n appName,\n buttonNames,\n changeActiveScreen,\n builderShowSlides\n } = this.props;\n\n const defaultButtonName = appName ? `emailSignup-${appName}` : '';\n const buttonName = buttonNames.emailSignup ? buttonNames.emailSignup : defaultButtonName;\n\n try {\n const response = await Axios.post(\n '/server.php',\n qs.stringify({\n action: 'registerNewUser',\n email,\n password,\n name,\n timezone: getPossibleTimeZone(),\n screen_resolution: getScreenResolution(),\n location: global.location.pathname,\n username: '',\n button_name: buttonName,\n ref_app: appName,\n return: 1,\n isAgreedTerms: isAggreedTerms ? '1' : '0',\n recaptcha\n }),\n {\n withCredentials: true,\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded'\n }\n }\n );\n\n if (response.status === 200) {\n handleSignupCompletedEvents(response.data.user.username);\n response.data.newUser = true;\n onLoginSuccess(response, true);\n } else {\n this.setState({\n emailError: t('Something went wrong'),\n isSignupLoading: false,\n passwordError: ''\n });\n }\n } catch (error) {\n const { response: { data: { error: message, error_type: errorType } = {} } = {} } = error;\n const hasPasswordWarning = message.includes('PasswordWarning::');\n if (message && securePasswordTestEnabled && (hasPasswordWarning || errorType === 'password')) {\n const removedErrorCode = hasPasswordWarning ? message.replace('PasswordWarning::', '') : message;\n this.setState({\n passwordError: t(removedErrorCode),\n isSignupLoading: false\n });\n } else {\n if (this.captchaRef) {\n this.captchaRef.current?.reset();\n }\n\n if (message === \"Sorry, you can't signup from this country.\") {\n builderShowSlides(false);\n changeActiveScreen('ofacModal');\n }\n\n if (message === 'REQUIRE_CAPTCHA') {\n dispatchAction({\n actor: window?.user?.username || window?.__formInfo?.username || 'unknown',\n target: 'swe',\n action: 'captcha-required'\n });\n return this.setState({\n isSignupLoading: false,\n showRecaptcha: true\n });\n }\n\n this.setState({\n emailError: t(message || 'Something went wrong, please try again.'),\n isSignupLoading: false,\n passwordError: ''\n });\n }\n }\n };\n\n handleSubmit = e => {\n if (e) {\n e.preventDefault();\n }\n\n pushDataLayerEvent({\n event: 'Signup',\n eventAction: 'Click'\n });\n\n const {\n name, email, isAggreedTerms, recaptcha\n } = this.state;\n const {\n apiURL,\n forceUser,\n isHIPAA,\n onLoginSuccess,\n signupPredefinedEmail,\n verificationHash,\n ofacModalRef\n } = this.props;\n\n this.handleFieldChange('name')({ target: { value: name } });\n // eslint-disable-next-line complexity\n this.makeAllValidations().then(({ isValid: isPasswordValid, password }) => {\n if (securePasswordTestEnabled) {\n const {\n emailError, emailErrorCode, termsError, confirmPassErrorCode, securePassErrors\n } = this.state;\n const currentErrors = [\n { emailError: emailError !== '' ? emailErrorCode : '' },\n { termsError: (termsError !== '' && termsError) ? 'termsRequired' : '' },\n { confirmPassErrorCode }\n ];\n securePassErrors.forEach(errCode => {\n currentErrors.push({ passwordError: errCode });\n });\n currentErrors.forEach(type => {\n const errObj = Object.entries(type)[0];\n if (errObj[1] && errObj[1] !== '') {\n if (typeof window.JotFormActions === 'function') {\n const actor = window?.user?.username || window?.__formInfo?.username || 'unknown';\n const logger = new window.JotFormActions('strongPasswordonSignupsWithNew');\n logger.tick({ actor, action: 'signUpClick', target: errObj[1] });\n }\n }\n });\n }\n\n if (!isPasswordValid) return;\n\n const errorProps = ['emailError', 'nameError', 'termsError'];\n const firstError = errorProps.find(errorProp => {\n // eslint-disable-next-line react/destructuring-assignment\n const error = this.state[errorProp];\n return !!error;\n });\n if (firstError || !isPasswordValid) {\n this.setState({ isSignupLoading: false });\n return;\n }\n this.setState({ isSignupLoading: true });\n if (forceUser) {\n this.forceUserSignup(name, email, password, isAggreedTerms, recaptcha);\n } else if (signupPredefinedEmail && verificationHash) { // TODO: need another prop\n Axios.post(\n `${apiURL}/formuser/pretendCreate?master=1`,\n qs.stringify({\n email,\n password,\n name,\n isAgreedTerms: isAggreedTerms ? '1' : '0',\n hash: verificationHash,\n isHIPAA: isHIPAA ? '1' : ''\n }),\n {\n withCredentials: true,\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded'\n }\n }\n ).then(({ data: resp }) => {\n if (resp && resp.responseCode === 200) {\n onLoginSuccess(resp);\n } else if (resp && resp.errorType) {\n if (resp.errorType === 'E_TYPE_EMAIL') {\n this.setState({ emailError: resp.message });\n }\n\n if (resp?.message === \"Sorry, you can't signup from this country.\") {\n openOFACModal(ofacModalRef, email);\n }\n\n this.setState({ isSignupLoading: false });\n } else if (resp && typeof resp.message === 'string') {\n if (resp?.message?.includes('Name')) {\n return this.setState({ nameError: resp?.message?.trim(), isSignupLoading: false });\n }\n\n // Shitty error handling\n // we need to change api's error results to human readable format.\n const splitted = resp.message.split('-');\n const lastPart = splitted[splitted.length - 1];\n this.setState({ emailError: lastPart.trim(), isSignupLoading: false });\n }\n });\n } else {\n const {\n productType, appName, redirectURL: redirectUrl, initiator\n } = this.props;\n const isProductForm = productType === 'form' ? '1' : '0';\n const encodedEmail = encodeURIComponent(email);\n const encodedPw = encodeURIComponent(password);\n const queryParamsObj = {\n email: encodedEmail,\n password: encodedPw,\n confirm_password: encodedPw,\n disablePasswordConstraints: '1',\n name,\n sendVerification: isProductForm,\n ...(isHIPAA) && { isHIPAA: '1' },\n ...(appName === 'portal-apps' && window) && { jotform_pwa: '1', referrerURL: window.location.href },\n ...(redirectUrl && window) && { redirectUrl },\n ...(initiator && { initiator }),\n saclSignup: initiator === INITIATOR_TYPES.SACL,\n isAgreedTerms: isAggreedTerms ? '1' : '0'\n };\n Axios.post(`${apiURL}/formuser/register?master=1`,\n objToQueryString(queryParamsObj),\n {\n withCredentials: true,\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded'\n }\n }).then(({ data: resp }) => {\n if (resp && resp.responseCode === 200) {\n const { content: user } = resp;\n if (window?.JFAppsManager?.isOpenedInPortal()) {\n window.JFAppsManager.userChanged(user);\n }\n\n onLoginSuccess(resp);\n } else if (resp && resp.errorType) {\n if (resp.errorType === 'E_TYPE_EMAIL') {\n let newRespMessage = (resp.message.split(':'));\n newRespMessage = t(`${newRespMessage[0]}${newRespMessage[1] ? ':' : ''}`).concat(newRespMessage[1] ? newRespMessage[1] : '').toString();\n this.setState({ emailError: newRespMessage });\n }\n\n if (resp?.message === \"Sorry, you can't signup from this country.\") {\n openOFACModal(ofacModalRef, email);\n }\n\n this.setState({ isSignupLoading: false });\n }\n });\n }\n });\n };\n\n updateWindowDimensions() {\n this.setState({ screenHeight: window.innerHeight });\n }\n\n // eslint-disable-next-line complexity\n render() {\n const {\n onNavigationChangeRequest, isHIPAA, enforceHIPAARuleSet, includeConfirm, signupButtonText, greetingMessageOnSignupWithEmail,\n showLogoOnSignupWithEmail, shrinkConfirmOnMobile, shrinkConfirmHeight, disableEmail, isSwsoTestVariant, initiator\n } = this.props;\n const {\n email, name, emailError, nameError, isAggreedTerms, termsError, isSignupLoading, screenHeight, passwordError, showRecaptcha\n } = this.state;\n\n const jfLogoSource = 'https://cdn.jotfor.ms/assets/img/v4/logo-branding21.png';\n\n const showLoginWarningOption = (this.isEnterpriseEnv && emailError === Texts.EMAIL_ERROR_ENTERPRISE) || emailError === Texts.EMAIL_ERROR;\n\n return (\n
    \n
    \n {showLogoOnSignupWithEmail && \"Logo\"}\n

    {t(greetingMessageOnSignupWithEmail)}

    \n {\n (!isEnterprise() || initiator === INITIATOR_TYPES.SACL)\n && (\n onNavigationChangeRequest(!isSwsoTestVariant ? 'signupOptions' : 'signupWithSocialOpts')}\n >\n \n {t(Texts.OTHER_OPTIONS)}\n \n )\n }\n
    \n
    \n
    \n
    \n \n \n {nameError && }\n
    \n\n
    \n \n \n
    \n {emailError ? t(emailError) : null}\n {showLoginWarningOption && (\n <>\n  \n {translationRenderer(Texts.PLEASE_LOGIN)({\n renderer1: text => ( onNavigationChangeRequest('loginOptions')}>{text})\n })}\n \n )}\n
    \n
    \n\n \n\n {!this.isEnterpriseEnv && (\n
    \n
    \n \n }\n />\n
    \n
    \n {termsError || null}\n
    \n
    \n ) }\n {showRecaptcha && (\n
    \n this.handleCaptchaSubmit(hash)}\n />\n
    \n )}\n \n {isSignupLoading\n ? (\n
    \n
    \n
    \n
    \n
    \n )\n : t(signupButtonText)}\n \n
    \n {t(Texts.ALREADY_HAVE_ACCOUNT)}\n onNavigationChangeRequest('loginOptions')}\n >\n {t(Texts.LOGIN_TEXT)}\n \n
    \n
    \n
    \n \n );\n }\n}\n\nSignupWithEmail.propTypes = {\n onNavigationChangeRequest: func.isRequired,\n onLoginSuccess: func.isRequired,\n apiURL: string.isRequired,\n signupPredefinedEmail: string,\n signupPredefinedName: string,\n disableEmail: bool,\n verificationHash: string,\n productType: string,\n // resourceID: string,\n isHIPAA: bool,\n enforceHIPAARuleSet: bool,\n appName: string,\n forceUser: bool,\n includeConfirm: bool,\n shrinkConfirmOnMobile: bool,\n shrinkConfirmHeight: number,\n user: shape(),\n signupButtonText: string,\n greetingMessageOnSignupWithEmail: string,\n showLogoOnSignupWithEmail: bool,\n buttonNames: shape({\n google: string,\n facebook: string,\n apple: string,\n emailLogin: string,\n emailSignup: string\n }),\n changeActiveScreen: func,\n ofacModalRef: object,\n builderShowSlides: func,\n redirectURL: string,\n initiator: string,\n isSwsoTestVariant: bool\n};\n\nSignupWithEmail.defaultProps = {\n productType: 'form',\n // resourceID: '',\n signupPredefinedEmail: '',\n signupPredefinedName: '',\n disableEmail: false,\n verificationHash: '',\n isHIPAA: false,\n enforceHIPAARuleSet: false,\n appName: '',\n forceUser: false,\n includeConfirm: false,\n user: null,\n signupButtonText: Texts.CREATE_MY_ACCOUNT,\n greetingMessageOnSignupWithEmail: Texts.SIGN_UP_EMAIL,\n showLogoOnSignupWithEmail: false,\n shrinkConfirmOnMobile: false,\n shrinkConfirmHeight: 750,\n buttonNames: {},\n changeActiveScreen: f => f,\n ofacModalRef: null,\n builderShowSlides: f => f,\n redirectURL: '',\n initiator: '',\n isSwsoTestVariant: false\n};\n\nexport default SignupWithEmail;\n","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgOneloginLogoIcon = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 32 32\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M2 15.993C2 8.267 8.277 2 16 2c7.736 0 14 6.267 14 13.993C30 23.733 23.736 30 16 30S2 23.733 2 15.993Zm15.685 5.361c.265 0 .403-.138.403-.402h-.013v-9.06c0-.19-.063-.328-.327-.328h-4.905c-.264 0-.403.138-.403.403v2.516c0 .265.139.403.403.403h1.924v6.066c0 .264.139.402.403.402h2.515Z\",\n fill: \"#1C1F2A\",\n style: {\n mixBlendMode: \"darken\"\n }\n}));\nexport default SvgOneloginLogoIcon;","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgPrivateLogoIcon = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 32 32\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M7.75 26.5a6.752 6.752 0 0 1-2.24-13.12c-.005-.127-.01-.254-.01-.38 0-4.144 3.356-7.5 7.5-7.5 2.78 0 5.203 1.509 6.502 3.759A4.477 4.477 0 0 1 22 8.499a4.501 4.501 0 0 1 4.2 6.122A6 6 0 0 1 25 26.5H7.75Zm2.25-11a4 4 0 0 0 4.537 3.963c.29-.038.434-.058.526-.045a.568.568 0 0 1 .23.078c.082.045.161.125.32.284l3.407 3.407c.116.115.173.173.24.214.06.037.125.064.193.08.077.018.159.018.322.018h1.158c.373 0 .56 0 .703-.072a.666.666 0 0 0 .29-.291c.074-.143.074-.33.074-.703v-1.158c0-.163 0-.245-.019-.322a.665.665 0 0 0-.08-.192c-.04-.068-.099-.125-.214-.24l-3.407-3.408c-.159-.159-.239-.238-.284-.32a.568.568 0 0 1-.078-.23c-.013-.092.007-.236.046-.526A4 4 0 1 0 10 15.5Zm2.666 0a1.333 1.333 0 1 0 2.667 0 1.333 1.333 0 0 0-2.667 0Z\",\n fill: \"#6C73A8\",\n style: {\n mixBlendMode: \"darken\"\n }\n}));\nexport default SvgPrivateLogoIcon;","import auth0 from './auth0-logo-icon.svg';\nimport azurad from './azure-logo-icon.svg';\nimport google from './google-logo-icon.svg';\nimport windowsad from './microsoft-logo-icon.svg';\nimport okta from './okta-logo-icon.svg';\nimport onelogin from './onelogin-logo-icon.svg';\nimport custom from './private-logo-icon.svg';\n\nexport const idpLogos = {\n auth0,\n azurad,\n google,\n windowsad,\n okta,\n onelogin,\n custom\n};\n","/* eslint-disable @jotforminc/no-native-button */\nimport React from 'react';\nimport '../styles/ssoLoginOptions.scss';\n\nimport { t } from '@jotforminc/translation';\nimport { handleCustomNavigation } from '@jotforminc/utils';\nimport { Texts, INITIATOR_TYPES } from '@jotforminc/constants';\nimport classNames from 'classnames';\nimport {\n arrayOf,\n bool,\n func,\n shape,\n string\n} from 'prop-types';\nimport { fetchUser } from '../api';\nimport { idpLogos } from '../assets/idp-icons/icons';\n\nconst openPopupWindowCentered = (url, windowName, w, h) => {\n const x = window.outerWidth / 2 + window.screenX - w / 2;\n const y = window.outerHeight / 2 + window.screenY - h / 2;\n let features = 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, copyhistory=no, width=';\n features = features.concat(w, ', height=').concat(h, ', top=').concat(y, ', left=').concat(x);\n return handleCustomNavigation(url, windowName, true, features);\n};\n\n/**\n * Get the logo of the IDP provider.\n */\nconst getIdpLogo = idpName => {\n if (Object.prototype.hasOwnProperty.call(idpLogos, idpName)) {\n return idpLogos[idpName];\n }\n return idpLogos.custom;\n};\n\n/**\n * SSO login success redirection for popup flows\n */\nconst SUCCESS_REDIRECT = encodeURIComponent('/sso/login-success.html');\n\nconst SSOLoginOptions = ({\n initiator,\n ssoLoginOptions,\n onSSOLoginSuccess,\n onSSOLoginFail,\n hideDivider\n}) => {\n const compact = ssoLoginOptions.length > 1;\n\n const onSSOLoginClick = configKey => () => {\n const currentPage = encodeURIComponent(window.location.href);\n const url = `${window.location.origin}/sso?SSOConfigKey=${configKey || ''}`;\n\n if (initiator === INITIATOR_TYPES.SACL) {\n const loginPopup = openPopupWindowCentered(`${url}&rp=${SUCCESS_REDIRECT}`, 'loginPopup', 400, 500);\n\n const id = setInterval(() => {\n try {\n if (loginPopup.closed) {\n clearInterval(id);\n fetchUser().then(result => {\n if (result?.content?.account_type?.name === 'GUEST') {\n // Fail state, weird check because Form User may not have\n // account_type. If a downstream issue occurs in the SSO\n // service provider the login will fail.\n onSSOLoginFail();\n } else {\n // Success state\n onSSOLoginSuccess(result);\n }\n }).catch(() => {\n onSSOLoginFail();\n });\n }\n } catch (error) {\n // mainly for CORS errors\n }\n }, 500);\n } else {\n handleCustomNavigation(`${url}&rp=${currentPage}`, '_self', true);\n }\n };\n\n return (\n <>\n {compact &&

    {t('Log in with')}

    }\n
      \n {ssoLoginOptions.map(({ name, configKey, idpName }) => {\n const IDPLogo = getIdpLogo(idpName);\n return (\n
    • \n \n \n {\n compact ? (\n {name}\n ) : (\n \n {t('Log in with')}\n {name}\n \n )\n }\n \n
    • \n );\n })}\n
    \n {!hideDivider && (\n
    \n {t(Texts.OR_KEY)}\n
    \n )}\n \n );\n};\n\nSSOLoginOptions.propTypes = {\n initiator: string.isRequired,\n ssoLoginOptions: arrayOf(shape({\n name: string,\n logoURL: string,\n configKey: string,\n idpName: string\n })).isRequired,\n onSSOLoginSuccess: func.isRequired,\n onSSOLoginFail: func.isRequired,\n hideDivider: bool\n};\n\nSSOLoginOptions.defaultProps = {\n hideDivider: false\n};\n\nexport default SSOLoginOptions;\n","/* eslint-disable @jotforminc/no-native-button */\n/* eslint-disable complexity,react/sort-comp */\nimport React, { Component } from 'react';\nimport {\n bool,\n string,\n func,\n arrayOf,\n shape\n} from 'prop-types';\nimport ReCAPTCHA from 'react-google-recaptcha';\nimport classNames from 'classnames';\nimport { t } from '@jotforminc/translation';\nimport { RequestLayer, Interceptors, getAPIURL } from '@jotforminc/request-layer';\nimport { isEnterprise } from '@jotforminc/enterprise-utils';\nimport { INITIATOR_TYPES, Texts } from '@jotforminc/constants';\nimport { listenEnter, getUrlParameter, handleCustomNavigation } from '@jotforminc/utils';\n\nimport BackIcon from '../temporary-duplicate/assets/svg/icon_back.svg';\nimport ErrorAlert from './ErrorAlert';\nimport SocialButtons from './SocialButtons';\nimport FacebookButton from './FacebookButton';\nimport GoogleButton from './GoogleButton';\nimport MicrosoftButton from './MicrosoftButton';\nimport { errorNormalizer } from '../utils/helper';\nimport SSOLoginOptions from './SSOLoginOptions';\nimport { EMAIL_ADDRESS, ENTER_EMAIL_ADDRESS, OR_LOGIN_WITH } from '../constants';\n\nconst invalidInputText = Texts.FIELD_REQUIRED;\nconst invalidEmailInputText = Texts.EMAIL_FIELD_REQUIRED;\nconst invalidPassInputText = Texts.PASS_FIELD_REQUIRED;\nconst userIsSSOError = Texts.USER_IS_SSO_ERROR;\nconst unexpectedErrorText = Texts.ERROR_TRY_AGAIN;\n\nexport default class LoginOptions extends Component {\n constructor(props) {\n super(props);\n this.isEnterprise = isEnterprise();\n const emailParam = getUrlParameter('username');\n const skipEmailVerification = getUrlParameter('skipEmailVerification');\n const { ssoLoginOptions } = props;\n this.state = {\n email: (!emailParam || emailParam === '') ? props.loginPredefinedEmail : emailParam,\n pass: '',\n emailValid: true,\n ssoErrorMessage: '',\n passValid: true,\n loginErrorMsg: '',\n recaptcha: false,\n isLoginLoading: false,\n showSalesforceLogin: false,\n isSSOControlStep: this.isEnterprise && ssoLoginOptions.length > 0 && !skipEmailVerification,\n isSSOControlLoading: false\n };\n this.layer = new RequestLayer(getAPIURL(), {\n interceptorConfig: {\n teamID: global.teamID,\n customResponseInterceptors: [Interceptors.requestManagerResponseNormalizer]\n }\n });\n\n this.socialLoginParams = {\n facebook: getUrlParameter('facebook') === '1',\n google: getUrlParameter('google') === '1',\n microsoft: getUrlParameter('microsoft') === '1'\n };\n\n this.emailInputRef = React.createRef();\n this.passInputRef = React.createRef();\n }\n\n componentDidMount() {\n const { registerMsAbTestAction, isOnboardingFlow } = this.props;\n if (!isOnboardingFlow && window.innerWidth > 480) {\n this.emailInputRef.current?.focus();\n }\n registerMsAbTestAction({ action: 'seen', target: 'loginOptions' });\n\n this.setState({\n showSalesforceLogin: !this.isEnterprise\n });\n }\n\n componentDidUpdate(prevProps) {\n const { externalErrorMessage } = this.props;\n\n if (externalErrorMessage !== prevProps.externalErrorMessage && this.isEnterprise) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({\n loginErrorMsg: externalErrorMessage\n });\n }\n }\n\n /**\n * TODO: This is temp solution.\n * For more information please contact the commit owner.\n */\n get showForgotPassword() {\n const {\n isSSOControlStep\n } = this.state;\n\n return !isSSOControlStep;\n }\n\n validate = input => {\n const { [input]: value } = this.state;\n this.setState({\n [`${input}Valid`]: !!value // inputs shouldn't be empty\n });\n };\n\n handleInputChange = input => e => {\n const { value } = e.target;\n const { setExternalErrorMessage } = this.props;\n this.setState({ [input]: value }, () => {\n this.validate(input);\n });\n setExternalErrorMessage('');\n this.setState({\n loginErrorMsg: ''\n });\n };\n\n validateAll = async (fields = ['email', 'pass']) => {\n await Promise.all(fields.map(input => {\n return Promise.resolve(this.validate(input));\n }));\n const { emailValid, passValid } = this.state;\n if (!emailValid) {\n this.emailInputRef.current.focus();\n } else if (!passValid) {\n this.passInputRef.current.focus();\n }\n return Promise.resolve(emailValid && passValid);\n };\n\n handleLogin = async (event, recaptcha) => {\n const validationResult = await this.validateAll();\n this.setState({ isLoginLoading: true });\n if (!validationResult) {\n this.setState({ isLoginLoading: false });\n return;\n }\n const { onLoginClick } = this.props;\n const { email, pass } = this.state;\n const [success = true, { message = 'An error occured.', data: { error } = {} } = {}, tfaResponse = false] = await onLoginClick(email, pass, recaptcha) || [];\n\n if (!success && !tfaResponse) {\n this.setState({ isLoginLoading: false });\n const errorMessage = error || message;\n\n if (errorMessage === 'REQUIRE_CAPTCHA') {\n return this.setState({ recaptcha: true });\n }\n\n if (error?.toLowerCase()?.includes('suspended')) {\n return handleCustomNavigation('/account-suspended', '_self', true);\n }\n\n this.setState({\n loginErrorMsg: errorMessage,\n recaptcha: false\n });\n }\n };\n\n /**\n * Check if the user with username/email is an SSO user,\n * if so do not allow them to the password view, if not\n * show the password field.\n */\n handleSSOControl = async () => {\n const validationResult = await this.validateAll(['email']);\n this.setState({\n ssoErrorMessage: '',\n isSSOControlLoading: true\n });\n if (!validationResult) {\n this.setState({ isSSOControlLoading: false });\n return;\n }\n const { email } = this.state;\n const { getUserSSOStatus } = this.props;\n try {\n const { content: { isSSOUser } } = await getUserSSOStatus(email);\n if (isSSOUser) {\n this.setState({\n ssoErrorMessage: userIsSSOError\n });\n } else {\n // Ask the user for a password.\n this.setState({\n isSSOControlStep: false\n });\n }\n } catch (e) {\n if (e.message === 'Rate limit exceeded') {\n // Gracefully degrade and show password\n // if we hit rate limit.\n this.setState({\n isSSOControlStep: false\n });\n } else {\n // Set to an error state.\n // for actual errors.\n this.setState({\n emailValid: false,\n ssoErrorMessage: unexpectedErrorText\n });\n }\n } finally {\n // By this point whether or not we had an error loading\n // has finished.\n this.setState({ isSSOControlLoading: false });\n }\n };\n\n handleKeyDown = e => {\n const {\n isSSOControlStep,\n isLoginLoading,\n isSSOControlLoading\n } = this.state;\n // To avoid users spamming enter.\n const loading = isLoginLoading || isSSOControlLoading;\n if (!loading) {\n return listenEnter(e, isSSOControlStep\n ? this.handleSSOControl\n : this.handleLogin\n );\n }\n };\n\n /**\n * Get the error message to be shown under\n * email/username input, if there is any.\n */\n get emailInputErrorMessage() {\n const {\n isSSOControlStep,\n loginErrorMsg,\n emailValid,\n ssoErrorMessage\n } = this.state;\n if (isSSOControlStep && loginErrorMsg) {\n // Otherwise this would be displayed under password which isn't\n // visible.\n return loginErrorMsg;\n }\n\n if (!emailValid) {\n return t(invalidEmailInputText);\n }\n\n if (ssoErrorMessage) {\n return t(ssoErrorMessage);\n }\n\n return '';\n }\n\n redirectToEnterpriseLogin() {\n try {\n if (window.opener.isSalesforceAdmin) {\n // https://stackoverflow.com/questions/71154547/window-opener-reference-lost-in-firefox\n // eslint-disable-next-line @jotforminc/no-location-href-assignment\n window.location.href = '/platform/auth?registrationType=oauth&client_id=Salesforce&access_type=full&auth_type=login&popup=1&newEnterpriseStarter=1';\n } else {\n // eslint-disable-next-line @jotforminc/no-location-href-assignment\n window.location.href = '/platform/auth?registrationType=oauth&client_id=Salesforce&access_type=full&auth_type=login&popup=1&contactAdminError=1';\n }\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(e);\n }\n }\n\n render() {\n const {\n onNavigationChangeRequest,\n onSalesforceLoginClick,\n onGoogleLoginClick,\n onFBLoginClick,\n onMicrosoftLoginClick,\n preventBack,\n thereSocialError,\n thereErrorMessage,\n loginButtonText,\n loginWelcomeText,\n loginDescriptionText,\n onAppleLoginClick,\n hideSignUp,\n greetingDescription,\n registerMsAbTestAction,\n logoSource,\n readonlyEmail,\n showJotformLogo,\n showEnterpriseLogin,\n isSwsoTestVariant,\n forceShowBack,\n initiator,\n ssoLoginOptions,\n onSSOLoginSuccess,\n onSSOLoginFail,\n isOnboardingFlow,\n isOnboardingTestVariantReversed\n } = this.props;\n\n const {\n email,\n pass,\n passValid,\n loginErrorMsg,\n recaptcha,\n isLoginLoading,\n showSalesforceLogin,\n isSSOControlStep,\n isSSOControlLoading\n } = this.state;\n\n const emailErrorMessage = this.emailInputErrorMessage;\n const loginLogoSource = this.isEnterprise ? logoSource : 'https://www.jotform.com/resources/assets/logo-nb/jotform-logo-white-400x100.png';\n const showLogo = (this.isEnterprise && loginLogoSource) || (!this.isEnterprise && showJotformLogo);\n\n const trimmedLoginWelcomeText = loginWelcomeText?.trim?.();\n const trimmedGreetingDescription = greetingDescription?.trim?.();\n const trimmedLoginDescriptionText = loginDescriptionText?.trim?.();\n const descriptionText = trimmedGreetingDescription || trimmedLoginDescriptionText;\n\n return (\n
    \n {showLogo && \"Logo\"}\n {trimmedLoginWelcomeText && (

    {t(trimmedLoginWelcomeText)}

    )}\n {descriptionText && (

    {t(descriptionText)}

    )}\n
    \n {!this.isEnterprise\n && (\n <>\n
    \n {t(Texts.LOGIN_WITH)}\n
    \n {Object.values(this.socialLoginParams).every(q => q === false) && (\n \n )}\n {this.socialLoginParams.facebook && (\n onFBLoginClick()}\n />\n )}\n {this.socialLoginParams.google && (\n onGoogleLoginClick()}\n />\n )}\n {this.socialLoginParams.microsoft && (\n onMicrosoftLoginClick()}\n />\n )}\n
    \n
    \n {thereSocialError\n && (\n
    \n {t(errorNormalizer(thereErrorMessage))}\n
    \n )}\n
    {!isOnboardingFlow ? t(Texts.OR_KEY) : t(OR_LOGIN_WITH)}
    \n \n )}\n
    \n {\n ssoLoginOptions.length > 0 && (\n \n )\n }\n
    \n \n \n
    \n {emailErrorMessage}\n
    \n
    \n {!isSSOControlStep\n && (\n
    \n \n \n
    \n {passValid ? null : t(invalidInputText)}\n
    \n {!hideSignUp && this.showForgotPassword && (\n onNavigationChangeRequest('forgotPassword')}\n id=\"forgotPasswordButton\"\n >\n {t(Texts.FORGOT_PASSWORD)}\n \n )}\n {loginErrorMsg ? (\n \n ) : null}\n
    \n )}\n\n {recaptcha ? (\n
    \n this.handleLogin(null, recaptcha_)} />\n
    \n ) : null}\n\n {isSSOControlStep ? (\n \n {isSSOControlLoading\n ? (\n
    \n
    \n
    \n
    \n
    \n )\n : t('Continue')}\n \n ) : (\n \n {isLoginLoading\n ? (\n
    \n
    \n
    \n
    \n
    \n )\n : t(loginButtonText)}\n \n )}\n {hideSignUp && this.showForgotPassword && (\n
    \n onNavigationChangeRequest('forgotPassword')}\n id=\"forgotPasswordButton\"\n >\n {t(Texts.FORGOT_PASSWORD)}\n \n
    \n )}\n {!isOnboardingFlow && !showEnterpriseLogin && !hideSignUp && (\n
    \n {t(Texts.DONT_HAVE_ACCOUNT)}\n {\n let upcomingScreen = !isSwsoTestVariant ? 'signupOptions' : 'signupWithSocialOpts';\n if (this.isEnterprise && initiator !== INITIATOR_TYPES.SACL) {\n upcomingScreen = 'signupWithEmail';\n }\n onNavigationChangeRequest(upcomingScreen);\n }}\n >\n {t(Texts.SIGN_UP)}\n \n
    \n )}\n {showEnterpriseLogin && (\n
    \n {t(Texts.ARE_YOU_JOTFORM_ENTERPRISE_USER)}\n this.redirectToEnterpriseLogin()}\n >\n {t(Texts.LOGIN_TO_JOTFORM_ENTERPRISE)}\n \n
    \n )}\n
    \n {!preventBack && (\n onNavigationChangeRequest(!isSwsoTestVariant ? 'signupOptions' : 'signupWithSocialOpts')}\n type=\"button\"\n >\n \n {t(Texts.BACK_KEY)}\n \n )}\n
    \n
    \n );\n }\n}\n\nLoginOptions.propTypes = {\n onNavigationChangeRequest: func.isRequired,\n onSalesforceLoginClick: func.isRequired,\n onGoogleLoginClick: func.isRequired,\n onFBLoginClick: func.isRequired,\n onMicrosoftLoginClick: func.isRequired,\n onAppleLoginClick: func,\n onLoginClick: func.isRequired,\n loginPredefinedEmail: string,\n preventBack: bool,\n thereSocialError: bool,\n externalErrorMessage: string,\n setExternalErrorMessage: func,\n loginButtonText: string,\n loginWelcomeText: string,\n loginDescriptionText: string,\n greetingDescription: string,\n registerMsAbTestAction: func,\n logoSource: string,\n readonlyEmail: bool,\n showJotformLogo: bool,\n showEnterpriseLogin: bool,\n hideSignUp: bool,\n isSwsoTestVariant: bool,\n forceShowBack: bool,\n initiator: string,\n ssoLoginOptions: arrayOf(shape({\n name: string,\n logoURL: string,\n configKey: string,\n idpName: string\n })),\n onSSOLoginSuccess: func,\n onSSOLoginFail: func,\n thereErrorMessage: string,\n isOnboardingFlow: bool,\n getUserSSOStatus: func,\n isOnboardingTestVariantReversed: bool\n};\n\nLoginOptions.defaultProps = {\n loginPredefinedEmail: '',\n preventBack: false,\n thereSocialError: false,\n externalErrorMessage: '',\n setExternalErrorMessage: f => f,\n loginButtonText: Texts.LOGIN_CAPITAL,\n loginWelcomeText: Texts.WELCOME_BACK,\n loginDescriptionText: '',\n onAppleLoginClick: f => f,\n greetingDescription: '',\n registerMsAbTestAction: f => f,\n logoSource: '',\n readonlyEmail: false,\n showJotformLogo: false,\n showEnterpriseLogin: false,\n hideSignUp: false,\n isSwsoTestVariant: false,\n forceShowBack: false,\n initiator: '',\n ssoLoginOptions: [],\n onSSOLoginSuccess: f => f,\n onSSOLoginFail: f => f,\n thereErrorMessage: Texts.ERROR_TRY_AGAIN,\n isOnboardingFlow: false,\n getUserSSOStatus: f => f,\n isOnboardingTestVariantReversed: false\n};\n","import React from 'react';\nimport { t } from '@jotforminc/translation';\nimport {\n string,\n arrayOf,\n shape,\n func,\n bool\n} from 'prop-types';\nimport { Texts } from '@jotforminc/constants';\nimport SSOLoginOptions from './SSOLoginOptions';\n\nconst SSOOptions = ({\n logoSource,\n loginWelcomeText,\n greetingDescription,\n loginDescriptionText,\n ssoLoginOptions,\n onSSOLoginSuccess,\n onSSOLoginFail,\n fromSACL\n}) => {\n const showLogo = !!logoSource;\n\n const trimmedLoginWelcomeText = loginWelcomeText?.trim?.();\n const trimmedGreetingDescription = greetingDescription?.trim?.();\n const trimmedLoginDescriptionText = loginDescriptionText?.trim?.();\n const descriptionText = trimmedGreetingDescription || trimmedLoginDescriptionText;\n\n return (\n
    \n {showLogo && \"Logo\"}\n {trimmedLoginWelcomeText && (

    {t(trimmedLoginWelcomeText)}

    )}\n {descriptionText && (

    {t(descriptionText)}

    )}\n
    \n
    \n {\n ssoLoginOptions.length > 0 && (\n \n )\n }\n
    \n
    \n
    \n );\n};\n\nSSOOptions.propTypes = {\n logoSource: string,\n loginWelcomeText: string,\n greetingDescription: string,\n loginDescriptionText: string,\n ssoLoginOptions: arrayOf(shape({\n name: string,\n logoURL: string,\n configKey: string,\n idpName: string\n })),\n onSSOLoginSuccess: func,\n onSSOLoginFail: func,\n fromSACL: bool\n};\n\nSSOOptions.defaultProps = {\n logoSource: '',\n loginWelcomeText: '',\n greetingDescription: Texts.WELCOME_BACK,\n loginDescriptionText: '',\n ssoLoginOptions: [],\n onSSOLoginSuccess: f => f,\n onSSOLoginFail: f => f,\n fromSACL: false\n};\n\nexport default SSOOptions;\n","import React, { Component } from 'react';\nimport { string, func, bool } from 'prop-types';\nimport Axios from 'axios';\nimport { t } from '@jotforminc/translation';\nimport { Texts } from '@jotforminc/constants';\nimport { listenEnter } from '@jotforminc/utils';\nimport cx from 'classnames';\n\nimport { IconChevronLeft } from '@jotforminc/svg-icons';\nimport BackIcon from '../temporary-duplicate/assets/svg/icon_back3.svg';\nimport ErrorAlert from './ErrorAlert';\n\nconst invalidInputText = Texts.FIELD_REQUIRED;\n\nexport default class ForgotPassword extends Component {\n constructor(props) {\n super(props);\n this.state = {\n username: '',\n usernameValid: true,\n resetErrorMessage: ''\n };\n }\n\n handleInputChange = input => e => {\n const { value } = e.target;\n this.setState({ [input]: value }, () => {\n this.validate(input);\n });\n };\n\n handleResetClick = async () => {\n const { onNavigationChangeRequest } = this.props;\n const validationResult = await this.validate('username');\n if (!validationResult) return;\n\n const result = await this.sendEmail()\n .catch(err => {\n // eslint-disable-next-line no-console\n console.error(err);\n this.setState({\n resetErrorMessage: 'An error occurred. Please try again'\n });\n });\n if (result) {\n onNavigationChangeRequest('resetSuccess');\n }\n };\n\n handleKeyDown = e => listenEnter(e, this.handleResetClick);\n\n sendEmail = () => {\n const { apiURL } = this.props;\n const { username } = this.state;\n return Axios.get(`${apiURL}/passwordreset?resetData=${encodeURIComponent(username)}`);\n };\n\n validate = input => {\n const { [input]: value } = this.state;\n this.setState({\n [`${input}Valid`]: !!value // inputs shouldn't be empty\n });\n return Promise.resolve(!!value);\n };\n\n render() {\n const { onNavigationChangeRequest, isOnboardingFlow } = this.props;\n\n const {\n username,\n usernameValid,\n resetErrorMessage\n } = this.state;\n\n const inputValid = usernameValid && !resetErrorMessage;\n return (\n
    \n {isOnboardingFlow && (\n
    \n onNavigationChangeRequest('loginOptions')} type=\"button\"\n id=\"returnLoginBox\"\n >\n \n {t(Texts.GO_BACK_TEXT)}\n \n
    \n )}\n

    {t(Texts.FORGOT_PASSWORD)}

    \n
    \n
    \n
    \n \n \n
    \n {usernameValid ? null : t(invalidInputText)}\n
    \n {resetErrorMessage && }\n
    \n \n {t(Texts.SEND_INSTRUCTIONS)}\n \n
    \n {!isOnboardingFlow && (\n onNavigationChangeRequest('loginOptions')} type=\"button\"\n id=\"returnLoginBox\"\n >\n \n {t(Texts.GO_BACK_TEXT)}\n \n )}\n
    \n
    \n );\n }\n}\n\nForgotPassword.propTypes = {\n onNavigationChangeRequest: func.isRequired,\n isOnboardingFlow: bool,\n apiURL: string.isRequired\n};\n\nForgotPassword.defaultProps = {\n isOnboardingFlow: false\n};\n","import Styled from 'styled-components';\n\nexport const ScPieTimerWrapper = Styled.div`\n display: flex;\n align-items: center;\n\n div {\n margin-right: 6px;\n html[dir=\"rtl\"] & {\n margin-right: 0;\n margin-left: 6px;\n }\n #loader {\n fill: #fff;\n }\n\n svg {\n width: 20px;\n display: block;\n border-radius: 50%;\n border: 2px solid #cfd8dc;\n }\n }\n`;\n","import React, {\n useState,\n forwardRef,\n useRef,\n useImperativeHandle,\n useEffect\n} from 'react';\nimport { func } from 'prop-types';\nimport { Hooks } from '@jotforminc/uikit';\nimport { ScPieTimerWrapper } from './sc/scPieTimer';\n\nexport const PieTimer = forwardRef(({\n startCallback,\n stopCallback\n}, ref) => {\n const [alpha, setAlpha] = useState(0);\n const [counter, setCounter] = useState(0);\n const interval = useRef(null);\n const counterRef = useRef(null);\n\n const calculateTimeInterval = (totalTime = 60) => {\n return (totalTime / 360) * 1000;\n };\n\n Hooks.useEffectIgnoreFirst(() => {\n if (counter > 0) {\n counterRef.current = setTimeout(() => setCounter(prev => prev - 1), 1000);\n return;\n }\n stopCallback();\n return () => clearInterval(interval.current);\n }, [counter]);\n\n useEffect(() => {\n if (alpha >= 359) clearInterval(interval.current);\n }, [alpha]);\n\n useImperativeHandle(ref, () => ({\n start: (duration, totalTime) => {\n startCallback();\n clearTimeout(counterRef.current);\n const initialAlpha = totalTime ? 360 - (duration / totalTime) * 360 : 0;\n setAlpha(initialAlpha);\n setCounter(Number(duration));\n clearInterval(interval.current);\n interval.current = setInterval(() => {\n setAlpha(prev => prev + 1);\n }, calculateTimeInterval(totalTime));\n },\n stop: () => {\n stopCallback();\n clearInterval(interval.current);\n clearTimeout(counterRef.current);\n }\n }));\n\n return (\n \n
    \n \n \n \n {alpha < 359 && (\n <>\n \n 180) ? 1 : 0} 1 ${Math.sin((alpha * Math.PI) / 180) * 10} ${Math.cos((alpha * Math.PI) / 180) * -10} z`}\n id=\"loader\"\n transform=\"translate(10,10)\"\n />\n \n )}\n \n
    \n

    \n {`${Math.floor(counter / 60)}`.padStart(2, '0')}\n :\n {`${counter % 60}`.padStart(2, '0')}\n

    \n
    \n );\n});\n\nPieTimer.propTypes = {\n startCallback: func,\n stopCallback: func\n};\n\nPieTimer.defaultProps = {\n startCallback: f => f,\n stopCallback: f => f\n};\n","/* eslint-disable react/prop-types */\nimport React from 'react';\nimport ReactVerificationInput from 'react-verification-input';\nimport { listenEnter } from '@jotforminc/utils';\n\nexport const VerificationInput = ({\n validChars = '0-9',\n onCodeChange,\n onEnterPress,\n characterClassName = 'character',\n inputId = 'verificationInput',\n inputType = '',\n handleKeyDown = () => {},\n inputProps = null,\n ...props\n}) => (\n {\n handleKeyDown(e);\n listenEnter(e, onEnterPress);\n },\n ...(inputType ? { inputMode: inputType } : {}),\n type: 'text',\n autoComplete: 'off',\n id: inputId,\n ...(inputProps || {})\n }}\n placeholder=''\n removeDefaultStyles\n autoFocus\n classNames={{\n container: 'container',\n character: characterClassName,\n characterInactive: 'character--inactive',\n characterSelected: 'character--selected'\n }}\n {...props}\n />\n);\n","import React from 'react';\nimport { t } from '@jotforminc/translation';\nimport {\n loadJS,\n initGoogleSignin,\n initFBSignin,\n initAppleSignin,\n randomString\n} from '@jotforminc/utils';\nimport { twoFactorTypeKeys } from '@jotforminc/constants';\n\nimport { IconMessageFilled, IconScanFilled } from '@jotforminc/svg-icons';\n\n// import SVGEmailMethod from '../assets/svg/emailMethod.svg';\n\nimport GoogleIcon from '../assets/svg/icon_gl.svg';\nimport FBIcon from '../assets/svg/icon_fb.svg';\nimport AppleIcon from '../assets/svg/icon_apple_white.svg';\n\nexport const USER_TYPES = {\n ADMIN: 'ADMIN'\n};\n\n/* eslint-disable max-len */\nexport const TEXTS = {\n ENABLE_2FA_TITLE: 'Enable Two-Factor Authentication (2FA)',\n DISABLE_2FA_TITLE: 'Disable Two-Factor Authentication (2FA)',\n TWO_FACTOR_DESCRIPTION: \"Protect your account with additional security by enabling two-factor authentication for [1[{companyName}]] logins. You'll be required to enter both your password and an authentication code to sign in.\",\n LEARN_MORE: 'Learn More',\n AUTHENTICATION_METHODS: 'Authentication Methods',\n ENABLE_AN_AUTHENTICATOR_APP: 'Enable an Authenticator App',\n PRIMARY_METHOD: 'Primary Method',\n SET_PRIMARY: 'Set as Primary',\n PHONE_NUMBER_AUTHENTICATION: 'Text Authentication',\n EMAIL_AUTHENTICATION: 'Email Authentication',\n RECOVERY_CODES: 'Recovery Codes',\n GENERATE_NEW_CODES: 'Generate new codes',\n GENERATE_RECOVERY_CODES: 'Generated Recovery Codes',\n CANT_DISABLE_PRIMARY: 'This method is primary. You can\\'t disable it.',\n CANT_ENABLE_TEXT_AUTHENTICATION: 'This method is available for paid users. Please upgrade your account to enable it.',\n CANT_DISABLE_MANDATORY: 'This method is mandatory. You can\\'t disable it.',\n SETTING_TITLE: 'Two-Factor Authentication',\n AUTHAPP_SCANQRCODE_INFO: 'This method requires you to install a third-party authenticator app (e.g., Google Authenticator, Authy, Duo).',\n LATEST_RECOVERY_CODES: 'Latest recovery codes generated: From [1[{location}]] on [2[{date}]] at [3[{time}]]',\n WAS_NOT_YOU: 'If this activity wasn\\'t you, generate new codes immediately in order to invalidate the previous ones.',\n USED_ALL: 'You have [1[used all of your recovery codes]], hence they are invalid. Please generate new ones in order to use recovery codes as a 2FA method for your Jotform logins.',\n SELECT_A_VERIFICATION_METHOD: 'Select a method to receive the authentication code',\n // SEND_A_CODE_TO_MY_PHONE_NUMBER: 'Text the authentication code to my [1[phone number]]',\n // SEND_ME_AN_EMAIL: 'Email the authentication code to my [1[email address]]',\n // SEND_ME_AN_AUTHENTICATOR_APP: 'Use an [1[Authentication app]] to receive the authentication code',\n AUTHENTICATOR_APP: 'Authenticator App',\n AUTHENTICATOR_APP_DESCRIPTION: 'Set up an authenticator app to receive verification codes from the authenticator app on your mobile device.',\n YOUR_RECOVERY_CODES: 'Your recovery codes',\n SMS_LABEL: 'Text a code',\n SMS_DESCRIPTON: 'Send the code to my mobile phone',\n EMAIL_LABEL: 'Email',\n EMAIL_DESCRIPTON: 'Send the code to my email address',\n APP_LABEL: 'Use an app',\n APP_DESCRIPTON: 'Use an authenticator app to receive the code',\n NEXT: 'NEXT',\n BACK: 'BACK',\n DOWNLOAD: 'DOWNLOAD',\n COPY: 'COPY',\n COPIED: 'COPIED',\n DONE: 'DONE',\n DISABLE: 'DISABLE',\n CANCEL: 'CANCEL',\n CLOSE: 'CLOSE',\n ENTER_YOUR_PHONE_NUMBER: 'Enter your mobile phone number',\n PLEASE_ENTER_PHONE: 'Please enter your mobile phone number to enable 2FA. [1[companyName]] will send you a six-digit verification code.',\n PHONE_INPUT_PLACEHOLDER: 'Enter phone number',\n ENTER_YOUR_VERIFICATION_CODE: 'Authenticate your [1[method]]',\n PLEASE_ENTER: {\n [twoFactorTypeKeys.sms]: \"We've sent an authentication code to [1[receiver]]. Please check your messages and enter the six-digit code to enable 2FA\"\n },\n NO_CODE: 'No code?',\n SEND_AGAIN: 'Send again',\n JOTFORM_WILL_SEND: 'A new verification code has been sent to your [1[{targetType}]].',\n TEXT_MESSAGE_ENABLED: \"You've successfully enabled 2FA.\",\n TEXT_MESSAGE_ENABLED_DESC: \"From now on, you'll be asked to enter an authentication code after your [1[companyName]] login.\",\n NEW_RECOVERY_CODES_GENERATED: 'Your new recovery codes are now generated.',\n YOUR_RECOVERY_CODES_DESC: 'Please save and secure these codes down below. You can use these codes for [1[companyName]] Logins in the event you cannot reach to your mobile phone or email address. Your previously generated codes are now invalidated.',\n ERROR_BLANK_PHONE: 'Phone number cannot be blank.',\n ERROR_BLANK_VERIFICATION_CODE: 'Code cannot be blank.',\n ERROR_INVALID_PHONE: 'Invalid phone number',\n ERROR_PASSWORD: 'Incorrect password, please try again',\n VERIFY_WITH_GOOGLE: 'Verify with Google',\n ERROR_GENERIC: 'Oops! Something went wrong',\n VERIFY_WITH_FACEBOOK: 'Verify with Facebook',\n VERIFY_WITH_APPLE: 'Verify with Apple',\n VERIFY_TO_CONFIRM: 'Verify it\\'s you to confirm',\n PASSWORD_TO_CONFIRM: 'Enter your password to confirm',\n PASSWORD_PLACEHOLDER: 'Your password',\n CONFIGURE_AUTH_APP: 'Configure the authenticator app',\n AUTH_APP_OPEN_DESCRIPTION: 'Open your authenticator app and add your [1[companyName]] account by scanning the QR code below.',\n MANUAL_KEY_CODE: 'If you can\\'t scan the QR code, manually enter the code below.',\n ENTER_THE_CODE: 'Enter the code',\n DISABLE_WARNING_MESSAGE: 'When you disable 2FA, you\\'ll need to enter only your password to sign into your [1[companyName]] account.',\n VERIFY_EMAIL_ADDRESS: 'Please verify your email address to continue',\n THE_EMAIL_ADDRESS: 'The email for your account is:',\n SENT_TO_VERIFICATION_EMAIL: 'Verification email has been sent to ',\n CHECK_YOUR_EMAIL_ADDRESS: 'Please check your inbox to verify your email address by following the instructions.',\n RESEND_VERIFICATION_EMAIL: 're-send verification email',\n EMAIL_SENT: 'email sent',\n SENDING_EMAIL: 'sending...',\n UNUSED_CODES: 'Unused Codes',\n FORCE_2FA_TOOLTIP: 'You are not allowed to disable 2FA verification. If you need any assistance, kindly get in touch with your admin.',\n\n // Force 2FA\n FORCE_2FA_TITLE: 'Configure Two-Factor Authentication (2FA) Settings',\n FORCE_2FA_DESC: 'Your system administrator has been forced to enable 2FA for you. By following the instructions below, you can configure your settings. If you need assistance, kindly get in touch with your admin.',\n FORCE_2FA_INSTALL_TITLE: 'Install a third-party authenticator app',\n FORCE_2FA_INSTALL_DESC: 'You need to download and install an authenticator app such as Google Authenticator, Authy, or Duo.',\n FORCE_2FA_SCAN_QR_CODE_TITLE: 'Scan QR code or type given code',\n FORCE_2FA_SCAN_QR_CODE_DESC: 'After opening your authenticator app, you need to scan below QR code or type given code to see your verification code.',\n FORCE_2FA_ENTER_TEXT_CODE: 'Enter text code',\n FORCE_2FA_ENTER_TEXT_CODE_DESC: 'Open the authenticator app and enter the text code below.',\n FORCE_2FA_VERIFICATION_INPUT_TITLE: 'Enter the generated code',\n FORCE_2FA_VERIFICATION_INPUT_DESC: 'Enter the generated code by authenticator app to complete your 2FA configuration.',\n SCAN_QR_CODE: 'Scan QR code',\n TYPE_THE_CODE_BELOW: 'Type the Code Below',\n VERIFY: 'Verify'\n};\n\nexport const colors = {\n blue: '#0075E3',\n green: '#007B2A',\n red: '#DD3E3E',\n navy: '#0A1551',\n grey: '#8D8FA8',\n selago: '#DDE1FA',\n blueHover: '#EDF8FF',\n white: '#FFFFFF'\n};\n\nexport const methodOptions = [\n {\n text:\n <>\n \n
    \n {t(TEXTS.SMS_LABEL)}\n
    \n ,\n description: TEXTS.SMS_DESCRIPTON,\n value: twoFactorTypeKeys.sms\n },\n // {\n // text:\n // <>\n // \n //
    \n // {t(TEXTS.EMAIL_LABEL)}\n //
    \n // ,\n // description: TEXTS.EMAIL_DESCRIPTON,\n // value: twoFactorTypeKeys.email,\n // },\n {\n text:\n <>\n \n
    \n {t(TEXTS.APP_LABEL)}\n
    \n ,\n description: TEXTS.APP_DESCRIPTON,\n value: twoFactorTypeKeys.authenticatorApp\n }\n];\n\nexport const flagURL = 'https://cdn.jotfor.ms/assets/img/v4/country-flags/{xx}.svg';\n\nexport const socialButtonConstants = {\n google: {\n color: '#0076FF',\n icon: ,\n text: TEXTS.VERIFY_WITH_GOOGLE,\n handler: ({\n successCallback = f => f,\n errorCallback = f => f\n }) => {\n const googleSignin = initGoogleSignin();\n if (googleSignin) {\n googleSignin\n .then(googleUser => {\n const { id_token: token } = googleUser.getAuthResponse();\n successCallback({ password: token, isSocialLogin: 'google' });\n })\n .catch(errorCallback);\n }\n }\n },\n facebook: {\n color: '#3C5A99',\n icon: ,\n text: TEXTS.VERIFY_WITH_FACEBOOK,\n handler: ({\n successCallback = f => f,\n errorCallback = f => f\n }) => {\n const fbLogin = initFBSignin();\n if (!fbLogin) return;\n fbLogin(({ status, authResponse }) => {\n if (status === 'connected' && authResponse) {\n successCallback({ password: authResponse.accessToken, isSocialLogin: 'facebook' });\n } else {\n // TODO: handle error\n errorCallback();\n }\n }, { scope: 'public_profile,email' });\n }\n },\n apple: {\n color: '#000',\n icon: ,\n text: TEXTS.VERIFY_WITH_APPLE,\n handler: ({\n successCallback = f => f,\n errorCallback = f => f\n }) => {\n const nonce = randomString(32);\n const appleSignin = initAppleSignin(nonce);\n if (appleSignin) {\n appleSignin.then(({\n user: {\n name: {\n firstName = '',\n lastName = ''\n } = {}\n } = {},\n authorization: {\n code,\n id_token: idToken\n }\n }) => {\n successCallback({\n password: {\n authorizationCode: code,\n identityToken: idToken,\n realNonce: nonce,\n name: `${firstName} ${lastName}`\n },\n isSocialLogin: 'apple'\n });\n }).catch(() => {\n // TODO: handle errors if necessary\n errorCallback();\n });\n }\n }\n }\n};\n\nexport const socialLoginScripts = {\n facebook: () => loadJS('facebook-jssdk', 'https://connect.facebook.net/en_US/sdk.js'),\n google: () => loadJS('google-jssdk-new', 'https://accounts.google.com/gsi/client'),\n apple: () => loadJS('apple-jssdk', 'https://appleid.cdn-apple.com/appleauth/static/jsapi/appleid/1/en_US/appleid.auth.js')\n};\n","/* eslint-disable max-len */\n// import React from 'react';\nimport {\n string, bool, number, oneOf\n} from 'prop-types';\nimport styled, { css, keyframes } from 'styled-components';\nimport {\n darken, lighten, rgba\n} from 'polished';\nimport { OptionGroup } from '@jotforminc/option-group';\nimport { colors } from '../helpers/constants';\n\nconst onMobile = '@media (max-width: 480px)';\n\nexport const ButtonUnstyled = styled.button` && {\n border: none;\n background-repeat: no-repeat;\n background-position: center;\n cursor: pointer;\n\n &,\n &:focus,\n &:hover {\n background-color: transparent;\n }\n}`;\n\nexport const MethodList = styled(OptionGroup)`\n padding: 0;\n color: ${colors.navy};\n\n li {\n & + li {\n margin: 0;\n }\n\n > div {\n padding: 14px 12px;\n // margin-left: -8px; // to align radio with text\n border: 1px solid transparent;\n font-size: 14px;\n\n ${onMobile} {\n padding: 14px 6px;\n }\n\n &[data-selected=true] {\n border-color: #4573E3;\n border-radius: 4px;\n background-color: ${rgba('#E9EEFF', 0.4)};\n }\n }\n }\n\n .o-wrapper {\n position: relative;\n padding-left: 102px;\n height: 50px;\n margin-left: -6px;\n display: flex;\n justify-content: center;\n flex-direction: column;\n\n ${onMobile} {\n padding-left: 51px;\n }\n\n html[dir=\"rtl\"] & {\n padding-left: 0;\n padding-right: 102px;\n\n ${onMobile} {\n padding-right: 51px;\n }\n }\n\n .o-label,\n .o-desc {\n line-height: 1.4;\n }\n\n .o-label {\n font-size: 18px;\n font-weight: 700;\n\n ${onMobile} {\n font-size: 15px;\n }\n\n svg {\n position: absolute;\n left: 12px;\n top: 50%;\n transform: translateY(-50%);\n max-height: 40px;\n max-width: 50px;\n width: 100%;\n height: 100%;\n\n ${onMobile} {\n left: 6px;\n max-height: 20px;\n max-width: 20px;\n }\n\n html[dir=\"rtl\"] & {\n left: unset;\n right: 12px;\n\n ${onMobile} {\n right: 6px;\n }\n }\n }\n }\n\n .o-desc {\n font-size: 15px;\n font-weight: 400;\n\n ${onMobile} {\n font-size: 13px;\n }\n }\n }\n`;\n\nconst rotate = initial => keyframes`\n from {\n transform: ${initial} rotate(0deg);\n }\n\n to {\n transform: ${initial} rotate(360deg);\n }\n`;\n\nexport const TextCode = styled.input`\n height: 38px;\n font-size: 15px;\n text-align: center;\n border: 1px solid #C9C8C9;\n border-radius: 4px;\n margin-top: 8px;\n\n ${onMobile} {\n font-size: 13px;\n }\n`;\n\nexport const QRCodeWrapper = styled.div`\n height: 124px;\n width: 124px;\n flex-shrink: 0;\n\n svg {\n display: block;\n height: 100%;\n width: 100%;\n opacity: 1;\n transition: opacity 333ms cubic-bezier(.55,.06,.68,.19);\n }\n\n ${({ color, loading }) => (loading ? css`\n position: relative;\n cursor: wait;\n\n svg {\n opacity: 0;\n pointer-events: none;\n\n &,\n &::before {\n font-size: 0;\n color: transparent;\n }\n }\n\n &::after {\n content: '' !important;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 16px;\n height: 16px;\n background-image: url(\"data:image/svg+xml,%3Csvg width='16' height='16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='8' cy='8' r='7.25' stroke='${encodeURIComponent(color)}' stroke-opacity='.5' stroke-width='1.5'/%3E%3Cmask id='a' maskUnits='userSpaceOnUse' x='0' y='0' width='16' height='16'%3E%3Cpath d='M8.27429 7.38462V0H0v16h16V8.53333h-2.6667L8.27429 7.38462z' fill='%23C4C4C4'/%3E%3C/mask%3E%3Cg mask='url(%23a)'%3E%3Ccircle cx='8' cy='8' r='7.25' stroke='${encodeURIComponent(color)}' stroke-width='1.5'/%3E%3C/g%3E%3C/svg%3E\");\n background-repeat: no-repeat;\n background-position: center;\n animation: ${rotate(css`translate(-50%,-50%)`)} 1.5s linear infinite;\n pointer-events: none;\n z-index: 1;\n }\n ` : null)}\n`;\n\nQRCodeWrapper.propTypes = {\n color: string,\n loaded: bool\n};\n\nQRCodeWrapper.defaultProps = {\n color: '#4277FF',\n loaded: true\n};\n\nexport const Image = styled.div`\n margin-top: 10px;\n margin-bottom: 12px;\n`;\n\nexport const Text = styled.div`\n text-align: ${({ align }) => align};\n\n &:empty {\n display: none;\n }\n\n a {\n text-decoration: none;\n }\n\n &,\n d { color: ${colors.navy} };\n a,\n hl {\n &:not([color]) { color: ${colors.blue}; }\n &[color='green'] { color: ${colors.green}; }\n &[color='red'] { color: ${colors.red}; }\n }\n b { font-weight: 500; }\n b2 { font-weight: 700; }\n\n section {\n margin-top: 0;\n margin-bottom: 8px;\n display: flex;\n flex-direction: column;\n\n html[dir=\"rtl\"] & {\n text-align: right;\n }\n\n }\n\n p {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 8px;\n }\n\n`;\n\nText.defaultProps = {\n align: 'left'\n};\n\nexport const Heading = styled(Text)`\n font-size: 18px;\n font-weight: 500;\n line-height: 25px;\n color: ${colors.navy};\n margin-bottom: 20px;\n`;\n\nexport const Description = styled(Text)`\n color: #8D8FA8;\n font-size: 14px;\n font-weight: 400;\n line-height: 20px;\n display: flex;\n flex-direction: column;\n align-items: center;\n`;\n\nexport const Button = styled.button` && {\n position: relative;\n height: ${({ height }) => height}px;\n padding: 0 ${({ type }) => (['naked'].includes(type) ? 0 : 24)}px;\n display: inline-flex;\n justify-content: center;\n align-items: center;\n text-transform: ${({ letterCase }) => letterCase};\n user-select: none;\n transition-duration: 300ms;\n transition-property: color, background-color, border-color;\n transition-timing-function: ease-in-out;\n\n border-width: 1px;\n border-radius: 4px;\n border-style: solid;\n\n ${onMobile} {\n padding: 0 12px;\n }\n\n &,\n &:hover {\n border-color: ${({ type, color }) => (['naked'].includes(type) ? 'transparent' : color)};\n background-color: ${({ type, color }) => (['stroke', 'naked'].includes(type) ? 'transparent' : color)};\n background-clip: padding-box;\n }\n\n color: ${({ type, color, foregroundColor }) => (['stroke', 'naked'].includes(type) ? color : foregroundColor)};\n\n font-weight: 500;\n font-size: ${({ fontSize }) => fontSize}px;\n\n svg {\n max-height: 20px;\n width: 16px;\n height: 16px;\n margin-right: 8px;\n margin-left: -${({ type }) => (['naked'].includes(type) ? 0 : 12)}px;\n\n html[dir=\"rtl\"] & {\n margin-right: -${({ type }) => (['naked'].includes(type) ? 0 : 12)}px;\n margin-left: 10px;\n }\n\n ${onMobile} {\n max-height: 16px;\n width: 16px;\n margin-left: -${({ type }) => (['naked'].includes(type) ? 0 : 6)}px;\n margin-right: 5px;\n\n html[dir=\"rtl\"] & {\n margin-left: 5px;\n margin-right: -${({ type }) => (['naked'].includes(type) ? 0 : 6)}px;\n }\n }\n }\n\n ${({ onClick }) => (onClick ? css`\n cursor: pointer;\n\n &:hover {\n color: ${({ type, color, foregroundColor }) => lighten(0.05, (['stroke', 'naked'].includes(type) ? color : foregroundColor))};\n border-color: ${({ type, color }) => (['naked'].includes(type) ? 'transparent' : lighten(0.05, color))};\n background-color: ${({ type, color }) => (['stroke', 'naked'].includes(type) ? 'transparent' : lighten(0.05, color))};\n }\n\n &:focus {\n color: ${({ type, color, foregroundColor }) => darken(0.05, (['stroke', 'naked'].includes(type) ? color : foregroundColor))};\n border-color: ${({ type, color }) => (['naked'].includes(type) ? 'transparent' : darken(0.05, color))};\n background-color: ${({ type, color }) => (['stroke', 'naked'].includes(type) ? 'transparent' : darken(0.05, color))};\n }\n ` : null)}\n\n ${({\n loading, type, color, foregroundColor\n }) => (loading ? css`\n color: transparent !important;\n transition-duration: 0ms !important;\n cursor: wait;\n\n &::before {\n content: '';\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 16px;\n height: 16px;\n background-image: url(\"data:image/svg+xml,%3Csvg width='16' height='16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='8' cy='8' r='7.25' stroke='${encodeURIComponent(['stroke', 'naked'].includes(type) ? color : foregroundColor)}' stroke-opacity='.5' stroke-width='1.5'/%3E%3Cmask id='a' maskUnits='userSpaceOnUse' x='0' y='0' width='16' height='16'%3E%3Cpath d='M8.27429 7.38462V0H0v16h16V8.53333h-2.6667L8.27429 7.38462z' fill='%23C4C4C4'/%3E%3C/mask%3E%3Cg mask='url(%23a)'%3E%3Ccircle cx='8' cy='8' r='7.25' stroke='${encodeURIComponent(['stroke', 'naked'].includes(type) ? color : foregroundColor)}' stroke-width='1.5'/%3E%3C/g%3E%3C/svg%3E\");\n background-repeat: no-repeat;\n background-position: center;\n animation: ${rotate(css`translate(-50%,-50%)`)} 1.5s linear infinite;\n pointer-events: none;\n z-index: 1;\n }\n ` : null)}\n}`;\n\nButton.propTypes = {\n color: string,\n foregroundColor: string,\n height: number,\n fontSize: number,\n letterCase: oneOf(['none', 'lowercase', 'uppercase', 'capitalize']),\n type: oneOf(['stroke', 'naked'])\n};\n\nButton.defaultProps = {\n color: '#0099FF',\n foregroundColor: '#ffffff',\n height: 36,\n fontSize: 14,\n letterCase: 'uppercase',\n type: null\n};\n\nexport const Body = styled.div`\n display: flex;\n flex-direction: column;\n align-items: ${({ align }) => align};\n justify-content: center;\n padding: 16px ${({ wide }) => (wide ? 64 : 32)}px 26px;\n\n ${onMobile} {\n padding-left: 16px;\n padding-right: 16px;\n }\n\n`;\n\nBody.defaultProps = {\n align: 'stretch',\n wide: null\n};\n\nexport const Footer = styled.div`\n display: flex;\n justify-content: ${({ align }) => align};\n flex-direction: ${({ reverse }) => (reverse ? 'row-reverse' : 'row')};\n padding: 12px 32px;\n border-top: 1px solid #EAEBF2;\n align-self: stretch;\n\n ${onMobile} {\n padding-left: 16px;\n padding-right: 16px;\n }\n`;\n\nFooter.propsTypes = {\n align: string,\n reverse: bool\n};\n\nFooter.defaultProps = {\n align: 'space-between',\n reverse: false\n};\n\nexport const Container = styled.div`\n font-family: 'Circular', sans-serif;\n font-size: 15px;\n line-height: 24px;\n display: flex;\n flex-direction: column;\n\n ${({ center }) => (center ? css`\n align-items: center;\n justify-content: center;\n ` : null)}\n\n flex: 1;\n height: 100%;\n width: 100%;\n // max-width: 510px;\n\n ${Body} {\n // margin: auto 0;\n }\n\n ${Footer} {\n margin-top: auto;\n }\n`;\n\nconst MessageContaiener = styled.div`\n font-family: 'Circular', sans-serif;\n font-size: 11px;\n line-height: 1.28;\n display: flex;\n flex-direction: column;\n background-color: ${colors.grey};\n color: #fff;\n border-radius: 4px;\n background-size: 12px;\n background-position: 6px;\n text-align: left;\n background-repeat: no-repeat;\n padding: 5px 5px 5px 24px;\n background-image: url(\"data:image/svg+xml,%3Csvg width='12' height='12' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M10.1683 1.6843a6.0016 6.0016 0 011.8315 4.2636 6.0002 6.0002 0 01-8.368 5.565 6.0001 6.0001 0 116.5365-9.8286zm-3.642 3.642v-2.4h-1.2v3.6h1.2v-1.2zm0 3.6v-1.2h-1.2v1.2h1.2z' fill='%23fff'/%3E%3C/svg%3E\");\n flex: 1;\n height: 100%;\n width: 100%;\n // max-width: 510px;\n`;\n\nexport const ErrorContainer = styled(MessageContaiener)`\n background-color: ${colors.red};\n`;\n\nexport const InfoContainer = styled(MessageContaiener)`\n background-color: ${colors.blue};\n`;\n","/* eslint-disable max-len */\nimport React from 'react';\nimport { number } from 'prop-types';\nimport styled, { css } from 'styled-components';\nimport { Button } from '@jotforminc/common-button';\nimport { StyledModal as Modal } from '@jotforminc/styled-modal';\nimport Toggle from '@jotforminc/toggle';\nimport { Tooltip } from '@jotforminc/tooltip';\n\nimport { Button as ButtonSC } from '../components/styled';\n\nconst borderColor = '#E3E5F5';\nconst descColor = '#2C3345';\nconst primaryIndicatorColor = '#8A94A9';\nconst black = '#000';\nconst settingsBlue = '#0099FF';\nconst infoBlueTextBg = '#F4F7FF';\nconst infoBlueTextColor = '#001D68';\nconst infoOrange = '#F5A51C';\nconst infoOrangeTextBg = '#FFF5D2';\nconst infoOrangeTextColor = '#0A1551';\n\nexport const ScSettingsWrapper = styled.div`\n display: flex;\n flex-direction: column;\n width: 100%;\n box-sizing: border-box;\n\n *, *::before, *::after {\n font-family: 'Circular', sans-serif;\n box-sizing: inherit;\n\n }\n`;\n\nexport const ScTooltip = styled.div`\n pointer-events: none;\n opacity: 0;\n max-width: 145px;\n background-color: #444;\n color: #fff;\n font-size: 12px;\n border-radius: 2px;\n position: absolute;\n padding: 6px 12px;\n top: 25px;\n left: -4px;\n transform: translateY(5px);\n transition: .4s;\n transition-delay: 250ms;\n z-index: 9;\n\n html[dir=\"rtl\"] & {\n left: unset;\n right: -4px;\n }\n\n :after {\n content: \"\";\n position: absolute;\n top: 0;\n left: 6px;\n transform: translateY(-100%);\n border-width: 8px;\n border-style: solid;\n border-color: transparent transparent #444 transparent;\n\n html[dir=\"rtl\"] & {\n left: unset;\n right: 6px;\n }\n }\n`;\n\nexport const ScToggleWrapper = styled.div`\n display: flex;\n flex-wrap: wrap;\n justify-content: space-between;\n width: 100%;\n align-items: center;\n padding-bottom: 20px;\n gap: 16px;\n\n\n p {\n flex-grow: 1;\n flex-basis: 60%;\n margin: 0 0 2px;\n max-width: 460px;\n color: ${descColor};\n font-size: 14px;\n text-align: left;\n\n html[dir=\"rtl\"] & {\n text-align: right;\n }\n a {\n color: #0075E3;\n text-decoration: underline;\n }\n }\n\n div {\n flex-shrink: 0;\n }\n\n span {\n width: 100%;\n font-size: 14px;\n }\n`;\n\nexport const ScTooltipV2Wrapper = styled.div`\n position: relative;\n`;\n\nexport const ScTooltipV2 = styled(props => )`\n width: 190px;\n text-align: center;\n \n &.jfTooltipNew {\n &.tooltipAttachTop {\n left: unset;\n }\n }\n [dir='rtl'] & {\n right: -210px;\n }\n @media screen and (max-width: 640px) {\n right: -100px;\n }\n`;\n\nexport const ScToggle = styled(props => )`\n &:hover {\n opacity: 1;\n }\n`;\n\nexport const ScMethodsWrapper = styled.div`\n display: flex;\n flex-direction: column;\n\n h4 {\n color: ${black};\n font-size: 14px;\n margin: 12px 0 0 0;\n font-weight: 500;\n border-bottom: 1px solid ${borderColor};\n padding: 0 0 7px 0;\n }\n`;\n\nexport const ScMethodButton = styled(ButtonSC)` && {\n &,\n &:hover {\n display: block;\n padding: 0 8px;\n min-width: 84px;\n \n ${({ isGenerateNewCodesButton }) => (isGenerateNewCodesButton ? css`\n @media screen and (max-width: 500px) { & {\n width: 100%;\n } }\n ` : null)}\n\n ${({ isPrimary, loading }) => (isPrimary && !loading ? css`\n &,\n &[disabled],\n &:disabled {\n cursor: default;\n ` : null)}\n }\n}\n}`;\n\nScMethodButton.propTypes = ButtonSC.propTypes;\nScMethodButton.defaultProps = ButtonSC.defaultProps;\n\nexport const ScMethodItem = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: center;\n border-bottom: 1px solid ${borderColor};\n\n div {\n display: flex;\n justify-content: flex-start;\n flex-direction: row;\n align-items: center;\n margin: 8px 0px 8px 0px;\n width: 100%;\n\n label {\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n align-items: flex-start;\n flex-grow: 1;\n flex-basis: 50%;\n position: relative;\n\n input {\n position: relative;\n margin-left: 4px;\n margin-right: 8px;\n height: 16px;\n width: 16px;\n\n html[dir=\"rtl\"] & {\n margin-right: 4px;\n margin-left: 8px;\n }\n\n &:hover + ${ScTooltip} {\n opacity: 100;\n }\n }\n\n span {\n font-size: 12px;\n font-weight: 500;\n }\n\n & + p {\n font-size: 11px;\n margin: 0;\n color: ${primaryIndicatorColor};\n }\n }\n }\n`;\n\nexport const ScMethodTextWrapper = styled.div`\n display: flex;\n flex-direction: column;\n\n span {\n font-family: 'Circular';\n font-style: normal;\n line-height: 24px;\n }\n`;\n\nexport const ScMethodItemTitle = styled.span`\n font-weight: 700 !important;\n font-size: 16px !important;\n`;\n\nexport const ScMethodItemDesc = styled.span`\n font-weight: 400 !important;\n font-size: 14px !important;\n color: #6C73A8;\n`;\n\nexport const ScRecoveryCodesWrapper = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: baseline;\n padding-top: 6px;\n margin: 10px 0 0 0;\n\n @media screen and (max-width: 500px) { & {\n flex-direction: column;\n } }\n\n div {\n display: flex;\n justify-content: flex-start;\n align-items: center;\n gap: 12px;\n \n @media screen and (max-width: 500px) { & {\n margin-bottom: 8px;\n } }\n }\n\n span {\n border-width: 1px;\n }\n\n h4 {\n color: ${black};\n font-size: 14px;\n margin: 0 12px 0 0;\n font-weight: 500;\n }\n`;\n\nexport const ScInfoBox = styled.div`\n display: flex;\n flex-wrap: nowrap;\n align-items: stretch;\n width: 100%;\n border-radius: 4px;\n\n &:not(:first-child) {\n margin-top: 13px;\n }\n\n overflow: hidden;\n\n > div {\n position: relative;\n background: ${props => (props.mode === 'warning' ? infoOrange : settingsBlue)};\n width: 49px;\n\n svg {\n fill: white;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 24px;\n height: 24px;\n }\n\n & + div {\n display: flex;\n flex: 1;\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n padding: 15px 12px;\n font-size: ${({ fontSize }) => fontSize}px;\n background: ${props => (props.mode === 'warning' ? infoOrangeTextBg : infoBlueTextBg)};\n color: ${props => (props.mode === 'warning' ? infoOrangeTextColor : infoBlueTextColor)};\n\n p {\n margin: 0;\n font-family: 'Circular';\n font-style: normal;\n font-weight: 400;\n font-size: 14px;\n line-height: 24px;\n }\n }\n }\n`;\n\nScInfoBox.defaultProps = {\n fontSize: 12\n};\n\nScInfoBox.propTypes = {\n fontSize: number\n};\n\nexport const ScModal = styled(props => )``;\n\nexport const ScButton = styled(props => \n {showRememberDeviceSection && (\n
    \n setRememberDevice(checked)}\n />\n setRememberDevice(currVal => setRememberDevice(!currVal))} onKeyDown={() => {}}>\n {t(\"Don't ask again on this device.\")}\n \n
    \n )}\n {!isPassiveTFAMethod && (\n
    \n setTimerRunning(true)}\n stopCallback={() => setTimerRunning(false)}\n ref={timerRef}\n />\n

    \n {t(Texts.NO_CODE)}\n handleLogin({ isSocialTFA })}\n disabled={timerRunning ? 'disabled' : ''}\n >\n {t(Texts.SEND_AGAIN)}\n \n

    \n
    \n )}\n
    \n
    \n \n {t(Texts.HAVING_PROBLEMS)}\n \n onNavigationChangeRequest('twoFactorMethods')}\n >\n {t(Texts.SEE_OTHER_AUTHENTICATION_METHODS)}\n \n
    \n
    \n
    \n
    \n );\n};\n\nTwoFactorLogin.propTypes = {\n onNavigationChangeRequest: func.isRequired,\n handleTFALogin: func.isRequired,\n lastTFAResponse: shape({\n token: shape({\n type: string,\n target: string,\n remaining_time: string,\n total_time: number,\n expires_at: number,\n isForced: bool,\n username: string\n }),\n showRememberDevice: bool\n }).isRequired,\n thereSocialError: string,\n thereErrorMessage: string,\n tfaMethod: string.isRequired,\n isSocialTFA: bool.isRequired\n};\n\nTwoFactorLogin.defaultProps = {\n thereSocialError: '',\n thereErrorMessage: ''\n};\n\nexport default TwoFactorLogin;\n","import React, { useState, useRef, useEffect } from 'react';\nimport {\n shape, bool, string, func, number\n} from 'prop-types';\nimport { t, translationRenderer } from '@jotforminc/translation';\nimport { Texts } from '@jotforminc/constants';\nimport { useTimeoutMessage } from '@jotforminc/hooks';\nimport { PieTimer } from '@jotforminc/pie-timer';\nimport { VerificationInput } from '@jotforminc/verification-input';\nimport { ErrorContainer, InfoBox } from '@jotforminc/two-factor-settings';\n\nconst EmailAuthLogin = ({\n handleEALogin,\n lastEAResponse: {\n emailAuthToken: {\n target,\n remaining_time: remainingTime,\n total_time: totalTime,\n expires_at: expiresAt,\n isForced\n }\n },\n thereSocialError,\n thereErrorMessage,\n isSocialEA\n}) => {\n const [verificationCode, setVerificationCode] = useState('');\n const [timerRunning, setTimerRunning] = useState('');\n const [errorMessage, setErrorMessage] = useTimeoutMessage(false, 5000);\n const timerRef = useRef(null);\n\n useEffect(() => {\n if (typeof window.__accountSharingLogger === 'function') {\n window.__accountSharingLogger({ action: 'seen', target: 'emailAuthLogin' });\n }\n }, []);\n\n useEffect(() => {\n const handleTabChange = () => {\n if (document.visibilityState === 'visible') {\n const remainingTimeAfterTabChange = expiresAt - Math.floor(Date.now() / 1000);\n\n if (remainingTimeAfterTabChange > 0) {\n timerRef.current.start(remainingTimeAfterTabChange, totalTime);\n } else {\n timerRef.current.start(0, totalTime);\n timerRef.current.stop();\n }\n\n console.log('tab active');\n console.log('remainingTimeAfterTabChange', remainingTimeAfterTabChange);\n } else {\n timerRef.current.stop();\n console.log('tab inactive');\n }\n };\n\n document.addEventListener('visibilitychange', handleTabChange);\n return () => {\n document.removeEventListener('visibilitychange', handleTabChange);\n };\n }, [expiresAt]);\n\n useEffect(() => {\n timerRef.current.stop();\n timerRef.current.start(remainingTime, totalTime);\n\n return () => timerRef.current && timerRef.current.stop();\n }, [expiresAt]);\n\n const handleLogin = async args => {\n const { verificationCode: code = false } = args;\n\n if (typeof code === 'string' && code.length === 0) {\n setErrorMessage(t(Texts.BLANK_VERIFICATION_CODE));\n return;\n }\n\n if (code.length < 6) {\n setErrorMessage('');\n return;\n }\n\n try {\n const response = await handleEALogin(args);\n const { data: { error } } = response?.[0];\n if (error) {\n setErrorMessage(t(error));\n }\n } catch (e) {\n // TO DO handleError;\n }\n };\n\n return (\n
    \n

    {t(Texts.EMAIL_AUTHENTICATION)}

    \n {isForced && (\n
    \n \n

    \n {t(Texts.REACH_DAILY_LIMIT_FORCE_TO_EMAIL)}\n

    \n
    \n
    \n )}\n
    \n {translationRenderer(Texts.EMAIL_AUTHENTICATION_DESCRIPTION)({\n renderer1: () => {target}\n })}\n
    \n
    \n
    \n
    \n \n { errorMessage && (\n {errorMessage}\n )}\n {thereSocialError && (\n {thereErrorMessage.response.data.error}\n )}\n
    \n {\n handleLogin({ verificationCode, isSocialEA });\n if (typeof window.__accountSharingLogger === 'function') {\n window.__accountSharingLogger({ action: 'click', target: 'verifyButton' });\n }\n }}\n type=\"button\"\n >\n {t(Texts.VERIFY)}\n \n\n
    \n setTimerRunning(true)}\n stopCallback={() => setTimerRunning(false)}\n ref={timerRef}\n />\n

    \n {t(Texts.NO_CODE)}\n {\n handleLogin({ isSocialEA });\n if (typeof window.__accountSharingLogger === 'function') {\n window.__accountSharingLogger({ action: 'click', target: 'sendAgainButton' });\n }\n }}\n disabled={timerRunning ? 'disabled' : ''}\n >\n {t(Texts.SEND_AGAIN)}\n \n

    \n
    \n
    \n
    \n
    \n );\n};\n\nEmailAuthLogin.propTypes = {\n handleEALogin: func.isRequired,\n lastEAResponse: shape({\n emailAuthToken: shape({\n type: string,\n target: string,\n remaining_time: string,\n total_time: number,\n expires_at: number,\n isForced: bool\n })\n }).isRequired,\n thereSocialError: string,\n thereErrorMessage: string,\n isSocialEA: bool.isRequired\n};\n\nEmailAuthLogin.defaultProps = {\n thereSocialError: '',\n thereErrorMessage: ''\n};\n\nexport default EmailAuthLogin;\n","import React from 'react';\nimport {\n shape, bool, string, func\n} from 'prop-types';\nimport { t, translationRenderer } from '@jotforminc/translation';\nimport { Texts, twoFactorTypeKeys } from '@jotforminc/constants';\nimport { useTimeoutMessage } from '@jotforminc/hooks';\nimport { ErrorContainer } from '@jotforminc/two-factor-settings';\nimport {\n IconMessageFilled, IconKeyFilled, IconScanFilled, IconChevronLeft\n} from '@jotforminc/svg-icons';\nimport { isEnterprise } from '@jotforminc/enterprise-utils';\n\nconst TwoFactorMethods = ({\n handleTFALogin,\n lastTFAResponse: {\n token: {\n type\n },\n activeMethods\n },\n isSocialTFA,\n onNavigationChangeRequest\n}) => {\n const hasRecoveryMail = false;\n\n const typeMap = {\n phone: {\n typeCode: twoFactorTypeKeys.sms,\n icon: () => \n },\n totp: {\n typeCode: twoFactorTypeKeys.authenticatorApp,\n icon: () => \n }\n };\n\n const [errorMessage, setErrorMessage] = useTimeoutMessage(false);\n const handleLogin = async args => {\n try {\n const response = await handleTFALogin(args);\n const { error } = response[0]?.data;\n if (error) setErrorMessage(\"Login failed - You've reached the daily token request limit.\");\n } catch (e) {\n // TO DO handleError;\n }\n };\n\n const handleAccountRecoveryButton = () => {\n if (hasRecoveryMail) {\n onNavigationChangeRequest('accountRecoveryViewTicket');\n } else {\n onNavigationChangeRequest('recoverAccountPage');\n }\n };\n\n return (\n
    \n

    {t(Texts.VERIFY_ITS_YOU)}

    \n
    \n {t(Texts.CHOOSE_A_METHOD_DESCRIPTION)}\n
    \n
    \n
    \n
    \n {t(Texts.CHOOSE_A_METHOD)}\n
    \n
    \n {Object.entries(activeMethods).filter(([methodType]) => typeMap[methodType]?.typeCode !== type).map(([methodType, { data: target }]) => {\n const {\n typeCode,\n icon: Icon\n } = typeMap[methodType];\n\n return (\n handleLogin({ newType: typeCode, isSocialTFA, shouldNavigate: true })}\n type=\"button\"\n >\n \n \n { translationRenderer(Texts.SEND_CODE_TO[typeCode])({\n renderer1: () => {target}\n })}\n \n \n );\n })}\n handleTFALogin({ newType: 'recovery' })}\n type=\"button\"\n >\n \n \n {t(Texts.USE_YOUR_RECOVERY_CODES)}\n \n \n
    \n { errorMessage && (\n {t(errorMessage)}\n )}\n handleTFALogin({ newType: type, isSocialTFA })}\n >\n \n {t(Texts.BACK_TO_PRIMARY_METHOD)}\n \n
    \n {!isEnterprise() && (\n \n {t(Texts.CAN_NOT_ACCESS_MY_DEVICE)}\n \n )}\n
    \n
    \n
    \n );\n};\n\nTwoFactorMethods.propTypes = {\n handleTFALogin: func.isRequired,\n lastTFAResponse: shape({\n type: string.isRequired,\n activeMethods: shape({}).isRequired,\n token: shape({\n type: string.isRequired\n }).isRequired\n }).isRequired,\n isSocialTFA: bool.isRequired,\n onNavigationChangeRequest: func\n};\n\nTwoFactorMethods.defaultProps = {\n onNavigationChangeRequest: f => f\n};\n\nexport default TwoFactorMethods;\n","import React, { useEffect } from 'react';\nimport { shape, string, func } from 'prop-types';\nimport { Loading } from '@jotforminc/loading';\n\nconst SocialInit = ({\n socialInitData: {\n type,\n token,\n response = {}\n },\n socialLoginRequest,\n handle2FASocialLoginRequest,\n handleSocialEAResponse\n}) => {\n useEffect(() => {\n const { primaryMethod = '' } = response;\n if (primaryMethod && !response?.emailAuthToken) {\n handle2FASocialLoginRequest(response);\n } else if (response?.emailAuthToken) {\n handleSocialEAResponse(response, type);\n } else {\n socialLoginRequest(type, token);\n }\n }, []);\n\n return (\n
    \n \n
    \n );\n};\n\nSocialInit.propTypes = {\n socialInitData: shape({\n type: string.isRequired,\n token: string.isRequired,\n response: shape({}).isRequired\n }).isRequired,\n socialLoginRequest: func.isRequired,\n handle2FASocialLoginRequest: func,\n handleSocialEAResponse: func\n};\n\nSocialInit.defaultProps = {\n handle2FASocialLoginRequest: f => f,\n handleSocialEAResponse: f => f\n};\n\nexport default SocialInit;\n","export default class LoginError extends Error {\n constructor(errorType, loginType, message, originalError) {\n super();\n this.type = errorType; // Error errorType: network, jsonParse etc.\n this.loginType = loginType; // user|formUser\n this.message = message;\n this.originalError = originalError;\n }\n}\n","import React from 'react';\nimport { func, string } from 'prop-types';\n\nimport { Texts } from '@jotforminc/constants';\nimport { t, translationRenderer } from '@jotforminc/translation';\n\nimport { IconTrashExclamationFilled } from '@jotforminc/svg-icons';\n\nconst DeleteAccountModalStep1 = ({ handleStep, username }) => {\n return (\n
    \n
    \n
    \n
    \n \n
    \n
    \n

    {t(Texts.ARE_YOU_SURE_YOU_WANT_TO_DELETE_YOUR_ACCOUNT)}

    \n

    \n {' '}\n {t(Texts.YOU_ARE_ABOUT_TO_DELETE_YOUR_ACCOUNT_NAMELY)}\n {' '}\n {username}\n

    \n

    \n {translationRenderer(Texts.GET_IN_TOUCH_WITH_US)({\n renderer1: text => (\n {text}\n )\n })}\n

    \n
    \n
    \n \n \n
    \n
    \n );\n};\n\nDeleteAccountModalStep1.propTypes = {\n handleStep: func.isRequired,\n username: string.isRequired\n};\n\nexport default DeleteAccountModalStep1;\n","import React from 'react';\nimport {\n array, func, object\n} from 'prop-types';\n\nimport { t } from '@jotforminc/translation';\n\nimport AppleIcon from '../../assets/icon_ap_36.svg';\nimport FacebookIcon from '../../assets/icon_fb_36.svg';\nimport GoogleIcon from '../../assets/icon_gl_36.svg';\nimport MicrosoftIcon from '../../assets/icon_ms_36.svg';\nimport SalesforceIcon from '../../assets/icon_sf_36.svg';\n\nimport GoogleButton from '../GoogleButton';\nimport FacebookButton from '../FacebookButton';\nimport MicrosoftButton from '../MicrosoftButton';\nimport AppleButton from '../AppleButton';\nimport SalesforceButton from '../SalesforceButton';\n\nconst icons = {\n apple: AppleIcon,\n facebook: FacebookIcon,\n google: GoogleIcon,\n microsoft: MicrosoftIcon,\n salesforce: SalesforceIcon\n};\nconst buttons = {\n apple: AppleButton,\n facebook: FacebookButton,\n google: GoogleButton,\n microsoft: MicrosoftButton,\n salesforce: SalesforceButton\n};\n\nconst SocialsContainer = ({\n socialLogins,\n onAppleLoginClick,\n onFBLoginClick,\n onGoogleLoginClick,\n onMicrosoftLoginClick,\n onSalesforceLoginClick,\n user\n}) => {\n const callbacks = {\n apple: onAppleLoginClick,\n facebook: onFBLoginClick,\n google: onGoogleLoginClick,\n microsoft: onMicrosoftLoginClick,\n salesforce: onSalesforceLoginClick\n };\n\n const connectedAccounts = socialLogins.map(login => (Object.hasOwn(buttons, login) ? {\n Component: buttons[login], Icon: icons[login], callback: callbacks[login], key: login\n } : null));\n\n const { username, email, avatarUrl } = user.credentials;\n\n return (\n
    \n {connectedAccounts.map(({\n Component, Icon, callback, key\n }) => (\n
    \n
    \n \n
    \n

    {username}

    \n

    {email}

    \n
    \n
    \n }\n onClick={callback}\n key={key}\n />\n
    \n ))}\n
    \n );\n};\n\nSocialsContainer.propTypes = {\n socialLogins: array.isRequired,\n onAppleLoginClick: func,\n onFBLoginClick: func,\n onGoogleLoginClick: func,\n onMicrosoftLoginClick: func,\n onSalesforceLoginClick: func,\n user: object.isRequired\n};\n\nSocialsContainer.defaultProps = {\n onAppleLoginClick: () => {},\n onFBLoginClick: () => {},\n onGoogleLoginClick: () => {},\n onMicrosoftLoginClick: () => {},\n onSalesforceLoginClick: () => {}\n};\n\nexport default SocialsContainer;\n","import React from 'react';\n\nimport { t } from '@jotforminc/translation';\nimport { Texts } from '@jotforminc/constants';\n\nconst ModalHeader = () =>

    {t(Texts.VERIFY_THAT_ITS_YOU_TO_DELETE_YOUR_ACCOUNT)}

    ;\n\nexport default ModalHeader;\n","import { string } from 'prop-types';\nimport React from 'react';\n\nimport { t } from '@jotforminc/translation';\n\nimport { IconExclamationCircleFilled } from '@jotforminc/svg-icons';\n\nconst ErrorMessage = ({ text }) => {\n return (\n
    \n \n {' '}\n {t(text)}\n
    \n );\n};\n\nErrorMessage.propTypes = {\n text: string.isRequired\n};\n\nexport default ErrorMessage;\n","import React, { useState } from 'react';\nimport {\n array, bool, func, object\n} from 'prop-types';\n\nimport { t } from '@jotforminc/translation';\nimport { Texts } from '@jotforminc/constants';\n\nimport SocialsContainer from './SocialsContainer';\nimport ModalHeader from './ModalHeader';\n\nimport { verifyAndDelete } from '../../utils/helper';\nimport ErrorMessage from './ErrorMessage';\n\nconst DeleteAccountModalStep2 = ({\n socialLogins, onAppleLoginClick, onFBLoginClick, onGoogleLoginClick, onMicrosoftLoginClick, onSalesforceLoginClick, thereSocialError, user, handleStep\n}) => {\n const [isPasswordErrored, setIsPasswordErrored] = useState(false);\n const [password, setPassword] = useState('');\n\n const handleChange = e => {\n const { target: { value } } = e;\n setPassword(value);\n setIsPasswordErrored(false);\n };\n\n const handleDeleteAccount = async e => {\n e.preventDefault(); // no refresh after submit\n const { credentials: { username } } = user;\n\n if (password) {\n try {\n const result = await verifyAndDelete({ type: 'email', username, password });\n if (typeof result === 'object' && result.token) {\n setIsPasswordErrored(!result.status);\n } else { // TODO: remove this condition when api is merged\n setIsPasswordErrored(!result);\n }\n handleStep(3);\n } catch {\n setIsPasswordErrored(true);\n }\n }\n };\n\n return (\n
    \n \n {socialLogins.length > 0 && (\n <>\n \n {thereSocialError && (\n \n )}\n
    \n OR\n
    \n \n )}\n
    \n {t(Texts.PLEASE_ENTER_YOUR_PASSWORD)}\n
    \n \n {isPasswordErrored && (\n \n )}\n \n \n
    \n
    \n );\n};\n\nDeleteAccountModalStep2.propTypes = {\n socialLogins: array.isRequired,\n user: object.isRequired,\n onAppleLoginClick: func,\n onFBLoginClick: func,\n onGoogleLoginClick: func,\n onMicrosoftLoginClick: func,\n onSalesforceLoginClick: func,\n thereSocialError: bool,\n handleStep: func\n};\n\nDeleteAccountModalStep2.defaultProps = {\n onAppleLoginClick: () => {},\n onFBLoginClick: () => {},\n onGoogleLoginClick: () => {},\n onMicrosoftLoginClick: () => {},\n onSalesforceLoginClick: () => {},\n thereSocialError: false,\n handleStep: () => {}\n};\n\nexport default DeleteAccountModalStep2;\n","import React, { useState } from 'react';\nimport { string } from 'prop-types';\n\nimport { t } from '@jotforminc/translation';\nimport { Texts } from '@jotforminc/constants';\n\nimport { IconCheckCircleFilled } from '@jotforminc/svg-icons';\nimport ModalHeader from './ModalHeader';\n\nimport { verifyAndDelete } from '../../utils/helper';\n\nimport ErrorMessage from './ErrorMessage';\n\nconst DeleteAccountModalStep3 = ({ username }) => {\n const [isDeleteErrored, setIsDeleteErrored] = useState(false);\n\n const handleDelete = async () => {\n const result = await verifyAndDelete({ isDeleteVerified: 1, username });\n // TODO: remove 'result === true' check when api is merged\n if (result === true || (typeof result === 'object' && result.token)) {\n setIsDeleteErrored(false);\n window.location.href = '/login';\n } else {\n setIsDeleteErrored(true);\n }\n };\n\n return (\n
    \n \n
    \n \n \n {t(Texts.YOU_HAVE_VERIFIED_SUCCESSFULLY)}\n \n {isDeleteErrored && (\n \n )}\n \n
    \n
    \n );\n};\n\nDeleteAccountModalStep3.propTypes = {\n username: string.isRequired\n};\n\nexport default DeleteAccountModalStep3;\n","import React, { useState, useImperativeHandle } from 'react';\nimport {\n array, bool, func, object\n} from 'prop-types';\n\nimport DeleteAccountModalStep1 from './DeleteAccountModalStep1';\nimport DeleteAccountModalStep2 from './DeleteAccountModalStep2';\nimport DeleteAccountModalStep3 from './DeleteAccountModalStep3';\n\nimport '../../styles/verification-modal.scss';\nimport '../../styles/delete-my-account-modal.scss';\n\nconst DeleteAccountModal = React.forwardRef(({\n socialLogins, onAppleLoginClick, onFBLoginClick, onGoogleLoginClick, onMicrosoftLoginClick, onSalesforceLoginClick, thereSocialError, user, handleClose\n}, ref) => {\n const [step, setStep] = useState(1);\n\n const { credentials: { username } } = user;\n\n const handleStep = nextStep => {\n setStep(nextStep);\n if (nextStep === 0) {\n handleClose();\n }\n };\n\n useImperativeHandle(ref, () => (\n {\n handleStep\n }\n ));\n\n return (\n <>\n {step === 1 && (\n \n )}\n {step === 2 && (\n \n )}\n {step === 3 && (\n \n )}\n \n );\n});\n\nDeleteAccountModal.propTypes = {\n socialLogins: array,\n onAppleLoginClick: func,\n onFBLoginClick: func,\n onGoogleLoginClick: func,\n onMicrosoftLoginClick: func,\n onSalesforceLoginClick: func,\n thereSocialError: bool,\n user: object,\n handleClose: func\n};\n\nDeleteAccountModal.defaultProps = {\n socialLogins: [],\n onAppleLoginClick: () => {},\n onFBLoginClick: () => {},\n onGoogleLoginClick: () => {},\n onMicrosoftLoginClick: () => {},\n onSalesforceLoginClick: () => {},\n thereSocialError: false,\n user: {},\n handleClose: () => {}\n};\n\nexport default DeleteAccountModal;\n","import React, { Component } from 'react';\nimport { func } from 'prop-types';\nimport { t, translationRenderer } from '@jotforminc/translation';\nimport { Texts } from '@jotforminc/constants';\nimport { isEnterprise } from '@jotforminc/enterprise-utils';\n\nexport default class ResetSuccess extends Component {\n render() {\n const { onNavigationChangeRequest } = this.props;\n return (\n
    \n
    \n

    {t(Texts.CHECK_EMAIL)}

    \n
    \n
    \n

    {t(Texts.PASSWORD_RESET_SENT)}

    \n

    {t(Texts.CHECK_SPAM_FOLDER)}

    \n

    \n {isEnterprise() ? t(Texts.MORE_HELP_CONTACT_ENTERPRISE) : translationRenderer(Texts.MORE_HELP_CONTACT)({\n renderer1: str => {str}\n })}\n

    \n
    \n onNavigationChangeRequest('loginOptions')}\n type=\"button\"\n >\n {t(Texts.OK_TEXT)}\n \n
    \n
    \n
    \n );\n }\n}\n\nResetSuccess.propTypes = {\n onNavigationChangeRequest: func.isRequired\n};\n","import React, { useState } from 'react';\nimport { func, shape } from 'prop-types';\nimport { t } from '@jotforminc/translation';\n\nimport '../styles/social-terms-step.scss';\nimport { isTurkishLanguage } from '../utils/loginSignup';\nimport TermsAndConditionsUrls from './TermsAndConditionsUrls';\n\nconst SocialTermsStep = ({\n user,\n socialUserProfile,\n onSocialTermsContinue\n}) => {\n const [isTermsAgreed, setIsTermsAgreed] = useState(false);\n const [termsError, setTermsError] = useState(false);\n const { fullName, email, imageUrl } = socialUserProfile;\n const isTurkish = isTurkishLanguage(user);\n\n const handleContinue = async () => {\n if (isTermsAgreed) {\n onSocialTermsContinue(isTermsAgreed);\n } else {\n setTermsError(true);\n }\n };\n\n const handleCheckboxChange = ({ target: { checked = false } }) => {\n setIsTermsAgreed(checked);\n if (checked) {\n setTermsError(false);\n }\n };\n\n return (\n
    \n

    {t('Terms and Privacy')}

    \n
    \n
    \n
    \n {imageUrl && {fullName}}\n
    \n
    \n \n \n {t('Name')}\n :\n \n {fullName}\n \n \n \n {t('Email')}\n :\n \n {email}\n \n
    \n
    \n \n {termsError && {t('Please agree to continue.')}}\n
    \n
    \n \n
    \n
    \n );\n};\n\nSocialTermsStep.propTypes = {\n user: shape({}),\n socialUserProfile: shape({}),\n onSocialTermsContinue: func\n};\n\nSocialTermsStep.defaultProps = {\n user: {},\n socialUserProfile: {},\n onSocialTermsContinue: func\n};\n\nexport default SocialTermsStep;\n","import React, { useRef } from 'react';\nimport { func } from 'prop-types';\nimport { Modal } from '@jotforminc/uikit';\nimport '../styles/standalone-modal.scss';\nimport SocialTermsStep from './SocialTermsStep';\n\nconst SocialTermsModal = ({\n removeModalFromDOM,\n onSocialTermsContinue,\n onSocialTermsClose,\n ...props\n}) => {\n const uikitModalRef = useRef(null);\n\n // eslint-disable-next-line react/prop-types\n const DialogRenderer = ({ children }) =>
    {children}
    ;\n\n // eslint-disable-next-line react/prop-types\n const ContentRenderer = ({ children }) => (\n
    \n {\n onSocialTermsClose();\n removeModalFromDOM();\n }}\n />\n {children}\n
    \n );\n\n const handleSocialTermsContinue = isTermsAgreed => {\n onSocialTermsContinue(isTermsAgreed);\n if (isTermsAgreed) {\n removeModalFromDOM();\n }\n };\n\n return (\n \n \n \n );\n};\n\nSocialTermsModal.propTypes = {\n onSocialTermsClose: func,\n removeModalFromDOM: func.isRequired,\n onSocialTermsContinue: func.isRequired\n};\n\nSocialTermsModal.defaultProps = {\n onSocialTermsClose: f => f\n};\n\nexport default SocialTermsModal;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport SocialTermsModal from '../components/SocialTermsModal';\n\nconst ROOT_ID = 'terms-modal-root';\n\nconst createRootEl = () => {\n const rootEl = document.createElement('div');\n rootEl.setAttribute('id', ROOT_ID);\n\n document.body.appendChild(rootEl);\n return rootEl;\n};\n\nconst getRootEl = () => {\n const termsModalRoot = document.querySelector(`#${ROOT_ID}`);\n if (termsModalRoot) {\n return termsModalRoot;\n }\n return createRootEl(ROOT_ID);\n};\n\nconst removeModalFromDOM = () => {\n const termsModalRoot = getRootEl();\n if (termsModalRoot) {\n ReactDOM.unmountComponentAtNode(termsModalRoot);\n }\n};\n\nconst renderStandaloneSocialTermsModal = props => {\n const rootEl = getRootEl();\n ReactDOM.render(\n ,\n rootEl\n );\n};\n\nexport default renderStandaloneSocialTermsModal;\n","import React, { useRef } from 'react';\nimport { func } from 'prop-types';\nimport { Modal } from '@jotforminc/uikit';\nimport '../styles/standalone-modal.scss';\nimport EmailAuthLogin from './EmailAuthLogin';\n\nconst EmailAuthLoginModal = ({\n removeModalFromDOM,\n ...props\n}) => {\n const uikitModalRef = useRef(null);\n\n // eslint-disable-next-line react/prop-types\n const DialogRenderer = ({ children }) =>
    {children}
    ;\n\n // eslint-disable-next-line react/prop-types\n const ContentRenderer = ({ children }) => (\n
    \n {\n if (typeof window.__accountSharingLogger === 'function') {\n window.__accountSharingLogger({ action: 'click', target: 'closeButton' });\n }\n removeModalFromDOM();\n }}\n />\n {children}\n
    \n );\n\n return (\n \n \n \n );\n};\n\nEmailAuthLoginModal.propTypes = {\n removeModalFromDOM: func.isRequired\n};\n\nexport default EmailAuthLoginModal;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport EmailAuthLoginModal from '../components/EmailAuthLoginModal';\n\nconst ROOT_ID = 'email-auth-root';\n\nconst createRootEl = () => {\n const rootEl = document.createElement('div');\n rootEl.setAttribute('id', ROOT_ID);\n\n document.body.appendChild(rootEl);\n return rootEl;\n};\n\nconst getRootEl = () => {\n const emailAuthRoot = document.querySelector(`#${ROOT_ID}`);\n if (emailAuthRoot) {\n return emailAuthRoot;\n }\n return createRootEl(ROOT_ID);\n};\n\nconst removeModalFromDOM = () => {\n const emailAuthRoot = getRootEl();\n if (emailAuthRoot) {\n ReactDOM.unmountComponentAtNode(emailAuthRoot);\n }\n};\n\nconst renderStandaloneEmailAuthModal = props => {\n const rootEl = getRootEl();\n ReactDOM.render(\n ,\n rootEl\n );\n};\n\nexport default renderStandaloneEmailAuthModal;\n","import React, { useState } from 'react';\nimport {\n array, bool, func, object\n} from 'prop-types';\n\nimport { t } from '@jotforminc/translation';\nimport { Texts } from '@jotforminc/constants';\n\nimport { verifyUser } from '../../utils/helper';\nimport SocialsContainer from '../DeleteAccountModal/SocialsContainer';\nimport ErrorMessage from '../DeleteAccountModal/ErrorMessage';\n\nconst Verification = ({\n socialLogins, onAppleLoginClick, onFBLoginClick, onGoogleLoginClick, onMicrosoftLoginClick, onSalesforceLoginClick, thereSocialError, user, handleVerification\n}) => {\n const [isPasswordErrored, setIsPasswordErrored] = useState(false);\n const [password, setPassword] = useState('');\n const [isPending, setIsPending] = useState(false);\n\n const handleChange = e => {\n const { target: { value } } = e;\n setPassword(value);\n setIsPasswordErrored(false);\n };\n\n const handleVerifyAccount = async e => {\n e.preventDefault(); // no refresh after submit\n if (!password) return;\n const { credentials: { username } } = user;\n\n setIsPending(true);\n try {\n const result = await verifyUser({ type: 'email', username, password });\n const isResultWithToken = (typeof result === 'object') && result.token;\n if (result === true || isResultWithToken) {\n setIsPasswordErrored(false);\n handleVerification();\n // TODO if (isResultWithToken) set token and remove 'result === true' check\n } else {\n setIsPasswordErrored(false);\n }\n } catch {\n setIsPasswordErrored(true);\n } finally {\n setIsPending(false);\n }\n };\n\n const handleVerifyButtonKeyDown = e => {\n if ([' ', 'Enter'].includes(e.key)) {\n handleVerifyAccount(e);\n }\n };\n\n return (\n
    \n {socialLogins.length > 0 && (\n <>\n \n {thereSocialError && (\n \n )}\n
    \n OR\n
    \n \n )}\n
    \n \n
    \n \n {isPasswordErrored && (\n \n )}\n \n
    \n {/* TODO: Move below html inside the form tags and update the common ui file: verification-mnodal.scss */}\n
    \n \n {t('VERIFY')}\n \n
    \n
    \n );\n};\n\nVerification.propTypes = {\n socialLogins: array.isRequired,\n user: object.isRequired,\n onAppleLoginClick: func,\n onFBLoginClick: func,\n onGoogleLoginClick: func,\n onMicrosoftLoginClick: func,\n onSalesforceLoginClick: func,\n thereSocialError: bool,\n handleVerification: func\n};\n\nVerification.defaultProps = {\n onAppleLoginClick: () => {},\n onFBLoginClick: () => {},\n onGoogleLoginClick: () => {},\n onMicrosoftLoginClick: () => {},\n onSalesforceLoginClick: () => {},\n thereSocialError: false,\n handleVerification: () => {}\n};\n\nexport default Verification;\n","import React, { useImperativeHandle } from 'react';\nimport {\n array, bool, func, elementType, object, shape\n} from 'prop-types';\n\nimport '../../styles/verification-modal.scss';\nimport Verification from './Verification';\n\nconst VerifyAccountModal = React.forwardRef(({\n socialLogins, onAppleLoginClick, onFBLoginClick, onGoogleLoginClick, onMicrosoftLoginClick, onSalesforceLoginClick, thereSocialError,\n user, AfterVerificationComponent, BeforeVerificationComponent, VerificationWrapper, isVerified, setIsVerified\n}, ref) => {\n const approveVerification = () => setIsVerified(true);\n\n useImperativeHandle(ref, () => (\n {\n approveVerification\n }\n ));\n\n const VerificationStep = () => (VerificationWrapper\n ? (\n \n \n \n )\n : (\n \n ));\n\n if (BeforeVerificationComponent) return ;\n\n return (\n <>{!isVerified ? : }\n );\n});\n\nVerifyAccountModal.propTypes = {\n socialLogins: array,\n onAppleLoginClick: func,\n onFBLoginClick: func,\n onGoogleLoginClick: func,\n onMicrosoftLoginClick: func,\n onSalesforceLoginClick: func,\n thereSocialError: bool,\n user: object,\n AfterVerificationComponent: elementType.isRequired,\n BeforeVerificationComponent: elementType,\n VerificationWrapper: shape({\n Component: elementType,\n props: shape({})\n }),\n isVerified: bool,\n setIsVerified: func\n};\n\nVerifyAccountModal.defaultProps = {\n socialLogins: [],\n onAppleLoginClick: () => {},\n onFBLoginClick: () => {},\n onGoogleLoginClick: () => {},\n onMicrosoftLoginClick: () => {},\n onSalesforceLoginClick: () => {},\n thereSocialError: false,\n user: {},\n BeforeVerificationComponent: null,\n VerificationWrapper: null,\n isVerified: false,\n setIsVerified: f => f\n};\n\nexport default VerifyAccountModal;\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { IconCheckCircle, IconExclamationCircleFilled, IconFlagFilled } from '@jotforminc/svg-icons';\nimport { t, translationRenderer } from '@jotforminc/translation';\nimport { getUrlParameter } from '@jotforminc/utils';\nimport layer from '../../utils/layer';\n\nimport {\n RECEIVED_RESPONSE,\n CONTINUE,\n KEEP_ACCOUNT,\n NOT_CREATE_THIS_ACCOUNT, REPORT_ACCOUNT, REPORT_UNUSUAL_SIGNUP, THANKS_FOR_REPORTING, ERROR_MESSAGE\n} from '../../constants';\n\nimport '../../styles/unusual-signup.scss';\n\nconst UnusualSignup = ({\n unusualSignupCode, unusualSignupToken, changeActiveMode\n}) => {\n const [option, setOption] = useState('');\n const [isReported, setIsReported] = useState(false);\n const [error, setError] = useState(false);\n\n const handleClick = async () => {\n if (option === 'keep') {\n const isLoggedIn = !!window.user && window.user?.account_type?.name !== 'GUEST';\n return !isLoggedIn ? changeActiveMode('fullScreen') : window.location.replace('/myforms');\n }\n layer.post('user/change-email-unusual-account', new URLSearchParams({\n code: unusualSignupCode,\n token: unusualSignupToken\n }))\n .then(result => {\n if (typeof result === 'object' && result?.responseCode !== 200) {\n throw new Error(result?.content || result?.message);\n }\n\n setIsReported(true);\n }).catch(err => {\n setError(true);\n console.log(err);\n });\n };\n\n const handleChange = e => {\n setOption(e.target.value);\n };\n\n useEffect(() => {\n document.body.classList.add('hide-overflow');\n document.title = 'Report Unusual Signup · Jotform';\n\n return () => {\n document.body.classList.remove('hide-overflow');\n document.title = 'Login · Jotform';\n };\n }, []);\n\n return (\n
    \n
    \n
    \n
    \n

    {t(REPORT_UNUSUAL_SIGNUP)}

    \n
    \n
    \n
    \n {isReported ? (\n
    \n \n
    \n ) : (\n
    \n \n
    \n )}\n

    \n {t(isReported ? RECEIVED_RESPONSE : REPORT_UNUSUAL_SIGNUP)}\n

    \n

    \n {isReported ? (\n translationRenderer(THANKS_FOR_REPORTING)({\n renderer1: () => {getUrlParameter('username')},\n renderer2: text => (\n \n {text}\n \n )\n })\n ) : (\n translationRenderer(NOT_CREATE_THIS_ACCOUNT)({\n renderer1: () => {getUrlParameter('username')}\n })\n )}\n

    \n
    \n {!isReported && (\n <>\n
    \n
    \n
    \n );\n};\n\nUnusualSignup.propTypes = {\n unusualSignupCode: PropTypes.string.isRequired,\n unusualSignupToken: PropTypes.string.isRequired,\n changeActiveMode: PropTypes.func.isRequired\n};\n\nexport default UnusualSignup;\n","/* eslint-disable max-statements */\n/* eslint-disable complexity */\nimport React, {\n useCallback, useEffect, useRef, useState\n} from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport isEmpty from 'lodash/isEmpty';\nimport ReCAPTCHA from 'react-google-recaptcha';\nimport { t, translationRenderer } from '@jotforminc/translation';\nimport { Texts } from '@jotforminc/constants';\nimport { IconChevronLeft, IconExclamationCircleFilled } from '@jotforminc/svg-icons';\nimport { isEnterprise } from '@jotforminc/enterprise-utils';\nimport { listenEnter, validateEmail } from '@jotforminc/utils';\nimport { getEnterpriseLogo } from '@jotforminc/request-layer';\n\nimport '../styles/signup-with-social-opts.scss';\nimport '../styles/style.scss';\n\nimport {\n BACK,\n CONTINUE,\n CONTINUE_SIGNUP,\n CREATE_ACCOUNT,\n DESCRIPTION_MESSAGE,\n EMAIL,\n EMAIL_ADDRESS,\n ENTER_EMAIL_ADDRESS,\n ENTER_FULL_NAME,\n OR,\n OR_SIGN_UP_WITH,\n SIGNING_UP_WITH,\n SIGN_UP_WITH,\n TITLE_MESSAGE,\n errorMessages\n} from '../constants';\nimport RenderSocialButtons from './SocialButtons';\nimport Password from './Password';\nimport TermsAndConditionsUrls from './TermsAndConditionsUrls';\nimport { isTurkishLanguage } from '../utils/loginSignup';\nimport {\n dispatchAction,\n formUserCreate,\n formUserPretendCreate,\n isEmailEligibleForRegister,\n registerNewUser\n} from '../api';\nimport { openOFACModal } from './OFACModal';\nimport { errorNormalizer } from '../utils/helper';\n\nconst SignupWithSocialOpts = ({\n onAppleLoginClick,\n onMicrosoftLoginClick,\n onFBLoginClick,\n onSalesforceLoginClick,\n onGoogleLoginClick,\n onNavigationChangeRequest,\n user,\n isHIPAA,\n enforceHIPAARuleSet,\n includeConfirm,\n appName,\n buttonNames,\n signupPredefinedEmail,\n forceUser,\n verificationHash,\n ofacModalRef,\n onLoginSuccess,\n shrinkConfirmOnMobile,\n shrinkConfirmHeight,\n disableEmail,\n changeActiveScreen,\n builderShowSlides,\n productType,\n redirectURL,\n initiator,\n showLogoOnSignupOptions,\n enterpriseLogo,\n hideGreetingMessageOnSignupOptions,\n greetingMessage,\n greetingDescription,\n logoSource,\n thereSocialError,\n thereErrorMessage,\n // A/B Test: signupOnboardingIV\n isOnboardingFlow,\n isOnboardingTestVariantReversed\n}) => {\n const isEnterpriseEnv = isEnterprise();\n const isTurkish = isTurkishLanguage(user);\n const termsRef = useRef();\n const nameRef = useRef();\n const passwordRef = useRef();\n const emailInputRef = useRef();\n const captchaRef = useRef();\n let invalidFieldRefs = {};\n\n const [step, setStep] = useState('initial');\n const [isAgreedTerms, setIsAgreedTerms] = useState(false);\n const [termsError, setTermsError] = useState('');\n const [securePasswordErrors, setSecurePasswordErrors] = useState([]);\n const [passwordError, setPasswordError] = useState('');\n const [confirmPasswordError, setConfirmPasswordError] = useState('');\n const [emailErrorMsg, setEmailErrorMsg] = useState('');\n const [nameErrorMsg, setNameErrorMsg] = useState('');\n const [signupErrorMsg, setSignupErrorMsg] = useState('');\n const [emailIsLoading, setEmailIsLoading] = useState(false);\n const [signupIsLoading, setSignupIsLoading] = useState(false);\n\n let openerEmail = '';\n let openerName = '';\n\n try {\n openerEmail = window.opener?.signUpDefaultEmail;\n openerName = window.opener?.signUpDefaultName;\n } catch (error) {\n // eslint-disable-next-line no-console\n console.log('CORS', error);\n }\n\n const [email, setEmail] = useState(signupPredefinedEmail || openerEmail || '');\n const [name, setName] = useState(openerName || '');\n const [screenHeight] = useState(window.innerHeight);\n const [showRecaptcha, setShowRecaptcha] = useState(false);\n const [recaptcha, setRecaptcha] = useState(null);\n const invalidFieldFocusOrder = ['name', 'password', 'terms'];\n\n const enterpriseEnv = isEnterprise();\n\n const jfLogoSource = logoSource || 'https://cdn.jotfor.ms/assets/img/v4/logo-branding21.png';\n const jfLogo = enterpriseEnv ? getEnterpriseLogo() : jfLogoSource;\n\n // A/B Test: signupOnboardingIV\n useEffect(() => {\n if (isOnboardingFlow && window.innerWidth > 480) {\n emailInputRef?.current?.focus?.();\n } else {\n emailInputRef?.current?.blur?.();\n }\n }, [isOnboardingFlow]);\n\n const resetPasswordErrors = () => {\n setSecurePasswordErrors([]);\n setPasswordError('');\n };\n\n const handleChangeTerms = () => {\n setIsAgreedTerms(!isAgreedTerms);\n setTermsError((termsError && !isAgreedTerms) ? '' : termsError);\n };\n\n const focusFirstInvalidField = () => {\n let firstInvalidFieldByOrder = '';\n invalidFieldFocusOrder.forEach(fieldName => {\n if (!firstInvalidFieldByOrder && invalidFieldRefs[fieldName]) {\n firstInvalidFieldByOrder = fieldName;\n }\n });\n\n if (firstInvalidFieldByOrder && firstInvalidFieldByOrder === 'password') {\n invalidFieldRefs.password.current.inputRef.current.focus();\n } else if (firstInvalidFieldByOrder) {\n invalidFieldRefs[firstInvalidFieldByOrder]?.current?.focus();\n }\n\n invalidFieldRefs = {};\n };\n\n const handleSignupFormValidations = useCallback(async () => {\n if (nameErrorMsg) {\n invalidFieldRefs.name = nameRef;\n }\n\n if (!isEnterpriseEnv && !isAgreedTerms) {\n invalidFieldRefs.terms = termsRef;\n setTermsError(errorMessages.termsRequired);\n }\n\n const { isValid, password } = await passwordRef.current.validate();\n if (!isValid) {\n invalidFieldRefs.password = passwordRef;\n }\n\n focusFirstInvalidField();\n\n return { isValid, password };\n });\n\n const handleValidateEmail = async () => {\n if (!email) {\n return setEmailErrorMsg(errorMessages.required);\n }\n\n if (!validateEmail(email)) {\n return setEmailErrorMsg(errorMessages.validEmail);\n }\n\n try {\n setEmailIsLoading(true);\n\n const response = await isEmailEligibleForRegister({ email, verificationHash });\n\n if (response.status === 200) {\n setStep('fields');\n }\n } catch (error) {\n if (error?.message === \"Sorry, you can't signup from this country.\") {\n if (appName === 'formBuilder' && typeof builderShowSlides === 'function') {\n builderShowSlides(false);\n }\n\n return changeActiveScreen('ofacModal');\n }\n\n setEmailErrorMsg(error?.message);\n } finally {\n setEmailIsLoading(false);\n }\n };\n\n const forceUserSignup = async (password, recaptchaHash) => {\n const defaultButtonName = appName ? `emailSignup-${appName}` : '';\n const buttonName = buttonNames.emailSignup ? buttonNames.emailSignup : defaultButtonName;\n\n try {\n const response = await registerNewUser({\n email,\n password,\n name,\n isAgreedTerms: isAgreedTerms ? '1' : '0',\n buttonName,\n refApp: appName,\n recaptcha: recaptchaHash\n });\n\n response.data.newUser = true;\n onLoginSuccess(response, true);\n setSignupIsLoading(false);\n } catch (error) {\n if (captchaRef) {\n captchaRef.current?.reset();\n }\n\n if (error?.message === \"Sorry, you can't signup from this country.\") {\n return openOFACModal(ofacModalRef, email);\n }\n\n const passwordWarning = error?.message?.includes('PasswordWarning::');\n if (passwordWarning || error?.cause === 'password') {\n passwordRef?.current?.focus();\n return setPasswordError(passwordWarning ? error?.message?.replace('PasswordWarning::', '') : error?.message);\n }\n\n if (error?.message === 'REQUIRE_CAPTCHA') {\n dispatchAction({\n actor: window?.user?.username || window?.__formInfo?.username || 'unknown',\n target: 'swso',\n action: 'captcha-required'\n });\n return setShowRecaptcha(true);\n }\n\n setSignupErrorMsg(error?.message);\n } finally {\n setSignupIsLoading(false);\n }\n };\n\n // User is already created, just need to set their password with this.\n const formUserPretendSignup = async password => {\n try {\n const response = await formUserPretendCreate({\n email,\n password,\n name,\n isAgreedTerms: isAgreedTerms ? '1' : '0',\n verificationHash,\n isHIPAA: isHIPAA ? '1' : ''\n });\n\n onLoginSuccess(response);\n } catch (error) {\n if (error?.message === \"Sorry, you can't signup from this country.\") {\n return openOFACModal(ofacModalRef, email);\n }\n\n if (error?.message?.includes('Name')) {\n nameRef?.current?.focus();\n return setNameErrorMsg(error?.message);\n }\n\n setSignupErrorMsg(error?.message);\n } finally {\n setSignupIsLoading(false);\n }\n };\n\n const formUserSignup = async password => {\n try {\n const response = await formUserCreate({\n email,\n password,\n name,\n isAgreedTerms: isAgreedTerms ? '1' : '0',\n initiator,\n redirectURL,\n appName,\n sendVerification: productType === 'form' ? '1' : '0'\n });\n\n const { content: createdUser } = response;\n\n if (window?.JFAppsManager?.isOpenedInPortal()) {\n window.JFAppsManager.userChanged(createdUser);\n }\n\n onLoginSuccess(response);\n } catch (error) {\n if (error?.message === \"Sorry, you can't signup from this country.\") {\n return openOFACModal(ofacModalRef, email);\n }\n\n setSignupErrorMsg(error?.message);\n } finally {\n setSignupIsLoading(false);\n }\n };\n\n const handleEmailSignup = async () => {\n setSignupIsLoading(true);\n setSignupErrorMsg('');\n setNameErrorMsg('');\n\n const { isValid: isPasswordValid, password } = await handleSignupFormValidations();\n\n if (!isPasswordValid || !isAgreedTerms || !isEmpty(securePasswordErrors) || confirmPasswordError) {\n return setSignupIsLoading(false);\n }\n\n if (forceUser) {\n return forceUserSignup(password, recaptcha);\n }\n\n if (signupPredefinedEmail && verificationHash) {\n return formUserPretendSignup(password);\n }\n\n return formUserSignup(password);\n };\n\n const handleSubmitCaptcha = hash => {\n if (!hash) {\n dispatchAction({\n actor: window?.user?.username || window?.__formInfo?.username || 'unknown',\n target: 'swso',\n action: 'captcha-expired'\n });\n return setSignupIsLoading(false);\n }\n\n dispatchAction({\n actor: window?.user?.username || window?.__formInfo?.username || 'unknown',\n target: 'swso',\n action: 'captcha-passed'\n });\n\n setRecaptcha(hash);\n };\n\n const handleSignupFormKeypress = event => {\n if (event.key === 'Enter' && step === 'fields') {\n handleEmailSignup();\n }\n\n if (event.key !== 'Enter' && step === 'initial') {\n setEmailErrorMsg();\n }\n };\n\n useEffect(() => {\n if (name && nameErrorMsg) {\n setNameErrorMsg('');\n }\n }, [name, nameErrorMsg]);\n\n useEffect(() => {\n window.addEventListener('keydown', handleSignupFormKeypress);\n\n return () => window.removeEventListener('keydown', handleSignupFormKeypress);\n }, [step, termsError, isAgreedTerms]);\n\n return (\n \n {showLogoOnSignupOptions && step !== 'fields' && \"Logo\"}\n {!enterpriseEnv && !hideGreetingMessageOnSignupOptions && step !== 'fields' && (

    {t(greetingMessage)}

    )}\n {!!greetingDescription && step !== 'fields' && (

    {t(greetingDescription)}

    )}\n {step === 'initial' && (\n
    \n
    \n {!isOnboardingFlow &&

    {t(SIGN_UP_WITH)}

    }\n
    \n \n
    \n {thereSocialError && (\n
    \n \n {t(errorNormalizer(thereErrorMessage))}\n
    \n )}\n
    \n
    \n {t(!isOnboardingFlow ? OR : OR_SIGN_UP_WITH)}\n
    \n
    \n
    \n \n listenEnter(e, handleValidateEmail)}\n onChange={e => setEmail(e.target.value)}\n className={emailErrorMsg && 'input-error'}\n placeholder={isOnboardingFlow ? t(ENTER_EMAIL_ADDRESS) : ''}\n />\n {emailErrorMsg && (\n
    \n \n {t(emailErrorMsg)}\n
    \n )}\n
    \n handleValidateEmail()}\n >\n {emailIsLoading && (\n \n
    \n {t('Loading')}\n ...\n \n )}\n {!emailIsLoading && t(!isOnboardingFlow ? CONTINUE : 'Continue with Email')}\n \n {!isOnboardingFlow && (\n
    \n {t(Texts.ALREADY_HAVE_ACCOUNT)}\n {' '}\n onNavigationChangeRequest('loginOptions')}\n id=\"login-link\"\n >\n {t(Texts.LOGIN_TEXT)}\n \n
    \n )}\n
    \n
    \n )}\n {step === 'fields' && (\n <>\n
    \n \n
    \n
    \n

    {t(CONTINUE_SIGNUP)}

    \n

    \n {translationRenderer(SIGNING_UP_WITH)({\n renderer1: () => (\n \n {email}\n \n )\n })}\n

    \n
    \n
    \n \n setName(e.target.value)}\n className={nameErrorMsg && 'input-error'}\n placeholder={isOnboardingFlow ? t(ENTER_FULL_NAME) : ''}\n />\n {nameErrorMsg && (\n
    \n {t(nameErrorMsg)}\n
    \n )}\n
    \n
    \n setSecurePasswordErrors(errorCodes)}\n callbackConfirmPassError={confirmPassErrorCode => setConfirmPasswordError(confirmPassErrorCode)}\n checkReuse={false}\n includeConfirm={includeConfirm && !(shrinkConfirmOnMobile && screenHeight < shrinkConfirmHeight)}\n />\n
    \n {!isEnterpriseEnv && (\n
    \n
    \n handleChangeTerms()}\n disabled={signupIsLoading}\n aria-label={isEnterpriseEnv && !isAgreedTerms ? t(Texts.AGREE_TERMS_CONDITIONS) : null}\n />\n }\n />\n
    \n
    \n {termsError ? t(termsError) : null}\n
    \n
    \n )}\n {signupErrorMsg && (\n
    \n \n {t(signupErrorMsg)}\n
    \n )}\n {showRecaptcha && (\n
    \n handleSubmitCaptcha(hash)}\n />\n
    \n )}\n handleEmailSignup()}\n >\n {signupIsLoading && (\n \n
    \n {t('Loading')}\n ...\n \n )}\n {!signupIsLoading && (!isOnboardingFlow ? t(Texts.SIGN_UP) : t(CREATE_ACCOUNT))}\n \n {!isOnboardingFlow && (\n
    \n {t(Texts.ALREADY_HAVE_ACCOUNT)}\n {' '}\n onNavigationChangeRequest('loginOptions')}\n id=\"login-link\"\n >\n {t(Texts.LOGIN_TEXT)}\n \n
    \n )}\n
    \n
    \n \n )}\n
    \n );\n};\n\nSignupWithSocialOpts.propTypes = {\n onNavigationChangeRequest: PropTypes.func.isRequired,\n user: PropTypes.shape(),\n isHIPAA: PropTypes.bool,\n enforceHIPAARuleSet: PropTypes.bool,\n includeConfirm: PropTypes.bool,\n shrinkConfirmOnMobile: PropTypes.bool,\n shrinkConfirmHeight: PropTypes.number,\n onAppleLoginClick: PropTypes.func.isRequired,\n onMicrosoftLoginClick: PropTypes.func.isRequired,\n onFBLoginClick: PropTypes.func.isRequired,\n onSalesforceLoginClick: PropTypes.func.isRequired,\n onGoogleLoginClick: PropTypes.func.isRequired,\n onLoginSuccess: PropTypes.func.isRequired,\n changeActiveScreen: PropTypes.func.isRequired,\n builderShowSlides: PropTypes.func,\n verificationHash: PropTypes.string,\n signupPredefinedEmail: PropTypes.string,\n ofacModalRef: PropTypes.object,\n buttonNames: PropTypes.shape({\n google: PropTypes.string,\n facebook: PropTypes.string,\n apple: PropTypes.string,\n microsoft: PropTypes.string,\n emailLogin: PropTypes.string,\n emailSignup: PropTypes.string\n }),\n appName: PropTypes.string,\n productType: PropTypes.string,\n redirectURL: PropTypes.string,\n forceUser: PropTypes.bool,\n disableEmail: PropTypes.bool,\n showLogoOnSignupOptions: PropTypes.bool,\n enterpriseLogo: PropTypes.string,\n hideGreetingMessageOnSignupOptions: PropTypes.bool,\n greetingMessage: PropTypes.string,\n greetingDescription: PropTypes.string,\n logoSource: PropTypes.string,\n thereSocialError: PropTypes.bool,\n thereErrorMessage: PropTypes.string,\n isOnboardingFlow: PropTypes.bool,\n initiator: PropTypes.string,\n isOnboardingTestVariantReversed: PropTypes.bool\n};\n\nSignupWithSocialOpts.defaultProps = {\n user: null,\n isHIPAA: false,\n enforceHIPAARuleSet: false,\n includeConfirm: false,\n shrinkConfirmOnMobile: false,\n shrinkConfirmHeight: 750,\n verificationHash: '',\n signupPredefinedEmail: '',\n ofacModalRef: {},\n buttonNames: {},\n appName: '',\n productType: '',\n redirectURL: '',\n forceUser: false,\n disableEmail: false,\n builderShowSlides: f => f,\n showLogoOnSignupOptions: false,\n enterpriseLogo: null,\n hideGreetingMessageOnSignupOptions: false,\n greetingMessage: TITLE_MESSAGE,\n greetingDescription: DESCRIPTION_MESSAGE,\n logoSource: '',\n thereSocialError: false,\n thereErrorMessage: errorMessages.tryAgain,\n isOnboardingFlow: false,\n initiator: '',\n isOnboardingTestVariantReversed: false\n};\n\nexport default SignupWithSocialOpts;\n","import {\n bool, func, shape, string\n} from 'prop-types';\nimport React from 'react';\n\nimport { Texts } from '@jotforminc/constants';\nimport { t } from '@jotforminc/translation';\nimport { IconChevronLeft } from '@jotforminc/svg-icons';\nimport ErrorAlert from './ErrorAlert';\n\nconst RecoverAccountPage = ({\n onNavigationChangeRequest,\n handle2FARecoverAccount,\n tfaAccountRecoveryProps\n}) => {\n const { isLoading, isErrored, errorMessage } = tfaAccountRecoveryProps;\n\n const handleRecoverButtonClick = () => {\n handle2FARecoverAccount();\n };\n\n return (\n
    \n
    \n
    \n

    {t(Texts.RECOVER_ACCOUNT_TEXT)}

    \n
    \n
    \n \n {isLoading ? (\n t(Texts.SENDING)\n ) : (\n t(Texts.RECOVER_YOUR_ACCOUNT)\n )}\n \n {(isErrored && errorMessage) && }\n
    \n
    \n onNavigationChangeRequest('twoFactorLogin')}\n >\n
    \n \n \n {t(Texts.BACK_TO_LOGIN)}\n \n
    \n \n
    \n
    \n );\n};\n\nexport default RecoverAccountPage;\n\nRecoverAccountPage.propTypes = {\n onNavigationChangeRequest: func,\n handle2FARecoverAccount: func,\n tfaAccountRecoveryProps: shape({\n isErrored: bool,\n isLoading: bool,\n errorMessage: string\n })\n};\n\nRecoverAccountPage.defaultProps = {\n onNavigationChangeRequest: f => f,\n handle2FARecoverAccount: f => f,\n tfaAccountRecoveryProps: {\n isErrored: false,\n isLoading: false,\n errorMessage: ''\n }\n};\n","import { Texts } from '@jotforminc/constants';\nimport { t } from '@jotforminc/translation';\nimport { shape, string } from 'prop-types';\nimport React from 'react';\n\nconst RecoverAccountNotification = ({\n tfaAccountRecoveryProps\n}) => {\n const { email } = tfaAccountRecoveryProps;\n\n return (\n
    \n
    \n
    \n

    {t(Texts.VERIFICATION_EMAIL_SENT_TO)}

    \n {email}\n
    \n

    {t(Texts.RECOVER_ACCOUNT_EMAIL_INFO_TEXT)}

    \n

    {t(Texts.RECOVER_ACCOUNT_NOTIFICATION_TEXT)}

    \n
    \n
    \n );\n};\n\nexport default RecoverAccountNotification;\n\nRecoverAccountNotification.propTypes = {\n tfaAccountRecoveryProps: shape({\n email: string\n })\n};\n\nRecoverAccountNotification.defaultProps = {\n tfaAccountRecoveryProps: {\n email: ''\n }\n};\n","import { func, shape, string } from 'prop-types';\nimport React from 'react';\n\nimport { t } from '@jotforminc/translation';\nimport { Texts } from '@jotforminc/constants';\nimport { IconChevronLeft } from '@jotforminc/svg-icons';\nimport { handleCustomNavigation } from '@jotforminc/utils';\n\nconst AccountRecoveryViewTicket = ({\n onNavigationChangeRequest, tfaAccountRecoveryProps\n}) => {\n const { ticket } = tfaAccountRecoveryProps;\n const handleViewTicket = () => {\n handleCustomNavigation(ticket, '_blank', true);\n };\n\n return (\n
    \n
    \n
    \n

    {t(Texts.RECOVER_ACCOUNT_MAIL_HAS_BEEN_SENT)}

    \n
    \n \n {t(Texts.VIEW_SUPPORT_TICKET)}\n \n\n
    \n onNavigationChangeRequest('twoFactorLogin')}\n >\n
    \n \n \n {t(Texts.BACK_TO_LOGIN)}\n \n
    \n \n
    \n
    \n );\n};\n\nexport default AccountRecoveryViewTicket;\n\nAccountRecoveryViewTicket.propTypes = {\n onNavigationChangeRequest: func,\n tfaAccountRecoveryProps: shape({\n ticket: string\n })\n};\n\nAccountRecoveryViewTicket.defaultProps = {\n onNavigationChangeRequest: f => f,\n tfaAccountRecoveryProps: {\n ticket: ''\n }\n};\n","/* eslint-disable max-lines,react/sort-comp */\n/* global HTMLElement */\nimport React from 'react';\nimport {\n shape,\n bool,\n string,\n func,\n oneOf,\n node,\n arrayOf,\n number,\n element,\n elementType,\n oneOfType,\n object\n} from 'prop-types';\nimport ReactDOM from 'react-dom';\nimport Axios from 'axios';\nimport qs from 'querystring';\nimport isEmpty from 'lodash/isEmpty';\nimport omit from 'lodash/omit';\nimport { Dialog } from '@jotforminc/dialog';\nimport { Portal } from '@jotforminc/uikit';\nimport { Texts } from '@jotforminc/constants';\nimport {\n createFormData,\n loadJS,\n getPossibleTimeZone,\n initGoogleSignin,\n initFBSignin,\n initAppleSignin,\n initMicrosoftSignin,\n initSalesforceSignin,\n randomString,\n getUrlParameter,\n classNames,\n handleCustomNavigation\n} from '@jotforminc/utils';\nimport { t } from '@jotforminc/translation';\nimport { isEnterprise } from '@jotforminc/enterprise-utils';\n\nimport SignupOptions from './SignupOptions';\nimport SignupWithEmail from './SignupWithEmail';\nimport LoginOptions from './LoginOptions';\nimport SSOOptions from './SSOOptions';\nimport ForgotPassword from './ForgotPassword';\nimport TwoFactorLogin from './TwoFactorLogin';\nimport EmailAuthLogin from './EmailAuthLogin';\nimport TwoFactorMethods from './TwoFactorMethods';\nimport SocialInit from './SocialInit';\nimport LoginError from './LoginError';\nimport DeleteAccountModal from './DeleteAccountModal';\nimport CloseWithCircleSVG from '../temporary-duplicate/assets/svg/closeWithCircle.svg';\nimport ResetSuccess from './ResetSuccess';\nimport '../styles/style.scss';\nimport '../temporary-duplicate/styles/SaveAndContinueLater/style.scss';\nimport {\n forceUserSocialLogin,\n handleLoginHelper,\n getScreenResolution,\n handleSignupCompletedEvents,\n createGoogleOneTapContainerEl,\n hideGoogleOneTapContainerEl\n} from '../utils/loginSignup';\nimport SocialTermsStep from './SocialTermsStep';\nimport renderStandaloneSocialTermsModal from '../utils/renderStandaloneSocialTermsModal';\nimport renderStandaloneEmailAuthModal from '../utils/renderStandaloneEmailAuthModal';\nimport { preLoginCheck, verifyAndDelete, verifyUser } from '../utils/helper';\nimport VerifyAccountModal from './VerifyAccountModal';\nimport { OFACModal, openOFACModal } from './OFACModal';\nimport UnusualSignup from './UnusualSignup';\nimport SignupWithSocialOpts from './SignupWithSocialOpts';\nimport RecoverAccountPage from './RecoverAccountPage';\nimport RecoverAccountNotification from './RecoverAccountNotification';\nimport AccountRecoveryViewTicket from './AccountRecoveryViewTicket';\nimport {\n send2FAAccountRecoveryEmail,\n getUserSSOStatus\n} from '../api';\n\nexport default class LoginFlow extends React.Component {\n constructor(props) {\n super(props);\n\n const {\n user, initialScreen, forceLogin, enableGoogleOneTap, mode\n } = props;\n\n this.isLoggedIn = !!user;\n\n this.state = {\n activeScreenKey: forceLogin ? 'loginOptions' : initialScreen,\n thereSocialError: false,\n lastLoginCredentials: { username: '', password: '' },\n lastTFAResponse: {},\n lastEAResponse: {},\n tfaMethod: '',\n lastSocialLoginToken: '',\n lastSocialLoginType: '',\n isSocialTFA: false,\n isSocialEA: false, // social email authentication\n thereErrorMessage: {},\n showThankyouModal: true,\n socialUserProfile: {},\n socialLoginVerificationHash: '',\n // SignupOptions social buttons\n isMsSignupTestEnabled: false,\n isMsSignupControlVariant: false, // Enables facebook option\n isMsSignupTestBVariant: true, // Enables microsoft option\n isMsSignupTestCVariant: false, // Enables both microsoft & facebook option\n isSwsoTestVariant: false,\n areSocialButtonsLoading: false,\n idToken: '',\n mode: mode,\n externalErrorMessage: '',\n tfaAccountRecoveryProps: {\n errorMessage: '', email: '', isErrored: false, isLoading: false\n }\n };\n\n this.activeComponentRef = React.createRef(null); // either delete modal or verify modal ref\n this.portalRef = React.createRef(null);\n this.ofacModalRef = React.createRef();\n this.handleSocialTFAResponse = this.handleSocialTFAResponse.bind(this);\n this.handleSocialEAResponse = this.handleSocialEAResponse.bind(this);\n this.handleTFAResponse = this.handleTFAResponse.bind(this);\n this.handleTFALogin = this.handleTFALogin.bind(this);\n this.handleEALogin = this.handleEALogin.bind(this);\n this.handleAppleSuccess = this.handleAppleSuccess.bind(this);\n this.handleDeleteAccount = this.handleDeleteAccount.bind(this);\n this.handle2FASocialLoginRequest = this.handle2FASocialLoginRequest.bind(this);\n this.nonce = randomString(32);\n loadJS('facebook-jssdk', 'https://connect.facebook.net/en_US/sdk.js');\n loadJS('google-jssdk-new', 'https://accounts.google.com/gsi/client');\n loadJS('apple-jssdk', 'https://appleid.cdn-apple.com/appleauth/static/jsapi/appleid/1/en_US/appleid.auth.js');\n loadJS('microsoft-jssdk', 'https://cdn.jotfor.ms/js/msal/msal-browser.js');\n\n if (enableGoogleOneTap) loadJS('googleOneTap', 'https://accounts.google.com/gsi/client', this.initializeGoogleOneTap);\n\n this.checkQueryParamsForNavigationChange();\n\n // accountSharing A/B Test\n this.initAccountSharingActions();\n }\n\n initActionRecorder = () => {\n window.actionRecorder = window.JotFormActions('LoginFlow');\n };\n\n loadJotformActions = () => {\n if (window.JotFormActions) {\n this.initActionRecorder();\n return;\n }\n const s = global.document.createElement('script');\n s.onload = () => {\n this.initActionRecorder();\n };\n s.src = '//js.jotform.com/actions.js';\n global.document.head.appendChild(s);\n };\n\n // A/B Test: microsoftSignup\n componentDidMount() {\n this.loadJotformActions();\n const {\n showUnusualSignupFlow, unusualSignupCode, unusualSignupToken, initialScreen, swsoTestVariant\n } = this.props;\n\n if (showUnusualSignupFlow && !isEmpty(unusualSignupCode) && !isEmpty(unusualSignupToken)) {\n this.setState({\n mode: 'unusual-signup'\n });\n }\n\n if (initialScreen === 'signupWithSocialOpts' || swsoTestVariant) {\n this.setState({\n isSwsoTestVariant: true\n });\n }\n\n if (isEnterprise()) {\n this.handlePreLoginCheck();\n }\n }\n\n componentWillUnmount() {\n if (this.clearError) {\n clearTimeout(this.clearError);\n }\n }\n\n // Handle Pre Login Check Function\n handlePreLoginCheck = async () => {\n try {\n const result = await preLoginCheck();\n if (result?.preLogin) {\n const cleanResult = omit(result, ['preLogin']);\n const { primaryMethod = '' } = cleanResult;\n this.setState({\n lastTFAResponse: cleanResult,\n isSocialTFA: false,\n tfaMethod: primaryMethod\n });\n this.handleNavigationChangeRequest('twoFactorLogin');\n }\n } catch (error) {\n this.setState({\n externalErrorMessage: error.message\n });\n }\n };\n\n setExternalErrorMessage = message => {\n this.setState({\n externalErrorMessage: message\n });\n };\n\n // todo: remove the method after the test ends\n initAccountSharingActions = () => {\n if (window.JotFormActions && !window.__accountSharingActions) {\n window.__accountSharingActions = window.JotFormActions('accountSharing');\n }\n window.__accountSharingLogger = ({ action, target }) => {\n if (window.JOTFORM_ENV !== 'PRODUCTION') return;\n const { user: userProp } = this.props;\n const actor = userProp?.username || window.user?.username;\n window.__accountSharingActions?.tick({ actor, action, target });\n };\n };\n\n checkQueryParamsForNavigationChange = () => {\n const queryParams = new URLSearchParams(window.location.search);\n const view = queryParams.get('view');\n\n if (view === 'forgotPassword') {\n this.handleNavigationChangeRequest('forgotPassword');\n }\n };\n\n handleGoogleOnetapResponse = googleUser => {\n const token = googleUser.credential;\n const { socialUserProfile: currentProfile } = this.state;\n this.setState({\n socialUserProfile: {\n token,\n ...currentProfile,\n type: 'googleOneTap'\n },\n socialLoginVerificationHash: ''\n }, () => this.socialLoginRequest('googleOneTap', token, undefined, undefined, true));\n };\n\n initializeGoogleOneTap = () => {\n if (typeof window.GOOGLE_SIGNON === 'undefined') {\n return true;\n }\n\n if (typeof window.JOTFORM_ENV === 'undefined' || window.JOTFORM_ENV === 'ENTERPRISE' || window.JOTFORM_ENV === 'TESTING' || window.JOTFORM_ENV === 'DEVELOPMENT') {\n return true;\n }\n\n if (window.userData && window.userData.account_type && window.userData.account_type.name !== 'GUEST') {\n return true;\n }\n\n if (document.querySelector('.removeAuthButtons')) {\n return true;\n }\n\n createGoogleOneTapContainerEl();\n\n window.google.accounts.id.initialize({\n client_id: window.GOOGLE_SIGNON,\n cancel_on_tap_outside: false,\n prompt_parent_id: 'oneTapLoginArea',\n callback: this.handleGoogleOnetapResponse,\n state_cookie_domain: 'jotform.com'\n });\n window.google.accounts.id.prompt(notification => {\n if (notification.isNotDisplayed() || notification.isSkippedMoment()) {\n console.log('GoogleOnetap Skipped', notification.getNotDisplayedReason());\n }\n });\n };\n\n handleSocialTermsRequired = ({ socialLoginHash, socialUserProfile, idToken }) => {\n const { socialUserProfile: currentProfile } = this.state;\n this.setState({\n socialLoginVerificationHash: socialLoginHash,\n socialUserProfile: { ...currentProfile, ...socialUserProfile },\n idToken\n }, () => this.showTermsStep());\n };\n\n handleSocialTermsModalClose = () => {\n this.setState({\n socialLoginVerificationHash: '',\n socialUserProfile: {}\n });\n };\n\n showTermsStep = () => {\n const { user, showSocialTermsStepAsModal } = this.props;\n const { socialUserProfile, socialUserProfile: { type, isFormUser = false } } = this.state;\n hideGoogleOneTapContainerEl();\n if (showSocialTermsStepAsModal || type === 'googleOneTap' || isFormUser) {\n renderStandaloneSocialTermsModal({\n user,\n socialUserProfile,\n onSocialTermsContinue: this.handleSocialTermsContinue,\n onSocialTermsClose: this.handleSocialTermsModalClose\n });\n } else {\n this.handleNavigationChangeRequest('socialTermsStep');\n }\n };\n\n handleSocialTermsContinue = isTermsAgreed => {\n const { socialUserProfile: { type, token } } = this.state;\n if (isTermsAgreed) {\n this.socialLoginRequest(type, token);\n }\n };\n\n /**\n * Fires when the user suceeds logging in through a single sign on\n * using SAML.\n * @param {object} response response holding user data.\n */\n handleSSOLoginSuccess = response => {\n preLoginCheck().then(preLoginResponse => {\n const { preLogin: hasMFA, primaryMethod = '' } = preLoginResponse;\n if (hasMFA) {\n // If user has multi factor authantication, proceed to that.\n this.setState({\n lastTFAResponse: preLoginResponse,\n isSocialTFA: false,\n tfaMethod: primaryMethod\n });\n this.handleNavigationChangeRequest('twoFactorLogin');\n } else {\n this.handleLoginSuccess(response);\n }\n });\n };\n\n handleSSOLoginFail = message => {\n // TODO: request UI text review and add translation\n const errorMessage = message ?? 'An error occured in single sign on process';\n this.setExternalErrorMessage(errorMessage);\n };\n\n handleAppleSuccess = ({\n user: {\n email,\n name: {\n firstName = '',\n lastName = ''\n } = {}\n } = {},\n authorization: {\n code,\n id_token: idToken\n }\n }) => {\n const {\n actionLogger, apiURL, appName, buttonNames\n } = this.props;\n if (actionLogger) {\n actionLogger({\n target: 'appleLogin'\n });\n }\n\n const defaultButtonName = appName ? `apple-${appName}` : '';\n const buttonName = buttonNames.apple ? buttonNames.apple : defaultButtonName;\n\n const { isSocialLoginForDeleteMyAccountFlow, isSocialLoginForVerification } = this.props;\n\n if (isSocialLoginForDeleteMyAccountFlow || isSocialLoginForVerification) {\n const token = JSON.stringify({ authorizationCode: code, identityToken: idToken, realNonce: this.nonce });\n const verifierFunction = isSocialLoginForDeleteMyAccountFlow ? this.handleDeleteAccount : this.handleVerifyAccount;\n verifierFunction('apple', token);\n return;\n }\n\n Axios.post(`${apiURL}/login/apple`, qs.stringify({\n authorizationCode: code,\n nonce: this.nonce,\n identityToken: idToken,\n name: `${firstName} ${lastName}`,\n email,\n language: global.navigator.language,\n timezone: getPossibleTimeZone(),\n screen_resolution: getScreenResolution(),\n location: global.location.pathname,\n button_name: buttonName,\n ref_app: appName\n }), {\n withCredentials: true,\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded'\n }\n })\n .then(response => {\n const {\n data: {\n responseCode, success, message, content = {}, duration\n }\n } = response;\n const isLogEnabled = getUrlParameter('logAppleLogin');\n\n if (isLogEnabled === '1') {\n console.log(response);\n }\n\n if (!success || responseCode !== 200) {\n throw new Error(message);\n }\n if (content?.isNewUser) {\n handleSignupCompletedEvents(undefined, 'apple');\n }\n const { primaryMethod = '' } = content;\n\n if (primaryMethod) {\n this.handle2FASocialLoginRequest({ ...content, duration: duration, success: success });\n return;\n }\n this.handleLoginSuccess(response);\n })\n .catch(error => {\n const { response: { data: { error: message = '' } = {} } = {}, message: errorMsg = '' } = error;\n if (message === \"Sorry, you can't signup from this country.\" || errorMsg === \"Sorry, you can't signup from this country.\") {\n openOFACModal(this.ofacModalRef, email);\n }\n\n if (message === 'Your account has been suspended.' || errorMsg === 'Your account has been suspended.') {\n return handleCustomNavigation('/account-suspended', '_self', true);\n }\n\n console.error('--Couldn\\'t login', error);\n this.handleSocialErrorChange(error);\n });\n };\n\n handleGoogleSuccess = googleUser => {\n const { code: token = '' } = googleUser || {};\n const { actionLogger } = this.props;\n const { socialUserProfile: currentProfile } = this.state;\n if (googleUser && token) {\n if (actionLogger) {\n actionLogger({\n target: 'googleLogin'\n });\n }\n this.setState({\n socialUserProfile: {\n token,\n type: 'google',\n ...currentProfile\n },\n socialLoginVerificationHash: ''\n }, () => this.socialLoginRequest('google', token));\n } else {\n this.handleSocialErrorChange(true);\n }\n };\n\n handleFacebookSuccess = ({ status, authResponse }) => {\n const { socialUserProfile: currentProfile } = this.state;\n const { accessToken: token = '' } = authResponse || {};\n if (status === 'connected' && authResponse && token) {\n const { actionLogger } = this.props;\n if (actionLogger) {\n actionLogger({\n target: 'facebookLogin'\n });\n }\n this.setState({\n socialUserProfile: {\n token,\n type: 'facebook',\n ...currentProfile\n },\n socialLoginVerificationHash: ''\n }, () => this.socialLoginRequest('facebook', token));\n } else {\n this.handleSocialErrorChange(true);\n }\n };\n\n handleMicrosoftSuccess = authResponse => {\n const { socialUserProfile: currentProfile } = this.state;\n const { accessToken = '', idToken = '' } = authResponse || {};\n if (authResponse && accessToken && idToken) {\n const multipleTokens = JSON.stringify({ idToken, accessToken });\n const { actionLogger } = this.props;\n if (actionLogger) {\n actionLogger({\n target: 'microsoftLogin'\n });\n }\n this.setState({\n socialUserProfile: {\n token: multipleTokens,\n type: 'microsoft',\n ...currentProfile\n },\n socialLoginVerificationHash: ''\n }, () => this.socialLoginRequest('microsoft', multipleTokens));\n } else {\n this.handleSocialErrorChange(true);\n }\n };\n\n handleSalesforceSuccess = authResponse => {\n const { socialUserProfile: currentProfile } = this.state;\n const { code = '', token = '' } = authResponse || {};\n if (authResponse && code && token) {\n const multipleTokens = JSON.stringify({ code, token });\n const { actionLogger } = this.props;\n if (actionLogger) {\n actionLogger({\n target: 'salesforceLogin'\n });\n }\n this.setState({\n socialUserProfile: {\n token: multipleTokens,\n type: 'salesforce',\n ...currentProfile\n },\n socialLoginVerificationHash: ''\n }, () => this.socialLoginRequest('salesforce', multipleTokens));\n } else {\n this.handleSocialErrorChange(true);\n }\n };\n\n handleGoogleFail = error => {\n this.handleSocialErrorChange(true);\n // eslint-disable-next-line no-console\n console.log('failure', error);\n };\n\n handleDeleteAccount = async (type, token) => {\n const { user } = this.props;\n\n const { credentials: { username } } = user;\n // All providers have their own error state management that's why there are nested control blocks\n try {\n const result = await verifyAndDelete({\n type, token, username\n });\n if (result === true || (typeof result === 'object' && result.token)) {\n this.activeComponentRef.current.handleStep(3);\n } else {\n this.setState({\n thereSocialError: true\n });\n }\n } catch (e) {\n this.setState({\n thereSocialError: true\n });\n }\n };\n\n handleVerifyAccount = async (type, token) => {\n const { user } = this.props;\n\n const { credentials: { username } } = user;\n // All providers have their own error state management that's why there are nested control blocks\n try {\n const result = await verifyUser({\n type, token, username\n });\n const isResultWithToken = (typeof result === 'object') && result.token;\n if (result === true || isResultWithToken) {\n this.activeComponentRef.current.approveVerification();\n // TODO if (isResultWithToken && isSocialLoginForVerification) {\n // set token\n // }\n } else {\n this.setState({\n thereSocialError: true\n });\n }\n } catch (e) {\n this.setState({\n thereSocialError: true\n });\n }\n };\n\n handle2FASocialLoginRequest = response => {\n const { primaryMethod = '' } = response;\n this.setState({\n lastTFAResponse: response,\n isSocialTFA: false,\n tfaMethod: primaryMethod\n });\n this.handleNavigationChangeRequest('twoFactorLogin');\n };\n\n socialLoginRequest = async (type, token, tfaVerificationCode, tfaMethod, eaVerificationCode) => {\n const { idToken } = this.state;\n this.setState({ lastSocialLoginType: type, lastSocialLoginToken: token });\n const {\n apiURL, forceUser, isSocialLoginForDeleteMyAccountFlow, appName, buttonNames, isSocialLoginForVerification, initiator\n } = this.props;\n\n if (isSocialLoginForDeleteMyAccountFlow || isSocialLoginForVerification) {\n const verifierFunction = isSocialLoginForDeleteMyAccountFlow ? this.handleDeleteAccount : this.handleVerifyAccount;\n verifierFunction(type, token);\n return;\n }\n const newGoogleFlow = type === 'google' ? 1 : 0;\n\n const { socialLoginVerificationHash } = this.state;\n const enableSocialTerms = true;\n const authToken = idToken || token;\n if (forceUser) {\n // continue via request-server\n // since the api does not have\n // the functionality of claimGuestAccount\n forceUserSocialLogin(\n type,\n authToken,\n this.handleLoginSuccess,\n this.handleSocialErrorChange,\n appName,\n this.handleSocialTFAResponse,\n tfaVerificationCode,\n tfaMethod,\n buttonNames,\n socialLoginVerificationHash,\n this.handleSocialTermsRequired,\n enableSocialTerms,\n this.handleSocialEAResponse,\n eaVerificationCode,\n newGoogleFlow,\n this.ofacModalRef\n );\n return;\n }\n\n const isGoogle = type === 'google';\n\n Axios.post(`${apiURL}/formuser/login/${type === 'googleOneTap' ? 'google' : type}`, qs.stringify({\n token: authToken,\n checkSocialLogin: true,\n ...(initiator && { initiator }),\n ...(isGoogle && { newGoogleFlow }),\n ...(isGoogle && { redirectUri: window.location.host }),\n ...(socialLoginVerificationHash && { socialLoginHash: socialLoginVerificationHash })\n }), {\n withCredentials: true,\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded'\n }\n })\n .then(({ data: resp }) => {\n const {\n responseCode,\n message,\n content: {\n email, imageUrl, fullName, socialLoginHash, idToken: jwtToken\n }\n } = resp;\n\n if (responseCode !== 200) {\n throw new Error(message);\n }\n\n if (socialLoginHash) {\n this.handleSocialTermsRequired({\n socialLoginHash,\n socialUserProfile: {\n email,\n imageUrl,\n fullName,\n isFormUser: true\n },\n idToken: jwtToken\n });\n return { data: false };\n }\n return { data: resp };\n })\n .then(({ data: resp }) => {\n if (resp) {\n this.handleLoginSuccess(resp);\n }\n })\n .catch(error => {\n const { response: { data: { error: message = '' } = {} } = {}, message: errorMsg = '' } = error;\n if (message === \"Sorry, you can't signup from this country.\" || errorMsg === \"Sorry, you can't signup from this country.\") {\n openOFACModal(this.ofacModalRef);\n }\n\n if (message === 'Your account has been suspended.' || errorMsg === 'Your account has been suspended.') {\n return handleCustomNavigation('/account-suspended', '_self', true);\n }\n\n console.error('--Couldn\\'t login', error);\n this.handleSocialErrorChange(error);\n });\n };\n\n regularLoginRequest = async (username, password, _appName, _recaptcha, tfaToken, tfaTokenType, _buttonNames, eaToken, rememberDevice) => {\n const { apiURL } = this.props;\n const userLoginRequest = () => {\n return Axios.post(`${apiURL}/user/login`,\n createFormData({\n username,\n password,\n rememberDevice,\n ...(tfaToken && { token: tfaToken }),\n ...(eaToken && { eaToken: eaToken }),\n ...(tfaToken && { tokenType: tfaTokenType }),\n ...(!tfaToken && { eat: '1' }) // email auth parameter\n }), {\n withCredentials: true,\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded'\n }\n });\n };\n\n const formUserLoginRequest = () => {\n const { appName } = this.props;\n return Axios.post(`${apiURL}/formuser/login`, createFormData({\n email: username,\n password,\n ref_app: appName\n }), {\n withCredentials: true,\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded'\n }\n });\n };\n\n const handleConnectionFailure = error => {\n throw new LoginError('Network', null, 'An error occured: Please check your internet connection', error);\n };\n\n const parseResponse = async response => {\n const requestURL = response?.config?.url || '';\n const loginType = /formuser/.test(requestURL) ? 'formUser' : 'user';\n return { loginType, response: response.data };\n };\n\n let loginResponse;\n let tfaResponse = false;\n let requestError;\n const failedResponses = [];\n\n const loginRequests = tfaToken ? [userLoginRequest(username, password)] : [userLoginRequest(username, password), formUserLoginRequest(username, password)];\n await Promise.all(loginRequests.map(loginPromise => loginPromise.catch(handleConnectionFailure).then(parseResponse)))\n .then(responses => {\n responses.forEach(({ response, loginType }) => {\n const { responseCode = 500, message = '' } = response;\n if (responseCode === 200) {\n tfaResponse = response?.content?.primaryMethod || false;\n loginResponse = response;\n } else {\n failedResponses.push({\n loginType,\n message\n });\n }\n });\n })\n .catch(error => {\n if (!(error instanceof LoginError)) throw error;\n const { type } = error;\n if (['Network', 'jsonParse'].includes(type)) {\n requestError = error;\n }\n });\n\n // if (loginResponse?.emailAuthToken) return [false, loginResponse, false, true]; // email authentication\n\n if (loginResponse) {\n if (tfaResponse) {\n return [false, loginResponse, true, false]; // 2fa\n }\n return [true, loginResponse];\n }\n\n let userRequestError;\n let formUserRequestError;\n failedResponses.forEach(({ loginType, message }) => {\n if (loginType === 'formUser') {\n formUserRequestError = { message };\n } else if (!/You're not authorized to use/.test(message)) {\n userRequestError = { message };\n }\n });\n\n return [false, requestError || userRequestError || formUserRequestError];\n };\n\n handleLogin = (username, password, recaptcha, tfaToken, tfaTokenType, eaToken, rememberDevice, isRecovery) => {\n const {\n forceUser, appName, shouldCallNavigate, buttonNames\n } = this.props;\n const {\n regularLoginRequest, handleNavigationChangeRequest, handleLoginSuccess, handleTFAResponse, handleEAResponse\n } = this;\n return handleLoginHelper({\n username,\n password,\n tfaToken,\n tfaTokenType,\n forceUser,\n regularLoginRequest,\n handleNavigationChangeRequest,\n handleLoginSuccess,\n appName,\n recaptcha,\n shouldCallNavigate,\n handleTFAResponse,\n buttonNames,\n eaToken,\n handleEAResponse,\n rememberDevice,\n isRecovery\n });\n };\n\n handleLoginSuccess = (response = {}) => {\n const {\n content: user,\n data: { user: userData, newUser } = {},\n responseCode\n } = response;\n const {\n forceUser,\n onUserLogin,\n shouldCallNavigate,\n baseApp\n } = this.props;\n const { actionLogger } = this.props;\n if (actionLogger) {\n actionLogger({\n target: 'loginWithEmail'\n });\n }\n\n if (forceUser) {\n // be in mind that social logins dont return user\n onUserLogin(user || userData || false, { newUser });\n if (baseApp === 'form-encryption') {\n this.handleNavigationChangeRequest('verifyAccount');\n }\n } else if (responseCode === 200) {\n this.isLoggedIn = true;\n\n const { primaryMethod = '' } = user;\n if (primaryMethod) {\n this.handle2FASocialLoginRequest(user);\n return;\n }\n\n if (window?.JFAppsManager?.isOpenedInPortal()) {\n window.JFAppsManager.userChanged(user);\n }\n\n if (shouldCallNavigate) {\n this.handleNavigationChangeRequest('epilogue');\n }\n\n if (window.JFFormUserHelper) {\n window.JFFormUserHelper.setUser(user);\n }\n\n onUserLogin(user, { newUser });\n }\n };\n\n handleSalesforceLoginClick = () => {\n const { onSalesforceLoginClick } = this.props;\n\n const salesforceLogin = initSalesforceSignin();\n if (!salesforceLogin) return;\n salesforceLogin.then(this.handleSalesforceSuccess);\n\n onSalesforceLoginClick();\n };\n\n handleGoogleLoginClick = () => {\n const { onGoogleLoginClick } = this.props;\n const client = initGoogleSignin(this.handleGoogleSuccess);\n if (client) {\n client.requestCode();\n }\n\n onGoogleLoginClick();\n };\n\n handleAppleLoginClick = () => {\n const { onAppleLoginClick } = this.props;\n\n const appleSignin = initAppleSignin(this.nonce);\n if (appleSignin) appleSignin.then(this.handleAppleSuccess);\n\n onAppleLoginClick();\n };\n\n handleFBLoginClick = () => {\n const { onFBLoginClick } = this.props;\n\n const fbLogin = initFBSignin();\n if (!fbLogin) return;\n fbLogin(this.handleFacebookSuccess, { scope: 'public_profile,email' });\n\n onFBLoginClick();\n };\n\n handleMicrosoftLoginClick = () => {\n const { onMicrosoftLoginClick } = this.props;\n\n const microsoftLogin = initMicrosoftSignin();\n if (!microsoftLogin) return;\n microsoftLogin.then(this.handleMicrosoftSuccess);\n\n onMicrosoftLoginClick();\n };\n\n handleNavigationChangeRequest = nextRoute => {\n const isScreenExists = this.getActiveScreen(nextRoute);\n if (!isScreenExists) return;\n\n const { onNavigationChange } = this.props;\n\n this.setState({\n activeScreenKey: nextRoute,\n thereSocialError: false\n }, () => {\n onNavigationChange(nextRoute);\n });\n };\n\n handleSocialErrorChange = status => {\n this.setState({\n thereSocialError: !!status,\n thereErrorMessage: status\n }, () => {\n this.clearError = setTimeout(() => {\n this.setState({\n thereSocialError: false,\n thereErrorMessage: false\n });\n }, 3000);\n });\n };\n\n getActiveScreen = screenKey => {\n const { additionalScreens, forceSSO } = this.props;\n\n const loginScreens = {\n signupOptions: SignupOptions,\n signupWithEmail: SignupWithEmail,\n loginOptions: (forceSSO ? SSOOptions : LoginOptions),\n forgotPassword: ForgotPassword,\n resetSuccess: ResetSuccess,\n twoFactorLogin: TwoFactorLogin,\n twoFactorMethods: TwoFactorMethods,\n socialInit: SocialInit,\n socialTermsStep: SocialTermsStep,\n emailAuthLogin: EmailAuthLogin,\n deleteAccount: DeleteAccountModal,\n verifyAccount: VerifyAccountModal,\n ofacModal: OFACModal,\n signupWithSocialOpts: SignupWithSocialOpts,\n recoverAccountPage: RecoverAccountPage,\n accountRecoveryViewTicket: AccountRecoveryViewTicket,\n recoverAccountNotification: RecoverAccountNotification\n };\n const possibleScreens = {\n ...loginScreens,\n ...additionalScreens\n };\n return possibleScreens[screenKey];\n };\n\n handleClose = () => {\n const { navigationWrapper, onClose, isReact17 } = this.props;\n onClose();\n if (isReact17 && navigationWrapper instanceof HTMLElement) {\n ReactDOM.unmountComponentAtNode(navigationWrapper);\n }\n\n const { activeScreenKey } = this.state;\n if (typeof window.__accountSharingLogger === 'function' && activeScreenKey === 'emailAuthLogin') {\n window.__accountSharingLogger({ action: 'click', target: 'closeButton' });\n }\n };\n\n handleUserLogout = async (...args) => {\n const { onUserLogout } = this.props;\n if (window?.JFAppsManager?.isOpenedInPortal()) {\n window.JFAppsManager.logUserOut();\n }\n onUserLogout(...args);\n };\n\n handle2FARecoverAccount = async () => {\n this.setState({\n tfaAccountRecoveryProps: {\n isErrored: false, errorMessage: '', email: '', isLoading: true, ticket: ''\n }\n });\n try {\n const { responseCode = '', message = '', content: { email = '', hasOpenTicket = false, ticket = '' } } = await send2FAAccountRecoveryEmail();\n if (responseCode === 200) {\n if (!hasOpenTicket && !ticket && email) {\n this.setState({\n tfaAccountRecoveryProps: {\n isErrored: false,\n errorMessage: '',\n email: email,\n isLoading: false,\n ticket: ''\n }\n }, () => this.handleNavigationChangeRequest('recoverAccountNotification'));\n } else if (hasOpenTicket && ticket && !email) {\n this.setState({\n tfaAccountRecoveryProps: {\n isErrored: false,\n errorMessage: '',\n email: '',\n isLoading: false,\n ticket: ticket\n }\n }, () => this.handleNavigationChangeRequest('accountRecoveryViewTicket'));\n } else {\n this.setState({\n tfaAccountRecoveryProps: {\n isErrored: true,\n errorMessage: 'An error occured. Please try again.',\n email: '',\n isLoading: false,\n ticket: ''\n }\n });\n }\n } else {\n this.setState({\n tfaAccountRecoveryProps: {\n isErrored: true,\n errorMessage: /You're not authorized to use/.test(message) ? 'The session has expired. Please login again.' : 'An error occured. Please try again.',\n email: '',\n isLoading: false,\n ticket: ''\n }\n });\n }\n } catch ({ message = '' }) {\n this.setState({\n tfaAccountRecoveryProps: {\n isErrored: true,\n errorMessage: /You're not authorized to use/.test(message) ? 'The session has expired. Please login again.' : 'An error occured. Please try again.',\n email: '',\n isLoading: false,\n ticket: ''\n }\n });\n }\n };\n\n handleEAResponseStateChange = () => {\n const { showEmailAuthStepAsModal } = this.props;\n const {\n lastEAResponse,\n thereSocialError,\n thereErrorMessage,\n isSocialEA\n } = this.state;\n\n if (showEmailAuthStepAsModal) {\n renderStandaloneEmailAuthModal({\n handleEALogin: this.handleEALogin,\n lastEAResponse,\n thereSocialError,\n thereErrorMessage,\n isSocialEA\n });\n } else {\n this.handleNavigationChangeRequest('emailAuthLogin');\n }\n };\n\n handleTFAResponse = (data, username, password) => {\n const { primaryMethod = '' } = data;\n this.setState({\n lastLoginCredentials: { username, password },\n lastTFAResponse: data,\n isSocialTFA: false,\n tfaMethod: primaryMethod\n });\n this.handleNavigationChangeRequest('twoFactorLogin');\n };\n\n handleEAResponse = (data, username, password) => {\n this.setState({\n lastLoginCredentials: { username, password },\n lastEAResponse: data,\n isSocialEA: false\n }, () => this.handleEAResponseStateChange());\n };\n\n handleTFALogin = async ({\n verificationCode, newType, shouldNavigate = false, rememberDevice\n } = {}) => {\n const {\n lastLoginCredentials: {\n username,\n password\n },\n lastTFAResponse: { token: { type } }\n } = this.state;\n const tfaMethod = newType || type;\n const isRecovery = tfaMethod === 'recovery';\n this.setState({ tfaMethod });\n if (newType === 'recovery' && !verificationCode) {\n this.handleNavigationChangeRequest('twoFactorLogin');\n return;\n }\n\n if (newType && !shouldNavigate && !verificationCode) {\n this.handleNavigationChangeRequest('twoFactorLogin');\n return;\n }\n const [loginSuccess, loginResponse] = await this.handleLogin(username, password, false, verificationCode, tfaMethod, null, rememberDevice, isRecovery);\n return [loginResponse, loginSuccess];\n };\n\n handleEALogin = async ({ verificationCode, isSocialEA = false } = {}) => {\n const {\n lastLoginCredentials: {\n username,\n password\n },\n lastSocialLoginType,\n lastSocialLoginToken\n } = this.state;\n\n if (isSocialEA) {\n this.socialLoginRequest(lastSocialLoginType, lastSocialLoginToken, null, null, verificationCode);\n return;\n }\n\n const [loginSuccess, loginResponse] = await this.handleLogin(username, password, false, null, null, verificationCode);\n return [loginResponse, loginSuccess];\n };\n\n handleSocialTFAResponse = tfaResponse => {\n this.setState({\n lastTFAResponse: tfaResponse,\n isSocialTFA: true\n },\n () => this.handleNavigationChangeRequest('twoFactorLogin'));\n };\n\n handleSocialEAResponse = (eaResponse, type) => {\n const { idToken } = eaResponse;\n if (type) {\n this.setState({ lastSocialLoginType: type });\n }\n this.setState({\n lastEAResponse: eaResponse,\n isSocialEA: true,\n idToken\n },\n () => this.handleEAResponseStateChange());\n };\n\n openLoginFlowModal = () => {\n this.setState({\n showThankyouModal: false\n });\n };\n\n handleLoginFlowDefaultAndThankYouModal = DefaultComponent => {\n const { showThankyouModal } = this.state;\n const { isSSO, onUserLogin } = this.props;\n\n return (\n showThankyouModal ? (\n undefined}\n />\n ) : (\n
    \n {DefaultComponent}\n
    \n )\n );\n };\n\n handleLoginFlowAndThankYouModal = (ComponentValue, mode) => {\n const { showThankyouModal } = this.state;\n const {\n thankYouModalOnClose, closableDialog, closableComponent, modalOptions, isSSO, onUserLogin\n } = this.props;\n const subTitles = modalOptions.subTitles ? modalOptions.subTitles : [\n Texts.COMPLETED_TASK\n ];\n return (\n showThankyouModal ? (\n \n ) : (\n
    \n
    \n
    \n {closableComponent && (\n \n \n \n )}\n
    \n {ComponentValue}\n
    \n
    \n
    \n
    \n )\n );\n };\n\n changeActiveScreen = screenName => {\n this.setState({\n activeScreenKey: screenName\n });\n };\n\n changeActiveMode = mode => {\n this.setState({\n mode: mode\n });\n };\n\n render() {\n const {\n activeScreenKey,\n thereSocialError,\n lastTFAResponse,\n lastEAResponse,\n tfaMethod,\n isSocialTFA,\n isSocialEA,\n thereErrorMessage,\n socialUserProfile,\n isMsSignupTestEnabled,\n isMsSignupControlVariant,\n isMsSignupTestBVariant,\n isMsSignupTestCVariant,\n areSocialButtonsLoading,\n mode,\n externalErrorMessage,\n isSwsoTestVariant,\n tfaAccountRecoveryProps\n } = this.state;\n\n const {\n manager,\n skippable,\n onSkip,\n enforceHIPAARuleSet,\n apiURL,\n greetingMessage,\n hideGreetingMessageOnSignupOptions,\n greetingDescription,\n loginButtonText,\n signupButtonText,\n greetingMessageOnSignupWithEmail,\n user,\n signupPredefinedEmail,\n loginPredefinedEmail,\n verificationHash,\n resourceID,\n productType,\n forceLogin,\n forceUser,\n appName,\n isHIPAA,\n includeConfirm,\n showLogoOnSignupOptions,\n showLogoOnSignupWithEmail,\n actionLogger,\n loginWelcomeText,\n OtherColumnComponents,\n appleSigninEnabled,\n loginDescriptionText,\n showFormOnSignupOptions,\n buttonNames,\n socialInitData,\n shrinkConfirmHeight,\n shrinkConfirmOnMobile,\n logoSource,\n firstShowThankyouModal,\n disableEmail,\n socialLogins,\n AfterVerificationComponent,\n BeforeVerificationComponent,\n VerificationWrapper,\n usePortal,\n builderShowSlides,\n horizontalSocialButtons,\n squareSocialButtonStyle,\n readonlyEmail,\n isVerified,\n setIsVerified,\n baseApp,\n showJotformLogo,\n showSalesforceLogin,\n showEnterpriseLogin,\n hideSignUp,\n redirectURL,\n signupPredefinedName,\n unusualSignupCode,\n unusualSignupToken,\n initiator,\n forceShowBack,\n ssoLoginOptions,\n ssoNormalLoginEnabled,\n initialScreen,\n useSwsoButtons,\n isOnboardingFlow,\n isOnboardingTestVariantReversed\n } = this.props;\n\n const ActiveComponent = this.getActiveScreen(activeScreenKey);\n const Component = (\n f}\n ref={this.activeComponentRef}\n // delete my account\n socialLogins={socialLogins}\n handleClose={this.handleClose}\n // VerifyAccountModal\n AfterVerificationComponent={AfterVerificationComponent}\n BeforeVerificationComponent={BeforeVerificationComponent}\n VerificationWrapper={VerificationWrapper}\n isVerified={isVerified}\n setIsVerified={setIsVerified}\n baseApp={baseApp}\n ofacModalRef={this.ofacModalRef}\n changeActiveScreen={this.changeActiveScreen}\n builderShowSlides={builderShowSlides}\n readonlyEmail={readonlyEmail}\n showJotformLogo={showJotformLogo}\n showSalesforceLogin={showSalesforceLogin}\n showEnterpriseLogin={showEnterpriseLogin}\n hideSignUp={hideSignUp}\n ssoLoginOptions={ssoLoginOptions}\n redirectURL={redirectURL}\n signupPredefinedName={signupPredefinedName}\n isSwsoTestVariant={isSwsoTestVariant}\n forceShowBack={forceShowBack && !forceLogin && initialScreen !== 'loginOptions'}\n tfaAccountRecoveryProps={tfaAccountRecoveryProps}\n handle2FARecoverAccount={this.handle2FARecoverAccount}\n useSwsoButtons={useSwsoButtons}\n handleSocialEAResponse={this.handleSocialEAResponse}\n isOnboardingFlow={isOnboardingFlow} // A/B Test: signupOnboardingIV\n isOnboardingTestVariantReversed={isOnboardingTestVariantReversed} // A/B Test: signupOnboardingIV\n getUserSSOStatus={getUserSSOStatus}\n />\n );\n\n switch (mode) {\n case 'modal':\n return (\n firstShowThankyouModal ? (\n this.handleLoginFlowAndThankYouModal(Component, mode)\n ) : (\n \n \n
    \n
    \n \n \n \n \n {Component}\n
    \n
    \n
    \n
    \n \n )\n );\n case 'multi-column-modal':\n const allComponents = [Component, ...OtherColumnComponents];\n return (\n
    \n
    \n
    \n \n \n \n
    \n {allComponents.map((Column, id) => (\n
    \n {Column}\n
    \n ))}\n
    \n
    \n
    \n
    \n );\n case 'unusual-signup':\n return (\n \n );\n default:\n return (\n firstShowThankyouModal ? (\n this.handleLoginFlowDefaultAndThankYouModal(Component, mode)\n ) : (\n
    \n {Component}\n
    \n )\n );\n }\n }\n}\n\nLoginFlow.propTypes = {\n user: shape(),\n apiURL: string.isRequired,\n manager: shape(),\n onClose: func,\n onUserLogout: func,\n onNavigationChange: func,\n onGoogleLoginClick: func,\n onFBLoginClick: func,\n onMicrosoftLoginClick: func,\n onAppleLoginClick: func,\n onSalesforceLoginClick: func,\n additionalScreens: shape(),\n navigationWrapper: oneOfType([\n node,\n object\n ]).isRequired,\n onUserLogin: func,\n initialScreen: string,\n skippable: bool,\n onSkip: func,\n enforceHIPAARuleSet: bool,\n mode: oneOf([\n 'modal',\n 'multi-column-modal',\n 'unusual-signup',\n 'fullScreen',\n 'default'\n ]),\n greetingMessage: string,\n hideGreetingMessageOnSignupOptions: bool,\n greetingDescription: string,\n loginButtonText: string,\n loginWelcomeText: string,\n loginDescriptionText: string,\n signupPredefinedEmail: string,\n loginPredefinedEmail: string,\n signupButtonText: string,\n greetingMessageOnSignupWithEmail: string,\n verificationHash: string,\n productType: string,\n resourceID: string,\n forceLogin: bool,\n forceUser: bool,\n isSocialLoginForDeleteMyAccountFlow: bool,\n isSocialLoginForVerification: bool,\n appName: string,\n isHIPAA: bool,\n includeConfirm: bool,\n showLogoOnSignupOptions: bool,\n showLogoOnSignupWithEmail: bool,\n shouldCallNavigate: bool,\n actionLogger: func,\n OtherColumnComponents: arrayOf(element),\n appleSigninEnabled: bool,\n showFormOnSignupOptions: bool,\n enableGoogleOneTap: bool,\n shrinkConfirmOnMobile: bool,\n shrinkConfirmHeight: number,\n buttonNames: shape({\n google: string,\n googleOneTap: string,\n facebook: string,\n microsoft: string,\n apple: string,\n salesforce: string,\n email: string\n }),\n socialInitData: shape({}),\n logoSource: string,\n firstShowThankyouModal: bool,\n thankYouModalOnClose: func,\n showSocialTermsStepAsModal: bool,\n disableEmail: bool,\n horizontalSocialButtons: bool,\n squareSocialButtonStyle: bool,\n showEmailAuthStepAsModal: bool,\n closableDialog: bool,\n closableComponent: bool,\n modalOptions: shape({}),\n socialLogins: arrayOf(string),\n AfterVerificationComponent: elementType,\n BeforeVerificationComponent: elementType,\n VerificationWrapper: shape({\n Component: elementType,\n props: shape({})\n }),\n usePortal: bool,\n builderShowSlides: func,\n readonlyEmail: bool,\n isVerified: bool,\n setIsVerified: func,\n baseApp: string,\n showJotformLogo: bool,\n showSalesforceLogin: bool,\n showEnterpriseLogin: bool,\n hideSignUp: bool,\n redirectURL: string,\n signupPredefinedName: string,\n showUnusualSignupFlow: bool,\n unusualSignupCode: string,\n unusualSignupToken: string,\n initiator: string,\n swsoTestVariant: bool,\n forceShowBack: bool,\n ssoLoginOptions: arrayOf(shape({\n name: string,\n logoURL: string,\n configKey: string,\n idpName: string\n })),\n isSSO: bool,\n isReact17: bool,\n ssoNormalLoginEnabled: bool,\n useSwsoButtons: bool,\n isOnboardingFlow: bool,\n isOnboardingTestVariantReversed: bool,\n forceSSO: bool\n};\n\nLoginFlow.defaultProps = {\n user: null,\n onClose: () => undefined,\n skippable: false,\n onSkip: () => undefined,\n enforceHIPAARuleSet: false,\n onUserLogin: () => undefined,\n onUserLogout: () => undefined,\n onNavigationChange: () => undefined,\n onGoogleLoginClick: () => undefined,\n onFBLoginClick: () => undefined,\n onMicrosoftLoginClick: () => undefined,\n onAppleLoginClick: () => undefined,\n onSalesforceLoginClick: () => undefined,\n thankYouModalOnClose: () => undefined,\n initialScreen: 'signupOptions',\n additionalScreens: {},\n greetingMessage: 'Welcome to Jotform',\n hideGreetingMessageOnSignupOptions: false,\n greetingDescription: '',\n loginButtonText: Texts.LOGIN_TEXT,\n loginWelcomeText: Texts.WELCOME_BACK,\n loginDescriptionText: '',\n signupButtonText: Texts.SIGN_UP,\n greetingMessageOnSignupWithEmail: Texts.SIGN_UP_EMAIL,\n signupPredefinedEmail: '',\n loginPredefinedEmail: '',\n manager: {},\n mode: 'modal',\n verificationHash: '',\n productType: 'form',\n resourceID: '',\n forceLogin: false,\n forceUser: false,\n isSocialLoginForDeleteMyAccountFlow: false,\n isSocialLoginForVerification: false,\n appName: '',\n isHIPAA: false,\n includeConfirm: false,\n showLogoOnSignupOptions: true,\n showLogoOnSignupWithEmail: false,\n shouldCallNavigate: true,\n actionLogger: null,\n OtherColumnComponents: [],\n appleSigninEnabled: false,\n showFormOnSignupOptions: false,\n enableGoogleOneTap: false,\n buttonNames: {\n google: '',\n googleOneTap: 'GoogleOnetap',\n facebook: '',\n microsoft: '',\n apple: '',\n salesforce: '',\n emailLogin: '',\n emailSignup: ''\n },\n horizontalSocialButtons: false,\n squareSocialButtonStyle: false,\n socialInitData: {},\n shrinkConfirmOnMobile: false,\n shrinkConfirmHeight: 750,\n logoSource: '',\n firstShowThankyouModal: false,\n showSocialTermsStepAsModal: false,\n disableEmail: false,\n showEmailAuthStepAsModal: false,\n closableDialog: true,\n closableComponent: true,\n modalOptions: {},\n socialLogins: [],\n AfterVerificationComponent: null,\n BeforeVerificationComponent: null,\n VerificationWrapper: null,\n usePortal: false,\n builderShowSlides: f => f,\n readonlyEmail: false,\n isVerified: false,\n setIsVerified: f => f,\n baseApp: '',\n showJotformLogo: false,\n showSalesforceLogin: false,\n showEnterpriseLogin: false,\n hideSignUp: false,\n redirectURL: '',\n signupPredefinedName: '',\n showUnusualSignupFlow: false,\n unusualSignupCode: '',\n unusualSignupToken: '',\n initiator: '',\n swsoTestVariant: false,\n forceShowBack: false,\n ssoLoginOptions: [],\n isSSO: false,\n isReact17: false,\n ssoNormalLoginEnabled: false,\n useSwsoButtons: false,\n isOnboardingFlow: false,\n isOnboardingTestVariantReversed: false,\n forceSSO: false\n};\n","/* eslint-disable max-len */\nimport Styled from 'styled-components';\n\nconst onSmallMobile = 'screen and (max-height: 600px)';\n\nexport const ScPassword = Styled.div`\n * { box-sizing: border-box; }\n\n font-size: 16px;\n max-width: 340px;\n\n .xcl {\n &-field-wr {\n position: relative;\n\n &.forPassword {\n .xcl-lbl-err {\n span { display: block; margin-bottom: 4px; }\n span:before { display: inline-block; content: '-'; margin-right: 3px; }\n }\n }\n }\n\n &-togglePass-btn {\n position: absolute;\n top: 34px;\n right: 7px;\n background: none;\n border: 0;\n padding: 0;\n z-index: 2;\n border-radius: 0;\n border: 0;\n background-color: transparent;\n color: inherit;\n text-align: center;\n height: 30px;\n width: 32px;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n border: 1px solid transparent;\n transition: all .2s;\n\n #signupPage & {\n .tiny-mobile & {\n top: 30px;\n @media ${onSmallMobile}{\n top: 25px;\n right: 1px;\n }\n }\n }\n\n #myaccount & {\n .tiny-mobile & {\n top: 30px;\n @media ${onSmallMobile}{\n top: 25px;\n right: 1px;\n }\n }\n }\n\n .primaryHeader & {\n right: 5px;\n width: 30px;\n height: 26px;\n }\n\n &:focus-visible {\n outline: none;\n border-color: #799AF8;\n box-shadow: 0 0 0 3px #d3ddfd;\n background-color: #eaf0ff;\n .xcl-togglePass-icon {\n svg{\n path{\n fill: #2e69ff;\n }\n }\n }\n }\n\n &:hover{\n background-color: #eaf0ff;\n\n .xcl-togglePass-icon {\n svg{\n path{\n fill: #2e69ff;\n }\n }\n\n .xcl-togglePass-tooltip {\n opacity: 1;\n margin-top: -24px;\n }\n }\n\n }\n\n }\n &-togglePass-icon { display: block; color: rgb(136, 148, 171); }\n &-togglePass-icon svg { width: 20px; height:20px; display: block!important; }\n &-togglePass-tooltip {\n background-color: #2b3245;\n font-size: 12px;\n font-weight: normal;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.33;\n letter-spacing: normal;\n text-align: right;\n color: #c3cad8;\n white-space: nowrap;\n position: absolute;\n right: 3px;\n top: 0;\n min-height: 24px;\n border-radius: 2px;\n padding: 4px;\n opacity: 0;\n pointer-events: none;\n margin-top: -22px;\n transition: all .2s;\n &:after{\n content: \"\";\n display: block;\n width: 12px;\n height: 12px;\n position: absolute;\n right: 6px;\n bottom: -6px;\n z-index: -1;\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12px' height='6.1px' viewBox='0 0 12 6.1' style='enable-background:new 0 0 12 6.1;' xml:space='preserve'%3E%3Cpath style='fill:%232B3245' d='M1.6,0.8l3.6,4.8c0.4,0.5,1.2,0.5,1.6,0l3.6-4.8C10.8,0.3,11.4,0,12,0H0C0.6,0,1.2,0.3,1.6,0.8z'/%3E%3C/svg%3E%0A\");\n background-position: bottom center;\n background-repeat: no-repeat;\n }\n }\n &-inp {\n font-size: 16px;\n display: block;\n width: 100%;\n margin-top: 8px;\n position: relative;\n background-color: #fff;\n z-index: 2;\n\n &::-webkit-credentials-auto-fill-button,\n &::-webkit-contacts-auto-fill-button {\n background-color: #8894AB;\n }\n\n &.forPassword{\n padding-right: 44px;\n\n html[dir=\"rtl\"] & {\n padding-left: 44px;\n padding-right: 12px;\n }\n }\n\n &:focus {\n outline: none;\n border-color: #799AF8;\n box-shadow: 0 0 0 3px #d3ddfd;\n }\n &::placeholder { color: #b9c5cb; }\n &.errored { border-color: #D4372C; box-shadow: 0px 0px 0px 3px #F6D7D5; }\n &.successed { border-color: #4caf50; box-shadow: 0 0 0px 3px #c8e6c9; }\n }\n\n &-lbl-err {\n background-color: #D4372C;\n color: #fff;\n display: inline-block;\n margin-top: 0;\n font-size: 12px;\n text-align: left;\n padding: 0 8px;\n border-radius: 2px;\n z-index: 1;\n line-height: 0;\n transition: all .2s;\n overflow: hidden;\n\n &.isVisible { \n padding: 4px 8px;\n margin-top: 8px;\n line-height: 16px;\n }\n &.forTerms { bottom: 5px; border-radius: 0 4px 4px 4px; padding: 4px 8px; }\n }\n }\n\n @keyframes fieldsSmoothEnter {\n to {\n opacity: 1;\n transform: translateY(0);\n }\n }\n\n .hPass-reqs {\n color: #0A1551;\n font-size: .875rem;\n text-align: left;\n line-height: 1.5em;\n margin-bottom: 2em;\n transition: max-height .3s ease-in-out;\n\n p { \n margin: 0.5em 0 1em;\n color: #333;\n }\n ul {\n margin: 0; padding: 0 0 0 1.25em; list-style-type: disc;\n\n &.has-icon {\n padding: 0;\n list-style-type: none;\n }\n }\n li {\n opacity: 0;\n animation: fieldsSmoothEnter .3s ease-in-out forwards;\n display: flex;\n align-items: center;\n }\n li + li { margin-top: .25em; }\n\n .hPass-reqs-info-text {\n display: flex;\n align-items: center;\n color: #6C73A8;\n gap: 0.5rem;\n }\n\n .hPass-reqs-info-icon {\n flex-shrink: 0;\n width: 1rem;\n height: 1rem;\n }\n }\n\n .hPass-req {\n span {\n width: 16px;\n height: 16px;\n border-radius: 50%;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n margin-right: 8px;\n\n html[dir=\"rtl\"] & {\n margin-left: 8px;\n margin-right: 0;\n }\n }\n\n &.isGood, &.isBad {\n svg {\n fill: #fff;\n width: 12px;\n height: 12px;\n }\n }\n\n &.isGood {\n color: #2B3245;\n span {\n background-color: #54B45C;\n }\n }\n\n &.isBad {\n color: #2B3245;\n span {\n background-color: #FB4958;\n }\n }\n\n &.isNeutral {\n span {\n background-color: #C8CEED;\n }\n }\n }\n\n .forgot-password-ui {\n margin-left: auto;\n display: block;\n margin-top: 8px;\n background-color: transparent;\n border: 0;\n padding: 0;\n font-size: 14px;\n color: #4277FF;\n text-decoration: underline;\n cursor: pointer;\n }\n`;\n","import React, { useRef, useEffect, useState } from 'react';\nimport {\n bool, func, shape, string\n} from 'prop-types';\n\nimport {\n IconCheckSm,\n IconXmarkSm,\n IconInfoCircleFilled\n} from '@jotforminc/svg-icons';\n\nconst icons = {\n isGood: ,\n isBad: \n};\n\nconst RequirementsList = ({\n checkReuse,\n getSecureRuleClass,\n hasSecureTextIcon,\n securePassErrors,\n securePassText,\n securePassContText,\n securePassDescText,\n secureRules,\n passwordSecurityRules\n}) => {\n const [totalHeight, setTotalHeight] = useState(0);\n const descTextRef = useRef(null);\n const requirementListRef = useRef(null);\n\n useEffect(() => {\n const validatedSecuresValues = Object.values(securePassErrors);\n if (!validatedSecuresValues.includes(false) && !validatedSecuresValues.includes(null)) {\n setTotalHeight(0);\n } else if (descTextRef.current && requirementListRef.current) {\n setTotalHeight(descTextRef.current.clientHeight + requirementListRef.current.clientHeight);\n }\n }, [securePassErrors]);\n\n return (\n \n

    \n {checkReuse ? (\n <>\n \n {securePassText}\n {' '}\n {securePassContText}\n \n ) : (\n <>\n \n {securePassDescText}\n \n )}\n

    \n \n {Object.entries(securePassErrors)\n .map(([ruleKey, ruleValue], index) => {\n if (ruleKey === 'reuse') return null;\n const isPasswordSecurityRule = passwordSecurityRules[ruleKey];\n const isVisible = (!isPasswordSecurityRule || (ruleValue === false && isPasswordSecurityRule));\n\n return isVisible && (\n \n {hasSecureTextIcon && (\n \n {icons[getSecureRuleClass(ruleValue)]}\n \n )}\n {secureRules[ruleKey]}\n \n );\n })}\n \n
    \n );\n};\n\nRequirementsList.propTypes = {\n checkReuse: bool,\n getSecureRuleClass: func,\n hasSecureTextIcon: bool,\n securePassErrors: shape({}),\n securePassText: string,\n securePassContText: string,\n securePassDescText: string,\n secureRules: shape({}),\n passwordSecurityRules: shape({})\n};\n\nRequirementsList.defaultProps = {\n checkReuse: false,\n getSecureRuleClass: f => f,\n hasSecureTextIcon: true,\n securePassErrors: {},\n securePassText: '',\n securePassContText: '',\n securePassDescText: '',\n secureRules: {},\n passwordSecurityRules: {}\n};\n\nexport default RequirementsList;\n","import { t } from '@jotforminc/translation';\nimport { Texts } from '@jotforminc/constants';\n\nexport const REGULAR_VALIDATOR_RULE_DEFAULTS = [{\n rule_name: 'characterCount',\n regex: '.{8,}',\n error_message: t(Texts.SECURE_PASS_CHAR_COUNT)\n}, {\n rule_name: 'noLeadingOrTrailingWhitespace',\n // eslint-disable-next-line no-useless-escape\n regex: '^[^\\s].*[^\\s]$',\n error_message: t(Texts.SECURE_PASS_NO_LEADING_OR_TRAILING_WHITESPACE)\n}];\n\nexport const SECURE_VALIDATOR_RULE_DEFAULTS = [\n ...REGULAR_VALIDATOR_RULE_DEFAULTS, {\n rule_name: 'number',\n regex: '[0-9]+',\n error_message: t(Texts.SECURE_PASS_NUMBER)\n }, {\n rule_name: 'lowercase',\n regex: '[a-z]+',\n error_message: t(Texts.SECURE_PASS_LOWERCASE)\n }, {\n rule_name: 'uppercase',\n regex: '[A-Z]+',\n error_message: t(Texts.SECURE_PASS_UPPERCASE)\n }, {\n rule_name: 'specialChar',\n regex: '[^a-zA-Z0-9]',\n error_message: t(Texts.SECURE_PASS_SPECIAL_CHAR)\n }];\n","/* eslint-disable max-len */\n/* eslint-disable max-statements */\nimport React, {\n forwardRef, useImperativeHandle, useState, useRef, useEffect\n} from 'react';\nimport {\n bool, func, shape, string\n} from 'prop-types';\nimport { Hooks } from '@jotforminc/uikit';\nimport { t } from '@jotforminc/translation';\nimport { Texts } from '@jotforminc/constants';\n\nimport '../../styles/style.scss';\nimport { IconEyeSlashFilled, IconEyeFilled } from '@jotforminc/svg-icons';\nimport { checkPasswordReuse, fetchUserCredentialRuleSet } from '../../utils/helper';\nimport { ScPassword } from './scPassword';\nimport RequirementsList from './RequirementsList';\nimport { REGULAR_VALIDATOR_RULE_DEFAULTS, SECURE_VALIDATOR_RULE_DEFAULTS } from './constants';\nimport ErrorAlert from '../ErrorAlert';\n\n// eslint-disable-next-line complexity\nconst Password = forwardRef(({\n getCurrentPasswordValue,\n hasForgotPassUI,\n forgotPassFunc,\n passwordLabel,\n passwordConfirmationLabel,\n secure,\n secureDisplay,\n toggleSecureDisplay,\n checkReuse,\n includeConfirm,\n onKeyDown,\n passwordErrorServer,\n resetPasswordError,\n setSecurePaswordError,\n callbackConfirmPassError,\n userType,\n requestCurrentPassword,\n allowPasswordShow,\n onChange,\n onPasswordInputBlur,\n sendValueToParent,\n initialValue,\n clearInitialOnFocus,\n hasErrorMessage,\n hasSecureTextIcon,\n className,\n disclaimer,\n autoComplete,\n onPasswordValidate,\n isOnboardingFlow,\n customTexts,\n hideNeutralRules\n}, ref) => {\n const basicRuleMessages = { required: t(Texts.FIELD_REQUIRED) };\n if (includeConfirm) Object.assign(basicRuleMessages, { shouldMatch: t(Texts.FIELDS_SHOULD_MATCH) });\n const allRuleMessagesRef = useRef({ ...basicRuleMessages });\n const inputPassRef = useRef();\n const inputConfirmPassRef = useRef();\n const inputCurrentPassRef = useRef();\n\n const initialState = {\n passwordMode: 'hide',\n securePass: {},\n regularPass: {}\n };\n\n const [currentPassword, setCurrentPassword] = useState('');\n const [currentPasswordError, setCurrentPasswordError] = useState('');\n const [password, setPassword] = useState(initialValue);\n const [isCleared, setCleared] = useState(false); // Only works with clearInitialOnFocus prop\n const [isChanged, setChanged] = useState(false); // Only works with clearInitialOnFocus prop\n const [confirmPassword, setConfirmPassword] = useState('');\n const [requiredPassError, setRequiredPassError] = useState('');\n const [confirmPassError, setConfirmPassError] = useState('');\n const [passwordMode, setPasswordMode] = useState(initialState.passwordMode);\n\n // rules that is visible only if matches\n const [passwordSecurityRules, setPasswordSecurityRules] = useState();\n\n // rules\n const regularValidatorRules = useRef(REGULAR_VALIDATOR_RULE_DEFAULTS);\n const secureValidatorRules = useRef(SECURE_VALIDATOR_RULE_DEFAULTS);\n\n // pass errors\n const [regularPassErrors, setRegularPassErrors] = useState(initialState.regularPass);\n const [securePassErrors, setSecurePassErrors] = useState(initialState.securePass);\n const [passwordError, setPasswordError] = useState();\n\n // rule messages\n const [regularRuleMessages, setRegularRuleMessages] = useState();\n const [secureRuleMessages, setSecureRuleMessages] = useState();\n const [passwordErrorMessage, setPasswordErrorMessage] = useState();\n\n // requirements list\n const [showRegularRequirementsList, setShowRegularRequirementsList] = useState(false);\n const [showSecureRequirementsList, setShowSecureRequirementsList] = useState(!toggleSecureDisplay);\n\n const [requirementDescText, setRequirementDescText] = useState('');\n\n useEffect(() => {\n setPasswordError(passwordErrorServer ? { passwordErrorServer: false } : null);\n setPasswordErrorMessage(passwordErrorServer ? { passwordErrorServer } : null);\n }, [passwordErrorServer]);\n\n useEffect(() => {\n const initPasswordRuleSet = rules => {\n let errorTypes = {};\n let nextMessages = {};\n\n rules.forEach(({ rule_name: ruleName, error_message: errorMessage }) => {\n errorTypes = { ...errorTypes, [ruleName]: null };\n nextMessages = { ...nextMessages, [ruleName]: t(errorMessage) };\n });\n\n Object.assign(allRuleMessagesRef.current, { [secure ? 'secureRules' : 'regularRules']: nextMessages });\n\n if (secure && checkReuse) {\n setSecureRuleMessages({ ...nextMessages, reuse: t(Texts.SECURE_PASS_REUSE) });\n setSecurePassErrors({ ...errorTypes });\n } else if (secure) {\n setSecureRuleMessages({ ...nextMessages });\n setSecurePassErrors({ ...errorTypes });\n } else {\n setRegularRuleMessages({ ...nextMessages });\n setRegularPassErrors({ ...errorTypes });\n }\n };\n\n const constructPasswordRules = credentialRules => {\n const passwordSecurityRuleNames = {};\n const passwordRuleData = credentialRules.find(({ field_name: fieldName }) => fieldName === 'password');\n const passwordSecurityRuleData = credentialRules.find(({ field_name: fieldName }) => fieldName === 'password_security');\n\n passwordSecurityRuleData?.rules.forEach(rule => {\n passwordSecurityRuleNames[rule.rule_name] = true;\n });\n\n setPasswordSecurityRules({ ...passwordSecurityRuleNames });\n\n return [\n passwordRuleData.explanation,\n [\n ...passwordRuleData.rules,\n ...(passwordSecurityRuleData?.rules || [])\n ]\n ];\n };\n\n const getPasswordRuleSet = async () => {\n try {\n const credentialRules = await fetchUserCredentialRuleSet(secure);\n const [explanation, rules] = constructPasswordRules(credentialRules);\n\n if (!secure) {\n regularValidatorRules.current = rules;\n } else {\n secureValidatorRules.current = rules;\n }\n\n setRequirementDescText(t(explanation));\n initPasswordRuleSet(rules);\n } catch (error) {\n setRequirementDescText(t(Texts.SECURE_PASS_TEST_DESC));\n const defaultRules = secure ? SECURE_VALIDATOR_RULE_DEFAULTS : REGULAR_VALIDATOR_RULE_DEFAULTS;\n initPasswordRuleSet(defaultRules);\n }\n };\n\n getPasswordRuleSet();\n }, []);\n\n const validateSomeRules = (value, ruleSet) => {\n return ruleSet.reduce((prevRules, { rule_name: ruleName, regex }) => {\n return {\n ...prevRules,\n [ruleName]: (new RegExp(regex)).test(value)\n };\n }, {});\n };\n\n const handleRequirementsListView = (reuseChecked = false) => {\n if (toggleSecureDisplay && password) {\n // from props\n onPasswordInputBlur();\n\n // add this feature for hipaa wizard\n let hasError = false;\n Object.keys(securePassErrors).forEach(key => {\n if (\n key !== (!reuseChecked ? 'reuse' : '')\n && !securePassErrors[key]\n ) {\n hasError = true;\n }\n });\n\n setShowSecureRequirementsList(hasError);\n }\n };\n\n const backenDefinedRulesHasError = current => {\n // A/B Test: signupOnboardingIV\n const defaultChecker = val => !val; // null, false, undefined etc. will be counted as hasError is true\n const abTestChecker = val => val === false; // we want it to be exactly false, because initially is null and we don't want it to be counted as hasError is true\n let checker = isOnboardingFlow ? abTestChecker : defaultChecker;\n if (hideNeutralRules) checker = val => val === false;\n\n let hasError = false;\n Object.keys(current).forEach(key => {\n if (key && checker(current[key])) {\n hasError = true;\n }\n });\n return hasError;\n };\n\n const validateCurrentPassword = () => {\n if (!currentPassword) {\n setCurrentPasswordError(t(Texts.FIELD_REQUIRED));\n return false;\n }\n setCurrentPasswordError(false);\n return true;\n };\n\n const validatePassword = () => {\n let hasProblem = false;\n Object.entries(allRuleMessagesRef.current)\n .forEach(([rule, errorMessage]) => {\n switch (rule) {\n case 'required':\n if (!password) {\n setRequiredPassError(errorMessage);\n setSecurePaswordError(['passwordReqired']);\n hasProblem = true;\n } else {\n setRequiredPassError('');\n }\n break;\n case 'regularRules': {\n const validatedRegulars = validateSomeRules(password, regularValidatorRules.current);\n setRegularPassErrors({ ...validatedRegulars });\n break;\n }\n case 'secureRules': {\n // 'reuse' is handled later.\n const validatedSecures = validateSomeRules(password, secureValidatorRules.current);\n setSecurePassErrors({ ...validatedSecures });\n break;\n }\n default:\n break;\n }\n });\n return hasProblem;\n };\n\n const validateConfirmPass = () => {\n let hasProblem = false;\n if (!includeConfirm) return hasProblem;\n\n Object.entries(allRuleMessagesRef.current)\n .forEach(([rule, errorMessage]) => {\n switch (rule) {\n case 'required':\n if (!confirmPassword) {\n setConfirmPassError(errorMessage);\n hasProblem = true;\n callbackConfirmPassError('confirmPasswordRequired');\n } else {\n setConfirmPassError('');\n hasProblem = false;\n callbackConfirmPassError('');\n }\n break;\n case 'shouldMatch':\n if (password && confirmPassword) {\n const match = password === confirmPassword;\n setConfirmPassError(!match ? errorMessage : '');\n callbackConfirmPassError(!match ? 'shouldMatch' : '');\n hasProblem = !match;\n }\n break;\n default:\n break;\n }\n });\n return hasProblem;\n };\n\n const makeAllValidations = async () => {\n if (requestCurrentPassword) {\n const currPassValid = validateCurrentPassword();\n if (!currPassValid) {\n return { isValid: currPassValid };\n }\n }\n\n const passHasProblem = validatePassword();\n let isValid = !passHasProblem;\n\n if (!secure) {\n const regularRulesHasProblem = Object.entries(regularPassErrors)\n .filter(([, val]) => !val).length > 0;\n isValid = isValid && !regularRulesHasProblem;\n }\n\n const confPassHasProblem = validateConfirmPass();\n if (includeConfirm) {\n isValid = isValid && !confPassHasProblem;\n }\n\n if (!secure) {\n return {\n isValid,\n password,\n currentPassword\n };\n }\n\n const secureHasProblem = secure ? Object.entries(securePassErrors)\n .filter(([term]) => term !== 'reuse') // Will be checked manually.\n .filter(([, val]) => !val).length > 0\n : false;\n\n isValid = isValid && !secureHasProblem;\n\n if (!isValid || !checkReuse) { // if not valid by now, no need to check reuse.\n return {\n isValid,\n password,\n currentPassword\n };\n }\n\n // Lets make last remaining validation\n let isReuseAttempt = false;\n try {\n const { content } = await checkPasswordReuse(password, userType);\n isReuseAttempt = content;\n } catch (err) {\n isReuseAttempt = err?.data?.message;\n }\n\n setSecurePassErrors({\n ...securePassErrors,\n reuse: !isReuseAttempt\n });\n\n handleRequirementsListView(true);\n\n return {\n isValid: isValid && !isReuseAttempt,\n password,\n currentPassword\n };\n };\n\n const handlePasswordChange = e => {\n const { value } = e.target;\n setPassword(value);\n if (sendValueToParent) {\n onChange(value);\n }\n if (clearInitialOnFocus) {\n setChanged(true);\n }\n };\n\n const handleFocus = () => {\n if (clearInitialOnFocus && !isCleared) {\n setPassword('');\n setCleared(true);\n }\n // getUserVariant();\n };\n\n const handleBlur = () => {\n if (clearInitialOnFocus && isCleared && !isChanged) {\n setPassword(initialValue);\n setCleared(false);\n }\n\n handleRequirementsListView();\n };\n\n const handleCurrentPasswordChange = e => {\n const { value } = e.target;\n setCurrentPassword(value);\n getCurrentPasswordValue(value);\n };\n\n const handleConfirmPasswordChange = e => {\n const { value } = e.target;\n setConfirmPassword(value);\n };\n\n const handlePasswordModeToggle = inputRef => {\n inputRef.current.focus(); // Use here to prevent flickring keyboard on mobile devices\n setPasswordMode(passwordMode === 'hide' ? 'show' : 'hide');\n };\n\n useImperativeHandle(ref, () => ({\n validate: makeAllValidations,\n inputRef: inputPassRef\n }));\n\n const getSecureRuleColor = status => {\n const colors = {\n default: '#8d8fa8',\n defaultWithIcon: '#2B3245',\n item: {\n success: '#01bd6f',\n error: '#f23a3c'\n },\n reuse: {\n success: '#2B3245',\n error: '#f23a3c'\n }\n };\n\n if (hasSecureTextIcon && status.type !== 'reuse') return colors.defaultWithIcon;\n if (status.value === null) return colors.default;\n\n return status.value ? colors[status.type].success : colors[status.type].error;\n };\n\n const getSecureRuleClass = status => {\n if (status === null) return 'isNeutral';\n return status ? 'isGood' : 'isBad';\n };\n\n const renderSecureRequirementsList = () => (\n \n );\n\n Hooks.useEffectIgnoreFirst(() => {\n validatePassword();\n if (password && confirmPassword) {\n validateConfirmPass();\n }\n resetPasswordError();\n }, [password]);\n\n Hooks.useEffectIgnoreFirst(() => {\n validateConfirmPass();\n }, [confirmPassword]);\n\n Hooks.useEffectIgnoreFirst(() => {\n const regularPassHasError = backenDefinedRulesHasError(regularPassErrors);\n const securePassHasError = backenDefinedRulesHasError(securePassErrors);\n\n setShowRegularRequirementsList(passwordError || regularPassHasError);\n setShowSecureRequirementsList(passwordError || securePassHasError);\n onPasswordValidate({ passwordError, regularPassErrors, securePassErrors });\n }, [passwordError, regularPassErrors, securePassErrors]);\n\n return (\n \n {requestCurrentPassword && (\n
    \n \n \n {\n hasForgotPassUI\n ? (\n \n {t('Forgot Password?')}\n \n ) : null\n }\n {allowPasswordShow && (\n handlePasswordModeToggle(inputCurrentPassRef)}\n >\n \n {passwordMode === 'hide' ? : }\n \n \n )}\n {currentPasswordError && hasErrorMessage && }\n
    \n )}\n
    \n \n \n {disclaimer && (\n
    \n {disclaimer}\n
    \n )}\n {allowPasswordShow && (\n handlePasswordModeToggle(inputPassRef)}\n >\n \n {passwordMode === 'hide'\n ? (\n <>\n \n {t(Texts.SHOW_PASSWORD)}\n \n )\n : (\n <>\n \n {t(Texts.HIDE_PASSWORD)}\n \n )}\n \n \n )}\n {\n (showRegularRequirementsList && (\n \n ))\n }\n \n {requiredPassError}\n
    \n
    \n {\n (secure && secureDisplay === 'top' && showSecureRequirementsList) ? (\n renderSecureRequirementsList()\n ) : null\n }\n {\n includeConfirm ? (\n
    \n \n \n handlePasswordModeToggle(inputConfirmPassRef)}\n >\n \n {passwordMode === 'hide'\n ? (\n <>\n \n {t(Texts.SHOW_PASSWORD)}\n \n )\n : (\n <>\n \n {t(Texts.HIDE_PASSWORD)}\n \n )}\n \n \n
    \n {confirmPassError && hasErrorMessage ? confirmPassError : null}\n
    \n
    \n ) : null\n }\n {\n (secure && secureDisplay !== 'top' && showSecureRequirementsList) ? (\n renderSecureRequirementsList()\n ) : null\n }\n \n );\n});\n\nPassword.propTypes = {\n hasForgotPassUI: bool,\n forgotPassFunc: func,\n getCurrentPasswordValue: func,\n passwordLabel: string,\n passwordConfirmationLabel: string,\n secure: bool,\n secureDisplay: string,\n toggleSecureDisplay: bool,\n includeConfirm: bool,\n checkReuse: bool,\n onKeyDown: func,\n passwordErrorServer: string,\n resetPasswordError: func,\n setSecurePaswordError: func,\n callbackConfirmPassError: func,\n userType: string,\n requestCurrentPassword: bool,\n onChange: func,\n sendValueToParent: bool,\n allowPasswordShow: bool,\n clearInitialOnFocus: bool,\n initialValue: string,\n onPasswordInputBlur: func,\n hasErrorMessage: bool,\n hasSecureTextIcon: bool,\n className: string,\n disclaimer: string,\n autoComplete: string,\n onPasswordValidate: func,\n isOnboardingFlow: bool,\n customTexts: shape({\n regularRequirementDesc: string,\n secureRequirementDesc: string,\n inputPlaceholder: string\n }),\n hideNeutralRules: bool\n};\n\nPassword.defaultProps = {\n hasForgotPassUI: false,\n forgotPassFunc: f => f,\n getCurrentPasswordValue: f => f,\n passwordLabel: Texts.PASSWORD_TEXT,\n passwordConfirmationLabel: Texts.CONF_PASSWORD_TEXT,\n secure: false,\n secureDisplay: '',\n toggleSecureDisplay: false,\n includeConfirm: false,\n checkReuse: false,\n onKeyDown: f => f,\n passwordErrorServer: '',\n resetPasswordError: f => f,\n setSecurePaswordError: f => f,\n callbackConfirmPassError: f => f,\n userType: 'formuser',\n requestCurrentPassword: false,\n onChange: f => f,\n sendValueToParent: false,\n allowPasswordShow: true,\n clearInitialOnFocus: false,\n initialValue: '',\n onPasswordInputBlur: f => f,\n hasErrorMessage: true,\n hasSecureTextIcon: false,\n className: '',\n disclaimer: null,\n autoComplete: null,\n onPasswordValidate: f => f,\n isOnboardingFlow: false,\n customTexts: {\n regularRequirementDesc: '',\n secureRequirementDesc: '',\n inputPlaceholder: ''\n },\n hideNeutralRules: false\n};\n\nexport default Password;\n","import Axios from 'axios';\nimport qs from 'querystring';\nimport { loadJS, getPossibleTimeZone } from '@jotforminc/utils';\nimport isNil from 'lodash/isNil';\nimport { Texts } from '@jotforminc/constants';\nimport layer from './layer';\n\nconst trackAction = data => layer.post(\n 't/jfrev',\n data,\n {\n headers: {\n 'Content-Type': 'application/json'\n }\n }\n);\n\nexport const actionTracker = ({\n username = '', action = '', target = ''\n}) => {\n const log = {\n project: 'login-flow',\n oldActions: {\n action: action,\n target: target\n },\n actor: username,\n location: window.location && window.location.href\n };\n\n trackAction(log);\n};\n\nexport const loadAppleClient = nonce => {\n loadJS(\n 'jf-apple-id',\n 'https://appleid.cdn-apple.com/appleauth/static/jsapi/appleid/1/en_US/appleid.auth.js',\n () => {\n if (!window.AppleID) return;\n\n window.AppleID.auth.init({\n clientId: 'com.jotform.applesignin',\n scope: 'name email',\n redirectURI: `https://${window.location.host}/API/login/apple`,\n response_type: 'code',\n response_mode: 'form_post',\n nonce,\n usePopup: true\n });\n }\n );\n};\n\nexport const loadFacebookClient = () => {\n loadJS('facebook-jssdk', 'https://connect.facebook.net/en_US/sdk.js');\n};\n\nexport const loadGoogleClient = () => {\n loadJS('google-jssdk-new', 'https://accounts.google.com/gsi/client');\n};\n\nexport const loadMicrosoftClient = () => {\n loadJS('microsoft-jssdk', 'https://cdn.jotfor.ms/js/msal/msal-browser.js');\n};\n\nexport const handleGoogleAuth = ({ onSuccess = f => f, onError = f => f }) => {\n if (!window.google) return;\n const client = window.google.accounts.oauth2.initCodeClient({\n client_id: window.GOOGLE_SIGNON,\n scope: 'openid profile email',\n ux_mode: 'popup',\n cookiepolicy: 'single_host_origin',\n callback: async response => {\n await onSuccess(response);\n },\n error_callback: async response => {\n await onError(response);\n }\n });\n\n return client;\n};\n\nexport const handleFacebookAuth = ({ onSuccess = f => f, onError = f => f }) => {\n // https://sentry.io/organizations/jotform/issues/1769596448/?project=4142374\n if (!window.FB) return;\n\n window.FB.init({\n appId: window.FACEBOOK_SIGNON_APP_ID,\n cookie: true,\n xfbml: true,\n version: 'v3.2'\n });\n\n window.FB.login(({ status, authResponse }) => {\n if (status === 'connected' && authResponse) {\n onSuccess(authResponse.accessToken);\n return;\n }\n\n onError(status);\n }, { scope: 'public_profile,email' });\n};\n\nexport const handleAppleAuth = async ({\n hasUserLogin,\n nonce,\n onSuccess = f => f,\n onError = f => f\n}) => {\n try {\n // https://sentry.io/organizations/jotform/issues/1769596448/?project=4142374\n if (!window.AppleID) return;\n\n const result = await window.AppleID.auth.signIn();\n\n const response = hasUserLogin ? await Axios.post(\n 'https://www.jotform.com/API/login/apple',\n qs.stringify({\n authorizationCode: result.authorization.code,\n identityToken: result.authorization.id_token,\n nonce\n }),\n {\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded'\n }\n }\n ) : {};\n\n onSuccess({\n response,\n authorizationCode: result.authorization.code,\n identityToken: result.authorization.id_token,\n nonce\n });\n } catch (err) {\n onError(err);\n }\n};\n\nexport const handleMicrosoftAuth = () => {\n const myMSALObj = new window.msal.PublicClientApplication({\n auth: {\n clientId: window.MICROSOFT_SIGNON_CLIENT_ID,\n redirectUri: `https://${global.location.host}/login-redirect.html`\n }\n });\n return myMSALObj.loginPopup({\n scopes: ['user.read']\n });\n};\n\nexport const handleSalesforceAuth = async () => {\n const openPopupWindowCentered = function openPopupWindowCentered(url, windowName, w, h) {\n const x = window.outerWidth / 2 + window.screenX - w / 2;\n const y = window.outerHeight / 2 + window.screenY - h / 2;\n let features = 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, copyhistory=no, width=';\n features = features.concat(w, ', height=').concat(h, ', top=').concat(y, ', left=').concat(x);\n return window.open(url, windowName, features);\n };\n\n let popUpWindow = null;\n\n const handleLogin = async () => {\n const response = await Axios.get(`https://${global.location.host}/API/user/salesforce-auth-provider`);\n popUpWindow = openPopupWindowCentered(response.data.content, 'login-flow', 600, 680);\n };\n\n await handleLogin();\n\n const data = await new Promise(resolve => {\n window.addEventListener('message', message => {\n if (!message || !message.data) {\n resolve('error');\n }\n\n if (message.data.source === 'jfsalesforce_login') {\n if (popUpWindow) {\n popUpWindow.close();\n }\n\n const res = {\n code: message.data.code,\n token: message.data.token\n };\n resolve(res);\n }\n });\n });\n\n return data;\n};\n\nexport const handleUserLogin = async ({\n appName, config, token, type\n}) => {\n try {\n const response = await Axios.post(\n '/server.php',\n qs.stringify({\n action: config.action,\n [config.tokenKey]: token,\n // eslint-disable-next-line no-undef\n language: navigator.language,\n timezone: getPossibleTimeZone(),\n ...appName ? {\n button_name: `${type}-${appName}`\n } : {}\n }),\n {\n withCredentials: true,\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded'\n }\n }\n );\n\n return response;\n } catch (err) {\n return err;\n }\n};\n\nexport const handleUserVerify = async ({\n appName, type, config, token\n}) => {\n const isGoogle = type === 'google';\n return layer.post(\n `user/login/${type}`,\n qs.stringify({\n onlyVerify: '1',\n action: config.action,\n [config.tokenKey]: token,\n // eslint-disable-next-line no-undef\n language: navigator.language,\n timezone: getPossibleTimeZone(),\n ...appName ? {\n button_name: `${type}-${appName}`\n } : {},\n ...(isGoogle && { newGoogleFlow: 1 })\n })\n );\n};\n\nexport const randomString = value => {\n let length = value;\n const charset = '0123456789ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvwxyz-._';\n let result = '';\n\n const makeResult = item => {\n if (length === 0) {\n return;\n }\n\n if (item < charset.length) {\n result += charset[item];\n length--;\n }\n };\n\n while (length > 0) {\n const bytes = new Uint8Array(16);\n const cryptor = window.crypto || window.msCrypto;\n const random = cryptor.getRandomValues(bytes);\n\n Array.from(random).forEach(makeResult);\n }\n\n return result;\n};\n\nexport const fetchUserCredentialRuleSet = isSecure => {\n const params = isSecure ? { hipaa: '1' } : {};\n return layer.get('user/credential-rule-set', null, { params });\n};\n\nexport const checkPasswordReuse = (password, userType) => {\n if (typeof userType === typeof 'string' && userType.toLowerCase() === 'user') {\n return layer.post('user/checkPasswordReuseAttempt', qs.stringify({ password }));\n }\n return layer.post('formuser/checkPasswordReuseAttempt', qs.stringify({ password }));\n};\n\nconst prepareVerificationSettings = (\n type, token, password,\n // for verifyAndDelete:\n isDeleteVerified = false, prepareForDeletionEndpoint = false\n) => {\n const socialLogins = ['google', 'facebook', 'apple', 'microsoft', 'salesforce'];\n\n switch (true) {\n case type === 'email':\n return { type, password };\n case socialLogins.includes(type):\n return { type, token };\n case prepareForDeletionEndpoint === true:\n return { isDeleteVerified };\n default:\n return { };\n }\n};\n\n// verify first by type before deleting it, if you want to delete it just pass isDeleteVerified and user\nexport const verifyAndDelete = ({\n username, type, token, password, isDeleteVerified = false\n}) => {\n const settings = prepareVerificationSettings(type, token, password, isDeleteVerified, true);\n return layer.post(`user/${username}/verify-and-delete`, qs.stringify({ ...settings, newGoogleFlow: 1 }));\n};\n\nexport const verifyUser = ({\n username, type, token, password\n}) => {\n const settings = prepareVerificationSettings(type, token, password);\n return layer.post(`user/${username}/verify`, qs.stringify({ ...settings, newGoogleFlow: 1 }));\n};\n\nexport const getPrefillToken = () => {\n const path = window.location.pathname.split('/').splice(2);\n if (path[0] === 'prefill') return path[1].split('?')[0];\n\n return false;\n};\n\nexport const isYes = val => ((typeof val === 'string') ? ['Yes', '1'].includes(val) : !!val);\n\nexport const getPortalElement = elementId => {\n const { body } = document;\n let targetElement = document.querySelector(`#${elementId}`);\n\n if (targetElement) {\n return targetElement;\n }\n\n targetElement = document.createElement('div');\n targetElement.setAttribute('id', elementId);\n body.appendChild(targetElement);\n return targetElement;\n};\n\nexport const logActions = (project = 'Jotform', actor = 'unknown', action = '', target = '') => {\n if (typeof window.JotFormActions === 'function') {\n const logger = new window.JotFormActions(project);\n logger.tick({ actor, action, target });\n }\n};\n\nexport const isPlatformSalesforce = () => !isNil(document.querySelector('[data-platform=\"salesforce\"]'));\n\nexport const salesforceSocialLoginLogger = ({ username = '', action = '', target = '' }) => {\n if (!isPlatformSalesforce()) return;\n\n actionTracker({\n username,\n action,\n target\n });\n};\n\nexport const preLoginCheck = async () => layer.get('mfa/pre-login-check');\n\nexport const objToQueryString = obj => `${Object.entries(obj).map(([key, value]) => `${key}=${value}`).join('&')}`;\n\n// eslint-disable-next-line max-len\nexport const errorNormalizer = err => err?.response?.data?.error || err?.data?.error || err?.error || err?.response?.data?.content || err?.data?.content || err?.content || err?.response?.data?.message || err?.data?.message || err?.message || Texts.ERROR_TRY_AGAIN;\n","import { RequestLayer, Interceptors } from '@jotforminc/request-layer';\n\nconst layer = new RequestLayer('/API', {\n interceptorConfig: {\n teamID: global.teamID,\n customResponseInterceptors: [Interceptors.requestManagerResponseNormalizer]\n }\n});\n\nexport default layer;\n","import Styled from 'styled-components';\n\nexport const ScRF = Styled.div`\n display: flex;\n justify-content: space-between;\n`;\n\nexport const ScContainer = Styled.div`\n display: flex;\n align-items: center;\n\n .error {\n color: #dc2626;\n font-size: 14px;\n margin-right: 16px;\n }\n`;\n\nexport const ScRB = Styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n overflow-y: auto;\n\n .content {\n width: 90%;\n max-width: 500px;\n padding-bottom: 40px;\n text-align: center;\n font-size: 1em;\n color: #0A1551;\n font-weight: 700;\n margin: auto;\n\n > svg {\n color: #DC2626;\n display: unset;\n }\n }\n\n .content.wider { max-width: 540px; }\n\n .assignToOrgSvg {\n width: 54vw;\n height: 36vh;\n max-width: 192px;\n max-height: 136px;\n }\n\n .title {\n font-size: 24px;\n line-height: 32px;\n color: #141E46;\n font-weight: 700;\n margin-top: 18px;\n }\n\n .subtitle {\n font-size: 15px;\n line-height: 16px;\n color: #252F58;\n font-weight: 500;\n margin-top: 12px;\n }\n\n p {\n font-size: 16px;\n line-height: 24px;\n color: #343C6A;\n }\n\n p, .custom-content { font-weight: 400; margin-bottom: 24px; }\n\n .sec { color: #2c3345; margin: 1em 0 0; line-height: 1.5; }\n\n [data-value=\"sendNotificationEmail\"] { display: inline-flex; }\n\n .assigneeMsg {\n max-width: 426px;\n width: 100%;\n display: block;\n height: 90px;\n border-radius: 4px;\n border: solid 1px #d8dae9;\n margin: 1em auto 0;\n font-size: .875rem;\n padding: .375rem .5rem;\n transition: border-color .15s ease;\n\n ::placeholder { color: #8d8fa8; }\n :focus { outline: 0; border-color: #4c7af7; }\n }\n\n .dontshow {\n display: inline-flex;\n background-color: #ecf4ff;\n align-items: center;\n padding: 10px;\n margin-top: 38px;\n margin-bottom: 20px;\n\n &-input {\n opacity: 0;\n pointer-events: none;\n position: absolute;\n\n &:checked + .dontshow-checkbox:before {\n background-color: #54b45c;\n border-color: #54b45c;\n }\n\n &:checked + .dontshow-checkbox:after {\n opacity: 1;\n }\n\n &:focus {\n outline: 0;\n }\n }\n\n &-checkbox {\n width: 14px;\n height: 14px;\n background-color: #fff;\n border-radius: 2px;\n position: relative;\n\n &:before {\n content: \"\";\n position: absolute;\n width: 100%;\n height: 100%;\n border: 1px solid #CCD0DA;\n background-color: #fff;\n border-radius: 2px;\n top: 0;\n left: 0;\n transition: .3s;\n transform: translate(-1px, -1px);\n }\n\n &:after {\n content: \"\";\n display: block;\n width: 4px;\n height: 8px;\n border: solid #fff;\n border-width: 0 2px 2px 0;\n transform: rotate(45deg);\n position: absolute;\n top: 1px;\n left: 4px;\n opacity: 1;\n transition: .3s;\n z-index: 2;\n }\n }\n\n &-text {\n font-weight: 400;\n font-size: 16px;\n margin-left: 8px;\n line-height: 1;\n color: #52587e;\n }\n }\n\n @media screen and (max-width: 480px) {\n font-size: 0.875em;\n\n p { margin: 1em 0 .75em; }\n }\n`;\n","import React, { forwardRef, useState } from 'react';\nimport {\n string, func, node, bool, elementType, oneOfType\n} from 'prop-types';\nimport { t } from '@jotforminc/translation';\n\nimport { Button } from '@jotforminc/magnet';\nimport { IconExclamationTriangleFilled } from '@jotforminc/svg-icons';\nimport { StyledModal as Modal } from '@jotforminc/styled-modal';\n\nimport { ScRF, ScRB, ScContainer } from './scRevokeAccess';\n\nconst ConfirmationModal = forwardRef(({\n icon,\n title,\n subtitle,\n description,\n backText,\n children,\n onBack,\n showDontShowAgain,\n dontShowAgainText,\n confirmText,\n onConfirm,\n ButtonRenderer,\n confirmButtonColor,\n BackButtonRenderer: PropBackButtonRenderer,\n ConfirmButtonRenderer: PropConfirmButtonRenderer,\n confirmationDisable,\n backDisable,\n errorMessage,\n ...modalProps\n}, ref) => {\n const [dontShowAgain, setDontShowAgain] = useState(false);\n const BackButtonRenderer = PropBackButtonRenderer || ButtonRenderer;\n const ConfirmButtonRenderer = PropConfirmButtonRenderer || ButtonRenderer;\n return (\n \n \n {backText}\n \n \n {errorMessage ?
    {errorMessage}
    : null}\n onConfirm({ dontShowAgain })}\n aria-label={confirmText}\n >\n {confirmText}\n \n
    \n \n )}\n >\n \n
    \n {icon}\n
    {title}
    \n
    {subtitle}
    \n {children && (\n
    \n {children}\n
    \n )}\n {description &&

    {description}

    }\n {showDontShowAgain ? (\n \n ) : null}\n
    \n
    \n \n );\n});\n\nConfirmationModal.propTypes = {\n icon: node,\n title: string,\n subtitle: oneOfType([string, elementType]),\n description: oneOfType([string, elementType]),\n backText: string,\n confirmText: string,\n confirmButtonColor: string,\n showDontShowAgain: bool,\n dontShowAgainText: string,\n children: node,\n ButtonRenderer: elementType,\n BackButtonRenderer: elementType,\n ConfirmButtonRenderer: elementType,\n onBack: func,\n onConfirm: func,\n confirmationDisable: bool,\n backDisable: bool,\n errorMessage: string\n};\n\nConfirmationModal.defaultProps = {\n title: 'Title',\n subtitle: 'Subtitle',\n description: 'Description',\n icon: ,\n backText: t('Back'),\n confirmText: t('Confirm'),\n confirmButtonColor: 'error',\n showDontShowAgain: false,\n dontShowAgainText: t('Don\\'t show this message again'),\n children: null,\n ButtonRenderer: Button,\n BackButtonRenderer: undefined,\n ConfirmButtonRenderer: undefined,\n onBack: f => f,\n onConfirm: f => f,\n confirmationDisable: false,\n backDisable: false,\n errorMessage: ''\n};\n\nexport default ConfirmationModal;\n","import styled, { css } from 'styled-components';\n\nconst commonForRadioAndCheck = css`\n width: 16px;\n height: 16px;\n display: block;\n border: 1px solid #a8aab5;\n margin-right: 6px;\n cursor: pointer;\n html[dir=\"rtl\"] & {\n margin-right: 0;\n margin-left: 6px;\n }\n`;\n\nexport const ScRadio = styled.div`\n ${commonForRadioAndCheck}\n border-radius: 50%;\n transition: all .4s ease;\n`;\n\nexport const ScCheckbox = styled.div`\n ${commonForRadioAndCheck}\n position: relative;\n border-radius: 2px;\n transition: all .25s ease;\n\n &:before, &:after {\n display: inline-block;\n content: \"\";\n position: absolute;\n border-radius: 2px;\n background-color: #fff;\n width: 2px;\n opacity: 0;\n transition: all .25s ease;\n }\n\n &:before {\n top: 6px; left: 3px; height: 5px;\n transform: rotate(-45deg);\n }\n\n &:after {\n top: 2px; left: 7px; height: 10px;\n transform: rotate(45deg);\n }\n`;\n\nexport const ScOptionList = styled.ul`\n padding: .75em 0 0;\n margin: 0;\n list-style: none;\n\n li + li { margin-top: ${p => {\n if (p.narrowMargins === true) return '8px';\n return (p.multiline === true) ? '1.5em' : '.75em';\n }}; }\n`;\n\nexport const ScOption = styled.div`\n cursor: pointer;\n display: flex;\n font-size: 1em;\n line-height: 1.5;\n align-items: center;\n\n .optionIcon {\n color: transparent;\n width: 28px;\n height: 28px;\n margin: 0 18px;\n margin-left: auto;\n }\n\n ${p => (p.fillColor && `\n background: #FFFFFF;\n border: 1px solid #BCBDD2;\n box-sizing: border-box;\n border-radius: 4px;\n\n .o-label {\n margin-top: 11px;\n font-size: 16px;\n }\n .o-desc {\n margin-bottom: 14px;\n font-size: 15px;\n }\n\n\n &[data-selected=true] {\n .o-label {\n color: ${p.fillColor};\n }\n background: ${p.backgroundColor};\n border-color: ${p.borderColor};\n }\n\n &[data-selected=true] > svg {\n fill: ${p.fillColor};\n }\n\n &[data-selected=true] > svg > circle {\n fill: ${p.fillColor};\n }\n `)}\n\n .o-label { font-weight: ${p => (p.multiline === true ? '700' : '400')}; }\n .o-desc span,\n .o-label span { font-weight: 700; }\n\n ${ScRadio}, ${ScCheckbox} { flex-shrink: 0; }\n\n &[data-disabled=true] {\n opacity: .5;\n\n & > ${ScRadio}, ${ScCheckbox} { cursor: not-allowed; }\n }\n\n &[data-selected=true] > ${ScRadio} {\n background-color: #4573e3;\n border-color: #4573e3;\n box-shadow: inset 0px 0 0px 3px #dfe8fa;\n }\n @media (hover: hover) {\n &:not([data-selected=true]):not([data-disabled=true]):hover {\n & > ${ScRadio} {\n background-color: rgba(68, 115, 227, 0.3);\n box-shadow: inset 0px 0 0px 3px #fff;\n }\n\n & > ${ScCheckbox} {\n background-color: rgba(68,115,227,0.3);\n border-color: rgba(68,115,227,0.3);\n &:before, &:after { opacity: 1; }\n }\n }\n }\n\n &[data-selected=true] > ${ScCheckbox} {\n background-color: #4573e3;\n border-color: #4573e3;\n\n &:before, &:after { opacity: 1; }\n }\n\n &:focus { outline: 0; }\n &:focus > ${ScRadio} {\n border-color: #4573e3;\n box-shadow: 0px 0 0px 5px #dfe8fa;\n }\n &[data-selected=true]:focus > ${ScRadio} {\n box-shadow: inset 0px 0 0px 3px #dfe8fa, 0px 0 0px 5px #dfe8fa;\n }\n\n &:focus > ${ScCheckbox} {\n border-color: #4573e3;\n box-shadow: 0px 0 0px 5px rgba(68,115,227,0.3);\n }\n\n /* With double line, we increase size for radio/text reatio */\n ${ScRadio} {\n ${p => (p.multiline && `\n width: 18px;\n height: 18px;\n margin-inline-end: 12px;\n `)}\n }\n`;\n","/* eslint-disable react/prop-types */\nimport React, { forwardRef } from 'react';\nimport isEqual from 'lodash/isEqual';\nimport { SelectionGroup as UIKitOptionGroup } from '@jotforminc/uikit';\nimport { IconCheckCircleFilled } from '@jotforminc/svg-icons';\nimport {\n ScOption,\n ScOptionList,\n ScCheckbox,\n ScRadio\n} from './StyledComponents';\n\n// eslint-disable-next-line react/prop-types\nexport const Option = ({\n option: {\n text, value, description, desc, icon, fillColor, backgroundColor, borderColor, disabled: optionDisabled, isSelected: optionSelected\n }, isSelected, disabled, isMultiSelect, isMultiLine, children, onClick, className, useMouseDown = false\n}) => {\n const clickProps = { [useMouseDown ? 'onMouseDown' : 'onClick']: onClick };\n return (\n \n {icon || (isMultiSelect ? : )}\n
    \n
    {text}
    \n
    {description || desc}
    \n {children}\n
    \n {icon && }\n \n );\n};\n\nconst OptionGroup = forwardRef((props, ref) => {\n const {\n isMultiSelect, isMultiLine, disabled, narrowMargins, className, containerRendererProps\n } = props;\n\n return (\n (\n \n {children}\n \n )}\n OptionRenderer={optionProps => (\n \n )}\n {...props}\n />\n );\n});\n\nexport default React.memo(OptionGroup, (prev, next) => {\n if (isEqual(prev.options, next.options)) {\n return true;\n }\n return false;\n});\n","import React from 'react';\nimport Styled from 'styled-components';\nimport { bool, func, number } from 'prop-types';\n\nconst ScCh = Styled.div`\n position: relative;\n flex-shrink: 0;\n width: 18px;\n height: 18px;\n margin-right: 8px;\n border-radius: 4px;\n border: 1px solid ${p => p.theme.chBorder};\n background-color: #fff;\n\n &:after {\n content: \"\";\n display: block;\n background: url(\"${p => p.theme.chIcon}\") no-repeat center;\n }\n\n input[type=checkbox], &:after {\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0; left: 0;\n margin: 0;\n padding: 0;\n }\n\n input[type=checkbox] { opacity: 0; }\n\n [aria-selected=\"true\"] & {\n border: 0;\n background-color: ${p => p.theme.chSelected};\n\n &:after { transform: scale(1) rotate(0); }\n }\n\n [aria-selected=\"partial\"] & {\n border: 0;\n background-color: ${p => p.theme.chSelected};\n\n &:after { background: url(\"${p => p.theme.chPartialIcon}\") no-repeat center; transform: scale(1) rotate(0); }\n }\n`;\n\nexport const CheckBox = ({ isSelected, onChange, id }) => (\n \n \n \n);\n\nCheckBox.propTypes = {\n isSelected: bool,\n id: number,\n onChange: func\n};\n\nCheckBox.defaultProps = {\n isSelected: false,\n id: 5,\n onChange: e => e.preventDefault()\n};\n","import React, { forwardRef } from 'react';\nimport {\n arrayOf, bool, func, number, oneOfType, shape, string\n} from 'prop-types';\nimport { t } from '@jotforminc/translation';\nimport { Tooltip } from '@jotforminc/tooltip';\nimport { IconArrowUpRightFromSquareSm } from '@jotforminc/svg-icons';\nimport { propTypes } from '@jotforminc/constants';\n\nimport { SmartList } from '@jotforminc/smart-list';\nimport { CheckBox } from '../../CheckBox';\nimport { DISABLE_DEFAULT_DOCUMENT_TEXT } from '../../../../constants';\n\n// eslint-disable-next-line react/prop-types\nconst AttachPDFListItem = ({\n option: {\n text, value, link, disabled = false\n }, formID, isSelected, disabledHoverText, disableDefaultDocument\n}) => {\n if (value === '' && text === 'Default Document' && disableDefaultDocument) {\n return (\n
    \n
    \n {t(DISABLE_DEFAULT_DOCUMENT_TEXT)}\n
    \n
    \n e.stopPropagation()}\n >\n  \n \n \n Open in PDF Editor\n \n
    \n
    \n );\n }\n return (\n
    \n
    \n \n
    \n
    \n {text}\n
    \n {disabledHoverText && (\n \n {t(disabledHoverText)}\n \n )}\n
    \n e.stopPropagation()}\n >\n \n \n \n Open in PDF Editor\n \n
    \n
    \n );\n};\n\nAttachPDFListItem.propTypes = {\n option: shape({ value: oneOfType([string, number]), disabled: bool }),\n formID: string,\n isSelected: bool,\n disabledHoverText: string,\n disableDefaultDocument: bool\n};\n\nAttachPDFListItem.defaultProps = {\n option: {},\n formID: '',\n isSelected: false,\n disabledHoverText: null,\n disableDefaultDocument: false\n};\n\nconst SelectList = forwardRef(({\n onChange, options, value, ItemComponent, showSelectAll, showSelectedItemCount, disabledHoverText, ignoreDefaultValueCheck, disableDefaultDocument, ...props\n}, ref) => {\n return (\n <>{children}}\n ignoreDefaultValueCheck={ignoreDefaultValueCheck}\n disabledHoverText={disabledHoverText}\n disableDefaultDocument={disableDefaultDocument}\n {...props}\n />\n );\n});\n\nSelectList.propTypes = {\n onChange: func,\n options: arrayOf(shape({ value: oneOfType([string, number]), disabled: bool })),\n value: arrayOf(shape({})),\n ItemComponent: propTypes.renderable,\n showSelectAll: bool,\n showSelectedItemCount: bool,\n ignoreDefaultValueCheck: bool,\n disabledHoverText: string,\n disableDefaultDocument: bool\n};\n\nSelectList.defaultProps = {\n onChange: f => f,\n options: [],\n value: [],\n ItemComponent: AttachPDFListItem,\n showSelectAll: true,\n showSelectedItemCount: true,\n ignoreDefaultValueCheck: false,\n disabledHoverText: null,\n disableDefaultDocument: false\n};\n\nexport default SelectList;\n","import isEqual from 'lodash/isEqual';\nimport {\n func, string, array\n} from 'prop-types';\nimport React, { useRef } from 'react';\nimport SelectList from './SelectList';\n\nconst SelectListWrapper = ({\n pdfRelatedConfigsForAllForm, setSelectedPDF, formID, selectedTotalPDFCountLimit, increaseTotalPDF, getAllPdfByID, allPDF\n}) => {\n const LIMIT_TEXT = 'You can send a maximum of 3 PDF Documents.';\n\n const selectedElementRef = useRef([]);\n const pdfByFormId = pdfRelatedConfigsForAllForm?.map(({ pdfOptions: options }) => {\n if (options.length === 1 && options?.[0]?.text === 'Default Document' && options?.[0]?.value === '') {\n const arr = [];\n arr.push(options?.[0]);\n return arr;\n }\n return options?.filter(option => option?.formID === formID);\n });\n\n // filter data if duplicate any pdf find\n const pdfList = pdfByFormId?.reduce((prev, next) => (prev?.length > next?.length ? prev : next), 0);\n\n let defaultValueForPDF = allPDF;\n\n let pdfListWithDisableState = [];\n if (pdfList) {\n pdfListWithDisableState = [...pdfList];\n }\n if (selectedTotalPDFCountLimit) {\n pdfListWithDisableState = pdfList?.map(v => {\n return selectedElementRef?.current?.selectedItems?.includes(v.value) ? { ...v, disabled: false } : { ...v, disabled: true };\n });\n }\n const onChangeFunc = value => {\n const formByList = [];\n formByList[formID] = value;\n defaultValueForPDF = getAllPdfByID(formID);\n increaseTotalPDF(formByList);\n };\n\n return (\n <>\n
    \n
    \n {\n if (!isEqual(defaultValueForPDF, value) && value?.[0] !== '') {\n setSelectedPDF(value);\n onChangeFunc(value);\n }\n }}\n ref={selectedElementRef}\n ignoreDefaultValueCheck={true}\n value={defaultValueForPDF}\n disabledHoverText={LIMIT_TEXT}\n formID={formID}\n disableDefaultDocument={true}\n />\n
    \n
    \n \n );\n};\n\nSelectListWrapper.defaultProps = {\n pdfRelatedConfigsForAllForm: [],\n setSelectedPDF: f => f,\n formID: '',\n selectedTotalPDFCountLimit: f => f,\n increaseTotalPDF: f => f,\n getAllPdfByID: f => f,\n allPDF: []\n};\n\nSelectListWrapper.propTypes = {\n pdfRelatedConfigsForAllForm: array,\n setSelectedPDF: func,\n formID: string,\n selectedTotalPDFCountLimit: func,\n increaseTotalPDF: func,\n getAllPdfByID: func,\n allPDF: array\n};\n\nexport default SelectListWrapper;\n","import classNames from 'classnames';\nimport React, { useEffect, useState } from 'react';\nimport {\n func, string, array, bool\n} from 'prop-types';\nimport Dropdown from '@jotforminc/dropdown';\nimport { t } from '@jotforminc/translation';\n\nimport SelectListWrapper from './SelectListWrapper';\n\nconst DropdownWrapper = ({\n forms, form, pdfDocuments, selectedTotalPDF, type, selectedTotalPDFCountLimit, pdfRelatedConfigsForAllForm, onChangeFunc, increaseTotalPDF, usedFromEmail\n}) => {\n const getAllPdfByID = formID => {\n const result = [];\n if (Array.isArray(pdfDocuments)) {\n if (pdfDocuments && pdfDocuments?.length > 0) {\n pdfDocuments?.forEach(value => {\n const relatedPDFList = forms?.find?.(formValue => formValue.id === formID)?.pdfs || [];\n const filteredPDFList = relatedPDFList?.filter?.(list => list?.id === value?.pdfID);\n if ((value?.formID === formID) && !(value?.importedPDF) && (filteredPDFList?.length > 0 || value?.pdfID === '')) {\n result.push(value.pdfID);\n }\n // special case for selected importedPDF\n if ((value?.formID === formID) && (filteredPDFList?.length === 0 && value?.importedPDF)) {\n result.push('importedPDF');\n }\n });\n }\n }\n if (pdfDocuments && pdfDocuments[formID]) {\n return pdfDocuments[formID];\n }\n\n return result;\n };\n const [allPDF, setAllPDF] = useState(getAllPdfByID(form?.id) || []);\n\n useEffect(() => {\n setAllPDF(getAllPdfByID(form?.id));\n }, [selectedTotalPDF]);\n\n const optionListData = (setSelectedPDF, formID) => {\n return [{\n text: null,\n value: null,\n beforeComponent: ,\n showOutsideButton: true,\n disabled: true\n }];\n };\n const [selectedPDFList, setSelectedPDF] = useState(form?.id ? getAllPdfByID(form.id) : []);\n\n return (\n
    \n \n
    \n );\n};\n\nexport default DropdownWrapper;\n\nDropdownWrapper.defaultProps = {\n forms: [],\n form: [],\n pdfDocuments: [],\n selectedTotalPDF: [],\n type: '',\n selectedTotalPDFCountLimit: func,\n pdfRelatedConfigsForAllForm: [],\n onChangeFunc: f => f,\n increaseTotalPDF: f => f,\n usedFromEmail: true\n\n};\n\nDropdownWrapper.propTypes = {\n forms: array,\n form: array,\n pdfDocuments: array,\n selectedTotalPDF: array,\n type: string,\n selectedTotalPDFCountLimit: func,\n pdfRelatedConfigsForAllForm: array,\n onChangeFunc: func,\n increaseTotalPDF: func,\n usedFromEmail: bool\n\n};\n","import React, { useEffect, useState } from 'react';\nimport {\n oneOf, array, func, node, bool\n} from 'prop-types';\n// import { getMissingPDFAttachmentMessage } from '@jotforminc/utils';\n// import cx from 'classnames';\nimport '../../../styles/ResourcePickerDropdown.scss';\nimport '../../../styles/jfEmailWizard-formWizard.scss';\nimport '../../../styles/jfEmailWizard.scss';\nimport './style.scss';\nimport DropdownWrapper from './components/DropdownWrapper';\n\nconst LIMIT_COUNT = 3;\n\nconst MultipleFormPDFDropdown = ({\n type, forms, pdfRelatedConfigsForAllForm, onChange, valueList, PDFData, usedFromEmail\n}) => {\n const { pdfDocuments = [] } = valueList;\n const listOfPDF = usedFromEmail ? pdfDocuments : PDFData;\n\n const converter = list => {\n let temp = {};\n if (Array.isArray(list)) {\n list.forEach(formByVal => {\n const id = formByVal.formID;\n const val = {};\n if (temp[id]) {\n const newVal = [...temp[id], formByVal.pdfID];\n temp[id] = newVal;\n } else {\n val[id] = [formByVal.pdfID];\n temp = { ...temp, ...val };\n }\n });\n }\n\n return temp;\n };\n const [selectedTotalPDF, setSelectedTotalPDF] = useState(listOfPDF ? converter(listOfPDF) : {});\n\n let totalCount = 0;\n\n const selectedTotalPDFCountLimit = Object.values(selectedTotalPDF)?.some(pdfValue => {\n totalCount += pdfValue?.length;\n return totalCount >= LIMIT_COUNT;\n });\n\n const getAllPdfByID = formID => {\n const result = [];\n if (Array.isArray(pdfDocuments)) {\n if (pdfDocuments && pdfDocuments?.length > 0) {\n pdfDocuments?.forEach(value => {\n const relatedPDFList = forms?.find?.(form => form.id === formID)?.pdfs || [];\n const filteredPDFList = relatedPDFList?.filter?.(list => list?.id === value?.pdfID);\n if ((value?.formID === formID) && !(value?.importedPDF) && (filteredPDFList?.length > 0 || value?.pdfID === '')) {\n result.push(value.pdfID);\n }\n // special case for selected importedPDF\n if ((value?.formID === formID) && (filteredPDFList?.length === 0 && value?.importedPDF)) {\n result.push('importedPDF');\n }\n });\n }\n }\n if (pdfDocuments && pdfDocuments[formID]) {\n return pdfDocuments[formID];\n }\n\n return result;\n };\n\n useEffect(() => {\n let triggerTotalPDF = {};\n if (forms) {\n forms?.forEach(form => {\n if (getAllPdfByID(form?.id)?.length > 0) {\n triggerTotalPDF = { ...triggerTotalPDF, [form?.id]: getAllPdfByID(form?.id) };\n }\n });\n }\n }, []);\n\n const increaseTotalPDF = pdfIDList => {\n setSelectedTotalPDF({ ...selectedTotalPDF, ...pdfIDList });\n onChange({ ...selectedTotalPDF, ...pdfIDList });\n };\n\n // const pdfOptionsByFormId = pdfRelatedConfigsForAllForm.reduce((result, current) => ({ ...result, [current.formID]: (current.pdfOptions || []).map(pdfOption => pdfOption.value) || [] }), {});\n return (\n <>\n
    \n {forms?.map(form => {\n // const missingPdfAttachment = Boolean(getMissingPDFAttachmentMessage(pdfOptionsByFormId[form.id], selectedTotalPDF[form.id]));\n return (\n \n );\n })}\n
    \n\n \n );\n};\n\nMultipleFormPDFDropdown.defaultProps = {\n type: 'form',\n PDFData: [],\n forms: [],\n pdfRelatedConfigsForAllForm: [],\n onChange: f => f,\n valueList: {},\n usedFromEmail: true\n};\n\nMultipleFormPDFDropdown.propTypes = {\n type: oneOf(['table', 'form']),\n PDFData: array,\n forms: array,\n pdfRelatedConfigsForAllForm: array,\n onChange: func,\n valueList: node,\n usedFromEmail: bool\n};\n\nexport default MultipleFormPDFDropdown;\n","const gray = '#C8CEED';\nconst darkGray = '#6F76A7';\nconst lightGray = '#F3F3FE';\nconst blue = '#0099FF';\nconst darkBlue = '#0A1551';\nconst lightestBlue = '#EDF8FF';\nconst lightBlue = '#DBF1FF';\n\nexport const theme = {\n fontSize: '16px',\n\n itemBg: '#fff',\n itemBgFocus: lightGray,\n itemBgSelected: lightestBlue,\n itemBgSelectedHover: lightBlue,\n itemBorder: gray,\n itemBorderSelected: blue,\n lineHeight: `${21 / 16}em`,\n itemPadding: `${15 / 16}em`,\n\n // title\n titleColor: darkBlue,\n titleFontSize: `${17 / 16}em`,\n titleFontWeight: '500',\n\n // details\n detailsColor: darkGray,\n detailsFontSize: `${14 / 16}em`,\n detailsFontWeight: '300',\n\n // checkbox\n chBorder: gray,\n chSelected: blue,\n // eslint-disable-next-line max-len\n chIcon: \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='11' height='10' viewBox='0 0 11 10'%3E%3Cpath fill='none' fill-rule='evenodd' stroke='%23FFF' stroke-linecap='round' stroke-width='2' d='M4 8.025L6.994 10.951 12.905 4.5' transform='translate%28-3 -3%29'/%3E%3C/svg%3E%0A\",\n // eslint-disable-next-line max-len\n chPartialIcon: \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='3' viewBox='0 0 10 3'%3E%3Cpath fill='none' fill-rule='evenodd' stroke='%23FFF' stroke-linecap='round' stroke-width='2' d='M4 8.5L11.937 8.5' transform='translate%28-3 -7%29'/%3E%3C/svg%3E\"\n};\n","var _g, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgNoFormsFoundIcon = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 108 121\"\n}, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0)\"\n}, /*#__PURE__*/React.createElement(\"circle\", {\n cx: 54.5,\n cy: 58.4492,\n r: 52.5,\n fill: \"#F3F3FE\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M61.1099 58.4224C61.1099 55.2404 63.6894 52.6609 66.8714 52.6609H94.2387C97.4207 52.6609 100 55.2404 100 58.4224V92.9916C100 96.1736 97.4207 98.7532 94.2387 98.7532H66.8714C63.6894 98.7532 61.1099 96.1736 61.1099 92.9916V58.4224Z\",\n fill: \"white\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M94.2387 54.1013H66.8714C64.4849 54.1013 62.5502 56.0359 62.5502 58.4224V92.9916C62.5502 95.3781 64.4849 97.3128 66.8714 97.3128H94.2387C96.6252 97.3128 98.5598 95.3781 98.5598 92.9916V58.4224C98.5598 56.0359 96.6252 54.1013 94.2387 54.1013ZM66.8714 52.6609C63.6894 52.6609 61.1099 55.2404 61.1099 58.4224V92.9916C61.1099 96.1736 63.6894 98.7532 66.8714 98.7532H94.2387C97.4207 98.7532 100 96.1736 100 92.9916V58.4224C100 55.2404 97.4207 52.6609 94.2387 52.6609H66.8714Z\",\n fill: \"#B1C3E9\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M69.3403 68.2993C69.3403 66.9356 70.4458 65.8301 71.8096 65.8301H89.9172C91.281 65.8301 92.3865 66.9356 92.3865 68.2993C92.3865 69.663 91.281 70.7685 89.9172 70.7685H71.8096C70.4458 70.7685 69.3403 69.663 69.3403 68.2993Z\",\n fill: \"#0099FF\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M69.3403 76.5298C69.3403 75.1661 70.4458 74.0605 71.8096 74.0605H89.9172C91.281 74.0605 92.3865 75.1661 92.3865 76.5298C92.3865 77.8935 91.281 78.999 89.9172 78.999H71.8096C70.4458 78.999 69.3403 77.8935 69.3403 76.5298Z\",\n fill: \"#FF6100\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M69.3403 84.7607C69.3403 83.397 70.4458 82.2915 71.8096 82.2915H89.9172C91.281 82.2915 92.3865 83.397 92.3865 84.7607C92.3865 86.1245 91.281 87.23 89.9172 87.23H71.8096C70.4458 87.23 69.3403 86.1245 69.3403 84.7607Z\",\n fill: \"#FFB629\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M37.1431 8.13654C37.1431 4.95453 39.7226 2.375 42.9046 2.375H70.2719C73.4539 2.375 76.0334 4.95453 76.0334 8.13654V42.7057C76.0334 45.8878 73.4539 48.4673 70.2719 48.4673H42.9046C39.7226 48.4673 37.1431 45.8878 37.1431 42.7057V8.13654Z\",\n fill: \"white\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M70.2719 3.81538H42.9046C40.5181 3.81538 38.5835 5.75003 38.5835 8.13654V42.7057C38.5835 45.0923 40.5181 47.0269 42.9046 47.0269H70.2719C72.6584 47.0269 74.593 45.0923 74.593 42.7057V8.13654C74.593 5.75003 72.6584 3.81538 70.2719 3.81538ZM42.9046 2.375C39.7226 2.375 37.1431 4.95453 37.1431 8.13654V42.7057C37.1431 45.8878 39.7226 48.4673 42.9046 48.4673H70.2719C73.4539 48.4673 76.0334 45.8878 76.0334 42.7057V8.13654C76.0334 4.95453 73.4539 2.375 70.2719 2.375H42.9046Z\",\n fill: \"#B1C3E9\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M45.3735 18.0134C45.3735 16.6497 46.479 15.5442 47.8428 15.5442H65.9504C67.3142 15.5442 68.4197 16.6497 68.4197 18.0134C68.4197 19.3771 67.3142 20.4826 65.9504 20.4826H47.8428C46.479 20.4826 45.3735 19.3771 45.3735 18.0134Z\",\n fill: \"#0099FF\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M45.3735 26.2439C45.3735 24.8802 46.479 23.7747 47.8428 23.7747H65.9504C67.3142 23.7747 68.4197 24.8802 68.4197 26.2439C68.4197 27.6076 67.3142 28.7131 65.9504 28.7131H47.8428C46.479 28.7131 45.3735 27.6076 45.3735 26.2439Z\",\n fill: \"#FF6100\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M45.3735 34.4748C45.3735 33.1111 46.479 32.0056 47.8428 32.0056H65.9504C67.3142 32.0056 68.4197 33.1111 68.4197 34.4748C68.4197 35.8386 67.3142 36.9441 65.9504 36.9441H47.8428C46.479 36.9441 45.3735 35.8386 45.3735 34.4748Z\",\n fill: \"#FFB629\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 58.4224C12 55.2404 14.5795 52.6609 17.7615 52.6609H45.1288C48.3108 52.6609 50.8904 55.2404 50.8904 58.4224V92.9916C50.8904 96.1736 48.3108 98.7532 45.1288 98.7532H17.7615C14.5795 98.7532 12 96.1736 12 92.9916V58.4224Z\",\n fill: \"white\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M45.1288 54.1013H17.7615C15.375 54.1013 13.4404 56.0359 13.4404 58.4224V92.9916C13.4404 95.3781 15.375 97.3128 17.7615 97.3128H45.1288C47.5153 97.3128 49.45 95.3781 49.45 92.9916V58.4224C49.45 56.0359 47.5153 54.1013 45.1288 54.1013ZM17.7615 52.6609C14.5795 52.6609 12 55.2404 12 58.4224V92.9916C12 96.1736 14.5795 98.7532 17.7615 98.7532H45.1288C48.3108 98.7532 50.8904 96.1736 50.8904 92.9916V58.4224C50.8904 55.2404 48.3108 52.6609 45.1288 52.6609H17.7615Z\",\n fill: \"#B1C3E9\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20.2305 68.2993C20.2305 66.9356 21.336 65.8301 22.6997 65.8301H40.8074C42.1711 65.8301 43.2766 66.9356 43.2766 68.2993C43.2766 69.663 42.1711 70.7685 40.8074 70.7685H22.6997C21.336 70.7685 20.2305 69.663 20.2305 68.2993Z\",\n fill: \"#0099FF\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20.2305 76.5298C20.2305 75.1661 21.336 74.0605 22.6997 74.0605H40.8074C42.1711 74.0605 43.2766 75.1661 43.2766 76.5298C43.2766 77.8935 42.1711 78.999 40.8074 78.999H22.6997C21.336 78.999 20.2305 77.8935 20.2305 76.5298Z\",\n fill: \"#FF6100\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20.2305 84.7607C20.2305 83.397 21.336 82.2915 22.6997 82.2915H40.8074C42.1711 82.2915 43.2766 83.397 43.2766 84.7607C43.2766 86.1245 42.1711 87.23 40.8074 87.23H22.6997C21.336 87.23 20.2305 86.1245 20.2305 84.7607Z\",\n fill: \"#FFB629\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.5,\n d: \"M53.4659 100.228C60.6527 99.0526 65.526 92.2739 64.3508 85.0871C63.1756 77.9003 56.3969 73.027 49.2101 74.2022C42.0233 75.3774 37.15 82.1561 38.3252 89.3429C39.5004 96.5297 46.2791 101.403 53.4659 100.228Z\",\n fill: \"url(#paint0_linear)\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M56.6883 100.626L59.2301 99.3097L64.5955 109.657L62.0567 110.975L56.6883 100.626Z\",\n fill: \"#0A1551\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M44.649 74.3221C42.1006 75.6452 40.0015 77.6942 38.6174 80.21C37.2334 82.7257 36.6265 85.5953 36.8732 88.456C37.1199 91.3168 38.2092 94.0401 40.0035 96.2818C41.7978 98.5235 44.2166 100.183 46.9539 101.05C49.6911 101.917 52.6239 101.954 55.3817 101.154C58.1395 100.355 60.5985 98.7553 62.4476 96.5585C64.2966 94.3617 65.4527 91.6659 65.7698 88.8121C66.0869 85.9583 65.5508 83.0746 64.2292 80.5255C62.4551 77.1072 59.396 74.5335 55.7247 73.3701C52.0534 72.2068 48.0705 72.549 44.6515 74.3217L44.649 74.3221ZM56.836 97.7931C54.7413 98.8817 52.371 99.3247 50.0246 99.0659C47.6782 98.807 45.461 97.8581 43.654 96.3391C41.8469 94.8201 40.531 92.7993 39.8726 90.5323C39.2142 88.2653 39.2429 85.854 39.9551 83.6033C40.6673 81.3527 42.0311 79.3638 43.8738 77.8883C45.7165 76.4128 47.9554 75.517 50.3073 75.3141C52.6593 75.1112 55.0186 75.6105 57.0867 76.7486C59.1549 77.8868 60.8391 79.6128 61.9262 81.7083C63.3813 84.516 63.6623 87.7866 62.7078 90.8016C61.7532 93.8165 59.6411 96.3293 56.8352 97.788L56.836 97.7931Z\",\n fill: \"#0A1551\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M67.435 118.328C67.1874 118.457 66.9168 118.536 66.6387 118.56C66.3605 118.585 66.0804 118.554 65.8142 118.469C65.548 118.385 65.301 118.249 65.0875 118.069C64.8739 117.889 64.6982 117.669 64.57 117.421L57.2159 103.261L60.9853 101.301L68.3419 115.461C68.4713 115.708 68.5506 115.979 68.5751 116.257C68.5995 116.536 68.5689 116.816 68.4846 117.083C68.4003 117.349 68.2641 117.597 68.084 117.81C67.9039 118.024 67.6833 118.2 67.435 118.328Z\",\n fill: \"#0A1551\"\n}))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint0_linear\",\n x1: 49.2101,\n y1: 74.2022,\n x2: 53.4659,\n y2: 100.228,\n gradientUnits: \"userSpaceOnUse\"\n}, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#92B0EC\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#92B0EC\",\n stopOpacity: 0.51\n})), /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0\"\n}, /*#__PURE__*/React.createElement(\"rect\", {\n width: 108,\n height: 120,\n fill: \"white\",\n transform: \"translate(0 0.375)\"\n})))));\nexport default SvgNoFormsFoundIcon;","var _g, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgNoAppsFoundIcon = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 108 120\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0)\"\n}, /*#__PURE__*/React.createElement(\"circle\", {\n cx: 54.5,\n cy: 55.5,\n r: 52.5,\n fill: \"#F3F3FE\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n x: 38.25,\n y: 3.67578,\n width: 37.5,\n height: 37.5,\n rx: 2.75,\n fill: \"white\",\n stroke: \"#B1C3E9\",\n strokeWidth: 1.5\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M42 11.1758C42 9.10471 43.6789 7.42578 45.75 7.42578H68.25C70.3211 7.42578 72 9.10471 72 11.1758V33.6758C72 35.7468 70.3211 37.4258 68.25 37.4258H45.75C43.6789 37.4258 42 35.7468 42 33.6758V11.1758Z\",\n fill: \"white\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M63.2489 24.4626C62.9735 24.4626 62.7501 24.6861 62.7501 24.9615V27.892H59.8196C59.5442 27.892 59.3208 28.1154 59.3208 28.3908C59.3208 28.6662 59.5442 28.8896 59.8196 28.8896H62.7501V31.8201C62.7501 32.0955 62.9735 32.3189 63.2489 32.3189C63.5243 32.3189 63.7477 32.0955 63.7477 31.8201V28.8896H66.6782C66.9536 28.8896 67.177 28.6662 67.177 28.3908C67.177 28.1154 66.9536 27.892 66.6782 27.892H63.7477V24.9615C63.7477 24.6861 63.5243 24.4626 63.2489 24.4626Z\",\n fill: \"#97ACDA\",\n stroke: \"#97ACDA\",\n strokeWidth: 0.651698\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M58.3838 11.994C58.3838 11.5421 58.7502 11.1757 59.2021 11.1757H67.3857C67.8377 11.1757 68.2041 11.5421 68.2041 11.994V20.1776C68.2041 20.6296 67.8377 20.9959 67.3857 20.9959H59.2021C58.7502 20.9959 58.3838 20.6296 58.3838 20.1776V11.994Z\",\n fill: \"#FF6100\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M45.751 11.994C45.751 11.5421 46.1174 11.1757 46.5693 11.1757H54.7529C55.2049 11.1757 55.5713 11.5421 55.5713 11.994V20.1776C55.5713 20.6296 55.2049 20.9959 54.7529 20.9959H46.5693C46.1174 20.9959 45.751 20.6296 45.751 20.1776V11.994Z\",\n fill: \"#0099FF\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M45.751 24.6268C45.751 24.1749 46.1174 23.8085 46.5693 23.8085H54.7529C55.2049 23.8085 55.5713 24.1749 55.5713 24.6268V32.8104C55.5713 33.2624 55.2049 33.6288 54.7529 33.6288H46.5693C46.1174 33.6288 45.751 33.2624 45.751 32.8104V24.6268Z\",\n fill: \"#FFB629\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n x: 13.25,\n y: 53.6758,\n width: 37.5,\n height: 37.5,\n rx: 2.75,\n fill: \"white\",\n stroke: \"#B1C3E9\",\n strokeWidth: 1.5\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17 61.1758C17 59.1047 18.6789 57.4258 20.75 57.4258H43.25C45.3211 57.4258 47 59.1047 47 61.1758V83.6758C47 85.7468 45.3211 87.4258 43.25 87.4258H20.75C18.6789 87.4258 17 85.7468 17 83.6758V61.1758Z\",\n fill: \"white\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M38.2489 74.4626C37.9735 74.4626 37.7501 74.6861 37.7501 74.9615V77.892H34.8196C34.5442 77.892 34.3208 78.1154 34.3208 78.3908C34.3208 78.6662 34.5442 78.8896 34.8196 78.8896H37.7501V81.8201C37.7501 82.0955 37.9735 82.3189 38.2489 82.3189C38.5243 82.3189 38.7477 82.0955 38.7477 81.8201V78.8896H41.6782C41.9536 78.8896 42.177 78.6662 42.177 78.3908C42.177 78.1154 41.9536 77.892 41.6782 77.892H38.7477V74.9615C38.7477 74.6861 38.5243 74.4626 38.2489 74.4626Z\",\n fill: \"#97ACDA\",\n stroke: \"#97ACDA\",\n strokeWidth: 0.651698\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M33.3838 61.994C33.3838 61.5421 33.7502 61.1757 34.2021 61.1757H42.3857C42.8377 61.1757 43.2041 61.5421 43.2041 61.994V70.1776C43.2041 70.6296 42.8377 70.9959 42.3857 70.9959H34.2021C33.7502 70.9959 33.3838 70.6296 33.3838 70.1776V61.994Z\",\n fill: \"#FF6100\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20.751 61.994C20.751 61.5421 21.1174 61.1757 21.5693 61.1757H29.7529C30.2049 61.1757 30.5713 61.5421 30.5713 61.994V70.1776C30.5713 70.6296 30.2049 70.9959 29.7529 70.9959H21.5693C21.1174 70.9959 20.751 70.6296 20.751 70.1776V61.994Z\",\n fill: \"#0099FF\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20.751 74.6267C20.751 74.1747 21.1174 73.8083 21.5693 73.8083H29.7529C30.2049 73.8083 30.5713 74.1747 30.5713 74.6267V82.8103C30.5713 83.2622 30.2049 83.6286 29.7529 83.6286H21.5693C21.1174 83.6286 20.751 83.2622 20.751 82.8103V74.6267Z\",\n fill: \"#FFB629\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n x: 62.25,\n y: 53.6758,\n width: 37.5,\n height: 37.5,\n rx: 2.75,\n fill: \"white\",\n stroke: \"#B1C3E9\",\n strokeWidth: 1.5\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M66 61.1758C66 59.1047 67.6789 57.4258 69.75 57.4258H92.25C94.3211 57.4258 96 59.1047 96 61.1758V83.6758C96 85.7468 94.3211 87.4258 92.25 87.4258H69.75C67.6789 87.4258 66 85.7468 66 83.6758V61.1758Z\",\n fill: \"white\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M87.2489 74.4626C86.9735 74.4626 86.7501 74.6861 86.7501 74.9615V77.892H83.8196C83.5442 77.892 83.3208 78.1154 83.3208 78.3908C83.3208 78.6662 83.5442 78.8896 83.8196 78.8896H86.7501V81.8201C86.7501 82.0955 86.9735 82.3189 87.2489 82.3189C87.5243 82.3189 87.7477 82.0955 87.7477 81.8201V78.8896H90.6782C90.9536 78.8896 91.177 78.6662 91.177 78.3908C91.177 78.1154 90.9536 77.892 90.6782 77.892H87.7477V74.9615C87.7477 74.6861 87.5243 74.4626 87.2489 74.4626Z\",\n fill: \"#97ACDA\",\n stroke: \"#97ACDA\",\n strokeWidth: 0.651698\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M82.3838 61.994C82.3838 61.5421 82.7502 61.1757 83.2021 61.1757H91.3857C91.8377 61.1757 92.2041 61.5421 92.2041 61.994V70.1776C92.2041 70.6296 91.8377 70.9959 91.3857 70.9959H83.2021C82.7502 70.9959 82.3838 70.6296 82.3838 70.1776V61.994Z\",\n fill: \"#FF6100\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M69.751 61.994C69.751 61.5421 70.1174 61.1757 70.5693 61.1757H78.7529C79.2049 61.1757 79.5713 61.5421 79.5713 61.994V70.1776C79.5713 70.6296 79.2049 70.9959 78.7529 70.9959H70.5693C70.1174 70.9959 69.751 70.6296 69.751 70.1776V61.994Z\",\n fill: \"#0099FF\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M69.751 74.6267C69.751 74.1747 70.1174 73.8083 70.5693 73.8083H78.7529C79.2049 73.8083 79.5713 74.1747 79.5713 74.6267V82.8103C79.5713 83.2622 79.2049 83.6286 78.7529 83.6286H70.5693C70.1174 83.6286 69.751 83.2622 69.751 82.8103V74.6267Z\",\n fill: \"#FFB629\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.5,\n d: \"M53.4659 97.2786C60.6527 96.1034 65.526 89.3246 64.3508 82.1379C63.1756 74.9511 56.3969 70.0777 49.2101 71.2529C42.0233 72.4282 37.15 79.2069 38.3252 86.3937C39.5004 93.5805 46.2791 98.4538 53.4659 97.2786Z\",\n fill: \"url(#paint0_linear)\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M56.6883 97.6764L59.2301 96.3605L64.5955 106.708L62.0567 108.026L56.6883 97.6764Z\",\n fill: \"#0A1551\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M44.649 71.3729C42.1006 72.6959 40.0015 74.745 38.6174 77.2607C37.2334 79.7765 36.6265 82.6461 36.8732 85.5068C37.1199 88.3675 38.2092 91.0909 40.0035 93.3326C41.7978 95.5743 44.2166 97.2337 46.9539 98.1009C49.6911 98.9682 52.6239 99.0043 55.3817 98.2048C58.1395 97.4053 60.5985 95.8061 62.4476 93.6093C64.2966 91.4125 65.4527 88.7167 65.7698 85.8629C66.0869 83.0091 65.5508 80.1254 64.2292 77.5763C62.4551 74.158 59.396 71.5843 55.7247 70.4209C52.0534 69.2576 48.0705 69.5998 44.6515 71.3725L44.649 71.3729ZM56.836 94.8439C54.7413 95.9325 52.371 96.3755 50.0246 96.1166C47.6782 95.8578 45.461 94.9089 43.654 93.3899C41.8469 91.8709 40.531 89.8501 39.8726 87.5831C39.2142 85.3161 39.2429 82.9048 39.9551 80.6541C40.6673 78.4034 42.0311 76.4146 43.8738 74.9391C45.7165 73.4636 47.9554 72.5677 50.3073 72.3649C52.6593 72.162 55.0186 72.6612 57.0867 73.7994C59.1549 74.9376 60.8391 76.6636 61.9262 78.759C63.3813 81.5668 63.6623 84.8374 62.7078 87.8524C61.7532 90.8673 59.6411 93.3801 56.8352 94.8388L56.836 94.8439Z\",\n fill: \"#0A1551\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M67.435 115.379C67.1874 115.508 66.9168 115.587 66.6387 115.611C66.3605 115.635 66.0804 115.604 65.8142 115.52C65.548 115.436 65.301 115.3 65.0875 115.12C64.8739 114.94 64.6982 114.72 64.57 114.472L57.2159 100.312L60.9853 98.3516L68.3419 112.511C68.4713 112.759 68.5506 113.03 68.5751 113.308C68.5995 113.587 68.5689 113.867 68.4846 114.134C68.4003 114.4 68.2641 114.647 68.084 114.861C67.9039 115.075 67.6833 115.251 67.435 115.379Z\",\n fill: \"#0A1551\"\n}))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint0_linear\",\n x1: 49.2101,\n y1: 71.2529,\n x2: 53.4659,\n y2: 97.2786,\n gradientUnits: \"userSpaceOnUse\"\n}, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#92B0EC\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#92B0EC\",\n stopOpacity: 0.51\n})), /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0\"\n}, /*#__PURE__*/React.createElement(\"rect\", {\n width: 108,\n height: 120,\n fill: \"white\"\n})))));\nexport default SvgNoAppsFoundIcon;","var _circle, _path, _rect, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _path9, _path10, _rect2, _path11, _rect3, _path12, _path13, _path14, _path15, _path16, _path17, _path18, _path19, _path20, _rect4, _path21, _rect5, _path22, _path23, _path24, _path25, _path26, _path27, _path28, _path29, _path30, _rect6, _path31, _path32, _path33, _path34, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgNoTablesFoundIcon = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 105 118\"\n}, props), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 52.5,\n cy: 52.875,\n r: 52.5,\n fill: \"#F3F3FE\"\n})), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M39.5867 37.8002C37.5562 37.8002 37.0021 37.2532 37.0019 35.2137C36.9993 16.9246 36.9995 22.6352 37.0017 4.34606C37.0019 2.39955 37.587 1.80482 39.5449 1.80438C57.8487 1.79958 52.1526 1.79958 70.4564 1.80438C72.3869 1.80482 72.997 2.42289 72.9974 4.36111C73.0009 22.6503 73.0007 16.9396 72.9979 35.2288C72.9974 37.2453 72.4258 37.7999 70.3892 37.8002C61.2374 37.8012 64.0854 37.8006 54.9336 37.8006C45.818 37.8006 48.7023 37.8012 39.5867 37.8002ZM69.7774 35.2294C70.137 35.2294 70.4286 34.9378 70.4286 34.5781V27.5652C70.4286 27.2055 70.137 26.914 69.7774 26.914H62.7644C62.4047 26.914 62.1132 27.2055 62.1132 27.5652V34.5781C62.1132 34.9378 62.4047 35.2294 62.7644 35.2294H69.7774ZM51.4935 35.2294H58.5065C58.8661 35.2294 59.1577 34.9378 59.1577 34.5781V27.5652C59.1577 27.2055 58.8661 26.914 58.5065 26.914H51.4935C51.1338 26.914 50.8423 27.2055 50.8423 27.5652V34.5781C50.8423 34.9378 51.1338 35.2294 51.4935 35.2294ZM40.2226 35.2294H47.2356C47.5953 35.2294 47.8868 34.9378 47.8868 34.5781V27.5652C47.8868 27.2055 47.5953 26.914 47.2356 26.914H40.2226C39.863 26.914 39.5714 27.2055 39.5714 27.5652V34.5781C39.5714 34.9378 39.863 35.2294 40.2226 35.2294ZM62.7644 23.9585H69.7774C70.137 23.9585 70.4286 23.6669 70.4286 23.3073V16.2943C70.4286 15.9346 70.137 15.6431 69.7774 15.6431H62.7644C62.4047 15.6431 62.1132 15.9346 62.1132 16.2943V23.3073C62.1132 23.6669 62.4047 23.9585 62.7644 23.9585ZM51.4935 23.9585H58.5065C58.8661 23.9585 59.1577 23.6669 59.1577 23.3073V16.2943C59.1577 15.9346 58.8661 15.6431 58.5065 15.6431H51.4935C51.1338 15.6431 50.8423 15.9346 50.8423 16.2943V23.3073C50.8423 23.6669 51.1338 23.9585 51.4935 23.9585ZM40.2226 23.9585H47.2356C47.5953 23.9585 47.8868 23.6669 47.8868 23.3073V16.2943C47.8868 15.9346 47.5953 15.6431 47.2356 15.6431H40.2226C39.863 15.6431 39.5714 15.9346 39.5714 16.2943V23.3073C39.5714 23.6669 39.863 23.9585 40.2226 23.9585ZM51.4935 12.6876H58.5065C58.8661 12.6876 59.1577 12.5115 59.1577 12.2943V8.05883C59.1577 7.84162 58.8661 7.66554 58.5065 7.66554H51.4935C51.1338 7.66554 50.8423 7.84162 50.8423 8.05883V12.2943C50.8423 12.5115 51.1338 12.6876 51.4935 12.6876ZM62.7435 12.6876H69.7565C70.1161 12.6876 70.4077 12.5115 70.4077 12.2943V8.05883C70.4077 7.84162 70.1161 7.66554 69.7565 7.66554H62.7435C62.3839 7.66554 62.0923 7.84162 62.0923 8.05883V12.2943C62.0923 12.5115 62.3839 12.6876 62.7435 12.6876ZM40.2226 12.6876H47.2356C47.5953 12.6876 47.8868 12.5115 47.8868 12.2943V8.05883C47.8868 7.84162 47.5953 7.66554 47.2356 7.66554H40.2226C39.863 7.66554 39.5714 7.84162 39.5714 8.05883V12.2943C39.5714 12.5115 39.863 12.6876 40.2226 12.6876Z\",\n fill: \"white\"\n})), _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n x: 39,\n y: 4.80078,\n width: 32,\n height: 31,\n fill: \"white\"\n})), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M62 7.80078C62 7.2485 62.4477 6.80078 63 6.80078H69.4077C69.96 6.80078 70.4077 7.2485 70.4077 7.80078V11.8008C70.4077 12.3531 69.96 12.8008 69.4077 12.8008H63C62.4477 12.8008 62 12.3531 62 11.8008V7.80078Z\",\n fill: \"#0D953B\"\n})), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M62 16.8008C62 16.2485 62.4477 15.8008 63 15.8008H69C69.5523 15.8008 70 16.2485 70 16.8008V22.8008C70 23.3531 69.5523 23.8008 69 23.8008H63C62.4477 23.8008 62 23.3531 62 22.8008V16.8008Z\",\n fill: \"#FFB629\"\n})), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M62 27.8008C62 27.2485 62.4477 26.8008 63 26.8008H69C69.5523 26.8008 70 27.2485 70 27.8008V33.8008C70 34.3531 69.5523 34.8008 69 34.8008H63C62.4477 34.8008 62 34.3531 62 33.8008V27.8008Z\",\n fill: \"#FFB629\"\n})), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M50.8437 7.80078C50.8437 7.2485 51.2914 6.80078 51.8437 6.80078H58.4085C58.9608 6.80078 59.4085 7.2485 59.4085 7.80078V11.8008C59.4085 12.3531 58.9608 12.8008 58.4085 12.8008H51.8437C51.2914 12.8008 50.8437 12.3531 50.8437 11.8008V7.80078Z\",\n fill: \"#0D953B\"\n})), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M51 16.8008C51 16.2485 51.4477 15.8008 52 15.8008H58C58.5523 15.8008 59 16.2485 59 16.8008V22.8008C59 23.3531 58.5523 23.8008 58 23.8008H52C51.4477 23.8008 51 23.3531 51 22.8008V16.8008Z\",\n fill: \"#FF6100\"\n})), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M51 27.8008C51 27.2485 51.4477 26.8008 52 26.8008H58C58.5523 26.8008 59 27.2485 59 27.8008V33.8008C59 34.3531 58.5523 34.8008 58 34.8008H52C51.4477 34.8008 51 34.3531 51 33.8008V27.8008Z\",\n fill: \"#FF6100\"\n})), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M39.5 7.80078C39.5 7.2485 39.9477 6.80078 40.5 6.80078H47C47.5523 6.80078 48 7.2485 48 7.80078V11.8008C48 12.3531 47.5523 12.8008 47 12.8008H40.5C39.9477 12.8008 39.5 12.3531 39.5 11.8008V7.80078Z\",\n fill: \"#0D953B\"\n})), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M39.5 16.8008C39.5 16.2485 39.9477 15.8008 40.5 15.8008H47C47.5523 15.8008 48 16.2485 48 16.8008V22.8008C48 23.3531 47.5523 23.8008 47 23.8008H40.5C39.9477 23.8008 39.5 23.3531 39.5 22.8008V19.8008V16.8008Z\",\n fill: \"#0099FF\"\n})), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M39.5 27.8008C39.5 27.2485 39.9477 26.8008 40.5 26.8008H47C47.5523 26.8008 48 27.2485 48 27.8008V33.8008C48 34.3531 47.5523 34.8008 47 34.8008H40.5C39.9477 34.8008 39.5 34.3531 39.5 33.8008V30.8008V27.8008Z\",\n fill: \"#0099FF\"\n})), _rect2 || (_rect2 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 36.25,\n y: 1.05078,\n width: 37.5,\n height: 37.5,\n rx: 2.75,\n stroke: \"#B1C3E9\",\n strokeWidth: 1.5\n})), _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14.5867 87.8002C12.5562 87.8002 12.0021 87.2532 12.0019 85.2137C11.9993 66.9246 11.9995 72.6352 12.0017 54.3461C12.0019 52.3995 12.587 51.8048 14.5449 51.8044C32.8487 51.7996 27.1526 51.7996 45.4564 51.8044C47.3869 51.8048 47.997 52.4229 47.9974 54.3611C48.0009 72.6503 48.0007 66.9396 47.9979 85.2288C47.9974 87.2453 47.4258 87.7999 45.3892 87.8002C36.2374 87.8012 39.0854 87.8006 29.9336 87.8006C20.818 87.8006 23.7023 87.8012 14.5867 87.8002ZM44.7774 85.2294C45.137 85.2294 45.4286 84.9378 45.4286 84.5781V77.5652C45.4286 77.2055 45.137 76.914 44.7774 76.914H37.7644C37.4047 76.914 37.1132 77.2055 37.1132 77.5652V84.5781C37.1132 84.9378 37.4047 85.2294 37.7644 85.2294H44.7774ZM26.4935 85.2294H33.5065C33.8661 85.2294 34.1577 84.9378 34.1577 84.5781V77.5652C34.1577 77.2055 33.8661 76.914 33.5065 76.914H26.4935C26.1338 76.914 25.8423 77.2055 25.8423 77.5652V84.5781C25.8423 84.9378 26.1338 85.2294 26.4935 85.2294ZM15.2226 85.2294H22.2356C22.5953 85.2294 22.8868 84.9378 22.8868 84.5781V77.5652C22.8868 77.2055 22.5953 76.914 22.2356 76.914H15.2226C14.863 76.914 14.5714 77.2055 14.5714 77.5652V84.5781C14.5714 84.9378 14.863 85.2294 15.2226 85.2294ZM37.7644 73.9585H44.7774C45.137 73.9585 45.4286 73.6669 45.4286 73.3073V66.2943C45.4286 65.9346 45.137 65.6431 44.7774 65.6431H37.7644C37.4047 65.6431 37.1132 65.9346 37.1132 66.2943V73.3073C37.1132 73.6669 37.4047 73.9585 37.7644 73.9585ZM26.4935 73.9585H33.5065C33.8661 73.9585 34.1577 73.6669 34.1577 73.3073V66.2943C34.1577 65.9346 33.8661 65.6431 33.5065 65.6431H26.4935C26.1338 65.6431 25.8423 65.9346 25.8423 66.2943V73.3073C25.8423 73.6669 26.1338 73.9585 26.4935 73.9585ZM15.2226 73.9585H22.2356C22.5953 73.9585 22.8868 73.6669 22.8868 73.3073V66.2943C22.8868 65.9346 22.5953 65.6431 22.2356 65.6431H15.2226C14.863 65.6431 14.5714 65.9346 14.5714 66.2943V73.3073C14.5714 73.6669 14.863 73.9585 15.2226 73.9585ZM26.4935 62.6876H33.5065C33.8661 62.6876 34.1577 62.5115 34.1577 62.2943V58.0588C34.1577 57.8416 33.8661 57.6655 33.5065 57.6655H26.4935C26.1338 57.6655 25.8423 57.8416 25.8423 58.0588V62.2943C25.8423 62.5115 26.1338 62.6876 26.4935 62.6876ZM37.7435 62.6876H44.7565C45.1161 62.6876 45.4077 62.5115 45.4077 62.2943V58.0588C45.4077 57.8416 45.1161 57.6655 44.7565 57.6655H37.7435C37.3839 57.6655 37.0923 57.8416 37.0923 58.0588V62.2943C37.0923 62.5115 37.3839 62.6876 37.7435 62.6876ZM15.2226 62.6876H22.2356C22.5953 62.6876 22.8868 62.5115 22.8868 62.2943V58.0588C22.8868 57.8416 22.5953 57.6655 22.2356 57.6655H15.2226C14.863 57.6655 14.5714 57.8416 14.5714 58.0588V62.2943C14.5714 62.5115 14.863 62.6876 15.2226 62.6876Z\",\n fill: \"white\"\n})), _rect3 || (_rect3 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 14,\n y: 54.8008,\n width: 32,\n height: 31,\n fill: \"white\"\n})), _path12 || (_path12 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M37 57.8008C37 57.2485 37.4477 56.8008 38 56.8008H44.4077C44.96 56.8008 45.4077 57.2485 45.4077 57.8008V61.8008C45.4077 62.3531 44.96 62.8008 44.4077 62.8008H38C37.4477 62.8008 37 62.3531 37 61.8008V57.8008Z\",\n fill: \"#0D953B\"\n})), _path13 || (_path13 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M37 66.8008C37 66.2485 37.4477 65.8008 38 65.8008H44C44.5523 65.8008 45 66.2485 45 66.8008V72.8008C45 73.3531 44.5523 73.8008 44 73.8008H38C37.4477 73.8008 37 73.3531 37 72.8008V66.8008Z\",\n fill: \"#FFB629\"\n})), _path14 || (_path14 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M37 77.8008C37 77.2485 37.4477 76.8008 38 76.8008H44C44.5523 76.8008 45 77.2485 45 77.8008V83.8008C45 84.3531 44.5523 84.8008 44 84.8008H38C37.4477 84.8008 37 84.3531 37 83.8008V77.8008Z\",\n fill: \"#FFB629\"\n})), _path15 || (_path15 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25.8437 57.8008C25.8437 57.2485 26.2914 56.8008 26.8437 56.8008H33.4085C33.9608 56.8008 34.4085 57.2485 34.4085 57.8008V61.8008C34.4085 62.3531 33.9608 62.8008 33.4085 62.8008H26.8437C26.2914 62.8008 25.8437 62.3531 25.8437 61.8008V57.8008Z\",\n fill: \"#0D953B\"\n})), _path16 || (_path16 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M26 66.8008C26 66.2485 26.4477 65.8008 27 65.8008H33C33.5523 65.8008 34 66.2485 34 66.8008V72.8008C34 73.3531 33.5523 73.8008 33 73.8008H27C26.4477 73.8008 26 73.3531 26 72.8008V66.8008Z\",\n fill: \"#FF6100\"\n})), _path17 || (_path17 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M26 77.8008C26 77.2485 26.4477 76.8008 27 76.8008H33C33.5523 76.8008 34 77.2485 34 77.8008V83.8008C34 84.3531 33.5523 84.8008 33 84.8008H27C26.4477 84.8008 26 84.3531 26 83.8008V77.8008Z\",\n fill: \"#FF6100\"\n})), _path18 || (_path18 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14.5 57.8008C14.5 57.2485 14.9477 56.8008 15.5 56.8008H22C22.5523 56.8008 23 57.2485 23 57.8008V61.8008C23 62.3531 22.5523 62.8008 22 62.8008H15.5C14.9477 62.8008 14.5 62.3531 14.5 61.8008V57.8008Z\",\n fill: \"#0D953B\"\n})), _path19 || (_path19 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14.5 66.8008C14.5 66.2485 14.9477 65.8008 15.5 65.8008H22C22.5523 65.8008 23 66.2485 23 66.8008V72.8008C23 73.3531 22.5523 73.8008 22 73.8008H15.5C14.9477 73.8008 14.5 73.3531 14.5 72.8008V69.8008V66.8008Z\",\n fill: \"#0099FF\"\n})), _path20 || (_path20 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14.5 77.8008C14.5 77.2485 14.9477 76.8008 15.5 76.8008H22C22.5523 76.8008 23 77.2485 23 77.8008V83.8008C23 84.3531 22.5523 84.8008 22 84.8008H15.5C14.9477 84.8008 14.5 84.3531 14.5 83.8008V80.8008V77.8008Z\",\n fill: \"#0099FF\"\n})), _rect4 || (_rect4 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 11.25,\n y: 51.0508,\n width: 37.5,\n height: 37.5,\n rx: 2.75,\n stroke: \"#B1C3E9\",\n strokeWidth: 1.5\n})), _path21 || (_path21 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M63.5867 87.8002C61.5562 87.8002 61.0021 87.2532 61.0019 85.2137C60.9993 66.9246 60.9995 72.6352 61.0017 54.3461C61.0019 52.3995 61.587 51.8048 63.5449 51.8044C81.8487 51.7996 76.1526 51.7996 94.4564 51.8044C96.3869 51.8048 96.997 52.4229 96.9974 54.3611C97.0009 72.6503 97.0007 66.9396 96.9979 85.2288C96.9974 87.2453 96.4258 87.7999 94.3892 87.8002C85.2374 87.8012 88.0854 87.8006 78.9336 87.8006C69.818 87.8006 72.7023 87.8012 63.5867 87.8002ZM93.7774 85.2294C94.137 85.2294 94.4286 84.9378 94.4286 84.5781V77.5652C94.4286 77.2055 94.137 76.914 93.7774 76.914H86.7644C86.4047 76.914 86.1132 77.2055 86.1132 77.5652V84.5781C86.1132 84.9378 86.4047 85.2294 86.7644 85.2294H93.7774ZM75.4935 85.2294H82.5065C82.8661 85.2294 83.1577 84.9378 83.1577 84.5781V77.5652C83.1577 77.2055 82.8661 76.914 82.5065 76.914H75.4935C75.1338 76.914 74.8423 77.2055 74.8423 77.5652V84.5781C74.8423 84.9378 75.1338 85.2294 75.4935 85.2294ZM64.2226 85.2294H71.2356C71.5953 85.2294 71.8868 84.9378 71.8868 84.5781V77.5652C71.8868 77.2055 71.5953 76.914 71.2356 76.914H64.2226C63.863 76.914 63.5714 77.2055 63.5714 77.5652V84.5781C63.5714 84.9378 63.863 85.2294 64.2226 85.2294ZM86.7644 73.9585H93.7774C94.137 73.9585 94.4286 73.6669 94.4286 73.3073V66.2943C94.4286 65.9346 94.137 65.6431 93.7774 65.6431H86.7644C86.4047 65.6431 86.1132 65.9346 86.1132 66.2943V73.3073C86.1132 73.6669 86.4047 73.9585 86.7644 73.9585ZM75.4935 73.9585H82.5065C82.8661 73.9585 83.1577 73.6669 83.1577 73.3073V66.2943C83.1577 65.9346 82.8661 65.6431 82.5065 65.6431H75.4935C75.1338 65.6431 74.8423 65.9346 74.8423 66.2943V73.3073C74.8423 73.6669 75.1338 73.9585 75.4935 73.9585ZM64.2226 73.9585H71.2356C71.5953 73.9585 71.8868 73.6669 71.8868 73.3073V66.2943C71.8868 65.9346 71.5953 65.6431 71.2356 65.6431H64.2226C63.863 65.6431 63.5714 65.9346 63.5714 66.2943V73.3073C63.5714 73.6669 63.863 73.9585 64.2226 73.9585ZM75.4935 62.6876H82.5065C82.8661 62.6876 83.1577 62.5115 83.1577 62.2943V58.0588C83.1577 57.8416 82.8661 57.6655 82.5065 57.6655H75.4935C75.1338 57.6655 74.8423 57.8416 74.8423 58.0588V62.2943C74.8423 62.5115 75.1338 62.6876 75.4935 62.6876ZM86.7435 62.6876H93.7565C94.1161 62.6876 94.4077 62.5115 94.4077 62.2943V58.0588C94.4077 57.8416 94.1161 57.6655 93.7565 57.6655H86.7435C86.3839 57.6655 86.0923 57.8416 86.0923 58.0588V62.2943C86.0923 62.5115 86.3839 62.6876 86.7435 62.6876ZM64.2226 62.6876H71.2356C71.5953 62.6876 71.8868 62.5115 71.8868 62.2943V58.0588C71.8868 57.8416 71.5953 57.6655 71.2356 57.6655H64.2226C63.863 57.6655 63.5714 57.8416 63.5714 58.0588V62.2943C63.5714 62.5115 63.863 62.6876 64.2226 62.6876Z\",\n fill: \"white\"\n})), _rect5 || (_rect5 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 63,\n y: 54.8008,\n width: 32,\n height: 31,\n fill: \"white\"\n})), _path22 || (_path22 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M86 57.8008C86 57.2485 86.4477 56.8008 87 56.8008H93.4077C93.96 56.8008 94.4077 57.2485 94.4077 57.8008V61.8008C94.4077 62.3531 93.96 62.8008 93.4077 62.8008H87C86.4477 62.8008 86 62.3531 86 61.8008V57.8008Z\",\n fill: \"#0D953B\"\n})), _path23 || (_path23 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M86 66.8008C86 66.2485 86.4477 65.8008 87 65.8008H93C93.5523 65.8008 94 66.2485 94 66.8008V72.8008C94 73.3531 93.5523 73.8008 93 73.8008H87C86.4477 73.8008 86 73.3531 86 72.8008V66.8008Z\",\n fill: \"#FFB629\"\n})), _path24 || (_path24 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M86 77.8008C86 77.2485 86.4477 76.8008 87 76.8008H93C93.5523 76.8008 94 77.2485 94 77.8008V83.8008C94 84.3531 93.5523 84.8008 93 84.8008H87C86.4477 84.8008 86 84.3531 86 83.8008V77.8008Z\",\n fill: \"#FFB629\"\n})), _path25 || (_path25 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M74.8437 57.8008C74.8437 57.2485 75.2914 56.8008 75.8437 56.8008H82.4085C82.9608 56.8008 83.4085 57.2485 83.4085 57.8008V61.8008C83.4085 62.3531 82.9608 62.8008 82.4085 62.8008H75.8437C75.2914 62.8008 74.8437 62.3531 74.8437 61.8008V57.8008Z\",\n fill: \"#0D953B\"\n})), _path26 || (_path26 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M75 66.8008C75 66.2485 75.4477 65.8008 76 65.8008H82C82.5523 65.8008 83 66.2485 83 66.8008V72.8008C83 73.3531 82.5523 73.8008 82 73.8008H76C75.4477 73.8008 75 73.3531 75 72.8008V66.8008Z\",\n fill: \"#FF6100\"\n})), _path27 || (_path27 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M75 77.8008C75 77.2485 75.4477 76.8008 76 76.8008H82C82.5523 76.8008 83 77.2485 83 77.8008V83.8008C83 84.3531 82.5523 84.8008 82 84.8008H76C75.4477 84.8008 75 84.3531 75 83.8008V77.8008Z\",\n fill: \"#FF6100\"\n})), _path28 || (_path28 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M63.5 57.8008C63.5 57.2485 63.9477 56.8008 64.5 56.8008H71C71.5523 56.8008 72 57.2485 72 57.8008V61.8008C72 62.3531 71.5523 62.8008 71 62.8008H64.5C63.9477 62.8008 63.5 62.3531 63.5 61.8008V57.8008Z\",\n fill: \"#0D953B\"\n})), _path29 || (_path29 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M63.5 66.8008C63.5 66.2485 63.9477 65.8008 64.5 65.8008H71C71.5523 65.8008 72 66.2485 72 66.8008V72.8008C72 73.3531 71.5523 73.8008 71 73.8008H64.5C63.9477 73.8008 63.5 73.3531 63.5 72.8008V69.8008V66.8008Z\",\n fill: \"#0099FF\"\n})), _path30 || (_path30 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M63.5 77.8008C63.5 77.2485 63.9477 76.8008 64.5 76.8008H71C71.5523 76.8008 72 77.2485 72 77.8008V83.8008C72 84.3531 71.5523 84.8008 71 84.8008H64.5C63.9477 84.8008 63.5 84.3531 63.5 83.8008V80.8008V77.8008Z\",\n fill: \"#0099FF\"\n})), _rect6 || (_rect6 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 60.25,\n y: 51.0508,\n width: 37.5,\n height: 37.5,\n rx: 2.75,\n stroke: \"#B1C3E9\",\n strokeWidth: 1.5\n})), _path31 || (_path31 = /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.5,\n d: \"M51.4659 94.6536C58.6527 93.4784 63.526 86.6996 62.3508 79.5129C61.1756 72.3261 54.3969 67.4527 47.2101 68.6279C40.0233 69.8032 35.15 76.5819 36.3252 83.7687C37.5004 90.9555 44.2791 95.8288 51.4659 94.6536Z\",\n fill: \"url(#paint0_linear_624:11312)\"\n})), _path32 || (_path32 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M54.6883 95.0506L57.2301 93.7347L62.5955 104.082L60.0567 105.4L54.6883 95.0506Z\",\n fill: \"#0A1551\"\n})), _path33 || (_path33 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M42.648 68.7479C40.0996 70.0709 38.0005 72.12 36.6164 74.6357C35.2324 77.1515 34.6255 80.0211 34.8722 82.8818C35.1189 85.7425 36.2082 88.4659 38.0025 90.7076C39.7969 92.9493 42.2156 94.6087 44.9529 95.4759C47.6901 96.3432 50.6229 96.3793 53.3808 95.5798C56.1386 94.7803 58.5976 93.1811 60.4466 90.9843C62.2956 88.7875 63.4517 86.0917 63.7688 83.2379C64.086 80.3841 63.5499 77.5004 62.2282 74.9513C60.4542 71.533 57.395 68.9593 53.7237 67.7959C50.0524 66.6326 46.0695 66.9748 42.6505 68.7475L42.648 68.7479ZM54.835 92.2189C52.7403 93.3075 50.3701 93.7505 48.0236 93.4916C45.6772 93.2328 43.4601 92.2839 41.653 90.7649C39.846 89.2459 38.5301 87.2251 37.8717 84.9581C37.2132 82.6911 37.2419 80.2798 37.9541 78.0291C38.6664 75.7784 40.0301 73.7896 41.8728 72.3141C43.7156 70.8386 45.9544 69.9427 48.3064 69.7399C50.6583 69.537 53.0176 70.0362 55.0858 71.1744C57.1539 72.3126 58.8381 74.0386 59.9252 76.134C61.3804 78.9418 61.6614 82.2124 60.7068 85.2274C59.7523 88.2423 57.6401 90.7551 54.8342 92.2138L54.835 92.2189Z\",\n fill: \"#0A1551\"\n})), _path34 || (_path34 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M65.435 112.755C65.1874 112.884 64.9168 112.963 64.6387 112.987C64.3605 113.011 64.0804 112.98 63.8142 112.896C63.548 112.812 63.301 112.676 63.0875 112.496C62.8739 112.316 62.6982 112.096 62.57 111.848L55.2159 97.6875L58.9853 95.7275L66.3419 109.887C66.4713 110.135 66.5506 110.406 66.5751 110.684C66.5995 110.963 66.5689 111.243 66.4846 111.51C66.4003 111.776 66.2641 112.023 66.084 112.237C65.9039 112.451 65.6833 112.627 65.435 112.755Z\",\n fill: \"#0A1551\"\n})), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint0_linear_624:11312\",\n x1: 47.2101,\n y1: 68.6279,\n x2: 51.4659,\n y2: 94.6536,\n gradientUnits: \"userSpaceOnUse\"\n}, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#92B0EC\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#92B0EC\",\n stopOpacity: 0.51\n})))));\nexport default SvgNoTablesFoundIcon;","var _circle, _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _path9, _path10, _path11, _path12, _path13, _path14, _path15, _path16, _path17, _path18, _path19, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgNoReportsFoundIcon = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 105 119\"\n}, props), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 52.5,\n cy: 56.4492,\n r: 52.5,\n fill: \"#F3F3FE\"\n})), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M35.1426 6.13654C35.1426 2.95453 37.7221 0.375 40.9041 0.375H68.2714C71.4534 0.375 74.0329 2.95453 74.0329 6.13654V40.7057C74.0329 43.8878 71.4534 46.4673 68.2714 46.4673H40.9041C37.7221 46.4673 35.1426 43.8878 35.1426 40.7057V6.13654Z\",\n fill: \"white\"\n})), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M68.2714 1.81538H40.9041C38.5176 1.81538 36.583 3.75003 36.583 6.13654V40.7057C36.583 43.0923 38.5176 45.0269 40.9041 45.0269H68.2714C70.6579 45.0269 72.5926 43.0923 72.5926 40.7057V6.13654C72.5926 3.75003 70.6579 1.81538 68.2714 1.81538ZM40.9041 0.375C37.7221 0.375 35.1426 2.95453 35.1426 6.13654V40.7057C35.1426 43.8878 37.7221 46.4673 40.9041 46.4673H68.2714C71.4534 46.4673 74.0329 43.8878 74.0329 40.7057V6.13654C74.0329 2.95453 71.4534 0.375 68.2714 0.375H40.9041Z\",\n fill: \"#B1C3E9\"\n})), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M41.6875 12.4062C41.6875 11.5433 42.3871 10.8438 43.25 10.8438H46.375C47.2379 10.8438 47.9375 11.5433 47.9375 12.4062V35.8438H41.6875V12.4062Z\",\n fill: \"#0099FF\"\n})), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M51.2812 19.4375C51.2812 18.5746 51.9808 17.875 52.8438 17.875H55.9688C56.8317 17.875 57.5312 18.5746 57.5312 19.4375V35.8438H51.2812V19.4375Z\",\n fill: \"#FF6100\"\n})), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M60.875 13.1875C60.875 12.3246 61.5746 11.625 62.4375 11.625H65.5625C66.4254 11.625 67.125 12.3246 67.125 13.1875V35.8438H60.875V13.1875Z\",\n fill: \"#FFB629\"\n})), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10 56.1365C10 52.9545 12.5795 50.375 15.7615 50.375H43.1288C46.3108 50.375 48.8904 52.9545 48.8904 56.1365V90.7057C48.8904 93.8878 46.3108 96.4673 43.1288 96.4673H15.7615C12.5795 96.4673 10 93.8878 10 90.7057V56.1365Z\",\n fill: \"white\"\n})), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M43.1288 51.8154H15.7615C13.375 51.8154 11.4404 53.75 11.4404 56.1365V90.7057C11.4404 93.0923 13.375 95.0269 15.7615 95.0269H43.1288C45.5153 95.0269 47.45 93.0923 47.45 90.7057V56.1365C47.45 53.75 45.5153 51.8154 43.1288 51.8154ZM15.7615 50.375C12.5795 50.375 10 52.9545 10 56.1365V90.7057C10 93.8878 12.5795 96.4673 15.7615 96.4673H43.1288C46.3108 96.4673 48.8904 93.8878 48.8904 90.7057V56.1365C48.8904 52.9545 46.3108 50.375 43.1288 50.375H15.7615Z\",\n fill: \"#B1C3E9\"\n})), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16.5449 62.4062C16.5449 61.5433 17.2445 60.8438 18.1074 60.8438H21.2324C22.0954 60.8438 22.7949 61.5433 22.7949 62.4062V85.8438H16.5449V62.4062Z\",\n fill: \"#0099FF\"\n})), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M26.1387 69.4375C26.1387 68.5746 26.8382 67.875 27.7012 67.875H30.8262C31.6891 67.875 32.3887 68.5746 32.3887 69.4375V85.8438H26.1387V69.4375Z\",\n fill: \"#FF6100\"\n})), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M35.7324 63.1875C35.7324 62.3246 36.432 61.625 37.2949 61.625H40.4199C41.2829 61.625 41.9824 62.3246 41.9824 63.1875V85.8438H35.7324V63.1875Z\",\n fill: \"#FFB629\"\n})), _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M59 56.1365C59 52.9545 61.5795 50.375 64.7615 50.375H92.1288C95.3108 50.375 97.8904 52.9545 97.8904 56.1365V90.7057C97.8904 93.8878 95.3108 96.4673 92.1288 96.4673H64.7615C61.5795 96.4673 59 93.8878 59 90.7057V56.1365Z\",\n fill: \"white\"\n})), _path12 || (_path12 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M92.1288 51.8154H64.7615C62.375 51.8154 60.4404 53.75 60.4404 56.1365V90.7057C60.4404 93.0923 62.375 95.0269 64.7615 95.0269H92.1288C94.5153 95.0269 96.45 93.0923 96.45 90.7057V56.1365C96.45 53.75 94.5153 51.8154 92.1288 51.8154ZM64.7615 50.375C61.5795 50.375 59 52.9545 59 56.1365V90.7057C59 93.8878 61.5795 96.4673 64.7615 96.4673H92.1288C95.3108 96.4673 97.8904 93.8878 97.8904 90.7057V56.1365C97.8904 52.9545 95.3108 50.375 92.1288 50.375H64.7615Z\",\n fill: \"#B1C3E9\"\n})), _path13 || (_path13 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M65.5449 62.4062C65.5449 61.5433 66.2445 60.8438 67.1074 60.8438H70.2324C71.0954 60.8438 71.7949 61.5433 71.7949 62.4062V85.8438H65.5449V62.4062Z\",\n fill: \"#0099FF\"\n})), _path14 || (_path14 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M75.1387 69.4375C75.1387 68.5746 75.8382 67.875 76.7012 67.875H79.8262C80.6891 67.875 81.3887 68.5746 81.3887 69.4375V85.8438H75.1387V69.4375Z\",\n fill: \"#FF6100\"\n})), _path15 || (_path15 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M84.7324 63.1875C84.7324 62.3246 85.432 61.625 86.2949 61.625H89.4199C90.2829 61.625 90.9824 62.3246 90.9824 63.1875V85.8438H84.7324V63.1875Z\",\n fill: \"#FFB629\"\n})), _path16 || (_path16 = /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.5,\n d: \"M51.4659 98.2278C58.6527 97.0526 63.526 90.2739 62.3508 83.0871C61.1756 75.9003 54.3969 71.027 47.2101 72.2022C40.0233 73.3774 35.15 80.1561 36.3252 87.3429C37.5004 94.5297 44.2791 99.403 51.4659 98.2278Z\",\n fill: \"url(#paint0_linear_624:15640)\"\n})), _path17 || (_path17 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M54.6883 98.6248L57.2301 97.309L62.5955 107.656L60.0567 108.974L54.6883 98.6248Z\",\n fill: \"#0A1551\"\n})), _path18 || (_path18 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M42.648 72.3221C40.0996 73.6452 38.0005 75.6942 36.6164 78.21C35.2324 80.7257 34.6255 83.5953 34.8722 86.456C35.1189 89.3168 36.2082 92.0401 38.0025 94.2818C39.7969 96.5235 42.2156 98.183 44.9529 99.0502C47.6901 99.9174 50.6229 99.9535 53.3808 99.154C56.1386 98.3545 58.5976 96.7553 60.4466 94.5585C62.2956 92.3617 63.4517 89.6659 63.7688 86.8121C64.086 83.9583 63.5499 81.0746 62.2282 78.5255C60.4542 75.1072 57.395 72.5335 53.7237 71.3701C50.0524 70.2068 46.0695 70.549 42.6505 72.3217L42.648 72.3221ZM54.835 95.7931C52.7403 96.8817 50.3701 97.3247 48.0236 97.0659C45.6772 96.807 43.4601 95.8581 41.653 94.3391C39.846 92.8201 38.5301 90.7993 37.8717 88.5323C37.2132 86.2653 37.2419 83.854 37.9541 81.6033C38.6664 79.3527 40.0301 77.3638 41.8728 75.8883C43.7156 74.4128 45.9544 73.517 48.3064 73.3141C50.6583 73.1112 53.0176 73.6105 55.0858 74.7486C57.1539 75.8868 58.8381 77.6128 59.9252 79.7083C61.3804 82.516 61.6614 85.7866 60.7068 88.8016C59.7523 91.8165 57.6401 94.3293 54.8342 95.788L54.835 95.7931Z\",\n fill: \"#0A1551\"\n})), _path19 || (_path19 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M65.435 116.329C65.1874 116.458 64.9168 116.537 64.6387 116.561C64.3605 116.586 64.0804 116.555 63.8142 116.47C63.548 116.386 63.301 116.25 63.0875 116.07C62.8739 115.89 62.6982 115.67 62.57 115.422L55.2159 101.262L58.9853 99.3018L66.3419 113.462C66.4713 113.709 66.5506 113.98 66.5751 114.258C66.5995 114.537 66.5689 114.817 66.4846 115.084C66.4003 115.35 66.2641 115.598 66.084 115.811C65.9039 116.025 65.6833 116.201 65.435 116.329Z\",\n fill: \"#0A1551\"\n})), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint0_linear_624:15640\",\n x1: 47.2101,\n y1: 72.2022,\n x2: 51.4659,\n y2: 98.2278,\n gradientUnits: \"userSpaceOnUse\"\n}, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#92B0EC\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#92B0EC\",\n stopOpacity: 0.51\n})))));\nexport default SvgNoReportsFoundIcon;","var _g, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgNoApprovalsFoundIcon = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 108 120\"\n}, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0_2531_6757)\"\n}, /*#__PURE__*/React.createElement(\"circle\", {\n cx: 54.5,\n cy: 58.0742,\n r: 52.5,\n fill: \"#F3F3FE\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M61.1098 58.0474C61.1098 54.8654 63.6893 52.2859 66.8713 52.2859H94.2386C97.4206 52.2859 100 54.8654 100 58.0474V92.6166C100 95.7986 97.4206 98.3782 94.2386 98.3782H66.8713C63.6893 98.3782 61.1098 95.7986 61.1098 92.6166V58.0474Z\",\n fill: \"white\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M94.2386 53.7263H66.8713C64.4848 53.7263 62.5502 55.6609 62.5502 58.0474V92.6166C62.5502 95.0031 64.4848 96.9378 66.8713 96.9378H94.2386C96.6251 96.9378 98.5598 95.0031 98.5598 92.6166V58.0474C98.5598 55.6609 96.6251 53.7263 94.2386 53.7263ZM66.8713 52.2859C63.6893 52.2859 61.1098 54.8654 61.1098 58.0474V92.6166C61.1098 95.7986 63.6893 98.3782 66.8713 98.3782H94.2386C97.4206 98.3782 100 95.7986 100 92.6166V58.0474C100 54.8654 97.4206 52.2859 94.2386 52.2859H66.8713Z\",\n fill: \"#B1C3E9\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M80.505 65.802V69.573M80.505 69.573H72.7126C72.0498 69.573 71.5126 70.1102 71.5126 70.773V71.7485M80.505 69.573H88.0073C88.67 69.573 89.2073 70.1102 89.2073 70.773V71.7485\",\n stroke: \"#97ACDA\",\n strokeWidth: 1.5\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M80.505 83.8884L80.505 79.581M80.505 79.581L72.7126 79.581C72.0498 79.581 71.5126 79.0437 71.5126 78.381L71.5126 77.4054M80.505 79.581L88.0073 79.581C88.67 79.581 89.2073 79.0437 89.2073 78.381L89.2073 77.4054\",\n stroke: \"#97ACDA\",\n strokeWidth: 1.5\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M66.0005 74.5047C66.0005 72.9026 67.2992 71.6039 68.9012 71.6039H74.7028C76.3048 71.6039 77.6035 72.9026 77.6035 74.5047C77.6035 76.1067 76.3048 77.4054 74.7028 77.4054H68.9012C67.2992 77.4054 66.0005 76.1067 66.0005 74.5047Z\",\n fill: \"#FFB629\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M83.3989 74.5047C83.3989 72.9026 84.6976 71.6039 86.2997 71.6039H92.1012C93.7033 71.6039 95.002 72.9026 95.002 74.5047C95.002 76.1067 93.7033 77.4054 92.1012 77.4054H86.2997C84.6976 77.4054 83.3989 76.1067 83.3989 74.5047Z\",\n fill: \"#FFB629\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M74.6997 86.7891C74.6997 85.1871 75.9984 83.8883 77.6005 83.8883H83.4021C85.0041 83.8883 86.3028 85.1871 86.3028 86.7891C86.3028 88.3911 85.0041 89.6898 83.4021 89.6898H77.6005C75.9984 89.6898 74.6997 88.3911 74.6997 86.7891Z\",\n fill: \"#0099FF\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n x: 74.6997,\n y: 60,\n width: 11.6031,\n height: 5.80154,\n rx: 2.90077,\n fill: \"#FF6100\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M37.0004 7.76154C37.0004 4.57953 39.5799 2 42.7619 2H70.1292C73.3112 2 75.8907 4.57953 75.8907 7.76154V42.3307C75.8907 45.5128 73.3112 48.0923 70.1292 48.0923H42.7619C39.5799 48.0923 37.0004 45.5128 37.0004 42.3307V7.76154Z\",\n fill: \"white\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M70.2698 3.44038H42.9025C40.516 3.44038 38.5814 5.37503 38.5814 7.76154V42.3307C38.5814 44.7173 40.516 46.6519 42.9025 46.6519H70.2698C72.6563 46.6519 74.591 44.7173 74.591 42.3307V7.76154C74.591 5.37503 72.6563 3.44038 70.2698 3.44038ZM42.9025 2C39.7205 2 37.141 4.57953 37.141 7.76154V42.3307C37.141 45.5128 39.7205 48.0923 42.9025 48.0923H70.2698C73.4518 48.0923 76.0314 45.5128 76.0314 42.3307V7.76154C76.0314 4.57953 73.4518 2 70.2698 2H42.9025Z\",\n fill: \"#B1C3E9\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M56.5047 15.802V19.573M56.5047 19.573H48.7123C48.0496 19.573 47.5123 20.1102 47.5123 20.773V21.7485M56.5047 19.573H64.007C64.6698 19.573 65.207 20.1102 65.207 20.773V21.7485\",\n stroke: \"#97ACDA\",\n strokeWidth: 1.5\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M56.5047 33.8883L56.5047 29.581M56.5047 29.581L48.7123 29.581C48.0496 29.581 47.5123 29.0437 47.5123 28.381L47.5123 27.4054M56.5047 29.581L64.007 29.581C64.6698 29.581 65.207 29.0437 65.207 28.381L65.207 27.4054\",\n stroke: \"#97ACDA\",\n strokeWidth: 1.5\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M42.0002 24.5047C42.0002 22.9026 43.2989 21.6039 44.9009 21.6039H50.7025C52.3046 21.6039 53.6033 22.9026 53.6033 24.5047C53.6033 26.1067 52.3046 27.4054 50.7025 27.4054H44.9009C43.2989 27.4054 42.0002 26.1067 42.0002 24.5047Z\",\n fill: \"#FFB629\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M59.3986 24.5047C59.3986 22.9026 60.6973 21.6039 62.2994 21.6039H68.101C69.703 21.6039 71.0017 22.9026 71.0017 24.5047C71.0017 26.1067 69.703 27.4054 68.101 27.4054H62.2994C60.6973 27.4054 59.3986 26.1067 59.3986 24.5047Z\",\n fill: \"#FFB629\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M50.6994 36.7891C50.6994 35.187 51.9981 33.8883 53.6002 33.8883H59.4018C61.0038 33.8883 62.3025 35.187 62.3025 36.7891C62.3025 38.3911 61.0038 39.6898 59.4018 39.6898H53.6002C51.9981 39.6898 50.6994 38.3911 50.6994 36.7891Z\",\n fill: \"#0099FF\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n x: 50.6994,\n y: 9.99999,\n width: 11.6031,\n height: 5.80154,\n rx: 2.90077,\n fill: \"#FF6100\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 58.0474C12 54.8654 14.5795 52.2859 17.7615 52.2859H45.1288C48.3108 52.2859 50.8904 54.8654 50.8904 58.0474V92.6166C50.8904 95.7986 48.3108 98.3782 45.1288 98.3782H17.7615C14.5795 98.3782 12 95.7986 12 92.6166V58.0474Z\",\n fill: \"white\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M45.1288 53.7263H17.7615C15.375 53.7263 13.4404 55.6609 13.4404 58.0474V92.6166C13.4404 95.0031 15.375 96.9378 17.7615 96.9378H45.1288C47.5153 96.9378 49.45 95.0031 49.45 92.6166V58.0474C49.45 55.6609 47.5153 53.7263 45.1288 53.7263ZM17.7615 52.2859C14.5795 52.2859 12 54.8654 12 58.0474V92.6166C12 95.7986 14.5795 98.3782 17.7615 98.3782H45.1288C48.3108 98.3782 50.8904 95.7986 50.8904 92.6166V58.0474C50.8904 54.8654 48.3108 52.2859 45.1288 52.2859H17.7615Z\",\n fill: \"#B1C3E9\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M31.505 65.802V69.573M31.505 69.573H23.7126C23.0498 69.573 22.5126 70.1102 22.5126 70.773V71.7485M31.505 69.573H39.0073C39.67 69.573 40.2073 70.1102 40.2073 70.773V71.7485\",\n stroke: \"#97ACDA\",\n strokeWidth: 1.5\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M31.505 83.8884L31.505 79.581M31.505 79.581L23.7126 79.581C23.0498 79.581 22.5126 79.0437 22.5126 78.381L22.5126 77.4054M31.505 79.581L39.0073 79.581C39.67 79.581 40.2073 79.0437 40.2073 78.381L40.2073 77.4054\",\n stroke: \"#97ACDA\",\n strokeWidth: 1.5\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.0005 74.5047C17.0005 72.9026 18.2992 71.6039 19.9012 71.6039H25.7028C27.3048 71.6039 28.6035 72.9026 28.6035 74.5047C28.6035 76.1067 27.3048 77.4054 25.7028 77.4054H19.9012C18.2992 77.4054 17.0005 76.1067 17.0005 74.5047Z\",\n fill: \"#FFB629\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M34.3989 74.5047C34.3989 72.9026 35.6976 71.6039 37.2997 71.6039H43.1012C44.7033 71.6039 46.002 72.9026 46.002 74.5047C46.002 76.1067 44.7033 77.4054 43.1012 77.4054H37.2997C35.6976 77.4054 34.3989 76.1067 34.3989 74.5047Z\",\n fill: \"#FFB629\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25.6997 86.7891C25.6997 85.1871 26.9984 83.8883 28.6005 83.8883H34.4021C36.0041 83.8883 37.3028 85.1871 37.3028 86.7891C37.3028 88.3911 36.0041 89.6898 34.4021 89.6898H28.6005C26.9984 89.6898 25.6997 88.3911 25.6997 86.7891Z\",\n fill: \"#0099FF\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n x: 25.6997,\n y: 60,\n width: 11.6031,\n height: 5.80154,\n rx: 2.90077,\n fill: \"#FF6100\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.5,\n d: \"M53.463 99.8529C60.6498 98.6777 65.5231 91.899 64.3479 84.7122C63.1727 77.5254 56.3939 72.6521 49.2072 73.8273C42.0204 75.0025 37.147 81.7812 38.3222 88.968C39.4975 96.1548 46.2762 101.028 53.463 99.8529Z\",\n fill: \"url(#paint0_linear_2531_6757)\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M56.6854 100.25L59.2272 98.9346L64.5926 109.282L62.0538 110.6L56.6854 100.25Z\",\n fill: \"#0A1551\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M44.646 73.9471C42.0976 75.2702 39.9985 77.3192 38.6145 79.835C37.2304 82.3507 36.6236 85.2203 36.8703 88.081C37.117 90.9418 38.2063 93.6651 40.0006 95.9068C41.7949 98.1485 44.2136 99.808 46.9509 100.675C49.6882 101.542 52.621 101.579 55.3788 100.779C58.1366 99.9795 60.5956 98.3803 62.4446 96.1835C64.2936 93.9867 65.4498 91.2909 65.7669 88.4371C66.084 85.5833 65.5479 82.6996 64.2263 80.1505C62.4522 76.7322 59.3931 74.1585 55.7218 72.9951C52.0505 71.8318 48.0676 72.174 44.6486 73.9467L44.646 73.9471ZM56.8331 97.4181C54.7384 98.5067 52.3681 98.9497 50.0217 98.6909C47.6752 98.432 45.4581 97.4831 43.6511 95.9641C41.844 94.4451 40.5281 92.4243 39.8697 90.1573C39.2113 87.8903 39.24 85.479 39.9522 83.2283C40.6644 80.9777 42.0282 78.9888 43.8709 77.5133C45.7136 76.0378 47.9525 75.142 50.3044 74.9391C52.6563 74.7362 55.0156 75.2355 57.0838 76.3736C59.152 77.5118 60.8362 79.2378 61.9233 81.3333C63.3784 84.141 63.6594 87.4116 62.7049 90.4266C61.7503 93.4415 59.6382 95.9543 56.8322 97.413L56.8331 97.4181Z\",\n fill: \"#0A1551\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M67.432 117.953C67.1844 118.082 66.9139 118.161 66.6357 118.185C66.3576 118.21 66.0775 118.179 65.8113 118.094C65.5451 118.01 65.298 117.874 65.0845 117.694C64.871 117.514 64.6952 117.294 64.5671 117.046L57.213 102.886L60.9824 100.926L68.339 115.086C68.4684 115.333 68.5477 115.604 68.5721 115.882C68.5966 116.161 68.566 116.441 68.4817 116.708C68.3974 116.974 68.2612 117.222 68.0811 117.435C67.901 117.649 67.6804 117.825 67.432 117.953Z\",\n fill: \"#0A1551\"\n}))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint0_linear_2531_6757\",\n x1: 49.2072,\n y1: 73.8273,\n x2: 53.463,\n y2: 99.8529,\n gradientUnits: \"userSpaceOnUse\"\n}, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#92B0EC\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#92B0EC\",\n stopOpacity: 0.51\n})), /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0_2531_6757\"\n}, /*#__PURE__*/React.createElement(\"rect\", {\n width: 108,\n height: 120,\n fill: \"white\"\n})))));\nexport default SvgNoApprovalsFoundIcon;","var _circle, _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _path9, _path10, _path11, _path12, _path13, _path14, _path15, _path16, _path17, _path18, _path19, _path20, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgNoSignDocumentsFoundIcon = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 104 120\"\n}, props), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 52,\n cy: 63,\n r: 52,\n fill: \"#F3F3FE\"\n})), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32.5 46.334V11.666a6.5 6.5 0 0 1 6.5-6.5h21.218c.287 0 .563.114.766.317l5.1 5.1 5.099 5.099c.203.203.317.479.317.766v29.884a6.5 6.5 0 0 1-6.5 6.5H39a6.5 6.5 0 0 1-6.5-6.5Z\",\n fill: \"#fff\"\n})), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M40.083 24.97a2.47 2.47 0 0 1 2.47-2.47h18.894a2.47 2.47 0 0 1 0 4.94H42.553a2.47 2.47 0 0 1-2.47-2.47Z\",\n fill: \"#09F\"\n})), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M40.083 33.463a2.47 2.47 0 0 1 2.47-2.47h18.894a2.47 2.47 0 1 1 0 4.94H42.553a2.47 2.47 0 0 1-2.47-2.47Z\",\n fill: \"#FF6100\"\n})), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M46.165 42.22c0-.16-.062-.127-.153-.125-.12.002-2.394 1.416-2.394 1.416s-.994.428-1.262.645c-1.554 1.5-2.075.216-2.167 0-.308-.731.103-1.393.613-1.937.265-.213 1.553-1.313 2.939-1.974.712-.34 1.325-.707 2.152-.726.325-.033 1.273-.128 1.88.303.449.32.491 1.492.582 1.705.169.394.297.484.297 1.243 0 .371-.696 1.592-.878 2.458.089-.05.74-.264 1.132-.392.567-.185.895-.155 1.467-.426l.446-.211c2.266-1.075 5.62-2.21 6.602-2.497.288-.084 1.54-.23 2.268.287.674.478 1.019 1.854 1.019 1.854s.064.313.919 0v1.98c-.472-.142-.832-.161-1.112-.367-.61-.641-.971-1.6-1.258-1.517-1.932.567-2.818 1.3-7.153 2.795-.864.298-1.49.778-2.165.888-.946.156-1.66.313-2.413.238-.534-.053-.749-.189-1.084-.517-.452-.44-.368-.915-.549-1.52-.192-.641-.418-1.007-.395-1.667.019-.553.395-1.386.395-1.386s.272-.392.272-.55Z\",\n fill: \"#FFB629\"\n})), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M32.5 11.667a6.5 6.5 0 0 1 6.5-6.5h22.75c.287 0 .563.114.766.317l8.667 8.667c.203.203.317.479.317.766v31.416a6.5 6.5 0 0 1-6.5 6.5H39a6.5 6.5 0 0 1-6.5-6.5V11.668ZM39 7.333a4.333 4.333 0 0 0-4.333 4.334v34.666A4.333 4.333 0 0 0 39 50.668h26a4.333 4.333 0 0 0 4.333-4.334V16h-5.416a3.25 3.25 0 0 1-3.25-3.25V7.333H39Z\",\n fill: \"#C8CEED\"\n})), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M75.504 30.215a1.809 1.809 0 0 0-2.559 0l-4.631 4.631-5.911 5.911-.972 3.887a.905.905 0 0 0 1.097 1.097l3.887-.972 5.91-5.91 4.632-4.633a1.81 1.81 0 0 0 0-2.558l-1.453-1.453Z\",\n fill: \"#0A1551\"\n})), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6.5 98.334V63.666a6.5 6.5 0 0 1 6.5-6.5h21.218c.287 0 .563.114.766.317l5.1 5.1 5.099 5.099c.203.203.317.479.317.766v29.885a6.5 6.5 0 0 1-6.5 6.499H13a6.5 6.5 0 0 1-6.5-6.5Z\",\n fill: \"#fff\"\n})), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14.083 76.97a2.47 2.47 0 0 1 2.47-2.47h18.894a2.47 2.47 0 0 1 0 4.94H16.553a2.47 2.47 0 0 1-2.47-2.47Z\",\n fill: \"#09F\"\n})), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14.083 85.463a2.47 2.47 0 0 1 2.47-2.47h18.894a2.47 2.47 0 1 1 0 4.94H16.553a2.47 2.47 0 0 1-2.47-2.47Z\",\n fill: \"#FF6100\"\n})), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20.165 94.22c0-.16-.062-.127-.153-.125-.12.002-2.394 1.416-2.394 1.416s-.994.428-1.262.645c-1.554 1.5-2.075.216-2.167 0-.308-.731.103-1.393.613-1.937.265-.213 1.553-1.313 2.939-1.974.712-.34 1.325-.707 2.152-.726.325-.033 1.273-.128 1.88.303.449.32.491 1.492.582 1.705.168.394.297.484.297 1.243 0 .371-.696 1.592-.878 2.458.089-.05.74-.264 1.132-.392.567-.185.895-.155 1.467-.426l.446-.211c2.266-1.075 5.62-2.21 6.602-2.497.288-.084 1.54-.23 2.268.287.674.478 1.019 1.854 1.019 1.854s.064.313.919 0v1.98c-.472-.142-.832-.161-1.112-.367-.61-.641-.971-1.6-1.258-1.517-1.932.567-2.818 1.3-7.153 2.795-.864.298-1.49.778-2.165.888-.946.156-1.66.313-2.413.238-.534-.053-.749-.189-1.084-.517-.451-.44-.368-.915-.549-1.52-.192-.641-.418-1.007-.395-1.667.018-.553.395-1.386.395-1.386s.272-.392.272-.55Z\",\n fill: \"#FFB629\"\n})), _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M6.5 63.667a6.5 6.5 0 0 1 6.5-6.5h22.75c.287 0 .563.114.766.317l8.667 8.667c.203.203.317.478.317.766v31.416a6.5 6.5 0 0 1-6.5 6.5H13a6.5 6.5 0 0 1-6.5-6.5V63.668Zm6.5-4.334a4.333 4.333 0 0 0-4.333 4.334v34.666A4.333 4.333 0 0 0 13 102.668h26a4.333 4.333 0 0 0 4.333-4.334V68h-5.416a3.25 3.25 0 0 1-3.25-3.25v-5.416H13Z\",\n fill: \"#C8CEED\"\n})), _path12 || (_path12 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M49.504 82.215a1.809 1.809 0 0 0-2.559 0l-4.632 4.631-5.91 5.911-.972 3.887a.905.905 0 0 0 1.097 1.097l3.886-.972 5.911-5.91 4.632-4.632a1.81 1.81 0 0 0 0-2.559l-1.453-1.454Z\",\n fill: \"#0A1551\"\n})), _path13 || (_path13 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M58.5 98.334V63.666a6.5 6.5 0 0 1 6.5-6.5h21.218c.287 0 .563.114.766.317l5.1 5.1 5.099 5.099c.203.203.317.479.317.766v29.885a6.5 6.5 0 0 1-6.5 6.499H65a6.5 6.5 0 0 1-6.5-6.5Z\",\n fill: \"#fff\"\n})), _path14 || (_path14 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M66.083 76.97a2.47 2.47 0 0 1 2.47-2.47h18.894a2.47 2.47 0 0 1 0 4.94H68.553a2.47 2.47 0 0 1-2.47-2.47Z\",\n fill: \"#09F\"\n})), _path15 || (_path15 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M66.083 85.463a2.47 2.47 0 0 1 2.47-2.47h18.894a2.47 2.47 0 1 1 0 4.94H68.553a2.47 2.47 0 0 1-2.47-2.47Z\",\n fill: \"#FF6100\"\n})), _path16 || (_path16 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M72.165 94.22c0-.16-.062-.127-.153-.125-.12.002-2.394 1.416-2.394 1.416s-.994.428-1.262.645c-1.554 1.5-2.075.216-2.167 0-.308-.731.103-1.393.613-1.937.265-.213 1.553-1.313 2.939-1.974.712-.34 1.325-.707 2.152-.726.325-.033 1.273-.128 1.88.303.449.32.491 1.492.582 1.705.168.394.297.484.297 1.243 0 .371-.696 1.592-.878 2.458.089-.05.74-.264 1.132-.392.567-.185.895-.155 1.467-.426l.446-.211c2.266-1.075 5.62-2.21 6.602-2.497.288-.084 1.54-.23 2.268.287.674.478 1.019 1.854 1.019 1.854s.064.313.919 0v1.98c-.472-.142-.832-.161-1.112-.367-.61-.641-.972-1.6-1.258-1.517-1.932.567-2.818 1.3-7.153 2.795-.864.298-1.49.778-2.165.888-.946.156-1.66.313-2.413.238-.534-.053-.749-.189-1.084-.517-.451-.44-.368-.915-.549-1.52-.192-.641-.418-1.007-.395-1.667.018-.553.395-1.386.395-1.386s.272-.392.272-.55Z\",\n fill: \"#FFB629\"\n})), _path17 || (_path17 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M58.5 63.667a6.5 6.5 0 0 1 6.5-6.5h22.75c.287 0 .563.114.766.317l8.667 8.667c.203.203.317.478.317.766v31.416a6.5 6.5 0 0 1-6.5 6.5H65a6.5 6.5 0 0 1-6.5-6.5V63.668Zm6.5-4.334a4.333 4.333 0 0 0-4.333 4.334v34.666A4.333 4.333 0 0 0 65 102.668h26a4.333 4.333 0 0 0 4.333-4.334V68h-5.416a3.25 3.25 0 0 1-3.25-3.25v-5.416H65Z\",\n fill: \"#C8CEED\"\n})), _path18 || (_path18 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M101.504 82.215a1.81 1.81 0 0 0-2.559 0l-4.631 4.631-5.911 5.911-.972 3.887a.905.905 0 0 0 1.097 1.097l3.886-.972 5.911-5.91 4.632-4.632a1.808 1.808 0 0 0 0-2.559l-1.453-1.454Z\",\n fill: \"#0A1551\"\n})), _path19 || (_path19 = /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.5,\n d: \"M44.518 99.71c7.283 0 13.186-5.904 13.186-13.186 0-7.283-5.903-13.186-13.186-13.186-7.282 0-13.185 5.903-13.185 13.186 0 7.282 5.903 13.185 13.185 13.185Z\",\n fill: \"url(#a)\"\n})), _path20 || (_path20 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M37.83 73.63a14.52 14.52 0 0 0 12.074 26.372l1.153 2.224-.66.343 7.354 14.16a2.114 2.114 0 0 0 2.068 1.14c.278-.024.549-.103.796-.232a2.115 2.115 0 0 0 1.05-1.246 2.12 2.12 0 0 0-.143-1.622l-7.356-14.16-.57.296-1.152-2.222a14.518 14.518 0 0 0-3.539-26.004 14.524 14.524 0 0 0-11.073.951h-.002Zm12.187 23.472a11.933 11.933 0 0 1-12.963-19.905 11.933 11.933 0 0 1 18.053 3.82 11.934 11.934 0 0 1-5.091 16.08v.005Z\",\n fill: \"#0A1551\"\n})), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"a\",\n x1: 44.518,\n y1: 73.338,\n x2: 44.518,\n y2: 99.709,\n gradientUnits: \"userSpaceOnUse\"\n}, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#92B0EC\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#92B0EC\",\n stopOpacity: 0.51\n})))));\nexport default SvgNoSignDocumentsFoundIcon;","var _g, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgNoBoardsFoundIcon = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 108 121\"\n}, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0_754_127867)\"\n}, /*#__PURE__*/React.createElement(\"circle\", {\n cx: 54.5,\n cy: 56,\n r: 52.5,\n fill: \"#F3F3FE\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n x: 36.25,\n y: 4.17578,\n width: 37.5,\n height: 37.5,\n rx: 2.75,\n fill: \"white\",\n stroke: \"#B1C3E9\",\n strokeWidth: 1.5\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M56.5 19.1799C56.5 18.7657 56.8358 18.4299 57.25 18.4299H66.25C66.6642 18.4299 67 18.7657 67 19.1799V33.4299C67 34.2584 66.3284 34.9299 65.5 34.9299H58C57.1716 34.9299 56.5 34.2584 56.5 33.4299V19.1799Z\",\n fill: \"#FFB629\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M43 19.1799C43 18.7657 43.3358 18.4299 43.75 18.4299H52.75C53.1642 18.4299 53.5 18.7657 53.5 19.1799V27.4299C53.5 28.2584 52.8284 28.9299 52 28.9299H44.5C43.6716 28.9299 43 28.2584 43 27.4299V19.1799Z\",\n fill: \"#FFB629\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M43 12.4299C43 11.6015 43.6716 10.9299 44.5 10.9299H52C52.8284 10.9299 53.5 11.6015 53.5 12.4299V14.6799C53.5 15.0941 53.1642 15.4299 52.75 15.4299H43.75C43.3358 15.4299 43 15.0941 43 14.6799V12.4299Z\",\n fill: \"#FF6100\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M56.5 12.4299C56.5 11.6015 57.1716 10.9299 58 10.9299H65.5C66.3284 10.9299 67 11.6015 67 12.4299V14.6799C67 15.0941 66.6642 15.4299 66.25 15.4299H57.25C56.8358 15.4299 56.5 15.0941 56.5 14.6799V12.4299Z\",\n fill: \"#0099FF\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n x: 11.25,\n y: 54.1799,\n width: 37.5,\n height: 37.5,\n rx: 2.75,\n fill: \"white\",\n stroke: \"#B1C3E9\",\n strokeWidth: 1.5\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M31.5 69.1841C31.5 68.7699 31.8358 68.4341 32.25 68.4341H41.25C41.6642 68.4341 42 68.7699 42 69.1841V83.4341C42 84.2625 41.3284 84.9341 40.5 84.9341H33C32.1716 84.9341 31.5 84.2625 31.5 83.4341V69.1841Z\",\n fill: \"#FFB629\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18 69.1841C18 68.7699 18.3358 68.4341 18.75 68.4341H27.75C28.1642 68.4341 28.5 68.7699 28.5 69.1841V77.4341C28.5 78.2625 27.8284 78.9341 27 78.9341H19.5C18.6716 78.9341 18 78.2625 18 77.4341V69.1841Z\",\n fill: \"#FFB629\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18 62.4341C18 61.6057 18.6716 60.9341 19.5 60.9341H27C27.8284 60.9341 28.5 61.6057 28.5 62.4341V64.6841C28.5 65.0983 28.1642 65.4341 27.75 65.4341H18.75C18.3358 65.4341 18 65.0983 18 64.6841V62.4341Z\",\n fill: \"#FF6100\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M31.5 62.4341C31.5 61.6057 32.1716 60.9341 33 60.9341H40.5C41.3284 60.9341 42 61.6057 42 62.4341V64.6841C42 65.0983 41.6642 65.4341 41.25 65.4341H32.25C31.8358 65.4341 31.5 65.0983 31.5 64.6841V62.4341Z\",\n fill: \"#0099FF\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n x: 60.25,\n y: 54.1799,\n width: 37.5,\n height: 37.5,\n rx: 2.75,\n fill: \"white\",\n stroke: \"#B1C3E9\",\n strokeWidth: 1.5\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M80.5 69.1841C80.5 68.7699 80.8358 68.4341 81.25 68.4341H90.25C90.6642 68.4341 91 68.7699 91 69.1841V83.4341C91 84.2625 90.3284 84.9341 89.5 84.9341H82C81.1716 84.9341 80.5 84.2625 80.5 83.4341V69.1841Z\",\n fill: \"#FFB629\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M67 69.1841C67 68.7699 67.3358 68.4341 67.75 68.4341H76.75C77.1642 68.4341 77.5 68.7699 77.5 69.1841V77.4341C77.5 78.2625 76.8284 78.9341 76 78.9341H68.5C67.6716 78.9341 67 78.2625 67 77.4341V69.1841Z\",\n fill: \"#FFB629\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M67 62.4341C67 61.6057 67.6716 60.9341 68.5 60.9341H76C76.8284 60.9341 77.5 61.6057 77.5 62.4341V64.6841C77.5 65.0983 77.1642 65.4341 76.75 65.4341H67.75C67.3358 65.4341 67 65.0983 67 64.6841V62.4341Z\",\n fill: \"#FF6100\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M80.5 62.4341C80.5 61.6057 81.1716 60.9341 82 60.9341H89.5C90.3284 60.9341 91 61.6057 91 62.4341V64.6841C91 65.0983 90.6642 65.4341 90.25 65.4341H81.25C80.8358 65.4341 80.5 65.0983 80.5 64.6841V62.4341Z\",\n fill: \"#0099FF\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.5,\n d: \"M53.4633 100.352C60.6501 99.1766 65.5235 92.3979 64.3482 85.2111C63.173 78.0243 56.3943 73.151 49.2075 74.3262C42.0207 75.5014 37.1474 82.2801 38.3226 89.4669C39.4978 96.6537 46.2766 101.527 53.4633 100.352Z\",\n fill: \"url(#paint0_linear_754_127867)\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M56.6857 100.75L59.2276 99.4337L64.593 109.781L62.0541 111.099L56.6857 100.75Z\",\n fill: \"#0A1551\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M44.6464 74.4462C42.098 75.7692 39.9989 77.8182 38.6149 80.334C37.2308 82.8498 36.6239 85.7193 36.8706 88.58C37.1173 91.4408 38.2066 94.1642 40.0009 96.4058C41.7953 98.6475 44.214 100.307 46.9513 101.174C49.6886 102.041 52.6214 102.078 55.3792 101.278C58.137 100.479 60.596 98.8793 62.445 96.6825C64.294 94.4857 65.4501 91.79 65.7673 88.9362C66.0844 86.0824 65.5483 83.1986 64.2267 80.6495C62.4526 77.2313 59.3934 74.6575 55.7221 73.4942C52.0508 72.3308 48.0679 72.6731 44.649 74.4457L44.6464 74.4462ZM56.8334 97.9172C54.7387 99.0058 52.3685 99.4487 50.022 99.1899C47.6756 98.9311 45.4585 97.9821 43.6514 96.4631C41.8444 94.9441 40.5285 92.9233 39.8701 90.6563C39.2117 88.3893 39.2403 85.978 39.9526 83.7273C40.6648 81.4767 42.0285 79.4878 43.8713 78.0123C45.714 76.5368 47.9528 75.641 50.3048 75.4381C52.6567 75.2353 55.016 75.7345 57.0842 76.8727C59.1523 78.0108 60.8365 79.7368 61.9236 81.8323C63.3788 84.6401 63.6598 87.9107 62.7052 90.9256C61.7507 93.9405 59.6385 96.4533 56.8326 97.9121L56.8334 97.9172Z\",\n fill: \"#0A1551\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M67.4324 118.452C67.1848 118.581 66.9142 118.66 66.6361 118.684C66.3579 118.709 66.0778 118.678 65.8116 118.593C65.5455 118.509 65.2984 118.373 65.0849 118.193C64.8714 118.013 64.6956 117.793 64.5674 117.545L57.2134 103.385L60.9827 101.425L68.3393 115.585C68.4688 115.832 68.548 116.103 68.5725 116.381C68.597 116.66 68.5663 116.94 68.4821 117.207C68.3978 117.473 68.2615 117.721 68.0814 117.934C67.9013 118.148 67.6807 118.324 67.4324 118.452Z\",\n fill: \"#0A1551\"\n}))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint0_linear_754_127867\",\n x1: 49.2075,\n y1: 74.3262,\n x2: 53.4633,\n y2: 100.352,\n gradientUnits: \"userSpaceOnUse\"\n}, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#92B0EC\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#92B0EC\",\n stopOpacity: 0.51\n})), /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0_754_127867\"\n}, /*#__PURE__*/React.createElement(\"rect\", {\n width: 108,\n height: 120,\n fill: \"white\",\n transform: \"translate(0 0.5)\"\n})))));\nexport default SvgNoBoardsFoundIcon;","var _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _g, _path9, _path10, _path11, _path12, _g2, _path13, _path14, _path15, _path16, _path17, _path18, _path19, _g3, _path20, _path21, _path22, _path23, _g4, _path24, _path25, _path26, _path27, _path28, _path29, _path30, _path31, _path32, _path33, _path34, _path35, _path36, _path37, _path38, _path39, _path40, _path41, _path42, _path43, _path44, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgNoFormsIcon = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 198 141\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0 97.4367C0 73.8043 19.1578 54.6465 42.7902 54.6465H155.115C178.747 54.6465 197.905 73.8043 197.905 97.4367C197.905 121.069 178.747 140.227 155.115 140.227H42.7902C19.1578 140.227 0 121.069 0 97.4367Z\",\n fill: \"#E6E6F5\"\n})), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask0_624:16012\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 0,\n y: 54,\n width: 198,\n height: 87\n}, _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0 97.4367C0 73.8043 19.1578 54.6465 42.7902 54.6465H155.115C178.747 54.6465 197.905 73.8043 197.905 97.4367C197.905 121.069 178.747 140.227 155.115 140.227H42.7902C19.1578 140.227 0 121.069 0 97.4367Z\",\n fill: \"#E6E6F5\"\n}))), /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask0_624:16012)\"\n}, _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M115.336 77.9239C106.901 88.5617 99.9998 95.4214 94.6306 98.5029C86.5769 103.125 85.9877 98.2682 56.4901 77.7583C54.439 76.8969 52.7754 76.6674 49.9956 79.7585C48.3335 81.6069 44.7598 82.0931 39.2746 81.2173L39.2746 81.2173C38.7245 81.1295 38.2053 81.504 38.115 82.0539C38.0701 82.3274 38.1397 82.6067 38.3074 82.8265C39.6577 84.5955 41.994 85.5598 45.3164 85.7196C51.9089 86.0364 52.6163 83.5632 56.326 86.4774C60.0356 89.3916 79.9102 112.691 91.8962 113.269C103.882 113.848 119.63 96.0418 124.085 94.6697C127.055 93.7549 129.477 86.5287 131.353 72.9909L115.336 77.9239Z\",\n fill: \"#CD7448\"\n})), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M58.9543 90.0563C62.224 86.9336 64.2069 84.21 64.903 81.8853C79.5311 92.8149 87.8103 97.9805 89.7407 97.382C92.3874 96.5614 113.744 77.3633 121.165 72.8215C121.839 72.149 121.886 77.8987 122.422 77.2795L120.015 99.5943C111.348 105.796 105.826 109.617 103.45 111.057C99.8843 113.217 90.5281 117.172 82.0782 110.302C76.4449 105.722 68.7369 98.9735 58.9543 90.0563Z\",\n fill: \"#F4F5FE\"\n})), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M110.638 114.549C111.986 119.246 111.986 125.139 110.638 135.875L160.179 128.641L157.146 88.3777C155.124 81.6671 152.765 76.9698 150.069 74.2855C146.025 70.2592 124.793 72.2724 119.737 74.2855C114.682 76.2987 113.671 85.3579 108.616 93.4106C103.561 101.463 108.616 107.503 110.638 114.549Z\",\n fill: \"white\"\n})), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M141.981 72.1544C139.959 88.6243 134.277 96.8593 124.934 96.8593C110.92 96.8593 114.206 89.4872 115.961 86.0305C117.131 83.726 118.417 79.6245 119.82 73.7258C124.641 72.1872 128.321 71.3278 130.86 71.1478C133.398 70.9679 137.105 71.3034 141.981 72.1544Z\",\n fill: \"#CD7448\"\n})), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask1_624:16012\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 51,\n y: -1,\n width: 110,\n height: 94\n}, _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M51.2891 -0.625H160.642V92.0872H51.2891V-0.625Z\",\n fill: \"#C4C4C4\"\n}))), /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask1_624:16012)\"\n}, /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask2_624:16012\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 106,\n y: 71,\n width: 59,\n height: 93\n}, _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M110.638 138.541C111.986 127.804 111.986 119.246 110.638 114.549C108.616 107.503 103.561 101.463 108.616 93.4106C113.671 85.3579 114.682 76.2987 119.737 74.2855C124.793 72.2724 146.025 70.2592 150.069 74.2855C152.765 76.9698 155.124 81.6671 157.146 88.3777L160.179 128.641C164.898 146.759 165.572 157.832 162.201 161.858C157.146 167.898 155.124 151.792 132.881 142.733C128.163 140.72 120.748 139.883 110.638 138.541Z\",\n fill: \"white\"\n}))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask2_624:16012)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M110.638 138.539C111.986 127.803 111.986 120.085 110.638 115.388C108.616 108.342 103.561 102.302 108.616 94.2498C113.671 86.1972 114.398 76.4272 119.454 74.414C124.509 72.4008 145.286 69.4997 149.33 73.526C152.026 76.2102 155.124 82.5064 157.146 89.2169V102.827L160.179 129.48C164.898 147.599 165.572 158.671 162.201 162.697C157.146 168.737 155.124 152.632 132.881 143.572C128.163 141.559 120.748 139.882 110.638 138.539Z\",\n fill: \"white\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M141.981 72.1544C139.959 88.6243 134.277 96.8593 124.934 96.8593C110.92 96.8593 114.206 89.4872 115.961 86.0305C117.131 83.726 118.417 79.6245 119.82 73.7258C124.641 72.1872 128.321 71.3278 130.86 71.1478C133.398 70.9679 137.105 71.3034 141.981 72.1544Z\",\n fill: \"#CD7448\"\n}))), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M113.82 33.3166C110.43 47.7514 109.279 49.4479 108.018 52.6186C107.705 53.4047 107.867 54.3038 108.456 54.912C113.256 59.8667 119.676 61.4146 127.717 59.5556C136.283 57.5753 136.242 54.5995 130.934 30.4186L113.82 33.3166Z\",\n fill: \"#0A1551\"\n})), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M136.285 53.9991C134.625 66.972 140.19 71.5228 142.1 71.5552C144.009 71.5876 136.698 79.5784 123.067 92.3643C118.606 83.7663 118.107 76.0982 119.5 73.8743C121.59 70.5386 123.529 73.3922 122.813 61.7133C122.343 54.0415 132.544 54.7707 139.81 53.5254C136.285 53.9991 130.529 54.1174 136.285 53.9991Z\",\n fill: \"#CD7448\"\n})), _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.677232,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M122.313 56.5259C123.105 63.7532 123.082 67.7391 123 68.3752C122.878 69.3293 140.282 68.5234 135.312 53.2024C130.342 37.8815 128.68 55.0076 122.313 56.5259Z\",\n fill: \"#BD5826\"\n})), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask3_624:16012\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 113,\n y: 24,\n width: 38,\n height: 44\n}, _path12 || (_path12 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M145.092 57.0491C140.516 63.1625 134.135 66.5174 125.949 67.1136C117.636 67.7191 112.086 56.8794 113.156 45.7503C113.667 40.4403 114.843 35.7532 119.518 30.9235C129.169 20.9553 138.236 22.2718 146.718 34.8728L150.38 44.6449L145.092 57.0491Z\",\n fill: \"white\"\n}))), _g2 || (_g2 = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask3_624:16012)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M143.966 56.1764C138.857 61.8531 132.197 64.6207 123.988 64.4795C115.652 64.336 111.101 53.0441 113.171 42.0585C114.159 36.8169 115.753 32.2554 120.847 27.866C131.36 18.8066 140.273 20.9315 147.587 34.2405L150.353 44.2998L143.966 56.1764Z\",\n fill: \"#CD7448\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.422879,\n d: \"M131.771 56.3898C129.076 55.9732 127.129 54.1378 127.423 52.2901C127.718 50.4425 130.141 49.2824 132.836 49.6989C135.532 50.1155 137.478 51.9509 137.184 53.7985C136.89 55.6462 134.466 56.8063 131.771 56.3898Z\",\n fill: \"#A44616\"\n}))), _path13 || (_path13 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M125.579 55.9777C123.46 56.8827 120.96 56.4158 118.079 54.5768C119.435 58.4286 120.976 60.1813 122.702 59.8349C124.428 59.4886 125.387 58.2028 125.579 55.9777Z\",\n fill: \"#A5330A\"\n})), _path14 || (_path14 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M126.938 38.462C119.116 37.1633 115.933 36.5576 113.227 34.4149C113.384 24.3556 121.661 18.4345 125.497 17.5383C134.368 15.3748 143.999 18.0813 149.91 25.865C150.496 26.6367 150.986 27.4266 151.389 28.2296C151.621 28.6034 151.85 29.0216 152.077 29.4864C155.776 40.1435 157.722 55.6928 156.667 61.4529C153.71 65.2542 129.978 66.0739 132.95 61.3098C133.116 61.0439 133.301 60.7682 133.498 60.4748C134.894 58.3952 136.885 55.4288 136.866 48.7651C136.862 47.1514 136.396 45.2638 135.87 43.1353C135.692 42.4157 135.507 41.6685 135.332 40.8951C134.913 40.7489 134.514 40.6101 134.135 40.4782C132.443 39.8904 131.149 39.4404 130.345 39.0921C129.465 38.7109 130.304 36.1681 130.907 34.3427C131.433 32.7486 131.778 31.7015 130.641 33.1186C129.176 34.9439 128.616 36.3723 128.341 37.492C128.184 38.1288 127.585 38.5694 126.938 38.462Z\",\n fill: \"#0A1551\"\n})), _path15 || (_path15 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M115.165 138.735C120.494 135.738 144.433 142.471 162.674 135.789C172.674 132.126 165.022 110.79 160.852 92.8997C158.213 82.9975 153.845 76.4349 149.863 74.0075L141.201 80.3815L143.406 92.2543C143.406 92.2543 142.036 96.5649 144.923 104.397C147.811 112.229 152.298 122.076 152.298 122.076L109.373 131.081C109.528 134.632 110.902 141.133 115.165 138.735Z\",\n fill: \"white\"\n}))), _path16 || (_path16 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M120.877 137.279C118.784 138.945 117.779 138.998 115.278 140.92C113.265 141.884 111.779 142.298 107.412 140.994C104.792 140.212 101.091 140.012 96.3082 140.393L96.3082 140.393C95.7516 140.438 95.2652 140.024 95.2217 139.47C95.2055 139.263 95.2538 139.057 95.3599 138.878C96.5754 136.833 98.9431 135.637 102.463 135.287C109.043 134.635 109.862 137.065 113.441 133.969C115.827 131.905 118.306 133.008 120.877 137.279Z\",\n fill: \"#CD7448\"\n})), _path17 || (_path17 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M116.883 140.747C127.5 139.876 146.152 144.482 164.392 137.801C174.393 134.137 166.74 112.802 162.57 94.9114C159.932 85.0092 155.564 78.4466 151.582 76.0192L142.92 82.3932L145.125 94.266C145.125 94.266 143.755 98.5766 146.642 106.408C149.529 114.24 154.017 124.088 154.017 124.088L111.092 133.093C111.246 136.643 110 140.376 116.883 140.747Z\",\n fill: \"url(#paint0_linear_624:16012)\"\n}))), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask4_624:16012\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 96,\n y: 14,\n width: 64,\n height: 79\n}, _path18 || (_path18 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M96 14.375H160V92.375H96V14.375Z\",\n fill: \"#C4C4C4\"\n}))), /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask4_624:16012)\"\n}, /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask5_624:16012\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 106,\n y: 71,\n width: 59,\n height: 93\n}, _path19 || (_path19 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M110.349 138.541C111.697 127.804 111.697 119.246 110.349 114.549C108.327 107.503 103.272 101.463 108.327 93.4106C113.382 85.3579 114.393 76.2987 119.448 74.2855C124.504 72.2724 145.736 70.2592 149.78 74.2855C152.476 76.9698 154.835 81.6671 156.857 88.3777L159.89 128.641C164.609 146.759 165.283 157.832 161.912 161.858C156.857 167.898 154.835 151.792 132.592 142.733C127.874 140.72 120.459 139.883 110.349 138.541Z\",\n fill: \"white\"\n}))), _g3 || (_g3 = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask5_624:16012)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M110.349 138.539C111.697 127.803 111.697 120.085 110.349 115.388C108.327 108.342 103.272 102.302 108.327 94.2498C113.382 86.1972 114.109 76.4272 119.165 74.414C124.22 72.4008 144.997 69.4997 149.041 73.526C151.737 76.2102 154.835 82.5064 156.857 89.2169V102.827L159.89 129.48C164.609 147.599 165.283 158.671 161.912 162.697C156.857 168.737 154.835 152.632 132.592 143.572C127.874 141.559 120.459 139.882 110.349 138.539Z\",\n fill: \"white\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M141.692 72.1544C139.67 88.6243 133.988 96.8593 124.645 96.8593C110.631 96.8593 113.917 89.4872 115.672 86.0305C116.842 83.726 118.128 79.6245 119.531 73.7258C124.352 72.1872 128.032 71.3278 130.571 71.1478C133.109 70.9679 136.816 71.3034 141.692 72.1544Z\",\n fill: \"#CD7448\"\n}))), _path20 || (_path20 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M113.531 33.3166C110.141 47.7514 108.989 49.4479 107.729 52.6186C107.416 53.4047 107.578 54.3038 108.167 54.912C112.967 59.8667 119.387 61.4146 127.428 59.5556C135.994 57.5753 135.953 54.5995 130.645 30.4186L113.531 33.3166Z\",\n fill: \"#0A1551\"\n})), _path21 || (_path21 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M135.996 53.9991C134.335 66.972 139.901 71.5228 141.811 71.5552C143.72 71.5876 136.409 79.5784 122.778 92.3643C118.317 83.7663 117.818 76.0982 119.211 73.8743C121.301 70.5386 123.24 73.3922 122.524 61.7133C122.054 54.0415 132.255 54.7707 139.521 53.5254C135.996 53.9991 130.24 54.1174 135.996 53.9991Z\",\n fill: \"#CD7448\"\n})), _path22 || (_path22 = /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.677232,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M122.024 56.5259C122.816 63.7532 122.793 67.7391 122.711 68.3752C122.589 69.3293 139.993 68.5234 135.023 53.2024C130.053 37.8815 128.391 55.0076 122.024 56.5259Z\",\n fill: \"#BD5826\"\n})), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask6_624:16012\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 112,\n y: 24,\n width: 39,\n height: 44\n}, _path23 || (_path23 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M144.803 57.0491C140.227 63.1625 133.846 66.5174 125.66 67.1136C117.347 67.7191 111.797 56.8794 112.867 45.7503C113.377 40.4403 114.553 35.7532 119.229 30.9235C128.88 20.9553 137.947 22.2718 146.429 34.8728L150.091 44.6449L144.803 57.0491Z\",\n fill: \"white\"\n}))), _g4 || (_g4 = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask6_624:16012)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M143.677 56.1764C138.567 61.8531 131.908 64.6207 123.699 64.4795C115.363 64.336 110.812 53.0441 112.882 42.0585C113.87 36.8169 115.464 32.2554 120.558 27.866C131.071 18.8066 139.984 20.9315 147.298 34.2405L150.064 44.2998L143.677 56.1764Z\",\n fill: \"#CD7448\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M128.904 40.8301C130.107 41.4177 130.959 42.3601 131.387 43.0696C131.557 43.3507 131.466 43.716 131.185 43.8855C130.905 44.0549 130.539 43.9644 130.37 43.6833C130.041 43.1393 129.35 42.3705 128.383 41.8981C127.438 41.4364 126.218 41.2495 124.756 41.8547C124.453 41.9803 124.106 41.8362 123.98 41.5329C123.854 41.2296 123.998 40.882 124.301 40.7564C126.103 40.01 127.679 40.2318 128.904 40.8301Z\",\n fill: \"#37120C\",\n fillOpacity: 0.25\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M117.443 38.8566C116.482 38.8034 115.689 39.1609 115.177 39.5723C114.922 39.778 114.882 40.152 115.088 40.4078C115.294 40.6636 115.668 40.7042 115.923 40.4985C116.242 40.2424 116.753 40.0088 117.379 40.0434C117.994 40.0774 118.794 40.3744 119.692 41.3119C119.919 41.5491 120.295 41.5576 120.532 41.3308C120.769 41.104 120.777 40.7278 120.55 40.4905C119.487 39.38 118.416 38.9104 117.443 38.8566Z\",\n fill: \"#37120C\",\n fillOpacity: 0.25\n}), /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.422879,\n d: \"M131.482 56.3898C128.787 55.9732 126.84 54.1378 127.134 52.2901C127.428 50.4425 129.852 49.2824 132.547 49.6989C135.243 50.1155 137.189 51.9509 136.895 53.7985C136.601 55.6462 134.177 56.8063 131.482 56.3898Z\",\n fill: \"#A44616\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.422879,\n d: \"M109.964 51.9299C107.316 51.2573 105.484 49.2294 105.872 47.4007C106.26 45.5719 108.72 44.6347 111.368 45.3074C114.016 45.9801 115.848 48.0079 115.46 49.8367C115.072 51.6654 112.612 52.6026 109.964 51.9299Z\",\n fill: \"#A44616\"\n}))), _path24 || (_path24 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M125.29 55.9777C123.171 56.8827 120.671 56.4158 117.79 54.5768C119.146 58.4286 120.687 60.1813 122.413 59.8349C124.139 59.4886 125.098 58.2028 125.29 55.9777Z\",\n fill: \"#A5330A\"\n})), _path25 || (_path25 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M126.298 46.5747C125.74 46.5652 125.298 45.8942 125.311 45.0761C125.324 44.2579 125.787 43.6023 126.345 43.6118C126.903 43.6212 127.345 44.2922 127.332 45.1104C127.319 45.9285 126.856 46.5841 126.298 46.5747Z\",\n fill: \"#321907\"\n})), _path26 || (_path26 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M117.699 45.0239C117.141 45.0144 116.699 44.3435 116.712 43.5253C116.725 42.7071 117.187 42.0515 117.745 42.061C118.303 42.0704 118.745 42.7414 118.732 43.5596C118.72 44.3778 118.257 45.0334 117.699 45.0239Z\",\n fill: \"#321907\"\n})), _path27 || (_path27 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M122.715 43.9712C122.557 43.8531 122.333 43.8846 122.215 44.0417C121.233 45.3458 120.594 45.9805 119.993 46.4194C119.691 46.6402 119.392 46.8164 119.05 47.0061C118.957 47.0578 118.86 47.1107 118.759 47.1659C118.492 47.3116 118.197 47.473 117.868 47.667C116.711 48.3477 116.542 49.9158 117.066 51.0793C117.337 51.6792 117.802 52.2141 118.46 52.5212C119.121 52.8298 119.943 52.8927 120.894 52.6054C121.082 52.5484 121.189 52.3497 121.131 52.1616C121.073 51.9735 120.874 51.8672 120.685 51.9242C119.876 52.1686 119.239 52.0996 118.762 51.8768C118.281 51.6523 117.929 51.2561 117.718 50.789C117.281 49.8185 117.503 48.7093 118.232 48.28C118.551 48.0922 118.831 47.9392 119.095 47.7951C119.198 47.7386 119.299 47.6835 119.399 47.6282C119.749 47.4336 120.079 47.2406 120.417 46.9937C121.096 46.4969 121.784 45.8014 122.787 44.4696C122.905 44.3125 122.873 44.0894 122.715 43.9712Z\",\n fill: \"#8A3110\"\n})), _path28 || (_path28 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M126.649 38.462C118.827 37.1633 115.644 36.5576 112.938 34.4149C113.095 24.3556 121.372 18.4345 125.208 17.5383C134.079 15.3748 143.71 18.0813 149.621 25.865C150.207 26.6367 150.697 27.4266 151.1 28.2296C151.332 28.6034 151.561 29.0216 151.788 29.4864C155.487 40.1435 157.433 55.6928 156.378 61.4529C153.421 65.2542 129.689 66.0739 132.661 61.3098C132.827 61.0439 133.012 60.7682 133.209 60.4748C134.605 58.3952 136.596 55.4288 136.577 48.7651C136.573 47.1514 136.106 45.2638 135.581 43.1353C135.403 42.4157 135.218 41.6685 135.043 40.8951C134.624 40.7489 134.225 40.6101 133.846 40.4782C132.154 39.8904 130.859 39.4404 130.056 39.0921C129.176 38.7109 130.015 36.1681 130.618 34.3427C131.144 32.7486 131.489 31.7015 130.352 33.1186C128.887 34.9439 128.327 36.3723 128.052 37.492C127.895 38.1288 127.296 38.5694 126.649 38.462Z\",\n fill: \"#0A1551\"\n})), _path29 || (_path29 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M114.876 138.735C120.204 135.738 144.144 142.471 162.384 135.789C172.385 132.126 164.732 110.79 160.563 92.8997C157.924 82.9975 153.556 76.4349 149.574 74.0075L140.912 80.3815L143.117 92.2543C143.117 92.2543 141.747 96.5649 144.634 104.397C147.522 112.229 152.009 122.076 152.009 122.076L109.084 131.081C109.239 134.632 110.612 141.133 114.876 138.735Z\",\n fill: \"white\"\n}))), _path30 || (_path30 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M38 4.95802C38 2.42689 40.0519 0.375 42.583 0.375H64.3524C66.8835 0.375 68.9354 2.42689 68.9354 4.95802V32.4562C68.9354 34.9873 66.8835 37.0392 64.3524 37.0392H42.583C40.0519 37.0392 38 34.9873 38 32.4562V4.95802Z\",\n fill: \"white\"\n})), _path31 || (_path31 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M64.3524 1.52076H42.583C40.6847 1.52076 39.1458 3.05967 39.1458 4.95802V32.4562C39.1458 34.3545 40.6847 35.8934 42.583 35.8934H64.3524C66.2507 35.8934 67.7897 34.3545 67.7897 32.4562V4.95802C67.7897 3.05967 66.2507 1.52076 64.3524 1.52076ZM42.583 0.375C40.0519 0.375 38 2.42689 38 4.95802V32.4562C38 34.9873 40.0519 37.0392 42.583 37.0392H64.3524C66.8835 37.0392 68.9354 34.9873 68.9354 32.4562V4.95802C68.9354 2.42689 66.8835 0.375 64.3524 0.375H42.583Z\",\n fill: \"#C8CEED\"\n})), _path32 || (_path32 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M44.5469 12.8157C44.5469 11.7309 45.4263 10.8516 46.511 10.8516H60.9148C61.9996 10.8516 62.879 11.7309 62.879 12.8157C62.879 13.9005 61.9996 14.7799 60.9148 14.7799H46.511C45.4263 14.7799 44.5469 13.9005 44.5469 12.8157Z\",\n fill: \"#0099FF\"\n})), _path33 || (_path33 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M44.5469 19.3626C44.5469 18.2778 45.4263 17.3984 46.511 17.3984H60.9148C61.9996 17.3984 62.879 18.2778 62.879 19.3626C62.879 20.4474 61.9996 21.3267 60.9148 21.3267H46.511C45.4263 21.3267 44.5469 20.4474 44.5469 19.3626Z\",\n fill: \"#FF6100\"\n})), _path34 || (_path34 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M44.5469 25.9095C44.5469 24.8247 45.4263 23.9453 46.511 23.9453H60.9148C61.9996 23.9453 62.879 24.8247 62.879 25.9095C62.879 26.9942 61.9996 27.8736 60.9148 27.8736H46.511C45.4263 27.8736 44.5469 26.9942 44.5469 25.9095Z\",\n fill: \"#FFB629\"\n})), _path35 || (_path35 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M57.0645 44.958C57.0645 42.4269 59.1163 40.375 61.6475 40.375H83.4168C85.948 40.375 87.9999 42.4269 87.9999 44.958V72.4562C87.9999 74.9873 85.948 77.0392 83.4168 77.0392H61.6475C59.1163 77.0392 57.0645 74.9873 57.0645 72.4562V44.958Z\",\n fill: \"white\"\n})), _path36 || (_path36 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M83.4168 41.5208H61.6475C59.7491 41.5208 58.2102 43.0597 58.2102 44.958V72.4562C58.2102 74.3545 59.7491 75.8934 61.6475 75.8934H83.4168C85.3152 75.8934 86.8541 74.3545 86.8541 72.4562V44.958C86.8541 43.0597 85.3152 41.5208 83.4168 41.5208ZM61.6475 40.375C59.1163 40.375 57.0645 42.4269 57.0645 44.958V72.4562C57.0645 74.9873 59.1163 77.0392 61.6475 77.0392H83.4168C85.948 77.0392 87.9999 74.9873 87.9999 72.4562V44.958C87.9999 42.4269 85.948 40.375 83.4168 40.375H61.6475Z\",\n fill: \"#C8CEED\"\n})), _path37 || (_path37 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M63.6113 52.8157C63.6113 51.7309 64.4907 50.8516 65.5755 50.8516H79.9793C81.064 50.8516 81.9434 51.7309 81.9434 52.8157C81.9434 53.9005 81.064 54.7799 79.9793 54.7799H65.5755C64.4907 54.7799 63.6113 53.9005 63.6113 52.8157Z\",\n fill: \"#0099FF\"\n})), _path38 || (_path38 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M63.6113 59.3626C63.6113 58.2778 64.4907 57.3984 65.5755 57.3984H79.9793C81.064 57.3984 81.9434 58.2778 81.9434 59.3626C81.9434 60.4474 81.064 61.3267 79.9793 61.3267H65.5755C64.4907 61.3267 63.6113 60.4474 63.6113 59.3626Z\",\n fill: \"#FF6100\"\n})), _path39 || (_path39 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M63.6113 65.9095C63.6113 64.8247 64.4907 63.9453 65.5755 63.9453H79.9793C81.064 63.9453 81.9434 64.8247 81.9434 65.9095C81.9434 66.9942 81.064 67.8736 79.9793 67.8736H65.5755C64.4907 67.8736 63.6113 66.9942 63.6113 65.9095Z\",\n fill: \"#FFB629\"\n})), _path40 || (_path40 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18 44.958C18 42.4269 20.0519 40.375 22.583 40.375H44.3524C46.8835 40.375 48.9354 42.4269 48.9354 44.958V72.4562C48.9354 74.9873 46.8835 77.0392 44.3524 77.0392H22.583C20.0519 77.0392 18 74.9873 18 72.4562V44.958Z\",\n fill: \"white\"\n})), _path41 || (_path41 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M44.3524 41.5208H22.583C20.6847 41.5208 19.1458 43.0597 19.1458 44.958V72.4562C19.1458 74.3545 20.6847 75.8934 22.583 75.8934H44.3524C46.2507 75.8934 47.7897 74.3545 47.7897 72.4562V44.958C47.7897 43.0597 46.2507 41.5208 44.3524 41.5208ZM22.583 40.375C20.0519 40.375 18 42.4269 18 44.958V72.4562C18 74.9873 20.0519 77.0392 22.583 77.0392H44.3524C46.8835 77.0392 48.9354 74.9873 48.9354 72.4562V44.958C48.9354 42.4269 46.8835 40.375 44.3524 40.375H22.583Z\",\n fill: \"#C8CEED\"\n})), _path42 || (_path42 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.5469 52.8157C24.5469 51.7309 25.4263 50.8516 26.511 50.8516H40.9148C41.9996 50.8516 42.879 51.7309 42.879 52.8157C42.879 53.9005 41.9996 54.7799 40.9148 54.7799H26.511C25.4263 54.7799 24.5469 53.9005 24.5469 52.8157Z\",\n fill: \"#0099FF\"\n})), _path43 || (_path43 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.5469 59.3626C24.5469 58.2778 25.4263 57.3984 26.511 57.3984H40.9148C41.9996 57.3984 42.879 58.2778 42.879 59.3626C42.879 60.4474 41.9996 61.3267 40.9148 61.3267H26.511C25.4263 61.3267 24.5469 60.4474 24.5469 59.3626Z\",\n fill: \"#FF6100\"\n})), _path44 || (_path44 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.5469 65.9095C24.5469 64.8247 25.4263 63.9453 26.511 63.9453H40.9148C41.9996 63.9453 42.879 64.8247 42.879 65.9095C42.879 66.9942 41.9996 67.8736 40.9148 67.8736H26.511C25.4263 67.8736 24.5469 66.9942 24.5469 65.9095Z\",\n fill: \"#FFB629\"\n})), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint0_linear_624:16012\",\n x1: 152.19,\n y1: 93.8799,\n x2: 149.764,\n y2: 110.89,\n gradientUnits: \"userSpaceOnUse\"\n}, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"white\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#F3F5FE\"\n})))));\nexport default SvgNoFormsIcon;","var _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _path9, _path10, _path11, _g, _path12, _path13, _path14, _path15, _path16, _path17, _path18, _path19, _circle, _path20, _path21, _path22, _path23, _path24, _path25, _rect, _path26, _path27, _path28, _path29, _path30, _rect2, _path31, _path32, _path33, _path34, _path35, _rect3, _path36, _path37, _path38, _path39, _path40, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgNoAppsIcon = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 198 138\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0 94.4357C0 70.8034 19.1578 51.6455 42.7902 51.6455H155.115C178.747 51.6455 197.905 70.8034 197.905 94.4357C197.905 118.068 178.747 137.226 155.115 137.226H42.7902C19.1578 137.226 0 118.068 0 94.4357Z\",\n fill: \"#E6E6F5\"\n})), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M65.8372 81.9592C64.5361 80.8456 63.0223 80.0079 61.3877 79.4968C59.7531 78.9858 58.032 78.8122 56.3283 78.9865L51.2601 76.694C50.8846 76.5178 50.4599 76.4753 50.0569 76.5736C49.654 76.6718 49.297 76.9049 49.0446 77.234C48.924 77.4075 48.8398 77.6037 48.7972 77.8106C48.7546 78.0176 48.7542 78.231 48.7965 78.438C48.8389 78.645 48.9228 78.8413 49.0432 79.015C49.1637 79.1886 49.3181 79.336 49.4971 79.4482L52.2518 81.2906L51.0775 81.1933C49.2316 81.0459 47.4791 80.3203 46.0693 79.1196L42.156 75.7349C41.9289 75.5451 41.6577 75.4154 41.3673 75.3579C41.0769 75.3004 40.7768 75.317 40.4945 75.4059C40.2447 75.4669 40.0149 75.5918 39.8279 75.7684C39.6409 75.945 39.5035 76.1672 39.4283 76.4131C39.3531 76.6591 39.3431 76.9203 39.3994 77.1712C39.4557 77.4222 39.5761 77.6541 39.7491 77.8444L44.3206 82.8871C45.2215 83.8663 46.3102 84.6544 47.5217 85.2045C48.7332 85.7547 50.043 86.0557 51.3731 86.0897L66.0281 86.5405L65.8372 81.9592Z\",\n fill: \"#EFBB9D\"\n})), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M114.82 31.3173C111.43 45.7521 107.561 80.2678 106.301 83.4385C105.988 84.2245 106.15 85.1237 106.739 85.7319C111.539 90.6866 117.959 92.2345 126 90.3755C134.566 88.3952 137.243 52.6002 131.935 28.4193L114.82 31.3173Z\",\n fill: \"#091141\"\n})), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M59.9552 88.0553C63.225 84.9327 65.2079 82.209 65.9039 79.8843C80.5321 90.814 88.8113 95.9795 90.7416 95.381C93.3884 94.5604 114.745 75.3623 122.166 70.8205C122.84 70.148 122.887 75.8977 123.423 75.2786L121.016 97.5933C112.349 103.795 106.827 107.616 104.451 109.056C100.885 111.216 91.5291 115.171 83.0792 108.301C77.4459 103.721 69.7379 96.9725 59.9552 88.0553Z\",\n fill: \"#F4F5FE\"\n})), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M110.591 112.816C111.714 117.571 113.857 121.714 112 132.375C122.035 134.192 128.883 131.142 133.5 133.375L151 125.375L163.5 119.875L157.644 102.462L158.292 88.8673C156.591 82.0689 153.796 75.6337 151.23 72.8253C147.382 68.6128 126.49 70.5307 121.345 72.3032C116.2 74.0757 115.009 83.8004 109.576 91.6056C104.144 99.4108 108.906 105.682 110.591 112.816Z\",\n fill: \"white\"\n})), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M142.981 70.1537C140.959 86.6236 135.276 94.8586 125.934 94.8586C111.92 94.8586 115.206 87.4865 116.961 84.0298C118.131 81.7253 119.417 77.6237 120.82 71.7251C125.641 70.1864 129.321 69.3271 131.859 69.1471C134.398 68.9671 138.105 69.3026 142.981 70.1537Z\",\n fill: \"#EFBB9D\"\n})), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M122.003 47.5342C121.451 47.6155 120.906 47.0251 120.785 46.2156C120.664 45.4061 121.013 44.6839 121.565 44.6026C122.117 44.5212 122.662 45.1116 122.783 45.9211C122.904 46.7307 122.555 47.4528 122.003 47.5342Z\",\n fill: \"#321907\"\n})), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M114.454 47.4026C113.902 47.4839 113.356 46.8935 113.235 46.084C113.114 45.2745 113.464 44.5523 114.015 44.471C114.567 44.3897 115.113 44.98 115.234 45.7895C115.355 46.5991 115.006 47.3212 114.454 47.4026Z\",\n fill: \"#321907\"\n})), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M137.286 51.9998C135.625 64.9726 141.591 69.8426 143.5 69.875C145.409 69.9074 137.698 77.5791 124.067 90.365C119.607 81.7669 119.107 74.0988 120.501 71.875C122.59 68.5393 124.53 71.3929 123.813 59.714C123.343 52.0421 133.544 52.7714 140.811 51.5261C137.286 51.9998 131.529 52.1181 137.286 51.9998Z\",\n fill: \"#EFBB9D\"\n})), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.677232,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M123.313 54.5259C124.105 61.7532 124.082 65.7391 124 66.3752C123.878 67.3293 141.282 66.5234 136.312 51.2024C131.342 35.8815 129.68 53.0076 123.313 54.5259Z\",\n fill: \"#DC9F7E\"\n})), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask0\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 114,\n y: 22,\n width: 38,\n height: 44\n}, _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M146.092 55.0486C141.517 61.1621 135.136 64.5169 126.949 65.1132C118.636 65.7186 113.086 54.8789 114.156 43.7498C114.667 38.4398 115.843 33.7527 120.519 28.923C130.169 18.9548 139.236 20.2713 147.719 32.8723L151.381 42.6444L146.092 55.0486Z\",\n fill: \"white\"\n}))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask0)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M144.967 54.1757C139.857 59.8523 133.198 62.62 124.989 62.4787C116.653 62.3353 112.102 51.0434 114.172 40.0578C115.16 34.8162 116.754 30.2546 121.848 25.8652C132.361 16.8059 141.274 18.9308 148.588 32.2398L151.354 42.2991L144.967 54.1757Z\",\n fill: \"#EFBB9D\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M132.771 54.3902C130.075 53.9737 128.129 52.1383 128.423 50.2906C128.717 48.443 131.141 47.2829 133.836 47.6994C136.531 48.1159 138.478 49.9514 138.184 51.799C137.89 53.6467 135.466 54.8068 132.771 54.3902Z\",\n fill: \"#EFA77F\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M111.252 49.9304C108.605 49.2578 106.773 47.2299 107.16 45.4012C107.548 43.5724 110.009 42.6352 112.657 43.3079C115.304 43.9806 117.136 46.0084 116.749 47.8372C116.361 49.6659 113.9 50.6031 111.252 49.9304Z\",\n fill: \"#EFA77F\"\n}))), _path12 || (_path12 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M126.024 53.9409C123.905 54.8459 121.405 54.3789 118.523 52.5399C119.88 56.3917 121.421 58.1444 123.147 57.798C124.873 57.4517 125.832 56.166 126.024 53.9409Z\",\n fill: \"#A5330A\"\n})), _path13 || (_path13 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M127.588 44.5756C127.03 44.5662 126.588 43.8952 126.601 43.077C126.613 42.2588 127.076 41.6033 127.634 41.6127C128.192 41.6222 128.634 42.2932 128.621 43.1113C128.609 43.9295 128.146 44.5851 127.588 44.5756Z\",\n fill: \"#0A1551\"\n})), _path14 || (_path14 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M118.988 43.0239C118.43 43.0144 117.988 42.3435 118.001 41.5253C118.014 40.7071 118.477 40.0515 119.035 40.061C119.593 40.0704 120.035 40.7414 120.022 41.5596C120.009 42.3778 119.546 43.0334 118.988 43.0239Z\",\n fill: \"#0A1551\"\n})), _path15 || (_path15 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M142.981 70.1542C140.959 86.6241 135.276 94.8591 125.934 94.8591C111.92 94.8591 115.206 87.487 116.961 84.0303C118.131 81.7258 119.417 77.6242 120.82 71.7256C125.641 70.1869 129.321 69.3276 131.859 69.1476C134.398 68.9676 138.105 69.3031 142.981 70.1542Z\",\n fill: \"#EFBB9D\"\n})), _path16 || (_path16 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M142.201 78.3815L144.407 90.2543C144.407 90.2543 143.036 94.5649 145.923 102.397C148.811 110.229 153.298 120.076 153.298 120.076L163.674 133.789C173.674 130.126 166.022 108.79 161.852 90.8997C159.213 80.9975 154.846 74.4349 150.863 72.0075L142.201 78.3815Z\",\n fill: \"white\"\n})), _path17 || (_path17 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M144.231 81.3883L146.436 93.2611C146.436 93.2611 145.066 97.5717 147.953 105.404C150.841 113.235 155.328 123.083 155.328 123.083L164.5 135.375C174.5 131.712 168.051 111.797 163.881 93.9065C161.243 84.0043 156.875 77.4416 152.893 75.0142L144.231 81.3883Z\",\n fill: \"url(#paint0_linear)\"\n})), _path18 || (_path18 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M142.501 69.375C131.301 71.775 125.168 70.0417 123.501 68.875C122.702 69.275 120.834 71.375 120 72.375C118.5 76.0417 115.201 84.075 114.001 86.875C112.501 90.375 115.001 92.375 118.501 96.375C122.001 100.375 133.001 96.875 137.001 95.875C140.201 95.075 144.001 78.5417 145.501 70.375C143.501 69.975 142.668 69.5417 142.501 69.375Z\",\n fill: \"white\"\n})), _path19 || (_path19 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M127.938 36.4629C120.117 35.1642 116.934 34.5586 114.228 32.4159C114.384 22.3566 122.661 16.4355 126.497 15.5393C135.368 13.3758 144.999 16.0823 150.91 23.866C151.496 24.6377 151.986 25.4275 152.389 26.2306C152.622 26.6044 152.851 27.0226 153.078 27.4874C156.776 38.1445 156.679 78.258 155.624 84.0181C152.667 87.8194 128.935 88.6391 131.907 83.875C132.073 83.609 132.258 83.3333 132.455 83.04C133.851 80.9604 137.885 53.4298 137.866 46.7661C137.862 45.1523 137.396 43.2648 136.87 41.1363C136.692 40.4167 136.508 39.6695 136.332 38.896C135.914 38.7499 135.514 38.6111 135.135 38.4792C133.444 37.8914 132.149 37.4414 131.345 37.0931C130.465 36.7119 131.304 34.1691 131.907 32.3436C132.433 30.7495 132.779 29.7024 131.641 31.1196C130.176 32.9449 129.616 34.3733 129.341 35.493C129.184 36.1298 128.586 36.5704 127.938 36.4629Z\",\n fill: \"#091141\"\n})), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 145.5,\n cy: 16.875,\n r: 9.5,\n fill: \"#091141\"\n})), _path20 || (_path20 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M129.897 38.4106C129.897 38.4106 126.839 37.5691 126.481 38.8687C126.481 38.8687 126.241 39.7406 129.026 40.4412C131.81 41.1417 132.489 41.0654 132.889 40.2708C133.288 39.4761 131.379 38.7034 129.897 38.4106Z\",\n fill: \"#091141\"\n})), _path21 || (_path21 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M118.797 36.4607C118.797 36.4607 121.443 36.6167 121.438 37.909C121.438 37.909 121.429 38.7744 119.107 38.5708C116.785 38.3672 116.107 37.9472 116.011 37.235C115.916 36.5228 117.553 36.2718 118.797 36.4607Z\",\n fill: \"#091141\"\n})), _path22 || (_path22 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M121.942 45.389L121 48.2849L122.873 48.7786\",\n stroke: \"#D97D4A\",\n strokeWidth: 0.919783,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n})), _path23 || (_path23 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M124.604 130.031L132.63 129.412L132.384 137.438H125.435L124.604 130.031Z\",\n fill: \"#EFBB9D\"\n})), _path24 || (_path24 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M126.861 129.813L127.262 131.418L128.065 137.438H108C108.402 133.425 114.02 129.412 118.033 129.412C121.243 129.412 126.058 129.679 126.861 129.813Z\",\n fill: \"#EFBB9D\"\n})), _path25 || (_path25 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M161.399 122.431L130 123.372L132 137.375L162 136.875C163.085 136.729 164.344 136.671 165.256 136.065C166.256 135.4 167.941 134.131 168.495 133.187C169.05 132.242 169.382 131.184 169.467 130.092C169.551 129.001 169.387 127.904 168.985 126.886C168.388 125.411 167.321 124.174 165.949 123.369C164.578 122.563 162.978 122.233 161.399 122.431Z\",\n fill: \"#F4F6FF\"\n})), _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n x: 38.3032,\n y: 1.625,\n width: 30.3839,\n height: 30.3839,\n rx: 2.75,\n fill: \"white\",\n stroke: \"#B1C3E9\",\n strokeWidth: 1.5\n})), _path26 || (_path26 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M41.4697 7.79267C41.4697 6.13099 42.8168 4.78394 44.4785 4.78394H62.5309C64.1926 4.78394 65.5396 6.13099 65.5396 7.79267V25.8451C65.5396 27.5068 64.1926 28.8538 62.5309 28.8538H44.4785C42.8168 28.8538 41.4697 27.5068 41.4697 25.8451V7.79267Z\",\n fill: \"white\"\n})), _path27 || (_path27 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M58.5096 18.4526C58.2886 18.4526 58.1093 18.6319 58.1093 18.8528V21.2041H55.7581C55.5372 21.2041 55.3579 21.3833 55.3579 21.6043C55.3579 21.8252 55.5372 22.0045 55.7581 22.0045H58.1093V24.3557C58.1093 24.5767 58.2886 24.7559 58.5096 24.7559C58.7305 24.7559 58.9098 24.5767 58.9098 24.3557V22.0045H61.261C61.482 22.0045 61.6612 21.8252 61.6612 21.6043C61.6612 21.3833 61.482 21.2041 61.261 21.2041H58.9098V18.8528C58.9098 18.6319 58.7305 18.4526 58.5096 18.4526Z\",\n fill: \"#97ACDA\",\n stroke: \"#97ACDA\",\n strokeWidth: 0.651698\n})), _path28 || (_path28 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M54.6129 8.44541C54.6129 8.08278 54.9068 7.78882 55.2694 7.78882H61.8354C62.198 7.78882 62.492 8.08279 62.492 8.44541V15.0113C62.492 15.374 62.198 15.6679 61.8354 15.6679H55.2694C54.9068 15.6679 54.6129 15.374 54.6129 15.0113V8.44541Z\",\n fill: \"#FF6100\"\n})), _path29 || (_path29 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M44.4761 8.44517C44.4761 8.08254 44.7701 7.78857 45.1327 7.78857H51.6987C52.0613 7.78857 52.3553 8.08254 52.3553 8.44517V15.0111C52.3553 15.3737 52.0613 15.6677 51.6987 15.6677H45.1327C44.7701 15.6677 44.4761 15.3737 44.4761 15.0111V8.44517Z\",\n fill: \"#0099FF\"\n})), _path30 || (_path30 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M44.4756 18.5816C44.4756 18.219 44.7696 17.925 45.1322 17.925H51.6981C52.0607 17.925 52.3547 18.219 52.3547 18.5816V25.1476C52.3547 25.5102 52.0607 25.8042 51.6981 25.8042H45.1322C44.7696 25.8042 44.4756 25.5102 44.4756 25.1476V18.5816Z\",\n fill: \"#FFB629\"\n})), _rect2 || (_rect2 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 18.25,\n y: 41.741,\n width: 30.3839,\n height: 30.3839,\n rx: 2.75,\n fill: \"white\",\n stroke: \"#B1C3E9\",\n strokeWidth: 1.5\n})), _path31 || (_path31 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21.4027 47.9084C21.4027 46.2467 22.7498 44.8997 24.4114 44.8997H42.4639C44.1256 44.8997 45.4726 46.2467 45.4726 47.9084V65.9608C45.4726 67.6225 44.1256 68.9696 42.4639 68.9696H24.4114C22.7498 68.9696 21.4027 67.6225 21.4027 65.9608V47.9084Z\",\n fill: \"white\"\n})), _path32 || (_path32 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M38.4411 58.5681C38.2202 58.5681 38.0409 58.7474 38.0409 58.9683V61.3196H35.6897C35.4687 61.3196 35.2895 61.4988 35.2895 61.7198C35.2895 61.9407 35.4687 62.12 35.6897 62.12H38.0409V64.4712C38.0409 64.6922 38.2202 64.8714 38.4411 64.8714C38.6621 64.8714 38.8413 64.6922 38.8413 64.4712V62.12H41.1926C41.4135 62.12 41.5928 61.9407 41.5928 61.7198C41.5928 61.4988 41.4135 61.3196 41.1926 61.3196H38.8413V58.9683C38.8413 58.7474 38.6621 58.5681 38.4411 58.5681Z\",\n fill: \"#97ACDA\",\n stroke: \"#97ACDA\",\n strokeWidth: 0.651698\n})), _path33 || (_path33 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M34.5474 48.5628C34.5474 48.2002 34.8413 47.9062 35.204 47.9062H41.7699C42.1325 47.9062 42.4265 48.2002 42.4265 48.5628V55.1288C42.4265 55.4914 42.1325 55.7854 41.7699 55.7854H35.204C34.8413 55.7854 34.5474 55.4914 34.5474 55.1288V48.5628Z\",\n fill: \"#FF6100\"\n})), _path34 || (_path34 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.4124 48.5643C24.4124 48.2017 24.7064 47.9077 25.069 47.9077H31.6349C31.9976 47.9077 32.2915 48.2017 32.2915 48.5643V55.1302C32.2915 55.4929 31.9976 55.7868 31.6349 55.7868H25.069C24.7064 55.7868 24.4124 55.4929 24.4124 55.1302V48.5643Z\",\n fill: \"#0099FF\"\n})), _path35 || (_path35 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.4072 58.6971C24.4072 58.3345 24.7011 58.0405 25.0638 58.0405H31.6297C31.9923 58.0405 32.2863 58.3345 32.2863 58.6971V65.2631C32.2863 65.6257 31.9923 65.9196 31.6297 65.9196H25.0638C24.7011 65.9196 24.4072 65.6257 24.4072 65.2631V58.6971Z\",\n fill: \"#FFB629\"\n})), _rect3 || (_rect3 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 57.567,\n y: 41.741,\n width: 30.3839,\n height: 30.3839,\n rx: 2.75,\n fill: \"white\",\n stroke: \"#B1C3E9\",\n strokeWidth: 1.5\n})), _path36 || (_path36 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M60.7231 47.9084C60.7231 46.2467 62.0702 44.8997 63.7319 44.8997H81.7843C83.446 44.8997 84.793 46.2467 84.793 47.9084V65.9608C84.793 67.6225 83.446 68.9696 81.7843 68.9696H63.7319C62.0702 68.9696 60.7231 67.6225 60.7231 65.9608V47.9084Z\",\n fill: \"white\"\n})), _path37 || (_path37 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M77.7713 58.5681C77.5503 58.5681 77.3711 58.7474 77.3711 58.9683V61.3196H75.0198C74.7989 61.3196 74.6196 61.4988 74.6196 61.7198C74.6196 61.9407 74.7989 62.12 75.0198 62.12H77.3711V64.4712C77.3711 64.6922 77.5503 64.8714 77.7713 64.8714C77.9922 64.8714 78.1715 64.6922 78.1715 64.4712V62.12H80.5227C80.7437 62.12 80.9229 61.9407 80.9229 61.7198C80.9229 61.4988 80.7437 61.3196 80.5227 61.3196H78.1715V58.9683C78.1715 58.7474 77.9922 58.5681 77.7713 58.5681Z\",\n fill: \"#97ACDA\",\n stroke: \"#97ACDA\",\n strokeWidth: 0.651698\n})), _path38 || (_path38 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M73.8698 48.5628C73.8698 48.2002 74.1637 47.9062 74.5263 47.9062H81.0923C81.4549 47.9062 81.7489 48.2002 81.7489 48.5628V55.1288C81.7489 55.4914 81.4549 55.7854 81.0923 55.7854H74.5263C74.1637 55.7854 73.8698 55.4914 73.8698 55.1288V48.5628Z\",\n fill: \"#FF6100\"\n})), _path39 || (_path39 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M63.7274 48.5641C63.7274 48.2014 64.0213 47.9075 64.3839 47.9075H70.9499C71.3125 47.9075 71.6065 48.2014 71.6065 48.5641V55.13C71.6065 55.4926 71.3125 55.7866 70.9499 55.7866H64.3839C64.0213 55.7866 63.7274 55.4926 63.7274 55.13V48.5641Z\",\n fill: \"#0099FF\"\n})), _path40 || (_path40 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M63.7277 58.6971C63.7277 58.3345 64.0216 58.0405 64.3843 58.0405H70.9502C71.3128 58.0405 71.6068 58.3345 71.6068 58.6971V65.2631C71.6068 65.6257 71.3128 65.9196 70.9502 65.9196H64.3843C64.0216 65.9196 63.7277 65.6257 63.7277 65.2631V58.6971Z\",\n fill: \"#FFB629\"\n})), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint0_linear\",\n x1: 160,\n y1: 122.375,\n x2: 148.271,\n y2: 68.4249,\n gradientUnits: \"userSpaceOnUse\"\n}, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#F4F5FE\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"white\"\n})))));\nexport default SvgNoAppsIcon;","var _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _g, _path9, _path10, _path11, _path12, _g2, _path13, _path14, _path15, _path16, _path17, _path18, _path19, _g3, _path20, _path21, _path22, _path23, _g4, _path24, _path25, _path26, _path27, _path28, _path29, _path30, _path31, _path32, _path33, _path34, _path35, _path36, _path37, _path38, _path39, _path40, _g5, _path41, _path42, _path43, _path44, _path45, _path46, _path47, _path48, _circle, _path49, _path50, _path51, _path52, _path53, _path54, _path55, _rect, _path56, _path57, _path58, _path59, _path60, _path61, _path62, _path63, _path64, _rect2, _path65, _rect3, _path66, _path67, _path68, _path69, _path70, _path71, _path72, _path73, _path74, _rect4, _path75, _rect5, _path76, _path77, _path78, _path79, _path80, _path81, _path82, _path83, _path84, _rect6, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgNoTablesIcon = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 201 138\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3 93.8117C3 70.1793 22.1578 51.0215 45.7902 51.0215H158.115C181.747 51.0215 200.905 70.1793 200.905 93.8117C200.905 117.444 181.747 136.602 158.115 136.602H45.7902C22.1578 136.602 3 117.444 3 93.8117Z\",\n fill: \"#E6E6F5\"\n})), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask0_614:19850\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 3,\n y: 51,\n width: 198,\n height: 86\n}, _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3 93.8117C3 70.1793 22.1578 51.0215 45.7902 51.0215H158.115C181.747 51.0215 200.905 70.1793 200.905 93.8117C200.905 117.444 181.747 136.602 158.115 136.602H45.7902C22.1578 136.602 3 117.444 3 93.8117Z\",\n fill: \"#E6E6F5\"\n}))), /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask0_614:19850)\"\n}, _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M118.336 74.2989C109.901 84.9367 103 91.7964 97.6306 94.8779C89.5769 99.5003 88.9877 94.6432 59.4901 74.1333C57.439 73.2719 55.7754 73.0424 52.9956 76.1335C51.3335 77.9819 47.7598 78.4681 42.2746 77.5923L42.2746 77.5923C41.7245 77.5045 41.2053 77.879 41.115 78.4289C41.0701 78.7024 41.1397 78.9817 41.3074 79.2015C42.6577 80.9705 44.994 81.9348 48.3164 82.0946C54.9089 82.4114 55.6163 79.9382 59.326 82.8524C63.0356 85.7666 82.9102 109.066 94.8962 109.644C106.882 110.223 122.63 92.4168 127.085 91.0447C130.055 90.1299 132.477 82.9037 134.353 69.3659L118.336 74.2989Z\",\n fill: \"#CD7448\"\n})), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M61.9543 86.4313C65.224 83.3086 67.2069 80.585 67.903 78.2603C82.5311 89.1899 90.8103 94.3555 92.7407 93.757C95.3874 92.9364 116.744 73.7383 124.165 69.1965C124.839 68.524 124.886 74.2737 125.422 73.6545L123.015 95.9693C114.348 102.171 108.826 105.992 106.45 107.432C102.884 109.592 93.5281 113.547 85.0782 106.677C79.4449 102.097 71.7369 95.3485 61.9543 86.4313Z\",\n fill: \"#F4F5FE\"\n})), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M113.638 110.924C114.986 115.621 114.986 121.514 113.638 132.25L163.179 125.016L160.146 84.7527C158.124 78.0421 155.765 73.3448 153.069 70.6605C149.025 66.6342 127.793 68.6474 122.737 70.6605C117.682 72.6737 116.671 81.7329 111.616 89.7856C106.561 97.8382 111.616 103.878 113.638 110.924Z\",\n fill: \"white\"\n})), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M144.981 68.5294C142.959 84.9993 137.277 93.2343 127.934 93.2343C113.92 93.2343 117.206 85.8622 118.961 82.4055C120.131 80.101 121.417 75.9995 122.82 70.1008C127.641 68.5622 131.321 67.7028 133.86 67.5228C136.398 67.3429 140.105 67.6784 144.981 68.5294Z\",\n fill: \"#CD7448\"\n})), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask1_614:19850\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 54,\n y: -5,\n width: 110,\n height: 94\n}, _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M54.2891 -4.25H163.642V88.4622H54.2891V-4.25Z\",\n fill: \"#C4C4C4\"\n}))), /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask1_614:19850)\"\n}, /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask2_614:19850\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 109,\n y: 68,\n width: 59,\n height: 92\n}, _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M113.638 134.916C114.986 124.179 114.986 115.621 113.638 110.924C111.616 103.878 106.561 97.8382 111.616 89.7856C116.671 81.7329 117.682 72.6737 122.737 70.6605C127.793 68.6474 149.025 66.6342 153.069 70.6605C155.765 73.3448 158.124 78.0421 160.146 84.7527L163.179 125.016C167.898 143.134 168.572 154.207 165.201 158.233C160.146 164.273 158.124 148.167 135.881 139.108C131.163 137.095 123.748 136.258 113.638 134.916Z\",\n fill: \"white\"\n}))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask2_614:19850)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M113.638 134.914C114.986 124.178 114.986 116.46 113.638 111.763C111.616 104.717 106.561 98.6775 111.616 90.6248C116.671 82.5722 117.398 72.8022 122.454 70.789C127.509 68.7758 148.286 65.8747 152.33 69.901C155.026 72.5852 158.124 78.8814 160.146 85.5919V99.2016L163.179 125.855C167.898 143.974 168.572 155.046 165.201 159.072C160.146 165.112 158.124 149.007 135.881 139.947C131.163 137.934 123.748 136.257 113.638 134.914Z\",\n fill: \"white\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M144.981 68.5294C142.959 84.9993 137.277 93.2343 127.934 93.2343C113.92 93.2343 117.206 85.8622 118.961 82.4055C120.131 80.101 121.417 75.9995 122.82 70.1008C127.641 68.5622 131.321 67.7028 133.86 67.5228C136.398 67.3429 140.105 67.6784 144.981 68.5294Z\",\n fill: \"#CD7448\"\n}))), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M116.82 29.6916C113.43 44.1264 112.279 45.8229 111.018 48.9936C110.705 49.7797 110.867 50.6788 111.456 51.287C116.256 56.2417 122.676 57.7896 130.717 55.9306C139.283 53.9503 139.242 50.9745 133.934 26.7936L116.82 29.6916Z\",\n fill: \"#0A1551\"\n})), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M139.285 50.3741C137.625 63.347 143.19 67.8978 145.1 67.9302C147.009 67.9626 139.698 75.9534 126.067 88.7393C121.606 80.1413 121.107 72.4732 122.5 70.2493C124.59 66.9136 126.529 69.7672 125.813 58.0883C125.343 50.4165 135.544 51.1457 142.81 49.9004C139.285 50.3741 133.529 50.4924 139.285 50.3741Z\",\n fill: \"#CD7448\"\n})), _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.677232,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M125.313 52.9009C126.105 60.1282 126.082 64.1141 126 64.7502C125.878 65.7043 143.282 64.8984 138.312 49.5774C133.342 34.2565 131.68 51.3826 125.313 52.9009Z\",\n fill: \"#BD5826\"\n})), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask3_614:19850\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 116,\n y: 20,\n width: 38,\n height: 44\n}, _path12 || (_path12 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M148.092 53.4241C143.516 59.5375 137.135 62.8924 128.949 63.4886C120.636 64.0941 115.086 53.2544 116.156 42.1253C116.667 36.8153 117.843 32.1282 122.518 27.2985C132.169 17.3303 141.236 18.6468 149.718 31.2478L153.38 41.0199L148.092 53.4241Z\",\n fill: \"white\"\n}))), _g2 || (_g2 = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask3_614:19850)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M146.966 52.5514C141.857 58.2281 135.197 60.9957 126.988 60.8545C118.652 60.711 114.101 49.4191 116.171 38.4335C117.159 33.1919 118.753 28.6304 123.847 24.241C134.36 15.1816 143.273 17.3065 150.587 30.6155L153.353 40.6748L146.966 52.5514Z\",\n fill: \"#CD7448\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.422879,\n d: \"M134.771 52.7648C132.076 52.3482 130.129 50.5128 130.423 48.6651C130.718 46.8175 133.141 45.6574 135.836 46.0739C138.532 46.4905 140.478 48.3259 140.184 50.1735C139.89 52.0212 137.466 53.1813 134.771 52.7648Z\",\n fill: \"#A44616\"\n}))), _path13 || (_path13 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M128.579 52.3527C126.46 53.2577 123.96 52.7908 121.079 50.9518C122.435 54.8036 123.976 56.5563 125.702 56.2099C127.428 55.8636 128.387 54.5778 128.579 52.3527Z\",\n fill: \"#A5330A\"\n})), _path14 || (_path14 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M129.938 34.837C122.116 33.5383 118.933 32.9326 116.227 30.7899C116.384 20.7306 124.661 14.8095 128.497 13.9133C137.368 11.7498 146.999 14.4563 152.91 22.24C153.496 23.0117 153.986 23.8016 154.389 24.6046C154.621 24.9784 154.85 25.3966 155.077 25.8614C158.776 36.5185 160.722 52.0678 159.667 57.8279C156.71 61.6292 132.978 62.4489 135.95 57.6848C136.116 57.4189 136.301 57.1432 136.498 56.8498C137.894 54.7702 139.885 51.8038 139.866 45.1401C139.862 43.5264 139.396 41.6388 138.87 39.5103C138.692 38.7907 138.507 38.0435 138.332 37.2701C137.913 37.1239 137.514 36.9851 137.135 36.8532C135.443 36.2654 134.149 35.8154 133.345 35.4671C132.465 35.0859 133.304 32.5431 133.907 30.7177C134.433 29.1236 134.778 28.0765 133.641 29.4936C132.176 31.3189 131.616 32.7473 131.341 33.867C131.184 34.5038 130.585 34.9444 129.938 34.837Z\",\n fill: \"#0A1551\"\n})), _path15 || (_path15 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M118.165 135.11C123.494 132.113 147.433 138.846 165.674 132.164C175.674 128.501 168.022 107.165 163.852 89.2747C161.213 79.3725 156.845 72.8099 152.863 70.3825L144.201 76.7565L146.406 88.6293C146.406 88.6293 145.036 92.9399 147.923 100.772C150.811 108.604 155.298 118.451 155.298 118.451L112.373 127.456C112.528 131.007 113.902 137.508 118.165 135.11Z\",\n fill: \"white\"\n}))), _path16 || (_path16 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M123.877 133.654C121.784 135.32 120.779 135.373 118.278 137.295C116.265 138.259 114.779 138.673 110.412 137.369C107.792 136.587 104.091 136.387 99.3082 136.768L99.3082 136.768C98.7516 136.813 98.2652 136.399 98.2217 135.845C98.2055 135.638 98.2538 135.432 98.3599 135.253C99.5754 133.208 101.943 132.012 105.463 131.662C112.043 131.01 112.862 133.44 116.441 130.344C118.827 128.28 121.306 129.383 123.877 133.654Z\",\n fill: \"#CD7448\"\n})), _path17 || (_path17 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M119.883 137.122C130.5 136.251 149.152 140.857 167.392 134.176C177.393 130.512 169.74 109.177 165.57 91.2864C162.932 81.3842 158.564 74.8216 154.582 72.3942L145.92 78.7682L148.125 90.641C148.125 90.641 146.755 94.9516 149.642 102.783C152.529 110.615 157.017 120.463 157.017 120.463L114.092 129.468C114.246 133.018 113 136.751 119.883 137.122Z\",\n fill: \"url(#paint0_linear_614:19850)\"\n}))), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask4_614:19850\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 99,\n y: 10,\n width: 64,\n height: 79\n}, _path18 || (_path18 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M99 10.75H163V88.75H99V10.75Z\",\n fill: \"#C4C4C4\"\n}))), /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask4_614:19850)\"\n}, /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask5_614:19850\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 109,\n y: 68,\n width: 59,\n height: 92\n}, _path19 || (_path19 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M113.349 134.916C114.697 124.179 114.697 115.621 113.349 110.924C111.327 103.878 106.272 97.8382 111.327 89.7856C116.382 81.7329 117.393 72.6737 122.448 70.6605C127.504 68.6474 148.736 66.6342 152.78 70.6605C155.476 73.3448 157.835 78.0421 159.857 84.7527L162.89 125.016C167.609 143.134 168.283 154.207 164.912 158.233C159.857 164.273 157.835 148.167 135.592 139.108C130.874 137.095 123.459 136.258 113.349 134.916Z\",\n fill: \"white\"\n}))), _g3 || (_g3 = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask5_614:19850)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M113.349 134.914C114.697 124.178 114.697 116.46 113.349 111.763C111.327 104.717 106.272 98.6775 111.327 90.6248C116.382 82.5722 117.109 72.8022 122.165 70.789C127.22 68.7758 147.997 65.8747 152.041 69.901C154.737 72.5852 157.835 78.8814 159.857 85.5919V99.2016L162.89 125.855C167.609 143.974 168.283 155.046 164.912 159.072C159.857 165.112 157.835 149.007 135.592 139.947C130.874 137.934 123.459 136.257 113.349 134.914Z\",\n fill: \"white\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M144.692 68.5294C142.67 84.9993 136.988 93.2343 127.645 93.2343C113.631 93.2343 116.917 85.8622 118.672 82.4055C119.842 80.101 121.128 75.9995 122.531 70.1008C127.352 68.5622 131.032 67.7028 133.571 67.5228C136.109 67.3429 139.816 67.6784 144.692 68.5294Z\",\n fill: \"#CD7448\"\n}))), _path20 || (_path20 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M116.531 29.6916C113.141 44.1264 111.989 45.8229 110.729 48.9936C110.416 49.7797 110.578 50.6788 111.167 51.287C115.967 56.2417 122.387 57.7896 130.428 55.9306C138.994 53.9503 138.953 50.9745 133.645 26.7936L116.531 29.6916Z\",\n fill: \"#0A1551\"\n})), _path21 || (_path21 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M138.996 50.3741C137.335 63.347 142.901 67.8978 144.811 67.9302C146.72 67.9626 139.409 75.9534 125.778 88.7393C121.317 80.1413 120.818 72.4732 122.211 70.2493C124.301 66.9136 126.24 69.7672 125.524 58.0883C125.054 50.4165 135.255 51.1457 142.521 49.9004C138.996 50.3741 133.24 50.4924 138.996 50.3741Z\",\n fill: \"#CD7448\"\n})), _path22 || (_path22 = /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.677232,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M125.024 52.9009C125.816 60.1282 125.793 64.1141 125.711 64.7502C125.589 65.7043 142.993 64.8984 138.023 49.5774C133.053 34.2565 131.391 51.3826 125.024 52.9009Z\",\n fill: \"#BD5826\"\n})), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask6_614:19850\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 115,\n y: 20,\n width: 39,\n height: 44\n}, _path23 || (_path23 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M147.803 53.4241C143.227 59.5375 136.846 62.8924 128.66 63.4886C120.347 64.0941 114.797 53.2544 115.867 42.1253C116.377 36.8153 117.553 32.1282 122.229 27.2985C131.88 17.3303 140.947 18.6468 149.429 31.2478L153.091 41.0199L147.803 53.4241Z\",\n fill: \"white\"\n}))), _g4 || (_g4 = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask6_614:19850)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M146.677 52.5514C141.567 58.2281 134.908 60.9957 126.699 60.8545C118.363 60.711 113.812 49.4191 115.882 38.4335C116.87 33.1919 118.464 28.6304 123.558 24.241C134.071 15.1816 142.984 17.3065 150.298 30.6155L153.064 40.6748L146.677 52.5514Z\",\n fill: \"#CD7448\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M131.904 37.2051C133.107 37.7927 133.959 38.7351 134.387 39.4446C134.557 39.7257 134.466 40.091 134.185 40.2605C133.905 40.4299 133.539 40.3394 133.37 40.0583C133.041 39.5143 132.35 38.7455 131.383 38.2731C130.438 37.8114 129.218 37.6245 127.756 38.2297C127.453 38.3553 127.106 38.2112 126.98 37.9079C126.854 37.6046 126.998 37.257 127.301 37.1314C129.103 36.385 130.679 36.6068 131.904 37.2051Z\",\n fill: \"#37120C\",\n fillOpacity: 0.25\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M120.443 35.2316C119.482 35.1784 118.689 35.5359 118.177 35.9473C117.922 36.153 117.882 36.527 118.088 36.7828C118.294 37.0386 118.668 37.0792 118.923 36.8735C119.242 36.6174 119.753 36.3838 120.379 36.4184C120.994 36.4524 121.794 36.7494 122.692 37.6869C122.919 37.9241 123.295 37.9326 123.532 37.7058C123.769 37.479 123.777 37.1028 123.55 36.8655C122.487 35.755 121.416 35.2854 120.443 35.2316Z\",\n fill: \"#37120C\",\n fillOpacity: 0.25\n}), /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.422879,\n d: \"M134.482 52.7648C131.787 52.3482 129.84 50.5128 130.134 48.6651C130.428 46.8175 132.852 45.6574 135.547 46.0739C138.243 46.4905 140.189 48.3259 139.895 50.1735C139.601 52.0212 137.177 53.1813 134.482 52.7648Z\",\n fill: \"#A44616\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.422879,\n d: \"M112.964 48.3049C110.316 47.6323 108.484 45.6044 108.872 43.7757C109.26 41.9469 111.72 41.0097 114.368 41.6824C117.016 42.3551 118.848 44.3829 118.46 46.2117C118.072 48.0404 115.612 48.9776 112.964 48.3049Z\",\n fill: \"#A44616\"\n}))), _path24 || (_path24 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M128.29 52.3527C126.171 53.2577 123.671 52.7908 120.79 50.9518C122.146 54.8036 123.687 56.5563 125.413 56.2099C127.139 55.8636 128.098 54.5778 128.29 52.3527Z\",\n fill: \"#A5330A\"\n})), _path25 || (_path25 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M129.298 42.9497C128.74 42.9402 128.298 42.2692 128.311 41.4511C128.324 40.6329 128.787 39.9773 129.345 39.9868C129.903 39.9962 130.345 40.6672 130.332 41.4854C130.319 42.3035 129.856 42.9591 129.298 42.9497Z\",\n fill: \"#321907\"\n})), _path26 || (_path26 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M120.699 41.3989C120.141 41.3894 119.699 40.7185 119.712 39.9003C119.725 39.0821 120.187 38.4265 120.745 38.436C121.303 38.4454 121.745 39.1164 121.732 39.9346C121.72 40.7528 121.257 41.4084 120.699 41.3989Z\",\n fill: \"#321907\"\n})), _path27 || (_path27 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M125.715 40.3462C125.557 40.2281 125.333 40.2596 125.215 40.4167C124.233 41.7208 123.594 42.3555 122.993 42.7944C122.691 43.0152 122.392 43.1914 122.05 43.3811C121.957 43.4328 121.86 43.4857 121.759 43.5409C121.492 43.6866 121.197 43.848 120.868 44.042C119.711 44.7227 119.542 46.2908 120.066 47.4543C120.337 48.0542 120.802 48.5891 121.46 48.8962C122.121 49.2048 122.943 49.2677 123.894 48.9804C124.082 48.9234 124.189 48.7247 124.131 48.5366C124.073 48.3485 123.874 48.2422 123.685 48.2992C122.876 48.5436 122.239 48.4746 121.762 48.2518C121.281 48.0273 120.929 47.6311 120.718 47.164C120.281 46.1935 120.503 45.0843 121.232 44.655C121.551 44.4672 121.831 44.3142 122.095 44.1701C122.198 44.1136 122.299 44.0585 122.399 44.0032C122.749 43.8086 123.079 43.6156 123.417 43.3687C124.096 42.8719 124.784 42.1764 125.787 40.8446C125.905 40.6875 125.873 40.4644 125.715 40.3462Z\",\n fill: \"#8A3110\"\n})), _path28 || (_path28 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M129.649 34.837C121.827 33.5383 118.644 32.9326 115.938 30.7899C116.095 20.7306 124.372 14.8095 128.208 13.9133C137.079 11.7498 146.71 14.4563 152.621 22.24C153.207 23.0117 153.697 23.8016 154.1 24.6046C154.332 24.9784 154.561 25.3966 154.788 25.8614C158.487 36.5185 160.433 52.0678 159.378 57.8279C156.421 61.6292 132.689 62.4489 135.661 57.6848C135.827 57.4189 136.012 57.1432 136.209 56.8498C137.605 54.7702 139.596 51.8038 139.577 45.1401C139.573 43.5264 139.106 41.6388 138.581 39.5103C138.403 38.7907 138.218 38.0435 138.043 37.2701C137.624 37.1239 137.225 36.9851 136.846 36.8532C135.154 36.2654 133.859 35.8154 133.056 35.4671C132.176 35.0859 133.015 32.5431 133.618 30.7177C134.144 29.1236 134.489 28.0765 133.352 29.4936C131.887 31.3189 131.327 32.7473 131.052 33.867C130.895 34.5038 130.296 34.9444 129.649 34.837Z\",\n fill: \"#0A1551\"\n})), _path29 || (_path29 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M117.876 135.11C123.204 132.113 147.144 138.846 165.384 132.164C175.385 128.501 167.732 107.165 163.563 89.2747C160.924 79.3725 156.556 72.8099 152.574 70.3825L143.912 76.7565L146.117 88.6293C146.117 88.6293 144.747 92.9399 147.634 100.772C150.522 108.604 155.009 118.451 155.009 118.451L112.084 127.456C112.239 131.007 113.612 137.508 117.876 135.11Z\",\n fill: \"white\"\n}))), _path30 || (_path30 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0 94.4348C0 70.8024 19.1578 51.6445 42.7902 51.6445H155.115C178.747 51.6445 197.905 70.8024 197.905 94.4348C197.905 118.067 178.747 137.225 155.115 137.225H42.7902C19.1578 137.225 0 118.067 0 94.4348Z\",\n fill: \"#E6E6F5\"\n})), _path31 || (_path31 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M65.837 81.9592C64.5359 80.8456 63.022 80.0079 61.3875 79.4968C59.7529 78.9858 58.0318 78.8122 56.3281 78.9865L51.2598 76.694C50.8843 76.5178 50.4597 76.4753 50.0567 76.5736C49.6537 76.6718 49.2967 76.9049 49.0444 77.234C48.9237 77.4075 48.8395 77.6037 48.7969 77.8106C48.7543 78.0176 48.7539 78.231 48.7963 78.438C48.8386 78.645 48.9226 78.8413 49.043 79.015C49.1634 79.1886 49.3178 79.336 49.4969 79.4482L52.2516 81.2906L51.0773 81.1933C49.2314 81.0459 47.4788 80.3203 46.0691 79.1196L42.1557 75.7349C41.9286 75.5451 41.6574 75.4154 41.3671 75.3579C41.0767 75.3004 40.7766 75.317 40.4943 75.4059C40.2444 75.4669 40.0146 75.5918 39.8277 75.7684C39.6407 75.945 39.5032 76.1672 39.428 76.4131C39.3529 76.6591 39.3429 76.9203 39.3992 77.1712C39.4554 77.4222 39.5758 77.6541 39.7488 77.8444L44.3203 82.8871C45.2213 83.8663 46.3099 84.6544 47.5215 85.2045C48.733 85.7547 50.0428 86.0557 51.3729 86.0897L66.0279 86.5405L65.837 81.9592Z\",\n fill: \"#EFBB9D\"\n})), _path32 || (_path32 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M114.82 31.3168C111.43 45.7517 107.561 80.2673 106.301 83.438C105.988 84.2241 106.15 85.1232 106.739 85.7314C111.538 90.6861 117.959 92.234 126 90.375C134.565 88.3947 137.243 52.5997 131.934 28.4188L114.82 31.3168Z\",\n fill: \"#091141\"\n})), _path33 || (_path33 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M59.9562 88.0544C63.226 84.9317 65.2089 82.208 65.9049 79.8834C80.533 90.813 88.8123 95.9785 90.7426 95.38C93.3894 94.5594 114.746 75.3614 122.167 70.8196C122.841 70.147 122.888 75.8967 123.424 75.2776L121.017 97.5923C112.35 103.794 106.828 107.615 104.451 109.055C100.886 111.215 91.53 115.17 83.0801 108.3C77.4469 103.72 69.7389 96.9715 59.9562 88.0544Z\",\n fill: \"#F4F5FE\"\n})), _path34 || (_path34 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M110.592 112.816C111.715 117.572 113.858 121.714 112 132.376C122.036 134.193 128.883 131.142 133.5 133.376L151 125.376L163.5 119.876L157.645 102.462L158.292 88.868C156.591 82.0696 153.796 75.6344 151.231 72.8261C147.382 68.6135 126.491 70.5315 121.346 72.3039C116.2 74.0764 115.009 83.8012 109.577 91.6064C104.144 99.4116 108.907 105.683 110.592 112.816Z\",\n fill: \"white\"\n})), _path35 || (_path35 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M142.981 70.1544C140.959 86.6243 135.277 94.8593 125.934 94.8593C111.92 94.8593 115.206 87.4872 116.961 84.0305C118.131 81.726 119.417 77.6245 120.82 71.7258C125.641 70.1872 129.321 69.3278 131.86 69.1478C134.398 68.9679 138.105 69.3034 142.981 70.1544Z\",\n fill: \"#EFBB9D\"\n})), _path36 || (_path36 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M122.004 47.5359C121.452 47.6172 120.906 47.0268 120.785 46.2173C120.664 45.4078 121.013 44.6856 121.565 44.6043C122.117 44.523 122.663 45.1133 122.784 45.9228C122.905 46.7324 122.556 47.4546 122.004 47.5359Z\",\n fill: \"#321907\"\n})), _path37 || (_path37 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M114.453 47.403C113.901 47.4844 113.355 46.894 113.234 46.0845C113.113 45.275 113.462 44.5528 114.014 44.4715C114.566 44.3901 115.112 44.9805 115.233 45.79C115.354 46.5995 115.005 47.3217 114.453 47.403Z\",\n fill: \"#321907\"\n})), _path38 || (_path38 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M137.285 52.0003C135.625 64.9731 141.59 69.8431 143.5 69.8755C145.409 69.9079 137.698 77.5795 124.067 90.3655C119.606 81.7674 119.107 74.0993 120.5 71.8755C122.59 68.5397 124.529 71.3934 123.813 59.7145C123.343 52.0426 133.544 52.7719 140.811 51.5265C137.285 52.0003 131.529 52.1186 137.285 52.0003Z\",\n fill: \"#EFBB9D\"\n})), _path39 || (_path39 = /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.677232,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M123.313 54.5259C124.105 61.7532 124.082 65.7391 124 66.3752C123.878 67.3293 141.282 66.5234 136.312 51.2024C131.342 35.8815 129.68 53.0076 123.313 54.5259Z\",\n fill: \"#DC9F7E\"\n})), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask7_614:19850\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 114,\n y: 22,\n width: 38,\n height: 44\n}, _path40 || (_path40 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M146.092 55.0491C141.516 61.1625 135.135 64.5174 126.949 65.1136C118.636 65.7191 113.086 54.8794 114.156 43.7503C114.667 38.4403 115.843 33.7532 120.518 28.9235C130.169 18.9553 139.236 20.2718 147.718 32.8728L151.38 42.6449L146.092 55.0491Z\",\n fill: \"white\"\n}))), _g5 || (_g5 = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask7_614:19850)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M144.966 54.1764C139.857 59.8531 133.197 62.6207 124.988 62.4795C116.652 62.336 112.101 51.0441 114.171 40.0585C115.159 34.8169 116.753 30.2554 121.847 25.866C132.36 16.8066 141.273 18.9315 148.587 32.2405L151.353 42.2998L144.966 54.1764Z\",\n fill: \"#EFBB9D\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M132.771 54.3898C130.076 53.9732 128.129 52.1378 128.423 50.2901C128.718 48.4425 131.141 47.2824 133.836 47.6989C136.532 48.1155 138.478 49.9509 138.184 51.7985C137.89 53.6462 135.466 54.8063 132.771 54.3898Z\",\n fill: \"#EFA77F\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M111.253 49.9299C108.605 49.2573 106.773 47.2294 107.161 45.4007C107.549 43.5719 110.009 42.6347 112.657 43.3074C115.305 43.9801 117.137 46.0079 116.749 47.8367C116.361 49.6654 113.901 50.6026 111.253 49.9299Z\",\n fill: \"#EFA77F\"\n}))), _path41 || (_path41 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M126.024 53.9406C123.906 54.8456 121.406 54.3786 118.524 52.5397C119.88 56.3915 121.422 58.1442 123.148 57.7978C124.874 57.4515 125.833 56.1657 126.024 53.9406Z\",\n fill: \"#A5330A\"\n})), _path42 || (_path42 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M127.587 44.5747C127.029 44.5652 126.587 43.8942 126.6 43.0761C126.613 42.2579 127.076 41.6023 127.634 41.6118C128.192 41.6212 128.634 42.2922 128.621 43.1104C128.608 43.9285 128.145 44.5841 127.587 44.5747Z\",\n fill: \"#0A1551\"\n})), _path43 || (_path43 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M118.988 43.0239C118.43 43.0144 117.988 42.3435 118.001 41.5253C118.014 40.7071 118.476 40.0515 119.035 40.061C119.593 40.0704 120.034 40.7414 120.022 41.5596C120.009 42.3778 119.546 43.0334 118.988 43.0239Z\",\n fill: \"#0A1551\"\n})), _path44 || (_path44 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M142.981 70.1544C140.959 86.6243 135.277 94.8593 125.934 94.8593C111.92 94.8593 115.206 87.4872 116.961 84.0305C118.131 81.726 119.417 77.6245 120.82 71.7258C125.641 70.1872 129.321 69.3278 131.86 69.1478C134.398 68.9679 138.105 69.3034 142.981 70.1544Z\",\n fill: \"#EFBB9D\"\n})), _path45 || (_path45 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M142.201 78.3815L144.406 90.2543C144.406 90.2543 143.036 94.5649 145.923 102.397C148.811 110.229 153.298 120.076 153.298 120.076L163.674 133.789C173.674 130.126 166.022 108.79 161.852 90.8997C159.213 80.9975 154.845 74.4349 150.863 72.0075L142.201 78.3815Z\",\n fill: \"white\"\n})), _path46 || (_path46 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M144.23 81.3875L146.435 93.2604C146.435 93.2604 145.065 97.571 147.952 105.403C150.84 113.235 155.327 123.082 155.327 123.082L164.499 135.374C174.499 131.711 168.05 111.797 163.881 93.9058C161.242 84.0035 156.874 77.4409 152.892 75.0135L144.23 81.3875Z\",\n fill: \"url(#paint1_linear_614:19850)\"\n})), _path47 || (_path47 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M142.501 69.375C131.301 71.775 125.167 70.0417 123.501 68.875C122.701 69.275 120.834 71.375 120 72.375C118.5 76.0417 115.201 84.075 114.001 86.875C112.501 90.375 115.001 92.375 118.501 96.375C122.001 100.375 133.001 96.875 137.001 95.875C140.201 95.075 144.001 78.5417 145.501 70.375C143.501 69.975 142.667 69.5417 142.501 69.375Z\",\n fill: \"white\"\n})), _path48 || (_path48 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M127.938 36.462C120.116 35.1633 116.933 34.5576 114.227 32.4149C114.384 22.3556 122.661 16.4345 126.497 15.5383C135.368 13.3748 144.999 16.0813 150.91 23.865C151.496 24.6367 151.986 25.4266 152.389 26.2296C152.621 26.6034 152.85 27.0216 153.077 27.4864C156.776 38.1435 156.679 78.257 155.623 84.0171C152.666 87.8184 128.935 88.6381 131.907 83.874C132.073 83.6081 132.258 83.3324 132.455 83.039C133.85 80.9594 137.885 53.4288 137.866 46.7651C137.862 45.1514 137.396 43.2638 136.87 41.1353C136.692 40.4157 136.507 39.6685 136.332 38.8951C135.913 38.7489 135.514 38.6101 135.135 38.4782C133.443 37.8904 132.149 37.4404 131.345 37.0921C130.465 36.7109 131.304 34.1681 131.907 32.3427C132.433 30.7486 132.778 29.7015 131.641 31.1186C130.176 32.9439 129.616 34.3723 129.341 35.492C129.184 36.1288 128.585 36.5694 127.938 36.462Z\",\n fill: \"#091141\"\n})), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 145.5,\n cy: 16.875,\n r: 9.5,\n fill: \"#091141\"\n})), _path49 || (_path49 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M129.897 38.4111C129.897 38.4111 126.839 37.5696 126.481 38.8692C126.481 38.8692 126.241 39.7411 129.025 40.4416C131.81 41.1422 132.489 41.0659 132.888 40.2713C133.288 39.4766 131.379 38.7038 129.897 38.4111Z\",\n fill: \"#091141\"\n})), _path50 || (_path50 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M118.797 36.4602C118.797 36.4602 121.442 36.6162 121.438 37.9085C121.438 37.9085 121.428 38.7739 119.107 38.5703C116.785 38.3667 116.107 37.9467 116.011 37.2345C115.916 36.5223 117.552 36.2713 118.797 36.4602Z\",\n fill: \"#091141\"\n})), _path51 || (_path51 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M121.942 45.389L121 48.2849L122.873 48.7786\",\n stroke: \"#D97D4A\",\n strokeWidth: 0.919783,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n})), _path52 || (_path52 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M124.604 130.031L132.629 129.412L132.384 137.438H125.434L124.604 130.031Z\",\n fill: \"#EFBB9D\"\n})), _path53 || (_path53 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M126.861 129.813L127.262 131.419L128.065 137.438H108C108.401 133.425 114.019 129.412 118.032 129.412C121.243 129.412 126.058 129.68 126.861 129.813Z\",\n fill: \"#EFBB9D\"\n})), _path54 || (_path54 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M161.399 122.431L130 123.372L132 137.375L162 136.875C163.085 136.729 164.344 136.671 165.256 136.065C166.256 135.4 167.941 134.131 168.495 133.187C169.05 132.242 169.382 131.184 169.467 130.092C169.551 129.001 169.387 127.904 168.985 126.886C168.388 125.411 167.321 124.174 165.949 123.369C164.578 122.563 162.978 122.233 161.399 122.431Z\",\n fill: \"#F4F6FF\"\n})), _path55 || (_path55 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M41.134 31.2582C39.5049 31.2582 39.0603 30.8194 39.0601 29.1831C39.058 14.5092 39.0582 19.091 39.06 4.41714C39.0601 2.85541 39.5295 2.37824 41.1004 2.37789C55.7861 2.37404 51.2159 2.37404 65.9015 2.37789C67.4504 2.37824 67.9399 2.87413 67.9402 4.42922C67.943 19.1031 67.9429 14.5213 67.9406 29.1952C67.9403 30.8131 67.4816 31.258 65.8476 31.2582C58.5049 31.2591 60.7899 31.2586 53.4472 31.2586C46.1335 31.2586 48.4477 31.2591 41.134 31.2582ZM65.3567 29.1956C65.6453 29.1956 65.8792 28.9617 65.8792 28.6731V23.0464C65.8792 22.7579 65.6453 22.5239 65.3567 22.5239H59.73C59.4415 22.5239 59.2075 22.7579 59.2075 23.0464V28.6731C59.2075 28.9617 59.4415 29.1956 59.73 29.1956H65.3567ZM50.6871 29.1956H56.3138C56.6024 29.1956 56.8363 28.9617 56.8363 28.6731V23.0464C56.8363 22.7579 56.6024 22.5239 56.3138 22.5239H50.6871C50.3985 22.5239 50.1646 22.7579 50.1646 23.0464V28.6731C50.1646 28.9617 50.3985 29.1956 50.6871 29.1956ZM41.6442 29.1956H47.2709C47.5594 29.1956 47.7934 28.9617 47.7934 28.6731V23.0464C47.7934 22.7579 47.5594 22.5239 47.2709 22.5239H41.6442C41.3556 22.5239 41.1217 22.7579 41.1217 23.0464V28.6731C41.1217 28.9617 41.3556 29.1956 41.6442 29.1956ZM59.73 20.1527H65.3567C65.6453 20.1527 65.8792 19.9188 65.8792 19.6302V14.0035C65.8792 13.715 65.6453 13.481 65.3567 13.481H59.73C59.4415 13.481 59.2075 13.715 59.2075 14.0035V19.6302C59.2075 19.9188 59.4415 20.1527 59.73 20.1527ZM50.6871 20.1527H56.3138C56.6024 20.1527 56.8363 19.9188 56.8363 19.6302V14.0035C56.8363 13.715 56.6024 13.481 56.3138 13.481H50.6871C50.3985 13.481 50.1646 13.715 50.1646 14.0035V19.6302C50.1646 19.9188 50.3985 20.1527 50.6871 20.1527ZM41.6442 20.1527H47.2709C47.5594 20.1527 47.7934 19.9188 47.7934 19.6302V14.0035C47.7934 13.715 47.5594 13.481 47.2709 13.481H41.6442C41.3556 13.481 41.1217 13.715 41.1217 14.0035V19.6302C41.1217 19.9188 41.3556 20.1527 41.6442 20.1527ZM50.6871 11.1098H56.3138C56.6024 11.1098 56.8363 10.9685 56.8363 10.7942V7.396C56.8363 7.22172 56.6024 7.08045 56.3138 7.08045H50.6871C50.3985 7.08045 50.1646 7.22172 50.1646 7.396V10.7942C50.1646 10.9685 50.3985 11.1098 50.6871 11.1098ZM59.7133 11.1098H65.34C65.6285 11.1098 65.8625 10.9685 65.8625 10.7942V7.396C65.8625 7.22172 65.6285 7.08045 65.34 7.08045H59.7133C59.4247 7.08045 59.1908 7.22172 59.1908 7.396V10.7942C59.1908 10.9685 59.4247 11.1098 59.7133 11.1098ZM41.6442 11.1098H47.2709C47.5594 11.1098 47.7934 10.9685 47.7934 10.7942V7.396C47.7934 7.22172 47.5594 7.08045 47.2709 7.08045H41.6442C41.3556 7.08045 41.1217 7.22172 41.1217 7.396V10.7942C41.1217 10.9685 41.3556 11.1098 41.6442 11.1098Z\",\n fill: \"white\"\n})), _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n x: 40.6641,\n y: 4.78125,\n width: 25.6744,\n height: 24.8721,\n fill: \"white\"\n})), _path56 || (_path56 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M59.1172 7.38672C59.1172 6.83443 59.5649 6.38672 60.1172 6.38672H64.8629C65.4152 6.38672 65.8629 6.83443 65.8629 7.38672V10.2007C65.8629 10.753 65.4152 11.2007 64.8629 11.2007H60.1172C59.5649 11.2007 59.1172 10.753 59.1172 10.2007V7.38672Z\",\n fill: \"#0D953B\"\n})), _path57 || (_path57 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M59.1172 14.6074C59.1172 14.0551 59.5649 13.6074 60.1172 13.6074H64.5358C65.0881 13.6074 65.5358 14.0551 65.5358 14.6074V19.026C65.5358 19.5783 65.0881 20.026 64.5358 20.026H60.1172C59.5649 20.026 59.1172 19.5783 59.1172 19.026V14.6074Z\",\n fill: \"#FFB629\"\n})), _path58 || (_path58 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M59.1172 23.4336C59.1172 22.8813 59.5649 22.4336 60.1172 22.4336H64.5358C65.0881 22.4336 65.5358 22.8813 65.5358 23.4336V27.8522C65.5358 28.4045 65.0881 28.8522 64.5358 28.8522H60.1172C59.5649 28.8522 59.1172 28.4045 59.1172 27.8522V23.4336Z\",\n fill: \"#FFB629\"\n})), _path59 || (_path59 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M50.166 7.38672C50.166 6.83443 50.6137 6.38672 51.166 6.38672H56.0378C56.59 6.38672 57.0378 6.83443 57.0378 7.38672V10.2007C57.0378 10.753 56.59 11.2007 56.0378 11.2007H51.166C50.6137 11.2007 50.166 10.753 50.166 10.2007V7.38672Z\",\n fill: \"#0D953B\"\n})), _path60 || (_path60 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M50.2929 14.6074C50.2929 14.0551 50.7407 13.6074 51.2929 13.6074H55.7116C56.2639 13.6074 56.7116 14.0551 56.7116 14.6074V19.026C56.7116 19.5783 56.2639 20.026 55.7116 20.026H51.2929C50.7407 20.026 50.2929 19.5783 50.2929 19.026V14.6074Z\",\n fill: \"#FF6100\"\n})), _path61 || (_path61 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M50.2929 23.4336C50.2929 22.8813 50.7407 22.4336 51.2929 22.4336H55.7116C56.2639 22.4336 56.7116 22.8813 56.7116 23.4336V27.8522C56.7116 28.4045 56.2639 28.8522 55.7116 28.8522H51.2929C50.7407 28.8522 50.2929 28.4045 50.2929 27.8522V23.4336Z\",\n fill: \"#FF6100\"\n})), _path62 || (_path62 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M41.0645 7.38672C41.0645 6.83443 41.5122 6.38672 42.0645 6.38672H46.8842C47.4365 6.38672 47.8842 6.83443 47.8842 7.38672V10.2007C47.8842 10.753 47.4365 11.2007 46.8842 11.2007H42.0645C41.5122 11.2007 41.0645 10.753 41.0645 10.2007V7.38672Z\",\n fill: \"#0D953B\"\n})), _path63 || (_path63 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M41.0645 14.6074C41.0645 14.0551 41.5122 13.6074 42.0645 13.6074H46.8842C47.4365 13.6074 47.8842 14.0551 47.8842 14.6074V19.026C47.8842 19.5783 47.4365 20.026 46.8842 20.026H42.0645C41.5122 20.026 41.0645 19.5783 41.0645 19.026V16.8167V14.6074Z\",\n fill: \"#0099FF\"\n})), _path64 || (_path64 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M41.0645 23.4336C41.0645 22.8813 41.5122 22.4336 42.0645 22.4336H46.8842C47.4365 22.4336 47.8842 22.8813 47.8842 23.4336V27.8522C47.8842 28.4045 47.4365 28.8522 46.8842 28.8522H42.0645C41.5122 28.8522 41.0645 28.4045 41.0645 27.8522V25.6429V23.4336Z\",\n fill: \"#0099FF\"\n})), _rect2 || (_rect2 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 38.3086,\n y: 1.625,\n width: 30.3837,\n height: 30.3837,\n rx: 2.75,\n stroke: \"#B1C3E9\",\n strokeWidth: 1.5\n})), _path65 || (_path65 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21.0754 71.3754C19.4463 71.3754 19.0017 70.9366 19.0015 69.3003C18.9994 54.6264 18.9996 59.2082 19.0014 44.5343C19.0015 42.9726 19.4709 42.4954 21.0418 42.4951C35.7275 42.4912 31.1573 42.4912 45.8429 42.4951C47.3918 42.4954 47.8813 42.9913 47.8816 44.5464C47.8844 59.2203 47.8843 54.6385 47.882 69.3124C47.8817 70.9303 47.4231 71.3752 45.789 71.3754C38.4463 71.3763 40.7313 71.3758 33.3886 71.3758C26.0749 71.3758 28.3891 71.3763 21.0754 71.3754ZM45.2981 69.3128C45.5867 69.3128 45.8206 69.0789 45.8206 68.7903V63.1636C45.8206 62.8751 45.5867 62.6411 45.2981 62.6411H39.6714C39.3829 62.6411 39.1489 62.8751 39.1489 63.1636V68.7903C39.1489 69.0789 39.3829 69.3128 39.6714 69.3128H45.2981ZM30.6285 69.3128H36.2552C36.5438 69.3128 36.7777 69.0789 36.7777 68.7903V63.1636C36.7777 62.8751 36.5438 62.6411 36.2552 62.6411H30.6285C30.3399 62.6411 30.106 62.8751 30.106 63.1636V68.7903C30.106 69.0789 30.3399 69.3128 30.6285 69.3128ZM21.5856 69.3128H27.2123C27.5008 69.3128 27.7348 69.0789 27.7348 68.7903V63.1636C27.7348 62.8751 27.5008 62.6411 27.2123 62.6411H21.5856C21.297 62.6411 21.0631 62.8751 21.0631 63.1636V68.7903C21.0631 69.0789 21.297 69.3128 21.5856 69.3128ZM39.6714 60.2699H45.2981C45.5867 60.2699 45.8206 60.036 45.8206 59.7474V54.1207C45.8206 53.8321 45.5867 53.5982 45.2981 53.5982H39.6714C39.3829 53.5982 39.1489 53.8321 39.1489 54.1207V59.7474C39.1489 60.036 39.3829 60.2699 39.6714 60.2699ZM30.6285 60.2699H36.2552C36.5438 60.2699 36.7777 60.036 36.7777 59.7474V54.1207C36.7777 53.8321 36.5438 53.5982 36.2552 53.5982H30.6285C30.3399 53.5982 30.106 53.8321 30.106 54.1207V59.7474C30.106 60.036 30.3399 60.2699 30.6285 60.2699ZM21.5856 60.2699H27.2123C27.5008 60.2699 27.7348 60.036 27.7348 59.7474V54.1207C27.7348 53.8321 27.5008 53.5982 27.2123 53.5982H21.5856C21.297 53.5982 21.0631 53.8321 21.0631 54.1207V59.7474C21.0631 60.036 21.297 60.2699 21.5856 60.2699ZM30.6285 51.227H36.2552C36.5438 51.227 36.7777 51.0857 36.7777 50.9114V47.5132C36.7777 47.3389 36.5438 47.1976 36.2552 47.1976H30.6285C30.3399 47.1976 30.106 47.3389 30.106 47.5132V50.9114C30.106 51.0857 30.3399 51.227 30.6285 51.227ZM39.6547 51.227H45.2814C45.5699 51.227 45.8039 51.0857 45.8039 50.9114V47.5132C45.8039 47.3389 45.5699 47.1976 45.2814 47.1976H39.6547C39.3661 47.1976 39.1322 47.3389 39.1322 47.5132V50.9114C39.1322 51.0857 39.3661 51.227 39.6547 51.227ZM21.5856 51.227H27.2123C27.5008 51.227 27.7348 51.0857 27.7348 50.9114V47.5132C27.7348 47.3389 27.5008 47.1976 27.2123 47.1976H21.5856C21.297 47.1976 21.0631 47.3389 21.0631 47.5132V50.9114C21.0631 51.0857 21.297 51.227 21.5856 51.227Z\",\n fill: \"white\"\n})), _rect3 || (_rect3 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 20.6055,\n y: 44.8984,\n width: 25.6744,\n height: 24.8721,\n fill: \"white\"\n})), _path66 || (_path66 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M39.0586 47.5039C39.0586 46.9516 39.5063 46.5039 40.0586 46.5039H44.8043C45.3566 46.5039 45.8043 46.9516 45.8043 47.5039V50.3179C45.8043 50.8701 45.3566 51.3179 44.8043 51.3179H40.0586C39.5063 51.3179 39.0586 50.8701 39.0586 50.3179V47.5039Z\",\n fill: \"#0D953B\"\n})), _path67 || (_path67 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M39.0586 54.7246C39.0586 54.1723 39.5063 53.7246 40.0586 53.7246H44.4772C45.0295 53.7246 45.4772 54.1723 45.4772 54.7246V59.1432C45.4772 59.6955 45.0295 60.1432 44.4772 60.1432H40.0586C39.5063 60.1432 39.0586 59.6955 39.0586 59.1432V54.7246Z\",\n fill: \"#FFB629\"\n})), _path68 || (_path68 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M39.0586 63.5508C39.0586 62.9985 39.5063 62.5508 40.0586 62.5508H44.4772C45.0295 62.5508 45.4772 62.9985 45.4772 63.5508V67.9694C45.4772 68.5217 45.0295 68.9694 44.4772 68.9694H40.0586C39.5063 68.9694 39.0586 68.5217 39.0586 67.9694V63.5508Z\",\n fill: \"#FFB629\"\n})), _path69 || (_path69 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M30.1074 47.5039C30.1074 46.9516 30.5551 46.5039 31.1074 46.5039H35.9792C36.5314 46.5039 36.9792 46.9516 36.9792 47.5039V50.3179C36.9792 50.8701 36.5315 51.3179 35.9792 51.3179H31.1074C30.5551 51.3179 30.1074 50.8701 30.1074 50.3179V47.5039Z\",\n fill: \"#0D953B\"\n})), _path70 || (_path70 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M30.2324 54.7246C30.2324 54.1723 30.6801 53.7246 31.2324 53.7246H35.651C36.2033 53.7246 36.651 54.1723 36.651 54.7246V59.1432C36.651 59.6955 36.2033 60.1432 35.651 60.1432H31.2324C30.6801 60.1432 30.2324 59.6955 30.2324 59.1432V54.7246Z\",\n fill: \"#FF6100\"\n})), _path71 || (_path71 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M30.2324 63.5508C30.2324 62.9985 30.6801 62.5508 31.2324 62.5508H35.651C36.2033 62.5508 36.651 62.9985 36.651 63.5508V67.9694C36.651 68.5217 36.2033 68.9694 35.651 68.9694H31.2324C30.6801 68.9694 30.2324 68.5217 30.2324 67.9694V63.5508Z\",\n fill: \"#FF6100\"\n})), _path72 || (_path72 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21.0059 47.5039C21.0059 46.9516 21.4536 46.5039 22.0059 46.5039H26.8256C27.3779 46.5039 27.8256 46.9516 27.8256 47.5039V50.3179C27.8256 50.8701 27.3779 51.3179 26.8256 51.3179H22.0059C21.4536 51.3179 21.0059 50.8701 21.0059 50.3179V47.5039Z\",\n fill: \"#0D953B\"\n})), _path73 || (_path73 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21.0059 54.7246C21.0059 54.1723 21.4536 53.7246 22.0059 53.7246H26.8256C27.3779 53.7246 27.8256 54.1723 27.8256 54.7246V59.1432C27.8256 59.6955 27.3779 60.1432 26.8256 60.1432H22.0059C21.4536 60.1432 21.0059 59.6955 21.0059 59.1432V56.9339V54.7246Z\",\n fill: \"#0099FF\"\n})), _path74 || (_path74 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21.0059 63.5508C21.0059 62.9985 21.4536 62.5508 22.0059 62.5508H26.8256C27.3779 62.5508 27.8256 62.9985 27.8256 63.5508V67.9694C27.8256 68.5217 27.3779 68.9694 26.8256 68.9694H22.0059C21.4536 68.9694 21.0059 68.5217 21.0059 67.9694V65.7601V63.5508Z\",\n fill: \"#0099FF\"\n})), _rect4 || (_rect4 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 18.25,\n y: 41.7422,\n width: 30.3837,\n height: 30.3837,\n rx: 2.75,\n stroke: \"#B1C3E9\",\n strokeWidth: 1.5\n})), _path75 || (_path75 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M60.3898 71.3754C58.7607 71.3754 58.3162 70.9366 58.316 69.3003C58.3139 54.6264 58.3141 59.2082 58.3158 44.5343C58.316 42.9726 58.7854 42.4954 60.3563 42.4951C75.0419 42.4912 70.4717 42.4912 85.1574 42.4951C86.7062 42.4954 87.1957 42.9913 87.1961 44.5464C87.1989 59.2203 87.1987 54.6385 87.1965 69.3124C87.1961 70.9303 86.7375 71.3752 85.1035 71.3754C77.7608 71.3763 80.0458 71.3758 72.703 71.3758C65.3893 71.3758 67.7035 71.3763 60.3898 71.3754ZM84.6126 69.3128C84.9011 69.3128 85.1351 69.0789 85.1351 68.7903V63.1636C85.1351 62.8751 84.9011 62.6411 84.6126 62.6411H78.9859C78.6973 62.6411 78.4634 62.8751 78.4634 63.1636V68.7903C78.4634 69.0789 78.6973 69.3128 78.9859 69.3128H84.6126ZM69.943 69.3128H75.5697C75.8582 69.3128 76.0921 69.0789 76.0921 68.7903V63.1636C76.0921 62.8751 75.8582 62.6411 75.5697 62.6411H69.943C69.6544 62.6411 69.4205 62.8751 69.4205 63.1636V68.7903C69.4205 69.0789 69.6544 69.3128 69.943 69.3128ZM60.9 69.3128H66.5267C66.8153 69.3128 67.0492 69.0789 67.0492 68.7903V63.1636C67.0492 62.8751 66.8153 62.6411 66.5267 62.6411H60.9C60.6115 62.6411 60.3776 62.8751 60.3776 63.1636V68.7903C60.3776 69.0789 60.6115 69.3128 60.9 69.3128ZM78.9859 60.2699H84.6126C84.9011 60.2699 85.1351 60.036 85.1351 59.7474V54.1207C85.1351 53.8321 84.9011 53.5982 84.6126 53.5982H78.9859C78.6973 53.5982 78.4634 53.8321 78.4634 54.1207V59.7474C78.4634 60.036 78.6973 60.2699 78.9859 60.2699ZM69.943 60.2699H75.5697C75.8582 60.2699 76.0921 60.036 76.0921 59.7474V54.1207C76.0921 53.8321 75.8582 53.5982 75.5697 53.5982H69.943C69.6544 53.5982 69.4205 53.8321 69.4205 54.1207V59.7474C69.4205 60.036 69.6544 60.2699 69.943 60.2699ZM60.9 60.2699H66.5267C66.8153 60.2699 67.0492 60.036 67.0492 59.7474V54.1207C67.0492 53.8321 66.8153 53.5982 66.5267 53.5982H60.9C60.6115 53.5982 60.3776 53.8321 60.3776 54.1207V59.7474C60.3776 60.036 60.6115 60.2699 60.9 60.2699ZM69.943 51.227H75.5697C75.8582 51.227 76.0921 51.0857 76.0921 50.9114V47.5132C76.0921 47.3389 75.8582 47.1976 75.5697 47.1976H69.943C69.6544 47.1976 69.4205 47.3389 69.4205 47.5132V50.9114C69.4205 51.0857 69.6544 51.227 69.943 51.227ZM78.9691 51.227H84.5958C84.8844 51.227 85.1183 51.0857 85.1183 50.9114V47.5132C85.1183 47.3389 84.8844 47.1976 84.5958 47.1976H78.9691C78.6806 47.1976 78.4466 47.3389 78.4466 47.5132V50.9114C78.4466 51.0857 78.6806 51.227 78.9691 51.227ZM60.9 51.227H66.5267C66.8153 51.227 67.0492 51.0857 67.0492 50.9114V47.5132C67.0492 47.3389 66.8153 47.1976 66.5267 47.1976H60.9C60.6115 47.1976 60.3776 47.3389 60.3776 47.5132V50.9114C60.3776 51.0857 60.6115 51.227 60.9 51.227Z\",\n fill: \"white\"\n})), _rect5 || (_rect5 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 59.9199,\n y: 44.8984,\n width: 25.6744,\n height: 24.8721,\n fill: \"white\"\n})), _path76 || (_path76 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M78.373 47.5039C78.373 46.9516 78.8208 46.5039 79.373 46.5039H84.1188C84.6711 46.5039 85.1188 46.9516 85.1188 47.5039V50.3179C85.1188 50.8701 84.6711 51.3179 84.1188 51.3179H79.373C78.8208 51.3179 78.373 50.8701 78.373 50.3179V47.5039Z\",\n fill: \"#0D953B\"\n})), _path77 || (_path77 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M78.373 54.7246C78.373 54.1723 78.8208 53.7246 79.373 53.7246H83.7917C84.3439 53.7246 84.7917 54.1723 84.7917 54.7246V59.1432C84.7917 59.6955 84.3439 60.1432 83.7917 60.1432H79.373C78.8208 60.1432 78.373 59.6955 78.373 59.1432V54.7246Z\",\n fill: \"#FFB629\"\n})), _path78 || (_path78 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M78.373 63.5508C78.373 62.9985 78.8208 62.5508 79.373 62.5508H83.7917C84.3439 62.5508 84.7917 62.9985 84.7917 63.5508V67.9694C84.7917 68.5217 84.3439 68.9694 83.7917 68.9694H79.373C78.8208 68.9694 78.373 68.5217 78.373 67.9694V63.5508Z\",\n fill: \"#FFB629\"\n})), _path79 || (_path79 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M69.4218 47.5039C69.4218 46.9516 69.8696 46.5039 70.4218 46.5039H75.2936C75.8459 46.5039 76.2936 46.9516 76.2936 47.5039V50.3179C76.2936 50.8701 75.8459 51.3179 75.2936 51.3179H70.4218C69.8696 51.3179 69.4218 50.8701 69.4218 50.3179V47.5039Z\",\n fill: \"#0D953B\"\n})), _path80 || (_path80 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M69.5469 54.7246C69.5469 54.1723 69.9946 53.7246 70.5469 53.7246H74.9655C75.5178 53.7246 75.9655 54.1723 75.9655 54.7246V59.1432C75.9655 59.6955 75.5178 60.1432 74.9655 60.1432H70.5469C69.9946 60.1432 69.5469 59.6955 69.5469 59.1432V54.7246Z\",\n fill: \"#FF6100\"\n})), _path81 || (_path81 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M69.5469 63.5508C69.5469 62.9985 69.9946 62.5508 70.5469 62.5508H74.9655C75.5178 62.5508 75.9655 62.9985 75.9655 63.5508V67.9694C75.9655 68.5217 75.5178 68.9694 74.9655 68.9694H70.5469C69.9946 68.9694 69.5469 68.5217 69.5469 67.9694V63.5508Z\",\n fill: \"#FF6100\"\n})), _path82 || (_path82 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M60.3203 47.5039C60.3203 46.9516 60.768 46.5039 61.3203 46.5039H66.1401C66.6924 46.5039 67.1401 46.9516 67.1401 47.5039V50.3179C67.1401 50.8701 66.6924 51.3179 66.1401 51.3179H61.3203C60.768 51.3179 60.3203 50.8701 60.3203 50.3179V47.5039Z\",\n fill: \"#0D953B\"\n})), _path83 || (_path83 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M60.3203 54.7246C60.3203 54.1723 60.768 53.7246 61.3203 53.7246H66.1401C66.6924 53.7246 67.1401 54.1723 67.1401 54.7246V59.1432C67.1401 59.6955 66.6924 60.1432 66.1401 60.1432H61.3203C60.768 60.1432 60.3203 59.6955 60.3203 59.1432V56.9339V54.7246Z\",\n fill: \"#0099FF\"\n})), _path84 || (_path84 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M60.3203 63.5508C60.3203 62.9985 60.768 62.5508 61.3203 62.5508H66.1401C66.6924 62.5508 67.1401 62.9985 67.1401 63.5508V67.9694C67.1401 68.5217 66.6924 68.9694 66.1401 68.9694H61.3203C60.768 68.9694 60.3203 68.5217 60.3203 67.9694V65.7601V63.5508Z\",\n fill: \"#0099FF\"\n})), _rect6 || (_rect6 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 57.5645,\n y: 41.7422,\n width: 30.3837,\n height: 30.3837,\n rx: 2.75,\n stroke: \"#B1C3E9\",\n strokeWidth: 1.5\n})), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint0_linear_614:19850\",\n x1: 155.19,\n y1: 90.2549,\n x2: 152.764,\n y2: 107.265,\n gradientUnits: \"userSpaceOnUse\"\n}, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"white\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#F3F5FE\"\n})), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint1_linear_614:19850\",\n x1: 159.999,\n y1: 122.374,\n x2: 148.27,\n y2: 68.4241,\n gradientUnits: \"userSpaceOnUse\"\n}, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#F4F5FE\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"white\"\n})))));\nexport default SvgNoTablesIcon;","var _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _path9, _path10, _path11, _path12, _path13, _path14, _path15, _path16, _path17, _path18, _path19, _path20, _path21, _path22, _path23, _path24, _path25, _circle, _path26, _path27, _path28, _path29, _path30, _path31, _path32, _path33, _path34, _path35, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgNoReportsIcon = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 198 145\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0 101.437C0 77.8043 19.1578 58.6465 42.7902 58.6465H155.115C178.747 58.6465 197.905 77.8043 197.905 101.437C197.905 125.069 178.747 144.227 155.115 144.227H42.7902C19.1578 144.227 0 125.069 0 101.437Z\",\n fill: \"#E6E6F5\"\n})), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M36.9316 5.17167C36.9316 2.52254 39.0792 0.375 41.7283 0.375H64.5125C67.1616 0.375 69.3092 2.52254 69.3092 5.17167V33.9517C69.3092 36.6008 67.1616 38.7483 64.5125 38.7483H41.7283C39.0792 38.7483 36.9316 36.6008 36.9316 33.9517V5.17167Z\",\n fill: \"white\"\n})), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M64.5125 1.57417H41.7283C39.7415 1.57417 38.1308 3.18482 38.1308 5.17167V33.9517C38.1308 35.9385 39.7415 37.5492 41.7283 37.5492H64.5125C66.4993 37.5492 68.11 35.9385 68.11 33.9517V5.17167C68.11 3.18482 66.4993 1.57417 64.5125 1.57417ZM41.7283 0.375C39.0792 0.375 36.9316 2.52254 36.9316 5.17167V33.9517C36.9316 36.6008 39.0792 38.7483 41.7283 38.7483H64.5125C67.1616 38.7483 69.3092 36.6008 69.3092 33.9517V5.17167C69.3092 2.52254 67.1616 0.375 64.5125 0.375H41.7283Z\",\n fill: \"#D3DCEF\"\n})), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M42.3809 10.3907C42.3809 9.67225 42.9633 9.08984 43.6817 9.08984H46.2834C47.0018 9.08984 47.5842 9.67225 47.5842 10.3907V29.9032H42.3809V10.3907Z\",\n fill: \"#0099FF\"\n})), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M50.3672 16.2442C50.3672 15.5258 50.9496 14.9434 51.668 14.9434H54.2697C54.9881 14.9434 55.5705 15.5258 55.5705 16.2442V29.9029H50.3672V16.2442Z\",\n fill: \"#FF6100\"\n})), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M58.3555 11.0411C58.3555 10.3226 58.9379 9.74023 59.6563 9.74023H62.258C62.9764 9.74023 63.5588 10.3226 63.5588 11.0411V29.9031H58.3555V11.0411Z\",\n fill: \"#FFB629\"\n})), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16 46.7986C16 44.1495 18.1475 42.002 20.7967 42.002H43.5808C46.23 42.002 48.3775 44.1495 48.3775 46.7986V75.5786C48.3775 78.2278 46.23 80.3753 43.5808 80.3753H20.7967C18.1475 80.3753 16 78.2278 16 75.5786V46.7986Z\",\n fill: \"white\"\n})), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M43.5808 43.2011H20.7967C18.8098 43.2011 17.1992 44.8118 17.1992 46.7986V75.5786C17.1992 77.5655 18.8098 79.1761 20.7967 79.1761H43.5808C45.5677 79.1761 47.1783 77.5655 47.1783 75.5786V46.7986C47.1783 44.8118 45.5677 43.2011 43.5808 43.2011ZM20.7967 42.002C18.1475 42.002 16 44.1495 16 46.7986V75.5786C16 78.2278 18.1475 80.3753 20.7967 80.3753H43.5808C46.23 80.3753 48.3775 78.2278 48.3775 75.5786V46.7986C48.3775 44.1495 46.23 42.002 43.5808 42.002H20.7967Z\",\n fill: \"#D3DCEF\"\n})), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21.4492 52.0176C21.4492 51.2992 22.0316 50.7168 22.7501 50.7168H25.3517C26.0701 50.7168 26.6526 51.2992 26.6526 52.0176V71.5301H21.4492V52.0176Z\",\n fill: \"#0099FF\"\n})), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M29.4375 57.8711C29.4375 57.1527 30.0199 56.5703 30.7383 56.5703H33.34C34.0584 56.5703 34.6408 57.1527 34.6408 57.8711V71.5299H29.4375V57.8711Z\",\n fill: \"#FF6100\"\n})), _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M37.4238 52.668C37.4238 51.9496 38.0062 51.3672 38.7247 51.3672H41.3263C42.0448 51.3672 42.6272 51.9496 42.6272 52.668V71.5301H37.4238V52.668Z\",\n fill: \"#FFB629\"\n})), _path12 || (_path12 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M56.7949 46.7986C56.7949 44.1495 58.9425 42.002 61.5916 42.002H84.3758C87.0249 42.002 89.1724 44.1495 89.1724 46.7986V75.5786C89.1724 78.2278 87.0249 80.3753 84.3758 80.3753H61.5916C58.9425 80.3753 56.7949 78.2278 56.7949 75.5786V46.7986Z\",\n fill: \"white\"\n})), _path13 || (_path13 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M84.3758 43.2011H61.5916C59.6047 43.2011 57.9941 44.8118 57.9941 46.7986V75.5786C57.9941 77.5655 59.6047 79.1761 61.5916 79.1761H84.3758C86.3626 79.1761 87.9733 77.5655 87.9733 75.5786V46.7986C87.9733 44.8118 86.3626 43.2011 84.3758 43.2011ZM61.5916 42.002C58.9425 42.002 56.7949 44.1495 56.7949 46.7986V75.5786C56.7949 78.2278 58.9425 80.3753 61.5916 80.3753H84.3758C87.0249 80.3753 89.1724 78.2278 89.1724 75.5786V46.7986C89.1724 44.1495 87.0249 42.002 84.3758 42.002H61.5916Z\",\n fill: \"#D3DCEF\"\n})), _path14 || (_path14 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M62.2441 52.0176C62.2441 51.2992 62.8265 50.7168 63.545 50.7168H66.1466C66.8651 50.7168 67.4475 51.2992 67.4475 52.0176V71.5301H62.2441V52.0176Z\",\n fill: \"#0099FF\"\n})), _path15 || (_path15 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M70.2305 57.8711C70.2305 57.1527 70.8129 56.5703 71.5313 56.5703H74.133C74.8514 56.5703 75.4338 57.1527 75.4338 57.8711V71.5299H70.2305V57.8711Z\",\n fill: \"#FF6100\"\n})), _path16 || (_path16 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M78.2188 52.668C78.2188 51.9496 78.8012 51.3672 79.5196 51.3672H82.1212C82.8397 51.3672 83.4221 51.9496 83.4221 52.668V71.5301H78.2188V52.668Z\",\n fill: \"#FFB629\"\n})), _path17 || (_path17 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M69.0707 103.549C67.3802 102.288 65.451 101.383 63.4004 100.89C61.3498 100.397 59.2207 100.326 57.1416 100.68L50.725 98.2814C50.2491 98.096 49.7238 98.0788 49.2368 98.2327C48.7497 98.3867 48.3303 98.7025 48.0473 99.1277C47.9134 99.3508 47.8261 99.5988 47.7908 99.8566C47.7556 100.114 47.7727 100.377 47.8418 100.628C47.9108 100.878 48.0302 101.113 48.1925 101.316C48.3548 101.52 48.5566 101.688 48.7859 101.811L52.3227 103.848L50.8717 103.825C48.5914 103.796 46.3782 103.049 44.5469 101.69L39.4594 97.8537C39.1647 97.6392 38.8207 97.5022 38.4592 97.4556C38.0977 97.4089 37.7303 97.4539 37.3907 97.5865C37.0888 97.6821 36.8167 97.8545 36.6015 98.0868C36.3863 98.3192 36.2357 98.6036 36.1636 98.912C36.0916 99.2204 36.1008 99.5422 36.1907 99.8459C36.2805 100.15 36.4476 100.425 36.6758 100.644L42.7089 106.463C43.8966 107.592 45.2993 108.471 46.8333 109.047C48.3673 109.623 50.0015 109.885 51.6387 109.817L69.6831 109.163L69.0707 103.549Z\",\n fill: \"#B46458\"\n})), _path18 || (_path18 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M104.657 85.0995C96.9777 98.6859 90.622 112.979 85.6775 127.782C85.2695 129.045 85.1818 130.391 85.4228 131.696C85.6638 133.002 86.2256 134.227 87.0578 135.262C90.8717 139.967 99.4037 137.94 102.284 132.921C102.284 132.921 124.25 95.1214 123.021 93.8093C122.734 93.4872 104.657 85.0995 104.657 85.0995Z\",\n fill: \"url(#paint0_linear_614:20297)\"\n})), _path19 || (_path19 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M130.469 80.6016L107.252 83.599C106.12 83.7385 105.086 84.3132 104.37 85.2011C103.654 86.089 103.311 87.2204 103.415 88.3565L117 144.376L166.5 143.876L163.202 88.5152C163.271 87.9372 163.225 87.351 163.066 86.7908C162.908 86.2306 162.641 85.7073 162.28 85.2507C161.919 84.794 161.471 84.4129 160.963 84.1294C160.455 83.846 159.895 83.6659 159.317 83.599L130.469 80.6016Z\",\n fill: \"white\"\n})), _path20 || (_path20 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M141.807 92.865C146.99 108.7 153.141 124.174 160.225 139.195C161.363 141.548 164.678 143.119 167.236 143.372C172.995 143.957 176.35 137.968 174.947 132.473C174.947 132.473 163.026 86.1336 160.589 85.0574C160.2 84.8781 141.807 92.865 141.807 92.865Z\",\n fill: \"url(#paint1_linear_614:20297)\"\n})), _path21 || (_path21 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M121.352 68.0419L122.509 81.6648C122.906 86.4223 125.982 88.753 130.534 88.3248C134.419 87.9442 138.463 85.6922 138.003 81.4898L135.196 60.1445L121.352 68.0419Z\",\n fill: \"#B46458\"\n})), _path22 || (_path22 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M124.615 72.338C116.829 73.004 109.883 67.2163 109.105 60.6827L107.52 46.9964C106.994 43.1192 107.993 39.1899 110.306 36.0342C112.619 32.8784 116.065 30.7423 119.921 30.0757C128.009 28.807 137.016 34.3257 138.285 42.7623L139.379 53.435C139.866 57.8884 138.596 62.3563 135.839 65.887C133.081 69.4177 129.054 71.7322 124.615 72.338Z\",\n fill: \"#B46458\"\n})), _path23 || (_path23 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M134.067 46.2851C126.788 40.6554 130.451 35.8978 130.451 35.8978L135.637 33.8203C152.986 33.8203 141.885 50.6934 141.885 50.6934L139.744 57.8777C139.744 57.8777 138.048 74.2592 121.936 73.609C109.82 73.1174 109.582 62.8411 109.582 62.8411C116.496 58.0202 131.244 61.0493 131.244 61.0493C132.83 58.0521 134.067 46.2851 134.067 46.2851Z\",\n fill: \"#091141\"\n})), _path24 || (_path24 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M131.103 36.6104C123.912 37.0574 116.702 37.1154 109.504 36.7846C109.504 36.7846 101.464 33.7715 104.747 28.8555C107.379 25.0019 113.754 28.1419 113.754 28.1419C113.754 28.1419 113.643 24.1774 116.45 23.0991C119.796 21.7987 129.597 20.7519 137.938 34.0412L131.103 36.6104Z\",\n fill: \"#091141\"\n})), _path25 || (_path25 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M122.381 81.6482L118.068 82.2034C118.068 82.2034 116.149 89.3872 126.124 90.1325C136.527 90.8779 140.634 86.961 142.633 81.9021L131.183 79.6504L122.381 81.6482Z\",\n fill: \"#B46458\"\n})), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 140,\n cy: 51.375,\n r: 4,\n fill: \"#B46458\"\n})), _path26 || (_path26 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M116.782 53.5938L116.734 56.6386L118.669 56.5593\",\n stroke: \"#893B2F\",\n strokeWidth: 0.919783,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n})), _path27 || (_path27 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M112.752 51.5131C112.164 51.5031 111.698 50.7964 111.712 49.9345C111.726 49.0727 112.213 48.3821 112.801 48.3921C113.389 48.4021 113.854 49.1088 113.841 49.9707C113.827 50.8325 113.339 51.5231 112.752 51.5131Z\",\n fill: \"#0A1551\"\n})), _path28 || (_path28 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M123.752 51.5131C123.164 51.5031 122.698 50.7964 122.712 49.9345C122.726 49.0727 123.213 48.3821 123.801 48.3921C124.389 48.4021 124.854 49.1088 124.841 49.9707C124.827 50.8325 124.339 51.5231 123.752 51.5131Z\",\n fill: \"#0A1551\"\n})), _path29 || (_path29 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M124.601 44.4004C124.601 44.4004 121.43 44.4006 121.43 45.7485C121.43 45.7485 121.43 46.6529 124.3 46.5894C127.17 46.526 127.805 46.2723 127.979 45.4001C128.154 44.5279 126.108 44.2894 124.601 44.4004Z\",\n fill: \"#091141\"\n})), _path30 || (_path30 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M112.816 44.8345C112.816 44.8345 115.462 44.7005 115.599 45.9856C115.599 45.9856 115.684 46.8468 113.354 46.8982C111.023 46.9496 110.303 46.6062 110.131 45.9088C109.958 45.2113 111.557 44.7828 112.816 44.8345Z\",\n fill: \"#091141\"\n})), _path31 || (_path31 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M117 64.584L122.555 64.1706C122.555 64.1706 122.799 66.2381 119.921 66.3721C117.043 66.5061 117 64.584 117 64.584Z\",\n fill: \"white\"\n})), _path32 || (_path32 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M93.8821 119.624L67.5011 99.3745L57.7583 113.229L86.5332 135.082C87.561 135.89 88.806 136.372 90.1094 136.467C92.3382 136.604 94.5348 135.882 96.248 134.45C97.9613 133.018 99.0615 130.984 99.3224 128.766C99.5536 126.855 99.145 124.922 98.1607 123.268C97.1764 121.614 95.6719 120.332 93.8821 119.624Z\",\n fill: \"white\"\n})), _path33 || (_path33 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M117.688 135.146L127.688 134.375L127.381 144.375H118.723L117.688 135.146Z\",\n fill: \"#B46458\"\n})), _path34 || (_path34 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M120.5 134.875L121 136.875L122 144.375H97C97.5 139.375 104.5 134.375 109.5 134.375C113.5 134.375 119.5 134.708 120.5 134.875Z\",\n fill: \"#B46458\"\n})), _path35 || (_path35 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M164.171 126.923L125.049 128.096L124.5 144.375L168.5 143.875C169.852 143.693 169.1 144.016 170.236 143.261C171.372 142.505 172.322 141.501 173.012 140.324C173.703 139.148 174.117 137.829 174.223 136.469C174.328 135.109 174.123 133.743 173.623 132.473C172.879 130.636 171.55 129.095 169.84 128.092C168.131 127.088 166.138 126.677 164.171 126.923Z\",\n fill: \"#F4F6FF\"\n})), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint0_linear_614:20297\",\n x1: 96.5,\n y1: 120.875,\n x2: 156.139,\n y2: 53.9192,\n gradientUnits: \"userSpaceOnUse\"\n}, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"white\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#A1A9EE\"\n})), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint1_linear_614:20297\",\n x1: 173.499,\n y1: 142.771,\n x2: 153.836,\n y2: 84.7064,\n gradientUnits: \"userSpaceOnUse\"\n}, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.307292,\n stopColor: \"#F4F6FF\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"white\"\n})))));\nexport default SvgNoReportsIcon;","var _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _path9, _path10, _circle, _path11, _path12, _path13, _path14, _path15, _path16, _path17, _path18, _path19, _path20, _rect, _path21, _path22, _path23, _path24, _path25, _rect2, _rect3, _path26, _path27, _path28, _path29, _path30, _rect4, _rect5, _path31, _path32, _path33, _path34, _path35, _rect6, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgNoApprovalsIcon = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 198 140\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0 97.0607C0 73.4284 19.1578 54.2705 42.7902 54.2705H155.115C178.747 54.2705 197.905 73.4284 197.905 97.0607C197.905 120.693 178.747 139.851 155.115 139.851H42.7902C19.1578 139.851 0 120.693 0 97.0607Z\",\n fill: \"#E6E6F5\"\n})), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M66.0704 99.1741C64.3799 97.9131 62.4507 97.0085 60.4001 96.5154C58.3495 96.0222 56.2203 95.9509 54.1413 96.3054L47.7247 93.9064C47.2488 93.721 46.7235 93.7038 46.2364 93.8577C45.7494 94.0117 45.33 94.3275 45.047 94.7527C44.9131 94.9758 44.8258 95.2238 44.7905 95.4816C44.7553 95.7395 44.7724 96.0017 44.8414 96.2526C44.9105 96.5035 45.0299 96.7377 45.1922 96.9411C45.3545 97.1446 45.5563 97.3129 45.7856 97.436L49.3224 99.4727L47.8714 99.4501C45.5911 99.4212 43.3779 98.6741 41.5466 97.3149L36.4591 93.4787C36.1643 93.2642 35.8204 93.1272 35.4589 93.0806C35.0974 93.0339 34.73 93.0789 34.3904 93.2115C34.0885 93.3071 33.8164 93.4795 33.6012 93.7118C33.386 93.9442 33.2354 94.2286 33.1633 94.537C33.0913 94.8454 33.1005 95.1672 33.1904 95.4709C33.2802 95.7746 33.4472 96.0497 33.6755 96.2692L39.7086 102.088C40.8963 103.217 42.299 104.096 43.833 104.672C45.367 105.248 47.0012 105.51 48.6384 105.442L66.6828 104.788L66.0704 99.1741Z\",\n fill: \"#B46458\"\n})), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M101.657 80.7244C93.9774 94.3108 87.6216 108.604 82.6772 123.407C82.2691 124.67 82.1815 126.015 82.4225 127.321C82.6635 128.627 83.2253 129.852 84.0575 130.887C87.8714 135.592 96.4034 133.565 99.2834 128.546C99.2834 128.546 121.25 90.7463 120.02 89.4342C119.733 89.1121 101.657 80.7244 101.657 80.7244Z\",\n fill: \"url(#paint0_linear_2531_7001)\"\n})), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M127.468 76.2256L104.252 79.223C103.12 79.3625 102.086 79.9372 101.37 80.8251C100.654 81.713 100.311 82.8444 100.414 83.9805L114 140L163.843 139.873L160.202 84.1393C160.27 83.5612 160.224 82.975 160.066 82.4148C159.908 81.8547 159.64 81.3314 159.279 80.8747C158.919 80.418 158.471 80.0369 157.963 79.7534C157.454 79.47 156.895 79.2899 156.317 79.223L127.468 76.2256Z\",\n fill: \"white\"\n})), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M138.807 88.491C143.99 104.326 150.141 119.8 157.225 134.821C158.363 137.174 161.677 138.745 164.236 138.998C169.994 139.583 173.35 133.594 171.946 128.099C171.946 128.099 160.026 81.7595 157.588 80.6834C157.199 80.5041 138.807 88.491 138.807 88.491Z\",\n fill: \"url(#paint1_linear_2531_7001)\"\n})), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M118.351 63.666L119.509 77.2888C119.905 82.0463 122.982 84.377 127.533 83.9488C131.419 83.5682 135.462 81.3163 135.002 77.1138L132.196 55.7686L118.351 63.666Z\",\n fill: \"#B46458\"\n})), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M121.615 67.9639C113.828 68.63 106.882 62.8423 106.105 56.3087L104.519 42.6224C103.994 38.7452 104.993 34.8159 107.306 31.6601C109.619 28.5044 113.065 26.3683 116.92 25.7017C125.008 24.433 134.016 29.9517 135.285 38.3883L136.379 49.0609C136.866 53.5144 135.596 57.9822 132.838 61.513C130.081 65.0437 126.054 67.3582 121.615 67.9639Z\",\n fill: \"#B46458\"\n})), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M131.067 41.9091C123.788 36.2794 127.451 31.5219 127.451 31.5219L132.637 29.4443C149.986 29.4443 138.885 46.3174 138.885 46.3174L136.744 53.5017C136.744 53.5017 135.047 69.8832 118.935 69.233C106.819 68.7414 106.582 58.4651 106.582 58.4651C113.496 53.6442 128.244 56.6733 128.244 56.6733C129.83 53.6761 131.067 41.9091 131.067 41.9091Z\",\n fill: \"#091141\"\n})), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M128.103 32.2354C120.912 32.6824 113.701 32.7404 106.504 32.4096C106.504 32.4096 98.4636 29.3965 101.746 24.4805C104.379 20.6269 110.754 23.7669 110.754 23.7669C110.754 23.7669 110.643 19.8024 113.45 18.7241C116.796 17.4237 126.596 16.3769 134.938 29.6662L128.103 32.2354Z\",\n fill: \"#091141\"\n})), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M119.381 77.2732L115.068 77.8284C115.068 77.8284 113.149 85.0122 123.124 85.7575C133.527 86.5029 137.634 82.586 139.632 77.5271L128.183 75.2754L119.381 77.2732Z\",\n fill: \"#B46458\"\n})), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 137,\n cy: 47,\n r: 4,\n fill: \"#B46458\"\n})), _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M113.782 49.2178L113.734 52.2626L115.669 52.1833\",\n stroke: \"#893B2F\",\n strokeWidth: 0.919783,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n})), _path12 || (_path12 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M109.751 47.1391C109.164 47.1291 108.698 46.4224 108.712 45.5605C108.725 44.6987 109.213 44.0081 109.801 44.0181C110.388 44.028 110.854 44.7348 110.84 45.5966C110.827 46.4585 110.339 47.1491 109.751 47.1391Z\",\n fill: \"#0A1551\"\n})), _path13 || (_path13 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M120.751 47.1391C120.164 47.1291 119.698 46.4224 119.712 45.5605C119.725 44.6987 120.213 44.0081 120.801 44.0181C121.388 44.028 121.854 44.7348 121.84 45.5966C121.827 46.4585 121.339 47.1491 120.751 47.1391Z\",\n fill: \"#0A1551\"\n})), _path14 || (_path14 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M121.601 40.0254C121.601 40.0254 118.429 40.0256 118.429 41.3735C118.429 41.3735 118.429 42.2779 121.3 42.2144C124.17 42.151 124.804 41.8973 124.979 41.0251C125.153 40.1529 123.108 39.9144 121.601 40.0254Z\",\n fill: \"#091141\"\n})), _path15 || (_path15 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M109.815 40.4595C109.815 40.4595 112.462 40.3255 112.598 41.6106C112.598 41.6106 112.683 42.4718 110.353 42.5232C108.023 42.5746 107.303 42.2312 107.13 41.5338C106.958 40.8363 108.557 40.4078 109.815 40.4595Z\",\n fill: \"#091141\"\n})), _path16 || (_path16 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M114 60.2094L119.555 59.796C119.555 59.796 119.799 61.8636 116.921 61.9976C114.043 62.1316 114 60.2094 114 60.2094Z\",\n fill: \"white\"\n})), _path17 || (_path17 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M90.8818 115.25L64.5008 95L54.758 108.855L83.5329 130.708C84.5607 131.515 85.8057 131.997 87.1091 132.093C89.3379 132.229 91.5345 131.507 93.2477 130.075C94.961 128.643 96.0612 126.609 96.3221 124.391C96.5533 122.481 96.1447 120.547 95.1604 118.893C94.1761 117.239 92.6716 115.958 90.8818 115.25Z\",\n fill: \"white\"\n})), _path18 || (_path18 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M114.687 130.771L124.687 130L124.381 140H115.722L114.687 130.771Z\",\n fill: \"#B46458\"\n})), _path19 || (_path19 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M117.5 130.5L118 132.5L119 140H93.9998C94.4998 135 101.5 130 106.5 130C110.5 130 116.5 130.333 117.5 130.5Z\",\n fill: \"#B46458\"\n})), _path20 || (_path20 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M161.171 122.548L122.049 123.721L121.5 140L165.5 139.5C166.852 139.318 166.1 139.641 167.236 138.886C168.372 138.13 169.322 137.126 170.012 135.949C170.703 134.773 171.117 133.454 171.223 132.094C171.328 130.734 171.123 129.368 170.623 128.098C169.879 126.261 168.55 124.72 166.84 123.717C165.131 122.713 163.138 122.302 161.171 122.548Z\",\n fill: \"#F4F6FF\"\n})), _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n x: 34.5,\n y: 0.5,\n width: 29.0625,\n height: 36,\n rx: 5.28125,\n fill: \"white\",\n stroke: \"#C8CEED\"\n})), _path21 || (_path21 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M49.0309 11.1233V14.4454M49.0309 14.4454H42.4965C41.7302 14.4454 41.109 15.0666 41.109 15.8329V16.3619M49.0309 14.4454H55.3097C56.076 14.4454 56.6972 15.0666 56.6972 15.8329V16.3619\",\n stroke: \"#97ACDA\",\n strokeWidth: 1.73438\n})), _path22 || (_path22 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M49.0309 27.0568L49.0309 23.2622M49.0309 23.2622L42.4965 23.2622C41.7302 23.2622 41.109 22.641 41.109 21.8747L41.109 21.3456M49.0309 23.2622L55.3097 23.2622C56.076 23.2622 56.6972 22.641 56.6972 21.8747L56.6972 21.3456\",\n stroke: \"#97ACDA\",\n strokeWidth: 1.73438\n})), _path23 || (_path23 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M36.2537 18.7898C36.2537 17.3785 37.3978 16.2344 38.8091 16.2344H43.92C45.3313 16.2344 46.4754 17.3785 46.4754 18.7898C46.4754 20.2011 45.3313 21.3452 43.92 21.3452H38.8091C37.3978 21.3452 36.2537 20.2011 36.2537 18.7898Z\",\n fill: \"#FFB629\"\n})), _path24 || (_path24 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M51.5851 18.7898C51.5851 17.3785 52.7292 16.2344 54.1406 16.2344H59.2515C60.6628 16.2344 61.8069 17.3785 61.8069 18.7898C61.8069 20.2011 60.6628 21.3452 59.2515 21.3452H54.1406C52.7292 21.3452 51.5851 20.2011 51.5851 18.7898Z\",\n fill: \"#FFB629\"\n})), _path25 || (_path25 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M43.9205 29.6121C43.9205 28.2008 45.0646 27.0567 46.4759 27.0567H51.5868C52.9981 27.0567 54.1422 28.2008 54.1422 29.6121C54.1422 31.0234 52.9981 32.1675 51.5868 32.1675H46.4759C45.0646 32.1675 43.9205 31.0234 43.9205 29.6121Z\",\n fill: \"#0099FF\"\n})), _rect2 || (_rect2 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 43.9206,\n y: 6.01276,\n width: 10.2218,\n height: 5.11088,\n rx: 2.55544,\n fill: \"#FF6100\"\n})), _rect3 || (_rect3 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 15.5,\n y: 40.5,\n width: 29.0625,\n height: 36,\n rx: 5.28125,\n fill: \"white\",\n stroke: \"#C8CEED\"\n})), _path26 || (_path26 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M30.0309 51.1233V54.4454M30.0309 54.4454H23.4965C22.7302 54.4454 22.109 55.0666 22.109 55.8329V56.3619M30.0309 54.4454H36.3097C37.076 54.4454 37.6972 55.0666 37.6972 55.8329V56.3619\",\n stroke: \"#97ACDA\",\n strokeWidth: 1.73438\n})), _path27 || (_path27 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M30.0309 67.0568L30.0309 63.2622M30.0309 63.2622L23.4965 63.2622C22.7302 63.2622 22.109 62.641 22.109 61.8747L22.109 61.3456M30.0309 63.2622L36.3097 63.2622C37.076 63.2622 37.6972 62.641 37.6972 61.8747L37.6972 61.3456\",\n stroke: \"#97ACDA\",\n strokeWidth: 1.73438\n})), _path28 || (_path28 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.2537 58.7898C17.2537 57.3785 18.3978 56.2344 19.8091 56.2344H24.92C26.3313 56.2344 27.4754 57.3785 27.4754 58.7898C27.4754 60.2011 26.3313 61.3452 24.92 61.3452H19.8091C18.3978 61.3452 17.2537 60.2011 17.2537 58.7898Z\",\n fill: \"#FFB629\"\n})), _path29 || (_path29 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32.5851 58.7898C32.5851 57.3785 33.7292 56.2344 35.1406 56.2344H40.2515C41.6628 56.2344 42.8069 57.3785 42.8069 58.7898C42.8069 60.2011 41.6628 61.3452 40.2515 61.3452H35.1406C33.7292 61.3452 32.5851 60.2011 32.5851 58.7898Z\",\n fill: \"#FFB629\"\n})), _path30 || (_path30 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.9205 69.6121C24.9205 68.2008 26.0646 67.0567 27.4759 67.0567H32.5868C33.9981 67.0567 35.1422 68.2008 35.1422 69.6121C35.1422 71.0234 33.9981 72.1675 32.5868 72.1675H27.4759C26.0646 72.1675 24.9205 71.0234 24.9205 69.6121Z\",\n fill: \"#0099FF\"\n})), _rect4 || (_rect4 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 24.9206,\n y: 46.0128,\n width: 10.2218,\n height: 5.11088,\n rx: 2.55544,\n fill: \"#FF6100\"\n})), _rect5 || (_rect5 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 54.5,\n y: 40.5,\n width: 29.0625,\n height: 36,\n rx: 5.28125,\n fill: \"white\",\n stroke: \"#C8CEED\"\n})), _path31 || (_path31 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M69.0309 51.1233V54.4454M69.0309 54.4454H62.4965C61.7302 54.4454 61.109 55.0666 61.109 55.8329V56.3619M69.0309 54.4454H75.3097C76.076 54.4454 76.6972 55.0666 76.6972 55.8329V56.3619\",\n stroke: \"#97ACDA\",\n strokeWidth: 1.73438\n})), _path32 || (_path32 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M69.0309 67.0568L69.0309 63.2622M69.0309 63.2622L62.4965 63.2622C61.7302 63.2622 61.109 62.641 61.109 61.8747L61.109 61.3456M69.0309 63.2622L75.3097 63.2622C76.076 63.2622 76.6972 62.641 76.6972 61.8747L76.6972 61.3456\",\n stroke: \"#97ACDA\",\n strokeWidth: 1.73438\n})), _path33 || (_path33 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M56.2537 58.7898C56.2537 57.3785 57.3978 56.2344 58.8091 56.2344H63.92C65.3313 56.2344 66.4754 57.3785 66.4754 58.7898C66.4754 60.2011 65.3313 61.3452 63.92 61.3452H58.8091C57.3978 61.3452 56.2537 60.2011 56.2537 58.7898Z\",\n fill: \"#FFB629\"\n})), _path34 || (_path34 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M71.5851 58.7898C71.5851 57.3785 72.7292 56.2344 74.1406 56.2344H79.2515C80.6628 56.2344 81.8069 57.3785 81.8069 58.7898C81.8069 60.2011 80.6628 61.3452 79.2515 61.3452H74.1406C72.7292 61.3452 71.5851 60.2011 71.5851 58.7898Z\",\n fill: \"#FFB629\"\n})), _path35 || (_path35 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M63.9205 69.6121C63.9205 68.2008 65.0646 67.0567 66.4759 67.0567H71.5868C72.9981 67.0567 74.1422 68.2008 74.1422 69.6121C74.1422 71.0234 72.9981 72.1675 71.5868 72.1675H66.4759C65.0646 72.1675 63.9205 71.0234 63.9205 69.6121Z\",\n fill: \"#0099FF\"\n})), _rect6 || (_rect6 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 63.9206,\n y: 46.0128,\n width: 10.2218,\n height: 5.11088,\n rx: 2.55544,\n fill: \"#FF6100\"\n})), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint0_linear_2531_7001\",\n x1: 93.4997,\n y1: 116.5,\n x2: 153.138,\n y2: 49.5441,\n gradientUnits: \"userSpaceOnUse\"\n}, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"white\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#A1A9EE\"\n})), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint1_linear_2531_7001\",\n x1: 170.498,\n y1: 138.397,\n x2: 150.836,\n y2: 80.3324,\n gradientUnits: \"userSpaceOnUse\"\n}, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.307292,\n stopColor: \"#F4F6FF\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"white\"\n})))));\nexport default SvgNoApprovalsIcon;","var _path, _g, _g2, _g3, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _g4, _path9, _path10, _path11, _path12, _g5, _path13, _path14, _path15, _path16, _path17, _path18, _path19, _g6, _path20, _path21, _path22, _path23, _g7, _path24, _path25, _path26, _path27, _path28, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgNoSignDocumentsIcon = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 199 145\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M.284 102.074c0-23.195 19.167-42 42.81-42h112.379c23.644 0 42.811 18.805 42.811 42 0 23.196-19.167 42-42.811 42H43.095c-23.644 0-42.811-18.804-42.811-42Z\",\n fill: \"#E6E6F5\"\n})), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#a)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M38.964 35.597V9.019a4.983 4.983 0 0 1 4.984-4.983h16.267a.83.83 0 0 1 .587.243l3.91 3.91 3.909 3.909a.83.83 0 0 1 .243.587v22.912a4.983 4.983 0 0 1-4.983 4.983H43.948a4.983 4.983 0 0 1-4.984-4.983Z\",\n fill: \"#fff\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M44.778 19.218c0-1.046.848-1.893 1.894-1.893h14.485a1.894 1.894 0 0 1 0 3.787H46.672a1.894 1.894 0 0 1-1.894-1.894Z\",\n fill: \"#09F\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M44.778 25.73c0-1.046.848-1.894 1.894-1.894h14.485a1.894 1.894 0 0 1 0 3.787H46.672a1.894 1.894 0 0 1-1.894-1.893Z\",\n fill: \"#FF6100\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M49.44 32.443c0-.122-.047-.098-.116-.096-.093.002-1.836 1.086-1.836 1.086s-.762.328-.967.494c-1.192 1.15-1.592.166-1.662 0-.236-.56.079-1.068.47-1.484.203-.164 1.191-1.008 2.253-1.514.547-.26 1.016-.543 1.65-.557.25-.025.977-.098 1.44.233.346.245.378 1.144.448 1.306.129.303.228.372.228.954 0 .284-.534 1.22-.673 1.884.067-.038.567-.202.867-.3.435-.142.687-.12 1.125-.327l.342-.162c1.737-.824 4.308-1.694 5.061-1.914.22-.064 1.18-.176 1.74.22.516.366.78 1.422.78 1.422s.05.239.705 0v1.517c-.362-.109-.638-.123-.853-.281-.467-.492-.744-1.227-.964-1.163-1.481.434-2.16.996-5.484 2.143-.662.228-1.142.596-1.66.68-.725.12-1.273.24-1.85.183-.41-.041-.574-.145-.831-.396-.346-.339-.282-.702-.42-1.166-.148-.491-.32-.772-.304-1.278.015-.423.303-1.062.303-1.062s.209-.3.209-.422Z\",\n fill: \"#FFB629\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M38.964 9.019a4.983 4.983 0 0 1 4.984-4.983h17.441a.83.83 0 0 1 .588.243l6.644 6.644a.83.83 0 0 1 .243.588v24.086a4.983 4.983 0 0 1-4.983 4.983H43.948a4.983 4.983 0 0 1-4.984-4.983V9.019Zm4.984-3.322a3.322 3.322 0 0 0-3.322 3.322v26.578a3.322 3.322 0 0 0 3.322 3.322H63.88a3.322 3.322 0 0 0 3.322-3.322V12.34H63.05A2.492 2.492 0 0 1 60.56 9.85V5.697H43.948Z\",\n fill: \"#C8CEED\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M71.934 23.239a1.387 1.387 0 0 0-1.962 0l-3.55 3.55-4.532 4.532-.745 2.98a.694.694 0 0 0 .84.841l2.98-.745 4.532-4.531 3.551-3.551a1.387 1.387 0 0 0 0-1.962l-1.114-1.114Z\",\n fill: \"#0A1551\"\n}))), _g2 || (_g2 = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#b)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.03 75.463V48.886a4.983 4.983 0 0 1 4.984-4.984h16.267a.83.83 0 0 1 .588.244l3.91 3.91 3.909 3.909a.83.83 0 0 1 .243.587v22.911a4.983 4.983 0 0 1-4.983 4.984H24.014a4.983 4.983 0 0 1-4.983-4.984Z\",\n fill: \"#fff\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.845 59.085c0-1.046.848-1.894 1.893-1.894h14.485a1.894 1.894 0 1 1 0 3.787H26.738a1.894 1.894 0 0 1-1.893-1.893Z\",\n fill: \"#09F\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.845 65.596c0-1.046.848-1.893 1.893-1.893h14.485a1.894 1.894 0 1 1 0 3.787H26.738a1.894 1.894 0 0 1-1.893-1.894Z\",\n fill: \"#FF6100\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M29.507 72.31c0-.123-.047-.098-.117-.096-.093.002-1.835 1.086-1.835 1.086s-.762.328-.968.494c-1.191 1.15-1.59.166-1.66 0-.237-.56.078-1.068.469-1.485.203-.164 1.19-1.007 2.253-1.513.546-.26 1.016-.543 1.65-.557.249-.025.976-.098 1.44.232.345.245.378 1.144.447 1.307.13.302.228.372.228.954 0 .284-.534 1.22-.673 1.884.068-.038.567-.202.868-.3.435-.142.686-.12 1.125-.327l.341-.162c1.738-.825 4.309-1.694 5.062-1.914.22-.065 1.18-.176 1.739.22.517.366.781 1.421.781 1.421s.05.24.705 0v1.518c-.362-.109-.638-.124-.853-.282-.467-.491-.745-1.227-.964-1.162-1.481.434-2.16.996-5.484 2.142-.663.229-1.143.597-1.66.681-.726.12-1.274.24-1.85.183-.41-.041-.574-.145-.831-.397-.346-.338-.282-.701-.421-1.165-.147-.492-.32-.772-.303-1.278.014-.424.303-1.062.303-1.062s.208-.3.208-.423Z\",\n fill: \"#FFB629\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M19.031 48.886a4.983 4.983 0 0 1 4.983-4.984h17.442a.83.83 0 0 1 .587.244l6.645 6.644a.83.83 0 0 1 .243.587v24.086a4.983 4.983 0 0 1-4.983 4.984H24.014a4.983 4.983 0 0 1-4.983-4.984V48.886Zm4.983-3.323a3.322 3.322 0 0 0-3.322 3.323v26.577a3.322 3.322 0 0 0 3.322 3.323h19.934a3.322 3.322 0 0 0 3.322-3.323V52.209h-4.153a2.492 2.492 0 0 1-2.492-2.492v-4.153h-16.61Z\",\n fill: \"#C8CEED\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M52 63.105a1.387 1.387 0 0 0-1.961 0l-3.551 3.551-4.532 4.532-.745 2.98a.693.693 0 0 0 .841.84l2.98-.744 4.532-4.532 3.55-3.55a1.387 1.387 0 0 0 0-1.962L52 63.106Z\",\n fill: \"#0A1551\"\n}))), _g3 || (_g3 = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#c)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M58.898 75.463V48.886a4.983 4.983 0 0 1 4.983-4.984h16.267a.83.83 0 0 1 .587.244l3.91 3.91 3.91 3.909a.83.83 0 0 1 .243.587v22.911a4.983 4.983 0 0 1-4.984 4.984H63.881a4.983 4.983 0 0 1-4.983-4.984Z\",\n fill: \"#fff\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M64.711 59.085c0-1.046.848-1.894 1.894-1.894H81.09a1.894 1.894 0 1 1 0 3.787H66.605a1.894 1.894 0 0 1-1.894-1.893Z\",\n fill: \"#09F\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M64.711 65.596c0-1.046.848-1.893 1.894-1.893H81.09a1.894 1.894 0 1 1 0 3.787H66.605a1.894 1.894 0 0 1-1.894-1.894Z\",\n fill: \"#FF6100\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M69.374 72.31c0-.123-.047-.098-.117-.096-.093.002-1.836 1.086-1.836 1.086s-.762.328-.967.494c-1.191 1.15-1.591.166-1.661 0-.236-.56.078-1.068.47-1.485.203-.164 1.19-1.007 2.252-1.513.547-.26 1.017-.543 1.65-.557.25-.025.977-.098 1.441.232.345.245.378 1.144.447 1.307.13.302.228.372.228.954 0 .284-.534 1.22-.673 1.884.068-.038.567-.202.868-.3.435-.142.686-.12 1.124-.327l.342-.162c1.737-.825 4.309-1.694 5.061-1.914.221-.065 1.181-.176 1.74.22.516.366.78 1.421.78 1.421s.05.24.705 0v1.518c-.361-.109-.637-.124-.852-.282-.467-.491-.745-1.227-.964-1.162-1.482.434-2.161.996-5.484 2.142-.663.229-1.143.597-1.66.681-.726.12-1.274.24-1.85.183-.41-.041-.575-.145-.832-.397-.346-.338-.281-.701-.42-1.165-.148-.492-.32-.772-.303-1.278.014-.424.303-1.062.303-1.062s.208-.3.208-.423Z\",\n fill: \"#FFB629\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M58.898 48.886a4.983 4.983 0 0 1 4.983-4.984h17.442a.83.83 0 0 1 .587.244l6.644 6.644a.83.83 0 0 1 .244.587v24.086a4.983 4.983 0 0 1-4.984 4.984H63.881a4.983 4.983 0 0 1-4.983-4.984V48.886Zm4.983-3.323a3.322 3.322 0 0 0-3.322 3.323v26.577a3.322 3.322 0 0 0 3.322 3.323h19.933a3.322 3.322 0 0 0 3.323-3.323V52.209h-4.153a2.492 2.492 0 0 1-2.492-2.492v-4.153H63.881Z\",\n fill: \"#C8CEED\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M91.867 63.105a1.387 1.387 0 0 0-1.961 0l-3.551 3.551-4.532 4.532-.745 2.98a.693.693 0 0 0 .841.84l2.98-.744 4.531-4.532 3.551-3.55a1.387 1.387 0 0 0 0-1.962l-1.114-1.114Z\",\n fill: \"#0A1551\"\n}))), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"d\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 0,\n y: 58,\n width: 199,\n height: 86\n}, _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M.284 101.135c0-23.632 19.158-42.79 42.79-42.79H155.4c23.632 0 42.79 19.158 42.79 42.79 0 23.633-19.158 42.791-42.79 42.791H43.074c-23.632 0-42.79-19.158-42.79-42.791Z\",\n fill: \"#F3F3FE\"\n}))), /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#d)\"\n}, _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M115.62 81.621C107.186 92.26 100.284 99.12 94.915 102.2c-8.054 4.623-8.643-.235-38.14-20.744-2.052-.862-3.715-1.091-6.495 2-1.662 1.848-5.236 2.334-10.721 1.459a1.014 1.014 0 0 0-1.16.836c-.045.274.025.553.193.773 1.35 1.769 3.686 2.733 7.009 2.893 6.592.317 7.3-2.157 11.01.758 3.709 2.914 23.583 26.213 35.57 26.791 11.985.579 27.733-17.227 32.188-18.599 2.97-.915 5.393-8.141 7.268-21.679l-16.017 4.933Z\",\n fill: \"#CD7448\"\n})), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M59.239 93.755c3.27-3.123 5.253-5.846 5.949-8.171 14.628 10.93 22.907 16.095 24.837 15.496 2.647-.82 24.004-20.018 31.425-24.56.673-.672.721 5.077 1.257 4.458l-2.407 22.315c-8.667 6.202-14.189 10.023-16.566 11.462-3.565 2.16-12.921 6.116-21.371-.754-5.633-4.58-13.341-11.329-23.124-20.246Z\",\n fill: \"#F4F5FE\"\n})), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M110.922 118.248c1.348 4.697 1.348 10.59 0 21.326l49.541-7.234-3.033-40.263c-2.022-6.71-4.381-11.408-7.077-14.093-4.045-4.026-25.277-2.013-30.332 0-5.055 2.014-6.066 11.073-11.121 19.126-5.056 8.052 0 14.092 2.022 21.138Z\",\n fill: \"#fff\"\n})), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M142.265 75.853c-2.023 16.47-7.705 24.705-17.047 24.705-14.014 0-10.728-7.372-8.973-10.829 1.169-2.304 2.456-6.406 3.859-12.304 4.821-1.539 8.501-2.398 11.039-2.578 2.538-.18 6.245.155 11.122 1.006Z\",\n fill: \"#CD7448\"\n})), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"e\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 51,\n y: 3,\n width: 110,\n height: 93\n}, _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M51.572 3.074h109.353v92.713H51.572V3.074Z\",\n fill: \"#C4C4C4\"\n}))), /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#e)\"\n}, /*#__PURE__*/React.createElement(\"mask\", {\n id: \"f\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 106,\n y: 75,\n width: 59,\n height: 92\n}, _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M110.921 142.24c1.348-10.737 1.348-19.295 0-23.992-2.022-7.046-7.077-13.086-2.022-21.138 5.055-8.053 6.066-17.112 11.122-19.125 5.055-2.013 26.287-4.027 30.331 0 2.696 2.684 5.055 7.381 7.077 14.092l3.034 40.263c4.718 18.119 5.392 29.191 2.022 33.217-5.056 6.04-7.078-10.065-29.321-19.125-4.718-2.013-12.132-2.85-22.243-4.192Z\",\n fill: \"#fff\"\n}))), _g4 || (_g4 = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#f)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M110.921 142.238c1.349-10.736 1.349-18.454 0-23.151-2.022-7.046-7.077-13.086-2.022-21.138 5.056-8.053 5.783-17.823 10.838-19.836 5.055-2.013 25.832-4.914 29.876-.888 2.697 2.684 5.795 8.98 7.817 15.69v13.611l3.033 26.653c4.718 18.119 5.392 29.191 2.022 33.217-5.055 6.04-7.077-10.065-29.32-19.125-4.719-2.013-12.133-3.691-22.244-5.033Z\",\n fill: \"#fff\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M142.264 75.853c-2.022 16.47-7.705 24.705-17.047 24.705-14.014 0-10.728-7.372-8.973-10.829 1.17-2.304 2.456-6.406 3.859-12.304 4.821-1.539 8.501-2.398 11.039-2.578 2.539-.18 6.246.155 11.122 1.006Z\",\n fill: \"#CD7448\"\n}))), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M114.104 37.017c-3.39 14.435-4.542 16.131-5.802 19.302a2.149 2.149 0 0 0 .438 2.293c4.8 4.955 11.22 6.503 19.261 4.644 8.566-1.98 8.525-4.956 3.217-29.137l-17.114 2.898Z\",\n fill: \"#0A1551\"\n})), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M136.569 57.7c-1.661 12.972 3.905 17.523 5.814 17.555 1.91.033-5.401 8.024-19.033 20.81-4.46-8.599-4.959-16.267-3.566-18.49 2.09-3.336 4.029-.483 3.313-12.162-.471-7.671 9.73-6.942 16.997-8.187-3.525.473-9.282.592-3.525.473Z\",\n fill: \"#CD7448\"\n})), _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.677,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M122.596 60.225c.792 7.227.769 11.213.688 11.85-.122.953 17.282.148 12.312-15.173-4.971-15.321-6.633 1.805-13 3.323Z\",\n fill: \"#BD5826\"\n})), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"g\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 113,\n y: 28,\n width: 38,\n height: 43\n}, _path12 || (_path12 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M145.376 60.748c-4.575 6.114-10.956 9.468-19.143 10.065-8.313.605-13.862-10.235-12.793-21.364.511-5.31 1.687-9.997 6.363-14.826 9.65-9.969 18.717-8.652 27.2 3.949l3.662 9.772-5.289 12.404Z\",\n fill: \"#fff\"\n}))), _g5 || (_g5 = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#g)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M144.251 59.875c-5.109 5.677-11.769 8.445-19.978 8.303-8.336-.143-12.887-11.435-10.817-22.42.988-5.242 2.582-9.804 7.676-14.193 10.513-9.06 19.426-6.935 26.74 6.374L150.639 48l-6.388 11.876Z\",\n fill: \"#CD7448\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.423,\n d: \"M132.055 60.09c-2.695-.417-4.642-2.252-4.348-4.1.294-1.848 2.718-3.008 5.413-2.591 2.696.416 4.642 2.252 4.348 4.1-.294 1.847-2.718 3.007-5.413 2.59Z\",\n fill: \"#A44616\"\n}))), _path13 || (_path13 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M125.862 59.677c-2.118.905-4.618.438-7.5-1.4 1.356 3.851 2.898 5.604 4.624 5.258 1.726-.347 2.685-1.632 2.876-3.858Z\",\n fill: \"#A5330A\"\n})), _path14 || (_path14 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M127.222 42.163c-7.822-1.3-11.005-1.905-13.711-4.047.156-10.06 8.433-15.98 12.27-16.877 8.871-2.163 18.502.543 24.413 8.327a15.038 15.038 0 0 1 1.478 2.364c.233.374.462.792.689 1.257 3.699 10.657 5.645 26.207 4.589 31.967-2.957 3.8-26.689 4.62-23.717-.144.166-.266.351-.541.548-.835 1.396-2.08 3.387-5.045 3.369-11.71-.005-1.613-.471-3.5-.997-5.629-.177-.72-.362-1.467-.538-2.24a585.3 585.3 0 0 0-1.197-.417c-1.691-.588-2.986-1.038-3.79-1.386-.88-.381-.04-2.924.562-4.75.527-1.594.872-2.64-.265-1.224-1.466 1.826-2.026 3.254-2.301 4.374-.156.637-.755 1.077-1.402.97Z\",\n fill: \"#0A1551\"\n})), _path15 || (_path15 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M115.449 142.435c5.328-2.997 29.268 3.735 47.508-2.946 10.001-3.664 2.348-24.999-1.821-42.89-2.639-9.902-7.007-16.464-10.989-18.892l-8.662 6.374 2.205 11.873s-1.37 4.311 1.517 12.142c2.888 7.832 7.375 17.68 7.375 17.68l-42.925 9.005c.155 3.55 1.528 10.051 5.792 7.654Z\",\n fill: \"#fff\"\n}))), _path16 || (_path16 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M121.161 140.978c-2.093 1.666-3.098 1.719-5.599 3.641-2.013.964-3.499 1.378-7.866.074-2.619-.782-6.321-.982-11.104-.601a1.007 1.007 0 0 1-.948-1.515c1.216-2.045 3.583-3.241 7.103-3.591 6.58-.652 7.399 1.778 10.978-1.318 2.386-2.064 4.865-.961 7.436 3.31Z\",\n fill: \"#CD7448\"\n})), _path17 || (_path17 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M117.167 144.445c10.617-.871 29.269 3.735 47.509-2.946 10.001-3.664 2.348-24.999-1.822-42.89-2.638-9.902-7.006-16.464-10.989-18.892l-8.662 6.374 2.206 11.873s-1.371 4.311 1.517 12.142c2.887 7.832 7.374 17.68 7.374 17.68l-42.924 9.005c.154 3.55-1.092 7.283 5.791 7.654Z\",\n fill: \"url(#h)\"\n}))), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"i\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 96,\n y: 18,\n width: 65,\n height: 79\n}, _path18 || (_path18 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M96.284 18.075h64v78h-64v-78Z\",\n fill: \"#C4C4C4\"\n}))), /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#i)\"\n}, /*#__PURE__*/React.createElement(\"mask\", {\n id: \"j\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 106,\n y: 75,\n width: 59,\n height: 92\n}, _path19 || (_path19 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M110.633 142.24c1.348-10.737 1.348-19.295 0-23.992-2.022-7.046-7.078-13.086-2.022-21.138 5.055-8.053 6.066-17.112 11.121-19.125 5.055-2.013 26.287-4.027 30.332 0 2.696 2.684 5.055 7.381 7.077 14.092l3.033 40.263c4.718 18.119 5.392 29.191 2.022 33.217-5.055 6.04-7.077-10.065-29.32-19.125-4.719-2.013-12.133-2.85-22.243-4.192Z\",\n fill: \"#fff\"\n}))), _g6 || (_g6 = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#j)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M110.633 142.238c1.348-10.736 1.348-18.454 0-23.151-2.022-7.046-7.077-13.086-2.022-21.138 5.055-8.053 5.782-17.823 10.837-19.836 5.056-2.013 25.833-4.914 29.877-.888 2.696 2.684 5.794 8.98 7.816 15.69v13.611l3.033 26.653c4.718 18.119 5.393 29.191 2.022 33.217-5.055 6.04-7.077-10.065-29.32-19.125-4.718-2.013-12.133-3.691-22.243-5.033Z\",\n fill: \"#fff\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M141.975 75.853c-2.022 16.47-7.704 24.705-17.047 24.705-14.013 0-10.728-7.372-8.973-10.829 1.17-2.304 2.456-6.406 3.859-12.304 4.822-1.539 8.501-2.398 11.04-2.578 2.538-.18 6.245.155 11.121 1.006Z\",\n fill: \"#CD7448\"\n}))), _path20 || (_path20 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M113.815 37.017c-3.39 14.435-4.541 16.131-5.802 19.302a2.15 2.15 0 0 0 .438 2.293c4.8 4.955 11.221 6.503 19.262 4.644 8.565-1.98 8.525-4.956 3.216-29.137l-17.114 2.898Z\",\n fill: \"#0A1551\"\n})), _path21 || (_path21 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M136.28 57.7c-1.66 12.972 3.905 17.523 5.815 17.555 1.909.033-5.402 8.024-19.033 20.81-4.461-8.599-4.96-16.267-3.567-18.49 2.09-3.336 4.029-.483 3.313-12.162-.47-7.671 9.731-6.942 16.998-8.187-3.526.473-9.282.592-3.526.473Z\",\n fill: \"#CD7448\"\n})), _path22 || (_path22 = /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.677,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M122.308 60.225c.792 7.227.769 11.213.687 11.85-.122.953 17.282.148 12.312-15.173-4.97-15.321-6.632 1.805-12.999 3.323Z\",\n fill: \"#BD5826\"\n})), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"k\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 113,\n y: 28,\n width: 38,\n height: 43\n}, _path23 || (_path23 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M145.088 60.748c-4.576 6.114-10.957 9.468-19.143 10.065-8.314.605-13.863-10.235-12.793-21.364.51-5.31 1.686-9.997 6.362-14.826 9.651-9.969 18.717-8.652 27.2 3.949l3.662 9.772-5.288 12.404Z\",\n fill: \"#fff\"\n}))), _g7 || (_g7 = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#k)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M143.963 59.875c-5.11 5.677-11.769 8.445-19.978 8.303-8.337-.143-12.887-11.435-10.817-22.42.987-5.242 2.582-9.804 7.675-14.193 10.513-9.06 19.427-6.935 26.74 6.374L150.35 48l-6.387 11.876Z\",\n fill: \"#CD7448\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M129.189 44.53c1.203.587 2.055 1.53 2.483 2.24a.594.594 0 1 1-1.017.613c-.329-.544-1.02-1.313-1.987-1.785-.945-.462-2.165-.649-3.626-.044a.595.595 0 0 1-.456-1.098c1.802-.746 3.379-.525 4.603.074ZM117.728 42.555a3.335 3.335 0 0 0-2.266.715.594.594 0 1 0 .746.927c.318-.256.829-.49 1.455-.455.615.034 1.415.33 2.313 1.268a.594.594 0 1 0 .858-.821c-1.063-1.11-2.133-1.58-3.106-1.634Z\",\n fill: \"#37120C\",\n fillOpacity: 0.25\n}), /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.423,\n d: \"M131.766 60.09c-2.695-.417-4.641-2.252-4.347-4.1.294-1.848 2.717-3.008 5.413-2.591 2.695.416 4.642 2.252 4.347 4.1-.294 1.847-2.717 3.007-5.413 2.59ZM110.248 55.63c-2.648-.673-4.48-2.7-4.092-4.53.388-1.828 2.848-2.765 5.496-2.093 2.648.673 4.48 2.7 4.092 4.53-.388 1.828-2.848 2.766-5.496 2.093Z\",\n fill: \"#A44616\"\n}))), _path24 || (_path24 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M125.574 59.677c-2.119.905-4.619.438-7.501-1.4 1.357 3.851 2.898 5.604 4.624 5.258 1.726-.347 2.685-1.632 2.877-3.858Z\",\n fill: \"#A5330A\"\n})), _path25 || (_path25 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M126.583 50.275c-.558-.01-1-.68-.987-1.499.013-.818.476-1.474 1.034-1.464.558.01 1 .68.987 1.499-.013.818-.475 1.473-1.034 1.464ZM117.984 48.723c-.558-.01-1-.68-.987-1.498.013-.818.475-1.474 1.033-1.465.558.01 1 .68.987 1.499-.013.818-.475 1.474-1.033 1.464Z\",\n fill: \"#321907\"\n})), _path26 || (_path26 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M122.999 47.67a.358.358 0 0 0-.5.071c-.982 1.304-1.621 1.939-2.222 2.378-.302.22-.601.397-.943.587l-.291.16c-.267.145-.562.306-.891.5-1.157.681-1.326 2.25-.802 3.413.271.6.736 1.135 1.394 1.442.661.308 1.483.371 2.434.084a.356.356 0 1 0-.209-.681c-.809.244-1.446.175-1.923-.048a2.156 2.156 0 0 1-1.044-1.087c-.437-.971-.215-2.08.514-2.51.319-.187.599-.34.863-.484l.304-.167c.35-.195.68-.388 1.018-.635.679-.497 1.367-1.192 2.37-2.524a.356.356 0 0 0-.072-.498Z\",\n fill: \"#8A3110\"\n})), _path27 || (_path27 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M126.933 42.163c-7.821-1.3-11.005-1.905-13.71-4.047.156-10.06 8.433-15.98 12.269-16.877 8.871-2.163 18.502.543 24.413 8.327a15.12 15.12 0 0 1 1.479 2.364c.232.374.462.792.689 1.257 3.698 10.657 5.644 26.207 4.589 31.967-2.957 3.8-26.689 4.62-23.717-.144.166-.266.351-.541.548-.835 1.396-2.08 3.387-5.045 3.368-11.71-.004-1.613-.47-3.5-.996-5.629-.178-.72-.362-1.467-.538-2.24l-1.197-.417c-1.692-.588-2.986-1.038-3.79-1.386-.88-.381-.041-2.924.562-4.75.526-1.594.872-2.64-.266-1.224-1.465 1.826-2.025 3.254-2.3 4.374-.157.637-.756 1.077-1.403.97Z\",\n fill: \"#0A1551\"\n})), _path28 || (_path28 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M115.16 142.435c5.329-2.997 29.269 3.735 47.509-2.946 10-3.664 2.348-24.999-1.822-42.89-2.638-9.902-7.006-16.464-10.989-18.892l-8.662 6.374 2.206 11.873s-1.371 4.311 1.517 12.142c2.887 7.832 7.374 17.68 7.374 17.68l-42.924 9.005c.154 3.55 1.528 10.051 5.791 7.654Z\",\n fill: \"#fff\"\n}))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"a\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M33.981 2.375h39.867v39.867H33.981z\"\n})), /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"b\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M14.048 42.241h39.867v39.867H14.048z\"\n})), /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"c\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M53.914 42.241h39.867v39.867H53.914z\"\n})), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"h\",\n x1: 152.474,\n y1: 97.578,\n x2: 150.048,\n y2: 114.588,\n gradientUnits: \"userSpaceOnUse\"\n}, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#fff\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#F3F5FE\"\n})))));\nexport default SvgNoSignDocumentsIcon;","var _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _path9, _path10, _path11, _g, _path12, _path13, _path14, _path15, _path16, _path17, _path18, _path19, _circle, _path20, _path21, _path22, _path23, _path24, _path25, _rect, _path26, _path27, _path28, _path29, _rect2, _path30, _path31, _path32, _path33, _rect3, _path34, _path35, _path36, _path37, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgNoBoardsIcon = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 198 138\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0.0476074 94.5293C0.0476074 70.8969 19.2055 51.739 42.8378 51.739H155.162C178.795 51.739 197.952 70.8969 197.952 94.5293C197.952 118.162 178.795 137.319 155.162 137.319H42.8378C19.2055 137.319 0.0476074 118.162 0.0476074 94.5293Z\",\n fill: \"#E6E6F5\"\n})), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M65.8865 82.0527C64.5855 80.9391 63.0716 80.1014 61.437 79.5904C59.8025 79.0793 58.0813 78.9057 56.3776 79.08L51.3094 76.7875C50.9339 76.6114 50.5092 76.5689 50.1063 76.6671C49.7033 76.7653 49.3463 76.9984 49.0939 77.3275C48.9733 77.501 48.8891 77.6972 48.8465 77.9041C48.8039 78.1111 48.8035 78.3245 48.8458 78.5315C48.8882 78.7386 48.9721 78.9348 49.0925 79.1085C49.213 79.2821 49.3674 79.4295 49.5464 79.5417L52.3012 81.3841L51.1269 81.2868C49.2809 81.1394 47.5284 80.4138 46.1186 79.2131L42.2053 75.8284C41.9782 75.6386 41.707 75.5089 41.4166 75.4514C41.1263 75.394 40.8261 75.4105 40.5438 75.4994C40.294 75.5604 40.0642 75.6853 39.8772 75.8619C39.6903 76.0385 39.5528 76.2607 39.4776 76.5066C39.4024 76.7526 39.3924 77.0138 39.4487 77.2647C39.505 77.5157 39.6254 77.7476 39.7984 77.9379L44.3699 82.9807C45.2709 83.9598 46.3595 84.7479 47.571 85.298C48.7825 85.8482 50.0923 86.1492 51.4225 86.1833L66.0775 86.634L65.8865 82.0527Z\",\n fill: \"#EFBB9D\"\n})), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M114.868 31.4103C111.478 45.8452 107.609 80.3608 106.348 83.5315C106.036 84.3176 106.197 85.2167 106.786 85.8249C111.586 90.7796 118.006 92.3275 126.047 90.4685C134.613 88.4883 137.29 52.6933 131.982 28.5124L114.868 31.4103Z\",\n fill: \"#091141\"\n})), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M60.0038 88.1488C63.2736 85.0262 65.2565 82.3025 65.9525 79.9778C80.5807 90.9075 88.8599 96.073 90.7902 95.4745C93.437 94.6539 114.794 75.4558 122.215 70.914C122.888 70.2415 122.935 75.9912 123.472 75.3721L121.065 97.6868C112.398 103.889 106.876 107.71 104.499 109.149C100.934 111.309 91.5777 115.265 83.1278 108.395C77.4945 103.815 69.7865 97.066 60.0038 88.1488Z\",\n fill: \"#F4F5FE\"\n})), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M110.637 112.909C111.76 117.664 113.903 121.807 112.046 132.468C122.081 134.286 128.929 131.235 133.546 133.468L151.046 125.468L163.546 119.968L157.69 102.555L158.338 88.9606C156.637 82.1622 153.842 75.727 151.276 72.9186C147.428 68.706 126.537 70.624 121.391 72.3965C116.246 74.169 115.055 83.8937 109.623 91.6989C104.19 99.5041 108.952 105.775 110.637 112.909Z\",\n fill: \"white\"\n})), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M143.029 70.2469C141.007 86.7169 135.324 94.9518 125.982 94.9518C111.968 94.9518 115.254 87.5798 117.009 84.123C118.179 81.8186 119.465 77.717 120.868 71.8184C125.689 70.2797 129.369 69.4204 131.907 69.2404C134.445 69.0604 138.153 69.3959 143.029 70.2469Z\",\n fill: \"#EFBB9D\"\n})), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M122.049 47.6274C121.497 47.7087 120.952 47.1184 120.831 46.3089C120.71 45.4993 121.059 44.7771 121.611 44.6958C122.163 44.6145 122.708 45.2048 122.829 46.0144C122.95 46.8239 122.601 47.5461 122.049 47.6274Z\",\n fill: \"#321907\"\n})), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M114.502 47.4956C113.95 47.5769 113.405 46.9865 113.284 46.177C113.163 45.3675 113.512 44.6453 114.064 44.564C114.616 44.4827 115.161 45.073 115.282 45.8825C115.404 46.6921 115.054 47.4143 114.502 47.4956Z\",\n fill: \"#321907\"\n})), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M137.335 52.0938C135.674 65.0666 141.64 69.9366 143.549 69.969C145.459 70.0014 137.748 77.6731 124.116 90.459C119.656 81.8609 119.157 74.1928 120.55 71.969C122.64 68.6332 124.579 71.4869 123.863 59.808C123.392 52.1361 133.593 52.8654 140.86 51.62C137.335 52.0938 131.578 52.2121 137.335 52.0938Z\",\n fill: \"#EFBB9D\"\n})), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.677232,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M123.36 54.6194C124.152 61.8467 124.129 65.8326 124.048 66.4687C123.926 67.4228 141.33 66.6169 136.359 51.2959C131.389 35.975 129.727 53.1011 123.36 54.6194Z\",\n fill: \"#DC9F7E\"\n})), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask0_1461_13663\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 114,\n y: 22,\n width: 38,\n height: 44\n}, _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M146.142 55.1426C141.566 61.2561 135.185 64.6109 126.998 65.2072C118.685 65.8126 113.136 54.9729 114.206 43.8438C114.716 38.5338 115.892 33.8467 120.568 29.017C130.219 19.0488 139.285 20.3653 147.768 32.9663L151.43 42.7384L146.142 55.1426Z\",\n fill: \"white\"\n}))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask0_1461_13663)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M145.016 54.2699C139.906 59.9466 133.247 62.7143 125.038 62.573C116.701 62.4295 112.151 51.1376 114.221 40.152C115.208 34.9104 116.803 30.3489 121.896 25.9595C132.409 16.9001 141.323 19.025 148.636 32.334L151.403 42.3933L145.016 54.2699Z\",\n fill: \"#EFBB9D\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M132.817 54.4842C130.121 54.0677 128.175 52.2323 128.469 50.3846C128.763 48.537 131.187 47.3769 133.882 47.7934C136.577 48.2099 138.524 50.0454 138.23 51.893C137.936 53.7407 135.512 54.9008 132.817 54.4842Z\",\n fill: \"#EFA77F\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M111.299 50.0244C108.651 49.3517 106.819 47.3239 107.207 45.4951C107.594 43.6664 110.055 42.7292 112.703 43.4019C115.35 44.0746 117.183 46.1024 116.795 47.9312C116.407 49.7599 113.946 50.6971 111.299 50.0244Z\",\n fill: \"#EFA77F\"\n}))), _path12 || (_path12 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M126.074 54.0341C123.955 54.9391 121.455 54.4722 118.573 52.6332C119.93 56.485 121.471 58.2377 123.197 57.8913C124.923 57.545 125.882 56.2592 126.074 54.0341Z\",\n fill: \"#A5330A\"\n})), _path13 || (_path13 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M127.635 44.6691C127.077 44.6597 126.635 43.9887 126.648 43.1705C126.661 42.3524 127.124 41.6968 127.682 41.7062C128.24 41.7157 128.682 42.3867 128.669 43.2048C128.656 44.023 128.193 44.6786 127.635 44.6691Z\",\n fill: \"#0A1551\"\n})), _path14 || (_path14 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M119.037 43.1174C118.479 43.1079 118.037 42.437 118.05 41.6188C118.063 40.8006 118.526 40.145 119.084 40.1545C119.642 40.164 120.084 40.8349 120.071 41.6531C120.058 42.4713 119.595 43.1269 119.037 43.1174Z\",\n fill: \"#0A1551\"\n})), _path15 || (_path15 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M143.029 70.2479C141.007 86.7178 135.324 94.9528 125.982 94.9528C111.968 94.9528 115.254 87.5807 117.009 84.124C118.179 81.8195 119.465 77.718 120.868 71.8193C125.689 70.2807 129.369 69.4213 131.907 69.2413C134.445 69.0614 138.153 69.3969 143.029 70.2479Z\",\n fill: \"#EFBB9D\"\n})), _path16 || (_path16 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M142.248 78.475L144.454 90.3478C144.454 90.3478 143.083 94.6584 145.971 102.49C148.858 110.322 153.345 120.17 153.345 120.17L163.721 133.883C173.722 130.219 166.069 108.884 161.899 90.9932C159.261 81.091 154.893 74.5284 150.91 72.101L142.248 78.475Z\",\n fill: \"white\"\n})), _path17 || (_path17 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M144.277 81.482L146.483 93.3548C146.483 93.3548 145.112 97.6655 148 105.497C150.887 113.329 155.374 123.177 155.374 123.177L164.547 135.469C174.547 131.805 168.098 111.891 163.928 94.0002C161.29 84.098 156.922 77.5354 152.939 75.108L144.277 81.482Z\",\n fill: \"url(#paint0_linear_1461_13663)\"\n})), _path18 || (_path18 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M142.55 69.4685C131.35 71.8685 125.217 70.1352 123.55 68.9685C122.751 69.3685 120.883 71.4685 120.05 72.4685C118.55 76.1352 115.25 84.1685 114.05 86.9685C112.55 90.4685 115.05 92.4685 118.55 96.4685C122.05 100.469 133.05 96.9685 137.05 95.9685C140.25 95.1685 144.05 78.6352 145.55 70.4685C143.55 70.0685 142.717 69.6352 142.55 69.4685Z\",\n fill: \"white\"\n})), _path19 || (_path19 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M127.988 36.5564C120.166 35.2577 116.983 34.6521 114.277 32.5094C114.433 22.4501 122.71 16.529 126.547 15.6328C135.418 13.4693 145.049 16.1758 150.96 23.9595C151.546 24.7312 152.036 25.521 152.438 26.3241C152.671 26.6979 152.9 27.1161 153.127 27.5809C156.825 38.238 156.729 78.3515 155.673 84.1116C152.716 87.9129 128.984 88.7326 131.956 83.9685C132.122 83.7026 132.307 83.4268 132.504 83.1335C133.9 81.0539 137.934 53.5233 137.916 46.8596C137.911 45.2458 137.445 43.3583 136.919 41.2298C136.742 40.5102 136.557 39.763 136.381 38.9895C135.963 38.8434 135.564 38.7046 135.184 38.5727C133.493 37.9849 132.198 37.5349 131.394 37.1866C130.514 36.8054 131.354 34.2626 131.956 32.4372C132.482 30.843 132.828 29.796 131.69 31.2131C130.225 33.0384 129.665 34.4668 129.39 35.5865C129.234 36.2233 128.635 36.6639 127.988 36.5564Z\",\n fill: \"#091141\"\n})), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 145.548,\n cy: 16.9685,\n r: 9.5,\n fill: \"#091141\"\n})), _path20 || (_path20 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M129.946 38.5046C129.946 38.5046 126.888 37.6631 126.531 38.9627C126.531 38.9627 126.291 39.8346 129.075 40.5352C131.859 41.2357 132.538 41.1594 132.938 40.3648C133.338 39.5701 131.428 38.7973 129.946 38.5046Z\",\n fill: \"#091141\"\n})), _path21 || (_path21 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M118.847 36.5537C118.847 36.5537 121.492 36.7097 121.487 38.002C121.487 38.002 121.478 38.8674 119.156 38.6638C116.834 38.4602 116.156 38.0402 116.061 37.328C115.965 36.6158 117.602 36.3648 118.847 36.5537Z\",\n fill: \"#091141\"\n})), _path22 || (_path22 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M121.991 45.4825L121.05 48.3784L122.922 48.8721\",\n stroke: \"#D97D4A\",\n strokeWidth: 0.919783,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n})), _path23 || (_path23 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M124.653 130.125L132.679 129.506L132.433 137.532H125.484L124.653 130.125Z\",\n fill: \"#EFBB9D\"\n})), _path24 || (_path24 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M126.908 129.907L127.31 131.512L128.112 137.532H108.048C108.449 133.519 114.067 129.506 118.08 129.506C121.29 129.506 126.106 129.773 126.908 129.907Z\",\n fill: \"#EFBB9D\"\n})), _path25 || (_path25 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M161.447 122.524L130.048 123.466L132.048 137.469L162.048 136.969C163.133 136.823 164.392 136.764 165.304 136.158C166.304 135.493 167.989 134.224 168.543 133.28C169.097 132.336 169.429 131.278 169.514 130.186C169.599 129.094 169.434 127.998 169.033 126.979C168.436 125.504 167.369 124.268 165.997 123.462C164.625 122.657 163.026 122.327 161.447 122.524Z\",\n fill: \"#F4F6FF\"\n})), _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n x: 38.3523,\n y: 1.71851,\n width: 30.3839,\n height: 30.3839,\n rx: 2.75,\n fill: \"white\",\n stroke: \"#B1C3E9\",\n strokeWidth: 1.5\n})), _path26 || (_path26 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M54.6726 14.156C54.6726 13.8453 54.9244 13.5935 55.2351 13.5935H61.9851C62.2958 13.5935 62.5476 13.8453 62.5476 14.156V24.8435C62.5476 25.4648 62.0439 25.9685 61.4226 25.9685H55.7976C55.1763 25.9685 54.6726 25.4648 54.6726 24.8435V14.156Z\",\n fill: \"#FFB629\"\n})), _path27 || (_path27 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M44.5476 14.156C44.5476 13.8453 44.7994 13.5935 45.1101 13.5935H51.8601C52.1708 13.5935 52.4226 13.8453 52.4226 14.156V20.3435C52.4226 20.9648 51.9189 21.4685 51.2976 21.4685H45.6726C45.0513 21.4685 44.5476 20.9648 44.5476 20.3435V14.156Z\",\n fill: \"#FFB629\"\n})), _path28 || (_path28 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M44.5476 9.09351C44.5476 8.47219 45.0513 7.96851 45.6726 7.96851H51.2976C51.9189 7.96851 52.4226 8.47219 52.4226 9.09351V10.781C52.4226 11.0917 52.1708 11.3435 51.8601 11.3435H45.1101C44.7994 11.3435 44.5476 11.0917 44.5476 10.781V9.09351Z\",\n fill: \"#FF6100\"\n})), _path29 || (_path29 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M54.6726 9.09351C54.6726 8.47219 55.1763 7.96851 55.7976 7.96851H61.4226C62.0439 7.96851 62.5476 8.47219 62.5476 9.09351V10.781C62.5476 11.0917 62.2958 11.3435 61.9851 11.3435H55.2351C54.9244 11.3435 54.6726 11.0917 54.6726 10.781V9.09351Z\",\n fill: \"#0099FF\"\n})), _rect2 || (_rect2 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 57.6179,\n y: 41.8386,\n width: 30.3839,\n height: 30.3839,\n rx: 2.75,\n fill: \"white\",\n stroke: \"#B1C3E9\",\n strokeWidth: 1.5\n})), _path30 || (_path30 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M73.9382 54.2761C73.9382 53.9655 74.1901 53.7136 74.5007 53.7136H81.2507C81.5614 53.7136 81.8132 53.9655 81.8132 54.2761V64.9636C81.8132 65.5849 81.3096 66.0886 80.6882 66.0886H75.0632C74.4419 66.0886 73.9382 65.5849 73.9382 64.9636V54.2761Z\",\n fill: \"#FFB629\"\n})), _path31 || (_path31 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M63.8132 54.2761C63.8132 53.9655 64.0651 53.7136 64.3757 53.7136H71.1257C71.4364 53.7136 71.6882 53.9655 71.6882 54.2761V60.4636C71.6882 61.0849 71.1846 61.5886 70.5632 61.5886H64.9382C64.3169 61.5886 63.8132 61.0849 63.8132 60.4636V54.2761Z\",\n fill: \"#FFB629\"\n})), _path32 || (_path32 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M63.8132 49.2136C63.8132 48.5923 64.3169 48.0886 64.9382 48.0886H70.5632C71.1846 48.0886 71.6882 48.5923 71.6882 49.2136V50.9011C71.6882 51.2118 71.4364 51.4636 71.1257 51.4636H64.3757C64.0651 51.4636 63.8132 51.2118 63.8132 50.9011V49.2136Z\",\n fill: \"#FF6100\"\n})), _path33 || (_path33 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M73.9382 49.2136C73.9382 48.5923 74.4419 48.0886 75.0632 48.0886H80.6882C81.3096 48.0886 81.8132 48.5923 81.8132 49.2136V50.9011C81.8132 51.2118 81.5614 51.4636 81.2507 51.4636H74.5007C74.1901 51.4636 73.9382 51.2118 73.9382 50.9011V49.2136Z\",\n fill: \"#0099FF\"\n})), _rect3 || (_rect3 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 18.2976,\n y: 41.8386,\n width: 30.3839,\n height: 30.3839,\n rx: 2.75,\n fill: \"white\",\n stroke: \"#B1C3E9\",\n strokeWidth: 1.5\n})), _path34 || (_path34 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M34.6179 54.2761C34.6179 53.9655 34.8698 53.7136 35.1804 53.7136H41.9304C42.2411 53.7136 42.4929 53.9655 42.4929 54.2761V64.9636C42.4929 65.5849 41.9892 66.0886 41.3679 66.0886H35.7429C35.1216 66.0886 34.6179 65.5849 34.6179 64.9636V54.2761Z\",\n fill: \"#FFB629\"\n})), _path35 || (_path35 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.4929 54.2761C24.4929 53.9655 24.7448 53.7136 25.0554 53.7136H31.8054C32.1161 53.7136 32.3679 53.9655 32.3679 54.2761V60.4636C32.3679 61.0849 31.8642 61.5886 31.2429 61.5886H25.6179C24.9966 61.5886 24.4929 61.0849 24.4929 60.4636V54.2761Z\",\n fill: \"#FFB629\"\n})), _path36 || (_path36 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.4929 49.2136C24.4929 48.5923 24.9966 48.0886 25.6179 48.0886H31.2429C31.8642 48.0886 32.3679 48.5923 32.3679 49.2136V50.9011C32.3679 51.2118 32.1161 51.4636 31.8054 51.4636H25.0554C24.7448 51.4636 24.4929 51.2118 24.4929 50.9011V49.2136Z\",\n fill: \"#FF6100\"\n})), _path37 || (_path37 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M34.6179 49.2136C34.6179 48.5923 35.1216 48.0886 35.7429 48.0886H41.3679C41.9892 48.0886 42.4929 48.5923 42.4929 49.2136V50.9011C42.4929 51.2118 42.2411 51.4636 41.9304 51.4636H35.1804C34.8698 51.4636 34.6179 51.2118 34.6179 50.9011V49.2136Z\",\n fill: \"#0099FF\"\n})), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint0_linear_1461_13663\",\n x1: 160.047,\n y1: 122.469,\n x2: 148.317,\n y2: 68.5186,\n gradientUnits: \"userSpaceOnUse\"\n}, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#F4F5FE\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"white\"\n})))));\nexport default SvgNoBoardsIcon;","import { t } from '@jotforminc/translation';\n\nexport const getShortMonthName = month => {\n const monthNames = [\n t('January'), t('February'), t('March'), t('April'), t('May'), t('June'), t('July'), t('August'), t('September'), t('October'), t('November'), t('December')\n ];\n return monthNames[month - 1].substring(0, 3);\n};\n\nexport const getIconType = (productType, type, isNewBranding, paymentProps) => {\n let iconType = '';\n\n if (productType === 'Table') {\n return 'isSheet';\n }\n\n if (type === 'CARD') {\n iconType += 'isCard ';\n }\n\n if (isNewBranding) {\n iconType += 'isNewBranding ';\n }\n\n if (paymentProps) {\n iconType += 'isPaymentForm ';\n }\n\n return iconType;\n};\n","import Styled from 'styled-components';\n\n/* eslint max-len: \"off\" */\nconst FormItemWrapper = Styled.div`\ndisplay: flex;\nalign-items: center;\nposition: relative;\ncursor: pointer;\ntransition:\n background-color 0.15s ease,\n border 0.15s ease,\n transform 10ms linear;\ntext-decoration: none;\nborder-radius: .25em;\nfont-family: \"Circular\", \"Circular Std\", \"Circular Std Bold\", \"Work Sans SemiBold\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n\npadding: ${p => p.theme.itemPadding};\nline-height: ${p => p.theme.lineHeight};\nbackground: ${p => p.theme.itemBg};\nborder: 1px solid ${p => p.theme.itemBorder};\n\n&:hover:not(.isDisabled) {\n background-color: ${p => p.theme.itemBgFocus};\n\n .itemActions {\n display: block;\n }\n}\n\n[aria-selected=\"true\"] & {\n border-color: ${p => p.theme.itemBorderSelected};\n background-color: ${p => p.theme.itemBgSelected};\n\n &:hover:not(.isDisabled) {\n background-color: ${p => p.theme.itemBgSelectedHover};\n }\n}\n\n&:focus {\n outline: 0;\n}\n\n.itemContent {\n text-align: left;\n flex-grow: 1;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.itemTitle {\n margin: 0;\n padding: 0;\n max-width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n display: block;\n\n font-weight: ${p => p.theme.titleFontWeight};\n font-size: ${p => p.theme.titleFontSize};\n color: ${p => p.theme.titleColor};\n\n @media screen and (max-width: 600px) {\n white-space: normal;\n }\n}\n\n.itemDesc {\n margin: 0;\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n\n font-weight: ${p => p.theme.detailsFontWeight};\n font-size: ${p => p.theme.detailsFontSize};\n color: ${p => p.theme.detailsColor};\n\n span {\n color: #D93434;\n font-weight: 500;\n }\n}\n\n&.isDisabled {\n cursor: default;\n background-color: #FAFAFB;\n border-color: #EBECF3;\n\n &:hover .itemDisabled {\n opacity: 1;\n }\n\n .itemInfo, .itemContent {\n opacity: .5;\n }\n}\n\n.itemDisabled {\n font-size: 13px;\n padding: 11px;\n color: #fff;\n position: absolute;\n top: 50%;\n right: 16px;\n background-color: #23283A;\n border-radius: 3px;\n transform: translateY(-50%);\n opacity: 0;\n pointer-events: none;\n transition: .3s;\n}\n\n.itemInfo {\n &-formType {\n width: 38px;\n height: 32px;\n background-position: center;\n background-repeat: no-repeat;\n background-size: contain;\n background-image: url(\"data:image/svg+xml,%3Csvg width='26' height='32' viewBox='0 0 26 32' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0.533333' y='0.533333' width='24.9333' height='30.9333' rx='3.73333' fill='white' stroke='%23B1C3E9' stroke-width='1.06667'/%3E%3Cpath d='M5 10.6908C5 9.75699 5.78756 9 6.75906 9H19.6589C20.6304 9 21.4179 9.75699 21.4179 10.6908V10.6908C21.4179 11.6246 20.6304 12.3816 19.6589 12.3816H6.75906C5.78756 12.3816 5 11.6246 5 10.6908V10.6908Z' fill='%230099FF'/%3E%3Cpath d='M5 16.3265C5 15.3927 5.78756 14.6357 6.75906 14.6357H19.6589C20.6304 14.6357 21.4179 15.3927 21.4179 16.3265V16.3265C21.4179 17.2603 20.6304 18.0173 19.6589 18.0173H6.75906C5.78756 18.0173 5 17.2603 5 16.3265V16.3265Z' fill='%23FF6100'/%3E%3Cpath d='M5 21.9625C5 21.0287 5.78756 20.2717 6.75906 20.2717H19.6589C20.6304 20.2717 21.4179 21.0287 21.4179 21.9625V21.9625C21.4179 22.8963 20.6304 23.6532 19.6589 23.6532H6.75906C5.78756 23.6532 5 22.8963 5 21.9625V21.9625Z' fill='%23FFB629'/%3E%3C/svg%3E%0A\");\n\n &.isCard {\n background-image: url(\"data:image/svg+xml,%3Csvg width='38' height='22' viewBox='0 0 38 22' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0.5' y='3.5' width='20' height='15' rx='3.5' fill='white' stroke='%23B1C3E9'/%3E%3Crect x='17.5' y='3.5' width='20' height='15' rx='3.5' fill='white' stroke='%23B1C3E9'/%3E%3Crect x='3' y='10' width='13' height='3' rx='1.5' fill='%230099FF'/%3E%3Crect x='22' y='10' width='13' height='3' rx='1.5' fill='%23FFB629'/%3E%3Crect x='7.5' y='0.5' width='23' height='21' rx='3.5' fill='white' stroke='%23B1C3E9'/%3E%3Cpath d='M11.364 8.32266C11.364 7.44722 12.0737 6.73754 12.9491 6.73754H24.5733C25.4487 6.73754 26.1584 7.44722 26.1584 8.32266V8.32266C26.1584 9.19809 25.4487 9.90777 24.5733 9.90777H12.9491C12.0737 9.90777 11.364 9.19809 11.364 8.32266V8.32266Z' fill='%23FF6100'/%3E%3Cpath d='M11.364 13.6063C11.364 12.7309 12.0737 12.0212 12.9491 12.0212H24.5733C25.4487 12.0212 26.1584 12.7309 26.1584 13.6063V13.6063C26.1584 14.4818 25.4487 15.1915 24.5733 15.1915H12.9491C12.0737 15.1915 11.364 14.4818 11.364 13.6063V13.6063Z' fill='%23FF6100'/%3E%3C/svg%3E%0A\");\n }\n\n &.isSheet {\n background-image: url(\"data:image/svg+xml,%3Csvg width='32' height='32' viewBox='0 0 32 32' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0.5' y='0.5' width='31' height='31' rx='2.5' fill='white' stroke='%23DADEF3'/%3E%3Crect x='3.5' y='5.5' width='7' height='5' rx='1' fill='%230099FF'/%3E%3Crect x='3.5' y='12.5' width='7' height='7' rx='1' fill='%230099FF'/%3E%3Crect x='3.5' y='21.5' width='7' height='7' rx='1' fill='%230099FF'/%3E%3Crect x='12.5' y='5.5' width='7' height='5' rx='1' fill='%23FF6100'/%3E%3Crect x='12.5' y='12.5' width='7' height='7' rx='1' fill='%23FF6100'/%3E%3Crect x='12.5' y='21.5' width='7' height='7' rx='1' fill='%23FF6100'/%3E%3Crect x='21.5' y='5.5' width='7' height='5' rx='1' fill='%23FFB629'/%3E%3Crect x='21.5' y='12.5' width='7' height='7' rx='1' fill='%23FFB629'/%3E%3Crect x='21.5' y='21.5' width='7' height='7' rx='1' fill='%23FFB629'/%3E%3C/svg%3E%0A\");\n }\n\n &.isPaymentForm {\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24'%3E%3Cpath fill='%230A1551' d='M20.487 17.1c-1.013-.382-1.356-.611-1.356-.916 0-.352.322-.547.907-.547.369 0 .712.05 1.051.157a.765.765 0 0 0 .97-.543l.014-.042a.817.817 0 0 0-.585-.997 4.919 4.919 0 0 0-.988-.152v-.352a.71.71 0 0 0-1.416 0v.45c-1.259.283-2.03 1.127-2.03 2.229 0 1.378 1.195 1.954 2.234 2.306.852.288 1.182.547 1.182.924 0 .386-.381.62-1.025.62-.433 0-.874-.081-1.315-.238a.746.746 0 0 0-.975.517l-.025.093a.837.837 0 0 0 .555 1.005c.407.131.87.216 1.319.246v.432a.71.71 0 0 0 1.415 0v-.53c1.298-.263 2.129-1.161 2.129-2.314.017-1.132-.607-1.836-2.06-2.349Z'/%3E%3Cpath fill='%23fff' fill-rule='evenodd' d='M6 1h12a3 3 0 0 1 3 3v8.303a2.568 2.568 0 0 0-3.545 1.199c-1.074.64-1.855 1.739-1.855 3.208 0 .761.219 1.404.556 1.927-.187.258-.326.55-.408.863l-.02.075-.004.014a2.67 2.67 0 0 0 1.84 3.229c.041.062.084.123.13.182H6a3 3 0 0 1-3-3V4a3 3 0 0 1 3-3Z' clip-rule='evenodd'/%3E%3Cpath fill='%23C8CEED' fill-rule='evenodd' d='M6 1a3 3 0 0 0-3 3v16a3 3 0 0 0 3 3h11.693a2.574 2.574 0 0 1-.128-.182A2.646 2.646 0 0 1 16.289 22H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8.008c.36.03.698.133 1 .295V4a3 3 0 0 0-3-3H6Z' clip-rule='evenodd'/%3E%3Cpath fill='%23FFB629' fill-rule='evenodd' d='M16.171 14.72H7.64a1.14 1.14 0 0 0 0 2.28h7.97a3.879 3.879 0 0 1-.01-.29c0-.77.213-1.437.571-1.99Z' clip-rule='evenodd'/%3E%3Cpath fill='%2309F' d='M6.5 8.14C6.5 7.51 7.01 7 7.64 7h8.72a1.14 1.14 0 0 1 0 2.28H7.64c-.63 0-1.14-.51-1.14-1.14Z'/%3E%3Cpath fill='%23FF6100' d='M6.5 12c0-.63.51-1.14 1.14-1.14h8.72a1.14 1.14 0 0 1 0 2.28H7.64c-.63 0-1.14-.51-1.14-1.14Z'/%3E%3C/svg%3E\");\n }\n\n &.isCard.isPaymentForm {\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' class='w-32 h-32'%3E%3Cpath fill='%23fff' fill-rule='evenodd' d='M4 16h1.17A3.001 3.001 0 0 0 8 18h7.332A3.946 3.946 0 0 1 15 16.387c0-1.69.928-2.952 2.215-3.662A2.71 2.71 0 0 1 22 12.219V10a2 2 0 0 0-2-2h-1.17A3.001 3.001 0 0 0 16 6H8a3.001 3.001 0 0 0-2.83 2H4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2Z' clip-rule='evenodd'/%3E%3Cpath fill='%2309F' d='M4 12a.9.9 0 0 1 .9-.9H5v1.8h-.1A.9.9 0 0 1 4 12Z'/%3E%3Cpath fill='%23C8CEED' fill-rule='evenodd' d='M8 7h8a2 2 0 0 1 2 2v2.632a2.702 2.702 0 0 1 1-.53V9h1a1 1 0 0 1 1 1v1.312c.405.213.749.527 1 .907V10a2 2 0 0 0-2-2h-1.17A3.001 3.001 0 0 0 16 6H8a3.001 3.001 0 0 0-2.83 2H4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h1.17A3.001 3.001 0 0 0 8 18h7.332a3.846 3.846 0 0 1-.288-1H8a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2ZM4 9h1v6H4a1 1 0 0 1-1-1v-4a1 1 0 0 1 1-1Z' clip-rule='evenodd'/%3E%3Cpath fill='%23FF6100' fill-rule='evenodd' d='M7.5 10a1 1 0 0 1 1-1h7a1 1 0 1 1 0 2h-7a1 1 0 0 1-1-1Zm0 4a1 1 0 0 1 1-1h7c.322 0 .61.153.792.39A4.01 4.01 0 0 0 15.23 15H8.5a1 1 0 0 1-1-1Z' clip-rule='evenodd'/%3E%3Cpath fill='%230A1551' d='M20.487 17.1c-1.013-.382-1.356-.611-1.356-.916 0-.352.322-.547.907-.547.369 0 .712.05 1.051.157a.765.765 0 0 0 .97-.543l.014-.042a.817.817 0 0 0-.585-.997 4.919 4.919 0 0 0-.988-.152v-.352a.71.71 0 0 0-1.416 0v.45c-1.259.283-2.03 1.127-2.03 2.229 0 1.378 1.195 1.954 2.234 2.306.852.288 1.182.547 1.182.924 0 .386-.381.62-1.025.62-.433 0-.874-.081-1.315-.238a.746.746 0 0 0-.975.517l-.025.093a.837.837 0 0 0 .555 1.005c.407.131.87.216 1.319.246v.432a.71.71 0 0 0 1.415 0v-.53c1.298-.263 2.129-1.161 2.129-2.314.017-1.132-.607-1.836-2.06-2.349Z'/%3E%3C/svg%3E\");\n }\n }\n}\n`;\n\nexport default FormItemWrapper;\n","import { string, shape } from 'prop-types';\n\nexport const formProperties = shape({\n id: string,\n title: string,\n count: string,\n new: string,\n updated_at: string,\n created_at: string\n});\n","import React from 'react';\nimport { bool, string } from 'prop-types';\nimport { t } from '@jotforminc/translation';\nimport '@jotforminc/jotform.css';\nimport classNames from 'classnames';\nimport { IconGridDotsVertical, IconStarFilled, IconArrowUpRightFromSquareSm } from '@jotforminc/svg-icons';\nimport { Checkbox, Indicator, Link } from '@jotforminc/magnet';\nimport { getIconType, getShortMonthName } from '../../../utils/utils';\n\nimport FormItemWrapper from './styled';\n\nimport { formProperties } from '../helpers/propTypes';\n\n// eslint-disable-next-line complexity\nconst FormItem = ({\n isSelected,\n isMultiSelect,\n isDraggable,\n isEditable,\n showFavorite,\n showFormId,\n submissionsKeyword,\n showPreview,\n option: {\n title,\n count: submissionCount,\n new: newSubmissionCount,\n updated_at: updatedAt,\n created_at: createdAt,\n id: formID,\n isFavorite,\n type,\n isSelectionDisabled,\n disableClass = 'itemDisabled',\n disableReason = 'This form is disabled.',\n draftCount,\n submission_date: submissionDate,\n paymentProps = null\n },\n isNewBranding,\n productType\n}) => {\n const hasDraft = draftCount && draftCount > 0;\n\n const getReadableDate = dateString => {\n if (!dateString) {\n console.error('Date string is not defined.');\n return '';\n }\n const splittedDateString = dateString.split(' ')[0].split('-');\n const month = parseInt(splittedDateString[1], 10);\n const monthName = month > 12 || month < 1 ? null : getShortMonthName(month);\n if (!monthName) {\n return '';\n }\n return `${monthName} ${splittedDateString[2]}, ${splittedDateString[0]}`;\n };\n\n let lastActionDate;\n if (draftCount !== undefined) {\n lastActionDate = submissionDate;\n } else {\n lastActionDate = updatedAt || createdAt;\n }\n\n const readableLastActionDate = getReadableDate(lastActionDate);\n\n let lastActionDateText;\n if (hasDraft && submissionCount < 1) {\n lastActionDateText = 'Draft saved on {date}.';\n } else if (draftCount !== undefined) {\n lastActionDateText = 'Last submission on {date}.';\n } else {\n lastActionDateText = 'Modified on {date}.';\n }\n\n const draftCountText = `${draftCount} ${t(`Draft${draftCount > 1 ? 's. ' : '. '}`)}`;\n return (\n \n
    \n {isMultiSelect && }\n {showFavorite && ()}\n
    \n {!!(newSubmissionCount !== '0' && newSubmissionCount) && (\n \n {newSubmissionCount}\n \n )}\n
    \n
    \n
    \n

    \n {title}\n

    \n

    \n {hasDraft ? {draftCountText} : null}\n {`${showFormId ? `${formID}. ` : ''}`}\n {submissionCount === undefined || (hasDraft && submissionCount < 1) ? '' : `${submissionCount} ${t(submissionsKeyword)}. `}\n {readableLastActionDate !== '' ? (`${t(lastActionDateText).replace('{date}', readableLastActionDate)}`) : <>}\n

    \n
    \n {showPreview && (\n \n {t('View')}\n \n \n )}\n {isEditable && (\n
    \n {\n e.stopPropagation();\n }}\n >\n Edit Form\n \n
    \n )}\n {isDraggable && (\n
    \n \n
    \n )}\n
    \n {disableReason}\n
    \n \n );\n};\n\nFormItem.propTypes = {\n isMultiSelect: bool,\n isSelected: bool.isRequired,\n option: formProperties.isRequired,\n isDraggable: bool,\n isEditable: bool,\n showFavorite: bool,\n showPreview: bool,\n showFormId: bool,\n submissionsKeyword: string,\n isNewBranding: bool,\n productType: string\n};\n\nFormItem.defaultProps = {\n isMultiSelect: true,\n isDraggable: false,\n isEditable: false,\n showFavorite: false,\n showPreview: false,\n showFormId: false,\n isNewBranding: false,\n submissionsKeyword: 'Submissions',\n productType: ''\n};\n\nexport default FormItem;\n","import Styled from 'styled-components';\n\nexport const ScPortalItem = Styled.div`\n font-family: \"Circular\", \"Circular Std\", \"Circular Std Bold\", \"Circular Std Book\", \"Work Sans SemiBold\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial,\n sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n display: flex;\n align-items: center;\n position: relative;\n padding: 0 9px 0 0;\n max-width: 100%;\n`;\n","import { css } from 'styled-components';\n\nconst portalContentCommonStyle = css`\n margin: 0;\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n`;\n\nexport const portalTitleCommonStyle = css`\n ${portalContentCommonStyle}\n display: block;\n max-width: 100%;\n padding: 0;\n font-size: 16px;\n\n\n @media screen and (max-width: 600px) {\n white-space: normal;\n }\n`;\n\nexport const portalDescriptionCommonStyle = css`\n ${portalContentCommonStyle}\n font-size: 14px;\n`;\n","import React from 'react';\nimport { string } from 'prop-types';\nimport Styled from 'styled-components';\nimport { t } from '@jotforminc/translation';\n\nimport { portalTitleCommonStyle } from './commonCss';\n\nconst ScTitleRenderer = Styled.h2`\n ${portalTitleCommonStyle}\n`;\n\nconst TitleRenderer = ({ title }) => {t(title)};\n\nTitleRenderer.propTypes = { title: string };\nTitleRenderer.defaultProps = { title: '' };\n\nexport default TitleRenderer;\n","import React from 'react';\nimport Styled from 'styled-components';\nimport { elementType } from 'prop-types';\nimport { portalDescriptionCommonStyle } from './commonCss';\n\nconst ScDescriptionRenderer = Styled.p`\n ${portalDescriptionCommonStyle}\n`;\n\nconst DescriptionRenderer = ({ children }) => {children};\n\nDescriptionRenderer.propTypes = { children: elementType.isRequired };\n\nexport default DescriptionRenderer;\n","import React from 'react';\nimport Styled from 'styled-components';\nimport { propTypes } from '@jotforminc/constants';\n\nconst ScItemContentRenderer = Styled.div`\n text-align: left;\n flex-grow: 1;\n white-space: nowrap;\n overflow: hidden;\n`;\n\nconst ItemContentRenderer = ({ children }) => ({children});\n\nItemContentRenderer.propTypes = { children: propTypes.renderable.isRequired };\n\nexport default ItemContentRenderer;\n","import React from 'react';\nimport moment from 'moment';\nimport {\n IconLocationPinFilled, IconTagsFilled, IconCalendarFilled, IconNumberSquareFilled,\n IconTypeSquareFilled, IconTagFilled, IconText, IconPaperclipDiagonal, IconAt,\n IconPhoneFilled, IconPenSignFilled, IconStarFilled, IconConditionalBranchFilled,\n IconUsersFilled, IconShapesFilled, IconSquaresArrow\n} from '@jotforminc/svg-icons';\n\nimport {\n operators, dateOperators, emptyValueOperators, UTILITY_FIELDS,\n startAllTime, customStr, allTimeStr, lessThanStr, greaterThanStr,\n startFormat, endFormat, oldLessThanStr, oldGreaterThanStr, ICON_SIZES\n} from '../components/constants';\n\nexport const getFilterGroupText = (filters, allFilterText) => {\n const groupFilter = filters.find(f => f.field === 'new' || f.field === 'flag' || f.field === 'formIDs' || f.field === 'ai_agent_id' || f.field === 'conversation_type');\n\n if (groupFilter) {\n const {\n field, value, operator, text\n } = groupFilter;\n\n if (field === 'formIDs') {\n if (text) return text;\n\n if (value?.slice(-1)[0] === 'allForms') return 'All Forms';\n\n const selectedTitle = filters.slice(-1)[0].selectedFormTitle;\n\n if (selectedTitle) {\n return selectedTitle;\n }\n\n return 'All Forms';\n }\n\n if (field === 'ai_agent_id') {\n return operator === 'ne' && value === 'null' ? 'Conversations' : 'No Conversations';\n }\n\n if (field === 'conversation_type') {\n return value === 'submission' ? 'Submission' : 'Incomplete';\n }\n\n if (field === 'new') {\n return operator === 'eq' && value === '0' ? 'Read' : 'Unread';\n }\n\n if (field === 'flag') {\n return value === '1' ? 'Starred' : 'Unstarred';\n }\n }\n\n if (window.location.pathname.indexOf('/sentbox/all') > -1) {\n return 'All Forms';\n }\n\n return allFilterText || 'All Submissions';\n};\n\nexport const getFilterGroup = filters => {\n const groupFilter = filters.find(f => f.field === 'new' || f.field === 'flag' || f.field === 'formIDs' || f.field === 'ai_agent_id' || f.field === 'conversation_type');\n if (groupFilter) {\n const { field, value, operator } = groupFilter;\n\n if (field === 'new') {\n return operator === 'eq' && value === '0' ? 'read' : 'unread';\n }\n\n if (field === 'ai_agent_id') {\n return operator === 'ne' && value === 'null' ? 'ai_agent_id' : 'no_ai_agent_id';\n }\n\n if (field === 'conversation_type') {\n return value === 'submission' ? 'submission' : 'incomplete';\n }\n\n if (field === 'flag') {\n return value === '1' ? 'flag' : 'unflag';\n }\n\n if (field === 'formIDs') {\n return value[0];\n }\n }\n\n if (window.location.pathname.indexOf('/sentbox/all') > -1) {\n return 'allForms';\n }\n\n return 'all';\n};\n\nexport const getFilterTimeRange = filters => {\n const timeRangeFilters = filters.filter(f => f.field === 'created_at');\n const newFilters = {};\n if (timeRangeFilters.length > 0) {\n timeRangeFilters.forEach(f => {\n newFilters[`${f.field}:${f.operator}:${f.type}`] = f.value;\n });\n return newFilters;\n }\n return newFilters;\n};\n\nexport const getNextFilterID = filters => {\n return filters.reduce((nextID, filter) => {\n return filter.id >= nextID ? filter.id + 1 : nextID;\n }, 0);\n};\n\nexport const getOperators = genericType => {\n let operatorList = Object.assign([], operators);\n if (genericType === 'submitter') {\n return operators.filter(op => op.name === 'eq');\n }\n if (genericType === 'submittedVia') {\n return operators.filter(op => op.title === 'eq');\n }\n if (genericType === 'bool') {\n return operators.filter(operator => operator.name === 'eq');\n }\n if (genericType === 'submissionWidget' || genericType === 'dropdown' || genericType === 'scale') {\n operatorList = operators.filter(operator => operator.name !== 'matches');\n } else if (genericType === 'date') {\n operatorList = Object.assign([], dateOperators);\n }\n if (genericType !== 'scale' && genericType !== 'numeric' && genericType !== 'date') {\n operatorList = operators.filter(operator => ['lt', 'lte', 'gt', 'gte'].indexOf(operator.name) < 0);\n }\n if (genericType === 'workflow' || genericType === 'eq') {\n operatorList = operators.filter(operator => ['eq', 'ne'].includes(operator.name));\n }\n\n return operatorList;\n};\n\nexport const getDefaultHeaderText = (questions, question) => {\n const {\n type: qType = '',\n text,\n subLabel,\n hint,\n order\n } = question;\n\n const readyToUseLabels = {\n control_fullname: 'Name',\n control_email: 'Email',\n control_address: 'Address',\n control_phone: 'Phone',\n control_datetime: 'Date',\n control_time: 'Time',\n control_inline: 'Fill in the Blanks'\n };\n\n // if question has a label, then use it\n if (text) {\n return text;\n }\n\n // if question does not has a label but it has a sublabel, then use it\n if (subLabel) {\n return subLabel;\n }\n\n // if question does not has a label or a sublabel then look for placeholder text\n if (hint) {\n return hint;\n }\n\n // if one of the ready to use fields use default label text\n if (['control_fullname', 'control_email', 'control_address', 'control_phone', 'control_datetime', 'control_time', 'control_inline'].indexOf(qType) > -1) {\n return readyToUseLabels[qType];\n }\n\n // if question does not has a label, sublabel or placeholder and not a ready to use field then look for the previous question. It might be a text.\n if (qType !== 'control_text') {\n const qOrder = parseInt(order, 10);\n const previousQuestion = Object.values(questions).find(q => q.order === (qOrder - 1).toString());\n\n if (previousQuestion && previousQuestion.type === 'control_text') {\n return previousQuestion.text.replace(/<(?:.|\\n)*?>/gm, '');\n }\n }\n\n // if there is nothing to use then use the question type for column header\n const typeLabel = qType.replace('control_', '');\n return typeLabel.charAt(0).toUpperCase() + typeLabel.slice(1);\n};\n\nexport const getStaticOption = (obj, value, type) => {\n const objOption = obj && obj.find(f => f[type] === value);\n return objOption ? objOption.text : '';\n};\n\n// eslint-disable-next-line complexity\nexport const getSVGbyQuestionType = type => {\n switch (type) {\n case 'control_checkbox':\n return {\n svg: \n };\n case 'control_datetime':\n case 'control_submissionDate':\n case 'control_appointment':\n case 'control_birthdate':\n case 'control_documentCreationTime':\n case 'control_documentModificationTime':\n return {\n svg: \n };\n case 'control_time':\n return {\n svg: \n };\n case 'control_dropdown':\n return {\n svg: \n };\n case 'control_email':\n return {\n svg: \n };\n case 'control_fullname':\n return {\n svg: \n };\n case 'control_stripe':\n case 'control_paypal':\n return {\n svg: \n };\n case 'control_number':\n case 'control_spinner':\n return {\n svg: \n };\n case 'control_phone':\n return {\n svg: \n };\n case 'control_radio':\n return {\n svg: \n };\n case 'control_text':\n return {\n svg: \n };\n case 'control_textarea':\n return {\n svg: \n };\n case 'control_textbox':\n return {\n svg: \n };\n case 'control_address':\n return {\n svg: \n };\n case 'control_documentAttachment':\n case 'control_attachment':\n return {\n svg: \n };\n case 'control_rating':\n return {\n svg: \n };\n case 'control_fileupload':\n return {\n svg: \n };\n case 'control_workflowStatus':\n return {\n svg: \n };\n case 'control_assignee':\n return {\n svg: \n };\n case 'control_signature':\n return {\n svg: \n };\n case 'control_documentStatus':\n return {\n svg: \n };\n case 'control_widget':\n return {\n svg: \n };\n default:\n return {\n svg: \n };\n }\n};\n\nexport const convertFiltersArrayToObject = (filters, handleCurrentFilters = null) => {\n const currentLockedFilters = {};\n const currentUnlockedFilters = {};\n const reducedFilters = filters.reduce((filterString, filter) => {\n if (!filter || (filter && !filter.value)) return filterString;\n\n const key = [filter.field, filter.operator, filter.type]\n .filter(f => f).map(f => f).join(':');\n // If value is not initialize in the filterString directly put the value inside.\n // Not support multiple values for the appointment and datetime filter types, take the last filter inserted.\n if (filterString[key] === undefined || filter.type === 'datetime' || filter.type === 'appointment') {\n if (filter.lock === '1') {\n currentLockedFilters[key] = filter.value;\n } else {\n currentUnlockedFilters[key] = filter.value;\n }\n return {\n ...filterString,\n [key]: filter.value\n };\n }\n // If there is a present filter with same configuration do not add it to the object\n // Filter outs empty filters too\n if ((Array.isArray(filterString[key]) && filterString[key].includes(filter.value)) || filterString[key] === filter.value) return filterString;\n\n // Check if current value of the filter is an array.\n if (filter.lock === '1') {\n if (currentLockedFilters[key] === undefined) {\n currentLockedFilters[key] = filter.value;\n } else {\n currentLockedFilters[key] = Array.isArray(currentLockedFilters[key]) ? [...currentLockedFilters[key], filter.value] : [currentLockedFilters[key], filter.value];\n }\n } else {\n // eslint-disable-next-line no-lonely-if\n if (currentUnlockedFilters[key] === undefined) {\n currentUnlockedFilters[key] = filter.value;\n } else {\n currentUnlockedFilters[key] = Array.isArray(currentUnlockedFilters[key]) ? [...currentUnlockedFilters[key], filter.value] : [currentUnlockedFilters[key], filter.value];\n }\n }\n return {\n ...filterString,\n [key]: Array.isArray(filterString[key]) ? [...filterString[key], filter.value] : [filterString[key], filter.value]\n };\n }, {});\n if (handleCurrentFilters) {\n handleCurrentFilters({ currentLockedFilters, currentUnlockedFilters });\n }\n return reducedFilters;\n};\n\n// Returns filters with single values from the filter list\nconst getSingleFilters = (filters, lockedFilters = {}) => {\n const singleValues = Object.entries(filters).filter(([, value]) => !Array.isArray(value));\n return singleValues.map(([key, value], index) => {\n if (key === 'timeFilterText') return false;\n const [field, operator, type] = key.split(':');\n return {\n field,\n operator,\n type,\n value,\n isFilled: true,\n isValueDisabled: emptyValueOperators.indexOf(operator) !== -1,\n id: index,\n lock: lockedFilters[key] === value ? '1' : '0'\n };\n });\n};\n\n// Extract/Create new filters from filters with multiple values by creating a new filter for each value\n// With same field, operator and type\nconst extractMultipleFilters = (filters, start, lockedFilters = {}) => {\n let index = start;\n const multipleValues = Object.entries(filters).filter(([, value]) => Array.isArray(value));\n return multipleValues.reduce((acc, [key, value]) => {\n const [field, operator, type] = key.split(':');\n value.forEach(v => {\n const lockFilterValuesToSearch = Array.isArray(lockedFilters[key]) ? lockedFilters[key] : [lockedFilters[key]];\n acc.push({\n field,\n operator,\n type,\n value: v,\n isFilled: true,\n isValueDisabled: emptyValueOperators.indexOf(operator) !== -1,\n id: index,\n lock: lockFilterValuesToSearch.includes(v) ? '1' : '0'\n });\n index++;\n });\n return acc;\n }, []);\n};\n\nexport const convertFiltersObjectToArray = (filters, lockedFilters = []) => {\n // gets the single valued filters extract filters from multiple valued filters and returns them as array\n const singleFilters = getSingleFilters(filters, lockedFilters);\n const multipleFilters = extractMultipleFilters(filters, singleFilters.length, lockedFilters);\n return [...singleFilters, ...multipleFilters].filter(f => f);\n};\n\nexport const createOrderByValue = ({\n sortByQid,\n sortIsDescending,\n isDatetime,\n isNumeric,\n isSelectable,\n isAppointment\n}) => `${\n sortByQid\n},${\n sortIsDescending ? 'desc' : 'asc'\n}${\n isDatetime ? ',datetime' : ''\n}${\n isNumeric ? ',numeric' : ''\n}${\n isSelectable ? ',selectable' : ''\n}${\n isAppointment ? ',appointment' : ''\n}`;\n\nexport const getOrderByValue = (view, questions) => {\n if (!view) return '';\n\n let sortByQid = view.get('sortByQid', false);\n if (!sortByQid) return '';\n\n // if selectedColumn is one of the non-question columns then remove the 'q' prefix\n UTILITY_FIELDS.forEach(nq => {\n if (sortByQid.includes(nq)) {\n sortByQid = nq;\n }\n });\n\n const sortIsDescending = view.get('sortIsDescending');\n const qType = questions.getIn([sortByQid.replace('q', ''), 'type'], '');\n\n const isDatetime = qType === 'control_datetime' || qType === 'control_birthdate';\n const isNumeric = qType === 'control_number' || qType === 'control_spinner';\n const isSelectable = qType === 'control_radio' || qType === 'control_checkbox';\n const isAppointment = qType === 'control_appointment';\n\n return createOrderByValue({\n sortByQid,\n sortIsDescending,\n isDatetime,\n isNumeric,\n isSelectable,\n isAppointment\n });\n};\n\nexport const getDateThresholdRange = timeFilterType => {\n let startDate;\n let endDate;\n\n switch (timeFilterType) {\n case allTimeStr:\n startDate = startAllTime;\n endDate = moment();\n break;\n case 'Today':\n startDate = moment();\n endDate = moment();\n break;\n case 'Yesterday':\n startDate = moment().subtract(1, 'days');\n endDate = moment().subtract(1, 'days');\n break;\n case 'Last 3 days':\n startDate = moment().subtract(2, 'days');\n endDate = moment();\n break;\n case 'Last 7 days':\n startDate = moment().subtract(6, 'days');\n endDate = moment();\n break;\n case 'Last 30 days':\n startDate = moment().subtract(29, 'days');\n endDate = moment();\n break;\n case 'Last 90 days':\n startDate = moment().subtract(89, 'days');\n endDate = moment();\n break;\n case 'Last 180 days':\n startDate = moment().subtract(179, 'days');\n endDate = moment();\n break;\n case 'Last 1 year':\n startDate = moment().subtract(1, 'year');\n endDate = moment();\n break;\n case 'Last 2 years':\n startDate = moment().subtract(2, 'years');\n endDate = moment();\n break;\n case 'Last 3 years':\n startDate = moment().subtract(3, 'years');\n endDate = moment();\n break;\n case 'Previous week':\n startDate = moment().subtract(7, 'days').startOf('week');\n endDate = moment().subtract(7, 'days').endOf('week');\n break;\n case 'Previous month':\n startDate = moment().subtract(1, 'months').startOf('month');\n endDate = moment().subtract(1, 'months').endOf('month');\n break;\n case 'Last 3 months':\n startDate = moment().subtract(3, 'months').startOf('month');\n endDate = moment();\n break;\n case 'This year':\n startDate = moment().startOf('year');\n endDate = moment();\n break;\n case 'Previous year':\n startDate = moment().subtract(1, 'year').startOf('year');\n endDate = moment().subtract(1, 'year').endOf('year');\n break;\n case customStr:\n startDate = moment().subtract(1, 'days');\n endDate = moment();\n break;\n default:\n startDate = startAllTime;\n endDate = moment();\n break;\n }\n\n return {\n startDate,\n endDate,\n selectedDate: endDate,\n timeFilterType,\n showDatePicker: 'start'\n };\n};\n\nexport const createFilterFromTimeFilterText = timeFilterText => {\n if (!timeFilterText || timeFilterText === allTimeStr || timeFilterText === customStr) return {};\n const timeRangeObj = getDateThresholdRange(timeFilterText);\n return {\n [greaterThanStr]: timeRangeObj.startDate.format(startFormat),\n [lessThanStr]: timeRangeObj.endDate.format(endFormat)\n };\n};\n\nexport const getExactOtherFilters = (filters, timeFilterText) => {\n const newFilters = { ...filters };\n if (timeFilterText && timeFilterText !== allTimeStr && timeFilterText !== customStr) {\n if (newFilters[oldLessThanStr]) delete newFilters[oldLessThanStr];\n if (newFilters[oldGreaterThanStr]) delete newFilters[oldGreaterThanStr];\n return newFilters;\n }\n return newFilters;\n};\n\nexport const getPreparedFilters = filters => {\n const {\n timeFilterText,\n ...otherFilters\n } = filters;\n\n return {\n ...getExactOtherFilters(otherFilters, timeFilterText),\n ...createFilterFromTimeFilterText(timeFilterText)\n };\n};\n\nconst dynamicTimeFilterOptionList = ['Today', 'Last 3 days', 'Last 7 days', 'Last 30 days', 'Last 1 year', 'Previous week', 'Previous month', 'This year', 'Previous year'];\n\n// TODO Check here\nexport const getUpdatedTimeFilterText = (removedFilter, timeFilterText, remainingFilters) => {\n const convertedFilter = convertFiltersArrayToObject([removedFilter]);\n if ((convertedFilter[greaterThanStr] || convertedFilter[lessThanStr]) && dynamicTimeFilterOptionList.indexOf(timeFilterText) > -1) {\n return customStr;\n }\n const convertedRemainingFilter = convertFiltersArrayToObject(remainingFilters);\n if (convertedRemainingFilter[greaterThanStr] || convertedRemainingFilter[lessThanStr]) {\n return customStr;\n }\n return allTimeStr;\n};\n\nexport const getTrueDateTimeStr = datetime => {\n const count = datetime.split('').filter(key => key === ':').length;\n if (count === 1) {\n return `${datetime}:00`;\n }\n return datetime;\n};\n\nconst IMAGE_TYPES = {\n icon: 'LOGO/ICON',\n image: 'LOGO/IMAGE'\n};\n\nexport const getIconInformationForPortalItem = (titleForAlt, icon, iconSize = ICON_SIZES.SMALL) => {\n const {\n iconColor,\n type,\n url,\n backgroundColor\n } = icon || {};\n\n const isSvgIcon = type === IMAGE_TYPES.icon;\n const alt = `${titleForAlt} Logo`;\n const svgStyleProps = isSvgIcon ? { backgroundColor } : {};\n\n const defaultIconUrlV0 = 'https://cdn.jotfor.ms/resources/assets/icon/min/jotform-logomark-white-400x400.png';\n const defaulIconUrlV1 = 'https://cdn.jotfor.ms/resources/assets/icon/min/jotform-icon-orange-400x400.png';\n const defaultIconURLBranding21 = 'https://cdn.jotfor.ms/assets/img/logo2021/jotform_portal_logo_icon400x400-dark.png';\n const isDefaultIcon = [defaultIconUrlV0, defaulIconUrlV1, defaultIconURLBranding21].includes(url);\n\n const finalDefaultIcon = 'https://cdn.jotfor.ms/assets/img/portal/pickerItemDefaultB21.png';\n const finalUrl = isDefaultIcon ? finalDefaultIcon : url;\n\n return {\n iconColor,\n alt,\n finalUrl,\n url,\n isSvgIcon,\n svgStyleProps,\n iconSize\n };\n};\n\nexport const ColorList = [\n { backgroundColor: '#FFEBB3' },\n { backgroundColor: '#EDE2FE' },\n { backgroundColor: '#FEE2D5' },\n { backgroundColor: '#D0F0FD' },\n { backgroundColor: '#E1E9F6' },\n { backgroundColor: '#FFBDC7' },\n { backgroundColor: '#BFBCFF' },\n { backgroundColor: '#DCD59D' },\n { backgroundColor: '#D1F7C4' },\n { backgroundColor: '#B5F2EB' },\n { backgroundColor: '#FFBE98' },\n { backgroundColor: '#FFC59E' },\n { backgroundColor: '#AEE5FF' }\n];\n\nexport const extractColor = (index, list) => {\n return index > -1 ? list[index % list.length] : {};\n};\n\nexport const mergeTwoFiltersObjects = (obj1, obj2) => {\n const obj1Clone = { ...obj1 };\n const obj2Clone = { ...obj2 };\n const result = {};\n const obj1Keys = Object.keys(obj1Clone);\n obj1Keys.forEach(key => {\n const obj1Value = obj1Clone[key];\n const obj2Value = obj2Clone[key] ?? [];\n let allValuesOfKey = Array.isArray(obj1Value) ? [...obj1Value] : [obj1Value];\n allValuesOfKey = Array.isArray(obj2Value) ? [...allValuesOfKey, ...obj2Value] : [...allValuesOfKey, obj2Value];\n result[key] = allValuesOfKey.length === 1 ? allValuesOfKey[0] : allValuesOfKey;\n delete obj2Clone[key];\n });\n // Since we deleted duplicate keys from obj2Clone,\n // we can directly put the remaining in the result\n return { ...result, ...obj2Clone };\n};\n\nexport const filtersDifferentiate = (filters, filterObj) => {\n const temp = filters.reduce((acc, curr) => {\n const filter = filterObj[curr];\n // Extract values from filters with multiple entries\n // Differentiate values for the same key with the index of the value\n if (Array.isArray(filter)) {\n filter.forEach((e, i) => {\n acc[`${curr}#${i}`] = e;\n });\n } else {\n acc[`${curr}`] = filter;\n }\n return acc;\n }, {});\n return temp;\n};\n\nexport const checkKeyAndValueExistsOnLockedFilters = (actualKey, value, activeViewLockedFilters) => {\n const tempKey = actualKey.split('#')[0];\n const valueInLockFilters = activeViewLockedFilters[tempKey];\n\n return Array.isArray(valueInLockFilters) ? valueInLockFilters.includes(value) : valueInLockFilters === value;\n};\n\nexport const removeSingleFilterFromFilterObject = (actualKey, value, filterObject) => {\n const tempKey = actualKey.split('#')[0];\n\n const filterObjectClone = { ...filterObject };\n const result = {};\n const keys = Object.keys(filterObjectClone);\n keys.forEach(key => {\n const _value = filterObjectClone[key];\n if (key === tempKey) {\n if (Array.isArray(_value)) {\n const foundIndex = _value.indexOf(value);\n if (foundIndex > -1) {\n _value.splice(foundIndex, 1);\n }\n } else if (_value === value) {\n return;\n }\n }\n const allValuesOfKey = Array.isArray(_value) ? [..._value] : [_value];\n result[key] = allValuesOfKey.length === 1 ? allValuesOfKey[0] : allValuesOfKey;\n });\n return result;\n};\n\nexport const BOARD_SOURCE_FORM_QUESTION = {\n qid: '110',\n name: '__board_submission_source_form_id__'\n};\n\nexport const BOARD_QUESTION_VALUES = {\n [BOARD_SOURCE_FORM_QUESTION.qid]: 'sheetViewForm'\n};\n","export const ICON_SIZES = {\n SMALL: 'small',\n MEDIUM: 'medium',\n LARGE: 'large'\n};\n","import React from 'react';\nimport { string, object } from 'prop-types';\nimport Styled from 'styled-components';\nimport { getIconInformationForPortalItem } from '@jotforminc/search-filter';\nimport { SVGIcon } from '@jotforminc/icon-selector';\nimport { ICON_SIZES } from './constants';\n\nconst ScIconRenderer = Styled.div`\n margin: 12px;\n width: 32px;\n height: 32px;\n min-width: 32px;\n min-height: 32px;\n border-radius: 4px;\n\n ${({ backgroundColor }) => (backgroundColor ? `background-color: ${backgroundColor};` : '')}\n\n & > img {\n width: 100%;\n height: 100%;\n border-radius: 4px;\n object-fit: contain;\n }\n\n * > img {\n width: 100%;\n height: 100%;\n border-radius: 4px\n object-fit: contain;\n }\n\n * > svg.injected-svg {\n width: 100%;\n height: 100%;\n border-radius: 4px;\n padding: 5px;\n }\n\n ${({ iconSize }) => (iconSize === ICON_SIZES.SMALL ? `\n margin: 0 8px 0 0;\n width: 20px;\n height: 20px;\n min-width: 20px;\n min-height: 20px;\n border-radius: 4px;\n ` : '')}\n\n`;\n\nconst IconRenderer = ({\n titleForAlt,\n icon,\n iconSize: initialIconSize\n}) => {\n const {\n isSvgIcon,\n url,\n iconColor,\n finalUrl,\n alt,\n svgStyleProps,\n iconSize\n } = getIconInformationForPortalItem(titleForAlt, icon, initialIconSize);\n return (\n \n {isSvgIcon\n ? (\n \n )\n : (\n { e.target.onerror = null; e.target.src = 'https://cdn.jotfor.ms/assets/img/portal/pickerItemFallbackImg.png'; }}\n />\n )}\n \n );\n};\n\nIconRenderer.propTypes = {\n titleForAlt: string,\n icon: object,\n iconSize: string\n};\n\nIconRenderer.defaultProps = {\n titleForAlt: '',\n icon: {},\n iconSize: ICON_SIZES.MEDIUM\n};\n\nexport default IconRenderer;\n","import React, { useMemo } from 'react';\nimport {\n arrayOf, bool, elementType, oneOf, shape, string\n} from 'prop-types';\nimport { t } from '@jotforminc/translation';\n\nimport { ScPortalItem } from './scPortalItem';\nimport DefaultTitleRenderer from './PortalItemDefaults/TitleRenderer';\nimport DefaultDescriptionRenderer from './PortalItemDefaults/DescriptionRenderer';\nimport DefaultItemContentRenderer from './PortalItemDefaults/ItemContentRenderer';\nimport DefaultIconRenderer from './PortalItemDefaults/IconRenderer';\nimport { ICON_SIZES } from './PortalItemDefaults/constants';\nimport { useMomentDate } from '../../../utils/hooks';\n\nconst PortalItem = ({\n id,\n title,\n icon,\n items,\n updated_at: modifyDate,\n created_at: createdAt,\n isDisabled,\n TitleRenderer,\n DescriptionRenderer,\n ItemContentRenderer,\n IconRenderer,\n iconSize,\n checkoutFormID,\n moveStatus\n}) => {\n const isStoreApp = (Number(checkoutFormID) > 0);\n const [date] = useMomentDate(modifyDate || createdAt, 'YYYY-MM-DD HH:mm');\n const translatedItemDescriptionText = useMemo(() => t('{formsLength} Forms. Modified on {modifyDate}')\n .replace('{formsLength}', items.filter(i => i.type === 'FORM').length)\n .replace('{modifyDate}', date?.format('MMMM D, YYYY')), [items, date]);\n return (\n \n {isDisabled && (\n
    \n )}\n\n \n\n \n \n {translatedItemDescriptionText}\n \n \n );\n};\n\nPortalItem.propTypes = {\n id: string,\n title: string,\n icon: shape({}),\n items: arrayOf(shape({})),\n updated_at: string,\n created_at: string,\n isDisabled: bool,\n TitleRenderer: elementType,\n DescriptionRenderer: elementType,\n ItemContentRenderer: elementType,\n IconRenderer: elementType,\n iconSize: oneOf(Object.values(ICON_SIZES)),\n checkoutFormID: string,\n moveStatus: shape({\n status: string\n })\n};\n\nPortalItem.defaultProps = {\n id: '',\n title: '',\n icon: {},\n items: [],\n updated_at: '',\n created_at: '',\n isDisabled: false,\n TitleRenderer: DefaultTitleRenderer,\n DescriptionRenderer: DefaultDescriptionRenderer,\n ItemContentRenderer: DefaultItemContentRenderer,\n IconRenderer: DefaultIconRenderer,\n iconSize: ICON_SIZES.MEDIUM,\n checkoutFormID: '',\n moveStatus: {}\n};\n\nexport default PortalItem;\n","import Styled, { css } from 'styled-components';\n\nexport const ScPortalOption = Styled.div`\n transition: border 0.15s ease, box-shadow 0.15s ease, transform 10ms linear;\n text-decoration: none;\n border-radius: .25em;\n padding: 9px;\n line-height: ${p => p.theme.lineHeight};\n background: ${p => p.theme.itemBg};\n border: 1px solid ${p => p.theme.itemBorder};\n width: 100%;\n\n\n ${({ isBranding21 }) => (isBranding21 ? css`\n [aria-selected=\"true\"] &, [aria-selected=\"true\"] &:focus, [aria-selected=\"true\"] &:hover {\n border-color: #0099FF;\n background-color: #EDF8FF;\n }\n ` : css`\n [aria-selected=\"true\"] &, [aria-selected=\"true\"] &:focus {\n border-color: #4573E3;\n background-color: #DBE4FA;\n box-shadow: 0 0 0 1px #4573E3 inset;\n }\n `)};\n\n &:hover {\n cursor: pointer;\n border-color: ${({ isBranding21 }) => (isBranding21 ? '#C8CEED' : '#4573E3')};\n background-color: ${({ isBranding21 }) => (isBranding21 ? '#F3F3FE' : '#DBE4FA')};\n ${({ isBranding21 }) => (isBranding21 ? '' : css`box-shadow: 0 0 0 1px #4573E3 inset;`)};\n .itemActions {\n display: block;\n }\n }\n\n &:focus {\n outline: 0;\n border-color: ${p => p.theme.itemBorder};\n background-color: ${p => p.theme.itemBgFocus};\n box-shadow: 0 0 0 1px ${p => p.theme.itemBorder} inset;\n }\n\n\n ${p => (p.isDisabled ? `\n background-color: #FAFAFB;\n border-color: #EBECF3;\n box-shadow: unset;\n cursor: default;\n `\n : '')}\n\n`;\n","import React, { useCallback } from 'react';\nimport { IconCartShoppingFilled } from '@jotforminc/svg-icons';\nimport Styled from 'styled-components';\nimport { shape } from 'prop-types';\nimport PortalItem from './PortalItem';\nimport { ScPortalOption } from './scPortalOption';\nimport { theme as defaultPortalOptionTheme } from '../../FormPicker/helpers/defaultTheme';\nimport { portalDescriptionCommonStyle, portalTitleCommonStyle } from './PortalItemDefaults/commonCss';\n\nconst StyledTitleContainerRenderer = Styled.div`\n && {\n display: flex;\n align-items: center;\n gap: 8px;\n\n svg {\n width: 16px;\n height: 16px;\n }\n }\n`;\n\nconst StyledTitleRenderer = Styled.h2`\n && {\n ${portalTitleCommonStyle}\n font-weight: ${p => p.titleFontWeight};\n color: ${p => p.titleColor};\n font-size: 16px;\n line-height: 20px;\n }\n`;\n\nconst StyledDescriptionRenderer = Styled.p`\n && {\n ${portalDescriptionCommonStyle}\n color: ${p => p.detailsColor};\n font-size: 14px;\n line-height: 18px;\n }\n`;\n\nconst PortalOption = ({ option, theme }) => {\n const isBranding21 = true;\n const { isDisabled = false } = option;\n\n const TitleRenderer = useCallback(({ title, isStoreApp }) => {\n const { titleFontWeight, titleFontSize, titleColor } = theme;\n return (\n \n \n {title}\n \n {isStoreApp && }\n \n );\n }, [theme]);\n\n const DescriptionRenderer = useCallback(({ children }) => {\n const { detailsColor, detailsFontSize } = theme;\n return (\n \n {children}\n \n );\n }, [theme]);\n\n return (\n \n \n \n );\n};\n\nPortalOption.propTypes = {\n option: shape({}),\n theme: shape({})\n};\nPortalOption.defaultProps = {\n option: {},\n theme: defaultPortalOptionTheme\n};\n\nexport default PortalOption;\n","/* eslint-disable max-len */\nimport React from 'react';\nimport {\n bool, string, shape, number\n} from 'prop-types';\nimport Styled from 'styled-components';\nimport { t } from '@jotforminc/translation';\nimport { IconGridDotsVertical } from '@jotforminc/svg-icons';\n\nimport { getShortMonthName } from '../../../../utils/utils';\nimport FormItemWrapper from '../../../FormPicker/FormItem/styled';\nimport { CheckBox } from '../../../FormPicker/CheckBox';\n\nconst ScIconWrapper = Styled.div`\n position: relative;\n margin-right: 18px;\n z-index: 1;\n\n html[dir=\"rtl\"] & {\n margin-right: 0;\n margin-left: .4em;\n }\n`;\n\nconst ScSheetIcon = Styled.div`\n background-position: center;\n background-repeat: no-repeat;\n position: relative;\n width: 25px;\n height: 25px;\n ${p => (\n p.isApp ? (\n `\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 27 27'%3E%3Cpath fill='%230D953B' fill-rule='evenodd' d='M.00132017 23.2035C.00147173 24.6197.386264 24.9996 1.79633 24.9996 5.95863 25.0001 6.51815 25 8.2127 25c.88263-.0001 2.0732-.0001 4.2412-.0001H13v-1.7856h-2.9351c-.24973 0-.45221-.2025-.45221-.4522v-4.8702c0-.2497.20248-.4522.45221-.4522H13v-2.0524h-2.9351c-.24973 0-.45221-.2025-.45221-.4522v-4.8702c0-.24972.20248-.45219.45221-.45219h4.8702c.2497 0 .4522.20247.4522.45219V13h2.0524v-2.9351c0-.24972.2025-.45219.4522-.45219h4.8702c.2497 0 .4522.20247.4522.45219V13H25v-.504c0-2.1838-.0006-4.36759-.0018-10.71799-.0003-1.345989-.424-1.77520719-1.7646-1.77551016C16.8781.00083328 14.6893 0 12.5004 0 10.3116 0 8.12278.00083328 1.76729.00249984.407617.00280281.00132711.41581.00117711 1.76755.00042008 8.11796.00000194 10.3017 1e-8 12.4855c-.00000194 2.1838.00041234 4.3676.00132016 10.718Zm7.10673983.0108H2.23793c-.24976 0-.45224-.2025-.45224-.4522v-4.8702c0-.2497.20248-.4522.45224-.4522h4.87013c.24976 0 .45223.2025.45223.4522v4.8702c0 .2497-.20247.4522-.45223.4522Zm0-7.827H2.23793c-.24976 0-.45224-.2025-.45224-.4522v-4.8702c0-.24972.20248-.45219.45224-.45219h4.87013c.24976 0 .45223.20247.45223.45219v4.8702c0 .2497-.20247.4522-.45223.4522Zm7.82704-7.827h-4.8702c-.24973 0-.45221-.12228-.45221-.27312V4.34587c0-.15084.20248-.27312.45221-.27312h4.8702c.2497 0 .4522.12228.4522.27312v2.94131c0 .15084-.2025.27312-.4522.27312Zm7.8125 0h-4.8702c-.2497 0-.4522-.12228-.4522-.27312V4.34587c0-.15084.2025-.27312.4522-.27312h4.8702c.2497 0 .4522.12228.4522.27312v2.94131c0 .15084-.2025.27312-.4522.27312Zm-15.63954 0H2.23793c-.24976 0-.45224-.12228-.45224-.27312V4.34587c0-.15084.20248-.27312.45224-.27312h4.87013c.24976 0 .45223.12228.45223.27312v2.94131c0 .15084-.20247.27312-.45223.27312Z' clip-rule='evenodd'/%3E%3Cpath fill='%238D4ECC' fill-rule='evenodd' d='M16.5 15c-.8284 0-1.5.6716-1.5 1.5v9c0 .8284.6716 1.5 1.5 1.5h9c.8284 0 1.5-.6716 1.5-1.5v-9c0-.8284-.6716-1.5-1.5-1.5h-9Zm.3278 1.5c-.1808 0-.3273.1466-.3273.3273v3.2735c0 .1808.1465.3273.3273.3273h3.2734c.1808 0 .3274-.1465.3274-.3273v-3.2735c0-.1807-.1466-.3273-.3274-.3273h-3.2734Zm4.727.3273c0-.1807.1466-.3273.3273-.3273h3.2735c.1808 0 .3273.1466.3273.3273v3.2735c0 .1808-.1465.3273-.3273.3273h-3.2735c-.1807 0-.3273-.1465-.3273-.3273v-3.2735Zm1.9445 4.857c-.1821 0-.3298.1477-.3298.3299v1.0418h-1.0419c-.1821 0-.3299.1478-.3299.3299 0 .1821.1478.3299.3299.3299h1.0419v1.0418c0 .1822.1477.3299.3298.3299.1822 0 .3299-.1477.3299-.3299v-1.0418h1.0418c.1822 0 .3299-.1478.3299-.3299 0-.1821-.1477-.3299-.3299-.3299h-1.0418v-1.0418c0-.1822-.1477-.3299-.3299-.3299Zm-6.9984.1959c0-.1808.1465-.3274.3273-.3274h3.2734c.1808 0 .3274.1466.3274.3274v3.2734c0 .1808-.1466.3273-.3274.3273h-3.2734c-.1808 0-.3273-.1465-.3273-.3273v-3.2734Z' clip-rule='evenodd'/%3E%3C/svg%3E\");\n `\n ) : (\n `\n background-image: url(\"data:image/svg+xml,%3Csvg width='25' height='25' viewBox='0 0 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1.796 25c-1.41 0-1.795-.38-1.795-1.797V1.768C.001.416.408.003 1.767.002 14.478 0 10.523 0 23.234.002c1.34 0 1.764.43 1.764 1.776.003 12.7.002 8.735 0 21.436 0 1.4-.397 1.785-1.811 1.786H1.796Zm20.966-1.786c.25 0 .452-.202.452-.452v-4.87a.452.452 0 0 0-.452-.452h-4.87a.452.452 0 0 0-.452.452v4.87c0 .25.202.452.452.452h4.87Zm-12.697 0h4.87c.25 0 .452-.202.452-.452v-4.87a.452.452 0 0 0-.452-.452h-4.87a.452.452 0 0 0-.452.452v4.87c0 .25.202.452.452.452Zm-7.827 0h4.87c.25 0 .452-.202.452-.452v-4.87a.452.452 0 0 0-.452-.452h-4.87a.452.452 0 0 0-.452.452v4.87c0 .25.202.452.452.452Zm15.654-7.827h4.87c.25 0 .452-.202.452-.452v-4.87a.452.452 0 0 0-.452-.452h-4.87a.452.452 0 0 0-.452.452v4.87c0 .25.202.452.452.452Zm-7.827 0h4.87c.25 0 .452-.202.452-.452v-4.87a.452.452 0 0 0-.452-.452h-4.87a.452.452 0 0 0-.452.452v4.87c0 .25.202.452.452.452Zm-7.827 0h4.87c.25 0 .452-.202.452-.452v-4.87a.452.452 0 0 0-.452-.452h-4.87a.452.452 0 0 0-.452.452v4.87c0 .25.202.452.452.452Zm7.827-7.827h4.87c.25 0 .452-.122.452-.273V4.346c0-.151-.202-.273-.452-.273h-4.87c-.25 0-.452.122-.452.273v2.941c0 .151.202.273.452.273Zm7.812 0h4.87c.25 0 .453-.122.453-.273V4.346c0-.151-.203-.273-.452-.273h-4.87c-.25 0-.453.122-.453.273v2.941c0 .151.203.273.452.273Zm-15.64 0h4.871c.25 0 .452-.122.452-.273V4.346c0-.151-.202-.273-.452-.273h-4.87c-.25 0-.452.122-.452.273v2.941c0 .151.202.273.452.273Z' fill='%230D953B'/%3E%3C/svg%3E\");\n `\n )\n )}\n\n ${p => (\n p['data-count'] > 0 ? (\n `&:before {\n content: attr(data-count);\n background: #D93434;\n color: #fff;\n border-radius: 16px;\n position: absolute;\n top: 0;\n right: 0;\n font-weight: 700;\n transform: translate(50%, -50%);\n font-size: 12px;\n padding: 1.5px 3.675px;\n line-height: 1;\n }\n `\n ) : ''\n )}\n`;\n\nconst SheetItem = ({\n option: {\n count,\n form_id: formId,\n name,\n unread,\n status,\n created_at: createdAt,\n updated_at: updatedAt,\n resourceType\n },\n isSelected,\n isMultiSelect,\n submissionsKeyword,\n showFormId,\n isDraggable\n}) => {\n const lastEditDate = (updatedAt ? updatedAt.split(' ')[0] : createdAt.split(' ')[0]).split('-');\n const updatedAtReadable = `${getShortMonthName(parseInt(lastEditDate[1], 10))} ${lastEditDate[2]}, ${lastEditDate[0]}`;\n\n return (\n \n {isMultiSelect && }\n
    \n \n \n \n
    \n
    \n

    \n {name}\n

    \n

    \n {`${showFormId ? `${formId}. ` : ''}${count} ${submissionsKeyword}. ${t('Modified on')} ${updatedAtReadable}.`}\n

    \n
    \n {isDraggable && (\n
    \n \n
    \n )}\n {status !== 'ENABLED' && (\n
    \n {t('This table is disabled.')}\n
    \n )}\n
    \n );\n};\n\nconst sheetItemProperties = shape({\n count: number,\n form_id: string,\n name: string,\n unread: number,\n status: string,\n created_at: string,\n updated_at: string,\n resourceType: string\n});\n\nSheetItem.propTypes = {\n option: sheetItemProperties.isRequired,\n isMultiSelect: bool,\n isSelected: bool.isRequired,\n submissionsKeyword: string,\n showFormId: bool,\n isDraggable: bool\n};\n\nSheetItem.defaultProps = {\n isMultiSelect: true,\n submissionsKeyword: 'Submissions',\n showFormId: false,\n isDraggable: false\n};\n\nexport default SheetItem;\n","/* eslint-disable max-len */\nimport React from 'react';\nimport {\n bool, string, shape, number\n} from 'prop-types';\nimport Styled from 'styled-components';\nimport { t } from '@jotforminc/translation';\nimport { IconGridDotsVertical } from '@jotforminc/svg-icons';\n\nimport { getShortMonthName } from '../../../../utils/utils';\nimport FormItemWrapper from '../../../FormPicker/FormItem/styled';\nimport { CheckBox } from '../../../FormPicker/CheckBox';\n\nconst ScIconWrapper = Styled.div`\n position: relative;\n margin-right: 18px;\n z-index: 1;\n\n html[dir=\"rtl\"] & {\n margin-right: 0;\n margin-left: .4em;\n }\n`;\n\nconst ScReportIcon = Styled.div`\n width: 26px;\n height: 32px;\n background-position: center;\n background-repeat: no-repeat;\n background-image : url(\"data:image/svg+xml,${p => {\n switch (p.type) {\n case 'excel':\n return \"%0A%3Csvg width='19px' height='18px' viewBox='0 0 19 18' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E%3Cg id='Different-Types-of-Reports-Copy-2' transform='translate(-366.000000, -291.000000)' fill-rule='nonzero'%3E%3Cg id='excel-copy' transform='translate(366.000000, 291.000000)'%3E%3Cpath d='M18.40625,15.4750176 L10.09375,15.4750176 C9.766,15.4750176 9.5,15.2090176 9.5,14.8812676 C9.5,14.5535176 9.5,3.33401758 9.5,3.00626758 C9.5,2.67851758 9.766,2.41251758 10.09375,2.41251758 L18.40625,2.41251758 C18.734,2.41251758 19,2.67851758 19,3.00626758 L19,14.8812676 C19,15.2090176 18.734,15.4750176 18.40625,15.4750176 Z' id='Path' fill='%23ECEFF1'%3E%3C/path%3E%3Cg id='Group' transform='translate(9.500000, 4.787109)' fill='%23159C66'%3E%3Cpath d='M2.96875,1.1879082 L0.59375,1.1879082 C0.266,1.1879082 0,0.921908203 0,0.594158203 C0,0.266408203 0.266,0.000408203125 0.59375,0.000408203125 L2.96875,0.000408203125 C3.2965,0.000408203125 3.5625,0.266408203 3.5625,0.594158203 C3.5625,0.921908203 3.2965,1.1879082 2.96875,1.1879082 Z' id='Path'%3E%3C/path%3E%3Cpath d='M2.96875,3.5629082 L0.59375,3.5629082 C0.266,3.5629082 0,3.2969082 0,2.9691582 C0,2.6414082 0.266,2.3754082 0.59375,2.3754082 L2.96875,2.3754082 C3.2965,2.3754082 3.5625,2.6414082 3.5625,2.9691582 C3.5625,3.2969082 3.2965,3.5629082 2.96875,3.5629082 Z' id='Path'%3E%3C/path%3E%3Cpath d='M2.96875,5.9379082 L0.59375,5.9379082 C0.266,5.9379082 0,5.6719082 0,5.3441582 C0,5.0164082 0.266,4.7504082 0.59375,4.7504082 L2.96875,4.7504082 C3.2965,4.7504082 3.5625,5.0164082 3.5625,5.3441582 C3.5625,5.6719082 3.2965,5.9379082 2.96875,5.9379082 Z' id='Path'%3E%3C/path%3E%3Cpath d='M2.96875,8.3129082 L0.59375,8.3129082 C0.266,8.3129082 0,8.0469082 0,7.7191582 C0,7.3914082 0.266,7.1254082 0.59375,7.1254082 L2.96875,7.1254082 C3.2965,7.1254082 3.5625,7.3914082 3.5625,7.7191582 C3.5625,8.0469082 3.2965,8.3129082 2.96875,8.3129082 Z' id='Path'%3E%3C/path%3E%3Cpath d='M6.53125,1.1879082 L5.34375,1.1879082 C5.016,1.1879082 4.75,0.921908203 4.75,0.594158203 C4.75,0.266408203 5.016,0.000408203125 5.34375,0.000408203125 L6.53125,0.000408203125 C6.859,0.000408203125 7.125,0.266408203 7.125,0.594158203 C7.125,0.921908203 6.859,1.1879082 6.53125,1.1879082 Z' id='Path'%3E%3C/path%3E%3Cpath d='M6.53125,3.5629082 L5.34375,3.5629082 C5.016,3.5629082 4.75,3.2969082 4.75,2.9691582 C4.75,2.6414082 5.016,2.3754082 5.34375,2.3754082 L6.53125,2.3754082 C6.859,2.3754082 7.125,2.6414082 7.125,2.9691582 C7.125,3.2969082 6.859,3.5629082 6.53125,3.5629082 Z' id='Path'%3E%3C/path%3E%3Cpath d='M6.53125,5.9379082 L5.34375,5.9379082 C5.016,5.9379082 4.75,5.6719082 4.75,5.3441582 C4.75,5.0164082 5.016,4.7504082 5.34375,4.7504082 L6.53125,4.7504082 C6.859,4.7504082 7.125,5.0164082 7.125,5.3441582 C7.125,5.6719082 6.859,5.9379082 6.53125,5.9379082 Z' id='Path'%3E%3C/path%3E%3Cpath d='M6.53125,8.3129082 L5.34375,8.3129082 C5.016,8.3129082 4.75,8.0469082 4.75,7.7191582 C4.75,7.3914082 5.016,7.1254082 5.34375,7.1254082 L6.53125,7.1254082 C6.859,7.1254082 7.125,7.3914082 7.125,7.7191582 C7.125,8.0469082 6.859,8.3129082 6.53125,8.3129082 Z' id='Path'%3E%3C/path%3E%3C/g%3E%3Cpath d='M10.4725625,0.174080078 C10.3371875,0.0612675781 10.1555,0.0125800781 9.9845,0.0482050781 L0.4845,1.82945508 C0.2030625,1.88170508 0,2.12633008 0,2.41251758 L0,15.4750176 C0,15.7600176 0.2030625,16.0058301 0.4845,16.0580801 L9.9845,17.8393301 C10.020125,17.8464551 10.0569375,17.8500176 10.09375,17.8500176 C10.2315,17.8500176 10.3656875,17.8025176 10.4725625,17.7134551 C10.609125,17.6006426 10.6875,17.4320176 10.6875,17.2562676 L10.6875,0.631267578 C10.6875,0.454330078 10.609125,0.286892578 10.4725625,0.174080078 Z' id='Path' fill='%2321A872'%3E%3C/path%3E%3Cpath d='M8.16525,10.9280801 L6.2878125,8.78226758 L8.186625,6.34076758 C8.3885,6.08189258 8.341,5.70901758 8.0833125,5.50714258 C7.825625,5.30526758 7.45275,5.35276758 7.2496875,5.61045508 L5.491,7.87145508 L4.009,6.17808008 C3.7916875,5.92870508 3.4164375,5.90614258 3.1718125,6.12226758 C2.9248125,6.33839258 2.899875,6.71364258 3.116,6.95945508 L4.7488125,8.82620508 L3.0934375,10.9542051 C2.8915625,11.2130801 2.9390625,11.5859551 3.19675,11.7878301 C3.306,11.8721426 3.4354375,11.9125176 3.5625,11.9125176 C3.7394375,11.9125176 3.914,11.8341426 4.0315625,11.6833301 L5.545625,9.73583008 L7.27225,11.7082676 C7.3898125,11.8436426 7.5536875,11.9125176 7.71875,11.9125176 C7.8576875,11.9125176 7.996625,11.8638301 8.1094375,11.7652676 C8.3564375,11.5491426 8.381375,11.1738926 8.16525,10.9280801 Z' id='Path' fill='%23FAFAFA'%3E%3C/path%3E%3C/g%3E%3C/g%3E%3C/g%3E%3C/svg%3E\";\n case 'csv':\n return \"%3Csvg width='19' height='16' viewBox='0 0 19 16' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Crect fill='%23ECEFF1' width='19' height='16' rx='1'/%3E%3Cpath d='M18 0H1a1 1 0 00-1 1v7.55h19V1a1 1 0 00-1-1z' fill='%23159C66' fill-rule='nonzero'/%3E%3Cpath d='M5.523 6.75c1.324 0 2.002-.878 2.182-1.603l-.858-.26c-.127.44-.519.965-1.324.965-.758 0-1.463-.552-1.463-1.556 0-1.07.745-1.576 1.45-1.576.818 0 1.184.499 1.297.95l.864-.272c-.186-.765-.858-1.563-2.161-1.563-1.263 0-2.4.958-2.4 2.46C3.11 5.8 4.206 6.75 5.522 6.75zm4.482 0c1.098 0 1.703-.732 1.703-1.457 0-.665-.459-1.223-1.317-1.39l-.658-.126c-.346-.066-.512-.272-.512-.532 0-.312.292-.598.738-.598.598 0 .811.405.858.665l.824-.253c-.106-.532-.545-1.224-1.689-1.224-.89 0-1.642.639-1.642 1.477 0 .711.485 1.197 1.237 1.35l.658.133c.366.073.572.286.572.558 0 .333-.273.579-.765.579-.665 0-.99-.42-1.03-.885l-.852.226c.073.672.625 1.477 1.875 1.477zm4.695-.1l1.75-4.715h-.972l-1.23 3.505-1.23-3.505h-1.004l1.742 4.715h.944z' fill='%23FFF' fill-rule='nonzero'/%3E%3Crect fill='%23CCD0DA' x='6.65' y='11.4' width='5.7' height='1' rx='.4'/%3E%3Crect fill='%23CCD0DA' x='6.65' y='9.5' width='5.7' height='1' rx='.4'/%3E%3Crect fill='%23CCD0DA' x='6.65' y='13.3' width='5.7' height='1' rx='.4'/%3E%3Crect fill='%23CCD0DA' x='.95' y='11.4' width='4.75' height='1' rx='.4'/%3E%3Crect fill='%23CCD0DA' x='.95' y='9.5' width='4.75' height='1' rx='.4'/%3E%3Crect fill='%23CCD0DA' x='.95' y='13.3' width='4.75' height='1' rx='.4'/%3E%3Crect fill='%23CCD0DA' x='13.3' y='11.4' width='4.75' height='1' rx='.4'/%3E%3Crect fill='%23CCD0DA' x='13.3' y='9.5' width='4.75' height='1' rx='.4'/%3E%3Crect fill='%23CCD0DA' x='13.3' y='13.3' width='4.75' height='1' rx='.4'/%3E%3C/g%3E%3C/svg%3E\";\n case 'rss':\n return \"%0A%3Csvg width='17px' height='17px' viewBox='0 0 17 17' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E%3Cg id='Different-Types-of-Reports-Copy-3' transform='translate(-367.000000, -379.000000)'%3E%3Cg id='Group-8' transform='translate(314.000000, 369.000000)'%3E%3Cg id='rss' transform='translate(53.000000, 10.000000)'%3E%3Crect id='Rectangle' fill='%23EC7838' x='0' y='0' width='17' height='17' rx='1.5'%3E%3C/rect%3E%3Cg id='Group' transform='translate(1.671875, 2.000000)' fill='%23E6EEFF' fill-rule='nonzero'%3E%3Cpath d='M3.72864636,11.1546699 C3.72864636,10.6405195 3.52123437,10.1760586 3.1852832,9.84007031 C2.84933203,9.50411914 2.38483398,9.29670715 1.87068359,9.29670715 C0.845277344,9.2937832 0.009796875,10.1293008 0.0127577377,11.1546328 C0.0127577377,11.6687832 0.220207031,12.133207 0.556158203,12.4691582 C0.892109375,12.8051094 1.35657031,13.012522 1.87068359,13.012522 C2.89605273,13.0155566 3.73157031,12.1800391 3.72864636,11.1546699 Z' id='Path'%3E%3C/path%3E%3Cpath d='M11.7855293,12.3933066 C11.1019375,12.3933066 10.5469297,11.8382617 10.5468926,11.1546699 C10.5498242,8.7621543 9.57414453,6.59455859 8.00245117,5.02290234 C6.43075781,3.45124609 4.26319922,2.4755293 1.87068359,2.47846094 C1.18712891,2.47846094 0.632046875,1.92341602 0.632046875,1.23982422 C0.632046875,0.556269531 1.1870918,0.00122460937 1.87064648,0.00122460937 C4.94679102,0.00415625 7.73659961,1.25151367 9.75516406,3.27011523 C11.7737285,5.2887168 13.021123,8.0785625 13.0240547,11.1546328 C13.0240547,11.8382617 12.4691211,12.3933066 11.7855293,12.3933066 Z' id='Path'%3E%3C/path%3E%3Cpath d='M6.828125,12.3962383 C6.14457031,12.3962383 5.58659375,11.8382988 5.58659375,11.154707 C5.58659375,10.1322324 5.17178516,9.20327344 4.49695117,8.52847656 C3.82508594,7.85661133 2.89608984,7.44176563 1.8707207,7.43883398 C1.18712891,7.43883398 0.629189453,6.88085742 0.629189453,6.19730273 C0.629189453,5.51374805 1.18712891,4.95577148 1.8707207,4.95577148 C3.57968164,4.95870313 5.12792188,5.65394727 6.24970117,6.77572656 C7.37148047,7.89750586 8.06672461,9.4457832 8.06965625,11.154707 C8.06965625,11.8382988 7.51167969,12.3962383 6.828125,12.3962383 Z' id='Path'%3E%3C/path%3E%3C/g%3E%3C/g%3E%3C/g%3E%3C/g%3E%3C/g%3E%3C/svg%3E\";\n case 'table':\n return \"%3Csvg width='19' height='16' viewBox='0 0 19 16' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Crect fill='%23ECEFF1' width='19' height='16' rx='1'/%3E%3Cpath d='M18 0H1a1 1 0 00-1 1v4h19V1a1 1 0 00-1-1z' fill='%23504B66' fill-rule='nonzero'/%3E%3Ccircle fill='%23F75B5B' fill-rule='nonzero' cx='2.5' cy='2.5' r='1.5'/%3E%3Ccircle fill='%23F2C273' fill-rule='nonzero' cx='6.5' cy='2.5' r='1.5'/%3E%3Ccircle fill='%2371D18F' fill-rule='nonzero' cx='10.5' cy='2.5' r='1.5'/%3E%3Crect fill='%23CCD0DA' x='6' y='7' width='12' height='2' rx='.4'/%3E%3Crect fill='%23CCD0DA' x='6' y='10' width='12' height='2' rx='.4'/%3E%3Crect fill='%23CCD0DA' x='6' y='13' width='12' height='2' rx='.4'/%3E%3Crect fill='%2397A0AF' x='1' y='7' width='5' height='2' rx='.4'/%3E%3Crect fill='%2397A0AF' x='1' y='10' width='5' height='2' rx='.4'/%3E%3Crect fill='%2397A0AF' x='1' y='13' width='5' height='2' rx='.4'/%3E%3C/g%3E%3C/svg%3E\";\n case 'grid':\n return \"%3Csvg width='19' height='16' viewBox='0 0 19 16' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Crect fill='%23ECEFF1' width='19' height='16' rx='1'/%3E%3Cpath d='M18 0H1a1 1 0 00-1 1v7.55h19V1a1 1 0 00-1-1z' fill='%2334C7EC' fill-rule='nonzero'/%3E%3Cpath d='M3.538 7.3c.768 0 1.27-.345 1.5-.69l.064.582h.803V4.546H3.366v.86h1.607c-.058.359-.423.99-1.363.99-.853 0-1.606-.595-1.606-1.743 0-1.205.832-1.728 1.599-1.728.825 0 1.248.523 1.377.975l.946-.337C5.676 2.782 4.936 2 3.603 2 2.226 2 1 3.011 1 4.653 1 6.295 2.169 7.3 3.538 7.3zm4.36-.108V5.234h.517l.996 1.958h1.105l-1.09-2.08c.667-.193 1.082-.731 1.082-1.441 0-.882-.63-1.563-1.62-1.563H6.902v5.084h.996zm.803-2.811h-.803V2.968h.803c.502 0 .796.28.796.71 0 .416-.294.703-.796.703zm3.686 2.81V2.109h-1.004v5.084h1.004zm2.976 0c1.449 0 2.517-.932 2.517-2.538 0-1.606-1.061-2.545-2.51-2.545H13.55v5.084h1.814zm-.036-.917h-.789V3.025h.796c.832 0 1.52.524 1.52 1.628 0 1.104-.695 1.62-1.527 1.62z' fill='%23FFF' fill-rule='nonzero'/%3E%3Crect fill='%23CCD0DA' x='6.65' y='11.4' width='11.5' height='1' rx='.4'/%3E%3Crect fill='%23CCD0DA' x='6.65' y='9.5' width='11.5' height='1' rx='.4'/%3E%3Crect fill='%23CCD0DA' x='6.65' y='13.3' width='11.5' height='1' rx='.4'/%3E%3Crect fill='%239ADDEE' x='.95' y='11.4' width='4.75' height='1' rx='.4'/%3E%3Crect fill='%239ADDEE' x='.95' y='9.5' width='4.75' height='1' rx='.4'/%3E%3Crect fill='%239ADDEE' x='.95' y='13.3' width='4.75' height='1' rx='.4'/%3E%3C/g%3E%3C/svg%3E\";\n case 'calendar':\n case 'cal':\n return \"%3Csvg width='19px' height='16px' viewBox='0 0 19 16' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Crect fill='%23ECEFF1' width='19' height='16' rx='1'/%3E%3Crect fill='%239ADDEE' x='0.5' y='4.5' width='3' height='2' rx='0.4'/%3E%3Crect fill='%23A4D9A8' x='10.5' y='8.5' width='3' height='2' rx='0.4'/%3E%3Crect fill='%23FFEA9C' x='5.5' y='12.5' width='3' height='2' rx='0.4'/%3E%3Cpath stroke='%23CCD0DA' stroke-width='0.5' stroke-linecap='square' d='M4.5.5v15M9.5.5v15M14.5.5v15'/%3E%3Cpath d='M18 0H1a1 1 0 00-1 1v3h19V1a1 1 0 00-1-1z' fill='%23FBAB31' fill-rule='nonzero'/%3E%3Cpath stroke='%23CCD0DA' stroke-width='0.5' stroke-linecap='square' d='M.5 7.5h18M.5 11.5h18'/%3E%3C/g%3E%3C/svg%3E\";\n case 'visual':\n case 'reports':\n default:\n return \"%3Csvg width='26' height='32' viewBox='0 0 26 32' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M.5 3.125C.5 1.685 1.695.5 3.192.5h19.616C24.305.5 25.5 1.685 25.5 3.125v25.75c0 1.44-1.195 2.625-2.692 2.625H3.192C1.695 31.5.5 30.315.5 28.875V3.125Z' fill='%23fff' stroke='%23B1C3E9'/%3E%3Cpath d='M5 8.125C5 7.504 5.448 7 6 7h2c.552 0 1 .504 1 1.125V25H5V8.125Z' fill='%2309F'/%3E%3Cpath d='M11 13.13c0-.624.448-1.13 1-1.13h2c.552 0 1 .506 1 1.13V25h-4V13.13Z' fill='%23FF6100'/%3E%3Cpath d='M17 9.097C17 8.49 17.448 8 18 8h2c.552 0 1 .491 1 1.097V25h-4V9.097Z' fill='%23FFB629'/%3E%3C/svg%3E\";\n }\n }}\");`;\n\nconst ReportsItem = ({\n option: {\n form_count: formCount,\n form_id: formId,\n title,\n status,\n created_at: createdAt,\n updated_at: updatedAt,\n list_type: listType\n },\n isSelected,\n isMultiSelect,\n submissionsKeyword,\n showFormId,\n isDraggable\n}) => {\n const lastEditDate = (updatedAt ? updatedAt.split(' ')[0] : createdAt.split(' ')[0]).split('-');\n const updatedAtReadable = `${getShortMonthName(parseInt(lastEditDate[1], 10))} ${lastEditDate[2]}, ${lastEditDate[0]}`;\n\n return (\n \n {isMultiSelect && }\n
    \n \n \n \n
    \n
    \n

    \n {title}\n

    \n

    \n {`${showFormId ? `${formId}. ` : ''}${formCount} ${submissionsKeyword}. ${t('Modified on')} ${updatedAtReadable}.`}\n

    \n
    \n {isDraggable && (\n
    \n \n
    \n )}\n {status !== 'ENABLED' && (\n
    \n {t('This report is disabled.')}\n
    \n )}\n
    \n );\n};\n\nconst reportsItemProperties = shape({\n form_count: number,\n form_id: string,\n title: string,\n status: string,\n created_at: string,\n updated_at: string,\n list_type: string\n});\n\nReportsItem.propTypes = {\n option: reportsItemProperties.isRequired,\n isMultiSelect: bool,\n isSelected: bool.isRequired,\n submissionsKeyword: string,\n showFormId: bool,\n isDraggable: bool\n};\n\nReportsItem.defaultProps = {\n isMultiSelect: true,\n submissionsKeyword: 'Form',\n showFormId: false,\n isDraggable: false\n};\n\nexport default ReportsItem;\n","/* eslint-disable max-len */\nimport React from 'react';\nimport {\n bool, string, shape\n} from 'prop-types';\nimport Styled from 'styled-components';\nimport { t } from '@jotforminc/translation';\nimport { IconGridDotsVertical, IconProductApprovalsColor } from '@jotforminc/svg-icons';\nimport { getShortMonthName } from '../../../../utils/utils';\nimport FormItemWrapper from '../../../FormPicker/FormItem/styled';\nimport { CheckBox } from '../../../FormPicker/CheckBox';\n\nconst ScIconWrapper = Styled.div`\n position: relative;\n margin-right: 12px;\n z-index: 1;\n\n html[dir=\"rtl\"] & {\n margin-right: 0;\n margin-left: .2em;\n }\n\n svg {\n width: 36px;\n height: 36px;\n }\n`;\n\nconst ApprovalItem = ({\n option: {\n form_id: formId,\n title,\n status,\n last_activity: lastActivity,\n created_at: createdAt\n },\n isSelected,\n isMultiSelect,\n showFormId,\n isDraggable\n}) => {\n const lastActivityDate = (lastActivity ? lastActivity.split(' ')[0] : createdAt.split(' ')[0]).split('-');\n const lastActivityReadable = `${getShortMonthName(parseInt(lastActivityDate[1], 10))} ${lastActivityDate[2]}, ${lastActivityDate[0]}`;\n\n return (\n \n {isMultiSelect && }\n
    \n \n \n \n
    \n
    \n

    \n {title}\n

    \n

    \n {`${showFormId ? `${formId}. ` : ''} ${t('Last activity on')} ${lastActivityReadable}.`}\n

    \n
    \n {isDraggable && (\n
    \n \n
    \n )}\n {status !== 'ENABLED' && (\n
    \n {t('This approval is disabled.')}\n
    \n )}\n
    \n );\n};\n\nconst approvalItemProperties = shape({\n form_id: string,\n title: string,\n status: string,\n last_activity: string,\n created_at: string\n});\n\nApprovalItem.propTypes = {\n option: approvalItemProperties.isRequired,\n isMultiSelect: bool,\n isSelected: bool.isRequired,\n showFormId: bool,\n isDraggable: bool\n};\n\nApprovalItem.defaultProps = {\n isMultiSelect: true,\n showFormId: false,\n isDraggable: false\n};\n\nexport default ApprovalItem;\n","import Styled from 'styled-components';\n\nexport const ScIconWrapper = Styled.div`\n position: relative;\n margin-left: 4px;\n margin-right: 10px;\n display: flex;\n align-items: center;\n\n html[dir=\"rtl\"] & {\n margin-right: 0;\n margin-left: .2em;\n }\n\n svg {\n width: 36px;\n height: 36px;\n }\n`;\n","import React from 'react';\nimport {\n bool, string, shape, number\n} from 'prop-types';\nimport { translationRenderer } from '@jotforminc/translation';\nimport { IconProductSignColorBorder } from '@jotforminc/svg-icons';\n\nimport Styled from 'styled-components';\nimport { getShortMonthName } from '../../../../utils/utils';\nimport FormItemWrapper from '../../../FormPicker/FormItem/styled';\nimport { CheckBox } from '../../../FormPicker/CheckBox';\nimport { ScIconWrapper } from './styles';\n\nconst ScSignItemWrapper = Styled(FormItemWrapper)`\n .itemDesc {\n position: relative;\n }\n\n &.isDisabled {\n &:hover {\n .errorText {\n display: block;\n }\n }\n }\n\n .errorText {\n display: none;\n position: absolute;\n left: 93px;\n bottom: 4px;\n font-size: 13px;\n line-height: normal;\n padding: 8px;\n text-transform: lowercase;\n border-radius: 4px;\n color: #fff;\n font-weight: 400;\n background-color: #0A1551;\n font-family: \"Circular\";\n\n &:first-letter { text-transform: uppercase; }\n\n .link {\n color: #0099FF;\n cursor: pointer;\n }\n }\n`;\n\nconst DescriptionText = ({ totalCount, updatedAtReadable }) => {\n // eslint-disable-next-line no-nested-ternary\n const firstPart = (totalCount > 0)\n ? totalCount > 1\n ? translationRenderer('[1[{totalCount}]] Sign Documents')({ renderer1: () => totalCount })\n : translationRenderer('[1[{oneCount}]] Sign Document')({ renderer1: () => 1 })\n : '';\n const secondPart = translationRenderer('Updated on [1[{updatedAtReadable}]]')({\n renderer1: () => updatedAtReadable\n });\n\n return (\n <>\n {firstPart}\n { totalCount > 0 ? '. ' : '' }\n {secondPart}\n \n );\n};\n\nDescriptionText.propTypes = {\n totalCount: number.isRequired,\n updatedAtReadable: string.isRequired\n};\n\nconst SignItem = ({\n option,\n isSelected,\n isMultiSelect\n}) => {\n const {\n totalCount,\n title,\n creationTime: createdAt,\n modificationTime: updatedAt,\n errorText,\n disabled\n } = option;\n\n const lastEditDate = (updatedAt ? updatedAt.split(' ')[0] : createdAt.split(' ')[0]).split('-');\n const updatedAtReadable = `${lastEditDate[2]} ${getShortMonthName(parseInt(lastEditDate[1], 10))} ${lastEditDate[0]}`;\n\n const className = disabled ? 'isDisabled' : '';\n\n return (\n \n {isMultiSelect && }\n
    \n \n \n \n
    \n
    \n

    \n {title}\n

    \n

    \n \n

    \n
    \n
    {errorText}
    \n
    \n );\n};\n\nconst reportsItemProperties = shape({\n form_count: number,\n form_id: string,\n title: string,\n status: string,\n created_at: string,\n updated_at: string,\n list_type: string\n});\n\nSignItem.propTypes = {\n option: reportsItemProperties.isRequired,\n isMultiSelect: bool,\n isSelected: bool.isRequired,\n disabled: bool,\n errorText: string\n};\n\nSignItem.defaultProps = {\n isMultiSelect: true,\n disabled: false,\n errorText: ''\n};\n\nexport default SignItem;\n","import React from 'react';\nimport { bool, shape } from 'prop-types';\nimport FormItemWrapper from '../../../FormPicker/FormItem/styled';\nimport { CheckBox } from '../../../FormPicker/CheckBox';\n\nconst OperationItem = ({\n option: {\n name\n },\n isSelected,\n isMultiSelect\n}) => {\n return (\n \n {isMultiSelect && }\n
    \n

    \n {name}\n

    \n
    \n
    \n );\n};\n\nOperationItem.propTypes = {\n option: shape().isRequired,\n isSelected: bool.isRequired,\n isMultiSelect: bool\n};\n\nOperationItem.defaultProps = {\n isMultiSelect: true\n};\n\nexport default OperationItem;\n","/* eslint-disable max-len */\nimport React from 'react';\nimport {\n bool, string, shape, number\n} from 'prop-types';\nimport Styled from 'styled-components';\nimport { t } from '@jotforminc/translation';\nimport { IconGridDotsVertical } from '@jotforminc/svg-icons';\n\nimport { getShortMonthName } from '../../../../utils/utils';\nimport FormItemWrapper from '../../../FormPicker/FormItem/styled';\nimport { CheckBox } from '../../../FormPicker/CheckBox';\n\nconst ScIconWrapper = Styled.div`\n position: relative;\n margin-right: 18px;\n z-index: 1;\n\n html[dir=\"rtl\"] & {\n margin-right: 0;\n margin-left: .4em;\n }\n`;\n\nconst ScBoardIcon = Styled.div`\n background-position: center;\n background-repeat: no-repeat;\n position: relative;\n width: 32px;\n height: 32px;\n background-image: url(\"data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' width='32px' height='32px' viewBox='0 0 32 32' version='1.1'%3e%3cg id='surface1'%3e%3cpath style='fill-rule:nonzero;fill:rgb(100%25,100%25,100%25);fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(89.019608%25,89.803922%25,96.078431%25);stroke-opacity:1;stroke-miterlimit:4;' d='M 4.75 2.002075 L 27.25 2.002075 C 29.046875 2.002075 30.5 3.456298 30.5 5.2489 L 30.5 27.75109 C 30.5 29.543692 29.046875 30.997915 27.25 30.997915 L 4.75 30.997915 C 2.953125 30.997915 1.5 29.543692 1.5 27.75109 L 1.5 5.2489 C 1.5 3.456298 2.953125 2.002075 4.75 2.002075 Z M 4.75 2.002075 ' transform='matrix(1,0,0,0.969697,0,0)'/%3e%3cpath style=' stroke:none;fill-rule:nonzero;fill:rgb(100%25,71.372549%25,16.078431%25);fill-opacity:1;' d='M 17.125 13.273438 C 17.125 12.96875 17.375 12.726562 17.691406 12.726562 L 24.441406 12.726562 C 24.75 12.726562 25 12.96875 25 13.273438 L 25 23.636719 C 25 24.238281 24.496094 24.726562 23.875 24.726562 L 18.25 24.726562 C 17.628906 24.726562 17.125 24.238281 17.125 23.636719 Z M 17.125 13.273438 '/%3e%3cpath style=' stroke:none;fill-rule:nonzero;fill:rgb(100%25,71.372549%25,16.078431%25);fill-opacity:1;' d='M 7 13.273438 C 7 12.96875 7.25 12.726562 7.558594 12.726562 L 14.316406 12.726562 C 14.625 12.726562 14.875 12.96875 14.875 13.273438 L 14.875 19.273438 C 14.875 19.875 14.371094 20.363281 13.75 20.363281 L 8.125 20.363281 C 7.503906 20.363281 7 19.875 7 19.273438 Z M 7 13.273438 '/%3e%3cpath style=' stroke:none;fill-rule:nonzero;fill:rgb(100%25,38.039216%25,0%25);fill-opacity:1;' d='M 7 8.363281 C 7 7.761719 7.503906 7.273438 8.125 7.273438 L 13.75 7.273438 C 14.371094 7.273438 14.875 7.761719 14.875 8.363281 L 14.875 10 C 14.875 10.300781 14.625 10.546875 14.316406 10.546875 L 7.558594 10.546875 C 7.25 10.546875 7 10.300781 7 10 Z M 7 8.363281 '/%3e%3cpath style=' stroke:none;fill-rule:nonzero;fill:rgb(0%25,60%25,100%25);fill-opacity:1;' d='M 17.125 8.363281 C 17.125 7.761719 17.628906 7.273438 18.25 7.273438 L 23.875 7.273438 C 24.496094 7.273438 25 7.761719 25 8.363281 L 25 10 C 25 10.300781 24.75 10.546875 24.441406 10.546875 L 17.691406 10.546875 C 17.375 10.546875 17.125 10.300781 17.125 10 Z M 17.125 8.363281 '/%3e%3c/g%3e%3c/svg%3e\");\n ${p => (\n p['data-count'] > 0 ? (\n `&:before {\n content: attr(data-count);\n background: #D93434;\n color: #fff;\n border-radius: 16px;\n position: absolute;\n top: 0;\n right: 0;\n font-weight: 700;\n transform: translate(50%, -50%);\n font-size: 12px;\n padding: 1.5px 3.675px;\n line-height: 1;\n }\n `\n ) : ''\n )}\n`;\n\nconst BoardItem = ({\n option: {\n count,\n form_id: formId,\n name,\n unread,\n status,\n created_at: createdAt,\n updated_at: updatedAt\n },\n isSelected,\n isMultiSelect,\n submissionsKeyword,\n showFormId,\n isDraggable\n}) => {\n const lastEditDate = (updatedAt ? updatedAt.split(' ')[0] : createdAt.split(' ')[0]).split('-');\n const updatedAtReadable = `${getShortMonthName(parseInt(lastEditDate[1], 10))} ${lastEditDate[2]}, ${lastEditDate[0]}`;\n\n return (\n \n {isMultiSelect && }\n
    \n \n \n \n
    \n
    \n

    \n {name}\n

    \n

    \n {`${showFormId ? `${formId}. ` : ''}${count} ${submissionsKeyword}. ${t('Last updated on')} ${updatedAtReadable}.`}\n

    \n
    \n {isDraggable && (\n
    \n \n
    \n )}\n {status !== 'ENABLED' && (\n
    \n {t('This board is disabled.')}\n
    \n )}\n
    \n );\n};\n\nconst boardItemProperties = shape({\n count: number,\n form_id: string,\n name: string,\n unread: number,\n status: string,\n created_at: string,\n updated_at: string\n});\n\nBoardItem.propTypes = {\n option: boardItemProperties.isRequired,\n isMultiSelect: bool,\n isSelected: bool.isRequired,\n submissionsKeyword: string,\n showFormId: bool,\n isDraggable: bool\n};\n\nBoardItem.defaultProps = {\n isMultiSelect: true,\n submissionsKeyword: 'submissions',\n showFormId: false,\n isDraggable: false\n};\n\nexport default BoardItem;\n","import FormItem from '../FormPicker/FormItem';\nimport PortalOption from '../PortalPicker/defaults/PortalOption';\nimport SheetItem from './items/Sheet';\nimport ReportsItem from './items/Reports';\nimport ApprovalItem from './items/Approval';\nimport SignItem from './items/Sign';\nimport OperationItem from './items/Operation';\nimport BoardItem from './items/Board';\n\nimport NoFormsFoundIcon from '../../assets/svg/resourcePickerIcons/noFormsFoundIcon.svg';\nimport NoAppsFoundIcon from '../../assets/svg/resourcePickerIcons/noAppsFoundIcon.svg';\nimport NoSheetsFoundIcon from '../../assets/svg/resourcePickerIcons/noTablesFoundIcon.svg';\nimport NoReportsFoundIcon from '../../assets/svg/resourcePickerIcons/noReportsFoundIcon.svg';\nimport NoApprovalsFoundIcon from '../../assets/svg/resourcePickerIcons/noApprovalsFoundIcon.svg';\nimport NoSignDocumentsFoundIcon from '../../assets/svg/resourcePickerIcons/noSignDocumentsFoundIcon.svg';\nimport NoBoardsFoundIcon from '../../assets/svg/resourcePickerIcons/noBoardsFoundIcon.svg';\n\nimport NoFormsIcon from '../../assets/svg/resourcePickerIcons/noFormsIcon.svg';\nimport NoAppsIcon from '../../assets/svg/resourcePickerIcons/noAppsIcon.svg';\nimport NoTablesIcon from '../../assets/svg/resourcePickerIcons/noTablesIcon.svg';\nimport NoReportsIcon from '../../assets/svg/resourcePickerIcons/noReportsIcon.svg';\nimport NoApprovalsIcon from '../../assets/svg/resourcePickerIcons/noApprovalsIcon.svg';\nimport NoSignDocumentsIcon from '../../assets/svg/resourcePickerIcons/noSignDocumentsIcon.svg';\nimport NoBoardsIcon from '../../assets/svg/resourcePickerIcons/noBoardsIcon.svg';\n\nexport const RESOURCE_TYPES = {\n FORM: 'form',\n APP: 'app',\n SHEET: 'sheet',\n REPORT: 'report',\n APPROVAL: 'approval',\n SIGN: 'sign',\n SIGN_INBOX: 'signInbox',\n OPERATION: 'operation',\n BOARD: 'board'\n};\n\nexport const resourceConfigs = {\n [RESOURCE_TYPES.FORM]: {\n ItemComponent: FormItem,\n searchPlaceholder: 'Search in your forms',\n emptyListPlaceholderTitle: 'YOU DON\\'T HAVE ANY FORMS YET.',\n emptyListPlaceholderIcon: NoFormsIcon,\n emptyListPlaceholderDescription: 'Your forms will appear here.',\n emptyListPlaceholderResourceType: 'form',\n headerTitle: 'Select a form',\n notFoundIcon: NoFormsFoundIcon,\n defaultFuseOptions: { threshold: 0.5 }\n },\n [RESOURCE_TYPES.APP]: {\n ItemComponent: PortalOption,\n searchPlaceholder: 'Search in your apps',\n emptyListPlaceholderTitle: 'YOU DON\\'T HAVE ANY APPS YET.',\n emptyListPlaceholderIcon: NoAppsIcon,\n emptyListPlaceholderDescription: 'Your apps will appear here.',\n emptyListPlaceholderResourceType: 'portal',\n headerTitle: 'Select an app',\n notFoundIcon: NoAppsFoundIcon\n },\n [RESOURCE_TYPES.SHEET]: {\n ItemComponent: SheetItem,\n searchPlaceholder: 'Search in your tables',\n emptyListPlaceholderTitle: 'YOU DON\\'T HAVE ANY TABLES YET.',\n emptyListPlaceholderIcon: NoTablesIcon,\n emptyListPlaceholderDescription: 'Your tables will appear here.',\n emptyListPlaceholderResourceType: 'table',\n headerTitle: 'Select a table',\n notFoundIcon: NoSheetsFoundIcon\n },\n [RESOURCE_TYPES.REPORT]: {\n ItemComponent: ReportsItem,\n searchPlaceholder: 'Search in your reports',\n emptyListPlaceholderTitle: 'YOU DON\\'T HAVE ANY REPORTS YET.',\n emptyListPlaceholderIcon: NoReportsIcon,\n emptyListPlaceholderDescription: 'Your reports will appear here.',\n emptyListPlaceholderResourceType: 'report',\n headerTitle: 'Select a report',\n notFoundIcon: NoReportsFoundIcon\n },\n [RESOURCE_TYPES.SIGN]: {\n ItemComponent: SignItem,\n searchPlaceholder: 'Search in sign documents',\n emptyListPlaceholderTitle: 'YOU DON\\'T HAVE ANY SIGN DOCUMENTS YET.',\n emptyListPlaceholderIcon: NoSignDocumentsIcon,\n emptyListPlaceholderDescription: 'Your sign documents will appear here.',\n emptyListPlaceholderResourceType: 'sign',\n headerTitle: 'Select a sign document',\n notFoundIcon: NoSignDocumentsFoundIcon\n },\n [RESOURCE_TYPES.SIGN_INBOX]: {\n ItemComponent: SignItem,\n searchPlaceholder: 'Search in sign documents',\n emptyListPlaceholderTitle: 'YOU DON\\'T HAVE ANY SIGN DOCUMENTS YET.',\n emptyListPlaceholderIcon: NoSignDocumentsIcon,\n emptyListPlaceholderDescription: 'Your sign documents will appear here.',\n emptyListPlaceholderResourceType: 'sign',\n headerTitle: 'Select a sign document',\n notFoundIcon: NoSignDocumentsFoundIcon\n },\n [RESOURCE_TYPES.APPROVAL]: {\n ItemComponent: ApprovalItem,\n searchPlaceholder: 'Search in your approvals',\n emptyListPlaceholderTitle: 'YOU DON\\'T HAVE ANY APPROVALS YET.',\n emptyListPlaceholderIcon: NoApprovalsIcon,\n emptyListPlaceholderDescription: 'Your approvals will appear here.',\n emptyListPlaceholderResourceType: 'approval',\n headerTitle: 'Select an approval',\n notFoundIcon: NoApprovalsFoundIcon\n },\n [RESOURCE_TYPES.OPERATION]: {\n ItemComponent: OperationItem,\n searchPlaceholder: 'Search in your operations',\n emptyListPlaceholderTitle: 'YOU DON\\'T HAVE ANY OPERATIONS YET.',\n emptyListPlaceholderIcon: NoFormsIcon,\n emptyListPlaceholderDescription: 'Your operations will appear here.',\n emptyListPlaceholderResourceType: 'form',\n headerTitle: 'Select an operation',\n notFoundIcon: NoFormsFoundIcon\n },\n [RESOURCE_TYPES.BOARD]: {\n ItemComponent: BoardItem,\n searchPlaceholder: 'Search in your boards',\n emptyListPlaceholderTitle: 'YOU DON\\'T HAVE ANY BOARDS YET.',\n emptyListPlaceholderIcon: NoBoardsIcon,\n emptyListPlaceholderDescription: 'Your boards will appear here.',\n emptyListPlaceholderResourceType: 'board',\n headerTitle: 'Select board',\n notFoundIcon: NoBoardsFoundIcon\n }\n};\n","import Styled from 'styled-components';\n\nconst FormListWrapper = Styled.div`\n font-size: ${p => p.theme.fontSize};\n font-family: system-ui;\n width: 100%;\n\n * { box-sizing: border-box; }\n\n ul { padding: 0; }\n li { list-style: none; }\n li + li { margin-top: 1em; }\n`;\n\nexport default FormListWrapper;\n","import React from 'react';\nimport { bool, node, func } from 'prop-types';\nimport { IconXmark } from '@jotforminc/svg-icons';\nimport { t } from '@jotforminc/translation';\nimport '../../styles/_jfHeaderFormList.scss';\nimport { useKeyboardEvent } from '../../utils/hooks';\n\nconst ConditionalModal = ({\n isModal,\n isModalOpen,\n isClosable,\n onClose,\n children\n}) => {\n useKeyboardEvent(['Escape'], () => isModalOpen && onClose());\n\n return (isModal ? (\n
    \n
    \n {children}\n
    \n {isClosable && (\n \n
    \n \n
    \n \n )}\n
    \n ) : children);\n};\n\nConditionalModal.propTypes = {\n isModal: bool,\n isModalOpen: bool,\n isClosable: bool,\n onClose: func,\n children: node.isRequired\n};\n\nConditionalModal.defaultProps = {\n isModal: false,\n isModalOpen: false,\n isClosable: true,\n onClose: f => f\n};\n\nexport default ConditionalModal;\n","import React, { useMemo } from 'react';\nimport {\n shape, string, func, arrayOf, oneOf, oneOfType, bool\n} from 'prop-types';\nimport { t } from '@jotforminc/translation';\nimport { propTypes } from '@jotforminc/constants';\n\nimport { EmptyList, NotFoundList } from '@jotforminc/empty-list';\nimport { SmartList } from '@jotforminc/smart-list';\nimport FormListWrapper from '../FormPicker/FormList';\nimport { resourceConfigs } from './constants';\nimport { theme as defaultTheme } from '../FormPicker/helpers/defaultTheme';\nimport ConditionalModal from '../FormPicker/ConditionalModal';\nimport '../../styles/jfResourcePicker.scss';\n\nexport const getResourcePickerMappings = resourceType => {\n const { [resourceType]: config } = resourceConfigs;\n return {\n emptyListPlaceholderTitle: config?.emptyListPlaceholderTitle || '',\n emptyListPlaceholderIcon: config?.emptyListPlaceholderIcon || (() => null),\n emptyListPlaceholderDescription: config?.emptyListPlaceholderDescription || '',\n searchPlaceholder: config?.searchPlaceholder || '',\n ItemComponent: config?.ItemComponent || (() => null),\n fuseOptions: config?.defaultFuseOptions || {},\n notFoundIcon: config?.notFoundIcon || (() => null),\n notFoundTitle: 'No results found.',\n notFoundDescription: 'We couldn\\'t find any matching items.'\n };\n};\n\nconst ResourcePicker = ({\n theme,\n resourceType,\n resources,\n selectedResources,\n ItemComponent: PropItemComponent,\n onSelectionChange,\n DataProvider,\n searchPlaceholder: propSearchPlaceholder,\n emptyListPlaceholder: PropEmptyListPlaceholder,\n notFoundListPlaceholder: PropNotFoundListPlaceholder,\n searchKeys,\n isMultiSelect,\n showSelectAll,\n defaultItemIsOnTop,\n isModal,\n isModalOpen,\n isClosable,\n onClose,\n multipleManage,\n showHeader,\n isEditable,\n fuseOptions: PropFuseOptions,\n customItemsList,\n productType,\n sortMenu,\n filterForm,\n ...rest\n}) => {\n const items = useMemo(() => {\n if (!defaultItemIsOnTop || typeof selectedResources !== 'string') return resources;\n return [...resources].sort((first, second) => {\n // Sort propItems such that default item will be on top\n if (first?.id === selectedResources) return -1;\n if (second?.id === selectedResources) return 1;\n return 0;\n });\n }, [defaultItemIsOnTop, resources]);\n\n const config = useMemo(() => getResourcePickerMappings(resourceType), [resourceType]);\n const ItemComponent = useMemo(() => PropItemComponent || config.ItemComponent, [PropItemComponent, config]);\n const searchPlaceholder = useMemo(() => t(propSearchPlaceholder || config.searchPlaceholder), [propSearchPlaceholder, config]);\n const fuseOptions = useMemo(() => PropFuseOptions || config.fuseOptions, [PropFuseOptions, config]);\n\n const EmptyListPlaceholder = useMemo(() => {\n if (PropEmptyListPlaceholder) {\n return PropEmptyListPlaceholder;\n }\n const { emptyListPlaceholderResourceType: resource, emptyListPlaceholderTitle: title, emptyListPlaceholderDescription: description } = config;\n return (\n \n );\n }, [PropEmptyListPlaceholder, config]);\n\n const NotFoundListPlaceholder = useMemo(() => {\n if (PropNotFoundListPlaceholder) {\n return PropNotFoundListPlaceholder;\n }\n const { emptyListPlaceholderResourceType: resource, notFoundTitle: title, notFoundDescription: description } = config;\n return (\n \n );\n }, [PropNotFoundListPlaceholder, config]);\n\n return (\n \n
    \n \n
    \n \n );\n};\n\nResourcePicker.propTypes = {\n resourceType: oneOf(Object.keys(resourceConfigs)).isRequired,\n resources: arrayOf(shape({})),\n ItemComponent: propTypes.renderable,\n bulkActions: propTypes.renderable,\n onSelectionChange: func,\n DataProvider: func,\n searchPlaceholder: string,\n emptyListPlaceholder: propTypes.renderable,\n notFoundListPlaceholder: propTypes.renderable,\n theme: shape({}),\n selectedResources: oneOfType([arrayOf(string), string]),\n searchKeys: arrayOf(string),\n isMultiSelect: bool,\n showSelectAll: bool,\n defaultItemIsOnTop: bool,\n multipleManage: bool,\n showHeader: bool,\n isSortable: bool,\n SortableProps: shape({}),\n isModal: bool,\n isModalOpen: bool,\n isClosable: bool,\n onClose: func,\n isEditable: bool,\n otherControlBarItems: propTypes.renderable,\n showFavorite: bool,\n showFormId: bool,\n submissionsKeyword: string,\n fuseOptions: shape({}),\n customItemsList: arrayOf(shape({\n CustomItemComponent: propTypes.renderable,\n props: shape({})\n })),\n ControlBarRenderer: propTypes.renderable,\n productType: string,\n sortMenu: bool,\n filterForm: bool\n};\n\nResourcePicker.defaultProps = {\n resources: [],\n ItemComponent: null,\n bulkActions: null,\n onSelectionChange: f => f,\n DataProvider: undefined,\n searchPlaceholder: undefined,\n emptyListPlaceholder: null,\n notFoundListPlaceholder: null,\n theme: defaultTheme,\n selectedResources: [],\n searchKeys: ['title', 'name', 'id'],\n isMultiSelect: false,\n showSelectAll: false,\n defaultItemIsOnTop: true,\n multipleManage: true,\n showHeader: false,\n isSortable: false,\n SortableProps: {},\n isModal: false,\n isModalOpen: false,\n isClosable: true,\n onClose: f => f,\n isEditable: false,\n otherControlBarItems: [],\n showFavorite: false,\n showFormId: false,\n submissionsKeyword: 'Submissions',\n fuseOptions: null,\n customItemsList: [],\n ControlBarRenderer: undefined,\n productType: '',\n sortMenu: false,\n filterForm: false\n};\n\nexport default ResourcePicker;\n","export const DEFAULT_DATE_FORMAT = 'MMMM D, YYYY HH:mm';\n\nexport const SUBMISSION_DATE_FORMATS = [\n 'M/D/YYYY',\n 'D/M/YYYY',\n 'MMM D, YYYY',\n 'MMMM D, YYYY',\n 'ddd, MMM D, YYYY',\n 'dddd, MMMM D, YYYY',\n 'MMM D, YYYY HH:mm',\n DEFAULT_DATE_FORMAT,\n 'ddd, MMM D, YYYY HH:mm',\n 'dddd, MMMM D, YYYY HH:mm'\n];\n\nexport const DISABLE_DEFAULT_DOCUMENT_TEXT = 'You dont have any PDF documents yet.';\n","import moment from 'moment-timezone';\n\nimport { SUBMISSION_DATE_FORMATS } from '../constants';\n\nconst localeSymbol = Symbol('locale');\nconst timezoneSymbol = Symbol('timezone');\nconst callbackSymbol = Symbol('callback');\n\nclass Moment {\n constructor() {\n this[localeSymbol] = 'en';\n this[timezoneSymbol] = null;\n this[callbackSymbol] = {\n setLocale: {},\n setTimezone: {}\n };\n }\n\n get locale() {\n return this[localeSymbol];\n }\n\n get timezone() {\n return this[timezoneSymbol];\n }\n\n get callback() {\n return this[callbackSymbol];\n }\n\n get formatList() {\n const formatListObject = moment.localeData(this.locale)._longDateFormat;\n return formatListObject && Object.keys(formatListObject).length > 0 ? [\n formatListObject.LLLL,\n formatListObject.LLL,\n formatListObject.LL,\n formatListObject.L\n ] : SUBMISSION_DATE_FORMATS;\n }\n\n setLocale(locale = 'en') {\n this[localeSymbol] = locale;\n Object.values(this.callback.setLocale).forEach(callback => callback());\n }\n\n setTimezone(timezone) {\n this[timezoneSymbol] = timezone;\n\n Object.values(this.callback.setTimezone).forEach(callback => callback());\n }\n\n dateToMoment(date, dateFormat) {\n const dateObject = moment(date, dateFormat);\n const dateObjectWithTimezone = this.timezone ? dateObject.clone().tz(this.timezone) : dateObject.clone().utcOffset(-5);\n return dateObjectWithTimezone.locale(this.locale);\n }\n\n formatDate(date, dateFormat, intendedFormat) {\n return this.dateToMoment(date, dateFormat).format(intendedFormat);\n }\n\n addListener(methodName, identifier, callback) {\n this.callback[methodName][identifier] = callback;\n }\n\n removeListener(methodName, identifier) {\n delete this.callback[methodName][identifier];\n }\n}\n\nexport default new Moment();\n","import { useEffect, useState } from 'react';\nimport { v4 as uuid } from 'uuid';\nimport Moment from './moment';\n\nexport const useKeyboardEvent = (keyArray, callback) => {\n useEffect(() => {\n const handler = e => {\n const { key = '', keyCode } = e;\n if ((key && keyArray.indexOf(key) > -1) || (keyArray.indexOf(keyCode) > -1)) callback();\n };\n global.window.addEventListener('keydown', handler);\n return () => global.window.removeEventListener('keydown', handler);\n }, []);\n};\n\nexport const useMomentDate = (date, format) => {\n const [momentDate, setMomentDate] = useState(Moment.dateToMoment(date, format));\n const renewMomentDate = () => {\n setMomentDate(Moment.dateToMoment(date, format));\n };\n\n useEffect(() => {\n const listenerKey = `renewMomentDate_${uuid()}`;\n Moment.addListener('setLocale', listenerKey, renewMomentDate);\n return () => Moment.removeListener('setLocale', listenerKey);\n }, []);\n\n useEffect(() => {\n renewMomentDate();\n }, [date, format]);\n\n return [momentDate, setMomentDate];\n};\n","import React, { useState } from 'react';\nimport { func } from 'prop-types';\n\nimport TextInput from '../../TextInput';\nimport FileUpload from '../../FileUpload';\n\nconst ImageUploadPanel = ({ onFileUpload }) => {\n const [altText, setAltText] = useState('');\n\n const handleAltTextChange = ({ target: { value } }) => setAltText(value);\n const handleFileUpload = file => onFileUpload({ file, altText });\n\n return (\n
    \n \n
    \n
    Alt Text:
    \n \n
    \n
    \n );\n};\n\nImageUploadPanel.propTypes = {\n onFileUpload: func.isRequired\n};\n\nexport default ImageUploadPanel;\n","export const EVENTS = [\n 'focusin', 'focusout', 'click', 'dblclick', 'mousedown', 'mouseup',\n 'mousemove', 'mouseover', 'beforepaste', 'paste', 'cut', 'copy',\n 'selectionchange', 'mouseout', 'mouseenter', 'mouseleave', 'keydown',\n 'keypress', 'keyup', 'contextmenu', 'dragend', 'dragover', 'draggesture',\n 'dragdrop', 'drop', 'drag', 'BeforeRenderUI', 'SetAttrib', 'PreInit',\n 'PostRender', 'init', 'deactivate', 'activate', 'NodeChange',\n 'BeforeExecCommand', 'ExecCommand', 'show', 'hide', 'ProgressState',\n 'LoadContent', 'SaveContent', 'BeforeSetContent', 'SetContent',\n 'BeforeGetContent', 'GetContent', 'VisualAid', 'remove', 'submit', 'reset',\n 'BeforeAddUndo', 'AddUndo', 'change', 'undo', 'redo', 'ClearUndos',\n 'ObjectSelected', 'ObjectResizeStart', 'ObjectResized', 'PreProcess',\n 'PostProcess', 'focus', 'blur', 'customButtonSettingClick'\n];\n\nexport const HANDLER_NAMES = EVENTS.map(event => `on${event[0].toUpperCase() + event.substring(1)}`);\n\nexport const BASE_CONFIG = {\n menubar: false,\n statusbar: false,\n min_height: 320,\n link_title: false,\n skin: 'lightgray',\n fullpage_hide_in_source_view: true,\n // content_css: '/css/customButtonsStyles.css',\n plugins: 'autolink link image fullpage lists print preview textcolor code fullscreen table paste',\n paste_retain_style_properties: 'all',\n paste_webkit_styles: 'all',\n toolbar: 'customfontfamily | customfontsize | bold italic | alignment | forecolor | link customimage | code | table | fullscreen | questionlist',\n content_style: `\n html, body { height: 100% }\n body { overscroll-behavior-x: none; }\n `,\n body_class: 'form-all'\n};\n\nexport const DEFAULT_FORMATS = `Andale Mono=andale mono,monospace;\nArial=arial,helvetica,sans-serif;\nArial Black=arial black,sans-serif;\nBook Antiqua=book antiqua,palatino,serif;\nComic Sans MS=comic sans ms,sans-serif;\nCourier New=courier new,courier,monospace;\nGeorgia=georgia,palatino,serif;\nHelvetica=helvetica,arial,sans-serif;\nImpact=impact,sans-serif;\nSymbol=symbol;\nTahoma=tahoma,arial,helvetica,sans-serif;\nTerminal=terminal,monaco,monospace;\nTimes New Roman=times new roman,times,serif;\nTrebuchet MS=trebuchet ms,geneva,sans-serif;\nVerdana=verdana,geneva,sans-serif;\nWebdings=webdings;\nWingdings=wingdings,zapf dingbats;`;\n\nexport const DEFAULT_FONT_SIZES = ['8pt', '10pt', '12pt', '14pt', '18pt', '24pt', '36pt'];\n\nexport const ALIGNMENT_MENU = `
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    `;\n\nexport const LIST_MENU = `
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    `;\n\nexport const CONTENT_REGEX = /(data:((.*?)\\/(.*?)*?)[.,/#!$%^&*;:{}=\\-_`~()]+?)/ig;\n\nexport const AVAILABLE_LANGUAGE_CODES = [\n 'ca-ES', 'da-DA', 'de-DE', 'en-US',\n 'es-ES', 'fi-FI', 'fr-FR', 'hu-HU',\n 'it-IT', 'nl-NL', 'no-NO', 'pl-PL',\n 'pt-PT', 'ro-RO', 'ru-RU', 'sv-SE',\n 'tr-TR', 'zh-CN'\n];\n","import ReactDOM from 'react-dom';\nimport React from 'react';\nimport Popover from '../../Popover';\n\nconst containerID = 'tinymce-popoverContainer';\n\nexport const renderPopoverButton = ({ id, editor, component }) => {\n if (document.getElementById(containerID)) {\n return;\n }\n const popoverContainer = document.createElement('div');\n popoverContainer.id = containerID;\n editor.editorContainer.appendChild(popoverContainer);\n const btn = document.getElementById(id);\n const targetRef = { current: btn };\n let firstTime = false;\n const onClick = event => {\n if (!firstTime) {\n firstTime = true;\n return;\n }\n const formFieldsPopoverContains = document?.getElementsByClassName('formFields-popover')?.[0]?.contains(event.target);\n const emailOutcomePopoverContains = document?.getElementsByClassName('wfEmail-outcome-popover')?.[0]?.contains(event.target);\n const isClickOutside = !(popoverContainer.contains(event.target) || formFieldsPopoverContains || emailOutcomePopoverContains);\n if (isClickOutside) {\n ReactDOM.unmountComponentAtNode(popoverContainer);\n window.removeEventListener('click', onClick);\n if (editor.contentWindow.removeEventListener) {\n editor.contentWindow.removeEventListener('click', onClick);\n }\n popoverContainer.remove();\n }\n };\n ReactDOM.render(\n \n {component(editor)}\n ,\n popoverContainer,\n () => {\n window.addEventListener('click', onClick);\n editor.contentWindow.addEventListener('click', onClick);\n }\n );\n};\n","/* eslint-disable no-param-reassign */\nimport {\n EVENTS, HANDLER_NAMES, DEFAULT_FORMATS, DEFAULT_FONT_SIZES, ALIGNMENT_MENU, LIST_MENU, CONTENT_REGEX\n} from '../constants';\nimport { renderPopoverButton } from './popoverButtonUtils';\n\nconst createFormats = formatsStr => formatsStr.replace(/;$/, '').split(';').map(format => format.split('='));\nconst createCustomFontFamilyMenu = fonts => {\n window.changeTinMCEFont = fontName => global.tinyMCE.execCommand('FontName', false, decodeURIComponent(fontName));\n const dom = fonts.map(([text, fontName]) => {\n return `
    ${\n text\n }
    `;\n });\n\n return `
    ${dom.join('')}
    `;\n};\n\nconst createCustomFontSizeMenu = fontSizes => {\n window.changeTinMCEFontSize = fontSize => global.tinyMCE.execCommand('FontSize', false, decodeURIComponent(fontSize));\n const dom = fontSizes.map(size => {\n return `
    ${\n size\n }
    `;\n });\n return `
    ${dom.join('')}
    `;\n};\n\nconst createCustomButtonConfig = ({ icon, tooltip, html }) => ({\n icon,\n tooltip,\n type: 'colorbutton',\n border: '0 0 0 0',\n image: '',\n panel: {\n html,\n role: 'application',\n ariaRemember: true,\n onClick: () => {}\n },\n onPostRender: function onPostRender() {\n document.getElementById(this._id).addEventListener('click', () => {\n document.getElementById(this._id).querySelector('span.mce-open').click();\n });\n const id = this._id.replace('tinymce-', '');\n if (id !== undefined) {\n document.getElementById(`${id}-preview`).style.display = 'none';\n }\n },\n onclick: () => false\n});\n\nexport const sanitizeEditorContent = content => content.replace(CONTENT_REGEX, '');\n\nexport const getGlobalEventName = (id, eventName) => {\n return `tiny_${id}_${eventName}`;\n};\n\nexport const setGlobalEvents = (editorID, props) => {\n EVENTS.forEach((eventName, index) => {\n const handlerName = HANDLER_NAMES[index];\n const handler = props[handlerName];\n if (typeof handler !== 'function') { return; }\n\n window[getGlobalEventName(editorID, eventName)] = handler;\n });\n};\n\nexport const clearGlobalEvents = editorID => {\n EVENTS.forEach(eventName => {\n const globalHandlerName = getGlobalEventName(editorID, eventName);\n if (typeof window[globalHandlerName] === 'function') {\n delete window[globalHandlerName];\n }\n });\n};\nconst handleSaveStyle = () => {\n};\n\nconst handlePortalButtons = (e, id, type, wrapper, editor) => {\n const buttonSettings = {\n e,\n id: id,\n buttonType: type,\n onChange: handleSaveStyle(),\n targetButton: wrapper,\n actualButton: editor.dom.doc.getElementById(id)\n };\n editor.customEventForButtons.fire('customButtonClicked', buttonSettings);\n wrapper?.remove();\n};\nconst buttonTypes = ['setting', 'delete'];\nconst handleCustomButtonClick = (e, id, editor, customType) => {\n let wrapper = document.body.querySelector('.settingButonWrapper');\n if (wrapper) {\n wrapper.remove();\n }\n wrapper = global.document.createElement('div');\n ['click', 'scroll'].forEach(eventName => {\n editor.dom.doc.addEventListener(eventName, () => {\n wrapper.remove();\n }, true);\n document.getElementById('root').addEventListener(eventName, () => {\n wrapper.remove();\n }, true);\n });\n const mainPos = editor.contentAreaContainer.getBoundingClientRect();\n const realPos = e.currentTarget.getBoundingClientRect();\n if (!mainPos || !realPos) return;\n const x = mainPos.x + realPos.x + realPos.width;\n let y = mainPos.y + realPos.y + (realPos.height / 2);\n if (y < mainPos.y) {\n y = mainPos.y + 40;\n }\n if (y > mainPos.y + mainPos.height) {\n y = mainPos.y + mainPos.height - 40;\n }\n\n wrapper.style.left = `${x}px`;\n wrapper.style.top = `${y}px`;\n\n wrapper.classList.add('settingButonWrapper', 'shown');\n buttonTypes.forEach(type => {\n if (customType === 'customTable' && type === 'style') return;\n const button = global.document.createElement('div');\n button.classList.add('settingButon', [type]);\n button.append('\\u00A0');\n button.addEventListener('click', ev => handlePortalButtons(ev, id, type, wrapper, editor, ev.currentTarget), false);\n wrapper.append(button);\n });\n global.document.body.appendChild(wrapper);\n};\n\nconst handleHover = e => {\n if (e.type === 'mouseenter') {\n e.currentTarget.parentElement.classList.add('hoveredActionButton');\n return;\n }\n e.currentTarget.parentElement.classList.remove('hoveredActionButton');\n};\n\nexport const handleCustomButtonEvents = (editor, buttons) => {\n if (buttons.length <= 0) return;\n const content = editor.getContent();\n editor.setContent(content);\n buttons.forEach(buttonID => {\n const button = editor.dom.get(buttonID);\n\n if (!button) return;\n\n const type = button.getAttribute('data-buttontype');\n\n ['click', 'touchstart'].forEach(eventName => {\n button.addEventListener(eventName, ev => {\n handleCustomButtonClick(ev, buttonID, editor, type);\n }, true);\n });\n\n ['mouseenter', 'mouseleave'].forEach(eventName => {\n button.addEventListener(eventName, ev => handleHover(ev));\n });\n\n button.addEventListener('dblclick', ev => {\n handlePortalButtons(ev, button.id, 'setting', document.body.querySelector('.settingButonWrapper'), editor);\n });\n });\n};\n\nexport const setupEditor = (editorID, editor, props) => {\n const {\n translate, handleInsertImageClick, extraButtons, extraSetupFunctions, editorContainerClassname, popoverButtons, onCustomButtonSettingClick\n } = props;\n const isNewActionButtonsEnabled = window.isNewActionButtons;\n EVENTS.forEach((event, index) => {\n const handler = props[HANDLER_NAMES[index]];\n if (typeof handler !== 'function') { return; }\n editor.on(event, e => {\n const globalHandlerName = getGlobalEventName(editorID, event);\n window[globalHandlerName](e, editor); // working\n });\n });\n\n editor.customEventForButtons = new global.tinyMCE.util.EventDispatcher();\n editor.customEventForButtons.on('addCustomButton', ({ buttons }) => {\n handleCustomButtonEvents(editor, buttons);\n });\n editor.customEventForButtons.on('removeCustomButton', ({ buttons }) => {\n handleCustomButtonEvents(editor, buttons);\n });\n\n editor.customEventForButtons.on('customButtonClicked', ({\n e, id, buttonType, onChange, targetButton, actualButton\n }) => {\n if (onCustomButtonSettingClick) {\n onCustomButtonSettingClick(e, id, buttonType, editor, onChange, targetButton, actualButton);\n }\n });\n\n editor.on('redo undo', () => {\n handleCustomButtonEvents(editor, editor.customButtons);\n });\n\n if (isNewActionButtonsEnabled) {\n editor.on('drop', ({ targetClone, target }) => {\n const doc = target?.dom.doc;\n const dragContainer = doc.querySelector('.mce-drag-container');\n\n if (targetClone && targetClone?.getAttribute('data-isCustomButton')) {\n document.body.querySelector('.settingButonWrapper')?.remove();\n }\n\n if (dragContainer && dragContainer.querySelector('[data-iscustombutton=\"true\"')) {\n dragContainer.remove();\n }\n });\n }\n\n editor.on('init', () => {\n const content = editor.getContent();\n\n editor.dom.setAttrib(editor.dom.select('html')[0], 'id', 'stage');\n\n if (document.getElementById('mce-customfullscreen')) {\n const customFullscreenToolbarBtn = document.getElementById('mce-customfullscreen');\n const parent = customFullscreenToolbarBtn.parentNode.parentNode;\n parent.classList.add('mce-customfullscreen-btn');\n }\n\n if (editorContainerClassname) {\n editor.editorContainer.classList.add(editorContainerClassname);\n }\n const nonEditableLength = content.match(/mceNonEditable/g)?.length;\n // eslint-disable-next-line no-param-reassign\n editor.nonEditableLength = nonEditableLength;\n // eslint-disable-next-line no-param-reassign\n editor.hasNonEditables = nonEditableLength !== 0;\n });\n\n editor.on('change', () => {\n const content = editor.getContent();\n const { nonEditableLength, hasNonEditables } = editor;\n if (hasNonEditables) {\n const areNonEditablesDeleted = (content.match(/mceNonEditable/g)?.length ?? 0) < nonEditableLength;\n // eslint-disable-next-line no-prototype-builtins\n if (editor.plugins?.hasOwnProperty('noneditable') && areNonEditablesDeleted) {\n const undoed = editor.undoManager.undo();\n if (undoed?.content) {\n const eventName = getGlobalEventName(editorID, 'change');\n if (typeof window[eventName] === 'function') {\n window[eventName](null, undoed.content);\n }\n }\n return;\n }\n }\n if (CONTENT_REGEX.test(content)) {\n const newContent = sanitizeEditorContent(content);\n editor.setContent(newContent);\n }\n\n if (isNewActionButtonsEnabled && editor.customButtons) {\n editor.customButtons.forEach(buttonID => {\n const button = editor.dom.get(buttonID);\n\n if (!button) return;\n\n const type = button.getAttribute('data-buttontype');\n\n ['click', 'touchstart'].forEach(eventName => {\n button.addEventListener(eventName, ev => {\n handleCustomButtonClick(ev, buttonID, editor, type);\n }, true);\n });\n\n ['mouseenter', 'mouseleave'].forEach(eventName => {\n button.addEventListener(eventName, ev => handleHover(ev));\n });\n\n button.addEventListener('dblclick', ev => {\n handlePortalButtons(ev, button.id, 'setting', document.body.querySelector('.settingButonWrapper'), editor);\n });\n });\n }\n });\n\n if (extraSetupFunctions && extraSetupFunctions.length > 0) {\n extraSetupFunctions.forEach(({ id, callback }) => {\n if (callback !== undefined && typeof callback === 'function') {\n editor.on(id, callback);\n }\n });\n }\n\n const handleEsc = e => {\n if (e.key === 'Escape') {\n editor.setFullScreen(false);\n }\n };\n\n editor.setFullScreen = isOpen => {\n editor.editorContainer.classList.toggle('mce-fullscreen');\n editor.editorContainer.classList.toggle('mce-fullscreen-custom');\n if (isOpen) {\n editor.isFullscreen = true;\n window.addEventListener('keydown', handleEsc);\n editor.contentWindow.frameElement.contentDocument.body.addEventListener('keydown', handleEsc);\n } else {\n editor.isFullscreen = false;\n editor.editorContainer.style = editor.exStyles;\n window.removeEventListener('keydown', handleEsc);\n editor.contentWindow.frameElement.contentDocument.body.removeEventListener('keydown', handleEsc);\n }\n };\n\n const fontSizes = editor.settings.font_sizes || DEFAULT_FONT_SIZES;\n const fonts = createFormats(editor.settings.font_formats || DEFAULT_FORMATS);\n editor.addButton('customimage', { icon: 'image', tooltip: translate('Insert Image'), onClick: handleInsertImageClick });\n editor.addButton('alignment', createCustomButtonConfig({ tooltip: 'Text Align', icon: 'alignleft', html: ALIGNMENT_MENU }));\n editor.addButton('listmenu', createCustomButtonConfig({ tooltip: 'List', icon: 'bullist', html: LIST_MENU }));\n editor.addButton('customfontsize', createCustomButtonConfig({ tooltip: translate('Font Size'), icon: 'fontsize', html: createCustomFontSizeMenu(fontSizes) }));\n editor.addButton('customfontfamily', createCustomButtonConfig({ tooltip: 'Font Family', icon: 'fontfamily', html: createCustomFontFamilyMenu(fonts) }));\n editor.addButton('customfullscreen', {\n type: 'button',\n role: 'fullscreen',\n tooltip: 'Toggle fullscreen',\n icon: 'fullscreen',\n onclick: () => {\n editor.setFullScreen(!editor.isFullscreen);\n },\n id: 'mce-customfullscreen'\n });\n if (extraButtons && extraButtons.length > 0) {\n extraButtons.forEach(({ id, generator, ...editorButtonProps }) => {\n switch (true) {\n case generator !== undefined && typeof generator === 'function': {\n editor.addButton(id, { classes: 'custom-button ', ...generator(editor) });\n break;\n }\n default:\n editor.addButton(id, editorButtonProps);\n break;\n }\n });\n }\n\n if (popoverButtons && popoverButtons.length) {\n popoverButtons.forEach(({ id, component, ...popoverButtonProps }) => {\n editor.addButton(id, {\n type: 'button',\n id,\n onclick: () => {\n renderPopoverButton({ id, component, editor });\n },\n ...popoverButtonProps\n });\n });\n }\n};\n","// eslint-disable-next-line no-undef\nexport const panelObserver = new MutationObserver(mutations => {\n mutations.forEach(mutation => {\n mutation.addedNodes.forEach(node => {\n if (node.classList && node.classList.contains('mce-popover')) {\n const panel = node;\n const { top, height } = panel.getBoundingClientRect();\n const viewportHeight = window.innerHeight;\n const spaceBelow = viewportHeight - top;\n const arrow = node.querySelector('.mce-arrow');\n if (spaceBelow < height && top > spaceBelow) {\n panel.style.transformOrigin = 'center bottom';\n panel.style.transform = 'translateY(calc(-100% - 48px))';\n if (arrow) {\n arrow.style.top = 'auto';\n arrow.style.transform = 'rotate(180deg)';\n arrow.style.bottom = '-11px';\n }\n } else {\n panel.style.transformOrigin = '';\n panel.style.transform = '';\n if (arrow) {\n arrow.style.top = '';\n arrow.style.transform = '';\n arrow.style.bottom = '';\n }\n }\n }\n });\n });\n});\n","import React, {\n useMemo, useEffect, useRef, useState, forwardRef, useImperativeHandle\n} from 'react';\nimport {\n string, elementType, shape, func, arrayOf\n} from 'prop-types';\n\nimport {\n Container as DefaultContainer,\n ErrorWrapper as DefaultErrorWrapper,\n LoadingWrapper as DefaultLoadingWrapper,\n ImageUploadPanel as DefaultImageUploadPanel\n} from './defaults';\n\nimport Modal from '../Modal';\n\nimport { generateShortID } from '../../utils';\nimport { useScript, useEffectIgnoreFirst } from '../../utils/hooks';\nimport {\n setupEditor, sanitizeEditorContent, setGlobalEvents, clearGlobalEvents\n} from './utils';\n\nimport { BASE_CONFIG, AVAILABLE_LANGUAGE_CODES } from './constants';\nimport { panelObserver } from '../../utils/observers';\n\nconst RichTextEditor = forwardRef(({\n name, scriptSrc, value, defaultValue, config, translate, modalProperties, extraButtons,\n extraPlugins, extraSetupFunctions, customActionButtons,\n ErrorWrapperRenderer, LoadingWrapperRenderer, ImageUploadPanelRenderer, ContainerRenderer,\n ModalRenderer, editorContainerClassname, popoverButtons, ...props\n}, ref) => {\n const imageUploadModelRef = useRef();\n const editorFirst = useRef();\n const [editor, setEditor] = useState(false);\n const [customButtons, setCustomButtons] = useState([]);\n const { loaded, error } = useScript(scriptSrc);\n const id = useMemo(() => `react_tinymce_${generateShortID()}`, []);\n setGlobalEvents(id, props); // putting this line into an effect/memoize breaks everything. stupid but it should be in render. React useEffect bug.\n\n const defaultPlugins = config.plugins || BASE_CONFIG.plugins;\n const plugins = window.isNewActionButtons ? `${defaultPlugins} noneditable` : defaultPlugins;\n\n const editorConfig = useMemo(() => {\n const mceConfig = {\n ...BASE_CONFIG,\n ...config,\n plugins\n };\n return { ...mceConfig, language: mceConfig.language ? mceConfig.language.replace('_', '-') : BASE_CONFIG.language };\n }, [config]);\n\n const handleInsertImageClick = () => imageUploadModelRef.current.show();\n const handleImageUpload = ({ file: { url }, altText }) => {\n const img = `${altText}`;\n editor.insertContent(img);\n imageUploadModelRef.current.hide();\n };\n\n const reRenderButtons = curEditor => {\n curEditor.customEventForButtons.fire('addCustomButton', { customButtons });\n };\n\n const handleEditorSetup = tempEditor => {\n setupEditor(id, tempEditor, {\n translate, handleInsertImageClick, extraButtons, extraSetupFunctions, editorContainerClassname, popoverButtons, reRenderButtons, ...props\n });\n setEditor(tempEditor);\n panelObserver.observe(document.body, { childList: true });\n };\n\n const reinitializeTinyMCE = () => {\n if (global.tinyMCE) {\n const selector = `#${id}`;\n global.tinyMCE.remove(selector);\n\n const currentLanguage = AVAILABLE_LANGUAGE_CODES.includes(global.currentLocale) ? global.currentLocale : 'en-US';\n const languageCode = currentLanguage.replace('-', '_');\n\n global.tinyMCE.init({\n ...editorConfig,\n selector,\n setup: handleEditorSetup,\n language_url: `//${global.location.hostname}/js/rich-text-editor/langs/${currentLanguage}.js`,\n indent_use_margin: true\n });\n\n global.tinyMCE.i18n.setCode(languageCode);\n editorFirst.current = true;\n }\n };\n\n useImperativeHandle(ref, () => ({ editor, reinitializeTinyMCE }));\n\n useEffect(() => {\n if (loaded && !error && global.tinyMCE) {\n const selector = `#${id}`;\n if (extraPlugins && extraPlugins.length > 0) {\n extraPlugins.forEach(({ id: pluginName, generator }) => {\n if (generator !== undefined && typeof generator === 'function') {\n global.tinyMCE.PluginManager.add(pluginName, generator);\n }\n });\n }\n reinitializeTinyMCE();\n\n return () => {\n panelObserver.disconnect();\n if (global.tinyMCE) {\n try {\n clearGlobalEvents(id);\n global.tinyMCE.remove(selector);\n } catch (e) {\n console.warn('Error while removing tinyMCE with selector', selector);\n console.error(e);\n }\n }\n };\n }\n }, [loaded, error]);\n\n useEffect(() => {\n if (editor) editor.customButtons = customButtons;\n }, [customButtons]);\n\n useEffect(() => {\n if (!customActionButtons || !editor) return;\n if (!editorFirst.current) {\n return;\n }\n\n setTimeout(() => {\n editor.customEventForButtons.fire('addCustomButton', { buttons: customActionButtons });\n }, 500);\n\n setCustomButtons(customActionButtons);\n }, [customActionButtons, editor, editorFirst]);\n\n useEffectIgnoreFirst(() => {\n if (editor && defaultValue === undefined) {\n editor.setContent(sanitizeEditorContent(value));\n }\n }, [value]);\n\n return (\n <>\n {error && Something went wrong when loading text editor. Please try again.}\n {!loaded && Loading...}\n {loaded && !error && (\n \n