{"version":3,"file":"static/js/index.1e324126.js","sources":["webpack://@jotforminc/portal/../../configs/tracking-config/src/index.js","webpack://@jotforminc/portal/./src/components/AppIcon/ScAppIconWrapper.js","webpack://@jotforminc/portal/./src/components/AppIcon/index.js","webpack://@jotforminc/portal/./src/components/AppImage/index.js","webpack://@jotforminc/portal/./src/components/AppLogo/index.js","webpack://@jotforminc/portal/./src/components/AppLogo/scLogo.js","webpack://@jotforminc/portal/./src/components/AppModal/ScAppModal.js","webpack://@jotforminc/portal/./src/components/AppModal/index.js","webpack://@jotforminc/portal/./src/components/Badge/ScBadge.js","webpack://@jotforminc/portal/./src/components/Badge/index.js","webpack://@jotforminc/portal/./src/components/BuilderLoading/index.js","webpack://@jotforminc/portal/./src/components/Button/scButton.js","webpack://@jotforminc/portal/./src/components/Button/index.js","webpack://@jotforminc/portal/./src/components/Dropdown/defaults/OptionContainerRenderer.js","webpack://@jotforminc/portal/./src/components/Dropdown/defaults/ButtonRenderer.js","webpack://@jotforminc/portal/./src/components/Dropdown/defaults/ContainerRenderer.js","webpack://@jotforminc/portal/./src/components/Dropdown/index.js","webpack://@jotforminc/portal/./src/components/Dropdown/scDropdown.js","webpack://@jotforminc/portal/./src/components/IconSelector/index.js","webpack://@jotforminc/portal/../../../../src/icons/media/image-broken-filled.svg","webpack://@jotforminc/portal/./src/components/Image/NoImage/index.js","webpack://@jotforminc/portal/./src/components/Image/index.js","webpack://@jotforminc/portal/./src/components/Items/FormItem/index.js","webpack://@jotforminc/portal/./src/components/SVGIcon/index.js","webpack://@jotforminc/portal/./src/components/ItemIcon/scItemIcon.js","webpack://@jotforminc/portal/./src/components/Items/SimpleItem/SimpleIcon.js","webpack://@jotforminc/portal/./src/components/Items/SimpleItem/SimpleItem.js","webpack://@jotforminc/portal/./src/components/Items/defaultRenderers.js","webpack://@jotforminc/portal/./src/components/Items/withContentWrapper.js","webpack://@jotforminc/portal/./src/components/ListItemBase/DefaultImage/index.js","webpack://@jotforminc/portal/./src/components/ListItemBase/helper.js","webpack://@jotforminc/portal/./src/components/ListItemBase/styled.js","webpack://@jotforminc/portal/./src/components/Loading.js","webpack://@jotforminc/portal/./src/components/PortalErrorBoundary/ScErrorFallback.js","webpack://@jotforminc/portal/./src/components/PortalErrorBoundary/DefaultErrorFallback.js","webpack://@jotforminc/portal/./src/components/PortalErrorBoundary/index.js","webpack://@jotforminc/portal/./src/components/PortalFileUpload/scFileUpload.js","webpack://@jotforminc/portal/./src/components/PortalFileUpload/Thumbnail.js","webpack://@jotforminc/portal/./src/components/PortalFileUpload/FileInputRenderer.js","webpack://@jotforminc/portal/./src/components/PortalFileUpload/FileLoadingRenderer.js","webpack://@jotforminc/portal/./src/components/PortalFileUpload/index.js","webpack://@jotforminc/portal/../../libs/apploaders/src/Dots/index.js","webpack://@jotforminc/portal/./src/components/PublicAppLoading/index.js","webpack://@jotforminc/portal/./src/components/RangeSlider/index.js","webpack://@jotforminc/portal/./src/components/ReplaceFormButton/index.js","webpack://@jotforminc/portal/./src/components/TetheredWrapper/index.js","webpack://@jotforminc/portal/./src/components/common/SvgRenderer.js","webpack://@jotforminc/portal/./src/constants/appConfig.js","webpack://@jotforminc/portal/../../../../src/icons/media/image-slider-filled.svg","webpack://@jotforminc/portal/../../../../src/icons/general/map-location-pin-filled.svg","webpack://@jotforminc/portal/../../../../src/icons/general/share-nodes-filled.svg","webpack://@jotforminc/portal/../../../../src/icons/layout/spacer-vertical-filled.svg","webpack://@jotforminc/portal/../../../../src/icons/media/images-filled.svg","webpack://@jotforminc/portal/./src/constants/availableWidgets.js","webpack://@jotforminc/portal/./src/constants/features.js","webpack://@jotforminc/portal/../../../../src/icons/documents/document-pdf-filled.svg","webpack://@jotforminc/portal/../../../../src/icons/documents/document-xlsx-filled.svg","webpack://@jotforminc/portal/../../../../src/icons/documents/document-doc-filled.svg","webpack://@jotforminc/portal/../../../../src/icons/products/product-tables-color-border.svg","webpack://@jotforminc/portal/../../../../src/icons/products/product-report-builder-color-border.svg","webpack://@jotforminc/portal/../../../../src/icons/products/product-inbox-color-border.svg","webpack://@jotforminc/portal/./src/components/CustomPlaceholderIcon/index.js","webpack://@jotforminc/portal/./src/constants/index.js","webpack://@jotforminc/portal/./src/constants/itemTypes.js","webpack://@jotforminc/portal/./src/constants/modals.js","webpack://@jotforminc/portal/./src/constants/navigation.js","webpack://@jotforminc/portal/./src/constants/propTypes.js","webpack://@jotforminc/portal/./src/constants/team.js","webpack://@jotforminc/portal/./src/store/reducers/ui.js","webpack://@jotforminc/portal/./src/store/reducers/user.js","webpack://@jotforminc/portal/./src/store/watchers/navigation.js","webpack://@jotforminc/portal/../../../../src/icons/general/heart-circle-filled.svg","webpack://@jotforminc/portal/../../../../src/icons/arrows/arrow-left.svg","webpack://@jotforminc/portal/../../../../src/icons/general/copy-line.svg","webpack://@jotforminc/portal/../../../../src/icons/arrows/arrow-up-to-line.svg","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/StandaloneTemplates/assets/icon-noresult.svg","webpack://@jotforminc/portal/../../../../src/icons/layout/layer-filled.svg","webpack://@jotforminc/portal/../../../../src/icons/general/xmark-circle-filled.svg","webpack://@jotforminc/portal/../../../../src/icons/arrows/caret-right.svg","webpack://@jotforminc/portal/../../../../src/icons/arrows/arrow-down.svg","webpack://@jotforminc/portal/../../../../src/icons/arrows/arrow-up-left.svg","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/AppPreview/assets/svg/tryArrow.svg","webpack://@jotforminc/portal/../../libs/create-new-wizards/src/components/CreateNewWizard/assets/svg/iconClassicForm.svg","webpack://@jotforminc/portal/../../libs/create-new-wizards/src/components/CreateNewWizard/assets/svg/iconCardForm.svg","webpack://@jotforminc/portal/./src/assets/noFormsFoundIcon.svg","webpack://@jotforminc/portal/./src/assets/noSignsFoundIcon.svg","webpack://@jotforminc/portal/./src/assets/noTablesFoundIcon.svg","webpack://@jotforminc/portal/./src/assets/noReportsFoundIcon.svg","webpack://@jotforminc/portal/./src/assets/noAppsFoundIcon.svg","webpack://@jotforminc/portal/./src/assets/noFormsIcon.svg","webpack://@jotforminc/portal/./src/assets/noTablesIcon.svg","webpack://@jotforminc/portal/./src/assets/noReportsIcon.svg","webpack://@jotforminc/portal/./src/assets/noAppsIcon.svg","webpack://@jotforminc/portal/../../../../src/icons/brand/facebook-square-filled.svg","webpack://@jotforminc/portal/../../../../src/icons/brand/twitter-square-filled.svg","webpack://@jotforminc/portal/../../../../src/icons/brand/whatsapp-square-filled.svg","webpack://@jotforminc/portal/../../../../src/icons/finance/money-bill-filled.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/square-dark.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/stripe-color.svg","webpack://@jotforminc/portal/../../../../src/icons/arrows/angles-selector-horizontal.svg","webpack://@jotforminc/portal/../../../../src/icons/finance/credit-card-xmark-filled.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/paypal-express-logomark-color.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/payu-india-logomark-color.svg","webpack://@jotforminc/portal/../../../../src/icons/general/circle-sm-filled.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/authorizenet-color.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/stripe-dark.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/paypal-color.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/braintree-dark.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/cardconnect-color.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/eway-dark.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/venmo-dark.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/mollie-dark.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/cybersource-dark.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/payjunction-color.svg","webpack://@jotforminc/portal/../../../../src/icons/products/product-apps-color-border.svg","webpack://@jotforminc/portal/../../../../src/icons/products/product-form-card-color-border.svg","webpack://@jotforminc/portal/../../../../src/icons/general/xmark-circle.svg","webpack://@jotforminc/portal/../../../../src/icons/general/info-circle.svg","webpack://@jotforminc/portal/../../../../src/icons/general/exclamation.svg","webpack://@jotforminc/portal/../../libs/router-bridge/src/init.js","webpack://@jotforminc/portal/../../libs/tracking/src/init.ts","webpack://@jotforminc/portal/../../libs/common/src/utils/hooks/index.js","webpack://@jotforminc/portal/../../libs/widgets-js-sdk/src/utils/getStyle.js","webpack://@jotforminc/portal/../../libs/widgets-js-sdk/src/utils/postmessage.js","webpack://@jotforminc/portal/../../libs/widgets-js-sdk/src/translations/index.js","webpack://@jotforminc/portal/../../libs/widgets-js-sdk/src/utils/loadWidgetImageAsBase64.js","webpack://@jotforminc/portal/../../libs/widgets-js-sdk/src/widgetsServer/builder.js","webpack://@jotforminc/portal/../../libs/widgets-js-sdk/src/index.js","webpack://@jotforminc/portal/./src/CoreAppRouter.js","webpack://@jotforminc/portal/./src/modules/Owner/CreateNewPortal.js","webpack://@jotforminc/portal/../../libs/utils/src/htmlTools.js","webpack://@jotforminc/portal/./src/store/reducers/portal.js","webpack://@jotforminc/portal/./src/store/reducers/forms.js","webpack://@jotforminc/portal/./src/store/reducers/signs.js","webpack://@jotforminc/portal/./src/store/reducers/share.js","webpack://@jotforminc/portal/./src/store/reducers/apps.js","webpack://@jotforminc/portal/./src/store/reducers/undoRedo.js","webpack://@jotforminc/portal/./src/store/reducers/progress.js","webpack://@jotforminc/portal/./src/store/reducers/widgets.js","webpack://@jotforminc/portal/./src/store/reducers/products.js","webpack://@jotforminc/portal/./src/store/reducers/cdnconfig.js","webpack://@jotforminc/portal/./src/store/reducers/team.js","webpack://@jotforminc/portal/./src/store/reducers/checkoutForm.js","webpack://@jotforminc/portal/./src/store/reducers/pushNotification.js","webpack://@jotforminc/portal/./src/store/reducers/livePreview.js","webpack://@jotforminc/portal/./src/store/reducers/assistant.js","webpack://@jotforminc/portal/./src/store/reducers/dataSource/index.js","webpack://@jotforminc/portal/./src/store/reducers/userManagement.js","webpack://@jotforminc/portal/../../libs/push-notification/src/constants.ts","webpack://@jotforminc/portal/../../libs/push-notification/src/utils/index.ts","webpack://@jotforminc/portal/../../libs/push-notification/src/api/index.ts","webpack://@jotforminc/portal/../../libs/push-notification/src/utils/error-base.ts","webpack://@jotforminc/portal/../../libs/push-notification/src/SubscriptionError.ts","webpack://@jotforminc/portal/../../libs/push-notification/src/PushManager.ts","webpack://@jotforminc/portal/./src/store/watchers/undoRedo.js","webpack://@jotforminc/portal/./src/modules/Builder/components/Modals/AppNameIconSettingsModal/seenManager.js","webpack://@jotforminc/portal/./src/store/saga/ui.js","webpack://@jotforminc/portal/./src/components/Toaster/ScToast.js","webpack://@jotforminc/portal/./src/components/Toaster/Notification.js","webpack://@jotforminc/portal/./src/modules/Builder/constants/undoRedo.js","webpack://@jotforminc/portal/./src/components/Toaster/UndoNotification.js","webpack://@jotforminc/portal/./src/store/watchers/toast.js","webpack://@jotforminc/portal/./src/store/watchers/network.js","webpack://@jotforminc/portal/./src/store/watchers/itemDuplication.js","webpack://@jotforminc/portal/./src/store/watchers/progress.js","webpack://@jotforminc/portal/./src/store/watchers/share.js","webpack://@jotforminc/portal/./src/store/watchers/styling.js","webpack://@jotforminc/portal/./src/store/workers/progressBarAvailability.js","webpack://@jotforminc/portal/./src/store/watchers/pageActions.js","webpack://@jotforminc/portal/./src/store/watchers/assetGeneration.js","webpack://@jotforminc/portal/./src/store/workers/portalOrder.js","webpack://@jotforminc/portal/./src/store/workers/itemSorting.js","webpack://@jotforminc/portal/./src/modules/Builder/components/Modals/GuestLoginModal/index.js","webpack://@jotforminc/portal/./src/store/watchers/modals/guestLoginModal.js","webpack://@jotforminc/portal/../../libs/limit-dialog/src/utils/abtests.js","webpack://@jotforminc/portal/../../libs/limit-dialog/src/components/openFormLimitDialog.js","webpack://@jotforminc/portal/../../libs/utils/src/gtm.js","webpack://@jotforminc/portal/../../libs/create-new-wizards/src/utils.js","webpack://@jotforminc/portal/../../libs/create-new-wizards/src/components/CreateNewPortalWizard/core/handleCloneApp.js","webpack://@jotforminc/portal/../../libs/create-new-wizards/src/components/CreateNewPortalWizard/components/CloneAppModal/constants.js","webpack://@jotforminc/portal/../../libs/create-new-wizards/src/components/CloneModal/CloneSettings.js","webpack://@jotforminc/portal/../../libs/create-new-wizards/src/components/CloneModal/index.js","webpack://@jotforminc/portal/../../libs/create-new-wizards/src/components/CreateNewPortalWizard/components/CloneAppModal/index.js","webpack://@jotforminc/portal/../../libs/create-new-wizards/src/components/CreateNewPortalWizard/core/jotformActions.js","webpack://@jotforminc/portal/./src/store/watchers/modals/cloneApp.js","webpack://@jotforminc/portal/../../libs/modals/src/components/ConfirmationModal/scRevokeAccess.js","webpack://@jotforminc/portal/../../libs/modals/src/components/ConfirmationModal/index.js","webpack://@jotforminc/portal/../../libs/modals/src/components/StillEditingModal/ScCircularProgressBar.js","webpack://@jotforminc/portal/../../libs/modals/src/components/StillEditingModal/index.js","webpack://@jotforminc/portal/./src/store/watchers/modals/StillEditingModal/ScStillEditingModal.js","webpack://@jotforminc/portal/./src/store/watchers/modals/StillEditingModal/index.js","webpack://@jotforminc/portal/../../libs/uikit/src/components/Rating/defaults/DefaultItemRenderer.js","webpack://@jotforminc/portal/../../libs/uikit/src/components/Rating/defaults/DefaultContainerRenderer.js","webpack://@jotforminc/portal/../../libs/uikit/src/components/Rating/index.js","webpack://@jotforminc/portal/./src/modules/Builder/components/Modals/PortalFeedbackModal/index.js","webpack://@jotforminc/portal/./src/store/watchers/modals/portalFeedbackModal.js","webpack://@jotforminc/portal/./src/store/watchers/modals/index.js","webpack://@jotforminc/portal/./src/store/watchers/signup.js","webpack://@jotforminc/portal/./src/store/watchers/productDetails.js","webpack://@jotforminc/portal/./src/store/watchers/productListActions.js","webpack://@jotforminc/portal/./src/store/watchers/collaboration.js","webpack://@jotforminc/portal/./src/components/Toaster/ShoppingNotification/ScShoppingNotification.js","webpack://@jotforminc/portal/./src/components/Toaster/ShoppingNotification/ShoppingNotification.js","webpack://@jotforminc/portal/./src/store/watchers/appToast.js","webpack://@jotforminc/portal/./src/store/watchers/filterProducts.js","webpack://@jotforminc/portal/./src/keyboard.js","webpack://@jotforminc/portal/./src/store/events.js","webpack://@jotforminc/portal/./src/store/watchers/fullstory.js","webpack://@jotforminc/portal/./src/store/saga/productList.js","webpack://@jotforminc/portal/./src/store/saga/helper.js","webpack://@jotforminc/portal/./src/store/saga/aiAssistant.js","webpack://@jotforminc/portal/./src/constants/questions.js","webpack://@jotforminc/portal/./src/store/saga/checkoutForm.js","webpack://@jotforminc/portal/./src/store/saga/dataSource/constants.js","webpack://@jotforminc/portal/./src/store/saga/dataSource/dataSource.js","webpack://@jotforminc/portal/./src/modules/PublicApp/PushNotificationPermission/utils.js","webpack://@jotforminc/portal/./src/modules/Builder/components/Publish/constants.js","webpack://@jotforminc/portal/./src/store/saga/index.js","webpack://@jotforminc/portal/./src/store/index.js","webpack://@jotforminc/portal/./src/withStore.js","webpack://@jotforminc/portal/./src/modules/Builder/components/Modals/DeletePageModal/index.js","webpack://@jotforminc/portal/./src/modules/PublicApp/RestartAppModal.js","webpack://@jotforminc/portal/../../libs/utils/src/translation.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/core/texts.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/Button/index.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/Button/CloseButton.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/core/utils.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/Wizard/WizardWrapper.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/Wizard/index.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/Button/BackButton.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/Header/index.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/Wizard/WizardBody.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/Wizard/WizardItem.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/StandaloneTemplates/constantImages.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/StandaloneTemplates/getDeviceType.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/StandaloneTemplates/components/TemplateItem/utils.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/StandaloneTemplates/onImageError.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/StandaloneTemplates/components/TemplateItem/PreviewHint.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/StandaloneTemplates/components/TemplateItem/AppTemplateItem.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/StandaloneTemplates/components/TemplateItem/PdfTemplateItem.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/StandaloneTemplates/components/TemplateItem/FormTemplateItem.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/StandaloneTemplates/components/TemplateItem/TableTemplateItem.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/StandaloneTemplates/components/TemplateItem/ApprovalTemplateItem.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/StandaloneTemplates/components/TemplateItem/AgentTemplateItem.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/StandaloneTemplates/components/TemplateItem/PageTemplateItem.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/StandaloneTemplates/templateConstants.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/Loader/index.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/StandaloneTemplates/apiTemplates.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/StandaloneTemplates/utils.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/StandaloneTemplates/api.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/StandaloneTemplates/components/ScSearch.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/StandaloneTemplates/components/Search.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/StandaloneTemplates/components/Sidebar/Accordion.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/StandaloneTemplates/components/Sidebar/RadioButton.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/StandaloneTemplates/components/Sidebar/Sorting.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/StandaloneTemplates/components/Sidebar/Search.js","webpack://@jotforminc/portal/../../libs/constants/src/languages/index.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/StandaloneTemplates/components/Sidebar/LanguagesFilter.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/StandaloneTemplates/components/Sidebar/FormLayout.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/StandaloneTemplates/components/Sidebar/index.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/StandaloneTemplates/components/TemplateItem/TemplateItemContainer.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/StandaloneTemplates/components/ScRelatedCategories.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/StandaloneTemplates/components/RelatedCategories.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/StandaloneTemplates/constants.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/StandaloneTemplates/components/SubCategoryGalleryItem.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/StandaloneTemplates/components/ScTemplates.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/StandaloneTemplates/components/ScMainWrapper.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/StandaloneTemplates/index.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/StandaloneTemplates/components/PreviewModalContents/ModalControls.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/StandaloneTemplates/components/PreviewModalContents/ApprovalTemplatePreviewContent.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/StandaloneTemplates/components/PreviewModalContents/TableTemplatePreviewContent.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/StandaloneTemplates/components/PreviewModalContents/AgentTemplatePreviewContent.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/AppPreview/core/constants.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/AppPreview/core/texts.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/AppPreview/components/ViewMode.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/AppPreview/components/MobileBorder.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/AppPreview/components/TabletBorder.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/AppPreview/components/MobilePageBorder.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/AppPreview/components/TabletPageBorder.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/AppPreview/core/utils.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/AppPreview/components/MultiplePreview.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/AppPreview/components/SinglePreview.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/AppPreview/components/AppPreviewBody.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/StandaloneTemplates/components/PreviewModalContents/AppTemplateAreaRenderer.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/StandaloneTemplates/components/RoleSelector.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/StandaloneTemplates/components/PreviewModalContents/PDFTemplateAreaRenderer.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/StandaloneTemplates/customModalConstants.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/StandaloneTemplates/components/PreviewModalContents/SimilarTemplatesItem.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/hooks/useIsMobile.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/StandaloneTemplates/hooks.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/Wizard/NewWizardTemplateModal.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/Navigation/LegacyTemplatesRenderer.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/Navigation/WizardTemplate.js","webpack://@jotforminc/portal/../../libs/create-new-wizards/src/components/CreateNewWizard/core/utils.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/Wizard/WizardList.js","webpack://@jotforminc/portal/../../libs/wizard-shared/src/components/Wizard/WizardListItem.js","webpack://@jotforminc/portal/../../libs/create-new-wizards/src/components/CreateNewWizard/core/texts.js","webpack://@jotforminc/portal/../../libs/create-new-wizards/src/components/CreateNewWizard/components/Navigation/FormTypeSelect.js","webpack://@jotforminc/portal/../../libs/create-new-wizards/src/components/CreateNewWizard/components/Navigation/StartFromScratch.js","webpack://@jotforminc/portal/./src/modules/Builder/components/SelectTemplate.js","webpack://@jotforminc/portal/./src/modules/Builder/components/Modals/ResourcePickerModal/ScResourcePicker.js","webpack://@jotforminc/portal/./src/components/ResourcePickerControlBar/ScResourcePickerControlBar.js","webpack://@jotforminc/portal/./src/components/ResourcePickerControlBar/OptionRenderer.js","webpack://@jotforminc/portal/./src/components/ResourcePickerControlBar/ButtonRenderer.js","webpack://@jotforminc/portal/./src/components/TeamAvatar/Image.js","webpack://@jotforminc/portal/./src/components/TeamAvatar/index.js","webpack://@jotforminc/portal/./src/components/ResourcePickerControlBar/ScControlBarDropdown.js","webpack://@jotforminc/portal/./src/components/ResourcePickerControlBar/index.js","webpack://@jotforminc/portal/./src/components/ResourcePickerWithControlBar/EmptyListPlaceholder.js","webpack://@jotforminc/portal/./src/components/ResourcePickerWithControlBar/index.js","webpack://@jotforminc/portal/./src/modules/Builder/components/Modals/FormPickerModal/Footer.js","webpack://@jotforminc/portal/./src/modules/Builder/components/Modals/ResourcePickerModal/helper.js","webpack://@jotforminc/portal/./src/modules/Builder/components/Modals/ResourcePickerModal/index.js","webpack://@jotforminc/portal/./src/modules/Builder/components/Modals/FormPickerModal/NotFoundListPlaceholder.js","webpack://@jotforminc/portal/./src/modules/Builder/components/Modals/FormPickerModal/Header.js","webpack://@jotforminc/portal/./src/modules/Builder/components/Modals/FormPickerModal/index.js","webpack://@jotforminc/portal/./src/modules/PublicApp/Modals/ProductItemDetailsModal/index.js","webpack://@jotforminc/portal/./src/modules/PublicApp/Modals/SearchInProductsModal/FilteredProductList.js","webpack://@jotforminc/portal/./src/modules/PublicApp/Modals/SearchInProductsModal/SearchInProductsContent.js","webpack://@jotforminc/portal/./src/modules/PublicApp/Modals/SearchInProductsModal/index.js","webpack://@jotforminc/portal/./src/modules/Builder/components/Modals/CheckoutFormPreviewModal/DialogRenderer.js","webpack://@jotforminc/portal/./src/modules/Builder/components/Modals/CheckoutFormPreviewModal/HeaderRenderer.js","webpack://@jotforminc/portal/./src/modules/Builder/components/Modals/CheckoutFormPreviewModal/ContentRenderer.js","webpack://@jotforminc/portal/./src/modules/Builder/components/Modals/CheckoutFormPreviewModal/FooterRenderer.js","webpack://@jotforminc/portal/./src/modules/Builder/components/Modals/CheckoutFormPreviewModal/index.js","webpack://@jotforminc/portal/./src/modules/PublicApp/AppIsDoneModal.js","webpack://@jotforminc/portal/./src/modules/PublicApp/Modals/ShareAppModal/DialogRenderer.js","webpack://@jotforminc/portal/./src/modules/PublicApp/Modals/ShareAppModal/HeaderRenderer.js","webpack://@jotforminc/portal/./src/modules/PublicApp/Modals/ShareAppModal/index.js","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/modals/Flows/Items/Wrapper.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/modals/Flows/Items/Header.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/modals/Flows/Items/Body.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/modals/Flows/Items/Footer.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/modals/Flows/Steps/PaymentGateways.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/modals/Flows/Constants/ConnectionSectionProperties.ts","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/modals/Flows/Steps/PaymentGatewaySettings.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/modals/Flows/Constants/PaymentTypes.ts","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/modals/Flows/Steps/PaymentTypes.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/modals/Flows/Steps/PaymentApmPicker.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/modals/Flows/Steps/PaymentDiscardChanges.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/modals/Flows/PaymentGatewayFlows.tsx","webpack://@jotforminc/portal/../../libs/payment-gateways/src/utils/functions/sandboxValueToMappedValue.ts","webpack://@jotforminc/portal/../../libs/payment-gateways/src/utils/functions/sandboxMappedValueToValue.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gateway/gatewayDefaultSandboxPropNames.ts","webpack://@jotforminc/portal/../../libs/payment-gateways/src/utils/functions/isPropBelongsToSandbox.ts","webpack://@jotforminc/portal/../../libs/payment-gateways/src/utils/functions/getGatewayConnectionPropReferences.ts","webpack://@jotforminc/portal/../../libs/payment-gateways/src/utils/functions/sandboxPostDataConverter.ts","webpack://@jotforminc/portal/../../libs/payment-gateways/src/utils/functions/handleOauthPopupManager.ts","webpack://@jotforminc/portal/../../libs/payment-gateways/src/utils/functions/nameApmToGateway.ts","webpack://@jotforminc/portal/../../libs/payment-gateways/src/api/requestLayer.ts","webpack://@jotforminc/portal/../../libs/payment-gateways/src/api/getPaymentConnections.ts","webpack://@jotforminc/portal/../../libs/payment-gateways/src/api/moveResourcesToNewConnection.ts","webpack://@jotforminc/portal/../../libs/payment-gateways/src/api/detachConnectionResource.ts","webpack://@jotforminc/portal/../../libs/payment-gateways/src/api/attachConnectionResource.ts","webpack://@jotforminc/portal/../../libs/payment-gateways/src/api/changeStatusConnection.ts","webpack://@jotforminc/portal/../../libs/payment-gateways/src/api/newConnectionWithCredentials.ts","webpack://@jotforminc/portal/../../libs/payment-gateways/src/api/checkUniqueConnectionNameWithRequest.ts","webpack://@jotforminc/portal/../../libs/payment-gateways/src/api/getGatewayList.ts","webpack://@jotforminc/portal/../../libs/payment-gateways/src/utils/functions/isEnterpriseInTeamEnv.ts","webpack://@jotforminc/portal/../../libs/payment-gateways/src/api/getHasConnectionStats.ts","webpack://@jotforminc/portal/../../libs/payment-gateways/src/hooks/useUserRoles.ts","webpack://@jotforminc/portal/../../libs/payment-gateways/src/context/useGatewayConnection.tsx","webpack://@jotforminc/portal/../../libs/payment-constants/src/gateway/gatewayDefaultIcons.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gateway/gatewaySearchableTags.ts","webpack://@jotforminc/portal/../../libs/payment-gateways/src/utils/functions/isDevelopment.ts","webpack://@jotforminc/portal/../../libs/payment-gateways/src/utils/functions/getGatewayList.ts","webpack://@jotforminc/portal/../../libs/payment-gateways/src/utils/functions/gatewaySearch.ts","webpack://@jotforminc/portal/../../libs/payment-gateways/src/gatewayRequestModal/index.tsx","webpack://@jotforminc/portal/../../libs/payment-gateways/src/gatewayConnectionModel/components/steps/gatewayPicker.tsx","webpack://@jotforminc/portal/../../libs/payment-gateways/src/gatewayConnectionModel/components/steps/apmGatewayPicker.tsx","webpack://@jotforminc/portal/../../libs/payment-gateways/src/utils/functions/getGatewayErrorMessage.ts","webpack://@jotforminc/portal/../../libs/payment-gateways/src/gatewayConnectionModel/components/core/gatewayModeInformation.tsx","webpack://@jotforminc/portal/../../libs/payment-gateways/src/gatewayConnectionModel/components/core/loginFlowColumn.tsx","webpack://@jotforminc/portal/../../libs/payment-gateways/src/gatewayConnectionModel/components/core/commonLoginFlow.tsx","webpack://@jotforminc/portal/../../libs/payment-gateways/src/utils/functions/maskCredentialData.ts","webpack://@jotforminc/portal/../../libs/payment-gateways/src/gatewayConnectionModel/components/core/toggleOnOff.tsx","webpack://@jotforminc/portal/../../libs/payment-gateways/src/gatewayConnectionModel/components/core/renderCredentialInputs.tsx","webpack://@jotforminc/portal/../../libs/payment-gateways/src/gatewayConnectionModel/components/steps/gatewayConnection.tsx","webpack://@jotforminc/portal/../../libs/payment-gateways/src/gatewayConnectionManagement/components/core/resourceOwnerBadge.tsx","webpack://@jotforminc/portal/../../libs/payment-gateways/src/gatewayConnectionModel/components/core/connectionGatewayDisabledInEnterprise.tsx","webpack://@jotforminc/portal/../../libs/payment-gateways/src/gatewayConnectionModel/components/assets/svgIcons/connectionPickerEmptyIllustration.tsx","webpack://@jotforminc/portal/../../libs/payment-gateways/src/gatewayConnectionModel/components/core/connectionDisableInformation.tsx","webpack://@jotforminc/portal/../../libs/payment-gateways/src/utils/functions/sandboxGetDataConverter.ts","webpack://@jotforminc/portal/../../libs/payment-gateways/src/utils/functions/connectionListSearch.ts","webpack://@jotforminc/portal/../../libs/payment-gateways/src/gatewayConnectionModel/components/steps/connectionPicker.tsx","webpack://@jotforminc/portal/../../libs/payment-gateways/src/gatewayConnectionModel/components/core/modalStepsRenderer.tsx","webpack://@jotforminc/portal/../../libs/payment-gateways/src/utils/functions/isMobile.ts","webpack://@jotforminc/portal/../../libs/payment-gateways/src/utils/functions/isJotformMobileApp.ts","webpack://@jotforminc/portal/../../libs/payment-gateways/src/gatewayConnectionModel/components/core/modalFooter.tsx","webpack://@jotforminc/portal/../../libs/payment-gateways/src/gatewayConnectionModel/components/core/discardProcessInformation.tsx","webpack://@jotforminc/portal/../../libs/payment-gateways/src/gatewayConnectionModel/components/core/modalContainer.tsx","webpack://@jotforminc/portal/../../libs/payment-gateways/src/gatewayConnectionModel/index.tsx","webpack://@jotforminc/portal/./src/modules/Builder/components/Modals/PaymentGatewayPickerModal/index.js","webpack://@jotforminc/portal/./src/modules/Builder/components/Modals/AppNameIconSettingsModal/SCAppNameIconSettingsModal.js","webpack://@jotforminc/portal/./src/modules/Builder/components/Modals/AppNameIconSettingsModal/Navigation.js","webpack://@jotforminc/portal/./src/modules/Builder/components/Modals/AppNameIconSettingsModal/Renderers.js","webpack://@jotforminc/portal/./src/modules/Builder/components/Modals/AppNameIconSettingsModal/index.js","webpack://@jotforminc/portal/./src/modules/Builder/components/Modals/ExitIntentSurveyModal/index.js","webpack://@jotforminc/portal/./src/modules/Builder/components/Modals/MultiStepModal/SharedStateContext.js","webpack://@jotforminc/portal/./src/modules/Builder/components/Modals/MultiStepModal/index.js","webpack://@jotforminc/portal/./src/components/Modals/DataSourcePickerModal/Steps/constants.js","webpack://@jotforminc/portal/./src/components/Modals/DataSourcePickerModal/Steps/common/TableSelectionDefaults.js","webpack://@jotforminc/portal/./src/components/Modals/DataSourcePickerModal/Steps/TabSelection.js","webpack://@jotforminc/portal/./src/components/Modals/DataSourcePickerModal/Steps/ColumnSelection/SelectionDnd/constants.js","webpack://@jotforminc/portal/./src/components/Modals/DataSourcePickerModal/Steps/ColumnSelection/SelectionDnd/Column.js","webpack://@jotforminc/portal/./src/components/Modals/DataSourcePickerModal/Steps/ColumnSelection/SelectionDnd/SelectionItem.js","webpack://@jotforminc/portal/./src/components/Modals/DataSourcePickerModal/Steps/ColumnSelection/SelectionDnd/SelectedItem.js","webpack://@jotforminc/portal/./src/components/Modals/DataSourcePickerModal/Steps/ColumnSelection/SelectionDnd/index.js","webpack://@jotforminc/portal/./src/components/Modals/DataSourcePickerModal/Steps/ColumnSelection/index.js","webpack://@jotforminc/portal/./src/components/Modals/DataSourcePickerModal/Steps/TableSelection/constants.js","webpack://@jotforminc/portal/./src/components/Modals/DataSourcePickerModal/Steps/TableSelection/index.js","webpack://@jotforminc/portal/./src/components/Modals/DataSourcePickerModal/index.js","webpack://@jotforminc/portal/./src/components/Modals/TableProductModal/styled.js","webpack://@jotforminc/portal/./src/components/Modals/TableProductModal/helper.js","webpack://@jotforminc/portal/./src/components/Modals/TableProductModal/index.js","webpack://@jotforminc/portal/./src/modules/Builder/components/Modals/PreventDetailPageDeletionModal/index.js","webpack://@jotforminc/portal/./src/components/Modals/index.js","webpack://@jotforminc/portal/./src/components/Toaster/index.js","webpack://@jotforminc/portal/./src/components/ClonePreventedFormsNotification/ScClonePreventedFormsNotification.js","webpack://@jotforminc/portal/./src/components/ClonePreventedFormsNotification/index.js","webpack://@jotforminc/portal/../../libs/panel-components/src/components/SettingsPanel/SettingsPanelListItem.js","webpack://@jotforminc/portal/../../libs/panel-components/src/components/SettingsPanel/SettingsPanelWrapper.js","webpack://@jotforminc/portal/../../libs/panel-components/src/components/SettingsPanel/SettingsPanelListNavigation.js","webpack://@jotforminc/portal/./src/modules/Builder/components/Settings/SettingsNavigationPanel/SettingsNavigationPanelItem.js","webpack://@jotforminc/portal/./src/modules/Builder/components/Settings/SettingsNavigationPanel/ScSettingsNavigationPanel.js","webpack://@jotforminc/portal/./src/modules/Builder/components/Settings/SettingsNavigationPanel/index.js","webpack://@jotforminc/portal/./src/modules/Builder/components/Settings/scSettingsStage.js","webpack://@jotforminc/portal/./src/modules/Builder/components/Settings/SettingsStage.js","webpack://@jotforminc/portal/./src/modules/Builder/components/Settings/index.js","webpack://@jotforminc/portal/./src/modules/Builder/components/NavigationPanel/NavigationPanelItem.js","webpack://@jotforminc/portal/./src/modules/Builder/components/NavigationPanel/ScNavigationPanel.js","webpack://@jotforminc/portal/./src/modules/Builder/components/NavigationPanel/index.js","webpack://@jotforminc/portal/./src/modules/Builder/components/Publish/ScPublishStage.js","webpack://@jotforminc/portal/./src/modules/Builder/components/Publish/PublishStage.js","webpack://@jotforminc/portal/./src/modules/Builder/components/Publish/index.js","webpack://@jotforminc/portal/./src/withFeatureToggles.js","webpack://@jotforminc/portal/./src/App.js","webpack://@jotforminc/portal/./src/index.js","webpack://@jotforminc/portal/./src/modules/Builder/components/AssetGenerator/index.js","webpack://@jotforminc/portal/./src/modules/Builder/components/AssetGenerator/utils.js","webpack://@jotforminc/portal/./src/modules/Builder/components/Checkbox/ScCheckbox.js","webpack://@jotforminc/portal/./src/modules/Builder/components/Checkbox/index.js","webpack://@jotforminc/portal/./src/modules/Builder/components/ColorPicker.js","webpack://@jotforminc/portal/./src/modules/Builder/components/FontPicker/fonts.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/Editors/DocumentFileUpload.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/MultipleRightPanel/utils.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/PageIcon/index.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/AppLogoPropertyPanel.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/BadgeToggle/badgeToggleConstants.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/ButtonActions/buttonRoleTypes.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/ButtonActions/components/ButtonFormSelection.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/ButtonActions/components/ButtonLinkInput.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/ButtonActions/components/ButtonMailInput.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/ButtonActions/components/ButtonPageSelection/PageSelection.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/ButtonActions/components/ButtonPageSelection/index.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/ButtonActions/components/ButtonPhoneInput.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/ChooseFileButton.js","webpack://@jotforminc/portal/../../libs/tag-input/src/utils/index.js","webpack://@jotforminc/portal/../../libs/tag-input/src/patch/index.js","webpack://@jotforminc/portal/../../libs/tag-input/src/constants/index.js","webpack://@jotforminc/portal/../../libs/tag-input/src/index.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/DataSourcePicker/helper.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/DataSourcePicker/getSubfield.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/DataSourcePicker/styled.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/DataSourcePicker/constants.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/DataSourcePicker/index.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/DuplicateItemButton/index.js","webpack://@jotforminc/portal/../../../../src/icons/general/icons-filled.svg","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/ListItemSideItemSelection/constants.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/ListItemSideItemSelection/subSelections/styled.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/ListItemSideItemSelection/subSelections/IconSelector.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/ListItemSideItemSelection/helper.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/ListItemSideItemSelection/subSelections/Image.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/MultiSectionSelect/helper.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/MultiSectionSelect/ValueArea/styled.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/MultiSectionSelect/ValueArea/index.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/MultiSectionSelect/ScDropdown.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/MultiSectionSelect/OptionGroup/Option/index.js","webpack://@jotforminc/portal/./src/utils/KeyboardNavigation.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/MultiSectionSelect/OptionGroup/styled.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/MultiSectionSelect/OptionGroup/index.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/MultiSectionSelect/index.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/PanelItemDescriptionRenderer.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/ScLineHr.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/ScSectionTitle.js","webpack://@jotforminc/portal/./src/assets/verticalCardStyle.svg","webpack://@jotforminc/portal/./src/assets/horizontalCardStyle.svg","webpack://@jotforminc/portal/./src/assets/listLayoutHorizontal.svg","webpack://@jotforminc/portal/./src/assets/listLayoutVertical.svg","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/constants.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/ButtonActions/components/DsPageSelection/index.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/dataSourceHelpers.js","webpack://@jotforminc/portal/../../../../src/icons/editor/align-text-left.svg","webpack://@jotforminc/portal/../../../../src/icons/editor/align-text-center.svg","webpack://@jotforminc/portal/../../../../src/icons/editor/align-text-right.svg","webpack://@jotforminc/portal/./src/assets/icon_logo_colored.svg","webpack://@jotforminc/portal/./src/assets/icon_general_colored.svg","webpack://@jotforminc/portal/./src/assets/icon_style_colored.svg","webpack://@jotforminc/portal/../../libs/image-upload/src/assets/svg/no-image.svg","webpack://@jotforminc/portal/./src/assets/icon_defaultLayout.svg","webpack://@jotforminc/portal/./src/assets/icon_allShrinkedLayout.svg","webpack://@jotforminc/portal/./src/assets/icon_noIconLayout.svg","webpack://@jotforminc/portal/./src/assets/icon_shrinkedNoIconLayout.svg","webpack://@jotforminc/portal/./src/assets/icon_allFormsLayout.svg","webpack://@jotforminc/portal/./src/assets/icon_plainLayout.svg","webpack://@jotforminc/portal/./src/assets/icon_shrinkedNoHeaderLayout.svg","webpack://@jotforminc/portal/./src/assets/icon_leftAlignedLayout.svg","webpack://@jotforminc/portal/./src/assets/icon_rightAlignedLayout.svg","webpack://@jotforminc/portal/./src/assets/icon_centerAlignedLayout.svg","webpack://@jotforminc/portal/./src/assets/icon_largeElementLayout.svg","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/assets/svg/arrowIcon.svg","webpack://@jotforminc/portal/../../../../src/icons/finance/coins-stacked-filled.svg","webpack://@jotforminc/portal/../../../../src/icons/finance/credit-card-plus.svg","webpack://@jotforminc/portal/../../../../src/icons/general/input-text-long.svg","webpack://@jotforminc/portal/./src/modules/Builder/constants/textAlignment.js","webpack://@jotforminc/portal/./src/modules/Builder/constants/elementSize.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/donationItemConstants.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/ButtonActions/components/ButtonShareSelection.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/ButtonActions/RoleComponents/roleComponentProps.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/ResourceSelection/ScResourceSelection.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/FormSelection/ScActionButtons.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/ResourceSelection/index.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/ResourceSelection/helper.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/rightPanelConstants.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/WidgetItemDescriptionRenderer.js","webpack://@jotforminc/portal/../../libs/common/src/components/DimensionPicker/ScDimensionPicker.js","webpack://@jotforminc/portal/../../libs/common/src/components/DimensionPicker/index.js","webpack://@jotforminc/portal/./src/modules/Builder/components/DimensionPicker.js","webpack://@jotforminc/portal/./src/modules/Builder/constants/colorPalette.js","webpack://@jotforminc/portal/./src/modules/Builder/styles/ScCheckboxItem.js","webpack://@jotforminc/portal/./src/modules/Builder/components/ColorPalette/ColorPaletteItem.js","webpack://@jotforminc/portal/./src/modules/Builder/components/ColorPalette/index.js","webpack://@jotforminc/portal/./src/modules/Builder/components/ItemStyler/scItemStyler.js","webpack://@jotforminc/portal/./src/modules/Builder/components/ItemStyler/CustomPalette.js","webpack://@jotforminc/portal/./src/modules/Builder/components/ItemStyler/index.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/ListItemStyler/ScChangeStyle.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/ListItemStyler/index.js","webpack://@jotforminc/portal/./src/modules/Builder/components/ToggleButtonGroup/ScToggleButtonGroupContainer.js","webpack://@jotforminc/portal/./src/modules/Builder/components/ToggleButtonGroup/DefaultToggleButtonGrpRenderer.js","webpack://@jotforminc/portal/./src/modules/Builder/components/ToggleButtonGroup/index.js","webpack://@jotforminc/portal/../../libs/image-upload/src/components/sc/ScImagePreview.js","webpack://@jotforminc/portal/../../libs/image-upload/src/components/sc/ScNoImage.js","webpack://@jotforminc/portal/../../libs/image-upload/src/components/NoImage.js","webpack://@jotforminc/portal/../../libs/image-upload/src/components/Image.js","webpack://@jotforminc/portal/../../libs/image-upload/src/components/ImagePreviewForViewer.js","webpack://@jotforminc/portal/../../libs/image-upload/src/components/sc/ScGlobal.js","webpack://@jotforminc/portal/../../libs/image-upload/src/components/sc/ScContainer.js","webpack://@jotforminc/portal/../../libs/image-upload/src/components/sc/ScMultipleImagePreview.js","webpack://@jotforminc/portal/../../libs/image-upload/src/components/ImageUploadWithViewer.js","webpack://@jotforminc/portal/./src/utils/hooks/useRpImageUploadManager.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/RPImageUpload.js","webpack://@jotforminc/portal/../../libs/fontpicker/src/helper.js","webpack://@jotforminc/portal/../../libs/fontpicker/src/FontPickerHeader.js","webpack://@jotforminc/portal/../../libs/fontpicker/src/FontPickerSearch.js","webpack://@jotforminc/portal/../../libs/fontpicker/src/FontPickerListItem.js","webpack://@jotforminc/portal/../../libs/fontpicker/src/FontPickerList.js","webpack://@jotforminc/portal/../../libs/fontpicker/src/FontPicker.js","webpack://@jotforminc/portal/./src/modules/Builder/components/FontPicker/scFontPicker.js","webpack://@jotforminc/portal/./src/modules/Builder/components/FontPicker/index.js","webpack://@jotforminc/portal/./src/modules/Builder/components/ColorPalette/AppColorSchemes.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/Editors/RightPanelDocumentFileUpload.js","webpack://@jotforminc/portal/./src/modules/Builder/components/AppThemesPanel/ScAppThemesPanel.js","webpack://@jotforminc/portal/./src/modules/Builder/components/AppThemesPanel/index.js","webpack://@jotforminc/portal/../../libs/common/src/components/ResettableInput/index.js","webpack://@jotforminc/portal/./src/modules/Builder/components/ResettableInput/ScResettableInput.js","webpack://@jotforminc/portal/./src/modules/Builder/components/ResettableInput/index.js","webpack://@jotforminc/portal/./src/modules/Builder/components/FormLabel/index.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/ImageUploadWithLoadingState.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/BadgeToggle/ResetBadge.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/LoginRequireToggle/index.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/BadgeToggle/index.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/ButtonActions/Roles/RolesItem.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/ButtonActions/Roles/ScRoles.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/ButtonActions/Roles/index.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/ButtonActions/Roles/buttonActionProps.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/ButtonActions/index.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/ButtonActions/RoleComponents/index.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/ItemIconToggle.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/AppFooter.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/Editors/WidgetFileUpload.js","webpack://@jotforminc/portal/../../libs/common/src/components/Schema/SchemaCard.js","webpack://@jotforminc/portal/../../libs/image-upload/src/components/TetheredImageUpload.js","webpack://@jotforminc/portal/../../libs/common/src/components/Schema/components/SchemaImageUpload.js","webpack://@jotforminc/portal/../../libs/common/src/components/Schema/components/SchemaTextArea.js","webpack://@jotforminc/portal/../../libs/common/src/components/Schema/components/SchemaTextInput.js","webpack://@jotforminc/portal/../../libs/common/src/components/Schema/components/SchemaDropdown.js","webpack://@jotforminc/portal/../../libs/common/src/components/Schema/getFieldComponent.js","webpack://@jotforminc/portal/../../libs/common/src/components/Schema/SchemaEditable.js","webpack://@jotforminc/portal/../../libs/common/src/components/Schema/SchemaItem.js","webpack://@jotforminc/portal/../../libs/common/src/components/Schema/SchemaItemList.js","webpack://@jotforminc/portal/../../libs/common/src/components/Schema/utils.js","webpack://@jotforminc/portal/../../libs/common/src/components/Schema/index.js","webpack://@jotforminc/portal/./src/modules/Builder/components/Schema/index.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/ShowFormToggle/index.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/ShrinkToggle/index.js","webpack://@jotforminc/portal/../../libs/widgets-js-sdk/src/external/server.js","webpack://@jotforminc/portal/./src/modules/Builder/components/ExternalField/index.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/AppLayoutsPanel/appLayoutConstants.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/AppLayoutsPanel/ScAppLayoutPanel.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/AppLayoutsPanel/AppLayoutItem.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/AppLayoutsPanel/index.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/MenuSettingsPanel/ScRpMenuDeviceSection.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/NavigationBarProperties/index.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/AllPagesSettingsPanel/ScPageSettingsItem.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/AllPagesSettingsPanel/ScPopoverIconSelector.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/AllPagesSettingsPanel/PageIconButton.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/AllPagesSettingsPanel/PageSettingsPopover.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/AllPagesSettingsPanel/PageSettingsItem.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/AllPagesSettingsPanel/DraggablePageSettingsItem.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/AllPagesSettingsPanel/PageSettingsContainer.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/AllPagesSettingsPanel/index.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/BottomNavigationProperties/ScBottomNavigationPreview.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/BottomNavigationProperties/index.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/MenuSettingsPanel/index.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/PageSettingsPanel.js","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/store/actionCreators.ts","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/StyledSortableItem.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/ProductItemList.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/fields/tabs.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/fields/tab.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/editors/PriceInput.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/editors/ImagesInput.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/editors/ProductBasicTabEditor.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/editors/ProductOptionsTabEditor.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/editors/SellProductsEditor.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/editors/ProductQuantitySelectorTabEditor.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/editors/ProductOptionCreatorTabEditor.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/panels/SellProductsPanel.tsx","webpack://@jotforminc/portal/../../libs/payment-gateways/src/utils/functions/getParentGatewayType.ts","webpack://@jotforminc/portal/../../libs/payment-gateways/src/utils/functions/getGatewayType.ts","webpack://@jotforminc/portal/../../libs/payment-gateways/src/utils/functions/isPlainObject.ts","webpack://@jotforminc/portal/../../libs/payment-gateways/src/utils/functions/calculateOperation.ts","webpack://@jotforminc/portal/../../libs/payment-gateways/src/utils/functions/checkResourcePropertyCondition.ts","webpack://@jotforminc/portal/../../libs/payment-gateways/src/utils/functions/isResourcePropertyRequired.ts","webpack://@jotforminc/portal/../../libs/payment-gateways/src/utils/functions/isResourcePropertyVisible.ts","webpack://@jotforminc/portal/../../libs/payment-gateways/src/utils/functions/getVisibleAndRequiredResourceProps.ts","webpack://@jotforminc/portal/../../libs/payment-gateways/src/utils/functions/getInvalidOrCorrectedPropNames.ts","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/panels/PaymentPropertiesPanel/Context/usePaymentProperties.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/panels/PaymentPropertiesPanel/Constants/index.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/panels/PaymentPropertiesPanel/Components/PaymentConnectionSection/AddConnectionButton.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/panels/PaymentPropertiesPanel/Components/PaymentConnectionSection/SectionHeader.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/panels/PaymentPropertiesPanel/Components/PaymentConnectionSection/GatewayNotConnectedWarning.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/panels/PaymentPropertiesPanel/Components/PaymentConnectionSection/ConnectionInfo.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/panels/PaymentPropertiesPanel/Components/PaymentConnectionSection/ConnectionStatusWarning.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/panels/PaymentPropertiesPanel/Components/PaymentConnectionSection/ConnectionOwnerIndicator.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/panels/PaymentPropertiesPanel/Components/PaymentConnectionSection/ConnectionModalButton.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/panels/PaymentPropertiesPanel/Components/DetachConnectionDialog.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/panels/PaymentPropertiesPanel/Components/PaymentConnectionSection/RemoveConnectionButton.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/panels/PaymentPropertiesPanel/Components/PaymentConnectionSection/ConnectionGatewayInfo.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/panels/PaymentPropertiesPanel/Components/AdditionalSetupRequiredDialog.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/panels/PaymentPropertiesPanel/Components/PaymentConnectionSection/GatewayDisabledWarning.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/panels/PaymentPropertiesPanel/Components/PaymentConnectionSection/index.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/panels/PaymentPropertiesPanel/Components/PaymentTypeDialog.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/panels/PaymentPropertiesPanel/Components/PaymentTypeDropdown.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/panels/PaymentPropertiesPanel/Components/CurrencyDropdown.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/panels/PaymentPropertiesPanel/Components/ComponentWrapper.tsx","webpack://@jotforminc/portal/../../libs/magnet/src/components/Radio/radio.cva.ts","webpack://@jotforminc/portal/../../libs/magnet/src/components/Radio/radio.types.ts","webpack://@jotforminc/portal/../../libs/magnet/src/components/Radio/Radio.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/panels/PaymentPropertiesPanel/Fields/Toggle.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/panels/PaymentPropertiesPanel/Fields/DynamicDropdown.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/panels/PaymentPropertiesPanel/Fields/Dropdown.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/panels/PaymentPropertiesPanel/Fields/CopyUrl.tsx","webpack://@jotforminc/portal/../../libs/magnet/src/components/ColorPicker/color-picker.cva.ts","webpack://@jotforminc/portal/../../libs/magnet/src/components/ColorPicker/ColorPicker.tsx","webpack://@jotforminc/portal/../../libs/magnet/src/components/Input/InputColor.tsx","webpack://@jotforminc/portal/../../libs/magnet/src/components/Input/InputNumber.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/panels/PaymentPropertiesPanel/Fields/TextInput.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/panels/PaymentPropertiesPanel/Fields/TextArea.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/panels/PaymentPropertiesPanel/Fields/ImageUpload.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/panels/PaymentPropertiesPanel/Fields/Checkbox.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/panels/PaymentPropertiesPanel/Fields/CheckboxGroup.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/panels/PaymentPropertiesPanel/Components/ComponentRenderer.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/panels/PaymentPropertiesPanel/Components/GatewayResourceProperties.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/panels/PaymentPropertiesPanel/Components/RequiredSettingsIndicator.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/panels/PaymentPropertiesPanel/Components/FooterContainer.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/panels/PaymentPropertiesPanel/Components/Divider.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/panels/PaymentPropertiesPanel/index.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/GatewayPicker.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/GatewaySettings.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/ConnectionModal.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/APMPicker.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/containers/ModalFooterRenderer/BaseFooter.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/containers/ModalFooterRenderer/ApmPickerFooter.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/utils/actionUtils.ts","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/containers/ModalFooterRenderer/GatewaySettingsFooter.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/containers/ModalFooterRenderer/ConnectionModalFooter.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/containers/ModalFooterRenderer/index.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/containers/GatewaySettingsContainer.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/fields/EditPaymentIntegration.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/fields/AddPaymentIntegrationContainer.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/PaymentOverQuotaWarning.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/DonationItemAvailabilityWarning.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/NewComponents/PaymentSettings.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/panels/PaymentSettingsPanel/index.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/containers/PaymentContainer.tsx","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/ProductListProperties/ItemSettings.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/ProductListProperties/index.js","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/panels/ProductSettingsPanel/index.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/CheckoutFormVisibilitySettingsForm.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/panels/CheckoutFormVisibilitySettingsPanel/constants.ts","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/panels/CheckoutFormVisibilitySettingsPanel/AddElementPopover.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/panels/CheckoutFormVisibilitySettingsPanel/utils.ts","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/panels/CheckoutFormVisibilitySettingsPanel/FormSettingsEditorView.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/panels/CheckoutFormVisibilitySettingsPanel/formFieldsEditorElements.ts","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/panels/CheckoutFormVisibilitySettingsPanel/FormFieldsConfirmationModal.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/panels/CheckoutFormVisibilitySettingsPanel/FormFieldsEditorView.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/panels/CheckoutFormVisibilitySettingsPanel/index.tsx","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/ContactInformationSettingsPanel/index.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/PaymentProperties/index.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/FormSelection/index.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/DonationPaymentProperties/index.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/DonationGatewayWarningItem/index.js","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/panels/DonationBoxPropertiesPanel/index.tsx","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/DonationBoxPropertiesPanelField/index.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/ListItemSideItemSelection/index.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/SvgOptionRenderer/styled.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/SvgOptionRenderer/index.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/CardLayout/constants.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/CardLayout/index.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/DataSourcePicker/DsRoleComponents/index.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/rightPanelPropertyItems.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/PanelItemGenerator.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/PanelLineGenerator.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/RightPanelGenerator.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/RightPanelTitleRenderer.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/MultipleRightPanel/ElementStyler/index.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/MultipleRightPanel/index.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/index.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/RightPanel/utils.js","webpack://@jotforminc/portal/./src/modules/Builder/components/HomePage/constants.js","webpack://@jotforminc/portal/./src/modules/Builder/components/ImagePreview/ScImagePreview.js","webpack://@jotforminc/portal/./src/modules/Builder/components/ImagePreview/index.js","webpack://@jotforminc/portal/./src/modules/Builder/components/Modals/FormPickerModal/ScFormPicker.js","webpack://@jotforminc/portal/./src/modules/Builder/components/Modals/PortalFeedbackModal/ContentRenderer.js","webpack://@jotforminc/portal/./src/modules/Builder/components/Modals/PortalFeedbackModal/DialogRenderer.js","webpack://@jotforminc/portal/./src/modules/Builder/components/Modals/PortalFeedbackModal/ScPortalFeedbackModal.js","webpack://@jotforminc/portal/./src/modules/Builder/components/Modals/WhatsNewModal/WhatsNewModalDialogue.js","webpack://@jotforminc/portal/./src/modules/Builder/components/Modals/WhatsNewModal/index.js","webpack://@jotforminc/portal/./src/modules/Builder/components/PortalFeedbackWithWarning.js","webpack://@jotforminc/portal/./src/modules/Builder/components/Publish/ScPublish.js","webpack://@jotforminc/portal/./src/modules/Builder/components/RadioToggle/scRadioToggle.js","webpack://@jotforminc/portal/./src/modules/Builder/components/RadioToggle/index.js","webpack://@jotforminc/portal/./src/modules/Builder/components/RightPanelContainer.js","webpack://@jotforminc/portal/./src/modules/Builder/components/Settings/AppIdentifierSettings/ScBackIconWrapper.js","webpack://@jotforminc/portal/../../libs/portal-components/src/assets/icon_signalStrength.svg","webpack://@jotforminc/portal/../../libs/portal-components/src/assets/battery_idle.svg","webpack://@jotforminc/portal/../../libs/portal-components/src/assets/battery_charging.svg","webpack://@jotforminc/portal/../../libs/portal-components/src/components/Settings/AppIdentifierSettings/ScAppIconPreview.js","webpack://@jotforminc/portal/../../libs/portal-components/src/hooks/useBattery.js","webpack://@jotforminc/portal/../../libs/portal-components/src/components/Settings/AppIdentifierSettings/AppIconPreview.js","webpack://@jotforminc/portal/../../libs/portal-components/src/components/Settings/AppIdentifierSettings/AppIdentifierSettingsContent.js","webpack://@jotforminc/portal/./src/modules/Builder/components/Settings/AppIdentifierSettings/AppIdentifierSettings.js","webpack://@jotforminc/portal/./src/modules/Builder/components/Settings/AppIdentifierSettings/index.js","webpack://@jotforminc/portal/./src/modules/Builder/components/Settings/constants.js","webpack://@jotforminc/portal/./src/modules/Builder/components/Settings/scSettings.js","webpack://@jotforminc/portal/./src/modules/Builder/components/Settings/scStageHeader.js","webpack://@jotforminc/portal/./src/modules/Builder/components/Settings/utils.js","webpack://@jotforminc/portal/./src/modules/Builder/components/TextArea/scTextArea.js","webpack://@jotforminc/portal/./src/modules/Builder/components/TextArea/index.js","webpack://@jotforminc/portal/./src/modules/Builder/components/TextInput/scTextInput.js","webpack://@jotforminc/portal/./src/modules/Builder/components/TextInput/index.js","webpack://@jotforminc/portal/./src/modules/Builder/constants/designModes.js","webpack://@jotforminc/portal/./src/modules/Builder/constants/rightPanel.js","webpack://@jotforminc/portal/./src/modules/Builder/styles/ScPageSettingsPopover.js","webpack://@jotforminc/portal/./src/modules/Builder/styles/scRightPanel.js","webpack://@jotforminc/portal/./src/modules/Builder/styles/scSelect.js","webpack://@jotforminc/portal/./src/modules/PublicApp/AnimationTypes.js","webpack://@jotforminc/portal/../../../../src/icons/forms-files/paper-filled.svg","webpack://@jotforminc/portal/./src/modules/PublicApp/BottomNavigation/ScBottomNavigation.js","webpack://@jotforminc/portal/./src/modules/PublicApp/BottomNavigation/index.js","webpack://@jotforminc/portal/./src/modules/PublicApp/ErrorScreen.js","webpack://@jotforminc/portal/./src/modules/PublicApp/OrderNow/ScCircleLoader.js","webpack://@jotforminc/portal/./src/modules/PublicApp/OrderNow/ScCheckoutFormRenderer.js","webpack://@jotforminc/portal/./src/modules/PublicApp/OrderNow/LoginCue.js","webpack://@jotforminc/portal/./src/modules/PublicApp/OrderNow/ScCheckoutFormHeader.js","webpack://@jotforminc/portal/./src/modules/PublicApp/OrderNow/CheckoutFormHeader.js","webpack://@jotforminc/portal/./src/modules/PublicApp/OrderNow/CheckoutFormRenderer.js","webpack://@jotforminc/portal/./src/modules/PublicApp/ProductCart/Cart/CartItemContentRenderer.js","webpack://@jotforminc/portal/./src/modules/PublicApp/ProductCart/Cart/constants.js","webpack://@jotforminc/portal/./src/modules/PublicApp/ProductDetailContentRenderer/ProductDetailActionButtons.js","webpack://@jotforminc/portal/./src/modules/PublicApp/ProductDetailContentRenderer/ProductFavorite.js","webpack://@jotforminc/portal/./src/modules/PublicApp/ProductDetailContentRenderer/ScDetailsModal.js","webpack://@jotforminc/portal/../../libs/common/src/assets/svg/sliderArrow.svg","webpack://@jotforminc/portal/../../libs/common/src/components/Slider/SliderCarousel.js","webpack://@jotforminc/portal/../../libs/common/src/components/Slider/Slider.js","webpack://@jotforminc/portal/./src/modules/PublicApp/ProductDetailContentRenderer/ProductDetailOptionsGroup.js","webpack://@jotforminc/portal/./src/modules/PublicApp/ProductDetailContentRenderer/CloseButtonRenderer.js","webpack://@jotforminc/portal/./src/modules/PublicApp/ProductItemDetails/index.js","webpack://@jotforminc/portal/./src/modules/PublicApp/ProductRenderer/Renderers/IframeRenderer.js","webpack://@jotforminc/portal/./src/modules/PublicApp/ProductRenderer/Renderers/TablesRenderer.js","webpack://@jotforminc/portal/./src/modules/PublicApp/ProductCartItem/ImageRenderer.js","webpack://@jotforminc/portal/./src/modules/PublicApp/SimpleProductItem/index.js","webpack://@jotforminc/portal/./src/modules/PublicApp/TopBar/ScNavigationPanelButton.js","webpack://@jotforminc/portal/./src/modules/PublicApp/TopBar/NavigationPanelButton.js","webpack://@jotforminc/portal/./src/modules/PublicApp/utils.js","webpack://@jotforminc/portal/./src/modules/api/requestLayer.js","webpack://@jotforminc/portal/./src/modules/api/index.js","webpack://@jotforminc/portal/./src/properties/index.js","webpack://@jotforminc/portal/../../libs/portal-schemas/src/schemas/v1/App.js","webpack://@jotforminc/portal/../../libs/portal-schemas/src/schemas/v1/FormItem.js","webpack://@jotforminc/portal/./src/properties/schemas/index.js","webpack://@jotforminc/portal/./src/properties/utils.js","webpack://@jotforminc/portal/./src/properties/DefaultsCacheSingleton.js","webpack://@jotforminc/portal/../../libs/portal-schemas/src/styling/index.js","webpack://@jotforminc/portal/./src/properties/styling/index.js","webpack://@jotforminc/portal/./src/properties/versions.js","webpack://@jotforminc/portal/./src/store/actionCreators/index.js","webpack://@jotforminc/portal/./src/store/actionTypes.js","webpack://@jotforminc/portal/./src/store/reducers/dataSource/constants.js","webpack://@jotforminc/portal/./src/store/selectors/checkoutFormSelectors.js","webpack://@jotforminc/portal/./src/store/selectors/dataSourceSelectors.js","webpack://@jotforminc/portal/./src/store/selectors/formsSelectors.js","webpack://@jotforminc/portal/./src/store/selectors/widgetsSelectors.js","webpack://@jotforminc/portal/./src/store/selectors/shareSelectors.js","webpack://@jotforminc/portal/./src/store/selectors/progressSelectors.js","webpack://@jotforminc/portal/./src/store/selectors/signsSelectors.js","webpack://@jotforminc/portal/./src/store/selectors/coreSelectors.js","webpack://@jotforminc/portal/./src/store/selectors/undoRedoSelectors.js","webpack://@jotforminc/portal/./src/store/selectors/teamSelectors.js","webpack://@jotforminc/portal/./src/store/selectors/appsSelectors.js","webpack://@jotforminc/portal/./src/store/selectors/cdnConfigSelectors.js","webpack://@jotforminc/portal/./src/store/selectors/pushNotificationSelectors.js","webpack://@jotforminc/portal/./src/store/selectors/livePreviewSelectors.js","webpack://@jotforminc/portal/./src/store/selectors/assistantSelectors.js","webpack://@jotforminc/portal/./src/store/selectors/userManagementSelectors.js","webpack://@jotforminc/portal/./src/store/selectors/index.js","webpack://@jotforminc/portal/./src/store/selectors/portalSelectors.js","webpack://@jotforminc/portal/./src/store/selectors/productSelectors.js","webpack://@jotforminc/portal/./src/store/selectors/uiSelectors.js","webpack://@jotforminc/portal/./src/store/selectors/userSelectors.js","webpack://@jotforminc/portal/./src/store/utils.js","webpack://@jotforminc/portal/./src/styles/colors.js","webpack://@jotforminc/portal/./src/styles/animations.js","webpack://@jotforminc/portal/./src/styles/global.js","webpack://@jotforminc/portal/./src/utils.js","webpack://@jotforminc/portal/./src/utils/AbTestActionLoggerSingleton.js","webpack://@jotforminc/portal/./src/utils/ActionsHelper/ActionableItem.js","webpack://@jotforminc/portal/./src/utils/ActionsHelper/items/Button.js","webpack://@jotforminc/portal/./src/utils/ActionsHelper/items/actions.js","webpack://@jotforminc/portal/./src/utils/ActionsHelper/items/Card.js","webpack://@jotforminc/portal/./src/utils/ActionsHelper/items/Image.js","webpack://@jotforminc/portal/./src/utils/ActionsHelper/items/index.js","webpack://@jotforminc/portal/./src/utils/ActionsHelper/index.js","webpack://@jotforminc/portal/./src/utils/BrowserParser.js","webpack://@jotforminc/portal/./src/utils/abtests/abtests.js","webpack://@jotforminc/portal/./src/utils/abtests/index.js","webpack://@jotforminc/portal/./src/utils/features/index.js","webpack://@jotforminc/portal/./src/utils/features/helper.js","webpack://@jotforminc/portal/../../../../src/icons/general/asterisk.svg","webpack://@jotforminc/portal/./src/utils/hooks.js","webpack://@jotforminc/portal/./src/utils/image/index.js","webpack://@jotforminc/portal/./src/utils/initLiveChat.js","webpack://@jotforminc/portal/./src/components/DeletedFormWarning.js","webpack://@jotforminc/portal/./src/components/DonationGatewayWarning/index.js","webpack://@jotforminc/portal/./src/utils/itemAvailability.js","webpack://@jotforminc/portal/./src/utils/navigation.js","webpack://@jotforminc/portal/./src/utils/paymentUtils.js","webpack://@jotforminc/portal/./src/utils/styleUtils.js","webpack://@jotforminc/portal/../../libs/abtest-manager/src/utils/utils.js","webpack://@jotforminc/portal/../../libs/abtest-manager/src/utils/ABTestVariantCache.js","webpack://@jotforminc/portal/../../libs/abtest-manager/src/utils/layer.js","webpack://@jotforminc/portal/../../libs/abtest-manager/src/utils/ABTestManager.js","webpack://@jotforminc/portal/../../libs/abtest-manager/src/utils/ActionManager.js","webpack://@jotforminc/portal/../../libs/apploaders/src/Apps/index.js","webpack://@jotforminc/portal/../../libs/apploaders/src/Container/index.js","webpack://@jotforminc/portal/../../libs/checkbox/src/components/Checkbox.js","webpack://@jotforminc/portal/../../libs/checkbox/src/components/CheckboxItem.js","webpack://@jotforminc/portal/../../libs/common-button/src/components/Button.js","webpack://@jotforminc/portal/../../libs/common/src/components/ErrorScreen/styled/ScWrapper.js","webpack://@jotforminc/portal/../../libs/common/src/components/ErrorScreen/styled/ScIconWrapper.js","webpack://@jotforminc/portal/../../libs/common/src/components/ErrorScreen/styled/ScCard.js","webpack://@jotforminc/portal/../../libs/common/src/components/ErrorScreen/styled/ScTitle.js","webpack://@jotforminc/portal/../../libs/common/src/components/ErrorScreen/styled/ScDescription.js","webpack://@jotforminc/portal/../../libs/common/src/components/ErrorScreen/index.js","webpack://@jotforminc/portal/../../libs/common/src/components/PanelHeader/index.js","webpack://@jotforminc/portal/../../libs/constants/src/date/index.js","webpack://@jotforminc/portal/../../libs/common/src/utils/moment/index.js","webpack://@jotforminc/portal/../../libs/constants/src/initiators/index.js","webpack://@jotforminc/portal/../../libs/constants/src/propTypes/index.js","webpack://@jotforminc/portal/../../libs/constants/src/questions/index.js","webpack://@jotforminc/portal/../../libs/constants/src/states/index.js","webpack://@jotforminc/portal/../../libs/constants/src/texts/index.js","webpack://@jotforminc/portal/../../libs/constants/src/time/index.js","webpack://@jotforminc/portal/../../libs/dialog/src/assets/svg/iconHipaaWarning.svg","webpack://@jotforminc/portal/../../libs/dialog/src/components/Dialog.js","webpack://@jotforminc/portal/../../libs/dropdown/src/GroupOptionRenderer.js","webpack://@jotforminc/portal/../../libs/dropdown/src/index.js","webpack://@jotforminc/portal/../../libs/empty-list/src/assets/svg/noFormsIcon.svg","webpack://@jotforminc/portal/../../libs/empty-list/src/assets/svg/noAppsIcon.svg","webpack://@jotforminc/portal/../../libs/empty-list/src/assets/svg/noTablesIcon.svg","webpack://@jotforminc/portal/../../libs/empty-list/src/assets/svg/noReportsIcon.svg","webpack://@jotforminc/portal/../../libs/empty-list/src/assets/svg/noApprovalsIcon.svg","webpack://@jotforminc/portal/../../libs/empty-list/src/assets/svg/noSignDocumentsIcon.svg","webpack://@jotforminc/portal/../../libs/empty-list/src/assets/svg/noTeamFormsIcon.svg","webpack://@jotforminc/portal/../../libs/empty-list/src/assets/svg/noDocumentIcon.svg","webpack://@jotforminc/portal/../../libs/empty-list/src/components/EmptyList.js","webpack://@jotforminc/portal/../../libs/empty-list/src/components/EmptyListBase.js","webpack://@jotforminc/portal/../../libs/empty-list/src/assets/svg/noFormsFoundIcon.svg","webpack://@jotforminc/portal/../../libs/empty-list/src/assets/svg/noAppsFoundIcon.svg","webpack://@jotforminc/portal/../../libs/empty-list/src/assets/svg/noTablesFoundIcon.svg","webpack://@jotforminc/portal/../../libs/empty-list/src/assets/svg/noReportsFoundIcon.svg","webpack://@jotforminc/portal/../../libs/empty-list/src/assets/svg/noApprovalsFoundIcon.svg","webpack://@jotforminc/portal/../../libs/empty-list/src/assets/svg/noSignDocumentsFoundIcon.svg","webpack://@jotforminc/portal/../../libs/empty-list/src/components/NotFoundList.js","webpack://@jotforminc/portal/../../libs/enterprise-utils/src/helpers.js","webpack://@jotforminc/portal/../../libs/feature-toggle/src/components/Feature.js","webpack://@jotforminc/portal/../../libs/feature-toggle/src/components/FeatureToggle.js","webpack://@jotforminc/portal/../../libs/form-fields-menu/src/components/SelectionGroup.js","webpack://@jotforminc/portal/../../libs/form-fields-menu/src/components/ProtectedTag.js","webpack://@jotforminc/portal/../../libs/form-fields-menu/src/components/EncryptedTag.js","webpack://@jotforminc/portal/../../libs/form-fields-menu/src/components/Option.js","webpack://@jotforminc/portal/../../libs/form-fields-menu/src/components/MultipleForms.js","webpack://@jotforminc/portal/../../libs/form-fields-menu/src/components/SingleForm.js","webpack://@jotforminc/portal/../../libs/form-fields-menu/src/index.js","webpack://@jotforminc/portal/../../libs/alert-label/src/index.js","webpack://@jotforminc/portal/../../libs/form-wizard/src/utils/helper.js","webpack://@jotforminc/portal/../../libs/form-wizard/src/components/errorContext.js","webpack://@jotforminc/portal/../../libs/form-wizard/src/components/FieldLine.js","webpack://@jotforminc/portal/../../libs/form-wizard/src/components/defaultComponents.js","webpack://@jotforminc/portal/../../libs/form-wizard/src/components/index.js","webpack://@jotforminc/portal/../../libs/header-components/src/utils/api.js","webpack://@jotforminc/portal/../../libs/header-components/src/constants/index.js","webpack://@jotforminc/portal/../../libs/header-components/src/utils/utils.js","webpack://@jotforminc/portal/../../libs/hooks/src/useResize.js","webpack://@jotforminc/portal/../../libs/hooks/src/index.js","webpack://@jotforminc/portal/../../libs/emoji-mart/src/components/Emoji.js","webpack://@jotforminc/portal/../../libs/icon-selector/src/components/EmojiRenderer/index.js","webpack://@jotforminc/portal/../../libs/icon-selector/src/components/SVGIcon/index.js","webpack://@jotforminc/portal/../../libs/icon-selector/src/constants/index.js","webpack://@jotforminc/portal/../../libs/icon-selector/src/utils/index.js","webpack://@jotforminc/portal/../../libs/image-upload/src/assets/svg/unsplash_icon.svg","webpack://@jotforminc/portal/../../libs/image-upload/src/components/IconSelector.js","webpack://@jotforminc/portal/../../libs/image-upload/src/components/UploadedImagesPanel.js","webpack://@jotforminc/portal/../../libs/image-upload/src/components/ImagePreview.js","webpack://@jotforminc/portal/../../libs/image-upload/src/components/LoadingScreen.js","webpack://@jotforminc/portal/../../libs/upload-fields/src/utils/index.js","webpack://@jotforminc/portal/../../libs/upload-fields/src/index.js","webpack://@jotforminc/portal/../../libs/image-upload/src/utils/index.js","webpack://@jotforminc/portal/../../libs/image-upload/src/actions/index.js","webpack://@jotforminc/portal/../../libs/image-upload/src/constants/index.js","webpack://@jotforminc/portal/../../libs/image-upload/src/components/ImageUpload.js","webpack://@jotforminc/portal/../../libs/limit-dialog/src/constants/texts.js","webpack://@jotforminc/portal/../../libs/limit-dialog/src/api/index.js","webpack://@jotforminc/portal/../../libs/limit-dialog/src/utils/index.js","webpack://@jotforminc/portal/../../libs/loading/src/components/Loading.js","webpack://@jotforminc/portal/../../libs/login-flow/src/assets/close.svg","webpack://@jotforminc/portal/../../../../src/logos/integration/salesforce-logomark-color.svg","webpack://@jotforminc/portal/../../libs/login-flow/src/temporary-duplicate/assets/svg/icon_fb.svg","webpack://@jotforminc/portal/../../libs/login-flow/src/temporary-duplicate/assets/svg/icon_gl.svg","webpack://@jotforminc/portal/../../../../src/icons/general/check-sm.svg","webpack://@jotforminc/portal/../../libs/login-flow/src/assets/icon_ms.svg","webpack://@jotforminc/portal/../../libs/login-flow/src/temporary-duplicate/assets/svg/icon_em.svg","webpack://@jotforminc/portal/../../libs/login-flow/src/assets/icon_gl_36.svg","webpack://@jotforminc/portal/../../libs/login-flow/src/assets/icon_fb_36.svg","webpack://@jotforminc/portal/../../libs/login-flow/src/temporary-duplicate/assets/svg/icon_apple_white.svg","webpack://@jotforminc/portal/../../libs/login-flow/src/assets/icon_ms_36.svg","webpack://@jotforminc/portal/../../libs/login-flow/src/assets/icon_ap_36.svg","webpack://@jotforminc/portal/../../libs/login-flow/src/temporary-duplicate/assets/svg/icon_back3.svg","webpack://@jotforminc/portal/../../libs/login-flow/src/temporary-duplicate/assets/svg/icon_back.svg","webpack://@jotforminc/portal/../../libs/login-flow/src/assets/idp-icons/auth0-logo-icon.svg","webpack://@jotforminc/portal/../../libs/login-flow/src/assets/idp-icons/azure-logo-icon.svg","webpack://@jotforminc/portal/../../libs/login-flow/src/assets/idp-icons/google-logo-icon.svg","webpack://@jotforminc/portal/../../libs/login-flow/src/assets/idp-icons/microsoft-logo-icon.svg","webpack://@jotforminc/portal/../../libs/login-flow/src/assets/idp-icons/okta-logo-icon.svg","webpack://@jotforminc/portal/../../libs/two-factor-settings/src/assets/svg/icon_gl.svg","webpack://@jotforminc/portal/../../libs/two-factor-settings/src/assets/svg/icon_fb.svg","webpack://@jotforminc/portal/../../libs/two-factor-settings/src/assets/svg/icon_apple_white.svg","webpack://@jotforminc/portal/../../../../src/icons/security/key-filled.svg","webpack://@jotforminc/portal/../../libs/login-flow/src/assets/icon_sf_36.svg","webpack://@jotforminc/portal/../../libs/login-flow/src/temporary-duplicate/assets/svg/closeWithCircle.svg","webpack://@jotforminc/portal/../../../../src/icons/general/check-circle.svg","webpack://@jotforminc/portal/../../../../src/icons/general/flag-filled.svg","webpack://@jotforminc/portal/../../libs/utils/src/loginSignup.js","webpack://@jotforminc/portal/../../libs/login-flow/src/utils/layer.js","webpack://@jotforminc/portal/../../libs/login-flow/src/utils/helper.js","webpack://@jotforminc/portal/../../libs/login-flow/src/components/OFACModal/OFACModal.js","webpack://@jotforminc/portal/../../libs/login-flow/src/components/OFACModal/index.js","webpack://@jotforminc/portal/../../libs/login-flow/src/utils/loginSignup.js","webpack://@jotforminc/portal/../../libs/login-flow/src/components/SalesforceButton.js","webpack://@jotforminc/portal/../../libs/login-flow/src/components/FacebookButton.js","webpack://@jotforminc/portal/../../libs/login-flow/src/components/GoogleButton.js","webpack://@jotforminc/portal/../../libs/login-flow/src/components/Password/scPassword.js","webpack://@jotforminc/portal/../../libs/login-flow/src/components/Password/RequirementsList.js","webpack://@jotforminc/portal/../../libs/login-flow/src/components/Password/constants.js","webpack://@jotforminc/portal/../../libs/login-flow/src/components/ErrorAlert.js","webpack://@jotforminc/portal/../../libs/login-flow/src/components/Password/index.js","webpack://@jotforminc/portal/../../libs/login-flow/src/components/TermsAndConditionsUrls.js","webpack://@jotforminc/portal/../../libs/login-flow/src/components/MicrosoftButton.js","webpack://@jotforminc/portal/../../libs/login-flow/src/components/AppleButton.js","webpack://@jotforminc/portal/../../libs/login-flow/src/components/SocialButtons.js","webpack://@jotforminc/portal/../../libs/login-flow/src/api/manager.js","webpack://@jotforminc/portal/../../libs/login-flow/src/api/index.js","webpack://@jotforminc/portal/../../libs/login-flow/src/components/SignupOptions.js","webpack://@jotforminc/portal/../../libs/login-flow/src/constants/index.js","webpack://@jotforminc/portal/../../libs/login-flow/src/components/SignupWithEmail.js","webpack://@jotforminc/portal/../../libs/login-flow/src/assets/idp-icons/onelogin-logo-icon.svg","webpack://@jotforminc/portal/../../libs/login-flow/src/assets/idp-icons/private-logo-icon.svg","webpack://@jotforminc/portal/../../libs/login-flow/src/assets/idp-icons/icons.js","webpack://@jotforminc/portal/../../libs/login-flow/src/components/SSOLoginOptions.js","webpack://@jotforminc/portal/../../libs/login-flow/src/components/LoginOptions.js","webpack://@jotforminc/portal/../../libs/login-flow/src/components/SSOOptions.js","webpack://@jotforminc/portal/../../libs/login-flow/src/components/ForgotPassword.js","webpack://@jotforminc/portal/../../libs/pie-timer/src/sc/scPieTimer.js","webpack://@jotforminc/portal/../../libs/pie-timer/src/index.js","webpack://@jotforminc/portal/../../libs/verification-input/src/index.js","webpack://@jotforminc/portal/../../libs/two-factor-settings/src/helpers/constants.js","webpack://@jotforminc/portal/../../libs/two-factor-settings/src/components/styled.js","webpack://@jotforminc/portal/../../libs/two-factor-settings/src/sc/scTwoFactorSettings.js","webpack://@jotforminc/portal/../../libs/two-factor-settings/src/components/InfoBox.js","webpack://@jotforminc/portal/../../libs/login-flow/src/components/Checkbox.js","webpack://@jotforminc/portal/../../libs/login-flow/src/components/TwoFactorLogin.js","webpack://@jotforminc/portal/../../libs/login-flow/src/components/EmailAuthLogin.js","webpack://@jotforminc/portal/../../libs/login-flow/src/components/TwoFactorMethods.js","webpack://@jotforminc/portal/../../libs/login-flow/src/components/SocialInit.js","webpack://@jotforminc/portal/../../libs/login-flow/src/components/LoginError.js","webpack://@jotforminc/portal/../../libs/login-flow/src/components/DeleteAccountModal/DeleteAccountModalStep1.js","webpack://@jotforminc/portal/../../libs/login-flow/src/components/DeleteAccountModal/SocialsContainer.js","webpack://@jotforminc/portal/../../libs/login-flow/src/components/DeleteAccountModal/ModalHeader.js","webpack://@jotforminc/portal/../../libs/login-flow/src/components/DeleteAccountModal/ErrorMessage.js","webpack://@jotforminc/portal/../../libs/login-flow/src/components/DeleteAccountModal/DeleteAccountModalStep2.js","webpack://@jotforminc/portal/../../libs/login-flow/src/components/DeleteAccountModal/DeleteAccountModalStep3.js","webpack://@jotforminc/portal/../../libs/login-flow/src/components/DeleteAccountModal/DeleteAccountModal.js","webpack://@jotforminc/portal/../../libs/login-flow/src/components/DeleteAccountModal/index.js","webpack://@jotforminc/portal/../../libs/login-flow/src/components/ResetSuccess.js","webpack://@jotforminc/portal/../../libs/login-flow/src/components/SocialTermsStep.js","webpack://@jotforminc/portal/../../libs/login-flow/src/components/SocialTermsModal.js","webpack://@jotforminc/portal/../../libs/login-flow/src/utils/renderStandaloneSocialTermsModal.js","webpack://@jotforminc/portal/../../libs/login-flow/src/components/EmailAuthLoginModal.js","webpack://@jotforminc/portal/../../libs/login-flow/src/utils/renderStandaloneEmailAuthModal.js","webpack://@jotforminc/portal/../../libs/login-flow/src/components/VerifyAccountModal/Verification.js","webpack://@jotforminc/portal/../../libs/login-flow/src/components/VerifyAccountModal/index.js","webpack://@jotforminc/portal/../../libs/login-flow/src/components/UnusualSignup/index.js","webpack://@jotforminc/portal/../../libs/login-flow/src/components/SignupWithSocialOpts.js","webpack://@jotforminc/portal/../../libs/login-flow/src/components/RecoverAccountPage.js","webpack://@jotforminc/portal/../../libs/login-flow/src/components/RecoverAccountNotification.js","webpack://@jotforminc/portal/../../libs/login-flow/src/components/AccountRecoveryViewTicket.js","webpack://@jotforminc/portal/../../libs/login-flow/src/components/LoginFlow.js","webpack://@jotforminc/portal/../../libs/money-utils/src/utils/index.js","webpack://@jotforminc/portal/../../libs/option-group/src/components/OptionGroup.js","webpack://@jotforminc/portal/../../libs/option-group/src/components/StyledComponents.js","webpack://@jotforminc/portal/../../libs/picker-modal/src/styles/ScRB.js","webpack://@jotforminc/portal/../../libs/picker-modal/src/components/PickerModal.js","webpack://@jotforminc/portal/../../libs/portal-components/src/components/Settings/AppIdentifierSettings/ScDevice.js","webpack://@jotforminc/portal/../../libs/portal-components/src/components/SettingsRightPanel.js","webpack://@jotforminc/portal/../../libs/portal-components/src/components/Spinner.js","webpack://@jotforminc/portal/../../libs/portal-components/src/components/Tooltip/scTooltip.js","webpack://@jotforminc/portal/../../libs/portal-components/src/components/Tooltip/Tooltip.js","webpack://@jotforminc/portal/../../libs/portal-components/src/components/scPreview.js","webpack://@jotforminc/portal/../../libs/portal-components/src/components/scSettings.js","webpack://@jotforminc/portal/../../libs/portal-components/src/utils/index.js","webpack://@jotforminc/portal/../../libs/resource-picker/src/components/FormPicker/CheckBox.js","webpack://@jotforminc/portal/../../libs/resource-picker/src/components/FormPicker/FormItem/styled.js","webpack://@jotforminc/portal/../../libs/resource-picker/src/components/FormPicker/helpers/defaultTheme.js","webpack://@jotforminc/portal/../../libs/resource-picker/src/components/PortalPicker/defaults/scPortalItem.js","webpack://@jotforminc/portal/../../libs/resource-picker/src/components/PortalPicker/defaults/PortalItemDefaults/TitleRenderer.js","webpack://@jotforminc/portal/../../libs/resource-picker/src/components/PortalPicker/defaults/PortalItemDefaults/DescriptionRenderer.js","webpack://@jotforminc/portal/../../libs/resource-picker/src/components/PortalPicker/defaults/PortalItemDefaults/ItemContentRenderer.js","webpack://@jotforminc/portal/../../libs/search-filter/src/components/constants.js","webpack://@jotforminc/portal/../../libs/search-filter/src/utils/index.js","webpack://@jotforminc/portal/../../libs/resource-picker/src/components/PortalPicker/defaults/PortalItemDefaults/constants.js","webpack://@jotforminc/portal/../../libs/resource-picker/src/components/PortalPicker/defaults/PortalItemDefaults/IconRenderer.js","webpack://@jotforminc/portal/../../libs/resource-picker/src/components/PortalPicker/defaults/PortalItem.js","webpack://@jotforminc/portal/../../libs/resource-picker/src/components/PortalPicker/defaults/PortalItemDefaults/commonCss.js","webpack://@jotforminc/portal/../../libs/resource-picker/src/assets/svg/resourcePickerIcons/noFormsFoundIcon.svg","webpack://@jotforminc/portal/../../libs/resource-picker/src/assets/svg/resourcePickerIcons/noAppsFoundIcon.svg","webpack://@jotforminc/portal/../../libs/resource-picker/src/assets/svg/resourcePickerIcons/noTablesFoundIcon.svg","webpack://@jotforminc/portal/../../libs/resource-picker/src/assets/svg/resourcePickerIcons/noReportsFoundIcon.svg","webpack://@jotforminc/portal/../../libs/resource-picker/src/assets/svg/resourcePickerIcons/noApprovalsFoundIcon.svg","webpack://@jotforminc/portal/../../libs/resource-picker/src/assets/svg/resourcePickerIcons/noSignDocumentsFoundIcon.svg","webpack://@jotforminc/portal/../../libs/resource-picker/src/assets/svg/resourcePickerIcons/noBoardsFoundIcon.svg","webpack://@jotforminc/portal/../../libs/resource-picker/src/assets/svg/resourcePickerIcons/noFormsIcon.svg","webpack://@jotforminc/portal/../../libs/resource-picker/src/assets/svg/resourcePickerIcons/noAppsIcon.svg","webpack://@jotforminc/portal/../../libs/resource-picker/src/assets/svg/resourcePickerIcons/noTablesIcon.svg","webpack://@jotforminc/portal/../../libs/resource-picker/src/assets/svg/resourcePickerIcons/noReportsIcon.svg","webpack://@jotforminc/portal/../../libs/resource-picker/src/assets/svg/resourcePickerIcons/noApprovalsIcon.svg","webpack://@jotforminc/portal/../../libs/resource-picker/src/assets/svg/resourcePickerIcons/noSignDocumentsIcon.svg","webpack://@jotforminc/portal/../../libs/resource-picker/src/assets/svg/resourcePickerIcons/noBoardsIcon.svg","webpack://@jotforminc/portal/../../libs/resource-picker/src/components/FormPicker/helpers/propTypes.js","webpack://@jotforminc/portal/../../libs/resource-picker/src/components/FormPicker/FormItem/index.js","webpack://@jotforminc/portal/../../libs/resource-picker/src/components/PortalPicker/defaults/scPortalOption.js","webpack://@jotforminc/portal/../../libs/resource-picker/src/components/PortalPicker/defaults/PortalOption.js","webpack://@jotforminc/portal/../../libs/resource-picker/src/components/ResourcePicker/items/Reports/index.js","webpack://@jotforminc/portal/../../libs/resource-picker/src/components/ResourcePicker/items/Approval/index.js","webpack://@jotforminc/portal/../../libs/resource-picker/src/components/ResourcePicker/items/Sign/styles.js","webpack://@jotforminc/portal/../../libs/resource-picker/src/components/ResourcePicker/items/Sign/index.js","webpack://@jotforminc/portal/../../libs/resource-picker/src/components/ResourcePicker/items/Operation/index.js","webpack://@jotforminc/portal/../../libs/resource-picker/src/components/ResourcePicker/items/Board/index.js","webpack://@jotforminc/portal/../../libs/resource-picker/src/components/ResourcePicker/items/Agent/index.js","webpack://@jotforminc/portal/../../libs/resource-picker/src/components/ResourcePicker/constants.js","webpack://@jotforminc/portal/../../libs/smart-list/src/components/SmartList/helpers/defaultTheme.js","webpack://@jotforminc/portal/../../libs/smart-list/src/components/SmartList/FormLoadingSkeleton.js","webpack://@jotforminc/portal/../../libs/smart-list/src/components/SmartList/hooks.js","webpack://@jotforminc/portal/../../libs/smart-list/src/components/SmartList/index.js","webpack://@jotforminc/portal/../../libs/resource-picker/src/components/FormPicker/FormList/index.js","webpack://@jotforminc/portal/../../libs/resource-picker/src/components/FormPicker/ConditionalModal.js","webpack://@jotforminc/portal/../../libs/resource-picker/src/components/ResourcePicker/index.js","webpack://@jotforminc/portal/../../libs/resource-picker/src/components/ResourcePicker/items/Sheet/index.js","webpack://@jotforminc/portal/../../libs/resource-picker/src/constants/index.js","webpack://@jotforminc/portal/../../libs/resource-picker/src/utils/moment.js","webpack://@jotforminc/portal/../../libs/resource-picker/src/utils/hooks.js","webpack://@jotforminc/portal/../../libs/resource-picker/src/utils/utils.js","webpack://@jotforminc/portal/../../libs/router-bridge/src/jfrouter.js","webpack://@jotforminc/portal/../../libs/safe-lazy-import/src/components/ErrorPage.js","webpack://@jotforminc/portal/../../libs/safe-lazy-import/src/utils/safeLazy.js","webpack://@jotforminc/portal/../../libs/search-input/src/index.js","webpack://@jotforminc/portal/../../../../src/icons/arrows/caret-down-bars.svg","webpack://@jotforminc/portal/../../../../src/icons/products/product-payment-form-filled.svg","webpack://@jotforminc/portal/../../libs/smart-list/src/components/SmartList/ControlBar/scControlBar.js","webpack://@jotforminc/portal/../../libs/smart-list/src/components/SmartList/ControlBar/CheckBox.js","webpack://@jotforminc/portal/../../libs/smart-list/src/components/SmartList/ControlBar/SearchInput.js","webpack://@jotforminc/portal/../../libs/smart-list/src/components/SmartList/ControlBar/Dropdown.js","webpack://@jotforminc/portal/../../libs/smart-list/src/components/SmartList/ControlBar/SortMenu.js","webpack://@jotforminc/portal/../../libs/smart-list/src/components/SmartList/ControlBar/FilterForm.js","webpack://@jotforminc/portal/../../libs/smart-list/src/components/SmartList/ControlBar/index.js","webpack://@jotforminc/portal/../../libs/smart-list/src/components/SmartList/utils.js","webpack://@jotforminc/portal/../../libs/storage-helper/src/constants.js","webpack://@jotforminc/portal/../../libs/storage-helper/src/index.js","webpack://@jotforminc/portal/../../libs/styled-modal/src/components/StyledModal/styled.js","webpack://@jotforminc/portal/../../libs/styled-modal/src/components/StyledModal/index.js","webpack://@jotforminc/portal/../../../../src/icons/arrows/angle-down.svg","webpack://@jotforminc/portal/../../../../src/icons/arrows/angle-left.svg","webpack://@jotforminc/portal/../../../../src/icons/arrows/angle-up.svg","webpack://@jotforminc/portal/../../../../src/icons/arrows/angles-selector-slash-horizontal.svg","webpack://@jotforminc/portal/../../../../src/icons/arrows/arrow-down-to-line.svg","webpack://@jotforminc/portal/../../../../src/icons/arrows/arrow-right.svg","webpack://@jotforminc/portal/../../../../src/icons/arrows/arrow-rotate-right.svg","webpack://@jotforminc/portal/../../../../src/icons/arrows/arrow-up-right-from-square-sm.svg","webpack://@jotforminc/portal/../../../../src/icons/arrows/arrow-up-right-from-square.svg","webpack://@jotforminc/portal/../../../../src/icons/arrows/arrows-rotate.svg","webpack://@jotforminc/portal/../../../../src/icons/arrows/caret-down.svg","webpack://@jotforminc/portal/../../../../src/icons/arrows/caret-up.svg","webpack://@jotforminc/portal/../../../../src/icons/arrows/chevron-down.svg","webpack://@jotforminc/portal/../../../../src/icons/arrows/chevron-left.svg","webpack://@jotforminc/portal/../../../../src/icons/arrows/chevron-right.svg","webpack://@jotforminc/portal/../../../../src/icons/brand/linkedin-square-filled.svg","webpack://@jotforminc/portal/../../../../src/icons/brand/salesforce-filled.svg","webpack://@jotforminc/portal/../../../../src/icons/communication/envelope-closed-filled.svg","webpack://@jotforminc/portal/../../../../src/icons/communication/message-filled.svg","webpack://@jotforminc/portal/../../../../src/icons/communication/message-star-filled.svg","webpack://@jotforminc/portal/../../../../src/icons/communication/phone-filled.svg","webpack://@jotforminc/portal/../../../../src/icons/documents/document-image-filled.svg","webpack://@jotforminc/portal/../../../../src/icons/documents/document-simple-filled.svg","webpack://@jotforminc/portal/../../../../src/icons/editor/align-text-justify.svg","webpack://@jotforminc/portal/../../../../src/icons/editor/pencil-filled.svg","webpack://@jotforminc/portal/../../../../src/icons/editor/pencil-line-filled.svg","webpack://@jotforminc/portal/../../../../src/icons/finance/cart-shopping-filled.svg","webpack://@jotforminc/portal/../../../../src/icons/finance/coins-filled.svg","webpack://@jotforminc/portal/../../../../src/icons/finance/credit-card-filled.svg","webpack://@jotforminc/portal/../../../../src/icons/forms-files/form-filled.svg","webpack://@jotforminc/portal/../../../../src/icons/general/buildings.svg","webpack://@jotforminc/portal/../../../../src/icons/general/check-circle-filled.svg","webpack://@jotforminc/portal/../../../../src/icons/general/check-square-filled.svg","webpack://@jotforminc/portal/../../../../src/icons/general/check.svg","webpack://@jotforminc/portal/../../../../src/icons/general/copy-filled.svg","webpack://@jotforminc/portal/../../../../src/icons/general/copy.svg","webpack://@jotforminc/portal/../../../../src/icons/general/ellipsis-horizontal.svg","webpack://@jotforminc/portal/../../../../src/icons/general/ellipsis-vertical.svg","webpack://@jotforminc/portal/../../../../src/icons/general/exclamation-circle-filled.svg","webpack://@jotforminc/portal/../../../../src/icons/general/exclamation-circle.svg","webpack://@jotforminc/portal/../../../../src/icons/general/exclamation-triangle-filled.svg","webpack://@jotforminc/portal/../../../../src/icons/general/eye-filled.svg","webpack://@jotforminc/portal/../../../../src/icons/general/eye-slash-filled.svg","webpack://@jotforminc/portal/../../../../src/icons/general/gear-filled.svg","webpack://@jotforminc/portal/../../../../src/icons/general/grid-dots-vertical.svg","webpack://@jotforminc/portal/../../../../src/icons/general/heart-filled.svg","webpack://@jotforminc/portal/../../../../src/icons/general/heart.svg","webpack://@jotforminc/portal/../../../../src/icons/general/info-circle-filled.svg","webpack://@jotforminc/portal/../../../../src/icons/general/input-text-short.svg","webpack://@jotforminc/portal/../../../../src/icons/general/label-button-filled.svg","webpack://@jotforminc/portal/../../../../src/icons/general/link-diagonal-broken.svg","webpack://@jotforminc/portal/../../../../src/icons/general/link-diagonal.svg","webpack://@jotforminc/portal/../../../../src/icons/general/location-pin-filled.svg","webpack://@jotforminc/portal/../../../../src/icons/general/magnifying-glass.svg","webpack://@jotforminc/portal/../../../../src/icons/general/minus.svg","webpack://@jotforminc/portal/../../../../src/icons/general/pencil-to-square.svg","webpack://@jotforminc/portal/../../../../src/icons/general/plus-sm.svg","webpack://@jotforminc/portal/../../../../src/icons/general/plus.svg","webpack://@jotforminc/portal/../../../../src/icons/general/question-circle-filled.svg","webpack://@jotforminc/portal/../../../../src/icons/general/single-selection-filled.svg","webpack://@jotforminc/portal/../../../../src/icons/general/star-filled.svg","webpack://@jotforminc/portal/../../../../src/icons/general/text.svg","webpack://@jotforminc/portal/../../../../src/icons/general/trash-exclamation-filled.svg","webpack://@jotforminc/portal/../../../../src/icons/general/trash-filled.svg","webpack://@jotforminc/portal/../../../../src/icons/general/xmark-sm.svg","webpack://@jotforminc/portal/../../../../src/icons/general/xmark.svg","webpack://@jotforminc/portal/../../../../src/icons/media/image-arrow-up-filled.svg","webpack://@jotforminc/portal/../../../../src/icons/media/image-filled.svg","webpack://@jotforminc/portal/../../../../src/icons/media/video-filled.svg","webpack://@jotforminc/portal/../../../../src/icons/products/product-approvals-color.svg","webpack://@jotforminc/portal/../../../../src/icons/products/product-apps-mono.svg","webpack://@jotforminc/portal/../../../../src/icons/products/product-form-builder-color-border.svg","webpack://@jotforminc/portal/../../../../src/icons/products/product-form-builder-filled.svg","webpack://@jotforminc/portal/../../../../src/icons/products/product-inbox-filled.svg","webpack://@jotforminc/portal/../../../../src/icons/products/product-pages-filled.svg","webpack://@jotforminc/portal/../../../../src/icons/products/product-report-builder-filled.svg","webpack://@jotforminc/portal/../../../../src/icons/products/product-sign-color-border.svg","webpack://@jotforminc/portal/../../../../src/icons/products/product-sign-filled.svg","webpack://@jotforminc/portal/../../../../src/icons/products/product-tables-filled.svg","webpack://@jotforminc/portal/../../../../src/icons/products/product-tables-mono.svg","webpack://@jotforminc/portal/../../../../src/icons/products/product-teams-basic-filled.svg","webpack://@jotforminc/portal/../../../../src/icons/security/lock-filled.svg","webpack://@jotforminc/portal/../../../../src/icons/security/scan-filled.svg","webpack://@jotforminc/portal/../../../../src/icons/security/unlock-filled.svg","webpack://@jotforminc/portal/../../../../src/icons/technology/desktop.svg","webpack://@jotforminc/portal/../../../../src/icons/technology/keyboard.svg","webpack://@jotforminc/portal/../../../../src/icons/technology/mobile-bell.svg","webpack://@jotforminc/portal/../../../../src/icons/technology/mobile-gear.svg","webpack://@jotforminc/portal/../../../../src/icons/technology/mobile-pencil.svg","webpack://@jotforminc/portal/../../../../src/icons/technology/mobile-title.svg","webpack://@jotforminc/portal/../../../../src/icons/technology/mobile.svg","webpack://@jotforminc/portal/../../../../src/icons/technology/plug-filled.svg","webpack://@jotforminc/portal/../../../../src/icons/technology/tablet.svg","webpack://@jotforminc/portal/../../../../src/icons/time-date/clock-filled.svg","webpack://@jotforminc/portal/../../../../src/icons/users/circle-user-filled.svg","webpack://@jotforminc/portal/../../../../src/icons/users/user-filled.svg","webpack://@jotforminc/portal/../../../../src/icons/users/user-id-card-filled.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/2checkout-logomark-color.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/afterpay-logomark-color.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/afterpay-logomark-dark.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/applegooglepay-color.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/authorizenet-logomark-color.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/bluepay-logomark-color.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/bluesnap-logomark-color.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/braintree-logomark-dark.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/cardconnect-logomark-color.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/cashapp-logomark-color.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/chargify-logomark-color.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/clickbank-logomark-color.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/cybersource-logomark-color.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/echeck-logomark-color.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/eway-logomark-color.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/firstdata-logomark-color.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/gocardless-logomark-dark.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/iyzico-logomark-color.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/klarna-logomark-color.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/mollie-logomark-dark.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/moneris-logomark-color.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/onebip-logomark-color.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/pagseguro-logomark-color.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/payfast-logomark-dark.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/payjunction-logomark-color.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/paymentwall-logomark-color.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/paypal-business-logomark-color.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/paypal-checkout-logomark-color.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/paypal-invoicing-logomark-color.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/paypal-logomark-color.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/paypal-personal-logomark-color.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/paysafe-logomark-color.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/payu-logomark-color.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/purchaseorder-logomark-dark.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/sensepass-logomark-color.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/skrill-logomark-color.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/square-logomark-dark.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/stripe-ach-logomark-color.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/stripe-achm-logomark-color.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/stripe-checkout-logomark-color.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/stripe-logomark-color.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/venmo-logomark-color.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/worldpay-uk-logomark-color.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/worldpay-us-logomark-color-.svg","webpack://@jotforminc/portal/../../libs/tabs/src/tab-list/Tab.js","webpack://@jotforminc/portal/../../libs/tabs/src/tab-list/TabList.js","webpack://@jotforminc/portal/../../libs/tabs/src/tab-list/components/Wrapper.js","webpack://@jotforminc/portal/../../libs/tabs/src/tab-list/components/TabListContainer.js","webpack://@jotforminc/portal/../../libs/tabs/src/tab-list/components/TabButtonContainer.js","webpack://@jotforminc/portal/../../libs/tabs/src/tab-list/components/TabButton.js","webpack://@jotforminc/portal/../../libs/tabs/src/tab-list/TabListWithStyles.js","webpack://@jotforminc/portal/../../libs/text-input/src/styles.js","webpack://@jotforminc/portal/../../libs/text-input/src/index.js","webpack://@jotforminc/portal/../../libs/toggle/src/index.js","webpack://@jotforminc/portal/../../libs/tooltip/src/components/index.js","webpack://@jotforminc/portal/../../libs/translation/src/constants/index.js","webpack://@jotforminc/portal/../../libs/translation/src/domHelper.js","webpack://@jotforminc/portal/../../libs/translation/src/Translation.js","webpack://@jotforminc/portal/../../libs/translation/src/utils.js","webpack://@jotforminc/portal/../../libs/translation/src/hof.js","webpack://@jotforminc/portal/../../libs/translation/src/global.js","webpack://@jotforminc/portal/../../libs/translation/src/index.js","webpack://@jotforminc/portal/../../libs/uikit/src/components/Button/index.js","webpack://@jotforminc/portal/../../libs/utils/src/color.js","webpack://@jotforminc/portal/../../libs/uikit/src/components/ColorPicker/defaults/Color.js","webpack://@jotforminc/portal/../../libs/uikit/src/components/ColorPicker/defaults/Wrapper.js","webpack://@jotforminc/portal/../../libs/uikit/src/components/ColorPicker/index.js","webpack://@jotforminc/portal/../../libs/uikit/src/components/CopyButton/index.js","webpack://@jotforminc/portal/../../libs/uikit/src/components/Dropdown/index.js","webpack://@jotforminc/portal/../../libs/uikit/src/components/HiddenFrame/index.js","webpack://@jotforminc/portal/../../libs/uikit/src/components/DragContainer/index.js","webpack://@jotforminc/portal/../../libs/uikit/src/components/FileUpload/defaults/Text.js","webpack://@jotforminc/portal/../../libs/uikit/src/components/FileUpload/defaults/Form.js","webpack://@jotforminc/portal/../../libs/uikit/src/components/FileUpload/defaults/Wrapper.js","webpack://@jotforminc/portal/../../libs/uikit/src/components/FileUpload/defaults/ErrorText.js","webpack://@jotforminc/portal/../../libs/uikit/src/components/FileUpload/defaults/FileInput.js","webpack://@jotforminc/portal/../../libs/uikit/src/components/FileUpload/defaults/FilePreview.js","webpack://@jotforminc/portal/../../libs/uikit/src/components/FileUpload/defaults/TextWrapper.js","webpack://@jotforminc/portal/../../libs/uikit/src/components/FileUpload/defaults/DragContainer.js","webpack://@jotforminc/portal/../../libs/uikit/src/components/FileUpload/defaults/Thumbnail.js","webpack://@jotforminc/portal/../../libs/uikit/src/components/FileUpload/defaults/LoadingScreen.js","webpack://@jotforminc/portal/../../libs/uikit/src/components/FileUpload/index.js","webpack://@jotforminc/portal/../../libs/uikit/src/components/Modal/index.js","webpack://@jotforminc/portal/../../libs/uikit/src/components/Option/index.js","webpack://@jotforminc/portal/../../libs/uikit/src/components/OptionGroup/index.js","webpack://@jotforminc/portal/../../libs/uikit/src/components/Popover/index.js","webpack://@jotforminc/portal/../../libs/uikit/src/components/Portal/index.js","webpack://@jotforminc/portal/../../libs/uikit/src/components/SelectionGroup/index.js","webpack://@jotforminc/portal/../../libs/uikit/src/components/TextArea/LimitRenderer.js","webpack://@jotforminc/portal/../../libs/uikit/src/components/TextArea/index.js","webpack://@jotforminc/portal/../../libs/uikit/src/components/TextInput/index.js","webpack://@jotforminc/portal/../../libs/uikit/src/components/Tooltip/index.js","webpack://@jotforminc/portal/../../libs/uikit/src/utils/constants.js","webpack://@jotforminc/portal/../../libs/uikit/src/utils/hooks.js","webpack://@jotforminc/portal/../../libs/uikit/src/utils/index.js","webpack://@jotforminc/portal/../../libs/user-list/src/styles/index.js","webpack://@jotforminc/portal/../../libs/user-list/src/index.js","webpack://@jotforminc/portal/../../libs/utils/src/a11y.js","webpack://@jotforminc/portal/../../libs/utils/src/addressFields.js","webpack://@jotforminc/portal/../../libs/utils/src/data.js","webpack://@jotforminc/portal/../../libs/utils/src/dom.js","webpack://@jotforminc/portal/../../libs/utils/src/limitUtils.js","webpack://@jotforminc/portal/../../libs/utils/src/misc.js","webpack://@jotforminc/portal/../../libs/utils/src/mobileUtils.js","webpack://@jotforminc/portal/../../libs/constants/src/platforms/index.js","webpack://@jotforminc/portal/../../libs/feature-flag/src/components/FeatureFlag/FeatureFlag.js","webpack://@jotforminc/portal/../../libs/utils/src/platform/platform.js","webpack://@jotforminc/portal/../../libs/utils/src/questions.js","webpack://@jotforminc/portal/../../libs/utils/src/shareOnSocials.js","webpack://@jotforminc/portal/../../libs/utils/src/strings.js","webpack://@jotforminc/portal/../../libs/utils/src/time.js","webpack://@jotforminc/portal/../../libs/constants/src/email/index.js","webpack://@jotforminc/portal/../../libs/utils/src/validation.js","webpack://@jotforminc/portal/../../libs/warning-box/src/index.js","webpack://@jotforminc/portal/../../libs/magnet/src/components/Badge/badge.cva.ts","webpack://@jotforminc/portal/../../libs/magnet/src/components/Badge/badge.types.ts","webpack://@jotforminc/portal/../../libs/magnet/src/components/Badge/Badge.tsx","webpack://@jotforminc/portal/../../libs/magnet/src/components/Button/button.cva.ts","webpack://@jotforminc/portal/../../libs/magnet/src/components/Button/button.types.ts","webpack://@jotforminc/portal/../../libs/magnet/src/components/Button/ButtonContent.tsx","webpack://@jotforminc/portal/../../libs/magnet/src/components/Button/Button.tsx","webpack://@jotforminc/portal/../../libs/magnet/src/components/Checkbox/checkbox.cva.ts","webpack://@jotforminc/portal/../../libs/magnet/src/components/Checkbox/checkbox.types.ts","webpack://@jotforminc/portal/../../libs/magnet/src/components/Checkbox/Checkbox.tsx","webpack://@jotforminc/portal/../../libs/magnet/src/components/ColorPicker/color-picker.types.ts","webpack://@jotforminc/portal/../../libs/magnet/src/components/Dialog/Dialog.tsx","webpack://@jotforminc/portal/../../libs/magnet/src/components/Dialog/DialogActions.tsx","webpack://@jotforminc/portal/../../libs/magnet/src/components/Dialog/DialogBody.tsx","webpack://@jotforminc/portal/../../libs/magnet/src/components/Dialog/DialogCloseButton.tsx","webpack://@jotforminc/portal/../../libs/magnet/src/components/Dialog/DialogContent.tsx","webpack://@jotforminc/portal/../../libs/magnet/src/components/Dialog/DialogDescription.tsx","webpack://@jotforminc/portal/../../libs/magnet/src/components/Dialog/DialogIcon.tsx","webpack://@jotforminc/portal/../../libs/magnet/src/components/Dialog/DialogTitle.tsx","webpack://@jotforminc/portal/../../libs/magnet/src/components/Dialog/dialog.cva.ts","webpack://@jotforminc/portal/../../libs/magnet/src/components/Dialog/dialog.types.ts","webpack://@jotforminc/portal/../../libs/magnet/src/components/FormControl/form-control.cva.ts","webpack://@jotforminc/portal/../../libs/magnet/src/components/FormControl/FormControl.tsx","webpack://@jotforminc/portal/../../libs/magnet/src/components/Indicator/indicator.cva.ts","webpack://@jotforminc/portal/../../libs/magnet/src/components/Indicator/indicator.types.ts","webpack://@jotforminc/portal/../../libs/magnet/src/components/Indicator/Indicator.tsx","webpack://@jotforminc/portal/../../libs/magnet/src/components/Input/BaseInput.tsx","webpack://@jotforminc/portal/../../libs/magnet/src/components/Input/InputText.tsx","webpack://@jotforminc/portal/../../libs/magnet/src/components/Input/input.cva.ts","webpack://@jotforminc/portal/../../libs/magnet/src/components/Input/input.types.ts","webpack://@jotforminc/portal/../../libs/magnet/src/components/Link/link.cva.ts","webpack://@jotforminc/portal/../../libs/magnet/src/components/Link/link.types.ts","webpack://@jotforminc/portal/../../libs/magnet/src/components/Link/Link.tsx","webpack://@jotforminc/portal/../../libs/magnet/src/components/Loader/loader.cva.ts","webpack://@jotforminc/portal/../../libs/magnet/src/components/Loader/loader.types.ts","webpack://@jotforminc/portal/../../libs/magnet/src/components/Loader/Loader.tsx","webpack://@jotforminc/portal/../../libs/magnet/src/components/Modal/Modal.tsx","webpack://@jotforminc/portal/../../libs/magnet/src/components/Modal/ModalActions.tsx","webpack://@jotforminc/portal/../../libs/magnet/src/components/Modal/ModalBody.tsx","webpack://@jotforminc/portal/../../libs/magnet/src/components/Modal/ModalHeader.tsx","webpack://@jotforminc/portal/../../libs/magnet/src/components/Modal/modal.cva.ts","webpack://@jotforminc/portal/../../libs/magnet/src/components/Modal/modal.types.ts","webpack://@jotforminc/portal/../../libs/magnet/src/components/Textarea/textarea.cva.ts","webpack://@jotforminc/portal/../../libs/magnet/src/components/Textarea/textarea.types.ts","webpack://@jotforminc/portal/../../libs/magnet/src/components/Textarea/Textarea.tsx","webpack://@jotforminc/portal/../../libs/magnet/src/constants/common.cva.ts","webpack://@jotforminc/portal/../../libs/magnet/src/constants/common.values.ts","webpack://@jotforminc/portal/../../libs/magnet/src/contexts/index.tsx","webpack://@jotforminc/portal/../../libs/magnet/src/layouts/Flex/flex.cva.ts","webpack://@jotforminc/portal/../../libs/magnet/src/layouts/Flex/Flex.tsx","webpack://@jotforminc/portal/../../libs/magnet/src/layouts/Grid/grid.cva.ts","webpack://@jotforminc/portal/../../libs/magnet/src/layouts/Grid/Grid.tsx","webpack://@jotforminc/portal/../../libs/magnet/src/shared/ChoiceLabel/choice-label.types.ts","webpack://@jotforminc/portal/../../libs/magnet/src/shared/ChoiceLabel/choice-label.cva.ts","webpack://@jotforminc/portal/../../libs/magnet/src/shared/ChoiceLabel/ChoiceLabel.tsx","webpack://@jotforminc/portal/../../libs/magnet/src/tokens/colors/primary.ts","webpack://@jotforminc/portal/../../libs/magnet/src/tokens/colors/secondary.ts","webpack://@jotforminc/portal/../../libs/magnet/src/utils/index.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gateway/gatewayFieldToName.ts","webpack://@jotforminc/portal/../../../../src/logos/payment/square-logomark-light.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/paypal-business-logomark-light.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/paypal-logomark-light.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/paypal-invoicing-logomark-light.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/paypal-pro-logomark-light.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/paypal-checkout-logomark-light.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/paypal-express-logomark-light.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/authorizenet-logomark-light.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/stripe-logomark-light.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/stripe-checkout-logomark-light.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/stripe-achm-logomark-light.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/stripe-ach-logomark-light.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/braintree-logomark-light.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/afterpay-logomark-light.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/venmo-logomark-light.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/mollie-logomark-light.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/cybersource-logomark-light.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/echeck-logomark-light.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/bluepay-logomark-light.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/eway-logomark-light.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/payu-logomark-light.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/payu-india-logomark-light.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/worldpay-uk-logomark-light.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/bluesnap-logomark-light.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/moneris-logomark-light.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/gocardless-logomark-color.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/payfast-logomark-light.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/sensepass-logomark-light.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/klarna-logomark-light.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/firstdata-logomark-light.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/cardconnect-logomark-light.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/worldpay-us-logomark-light.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/2checkout-logomark-light.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/paysafe-logomark-light.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/iyzico-logomark-light.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/skrill-logomark-light.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/chargify-logomark-light.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/payjunction-logomark-light.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/clickbank-logomark-light.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/onebip-logomark-light.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/paymentwall-logomark-light.svg","webpack://@jotforminc/portal/../../../../src/logos/payment/purchaseorder-logomark-light.svg","webpack://@jotforminc/portal/../../libs/payment-constants/src/gateway/gatewayCustomIcons/lightIcons/applePayGooglePay.tsx","webpack://@jotforminc/portal/../../libs/payment-constants/src/gateway/gatewayLightIcons.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gateway/gatewayResourceSupportedPaymentTypes.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gateway/gatewaySupportedCurrencies.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayResourceProps/control2co.tsx","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayResourceProps/controlAfterpay.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayResourceProps/controlApplePayGooglePay.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayResourceProps/controlAuthnet.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayResourceProps/controlBluepay.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayResourceProps/controlBluesnap.tsx","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayResourceProps/controlBraintree.tsx","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayResourceProps/controlCardconnect.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayResourceProps/controlCashApp.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayResourceProps/controlChargify.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayResourceProps/controlClearpay.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayResourceProps/controlCybersource.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayResourceProps/controlEcheck.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayResourceProps/controlEway.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayResourceProps/controlFirstdata.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayResourceProps/controlGocardless.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayResourceProps/controlIyzico.tsx","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayResourceProps/controlMollie.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayResourceProps/controlMoneris.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayResourceProps/controlPagseguro.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayResourceProps/controlPayfast.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayResourceProps/controlPayjunction.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayResourceProps/controlPaymentwall.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayResourceProps/controlPaypal.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayResourceProps/controlPaypalComplete.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayResourceProps/controlPaypalExpress.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayResourceProps/controlPaypalInvoicing.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayResourceProps/controlPaypalPro.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayResourceProps/controlPaypalSPB.tsx","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayResourceProps/controlPaysafe.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayResourceProps/controlPayu.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayResourceProps/controlPayuMoney.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayResourceProps/controlSensepass.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayResourceProps/controlSkrill.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayResourceProps/controlSofort.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayResourceProps/controlSquare.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayResourceProps/controlStripe.tsx","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayResourceProps/controlstripeACH.tsx","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayResourceProps/controlStripeACHManual.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayResourceProps/controlStripeCheckout.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayResourceProps/controlVenmo.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayResourceProps/controlWorldpay.tsx","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayResourceProps/index.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayResourceProps/controlWorldpayus.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/supportedCurrenciesWithLabel.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gateway/gatewayListSortedByCountry.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayConnectionProps/controlSquare.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayConnectionProps/controlPaypalComplete.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayConnectionProps/controlPaypal.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayConnectionProps/controlPaypalInvoicing.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayConnectionProps/controlPaypalPro.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayConnectionProps/controlPaypalSPB.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayConnectionProps/controlPaypalExpress.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayConnectionProps/controlAuthnet.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayConnectionProps/controlStripe.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayConnectionProps/controlStripeCheckout.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayConnectionProps/controlStripeACHManual.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayConnectionProps/controlStripeACH.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayConnectionProps/controlBraintree.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayConnectionProps/controlCashApp.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayConnectionProps/controlAfterpay.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayConnectionProps/controlClearpay.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayConnectionProps/controlVenmo.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayConnectionProps/controlApplePayGooglePay.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayConnectionProps/controlMollie.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayConnectionProps/controlCybersource.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayConnectionProps/controlEcheck.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayConnectionProps/controlBluepay.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayConnectionProps/controlEway.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayConnectionProps/controlPayu.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayConnectionProps/controlPayuMoney.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayConnectionProps/controlWorldpay.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayConnectionProps/controlWorldpayus.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayConnectionProps/controlBluesnap.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayConnectionProps/controlMoneris.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayConnectionProps/controlGocardless.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayConnectionProps/controlPayfast.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayConnectionProps/controlSensepass.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayConnectionProps/controlSofort.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayConnectionProps/controlPagseguro.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayConnectionProps/controlFirstdata.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayConnectionProps/controlCardconnect.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayConnectionProps/control2co.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayConnectionProps/controlPaysafe.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayConnectionProps/controlIyzico.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayConnectionProps/controlSkrill.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayConnectionProps/controlChargify.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayConnectionProps/controlPayjunction.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayConnectionProps/controlClickbank.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayConnectionProps/controlOnebip.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayConnectionProps/controlPaymentwall.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/supportedGatewayConnectionPropsList.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/gatewayConnectionProps/controlPayment.ts","webpack://@jotforminc/portal/../../libs/payment-constants/src/supportedPaymentTypesWithLabel.ts","webpack://@jotforminc/portal/../../libs/payment-gateways/src/utils/functions/logPaymentEvents.ts","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/api/layer.ts","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/api/index.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/fields/ConnectionButton/BaseConnectionButton.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/fields/ConnectionButton/ConnectionButtonStripe.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/modals/Flows/Constants/Credentials.ts","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/fields/ConnectionButton/ConnectionButtonSquare.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/fields/ConnectionButton/ConnectionButtonPaypal.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/fields/ConnectionButton/ConnectionButtonMollie.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/fields/ConnectionButton/index.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/fields/ConnectionButton/utils.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/fields/Credential.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/fields/NewDropdown.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/fields/NewTextInput.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/fields/selectbox.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/fields/toggle.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/modals/Flows/Constants/GatewayProperties.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/modals/Flows/Constants/Gateways.ts","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/modals/Flows/Constants/DefaultGatewayProps.ts","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/modals/Flows/Context/useGatewayFlows.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/modals/Flows/Utils/index.ts","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/constants/PaymentProperties.ts","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/constants/componentNames.ts","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/fields/infoline.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/fields/CurrencyDropdown.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/fields/LayoutTypeButton.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/fields/textinput.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/fields/CustomCheckbox.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/fields/CopyUrl.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/fields/Steps.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/fields/ColorPicker.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/fields/TextArea.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/fields/GroupHeader.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/fields/FixedAmounts/AmountListItem.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/fields/FixedAmounts/index.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/fields/Divider.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/fields/PriceInput.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/fields/InputRange.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/fields/InputRangeWithType.tsx","webpack://@jotforminc/portal/../../libs/data-grid/src/components/DataGridCell.js","webpack://@jotforminc/portal/../../libs/data-grid/src/components/DataGridRow.js","webpack://@jotforminc/portal/../../libs/data-grid/src/index.js","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/fields/LabelValueTable.tsx","webpack://@jotforminc/portal/../../libs/radio-group/src/index.js","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/fields/RadioGroup.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/components/fields/SuffixInput.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/constants/componentTypes.ts","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/constants/countries.ts","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/constants/styles.ts","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/constants/variables.ts","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/store/reducers/products.ts","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/store/reducers/productListSettings.ts","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/store/reducers/subscriptions.ts","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/store/reducers/ui.ts","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/store/reducers/activeProduct.ts","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/store/reducers/user.ts","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/store/reducers/connections.ts","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/store/reducers/activeConnection.ts","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/store/reducers/activeGatewaySettings.ts","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/store/reducers/checkoutForm.ts","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/store/middlewares/actionCatcher.ts","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/store/index.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/containers/PaymentProviderContainer.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/hooks/index.ts","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/store/EditorBinding.ts","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/store/actionTypes.ts","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/store/selectors.ts","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/utils/domUtils.ts","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/utils/general.ts","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/constants/ProductListSettingsProperties.ts","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/utils/index.tsx","webpack://@jotforminc/portal/../../libs/payment-settings-editor/src/utils/paymentProperties.ts","webpack://@jotforminc/portal/../../libs/request-layer/src/request-cache/constants.ts","webpack://@jotforminc/portal/../../libs/request-layer/src/request-cache/utils.ts","webpack://@jotforminc/portal/../../libs/request-layer/src/request-cache/index.ts","webpack://@jotforminc/portal/../../libs/request-layer/src/utils/argumentParser.ts","webpack://@jotforminc/portal/../../libs/request-layer/src/utils/constructInterceptorConfig.ts","webpack://@jotforminc/portal/../../libs/request-layer/src/layer/interceptors/index.ts","webpack://@jotforminc/portal/../../libs/request-layer/src/layer/interceptors/defaultInterceptors/index.ts","webpack://@jotforminc/portal/../../libs/request-layer/src/layer/interceptors/defaultInterceptors/utils.ts","webpack://@jotforminc/portal/../../libs/request-layer/src/layer/interceptors/defaultInterceptors/platform/salesforceInterceptors.ts","webpack://@jotforminc/portal/../../libs/request-layer/src/layer/interceptors/defaultInterceptors/defaultInterceptors.ts","webpack://@jotforminc/portal/../../libs/request-layer/src/utils/setInterceptors.ts","webpack://@jotforminc/portal/../../libs/request-layer/src/layer/engines/utils.ts","webpack://@jotforminc/portal/../../libs/request-layer/src/layer/engines/AxiosEngine.ts","webpack://@jotforminc/portal/../../libs/request-layer/src/layer/engines/constants.ts","webpack://@jotforminc/portal/../../libs/request-layer/src/layer/utils.ts","webpack://@jotforminc/portal/../../libs/request-layer/src/layer/index.ts","webpack://@jotforminc/portal/../../libs/request-layer/src/layer/interceptors/customInterceptors/index.ts","webpack://@jotforminc/portal/../../libs/request-layer/src/utils/managerUtils.ts","webpack://@jotforminc/portal/../../libs/tracking/src/utils/FullStoryManager.ts","webpack://@jotforminc/portal/../../libs/tracking/src/constants/index.ts","webpack://@jotforminc/portal/../../libs/tracking/src/utils/SentryManager.ts","webpack://@jotforminc/portal/../../libs/tracking/src/utils/TrackingManager.ts","webpack://@jotforminc/portal/../../libs/tracking/src/index.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 if (window?.isConversations) {\n return 'https://edbf2507da3923feb707b12ec22adbbb@o61806.ingest.sentry.io/4508327118635008';\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 Styled from 'styled-components';\nimport { ScLogo } from '../AppLogo/scLogo';\n\nconst ScAppIconWrapper = Styled.div`\n ${ScLogo}\n border-radius: 10px;\n ${({ isSVG, bgColor }) => (isSVG ? `background: ${bgColor};` : '')}\n margin-bottom: 5px;\n\n .jfIconSVG-wrapper {\n display: flex;\n }\n`;\n\nexport default ScAppIconWrapper;\n","import React, { memo } from 'react';\nimport { bool } from 'prop-types';\nimport { useSelector } from 'react-redux';\nimport AppImage from '../AppImage';\nimport AppLogo from '../AppLogo';\nimport ScAppIconWrapper from './ScAppIconWrapper';\nimport VERSIONS from '../../properties/versions';\nimport { IMAGE_TYPE } from '../../constants';\nimport SELECTORS from '../../store/selectors';\n\nconst AppIcon = ({ withBorder }) => {\n const {\n appIconType, appIconBackground, appIconColor, appIconSvgRef, appIconURL, installableIconURL\n } = useSelector(SELECTORS.getAppIconProperties);\n const title = useSelector(SELECTORS.getAppTitle);\n const appVersion = useSelector(SELECTORS.getAppVersionSelector);\n const logoProperties = useSelector(SELECTORS.getLogoProperties);\n const Wrapper = ScAppIconWrapper;\n const hasInstallableAppIcon = !!installableIconURL;\n\n // Fallback to AppLogo\n const shouldFallbackToLogo = appVersion === VERSIONS[0];\n if (shouldFallbackToLogo) return ();\n\n return (\n \n );\n};\n\nAppIcon.propTypes = {\n withBorder: bool\n};\n\nAppIcon.defaultProps = {\n withBorder: false\n};\n\nexport default memo(AppIcon);\n","import React, { memo } from 'react';\nimport {\n bool, elementType, oneOf, string\n} from 'prop-types';\nimport { IMAGE_TYPE } from '../../constants';\nimport SvgRenderer from '../common/SvgRenderer';\n\nconst getImageComponent = (url, alt) => {\n if (!url) return null;\n return (\n \n );\n};\n\nconst AppImage = ({\n type,\n bgColor,\n bgURL,\n iconColor,\n svgRef,\n alt,\n Wrapper,\n withBorder\n}) => {\n const isSVG = type === IMAGE_TYPE.icon;\n\n const url = isSVG ? bgURL.replace('http://', 'https://') : bgURL;\n\n return (\n \n {isSVG\n\n ? (\n
\n \n
\n )\n : getImageComponent(url, alt)}\n
\n );\n};\n\nAppImage.propTypes = {\n type: oneOf([IMAGE_TYPE.icon, IMAGE_TYPE.image]),\n bgColor: string,\n bgURL: string,\n iconColor: string,\n svgRef: string,\n alt: string,\n Wrapper: elementType,\n withBorder: bool\n};\n\nAppImage.defaultProps = {\n type: IMAGE_TYPE.image,\n bgColor: '',\n bgURL: '',\n iconColor: '',\n svgRef: '',\n alt: '',\n Wrapper: ({ children, ...props }) => (
{children}
), // eslint-disable-line react/prop-types\n withBorder: false\n};\n\nexport default memo(AppImage);\n","import React from 'react';\nimport {\n bool, elementType, shape, string\n} from 'prop-types';\nimport { ScAppLogo } from './scLogo';\nimport AppImage from '../AppImage';\n\nconst AppLogo = ({\n Wrapper,\n withBorder,\n title,\n logoProperties\n}) => {\n const {\n logoType, logoBackground, logoURL, logoSvgRef, iconColor\n } = logoProperties;\n\n const alt = `${title} Logo`;\n return (\n \n );\n};\n\nAppLogo.propTypes = {\n Wrapper: elementType,\n title: string,\n logoProperties: shape({}),\n withBorder: bool\n};\n\nAppLogo.defaultProps = {\n Wrapper: ScAppLogo,\n title: '',\n logoProperties: {},\n withBorder: false\n};\n\nexport default AppLogo;\n","import Styled, { css } from 'styled-components';\nimport { FEATURE_NAMES } from '../../constants/features';\nimport { isFeatureEnabled } from '../../utils/features/helper';\n\nexport const ScLogo = css`\n display: flex;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 100%;\n white-space: nowrap;\n overflow: hidden;\n ${isFeatureEnabled(FEATURE_NAMES.AppLogoSize) ? css`\n border-radius: 0;\n & > * {\n border-radius: 0;\n }\n ` : `\n border-radius: 14px;\n & > * {\n border-radius: 4px;\n }\n `}\n\n img {\n width: 100%;\n height: auto;\n }\n\n ${({ withBorder }) => {\n return withBorder ? `\n border: 1px solid #D3DCEF;\n ` : '';\n }}\n`;\n\nexport const ScAppLogo = Styled.div`\n ${ScLogo}\n ${({ isSVG, bgColor }) => (isSVG ? `\n background: ${bgColor};\n ${isFeatureEnabled(FEATURE_NAMES.AppLogoSize) ? `\n border-radius: 14px;\n width: 80px;\n height: 80px;\n ` : ''}\n ` : '')}\n`;\n","import Styled from 'styled-components';\n\nexport const ScIMOverlay = Styled.div`\n position: fixed;\n left: 0; top: 0;\n width: 100%; height: 100%;\n z-index: 1002;\n background-color: rgba(39, 41, 55, 0.61);\n display: flex;\n flex-direction: column;\n align-items: center;\n\n .a2hs {\n width: 92%;\n max-width: ${({ larger }) => (larger ? '730px' : '600px')};\n max-height: 92%;\n border-radius: 8px;\n box-shadow: 0 2px 7px 0 rgba(0, 0, 0, 0.5);\n background-color: #fff;\n margin: auto;\n overflow: auto;\n }\n`;\n\nexport const ScIMContent = Styled.div`\n height: 100%;\n position: relative;\n`;\n\nexport const ScIMHeader = Styled.div`\n padding: 24px 24px 0 0;\n display: flex;\n\n .close-modal {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n margin: 0 0 0 auto;\n background: transparent;\n border: 0;\n padding: 0;\n cursor: pointer;\n width: 40px;\n height: 40px;\n border-radius: 50%;\n background-color: #F3F3FE;\n\n svg {\n width: 30px;\n height: 30px;\n color: #6F76A7;\n }\n }\n\n .header-content {\n flex: 1 1 auto;\n padding: 0 0 0 27px;\n }\n\n .announcement-title {\n margin: 12px 0 0;\n font-size: 20px;\n font-weight: 500;\n font-style: normal;\n line-height: normal;\n letter-spacing: 0.15px;\n color: #2c3345;\n }\n\n .announcement-description {\n font-size: 16px;\n font-weight: normal;\n font-stretch: normal;\n font-style: normal;\n line-height: normal;\n letter-spacing: 0.12px;\n color: #8f91aa;\n margin: 0.25em 0;\n }\n\n .announcement-modal-closeBtn {\n padding: 0;\n height: auto;\n margin: 21px 24px 18px 0;\n display: block;\n border: 0;\n flex: 0 0 auto;\n background: transparent;\n cursor: pointer;\n width: 40px;\n height: 40px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n\n svg {\n width: 20px;\n height: 20px;\n color: #6F76A7;\n }\n }\n\n @media screen and (max-width: 480px) {\n padding: 16px 16px 0 0;\n }\n\n`;\n\nexport const ScIMFooter = Styled.div`\n text-align: center;\n \n .bw {\n border-top: 1px solid #DADEF3;\n padding: 16px;\n background-color: #F3F3FE;\n }\n\n .tw {\n padding: 0 16px 24px 16px;\n\n ol {\n li {\n display: flex;\n align-items: center;\n justify-content: center;\n &:not(:first-child) {\n margin-top: 12px;\n }\n }\n }\n }\n`;\n\nexport const ScIMClose = Styled.button`\n position: absolute;\n right: 0; top: 0;\n`;\n\nexport const ScImage = Styled.div`\n min-height: 500px;\n\n .announcementGif {\n opacity: 0;\n width: 100%;\n padding: 28px 34px 47px 28px;\n border-top: 1px solid #eaebf2;\n transition: opacity 0.3s;\n }\n .announcementGif.ready{\n opacity: 1;\n }\n`;\n","import React, { forwardRef } from 'react';\nimport { elementType, func } from 'prop-types';\nimport { Modal as UIKitModal } from '@jotforminc/uikit';\n\nconst AppModal = forwardRef(({\n DialogRenderer, ContentRenderer, HeaderRenderer, FooterRenderer, onModalClose, ...props\n}, ref) => {\n return (\n \n );\n});\n\n/* eslint react/prop-types: \"off\" */\nAppModal.propTypes = {\n DialogRenderer: elementType,\n HeaderRenderer: elementType,\n ContentRenderer: elementType,\n FooterRenderer: elementType,\n onModalClose: func\n};\n\nAppModal.defaultProps = {\n DialogRenderer: ({ children }) => (\n
\n {children}\n
\n ),\n HeaderRenderer: ({ children }) =>
{children}
,\n ContentRenderer: ({ children }) => (
{children}
),\n FooterRenderer: ({ children }) =>
{children}
,\n onModalClose: () => {}\n};\n\nexport default AppModal;\n","import Styled, { css } from 'styled-components';\n\nexport const ScBadge = Styled.div`\n display: inline-block;\n\n .badge-content {\n display: flex;\n justify-content: center;\n align-items: center;\n color: #fff;\n width: 25px;\n height: 25px;\n border-radius: 50%;\n background-color: #78BB07;\n\n ${({ color }) => {\n return css`background-color: ${color};`;\n }}\n\n svg {\n width: 19px;\n height: 19px;\n }\n }\n`;\n","import React from 'react';\nimport { element, elementType } from 'prop-types';\nimport { IconCheck } from '@jotforminc/svg-icons';\nimport { ScBadge } from './ScBadge';\n\nconst Badge = ({\n icon,\n IconRenderer,\n ...rest\n}) => {\n return (\n \n
\n \n
\n
\n );\n};\n\nBadge.propTypes = {\n icon: element,\n IconRenderer: elementType\n};\n\nBadge.defaultProps = {\n icon: ,\n /* eslint-disable react/prop-types */\n IconRenderer: ({ icon }) => <>{icon}\n};\n\nexport default Badge;\n","import React from 'react';\nimport { AppsLoader as CommonAppsLoading } from '@jotforminc/apploaders';\nimport Styled from 'styled-components';\n\nconst ScContainer = Styled.div`\n width: 100%;\n height: 100%;\n\n display: flex;\n justify-content: center;\n align-items: center;\n`;\n\nconst BuilderLoading = () => {\n return (\n \n \n \n );\n};\n\nexport default BuilderLoading;\n","/* eslint-disable max-len */\nimport Styled from 'styled-components';\nimport { Button as UIKitButton } from '@jotforminc/uikit';\nimport { mainFont } from '../../styles/global';\n\nexport const ScUIKitButton = Styled(UIKitButton)`\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 font-family: inherit;\n }\n\n &.panel {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border-radius: 4px;\n cursor: pointer;\n text-transform: capitalize;\n border: 0;\n padding: 6px;\n margin: 0;\n font-size: 15px;\n font-family: ${mainFont};\n transition: .3s background-color ease;\n }\n\n &.panel.isGreen {\n background-color: #78BB07;\n color: #fff;\n\n &:hover {\n background-color: #4EB100;\n }\n\n &:active {\n background-color: #5FA200;\n }\n }\n\n &.taste.isGreen {\n background-color: #54b45c;\n color: #fff;\n }\n\n &.taste.isDarkBlue {\n background-color: #0A1551;\n color: #fff;\n border: 1px solid #0A1551;\n }\n\n &.taste.isDarkBlueColor {\n color: #0A1551;\n background-color: #fff;\n border: 1px solid #0A1551;\n\n &:hover {\n background-color: #C8CEED;\n }\n }\n\n &.taste.isPurple {\n background-color: #8563ce;\n color: #fff;\n }\n\n &.taste.isRed {\n background-color: #ff4947;\n color: #fff;\n }\n\n &.bare.isBlue {\n color: #0099FF;\n }\n\n &.taste.isGray {\n background-color: #FAFAFC;\n border: 1px solid #ADB4D2;\n color: #A0A6C3;\n\n &:hover {\n background-color: #fff;\n color: #9EA7CE;\n border-color: #9EA7CE;\n }\n\n &[disabled] {\n color: #A0A6C3;\n border-color: #A0A6C3;\n background-color: #FAFAFC;\n }\n }\n\n &.taste.isBlue, &.panel.isBlue {\n background-color: #0099FF;\n color: #fff;\n transition: .3s background-color ease;\n\n &:hover {\n background-color: #33adff;\n }\n\n &:active {\n background-color: #007acc;\n }\n }\n\n &.taste.isLightGreen {\n background-color: #78BB07;\n color: #fff;\n\n &:hover {\n background-color: #4EB100;\n }\n\n &:active {\n background-color: #5FA200;\n }\n }\n\n &.taste.isSubGray {\n background-color: #e9e9f2;\n color: #898ba9;\n\n &:hover {\n background-color: #F2F2FE;\n }\n\n &:active {\n background-color: #DEDEEC;\n }\n\n &[disabled] {\n &:hover,&:active {\n background-color: #e9e9f2;\n }\n }\n }\n\n &.taste.isLightGreenNegative {\n background-color: #fff;\n color: #78BB07;\n border: 1px solid #78BB07;\n &:hover {\n background-color: #78BB07;\n color: #fff;\n }\n &:active {\n background-color: #5FA200;\n color: #fff;\n }\n }\n\n &.taste.isWhite {\n background-color: #fff;\n color: #8E4FCD;\n transition: .3s background-color ease;\n border: 1px solid #8E4FCD;\n\n svg path {\n fill: #8E4FCD;\n }\n\n &:hover {\n background-color: #7735BA;\n color: #fff;\n\n svg path { fill: #fff; }\n }\n\n &:active {\n background-color: #6722AC;\n color: #fff;\n\n svg path { fill: #fff; }\n }\n }\n\n\n &.taste.quickQR {\n border-radius: 4px;\n & > svg {\n & > path { fill: #fff }\n }\n\n @media screen and (max-width: 480px) {\n border-radius: 29px;\n }\n }\n\n &.taste.quickQR {\n margin: 0 20px;\n font-weight: 500;\n font-size: 14px;\n font-family: inherit;\n transition: .3s background-color ease;\n text-transform: none;\n\n & > svg { margin-right: 7px;}\n\n @media screen and (max-width: 480px) {\n padding: 11px;\n margin: 0;\n\n & > span { display: none; }\n & > svg {\n margin-right: 0;\n & > path { fill: #fff }\n }\n }\n }\n\n &.taste.quickQR {\n background-color: #0a1551;\n\n &:hover {\n background-color: #252d5b;\n }\n }\n\n &.taste.quickQR.isSelected {\n background-color: #091141;\n }\n\n &.taste.undoRedo {\n margin: 0 2px;\n padding: 12px 17px;\n font-size: 14px;\n font-family: inherit;\n transition: .3s background-color ease;\n text-transform: none;\n font-weight: 400;\n\n & > svg { margin-right: 11px;}\n & > span { color: #23283A; line-height: 16px; }\n\n @media screen and (max-width: 768px) {\n padding: 12px 10px;\n & > span { display: none; }\n & > svg { margin-right: 0; }\n }\n\n @media screen and (max-width: 480px) {\n padding: 12px 10px;\n & > span { display: none; }\n & > svg { margin-right: 0; }\n }\n\n &[disabled] {\n & > svg > path { fill: #979797;}\n & > span { color: #898BA9; }\n }\n }\n\n &[disabled] { opacity: .6; cursor: initial; }\n\n\n &.outline {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: .5em 1em;\n border-radius: 4px;\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\n &.outline.isRed {\n color: #ff4947;\n }\n\n &.outline.removeForms { padding: .625em; }\n &.outline.removeForms span { margin-left: .25rem; }\n\n &.goBack {\n font-size: .875em;\n line-height: 1;\n color: #90a4ae;\n padding: 0 1em 1em 0;\n\n & > * { vertical-align: middle; }\n svg { width: 18px; margin-right: 5px; }\n }\n\n @media screen and (max-width: 480px) {\n &.outline.removeForms span { display: none; }\n &.cb-addForm {\n margin-left: 0.5em;\n span { display: none; }\n svg { margin-right: 0 !important; }\n }\n }\n`;\n","import React, { useRef } from 'react';\nimport { string } from 'prop-types';\nimport { Hooks } from '@jotforminc/uikit';\nimport { Tooltip } from '@jotforminc/portal-components';\nimport { ScUIKitButton } from './scButton';\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 {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';\n\nconst OptionContainerRenderer = props =>
  • ;\nexport default OptionContainerRenderer;\n","/* eslint-disable @jotforminc/no-native-button */\nimport React, { forwardRef } from 'react';\nimport {\n bool, oneOfType, shape, string\n} from 'prop-types';\n\nconst ButtonRenderer = forwardRef(({\n option: { text, value } = {},\n isOptionsVisible, placeholder, ...props\n}, ref) => {\n return (\n \n {text ?? placeholder}\n \n );\n});\n\nButtonRenderer.propTypes = {\n option: oneOfType([shape({}), bool]),\n isOptionsVisible: bool,\n placeholder: string\n};\n\nButtonRenderer.defaultProps = {\n option: {},\n isOptionsVisible: false,\n placeholder: ''\n};\n\nexport default ButtonRenderer;\n","import React from 'react';\nimport { renderable } from '../../../constants/propTypes';\n\nconst ContainerRenderer = ({ children }) =>
      {children}
    ;\n\nContainerRenderer.propTypes = {\n children: renderable.isRequired\n};\n\nexport default ContainerRenderer;\n","import React from 'react';\nimport {\n arrayOf, func, number, oneOfType, shape, string, bool, elementType\n} from 'prop-types';\nimport { t } from '@jotforminc/translation';\nimport { Dropdown as UiKitDropdown } from '@jotforminc/uikit';\nimport { ScDropdown } from './scDropdown';\nimport OptionContainerRenderer from './defaults/OptionContainerRenderer';\nimport DefaultButtonRenderer from './defaults/ButtonRenderer';\nimport ContainerRenderer from './defaults/ContainerRenderer';\n\nconst Dropdown = ({\n onChange, defaultValue, options, filterable, popoverProps, DropdownWrapperRenderer, OptionRenderer, ButtonRenderer, value, ...props\n}) => {\n const handleOptionSelect = ({ value: newVal }) => onChange(newVal);\n\n return (\n \n \n \n );\n};\n\nDropdown.propTypes = {\n onChange: func,\n defaultValue: oneOfType([string, number]),\n value: oneOfType([string, number]),\n options: arrayOf(shape({})),\n filterable: bool,\n popoverProps: shape({}),\n DropdownWrapperRenderer: elementType,\n OptionRenderer: elementType,\n ButtonRenderer: elementType\n};\n\nDropdown.defaultProps = {\n onChange: f => f,\n defaultValue: undefined,\n value: undefined,\n options: [],\n filterable: false,\n popoverProps: {},\n DropdownWrapperRenderer: ScDropdown,\n OptionRenderer: undefined,\n ButtonRenderer: DefaultButtonRenderer\n};\n\nexport default Dropdown;\n","/* eslint-disable max-len */\nimport Styled from 'styled-components';\nimport { mainFontColor } from '../../styles/colors';\n\nexport const ScDropdown = Styled.div`\n position: relative;\n\n .dropdown-button {\n display: block;\n padding: 14px;\n border: 1px solid #C8CEED;\n border-radius: 4px;\n width: 100%;\n font-size: 16px;\n color: #0A1551;\n background-color: #fff;\n text-align: left;\n position: relative;\n cursor: pointer;\n outline: none;\n font-family: inherit;\n\n &:after {\n content: \"\";\n border-left: 1px solid #C8CEED;\n position: absolute;\n top: 0;\n width: 45px;\n height: 100%;\n right: 0;\n z-index: 1;\n background-repeat: no-repeat;\n background-position: 50%;\n background-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='8' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M6.397 6.948L11.1.804A.5.5 0 0010.7 0H1.3a.5.5 0 00-.4.804l4.702 6.144a.5.5 0 00.794 0z' fill='%236F76A7' fill-rule='evenodd'/%3E%3C/svg%3E\");\n }\n\n + div[data-popper-placement] {\n width: 100%;\n }\n }\n\n [data-popper-placement] {\n z-index: 3;\n }\n\n .dropdown-container {\n padding: 0;\n margin: 0;\n background-color: #fff;\n border: 1px solid #d8dae9;\n border-top: 0 solid #d8dae9;\n\n & > div > b {\n display: list-item;\n padding: 14px;\n }\n }\n\n .dropdown-option {\n &-container {\n margin: 0;\n color: ${mainFontColor};\n border-width: 0;\n position: relative;\n font-size: 16px;\n padding: 14px;\n text-align: left;\n cursor: pointer;\n transition: .3s;\n\n &:after {\n content: \"\";\n width: 18px;\n height: 18px;\n border-radius: 50%;\n background-color: #A4DAFF;\n position: absolute;\n top: 50%;\n right: 10px;\n transform: translateY(-50%);\n opacity: 0;\n transition: .3s;\n }\n\n &:hover {\n background-color: #EDF8FF;\n &:after {\n opacity: 1;\n }\n }\n\n &[aria-selected=\"true\"] {\n background-color: #DBF1FF;\n &:after {\n background-image: url(\"data:image/svg+xml,%3Csvg width='18' height='18' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='9' cy='9' r='9' fill='%23FFF'/%3E%3Cpath d='m5.625 10 2.8125 2.25 4.5-5.625' stroke='%2309F' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E\");\n background-color: #DBF1FF;\n background-position: center;\n background-repeat: no-repeat;\n opacity: 1;\n }\n }\n }\n }\n\n .appStatus-disabledOnADay-timezone & {\n .dropdown-button {\n padding: 14px 46px 14px 10px;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n width: 150px;\n\n @media screen and (min-width: 481px) and (max-width: 768px) {\n width: 225px;\n }\n }\n\n input[type=\"search\"] {\n width: 287px;\n padding: 10px 10px 10px 36px;\n border: 1px solid #D8DAE9;\n border-radius: 0 4px 0 0;\n background-image: url(\"data:image/svg+xml,%3Csvg width='12' height='12' viewBox='0 0 12 12' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M4.47432\n 1.49974c1.64444 0 2.9826 1.34575 2.9826 2.99989 0 .6231-.19111 1.22257-.55307 1.73387l-.29362.4147-.41216.29488c-.50835.36407-1.10445.55645-1.72375.55645-1.64486\n 0-2.9826-1.34576-2.9826-2.9999 0-1.65414 1.33774-2.99989 2.9826-2.99989zm0-1.49974C2.00302 0 0 2.01484 0 4.50005c0 2.48522 2.00302 4.50006 4.47432 4.50006.96565\n 0 1.85748-.31092 2.58815-.83403l3.59303 3.61372c.146.1468.3371.2202.5286.2202.1915 0 .3822-.0734.5282-.2202.2919-.2932.2919-.7691 0-1.0623L8.11925\n 7.10382c.52016-.73532.82897-1.63221.82897-2.60335 0-2.48521-2.00303-4.50004811-4.4739-4.50004811V0z' fill='%238D8FA6'/%3E%3C/svg%3E\"); background-repeat: no-repeat;\n background-position: 15px center;\n\n .dropdown-button & {\n border-bottom: none;\n padding-bottom: 10px;\n }\n }\n\n .dropdown-container {\n list-style: none;\n margin: 0;\n height: calc(250px + (1.7rem / 2));\n overflow-y: scroll;\n padding-right: 0px;\n padding-left: 0px;\n width: 285px;\n box-sizing: content-box;\n border-radius: 0 0 4px 4px;\n }\n }\n`;\n/* eslint-enable max-len */\n","import React, { Suspense, memo } from 'react';\nimport { safeLazy } from '@jotforminc/safe-lazy-import';\nimport { Loading } from '../Loading';\n\nconst LibIconSelector = safeLazy(() => import(/* webpackChunkName: \"IconSelector\" */'../Lib/IconSelector'));\n\nconst IconSelector = props => {\n return (\n }>\n \n \n );\n};\n\nexport default memo(IconSelector);\n","\n \n\n","import React, { memo } from 'react';\nimport { bool, elementType, string } from 'prop-types';\nimport { IconImageBrokenFilled } from '@jotforminc/svg-icons';\nimport '../item-image.scss';\n\nconst NoImage = ({ altText, showAltText, PlaceholderRenderer }) => {\n return (\n
    \n \n {altText && showAltText &&
    {altText}
    }\n
    \n );\n};\n\nNoImage.propTypes = {\n altText: string,\n showAltText: bool,\n PlaceholderRenderer: elementType\n};\n\nNoImage.defaultProps = {\n altText: '',\n showAltText: true,\n PlaceholderRenderer: IconImageBrokenFilled\n};\n\nexport default memo(NoImage);\n","import {\n bool, elementType, string\n} from 'prop-types';\nimport React, { memo, useEffect, useState } from 'react';\nimport NoImage from './NoImage';\n\nconst Image = ({\n imageURL, altText, showAltTextActiveOnError, PlaceholderRenderer\n}) => {\n const [useFallback, setUseFallback] = useState(false);\n\n useEffect(() => {\n setUseFallback(false);\n }, [imageURL]);\n\n if (useFallback) {\n return ;\n }\n\n return (\n { setUseFallback(true); }}\n className=\"imageElementImg\"\n />\n );\n};\n\nImage.propTypes = {\n imageURL: string,\n altText: string,\n showAltTextActiveOnError: bool,\n PlaceholderRenderer: elementType\n};\n\nImage.defaultProps = {\n imageURL: '',\n altText: '',\n showAltTextActiveOnError: true,\n PlaceholderRenderer: undefined\n};\n\nexport default memo(Image);\n","import React from 'react';\nimport SimpleItem from '../SimpleItem/SimpleItem';\n\nconst FormItem = props => ;\n\nexport default FormItem;\n","import React from 'react';\nimport { SVGIcon as SVGIconLib } from '@jotforminc/icon-selector';\nimport PropTypes from 'prop-types';\nimport { changeDomainWithCurrent } from '../../utils';\n\nconst SVGIcon = ({ url, ...props }) => ;\n\nSVGIcon.propTypes = {\n url: PropTypes.string.isRequired\n};\n\nexport default SVGIcon;\n","import Styled, { css } from 'styled-components';\n\nconst dimension = '44px';\nconst largeDimension = '100px';\n\nexport const ScItemIcon = Styled.div`\n min-width: ${dimension};\n height: ${dimension};\n margin: 0 8px;\n border-radius: 4px;\n display: flex;\n align-self: center;\n pointer-events: none;\n ${({ backgroundColor }) => (backgroundColor ? `\n background-color: ${backgroundColor};\n ` : '')}\n position: relative;\n\n & > div {\n width: 35px;\n height: 35px;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n\n svg {\n ${({ iconColor }) => (iconColor ? `\n fill: ${iconColor};\n ` : '')}\n }\n\n img {\n width: 100%;\n }\n }\n\n ${({ elementSize }) => (elementSize === 'large' && css`\n min-width: ${largeDimension};\n height: ${largeDimension};\n\n & > div {\n width: 68px;\n height: 68px;\n }\n `)};\n\n ${({ itemTextAlignment }) => {\n switch (itemTextAlignment) {\n case 'left':\n return 'margin: 0 16px 0 0;';\n case 'center':\n return 'margin: 0 0 8px 0;';\n case 'right':\n return 'margin: 0 0 0 16px;';\n default:\n return '';\n }\n }}\n`;\n","import React, { useMemo } from 'react';\nimport { bool, string } from 'prop-types';\nimport SVGIcon from '../../SVGIcon';\nimport { ITEM_TYPES } from '../../../constants/itemTypes';\nimport { getDocumentType } from '../../../utils';\nimport { ScItemIcon } from '../../ItemIcon/scItemIcon';\nimport { ITEM_ICONS, RESOURCE_SELECTION_ICONS } from '../../../constants';\nimport { FEATURE_NAMES } from '../../../constants/features';\nimport { isFeatureEnabled } from '../../../utils/features/helper';\n\nexport const typeHasItem = type => Object.keys(ITEM_ICONS).includes(type);\n\nconst SimpleIcon = ({\n iconURL, itemType, fileType, itemTextAlignment, itemIconBgColor, itemIconColor, elementSize, useResourceSelectionIcons, iconClassName\n}) => {\n if (!typeHasItem(itemType)) return null;\n\n const isFullIconUrlEnabled = isFeatureEnabled(FEATURE_NAMES.FullIconUrl);\n const url = isFullIconUrlEnabled ? `https://cdn.jotfor.ms${iconURL}` : iconURL;\n\n const iconProps = useResourceSelectionIcons ? RESOURCE_SELECTION_ICONS[itemType] : (\n itemType === ITEM_TYPES.DOCUMENT\n ? ITEM_ICONS[itemType][getDocumentType(fileType)]\n : ITEM_ICONS[itemType]\n ) || {};\n const { Icon, bgColor } = iconProps;\n const ItemIcon = useMemo(() => (iconURL ? : ), [iconURL, Icon]);\n if (!ItemIcon) return null;\n\n return (\n \n
    \n {ItemIcon}\n
    \n \n );\n};\n\nSimpleIcon.propTypes = {\n iconURL: string,\n itemType: string,\n fileType: string,\n itemTextAlignment: string,\n itemIconBgColor: string,\n itemIconColor: string,\n elementSize: string,\n useResourceSelectionIcons: bool,\n iconClassName: string\n};\n\nSimpleIcon.defaultProps = {\n iconURL: '',\n itemType: '',\n fileType: '',\n itemTextAlignment: '',\n itemIconBgColor: '',\n itemIconColor: '',\n elementSize: '',\n useResourceSelectionIcons: false,\n iconClassName: ''\n};\n\nexport default SimpleIcon;\n","import React, { useCallback, useMemo } from 'react';\nimport {\n elementType, bool, string, node\n} from 'prop-types';\nimport { checkMobilePhone, sanitizeHTML } from '../../../utils';\nimport { DefaultDivRenderer } from '../defaultRenderers';\nimport { withContentWrapper } from '../withContentWrapper';\n\nconst SimpleItem = ({\n TitleRenderer, DescriptionRenderer,\n showIcon, IconRenderer,\n title, description,\n badge, iconClassName\n}) => {\n const isMobile = checkMobilePhone();\n // Consider twice while adding prop!\n const contentPart = useMemo(withContentWrapper(() => (\n <>\n {sanitizeHTML(title)}\n {sanitizeHTML(description)}\n {isMobile ? badge : null}\n \n )), [title, description, DescriptionRenderer, badge]); // In any case of extra render; consider use individually memoed components\n\n const Wrapper = useCallback(props => {\n const wrapperClassName = showIcon ? 'withIconItemContent' : 'withBadgeItemContent';\n return (!showIcon && !badge) ? (\n // eslint-disable-next-line react/prop-types\n <>{props.children}\n ) : (\n
    \n );\n }, [showIcon, badge]);\n\n const iconPart = useMemo(() => showIcon && (\n \n ), [showIcon, IconRenderer]);\n\n const badgePart = useMemo(() => !!badge && !isMobile && badge);\n\n return (\n \n {iconPart}\n {contentPart}\n {badgePart}\n \n );\n};\n\nSimpleItem.propTypes = {\n title: string,\n description: string,\n showIcon: bool,\n IconRenderer: elementType,\n TitleRenderer: elementType,\n DescriptionRenderer: elementType,\n badge: node,\n iconClassName: string\n};\nSimpleItem.defaultProps = {\n title: '',\n description: '',\n showIcon: false,\n IconRenderer: null,\n TitleRenderer: DefaultDivRenderer,\n DescriptionRenderer: DefaultDivRenderer,\n badge: undefined,\n iconClassName: ''\n};\n\nexport default SimpleItem;\n","import React from 'react';\n\nexport const DefaultDivRenderer = ({ ...props }) =>
    ;\n","import React from 'react';\n\nexport const withContentWrapper = WrappedComponent => props => (\n
    \n \n
    \n);\n","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport SELECTORS from '../../../store/selectors';\n\nconst DefaultStartElement = () => {\n const { listBgColor, appBgColor } = useSelector(SELECTORS.getAppInfoWithDefaults);\n const { id: themeId } = useSelector(SELECTORS.getSelectedAppTheme) || {};\n const defaultColors = { background: appBgColor, icon: listBgColor };\n\n const getSvgColors = theme => {\n switch (theme) {\n case 'shadow':\n return { background: listBgColor, icon: appBgColor };\n case 'default':\n return { background: '#E3E5F5', icon: '#6C73A8' };\n default:\n return defaultColors;\n }\n };\n\n const svgColors = themeId ? getSvgColors(themeId) : defaultColors;\n\n return (\n \n \n \n \n );\n};\n\nexport default DefaultStartElement;\n","/* eslint-disable react/prop-types */\nimport React from 'react';\nimport { t } from '@jotforminc/translation';\nimport { OPTION_VALUES, SIDE_SELECTION_DEFAULTS } from '../../modules/Builder/components/HomePage/RightPanel/ListItemSideItemSelection/constants';\nimport SvgRenderer from '../common/SvgRenderer';\nimport { changeDomainWithCurrent, sanitizeHTML } from '../../utils';\nimport { ScIconWrapper } from './styled';\nimport DefaultImage from './DefaultImage';\n\nexport const VALUE_BOUNDED_OPTIONS = {\n [OPTION_VALUES.ICON]: { props: ['url', 'svgRef'] },\n [OPTION_VALUES.BUTTON]: { props: ['text'] }\n};\n\nexport const getSideElementProps = (isEnd = false) => ({\n [OPTION_VALUES.ICON]: {\n style: isEnd ? { width: 20, height: 20 } : { width: 36, height: 36 }\n }\n});\n\nexport const sideOptionRenderer = ({ type, data }, isEnd = false) => {\n const boundedProps = VALUE_BOUNDED_OPTIONS[type];\n const checkStrategy = boundedProps?.checkEvery ? 'every' : 'some';\n if (boundedProps && !boundedProps.props?.[checkStrategy](key => !!data?.[key])) {\n return null;\n }\n\n const staticProps = getSideElementProps(isEnd)[type];\n\n switch (type) {\n case OPTION_VALUES.IMAGE: {\n // eslint-disable-next-line jsx-a11y/alt-text\n return () => (\n <>\n {\n data === SIDE_SELECTION_DEFAULTS[type]\n ? \n : {t('list\n }\n \n );\n }\n\n case OPTION_VALUES.AVATAR: {\n return () => (\n
    \n {\n data === SIDE_SELECTION_DEFAULTS[type]\n ? \n : {t('list\n }\n
    \n );\n }\n\n case OPTION_VALUES.ICON: {\n return ({ colorScheme }) => {\n return (\n \n \n \n );\n };\n }\n\n case OPTION_VALUES.CUSTOM_TEXT: {\n return ({ onPropChange, TitleRenderer }) => (\n onPropChange({ text: val }),\n characterLimit: 15\n }}\n >\n {sanitizeHTML(data?.text)}\n \n );\n }\n\n case OPTION_VALUES.BUTTON: {\n return ({ onPropChange, TitleRenderer }) => {\n return (\n onPropChange({ text: val }),\n characterLimit: 20\n }\n }\n >\n {sanitizeHTML(data?.text)}\n \n );\n };\n }\n\n default:\n return null;\n }\n};\n","import styled from 'styled-components';\n\nexport const ScListItemContainer = styled.div`\n display: flex;\n align-items: center;\n width: 100%;\n`;\n\nexport const ScSideElementContainer = styled.div`\n display: flex;\n flex-shrink: 0;\n font-size: 14px;\n align-items: center;\n justify-content: center;\n margin-left: ${props => (!props.isStartElement ? 'auto' : '')};\n margin-right: ${props => (props.isStartElement ? '16px' : '')};\n`;\n\nexport const ScIconWrapper = styled.div`\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n ${({ bgColor }) => (bgColor ? `background-color: ${bgColor};` : '')}\n ${({ bgColor }) => (bgColor ? 'border-radius: 4px;' : '')}\n`;\n","import React from 'react';\nimport Styled, { css } from 'styled-components';\n\nconst ScLoadingFrame = Styled.div`\n height: 99%;\n padding: 1em;\n display: flex;\n align-items: center;\n justify-content: center;\n\n ${({ isPreview }) => isPreview && css`\n position: absolute;\n width: 100%;\n z-index: 1;\n background-color: #fff;\n `}\n`;\n\nconst ScLoadingCircle = Styled.div`\n @keyframes spinz { to { transform: rotate(360deg); } }\n\n width: 26px;\n height: 26px;\n flex-shrink: 0;\n border-radius: 50%;\n border-width: 3px;\n border-style: solid;\n border-color: #d9d7e2 #d9d7e2 #d9d7e2 #8583a9;\n z-index: 2;\n font-size: 0;\n animation: spinz 1s cubic-bezier(0.49, 0.95, 0.46, 0.08) infinite forwards;\n`;\n\nexport function Loading(props) { // I think we need to add this to common.\n return (\n \n \n \n );\n}\n","import Styled from 'styled-components';\n\nexport const ScErrorFallback = Styled.div`\n padding: 1em;\n\n .errorFallback-text {\n margin-bottom: 16px;\n color: #fff;\n }\n\n .errorFallback-label {\n display: inline-block;\n width: auto;\n font-size: 1em;\n font-weight: 500;\n font-stretch: normal;\n font-style: normal;\n line-height: normal;\n letter-spacing: -0.2px;\n margin-bottom: 0.4em;\n color: #fff;\n }\n\n .errorFallback-textarea {\n outline: none;\n background-color: rgb(72, 80, 104);\n width: 100%;\n color: rgb(255, 255, 255);\n border: none;\n border-radius: 2px;\n padding: 9px 12px 22px 9px;\n font-size: 16px;\n font-family: inherit;\n box-shadow: rgb(36 43 62) 0px 0px 0px 1px;\n margin-bottom: 0.4em;\n }\n`;\n","import React, { useCallback, useState } from 'react';\nimport { func, shape } from 'prop-types';\nimport { t } from '@jotforminc/translation';\nimport { Button } from '@jotforminc/magnet';\nimport { Feature } from '@jotforminc/feature-toggle';\nimport { FEATURE_NAMES } from '../../constants/features';\nimport { ScErrorFallback } from './ScErrorFallback';\n\nconst DefaultErrorFallback = ({ error, resetErrorBoundary }) => {\n const [feedbackValue, setFeedbackValue] = useState('');\n const handleValueChange = useCallback(e => {\n setFeedbackValue(e.target.value);\n }, []);\n\n const handleSubmit = useCallback(() => {\n console.log('Report to phoenix', error);\n resetErrorBoundary();\n }, [feedbackValue]);\n return (\n \n

    {t('An unexpected error occurred.')}

    \n \n
    {t('Can you elaborate what were you trying to do?')}
    \n \n \n \n )}\n />\n
    \n );\n};\n\nDefaultErrorFallback.propTypes = {\n error: shape({}),\n resetErrorBoundary: func\n};\n\nDefaultErrorFallback.defaultProps = {\n error: {},\n resetErrorBoundary: f => f\n};\n\nexport default DefaultErrorFallback;\n","import React, { useCallback } from 'react';\nimport {\n arrayOf, elementType, any, func\n} from 'prop-types';\nimport { ErrorBoundary } from 'react-error-boundary';\n\nimport { renderable } from '../../constants/propTypes';\nimport DefaultErrorFallback from './DefaultErrorFallback';\nimport { captureException } from '../../utils';\n\nconst PortalErrorBoundary = ({\n Fallback, children, resetKeys, onReset\n}) => {\n const handleError = useCallback((error, info) => {\n console.log('PORTAL ERROR', { error, info });\n captureException(error);\n }, []);\n return (\n \n {children}\n \n );\n};\n\nPortalErrorBoundary.propTypes = {\n children: renderable.isRequired,\n Fallback: elementType,\n resetKeys: arrayOf(any),\n onReset: func\n};\n\nPortalErrorBoundary.defaultProps = {\n Fallback: DefaultErrorFallback,\n resetKeys: [],\n onReset: f => f\n};\n\nexport default PortalErrorBoundary;\n","import Styled from 'styled-components';\nimport { mainFont } from '../../styles/global';\n\nexport const ScFileUpload = Styled.div`\nwidth: 100%;\ndisplay: block;\n\n.imageUpload {\n .tabMenu {\n display: none;\n }\n\n .tabContent {\n padding: 0;\n\n .cardNew {\n border: none;\n min-height: fit-content;\n\n &-leftSide {\n max-width: 140px;\n flex: none;\n\n img {\n width: 120px;\n min-height: 120px;\n max-height: 120px;\n object-fit: contain;\n }\n }\n\n &-rightSide {\n max-width: calc(100% - 140px);\n flex: none;\n\n .cardNew-content {\n white-space: nowrap;\n margin-top: 0;\n\n &-fileName {\n width: 100%;\n color: #fff;\n }\n\n &-fileSize {\n font-size: 12px;\n color: rgba(255, 255, 255, 0.4)\n }\n\n &-button {\n color: #e39045;\n }\n }\n }\n }\n\n .appItem & {\n padding: 14px 28px;\n }\n }\n\n .fileUpload {\n color: #afc2da;\n background-color: transparent;\n color: #23283a;\n\n .appItem & {\n margin-top: 0;\n }\n }\n}\n\n.imageUpload.isTransparent {\n background-color: #fff9;\n\n .tabContent {\n .appItem & {\n padding: 0;\n }\n\n .fileUpload {\n color: #afc2da;\n background-color: transparent;\n color: #23283a;\n height: 150px;\n\n .appItem & {\n margin-top: 0;\n }\n\n &-verticalAlign {\n form#myForm {\n padding: 12px;\n }\n\n &.stage {\n .inlineUploadIcon {\n display: flex;\n }\n }\n\n &-text {\n font-size: 12px;\n user-select: none;\n\n &-loader {\n border: 3px solid #c3cad8;\n border-top: 3px solid #949eb2;\n }\n\n &-loading {\n font-size: 14px;\n font-family: ${mainFont};\n }\n }\n }\n }\n }\n}\n`;\n","import { shape, string } from 'prop-types';\nimport React from 'react';\n\nimport { ITEM_ICONS } from '../../constants';\nimport { DOCUMENT_ITEM_TYPES, ITEM_TYPES } from '../../constants/itemTypes';\nimport { getDocumentType } from '../../utils';\n\nconst Thumbnail = ({ file: { type, url } }) => {\n const iconType = getDocumentType(type);\n\n const renderIconProps = () => ITEM_ICONS[ITEM_TYPES.DOCUMENT][DOCUMENT_ITEM_TYPES.PLACEHOLDER];\n\n const renderThumbnail = () => {\n if (iconType === DOCUMENT_ITEM_TYPES.IMG) {\n return \"file_preview_thumbnail_alternative\";\n }\n const { Icon } = renderIconProps();\n const DocumentIcon = props => Icon(props);\n return (\n
    \n \n
    \n );\n };\n return renderThumbnail();\n};\n\nThumbnail.propTypes = {\n file: shape({\n name: string,\n type: string\n })\n};\n\nThumbnail.defaultProps = {\n file: {}\n};\n\nexport default Thumbnail;\n","import React, { useCallback, useRef } from 'react';\nimport { bool, func, string } from 'prop-types';\nimport { Button } from '@jotforminc/magnet';\nimport { IconImageArrowUpFilled } from '@jotforminc/svg-icons';\nimport { Utils } from '@jotforminc/uikit';\nimport { isMultiSelection } from '../../utils';\n\nconst FileInput = ({\n putFileInput, translate, buttonText, onClick, ...inputProps\n}) => {\n const inputRef = useRef();\n const isBrowserMsEdge = global.isMsEdge && global.isMsEdge === true;\n const htmlFor = isBrowserMsEdge ? 'dummyHtmlForElement' : null;\n const handleLabelClick = () => isBrowserMsEdge && inputRef.current && inputRef.current.click();\n const handlelInputClick = useCallback(e => {\n const multipleSelectionMode = isMultiSelection(e);\n if (!multipleSelectionMode) return onClick(e);\n\n e.preventDefault();\n }, []);\n\n const handleLabelKeyDown = event => Utils.isPressedKeyEnterOrSpace(event) && handleLabelClick();\n const onUploadBtnClick = () => inputRef.current.click();\n\n return (\n <>\n {\n handleLabelClick();\n onUploadBtnClick();\n }}\n onKeyDown={handleLabelKeyDown}\n startIcon={IconImageArrowUpFilled}\n className='fileInputBtn min-h-8 h-auto py-3 text-capitalize'\n type='button'\n >\n {translate(buttonText)}\n \n {putFileInput && (\n \n )}\n \n );\n /* eslint-enable */\n};\n\nFileInput.propTypes = {\n buttonText: string,\n putFileInput: bool,\n translate: func,\n onClick: func\n};\n\nFileInput.defaultProps = {\n buttonText: 'Upload File',\n putFileInput: true,\n translate: f => f,\n onClick: f => f\n};\n\nexport default FileInput;\n","import React from 'react';\nimport { Loader } from '@jotforminc/magnet';\nimport { func } from 'prop-types';\n\nconst FileLoadingRenderer = ({ translate }) => {\n return (\n
    \n \n
    \n {translate('Uploading')}\n ...\n
    \n
    \n );\n};\n\nFileLoadingRenderer.propTypes = {\n translate: func\n};\n\nFileLoadingRenderer.defaultProps = {\n translate: f => f\n};\n\nexport default FileLoadingRenderer;\n","import React from 'react';\nimport {\n bool, elementType, func, shape, string\n} from 'prop-types';\nimport { t } from '@jotforminc/translation';\nimport { ImageUpload as CommonFileUpload } from '@jotforminc/image-upload';\nimport { ScFileUpload } from './scFileUpload';\nimport Thumbnail from './Thumbnail';\nimport FileInput from './FileInputRenderer';\nimport FileLoadingRenderer from './FileLoadingRenderer';\n\nconst PortalFileUpload = ({\n onFileUpload, onFileRemove, onFileUploading, theme, isFileUploading, value, onFileUploadError, TextWrapperRenderer,\n inputButtonText, allowedFileTypes, allowImageUpload\n}) => {\n return (\n \n onFileUpload(val)}\n renderTabs={['upload']}\n theme={theme}\n useAPI={true}\n forceSelect={false}\n allowedTypes={allowedFileTypes}\n allowImageUpload={allowImageUpload}\n onFileUploading={val => onFileUploading(val)}\n onFileRemove={() => onFileRemove()}\n isFileUploading={isFileUploading}\n removeButtonText={t('Remove File')}\n PreviewThumbnail={Thumbnail}\n FileInputRenderer={FileInput}\n mode=\"FileUpload\"\n onFileUploadError={onFileUploadError}\n {...!isFileUploading && {\n TextWrapperRenderer: TextWrapperRenderer\n }}\n inputButtonText={inputButtonText}\n ImageLoadingScreenRenderer={FileLoadingRenderer}\n />\n \n );\n};\n\nPortalFileUpload.propTypes = {\n onFileUpload: func,\n onFileRemove: func,\n onFileUploading: func,\n theme: string,\n isFileUploading: bool,\n value: shape({\n name: string,\n type: string,\n url: string,\n size: string\n }),\n onFileUploadError: func,\n TextWrapperRenderer: elementType,\n inputButtonText: string,\n allowedFileTypes: string,\n allowImageUpload: bool\n};\n\nPortalFileUpload.defaultProps = {\n onFileUpload: f => f,\n onFileRemove: f => f,\n onFileUploading: f => f,\n theme: 'isDark',\n isFileUploading: false,\n value: {},\n onFileUploadError: f => f,\n TextWrapperRenderer: undefined,\n inputButtonText: undefined,\n allowedFileTypes: '',\n allowImageUpload: false\n};\n\nexport default PortalFileUpload;\n","/* eslint-disable react/prop-types */\nimport React from 'react';\nimport Styled from 'styled-components';\nimport Container from '../Container';\n\nexport const LoaderSvg = Styled.svg`\nwidth: 100%;\nheight: 100%;\n.line {\n stroke-linecap: round;\n stroke-linejoin: round;\n stroke-width: 17px;\n stroke-dasharray: 0, 10px;\n stroke-dashoffset: -8px;\n animation-name: lineAnim1;\n animation-fill-mode: backwards;\n animation-duration: 0.5s;\n animation-direction: alternate;\n animation-iteration-count: infinite;\n animation-timing-function: ease-in-out;\n}\n.line2 {\n animation-delay: 0.1s;\n}\n.line3 {\n animation-delay: 0.2s;\n}\n@keyframes lineAnim1 {\n 0% {\n stroke-dasharray: 0, 18px;\n stroke-dashoffset: -8px;\n }\n 100% {\n stroke-dasharray: 18px;\n stroke-dashoffset: 0;\n }\n}\n`;\n\nconst Loader = ({ size, className }) => {\n return (\n \n \n \n \n \n \n \n );\n};\n\nexport default Loader;\n","import React from 'react';\nimport { DotsLoader } from '@jotforminc/apploaders';\nimport Styled from 'styled-components';\n\nconst ScContainer = Styled.div`\n width: 100%;\n height: 100%;\n\n display: flex;\n justify-content: center;\n align-items: center;\n`;\n\nconst PublicAppLoading = () => {\n return (\n \n \n \n );\n};\n\nexport default PublicAppLoading;\n","import {\n func, number, oneOfType, string\n} from 'prop-types';\nimport React from 'react';\nimport Styled from 'styled-components';\n\nconst ScRangeInput = Styled.div`\n width: 100%;\n border: 1px solid #303339;\n box-shadow: rgb(86 70 50 / 10%) 0px 2px 4px;\n border-radius: 4px;\n background-color: var(--jfv-panel-right-item-background);\n padding: 9px 15px;\n\n input[type=range] {\n height: 28px;\n appearance: none;\n width: 100%;\n padding: 0;\n }\n\n input[type=range]:focus {\n outline: none;\n }\n\n input[type=range]::-webkit-slider-runnable-track {\n width: 100%;\n height: 4px;\n cursor: pointer;\n animate: 0.2s;\n box-shadow: 0px 0px 0px #000000;\n background: #8B919E;\n border-radius: 4px;\n border: 0px solid #000000;\n }\n\n input[type=range]::-webkit-slider-thumb {\n box-shadow: 0px 0px 0px #000000;\n height: 28px;\n width: 28px;\n border-radius: 25px;\n background: #FFFFFF;\n cursor: pointer;\n appearance: none;\n margin-top: -12px;\n }\n\n${({ rangeValue }) => (rangeValue && `\n input[type=range]::-webkit-slider-runnable-track {\n --ratio: calc((${rangeValue} - 1) / 99);\n --sx: calc(0.5 * 28px + var(--ratio) * (100% - 28px));\n }\n\n input[type=range]::-webkit-slider-runnable-track {\n background: linear-gradient(#0099FF,#0099FF) 0/var(--sx) 100% no-repeat, #8B919E;\n }\n`)}}\n\n input[type=range]::-moz-range-track {\n width: 100%;\n height: 4px;\n cursor: pointer;\n animate: 0.2s;\n box-shadow: 0px 0px 0px #000000;\n background: #8B919E;\n border-radius: 4px;\n border: 0px solid #000000;\n }\n\n input[type=range]::-moz-range-thumb {\n box-shadow: 0px 0px 0px #000000;\n height: 28px;\n width: 28px;\n border-radius: 25px;\n border-color: white;\n background: #FFFFFF;\n cursor: pointer;\n appearance: none;\n margin-top: -12px;\n }\n\n ${({ rangeValue }) => (rangeValue && `\n input[type=range]::-moz-range-track {\n --ratio: calc((${rangeValue} - 1) / 99);\n --sx: calc(0.5 * 28px + var(--ratio) * (100% - 28px));\n }\n\n input[type=range]::-moz-range-track {\n background: linear-gradient(#0099FF,#0099FF) 0/var(--sx) 100% no-repeat, #8B919E;\n }\n`)}}\n`;\n\nconst RangeSlider = ({\n value,\n onChange\n}) => {\n const handleChange = ({ target: { value: newValue } }) => onChange(newValue);\n\n return (\n \n \n \n );\n};\n\nRangeSlider.propTypes = {\n value: oneOfType([number, string]),\n onChange: func\n};\n\nRangeSlider.defaultProps = {\n value: 0,\n onChange: f => f\n};\n\nexport default RangeSlider;\n","import React, { useCallback } from 'react';\nimport { useDispatch } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { Button } from '@jotforminc/magnet';\nimport * as ACTION_CREATORS from '../../store/actionCreators';\nimport { MODALS } from '../../constants/modals';\n\nconst ReplaceFormButton = ({ formID: currentFormID, ...props }) => {\n const dispatch = useDispatch();\n\n const handleSelectForm = useCallback(([formID]) => dispatch(ACTION_CREATORS.replaceFormItemAction({ itemID: currentFormID, formID })), [currentFormID]);\n\n const handleChangeResourceClick = useCallback(e => {\n e.stopPropagation();\n dispatch(ACTION_CREATORS.showGenericModalAction({\n name: MODALS.FORM_PICKER_MODAL,\n onConfirm: handleSelectForm,\n initialSelectedForms: [currentFormID],\n isChangeFormAction: true,\n isMultiSelect: false\n }));\n }, [handleSelectForm, currentFormID]);\n\n return (\n \n );\n};\n\nReplaceFormButton.propTypes = {\n formID: PropTypes.string.isRequired\n};\n\nexport default ReplaceFormButton;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { renderable } from '../../constants/propTypes';\n\nconst TetheredWrapper = ({ hasWrapper, children, Wrapper }) => (hasWrapper ? {children} : children);\n\nTetheredWrapper.propTypes = {\n hasWrapper: PropTypes.bool.isRequired,\n children: renderable.isRequired,\n Wrapper: PropTypes.elementType.isRequired\n};\n\nexport default TetheredWrapper;\n","import React from 'react';\nimport propTypes from 'prop-types';\nimport { SVGIcon } from '@jotforminc/icon-selector';\nimport appConfig from '../../constants/appConfig';\n\nconst SvgRenderer = ({\n svgRef, iconColor, url, style\n}) => {\n const isIconSpriteLoaded = !!document.getElementById(appConfig.svgIconsContainer);\n const buildr = isIconSpriteLoaded && svgRef;\n\n if (buildr) {\n return (\n \n \n \n );\n }\n return (\n \n );\n};\n\nSvgRenderer.propTypes = {\n svgRef: propTypes.string,\n url: propTypes.string,\n iconColor: propTypes.string,\n style: propTypes.object\n};\n\nSvgRenderer.defaultProps = {\n svgRef: '',\n url: '',\n iconColor: '',\n style: {}\n};\n\nexport default SvgRenderer;\n","import { getAppPath as jfGetBasePath } from '@jotforminc/router-bridge';\n\nimport { isAppSubdomain } from '../utils';\n\nconst appTemplatesPreviewPrefix = '/app-templates/preview/app';\nexport const getBasePath = () => {\n const basePath = jfGetBasePath();\n const appSlug = window?.__appSlug;\n const userSlug = window?.__userSlug;\n const isStandaloneWithSlug = window?.isStandaloneWithSlug;\n const isAppJotform = isAppSubdomain();\n switch (true) {\n case isAppJotform && isStandaloneWithSlug:\n return `/${userSlug}/${appSlug}`;\n case isAppJotform:\n return '/';\n case window.location.href.includes(appTemplatesPreviewPrefix):\n return appTemplatesPreviewPrefix;\n case isStandaloneWithSlug:\n return `${basePath}/${userSlug}/${appSlug}`;\n default:\n return basePath;\n }\n};\n\nexport default {\n basePath: getBasePath(),\n svgIconsContainer: 'app-icons',\n builderToasterContainerID: 'builderPortalToaster',\n publicToasterContainerID: 'publicPortalToaster',\n sentryURL: 'https://36d29a013f8a4bd7adfe310f5fe4d75a@o61806.ingest.sentry.io/5223511',\n embeddedAppQS: 'appEmbedded=1'\n};\n","\n \n\n","\n \n\n","\n \n\n","\n \n\n","\n \n\n","import React from 'react';\nimport {\n IconImagesFilled, IconImageSliderFilled, IconVideoFilled, IconMapLocationPinFilled, IconShareNodesFilled, IconMessageStarFilled, IconSpacerVerticalFilled\n} from '@jotforminc/svg-icons';\n\nexport const overriddenFeaturedWidgetPropertiesMap = {\n '529cd0ea8afa8f742d000004': { icon: () => }, // Image Slider\n '0fff4c94790070b09933edd8': { icon: () => , name: 'Map' }, // Open Street Map\n '529260f705a7114f70000008': { icon: () => }, // Social Follow\n '592d0b6764f0c37320000472': { icon: () => , name: 'Testimonial' }, // Testimonials\n '5273bb4faa80af0979000005': { icon: () => , name: 'Video' }, // Youtube\n '528ea7c6a4de152e2a00000b': { icon: () => , name: 'Spacer' }, // Spacer\n '12e02d58a07168bd32df509c': { icon: () => , name: 'Image Gallery' } // Image Gallery\n};\n\nexport const FeaturedWidgetIDs = [\n '12e02d58a07168bd32df509c', // Image Gallery\n '529cd0ea8afa8f742d000004', // Image Slider\n '5273bb4faa80af0979000005', // YouTube\n '0fff4c94790070b09933edd8', // Open Street Map\n '529260f705a7114f70000008', // Social Follow\n '592d0b6764f0c37320000472' // Testimonials\n];\n\nexport const PageElementWidgetIDs = [\n '528ea7c6a4de152e2a00000b' // Spacer\n];\n\nexport const OtherWidgetIDs = [\n '5297606bfe8fa6bf0d000016', // Data Grid\n '529641beb15ce2ac76000007', // PDF Embedder\n '5293065005a7114f7000002a', // Fit Text\n '5295629cba137d764f000004', // Iframe Embed\n '53ba6d90e4c0226c7a000007', // Facebook Like Box\n '5272130bf9879ec031000017', // Instagram\n '5374688fa2c8bddc16000019', // Show Map Location\n '52900b6557a7644251000004', // QR Code\n '529d9a5c4b5cd3fd5a000005', // Animated Heading\n 'e5cea8c176512adc41b76621', // Whatsapp\n '5272055ff9879ec031000008', // SoundCloud\n '528ef93577d598b430000010', // Countdown\n '5298b86b81b4577459000026', // Day Countdown\n '526a2cd08a881e882100000c', // Vimeo\n '529d9f15f3d08cfe5d000004', // Cool Caption\n '5295bb771a667c525e000007', // Kinomap\n '5295bdbba3ba8bd35e000004', // Photozou\n '54c10483b90217b7300000b7', // Basic Separator\n '529333ae5b04b0c007000004', // Fancy Timer\n '52722f603e8f4eec31000031', // Twitter\n '52945520dacb3d5320000015', // Ticker\n '5293852fb05330801c000004', // Big Header (City)\n '527210b1f9879ec03100000e', // Spotify\n '56a707d26f2fcf1a7b000004', // Comparison Slider\n '587cd59512ec8eda4b000004', // Cincopa DeepUploader\n '537ddad0f080c17a6d000086', // AutoScrolling Text\n '52722eb93e8f4eec3100002e', // PasteBin\n '5295afd37da55cb758000008', // 23 Video\n '5295ba2b4a87e6175e000004', // Giphy\n '5293030905a7114f70000027', // Digital Clock\n '5295bc6528947a7d5e000004', // LogoTV\n '526a318cdeab09892100001c', // Animoto\n '52971c2431357d3907000011', // Draw.io Embedder\n '528ed87181616a2f2a00001e', // Skype Call Button\n '527261883e8f4eec31000035', // Sketchfab\n '5294a0b8bf38bd4034000007', // Chuck Norris Jokes\n '52945fef3477f3512000001a', // Big Header (Chubby)\n '529cb40bcffa1df571000004', // Quotes\n '529cf1de381e0e8840000004', // Arc Text\n '5298b2a88868157559000021', // Math Graphs\n '526a2d72deab09892100000d', // Dotsub\n '526a2dbf8a881e882100000f', // Funny or Die\n '5295c144a9770db75f000004', // WordPress TV\n '5295bf984d4ed6385f000004', // TED\n '52a6ccdafbe985206800000f', // World Time\n '529ca19069fc7db354000004', // Livestream\n '527211b7f9879ec031000011', // Flickr\n '527213673e8f4eec3100000d', // Pinterest\n '52721af9f9879ec031000023', // Circuitlab\n '52950bf5bfdbf21b4d000005', // Spoiler\n '52722e513e8f4eec3100002b', // Scribd\n '5283818625d5b96b67000004', // Viddler\n '527ca0b14966e5c956000004', // MixCloud\n '7089d6db5602ca02def704df', // Ziggeo Video Player\n '526a31538a881e8821000015', // DailyMotion\n '52946064dacb3d5320000023', // Big Header (Comics)\n '529464a3dacb3d5320000028', // Rss Reader\n '52721c2f3e8f4eec31000022', // deviantART\n '526a33768a881e882100001e', // Youku\n '52945f44dacb3d5320000020', // Big Header (Sports)\n '5295bfc6edbacd465f000004' // Trailer Addict\n];\n\nexport const AllWidgetIDs = [\n ...FeaturedWidgetIDs,\n ...PageElementWidgetIDs,\n ...OtherWidgetIDs\n];\n","export const FEATURE_NAMES = {\n FeedbackOnError: 'FeedbackOnError',\n AppThemes: 'AppThemes',\n ShareAsTemplate: 'ShareAsTemplate',\n Embed: 'Embed',\n CustomSlug: 'CustomSlug',\n EmbeddedForm: 'EmbeddedForm',\n TopBar: 'TopBar',\n AppSubdomain: 'AppSubdomain',\n FullIconUrl: 'FullIconUrl',\n AppFooter: 'AppFooter',\n SortPages: 'SortPages',\n BuilderTopBar: 'BuilderTopBar',\n ImageLink: 'ImageLink',\n AppHeaderVisibility: 'AppHeaderVisibility',\n AppLogoSize: 'AppLogoSize',\n ItemDuplication: 'ItemDuplication',\n ItemDuplicationToPage: 'ItemDuplicationToPage',\n MultipageImps: 'Multipage Imps',\n FormResource: 'FormResource',\n ProductList: 'ProductList',\n Flags: 'Flags',\n MobileProductDetail: 'MobileProductDetail',\n FormFields: 'FormFields',\n TeamResourcePicker: 'TeamResourcePicker',\n NewNavigation: 'NewNavigation',\n TeamCollaboration: 'TeamCollaboration',\n SignField: 'SignField',\n OverQuota: 'OverQuota',\n ThankYouPageDisplayTime: 'ThankYouPageDisplayTime',\n DonationItem: 'DonationItem',\n PWAEnabled: 'PWAEnabled',\n ContactInformation: 'ContactInformation',\n ShareOptions: 'ShareOptions',\n NewPaymentModal: 'NewPaymentModal',\n HelpMenu: 'HelpMenu',\n CardItem: 'CardItem',\n List: 'List',\n PushNotification: 'PushNotification',\n AiAssistant: 'AiAssistant',\n UserManagement: 'UserManagement',\n BackNavigation: 'BackNavigation',\n CopilotWithActions: 'CopilotWithActions',\n BottomNavigation: 'BottomNavigation'\n};\n\nexport const defaultFeatures = {\n [FEATURE_NAMES.Embed]: true, // Needs some refactor and cleaning like OldPublish before removing\n [FEATURE_NAMES.EmbeddedForm]: true,\n [FEATURE_NAMES.TopBar]: true,\n [FEATURE_NAMES.ImageLink]: true,\n [FEATURE_NAMES.BuilderTopBar]: true,\n [FEATURE_NAMES.SortPages]: true,\n [FEATURE_NAMES.AppHeaderVisibility]: true,\n [FEATURE_NAMES.ItemDuplication]: true,\n [FEATURE_NAMES.AppLogoSize]: true,\n [FEATURE_NAMES.MultipageImps]: true,\n [FEATURE_NAMES.MobileProductDetail]: true,\n [FEATURE_NAMES.TeamResourcePicker]: true,\n [FEATURE_NAMES.TeamCollaboration]: true,\n [FEATURE_NAMES.OverQuota]: true,\n [FEATURE_NAMES.ThankYouPageDisplayTime]: true,\n // WIPs\n [FEATURE_NAMES.FeedbackOnError]: false,\n [FEATURE_NAMES.AppThemes]: false,\n [FEATURE_NAMES.AppSubdomain]: window.JOTFORM_ENV === 'PRODUCTION' && !window.isHIPAA && !window.isGDPR,\n [FEATURE_NAMES.FormResource]: false,\n [FEATURE_NAMES.ProductList]: window.isStoreBuilderReleased,\n [FEATURE_NAMES.Flags]: false,\n [FEATURE_NAMES.FormFields]: false,\n [FEATURE_NAMES.SignField]: window.isSignReleased,\n [FEATURE_NAMES.DonationItem]: window.isDonationBoxReleased,\n [FEATURE_NAMES.NewPaymentModal]: true,\n [FEATURE_NAMES.PushNotification]: window.isPushNotificationBetaUser,\n [FEATURE_NAMES.AiAssistant]: window.isAppAIAssistantBetaUser,\n [FEATURE_NAMES.LinkField]: false,\n [FEATURE_NAMES.UserManagement]: window.isPortalUserManagementBetaUser,\n\n // Long terms\n [FEATURE_NAMES.ShareAsTemplate]: window.isTemplateCreatorUser,\n [FEATURE_NAMES.AppFooter]: false,\n [FEATURE_NAMES.ItemDuplicationToPage]: false,\n [FEATURE_NAMES.FullIconUrl]: false,\n [FEATURE_NAMES.PWAEnabled]: false,\n [FEATURE_NAMES.ContactInformation]: true,\n [FEATURE_NAMES.ShareOptions]: true,\n [FEATURE_NAMES.HelpMenu]: true,\n\n [FEATURE_NAMES.CardItem]: true,\n [FEATURE_NAMES.List]: window.isListElementBetaUser,\n [FEATURE_NAMES.BackNavigation]: true,\n [FEATURE_NAMES.CopilotWithActions]: false,\n [FEATURE_NAMES.BottomNavigation]: false\n};\n\nexport const ignoreList = [\n FEATURE_NAMES.AppSubdomain,\n FEATURE_NAMES.FullIconUrl,\n FEATURE_NAMES.ItemDuplicationToPage,\n FEATURE_NAMES.AppFooter,\n FEATURE_NAMES.FormResource,\n FEATURE_NAMES.HelpMenu\n];\n\nexport const sessionStorageEnabledFeatures = [];\n\nexport const localStorageEnabledFeatures = [];\n\nexport const adminOnlyFeatures = [];\n\nconst testFeaturesKeys = {\n [FEATURE_NAMES.AppSubdomain]: 'appSubdomainTester'\n};\n\nexport const isTesterFeatureEnabled = (user, featureName) => {\n return !!user[testFeaturesKeys[featureName]];\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","import React from 'react';\nimport { IconDocumentSimpleFilled } from '@jotforminc/svg-icons';\nimport Styled from 'styled-components';\n\nconst ScDocumentPlaceholder = Styled.div`\n background-color: #303339;\n border-radius: 4px;\n width: 120px;\n height: 120px;\n display: flex;\n align-items: center;\n justify-content: center;\n\n svg {\n color: #AEB0B8;\n width: 40px;\n height: 40px;\n }\n`;\nconst CustomPlaceholderIcon = () => (\n \n \n \n);\n\nexport default CustomPlaceholderIcon;\n","import {\n IconProductFormBuilderFilled, IconProductFormBuilderColorBorder, IconProductSignFilled, IconProductSignColorBorder, IconLinkDiagonal, IconDocumentPdfFilled, IconDocumentXlsxFilled,\n IconDocumentDocFilled, IconDocumentImageFilled, IconDocumentSimpleFilled, IconProductTablesFilled, IconProductTablesColorBorder,\n IconProductReportBuilderFilled, IconProductReportBuilderColorBorder, IconProductInboxFilled, IconProductInboxColorBorder\n} from '@jotforminc/svg-icons';\nimport CustomPlaceholderIcon from '../components/CustomPlaceholderIcon';\nimport { DOCUMENT_ITEM_TYPES, ITEM_TYPES } from './itemTypes';\nimport { checkMobilePhone } from '../utils';\nimport { LATEST_VERSION, useAppDefaults, useItemDefaults } from '../properties';\nimport { applyAlpha } from '../utils/styleUtils';\nimport { FEATURE_NAMES } from './features';\nimport { isFeatureEnabled } from '../utils/features/helper';\nimport { ItemVisualPropTypes } from './propTypes';\n\nexport const COLLABORATION = {\n TIMEOUT_SECOND: 15 * 60,\n COUNTDOWN_SECOND: 30\n};\n\nexport const SHOPPING_NOTIFICATION_TYPES = {\n ADD_PRODUCT: 'add',\n DELETE_PRODUCT: 'delete',\n FAVORITE_PRODUCT: 'favorite',\n UNFAVORITE_PRODUCT: 'unfavorite'\n};\n\nexport const ERROR_MESSAGES = {\n DEFAULT: 'Link is already taken.',\n reserved: 'Link is already taken.',\n notvalid: 'URL Slug may only contain letters or combination of letters, numbers, dash and underscores (\"_-”).',\n alphanumeric: 'URL Slug may only contain letters or combination of letters, numbers, dash and underscores (\"_-”).',\n notunique: 'Link is already taken.'\n};\n\nexport const APP_MODES = {\n builder: 'APP_BUILDER',\n public: 'APP_PUBLIC'\n};\n\nexport const PORTAL_ERROR_MAP = {\n FETCH: {\n 404: 'DELETED',\n default: 'UNKNOWN_ERROR',\n FORM_NOT_FOUND: 'FORM_NOT_FOUND',\n builder: 'BUILDER_APP_NOT_FOUND'\n },\n DISABLED_APP: {\n default: 'DISABLED_APP'\n },\n OFFLINE: 'OFFLINE',\n CREATE: {\n CREATE_APP: 'CREATE_APP',\n CREATE_APP_RATE_LIMIT: 'CREATE_APP_RATE_LIMIT',\n CREATE_APP_RATE_LIMIT_GUEST: 'CREATE_APP_RATE_LIMIT_GUEST',\n default: 'CREATE_APP_UNKNOWN'\n },\n DELETED_APP: 'DELETED_APP'\n};\n\n// Values shouldn't be changed. They're persisted in the DB!\nexport const IMAGE_TYPE = {\n icon: 'LOGO/ICON',\n image: 'LOGO/IMAGE'\n};\n\nexport const IMAGE_PREVIEW_REMOVE_BUTTON_TEXTS = {\n [IMAGE_TYPE.icon]: 'Remove Icon',\n [IMAGE_TYPE.image]: 'Remove Image'\n};\n\nexport const FORM_PRODUCTS = { // Values are case sensitive!\n FORM: 'form',\n CONTINUE_DRAFT: 'continue',\n SENTBOX: 'sentbox',\n TABLES: 'tables',\n REPORT: 'report',\n SIGN: 'sign',\n PREVIOUS_ORDERS: 'sentbox_previousOrders',\n PREVIOUS_DONATIONS: 'sentbox_previousDonations'\n};\n\nexport const SCREEN_TYPES = { // Values are case sensitive, using in URL!\n CART: 'cart'\n};\n\nexport const DEFAULT_BUILDER_WIDTHS = {\n rightPanel: 470,\n mobileRightPanel: 360,\n leftPanel: 310,\n mobileLeftPanel: 300,\n main: 672\n};\n\nconst {\n rightPanel, leftPanel, main, mobileLeftPanel, mobileRightPanel\n} = DEFAULT_BUILDER_WIDTHS;\n\nconst rightPanelWidth = checkMobilePhone() ? mobileRightPanel : rightPanel;\nconst leftPanelWidth = checkMobilePhone() ? mobileLeftPanel : leftPanel;\n\nexport const WINDOW_SQUEEZE_VALUE = rightPanelWidth + leftPanelWidth + main + 40;\n\nexport const DESCRIPTION_LIMIT = 240; // TODO Acquire from commonDefinitions.json#/description.maxLength\n\nexport const APP_PREVIEW_URL_HASH = '#preview';\n\nexport const ITEM_ICONS = {\n [ITEM_TYPES.FORM]: {\n Icon: IconProductFormBuilderFilled\n },\n [ITEM_TYPES.LINK]: {\n Icon: IconLinkDiagonal\n },\n [ITEM_TYPES.TABLE_LINK]: {\n Icon: IconProductTablesFilled\n },\n [ITEM_TYPES.REPORT_LINK]: {\n Icon: IconProductReportBuilderFilled\n },\n [ITEM_TYPES.SENTBOX_LINK]: {\n Icon: IconProductInboxFilled\n },\n [ITEM_TYPES.SIGN_LINK]: {\n Icon: IconProductSignFilled\n },\n [ITEM_TYPES.DOCUMENT]: {\n [DOCUMENT_ITEM_TYPES.PDF]: {\n Icon: IconDocumentPdfFilled\n },\n [DOCUMENT_ITEM_TYPES.SHEET]: {\n Icon: IconDocumentXlsxFilled\n },\n [DOCUMENT_ITEM_TYPES.DOC]: {\n Icon: IconDocumentDocFilled\n },\n [DOCUMENT_ITEM_TYPES.IMG]: {\n Icon: IconDocumentImageFilled\n },\n [DOCUMENT_ITEM_TYPES.OTHER]: {\n Icon: IconDocumentSimpleFilled\n },\n [DOCUMENT_ITEM_TYPES.PLACEHOLDER]: {\n Icon: CustomPlaceholderIcon\n }\n }\n};\n\nexport const RESOURCE_SELECTION_ICONS = {\n [ITEM_TYPES.FORM]: {\n Icon: IconProductFormBuilderColorBorder\n },\n [ITEM_TYPES.TABLE_LINK]: {\n Icon: IconProductTablesColorBorder\n },\n [ITEM_TYPES.REPORT_LINK]: {\n Icon: IconProductReportBuilderColorBorder\n },\n [ITEM_TYPES.SENTBOX_LINK]: {\n Icon: IconProductInboxColorBorder\n },\n [ITEM_TYPES.SIGN_LINK]: {\n Icon: IconProductSignColorBorder\n }\n};\n\nexport const APP_LOGO_PROPS = {\n logoType: 'logoType', // svg/png\n logoColor: 'iconColor',\n logoBgColor: 'logoBackground',\n logoImageURL: 'logoURL',\n appLogoSize: 'appLogoSize'\n};\n\nexport const APP_ICON_PROPS = {\n logoType: 'appIconType', // svg/png\n logoColor: 'appIconColor',\n logoBgColor: 'appIconBackground',\n logoImageURL: 'appIconURL',\n svgRef: 'appIconSvgRef'\n};\n\nexport const APP_GRAPHIC_TYPES = {\n appIcon: 'appIcon',\n appLogo: 'appLogo'\n};\n\nexport const APP_HEADER_PROPS = {\n appHeaderBgColor: 'appHeaderBgColor',\n appHeaderBgURL: 'appHeaderBgURL',\n appHeaderBgCropInfo: 'appHeaderBgCropInfo',\n logoURL: 'logoURL',\n name: 'name',\n description: 'description',\n appFontColor: 'appFontColor',\n appHeaderTextAlignment: 'appHeaderTextAlignment',\n appFontFamily: 'appFontFamily'\n};\n\nexport const feedbackModalInfo = {\n JOTFORM_APPS: {\n formID: '201251889947972',\n featureName: 'Jotform Apps'\n },\n COPILOT: {\n formID: '242771576433967',\n featureName: 'Copilot'\n }\n};\n\nexport const APP_ICON_KEYS = [\n 'appIconColor', 'appIconBackground', 'appIconType', 'appIconURL', 'appIconSvgRef'\n];\n\nexport const BRANDING_DEFAULT_UTM_SCHEME = {\n source: 'app',\n medium: 'banner',\n campaign: 'powered-by-jotform-remove-label'\n};\n\nexport const LAYOUT_TYPES = {\n DEFAULT: 'DEFAULT',\n ALL_SHRINKED: 'ALL_SHRINKED',\n NO_ICON: 'NO_ICON',\n ALL_SHRINKED_NO_ICON: 'ALL_SHRINKED_NO_ICON',\n SHOW_ALL_FORMS: 'SHOW_ALL_FORMS',\n // MIXED: 'MIXED',\n PLAIN: 'PLAIN',\n ALL_SHRINKED_NO_HEADER: 'ALL_SHRINKED_NO_HEADER',\n LEFT_ALIGNED: 'LEFT_ALIGNED',\n RIGHT_ALIGNED: 'RIGHT_ALIGNED',\n CENTER_ALIGNED: 'CENTER_ALIGNED',\n ALL_LARGE_ELEMENT: 'ALL_LARGE_ELEMENT'\n};\n\nexport const LAYOUTS_WITH_COLOR_SETTINGS = [\n LAYOUT_TYPES.PLAIN\n];\n\nexport const getLayoutProps = (layoutType = LAYOUT_TYPES.DEFAULT, itemType = ITEM_TYPES.FORM) => {\n const {\n shrink,\n showItemIcon,\n itemBorderColor,\n itemBgColor,\n itemTextAlignment,\n elementSize,\n embeddedForm\n } = useItemDefaults(itemType);\n\n const {\n showAppHeader,\n appHeaderTextAlignment\n } = useAppDefaults(LATEST_VERSION);\n\n const isButtonElement = itemType === ITEM_TYPES.BUTTON;\n\n const relevantDefaultItemProps = {\n ...shrink && { shrink },\n ...showItemIcon && { showItemIcon },\n ...(itemBorderColor && !isButtonElement) && { itemBorderColor },\n ...(itemBgColor && !isButtonElement) && { itemBgColor },\n ...itemTextAlignment && { itemTextAlignment },\n ...elementSize && { elementSize },\n ...embeddedForm && { embeddedForm }\n };\n\n const defaultPortalProps = {\n showAppHeader,\n appHeaderTextAlignment\n };\n\n const LAYOUTS = {\n [LAYOUT_TYPES.DEFAULT]: {\n itemProps: {},\n portalProps: {}\n },\n [LAYOUT_TYPES.ALL_SHRINKED]: {\n portalProps: {},\n itemProps: { shrink: 'Yes' }\n },\n [LAYOUT_TYPES.NO_ICON]: {\n portalProps: {},\n itemProps: { showItemIcon: 'No' }\n },\n [LAYOUT_TYPES.ALL_SHRINKED_NO_ICON]: {\n itemProps: {\n showItemIcon: 'No',\n shrink: 'Yes',\n embeddedForm: 'No'\n }\n },\n [LAYOUT_TYPES.PLAIN]: {\n portalProps: { showAppHeader: 'No' },\n itemProps: {\n itemBorderColor: applyAlpha(itemBorderColor, 0),\n itemBgColor: applyAlpha(itemBgColor, 0),\n showItemIcon: 'No'\n }\n },\n [LAYOUT_TYPES.ALL_SHRINKED_NO_HEADER]: {\n portalProps: { showAppHeader: 'No' },\n itemProps: { shrink: 'Yes', embeddedForm: 'No' }\n },\n [LAYOUT_TYPES.LEFT_ALIGNED]: {\n portalProps: { appHeaderTextAlignment: 'left' },\n itemProps: { itemTextAlignment: 'left' }\n },\n [LAYOUT_TYPES.RIGHT_ALIGNED]: {\n portalProps: { appHeaderTextAlignment: 'right' },\n itemProps: { itemTextAlignment: 'right' }\n },\n [LAYOUT_TYPES.CENTER_ALIGNED]: {\n portalProps: { appHeaderTextAlignment: 'center' },\n itemProps: { itemTextAlignment: 'center' }\n },\n [LAYOUT_TYPES.ALL_LARGE_ELEMENT]: {\n portalProps: {},\n itemProps: { elementSize: 'large' }\n }\n };\n // problem here\n if (isFeatureEnabled(FEATURE_NAMES.EmbeddedForm)) {\n LAYOUTS[LAYOUT_TYPES.SHOW_ALL_FORMS] = {\n portalProps: {},\n itemProps: { embeddedForm: 'Yes', shrink: 'No' }\n };\n }\n\n const { itemProps: layoutItemProps, portalProps: layoutPortalProps } = LAYOUTS[layoutType] || {};\n\n // we only need props that exist in the item's defaults\n const filteredLayoutItemProps = Object.keys(relevantDefaultItemProps).reduce((prev, key) => {\n const value = layoutItemProps[key];\n return { ...prev, ...value && { [key]: value } };\n }, {});\n\n return {\n ...layoutItemProps && { itemProps: { ...relevantDefaultItemProps, ...filteredLayoutItemProps } },\n ...layoutPortalProps && { portalProps: { ...defaultPortalProps, ...layoutPortalProps } }\n };\n};\n\nexport const getProtectedStylingProps = (appLayout, item) => {\n // If layout change is not related with visual props, don't change the visual props.\n const stylingProps = {};\n if (!LAYOUTS_WITH_COLOR_SETTINGS.includes(appLayout)) {\n Object.keys(ItemVisualPropTypes).forEach(prop => {\n if (item[prop]) stylingProps[prop] = item[prop];\n });\n }\n return stylingProps;\n};\n\nexport const ITEM_ADDITION_ORDER_STRATEGY = {\n TO_END_OF_THE_PAGE: -1,\n MULTIPLE_ITEM_DUPLICATION: -2\n};\n\nexport const CHECKOUT_FORM_STATUSES = {\n INITIAL: 'INITIAL',\n OPENED: 'OPENED',\n PAYMENT: 'PAYMENT',\n SUBMITTED: 'SUBMITTED',\n COMPLETED: 'COMPLETED',\n GATEWAY_REDIRECT_INFO: 'GATEWAY_REDIRECT_INFO'\n};\n\nexport const UI_PROPS = {\n isParagraphInlineEditMode: 'isParagraphInlineEditMode',\n mobileContextMenuOpened: 'mobileContextMenuOpened',\n activeProductDetail: 'activeProductDetail',\n activeAccountBoxScreen: 'activeAccountBoxScreen',\n ctxMenuItemClicked: 'ctxMenuItemClicked',\n isGatewaySettingsDisplayed: 'isGatewaySettingsDisplayed',\n addElementButtonPulseCount: 'addElementButtonPulseCount',\n addElementButtonPulseVisible: 'addElementButtonPulseVisible',\n notificationPermissionState: 'notificationPermissionState',\n activePageID: 'activePageID',\n navigationStack: 'navigationStack',\n pageScroll: 'pageScroll'\n};\n\nexport const PORTAL_TYPES = {\n APP: 'APP',\n STORE: 'STORE',\n DONATION: 'DONATION',\n AGENT: 'AGENT'\n};\n\nexport const CHECKOUT_ITEM_PORTAL_TYPE_MAP = {\n [ITEM_TYPES.PRODUCT_LIST]: PORTAL_TYPES.STORE,\n [ITEM_TYPES.DONATION]: PORTAL_TYPES.DONATION\n};\n\nexport const getPortalTypeByItems = items => {\n const item = items.find(({ type }) => [ITEM_TYPES.DONATION, ITEM_TYPES.PRODUCT_LIST].includes(type));\n\n return CHECKOUT_ITEM_PORTAL_TYPE_MAP[item?.type] || PORTAL_TYPES.APP;\n};\n\nexport const ADD_ELELEMT_PULSE_EFFECT_MAX = 2;\nexport const ADD_ELELEMT_PULSE_EFFECT_LC_ST_KEY = 'appBuilderAddElementPulseSeen';\n\nexport const APP_BUILDER_TYPES = {\n DESKTOP: 'DESKTOP',\n MOBILE: 'MOBILE'\n};\n\nexport const NOTIFICATION_PERMISSION_STATES = {\n VISIBLE: 'VISIBLE',\n LOADING: 'LOADING',\n HIDDEN: 'HIDDEN',\n DENIED: 'DENIED',\n ERROR: 'ERROR'\n};\n\nexport const NOTIFICATION_ERROR_MESSAGES = {\n DAILY_LIMIT: 'NOTIFICATION_CAMPAIGN_DAILY_RATE_LIMIT_EXCEEDED',\n HOURLY_LIMIT: 'NOTIFICATION_CAMPAIGN_HOURLY_RATE_LIMIT_EXCEEDED',\n NOT_ALLOWED: 'NOT_ALLOWED'\n};\n\nexport const NOTIFICATION_DISMISS_KEY = 'appPushNotificationDismissed';\n\nexport const APP_PREVIEW_STATES = {\n IDLE: 'IDLE',\n LOADING: 'LOADING',\n READY: 'READY'\n};\n\nexport const LIVE_PREVIEW_SIZE_MODES = {\n FIT_HEIGHT: 'fitHeight',\n ACTUAL_SIZE: 'actualSize'\n};\n","export const ITEM_TYPES = {\n FORM: 'FORM',\n HEADING: 'HEADING',\n PARAGRAPH: 'PARAGRAPH',\n LINK: 'LINK',\n DOCUMENT: 'DOCUMENT',\n DONATION: 'DONATION',\n IMAGE: 'IMAGE',\n BUTTON: 'BUTTON',\n SHARE_BUTTON: 'SHARE_BUTTON',\n WIDGET: 'WIDGET',\n DIVIDER: 'DIVIDER',\n TABLE_LINK: 'TABLE_LINK',\n REPORT_LINK: 'REPORT_LINK',\n SENTBOX_LINK: 'SENTBOX_LINK',\n PRODUCT_LIST: 'PRODUCT_LIST',\n SIGN_LINK: 'SIGN_LINK',\n CONTACT_INFORMATION: 'CONTACT_INFORMATION',\n LIST: 'LIST',\n CARD_ITEM: 'CARD_ITEM',\n AGENT: 'AGENT'\n};\n\nexport const DATA_SOURCE_ITEMS = [\n ITEM_TYPES.LIST\n];\n\nexport const featurePermissionKeys = {\n [ITEM_TYPES.SIGN_LINK]: 'allowSign'\n};\n\nexport const DOCUMENT_ITEM_TYPES = {\n IMG: 'Image',\n PDF: 'PDF',\n SHEET: 'Sheet',\n DOC: 'Doc',\n OTHER: 'File',\n PLACEHOLDER: 'Placeholder'\n};\n\nexport const RESOURCE_TYPES = {\n FORM: 'FORM',\n SENTBOX: 'SENTBOX',\n TABLE: 'TABLE',\n REPORT: 'REPORT',\n SIGN: 'SIGN'\n};\n\nexport const LINK_BEHAVIOR_ITEMS = [\n ITEM_TYPES.REPORT_LINK,\n ITEM_TYPES.IMAGE\n];\n\nexport const PAGE_TYPE = 'PAGE';\n\nexport const ITEM_PROP_TYPE_VERSION = 2;\n\nexport const DATA_SOURCE_COLUMN_TYPES = {\n IMAGE: 'IMAGE',\n TEXT: 'TEXT',\n BOOLEAN: 'BOOLEAN'\n};\n","export const MODALS = {\n FORM_PICKER_MODAL: 'FORM_PICKER_MODAL',\n APP_IS_DONE_MODAL: 'APP_IS_DONE_MODAL',\n RESTART_PROGRESS_MODAL: 'RESTART_PROGRESS_MODAL',\n RESOURCE_PICKER_MODAL: 'RESOURCE_PICKER_MODAL',\n GUEST_LOGIN_MODAL: 'GUEST_LOGIN_MODAL',\n CLONE_APP_MODAL: 'CLONE_APP_MODAL',\n CHECKOUT_SUCCESS_MODAL: 'CHECKOUT_SUCCESS_MODAL',\n PRODUCT_ITEM_DETAIL_MODAL: 'PRODUCT_ITEM_DETAIL_MODAL',\n SEARCH_IN_PRODUCTS_MODAL: 'SEARCH_IN_PRODUCTS_MODAL',\n DELETE_PAGE_MODAL: 'DELETE_PAGE_MODAL',\n TEAM_STILL_EDITING: 'TEAM_STILL_EDITIN',\n PORTAL_FEEDBACK_MODAL: 'PORTAL_FEEDBACK_MODAL',\n EXIT_INTENT_SURVEY_MODAL: 'EXIT_INTENT_SURVEY_MODAL',\n CHECKOUT_FORM_PREVIEW_MODAL: 'CHECKOUT_FORM_PREVIEW_MODAL',\n WHAT_IS_NEW: 'WHAT_IS_NEW',\n SHARE_APP: 'SHARE_APP',\n PAYMENT_GATEWAY_PICKER_MODAL: 'PAYMENT_GATEWAY_PICKER_MODAL',\n // A/B Test: ctAppNameIconModal\n APP_NAME_ICON_SETTING_MODAL: 'APP_NAME_ICON_SETTING_MODAL',\n DATA_SOURCE_TABLE_PICKER_MODAL: 'DATA_SOURCE_TABLE_PICKER_MODAL',\n TABLE_PRODUCT_MODAL: 'TABLE_PRODUCT_MODAL',\n PREVENT_DETAIL_PAGE_DELETION_MODAL: 'PREVENT_DETAIL_PAGE_DELETION_MODAL'\n};\n\nexport const MODAL_EVENTS = {\n [MODALS.FORM_PICKER_MODAL]: 'formPickerModal',\n [MODALS.APP_IS_DONE_MODAL]: 'appIsDoneModal',\n [MODALS.RESTART_PROGRESS_MODAL]: 'restartProgressModal',\n [MODALS.RESOURCE_PICKER_MODAL]: 'resourcePickerModal',\n [MODALS.DATA_SOURCE_TABLE_PICKER_MODAL]: 'dataSourceTablePickerModal',\n [MODALS.GUEST_LOGIN_MODAL]: 'guestLoginModal',\n [MODALS.CLONE_APP_MODAL]: 'cloneAppModal',\n [MODALS.PRODUCT_ITEM_DETAIL_MODAL]: 'productItemDetailModal',\n [MODALS.SEARCH_IN_PRODUCTS_MODAL]: 'searchInProductsModal',\n [MODALS.DELETE_PAGE_MODAL]: 'deletePageModal',\n [MODALS.TEAM_STILL_EDITING]: 'teamsStillEditingModal',\n [MODALS.PORTAL_FEEDBACK_MODAL]: 'portalFeedbackModal',\n [MODALS.CHECKOUT_FORM_PREVIEW_MODAL]: 'checkoutFormPreviewModal',\n [MODALS.WHAT_IS_NEW]: 'whatsNewModal',\n [MODALS.SHARE_APP]: 'shareAppModal',\n [MODALS.PAYMENT_GATEWAY_PICKER_MODAL]: 'paymentGatewayPickerModal',\n [MODALS.DATA_SOURCE_TABLE_PICKER_MODAL]: 'dataSourceTablePickerModal',\n [MODALS.PREVENT_DETAIL_PAGE_DELETION_MODAL]: 'preventDetailPagedeletionModal'\n};\n","import { FORM_PRODUCTS } from './index';\n\nexport const DESTINATION_TYPES = {\n BACK: 'back',\n SCREEN: 'screen',\n PRODUCT: 'product',\n PAGE: 'page',\n SPECIAL_PAGE: 'specialPage',\n BUILDER_PAGE: 'builderPage'\n};\n\nexport const BUILDER_TABS = {\n BUILD: 'build',\n SETTINGS: 'settings',\n PUBLISH: 'publish'\n};\n\nexport const SETTINGS_SUBTABS = {\n DETAILS: 'details',\n APP_NAME: 'appName',\n SPLASH: 'splash'\n};\n\nexport const PUBLISH_SUBTABS = {\n LINK: 'link',\n EMBED: 'embed'\n};\n\nexport const DEFAULT_SUBTABS = {\n [BUILDER_TABS.BUILD]: '',\n [BUILDER_TABS.SETTINGS]: SETTINGS_SUBTABS.DETAILS,\n [BUILDER_TABS.PUBLISH]: PUBLISH_SUBTABS.LINK\n};\n\nexport const SPECIAL_PAGES = {\n CART: 'cart',\n CHECKOUT: 'checkout',\n PREVIOUS_ORDERS: 'previousOrders',\n PREVIOUS_DONATIONS: 'previousDonations',\n PRODUCT: 'product',\n DETAILS: 'details'\n};\n\nexport const ANIMATION_TYPES = {\n PAGE_CHANGE: 'pageChange',\n LOCATION: 'location',\n INITIAL: 'initial',\n NONE: ''\n};\n\nexport const PRODUCT_SEGMENTS = {\n [FORM_PRODUCTS.FORM]: '',\n [FORM_PRODUCTS.CONTINUE_DRAFT]: '/continue',\n [FORM_PRODUCTS.SENTBOX]: '/sentbox',\n [FORM_PRODUCTS.TABLES]: '/tables',\n [FORM_PRODUCTS.REPORT]: '/report',\n [FORM_PRODUCTS.SIGN]: '/sign'\n};\n\nexport const TRACK_MESSAGE_PREFIX = {\n [FORM_PRODUCTS.FORM]: 'form',\n [FORM_PRODUCTS.CONTINUE_DRAFT]: 'draft',\n [FORM_PRODUCTS.SENTBOX]: 'sentbox',\n [FORM_PRODUCTS.TABLES]: 'tables',\n [FORM_PRODUCTS.REPORT]: 'report',\n [FORM_PRODUCTS.SIGN]: 'sign'\n};\n","import {\n string, oneOfType, arrayOf, node\n} from 'prop-types';\n\nexport const renderable = oneOfType([arrayOf(node), node]);\n\nexport const ItemVisualPropTypes = {\n itemBgColor: string,\n itemBorderColor: string,\n itemFontColor: string,\n itemButtonBgColor: string,\n itemButtonFontColor: string\n};\n\nexport const ItemVisualDefaultProps = {\n itemBgColor: '',\n itemBorderColor: '',\n itemFontColor: '',\n itemButtonBgColor: '',\n itemButtonFontColor: ''\n};\n","export const { teamID: TEAM_ID, isTeamMember } = window;\n","import { StorageHelper } from '@jotforminc/storage-helper';\nimport {\n FETCH_ENVIRONMENT,\n SET_APP_STATUS,\n TOGGLE_RIGHT_PANEL,\n TOGGLE_PREVIEW_PANEL,\n SET_MODE,\n SET_PWA_STATUS,\n TOGGLE_NETWORK_STATUS,\n SET_APP_DESIGN_MODE,\n SELECT_PORTAL_ITEM,\n SET_RIGHT_PANEL_MODE,\n TOGGLE_LEFT_PANEL,\n SET_API_REQUESTS_COMPLETED,\n SHOULD_WINDOW_SQUEEZE,\n APP_PREVIEW_STATUS,\n APP_PREVIEW_DEVICE,\n REMOVE_PORTAL_ITEMS,\n SET_APP_HEADER_CROP_MODE,\n SET_APP_COVER_CROP_MODE,\n SET_ITEM_LOADING_STATUS,\n FETCH_PORTAL,\n FETCH_FORMS,\n SET_DISABLED_APP_SCREEN,\n CREATE_NEW_PORTAL,\n FETCH_APPS,\n TOAST,\n SET_LAST_ADDED_ITEM,\n SELECT_MULTIPLE_PORTAL_ITEM,\n TOGGLE_MOBILE_MULTIPLE_SELECTION_MODE,\n SELECT_PAGES,\n UPDATE_LAST_INTERACTED_PAGE_ID,\n SET_APP_LOCATION,\n FETCH_RESOURCES_ERROR,\n SET_FORCE_TITLE_RENAME,\n ACTIVE_PAGE,\n SET_CHECKOUT_FORM_STATUS,\n SET_CHECKOUT_FORM_VISIBILITY,\n SET_ACTIVE_SCREEN,\n SET_ACTIVE_FORM_PRODUCT,\n SET_ROUTER_ANIMATION_TYPE,\n APP_TOAST,\n APP_TOAST_STACK,\n PREPARE_RIGHT_PANEL,\n TOGGLE_ACCOUNT_BOX,\n SET_ACTIVE_BUILDER_PAGE,\n SHOW_MODAL, REPLACE_FORM_ITEM,\n SET_UI_PROP,\n NAVIGATION_SETTINGS_POPOVER,\n TOGGLE_LIVE_PREVIEW,\n SET_ACTIVE_RIGHT_PANEL_TAB\n} from '../actionTypes';\nimport {\n APP_MODES, CHECKOUT_FORM_STATUSES, WINDOW_SQUEEZE_VALUE, UI_PROPS, NOTIFICATION_PERMISSION_STATES, APP_PREVIEW_STATES\n} from '../../constants';\nimport { APP_DESIGN_MODES } from '../../modules/Builder/constants/designModes';\nimport { isPWA } from '../../modules/PublicApp/utils';\nimport { RightPanelModes } from '../../modules/Builder/components/HomePage/constants';\nimport ANIMATION_TYPES from '../../modules/PublicApp/AnimationTypes';\nimport { getCurrentSubTabFromURL, getCurrentTabFromURL } from '../../utils/navigation';\n\nconst initialState = {\n mode: (window.isBuilder || !window.isStandalone) === true ? APP_MODES.builder : APP_MODES.public,\n isAppReady: false,\n isOpenedInPWA: isPWA(),\n isPWAInstalled: false,\n isOnline: typeof window.navigator.onLine === 'boolean' ? window.navigator.onLine : true,\n environment: window?.JOTFORM_ENV || '',\n isRightPanelOpen: false,\n isPreviewPanelOpen: StorageHelper.getLocalStorageItem({ key: 'appBuilderIsLivePreviewOn', defaultValue: true }),\n isLivePreviewOn: StorageHelper.getLocalStorageItem({ key: 'appBuilderIsLivePreviewOn', defaultValue: true }),\n rightPanelMode: '',\n isLeftPanelOpen: false,\n lastOpenedPanel: null,\n isAiAssistantOpen: false,\n selectedForms: [],\n areAPIRequestsCompleted: true,\n selectedItems: [],\n lastAddedItemID: '',\n appDesignMode: APP_DESIGN_MODES.app,\n currentStep: getCurrentTabFromURL(),\n currentSubTab: getCurrentSubTabFromURL(),\n shouldSqueeze: global.innerWidth <= WINDOW_SQUEEZE_VALUE,\n appPreviewStatus: window.location.href.includes('preview') ? APP_PREVIEW_STATES.LOADING : APP_PREVIEW_STATES.IDLE,\n appPreviewDevice: 'phone',\n isAppHeaderInCropMode: false,\n isAppCoverInCropMode: false,\n loadingItems: {},\n appsFetched: false,\n isUIBlocked: false,\n isMobileMultipleSelectionMode: false,\n selectedPages: [],\n lastInteractedPageID: '',\n appLocation: '',\n isTemplateMode: window.isTemplateMode || false,\n forceTitleRename: false,\n activePageID: '',\n navigationSettingsPopoverId: false,\n checkoutFormStatus: window.location.href.includes('complete=1') ? CHECKOUT_FORM_STATUSES.COMPLETED : CHECKOUT_FORM_STATUSES.INITIAL,\n checkoutFormVisibility: false,\n routerAnimationType: ANIMATION_TYPES.INITIAL,\n appToastStack: [],\n navigationStack: [],\n [UI_PROPS.activeAccountBoxScreen]: '',\n accountBoxStatus: false,\n [UI_PROPS.activeProductDetail]: {},\n [UI_PROPS.mobileContextMenuOpened]: false,\n activeModal: '',\n [UI_PROPS.isParagraphInlineEditMode]: false,\n [UI_PROPS.ctxMenuItemClicked]: false,\n [UI_PROPS.isGatewaySettingsDisplayed]: false,\n [UI_PROPS.addElementButtonPulseCount]: 0,\n [UI_PROPS.addElementButtonPulseVisible]: false,\n [UI_PROPS.isA2HSModalClosed]: false,\n [UI_PROPS.notificationPermissionState]: NOTIFICATION_PERMISSION_STATES.HIDDEN\n};\n\n// eslint-disable-next-line complexity\nconst UIReducer = (state = initialState, action) => {\n switch (action.type) {\n case TOGGLE_ACCOUNT_BOX: {\n const value = action.payload;\n return {\n ...state,\n accountBoxStatus: value\n };\n }\n case FETCH_ENVIRONMENT.SUCCESS: {\n return {\n ...state, environment: action.data\n };\n }\n case SET_APP_STATUS: {\n return {\n ...state, isAppReady: action.payload === 'ready'\n };\n }\n case FETCH_APPS.SUCCESS: {\n return {\n ...state, appsFetched: true\n };\n }\n case TOGGLE_RIGHT_PANEL: {\n const lastPanel = (!action.payload && state.isLeftPanelOpen) ? 'left' : 'right';\n return {\n ...state,\n isRightPanelOpen: action.payload,\n lastOpenedPanel: lastPanel,\n activeRightPanelTab: undefined\n };\n }\n case TOGGLE_LIVE_PREVIEW: {\n return {\n ...state,\n isLivePreviewOn: action.payload\n };\n }\n case TOGGLE_PREVIEW_PANEL: {\n return {\n ...state,\n isPreviewPanelOpen: action.payload\n };\n }\n case SET_APP_DESIGN_MODE: {\n return {\n ...state, appDesignMode: action.payload\n };\n }\n case SET_MODE: {\n return {\n ...state, mode: action.payload\n };\n }\n case REPLACE_FORM_ITEM.SUCCESS: {\n const { form } = action.payload;\n return {\n ...state,\n selectedItems: [form.id]\n };\n }\n case SELECT_PORTAL_ITEM: {\n const selectedItemID = action.payload;\n if (!selectedItemID) { // Cleared\n return { ...state, selectedItems: [], isMobileMultipleSelectionMode: false };\n }\n\n return {\n ...state,\n selectedItems: [selectedItemID],\n selectedPages: []\n };\n }\n case SELECT_MULTIPLE_PORTAL_ITEM: {\n const {\n selection,\n withMouse\n } = action.payload;\n const { rightPanelMode } = state;\n if (withMouse) {\n return {\n ...state,\n selectedItems: selection,\n rightPanelMode: selection.length > 1 ? RightPanelModes.MULTIPLE_ITEM : rightPanelMode,\n selectedPages: []\n };\n }\n\n const newSelecteds = [...state.selectedItems, selection]\n .reduce((prev, cur, ind, originalArr) => {\n const idCount = originalArr.filter(x => x === cur).length;\n if (idCount > 1) { // If any id occurring more than 1, deselect it (TODO unless withRange?)\n return prev;\n }\n return [...prev, cur];\n }, []);\n return {\n ...state,\n selectedItems: newSelecteds,\n rightPanelMode: newSelecteds.length > 1 ? RightPanelModes.MULTIPLE_ITEM : RightPanelModes.APP_ITEM,\n selectedPages: []\n };\n }\n case SET_LAST_ADDED_ITEM: {\n return {\n ...state, lastAddedItemID: action.payload\n };\n }\n case SET_PWA_STATUS: {\n return {\n ...state,\n isPWAInstalled: action.isPWAInstalled,\n isOpenedInPWA: action.isOpenedInPWA\n };\n }\n case TOGGLE_NETWORK_STATUS: {\n const isOnline = !!action.payload;\n return {\n ...state, isOnline\n };\n }\n case SET_RIGHT_PANEL_MODE: {\n return {\n ...state, rightPanelMode: action.payload\n };\n }\n case PREPARE_RIGHT_PANEL: {\n return {\n ...state,\n rightPanelMode: action.payload.mode,\n selectedItems: [action.payload.item],\n selectedPages: []\n };\n }\n case SET_API_REQUESTS_COMPLETED: {\n return {\n ...state, areAPIRequestsCompleted: action.payload\n };\n }\n case TOGGLE_LEFT_PANEL: {\n const lastPanel = (!action.payload && state.isRightPanelOpen) ? 'right' : 'left';\n return {\n ...state, isLeftPanelOpen: action.payload, lastOpenedPanel: lastPanel\n };\n }\n case SHOULD_WINDOW_SQUEEZE: {\n return {\n ...state, shouldSqueeze: action.payload\n };\n }\n case APP_PREVIEW_STATUS: {\n return {\n ...state, appPreviewStatus: action.payload\n };\n }\n case APP_PREVIEW_DEVICE: {\n return {\n ...state, appPreviewDevice: action.payload\n };\n }\n case REMOVE_PORTAL_ITEMS.REQUEST: {\n const [selectedPortalItem] = state.selectedItems; // singular\n return {\n ...state,\n isRightPanelOpen: false,\n rightPanelMode: '',\n loadingItems: Object.entries(state.loadingItems).reduce((prev, [key, value]) => {\n if (key === selectedPortalItem) {\n return { ...prev };\n }\n return { ...prev, [key]: value };\n }, {})\n };\n }\n case SET_APP_HEADER_CROP_MODE: {\n return {\n ...state, isAppHeaderInCropMode: action.payload\n };\n }\n case SET_APP_COVER_CROP_MODE: {\n return {\n ...state, isAppCoverInCropMode: action.payload\n };\n }\n case SET_ITEM_LOADING_STATUS: {\n return {\n ...state,\n loadingItems: { ...state.loadingItems, ...action.payload }\n };\n }\n case FETCH_PORTAL.ERROR:\n case SET_DISABLED_APP_SCREEN:\n case CREATE_NEW_PORTAL.ERROR:\n case FETCH_FORMS.ERROR:\n case FETCH_RESOURCES_ERROR: {\n return {\n ...state,\n error: action.payload,\n customErrorText: action.customErrorText\n };\n }\n case APP_TOAST.SHOPPING_NOTIFICATION:\n case TOAST.NOTIFICATION:\n case TOAST.ERROR: {\n const { backdrop = false } = action.payload;\n return {\n ...state,\n isUIBlocked: !!backdrop\n };\n }\n case TOGGLE_MOBILE_MULTIPLE_SELECTION_MODE: {\n const mode = action.payload;\n return {\n ...state,\n isMobileMultipleSelectionMode: mode\n };\n }\n case SELECT_PAGES:\n const selectedPage = action.payload;\n return {\n ...state,\n selectedPages: [selectedPage],\n selectedItems: []\n };\n case UPDATE_LAST_INTERACTED_PAGE_ID:\n return {\n ...state,\n lastInteractedPageID: action.payload\n };\n case SET_APP_LOCATION:\n const location = action.payload;\n return {\n ...state,\n appLocation: location\n };\n case SET_FORCE_TITLE_RENAME:\n return {\n ...state,\n forceTitleRename: action.payload\n };\n case ACTIVE_PAGE:\n return {\n ...state,\n activePageID: action.payload\n };\n case SET_CHECKOUT_FORM_STATUS:\n return {\n ...state,\n checkoutFormStatus: action.payload\n };\n case SET_CHECKOUT_FORM_VISIBILITY:\n return {\n ...state,\n checkoutFormVisibility: !!action.payload\n };\n case SET_ACTIVE_SCREEN:\n return {\n ...state,\n activeScreen: action.payload\n };\n case SET_ACTIVE_FORM_PRODUCT:\n return {\n ...state,\n activeFormProduct: action.payload\n };\n case SET_ACTIVE_BUILDER_PAGE:\n return {\n ...state,\n currentStep: action.payload.tab,\n currentSubTab: action.payload.subTab\n };\n case SET_ROUTER_ANIMATION_TYPE:\n return {\n ...state,\n routerAnimationType: action.payload\n };\n case APP_TOAST_STACK.SUCCESS:\n return {\n ...state,\n appToastStack: action.payload\n };\n case SHOW_MODAL:\n return { ...state, activeModal: action.payload };\n case NAVIGATION_SETTINGS_POPOVER:\n return { ...state, navigationSettingsPopoverId: action.payload };\n case SET_UI_PROP:\n return { ...state, [action.payload.key]: action.payload.value };\n\n case SET_ACTIVE_RIGHT_PANEL_TAB:\n return { ...state, activeRightPanelTab: action.payload };\n\n default:\n break;\n }\n return state;\n};\n\nexport default UIReducer;\n","import {\n FETCH_USER, UPDATE_USER, SET_USER_SLUG, CONTINUE_AS_USER,\n USER_CHANGE\n} from '../actionTypes';\n\nconst initialState = {\n ...(window?.__userInfo?.credentials || {}),\n USER_TYPE: window?.__userInfo?.type || '',\n slug: false,\n paymentOverQuotaWarnings: window?.__userInfo?.paymentOverQuotaWarnings || {},\n showContinueAs: window?.__showContinueAs\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.payload.type && userTypes[action.payload.type];\n\n return {\n ...action.payload.credentials,\n USER_TYPE: action.payload.type,\n ...userType ? { userType } : {}\n };\n }\n case UPDATE_USER.SUCCESS: {\n return {\n ...state,\n ...action.payload\n };\n }\n case SET_USER_SLUG: {\n const { slug } = action;\n return {\n ...state,\n slug\n };\n }\n case USER_CHANGE:\n case CONTINUE_AS_USER.SUCCESS: {\n return {\n ...state,\n showContinueAs: false\n };\n }\n default:\n return state;\n }\n};\n\nexport default userReducer;\n","import {\n takeLatest, put, call, select\n} from 'redux-saga/effects';\nimport { navigate } from '@reach/router';\n\nimport * as NAVIGATION from '../../utils/navigation';\nimport * as NAVIGATION_CONSTANTS from '../../constants/navigation';\n\nimport { safeWorker } from '../utils';\nimport {\n NAVIGATE_BACK, NAVIGATE_TO, SET_ACTIVE_ITEM, NAVIGATION_ITEM_CLICK,\n POPSTATE\n} from '../actionTypes';\nimport * as ACTIONS from '../actionCreators';\nimport SELECTORS from '../selectors';\nimport { RightPanelModes } from '../../modules/Builder/components/HomePage/constants';\nimport { APP_MODES, APP_PREVIEW_URL_HASH, UI_PROPS } from '../../constants';\nimport { getIsHomepage } from '../selectors/portalSelectors';\nimport { isFeatureEnabled } from '../../utils/features/helper';\nimport { FEATURE_NAMES } from '../../constants/features';\n\nconst isTemplatePreviewEnv = (window?.location?.href || '').includes('/app-templates');\n\nconst SET_ACTIVE_ITEM_ACTIONS = {\n [NAVIGATION_CONSTANTS.DESTINATION_TYPES.PAGE]: ACTIONS.setActivePageAction,\n [NAVIGATION_CONSTANTS.DESTINATION_TYPES.SCREEN]: ACTIONS.setActiveScreen,\n [NAVIGATION_CONSTANTS.DESTINATION_TYPES.PRODUCT]: ACTIONS.setActiveFormProduct,\n [NAVIGATION_CONSTANTS.DESTINATION_TYPES.BUILDER_PAGE]: ACTIONS.setActiveBuilderPage\n};\n\nconst ITEM_ANIMATION_TYPES = {\n [NAVIGATION_CONSTANTS.DESTINATION_TYPES.PAGE]: NAVIGATION_CONSTANTS.ANIMATION_TYPES.PAGE_CHANGE,\n [NAVIGATION_CONSTANTS.DESTINATION_TYPES.SCREEN]: NAVIGATION_CONSTANTS.ANIMATION_TYPES.LOCATION,\n [NAVIGATION_CONSTANTS.DESTINATION_TYPES.PRODUCT]: NAVIGATION_CONSTANTS.ANIMATION_TYPES.LOCATION,\n [NAVIGATION_CONSTANTS.DESTINATION_TYPES.BUILDER_PAGE]: NAVIGATION_CONSTANTS.ANIMATION_TYPES.NONE\n};\n\nfunction* handleFormProductNavigation(payload) {\n const destination = NAVIGATION.generateAppURL({\n includeQs: true,\n ...payload\n });\n yield call(navigate, destination, { replace: isTemplatePreviewEnv });\n}\n\nfunction* watchNavigateToFormProduct(payload) {\n const { productType } = payload;\n\n const isPreview = NAVIGATION.getLocationHash() === APP_PREVIEW_URL_HASH;\n const messagePrefix = NAVIGATION_CONSTANTS.TRACK_MESSAGE_PREFIX[productType];\n const trackMessage = `${messagePrefix}Accessed`;\n const trackTarget = NAVIGATION.getTrackTarget(payload);\n\n yield put(ACTIONS.setRouterAnimationTypeAction(NAVIGATION_CONSTANTS.ANIMATION_TYPES.LOCATION));\n if (!isPreview) {\n yield put(ACTIONS.trackEventAction({ action: trackMessage, trackTarget }));\n }\n yield handleFormProductNavigation(payload);\n}\n\nexport function* handleScreenNavigation(payload) {\n const destination = NAVIGATION.generateAppURL({\n includeQs: true,\n ...payload\n });\n // Track event is missing for other screens for now\n yield call(navigate, destination, { replace: isTemplatePreviewEnv });\n}\n\nfunction* watchNavigateToScreen(payload) {\n yield put(ACTIONS.setRouterAnimationTypeAction(NAVIGATION_CONSTANTS.ANIMATION_TYPES.LOCATION));\n yield handleScreenNavigation(payload);\n}\n\nfunction* watchNavigateToPage(payload) {\n const { pageID, animationType = NAVIGATION_CONSTANTS.ANIMATION_TYPES.PAGE_CHANGE } = payload;\n const isHomepage = yield select(getIsHomepage(pageID));\n const activePageID = yield select(SELECTORS.getActivePageID);\n\n const destination = NAVIGATION.generateAppURL({\n pageID: isHomepage ? 'homepage' : pageID\n });\n\n yield put(ACTIONS.setRouterAnimationTypeAction(activePageID === pageID ? NAVIGATION_CONSTANTS.ANIMATION_TYPES.NONE : animationType));\n yield call(navigate, destination, { replace: isTemplatePreviewEnv });\n yield put(ACTIONS.trackEventAction({ action: 'navigatedToPage', target: { page: pageID } }));\n yield put(ACTIONS.trackEventAction({ action: 'pageVisited', target: { pageID } }));\n}\n\nfunction* handleGoBackInPublicApp() {\n const activeFormProduct = yield select(SELECTORS.getActiveFormProduct);\n const activePageID = yield select(SELECTORS.getActivePageID);\n\n const isHomepage = yield select(SELECTORS.getIsHomepage(activePageID));\n\n const returnToPage = activePageID && !isHomepage;\n\n const shouldEraseQueryParams = activeFormProduct && activeFormProduct.includes('/continue');\n\n const destination = NAVIGATION.generateAppURL({\n forLogout: shouldEraseQueryParams, // Also erases other params. Maybe we can keep them.\n ...(returnToPage && { pageID: activePageID })\n });\n\n yield put(ACTIONS.trackEventAction({ action: 'backToApp' }));\n yield call(navigate, destination, { replace: isTemplatePreviewEnv });\n yield put(ACTIONS.setRouterAnimationTypeAction(NAVIGATION_CONSTANTS.ANIMATION_TYPES.NONE));\n}\n\nfunction* handleGoBackInBuilder() {\n const destination = NAVIGATION.getBackURL();\n yield call(navigate, destination, { replace: isTemplatePreviewEnv });\n}\n\nconst BACK_NAVIGATIONS = {\n [APP_MODES.builder]: handleGoBackInBuilder,\n [APP_MODES.public]: handleGoBackInPublicApp\n};\n\nfunction* watchNavigateBack() {\n const appMode = yield select(SELECTORS.getAppModeSelector);\n yield BACK_NAVIGATIONS[appMode]();\n}\n\nfunction* watchNavigateToSpecialPage(payload) {\n const { pageID } = payload;\n const destination = NAVIGATION.getSpecialPageDestination(pageID);\n const newPayload = NAVIGATION.prepareSpecialPageNavigationProps(destination, payload);\n // eslint-disable-next-line no-use-before-define\n yield navigationMethods[destination](newPayload);\n}\n\nfunction* handleBuilderTabNavigation(payload) {\n const { tab, subTab = '' } = payload;\n\n const destination = NAVIGATION.generateBuilderAppURL({ tab, subTab, includeQs: true });\n yield put(ACTIONS.trackEventAction({ action: `${tab}TabClicked` }));\n yield call(navigate, destination, { replace: isTemplatePreviewEnv });\n}\n\nfunction* handleBuilderSubTabNavigation(payload) {\n const { subTab } = payload;\n const isRightPanelOpen = yield select(SELECTORS.isRightPanelOpenSelector);\n const currentSubTab = yield select(SELECTORS.getCurrentSubTab);\n const tab = yield select(SELECTORS.getCurrentStep);\n const destination = NAVIGATION.generateBuilderAppURL({ tab, subTab, includeQs: true });\n if (subTab !== currentSubTab && isRightPanelOpen) {\n const mode = (subTab === NAVIGATION_CONSTANTS.SETTINGS_SUBTABS.SPLASH) ? RightPanelModes.SPLASH_SCREEN : RightPanelModes.APP_ICON;\n if (subTab === NAVIGATION_CONSTANTS.SETTINGS_SUBTABS.DETAILS) {\n yield put(ACTIONS.setRightPanelModeAction(''));\n yield put(ACTIONS.toggleRightPanelAction(false));\n }\n yield put(ACTIONS.setRightPanelModeAction(mode));\n }\n yield put(ACTIONS.trackEventAction({ action: `${subTab}TabClicked` })); // Track event is the same with tab navigation?\n\n yield call(navigate, destination, { replace: isTemplatePreviewEnv });\n}\n\nconst getBuilderNavigationHandler = (tab, subTab) => {\n switch (true) {\n case tab !== '':\n return handleBuilderTabNavigation;\n case subTab !== '':\n return handleBuilderSubTabNavigation;\n default:\n return () => {};\n }\n};\n\nfunction* watchNavigationsInBuilder(payload) {\n const { tab = '', subTab = '' } = payload;\n const handleBuilderNavigation = getBuilderNavigationHandler(tab, subTab);\n yield handleBuilderNavigation(payload);\n}\n\nconst navigationMethods = {\n [NAVIGATION_CONSTANTS.DESTINATION_TYPES.BACK]: watchNavigateBack,\n [NAVIGATION_CONSTANTS.DESTINATION_TYPES.SCREEN]: watchNavigateToScreen,\n [NAVIGATION_CONSTANTS.DESTINATION_TYPES.PRODUCT]: watchNavigateToFormProduct,\n [NAVIGATION_CONSTANTS.DESTINATION_TYPES.PAGE]: watchNavigateToPage,\n [NAVIGATION_CONSTANTS.DESTINATION_TYPES.SPECIAL_PAGE]: watchNavigateToSpecialPage,\n [NAVIGATION_CONSTANTS.DESTINATION_TYPES.BUILDER_PAGE]: watchNavigationsInBuilder\n};\n\nfunction* navigationInterface(action) {\n const { to } = action.payload;\n\n yield navigationMethods[to](action.payload);\n}\n\nfunction* clearPreviousActiveItem(itemType, itemName) {\n const activeScreen = yield select(SELECTORS.getActiveScreen);\n const activeFormProduct = yield select(SELECTORS.getActiveFormProduct);\n const activeProductDetail = yield select(SELECTORS.getActiveProductDetails);\n\n if (activeScreen.length > 0) {\n yield put(ACTIONS.setActiveScreen(''));\n }\n\n if (activeFormProduct.length > 0) {\n yield put(ACTIONS.setActiveFormProduct(''));\n }\n\n if (activeProductDetail?.itemID?.length > 0 && itemName !== NAVIGATION_CONSTANTS.SPECIAL_PAGES.PRODUCT) { // Product list product\n yield put(ACTIONS.setUIProp(UI_PROPS.activeProductDetail, {}));\n }\n}\n\nfunction* watchActiveItem() {\n const item = NAVIGATION.getItemFromURL();\n const { itemType } = item;\n let { itemName } = item;\n if (itemType === NAVIGATION_CONSTANTS.DESTINATION_TYPES.PAGE && itemName === '') {\n const firstPageId = yield select(SELECTORS.getFirstPageID);\n itemName = firstPageId;\n }\n const currentAnimationType = yield select(SELECTORS.getRouterAnimationType);\n const renderer = itemType === NAVIGATION_CONSTANTS.DESTINATION_TYPES.SPECIAL_PAGE\n ? NAVIGATION.getSpecialPageDestination(itemName)\n : itemType;\n const setActiveItem = SET_ACTIVE_ITEM_ACTIONS[renderer];\n const animationType = ITEM_ANIMATION_TYPES[renderer];\n\n yield clearPreviousActiveItem(itemType, itemName);\n yield put(setActiveItem(itemName));\n\n if (currentAnimationType === NAVIGATION_CONSTANTS.ANIMATION_TYPES.INITIAL) { // For the first navigation after refresh.\n yield put(ACTIONS.setRouterAnimationTypeAction(animationType));\n }\n}\n\nfunction* navigateBack() {\n const navigationStack = yield select(SELECTORS.getUIProp(UI_PROPS.navigationStack));\n const newStack = [...navigationStack];\n const page = newStack.pop();\n\n yield put(ACTIONS.setUIProp(UI_PROPS.navigationStack, newStack));\n yield put(ACTIONS.navigateToAction({ to: NAVIGATION_CONSTANTS.DESTINATION_TYPES.PAGE, pageID: page.id }));\n yield put(ACTIONS.setUIProp(UI_PROPS.pageScroll, page.scroll));\n}\n\nfunction* watchNavigationItemClick({ payload }) {\n if (!isFeatureEnabled(FEATURE_NAMES.BackNavigation)) return;\n\n const { saveToStack, targetPageID } = payload;\n const navigationStack = yield select(SELECTORS.getUIProp(UI_PROPS.navigationStack));\n const activePageID = yield select(SELECTORS.getUIProp(UI_PROPS.activePageID));\n const firstPageID = yield select(SELECTORS.getFirstPageID);\n\n if (saveToStack) {\n let newStack;\n if (targetPageID === firstPageID) {\n newStack = [];\n } else if (targetPageID === navigationStack.at(-1)?.id) {\n newStack = [...navigationStack];\n newStack.pop();\n } else {\n const el = document.querySelector('.scrollableItemListWrapper');\n const scroll = el?.scrollTop || 0;\n newStack = [...navigationStack, { id: activePageID, scroll }];\n }\n yield put(ACTIONS.setUIProp(UI_PROPS.navigationStack, newStack));\n }\n yield put(ACTIONS.setUIProp(UI_PROPS.pageScroll, 0));\n}\n\nfunction* watchPopState() {\n const navigationStack = yield select(SELECTORS.getUIProp(UI_PROPS.navigationStack));\n if (navigationStack.length > 0) {\n const newStack = [...navigationStack];\n const page = newStack.pop();\n yield put(ACTIONS.setUIProp(UI_PROPS.navigationStack, newStack));\n yield put(ACTIONS.setUIProp(UI_PROPS.pageScroll, page.scroll));\n }\n}\n\nexport default function* navigationSaga() {\n yield takeLatest(NAVIGATE_TO, navigationInterface);\n yield takeLatest(SET_ACTIVE_ITEM, safeWorker(watchActiveItem));\n yield takeLatest(NAVIGATE_BACK, navigateBack);\n yield takeLatest(NAVIGATION_ITEM_CLICK, safeWorker(watchNavigationItemClick));\n yield takeLatest(POPSTATE, watchPopState);\n}\n","\n \n\n","\n \n\n","\n \n\n","\n \n\n","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 SvgIconNoresult = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 38 48\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M36 1.96533C37.1046 1.96533 38 2.86076 38 3.96533V45.9653C38 47.0699 37.1046 47.9653 36 47.9653H2C0.89543 47.9653 0 47.0699 0 45.9653V3.96533C0 2.86076 0.89543 1.96533 2 1.96533H36ZM12.292 35.9653C12.5764 35.9653 12.8473 35.8442 13.037 35.6323C14.5547 33.9354 16.7234 32.9655 19 32.9655C21.2766 32.9655 23.4453 33.9354 24.963 35.6323C25.2003 35.9024 25.5643 36.0243 25.9163 35.9516C26.2684 35.8789 26.5543 35.6229 26.6653 35.281C26.7763 34.9391 26.6953 34.5639 26.453 34.2983C24.5559 32.1777 21.8453 30.9656 19 30.9656C16.1547 30.9656 13.4441 32.1777 11.547 34.2983C11.2839 34.5922 11.2182 35.0133 11.3791 35.3733C11.54 35.7334 11.8976 35.9653 12.292 35.9653V35.9653ZM32 20.9653C31.4477 20.9653 31 21.413 31 21.9653C31 23.0699 30.1046 23.9653 29 23.9653C27.8954 23.9653 27 23.0699 27 21.9653C27 21.413 26.5523 20.9653 26 20.9653C25.4477 20.9653 25 21.413 25 21.9653C25 24.1745 26.7909 25.9653 29 25.9653C31.2091 25.9653 33 24.1745 33 21.9653C33 21.413 32.5523 20.9653 32 20.9653ZM6 20.9653C5.44772 20.9653 5 21.413 5 21.9653C5 24.1745 6.79086 25.9653 9 25.9653C11.2091 25.9653 13 24.1745 13 21.9653C13 21.413 12.5523 20.9653 12 20.9653C11.4477 20.9653 11 21.413 11 21.9653C11 23.0699 10.1046 23.9653 9 23.9653C7.89543 23.9653 7 23.0699 7 21.9653C7 21.413 6.55228 20.9653 6 20.9653Z\",\n fill: \"#C8CEDD\"\n})), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M33 14.9652C30.2399 14.9619 28.0033 12.7253 28 9.96524C28 7.60324 31.447 1.63124 32.139 0.458239C32.3319 0.171769 32.6546 0 33 0C33.3454 0 33.6681 0.171769 33.861 0.458239C34.553 1.63124 38 7.60324 38 9.96524C37.9967 12.7253 35.7601 14.9619 33 14.9652Z\",\n fill: \"#43B2EF\"\n})));\nexport default SvgIconNoresult;","\n \n\n","\n \n\n","\n \n\n","\n \n\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 SvgTryArrow = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 77 53\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6.04331 2.78494C6.42666 1.74902 5.89765 0.598484 4.86174 0.215133C3.82583 -0.168217 2.67529 0.36079 2.29194 1.3967L6.04331 2.78494ZM58.0457 29.2585C57.0337 28.8158 55.8544 29.2772 55.4117 30.2892C54.969 31.3011 55.4304 32.4804 56.4424 32.9231L58.0457 29.2585ZM73.244 38.0908L74.7183 39.4423L76.6088 37.3799L74.0457 36.2585L73.244 38.0908ZM60.7697 48.7394C60.0233 49.5536 60.0783 50.8187 60.8926 51.5651C61.7068 52.3115 62.9719 52.2565 63.7183 51.4423L60.7697 48.7394ZM2.29194 1.3967C-0.761403 9.64763 -0.27789 17.1096 2.92864 23.4172C6.10851 29.6724 11.8572 34.5831 18.9767 38.0311C33.1887 44.914 53.3708 46.2322 71.8425 40.4391L70.6455 36.6224C53.0188 42.1505 33.9022 40.8152 20.7203 34.4311C14.1428 31.2456 9.17082 26.8695 6.49435 21.6046C3.84453 16.392 3.33608 10.1006 6.04331 2.78494L2.29194 1.3967ZM56.4424 32.9231L72.4424 39.9231L74.0457 36.2585L58.0457 29.2585L56.4424 32.9231ZM71.7697 36.7394L60.7697 48.7394L63.7183 51.4423L74.7183 39.4423L71.7697 36.7394Z\",\n fill: \"#6F76A7\"\n})));\nexport default SvgTryArrow;","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 _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 xmlns: \"http://www.w3.org/2000/svg\",\n width: 108,\n height: 121,\n fill: \"none\"\n}, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#noFormsFoundIcon_svg__a)\"\n}, /*#__PURE__*/React.createElement(\"circle\", {\n cx: 54.5,\n cy: 58.449,\n r: 52.5,\n fill: \"#F3F3FE\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M61.11 58.422a5.76 5.76 0 0 1 5.761-5.761H94.24A5.76 5.76 0 0 1 100 58.422v34.57a5.76 5.76 0 0 1-5.761 5.761H66.87a5.76 5.76 0 0 1-5.761-5.761z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#B1C3E9\",\n fillRule: \"evenodd\",\n d: \"M94.239 54.101H66.87a4.32 4.32 0 0 0-4.32 4.321v34.57a4.32 4.32 0 0 0 4.32 4.32H94.24a4.32 4.32 0 0 0 4.32-4.32v-34.57a4.32 4.32 0 0 0-4.32-4.32m-27.368-1.44a5.76 5.76 0 0 0-5.761 5.761v34.57a5.76 5.76 0 0 0 5.761 5.761H94.24A5.76 5.76 0 0 0 100 92.992v-34.57a5.76 5.76 0 0 0-5.761-5.761z\",\n clipRule: \"evenodd\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#09F\",\n d: \"M69.34 68.3a2.47 2.47 0 0 1 2.47-2.47h18.107a2.47 2.47 0 1 1 0 4.939H71.81a2.47 2.47 0 0 1-2.47-2.47\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FF6100\",\n d: \"M69.34 76.53a2.47 2.47 0 0 1 2.47-2.47h18.107a2.47 2.47 0 0 1 0 4.939H71.81a2.47 2.47 0 0 1-2.47-2.47\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FFB629\",\n d: \"M69.34 84.76a2.47 2.47 0 0 1 2.47-2.469h18.107a2.47 2.47 0 1 1 0 4.939H71.81a2.47 2.47 0 0 1-2.47-2.47\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M37.143 8.137a5.76 5.76 0 0 1 5.762-5.762h27.367a5.76 5.76 0 0 1 5.761 5.762v34.569a5.76 5.76 0 0 1-5.761 5.761H42.905a5.76 5.76 0 0 1-5.762-5.761z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#B1C3E9\",\n fillRule: \"evenodd\",\n d: \"M70.272 3.815H42.905a4.32 4.32 0 0 0-4.321 4.322v34.569a4.32 4.32 0 0 0 4.32 4.32h27.368a4.32 4.32 0 0 0 4.321-4.32V8.136a4.32 4.32 0 0 0-4.321-4.32m-27.367-1.44a5.76 5.76 0 0 0-5.762 5.762v34.569a5.76 5.76 0 0 0 5.762 5.761h27.367a5.76 5.76 0 0 0 5.761-5.761V8.136a5.76 5.76 0 0 0-5.761-5.761z\",\n clipRule: \"evenodd\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#09F\",\n d: \"M45.374 18.013a2.47 2.47 0 0 1 2.469-2.469H65.95a2.47 2.47 0 1 1 0 4.939H47.843a2.47 2.47 0 0 1-2.47-2.47\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FF6100\",\n d: \"M45.374 26.244a2.47 2.47 0 0 1 2.469-2.47H65.95a2.47 2.47 0 1 1 0 4.94H47.843a2.47 2.47 0 0 1-2.47-2.47\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FFB629\",\n d: \"M45.374 34.475a2.47 2.47 0 0 1 2.469-2.47H65.95a2.47 2.47 0 1 1 0 4.94H47.843a2.47 2.47 0 0 1-2.47-2.47\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M12 58.422a5.76 5.76 0 0 1 5.762-5.761h27.367a5.76 5.76 0 0 1 5.761 5.761v34.57a5.76 5.76 0 0 1-5.761 5.761H17.762A5.76 5.76 0 0 1 12 92.992z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#B1C3E9\",\n fillRule: \"evenodd\",\n d: \"M45.129 54.101H17.762a4.32 4.32 0 0 0-4.322 4.321v34.57a4.32 4.32 0 0 0 4.322 4.32h27.367a4.32 4.32 0 0 0 4.321-4.32v-34.57a4.32 4.32 0 0 0-4.321-4.32m-27.367-1.44A5.76 5.76 0 0 0 12 58.422v34.57a5.76 5.76 0 0 0 5.762 5.761h27.367a5.76 5.76 0 0 0 5.761-5.761v-34.57a5.76 5.76 0 0 0-5.761-5.761z\",\n clipRule: \"evenodd\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#09F\",\n d: \"M20.23 68.3a2.47 2.47 0 0 1 2.47-2.47h18.107a2.47 2.47 0 0 1 0 4.939H22.7a2.47 2.47 0 0 1-2.47-2.47\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FF6100\",\n d: \"M20.23 76.53a2.47 2.47 0 0 1 2.47-2.47h18.107a2.47 2.47 0 0 1 0 4.939H22.7a2.47 2.47 0 0 1-2.47-2.47\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FFB629\",\n d: \"M20.23 84.76a2.47 2.47 0 0 1 2.47-2.469h18.107a2.47 2.47 0 0 1 0 4.939H22.7a2.47 2.47 0 0 1-2.47-2.47\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"url(#noFormsFoundIcon_svg__b)\",\n d: \"M53.466 100.228c7.187-1.175 12.06-7.954 10.885-15.14-1.175-7.188-7.954-12.061-15.14-10.886-7.188 1.175-12.061 7.954-10.886 15.14 1.175 7.188 7.954 12.061 15.14 10.886\",\n opacity: 0.5\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#0A1551\",\n d: \"m56.688 100.626 2.542-1.316 5.366 10.347-2.54 1.318z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#0A1551\",\n d: \"M44.649 74.322a14.52 14.52 0 0 0-4.645 21.96 14.518 14.518 0 0 0 25.766-7.47 14.5 14.5 0 0 0-1.54-8.287 14.525 14.525 0 0 0-19.579-6.203zm12.187 23.471a11.934 11.934 0 1 1 5.09-16.085 11.934 11.934 0 0 1-5.09 16.08zM67.435 118.328a2.12 2.12 0 0 1-2.347-.259 2.1 2.1 0 0 1-.518-.648l-7.354-14.16 3.77-1.96 7.356 14.16a2.12 2.12 0 0 1-.258 2.349c-.18.214-.4.39-.649.518\"\n}))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"noFormsFoundIcon_svg__b\",\n x1: 49.21,\n x2: 53.466,\n y1: 74.202,\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: \"noFormsFoundIcon_svg__a\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M0 .375h108v120H0z\"\n})))));\nexport default SvgNoFormsFoundIcon;","var _circle, _path, _path2, _path3, _path4, _path5, _g, _path6, _path7, _path8, _path9, _path10, _path11, _g2, _path12, _path13, _path14, _path15, _path16, _path17, _g3, _path18, _path19, _path20, _path21, _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 SvgNoSignsFoundIcon = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 105,\n height: 124,\n fill: \"none\"\n}, props), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 52.5,\n cy: 56.449,\n r: 52.5,\n fill: \"#F3F3FE\"\n})), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n stroke: \"#B1C3E9\",\n strokeWidth: 1.415,\n d: \"M67.348 45.292H41.452c-2.586 0-4.744-2.22-4.744-5.042V5.75c0-2.82 2.16-5.042 4.743-5.042h20.48l10.162 10.434V40.25c0 2.821-2.16 5.042-4.745 5.042Z\"\n})), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#B1C3E9\",\n d: \"m62.319 0 10.483 10.705h-5.945a4.537 4.537 0 0 1-4.538-4.536z\"\n})), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#09F\",\n d: \"M43.077 15.117a2.377 2.377 0 0 1 2.378-2.378h17.434a2.377 2.377 0 0 1 0 4.755H45.455a2.377 2.377 0 0 1-2.378-2.377\"\n})), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FF6100\",\n d: \"M43.078 23.04a2.377 2.377 0 0 1 2.377-2.377h17.434a2.377 2.377 0 1 1 0 4.755H45.455a2.377 2.377 0 0 1-2.377-2.378\"\n})), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"noSignsFoundIcon_svg__a\",\n width: 22,\n height: 17,\n x: 44,\n y: 20,\n maskUnits: \"userSpaceOnUse\",\n style: {\n maskType: \"alpha\"\n }\n}, _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#D9D9D9\",\n d: \"M44.034 20.512h21.134v16.362H44.034z\"\n}))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#noSignsFoundIcon_svg__a)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FFB629\",\n stroke: \"#FFB629\",\n strokeWidth: 0.581,\n d: \"M53.99 32.41c.102.013.157.07.124.13l.077.041.02.012c.026.007.051-.012.057-.041l-.008-.02-.008-.024a.2.2 0 0 1 .046-.063l.016-.016.072-.055.03-.055c.02.034.044.046.05.027a.2.2 0 0 1 .069-.072c.028-.02.12.01.127-.004.008-.013.063-.01.07-.036l.026-.012.006-.002a5 5 0 0 1 .172-.09l.092.019.01.002c.01.002.029-.012.042-.03s.074-.054.096-.047.113-.049.155-.065l.04-.007.012-.002c.016.012.047.004.068-.017a.6.6 0 0 1 .117-.094c.023-.007.13-.052.186-.074l.059-.006.045-.004a1 1 0 0 0 .134-.124c.027-.032.142.027.172.018l.02-.02c.021-.021.028-.06.047-.083l.005-.006c.026.016.088.009.139-.015.05-.024.182-.097.2-.076.018.02.111-.04.15-.06l.022-.03.057-.076c.059.04.111.061.116.047l.002-.014.006-.039a.2.2 0 0 0 .09-.037c.019-.017.095-.064.123-.097.027-.032.118.034.126.027.007-.008.067-.046.115-.075.047-.029.174-.108.178-.113a.5.5 0 0 1 .108-.018c.055-.006.198-.075.21-.07.014.007.075-.021.129-.055.054-.033.223-.052.229-.054s.026-.021.01-.03c-.017-.007-.02-.056.022-.093s.177.025.184.017c.007-.007.053-.032.084-.05.03-.02.136-.035.15-.054l.015-.017c.012-.013.028-.033.04-.032l.04.003c.041.011.1-.012.128-.052l.03-.015.043-.02c.056.004.136.017.18.03.043.011.183-.097.236-.134s.254.002.305.015l.043-.045a.2.2 0 0 1 .081-.047l.044-.01c.044.024.11.021.148-.007l.04-.018c.013-.006.039.033.058.031l.062-.005c.066-.019.142-.04.168-.046s.106.036.14.021c.033-.015.155.025.189.025l.03-.004.015-.003a.3.3 0 0 1 .113-.012c.048.002.228.08.315.093.088.013.408.026.517.024l.07.097q.044.067.096.006l.004-.005c.028.02.061.041.074.048s.05 0 .072-.005c.023-.004.073.05.097.074s.119.124.165.16.166.248.21.351l.067.077.004.005c-.01.022.004.09.031.152s.088.241.092.253c.004.011.02.101.033.167l.016.06c.011.04.085.04.053.11l-.033.07c.055.02.109.055.12.077s.061.127.082.183l.034.016.058.03c.072.013.167.028.21.032.045.003.194-.003.233.007l.037.008.03.007a.3.3 0 0 0 .127-.025c.036-.016.215-.007.242-.039l.04.055c.026.036.027-.023.027-.042 0-.069.015-.102.079-.054l.01.007c.016-.003.037-.037.044-.076l.045.043.012.012c.042-.023.084-.031.095-.02.01.013.05.047.061.042l.01-.004.254-.112.05-.023c.054-.03.124-.074.157-.096l.046.026.032.02c.03-.046.068-.082.084-.08l.014.003.02.004a1 1 0 0 0 .174-.05c.007-.009.051.004.077.038.025.035.102-.07.13-.07.026-.001.096-.062.115-.06s.08-.023.092-.053.08.018.087.006.07-.062.118-.062l.05-.002h.026a.5.5 0 0 0 .133-.104l.066.017.05.012a.7.7 0 0 0 .143-.041c.025-.013.1-.067.13-.074l.034.01c.078.025.135-.008.252-.106l.008-.007c.018.005.09 0 .16-.013l.04-.035.011-.01c.023.001.037.017.032.034l-.002.016-.005.039c.009.048.036.044.06-.01l.032-.035.034-.035c.05-.025.08-.025.067.002-.014.026.029.083.113.054s.29-.055.26-.068-.133-.012-.158.012l-.026.014-.018.01c-.027-.002-.048-.017-.047-.032 0-.016.041-.067.076-.091s.164-.022.172-.029c.009-.006.037-.036.047-.018s.101.023.186-.016l.053-.04c.039-.031.057-.03.099-.003.055.035.12.038.174-.03l.018-.023a.5.5 0 0 1 .12-.013c.031.002.145-.022.19.01l.047-.044.04-.037.104-.024h.112c.056 0 .214-.012.227-.025.014-.012.09-.018.134.022s.216-.041.245-.045l.025.006c.028.007.062.043.079.033.022-.012.026-.06.045-.085l.015-.019c.027-.009.062-.007.079.005.016.01.063.004.076-.01.012-.012.06-.035.075-.026l.015.002c.044.004.098.022.13 0 .05-.034.087-.057.137-.01l.007.006c.012.001.038-.018.06-.044s.146.01.18.011c.036.002.128-.026.132-.063.003-.036.103.006.133.03.03.025.177.021.198.036.02.014.076-.037.095-.03.019.009.083.007.105-.02.021-.026.111-.069.16-.047l.028.025.088.079c-.031-.075-.021-.114.022-.086.044.028.177.05.19.062.013.013.06.04.068.024.007-.017.06-.114.092-.177l.076.07c.044.041.127-.012.177.054l.008.011a.3.3 0 0 0 .105-.05c.03-.023.127-.019.183-.01l.05.005.029.004a1 1 0 0 1 .129-.035c.037-.007.216.02.245.015.03-.006.115-.015.12-.001.003.013.044.058.075.055.032-.003.056-.102.064-.103s.093.021.173.044l.07-.023.02-.006c.019-.008.077-.003.129.013s.22.01.275.05l.05-.057c.035-.038.053-.064.063.02.004.04.046.032.076.004l.027-.025a.4.4 0 0 0 .138-.03l.035-.01.009-.002c.014.021.039.05.055.067.016.016.097.017.147.015l.008-.008.049-.051c.037.035.086.055.11.046l.022-.011.033-.017c.086-.01.193-.03.237-.044s.195.02.242.037l.04-.035.037-.032a.5.5 0 0 0 .179.02c.06-.005.217.016.239-.004l.019-.012.005-.004q.012-.01.02.013c.005.014.046.037.075-.005.029-.04.188.008.234-.002s.155.067.157.065.043-.023.083-.043.294-.004.33 0l.03-.012.01-.003c.006-.042.022-.06.036-.04s.072.05.093.051a.6.6 0 0 0 .154-.06c.049-.024.202.006.225.015.024.01.13-.006.172.009l.039-.003.017-.002c.017-.043.05-.059.074-.035s.091.019.11 0c.019-.017.115-.003.162-.043l.039.078c.007-.003.052-.013.099-.024.046-.01.156-.03.181-.04.026-.008.115.005.141.03.027.027.127-.036.163-.021s.161-.023.186-.023.106.031.135.044l.03-.026c.016-.014.047-.017.067-.01l.042.015a.33.33 0 0 0 .167.028l.042-.012.062-.018c.068.009.183.004.255-.012l.05.071.103-.055.008-.008a.5.5 0 0 1 .162-.001c.08.008.294.077.309.08s.1-.03.149-.056c.048-.025.183.038.19.04l.137.02c.061.01.225.103.227.091s.008-.058.014-.078c.005-.02.079.007.118 0 .039-.006.144.005.134.055s.158.069.154.05 0-.079.02-.087.08.013.113.029c.032.016.156-.006.182.003l.145.047c.025.01.101-.014.124-.035.024-.02.1.04.118.04.018.001.085-.012.11-.008.023.005.102.043.132.052l.03-.022.01-.007c.031.027.022.08-.019.115l.09.005c.043.002.08 0 .07-.067l-.006-.044a.24.24 0 0 1 .146.008l.016.045c.016.045-.016.061-.056.061h-.004c-.005.04.015.075.045.079l.012-.014c.03-.032.044-.085.076-.11l.031-.024c.05-.006.093.011.095.037 0 .027.039.122.08.151.042.03.165-.034.168-.034s.055.014.106.031.181-.006.165.007c-.017.014-.042.096-.043.144v.096c0 .056.023.113.05.128.03.014.1.09.099.137-.002.046-.109.094-.109.063s-.013-.13-.029-.11a.3.3 0 0 0-.045.132c.002.04.087.116.124.1.036-.014.139-.033.124.002-.014.034-.004.107.004.132.007.026.03.12.042.15l.014.003c.049.01.052.042.034.075l-.018.033a.4.4 0 0 1-.098-.07c-.003-.01-.025-.04-.029-.009-.004.032-.034.11-.053.072a.4.4 0 0 1-.031-.113c-.003-.022-.04-.066-.054-.042-.015.023-.041.086-.064.101-.023.014-.108.093-.174.105l-.064-.014-.063-.014c-.073.004-.142-.002-.151-.014s-.057-.04-.076-.026a1 1 0 0 0-.1.082c-.013.017-.086-.009-.113.012s-.14-.018-.17.005c-.029.024-.137-.055-.173-.063-.037-.008-.159.037-.208.017l-.05-.002-.035-.002a1 1 0 0 1-.092 0c-.011-.003-.136.007-.256.013-.12.004-.47.024-.509.013s-.211.014-.28.013l-.059-.023-.037-.015a1 1 0 0 1-.102.054l-.016-.01-.108-.078a1.2 1.2 0 0 1-.311.02c-.044-.01-.205.01-.252.01-.046.002-.21.004-.259.002-.049-.001-.17-.03-.186.038l-.07-.037-.053-.026a.4.4 0 0 1-.186 0l-.039.013-.047.016c-.042-.014-.095-.01-.118.01s-.125-.066-.18-.093c-.055-.028-.227.078-.28.077-.052 0-.205-.004-.228-.026s-.136.022-.168.028c-.031.006-.131.01-.154.021a.5.5 0 0 1-.15-.003 1 1 0 0 0-.165-.002c-.029.008-.1-.042-.106-.043a3 3 0 0 0-.213.062c-.108.033-.317.005-.344.006-.028.001-.154.01-.222.023-.068.011-.326-.055-.43-.064s-.38.08-.392.079-.118-.032-.208-.056l-.074.054c-.035.025-.054-.063-.088 0l-.022.04c-.031-.03-.204-.064-.384-.073l-.16.017-.042.004-.18-.028-.017.026c-.039.057-.058-.03-.09 0-.044.044-.085-.017-.129-.023l-.046-.006a.3.3 0 0 0-.13.07c-.025.028-.128-.03-.162-.013-.034.016-.146-.054-.18-.067s-.118.052-.124.054-.1-.015-.204-.03l-.096.021-.048.011a.4.4 0 0 0-.152.027c-.033.015-.146-.053-.205-.047a2 2 0 0 1-.341.003l-.06.061-.012.013a.8.8 0 0 0-.261-.048c-.098-.003-.371.059-.397.043s-.122.031-.148.043-.093-.028-.097-.025l-.099.049-.041.005-.03.004a.4.4 0 0 0-.132-.026l-.025.016-.05.032a.4.4 0 0 0-.137-.03c-.026.003-.113.023-.135.052s-.12-.03-.145-.035c-.026-.005-.11.051-.146.058-.037.008-.17.001-.207.006-.037.004-.206.034-.294.045-.087.012-.36.027-.41.025-.051-.003-.194.055-.23.057-.035.001-.164.032-.208.037s-.194.038-.236.036-.185.066-.236.082c-.052.016-.242.019-.3.022s-.22.068-.241.073-.102.007-.135.008c-.033 0-.123.05-.152.054-.03.003-.162.037-.231.066a3 3 0 0 1-.397.1c-.074.014-.263.11-.288.088s-.092.046-.11.044-.088.031-.113.042c-.026.01-.104.057-.128.065-.023.008-.125.05-.183.07s-.253.102-.311.123a3.4 3.4 0 0 0-.408.182l-.108.023-.045.01a.6.6 0 0 0-.14.058c-.024.016-.11.034-.135.044a.5.5 0 0 1-.164.026c-.04-.01-.249.11-.398.165l-.143.009c-.041.002-.084-.004-.123.007-.047.013-.09.05-.136.057l-.031.005c-.038-.024-.09-.025-.114-.001-.025.023-.134-.023-.16-.036l-.13-.052c-.018-.006-.067.005-.085-.01s-.097.02-.117.031c-.02.012-.147-.018-.245-.055l-.087-.04-.01-.004c-.003-.03-.019-.042-.035-.024-.017.017-.12.043-.185.01-.064-.034-.222-.25-.243-.33l-.092-.027-.045-.013a2 2 0 0 0-.091-.235 2 2 0 0 0-.131-.212c-.038-.043-.046-.21-.053-.216a.4.4 0 0 0-.053-.038 1 1 0 0 1-.11-.18l-.085-.039c-.073-.033-.128-.113-.198-.161-.02-.014-.06.014-.092.02-.051.008-.103.01-.153.022l-.053.014-.147.064c-.024.01-.101-.005-.124-.018s-.083.056-.124.048l-.037-.003c-.049-.003-.1-.015-.146-.001l-.083.026c-.09.03-.193.055-.227.056s-.076.109-.103.118a1 1 0 0 1-.159.041.8.8 0 0 0-.196.068c-.05.027-.203.032-.211.036s-.035.033-.06.054c-.023.021-.13.064-.158.087s-.16.043-.207.062-.19.092-.22.093c-.031.001-.122.035-.18-.003l.016.118c.001.006-.017.022-.028.023l-.059.006a.6.6 0 0 1-.157.103c-.04.015-.182.059-.227.076l-.2.073c-.02.007-.073.054-.108.021-.034-.033-.105.105-.122.121l-.014-.003c-.076-.015-.128.047-.193.068l-.033.01c-.028.023-.06.04-.073.038s-.047.015-.047.042-.07-.008-.083 0a.4.4 0 0 1-.151-.003l-.015.094-.008.047a4 4 0 0 0-.22.034c-.055.01-.186.1-.2.095a1.2 1.2 0 0 0-.278.01l-.037.157-.016.065c-.027-.04-.08-.06-.117-.044a1 1 0 0 0-.208.128l-.038-.074c-.002-.004-.037.005-.05.017l-.068.065a.8.8 0 0 0-.198.085c-.03.022-.153.007-.204.055l-.068-.002c-.04 0 .012.093-.056.07l-.026-.008a.14.14 0 0 0-.086.031c-.017.018-.076-.022-.1-.007a.4.4 0 0 0-.126.145l-.066-.032-.02-.01a.3.3 0 0 1-.136.077l-.027-.004-.037-.005c-.038.005-.17.042-.292.082l-.1.066c-.02.012-.026.047-.058.013l-.036-.038a.4.4 0 0 1-.09.104l-.027.001-.059.002a1 1 0 0 0-.107.074 1 1 0 0 1-.147.045l-.063.044-.058.04c-.077.033-.148.048-.158.032s-.072.002-.094-.015c-.021-.018-.05.073-.073.078h-.022l-.015-.001c-.015-.01-.057.007-.094.038l-.037.025a.25.25 0 0 1-.125.039l-.023.002a1 1 0 0 0-.114.111c-.038.044-.198-.021-.227-.018-.03.003-.108.061-.142.07s-.144.046-.174.039-.082.092-.118.098a.4.4 0 0 1-.155-.04c-.021-.014-.08.075-.11.092a.07.07 0 0 1-.083-.014c-.014-.018-.097.023-.125.042-.029.02-.115.047-.127.02-.012-.028-.1.026-.124.041l-.003-.004c-.057-.068-.083-.003-.118.029l-.005.005c-.012-.002-.037.01-.057.028-.02.017-.078-.033-.083-.046-.006-.014-.044-.032-.07.005-.024.036-.124.002-.12-.01.005-.01-.013-.03-.05-.02s-.156-.031-.181-.038-.121.001-.15 0c-.029 0-.212 0-.343-.006-.13-.006-.44-.103-.455-.137-.014-.033-.164-.06-.222-.089l-.028-.048-.034-.06a1 1 0 0 1-.107-.094.4.4 0 0 0-.088-.06c-.032-.02-.106-.13-.13-.155-.024-.026-.025-.152-.045-.187a.5.5 0 0 1-.044-.184c.008-.027-.062-.054-.063-.066l.003-.01c.025-.066-.007-.11-.054-.136l-.026-.014a.3.3 0 0 1 .062-.07l.005-.044.004-.03c.025-.054.02-.08-.01-.057-.032.023-.103.065-.108.058-.006-.008.024-.1.035-.139.012-.038-.05-.138-.06-.155s-.018-.08-.058-.101l.002-.012.01-.077a2 2 0 0 1-.078-.261c-.015-.074-.116-.283-.126-.327l-.012-.038-.02-.06a2.3 2.3 0 0 1-.111-.391v-.013c.002-.055.016-.114.003-.164l-.048-.178c.023-.195.034-.38.023-.409l.005-.025.007-.032a1.2 1.2 0 0 0 .045-.23l.126-.16.004-.006a.2.2 0 0 1 .012-.07c.009-.026-.017-.093.005-.11.022-.016.07-.162.117-.248l.027-.08c.018-.054.026-.11.07-.144l.065-.051c-.006-.085.006-.16.029-.164.022-.005.08-.03.062-.04s-.055-.04-.04-.046.05-.026.048-.032a.2.2 0 0 0-.05-.05c-.022-.015-.131.02-.175.038-.044.02-.202.097-.262.114s-.2.125-.214.116l-.014-.01-.14.055c-.032.02-.062.044-.096.062l-.022.012a.13.13 0 0 0-.064.08l-.039.006-.023.004a2 2 0 0 1-.16.07c-.065.024-.248.157-.291.175l-.04.017-.034.014a2 2 0 0 0-.182.112 6 6 0 0 1-.35.212c-.064.032-.252.138-.272.168s-.118.077-.149.092a3 3 0 0 1-.182.078c-.039.014-.142.06-.14.07.001.012-.063.086-.147.133l-.506.282-.081.097c-.049.057-.088.127-.147.175l-.056.045c-.06.053-.15.143-.201.2s-.253.159-.277.181c-.023.023-.105.065-.14.05l-.029-.007-.06-.014c-.068-.013-.149-.006-.18.014-.03.02-.11-.037-.115-.03a.3.3 0 0 1-.104.014l.012-.064c.004-.02.016-.037.021-.056.017-.059.051-.114-.045-.142a.14.14 0 0 1-.095-.15c.005-.048-.021-.05-.056-.064l-.027-.01a1.2 1.2 0 0 0-.16-.243l.044-.118.001-.002-.122-.12-.007-.104-.005-.083a1 1 0 0 1-.097-.254.8.8 0 0 1 .032-.248l-.037-.035c-.006-.005-.004-.034.002-.04l.022-.02a.056.056 0 0 0 .019-.077l.03-.031c.016-.017.024-.048.027-.074.004-.026-.014-.057-.005-.077.013-.032.041-.054.062-.082l.043-.06c.049-.063.075-.142.06-.173-.017-.032.084-.067.104-.093s.104-.056.101-.07.037-.072.061-.103c.025-.03.11-.094.121-.106.011-.01.03-.07.038-.085.006-.016.054-.061.092-.101s.189-.095.212-.108c.024-.013.074-.101.1-.123s.083-.09.088-.075.027.037.032-.011c.004-.048.13-.145.183-.204l.077.044c.006.003.024-.011.031-.022q.035-.05.066-.102c.026-.043.041-.017.072 0 .038.02.085.012.03-.055a.2.2 0 0 1 .055-.064c.012-.008.048.02.054.013l.087-.109c.13-.05.245-.11.256-.133l.014-.018.007-.008c.018.004.06.023.095.042l.013-.044.007-.023c-.023-.045-.02-.08.005-.077a.7.7 0 0 0 .138-.02c.027-.009.111-.1.144-.164l.044-.03.023-.016a1 1 0 0 0 .253-.042l.023-.106c0-.004.026-.001.04 0 .022.003.052.017.066.007l.024-.02c-.004-.04.023-.064.06-.055l.03-.009c.035-.01.067-.036.096-.06l.03-.026c.03-.036.064-.061.078-.056s.064-.027.09-.058l.027-.01.026-.007a.3.3 0 0 0 .105.02l.014-.013.026-.022c.024-.03.05-.066.059-.078.007-.013.045-.023.07 0l.016.008.06.028a.6.6 0 0 1 .21-.1l.048-.035.03-.022c.034-.034.079-.048.1-.029.02.019.076-.06.105-.064.03-.004.122-.015.145-.04.023-.024.099.044.117.046s.106-.045.157-.07h.059c.039.002.088 0 .125.005.037.006.038.001.041-.03l.002-.013c.007-.013.032-.01.055.006.023.017.098-.035.117-.036s.174-.004.3-.01c.128-.004.467.086.486.078.019-.009.08.013.106.034l.037-.027c.02-.015.055-.005.083-.008.052-.005.108.038.16-.017l.007-.006c.051.046.097.064.101.038s.11-.03.15-.02.151.11.181.143a.4.4 0 0 0 .155.062c.01 0 .06.04.108.081.049.042.139.204.127.225-.011.02.049.092.062.114.013.021.06.097.076.119a.6.6 0 0 1 .049.168c.005.046.03.183.037.161.009-.021.03-.027.036.02.005.046.041.203.035.255-.006.05.045.225.07.308s.099.31.127.316.129.17.162.182c.034.013-.002.118.018.136.02.017.06.074.052.093-.01.019-.002.078.006.101.007.025.05.251.081.289l-.078-.001h-.005a.3.3 0 0 0-.017.082c-.002.03.005.166.014.234l-.05.061c-.033.04-.042.116-.042.176v.049a.4.4 0 0 0-.1.119l-.016.05-.014.044a.7.7 0 0 1-.057.137.8.8 0 0 0-.062.15c-.006.03-.034.11-.03.155.006.047-.111.1-.123.135s-.076.171-.098.229-.125.285-.163.381l-.04.085c-.04.085-.088.165-.127.25l-.01.023c.004.036.062.052.127.036.066-.017.243.004.27 0l.01-.034.018-.057c.03.026.067.037.08.025a.6.6 0 0 1 .153-.049c.05-.01.163-.075.172-.033.01.043.118-.026.173-.044.056-.018.195-.132.225-.14.03-.007.116-.064.143-.064s.1-.035.117-.048.077.016.088.012.049-.031.067-.043a.3.3 0 0 1 .117-.015c.024.003.168-.099.272-.167l.117-.015.074-.01c.08-.02.167-.047.19-.059l.021-.015.05-.037c.064-.008.122-.027.13-.041.007-.015.04-.054.057-.055.016 0 .073-.007.09-.01a.4.4 0 0 0 .122-.128l.06.076c.003.003.033-.01.04-.022z\"\n}))), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#0A1551\",\n d: \"M76.131 20.923a1.545 1.545 0 0 0-2.185 0l-9.004 9.004-.83 3.319a.773.773 0 0 0 .937.937l3.32-.83 9.003-9.004a1.545 1.545 0 0 0 0-2.185z\"\n})), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n stroke: \"#B1C3E9\",\n strokeWidth: 1.415,\n d: \"M43.348 96.292H17.452c-2.586 0-4.744-2.22-4.744-5.042v-34.5c0-2.82 2.16-5.042 4.743-5.042h20.48l10.162 10.434V91.25c0 2.821-2.16 5.042-4.745 5.042Z\"\n})), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#B1C3E9\",\n d: \"m38.319 51 10.483 10.705h-5.945a4.537 4.537 0 0 1-4.538-4.536z\"\n})), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#09F\",\n d: \"M19.077 66.117a2.377 2.377 0 0 1 2.378-2.378h17.434a2.377 2.377 0 0 1 0 4.755H21.455a2.377 2.377 0 0 1-2.378-2.377\"\n})), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FF6100\",\n d: \"M19.078 74.04a2.377 2.377 0 0 1 2.377-2.377h17.434a2.377 2.377 0 1 1 0 4.755H21.455a2.377 2.377 0 0 1-2.377-2.378\"\n})), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"noSignsFoundIcon_svg__b\",\n width: 22,\n height: 17,\n x: 20,\n y: 71,\n maskUnits: \"userSpaceOnUse\",\n style: {\n maskType: \"alpha\"\n }\n}, _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#D9D9D9\",\n d: \"M20.034 71.512h21.134v16.362H20.034z\"\n}))), _g2 || (_g2 = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#noSignsFoundIcon_svg__b)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FFB629\",\n stroke: \"#FFB629\",\n strokeWidth: 0.581,\n d: \"M29.99 83.41c.102.013.157.07.124.13l.077.041.02.012c.026.007.052-.011.057-.041l-.007-.02-.01-.024a.2.2 0 0 1 .047-.063l.016-.016.072-.055.03-.055c.02.034.044.046.05.027a.2.2 0 0 1 .069-.072c.028-.02.12.01.127-.004.008-.013.063-.01.07-.036l.026-.012.006-.002a5 5 0 0 1 .172-.09l.092.019.01.002c.01.002.029-.012.042-.03s.074-.054.096-.047.113-.049.155-.065l.04-.007.012-.002c.016.012.047.004.068-.017a.6.6 0 0 1 .117-.094c.023-.007.13-.052.186-.074l.059-.006.045-.004a1 1 0 0 0 .134-.124c.027-.032.142.027.172.018l.02-.02c.021-.021.028-.06.047-.083l.005-.006c.026.016.088.009.139-.015.05-.024.182-.097.2-.076.018.02.11-.04.15-.06l.022-.03.057-.076c.058.04.111.061.116.047l.002-.014.006-.039a.2.2 0 0 0 .09-.036c.019-.018.095-.065.123-.098.027-.032.118.034.126.027a2 2 0 0 1 .115-.075c.047-.029.174-.108.178-.112a.5.5 0 0 1 .108-.019c.055-.006.198-.075.21-.07.014.007.074-.021.129-.055.054-.033.223-.051.229-.054.006-.002.026-.021.01-.03-.017-.007-.02-.056.022-.093s.177.025.184.017c.007-.007.053-.032.084-.05.03-.02.136-.035.15-.054l.015-.017c.012-.013.028-.033.04-.032l.04.004c.041.01.1-.013.128-.053l.03-.015.043-.02c.056.004.136.017.18.03.043.011.183-.097.236-.134s.254.002.305.015l.043-.045a.2.2 0 0 1 .081-.047l.044-.01c.044.024.11.021.148-.007l.04-.018c.013-.006.039.033.058.031l.061-.005c.067-.019.142-.04.168-.045.026-.006.107.035.14.02s.156.025.19.025l.03-.004.015-.002a.3.3 0 0 1 .113-.013c.047.002.228.08.315.093s.408.026.517.024l.07.098q.044.066.096.005l.004-.005c.028.02.06.041.074.048.012.007.05 0 .072-.004.023-.005.073.05.097.073.025.024.119.124.165.16s.166.248.21.352l.067.076.004.005c-.01.022.004.09.031.153.027.061.088.24.092.252.004.011.02.101.033.167l.016.06c.011.04.085.04.053.11l-.033.07c.055.02.109.056.12.077.011.023.061.127.082.183l.033.016.059.03c.072.013.167.028.21.032.045.003.194-.003.233.007l.037.009.03.006a.3.3 0 0 0 .127-.025c.036-.016.215-.007.242-.039l.04.055c.026.036.027-.023.027-.042 0-.069.015-.102.079-.054l.01.007c.016-.003.037-.037.044-.076l.045.043.012.012c.042-.023.084-.031.095-.02.01.013.05.047.061.042l.01-.004q.127-.055.254-.112l.05-.023c.054-.03.124-.073.157-.096l.046.026.032.02c.03-.046.068-.082.084-.08l.014.003.02.004a1 1 0 0 0 .173-.05c.008-.008.052.004.078.039.025.034.102-.071.13-.072.026 0 .096-.06.115-.058.019.003.08-.024.092-.054s.08.018.087.006c.005-.012.07-.062.118-.062l.05-.002h.025a.5.5 0 0 0 .134-.104l.066.017.05.012a.7.7 0 0 0 .143-.041c.025-.013.1-.067.13-.074l.034.01c.078.025.135-.007.252-.106l.008-.007c.018.005.09 0 .159-.012l.04-.036.012-.01c.023.002.037.017.032.034l-.002.016-.005.039c.009.048.036.044.06-.01l.032-.034.034-.036c.05-.025.08-.024.067.002-.015.026.029.083.113.054s.29-.055.26-.068-.133-.012-.158.012l-.026.014-.018.01c-.027-.002-.048-.017-.048-.032.001-.016.042-.067.077-.091s.164-.022.172-.029c.009-.006.037-.036.047-.018.01.019.1.023.186-.015l.053-.041c.039-.031.057-.03.099-.003.055.035.12.038.174-.03l.018-.023a.5.5 0 0 1 .12-.013c.031.002.145-.022.19.01l.047-.044.04-.037.104-.024h.113c.055 0 .213-.012.226-.024s.09-.019.134.021.216-.041.245-.045l.025.006c.028.007.062.043.079.033.022-.012.026-.06.045-.085l.015-.019c.027-.009.062-.007.079.005.016.01.063.004.076-.01.012-.012.06-.035.075-.026l.015.002c.044.004.098.022.13 0 .05-.034.087-.057.137-.01l.007.006c.011.002.038-.018.06-.044s.146.01.18.011c.036.002.128-.026.132-.063.003-.036.103.006.133.03.03.025.177.021.198.036.02.014.076-.037.095-.03.018.009.083.007.105-.02.021-.026.111-.069.16-.047l.027.025.089.079c-.031-.075-.021-.114.022-.086.044.028.177.05.19.063s.06.04.068.023c.007-.017.06-.114.092-.177l.076.07c.044.041.127-.012.177.055l.008.01a.3.3 0 0 0 .104-.05c.03-.023.128-.019.184-.01l.049.005.03.004c.034-.012.092-.027.129-.035.037-.007.216.02.245.015.03-.006.115-.015.12-.001.003.014.044.058.075.055.032-.003.056-.102.064-.103a2 2 0 0 1 .173.044l.07-.023.02-.006c.019-.008.077-.003.129.013s.22.01.274.05l.052-.057c.034-.038.052-.064.062.02.004.04.046.032.076.004l.027-.025a.4.4 0 0 0 .137-.03l.036-.01.009-.002c.014.021.039.05.054.067.016.016.098.017.148.016l.008-.009.049-.051c.036.035.086.055.11.046l.022-.011.033-.017c.086-.01.193-.029.237-.043.044-.015.194.02.242.036l.04-.034.037-.033a.5.5 0 0 0 .179.02c.06-.005.217.016.239-.004l.019-.012.005-.003q.012-.011.02.012c.005.014.046.037.075-.005.029-.04.188.008.234-.002s.155.067.157.065.042-.023.083-.043c.04-.02.294-.004.33 0l.03-.012.01-.003c.006-.042.022-.06.036-.04s.072.05.093.052a.6.6 0 0 0 .154-.061c.049-.024.201.006.225.015.024.01.13-.006.172.009l.039-.003.017-.002c.017-.043.05-.059.074-.035s.091.019.11 0c.019-.017.115-.002.162-.042l.038.077c.008-.003.052-.013.1-.024.046-.01.156-.03.181-.04.026-.008.115.005.141.03.027.027.127-.036.163-.021s.161-.023.186-.023.106.031.135.044l.03-.026c.016-.014.047-.016.066-.01l.043.015a.33.33 0 0 0 .167.029l.042-.013.062-.018c.068.009.183.004.255-.011l.05.07.103-.055.008-.008a.5.5 0 0 1 .162-.001c.08.008.294.077.309.08a.5.5 0 0 0 .149-.056c.048-.025.183.039.19.04l.137.02c.061.01.225.104.227.091s.008-.058.014-.078c.005-.02.079.007.118 0 .039-.006.144.005.134.055s.158.069.153.05c-.004-.02 0-.078.02-.086s.08.012.114.028c.032.016.156-.006.182.003l.145.047c.025.01.101-.014.124-.034s.1.04.118.04.085-.013.11-.008c.023.004.102.042.131.051l.031-.022.01-.007c.031.027.022.08-.019.115l.09.005c.043.002.08 0 .07-.067l-.006-.044a.24.24 0 0 1 .146.009l.016.044c.016.045-.016.061-.056.061h-.004c-.005.04.015.075.045.079l.012-.013c.03-.033.043-.086.076-.11l.031-.024c.05-.007.093.01.095.036 0 .027.038.122.08.151.042.03.165-.034.168-.034s.055.014.106.031.181-.006.165.007c-.017.014-.042.096-.044.145v.095c0 .056.024.113.052.128s.1.09.098.137c-.002.046-.11.094-.11.063s-.012-.13-.028-.11a.3.3 0 0 0-.045.132c.001.04.087.116.123.1.037-.014.14-.033.125.002-.014.034-.004.107.004.133.007.025.03.12.041.149l.015.003c.049.01.051.042.033.075l-.017.033a.4.4 0 0 1-.098-.07c-.003-.01-.025-.04-.03-.009-.004.032-.033.11-.052.072a.4.4 0 0 1-.031-.113c-.003-.022-.04-.065-.054-.042-.015.023-.041.086-.064.101s-.108.093-.174.105l-.064-.014-.063-.014c-.073.005-.142-.002-.151-.014s-.057-.04-.076-.026a1 1 0 0 0-.1.082c-.013.017-.086-.009-.114.012-.027.02-.14-.018-.17.005-.028.024-.136-.055-.173-.063s-.158.038-.207.017l-.05-.002-.035-.001a1 1 0 0 1-.092-.001c-.011-.002-.136.007-.256.013s-.47.024-.51.013c-.039-.012-.21.014-.28.013l-.058-.023-.038-.015c-.025.016-.07.04-.101.054l-.016-.01-.108-.077c-.128.02-.268.03-.311.02-.044-.01-.205.01-.252.01-.046 0-.21.004-.259.002s-.17-.03-.186.037l-.07-.037-.053-.026a.4.4 0 0 1-.186 0l-.039.013-.047.016c-.042-.014-.095-.01-.118.01s-.125-.066-.18-.093c-.055-.028-.227.078-.28.078-.053-.001-.205-.005-.229-.027-.023-.022-.135.022-.167.028-.031.006-.131.01-.154.021a.5.5 0 0 1-.15-.003 1 1 0 0 0-.165-.002c-.029.008-.1-.042-.106-.043a3 3 0 0 0-.213.062c-.108.033-.317.005-.345.006s-.153.01-.221.023c-.068.011-.326-.055-.43-.064-.105-.008-.38.08-.392.079s-.118-.031-.208-.056l-.074.054c-.035.025-.054-.063-.088 0l-.022.04c-.032-.03-.204-.064-.384-.073l-.16.017-.042.004-.18-.028-.017.026c-.039.057-.058-.03-.09 0-.044.044-.085-.017-.129-.022l-.047-.007a.3.3 0 0 0-.129.07c-.025.028-.128-.03-.162-.013-.035.016-.146-.054-.18-.067s-.118.052-.124.054-.1-.015-.204-.03l-.096.021-.048.011a.4.4 0 0 0-.152.027c-.033.015-.146-.053-.205-.047a2 2 0 0 1-.342.003l-.059.062-.012.012a.8.8 0 0 0-.261-.048c-.098-.003-.372.059-.397.043s-.122.032-.148.043c-.025.012-.093-.028-.098-.025l-.098.049-.041.005-.03.004a.4.4 0 0 0-.132-.026l-.026.016-.05.032a.4.4 0 0 0-.136-.03c-.026.003-.114.023-.135.052s-.12-.03-.145-.035c-.026-.005-.11.051-.146.058-.037.008-.17.001-.208.006-.037.004-.206.034-.293.045-.087.012-.36.027-.41.025-.051-.003-.194.055-.23.057-.035.001-.164.032-.208.037s-.194.038-.236.036-.185.066-.236.082c-.052.016-.242.019-.3.022s-.22.068-.241.073-.102.008-.135.008-.123.05-.153.054-.161.037-.23.066c-.07.03-.323.088-.397.1-.074.014-.263.11-.288.088s-.092.046-.11.044-.088.031-.114.042c-.025.01-.103.057-.127.065-.023.008-.125.05-.183.07s-.253.102-.311.123a3.4 3.4 0 0 0-.408.182l-.108.023-.046.01a.6.6 0 0 0-.14.058c-.024.016-.109.034-.134.044a.5.5 0 0 1-.164.026c-.04-.01-.249.11-.398.165l-.143.009c-.041.002-.084-.004-.123.007-.047.013-.09.05-.136.057l-.031.005c-.038-.024-.09-.025-.114-.001-.025.023-.134-.023-.16-.036l-.13-.052c-.018-.006-.067.005-.086-.01s-.096.02-.116.031c-.02.012-.147-.018-.245-.055l-.088-.04-.01-.004c-.002-.03-.018-.042-.035-.024-.016.017-.12.043-.184.01-.064-.034-.222-.25-.243-.33l-.092-.027-.045-.013a2 2 0 0 0-.091-.235 2 2 0 0 0-.132-.212c-.037-.043-.045-.21-.052-.216a.4.4 0 0 0-.054-.038 1 1 0 0 1-.11-.18l-.084-.039c-.073-.033-.128-.113-.198-.161-.02-.014-.06.014-.092.02-.051.008-.103.01-.153.022l-.053.014-.147.064c-.024.01-.102-.005-.125-.018-.022-.013-.082.056-.123.048l-.037-.003c-.049-.003-.1-.015-.146-.001l-.083.026c-.09.03-.193.055-.227.056s-.076.109-.103.118a1 1 0 0 1-.159.041.8.8 0 0 0-.197.068c-.048.027-.202.032-.21.036s-.035.033-.06.054c-.023.021-.13.064-.159.087-.027.023-.159.043-.206.062s-.19.092-.22.093c-.031.001-.122.035-.18-.003l.016.118c.001.006-.018.022-.028.023l-.059.006a.6.6 0 0 1-.157.103c-.04.015-.182.059-.227.076l-.2.073c-.02.007-.073.054-.108.021-.034-.033-.105.105-.122.121l-.014-.003c-.076-.015-.128.047-.193.068l-.033.01c-.028.023-.06.04-.073.038-.013-.001-.047.015-.047.042s-.07-.008-.083 0a.4.4 0 0 1-.152-.003l-.014.094-.008.047a4 4 0 0 0-.22.034c-.055.01-.186.1-.2.095a1.2 1.2 0 0 0-.278.01l-.038.157-.015.065c-.027-.04-.08-.06-.117-.044a1 1 0 0 0-.208.128l-.038-.074c-.002-.004-.037.005-.05.017l-.068.066a.8.8 0 0 0-.198.084c-.03.022-.153.007-.204.055l-.068-.002c-.04 0 .012.093-.056.07l-.026-.008a.14.14 0 0 0-.086.031c-.017.018-.076-.022-.1-.007a.4.4 0 0 0-.126.145l-.067-.032-.02-.01a.3.3 0 0 1-.135.077l-.027-.004-.037-.005c-.038.005-.17.042-.292.082l-.1.066c-.02.012-.026.047-.058.013l-.036-.038a.4.4 0 0 1-.09.104l-.027.001-.059.002a1 1 0 0 0-.107.074 1 1 0 0 1-.147.045l-.063.043-.058.04c-.077.034-.148.05-.158.033-.01-.016-.072.002-.094-.015-.021-.018-.05.073-.073.078h-.022l-.015-.001c-.015-.01-.057.007-.094.038l-.037.024a.25.25 0 0 1-.125.04l-.023.002a1 1 0 0 0-.114.111c-.038.044-.198-.022-.227-.018-.03.003-.108.061-.142.07s-.144.045-.175.039c-.03-.007-.08.092-.117.097a.4.4 0 0 1-.156-.039c-.02-.014-.079.074-.11.092a.07.07 0 0 1-.082-.014c-.014-.019-.097.023-.125.042-.029.02-.115.047-.127.02-.012-.028-.1.026-.124.041l-.003-.004c-.057-.068-.083-.003-.118.029l-.005.005c-.012-.002-.037.01-.057.028-.02.017-.078-.033-.083-.046-.006-.014-.044-.032-.07.004-.024.037-.124.003-.12-.008s-.013-.032-.05-.021-.156-.031-.181-.038-.121.001-.15 0c-.029 0-.212 0-.343-.006-.13-.006-.44-.103-.455-.137-.014-.033-.164-.06-.222-.089l-.028-.048-.034-.06a1 1 0 0 1-.107-.094.4.4 0 0 0-.088-.06c-.032-.019-.106-.13-.13-.155-.024-.026-.025-.152-.045-.187a.5.5 0 0 1-.044-.184c.008-.027-.062-.054-.063-.066l.003-.01c.024-.066-.007-.11-.054-.136l-.026-.014a.2.2 0 0 1 .062-.07l.005-.044.003-.03c.026-.054.021-.08-.01-.057-.03.022-.102.065-.107.057-.006-.007.024-.1.035-.138s-.05-.138-.06-.155-.018-.08-.058-.101l.001-.012.012-.077a2 2 0 0 1-.08-.261c-.014-.074-.115-.283-.125-.327l-.012-.038-.02-.06a2.3 2.3 0 0 1-.112-.391l.001-.014c.002-.054.016-.113.003-.163l-.048-.178c.023-.195.033-.38.022-.409l.006-.025.007-.033c.014-.034.034-.137.045-.23l.125-.16.005-.005a.2.2 0 0 1 .012-.07c.009-.026-.017-.094.005-.11s.07-.162.117-.248l.027-.08c.018-.054.026-.11.07-.144l.065-.051c-.007-.085.006-.16.029-.164.022-.005.08-.03.062-.04s-.055-.04-.04-.046.05-.026.048-.032a.2.2 0 0 0-.05-.05c-.022-.016-.131.02-.175.038-.044.02-.203.097-.262.114-.06.017-.2.125-.214.116l-.014-.01-.14.055c-.032.02-.063.044-.096.061l-.022.013a.13.13 0 0 0-.064.08l-.039.006-.023.004a2 2 0 0 1-.16.07c-.065.024-.248.157-.291.175l-.04.016-.034.015a2 2 0 0 0-.182.111c-.064.045-.287.18-.35.213-.065.032-.252.138-.272.168s-.118.077-.149.092a3 3 0 0 1-.182.078.5.5 0 0 0-.14.07c.001.012-.063.086-.147.133s-.395.222-.506.282l-.082.097c-.048.057-.087.127-.146.175l-.056.045c-.06.053-.15.143-.202.2-.05.058-.252.159-.276.181-.023.023-.106.065-.14.05l-.029-.007-.061-.014c-.068-.013-.148-.006-.178.014s-.112-.037-.117-.03a.3.3 0 0 1-.103.014l.012-.064c.003-.02.016-.037.021-.056.017-.059.051-.114-.045-.142a.14.14 0 0 1-.096-.15c.006-.048-.02-.05-.055-.064l-.028-.01a1.2 1.2 0 0 0-.16-.244l.045-.117.001-.003-.122-.12-.007-.103-.005-.083a1 1 0 0 1-.097-.254.8.8 0 0 1 .032-.248l-.037-.035c-.006-.005-.004-.034.002-.04l.022-.02a.056.056 0 0 0 .019-.077l.03-.031c.016-.017.024-.048.027-.075.003-.025-.014-.056-.005-.076.013-.032.041-.054.062-.082l.043-.06c.049-.064.075-.142.06-.173-.017-.032.084-.067.104-.093s.104-.056.101-.07.037-.072.061-.103c.025-.03.11-.094.121-.106.011-.01.03-.07.038-.085.006-.017.054-.062.092-.102s.189-.094.212-.107c.024-.014.074-.101.1-.123s.083-.09.088-.075.027.037.032-.011c.004-.048.13-.146.183-.204l.077.044c.006.003.024-.011.031-.022q.035-.05.066-.102c.026-.043.041-.017.072 0 .038.02.085.012.03-.055a.2.2 0 0 1 .055-.064c.012-.008.048.02.054.013l.087-.109c.13-.05.245-.11.256-.134l.014-.017.007-.008c.018.004.06.022.095.042l.013-.044.007-.024c-.023-.044-.02-.078.005-.076a.7.7 0 0 0 .138-.02c.027-.009.111-.1.144-.164l.044-.03.023-.016a1 1 0 0 0 .253-.042l.023-.107c0-.003.026 0 .04.001.022.002.052.017.066.006l.024-.02c-.004-.039.023-.063.06-.054l.03-.009c.035-.01.067-.036.096-.06l.03-.026c.03-.036.064-.061.078-.057.014.005.064-.026.09-.057l.027-.01.026-.007a.3.3 0 0 0 .105.02l.014-.013.026-.022c.024-.03.05-.066.059-.078.007-.013.045-.023.07 0l.016.008.06.028a.6.6 0 0 1 .21-.1l.048-.035.03-.022c.034-.035.079-.048.1-.029.02.019.076-.06.105-.064.03-.004.121-.015.145-.04.023-.024.099.044.117.046s.106-.045.156-.07h.06c.039.001.088 0 .125.005.037.006.038.001.041-.03l.002-.013c.007-.014.032-.01.055.006.023.017.098-.035.117-.036s.174-.004.3-.01c.127-.004.467.086.486.078.019-.009.08.013.106.033l.037-.026c.02-.015.055-.005.082-.008.053-.005.108.038.161-.017l.006-.006c.052.046.098.064.102.038s.11-.03.15-.02.151.11.181.143.146.062.155.062.059.04.108.081c.049.042.139.204.127.225-.011.02.049.092.062.114.013.021.06.097.076.119a.6.6 0 0 1 .049.168c.005.046.03.183.037.161.008-.021.03-.027.035.02.006.046.042.203.036.255-.006.05.045.225.07.308s.099.31.127.316.129.17.162.182c.034.013-.002.118.018.135s.06.075.052.094c-.01.019-.002.077.006.101.007.024.05.251.081.288h-.084a.3.3 0 0 0-.016.082c-.002.03.005.166.014.234l-.05.061c-.033.04-.042.116-.042.176v.049a.4.4 0 0 0-.1.119l-.016.05-.014.044a.7.7 0 0 1-.057.137.8.8 0 0 0-.062.15c-.006.03-.034.11-.03.155.005.047-.111.1-.123.135-.012.034-.076.171-.098.229s-.125.285-.163.381l-.04.085c-.04.085-.088.165-.128.25l-.01.022c.005.037.062.053.128.037.066-.017.243.004.27 0l.01-.034.018-.057c.03.026.067.037.08.025a.6.6 0 0 1 .152-.049c.052-.01.164-.075.173-.033.01.043.118-.026.173-.044s.194-.132.225-.14c.03-.008.116-.064.143-.064s.1-.035.117-.048.077.016.088.012.049-.032.067-.043a.3.3 0 0 1 .117-.015c.024.003.168-.099.272-.167l.117-.016.074-.01c.08-.02.167-.046.19-.058l.021-.015.05-.037c.064-.008.122-.027.13-.042.007-.014.04-.053.057-.054.016 0 .073-.007.09-.01a.4.4 0 0 0 .122-.128l.06.076c.003.003.033-.01.04-.022z\"\n}))), _path12 || (_path12 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#0A1551\",\n d: \"M52.131 71.923a1.545 1.545 0 0 0-2.185 0l-9.004 9.004-.83 3.319a.773.773 0 0 0 .937.937l3.32-.83 9.003-9.004a1.545 1.545 0 0 0 0-2.185z\"\n})), _path13 || (_path13 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n stroke: \"#B1C3E9\",\n strokeWidth: 1.415,\n d: \"M90.348 96.292H64.452c-2.586 0-4.744-2.22-4.744-5.042v-34.5c0-2.82 2.16-5.042 4.743-5.042h20.48l10.162 10.434V91.25c0 2.821-2.16 5.042-4.745 5.042Z\"\n})), _path14 || (_path14 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#B1C3E9\",\n d: \"m85.319 51 10.483 10.705h-5.945a4.537 4.537 0 0 1-4.538-4.536z\"\n})), _path15 || (_path15 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#09F\",\n d: \"M66.077 66.117a2.377 2.377 0 0 1 2.378-2.378h17.434a2.377 2.377 0 0 1 0 4.755H68.455a2.377 2.377 0 0 1-2.378-2.377\"\n})), _path16 || (_path16 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FF6100\",\n d: \"M66.078 74.04a2.377 2.377 0 0 1 2.377-2.377h17.434a2.377 2.377 0 1 1 0 4.755H68.455a2.377 2.377 0 0 1-2.377-2.378\"\n})), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"noSignsFoundIcon_svg__c\",\n width: 22,\n height: 17,\n x: 67,\n y: 71,\n maskUnits: \"userSpaceOnUse\",\n style: {\n maskType: \"alpha\"\n }\n}, _path17 || (_path17 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#D9D9D9\",\n d: \"M67.034 71.512h21.134v16.362H67.034z\"\n}))), _g3 || (_g3 = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#noSignsFoundIcon_svg__c)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FFB629\",\n stroke: \"#FFB629\",\n strokeWidth: 0.581,\n d: \"M76.99 83.41c.102.013.157.07.124.13l.077.041.02.012c.026.007.051-.011.057-.041l-.008-.02-.008-.024a.2.2 0 0 1 .046-.063l.016-.016.072-.055.03-.055c.02.034.044.046.05.027a.2.2 0 0 1 .069-.072c.028-.02.12.01.127-.004.008-.013.063-.01.07-.036l.026-.012.006-.002a5 5 0 0 1 .172-.09l.092.019.01.002c.01.002.029-.012.042-.03s.074-.054.096-.047.113-.049.155-.065l.04-.007.012-.002c.016.012.047.004.068-.017a.6.6 0 0 1 .117-.094c.023-.007.13-.052.186-.074l.059-.006.045-.004a1 1 0 0 0 .134-.124c.027-.032.142.027.172.018l.02-.02c.021-.021.028-.06.047-.083l.005-.006c.026.016.088.009.139-.015.05-.024.182-.097.2-.076.018.02.111-.04.15-.06l.022-.03.057-.076c.059.04.111.061.116.047l.002-.014.006-.039a.2.2 0 0 0 .09-.036c.019-.018.095-.065.123-.098.027-.032.118.034.126.027.007-.008.067-.046.115-.075.047-.029.174-.108.178-.112a.5.5 0 0 1 .108-.019c.055-.006.198-.075.21-.07.014.007.074-.021.129-.055.054-.033.222-.051.229-.054.006-.002.026-.021.01-.03-.017-.007-.02-.056.022-.093s.177.025.184.017c.007-.007.053-.032.083-.05.031-.02.137-.035.151-.054l.015-.017c.012-.013.028-.033.04-.032l.04.004c.041.01.1-.013.128-.053l.03-.015.043-.02c.055.004.136.017.18.03.043.011.183-.097.236-.134s.254.002.305.015l.043-.045a.2.2 0 0 1 .081-.047l.044-.01c.044.024.11.021.148-.007l.04-.018c.013-.006.039.033.058.031l.062-.005c.066-.019.141-.04.167-.045.026-.006.107.035.14.02s.156.025.19.025l.03-.004.015-.002a.3.3 0 0 1 .113-.013c.047.002.228.08.315.093s.408.026.517.024l.07.098q.043.066.096.005l.004-.005c.028.02.061.041.074.048s.05 0 .072-.004c.023-.005.073.05.097.073.025.024.119.124.165.16s.166.248.21.352l.067.076.004.005c-.01.022.004.09.031.153.027.061.088.24.092.252.004.011.02.101.033.167l.016.06c.011.04.085.04.053.11l-.033.07c.055.02.109.056.12.077.011.023.061.127.082.183l.033.016.059.03c.072.013.167.028.21.032.045.003.194-.003.233.007l.037.009.03.006a.3.3 0 0 0 .127-.025c.036-.016.215-.007.242-.039l.04.055c.026.036.027-.023.027-.042 0-.069.015-.102.079-.054l.01.007c.016-.003.037-.037.044-.076l.045.043.012.012c.042-.023.084-.031.095-.02.01.013.05.047.061.042l.01-.004q.127-.055.254-.112l.05-.023c.054-.03.124-.073.157-.096l.046.026.032.02c.03-.046.068-.082.084-.08l.014.003.02.004a1 1 0 0 0 .174-.05c.007-.008.051.004.077.039.025.034.102-.071.13-.072.026 0 .096-.06.115-.058.019.003.08-.024.092-.054s.08.018.087.006c.005-.012.07-.062.118-.062l.05-.002h.025a.5.5 0 0 0 .134-.104l.066.017.05.012a.7.7 0 0 0 .143-.041c.025-.013.1-.067.13-.074l.034.01c.078.025.135-.007.252-.106l.008-.007c.018.005.09 0 .16-.012l.04-.036.011-.01c.023.002.037.017.032.034l-.002.016-.005.039c.009.048.036.044.06-.01l.032-.034.034-.036c.05-.025.08-.024.067.002-.015.026.029.083.113.054s.29-.055.26-.068-.134-.012-.158.012l-.026.014-.018.01c-.027-.002-.048-.017-.048-.032.001-.016.042-.067.077-.091s.164-.022.172-.029c.009-.006.037-.036.047-.018.01.019.101.023.186-.015l.053-.041c.039-.031.057-.03.099-.003.055.035.12.038.174-.03l.018-.023a.5.5 0 0 1 .12-.013c.031.002.145-.022.19.01l.047-.044.04-.037.104-.024h.112c.056 0 .214-.012.227-.024s.09-.019.134.021.216-.041.245-.045l.025.006c.028.007.062.043.079.033.022-.012.026-.06.045-.085l.015-.019c.027-.009.062-.007.079.005.016.01.063.004.076-.01.012-.012.06-.035.075-.026l.015.002c.044.004.098.022.13 0 .05-.034.087-.057.137-.01l.007.006c.011.002.038-.018.06-.044s.146.01.18.011c.036.002.128-.026.132-.063.003-.036.103.006.133.03.03.025.177.021.198.036.02.014.076-.037.095-.03.018.009.083.007.105-.02.021-.026.111-.069.16-.047l.028.025.088.079c-.031-.075-.021-.114.022-.086.044.028.177.05.19.063s.06.04.068.023c.007-.017.06-.114.092-.177l.076.07c.044.041.127-.012.177.055l.008.01a.3.3 0 0 0 .104-.05c.03-.023.128-.019.184-.01l.05.005.029.004a1 1 0 0 1 .129-.035c.037-.007.216.02.245.015.03-.006.115-.015.12-.001.003.014.044.058.075.055.032-.003.056-.102.064-.103s.092.021.173.044l.07-.023.02-.006c.019-.008.077-.003.129.013s.22.01.274.05l.052-.057c.034-.038.052-.064.062.02.004.04.046.032.076.004l.027-.025a.4.4 0 0 0 .137-.03l.036-.01.009-.002c.014.021.039.05.055.067.015.016.097.017.147.016l.008-.009.049-.051c.037.035.086.055.11.046l.022-.011.033-.017a1.5 1.5 0 0 0 .237-.043c.044-.015.195.02.242.036l.04-.034.037-.033a.5.5 0 0 0 .179.02c.06-.005.217.016.239-.004l.019-.012.005-.003q.012-.011.02.012c.005.014.046.037.075-.005.029-.04.188.008.234-.002s.155.067.157.065l.083-.043c.04-.02.294-.004.33 0l.03-.012.01-.003c.006-.042.022-.06.036-.04s.072.05.093.052a.6.6 0 0 0 .154-.061c.049-.024.201.006.225.015.024.01.13-.006.172.009l.039-.003.017-.002c.017-.043.05-.059.074-.035s.091.019.11 0c.019-.017.115-.002.162-.042l.039.077c.007-.003.052-.013.098-.024.047-.01.157-.03.182-.04.026-.008.115.005.141.03.027.027.127-.036.163-.021s.161-.023.186-.023a.6.6 0 0 1 .135.044l.031-.026c.015-.014.046-.016.066-.01l.042.015a.33.33 0 0 0 .167.029l.042-.013.062-.018c.068.009.183.004.255-.011l.051.07.102-.055.008-.008a.5.5 0 0 1 .162-.001c.08.008.294.077.309.08a.5.5 0 0 0 .149-.056c.048-.025.183.039.19.04l.137.02c.061.01.225.104.227.091s.008-.058.014-.078c.005-.02.079.007.118 0 .039-.006.144.005.134.055s.158.069.153.05c-.004-.02 0-.078.02-.086s.081.012.114.028c.032.016.156-.006.182.003l.145.047c.025.01.101-.014.124-.034.024-.02.1.04.118.04s.085-.013.109-.008.103.042.132.051l.031-.022.011-.007c.03.027.021.08-.02.115l.09.005c.043.002.081 0 .071-.067l-.007-.044a.24.24 0 0 1 .146.009l.016.044c.016.045-.016.061-.056.061h-.004c-.005.04.015.075.045.079l.012-.013c.029-.033.043-.086.076-.11l.031-.024c.051-.007.093.01.095.036.001.027.039.122.08.151.042.03.165-.034.168-.034s.055.014.106.031.181-.006.165.007c-.017.014-.042.096-.043.145v.095c0 .056.023.113.051.128s.1.09.098.137c-.002.046-.109.094-.109.063s-.013-.13-.029-.11a.3.3 0 0 0-.045.132c.002.04.087.116.123.1.037-.014.14-.033.125.002a.3.3 0 0 0 .004.133c.007.025.03.12.042.149l.014.003c.049.01.052.042.034.075l-.018.033a.4.4 0 0 1-.098-.07c-.003-.01-.025-.04-.029-.009-.004.032-.034.11-.053.072a.5.5 0 0 1-.031-.113c-.003-.022-.039-.065-.054-.042s-.041.086-.064.101-.108.093-.174.105l-.064-.014-.063-.014c-.073.005-.142-.002-.151-.014s-.057-.04-.076-.026a1 1 0 0 0-.099.082c-.014.017-.087-.009-.114.012s-.141-.018-.17.005c-.029.024-.137-.055-.174-.063s-.158.038-.207.017l-.05-.002-.035-.001a1 1 0 0 1-.092-.001c-.011-.002-.136.007-.256.013-.121.005-.469.024-.509.013s-.211.014-.281.013l-.058-.023-.037-.015c-.026.016-.072.04-.102.054l-.016-.01-.108-.077c-.128.02-.268.03-.311.02-.044-.01-.205.01-.252.01-.046 0-.21.004-.259.002s-.17-.03-.186.037l-.071-.037-.052-.026a.4.4 0 0 1-.186 0l-.039.013-.047.016c-.042-.014-.095-.01-.118.01s-.125-.066-.18-.093c-.055-.028-.227.078-.28.078-.053-.001-.205-.005-.229-.027-.023-.022-.135.022-.167.028-.031.006-.131.01-.154.021a.5.5 0 0 1-.149-.003 1 1 0 0 0-.166-.002c-.029.008-.1-.042-.106-.043a3 3 0 0 0-.213.062c-.108.033-.317.005-.345.006s-.153.01-.221.023c-.068.011-.326-.055-.43-.064-.105-.008-.38.08-.392.079s-.118-.031-.208-.056l-.074.054c-.035.025-.054-.063-.088 0l-.022.04c-.032-.03-.204-.064-.384-.073l-.16.017-.042.004-.18-.028-.017.026c-.039.057-.058-.03-.09 0-.044.044-.085-.017-.129-.022l-.047-.007a.3.3 0 0 0-.129.07c-.025.028-.128-.03-.162-.013-.035.016-.146-.054-.18-.067s-.118.052-.124.054-.1-.015-.204-.03l-.096.021-.048.011a.4.4 0 0 0-.152.027c-.033.015-.146-.053-.205-.047a2 2 0 0 1-.342.003l-.059.062-.012.012a.8.8 0 0 0-.261-.048c-.098-.003-.372.059-.397.043s-.122.032-.148.043c-.025.012-.093-.028-.098-.025l-.098.049-.041.005-.03.004a.4.4 0 0 0-.132-.026l-.026.016-.05.032a.4.4 0 0 0-.136-.03c-.026.003-.114.023-.135.052s-.12-.03-.145-.035c-.026-.005-.11.051-.146.058-.037.008-.17.001-.208.006-.036.004-.205.034-.293.045-.087.012-.36.027-.41.025-.051-.003-.194.055-.23.057-.035.001-.164.032-.208.037s-.194.038-.236.036-.185.066-.236.082c-.052.016-.242.019-.3.022s-.22.068-.241.073-.102.008-.135.008-.123.05-.153.054-.161.037-.23.066a3 3 0 0 1-.397.1c-.074.014-.263.11-.288.088s-.092.046-.11.044-.088.031-.113.042c-.026.01-.104.057-.128.065-.023.008-.125.05-.183.07s-.253.102-.311.123a3.4 3.4 0 0 0-.408.182l-.108.023-.046.01a.6.6 0 0 0-.14.058c-.024.016-.109.034-.134.044a.5.5 0 0 1-.164.026c-.04-.01-.249.11-.398.165l-.143.009c-.041.002-.084-.004-.123.007-.047.013-.09.05-.136.057l-.031.005c-.038-.024-.09-.025-.114-.001-.025.023-.134-.023-.16-.036l-.13-.052c-.018-.006-.067.005-.086-.01s-.096.02-.116.031c-.02.012-.147-.018-.245-.055l-.088-.04-.01-.004c-.002-.03-.018-.042-.035-.024-.016.017-.12.043-.184.01-.064-.034-.222-.25-.243-.33l-.092-.027-.045-.013a2 2 0 0 0-.091-.235 2 2 0 0 0-.132-.212c-.037-.043-.045-.21-.052-.216a.4.4 0 0 0-.054-.038 1 1 0 0 1-.109-.18l-.085-.039c-.073-.033-.128-.113-.198-.161-.02-.014-.06.014-.092.02-.051.008-.103.01-.153.022l-.053.014-.147.064c-.024.01-.102-.005-.125-.018-.022-.013-.082.056-.123.048l-.037-.003c-.049-.003-.1-.015-.146-.001l-.083.026c-.09.03-.193.055-.227.056s-.076.109-.103.118a1 1 0 0 1-.159.041.8.8 0 0 0-.197.068c-.048.027-.202.032-.21.036s-.035.033-.06.054c-.023.021-.13.064-.158.087s-.16.043-.207.062-.19.092-.22.093c-.031.001-.122.035-.18-.003l.016.118c.001.006-.018.022-.028.023l-.059.006a.6.6 0 0 1-.157.103c-.04.015-.182.059-.227.076l-.2.073c-.02.007-.073.054-.108.021-.034-.033-.105.105-.122.121l-.014-.003c-.076-.015-.128.047-.193.068l-.033.01c-.028.023-.06.04-.073.038-.013-.001-.047.015-.047.042s-.07-.008-.083 0a.4.4 0 0 1-.152-.003l-.014.094-.008.047a4 4 0 0 0-.22.034c-.055.01-.186.1-.2.095a1.2 1.2 0 0 0-.278.01l-.038.157-.015.065c-.027-.04-.08-.06-.117-.044a1 1 0 0 0-.208.128l-.038-.074c-.002-.004-.037.005-.05.017l-.068.066a.8.8 0 0 0-.198.084c-.03.022-.153.007-.204.055l-.068-.002c-.04 0 .012.093-.056.07l-.026-.008a.14.14 0 0 0-.086.031c-.017.018-.076-.022-.1-.007a.4.4 0 0 0-.126.145l-.067-.032-.02-.01a.3.3 0 0 1-.135.077l-.027-.004-.037-.005c-.038.005-.17.042-.292.082l-.1.066c-.02.012-.027.047-.058.013l-.036-.038a.4.4 0 0 1-.09.104l-.027.001-.059.002a1 1 0 0 0-.107.074 1 1 0 0 1-.147.045l-.063.043-.058.04c-.077.034-.148.05-.158.033-.01-.016-.072.002-.094-.015s-.05.073-.073.078h-.022l-.015-.001c-.015-.01-.057.007-.094.038l-.037.024a.25.25 0 0 1-.125.04l-.023.002a1 1 0 0 0-.114.111c-.038.044-.198-.022-.227-.018-.03.003-.108.061-.142.07s-.144.045-.175.039c-.03-.007-.08.092-.117.097a.4.4 0 0 1-.156-.039c-.02-.014-.079.074-.11.092a.07.07 0 0 1-.082-.014c-.014-.019-.097.023-.125.042-.029.02-.115.047-.127.02-.012-.028-.1.026-.124.041l-.004-.004c-.056-.068-.082-.003-.117.029l-.005.005c-.012-.002-.037.01-.057.028-.02.017-.078-.033-.083-.046-.006-.014-.044-.032-.07.004-.024.037-.124.003-.12-.008s-.013-.032-.05-.021-.156-.031-.181-.038c-.026-.007-.121.001-.15 0-.029 0-.212 0-.343-.006-.13-.006-.44-.103-.455-.137-.014-.033-.164-.06-.222-.089l-.028-.048-.034-.06a1 1 0 0 1-.107-.094.4.4 0 0 0-.088-.06c-.032-.019-.106-.13-.13-.155-.024-.026-.025-.152-.045-.187a.5.5 0 0 1-.044-.184c.008-.027-.062-.054-.063-.066l.003-.01c.024-.066-.007-.11-.054-.136l-.026-.014a.3.3 0 0 1 .062-.07l.005-.044.003-.03c.026-.054.021-.08-.01-.057-.03.022-.102.065-.107.057-.006-.007.024-.1.035-.138s-.05-.138-.06-.155-.018-.08-.058-.101l.001-.012.012-.077a2 2 0 0 1-.08-.261c-.014-.074-.115-.283-.125-.327l-.012-.038-.02-.06a2.3 2.3 0 0 1-.111-.391v-.014c.002-.054.016-.113.003-.163l-.048-.178c.023-.195.033-.38.022-.409l.006-.025.007-.033a1.2 1.2 0 0 0 .045-.23l.125-.16.005-.005a.2.2 0 0 1 .012-.07c.009-.026-.017-.094.005-.11s.07-.162.117-.248l.027-.08c.018-.054.026-.11.07-.144l.065-.051c-.007-.085.006-.16.029-.164.022-.005.08-.03.062-.04s-.055-.04-.04-.046.05-.026.048-.032a.2.2 0 0 0-.05-.05c-.022-.016-.131.02-.175.038-.044.02-.203.097-.262.114-.06.017-.2.125-.214.116l-.014-.01-.14.055c-.032.02-.063.044-.096.061l-.022.013a.13.13 0 0 0-.064.08l-.039.006-.023.004a2 2 0 0 1-.16.07c-.065.024-.248.157-.291.175l-.04.016-.034.015a2 2 0 0 0-.182.111 6 6 0 0 1-.35.213c-.065.032-.252.138-.272.168s-.118.077-.149.092a3 3 0 0 1-.182.078c-.039.014-.142.06-.14.07.001.012-.063.086-.147.133l-.506.282-.082.097c-.048.057-.087.127-.146.175l-.056.045c-.06.053-.15.143-.202.2-.05.058-.252.159-.276.181-.023.023-.106.065-.14.05l-.029-.007-.06-.014c-.069-.013-.149-.006-.18.014-.03.02-.11-.037-.116-.03a.3.3 0 0 1-.103.014l.012-.064c.003-.02.016-.037.021-.056.017-.059.051-.114-.045-.142a.14.14 0 0 1-.095-.15c.005-.048-.021-.05-.056-.064l-.028-.01a1.2 1.2 0 0 0-.16-.244l.045-.117.001-.003-.122-.12-.007-.103-.005-.083a1 1 0 0 1-.097-.254.8.8 0 0 1 .032-.248l-.037-.035c-.006-.005-.005-.034.002-.04l.022-.02a.056.056 0 0 0 .019-.077l.03-.031c.016-.017.024-.048.027-.075.003-.025-.014-.056-.005-.076.013-.032.041-.054.062-.082l.043-.06c.049-.064.075-.142.06-.173-.017-.032.084-.067.104-.093s.104-.056.101-.07.037-.072.061-.103c.025-.03.11-.094.121-.106.011-.01.03-.07.037-.085.007-.017.054-.062.093-.102.038-.04.189-.094.212-.107.024-.014.074-.101.1-.123s.083-.09.088-.075.027.037.032-.011c.004-.048.13-.146.183-.204l.077.044c.006.003.024-.011.031-.022q.035-.05.066-.102c.025-.043.041-.017.072 0 .038.02.085.012.03-.055a.2.2 0 0 1 .055-.064c.012-.008.048.02.054.013l.087-.109c.13-.05.245-.11.255-.134l.015-.017.007-.008c.018.004.06.022.095.042l.013-.044.007-.024c-.023-.044-.02-.078.005-.076a.7.7 0 0 0 .138-.02c.027-.009.111-.1.144-.164l.044-.03.023-.016a1 1 0 0 0 .253-.042l.023-.107c0-.003.026 0 .04.001.022.002.052.017.065.006l.025-.02c-.004-.039.023-.063.06-.054l.03-.009c.035-.01.067-.036.096-.06l.03-.026c.03-.036.064-.061.078-.057.014.005.064-.026.09-.057l.027-.01.026-.007a.3.3 0 0 0 .105.02l.014-.013.026-.022c.024-.03.05-.066.059-.078.007-.013.045-.023.07 0l.016.008.06.028a.6.6 0 0 1 .21-.1l.048-.035.03-.022c.034-.035.079-.048.1-.029.02.019.076-.06.105-.064.03-.004.121-.015.145-.04.023-.024.099.044.117.046s.106-.045.157-.07h.059c.039.001.088 0 .125.005.037.006.038.001.041-.03l.002-.013c.007-.014.032-.01.055.006.023.017.098-.035.117-.036s.174-.004.3-.01c.128-.004.467.086.486.078.019-.009.08.013.106.033l.037-.026c.02-.015.055-.005.082-.008.053-.005.108.038.161-.017l.006-.006c.052.046.098.064.102.038s.11-.03.15-.02.151.11.181.143a.4.4 0 0 0 .155.062c.01 0 .06.04.108.081.049.042.139.204.127.225-.011.02.049.092.062.114.013.021.06.097.076.119a.6.6 0 0 1 .049.168c.005.046.03.183.037.161.008-.021.03-.027.035.02.006.046.042.203.036.255-.006.05.045.225.07.308s.098.31.127.316c.027.007.129.17.162.182.034.013-.002.118.018.135s.06.075.052.094c-.01.019-.002.077.006.101.007.024.05.251.081.288h-.084a.3.3 0 0 0-.016.082c-.002.03.005.166.014.234l-.05.061c-.033.04-.042.116-.042.176v.049a.4.4 0 0 0-.1.119l-.016.05-.014.044a.7.7 0 0 1-.057.137.8.8 0 0 0-.062.15c-.006.03-.034.11-.03.155.005.047-.111.1-.123.135-.012.034-.076.171-.098.229s-.125.285-.163.381l-.04.085c-.04.085-.088.165-.128.25l-.01.022c.005.037.062.053.128.037.066-.017.243.004.27 0l.01-.034.018-.057c.03.026.067.037.08.025a.6.6 0 0 1 .152-.049c.052-.01.164-.075.173-.033.01.043.118-.026.173-.044s.194-.132.225-.14c.03-.008.116-.064.143-.064s.1-.035.117-.048.077.016.088.012.049-.032.067-.043a.3.3 0 0 1 .117-.015c.024.003.168-.099.272-.167l.117-.016.074-.01c.08-.02.167-.046.19-.058l.021-.015.05-.037c.064-.008.122-.027.13-.042.007-.014.04-.053.057-.054.016 0 .073-.007.09-.01a.4.4 0 0 0 .122-.128l.06.076c.003.003.033-.01.04-.022z\"\n}))), _path18 || (_path18 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#0A1551\",\n d: \"M99.131 71.923a1.545 1.545 0 0 0-2.185 0l-9.004 9.004-.83 3.319a.773.773 0 0 0 .937.937l3.32-.83 9.003-9.004a1.544 1.544 0 0 0 0-2.185z\"\n})), _path19 || (_path19 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"url(#noSignsFoundIcon_svg__d)\",\n d: \"M51.466 98.228c7.187-1.175 12.06-7.954 10.885-15.14s-7.954-12.06-15.141-10.886-12.06 7.954-10.885 15.141 7.954 12.06 15.14 10.885\",\n opacity: 0.5\n})), _path20 || (_path20 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#0A1551\",\n d: \"m54.688 98.626 2.542-1.316 5.365 10.347-2.538 1.318z\"\n})), _path21 || (_path21 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#0A1551\",\n d: \"M42.649 72.322a14.52 14.52 0 1 0 19.58 6.203 14.525 14.525 0 0 0-19.578-6.203zm12.187 23.471a11.933 11.933 0 1 1 5.09-16.085 11.934 11.934 0 0 1-5.091 16.08zm10.599 20.535a2.12 2.12 0 0 1-2.348-.259c-.213-.18-.389-.4-.517-.648l-7.354-14.16 3.77-1.96 7.356 14.16a2.115 2.115 0 0 1-.258 2.349c-.18.214-.4.39-.65.518\"\n})), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"noSignsFoundIcon_svg__d\",\n x1: 47.21,\n x2: 51.466,\n y1: 72.202,\n y2: 98.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})))));\nexport default SvgNoSignsFoundIcon;","var _circle, _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _rect, _path9, _path10, _path11, _path12, _path13, _path14, _path15, _path16, _rect2, _path17, _path18, _path19, _path20, _path21, _path22, _path23, _path24, _rect3, _path25, _path26, _path27, _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 xmlns: \"http://www.w3.org/2000/svg\",\n width: 105,\n height: 118,\n fill: \"none\"\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 fill: \"#fff\",\n d: \"M39.587 37.8c-2.03 0-2.585-.547-2.585-2.586-.003-18.29-.003-12.579 0-30.868 0-1.946.585-2.541 2.543-2.542 18.304-.004 12.608-.004 30.911 0 1.93 0 2.541.619 2.541 2.557.004 18.29.004 12.579 0 30.868 0 2.016-.571 2.57-2.608 2.571H39.587m30.19-2.57c.36 0 .652-.292.652-.652v-7.013a.65.65 0 0 0-.652-.651h-7.013a.65.65 0 0 0-.65.651v7.013c0 .36.29.651.65.651zm-18.284 0h7.014c.36 0 .65-.292.65-.652v-7.013a.65.65 0 0 0-.65-.651h-7.014a.65.65 0 0 0-.65.651v7.013c0 .36.29.651.65.651m-11.27 0h7.013c.36 0 .65-.292.65-.652v-7.013a.65.65 0 0 0-.65-.651h-7.013a.65.65 0 0 0-.652.651v7.013c0 .36.292.651.652.651m22.541-11.271h7.013c.36 0 .652-.292.652-.652v-7.013a.65.65 0 0 0-.652-.65h-7.013a.65.65 0 0 0-.65.65v7.013c0 .36.29.652.65.652m-11.27 0h7.013c.36 0 .65-.292.65-.652v-7.013a.65.65 0 0 0-.65-.65h-7.014a.65.65 0 0 0-.65.65v7.013c0 .36.29.652.65.652m-11.271 0h7.013c.36 0 .65-.292.65-.652v-7.013a.65.65 0 0 0-.65-.65h-7.013a.65.65 0 0 0-.652.65v7.013c0 .36.292.652.652.652m11.27-11.271h7.014c.36 0 .65-.177.65-.394V8.06c0-.217-.29-.393-.65-.393h-7.014c-.36 0-.65.176-.65.393v4.235c0 .217.29.394.65.394m11.25 0h7.014c.36 0 .65-.177.65-.394V8.06c0-.217-.29-.393-.65-.393h-7.014c-.36 0-.65.176-.65.393v4.235c0 .217.29.394.65.394m-22.52 0h7.013c.36 0 .65-.177.65-.394V8.06c0-.217-.29-.393-.65-.393h-7.013c-.36 0-.652.176-.652.393v4.235c0 .217.292.394.652.394\"\n})), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M39 4.801h32v31H39z\"\n})), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#0D953B\",\n d: \"M62 7.8a1 1 0 0 1 1-1h6.408a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1H63a1 1 0 0 1-1-1z\"\n})), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FFB629\",\n d: \"M62 16.8a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1v6a1 1 0 0 1-1 1h-6a1 1 0 0 1-1-1zM62 27.8a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1v6a1 1 0 0 1-1 1h-6a1 1 0 0 1-1-1z\"\n})), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#0D953B\",\n d: \"M50.844 7.8a1 1 0 0 1 1-1h6.564a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1h-6.564a1 1 0 0 1-1-1z\"\n})), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FF6100\",\n d: \"M51 16.8a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1v6a1 1 0 0 1-1 1h-6a1 1 0 0 1-1-1zM51 27.8a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1v6a1 1 0 0 1-1 1h-6a1 1 0 0 1-1-1z\"\n})), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#0D953B\",\n d: \"M39.5 7.8a1 1 0 0 1 1-1H47a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1h-6.5a1 1 0 0 1-1-1z\"\n})), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#09F\",\n d: \"M39.5 16.8a1 1 0 0 1 1-1H47a1 1 0 0 1 1 1v6a1 1 0 0 1-1 1h-6.5a1 1 0 0 1-1-1v-6M39.5 27.8a1 1 0 0 1 1-1H47a1 1 0 0 1 1 1v6a1 1 0 0 1-1 1h-6.5a1 1 0 0 1-1-1v-6\"\n})), _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n width: 37.5,\n height: 37.5,\n x: 36.25,\n y: 1.051,\n stroke: \"#B1C3E9\",\n strokeWidth: 1.5,\n rx: 2.75\n})), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M14.587 87.8c-2.03 0-2.585-.547-2.585-2.586-.003-18.29-.003-12.579 0-30.868 0-1.946.585-2.541 2.543-2.542 18.304-.004 12.608-.004 30.911 0 1.93 0 2.541.619 2.541 2.557.004 18.29.004 12.579 0 30.868 0 2.016-.571 2.57-2.608 2.571H14.587m30.19-2.57c.36 0 .652-.292.652-.652v-7.013a.65.65 0 0 0-.652-.651h-7.013a.65.65 0 0 0-.65.651v7.013c0 .36.29.651.65.651zm-18.283 0h7.013c.36 0 .65-.292.65-.652v-7.013a.65.65 0 0 0-.65-.651h-7.013a.65.65 0 0 0-.652.651v7.013c0 .36.292.651.652.651m-11.271 0h7.013c.36 0 .65-.292.65-.652v-7.013a.65.65 0 0 0-.65-.651h-7.013a.65.65 0 0 0-.652.651v7.013c0 .36.292.651.652.651m22.541-11.272h7.013c.36 0 .652-.291.652-.65v-7.014a.65.65 0 0 0-.652-.65h-7.013a.65.65 0 0 0-.65.65v7.013c0 .36.29.651.65.651m-11.27 0h7.013c.36 0 .65-.291.65-.65v-7.014a.65.65 0 0 0-.65-.65h-7.013a.65.65 0 0 0-.652.65v7.013c0 .36.292.651.652.651m-11.271 0h7.013c.36 0 .65-.291.65-.65v-7.014a.65.65 0 0 0-.65-.65h-7.013a.65.65 0 0 0-.652.65v7.013c0 .36.292.651.652.651m11.27-11.27h7.014c.36 0 .65-.177.65-.394V58.06c0-.217-.29-.393-.65-.393h-7.013c-.36 0-.652.176-.652.393v4.235c0 .218.292.394.652.394m11.25 0h7.014c.36 0 .65-.177.65-.394V58.06c0-.217-.29-.393-.65-.393h-7.014c-.36 0-.65.176-.65.393v4.235c0 .218.29.394.65.394m-22.52 0h7.013c.36 0 .65-.177.65-.394V58.06c0-.217-.29-.393-.65-.393h-7.013c-.36 0-.652.176-.652.393v4.235c0 .218.292.394.652.394\"\n})), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M14 54.801h32v31H14z\"\n})), _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#0D953B\",\n d: \"M37 57.8a1 1 0 0 1 1-1h6.408a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1H38a1 1 0 0 1-1-1z\"\n})), _path12 || (_path12 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FFB629\",\n d: \"M37 66.8a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1v6a1 1 0 0 1-1 1h-6a1 1 0 0 1-1-1zM37 77.8a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1v6a1 1 0 0 1-1 1h-6a1 1 0 0 1-1-1z\"\n})), _path13 || (_path13 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#0D953B\",\n d: \"M25.844 57.8a1 1 0 0 1 1-1h6.564a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1h-6.564a1 1 0 0 1-1-1z\"\n})), _path14 || (_path14 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FF6100\",\n d: \"M26 66.8a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1v6a1 1 0 0 1-1 1h-6a1 1 0 0 1-1-1zM26 77.8a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1v6a1 1 0 0 1-1 1h-6a1 1 0 0 1-1-1z\"\n})), _path15 || (_path15 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#0D953B\",\n d: \"M14.5 57.8a1 1 0 0 1 1-1H22a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1h-6.5a1 1 0 0 1-1-1z\"\n})), _path16 || (_path16 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#09F\",\n d: \"M14.5 66.8a1 1 0 0 1 1-1H22a1 1 0 0 1 1 1v6a1 1 0 0 1-1 1h-6.5a1 1 0 0 1-1-1v-6M14.5 77.8a1 1 0 0 1 1-1H22a1 1 0 0 1 1 1v6a1 1 0 0 1-1 1h-6.5a1 1 0 0 1-1-1v-6\"\n})), _rect2 || (_rect2 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 37.5,\n height: 37.5,\n x: 11.25,\n y: 51.051,\n stroke: \"#B1C3E9\",\n strokeWidth: 1.5,\n rx: 2.75\n})), _path17 || (_path17 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M63.587 87.8c-2.03 0-2.585-.547-2.585-2.586-.003-18.29-.003-12.579 0-30.868 0-1.946.585-2.541 2.543-2.542 18.304-.004 12.608-.004 30.911 0 1.93 0 2.541.619 2.541 2.557.004 18.29.004 12.579 0 30.868 0 2.016-.571 2.57-2.608 2.571H63.587m30.19-2.57c.36 0 .652-.292.652-.652v-7.013a.65.65 0 0 0-.652-.651h-7.013a.65.65 0 0 0-.65.651v7.013c0 .36.29.651.65.651zm-18.284 0h7.014c.36 0 .65-.292.65-.652v-7.013a.65.65 0 0 0-.65-.651h-7.014a.65.65 0 0 0-.65.651v7.013c0 .36.29.651.65.651m-11.27 0h7.013c.36 0 .65-.292.65-.652v-7.013a.65.65 0 0 0-.65-.651h-7.013a.65.65 0 0 0-.652.651v7.013c0 .36.292.651.652.651m22.541-11.272h7.013c.36 0 .652-.291.652-.65v-7.014a.65.65 0 0 0-.652-.65h-7.013a.65.65 0 0 0-.65.65v7.013c0 .36.29.651.65.651m-11.27 0h7.013c.36 0 .65-.291.65-.65v-7.014a.65.65 0 0 0-.65-.65h-7.014a.65.65 0 0 0-.65.65v7.013c0 .36.29.651.65.651m-11.271 0h7.013c.36 0 .65-.291.65-.65v-7.014a.65.65 0 0 0-.65-.65h-7.013a.65.65 0 0 0-.652.65v7.013c0 .36.292.651.652.651m11.27-11.27h7.014c.36 0 .65-.177.65-.394V58.06c0-.217-.29-.393-.65-.393h-7.014c-.36 0-.65.176-.65.393v4.235c0 .218.29.394.65.394m11.25 0h7.014c.36 0 .65-.177.65-.394V58.06c0-.217-.29-.393-.65-.393h-7.014c-.36 0-.65.176-.65.393v4.235c0 .218.29.394.65.394m-22.52 0h7.013c.36 0 .65-.177.65-.394V58.06c0-.217-.29-.393-.65-.393h-7.013c-.36 0-.652.176-.652.393v4.235c0 .218.292.394.652.394\"\n})), _path18 || (_path18 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M63 54.801h32v31H63z\"\n})), _path19 || (_path19 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#0D953B\",\n d: \"M86 57.8a1 1 0 0 1 1-1h6.408a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1H87a1 1 0 0 1-1-1z\"\n})), _path20 || (_path20 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FFB629\",\n d: \"M86 66.8a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1v6a1 1 0 0 1-1 1h-6a1 1 0 0 1-1-1zM86 77.8a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1v6a1 1 0 0 1-1 1h-6a1 1 0 0 1-1-1z\"\n})), _path21 || (_path21 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#0D953B\",\n d: \"M74.844 57.8a1 1 0 0 1 1-1h6.565a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1h-6.565a1 1 0 0 1-1-1z\"\n})), _path22 || (_path22 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FF6100\",\n d: \"M75 66.8a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1v6a1 1 0 0 1-1 1h-6a1 1 0 0 1-1-1zM75 77.8a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1v6a1 1 0 0 1-1 1h-6a1 1 0 0 1-1-1z\"\n})), _path23 || (_path23 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#0D953B\",\n d: \"M63.5 57.8a1 1 0 0 1 1-1H71a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1h-6.5a1 1 0 0 1-1-1z\"\n})), _path24 || (_path24 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#09F\",\n d: \"M63.5 66.8a1 1 0 0 1 1-1H71a1 1 0 0 1 1 1v6a1 1 0 0 1-1 1h-6.5a1 1 0 0 1-1-1v-6M63.5 77.8a1 1 0 0 1 1-1H71a1 1 0 0 1 1 1v6a1 1 0 0 1-1 1h-6.5a1 1 0 0 1-1-1v-6\"\n})), _rect3 || (_rect3 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 37.5,\n height: 37.5,\n x: 60.25,\n y: 51.051,\n stroke: \"#B1C3E9\",\n strokeWidth: 1.5,\n rx: 2.75\n})), _path25 || (_path25 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"url(#noTablesFoundIcon_svg__a)\",\n d: \"M51.466 94.654c7.187-1.176 12.06-7.954 10.885-15.141s-7.954-12.06-15.14-10.885c-7.188 1.175-12.061 7.954-10.886 15.14 1.175 7.188 7.954 12.06 15.14 10.886\",\n opacity: 0.5\n})), _path26 || (_path26 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#0A1551\",\n d: \"m54.688 95.05 2.542-1.315 5.366 10.347-2.54 1.318z\"\n})), _path27 || (_path27 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#0A1551\",\n d: \"M42.648 68.748a14.52 14.52 0 0 0 2.305 26.728 14.518 14.518 0 1 0-2.303-26.728zm12.187 23.47a11.932 11.932 0 0 1-16.88-14.189 11.934 11.934 0 0 1 21.97-1.895 11.934 11.934 0 0 1-5.09 16.08zM65.435 112.755a2.12 2.12 0 0 1-2.348-.259 2.1 2.1 0 0 1-.517-.648l-7.354-14.16 3.77-1.96 7.356 14.159a2.13 2.13 0 0 1-.258 2.35c-.18.214-.4.39-.649.518\"\n})), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"noTablesFoundIcon_svg__a\",\n x1: 47.21,\n x2: 51.466,\n y1: 68.628,\n y2: 94.654,\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, _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 xmlns: \"http://www.w3.org/2000/svg\",\n width: 105,\n height: 119,\n fill: \"none\"\n}, props), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 52.5,\n cy: 56.449,\n r: 52.5,\n fill: \"#F3F3FE\"\n})), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M35.143 6.137A5.76 5.76 0 0 1 40.904.375h27.367a5.76 5.76 0 0 1 5.762 5.762v34.569a5.76 5.76 0 0 1-5.762 5.761H40.904a5.76 5.76 0 0 1-5.761-5.761z\"\n})), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#B1C3E9\",\n fillRule: \"evenodd\",\n d: \"M68.271 1.815H40.904a4.32 4.32 0 0 0-4.321 4.322v34.569a4.32 4.32 0 0 0 4.321 4.32h27.367a4.32 4.32 0 0 0 4.322-4.32V6.136a4.32 4.32 0 0 0-4.322-4.32M40.904.375a5.76 5.76 0 0 0-5.761 5.762v34.569a5.76 5.76 0 0 0 5.761 5.761h27.367a5.76 5.76 0 0 0 5.762-5.761V6.136A5.76 5.76 0 0 0 68.27.376z\",\n clipRule: \"evenodd\"\n})), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#09F\",\n d: \"M41.688 12.406c0-.863.7-1.562 1.562-1.562h3.125c.863 0 1.563.7 1.563 1.562v23.438h-6.25z\"\n})), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FF6100\",\n d: \"M51.281 19.438c0-.863.7-1.563 1.563-1.563h3.125c.863 0 1.562.7 1.562 1.563v16.406h-6.25z\"\n})), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FFB629\",\n d: \"M60.875 13.188c0-.863.7-1.563 1.563-1.563h3.124c.863 0 1.563.7 1.563 1.563v22.656h-6.25z\"\n})), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M10 56.137a5.76 5.76 0 0 1 5.762-5.762h27.367a5.76 5.76 0 0 1 5.761 5.761v34.57a5.76 5.76 0 0 1-5.761 5.761H15.762A5.76 5.76 0 0 1 10 90.706z\"\n})), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#B1C3E9\",\n fillRule: \"evenodd\",\n d: \"M43.129 51.815H15.762a4.32 4.32 0 0 0-4.322 4.322v34.569a4.32 4.32 0 0 0 4.322 4.32h27.367a4.32 4.32 0 0 0 4.321-4.32v-34.57a4.32 4.32 0 0 0-4.321-4.32m-27.367-1.44A5.76 5.76 0 0 0 10 56.136v34.57a5.76 5.76 0 0 0 5.762 5.761h27.367a5.76 5.76 0 0 0 5.761-5.761v-34.57a5.76 5.76 0 0 0-5.761-5.761z\",\n clipRule: \"evenodd\"\n})), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#09F\",\n d: \"M16.545 62.406c0-.863.7-1.562 1.562-1.562h3.125c.863 0 1.563.7 1.563 1.562v23.438h-6.25z\"\n})), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FF6100\",\n d: \"M26.139 69.438c0-.863.7-1.563 1.562-1.563h3.125c.863 0 1.563.7 1.563 1.563v16.406h-6.25z\"\n})), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FFB629\",\n d: \"M35.732 63.188c0-.863.7-1.563 1.563-1.563h3.125c.863 0 1.562.7 1.562 1.563v22.656h-6.25z\"\n})), _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M59 56.137a5.76 5.76 0 0 1 5.761-5.762H92.13a5.76 5.76 0 0 1 5.761 5.761v34.57a5.76 5.76 0 0 1-5.761 5.761H64.76A5.76 5.76 0 0 1 59 90.706z\"\n})), _path12 || (_path12 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#B1C3E9\",\n fillRule: \"evenodd\",\n d: \"M92.129 51.815H64.76a4.32 4.32 0 0 0-4.32 4.322v34.569a4.32 4.32 0 0 0 4.32 4.32H92.13a4.32 4.32 0 0 0 4.321-4.32v-34.57a4.32 4.32 0 0 0-4.321-4.32m-27.368-1.44A5.76 5.76 0 0 0 59 56.136v34.57a5.76 5.76 0 0 0 5.761 5.761H92.13a5.76 5.76 0 0 0 5.761-5.761v-34.57a5.76 5.76 0 0 0-5.761-5.761z\",\n clipRule: \"evenodd\"\n})), _path13 || (_path13 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#09F\",\n d: \"M65.545 62.406c0-.863.7-1.562 1.562-1.562h3.125c.863 0 1.563.7 1.563 1.562v23.438h-6.25z\"\n})), _path14 || (_path14 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FF6100\",\n d: \"M75.139 69.438c0-.863.7-1.563 1.562-1.563h3.125c.863 0 1.563.7 1.563 1.563v16.406h-6.25z\"\n})), _path15 || (_path15 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FFB629\",\n d: \"M84.732 63.188c0-.863.7-1.563 1.563-1.563h3.125c.863 0 1.562.7 1.562 1.563v22.656h-6.25z\"\n})), _path16 || (_path16 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"url(#noReportsFoundIcon_svg__a)\",\n d: \"M51.466 98.228c7.187-1.175 12.06-7.954 10.885-15.14-1.175-7.188-7.954-12.061-15.14-10.886-7.188 1.175-12.061 7.954-10.886 15.14 1.175 7.188 7.954 12.061 15.14 10.886\",\n opacity: 0.5\n})), _path17 || (_path17 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#0A1551\",\n d: \"m54.688 98.625 2.542-1.316 5.366 10.347-2.54 1.318z\"\n})), _path18 || (_path18 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#0A1551\",\n d: \"M42.648 72.322a14.521 14.521 0 0 0 2.305 26.728 14.52 14.52 0 1 0-2.303-26.728zm12.187 23.471a11.933 11.933 0 1 1 5.09-16.085 11.933 11.933 0 0 1-5.09 16.08zM65.435 116.329a2.12 2.12 0 0 1-2.348-.259 2.1 2.1 0 0 1-.517-.648l-7.354-14.16 3.77-1.96 7.356 14.16a2.12 2.12 0 0 1-.258 2.349c-.18.214-.4.39-.649.518\"\n})), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"noReportsFoundIcon_svg__a\",\n x1: 47.21,\n x2: 51.466,\n y1: 72.202,\n y2: 98.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})))));\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 SvgNoAppsFoundIcon = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 108 120\"\n}, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#noAppsFoundIcon_svg__a)\"\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 width: 37.5,\n height: 37.5,\n x: 38.25,\n y: 3.676,\n fill: \"#fff\",\n stroke: \"#B1C3E9\",\n strokeWidth: 1.5,\n rx: 2.75\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M42 11.176a3.75 3.75 0 0 1 3.75-3.75h22.5a3.75 3.75 0 0 1 3.75 3.75v22.5a3.75 3.75 0 0 1-3.75 3.75h-22.5a3.75 3.75 0 0 1-3.75-3.75z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#97ACDA\",\n stroke: \"#97ACDA\",\n strokeWidth: 0.652,\n d: \"M63.249 24.463a.5.5 0 0 0-.499.498v2.931h-2.93a.499.499 0 0 0 0 .998h2.93v2.93a.499.499 0 0 0 .998 0v-2.93h2.93a.499.499 0 0 0 0-.998h-2.93v-2.93a.5.5 0 0 0-.5-.5Z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FF6100\",\n d: \"M58.384 11.994c0-.452.366-.818.818-.818h8.184c.452 0 .818.366.818.818v8.184a.82.82 0 0 1-.818.818h-8.184a.82.82 0 0 1-.818-.818z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#09F\",\n d: \"M45.751 11.994c0-.452.366-.818.818-.818h8.184c.452 0 .818.366.818.818v8.184a.82.82 0 0 1-.818.818h-8.184a.82.82 0 0 1-.818-.818z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FFB629\",\n d: \"M45.751 24.627c0-.452.366-.819.818-.819h8.184c.452 0 .818.367.818.819v8.183a.82.82 0 0 1-.818.819h-8.184a.82.82 0 0 1-.818-.819z\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n width: 37.5,\n height: 37.5,\n x: 13.25,\n y: 53.676,\n fill: \"#fff\",\n stroke: \"#B1C3E9\",\n strokeWidth: 1.5,\n rx: 2.75\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M17 61.176a3.75 3.75 0 0 1 3.75-3.75h22.5a3.75 3.75 0 0 1 3.75 3.75v22.5a3.75 3.75 0 0 1-3.75 3.75h-22.5a3.75 3.75 0 0 1-3.75-3.75z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#97ACDA\",\n stroke: \"#97ACDA\",\n strokeWidth: 0.652,\n d: \"M38.249 74.463a.5.5 0 0 0-.499.499v2.93h-2.93a.499.499 0 0 0 0 .998h2.93v2.93a.499.499 0 0 0 .998 0v-2.93h2.93a.499.499 0 0 0 0-.998h-2.93v-2.93a.5.5 0 0 0-.5-.5Z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FF6100\",\n d: \"M33.384 61.994c0-.452.366-.818.818-.818h8.184c.452 0 .818.366.818.818v8.184a.82.82 0 0 1-.818.818h-8.184a.82.82 0 0 1-.818-.818z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#09F\",\n d: \"M20.751 61.994c0-.452.366-.818.818-.818h8.184c.452 0 .818.366.818.818v8.184a.82.82 0 0 1-.818.818h-8.184a.82.82 0 0 1-.818-.818z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FFB629\",\n d: \"M20.751 74.627c0-.452.366-.819.818-.819h8.184c.452 0 .818.367.818.819v8.183a.82.82 0 0 1-.818.819h-8.184a.82.82 0 0 1-.818-.819z\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n width: 37.5,\n height: 37.5,\n x: 62.25,\n y: 53.676,\n fill: \"#fff\",\n stroke: \"#B1C3E9\",\n strokeWidth: 1.5,\n rx: 2.75\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M66 61.176a3.75 3.75 0 0 1 3.75-3.75h22.5a3.75 3.75 0 0 1 3.75 3.75v22.5a3.75 3.75 0 0 1-3.75 3.75h-22.5a3.75 3.75 0 0 1-3.75-3.75z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#97ACDA\",\n stroke: \"#97ACDA\",\n strokeWidth: 0.652,\n d: \"M87.249 74.463a.5.5 0 0 0-.499.499v2.93h-2.93a.499.499 0 0 0 0 .998h2.93v2.93a.499.499 0 0 0 .998 0v-2.93h2.93a.499.499 0 0 0 0-.998h-2.93v-2.93a.5.5 0 0 0-.5-.5Z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FF6100\",\n d: \"M82.384 61.994c0-.452.366-.818.818-.818h8.184c.452 0 .818.366.818.818v8.184a.82.82 0 0 1-.818.818h-8.184a.82.82 0 0 1-.818-.818z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#09F\",\n d: \"M69.751 61.994c0-.452.366-.818.818-.818h8.184c.452 0 .818.366.818.818v8.184a.82.82 0 0 1-.818.818h-8.184a.82.82 0 0 1-.818-.818z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FFB629\",\n d: \"M69.751 74.627c0-.452.366-.819.818-.819h8.184c.452 0 .818.367.818.819v8.183a.82.82 0 0 1-.818.819h-8.184a.82.82 0 0 1-.818-.819z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"url(#noAppsFoundIcon_svg__b)\",\n d: \"M53.466 97.279c7.187-1.176 12.06-7.954 10.885-15.141s-7.954-12.06-15.14-10.885c-7.188 1.175-12.061 7.954-10.886 15.14 1.175 7.188 7.954 12.06 15.14 10.886\",\n opacity: 0.5\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#0A1551\",\n d: \"m56.688 97.676 2.542-1.315 5.366 10.347-2.54 1.318z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#0A1551\",\n d: \"M44.649 71.373A14.52 14.52 0 0 0 46.954 98.1a14.518 14.518 0 1 0-2.303-26.728zm12.187 23.47A11.933 11.933 0 0 1 43.874 74.94a11.933 11.933 0 0 1 18.834 12.913 11.93 11.93 0 0 1-5.873 6.987zM67.435 115.379a2.12 2.12 0 0 1-2.347-.259 2.1 2.1 0 0 1-.518-.648l-7.354-14.16 3.77-1.96 7.356 14.159a2.13 2.13 0 0 1-.258 2.35c-.18.214-.4.39-.649.518\"\n}))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"noAppsFoundIcon_svg__b\",\n x1: 49.21,\n x2: 53.466,\n y1: 71.253,\n y2: 97.279,\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: \"noAppsFoundIcon_svg__a\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M0 0h108v120H0z\"\n})))));\nexport default SvgNoAppsFoundIcon;","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, _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 xmlns: \"http://www.w3.org/2000/svg\",\n width: 198,\n height: 141,\n fill: \"none\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#E6E6F5\",\n d: \"M0 97.437c0-23.633 19.158-42.79 42.79-42.79h112.325c23.632 0 42.79 19.157 42.79 42.79s-19.158 42.79-42.79 42.79H42.79C19.158 140.227 0 121.069 0 97.437\"\n})), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"noFormsIcon_svg__a\",\n width: 198,\n height: 87,\n x: 0,\n y: 54,\n maskUnits: \"userSpaceOnUse\",\n style: {\n maskType: \"alpha\"\n }\n}, _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#E6E6F5\",\n d: \"M0 97.437c0-23.633 19.158-42.79 42.79-42.79h112.325c23.632 0 42.79 19.157 42.79 42.79s-19.158 42.79-42.79 42.79H42.79C19.158 140.227 0 121.069 0 97.437\"\n}))), /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#noFormsIcon_svg__a)\"\n}, _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#CD7448\",\n fillRule: \"evenodd\",\n d: \"M115.336 77.924Q102.684 93.88 94.631 98.503c-8.054 4.622-8.643-.235-38.14-20.745-2.052-.861-3.716-1.09-6.495 2q-2.494 2.773-10.721 1.46a1.014 1.014 0 0 0-1.16.836c-.045.273.025.553.192.772q2.025 2.654 7.01 2.894c6.592.316 7.3-2.157 11.009.757s23.584 26.214 35.57 26.792 27.734-17.227 32.189-18.6q4.455-1.371 7.268-21.678z\",\n clipRule: \"evenodd\"\n})), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#F4F5FE\",\n fillRule: \"evenodd\",\n d: \"M58.954 90.056q4.905-4.684 5.949-8.17Q86.845 98.28 89.741 97.381c2.646-.82 24.003-20.019 31.424-24.56.674-.673.721 5.077 1.257 4.457l-2.407 22.315q-13 9.303-16.565 11.463c-3.566 2.16-12.922 6.115-21.372-.755q-8.45-6.87-23.124-20.246\",\n clipRule: \"evenodd\"\n})), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M110.638 114.549c1.348 4.697 1.348 10.59 0 21.326l49.541-7.234-3.033-40.263q-3.033-10.065-7.077-14.093c-4.044-4.026-25.276-2.013-30.332 0-5.055 2.014-6.066 11.073-11.121 19.126-5.055 8.052 0 14.092 2.022 21.138\"\n})), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#CD7448\",\n fillRule: \"evenodd\",\n d: \"M141.981 72.154q-3.033 24.705-17.047 24.705c-14.014 0-10.728-7.372-8.973-10.828q1.755-3.458 3.859-12.305 7.232-2.308 11.04-2.578t11.121 1.006\",\n clipRule: \"evenodd\"\n})), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"noFormsIcon_svg__b\",\n width: 110,\n height: 94,\n x: 51,\n y: -1,\n maskUnits: \"userSpaceOnUse\",\n style: {\n maskType: \"alpha\"\n }\n}, _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#C4C4C4\",\n d: \"M51.29-.625h109.352v92.712H51.289z\"\n}))), /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#noFormsIcon_svg__b)\"\n}, /*#__PURE__*/React.createElement(\"mask\", {\n id: \"noFormsIcon_svg__c\",\n width: 59,\n height: 93,\n x: 106,\n y: 71,\n maskUnits: \"userSpaceOnUse\",\n style: {\n maskType: \"alpha\"\n }\n}, _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M110.638 138.541c1.348-10.737 1.348-19.295 0-23.992-2.022-7.046-7.077-13.086-2.022-21.138s6.066-17.112 11.121-19.126c5.056-2.013 26.288-4.026 30.332 0q4.044 4.027 7.077 14.093l3.033 40.263q7.078 27.177 2.022 33.217c-5.055 6.04-7.077-10.066-29.32-19.125-4.718-2.013-12.133-2.85-22.243-4.192\"\n}))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#noFormsIcon_svg__c)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M110.638 138.539q2.022-16.105 0-23.151c-2.022-7.046-7.077-13.086-2.022-21.138s5.782-17.823 10.838-19.836 25.832-4.914 29.876-.888c2.696 2.684 5.794 8.98 7.816 15.69v13.611l3.033 26.653q7.078 27.178 2.022 33.217c-5.055 6.04-7.077-10.065-29.32-19.125q-7.077-3.019-22.243-5.033\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#CD7448\",\n fillRule: \"evenodd\",\n d: \"M141.981 72.154q-3.033 24.705-17.047 24.705c-14.014 0-10.728-7.372-8.973-10.828q1.755-3.458 3.859-12.305 7.232-2.308 11.04-2.578t11.121 1.006\",\n clipRule: \"evenodd\"\n}))), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#0A1551\",\n fillRule: \"evenodd\",\n d: \"M113.82 33.317c-3.39 14.434-4.541 16.13-5.802 19.302a2.15 2.15 0 0 0 .438 2.293q7.2 7.432 19.261 4.644c8.566-1.98 8.525-4.956 3.217-29.137z\",\n clipRule: \"evenodd\"\n})), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#CD7448\",\n d: \"M136.285 54c-1.66 12.972 3.905 17.523 5.815 17.555 1.909.033-5.402 8.023-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.672 9.731-6.942 16.997-8.188-3.525.474-9.281.592-3.525.474\"\n})), _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#BD5826\",\n fillRule: \"evenodd\",\n d: \"M122.313 56.526c.792 7.227.769 11.213.687 11.85-.122.953 17.282.147 12.312-15.174s-6.632 1.806-12.999 3.324\",\n clipRule: \"evenodd\",\n opacity: 0.677\n})), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"noFormsIcon_svg__d\",\n width: 38,\n height: 44,\n x: 113,\n y: 24,\n maskUnits: \"userSpaceOnUse\",\n style: {\n maskType: \"alpha\"\n }\n}, _path12 || (_path12 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M145.092 57.05q-6.864 9.169-19.143 10.064c-8.313.605-13.863-10.235-12.793-21.364.511-5.31 1.687-9.997 6.362-14.826q14.477-14.953 27.2 3.949l3.662 9.772z\"\n}))), _g2 || (_g2 = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#noFormsIcon_svg__d)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#CD7448\",\n d: \"M143.966 56.176q-7.664 8.516-19.978 8.304c-8.336-.144-12.887-11.436-10.817-22.421.988-5.242 2.582-9.804 7.676-14.193q15.77-13.589 26.74 6.374l2.766 10.06z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#A44616\",\n d: \"M131.771 56.39c-2.695-.417-4.642-2.252-4.348-4.1s2.718-3.008 5.413-2.591 4.642 2.252 4.348 4.1-2.718 3.007-5.413 2.59\",\n opacity: 0.423\n}))), _path13 || (_path13 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#A5330A\",\n fillRule: \"evenodd\",\n d: \"M125.579 55.978q-3.178 1.358-7.5-1.401 2.034 5.777 4.623 5.258t2.877-3.857\",\n clipRule: \"evenodd\"\n})), _path14 || (_path14 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#0A1551\",\n fillRule: \"evenodd\",\n d: \"M126.938 38.462c-7.822-1.299-11.005-1.904-13.711-4.047.157-10.06 8.434-15.98 12.27-16.877 8.871-2.163 18.502.543 24.413 8.327a15 15 0 0 1 1.479 2.365q.348.56.688 1.256c3.699 10.658 5.645 26.207 4.59 31.967-2.957 3.801-26.689 4.62-23.717-.143q.25-.397.548-.835c1.396-2.08 3.387-5.046 3.368-11.71-.004-1.614-.47-3.501-.996-5.63-.178-.72-.363-1.466-.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.593.871-2.64-.266-1.223-1.465 1.825-2.025 3.253-2.3 4.373-.157.637-.756 1.077-1.403.97\",\n clipRule: \"evenodd\"\n})), _path15 || (_path15 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M115.165 138.735c5.329-2.997 29.268 3.736 47.509-2.946 10-3.663 2.348-24.999-1.822-42.89-2.639-9.901-7.007-16.464-10.989-18.892l-8.662 6.374 2.205 11.873s-1.37 4.31 1.517 12.143c2.888 7.832 7.375 17.679 7.375 17.679l-42.925 9.005c.155 3.551 1.529 10.052 5.792 7.654\"\n}))), _path16 || (_path16 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#CD7448\",\n fillRule: \"evenodd\",\n d: \"M120.877 137.279c-2.093 1.666-3.098 1.719-5.599 3.641-2.013.964-3.499 1.378-7.866.074q-3.93-1.173-11.104-.601a1.007 1.007 0 0 1-.948-1.515q1.823-3.067 7.103-3.591c6.58-.652 7.399 1.778 10.978-1.318q3.58-3.096 7.436 3.31\",\n clipRule: \"evenodd\"\n})), _path17 || (_path17 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"url(#noFormsIcon_svg__e)\",\n d: \"M116.883 140.747c10.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.988-18.892l-8.662 6.374 2.205 11.873s-1.37 4.31 1.517 12.142 7.375 17.68 7.375 17.68l-42.925 9.005c.154 3.55-1.092 7.283 5.791 7.654\"\n}))), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"noFormsIcon_svg__f\",\n width: 64,\n height: 79,\n x: 96,\n y: 14,\n maskUnits: \"userSpaceOnUse\",\n style: {\n maskType: \"alpha\"\n }\n}, _path18 || (_path18 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#C4C4C4\",\n d: \"M96 14.375h64v78H96z\"\n}))), /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#noFormsIcon_svg__f)\"\n}, /*#__PURE__*/React.createElement(\"mask\", {\n id: \"noFormsIcon_svg__g\",\n width: 59,\n height: 93,\n x: 106,\n y: 71,\n maskUnits: \"userSpaceOnUse\",\n style: {\n maskType: \"alpha\"\n }\n}, _path19 || (_path19 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M110.349 138.541c1.348-10.737 1.348-19.295 0-23.992-2.022-7.046-7.077-13.086-2.022-21.138s6.066-17.112 11.121-19.126c5.056-2.013 26.288-4.026 30.332 0q4.044 4.027 7.077 14.093l3.033 40.263q7.078 27.177 2.022 33.217c-5.055 6.04-7.077-10.066-29.32-19.125-4.718-2.013-12.133-2.85-22.243-4.192\"\n}))), _g3 || (_g3 = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#noFormsIcon_svg__g)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M110.349 138.539q2.022-16.105 0-23.151c-2.022-7.046-7.077-13.086-2.022-21.138s5.782-17.823 10.838-19.836 25.832-4.914 29.876-.888c2.696 2.684 5.794 8.98 7.816 15.69v13.611l3.033 26.653q7.078 27.178 2.022 33.217c-5.055 6.04-7.077-10.065-29.32-19.125q-7.078-3.019-22.243-5.033\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#CD7448\",\n fillRule: \"evenodd\",\n d: \"M141.692 72.154q-3.033 24.705-17.047 24.705c-14.014 0-10.728-7.372-8.973-10.828q1.755-3.458 3.859-12.305 7.232-2.308 11.04-2.578t11.121 1.006\",\n clipRule: \"evenodd\"\n}))), _path20 || (_path20 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#0A1551\",\n fillRule: \"evenodd\",\n d: \"M113.531 33.317c-3.39 14.434-4.542 16.13-5.802 19.302a2.15 2.15 0 0 0 .438 2.293q7.2 7.432 19.261 4.644c8.566-1.98 8.525-4.956 3.217-29.137z\",\n clipRule: \"evenodd\"\n})), _path21 || (_path21 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#CD7448\",\n d: \"M135.996 54c-1.661 12.972 3.905 17.523 5.815 17.555 1.909.033-5.402 8.023-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.672 9.731-6.942 16.997-8.188-3.525.474-9.281.592-3.525.474\"\n})), _path22 || (_path22 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#BD5826\",\n fillRule: \"evenodd\",\n d: \"M122.024 56.526c.792 7.227.769 11.213.687 11.85-.122.953 17.282.147 12.312-15.174s-6.632 1.806-12.999 3.324\",\n clipRule: \"evenodd\",\n opacity: 0.677\n})), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"noFormsIcon_svg__h\",\n width: 39,\n height: 44,\n x: 112,\n y: 24,\n maskUnits: \"userSpaceOnUse\",\n style: {\n maskType: \"alpha\"\n }\n}, _path23 || (_path23 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M144.803 57.05q-6.864 9.169-19.143 10.064c-8.313.605-13.863-10.235-12.793-21.364.51-5.31 1.686-9.997 6.362-14.826q14.477-14.953 27.2 3.949l3.662 9.772z\"\n}))), _g4 || (_g4 = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#noFormsIcon_svg__h)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#CD7448\",\n d: \"M143.677 56.176q-7.665 8.516-19.978 8.304c-8.336-.144-12.887-11.436-10.817-22.421.988-5.242 2.582-9.804 7.676-14.193q15.77-13.589 26.74 6.374l2.766 10.06z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#37120C\",\n fillOpacity: 0.25,\n fillRule: \"evenodd\",\n d: \"M128.904 40.83c1.203.588 2.055 1.53 2.483 2.24a.594.594 0 1 1-1.017.613c-.329-.544-1.02-1.312-1.987-1.785-.945-.462-2.165-.649-3.627-.043a.594.594 0 0 1-.455-1.099c1.802-.746 3.378-.524 4.603.074M117.443 38.857a3.34 3.34 0 0 0-2.266.715.594.594 0 0 0 .746.926 2.15 2.15 0 0 1 1.456-.455c.615.034 1.415.331 2.313 1.269a.594.594 0 1 0 .858-.822c-1.063-1.11-2.134-1.58-3.107-1.633\",\n clipRule: \"evenodd\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#A44616\",\n d: \"M131.482 56.39c-2.695-.417-4.642-2.252-4.348-4.1s2.718-3.008 5.413-2.591 4.642 2.252 4.348 4.1-2.718 3.007-5.413 2.59M109.964 51.93c-2.648-.673-4.48-2.7-4.092-4.53.388-1.828 2.848-2.765 5.496-2.093s4.48 2.7 4.092 4.53c-.388 1.828-2.848 2.766-5.496 2.093\",\n opacity: 0.423\n}))), _path24 || (_path24 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#A5330A\",\n fillRule: \"evenodd\",\n d: \"M125.29 55.978q-3.178 1.358-7.5-1.401 2.034 5.777 4.623 5.258t2.877-3.857\",\n clipRule: \"evenodd\"\n})), _path25 || (_path25 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#321907\",\n d: \"M126.298 46.575c-.558-.01-1-.68-.987-1.499.013-.818.476-1.474 1.034-1.464s1 .68.987 1.498c-.013.819-.476 1.474-1.034 1.465M117.699 45.024c-.558-.01-1-.68-.987-1.499.013-.818.475-1.474 1.033-1.464s1 .68.987 1.499c-.012.818-.475 1.473-1.033 1.464\"\n})), _path26 || (_path26 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#8A3110\",\n fillRule: \"evenodd\",\n d: \"M122.715 43.971a.36.36 0 0 0-.5.07c-.982 1.305-1.621 1.94-2.222 2.378-.302.221-.601.397-.943.587l-.291.16a30 30 0 0 0-.891.501c-1.157.68-1.326 2.249-.802 3.412.271.6.736 1.135 1.394 1.442.661.309 1.483.372 2.434.084a.355.355 0 0 0 .237-.443.36.36 0 0 0-.446-.238c-.809.245-1.446.176-1.923-.047a2.16 2.16 0 0 1-1.044-1.088c-.437-.97-.215-2.08.514-2.509a29 29 0 0 1 .863-.485l.304-.167c.35-.194.68-.387 1.018-.634.679-.497 1.367-1.193 2.37-2.524a.356.356 0 0 0-.072-.499\",\n clipRule: \"evenodd\"\n})), _path27 || (_path27 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#0A1551\",\n fillRule: \"evenodd\",\n d: \"M126.649 38.462c-7.822-1.299-11.005-1.904-13.711-4.047.157-10.06 8.434-15.98 12.27-16.877 8.871-2.163 18.502.543 24.413 8.327a15 15 0 0 1 1.479 2.365q.348.56.688 1.256c3.699 10.658 5.645 26.207 4.59 31.967-2.957 3.801-26.689 4.62-23.717-.143q.25-.397.548-.835c1.396-2.08 3.387-5.046 3.368-11.71-.004-1.614-.471-3.501-.996-5.63-.178-.72-.363-1.466-.538-2.24l-1.197-.417c-1.692-.588-2.987-1.038-3.79-1.386-.88-.381-.041-2.924.562-4.75.526-1.593.871-2.64-.266-1.223-1.465 1.825-2.025 3.253-2.3 4.373-.157.637-.756 1.077-1.403.97\",\n clipRule: \"evenodd\"\n})), _path28 || (_path28 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M114.876 138.735c5.328-2.997 29.268 3.736 47.508-2.946 10.001-3.663 2.348-24.999-1.821-42.89-2.639-9.901-7.007-16.464-10.989-18.892l-8.662 6.374 2.205 11.873s-1.37 4.31 1.517 12.143c2.888 7.832 7.375 17.679 7.375 17.679l-42.925 9.005c.155 3.551 1.528 10.052 5.792 7.654\"\n}))), _path29 || (_path29 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M38 4.958A4.583 4.583 0 0 1 42.583.375h21.77a4.583 4.583 0 0 1 4.582 4.583v27.498a4.583 4.583 0 0 1-4.583 4.583H42.583A4.583 4.583 0 0 1 38 32.456z\"\n})), _path30 || (_path30 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#C8CEED\",\n fillRule: \"evenodd\",\n d: \"M64.352 1.52H42.583a3.437 3.437 0 0 0-3.437 3.438v27.498a3.437 3.437 0 0 0 3.437 3.437h21.77a3.437 3.437 0 0 0 3.437-3.437V4.958a3.437 3.437 0 0 0-3.438-3.437M42.583.376A4.583 4.583 0 0 0 38 4.958v27.498a4.583 4.583 0 0 0 4.583 4.583h21.77a4.583 4.583 0 0 0 4.582-4.583V4.958A4.583 4.583 0 0 0 64.352.375z\",\n clipRule: \"evenodd\"\n})), _path31 || (_path31 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#09F\",\n d: \"M44.547 12.816c0-1.085.88-1.964 1.964-1.964h14.404a1.964 1.964 0 1 1 0 3.928H46.51a1.964 1.964 0 0 1-1.964-1.964\"\n})), _path32 || (_path32 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FF6100\",\n d: \"M44.547 19.363c0-1.085.88-1.965 1.964-1.965h14.404a1.964 1.964 0 1 1 0 3.929H46.51a1.964 1.964 0 0 1-1.964-1.964\"\n})), _path33 || (_path33 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FFB629\",\n d: \"M44.547 25.91c0-1.085.88-1.965 1.964-1.965h14.404a1.964 1.964 0 1 1 0 3.929H46.51a1.964 1.964 0 0 1-1.964-1.964\"\n})), _path34 || (_path34 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M57.065 44.958a4.583 4.583 0 0 1 4.583-4.583h21.769A4.583 4.583 0 0 1 88 44.958v27.498a4.583 4.583 0 0 1-4.583 4.583h-21.77a4.583 4.583 0 0 1-4.582-4.583z\"\n})), _path35 || (_path35 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#C8CEED\",\n fillRule: \"evenodd\",\n d: \"M83.417 41.52h-21.77a3.437 3.437 0 0 0-3.437 3.438v27.498a3.437 3.437 0 0 0 3.438 3.437h21.769a3.437 3.437 0 0 0 3.437-3.437V44.958a3.437 3.437 0 0 0-3.437-3.437m-21.77-1.145a4.583 4.583 0 0 0-4.582 4.583v27.498a4.583 4.583 0 0 0 4.583 4.583h21.769A4.583 4.583 0 0 0 88 72.456V44.958a4.583 4.583 0 0 0-4.583-4.583z\",\n clipRule: \"evenodd\"\n})), _path36 || (_path36 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#09F\",\n d: \"M63.611 52.816c0-1.085.88-1.964 1.965-1.964h14.403a1.964 1.964 0 1 1 0 3.928H65.576a1.964 1.964 0 0 1-1.965-1.964\"\n})), _path37 || (_path37 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FF6100\",\n d: \"M63.611 59.363c0-1.085.88-1.965 1.965-1.965h14.403a1.964 1.964 0 0 1 0 3.929H65.576a1.964 1.964 0 0 1-1.965-1.964\"\n})), _path38 || (_path38 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FFB629\",\n d: \"M63.611 65.91c0-1.085.88-1.965 1.965-1.965h14.403a1.964 1.964 0 0 1 0 3.929H65.576a1.964 1.964 0 0 1-1.965-1.965\"\n})), _path39 || (_path39 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M18 44.958a4.583 4.583 0 0 1 4.583-4.583h21.77a4.583 4.583 0 0 1 4.582 4.583v27.498a4.583 4.583 0 0 1-4.583 4.583H22.583A4.583 4.583 0 0 1 18 72.456z\"\n})), _path40 || (_path40 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#C8CEED\",\n fillRule: \"evenodd\",\n d: \"M44.352 41.52H22.583a3.437 3.437 0 0 0-3.437 3.438v27.498a3.437 3.437 0 0 0 3.437 3.437h21.77a3.437 3.437 0 0 0 3.437-3.437V44.958a3.437 3.437 0 0 0-3.438-3.437m-21.769-1.145A4.583 4.583 0 0 0 18 44.958v27.498a4.583 4.583 0 0 0 4.583 4.583h21.77a4.583 4.583 0 0 0 4.582-4.583V44.958a4.583 4.583 0 0 0-4.583-4.583z\",\n clipRule: \"evenodd\"\n})), _path41 || (_path41 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#09F\",\n d: \"M24.547 52.816c0-1.085.88-1.964 1.964-1.964h14.404a1.964 1.964 0 1 1 0 3.928H26.51a1.964 1.964 0 0 1-1.964-1.964\"\n})), _path42 || (_path42 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FF6100\",\n d: \"M24.547 59.363c0-1.085.88-1.965 1.964-1.965h14.404a1.964 1.964 0 1 1 0 3.929H26.51a1.964 1.964 0 0 1-1.964-1.964\"\n})), _path43 || (_path43 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FFB629\",\n d: \"M24.547 65.91c0-1.085.88-1.965 1.964-1.965h14.404a1.964 1.964 0 1 1 0 3.929H26.51a1.964 1.964 0 0 1-1.964-1.965\"\n})), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"noFormsIcon_svg__e\",\n x1: 152.19,\n x2: 149.764,\n y1: 93.88,\n y2: 110.89,\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 SvgNoFormsIcon;","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, _g5, _path39, _path40, _path41, _path42, _path43, _path44, _path45, _circle, _path46, _path47, _path48, _path49, _path50, _path51, _path52, _path53, _path54, _path55, _path56, _path57, _path58, _rect, _path59, _path60, _path61, _path62, _path63, _path64, _path65, _path66, _rect2, _path67, _path68, _path69, _path70, _path71, _path72, _path73, _path74, _rect3, _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 xmlns: \"http://www.w3.org/2000/svg\",\n width: 201,\n height: 138,\n fill: \"none\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#E6E6F5\",\n d: \"M3 93.812c0-23.633 19.158-42.79 42.79-42.79h112.325c23.632 0 42.79 19.157 42.79 42.79s-19.158 42.79-42.79 42.79H45.79C22.158 136.602 3 117.444 3 93.812\"\n})), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"noTablesIcon_svg__a\",\n width: 198,\n height: 86,\n x: 3,\n y: 51,\n maskUnits: \"userSpaceOnUse\",\n style: {\n maskType: \"alpha\"\n }\n}, _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#E6E6F5\",\n d: \"M3 93.812c0-23.633 19.158-42.79 42.79-42.79h112.325c23.632 0 42.79 19.157 42.79 42.79s-19.158 42.79-42.79 42.79H45.79C22.158 136.602 3 117.444 3 93.812\"\n}))), /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#noTablesIcon_svg__a)\"\n}, _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#CD7448\",\n fillRule: \"evenodd\",\n d: \"M118.336 74.299q-12.652 15.957-20.705 20.579c-8.054 4.622-8.643-.235-38.14-20.745-2.052-.861-3.716-1.09-6.495 2q-2.494 2.773-10.721 1.46a1.014 1.014 0 0 0-1.16.836c-.045.273.025.553.192.772q2.025 2.654 7.01 2.894c6.592.316 7.3-2.157 11.009.757s23.584 26.214 35.57 26.792 27.734-17.227 32.189-18.6q4.455-1.371 7.268-21.678z\",\n clipRule: \"evenodd\"\n})), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#F4F5FE\",\n fillRule: \"evenodd\",\n d: \"M61.954 86.431q4.905-4.684 5.949-8.17 21.942 16.394 24.838 15.496c2.646-.82 24.003-20.019 31.424-24.56.674-.673.721 5.077 1.257 4.457l-2.407 22.315q-13 9.303-16.565 11.463c-3.566 2.16-12.922 6.115-21.372-.755q-8.45-6.87-23.124-20.246\",\n clipRule: \"evenodd\"\n})), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M113.638 110.924c1.348 4.697 1.348 10.59 0 21.326l49.541-7.234-3.033-40.263q-3.033-10.065-7.077-14.093c-4.044-4.026-25.276-2.013-30.332 0-5.055 2.014-6.066 11.073-11.121 19.126-5.055 8.052 0 14.092 2.022 21.138\"\n})), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#CD7448\",\n fillRule: \"evenodd\",\n d: \"M144.981 68.53q-3.033 24.705-17.047 24.704c-14.014 0-10.728-7.372-8.973-10.828q1.755-3.458 3.859-12.305 7.231-2.308 11.04-2.578 3.807-.27 11.121 1.006\",\n clipRule: \"evenodd\"\n})), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"noTablesIcon_svg__b\",\n width: 110,\n height: 94,\n x: 54,\n y: -5,\n maskUnits: \"userSpaceOnUse\",\n style: {\n maskType: \"alpha\"\n }\n}, _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#C4C4C4\",\n d: \"M54.29-4.25h109.352v92.712H54.289z\"\n}))), /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#noTablesIcon_svg__b)\"\n}, /*#__PURE__*/React.createElement(\"mask\", {\n id: \"noTablesIcon_svg__c\",\n width: 59,\n height: 92,\n x: 109,\n y: 68,\n maskUnits: \"userSpaceOnUse\",\n style: {\n maskType: \"alpha\"\n }\n}, _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M113.638 134.916c1.348-10.737 1.348-19.295 0-23.992-2.022-7.046-7.077-13.086-2.022-21.138s6.066-17.112 11.121-19.126c5.056-2.013 26.288-4.026 30.332 0q4.044 4.027 7.077 14.093l3.033 40.263q7.078 27.177 2.022 33.217c-5.055 6.04-7.077-10.066-29.32-19.125-4.718-2.013-12.133-2.85-22.243-4.192\"\n}))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#noTablesIcon_svg__c)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M113.638 134.914q2.022-16.105 0-23.151c-2.022-7.046-7.077-13.086-2.022-21.138s5.782-17.823 10.838-19.836 25.832-4.914 29.876-.888c2.696 2.684 5.794 8.98 7.816 15.69v13.61l3.033 26.654q7.078 27.178 2.022 33.217c-5.055 6.04-7.077-10.065-29.32-19.125q-7.077-3.019-22.243-5.033\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#CD7448\",\n fillRule: \"evenodd\",\n d: \"M144.981 68.53q-3.033 24.705-17.047 24.704c-14.014 0-10.728-7.372-8.973-10.828q1.755-3.458 3.859-12.305 7.231-2.308 11.04-2.578 3.807-.27 11.121 1.006\",\n clipRule: \"evenodd\"\n}))), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#0A1551\",\n fillRule: \"evenodd\",\n d: \"M116.82 29.692c-3.39 14.434-4.541 16.13-5.802 19.302a2.15 2.15 0 0 0 .438 2.293q7.2 7.432 19.261 4.644c8.566-1.98 8.525-4.956 3.217-29.137z\",\n clipRule: \"evenodd\"\n})), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#CD7448\",\n d: \"M139.285 50.374c-1.66 12.973 3.905 17.524 5.815 17.556 1.909.033-5.402 8.023-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.672 9.731-6.942 16.997-8.188-3.525.474-9.281.592-3.525.474\"\n})), _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#BD5826\",\n fillRule: \"evenodd\",\n d: \"M125.313 52.9c.792 7.228.769 11.214.687 11.85-.122.954 17.282.148 12.312-15.173s-6.632 1.806-12.999 3.324\",\n clipRule: \"evenodd\",\n opacity: 0.677\n})), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"noTablesIcon_svg__d\",\n width: 38,\n height: 44,\n x: 116,\n y: 20,\n maskUnits: \"userSpaceOnUse\",\n style: {\n maskType: \"alpha\"\n }\n}, _path12 || (_path12 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M148.092 53.424q-6.864 9.17-19.143 10.065c-8.313.605-13.863-10.235-12.793-21.364.511-5.31 1.687-9.997 6.362-14.826q14.477-14.953 27.2 3.949l3.662 9.772z\"\n}))), _g2 || (_g2 = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#noTablesIcon_svg__d)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#CD7448\",\n d: \"M146.966 52.551q-7.664 8.516-19.978 8.304c-8.336-.144-12.887-11.436-10.817-22.421.988-5.242 2.582-9.804 7.676-14.193q15.77-13.59 26.74 6.375l2.766 10.059z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#A44616\",\n d: \"M134.771 52.765c-2.695-.417-4.642-2.252-4.348-4.1s2.718-3.008 5.413-2.591 4.642 2.252 4.348 4.1-2.718 3.007-5.413 2.59\",\n opacity: 0.423\n}))), _path13 || (_path13 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#A5330A\",\n fillRule: \"evenodd\",\n d: \"M128.579 52.353q-3.179 1.358-7.5-1.401 2.034 5.777 4.623 5.258t2.877-3.857\",\n clipRule: \"evenodd\"\n})), _path14 || (_path14 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#0A1551\",\n fillRule: \"evenodd\",\n d: \"M129.938 34.837c-7.822-1.299-11.005-1.904-13.711-4.047.157-10.06 8.434-15.98 12.27-16.877 8.871-2.163 18.502.543 24.413 8.327a15 15 0 0 1 1.479 2.365q.348.56.688 1.256c3.699 10.658 5.645 26.207 4.59 31.967-2.957 3.801-26.689 4.62-23.717-.143q.25-.397.548-.835c1.396-2.08 3.387-5.046 3.368-11.71-.004-1.614-.47-3.501-.996-5.63-.178-.72-.363-1.466-.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.593.871-2.64-.266-1.223-1.465 1.825-2.025 3.253-2.3 4.373-.157.637-.756 1.077-1.403.97\",\n clipRule: \"evenodd\"\n})), _path15 || (_path15 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M118.165 135.11c5.329-2.997 29.268 3.736 47.509-2.946 10-3.663 2.348-24.999-1.822-42.89-2.639-9.901-7.007-16.464-10.989-18.892l-8.662 6.374 2.205 11.873s-1.37 4.31 1.517 12.143c2.888 7.832 7.375 17.679 7.375 17.679l-42.925 9.005c.155 3.551 1.529 10.052 5.792 7.654\"\n}))), _path16 || (_path16 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#CD7448\",\n fillRule: \"evenodd\",\n d: \"M123.877 133.654c-2.093 1.666-3.098 1.719-5.599 3.641-2.013.964-3.499 1.378-7.866.074q-3.93-1.173-11.104-.601a1.007 1.007 0 0 1-.948-1.515q1.823-3.067 7.103-3.591c6.58-.652 7.399 1.778 10.978-1.318q3.58-3.096 7.436 3.31\",\n clipRule: \"evenodd\"\n})), _path17 || (_path17 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"url(#noTablesIcon_svg__e)\",\n d: \"M119.883 137.122c10.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.988-18.892l-8.662 6.374 2.205 11.873s-1.37 4.31 1.517 12.142 7.375 17.68 7.375 17.68l-42.925 9.005c.154 3.55-1.092 7.283 5.791 7.654\"\n}))), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"noTablesIcon_svg__f\",\n width: 64,\n height: 79,\n x: 99,\n y: 10,\n maskUnits: \"userSpaceOnUse\",\n style: {\n maskType: \"alpha\"\n }\n}, _path18 || (_path18 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#C4C4C4\",\n d: \"M99 10.75h64v78H99z\"\n}))), /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#noTablesIcon_svg__f)\"\n}, /*#__PURE__*/React.createElement(\"mask\", {\n id: \"noTablesIcon_svg__g\",\n width: 59,\n height: 92,\n x: 109,\n y: 68,\n maskUnits: \"userSpaceOnUse\",\n style: {\n maskType: \"alpha\"\n }\n}, _path19 || (_path19 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M113.349 134.916c1.348-10.737 1.348-19.295 0-23.992-2.022-7.046-7.077-13.086-2.022-21.138s6.066-17.112 11.121-19.126c5.056-2.013 26.288-4.026 30.332 0q4.044 4.027 7.077 14.093l3.033 40.263q7.078 27.177 2.022 33.217c-5.055 6.04-7.077-10.066-29.32-19.125-4.718-2.013-12.133-2.85-22.243-4.192\"\n}))), _g3 || (_g3 = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#noTablesIcon_svg__g)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M113.349 134.914q2.022-16.105 0-23.151c-2.022-7.046-7.077-13.086-2.022-21.138s5.782-17.823 10.838-19.836 25.832-4.914 29.876-.888c2.696 2.684 5.794 8.98 7.816 15.69v13.61l3.033 26.654q7.078 27.178 2.022 33.217c-5.055 6.04-7.077-10.065-29.32-19.125q-7.077-3.019-22.243-5.033\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#CD7448\",\n fillRule: \"evenodd\",\n d: \"M144.692 68.53q-3.033 24.705-17.047 24.704c-14.014 0-10.728-7.372-8.973-10.828q1.755-3.458 3.859-12.305 7.231-2.308 11.04-2.578 3.807-.27 11.121 1.006\",\n clipRule: \"evenodd\"\n}))), _path20 || (_path20 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#0A1551\",\n fillRule: \"evenodd\",\n d: \"M116.531 29.692c-3.39 14.434-4.542 16.13-5.802 19.302a2.15 2.15 0 0 0 .438 2.293q7.2 7.432 19.261 4.644c8.566-1.98 8.525-4.956 3.217-29.137z\",\n clipRule: \"evenodd\"\n})), _path21 || (_path21 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#CD7448\",\n d: \"M138.996 50.374c-1.661 12.973 3.905 17.524 5.815 17.556 1.909.033-5.402 8.023-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.672 9.731-6.942 16.997-8.188-3.525.474-9.281.592-3.525.474\"\n})), _path22 || (_path22 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#BD5826\",\n fillRule: \"evenodd\",\n d: \"M125.024 52.9c.792 7.228.769 11.214.687 11.85-.122.954 17.282.148 12.312-15.173s-6.632 1.806-12.999 3.324\",\n clipRule: \"evenodd\",\n opacity: 0.677\n})), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"noTablesIcon_svg__h\",\n width: 39,\n height: 44,\n x: 115,\n y: 20,\n maskUnits: \"userSpaceOnUse\",\n style: {\n maskType: \"alpha\"\n }\n}, _path23 || (_path23 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M147.803 53.424q-6.864 9.17-19.143 10.065c-8.313.605-13.863-10.235-12.793-21.364.51-5.31 1.686-9.997 6.362-14.826q14.477-14.953 27.2 3.949l3.662 9.772z\"\n}))), _g4 || (_g4 = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#noTablesIcon_svg__h)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#CD7448\",\n d: \"M146.677 52.551q-7.665 8.516-19.978 8.304c-8.336-.144-12.887-11.436-10.817-22.421.988-5.242 2.582-9.804 7.676-14.193q15.77-13.59 26.74 6.375l2.766 10.059z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#37120C\",\n fillOpacity: 0.25,\n fillRule: \"evenodd\",\n d: \"M131.904 37.205c1.203.588 2.055 1.53 2.483 2.24a.594.594 0 1 1-1.017.613c-.329-.544-1.02-1.312-1.987-1.785-.945-.462-2.165-.649-3.627-.043a.594.594 0 0 1-.455-1.099c1.802-.746 3.378-.524 4.603.074M120.443 35.232a3.34 3.34 0 0 0-2.266.715.594.594 0 0 0 .746.926 2.15 2.15 0 0 1 1.456-.455c.615.034 1.415.331 2.313 1.269a.594.594 0 1 0 .858-.822c-1.063-1.11-2.134-1.58-3.107-1.633\",\n clipRule: \"evenodd\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#A44616\",\n d: \"M134.482 52.765c-2.695-.417-4.642-2.252-4.348-4.1s2.718-3.008 5.413-2.591 4.642 2.252 4.348 4.1-2.718 3.007-5.413 2.59M112.964 48.305c-2.648-.673-4.48-2.7-4.092-4.53.388-1.828 2.848-2.765 5.496-2.093s4.48 2.7 4.092 4.53c-.388 1.828-2.848 2.766-5.496 2.093\",\n opacity: 0.423\n}))), _path24 || (_path24 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#A5330A\",\n fillRule: \"evenodd\",\n d: \"M128.29 52.353q-3.178 1.358-7.5-1.401 2.034 5.777 4.623 5.258t2.877-3.857\",\n clipRule: \"evenodd\"\n})), _path25 || (_path25 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#321907\",\n d: \"M129.298 42.95c-.558-.01-1-.68-.987-1.499.013-.818.476-1.474 1.034-1.464s1 .68.987 1.498c-.013.819-.476 1.474-1.034 1.465M120.699 41.399c-.558-.01-1-.68-.987-1.499.013-.818.475-1.474 1.033-1.464s1 .68.987 1.499c-.012.818-.475 1.473-1.033 1.464\"\n})), _path26 || (_path26 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#8A3110\",\n fillRule: \"evenodd\",\n d: \"M125.715 40.346a.36.36 0 0 0-.5.07c-.982 1.305-1.621 1.94-2.222 2.378-.302.221-.601.397-.943.587l-.291.16a30 30 0 0 0-.891.501c-1.157.68-1.326 2.249-.802 3.412.271.6.736 1.135 1.394 1.442.661.309 1.483.372 2.434.084a.355.355 0 0 0 .237-.443.36.36 0 0 0-.446-.238c-.809.245-1.446.176-1.923-.047a2.16 2.16 0 0 1-1.044-1.088c-.437-.97-.215-2.08.514-2.509a29 29 0 0 1 .863-.485l.304-.167c.35-.194.68-.387 1.018-.634.679-.497 1.367-1.193 2.37-2.524a.356.356 0 0 0-.072-.499\",\n clipRule: \"evenodd\"\n})), _path27 || (_path27 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#0A1551\",\n fillRule: \"evenodd\",\n d: \"M129.649 34.837c-7.822-1.299-11.005-1.904-13.711-4.047.157-10.06 8.434-15.98 12.27-16.877 8.871-2.163 18.502.543 24.413 8.327a15 15 0 0 1 1.479 2.365q.348.56.688 1.256c3.699 10.658 5.645 26.207 4.59 31.967-2.957 3.801-26.689 4.62-23.717-.143q.25-.397.548-.835c1.396-2.08 3.387-5.046 3.368-11.71-.004-1.614-.471-3.501-.996-5.63-.178-.72-.363-1.466-.538-2.24l-1.197-.417c-1.692-.588-2.987-1.038-3.79-1.386-.88-.381-.041-2.924.562-4.75.526-1.593.871-2.64-.266-1.223-1.465 1.825-2.025 3.253-2.3 4.373-.157.637-.756 1.077-1.403.97\",\n clipRule: \"evenodd\"\n})), _path28 || (_path28 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M117.876 135.11c5.328-2.997 29.268 3.736 47.508-2.946 10.001-3.663 2.348-24.999-1.821-42.89-2.639-9.901-7.007-16.464-10.989-18.892l-8.662 6.374 2.205 11.873s-1.37 4.31 1.517 12.143c2.888 7.832 7.375 17.679 7.375 17.679l-42.925 9.005c.155 3.551 1.528 10.052 5.792 7.654\"\n}))), _path29 || (_path29 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#E6E6F5\",\n d: \"M0 94.435c0-23.633 19.158-42.79 42.79-42.79h112.325c23.632 0 42.79 19.157 42.79 42.79s-19.158 42.79-42.79 42.79H42.79C19.158 137.225 0 118.067 0 94.435\"\n})), _path30 || (_path30 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#EFBB9D\",\n d: \"M65.837 81.96a12.65 12.65 0 0 0-9.509-2.973l-5.068-2.293a1.82 1.82 0 0 0-2.216.54 1.56 1.56 0 0 0 .453 2.214l2.755 1.843-1.175-.098a8.8 8.8 0 0 1-5.008-2.073l-3.913-3.385a1.76 1.76 0 0 0-1.662-.33 1.482 1.482 0 0 0-.745 2.44l4.571 5.042a9.93 9.93 0 0 0 7.053 3.203l14.655.45z\"\n})), _path31 || (_path31 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#091141\",\n fillRule: \"evenodd\",\n d: \"M114.82 31.317c-3.39 14.435-7.259 48.95-8.519 52.121a2.15 2.15 0 0 0 .438 2.293q7.199 7.432 19.261 4.644c8.565-1.98 11.243-37.775 5.934-61.956z\",\n clipRule: \"evenodd\"\n})), _path32 || (_path32 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#F4F5FE\",\n fillRule: \"evenodd\",\n d: \"M59.956 88.054q4.905-4.683 5.949-8.17Q87.847 96.276 90.743 95.38c2.646-.82 24.003-20.019 31.424-24.56.674-.673.721 5.077 1.257 4.458l-2.407 22.314q-13 9.303-16.566 11.463c-3.565 2.16-12.921 6.115-21.37-.755q-8.45-6.87-23.125-20.246\",\n clipRule: \"evenodd\"\n})), _path33 || (_path33 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M110.592 112.816c1.123 4.756 3.266 8.898 1.408 19.56 10.036 1.817 16.883-1.234 21.5 1l17.5-8 12.5-5.5-5.855-17.414.647-13.594c-1.701-6.798-4.496-13.234-7.061-16.042-3.849-4.212-24.74-2.294-29.885-.522s-6.337 11.497-11.769 19.302c-5.433 7.806-.67 14.077 1.015 21.21\"\n})), _path34 || (_path34 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#EFBB9D\",\n fillRule: \"evenodd\",\n d: \"M142.981 70.154q-3.033 24.705-17.047 24.705c-14.014 0-10.728-7.372-8.973-10.828q1.755-3.458 3.859-12.305 7.231-2.308 11.04-2.578 3.807-.27 11.121 1.006\",\n clipRule: \"evenodd\"\n})), _path35 || (_path35 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#321907\",\n d: \"M122.004 47.536c-.552.081-1.098-.51-1.219-1.319-.121-.81.228-1.531.78-1.613.552-.081 1.098.51 1.219 1.319.121.81-.228 1.532-.78 1.613M114.453 47.403c-.552.081-1.098-.509-1.219-1.319s.228-1.531.78-1.613c.552-.08 1.098.51 1.219 1.319.121.81-.228 1.532-.78 1.613\"\n})), _path36 || (_path36 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#EFBB9D\",\n d: \"M137.285 52c-1.66 12.973 4.305 17.843 6.215 17.876 1.909.032-5.802 7.703-19.433 20.49-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.473\"\n})), _path37 || (_path37 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#DC9F7E\",\n fillRule: \"evenodd\",\n d: \"M123.313 54.526c.792 7.227.769 11.213.687 11.85-.122.953 17.282.147 12.312-15.174s-6.632 1.806-12.999 3.324\",\n clipRule: \"evenodd\",\n opacity: 0.677\n})), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"noTablesIcon_svg__i\",\n width: 38,\n height: 44,\n x: 114,\n y: 22,\n maskUnits: \"userSpaceOnUse\",\n style: {\n maskType: \"alpha\"\n }\n}, _path38 || (_path38 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M146.092 55.05q-6.864 9.169-19.143 10.064c-8.313.605-13.863-10.235-12.793-21.364.511-5.31 1.687-9.997 6.362-14.826q14.477-14.953 27.2 3.949l3.662 9.772z\"\n}))), _g5 || (_g5 = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#noTablesIcon_svg__i)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#EFBB9D\",\n d: \"M144.966 54.176q-7.664 8.516-19.978 8.304c-8.336-.144-12.887-11.436-10.817-22.421.988-5.242 2.582-9.804 7.676-14.193q15.77-13.589 26.74 6.374l2.766 10.06z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#EFA77F\",\n d: \"M132.771 54.39c-2.695-.417-4.642-2.252-4.348-4.1s2.718-3.008 5.413-2.591 4.642 2.252 4.348 4.1-2.718 3.007-5.413 2.59M111.253 49.93c-2.648-.673-4.48-2.7-4.092-4.53.388-1.828 2.848-2.765 5.496-2.093s4.48 2.7 4.092 4.53c-.388 1.828-2.848 2.766-5.496 2.093\"\n}))), _path39 || (_path39 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#A5330A\",\n fillRule: \"evenodd\",\n d: \"M126.024 53.94q-3.177 1.359-7.5-1.4 2.034 5.777 4.624 5.258t2.876-3.857\",\n clipRule: \"evenodd\"\n})), _path40 || (_path40 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#0A1551\",\n d: \"M127.587 44.575c-.558-.01-1-.68-.987-1.499.013-.818.476-1.474 1.034-1.464s1 .68.987 1.498c-.013.819-.476 1.474-1.034 1.465M118.988 43.024c-.558-.01-1-.68-.987-1.499.013-.818.475-1.474 1.034-1.464.558.01.999.68.987 1.499-.013.818-.476 1.473-1.034 1.464\"\n})), _path41 || (_path41 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#EFBB9D\",\n fillRule: \"evenodd\",\n d: \"M142.981 70.154q-3.033 24.705-17.047 24.705c-14.014 0-10.728-7.372-8.973-10.828q1.755-3.458 3.859-12.305 7.231-2.308 11.04-2.578 3.807-.27 11.121 1.006\",\n clipRule: \"evenodd\"\n})), _path42 || (_path42 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"m142.201 78.382 2.205 11.872s-1.37 4.31 1.517 12.143c2.888 7.832 7.375 17.679 7.375 17.679l10.376 13.713c10-3.663 2.348-24.999-1.822-42.89-2.639-9.901-7.007-16.464-10.989-18.892z\"\n})), _path43 || (_path43 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"url(#noTablesIcon_svg__j)\",\n d: \"m144.23 81.388 2.205 11.872s-1.37 4.311 1.517 12.143 7.375 17.679 7.375 17.679l9.172 12.292c10-3.663 3.551-23.577-.618-41.468-2.639-9.903-7.007-16.465-10.989-18.893z\"\n})), _path44 || (_path44 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M142.501 69.375c-11.2 2.4-17.334.667-19-.5-.8.4-2.667 2.5-3.501 3.5-1.5 3.667-4.799 11.7-5.999 14.5-1.5 3.5 1 5.5 4.5 9.5s14.5.5 18.5-.5c3.2-.8 7-17.333 8.5-25.5-2-.4-2.834-.833-3-1\"\n})), _path45 || (_path45 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#091141\",\n fillRule: \"evenodd\",\n d: \"M127.938 36.462c-7.822-1.299-11.005-1.904-13.711-4.047.157-10.06 8.434-15.98 12.27-16.877 8.871-2.163 18.502.543 24.413 8.327a15 15 0 0 1 1.479 2.365q.348.56.688 1.256c3.699 10.658 3.602 50.771 2.546 56.531-2.957 3.801-26.688 4.621-23.716-.143q.25-.397.548-.835c1.395-2.08 5.43-29.61 5.411-36.274-.004-1.614-.47-3.501-.996-5.63-.178-.72-.363-1.466-.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.593.871-2.64-.266-1.223-1.465 1.825-2.025 3.253-2.3 4.373-.157.637-.756 1.077-1.403.97\",\n clipRule: \"evenodd\"\n})), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 145.5,\n cy: 16.875,\n r: 9.5,\n fill: \"#091141\"\n})), _path46 || (_path46 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#091141\",\n d: \"M129.897 38.411s-3.058-.841-3.416.458c0 0-.24.872 2.544 1.573 2.785.7 3.464.624 3.863-.17.4-.795-1.509-1.568-2.991-1.86M118.797 36.46s2.645.156 2.641 1.448c0 0-.01.866-2.331.662s-3-.623-3.096-1.336c-.095-.712 1.541-.963 2.786-.774\"\n})), _path47 || (_path47 = /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#D97D4A\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 0.92,\n d: \"M121.942 45.389 121 48.285l1.873.494\"\n})), _path48 || (_path48 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#EFBB9D\",\n d: \"m124.604 130.031 8.025-.619-.245 8.026h-6.95z\"\n})), _path49 || (_path49 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#EFBB9D\",\n d: \"m126.861 129.813.401 1.606.803 6.019H108c.401-4.013 6.019-8.026 10.032-8.026 3.211 0 8.026.268 8.829.401\"\n})), _path50 || (_path50 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#F4F6FF\",\n d: \"m161.399 122.431-31.399.941 2 14.003 30-.5c1.085-.146 2.344-.204 3.256-.81 1-.665 2.685-1.934 3.239-2.878a7.22 7.22 0 0 0 .49-6.301 7.216 7.216 0 0 0-7.586-4.455\"\n})), _path51 || (_path51 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M41.134 31.258c-1.63 0-2.074-.439-2.074-2.075-.002-14.674-.002-10.092 0-24.766 0-1.562.47-2.039 2.04-2.04 14.686-.003 10.116-.003 24.801 0 1.55.001 2.039.497 2.04 2.052.002 14.674.002 10.092 0 24.766 0 1.618-.46 2.063-2.093 2.063H41.134m24.223-2.062a.52.52 0 0 0 .522-.523v-5.627a.523.523 0 0 0-.522-.522H59.73a.523.523 0 0 0-.522.522v5.627c0 .289.233.523.522.523zm-14.67 0h5.627a.52.52 0 0 0 .522-.523v-5.627a.523.523 0 0 0-.522-.522h-5.627a.523.523 0 0 0-.522.522v5.627c0 .289.233.523.522.523m-9.043 0h5.627a.523.523 0 0 0 .522-.523v-5.627a.523.523 0 0 0-.522-.522h-5.627a.523.523 0 0 0-.522.522v5.627c0 .289.234.523.522.523m18.086-9.043h5.627a.52.52 0 0 0 .522-.523v-5.626a.523.523 0 0 0-.522-.523H59.73a.523.523 0 0 0-.522.523v5.626c0 .289.233.523.522.523m-9.043 0h5.627a.52.52 0 0 0 .522-.523v-5.626a.523.523 0 0 0-.522-.523h-5.627a.523.523 0 0 0-.522.523v5.626c0 .289.233.523.522.523m-9.043 0h5.627a.523.523 0 0 0 .522-.523v-5.626a.523.523 0 0 0-.522-.523h-5.627a.523.523 0 0 0-.522.523v5.626c0 .289.234.523.522.523m9.043-9.043h5.627c.288 0 .522-.141.522-.316V7.396c0-.174-.234-.316-.522-.316h-5.627c-.288 0-.522.142-.522.316v3.398c0 .175.233.316.522.316m9.026 0h5.627c.288 0 .522-.141.522-.316V7.396c0-.174-.233-.316-.522-.316h-5.627c-.288 0-.522.142-.522.316v3.398c0 .175.234.316.522.316m-18.069 0h5.627c.288 0 .522-.141.522-.316V7.396c0-.174-.234-.316-.522-.316h-5.627c-.288 0-.522.142-.522.316v3.398c0 .175.234.316.522.316\"\n})), _path52 || (_path52 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M40.664 4.781h25.674v24.872H40.664z\"\n})), _path53 || (_path53 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#0D953B\",\n d: \"M59.117 7.387a1 1 0 0 1 1-1h4.746a1 1 0 0 1 1 1V10.2a1 1 0 0 1-1 1h-4.746a1 1 0 0 1-1-1z\"\n})), _path54 || (_path54 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FFB629\",\n d: \"M59.117 14.607a1 1 0 0 1 1-1h4.419a1 1 0 0 1 1 1v4.419a1 1 0 0 1-1 1h-4.419a1 1 0 0 1-1-1zM59.117 23.434a1 1 0 0 1 1-1h4.419a1 1 0 0 1 1 1v4.418a1 1 0 0 1-1 1h-4.419a1 1 0 0 1-1-1z\"\n})), _path55 || (_path55 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#0D953B\",\n d: \"M50.166 7.387a1 1 0 0 1 1-1h4.872a1 1 0 0 1 1 1V10.2a1 1 0 0 1-1 1h-4.872a1 1 0 0 1-1-1z\"\n})), _path56 || (_path56 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FF6100\",\n d: \"M50.293 14.607a1 1 0 0 1 1-1h4.419a1 1 0 0 1 1 1v4.419a1 1 0 0 1-1 1h-4.42a1 1 0 0 1-1-1zM50.293 23.434a1 1 0 0 1 1-1h4.419a1 1 0 0 1 1 1v4.418a1 1 0 0 1-1 1h-4.42a1 1 0 0 1-1-1z\"\n})), _path57 || (_path57 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#0D953B\",\n d: \"M41.065 7.387a1 1 0 0 1 1-1h4.82a1 1 0 0 1 1 1V10.2a1 1 0 0 1-1 1h-4.82a1 1 0 0 1-1-1z\"\n})), _path58 || (_path58 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#09F\",\n d: \"M41.065 14.607a1 1 0 0 1 1-1h4.82a1 1 0 0 1 1 1v4.419a1 1 0 0 1-1 1h-4.82a1 1 0 0 1-1-1v-4.4190000000000005M41.065 23.434a1 1 0 0 1 1-1h4.82a1 1 0 0 1 1 1v4.418a1 1 0 0 1-1 1h-4.82a1 1 0 0 1-1-1v-4.418\"\n})), _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n width: 30.384,\n height: 30.384,\n x: 38.309,\n y: 1.625,\n stroke: \"#B1C3E9\",\n strokeWidth: 1.5,\n rx: 2.75\n})), _path59 || (_path59 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M21.075 71.375c-1.629 0-2.073-.438-2.073-2.075-.003-14.674-.002-10.092 0-24.766 0-1.561.469-2.039 2.04-2.039 14.685-.004 10.115-.004 24.8 0 1.55 0 2.04.496 2.04 2.051.002 14.674.002 10.093 0 24.766 0 1.618-.459 2.063-2.093 2.063H21.075m24.223-2.062a.52.52 0 0 0 .523-.523v-5.626a.523.523 0 0 0-.523-.523h-5.627a.523.523 0 0 0-.522.523v5.626c0 .289.234.523.522.523zm-14.67 0h5.627a.52.52 0 0 0 .523-.523v-5.626a.523.523 0 0 0-.523-.523h-5.627a.523.523 0 0 0-.522.523v5.626c0 .289.234.523.522.523m-9.042 0h5.626a.523.523 0 0 0 .523-.523v-5.626a.523.523 0 0 0-.523-.523h-5.626a.523.523 0 0 0-.523.523v5.626c0 .289.234.523.523.523M39.67 60.27h5.627a.52.52 0 0 0 .523-.523v-5.626a.52.52 0 0 0-.523-.523h-5.627a.523.523 0 0 0-.522.523v5.626c0 .289.234.523.522.523m-9.042 0h5.626a.52.52 0 0 0 .523-.523v-5.626a.52.52 0 0 0-.523-.523h-5.627a.52.52 0 0 0-.522.523v5.626c0 .289.234.523.522.523m-9.043 0h5.626a.523.523 0 0 0 .523-.523v-5.626a.523.523 0 0 0-.523-.523h-5.626a.52.52 0 0 0-.523.523v5.626c0 .289.234.523.523.523m9.043-9.043h5.626c.289 0 .523-.141.523-.316v-3.398c0-.174-.234-.315-.523-.315h-5.627c-.288 0-.522.14-.522.315v3.398c0 .175.234.316.522.316m9.026 0h5.626c.289 0 .523-.141.523-.316v-3.398c0-.174-.234-.315-.523-.315h-5.626c-.289 0-.523.14-.523.315v3.398c0 .175.234.316.523.316m-18.07 0h5.627c.289 0 .523-.141.523-.316v-3.398c0-.174-.234-.315-.523-.315h-5.626c-.289 0-.523.14-.523.315v3.398c0 .175.234.316.523.316\"\n})), _path60 || (_path60 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M20.605 44.898h25.674V69.77H20.605z\"\n})), _path61 || (_path61 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#0D953B\",\n d: \"M39.059 47.504a1 1 0 0 1 1-1h4.745a1 1 0 0 1 1 1v2.814a1 1 0 0 1-1 1H40.06a1 1 0 0 1-1-1z\"\n})), _path62 || (_path62 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FFB629\",\n d: \"M39.059 54.725a1 1 0 0 1 1-1h4.418a1 1 0 0 1 1 1v4.418a1 1 0 0 1-1 1H40.06a1 1 0 0 1-1-1zM39.059 63.55a1 1 0 0 1 1-1h4.418a1 1 0 0 1 1 1v4.42a1 1 0 0 1-1 1H40.06a1 1 0 0 1-1-1z\"\n})), _path63 || (_path63 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#0D953B\",\n d: \"M30.107 47.504a1 1 0 0 1 1-1h4.872a1 1 0 0 1 1 1v2.814a1 1 0 0 1-1 1h-4.872a1 1 0 0 1-1-1z\"\n})), _path64 || (_path64 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FF6100\",\n d: \"M30.232 54.725a1 1 0 0 1 1-1h4.419a1 1 0 0 1 1 1v4.418a1 1 0 0 1-1 1h-4.419a1 1 0 0 1-1-1zM30.232 63.55a1 1 0 0 1 1-1h4.419a1 1 0 0 1 1 1v4.42a1 1 0 0 1-1 1h-4.419a1 1 0 0 1-1-1z\"\n})), _path65 || (_path65 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#0D953B\",\n d: \"M21.006 47.504a1 1 0 0 1 1-1h4.82a1 1 0 0 1 1 1v2.814a1 1 0 0 1-1 1h-4.82a1 1 0 0 1-1-1z\"\n})), _path66 || (_path66 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#09F\",\n d: \"M21.006 54.725a1 1 0 0 1 1-1h4.82a1 1 0 0 1 1 1v4.418a1 1 0 0 1-1 1h-4.82a1 1 0 0 1-1-1v-4.418M21.006 63.55a1 1 0 0 1 1-1h4.82a1 1 0 0 1 1 1v4.42a1 1 0 0 1-1 1h-4.82a1 1 0 0 1-1-1v-4.42\"\n})), _rect2 || (_rect2 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 30.384,\n height: 30.384,\n x: 18.25,\n y: 41.742,\n stroke: \"#B1C3E9\",\n strokeWidth: 1.5,\n rx: 2.75\n})), _path67 || (_path67 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M60.39 71.375c-1.63 0-2.074-.438-2.074-2.075-.002-14.674-.002-10.092 0-24.766 0-1.561.47-2.039 2.04-2.039 14.686-.004 10.116-.004 24.801 0 1.55 0 2.039.496 2.04 2.051.002 14.674.002 10.093 0 24.766 0 1.618-.46 2.063-2.094 2.063H60.39m24.223-2.062a.523.523 0 0 0 .522-.523v-5.626a.523.523 0 0 0-.522-.523h-5.627a.523.523 0 0 0-.523.523v5.626c0 .289.234.523.523.523zm-14.67 0h5.627a.52.52 0 0 0 .522-.523v-5.626a.523.523 0 0 0-.522-.523h-5.627a.523.523 0 0 0-.522.523v5.626c0 .289.233.523.522.523m-9.043 0h5.627a.52.52 0 0 0 .522-.523v-5.626a.523.523 0 0 0-.522-.523H60.9a.523.523 0 0 0-.522.523v5.626c0 .289.233.523.522.523m18.086-9.043h5.627a.523.523 0 0 0 .522-.523v-5.626a.523.523 0 0 0-.522-.523h-5.627a.52.52 0 0 0-.523.523v5.626c0 .289.234.523.523.523m-9.043 0h5.627a.52.52 0 0 0 .522-.523v-5.626a.52.52 0 0 0-.522-.523h-5.627a.52.52 0 0 0-.522.523v5.626c0 .289.233.523.522.523m-9.043 0h5.627a.52.52 0 0 0 .522-.523v-5.626a.52.52 0 0 0-.522-.523H60.9a.52.52 0 0 0-.522.523v5.626c0 .289.233.523.522.523m9.043-9.043h5.627c.288 0 .522-.141.522-.316v-3.398c0-.174-.234-.315-.522-.315h-5.627c-.289 0-.522.14-.522.315v3.398c0 .175.233.316.522.316m9.026 0h5.627c.288 0 .522-.141.522-.316v-3.398c0-.174-.234-.315-.522-.315h-5.627c-.288 0-.522.14-.522.315v3.398c0 .175.234.316.522.316m-18.069 0h5.627c.288 0 .522-.141.522-.316v-3.398c0-.174-.234-.315-.522-.315H60.9c-.288 0-.522.14-.522.315v3.398c0 .175.233.316.522.316\"\n})), _path68 || (_path68 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M59.92 44.898h25.674V69.77H59.92z\"\n})), _path69 || (_path69 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#0D953B\",\n d: \"M78.373 47.504a1 1 0 0 1 1-1h4.746a1 1 0 0 1 1 1v2.814a1 1 0 0 1-1 1h-4.746a1 1 0 0 1-1-1z\"\n})), _path70 || (_path70 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FFB629\",\n d: \"M78.373 54.725a1 1 0 0 1 1-1h4.419a1 1 0 0 1 1 1v4.418a1 1 0 0 1-1 1h-4.419a1 1 0 0 1-1-1zM78.373 63.55a1 1 0 0 1 1-1h4.419a1 1 0 0 1 1 1v4.42a1 1 0 0 1-1 1h-4.419a1 1 0 0 1-1-1z\"\n})), _path71 || (_path71 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#0D953B\",\n d: \"M69.422 47.504a1 1 0 0 1 1-1h4.872a1 1 0 0 1 1 1v2.814a1 1 0 0 1-1 1h-4.872a1 1 0 0 1-1-1z\"\n})), _path72 || (_path72 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FF6100\",\n d: \"M69.547 54.725a1 1 0 0 1 1-1h4.419a1 1 0 0 1 1 1v4.418a1 1 0 0 1-1 1h-4.42a1 1 0 0 1-1-1zM69.547 63.55a1 1 0 0 1 1-1h4.419a1 1 0 0 1 1 1v4.42a1 1 0 0 1-1 1h-4.42a1 1 0 0 1-1-1z\"\n})), _path73 || (_path73 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#0D953B\",\n d: \"M60.32 47.504a1 1 0 0 1 1-1h4.82a1 1 0 0 1 1 1v2.814a1 1 0 0 1-1 1h-4.82a1 1 0 0 1-1-1z\"\n})), _path74 || (_path74 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#09F\",\n d: \"M60.32 54.725a1 1 0 0 1 1-1h4.82a1 1 0 0 1 1 1v4.418a1 1 0 0 1-1 1h-4.82a1 1 0 0 1-1-1v-4.418M60.32 63.55a1 1 0 0 1 1-1h4.82a1 1 0 0 1 1 1v4.42a1 1 0 0 1-1 1h-4.82a1 1 0 0 1-1-1v-4.42\"\n})), _rect3 || (_rect3 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 30.384,\n height: 30.384,\n x: 57.565,\n y: 41.742,\n stroke: \"#B1C3E9\",\n strokeWidth: 1.5,\n rx: 2.75\n})), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"noTablesIcon_svg__e\",\n x1: 155.19,\n x2: 152.764,\n y1: 90.255,\n y2: 107.265,\n gradientUnits: \"userSpaceOnUse\"\n}, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#fff\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#F3F5FE\"\n})), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"noTablesIcon_svg__j\",\n x1: 159.999,\n x2: 148.27,\n y1: 122.374,\n y2: 68.424,\n gradientUnits: \"userSpaceOnUse\"\n}, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#F4F5FE\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#fff\"\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, _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 xmlns: \"http://www.w3.org/2000/svg\",\n width: 198,\n height: 145,\n fill: \"none\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#E6E6F5\",\n d: \"M0 101.437c0-23.633 19.158-42.79 42.79-42.79h112.325c23.632 0 42.79 19.157 42.79 42.79s-19.158 42.79-42.79 42.79H42.79c-23.632 0-42.79-19.158-42.79-42.79\"\n})), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M36.932 5.172A4.797 4.797 0 0 1 41.728.375h22.785a4.797 4.797 0 0 1 4.796 4.797v28.78a4.797 4.797 0 0 1-4.796 4.796H41.728a4.797 4.797 0 0 1-4.796-4.796z\"\n})), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#D3DCEF\",\n fillRule: \"evenodd\",\n d: \"M64.513 1.574H41.728a3.6 3.6 0 0 0-3.597 3.598v28.78a3.6 3.6 0 0 0 3.597 3.597h22.785a3.6 3.6 0 0 0 3.597-3.597V5.172a3.6 3.6 0 0 0-3.597-3.598M41.728.375a4.797 4.797 0 0 0-4.796 4.797v28.78a4.797 4.797 0 0 0 4.796 4.796h22.785a4.797 4.797 0 0 0 4.796-4.796V5.172A4.797 4.797 0 0 0 64.513.375z\",\n clipRule: \"evenodd\"\n})), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#09F\",\n d: \"M42.38 10.39a1.3 1.3 0 0 1 1.302-1.3h2.601a1.3 1.3 0 0 1 1.301 1.3v19.513h-5.203z\"\n})), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FF6100\",\n d: \"M50.367 16.244a1.3 1.3 0 0 1 1.301-1.3h2.602a1.3 1.3 0 0 1 1.3 1.3v13.659h-5.203z\"\n})), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FFB629\",\n d: \"M58.356 11.041a1.3 1.3 0 0 1 1.3-1.3h2.602a1.3 1.3 0 0 1 1.3 1.3v18.862h-5.203z\"\n})), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M16 46.799a4.797 4.797 0 0 1 4.797-4.797H43.58a4.797 4.797 0 0 1 4.796 4.797v28.78a4.797 4.797 0 0 1-4.796 4.796H20.797A4.797 4.797 0 0 1 16 75.58z\"\n})), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#D3DCEF\",\n fillRule: \"evenodd\",\n d: \"M43.58 43.201H20.798a3.597 3.597 0 0 0-3.598 3.598v28.78a3.597 3.597 0 0 0 3.598 3.597H43.58a3.597 3.597 0 0 0 3.597-3.597v-28.78a3.597 3.597 0 0 0-3.597-3.598m-22.783-1.199A4.797 4.797 0 0 0 16 46.799v28.78a4.797 4.797 0 0 0 4.797 4.796H43.58a4.797 4.797 0 0 0 4.796-4.796v-28.78a4.797 4.797 0 0 0-4.796-4.797z\",\n clipRule: \"evenodd\"\n})), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#09F\",\n d: \"M21.45 52.018a1.3 1.3 0 0 1 1.3-1.301h2.602a1.3 1.3 0 0 1 1.3 1.3V71.53H21.45z\"\n})), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FF6100\",\n d: \"M29.438 57.871a1.3 1.3 0 0 1 1.3-1.3h2.602a1.3 1.3 0 0 1 1.3 1.3V71.53h-5.203z\"\n})), _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FFB629\",\n d: \"M37.424 52.668a1.3 1.3 0 0 1 1.3-1.3h2.602a1.3 1.3 0 0 1 1.301 1.3V71.53h-5.203z\"\n})), _path12 || (_path12 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M56.795 46.799a4.797 4.797 0 0 1 4.797-4.797h22.784a4.797 4.797 0 0 1 4.796 4.797v28.78a4.797 4.797 0 0 1-4.796 4.796H61.592a4.797 4.797 0 0 1-4.797-4.796z\"\n})), _path13 || (_path13 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#D3DCEF\",\n fillRule: \"evenodd\",\n d: \"M84.376 43.201H61.592a3.597 3.597 0 0 0-3.598 3.598v28.78a3.597 3.597 0 0 0 3.598 3.597h22.784a3.597 3.597 0 0 0 3.597-3.597v-28.78a3.6 3.6 0 0 0-3.597-3.598m-22.784-1.199a4.797 4.797 0 0 0-4.797 4.797v28.78a4.797 4.797 0 0 0 4.797 4.796h22.784a4.797 4.797 0 0 0 4.796-4.796v-28.78a4.797 4.797 0 0 0-4.796-4.797z\",\n clipRule: \"evenodd\"\n})), _path14 || (_path14 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#09F\",\n d: \"M62.244 52.018a1.3 1.3 0 0 1 1.301-1.301h2.602a1.3 1.3 0 0 1 1.3 1.3V71.53h-5.203z\"\n})), _path15 || (_path15 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FF6100\",\n d: \"M70.23 57.871a1.3 1.3 0 0 1 1.301-1.3h2.602a1.3 1.3 0 0 1 1.3 1.3V71.53H70.23z\"\n})), _path16 || (_path16 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FFB629\",\n d: \"M78.219 52.668a1.3 1.3 0 0 1 1.3-1.3h2.602a1.3 1.3 0 0 1 1.301 1.3V71.53H78.22z\"\n})), _path17 || (_path17 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#B46458\",\n d: \"M69.07 103.549a15.57 15.57 0 0 0-11.928-2.869l-6.417-2.399a2.24 2.24 0 0 0-2.678.847 1.924 1.924 0 0 0 .739 2.683l3.537 2.037-1.451-.023a10.85 10.85 0 0 1-6.325-2.135l-5.088-3.836a2.17 2.17 0 0 0-2.068-.267 1.83 1.83 0 0 0-1.2 2.259c.09.304.257.579.485.798l6.033 5.819a12.22 12.22 0 0 0 8.93 3.354l18.044-.654z\"\n})), _path18 || (_path18 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"url(#noReportsIcon_svg__a)\",\n d: \"M104.657 85.1a243.6 243.6 0 0 0-18.98 42.682 8 8 0 0 0 1.38 7.48c3.815 4.705 12.347 2.678 15.227-2.341 0 0 21.966-37.8 20.737-39.112-.287-.322-18.364-8.71-18.364-8.71\"\n})), _path19 || (_path19 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"m130.469 80.602-23.217 2.997a4.393 4.393 0 0 0-3.837 4.757L117 144.377l49.5-.5-3.298-55.36a4.415 4.415 0 0 0-2.239-4.386 4.4 4.4 0 0 0-1.646-.531z\"\n})), _path20 || (_path20 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"url(#noReportsIcon_svg__b)\",\n d: \"M141.807 92.865a401 401 0 0 0 18.418 46.33c1.138 2.353 4.453 3.924 7.011 4.177 5.759.585 9.114-5.404 7.711-10.899 0 0-11.921-46.34-14.358-47.416-.389-.179-18.782 7.808-18.782 7.808\"\n})), _path21 || (_path21 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#B46458\",\n d: \"m121.352 68.042 1.157 13.623c.397 4.757 3.473 7.088 8.025 6.66 3.885-.38 7.929-2.633 7.469-6.835l-2.807-21.345z\"\n})), _path22 || (_path22 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#B46458\",\n d: \"M124.615 72.338c-7.786.666-14.732-5.122-15.51-11.655l-1.585-13.687a15.112 15.112 0 0 1 12.401-16.92c8.088-1.269 17.095 4.25 18.364 12.686l1.094 10.673a17.192 17.192 0 0 1-14.764 18.903\"\n})), _path23 || (_path23 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#091141\",\n d: \"M134.067 46.285c-7.279-5.63-3.616-10.387-3.616-10.387l5.186-2.078c17.349 0 6.248 16.873 6.248 16.873l-2.141 7.185s-1.696 16.381-17.808 15.731c-12.116-.492-12.354-10.768-12.354-10.768 6.914-4.82 21.662-1.792 21.662-1.792 1.586-2.997 2.823-14.764 2.823-14.764\"\n})), _path24 || (_path24 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#091141\",\n d: \"M131.103 36.61a200 200 0 0 1-21.599.175s-8.04-3.013-4.757-7.93c2.632-3.853 9.007-.713 9.007-.713s-.111-3.965 2.696-5.043c3.346-1.3 13.147-2.347 21.488 10.942z\"\n})), _path25 || (_path25 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#B46458\",\n d: \"m122.381 81.648-4.313.555s-1.919 7.184 8.056 7.93c10.403.745 14.51-3.172 16.509-8.23l-11.45-2.253z\"\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 stroke: \"#893B2F\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 0.92,\n d: \"m116.782 53.594-.048 3.045 1.935-.08\"\n})), _path27 || (_path27 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#0A1551\",\n d: \"M112.752 51.513c-.588-.01-1.054-.717-1.04-1.578s.501-1.553 1.089-1.543 1.053.717 1.04 1.579c-.014.862-.502 1.552-1.089 1.542M123.752 51.513c-.588-.01-1.054-.717-1.04-1.578s.501-1.553 1.089-1.543 1.053.717 1.04 1.579c-.014.862-.502 1.552-1.089 1.542\"\n})), _path28 || (_path28 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#091141\",\n d: \"M124.601 44.4s-3.171 0-3.171 1.349c0 0 0 .904 2.87.84 2.87-.063 3.505-.317 3.679-1.189.175-.872-1.871-1.11-3.378-1M112.816 44.835s2.646-.135 2.783 1.15c0 0 .085.862-2.245.913s-3.051-.292-3.223-.99c-.173-.697 1.426-1.125 2.685-1.074\"\n})), _path29 || (_path29 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"m117 64.584 5.555-.413s.244 2.067-2.634 2.201S117 64.584 117 64.584M93.882 119.624l-26.38-20.25-9.744 13.855 28.775 21.853a6.56 6.56 0 0 0 3.576 1.385 8.736 8.736 0 0 0 9.213-7.701 8.705 8.705 0 0 0-5.44-9.142\"\n})), _path30 || (_path30 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#B46458\",\n d: \"m117.688 135.146 10-.771-.307 10h-8.658z\"\n})), _path31 || (_path31 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#B46458\",\n d: \"m120.5 134.875.5 2 1 7.5H97c.5-5 7.5-10 12.5-10 4 0 10 .333 11 .5\"\n})), _path32 || (_path32 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#F4F6FF\",\n d: \"m164.171 126.923-39.122 1.173-.549 16.279 44-.5c1.352-.182.6.141 1.736-.614a8.99 8.99 0 0 0 3.987-6.792 9 9 0 0 0-.6-3.996 8.99 8.99 0 0 0-9.452-5.55\"\n})), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"noReportsIcon_svg__a\",\n x1: 96.5,\n x2: 156.139,\n y1: 120.875,\n y2: 53.919,\n gradientUnits: \"userSpaceOnUse\"\n}, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#fff\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#A1A9EE\"\n})), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"noReportsIcon_svg__b\",\n x1: 173.499,\n x2: 153.836,\n y1: 142.771,\n y2: 84.706,\n gradientUnits: \"userSpaceOnUse\"\n}, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.307,\n stopColor: \"#F4F6FF\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#fff\"\n})))));\nexport default SvgNoReportsIcon;","var _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _path9, _path10, _g, _path11, _path12, _path13, _path14, _path15, _path16, _path17, _circle, _path18, _path19, _path20, _path21, _path22, _rect, _path23, _path24, _path25, _path26, _path27, _rect2, _path28, _path29, _path30, _path31, _path32, _rect3, _path33, _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 SvgNoAppsIcon = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 198 138\"\n}, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#E6E6F5\",\n d: \"M0 94.436c0-23.633 19.158-42.79 42.79-42.79h112.325c23.632 0 42.79 19.157 42.79 42.79s-19.158 42.79-42.79 42.79H42.79C19.158 137.226 0 118.068 0 94.436\"\n})), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#EFBB9D\",\n d: \"M65.837 81.96a12.65 12.65 0 0 0-9.509-2.973l-5.068-2.293a1.82 1.82 0 0 0-2.215.54 1.56 1.56 0 0 0 .452 2.214l2.755 1.843-1.175-.098a8.8 8.8 0 0 1-5.008-2.073l-3.913-3.385a1.76 1.76 0 0 0-1.661-.33 1.484 1.484 0 0 0-.746 2.44l4.572 5.042a9.93 9.93 0 0 0 7.052 3.203l14.655.45z\"\n})), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#091141\",\n fillRule: \"evenodd\",\n d: \"M114.82 31.317c-3.39 14.435-7.259 48.95-8.519 52.122a2.15 2.15 0 0 0 .438 2.293q7.2 7.432 19.261 4.644c8.566-1.98 11.243-37.776 5.935-61.957z\",\n clipRule: \"evenodd\"\n})), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#F4F5FE\",\n fillRule: \"evenodd\",\n d: \"M59.955 88.055q4.905-4.683 5.949-8.17Q87.846 96.277 90.742 95.38c2.646-.82 24.003-20.019 31.424-24.56.674-.673.721 5.077 1.257 4.458l-2.407 22.314q-13 9.303-16.565 11.463c-3.566 2.16-12.922 6.115-21.372-.755q-8.45-6.87-23.124-20.246\",\n clipRule: \"evenodd\"\n})), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M110.591 112.816c1.123 4.755 3.266 8.898 1.409 19.559 10.035 1.817 16.883-1.233 21.5 1l17.5-8 12.5-5.5-5.856-17.413.648-13.595c-1.701-6.798-4.496-13.233-7.062-16.042-3.848-4.212-24.74-2.294-29.885-.522s-6.336 11.497-11.769 19.303c-5.432 7.805-.67 14.076 1.015 21.21\"\n})), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#EFBB9D\",\n fillRule: \"evenodd\",\n d: \"M142.981 70.154q-3.034 24.705-17.047 24.705c-14.014 0-10.728-7.372-8.973-10.83q1.755-3.456 3.859-12.304 7.232-2.308 11.039-2.578 3.808-.27 11.122 1.007\",\n clipRule: \"evenodd\"\n})), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#321907\",\n d: \"M122.003 47.534c-.552.081-1.097-.509-1.218-1.318-.121-.81.228-1.532.78-1.613.552-.082 1.097.509 1.218 1.318.121.81-.228 1.532-.78 1.613M114.454 47.403c-.552.08-1.098-.51-1.219-1.319-.121-.81.229-1.532.78-1.613.552-.081 1.098.509 1.219 1.319s-.228 1.531-.78 1.613\"\n})), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#EFBB9D\",\n d: \"M137.286 52c-1.661 12.973 4.305 17.843 6.214 17.875s-5.802 7.704-19.433 20.49c-4.46-8.598-4.96-16.266-3.566-18.49 2.089-3.336 4.029-.482 3.312-12.161-.47-7.672 9.731-6.943 16.998-8.188-3.525.474-9.282.592-3.525.474\"\n})), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#DC9F7E\",\n fillRule: \"evenodd\",\n d: \"M123.313 54.526c.792 7.227.769 11.213.687 11.85-.122.953 17.282.147 12.312-15.174s-6.632 1.806-12.999 3.324\",\n clipRule: \"evenodd\",\n opacity: 0.677\n})), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"noAppsIcon_svg__a\",\n width: 38,\n height: 44,\n x: 114,\n y: 22,\n maskUnits: \"userSpaceOnUse\",\n style: {\n maskType: \"alpha\"\n }\n}, _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M146.092 55.049q-6.862 9.17-19.143 10.064c-8.313.606-13.863-10.234-12.793-21.363.511-5.31 1.687-9.997 6.363-14.827q14.475-14.952 27.2 3.95l3.662 9.771z\"\n}))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#noAppsIcon_svg__a)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#EFBB9D\",\n d: \"M144.967 54.176q-7.665 8.514-19.978 8.303c-8.336-.144-12.887-11.436-10.817-22.421.988-5.242 2.582-9.803 7.676-14.193q15.77-13.59 26.74 6.375l2.766 10.06z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#EFA77F\",\n d: \"M132.771 54.39c-2.696-.416-4.642-2.252-4.348-4.1s2.718-3.007 5.413-2.59c2.695.416 4.642 2.251 4.348 4.099s-2.718 3.008-5.413 2.591M111.252 49.93c-2.647-.672-4.479-2.7-4.092-4.529s2.849-2.766 5.497-2.093 4.479 2.7 4.092 4.53c-.388 1.828-2.849 2.765-5.497 2.092\"\n}))), _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#A5330A\",\n fillRule: \"evenodd\",\n d: \"M126.024 53.94q-3.178 1.359-7.501-1.4 2.035 5.778 4.624 5.258t2.877-3.857\",\n clipRule: \"evenodd\"\n})), _path12 || (_path12 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#0A1551\",\n d: \"M127.588 44.576c-.558-.01-1-.68-.987-1.499.012-.818.475-1.474 1.033-1.464s1 .68.987 1.498c-.012.819-.475 1.474-1.033 1.465M118.988 43.024c-.558-.01-1-.68-.987-1.499.013-.818.476-1.474 1.034-1.464s1 .68.987 1.499c-.013.818-.476 1.473-1.034 1.464\"\n})), _path13 || (_path13 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#EFBB9D\",\n fillRule: \"evenodd\",\n d: \"M142.981 70.154q-3.034 24.705-17.047 24.705c-14.014 0-10.728-7.372-8.973-10.829q1.755-3.457 3.859-12.304 7.232-2.309 11.039-2.578 3.808-.27 11.122 1.006\",\n clipRule: \"evenodd\"\n})), _path14 || (_path14 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"m142.201 78.382 2.206 11.872s-1.371 4.31 1.516 12.143c2.888 7.832 7.375 17.679 7.375 17.679l10.376 13.713c10-3.663 2.348-24.999-1.822-42.89-2.639-9.901-7.006-16.464-10.989-18.892z\"\n})), _path15 || (_path15 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"url(#noAppsIcon_svg__b)\",\n d: \"m144.231 81.388 2.205 11.873s-1.37 4.31 1.517 12.143c2.888 7.831 7.375 17.679 7.375 17.679l9.172 12.292c10-3.663 3.551-23.578-.619-41.469-2.638-9.902-7.006-16.464-10.988-18.892z\"\n})), _path16 || (_path16 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M142.501 69.375c-11.2 2.4-17.333.667-19-.5-.799.4-2.667 2.5-3.501 3.5-1.5 3.667-4.799 11.7-5.999 14.5-1.5 3.5 1 5.5 4.5 9.5s14.5.5 18.5-.5c3.2-.8 7-17.333 8.5-25.5-2-.4-2.833-.833-3-1\"\n})), _path17 || (_path17 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#091141\",\n fillRule: \"evenodd\",\n d: \"M127.938 36.463c-7.821-1.299-11.004-1.904-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 15 0 0 1 1.479 2.365q.349.56.689 1.256c3.698 10.658 3.601 50.771 2.546 56.531-2.957 3.801-26.689 4.621-23.717-.143q.25-.397.548-.835c1.396-2.08 5.43-29.61 5.411-36.274-.004-1.614-.47-3.501-.996-5.63-.178-.72-.362-1.467-.538-2.24l-1.197-.417c-1.691-.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.223-1.465 1.825-2.025 3.253-2.3 4.373-.157.637-.755 1.077-1.403.97\",\n clipRule: \"evenodd\"\n})), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 145.5,\n cy: 16.875,\n r: 9.5,\n fill: \"#091141\"\n})), _path18 || (_path18 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#091141\",\n d: \"M129.897 38.41s-3.058-.84-3.416.459c0 0-.24.872 2.545 1.572 2.784.7 3.463.624 3.863-.17.399-.795-1.51-1.568-2.992-1.86M118.797 36.46s2.646.157 2.641 1.449c0 0-.009.865-2.331.662-2.322-.204-3-.624-3.096-1.336-.095-.712 1.542-.963 2.786-.774\"\n})), _path19 || (_path19 = /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#D97D4A\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 0.92,\n d: \"M121.942 45.389 121 48.285l1.873.494\"\n})), _path20 || (_path20 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#EFBB9D\",\n d: \"m124.604 130.031 8.026-.619-.246 8.026h-6.949z\"\n})), _path21 || (_path21 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#EFBB9D\",\n d: \"m126.861 129.813.401 1.605.803 6.02H108c.402-4.013 6.02-8.026 10.033-8.026 3.21 0 8.025.267 8.828.401\"\n})), _path22 || (_path22 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#F4F6FF\",\n d: \"m161.399 122.431-31.399.941 2 14.003 30-.5c1.085-.146 2.344-.204 3.256-.81 1-.665 2.685-1.934 3.239-2.878a7.22 7.22 0 0 0 .49-6.301 7.216 7.216 0 0 0-7.586-4.455\"\n})), _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n width: 30.384,\n height: 30.384,\n x: 38.303,\n y: 1.625,\n fill: \"#fff\",\n stroke: \"#B1C3E9\",\n strokeWidth: 1.5,\n rx: 2.75\n})), _path23 || (_path23 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M41.47 7.793a3.01 3.01 0 0 1 3.008-3.01h18.053a3.01 3.01 0 0 1 3.009 3.01v18.052a3.01 3.01 0 0 1-3.01 3.009H44.479a3.01 3.01 0 0 1-3.008-3.009z\"\n})), _path24 || (_path24 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#97ACDA\",\n stroke: \"#97ACDA\",\n strokeWidth: 0.652,\n d: \"M58.51 18.453a.4.4 0 0 0-.4.4v2.351h-2.352a.4.4 0 0 0 0 .8h2.351v2.352a.4.4 0 0 0 .8 0v-2.352h2.352a.4.4 0 0 0 0-.8H58.91v-2.351a.4.4 0 0 0-.4-.4Z\"\n})), _path25 || (_path25 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FF6100\",\n d: \"M54.613 8.445c0-.362.294-.656.656-.656h6.566c.363 0 .657.294.657.656v6.566a.657.657 0 0 1-.657.657H55.27a.656.656 0 0 1-.656-.657z\"\n})), _path26 || (_path26 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#09F\",\n d: \"M44.476 8.445c0-.362.294-.656.657-.656h6.566c.362 0 .656.294.656.656v6.566a.657.657 0 0 1-.656.657h-6.566a.657.657 0 0 1-.657-.657z\"\n})), _path27 || (_path27 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FFB629\",\n d: \"M44.476 18.582c0-.363.294-.657.656-.657h6.566c.363 0 .657.294.657.657v6.566a.657.657 0 0 1-.657.656h-6.566a.657.657 0 0 1-.656-.656z\"\n})), _rect2 || (_rect2 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 30.384,\n height: 30.384,\n x: 18.25,\n y: 41.741,\n fill: \"#fff\",\n stroke: \"#B1C3E9\",\n strokeWidth: 1.5,\n rx: 2.75\n})), _path28 || (_path28 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M21.403 47.908A3.01 3.01 0 0 1 24.41 44.9h18.053a3.01 3.01 0 0 1 3.009 3.008v18.053a3.01 3.01 0 0 1-3.01 3.009H24.412a3.01 3.01 0 0 1-3.008-3.01z\"\n})), _path29 || (_path29 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#97ACDA\",\n stroke: \"#97ACDA\",\n strokeWidth: 0.652,\n d: \"M38.441 58.568a.4.4 0 0 0-.4.4v2.352H35.69a.4.4 0 0 0 0 .8h2.35v2.351a.4.4 0 0 0 .801 0V62.12h2.352a.4.4 0 0 0 0-.8H38.84v-2.352a.4.4 0 0 0-.4-.4Z\"\n})), _path30 || (_path30 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FF6100\",\n d: \"M34.547 48.563c0-.363.294-.657.657-.657h6.566c.362 0 .656.294.656.657v6.566a.657.657 0 0 1-.656.656h-6.566a.657.657 0 0 1-.657-.656z\"\n})), _path31 || (_path31 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#09F\",\n d: \"M24.412 48.564c0-.362.294-.656.657-.656h6.566c.363 0 .656.294.656.656v6.566a.657.657 0 0 1-.656.657h-6.566a.657.657 0 0 1-.657-.657z\"\n})), _path32 || (_path32 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FFB629\",\n d: \"M24.407 58.697c0-.363.294-.657.657-.657h6.566c.362 0 .656.294.656.657v6.566a.657.657 0 0 1-.656.657h-6.566a.656.656 0 0 1-.657-.657z\"\n})), _rect3 || (_rect3 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 30.384,\n height: 30.384,\n x: 57.567,\n y: 41.741,\n fill: \"#fff\",\n stroke: \"#B1C3E9\",\n strokeWidth: 1.5,\n rx: 2.75\n})), _path33 || (_path33 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M60.723 47.908a3.01 3.01 0 0 1 3.009-3.008h18.052a3.01 3.01 0 0 1 3.009 3.008v18.053a3.01 3.01 0 0 1-3.009 3.009H63.732a3.01 3.01 0 0 1-3.009-3.01z\"\n})), _path34 || (_path34 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#97ACDA\",\n stroke: \"#97ACDA\",\n strokeWidth: 0.652,\n d: \"M77.771 58.568a.4.4 0 0 0-.4.4v2.352H75.02a.4.4 0 0 0 0 .8h2.351v2.351a.4.4 0 0 0 .8 0V62.12h2.352a.4.4 0 0 0 0-.8H78.17v-2.352a.4.4 0 0 0-.4-.4Z\"\n})), _path35 || (_path35 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FF6100\",\n d: \"M73.87 48.563c0-.363.294-.657.656-.657h6.566c.363 0 .657.294.657.657v6.566a.657.657 0 0 1-.657.656h-6.566a.657.657 0 0 1-.656-.656z\"\n})), _path36 || (_path36 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#09F\",\n d: \"M63.727 48.564c0-.363.294-.657.657-.657h6.566c.362 0 .656.294.656.657v6.566a.657.657 0 0 1-.656.657h-6.566a.657.657 0 0 1-.657-.657z\"\n})), _path37 || (_path37 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FFB629\",\n d: \"M63.728 58.697c0-.363.294-.657.656-.657h6.566c.363 0 .657.294.657.657v6.566a.657.657 0 0 1-.657.657h-6.566a.656.656 0 0 1-.656-.657z\"\n})), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"noAppsIcon_svg__b\",\n x1: 160,\n x2: 148.271,\n y1: 122.375,\n y2: 68.425,\n gradientUnits: \"userSpaceOnUse\"\n}, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#F4F5FE\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#fff\"\n})))));\nexport default SvgNoAppsIcon;","\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","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 { useState, useEffect, useRef } from 'react';\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 useOfflineMode = ({ onOffline: onOfflineFn = f => f, onOnline: onOnlineFn = f => f } = {}) => {\n const onOfflineRef = useRef(onOfflineFn);\n const onOnlineRef = useRef(onOnlineFn);\n if (onOfflineRef.current !== onOfflineFn) onOfflineRef.current = onOfflineFn;\n if (onOnlineRef.current !== onOnlineRef) onOnlineRef.current = onOnlineFn;\n\n const { current: onOffline } = onOfflineRef;\n const { current: onOnline } = onOnlineRef;\n\n const handleOfflineState = () => onOffline();\n const handleOnlineState = () => onOnline();\n\n useEffect(() => {\n window.addEventListener('offline', handleOfflineState);\n window.addEventListener('online', handleOnlineState);\n\n return () => {\n window.removeEventListener('offline', handleOfflineState);\n window.removeEventListener('online', handleOnlineState);\n };\n }, []);\n};\n\nexport const useMediaQuery = mediaQuery => {\n if (typeof window !== 'object' || !('matchMedia' in window)) {\n return null;\n }\n\n const [isVerified, setIsVerified] = useState(!!window.matchMedia(mediaQuery).matches);\n\n useEffect(() => {\n const mediaQueryList = window.matchMedia(mediaQuery);\n const documentChangeHandler = () => setIsVerified(!!mediaQueryList.matches);\n\n try {\n mediaQueryList.addEventListener('change', documentChangeHandler);\n } catch (e) {\n // Safari isn't supporting mediaQueryList.addEventListener\n mediaQueryList.addListener(documentChangeHandler);\n }\n\n documentChangeHandler();\n return () => {\n try {\n mediaQueryList.removeEventListener('change', documentChangeHandler);\n } catch (e) {\n // Safari isn't supporting mediaQueryList.removeEventListener\n mediaQueryList.removeListener(documentChangeHandler);\n }\n };\n }, [mediaQuery]);\n\n return isVerified;\n};\n\nexport const useDidUpdateEffect = (fn, inputs) => {\n const isMountingRef = useRef(false);\n\n useEffect(() => {\n isMountingRef.current = true;\n }, []);\n\n useEffect(() => {\n if (!isMountingRef.current) {\n return fn();\n }\n isMountingRef.current = false;\n }, inputs);\n};\n","/* eslint-disable no-param-reassign */\n\nconst injectGetStyle = () => {\n function getStyle(el, styleProp) {\n let value; const\n { defaultView } = el.ownerDocument || document;\n // W3C standard way:\n if (defaultView && defaultView.getComputedStyle) {\n // sanitize property name to css notation\n // (hypen separated words eg. font-Size)\n styleProp = styleProp.replace(/([A-Z])/g, '-$1').toLowerCase();\n return defaultView.getComputedStyle(el, null).getPropertyValue(styleProp);\n } if (el.currentStyle) { // IE\n // sanitize property name to camelCase\n styleProp = styleProp.replace(/-(\\w)/g, (str, letter) => {\n return letter.toUpperCase();\n });\n value = el.currentStyle[styleProp];\n // convert other units to pixels on IE\n if (/^\\d+(em|pt|%|ex)?$/i.test(value)) {\n return (val => {\n const oldLeft = el.style.left;\n const oldRsLeft = el.runtimeStyle.left;\n el.runtimeStyle.left = el.currentStyle.left;\n el.style.left = val || 0;\n val = `${el.style.pixelLeft}px`;\n el.style.left = oldLeft;\n el.runtimeStyle.left = oldRsLeft;\n return val;\n })(value);\n }\n return value;\n }\n }\n\n if (!window.getStyle) {\n window.getStyle = getStyle;\n }\n};\n\nexport default injectGetStyle;\n","/* eslint-disable camelcase */\nconst injectPostMessage = () => {\n if (window.getIframeWindow === undefined) {\n window.getIframeWindow = function getIframeWindow(iframeObject) {\n let doc;\n if (iframeObject.contentWindow) {\n return iframeObject.contentWindow;\n }\n if (iframeObject.window) {\n return iframeObject.window;\n }\n if (!doc && iframeObject.contentDocument) {\n doc = iframeObject.contentDocument;\n }\n if (!doc && iframeObject.document) {\n doc = iframeObject.document;\n }\n if (doc && doc.defaultView) {\n return doc.defaultView;\n }\n if (doc && doc.parentWindow) {\n return doc.parentWindow;\n }\n };\n }\n\n // postMessage utility function\n if (typeof window.XD === 'undefined') {\n window.XD = (() => {\n let interval_id;\n let last_hash;\n let cache_bust = 1;\n let attached_callback;\n return {\n postMessage: (message, target_url, _target) => {\n if (!target_url) {\n return;\n }\n\n let target = _target || window.parent; // default to parent\n if (window.postMessage) {\n let postMessageTarget = target_url.replace(/([^:]+:\\/\\/[^/]+).*/, '$1');\n // the browser supports window.postMessage, so call it with a targetOrigin\n // set appropriately, based on the target_url parameter.\n if (!('postMessage' in target)) {\n // we have a problem, update target\n target = window.getIframeWindow(target);\n }\n if (!target) {\n return;\n }\n if (postMessageTarget.indexOf('file://') === 0) { // This means we are using file locally. (like offline forms)\n postMessageTarget = '*';\n }\n target.postMessage(message, postMessageTarget);\n } else if (target_url) {\n // the browser does not support window.postMessage, so use the window.location.hash fragment hack\n target.location = `${target_url.replace(/#.*$/, '')}#${+new Date()}${cache_bust++}&${message}`;\n }\n },\n receiveMessage: (callback, source_origin) => {\n // browser supports window.postMessage\n if (window.postMessage) {\n // bind the callback to the actual event associated with window.postMessage\n\n if (callback) {\n attached_callback = e => {\n const params = window.location.search.split('?').join('');\n const isOfflineForms = params.indexOf('offline_forms=true') > -1 || params.indexOf('offline_forms=si') > -1;\n\n // eslint-disable-next-line max-len\n if (!isOfflineForms && ((typeof source_origin === 'string' && e.origin !== source_origin) || (Object.prototype.toString.call(source_origin) === '[object Function]' && source_origin(e.origin) === !1))) {\n return !1;\n }\n callback(e);\n };\n }\n if (window.addEventListener) {\n window[callback ? 'addEventListener' : 'removeEventListener']('message', attached_callback, !1);\n } else {\n window[callback ? 'attachEvent' : 'detachEvent']('onmessage', attached_callback);\n }\n } else {\n // a polling loop is started & callback is called whenever the location.hash changes\n if (interval_id) {\n clearInterval(interval_id);\n }\n interval_id = null;\n if (callback) {\n interval_id = setInterval(() => {\n const { hash } = document.location;\n const re = /^#?\\d+&/;\n if (hash !== last_hash && re.test(hash)) {\n last_hash = hash;\n callback({\n data: hash.replace(re, '')\n });\n }\n }, 100);\n }\n }\n }\n };\n })();\n }\n};\nexport default injectPostMessage;\n","/* Widget Constants */\nconst widgetTranlatebles = {\n '533946093c1ad0c45d000070' /* Configurable List */: {\n SHOW_HIDE_CALENDAR: 'Show/hide calendar'\n }\n};\n\n/* TRANSLATABLE WORDS PARSER (Field Declarations) */\n\n// Configurable List : 533946093c1ad0c45d000070\n\nconst parseConfigurableListFieldDeclarations = declaration => {\n /*\n Text: [label]:text[:placeholder]\n Number: [label]:number[:placeholder:step,min,max]\n Textarea: [label]:textarea[:placeholder]\n Dropdown: [label]:dropdown:option1[,option2,...:placeholder]\n Radio: [label]:radio:option1[,option2,...]\n Checkbox: [label]:checkbox:option1[,option2,...]\n Date Input: [label]:dateInput[:format]\n Time Input: [label]:timeInput:format[,now]\n Date: [label]:date[:format:range:today]\n Time: [label]:time[:format,now]\n Static Text: [label]:static:[text]\n */\n\n function moveAsteriskToEnd(input = '') {\n if (input.startsWith('*')) {\n return `${input.substring(1).trim()}`;\n }\n return input;\n }\n if (declaration) {\n const translatables = [];\n const lines = declaration.split('\\n');\n lines.forEach(line => {\n const type = line.split(':')[1]?.trim();\n switch (type) {\n case 'number':\n case 'textarea':\n case 'static':\n case 'text':\n // label\n translatables.push(moveAsteriskToEnd(line.split(':')[0]));\n // placeholder or text (static)\n translatables.push(moveAsteriskToEnd(line.split(':')[2]));\n break;\n case 'radio':\n case 'checkbox':\n case 'dropdown':\n // label\n translatables.push(moveAsteriskToEnd(line.split(':')[0]));\n // options\n const options = line.split(':')[2] ? line.split(':')[2].split(',') : [];\n translatables.push([...translatables, ...options]);\n // placeholder (dropdown)\n if (line.split(':')[3]) {\n translatables.push(line.split(':')[3]);\n }\n break;\n case 'dateInput':\n case 'timeInput':\n case 'time':\n case 'date':\n // only label\n translatables.push(moveAsteriskToEnd(line.split(':')[0]));\n break;\n default:\n break;\n }\n });\n return translatables;\n }\n\n return [];\n};\n\nconst parseMatrixDynamiqueDeclations = declaration => {\n // ex: head1:60,head2:120\n\n if (declaration) {\n const columns = declaration.split(',');\n return columns.map(column => column && column.split(':')[0]);\n }\n\n return [];\n};\n\nconst getWidgetFieldParser = widgetID => {\n switch (widgetID) {\n case '533946093c1ad0c45d000070': /* Configurable List */\n return parseConfigurableListFieldDeclarations;\n case '5299b58aba554b7e24000007': /* Matrix Dynamique */\n return parseMatrixDynamiqueDeclations;\n default:\n return null;\n }\n};\n\nconst getWidgetTranslatebleTexts = (widgetID, fieldDeclaration) => {\n if (fieldDeclaration) {\n const parser = getWidgetFieldParser(widgetID);\n return [...new Set([\n ...(Object.values(widgetTranlatebles[widgetID]) || []),\n ...parser(fieldDeclaration).flat(Infinity)\n ])];\n }\n return Object.values(widgetTranlatebles[widgetID]);\n};\n\nexport {\n widgetTranlatebles,\n getWidgetTranslatebleTexts,\n parseConfigurableListFieldDeclarations\n};\n","export const loadWidgetImageInParentWindow = imageUrl => {\n let url;\n try {\n url = new URL(imageUrl, window.location.origin);\n url.hostname = window.location.hostname;\n url = url.toString();\n } catch (e) {\n url = imageUrl;\n }\n return new Promise((resolve, reject) => {\n const xhr = new window.XMLHttpRequest();\n\n xhr.open('GET', url, true);\n xhr.withCredentials = true;\n xhr.responseType = 'blob';\n xhr.onerror = reject;\n xhr.onload = () => {\n const reader = new global.FileReader();\n reader.onloadend = () => {\n if (typeof reader.result === 'string' && (reader.result.substr(0, 10) === 'data:image' || reader.result.substr(0, 29) === 'data:application/octet-stream')) {\n resolve(reader.result.replace('data:application/octet-stream', 'data:image/png'));\n } else {\n reject(new Error('Blob is not an image'));\n }\n };\n reader.readAsDataURL(xhr.response);\n };\n xhr.send();\n });\n};\n\nexport const isBase64LoadedField = (msg, clientId) => (!!msg.enterprise || msg.isHipaa) && [\n '529467003477f3512000001f', // Smooth Signature\n '533a8c19a3f5fec35d00009a', // Initials\n '5d493b3b3ecd623d69000045', // Annotate Picture\n '535a49d40a05fdff5200002b' // Draw on Image\n].includes(clientId);\n","/* eslint-disable */\n/**\n * WidgetsServerBuilder.js 1.5.2\n *\n * (c) 2013 JotForm Easiest Form Builder\n */\nimport { getActiveApp, getEnv, getBaseURL, isEU, isHIPAA } from '@jotforminc/router-bridge';\nimport { getWidgetTranslatebleTexts } from '../translations';\nimport { StorageHelper } from '@jotforminc/storage-helper';\nimport { loadWidgetImageInParentWindow, isBase64LoadedField } from '../utils/loadWidgetImageAsBase64';\n\nfunction widgetFrameLoaded(id, formProps, value, questionProps) {\n formProps = typeof formProps === 'undefined' ? {} : formProps;\n questionProps = typeof questionProps === 'undefined' ? {} : questionProps;\n\n var enableLog = false;\n\n enableLog && console.log('SERVER: widget frame onload for', id);\n\n var frameObj = document.getElementById(`customFieldFrame_${id}`);\n var { src } = frameObj;\n\n // because we are changing iframe src dynamically\n if (src.match('/form/')) {\n return;\n }\n\n var refererArr = src.match(/^(ftp:\\/\\/|https?:\\/\\/)?(.+@)?([a-zA-Z0-9\\.\\-]+).*$/);\n var referer = refererArr[1] + refererArr[3];\n // var thisForm = (JotForm.forms[0] == undefined || typeof JotForm.forms[0] == \"undefined\" ) ? $($$('.jotform-form')[0].id) : JotForm.forms[0];\n\n // check a valid json string\n function IsValidJsonString(str) {\n try {\n JSON.parse(str);\n } catch (e) {\n return false;\n }\n return true;\n }\n\n function sendMessage(msg, id) {\n try {\n if (navigator.userAgent.indexOf('Firefox') != -1) {\n XD.postMessage(msg, referer, getIframeWindow(window.frames[`customFieldFrame_${id}`]));\n } else {\n XD.postMessage(msg, referer, window.frames[`customFieldFrame_${id}`]);\n }\n } catch (e) {\n console.log(e);\n }\n }\n\n // note that we are binding receiveMessage on iframe load\n XD.receiveMessage(message => {\n // don't parse some unknown text from third party api of widgets like google recapthca\n if (!IsValidJsonString(message.data)) {\n return;\n }\n\n // parse message\n var data = JSON.parse(message.data);\n\n enableLog && console.log('SERVER: message coming form client type ', data.type);\n // sendSubmit\n if (data.type === 'submit') {\n if (typeof data.value === 'number') {\n data.value = `${data.value}`;\n }\n var required = $(document.getElementById(`input_${data.qid}`)).hasClassName('widget-required');\n if (!(required)) {\n if (data.valid === false) {\n document.getElementById(`input_${data.qid}`).value = 'widget not used';\n } else if (data.value !== undefined) {\n document.getElementById(`input_${data.qid}`).value = data.value;\n } else {\n document.getElementById(`input_${data.qid}`).value = '';\n }\n } else if (data.valid === false) {\n JotForm.errored(document.getElementById(`input_${data.qid}`), 'Please fill this field');\n } else {\n JotForm.corrected(document.getElementById(`input_${data.qid}`));\n if (data.value !== undefined) {\n document.getElementById(`input_${data.qid}`).value = data.value;\n } else {\n document.getElementById(`input_${data.qid}`).value = '';\n }\n }\n\n // if no value was set, dont show it to submission data\n if (typeof data.value === 'undefined' || data.value == false) {\n var el = document.getElementById(`input_${data.qid}`);\n el.value = '';\n el.removeAttribute('name');\n }\n\n var allInputs = document.getElementsByClassName('widget-required');\n var sendSubmit = true;\n for (var i = -0; i < allInputs.length; i++) {\n if (allInputs[i].value.length === 0) {\n sendSubmit = false;\n }\n }\n }\n\n // sendData\n if (data.type === 'data' && document.getElementById(`input_${data.qid}`)) {\n document.getElementById(`input_${data.qid}`).value = data.value;\n }\n\n // requestFrameSize\n if (data.type === 'size') {\n var { width } = data;\n var { height } = data;\n\n enableLog && console.log('SERVER: resizing widget width', width, 'height', height);\n if (width !== undefined && width !== null) {\n document.getElementById(`customFieldFrame_${data.qid}`) ? document.getElementById(`customFieldFrame_${data.qid}`).style.width = `${width}px` : null;\n }\n if (height !== undefined && height !== null) {\n document.getElementById(`customFieldFrame_${data.qid}`) ? document.getElementById(`customFieldFrame_${data.qid}`).style.height = `${height}px` : null;\n }\n }\n\n // Translatable text (from IFrame widget)\n if (data.type === 'translation') {\n if (data.data.length > 0) {\n // Check if there is already data for this form\n var wtData = window.widgetTranslatables[formProps.formID];\n if (typeof wtData === 'undefined') {\n wtData = {};\n }\n wtData[`qid_${data.qid}`] = data.data;\n window.widgetTranslatables[formProps.formID] = wtData;\n\n try {\n StorageHelper.setLocalStorageItem({key:'wStorage', value:JSON.stringify(window.widgetTranslatables)});\n } catch (e) {\n console.log(e);\n }\n }\n }\n\n if (data.type === 'fields:capture') {\n sendMessage(JSON.stringify({\n eventID: data.eventID,\n type: 'event:receiver',\n data: []\n }), data.qid);\n }\n }, `${document.location.protocol}//${frameObj.src.match(/^(ftp:\\/\\/|https?:\\/\\/)?(.+@)?([a-zA-Z0-9\\.\\-]+).*$/)[3]}`);\n\n // function that gets the widget settings from data-settings attribute of the iframe\n function getWidgetSettings() {\n var el = document.getElementById(`widget_settings_${id}`);\n return (el) ? el.value : null;\n }\n\n //get form environment\n var env = getEnv();\n var baseUrl = getBaseURL();\n var isApp = getActiveApp();\n var isEu = isEU();\n var isHipaa = isHIPAA();\n var enterprise = env === \"ENTERPRISE\" ? baseUrl.replace('https://', '') : false;\n\n function isOnFormBuilder() {\n return isApp === 'form-builder';\n }\n\n // function to check if a widget is required\n function isWidgetRequired() {\n var classNames = document.getElementById(`id_${id}`)?.className;\n return classNames?.includes('jf-required') || classNames?.includes('isRequired');\n }\n\n function isWidgetLabelEnabled() {\n var labelElement = document.getElementById(`label_${id}`);\n if (labelElement) {\n return labelElement.className.indexOf('form-label') > -1;\n }\n return false;\n }\n\n function getWidgetLabel(id) {\n var labelElement = document.getElementById(`label_${id}`);\n if (labelElement && labelElement.textContent) {\n return labelElement.textContent;\n }\n return '';\n }\n\n // send auto ready message to widget\n // do not call v3 functions when inside v4\n var isCardForm = (window.FORM_MODE == 'cardform' || window.buildermode === 'card');\n\n // Check theme version\n var themeVersion = (window && window.newDefaultTheme) || '';\n var isOpenedInPortal = src.match('isOpenedInPortal=true');\n var isOpenedInAgent = src.match('isOpenedInAgent=true');\n if (isOpenedInPortal || isOpenedInAgent) {\n sendMessage(JSON.stringify({type: 'theme', themeVersion: 'v2', isExtendedTheme: false}), id);\n }\n\n var formBackgroundv3 = (typeof getAllProperties === 'function') ? getAllProperties().form_background : '#fff';\n var formFontv3 = (typeof getAllProperties === 'function') ? getAllProperties().form_font : '';\n var msg = {\n type: 'ready',\n qid: `${id}`,\n background: formProps.formBackground || formBackgroundv3,\n fontFamily: formProps.formFont || formFontv3,\n formID: formProps.formID || BuildSource.formID,\n cardform: isCardForm,\n jotformNext: window.location.href.indexOf('jotformNext=1') > -1 || window.isComingFromJotFormNext == 1,\n onWizard: isOnFormBuilder(),\n settings: getWidgetSettings(),\n required: isWidgetRequired(),\n origin: window.location.origin || (`${window.location.protocol}//${window.location.hostname}${window.location.port ? `:${window.location.port}` : ''}`),\n themeVersion: themeVersion,\n isWidgetLabelEnabled: isWidgetLabelEnabled(),\n qlabel: getWidgetLabel(id),\n value,\n isApp,\n isEu,\n isHipaa,\n enterprise,\n lang: document.documentElement.lang\n };\n\n // include initial width and height of the widget\n var fwidth = frameObj.getAttribute('data-width') || frameObj.style.width;\n var fheight = frameObj.getAttribute('data-height') || frameObj.style.height;\n msg.width = parseInt(fwidth);\n msg.height = parseInt(fheight);\n // data-value attribute is set if form is in editMode.\n if (isCardForm && frameObj && typeof frameObj.up === 'function') {\n var jfFieldDiv = frameObj.up('.jfField') || false;\n var widgetID = jfFieldDiv && typeof jfFieldDiv.getAttribute === 'function' ? jfFieldDiv.getAttribute('data-widget-id') : false;\n if (widgetID) {\n msg.widgetID = widgetID;\n }\n }\n\n if (isBase64LoadedField(msg, questionProps.selectedField)) {\n loadWidgetImageInParentWindow(msg.value)\n .then((base64Image) => sendMessage(JSON.stringify({ ...msg, value: base64Image }), `${id}`))\n .catch(() => sendMessage(JSON.stringify(msg), `${id}`))\n } else {\n sendMessage(JSON.stringify(msg), `${id}`);\n }\n\n // Request IFrame widget for translatable text (if there is any)\n var translatableRequest = {\n type: 'translatable',\n formID: formProps.formID || BuildSource.formID,\n qid: `${id}`\n };\n sendMessage(JSON.stringify(translatableRequest), `${id}`);\n}\n\nfunction getWidgetTranslatables(widgetID, options = {}) {\n\n const { fieldDeclaration, fid, qid } = options;\n\n var response = {\n isTranslatable: false,\n data: []\n };\n\n const parsableWidgets = ['5299b58aba554b7e24000007'/* Configurable List */, '533946093c1ad0c45d000070'/* Matrix Dynamique */];\n if(parsableWidgets.includes(widgetID)) {\n const texts = getWidgetTranslatebleTexts(widgetID, fieldDeclaration);\n if(texts && texts.length > 0){\n response.isTranslatable = true;\n response.data = texts;\n }\n return response;\n }\n\n if (typeof fid !== 'undefined' && typeof qid !== 'undefined' && !isNaN(fid) && !isNaN(qid) && fid !== '' && qid !== '') {\n var widgetTranslatables = StorageHelper.getLocalStorageItem({key:'wStorage'});\n\n if (widgetTranslatables !== undefined && widgetTranslatables !== null) {\n var widgetTranslatables = JSON.parse(widgetTranslatables);\n if (typeof widgetTranslatables[fid] !== 'undefined') {\n var widgetTranslatables = widgetTranslatables[fid];\n if (typeof widgetTranslatables[`qid_${qid}`] !== 'undefined') {\n var translatable = widgetTranslatables[`qid_${qid}`];\n if (typeof translatable !== 'undefined') {\n if (translatable.length > 0) {\n response.isTranslatable = true;\n response.data = translatable;\n }\n }\n }\n }\n }\n }\n\n return response;\n}\n\nexport {\n widgetFrameLoaded,\n getWidgetTranslatables\n}\n","import createWidgetTranslations from './customfield/language';\nimport createCustomWidget from './customfield/customWidget';\nimport createWidgetUtils from './customfield/utils';\n\nimport injectGetStyle from './utils/getStyle';\nimport injectPostMessage from './utils/postmessage';\nimport makeJCFServerCommonChecks from './utils/makeJCFServerCommonChecks';\nimport clientWidgetFrameLoaded from './widgetsServer/client';\nimport JFExternalWidgetParamsServer from './external/server';\nimport JFExternalWidgetParamsClient from './external/client';\nimport {\n widgetFrameLoaded as builderWidgetFrameLoaded,\n getWidgetTranslatables as builderGetWidgetTranslatables\n} from './widgetsServer/builder';\n\nconst initWidgetsBuilder = () => {\n // good to go\n // Replaces the old behaviour of WidgetsServerBuilder.js\n if (window.JCFServerCommon === undefined) {\n window.JCFServerCommon = {\n frames: {}\n };\n }\n\n if (window.widgetTranslatables === undefined) {\n window.widgetTranslatables = {};\n }\n injectPostMessage();\n injectGetStyle();\n window.widgetFrameLoaded = builderWidgetFrameLoaded;\n window.getWidgetTranslatables = builderGetWidgetTranslatables;\n // eslint-disable-next-line no-undef\n if (!Element.prototype.addClassName) {\n // eslint-disable-next-line no-undef\n Element.prototype.addClassName = function elemFn(className) {\n if (this.className.includes(className)) return;\n this.className += `${this.className.length ? ' ' : ''}${className}`;\n };\n }\n};\n\nexport {\n createWidgetTranslations,\n createCustomWidget,\n createWidgetUtils,\n clientWidgetFrameLoaded,\n builderWidgetFrameLoaded,\n builderGetWidgetTranslatables,\n injectGetStyle,\n injectPostMessage,\n makeJCFServerCommonChecks,\n JFExternalWidgetParamsServer,\n initWidgetsBuilder,\n JFExternalWidgetParamsClient\n};\n","import React, { memo } from 'react';\nimport { func, string } from 'prop-types';\nimport {\n Location, Router, LocationProvider, globalHistory\n} from '@reach/router';\nimport { renderable } from './constants/propTypes';\n\n// Reach router's ref blocker to prevent focus:\n// https://github.com/reach/router/blob/d2c9ad06715c9d48c2d16f55f7cd889b626d2521/src/index.js#L342\nconst Comp = props =>
    ;\n\nLocationProvider.prototype.componentDidMount = function componentDidMount() {\n const { state: { refs } } = this;\n refs.unlisten = globalHistory.listen(() => {\n this.setState(() => ({ context: this.getContext() }));\n });\n};\n\nconst CoreAppRouter = ({ basepath, children, onLocationChange }) => {\n return (\n \n {({ location }) => {\n onLocationChange(location.pathname);\n return (\n \n {children}\n \n );\n }}\n \n );\n};\n\nCoreAppRouter.propTypes = {\n basepath: string,\n children: renderable.isRequired,\n onLocationChange: func\n};\n\nCoreAppRouter.defaultProps = {\n basepath: '',\n onLocationChange: f => f\n};\n\nexport default memo(CoreAppRouter);\n","import React, { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { CREATE_NEW_PORTAL } from '../../store/actionTypes';\nimport BuilderLoading from '../../components/BuilderLoading';\nimport { ErrorScreen } from '../PublicApp/ErrorScreen';\nimport SELECTORS from '../../store/selectors';\n\nconst CreateNewPortal = () => {\n const dispatch = useDispatch();\n const isAppFailed = useSelector(SELECTORS.isAppFailedSelector);\n\n useEffect(() => { dispatch({ type: CREATE_NEW_PORTAL.REQUEST }); }, []);\n\n return isAppFailed ? : ;\n};\n\nexport default CreateNewPortal;\n","/**\n * Functions that modify and act on HTML-related objects.\n */\n\n/**\n * Convert a string with HTML entities in it to a\n * raw text version.\n * @param {any} html string that may contain html entities,\n * such as >\n * @returns {string} String with HTML entities decoded, if html param\n * is not a string, returns ''.\n */\nexport function decodeEntities(html) {\n if (typeof html !== 'string') {\n return '';\n }\n return html.replace(/>/g, '>')\n .replace(/</g, '<')\n .replace(/&/g, '&')\n .replace(/"/g, '\"');\n}\n\n/**\n * Updates document title with the new resource name\n *\n * @param {string} newResourceName\n * @returns void\n */\nexport const updateTitleWithNewResourceName = newResourceName => {\n try {\n /**\n * Our common document title scheme:\n * BSG: `{resourceName} - Jotform {productName}`\n * Ent: `{resourceName} - {productName}`\n */\n if (document.title.includes(' - ')) {\n document.title = document.title.replace(/^.*(\\s-.*)$/, `${newResourceName}$1`);\n } else {\n // Means that we dont have a resource name at title yet - only the product name\n document.title = `${newResourceName} - ${document.title}`;\n }\n } catch (e) {\n // Could not update the window title\n }\n};\n\n/**\n * IMPORTANT :: This will not prevent XSS\n * Use this for trusted values\n * */\nexport const stripHTML = string => {\n if (\n string.indexOf\n && (\n string.indexOf('<') !== -1\n || string.indexOf('>') !== -1\n )\n ) {\n const tmp = document.createElement('DIV');\n tmp.innerHTML = string;\n return tmp.textContent || tmp.innerText || string;\n }\n return string;\n};\n","import { Moment } from '@jotforminc/jotform-common';\nimport { updateTitleWithNewResourceName } from '@jotforminc/utils';\n\nimport {\n FETCH_PORTAL,\n UPDATE_PORTAL,\n UPDATE_ORDER,\n UPDATE_ITEM_PROP,\n ADD_PORTAL_ITEMS,\n REMOVE_PORTAL_ITEMS,\n SET_API_REQUESTS_COMPLETED,\n UPDATE_MULTIPLE_ITEM, ADD_NEW_PAGE, DELETE_PAGE, UPDATE_PAGE, CHANGE_PAGE_ORDER, REPLACE_FORM_ITEM, APP_UPDATED\n} from '../actionTypes';\nimport { FEATURE_NAMES } from '../../constants/features';\nimport { isFeatureEnabled } from '../../utils/features/helper';\nimport { ITEM_TYPES } from '../../constants/itemTypes';\nimport { getPortalTypeByItems } from '../../constants';\n\nconst initialState = {\n items: [],\n pages: []\n};\n\n// todo ?\n// eslint-disable-next-line complexity\nconst PortalReducer = (state = initialState, action) => {\n switch (action.type) {\n case FETCH_PORTAL.SUCCESS:\n case UPDATE_PORTAL.REQUEST:\n case UPDATE_PORTAL.SUCCESS: {\n // Update document title\n // TODO: find a better way 🥲\n // When building with form, app name in the reducer is overrided\n // via the backend request response after fetching the newly created app.\n // Thats why this document update is here 😣\n // Maybe we can use directly the form title instead of 'New App' default\n // if the user comes to the app with buildWith param.\n if (\n action.payload?.title\n // This condition is needed otherwise the standalone app's title becomes\n // \"My neat app - My neat app\"\n && window.document.title !== action.payload?.title\n ) {\n updateTitleWithNewResourceName(action.payload.title);\n }\n\n // for username changes\n // temporarily disabled\n // if (window.JOTFORM_ENV !== 'ENTERPRISE') {\n // normalizeIconURLs(action.payload);\n // }\n\n return {\n ...state,\n ...action.payload\n };\n }\n case UPDATE_ORDER.REQUEST: {\n return {\n ...state,\n items: action.payload.map(({ id, ...rest }) => {\n const origItem = state.items.find(f => f.id === id);\n return { ...origItem, ...rest };\n })\n };\n }\n case UPDATE_ITEM_PROP.WITHOUT_DEBOUNCE:\n case UPDATE_ITEM_PROP.WITH_DEBOUNCE:\n case UPDATE_ITEM_PROP.REQUEST: {\n return {\n ...state,\n items: state.items?.map(item => {\n return (item.id === action.payload.itemID ? { ...item, ...action.payload.prop } : item);\n })\n };\n }\n case UPDATE_ITEM_PROP.SUCCESS:\n case UPDATE_MULTIPLE_ITEM.REQUEST:\n case UPDATE_MULTIPLE_ITEM.SUCCESS: {\n const updatedItems = action.payload;\n return {\n ...state,\n items: [...state.items].map(currentItem => {\n const { id: currentID } = currentItem;\n const updatedItem = updatedItems[currentID] || {};\n return {\n ...currentItem,\n ...updatedItem\n };\n })\n };\n }\n case ADD_PORTAL_ITEMS.REQUEST: {\n const { newItems } = action.payload;\n return {\n ...state,\n items: newItems\n };\n }\n case REPLACE_FORM_ITEM.SUCCESS: {\n const { itemID, form } = action.payload;\n\n return {\n ...state,\n items: state.items.map(item => (item.id === itemID ? form : item))\n };\n }\n case ADD_PORTAL_ITEMS.SUCCESS: {\n const addedItems = action.payload;\n const items = [...state.items].map(currentItem => {\n const { id: currentID, tempID: currentTempID, type: currentType } = currentItem;\n\n const finderFn = isFeatureEnabled(FEATURE_NAMES.FormResource)\n ? ({ tempID }) => tempID === currentTempID\n : ({ id, tempID }) => {\n return !currentID && tempID && currentType !== ITEM_TYPES.FORM\n ? tempID === currentTempID // Non-form app item, they have predefined tempIDs.\n : parseInt(id, 10) === parseInt(currentID, 10);\n };\n const newItem = addedItems.find(finderFn);\n\n const finalItem = { ...currentItem, ...newItem };\n return {\n ...finalItem,\n // next line is added to prevent consecutive adding elements success collision\n ...{ portalOrder: finalItem.portalOrder ? finalItem.portalOrder.toString() : '' }\n };\n });\n\n const presentationItems = addedItems.filter(addedItem => !!items.find(item => item.presentationItemID === addedItem.id));\n\n return {\n ...state,\n items: [...items, ...presentationItems],\n type: getPortalTypeByItems(addedItems)\n };\n }\n case REMOVE_PORTAL_ITEMS.SUCCESS: {\n const itemIDList = action.payload;\n return {\n ...state,\n items: itemIDList,\n type: getPortalTypeByItems(itemIDList)\n };\n }\n case SET_API_REQUESTS_COMPLETED: {\n const date = Moment.formatDate(new Date(), 'YYYY-MM-DD HH:mm ZZ', 'YYYY-MM-DD HH:mm:ss');\n return {\n ...state, updated_at: date, appUpdatedAt: date\n };\n }\n\n case APP_UPDATED: {\n return { ...state, appUpdatedAt: Date.now() };\n }\n\n case ADD_NEW_PAGE.REQUEST: {\n const { pages } = action.payload; // has tempID\n return {\n ...state,\n pages: [\n ...state.pages,\n ...pages\n ]\n };\n }\n case ADD_NEW_PAGE.SUCCESS: {\n const { pages } = action.payload;\n return {\n ...state,\n pages\n };\n }\n case CHANGE_PAGE_ORDER.SUCCESS: {\n return {\n ...state,\n pages: action.payload\n };\n }\n case DELETE_PAGE.REQUEST: {\n const { pageID } = action.payload;\n const newPages = state.pages.filter(p => p.id !== pageID);\n return {\n ...state,\n pages: newPages\n };\n }\n case DELETE_PAGE.SUCCESS: {\n const {\n items, pages\n } = action.payload;\n return {\n ...state,\n pages,\n items\n };\n }\n case UPDATE_PAGE.SUCCESS: {\n const updatedPages = action.payload;\n return {\n ...state,\n pages: [...state.pages].map(page => {\n const { id: pageID } = page;\n const updated = updatedPages[pageID] || {};\n return {\n ...page,\n ...updated\n };\n })\n };\n }\n default:\n break;\n }\n return state;\n};\n\nexport default PortalReducer;\n","import { FETCH_FORMS } from '../actionTypes';\n\nconst initialState = [];\n\nconst FormsReducer = (state = initialState, action) => {\n switch (action.type) {\n case FETCH_FORMS.SUCCESS: {\n return [...action.payload];\n }\n default:\n break;\n }\n return state;\n};\n\nexport default FormsReducer;\n","import { FETCH_SIGNS } from '../actionTypes';\n\nconst initialState = [];\n\nconst SignsReducer = (state = initialState, action) => {\n switch (action.type) {\n case FETCH_SIGNS.SUCCESS: {\n return [...action.payload];\n }\n default:\n break;\n }\n return state;\n};\n\nexport default SignsReducer;\n","import {\n FETCH_SHARE_LIST, SET_TEMPLATE_CATEGORIES, SET_TEMPLATE_LANGUAGES, UPDATE_RESOURCE_SHARE_URL\n} from '../actionTypes';\n\nconst initialState = {\n resourceShareURL: '',\n shareList: [],\n templateLanguages: [],\n templateCategories: []\n};\n\nconst ShareReducer = (state = initialState, action) => {\n switch (action.type) {\n case FETCH_SHARE_LIST.SUCCESS: {\n return {\n ...state,\n shareList: [...action.payload]\n };\n }\n case UPDATE_RESOURCE_SHARE_URL.SUCCESS: {\n return {\n ...state,\n resourceShareURL: action.payload\n };\n }\n case SET_TEMPLATE_CATEGORIES: {\n return {\n ...state,\n templateCategories: action.payload\n };\n }\n case SET_TEMPLATE_LANGUAGES: {\n return {\n ...state,\n templateLanguages: action.payload\n };\n }\n default:\n break;\n }\n return state;\n};\n\nexport default ShareReducer;\n","import { FETCH_APPS } from '../actionTypes';\n\nconst initialState = [];\n\nconst AppsReducer = (state = initialState, action) => {\n switch (action.type) {\n case FETCH_APPS.SUCCESS: {\n return [...action.payload\n .map(({ disableOnDateProps = {}, ...app }) => ({\n ...app,\n ...disableOnDateProps\n }))\n ];\n }\n default:\n break;\n }\n return state;\n};\n\nexport default AppsReducer;\n","import {\n ADD_TO_STACK, REDO, RESET_STACK, UNDO\n} from '../actionTypes';\n\nconst initialState = {\n stack: [], // LastInFirstOut!\n head: -1\n};\n\nconst UndoRedoReducer = (state = initialState, action) => {\n switch (action.type) {\n case ADD_TO_STACK:\n const { command } = action.payload;\n const newStack = [...state.stack, command];\n const newHead = newStack.length - 1; // Last in\n return {\n ...state,\n stack: newStack,\n head: newHead\n };\n case RESET_STACK:\n const currentHead = state.head;\n const clearedStack = [...state.stack.slice(0, currentHead + 1)];\n return {\n ...state,\n stack: clearedStack\n };\n case UNDO:\n return { ...state, head: state.head - 1 };\n case REDO:\n return { ...state, head: state.head + 1 };\n default:\n return state;\n }\n};\n\nexport default UndoRedoReducer;\n","import {\n SET_DONE_COUNT, SET_TODO_COUNT, SET_IS_APP_DONE, SET_LAST_ANIMATED_DONE_COUNT\n} from '../actionTypes';\n\nconst initialState = {\n todoCount: 0,\n doneCount: 0,\n isAppDone: false,\n lastAnimatedDoneCount: null\n};\n\nconst ProgressReducer = (state = initialState, action) => {\n switch (action.type) {\n case SET_TODO_COUNT:\n return {\n ...state,\n todoCount: action.payload\n };\n case SET_DONE_COUNT:\n return {\n ...state,\n doneCount: action.payload\n };\n case SET_IS_APP_DONE:\n return {\n ...state,\n isAppDone: action.payload\n };\n case SET_LAST_ANIMATED_DONE_COUNT:\n return {\n ...state,\n lastAnimatedDoneCount: action.payload\n };\n default:\n return state;\n }\n};\n\nexport default ProgressReducer;\n","import { FETCH_WIDGETS } from '../actionTypes';\n\nconst initialState = [];\n\nconst WidgetsReducer = (state = initialState, action) => {\n switch (action.type) {\n case FETCH_WIDGETS.SUCCESS: {\n return [...action.payload];\n }\n default:\n break;\n }\n return state;\n};\n\nexport default WidgetsReducer;\n","import { safeJSONParse } from '@jotforminc/utils';\nimport * as ACTION_TYPES from '../actionTypes';\n\nconst initialState = {\n products: {},\n cartProducts: {},\n activeProduct: '',\n filteredProducts: {},\n favoriteProducts: {},\n checkoutKey: '',\n isChangedPriceInCart: false\n};\n\nconst Products = (state = initialState, action) => {\n switch (action.type) {\n case ACTION_TYPES.SET_ACTIVE_PRODUCT: {\n const { itemID, productID } = action.payload;\n const activeProduct = itemID ? { itemID, productID } : {};\n return {\n ...state,\n activeProduct\n };\n }\n case ACTION_TYPES.FILTER_PRODUCTS: {\n return {\n ...state,\n filteredProducts: action.payload\n };\n }\n case ACTION_TYPES.SET_CART_PRODUCTS: {\n return {\n ...state,\n cartProducts: action.payload\n };\n }\n case ACTION_TYPES.SET_FAVORITE_PRODUCTS: {\n return {\n ...state,\n favoriteProducts: action.payload\n };\n }\n case ACTION_TYPES.SET_CHECKOUT_KEY: {\n return {\n ...state,\n checkoutKey: action.payload\n };\n }\n case ACTION_TYPES.SET_IS_CHANGED_PRICE_IN_CART: {\n return {\n ...state,\n isChangedPriceInCart: action.payload\n };\n }\n case ACTION_TYPES.FETCH_STORE_PROPERTIES.SUCCESS: {\n const { checkoutKey = '' } = action.payload;\n\n const cartProducts = safeJSONParse(action.payload.cartProducts);\n const favoriteProducts = safeJSONParse(action.payload.favoriteProducts);\n return {\n ...state,\n cartProducts,\n checkoutKey,\n favoriteProducts\n };\n }\n default:\n break;\n }\n return state;\n};\n\nexport default Products;\n","import { FETCH_CDN_CONFIG } from '../actionTypes';\n\nconst initialState = {};\n\nconst CDNConfigReducer = (state = initialState, action) => {\n switch (action.type) {\n case FETCH_CDN_CONFIG.SUCCESS: {\n return action.payload;\n }\n default:\n break;\n }\n return state;\n};\n\nexport default CDNConfigReducer;\n","import {\n FETCH_USER_TEAMS\n} from '../actionTypes';\nimport * as ACTION_TYPES from '../actionTypes';\nimport { isTeamMember } from '../../constants/team';\n\nconst initialState = {\n userTeams: [],\n userTeamPermissions: {},\n isTeamMember\n};\n\nconst teamReducer = (state = initialState, action) => {\n switch (action.type) {\n case FETCH_USER_TEAMS.SUCCESS: {\n return {\n ...state,\n userTeams: action.payload\n };\n }\n case ACTION_TYPES.FETCH_USER_TEAM_PERMISSIONS.SUCCESS:\n return {\n ...state,\n userTeamPermissions: action.payload\n };\n default:\n break;\n }\n return state;\n};\n\nexport default teamReducer;\n","import { Variables } from '@jotforminc/payment-settings-editor';\nimport * as ACTION_TYPES from '../actionTypes';\n\nconst initialState = {\n questions: {},\n paymentModalFlowType: 'ELEMENT_TO_GATEWAY',\n paymentModalFlowStep: 'select-gateway'\n};\n\nconst CheckoutFormReducer = (state = initialState, action) => {\n switch (action.type) {\n case ACTION_TYPES.SET_PAYMENT_MODAL_FLOW_TYPE:\n case ACTION_TYPES.SET_PAYMENT_MODAL_FLOW_SELECTED_GATEWAY:\n case ACTION_TYPES.SET_PAYMENT_MODAL_FLOW_STEP: {\n return {\n ...state,\n ...action.payload\n };\n }\n case ACTION_TYPES.FETCH_CHECKOUT_FORM_QUESTIONS.SUCCESS: {\n return { ...state, questions: action.payload };\n }\n case ACTION_TYPES.UPDATE_CHECKOUT_FORM_QUESTION.SUCCESS: {\n const questionID = action.payload.id;\n return {\n ...state,\n questions: {\n ...state.questions,\n [questionID]: {\n ...state.questions[questionID],\n ...action.payload.prop\n }\n }\n };\n }\n case ACTION_TYPES.CHECKOUT_FORM_SETTINGS_CHANGE.SUCCESS:\n case ACTION_TYPES.CHECKOUT_FORM_GATEWAY_SETTINGS_CHANGE.SUCCESS: {\n return {\n ...state,\n questions: {\n ...state.questions,\n [Variables.CHECKOUT_FORM_QUESTIONS.GATEWAY]: action.payload\n }\n };\n }\n case ACTION_TYPES.ADD_CHECKOUT_FORM_QUESTION.SUCCESS: {\n return {\n ...state,\n questions: {\n ...state.questions,\n [action.payload.qid]: action.payload\n }\n };\n }\n case ACTION_TYPES.REMOVE_CHECKOUT_FORM_QUESTION.REQUEST: {\n const { [action.payload]: _, ...questions } = state.questions;\n return {\n ...state,\n questions\n };\n }\n case ACTION_TYPES.SORT_CHECKOUT_FORM_QUESTION.SUCCESS: {\n return {\n ...state,\n questions: action.payload\n };\n }\n default:\n break;\n }\n return state;\n};\n\nexport default CheckoutFormReducer;\n","import { getDefaultPermissionRequestTexts } from '@jotforminc/portal-components';\nimport {\n FETCH_NOTIFICATION_STATS,\n FETCH_NOTIFICATON_HISTORY, SEND_PUSH_NOTIFICATION\n} from '../actionTypes';\n\nconst initialState = {\n consentMessage: getDefaultPermissionRequestTexts(),\n notificationHistory: [],\n sendNotificationLoading: false,\n stats: {}\n};\n\nconst PushNotificationReducer = (state = initialState, action) => {\n switch (action.type) {\n case FETCH_NOTIFICATON_HISTORY.SUCCESS: {\n return {\n ...state,\n notificationHistory: action.notificationHistory\n };\n }\n case FETCH_NOTIFICATION_STATS.SUCCESS: {\n return {\n ...state,\n stats: action.stats\n };\n }\n case SEND_PUSH_NOTIFICATION.REQUEST: {\n return {\n ...state,\n sendNotificationLoading: true\n };\n }\n case SEND_PUSH_NOTIFICATION.SUCCESS: {\n return {\n ...state,\n sendNotificationLoading: false,\n notificationHistory: action.payload\n };\n }\n case SEND_PUSH_NOTIFICATION.ERROR: {\n return {\n ...state,\n sendNotificationLoading: false\n };\n }\n default:\n break;\n }\n return state;\n};\n\nexport default PushNotificationReducer;\n","import { APP_PREVIEW_STATES, LIVE_PREVIEW_SIZE_MODES } from '../../constants';\nimport { SET_LIVE_PREVIEW_STATUS, SET_LIVE_PREVIEW_SIZE_MODE } from '../actionTypes';\n\nconst initialState = {\n livePreviewSizeMode: LIVE_PREVIEW_SIZE_MODES.FIT_HEIGHT,\n livePreviewStatus: APP_PREVIEW_STATES.IDLE\n};\n\nconst LivePreviewReducer = (state = initialState, action) => {\n switch (action.type) {\n case SET_LIVE_PREVIEW_SIZE_MODE: {\n return {\n ...state,\n livePreviewSizeMode: action.payload\n };\n }\n case SET_LIVE_PREVIEW_STATUS: {\n return {\n ...state,\n livePreviewStatus: action.payload\n };\n }\n default:\n break;\n }\n return state;\n};\n\nexport default LivePreviewReducer;\n","import {\n AI_ADD_ASSISTANT_CHAT_MESSAGE,\n AI_ADD_CHAT_MESSAGE,\n AI_SET_MESSAGES,\n AI_SHOW_ASSISTANT,\n AI_SHOW_ERROR_MESSAGE\n} from '../actionTypes';\n\nconst initialState = {\n messages: [],\n showAssistant: false,\n isWaitingForResponse: false,\n isDirty: false,\n isOpened: false,\n isDefaultOpen: false\n};\n\nconst AssistantReducer = (state = initialState, action) => {\n switch (action.type) {\n case AI_SET_MESSAGES:\n return {\n ...state,\n messages: action.payload,\n isWaitingForResponse: false\n };\n case AI_SHOW_ASSISTANT:\n return {\n ...state,\n showAssistant: action.payload.aiIsShow\n };\n case AI_ADD_CHAT_MESSAGE:\n return {\n ...state,\n messages: [\n ...state.messages,\n {\n message_id: new Date().valueOf(),\n content: action.payload.prompt,\n message_type: 'USER_MESSAGE'\n }\n ],\n isWaitingForResponse: true\n };\n case AI_ADD_ASSISTANT_CHAT_MESSAGE:\n return {\n ...state,\n messages: [...state.messages, {\n content: action.data,\n message_type: 'ASSISTANT',\n message_id: new Date().valueOf()\n }]\n };\n case AI_SHOW_ERROR_MESSAGE:\n return {\n ...state,\n messages: [\n ...state.messages,\n {\n message_id: new Date().valueOf(),\n content: action.payload,\n message_type: 'ERROR'\n }\n ],\n isWaitingForResponse: false\n };\n default:\n return state;\n }\n};\n\nexport default AssistantReducer;\n","/* eslint-disable complexity */\nimport isEmpty from 'lodash/isEmpty';\nimport * as ACTION_TYPES from '../../actionTypes';\nimport { DS_ITEM_LOAD_TYPES, DS_ITEM_OFFSET } from './constants';\n\nconst initialState = {\n items: {},\n resources: {},\n pages: {}\n // items: {\n // [itemID]: {\n // data: {\n\n // },\n // isLoading:\n // },\n // },\n // }\n // }\n // resources: {\n // [resourceID]: {\n // columns: [],\n // }\n // }\n};\nconst DataSourceReducer = (state = initialState, action) => {\n switch (action.type) {\n case ACTION_TYPES.DS_SET_LOADING: {\n const { itemID, isLoading, loadType = DS_ITEM_LOAD_TYPES.DEFAULT } = action.payload;\n return {\n ...state,\n items: {\n ...state.items,\n [itemID]: {\n ...(state.items[itemID] ?? []),\n [loadType]: isLoading\n }\n }\n };\n }\n\n case ACTION_TYPES.DS_FETCH_RESOURCE_ROW.REQUEST: {\n const { itemID } = action.payload;\n return {\n ...state,\n items: {\n ...state.items,\n [itemID]: {\n ...(state.items[itemID] ?? {}),\n isLoading: true\n }\n }\n };\n }\n\n case ACTION_TYPES.DS_LIST_SET_ACTIVE_ROW_ID.REQUEST:\n case ACTION_TYPES.DS_FETCH_RESOURCE_ROW.SUCCESS: {\n const {\n itemID, itemData\n } = action.payload;\n return {\n ...state,\n items: {\n ...state.items,\n [itemID]: {\n ...(state.items[itemID] ?? {}),\n data: itemData,\n isLoading: false\n }\n }\n };\n }\n\n case ACTION_TYPES.DS_FETCH_SOURCE_ITEM_DATA.REQUEST: {\n const { itemID } = action.payload;\n return {\n ...state,\n items: {\n ...state.items,\n [itemID]: {\n ...(state.items[itemID] ?? {}),\n isLoading: true\n }\n }\n };\n }\n\n case ACTION_TYPES.DS_FETCH_SOURCE_ITEM_DATA.ERROR: {\n const { itemID } = action.payload;\n return {\n ...state,\n items: {\n ...state.items,\n [itemID]: {\n ...(state.items[itemID] ?? {}),\n [DS_ITEM_LOAD_TYPES.DEFAULT]: false,\n [DS_ITEM_LOAD_TYPES.INIT]: false\n }\n }\n };\n }\n\n case ACTION_TYPES.DS_FETCH_SOURCE_ITEM_DATA.SUCCESS: {\n const { itemID, itemData } = action.payload;\n const currentItem = state.items[itemID];\n return {\n ...state,\n items: {\n ...state.items,\n [itemID]: {\n ...(currentItem ?? {}),\n data: [...currentItem?.data ?? [], ...itemData],\n [DS_ITEM_LOAD_TYPES.DEFAULT]: false,\n [DS_ITEM_LOAD_TYPES.TABLE_CLONE]: false,\n hasMore: !isEmpty(itemData) && itemData.length === DS_ITEM_OFFSET,\n offset: (currentItem.offset ?? 0) + DS_ITEM_OFFSET\n }\n }\n };\n }\n\n case ACTION_TYPES.DS_LIST_SET_ACTIVE_ROW_ID.SUCCESS: {\n const { id: itemID, rowID } = action.payload;\n return {\n ...state,\n items: {\n ...state.items,\n [itemID]: {\n ...(state.items[itemID] ?? {}),\n isLoading: false,\n activeRowID: rowID\n }\n }\n };\n }\n\n case ACTION_TYPES.DS_CLEAR_ITEMS_BY_IDS: {\n const { payload } = action;\n\n const filteredItems = Object.fromEntries(\n Object.entries(state.items).filter(([itemID]) => !payload.includes(itemID))\n );\n\n return {\n ...state,\n items: filteredItems\n };\n }\n\n case ACTION_TYPES.DS_FETCH_RESOURCE_COLUMNS.SUCCESS: {\n const {\n resourceID, viewID, columns, title\n } = action.payload;\n\n const key = viewID || resourceID;\n\n return {\n ...state,\n resources: {\n ...state.resources,\n [key]: {\n ...(state.resources[resourceID] ?? {}),\n columns,\n title\n }\n }\n };\n }\n\n case ACTION_TYPES.DS_FETCH_DETAIL_PAGE.REQUEST: {\n const { pageID } = action.payload;\n return {\n ...state,\n pages: {\n ...state.pages,\n [pageID]: {\n isLoading: true\n }\n }\n };\n }\n\n case ACTION_TYPES.DS_FETCH_DETAIL_PAGE.SUCCESS: {\n const { pageID, data: arrData, divideByItemID = false } = action.payload;\n\n if (divideByItemID) {\n const newItems = arrData.reduce((prev, itemData) => ({\n ...prev,\n [itemData.id]: {\n data: itemData,\n isLoading: false\n }\n }), {});\n\n return {\n ...state,\n items: {\n ...state.items,\n ...newItems\n }\n };\n }\n\n const data = arrData.reduce((acc, itemData) => ({ ...acc, [itemData.id]: { ...itemData } }), {});\n\n return {\n ...state,\n pages: {\n ...state.pages,\n [pageID]: {\n data,\n isLoading: false\n }\n }\n };\n }\n\n default: {\n return state;\n }\n }\n};\n\nexport default DataSourceReducer;\n","import { SET_USER_MANAGEMENT_USERS } from '../actionTypes';\n\nconst initialState = {\n users: [],\n sheetID: null,\n sheetViewID: null\n};\n\nconst UserManagementReducer = (state = initialState, action) => {\n switch (action.type) {\n case SET_USER_MANAGEMENT_USERS:\n const { users, sheetID, sheetViewID } = action.payload;\n return {\n ...state,\n users,\n sheetID,\n sheetViewID\n };\n default:\n return state;\n }\n};\n\nexport default UserManagementReducer;\n","export const PERMISSION = {\n DEFAULT: 'default',\n GRANTED: 'granted',\n DENIED: 'denied'\n};\n\nexport const SUBSCRIPTION_ID_KEY = 'push-notification-subscription-id';\n\nexport const DEVICE_REGISTRATION = {\n KEY: 'push-notification-device-registration-status',\n STATUS: {\n DEFAULT: 'default',\n REGISTERED: 'registered',\n UNREGISTERED: 'unregistered'\n }\n};\n","export function base64ToArray(base64String: string): Uint8Array {\n const padding = '='.repeat((4 - (base64String.length % 4)) % 4);\n const base64 = (base64String + padding)\n .replace(/-/g, '+')\n .replace(/_/g, '/');\n\n const rawData = atob(base64);\n const outputArray = new Uint8Array(rawData.length);\n\n for (let i = 0; i < rawData.length; ++i) {\n outputArray[i] = rawData.charCodeAt(i);\n }\n return outputArray;\n}\n","import { RequestLayer, ResponseResult } from '@jotforminc/request-layer';\nimport { PostSubscriptionRequest, ProjectConfig, PushManagerConfig } from '../types';\nimport { WebPushNotificationEvent } from '../service-worker/types';\n\nconst requestLayer = new RequestLayer('/API');\n\nexport default class Api {\n private readonly resourceId: string;\n\n private readonly resourceType: string;\n\n constructor(config: PushManagerConfig) {\n this.resourceType = config.resourceType;\n this.resourceId = config.resourceId;\n }\n\n private basePath() {\n return `web-push/${this.resourceType}/${this.resourceId}`;\n }\n\n getConfig(): Promise> {\n return requestLayer.get(`${this.basePath()}/config`);\n }\n\n postSubscription(subscription: PostSubscriptionRequest): Promise> {\n return requestLayer.post(`${this.basePath()}/subscribe`, subscription);\n }\n\n checkSubscription(subscriptionID: string): Promise> {\n return requestLayer.post(`${this.basePath()}/check-subscription`, { subscriptionID });\n }\n\n updateSubscription(subscription: PushSubscription, subscriptionID: string): Promise> {\n return requestLayer.post(`${this.basePath()}/update-subscription`, { subscription, subscriptionID });\n }\n\n saveEvent(campaignID: string, notificationID: string, event: WebPushNotificationEvent): Promise> {\n return requestLayer.post(`${this.basePath()}/save-event`, { campaignID, notificationID, event });\n }\n}\n","export class ErrorBase extends Error {\n name: T;\n\n message: string;\n\n cause: any;\n\n constructor({ name, message, cause }: { name: T, message: string, cause?: any}) {\n super();\n this.name = name;\n this.message = message;\n this.cause = cause;\n }\n}\n","import { ErrorBase } from './utils/error-base';\n\nexport type SubscriptionErrorName =\n | 'DeviceNotSupported'\n | 'NoVapidKey'\n | 'NoSwRegistration'\n | 'PermissionDenied'\n | 'PermissionDefault'\n\nexport class SubscriptionError extends ErrorBase {}\n","import { StorageHelper } from '@jotforminc/storage-helper';\nimport { ResponseResult } from '@jotforminc/request-layer';\n\nimport { PERMISSION, SUBSCRIPTION_ID_KEY } from './constants';\nimport { ProjectConfig, PushManagerConfig } from './types';\nimport { base64ToArray } from './utils';\nimport Api from './api';\nimport { SubscriptionError } from './SubscriptionError';\n\nexport class PushManager {\n public readonly resourceId: string;\n\n public readonly resourceType: string;\n\n public readonly api: Api;\n\n public subscription: PushSubscription | null;\n\n constructor(config: PushManagerConfig) {\n this.resourceType = config.resourceType;\n this.resourceId = config.resourceId;\n this.subscription = null;\n this.api = new Api(config);\n }\n\n async subscribe(payload?: Record): Promise> {\n if (!PushManager.isSupported()) {\n throw new SubscriptionError({\n name: 'DeviceNotSupported',\n message: 'Device does not support push messaging'\n });\n }\n\n const registration = await window.navigator.serviceWorker.getRegistration();\n\n if (!registration) {\n throw new SubscriptionError({\n name: 'NoSwRegistration',\n message: 'Cannot get service worker registration'\n });\n }\n\n let permission = this.getPermission();\n\n if (permission === PERMISSION.DEFAULT) {\n permission = await Notification.requestPermission();\n }\n\n if (permission === PERMISSION.GRANTED) {\n let vapidPublicKey;\n try {\n const config = await this.api.getConfig() as ProjectConfig;\n vapidPublicKey = config.vapidKey;\n } catch (err) {\n throw new SubscriptionError({\n name: 'NoVapidKey',\n message: 'Can not obtain vapid public key'\n });\n }\n this.subscription = await registration.pushManager.subscribe({\n userVisibleOnly: true,\n applicationServerKey: base64ToArray(vapidPublicKey)\n });\n const subscriptionId = await this.api.postSubscription({\n subscription: this.subscription,\n payload\n }) as string;\n this.persistSubscriptionId(subscriptionId);\n return subscriptionId;\n }\n\n if (permission === PERMISSION.DENIED) {\n // TODO: handle permission deny case\n throw new SubscriptionError({\n name: 'PermissionDenied',\n message: 'Permission denied'\n });\n }\n\n throw new SubscriptionError({\n name: 'PermissionDefault',\n message: 'Permission default'\n });\n }\n\n private persistSubscriptionId(subscriptionId: string) {\n const key = this.subscriptionIdKey();\n StorageHelper.setLocalStorageItem({ key, value: subscriptionId });\n }\n\n get subscriptionId(): string {\n const key = this.subscriptionIdKey();\n return StorageHelper.getLocalStorageItem({ key });\n }\n\n private subscriptionIdKey() {\n return `${SUBSCRIPTION_ID_KEY}-${this.resourceType}-${this.resourceId}`;\n }\n\n public getPermission(): NotificationPermission {\n return Notification.permission;\n }\n\n async isSubscribed(): Promise {\n const subscriptionStatus = await this.checkDeviceSubscription();\n if (subscriptionStatus === false) {\n return false;\n }\n if (this.subscription !== null) {\n return true;\n }\n const subscription = await this.getSubscription();\n return !!subscription;\n }\n\n private async checkDeviceSubscription(): Promise> {\n if (this.subscriptionId === null) {\n return false;\n }\n\n // TODO: consider caching the subscription response\n const status = await this.api.checkSubscription(this.subscriptionId);\n return status;\n }\n\n async getSubscription(): Promise {\n if (this.subscription !== null) {\n return this.subscription;\n }\n const registration = await navigator.serviceWorker.getRegistration();\n if (!registration) return null;\n this.subscription = await registration.pushManager.getSubscription();\n return this.subscription;\n }\n\n static isSupported(): boolean {\n return (\n 'PushManager' in window\n && 'serviceWorker' in navigator\n && 'Notification' in window\n && Object.prototype.hasOwnProperty.call(ServiceWorkerRegistration.prototype, 'showNotification')\n && StorageHelper.isSupported\n );\n }\n}\n","import {\n put, take, select\n} from 'redux-saga/effects';\n\nimport {\n ADD_PORTAL_ITEMS,\n ADD_TO_STACK,\n REDO,\n REMOVE_PORTAL_ITEMS,\n UNDO,\n UPDATE_PORTAL,\n UPDATE_ITEM_PROP,\n RESET_STACK,\n UPDATE_ORDER,\n UPDATE_MULTIPLE_ITEM,\n ADD_NEW_PAGE,\n DELETE_PAGE,\n DUPLICATE_ITEM\n} from '../actionTypes';\nimport {\n addPortalItemAction,\n changeOrderAction,\n removePortalItems, trackEventAction,\n updateItemPropAction,\n updatePortalAction,\n updateMultipleItemAction,\n deletePageAction, addNewPageAction\n} from '../actionCreators';\nimport SELECTORS from '../selectors';\nimport { ITEM_ADDITION_ORDER_STRATEGY } from '../../constants';\n\nconst ACTION_DEFINITIONS = {\n 'ADD_PORTAL_ITEMS/REQUEST': 'itemsAdded',\n 'REMOVE_PORTAL_ITEMS/REQUEST': 'itemsRemoved',\n 'UPDATE_PORTAL/UNDOABLE': 'appUpdated',\n 'UPDATE_ITEM_PROP/UNDOABLE': 'itemUpdated',\n 'UPDATE_ORDER/UNDOABLE': 'itemOrdersUpdated',\n 'UPDATE_MULTIPLE_ITEM/UNDOABLE': 'multipleItemsUpdated',\n 'ADD_NEW_PAGE/UNDOABLE': 'newPageAdded',\n 'DELETE_PAGE/UNDOABLE': 'pageDeleted'\n};\n\nfunction generateCommand(requestAction, successAction) {\n const { type: requestType, payload: requestPayload } = requestAction;\n const { type: successType, payload: successPayload, currentData } = successAction;\n let undoAction;\n switch (successType) {\n case ADD_PORTAL_ITEMS.SUCCESS:\n const addedItemIDs = successPayload.map(i => i.id);\n undoAction = removePortalItems(addedItemIDs);\n break;\n case REMOVE_PORTAL_ITEMS.SUCCESS:\n const { itemIDs: removingPortalItems } = requestPayload;\n const location = currentData.length && currentData[0] ? currentData[0].portalOrder : ITEM_ADDITION_ORDER_STRATEGY.TO_END_OF_THE_PAGE;\n // for now first location is enough, if it is not enough collect every undo action seperately\n undoAction = {\n ...addPortalItemAction(removingPortalItems.map(removingItemID => currentData.find(({ id }) => id === removingItemID)),\n location),\n isUndo: true\n };\n break;\n case UPDATE_PORTAL.SUCCESS:\n const ignoreProps = ['appVersion'];\n const undoProps = Object.keys(currentData).filter(prop => !ignoreProps.includes(prop)).reduce((pre, next) => {\n return { ...pre, [next]: currentData[next] };\n }, {});\n undoAction = updatePortalAction(undoProps);\n break;\n case UPDATE_ITEM_PROP.SUCCESS:\n const { itemID } = requestPayload;\n const props = Object.keys(currentData).reduce((pre, next) => {\n return { ...pre, [next]: currentData[next] };\n }, {});\n undoAction = updateItemPropAction({\n itemID,\n prop: {\n ...props\n }\n });\n break;\n case UPDATE_ORDER.SUCCESS:\n undoAction = changeOrderAction({ allItems: currentData });\n break;\n case UPDATE_MULTIPLE_ITEM.SUCCESS:\n undoAction = updateMultipleItemAction(currentData);\n break;\n case ADD_NEW_PAGE.SUCCESS:\n const { pageID: addedID } = successPayload;\n const { deleteItems = false } = requestPayload || {};\n undoAction = deletePageAction(addedID, deleteItems);\n break;\n case DELETE_PAGE.SUCCESS:\n const { pageID, deleteItems: _deleteItems } = requestPayload;\n const pageToAdd = currentData.pages.find(_page => _page.id === pageID);\n const requestData = { pages: pageToAdd, newPageOrder: pageToAdd.pageOrder };\n if (_deleteItems) {\n const deletedItems = currentData.items.filter(item => item.page === pageID);\n requestData.items = deletedItems;\n } else {\n requestData.items = currentData.items;\n }\n undoAction = addNewPageAction(requestData);\n break;\n default:\n throw new Error('Unknown Action: Can not create undo action', successType);\n }\n\n return {\n undoAction: { ...undoAction, dontStack: true },\n redoAction: { type: requestType, payload: requestPayload, dontStack: true }\n };\n}\n\nfunction* addToStack(action) {\n const { requestAction, dontStack = false } = action;\n if (dontStack) {\n return;\n }\n try {\n const command = generateCommand(requestAction, action);\n const hasRedo = yield select(SELECTORS.hasRedoSelector);\n if (hasRedo) {\n yield put({ type: RESET_STACK });\n }\n yield put({ type: ADD_TO_STACK, payload: { command } });\n } catch (e) {\n console.warn('Action couldn\\'t added to undo stack!', e);\n }\n}\n\n// Takes care of the stack\nexport function* watchUndoableActions() {\n const actionsToTrack = [\n REMOVE_PORTAL_ITEMS,\n ADD_PORTAL_ITEMS,\n UPDATE_PORTAL,\n UPDATE_ITEM_PROP,\n UPDATE_ORDER,\n UPDATE_MULTIPLE_ITEM,\n ADD_NEW_PAGE,\n DELETE_PAGE,\n DUPLICATE_ITEM\n ].map(a => a.SUCCESS); // Listen success actions so there wont be any undo for an operation hasn't done yet at any time.. Also we have the genuine ids..\n while (true) {\n const undoable = yield take(props => {\n const { type, requestAction: { dontStack = false } = {} } = props;\n return actionsToTrack.includes(type) && !dontStack;\n });\n yield addToStack(undoable);\n }\n}\n\nfunction* doUndo() {\n const currentHeadPosition = yield select(SELECTORS.getUndoStackHeadSelector);\n const actionToHandleIdx = currentHeadPosition + 1; // prev value\n const { undoAction } = yield select(SELECTORS.getCommandSelector(actionToHandleIdx));\n const { type } = undoAction;\n yield put(trackEventAction({\n action: 'undoAction',\n target: { action: ACTION_DEFINITIONS[type] }\n }));\n yield put(undoAction);\n}\n\nfunction* doRedo() {\n const currentHeadPosition = yield select(SELECTORS.getUndoStackHeadSelector);\n const { redoAction } = yield select(SELECTORS.getCommandSelector(currentHeadPosition));\n const { type } = redoAction;\n yield put(trackEventAction({\n action: 'redoAction',\n target: { action: ACTION_DEFINITIONS[type] }\n }));\n yield put(redoAction);\n}\n\n// Takes care of the head\nexport function* watchUndoRedoActions() {\n while (true) {\n const action = yield take(({ type }) => [UNDO, REDO].includes(type));\n const worker = action.type === UNDO ? doUndo : doRedo;\n yield worker(action);\n }\n}\n","// A/B Test: ctAppNameIconModal\nimport { StorageHelper } from '@jotforminc/storage-helper';\n\nexport const abTestUrlParam = 'ctanim';\nconst key = 'appNameIconModalSeen';\n\nexport const getHasAbTestParam = () => {\n const searchParams = new URLSearchParams(window.location.search);\n return searchParams.has(abTestUrlParam);\n};\n\nconst getSeenList = () => {\n const seenListJSON = StorageHelper.getLocalStorageItem({ key });\n return JSON.parse(seenListJSON) || [];\n};\n\nexport const getIsModalSeen = appID => {\n if (getHasAbTestParam()) return false;\n return getSeenList()?.includes(appID);\n};\n\nexport const setIsModalSeen = appID => {\n const currentList = getSeenList();\n const nextSeenList = currentList.includes(appID) ? currentList : [...currentList, appID];\n const value = JSON.stringify(nextSeenList);\n StorageHelper.setLocalStorageItem({ key, value });\n};\n","import {\n call, put, select, takeEvery\n} from 'redux-saga/effects';\nimport { ABTestManager, ActionManager } from '@jotforminc/abtest-manager';\nimport { StorageHelper } from '@jotforminc/storage-helper';\nimport range from 'lodash/range';\nimport { navigate } from '@reach/router';\nimport SELECTORS from '../selectors';\nimport * as ACTION_TYPES from '../actionTypes';\nimport * as ACTION_CREATORS from '../actionCreators';\nimport {\n APP_MODES, UI_PROPS, ADD_ELELEMT_PULSE_EFFECT_LC_ST_KEY\n} from '../../constants';\nimport { isYes } from '../../utils';\nimport { generateAppURL } from '../../utils/navigation';\nimport { RightPanelModes } from '../../modules/Builder/components/HomePage/constants';\nimport { FEATURE_NAMES } from '../../constants/features';\nimport { isFeatureEnabled } from '../../utils/features/helper';\nimport { MODALS } from '../../constants/modals';\nimport { abTestActionLoggerSingleton, AB_TEST_NAMES } from '../../utils/AbTestActionLoggerSingleton';\nimport { getHasAbTestParam, getIsModalSeen } from '../../modules/Builder/components/Modals/AppNameIconSettingsModal/seenManager';\n\nfunction* closeUIPanelsIfOpen() {\n const isRightPanelOpen = yield select(SELECTORS.isRightPanelOpenSelector);\n const isLeftPanelOpen = yield select(SELECTORS.isLeftPanelOpenSelector);\n if (isRightPanelOpen) {\n yield put(ACTION_CREATORS.toggleRightPanelAction(false));\n }\n if (isLeftPanelOpen) {\n yield put(ACTION_CREATORS.toggleLeftPanelAction(false));\n }\n}\n\nfunction* handleAppLocation() {\n const pathName = yield select(SELECTORS.getAppLocation);\n const appID = yield select(SELECTORS.getAppID);\n\n if (!(pathName.includes('/sentbox'))) { return; } // return if path is no sentbox\n\n const {\n loginable, assigneeProtected, ssoProtected, organizationAccess, requireLogin\n } = yield select(SELECTORS.getAppInfoWithDefaults);\n\n let isAppLoginable = isYes(loginable);\n if (window.JOTFORM_ENV === 'ENTERPRISE') {\n const isAppPrivate = isYes(assigneeProtected) || isYes(ssoProtected) || !!organizationAccess;\n const isAppRequireLogin = isYes(requireLogin);\n isAppLoginable = isAppPrivate || isAppRequireLogin;\n }\n\n // Dont show submissions if app is not Loginable\n if (!isAppLoginable) {\n return navigate(generateAppURL({ appID }));\n }\n}\n\nexport function* watchUIupdates(props) {\n const { type, payload } = props;\n const appMode = yield select(SELECTORS.getAppModeSelector);\n\n if (appMode === APP_MODES.public) {\n switch (type) {\n case ACTION_TYPES.SET_APP_LOCATION:\n yield handleAppLocation();\n return;\n default:\n return;\n }\n }\n\n if (type === ACTION_TYPES.SELECT_PORTAL_ITEM && payload) {\n const pageID = yield select(SELECTORS.getPageIDByItemID(payload));\n yield put(ACTION_CREATORS.updateLastInteractedPageIDAction(pageID || ''));\n } else if (type === ACTION_TYPES.SELECT_PAGES && payload) {\n yield put(ACTION_CREATORS.updateLastInteractedPageIDAction(payload));\n yield put(ACTION_CREATORS.setRightPanelModeAction(RightPanelModes.PAGE_SETTINGS));\n }\n\n const isAppCoverCropperActive = yield select(SELECTORS.getAppCoverCropState);\n const isAppHeaderCropperActive = yield select(SELECTORS.getAppHeaderCropState);\n\n if ((/.*(APP_COVER|APP_HEADER)/.test(type)) && payload) {\n yield closeUIPanelsIfOpen();\n }\n\n if (!isAppCoverCropperActive && !isAppHeaderCropperActive) { return; }\n\n if (/(.*TOGGLE)(.*PANEL)/.test(type) && !payload) { return; }\n\n if (/(.*SET_STAGE_CLICK)/.test(type)) { return; }\n\n if (isAppHeaderCropperActive && !(/.*(APP_HEADER)/.test(type)) && !(/.*(APP_HEADER)/.test(payload))) yield put({ type: ACTION_TYPES.SET_APP_HEADER_CROP_MODE, payload: false });\n if (isAppCoverCropperActive && !(/.*(APP_COVER|APP_HEADER|API_REQUEST)/.test(type))) yield put({ type: ACTION_TYPES.SET_APP_COVER_CROP_MODE, payload: false });\n}\n\nfunction* watchRightPanelActions({ payload: isRightPanelOpen }) {\n const shouldSqueeze = yield select(SELECTORS.shouldSqueezeSelector);\n const isLeftPanelOpen = yield select(SELECTORS.isLeftPanelOpenSelector);\n const isLivePreviewOn = yield select(SELECTORS.getIsLivePreviewOn);\n if (shouldSqueeze && isRightPanelOpen && isLeftPanelOpen) {\n yield put(ACTION_CREATORS.toggleLeftPanelAction(false));\n }\n\n if (isLivePreviewOn) {\n const shouldOpen = shouldSqueeze ? !isRightPanelOpen && !isLeftPanelOpen : !isRightPanelOpen;\n yield put(ACTION_CREATORS.togglePreviewPanelAction(shouldOpen));\n }\n\n const isShoppingApp = yield select(SELECTORS.getIsShoppingApp);\n const activeProductInfo = yield select(SELECTORS.getActiveProduct);\n const hasActiveProduct = !!activeProductInfo?.productID;\n if (isFeatureEnabled(FEATURE_NAMES.ProductList) && isShoppingApp && !isRightPanelOpen && hasActiveProduct) {\n yield put(ACTION_CREATORS.setActiveProduct('', ''));\n }\n}\n\nfunction* watchLeftPanelActions({ payload: isLeftPanelOpen }) {\n const shouldSqueeze = yield select(SELECTORS.shouldSqueezeSelector);\n const isRightPanelOpen = yield select(SELECTORS.isRightPanelOpenSelector);\n const isLivePreviewOn = yield select(SELECTORS.getIsLivePreviewOn);\n if (shouldSqueeze && isRightPanelOpen && isLeftPanelOpen) {\n yield put(ACTION_CREATORS.toggleRightPanelAction(false));\n }\n\n if (isLivePreviewOn && shouldSqueeze) {\n yield put(ACTION_CREATORS.togglePreviewPanelAction(!isRightPanelOpen && !isLeftPanelOpen));\n }\n\n if (isLeftPanelOpen) {\n yield put(ACTION_CREATORS.trackEventAction({ action: 'leftPanelOpened' }));\n }\n}\n\nfunction* watchLivePreviewActions({ payload: isLivePreviewOn }) {\n const shouldSqueeze = yield select(SELECTORS.shouldSqueezeSelector);\n\n if (isLivePreviewOn) {\n yield put(ACTION_CREATORS.toggleRightPanelAction(false));\n if (shouldSqueeze) {\n yield put(ACTION_CREATORS.toggleLeftPanelAction(false));\n }\n }\n}\n\nexport function* watchUIPanelsChanges() {\n yield takeEvery(ACTION_TYPES.TOGGLE_RIGHT_PANEL, watchRightPanelActions);\n yield takeEvery(ACTION_TYPES.TOGGLE_LEFT_PANEL, watchLeftPanelActions);\n yield takeEvery(ACTION_TYPES.TOGGLE_LIVE_PREVIEW, watchLivePreviewActions);\n}\n\nexport function* watchWindowSqueeze({ payload: shouldSqueeze }) {\n const isLeftPanelOpen = yield select(SELECTORS.isLeftPanelOpenSelector);\n const isRightPanelOpen = yield select(SELECTORS.isRightPanelOpenSelector);\n if (shouldSqueeze && isLeftPanelOpen && isRightPanelOpen) {\n yield put(ACTION_CREATORS.toggleLeftPanelAction(false));\n }\n}\n\nexport function* keepClosedUIPanels() {\n // cases left and right panel should be closed\n // TODO: handle ui panels in another way\n yield takeEvery([ACTION_TYPES.APP_PREVIEW_STATUS], closeUIPanelsIfOpen);\n}\n\nexport function* watchMultipleSelection({ payload: { withRange, withMouse } }) {\n const selectedItems = yield select(SELECTORS.getSelectedMultipleItems);\n const appItems = yield select(SELECTORS.getPortalItems);\n const isMobileMultipleSelectMode = yield select(SELECTORS.getMobileMultipleSelectionMode);\n\n const isRightPanelOpen = yield select(SELECTORS.isRightPanelOpenSelector);\n\n const isThereAnySelectedItem = selectedItems.length > 0;\n\n // close right panel when any items are not selected\n if (!isThereAnySelectedItem && isRightPanelOpen) {\n yield put(ACTION_CREATORS.toggleRightPanelAction(false));\n }\n\n if (!isThereAnySelectedItem && isMobileMultipleSelectMode) {\n yield put(ACTION_CREATORS.toggleMultipleSelectionModeAction(false));\n }\n\n if (withRange && selectedItems.length >= 2 && !withMouse) {\n const rangeEnd = selectedItems[selectedItems.length - 1];\n const rangeStart = selectedItems[selectedItems.length - 2];\n\n const rangePortalOrders = appItems.filter(item => [rangeEnd, rangeStart].includes(item?.id)).map(el => el?.portalOrder);\n\n const portalOrderRange = range(Math.min(...rangePortalOrders), Math.max(...rangePortalOrders) + 1);\n\n const willBeSelectedAppItems = appItems.filter(item => portalOrderRange.includes(parseInt(item?.portalOrder, 10))).map(el => el?.id);\n\n //! prevent selection of app header on multiple selection mode\n // eslint-disable-next-line max-len\n yield put(ACTION_CREATORS.selectMultipleItemAction({ selection: Array.from(new Set([...selectedItems, ...willBeSelectedAppItems])), withMouse: true }));\n }\n}\n\nexport function* watchSelectAllItems() {\n const allItems = yield select(SELECTORS.getPortalItems);\n const itemIDs = allItems.map(i => i.id);\n yield put(ACTION_CREATORS.selectMultipleItemAction({ selection: itemIDs, withMouse: true }));\n}\n\n// A/B Test: ctAppNameIconModal\n// note: this a/b test distributed from backend with the name ctAppNameIconModalTwo\nexport function* initAppNameIconModalAbTest() {\n const user = yield select(SELECTORS.getUser);\n const appID = yield select(SELECTORS.getAppID);\n const isBuilder = yield select(SELECTORS.getIsBuilder);\n const isModalAvailable = yield select(SELECTORS.getAppNameIconSettingsModalAvailable);\n const hasUrlParam = getHasAbTestParam();\n const actionManager = new ActionManager({ user, projectName: AB_TEST_NAMES.CT_APP_NAME_ICON_MODAL_TWO });\n\n abTestActionLoggerSingleton[AB_TEST_NAMES.CT_APP_NAME_ICON_MODAL_TWO] = actionManager.registerJotformAction;\n\n const showModal = (isModalAvailable || hasUrlParam) && isBuilder && !getIsModalSeen(appID);\n\n if (showModal) {\n yield put(ACTION_CREATORS.showGenericModalAction({ name: MODALS.APP_NAME_ICON_SETTING_MODAL }));\n }\n}\n\nexport function* initAppElementPanelAbTest() {\n const apps = yield select(SELECTORS.getAllApps);\n const user = yield select(SELECTORS.getUser);\n const firstTimeAppCreation = apps.length === 1;\n\n const abTestManager = new ABTestManager({\n user,\n isTestEnabled: true,\n testName: AB_TEST_NAMES.ELEMENT_PANEL_VISIBILITY,\n controlVariantCode: '17121',\n testVariantCode: '17131',\n urlParam: 'aepdfv',\n customUserChecks: {\n firstTimeAppCreation\n }\n // debugMode: {\n // logTestState: true,\n // forceTestVariant: true\n // }\n });\n\n const isTestVariant = yield call(abTestManager.isTestVariant.bind(abTestManager));\n abTestActionLoggerSingleton[AB_TEST_NAMES.ELEMENT_PANEL_VISIBILITY] = abTestManager.registerABTestAction;\n\n if (isTestVariant) {\n yield put(ACTION_CREATORS.toggleLeftPanelAction(true));\n }\n}\n\nexport function* checkAddElementPulseVisible() {\n const isBuilder = yield select(SELECTORS.getIsBuilder);\n if (!isBuilder) return;\n const pulseStorage = StorageHelper.getLocalStorageItem({ key: ADD_ELELEMT_PULSE_EFFECT_LC_ST_KEY });\n if (!pulseStorage) {\n yield put(ACTION_CREATORS.setUIProp(UI_PROPS.addElementButtonPulseVisible, true));\n }\n}\n","import Styled from 'styled-components';\nimport { mainFont } from '../../styles/global';\n\nconst ScToast = Styled.div`\n display: flex;\n align-items: center;\n line-height: 1.6;\n font-size: 14px;\n cursor: default;\n font-family: ${mainFont};\n padding: 16px;\n\n .icon {\n flex: 0 0 auto;\n margin-right: 20px;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n\n .context {\n flex: 1 1 100%;\n color: #fff;\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n\n .message {\n flex: 1 1 100%;\n }\n\n .description {\n flex: 1 1 100%;\n font-size: 12px;\n color: #6F76A7;\n display: block;\n\n @media screen and (max-width: 480px) {\n display: none;\n }\n }\n }\n`;\n\nexport default ScToast;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { string, func, bool } from 'prop-types';\nimport { t } from '@jotforminc/translation';\nimport { Button } from '@jotforminc/magnet';\nimport { CSSTransition } from 'react-transition-group';\nimport {\n IconCheckCircleFilled, IconXmark, IconInfoCircleFilled, IconExclamationTriangleFilled\n} from '@jotforminc/svg-icons';\nimport ScToast from './ScToast';\n\nconst ICON_MAP = {\n notification: () => ,\n warning: () => ,\n success: () => ,\n error: () => ,\n default: () => \n};\n\n// todo :: get icon type from constant, not string\n\nconst Notification = ({\n message,\n description,\n type,\n buttonText,\n onButtonClick,\n backdrop\n}) => {\n const Icon = ICON_MAP[type] || ICON_MAP.default;\n\n return (\n <>\n { backdrop && ReactDOM.createPortal(\n \n
    \n , document.getElementById('toast-root')\n )}\n \n
    \n
    \n
    {t(message)}
    \n { description && (
    {t(description)}
    ) }\n
    \n { buttonText && (\n \n {t(buttonText)}\n \n )}\n { 1 && (\n \n )}\n
    \n \n );\n};\n\nNotification.propTypes = {\n message: string,\n description: string,\n type: string,\n buttonText: string,\n onButtonClick: func,\n backdrop: bool\n};\n\nNotification.defaultProps = {\n message: '',\n type: 'default',\n buttonText: '',\n description: '',\n onButtonClick: f => f,\n backdrop: false\n};\n\nexport default Notification;\n","import { checkMacOSx } from '../../../utils';\n\nexport const getUndoRedoBindings = () => {\n const isMacOSx = checkMacOSx();\n const metaKey = isMacOSx ? 'command' : 'ctrl';\n return [\n `${metaKey} + z`,\n isMacOSx ? `${metaKey} + shift + z` : `${metaKey} + y`\n ];\n};\n","import React from 'react';\nimport { string } from 'prop-types';\nimport { useDispatch } from 'react-redux';\nimport { t } from '@jotforminc/translation';\n\nimport Notification from './Notification';\nimport { undoAction } from '../../store/actionCreators';\nimport { getUndoRedoBindings } from '../../modules/Builder/constants/undoRedo';\nimport { checkMobileOrTablet } from '../../utils';\n\nconst UndoNotification = ({ message }) => {\n const dispatch = useDispatch();\n const isDesktop = !checkMobileOrTablet();\n\n const onUndoClick = () => dispatch(undoAction());\n const [undoBinding] = getUndoRedoBindings();\n return (\n \n );\n};\n\nUndoNotification.propTypes = {\n message: string.isRequired\n};\n\nexport default UndoNotification;\n","import React from 'react';\nimport { take } from 'redux-saga/effects';\nimport { toast } from 'react-toastify';\nimport Notification from '../../components/Toaster/Notification';\nimport UndoNotification from '../../components/Toaster/UndoNotification';\nimport { TOAST } from '../actionTypes';\n\nconst toastIt = ({ payload, type }) => {\n const { backdrop, options: _options } = payload;\n\n let options = { autoClose: 3e3, ..._options };\n\n if (backdrop) {\n options = {\n autoClose: false,\n closeOnClick: false,\n draggable: false\n };\n }\n\n let NotificationComponent;\n\n switch (type) {\n case TOAST.UNDO_NOTIFICATION:\n NotificationComponent = UndoNotification;\n break;\n default:\n NotificationComponent = Notification;\n break;\n }\n\n toast(, options);\n};\n\nexport function* watchToastActions() {\n while (true) {\n const action = yield take(({ type }) => type.startsWith('@TOAST'));\n toastIt(action);\n }\n}\n","import { put, select, take } from 'redux-saga/effects';\nimport { toast } from 'react-toastify';\nimport { TOGGLE_NETWORK_STATUS } from '../actionTypes';\nimport SELECTORS from '../selectors';\nimport { APP_MODES } from '../../constants';\nimport { toastAction } from '../actionCreators';\n\nfunction* toastIt({ payload: status }) {\n const appMode = yield select(SELECTORS.getAppModeSelector);\n if (appMode !== APP_MODES.builder) return;\n const message = status ? 'You\\'re back online!' : 'Internet connection is lost, you\\'ll be able to continue when you restore the connection.';\n if (status) {\n toast.dismiss();\n }\n yield put(toastAction({\n message,\n type: status ? 'success' : 'warning',\n backdrop: !status\n }));\n}\n\nexport function* watchNetworkStatus() {\n while (true) {\n const action = yield take(TOGGLE_NETWORK_STATUS);\n yield toastIt(action);\n }\n}\n","import { put, select } from 'redux-saga/effects';\nimport { addPortalItemAction, trackEventAction } from '../actionCreators';\nimport SELECTORS from '../selectors';\nimport { ITEM_TYPES } from '../../constants/itemTypes';\nimport { ITEM_ADDITION_ORDER_STRATEGY } from '../../constants';\n\nexport function* watchItemDuplication() {\n const selectedItems = yield select(SELECTORS.getSelectedMultipleItems);\n const selectedItemsProps = (yield select(SELECTORS.getSelectedPortalItemsWithInfo))\n .filter(item => item.type !== ITEM_TYPES.FORM); // Currently, forms can't be duplicated\n\n if (selectedItemsProps.length === 1) {\n const [selectedItem] = selectedItemsProps;\n const {\n portalOrder, id,\n ...rest\n } = selectedItem;\n\n const orderFreeItemProps = { ...rest };\n\n const newPortalOrder = parseInt(portalOrder, 10) + 1;\n\n yield put(addPortalItemAction([orderFreeItemProps], newPortalOrder, true, true));\n } else {\n const duplicatedItems = selectedItemsProps.reduce((prev, item, index) => {\n const { id, portalOrder, ...rest } = item;\n return [\n ...prev,\n { ...rest, portalOrder: parseInt(portalOrder, 10) + index + 1 }\n ];\n }, []);\n\n yield put(addPortalItemAction(duplicatedItems, ITEM_ADDITION_ORDER_STRATEGY.MULTIPLE_ITEM_DUPLICATION, true, true));\n }\n yield put(trackEventAction({ action: 'itemsDuplicated', target: { count: selectedItems.length } }));\n}\n","/* eslint-disable camelcase */\nimport { put, select, call } from 'redux-saga/effects';\nimport { UPDATE_PORTAL } from '../actionTypes';\nimport SELECTORS from '../selectors';\nimport { APP_MODES } from '../../constants';\nimport {\n calculateDoneItemCount, setDoneItemCount, setIsAppDone, setTodoItemCount\n} from '../actionCreators';\n\nimport { restartProgressManually } from '../../modules/api';\nimport { getFormCompletion } from '../../utils';\n\nexport function* watchDoneItemProgress() {\n const appMode = yield select(SELECTORS.getAppModeSelector);\n if (appMode !== APP_MODES.public) return;\n\n const todoItems = yield select(SELECTORS.getTodoItems);\n const { progressManualRestartDate } = yield select(SELECTORS.getPortalInfoSelector);\n const { time_zone: timeZone } = yield select(SELECTORS.getUser);\n const completedTodoItems = todoItems.filter(item => {\n const {\n lastSubmitted,\n completed_showBadge,\n completed_clearBadgeOn,\n completed_clearBadgePeriod,\n required_showBadge\n } = item;\n\n return getFormCompletion({\n lastSubmitted,\n showBadge: completed_showBadge,\n clearBadgeOn: completed_clearBadgeOn,\n clearBadgePeriod: completed_clearBadgePeriod,\n required_showBadge,\n timeZone,\n progressRestartDate: progressManualRestartDate\n });\n });\n yield put(setDoneItemCount(completedTodoItems.length));\n\n if (completedTodoItems.length === todoItems.length) {\n yield put(setIsAppDone(true));\n }\n\n const { isAppDone } = yield select(SELECTORS.getTodoItemsProgress);\n\n if (isAppDone && (completedTodoItems.length !== todoItems.length)) {\n yield put(setIsAppDone(false));\n }\n}\n\nexport function* watchTodoItemProgress() {\n const todoItems = yield select(SELECTORS.getTodoItems);\n yield put(setTodoItemCount(todoItems.length));\n}\n\nexport function* watchRestartProgress() {\n const portalID = yield select(SELECTORS.getPortalIDSelector);\n try {\n const { progressManualRestartDate } = yield call(restartProgressManually, portalID);\n yield put({ type: UPDATE_PORTAL.REQUEST, payload: { progressManualRestartDate } });\n yield put(calculateDoneItemCount());\n } catch (e) {\n console.log('Error on restarting progress: ', e);\n }\n}\n","import { call, put, select } from 'redux-saga/effects';\nimport SELECTORS from '../selectors';\nimport {\n bulkSharePortal, bulkDeleteSharePortal, generateNewResourceShareLink, getShareList\n} from '../../modules/api';\nimport { FETCH_SHARE_LIST, UPDATE_RESOURCE_SHARE_URL } from '../actionTypes';\nimport { trackEventAction } from '../actionCreators';\n\nexport function* watchFetchShareList() {\n const portalID = yield select(SELECTORS.getPortalIDSelector);\n const shareList = yield call(getShareList, portalID);\n yield put({ type: FETCH_SHARE_LIST.SUCCESS, payload: shareList });\n}\n\nexport function* watchSharePortal({ payload: { emails, message } }) {\n const portalID = yield select(SELECTORS.getPortalIDSelector);\n yield call(bulkSharePortal, portalID, emails, message);\n yield put(trackEventAction({ action: 'appShared', target: { count: emails.length } }));\n yield put({ type: FETCH_SHARE_LIST.REQUEST });\n}\n\nexport function* watchShareDeletePortal({ payload: { resourceShareIDList } }) {\n yield call(bulkDeleteSharePortal, resourceShareIDList);\n yield put(trackEventAction({ action: 'appUnshared', target: { count: resourceShareIDList.length } }));\n yield put({ type: FETCH_SHARE_LIST.REQUEST });\n}\n\nexport function* watchResourceShareURLUpdate() {\n const portalID = yield select(SELECTORS.getPortalIDSelector);\n const resourceShareURL = yield call(generateNewResourceShareLink, portalID);\n yield put(trackEventAction({ action: 'resourceShareURLGenerated' }));\n yield put({ type: UPDATE_RESOURCE_SHARE_URL.SUCCESS, payload: resourceShareURL });\n}\n","import {\n take, call, put, select\n} from 'redux-saga/effects';\nimport { APPLY_COLOR_SCHEME_TO_APP, APPLY_COLOR_SCHEME_TO_ITEM } from '../actionTypes';\nimport { updateItemPropAction, updateMultipleItemAction, updatePortalAction } from '../actionCreators';\nimport {\n BUTTON_STYLING_LIST, getAppStylingColors, getColoredPropertiesBySchemeID, getItemStylingColors, ITEM_STYLING_LIST\n} from '../../properties/styling';\nimport SELECTORS from '../selectors';\n\nfunction* applyColorSchemeToApp(action) {\n const { payload } = action;\n const { schemeID } = payload;\n const appColors = getAppStylingColors(schemeID);\n const itemOverridingColors = getItemStylingColors(ITEM_STYLING_LIST, schemeID);\n const buttonOverridingColors = getItemStylingColors(BUTTON_STYLING_LIST, schemeID);\n const allItems = yield select(SELECTORS.getPortalItems);\n const version = yield select(SELECTORS.getAppVersionSelector);\n const { itemsToChange: properties } = getColoredPropertiesBySchemeID(allItems, schemeID, version);\n\n yield put(updatePortalAction({ ...appColors, overridingItemProps: JSON.stringify({ itemColors: itemOverridingColors, buttonColors: buttonOverridingColors }) }));\n if (allItems.length) yield put(updateMultipleItemAction(properties));\n}\n\nfunction* applyColorSchemeToItem(action) {\n const { payload } = action;\n const { schemeID, itemID, colorList } = payload;\n const itemColors = getItemStylingColors(colorList, schemeID);\n yield put(updateItemPropAction({ itemID, prop: { ...itemColors } }));\n}\n\nexport function* watchStylingActions() {\n while (true) {\n const action = yield take([\n APPLY_COLOR_SCHEME_TO_APP,\n APPLY_COLOR_SCHEME_TO_ITEM\n ]);\n const { type } = action;\n switch (type) {\n case APPLY_COLOR_SCHEME_TO_APP:\n yield call(applyColorSchemeToApp, action);\n break;\n case APPLY_COLOR_SCHEME_TO_ITEM:\n yield call(applyColorSchemeToItem, action);\n break;\n default:\n break;\n }\n }\n}\n","import { put, select } from 'redux-saga/effects';\nimport { navigate } from '@reach/router';\nimport SELECTORS from '../selectors';\nimport { toastAction } from '../actionCreators';\nimport { generateAppURL } from '../../utils/navigation';\nimport { isYes } from '../../utils';\n\nconst sessionStorageKey = 'progressBarAvailabiltyNotification';\n\nexport function* watchProgressBarAvailability() {\n const appID = yield select(SELECTORS.getPortalIDSelector);\n const requiredAppItems = yield select(SELECTORS.getTodoItems);\n const { showProgressBar } = yield select(SELECTORS.getAppInfoWithDefaults);\n if (requiredAppItems.length >= 2 && !isYes(showProgressBar)) {\n if (!window.sessionStorage.getItem(sessionStorageKey)) {\n yield put(toastAction({\n message: 'You can now enable Progress Bar on the app',\n buttonText: 'Go to Settings',\n onButtonClick: () => {\n const settingsURL = `${generateAppURL({ forBuilder: true, appID })}/settings`;\n navigate(settingsURL);\n }\n }));\n window.sessionStorage.setItem(sessionStorageKey, true);\n }\n }\n}\n","import {\n all,\n call, put, select\n} from 'redux-saga/effects';\nimport { t } from '@jotforminc/translation';\nimport { arrayMoveImmutable } from 'array-move';\nimport omitBy from 'lodash/omitBy';\nimport isNil from 'lodash/isNil';\n\nimport isEmpty from 'lodash/isEmpty';\nimport {\n ADD_NEW_PAGE, CHANGE_PAGE_ORDER, DELETE_PAGE, UPDATE_PAGE, UPDATE_MULTIPLE_ITEM\n} from '../actionTypes';\nimport SELECTORS from '../selectors';\nimport * as API from '../../modules/api';\nimport {\n selectPageAction, updateLastInteractedPageIDAction, updatePageAction, trackEventAction, updateMultipleItemAction, undoableToastAction, toggleRightPanelAction\n} from '../actionCreators';\nimport { DATA_SOURCE_ITEMS, ITEM_TYPES } from '../../constants/itemTypes';\nimport { isPageHomepage } from '../../modules/PublicApp/utils';\nimport { BUTTON_ROLE_TYPES } from '../../modules/Builder/components/HomePage/RightPanel/ButtonActions/buttonRoleTypes';\nimport { usePageDefaults } from '../../properties';\nimport { FEATURE_NAMES } from '../../constants/features';\nimport { isFeatureEnabled } from '../../utils/features/helper';\nimport { sanitizeSVGIconURLs } from '../utils';\nimport * as ACTION_CREATORS from '../actionCreators';\nimport { APP_PREVIEW_STATES } from '../../constants';\nimport { DELETE_PAGE_TYPES } from '../../modules/Builder/components/HomePage/constants';\n\nexport function* pageActions(action) {\n const { type, payload = {}, dontStack = false } = action;\n const portalID = yield select(SELECTORS.getPortalIDSelector);\n switch (type) {\n case ADD_NEW_PAGE.UNDOABLE:\n const pageDefaults = usePageDefaults();\n const pages = yield select(SELECTORS.getPages);\n const {\n items,\n pages: oldPage = {},\n newPageOrder,\n dontSelect = false,\n name = '',\n pageType,\n detailPageProps = {},\n pageProps\n } = payload;\n\n const { linkedItemID = undefined } = detailPageProps;\n\n // BUGFIX #3828720 :: App should restore the old page settings when user undos the page deletion.\n const oldPageProps = {\n name: oldPage.name, pageIcon: oldPage.pageIcon, showPageIcon: oldPage.showPageIcon, showPageOnNavigation: oldPage.showPageOnNavigation, linkedItemID: oldPage.linkedItemID\n };\n const cleanOldPageProps = omitBy(oldPageProps, isNil); // This line removes the undefined and null fields just in case.\n\n const tempID = Date.now().toString();\n const pageOrder = newPageOrder || pages.length + 1;\n\n const page = {\n ...isFeatureEnabled(FEATURE_NAMES.MultipageImps) && pageDefaults,\n linkedItemID,\n ...cleanOldPageProps,\n tempID,\n pageOrder,\n name,\n type: pageType,\n ...pageProps\n };\n\n yield put({ type: ADD_NEW_PAGE.REQUEST, payload: { pages: [{ ...page, pageOrder: pageOrder - 1 }] } });\n\n // actual api request\n const result = yield call(API.addPageToPortal, portalID, page);\n // !! (use a shimmer + prevent consecutive request action on UI (areAPIRequestsCompletedSelector) IF NECESSARY)\n yield put({\n type: ADD_NEW_PAGE.SUCCESS,\n payload: result,\n requestAction: action,\n currentData: { page }\n });\n\n const { pageID } = result;\n\n if (!linkedItemID) {\n yield put(ACTION_CREATORS.updateLastInteractedPageIDAction(pageID));\n }\n\n if (items) { // Restoring page with items\n const restoredItems = items.map(item => {\n const id = item.type === ITEM_TYPES.FORM ? item.id : undefined;\n return {\n ...item, page: pageID, id, portalOrder: undefined\n };\n });\n yield put(ACTION_CREATORS.addPortalItemAction(restoredItems));\n }\n\n yield put(trackEventAction({ action: 'pageAdded', target: { id: pageID, order: pageOrder } }));\n if (!dontSelect) {\n yield put(selectPageAction(pageID));\n }\n\n break;\n case UPDATE_PAGE.UNDOABLE:\n const { pageID: updatedID, prop } = payload;\n\n if (prop?.pageIcon) {\n prop.pageIcon = sanitizeSVGIconURLs(prop.pageIcon);\n }\n\n yield put({\n type: UPDATE_PAGE.REQUEST,\n payload\n });\n const updatedProps = yield call(API.updatePage, portalID, updatedID, prop);\n yield put(trackEventAction({ action: 'pageUpdated', target: { id: updatedID, prop } }));\n yield put({\n type: UPDATE_PAGE.SUCCESS,\n payload: updatedProps\n });\n break;\n case DELETE_PAGE.UNDOABLE:\n const {\n deleteItems = false, pageID: removedPageID, type: removeUseType = ''\n } = payload;\n const currentPortalItems = yield select(SELECTORS.getPortalItems);\n const currentPages = yield select(SELECTORS.getPages);\n\n if (deleteItems && currentPages) {\n const removingItems = currentPortalItems.filter(({ page: itemPageID }) => String(itemPageID) === String(removedPageID));\n const removingListItemIDs = removingItems.reduce((acc, { type: itemType, id }) => {\n if (itemType !== ITEM_TYPES.LIST) {\n return acc;\n }\n return [...acc, id];\n }, []);\n\n if (!isEmpty(removingListItemIDs)) {\n const linkedPages = currentPages.filter(p => removingListItemIDs.includes(p?.linkedItemID));\n yield all(\n linkedPages.map(linkedPage => put({ ...ACTION_CREATORS.deletePageAction(linkedPage.id, true, DELETE_PAGE_TYPES.pageItem), dontStack: true }))\n );\n }\n }\n\n if (removeUseType !== 'RIGHT_PANEL') {\n // Close it's right panel\n yield put(toggleRightPanelAction(false));\n }\n\n yield put({ type: DELETE_PAGE.REQUEST, payload: { pageID: removedPageID } });\n yield put(ACTION_CREATORS.setLivePreviewStatus(APP_PREVIEW_STATES.LOADING));\n const response = yield call(API.removePageFromPortal, portalID, removedPageID, deleteItems);\n const {\n pages: newPages,\n items: newItems\n } = response;\n\n // Clear selected and lastInteractedPages\n yield put(updateLastInteractedPageIDAction(''));\n yield put(selectPageAction());\n\n // Removing page may be a buttonValue, lets update them too..\n const buttonsNavigatingToRemovedPage = currentPortalItems.filter(i => i.type === ITEM_TYPES.BUTTON && i.buttonRole === BUTTON_ROLE_TYPES.NAVIGATION && i.buttonValue === removedPageID);\n const updatingButtons = buttonsNavigatingToRemovedPage.map(b => ({\n id: b.id, buttonValue: ''\n }));\n yield put(updateMultipleItemAction(updatingButtons, { dontStack: true }));\n\n const currentData = {\n pages: currentPages,\n items: currentPortalItems\n };\n\n yield put(trackEventAction({ action: 'pageDeleted', target: { id: removedPageID } }));\n yield put({\n type: DELETE_PAGE.SUCCESS,\n payload: {\n items: newItems,\n pages: newPages\n },\n requestAction: action,\n currentData,\n dontStack\n });\n if (!dontStack) {\n yield put(undoableToastAction(t('Page is deleted.')));\n }\n break;\n default:\n break;\n }\n}\n\nexport function* watchHeadingItemToPageNaming(action) {\n const { payload: { itemID, prop: { title, newPage } } } = action;\n if (!title) return; // we need title to change the page name\n\n const headingItem = yield select(SELECTORS.getPortalItemByIDSelector(itemID));\n const currentTitle = headingItem.title;\n const itemPageID = yield select(SELECTORS.getPageIDByItemID(itemID));\n const items = yield select(SELECTORS.getPortalItems);\n\n // pageID may be the page item was moved or the current itemPage\n const pageID = newPage || itemPageID;\n const isHomePage = !pageID || isPageHomepage(pageID); // check the homepage or not\n\n // get the page items\n const pageItems = isHomePage ? [\n ...items.filter(item => !item.page || isPageHomepage(item.page))\n ] : [...items.filter(item => item.page === pageID)];\n\n // get the Heading items that actionable heading item is located\n const pageHeadingItems = pageItems.filter(item => item.type === ITEM_TYPES.HEADING);\n const moreThanOneHeading = pageHeadingItems.length > 1;\n\n // for the other pages\n const page = yield select(SELECTORS.getPageByID(pageID));\n const pageName = page.name;\n const doesCurrentTitleEqualPageName = currentTitle === pageName;\n const shouldChangePageName = !moreThanOneHeading && (!pageName || doesCurrentTitleEqualPageName);\n if (shouldChangePageName) {\n yield put(updatePageAction({ pageID: pageID, prop: { name: title } }));\n }\n}\n\nexport function* watchPageUpdate(action) {\n const { payload } = action;\n const { oldIndex, newIndex: _newIndex, skipDetailPages = false } = payload;\n const pages = yield select(SELECTORS.getPages);\n const items = yield select(SELECTORS.getPortalItems);\n const dsItems = items.filter(({ type }) => DATA_SOURCE_ITEMS.includes(type));\n\n const portalID = yield select(SELECTORS.getPortalIDSelector);\n\n const dsPages = dsItems.reduce((acc, { id: dsItemID, page }) => {\n const detailPageID = pages.find(({ linkedItemID }) => linkedItemID === dsItemID)?.id;\n if (!detailPageID) {\n return acc;\n }\n\n return { ...acc, [page]: [...acc?.[page] ?? [], detailPageID] };\n }, {});\n\n const newIndex = skipDetailPages\n // eslint-disable-next-line func-names\n ? (function () {\n let indx = _newIndex;\n\n if (indx === oldIndex) {\n return indx;\n }\n\n const shouldIncrement = _newIndex > oldIndex;\n while (indx > -1 && indx < pages.length && Object.values(dsPages).flat()?.includes(pages?.[indx]?.id)) {\n if (shouldIncrement) {\n indx++;\n } else {\n indx--;\n }\n }\n\n return indx;\n }())\n : _newIndex;\n\n const movedPages = arrayMoveImmutable(pages, oldIndex, newIndex).map((item, index) => ({ ...item, pageOrder: `${index}` }));\n const movedPagesWithoutDetailPages = movedPages.filter(({ id }) => !Object.values(dsPages).flat().includes(id));\n\n const pageMap = new Map();\n const movedPagesWithDetailPages = [];\n\n // Created a map for quick access\n pages.forEach(page => {\n pageMap.set(page.id, page);\n });\n\n movedPagesWithoutDetailPages.forEach(page => {\n movedPagesWithDetailPages.push(page);\n\n if (dsPages[page.id]) {\n dsPages[page.id].forEach(childPageID => {\n const childPage = pageMap.get(childPageID);\n\n if (childPage) {\n movedPagesWithDetailPages.push(childPage);\n }\n });\n }\n });\n\n const orderedPages = movedPagesWithDetailPages.map((item, index) => ({ ...item, pageOrder: String(index) }));\n\n yield put({ type: CHANGE_PAGE_ORDER.SUCCESS, payload: orderedPages });\n const { reOrderedPortalItems = {} } = yield call(API.bulkUpdatePages, portalID, orderedPages);\n yield put({ type: UPDATE_MULTIPLE_ITEM.SUCCESS, payload: reOrderedPortalItems });\n}\n","import { call, select } from 'redux-saga/effects';\n\nimport SELECTORS from '../selectors';\nimport { getAsset } from '../../modules/Builder/components/AssetGenerator/utils';\nimport { APP_ICON_KEYS, APP_MODES, IMAGE_TYPE } from '../../constants';\nimport * as API from '../../modules/api';\nimport { sanitizeSVGIconURLs } from '../utils';\n\nexport function* handleInstallableAppIcon(updatedProps = {}) {\n const currentApp = yield select(SELECTORS.getAppInfoWithDefaults);\n const isIconUpdating = APP_ICON_KEYS.some(key => updatedProps[key]);\n let iconProps = { ...updatedProps };\n\n if (isIconUpdating) {\n // current app icon values of the app\n const currentValues = APP_ICON_KEYS.reduce((pre, next) => (currentApp[next] ? { ...pre, [next]: currentApp[next] } : pre), {});\n // merged app icon props\n const finalInstallableProps = Object.keys(currentValues).reduce((prev, next) => {\n const nextValue = updatedProps[next] ? updatedProps[next] : currentValues[next];\n return { ...prev, [next]: nextValue };\n }, {});\n\n const asset = yield call(getAsset, finalInstallableProps);\n\n iconProps = { ...iconProps, asset };\n }\n\n if (updatedProps.appIconURL && updatedProps.appIconType === IMAGE_TYPE.icon) {\n iconProps = { ...iconProps, appIconURL: sanitizeSVGIconURLs(updatedProps.appIconURL) };\n }\n if (updatedProps.logoURL && updatedProps.logoType === IMAGE_TYPE.icon) {\n iconProps = { ...iconProps, logoURL: sanitizeSVGIconURLs(updatedProps.logoURL) };\n }\n\n return yield call(API.updateAppLogo, { appID: currentApp.id, iconProps });\n}\n\nexport function* watchInstallableIconBuilderFlow() {\n const appMode = yield select(SELECTORS.getAppModeSelector);\n if (appMode !== APP_MODES.builder) return;\n\n try {\n const { installableIconURL, appIconURL } = yield select(SELECTORS.getAppIconProperties);\n if (!installableIconURL) {\n yield call(handleInstallableAppIcon, { appIconURL });\n }\n } catch (error) {\n console.error(error);\n }\n}\n","/* eslint-disable max-statements */\nimport sortBy from 'lodash/sortBy';\nimport max from 'lodash/max';\nimport { all, put, select } from 'redux-saga/effects';\nimport { ADD_PORTAL_ITEMS } from '../actionTypes';\nimport SELECTORS from '../selectors';\nimport { ITEM_ADDITION_ORDER_STRATEGY } from '../../constants';\nimport { AVAILABLE_DETAIL_PAGE_ITEMS } from '../../modules/Builder/components/HomePage/RightPanel/dataSourceHelpers';\nimport * as ACTION_CREATORS from '../actionCreators';\n\n// method for calculating item orders for single item adding\nconst calculateItemOrders = (items, addedItemOrder) => {\n let nextOrder = addedItemOrder;\n const newItems = [];\n items.forEach(({ portalOrder, ...props }) => {\n const shouldUpdate = parseInt(portalOrder, 10) >= addedItemOrder;\n if (shouldUpdate) nextOrder++;\n const newOrder = shouldUpdate ? nextOrder.toString() : portalOrder.toString();\n newItems.push({ ...props, ...{ portalOrder: newOrder } });\n });\n return newItems;\n};\n\nconst generateNewItems = ({ order, currentItems, items }) => {\n let newItems;\n if (order === ITEM_ADDITION_ORDER_STRATEGY.TO_END_OF_THE_PAGE) {\n newItems = [...currentItems, ...items];\n } else {\n const rounded = Math.round(order);\n let newItemOrder = rounded;\n newItems = currentItems;\n const orderedNewItems = sortBy(items, p => parseInt(p.portalOrder, 10));\n orderedNewItems.forEach(item => {\n const newOrder = item.portalOrder ? item.portalOrder : newItemOrder.toString();\n newItems = calculateItemOrders(newItems, newOrder);\n newItems.push({ ...item, ...{ portalOrder: newOrder } });\n newItemOrder++;\n });\n newItems = sortBy(newItems, p => parseInt(p.portalOrder, 10));\n }\n return newItems;\n};\n\nexport function* watchPortalOrderInItemAddition(action) {\n const { dontStack = false, isUndo = false } = action;\n const {\n items,\n order: _order,\n withClicking,\n isDuplicate,\n focusItemID\n } = action.payload;\n\n let order = _order;\n const pages = yield select(SELECTORS.getPages);\n const firstPageID = yield select(SELECTORS.getFirstPageID);\n const currentItems = yield select(SELECTORS.getPortalItems);\n const isHomepage = items[0]?.page === firstPageID;\n const currentPageID = items[0]?.page; // todo @ for resat\n const currentPage = pages.find(page => (parseInt(page.id, 10) === parseInt(currentPageID, 10) || parseInt(page.tempID, 10) === parseInt(currentPageID, 10)));\n if (currentPageID && !withClicking && !isHomepage) {\n const { pageOrder: currentPageOrder } = currentPage;\n const previousPages = pages.filter(page => parseInt(page.pageOrder, 10) < parseInt(currentPageOrder, 10));\n const previousPageIDs = previousPages.map(page => page.id);\n const itemsInPreviousPages = currentItems.filter(item => previousPageIDs.includes(item.page));\n if (itemsInPreviousPages.length > 0) {\n const prevPagesItemOrders = itemsInPreviousPages.map(item => parseInt(item.portalOrder, 10));\n const maxOrderBefore = max(prevPagesItemOrders);\n order = maxOrderBefore + _order;\n }\n }\n\n const [filteredItems, unsupportedItems] = items.reduce((prev, item) => {\n if (currentPage?.linkedItemID && !AVAILABLE_DETAIL_PAGE_ITEMS.includes(item.type)) {\n return [[...prev[0]], [...prev[1], item]];\n }\n return [[...prev[0], item], [...prev[1]]];\n }, [[], []]);\n\n if (unsupportedItems.length > 0) {\n yield all(unsupportedItems.map(unsupportedItem => {\n console.error('detail page unsupported element addition try: ', unsupportedItem.type);\n return put(ACTION_CREATORS.toastAction({\n message: 'Element is not supported for detail page'\n }));\n }));\n\n yield all(unsupportedItems.map(\n unsupportedItem => put(ACTION_CREATORS.trackEventAction({ action: 'detailPageUnsupportedItemAddition', target: { itemType: unsupportedItem.type, pageID: currentPage.id } }))));\n }\n\n if (order !== ITEM_ADDITION_ORDER_STRATEGY.MULTIPLE_ITEM_DUPLICATION) {\n const newItems = generateNewItems({\n order,\n currentItems,\n items: filteredItems\n });\n yield put({\n type: ADD_PORTAL_ITEMS.REQUEST,\n payload: {\n items: filteredItems,\n order,\n newItems,\n isDuplicate,\n focusItemID\n },\n dontStack,\n isUndo\n });\n } else {\n let newDuplicatedItems = currentItems;\n filteredItems.forEach(item => {\n const { portalOrder, ...itemProps } = item;\n newDuplicatedItems = generateNewItems({\n order: portalOrder,\n items: [itemProps],\n currentItems: newDuplicatedItems\n });\n });\n yield put({ type: ADD_PORTAL_ITEMS.REQUEST, payload: { items, newItems: newDuplicatedItems, isDuplicate }, dontStack });\n }\n}\n","import { arrayMoveImmutable } from 'array-move';\nimport max from 'lodash/max';\nimport { put, select } from 'redux-saga/effects';\nimport { UPDATE_ORDER } from '../actionTypes';\nimport SELECTORS from '../selectors';\n\nexport function* watchItemSorting(action) {\n const {\n oldIndex, newIndex, page = 'homepage', elementID, oldpage, allItems\n } = action.payload;\n\n if (allItems) {\n // resat&irem will handle this, this is temporary\n yield put({\n type: UPDATE_ORDER.UNDOABLE,\n payload: {\n data: allItems\n },\n dontStack: true\n });\n return;\n }\n\n const appItems = yield select(SELECTORS.getPortalItems);\n const pages = yield select(SELECTORS.getPages);\n\n const sortingItem = appItems.find(item => parseInt(item.id, 10) === parseInt(elementID, 10));\n const _oldIndex = parseInt(sortingItem.portalOrder, 10) - 1;\n let _newIndex = newIndex;\n\n const newPage = pages.find(pg => parseInt(pg.id, 10) === parseInt(page, 10));\n\n if (page && page !== 'homepage') {\n const oldPage = pages.find(pg => parseInt(pg.id, 10) === parseInt(sortingItem.page, 10));\n // _oldIndex = parseInt(sortingItem.portalOrder, 10) - 1;\n\n const pageItems = appItems.filter(item => parseInt(item.page, 10) === parseInt(page, 10));\n const sortedPageItems = pageItems.sort((x, y) => parseInt(x.portalOrder, 10) - parseInt(y.portalOrder, 10));\n if (sortedPageItems.length === 0) {\n const newPageOrder = parseInt(newPage.pageOrder, 10);\n const minPagesIDs = pages.filter(pg => parseInt(pg.pageOrder, 10) < newPageOrder).map(pg => parseInt(pg.id, 10));\n const minPagesItems = appItems.filter(item => minPagesIDs.includes(parseInt(item.page, 10)) || !item.page);\n const minPagesItemsPortalOrders = minPagesItems.map(item => parseInt(item.portalOrder, 10));\n const maxPortalOrder = max(minPagesItemsPortalOrders);\n\n _newIndex = maxPortalOrder - 1;\n } else {\n const lastItem = sortedPageItems[newIndex] || sortedPageItems[sortedPageItems.length - 1];\n const actualNewIndex = parseInt(lastItem.portalOrder, 10);\n\n if (sortedPageItems[newIndex] && (!oldPage || (parseInt(newPage.pageOrder, 10) > parseInt(oldPage.pageOrder, 10)))) {\n _newIndex = actualNewIndex - 2;\n } else {\n _newIndex = actualNewIndex - 1;\n }\n }\n }\n\n const ordered = arrayMoveImmutable(appItems, _oldIndex, _newIndex).map((item, index) => ({ ...item, index }));\n const apiObj = ordered.map(({ id, type }, index) => {\n const moveToPage = elementID && parseInt(id, 10) === parseInt(elementID, 10);\n const props = {\n id,\n type,\n portalOrder: `${index + 1}` // 1 based portalOrders\n };\n return moveToPage ? { ...props, page: (page || '') } : props;\n });\n\n const sortedItem = ordered.find(x => x.index === newIndex);\n const { id: sortedItemID } = sortedItem;\n const sortInfo = { sortedItemID, _oldIndex, _newIndex }; // For event tracking\n\n yield put({\n type: UPDATE_ORDER.UNDOABLE,\n payload: {\n data: apiObj, sortInfo, oldIndex, newIndex, page, elementID, oldpage\n }\n });\n}\n","import React, { useCallback, Suspense } from 'react';\nimport PropTypes from 'prop-types';\nimport { getAPIURL } from '@jotforminc/request-layer';\nimport { safeLazy } from '@jotforminc/safe-lazy-import';\n\nconst LoginFlowWithStyles = safeLazy(() => import(/* webpackChunkName: \"LoginFlowWithStyles\" */'../../../../../components/LoginFlowWithStyles'));\n\nconst GuestLoginModal = ({\n user,\n onConfirm,\n onCancel\n}) => {\n const handleUserLogin = useCallback(loggedInUser => {\n onConfirm(loggedInUser);\n }, []);\n\n return (\n }>\n \n \n );\n};\n\nGuestLoginModal.propTypes = {\n user: PropTypes.shape({}),\n onCancel: PropTypes.func,\n onConfirm: PropTypes.func\n};\n\nGuestLoginModal.defaultProps = {\n user: {},\n onCancel: f => f,\n onConfirm: f => f\n};\n\nexport default GuestLoginModal;\n","import { call, put, select } from 'redux-saga/effects';\nimport React from 'react';\nimport { createRoot } from 'react-dom/client';\nimport GuestLoginModal from '../../../modules/Builder/components/Modals/GuestLoginModal';\nimport SELECTORS from '../../selectors';\nimport { fetchPortalAction, setUserAction } from '../../actionCreators';\n\nexport const showGuestModal = user => {\n return new Promise((resolve, reject) => {\n const container = document.getElementById('modal-root');\n const root = createRoot(container);\n const handleClose = () => {\n reject();\n root.unmount();\n };\n const handleConfirm = selection => {\n resolve(selection);\n root.unmount();\n };\n\n root.render();\n });\n};\n\nexport function* handleShowGuestLoginModal({\n payload: {\n onCancel = f => f\n }\n}) {\n try {\n const { id: appID } = yield select(SELECTORS.getAppInfoWithDefaults);\n const user = yield select(SELECTORS.getUser);\n const newUser = yield call(showGuestModal, user);\n\n // if new user logs in\n yield put(setUserAction(newUser));\n yield put(fetchPortalAction(appID));\n } catch {\n yield call(onCancel);\n }\n}\n","import { ABTestManager } from '@jotforminc/abtest-manager';\n\nexport const shouldShowNewDesign = async (user, dispatchedFrom) => {\n try {\n if (dispatchedFrom === 'sheets') return true;\n\n const getNewDesignParam = new URLSearchParams(window.location.search).get('limitDialogV2');\n const showNewDesign = getNewDesignParam === '1';\n\n if (showNewDesign) return true;\n if (user?.account_type?.name === 'GUEST') return false;\n\n const abTestManager = new ABTestManager({\n user: user,\n isTestEnabled: true,\n testName: 'limitDialogNewDesign',\n testVariantCode: '8781',\n controlVariantCode: '8771',\n urlParam: 'limitDialogV2',\n cacheVariantCodeAtLocalStorage: true\n });\n\n const getTestVariant = await abTestManager.isTestVariant();\n return getTestVariant;\n } catch (error) {\n return false;\n }\n};\n","import React, { Suspense } from 'react';\nimport ReactDOM from 'react-dom';\nimport { Loading } from '@jotforminc/loading';\nimport { getAccountTypeName, getAvailablePlansForUser, decideActiveCampaign } from '@jotforminc/utils';\n\nimport {\n getLimitFromType,\n fetchUserPlans,\n fetchCombinedInfo,\n actionTracker\n} from '../utils';\n\nimport { shouldShowNewDesign } from '../utils/abtests';\n\nconst LazyLimitDialogModal = React.lazy(/* webpackChunkName: \"LimitDialogModal\" */ () => import('./LimitDialogModal'));\n\nconst openLimitDialog = async ({\n user: _user = {},\n plans: _plans = {},\n selectedLimitType = 'formCount',\n dispatchedFrom = '',\n portalRoot\n}) => {\n let user;\n let plans;\n\n const isCredentialsFetched = !!Object.keys(_user)?.length;\n if (isCredentialsFetched) {\n user = _user;\n } else {\n user = await fetchCombinedInfo();\n }\n\n const activeCampaign = decideActiveCampaign(user);\n const accountTypeName = getAccountTypeName(user);\n const selectedLimit = getLimitFromType(user, selectedLimitType);\n\n const isPlansFetched = !!Object.keys(_plans)?.length;\n if (isPlansFetched) {\n plans = _plans;\n } else {\n plans = await fetchUserPlans();\n }\n\n const isTestVariant = await shouldShowNewDesign(user, dispatchedFrom);\n\n const availablePlansForUser = getAvailablePlansForUser(accountTypeName);\n\n return new Promise((resolve, reject) => {\n const handleClose = () => {\n actionTracker({\n username: user?.username,\n action: 'close-btn-clicked',\n target: dispatchedFrom,\n isV2: isTestVariant\n });\n\n reject();\n ReactDOM.unmountComponentAtNode(portalRoot);\n };\n\n ReactDOM.render((\n }>\n \n \n ), portalRoot);\n });\n};\n\nexport default openLimitDialog;\n","export const pushDataLayer = ({ event, ...rest }) => {\n const { dataLayer, JOTFORM_ENV } = window || {};\n\n if (JOTFORM_ENV !== 'PRODUCTION' || !event) return false;\n if (!dataLayer || !Array.isArray(dataLayer)) return false;\n\n return dataLayer.push({ event, ...rest }) > 0;\n};\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","import { isEnterprise } from '@jotforminc/enterprise-utils';\n\nimport { openFormLimitDialog } from '@jotforminc/limit-dialog';\nimport { handleCustomNavigation, pushDataLayer } from '@jotforminc/utils';\n\nimport { layer } from '../../../utils';\n\nconst cloneApp = (id, newAppTitle, withForm, teamID) => {\n const headers = teamID ? { headers: { 'jf-team-id': teamID } } : {};\n return layer.post(`listings/portal/${id}/clone?cloneForms=${withForm ? '1' : '0'}`, {\n appProperties: {\n title: newAppTitle\n }\n }, headers);\n};\n\nexport const handleCloneApp = ({\n id,\n appTitle,\n withForm,\n user: userData,\n portalRoot,\n formCount = 0,\n actionLogger,\n teamID,\n logJotformAction\n}) => {\n if (withForm) {\n const user = userData?.credentials || userData;\n const isFormLimitReached = window.userFormCountLimit;\n\n const currentUsage = user?.usage?.form_count || 0;\n const userLimit = user?.account_type?.limits?.formCount || 5;\n const willFormLimitBeReached = parseInt(formCount, 10) + parseInt(currentUsage, 10) > parseInt(userLimit, 10);\n const showFormLimitDialog = isFormLimitReached || willFormLimitBeReached;\n\n if (showFormLimitDialog && !isEnterprise()) {\n openFormLimitDialog({ user, portalRoot, dispatchedFrom: 'listings-cloneApp' });\n return;\n }\n }\n\n return cloneApp(id, appTitle, withForm, teamID).then(res => {\n const {\n id: newID\n } = res;\n\n if (actionLogger) {\n actionLogger({\n action: `portalCloned${withForm ? 'withForms' : 'withoutForms'}`,\n target: id\n });\n\n // Also track for portal-app\n // Pls don't change the action obj.\n const portalAppsAction = { action: 'appCreated', target: JSON.stringify({ portalID: newID }) };\n actionLogger(portalAppsAction, 'portal-app');\n }\n\n if (logJotformAction) {\n logJotformAction({ action: 'appCreated', target: { portalID: newID, from: 'create_app_from_clone_existing_app' } });\n }\n\n pushDataLayer({ event: 'create_app_clone_existing_app' });\n handleCustomNavigation(`/app/build/${newID}`, '_self');\n });\n};\n","import { t } from '@jotforminc/translation';\n\nexport const CLONE_APP_SETTINGS = {\n WITH_FORMS: 'withForms',\n WITHOUT_FORMS: 'withoutForms'\n};\n\nexport const DEFAULT_CLONE_APP_SETTING = CLONE_APP_SETTINGS.WITH_FORMS;\n\nexport const CLONE_APP_OPTIONS = [\n {\n showWhenSelected: t('Clone app and forms'),\n text: t('Clone app and forms'),\n desc: t('Create a copy of the app and the forms it includes.'),\n value: CLONE_APP_SETTINGS.WITH_FORMS\n }, {\n showWhenSelected: t('Clone app and keep existing forms'),\n text: t('Clone app and keep existing forms'),\n desc: t('Create a copy of the app without cloning your forms.'),\n value: CLONE_APP_SETTINGS.WITHOUT_FORMS\n }\n];\n\nexport const CLONE_MODAL_PROPERTIES = {\n header: {\n text: 'Clone App',\n description: 'Duplicate your app, including all app elements and settings.'\n },\n buttonText: 'Clone App',\n appName: 'apps',\n defaultSetting: DEFAULT_CLONE_APP_SETTING,\n settingsProps: {\n options: CLONE_APP_OPTIONS,\n inputLabel: 'App Name',\n settingLabel: 'App Settings',\n inputPlaceholder: 'Enter an app name'\n }\n};\n","import React from 'react';\nimport {\n string, func, bool, array\n} from 'prop-types';\nimport { t } from '@jotforminc/translation';\nimport { FormControl, FormLabel, InputText } from '@jotforminc/magnet';\nimport { OptionGroup } from '@jotforminc/option-group';\n\nconst CloneSettings = ({\n title,\n onTitleChange,\n cloneSetting,\n onCloneSettingChange,\n isThereAnyForm,\n options,\n settingLabel,\n inputLabel,\n inputPlaceholder\n}) => {\n return (\n <>\n \n \n {t(inputLabel)}\n \n {\n const { value } = e.target;\n onTitleChange(value);\n }}\n />\n \n {isThereAnyForm && (\n \n {t(settingLabel)}\n \n \n )}\n \n );\n};\n\nCloneSettings.propTypes = {\n title: string,\n onTitleChange: func,\n cloneSetting: string,\n onCloneSettingChange: func,\n isThereAnyForm: bool,\n options: array,\n settingLabel: string,\n inputLabel: string,\n inputPlaceholder: string\n};\n\nCloneSettings.defaultProps = {\n title: '',\n onTitleChange: f => f,\n cloneSetting: '',\n onCloneSettingChange: f => f,\n isThereAnyForm: false,\n options: [],\n settingLabel: '',\n inputLabel: '',\n inputPlaceholder: 'pls enter one...'\n};\n\nexport default CloneSettings;\n","import React, { useState } from 'react';\nimport {\n string, func, bool, shape\n} from 'prop-types';\nimport { t } from '@jotforminc/translation';\nimport { IconCopyFilled, IconExclamationCircleFilled } from '@jotforminc/svg-icons';\nimport {\n Modal, ModalHeader, ModalBody, ModalActions, Button\n} from '@jotforminc/magnet';\n\nimport CloneSettings from './CloneSettings';\nimport './styles/CloneModal.scss';\n\nconst CloneModal = ({\n title,\n appName,\n onClone,\n onClose,\n isThereAnyForm,\n defaultSetting,\n header: {\n text, description\n },\n buttonText,\n settingsProps,\n handleSelectionChange,\n preventEmptyTitle,\n emptyTitleErrorMessage,\n modalHeaderProps,\n ...props\n}) => {\n const defaultClonedTitle = t(`Clone of ${title}`);\n const [clonedTitle, setClonedTitle] = useState(defaultClonedTitle);\n const [cloning, setCloning] = useState(false);\n\n const [cloneSetting, setCloneSetting] = useState(defaultSetting);\n\n const handleClone = () => {\n setCloning(true);\n onClone({\n title: clonedTitle,\n cloneSetting\n }).finally(() => setCloning(false));\n };\n\n const onSelectionChange = selectedOpt => {\n handleSelectionChange(selectedOpt);\n setCloneSetting(selectedOpt);\n };\n\n return (\n \n \n \n \n \n \n {(preventEmptyTitle && !clonedTitle) ? (\n
    \n \n {t(emptyTitleErrorMessage || 'Title cannot be empty!')}\n
    \n ) : null}\n \n {t(buttonText)}\n \n
    \n \n );\n};\n\nCloneModal.propTypes = {\n title: string,\n onClone: func,\n onClose: func,\n defaultSetting: string,\n isThereAnyForm: bool,\n header: shape({ text: string, description: string }),\n buttonText: string,\n appName: string,\n settingsProps: shape({}),\n handleSelectionChange: func,\n preventEmptyTitle: bool,\n emptyTitleErrorMessage: string,\n modalHeaderProps: shape({})\n};\n\nCloneModal.defaultProps = {\n title: '',\n onClone: f => f,\n onClose: f => f,\n defaultSetting: '',\n isThereAnyForm: false,\n header: { text: '', description: '' },\n buttonText: string,\n appName: '',\n settingsProps: {},\n handleSelectionChange: f => f,\n preventEmptyTitle: false,\n emptyTitleErrorMessage: '',\n modalHeaderProps: {}\n};\n\nexport default CloneModal;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { handleCloneApp } from '../../core/handleCloneApp';\nimport { CLONE_APP_SETTINGS, CLONE_MODAL_PROPERTIES } from './constants';\nimport CloneModal from '../../../CloneModal';\nimport withActions from '../../core/jotformActions';\n\nconst CloneAppModal = withActions(CloneModal, 'portal');\n\nconst openCloneAppModal = ({\n id,\n title,\n portalRoot,\n user,\n portalItems,\n teamID\n}) => {\n const formItems = portalItems.filter(({ type, buttonRole, buttonValue }) => (type === 'FORM')\n || (type === 'BUTTON' && buttonRole === 'form' && !!buttonValue));\n const isThereAnyForm = formItems.length > 0;\n\n const onClone = ({ title: changedTitle, cloneSetting, actionLogger }) => {\n return handleCloneApp({\n id,\n appTitle: changedTitle,\n withForm: !isThereAnyForm ? false : cloneSetting === CLONE_APP_SETTINGS.WITH_FORMS,\n portalRoot,\n user,\n formCount: formItems.length,\n actionLogger,\n teamID\n });\n };\n return new Promise((resolve, reject) => {\n const handleClose = () => {\n reject();\n ReactDOM.unmountComponentAtNode(portalRoot);\n };\n ReactDOM.render((\n \n ), portalRoot);\n });\n};\n\nexport default openCloneAppModal;\n","import React, { Component } from 'react';\n\nfunction withActions(WrappedComponent, actionsProjectName, additionalProjects = []) {\n return class extends Component {\n constructor(props) {\n super(props);\n\n this.JotFormActions = null;\n this.additionalActionLoggers = {};\n\n this.setupJotFormActions = this.setupJotFormActions.bind(this);\n this.registerJotFormAction = this.registerJotFormAction.bind(this);\n\n this.setupJotFormActions();\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 // Register additional loggers too.\n additionalProjects.forEach(projectName => {\n this.additionalActionLoggers[projectName] = JotFormActions(projectName);\n });\n }\n }\n\n registerJotFormAction({ action, target }, forAdditionalProject = '') {\n const { user: { username: actor = null } } = global;\n if (!this.shouldLogActions) {\n return;\n }\n const mainLogger = this.JotFormActions;\n const additionalLogger = this.additionalActionLoggers[forAdditionalProject];\n if (!!forAdditionalProject && !additionalLogger) {\n console.info('No additional project found, falling back to main');\n }\n const logger = additionalLogger || mainLogger;\n\n if (actor && logger) {\n logger.tick({ actor, action, target });\n }\n }\n\n render() {\n return (\n { this.componentHandle = r; }}\n actionLogger={this.registerJotFormAction}\n />\n );\n }\n };\n}\n\nexport default withActions;\n","import { openCloneAppModal } from '@jotforminc/create-new-wizards';\nimport { call, select } from 'redux-saga/effects';\nimport SELECTORS from '../../selectors';\n\nexport function* handleCloneApp({\n payload: {\n root,\n onCancel = f => f\n }\n}) {\n const appInfo = yield select(SELECTORS.getPortalInfoSelector);\n const user = yield select(SELECTORS.getUser);\n const {\n id, title, items\n } = appInfo;\n\n try {\n yield call(openCloneAppModal, {\n id, title, portalRoot: root, user, portalItems: items\n });\n } catch {\n onCancel();\n }\n}\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 from 'styled-components';\n\nexport const ScCircularProgressBar = styled.div`\n display: flex;\n width: 100%;\n justify-content: center;\n margin-bottom: 20px;\n\n .circular-progress-bar {\n width: 80px;\n height: 80px;\n }\n`;\n","import {\n bool, func, node, number, string\n} from 'prop-types';\nimport React, { forwardRef, useEffect, useState } from 'react';\n\nimport { CircularProgressbar, buildStyles } from 'react-circular-progressbar';\nimport ConfirmationModal from '../ConfirmationModal';\n\nimport 'react-circular-progressbar/dist/styles.css';\nimport { ScCircularProgressBar } from './ScCircularProgressBar';\n\nconst StillEditingModal = forwardRef(({\n backText,\n confirmText,\n onReject,\n onResolve,\n title,\n description,\n defaultVisible,\n timeout,\n content,\n onClose\n}, ref) => {\n const [remainingTime, setRemainingTime] = useState(timeout);\n\n const progressValue = remainingTime / 1000;\n\n const maxProgressValue = timeout / 1000; // second\n const icon = (\n \n \n \n );\n\n useEffect(() => {\n const interval = setInterval(() => {\n setRemainingTime(remainingTime - 1000);\n }, 1000);\n\n return () => clearInterval(interval);\n }, [remainingTime]);\n\n useEffect(() => {\n if (remainingTime === 0) {\n onReject();\n }\n }, [remainingTime]);\n\n return (\n \n {content}\n \n );\n});\n\nStillEditingModal.propTypes = {\n backText: string,\n confirmText: string,\n onReject: func,\n onResolve: func,\n title: string,\n description: string,\n defaultVisible: bool,\n timeout: number,\n content: node,\n onClose: func\n};\n\nStillEditingModal.defaultProps = {\n backText: '',\n confirmText: '',\n onReject: f => f,\n onResolve: f => f,\n title: '',\n description: '',\n defaultVisible: true,\n timeout: 30 * 1000, // 30 second,\n content: null,\n onClose: f => f\n};\n\nexport default StillEditingModal;\n","import Styled from 'styled-components';\nimport { ScRB } from '@jotforminc/modals';\n\nexport const ScStillEditingModal = Styled(ScRB)`\n.title {\n margin-bottom: 22px;\n font-size: 22px;\n font-weight: 700;\n}\n\n.custom-content {\n margin-bottom: unset;\n color: #0A1551;\n font-weight: 400;\n\n &-second-line {\n margin-top: 30px;\n }\n}\n`;\n","import React from 'react';\nimport { StillEditingModal } from '@jotforminc/modals';\nimport { call, put } from 'redux-saga/effects';\nimport { t } from '@jotforminc/translation';\nimport { handleCustomNavigation } from '@jotforminc/utils';\nimport { createRoot } from 'react-dom/client';\nimport { ScStillEditingModal } from './ScStillEditingModal';\nimport { updatePortalAction } from '../../../actionCreators';\n\nconst stillEditingModal = () => {\n return new Promise(resolve => {\n const container = document.getElementById('modal-root');\n const root = createRoot(container);\n\n const handleResolve = () => {\n resolve(true);\n root.unmount();\n };\n const handleReject = () => {\n resolve(true);\n handleCustomNavigation('/myapps', '_self');\n root.unmount();\n };\n\n const handleClose = () => {\n resolve(true);\n root.unmount();\n };\n\n root.render((\n \n \n
    \n {t('To continue editing this app, let us know you\\'re still active by clicking the button below.')}\n
    \n
    \n {t('Otherwise, you\\'ll be redirected to the Apps page.')}\n
    \n \n )}\n />\n
    \n ));\n });\n};\n\nexport function* handleStillEditing() {\n const isClosed = yield call(stillEditingModal);\n\n // dummy update for the activity log\n if (isClosed) {\n yield put(updatePortalAction({}));\n }\n}\n","import React, { useCallback, useMemo } from 'react';\nimport { bool, func, number } from 'prop-types';\n\nconst DefaultItemRenderer = ({\n index, covered, onChange, hovered,\n onMouseEnter\n}) => {\n const handleMouseEnter = useCallback(() => onMouseEnter(index), []);\n const shouldColor = useMemo(() => (covered || hovered), [covered, hovered]);\n return (\n onChange(index)}\n style={{ textDecoration: shouldColor ? 'underline' : 'none' }}\n >\n {index}\n \n );\n};\n\nDefaultItemRenderer.propTypes = {\n index: number.isRequired,\n covered: bool,\n hovered: bool,\n onMouseEnter: func,\n onChange: func\n};\n\nDefaultItemRenderer.defaultProps = {\n covered: false,\n hovered: false,\n onMouseEnter: f => f,\n onChange: f => f\n};\n\nexport default DefaultItemRenderer;\n","import React from 'react';\nimport { func, node } from 'prop-types';\n\nconst DefaultContainerRenderer = ({ children, onMouseLeave }) =>
    {children}
    ;\n\nDefaultContainerRenderer.propTypes = {\n children: node.isRequired,\n onMouseLeave: func\n};\n\nDefaultContainerRenderer.defaultProps = {\n onMouseLeave: f => f\n};\n\nexport default DefaultContainerRenderer;\n","import React, { useCallback, useMemo, useState } from 'react';\nimport {\n elementType, func, number, oneOfType, string\n} from 'prop-types';\nimport DefaultItemRenderer from './defaults/DefaultItemRenderer';\nimport DefaultContainerRenderer from './defaults/DefaultContainerRenderer';\n\nconst Rating = ({\n scale,\n value,\n onChange,\n ItemRenderer,\n ContainerRenderer\n}) => {\n const [hoveredIndex, setHoveredIndex] = useState();\n\n const items = useMemo(() => Array.from(new Array(scale), f => f), [scale]); // eslint-disable-line prefer-spread\n\n const valueCoversIndex = useCallback(itemIndex => { // itemIndices are 1 based!\n if (!value) return false;\n\n const numericVal = Number(value);\n return !Number.isNaN(value) && itemIndex <= numericVal;\n }, [value]);\n\n const handleMouseEnter = useCallback(hoveredIdx => setHoveredIndex(hoveredIdx), []);\n const handleMouseLeave = useCallback(() => setHoveredIndex(), []);\n\n return (\n \n {items.map((nothing, index) => {\n const itemIndex = index + 1;\n\n return (\n \n );\n })}\n \n );\n};\n\nRating.propTypes = {\n scale: number.isRequired,\n value: oneOfType([string, number]),\n onChange: func,\n ItemRenderer: elementType,\n ContainerRenderer: elementType\n};\n\nRating.defaultProps = {\n value: '',\n onChange: f => f,\n ItemRenderer: DefaultItemRenderer,\n ContainerRenderer: DefaultContainerRenderer\n};\n\nexport default Rating;\n","import React, {\n useCallback, useMemo, useState\n} from 'react';\nimport { Modal, Rating } from '@jotforminc/uikit';\nimport { t } from '@jotforminc/translation';\nimport {\n Button,\n FormControl,\n FormLabel,\n InputText,\n Textarea,\n Flex\n} from '@jotforminc/magnet';\nimport { func, object, string } from 'prop-types';\nimport { IconStarFilled, IconXmark } from '@jotforminc/svg-icons';\nimport { ScPortalFeedbackModal } from './ScPortalFeedbackModal';\nimport DialogRenderer from './DialogRenderer';\nimport ContentRenderer from './ContentRenderer';\nimport { isGuestUser } from '../../../../../store/utils';\n\nconst PortalFeedbackModal = ({\n onCancel, onSend, user, feedbackInfo\n}) => {\n const [feedbackText, setFeedbackText] = useState('');\n const [stars, setStars] = useState();\n const [feedbackEmail, setFeedbackEmail] = useState(null);\n const [feedbackSent, setFeedbackSent] = useState(false);\n const isGuest = isGuestUser(user);\n const { featureName, formID } = feedbackInfo;\n const handleHideButtonClick = useCallback(() => {\n setFeedbackText('');\n setFeedbackEmail(null);\n setStars();\n setFeedbackSent(false);\n onCancel();\n }, []);\n\n const handleSendFeedback = useCallback(() => {\n onSend({\n stars, feedbackText, feedbackEmail, formID\n });\n setFeedbackSent(true);\n }, [feedbackText, stars, feedbackEmail]);\n\n const handlleTextareaValueChange = value => {\n setFeedbackText(value);\n if (value.length === 0) {\n setFeedbackEmail(null);\n }\n };\n\n const HeaderRenderer = () => {\n return feedbackSent\n ? null\n : (\n
    \n
    \n

    {t('Give Feedback')}

    \n

    {t('Help us provide you with a better experience.')}

    \n
    \n \n
    \n );\n };\n\n // eslint-disable-next-line no-unused-vars\n const FooterRenderer = () => (\n
    \n {\n feedbackSent\n ? \n : (\n <>\n \n {t('Cancel')}\n \n \n {t('Send')}\n \n \n )\n }\n
    \n );\n\n // eslint-disable-next-line react/prop-types\n const ContainerRenderer = ({ children, onMouseLeave }) => {\n return (\n
    {children}
    \n );\n };\n\n const ItemRenderer = ({\n // eslint-disable-next-line react/prop-types\n index, covered, hovered, onChange, onMouseEnter\n }) => {\n const handleMouseEnter = useCallback(() => onMouseEnter(index), [index]);\n return (\n onChange(index)} onMouseEnter={handleMouseEnter}\n >\n {(covered || hovered) ? : }\n
    \n );\n };\n\n const feedbackTextLabel = useMemo(() => {\n switch (true) {\n case stars < 3:\n return \"We're sorry to hear that. What can we do to improve your experience?\";\n case stars > 3:\n return `Great! What did you like most about the ${featureName}?`; // App Builder?\n default:\n return 'What can we do to improve your experience?';\n }\n }, [stars]);\n\n return (\n \n \n
    \n {!feedbackSent\n ? (\n \n \n {t(`How would you rate your experience with ${featureName}?`)}\n setStars(newRating)}\n />\n \n\n \n {t(feedbackTextLabel)}\n handlleTextareaValueChange(e.target.value)}\n />\n \n\n {isGuest && feedbackText.length > 0 && (\n \n {`${t('Email')} (${t('optional')})`}\n setFeedbackEmail(e.target.value)}\n />\n \n )}\n \n )\n : (\n <>\n \n

    {t('Thank You!')}

    \n

    {t('Your feedback has been received!')}

    \n \n )}\n
    \n \n
    \n\n );\n};\n\nPortalFeedbackModal.propTypes = {\n onCancel: func.isRequired,\n onSend: func.isRequired,\n user: object.isRequired,\n feedbackInfo: {\n featureName: string,\n formID: string\n }\n};\n\nexport default PortalFeedbackModal;\n","import { call } from 'redux-saga/effects';\nimport React from 'react';\nimport { createRoot } from 'react-dom/client';\nimport PortalFeedbackModal from '../../../modules/Builder/components/Modals/PortalFeedbackModal';\n\nexport const portalFeedbackModal = ({ onSend, user, feedbackInfo }) => {\n return new Promise((resolve, reject) => {\n const container = document.getElementById('modal-root');\n const root = createRoot(container);\n const handleClose = () => {\n reject();\n root.unmount();\n };\n const handleConfirm = selection => {\n resolve(selection);\n root.unmount();\n };\n\n root.render();\n });\n};\n\nexport function* handlePortalFeedbackModal({\n payload: {\n onCancel = f => f,\n onSend = f => f,\n user = {},\n feedbackInfo\n }\n}) {\n try {\n yield call(portalFeedbackModal, { onSend, user, feedbackInfo });\n } catch {\n yield call(onCancel);\n }\n}\n","import { call, put, take } from 'redux-saga/effects';\nimport { MODALS, MODAL_EVENTS } from '../../../constants/modals';\nimport { SHOW_MODAL } from '../../actionTypes';\nimport { handleShowGuestLoginModal } from './guestLoginModal';\nimport { handleCloneApp } from './cloneApp';\nimport { trackEventAction } from '../../actionCreators';\nimport { handleStillEditing } from './StillEditingModal';\nimport { handlePortalFeedbackModal } from './portalFeedbackModal';\n\nexport function* watchModals() {\n while (true) {\n const action = yield take(SHOW_MODAL);\n const { payload } = action;\n const { name, resourceType } = payload;\n switch (name) {\n case MODALS.GUEST_LOGIN_MODAL:\n yield call(handleShowGuestLoginModal, action);\n break;\n case MODALS.CLONE_APP_MODAL:\n yield call(handleCloneApp, action);\n break;\n case MODALS.TEAM_STILL_EDITING:\n yield call(handleStillEditing, action);\n break;\n case MODALS.PORTAL_FEEDBACK_MODAL:\n yield call(handlePortalFeedbackModal, action);\n break;\n default:\n console.log('Unknown modal', name);\n }\n\n if (MODAL_EVENTS[name]) {\n yield put(trackEventAction({ action: `${MODAL_EVENTS[name]}Opened`, ...resourceType ? { target: { resourceType } } : {} }));\n }\n }\n}\n","import {\n call, put, select, take\n} from 'redux-saga/effects';\nimport { StorageHelper } from '@jotforminc/storage-helper';\nimport {\n ADD_NEW_PAGE,\n ADD_PORTAL_ITEMS,\n DELETE_PAGE,\n REMOVE_PORTAL_ITEMS,\n TOGGLE_LEFT_PANEL,\n TOGGLE_RIGHT_PANEL,\n UPDATE_ITEM_PROP,\n UPDATE_MULTIPLE_ITEM,\n UPDATE_ORDER, UPDATE_PAGE,\n UPDATE_PORTAL\n} from '../actionTypes';\nimport SELECTORS from '../selectors';\nimport { isGuestUser } from '../utils';\nimport { APP_MODES } from '../../constants';\nimport { showGenericModalAction } from '../actionCreators';\nimport { MODALS } from '../../constants/modals';\n\nexport const SIGNUP_ACTION_COUNTER_KEY = 'appBuilderSignupActionCount';\nconst SIGNUP_ACTION_LIMIT = 20;\nlet isModalFirstOpened = false;\nlet currentActionCount = 0;\n\nexport function* watchSignupActions() {\n const actionsToTrack = [\n UPDATE_PORTAL.SUCCESS,\n\n ADD_PORTAL_ITEMS.SUCCESS,\n UPDATE_ITEM_PROP.SUCCESS,\n UPDATE_MULTIPLE_ITEM.SUCCESS,\n UPDATE_ORDER.SUCCESS,\n REMOVE_PORTAL_ITEMS.SUCCESS,\n\n ADD_NEW_PAGE.SUCCESS,\n UPDATE_PAGE.SUCCESS,\n DELETE_PAGE.SUCCESS,\n\n TOGGLE_LEFT_PANEL,\n TOGGLE_RIGHT_PANEL\n ];\n\n const appMode = yield select(SELECTORS.getAppModeSelector);\n const isBuilder = appMode === APP_MODES.builder;\n\n const user = yield select(SELECTORS.getUser);\n const isGuest = isGuestUser(user);\n\n while (isBuilder && isGuest) {\n yield take(props => {\n const { type } = props;\n return actionsToTrack.includes(type);\n });\n\n if (!isModalFirstOpened) {\n currentActionCount = yield call(StorageHelper.incrementCounter, { key: SIGNUP_ACTION_COUNTER_KEY });\n }\n\n if (currentActionCount === SIGNUP_ACTION_LIMIT && !isModalFirstOpened) {\n // Show signup modal\n yield put(showGenericModalAction({ name: MODALS.GUEST_LOGIN_MODAL }));\n isModalFirstOpened = true;\n StorageHelper.removeLocalStorageItem({ key: SIGNUP_ACTION_COUNTER_KEY });\n }\n }\n}\n","import { put, select, takeLatest } from 'redux-saga/effects';\nimport * as ACTION_TYPES from '../actionTypes';\nimport * as ACTION_CREATORS from '../actionCreators';\nimport { safeWorker } from '../utils';\nimport { checkMobilePhone } from '../../utils';\nimport { MODALS } from '../../constants/modals';\nimport { DESTINATION_TYPES } from '../../constants/navigation';\nimport { getFormIDByItemID, getProductsOfProductListByID } from '../selectors/productSelectors';\nimport { UI_PROPS } from '../../constants';\n\nfunction* watchProductItemDetails({ payload: { itemID, productProps } }) {\n const formID = yield select(getFormIDByItemID(itemID));\n const products = yield select(getProductsOfProductListByID(formID));\n const { productID, optionsValue, quantity } = productProps;\n let finalQuantity;\n const product = products.find(_product => _product.pid === productID);\n const { options = [] } = product;\n const quantityOptionIndex = options.findIndex(option => option.type === 'quantity');\n if (quantityOptionIndex !== -1) {\n if (optionsValue && optionsValue[quantityOptionIndex]) {\n finalQuantity = optionsValue[quantityOptionIndex];\n } else {\n finalQuantity = quantity;\n }\n }\n yield put(ACTION_CREATORS.addOrUpdateCartAction(formID, productID, { options: optionsValue, ...finalQuantity && { quantity: finalQuantity } }));\n}\n\nfunction* watchOpenProductDetail({ payload: { productID, itemID } }) {\n if (!checkMobilePhone()) {\n yield put(ACTION_CREATORS.showGenericModalAction({ name: MODALS.PRODUCT_ITEM_DETAIL_MODAL, itemID, productID }));\n } else {\n yield put(ACTION_CREATORS.setUIProp(UI_PROPS.activeProductDetail, { itemID, productID }));\n yield put(ACTION_CREATORS.navigateToAction({\n to: DESTINATION_TYPES.SPECIAL_PAGE, pageID: 'product', itemID, productID\n }));\n }\n}\n\nexport default function* productDetailSaga() {\n yield takeLatest(ACTION_TYPES.PRODUCT_ITEM_DETAIL.REQUEST, safeWorker(watchProductItemDetails));\n yield takeLatest(ACTION_TYPES.OPEN_PRODUCT_DETAIL, watchOpenProductDetail);\n}\n","import {\n takeEvery, put, select, call, spawn\n} from 'redux-saga/effects';\nimport { t } from '@jotforminc/translation';\nimport { PaymentActions } from '@jotforminc/payment-settings-editor';\nimport * as ACTION_TYPES from '../actionTypes';\nimport SELECTORS from '../selectors';\nimport { safeWorker } from '../utils';\nimport productDetailsAction from './productDetails';\n\nconst PAYMENT_SETTINGS_EDITOR = {\n PRODUCT: '@PRODUCTS/UPDATE_PRODUCT',\n PAYMENT_SETTINGS: '@PRODUCT_LIST/UPDATE_PRODUCT_LIST_SETTINGS'\n};\n\nfunction* watchProductListActions({ payload }) {\n const {\n products = [],\n itemID: targetItemID\n } = payload;\n\n const [selectedItemID] = yield select(SELECTORS.getSelectedPortalItems);\n\n let itemID = targetItemID || selectedItemID;\n if (!itemID) {\n const allProductList = yield select(SELECTORS.getProductListItems);\n const firstProductItemEl = document.querySelector('div[type=\"PRODUCT_LIST\"]');\n\n if (firstProductItemEl) {\n firstProductItemEl.scrollIntoView({ behavior: 'smooth', block: 'center' });\n itemID = allProductList[0]?.id;\n }\n }\n\n const itemProps = yield select(SELECTORS.getItemWithDefaults(itemID));\n const prop = {\n ...itemProps,\n products\n };\n\n yield put({ type: ACTION_TYPES.UPDATE_ITEM_PROP.WITHOUT_DEBOUNCE, payload: { itemID, prop } });\n}\n\nfunction* watchAddProductListItem({ payload }) {\n const { itemID, formID, data = {} } = payload;\n\n const { products: _products = [] } = yield select(SELECTORS.getItemWithDefaults(itemID));\n\n // Please don't spread. Talk to burak@phx\n const getDefaultProductData = () => ({\n name: t('Product Name'),\n description: t('Product Description'),\n images: JSON.stringify(['https://cdn.jotfor.ms/assets/img/payments/sample_image-4.png']),\n options: JSON.stringify([{\n type: 'quantity', properties: '1\\n2\\n3\\n4\\n5\\n6\\n7\\n8\\n9\\n10', name: 'Quantity', defaultQuantity: '', specialPricing: false, specialPrices: '', expanded: false\n }]),\n price: 10,\n fitImageToCanvas: 'Yes'\n });\n\n const productData = { ...getDefaultProductData(), ...data };\n const product = yield call(PaymentActions.createProduct, formID, productData);\n\n const products = [..._products, product];\n\n yield put({ type: ACTION_TYPES.PRODUCT_LIST_CHANGE, payload: { itemID, products, type: PAYMENT_SETTINGS_EDITOR.PRODUCT } });\n\n yield put({ type: ACTION_TYPES.ADD_PRODUCT_LIST_ITEM.SUCCESS });\n}\n\nfunction* watchUpdateProductListItem({ payload }) {\n const {\n itemID, formID, productIndex, prop, value, productID: _productID\n } = payload;\n\n const { products: _products = [] } = yield select(SELECTORS.getItemWithDefaults(itemID));\n\n const productID = _productID || _products[productIndex].pid;\n\n const products = _products.map(p => {\n return parseInt(p.pid, 10) === parseInt(productID, 10) ? ({ ...p, [prop]: value }) : p;\n });\n\n yield put({ type: ACTION_TYPES.PRODUCT_LIST_CHANGE, payload: { itemID, products } });\n\n yield call(PaymentActions.updateProduct, formID, productID, { [prop]: value });\n\n yield put({ type: ACTION_TYPES.UPDATE_PRODUCT_LIST_ITEM.SUCCESS });\n}\n\nfunction* watchDeleteProductListItem({ payload }) {\n const {\n itemID, formID, productID\n } = payload;\n\n // delete active product\n yield put({ type: ACTION_TYPES.SET_ACTIVE_PRODUCT, payload: {} });\n\n const response = yield call(PaymentActions.removeProduct, formID, productID);\n\n yield put({ type: ACTION_TYPES.PRODUCT_LIST_CHANGE, payload: { itemID, products: response } });\n\n yield put({ type: ACTION_TYPES.UPDATE_PRODUCT_LIST_ITEM.SUCCESS });\n}\n\nexport default function* productListActionSagas() {\n yield takeEvery(ACTION_TYPES.PRODUCT_LIST_CHANGE, watchProductListActions);\n yield takeEvery(ACTION_TYPES.ADD_PRODUCT_LIST_ITEM.UNDOABLE, safeWorker(watchAddProductListItem));\n yield takeEvery(ACTION_TYPES.UPDATE_PRODUCT_LIST_ITEM.UNDOABLE, safeWorker(watchUpdateProductListItem));\n yield takeEvery(ACTION_TYPES.DELETE_PRODUCT_LIST_ITEM.UNDOABLE, safeWorker(watchDeleteProductListItem));\n yield spawn(productDetailsAction);\n}\n","import {\n call, take, takeLatest, delay, race, put\n} from 'redux-saga/effects';\nimport { SET_API_REQUESTS_COMPLETED } from '../actionTypes';\nimport { COLLABORATION } from '../../constants';\nimport { showGenericModalAction } from '../actionCreators';\nimport { MODALS } from '../../constants/modals';\n\nfunction* collaborationFlow() {\n yield takeLatest(SET_API_REQUESTS_COMPLETED, function* collabrationSaga() {\n yield race({\n task: call(function* collabrationSagafn() {\n yield delay((COLLABORATION.TIMEOUT_SECOND - COLLABORATION.COUNTDOWN_SECOND) * 1000);\n yield put(showGenericModalAction({ name: MODALS.TEAM_STILL_EDITING }));\n }),\n cancel: take(SET_API_REQUESTS_COMPLETED)\n });\n });\n}\n\nexport default collaborationFlow;\n","import Styled from 'styled-components';\nimport { mainFontColor } from '../../../styles/colors';\nimport ScToast from '../ScToast';\n\nconst ScShoppingNotification = Styled(ScToast)`\n background-color: #fff;\n flex-wrap: wrap;\n\n .title {\n display: flex;\n flex: 0 0 100%;\n font-weight: 700;\n\n .message {\n ${({ color }) => {\n switch (color) {\n case 'green':\n return 'color: #78BB07;';\n case 'red':\n return 'color: #FC0000;';\n case 'pink':\n return 'color: #FF68B0;';\n case 'grey':\n return 'color: #6F76A7;';\n default:\n return 'color: #6F76A7';\n }\n }\n}\n }\n\n .icon {\n flex: 0 0 auto;\n margin-right: 8px;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n }\n\n .product {\n display: flex;\n flex: 0 0 100%;\n color: ${mainFontColor};\n margin-top: 13px;\n\n .simple-product-item {\n display: flex;\n }\n\n .product-image {\n display: flex;\n border: 1px solid #D3DCEF;\n border-radius: 4px;\n flex: 0 0 auto;\n margin-right: 16px;\n\n img {\n width: 90px;\n height: 48px;\n border-radius: 3px;\n }\n }\n\n .product-content {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n align-content: center;\n\n &-name {\n flex: 1 1 100%;\n }\n\n &-amount {\n flex: 1 1 100%;\n text-transform: capitalize;\n }\n }\n\n .info {\n flex: 1 1 100%;\n }\n }\n`;\n\nexport default ScShoppingNotification;\n","import React from 'react';\nimport { shape, string } from 'prop-types';\nimport { navigate } from '@reach/router';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { t } from '@jotforminc/translation';\nimport { IconCheckCircleFilled, IconHeartCircleFilled, IconTrashFilled } from '@jotforminc/svg-icons';\nimport { Button } from '@jotforminc/magnet';\nimport ScShoppingNotification from './ScShoppingNotification';\nimport { SHOPPING_NOTIFICATION_TYPES } from '../../../constants';\nimport { generateAppURL } from '../../../utils/navigation';\nimport SELECTORS from '../../../store/selectors';\nimport SimpleProductItem from '../../../modules/PublicApp/SimpleProductItem';\nimport { navigateToAction } from '../../../store/actionCreators';\nimport { DESTINATION_TYPES } from '../../../constants/navigation';\nimport { useFormattedPrice } from '../../../utils/hooks';\n\nconst {\n ADD_PRODUCT, DELETE_PRODUCT, FAVORITE_PRODUCT, UNFAVORITE_PRODUCT\n} = SHOPPING_NOTIFICATION_TYPES;\n\nconst MAP = {\n [ADD_PRODUCT]: { Icon: () => , message: 'Item added to your cart', color: 'green' },\n [DELETE_PRODUCT]: {\n Icon: () => (\n
    \n \n
    \n ),\n message: 'Item deleted from your cart',\n color: 'red'\n },\n [FAVORITE_PRODUCT]: { Icon: () => , message: 'Item added to your favorites', color: 'pink' },\n [UNFAVORITE_PRODUCT]: { Icon: () => , message: 'Item removed from your favorites', color: 'grey' }\n};\n\n// todo :: get icon type from constant, not string\n\nconst ShoppingNotification = ({ type, product }) => {\n const { Icon, message, color } = MAP[type];\n\n const dispatch = useDispatch();\n const appID = useSelector(SELECTORS.getAppID);\n\n const getFormattedPrice = useFormattedPrice();\n\n const cartUrl = generateAppURL({\n appID,\n pageID: 'cart',\n absolutePath: false\n });\n\n const handleViewCart = () => {\n dispatch(navigateToAction({ to: DESTINATION_TYPES.SPECIAL_PAGE, pageID: 'cart' }));\n };\n\n const handleViewFavorites = () => navigate(cartUrl, { state: { activeTab: 'Fav' } });\n\n const { price = '' } = product || {};\n\n const handleOrderNow = () => {\n dispatch(navigateToAction({ to: DESTINATION_TYPES.SPECIAL_PAGE, pageID: 'checkout' }));\n };\n\n return (\n \n
    \n
    \n
    {t(message)}
    \n
    \n\n {product && (\n <>\n
    \n \n
    \n
    \n {type === FAVORITE_PRODUCT ? (\n \n {t('View My Favorites')}\n \n ) : (\n <>\n \n {t('View My Cart')}\n \n \n \n )}\n
    \n \n )}\n
    \n );\n};\n\nShoppingNotification.propTypes = {\n type: string,\n product: shape({})\n};\n\nShoppingNotification.defaultProps = {\n type: 'default',\n product: null\n};\n\nexport default ShoppingNotification;\n","import React from 'react';\nimport {\n call, put, select, spawn, take, takeEvery\n} from 'redux-saga/effects';\nimport { toast } from 'react-toastify';\nimport ShoppingNotification from '../../components/Toaster/ShoppingNotification/ShoppingNotification';\nimport { APP_TOAST, APP_TOAST_STACK } from '../actionTypes';\nimport SELECTORS from '../selectors';\nimport { checkMobilePhone } from '../../utils';\n\nconst toastIt = ({\n payload, type, currentStack\n}) => new Promise((resolve, reject) => {\n const { backdrop, product = null } = payload;\n\n let options = {\n autoClose: 3e3,\n delay: 150,\n newestOnTop: true\n };\n\n if (backdrop) {\n options = {\n ...options,\n autoClose: false,\n closeOnClick: false,\n draggable: false\n };\n }\n\n // may be different notification type?\n let NotificationComponent;\n\n switch (type) {\n case APP_TOAST.SHOPPING_NOTIFICATION:\n NotificationComponent = ShoppingNotification;\n\n if (product) {\n options = {\n ...options,\n autoClose: 6e3,\n pauseOnHover: true\n };\n }\n break;\n default:\n break;\n }\n\n try {\n const currentActiveStack = currentStack.filter(id => toast.isActive(id));\n const isStackOverFlow = (currentActiveStack.length + 1) >= 2;\n\n if (isStackOverFlow) {\n const willBeUnmountID = currentActiveStack.pop();\n toast.dismiss(willBeUnmountID);\n }\n\n if (isStackOverFlow) {\n setTimeout(() => {\n const toastID = toast(, options);\n resolve(toastID);\n }, 210);\n } else {\n const toastID = toast(, options);\n resolve(toastID);\n }\n } catch (e) {\n reject(e);\n }\n});\n\nfunction* watchToastStackChange({ payload }) {\n const toastID = payload;\n const currentStack = yield select(SELECTORS.getAppToastStack);\n const currentActiveStack = currentStack.filter(id => toast.isActive(id));\n\n const newStack = [toastID, ...currentActiveStack];\n const isStackOverFlow = newStack.length >= 3;\n if (isStackOverFlow) {\n newStack.pop();\n }\n\n yield put({ type: APP_TOAST_STACK.SUCCESS, payload: newStack });\n}\n\nfunction* watchAppToastActions() {\n const isMobile = checkMobilePhone();\n if (!isMobile) {\n while (true) {\n const action = yield take(({ type }) => type.startsWith('@APP_TOAST'));\n const currentStack = yield select(SELECTORS.getAppToastStack);\n const toastID = yield call(toastIt, { ...action, currentStack });\n yield put({ type: APP_TOAST_STACK.REQUEST, payload: toastID });\n }\n }\n}\n\nexport default function* appToastSagas() {\n yield spawn(watchAppToastActions);\n yield takeEvery(APP_TOAST_STACK.REQUEST, watchToastStackChange);\n}\n","import { select, takeEvery, put } from 'redux-saga/effects';\nimport { SEARCH_IN_PRODUCTS } from '../actionTypes';\nimport SELECTORS from '../selectors';\nimport { showGenericModalAction } from '../actionCreators';\nimport { MODALS } from '../../constants/modals';\n\nfunction* watchSearchInputClicked() {\n const productLists = yield select(SELECTORS.getProductListItems);\n const areMultiProductListsExist = productLists.length > 0;\n\n if (areMultiProductListsExist) {\n yield put(showGenericModalAction({ name: MODALS.SEARCH_IN_PRODUCTS_MODAL }));\n }\n}\n\nexport default function* filterProductSaga() {\n yield takeEvery(SEARCH_IN_PRODUCTS, watchSearchInputClicked);\n}\n","import KeyboardJS from 'keyboardjs';\nimport { us } from 'keyboardjs/locales/us';\n\nconst Keyboard = new KeyboardJS.Keyboard();\n\nKeyboard.setLocale('us', us);\n\nexport default Keyboard;\n","import {\n takeEvery, select, put, call\n} from 'redux-saga/effects';\nimport { eventChannel } from 'redux-saga';\nimport isEmpty from 'lodash/isEmpty';\nimport SELECTORS from './selectors';\nimport * as ACTION_CREATORS from './actionCreators';\nimport keyboard from '../keyboard';\nimport { checkMacOSx, getTeamID } from '../utils';\nimport { getUndoRedoBindings } from '../modules/Builder/constants/undoRedo';\nimport { teamLog } from '../modules/api';\n\nconst keyboardEventChannel = (keys, preventDefault = false) => eventChannel(emitter => {\n const handlePress = e => {\n if (\n !(document.activeElement instanceof global.HTMLInputElement)\n && !(document.activeElement instanceof global.HTMLTextAreaElement)\n && !document.activeElement?.hasAttribute('contentEditable')\n ) {\n if (preventDefault) e.preventDefault();\n emitter(e);\n }\n };\n keyboard.bind(keys, handlePress);\n return () => {\n keyboard.unbind(keys, handlePress);\n };\n});\n\nconst globalEventChannel = event => eventChannel(emitter => {\n global.addEventListener(event, emitter);\n return () => {\n global.removeEventListener(event, emitter);\n };\n});\n\nfunction* watchDeletePressed() {\n const isUIBlocked = yield select(SELECTORS.isUIBlockedSelector);\n const isBuildTab = yield select(SELECTORS.getIsBuildTab);\n const selectedPortalItem = yield select(SELECTORS.getSelectedPortalItem);\n const activeModal = yield select(SELECTORS.getActiveModal);\n const isModalOpen = !!activeModal && activeModal.name !== '';\n\n if (selectedPortalItem && !isUIBlocked && isBuildTab && !isModalOpen) {\n yield put(ACTION_CREATORS.removeSelectedItemsAction());\n }\n}\n\nfunction* watchSelectAllPressed() {\n const isUIBlocked = yield select(SELECTORS.isUIBlockedSelector);\n const isBuildTab = yield select(SELECTORS.getIsBuildTab);\n if (!isUIBlocked && isBuildTab) {\n yield put(ACTION_CREATORS.trackEventAction({ action: 'selectAllViaKeyboard' }));\n yield put(ACTION_CREATORS.selectAllItemsAction());\n }\n}\n\nfunction* watchUndoPressed() {\n const isUIBlocked = yield select(SELECTORS.isUIBlockedSelector);\n const hasUndo = yield select(SELECTORS.hasUndoSelector);\n if (!isUIBlocked && hasUndo) {\n yield put(ACTION_CREATORS.trackEventAction({ action: 'undoRequestViaKeyboard' }));\n yield put(ACTION_CREATORS.undoAction());\n }\n}\n\nfunction* watchRedoPressed() {\n const isUIBlocked = yield select(SELECTORS.isUIBlockedSelector);\n const hasRedo = yield select(SELECTORS.hasRedoSelector);\n if (!isUIBlocked && hasRedo) {\n yield put(ACTION_CREATORS.trackEventAction({ action: 'redoRequestViaKeyboard' }));\n yield put(ACTION_CREATORS.redoAction());\n }\n}\n\nfunction* watchOnStageClick(e) {\n const excludedPaymentSelectors = `#headlessui-portal-root,\n #detach-connection-dialog, .magnet-colorpicker, #gateway-connection-modal-container,\n #connection-switch-dialog\n `;\n const excludedSelectors = `.select-formCont li, [data-uikit-modal-container=true], .rightPanelContainer, .toolbox,\n .appHeader, .appLogo-cont, .addButton, .mce-container, .mce-reset, .mce-ico, .mce-window-head, .leftPanelContainer,\n .subheaderActions, .multipleSelectionSubHeader, .itemListWrapper, .pageInlineEdit, .dashedLineButton, .forAddIcon, .payment-modal-container, .portal-new-dropdown-wrapper, \n #navigation-settings-button, .previewToggleWrapper, label.togglePreview, #CookieBannerNotice, ${excludedPaymentSelectors}`;\n const excludedElements = excludedSelectors ? global.document.querySelectorAll(excludedSelectors) : [];\n const isExcludedElement = [...excludedElements].find(el => el.contains(e.target));\n if (!isExcludedElement) {\n yield put(ACTION_CREATORS.onStageClick());\n }\n}\n\nfunction* watchOnTeamBeforeUnload() {\n const appID = yield select(SELECTORS.getAppID);\n const editingResourceInfo = yield select(SELECTORS.getEditingResourceInfo);\n if (isEmpty(editingResourceInfo)) yield call(teamLog, appID, 'editingReleased');\n}\n\nfunction* watchArrowUpDownPressed(e) {\n const activeElement = document?.activeElement;\n if (activeElement?.className?.includes('builderItem')) {\n switch (e.keyCode) {\n case 40:\n activeElement?.nextSibling?.focus();\n break;\n case 38:\n activeElement?.previousSibling?.focus();\n break;\n default:\n break;\n }\n }\n yield;\n}\n\nexport default function* eventsFlow() {\n const isBuilder = yield select(SELECTORS.getIsBuilder);\n if (isBuilder) {\n const [undoBinding, redoBinding] = getUndoRedoBindings();\n yield takeEvery(keyboardEventChannel(['delete', 'del']), watchDeletePressed);\n yield takeEvery(keyboardEventChannel([`${checkMacOSx() ? 'command' : 'ctrl'} + a`], true), watchSelectAllPressed);\n yield takeEvery(keyboardEventChannel([undoBinding], true), watchUndoPressed);\n yield takeEvery(keyboardEventChannel([redoBinding], true), watchRedoPressed);\n yield takeEvery(keyboardEventChannel(['up', 'down']), watchArrowUpDownPressed);\n yield takeEvery(globalEventChannel('mousedown'), watchOnStageClick);\n if (getTeamID()) {\n yield takeEvery(globalEventChannel('beforeunload'), watchOnTeamBeforeUnload);\n }\n }\n}\n","import TrackingManager from '@jotforminc/tracking';\nimport { select, take } from 'redux-saga/effects';\nimport { StorageHelper } from '@jotforminc/storage-helper';\nimport * as ACTION_TYPES from '../actionTypes';\nimport SELECTORS from '../selectors';\nimport { MODALS } from '../../constants/modals';\nimport { isYes } from '../../utils';\n\nconst activateFullStory = (user, customProps = {}) => {\n const {\n account_type: accountType,\n email,\n identifier,\n isAppFirstUser,\n username,\n name\n } = user;\n\n if (\n TrackingManager.FSisInitialized()\n || ['ADMIN', 'SUPPORT', 'INTERN', 'HELPDESK'].includes(accountType?.name)\n ) {\n return;\n }\n\n const userParams = {\n displayName: name,\n accountType: accountType?.name,\n email,\n ...customProps,\n isAppFirstUser,\n appBuilder_bool: true\n };\n\n TrackingManager.enableFS();\n TrackingManager.identify(identifier || username, userParams);\n};\n\nexport function* activateFullStoryOnTheFly() {\n const isBuilder = yield select(SELECTORS.getIsBuilder);\n\n while (isBuilder) {\n const action = yield take([\n ACTION_TYPES.ADD_PORTAL_ITEMS.SUCCESS,\n ACTION_TYPES.FETCH_PORTAL.SUCCESS,\n ACTION_TYPES.CREATE_NEW_PORTAL.SUCCESS,\n ACTION_TYPES.CREATE_PORTAL_WITH_DONATION,\n ACTION_TYPES.CREATE_PORTAL_WITH_STORE,\n ACTION_TYPES.SHOW_MODAL,\n ACTION_TYPES.ENABLE_PUSH_NOTIFICATION,\n ACTION_TYPES.NAVIGATE_TO,\n ACTION_TYPES.SEND_FEEDBACK.REQUEST,\n ACTION_TYPES.AI_SHOW_ASSISTANT,\n ACTION_TYPES.AI_ADD_CHAT_MESSAGE\n ]);\n\n const user = yield select(SELECTORS.getUser);\n const { payload: items = [] } = action;\n\n const isShoppingApp = yield select(SELECTORS.getIsShoppingApp);\n const isDonationApp = yield select(SELECTORS.getIsDonationApp);\n const { pushNotification } = yield select(SELECTORS.getAppInfoWithDefaults);\n\n const customProps = {\n isStoreApp: isShoppingApp,\n isDonationApp: isDonationApp\n };\n\n const startTracking = props => activateFullStory(user, props);\n const enableTracking = isShoppingApp || isDonationApp || user.isAppFirstUser;\n\n const appEventsToBeSent = [];\n\n const appCreationSourceMap = {\n [ACTION_TYPES.CREATE_NEW_PORTAL.SUCCESS]: 'from-scratch',\n [ACTION_TYPES.CREATE_PORTAL_WITH_DONATION]: 'with-donation',\n [ACTION_TYPES.CREATE_PORTAL_WITH_STORE]: 'with-store',\n [ACTION_TYPES.FETCH_PORTAL.SUCCESS]: 'unknown'\n };\n\n let appCreationSource = appCreationSourceMap[action.type];\n\n switch (appCreationSource) {\n case 'from-scratch':\n if (action.payload.formIDs) {\n appCreationSource = 'with-form';\n break;\n }\n if (action.payload.widgetDefaults) {\n appCreationSource = 'with-element';\n break;\n }\n break;\n case 'unknown':\n appCreationSource = StorageHelper.getSessionStorageItem({\n key: 'app-creation-source'\n }) || undefined;\n\n StorageHelper.removeSessionStorageItem({ key: 'app-creation-source' });\n break;\n default:\n break;\n }\n\n if (appCreationSource) {\n appEventsToBeSent.push(() => TrackingManager.event('app-creation', { source_str: appCreationSource }));\n }\n\n const isExitIntentSurvey = items.name === MODALS.EXIT_INTENT_SURVEY_MODAL;\n\n if (isExitIntentSurvey) {\n appEventsToBeSent.push(() => TrackingManager.event('exit-intent-survey'));\n }\n\n if (isYes(items.enabledPushNotification)) {\n appEventsToBeSent.push(() => TrackingManager.event('push-notification-enabled'));\n }\n\n if (items.subTab === 'pushNotification' && isYes(pushNotification)) {\n appEventsToBeSent.push(() => TrackingManager.event('clicked-push-notification-with-enabled'));\n }\n\n if (action.type === ACTION_TYPES.SEND_FEEDBACK.REQUEST) {\n appEventsToBeSent.push(() => TrackingManager.event('sent-feedback', { stars: items.stars }));\n }\n\n if (isYes(items.aiIsShow)) {\n appEventsToBeSent.push(() => TrackingManager.event('app-builder-copilot', { from: 'app-builder', action: 'click-copilot-button' }));\n }\n\n if (isYes(items.prompt)) {\n appEventsToBeSent.push(() => TrackingManager.event('app-builder-copilot', { from: 'app-builder', action: 'send-prompt-message' }));\n }\n\n if (!enableTracking && !appEventsToBeSent.length) {\n return;\n }\n\n startTracking(customProps);\n appEventsToBeSent.forEach(event => event());\n }\n}\n","import {\n call, put, select, takeEvery\n} from 'redux-saga/effects';\nimport { getCorrectedQuantity } from '../../utils/paymentUtils';\nimport * as ACTION_TYPES from '../actionTypes';\nimport SELECTORS from '../selectors';\nimport * as ACTION_CREATORS from '../actionCreators';\nimport { SHOPPING_NOTIFICATION_TYPES } from '../../constants';\nimport { DESTINATION_TYPES } from '../../constants/navigation';\nimport * as API from '../../modules/api';\n\nfunction* watchAddOrUpdateCart({ payload: { formID, productID, data } }) {\n const { options: payloadOptions, quantity: payloadQuantity } = data;\n const defaultProduct = yield select(SELECTORS.getProduct(formID, productID));\n const isFastCheckoutActive = yield select(SELECTORS.getIsFastCheckoutActive);\n const currentCartProducts = yield select(SELECTORS.getCart);\n const appID = yield select(SELECTORS.getPortalIDSelector);\n let productListCartProducts = currentCartProducts[formID] || [];\n const correctedQuantity = getCorrectedQuantity(payloadQuantity, defaultProduct);\n const productInCart = productListCartProducts.find(_product => _product.pid === productID);\n const itemID = yield select(SELECTORS.getItemIDByFormID(formID));\n\n const newProduct = productInCart || defaultProduct;\n const { options = [] } = newProduct;\n const quantityOptionIndex = options.findIndex(option => option.type === 'quantity');\n const hasQuantityOption = quantityOptionIndex !== -1;\n\n if (payloadOptions) { // It includes quantity option as well when we have one\n newProduct.options = newProduct.options.map((option, index) => (\n { ...option, selected: payloadOptions[index] }\n ));\n } else if (hasQuantityOption) {\n newProduct.options[quantityOptionIndex].selected = correctedQuantity;\n }\n newProduct.quantity = correctedQuantity;\n\n if (productInCart) {\n if (correctedQuantity === 0) { // Item deletion\n productListCartProducts = productListCartProducts.filter(product => product.pid !== productID);\n } else {\n productListCartProducts = productListCartProducts.map(product => (\n product.pid === productID ? newProduct : product\n ));\n }\n } else { // First addition\n if (!isFastCheckoutActive) {\n yield put(ACTION_CREATORS.shoppingToastAction({\n type: SHOPPING_NOTIFICATION_TYPES.ADD_PRODUCT,\n product: newProduct,\n itemID\n }));\n }\n productListCartProducts.push(newProduct);\n }\n const allCartProducts = !isFastCheckoutActive\n ? { ...currentCartProducts, [formID]: productListCartProducts }\n // Add selected item only, it will be cleared when another product is selected.\n : { [formID]: [newProduct] };\n\n if (correctedQuantity === 0) {\n yield put(ACTION_CREATORS.shoppingToastAction({\n type: SHOPPING_NOTIFICATION_TYPES.DELETE_PRODUCT\n }));\n }\n\n const result = yield call(API.updateCart, appID, JSON.stringify(allCartProducts));\n const { checkoutKey } = result;\n\n yield put(ACTION_CREATORS.setCartProductsAction(allCartProducts));\n\n if (checkoutKey) {\n yield put(ACTION_CREATORS.setCheckoutKeyAction(checkoutKey));\n }\n\n if (isFastCheckoutActive) {\n yield put(ACTION_CREATORS.navigateToAction({ to: DESTINATION_TYPES.SPECIAL_PAGE, pageID: 'checkout' }));\n }\n}\n\nfunction* watchFavoriteProduct({ payload: { itemID, productID, noNotification = false } }) {\n const allFavoriteProducts = yield select(SELECTORS.getAllFavoriteProducts);\n const portalID = yield select(SELECTORS.getPortalIDSelector);\n const product = yield select(SELECTORS.getFormProductListProduct(itemID, productID));\n\n const currentItemFavoriteProducts = allFavoriteProducts[itemID] || [];\n\n const isProductInFavorites = currentItemFavoriteProducts.find(id => id === productID);\n\n const notificationType = isProductInFavorites ? SHOPPING_NOTIFICATION_TYPES.UNFAVORITE_PRODUCT : SHOPPING_NOTIFICATION_TYPES.FAVORITE_PRODUCT;\n\n // Toggle favorite products\n const itemFavoriteProducts = isProductInFavorites ? currentItemFavoriteProducts.filter(id => id !== productID) : [...currentItemFavoriteProducts, productID];\n\n const favoriteProducts = { ...allFavoriteProducts, [itemID]: itemFavoriteProducts };\n\n yield call(API.updatePortalUserProperty, portalID, { favoriteProducts: JSON.stringify(favoriteProducts) });\n yield put(ACTION_CREATORS.setFavoriteProductsAction(favoriteProducts));\n\n if (!noNotification) {\n yield put(ACTION_CREATORS.shoppingToastAction({\n type: notificationType,\n ...notificationType === SHOPPING_NOTIFICATION_TYPES.FAVORITE_PRODUCT && { product }\n }));\n }\n}\n\nfunction* watchAddToCart({ payload: { productID, itemID, action } }) {\n const itemProps = yield select(SELECTORS.getItemWithDefaults(itemID));\n const { products, formID } = itemProps;\n\n const { options = [] } = products.find(product => product.pid === productID);\n\n const hasCustomOptions = options.find(option => option?.type !== 'quantity');\n\n if (hasCustomOptions) {\n yield put(ACTION_CREATORS.openProductDetailAction({ productID, itemID }));\n return;\n }\n\n yield put(ACTION_CREATORS.addOrUpdateCartAction(formID, productID, action));\n}\n\nfunction* watchProductListItemSelections() {\n const activeProduct = yield select(SELECTORS.getActiveProduct);\n if (activeProduct?.productID) {\n yield put(ACTION_CREATORS.setActiveProduct('', ''));\n }\n}\n\nexport default function* productListSagas() {\n yield takeEvery(ACTION_TYPES.FAVORITE_PRODUCT, watchFavoriteProduct);\n yield takeEvery(ACTION_TYPES.ADD_OR_UPDATE_CART, watchAddOrUpdateCart);\n yield takeEvery(ACTION_TYPES.ON_PRODUCT_ADD_TO_CART, watchAddToCart);\n yield takeEvery(ACTION_TYPES.SELECT_PORTAL_ITEM, watchProductListItemSelections);\n}\n","/* eslint-disable no-param-reassign */\nimport { eventChannel } from 'redux-saga';\nimport { ITEM_PROP_TYPE_VERSION, ITEM_TYPES } from '../../constants/itemTypes';\nimport { CARD_ACTION_VALUES } from '../../modules/Builder/components/HomePage/RightPanel/constants';\n\nexport const shouldUpdatePropFromResponse = (type, updatingProps) => {\n let shouldUpdate = false;\n switch (type) {\n case ITEM_TYPES.HEADING:\n case ITEM_TYPES.WIDGET:\n updatingProps = { ...updatingProps, version: ITEM_PROP_TYPE_VERSION };\n break;\n case ITEM_TYPES.CARD_ITEM: {\n const { buttonValue = null, buttonRole = '' } = updatingProps;\n if (buttonRole === CARD_ACTION_VALUES.FORM && buttonValue) {\n shouldUpdate = true;\n }\n\n break;\n }\n case ITEM_TYPES.BUTTON:\n if ('buttonValue' in updatingProps) {\n shouldUpdate = true;\n }\n break;\n\n default:\n break;\n }\n\n return shouldUpdate;\n};\n\nexport const resultMutaters = currentItem => ({\n [ITEM_TYPES.CARD_ITEM]: result => {\n const {\n formTitle, buttonRole, buttonValue, title\n } = result[currentItem?.id];\n return {\n [currentItem.id]: {\n formTitle,\n buttonRole,\n buttonValue,\n title\n }\n };\n }\n});\n\nexport const eventChannelRegistry = () => {\n const channels = [];\n\n const register = fn => {\n const channel = eventChannel(fn);\n channels.push(channel);\n return channel;\n };\n\n const closeAll = () => {\n channels.forEach(channel => channel.close());\n };\n\n return {\n register,\n closeAll\n };\n};\n\nexport const AiChangesdList = (messages = {}, changes = {}) => {\n const changesInPages = changes.create.pages;\n\n if (changesInPages.length === 0) return false;\n\n const formatString = element => {\n const elementValue = element.type === 'WIDGET' ? element.widgetSlug : element.type;\n return elementValue.toLowerCase().split('_').join(' ');\n };\n\n const newMessages = [...messages];\n let lastMessage = { ...messages[messages.length - 1] };\n let messageContent = lastMessage.content;\n\n messageContent += `\n
    \n Created\n `;\n\n changesInPages.forEach(change => {\n let messageItem = `
    ${change.name}:`;\n messageItem += '
      ';\n change.elements.forEach(element => {\n messageItem += `
    • ${formatString(element)}
    • `;\n });\n messageContent += `${messageItem}
    `;\n });\n\n messageContent += '
    ';\n\n lastMessage = {\n ...lastMessage,\n content: `${messageContent}`\n };\n\n newMessages[newMessages.length - 1] = lastMessage;\n\n return newMessages;\n};\n","import {\n call, put, select, takeEvery\n} from 'redux-saga/effects';\nimport * as ACTION_TYPES from '../actionTypes';\nimport SELECTORS from '../selectors';\nimport * as API from '../../modules/api';\nimport { isFeatureEnabled } from '../../utils/features/helper';\nimport { FEATURE_NAMES } from '../../constants/features';\nimport { AiChangesdList } from './helper';\nimport { AB_TESTS, logAbTestActionFor } from '../../utils/abtests';\nimport { isCreateAppWithCopilot } from '../../utils';\n\nconst AIMessages = {\n SOMETHING_WENT_WRONG: 'Sorry, something went wrong. Please try again later.'\n};\n\nconst withActions = isFeatureEnabled(FEATURE_NAMES.CopilotWithActions);\n\nfunction* fetchAIChatMessages() {\n const appID = yield select(SELECTORS.getAppID);\n\n try {\n const { messages } = yield call(API.aiFetchChatMessages, appID);\n if (!messages) {\n console.error('Expected messages on fetch chat messages but received: ', messages);\n return;\n }\n yield put({ type: ACTION_TYPES.AI_SET_MESSAGES, payload: messages });\n } catch (err) {\n console.log(err);\n }\n}\n\nfunction* addChatMessage({ payload }) {\n const appID = yield select(SELECTORS.getAppID);\n const { prompt: message } = payload;\n\n try {\n const { messages, portal, changes } = yield call(API.aiAddChatMessage, { appID, message, withActions });\n if (!messages) {\n console.error('Expected messages on add chat message but received: ', messages);\n yield put({ type: ACTION_TYPES.AI_SHOW_ERROR_MESSAGE, payload: AIMessages.SOMETHING_WENT_WRONG });\n return;\n }\n yield put({ type: ACTION_TYPES.AI_SET_MESSAGES, payload: messages });\n if (portal) {\n yield put({ type: ACTION_TYPES.UPDATE_PORTAL.SUCCESS, payload: portal });\n }\n if (changes) {\n const newMessages = AiChangesdList(messages, changes);\n if (newMessages) {\n yield put({ type: ACTION_TYPES.AI_SET_MESSAGES, payload: newMessages });\n }\n }\n document.querySelector('.ai-chat-input')?.focus();\n } catch (err) {\n console.error({ err });\n yield put({ type: ACTION_TYPES.AI_SHOW_ERROR_MESSAGE, payload: AIMessages.SOMETHING_WENT_WRONG });\n }\n}\n\nfunction* aiAssistantFlow({ payload }) {\n const { aiIsShow } = payload;\n const isBuilder = yield select(SELECTORS.getIsBuilder);\n const isAsisstantEnabledUser = isCreateAppWithCopilot();\n if (isAsisstantEnabledUser && isBuilder && aiIsShow) {\n yield fetchAIChatMessages();\n }\n}\n\nfunction logAbTestAction(params) {\n return function* logActionFor() {\n yield call(logAbTestActionFor, AB_TESTS.AiAssistant, params);\n };\n}\n\nexport default function* aiAssistant() {\n yield takeEvery(ACTION_TYPES.AI_SHOW_ASSISTANT, aiAssistantFlow);\n yield takeEvery(ACTION_TYPES.AI_ADD_CHAT_MESSAGE, addChatMessage);\n\n yield takeEvery(ACTION_TYPES.AI_SHOW_ASSISTANT, logAbTestAction({ action: 'click', target: 'copilot-button' }));\n yield takeEvery(ACTION_TYPES.ADD_PORTAL_ITEMS.REQUEST, logAbTestAction({ action: 'click', target: 'add-element' }));\n yield takeEvery(ACTION_TYPES.REMOVE_PORTAL_ITEMS.REQUEST, logAbTestAction({ action: 'click', target: 'remove-element' }));\n yield takeEvery(ACTION_TYPES.ADD_NEW_PAGE.REQUEST, logAbTestAction({ action: 'click', target: 'add-page' }));\n yield takeEvery(ACTION_TYPES.AI_ADD_CHAT_MESSAGE, logAbTestAction({ action: 'click', target: 'send-message' }));\n}\n","import { t } from '@jotforminc/translation';\nimport { addressHintObjectToString } from '@jotforminc/utils';\n\n// TODO: use from constants when question properties are moved to constants\nexport const getDefaultQuestionValues = () => ({\n control_textbox: {\n text: t('Type a question'),\n labelAlign: 'Auto',\n required: 'No',\n size: 20,\n validation: 'None',\n maxsize: '',\n inputTextMask: '',\n defaultValue: '',\n subLabel: '',\n hint: '',\n description: '',\n readonly: 'No'\n },\n control_phone: {\n text: t('Phone Number'),\n labelAlign: 'Auto',\n required: 'No',\n countryCode: 'No',\n inputMask: 'enable',\n inputMaskValue: '(###) ###-####',\n validation: 'None',\n description: '',\n sublabels: {\n country: t('Country Code'),\n area: t('Area Code'),\n phone: t('Phone Number'),\n full: t('Phone Number'),\n masked: ''\n },\n readonly: 'No',\n compoundHint: ''\n },\n control_address: {\n text: t('Address'),\n labelAlign: 'Auto',\n required: 'No',\n requiredInputs: 'st1|state|city|zip|country',\n selectedCountry: '',\n states: 'textbox',\n description: '',\n subfields: 'state|zip|st1|city|st2',\n sublabels: {\n addr_line1: t('Street Address'),\n addr_line2: t('Street Address Line 2'),\n city: t('City'),\n state: t('State / Province'),\n postal: t('Postal / Zip Code'),\n country: t('Country')\n },\n compoundHint: addressHintObjectToString({\n state_select: t('Please Select'),\n country_select: t('Please Select')\n }),\n countryDropdownDefaultText: t('Please Select'),\n customCountryDropdown: 'No',\n customCountryOptions: '',\n hasAutocomplete: 'No',\n hasGeolocation: 'No',\n customStateOptions: ''\n },\n control_textarea: {\n text: t('Type a question'),\n labelAlign: 'Auto',\n required: 'No',\n cols: 40,\n rows: 6,\n validation: 'None',\n entryLimitMin: 'None-0',\n entryLimit: 'None-0',\n maxsize: '',\n defaultValue: '',\n subLabel: '',\n hint: '',\n description: '',\n readonly: 'No',\n wysiwyg: 'Disable',\n mde: 'No',\n enableSentiment: 'No'\n },\n control_checkbox: {\n text: t('Type a question'),\n labelAlign: 'Auto',\n required: 'No',\n options: `${t('Type option 1')}|${t('Type option 2')}|${t('Type option 3')}|${t('Type option 4')}`,\n special: 'None',\n calcValues: '',\n allowOther: 'No',\n otherText: t('Other'),\n spreadCols: '1',\n selected: '',\n minSelection: '',\n maxSelection: '',\n description: '',\n shuffle: 'No',\n readonly: 'No'\n },\n control_radio: {\n text: t('Type a question'),\n labelAlign: 'Auto',\n required: 'No',\n options: `${t('Type option 1')}|${t('Type option 2')}|${t('Type option 3')}|${t('Type option 4')}`,\n special: 'None',\n calcValues: '',\n allowOther: 'No',\n otherText: t('Other'),\n selected: '',\n spreadCols: '1',\n description: '',\n shuffle: 'No',\n readonly: 'No'\n }\n});\n","import {\n put, take, takeEvery, select, call\n} from 'redux-saga/effects';\nimport { PaymentActions, Variables, checkIsGatewayConnectedAndTestMode } from '@jotforminc/payment-settings-editor';\nimport { arrayMove } from '@jotforminc/utils';\nimport { FEATURE_NAMES } from '../../constants/features';\nimport { isFeatureEnabled } from '../../utils/features/helper';\nimport * as ACTION_TYPES from '../actionTypes';\nimport SELECTORS from '../selectors';\nimport * as ACTION_CREATORS from '../actionCreators';\nimport { isYes } from '../../utils';\nimport { getDefaultQuestionValues } from '../../constants/questions';\nimport * as API from '../../modules/api';\n\nfunction* watchFetchQuestions({ payload: checkoutFormID }) {\n const result = yield call(PaymentActions.getQuestionProps, checkoutFormID);\n\n yield put({ type: ACTION_TYPES.FETCH_CHECKOUT_FORM_QUESTIONS.SUCCESS, payload: result });\n}\n\nfunction* watchFetchQuestionsSuccess() {\n const { connectedGateway, isGatewayConfigured, isGatewayTestMode } = yield select(SELECTORS.getGatewayProperties);\n const gatewaySettings = yield select(SELECTORS.getCheckoutFormActiveGatewaySettings);\n const checkoutFormPaymentQuestion = yield select(SELECTORS.getCheckoutFormPaymentQuestion);\n if (!checkoutFormPaymentQuestion) {\n const appID = yield select(SELECTORS.getAppID);\n try {\n const questions = yield call(API.createPaymentQuestion, appID);\n yield put({ type: ACTION_TYPES.ADD_CHECKOUT_FORM_QUESTION.SUCCESS, payload: questions[Variables.CHECKOUT_FORM_QUESTIONS.GATEWAY] });\n } catch (e) {\n console.error('Error while creating payment question', e);\n }\n }\n const { type = '' } = gatewaySettings;\n const [isConnected, isTestMode] = checkIsGatewayConnectedAndTestMode(gatewaySettings);\n if (connectedGateway !== type || isYes(isGatewayConfigured) !== isConnected || isYes(isGatewayTestMode) !== isTestMode) {\n yield put(ACTION_CREATORS.updatePortalAction({ connectedGateway: type, isGatewayConfigured: isConnected, isGatewayTestMode: isTestMode }));\n }\n}\n\nfunction* watchPaymentGatewayChanges({ payload }) {\n const { gatewaySettings, itemDeleted = 0, ...others } = payload;\n if (!isFeatureEnabled(FEATURE_NAMES.NewPaymentModal)) {\n const [isConnected, isTestMode] = checkIsGatewayConnectedAndTestMode(payload);\n const { type = '' } = payload;\n yield put(ACTION_CREATORS.updatePortalAction({ connectedGateway: type, isGatewayConfigured: isConnected, isGatewayTestMode: isTestMode }));\n yield put({ type: ACTION_TYPES.CHECKOUT_FORM_GATEWAY_SETTINGS_CHANGE.SUCCESS, payload });\n } else {\n const [isConnected, isTestMode] = checkIsGatewayConnectedAndTestMode({ ...others, ...gatewaySettings });\n const { type = '' } = payload;\n const checkoutFormID = yield select(SELECTORS.getCheckoutFormIDSelector);\n const result = yield call(PaymentActions.switchPaymentGateway, checkoutFormID, others, itemDeleted);\n if (type === 'control_iyzico' && isConnected) {\n yield put(ACTION_CREATORS.addCheckoutFormQuestion({\n type: 'control_address', name: 'address', required: 'Yes', subfields: 'state|zip|st1|city|st2|country'\n }));\n const { payload: { qid } } = yield take(ACTION_TYPES.ADD_CHECKOUT_FORM_QUESTION.SUCCESS);\n yield put(ACTION_CREATORS.updateCheckoutFormQuestion(Variables.CHECKOUT_FORM_QUESTIONS.GATEWAY.toString(), { billingAdd: qid }));\n }\n yield put(ACTION_CREATORS.updatePortalAction({ connectedGateway: type, isGatewayConfigured: isConnected, isGatewayTestMode: isTestMode }));\n yield put({ type: ACTION_TYPES.CHECKOUT_FORM_GATEWAY_SETTINGS_CHANGE.SUCCESS, payload: { ...result[0], ...(others.paymentType && { paymentType: others.paymentType }) } });\n if (gatewaySettings) {\n yield put(ACTION_CREATORS.updateCheckoutFormSettings(gatewaySettings));\n }\n }\n}\nfunction* watchCheckoutFormSettingsChanges({ payload: settings }) {\n const paymentQuestion = yield select(SELECTORS.getCheckoutFormPaymentQuestion);\n const questionFormattedSettings = Object.entries(settings).reduce((prev, [property, PropertyValue]) => {\n return { ...prev, [`question[${property}]`]: PropertyValue };\n }, {});\n const checkoutFormID = yield select(SELECTORS.getCheckoutFormIDSelector);\n const result = yield call(PaymentActions.updateActiveGatewaySettings, checkoutFormID, Variables.CHECKOUT_FORM_QUESTIONS.GATEWAY, questionFormattedSettings);\n yield put({ type: ACTION_TYPES.CHECKOUT_FORM_SETTINGS_CHANGE.SUCCESS, payload: { ...paymentQuestion, ...result[0] } });\n}\n\nfunction* watchAddQuestion({ payload: question }) {\n const checkoutFormID = yield select(SELECTORS.getCheckoutFormIDSelector);\n const lastVisibleQuestionOrder = yield select(SELECTORS.getLastVisibleQuestionOrder);\n const lastQuestionID = yield select(SELECTORS.getLastQuestionID);\n\n const { type } = question;\n\n const defaultQuestionValues = getDefaultQuestionValues()[type];\n\n // TODO: extract default props getter from form-builder\n const { questions } = yield call(PaymentActions.addCheckoutFormQuestion, checkoutFormID, {\n ...defaultQuestionValues,\n ...question,\n name: `${type.replace('control_', '')}${lastQuestionID + 1}`,\n order: lastVisibleQuestionOrder + 1\n });\n\n yield put({ type: ACTION_TYPES.ADD_CHECKOUT_FORM_QUESTION.SUCCESS, payload: questions });\n}\n\nfunction* watchRemoveQuestion({ payload: questionID }) {\n const checkoutFormID = yield select(SELECTORS.getCheckoutFormIDSelector);\n\n yield call(PaymentActions.removeCheckoutFormQuestion, checkoutFormID, questionID);\n\n yield put({ type: ACTION_TYPES.REMOVE_CHECKOUT_FORM_QUESTION.SUCCESS, payload: questionID });\n}\n\nfunction* watchSortQuestion({ payload: { oldIndex, newIndex } }) {\n const checkoutFormID = yield select(SELECTORS.getCheckoutFormIDSelector);\n const questions = yield select(SELECTORS.getCheckoutFormVisibleQuestionsArray);\n const hiddenQuestions = yield select(SELECTORS.getCheckoutFormHiddenQuestionsArray);\n\n const sortedQuestions = arrayMove([...questions, ...hiddenQuestions], oldIndex, newIndex).map((question, index) => ({ ...question, order: index + 1 }));\n\n const questionsObject = Object.fromEntries(sortedQuestions.map(question => [question.qid, question]));\n\n yield put({ type: ACTION_TYPES.SORT_CHECKOUT_FORM_QUESTION.SUCCESS, payload: questionsObject });\n\n const nakedQuestions = sortedQuestions.map(({ qid, order }) => ({ qid, order }));\n\n yield call(PaymentActions.updateCheckoutFormQuestions, checkoutFormID, nakedQuestions);\n}\n\nfunction* watchUpdateQuestion({ payload: { id, prop } }) {\n const checkoutFormID = yield select(SELECTORS.getCheckoutFormIDSelector);\n\n yield call(PaymentActions.updateCheckoutFormQuestionProp, checkoutFormID, id, prop);\n\n yield put({ type: ACTION_TYPES.UPDATE_CHECKOUT_FORM_QUESTION.SUCCESS, payload: { id, prop } });\n}\n\nexport default function* sagas() {\n yield takeEvery(ACTION_TYPES.FETCH_CHECKOUT_FORM_QUESTIONS.REQUEST, watchFetchQuestions);\n yield takeEvery(ACTION_TYPES.FETCH_CHECKOUT_FORM_QUESTIONS.SUCCESS, watchFetchQuestionsSuccess);\n yield takeEvery(ACTION_TYPES.ADD_CHECKOUT_FORM_QUESTION.REQUEST, watchAddQuestion);\n yield takeEvery(ACTION_TYPES.REMOVE_CHECKOUT_FORM_QUESTION.REQUEST, watchRemoveQuestion);\n yield takeEvery(ACTION_TYPES.UPDATE_CHECKOUT_FORM_QUESTION.REQUEST, watchUpdateQuestion);\n yield takeEvery(ACTION_TYPES.SORT_CHECKOUT_FORM_QUESTION.REQUEST, watchSortQuestion);\n yield takeEvery(ACTION_TYPES.CHECKOUT_FORM_GATEWAY_SETTINGS_CHANGE.REQUEST, watchPaymentGatewayChanges);\n yield takeEvery(ACTION_TYPES.CHECKOUT_FORM_SETTINGS_CHANGE.REQUEST, watchCheckoutFormSettingsChanges);\n}\n","import isUndefined from 'lodash/isUndefined';\nimport { DATA_SOURCE_COLUMN_TYPES, ITEM_TYPES } from '../../../constants/itemTypes';\n\nexport const strToDsFormat = str => {\n if (!str) {\n return '';\n }\n return `{${str}}`;\n};\n\nexport const detailsPageDefaultFuncsMap = {\n [DATA_SOURCE_COLUMN_TYPES.TEXT]: ({ text, qid, ...rest }) => ({\n title: text,\n cardLayout: 'horizontal',\n description: `{${qid}}`,\n itemBgColor: '#ffffff',\n itemBorderColor: '#d8dae9',\n itemFontColor: '#2c3345',\n start: {\n type: 'none',\n data: null\n },\n end: {\n type: 'none',\n data: null\n },\n ...rest,\n type: 'CARD_ITEM'\n }),\n\n [DATA_SOURCE_COLUMN_TYPES.IMAGE]: ({ text, qid, ...rest }) => ({\n imageURL: `{${qid}}`,\n itemTextAlignment: 'center',\n shrink: 'No',\n ...rest,\n type: 'IMAGE'\n }),\n\n [ITEM_TYPES.HEADING]: ({ text, qid, ...rest }) => ({\n title: `{${qid}}`,\n description: '',\n headingSize: 'default',\n itemTextAlignment: 'left',\n shrink: 'No',\n ...rest,\n type: 'HEADING'\n })\n};\n\n// {\n// \"start\": {\n// \"type\": \"image\",\n// \"data\": {\n// \"url\": \"https://www.jotform.com/uploads/erencam/form_files/Blank-Avatar.6666c07f7603c4.07905215.png\"\n// }\n// },\n// \"version\": 2\n// }\n\nconst divideColumnsByType = columns => {\n return columns.reduce((prev, column, order) => {\n switch (column.type) {\n case DATA_SOURCE_COLUMN_TYPES.IMAGE:\n return { ...prev, images: [...prev.images, { ...column, order }] };\n case DATA_SOURCE_COLUMN_TYPES.TEXT:\n return { ...prev, texts: [...prev.texts, { ...column, order }] };\n default:\n return prev;\n }\n }, { images: [], texts: [] });\n};\n\nexport const generateDetailDefaultElements = ({ columns, pageID }) => {\n const { images, texts } = divideColumnsByType(columns);\n const orderedColumns = [...images, ...texts].toSorted((({ order: o1 }, { order: o2 }) => o1 - o2));\n const headingOrder = texts?.[0].order;\n\n if (!isUndefined(headingOrder)) {\n orderedColumns[headingOrder] = { ...orderedColumns[headingOrder], type: ITEM_TYPES.HEADING };\n }\n\n return orderedColumns.map(({ order, ...col }) => detailsPageDefaultFuncsMap[col.type]?.({ ...col, page: pageID }));\n};\n\nexport const generateNewPropsForPresentationItem = columns => {\n const { images, texts } = divideColumnsByType(columns);\n const [titleCol, descriptionCol] = texts;\n const [imageURLCol] = images;\n\n return {\n ...(titleCol ? { title: strToDsFormat(titleCol.qid) } : {}),\n ...(descriptionCol ? { description: strToDsFormat(descriptionCol.qid) } : {}),\n ...(imageURLCol ? { start: { type: 'image', data: { url: strToDsFormat(imageURLCol.qid) } } } : {})\n };\n};\n","import {\n all,\n call, put, putResolve, select, take, takeEvery, takeLatest, throttle\n} from 'redux-saga/effects';\nimport { t } from '@jotforminc/translation';\nimport isEmpty from 'lodash/isEmpty';\nimport * as ACTION_CREATORS from '../../actionCreators';\nimport SELECTORS from '../../selectors';\nimport * as ACTION_TYPES from '../../actionTypes';\nimport * as API from '../../../modules/api';\nimport { DESTINATION_TYPES } from '../../../constants/navigation';\nimport { generateDetailDefaultElements, generateNewPropsForPresentationItem } from './constants';\nimport { CARD_ACTION_VALUES, CARD_LAYOUT } from '../../../modules/Builder/components/HomePage/RightPanel/constants';\nimport { ITEM_TYPES } from '../../../constants/itemTypes';\nimport { DS_ITEM_LOAD_TYPES, DS_ITEM_OFFSET } from '../../reducers/dataSource/constants';\nimport { pageActions } from '../../watchers/pageActions';\nimport { safeWorker } from '../../utils';\nimport { checkMobilePhone } from '../../../utils';\nimport { MODALS } from '../../../constants/modals';\n\nfunction* fetchColumns({ payload: { resourceID, viewID } }) {\n if (!resourceID) {\n return;\n }\n\n try {\n const { columns, title } = yield call(API.fetchColumns, {\n resourceID,\n viewID\n });\n\n if (columns) {\n yield put(ACTION_CREATORS.dsFetchColumnsSuccess({\n resourceID, viewID, columns, title\n }));\n }\n } catch (err) {\n console.error('NOT IMPLEMENTED', err);\n }\n}\n\nfunction* fetchSourceItemData({\n payload: {\n itemID,\n offset,\n isButtonRoleUpdate = false\n }\n}) {\n try {\n const item = yield select(SELECTORS.getPortalItemByIDSelector(itemID));\n if (!itemID || !item) {\n return;\n }\n\n const appID = yield select(SELECTORS.getAppID);\n const isBuilder = yield select(SELECTORS.getIsBuilder);\n const isMobile = checkMobilePhone();\n const { cardLayout = CARD_LAYOUT.HORIZONTAL } = yield select(SELECTORS.getPortalItemByIDSelector(item.presentationItemID));\n\n const limit = (() => {\n if (!isBuilder) {\n return DS_ITEM_OFFSET;\n }\n\n if (isMobile && cardLayout === CARD_LAYOUT.HORIZONTAL) {\n return 3;\n }\n\n return 4;\n })();\n\n const itemData = yield call(API.fetchRow, {\n appID, itemID, limit, offset\n });\n\n if (isBuilder) {\n yield putResolve(ACTION_CREATORS.dsFetchRowSuccess({\n itemID, itemData\n }));\n\n if (isButtonRoleUpdate) {\n yield put(ACTION_CREATORS.dsSetLoading({ itemID, loadType: DS_ITEM_LOAD_TYPES.INIT, isLoading: false }));\n }\n } else {\n yield put(ACTION_CREATORS.dsFetchSourceItemDataSuccess({\n itemID, itemData\n }));\n }\n } catch (err) {\n yield put(ACTION_CREATORS.dsFetchSourceItemDataError({ itemID }));\n console.error('NOT IMPLEMENTED', err);\n }\n}\n\nfunction* fetchRow({\n payload: {\n itemID, rowID\n }\n}) {\n const item = yield select(SELECTORS.getPortalItemByIDSelector(itemID));\n\n if (!itemID || !item) {\n return;\n }\n\n try {\n const appID = yield select(SELECTORS.getAppID);\n const itemData = yield call(API.fetchRow, {\n appID, itemID, rowID\n });\n\n yield put(ACTION_CREATORS.dsFetchRowSuccess({\n itemID, itemData: itemData?.[0]\n }));\n } catch (err) {\n console.error('NOT IMPLEMENTED', err);\n }\n}\n\nfunction* fetchDetailPage({\n payload: {\n pageID,\n divideByItemID\n }\n}) {\n try {\n const { linkedItemID } = yield select(SELECTORS.getPageByID(pageID)) ?? {};\n\n if (!linkedItemID) {\n return;\n }\n const appID = yield select(SELECTORS.getAppID);\n const rowID = yield select(SELECTORS.dsGetActiveListRowID(linkedItemID));\n const data = yield call(API.fetchRow, { appID, itemID: pageID, rowID });\n yield put(ACTION_CREATORS.dsFetchPageDetailSuccess({ pageID, data, divideByItemID }));\n } catch (err) {\n console.error('NOT IMPLEMENTED', err);\n }\n}\n\nfunction* setActiveRowAndNavigateToDetailsPage({ payload: { id, rowID } }) {\n yield put(ACTION_CREATORS.dsSetActiveListRowIDSuccess({ id, rowID }));\n const dsPageProps = yield select(SELECTORS.getDataSourcePage(id));\n if (!dsPageProps) {\n return;\n }\n\n const isBuilder = yield select(SELECTORS.getIsBuilder);\n\n const { id: detailsPageID = null } = dsPageProps;\n if (!isBuilder && detailsPageID) {\n yield put(ACTION_CREATORS.navigateToAction({ to: DESTINATION_TYPES.SPECIAL_PAGE, pageID: `details/${detailsPageID}/${rowID}` }));\n }\n}\n\nfunction* createAndLinkDetailsPage({\n payload: {\n itemID, columns, resourceID, viewID\n }\n}) {\n yield take(ACTION_TYPES.DS_FETCH_RESOURCE_COLUMNS.SUCCESS);\n const { page } = yield select(SELECTORS.getPortalItemByIDSelector(itemID));\n const { title = '' } = yield select(SELECTORS.dsGetColumnsByResourceID({ resourceID, viewID }));\n const oldDetailPage = yield select(SELECTORS.getDataSourcePage(itemID));\n\n if (oldDetailPage?.id) {\n yield call(pageActions, { type: ACTION_TYPES.DELETE_PAGE.UNDOABLE, payload: { pageID: oldDetailPage.id, deleteItems: true }, dontStack: true });\n }\n\n const { pageOrder } = yield select(SELECTORS.getPageByID(page));\n yield call(pageActions, {\n type: ACTION_TYPES.ADD_NEW_PAGE.UNDOABLE,\n payload: {\n newPageOrder: Number(pageOrder) + 1,\n dontSelect: true,\n pageProps: {\n showPageOnNavigation: false,\n name: t(title ? `${title} Detail Page` : 'Details Page')\n },\n detailPageProps: {\n linkedItemID: itemID\n }\n }\n });\n\n yield put(ACTION_CREATORS.dsInitializeItems({\n itemID,\n columns,\n oldDetailPage\n }));\n}\n\nfunction* initializeDsItemsWatcher(action) {\n const { itemID, columns: selectedColumns } = action.payload;\n\n const { resourceID, viewID } = yield select(SELECTORS.getPortalItemByIDSelector(itemID));\n const { columns: resourceColumns } = yield select(SELECTORS.dsGetColumnsByResourceID({ resourceID, viewID }));\n const { id: pageID } = yield select(SELECTORS.getDataSourcePage(itemID));\n\n const columns = selectedColumns ?? resourceColumns ?? [];\n\n yield putResolve(ACTION_CREATORS.dsInitializePropsWithColumns({ ...action.payload, columns, pageID }));\n yield putResolve(ACTION_CREATORS.dsCreateDetailPageDefaults({ ...action.payload, columns, pageID }));\n}\n\nfunction* initializeDsItemWithColumns({ payload: { itemID, columns, pageID } }) {\n const { presentationItemID } = yield select(SELECTORS.getPortalItemByIDSelector(itemID));\n\n const defaultPresentationItemProps = generateNewPropsForPresentationItem(columns);\n\n yield put(ACTION_CREATORS.updateItemPropAction({\n itemID: presentationItemID,\n prop: {\n ...defaultPresentationItemProps,\n buttonRole: CARD_ACTION_VALUES.NAVIGATION,\n buttonValue: pageID\n },\n bypassDebounce: true,\n linkedItemID: itemID\n }));\n\n yield put({ type: ACTION_TYPES.DS_INITIALIZE_PROPS_WITH_COLUMNS.SUCCESS });\n}\n\nfunction* createDefaultElements({ payload: { pageID, columns, itemID } }) {\n yield take(ACTION_TYPES.DS_INITIALIZE_PROPS_WITH_COLUMNS.SUCCESS);\n\n yield put(ACTION_CREATORS.toastAction({\n message: t('The detail page has been prepared automatically. You can click any item to see how the dynamic values change on the detail page'),\n options: {\n autoClose: 4e3\n }\n }));\n\n if (columns.length < 1) {\n return;\n }\n\n const newItems = generateDetailDefaultElements({ columns, pageID });\n\n // Unfortunately i have passed undefined to not to lose default parameters (because it is written in this way)\n // This action could be refactored to accept object instead of args like this\n yield put(ACTION_CREATORS.addPortalItemAction(newItems, 1, undefined, undefined, itemID));\n}\n\nfunction* handleDetailPageDeletionOnListRemoval({ payload: { item } }) {\n const detailPage = yield select(SELECTORS.getDataSourcePage(item.id));\n if (detailPage?.id) {\n yield call(pageActions, { type: ACTION_TYPES.DELETE_PAGE.UNDOABLE, payload: { pageID: detailPage.id, deleteItems: true }, dontStack: true });\n }\n}\n\nfunction* watchViewDefaultTable({ payload: { itemID } }) {\n try {\n const isLoading = yield select(SELECTORS.dsGetItemIsLoading(itemID, DS_ITEM_LOAD_TYPES.TABLE_CLONE));\n if (isLoading) {\n return;\n }\n\n const appID = yield select(SELECTORS.getAppID);\n yield put(ACTION_CREATORS.dsSetLoading({ itemID, isLoading: true, loadType: DS_ITEM_LOAD_TYPES.TABLE_CLONE }));\n const {\n sheetID: newResourceID, viewId: viewID, isClone = false, updatedAt\n } = yield call(API.viewTable, { appID, itemID });\n\n if (isClone) {\n yield put(ACTION_CREATORS.updateItemPropAction({\n itemID: itemID,\n prop: {\n resourceID: newResourceID\n }\n }));\n }\n\n yield put(ACTION_CREATORS.showGenericModalAction({\n name: MODALS.TABLE_PRODUCT_MODAL,\n resourceID: newResourceID,\n viewID: viewID !== newResourceID ? viewID : null,\n updatedAt\n }));\n } catch (err) {\n console.error('not implemented', err);\n } finally {\n yield put(ACTION_CREATORS.dsSetLoading({ itemID, isLoading: false, loadType: DS_ITEM_LOAD_TYPES.TABLE_CLONE }));\n }\n}\n\nexport function* dsFetchColumnsFlow() {\n const isBuilder = yield select(SELECTORS.getIsBuilder);\n if (!isBuilder) {\n return;\n }\n\n const items = yield select(SELECTORS.getPortalItems);\n const listItems = items.filter(item => item.type === ITEM_TYPES.LIST);\n if (!isEmpty(listItems)) {\n yield all(listItems.reduce((prev, { resourceID, viewID }) => {\n if (!resourceID) {\n return prev;\n }\n\n return [...prev, put(ACTION_CREATORS.dsFetchColumnsRequest({ resourceID, viewID }))];\n }, []));\n }\n}\n\n// TODO: TEMPORARY FIX for mobile builder version c, instead of improve the update iframe logic\nfunction* setUpdatedAtOnRowSuccess() {\n yield put(ACTION_CREATORS.setAppUpdatedAt(true));\n}\n\nfunction* createTable({ payload: { setFetchKey } }) {\n yield call(API.createTable);\n setFetchKey(prev => prev + 1);\n}\n\nfunction* detailPageOrderNormalizer({ payload }) {\n const { data = [] } = payload;\n\n const pages = yield select(SELECTORS.getPortalPages);\n\n yield all(\n data.reduce((acc, item) => {\n if (item.type === ITEM_TYPES.LIST && item.page) {\n const { pageOrder } = pages.find(({ id }) => id === item.page);\n if (pageOrder) {\n return [...acc, put(ACTION_CREATORS.changePageOrderAction({ oldIndex: pageOrder, newIndex: pageOrder }))];\n }\n return acc;\n }\n\n return acc;\n }, [])\n );\n}\n\nfunction* fetchAllResourceLinkedItems({ payload }) {\n const { resourceID, viewID } = payload;\n const items = yield select(SELECTORS.getPortalItems);\n const listItems = items.filter(({ type }) => type === ITEM_TYPES.LIST);\n const resourceLinkedItems = listItems.filter(listItem => (listItem.resourceID === resourceID && viewID ? listItem.viewID === viewID : true));\n const pages = yield select(SELECTORS.getPortalPages);\n const linkedPages = pages.filter(({ linkedItemID }) => listItems.some(({ id }) => id === linkedItemID));\n\n const fetchSourceItemActions = resourceLinkedItems.map(({ id }) => put(ACTION_CREATORS.dsFetchSourceItemData({ itemID: id })));\n const fetchPageActions = linkedPages.map(({ id }) => put(ACTION_CREATORS.dsFetchDetailPage({ pageID: id, divideByItemID: true })));\n\n yield all([...fetchSourceItemActions, ...fetchPageActions]);\n}\n\nfunction* dsResetActiveRowIDs({ payload: { itemIDs } }) {\n const allItems = yield select(SELECTORS.getPortalItems);\n yield all(\n itemIDs.map(itemID => {\n const item = allItems.find(({ id }) => id === itemID);\n if (item.type === ITEM_TYPES.LIST) {\n return put(ACTION_CREATORS.dsSetActiveRowID({ id: item.id, rowID: null }));\n }\n\n return null;\n })\n );\n}\n\n// eslint-disable-next-line func-names\nexport default function* () {\n yield takeEvery(ACTION_TYPES.DS_CREATE_DETAIL_PAGE, safeWorker(createAndLinkDetailsPage));\n yield takeEvery(ACTION_TYPES.DS_FETCH_RESOURCE_COLUMNS.REQUEST, fetchColumns);\n yield throttle(5000, ACTION_TYPES.DS_FETCH_RESOURCE_COLUMNS.WITH_THROTTLE, fetchColumns);\n yield takeEvery(ACTION_TYPES.DS_FETCH_SOURCE_ITEM_DATA.REQUEST, fetchSourceItemData);\n yield takeEvery(ACTION_TYPES.DS_FETCH_RESOURCE_ROW.REQUEST, fetchRow);\n yield takeEvery(ACTION_TYPES.DS_LIST_SET_ACTIVE_ROW_ID.REQUEST, safeWorker(setActiveRowAndNavigateToDetailsPage));\n yield takeEvery(ACTION_TYPES.DS_DELETE_DETAIL_PAGE, safeWorker(handleDetailPageDeletionOnListRemoval));\n\n // initialize ds item & detail page\n yield takeEvery(ACTION_TYPES.DS_INITIALIZE_ITEMS, initializeDsItemsWatcher);\n yield takeEvery(ACTION_TYPES.DS_CREATE_DETAIL_PAGE_DEFAULTS, safeWorker(createDefaultElements));\n yield takeEvery(ACTION_TYPES.DS_INITIALIZE_PROPS_WITH_COLUMNS.REQUEST, initializeDsItemWithColumns);\n\n // detail page data for preview\n yield takeLatest(ACTION_TYPES.DS_FETCH_DETAIL_PAGE.REQUEST, fetchDetailPage);\n\n yield takeLatest(ACTION_TYPES.DS_EDIT_TABLE.REQUEST, watchViewDefaultTable);\n\n yield takeLatest([ACTION_TYPES.DS_FETCH_SOURCE_ITEM_DATA.SUCCESS, ACTION_TYPES.DS_FETCH_RESOURCE_ROW.SUCCESS], safeWorker(setUpdatedAtOnRowSuccess));\n yield takeLatest(ACTION_TYPES.DS_CREATE_TABLE.REQUEST, safeWorker(createTable));\n yield takeLatest(ACTION_TYPES.UPDATE_ORDER.UNDOABLE, safeWorker(detailPageOrderNormalizer));\n yield takeLatest(ACTION_TYPES.DS_FETCH_ALL_RESOURCE_LINKED_ITEMS, safeWorker(fetchAllResourceLinkedItems));\n yield takeEvery(ACTION_TYPES.REMOVE_PORTAL_ITEMS.REQUEST, safeWorker(dsResetActiveRowIDs));\n}\n","import { StorageHelper } from '@jotforminc/storage-helper';\nimport Moment from 'moment';\nimport { NOTIFICATION_DISMISS_KEY } from '../../../constants';\n\nexport const isPushPermissionRecentlyDismissed = appID => {\n const notificationDismissKey = `${NOTIFICATION_DISMISS_KEY}_${appID}`;\n const dismissedAt = StorageHelper.getLocalStorageItem({ key: notificationDismissKey });\n if (dismissedAt === null) return false;\n return Moment(dismissedAt).isAfter(Moment().subtract(1, 'month'));\n};\n","import { t } from '@jotforminc/translation';\n\nimport { IconLinkDiagonal, IconAnglesSelectorSlashHorizontal } from '@jotforminc/svg-icons';\n\nexport const publishNavPaths = {\n quickShare: 'link',\n embed: 'embed'\n};\n\nexport const getPublishNavigationProperties = () => ([\n {\n key: 'link',\n title: t('Quick Share'),\n description: t('Direct app link.'),\n path: publishNavPaths.quickShare,\n Icon: IconLinkDiagonal\n },\n {\n key: 'embed',\n title: t('Embed'),\n description: t('Get embed code.'),\n path: publishNavPaths.embed,\n Icon: IconAnglesSelectorSlashHorizontal\n }\n]);\n\nexport const publishDefaultActiveTab = publishNavPaths.quickShare;\n","/* eslint-disable max-lines */\n/* eslint-disable camelcase */\nimport React from 'react';\nimport {\n actionChannel, all, call, delay, put, select, spawn, take, takeEvery, takeLatest, debounce,\n fork, race\n} from 'redux-saga/effects';\nimport { buffers } from 'redux-saga';\nimport difference from 'lodash/difference';\nimport isUndefined from 'lodash/isUndefined';\nimport { navigate } from '@reach/router';\nimport { sumMoney } from '@jotforminc/money-utils';\nimport { safeJSONParse, handleCustomNavigation } from '@jotforminc/utils';\nimport { isEnterprise } from '@jotforminc/enterprise-utils';\nimport { prepareIcons } from '@jotforminc/icon-selector';\nimport { t } from '@jotforminc/translation';\nimport { StorageHelper } from '@jotforminc/storage-helper';\nimport Tracking from '@jotforminc/tracking';\nimport { getAppPath } from '@jotforminc/router-bridge';\nimport { PushManager, SubscriptionError } from '@jotforminc/push-notification';\nimport { PaymentActions } from '@jotforminc/payment-settings-editor';\nimport Moment from 'moment';\nimport isEqual from 'lodash/isEqual';\nimport isEmpty from 'lodash/isEmpty';\nimport some from 'lodash/some';\nimport * as ACTION_TYPES from '../actionTypes';\nimport * as API from '../../modules/api';\nimport SELECTORS from '../selectors';\nimport * as ACTION_CREATORS from '../actionCreators';\nimport {\n ADD_ELELEMT_PULSE_EFFECT_LC_ST_KEY,\n ADD_ELELEMT_PULSE_EFFECT_MAX,\n APP_HEADER_PROPS,\n APP_MODES,\n APP_PREVIEW_STATES,\n BRANDING_DEFAULT_UTM_SCHEME,\n CHECKOUT_FORM_STATUSES,\n ERROR_MESSAGES,\n getLayoutProps,\n getProtectedStylingProps,\n IMAGE_TYPE,\n ITEM_ADDITION_ORDER_STRATEGY,\n NOTIFICATION_DISMISS_KEY,\n NOTIFICATION_ERROR_MESSAGES,\n NOTIFICATION_PERMISSION_STATES,\n PORTAL_ERROR_MAP,\n UI_PROPS\n} from '../../constants';\nimport {\n captureException,\n checkMobilePhone,\n getUserAgentPlatformType,\n getTeamID,\n getUpdatedDate,\n ignoredActions,\n isItemTypeWidget,\n isTestingEnv,\n isTeamResourcePicker,\n isYes,\n sanitizeHTML,\n sendBreadcrumbsToSentry,\n sendTrackData,\n updateAndOverrideButtonProperties,\n utmParser,\n checkAndAddProtocolToTargetLink,\n isValidLinkTarget,\n isIosSafari\n} from '../../utils';\nimport { getOrderedItemList, safeWorker, sanitizeSVGIconURLs } from '../utils';\nimport { generateResourceURL } from '../../utils/navigation';\nimport { isPWA } from '../../modules/PublicApp/utils';\nimport { ITEM_TYPES, RESOURCE_TYPES } from '../../constants/itemTypes';\nimport {\n getAvailableItemTypesByVersion,\n getLatestVersion,\n guardPropsForGrandfatheredApps,\n isAppGrandfathered,\n useAppDefaults,\n useItemDefaults\n} from '../../properties';\nimport { FEATURE_NAMES } from '../../constants/features';\nimport { isFeatureEnabled, useEnabledFeatures } from '../../utils/features/helper';\nimport { watchUndoableActions, watchUndoRedoActions } from '../watchers/undoRedo';\nimport {\n checkAddElementPulseVisible,\n initAppElementPanelAbTest,\n initAppNameIconModalAbTest,\n keepClosedUIPanels,\n watchMultipleSelection,\n watchSelectAllItems,\n watchUIPanelsChanges,\n watchUIupdates,\n watchWindowSqueeze\n} from './ui';\nimport { watchToastActions } from '../watchers/toast';\nimport { watchNetworkStatus } from '../watchers/network';\nimport { watchItemDuplication } from '../watchers/itemDuplication';\nimport { watchDoneItemProgress, watchRestartProgress, watchTodoItemProgress } from '../watchers/progress';\nimport {\n watchFetchShareList,\n watchResourceShareURLUpdate,\n watchShareDeletePortal,\n watchSharePortal\n} from '../watchers/share';\nimport VERSIONS from '../../properties/versions';\nimport { watchStylingActions } from '../watchers/styling';\nimport { watchProgressBarAvailability } from '../workers/progressBarAvailability';\nimport { pageActions, watchHeadingItemToPageNaming, watchPageUpdate } from '../watchers/pageActions';\nimport { handleInstallableAppIcon, watchInstallableIconBuilderFlow } from '../watchers/assetGeneration';\nimport { watchPortalOrderInItemAddition } from '../workers/portalOrder';\nimport appConfig from '../../constants/appConfig';\nimport { watchItemSorting } from '../workers/itemSorting';\nimport { BUTTON_ROLE_TYPES } from '../../modules/Builder/components/HomePage/RightPanel/ButtonActions/buttonRoleTypes';\nimport { watchModals } from '../watchers/modals';\nimport { watchSignupActions } from '../watchers/signup';\nimport { resourceLinkTypes, resourceTypeMap, RightPanelModes } from '../../modules/Builder/components/HomePage/constants';\nimport productListActions from '../watchers/productListActions';\nimport navigationActions from '../watchers/navigation';\nimport collaborationFlow from '../watchers/collaboration';\nimport { momentToString } from '../../modules/Builder/components/Settings/utils';\nimport watchAppToast from '../watchers/appToast';\nimport searchInProductsActions from '../watchers/filterProducts';\nimport { MODALS } from '../../constants/modals';\nimport { TEAM_ID } from '../../constants/team';\nimport { DESTINATION_TYPES } from '../../constants/navigation';\nimport eventsFlow from '../events';\nimport { AllWidgetIDs } from '../../constants/availableWidgets';\nimport { activateFullStoryOnTheFly } from '../watchers/fullstory';\nimport { getColoredPropertiesBySchemeID } from '../../properties/styling';\nimport { getFilteredProperties } from '../../modules/Builder/components/HomePage/MultipleRightPanel/utils';\nimport productList from './productList';\nimport aiAssitant from './aiAssistant';\nimport checkoutFormFlow from './checkoutForm';\nimport dataSourceFlow, { dsFetchColumnsFlow } from './dataSource/dataSource';\nimport { eventChannelRegistry, resultMutaters, shouldUpdatePropFromResponse } from './helper';\nimport { abTestActionLoggerSingleton, AB_TEST_NAMES, LC_KEYS } from '../../utils/AbTestActionLoggerSingleton';\nimport ActionHelper from '../../utils/ActionsHelper';\nimport { AB_TESTS, logAbTestActionFor } from '../../utils/abtests';\nimport { AVAILABLE_DETAIL_PAGE_ITEMS } from '../../modules/Builder/components/HomePage/RightPanel/dataSourceHelpers';\nimport { isPushPermissionRecentlyDismissed } from '../../modules/PublicApp/PushNotificationPermission/utils';\nimport { DS_ITEM_LOAD_TYPES } from '../reducers/dataSource/constants';\nimport { WHATS_NEW_MODAL_FEATURES } from '../../modules/Builder/components/Modals/WhatsNewModal';\nimport { publishNavPaths } from '../../modules/Builder/components/Publish/constants';\n\nconst isUpdateAPIAction = type => /(UPDATE|ADD|REMOVE).*\\/(REQUEST|SUCCESS)/.test(type);\nconst isAPISuccessAction = ({ type }) => /SUCCESS$/.test(type);\nconst isAPIRequestAction = ({ type }) => /(REQUEST|UNDOABLE)$/.test(type);\nconst isAPIErrorAction = ({ type }) => /ERROR$/.test(type); // eslint-disable-line no-unused-vars\n\nexport function* fetchUserFlow() {\n let currentUser = yield select(SELECTORS.getUser);\n let payload;\n if (currentUser.username) {\n // We already got it from index.php\n delete window?.__userInfo;\n payload = { credentials: currentUser, type: currentUser.USER_TYPE };\n } else {\n // we should've got the user.. It seems something unexpected occurred let's try one last time for the sentry :D\n yield put({ type: ACTION_TYPES.FETCH_USER.REQUEST });\n try {\n const withCred = yield call(API.fetchUser);\n payload = withCred;\n currentUser = withCred.credentials;\n } catch (e) {\n console.error('Error on fetch user:', e);\n // Mocking since no valid user found at session.\n // The show must go on..\n const mockPublicUser = {\n type: 'USER',\n credentials: {\n username: 'guest_apiDemo',\n name: null,\n account_type: 'GUEST',\n allowMyApps: true,\n time_zone: ''\n }\n };\n payload = mockPublicUser;\n }\n }\n\n yield spawn(watchSignupActions);\n\n const { username, name } = currentUser;\n yield put({ type: ACTION_TYPES.FETCH_USER.SUCCESS, payload });\n\n if (Tracking.FSisInitialized()) {\n Tracking.identify(username, {\n displayName: name || username,\n appBuilder_bool: true\n });\n }\n}\n\nexport function* watchFetchPortalSuccess({ payload: { checkoutFormID } }) {\n const isBuilder = yield select(SELECTORS.getIsBuilder);\n if (isBuilder && checkoutFormID) {\n yield put({ type: ACTION_TYPES.FETCH_CHECKOUT_FORM_QUESTIONS.REQUEST, payload: checkoutFormID });\n }\n}\n\nexport function* fetchWidgetsFlow() {\n const appMode = yield select(SELECTORS.getAppModeSelector);\n if (appMode === APP_MODES.builder) {\n let { username } = yield select(SELECTORS.getUser);\n if (window.isDevelopment && window.DEVELOPER) {\n username = window.DEVELOPER;\n }\n yield put({ type: ACTION_TYPES.FETCH_WIDGETS.REQUEST });\n try {\n const allWidgets = yield call(API.fetchWidgets, username);\n const filterUsedWidgets = allWidgets.filter(widget => AllWidgetIDs.includes(widget?.client_id));\n yield put({ type: ACTION_TYPES.FETCH_WIDGETS.SUCCESS, payload: filterUsedWidgets });\n } catch (exception) {\n console.error(exception);\n yield put({ type: ACTION_TYPES.FETCH_WIDGETS.ERROR });\n }\n }\n}\n\nexport function* fetchEnvironmentFlow() {\n let environment = yield select(SELECTORS.getEnvironmentSelector);\n if (!environment) {\n yield put({ type: ACTION_TYPES.FETCH_ENVIRONMENT.REQUEST });\n environment = yield call(API.fetchEnvironmentVariables);\n }\n\n yield put({ type: ACTION_TYPES.FETCH_ENVIRONMENT.SUCCESS, data: environment });\n}\n\nconst getNewMigrationProps = (fromVersion, incomingData) => {\n // WORKS FOR 0 Only\n const {\n logoURL, logoType, logoBackground, iconColor\n } = incomingData;\n const latestDefaults = useAppDefaults(getLatestVersion());\n const defaultsByVersion = useAppDefaults(fromVersion);\n const keysByVersion = Object.keys(defaultsByVersion);\n const reducedLatests = Object.entries(latestDefaults).reduce((prev, [key]) => {\n return keysByVersion.includes(key)\n ? { ...prev }\n : { ...prev, [key]: '' }; // This prop don't know by the app. Builder is more capable than app. Should be neutralized.\n }, {});\n const downgradedDefaults = { ...defaultsByVersion, ...reducedLatests };\n if (!downgradedDefaults.appIconURL\n || !downgradedDefaults.appIconType\n || !downgradedDefaults.appIconBackground\n || !downgradedDefaults.appIconColor\n ) {\n // TODO exception for appIcon? handle upward and downward migrations all together! Consider items too..\n downgradedDefaults.appIconURL = logoURL;\n downgradedDefaults.appIconType = logoType;\n downgradedDefaults.appIconBackground = logoBackground;\n downgradedDefaults.appIconColor = iconColor;\n }\n\n return {\n ...downgradedDefaults,\n ...guardPropsForGrandfatheredApps\n };\n};\n\nconst getMigratedItems = ({ items, fromVersion }) => {\n // TODO Possible irem type conversion point!\n return items.map(item => {\n const itemDefaults = useItemDefaults(item.type, fromVersion);\n const {\n itemBorderColor: defaultItemBorderColor,\n itemBgColor: defaultItemBgColor,\n itemFontColor: defaultItemFontColor,\n itemTextAlignment: defaultItemTextAlignment\n } = itemDefaults;\n\n const {\n itemBorderColor = defaultItemBorderColor,\n itemBgColor = defaultItemBgColor,\n itemFontColor = defaultItemFontColor,\n itemTextAlignment = defaultItemTextAlignment\n } = item;\n\n return {\n itemID: item.id,\n itemBorderColor,\n itemBgColor,\n itemFontColor,\n itemTextAlignment\n };\n });\n};\n\nfunction* checkIsAssetBusy({ id: appID, ...props }) {\n const isBuilder = yield select(SELECTORS.getIsBuilder);\n if (!getTeamID() || !isBuilder) return false;\n const result = yield call(API.getAssetIsBusy, appID);\n if (isEmpty(result)) {\n yield call(API.teamLog, appID, 'portalAccessed');\n return false;\n }\n yield put(ACTION_CREATORS.updatePortalPropAction({ editingResourceProps: result, ...props }));\n return true;\n}\n\n// eslint-disable-next-line max-statements\nfunction* normalizeAndRegisterApp(appProps) {\n const latestVersion = getLatestVersion();\n const appMode = yield select(SELECTORS.getAppModeSelector);\n const appDefaultsByVersion = useAppDefaults(latestVersion);\n\n const {\n appVersion, id: portalID,\n name, appBgColor, appBgColorEnd,\n items\n } = appProps;\n\n // BUGFIX #3828940 :: We should clear HTML from the title\n const titleDOM = document.createElement('div');\n titleDOM.innerHTML = sanitizeHTML(appProps.title);\n const title = titleDOM.textContent || titleDOM.innerText || '';\n\n const {\n appBgColor: latestDefaultAppBgColor\n } = appDefaultsByVersion;\n\n let newProps = { ...appProps, title }; // hope it stays 1 level\n\n // we need to update some properties while Fetching portals silently\n const normalizeProperties = {\n name: {\n condition: isUndefined(name),\n replace: name || title\n },\n appBgColorEnd: {\n condition: appBgColor && isUndefined(appBgColorEnd),\n replace: appBgColor\n }\n };\n\n const propertyKeys = Object.keys(normalizeProperties);\n let propertiesToUpdate = {};\n propertyKeys.forEach(property => {\n const element = normalizeProperties[property];\n if (element.condition) {\n propertiesToUpdate = { ...propertiesToUpdate, [property]: element.replace };\n }\n });\n\n newProps = { ...newProps, ...propertiesToUpdate };\n\n let migratedItems = {};\n if (isAppGrandfathered(appVersion)) {\n // Handle App\n const reducedProps = getNewMigrationProps(appVersion, newProps);\n // Downgrade defaults by neutralizing for grandfathered apps (closed appCover, transparent appHeaderBgColor etc.)\n newProps = {\n ...reducedProps,\n ...newProps\n };\n\n const migratedPortal = {\n ...guardPropsForGrandfatheredApps,\n appVersion: getLatestVersion()\n };\n\n const hasCustomBgColor = Object.keys(appProps).includes('appBgColor');\n if (!hasCustomBgColor) {\n Object.assign(migratedPortal, {\n appBgColor: latestDefaultAppBgColor,\n appBgColorEnd: latestDefaultAppBgColor // for now, it is not saved\n });\n }\n\n newProps = { ...newProps, ...migratedPortal };\n propertiesToUpdate = { ...propertiesToUpdate, ...migratedPortal };\n // Handle Items\n migratedItems = getMigratedItems({ items, fromVersion: appVersion });\n }\n\n if (yield checkIsAssetBusy(newProps)) return;\n\n // one and only!\n yield put({ type: ACTION_TYPES.FETCH_PORTAL.SUCCESS, payload: { ...newProps } });\n\n if (appMode === APP_MODES.builder) {\n const hasPropToUpdate = !!Object.keys(propertiesToUpdate).length;\n if (hasPropToUpdate) yield call(API.updatePortal, portalID, { ...propertiesToUpdate, systemAction: 1 });\n\n const hasItemsToMigrate = !!Object.keys(migratedItems).length;\n if (hasItemsToMigrate) {\n for (let i = 0; i < migratedItems.length; i++) {\n const item = migratedItems[i];\n yield put(ACTION_CREATORS.updateItemPropAction({ itemID: item.itemID, prop: item }));\n }\n }\n }\n\n if (appMode === APP_MODES.public) {\n yield put(ACTION_CREATORS.calculateDoneItemCount());\n yield put(ACTION_CREATORS.calculateTodoItemCount());\n }\n}\n\nexport function* fetchPortalFlow(props = {}) {\n const hasPortalInfo = typeof window.__appInfo === 'object' && window.__appInfo.id;\n const { portalID } = props;\n if (!portalID && !hasPortalInfo) return; // BuildWithForm\n const appMode = yield select(SELECTORS.getAppModeSelector);\n const endpoints = {\n [APP_MODES.public]: API.fetchPortalPublicInfo,\n [APP_MODES.builder]: API.fetchPortal\n };\n try {\n const currentApp = yield (hasPortalInfo ? window.__appInfo : call(endpoints[appMode], portalID));\n yield call(normalizeAndRegisterApp, currentApp);\n delete window.__appInfo;\n } catch (error) {\n const status = error?.response?.status;\n const errorMap = appMode === APP_MODES.builder ? 'builder' : status;\n yield put({ type: ACTION_TYPES.SET_APP_STATUS, payload: { error } });\n yield put({ type: ACTION_TYPES.FETCH_PORTAL.ERROR, payload: PORTAL_ERROR_MAP.FETCH[errorMap] || PORTAL_ERROR_MAP.FETCH.default, error });\n }\n}\n\nexport function* fetchShareInfoFlow() {\n try {\n yield put({ type: ACTION_TYPES.FETCH_SHARE_INFO.REQUEST });\n const appMode = yield select(SELECTORS.getAppModeSelector);\n if ((appMode === APP_MODES.builder) && window.__shareInfo) {\n const resourceShareInfo = (typeof window.__shareInfo === 'object' && window.__shareInfo) ? window.__shareInfo : { shareList: [], shareToken: '' };\n yield put({ type: ACTION_TYPES.FETCH_SHARE_LIST.SUCCESS, payload: Object.values(resourceShareInfo.shareList) });\n yield put({ type: ACTION_TYPES.UPDATE_RESOURCE_SHARE_URL.SUCCESS, payload: resourceShareInfo.shareToken });\n delete window.__shareInfo;\n } else if ((appMode === APP_MODES.builder) && !window.__shareInfo) {\n yield put({ type: ACTION_TYPES.FETCH_SHARE_LIST.REQUEST });\n }\n yield put({ type: ACTION_TYPES.FETCH_SHARE_INFO.SUCCESS });\n } catch (error) {\n yield put({ type: ACTION_TYPES.SET_APP_STATUS, payload: { error } });\n yield put({ type: ACTION_TYPES.FETCH_SHARE_INFO.ERROR, payload: { error } });\n }\n}\n\nfunction* withPrefetchedData(key, ACTION) {\n if (typeof window[key] === 'object' && window[key]) {\n yield put({ type: ACTION.SUCCESS, payload: window[key] });\n delete window[key];\n } else {\n yield put({ type: ACTION.REQUEST });\n }\n}\n\nfunction* fetchStorePropertiesFlow() {\n const isPaymentApp = yield select(SELECTORS.getIsPaymentApp);\n const isBuilder = yield select(SELECTORS.getIsBuilder);\n if (!isBuilder && isPaymentApp) {\n yield withPrefetchedData('__storeProperties', ACTION_TYPES.FETCH_STORE_PROPERTIES);\n }\n}\n\nexport function* fetchTeamFlow() {\n const isBuilder = yield select(SELECTORS.getIsBuilder);\n if (isBuilder) {\n yield withPrefetchedData('__userTeams', ACTION_TYPES.FETCH_USER_TEAMS);\n yield withPrefetchedData('__userPermissionsInfo', ACTION_TYPES.FETCH_USER_TEAM_PERMISSIONS);\n }\n}\n\nexport function* appStatusChecker() {\n const appMode = yield select(SELECTORS.getAppModeSelector);\n if (appMode === APP_MODES.builder) {\n yield all([\n take(ACTION_TYPES.FETCH_PORTAL.SUCCESS),\n take(ACTION_TYPES.FETCH_ENVIRONMENT.SUCCESS),\n take(ACTION_TYPES.FETCH_USER.SUCCESS),\n take(ACTION_TYPES.FETCH_WIDGETS.SUCCESS)\n ]);\n } else {\n yield all([\n take(ACTION_TYPES.FETCH_PORTAL.SUCCESS),\n take(ACTION_TYPES.FETCH_USER.SUCCESS)\n ]);\n }\n yield put({ type: ACTION_TYPES.SET_APP_STATUS, payload: 'ready' });\n}\n\nfunction* trackEvent({ payload: { action = '', target = {} } } = {}) {\n if (!action) return;\n if (ignoredActions.includes(action)) return;\n\n if (typeof target === 'object') {\n /* eslint-disable no-param-reassign */\n target.device = getUserAgentPlatformType();\n target.isPWA = isPWA();\n /* eslint-enable no-param-reassign */\n }\n\n const username = yield select(SELECTORS.getUsername);\n const portalID = yield select(SELECTORS.getPortalIDSelector);\n const portalType = yield select(SELECTORS.getPortalType);\n yield call(sendTrackData, username, action, { portalID, portalType, ...target });\n}\n\nfunction* trackEvents() {\n yield takeEvery(ACTION_TYPES.TRACK_EVENT, trackEvent);\n}\n\nfunction* watchErrors({ type, error }) { // eslint-disable-line require-yield\n sendBreadcrumbsToSentry({\n level: 'error', type: 'error', category: 'actions', message: `Error occured type: ${type}`\n });\n yield call(captureException, error);\n}\n\n// TODO :: seperate this\n/* eslint-disable max-statements */\nexport function* watchPortalUpdates(action) {\n const { payload: properties } = action;\n const portalID = yield select(SELECTORS.getPortalIDSelector);\n const appVersion = yield select(SELECTORS.getAppVersionSelector);\n\n const keysToUpdate = Object.keys(properties);\n const defaultAppByVersion = useAppDefaults(appVersion);\n const defaultsKeysByVersion = Object.keys(defaultAppByVersion);\n const defaultAppByLatest = useAppDefaults(getLatestVersion());\n const defaultsKeysByLatest = Object.keys(defaultAppByLatest);\n\n const migrationRequiredKeys = difference(defaultsKeysByLatest, defaultsKeysByVersion);\n const shouldMigrate = keysToUpdate.some(key => migrationRequiredKeys.includes(key));\n const finalVersion = shouldMigrate ? getLatestVersion() : appVersion;\n\n const resetCropTriggers = {\n appCoverBgURL: 'appCoverBgCropInfo',\n appHeaderBgURL: 'appHeaderBgCropInfo'\n };\n\n const updatingProperties = Object.entries(properties).reduce((prev, [key]) => {\n return Object.keys(resetCropTriggers).includes(key)\n ? {\n ...prev,\n [resetCropTriggers[key]]: ''\n }\n : { ...prev };\n }, properties);\n\n // Removing appLogo should reset AppLogoSize too..\n if (updatingProperties.logoURL === '') {\n updatingProperties.appLogoSize = 0;\n }\n\n // title\n if (updatingProperties.name) {\n const title = yield select(SELECTORS.getAppTitle);\n const name = yield select(SELECTORS.getAppName);\n const { title: defaultAppTitle } = defaultAppByVersion;\n if (defaultAppTitle === title || title === name) {\n updatingProperties.title = updatingProperties.name;\n }\n }\n\n // attach version\n let newVersionProps = { appVersion: finalVersion };\n const currentApp = yield select(SELECTORS.getAppInfoWithDefaults);\n if (shouldMigrate) {\n const initialMigrationProps = getNewMigrationProps(finalVersion, currentApp);\n newVersionProps = { ...initialMigrationProps, ...currentApp, appVersion: finalVersion };\n }\n const propsToUpdate = { ...updatingProperties, ...newVersionProps };\n const currentData = Object.keys(propsToUpdate).reduce((pre, next) => {\n return { ...pre, [next]: currentApp[next] };\n }, {});\n\n if (propsToUpdate.mobileMenuIcon) {\n propsToUpdate.mobileMenuIcon = sanitizeSVGIconURLs(propsToUpdate.mobileMenuIcon);\n }\n\n yield put({\n type: ACTION_TYPES.UPDATE_PORTAL.REQUEST,\n payload: propsToUpdate\n });\n\n const updateResult = yield call(API.updatePortal, portalID, propsToUpdate);\n yield put(ACTION_CREATORS.trackEventAction({ action: 'appUpdated', target: { props: Object.keys(updatingProperties) } }));\n if (shouldMigrate) {\n yield put(ACTION_CREATORS.trackEventAction({ action: 'appMigrated', target: { to: finalVersion } }));\n }\n\n // make mode on crop state while changing AppHeader/Cover background\n const backgroundCropProps = Object.keys(resetCropTriggers);\n const updatingBackgroundCropProp = Object.keys(updateResult).filter(prop => backgroundCropProps.includes(prop))[0];\n if (updatingBackgroundCropProp && !!updateResult[updatingBackgroundCropProp] && !checkMobilePhone()) {\n yield put(ACTION_CREATORS.toggleRightPanelAction(false));\n yield put(ACTION_CREATORS.toggleImageCropState(updatingBackgroundCropProp, true));\n }\n\n // close RightPanel after AppHeader is closed\n const isClosingAppHeader = propsToUpdate?.openAppHeader === 'No';\n if (isClosingAppHeader) {\n yield put(ACTION_CREATORS.setRightPanelModeAction(''));\n yield put(ACTION_CREATORS.selectPortalItemAction());\n }\n\n yield put({\n type: ACTION_TYPES.UPDATE_PORTAL.SUCCESS,\n payload: updateResult,\n requestAction: action,\n currentData\n });\n}\n\nfunction* fetchCheckoutFormID() {\n const appID = yield select(SELECTORS.getAppID);\n\n yield put(ACTION_CREATORS.fetchPortalAction(appID));\n}\n\n// eslint-disable-next-line complexity\nexport function* watchPortalItemAdditions(action) {\n const logAbTestAction = abTestActionLoggerSingleton[AB_TEST_NAMES.ELEMENT_PANEL_VISIBILITY] || (f => f);\n const getItemDefaults = yield select(SELECTORS.getItemDefaultsGetter);\n\n const isElementAlreadyAdded = StorageHelper.getLocalStorageItem({ key: LC_KEYS.ELEMENT_PANEL_VISIBILITY.IS_ELEMENT_ADDED });\n if (!isElementAlreadyAdded) {\n StorageHelper.setLocalStorageItem({ key: LC_KEYS.ELEMENT_PANEL_VISIBILITY.IS_ELEMENT_ADDED, value: true });\n logAbTestAction(\n {\n action: 'click',\n target: 'appElementAddedFirstTime'\n }\n );\n }\n\n const {\n payload: {\n items, order, isDuplicate = false, focusItemID\n }, dontStack = false, isUndo = false\n } = action;\n if (Array.isArray(items) && items.length === 0) {\n return;\n }\n const portalID = yield select(SELECTORS.getPortalIDSelector);\n\n // Considers the page of the LAST item in the payload in order to cover the case of adding into different pages (caused by an undo of multiple delete)\n const pageOfTheItem = items.reduce((prev, { page = 'homepage' }) => page, '');\n\n if (!focusItemID) {\n yield put(ACTION_CREATORS.updateLastInteractedPageIDAction(pageOfTheItem));\n }\n\n let overridedItems = items;\n // Override w/selected scheme/theme\n if (!isDuplicate) {\n const { overridingItemProps } = yield select(SELECTORS.getAppInfoWithDefaults);\n const overridingProps = safeJSONParse(overridingItemProps);\n overridedItems = items.map(i => {\n const { type } = i;\n if (!isEmpty(overridingProps) && Object.keys(overridingProps).includes('itemColors')) {\n return { ...i, ...type === ITEM_TYPES.BUTTON ? overridingProps.buttonColors : overridingProps.itemColors };\n }\n return { ...i, ...type === ITEM_TYPES.BUTTON ? {} : overridingProps };\n });\n }\n\n overridedItems = overridedItems.map(item => {\n switch (item.type) {\n case ITEM_TYPES.LIST: {\n const { presentationItemType } = item;\n const presentationItem = getItemDefaults(presentationItemType);\n return { ...item, presentationItem };\n }\n default: {\n return item;\n }\n }\n });\n\n const result = yield call(API.addItemToPortal, portalID, overridedItems, Math.round(order));\n\n const listItems = result.filter(item => item.type === ITEM_TYPES.LIST);\n\n if (listItems.length > 0 && !isUndo) {\n yield all(\n listItems.map(item => [\n put(ACTION_CREATORS.createAndLinkDetailsPage({ itemID: item.id, resourceID: item.resourceID, viewID: item.viewID })),\n put(ACTION_CREATORS.dsSetLoading({ itemID: item.id, loadType: DS_ITEM_LOAD_TYPES.INIT, isLoading: true }))\n ]).flat()\n );\n }\n\n const hasCheckoutRelatedItem = result.some(({ type }) => [ITEM_TYPES.PRODUCT_LIST, ITEM_TYPES.DONATION].includes(type));\n if (hasCheckoutRelatedItem) yield fetchCheckoutFormID();\n\n yield put({\n type: ACTION_TYPES.ADD_PORTAL_ITEMS.SUCCESS, payload: result, requestAction: action, dontStack\n });\n\n // manage pulse effect\n const pulseStorage = StorageHelper.getLocalStorageItem({ key: ADD_ELELEMT_PULSE_EFFECT_LC_ST_KEY });\n const currentPulseCount = yield select(SELECTORS.getUIProp(UI_PROPS.addElementButtonPulseCount));\n if (!pulseStorage && (currentPulseCount < ADD_ELELEMT_PULSE_EFFECT_MAX)) {\n const nextPulseCount = currentPulseCount + 1;\n yield put(ACTION_CREATORS.setUIProp(UI_PROPS.addElementButtonPulseCount, nextPulseCount));\n if (nextPulseCount === ADD_ELELEMT_PULSE_EFFECT_MAX) {\n yield put(ACTION_CREATORS.setUIProp(UI_PROPS.addElementButtonPulseVisible, false));\n StorageHelper.setLocalStorageItem({\n key: ADD_ELELEMT_PULSE_EFFECT_LC_ST_KEY,\n value: true\n });\n }\n }\n\n const isLeftPanelOpen = yield select(SELECTORS.isLeftPanelOpenSelector);\n const isMobile = checkMobilePhone();\n if (isLeftPanelOpen && isMobile) {\n yield put(ACTION_CREATORS.toggleLeftPanelAction(false));\n }\n\n // make mobile multiple selection mode false while adding new item\n const isMobileMultiSelectedMode = yield select(SELECTORS.getSelectedMultipleItems);\n if (isMobileMultiSelectedMode) {\n yield put(ACTION_CREATORS.toggleMultipleSelectionModeAction(false));\n }\n\n // User may trying to add a \"newer\" item type. That requires migration.\n const appVersion = yield select(SELECTORS.getAppVersionSelector);\n const availableTypesByVersion = getAvailableItemTypesByVersion(appVersion);\n const addedSomeNewItemType = items.some(({ type }) => !availableTypesByVersion.includes(type)); // a \"newer\" item is being added\n const shouldMigrate = appVersion < VERSIONS[1] && addedSomeNewItemType;\n if (shouldMigrate) {\n yield put(ACTION_CREATORS.updatePortalAction({ appVersion: getLatestVersion() }));\n }\n\n const additionResult = result.filter(({ type }) => !!type); // Result with no type means order update as a side effect of addition\n for (let i = 0; i < additionResult.length; i++) {\n const { type, portalOrder, id } = additionResult[i];\n const eventAction = `${type === ITEM_TYPES.FORM ? 'formsAdded' : `${type.toLowerCase()}Added`}`;\n const details = { portalOrder, id };\n const target = type === ITEM_TYPES.FORM ? { ...details, count: 1 } : details;\n yield put(ACTION_CREATORS.trackEventAction({ action: eventAction, target }));\n }\n\n // Treat last added item\n const [{ id: lastAddedItemID, type }] = listItems.length > 0 ? listItems.slice(-1) : additionResult.slice(-1);\n if (isLeftPanelOpen && isMobile) {\n yield delay(300);\n }\n\n const settedLastAddedItem = focusItemID ?? lastAddedItemID;\n\n yield put({ type: ACTION_TYPES.SET_LAST_ADDED_ITEM, payload: settedLastAddedItem });\n\n const isWidget = type === ITEM_TYPES.WIDGET;\n const targetRightPanelMode = isWidget ? RightPanelModes.APP_WIDGET : RightPanelModes.APP_ITEM;\n yield put(ACTION_CREATORS.prepareRightPanelAction(targetRightPanelMode, settedLastAddedItem));\n if ([ITEM_TYPES.PRODUCT_LIST, ITEM_TYPES.DONATION].includes(type)) {\n yield put(ACTION_CREATORS.toggleLeftPanelAction(false));\n yield put(ACTION_CREATORS.toggleRightPanelAction(true));\n }\n}\n\nexport function* watchPortalItemRemovals(action) {\n const { payload: { itemIDs }, dontStack = false } = action;\n const portalID = yield select(SELECTORS.getPortalIDSelector);\n const existingItems = yield select(SELECTORS.getPortalItems);\n const itemIDList = itemIDs.filter(i => i);\n const itemsToRemove = existingItems.filter(({ id }) => itemIDList.includes(id));\n const formsToRemoveIds = itemsToRemove.filter(({ type }) => type === ITEM_TYPES.FORM).map(({ id }) => id);\n const sentboxItems = existingItems.filter(({ type }) => type === ITEM_TYPES.SENTBOX_LINK);\n\n if (formsToRemoveIds && sentboxItems) {\n const sentboxItemsToRemove = sentboxItems.filter(({ resourceID }) => formsToRemoveIds.includes(resourceID));\n sentboxItemsToRemove.forEach(sentboxItem => {\n itemsToRemove.push(sentboxItem);\n itemIDList.push(sentboxItem.id);\n });\n }\n\n if (!itemIDList.length) {\n throw new Error('No item ID supplied for removal.');\n }\n\n let newItemList = existingItems;\n\n itemsToRemove.forEach(item => {\n newItemList = getOrderedItemList(newItemList, item);\n });\n\n yield call(API.removeItemsFromPortal, portalID, itemIDList);\n const isSingleItem = itemsToRemove.length === 1;\n yield put(ACTION_CREATORS.trackEventAction(\n {\n action: 'itemsRemoved',\n target: {\n count: itemIDList.length,\n ...isSingleItem && { type: itemsToRemove[0].type, id: itemsToRemove[0].id }\n }\n }\n ));\n\n const isPaymentFieldDeleted = itemsToRemove.find(item => [ITEM_TYPES.PRODUCT_LIST, ITEM_TYPES.DONATION].includes(item.type));\n const noPaymentAfterDeletion = !newItemList.find(item => [ITEM_TYPES.PRODUCT_LIST, ITEM_TYPES.DONATION].includes(item.type));\n const isReusableConnectionEnabled = yield select(SELECTORS.getIsReusableConnectionEnabled);\n if (isPaymentFieldDeleted && noPaymentAfterDeletion && isReusableConnectionEnabled) { // remove/detach connection\n const checkoutFormID = yield select(SELECTORS.getCheckoutFormIDSelector);\n yield put(ACTION_CREATORS.updateGatewaySettings({ type: 'control_payment', currency: 'USD', itemDeleted: 1 }));\n yield call(PaymentActions.detachPaymentConnection, 'APP', checkoutFormID);\n }\n\n yield put({\n type: ACTION_TYPES.REMOVE_PORTAL_ITEMS.SUCCESS, payload: newItemList, requestAction: action, dontStack, currentData: itemsToRemove\n });\n\n const message = isSingleItem\n ? t('Item is deleted')\n : t('Items are deleted');\n\n yield put(ACTION_CREATORS.undoableToastAction(message));\n yield put(ACTION_CREATORS.selectPortalItemAction(''));\n}\n\nexport function* watchFetchForms() {\n let forms = yield call(API.fetchForms);\n if (isTeamResourcePicker()) {\n const teamForms = yield call(API.getTeamResources, { teamID: TEAM_ID, resourceType: 'form' });\n forms = [...forms, ...teamForms];\n }\n yield put({ type: ACTION_TYPES.FETCH_FORMS.SUCCESS, payload: forms });\n}\n\nfunction* fetchTeamResources(resourceType, actionType) {\n const teamID = getTeamID();\n const response = yield call(API.getTeamResources, { teamID, resourceType });\n yield put({ type: actionType, payload: response });\n}\n\nexport function* watchFetchResources(resourceType, actionType, regularAction) {\n const actions = {\n team: () => call(fetchTeamResources, resourceType, actionType),\n regular: () => call(regularAction)\n };\n\n yield actions[isTeamResourcePicker() ? 'team' : 'regular']();\n}\n\nconst prepateSignDocuments = signs => {\n const preparedSigns = signs.map(sign => {\n const { signerCount, embedDocumentKey, formID } = sign;\n\n const handleGoToSign = () => {\n handleCustomNavigation(`/sign/${formID}/send/embed`, '_blank');\n };\n\n const errorText = (\n <>\n Only single signer and\n {' '}\n embed code generated\n {' '}\n documents can be added\n \n );\n\n if (signerCount < 1) {\n return {\n ...sign, errorText, disabled: true, noSigner: true\n };\n }\n\n if (signerCount > 1) {\n return {\n ...sign, errorText, disabled: true, multipleSigner: true\n };\n }\n\n if (!embedDocumentKey) {\n return {\n ...sign, errorText, disabled: true, noLink: true\n };\n }\n\n return sign;\n });\n\n const sortSigns = items => {\n return items.sort((a, b) => {\n const date1 = new Date(a.modificationDate);\n const date2 = new Date(b.modificationDate);\n return date1.getTime() - date2.getTime();\n });\n };\n\n const noLinkSigns = preparedSigns.filter(item => item.noLink);\n const noSignerSigns = preparedSigns.filter(item => item.noSigner);\n const multipleSigners = preparedSigns.filter(item => item.multipleSigner);\n const demonstrableSings = preparedSigns.filter(item => !item.disabled);\n const sortedSigns = sortSigns(demonstrableSings);\n\n // change the parts if it needed..\n return [...sortSigns(sortedSigns), ...sortSigns([...noLinkSigns, ...noSignerSigns, ...multipleSigners])];\n};\n\nexport function* wathcFetchSigns() {\n if (!isFeatureEnabled(FEATURE_NAMES.SignField)) {\n return;\n }\n const appID = yield select(SELECTORS.getAppID);\n const signs = yield call(API.fetchSigns, appID);\n const preparedSigns = prepateSignDocuments(signs);\n yield put({ type: ACTION_TYPES.FETCH_SIGNS.SUCCESS, payload: preparedSigns });\n}\n\nexport function* portalCreationError(error) {\n const { data: { responseCode } = {} } = error;\n let reason = 'default';\n switch (responseCode) {\n case 429:\n const isUserLoggedIn = yield select(SELECTORS.selectIsUserLoggedIn);\n reason = isUserLoggedIn ? PORTAL_ERROR_MAP.CREATE.CREATE_APP_RATE_LIMIT : PORTAL_ERROR_MAP.CREATE.CREATE_APP_RATE_LIMIT_GUEST;\n break;\n case 500:\n reason = PORTAL_ERROR_MAP.CREATE.CREATE_APP;\n break;\n default:\n }\n yield put({ type: ACTION_TYPES.SET_APP_STATUS, payload: { error } });\n yield put({ type: ACTION_TYPES.CREATE_NEW_PORTAL.ERROR, payload: PORTAL_ERROR_MAP.CREATE[reason], error });\n}\n\nexport function* watchCreatePortal({ formIDs = null, widgetDefaults = null, createWithFormProperties = {} }) {\n try {\n const appPropertiesDefault = useAppDefaults();\n const appProperties = { ...appPropertiesDefault, ...createWithFormProperties };\n const homePage = { id: 0, pageOrder: 0 };\n const _page = isFeatureEnabled(FEATURE_NAMES.SortPages) ? homePage : null;\n const app = yield call(API.createPortal, formIDs, appProperties, widgetDefaults, _page);\n const { id } = app;\n const isFromStartFromScratch = StorageHelper.getSessionStorageItem({ key: 'create_app_from_scratch' });\n const from = isFromStartFromScratch && { from: 'wizard:start-from-scratch' };\n\n yield put(ACTION_CREATORS.trackEventAction({ action: 'appCreated', target: { portalID: id, ...from } }));\n StorageHelper.removeSessionStorageItem({ key: 'create_app_from_scratch' });\n yield call(normalizeAndRegisterApp, app);\n yield put({ type: ACTION_TYPES.CREATE_NEW_PORTAL.SUCCESS, payload: { formIDs, widgetDefaults } });\n navigate(`${getAppPath()}/build/${id}${window.location.search}`, { replace: true });\n } catch (error) {\n yield call(portalCreationError, error);\n }\n}\n\nexport function* watchBuildOrCreate({ payload: formID }) {\n yield put(ACTION_CREATORS.fetchFormsAction());\n const portalsOfForm = yield call(API.fetchPortalsByFormID, formID);\n if (portalsOfForm.length === 0) {\n navigate(`${getAppPath()}/create/${formID}`, { replace: true });\n return;\n }\n yield put({ type: ACTION_TYPES.FETCH_APPS.SUCCESS, payload: portalsOfForm });\n}\n\nexport function* shareFlow() {\n yield takeEvery(ACTION_TYPES.BULK_SHARE_PORTAL.REQUEST, watchSharePortal);\n yield takeEvery(ACTION_TYPES.BULK_DELETE_SHARE_PORTAL.REQUEST, watchShareDeletePortal);\n yield takeEvery(ACTION_TYPES.UPDATE_RESOURCE_SHARE_URL.REQUEST, watchResourceShareURLUpdate);\n yield takeLatest(ACTION_TYPES.FETCH_SHARE_LIST.REQUEST, watchFetchShareList);\n}\n\nexport function* watchItemOrderUpdate(action) {\n const { payload, dontStack = false } = action;\n const {\n data, sortInfo, page, elementID\n } = payload;\n\n const pageHeadingItems = data.filter(i => i.page === page).filter(i => i.type === ITEM_TYPES.HEADING);\n const isItFirstHeading = pageHeadingItems.length === 1;\n\n if (isItFirstHeading) {\n const { title } = yield select(SELECTORS.getPortalItemByIDSelector(elementID));\n yield put({\n type: ACTION_TYPES.WATCH_HEADING_ITEM_FOR_PAGE_NAMING,\n payload: {\n itemID: elementID,\n prop: {\n title,\n newPage: page\n }\n }\n });\n }\n\n const requestAction = { type: ACTION_TYPES.UPDATE_ORDER.REQUEST, payload: data };\n const portalID = yield select(SELECTORS.getPortalIDSelector);\n const currentData = yield select(SELECTORS.getPortalItems);\n yield put(requestAction);\n\n const result = yield call(API.bulkUpdateItems, portalID, data);\n\n yield put({\n type: ACTION_TYPES.UPDATE_ORDER.SUCCESS,\n payload: result,\n currentData,\n requestAction: action,\n dontStack\n });\n\n yield put(ACTION_CREATORS.trackEventAction({ action: 'itemOrdersUpdated', target: sortInfo }));\n}\n\nfunction* checkLoginableApp() {\n const { loginable, id } = yield select(SELECTORS.getAppInfoWithDefaults);\n if (isYes(loginable)) {\n return;\n }\n // make portal loginable\n yield put(ACTION_CREATORS.updatePortalAction({ loginable: 'Yes' }));\n const redirectPublish = () => {\n navigate(`${getAppPath()}/build/${id}/publish/link/shareSettings`);\n };\n yield put(ACTION_CREATORS.toastAction({\n message: 'Users now can access their submissions through the app.',\n buttonText: 'Go to Publish',\n onButtonClick: redirectPublish\n }));\n}\n\n// TODO :: seperate this\n/* eslint-disable max-statements */\n/* eslint-disable-next-line complexity */\nexport function* watchItemPropUpdate(action) {\n const {\n payload: {\n itemID, prop, linkedItemID = null, bypassDebounce = false\n }\n } = action;\n const portalID = yield select(SELECTORS.getPortalIDSelector);\n if (!itemID) {\n throw new Error('No item ID specified');\n }\n\n let updatingProps = { ...prop };\n let linkPreviewResolved = false;\n const itemProps = yield select(SELECTORS.getPortalItemByIDSelector(itemID));\n const {\n showLinkPreview: currentShowLinkPreview, type, title: itemTitle, formTitle\n } = itemProps;\n const updatingShowLinkPreview = updatingProps?.showLinkPreview;\n\n if (type === ITEM_TYPES.LINK) {\n const updatingLinkWithPreviewEnabled = Object.keys(prop).includes('title') && isYes(currentShowLinkPreview);\n const turningPreviewOn = isYes(updatingShowLinkPreview);\n // Do not send request when showLinkPreview is No.\n if (updatingLinkWithPreviewEnabled || turningPreviewOn) {\n const sanitizedTitle = (prop.title || '').replace(/^https:\\/\\/(https?):\\/\\//, '$1://'); // replace w/ first matched group // TODO try to handle other protocols and occurrences too\n const linkTargetIsMailTo = sanitizedTitle.startsWith('mailto:'); // Dirty fix, validUrl check gets confused about mailto..\n const URL = checkAndAddProtocolToTargetLink(sanitizedTitle || itemTitle);\n if (isValidLinkTarget(URL) && !linkTargetIsMailTo) {\n yield put(ACTION_CREATORS.updateItemLoadingStatus({ [itemID]: true }));\n linkPreviewResolved = true;\n // get preview\n const {\n title: previewTitle,\n image: previewImageURL,\n imageWidth: previewImageWidth,\n imageHeight: previewImageHeight\n } = yield call(API.getLinkItemPreviewDetails, { portalID, itemID, URL });\n\n // Enrich props\n updatingProps = {\n ...updatingProps,\n previewTitle,\n previewImageURL,\n previewImageWidth,\n previewImageHeight\n };\n\n if (prop.title && sanitizedTitle !== prop.title) {\n updatingProps = {\n ...updatingProps,\n title: sanitizedTitle\n };\n }\n\n // Track\n yield put(ACTION_CREATORS.trackEventAction({ action: 'linkPreviewResolved', target: { itemID } }));\n } else {\n updatingProps = {\n ...updatingProps,\n previewTitle: 'Link',\n previewImageURL: '',\n previewImageWidth: '',\n previewImageHeight: ''\n };\n }\n }\n }\n\n // Guard for empty form titles\n if ([ITEM_TYPES.FORM, ITEM_TYPES.SIGN_LINK].includes(type)) {\n const { title, required_showBadge, completed_showBadge } = updatingProps;\n if (title === '' && type === ITEM_TYPES.FORM) {\n updatingProps = { ...updatingProps, title: formTitle };\n }\n // todo :: handle elsewhere\n if (isYes(required_showBadge)) updatingProps = { ...updatingProps, completed_showBadge: required_showBadge };\n\n if ((isYes(required_showBadge) || isYes(completed_showBadge))) {\n yield call(checkLoginableApp);\n }\n }\n\n if (ITEM_TYPES.FORM === type && !!prop.embeddedForm && itemProps.isInitialForm === 'Yes') {\n const _action = prop.embeddedForm === 'Yes' ? 'enabled' : 'disabled';\n logAbTestActionFor(AB_TESTS.ShowFormFromFormBuilder, { action: _action, target: 'showForm' });\n }\n\n const currentItem = yield select(SELECTORS.getItemWithDefaults(itemID));\n\n const { buttonRole, buttonValue: updatingButtonValue } = updatingProps;\n\n if (ActionHelper.ACTIONABLE_ITEMS.includes(type)) {\n const ItemActionHelper = ActionHelper.createComponent(type);\n const userInfo = yield select(SELECTORS.getUser);\n const firstPageID = yield select(SELECTORS.getFirstPageID);\n const pages = yield select(SELECTORS.getPortalPages);\n const pagesLength = pages?.length;\n\n const { title, buttonRole: currentButtonRole, buttonValue } = currentItem;\n const { title: currentFormTitle } = yield select(SELECTORS.getFormByID(buttonValue));\n\n const isTitleFormTitle = title === currentFormTitle;\n const isTitleDefault = ItemActionHelper.isTitleDefault(title);\n\n if (!updatingButtonValue && buttonRole) {\n const { defaultTexts } = ItemActionHelper;\n const updatingButtonProps = updateAndOverrideButtonProperties({\n defaultTexts,\n currentItem,\n updatingProps,\n userInfo,\n isTitleFormTitle,\n isTitleDefault,\n navigationDefaultPage: pagesLength > 1 ? firstPageID : ''\n });\n updatingProps = { ...updatingProps, ...updatingButtonProps };\n }\n\n if (currentButtonRole === BUTTON_ROLE_TYPES.FORM && updatingButtonValue) {\n const { title: updatingFormTitle } = yield select(SELECTORS.getFormByID(updatingButtonValue));\n\n const newTitle = (!title || isTitleDefault || isTitleFormTitle) ? { title: updatingFormTitle } : {};\n\n // We need to send buttonRole even if it's not one of the changing props\n updatingProps = { ...updatingProps, ...newTitle, buttonRole: currentButtonRole };\n }\n }\n\n if (type === ITEM_TYPES.HEADING) {\n yield put({ type: ACTION_TYPES.WATCH_HEADING_ITEM_FOR_PAGE_NAMING, payload: action.payload });\n }\n\n // Make icon svg urls relative\n if (updatingProps.itemIcon) {\n updatingProps.itemIcon = sanitizeSVGIconURLs(updatingProps.itemIcon);\n }\n\n const currentData = Object.keys(updatingProps).reduce((pre, next) => {\n return { ...pre, [next]: currentItem[next] };\n }, {});\n\n const shouldUpdate = shouldUpdatePropFromResponse(type, updatingProps);\n\n const actionType = bypassDebounce ? ACTION_TYPES.UPDATE_ITEM_PROP.WITHOUT_DEBOUNCE : ACTION_TYPES.UPDATE_ITEM_PROP.WITH_DEBOUNCE;\n\n yield put({\n type: actionType,\n payload: {\n itemID,\n prop: updatingProps,\n linkedItemID\n },\n shouldUpdate,\n currentData,\n linkPreviewResolved,\n requestAction: action,\n currentItem\n });\n}\n\nexport function* watchItemPropUpdateRequest(action) {\n const isBuilder = yield select(SELECTORS.getIsBuilder);\n if (!isBuilder) return;\n\n const portalID = yield select(SELECTORS.getPortalIDSelector);\n const previewPanelOpened = yield select(SELECTORS.isPreviewPanelOpenSelector);\n\n const {\n payload: { itemID, prop: updatingProps, linkedItemID = null }, linkPreviewResolved, currentData, shouldUpdate, currentItem\n } = action;\n\n try {\n let result = yield call(API.changeItemProp, portalID, itemID, updatingProps);\n\n if (shouldUpdate) {\n const mutaterFunc = resultMutaters(currentItem)?.[currentItem?.type];\n if (mutaterFunc && typeof mutaterFunc === 'function') {\n result = mutaterFunc(result);\n }\n }\n\n if (shouldUpdate || previewPanelOpened) {\n yield put({\n type: ACTION_TYPES.UPDATE_ITEM_PROP.SUCCESS,\n payload: result,\n requestAction: action,\n currentData\n });\n }\n\n if (currentItem?.page) {\n const pageProps = yield select(SELECTORS.getPageByID(currentItem.page));\n if (pageProps?.linkedItemID) {\n const activeRowID = yield select(SELECTORS.dsGetActiveListRowID(pageProps.linkedItemID));\n yield put(ACTION_CREATORS.dsFetchRow({ itemID, rowID: activeRowID }));\n } else if (linkedItemID) {\n yield put(ACTION_CREATORS.setLivePreviewStatus(APP_PREVIEW_STATES.LOADING));\n\n const isButtonRoleUpdate = Object.keys(updatingProps).includes('buttonRole');\n yield put(ACTION_CREATORS.dsFetchSourceItemData({ itemID: linkedItemID, isButtonRoleUpdate }));\n }\n }\n\n if (currentItem?.type === ITEM_TYPES.LIST && Object.keys(updatingProps)?.includes('resourceID')) {\n yield put(ACTION_CREATORS.dsFetchColumnsRequest({ resourceID: updatingProps.resourceID, viewID: updatingProps?.viewID }));\n yield put(ACTION_CREATORS.dsFetchSourceItemData({ itemID: currentItem.id }));\n yield put(ACTION_CREATORS.dsSetActiveRowID({ id: itemID, rowID: null }));\n }\n\n if (linkPreviewResolved) { // TODO Handle error cases too\n yield put(ACTION_CREATORS.updateItemLoadingStatus({ [itemID]: false }));\n }\n\n // Track\n const resultsEntries = Object.entries(result);\n for (let i = 0; i < resultsEntries.length; i++) {\n const [updatedItemID, value] = resultsEntries[i];\n const updatedPropKeys = Object.keys(value);\n yield put(ACTION_CREATORS.trackEventAction({ action: 'itemUpdated', target: { itemID: updatedItemID, prop: updatedPropKeys } }));\n }\n if (linkedItemID) {\n yield put(ACTION_CREATORS.setAppUpdatedAt(true));\n }\n } catch (err) {\n console.error(err);\n yield put(ACTION_CREATORS.toastAction({\n message: 'Changes are not saved',\n error: true,\n type: 'error'\n }));\n }\n}\n/* eslint-enable max-statements */\n\nexport function* watchCreateFormFromTemplate({ payload: { cloneData } }) {\n const { status, data: { form: { id: formID } } } = yield call(API.cloneTemplate, 'form', cloneData);\n yield put(ACTION_CREATORS.trackEventAction({ action: 'templateUsed', target: { templateID: cloneData.formID } }));\n if (status !== 200) {\n yield put({ type: ACTION_TYPES.CREATE_FORM_FROM_TEMPLATE.ERROR });\n return;\n }\n\n yield put(ACTION_CREATORS.fetchFormsAction());\n const formProps = {\n id: formID,\n ...useItemDefaults(ITEM_TYPES.FORM)\n };\n yield put(ACTION_CREATORS.addPortalItemAction(formProps));\n}\n\nexport function* watchCreateFormFromScratch({ payload: formID }) {\n yield put(ACTION_CREATORS.trackEventAction({ action: 'formCreated', target: { formID: formID } }));\n if (!formID) {\n yield put({ type: ACTION_TYPES.CREATE_FORM_FROM_SCRATCH.ERROR });\n return;\n }\n\n yield put(ACTION_CREATORS.fetchFormsAction());\n const formProps = {\n id: formID,\n ...useItemDefaults(ITEM_TYPES.FORM)\n };\n yield put(ACTION_CREATORS.addPortalItemAction(formProps));\n}\n\nexport function* watchCreateSignDocumentFromTemplate({ payload: { cloneData, confirmData } }) {\n const { status, data: { formID, documentID, embedDocumentKey = '' } } = yield call(API.cloneTemplate, 'pdf', cloneData);\n yield put(ACTION_CREATORS.trackEventAction({ action: 'signTemplateUsed', target: { templateID: cloneData.id } }));\n if (status !== 200) {\n yield put({ type: ACTION_TYPES.CREATE_SIGN_DOCUMENT_FROM_TEMPLATE.ERROR });\n return;\n }\n const signElementProps = {\n formID, id: documentID, embedDocumentKey, ...useItemDefaults(ITEM_TYPES.SIGN_LINK)\n };\n yield put(ACTION_CREATORS.onResourcePickerModalConfirm({ ...confirmData, selectedResourcesArray: [signElementProps] }));\n}\n\nexport function* watchMultipleItemUpdate(action) {\n const { payload, dontStack = false } = action;\n const portalID = yield select(SELECTORS.getPortalIDSelector);\n const currentPortalItems = yield select(SELECTORS.getPortalItems);\n const itemsToUpdate = {};\n let checkAppIsLoginable = false;\n payload.forEach(({ id: itemID, ...itemProps }, key) => {\n let updatedProps = itemProps;\n // todo :: handle elsewhere\n const showRequiredBadge = isYes(itemProps.required_showBadge);\n if (showRequiredBadge) {\n updatedProps = { ...itemProps, completed_showBadge: itemProps.required_showBadge };\n payload[key].completed_showBadge = itemProps.required_showBadge;\n }\n // We must prevent enabling shrink from multiple right panel if embeddedForm is enabled\n if (isYes(updatedProps.shrink) && isYes(!updatedProps.embeddedForm)) {\n const { embeddedForm } = currentPortalItems.find(({ id }) => id === itemID);\n if (isYes(embeddedForm)) {\n updatedProps = { ...updatedProps, shrink: 'No' };\n payload[key].shrink = 'No';\n }\n }\n if ((showRequiredBadge || isYes(itemProps.completed_showBadge))) {\n checkAppIsLoginable = true;\n }\n itemsToUpdate[itemID] = updatedProps;\n });\n\n if (checkAppIsLoginable) {\n yield call(checkLoginableApp);\n }\n const updatedItemIDs = Object.keys(itemsToUpdate);\n if (updatedItemIDs.length === 0) {\n return;\n }\n const currentData = currentPortalItems.filter(({ id }) => updatedItemIDs.includes(id));\n yield put({\n type: ACTION_TYPES.UPDATE_MULTIPLE_ITEM.REQUEST,\n payload: itemsToUpdate,\n currentData,\n requestAction: action\n });\n\n const response = yield call(API.bulkUpdateItems, portalID, payload);\n\n yield put({\n type: ACTION_TYPES.UPDATE_MULTIPLE_ITEM.SUCCESS,\n payload: response,\n currentData,\n requestAction: action,\n dontStack\n });\n yield put(ACTION_CREATORS.trackEventAction({ action: 'bulkItemUpdate', target: { itemIDs: Object.keys(response) } }));\n}\n\nexport function* updateSlug({\n slug,\n forReset,\n reject: rejectCheck,\n resolve: resolveCheck\n}) {\n try {\n const prevSlug = yield select(SELECTORS.getAppSlug);\n if (prevSlug === slug) {\n resolveCheck();\n return;\n }\n if (!forReset) {\n const { isSlugAvailable } = yield call(API.isSlugAvailable, slug);\n if (!isSlugAvailable) {\n rejectCheck(t('Slug is already in use.'));\n return;\n }\n }\n\n yield put({\n type: ACTION_TYPES.UPDATE_PORTAL.UNDOABLE,\n payload: {\n slug\n }\n });\n resolveCheck();\n } catch (err) {\n if (err?.data?.message) {\n const errorMessageFromAPI = ERROR_MESSAGES[err.data?.message] || ERROR_MESSAGES.DEFAULT;\n rejectCheck(t(errorMessageFromAPI));\n } else {\n rejectCheck(t('Slug is already in use.'));\n }\n }\n}\n\nexport function* watchUserSettingUpdate({ payload: userData }) {\n const username = yield select(SELECTORS.getUsername);\n if (username) {\n const res = yield call(API.updateUserSettings, username, userData);\n const updatedKeys = Object.keys(userData);\n // use only updated keys\n const payload = updatedKeys.reduce((prev, next) => ({ ...prev, [next]: res[next] }), {});\n yield put({ type: ACTION_TYPES.UPDATE_USER.SUCCESS, payload });\n }\n}\n\nexport function* watchContinueAsUser() {\n const appID = yield select(SELECTORS.getAppID);\n yield call(API.portalUserAddCurrentUser, appID);\n yield put({ type: ACTION_TYPES.CONTINUE_AS_USER.SUCCESS, payload: false });\n}\n\nexport function* watchAPIRequests() {\n const currentUpdateReqActions = yield actionChannel(({ type }) => isUpdateAPIAction(type), buffers.expanding());\n // check if there are upcoming updates\n const savingProcess = yield select(SELECTORS.areAPIRequestsCompletedSelector);\n try {\n while (true) {\n const { type: actionType } = yield take(currentUpdateReqActions);\n if (isAPIRequestAction({ type: actionType }) && !savingProcess) {\n yield put(ACTION_CREATORS.setApiRequestsCompleted(false));\n } else if (isAPISuccessAction({ type: actionType })) {\n yield put(ACTION_CREATORS.setApiRequestsCompleted(true));\n }\n }\n } catch (e) {\n //\n }\n}\n\nfunction* sendFeedback({ payload }) {\n const {\n stars, feedbackText, feedbackEmail, formID: feedbackFormID\n } = payload;\n const portalID = yield select(SELECTORS.getPortalIDSelector);\n const currentUser = yield select(SELECTORS.getUser);\n const { username, email } = currentUser;\n const emailValue = feedbackEmail || email;\n const feedbackData = {\n ...stars && {\n q5_howWould: stars,\n q5_stars: stars,\n q7_greatWhat7: (stars > 3 ? feedbackText : ''),\n q9_whatCould: (stars === 3 ? feedbackText : ''),\n q8_wereSorry: (stars < 3 ? feedbackText : '')\n },\n ...!stars && {\n q9_whatCould: feedbackText || ''\n },\n q11_appid: portalID,\n q3_username: username,\n q20_email: emailValue,\n // plase don't change below 3 keys & values\n formID: feedbackFormID,\n q18_ticketcategoryid: 37,\n q19_assignee: 'Orion_Team'\n };\n\n try {\n yield call(API.sendFeedbackSubmission, feedbackData);\n yield put({ type: ACTION_TYPES.SEND_FEEDBACK.SUCCESS });\n } catch (e) {\n yield put({ type: ACTION_TYPES.SEND_FEEDBACK.ERROR, error: e });\n }\n}\n\nfunction* fetchApps() {\n const { id: appID } = yield select(SELECTORS.getAppInfoWithDefaults);\n const apps = yield call(API.fetchUserPortals, appID);\n yield put({ type: ACTION_TYPES.FETCH_APPS.SUCCESS, payload: apps });\n}\n\nexport function* watchFetchUserApps() {\n yield call(watchFetchResources, 'portal', ACTION_TYPES.FETCH_APPS.SUCCESS, fetchApps);\n}\n\nexport function* watchDeleteSelectedItems() {\n const multipleSelecteds = yield select(SELECTORS.getSelectedMultipleItems);\n const items = yield select(SELECTORS.getPortalItems);\n const listItemsToRemoved = items.filter(({ type, id }) => type === ITEM_TYPES.LIST && multipleSelecteds.includes(id));\n yield all(listItemsToRemoved?.map(item => put(ACTION_CREATORS.dsDeleteDetailPage({ item }))));\n const presentationItemIDs = listItemsToRemoved.map(({ presentationItemID }) => presentationItemID);\n\n yield put(ACTION_CREATORS.removePortalItems([...multipleSelecteds, ...presentationItemIDs]));\n}\n\nexport function* watchBrandingButtonClick() {\n const appMode = yield select(SELECTORS.getAppModeSelector);\n const isBuilder = appMode === APP_MODES.builder;\n const appID = yield select(SELECTORS.getPortalIDSelector);\n const utmScheme = {\n ...BRANDING_DEFAULT_UTM_SCHEME,\n ...(isBuilder && { source: 'appBuilder' }),\n appID\n };\n const utmString = utmParser(utmScheme);\n if (!isBuilder) yield put(ACTION_CREATORS.trackEventAction({ action: 'brandingFooterClicked' }));\n handleCustomNavigation(`${isBuilder ? '/pricing' : 'https://www.jotform.com/myapps/'}?${utmString}&action=createWizard`, '_blank', true);\n}\n\nfunction* templateCategoriesFlow() {\n const appMode = yield select(SELECTORS.getAppModeSelector);\n if (appMode === APP_MODES.builder && isFeatureEnabled(FEATURE_NAMES.ShareAsTemplate)) {\n const response = yield call(API.getTemplateCategories);\n yield put({ type: ACTION_TYPES.SET_TEMPLATE_CATEGORIES, payload: response });\n\n const { data: { languages } } = yield call(API.getTemplateLanguages);\n yield put({ type: ACTION_TYPES.SET_TEMPLATE_LANGUAGES, payload: languages });\n }\n}\n\nfunction* svgIconsFlow() {\n const appMode = yield select(SELECTORS.getAppModeSelector);\n if (appMode === APP_MODES.builder) {\n // put icons svgRefs to the dom\n yield call(prepareIcons, appConfig.svgIconsContainer);\n }\n}\n\nexport function* fetchCDNConfigFlow() {\n const appMode = yield select(SELECTORS.getAppModeSelector);\n if (appMode === APP_MODES.builder || isEnterprise()) {\n yield put({ type: ACTION_TYPES.FETCH_CDN_CONFIG.REQUEST });\n const result = yield call(API.fetchCDNConfig);\n const { configs = {} } = result;\n const CDN = (!configs.cloudURL || (configs.cloudURL && configs.cloudURL.length === 0)) ? '/' : configs.cloudURL;\n const config = { ...configs, CDN };\n yield put({ type: ACTION_TYPES.FETCH_CDN_CONFIG.SUCCESS, payload: config });\n }\n}\n\nexport function* fetchResources() {\n const appMode = yield select(SELECTORS.getAppModeSelector);\n if (appMode === APP_MODES.builder) {\n yield put(ACTION_CREATORS.fetchFormsAction());\n yield put(ACTION_CREATORS.fetchSignAction());\n }\n}\n\nfunction* fetchUserApps() {\n yield take(ACTION_TYPES.FETCH_PORTAL.SUCCESS);\n const appMode = yield select(SELECTORS.getAppModeSelector);\n if (appMode === APP_MODES.builder) {\n yield put(ACTION_CREATORS.fetchUserAppsAction());\n }\n}\n\nexport function* watchLayoutChange(action) {\n const { payload: appLayout } = action;\n const { portalProps } = getLayoutProps(appLayout);\n\n if (portalProps) {\n yield put(ACTION_CREATORS.updatePortalAction(portalProps));\n }\n\n const items = yield select(SELECTORS.getPortalItems);\n\n const updatingItems = items.reduce((prev, item) => {\n const { type } = item;\n const { itemProps } = getLayoutProps(appLayout, type);\n const stylingProps = getProtectedStylingProps(appLayout, item);\n\n return [...prev, { ...item, ...itemProps, ...stylingProps }];\n }, []);\n\n yield put(ACTION_CREATORS.updateMultipleItemAction(updatingItems));\n}\n\nfunction* fetchUserSlugFlow() {\n yield all([take(ACTION_TYPES.FETCH_USER.SUCCESS), take(ACTION_TYPES.FETCH_PORTAL.SUCCESS)]);\n\n try {\n const [appMode, appInfo] = yield all([\n select(SELECTORS.getAppModeSelector),\n select(SELECTORS.getPortalInfoSelector)\n ]);\n\n if (appMode === APP_MODES.builder && appInfo?.username) {\n const { slug } = yield call(API.getUserSlug, appInfo.username);\n yield put({ type: ACTION_TYPES.SET_USER_SLUG, slug });\n }\n } catch (e) {\n console.error('Error on fetch user slug');\n }\n}\n\nfunction* watchUserChange(action) {\n const { payload: user } = action;\n\n const { id: appID } = yield select(SELECTORS.getAppInfoWithDefaults);\n\n yield call(API.claimGuestAccount, appID);\n\n try {\n yield call(API.portalUserAddCurrentUser, appID);\n } catch (err) {\n console.error('Error on adding portal user: ', err);\n }\n\n yield put(ACTION_CREATORS.setUserAction(user));\n\n yield put(ACTION_CREATORS.fetchPortalAction(appID));\n}\n\nexport function* watchUpdatePortalUserProps({ payload }) {\n const portalID = yield select(SELECTORS.getPortalIDSelector);\n\n const data = yield call(API.updatePortalUserProperty, portalID, payload);\n yield put({ type: ACTION_TYPES.UPDATE_PORTAL.REQUEST, payload: data });\n}\n\nexport function* watchCheckoutFormStatusChanges({ payload }) {\n switch (payload) {\n case CHECKOUT_FORM_STATUSES.COMPLETED:\n const isDonationApp = yield select(SELECTORS.getIsDonationApp);\n if (isDonationApp) {\n const portalPaymentCurrencyInfo = yield select(SELECTORS.getPortalPaymentCurrencyInfo);\n const donationPrice = yield select(SELECTORS.getDonationPriceInCart);\n const oldDonationGoal = yield select(SELECTORS.getCurrentDonationGoal);\n const currentDonationGoal = sumMoney({ ...portalPaymentCurrencyInfo, price: oldDonationGoal }, donationPrice).toString();\n yield put(ACTION_CREATORS.updatePortalPropAction({ currentDonationGoal, lastOrderAmount: donationPrice }));\n }\n yield put({ type: ACTION_TYPES.SET_CART_PRODUCTS, payload: {} });\n yield put({ type: ACTION_TYPES.SET_CHECKOUT_KEY, payload: '' });\n break;\n default:\n break;\n }\n}\n\nfunction* watchNavigationItemClick({ payload: { targetPageID } }) {\n yield put(ACTION_CREATORS.navigateToAction({ to: DESTINATION_TYPES.PAGE, pageID: targetPageID }));\n}\n\nfunction* watchSetTodoComplete({ payload: { formID, submissionCount } }) {\n const lastSubmitted = momentToString(Moment(getUpdatedDate(new Date().getTime(), 'America/New_York', true)), true);\n yield put(ACTION_CREATORS.setTodoItemCompleted({\n itemID: formID,\n prop: { lastSubmitted, submissionCount: submissionCount + 1 }\n }));\n}\n\nfunction* createNewPortalWithAny(onAppCreated, customAppProperties = {}, from) {\n try {\n const isMobilePhone = checkMobilePhone();\n const appPropertiesDefault = useAppDefaults();\n const appProperties = { ...appPropertiesDefault, ...customAppProperties };\n const homePage = { id: 0, pageOrder: 0 };\n const _page = isFeatureEnabled(FEATURE_NAMES.SortPages) ? homePage : null;\n const app = yield call(API.createPortal, null, appProperties, null, _page);\n const { id } = app;\n yield put(ACTION_CREATORS.trackEventAction({ action: 'appCreated', target: { portalID: id, ...from } }));\n yield call(normalizeAndRegisterApp, app);\n const isDonationActive = isFeatureEnabled(FEATURE_NAMES.DonationItem);\n let redirectUrl = `${getAppPath()}/build/${id}`;\n if (isDonationActive) {\n redirectUrl += '?useNewBuilder';\n }\n yield call(navigate, redirectUrl, { replace: true });\n if (id) {\n yield call(onAppCreated);\n if (!isMobilePhone) {\n yield put(ACTION_CREATORS.openRightPanelWithModeAction(RightPanelModes.APP_ITEM));\n }\n }\n } catch (error) {\n yield call(portalCreationError, error);\n }\n}\n\nexport function* createNewPortalWithTemplate({ payload }) {\n try {\n const app = yield call(API.fetchPortal, payload.appID);\n yield call(normalizeAndRegisterApp, app);\n const redirectUrl = `${getAppPath()}/build/${payload.appID}`;\n yield call(navigate, redirectUrl, { replace: true });\n StorageHelper.removeSessionStorageItem({ key: 'create_app_from_app_templates' });\n } catch (error) {\n yield call(portalCreationError, error);\n }\n}\n\nexport function* createNewPortalWithStore() {\n const isFromStoreBuilder = StorageHelper.getSessionStorageItem({ key: 'create_app_from_store_builder' });\n const from = isFromStoreBuilder && { from: 'create_app_from_store_builder' };\n function* onAppCreated() {\n const itemProps = {\n type: 'PRODUCT_LIST',\n title: t('Products'),\n page: '0'\n };\n yield put(ACTION_CREATORS.addPortalItemAction(itemProps, -1, true));\n yield take(ACTION_TYPES.ADD_PORTAL_ITEMS.SUCCESS);\n yield put(ACTION_CREATORS.selectPortalItemAction('1'));\n }\n yield call(createNewPortalWithAny, onAppCreated, {}, from);\n StorageHelper.removeSessionStorageItem({ key: 'create_app_from_store_builder' });\n}\n\nexport function* createNewPortalWithDonation() {\n function* onAppCreated() {\n const getItemDefaults = yield select(SELECTORS.getItemDefaultsGetter);\n yield put(ACTION_CREATORS.addPortalItemAction([\n { ...getItemDefaults(ITEM_TYPES.IMAGE), page: '0' },\n { ...getItemDefaults(ITEM_TYPES.DONATION), page: '0' }\n ]));\n yield put(ACTION_CREATORS.trackEventAction({ action: 'donationBoxAddedFromURL', target: { url: '/createWithDonationBuilder' } }));\n yield take(ACTION_TYPES.ADD_PORTAL_ITEMS.SUCCESS);\n yield put(ACTION_CREATORS.selectPortalItemAction('1'));\n }\n let customAppProperties = {\n [APP_HEADER_PROPS.appHeaderBgColor]: '#B2E0FF'\n };\n\n if (global.JOTFORM_ENV !== 'ENTERPRISE') {\n customAppProperties = {\n ...customAppProperties,\n appIconColor: '#0099FF',\n appIconBackground: '#FFFFFF',\n appIconSvgRef: 'jfc_icon_solid-heart',\n appIconURL: '/cardforms/assets/icons/icon-sets-v2/solid/Basic UI/jfc_icon_solid-heart.svg',\n appIconType: IMAGE_TYPE.icon,\n\n logoBackground: '#FFFFFF',\n logoIconSvgRef: 'jfc_icon_solid-heart',\n logoURL: '/cardforms/assets/icons/icon-sets-v2/solid/Basic UI/jfc_icon_solid-heart.svg',\n logoType: IMAGE_TYPE.icon,\n iconColor: '#0099FF'\n };\n }\n\n yield call(createNewPortalWithAny, onAppCreated, customAppProperties);\n}\nexport function* watchIsAppDone({ payload: isAppDone }) {\n const shouldShowProgressBar = yield select(SELECTORS.getShouldShowProgressBar);\n if (isAppDone && shouldShowProgressBar) {\n yield put(ACTION_CREATORS.showGenericModalAction({ name: MODALS.APP_IS_DONE_MODAL }));\n }\n}\n\nexport function* watchFormPickerModalConfirm({ payload }) {\n const {\n selection, portalOrder = ITEM_ADDITION_ORDER_STRATEGY.TO_END_OF_THE_PAGE, page, withClicking = false\n } = payload;\n const lastSelectedItemOrder = yield select(SELECTORS.getLastSelectedItemOrder);\n const getItemDefaults = yield select(SELECTORS.getItemDefaultsGetter);\n const formItems = selection.map(formID => ({ id: formID, type: ITEM_TYPES.FORM }));\n const useDndDropOrder = portalOrder && portalOrder !== ITEM_ADDITION_ORDER_STRATEGY.TO_END_OF_THE_PAGE;\n const newPortalOrder = useDndDropOrder ? portalOrder : lastSelectedItemOrder;\n\n const formsWithPage = formItems.reduce((prev, item) => ([...prev, { ...item, page }]), []);\n\n const forms = (page && page !== 'homepage') ? formsWithPage : formItems;\n const formsWithDefaultValues = forms.map(form => {\n return {\n ...form,\n ...getItemDefaults(ITEM_TYPES.FORM)\n };\n });\n yield put(ACTION_CREATORS.addPortalItemAction(formsWithDefaultValues, newPortalOrder, withClicking));\n}\n\nexport function* watchResourcePickerModalConfirm({ payload }) {\n const {\n selectedResourcesArray,\n resourceType,\n addOrder = ITEM_ADDITION_ORDER_STRATEGY.TO_END_OF_THE_PAGE,\n page,\n withClicking = false\n } = payload;\n const lastSelectedItemOrder = yield select(SELECTORS.getLastSelectedItemOrder);\n const getItemDefaults = yield select(SELECTORS.getItemDefaultsGetter);\n const appID = yield select(SELECTORS.getAppID);\n const useDndDropOrder = addOrder && addOrder !== ITEM_ADDITION_ORDER_STRATEGY.TO_END_OF_THE_PAGE;\n const newPortalOrder = useDndDropOrder ? addOrder : lastSelectedItemOrder;\n\n const itemTypesMap = {\n [RESOURCE_TYPES.TABLE]: ITEM_TYPES.TABLE_LINK,\n [RESOURCE_TYPES.REPORT]: ITEM_TYPES.REPORT_LINK,\n [RESOURCE_TYPES.SENTBOX]: ITEM_TYPES.SENTBOX_LINK,\n [RESOURCE_TYPES.SIGN]: ITEM_TYPES.SIGN_LINK,\n [RESOURCE_TYPES.DATA_SOURCE]: ITEM_TYPES.LIST\n };\n\n if (isFeatureEnabled(FEATURE_NAMES.FormResource)) {\n itemTypesMap[RESOURCE_TYPES.FORM] = ITEM_TYPES.FORM;\n }\n\n const newPortalItems = selectedResourcesArray.map(({\n name,\n title,\n id,\n type: reportType = 'reports', // Will be only used for reports,\n isTeamAsset = false,\n ...restResource\n }) => {\n const resourceSubType = (resourceType === RESOURCE_TYPES.REPORT) ? { resourceSubType: reportType } : {};\n const resourceURL = resourceType === RESOURCE_TYPES.FORM && isFeatureEnabled(FEATURE_NAMES.FormResource) ? restResource.url : generateResourceURL(resourceType, id, appID, reportType);\n return {\n ...getItemDefaults(itemTypesMap[resourceType]),\n resourceType,\n ...resourceSubType,\n resourceID: id,\n resourceURL,\n title: title || name,\n isTeamAsset,\n ...(page && page !== 'homepage') && { page }\n };\n });\n\n yield put(ACTION_CREATORS.addPortalItemAction(newPortalItems, newPortalOrder, withClicking));\n}\n\nexport function* watchLeftPanelItemClick({ payload: type }) {\n const getItemDefaults = yield select(SELECTORS.getItemDefaultsGetter);\n const lastSelectedItemOrder = yield select(SELECTORS.getLastSelectedItemOrder);\n const isMultiPage = yield select(SELECTORS.getIsMultiPage);\n const pageWithMaxPageOrder = yield select(SELECTORS.getPageWithMaxPageOrder);\n const lastInteractedPageID = yield select(SELECTORS.getLastInteractedPageID);\n const firstPageID = yield select(SELECTORS.getFirstPageID);\n const selectedPortalItems = yield select(SELECTORS.getSelectedPortalItems);\n const [selectedPortalItem] = selectedPortalItems ?? [];\n const lastPageID = isMultiPage && pageWithMaxPageOrder.id;\n const page = (lastInteractedPageID || (!selectedPortalItem && lastPageID)) || firstPageID;\n const pageProps = yield select(SELECTORS.getPageByID(page));\n\n switch (!!pageProps?.linkedItemID || type) {\n case ITEM_TYPES.FORM:\n if (isFeatureEnabled(FEATURE_NAMES.FormResource)) {\n yield put(ACTION_CREATORS.showGenericModalAction({\n name: MODALS.RESOURCE_PICKER_MODAL,\n resourceType: RESOURCE_TYPES.FORM,\n page,\n withClicking: true\n }));\n } else {\n yield put(ACTION_CREATORS.showGenericModalAction({\n name: MODALS.FORM_PICKER_MODAL,\n page,\n withClicking: true\n }));\n }\n return;\n case ITEM_TYPES.TABLE_LINK:\n yield put(ACTION_CREATORS.showGenericModalAction({\n name: MODALS.RESOURCE_PICKER_MODAL,\n resourceType: RESOURCE_TYPES.TABLE,\n page,\n withClicking: true\n }));\n return;\n case ITEM_TYPES.REPORT_LINK:\n yield put(ACTION_CREATORS.showGenericModalAction({\n name: MODALS.RESOURCE_PICKER_MODAL,\n resourceType: RESOURCE_TYPES.REPORT,\n page,\n withClicking: true\n }));\n return;\n case ITEM_TYPES.SENTBOX_LINK:\n yield put(ACTION_CREATORS.showGenericModalAction({\n name: MODALS.RESOURCE_PICKER_MODAL,\n resourceType: RESOURCE_TYPES.SENTBOX,\n page,\n withClicking: true\n }));\n return;\n case ITEM_TYPES.SIGN_LINK:\n yield put(ACTION_CREATORS.showGenericModalAction({\n name: MODALS.RESOURCE_PICKER_MODAL,\n resourceType: RESOURCE_TYPES.SIGN,\n page,\n withClicking: true\n }));\n return;\n default: // For other types\n const itemProps = getItemDefaults(type);\n yield put(ACTION_CREATORS.addPortalItemAction({ ...itemProps, ...page ? { page } : {} }, lastSelectedItemOrder, true));\n }\n}\n\nfunction* watchItemClick({ payload }) {\n const {\n itemID, metaKey, ctrlKey, shiftKey, rightPanelMode = RightPanelModes.APP_ITEM\n } = payload;\n\n const isMobileMultipleSelectMode = yield select(SELECTORS.getMobileMultipleSelectionMode);\n const selectedPortalItems = yield select(SELECTORS.getSelectedPortalItems);\n const [selectedPortalItem] = selectedPortalItems;\n // const { metaKey, ctrlKey, shiftKey } = event || {};\n const multipleSelectionMode = metaKey || ctrlKey || shiftKey;\n\n if ((multipleSelectionMode || isMobileMultipleSelectMode)) {\n yield put(ACTION_CREATORS.selectMultipleItemAction({ selection: itemID, withRange: shiftKey }));\n return;\n }\n\n if (!isEqual(selectedPortalItem, itemID)) {\n // TODO:: we should handle tempIDs\n // When a new item added, initially we are waiting for a response from API to get the item's ID\n // if the user wants to update this item before its ID return from API,\n // we are selecting an empty(undefined) item in UI since this false equality check returns true.\n // leads to problems both in UI and backend\n yield put(ACTION_CREATORS.selectPortalItemAction(itemID));\n yield put(ACTION_CREATORS.setRightPanelModeAction(rightPanelMode));\n }\n}\n\nfunction* watchOpenRightPanelWithMode({ payload: mode }) {\n yield put(ACTION_CREATORS.setRightPanelModeAction(mode));\n const isRightPanelOpen = yield select(SELECTORS.isRightPanelOpenSelector);\n const selectedItems = yield select(SELECTORS.getSelectedPortalItems);\n if (!isEmpty(selectedItems) && mode === RightPanelModes.APP_HEADER) {\n yield put(ACTION_CREATORS.selectPortalItemAction());\n }\n if (!isRightPanelOpen) {\n yield put(ACTION_CREATORS.toggleRightPanelAction(true));\n }\n}\n\nfunction* watchFetchUserTeams() {\n const userTeams = yield call(API.getUserTeams);\n\n yield put({ type: ACTION_TYPES.FETCH_USER_TEAMS.SUCCESS, payload: userTeams });\n}\n\nfunction* watchFetchUserTeamPermissions() {\n const teamPermissions = yield call(API.fetchUserPermissions);\n yield put({ type: ACTION_TYPES.FETCH_USER_TEAM_PERMISSIONS.SUCCESS, payload: teamPermissions });\n}\n\nfunction* watchUpdateAppLogo({ payload }) {\n const installableProps = yield call(handleInstallableAppIcon, payload);\n\n yield put(ACTION_CREATORS.updatePortalPropAction(installableProps));\n yield put(ACTION_CREATORS.trackEventAction({ action: 'appUpdated', target: { props: Object.keys(installableProps) } }));\n}\n\nfunction* watchOnStageClick() {\n const isAppCoverCropperActive = yield select(SELECTORS.getAppCoverCropState);\n const isAppHeaderCropperActive = yield select(SELECTORS.getAppHeaderCropState);\n const isRightPanelOpen = yield select(SELECTORS.isRightPanelOpenSelector);\n const isLeftPanelOpen = yield select(SELECTORS.isLeftPanelOpenSelector);\n const selectedItems = yield select(SELECTORS.getSelectedPortalItems);\n const selectedPage = yield select(SELECTORS.getSelectedPage);\n const lastAddedItemAction = yield select(SELECTORS.getLastAddedItemIDSelector);\n const isMobile = checkMobilePhone();\n\n const isAnyCropperActive = isAppCoverCropperActive || isAppHeaderCropperActive;\n\n if (isRightPanelOpen) {\n yield put(ACTION_CREATORS.toggleRightPanelAction(false));\n yield put(ACTION_CREATORS.setRightPanelModeAction(''));\n }\n if (!isAnyCropperActive) {\n if (!isEmpty(selectedItems)) {\n yield put(ACTION_CREATORS.selectPortalItemAction(''));\n }\n if (selectedPage) {\n yield put(ACTION_CREATORS.selectPageAction());\n }\n if (lastAddedItemAction) {\n yield put(ACTION_CREATORS.clearLastAddedItemAction());\n }\n }\n if (isMobile && isLeftPanelOpen) {\n yield put(ACTION_CREATORS.toggleLeftPanelAction(false));\n }\n}\n\nfunction* watchShowDonationItem() {\n const allItems = yield select(SELECTORS.getPortalItems);\n const activePageID = yield select(SELECTORS.getActivePageID);\n const donationItem = allItems.find(item => item.type === ITEM_TYPES.DONATION);\n const donationItemPage = donationItem?.page;\n\n yield put(ACTION_CREATORS.trackEventAction({ action: 'topBarDonationButtonClicked' }));\n\n if (activePageID !== donationItemPage) {\n yield put(ACTION_CREATORS.navigateToAction({ to: DESTINATION_TYPES.PAGE, pageID: donationItemPage }));\n yield take(ACTION_TYPES.ACTIVE_PAGE);\n }\n\n const donationItemElement = document.querySelector('div[type=\"DONATION\"]');\n donationItemElement.scrollIntoView({ block: 'center' });\n}\n\nfunction* watchOnDragEnd({ payload }) {\n const getItemDefaults = yield select(SELECTORS.getItemDefaultsGetter);\n const { source, destination, draggableId } = payload;\n\n if (!destination) return;\n const { droppableId: srcDropppableID, index: oldIndex } = source;\n const { droppableId: destDropppableID, index: newIndex } = destination;\n if (!destDropppableID.includes('droppable')) return; // Forbidden to drop outside\n\n const page = destDropppableID.split('_')[1];\n const oldpage = srcDropppableID.split('_')[1];\n\n const isSourceDetailPage = yield select(SELECTORS.getIsDataSourcePage(oldpage));\n\n if (isSourceDetailPage && page !== oldpage) {\n yield put(ACTION_CREATORS.toastAction({\n message: 'Elements cannot be moved from details page'\n }));\n return;\n }\n\n const { type: itemType } = yield select(SELECTORS.getPortalItemByIDSelector(draggableId));\n const isDestinationDetailPage = yield select(SELECTORS.getIsDataSourcePage(page));\n\n if (isDestinationDetailPage && !(AVAILABLE_DETAIL_PAGE_ITEMS.includes(draggableId) || AVAILABLE_DETAIL_PAGE_ITEMS.includes(itemType))) {\n yield put(ACTION_CREATORS.toastAction({\n message: 'Element is not supported for detail page'\n }));\n\n yield put(ACTION_CREATORS.trackEventAction({ action: 'detailPageUnsupportedItemAddition', target: { itemType: itemType ?? draggableId, pageID: page } }));\n return;\n }\n\n const pageObject = page && page !== 'homepage' ? { page } : {};\n if (Object.values(ITEM_TYPES).includes(draggableId) || isItemTypeWidget(draggableId)) {\n // New Addition\n const droppedItem = getItemDefaults(draggableId);\n const newItemOrder = newIndex + 1;\n const { type } = droppedItem;\n\n if (type === ITEM_TYPES.FORM && !isFeatureEnabled(FEATURE_NAMES.FormResource)) {\n yield put(ACTION_CREATORS.showGenericModalAction({\n name: MODALS.FORM_PICKER_MODAL,\n portalOrder: newItemOrder,\n page\n }));\n return;\n }\n\n if (resourceLinkTypes.includes(type)) {\n yield put(ACTION_CREATORS.showGenericModalAction({\n name: MODALS.RESOURCE_PICKER_MODAL,\n resourceType: resourceTypeMap[type],\n page,\n addOrder: newItemOrder\n }));\n return;\n }\n\n yield put(ACTION_CREATORS.addPortalItemAction({ ...droppedItem, ...pageObject }, newItemOrder));\n return;\n }\n yield put(ACTION_CREATORS.changeOrderAction({\n oldIndex, newIndex, page, elementID: draggableId, oldpage: oldpage || ''\n }));\n\n yield put(ACTION_CREATORS.updateLastInteractedPageIDAction(page));\n}\n\nfunction* pushNotificationFlowPublic() {\n const status = yield select(SELECTORS.getPushNotificationStatus);\n if (!isYes(status)) {\n return;\n }\n const appID = yield select(SELECTORS.getAppID);\n if (!appID) {\n return;\n }\n\n if (!PushManager.isSupported()) {\n if (!(!isPWA() && isIosSafari())) {\n yield put(ACTION_CREATORS.trackEventAction({ action: 'pushNotificationNotSupported' }));\n }\n return;\n }\n\n const portalPush = new PushManager({\n resourceType: 'portal',\n resourceId: appID\n });\n\n const isSubscribed = yield call([portalPush, portalPush.isSubscribed]);\n const swRegistration = yield window.navigator.serviceWorker.ready;\n\n if (!isSubscribed && swRegistration && !isPushPermissionRecentlyDismissed(appID)) {\n yield put(ACTION_CREATORS.setUIProp(UI_PROPS.notificationPermissionState, NOTIFICATION_PERMISSION_STATES.VISIBLE));\n yield put(ACTION_CREATORS.trackEventAction({ action: 'notificationPermissionShown' }));\n yield takeLatest(ACTION_TYPES.PUSH_NOTIFICATION_ALLOW, function* allow() {\n yield put(ACTION_CREATORS.trackEventAction({ action: 'notificationPermissionAllowClicked' }));\n yield put(ACTION_CREATORS.setUIProp(UI_PROPS.notificationPermissionState, NOTIFICATION_PERMISSION_STATES.LOADING));\n const username = yield select(SELECTORS.getUsername);\n try {\n yield call([portalPush, portalPush.subscribe], { username });\n yield put(ACTION_CREATORS.setUIProp(UI_PROPS.notificationPermissionState, NOTIFICATION_PERMISSION_STATES.HIDDEN));\n } catch (err) {\n if (err instanceof SubscriptionError) {\n switch (err.name) {\n case 'PermissionDefault':\n yield put(ACTION_CREATORS.setUIProp(UI_PROPS.notificationPermissionState, NOTIFICATION_PERMISSION_STATES.VISIBLE));\n break;\n case 'PermissionDenied':\n yield put(ACTION_CREATORS.setUIProp(UI_PROPS.notificationPermissionState, NOTIFICATION_PERMISSION_STATES.DENIED));\n yield put(ACTION_CREATORS.trackEventAction({ action: 'notificationPermissionDenied' }));\n break;\n case 'NoSwRegistration':\n case 'DeviceNotSupported':\n yield put(ACTION_CREATORS.setUIProp(UI_PROPS.notificationPermissionState, NOTIFICATION_PERMISSION_STATES.HIDDEN));\n console.error('Error on registering push subscription:', err);\n break;\n default:\n console.error('Error on registering push subscription:', err);\n }\n } else {\n console.log(err);\n yield put(ACTION_CREATORS.setUIProp(UI_PROPS.notificationPermissionState, NOTIFICATION_PERMISSION_STATES.ERROR));\n }\n }\n });\n yield takeLatest(ACTION_TYPES.PUSH_NOTIFICATION_DISMISS, function* dismiss() {\n yield put(ACTION_CREATORS.trackEventAction({ action: 'notificationPermissionDismissed' }));\n const notificationDismissKey = `${NOTIFICATION_DISMISS_KEY}_${appID}`;\n StorageHelper.setLocalStorageItem({\n key: notificationDismissKey,\n value: Date.now()\n });\n yield put(ACTION_CREATORS.setUIProp(UI_PROPS.notificationPermissionState, NOTIFICATION_PERMISSION_STATES.HIDDEN));\n });\n }\n}\n\nfunction* pushNotificationHistoryPolling() {\n const pendingCampaign = yield select(SELECTORS.hasPendingPushCampaign);\n const serverTimeZone = 'America/New_York';\n if (pendingCampaign && Moment.tz(pendingCampaign.createdAt, serverTimeZone).isAfter(Moment.tz(serverTimeZone).subtract(2, 'minutes'))) {\n yield delay(3000);\n yield put({ type: ACTION_TYPES.FETCH_NOTIFICATON_HISTORY.REQUEST });\n }\n}\n\nfunction* pushNotificationFlow() {\n const appMode = yield select(SELECTORS.getAppModeSelector);\n if (appMode === APP_MODES.public) {\n yield spawn(pushNotificationFlowPublic);\n } else if (appMode === APP_MODES.builder) {\n const currentStep = yield select(SELECTORS.getCurrentStep);\n const currentSubtab = yield select(SELECTORS.getCurrentSubTab);\n if (currentStep === 'settings' && currentSubtab === 'pushNotification') { // TODO: check is push enabled (performance)\n yield put({ type: ACTION_TYPES.FETCH_NOTIFICATON_HISTORY.REQUEST });\n yield put({ type: ACTION_TYPES.FETCH_NOTIFICATION_STATS.REQUEST });\n }\n yield takeLatest(ACTION_TYPES.SET_ACTIVE_BUILDER_PAGE, function* handler({ payload }) {\n if (payload.subTab === 'pushNotification') {\n yield put({ type: ACTION_TYPES.FETCH_NOTIFICATON_HISTORY.REQUEST });\n yield put({ type: ACTION_TYPES.FETCH_NOTIFICATION_STATS.REQUEST });\n }\n });\n yield takeLatest([ACTION_TYPES.SEND_PUSH_NOTIFICATION.SUCCESS, ACTION_TYPES.FETCH_NOTIFICATON_HISTORY.SUCCESS], pushNotificationHistoryPolling);\n }\n}\n\nfunction* uxrExitIntentSurveyFlow() {\n const key = 'appBuilder:uxrExitIntentSurveySeen';\n const isSurveySeen = StorageHelper.getLocalStorageItem({ key });\n const isBuilder = yield select(SELECTORS.getIsBuilder);\n const currentUser = yield select(SELECTORS.getUser);\n const isGuestUser = currentUser.account_type?.name === 'GUEST';\n const isAppFirstUser = yield select(SELECTORS.getIsAppFirstUser);\n const portalID = yield select(SELECTORS.getPortalIDSelector);\n\n if (!isBuilder || !isAppFirstUser || isSurveySeen) return;\n\n const selectors = ['.jNewHeader-logo', '.jNewHeader-appBoxContent'];\n yield delay(2000);\n const elements = selectors.map(s => document.querySelector(s));\n\n const { register, closeAll } = eventChannelRegistry();\n\n function* showSurveyModal() {\n yield put(ACTION_CREATORS.showGenericModalAction({ name: MODALS.EXIT_INTENT_SURVEY_MODAL, username: currentUser.username, appID: portalID }));\n StorageHelper.setLocalStorageItem({ key, value: true });\n closeAll();\n }\n\n const clickChannel = register(emitter => {\n elements.forEach(el => el?.addEventListener('click', emitter));\n return () => {\n elements.forEach(el => el?.removeEventListener('click', emitter));\n };\n });\n\n yield takeEvery(clickChannel, function* handler(event) {\n event.preventDefault();\n event.stopPropagation();\n yield fork(showSurveyModal);\n });\n\n if (isGuestUser) {\n const mouseEnterChannel = register(emitter => {\n document.addEventListener('mouseenter', emitter);\n return () => document.removeEventListener('mouseenter', emitter);\n });\n\n const timeoutMouseLeaveChannel = register(emitter => {\n const timeout = setTimeout(() => {\n document.addEventListener('mouseleave', emitter);\n }, 2 * 60 * 1000);\n return () => {\n clearTimeout(timeout);\n document.removeEventListener('mouseleave', emitter);\n };\n });\n\n yield takeEvery(timeoutMouseLeaveChannel, function* handler(event) {\n if (event.clientY < 0) { // only upper side of the window\n const { timeout } = yield race({\n mouseEnter: take(mouseEnterChannel),\n timeout: delay(1000)\n });\n if (timeout) {\n yield fork(showSurveyModal);\n }\n }\n });\n } else {\n // const unloadChannel = register(emitter => {\n // window.addEventListener('beforeunload', emitter);\n // return () => {\n // window.removeEventListener('beforeunload', emitter);\n // };\n // }, false); // TODO: replace w/ !isGuestUser\n\n // yield takeEvery(unloadChannel, function* handler() {\n // TODO: send email\n // });\n }\n}\n\nfunction* whatsNewModalFlow(action) {\n const isBuilder = yield select(SELECTORS.getIsBuilder);\n const appPreviewStatus = yield select(SELECTORS.appPreviewStatusSelector);\n if (!isBuilder || APP_PREVIEW_STATES.IDLE !== appPreviewStatus) return;\n const currentUser = yield select(SELECTORS.getUser);\n const forceShowModal = action?.payload?.forceShowModal;\n\n const features = useEnabledFeatures();\n const enabledFeatures = Object.keys(features).filter(key => features[key]);\n const featureKeys = Object.keys(WHATS_NEW_MODAL_FEATURES);\n const viableFeatureModalKeys = featureKeys.filter(viableKey => enabledFeatures.includes(viableKey) && (WHATS_NEW_MODAL_FEATURES[viableKey]?.condition?.({ currentUser }) ?? true));\n\n if (viableFeatureModalKeys.length) {\n yield put(ACTION_CREATORS.showWhatsNewModalAction({ whatsNewKeys: viableFeatureModalKeys, forceShowModal }));\n yield all(\n viableFeatureModalKeys.map(key => put(ACTION_CREATORS.trackEventAction({ action: `${key.charAt(0).toLowerCase() + key.slice(1)}` })))\n );\n }\n}\n\nfunction* fetchUserManagementUsers() {\n const appID = yield select(SELECTORS.getAppID);\n\n try {\n const { users, sheetID, sheetViewID } = yield call(API.fetchUserManagementUsers, appID);\n if (!users) {\n console.error('Expected users on fetch user management users but received: ', users);\n return;\n }\n yield put({ type: ACTION_TYPES.SET_USER_MANAGEMENT_USERS, payload: { users, sheetID, sheetViewID } });\n } catch (err) {\n console.log(err);\n }\n}\n\nfunction* userManagement() {\n const userManagementEnabledUser = isFeatureEnabled(FEATURE_NAMES.UserManagement);\n const isBuilder = yield select(SELECTORS.getIsBuilder);\n if (!userManagementEnabledUser || !isBuilder) return;\n yield takeEvery(ACTION_TYPES.SET_ACTIVE_BUILDER_PAGE, function* handler({ payload }) {\n if (payload.subTab === publishNavPaths.quickShare) {\n yield fetchUserManagementUsers();\n }\n });\n}\n\nfunction* watchAppStatus({ payload: status }) {\n if (status === 'ready') {\n yield spawn(fetchResources);\n yield spawn(fetchShareInfoFlow);\n yield spawn(watchInstallableIconBuilderFlow);\n yield spawn(fetchStorePropertiesFlow);\n yield spawn(checkAddElementPulseVisible);\n yield spawn(pushNotificationFlow);\n yield spawn(uxrExitIntentSurveyFlow);\n yield spawn(dsFetchColumnsFlow);\n yield spawn(aiAssitant);\n\n yield spawn(whatsNewModalFlow);\n // A/B Test: ctAppNameIconModal\n yield spawn(initAppNameIconModalAbTest);\n }\n}\n\nfunction* watchOnMultipleItemUpdate({ payload: props }) {\n const selectedItemProps = yield select(SELECTORS.getSelectedPortalItemsWithInfo);\n const designatedItemID = yield select(SELECTORS.getDesignatedItemIDSelector);\n const version = yield select(SELECTORS.getAppVersionSelector);\n\n const getItemWithDefaults = type => useItemDefaults(type, version);\n const selectedItemsWithDefaults = selectedItemProps.map(({ type, ...rest }) => ({ ...getItemWithDefaults(type), ...rest }));\n\n const { schemeID } = props;\n\n if (designatedItemID) {\n const designatedProperties = ['itemBgColor', 'itemFontColor', 'itemBorderColor', 'itemTextAlignment'];\n const propValues = Object.keys(props);\n const shouldUpdateDesignated = some(propValues, prop => designatedProperties.includes(prop));\n if (shouldUpdateDesignated) {\n yield put(ACTION_CREATORS.updatePortalAction({ designatedItemProps: '' }));\n }\n }\n\n const designatedProperties = schemeID && getColoredPropertiesBySchemeID(selectedItemsWithDefaults, schemeID, version);\n const properties = schemeID ? designatedProperties.itemsToChange : getFilteredProperties(selectedItemsWithDefaults, props, version);\n\n yield put(ACTION_CREATORS.updateMultipleItemAction(properties));\n yield put(ACTION_CREATORS.trackEventAction({ action: 'multipleItemsUpdated', target: { props: Object.keys(props) } }));\n}\n\nfunction* watchOnDeletePage({ payload }) {\n const { pageID, type = '' } = payload;\n const appItems = yield select(SELECTORS.getPortalItems);\n const pageHasItem = appItems.find(({ page }) => page && page.toString() === pageID.toString());\n const pageProps = yield select(SELECTORS.getPageByID(pageID));\n const presentationItem = yield select(SELECTORS.getPresentationItemByDsPageID(pageID));\n const isPageLinked = presentationItem?.buttonValue === pageID;\n\n if (isPageLinked) {\n yield put(ACTION_CREATORS.showGenericModalAction({\n name: MODALS.PREVENT_DETAIL_PAGE_DELETION_MODAL,\n pageID,\n type,\n dsItemID: pageProps.linkedItemID\n\n }));\n\n return;\n }\n\n if (pageHasItem) {\n yield put(ACTION_CREATORS.showGenericModalAction({\n name: MODALS.DELETE_PAGE_MODAL, pageID, type, forceDeleteItems: !!pageProps.linkedItemID\n }));\n return;\n }\n\n yield put(ACTION_CREATORS.deletePageAction(pageID, false, type));\n}\n\nfunction* watchReplaceFormItem({ payload: { itemID, formID } }) {\n const appID = yield select(SELECTORS.getAppID);\n const sentboxItem = yield select(SELECTORS.getSentboxByFormID(itemID));\n\n const form = yield call(API.replaceFormItem, { appID, itemID, formID });\n\n yield put({ type: ACTION_TYPES.REPLACE_FORM_ITEM.SUCCESS, payload: { form, itemID } });\n\n if (sentboxItem) {\n const {\n id, type, name, title\n } = yield select(SELECTORS.getFormByID(formID));\n yield put(ACTION_CREATORS.updateItemPropAction({\n itemID: sentboxItem.id,\n prop: {\n resourceID: id,\n resourceTitle: '',\n title: name || title,\n resourceURL: generateResourceURL(ITEM_TYPES.SENTBOX_LINK, id, appID, type)\n }\n }));\n }\n}\n\nfunction* watchDonations({ payload: { title, description, selectedPrice: price } }) {\n const appID = yield select(SELECTORS.getAppID);\n const appIcon = yield select(SELECTORS.getInstallableIconURL);\n const donationCartData = {\n donation: [{\n description,\n images: [appIcon],\n name: title,\n options: [],\n pid: '1000',\n price,\n quantity: '1'\n }]\n };\n\n yield put(ACTION_CREATORS.setCartProductsAction(donationCartData));\n\n const { checkoutKey } = yield call(API.updateCart, appID, JSON.stringify(donationCartData));\n\n if (checkoutKey) {\n yield put(ACTION_CREATORS.setCheckoutKeyAction(checkoutKey));\n }\n}\n\nfunction* watchShowWhatsNewModal({ payload: { whatsNewKeys, forceShowModal = false } }) {\n if (forceShowModal) {\n yield put(ACTION_CREATORS.showGenericModalAction({ name: MODALS.WHAT_IS_NEW, whatsNewKeys }));\n return;\n }\n const storageKeys = whatsNewKeys\n .reduce((acc, key) => ({ ...acc, [key]: `whats_new_portal_${key.split(/(?=[A-Z])/).map(word => word.toLowerCase()).join('_')}` }), {});\n\n const unseenedKeys = Object.entries(storageKeys).filter(([, localStorageKey]) => global?.localStorage?.getItem(localStorageKey) !== '1');\n\n if (unseenedKeys.length && !isTestingEnv()) {\n const unseenedWhatsNewKeys = unseenedKeys.map(key => key[0]);\n yield put(ACTION_CREATORS.showGenericModalAction({ name: MODALS.WHAT_IS_NEW, whatsNewKeys: unseenedWhatsNewKeys }));\n unseenedKeys.forEach(([, localStorageKey]) => global?.localStorage?.setItem(localStorageKey, 1));\n }\n}\n\nfunction* watchFetchStorePropertiesSuccess() {\n const cartProducts = yield select(SELECTORS.getCart);\n if (isEmpty(cartProducts)) {\n return;\n }\n const appID = yield select(SELECTORS.getAppID);\n const productListItems = yield select(SELECTORS.getProductListItems);\n const validCartProducts = Object.fromEntries(Object.entries(cartProducts).map(([formID, products]) => [\n formID,\n products.filter(({ pid }) => productListItems.find(item => item.formID === formID)?.products?.some(product => product.pid === pid))\n ]));\n\n if (!isEqual(validCartProducts, cartProducts)) {\n yield put(ACTION_CREATORS.setCartProductsAction(validCartProducts));\n yield call(API.updateCart, appID, JSON.stringify(validCartProducts));\n }\n\n const validPriceCartProducts = Object.fromEntries(Object.entries(cartProducts).map(([formID, products]) => [\n formID,\n products.filter(({ pid, price }) => {\n const productListItem = productListItems.find(item => item.formID === formID)?.products?.find(product => product.pid === pid);\n return productListItem && productListItem.price === price;\n })\n ]));\n\n if (!isEqual(validPriceCartProducts, validCartProducts)) {\n yield put(ACTION_CREATORS.setIsChangedPriceInCartAction(true));\n yield put(ACTION_CREATORS.setCartProductsAction(validPriceCartProducts));\n yield call(API.updateCart, appID, JSON.stringify(validPriceCartProducts));\n }\n}\n\nfunction* watchFetchStorePropertiesRequest() {\n const portalID = yield select(SELECTORS.getPortalIDSelector);\n const { cartProducts, favoriteProducts, checkoutKey } = yield call(API.getStorePropertiesOfUser, portalID);\n\n yield put({ type: ACTION_TYPES.FETCH_STORE_PROPERTIES.SUCCESS, payload: { cartProducts, favoriteProducts, checkoutKey } });\n}\n\nfunction* watchFetchNotificationHistory() {\n const appID = yield select(SELECTORS.getAppID);\n try {\n const historyList = yield call(API.getNotificationHistory, appID);\n yield put({ type: ACTION_TYPES.FETCH_NOTIFICATON_HISTORY.SUCCESS, notificationHistory: historyList });\n } catch (err) {\n console.error(err);\n }\n}\n\nfunction* watchFetchNotificationStats() {\n const appID = yield select(SELECTORS.getAppID);\n try {\n const stats = yield call(API.getNotificationStats, appID);\n yield put({ type: ACTION_TYPES.FETCH_NOTIFICATION_STATS.SUCCESS, stats });\n } catch (err) {\n console.error(err);\n }\n}\n\nfunction* watchSendPushNotificationError({ payload: error }) {\n if (error?.data?.responseCode === 401) {\n let message;\n switch (error.data.message) {\n case NOTIFICATION_ERROR_MESSAGES.HOURLY_LIMIT:\n message = t('You have reached the maximum number of push notifications allowed per hour. Please try again later.');\n break;\n case NOTIFICATION_ERROR_MESSAGES.DAILY_LIMIT:\n message = t('You have reached the maximum number of push notifications allowed for today. Please try again tomorrow.');\n break;\n case NOTIFICATION_ERROR_MESSAGES.NOT_ALLOWED:\n message = t(\"You're not authorized to use this feature.\");\n break;\n default:\n message = t('Something went wrong. Please try again.');\n }\n yield put(ACTION_CREATORS.toastAction({\n message,\n error: true,\n type: 'error'\n }));\n }\n}\n\nfunction* watchSendPushNotification({ payload: { title, message, reset } }) {\n const appID = yield select(SELECTORS.getAppID);\n const notificationHistoryList = yield select(SELECTORS.notificationHistory);\n\n try {\n const response = yield call(API.sendPushNotification, { appID, title, message });\n const newHistoryList = [response, ...notificationHistoryList];\n\n yield put({ type: ACTION_TYPES.SEND_PUSH_NOTIFICATION.SUCCESS, payload: newHistoryList });\n reset();\n yield put(ACTION_CREATORS.toastAction({\n message: t('All users will receive a notification.'),\n type: 'success',\n backdrop: false\n }));\n } catch (error) {\n yield put({ type: ACTION_TYPES.SEND_PUSH_NOTIFICATION.ERROR, payload: error });\n }\n}\n\nfunction* popStateListener() {\n const { register } = eventChannelRegistry();\n\n const popStateChannel = register(emitter => {\n window.addEventListener('popstate', emitter);\n return () => {\n window.removeEventListener('popstate', emitter);\n };\n });\n\n yield takeEvery(popStateChannel, function* handler() {\n yield put({ type: ACTION_TYPES.POPSTATE });\n });\n}\n\n// eslint-disable-next-line max-statements\nexport function* rootSagaFlow() {\n yield takeLatest(ACTION_TYPES.UPDATE_PORTAL.UNDOABLE, safeWorker(watchPortalUpdates));\n yield takeEvery(ACTION_TYPES.ADD_PORTAL_ITEMS.REQUEST, safeWorker(watchPortalItemAdditions));\n yield takeLatest(ACTION_TYPES.REMOVE_PORTAL_ITEMS.REQUEST, safeWorker(watchPortalItemRemovals));\n yield takeEvery(ACTION_TYPES.UPDATE_ORDER.UNDOABLE, safeWorker(watchItemOrderUpdate));\n yield takeLatest(ACTION_TYPES.UPDATE_ITEM_PROP.UNDOABLE, safeWorker(watchItemPropUpdate));\n yield takeLatest(ACTION_TYPES.CREATE_NEW_PORTAL.REQUEST, safeWorker(watchCreatePortal));\n yield takeLatest(ACTION_TYPES.BRANDING_BANNER_CLICK, watchBrandingButtonClick);\n yield takeLatest(ACTION_TYPES.BUILD_WITH_FORM, watchBuildOrCreate);\n yield takeEvery(ACTION_TYPES.FETCH_PORTAL.REQUEST, safeWorker(fetchPortalFlow));\n yield takeEvery(ACTION_TYPES.FETCH_SIGNS.REQUEST, safeWorker(wathcFetchSigns));\n yield takeEvery(ACTION_TYPES.FETCH_FORMS.REQUEST, safeWorker(watchFetchForms));\n yield takeEvery(ACTION_TYPES.CREATE_FORM_FROM_TEMPLATE.REQUEST, safeWorker(watchCreateFormFromTemplate));\n yield takeEvery(ACTION_TYPES.CREATE_FORM_FROM_SCRATCH.REQUEST, safeWorker(watchCreateFormFromScratch));\n yield takeEvery(ACTION_TYPES.CREATE_SIGN_DOCUMENT_FROM_TEMPLATE.REQUEST, safeWorker(watchCreateSignDocumentFromTemplate));\n yield takeEvery(ACTION_TYPES.SHOULD_WINDOW_SQUEEZE, watchWindowSqueeze);\n yield takeEvery(ACTION_TYPES.SEND_FEEDBACK.REQUEST, safeWorker(sendFeedback));\n yield takeEvery(ACTION_TYPES.FETCH_APPS.REQUEST, safeWorker(watchFetchUserApps));\n yield takeEvery(ACTION_TYPES.SELECT_ALL_ITEMS, watchSelectAllItems);\n yield takeEvery(ACTION_TYPES.REMOVE_SELECTED_ITEMS, watchDeleteSelectedItems);\n yield takeLatest(ACTION_TYPES.UPDATE_MULTIPLE_ITEM.UNDOABLE, safeWorker(watchMultipleItemUpdate));\n yield takeEvery(action => /^@UI/ig.test(action.type), watchUIupdates);\n yield takeEvery(isAPIErrorAction, watchErrors);\n yield takeEvery(ACTION_TYPES.SELECT_MULTIPLE_PORTAL_ITEM, watchMultipleSelection);\n yield takeEvery(\n [\n ACTION_TYPES.UPDATE_ITEM_PROP.REQUEST,\n ACTION_TYPES.CALCULATE_DONE_COUNT,\n ACTION_TYPES.UPDATE_ITEM_PROP.WITHOUT_DEBOUNCE,\n ACTION_TYPES.UPDATE_ITEM_PROP.WITH_DEBOUNCE\n ],\n watchDoneItemProgress);\n yield takeEvery(ACTION_TYPES.CALCULATE_TODO_COUNT, watchTodoItemProgress);\n yield takeEvery(ACTION_TYPES.RESTART_PROGRESS, watchRestartProgress);\n yield takeEvery(ACTION_TYPES.UPDATE_ITEM_PROP.WITHOUT_DEBOUNCE, watchItemPropUpdateRequest);\n yield debounce(500, ACTION_TYPES.UPDATE_ITEM_PROP.WITH_DEBOUNCE, watchItemPropUpdateRequest);\n yield takeEvery([ACTION_TYPES.UPDATE_ITEM_PROP.SUCCESS, ACTION_TYPES.UPDATE_MULTIPLE_ITEM.SUCCESS], watchProgressBarAvailability);\n yield takeEvery(ACTION_TYPES.ITEM_ADDITION_PORTAL_ORDER_WORKER.REQUEST, safeWorker(watchPortalOrderInItemAddition));\n yield takeEvery(ACTION_TYPES.WATCH_HEADING_ITEM_FOR_PAGE_NAMING, watchHeadingItemToPageNaming);\n yield takeEvery(ACTION_TYPES.UPDATE_PORTAL_SLUG.REQUEST, updateSlug);\n yield takeEvery(ACTION_TYPES.LAYOUT_CHANGE.REQUEST, safeWorker(watchLayoutChange));\n yield takeEvery(ACTION_TYPES.FETCH_USER_TEAMS.REQUEST, safeWorker(watchFetchUserTeams));\n yield takeEvery(ACTION_TYPES.FETCH_USER_TEAM_PERMISSIONS.REQUEST, safeWorker(watchFetchUserTeamPermissions));\n\n yield takeEvery([ACTION_TYPES.ADD_NEW_PAGE.UNDOABLE, ACTION_TYPES.UPDATE_PAGE.UNDOABLE, ACTION_TYPES.DELETE_PAGE.UNDOABLE], safeWorker(pageActions));\n yield takeEvery(ACTION_TYPES.CHANGE_PAGE_ORDER.REQUEST, safeWorker(watchPageUpdate));\n yield takeEvery(ACTION_TYPES.UPDATE_ORDER_WORKER.REQUEST, safeWorker(watchItemSorting));\n yield takeEvery(ACTION_TYPES.UPDATE_USER.REQUEST, safeWorker(watchUserSettingUpdate));\n yield takeEvery(ACTION_TYPES.CONTINUE_AS_USER.REQUEST, safeWorker(watchContinueAsUser));\n yield takeEvery(ACTION_TYPES.DUPLICATE_ITEM, safeWorker(watchItemDuplication));\n yield takeEvery(ACTION_TYPES.REPLACE_FORM_ITEM.REQUEST, safeWorker(watchReplaceFormItem));\n\n yield takeEvery(ACTION_TYPES.USER_CHANGE, safeWorker(watchUserChange));\n\n yield takeEvery(ACTION_TYPES.UPDATE_PORTAL_USER_PROPS.REQUEST, safeWorker(watchUpdatePortalUserProps));\n\n yield takeEvery(ACTION_TYPES.SET_CHECKOUT_FORM_STATUS, watchCheckoutFormStatusChanges);\n\n yield takeEvery(ACTION_TYPES.NAVIGATION_ITEM_CLICK, watchNavigationItemClick);\n\n yield takeEvery(ACTION_TYPES.ON_TODO_COMPLETE, watchSetTodoComplete);\n\n yield takeEvery(ACTION_TYPES.CREATE_PORTAL_WITH_STORE, createNewPortalWithStore);\n\n yield takeEvery(ACTION_TYPES.CREATE_PORTAL_WITH_TEMPLATE, createNewPortalWithTemplate);\n\n yield takeEvery(ACTION_TYPES.CREATE_PORTAL_WITH_DONATION, createNewPortalWithDonation);\n\n yield takeEvery(ACTION_TYPES.SET_IS_APP_DONE, watchIsAppDone);\n\n yield takeEvery(ACTION_TYPES.ON_FORM_PICKER_MODAL_CONFIRM, watchFormPickerModalConfirm);\n\n yield takeEvery(ACTION_TYPES.ON_RESOURCE_PICKER_MODAL_CONFIRM, watchResourcePickerModalConfirm);\n\n yield takeEvery(ACTION_TYPES.ON_LEFT_PANEL_ITEM_CLICK, watchLeftPanelItemClick);\n\n yield takeEvery(ACTION_TYPES.ON_ITEM_CLICK, watchItemClick);\n\n yield takeEvery(ACTION_TYPES.ON_STAGE_CLICK, watchOnStageClick);\n yield takeEvery(ACTION_TYPES.SHOW_DONATION_ITEM, watchShowDonationItem);\n yield takeEvery(ACTION_TYPES.ON_DRAG_END, watchOnDragEnd);\n yield takeEvery(ACTION_TYPES.ON_DELETE_PAGE, watchOnDeletePage);\n yield takeEvery(ACTION_TYPES.ON_MULTIPLE_ITEM_UPDATE, watchOnMultipleItemUpdate);\n\n yield takeEvery(ACTION_TYPES.OPEN_RIGHT_PANEL_WITH_MODE, watchOpenRightPanelWithMode);\n\n yield takeEvery(ACTION_TYPES.UPDATE_APP_LOGO.REQUEST, watchUpdateAppLogo);\n\n yield takeEvery(ACTION_TYPES.SET_APP_STATUS, watchAppStatus);\n\n // yield takeEvery(ACTION_TYPES.SET_APP_STATUS, watchUXRSurveyModal);\n\n yield takeEvery(ACTION_TYPES.FETCH_PORTAL.SUCCESS, watchFetchPortalSuccess);\n\n yield takeEvery(ACTION_TYPES.DONATE, watchDonations);\n\n yield takeEvery(ACTION_TYPES.SHOW_WHATS_NEW_MODAL, watchShowWhatsNewModal);\n yield takeEvery(ACTION_TYPES.START_SHOW_WHATS_NEW_MODAL_FLOW, whatsNewModalFlow);\n yield takeEvery(ACTION_TYPES.FETCH_STORE_PROPERTIES.REQUEST, watchFetchStorePropertiesRequest);\n yield takeEvery(ACTION_TYPES.FETCH_STORE_PROPERTIES.SUCCESS, watchFetchStorePropertiesSuccess);\n yield takeLatest(ACTION_TYPES.INIT_ELEMENTS_PANEL_AB_TEST, initAppElementPanelAbTest);\n yield takeEvery(ACTION_TYPES.SEND_PUSH_NOTIFICATION.REQUEST, watchSendPushNotification);\n yield takeEvery(ACTION_TYPES.SEND_PUSH_NOTIFICATION.ERROR, watchSendPushNotificationError);\n yield takeEvery(ACTION_TYPES.FETCH_NOTIFICATON_HISTORY.REQUEST, watchFetchNotificationHistory);\n yield takeEvery(ACTION_TYPES.FETCH_NOTIFICATION_STATS.REQUEST, watchFetchNotificationStats);\n\n yield spawn(productListActions);\n yield spawn(searchInProductsActions);\n yield spawn(navigationActions);\n\n yield spawn(fetchUserSlugFlow);\n yield spawn(fetchWidgetsFlow);\n yield spawn(templateCategoriesFlow);\n yield spawn(svgIconsFlow);\n yield spawn(appStatusChecker);\n yield spawn(fetchUserFlow);\n yield spawn(fetchPortalFlow);\n yield spawn(fetchEnvironmentFlow); // TODO why? Ask Berkay\n yield spawn(trackEvents);\n yield spawn(shareFlow);\n yield spawn(watchAPIRequests);\n yield spawn(watchUIPanelsChanges);\n yield spawn(keepClosedUIPanels);\n yield spawn(watchModals);\n yield spawn(watchUndoableActions);\n yield spawn(watchUndoRedoActions);\n yield spawn(watchToastActions);\n yield spawn(watchAppToast);\n yield spawn(watchNetworkStatus);\n yield spawn(watchStylingActions);\n yield spawn(fetchCDNConfigFlow);\n yield spawn(fetchUserApps);\n yield spawn(eventsFlow);\n if (getTeamID()) {\n yield spawn(fetchTeamFlow);\n yield spawn(collaborationFlow);\n }\n yield spawn(activateFullStoryOnTheFly);\n yield spawn(productList); // it is new\n yield spawn(checkoutFormFlow);\n yield spawn(uxrExitIntentSurveyFlow);\n yield spawn(dataSourceFlow);\n yield spawn(popStateListener);\n yield spawn(userManagement);\n}\n","import {\n combineReducers, createStore, compose, applyMiddleware\n} from 'redux';\nimport createSagaMiddleware from 'redux-saga';\nimport UIReducer from './reducers/ui';\nimport userReducer from './reducers/user';\nimport portalReducer from './reducers/portal';\nimport formsReducer from './reducers/forms';\nimport signsReducer from './reducers/signs';\nimport shareReducer from './reducers/share';\nimport appsReducer from './reducers/apps';\nimport undoRedo from './reducers/undoRedo';\nimport progress from './reducers/progress';\nimport widgetsReducer from './reducers/widgets';\nimport productsReducer from './reducers/products';\nimport CDNConfigReducer from './reducers/cdnconfig';\nimport teamReducer from './reducers/team';\nimport checkoutFormReducer from './reducers/checkoutForm';\nimport pushNotificationReducer from './reducers/pushNotification';\nimport livePreviewReducer from './reducers/livePreview';\nimport AssistantReducer from './reducers/assistant';\nimport dataSourceReducer from './reducers/dataSource';\nimport UserManagementReducer from './reducers/userManagement';\n\nimport { rootSagaFlow } from './saga';\n\nconst rootReducer = combineReducers({\n ui: UIReducer,\n user: userReducer,\n forms: formsReducer,\n signs: signsReducer,\n portal: portalReducer,\n share: shareReducer,\n apps: appsReducer,\n widgets: widgetsReducer,\n cdnConfig: CDNConfigReducer,\n undoRedo,\n progress,\n products: productsReducer,\n team: teamReducer,\n checkoutForm: checkoutFormReducer,\n pushNotification: pushNotificationReducer,\n livePreview: livePreviewReducer,\n assistant: AssistantReducer,\n dataSource: dataSourceReducer,\n userManagement: UserManagementReducer\n});\n\nconst sagaMiddleware = createSagaMiddleware();\n\nconst middlewares = applyMiddleware(\n sagaMiddleware\n);\n\nconst composeEnhancers = (typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__) || compose;\nconst store = createStore(rootReducer, composeEnhancers(middlewares));\n\nsagaMiddleware.run(rootSagaFlow);\nexport default store;\n","import React from 'react';\nimport { Provider } from 'react-redux';\nimport store from './store';\n\nconst withStore = AppComponent => {\n return () => (\n \n \n \n );\n};\n\nexport default withStore;\n","import React, { useCallback } from 'react';\nimport { func, string, boolean } from 'prop-types';\nimport Styled from 'styled-components';\nimport { t } from '@jotforminc/translation';\nimport { ConfirmationModal } from '@jotforminc/modals';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { IconExclamationTriangleFilled } from '@jotforminc/svg-icons';\nimport * as ACTION_CREATORS from '../../../../../store/actionCreators';\nimport SELECTORS from '../../../../../store/selectors';\n\nconst ScCommonConfirmationModal = Styled.div`\n svg { width: 73px }\n\n .taste.isRed {\n background: #FF4948;\n\n &:hover {\n background: #F12E2D;\n }\n }\n\n .taste.isGhost {\n background-color: #FAFAFC;\n\n &:hover {\n background-color: #fff;\n color: #9EA7CE;\n border-color: #9EA7CE;\n }\n }\n\n .dontshow {\n background-color: #EDF8FF;\n margin: 20px 0 0;\n }\n\n .dontshow-input:checked + .dontshow-checkbox:before {\n background-color: #0099FF;\n border-color: #0099FF;\n }\n\n .dontshow-checkbox {\n cursor: pointer;\n }\n\n .dontshow-text {\n cursor: pointer;\n }\n`;\n\nconst DeletePageModal = ({\n onClose, pageID, type, forceDeleteItems, ...rest\n}) => {\n const dispatch = useDispatch();\n\n const selectedPageID = useSelector(SELECTORS.getSelectedPage) || pageID;\n\n const handleConfirm = useCallback(({ dontShowAgain: deleteItems = false }) => {\n dispatch(ACTION_CREATORS.deletePageAction(selectedPageID, forceDeleteItems ? true : deleteItems, type));\n onClose();\n }, [forceDeleteItems]);\n\n return (\n \n }\n backText={t('CANCEL')}\n confirmText={t('DELETE PAGE')}\n title={t('Are you sure you want to delete this page?')}\n subtitle={t('Are you sure you want to proceed?')}\n description={t('You can undo this action by pressing Command + Z.')}\n dontShowAgainText={t('Delete all elements on this page.')}\n showDontShowAgain={!forceDeleteItems}\n onConfirm={handleConfirm}\n onBack={onClose}\n onClose={onClose}\n {...rest}\n />\n \n );\n};\n\nDeletePageModal.defaultProps = {\n pageID: '',\n type: '',\n forceDeleteItems: false\n};\n\nDeletePageModal.propTypes = {\n onClose: func.isRequired,\n type: string,\n pageID: string,\n forceDeleteItems: boolean\n};\n\nexport default DeletePageModal;\n","import { t } from '@jotforminc/translation';\nimport { func } from 'prop-types';\nimport React, { useCallback } from 'react';\nimport {\n Button,\n Dialog,\n DialogBody,\n DialogIcon,\n DialogTitle,\n DialogDescription,\n DialogActions\n} from '@jotforminc/magnet';\nimport { useDispatch } from 'react-redux';\nimport { IconArrowRotateRight } from '@jotforminc/svg-icons';\nimport * as ACTION_CREATORS from '../../store/actionCreators';\n\nconst RestartAppModal = ({ onClose }) => {\n const dispatch = useDispatch();\n\n const handleRestartProgress = useCallback(() => {\n dispatch(ACTION_CREATORS.restartProgressAction());\n onClose();\n }, []);\n\n return (\n \n \n \n {t('Restart progress')}\n \n

    {t('Are you sure you want to restart your progress?')}

    \n

    {t('All required steps will be restored, and')}

    \n

    {t('your submissions won’t be deleted.')}

    \n
    \n
    \n \n \n {t('Cancel')}\n \n \n {t('Yes, Restart')}\n \n \n \n );\n};\n\nRestartAppModal.propTypes = {\n onClose: func.isRequired\n};\n\nexport default RestartAppModal;\n","import { objectEntries } from './data';\n\nexport const autoTranslateSingleValue = value => {\n if (typeof value.locale === 'function') {\n return value.locale();\n }\n return value;\n};\n\nexport const autoTranslate = translationObject => {\n const translatedObject = {};\n\n objectEntries(translationObject).forEach(item => {\n const [key, value] = item;\n translatedObject[key] = autoTranslateSingleValue(value);\n });\n return translatedObject;\n};\n","import { autoTranslate } from '@jotforminc/utils';\n\nexport default autoTranslate({\n CLOSE: 'Close',\n BACK: 'Back',\n BETA: 'BETA',\n NEW: 'NEW',\n USE_TEMPLATE: 'Use Template',\n PREVIEW_FORM: 'Preview Form',\n PLEASE_WAIT: 'Please wait...',\n CHOOSE_FROM_TEMPLATES: 'Choose a template',\n CHOOSE_FROM_TEMPLATES_SUBTITLE: 'Explore {formTemplatesCount}+ ready-made templates to create a form in minutes',\n SELECT_YOUR_FORM: 'Select a Form',\n SELECT_YOUR_FORM_SUBTITLE: 'Select the form you want to use.'\n});\n","import React from 'react';\nimport {\n oneOfType, arrayOf, func, string, node\n} from 'prop-types';\nimport { classNames } from '@jotforminc/utils';\n\nexport default class Button extends React.Component {\n render() {\n const { children, className, ...props } = this.props;\n return (\n \n {children}\n \n );\n }\n}\n\nButton.propTypes = {\n onClick: func,\n className: string,\n children: oneOfType([\n arrayOf(node),\n node\n ])\n};\n\nButton.defaultProps = {\n onClick: f => f,\n className: null,\n children: null\n};\n","import React from 'react';\nimport { string } from 'prop-types';\nimport { classNames } from '@jotforminc/utils';\n\nimport { IconXmark } from '@jotforminc/svg-icons';\nimport texts from '../../core/texts';\nimport Button from '.';\n\nexport default class CloseButton extends React.Component {\n render() {\n const {\n className, label, ...props\n } = this.props;\n return (\n \n \n \n );\n }\n}\n\nCloseButton.propTypes = {\n className: string,\n label: string\n};\n\nCloseButton.defaultProps = {\n className: null,\n label: texts.CLOSE\n};\n","export const stateClass = (action, className) => {\n return global.document.body.classList[action](className);\n};\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","import React from 'react';\nimport {\n boolean, string, oneOfType, arrayOf, shape, node\n} from 'prop-types';\n\nconst WizardWrapper = ({\n children, withContainer, wrapperRestProps, className\n}) => {\n return withContainer ? (\n \n {children}\n
    \n ) : children;\n};\n\nWizardWrapper.propTypes = {\n withContainer: boolean,\n className: string,\n children: oneOfType([\n arrayOf(node),\n node\n ]),\n wrapperRestProps: shape({})\n};\n\nWizardWrapper.defaultProps = {\n withContainer: true,\n className: '',\n children: null,\n wrapperRestProps: {}\n};\n\nexport default WizardWrapper;\n","import React from 'react';\nimport { createPortal } from 'react-dom';\nimport {\n node, bool, string, func,\n shape, objectOf, arrayOf, elementType\n} from 'prop-types';\nimport { classNames } from '@jotforminc/utils';\n\nimport CloseButton from '../Button/CloseButton';\n\nimport { stateClass } from '../../core/utils';\n\nimport '../../styles/jfWizard.scss';\nimport WizardWrapper from './WizardWrapper';\n\nclass WizardNavigation extends React.Component {\n constructor(props) {\n super(props);\n\n this.setView = this.setView.bind(this);\n this.toggleVisibility = this.toggleVisibility.bind(this);\n this.setVisibilityState = this.setVisibilityState.bind(this);\n this.getClassNames = this.getClassNames.bind(this);\n this.getModalState = this.getModalState.bind(this);\n this.setCloseButtonVisibilityState = this.setCloseButtonVisibilityState.bind(this);\n\n this.state = {\n isVisible: null,\n CurrentView: props.DefaultView,\n setViewProps: this.getViewProps(props),\n isCloseButtonVisible: props.closeable\n };\n\n stateClass('add', 'jfWizard--isReady');\n }\n\n componentDidMount() {\n const {\n DefaultView,\n targetElement,\n initialView,\n initialVisibilityState,\n wizardRef\n } = this.props;\n\n this.setView(DefaultView);\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 (wizardRef) {\n wizardRef.current = {\n show: () => this.setVisibilityState(true),\n hide: () => this.setVisibilityState(false),\n setView: this.setView\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 /**\n * Set close button to visible or invisible.\n */\n setCloseButtonVisibilityState(isCloseButtonVisible) {\n this.setState({ isCloseButtonVisible });\n }\n\n getViewProps = props => {\n return {\n skip: props.skip,\n formId: props.formId,\n forms: props.forms,\n onSave: props.onSave,\n fetchFormQuestions: props.fetchFormQuestions,\n isReportEdit: props?.isReportEdit,\n reportType: props?.reportType,\n reportName: props?.reportName,\n reportPassword: props?.reportPassword,\n fields: props?.fields,\n isProtected: props?.isProtected,\n reportSettings: props?.reportSettings,\n reportID: props?.reportID,\n teamID: props?.teamID\n };\n };\n\n setView(newView, newProps = {}, resetState = false) {\n const { Navigation, hideOnEscapeKeyPress, onViewChange } = this.props;\n const { setViewProps: oldProps, CurrentView } = this.state;\n onViewChange(newView === 'Main');\n const viewProps = resetState ? this.getViewProps(this.props) : oldProps;\n\n const setViewProps = { ...viewProps, ...newProps };\n\n if (hideOnEscapeKeyPress && newProps && newProps.closeWizard) {\n this.toggleVisibility();\n return;\n }\n\n if (Navigation[newView]) {\n if (CurrentView !== newView) {\n window.scrollTo(0, 0);\n }\n\n this.setState({ CurrentView: newView, setViewProps });\n }\n }\n\n setVisibilityState(isVisible) {\n const { onShow, onHide } = this.props;\n this.setState({ isVisible });\n\n if (isVisible) {\n onShow();\n } else {\n this.setView('Main');\n onHide();\n }\n\n stateClass(isVisible ? 'add' : 'remove', 'jfWizard--isVisible');\n stateClass(isVisible ? 'add' : 'remove', 'jfWizard--isModalView');\n\n if (!isVisible) {\n this.setState({ setViewProps: { isModal: false } });\n }\n }\n\n toggleVisibility() { // eslint-disable-line\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 getClassNames() {\n const { wrapperProps: { className } } = this.props;\n const { setViewProps: { className: viewClassName } } = this.state;\n\n return classNames(className, viewClassName);\n }\n\n getModalState() {\n const { isModal } = this.props;\n const { setViewProps: { isModal: viewIsModal } } = this.state;\n\n stateClass(viewIsModal ? 'add' : 'remove', 'jfWizard--isModalView');\n\n return viewIsModal || isModal;\n }\n\n renderClsoeButton() {\n const { isCloseButtonVisible } = this.state;\n\n return isCloseButtonVisible && (\n
    \n \n
    \n );\n }\n\n renderTarget() {\n const { targetContainer } = this.props;\n\n if (typeof targetContainer === 'string') {\n return document.querySelector(targetContainer);\n }\n\n return targetContainer;\n }\n\n renderContent() {\n const {\n Navigation, isReportEdit, reportType, forms, digest, user, digestProps, teamID\n } = this.props;\n const { CurrentView, setViewProps } = this.state;\n if (isReportEdit && reportType && CurrentView === 'Main') {\n if (reportType === 'digest') {\n this.setView('DigestEmailBuilder', {\n forms,\n user,\n digest,\n digestProps,\n setView: this.setView,\n teamID\n });\n return;\n }\n this.setView('ReportConfiguration');\n }\n const CurrentViewComponent = Navigation[CurrentView];\n const isMobileApp = global.navigator.userAgent.indexOf('JotForm Mobile') > -1 || global.navigator.userAgent.indexOf('JFCEMobile') > -1;\n const {\n wrapperProps: { className, ...wrapperRestProps },\n isModal,\n usePortal,\n ...props\n } = this.props;\n\n const { isVisible } = this.state;\n\n if (!isVisible) return null;\n\n return (\n \n \n {!isMobileApp && this.renderClsoeButton()}\n \n );\n }\n\n render() {\n const { usePortal } = this.props;\n\n return usePortal ? createPortal(this.renderContent(), this.renderTarget()) : this.renderContent();\n }\n}\n\nWizardNavigation.propTypes = {\n targetElement: node,\n targetContainer: node,\n wrapperProps: shape({}),\n setViewWrapperProps: shape({}),\n isModal: bool,\n closeable: bool,\n initialVisibilityState: bool,\n initialView: string,\n hideOnEscapeKeyPress: bool,\n onShow: func,\n onHide: func,\n forms: arrayOf(shape()),\n usePortal: bool,\n wizardRef: shape(),\n DefaultView: string.isRequired,\n Navigation: objectOf(elementType).isRequired,\n isReportEdit: bool,\n reportType: string,\n digest: shape({}),\n digestProps: shape({}),\n user: shape({}),\n teamID: string,\n onViewChange: func\n};\n\nconst getInitialView = () => {\n try {\n const { location: { search = '', pathname = '' } } = global;\n\n const urlParams = new URLSearchParams(search);\n let wizardInitialView = urlParams.get('wizardInitialView');\n\n if (wizardInitialView === 'UseTemplate' && pathname.includes('/mytables')) {\n wizardInitialView = 'SheetTemplates';\n }\n return wizardInitialView;\n } catch {\n return null;\n }\n};\n\nWizardNavigation.defaultProps = {\n targetElement: null,\n targetContainer: null,\n wrapperProps: {},\n setViewWrapperProps: {},\n isModal: false,\n closeable: true,\n initialVisibilityState: false,\n initialView: getInitialView(),\n hideOnEscapeKeyPress: true,\n onShow: f => f,\n onHide: f => f,\n forms: [],\n usePortal: false,\n wizardRef: null,\n isReportEdit: false,\n reportType: null,\n digest: {},\n user: {},\n digestProps: {},\n teamID: '',\n onViewChange: f => f\n};\n\nexport default WizardNavigation;\n","import React from 'react';\nimport { string } from 'prop-types';\nimport { t } from '@jotforminc/translation';\nimport { classNames } from '@jotforminc/utils';\n\nimport { IconArrowLeft } from '@jotforminc/svg-icons';\nimport texts from '../../core/texts';\nimport Button from '.';\n\nexport default class BackButton extends React.Component {\n render() {\n const {\n className, label, ...props\n } = this.props;\n return (\n \n \n {t('back')}\n \n );\n }\n}\n\nBackButton.propTypes = {\n className: string,\n label: string\n};\n\nBackButton.defaultProps = {\n className: null,\n label: texts.BACK\n};\n","import React from 'react';\nimport {\n func,\n bool,\n string,\n oneOfType,\n node,\n arrayOf,\n object\n} from 'prop-types';\nimport keyboardJS from 'keyboardjs';\n\nimport BackButton from '../Button/BackButton';\n\nexport default class Header extends React.Component {\n constructor(props) {\n super(props);\n this.titleRef = React.createRef();\n this.backButtonClick = this.backButtonClick.bind(this);\n this.handleEscapePressed = this.handleEscapePressed.bind(this);\n }\n\n componentDidMount() {\n keyboardJS.bind('esc', this.handleEscapePressed);\n this.titleRef.current?.focus();\n }\n\n componentWillUnmount() {\n keyboardJS.unbind('esc', this.handleEscapePressed);\n }\n\n handleEscapePressed(e) {\n const { backButtonVisible, isModalVisible, onModalClose } = this.props;\n e.preventDefault();\n e.stopImmediatePropagation();\n if (isModalVisible && onModalClose) {\n onModalClose();\n return false;\n }\n if (backButtonVisible) {\n this.backButtonClick();\n return false;\n }\n const { setView } = this.props;\n setView('Main', { closeWizard: true });\n }\n\n handleFillVariable(subTitle) {\n if (typeof subTitle !== 'string' || subTitle.length === 0) return subTitle;\n let filledSubTitle = subTitle;\n const variables = {\n TABLE_TEMPLATES_COUNT: 300,\n APP_TEMPLATES_COUNT: 600,\n appTemplatesCount: 600\n };\n Object.keys(variables).forEach(variableKey => {\n filledSubTitle = filledSubTitle.replace(`{${variableKey}}`, variables[variableKey]);\n });\n return filledSubTitle;\n }\n\n get htmlAttributes() {\n const uikitModalContainer = document?.querySelector?.(\"[data-uikit-modal-container='true']\");\n const ariaLabelledBy = uikitModalContainer?.getAttribute('aria-labelledby');\n const ariaDescribedBy = uikitModalContainer?.getAttribute('aria-describedby');\n\n return { ariaLabelledBy, ariaDescribedBy };\n }\n\n get title() {\n const { ariaLabelledBy } = this.htmlAttributes;\n const { title, noDecodeURI } = this.props;\n return title && (\n \n {noDecodeURI ? title : decodeURI(title)}\n \n );\n }\n\n get subTitle() {\n const { ariaDescribedBy } = this.htmlAttributes;\n const { subTitle, noDecodeURI, extraSubTitleClasses } = this.props;\n const filledSubtitle = this.handleFillVariable(subTitle);\n return subTitle && (\n \n {noDecodeURI ? filledSubtitle : decodeURI(filledSubtitle)}\n \n );\n }\n\n get backButton() {\n const { backButtonVisible } = this.props;\n return backButtonVisible &&
    ;\n }\n\n backButtonClick() {\n const {\n onBackButtonClick, setView, actionLogger, backToMixModalActionLogger\n } = this.props;\n\n if (global.user && actionLogger) {\n actionLogger?.({ actor: global.user.username, action: 'wizardBackClick', target: '.forBack' });\n }\n\n if (onBackButtonClick) {\n backToMixModalActionLogger?.();\n return onBackButtonClick();\n }\n\n setView('Main');\n }\n\n render() {\n const { customStyles } = this.props;\n return (\n
    \n {this.backButton}\n {this.title}\n {this.subTitle}\n
    \n );\n }\n}\n\nHeader.propTypes = {\n setView: func,\n actionLogger: func,\n onBackButtonClick: func,\n backButtonVisible: bool,\n isModalVisible: bool,\n onModalClose: func,\n noDecodeURI: bool,\n title: oneOfType([string, node]),\n extraSubTitleClasses: arrayOf(string),\n subTitle: oneOfType([string, node]),\n customStyles: object,\n backToMixModalActionLogger: func\n};\n\nHeader.defaultProps = {\n setView: f => f,\n actionLogger: f => f,\n onBackButtonClick: null,\n backButtonVisible: false,\n isModalVisible: false,\n onModalClose: null,\n noDecodeURI: false,\n title: null,\n subTitle: null,\n extraSubTitleClasses: [],\n customStyles: {},\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 WizardBody extends React.Component {\n render() {\n const { className, children, ...props } = this.props;\n\n return (\n
    \n {children}\n
    \n );\n }\n}\n\nWizardBody.propTypes = {\n children: oneOfType([\n arrayOf(node),\n node\n ]),\n className: string\n};\n\nWizardBody.defaultProps = {\n children: null,\n className: ''\n};\n","import React from 'react';\nimport {\n oneOfType, arrayOf, node, string, bool\n} from 'prop-types';\nimport { classNames } from '@jotforminc/utils';\n\nexport default class WizardItem extends React.Component {\n render() {\n const {\n children,\n className,\n noGutter,\n noMaxWidth,\n ...props\n } = this.props;\n\n return (\n
    \n {children}\n
    \n );\n }\n}\n\nWizardItem.propTypes = {\n children: oneOfType([\n arrayOf(node),\n node\n ]),\n className: string,\n noGutter: bool,\n noMaxWidth: bool\n};\n\nWizardItem.defaultProps = {\n children: null,\n className: '',\n noGutter: false,\n noMaxWidth: false\n};\n","/* eslint-disable max-len */\nexport const placeholderImage = 'https://cdn.jotfor.ms/assets/img/templates/placeholder-form.svg';\nexport const placeholderPdfImage = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASwAAADPAQMAAAB1FH6uAAAAA1BMVEUAAACnej3aAAAAAXRSTlMAQObYZgAAAB5JREFUWMPtwTEBAAAAwiD7p7bETmAAAAAAAAAAQOcfiQABx6hqKQAAAABJRU5ErkJggg==';\nexport const placeholderPageImage = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA8gAAAJxAQMAAACkLglIAAAAA1BMVEUAAACnej3aAAAAAXRSTlMAQObYZgAAAG1JREFUeNrswYEAAAAAgKD9qRepAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADg9uCQAAAAAEDQ/9feMAAAAAAAAAAAAAAAAAAAADASKekAAXrKGqUAAAAASUVORK5CYII=';\nexport const placeholderApprovalBG = 'https://cdn.jotfor.ms/assets/img/templates/placeholder-approval.svg';\nexport const placeholderApprovalImage = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAZAAAAECAQMAAADq3xPHAAAAA1BMVEUAAACnej3aAAAAAXRSTlMAQObYZgAAACJJREFUaN7twQEBAAAAgqD+r26IwAAAAAAAAAAAAAAAACDvM2YAAT++t4sAAAAASUVORK5CYII=';\nexport const placeholderTableImage = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAATQAAADJAQMAAACXNFyvAAAAA1BMVEUAAACnej3aAAAAAXRSTlMAQObYZgAAAB5JREFUWMPtwYEAAAAAw6D7U19hANUAAAAAAAAAgOwfaAABUTPfMQAAAABJRU5ErkJggg==';\nexport const placeholderAgentImage = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAATYAAADXAQMAAACqHe95AAAAA1BMVEUAAACnej3aAAAAAXRSTlMAQObYZgAAAB9JREFUaN7twTEBAAAAwiD7pzbFPmAAAAAAAAAAACQOIZgAAZFj4y4AAAAASUVORK5CYII=';\n","export const getDeviceType = () => {\n const ua = global.navigator.userAgent;\n if (/(tablet|ipad|playbook|silk)|(android(?!.*mobi))/i.test(ua)) {\n return 'tablet';\n } if (/Mobile|Android|iP(hone|od)|IEMobile|BlackBerry|Kindle|Silk-Accelerated|(hpw|web)OS|Opera M(obi|ini)/.test(ua)) {\n return 'mobile';\n }\n return 'desktop';\n};\n","const getScrollableHeightOfElement = (element, withoutLimit) => {\n const maxScrollableDistance = 10000;\n const wrapperEl = element.parentElement;\n let distance = element.clientHeight - wrapperEl.clientHeight;\n distance = !withoutLimit && distance >= maxScrollableDistance ? maxScrollableDistance : distance;\n return -distance;\n};\n\nexport const getTopValue = screenshotRef => {\n const screenshotElement = screenshotRef.current;\n if (screenshotElement === null || !screenshotElement) return;\n const { clientHeight } = screenshotElement;\n if (clientHeight <= 0) return;\n return getScrollableHeightOfElement(screenshotElement);\n};\n","import { placeholderImage } from './constantImages';\n\nexport const onImageError = (e, image) => {\n const { target } = e;\n target.onerror = null;\n target.src = (image || placeholderImage);\n};\n","import React from 'react';\nimport { string } from 'prop-types';\nimport { t } from '@jotforminc/translation';\nimport { IconEyeFilled } from '@jotforminc/svg-icons';\n\nconst PreviewHint = ({ ctaText }) => {\n return (\n \n \n {t(ctaText)}\n \n );\n};\n\nexport default PreviewHint;\n\nPreviewHint.defaultProps = {\n ctaText: 'Preview'\n};\nPreviewHint.propTypes = {\n ctaText: string\n};\n","/* eslint-disable max-len */\nimport React, { useRef } from 'react';\nimport { object, func, bool } from 'prop-types';\nimport { t } from '@jotforminc/translation';\nimport { getCurrentTime } from '@jotforminc/utils';\n\nimport { placeholderImage } from '../../constantImages';\nimport { getDeviceType } from '../../getDeviceType';\nimport { getTopValue } from './utils';\nimport { onImageError } from '../../onImageError';\nimport PreviewHint from './PreviewHint';\n\nconst defaultColor = 'rgba(255, 113, 26, 1)';\nconst defaultWhite = 'rgba(255,255,255,1)';\nconst defaultDark = 'rgba(0,0,0,1)';\n\nconst AppTemplateItem = ({\n template, imageLoaded, handlePreviewTemplate, setImageLoaded, templateCloneWrapper\n}) => {\n const notchHeight = 28;\n let animationTimeoutReferance;\n const screenshotRef = useRef();\n const slug = template._slug || template.slug;\n const title = template._title || template.title;\n const isSkeleton = title === 'skeleton';\n\n const screenshotURL = slug ? `https://cdn.jotfor.ms/templates/screenshot/app-templates/${slug}?f=png&w=1044` : placeholderImage;\n\n const getSplittedRGB = rgbString => rgbString.replace('rgba(', '').replace(')', '').split(',');\n\n const getLuminance = hexColor => {\n const [r, g, b] = getSplittedRGB(hexColor);\n\n const uicolors = [r / 255, g / 255, b / 255];\n const c = uicolors.map(col => (col <= 0.03928 ? col / 12.92 : ((col + 0.055) / 1.055) ** 2.4));\n return (0.2126 * c[0]) + (0.7152 * c[1]) + (0.0722 * c[2]);\n };\n\n const getBorderColor = (bgColor = defaultColor, lightColor = defaultWhite, darkColor = defaultDark) => {\n const L = getLuminance(bgColor);\n const L1 = getLuminance(lightColor);\n const L2 = getLuminance(darkColor);\n\n return (L > Math.sqrt((L1 + 0.05) * (L2 + 0.05)) - 0.05) ? darkColor : lightColor;\n };\n\n let notchColor;\n let splashBgColor = 'rgba(243, 243, 254, 1)';\n let splashFontColor = 'rgba(243, 243, 254, 1)';\n if (template.JSON) {\n const screenshotBGColor = JSON.parse(template.JSON)?.screenshotBGColor || defaultColor;\n splashBgColor = JSON.parse(template.JSON)?.splashBgColor || defaultColor;\n splashFontColor = JSON.parse(template.JSON)?.splashFontColor || defaultColor;\n notchColor = getBorderColor(screenshotBGColor);\n }\n\n const updateScreenshotPosition = position => {\n if (!imageLoaded || getDeviceType() !== 'desktop') return;\n const screenshotElement = screenshotRef.current;\n if (screenshotElement === null || !screenshotElement) return;\n screenshotElement.style.top = `${position - notchHeight}px`;\n };\n\n const handleMouseEnterAnimation = () => {\n updateScreenshotPosition(getTopValue(screenshotRef));\n animationTimeoutReferance = setTimeout(() => updateScreenshotPosition(0), 2000);\n };\n\n const handleMouseLeave = () => {\n if (animationTimeoutReferance === undefined) return;\n clearTimeout(animationTimeoutReferance);\n updateScreenshotPosition(0);\n };\n\n const isWhite = notchColor === defaultWhite;\n const phoneNotchClass = isWhite ? 'white' : 'black';\n\n const previewTemplateWrapper = action => {\n handlePreviewTemplate(action, {\n ...template,\n splashBgColor,\n phoneNotchClass\n });\n };\n\n return (\n
    \n previewTemplateWrapper('viewTemplateFromImg')}\n >\n \n setImageLoaded(true)}\n src={!isSkeleton ? screenshotURL : placeholderImage}\n />\n
    \n
    \n {getCurrentTime()}\n
    \n
    \n \n
    \n
    \n \n \n \n \n \n \n \n \n
    \n
    \n

    previewTemplateWrapper('viewTemplateFromTitle')}>\n {title}\n

    \n \n \n { t('Use Template') }\n \n \n handlePreviewTemplate('viewTemplateFromPreviewCta')}\n >\n {t('Preview')}\n \n
    \n );\n};\n\nexport default AppTemplateItem;\nAppTemplateItem.defaultProps = {\n templateCloneWrapper: f => f\n};\nAppTemplateItem.propTypes = {\n templateCloneWrapper: func,\n template: object.isRequired,\n imageLoaded: bool.isRequired,\n setImageLoaded: func.isRequired,\n handlePreviewTemplate: func.isRequired\n};\n","import React, { useRef } from 'react';\nimport { object, func, bool } from 'prop-types';\nimport { t } from '@jotforminc/translation';\n\nimport { getTopValue } from './utils';\nimport { placeholderPdfImage } from '../../constantImages';\nimport { getDeviceType } from '../../getDeviceType';\nimport { onImageError } from '../../onImageError';\nimport PreviewHint from './PreviewHint';\n\nconst PdfTemplateItem = ({\n template, imageLoaded, handlePreviewTemplate, setImageLoaded, templateCloneWrapper\n}) => {\n let animationTimeoutReferance;\n const screenshotRef = useRef();\n const { screenshot } = template;\n const title = template._title || template.title;\n const isSkeleton = title === 'skeleton';\n\n const updateScreenshotPosition = position => {\n if (!imageLoaded || getDeviceType() !== 'desktop') return;\n const screenshotElement = screenshotRef.current;\n if (screenshotElement === null || !screenshotElement) return;\n screenshotElement.style.top = `${position}px`;\n };\n\n const handleMouseEnterAnimation = () => {\n updateScreenshotPosition(getTopValue(screenshotRef));\n animationTimeoutReferance = setTimeout(() => updateScreenshotPosition(0), 2000);\n };\n\n const handleMouseLeave = () => {\n if (animationTimeoutReferance === undefined) return;\n clearTimeout(animationTimeoutReferance);\n updateScreenshotPosition(0);\n };\n\n const previewTemplateWrapper = action => {\n handlePreviewTemplate(action, { ...template });\n };\n\n return (\n
    \n previewTemplateWrapper('viewTemplateFromImg')}\n >\n \n
    \n \n setImageLoaded(true)}\n src={!isSkeleton ? screenshot : placeholderPdfImage}\n />\n
    \n

    previewTemplateWrapper('viewTemplateFromTitle')}>\n {title}\n

    \n templateCloneWrapper(event)}\n >\n {t('Use Template')}\n \n
    \n );\n};\n\nexport default PdfTemplateItem;\nPdfTemplateItem.defaultProps = {\n};\nPdfTemplateItem.propTypes = {\n template: object.isRequired,\n imageLoaded: bool.isRequired,\n setImageLoaded: func.isRequired,\n templateCloneWrapper: func.isRequired,\n handlePreviewTemplate: func.isRequired\n};\n","/* eslint-disable complexity */\n/* eslint-disable jsx-a11y/no-noninteractive-element-interactions */\n/* eslint-disable @jotforminc/no-native-button */\n/* eslint-disable max-len */\nimport React, { useRef, useState } from 'react';\nimport {\n object, func, bool, string\n} from 'prop-types';\nimport cx from 'classnames';\nimport { t } from '@jotforminc/translation';\nimport { IconEyeFilled } from '@jotforminc/svg-icons';\nimport { classNames } from '@jotforminc/utils';\n\nimport { getDeviceType } from '../../getDeviceType';\nimport { getTopValue } from './utils';\nimport { placeholderImage } from '../../constantImages';\n\nconst FormTemplateItem = ({\n template, imageLoaded, handlePreviewTemplate,\n setImageLoaded, templateCloneWrapper, theme, context, useSlider, customCloneText\n}) => {\n const screenshotRef = useRef();\n const [loadImageErr, setLoadImageErr] = useState(false);\n const [screenshotScrolled, setScreenshotScrolled] = useState(false);\n const [isPlaceholder, setIsPlaceholder] = useState(false);\n const { _title, screenshot, _previewImageUrl } = template;\n const [screenshotPosition, setScreenshotPosition] = useState(0);\n const isSkeleton = _title === 'skeleton';\n\n const updateScreenshotPosition = position => {\n if (!imageLoaded || getDeviceType() !== 'desktop') return;\n const screenshotElement = screenshotRef.current;\n if (screenshotElement === null || !screenshotElement) return;\n setScreenshotPosition(position);\n setScreenshotScrolled(true);\n };\n\n const handleMouseEnterAnimation = () => {\n if (isPlaceholder) return;\n updateScreenshotPosition(getTopValue(screenshotRef) - 24);\n // animationTimeoutReferance = setTimeout(() => updateScreenshotPosition(0), 2000);\n };\n\n return (\n \n
    \n {\n setScreenshotPosition(0);\n setScreenshotScrolled(false);\n }}\n onMouseEnter={handleMouseEnterAnimation}\n >\n
    \n handlePreviewTemplate('viewTemplateFromImg')}\n className=\"template-item-imgur cursor-pointer block h-full bg-navy-50 color-white\"\n >\n \n \n {theme === 'card' && (\n
    \n )}\n\n \n setLoadImageErr(true)}\n onLoad={({ target: { src: screenshotSrc } }) => {\n const isScreenshotImageLoaded = screenshotSrc === placeholderImage;\n setIsPlaceholder(screenshotSrc && isScreenshotImageLoaded);\n setImageLoaded(!isScreenshotImageLoaded);\n }}\n />\n
    \n {theme === 'classic' && (\n <>\n \n \n \n )}\n
    \n \n \n \n {t('Preview')}\n \n
    \n {theme === 'classic' && (\n \n )}\n
    \n
    \n \n
    \n handlePreviewTemplate('viewTemplateFromTitle')}\n onKeyDown={() => handlePreviewTemplate('viewTemplateFromTitle')}\n >\n {!isSkeleton && _title}\n \n
    \n
    \n \n \n { t(customCloneText || 'Use Template') }\n \n \n handlePreviewTemplate('viewTemplateFromPreviewCta')}\n >\n {t('Preview')}\n \n
    \n \n \n );\n};\n\nexport default FormTemplateItem;\nFormTemplateItem.defaultProps = {\n context: '',\n useSlider: false,\n customCloneText: ''\n};\nFormTemplateItem.propTypes = {\n template: object.isRequired,\n imageLoaded: bool.isRequired,\n setImageLoaded: func.isRequired,\n templateCloneWrapper: func.isRequired,\n handlePreviewTemplate: func.isRequired,\n theme: string.isRequired,\n context: string,\n useSlider: bool,\n customCloneText: string\n};\n","import React from 'react';\nimport { object, func, bool } from 'prop-types';\nimport { t } from '@jotforminc/translation';\n\nimport { placeholderTableImage } from '../../constantImages';\nimport { onImageError } from '../../onImageError';\nimport PreviewHint from './PreviewHint';\n\nconst TableTemplateItem = ({\n template, imageLoaded, handlePreviewTemplate,\n setImageLoaded, templateCloneWrapper\n}) => {\n const {\n _slug,\n _title,\n thumbnailBackgroundColor\n // _imageUrl,\n } = template;\n const isSkeleton = _title === 'skeleton';\n const screenshotURL = _slug ? `https://cdn.jotfor.ms/templates/screenshot/table-templates/${_slug}?f=png&w=930` : placeholderTableImage;\n return (\n
    \n
    handlePreviewTemplate('viewTemplateFromImg')}>\n
    \n \n setImageLoaded(true)}\n src={!isSkeleton ? (screenshotURL) : placeholderTableImage}\n />\n \n
    \n
    \n

    handlePreviewTemplate('viewTemplateFromTitle')}>{_title}

    \n templateCloneWrapper(event)}\n >\n {t('Use Template')}\n \n handlePreviewTemplate('viewTemplateFromPreviewCta')}\n >\n {t('Preview')}\n \n
    \n );\n};\n\nexport default TableTemplateItem;\nTableTemplateItem.defaultProps = {\n};\nTableTemplateItem.propTypes = {\n template: object.isRequired,\n imageLoaded: bool.isRequired,\n setImageLoaded: func.isRequired,\n templateCloneWrapper: func.isRequired,\n handlePreviewTemplate: func.isRequired\n};\n","import React from 'react';\nimport { object, func, bool } from 'prop-types';\nimport { t } from '@jotforminc/translation';\n\nimport { placeholderApprovalImage, placeholderApprovalBG } from '../../constantImages';\nimport { onImageError } from '../../onImageError';\nimport PreviewHint from './PreviewHint';\n\nconst ApprovalTemplateItem = ({\n template, imageLoaded, handlePreviewTemplate,\n setImageLoaded, templateCloneWrapper\n}) => {\n const {\n slug,\n title\n } = template;\n const isSkeleton = title === 'skeleton';\n\n const screenshotURL = `https://cdn.jotfor.ms/templates/screenshot/workflow-templates/${slug}?f=png&w=1482`;\n const image = slug ? screenshotURL : placeholderApprovalImage;\n\n return (\n
    \n
    handlePreviewTemplate('viewTemplateFromImg')}>\n \n \n \n \n \n \n \n\n
    \n \n onImageError(e, placeholderApprovalBG)}\n onLoad={() => setImageLoaded(true)}\n />\n \n
    \n
    \n

    handlePreviewTemplate('viewTemplateFromTitle')}>{title}

    \n templateCloneWrapper(event)}\n >\n {t('Use Template')}\n \n handlePreviewTemplate('viewTemplateFromPreviewCta')}\n >\n {t('Preview')}\n \n
    \n );\n};\n\nexport default ApprovalTemplateItem;\nApprovalTemplateItem.defaultProps = {\n};\nApprovalTemplateItem.propTypes = {\n template: object.isRequired,\n imageLoaded: bool.isRequired,\n setImageLoaded: func.isRequired,\n templateCloneWrapper: func.isRequired,\n handlePreviewTemplate: func.isRequired\n};\n","import React from 'react';\nimport { object, func, bool } from 'prop-types';\nimport { t } from '@jotforminc/translation';\n\nimport { placeholderAgentImage } from '../../constantImages';\nimport { onImageError } from '../../onImageError';\nimport PreviewHint from './PreviewHint';\n\nconst AgentTemplateItem = ({\n template, imageLoaded, handlePreviewTemplate,\n setImageLoaded, templateCloneWrapper\n}) => {\n const {\n title,\n thumbnailBackgroundColor,\n screenshot,\n _previewImageUrl\n } = template;\n const isSkeleton = title === 'skeleton';\n return (\n
    \n
    handlePreviewTemplate('viewTemplateFromImg')}>\n \n setImageLoaded(true)}\n src={!isSkeleton ? (screenshot || _previewImageUrl) : placeholderAgentImage}\n />\n \n
    \n

    handlePreviewTemplate('viewTemplateFromTitle')}>{title}

    \n \n {t('Use Agent')}\n \n handlePreviewTemplate('viewTemplateFromPreviewCta')}\n >\n {t('Preview')}\n \n
    \n );\n};\n\nexport default AgentTemplateItem;\nAgentTemplateItem.defaultProps = {\n};\nAgentTemplateItem.propTypes = {\n template: object.isRequired,\n imageLoaded: bool.isRequired,\n setImageLoaded: func.isRequired,\n templateCloneWrapper: func.isRequired,\n handlePreviewTemplate: func.isRequired\n};\n","import React, { useRef } from 'react';\nimport { object, func, bool } from 'prop-types';\nimport { t } from '@jotforminc/translation';\n\nimport { getTopValue } from './utils';\nimport { placeholderPageImage } from '../../constantImages';\nimport { getDeviceType } from '../../getDeviceType';\nimport { onImageError } from '../../onImageError';\nimport PreviewHint from './PreviewHint';\n\nconst PdfTemplateItem = ({\n template, imageLoaded, handlePreviewTemplate, setImageLoaded\n}) => {\n let animationTimeoutReferance;\n const screenshotRef = useRef();\n const { screenshot } = template;\n const title = template._title || template.title;\n const isSkeleton = title === 'skeleton';\n\n const updateScreenshotPosition = position => {\n if (!imageLoaded || getDeviceType() !== 'desktop') return;\n const screenshotElement = screenshotRef.current;\n if (screenshotElement === null || !screenshotElement) return;\n screenshotElement.style.top = `${position}px`;\n };\n\n const handleMouseEnterAnimation = () => {\n updateScreenshotPosition(getTopValue(screenshotRef));\n animationTimeoutReferance = setTimeout(() => updateScreenshotPosition(0), 2000);\n };\n\n const handleMouseLeave = () => {\n if (animationTimeoutReferance === undefined) return;\n clearTimeout(animationTimeoutReferance);\n updateScreenshotPosition(0);\n };\n\n const previewTemplateWrapper = action => {\n handlePreviewTemplate(action, { ...template });\n };\n\n return (\n
    \n previewTemplateWrapper('viewTemplateFromImg')}\n >\n \n
    \n \n setImageLoaded(true)}\n src={!isSkeleton ? screenshot : placeholderPageImage}\n />\n
    \n

    previewTemplateWrapper('viewTemplateFromTitle')}>\n {title}\n

    \n previewTemplateWrapper('viewFormPreviewButton')}\n >\n {t('Preview')}\n \n
    \n );\n};\n\nexport default PdfTemplateItem;\nPdfTemplateItem.defaultProps = {\n};\nPdfTemplateItem.propTypes = {\n template: object.isRequired,\n imageLoaded: bool.isRequired,\n setImageLoaded: func.isRequired,\n handlePreviewTemplate: func.isRequired\n};\n","import React from 'react';\nimport { isEnterprise } from '@jotforminc/enterprise-utils';\nimport { t, translationRenderer } from '@jotforminc/translation';\nimport { StorageHelper } from '@jotforminc/storage-helper';\n\nimport { getUrlParameter, handleCustomNavigation, handleRedirect as handleSignDocumentRedirect } from '@jotforminc/utils';\n\nimport AppTemplateItem from './components/TemplateItem/AppTemplateItem';\nimport PdfTemplateItem from './components/TemplateItem/PdfTemplateItem';\nimport FormTemplateItem from './components/TemplateItem/FormTemplateItem';\nimport TableTemplateItem from './components/TemplateItem/TableTemplateItem';\nimport ApprovalTemplateItem from './components/TemplateItem/ApprovalTemplateItem';\nimport AgentTemplateItem from './components/TemplateItem/AgentTemplateItem';\nimport PageTemplatesItem from './components/TemplateItem/PageTemplateItem';\n\nconst sharedPayloadProperties = { action: 'useTemplate', context: 'standalone' };\n\nexport const templateConstants = {\n 'form-templates': {\n abTestsAvailable: true,\n subGalleryViewActive: true,\n availableForEnterprise: false,\n gtmCloneActionKey: 'cloneForm',\n hasDetailedPreviewModal: true,\n count: '10,000',\n countKey: '{formTemplatesCount}',\n getCustomHeaderSubText: ({\n templateHeaderSubText, setView, countKey, count, username, withoutStartFromScratch\n }) => ({\n subTitle: (\n <>\n {withoutStartFromScratch\n ? t(templateHeaderSubText.replaceAll(countKey, count))\n : translationRenderer(`[1[${templateHeaderSubText}]] or [2[create form from scratch]]`)({\n renderer1: text => text.replaceAll(countKey, count),\n renderer2: text => (\n {\n if (window?.standaloneTemplatesLogger && (typeof window.standaloneTemplatesLogger === 'function')) {\n window.standaloneTemplatesLogger({\n actor: username,\n action: 'click',\n target: 'subtitle-scratch-btn'\n });\n }\n setView('StartFromScratch', {\n onBackButtonClick: () => {\n setView('UseTemplate');\n }\n });\n }}\n >\n {text}\n \n )\n })}\n \n ),\n extraSubTitleClasses: ['create-form-from-scratch-btn']\n }),\n templateItem: FormTemplateItem,\n sidebarTabs: [\n { text: 'types', value: 'formtype' },\n { text: 'industries', value: 'industry' },\n { text: 'professions', value: 'profession' }\n ],\n sortingOptions: ['popular', 'trend', 'recent'],\n formLayoutOptions: ['classic', 'card'],\n extractIdFromResponse: response => {\n const { data: { form: { id: newFormID = null } = {} } = {} } = response;\n return newFormID;\n },\n getCloneTemplatePayload: (modalProps, template, source) => {\n const {\n theme, formID, id, _id\n } = template;\n return {\n payload: {\n ...sharedPayloadProperties,\n theme,\n categories: template?._categories || template?.categories,\n slug: template?._slug || template?.slug || modalProps?.template?._slug,\n formID: formID || id || _id,\n action: 'cloneForm',\n ...(source === 'template-suggestion-modal' && { source: 'MYFORMS', context: source })\n },\n successAction: 'formCreationCompleted',\n failAction: 'useTemplateCloneFormFail',\n failMessage: 'Failed to clone form for use template action'\n };\n }\n },\n 'sign-templates': {\n aliasType: 'pdf-templates',\n gtmCloneActionKey: 'cloneSignDocument',\n sortCategoriesByFeatured: true,\n getCustomReqParams: source => {\n const defaults = { modeESign: '1' };\n if (source === 'app-sign-element') return { ...defaults, singleSigner: '1' };\n return { ...defaults };\n },\n getCustomPropertiesReqParams: source => {\n const defaults = { modeESign: '1', idKey: '_id', similarTemplates: 1 };\n if (source === 'app-sign-element') return { ...defaults, singleSigner: '1' };\n return { ...defaults };\n },\n subGalleryViewActive: true,\n availableForEnterprise: true,\n showAllCategories: true,\n hasDetailedPreviewModal: true,\n templateItem: PdfTemplateItem,\n customPreviewModalClass: 'signTemplatePreviewModal',\n sidebarTabs: [\n { text: 'types', value: 'pdftype' },\n { text: 'industries', value: 'industry' }\n ],\n sortingOptions: ['popular', 'trend', 'recent'],\n extractIdFromResponse: res => {\n const { data: { formID } } = res;\n return formID;\n },\n cloneRedirectionFunc: id => {\n handleSignDocumentRedirect(id);\n },\n getCloneTemplatePayload: (modalProps, template) => {\n return {\n payload: {\n ...sharedPayloadProperties,\n action: 'cloneESignTemplate',\n slug: template?._slug || template?.slug || modalProps?.template?._slug,\n id: template?.id || template?._id || modalProps?.template?._id\n },\n successAction: 'signDocumentCreationCompleted',\n failAction: 'useTemplateCloneSignDocumentFail',\n failMessage: 'Failed to clone sign document for use template action'\n };\n }\n },\n 'pdf-templates': {\n sortCategoriesByFeatured: true,\n count: '1,300',\n countKey: '{pdfTemplatesCount}',\n getCustomReqParams: () => ({ type: 'pdftype' }),\n getCustomPropertiesReqParams: () => ({ idKey: '_id', type: 'pdftype' }),\n subGalleryViewActive: true,\n availableForEnterprise: true,\n showAllCategories: true,\n hasDetailedPreviewModal: true,\n templateItem: PdfTemplateItem,\n customPreviewModalClass: 'signTemplatePreviewModal',\n sidebarTabs: [\n { text: 'types', value: 'pdftype' },\n { text: 'industries', value: 'industry' }\n ],\n sortingOptions: ['popular', 'trend', 'recent'],\n extractIdFromResponse: res => {\n const { data: { formID } } = res;\n return formID;\n },\n cloneRedirectionFunc: id => {\n handleSignDocumentRedirect(id);\n },\n getCloneTemplatePayload: (modalProps, template) => {\n return {\n payload: {\n ...sharedPayloadProperties,\n action: 'cloneESignTemplate',\n slug: template?._slug || template?.slug || modalProps?.template?._slug,\n id: template?.id || template?._id || modalProps?.template?._id\n },\n successAction: 'signDocumentCreationCompleted',\n failAction: 'useTemplateCloneSignDocumentFail',\n failMessage: 'Failed to clone sign document for use template action'\n };\n }\n },\n 'app-templates': {\n count: '700',\n countKey: '{appTemplatesCount}',\n subGalleryViewActive: true,\n availableForEnterprise: true,\n templateItem: AppTemplateItem,\n showAllCategories: true,\n hasDetailedPreviewModal: true,\n gtmCloneActionKey: 'cloneApp',\n sortingOptions: ['popular', 'recent'],\n cloneRedirectionFunc: (id, username) => {\n if (window?.standaloneTemplatesLogger && (typeof window.standaloneTemplatesLogger === 'function')) {\n window.standaloneTemplatesLogger({ actor: username, action: 'appCreated', target: { portalID: id, from: 'wizard:use-template' } });\n }\n StorageHelper.setSessionStorageItem({ key: 'create_app_from_app_templates', value: true });\n handleCustomNavigation(`/app/template/${id}`, '_self');\n },\n getCustomHeaderSubText: ({\n templateHeaderSubText, teamID, countKey, count, username\n }) => ({\n subTitle: (\n <>\n {translationRenderer(`[1[${templateHeaderSubText}]] or [2[create app from scratch]]`)({\n renderer1: text => text.replaceAll(countKey, count),\n renderer2: text => (\n {\n if (window?.standaloneTemplatesLogger && (typeof window.standaloneTemplatesLogger === 'function')) {\n window.standaloneTemplatesLogger({\n actor: username,\n action: 'click',\n target: 'subtitle-scratch-btn'\n });\n }\n handleCustomNavigation(`/app${teamID ? `?teamID=${teamID}` : ''}`, '_self');\n }}\n >\n {text}\n \n )\n })}\n \n ),\n extraSubTitleClasses: ['create-form-from-scratch-btn']\n }),\n sidebarTabs: [{ text: 'categories', value: 'categories' }],\n getCloneTemplatePayload: (modalProps, template) => {\n return {\n payload: {\n ...sharedPayloadProperties,\n slug: template?.slug || modalProps?.template?.slug,\n id: template?.id || modalProps?.template?.id\n },\n successAction: 'appCreationCompleted',\n failAction: 'useTemplateCloneAppFail',\n failMessage: 'Failed to clone app for use template action'\n };\n }\n },\n 'page-templates': {\n showAllCategories: true,\n subGalleryViewActive: true,\n availableForEnterprise: false,\n gtmCloneActionKey: 'clonePage',\n templateItem: PageTemplatesItem,\n hasDetailedPreviewModal: true,\n sortingOptions: ['popular', 'recent'],\n cloneRedirectionFunc: id => {\n handleCustomNavigation(`/page/build/${id}`, '_self');\n },\n extractIdFromResponse: response => {\n const { data: clonedPageID } = response;\n return clonedPageID;\n },\n sidebarTabs: [{ text: 'categories', value: 'categories' }],\n getCloneTemplatePayload: (modalProps, template) => {\n return {\n payload: {\n ...sharedPayloadProperties,\n slug: template?.slug || modalProps?.template?.slug,\n id: template?.id || modalProps?.template?.id\n },\n successAction: 'pageCreationCompleted',\n failAction: 'useTemplateClonePageFail',\n failMessage: 'Failed to clone page for use template action'\n };\n }\n },\n 'approval-templates': {\n showAllCategories: true,\n count: '100',\n countKey: '{approvalTemplatesCount}',\n availableForEnterprise: true,\n gtmCloneActionKey: 'cloneApproval',\n hasDetailedPreviewModal: true,\n templateItem: ApprovalTemplateItem,\n sortingOptions: ['popular', 'recent'],\n cloneRedirectionFunc: id => {\n const integrationParam = getUrlParameter('integration');\n const hasIntegration = integrationParam.length > 0;\n handleCustomNavigation(`/workflow/${id}/build${hasIntegration ? `/integration/${integrationParam.split(' ').join('').toLowerCase()}` : ''}`, '_self');\n },\n sidebarTabs: [{ text: 'categories', value: 'categories' }],\n getCloneTemplatePayload: (modalProps, template) => {\n return {\n payload: {\n ...sharedPayloadProperties,\n slug: template?.slug || modalProps?.template?.slug,\n id: template?.id || modalProps?.template?.id\n },\n successAction: 'approvalCreationCompleted',\n failAction: 'useTemplateCloneApprovalFail',\n failMessage: 'Failed to clone approval for use template action'\n };\n }\n },\n 'table-templates': {\n count: '300',\n countKey: '{tableTemplatesCount}',\n showAllCategories: true,\n availableForEnterprise: true,\n hasDetailedPreviewModal: true,\n templateItem: TableTemplateItem,\n gtmCloneActionKey: 'cloneTable',\n getCustomPropertiesReqParams: () => ({ idKey: '_id' }),\n sortingOptions: ['popular', 'recent'],\n customPreviewModalClass: 'tableTemplatePreviewModal',\n sidebarTabs: [{ text: 'categories', value: 'categories' }],\n cloneRedirectionFunc: id => {\n handleCustomNavigation(`/tables/${id}`, '_self');\n },\n getCloneTemplatePayload: (modalProps, template) => {\n return {\n payload: {\n ...sharedPayloadProperties,\n slug: template?._slug || template?.slug || modalProps?.template?._slug,\n id: template?.id || template?._id || modalProps?.template?._id\n },\n successAction: 'tableCreationCompleted',\n failAction: 'useTemplateCloneTableFail',\n failMessage: 'Failed to clone table for use template action'\n };\n }\n },\n 'agent-templates': {\n count: '300',\n aliasType: 'agent-directory',\n countKey: '{agentTemplatesCount}',\n showAllCategories: true,\n availableForEnterprise: true,\n myTemplatesBtnText: 'My Agents',\n loadMoreText: 'See More Agents',\n hasDetailedPreviewModal: true,\n templateItem: AgentTemplateItem,\n gtmCloneActionKey: 'cloneAgent',\n sortingOptions: ['popular', 'recent'],\n customPreviewModalClass: 'agentTemplatePreviewModal',\n sidebarTabs: [{ text: 'categories', value: 'categories' }],\n cloneRedirectionFunc: id => {\n handleCustomNavigation(`/agent/build/${id}`, '_self');\n },\n getCloneTemplatePayload: (modalProps, template) => {\n return {\n payload: {\n ...sharedPayloadProperties,\n slug: template?._slug || template?.slug || modalProps?.template?._slug,\n id: template?.id || template?._id || modalProps?.template?._id\n },\n successAction: 'agentCreationCompleted',\n failAction: 'useTemplateCloneAgentFail',\n failMessage: 'Failed to clone agent for use template action'\n };\n },\n searchPlaceholder: 'All AI Agents are waiting to help you. How can we help you today?'\n }\n};\n\nexport const isNewStandaloneActive = (frameSrc = '', isMobileApp, source) => {\n const { location: { origin } } = window;\n const formatedSrc = frameSrc.charAt(0) !== '/' ? `/${frameSrc}` : frameSrc;\n\n const formatedFrameSrc = `${origin}${formatedSrc}`;\n const { pathname } = new URL(formatedFrameSrc);\n\n if (isMobileApp || !pathname.includes('/standalone') || source === 'test') return false;\n\n let rawTemplateType = pathname.replaceAll('/standalone', '').replaceAll('/', '');\n if (!rawTemplateType.includes('form-templates') && rawTemplateType.includes('?')) {\n [rawTemplateType] = rawTemplateType.split('?');\n }\n const standaloneData = templateConstants[rawTemplateType];\n\n if (!standaloneData) return false;\n if (isEnterprise() && !standaloneData.availableForEnterprise) return false;\n if (standaloneData.underDevelopmentData) {\n const { underDevelopmentData: { urlParam } } = standaloneData;\n return window.location.href.includes(urlParam);\n }\n return true;\n};\n","import React from 'react';\n\nconst Loader = () => {\n return (\n
    \n
    \n
    \n
    \n
    \n );\n};\n\nexport default Loader;\n","import axios from 'axios';\n\nimport { templateConstants } from './templateConstants';\n\nconst removeLastCharacter = string => string.substring(0, string.length - 1);\n\nconst apiCallWrapper = requestParams => {\n let paramString = '?';\n Object.keys(requestParams).forEach(paramKey => {\n const parameterValue = requestParams[paramKey];\n if (paramKey === 'language') {\n if (parameterValue !== undefined && parameterValue !== '') paramString += `${paramKey}=${parameterValue}&`;\n } else if (parameterValue !== undefined) {\n paramString += `${paramKey}=${parameterValue}&`;\n }\n });\n return removeLastCharacter(paramString);\n};\n\nconst languageFlatter = language => { if (language.length !== 0) return language[0]; };\n\nexport async function fetchCategories(templateType, language, source) {\n const { aliasType, getCustomReqParams = () => {} } = templateConstants[templateType];\n const templateTypeParameter = aliasType === 'agent-directory' ? aliasType : removeLastCharacter(aliasType || templateType);\n const requestParameters = apiCallWrapper({\n language: languageFlatter(language),\n ...getCustomReqParams(source)\n });\n return axios.get(`/API/${templateTypeParameter}/category${requestParameters}`);\n}\n\nconst categoryParamFlatter = (selectedCategory, isMyTemplates, searchKeywordParameter) => {\n if (selectedCategory?.slug) return selectedCategory?.slug;\n if (!isMyTemplates && searchKeywordParameter === '') return 'homepage';\n return undefined;\n};\n\nexport async function getTemplate(templateType, templateID, source = '', theme) {\n const {\n aliasType,\n getCustomPropertiesReqParams = () => ({ idKey: 'id' })\n } = templateConstants[templateType];\n\n const { idKey, ...rest } = getCustomPropertiesReqParams(source);\n const requestParameters = apiCallWrapper({\n ...rest,\n [idKey]: templateID,\n ...(theme === 'card' ? { theme } : {})\n });\n let endpointURL = templateType;\n switch (endpointURL) {\n case 'form-templates':\n endpointURL = 'form-template';\n break;\n case 'agent-templates':\n endpointURL = 'agent-directory';\n break;\n default:\n endpointURL = aliasType || endpointURL;\n }\n return axios.get(`/API/${endpointURL}${requestParameters}`);\n}\n\nexport async function getEnterpriseTemplate(id, theme = 'classic') {\n const formData = new FormData();\n\n formData.append('action', 'renderTemplateModalView');\n formData.append('id', id);\n formData.append('theme', theme);\n formData.append('mode-single', true);\n return axios.post('/form-templates/standalone/api', formData);\n}\n\nexport async function convertFormUserToCloneTemplate() {\n return axios.post('/API/formuser/convertAccount?forceLogin=1&appName=listings');\n}\n\nexport async function getCategory(filters, selectedCategory, language = ['en'], templateType, source) {\n const { theme = 'classic', sorting = 'popular' } = filters;\n const { aliasType, getCustomReqParams = () => {} } = templateConstants[templateType];\n const isFormTemplates = templateType === 'form-templates';\n const requestParameters = apiCallWrapper({\n ...getCustomReqParams(source),\n theme: isFormTemplates ? theme : undefined,\n sorting,\n filterBy: 'id',\n language: languageFlatter(language),\n id: selectedCategory._id || selectedCategory.id\n });\n const templateTypeParameter = aliasType === 'agent-directory' ? aliasType : removeLastCharacter(aliasType || templateType);\n return axios.get(`/API/${templateTypeParameter}/category${requestParameters}`);\n}\n\nexport async function fetchStarterPackTemplates(payload = {}) {\n const { templateType, featuredTemplates = false } = payload;\n if (templateType === 'sign-templates') {\n return axios.get('/API/sign/starter-pack-templates');\n }\n\n return axios.get(`/API/${templateType}/starter-pack-templates`, {\n // A/B Test: templateSuggestionModalOnMyAppsIII\n params: {\n ...(featuredTemplates && { featuredTemplates: '1' })\n }\n });\n}\n\nexport async function fetchTemplates(payload = {}) {\n const {\n source,\n filters,\n category,\n language,\n templateType,\n username = '',\n offsetParameter = 0,\n getOnlyMyTemplates = false,\n searchKeywordParameter = '',\n rpp = 24\n } = payload;\n const { sorting, theme } = filters;\n const isFormTemplates = templateType === 'form-templates';\n const isAgentTemplates = templateType === 'agent-templates';\n const { aliasType, getCustomReqParams = () => {} } = templateConstants[templateType];\n const requestParameters = apiCallWrapper({\n ...getCustomReqParams(source),\n theme: isFormTemplates ? theme : undefined,\n rpp,\n sorting: isAgentTemplates ? 'priority' : sorting,\n filterListing: 'all',\n start: offsetParameter,\n filterStatus: 'public',\n noESign: source === 'pdf-editor-new' ? '1' : '0',\n language: languageFlatter(language),\n username: getOnlyMyTemplates ? username : undefined,\n keyword: searchKeywordParameter !== '' ? searchKeywordParameter : undefined,\n category: categoryParamFlatter(category, getOnlyMyTemplates, searchKeywordParameter)\n });\n return axios.get(`/API/${aliasType || templateType}/filter${requestParameters}`);\n}\n\nexport async function fetchLanguages(templateType, source) {\n const { aliasType, getCustomReqParams = () => {} } = templateConstants[templateType];\n const type = aliasType || templateType;\n const requestParameters = apiCallWrapper({\n ...getCustomReqParams(source)\n });\n return axios.get(`/API/${type}/languages${requestParameters}`);\n}\n","import React from 'react';\nimport { t, translationRenderer } from '@jotforminc/translation';\nimport { capitalizeFirstLetter } from '@jotforminc/utils';\nimport { IconAngleLeft, IconCopyLine } from '@jotforminc/svg-icons';\nimport { getCategory } from './apiTemplates';\nimport { getDeviceType } from './getDeviceType';\nimport IconNoResult from './assets/icon-noresult.svg';\n\nexport const filterWrapper = (templateType, list, filters, index = 0) => {\n if (filters.length <= index) return list;\n const { property, value } = filters[index];\n return filterWrapper(templateType, list.filter(listItem => {\n if (templateType === 'form-templates' && listItem?.slug === 'salesforce-forms') return true;\n return listItem[property] === value;\n }), filters, index + 1);\n};\n\nexport const addOrRemoveMultipleEventListeners = (listeners, handlerFunction, addOrRemove, target) => {\n if (target === null) return;\n listeners.forEach(listener => {\n if (addOrRemove === 'add') {\n target.addEventListener(listener, handlerFunction);\n } else {\n target.removeEventListener(listener, handlerFunction);\n }\n });\n};\n\nexport const getInitialLanguage = isFormTemplates => {\n let result = 'en';\n const jfLang = window?.langCode;\n if (jfLang && jfLang !== '' && isFormTemplates) {\n result = jfLang.includes('-') ? jfLang.split('-')[0] : jfLang;\n }\n return result;\n};\n\nexport const prettyTemplatePageType = (templateType, isPlural = true) => {\n const templateType_ = templateType === 'approval-templates' ? 'workflow-templates' : templateType;\n const [first, second] = templateType_.split('-');\n const prettyName = `${capitalizeFirstLetter(first)} ${capitalizeFirstLetter(second)}`;\n return isPlural ? prettyName : prettyName.substring(0, prettyName.length - 1);\n};\n\nexport const categoryHasParent = category => category.parent !== '' && category.parent !== null && category.parent !== undefined;\n\nexport const getTemplateId = template => template?.id || template?._id;\n\nexport const getSubCategoryViewData = (selectedCategory, allCategories, setSubCategoryViewData, filters, language, templateType, source) => {\n if (!selectedCategory) return [];\n const subCategories = allCategories.filter(category => getTemplateId(category?.parent) === getTemplateId(selectedCategory));\n if (subCategories.length === 0) return [];\n setSubCategoryViewData({ subCategories: [], loading: true });\n return getCategory(filters, selectedCategory, language, templateType, source);\n};\n\nexport const getNoResultContent = (isNoUserTemplates = false, handleClearResult, searchResult, templatePageTypePrettyPlural) => {\n return (\n
    \n \n

    {t('Oops, No Result Found')}

    \n {\n isNoUserTemplates ? (\n

    {t('We could not find any user template for your current filtered language.')}

    \n ) : (\n <>\n

    \n {translationRenderer(`Sorry we could not find any results for [1[{keyword}]] in our ${templatePageTypePrettyPlural}.`)({\n renderer1: () => (\n \n {`\"${searchResult.searchedKeyword}\"`}\n \n )\n })}\n

    \n \n \n )\n }\n
    \n );\n};\n\nexport const getTemplateCountText = total => t('{categoryTotal} Templates').replace('{categoryTotal}', total);\n\nexport const getJfWizardWrapper = () => document.querySelector('.jfWizard');\n\nexport const scrollToTop = (isMobile, containerRef, isInline) => {\n const scrollPayload = { top: 0, behavior: 'smooth' };\n // eslint-disable-next-line no-nested-ternary\n const scrollElement = (isMobile || getDeviceType() !== 'desktop') ? containerRef.current : (isInline ? getJfWizardWrapper() : window);\n if (scrollElement !== null && scrollElement) {\n scrollElement.scrollTo(scrollPayload);\n }\n};\n\nconst handleClickBackToHomeButton = (handleSelectCategory, username) => {\n window.standaloneTemplatesLogger({\n actor: username,\n action: `${getDeviceType()}:back-homepage`\n });\n handleSelectCategory();\n};\n\nexport const categoryHeaderRenderer = props => {\n const {\n selectedCategory, handleSelectCategory, templatePageTypePrettyPlural, setActiveParentCategory,\n isAllCategoriesSelected, templatePageTypePretty, subCategoryViewData, activeParentCategory, username\n } = props;\n if (selectedCategory) {\n const totalCount = selectedCategory.total ? selectedCategory.total : subCategoryViewData.total;\n return (\n
    \n
    \n \n handleSelectCategory()} style={{ cursor: 'pointer' }}>\n {t(templatePageTypePrettyPlural)}\n \n {(categoryHasParent(selectedCategory) || activeParentCategory) && (\n {\n handleSelectCategory({ category: (activeParentCategory || selectedCategory.parent) });\n setActiveParentCategory();\n }}\n >\n {t((activeParentCategory?.name || selectedCategory.parent.name))}\n \n )}\n {t(selectedCategory.name)}\n
    \n

    {t(selectedCategory.pageTitle || selectedCategory.title || selectedCategory._title)}

    \n
    \n \n {getTemplateCountText(totalCount || '0')}\n
    \n
    \n );\n }\n if (isAllCategoriesSelected) {\n return (\n
    \n

    {t(`${templatePageTypePretty} Categories`)}

    \n
    {t(`You can find any ${templatePageTypePretty} Category that fits your needs.`)}
    \n
    \n );\n }\n return null;\n};\n\nexport const allCategoriesRenderer = (categories, handleSelectCategory, setActiveParentCategory) => (\n categories.map(category => {\n const {\n description, total, name, _id\n } = category;\n return (\n {\n handleSelectCategory({ category });\n setActiveParentCategory();\n }}\n >\n

    {t(name)}

    \n {t(description)}\n \n \n {getTemplateCountText(total || 0)}\n \n
    \n );\n })\n);\n\nexport const isDevelopmentEnv = () => window.JOTFORM_ENV === 'DEVELOPMENT';\n\nexport const handleSetupActionLogger = (projectName = 'newWizard') => {\n const { JotFormActions } = global;\n window.standaloneTemplatesLogger = (typeof JotFormActions === 'function' && !isDevelopmentEnv()) ? JotFormActions(projectName).tick : () => {};\n};\n\nexport const isHomepage = (isMyTemplates, selectedCategory, isSearchView, isAllCategoriesSelected) => {\n if (isMyTemplates || selectedCategory || isSearchView || isAllCategoriesSelected) return false;\n return true;\n};\n\nexport const getUser = () => global?.user || global?.__user || {};\n\nexport const isGuest = () => {\n const user = getUser();\n return user?.account_type?.name === 'GUEST';\n};\n\nexport const getPreviewID = template => template.app_id || template.approval_id || template._id || template.id;\n\nexport const formatBigNumber = number => {\n if (number === 0) {\n return '0';\n }\n if (!number) {\n return '';\n }\n return number.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n};\n\nexport const getUsername = (usernameProp, user) => {\n if (typeof usernameProp === 'string' && usernameProp !== '') return usernameProp;\n if (typeof user === 'string' && user !== '') return user;\n\n if (typeof usernameProp === 'object' && usernameProp?.username) return usernameProp?.username;\n if (typeof user === 'object' && user?.username) return user?.username;\n\n return global?.user?.username || global?.__user?.username || '';\n};\n\nexport const getUrlSearchParamByKey = ({\n key,\n options,\n defaultValue = null\n}) => {\n try {\n const { location: { search = '' } } = global;\n const urlParams = new URLSearchParams(search);\n const result = urlParams.get(key);\n if (options && result && !options.includes(result)) return defaultValue;\n return result;\n } catch {\n return defaultValue;\n }\n};\n\nexport const getTemplatePreviewURL = ({ template, templateType, previewURL }) => {\n const { id, _id } = template;\n const templateID = _id || id;\n\n switch (templateType) {\n case 'approval-templates':\n return `/workflow-templates/preview/workflow/${templateID}`;\n case 'agent-templates':\n const { agent_id: agentID } = template;\n return `/agent-directory/preview/agent/${agentID}?isTemplatePreview=1&skipWelcome=1`;\n default:\n return previewURL;\n }\n};\n","import axios from 'axios';\n\nexport async function logSearchAction(username, keyword, project, source = '') {\n const formData = new FormData();\n\n formData.append('project', project);\n formData.append('username', username);\n formData.append('term', keyword);\n formData.append('location', source !== '' ? source : project);\n\n return axios.post('/API/search', formData);\n}\n","/* eslint-disable max-len */\nimport Styled from 'styled-components';\n\nconst greenColor = '#78BB07';\nconst greenColorDarken = '#6da70c';\n\nexport const ScSearch = Styled.div`\n width: 100%;\n height: auto;\n position: relative;\n display: flex;\n justify-content: flex-start;\n align-items: center;\n padding: 0;\n transition: all 0.2s linear;\n\n @media screen and (max-width: 768px) {\n & {\n background: #fff;\n padding: 10px 20px 20px;\n width: calc(100% + 40px);\n margin-inline-start: -20px;\n }\n }\n .searchWrapper {\n position: relative;\n width: calc(100% - 72px);\n @media screen and (max-width: 768px) {\n width: 100%;\n }\n .input {\n width: 100%;\n display: inline-block;\n vertical-align: top;\n outline: none;\n font-weight: 400;\n font-size: 20px;\n line-height: 46px;\n height: 48px;\n padding: 0 16px;\n display: flex;\n position: relative;\n border: 1px solid transparent;\n border-radius: 4px;\n transition: all 0.2s;\n -webkit-appearance: none;\n background-color: #E3E5F5;\n color: #6F76A7;\n @media screen and (max-width: 768px) {\n height: 36px;\n font-size: 16px;\n padding: 0 12px 0 8px;\n line-height: 30px;\n } \n &:-webkit-autofill,\n &:-webkit-autofill:hover {\n box-shadow: 0 0 0 30px #e6ebf2 inset !important;\n }\n\n &:-webkit-autofill:focus,\n &:-webkit-autofill:active {\n box-shadow: 0 0 0 30px #fff inset !important;\n }\n\n &:-webkit-autofill {\n -webkit-text-fill-color: #2c3243 !important;\n }\n\n &::-webkit-autofill {\n box-shadow: none;\n }\n\n &::placeholder {\n color: #6F76A7;\n font-weight: 400;\n }\n\n &:-ms-input-placeholder {\n color: #6F76A7 !important;\n font-weight: 400;\n }\n\n &:-webkit-search-cancel-button {\n -webkit-appearance: none;\n content: url(\"data:image/svg+xml,%3Csvg width='12' height='12' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cpath d='M-518-18H26c2.2091 0 4 1.7909 4 4v40c0 2.2091-1.7909 4-4 4h-544c-2.2091 0-4-1.7909-4-4v-40c0-2.2091 1.7909-4 4-4z' fill='none' fill-rule='nonzero'/%3E%3Cpath d='M6 7.4142l-4.2929 4.293c-.3905.3904-1.0237.3904-1.4142 0-.3905-.3906-.3905-1.0238 0-1.4143L4.5858 6 .2928 1.7071C-.0975 1.3166-.0975.6834.2929.293c.3906-.3905 1.0238-.3905 1.4143 0L6 4.5858l4.2929-4.293c.3905-.3904 1.0237-.3904 1.4142 0 .3905.3906.3905 1.0238 0 1.4143L7.4142 6l4.293 4.2929c.3904.3905.3904 1.0237 0 1.4142-.3906.3905-1.0238.3905-1.4143 0L6 7.4142z' fill='%23c3cad8'/%3E%3C/g%3E%3C/svg%3E\");\n cursor: pointer;\n }\n\n &:focus {\n outline: none;\n border-color: $blueColor;\n box-shadow: 0px 0px 0px 3px #bdcefb;\n background-color: #FFF;\n }\n\n &:focus,\n &:active {\n background-color: #ffffff;\n }\n\n &::-ms-clear {\n display: none;\n }\n }\n }\n\n .go {\n background-color: ${greenColor};\n border: none;\n border-radius: 4px;\n margin-inline-start: 8px;\n height: 48px;\n flex: 0 0 64px;\n max-width: 64px;\n transition: all 0.2s;\n border: 1px solid transparent;\n color: #fff;\n display: flex;\n justify-content: center;\n align-items: center;\n &:hover {\n background-color: ${greenColorDarken};\n }\n @media screen and (max-width: 768px) {\n height: 36px;\n flex: 0 0 44px;\n max-width: 44px;\n background-size: 12px;\n margin-left: 4px;\n } \n }\n &.forSidebar {\n margin-bottom: 20px;\n .searchWrapper {\n width: calc(100% - 42px);\n .input {\n font-size: 12px;\n padding: 0 12px 0 8px;\n line-height: 30px;\n height: 32px; \n }\n }\n .go {\n height: 32px;\n flex: 0 0 40px;\n max-width: 40px;\n background-size: 12px;\n margin-left: 4px;\n }\n @media screen and (max-width: 768px) {\n display: none;\n padding: 10px 0 0;\n margin-inline-start: 0;\n width: 100%;\n }\n }\n &.showMobile {\n display: none;\n @media screen and (max-width: 768px) {\n & {\n display: flex;\n }\n }\n }\n \n &.isSticky {\n position: sticky;\n top: -17px;\n z-index: 5;\n box-shadow: rgba(0, 0, 0, 0.5) 0 16px 16px -16px;\n padding: 10px 20px;\n\n .searchWrapper {\n width: calc(100% - 52px);\n\n .input {\n height: 36px;\n font-size: 16px;\n }\n }\n\n .go {\n height: 36px;\n flex: 0 0 44px;\n max-width: 44px;\n background-size: 16px;\n }\n }\n`;\n","/* eslint-disable react/prop-types */\nimport React, { useEffect } from 'react';\nimport { t } from '@jotforminc/translation';\nimport { sanitize } from 'dompurify';\nimport { IconMagnifyingGlass } from '@jotforminc/svg-icons';\nimport { classNameGenerator } from '@jotforminc/utils';\nimport { getDeviceType } from '../getDeviceType';\n\nimport { isHomepage } from '../utils';\nimport { logSearchAction } from '../api';\nimport { ScSearch } from './ScSearch';\nimport { templateConstants } from '../templateConstants';\n\nconst Search = ({ props, sidebarSearch }) => {\n const {\n getTemplates, searchKeyword, searchResult, setSearchResult, isMyTemplates, username,\n setSelectedCategory, setSearchKeyword, stickySearchWrapper, setTemplates, setStandaloneTemplates, templateType,\n selectedCategory, setIsAllCategoriesSelected, setIsMyTemplates, isAllCategoriesSelected, source\n } = props;\n\n const handleSearch = () => {\n const isEmpty = searchKeyword === '';\n setTemplates([]);\n setStandaloneTemplates([]);\n if (!isEmpty) logSearchAction(username, searchKeyword, templateType, source);\n setSearchResult({ searchView: !isEmpty, searchedKeyword: searchKeyword });\n getTemplates({ searchKeywordParameter: searchKeyword });\n setSelectedCategory();\n setIsMyTemplates(false);\n setIsAllCategoriesSelected(false);\n window.standaloneTemplatesLogger({\n actor: username,\n target: searchKeyword,\n action: `${getDeviceType()}:search`\n });\n };\n\n useEffect(() => {\n window.handleSearch = handleSearch;\n return () => {\n window.handleSearch = undefined;\n };\n }, [searchKeyword]);\n\n const handleFocusSearch = () => {\n if (global?.standaloneTemplatesLogger) {\n global?.standaloneTemplatesLogger({\n actor: username,\n action: `${getDeviceType()}:searchBox-click`\n });\n }\n };\n\n const { searchPlaceholder = 'Search in all templates' } = templateConstants[templateType];\n return (\n \n <>\n
    \n setSearchKeyword(sanitize(e.target.value))}\n onKeyDown={e => e.key === 'Enter' && handleSearch()}\n />\n
    \n \n \n \n );\n};\n\nexport default Search;\n","import { IconAngleDown, IconAngleUp } from '@jotforminc/svg-icons';\nimport React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport camelCase from 'lodash/camelCase';\nimport { classNames } from '@jotforminc/utils';\n\nconst Accordion = ({\n text, label, children, open, scrollable, username, isLast, onToggle\n}) => {\n const [isOpen, setIsOpen] = useState(open);\n\n const handleClick = () => {\n const actionText = `${isOpen ? 'close' : 'open'}-clicked-${camelCase(text)}`;\n setIsOpen(!isOpen);\n window.standaloneTemplatesLogger({\n actor: username,\n action: `${window.innerWidth <= 780 ? 'mobile' : 'desktop'}:${actionText}`,\n target: 'newSidebar'\n });\n onToggle();\n };\n\n return (\n \n \n {text && (\n {text}\n )}\n {label && (\n {label}\n )}\n \n {isOpen ? (\n \n ) : (\n \n )}\n \n \n {isOpen && (\n \n {children}\n
    \n )}\n
    \n );\n};\n\nAccordion.defaultProps = {\n children: null,\n label: null,\n text: null,\n open: false,\n scrollable: false,\n username: '',\n isLast: false,\n onToggle: () => {}\n};\nAccordion.propTypes = {\n children: PropTypes.node,\n label: PropTypes.string,\n text: PropTypes.string,\n open: PropTypes.bool,\n scrollable: PropTypes.bool,\n username: PropTypes.string,\n isLast: PropTypes.bool,\n onToggle: PropTypes.func\n};\nexport default Accordion;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst RadioButton = ({ label, checked, ...props }) => {\n return (\n \n );\n};\n\nRadioButton.defaultProps = {\n label: null,\n checked: false\n};\n\nRadioButton.propTypes = {\n label: PropTypes.string,\n checked: PropTypes.bool\n};\n\nexport default RadioButton;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { capitalizeFirstLetter } from '@jotforminc/utils';\nimport { t } from '@jotforminc/translation';\n\nimport { templateConstants } from '../../templateConstants';\nimport { getDeviceType } from '../../getDeviceType';\n\nimport Accordion from './Accordion';\nimport RadioButton from './RadioButton';\n\nconst Sorting = ({\n username, filters, setFilters, templateType\n}) => {\n const [sortValue, setSortValue] = useState('popular');\n\n const handleChangeFilter = (filterKey, newValue) => {\n if (filters[filterKey] === newValue) return;\n setFilters({\n ...filters,\n [filterKey]: newValue\n });\n };\n const handleChangeSorting = e => {\n const option = e.target.value;\n setSortValue(option);\n window.standaloneTemplatesLogger({\n actor: username,\n target: option,\n action: `${getDeviceType()}:sorting`\n });\n handleChangeFilter('sorting', option);\n };\n\n return (\n \n {(templateConstants[templateType].sortingOptions || []).map(option => (\n \n ))}\n \n );\n};\n\nSorting.defaultProps = {\n username: '',\n filters: {},\n setFilters: () => {},\n templateType: ''\n};\n\nSorting.propTypes = {\n username: PropTypes.string,\n filters: PropTypes.object,\n setFilters: PropTypes.func,\n templateType: PropTypes.string\n};\n\nexport default Sorting;\n","/* eslint-disable react/prop-types */\nimport React from 'react';\nimport { t } from '@jotforminc/translation';\nimport { sanitize } from 'dompurify';\nimport { IconMagnifyingGlass, IconXmarkCircleFilled } from '@jotforminc/svg-icons';\nimport { classNameGenerator } from '@jotforminc/utils';\nimport { getDeviceType } from '../../getDeviceType';\n\nimport { isHomepage } from '../../utils';\nimport { logSearchAction } from '../../api';\n\nconst Search = ({ props, sidebarSearch }) => {\n const {\n getTemplates, searchKeyword, searchResult, setSearchResult, isMyTemplates, username,\n setSelectedCategory, setSearchKeyword, stickySearchWrapper, setTemplates, templateType, setStandaloneTemplates,\n selectedCategory, setIsAllCategoriesSelected, setIsMyTemplates, isAllCategoriesSelected, source\n } = props;\n\n const handleSearch = () => {\n const isEmpty = searchKeyword === '';\n setTemplates([]);\n setStandaloneTemplates([]);\n if (!isEmpty) logSearchAction(username, searchKeyword, templateType, source);\n setSearchResult({ searchView: !isEmpty, searchedKeyword: searchKeyword });\n getTemplates({ searchKeywordParameter: searchKeyword });\n setSelectedCategory();\n setIsMyTemplates(false);\n setIsAllCategoriesSelected(false);\n window.standaloneTemplatesLogger({\n actor: username,\n target: searchKeyword,\n action: `${getDeviceType()}:search`\n });\n };\n\n const handleFocusSearch = () => {\n if (global?.standaloneTemplatesLogger) {\n global?.standaloneTemplatesLogger({\n actor: username,\n action: `${getDeviceType()}:searchBox-click`\n });\n }\n };\n\n const handleResetSearchInput = () => {\n setSearchKeyword('');\n };\n\n const searchText = templateType === 'agent-templates' ? 'Search in Agent Directory' : 'Search in all templates';\n return (\n \n \n setSearchKeyword(sanitize(e.target.value))}\n onKeyDown={e => e.key === 'Enter' && handleSearch()}\n />\n \n \n \n
    \n );\n};\n\nexport default Search;\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 React, { useState, useEffect } from 'react';\nimport { t } from '@jotforminc/translation';\nimport { Languages } from '@jotforminc/constants';\nimport PropTypes from 'prop-types';\nimport Accordion from './Accordion';\n\nimport { getDeviceType } from '../../getDeviceType';\nimport { fetchLanguages } from '../../apiTemplates';\nimport RadioButton from './RadioButton';\n\nconst LanguagesFilter = ({\n language,\n setLanguage,\n templateType,\n username,\n source\n}) => {\n const [languages, setLanguages] = useState([]);\n\n useEffect(() => {\n fetchLanguages(templateType, source)\n .then(res => {\n try {\n const { data: { content } } = res;\n const formattedLanugages = content.map(lang => {\n const templateLang = lang._language || lang.language;\n if (Languages && Languages.length > 0) {\n const languageObject = Languages.find(l => templateLang === l.key);\n if (languageObject !== undefined) return { value: templateLang, text: languageObject.value };\n return undefined;\n }\n return { value: templateLang, text: templateLang };\n });\n setLanguages([{ value: '', text: 'All' }, ...formattedLanugages.filter(lang => lang !== undefined).sort((a, b) => (a.text > b.text ? 1 : -1))]);\n } catch (e) {\n setLanguages([]);\n }\n })\n .catch(() => {\n setLanguages([]);\n });\n }, []);\n\n const handleSelectLanguage = e => {\n const selected = e.target.value;\n setLanguage([selected]);\n window.standaloneTemplatesLogger({\n actor: username,\n target: selected,\n action: `${getDeviceType()}:languageSelect`\n });\n };\n\n return (\n lang.value === language[0])?.text}\n isLast={true}\n scrollable\n >\n {languages.map(lang => (\n handleSelectLanguage(e)}\n />\n ))}\n \n );\n};\n\nLanguagesFilter.defaultProps = {\n source: '',\n username: '',\n templateType: 'form-templates'\n};\n\nLanguagesFilter.propTypes = {\n source: PropTypes.string,\n username: PropTypes.string,\n templateType: PropTypes.string,\n setLanguage: PropTypes.func.isRequired,\n language: PropTypes.arrayOf(PropTypes.string).isRequired\n};\n\nexport default LanguagesFilter;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { capitalizeFirstLetter } from '@jotforminc/utils';\nimport { t } from '@jotforminc/translation';\n\nimport { templateConstants } from '../../templateConstants';\nimport { getDeviceType } from '../../getDeviceType';\nimport Accordion from './Accordion';\nimport RadioButton from './RadioButton';\n\nconst FormLayout = ({\n filters, setFilters, username\n}) => {\n const { theme: formLayout } = filters;\n\n const handleChange = e => {\n const option = e.target.value;\n if (option === formLayout) return;\n setFilters({\n ...filters,\n theme: option\n });\n window.standaloneTemplatesLogger({\n actor: username,\n action: `${getDeviceType()}:filterTheme`,\n target: option\n });\n };\n\n return (\n \n {(templateConstants['form-templates'].formLayoutOptions || []).map(option => (\n \n ))}\n \n );\n};\n\nFormLayout.defaultProps = {\n username: ''\n};\n\nFormLayout.propTypes = {\n username: PropTypes.string,\n filters: PropTypes.object.isRequired,\n setFilters: PropTypes.func.isRequired\n};\n\nexport default FormLayout;\n","/* eslint-disable react/prop-types */\nimport React, { useEffect, useState } from 'react';\nimport upperCase from 'lodash/upperCase';\nimport { t } from '@jotforminc/translation';\nimport { classNames } from '@jotforminc/utils';\nimport {\n IconAngleDown, IconAngleUp, IconArrowRight, IconLayerFilled, IconXmark\n} from '@jotforminc/svg-icons';\nimport { templateConstants } from '../../templateConstants';\nimport {\n filterWrapper,\n prettyTemplatePageType,\n isGuest,\n isHomepage,\n formatBigNumber\n} from '../../utils';\n\nimport { getDeviceType } from '../../getDeviceType';\n\nimport Accordion from './Accordion';\nimport Sorting from './Sorting';\nimport Search from './Search';\nimport LanguagesFilter from './LanguagesFilter';\nimport FormLayout from './FormLayout';\n\nconst Sidebar = ({ sidebarProps }) => {\n const {\n categories,\n selectedCategory,\n setAsideShow,\n asideShow,\n templateType,\n handleSelectCategory,\n setActiveParentCategory,\n username,\n isMyTemplates,\n filters,\n setFilters,\n searchResult,\n isAllCategoriesSelected,\n isMobile,\n searchComponentProps,\n source,\n language,\n setLanguage,\n predefinedCategory,\n selectedIndustryCategory\n } = sidebarProps;\n\n const {\n sidebarTabs = [],\n showAllCategories = false,\n myTemplatesBtnText = 'My Templates'\n } = templateConstants[templateType];\n\n const [subMenuActive, setSubMenuActive] = useState(null);\n const [accordionOpen, setAccordionOpen] = useState(null);\n const templatePageTypePretty = prettyTemplatePageType(templateType, false);\n const selectedIndustryCat = selectedIndustryCategory;\n\n const getFeaturedCategories = tab => {\n const filterArray = [];\n if (!showAllCategories) {\n filterArray.push({ property: 'featured', value: '1' });\n }\n if (sidebarTabs.length > 1) {\n filterArray.push({ property: 'type', value: tab.value });\n }\n const featuredCategories = filterWrapper(templateType, categories, filterArray).filter(\n category => category?.parent === '' || category?.parent === null\n );\n if (predefinedCategory && predefinedCategory?.subCategories && !selectedIndustryCat) {\n const predefinedCategoryID = predefinedCategory?.id || predefinedCategory?._id;\n return featuredCategories.filter(category => {\n return predefinedCategoryID && (category?.id || category?._id) === predefinedCategoryID;\n });\n }\n return featuredCategories;\n };\n\n const isSelectedCategory = categoryID => {\n if (!selectedCategory) return false;\n return categoryID === (selectedCategory._id || selectedCategory.id);\n };\n\n const isSubCategorySelected = subCategories => {\n return Object.keys(subCategories).find(subID => isSelectedCategory(subID));\n };\n\n const subMenuActiveCheck = categoryID => {\n return categoryID === subMenuActive;\n };\n\n const handleSelectMyTemplates = () => {\n handleSelectCategory({ clickedMyTemplates: true });\n window.standaloneTemplatesLogger({\n actor: username,\n target: myTemplatesBtnText,\n action: `${getDeviceType()}:click`\n });\n };\n\n const addTooltip = elm => {\n if (isMobile) return;\n const isCheck = e => {\n return (e.offsetWidth < e.scrollWidth);\n };\n\n if (isCheck(elm) && !elm.parentElement.querySelector('.tooltip')) {\n elm.parentElement.insertAdjacentHTML('beforeend', `
    ${t(elm.innerText)}
    `);\n }\n };\n\n const myTemplatesVisible = username !== '' && !isGuest();\n const industryCategoryType = categories.find(category => category.slug === selectedIndustryCat);\n\n useEffect(() => {\n const categoryList = document.querySelectorAll('.jfSidebar--categoryList a span:not(.countTotal)');\n categoryList.forEach(elm => addTooltip(elm));\n }, [categories, subMenuActive, asideShow, accordionOpen]);\n\n return (\n
    \n
    \n setAsideShow(true)}\n className=\"asideMobileButton\"\n >\n {t(`${templatePageTypePretty} Categories`)}\n \n
    \n \n
    \n );\n};\n\nexport default Sidebar;\n","import React, { useState } from 'react';\nimport {\n object, string, func, bool\n} from 'prop-types';\nimport { getDeviceType } from '../../getDeviceType';\nimport { templateConstants } from '../../templateConstants';\n\nconst TemplateItemContainer = ({\n type, template, templateTheme, setSelectedTemplate,\n handleTemplateClone, username, source, context, logAbTestAction, liteMode, useSlider, customCloneText\n}) => {\n const [imageLoaded, setImageLoaded] = useState(false);\n const templateTitle = template._title || template.title;\n const handlePreviewTemplate = (target, selectedTemplate = template) => {\n setSelectedTemplate(selectedTemplate);\n if (window.standaloneTemplatesLogger) {\n window.standaloneTemplatesLogger({\n actor: username,\n target: `/${type}/standalone/${template?.slug || templateTitle}`,\n action: `${getDeviceType()}:${target}`\n });\n }\n\n // A/B Test: templateSuggestionModalOnMyAppsIII\n if (liteMode) {\n logAbTestAction?.({ action: 'preview', target: template?.slug });\n }\n };\n\n const { templateItem: TemplateItemRenderer, getCloneTemplatePayload } = templateConstants[type];\n const templateCloneWrapper = event => {\n if (window.standaloneTemplatesLogger) {\n window.standaloneTemplatesLogger({\n actor: username,\n target: template._id || template.id,\n action: `${getDeviceType()}:useTemplate`\n });\n }\n const { payload } = getCloneTemplatePayload(undefined, { ...template, theme: templateTheme }, source);\n handleTemplateClone(payload, event.target);\n\n // A/B Test: templateSuggestionModalOnMyAppsIII\n if (liteMode) {\n logAbTestAction?.({ action: 'clone', target: template.slug });\n }\n };\n\n return (\n \n );\n};\n\nexport default TemplateItemContainer;\nTemplateItemContainer.defaultProps = {\n source: '',\n context: '',\n username: '',\n templateTheme: '',\n handleTemplateClone: () => { },\n setSelectedTemplate: () => { },\n template: {\n screenshot: 'skeleton',\n _title: 'skeleton',\n title: 'skeleton'\n },\n logAbTestAction: f => f,\n liteMode: false,\n useSlider: false,\n customCloneText: ''\n};\nTemplateItemContainer.propTypes = {\n source: string,\n context: string,\n template: object,\n username: string,\n templateTheme: string,\n type: string.isRequired,\n setSelectedTemplate: func,\n handleTemplateClone: func,\n logAbTestAction: func,\n liteMode: bool,\n useSlider: bool,\n customCloneText: string\n};\n","/* eslint-disable max-len */\nimport Styled from 'styled-components';\n\nconst navyColor = '#091141';\n\nexport const ScRelatedCategories = Styled.div`\n display: flex;\n flex-wrap: wrap;\n width: 100%;\n padding: 10px 0;\n margin: 0 0 30px;\n font-weight: 400;\n h3 {\n width: 100%;\n color: #4a4a4a;\n font-size: 26px;\n font-weight: 400;\n margin: 0 0 10px 0;\n }\n .similar-category {\n width: calc(100% + 20px);\n list-style: none;\n margin: 0;\n display: flex;\n align-items: flex-start;\n justify-content: flex-start;\n margin: 0 -10px;\n padding: 0;\n flex-wrap: wrap;\n .similar-category-card-list {\n width: 33.333%;\n .similar-category-card {\n cursor: pointer;\n background-color: #f9f9f9;\n padding: 10px;\n border-radius: 4px;\n margin: 10px;\n p {\n margin: 0;\n font-size: 16px;\n font-weight: 500;\n line-height: 24px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .count {\n color: ${navyColor};\n font-size: 14px;\n margin: 6px 0 0;\n display: flex;\n align-items: center;\n svg {\n margin-inline-end: 5px;\n }\n } \n }\n &:nth-child(1n) {\n .similar-category-card {\n background-color: #D0F0FD;\n }\n }\n &:nth-child(2n) {\n .similar-category-card {\n background-color: #FDDAF3;\n }\n }\n &:nth-child(3n) {\n .similar-category-card {\n background-color: #EDE8C3;\n }\n }\n }\n }\n\n @media screen and (max-width: 1024px) {\n h3 {\n font-size: 22px;\n }\n }\n @media screen and (max-width: 980px) {\n .similar-category {\n .similar-category-card-list {\n width: 50%;\n }\n }\n } \n \n`;\n","import React from 'react';\nimport { arrayOf, object, func } from 'prop-types';\nimport { t } from '@jotforminc/translation';\n\nimport { IconCopyLine } from '@jotforminc/svg-icons';\nimport { ScRelatedCategories } from './ScRelatedCategories';\nimport { getTemplateCountText } from '../utils';\n\nconst RelatedCategories = ({\n selectedCategory, categories, handleSelectCategory, setActiveParentCategory\n}) => {\n const getRelatedCategories = () => {\n const { relatedCategories } = selectedCategory;\n if (!relatedCategories || relatedCategories === '') return [];\n const relatedCategoryObjects = [];\n const splitted = relatedCategories.split(',');\n splitted.forEach(categoryIterator => {\n if (categoryIterator !== '') {\n const category = categories.find(cat => cat._id === categoryIterator);\n if (category) {\n relatedCategoryObjects.push(category);\n }\n }\n });\n return relatedCategoryObjects;\n };\n\n if (selectedCategory === null) return null;\n const relateds = getRelatedCategories();\n if (relateds.length === 0) return null;\n\n return (\n \n

    {t('More categories like this')}

    \n
      \n {\n relateds.filter(rel => rel.total !== undefined).map(related => (\n {\n setActiveParentCategory();\n handleSelectCategory({ category: related });\n }}\n >\n
      \n

      {t(related.name)}

      \n \n \n {getTemplateCountText(related.total)}\n \n
      \n \n ))\n }\n
    \n
    \n );\n};\n\nRelatedCategories.defaultProps = {\n selectedCategory: null\n};\n\nRelatedCategories.propTypes = {\n selectedCategory: object,\n handleSelectCategory: func.isRequired,\n categories: arrayOf(object).isRequired,\n setActiveParentCategory: func.isRequired\n};\n\nexport default RelatedCategories;\n","export const carouselBreakPoints = [\n {\n width: 1, itemsToShow: 1, itemsToScroll: 1, pagination: false\n },\n {\n width: 469, itemsToShow: 2, itemsToScroll: 2, pagination: false\n },\n {\n width: 850, itemsToShow: 3, itemsToScroll: 2, pagination: false\n }\n];\n","/* eslint-disable react/no-array-index-key */\nimport React from 'react';\nimport {\n func, object, string, bool\n} from 'prop-types';\nimport Carousel from 'react-elastic-carousel';\nimport { t } from '@jotforminc/translation';\n\nimport { IconCaretRight } from '@jotforminc/svg-icons';\nimport { carouselBreakPoints } from '../constants';\nimport TemplateItemContainer from './TemplateItem/TemplateItemContainer';\n\nconst SubCategoryGalleryItem = ({\n subCategoryObject, handleSelectCategory, templateTheme, username,\n setSelectedTemplate, handleTemplateClone, skeletonActive, type, source\n}) => {\n const { templates = [], total, name } = subCategoryObject || {};\n\n const handleClickCategory = () => {\n if (skeletonActive) return;\n handleSelectCategory({ category: subCategoryObject });\n };\n\n return (\n <>\n
    \n
    \n

    {t(name)}

    \n {total}\n
    \n
    \n
    \n \n
    \n {t('See All')}\n
    \n
    \n \n {\n skeletonActive ? (\n Array(3).fill().map(() => (\n \n ))\n ) : (\n [...templates].map(template => (\n \n ))\n )\n }\n \n \n );\n};\n\nexport default SubCategoryGalleryItem;\n\nSubCategoryGalleryItem.defaultProps = {\n source: '',\n username: '',\n skeletonActive: false\n};\n\nSubCategoryGalleryItem.propTypes = {\n source: string,\n username: string,\n skeletonActive: bool,\n type: string.isRequired,\n templateTheme: string.isRequired,\n setSelectedTemplate: func.isRequired,\n handleTemplateClone: func.isRequired,\n subCategoryObject: object.isRequired,\n handleSelectCategory: func.isRequired\n};\n","/* eslint-disable no-confusing-arrow */\n/* eslint-disable max-lines */\n/* eslint-disable max-len */\nimport Styled from 'styled-components';\n\nconst greenColor = '#78BB07';\nconst greenColorDarken = '#6da70c';\nconst blueColor = '#0099FF';\nconst blueColorDarken = '#0a7cc9';\nconst navyColor = '#091141';\nconst agentColor = 'rgba(121, 35, 221, 1)';\n\nconst animMixin = `\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n transform: translateX(-100%);\n background-image: linear-gradient(\n 90deg,\n rgba(255, 255, 255, 0) 0,\n rgba(255, 255, 255, 0.2) 20%,\n rgba(255, 255, 255, 0.5) 60%,\n rgba(255, 255, 255, 0)\n );\n animation: shimmer 2s infinite;\n z-index: 0;\n`;\n\nexport const ScTemplates = Styled.div`\n width: ${({ liteMode, slider }) => (liteMode || slider) ? '100%' : 'calc(100% - 320px)'};\n @media screen and (max-width: 768px) {\n & {\n width: 100%;\n }\n }\n\n .boxes {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n flex-wrap: wrap;\n margin: 0 -20px 20px -20px;\n min-height: 200px;\n @media screen and (max-width: 768px) {\n & {\n margin: 0 -10px;\n }\n }\n @media screen and (max-width: 480px) {\n & {\n /* flex-direction: column; */\n margin: 0;\n /* padding: 0 20px; */\n padding: 0;\n min-width: 240px;\n }\n }\n }\n\n .resultWrapper {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n\n .resultTitle {\n font-size: 24px;\n font-weight: 400;\n line-height: 1.55;\n color: #0a224c;\n flex-grow: 1;\n padding-right: 16px;\n word-break: break-word;\n }\n @media screen and (max-width: 768px) {\n & {\n margin-bottom: 20px;\n .resultTitle {\n font-size: 18px;\n }\n }\n }\n }\n\n .noResult {\n max-width: 720px;\n width: 100%;\n margin: 100px auto;\n display: block;\n text-align: center;\n color: ${navyColor};\n svg {\n width: 38px;\n height: 48px;\n margin-left: auto;\n margin-right: auto;\n }\n h4 {\n font-size: 22px;\n font-weight: normal;\n margin: 20px 0;\n }\n p {\n font-size: 20px;\n line-height: 1.4;\n max-width: 450px;\n text-align: center;\n margin: 0 auto 30px auto;\n }\n }\n // result\n\n .clearResult {\n border: 0;\n flex-shrink: 1;\n font-size: 16px;\n color: #757a88;\n background-color: #f0f3f7;\n border-radius: 4px;\n font-weight: 400;\n padding: 16px 48px 16px 16px;\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 17 16' width='16' height='16'%3E%3Cpath d='M9.514 8l6.438-6.408a.933.933 0 10-1.32-1.319L8.225 6.711 1.817.273a.933.933 0 00-1.319 1.32L6.936 8.03.498 14.408a.933.933 0 101.32 1.319l6.437-6.438 6.377 6.438a.933.933 0 001.32-1.32L9.514 8z' fill='%23A8AAB5' fill-rule='evenodd'/%3E%3C/svg%3E\");\n background-repeat: no-repeat;\n background-position: calc(100% - 16px);\n white-space: nowrap;\n word-break: keep-all;\n text-decoration: none;\n transition: 0.3s;\n\n &:hover {\n color: #696e7a;\n background-color: #e9eef3;\n }\n\n html[dir=\"rtl\"] & {\n padding: 16px 16px 16px 48px;\n background-position: 16px;\n }\n @media screen and (max-width: 768px) {\n background-size: 12px;\n padding: 10px 40px 10px 10px;\n }\n }\n\n .item {\n & {\n .more-templates-area & {\n width: 100% !important;\n max-width: unset !important;\n padding: 0 !important;\n .category-box {\n padding: 0 !important;\n }\n }\n }\n &:not(.js-new-card) {\n position: relative;\n overflow: hidden;\n width: 33.333%;\n margin-top: 16px;\n margin-bottom: 48px;\n padding: 0 20px;\n @media screen and (max-width: 1080px) {\n & {\n width: 50%;\n }\n }\n\n @media screen and (max-width: 768px) {\n & {\n margin-top: 0;\n padding: 0 10px;\n }\n }\n @media screen and (max-width: 480px) {\n & {\n width: 100%;\n padding: 0;\n margin: 32px 0;\n &:first-child {\n margin-top: 0;\n }\n }\n } \n }\n &.agent-item {\n margin-top: 32px;\n margin-bottom: 32px;\n }\n\n h3,\n .useTemplate,\n .previewCta {\n &:before {\n content: '';\n position: absolute;\n width: 100%;\n height: 100%;\n left: 0;\n top: 0;\n overflow: hidden;\n border-radius: 4px;\n background-color: #f4f5ff;\n transition: all .3s ease;\n }\n &:after {\n content: '';\n ${animMixin}\n }\n }\n\n h3 {\n position: relative;\n font-size: 18px;\n font-weight: 500;\n line-height: 24px;\n min-height: 24px;\n margin: 16px 0 8px;\n padding: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n transition: all .3s ease;\n &:before,\n &:after {\n width: 50%;\n }\n span {\n color: ${navyColor};\n transition: opacity, filter .3s ease;\n opacity: 0;\n }\n @media screen and (max-width: 768px) {\n & {\n font-size: 14px;\n line-height: 1.4;\n }\n }\n }\n\n .useTemplate,\n .previewCta {\n pointer-events: none;\n cursor: pointer;\n position: relative;\n border-radius: 4px;\n background: none;\n margin: 8px auto;\n display: block;\n padding: 12px 0;\n width: 100%;\n font-size: 17px;\n font-weight: 500;\n text-decoration: none;\n text-align: center;\n transition: all .3s ease;\n border: 1px solid transparent;\n span {\n transition: opacity, filter .3s ease;\n opacity: 0;\n }\n\n @media screen and (max-width: 768px) {\n & {\n font-size: 14px;\n padding: 10px 0;\n }\n }\n }\n .useTemplate {\n span {\n color: ${greenColor};\n }\n }\n .previewCta {\n span {\n color: ${blueColor};\n }\n display: ${({ isDesktop }) => isDesktop ? 'none' : 'block'};\n }\n\n .image {\n cursor: pointer;\n width: 100%;\n height: auto;\n /* max-height: 300px; */\n position: relative;\n border: 1px solid #C8CEED;\n border-radius: 4px;\n overflow: hidden;\n display: flex;\n justify-content: center;\n &:after {\n content: \"\";\n background: #f4f5ff url(\"data:image/svg+xml,%3Csvg fill='none' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 73 80'%3E%3Cpath d='M19.93 76.03c1.5 1.46.44 3.97-1.7 3.97H4.8A4.74 4.74 0 0 1 0 75.34v-13c0-2.09 2.59-3.12 4.1-1.66l15.83 15.35ZM40.9 77.04a10.06 10.06 0 0 1 0-14.3L55.26 48.5a10.22 10.22 0 0 1 14.39 0 10.06 10.06 0 0 1 0 14.3L55.3 77.03a10.22 10.22 0 0 1-14.4 0ZM3.03 41.24a10.06 10.06 0 0 1 0-14.29L27.16 2.96a10.22 10.22 0 0 1 14.39 0 10.06 10.06 0 0 1 0 14.3L17.4 41.23a10.22 10.22 0 0 1-14.38 0ZM22.75 58.34a10.06 10.06 0 0 1 0-14.3l32.6-32.38a10.22 10.22 0 0 1 14.4 0 10.06 10.06 0 0 1 0 14.29l-32.6 32.4a10.22 10.22 0 0 1-14.4 0Z' fill='%23E3E5F5'/%3E%3C/svg%3E\") no-repeat center;\n background-size: 40%;\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: -1;\n }\n .aspect-ratio {\n width: 100%;\n height: 100%;\n }\n img {\n position: relative;\n z-index: 1;\n display: block;\n width: 100%;\n height: auto;\n transition: all .3s ease;\n opacity: 0;\n }\n .animBg {\n ${animMixin}\n }\n .template-hint {\n position: absolute;\n pointer-events: none;\n top: 50%;\n background-color: rgba(10, 21, 81, 0.75);\n border-radius: 40px;\n color: #fff;\n font-size: 16px;\n z-index: 3;\n padding: 11px 16px;\n display: flex;\n align-items: center;\n justify-content: center;\n column-gap: 10px;\n opacity: 0;\n transition: all .3s linear;\n }\n }\n &.image-loaded {\n .image:hover {\n .template-hint {\n transform: translateY(-20px);\n opacity: 1;\n }\n }\n }\n\n &.approval-item,\n &.table-item {\n .image {\n &:before {\n content: \"\";\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n transition: all 0.2s;\n /* background: ${navyColor}; */\n background-color: rgba(9, 17, 65, 0);\n /* opacity: 0; */\n z-index: 2;\n display: ${({ isDesktop }) => isDesktop ? 'block' : 'none'};\n }\n @media screen and (max-width: 550px) {\n & {\n aspect-ratio: 16/18.5;\n }\n }\n @media screen and (max-width: 480px) {\n & {\n aspect-ratio: unset;\n }\n }\n }\n }\n &.pdf-item,\n &.page-item {\n .image {\n max-height: unset;\n border-radius: 8px;\n display: flex;\n justify-content: center;\n .aspect-ratio {\n position: relative;\n width: 100%;\n height: auto;\n pointer-events: none;\n display: block;\n }\n img {\n z-index: 0;\n position: absolute;\n top: 0;\n left: 0;\n }\n .shadows {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n &:before,\n &:after {\n content: \"\";\n position: absolute;\n left: 0;\n pointer-events: none;\n width: 100%;\n height: 3rem;\n transition: all .3s linear;\n }\n &:before {\n z-index: 2;\n opacity: 0;\n top: 0;\n background: linear-gradient(0, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.1) 100%);\n }\n &:after {\n content: \"\";\n z-index: 1;\n bottom: 0;\n background: linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.1) 100%);\n }\n }\n \n &:hover {\n .shadows {\n &:before {\n opacity: 1;\n }\n }\n }\n }\n &.image-loaded {\n .image {\n img {\n transition: all 1.2s cubic-bezier(.68,-.15,.265,1.2);\n }\n }\n }\n }\n &.app-item {\n .image {\n padding-top: 100%;\n max-height: 630px;\n border: 0;\n transition: border-color .3s ease;\n border-bottom: 1px solid transparent;\n img {\n position: absolute;\n top: 0;\n z-index: 2;\n transition: all 0.2s;\n margin-top: 28px;\n }\n .animBg {\n z-index: 2\n }\n }\n &.image-loaded {\n .image {\n img {\n transition: all 1.2s cubic-bezier(.68,-.15,.265,1.2);\n }\n }\n }\n .phone-notch {\n left: 6px;\n width: calc(100% - 12px);\n border-top-left-radius: 12px;\n border-top-right-radius: 12px;\n height: 28px;\n background-color: transparent;\n position: absolute;\n color: #FFF;\n top: 2.8%;\n z-index: 3;\n padding: 0 6px;\n font-size: 9px;\n font-weight: 700;\n display: flex;\n justify-content: space-between;\n align-items: center;\n opacity: 0;\n white-space: nowrap;\n transition: all .3s linear;\n .l {\n display: flex;\n justify-content: center;\n align-items: center;\n flex: 0 0 20%;\n }\n .r {\n display: flex;\n justify-content: center;\n align-items: center;\n flex: 0 0 20%;\n\n .icons {\n width: 38px;\n height: 8px;\n background-size: 100%;\n background-image: url(\"data:image/svg+xml,%3Csvg fill='none' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 36 8'%3E%3Cpath d='M12 0h2v8h-2V0ZM10 2H8v6h2V2ZM6 4H4v4h2V4ZM0 6h2v2H0V6ZM20 2h12v4H20V2Z' fill='%23fff'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M20 0a2 2 0 0 0-2 2v4c0 1.1.9 2 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H20Zm12 1H20a1 1 0 0 0-1 1v4a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1Z' fill='%23fff'/%3E%3Cpath d='M35 2.5a.5.5 0 0 1 1 0v3a.5.5 0 0 1-1 0v-3Z' fill='%23fff'/%3E%3C/svg%3E\");\n }\n }\n }\n .phone-wrapper {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n z-index: 3;\n path {\n shape-rendering: auto;\n &.splash-path {\n opacity: 0;\n transition: opacity .3s linear;\n }\n &.white-path {\n stroke: white;\n stroke-width: 6px;\n stroke-linecap: round;\n stroke-linejoin: round;\n }\n &.inner-border {\n stroke: #c8ceed;\n stroke-width: .5px;\n stroke-linecap: round;\n stroke-linejoin: round;\n }\n }\n }\n }\n &.approval-item {\n width: 50%;\n padding: 20px;\n margin: 0;\n .bgColorItem {\n position: absolute;\n z-index: 0;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n opacity: 0;\n transition: opacity .3s linear;\n }\n .image {\n min-height: unset;\n max-height: unset;\n img {\n padding: 8px;\n &.approval-main {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: auto;\n z-index: 1;\n }\n &.approval-blank {\n position: relative;\n width: 100%;\n height: auto;\n z-index: 0;\n }\n }\n @media screen and (max-width: 550px) {\n & {\n aspect-ratio: unset;\n }\n }\n }\n @media screen and (max-width: 480px) {\n & {\n width: 100%;\n padding: 30px 0;\n }\n }\n }\n &.table-item {\n .bgColorItem {\n position: absolute;\n z-index: 0;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n opacity: 0;\n transition: opacity .3s linear;\n }\n .image {\n min-height: 0;\n img {\n padding-left: 12px;\n padding-top: 12px;\n filter: drop-shadow(4px 2px 4px rgba(0, 0, 0, 0.25));\n &.table-main {\n position: absolute;\n right: 0;\n bottom: 0;\n width: 100%;\n height: auto;\n z-index: 1;\n }\n &.table-blank {\n position: relative;\n width: 100%;\n height: auto;\n z-index: 0;\n }\n }\n @media screen and (max-width: 550px) {\n & {\n aspect-ratio: unset;\n }\n }\n }\n }\n &.agent-item {\n .image {\n min-height: 0;\n border: 0;\n border-radius: 8px;\n img {\n &.agent-main {\n position: absolute;\n right: 0;\n bottom: 0;\n width: 100%;\n height: auto;\n z-index: 1;\n }\n &.agent-blank {\n position: relative;\n width: 100%;\n height: auto;\n z-index: 0;\n }\n }\n @media screen and (max-width: 550px) {\n & {\n aspect-ratio: unset;\n }\n }\n }\n }\n &.page-item {\n width: 50%;\n .more-templates-area & {\n width: 33.333%;\n }\n .image {\n min-height: unset;\n max-height: unset;\n @media screen and (max-width: 550px) {\n & {\n aspect-ratio: unset;\n }\n }\n }\n @media screen and (max-width: 480px) {\n & {\n width: 100% !important;\n }\n }\n }\n &.image-loaded {\n h3 {\n cursor: pointer;\n }\n h3 span,\n .useTemplate span,\n .previewCta span,\n .image img {\n opacity: 1;\n }\n .animBg,\n h3:after,\n .useTemplate:after,\n .previewCta:after {\n display: none;\n }\n h3:before,\n .useTemplate:before,\n .previewCta:before {\n opacity: 0;\n z-index: -1;\n }\n .useTemplate {\n pointer-events: unset;\n border: 1px solid ${greenColor};\n &:hover {\n background: ${greenColorDarken};\n border-color: ${greenColorDarken};\n span {\n color: #FFF;\n }\n }\n &.useAgent {\n border-color: ${agentColor};\n span {\n color: ${agentColor};\n }\n &:hover {\n background: ${agentColor};\n border-color: ${agentColor};\n span {\n color: #fff;\n }\n }\n }\n }\n .previewCta {\n pointer-events: unset;\n border: 1px solid ${blueColor};\n &:hover {\n background: ${blueColorDarken};\n border-color: ${blueColorDarken};\n span {\n color: #FFF;\n }\n }\n }\n }\n &.approval-item.image-loaded,\n &.table-item.image-loaded {\n .image {\n &:hover {\n &:before {\n /* opacity: 0.8; */\n background-color: rgba(9, 17, 65, .8);\n }\n }\n }\n .bgColorItem {\n opacity: 1;\n }\n }\n &.app-item.image-loaded {\n .phone-notch,\n .phone-wrapper path.splash-path {\n opacity: 1;\n }\n }\n &.approval-item.image-loaded {\n .image {\n &:hover {\n img {\n transform: scale(1.125);\n @media screen and (max-width: 480px) {\n transform: none;\n }\n }\n }\n }\n }\n &.table-item.image-loaded {\n .image {\n &:hover {\n img {\n transform: scale(1.125);\n @media screen and (max-width: 480px) {\n transform: none;\n }\n }\n }\n }\n }\n }\n .loadMore {\n text-align: center;\n width: 100%;\n margin-top: 32px;\n .loadMoreCta {\n cursor: pointer;\n padding: 8px 48px;\n border-radius: 8px;\n background: ${blueColor};\n font-weight: 400;\n color: #fff;\n font-size: 20px;\n line-height: 48px;\n margin: 0;\n border: 1px solid transparent;\n transition: all .2s;\n\n &:hover {\n background: ${blueColorDarken};\n color: #fff;\n }\n\n @media screen and (max-width: 768px) {\n & {\n padding: 12px 24px;\n border-radius: 4px;\n margin-top: 0;\n font-size: 16px;\n line-height: 1;\n }\n }\n }\n }\n\n .categoryBox {\n cursor: pointer;\n background-color: #f9f9f9;\n padding: 10px;\n margin: .5rem;\n border-radius: 4px;\n transition: background-color, box-shadow 0.25s ease;\n min-height: 140px;\n width: calc(33.333% - 1rem);\n @media screen and (max-width: 1024px) {\n & {\n width: calc(50% - 1rem);\n }\n }\n &:hover {\n box-shadow: 0 2px 30px rgba(0, 0, 0, 0.15);\n background-color: #fff;\n }\n .title {\n font-size: 18px;\n font-weight: 500;\n line-height: 24px;\n color: ${navyColor};\n margin: 16px 0 8px;\n padding: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .desc {\n display: -webkit-box;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n min-height: 70px;\n max-height: 70px;\n overflow: hidden;\n padding: 0;\n font-weight: 400;\n color: #343C6A;\n line-height: 1.6;\n margin: 0 0 9px;\n font-size: 15px;\n }\n .count {\n color: ${navyColor};\n font-size: 14px;\n margin: 6px 0 0;\n display: flex;\n align-items: center;\n svg {\n margin-inline-end: 5px;\n }\n }\n }\n .categoryHeader {\n width: 100%;\n display: flex;\n flex-wrap: wrap;\n .breadcrumb {\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n flex-wrap: wrap;\n\n .backButton {\n width: 32px;\n height: 32px;\n background: #E6EBF2;\n border: 0;\n outline: none;\n border-radius: 50%;\n position: relative;\n margin-inline-end: 10px;\n color: #0A1551;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n span {\n display: inline-flex;\n &:after {\n content: \"/\";\n padding: 0 5px;\n margin: 0 5px;\n }\n &:last-child {\n &:after {\n display: none;;\n }\n }\n }\n }\n .heading {\n color: $navyColor;\n font-size: 32px;\n line-height: 40px;\n font-weight: 600;\n margin: 10px 0 0 0;\n width: 100%;\n }\n .subheading {\n color: #2B3245;\n font-size: 12px;\n margin: 6px 0 0;\n font-weight: 100;\n display: flex;\n align-items: center;\n svg {\n margin-inline-end: 5px;\n }\n }\n .subBigHeading {\n color: $navyColor;\n line-height: 1.5;\n font-size: 16px;\n margin: 20px 0 10px 0;\n }\n @media screen and (max-width: 768px) {\n & {\n margin-bottom: 20px;\n }\n }\n }\n\n .see-more {\n width: 100%;\n display: flex;\n flex-direction: row;\n justify-content:center;\n align-items: center;\n padding-top: 16px;\n\n &-link {\n display: flex;\n flex-direction: column;\n align-items: center;\n text-decoration: none;\n width: 100%;\n border: 0;\n outline: none;\n background-color: transparent;\n\n .illustration {\n display: block;\n position: relative;\n width: 100%;\n min-height: 240px;\n max-height: 323.98px;\n height: 100vh;\n overflow: hidden;\n border-radius: 4px;\n border: solid 1px #C3CAD8;\n background: #E6EBF2;\n transition: border .2s ease-in-out, background .2s ease-in-out;\n\n &-content{\n display: block;\n max-width: 312px;\n width: 100%;\n height: 100%;\n position: relative;\n margin: 0 auto;\n opacity: 1;\n transition: opacity .2s;\n @media screen and (min-width: 1200px) and (max-width: 1599px) {\n transform: scale(.8);\n }\n @media screen and (min-width: 992px) and (max-width: 1199px) {\n transform: scale(.5);\n }\n\n @media screen and (max-width: 991px) and (min-width: 851px){\n transform: scale(.82);\n }\n\n @media screen and (max-width: 850px) and (min-width: 769px){\n transform: scale(.7);\n }\n\n .temp {\n position: absolute;\n transform-origin: center;\n width: 160px;\n height: 168px;\n transition: transform .2s ease-in-out, background .2s ease-in-out, opacity .2s ease-in-out;\n background-size: 160px 168px;\n background-repeat: no-repeat;\n background-position: center center;\n top: calc(50% - 84px);\n left: calc(50% - 80px);\n }\n\n .t1 {\n background-image: url(\"data:image/svg+xml,%3Csvg width='160' height='168' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Crect stroke='%23C3CAD8' stroke-width='2' fill='%23FFF' x='1' y='1' width='158' height='166' rx='4'/%3E%3Crect fill='%238894AB' x='16' y='16' width='64' height='4' rx='2'/%3E%3Crect fill='%238894AB' x='16' y='54' width='48' height='4' rx='2'/%3E%3Crect fill='%23D4DAE5' x='30' y='74' width='20' height='4' rx='2'/%3E%3Crect fill='%23D4DAE5' x='77' y='74' width='20' height='4' rx='2'/%3E%3Crect fill='%23D4DAE5' x='124' y='74' width='20' height='4' rx='2'/%3E%3Crect fill='%238894AB' x='16' y='92' width='64' height='4' rx='2'/%3E%3Crect stroke='%23D4DAE5' stroke-width='2' x='17' y='29' width='126' height='14' rx='2'/%3E%3Crect stroke='%23D4DAE5' stroke-width='2' x='17' y='71' width='10' height='10' rx='5'/%3E%3Crect stroke='%238894AB' stroke-width='4' x='65' y='72' width='8' height='8' rx='4'/%3E%3Crect stroke='%23D4DAE5' stroke-width='2' x='111' y='71' width='10' height='10' rx='5'/%3E%3Crect stroke='%23D4DAE5' stroke-width='2' x='17' y='109' width='126' height='14' rx='2'/%3E%3Crect fill='%238894AB' x='104' y='136' width='40' height='16' rx='2'/%3E%3C/g%3E%3C/svg%3E\");\n transform: scale(.8);\n }\n .t2 {\n background-image: url(\"data:image/svg+xml,%3Csvg width='160' height='168' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Crect stroke='%23C71D38' stroke-width='2' fill='%23FFF' x='1' y='1' width='158' height='166' rx='4'/%3E%3Crect fill='%2357647E' x='16' y='16' width='64' height='4' rx='2'/%3E%3Crect fill='%2357647E' x='16' y='54' width='48' height='4' rx='2'/%3E%3Crect fill='%23C3CAD8' x='30' y='74' width='20' height='4' rx='2'/%3E%3Crect fill='%23C3CAD8' x='77' y='74' width='20' height='4' rx='2'/%3E%3Crect fill='%23C3CAD8' x='124' y='74' width='20' height='4' rx='2'/%3E%3Crect fill='%2357647E' x='16' y='92' width='64' height='4' rx='2'/%3E%3Crect stroke='%23C3CAD8' stroke-width='2' x='17' y='29' width='126' height='14' rx='2'/%3E%3Crect stroke='%23C3CAD8' stroke-width='2' x='17' y='71' width='10' height='10' rx='5'/%3E%3Crect stroke='%23C71D38' stroke-width='4' x='65' y='72' width='8' height='8' rx='4'/%3E%3Crect stroke='%23C3CAD8' stroke-width='2' x='111' y='71' width='10' height='10' rx='5'/%3E%3Crect stroke='%23C3CAD8' stroke-width='2' x='17' y='109' width='126' height='14' rx='2'/%3E%3Crect fill='%23C71D38' x='104' y='136' width='40' height='16' rx='2'/%3E%3C/g%3E%3C/svg%3E\");\n opacity: 0;\n transform: scale(.8);\n }\n .t3 {\n background-image: url(\"data:image/svg+xml,%3Csvg width='160' height='168' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Crect stroke='%23FBAA32' stroke-width='2' fill='%23FFF' x='1' y='1' width='158' height='166' rx='4'/%3E%3Crect fill='%2357647E' x='16' y='16' width='64' height='4' rx='2'/%3E%3Crect fill='%2357647E' x='16' y='54' width='48' height='4' rx='2'/%3E%3Crect fill='%23C3CAD8' x='30' y='74' width='20' height='4' rx='2'/%3E%3Crect fill='%23C3CAD8' x='77' y='74' width='20' height='4' rx='2'/%3E%3Crect fill='%23C3CAD8' x='124' y='74' width='20' height='4' rx='2'/%3E%3Crect fill='%2357647E' x='16' y='92' width='64' height='4' rx='2'/%3E%3Crect stroke='%23C3CAD8' stroke-width='2' x='17' y='29' width='126' height='14' rx='2'/%3E%3Crect stroke='%23C3CAD8' stroke-width='2' x='17' y='71' width='10' height='10' rx='5'/%3E%3Crect stroke='%23FBAA32' stroke-width='4' x='65' y='72' width='8' height='8' rx='4'/%3E%3Crect stroke='%23C3CAD8' stroke-width='2' x='111' y='71' width='10' height='10' rx='5'/%3E%3Crect stroke='%23C3CAD8' stroke-width='2' x='17' y='109' width='126' height='14' rx='2'/%3E%3Crect fill='%23FBAA32' x='104' y='136' width='40' height='16' rx='2'/%3E%3C/g%3E%3C/svg%3E\");\n opacity: 0;\n transform: scale(.8);\n }\n\n .gimmicks,\n .gimmicks i {\n position: absolute;\n width: 16px;\n height: 16px;\n top: calc(50% - 8px);\n left: calc(50% - 8px);\n border: none;\n padding: 0;\n }\n\n .gimmicks i {\n display: block;\n transform-origin: center;\n background-size: 16px 16px;\n background-repeat: no-repeat;\n background-position: center center;\n opacity: 0;\n transform: scale(.5);\n transition: transform .2s ease-in-out, opacity .2s ease-in-out;\n }\n }\n .template-loader{\n transition: opacity .2s;\n opacity: 0;\n }\n }\n span {\n display: block;\n font-weight: 700;\n font-size: 16px;\n line-height: 24px;\n margin: 16px 0 0;\n text-align: center;\n color: $nbText;\n transition: color .2s ease-in-out;\n }\n &.isTouch,\n &:hover {\n span {\n color: #2E69FF;\n }\n .illustration {\n border: solid 1px #C3CAD8;\n background: #F8FBFF;\n &-content{\n .t1 {\n background-image: url(\"data:image/svg+xml,%3Csvg width='160' height='168' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Crect stroke='%232E69FF' stroke-width='2' fill='%23FFF' x='1' y='1' width='158' height='166' rx='4'/%3E%3Crect fill='%2357647E' x='16' y='16' width='64' height='4' rx='2'/%3E%3Crect fill='%2357647E' x='16' y='54' width='48' height='4' rx='2'/%3E%3Crect fill='%23C3CAD8' x='30' y='74' width='20' height='4' rx='2'/%3E%3Crect fill='%23C3CAD8' x='77' y='74' width='20' height='4' rx='2'/%3E%3Crect fill='%23C3CAD8' x='124' y='74' width='20' height='4' rx='2'/%3E%3Crect fill='%2357647E' x='16' y='92' width='64' height='4' rx='2'/%3E%3Crect stroke='%23C3CAD8' stroke-width='2' x='17' y='29' width='126' height='14' rx='2'/%3E%3Crect stroke='%23C3CAD8' stroke-width='2' x='17' y='71' width='10' height='10' rx='5'/%3E%3Crect stroke='%232E69FF' stroke-width='4' x='65' y='72' width='8' height='8' rx='4'/%3E%3Crect stroke='%23C3CAD8' stroke-width='2' x='111' y='71' width='10' height='10' rx='5'/%3E%3Crect stroke='%23C3CAD8' stroke-width='2' x='17' y='109' width='126' height='14' rx='2'/%3E%3Crect fill='%232E69FF' x='104' y='136' width='40' height='16' rx='2'/%3E%3C/g%3E%3C/svg%3E\");\n transform: scale(1);\n }\n .t2 {\n opacity: 1;\n transform: scale(1) rotate(-16deg) translateX(-40px) translateY(16px);\n }\n\n .t3 {\n opacity: 1;\n transform: scale(1) rotate(16deg) translateX(40px) translateY(-16px);\n }\n .gimmicks {\n i {\n opacity: 1;\n }\n .g1 {\n transform: translateX(-124px) translateY(-56px) scale(.5);\n background-image: url(\"data:image/svg+xml,%3Csvg width='16' height='16' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M10 2v4h4c1.1046 0 2 .8954 2 2s-.8954 2-2 2h-4v4c0 1.1046-.8954 2-2 2s-2-.8954-2-2V9.999l-4 .0007c-1.1044.0002-1.9998-.895-2-1.9994V8c0-1.1046.8954-2.0001 2-2.0003l4-.0007V2c0-1.1046.8954-2 2-2s2 .8954 2 2z' fill='%23732EFF' fill-rule='evenodd'/%3E%3C/svg%3E\");\n }\n .g2 {\n transform: translateX(-98px) translateY(-88px);\n background-image: url(\"data:image/svg+xml,%3Csvg width='16' height='16' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M8 0c4.4183 0 8 3.5817 8 8s-3.5817 8-8 8-8-3.5817-8-8 3.5817-8 8-8zm0 4C5.7909 4 4 5.7909 4 8c0 2.2091 1.7909 4 4 4 2.2091 0 4-1.7909 4-4 0-2.2091-1.7909-4-4-4z' fill='%2301BD6F' fill-rule='nonzero'/%3E%3C/svg%3E\");\n }\n .g3 {\n transform: translateX(-34px) translateY(-100px);\n background-image: url(\"data:image/svg+xml,%3Csvg width='16' height='16' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M8 10c.5128 0 .9355.386.9933.8834L9 11v3c0 .5523-.4477 1-1 1-.5128 0-.9355-.386-.9933-.8834L7 14v-3c0-.5523.4477-1 1-1zm-1.4142-.5858c.3605.3605.3882.9277.0832 1.32l-.0832.0942-2.1213 2.1213c-.3906.3906-1.0237.3906-1.4142 0-.3605-.3604-.3883-.9277-.0832-1.32l.0832-.0942 2.1213-2.1213c.3905-.3905 1.0237-.3905 1.4142 0zm4.1484-.0832l.0942.0832 2.1213 2.1213c.3906.3906.3906 1.0237 0 1.4142-.3604.3605-.9277.3883-1.32.0832l-.0942-.0832-2.1213-2.1213c-.3905-.3905-.3905-1.0237 0-1.4142.3605-.3605.9277-.3882 1.32-.0832zM14 7c.5523 0 1 .4477 1 1 0 .5128-.386.9355-.8834.9933L14 9h-3c-.5523 0-1-.4477-1-1 0-.5128.386-.9355.8834-.9933L11 7h3zM5 7c.5523 0 1 .4477 1 1 0 .5128-.386.9355-.8834.9933L5 9H2c-.5523 0-1-.4477-1-1 0-.5128.386-.9355.8834-.9933L2 7h3zm7.9497-3.9497c.3605.3604.3883.9277.0832 1.32l-.0832.0942-2.1213 2.1213c-.3905.3905-1.0237.3905-1.4142 0-.3605-.3605-.3882-.9277-.0832-1.32l.0832-.0942 2.1213-2.1213c.3906-.3906 1.0237-.3906 1.4142 0zM4.3703 2.967l.0942.0832 2.1213 2.1213c.3905.3905.3905 1.0237 0 1.4142-.3605.3605-.9277.3882-1.32.0832l-.0942-.0832-2.1213-2.1213c-.3906-.3906-.3906-1.0237 0-1.4142.3604-.3605.9277-.3883 1.32-.0832zM8 1c.5128 0 .9355.386.9933.8834L9 2v3c0 .5523-.4477 1-1 1-.5128 0-.9355-.386-.9933-.8834L7 5V2c0-.5523.4477-1 1-1z' fill='%23FF6038' fill-rule='nonzero'/%3E%3C/svg%3E\");\n }\n .g4 {\n transform: translateX(-8px) translateY(-124px);\n background-image: url(\"data:image/svg+xml,%3Csvg width='16' height='16' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M14.0031 5.1861L11.0953 8.094l3.283 3.283c.829.829.829 2.1728 0 3.0016-.8288.829-2.1727.829-3.0016 0l-3.283-3.283-2.9077 2.9078c-.8807.8807-2.3086.8807-3.1892 0-.8807-.8806-.8807-2.3085 0-3.1892l2.9085-2.9085-3.2835-3.2825C.8365 3.8381.795 2.591 1.4974 1.757l.1242-.1353c.8289-.8289 2.1728-.829 3.0018-.0002L7.9069 4.904l2.907-2.907c.8807-.8807 2.3086-.8807 3.1892 0 .8807.8806.8807 2.3085 0 3.1891z' fill='%2355D88B' fill-rule='evenodd'/%3E%3C/svg%3E\");\n }\n .g5 {\n transform: translateX(88px) translateY(-100px) scale(.5);\n background-image: url(\"data:image/svg+xml,%3Csvg width='16' height='16' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M8 0c4.4183 0 8 3.5817 8 8s-3.5817 8-8 8-8-3.5817-8-8 3.5817-8 8-8z' fill='%23504CFF' fill-rule='nonzero'/%3E%3C/svg%3E\");\n }\n .g6 {\n transform: translateX(104px) translateY(-128px);\n background-image: url(\"data:image/svg+xml,%3Csvg width='16' height='16' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M10 2v4h4c1.1046 0 2 .8954 2 2s-.8954 2-2 2h-4v4c0 1.1046-.8954 2-2 2s-2-.8954-2-2V9.999l-4 .0007c-1.1044.0002-1.9998-.895-2-1.9994V8c0-1.1046.8954-2.0001 2-2.0003l4-.0007V2c0-1.1046.8954-2 2-2s2 .8954 2 2z' fill='%237099FF' fill-rule='evenodd'/%3E%3C/svg%3E\");\n }\n .g7 {\n transform: translateX(136px) translateY(-96px);\n background-image: url(\"data:image/svg+xml,%3Csvg width='16' height='16' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M8 10c.5128 0 .9355.386.9933.8834L9 11v3c0 .5523-.4477 1-1 1-.5128 0-.9355-.386-.9933-.8834L7 14v-3c0-.5523.4477-1 1-1zm-1.4142-.5858c.3605.3605.3882.9277.0832 1.32l-.0832.0942-2.1213 2.1213c-.3906.3906-1.0237.3906-1.4142 0-.3605-.3604-.3883-.9277-.0832-1.32l.0832-.0942 2.1213-2.1213c.3905-.3905 1.0237-.3905 1.4142 0zm4.1484-.0832l.0942.0832 2.1213 2.1213c.3906.3906.3906 1.0237 0 1.4142-.3604.3605-.9277.3883-1.32.0832l-.0942-.0832-2.1213-2.1213c-.3905-.3905-.3905-1.0237 0-1.4142.3605-.3605.9277-.3882 1.32-.0832zM14 7c.5523 0 1 .4477 1 1 0 .5128-.386.9355-.8834.9933L14 9h-3c-.5523 0-1-.4477-1-1 0-.5128.386-.9355.8834-.9933L11 7h3zM5 7c.5523 0 1 .4477 1 1 0 .5128-.386.9355-.8834.9933L5 9H2c-.5523 0-1-.4477-1-1 0-.5128.386-.9355.8834-.9933L2 7h3zm7.9497-3.9497c.3605.3604.3883.9277.0832 1.32l-.0832.0942-2.1213 2.1213c-.3905.3905-1.0237.3905-1.4142 0-.3605-.3605-.3882-.9277-.0832-1.32l.0832-.0942 2.1213-2.1213c.3906-.3906 1.0237-.3906 1.4142 0zM4.3703 2.967l.0942.0832 2.1213 2.1213c.3905.3905.3905 1.0237 0 1.4142-.3605.3605-.9277.3882-1.32.0832l-.0942-.0832-2.1213-2.1213c-.3906-.3906-.3906-1.0237 0-1.4142.3604-.3605.9277-.3883 1.32-.0832zM8 1c.5128 0 .9355.386.9933.8834L9 2v3c0 .5523-.4477 1-1 1-.5128 0-.9355-.386-.9933-.8834L7 5V2c0-.5523.4477-1 1-1z' fill='%23FBAA32' fill-rule='nonzero'/%3E%3C/svg%3E\");\n }\n .g8 {\n transform: translateX(-116px) translateY(116px);\n background-image: url(\"data:image/svg+xml,%3Csvg width='16' height='16' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M14.0031 5.1861L11.0953 8.094l3.283 3.283c.829.829.829 2.1728 0 3.0016-.8288.829-2.1727.829-3.0016 0l-3.283-3.283-2.9077 2.9078c-.8807.8807-2.3086.8807-3.1892 0-.8807-.8806-.8807-2.3085 0-3.1892l2.9085-2.9085-3.2835-3.2825C.8365 3.8381.795 2.591 1.4974 1.757l.1242-.1353c.8289-.8289 2.1728-.829 3.0018-.0002L7.9069 4.904l2.907-2.907c.8807-.8807 2.3086-.8807 3.1892 0 .8807.8806.8807 2.3085 0 3.1891z' fill='%232E69FF' fill-rule='evenodd'/%3E%3C/svg%3E\");\n }\n .g9 {\n transform: translateX(36px) translateY(104px);\n background-image: url(\"data:image/svg+xml,%3Csvg width='16' height='16' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M8 10c.5128 0 .9355.386.9933.8834L9 11v3c0 .5523-.4477 1-1 1-.5128 0-.9355-.386-.9933-.8834L7 14v-3c0-.5523.4477-1 1-1zm-1.4142-.5858c.3605.3605.3882.9277.0832 1.32l-.0832.0942-2.1213 2.1213c-.3906.3906-1.0237.3906-1.4142 0-.3605-.3604-.3883-.9277-.0832-1.32l.0832-.0942 2.1213-2.1213c.3905-.3905 1.0237-.3905 1.4142 0zm4.1484-.0832l.0942.0832 2.1213 2.1213c.3906.3906.3906 1.0237 0 1.4142-.3604.3605-.9277.3883-1.32.0832l-.0942-.0832-2.1213-2.1213c-.3905-.3905-.3905-1.0237 0-1.4142.3605-.3605.9277-.3882 1.32-.0832zM14 7c.5523 0 1 .4477 1 1 0 .5128-.386.9355-.8834.9933L14 9h-3c-.5523 0-1-.4477-1-1 0-.5128.386-.9355.8834-.9933L11 7h3zM5 7c.5523 0 1 .4477 1 1 0 .5128-.386.9355-.8834.9933L5 9H2c-.5523 0-1-.4477-1-1 0-.5128.386-.9355.8834-.9933L2 7h3zm7.9497-3.9497c.3605.3604.3883.9277.0832 1.32l-.0832.0942-2.1213 2.1213c-.3905.3905-1.0237.3905-1.4142 0-.3605-.3605-.3882-.9277-.0832-1.32l.0832-.0942 2.1213-2.1213c.3906-.3906 1.0237-.3906 1.4142 0zM4.3703 2.967l.0942.0832 2.1213 2.1213c.3905.3905.3905 1.0237 0 1.4142-.3605.3605-.9277.3882-1.32.0832l-.0942-.0832-2.1213-2.1213c-.3906-.3906-.3906-1.0237 0-1.4142.3604-.3605.9277-.3883 1.32-.0832zM8 1c.5128 0 .9355.386.9933.8834L9 2v3c0 .5523-.4477 1-1 1-.5128 0-.9355-.386-.9933-.8834L7 5V2c0-.5523.4477-1 1-1z' fill='%2301BD6F' fill-rule='nonzero'/%3E%3C/svg%3E\");\n }\n .g10 {\n transform: translateX(80px) translateY(108px);\n background-image: url(\"data:image/svg+xml,%3Csvg width='16' height='16' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M8 0c4.4183 0 8 3.5817 8 8s-3.5817 8-8 8-8-3.5817-8-8 3.5817-8 8-8zm0 4C5.7909 4 4 5.7909 4 8c0 2.2091 1.7909 4 4 4 2.2091 0 4-1.7909 4-4 0-2.2091-1.7909-4-4-4z' fill='%23FF6038' fill-rule='nonzero'/%3E%3C/svg%3E\");\n }\n .g11 {\n transform: translateX(116px) translateY(100px) scale(.5);\n background-image: url(\"data:image/svg+xml,%3Csvg width='16' height='16' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M10 2v4h4c1.1046 0 2 .8954 2 2s-.8954 2-2 2h-4v4c0 1.1046-.8954 2-2 2s-2-.8954-2-2V9.999l-4 .0007c-1.1044.0002-1.9998-.895-2-1.9994V8c0-1.1046.8954-2.0001 2-2.0003l4-.0007V2c0-1.1046.8954-2 2-2s2 .8954 2 2z' fill='%23FBAA32' fill-rule='evenodd'/%3E%3C/svg%3E\");\n }\n }\n\n }\n }\n\n }\n }\n }\n .carousel-title {\n border-bottom: 1px solid #EBEBEB;\n display: flex;\n margin: 40px 20px 10px 20px;\n padding-bottom: 20px;\n width: 100%;\n align-items: flex-start;\n justify-content: space-between;\n @media screen and (max-width: 480px) {\n & {\n margin: 0;\n }\n }\n .title {\n cursor: pointer;\n display: flex;\n align-items: center;\n line-height: 1;\n h2 {\n margin: 0;\n font-size: 24px;\n color: #091141;\n letter-spacing: -.64px;\n line-height: 24px;\n font-weight: 600;\n text-decoration: none;\n margin-inline-end: 10px;\n position: relative;\n span {\n transition: opacity 0s ease 0s, filter 0.3s ease 0s;\n opacity: 0;\n }\n &:before {\n content: '';\n position: absolute;\n width: 100%;\n height: 100%;\n left: 0;\n top: 0;\n overflow: hidden;\n border-radius: 4px;\n background-color: #f4f5ff;\n transition: all .3s ease;\n }\n &:after {\n content: '';\n ${animMixin}\n }\n }\n .title-forms-number {\n font-size: 16px;\n color: #dedede;\n transition: opacity 0s ease 0s, filter 0.3s ease 0s;\n opacity: 0;\n }\n }\n .all-link {\n opacity: 0;\n transition: opacity 0s ease 0s, filter 0.3s ease 0s;\n cursor: pointer;\n margin-top: 7px;\n display: flex;\n align-items: center;\n & > span {\n margin-inline-start: 4px;\n font-size: 16px;\n color: #333a50;\n text-decoration: none;\n }\n\n & > .icon {\n width: 20px;\n height: 20px;\n background: #ebebeb;\n border-radius: 50%;\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n html[dir=\"rtl\"] & {\n transform: rotate(180deg);\n }\n }\n }\n &.loaded {\n .title {\n h2 {\n &:before {\n opacity: 0;\n z-index: -1;\n }\n &:after {\n display: none;\n }\n span {\n opacity: 1;\n }\n }\n .title-forms-number {\n opacity: 1;\n }\n }\n .all-link {\n opacity: 1;\n }\n }\n @media screen and (max-width: 768px) {\n & {\n .title {\n h2 {\n font-size: 18px;\n }\n .title-forms-number {\n font-size: 14px;\n }\n }\n }\n }\n @media screen and (max-width: 550px) {\n & {\n flex-direction: column;\n }\n }\n }\n .backtoTop {\n border: none;\n height: 48px;\n width: 48px;\n border-radius: 24px;\n background-color: #8894ab;\n color: #ffffff;\n position: fixed;\n z-index: 5;\n bottom: 68px;\n right: -48px;\n padding: 7px;\n display: flex;\n align-items: center;\n justify-content: center;\n opacity: 0;\n transition: opacity .2s, right .2s, background-color .2s;\n html[dir=\"rtl\"] & {\n right: inherit;\n left: -48px;\n transition: opacity .2s, left .2s, background-color .2s;\n }\n &.show {\n right: 8px;\n opacity: 1;\n html[dir=\"rtl\"] & {\n right: inherit;\n left: 8px;\n }\n }\n &:hover, &:focus{\n background-color: #6c778c;\n }\n }\n @keyframes shimmer {\n 100% {\n transform: translateX(100%);\n }\n }\n`;\n","import Styled from 'styled-components';\n\nexport const ScStandaloneContainer = Styled.div`\n width: 100%;\n max-width: 1410px;\n min-height: 200px;\n margin: 0 auto;\n position: relative;\n display: flex;\n flex-wrap: wrap;\n padding: 16px 16px 0 16px;\n @media screen and (max-width: 880px) {\n overflow-y: auto;\n overflow-x: hidden;\n max-height: 88vh;\n }\n @media screen and (max-width: 768px) {\n max-height: 100vh;\n }\n @media screen and (max-width: 480px) {\n padding-bottom: 100px;\n }\n`;\nexport const ScBottomArea = Styled.div`\n width: 100%;\n padding-bottom: 115px;\n @media screen and (max-width: 768px) {\n padding-left: 20px;\n padding-right: 20px;\n }\n`;\n","/* eslint-disable max-statements */\n/* eslint-disable object-property-newline */\nimport React, {\n Fragment, useRef, useState, useEffect,\n useMemo\n} from 'react';\nimport {\n string, func, bool, object, shape, arrayOf\n} from 'prop-types';\nimport { t } from '@jotforminc/translation';\nimport { IconAngleDown, IconCopyLine, IconArrowUpToLine } from '@jotforminc/svg-icons';\nimport { classNameGenerator } from '@jotforminc/utils';\nimport { ABTestManager } from '@jotforminc/abtest-manager';\n\nimport Loader from '../Loader';\nimport { fetchCategories, fetchStarterPackTemplates, fetchTemplates } from './apiTemplates';\nimport {\n getInitialLanguage, prettyTemplatePageType, getNoResultContent,\n handleSetupActionLogger, scrollToTop, getUrlSearchParamByKey,\n addOrRemoveMultipleEventListeners, getSubCategoryViewData, getTemplateId,\n categoryHeaderRenderer, allCategoriesRenderer, getJfWizardWrapper, getPreviewID, formatBigNumber\n} from './utils';\nimport { getDeviceType } from './getDeviceType';\n\nimport Search from './components/Search';\nimport Sidebar from './components/Sidebar';\nimport TemplateItemContainer from './components/TemplateItem/TemplateItemContainer';\nimport RelatedCategories from './components/RelatedCategories';\nimport SubCategoryGalleryItem from './components/SubCategoryGalleryItem';\n\nimport { ScTemplates } from './components/ScTemplates';\nimport { ScStandaloneContainer } from './components/ScMainWrapper';\nimport './styles/style.scss';\nimport { templateConstants } from './templateConstants';\nimport { stateClass } from '../../core/utils';\n\n// eslint-disable-next-line complexity\nconst StandaloneTemplates = ({\n user,\n source,\n isInline,\n liteMode,\n username,\n frameSrc,\n categories,\n modalVisible,\n setCategories,\n searchKeyword,\n setSearchKeyword,\n hideyMyformsModal,\n callbackCategories,\n handleTemplateClone,\n displayMyformsModal,\n selectedCategory,\n setSelectedCategory,\n setStandaloneTemplates,\n customTrackingProjectName,\n defaultSelectedCategorySlug,\n liteModeActionButtonHandlers\n}) => {\n const {\n handleClickSeeMoreTemplates = f => f,\n handleClickStartFromScratchBtn = f => f\n } = liteModeActionButtonHandlers;\n\n const { PLATFORM_ENV = '' } = window;\n const predefinedCategoryObj = PLATFORM_ENV === 'salesforce' ? 'Salesforce Forms' : defaultSelectedCategorySlug || getUrlSearchParamByKey({ key: 'templateCategory' });\n\n const containerRef = useRef();\n const [offset, setOffset] = useState(0);\n const templateType = frameSrc.split('/')[1];\n\n const [asideShow, setAsideShow] = useState(false);\n const [templates, setTemplates] = useState([]);\n const [readyPage, setReadyPage] = useState(false);\n const [touchingEvent, setTouchingEvent] = useState(false);\n const [suggestedCategories, setSuggestedCategories] = useState(undefined);\n\n const [searchResult, setSearchResult] = useState({\n searchedKeyword: searchKeyword,\n searchView: searchKeyword !== null && searchKeyword !== ''\n });\n const [totalTemplates, setTotalTemplates] = useState();\n const [backToTopVisible, setBackToTopVisible] = useState(false);\n const [isMyTemplates, setIsMyTemplates] = useState(false);\n const [activeParentCategory, setActiveParentCategory] = useState();\n const [selectedTemplate, setSelectedTemplate] = useState();\n const [hasMoreTemplate, setHasMoreTemplate] = useState(true);\n const [loadingTemplates, setLoadingTemplates] = useState(true);\n const [predefinedCategory, setPredefinedCategory] = useState();\n\n const isFormTemplates = templateType === 'form-templates';\n\n const deviceType = getDeviceType();\n const isDesktop = deviceType === 'desktop';\n\n const isInlineWrapped = isInline && isFormTemplates;\n\n const [language, setLanguage] = useState([getInitialLanguage(isFormTemplates)]);\n const [isMobile, setIsMobile] = useState(window.innerWidth <= 780);\n const [isSticky, setIsSticky] = useState(false);\n const [isAllCategoriesSelected, setIsAllCategoriesSelected] = useState(false);\n const [subCategoryViewData, setSubCategoryViewData] = useState({ subCategories: [], loading: false });\n const [filters, setFilters] = useState({\n sorting: 'popular',\n theme: getUrlSearchParamByKey({\n key: 'formLayout',\n defaultValue: 'classic',\n options: ['classic', 'card']\n }) || 'classic'\n });\n const [showSearchTestIsStarterPack, setShowSearchTestIsStarterPack] = useState(false);\n const templatePaginationOffset = 24;\n const currentPaginationOffset = (liteMode && !readyPage) ? templatePaginationOffset - 1 : templatePaginationOffset;\n const templatePageTypePrettyPlural = prettyTemplatePageType(templateType);\n const templatePageTypePretty = prettyTemplatePageType(templateType, false);\n const { theme } = filters;\n const isAgentTemplates = templateType === 'agent-templates';\n\n // A/B Test: templateSuggestionModalOnMyAppsIII\n const registerABTestActionRef = useRef(f => f);\n const abTestManager = useMemo(() => {\n return new ABTestManager({\n user,\n isTestEnabled: false,\n testName: 'templateSuggestionModalOnMyAppsIII',\n controlVariantCode: '26222',\n testVariantCode: '26232',\n urlParam: 'tsmomaiii',\n customUserChecks: {\n isLightMode: liteMode,\n isApp: templateType === 'app-templates',\n source: 'template-suggestion-modal'\n }\n // debugMode: {\n // forceUserEligible: true,\n // logTestState: true\n // // forceTestVariant: true\n // }\n });\n }, [user]);\n\n const handleLiteMode = async () => {\n if (!liteMode) {\n stateClass('remove', 'templateSuggestionModal--isVisible');\n }\n };\n\n useEffect(() => {\n handleLiteMode();\n }, [liteMode]);\n\n const backToTopIsVisible = () => {\n let scrollPos = 0;\n if (isMobile || !isDesktop) return containerRef?.current?.scrollTop > 300;\n if (isInlineWrapped) {\n const jfWizard = getJfWizardWrapper();\n if (jfWizard === null) return false;\n scrollPos = jfWizard.scrollTop;\n } else {\n scrollPos = window.scrollY;\n }\n return scrollPos > 300;\n };\n\n const getTemplates = async (payload = {}) => {\n const {\n category: categoryPayload = null,\n offsetParameter = 0,\n clickedLoadMore = false,\n searchKeywordParameter = ''\n } = payload;\n\n setLoadingTemplates(clickedLoadMore ? 'loading-more' : true);\n const isStarterPack = liteMode && (!searchKeywordParameter && !categoryPayload);\n let isTestVaiant = false;\n\n // A/B Test: templateSuggestionModalOnMyAppsIII\n try {\n isTestVaiant = await abTestManager.isTestVariant();\n registerABTestActionRef.current = abTestManager.registerABTestAction;\n } catch (e) {\n isTestVaiant = false;\n }\n\n // eslint-disable-next-line no-nested-ternary\n const fetcher = isStarterPack ? fetchStarterPackTemplates : false ? [] : fetchTemplates;\n setShowSearchTestIsStarterPack(isStarterPack);\n fetcher({\n ...payload,\n filters,\n language,\n templateType,\n username,\n source,\n rpp: currentPaginationOffset,\n featuredTemplates: isTestVaiant\n }).then(async res => {\n const { data: { content } } = res;\n\n const { templates: contentTemplates, requestParams = {} } = content?.templates\n ? content\n : {\n templates: content.map(template => ({\n ...template,\n previewURL: {\n card: `/preview/${(template.id || template._id)}/card&nofs`,\n classic: `/preview/${(template.id || template._id)}/classic&nofs`\n }\n }))\n };\n const cumulativeTemplates = offsetParameter === 0 ? [] : [...templates];\n const abTestAppliedTemplates = contentTemplates;\n const newTemplates = [...cumulativeTemplates, ...abTestAppliedTemplates];\n\n const { categories: suggestedCategoriesData } = requestParams;\n\n setSuggestedCategories(suggestedCategoriesData ? suggestedCategoriesData.map((category, index) => ({ ...category, hidden: index > 2 })) : suggestedCategoriesData);\n setTemplates(newTemplates);\n setStandaloneTemplates(newTemplates);\n const hasMore = newTemplates.length >= parseInt(content.total, 10);\n setHasMoreTemplate(!hasMore);\n setTotalTemplates(content.total);\n setOffset(offsetParameter + currentPaginationOffset);\n if (!readyPage) setReadyPage(true);\n setLoadingTemplates(false);\n }).catch(() => {\n console.log('Error');\n if (isAgentTemplates) {\n const agentTemplates = [].filter(agent => agent?.id).slice(0, 9).map(agent => ({\n ...agent,\n screenshot: `/landings/assets/img/agent-directory/thumbnails/${agent.id}.png`,\n previewURL: `https://www.jotform.com/agent/${agent.id}?newUI=true`\n }));\n // setSuggestedCategories(suggestedCategoriesData ? suggestedCategoriesData.map((category, index) => ({ ...category, hidden: index > 2 })) : suggestedCategoriesData);\n setTemplates(agentTemplates);\n setStandaloneTemplates(agentTemplates);\n setHasMoreTemplate(false);\n setTotalTemplates(agentTemplates.length);\n setOffset(offsetParameter + currentPaginationOffset);\n if (!readyPage) setReadyPage(true);\n setLoadingTemplates(false);\n }\n });\n };\n\n const handleResize = () => {\n setIsMobile(window.innerWidth <= 780);\n setIsSticky(false);\n };\n\n const handleSubCategoryViewData = (payload = {}) => {\n const { categoriesParameter = categories, category = selectedCategory } = payload;\n try {\n getSubCategoryViewData(\n category, categoriesParameter, setSubCategoryViewData, filters, language, templateType, source\n ).then(res => {\n const { data: { content: { subCategories, total } } } = res;\n setSubCategoryViewData({\n total,\n loading: false,\n subCategories: subCategories.filter(subCat => subCat.templates.length >= 1)\n });\n });\n } catch (e) {\n setSubCategoryViewData({ subCategories: [], loading: false });\n }\n };\n\n const handleGetCategories = refreshSubCategories => {\n fetchCategories(templateType, language, source)\n .then(res => {\n const { data: { content } } = res;\n const { sortCategoriesByFeatured = false } = templateConstants[templateType];\n let allCategories = content.filter(category => (category?.total && parseInt(category?.total, 10) > 0));\n if (sortCategoriesByFeatured) {\n const featuedCategories = allCategories.filter(category => {\n if (templateType === 'form-templates' && category?.slug === 'salesforce-forms') return true;\n return category?.featured === '1';\n });\n const unFeaturedCategories = allCategories.filter(category => {\n if (templateType === 'form-templates' && category?.slug === 'salesforce-forms') return false;\n return category?.featured === '0';\n });\n allCategories = [...featuedCategories, ...unFeaturedCategories];\n }\n setCategories(allCategories);\n callbackCategories(allCategories);\n if (refreshSubCategories) handleSubCategoryViewData(content);\n })\n .catch(() => {\n setCategories(isAgentTemplates ? [].filter(category => category.count > 0) : []);\n callbackCategories([]);\n });\n };\n\n const handleDesktopScroll = () => {\n setBackToTopVisible(backToTopIsVisible());\n };\n\n const loadPage = (payload = {}) => {\n if (!readyPage) return;\n const { languageChanged = false, category = selectedCategory, clickedMyTemplates = isMyTemplates } = payload;\n if (languageChanged) {\n handleGetCategories(true);\n if (languageChanged) setSelectedCategory();\n } else {\n handleSubCategoryViewData();\n }\n getTemplates({\n clickedLoadMore: false,\n getOnlyMyTemplates: clickedMyTemplates,\n searchKeywordParameter: category ? '' : searchKeyword,\n category: languageChanged ? undefined : selectedCategory\n });\n scrollToTop(isMobile, containerRef, isInlineWrapped);\n if (asideShow) setAsideShow(false);\n };\n\n const handleMount = async () => {\n if (liteMode) stateClass('add', 'templateSuggestionModal--isVisible');\n\n if (window.location.href.includes('integration')) {\n document.querySelector('body').classList.add('standaloneTemplates');\n }\n const jfWizard = getJfWizardWrapper();\n handleSetupActionLogger(customTrackingProjectName || 'newWizard');\n handleGetCategories();\n\n getTemplates({\n searchKeywordParameter: searchKeyword\n });\n addOrRemoveMultipleEventListeners(['resize', 'orientationchange'], handleResize, 'add', window);\n addOrRemoveMultipleEventListeners(['scroll'], handleDesktopScroll, 'add', (isInlineWrapped && !isMobile) ? jfWizard : window);\n return () => {\n if (liteMode) stateClass('remove', 'templateSuggestionModal--isVisible');\n addOrRemoveMultipleEventListeners(['resize', 'orientationchange'], handleResize, 'remove', window);\n addOrRemoveMultipleEventListeners(['scroll'], handleDesktopScroll, 'add', (isInlineWrapped && !isMobile) ? jfWizard : window);\n if (window.location.href.includes('integration')) {\n document.querySelector('body').classList.remove('standaloneTemplates');\n }\n };\n };\n\n useEffect(() => {\n handleMount();\n }, []);\n\n useEffect(() => {\n loadPage();\n }, [filters]);\n\n useEffect(() => {\n if (!predefinedCategory) return;\n const selectedCategoryID = selectedCategory?.id || selectedCategory?._id;\n const predefinedCategoryID = predefinedCategory?.id || predefinedCategory?._id;\n if (predefinedCategoryID && predefinedCategoryID !== selectedCategoryID) {\n setPredefinedCategory();\n }\n }, [selectedCategory]);\n\n useEffect(() => {\n loadPage({ languageChanged: true });\n }, [language]);\n\n const handleSelectCategory = (payload = {}) => {\n const { category, clickedAllCategories = false, clickedMyTemplates = false } = payload;\n setSearchKeyword('');\n setSelectedCategory(category);\n setIsMyTemplates(clickedMyTemplates);\n setIsAllCategoriesSelected(clickedAllCategories);\n setSearchResult({ searchView: false, searchedKeyword: '' });\n if (!clickedAllCategories) {\n getTemplates({\n category,\n clickedLoadMore: false,\n getOnlyMyTemplates: clickedMyTemplates,\n searchKeywordParameter: (category || clickedMyTemplates) ? '' : searchKeyword\n });\n }\n if (category) handleSubCategoryViewData({ category });\n if (!clickedMyTemplates) {\n window.standaloneTemplatesLogger({\n actor: username,\n action: `${deviceType}:category-click`,\n target: clickedAllCategories\n ? 'allCategories'\n : `/${templateType}/standalone/category/${category ? (category.slug || category.name).toLowerCase() : 'homepage'}`\n });\n }\n scrollToTop(isMobile, containerRef, isInlineWrapped);\n if (asideShow) setAsideShow(false);\n };\n\n useEffect(() => {\n if (categories && categories?.length > 0 && predefinedCategoryObj) {\n const alreadySelectedCategory = categories?.find(val => {\n return [\n val?.slug, val?._slug, val?.name, val?._name\n ].includes(predefinedCategoryObj.replaceAll('+', ' '));\n }) || null;\n if (alreadySelectedCategory) {\n handleSelectCategory({ category: alreadySelectedCategory });\n setPredefinedCategory(alreadySelectedCategory);\n }\n }\n }, [categories]);\n\n useEffect(() => {\n global.setSelectedTemplate = setSelectedTemplate;\n return () => {\n delete global.setSelectedTemplate;\n };\n }, []);\n\n const handleStickySearchWrapper = () => {\n setBackToTopVisible(backToTopIsVisible());\n if (!isMobile) return;\n if (touchingEvent === true) return;\n\n const TRESHOLD = 100;\n const OFFSET = 5;\n const scrollPosition = containerRef?.current?.scrollTop;\n const nextSticky = scrollPosition > TRESHOLD;\n\n // why need it? it prevents infinite sticky mode state changings between 95px - 105px;\n const loopingScrollInterval = (scrollPosition < TRESHOLD + OFFSET) && (scrollPosition > TRESHOLD - OFFSET);\n if (loopingScrollInterval) return;\n\n setIsSticky(nextSticky);\n const jfWizard = getJfWizardWrapper();\n if (jfWizard === null) return;\n if (nextSticky) {\n jfWizard.classList.add('sticky-wizard');\n } else {\n jfWizard.classList.remove('sticky-wizard');\n }\n };\n\n useEffect(() => {\n if (touchingEvent === false) {\n handleStickySearchWrapper();\n }\n }, [touchingEvent]);\n\n useEffect(() => {\n if (!isMobile) setAsideShow(false);\n handleStickySearchWrapper();\n }, [isMobile]);\n\n useEffect(() => { if (!modalVisible) setSelectedTemplate(); }, [modalVisible]);\n\n useEffect(() => {\n const jfWizard = getJfWizardWrapper();\n if (jfWizard === null) return;\n if (asideShow) {\n jfWizard.classList.add('aside-active');\n } else {\n jfWizard.classList.remove('aside-active');\n }\n }, [asideShow]);\n\n useEffect(() => {\n if (selectedTemplate) {\n const { previewURL } = selectedTemplate;\n const templateTitle = selectedTemplate._title || selectedTemplate.title;\n const previewURLTheme = previewURL ? previewURL[theme] : '';\n displayMyformsModal({\n theme: theme,\n filters: filters,\n language: language,\n title: templateTitle,\n template: selectedTemplate,\n id: getPreviewID(selectedTemplate),\n previewURL: isAgentTemplates ? previewURL : `/${templateType}/standalone/${previewURLTheme}`\n });\n } else {\n hideyMyformsModal();\n }\n }, [selectedTemplate]);\n\n const handleClearResult = () => {\n setSearchResult({ searchView: false, searchedKeyword: '' });\n setSearchKeyword('');\n getTemplates({ searchKeywordParameter: '' });\n };\n\n const isLoadingMore = loadingTemplates === 'loading-more';\n const templatesRenderer = () => {\n if (loadingTemplates && !isLoadingMore && !searchResult.searchView) {\n return (Array(9).fill().map((el, index) => {\n const uniqueKey = index;\n return (\n \n \n \n );\n }));\n }\n\n if (templates.length === 0 && (isMyTemplates || (!loadingTemplates && searchResult.searchView))) {\n return getNoResultContent(isMyTemplates, handleClearResult, searchResult, templatePageTypePrettyPlural);\n }\n\n return (templates.map((template, index) => (\n <>\n {\n (liteMode && index === 0) && (\n \n {\n handleClickStartFromScratchBtn(event);\n // A/B Test: templateSuggestionModalOnMyAppsIII\n if (liteMode) {\n registerABTestActionRef.current?.({ action: 'click', target: 'startFromScratchButton' });\n }\n }}\n >\n
    \n \n \n \n {t('Start From Scratch')}\n
    \n \n
    \n )\n }\n \n \n \n \n )));\n };\n\n const { loading, subCategories } = subCategoryViewData;\n const isSubCategoryModeDisabled = () => {\n const { subGalleryViewActive = false } = templateConstants[templateType];\n if (!subGalleryViewActive) return true;\n return (!loading && subCategories.length === 0) || !selectedCategory;\n };\n const subCategoryModeDisabled = isSubCategoryModeDisabled();\n\n const seeMoreButtonRenderer = () => {\n const handleClickSeeMore = () => {\n window.standaloneTemplatesLogger({\n actor: username,\n action: `${window.innerWidth <= 780 ? 'mobile' : 'desktop'}:load-more`\n });\n getTemplates({\n clickedLoadMore: true,\n offsetParameter: offset,\n category: selectedCategory,\n searchKeywordParameter: searchKeyword\n });\n };\n const { loadMoreText = 'See More Templates' } = templateConstants[templateType];\n return (\n (hasMoreTemplate && !isAllCategoriesSelected && (loadingTemplates === false || isLoadingMore)) && (\n
    \n {\n // A/B Test: templateSuggestionModalOnMyAppsIII\n registerABTestActionRef.current?.({ action: 'click', target: 'seeMoreTemplatesButton' });\n handleClickSeeMoreTemplates(event);\n } : handleClickSeeMore}\n >\n {t(isLoadingMore ? 'Please wait...' : loadMoreText)}\n \n
    \n )\n );\n };\n\n const subCategoryGalleryRenderer = () => {\n if (subCategoryModeDisabled) return null;\n const subCategorySkeletons = categories.filter(category => getTemplateId(category?.parent) === getTemplateId(selectedCategory));\n const subCategoryIterators = loading ? subCategorySkeletons : subCategories;\n return (\n subCategoryIterators.map(subCategory => (\n \n ))\n );\n };\n\n const itemsRenderer = itemType => {\n switch (itemType) {\n case 'templates':\n return (\n <>\n {templatesRenderer()}\n {seeMoreButtonRenderer()}\n {subCategoryGalleryRenderer()}\n \n );\n case 'all-categories':\n return allCategoriesRenderer(categories, handleSelectCategory, setActiveParentCategory);\n default:\n break;\n }\n };\n\n if (!readyPage || (searchResult.searchView && loadingTemplates)) {\n return ;\n }\n\n const commonProps = {\n handleSelectCategory, selectedCategory, isAllCategoriesSelected, username\n };\n\n const searchComponentProps = {\n ...commonProps, getTemplates, searchKeyword, setSearchResult, isMyTemplates, searchResult, isAllCategoriesSelected, source,\n setSearchKeyword, stickySearchWrapper: isSticky, setTemplates, setStandaloneTemplates, setIsMyTemplates, setSelectedCategory, setIsAllCategoriesSelected, templateType\n };\n\n const sidebarProps = {\n ...commonProps, categories, searchResult, setAsideShow, asideShow, language, isMobile, source, predefinedCategory,\n searchComponentProps, templateType, filters, setFilters, isMyTemplates, setLanguage, setActiveParentCategory\n };\n\n const categoryHeaderRendererProps = {\n ...commonProps, templatePageTypePrettyPlural, setActiveParentCategory,\n templatePageTypePretty, subCategoryViewData, activeParentCategory\n };\n\n return (\n setTouchingEvent(true)}\n onTouchEnd={() => setTouchingEvent(false)}\n >\n {!liteMode && }\n \n \n {isMyTemplates && (\n
    \n
    {t(`${templatePageTypePrettyPlural} by ${username}`)}
    \n
    \n )}\n {categoryHeaderRenderer(categoryHeaderRendererProps)}\n {(searchResult.searchView && templates.length > 0) && (\n <>\n
    \n
    {t(`Listing ${formatBigNumber(totalTemplates)} Search Results for \"${searchResult.searchedKeyword}\"`)}
    \n \n
    \n {\n (suggestedCategories && Array.isArray(suggestedCategories) && suggestedCategories.length > 0) && (\n
    \n
    \n {\n suggestedCategories.map(category => {\n const {\n hidden = false, name, color, total\n } = category;\n if (hidden) return null;\n return (\n handleSelectCategory({ category })}\n onKeyDown={() => handleSelectCategory({ category })}\n >\n

    {name}

    \n

    \n \n \n {total}\n {' '}\n Templates\n \n

    \n
    \n );\n })\n }\n
    \n {\n suggestedCategories.find(({ hidden }) => hidden) && (\n
    \n setSuggestedCategories(suggestedCategories.map(category => ({ ...category, hidden: false })))}\n >\n \n { t('All Category Results') }\n \n
    \n )\n }\n
    \n )\n }\n \n )}\n
    \n {itemsRenderer(isAllCategoriesSelected ? 'all-categories' : 'templates')}\n
    \n \n scrollToTop(isMobile, containerRef, isInlineWrapped)}\n className={classNameGenerator({\n backtoTop: true,\n show: backToTopVisible\n })}\n >\n \n \n \n \n );\n};\n\nStandaloneTemplates.defaultProps = {\n user: {},\n source: '',\n isInline: true,\n username: '',\n liteMode: false,\n liteModeActionButtonHandlers: {},\n categories: [],\n modalVisible: false,\n setCategories: f => f,\n searchKeyword: '',\n setSearchKeyword: f => f,\n hideyMyformsModal: f => f,\n callbackCategories: f => f,\n handleTemplateClone: f => f,\n displayMyformsModal: f => f,\n selectedCategory: undefined,\n setSelectedCategory: f => f,\n setStandaloneTemplates: f => f,\n frameSrc: '/form-templates/standalone',\n defaultSelectedCategorySlug: null,\n customTrackingProjectName: undefined\n};\n\nStandaloneTemplates.propTypes = {\n user: shape({}),\n liteModeActionButtonHandlers: object,\n isInline: bool,\n liteMode: bool,\n source: string,\n frameSrc: string,\n modalVisible: bool,\n username: string,\n setCategories: func,\n searchKeyword: string,\n setSearchKeyword: func,\n hideyMyformsModal: func,\n selectedCategory: object,\n callbackCategories: func,\n setSelectedCategory: func,\n handleTemplateClone: func,\n displayMyformsModal: func,\n categories: arrayOf(object),\n setStandaloneTemplates: func,\n customTrackingProjectName: string,\n defaultSelectedCategorySlug: string\n};\n\nexport default StandaloneTemplates;\n","/* eslint-disable @jotforminc/no-native-button */\n/* eslint-disable react/button-has-type */\n/* eslint-disable max-len */\nimport React from 'react';\nimport { t } from '@jotforminc/translation';\nimport {\n func, bool, string, oneOfType, object\n} from 'prop-types';\nimport cx from 'classnames';\nimport { IconChevronLeft, IconChevronRight } from '@jotforminc/svg-icons';\nimport Button from '../../../Button';\nimport texts from '../../../../core/texts';\n\nexport default function ModalControls({\n useTemplate, isCloningTemplate, handlePrevNextTemplateHandler, className, newStyle, leftRef, rightRef\n}) {\n const ctaControlsClassnames = cx(className, {\n 'arrow-desktop hidden lg:flex justify-between fixed top-1/2 transform -translate-y-1/2 left-1/2 -translate-x-1/2 max-w-xxl w-full': newStyle,\n 'cta-controls sticky lg:static left-0 right-0 bottom-0 bg-white border-t border-t-navy-50 py-1 lg:py-0 lg:border-t-0 justify-center z-3': !newStyle\n });\n\n const modalArrowLeftClassnames = cx({\n 'modal-arrow left bg-transparent border-0 locale-data-aria-label w-16 h-16 color-navy-100 hover:color-white inline-flex items-center justify-center duration-200 transform rtl:rotate-180': newStyle,\n 'modal-arrow left bg-transparent border-0 relative locale-data-aria-label lg:absolute lg:top-1/3 lg:-left-20 lg:rtl:left-auto lg:rtl:-right-20 w-12 lg:w-16 h-12 lg:h-16 bg-navy-75 color-navy-400 inline-flex items-center justify-center radius lg:radius-full hover:bg-navy-700 hover:color-white duration-200 transform rtl:rotate-180': !newStyle\n });\n\n const modalArrowRightClassnames = cx({\n 'modal-arrow right bg-transparent border-0 locale-data-aria-label w-16 h-16 color-navy-100 hover:color-white inline-flex items-center justify-center duration-200 transform rtl:rotate-180': newStyle,\n 'modal-arrow right bg-transparent border-0 relative locale-data-aria-label lg:absolute lg:top-1/3 lg:-right-20 lg:rtl:right-auto lg:rtl:-left-20 w-12 lg:w-16 h-12 lg:h-16 bg-navy-75 color-navy-400 inline-flex items-center justify-center radius lg:radius-full hover:bg-navy-700 hover:color-white duration-200 transform rtl:rotate-180': !newStyle\n });\n\n return (\n
    \n handlePrevNextTemplateHandler({ key: 'ArrowLeft' })}\n >\n \n \n {!newStyle && (\n \n {isCloningTemplate ? t(texts.PLEASE_WAIT) : t(texts.USE_TEMPLATE)}\n \n )}\n handlePrevNextTemplateHandler({ key: 'ArrowRight' })}\n >\n \n \n
    \n );\n}\n\nModalControls.propTypes = {\n className: string,\n useTemplate: func,\n isCloningTemplate: bool,\n handlePrevNextTemplateHandler: func,\n newStyle: bool,\n leftRef: oneOfType(func, object),\n rightRef: oneOfType(func, object)\n};\n\nModalControls.defaultProps = {\n className: '',\n useTemplate: f => f,\n isCloningTemplate: false,\n handlePrevNextTemplateHandler: f => f,\n newStyle: false,\n leftRef: f => f,\n rightRef: f => f\n};\n","/* eslint-disable jsx-a11y/alt-text */\n/* eslint-disable @jotforminc/no-native-button */\n/* eslint-disable import/no-cycle */\nimport React, { useState } from 'react';\nimport {\n string, func, object, bool\n} from 'prop-types';\nimport Loader from '../../../Loader';\n\nimport './style.scss';\n\nconst WorkflowTemplateAreaRenderer = ({\n modelContentLoading, frameRef, templatePreviewURL,\n setModelContentLoading, rightArrowRef, leftArrowRef, template\n}) => {\n let formID;\n const { source_snapshot: sourceSnapshot = '{}' } = template;\n try {\n const { data } = JSON.parse(sourceSnapshot);\n try {\n const { properties: { id: parsedFormID } } = JSON.parse(data);\n formID = parsedFormID;\n } catch {\n //\n }\n } catch {\n //\n }\n const [activeTab, setActiveTab] = useState(0);\n\n const previewBtns = [\n { btnType: 'workflow', btnName: 'WORKFLOW' },\n { btnType: 'form', btnName: 'FORM PREVIEW' }\n ];\n\n const handleLoadObject = () => {\n setModelContentLoading(false);\n rightArrowRef.current.classList.remove('load-active');\n leftArrowRef.current.classList.remove('load-active');\n };\n\n return (\n
    \n { modelContentLoading && }\n
    \n \n {\n previewBtns.map(({ btnType, btnName }, index) => (\n setActiveTab(index)}\n className={`item relative radius-full flex items-center justify-center px-2 py-1 min-w-28 border-0 bg-navy-50 ${activeTab === index ? 'bg-navy-900 color-white' : 'color-navy-300'}`}\n >\n {btnName}\n \n ))\n }\n
    \n
    \n \n \n \n );\n};\n\nWorkflowTemplateAreaRenderer.defaultProps = {\n modelContentLoading: f => f,\n frameRef: null,\n templatePreviewURL: '',\n setModelContentLoading: f => f,\n rightArrowRef: null,\n leftArrowRef: null,\n template: {}\n};\n\nWorkflowTemplateAreaRenderer.propTypes = {\n modelContentLoading: bool,\n frameRef: object,\n templatePreviewURL: string,\n setModelContentLoading: func,\n rightArrowRef: object,\n leftArrowRef: object,\n template: object\n};\n\nexport default WorkflowTemplateAreaRenderer;\n","import React from 'react';\nimport {\n string, func, object, bool\n} from 'prop-types';\nimport { t } from '@jotforminc/translation';\nimport { IconEyeFilled } from '@jotforminc/svg-icons';\nimport Loader from '../../../Loader';\nimport './style.scss';\n\nconst TableTemplateAreaRenderer = ({\n modelContentLoading, _slug, backgroundColor, setModelContentLoading,\n rightArrowRef, leftArrowRef, _previewImageUrl, title\n}) => {\n return (\n
    \n
    \n
    \n
    \n { modelContentLoading && }\n \n {\n setModelContentLoading(false);\n rightArrowRef.current.classList.remove('load-active');\n leftArrowRef.current.classList.remove('load-active');\n }}\n className=\"pointer-events-none absolute left-0 bottom-0 z-0 block w-auto radius-lg transform translate-x-10 translate-y-8 image lazyloaded\"\n src={_previewImageUrl}\n alt={title}\n style={{ maxWidth: 'unset', height: '99%' }}\n />\n \n
    \n
    \n \n
    \n
    \n
    \n
    \n );\n};\n\nTableTemplateAreaRenderer.defaultProps = {\n _slug: '',\n backgroundColor: '',\n setModelContentLoading: f => f,\n rightArrowRef: null,\n leftArrowRef: null,\n _previewImageUrl: '',\n title: '',\n modelContentLoading: true\n};\n\nTableTemplateAreaRenderer.propTypes = {\n modelContentLoading: bool,\n _slug: string,\n backgroundColor: string,\n setModelContentLoading: func,\n rightArrowRef: object,\n leftArrowRef: object,\n _previewImageUrl: string,\n title: string\n};\n\nexport default TableTemplateAreaRenderer;\n","/* eslint-disable quotes */\n/* eslint-disable quote-props */\n/* eslint-disable react/prop-types */\nimport { t } from '@jotforminc/translation';\nimport React, { useRef } from 'react';\nimport { Swiper, SwiperSlide } from 'swiper/react';\nimport { isEnterprise } from '@jotforminc/enterprise-utils';\nimport { handleCustomNavigation } from '@jotforminc/utils';\nimport { IconArrowUpLeft } from '@jotforminc/svg-icons';\nimport TemplateItemContainer from '../TemplateItem/TemplateItemContainer';\nimport { ScTemplates } from '../ScTemplates';\n\nimport 'swiper/css';\nimport 'swiper/css/navigation';\nimport { getDeviceType } from '../../getDeviceType';\n\nconst handleAskMeAction = (question, frameRef) => {\n const frameContent = frameRef.current;\n const objWindow = frameContent.contentWindow;\n const objDoc = frameContent.contentDocument || frameContent.contentWindow.document;\n objWindow.postMessage({\n question,\n source: 'agent-directory'\n }, window.location.origin);\n setTimeout(() => {\n const agentSendBtn = objDoc.querySelector('.sendButton');\n if (agentSendBtn) {\n agentSendBtn.click();\n }\n }, 500);\n};\n\nexport const OverviewTabRenderer = (props = {}) => {\n const { description = '' } = props;\n return (\n
    \n {t('About this agent')}\n
    \n
    \n );\n};\n\nexport const FormTemplatesTabRenderer = (data = {}) => {\n const { username, formTemplate: formTemplateData } = data || {};\n const connectedFormTemplates = formTemplateData || [];\n const sliderRef = useRef(null);\n\n const deviceType = getDeviceType();\n const isDesktop = deviceType === 'desktop';\n return (\n
    \n {t('Connected Forms')}\n \n \n \n {\n connectedFormTemplates.map(formTemplate => (\n \n {\n handleCustomNavigation(`${window.location.origin}/form-templates/${formTemplate._slug}`, '_blank');\n }}\n handleTemplateClone={() => {\n handleCustomNavigation(`${window.location.origin}/form-templates/${formTemplate._slug}`, '_blank');\n }}\n liteMode={false}\n />\n \n ))\n }\n \n \n
    \n
    \n );\n};\n\nexport const AskMeSectionRenderer = ({ template, frameRef }) => {\n try {\n const { JSON: jsonData = '{}' } = template;\n const { questions } = JSON.parse(jsonData);\n return (\n
    \n {t('Ask me things like...')}\n
      \n {\n questions.map(question => (\n handleAskMeAction(question, frameRef)}\n >\n \n {t(question)}\n \n \n \n \n \n \n ))\n }\n
    \n
    \n );\n } catch {\n return null;\n }\n};\n\nconst AgentTemplatePreviewContent = () => {\n return null;\n};\n\nexport default AgentTemplatePreviewContent;\n","export const RESPONSIVE_MODES = {\n MOBILE: 'mobile',\n TABLET: 'tablet',\n DESKTOP: 'desktop'\n};\n\nexport const DUMMY_RECOMMENDED_THEMES = [{\n id: 211301991871959,\n thumbnail_url: 'https://cdn.jotfor.ms/assets/img/appPreview/industry_education.png'\n}, {\n id: 212721702558958,\n thumbnail_url: 'https://cdn.jotfor.ms/assets/img/appPreview/theme1.png'\n}, {\n id: 211602841262951,\n thumbnail_url: 'https://cdn.jotfor.ms/assets/img/appPreview/theme2.png'\n}, {\n id: 211302146772952,\n thumbnail_url: 'https://cdn.jotfor.ms/assets/img/appPreview/theme3.png'\n}, {\n id: 212382889685978,\n thumbnail_url: 'https://cdn.jotfor.ms/assets/img/appPreview/default.png'\n}];\n","import { autoTranslate } from '@jotforminc/utils';\n\nexport default autoTranslate({\n APP_TITLE: 'Your app is ready!',\n APP_CTA_TEXT: 'Use this app',\n SELECT_THEME: 'Select Theme',\n TRY_ME: 'Try me'\n});\n","import React from 'react';\nimport { string, func } from 'prop-types';\nimport { IconMobile, IconTablet, IconDesktop } from '@jotforminc/svg-icons';\nimport { RESPONSIVE_MODES } from '../core/constants';\n\nconst ViewMode = ({ viewMode, onViewModeChange }) => {\n const { MOBILE, TABLET, DESKTOP } = RESPONSIVE_MODES;\n\n const isActive = (vMode, type) => (vMode === type ? 'bg-blue-500 color-white' : '');\n\n return (\n \n );\n};\n\nViewMode.propTypes = {\n viewMode: string,\n onViewModeChange: func\n};\n\nViewMode.defaultProps = {\n viewMode: RESPONSIVE_MODES.MOBILE,\n onViewModeChange: f => f\n};\n\nexport default ViewMode;\n","/* eslint-disable max-len */\nimport React from 'react';\n\nconst MobileBorder = () => {\n return (\n \n \n \n \n\n );\n};\n\n// MobileBorder.propTypes = { splashBgColor: string.isRequired };\n\nexport default MobileBorder;\n","/* eslint-disable max-len */\nimport React from 'react';\nimport { string } from 'prop-types';\n\nconst TabletBorder = ({ splashBgColor }) => {\n return (\n \n \n \n \n \n \n \n );\n};\n\nTabletBorder.propTypes = { splashBgColor: string.isRequired };\n\nexport default TabletBorder;\n","/* eslint-disable max-len */\nimport React from 'react';\n\nconst MobilePageBorder = props => {\n return (\n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default MobilePageBorder;\n","/* eslint-disable max-len */\nimport React from 'react';\n\nconst TabletPageBorder = props => {\n return (\n \n \n \n \n \n \n \n );\n};\n\nTabletPageBorder.propTypes = { };\n\nexport default TabletPageBorder;\n","import { DUMMY_RECOMMENDED_THEMES } from './constants';\n\nexport const dummyAppThemesApi = () => {\n return new Promise(resolve => {\n setTimeout(() => {\n resolve(DUMMY_RECOMMENDED_THEMES);\n }, 50);\n });\n};\n\nconst getObjectElDocument = objectEl => {\n let docEl = objectEl.contentWindow || objectEl.contentDocument;\n if (docEl?.document) {\n docEl = docEl.document;\n }\n return docEl;\n};\n\nconst getSpacerStyles = () => {\n return `\n .appHeader {\n padding: 58px 30px 87px !important;\n }\n .navigationPanelWrapper {\n padding-top: 28px !important;\n }\n .navBurger {\n top: 28px !important;\n } \n @media screen and (max-width: 381px) {\n .formRendererNav {\n padding: 36px 12px 8px !important;\n height: 90px;\n }\n }\n .navPanel-title {\n top: 28px !important;\n }`;\n};\n\nexport const addMobileHeadSpacer = objectEl => {\n const styleEl = document.createElement('style');\n styleEl.innerHTML = getSpacerStyles();\n const objectDocEl = getObjectElDocument(objectEl);\n objectDocEl?.head?.append(styleEl);\n};\n","import React from 'react';\nimport {\n array, func, string, number\n} from 'prop-types';\nimport { getDomainURL } from '@jotforminc/request-layer';\n\nconst MultiplePreview = ({\n onLoad,\n customOnLoad,\n currentThemeId,\n previewQueryParams,\n themesWithLoadAllowed\n}) => {\n return (\n <>\n {themesWithLoadAllowed.map((theme, index) => {\n if (!theme.allowLoading) return null;\n return (\n {\n onLoad(event, theme, index);\n customOnLoad();\n }}\n />\n );\n })}\n \n );\n};\n\nMultiplePreview.propTypes = {\n themesWithLoadAllowed: array.isRequired,\n previewQueryParams: string.isRequired,\n currentThemeId: number,\n onLoad: func,\n customOnLoad: func\n};\n\nMultiplePreview.defaultProps = {\n onLoad: f => f,\n currentThemeId: 0,\n customOnLoad: f => f\n};\n\nexport default MultiplePreview;\n","/* eslint-disable no-nested-ternary */\nimport React, { useState, useEffect } from 'react';\nimport { bool, func, string } from 'prop-types';\nimport { getDomainURL } from '@jotforminc/request-layer';\nimport { RESPONSIVE_MODES } from '../core/constants';\nimport Loader from '../../Loader';\n\nconst SinglePreview = ({\n title,\n onLoad,\n viewMode,\n appDetails,\n customOnLoad,\n splashBgColor,\n currentThemeId,\n modalContentLoading,\n forStandalonePageTemplate\n}) => {\n let loadingTimeout;\n let loadedObjectStatusTimeout;\n\n const [loadedObjectStatus, setLoadedObjectStatus] = useState(false);\n const [loadedAnimationStatus, setLoadedAnimationStatus] = useState(false);\n const [loadingAnimationStatus, setLoadingAnimationStatus] = useState(false);\n\n useEffect(() => {\n if (currentThemeId) {\n setLoadedAnimationStatus(false);\n setLoadingAnimationStatus(false);\n setLoadedObjectStatus(false);\n if (viewMode !== RESPONSIVE_MODES.MOBILE) return;\n loadingTimeout = setTimeout(() => {\n setLoadingAnimationStatus(true);\n }, 2000);\n }\n return () => {\n clearTimeout(loadingTimeout);\n clearTimeout(loadedObjectStatusTimeout);\n };\n }, forStandalonePageTemplate ? [currentThemeId] : [currentThemeId, viewMode]);\n\n let iconURL = '';\n let fontColor = '';\n let splashFontColor = '';\n\n try {\n const parsedData = JSON.parse(appDetails);\n iconURL = parsedData?.appIconURL;\n fontColor = parsedData?.appFontColor;\n splashFontColor = parsedData?.splashFontColor;\n } catch (e) {\n console.log(e);\n }\n\n let previewURL = `${getDomainURL()}/app-templates/preview/app/${currentThemeId}?mode=${viewMode}`;\n let previewFrameTitle = 'App Preview';\n\n if (forStandalonePageTemplate) {\n previewFrameTitle = 'Page Preview';\n previewURL = `${getDomainURL()}/page-templates/preview/${currentThemeId}`;\n }\n\n if (forStandalonePageTemplate) {\n return (\n <>\n
    \n \n
    \n {\n loadedObjectStatusTimeout = setTimeout(() => {\n setLoadedObjectStatus(true);\n }, 350);\n }}\n data={previewURL}\n >\n {previewFrameTitle}\n \n \n );\n }\n\n return (\n <>\n
    \n
    \n {!modalContentLoading && (\n {title}\n )}\n
    \n
    {title}
    \n
    \n
    \n {\n viewMode === RESPONSIVE_MODES.MOBILE ? (\n loadingAnimationStatus ? (\n {\n setLoadedAnimationStatus(true);\n loadedObjectStatusTimeout = setTimeout(() => {\n setLoadedObjectStatus(true);\n }, 350);\n customOnLoad();\n }}\n style={{ backgroundColor: splashFontColor }}\n data={previewURL}\n >\n {previewFrameTitle}\n \n ) : (\n \n {previewFrameTitle}\n \n )\n ) : (\n {\n customOnLoad();\n onLoad(event);\n }}\n data={previewURL}\n >\n {previewFrameTitle}\n \n )\n }\n \n );\n};\n\nSinglePreview.propTypes = {\n onLoad: func,\n customOnLoad: func,\n title: string,\n viewMode: string.isRequired,\n appDetails: string.isRequired,\n forStandalonePageTemplate: bool,\n splashBgColor: string.isRequired,\n currentThemeId: string.isRequired,\n modalContentLoading: bool.isRequired\n};\n\nSinglePreview.defaultProps = {\n onLoad: f => f,\n title: '',\n customOnLoad: f => f,\n forStandalonePageTemplate: false\n};\n\nexport default SinglePreview;\n","import React, { useEffect, useState } from 'react';\nimport {\n number, func, arrayOf, shape, bool, string, object, oneOfType\n} from 'prop-types';\nimport { t } from '@jotforminc/translation';\nimport { getCurrentTime } from '@jotforminc/utils';\n\nimport { RESPONSIVE_MODES } from '../core/constants';\nimport texts from '../core/texts';\nimport ViewMode from './ViewMode';\nimport MobileBorder from './MobileBorder';\nimport TabletBorder from './TabletBorder';\nimport MobilePageBorder from './MobilePageBorder';\nimport TabletPageBorder from './TabletPageBorder';\nimport { addMobileHeadSpacer } from '../core/utils';\nimport MultiplePreview from './MultiplePreview';\nimport SinglePreview from './SinglePreview';\nimport TryArrow from '../assets/svg/tryArrow.svg';\n\nconst AppPreviewBody = ({\n themes,\n template,\n customTryText,\n currentThemeId,\n previewQueryParams,\n modalContentLoading,\n showAsTemplatePreview,\n forStandalonePageTemplate,\n showThemeChangeTransition,\n onViewModeChange,\n customOnLoad\n}) => {\n const [viewMode, setViewMode] = useState(forStandalonePageTemplate ? RESPONSIVE_MODES.DESKTOP : RESPONSIVE_MODES.MOBILE);\n const [themesWithLoadAllowed, setThemesWithLoadAllowed] = useState([]);\n const areThemesLoading = themes.length === 0;\n\n const {\n title = '',\n splashBgColor = '',\n JSON: appDetails = '{}'\n } = template;\n\n useEffect(() => {\n if (areThemesLoading) return;\n\n let intialThemes = themes.map(theme => ({ ...theme, allowLoading: false }));\n intialThemes = [{ ...intialThemes[0], allowLoading: true }, ...intialThemes.slice(1)];\n setThemesWithLoadAllowed(intialThemes);\n }, [themes]);\n\n const handleViewModeChange = selectedMode => {\n setViewMode(selectedMode);\n onViewModeChange(selectedMode);\n };\n\n // allow the next items loading\n const allowNextLoadingAfter = lastLoadedTheme => {\n const indexOfLoaded = themesWithLoadAllowed.indexOf(lastLoadedTheme);\n const updatedThemes = themesWithLoadAllowed.map((theme, index) => ((indexOfLoaded + 1) === index ? { ...theme, allowLoading: true } : { ...theme }));\n setThemesWithLoadAllowed(updatedThemes);\n };\n\n // find the last loaded item and trigger the next item's loading\n const handleOnLoad = (event, loadedTheme, loadedThemeIndex) => {\n const lastLoadedItemIndex = themesWithLoadAllowed.map(theme => theme.allowLoading).lastIndexOf(true);\n if (lastLoadedItemIndex === loadedThemeIndex) {\n allowNextLoadingAfter(loadedTheme);\n }\n\n // add custom css to the object el's document\n addMobileHeadSpacer(event.target);\n };\n return (\n
    \n {/* preview frames: mobile, tablet, desktop */}\n
    \n
    \n {!forStandalonePageTemplate ? (\n <>\n
    \n
    \n {getCurrentTime()}\n
    \n
    \n \n
    \n
    \n \n \n ) : (\n \n )}\n
    \n
    \n {!forStandalonePageTemplate ? (\n \n ) : (\n \n )}\n
    \n
    \n {/* standard preview */}\n {!showAsTemplatePreview && !areThemesLoading && (\n \n )}\n {/* app template preview */}\n {showAsTemplatePreview && (\n \n )}\n
    \n {\n !forStandalonePageTemplate && (\n
    \n {customTryText !== null ? t(customTryText) : texts.TRY_ME}\n
    \n
    \n )\n }\n
    \n {/* responsive controls */}\n \n
    \n );\n};\n\nAppPreviewBody.propTypes = {\n template: object,\n themes: arrayOf(shape()),\n currentThemeId: (oneOfType([number, string])),\n onViewModeChange: func,\n showThemeChangeTransition: bool,\n showAsTemplatePreview: bool,\n forStandalonePageTemplate: bool,\n previewQueryParams: string,\n customTryText: string,\n modalContentLoading: bool,\n customOnLoad: func\n};\n\nAppPreviewBody.defaultProps = {\n onViewModeChange: f => f,\n themes: [],\n currentThemeId: 0,\n customTryText: null,\n modalContentLoading: false,\n showThemeChangeTransition: false,\n forStandalonePageTemplate: false,\n previewQueryParams: '',\n showAsTemplatePreview: false,\n template: {\n splashBgColor: 'rgba(243, 243, 254, 1)'\n },\n customOnLoad: f => f\n};\n\nexport default AppPreviewBody;\n","import React from 'react';\nimport {\n string, object, bool, func\n} from 'prop-types';\nimport './style.scss';\nimport { AppPreviewBody } from '../../../AppPreview';\n\nconst AppTemplateAreaRenderer = ({\n modelContentLoading, backgroundColor, setModelContentLoading,\n rightArrowRef, leftArrowRef, template\n}) => {\n const { app_id: appID } = template;\n return (\n
    \n
    \n
    \n
    \n {\n setModelContentLoading(false);\n rightArrowRef.current.classList.remove('load-active');\n leftArrowRef.current.classList.remove('load-active');\n }}\n modalContentLoading={modelContentLoading}\n />\n
    \n
    \n
    \n
    \n );\n};\n\nAppTemplateAreaRenderer.defaultProps = {\n backgroundColor: '',\n rightArrowRef: null,\n leftArrowRef: null,\n modelContentLoading: true,\n template: {},\n setModelContentLoading: f => f\n};\n\nAppTemplateAreaRenderer.propTypes = {\n modelContentLoading: bool,\n backgroundColor: string,\n rightArrowRef: object,\n leftArrowRef: object,\n template: object,\n setModelContentLoading: func\n};\n\nexport default AppTemplateAreaRenderer;\n","/* eslint-disable react/prop-types */\nimport React, { forwardRef, useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { TextInput, Dropdown } from '@jotforminc/uikit';\nimport { classNames } from '@jotforminc/utils';\n\nconst DropdownEditor = ({\n options,\n onChange,\n selectedOptionValue,\n textInputPlaceholder,\n ...props\n}) => {\n const [menuOpen, setMenuOpen] = useState(false);\n const selectOption = selectedOption => {\n onChange(selectedOption);\n };\n\n const ContainerRenderer = ({ children }) => (\n
      {children}
    \n );\n const ButtonRenderer = forwardRef(({\n option: { text, value } = {}, placeholder, isOptionsVisible, ...buttonProps\n }, ref) => {\n useEffect(() => {\n setMenuOpen(isOptionsVisible);\n }, [isOptionsVisible]);\n\n return (\n
    \n \n {text || placeholder}\n \n
    \n );\n });\n\n const TextInputRenderer = ({ ...textInputProps }) => {\n return (\n
    \n \n
    \n );\n };\n\n const GroupRenderer = ({ text, children, ...groupProps }) => {\n return (\n
    \n {text}\n
    {children}
    \n
    \n );\n };\n\n const OptionContainerRenderer = optionProps => {\n // eslint-disable-next-line react/destructuring-assignment\n const color = optionProps?.children?.props?.option?.color || '#151039';\n return (\n
  • \n );\n };\n\n return (\n
    \n \n
    \n\n );\n};\n\nDropdownEditor.propTypes = {\n options: PropTypes.array.isRequired,\n onChange: PropTypes.func,\n selectedOptionValue: PropTypes.string,\n textInputPlaceholder: PropTypes.string\n};\n\nDropdownEditor.defaultProps = {\n onChange: f => f,\n selectedOptionValue: null,\n textInputPlaceholder: null\n};\n\nexport default DropdownEditor;\n","/* eslint-disable import/no-cycle */\n/* eslint-disable react/prop-types */\nimport React, {\n useState, useRef, useEffect\n} from 'react';\nimport { object } from 'prop-types';\nimport { IconEyeFilled } from '@jotforminc/svg-icons';\nimport { capitalizeFirstLetter, classNames } from '@jotforminc/utils';\nimport { t } from '@jotforminc/translation';\n\nimport './style.scss';\nimport RoleSelector from '../RoleSelector';\nimport { templateConstants } from '../../templateConstants';\n// import Button from '../../../Button';\n// import texts from '../../../../core/texts';\n\nconst PDFTemplateAreaRenderer = ({\n template, DOM,\n setModelContentLoading, templateType\n}) => {\n const objectRef = useRef();\n const [signers, setSigners] = useState([]);\n const [signAnnotations, setSignAnnotations] = useState([]);\n const [currentParticipantID, setCurrentParticipantID] = useState('');\n const [loadingPreview, setLoadingPreview] = useState(true);\n\n const {\n _id,\n screenshot\n } = template;\n\n const { aliasType } = templateConstants[templateType];\n\n const resetPreviewStates = () => {\n setSigners([]);\n setSignAnnotations([]);\n setLoadingPreview(true);\n setCurrentParticipantID('');\n };\n\n useEffect(() => {\n resetPreviewStates();\n }, [template]);\n\n const getIframeInsideObject = objectEl => {\n if (!objectEl) return;\n const iFrameElement = objectEl.querySelector('IFRAME');\n const { contentDocument, contentWindow } = iFrameElement !== null ? iFrameElement : {};\n if (!contentWindow) return;\n return contentDocument || contentWindow.document;\n };\n\n const isFirstPdfPageRendered = iframeDoc => iframeDoc.getElementsByClassName('PDFV-canvas').length > 0;\n\n const getOwnerName = owner => {\n const { role, type } = owner;\n if (type === 'owner') return 'Owner';\n return capitalizeFirstLetter(role || type);\n };\n\n const formatAnnotations = (annotations, iframeDoc) => {\n if (!iframeDoc) return;\n return annotations.map(annotation => {\n const { id } = annotation;\n return {\n id,\n ref: iframeDoc.querySelector(`[data-annotation-id=\"${id}\"]`)\n };\n });\n };\n\n const handleLoadObject = (event, tryCount = 0) => {\n const { current } = objectRef || {};\n if (!current) return;\n\n const { contentDocument, contentWindow = {} } = current;\n if (!contentDocument) return;\n\n if (tryCount > 100) {\n setLoadingPreview(false);\n }\n\n const iframeDoc = getIframeInsideObject(contentDocument);\n if (!iframeDoc || iframeDoc.readyState !== 'complete') {\n setTimeout(() => handleLoadObject(null, tryCount + 1), 100);\n return;\n }\n\n if (!isFirstPdfPageRendered(iframeDoc)) {\n setTimeout(() => handleLoadObject(null, tryCount + 1), 100);\n return;\n }\n setLoadingPreview(false);\n const { documentProps: { participants }, annotations = [] } = contentWindow;\n\n const allAnnotations = formatAnnotations(annotations, iframeDoc).filter(annotation => annotation.ref !== null);\n\n if (allAnnotations.length !== annotations.length && tryCount !== 100) {\n setTimeout(() => handleLoadObject(null, tryCount + 1), 100);\n return;\n }\n\n setSignAnnotations(allAnnotations);\n setSigners(\n participants.map(singer => {\n return { ...singer, prettyName: getOwnerName(singer) };\n })\n );\n };\n\n const showHideAnnotationElement = (show, element) => {\n if (show) {\n element.removeAttribute('data-participant');\n } else {\n element.setAttribute('data-participant', 'passive');\n }\n };\n\n const handleRoleChange = event => {\n const selectedValue = event?.value?.target || event?.value;\n\n setCurrentParticipantID(selectedValue);\n const { fields: selectedParticipantFields } = signers.find(signer => signer.participantID === selectedValue) || { fields: [] };\n signAnnotations.forEach(annotation => {\n const { ref: annotationElement } = annotation;\n if (selectedValue === '') {\n showHideAnnotationElement(true, annotationElement);\n } else {\n const qid = annotationElement.getAttribute('data-qid');\n const isPassive = !selectedParticipantFields.includes(qid);\n showHideAnnotationElement(!isPassive, annotationElement);\n }\n });\n };\n\n const signerOptions = [{ prettyName: 'All Roles ', participantID: '' }, ...signers];\n const isRoleBarActive = signers.length > 0;\n\n const { signable } = template;\n const isSignablePDF = signable === '1';\n\n // eslint-disable-next-line max-len\n const embedPDFCss = '';\n return (\n <>\n \n
    \n {loadingPreview && (\n <>\n
    \n \n \n \n
    \n {\n isSignablePDF && (\n \n )\n }\n \n )}\n {\n isSignablePDF ? (\n // eslint-disable-next-line jsx-a11y/alt-text\n {\n handleLoadObject(event);\n setModelContentLoading(false);\n }}\n id=\"pdf-template-preview\"\n className='w-full h-full relative z-2'\n data={`/${(aliasType || templateType)}/preview/esign/${_id}`}\n style={{\n opacity: loadingPreview ? 0 : 1, height: loadingPreview ? '0px' : '100%'\n }}\n />\n ) : (\n
    \n {\n setTimeout(() => { setLoadingPreview(false); }, 1000);\n setModelContentLoading(false);\n }}\n data={`data:text/html,${encodeURIComponent(`${embedPDFCss}${DOM}`)}`}\n style={{\n opacity: loadingPreview ? 0 : 1, zIndex: 0\n }}\n />\n
    \n\n )\n }\n
    \n \n {\n isSignablePDF && (\n
    \n
    \n
    \n \n {t('Previewing as')}\n :\n
    \n {\n return {\n text: option.prettyName,\n value: option.participantID,\n color: option.color\n };\n })}\n onChange={handleRoleChange}\n selectedOptionValue={currentParticipantID}\n />\n
    \n
    \n {t('Customize this template and share it to collect e-signatures')}\n
    \n
    \n )\n }\n \n );\n};\n\nPDFTemplateAreaRenderer.defaultProps = {\n template: {}\n};\n\nPDFTemplateAreaRenderer.propTypes = {\n template: object\n};\n\nexport default PDFTemplateAreaRenderer;\n","/* eslint-disable import/no-cycle */\n/* eslint-disable react/prop-types */\nimport React from 'react';\nimport { Button } from '@jotforminc/magnet';\nimport { IconCopy } from '@jotforminc/svg-icons';\n\nimport { handleCustomNavigation } from '@jotforminc/utils';\nimport { t } from '@jotforminc/translation';\nimport WorkflowTemplateAreaRenderer from './components/PreviewModalContents/ApprovalTemplatePreviewContent';\nimport TableTemplateAreaRenderer from './components/PreviewModalContents/TableTemplatePreviewContent';\nimport { AskMeSectionRenderer, FormTemplatesTabRenderer, OverviewTabRenderer } from './components/PreviewModalContents/AgentTemplatePreviewContent';\nimport AppTemplateAreaRenderer from './components/PreviewModalContents/AppTemplateAreaRenderer';\nimport { formatBigNumber } from './utils';\nimport PDFTemplateAreaRenderer from './components/PreviewModalContents/PDFTemplateAreaRenderer';\n\nexport const customModalConstants = {\n 'agent-templates': {\n OverviewTabRenderer,\n cloneCTAColor: 'apps',\n ctaClasses: ['isAgent'],\n customCTAText: 'Use Agent',\n FormTemplatesTabRenderer,\n customLoadMoreText: 'Show more agents',\n similarTemplatesText: 'Other agents',\n customSearchPlaceholder: 'Search in Agent Directory',\n templateAreaRendererClass: 'w-full h-full relative z-0',\n tabs: [{ id: 'form-templates', name: 'Connected Forms', data: '' }],\n CategoriesSectionRenderer: ({ template, frameRef }) => \n },\n 'form-templates': {},\n 'sign-templates': {\n TemplateAreaRenderer: PDFTemplateAreaRenderer\n },\n 'pdf-templates': {\n TemplateAreaRenderer: PDFTemplateAreaRenderer\n },\n 'app-templates': {\n TemplateAreaRenderer: AppTemplateAreaRenderer\n },\n 'approval-templates': {\n TemplateAreaRenderer: WorkflowTemplateAreaRenderer,\n customSearchPlaceholder: 'Search in Workflow Templates'\n },\n 'table-templates': {\n TemplateAreaRenderer: TableTemplateAreaRenderer,\n ctaClasses: ['shrink-1'],\n SecondaryCTA: ({ slug }) => (\n handleCustomNavigation(`/table-templates/demo/${slug}`, '_self')}\n >\n {t('See Demo')}\n \n )\n },\n 'page-templates': {\n }\n};\n\nexport const DefaultOverviewTabRenderer = ({\n isEnterpriseEnv, templateCategoriesData,\n _description, description, _clonecount, clonecount,\n templateType, username, _username\n}) => {\n return (\n
    \n {\n (!isEnterpriseEnv) && (\n
    \n {t('About this template')}\n
    \n
    \n )\n }\n
    \n
    \n Categories\n
      \n {templateCategoriesData.map(category => (\n
    • \n \n {category.title}\n \n
    • \n ))}\n
    \n
    \n
    \n Details\n
    \n
    \n \n
    \n {formatBigNumber(_clonecount || clonecount)}\n \n {' '}\n {t('Clone')}\n \n
    \n
    \n
    \n
    \n {\n !isEnterpriseEnv && (\n
    \n Created by\n
    \n
    \n \n \n \n \n \n \n
    \n \n {_username || username}\n \n
    \n
    \n )\n }\n
    \n
    \n );\n};\n","/* eslint-disable @jotforminc/no-native-button */\nimport React, {\n useRef, useState, useEffect, Fragment\n} from 'react';\nimport {\n arrayOf, object, func, string, number, bool\n} from 'prop-types';\nimport { t } from '@jotforminc/translation';\nimport { isEnterprise } from '@jotforminc/enterprise-utils';\nimport { Swiper, SwiperSlide } from 'swiper/react';\n\nimport 'swiper/css';\nimport 'swiper/css/navigation';\n\nimport { IconChevronLeft, IconChevronRight } from '@jotforminc/svg-icons';\nimport { ScTemplates } from '../ScTemplates';\nimport TemplateItemContainer from '../TemplateItem/TemplateItemContainer';\nimport { getDeviceType } from '../../getDeviceType';\n// eslint-disable-next-line import/no-cycle\nimport { customModalConstants } from '../../customModalConstants';\n\nconst dummyTemplatesArray = [\n { screenshot: 'skeleton', title: 'skeleton', id: 'skeleton-1' },\n { screenshot: 'skeleton', title: 'skeleton', id: 'skeleton-2' },\n { screenshot: 'skeleton', title: 'skeleton', id: 'skeleton-3' },\n { screenshot: 'skeleton', title: 'skeleton', id: 'skeleton-4' },\n { screenshot: 'skeleton', title: 'skeleton', id: 'skeleton-5' },\n { screenshot: 'skeleton', title: 'skeleton', id: 'skeleton-6' }\n];\n\nconst SimilarTemplatesItem = ({\n similarTemplates, modalBodyRef, categoryData, onTemplateClone, templateType, source, theme, useSlider, newStandaloneActive,\n setModalContentLoading, customOnSelectTemplate, skeletonCount, selectTemplateCallback, parentTemplateID, displayMyformsModal,\n modelContentLoading\n}) => {\n const sliderRef = useRef(null);\n const [sliderRealIndex, setSliderRealIndex] = useState(0);\n const [disableNavigationNext, setDisableNavigationNext] = useState(false);\n const [similarsLoaded, setSimilarsLoaded] = useState(false);\n\n const deviceType = getDeviceType();\n const isDesktop = deviceType === 'desktop';\n\n useEffect(() => {\n if (Object.keys(categoryData).length > 0) {\n setSimilarsLoaded(true);\n }\n }, [categoryData]);\n\n const handleSelectTemplateWrapper = newTemplate => {\n selectTemplateCallback();\n customOnSelectTemplate();\n setSimilarsLoaded(false);\n modalBodyRef?.current?.scrollTo({ top: 0, behavior: 'smooth' });\n if (!newStandaloneActive) {\n const navigatedTemplateData = {\n ...newTemplate\n };\n displayMyformsModal({ template: { navigatedTemplateData }, ...navigatedTemplateData });\n return;\n }\n global?.setSelectedTemplate(newTemplate);\n setModalContentLoading(true);\n };\n\n const seeAlsoTemplates = (similarsLoaded && !modelContentLoading) ? similarTemplates : dummyTemplatesArray.slice(0, skeletonCount);\n\n if (seeAlsoTemplates.length <= 0) return null;\n\n const prettySeeAlsoTemplates = seeAlsoTemplates.length > 3 ? seeAlsoTemplates.slice(0, 6) : seeAlsoTemplates;\n\n const { similarTemplatesText = 'Related templates' } = customModalConstants[templateType];\n return (\n \n {\n useSlider ? (\n <>\n
    \n {t(similarTemplatesText)}\n
    \n {\n if (!sliderRef.current) return;\n sliderRef.current.swiper.slidePrev();\n setSliderRealIndex(sliderRef.current.swiper.realIndex);\n setDisableNavigationNext(sliderRef.current.swiper.isEnd);\n }}\n disabled={sliderRealIndex === 0}\n style={{ opacity: sliderRealIndex === 0 ? 0.4 : 1, pointerEvents: sliderRealIndex === 0 ? 'none' : 'auto' }}\n >\n \n \n {\n if (!sliderRef.current) return;\n sliderRef.current.swiper.slideNext();\n setDisableNavigationNext(sliderRef.current.swiper.isEnd);\n setSliderRealIndex(sliderRef.current.swiper.realIndex);\n }}\n disabled={disableNavigationNext}\n style={{\n opacity: disableNavigationNext ? 0.4 : 1,\n pointerEvents: disableNavigationNext ? 'none' : 'auto'\n }}\n >\n Next\n \n \n
    \n
    \n \n \n {prettySeeAlsoTemplates.map(similiarTemplate => {\n return (\n \n handleSelectTemplateWrapper(newTemplate)}\n />\n \n );\n })}\n \n \n \n ) : (\n <>\n

    {t('More templates like this')}

    \n
    \n \n
    \n {prettySeeAlsoTemplates.map(similiarTemplate => {\n return (\n \n handleSelectTemplateWrapper(newTemplate)}\n />\n \n );\n })}\n
    \n
    \n
    \n \n )\n }\n
    \n );\n};\n\nSimilarTemplatesItem.defaultProps = {\n theme: '',\n source: '',\n useSlider: false,\n skeletonCount: 6,\n categoryData: null,\n similarTemplates: [],\n parentTemplateID: '',\n modalBodyRef: undefined,\n onTemplateClone: () => {},\n customOnSelectTemplate: () => {},\n selectTemplateCallback: () => {},\n displayMyformsModal: f => f,\n newStandaloneActive: true,\n modelContentLoading: false\n};\n\nSimilarTemplatesItem.propTypes = {\n theme: string,\n source: string,\n useSlider: bool,\n modalBodyRef: object,\n categoryData: object,\n skeletonCount: number,\n onTemplateClone: func,\n parentTemplateID: string,\n selectTemplateCallback: func,\n customOnSelectTemplate: func,\n templateType: string.isRequired,\n similarTemplates: arrayOf(object),\n setModalContentLoading: func.isRequired,\n displayMyformsModal: func,\n newStandaloneActive: bool,\n modelContentLoading: bool\n};\n\nexport default SimilarTemplatesItem;\n","import { useState, useEffect } from 'react';\n\nconst useIsMobile = () => {\n const [isMobile, setIsMobile] = useState(false);\n useEffect(() => {\n const handleResize = () => {\n setIsMobile(window.innerWidth < 780);\n };\n window.addEventListener('resize', handleResize);\n handleResize();\n return () => window.removeEventListener('resize', handleResize);\n }, []);\n return isMobile;\n};\n\nexport default useIsMobile;\n","import {\n useEffect,\n useState,\n useRef\n} from 'react';\nimport { ABTestManager } from '@jotforminc/abtest-manager';\n\nexport const useABTestManager = options => {\n const [isLoading, setIsLoading] = useState(true);\n const [isTestVariant, setIsTestVariant] = useState(false);\n const abTestActionRef = useRef(f => f);\n\n useEffect(() => {\n const abTestManager = new ABTestManager(options);\n abTestManager.isTestVariant().then(setIsTestVariant).finally(() => setIsLoading(false));\n abTestActionRef.current = abTestManager.registerABTestAction;\n }, []);\n\n return [isLoading, isTestVariant, abTestActionRef.current];\n};\n\nexport const useOutsideClick = (callback, exceptionalSelectorList = []) => {\n const ref = useRef(null);\n\n useEffect(() => {\n const handleClickOutside = event => {\n event.stopPropagation();\n let clickedExceptionalElement = false;\n for (let index = 0; index < exceptionalSelectorList.length; index++) {\n const selector = exceptionalSelectorList[index];\n const exceptionalEl = document.querySelector(selector);\n if (exceptionalEl && exceptionalEl.contains(event.target)) {\n clickedExceptionalElement = true;\n break;\n }\n }\n if (clickedExceptionalElement) return;\n\n if (ref.current && (!ref.current.contains(event.target) || ref.current === event.target)) {\n callback();\n }\n };\n\n document.addEventListener('mouseup', handleClickOutside);\n document.addEventListener('touchend', handleClickOutside);\n\n return () => {\n document.removeEventListener('mouseup', handleClickOutside);\n document.removeEventListener('touchend', handleClickOutside);\n };\n }, [callback]);\n\n return ref;\n};\n","/* eslint-disable react/button-has-type */\n/* eslint-disable react/prop-types */\n/* eslint-disable max-len */\n/* eslint-disable jsx-a11y/click-events-have-key-events */\n/* eslint-disable eqeqeq */\n/* eslint-disable jsx-a11y/anchor-is-valid */\n/* eslint-disable complexity */\n/* eslint-disable @jotforminc/no-native-button */\nimport React, { useRef, useState, useEffect } from 'react';\nimport ReactDOM from 'react-dom';\n\nimport { t } from '@jotforminc/translation';\nimport { classNames, capitalizeFirstLetter } from '@jotforminc/utils';\n\nimport { Button, InputText } from '@jotforminc/magnet';\nimport {\n IconArrowDown, IconXmark, IconChevronLeft,\n IconChevronRight, IconMagnifyingGlass\n} from '@jotforminc/svg-icons';\nimport { isEnterprise } from '@jotforminc/enterprise-utils';\nimport texts from '../../core/texts';\nimport ModalControls from '../StandaloneTemplates/components/PreviewModalContents/ModalControls';\nimport SimilarTemplatesItem from '../StandaloneTemplates/components/PreviewModalContents/SimilarTemplatesItem';\nimport useIsMobile from '../../hooks/useIsMobile';\nimport { useOutsideClick } from '../StandaloneTemplates/hooks';\nimport { getTemplatePreviewURL } from '../StandaloneTemplates/utils';\nimport Loader from '../Loader';\nimport { customModalConstants, DefaultOverviewTabRenderer } from '../StandaloneTemplates/customModalConstants';\n\nconst NewWizardTemplateModal = ({\n similarTemplates, handleClose, previewURL, modalProps, username, formTemplate, forms,\n template, title, frameSrc, categoryData, setModalContentLoading, theme, displayMyformsModal,\n isCloningTemplate = false, useTemplate, categories, setSelectedCategory, legacyStandaloneFrameRef,\n templateTabs = [], searchKeyword, setSearchKeyword, standaloneTemplates, newStandaloneActive, DOM, openTemplateModalInPortal\n}) => {\n const [activeTabID, setActiveTabID] = useState('overview');\n\n const [modelContentLoading, setModelContentLoading] = useState(true);\n const wizardModalBodyRef = useOutsideClick(\n handleClose,\n ['.jfWizard-modal', '#CookieBanner', '.templateSuggestionModal-neverShowGroup']\n );\n const frameRef = useRef();\n const closeBtnRef = useRef();\n const similarTemplatefRef = useRef();\n\n const leftArrowRef = useRef();\n const rightArrowRef = useRef();\n\n const templateType = frameSrc.split('/')[1];\n const [resourceName] = templateType.split(' ');\n\n const isMobile = useIsMobile();\n const modalVisibleClassName = 'jfWizard--isModalVisible';\n\n const {\n _id, id,\n _metaDescription, metaDescription, _slug, thumbnailBackgroundColor: backgroundColor,\n _categories, categories: templateCategories, _previewImageUrl\n } = template;\n\n useEffect(() => {\n if (closeBtnRef.current) {\n closeBtnRef.current.scrollIntoView({ behavior: 'smooth' });\n }\n setModelContentLoading(true);\n }, [(_id || id)], _previewImageUrl);\n\n const handleArrowClick = ({ key }) => {\n if (!['ArrowLeft', 'ArrowRight'].includes(key)) return;\n const isArrowLeft = key === 'ArrowLeft';\n const actionTarget = isArrowLeft ? leftArrowRef.current : rightArrowRef.current;\n\n if (actionTarget) actionTarget.classList.add('load-active');\n\n let currentTemplateOrder = standaloneTemplates.findIndex(templateIterator => (_id || id) === (templateIterator._id || templateIterator.id));\n\n if ((currentTemplateOrder === 0 && isArrowLeft) || (currentTemplateOrder === standaloneTemplates.length - 1 && !isArrowLeft)) {\n currentTemplateOrder = isArrowLeft ? standaloneTemplates.length : -1;\n }\n\n const navigatedTemplate = standaloneTemplates[isArrowLeft ? currentTemplateOrder - 1 : currentTemplateOrder + 1];\n if (navigatedTemplate) {\n global.setSelectedTemplate(navigatedTemplate);\n }\n };\n\n useEffect(() => {\n document.body.classList.add(modalVisibleClassName);\n return () => {\n document.body.classList.remove(modalVisibleClassName);\n };\n }, []);\n\n useEffect(() => {\n window.addEventListener('keydown', handleArrowClick);\n return () => {\n window.removeEventListener('keydown', handleArrowClick);\n };\n }, [standaloneTemplates, template]);\n\n const {\n tabs = [],\n ctaClasses = [],\n OverviewTabRenderer,\n FormTemplatesTabRenderer = () => null,\n SecondaryCTA = () => null,\n customCTAText = texts.USE_TEMPLATE,\n templateAreaRendererClass = 'w-full h-full lg:min-h-md lg:radius-md lg:absolute'\n } = customModalConstants[templateType];\n\n const formatedTabs = [\n { id: 'overview', name: 'Overview', data: '' },\n ...tabs,\n ...(templateTabs.filter(tab => tab.id !== 'more')) // more: unknown app template tab?\n ];\n const splitedTemplateCategories = (_categories || templateCategories || '').trim().split(',').filter(category => category);\n const templateCategoriesData = categories.filter(({ id: categoryID, _id: _categoryID }) => splitedTemplateCategories.find(cat => cat == (_categoryID || categoryID)));\n const isEnterpriseEnv = isEnterprise();\n\n const tabsRenderer = () => {\n switch (activeTabID) {\n case 'overview':\n if (OverviewTabRenderer) return ;\n return (\n \n );\n case 'form-templates':\n return (\n \n );\n default:\n break;\n }\n const { data: activeTabContent } = formatedTabs.find(tab => tab.id === activeTabID);\n return (\n
    \n
    \n
    \n );\n };\n\n const formatLegacyStandaloneCategoryData = () => {\n if (!categoryData) return [];\n const result = [];\n const { parent } = categoryData;\n if (parent) result.push({ ...parent, title: parent.name });\n result.push({ ...categoryData, title: categoryData.name });\n return result;\n };\n\n const templateTypePretty = templateType.split('-')[0] === 'pdf' ? 'PDF' : capitalizeFirstLetter(templateType.split('-')[0]);\n const templatePreviewURL = getTemplatePreviewURL({ template, templateType, previewURL });\n\n const CategoriesRenderer = () => (\n
    \n {t('Categories')}\n
      \n {\n (newStandaloneActive ? templateCategoriesData : formatLegacyStandaloneCategoryData(categoryData)).map(category => (\n
    • \n {\n event.stopPropagation();\n if (newStandaloneActive) {\n setSelectedCategory(category);\n } else if (legacyStandaloneFrameRef?.current) {\n const frameWindow = legacyStandaloneFrameRef?.current.contentWindow;\n const currentPath = frameWindow.location.pathname;\n frameWindow.open(`${currentPath}/category/${category.slug}`, '_self');\n }\n handleClose();\n }}\n className=\"no-underline color-navy-300 py-0.5 px-2 text-sm line-height-md radius mb-1 flex border-0 bg-navy-25 hover:bg-navy-75\"\n >\n {category.title}\n \n
    • \n ))\n }\n
    \n
    \n );\n const QRImageRenderer = () => (\n
    \n \n \n
    \n\n
    \n

    {t('See app in action')}

    \n

    \n {t('Use your camera to scan the QR code and preview the app on your device.')}\n

    \n
    \n
    \n );\n\n const {\n customLoadMoreText = 'Show more templates',\n customSearchPlaceholder = `Search in ${templateTypePretty} Templates`,\n TemplateAreaRenderer, cloneCTAColor = 'primary',\n CategoriesSectionRenderer = CategoriesRenderer,\n QRSectionRenderer = QRImageRenderer\n } = customModalConstants[templateType];\n\n const CloneTemplateCTA = ({ mainClass }) => (\n useTemplate(template, target)}\n size=\"large\"\n >\n {t(isCloningTemplate ? texts.PLEASE_WAIT : customCTAText)}\n \n );\n\n const ModalRenderer = (\n \n \n
    \n \n
    \n \n
    \n
    \n
    \n
    \n
    \n \n {title}\n

    \n
    \n
    \n \n
    \n {\n TemplateAreaRenderer ? (\n \n ) : (\n
    \n {modelContentLoading && }\n {\n setModelContentLoading(false);\n rightArrowRef.current.classList.remove('load-active');\n leftArrowRef.current.classList.remove('load-active');\n }}\n className={templateAreaRendererClass}\n />\n
    \n )\n }\n \n f}\n // eslint-disable-next-line max-len\n className=\"modal-arrow bg-transparent border-0 outline-0 left relative w-12 h-12 color-navy-500 inline-flex items-center justify-center radius hover:bg-navy-25 duration-200 transform rtl:rotate-180\"\n aria-label={t('Previous Template')}\n onClick={() => handleArrowClick({ key: 'ArrowLeft' })}\n >\n \n \n \n \n f}\n className=\"modal-arrow bg-transparent border-0 outline-0 right relative w-12 h-12 color-navy-500 inline-flex items-center justify-center radius hover:bg-navy-25 duration-200 transform rtl:rotate-180\"\n aria-label={t('Next Template')}\n onClick={() => handleArrowClick({ key: 'ArrowRight' })}\n >\n \n \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n {\n !isEnterpriseEnv && (\n
    \n {\n formatedTabs.map(({ id: tabID, name: tabName }) => (\n {\n setActiveTabID(tabID);\n if (tabID === 'form-templates') similarTemplatefRef.current.scrollIntoView({ behavior: 'smooth' });\n }}\n data-tab={tabID}\n >\n {tabName}\n \n ))\n }\n
    \n )\n }\n {\n similarTemplatefRef.current.scrollIntoView({ behavior: 'smooth' });\n }}\n className=\"showMoreTemplatesBtn flex items-center color-navy-500 outline-0 border-0 radius-full hover:bg-navy-25 pr-3 rtl:pl-3 rtl:pr-0\"\n >\n \n \n \n {customLoadMoreText}\n \n
    \n {tabsRenderer()}\n
    \n {\n similarTemplates && (\n
    \n useTemplate(templateParam, target)}\n categoryData={categoryData}\n displayMyformsModal={displayMyformsModal}\n modelContentLoading={modelContentLoading}\n similarTemplates={similarTemplates}\n setModalContentLoading={stillLoading => setModalContentLoading(stillLoading)}\n />\n
    \n )\n }\n
    \n
    \n {\n !isMobile && (\n f}\n rightRef={!isMobile ? rightArrowRef : f => f}\n />\n )\n }\n
    \n \n \n \n );\n\n const usePortal = openTemplateModalInPortal;\n\n if (usePortal) {\n return ReactDOM.createPortal(ModalRenderer, global.document.body);\n }\n return ModalRenderer;\n};\n\nexport default NewWizardTemplateModal;\n","import React, { useState } from 'react';\nimport { string, object, func } from 'prop-types';\nimport Loader from '../Loader';\n\nconst LegacyTemplatesRenderer = ({ frameSrc, frameRef, handleTemplateLoad }) => {\n const [frameActive, setFrameActive] = useState(false);\n return (\n <>\n \n {\n setFrameActive(true);\n handleTemplateLoad();\n }}\n className=\"jfWizard-templates-frame\"\n />\n \n );\n};\n\nexport default LegacyTemplatesRenderer;\n\nLegacyTemplatesRenderer.propTypes = {\n frameSrc: string,\n frameRef: object,\n handleTemplateLoad: func\n};\n\nLegacyTemplatesRenderer.defaultProps = {\n frameSrc: '',\n frameRef: null,\n handleTemplateLoad: f => f\n};\n","/* eslint-disable no-param-reassign */\n/* eslint-disable react/prop-types */\nimport React, { createRef } from 'react';\nimport { func, string, bool } from 'prop-types';\nimport { t } from '@jotforminc/translation';\nimport { serialize, classNames, handleCustomNavigation } from '@jotforminc/utils';\nimport { openFormLimitDialog } from '@jotforminc/limit-dialog';\n\nimport { isEnterprise } from '@jotforminc/enterprise-utils';\nimport Header from '../Header';\nimport WizardBody from '../Wizard/WizardBody';\nimport WizardItem from '../Wizard/WizardItem';\n\nimport texts from '../../core/texts';\nimport { templateConstants, isNewStandaloneActive } from '../StandaloneTemplates/templateConstants';\nimport { fetch } from '../../core/utils';\nimport StandaloneTemplates from '../StandaloneTemplates';\nimport {\n convertFormUserToCloneTemplate, getCategory, getEnterpriseTemplate, getTemplate\n} from '../StandaloneTemplates/apiTemplates';\nimport { getUrlSearchParamByKey, getUsername } from '../StandaloneTemplates/utils';\nimport NewWizardTemplateModal from '../Wizard/NewWizardTemplateModal';\nimport LegacyTemplatesRenderer from './LegacyTemplatesRenderer';\n\nexport default class UseTemplate extends React.Component {\n constructor(props) {\n super(props);\n\n const searchPrefillData = getUrlSearchParamByKey({ key: 'search' });\n this.state = {\n modalProps: {},\n modalVisible: false,\n modalDetailsData: {},\n standaloneTemplates: [],\n modalContentLoading: true,\n categories: [],\n selectedCategory: undefined,\n searchKeyword: searchPrefillData || ''\n };\n\n this.useTemplateFrame = createRef();\n\n this.hideyMyformsModal = this.hideyMyformsModal.bind(this);\n this.handleTemplateLoad = this.handleTemplateLoad.bind(this);\n this.displayMyformsModal = this.displayMyformsModal.bind(this);\n this.getClonePayloadData = this.getClonePayloadData.bind(this);\n this.handleTemplateClone = this.handleTemplateClone.bind(this);\n this.frameAutoResizeHandler = this.frameAutoResizeHandler.bind(this);\n this.getTemplateType = this.getTemplateType.bind(this);\n this.useTemplateFrameLoader = this.useTemplateFrameLoader.bind(this);\n this.handleCloneGTMAction = this.handleCloneGTMAction.bind(this);\n }\n\n componentDidMount() {\n global.useTemplateAutoResizeHandler = this.frameAutoResizeHandler;\n global.displayMyformsModal = this.displayMyformsModal;\n global.useTemplateFrameLoader = this.useTemplateFrameLoader;\n const { creationLogger } = this.props;\n global.creationLogger = creationLogger;\n }\n\n componentWillUnmount() {\n delete global.useTemplateAutoResizeHandler;\n delete global.displayMyformsModal;\n delete global.creationLogger;\n }\n\n handleTemplateLoad() {\n if (this.useTemplateFrame.current) {\n const iframeContentWindow = this.useTemplateFrame.current.contentWindow;\n if (iframeContentWindow.FormTemplate) {\n iframeContentWindow.FormTemplate.cloneTemplate = this.handleTemplateClone;\n }\n }\n }\n\n handleCloneGTMAction(templateData, cloneActionKey = '') {\n if (!templateData || Object.keys(templateData).length === 0) return;\n if (!cloneActionKey || cloneActionKey === '') return;\n const { id, slug } = templateData;\n const slugOrIDActionKey = slug ? 'slug' : 'id';\n\n const payload = {\n event: cloneActionKey,\n [slugOrIDActionKey]: slug || id\n };\n const { dataLayer = [] } = window;\n dataLayer.push(payload);\n }\n\n async handleTemplateClone(templateData, element) {\n let previousElementContent;\n if (element) {\n previousElementContent = element.innerHTML;\n (element.querySelector('span') || element).innerHTML = 'Please wait...'.locale();\n }\n\n const {\n source, onFormCreate, actionLogger, teamID, user, portalRoot, folderID, viewProps = {}, creationLogger, isSignTemplates, username, handleBeforeCreatingAsset\n } = this.props;\n\n if (user?.userType === 'formuser') {\n await convertFormUserToCloneTemplate();\n }\n\n if (handleBeforeCreatingAsset) {\n await handleBeforeCreatingAsset();\n }\n\n const { onFormCreate: onFormCreateFromViewProps = false } = viewProps;\n const { templateType } = this.getTemplateType();\n const {\n successAction, failMessage, failAction, payload\n } = this.getClonePayloadData(templateType, templateData);\n\n const usernameData = getUsername(username, user);\n const { aliasType, gtmCloneActionKey } = templateConstants[templateType];\n const { slug, categories = '', ...rest } = payload;\n const salesforceTemplateCategoryID = '3254377341';\n const isSalesforceTemplate = categories.includes(salesforceTemplateCategoryID);\n if (creationLogger) {\n creationLogger(isSignTemplates ? 'useSignTemplate' : 'useTemplate');\n }\n\n const isAgentDirectory = templateType === 'agent-templates';\n const getCloneEndpointURL = () => {\n switch (true) {\n case isAgentDirectory:\n return 'agent-directory';\n case templateType === 'approval-templates':\n return 'workflow-templates';\n default:\n return aliasType || templateType;\n }\n };\n\n return fetch(`/${getCloneEndpointURL()}/api`, {\n method: 'POST',\n body: serialize({\n ...rest, source, teamID, folderID\n }),\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n ...teamID ? { 'jf-team-id': teamID } : {}\n }\n }).then(r => r.json()).then(response => {\n const onFormCreateHandler = onFormCreateFromViewProps || onFormCreate;\n const {\n cloneRedirectionFunc = id => onFormCreateHandler(id, isSalesforceTemplate),\n extractIdFromResponse = res => {\n const { data: { id: newClonedResourceID } } = res;\n return newClonedResourceID;\n }\n } = templateConstants[templateType];\n\n const clonedTemplateID = extractIdFromResponse(response);\n if (clonedTemplateID) {\n if (actionLogger) {\n actionLogger({\n action: successAction,\n target: clonedTemplateID\n });\n if (templateType === 'app-templates') {\n // Also track for portal-app\n // Pls don't change the action obj.\n const portalAppsAction = { action: 'appCreated', target: JSON.stringify({ portalID: clonedTemplateID }) };\n actionLogger(portalAppsAction, 'portal-app');\n }\n }\n if (templateType === 'app-templates') {\n window.sessionStorage.setItem('app-creation-source', 'app-templates-wizard');\n }\n this.handleCloneGTMAction(payload, gtmCloneActionKey);\n cloneRedirectionFunc(clonedTemplateID, usernameData);\n } else {\n console.warn(failMessage); // eslint-disable-line\n console.error(response); // eslint-disable-line\n\n if (actionLogger) {\n actionLogger({\n action: failAction,\n target: '.jfWizard-button.forUseTemplate'\n });\n }\n if (response?.data['form-limit-exceed']) {\n const portalElement = portalRoot || document.querySelector('#listing-portal-root');\n const limitedUser = user || global?.user;\n if (portalElement !== null && limitedUser) {\n // eslint-disable-next-line no-unused-vars\n openFormLimitDialog({ user: limitedUser, portalRoot: portalElement }).catch(err => {\n // modal closed\n });\n }\n }\n element.innerHTML = previousElementContent;\n }\n }).catch(() => {\n if (element) {\n element.innerHTML = previousElementContent;\n }\n });\n }\n\n getClonePayloadData(templateType, template) {\n const { modalProps = {} } = this.state;\n const { source = '' } = this.props;\n\n const { getCloneTemplatePayload = () => {} } = templateConstants[templateType];\n return getCloneTemplatePayload(modalProps, template, source);\n }\n\n getTemplateType() {\n const {\n langPath, templatePath, categories, teamID, folderID\n } = this.props;\n const params = { categories, teamID, folderID };\n const queryParams = Object.keys(params).reduce((prev, currKey) => ({ ...prev, ...params[currKey] ? { [currKey]: params[currKey] } : {} }), {});\n const frameSrc = [\n langPath,\n templatePath,\n (categories || teamID || folderID) ? `?${new URLSearchParams(queryParams)}` : ''\n ].filter(Boolean).join('');\n\n const templateType = frameSrc.split('/')[1];\n return { templateType, frameSrc };\n }\n\n frameAutoResizeHandler(frameHeight) {\n if (this.useTemplateFrame && typeof frameHeight === 'number') {\n this.useTemplateFrame.current.style.height = `${frameHeight}px`;\n }\n }\n\n useTemplateFrameLoader() {\n this.setState({\n modalContentLoading: false\n });\n }\n\n displayMyformsModal({ ...modalProps }) {\n const { templateType } = this.getTemplateType();\n const { source } = this.props;\n\n this.setState({ modalProps, modalVisible: true });\n const { hasDetailedPreviewModal = false } = templateConstants[templateType];\n if (hasDetailedPreviewModal) {\n const {\n template, language, filters = {}, theme\n } = modalProps;\n const emptyCategoryData = { name: 'empty', id: '0' };\n const templateID = template.id || template._id || modalProps.id || modalProps._id;\n const useStandaloneApi = templateType === 'form-templates' && isEnterprise();\n if (useStandaloneApi) {\n getEnterpriseTemplate(templateID, theme).then(res => {\n const {\n data: {\n formTemplate: {\n _featuredCategory, similarTemplates = [], tabs = [], _clonecount, clonecount, formTemplate, forms\n }\n }\n } = res?.data?.data || {};\n this.setState({\n modalDetailsData: {\n categoryData: _featuredCategory || emptyCategoryData,\n similarTemplates: similarTemplates,\n templateTabs: tabs,\n clonecount: _clonecount || clonecount,\n formTemplate,\n forms\n }\n });\n }).catch(() => {\n this.setState({\n modalDetailsData: {\n DOM: '',\n similarTemplates: [],\n templateTabs: [],\n categoryData: emptyCategoryData,\n formTemplate: [],\n forms: ''\n }\n });\n });\n } else {\n getTemplate(templateType, templateID, source, theme, isEnterprise()).then(response => {\n const {\n data: {\n content: {\n DOM, featuredCategory, _featuredCategory, similarTemplates = [], tabs = [], _clonecount, clonecount, formTemplate, forms\n }\n }\n } = response;\n getCategory(filters, { _id: (featuredCategory || _featuredCategory || '').trim() }, language, templateType, source).then(res => {\n this.setState({\n modalDetailsData: {\n DOM,\n categoryData: res?.data?.content || emptyCategoryData,\n similarTemplates: similarTemplates,\n templateTabs: tabs,\n clonecount: _clonecount || clonecount,\n formTemplate,\n forms\n }\n });\n });\n }).catch(() => {\n this.setState({\n modalDetailsData: {\n DOM: '',\n similarTemplates: [],\n templateTabs: [],\n categoryData: emptyCategoryData,\n formTemplate: [],\n forms: ''\n }\n });\n });\n }\n }\n }\n\n hideyMyformsModal() {\n this.setState({ modalVisible: false, searchKeyword: '' });\n this.setState({\n modalDetailsData: {\n DOM: '',\n similarTemplates: [],\n templateTabs: [],\n categoryData: {}\n }\n });\n }\n\n render() {\n const {\n setView, actionLogger, backButtonVisible, canClose, source, isMobileApp, customHandleClone = null, user = {}, liteMode = false,\n onBack, templateHeaderText, templateHeaderSubText, closable, hiddenHeader, viewProps = {}, username = '', liteModeActionButtonHandlers,\n customTrackingProjectName, teamID, withoutStartFromScratch, openTemplateModalInPortal\n } = this.props;\n\n const { defaultSelectedCategorySlug = null, onBack: onBackFromViewProps } = viewProps;\n const usernameData = getUsername(username, user);\n\n const {\n modalProps, modalVisible, modalContentLoading, modalDetailsData, standaloneTemplates, categories, selectedCategory, searchKeyword\n } = this.state;\n\n const { frameSrc, templateType } = this.getTemplateType();\n const newStandaloneActive = isNewStandaloneActive(frameSrc, isMobileApp, source);\n const {\n count = '',\n countKey = '',\n getCustomHeaderSubText = f => f\n } = templateConstants[templateType];\n\n const {\n extraSubTitleClasses = [],\n subTitle = t(templateHeaderSubText).replaceAll(countKey, count)\n } = !liteMode ? getCustomHeaderSubText({\n templateHeaderSubText, setView, countKey, count, teamID, username: usernameData, withoutStartFromScratch\n }) : f => f;\n\n const headerProps = { extraSubTitleClasses };\n\n return (\n \n {!hiddenHeader && (\n \n )}\n \n {\n newStandaloneActive\n ? (\n this.setState({ selectedCategory: category })}\n setCategories={categoriesData => this.setState({ categories: categoriesData })}\n setSearchKeyword={searchPayload => this.setState({ searchKeyword: searchPayload })}\n setStandaloneTemplates={templates => this.setState({ standaloneTemplates: templates })}\n handleTemplateClone={customHandleClone !== null ? customHandleClone : this.handleTemplateClone}\n />\n )\n : (\n \n )\n }\n {\n modalVisible && (\n this.setState({ selectedCategory: category })}\n setSearchKeyword={searchPayload => this.setState({ searchKeyword: searchPayload })}\n setModalContentLoading={loading => this.setState({ modalContentLoading: loading })}\n />\n )\n }\n \n \n );\n }\n}\n\nUseTemplate.propTypes = {\n setView: func,\n onBack: func,\n username: string,\n actionLogger: func,\n onFormCreate: func,\n langPath: string,\n templatePath: string,\n categories: string,\n source: string,\n backButtonVisible: bool,\n templateHeaderText: string,\n templateHeaderSubText: string,\n teamID: string,\n hiddenHeader: bool,\n useMagnetPortal: bool,\n handleBeforeCreatingAsset: func,\n withoutStartFromScratch: bool,\n openTemplateModalInPortal: bool\n};\n\nUseTemplate.defaultProps = {\n onBack: undefined,\n setView: f => f,\n onFormCreate: (id, isSalesforceTemplate = false) => handleCustomNavigation(`/build/${id}?s=templates${isSalesforceTemplate ? '&salesforceTemplate=1' : ''}`, '_self'),\n actionLogger: null,\n langPath: null,\n username: '',\n hiddenHeader: false,\n templatePath: '/form-templates/standalone',\n categories: null,\n source: 'MYFORMS',\n backButtonVisible: true,\n templateHeaderText: texts.CHOOSE_FROM_TEMPLATES,\n templateHeaderSubText: texts.CHOOSE_FROM_TEMPLATES_SUBTITLE,\n teamID: null,\n useMagnetPortal: false,\n handleBeforeCreatingAsset: null,\n withoutStartFromScratch: false,\n openTemplateModalInPortal: true\n};\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 from 'react';\nimport {\n oneOfType, arrayOf, node, string\n} from 'prop-types';\nimport { classNames } from '@jotforminc/utils';\n\nexport default class WizardList extends React.Component {\n render() {\n const { className, children, ...props } = this.props;\n\n return (\n
      \n {children}\n
    \n );\n }\n}\n\nWizardList.propTypes = {\n children: oneOfType([\n arrayOf(node),\n node\n ]),\n className: string\n};\n\nWizardList.defaultProps = {\n children: null,\n className: ''\n};\n","import React from 'react';\nimport {\n oneOfType, arrayOf, node, string, bool\n} from 'prop-types';\nimport { classNames } from '@jotforminc/utils';\n\nimport texts from '../../core/texts';\nimport Loader from '../Loader';\n\nexport default class WizardListItem extends React.Component {\n render() {\n const {\n icon,\n text,\n subText,\n isBeta,\n isNew,\n isLoading,\n className,\n ...props\n } = this.props;\n\n return (\n \n \n {icon && (\n
    \n
    \n {icon}\n
    \n {isLoading && (\n
    \n \n
    \n )}\n {isNew && (\n
    {texts.NEW}
    \n )}\n
    \n )}\n
    \n {text &&
    {text}
    }\n {subText &&
    {subText}
    }\n {isBeta && (\n
    {texts.BETA}
    \n )}\n
    \n \n
  • \n );\n }\n}\n\nWizardListItem.propTypes = {\n icon: oneOfType([\n arrayOf(node),\n node\n ]),\n text: string,\n subText: string,\n className: string,\n isBeta: bool,\n isNew: bool,\n isLoading: bool\n};\n\nWizardListItem.defaultProps = {\n icon: null,\n text: null,\n subText: null,\n className: '',\n isBeta: false,\n isNew: false,\n isLoading: false\n};\n","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 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, 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 from 'react';\nimport { func, shape, string } from 'prop-types';\nimport { Wizard, NavigationWizardTemplate as UseTemplate } from '@jotforminc/wizard-shared';\nimport { StartFromScratch } from '@jotforminc/create-new-wizards';\nimport { t } from '@jotforminc/translation';\nimport { ScFormTemplates } from '../styles/scSelect';\n\nconst SelectTemplate = ({\n handleClone, handleFormCreate, handlePickerClose, user, templateType, source\n}) => {\n const templateHeaderTextKeys = { form: 'form', sign: 'sign document' };\n const templateHeaderTextKey = templateHeaderTextKeys[templateType];\n const templateHeaderSubText = `You don't have any ${templateHeaderTextKey}. You can select a ${templateHeaderTextKey} from templates to use in your app`;\n\n const templatePath = `/${templateType}-templates/standalone`;\n return (\n \n \n \n );\n};\n\nSelectTemplate.propTypes = {\n user: shape({}),\n handleClone: func,\n handleFormCreate: func,\n templateType: string,\n handlePickerClose: func,\n source: string\n};\n\nSelectTemplate.defaultProps = {\n user: {},\n source: '',\n handleClone: f => f,\n handleFormCreate: f => f,\n templateType: undefined,\n handlePickerClose: f => f\n};\n\nexport default SelectTemplate;\n","import Styled from 'styled-components';\nimport { mainFont } from '../../../../../styles/global';\n\nexport const ScResourcePicker = Styled.div`\n .header-content {\n margin: 20px 0;\n font-family: ${mainFont};\n display: block;\n\n .pm-t {\n margin: 0;\n font-size: 20px;\n font-weight: 500;\n letter-spacing: 0.15px;\n color: #141E46;\n }\n\n .pm-d {\n margin: 0.25em 0 0;\n font-size: 16px;\n letter-spacing: 0.12px;\n color: #60658C;\n }\n }\n\n .close-modal {\n margin-right: 24px;\n }\n\n .pm-b {\n max-width: 600px;\n width: 90%;\n min-height: 570px;\n margin: 0 auto;\n\n [data-sc=\"smartList-controlBar\"] {\n .cb-body {\n display: none;\n }\n .cb-searchCont {\n flex: 0 0 100%;\n }\n }\n\n .emptyList {\n text-align: center;\n min-height: 60vh;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n }\n\n\n [data-sc='footer'] {\n background-color: rgba(239,239,246,.45);\n }\n\n .pm-f {\n display: flex;\n justify-content: space-between;\n\n button {\n font-weight: 500;\n font-family: ${mainFont};\n }\n\n .taste.isGray {\n padding: 8px 32px;\n }\n\n .taste.isLightGreen {\n background-color: #78BB07;\n opacity: 1;\n\n &:hover {\n opacity: 1;\n background-color: #4EB100;\n }\n &[disabled] {\n opacity: 0.5;\n background-color: #78BB07;\n }\n }\n }\n\n .js-ConfirmationModal {\n font-family: inherit;\n }\n\n &.autoHeight {\n .pm-b {\n min-height: auto;\n\n ul {\n overflow-y: auto;\n\n li:last-child {\n margin-bottom: 28px;\n }\n }\n }\n }\n\n @media screen and (min-width: 480px) {\n [data-sc=\"picker-body\"] {\n max-height: 60vh;\n }\n }\n\n ${({ isFullScreen }) => (isFullScreen && `\n div[data-uikit-modal-container] {\n max-width: unset;\n min-height: unset;\n }\n\n @media screen and (min-width: 480px) {\n [data-sc=\"picker-body\"] {\n max-height: unset;\n }\n }\n\n .header-content {\n .pm-t {\n font-size: 30px;\n font-weight: 500;\n color: #141E46;\n text-align: center;\n }\n\n .pm-d {\n font-size: 18px;\n color: #6F76A7;\n text-align: center;\n }\n }\n `)}\n\n .picker-loading {\n min-height: 60vh;\n }\n\n @media screen and (max-width: 600px) {\n [data-sc=\"picker-body\"] {\n max-height: calc(100vh - 180px);\n }\n\n [data-sc=\"footer\"] {\n position: fixed; \n bottom: 0;\n width: 100%;\n background-color: #efeff6;\n }\n }\n`;\n","import Styled from 'styled-components';\n\nconst ScResourcePickerControlBar = Styled.div`\n display: flex;\n align-items: center;\n margin: 33px 0 10px;\n border: 1px solid #939BC4;\n border-radius: 4px;\n\n div[data-sc=smartList-controlBar] {\n flex-grow: 1;\n margin: 0;\n\n .cb-searchCont .cb-search.isNewBranding {\n background-color: transparent;\n }\n }\n`;\n\nexport default ScResourcePickerControlBar;\n","import React from 'react';\nimport { bool, shape } from 'prop-types';\nimport Styled from 'styled-components';\n\nconst ScOptionRenderer = Styled.div`\n display: flex;\n align-items: center;\n justify-content: start;\n`;\nconst OptionRenderer = ({ option: { text, value, Icon }, isSelected }) => {\n return (\n \n \n \n {text}\n \n \n );\n};\n\nOptionRenderer.propTypes = {\n option: shape({}).isRequired,\n isSelected: bool.isRequired\n};\n\nexport default OptionRenderer;\n","import React, { forwardRef } from 'react';\nimport { bool, oneOfType, shape } from 'prop-types';\n\nconst ButtonRenderer = forwardRef(({\n option: { text, value, Icon } = {},\n isOptionsVisible, ...props\n}, ref) => {\n return (\n \n {Icon && }\n \n {text}\n \n \n );\n});\n\nButtonRenderer.propTypes = {\n option: oneOfType([shape({}), bool]),\n isOptionsVisible: bool\n};\n\nButtonRenderer.defaultProps = {\n option: {},\n isOptionsVisible: false\n};\n\nexport default ButtonRenderer;\n","import React from 'react';\nimport { SVGIcon, EmojiRenderer } from '@jotforminc/icon-selector';\nimport { number, string } from 'prop-types';\n\nconst TeamImage = ({\n url, icon, emojiId, emojiSize, iconColor, iconSvgRef\n}) => {\n if (url) return (\"Team);\n\n if (emojiId) return ();\n\n const isIconSpriteLoaded = !!document.getElementById('app-icons');\n\n return isIconSpriteLoaded && iconSvgRef ? (\n
    \n \n \n \n
    \n ) : (\n \n );\n};\n\nTeamImage.propTypes = {\n url: string,\n icon: string,\n emojiId: string,\n emojiSize: number,\n iconColor: string,\n iconSvgRef: string\n};\n\nTeamImage.defaultProps = {\n url: '',\n icon: '',\n emojiId: '',\n emojiSize: 24,\n iconColor: '',\n iconSvgRef: ''\n};\n\nexport default TeamImage;\n","import React from 'react';\nimport cn from 'classnames';\nimport { string } from 'prop-types';\nimport Styled from 'styled-components';\nimport Image from './Image';\n\nconst ScTeamAvatar = Styled.div`\n min-width: 17px;\n height: 17px;\n border-radius: 50%;\n overflow: hidden;\n margin: 0;\n padding: 0;\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n\n & > img {\n width: 17px;\n height: 17px;\n object-fit: cover;\n }\n\n .jfIconSVG-wrapper {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 4px;\n width: 17px;\n height: 17px;\n\n > div {\n display: flex;\n align-items: center;\n justify-content: center;\n }\n }\n\n .emoji-mart-emoji span {\n width: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n`;\n\nconst TeamAvatar = props => {\n const { iconBgColor, url, icon } = props;\n\n return (\n \n \n \n );\n};\n\nTeamAvatar.propTypes = {\n iconBgColor: string,\n url: string,\n icon: string\n};\n\nTeamAvatar.defaultProps = {\n iconBgColor: '',\n url: '',\n icon: ''\n};\n\nexport default TeamAvatar;\n","/* eslint-disable max-len */\nimport Styled from 'styled-components';\nimport { ScDropdown } from '../Dropdown/scDropdown';\n\nexport const ScControlBarDropdown = Styled(ScDropdown)`\n border-left: 1px solid #939BC4;\n width: 194px;\n\n .dropdown-button {\n display: flex;\n align-items: center;\n border: none;\n padding-right: 32px;\n\n &:after {\n width: 36px;\n border-left: none;\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' fill='none'%3E%3Cpath stroke='%2309F' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m1 1 4 4 4-4'/%3E%3C/svg%3E\");\n }\n\n svg {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 17px;\n height: 17px;\n }\n\n span {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n color: #0099FF;\n }\n }\n\n .dropdown-container {\n border: 1px solid #939BC4;\n border-radius: 0 0 4px 4px;\n }\n\n .dropdown-option {\n &-container {\n &:last-child {\n border-radius: 0 0 4px 4px;\n }\n\n &:after {\n background: transparent;\n }\n\n &:hover {\n background-color: #F3F3FE;\n }\n\n &[aria-selected=\"true\"] {\n background-color: #E5E5FA;\n\n &:after {\n background-color: #E5E5FA;\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 14 14'%3E%3Cpath fill='%236F76A7' fill-rule='evenodd' d='M7 14c3.866 0 7-3.134 7-7 0-3.86599-3.134-7-7-7-3.86599 0-7 3.13401-7 7 0 3.866 3.13401 7 7 7Zm4.0058-8.72223c.2539-.24168.2596-.63909.0127-.88764-.2469-.24856-.6528-.25414-.9067-.01246l-4.26504 4.0596-1.9241-2.14102c-.23392-.26029-.63909-.28566-.90497-.05667-.26589.22899-.29181.62562-.05789.88591l2.3693 2.63642c.11599.12906.28098.20592.45645.21261.17548.0067.34608-.05735.47198-.17719l4.74827-4.51956Z' clip-rule='evenodd'/%3E%3C/svg%3E\");\n }\n }\n }\n }\n`;\n","import React from 'react';\nimport { ControlBar } from '@jotforminc/smart-list';\nimport { bool, func, string } from 'prop-types';\nimport { t } from '@jotforminc/translation';\nimport { useSelector } from 'react-redux';\nimport { IconFormFilled, IconProductReportBuilderFilled, IconProductTablesFilled } from '@jotforminc/svg-icons';\nimport ScResourcePickerControlBar from './ScResourcePickerControlBar';\nimport Dropdown from '../Dropdown';\nimport OptionRenderer from './OptionRenderer';\nimport ButtonRenderer from './ButtonRenderer';\nimport SELECTORS from '../../store/selectors';\nimport TeamAvatar from '../TeamAvatar';\nimport { ScControlBarDropdown } from './ScControlBarDropdown';\nimport * as API from '../../modules/api';\nimport { getTeamID } from '../../utils';\n\nexport const RESOURCES_WITH_CONTROL_BAR = {\n sheet: {\n resourceFetcher: API.fetchTables,\n optionValue: 'mytables',\n optionText: 'My Tables',\n Icon: IconProductTablesFilled\n },\n report: {\n resourceFetcher: API.fetchReports,\n optionValue: 'myreports',\n optionText: 'My Reports',\n Icon: IconProductReportBuilderFilled\n },\n form: {\n resourceFetcher: API.fetchForms,\n optionValue: 'myforms',\n optionText: 'My Forms',\n Icon: IconFormFilled\n }\n};\n\nconst ResourcePickerControlBar = ({\n type, selectedOptionValue, onChangeOption, allowOnlyOwnTeam, ...rest\n}) => {\n const userTeams = useSelector(SELECTORS.getUserTeams);\n\n const { [type]: { optionValue, optionText, Icon } } = RESOURCES_WITH_CONTROL_BAR;\n\n const options = [\n { text: t(optionText), value: optionValue, Icon: () => },\n ...userTeams.filter(team => team.id === getTeamID() || !allowOnlyOwnTeam).map(({\n name, id, teamAvatarURL, teamAvatarIcon, teamAvatarEmojiId, teamAvatarIconColor, teamAvatarIconSvgRef, teamAvatarIconBgColor\n }) => ({\n text: name,\n value: id,\n Icon: () => (\n \n )\n }))\n ];\n\n return (\n \n \n \n \n );\n};\n\nResourcePickerControlBar.propTypes = {\n type: string.isRequired,\n selectedOptionValue: string,\n onChangeOption: func,\n allowOnlyOwnTeam: bool\n};\n\nResourcePickerControlBar.defaultProps = {\n selectedOptionValue: null,\n onChangeOption: f => f,\n allowOnlyOwnTeam: false\n};\n\nexport default ResourcePickerControlBar;\n","import React from 'react';\nimport { EmptyList } from '@jotforminc/empty-list';\nimport { bool } from 'prop-types';\n\nconst EmptyListPlaceholder = ({ isTeamSelected }) => {\n return (\n \n );\n};\n\nEmptyListPlaceholder.propTypes = {\n isTeamSelected: bool.isRequired\n};\n\nexport default EmptyListPlaceholder;\n","import React, {\n useCallback, useEffect, useImperativeHandle, useState\n} from 'react';\nimport { ResourcePicker, RESOURCE_TYPES } from '@jotforminc/resource-picker';\nimport { t } from '@jotforminc/translation';\nimport {\n arrayOf, bool, func, object, string\n} from 'prop-types';\nimport ResourcePickerControlBar, { RESOURCES_WITH_CONTROL_BAR } from '../ResourcePickerControlBar';\nimport { getTeamIDOfAsset, getTeamResources } from '../../modules/api';\nimport { isTeamResourcePicker } from '../../utils';\nimport { Loading } from '../Loading';\nimport EmptyListPlaceholder from './EmptyListPlaceholder';\nimport { TEAM_ID } from '../../constants/team';\n\nconst ResourcePickerWithControlBar = React.forwardRef(({\n resourceType, usedResourceIDs, onSelectionChange, allowOnlyOwnTeam, isChangeFormAction, initialSelectedForm, fetcherConfig, ...rest\n}, ref) => {\n const { params: fetcherParams = {}, filters: fetcherFilters = {} } = fetcherConfig;\n const [resources, setResources] = useState([]);\n const [loading, setLoading] = useState(true);\n const [selectedItems, setSelectedItems] = useState({});\n\n const { [resourceType]: { resourceFetcher, optionValue } } = RESOURCES_WITH_CONTROL_BAR;\n\n const [selectedOption, setSelectedOption] = useState(isTeamResourcePicker() ? TEAM_ID : optionValue);\n\n const isTeamSelected = selectedOption !== optionValue;\n\n const getFormFetcher = useCallback(searchTerm => {\n if (isTeamSelected) {\n return getTeamResources({\n teamID: selectedOption, resourceType, filters: { fullText: searchTerm, ...fetcherFilters }, params: { ...fetcherParams }\n });\n }\n return resourceFetcher({ fullText: searchTerm, ...fetcherFilters }, { ...fetcherParams });\n }, [selectedOption]);\n\n const onSearch = useCallback(async (searchTerm = '') => {\n return getFormFetcher(searchTerm).then(result => result.filter(resource => !usedResourceIDs.includes(resource.id)));\n }, [getFormFetcher]);\n\n const DataProvider = useCallback(() => ({ onSearch }), [onSearch]);\n\n useEffect(() => {\n onSearch().then(setResources).finally(() => setLoading(false));\n }, [onSearch]);\n\n useEffect(() => {\n if (isChangeFormAction && isTeamResourcePicker()) {\n getTeamIDOfAsset({ resourceID: initialSelectedForm, resourceType: resourceType.toUpperCase() }).then(teamID => {\n setSelectedOption(teamID ?? TEAM_ID);\n });\n }\n }, []);\n\n const handleSelectionChange = selections => {\n if (resourceType === 'form') {\n onSelectionChange(selections);\n return;\n }\n const selectedOptionItems = resources.filter(({ id }) => selections.includes(id)).map(s => ({ ...s, isTeamAsset: isTeamSelected }));\n const _selectedItems = { ...selectedItems, [selectedOption]: selectedOptionItems };\n setSelectedItems(_selectedItems); // keep resources belongs to different list\n onSelectionChange([...Object.values(_selectedItems)].reduce((prev, items) => [...prev, ...items], []));\n };\n\n useImperativeHandle(ref, () => ({\n getResources: () => resources\n }));\n\n const ControlBarRenderer = useCallback(props => (\n \n ), [selectedOption, resourceType]);\n\n return loading ? : (\n }\n showNotFoundListPlaceholder={resources.length !== 0}\n {...rest}\n resources={resources}\n />\n );\n});\n\nResourcePickerWithControlBar.propTypes = {\n appOwner: string,\n resourceType: string,\n usedResourceIDs: arrayOf(string),\n onSelectionChange: func,\n allowOnlyOwnTeam: bool,\n isChangeFormAction: bool,\n initialSelectedForm: string,\n fetcherConfig: object\n};\n\nResourcePickerWithControlBar.defaultProps = {\n appOwner: '',\n resourceType: RESOURCE_TYPES.FORM,\n usedResourceIDs: [],\n onSelectionChange: f => f,\n allowOnlyOwnTeam: false,\n isChangeFormAction: false,\n initialSelectedForm: '',\n fetcherConfig: {}\n};\n\nexport default ResourcePickerWithControlBar;\n","import React from 'react';\nimport { t } from '@jotforminc/translation';\nimport PropTypes from 'prop-types';\nimport { IconInfoCircleFilled } from '@jotforminc/svg-icons';\nimport { Button } from '@jotforminc/magnet';\nimport Styled from 'styled-components';\nimport { isTeamResourcePicker } from '../../../../../utils';\n\nconst ScModalFooterWarning = Styled.div`\n display: flex;\n align-items: center;\n color: #141E46;\n font-size: 16px;\n text-align: left;\n \n svg {\n width: 16px;\n color: #0099FF;\n margin-right: 10px;\n }\n`;\n\nconst Footer = ({\n type, confirmText, selectedItemCount, onAddButtonClick, hasItems, onCancel, hasSentbox\n}) => (\n
    \n {onCancel ? (\n \n ) : (\n
    \n {hasSentbox ? (\n \n \n {t('Related Sentbox element(s) will be updated.')}\n \n ) : (\n <>\n {(selectedItemCount > 0 && isTeamResourcePicker()) && t(`{itemCount} ${type}s selected.`).replace('{itemCount}', selectedItemCount)}\n \n )}\n
    \n )}\n {hasItems && (\n \n )}\n
    \n);\n\nFooter.propTypes = {\n type: PropTypes.string.isRequired,\n selectedItemCount: PropTypes.number.isRequired,\n onAddButtonClick: PropTypes.func.isRequired,\n hasItems: PropTypes.bool.isRequired,\n confirmText: PropTypes.string,\n onCancel: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]),\n hasSentbox: PropTypes.bool\n};\n\nFooter.defaultProps = {\n confirmText: 'Add',\n onCancel: false,\n hasSentbox: false\n};\n\nexport default Footer;\n","import React from 'react';\nimport { t } from '@jotforminc/translation';\nimport { DATA_SOURCE_ITEMS } from '../../../../../constants/itemTypes';\nimport Footer from '../FormPickerModal/Footer';\n\nexport const COMPONENT_KEYS = {\n FOOTER: 'Footer',\n HEADER: 'Header'\n};\n\nconst getDefaultElement = (key, props) => {\n switch (key) {\n case COMPONENT_KEYS.FOOTER: {\n return