{"version":3,"sources":["styles/tag_input.module.scss","styles/button_select.module.scss","styles/notifications.module.scss","styles/charge_approval.module.scss","styles/sidebar.module.scss","context/NotifyContext.js","context/ShopContext.js","context/UserContext.js","context/PreviewContext.js","lib/mutations.js","Queries/GET_SINGLE_CAMPAIGN.js","Queries/LIST_SHOP_CAMPAIGNS.js","Queries/GET_SHOP_SETTINGS.js","lib/mixpanel.js","screens/campaigns/List.js","lib/countries.js","screens/campaigns/settings/CampaignTarget.js","screens/campaigns/settings/FirstStep.js","screens/campaigns/settings/ExtraModules/Module.js","screens/campaigns/settings/ExtraModules/RandomText.js","screens/campaigns/settings/ExtraModules/OrderNote.js","screens/campaigns/settings/ExtraModules/CheckoutButton.js","reducers/CampaignReducer.js","screens/campaigns/settings/ExtraModules/index.js","screens/campaigns/settings/GeoTargeting.js","reducers/SetItemReducer.js","context/EmbeddedContext.js","components/ShopifyResourcePicker.js","context/SidebarContext.js","components/Sidebar.js","screens/campaigns/settings/Types/atu_goals/Gift.js","screens/campaigns/settings/Types/atu_goals/Discount.js","screens/campaigns/settings/Types/atu_goals/GoalImage.js","screens/campaigns/settings/Types/AddToUnlock.js","screens/campaigns/settings/Types/Bundle.js","screens/campaigns/settings/Types/Bundles.js","screens/campaigns/settings/Types/OneCheckUpSell.js","screens/campaigns/settings/Types/MultiOneCheckUpSell.js","screens/campaigns/settings/SecondStep.js","lib/removeTypeName.js","lib/validate.js","svgs/not_found.svg","Constraints/CampaignConstraints.js","Constraints/ShopConstraints.js","context/CampaignContext.js","screens/campaigns/Create.js","screens/campaigns/Update.js","screens/campaigns/Duplicate.js","screens/ErrorScreen.js","screens/NotFoundScreen.js","svgs/dots.svg","svgs/rotate.svg","screens/LogoutScreen.js","context/PageScrollContext.js","screens/settings/scarcity.js","screens/settings/badges.js","screens/settings/terms.js","screens/settings/announcement.js","svgs/check.svg","svgs/warning.svg","lib/afterPayLogos.js","screens/settings/afterPaySelector.js","screens/settings/afterPay.js","screens/CartScreen.js","components/Page.js","screens/CodCheckout.js","svgs/empty.svg","screens/DashboardScreen.js","screens/FaqScreen.js","screens/PrivacyPolicy.js","screens/ManualSetup.js","lib/getPlans.js","screens/PlanScreen.js","screens/StickyCartSettings.js","screens/InvitationScreen.js","screens/Affiliation.js","screens/ReferralScreen.js","screens/NewLoginScreen.js","screens/Integrations.js","screens/index.js","components/Modal.js","components/chargeApproval.js","components/Embedded.js","lib/AppLocalStorage.js","svgs/no_data.svg","components/Authenticator.js","hooks/useShop.js","components/Rehydrated.js","components/EmptyState.js","components/ItemsList_item.js","components/ItemsList.js","components/Carousel.js","components/FormGroup.js","components/ErrorsList.js","components/FormControl.js","components/Tag.js","components/ColorPicker.js","components/Dropdown.js","components/Input.js","components/Textarea.js","components/TagInput.js","components/ButtonSelect.js","components/stickyCart/index.js","components/Preview.js","components/ActionsButtons.js","components/Notifications.js","components/Range.js","components/ProductSelector.js","components/ImagePicker.js","components/DragAndDrop.js","components/RichEditor.js","components/Bindings.js","components/CustomText.js","components/DateRange.js","components/Calendar.js","components/Alert.js","components/MultiCurrencyModeAlerts.js","components/GuideContainer.js","components/GuideLink.js","components/GuideVideo.js","components/SetupStep.js","components/SetupGuide.js","components/CodeEditor.js","lib/wrappers.js","components/TutorialModal.js","components/TallyModal.js","screens/SetupScreen.js","App.js","index.js","components/cart/Api.js","styles/page.module.scss","styles/calendar.module.scss","components/cart/partials/CheckoutButton.js","styles/product_selector.module.scss","components/Switch.js","styles/campaign_settings_second_step.module.scss","styles/tutorial.module.scss","styles/modal.module.scss","components/Button.js","styles/dashboard.module.scss","styles/image_picker.module.scss","styles/date_range.module.scss","styles/button.module.scss","styles/carousel.module.scss","lib/translations.js","lib/translations/english.js","lib/translations/french.js","lib/translations/arabic.js","lib/translations/german.js","lib/globals.js","styles/preview.module.scss","styles/actions_buttons.module.scss","components/Spinner.js","components/cart/partials/CustomScroll.js","lib/classNames.js","aws-exports.js","components/cart/partials/CartItemsList.js","styles/items_list.module.scss","styles/empty_state.module.scss","styles/sticky_cart_feature_preview.module.scss","components/cart/Utils.js","components/cart/partials/Product.js","components/cart/partials/AddToUnlock.js","styles/drag_and_drop.module.scss","styles/campaign_settings_first_step.module.scss","svgs/logo_v2.png","assets/redeemly-logo.jpeg","styles/custom_scroll.module.scss","svgs/monster_logo.png","styles/display_text.module.scss","svgs/yt-clothing.jpeg","svgs/yt-designing.jpeg","svgs/yt-dropshipping.jpeg","svgs/yt-free-gift.jpeg","svgs/yt-free-shipping.jpeg","svgs/yt-shipping-protection.jpeg","components/cart/machines/HeaderMachine.js","components/cart/partials/GoalImages.js","components/cart/partials/Header_ATU.js","lib/addPrefix.js","hooks/useRefState.js","hooks/useBindToContext.js","components/cart/partials/Header.js","components/cart/partials/ExtraModule.js","components/cart/partials/EmptyState.js","reducers/CartItemsReducer.js","shopify_script_tags/cart.js","components/cart/index.js","assets/image_placeholder.png","styles/bundle.module.scss","styles/review_widget.module.scss","components/Icon.js","hooks/useCampaign.js","styles/extra_modules.module.scss","styles/cart_screen.module.scss","styles/form_group.module.scss"],"names":["module","exports","NotifyContext","React","createContext","NotifyProvider","Provider","ShopContext","ShopProvider","UserContext","UserProvider","Consumer","PreviewContext","PreviewProvider","UPDATE_SHOP_PROP","gql","SWITCH_CAMPAIGN_STATUS","CREATE_CAMPAIGN_MUTATION","UPDATE_CAMPAIGN_MUTATION","REMOVE_CAMPAIGN_MUTATION","SAVE_SHOP_SETTINGS","GET_SINGLE_CAMPAIGN","LIST_SHOP_CAMPAIGNS","GET_SHOP_SETTINGS","trackMixPanelEvent","eventKey","shopName","properties","mixpanel","init","process","debug","track","unique_id","distinct_id","List","setIsOpen","useState","updateState","analytics","setAnalytics","popovers","setPopOvers","hidePopOver","id","Object","assign","forceUpdate","useCallback","user","useContext","collapsed","previewCampaign","preview_active_campaign","shopContext","AppLocalStorage","state","multiCurrencyMode","settings","money_format","BREAK_POINTS","useReactRouter","history","location","showConfirmDelete","setShowConfirmDelete","formatWithDelimiters","number","precision","thousands","decimal","isNaN","parts","toFixed","split","dollars","replace","cents","formatMoney","n","numberFormat","Intl","NumberFormat","maximumSignificantDigits","format","useQuery","variables","userId","attributes","sub","fetchPolicy","includes","ListCampaignsData","data","queryLoading","loading","queryError","error","fetchMore","useMutation","SetCampaignActiveMutation","SetCampaignActiveMutation_loading","SetCampaignActiveMutation_error","SetCampaignActiveMutation_data","RemoveCampaignMutation","RemoveCampaignMutation_loading","RemoveCampaignMutation_error","RemoveCampaignMutation_data","isBeingPreviewed","campaign","useEffect","index","_","findIndex","campaigns","list","updateCampaign","filter","removeCampaign","fetchStatistics","a","campaigns_list","type","map","one_tick_campaigns","multi_one_check_upsell","one_check_up_sell","product","variants","price","products","Boolean","reduce","acc","cur","Array","isArray","forEach","v","push","body","API","post","processedData","entries","states","UpsellsGenerated","upsellsTotalAmount","Error","JSON","stringify","content","duration","onDismiss","header","title","actions","text","icon","faPlus","onClick","getItem","setItem","length","console","log","search","status","onChange","active","input","update","cache","writeQuery","query","nextToken","__typename","setCampaignActive","value","name","add_to_unlock","target","isGlobalBundles","isMonsterFreeShippingAddToUnlock","goals","reward_type","free_shipping","manual","isVirtualOneCheck","product_type","isNotDelivering","className","classNames","Icon","size","href","rel","BOX_CHECK_ICON","CAMPAIGN_TARGETS","find","label","Spinner","updateDay","Date","isNewCampaign","parseInt","createdAt","dangerouslySetInnerHTML","__html","revenue","fbt_sub_total","fbt","subtotal_sum","fbt_upsells_generated","Popover","isOpen","padding","reposition","onClickOutside","onMouseEnter","onMouseLeave","color","method","duplicate","disabled","edit","confirmDelete","items","emptyState","action","url","Button","updateQuery","previousResult","fetchMoreResult","message","open","primaryAction","destructive","onAction","secondaryActions","COUNTRIES_LIST","CampaignTarget","context","validationErrors","validate","info","options","BindToContext","newValue","allowMultiple","trigger","style","width","borderPosition","iconSize","customStyle","FirstStep","killDraftBreakPoint","keys","e","key","k","i","tutorial_styles","button","autofocus","placeholder","CAMPAIGN_TYPES","link","showSeparator","fontSize","window","Module","SortableElement","reset","switchButton","resetModule","moduleKey","children","styles","data-active","data-has-children","header_wrapper","ml_4","Switch","overflow","inner","Grip","defaultProps","sortableHandle","grip","RandomText","props","marginBottom","hasError","OrderNote","CheckoutButton","setCheckoutButtonLoadingEdit","fullWidth","hasColor","path","hasWeight","withSwitch","hasNumber","onFocus","onBlur","modules","checkout_button","active_continue_shopping_button","cod_settings","is_active","beta","CampaignReducer","default_language","default_currency","goal_index","pathParts","updatedState","current","undefined","setIn","bundles","concat","uuid","reward","quantity","DEFAULT_GOAL","specific_goals","currency","goal","newGoals","slice","splice","default_one_check_upsell","newProducts","new_state","ModulesList","SortableContainer","hasCheckout","order","ExtraModules","theme","primary","secondary","background","font","useDragHandle","onSortEnd","oldIndex","newIndex","newOrder","arrayMove","dispatch","NEW_CAMPAIGN_INITIAL_STATE","font_color","GeoTargeting","countries","include_active","isMulti","first","exclude_active","SetItemReducer","removeIn","EmbeddedContext","EmbeddedProvider","ShopifyResourcePicker","reducer","showVariants","initialSelectionIds","showHidden","verifySelection","initialQuery","isOpened","useBindToContext","BindedValue","BindedOnChange","idFilterRegex","tags","close","item","removeItem","resourceType","onSelection","selection","formatIds","outputObject","match","RESOURCE_PICKER_DEFAULT_REDUCERS","uniqueItems","obj","onCancel","SidebarContext","SidebarProvider","MenuItem","pathto","activeRoutes","badge","newApp","pathname","menu_item","new_app","SideBarBadge","SideBar","setCollapsed","campaignActive","dataLoading","setDataLoading","designActive","setDesignActive","completedTasks","setCompletedTasks","setup","cartActive","cartLoading","app_first_turn_on","sidebar","logo","src","Logo","menu","menu_setup","data-completed","div","marginTop","counter","faChartLine","faCog","faBullhorn","faCartPlus","spacer","faHandshake","COMMENT_DOLLAR","faUsers","faLightbulb","SACK_DOLLAR_ICON","faQuestionCircle","USER_SHIELD_ICON","attach","faThumbtack","Gift","resourcesArray","pattern","setCurrentState","setGiftCurrentPreview","AppBridgeToast","setCurrent","currentGoal","gift","isRandom","multi_gift_select","previousGift","hasMultipleGiftFeature","hasMoreThanOneGift","isSingleCol","GIFT_WITH_PURCHASE_PRODUCT_REDUCER","isGift","productType","toLowerCase","isError","imageEmoji","Bindings","only","widget","bindings","custom","top","right","simplified","before","multi_gift_image","Discount","min","max","discount","withDropdown","DISCOUNT_TYPES","GoalImage","show_badges","setBadgeType","setBadgeImage","previewImage","setPreviewImage","image","uploadedImage","setUploadedImage","hasPreview","setHasPreview","isUploading","setIsUploading","file","files","reader","FileReader","onload","result","attachment","fileName","response","public_url","readAsDataURL","Circle","htmlFor","backgroundImage","opacity","hidden","height","viewBox","fill","xmlns","d","aria-hidden","focusable","data-icon","role","Option","selected","strokeWidth","stroke","strokeLinecap","strokeLinejoin","AddToUnlock","setShowATUAfterText","setEditingProductDetails","getError","getIn","enabled_presentment_currencies","old_add_to_unlock","isActive","hasSpecificGoals","goalPAth","isQuantityGoal","multi_goal_type","added_currencies","all_currencies_are_selected","deleteGoal","Footer","newSpecificGoal","specific_goal","specific_goal_index","main","removeSpecificGoal","ADD_TO_UNLOCK_REWARD_OPTIONS","keyPrefix","redeemlyLogo","goal_text","newGoal","show_goal_text","campaignGoal","currentIndex","show_suggestions","isVertical","recommendation_type","ADD_TO_UNLOCK_PRODUCTS_PICKER_REDUCER","isCreatable","focusCondition","event","productDetails","document","getElementById","contains","Summary","goal_type","rewardType","isDiscount","free_shipping_text","sortByProp","formatter_reward","Bundle","bundle","specificValidation","isFlex","deleteBundle","Bundles","previewBundlesVariantsPicker","newBundle","useRefState","visiblePickerColorPickers","setVisiblePickerColorPickers","visiblePickerColorPickers_ref","handleColorPickerVisibleChange","visible","set","Set","add","focusWithinProps","useFocusWithin","onFocusWithin","onBlurWithin","group","step","position","variantsPicker","confirm","textColor","onVisibleChange","dropdownTextColor","dropdownBackground","confirmBackground","confirmTextColor","product_name","substring","trim","must_truncated","isLast","formatted_reward","OneCheckUpSell","updateOldOCU","hiddenProducts","setHiddenProducts","newHiddenProductLoading","setNewHiddenProductLoading","productsFetchLoading","setProductsFetchLoading","showHiddenProductSelector","setShowHiddenProductSelector","productImage","setProductImage","productTitle","setProductTitle","productPrice","setProductPrice","bodyHtml","setBodyHtml","setProps","PRESET_HIDDEN_PRODUCTS","p","body_html","get","queryStringParameters","limit","then","catch","indicator","ONE_CHECK_UP_SELL_PRODUCT_TYPE_OPTIONS","ONE_CHECK_UP_SELL_PRODUCT_REDUCER","onClose","setTitle","tab","contents","setActiveTab","showCreate","presets","controlsPosition","controls","next","createProduct","MultiOneCheckUpSell","rtl","isSwitch","variant","disableAlpha","deleteOneCheckUpsellProduct","productError","exists","newOneCheckUpsellProduct","box","t","SecondStep","stickyHeaderPosition","stickyHeader","is_OCU","isOld_OCU","removeByType","condition","prototype","toString","call","newObj","removeFalsyErrors","isFalsyArray","isFalsy","Number","isInteger","array","every","removeTypeName","validators","arrayItems","itemConstraints","isRequired","fieldName","constraints","RegExp","test","rules","parse","entry","arrayItemErrors","errors","isString","join","r","int","g","b","float","val","_title","_circle","_path","_polygon","_path2","_polygon2","_ellipse","_ellipse2","_ellipse3","_ellipse4","_circle2","_rect","_rect2","_ellipse5","_ellipse6","_circle3","_circle4","_path3","_path4","_path5","_circle5","_rect3","_rect4","_ellipse7","_ellipse8","_circle6","_circle7","_path6","_path7","_path8","_path9","_path10","_ellipse9","_ellipse10","Field","required","inArray","output","presence","Value","allowEmpty","capitalize","minimum","tooShort","maximum","tooLong","inclusion","within","numericality","onlyInteger","greaterThanOrEqualTo","lessThanOrEqualTo","strict","notValid","notGreaterThanOrEqualTo","notLessThanOrEqualTo","defaultValue","Integer","Float","Text","Bool","Num","Run","specific","setErrors","silent","filteredConstraints","Collection","toObject","newErrors","oldErrors","outputErrors","add_to_unlock_product","handle","add_to_unlock_goal","confetti","confetti_length","one_check_up_sell_product_variants","one_check_up_sell_product","is_ticked_by_default","include_in_atu","target_selected","CampaignConstraints","ShopConstraints","CampaignContext","CampaignProvider","withCampaignProvider","ChildComponent","duplication","order_note","product_details","highlight","progress_primary","progress_secondary","progress_complete","upsell_add_button","originalCampaign","setValidationErrors","originalState","setOriginalState","showValidationError","setShowValidationError","useReducer","CreateCampaignMutation","CreateCampaignMutation_Loading","CreateCampaignMutation_Error","CreateCampaignMutation_Data","UpdateCampaignMutation","UpdateCampaignMutation_Loading","UpdateCampaignMutation_Error","UpdateCampaignMutation_Data","saveCampaign","overrides","flatErrors","values","flat","Infinity","errorMessage","goalsErrors","nextGoal","truthyErrors","ids","saveState","refetchQueries","createCampaign","discard","rest","align","border","border_color","switch_on","switch_off","Create","showConfirmCancel","setShowConfirmCancel","newCampaignContext","useRef","setStickyHeaderPosition","transitions","useTransition","isEqual","from","enter","leave","onScroll","scrollTop","offsetTop","TopContent","render","paddingX","Update","params","labelColor","UpdateCampaign","Duplicate","campaignData","campaignId","DuplicateCampaign","_extends","arguments","source","hasOwnProperty","apply","this","_objectWithoutProperties","excluded","sourceKeys","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","_ref","svgRef","createElement","ref","cx","cy","transform","points","rx","ry","x","y","ForwardRef","forwardRef","ErrorScreen","setState","heading","Illustration","NotFound","whiteSpace","componentStack","Component","NotFoundScreen","LogoutScreen","Auth","signOut","APP_NAME","to","PageScrollContext","PageScrollProvider","WithPageScrollProvider","pageScroll","ScarcitySettings","scary","handleCheck","checked","handleRadio","gridTemplateColumns","checkboxControl","isDaysActive","checkbox","isHoursActive","isMinutesActive","isSecondsActive","radioDiv","endAction","placement","BadgesSettings","BADGES_POSITIONS","TermsSettings","checkout_condition_text","AnnouncementSettings","ANNOUNCEMENT_POSITIONS","_defs","clipPath","maskType","maskUnits","mask","LOGOS","AfterPaySelector","afterPay","isExternal","handleImageSelect","selectedImage","faCheckCircle","AfterPay","CartScreen","setCartIsEmpty","setAutoDiscount","setShowSubscription","stickyAlert","campaign_preview_types","setScrollTop","scrollTopRef","cartActivateLoading","setCartActivateLoading","googleFonts","setGoogleFonts","hideTopBar","setHideTopBar","showConfirmActivate","setShowConfirmActivate","showInstallationModel","setShowInstallationModel","subscriptionTab","setSubscriptionTab","cartType","setCartType","cartTextPrimary","setCartTextPrimary","cartTextSecondary","setCartTextSecondary","cartButtonText","setCartButtonText","cartButtonType","setCartButtonType","campaign_preview_visible","setCampaign_preview_visible","campaign_preview_content_ref","app","AppBridgeRedirect","setCartLoading","filterSettings","draft_checkout_alerted","multi_currency_checkout_alerted","fromEntries","website","saveShopSettings","original_settings","config","save","campaign_data","activateCart","confirmed","disableLoading","settingsSaved","SHOP_DEFAULT_SETTINGS","success","handleOutSideClick","addEventListener","removeEventListener","Axios","family","getGoogleFonts","sticky_path","lower_path","lower_checkout_container","getCheckoutPosition","checkoutPosition","setCheckoutPosition","updateShopProps","getSessionToken","authToken","graphql","graphqlOperation","APP_DEV","timeout","setTimeout","clearTimeout","checkout_mode","getScrollTop","customSvg","activateAppId","deepLink","Redirect","Action","ADMIN_PATH","newContext","REMOTE","origin","MultiCurrencyModeAlerts","redirectToCheckoutSettings","preventDefault","parseFloat","getComputedStyle","documentElement","md5","closest","IUnderstand","collapsable","autoFocus","language","savings","subtotal","button_text","buttonColor","char","isSticky","isLower","checkout_text","new_text","editor","activeElement","subscription","infoHtml","PageHeader","page_header","Page","additional_classes","scrollbars_ref","setError","buttonLoading","setButtonLoading","app_container","topBarWrapper","customScrollbars","page_content","form","deleteModule","setSelectedModule","setEditModalVisibility","itemIndex","extrastyles","data-one-row","EditModal","editModalVisibility","selectedModule","editModule","setModule","handleChange","attribute","AddModal","addModalVisibility","setAddModalVisibility","addModule","setLabel","setIsRequired","setType","setOptions","setPlaceholder","showOptions","CodCheckout","setComfirmOrderButtonLoadingEdit","editingProductDetails","checkRTL","newForm","mo","moment","defaultStateCards","CartsDisplayed","SalesGenerated","SalesAmount","AverageOrderSize","CartConversionRate","UpsellsTotalAmount","TotalROI","StateCard","suf","pre","clickable","startCase","DashboardScreen","activeChart","setActiveChart","setLoading","campaignsFilter","dateRangeFilter","setDateRangeFilter","chartSeries","setChartSeries","count","setCount","getChart","newActiveChart","dateFilter","start","getTime","end","point","getCount","throttle","keyword","range","maxDate","stateCards","stateCard","chartOptions","opts","series","animation","FaqScreen","PrivacyPolicy","ManualSetup","activePreviewDevice","setActivePreviewDevice","is","currentAction","setCurrentAction","unsaved","setUnsaved","API_GATEWAY_NEW","iframeSrc","iframe","selectorOverlay","custom_links","shopCustomLinks","setShopCustomLinks","custom_atcs","shopCustomATCs","setShopCustomATCs","customCartLinks","setCustomCartLinks","cclRef","customATCs","setCustomATCs","catcRef","setSaveLoading","sendMessage","contentWindow","postMessage","handleMessage","selector","elementPickerEnabled","l","onLoad","display","oldPlans","description","transactions","real_price","newPlans","newPlansStartsAt","thirdPlansStartsAt","getPlans","installationTime","hasSecondPricing","plan","currentPlan","getNewPlans","getBasePrice","PlanScreen","setPlan","setCurrentPlan","shop","plans","installedAt","invitation","applyDiscount","getPlan","planResponse","balance_used","billing_on","StickyCartSettings","setIsStickyActVariantFocused","sticky_cart","STICKY_CART_OPTIONS","btnStyles","colorType","visibilityOptions","btnPosition","mobile_show_variants","show_btn_atc_txt_variant_active","hasBU","addDays","date","days","copy","setDate","getDate","InvitationScreen","useHistory","useParams","fetchInvitation","API_GATEWAY2","redirect","expiry","ShowCode","aff_code","setIsEditingCode","handleLinkCopy","AUTH_COOKIE_DOMAIN","disabledBgColor","faCopy","faEdit","ShowCoupon","EditCode","handleCodeEdit","code","setCode","faUndo","faSave","ShowPaypal","paypal","setIsEditingPaypal","EditPaypal","handlePaypalEdit","localPaypal","setLocalPaypal","Affiliation","setSettings","eventsList","setEventsList","stats","setStats","isEditingCode","isEditingPaypal","setMessage","getAffiliationSettings","responseSettings","handleSubmitSettings","settingsTosave","codeTosave","getEvents","paypal_email","responseError","commission","views","active_referrals","referral","earnings","ReferralScreen","handleReferral","host","NewLoginScreen","API_GATEWAY","Integrations","frameborder","Campaigns","CampaignsList","create","CreateCampaign","Modal","footer","subTitle","stateTitle","onRequestClose","modal","meta","head","wrapper","ChargeApproval","chargeConfirmationUrl","redirectToChargeApproval","isModalVisible","setIsModalVisible","orderSize","setOrderSize","isExpanded","setIsExpanded","couponOpened","setCouponOpened","couponCode","setCouponCode","discountLoading","setDiscountLoading","setDiscount","discountMessage","setDiscountMessage","discountedChargeUrl","setDiscountedChargeUrl","handleDiscountApply","coupon","found","tabIndex","blue_color","bg_blue_color","flex","minWidth","minHeight","navy_color","table","hidden_pricing","bg_lighter_blue_color","calculatePrice","faCheckSquare","withRouter","newPlanRedirect","queryString","createNotification","deleteNotification","URLSearchParams","apiKey","SHOPIFY_API_KEY","shopOrigin","forceRedirect","SHOPIFY_EMBEDDED_FORCE_REDIRECT","btoa","createApp","setupModalAutoSizing","AppBridgeHistory","History","$crisp","fbq","APP","toastOptions","toast","Toast","SHOW","_rect5","_rect6","_rect7","_rect8","_g3","_g4","shopSetItem","db_keys","WithShopProvider","useShop","setCartActive","scope","SCOPE","version","checkScope","default_settings","shop_settings","coupon_alert_text","upgradingText","downgradingText","loadingBackground","loadingBorder","subscribedText","subscribedBackground","subscribedBorder","continue_shopping_button","active_continue_shopping_underlined","checkout_condition_color","desktop_quantity","mobile_quantity","cart_name","badges","announcement","auto_discount","font_size","font_weight","chargeAccepted","checkStatus","intervalId","setInterval","clearInterval","getScriptStatus","Rehydrated","client","getApolloContext","rehydrated","AWSAppSyncClient","hydrated","EmptyState","secondaryAction","illustration","details","getValue","cell","Function","Item","toDateString","x1","y1","x2","y2","gradientTransform","gradientUnits","offset","stopColor","stopOpacity","xlinkHref","ItemsList","cellSpacing","cellPadding","NoData","noIcon","CarouselControls","activeTab","control","StepperControls","stepperControls","Carousel","ACTIVE_IS_NOT_SET","bindedSetActiveTab","REPLACE","carousel","isFunction","FormGroup","noBorderBottom","groupContent","maxHeight","setMaxHeight","handleClick","container","focusWithIn","querySelectorAll","picker","offsetHeight","transition","ErrorsList","showFirstOnly","FormControl","showError","childrenWidth","singleChildWidth","isErrorArray","hasErrors","getErrors","containerClasses","Children","labelClasses","infoClasses","backgroundColor","child","Tag","alt","ColorPicker","color_type","data_input","contentRef","_setVisible","setVisible","Manager","Reference","Popper","positionFixed","modifiers","preventOverflow","enabled","arrowProps","zIndex","data-placement","DropdownIndicator","colourStyles","inInput","option","isDisabled","isFocused","isSelected","cursor","textTransform","isHovered","boxShadow","borderColor","borderRadius","fontWeight","singleValue","dropdownIndicator","indicatorSeparator","valueContainer","Dropdown","validation","closeMenuOnSelect","selectedOption","op","createdOptions","isClearable","classNamePrefix","components","Input","withNumber","withWeight","withColor","inputRef","iconFirst","placeholder_color","hasTags","hasLeftNeighbor","data-tags","rounded","switch","onEnter","onKeyDown","Textarea","row","TagInput","tag","Or","ButtonSelect","onSelect","showCheckedIcon","inlineIcon","noIconBG","disabledClick","isLastButton","onKeyPress","spin","StickyCart","device","isPreview","SC","isUnavailableFocused","isStickyActVariantFocused","setVariants","qte","setQte","oldPrice","compare_at_price","formatColor","selectedVariants","select","dataset","mobile_show_quantity","toggleOpen","element","currentTarget","mobile_cart_position","mobile_location","Styles","desktopStickyCartContainar","btn_style","curvy","background_color","bottom","visibility","desktop_active","detailsSection","desktop_product_preview","images","desktop_show_product_name","desktop_show_compared_price","btn_color","actionsSection","desktop_show_variants","map_select_containar","map_select","data-open","data-value","data-display","desktop_show_quantity","minus","atc","txt_color","btn_text_unavailable","btn_text","mobileStickyCartContainar","cart","txt","fill-rule","clip-rule","infos","mobile_show_compared_price","mobile_show_title","mobile_show_price","mobile_atc_height","btn_text_variant_active","btn_atc_txt_variant_active","Preview","openByDefault","noCampaign","compareAtMap","setCompareAtMap","setCampaign","cartItems","setCartItems","setCampaigns","previewError","setPreviewError","lastCampaign","setLastCampaign","cartIsEmpty","bundlesVariantPickerPreview","setBundlesVariantPickerPreview","autoDiscount","giftCurrentPreview","checkoutButtonLoadingEdit","showSubscription","comfirmOrderButtonLoadingEdit","showATUAfterText","setProduct","orderCodForm","setOrderCodForm","isCodFormSubmitted","setIsCodFormSubmitted","setCampaign_preview_types","PREVIEW_CAN_RENDER_ONLY_WITH_CAMPAIGN","PREVIEW_CAN_RENDER_WITHOUT_CAMPAIGN","CAN_RENDER_CART","isStickyPreview","generateFakeCartItems","isSpecificWithNoSelected","collection_id","prd","featured_image","fakePreviewProducts","cartItemQuantity","product_title","discounts","amount","line_level_discount_allocations","discount_application","discounted_price","variant_id","count_compare_at","product_id","fakeCampaigns","openPreview","preview","countStartAt","onConfirm","data-collapsed","data-curved","curved","campaignModules","getSettings","shop_url","cart_items","cart_currency","showCheckoutLoading","showComfirmOrderLoading","forcePreview","showAddCartButton","mobileContainar","ActionsButtons","getProperValue","button_ref","actions_ref","useResponsive","xs","sm","md","screenIsAtMost","orientation","screenIsAtLeast","actions_wrapper","data-popover","action_button_menu","react_ref","margin","flexShrink","action_button","Notification","closeable","Notifications","notifications","uniqNotifications","uniqBy","exclude","notification","Range","formatter","maxValue","minValue","ProductSelector","selectedProduct","tile","data-selected","priceTag","inside","ImagePicker2","useMemo","setPreview","previewRef","uploading","setUploading","uploadingRef","readImage","OnLoad","handleDrop","f","dots","DragAndDrop","noClass","drag","dropRef","handleDrag","handleDragIn","dataTransfer","handleDragOut","clearData","dragAndDrop","dragging","RichEditor","editorRef","getColors","setAttribute","onchange","getEditor","insertEmbed","getSelection","toolbar","handlers","click","prompt","quill","amount_left","binding","tooltip","xmlSpace","CustomText","textPAth","fontSizePath","fontWeightPath","colorPath","extendMoment","Moment","defaultPeriods","startOf","endOf","subtract","closable","DateRange","minDate","tagRef","formatTagText","isLabeled","isSame","formateUnLabeledRange","DateRangePicker","periods","toDate","Calendar","activePicker","setActivePicker","dateObject","setDateObject","month","setMonth","year","setYear","lastMonth","setLastMonth","nextMonth","setNextMonth","last_month","next_month","calendar","selects","DaysPicker","selectedRange","setSelectedRangeState","isSliding","setIsSliding","setSelectedRange","fireOnChange","formatRange","tempRange","setTempRange","previewRange","setPreviewRange","mouseIsDown","setMouseIsDown","weekDayShort","weekdaysShort","monthDaysCount","daysInMonth","firstDayOfMonth","lastMonthDaysCount","handleMouseDown","newSelectedRange","sort","handleMouseUp","handleMouseOver","isOnRange","isFirst","startDate","endDate","isOnPreviewRange","momentRange","blankDays","onMouseDown","onMouseUp","onMouseOver","empty","reverse","totalSlots","weekDays","day","Day","isFirst_p","isLast_p","data-preview","data-first","data-last","onTouchStart","onTouchEnd","data-empty","MonthPicker","months","attrs","YearsPicker","years","Alert","desc","iconColor","warning","warning_secondary","save_settings","GuideContainer","linkLabel","itemsClassName","itemsStyles","paddingBottom","textDecoration","lineHeight","GuideLink","GuideVideo","backgroundRepeat","backgroundPosition","backgroundSize","SetupStep","recommended","actionText","done","SetupGuide","total","CodeEditor","isEmbedded","previewOpenByDefault","TutorialModal","overlay","marginRight","maxWidth","justifyContent","YtFreeGift","YtFreeShipping","YtShippingProtection","YtDropshipping","YtClothing","YtDesigning","TallyModal","marginheight","marginwidth","SetupScreen","frameBorder","allowFullScreen","allow","App","Routes","voucher","setVoucher","setNewPlanRedirect","component","confirmation_url","app_wrapper","Sidebar","exact","Shopify","rate","Amplify","configure","endpoints","endpoint","custom_header","shopifyApp","Authorization","aws_appsync_graphqlEndpoint","aws_appsync_region","aws_appsync_authenticationType","InMemoryCache","Client","auth","token","region","disableOffline","ReactDOM","axios","interceptors","request","use","Api","maxCacheSize","ttl","__addFilter","loadable","Scary","Badges","Announcement","NewOneCheckUpSell","ConditionCheck","CouponCodeForm","InfoItem","negative","infoClass","CartContext","Utils","cart_settings","em","AnimatedNumber","formatValue","mu_stop_negative","getAllOCUProducts","isOCUProduct","is_example","canRenderOCU","get_total","cart_level_discount_applications","shopify_cart_items","shopify_cart_upsells","productAddedToCart","discountCode","cartNote","hasAutoDiscount","slider","setPreviewed_product","update_cart_item","rechargeSettings","cartLevelAutoDiscount","GetCartLevelAutoDiscount","checkoutLoading","setCheckoutLoading","setPreviewCheckoutToast","isTermsAccepted","setIsTermsAccepted","shakeClass","setShakeClass","DefaultAutoDiscountSettings","show_coupon","show_coupon_alert_text","is_checkout_condition_active","generateCheckoutUrl","esid","wheelioDiscount","Cookies","encodeURIComponent","getLangPath","setNote","note","useCampaign","one_check_up_sell_product_id","ocu_campaign","ocu_isGlobal","add_to_unlock_product_id","isGlobal","CAN_RENDER_ADD_TO_UNLOCK","CAN_RENDER_ONE_CHECK_UP_SELL","ocuHasProduct","redirectToCheckout","addShipProtect","checkoutUrl","mu_checkoutHook","generateReChargeCheckout","checkout","isRechargeCheckout","shipping_interval_frequency","shipping_interval_unit_type","mu_custom_checkout","ttq","mu_disable_tiktok_tracking","content_type","content_name","content_id","selling_plan_allocation","sp","selling_plan","schema","campaign_key","invoice_url","remove","mu_keep_checkout_loading","mu_filter_discount_items","price_adjustments_value","price_adjustments_value_type","mu_get_discount","mu_terms_accepted","fix_checkout_container","textAlign","total_allocated_amount","formatAutoDiscount","show_subtotal","ocu","checkout_as_link","fontFamily","button_text_loading","hoverBackground","data-loading","mu_checkout_img","mu_stop_checkout_loading","moneyHtml","DOMParser","parseFromString","textContent","formatCheckout","mu_continue_shopping_logic","closeCart","fbt_position","fbt_below","handleDiameter","onColor","offColor","onHandleColor","offHandleColor","noText","uncheckedIcon","checkedIcon","StyledButton","styled","hover_background","iconSizes","default","small","medium","ButtonLoading","ButtonText","loadingContainer","english","empty_cart","shipping_option","sold_out","atcButton","readMore","use_coupon_code","enter_coupon_code","apply_coupon_code","edit_coupon_code","close_coupon_code","random_text","prefix","show_product_details","upsell_confirm_button","after","separator","offer_highlight","selecting","variant_selector_text","variant_change_text","inventory_quantity","french","arabic","german","kill_draft","Product","originalSrc","ADD_TO_UNLOCK_PRODUCTS_VARIANTS_MAP","compareAtPrice","variant_price","default_background","default_primary","default_secondary","default_font_color","default_danger","danger","__","translate","Languages","applied_discount_title","activeBackground","activeColor","show_all_locked_goals","product_price","products_length","exclude_tags","show_text","previous_gift","compare_at_price_active","outline","variant_button_background","atcButton_background","atcButton_hoverBackground","external","truncate","truncate_length","active_background","active_color","include","open_cart","grow","image_size","error_message","is_form_in_cart","confirm_button","loading_button","atc_action","desktop_visibility","desktop_location","mobile_active","mobile_visibility","hours","minutes","seconds","textAlignement","splits","show","curve","lineCap","colors","dashArray","dropShadow","left","blur","xaxis","yaxis","dataLabels","enabledOnSeries","iconName","atcActions","CustomScroll","isMobile","trackBg","thumbBg","scrollRef","finalClassName","custom_scrollbar","addPrefix","require","isObject","variable","cssClasses","cssClass","c","APPSYNC_ENDPOINT","APPSYNC_REGION","AUTH_TOKEN_KEY","GiftWithPurchaseWidget","MultiGiftWithPurchaseWidget","CartItem","cartItem","giftGoals","line","line_quantity","itemSoldOut","variant_title","variant_options","soldOut","setSoldOut","maxQuantity","setMaxQuantity","selectedSellingPlanID","setSelectedSellingPlanID","plansData","setPlansData","loadingPlan","setLoadingPlan","removeFBTUpsell","selectedVariant","IS_EXAMPLE","IS_ONE_CHECK_PRODUCT","IS_GIFT_PRODUCT","updateItem","newQuantity","formatText","getPrice","original","hasCompareAt","finalPrice","mu_handle_compareAt","GetCartLineItemDiscount","single_price","mu_show_single_price","original_line_price","productQuantity","selectedBundle","sortByQuantity","getBundleDiscount","plain","formatBundleLabel","sortBundles","getPlansData","checkForAppScript","scriptKeyword","scripts","getElementsByTagName","fetchData","formatSubsciptionUpgrade","plans_group_name","selling_plan_name","subscriptions","external_plan_name","data-product-id","data-variant-id","mu_display_product_image","mu_title_unclickable","hide_variant_title","mu_variants_join_char","mu_show_discount_when_code_only","fillRule","clipRule","show_item_properties","startsWith","show_private_properties","data-key","lighterColor","aria-label","data-state","appearance","selling_plan_id","updateCartItem","retry","Promise","resolve","reject","onetime","groupLabel","external_plan_id","labels","itemQuantity","CartItemsList","ocu_products","filteredItems","ocu_product","byQuantity","bundlesDiscounts","getDiscount","getBundlesOnly","totalItems","mu_stop_shopify_rate","CAN_RENDER_GIFT_WIDGET","gifts","updates","handleGiftCampaignChange","paddingTop","GetPresentableItemsList","mu_dont_reverse_items","getCartItems","hasManyGifts","previous_goal","some","goalObject","oldGoal","getGoal","inCents","getTotal","giftGoal","get_product_by_handle","product_handle","multiplier","langPath","routes","root","types","GetDiscountFromCheckoutPage","serializedGraphqlString","ParsedGraphql","session","negotiate","sellerProposal","localizedMessage","subtotalBeforeReductions","runningTotal","merchandiseDiscount","lines","OriginalTotal","Decimal","mul","toNumber","NewTotal","discountValue","CartHasAutoDiscount","hasItemLevelAutoDiscount","hasCartLevelAutoDiscount","getCartLink","mu_use_cart_json","addToCart","formData","hasFile","entriesIsFunction","File","mu_form_files","formHasFile","parseVariantId","image_id","singleId","findItem","newItems","discounted","calculateDiscount","formatted","prop","navigator","userAgent","vendor","opera","substr","Math","abs","floor","noMarketsRounding","mu_market_rounding","ceil","formattedMoney","mu_after_format_money","logError","getVariantPrice","selected_variant","subscription_first","requires_selling_plan","mu_fbt_sub_first","selling_plan_allocations","unformattedPrice","activeCurrency","presentmentPrices","presentment_prices","foundPrice","currency_code","mu_stop_presentment","getAddedGifts","productHasOneVariant","variantIsOnStock","inventory_management","inventory_policy","getMaxQuantity","parseProductId","string","initialValue","mu_shipProtectSelected","mu_shipProtectPrice","BundlesIndexMap","quantityDeference","extractContent","s","span","innerHTML","innerText","getCompareAtDiscount","mu_exclude_free_gift_price","compare_at","times","checkAgainst","FilterAtuGoals","itemHasAutoDiscount","existingItemIndex","existingItem","getAutoDiscounts","ItemLevelAutoDiscount","CartLevelAutoDiscount","totalAutoDiscount","filteredItemsTotal","ItemLevelTotalDiscount","mu_use_new_discount_calculation","total_discount","CartLevelDiscountCode","totalAppliedDiscounts","mu_use_totalAppliedDiscounts","countedBundles","product_bundles_campaign","productItems","productTotal","bundlesIndexMap","calculateReward","getCampaign","atuDiscount","totalWithBundlesDiscount","quantityCount","unlocked","add_to_unlock_discount","round_atuDiscount","round","getModules","alpha","formatColorHex","rgbaToHex","RGBToHex","colorAutoBlend","percentage","sqrt","lightOrDark","darkerColor","blend","pSBC","isExample","old_inventory_quantity","hasParentWithMatchingSelector","el","callback","isScript","getShopProducts","mu_stop_json_products","totalPages","mu_get_all_products","requests","page","all","responses","flatMap","getRechargeSubscriptionsData","productId","fetch","ok","json","groupedPlans","discountLabel","discount_amount","getDefaultSubscriptionsData","productUrl","appId","variantId","hostname","selling_plan_groups","filteredSubscriptions","app_id","subscriptionGroup","selling_plans","price_adjustments","priceAdjustment","value_type","oneTimePrice","mu_money_format","spa","charge_interval_frequency","discount_type","external_plan_group_id","appType","memo","product_info","preview_product","add_to_cart","productNotAddedToCart","setVariantPickerOptions","setVariantsPickerShow","addFBTUpsell","hasWriteDiscountsScope","subscriptionObject","HAS_SUBSCRIPTION","widget_settings","published","sodOut","setSodOut","dataFetched","setDataFetched","mu_fbt_set_default_variant","option1","option2","option3","selectedOptions","selectedValues","variantOptions","setOriginal","addToCartInit","fetched","skip_picker","mu_custom_fbt_logic","mu_filter_fbt_subscription","buttonText","sellingPlanId","priceText","mu_fbt_custom_atc","fetchProductInfo","newOriginal","calculateOriginal","updateProduct","updatedVariants","newProduct","updatedProduct","mu_fbt_use_fetched_product","formattedText","formattedPrice","mu_fbt_title_unclickable","mu_fbt_replace_show_details","elm","productsInMemory","cartContext","monster_static","upSells","setUpSells","filterUpsells","storefront_purchase_options","subscription_options","allProducts","setAllProducts","handleSetAllProducts","tmpProducts","fetchProducts","upsells","cancel","toBeFetched","cancelToken","fetchedProducts","pro","notAdded","mu_custom_fbt_filter","prod","checkTags","tmpUpsel","parseProducts","recoEndpoint","CancelToken","String","isUnlocked","calculateGoals","campaign_id","autoDiscountGifts","contextCache","setShowConfetti","ascGoals","dir","isDesc","toLocaleUpperCase","sortGoals","goalValue","discountedValue","mu_include_sub_full_price","totalPrice","wasLocked","goalsLength","1","2","3","4","badgeProgressLength","isDescending","previousGoal","textKey","labelKey","previousIsUnlocked","HeaderMachine","createMachine","GoalImageContent","HeaderATU","onlyOneItemAddedToCart","shipProtectState","setContextCache","hasImage","handleGifts","showConfettiPreview","hasLongBadgePrice","matches","extractedText","data-offset","progress_background","data-quantity","otherUnlockedDiscounts","progress_thick","data-goal","ProgressBar","formattedGoal","hasUploadedImage","roundedFirst","roundedLast","completed","GoalText","notTheHighestDiscount","html","textIsEmpty","formateText","replacedReward","replacedAmount","replacedQuantity","pickRandomGift","cachedVariant","generateVariant","random","cached_at","now","getVariants","addedVariants","next_goal","giftsCount","GiftMustBeAddedManually","randomVariant","handleGiftProduct","initialState","stateRef","newState","inlineOnChange","returnValue","Header","slickGoTo","active_slide","back","add_to_unlock_campaign","shadow","headerRef","ExtraModule","fixItemPrice","line_price","updateBagCounter","item_count","dawn_icon","querySelector","dawn_counter","envy_counters","cart_svg","outerHTML","cart_bubble","appendChild","envy_counter","classList","mu_bag_selecor","mu_bag_selector","formatted_count","mu_cart_count_formatter","child_nodes","sendCartUpdatedEvent","mu_disable_cart_update","mu_stop_cart_updated_event","CustomEvent","detail","dispatchEvent","onSubmit","upsellCartStopped","DelayedEvents","manualSetupCartLinks","mu_origin","mu_custom_links","fetchProductDetails","productData","mu_cart_with_compares","variant_data","cartItemsWithComparedPrices","thankYouPageCleanup","localStorage","refreshCart","res","monster_setCartItems","mu_productionAddToCartCallBack","openCart","monster_addToCart","headers","serializeForm","FormData","serialized","monster_submit","tagName","mu_custom_atc_logic","mu_product","monster_getCartItems","monster_refresh","monster_submitAddToCartForm","clearCart","monster_clearCart","ProductDetails","CodForm","VariantsPicker","BundlesVariantsPicker","Confetti","CartProvider","Cart","getCampaigns","mergeCampaigns","mergeCompareAtMap","setShopSettings","onInit","cart_ref","header_ref","setHasAutoDiscount","variantsPickerShow","variantsPickerShow_ref","variantPickerOptions","viewCartTracked","setViewCartTracked","showConfetti","previewed_product","setDiscountCode","setRechargeSettings","userIsTabbing","setUserIsTabbing","setShipProtectState","variantsPickerOverlay_ref","bundlesVariantsPickerOverlay_ref","bundlesVariantsPickerShow","setBundlesVariantsPickerShow","bundlesVariantsPickerOptions","setBundlesVariantsPickerOptions","new_items","filtered_items","added_items","newUpsells","fbtUpsells","finalUpsells","CartItemsReducer","shopify_cart_state","monster_loading","productionAddToCartCallBack","NonUndefinedCampaigns","campaignsKeys","shouldBeActive","productCampaigns","fromCampaign","mergedModules","currentQuantity","trackEvent","byVariant","productAddedToCartByVariant","onlyOneItemAddedToCartByVariant","compareAt","finalDiscount","mu_cartSummary","monster_getTotal","productionAddToCart","sameId","sameProperties","sameSellingPlane","gfFileUpload","requiredFields","requestSubmit","hasFont","handleFirstTab","keyCode","nonGiftsItems","deleteGifts","notifyMonsterUpsells","WebFont","load","google","families","fetchCampaigns","mergeCartItem","removeCartItem","setCartNote","monster_addCartItem","monster_mergeCartItem","monster_removeCartItem","monster_setCartNote","getRechargeSettings","recharge_installed","recharge_active","ReCharge","is_installed","removeAttribute","campaignsIds","addCartItem","direction","offsetwidth","recycle","numberOfPieces","gravity","onConfettiComplete","initialVelocityX","parentRef","iconRef","campaign_type","bundles_product_id","getFullCampaign","product_campaign","global_campaigns","bundles_campaign","itemsIds","type_campaign","product_campaigns","productGlobalCampaigns","productIsAddedToCart"],"mappings":"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","file":"static/js/main.7308aa20.chunk.js","sourcesContent":["// extracted by mini-css-extract-plugin\nmodule.exports = {\"tag_input\":\"tag_input_tag_input__2h8uO\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"buttonSelect\":\"button_select_buttonSelect__LHhVw\",\"or\":\"button_select_or__2V9JI\",\"wrapper\":\"button_select_wrapper__1mvtL\",\"line\":\"button_select_line__3yJ-u\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"notification\":\"notifications_notification__gB97s\",\"icon\":\"notifications_icon__2unUY\",\"content\":\"notifications_content__3Fv1w\",\"actions\":\"notifications_actions__2efjC\",\"close\":\"notifications_close__2Flnr\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"navy_color\":\"charge_approval_navy_color__1QEUU\",\"bg_blue_color\":\"charge_approval_bg_blue_color__2UUzz\",\"border_blue_color\":\"charge_approval_border_blue_color__2Hlac\",\"blue_color\":\"charge_approval_blue_color__2iY8N\",\"bg_light_blue_color\":\"charge_approval_bg_light_blue_color__3n0_N\",\"bg_lighter_blue_color\":\"charge_approval_bg_lighter_blue_color__1M7-Q\",\"table_rounded\":\"charge_approval_table_rounded__1uMbq\",\"table\":\"charge_approval_table__1tTAA\",\"hidden_pricing\":\"charge_approval_hidden_pricing__3II4x\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"badge\":\"sidebar_badge__3tLl5\",\"sidebar\":\"sidebar_sidebar__31FrF\",\"widget\":\"sidebar_widget__-uUjg\",\"attach\":\"sidebar_attach__1d91n\",\"logo\":\"sidebar_logo__37BqK\",\"menu\":\"sidebar_menu__2ZjLW\",\"spacer\":\"sidebar_spacer__135V8\",\"menu_setup\":\"sidebar_menu_setup__3eQxJ\",\"div\":\"sidebar_div__3m1qx\",\"text\":\"sidebar_text__2ikgg\",\"counter\":\"sidebar_counter__1Epiv\",\"menu_item\":\"sidebar_menu_item__MjEAI\",\"new_app\":\"sidebar_new_app__1AFMt\"};","import React from 'react';\r\nconst NotifyContext = React.createContext(null);\r\nexport const NotifyProvider = NotifyContext.Provider;\r\nexport default NotifyContext;\r\n","import React from 'react';\r\n\r\nconst ShopContext = React.createContext(null);\r\nexport const ShopProvider = ShopContext.Provider;\r\nexport default ShopContext;","import React from 'react';\r\n\r\nconst UserContext = React.createContext(null);\r\nexport const UserProvider = UserContext.Provider;\r\nexport const UserConsumer = UserContext.Consumer;\r\nexport default UserContext;\r\n","import React from 'react';\r\n\r\nconst PreviewContext = React.createContext(null);\r\nexport const PreviewProvider = PreviewContext.Provider;\r\n\r\nexport default PreviewContext;\r\n","import gql from 'graphql-tag';\r\n\r\nexport const UPDATE_SHOP_PROP = gql`\r\n\tmutation updateShopProp($id: ID!, $input: updateShopProp__input!) {\r\n\t\tupdateShopProp(id: $id, input: $input) {\r\n\t\t\tid\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const SWITCH_CAMPAIGN_STATUS = gql`\r\n\tmutation SwitchCampaignStatus($id: ID!, $input: UpdateCampaignInput!) {\r\n\t\tupdateCampaign(id: $id, input: $input) {\r\n\t\t\tid\r\n\t\t\tname\r\n\t\t\tactive\r\n\t\t\ttarget {\r\n\t\t\t\ttype\r\n\t\t\t}\r\n\t\t\tsettings {\r\n\t\t\t\ttype\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const CREATE_CAMPAIGN_MUTATION = gql`\r\n\tmutation CreateCampaign($input: NewCampaignInput!) {\r\n\t\tcreateCampaign(input: $input) {\r\n\t\t\tid\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const UPDATE_CAMPAIGN_MUTATION = gql`\r\n\tmutation UpdateCampaign($id: ID!, $input: UpdateCampaignInput!) {\r\n\t\tupdateCampaign(id: $id, input: $input) {\r\n\t\t\tid\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const REMOVE_CAMPAIGN_MUTATION = gql`\r\n\tmutation RemoveCampaign($id: ID!) {\r\n\t\tremoveCampaign(id: $id) {\r\n\t\t\tid\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const SAVE_SHOP_SETTINGS = gql`\r\n\tmutation SaveShopSettings($id: ID!, $input: ShopSettings__input!) {\r\n\t\tupdateShopSettings(id: $id, input: $input) {\r\n\t\t\tid\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nexport const SAVE_PLAN_SETTINGS = gql`\r\n\tmutation SavePlanSettings($id: ID!, $input: PlanSettings__input!) {\r\n\t\tupdatePlanSettings(id: $id, input: $input) {\r\n\t\t\tid\r\n\t\t}\r\n\t}\r\n`;\r\n","import gql from 'graphql-tag';\r\n\r\nconst GET_SINGLE_CAMPAIGN = gql`\r\n    query GetSingleCampaign($id: ID!) {\r\n        campaign(id: $id) {\r\n            id\r\n            name\r\n            active\r\n            target {\r\n                type\r\n                selected {\r\n                    id\r\n                    image\r\n                    title\r\n                    handle\r\n                }\r\n                ids\r\n                countries {\r\n                    include_active\r\n                    include\r\n                    exclude_active\r\n                    exclude\r\n                }\r\n            }\r\n            settings {\r\n                type\r\n                applied_discount_title\r\n                bundles {\r\n                    text\r\n                    prefix\r\n                    font_size\r\n                    background {\r\n                        r\r\n                        g\r\n                        b\r\n                        a\r\n                    }\r\n                    color {\r\n                        r\r\n                        g\r\n                        b\r\n                        a\r\n                    }\r\n                    activeBackground {\r\n                        r\r\n                        g\r\n                        b\r\n                        a\r\n                    }\r\n                    activeColor {\r\n                        r\r\n                        g\r\n                        b\r\n                        a\r\n                    }\r\n                    list {\r\n                        id\r\n                        type\r\n                        quantity\r\n                        reward\r\n                    }\r\n                    style\r\n                    labelColor {\r\n                        r\r\n                        g\r\n                        b\r\n                        a\r\n                    }\r\n                    badge {\r\n                        text {\r\n                            r\r\n                            g\r\n                            b\r\n                            a\r\n                        }\r\n                        background {\r\n                            r\r\n                            g\r\n                            b\r\n                            a\r\n                        }\r\n                        border {\r\n                            r\r\n                            g\r\n                            b\r\n                            a\r\n                        }\r\n                    }\r\n                    variantsPicker {\r\n                        active\r\n                        label\r\n                        confirm\r\n                        textColor {\r\n                            r\r\n                            g\r\n                            b\r\n                            a\r\n                        }\r\n                        dropdownTextColor {\r\n                            r\r\n                            g\r\n                            b\r\n                            a\r\n                        }\r\n                        dropdownBackground {\r\n                            r\r\n                            g\r\n                            b\r\n                            a\r\n                        }\r\n                        confirmTextColor {\r\n                            r\r\n                            g\r\n                            b\r\n                            a\r\n                        }\r\n                        confirmBackground {\r\n                            r\r\n                            g\r\n                            b\r\n                            a\r\n                        }\r\n                    }\r\n                }\r\n                add_to_unlock {\r\n                    fbt_position\r\n                    fbt_below\r\n                    separator {\r\n                        text\r\n                        active\r\n                    }\r\n                    progress_thick\r\n                    progress_background {\r\n                        r\r\n                        g\r\n                        b\r\n                        a\r\n                    }\r\n                    progress_primary {\r\n                        r\r\n                        g\r\n                        b\r\n                        a\r\n                    }\r\n                    progress_secondary {\r\n                        r\r\n                        g\r\n                        b\r\n                        a\r\n                    }\r\n                    progress_complete {\r\n                        r\r\n                        g\r\n                        b\r\n                        a\r\n                    }\r\n                    # reward_type\r\n                    title {\r\n                        text\r\n                        font_size\r\n                        font_weight\r\n                        color {\r\n                            r\r\n                            g\r\n                            b\r\n                            a\r\n                        }\r\n                    }\r\n                    background {\r\n                        r\r\n                        g\r\n                        b\r\n                        a\r\n                    }\r\n                    borderColor {\r\n                        r\r\n                        g\r\n                        b\r\n                        a\r\n                    }\r\n                    show_product_details {\r\n                        text\r\n                        font_size\r\n                        font_weight\r\n                        color {\r\n                            r\r\n                            g\r\n                            b\r\n                            a\r\n                        }\r\n                    }\r\n                    product_details {\r\n                        atcButton {\r\n                            text\r\n                            font_size\r\n                            font_weight\r\n                            color {\r\n                                r\r\n                                g\r\n                                b\r\n                                a\r\n                            }\r\n                        }\r\n                        atcButton_background {\r\n                            r\r\n                            g\r\n                            b\r\n                            a\r\n                        }\r\n                        atcButton_hoverBackground {\r\n                            r\r\n                            g\r\n                            b\r\n                            a\r\n                        }\r\n                        readMore {\r\n                            text\r\n                            font_size\r\n                            font_weight\r\n                            color {\r\n                                r\r\n                                g\r\n                                b\r\n                                a\r\n                            }\r\n                        }\r\n                        truncate\r\n                        truncate_length\r\n                        external\r\n                    }\r\n                    product_title {\r\n                        text\r\n                        font_size\r\n                        font_weight\r\n                        color {\r\n                            r\r\n                            g\r\n                            b\r\n                            a\r\n                        }\r\n                    }\r\n                    product_price {\r\n                        text\r\n                        font_size\r\n                        font_weight\r\n                        color {\r\n                            r\r\n                            g\r\n                            b\r\n                            a\r\n                        }\r\n                    }\r\n                    upsell_add_button {\r\n                        text\r\n                        font_size\r\n                        font_weight\r\n                        color {\r\n                            r\r\n                            g\r\n                            b\r\n                            a\r\n                        }\r\n                    }\r\n                    upsell_confirm_button {\r\n                        text\r\n                        font_size\r\n                        font_weight\r\n                    }\r\n                    show_suggestions\r\n                    recommendation_type\r\n                    products_length\r\n                    exclude_tags\r\n                    products {\r\n                        id\r\n                        image\r\n                        title\r\n                        price\r\n                        handle\r\n                        variants {\r\n                            id\r\n                            title\r\n                            price\r\n                            image\r\n                        }\r\n                        options {\r\n                            id\r\n                            name\r\n                            position\r\n                            values\r\n                        }\r\n                    }\r\n                    isActive\r\n                    show_all_locked_goals\r\n                    multi_goal_type\r\n                    show_badges\r\n                    goals {\r\n                        goal\r\n                        badge {\r\n                            type\r\n                            image\r\n                            show_text\r\n                            text {\r\n                                text\r\n                                font_size\r\n                                color {\r\n                                    r\r\n                                    g\r\n                                    b\r\n                                    a\r\n                                }\r\n                            }\r\n                        }\r\n                        specific_goals {\r\n                            goal\r\n                            currency\r\n                            main\r\n                        }\r\n                        reward_type\r\n                        goal_type\r\n                        goal_text {\r\n                            text\r\n                            font_size\r\n                            color {\r\n                                r\r\n                                g\r\n                                b\r\n                                a\r\n                            }\r\n                        }\r\n                        show_goal_text\r\n                        confetti\r\n                        confetti_length\r\n                        discount {\r\n                            type\r\n                            before\r\n                            after\r\n                            reward\r\n                        }\r\n                        free_shipping {\r\n                            before\r\n                            after\r\n                            manual\r\n                        }\r\n                        manual {\r\n                            before\r\n                            after\r\n                        }\r\n                        gift {\r\n                            before\r\n                            after\r\n                            product {\r\n                                id\r\n                                image\r\n                                title\r\n                                variant_id\r\n                                variant_price\r\n                            }\r\n                            products {\r\n                                id\r\n                                image\r\n                                title\r\n                                variant_id\r\n                                variant_price\r\n                                options {\r\n                                    id\r\n                                    name\r\n                                    position\r\n                                    values\r\n                                }\r\n                                variants {\r\n                                    id\r\n                                    title\r\n                                    price\r\n                                    image\r\n                                }\r\n                            }\r\n                            previous_gift\r\n                            multi_gift_select\r\n                            widget {\r\n                                active\r\n                                compare_at_price_active\r\n                                compare_at_price {\r\n                                    text\r\n                                    font_size\r\n                                    color {\r\n                                        r\r\n                                        g\r\n                                        b\r\n                                        a\r\n                                    }\r\n                                }\r\n                                before {\r\n                                    header\r\n                                    product_name\r\n                                    offer_highlight {\r\n                                        text\r\n                                        font_size\r\n                                        color {\r\n                                            r\r\n                                            g\r\n                                            b\r\n                                            a\r\n                                        }\r\n                                    }\r\n                                    background {\r\n                                        r\r\n                                        g\r\n                                        b\r\n                                        a\r\n                                    }\r\n                                    outline {\r\n                                        r\r\n                                        g\r\n                                        b\r\n                                        a\r\n                                    }\r\n                                    multi_gift_image\r\n                                }\r\n                                selecting {\r\n                                    header\r\n                                    product_name\r\n                                    offer_highlight {\r\n                                        text\r\n                                        font_size\r\n                                        color {\r\n                                            r\r\n                                            g\r\n                                            b\r\n                                            a\r\n                                        }\r\n                                    }\r\n                                    variant_selector_text {\r\n                                        text\r\n                                        font_size\r\n                                        color {\r\n                                            r\r\n                                            g\r\n                                            b\r\n                                            a\r\n                                        }\r\n                                    }\r\n                                    background {\r\n                                        r\r\n                                        g\r\n                                        b\r\n                                        a\r\n                                    }\r\n                                    outline {\r\n                                        r\r\n                                        g\r\n                                        b\r\n                                        a\r\n                                    }\r\n                                    variant_button_background {\r\n                                        r\r\n                                        g\r\n                                        b\r\n                                        a\r\n                                    }\r\n                                }\r\n                                after {\r\n                                    header\r\n                                    product_name\r\n                                    offer_highlight {\r\n                                        text\r\n                                        font_size\r\n                                        color {\r\n                                            r\r\n                                            g\r\n                                            b\r\n                                            a\r\n                                        }\r\n                                    }\r\n                                    variant_change_text {\r\n                                        text\r\n                                        font_size\r\n                                        color {\r\n                                            r\r\n                                            g\r\n                                            b\r\n                                            a\r\n                                        }\r\n                                    }\r\n                                    background {\r\n                                        r\r\n                                        g\r\n                                        b\r\n                                        a\r\n                                    }\r\n                                    outline {\r\n                                        r\r\n                                        g\r\n                                        b\r\n                                        a\r\n                                    }\r\n                                }\r\n                            }\r\n                            # inventory_quantity {\r\n                            #   active\r\n                            #   text\r\n                            # }\r\n                        }\r\n                    }\r\n                    # goal\r\n                    # goal_type\r\n                    # discount {\r\n                    # \ttype\r\n                    # \tbefore\r\n                    # \tafter\r\n                    # \treward\r\n                    # }\r\n                    # free_shipping {\r\n                    # \tbefore\r\n                    # \tafter\r\n                    # \tmanual\r\n                    # }\r\n                }\r\n                one_check_up_sell {\r\n                    text\r\n                    is_ticked_by_default\r\n                    include_in_atu\r\n                    highlight {\r\n                        r\r\n                        g\r\n                        b\r\n                        a\r\n                    }\r\n                    product_type\r\n                    truncate\r\n                    truncate_length\r\n                    product {\r\n                        id\r\n                        image\r\n                        price\r\n                        title\r\n                        handle\r\n                        body_html\r\n                        images {\r\n                            id\r\n                            src\r\n                        }\r\n                        options {\r\n                            id\r\n                            name\r\n                            product_id\r\n                            position\r\n                            values\r\n                        }\r\n                        variant_id\r\n                        variants {\r\n                            id\r\n                            title\r\n                            price\r\n                            image\r\n                        }\r\n                    }\r\n                }\r\n                multi_one_check_upsell {\r\n                    variant\r\n                    align\r\n                    border\r\n                    border_color {\r\n                        r\r\n                        g\r\n                        b\r\n                        a\r\n                    }\r\n                    highlight {\r\n                        r\r\n                        g\r\n                        b\r\n                        a\r\n                    }\r\n                    switch_on {\r\n                        r\r\n                        g\r\n                        b\r\n                        a\r\n                    }\r\n                    switch_off {\r\n                        r\r\n                        g\r\n                        b\r\n                        a\r\n                    }\r\n                    products {\r\n                        text\r\n                        is_ticked_by_default\r\n                        include_in_atu\r\n                        product_type\r\n                        truncate\r\n                        truncate_length\r\n                        product {\r\n                            id\r\n                            image\r\n                            price\r\n                            title\r\n                            handle\r\n                            body_html\r\n                            images {\r\n                                id\r\n                                src\r\n                            }\r\n                            options {\r\n                                id\r\n                                name\r\n                                product_id\r\n                                position\r\n                                values\r\n                            }\r\n                            variant_id\r\n                            variants {\r\n                                id\r\n                                title\r\n                                price\r\n                                image\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n                modules {\r\n                    order\r\n                    random_text {\r\n                        text\r\n                        active\r\n                    }\r\n                    order_note {\r\n                        text\r\n                        active\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n`;\r\n\r\nexport default GET_SINGLE_CAMPAIGN;\r\n","import gql from 'graphql-tag';\r\n\r\nconst LIST_SHOP_CAMPAIGNS = gql`\r\n    query ListShopCampaigns($userId: ID!, $nextToken: String) {\r\n        campaigns(userId: $userId, nextToken: $nextToken) {\r\n            nextToken\r\n            list {\r\n                id\r\n                name\r\n                active\r\n                createdAt\r\n                updatedAt\r\n                target {\r\n                    type\r\n                    selected {\r\n                        id\r\n                        image\r\n                        title\r\n                        handle\r\n                    }\r\n                    ids\r\n                    countries {\r\n                        include_active\r\n                        include\r\n                        exclude_active\r\n                        exclude\r\n                    }\r\n                }\r\n                settings {\r\n                    type\r\n                    applied_discount_title\r\n                    bundles {\r\n                        text\r\n                        prefix\r\n                        font_size\r\n                        background {\r\n                            r\r\n                            g\r\n                            b\r\n                            a\r\n                        }\r\n                        color {\r\n                            r\r\n                            g\r\n                            b\r\n                            a\r\n                        }\r\n                        activeBackground {\r\n                            r\r\n                            g\r\n                            b\r\n                            a\r\n                        }\r\n                        activeColor {\r\n                            r\r\n                            g\r\n                            b\r\n                            a\r\n                        }\r\n                        list {\r\n                            id\r\n                            type\r\n                            quantity\r\n                            reward\r\n                        }\r\n                        style\r\n                        labelColor {\r\n                            r\r\n                            g\r\n                            b\r\n                            a\r\n                        }\r\n                        badge {\r\n                            text {\r\n                                r\r\n                                g\r\n                                b\r\n                                a\r\n                            }\r\n                            background {\r\n                                r\r\n                                g\r\n                                b\r\n                                a\r\n                            }\r\n                            border {\r\n                                r\r\n                                g\r\n                                b\r\n                                a\r\n                            }\r\n                        }\r\n                        variantsPicker {\r\n                            active\r\n                            label\r\n                            confirm\r\n                            textColor {\r\n                                r\r\n                                g\r\n                                b\r\n                                a\r\n                            }\r\n                            dropdownTextColor {\r\n                                r\r\n                                g\r\n                                b\r\n                                a\r\n                            }\r\n                            dropdownBackground {\r\n                                r\r\n                                g\r\n                                b\r\n                                a\r\n                            }\r\n                            confirmTextColor {\r\n                                r\r\n                                g\r\n                                b\r\n                                a\r\n                            }\r\n                            confirmBackground {\r\n                                r\r\n                                g\r\n                                b\r\n                                a\r\n                            }\r\n                        }\r\n                    }\r\n                    add_to_unlock {\r\n                        fbt_position\r\n                        fbt_below\r\n                        separator {\r\n                            text\r\n                            active\r\n                        }\r\n                        progress_thick\r\n                        progress_background {\r\n                            r\r\n                            g\r\n                            b\r\n                            a\r\n                        }\r\n                        progress_primary {\r\n                            r\r\n                            g\r\n                            b\r\n                            a\r\n                        }\r\n                        progress_secondary {\r\n                            r\r\n                            g\r\n                            b\r\n                            a\r\n                        }\r\n                        progress_complete {\r\n                            r\r\n                            g\r\n                            b\r\n                            a\r\n                        }\r\n                        title {\r\n                            text\r\n                            font_size\r\n                            color {\r\n                                r\r\n                                g\r\n                                b\r\n                                a\r\n                            }\r\n                        }\r\n                        background {\r\n                            r\r\n                            g\r\n                            b\r\n                            a\r\n                        }\r\n                        borderColor {\r\n                            r\r\n                            g\r\n                            b\r\n                            a\r\n                        }\r\n                        show_product_details {\r\n                            text\r\n                            font_size\r\n                            color {\r\n                                r\r\n                                g\r\n                                b\r\n                                a\r\n                            }\r\n                        }\r\n                        product_details {\r\n                            atcButton {\r\n                                text\r\n                                font_size\r\n                                color {\r\n                                    r\r\n                                    g\r\n                                    b\r\n                                    a\r\n                                }\r\n                            }\r\n                            atcButton_background {\r\n                                r\r\n                                g\r\n                                b\r\n                                a\r\n                            }\r\n                            atcButton_hoverBackground {\r\n                                r\r\n                                g\r\n                                b\r\n                                a\r\n                            }\r\n                            readMore {\r\n                                text\r\n                                font_size\r\n                                color {\r\n                                    r\r\n                                    g\r\n                                    b\r\n                                    a\r\n                                }\r\n                            }\r\n                            truncate\r\n                            truncate_length\r\n                            external\r\n                        }\r\n                        product_title {\r\n                            text\r\n                            font_size\r\n                            color {\r\n                                r\r\n                                g\r\n                                b\r\n                                a\r\n                            }\r\n                        }\r\n                        product_price {\r\n                            text\r\n                            font_size\r\n                            color {\r\n                                r\r\n                                g\r\n                                b\r\n                                a\r\n                            }\r\n                        }\r\n                        upsell_add_button {\r\n                            text\r\n                            font_size\r\n                            color {\r\n                                r\r\n                                g\r\n                                b\r\n                                a\r\n                            }\r\n                        }\r\n                        upsell_confirm_button {\r\n                            text\r\n                            font_size\r\n                        }\r\n                        # reward_type\r\n                        show_suggestions\r\n                        recommendation_type\r\n                        exclude_tags\r\n                        products_length\r\n                        products {\r\n                            id\r\n                            image\r\n                            title\r\n                            price\r\n                            handle\r\n                            variants {\r\n                                id\r\n                                title\r\n                                price\r\n                                image\r\n                            }\r\n                            options {\r\n                                id\r\n                                name\r\n                                position\r\n                                values\r\n                            }\r\n                        }\r\n                        isActive\r\n                        show_all_locked_goals\r\n                        multi_goal_type\r\n                        show_badges\r\n                        goals {\r\n                            goal\r\n                            badge {\r\n                                type\r\n                                image\r\n                                show_text\r\n                                text {\r\n                                    text\r\n                                    font_size\r\n                                    color {\r\n                                        r\r\n                                        g\r\n                                        b\r\n                                        a\r\n                                    }\r\n                                }\r\n                            }\r\n                            specific_goals {\r\n                                goal\r\n                                currency\r\n                                main\r\n                            }\r\n                            reward_type\r\n                            goal_type\r\n                            goal_text {\r\n                                text\r\n                                font_size\r\n                                color {\r\n                                    r\r\n                                    g\r\n                                    b\r\n                                    a\r\n                                }\r\n                            }\r\n                            show_goal_text\r\n                            confetti\r\n                            confetti_length\r\n                            discount {\r\n                                type\r\n                                before\r\n                                after\r\n                                reward\r\n                            }\r\n                            free_shipping {\r\n                                before\r\n                                after\r\n                                manual\r\n                            }\r\n                            manual {\r\n                                before\r\n                                after\r\n                            }\r\n                            gift {\r\n                                before\r\n                                after\r\n                                product {\r\n                                    id\r\n                                    image\r\n                                    title\r\n                                    variant_id\r\n                                    variant_price\r\n                                }\r\n                                products {\r\n                                    id\r\n                                    image\r\n                                    title\r\n                                    options {\r\n                                        id\r\n                                        name\r\n                                        position\r\n                                        values\r\n                                    }\r\n                                    variants {\r\n                                        id\r\n                                        title\r\n                                        price\r\n                                        image\r\n                                    }\r\n                                }\r\n                                previous_gift\r\n                                multi_gift_select\r\n                                widget {\r\n                                    active\r\n                                    compare_at_price_active\r\n                                    compare_at_price {\r\n                                        text\r\n                                        font_size\r\n                                        color {\r\n                                            r\r\n                                            g\r\n                                            b\r\n                                            a\r\n                                        }\r\n                                    }\r\n                                    before {\r\n                                        header\r\n                                        product_name\r\n                                        offer_highlight {\r\n                                            text\r\n                                            font_size\r\n                                            color {\r\n                                                r\r\n                                                g\r\n                                                b\r\n                                                a\r\n                                            }\r\n                                        }\r\n                                        background {\r\n                                            r\r\n                                            g\r\n                                            b\r\n                                            a\r\n                                        }\r\n                                        outline {\r\n                                            r\r\n                                            g\r\n                                            b\r\n                                            a\r\n                                        }\r\n                                        multi_gift_image\r\n                                    }\r\n                                    selecting {\r\n                                        header\r\n                                        product_name\r\n                                        offer_highlight {\r\n                                            text\r\n                                            font_size\r\n                                            color {\r\n                                                r\r\n                                                g\r\n                                                b\r\n                                                a\r\n                                            }\r\n                                        }\r\n                                        variant_selector_text {\r\n                                            text\r\n                                            font_size\r\n                                            color {\r\n                                                r\r\n                                                g\r\n                                                b\r\n                                                a\r\n                                            }\r\n                                        }\r\n                                        background {\r\n                                            r\r\n                                            g\r\n                                            b\r\n                                            a\r\n                                        }\r\n                                        outline {\r\n                                            r\r\n                                            g\r\n                                            b\r\n                                            a\r\n                                        }\r\n                                        variant_button_background {\r\n                                            r\r\n                                            g\r\n                                            b\r\n                                            a\r\n                                        }\r\n                                    }\r\n                                    after {\r\n                                        header\r\n                                        product_name\r\n                                        offer_highlight {\r\n                                            text\r\n                                            font_size\r\n                                            color {\r\n                                                r\r\n                                                g\r\n                                                b\r\n                                                a\r\n                                            }\r\n                                        }\r\n                                        variant_change_text {\r\n                                            text\r\n                                            font_size\r\n                                            color {\r\n                                                r\r\n                                                g\r\n                                                b\r\n                                                a\r\n                                            }\r\n                                        }\r\n                                        background {\r\n                                            r\r\n                                            g\r\n                                            b\r\n                                            a\r\n                                        }\r\n                                        outline {\r\n                                            r\r\n                                            g\r\n                                            b\r\n                                            a\r\n                                        }\r\n                                    }\r\n                                }\r\n                                # inventory_quantity {\r\n                                #   active\r\n                                #   text\r\n                                # }\r\n                            }\r\n                        }\r\n                        # goal\r\n                        # discount {\r\n                        # \ttype\r\n                        # \tbefore\r\n                        # \tafter\r\n                        # \treward\r\n                        # }\r\n                        # free_shipping {\r\n                        # \tbefore\r\n                        # \tafter\r\n                        # \tmanual\r\n                        # }\r\n                    }\r\n                    one_check_up_sell {\r\n                        text\r\n                        is_ticked_by_default\r\n                        include_in_atu\r\n                        highlight {\r\n                            r\r\n                            g\r\n                            b\r\n                            a\r\n                        }\r\n                        product_type\r\n                        truncate\r\n                        truncate_length\r\n                        product {\r\n                            id\r\n                            image\r\n                            price\r\n                            title\r\n                            handle\r\n                            variant_id\r\n                            body_html\r\n                            images {\r\n                                id\r\n                                src\r\n                            }\r\n                            options {\r\n                                id\r\n                                name\r\n                                position\r\n                                values\r\n                            }\r\n                            variants {\r\n                                id\r\n                                title\r\n                                price\r\n                                image\r\n                            }\r\n                        }\r\n                    }\r\n                    multi_one_check_upsell {\r\n                        variant\r\n                        align\r\n                        border\r\n                        border_color {\r\n                            r\r\n                            g\r\n                            b\r\n                            a\r\n                        }\r\n                        highlight {\r\n                            r\r\n                            g\r\n                            b\r\n                            a\r\n                        }\r\n                        switch_on {\r\n                            r\r\n                            g\r\n                            b\r\n                            a\r\n                        }\r\n                        switch_off {\r\n                            r\r\n                            g\r\n                            b\r\n                            a\r\n                        }\r\n                        products {\r\n                            text\r\n                            is_ticked_by_default\r\n                            include_in_atu\r\n                            product_type\r\n                            truncate\r\n                            truncate_length\r\n                            product {\r\n                                id\r\n                                image\r\n                                price\r\n                                title\r\n                                handle\r\n                                body_html\r\n                                images {\r\n                                    id\r\n                                    src\r\n                                }\r\n                                options {\r\n                                    id\r\n                                    name\r\n                                    product_id\r\n                                    position\r\n                                    values\r\n                                }\r\n                                variant_id\r\n                                variants {\r\n                                    id\r\n                                    title\r\n                                    price\r\n                                    image\r\n                                }\r\n                            }\r\n                        }\r\n                    }\r\n                    modules {\r\n                        order\r\n                        random_text {\r\n                            text\r\n                            active\r\n                        }\r\n                        order_note {\r\n                            text\r\n                            active\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n`;\r\n\r\nexport default LIST_SHOP_CAMPAIGNS;\r\n","import gql from 'graphql-tag';\r\n\r\nconst GET_SHOP_SETTINGS = gql`\r\n    query GetShopSettings($userId: ID!) {\r\n        shop(id: $userId) {\r\n            id\r\n            userId\r\n            active\r\n            invitation {\r\n                type\r\n                value\r\n            }\r\n            static_file_eligible\r\n            static_file_status\r\n            static_file_mode\r\n            review_clicked\r\n            welcome_video_watched\r\n            first_cart_turn_on\r\n            first_new_campaign_click\r\n            first_new_campaign\r\n            scope\r\n            transactions\r\n            auto_upgrade\r\n            current_plan\r\n            multi_currency_checkout_alerted\r\n            draft_checkout_alerted\r\n            custom_links {\r\n                selector\r\n                action\r\n            }\r\n            custom_atcs {\r\n                button\r\n                id {\r\n                    type\r\n                    name\r\n                    selector\r\n                }\r\n            }\r\n            installedAt\r\n            version\r\n            money_format\r\n            currency\r\n            campaigns {\r\n                id\r\n            }\r\n            settings {\r\n                multiCurrencyMode\r\n                default_language\r\n                active\r\n                open_cart\r\n                rtl\r\n                curved\r\n                empty_cart\r\n                custom_css\r\n                theme {\r\n                    textColor {\r\n                        r\r\n                        g\r\n                        b\r\n                        a\r\n                    }\r\n                    buttonColor {\r\n                        r\r\n                        g\r\n                        b\r\n                        a\r\n                    }\r\n                    primary {\r\n                        r\r\n                        g\r\n                        b\r\n                        a\r\n                    }\r\n                    secondary {\r\n                        r\r\n                        g\r\n                        b\r\n                        a\r\n                    }\r\n                    background {\r\n                        r\r\n                        g\r\n                        b\r\n                        a\r\n                    }\r\n                }\r\n                font {\r\n                    color {\r\n                        r\r\n                        g\r\n                        b\r\n                        a\r\n                    }\r\n                    size\r\n                    family\r\n                    custom\r\n                }\r\n                header {\r\n                    title {\r\n                        text\r\n                        font_size\r\n                        font_weight\r\n                        color {\r\n                            r\r\n                            g\r\n                            b\r\n                            a\r\n                        }\r\n                    }\r\n                    background {\r\n                        r\r\n                        g\r\n                        b\r\n                        a\r\n                    }\r\n                }\r\n                product {\r\n                    title {\r\n                        text\r\n                        font_size\r\n                        font_weight\r\n                        color {\r\n                            r\r\n                            g\r\n                            b\r\n                            a\r\n                        }\r\n                    }\r\n                    price {\r\n                        text\r\n                        font_size\r\n                        font_weight\r\n                        color {\r\n                            r\r\n                            g\r\n                            b\r\n                            a\r\n                        }\r\n                    }\r\n                    image_size\r\n                    grow\r\n                    sold_out\r\n                }\r\n                product_details {\r\n                    atcButton {\r\n                        text\r\n                        font_size\r\n                        color {\r\n                            r\r\n                            g\r\n                            b\r\n                            a\r\n                        }\r\n                    }\r\n                    atcButton_background {\r\n                        r\r\n                        g\r\n                        b\r\n                        a\r\n                    }\r\n                    atcButton_hoverBackground {\r\n                        r\r\n                        g\r\n                        b\r\n                        a\r\n                    }\r\n                    readMore {\r\n                        text\r\n                        font_size\r\n                        color {\r\n                            r\r\n                            g\r\n                            b\r\n                            a\r\n                        }\r\n                    }\r\n                    truncate\r\n                    truncate_length\r\n                    external\r\n                }\r\n                show_coupon\r\n                show_coupon_alert_text\r\n                is_checkout_condition_active\r\n                checkout_condition_text\r\n                active_continue_shopping_button\r\n                active_continue_shopping_underlined\r\n                continue_shopping_button {\r\n                    text\r\n                    font_size\r\n                    font_weight\r\n                    color {\r\n                        r\r\n                        g\r\n                        b\r\n                        a\r\n                    }\r\n                }\r\n                checkout_condition_color {\r\n                    r\r\n                    g\r\n                    b\r\n                    a\r\n                }\r\n                modules {\r\n                    order\r\n                    random_text {\r\n                        text\r\n                        active\r\n                    }\r\n                    order_note {\r\n                        text\r\n                        active\r\n                    }\r\n                    checkout_button {\r\n                        checkout_as_link\r\n                        show_subtotal\r\n                        fix_checkout_container\r\n                        active_continue_shopping_button\r\n                        active_continue_shopping_underlined\r\n                        continue_shopping_button {\r\n                            text\r\n                            font_size\r\n                            color {\r\n                                r\r\n                                g\r\n                                b\r\n                                a\r\n                            }\r\n                        }\r\n                        button_text {\r\n                            text\r\n                            font_size\r\n                            font_weight\r\n                            color {\r\n                                r\r\n                                g\r\n                                b\r\n                                a\r\n                            }\r\n                        }\r\n                        button_text_loading {\r\n                            text\r\n                            color {\r\n                                r\r\n                                g\r\n                                b\r\n                                a\r\n                            }\r\n                        }\r\n                        background {\r\n                            r\r\n                            g\r\n                            b\r\n                            a\r\n                        }\r\n                        hoverBackground {\r\n                            r\r\n                            g\r\n                            b\r\n                            a\r\n                        }\r\n                        coupon {\r\n                            background {\r\n                                r\r\n                                g\r\n                                b\r\n                                a\r\n                            }\r\n                            hoverBackground {\r\n                                r\r\n                                g\r\n                                b\r\n                                a\r\n                            }\r\n                            active_background {\r\n                                r\r\n                                g\r\n                                b\r\n                                a\r\n                            }\r\n                            active_color {\r\n                                r\r\n                                g\r\n                                b\r\n                                a\r\n                            }\r\n                        }\r\n                        coupon_alert_text {\r\n                            text\r\n                            font_size\r\n                            color {\r\n                                r\r\n                                g\r\n                                b\r\n                                a\r\n                            }\r\n                        }\r\n                        use_coupon_code {\r\n                            text\r\n                            font_size\r\n                            color {\r\n                                r\r\n                                g\r\n                                b\r\n                                a\r\n                            }\r\n                        }\r\n                        enter_coupon_code {\r\n                            text\r\n                            font_size\r\n                            color {\r\n                                r\r\n                                g\r\n                                b\r\n                                a\r\n                            }\r\n                        }\r\n                        apply_coupon_code {\r\n                            text\r\n                            font_size\r\n                            color {\r\n                                r\r\n                                g\r\n                                b\r\n                                a\r\n                            }\r\n                        }\r\n                        edit_coupon_code {\r\n                            text\r\n                            font_size\r\n                        }\r\n                        close_coupon_code {\r\n                            text\r\n                            font_size\r\n                        }\r\n                        subtotal {\r\n                            text\r\n                            font_size\r\n                            font_weight\r\n                            color {\r\n                                r\r\n                                g\r\n                                b\r\n                                a\r\n                            }\r\n                        }\r\n                        savings {\r\n                            text\r\n                            font_size\r\n                            font_weight\r\n                            color {\r\n                                r\r\n                                g\r\n                                b\r\n                                a\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n                cod_settings {\r\n                    is_active\r\n                    is_form_in_cart\r\n                    error_message\r\n                    checkout_mode\r\n                    checkout_button {\r\n                        text\r\n                        font_size\r\n                        color {\r\n                            r\r\n                            g\r\n                            b\r\n                            a\r\n                        }\r\n                        background {\r\n                            r\r\n                            g\r\n                            b\r\n                            a\r\n                        }\r\n                        hoverBackground {\r\n                            r\r\n                            g\r\n                            b\r\n                            a\r\n                        }\r\n                    }\r\n                    confirm_button {\r\n                        text\r\n                        font_size\r\n                        color {\r\n                            r\r\n                            g\r\n                            b\r\n                            a\r\n                        }\r\n                        background {\r\n                            r\r\n                            g\r\n                            b\r\n                            a\r\n                        }\r\n                        hoverBackground {\r\n                            r\r\n                            g\r\n                            b\r\n                            a\r\n                        }\r\n                    }\r\n                    loading_button {\r\n                        text\r\n                        font_size\r\n                        color {\r\n                            r\r\n                            g\r\n                            b\r\n                            a\r\n                        }\r\n                        background {\r\n                            r\r\n                            g\r\n                            b\r\n                            a\r\n                        }\r\n                        hoverBackground {\r\n                            r\r\n                            g\r\n                            b\r\n                            a\r\n                        }\r\n                    }\r\n                    form {\r\n                        label\r\n                        placeholder\r\n                        isRequired\r\n                        type\r\n                        options\r\n                    }\r\n                }\r\n                sticky_cart {\r\n                    isActive\r\n                    btn_style\r\n                    btn_text\r\n                    btn_text_unavailable\r\n                    btn_text_variant_active\r\n                    btn_color {\r\n                        r\r\n                        g\r\n                        b\r\n                        a\r\n                    }\r\n                    txt_color {\r\n                        r\r\n                        g\r\n                        b\r\n                        a\r\n                    }\r\n                    background_color {\r\n                        r\r\n                        g\r\n                        b\r\n                        a\r\n                    }\r\n                    atc_action\r\n                    desktop_active\r\n                    desktop_show_quantity\r\n                    desktop_show_variants\r\n                    desktop_product_preview\r\n                    desktop_show_product_name\r\n                    desktop_show_compared_price\r\n                    desktop_visibility\r\n                    desktop_location\r\n                    desktop_quantity {\r\n                        text\r\n                    }\r\n                    mobile_quantity {\r\n                        text\r\n                    }\r\n                    cart_name {\r\n                        text\r\n                    }\r\n                    mobile_active\r\n                    mobile_show_variants\r\n                    mobile_show_quantity\r\n                    mobile_show_compared_price\r\n                    mobile_visibility\r\n                    mobile_location\r\n                    mobile_show_title\r\n                    mobile_show_price\r\n                    mobile_atc_height {\r\n                        font_size\r\n                        text\r\n                    }\r\n                    show_btn_atc_txt_variant_active\r\n                    btn_atc_txt_variant_active\r\n                }\r\n                badges {\r\n                    isActive\r\n                    position\r\n                    value\r\n                }\r\n                auto_discount {\r\n                    text {\r\n                        text\r\n                        font_size\r\n                        font_weight\r\n                        color {\r\n                            r\r\n                            g\r\n                            b\r\n                            a\r\n                        }\r\n                    }\r\n                    background {\r\n                        r\r\n                        g\r\n                        b\r\n                        a\r\n                    }\r\n                    border {\r\n                        r\r\n                        g\r\n                        b\r\n                        a\r\n                    }\r\n                }\r\n                subscription {\r\n                    isActive\r\n                    text {\r\n                        text\r\n                        font_size\r\n                        font_weight\r\n                        color {\r\n                            r\r\n                            g\r\n                            b\r\n                            a\r\n                        }\r\n                    }\r\n                    background {\r\n                        r\r\n                        g\r\n                        b\r\n                        a\r\n                    }\r\n                    border {\r\n                        r\r\n                        g\r\n                        b\r\n                        a\r\n                    }\r\n                    upgradingText {\r\n                        text\r\n                        font_size\r\n                        font_weight\r\n                        color {\r\n                            r\r\n                            g\r\n                            b\r\n                            a\r\n                        }\r\n                    }\r\n                    downgradingText {\r\n                        text\r\n                        font_size\r\n                        font_weight\r\n                        color {\r\n                            r\r\n                            g\r\n                            b\r\n                            a\r\n                        }\r\n                    }\r\n                    loadingBackground {\r\n                        r\r\n                        g\r\n                        b\r\n                        a\r\n                    }\r\n                    loadingBorder {\r\n                        r\r\n                        g\r\n                        b\r\n                        a\r\n                    }\r\n                    subscribedText {\r\n                        text\r\n                        font_size\r\n                        font_weight\r\n                        color {\r\n                            r\r\n                            g\r\n                            b\r\n                            a\r\n                        }\r\n                    }\r\n                    subscribedBackground {\r\n                        r\r\n                        g\r\n                        b\r\n                        a\r\n                    }\r\n                    subscribedBorder {\r\n                        r\r\n                        g\r\n                        b\r\n                        a\r\n                    }\r\n                }\r\n                scary {\r\n                    isActive\r\n                    text {\r\n                        text\r\n                        font_size\r\n                        color {\r\n                            r\r\n                            g\r\n                            b\r\n                            a\r\n                        }\r\n                    }\r\n                    style\r\n                    background {\r\n                        r\r\n                        g\r\n                        b\r\n                        a\r\n                    }\r\n                    border {\r\n                        r\r\n                        g\r\n                        b\r\n                        a\r\n                    }\r\n                    isDaysActive\r\n                    isHoursActive\r\n                    isMinutesActive\r\n                    isSecondsActive\r\n                    days\r\n                    hours\r\n                    minutes\r\n                    seconds\r\n                    endAction\r\n                    placement\r\n                    textAlignement\r\n                }\r\n                afterPay {\r\n                    isActive\r\n                    splits\r\n                    image\r\n                    isExternal\r\n                    text {\r\n                        text\r\n                        font_size\r\n                        font_weight\r\n                        color {\r\n                            r\r\n                            g\r\n                            b\r\n                            a\r\n                        }\r\n                    }\r\n                }\r\n                announcement {\r\n                    isActive\r\n                    text {\r\n                        text\r\n                        font_size\r\n                        color {\r\n                            r\r\n                            g\r\n                            b\r\n                            a\r\n                        }\r\n                    }\r\n                    style\r\n                    background {\r\n                        r\r\n                        g\r\n                        b\r\n                        a\r\n                    }\r\n                    border {\r\n                        r\r\n                        g\r\n                        b\r\n                        a\r\n                    }\r\n                    position\r\n                    textAlignement\r\n                }\r\n                count_compare_at\r\n            }\r\n            chargeCreated\r\n            chargeConfirmationUrl\r\n            chargeAccepted\r\n            snippetCreated\r\n            enabled_presentment_currencies\r\n        }\r\n    }\r\n`;\r\n\r\nexport default GET_SHOP_SETTINGS;\r\n","\r\nimport mixpanel from 'mixpanel-browser';\r\n\r\n\r\nexport const trackMixPanelEvent = (eventKey, shopName, properties = {}) => {\r\n    if(process.env.REACT_APP_MIXPANEL_APIKEY){\r\n        mixpanel.init(process.env.REACT_APP_MIXPANEL_APIKEY, {debug: false  }); \r\n        // eventKey = process.env.REACT_APP_MIXPANEL_TEST ? `TEST - ${eventKey}` : eventKey\r\n        eventKey = eventKey\r\n        mixpanel.track(eventKey, {\r\n            unique_id:shopName,\r\n            distinct_id: shopName,\r\n            ...properties\r\n        });\r\n      }\r\n}","import React, { useContext, useEffect, useState, useCallback } from 'react';\r\nimport { Page, ItemsList, Icon, Spinner, Button } from 'components';\r\nimport UserContext from 'context/UserContext';\r\nimport PreviewContext from 'context/PreviewContext';\r\nimport useReactRouter from 'use-react-router';\r\nimport { useMutation } from '@apollo/react-hooks';\r\nimport { faPlus } from '@fortawesome/fontawesome-pro-solid';\r\nimport _ from 'lodash';\r\nimport { Loading, Toast, Modal } from '@shopify/app-bridge-react';\r\nimport { SWITCH_CAMPAIGN_STATUS, REMOVE_CAMPAIGN_MUTATION } from 'lib/mutations';\r\nimport { LIST_SHOP_CAMPAIGNS } from 'Queries';\r\nimport { BOX_CHECK_ICON, CAMPAIGN_TARGETS, BREAK_POINTS } from 'lib/globals';\r\nimport classNames from 'lib/classNames';\r\nimport ShopContext from 'context/ShopContext';\r\nimport API from '@aws-amplify/api';\r\nimport { Popover } from 'react-tiny-popover';\r\nimport { useQuery } from '@apollo/react-hooks';\r\nimport { trackMixPanelEvent } from 'lib/mixpanel';\r\n\r\nconst List = ({ setIsOpen }) => {\r\n    const limitCampaigns = 35;\r\n    const [, updateState] = useState();\r\n    const [analytics, setAnalytics] = useState([]);\r\n    const [popovers, setPopOvers] = useState({});\r\n    const showPopOver = (id) => setPopOvers(Object.assign({}, popovers, { [id]: true }));\r\n    const hidePopOver = (id) => setPopOvers(Object.assign({}, popovers, { [id]: false }));\r\n    const forceUpdate = useCallback(() => updateState({}), []);\r\n    const user = useContext(UserContext);\r\n    const { collapsed, previewCampaign, preview_active_campaign } = useContext(PreviewContext);\r\n    const shopContext = useContext(ShopContext);\r\n    const {\r\n        AppLocalStorage,\r\n        state: {\r\n            id: shopName,\r\n            settings: { multiCurrencyMode },\r\n            money_format\r\n        }\r\n    } = shopContext;\r\n    const killDraftBreakPoint = BREAK_POINTS['kill_draft'](shopContext);\r\n\r\n    const { history, location } = useReactRouter();\r\n    const [showConfirmDelete, setShowConfirmDelete] = useState(false);\r\n    const formatWithDelimiters = (number, precision = 2, thousands = ',', decimal = '.') => {\r\n        if (isNaN(number) || number == null) {\r\n            return 0;\r\n        }\r\n\r\n        number = (number / 100.0).toFixed(precision);\r\n\r\n        var parts = number.split('.'),\r\n            dollars = parts[0].replace(/(\\d)(?=(\\d\\d\\d)+(?!\\d))/g, '$1' + thousands),\r\n            cents = parts[1] ? decimal + parts[1] : '';\r\n\r\n        return dollars + cents;\r\n    };\r\n    const formatMoney = (n) => {\r\n        n *= 100;\r\n        return money_format\r\n            .replace(/{{\\s*?amount\\s*?}}/g, formatWithDelimiters(n, 2))\r\n            .replace(/{{\\s*?amount_no_decimals\\s*?}}/g, formatWithDelimiters(n, 0))\r\n            .replace(\r\n                /{{\\s*?amount_with_comma_separator\\s*?}}/g,\r\n                formatWithDelimiters(n, 2, '.', ',')\r\n            )\r\n            .replace(\r\n                /{{\\s*?amount_no_decimals_with_comma_separator\\s*?}}/g,\r\n                formatWithDelimiters(n, 0, '.', ',')\r\n            )\r\n            .replace(\r\n                /{{\\s*?amount_with_apostrophe_separator\\s*? }}/g,\r\n                formatWithDelimiters(n, 2, \"'\", '.')\r\n            );\r\n    };\r\n    const numberFormat = new Intl.NumberFormat('en-US', {\r\n        maximumSignificantDigits: 3\r\n    }).format;\r\n    let {\r\n        data: ListCampaignsData,\r\n        loading: queryLoading,\r\n        error: queryError,\r\n        fetchMore\r\n    } = useQuery(LIST_SHOP_CAMPAIGNS, {\r\n        variables: {\r\n            userId: user.attributes.sub\r\n        },\r\n        fetchPolicy: ['tentsile.myshopify.com', 'bobaboxes.myshopify.com'].includes(shopName) ? 'no-cache' : 'cache-and-network'\r\n    });\r\n    let [\r\n        SetCampaignActiveMutation,\r\n        {\r\n            loading: SetCampaignActiveMutation_loading,\r\n            error: SetCampaignActiveMutation_error,\r\n            data: SetCampaignActiveMutation_data\r\n        }\r\n    ] = useMutation(SWITCH_CAMPAIGN_STATUS);\r\n    let [\r\n        RemoveCampaignMutation,\r\n        {\r\n            loading: RemoveCampaignMutation_loading,\r\n            error: RemoveCampaignMutation_error,\r\n            data: RemoveCampaignMutation_data\r\n        }\r\n    ] = useMutation(REMOVE_CAMPAIGN_MUTATION);\r\n    const setCampaignActive = (id, active) => {\r\n        SetCampaignActiveMutation({\r\n            variables: { id, input: { active } },\r\n            update: (cache, { data: { updateCampaign } }) => {\r\n                cache.writeQuery({\r\n                    query: LIST_SHOP_CAMPAIGNS,\r\n                    variables: {\r\n                        userId: user.attributes.sub\r\n                    },\r\n                    data: {\r\n                        campaigns: {\r\n                            list: ListCampaignsData.campaigns.list.map((campaign) => {\r\n                                if (campaign.id === id) {\r\n                                    return updateCampaign;\r\n                                }\r\n                                return campaign;\r\n                            }),\r\n                            nextToken: ListCampaignsData.campaigns.nextToken,\r\n                            __typename: ListCampaignsData.campaigns.__typename\r\n                        }\r\n                    }\r\n                });\r\n            }\r\n        });\r\n    };\r\n    const confirmDelete = (id) => {\r\n        setShowConfirmDelete(id); //store campaign id\r\n    };\r\n\r\n    const isBeingPreviewed = (campaign) => campaign == preview_active_campaign && !collapsed;\r\n\r\n    const edit = (id) => history.push(`/campaigns/${id}` + location.search);\r\n    const duplicate = (id) => {\r\n        if (ListCampaignsData?.campaigns?.list.length >= limitCampaigns) {\r\n            console.log('limited');\r\n        } else {\r\n            history.push(`/campaigns/create/${id}` + location.search);\r\n        }\r\n    };\r\n\r\n    const handleNewCampaign = () => {\r\n        if (!AppLocalStorage.getItem('first_new_campaign_click')) {\r\n            AppLocalStorage.setItem('first_new_campaign_click', true);\r\n            trackMixPanelEvent('First new campaign click', shopName);\r\n        }\r\n        if (ListCampaignsData?.campaigns?.list.length >= limitCampaigns) {\r\n            console.log('limited');\r\n        } else {\r\n            history.push('campaigns/create' + location.search);\r\n        }\r\n    };\r\n\r\n    useEffect(() => {\r\n        if (SetCampaignActiveMutation_data) {\r\n            let index = _.findIndex(ListCampaignsData?.campaigns?.list, {\r\n                id: SetCampaignActiveMutation_data.updateCampaign.id\r\n            });\r\n            ListCampaignsData.campaigns.list[index] = SetCampaignActiveMutation_data.updateCampaign;\r\n            forceUpdate();\r\n        }\r\n    }, [SetCampaignActiveMutation_data]);\r\n\r\n    useEffect(() => {\r\n        if (RemoveCampaignMutation_data) {\r\n            ListCampaignsData.campaigns.list = ListCampaignsData?.campaigns?.list.filter(\r\n                ({ id }) => id !== RemoveCampaignMutation_data.removeCampaign.id\r\n            );\r\n            forceUpdate();\r\n        }\r\n    }, [RemoveCampaignMutation_data]);\r\n\r\n    const fetchStatistics = async (campaigns) => {\r\n        const campaigns_list = campaigns\r\n            .filter(({ settings }) => settings?.type !== 'one_check_up_sell')\r\n            .map(({ id }) => id);\r\n        const one_tick_campaigns = campaigns\r\n            .filter(({ settings }) => settings?.type === 'one_check_up_sell')\r\n            .map(({ id, settings }) => {\r\n                const isOld_OCU = !settings.multi_one_check_upsell;\r\n                if (isOld_OCU)\r\n                    return [\r\n                        id,\r\n                        settings?.one_check_up_sell?.product?.id,\r\n                        settings?.one_check_up_sell?.product?.variants[0].price\r\n                    ];\r\n                return settings.multi_one_check_upsell.products\r\n                    .filter(({ product }) => Boolean(product?.id))\r\n                    .map(({ product }) => [id, product?.id, product?.variants[0].price]);\r\n            })\r\n            .reduce((acc, cur) => {\r\n                if (Array.isArray(cur[0])) {\r\n                    cur.forEach((v) => acc.push(v));\r\n                } else {\r\n                    acc.push(cur);\r\n                }\r\n                return acc;\r\n            }, []);\r\n        const body = {\r\n            campaigns: campaigns_list,\r\n            one_tick_campaigns\r\n        };\r\n        const data = await API.post('API_GATEWAY_NEW', '/analytics/campaigns', {\r\n            body\r\n        });\r\n        const processedData = Object.assign(\r\n            {},\r\n            ...Object.entries(data).map(([id, states]) => {\r\n                if (Array.isArray(states)) {\r\n                    const { UpsellsGenerated, upsellsTotalAmount } = states.reduce(\r\n                        (acc, cur) => {\r\n                            acc.UpsellsGenerated += cur.UpsellsGenerated;\r\n                            acc.upsellsTotalAmount += cur.upsellsTotalAmount;\r\n                            return acc;\r\n                        },\r\n                        { UpsellsGenerated: 0, upsellsTotalAmount: 0 }\r\n                    );\r\n                    return { [id]: { UpsellsGenerated, upsellsTotalAmount } };\r\n                }\r\n                return { [id]: states };\r\n            })\r\n        );\r\n        setAnalytics(processedData);\r\n    };\r\n    const callLoadMore = () => {\r\n        fetchMore({\r\n            variables: {\r\n                userId: user.attributes.sub,\r\n                nextToken: ListCampaignsData?.campaigns?.nextToken\r\n            },\r\n            updateQuery(previousResult, { fetchMoreResult }) {\r\n                if (!fetchMoreResult) return previousResult;\r\n                return {\r\n                    campaigns: {\r\n                        __typename: fetchMoreResult.campaigns.__typename,\r\n                        nextToken: fetchMoreResult.campaigns.nextToken,\r\n                        list: [...previousResult.campaigns.list, ...fetchMoreResult.campaigns.list]\r\n                    }\r\n                };\r\n            }\r\n        });\r\n    };\r\n    useEffect(() => {\r\n        if (ListCampaignsData) {\r\n            fetchStatistics(ListCampaignsData.campaigns.list);\r\n        }\r\n    }, [ListCampaignsData]);\r\n\r\n    if (queryError || SetCampaignActiveMutation_error || RemoveCampaignMutation_error) {\r\n        throw new Error(\r\n            JSON.stringify({\r\n                queryError,\r\n                SetCampaignActiveMutation_error,\r\n                RemoveCampaignMutation_error\r\n            })\r\n        );\r\n    }\r\n\r\n    return (\r\n        <>\r\n            {(SetCampaignActiveMutation_loading || RemoveCampaignMutation_loading) && <Loading />}\r\n            {SetCampaignActiveMutation_data && (\r\n                <Toast\r\n                    content={`Campaign has been updated`}\r\n                    duration={3000}\r\n                    onDismiss={() => {\r\n                        SetCampaignActiveMutation_data = null;\r\n                    }}\r\n                />\r\n            )}\r\n            {RemoveCampaignMutation_data && (\r\n                <Toast\r\n                    content={`Campaign has been removed`}\r\n                    duration={3000}\r\n                    onDismiss={() => {\r\n                        RemoveCampaignMutation_data = null;\r\n                    }}\r\n                />\r\n            )}\r\n            <Page\r\n                header={{\r\n                    title: 'Campaign Dashboard',\r\n                    actions: [\r\n                        {\r\n                            type: 'link-info',\r\n                            text: 'New Campaign',\r\n                            icon: faPlus,\r\n                            onClick: handleNewCampaign\r\n                        }\r\n                    ]\r\n                }}\r\n                loading={{\r\n                    text: 'Fetching campaigns',\r\n                    status: queryLoading && !ListCampaignsData?.campaigns?.list.length\r\n                }}\r\n            >\r\n                <ItemsList\r\n                    header={[\r\n                        {\r\n                            title: 'Active',\r\n                            onChange: ({ id }, active) => setCampaignActive(id, active)\r\n                        },\r\n                        {\r\n                            title: 'Campaign',\r\n                            value: (campaign) => {\r\n                                const {\r\n                                    name,\r\n                                    settings: { type, add_to_unlock, one_check_up_sell },\r\n                                    target\r\n                                } = campaign;\r\n                                const isGlobalBundles =\r\n                                    type === 'bundles' && target.type === 'all_products';\r\n                                const isMonsterFreeShippingAddToUnlock =\r\n                                    type === 'add_to_unlock' &&\r\n                                    add_to_unlock?.goals?.length === 1 &&\r\n                                    add_to_unlock?.goals[0].reward_type === 'free_shipping' &&\r\n                                    add_to_unlock?.goals[0].free_shipping.manual === false;\r\n                                const isVirtualOneCheck =\r\n                                    type === 'one_check_up_sell' &&\r\n                                    one_check_up_sell?.product_type === 'hidden';\r\n\r\n                                const isNotDelivering =\r\n                                    multiCurrencyMode && (isGlobalBundles || isVirtualOneCheck);\r\n\r\n                                return (\r\n                                    <div className={classNames('px-2')}>\r\n                                        <h2\r\n                                            className={classNames(\r\n                                                'font-bold text-gray-700 text-sm'\r\n                                            )}\r\n                                        >\r\n                                            {campaign.name}\r\n                                        </h2>\r\n                                        {isNotDelivering && (\r\n                                            <div className={classNames('mt-1 text-gray text-xs')}>\r\n                                                <h4\r\n                                                    className={classNames(\r\n                                                        'font-semibold flex items-center text-orange-500 leading-none'\r\n                                                    )}\r\n                                                >\r\n                                                    <Icon\r\n                                                        icon=\"exclamation-square\"\r\n                                                        className=\"mr-1\"\r\n                                                        size=\"lg\"\r\n                                                    />\r\n                                                    Not delivering\r\n                                                </h4>\r\n                                                <p className={classNames('text-gray-600')}>\r\n                                                    due to 16th May checkout upgrade. Please edit\r\n                                                    this campaign to fix this.\r\n                                                    <a\r\n                                                        className={classNames(\r\n                                                            'ml-2 underline cursor-pointer font-semibold'\r\n                                                        )}\r\n                                                        href=\"https://monsterapps.crisp.help/en/article/draft-checkout-removed-16th-may-update-de3y6j/\"\r\n                                                        target=\"_blank\" rel=\"noreferrer\"\r\n                                                    >\r\n                                                        Learn More\r\n                                                    </a>\r\n                                                </p>\r\n                                            </div>\r\n                                        )}\r\n                                        {isMonsterFreeShippingAddToUnlock && (\r\n                                            <div className={classNames('mt-1 text-gray text-xs')}>\r\n                                                <h4\r\n                                                    className={classNames(\r\n                                                        'font-semibold flex items-center text-orange-500 leading-none'\r\n                                                    )}\r\n                                                >\r\n                                                    <Icon\r\n                                                        icon=\"exclamation-square\"\r\n                                                        className=\"mr-1\"\r\n                                                        size=\"lg\"\r\n                                                    />\r\n                                                    Out of date\r\n                                                </h4>\r\n                                                <p className={classNames('text-gray-600')}>\r\n                                                    This add to unlock version is out of date.\r\n                                                    Please make new campaign.\r\n                                                    {/* <a\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={classNames(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"ml-2 underline cursor-pointer font-semibold\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\thref=\"https://monsterapps.crisp.help/en/article/draft-checkout-removed-16th-may-update-de3y6j/\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttarget=\"_blank\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tLearn More\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</a> */}\r\n                                                </p>\r\n                                            </div>\r\n                                        )}\r\n                                    </div>\r\n                                );\r\n                            }\r\n                        },\r\n                        // { title: 'Name' },\r\n                        {\r\n                            title: 'Type',\r\n                            value: (campaign) => {\r\n                                switch (campaign.settings.type) {\r\n                                    case 'bundles':\r\n                                        return (\r\n                                            <div className={classNames('flex items-center')}>\r\n                                                <span className={classNames('mr-1 primary-icon')}>\r\n                                                    <Icon icon=\"bars\" />\r\n                                                </span>\r\n                                                <span className={classNames('hidden-sm')}>\r\n                                                    Buy More Save More\r\n                                                </span>\r\n                                            </div>\r\n                                        );\r\n                                    case 'add_to_unlock':\r\n                                        return (\r\n                                            <div className={classNames('flex items-center')}>\r\n                                                <span className={classNames('mr-1 primary-icon')}>\r\n                                                    <Icon icon=\"unlock\" />\r\n                                                </span>\r\n                                                <span className={classNames('hidden-sm')}>\r\n                                                    Add To Unlock\r\n                                                </span>\r\n                                            </div>\r\n                                        );\r\n                                    case 'one_check_up_sell':\r\n                                        return (\r\n                                            <div className={classNames('flex items-center')}>\r\n                                                <span className={classNames('mr-1 primary-icon')}>\r\n                                                    <Icon icon={BOX_CHECK_ICON} />\r\n                                                </span>\r\n                                                <span className={classNames('hidden-sm')}>\r\n                                                    One Check Upsell\r\n                                                </span>\r\n                                            </div>\r\n                                        );\r\n                                    default:\r\n                                        return null;\r\n                                }\r\n                            }\r\n                        },\r\n                        {\r\n                            title: 'Trigger',\r\n                            value: (campaign) =>\r\n                                CAMPAIGN_TARGETS.find(({ value }) => value === campaign.target.type)\r\n                                    .label\r\n                        },\r\n                        // { title: \"Created At\", value: \"createdAt\" },\r\n                        // { title: \"Updated At\", value: \"updatedAt\" },\r\n                        {\r\n                            title: 'Added Products',\r\n                            value: (campaign) =>\r\n                                analytics ? (\r\n                                    numberFormat(analytics[campaign.id]?.UpsellsGenerated || 0)\r\n                                ) : (\r\n                                    <Spinner size={3} />\r\n                                )\r\n                        },\r\n                        {\r\n                            title: 'Campaign Revenue',\r\n                            value: (campaign) => {\r\n                                const updateDay = new Date('2024-04-20')\r\n                                const isNewCampaign = new Date(parseInt(campaign.createdAt)) >= updateDay;\r\n                                if (!analytics) return <Spinner size={3} />;\r\n                                if (!analytics[campaign.id])\r\n                                    return (\r\n                                        <span\r\n                                            dangerouslySetInnerHTML={{\r\n                                                __html: formatMoney(0)\r\n                                            }}\r\n                                        />\r\n                                    );\r\n                                const data = analytics[campaign.id];\r\n                                const revenue = data?.upsellsTotalAmount || 0;\r\n\r\n                                if (campaign.settings.type !== \"add_to_unlock\")\r\n                                return (\r\n                                    <span\r\n                                        dangerouslySetInnerHTML={{\r\n                                            __html: formatMoney(revenue)\r\n                                        }}\r\n                                    />\r\n                                );\r\n\r\n                                const fbt_sub_total = data?.fbt?.subtotal_sum || 0;\r\n                                const fbt_upsells_generated = data?.fbt?.UpsellsGenerated || 0;\r\n                                return (\r\n                                  <Popover\r\n                                    isOpen={isNewCampaign && (popovers[campaign.id] || false)}\r\n                                    // positions={[\"center\", \"center\"]}\r\n                                    padding={10}\r\n                                    reposition={false}\r\n                                    onClickOutside={() => hidePopOver(campaign.id)}\r\n                                    content={() => (\r\n                                      <div className=\"campaigns-popover\">\r\n                                        <h2>Frequent Bought Module</h2>\r\n                                        <div className=\"flex-container\">\r\n                                          <div>\r\n                                            <h4>Products Added</h4>\r\n                                            <p>{fbt_upsells_generated}</p>\r\n                                          </div>\r\n                                          <div>\r\n                                            <h4>Revenue Added</h4>\r\n                                            <p\r\n                                              dangerouslySetInnerHTML={{\r\n                                                __html: formatMoney(fbt_sub_total)\r\n                                              }}\r\n                                            />\r\n                                          </div>\r\n                                        </div>\r\n                                      </div>\r\n                                    )}\r\n                                  >\r\n                                    <span\r\n                                      className=\"campaigns-popover-trigger\"\r\n                                      onMouseEnter={() => showPopOver(campaign.id)}\r\n                                      onMouseLeave={() => hidePopOver(campaign.id)}\r\n                                    >\r\n                                      <span\r\n                                        dangerouslySetInnerHTML={{\r\n                                          __html: formatMoney(revenue)\r\n                                        }}\r\n                                      />{\" \"}\r\n                                      <Icon\r\n                                        icon=\"info-circle\"\r\n                                        className={`campaigns-popover-info ${isNewCampaign ? '' : 'hidden'}`}\r\n                                        size=\"sm\"\r\n                                      />\r\n                                    </span>\r\n                                  </Popover>\r\n                                );\r\n                            }\r\n                        },\r\n\r\n                        { title: 'Actions' }\r\n                    ]}\r\n                    actions={[\r\n                        {\r\n                            name: 'Preview',\r\n                            icon: (campaign) => (isBeingPreviewed(campaign) ? 'eye-slash' : 'eye'),\r\n                            color: (campaign) =>\r\n                                isBeingPreviewed(campaign) ? 'primary' : 'secondary',\r\n                            method: (campaign) => previewCampaign(campaign)\r\n                        },\r\n                        {\r\n                            name: 'Duplicate',\r\n                            icon: 'clone',\r\n                            color: 'success',\r\n                            method: ({ id }) => duplicate(id),\r\n                            disabled: (campaign) => {\r\n                                const {\r\n                                    settings: { type, add_to_unlock }\r\n                                } = campaign;\r\n                                const isMonsterFreeShippingAddToUnlock =\r\n                                    type === 'add_to_unlock' &&\r\n                                    add_to_unlock?.goals?.length === 1 &&\r\n                                    add_to_unlock?.goals[0].reward_type === 'free_shipping' &&\r\n                                    add_to_unlock?.goals[0].free_shipping.manual === false;\r\n                                return isMonsterFreeShippingAddToUnlock;\r\n                            }\r\n                        },\r\n                        {\r\n                            name: 'Edit',\r\n                            icon: 'pencil-alt',\r\n                            color: 'warning',\r\n                            method: ({ id }) => edit(id),\r\n                            disabled: (campaign) => {\r\n                                const {\r\n                                    settings: { type, add_to_unlock }\r\n                                } = campaign;\r\n                                const isMonsterFreeShippingAddToUnlock =\r\n                                    type === 'add_to_unlock' &&\r\n                                    add_to_unlock?.goals?.length === 1 &&\r\n                                    add_to_unlock?.goals[0].reward_type === 'free_shipping' &&\r\n                                    add_to_unlock?.goals[0].free_shipping.manual === false;\r\n                                return isMonsterFreeShippingAddToUnlock;\r\n                            }\r\n                        },\r\n                        {\r\n                            name: 'Remove',\r\n                            icon: 'trash',\r\n                            color: 'danger',\r\n                            method: ({ id }) => confirmDelete(id)\r\n                        }\r\n                    ]}\r\n                    items={ListCampaignsData?.campaigns?.list || []}\r\n                    emptyState={{\r\n                        action: {\r\n                            text: 'New Campaign',\r\n                            url: '/campaigns/create'\r\n                        },\r\n                        text: \"You don't have any campaigns, Create you first campaign.\"\r\n                    }}\r\n                />\r\n\r\n                {ListCampaignsData?.campaigns?.nextToken && (\r\n                    <div className={classNames('p-2 text-center')}>\r\n                        <Button\r\n                            type=\"link-info\"\r\n                            loading={queryLoading && ListCampaignsData?.campaigns?.list.length}\r\n                            text=\"Load More\"\r\n                            onClick={callLoadMore}\r\n                        />\r\n                    </div>\r\n                )}\r\n                <p\r\n                    className={classNames(\r\n                        'w-full cursor-pointer hover:underline flex-1 text-gray-600 text-md font-bold pt-6 mt-6 border-t'\r\n                    )}\r\n                    onClick={() => setIsOpen(true)}\r\n                >\r\n                    Need help setting up campaigns or want best practices? Click here\r\n                </p>\r\n            </Page>\r\n            <Modal\r\n                title=\"Deleting a campaign\"\r\n                message=\"Are you sure you want to delete this campaign\"\r\n                open={!!showConfirmDelete} //cast string id to string\r\n                primaryAction={{\r\n                    content: 'Delete',\r\n                    destructive: true,\r\n                    onAction: () => {\r\n                        //call remove mutation\r\n                        RemoveCampaignMutation({\r\n                            variables: { id: showConfirmDelete },\r\n                            update: (cache, { data: { removeCampaign } }) => {\r\n                                cache.writeQuery({\r\n                                    query: LIST_SHOP_CAMPAIGNS,\r\n                                    variables: {\r\n                                        userId: user.attributes.sub\r\n                                    },\r\n                                    data: {\r\n                                        campaigns: {\r\n                                            list: ListCampaignsData.campaigns.list.filter(\r\n                                                ({ id }) => id !== removeCampaign.id\r\n                                            ),\r\n                                            nextToken: ListCampaignsData.campaigns.nextToken,\r\n                                            __typename: ListCampaignsData.campaigns.__typename\r\n                                        }\r\n                                    }\r\n                                });\r\n                            }\r\n                        });\r\n                        setShowConfirmDelete(false);\r\n                    }\r\n                }}\r\n                secondaryActions={[\r\n                    {\r\n                        content: 'Close',\r\n                        onAction: () => setShowConfirmDelete(false)\r\n                    }\r\n                ]}\r\n            />\r\n        </>\r\n    );\r\n};\r\n\r\nexport default List;\r\n","export const COUNTRIES_LIST = [\r\n  {\"value\":\"worldwide\",\"label\":\"World Wide\"},\r\n  {\"value\":\"AF\",\"label\":\"Afghanistan\"},\r\n  {\"value\":\"AX\",\"label\":\"Åland Islands\"},\r\n  {\"value\":\"AL\",\"label\":\"Albania\"},\r\n  {\"value\":\"DZ\",\"label\":\"Algeria\"},\r\n  {\"value\":\"AD\",\"label\":\"Andorra\"},\r\n  {\"value\":\"AO\",\"label\":\"Angola\"},\r\n  {\"value\":\"AI\",\"label\":\"Anguilla\"},\r\n  {\"value\":\"AG\",\"label\":\"Antigua, Barbuda\"},\r\n  {\"value\":\"AR\",\"label\":\"Argentina\"},\r\n  {\"value\":\"AM\",\"label\":\"Armenia\"},\r\n  {\"value\":\"AW\",\"label\":\"Aruba\"},\r\n  {\"value\":\"AU\",\"label\":\"Australia\"},\r\n  {\"value\":\"AT\",\"label\":\"Austria\"},\r\n  {\"value\":\"AZ\",\"label\":\"Azerbaijan\"},\r\n  {\"value\":\"BS\",\"label\":\"Bahamas\"},\r\n  {\"value\":\"BH\",\"label\":\"Bahrain\"},\r\n  {\"value\":\"BD\",\"label\":\"Bangladesh\"},\r\n  {\"value\":\"BB\",\"label\":\"Barbados\"},\r\n  {\"value\":\"BY\",\"label\":\"Belarus\"},\r\n  {\"value\":\"BE\",\"label\":\"Belgium\"},\r\n  {\"value\":\"BZ\",\"label\":\"Belize\"},\r\n  {\"value\":\"BJ\",\"label\":\"Benin\"},\r\n  {\"value\":\"BM\",\"label\":\"Bermuda\"},\r\n  {\"value\":\"BT\",\"label\":\"Bhutan\"},\r\n  {\"value\":\"BO\",\"label\":\"Bolivia\"},\r\n  {\"value\":\"BA\",\"label\":\"Bosnia, Herzegovina\"},\r\n  {\"value\":\"BW\",\"label\":\"Botswana\"},\r\n  {\"value\":\"BV\",\"label\":\"Bouvet Island\"},\r\n  {\"value\":\"BR\",\"label\":\"Brazil\"},\r\n  {\"value\":\"IO\",\"label\":\"British Indian Ocean Territory\"},\r\n  {\"value\":\"VG\",\"label\":\"British Virgin Islands\"},\r\n  {\"value\":\"BN\",\"label\":\"Brunei\"},\r\n  {\"value\":\"BG\",\"label\":\"Bulgaria\"},\r\n  {\"value\":\"BF\",\"label\":\"Burkina Faso\"},\r\n  {\"value\":\"BI\",\"label\":\"Burundi\"},\r\n  {\"value\":\"KH\",\"label\":\"Cambodia\"},\r\n  {\"value\":\"CM\",\"label\":\"Cameroon\"},\r\n  {\"value\":\"CA\",\"label\":\"Canada\"},\r\n  {\"value\":\"CV\",\"label\":\"Cape Verde\"},\r\n  {\"value\":\"BQ\",\"label\":\"Caribbean Netherlands\"},\r\n  {\"value\":\"KY\",\"label\":\"Cayman Islands\"},\r\n  {\"value\":\"CF\",\"label\":\"Central African Republic\"},\r\n  {\"value\":\"TD\",\"label\":\"Chad\"},\r\n  {\"value\":\"CL\",\"label\":\"Chile\"},\r\n  {\"value\":\"CN\",\"label\":\"China\"},\r\n  {\"value\":\"CX\",\"label\":\"Christmas Island\"},\r\n  {\"value\":\"CC\",\"label\":\"Cocos (Keeling) Islands\"},\r\n  {\"value\":\"CO\",\"label\":\"Colombia\"},\r\n  {\"value\":\"KM\",\"label\":\"Comoros\"},\r\n  {\"value\":\"CG\",\"label\":\"Congo - Brazzaville\"},\r\n  {\"value\":\"CD\",\"label\":\"Congo - Kinshasa\"},\r\n  {\"value\":\"CK\",\"label\":\"Cook Islands\"},\r\n  {\"value\":\"CR\",\"label\":\"Costa Rica\"},\r\n  {\"value\":\"CI\",\"label\":\"Côte d’Ivoire\"},\r\n  {\"value\":\"HR\",\"label\":\"Croatia\"},\r\n  {\"value\":\"CU\",\"label\":\"Cuba\"},\r\n  {\"value\":\"CW\",\"label\":\"Curaçao\"},\r\n  {\"value\":\"CY\",\"label\":\"Cyprus\"},\r\n  {\"value\":\"CZ\",\"label\":\"Czechia\"},\r\n  {\"value\":\"DK\",\"label\":\"Denmark\"},\r\n  {\"value\":\"DJ\",\"label\":\"Djibouti\"},\r\n  {\"value\":\"DM\",\"label\":\"Dominica\"},\r\n  {\"value\":\"DO\",\"label\":\"Dominican Republic\"},\r\n  {\"value\":\"EC\",\"label\":\"Ecuador\"},\r\n  {\"value\":\"EG\",\"label\":\"Egypt\"},\r\n  {\"value\":\"SV\",\"label\":\"El Salvador\"},\r\n  {\"value\":\"GQ\",\"label\":\"Equatorial Guinea\"},\r\n  {\"value\":\"ER\",\"label\":\"Eritrea\"},\r\n  {\"value\":\"EE\",\"label\":\"Estonia\"},\r\n  {\"value\":\"SZ\",\"label\":\"Eswatini\"},\r\n  {\"value\":\"ET\",\"label\":\"Ethiopia\"},\r\n  {\"value\":\"FK\",\"label\":\"Falkland Islands\"},\r\n  {\"value\":\"FO\",\"label\":\"Faroe Islands\"},\r\n  {\"value\":\"FJ\",\"label\":\"Fiji\"},\r\n  {\"value\":\"FI\",\"label\":\"Finland\"},\r\n  {\"value\":\"FR\",\"label\":\"France\"},\r\n  {\"value\":\"GF\",\"label\":\"French Guiana\"},\r\n  {\"value\":\"PF\",\"label\":\"French Polynesia\"},\r\n  {\"value\":\"TF\",\"label\":\"French Southern Territories\"},\r\n  {\"value\":\"GA\",\"label\":\"Gabon\"},\r\n  {\"value\":\"GM\",\"label\":\"Gambia\"},\r\n  {\"value\":\"GE\",\"label\":\"Georgia\"},\r\n  {\"value\":\"DE\",\"label\":\"Germany\"},\r\n  {\"value\":\"GH\",\"label\":\"Ghana\"},\r\n  {\"value\":\"GI\",\"label\":\"Gibraltar\"},\r\n  {\"value\":\"GR\",\"label\":\"Greece\"},\r\n  {\"value\":\"GL\",\"label\":\"Greenland\"},\r\n  {\"value\":\"GD\",\"label\":\"Grenada\"},\r\n  {\"value\":\"GP\",\"label\":\"Guadeloupe\"},\r\n  {\"value\":\"GT\",\"label\":\"Guatemala\"},\r\n  {\"value\":\"GG\",\"label\":\"Guernsey\"},\r\n  {\"value\":\"GN\",\"label\":\"Guinea\"},\r\n  {\"value\":\"GW\",\"label\":\"Guinea-Bissau\"},\r\n  {\"value\":\"GY\",\"label\":\"Guyana\"},\r\n  {\"value\":\"HT\",\"label\":\"Haiti\"},\r\n  {\"value\":\"HM\",\"label\":\"Heard, McDonald Islands\"},\r\n  {\"value\":\"HN\",\"label\":\"Honduras\"},\r\n  {\"value\":\"HK\",\"label\":\"Hong Kong SAR China\"},\r\n  {\"value\":\"HU\",\"label\":\"Hungary\"},\r\n  {\"value\":\"IS\",\"label\":\"Iceland\"},\r\n  {\"value\":\"IN\",\"label\":\"India\"},\r\n  {\"value\":\"ID\",\"label\":\"Indonesia\"},\r\n  {\"value\":\"IR\",\"label\":\"Iran\"},\r\n  {\"value\":\"IQ\",\"label\":\"Iraq\"},\r\n  {\"value\":\"IE\",\"label\":\"Ireland\"},\r\n  {\"value\":\"IM\",\"label\":\"Isle of Man\"},\r\n  {\"value\":\"IL\",\"label\":\"Israel\"},\r\n  {\"value\":\"IT\",\"label\":\"Italy\"},\r\n  {\"value\":\"JM\",\"label\":\"Jamaica\"},\r\n  {\"value\":\"JP\",\"label\":\"Japan\"},\r\n  {\"value\":\"JE\",\"label\":\"Jersey\"},\r\n  {\"value\":\"JO\",\"label\":\"Jordan\"},\r\n  {\"value\":\"KZ\",\"label\":\"Kazakhstan\"},\r\n  {\"value\":\"KE\",\"label\":\"Kenya\"},\r\n  {\"value\":\"KI\",\"label\":\"Kiribati\"},\r\n  {\"value\":\"XK\",\"label\":\"Kosovo\"},\r\n  {\"value\":\"KW\",\"label\":\"Kuwait\"},\r\n  {\"value\":\"KG\",\"label\":\"Kyrgyzstan\"},\r\n  {\"value\":\"LA\",\"label\":\"Laos\"},\r\n  {\"value\":\"LV\",\"label\":\"Latvia\"},\r\n  {\"value\":\"LB\",\"label\":\"Lebanon\"},\r\n  {\"value\":\"LS\",\"label\":\"Lesotho\"},\r\n  {\"value\":\"LR\",\"label\":\"Liberia\"},\r\n  {\"value\":\"LY\",\"label\":\"Libya\"},\r\n  {\"value\":\"LI\",\"label\":\"Liechtenstein\"},\r\n  {\"value\":\"LT\",\"label\":\"Lithuania\"},\r\n  {\"value\":\"LU\",\"label\":\"Luxembourg\"},\r\n  {\"value\":\"MO\",\"label\":\"Macao SAR China\"},\r\n  {\"value\":\"MG\",\"label\":\"Madagascar\"},\r\n  {\"value\":\"MW\",\"label\":\"Malawi\"},\r\n  {\"value\":\"MY\",\"label\":\"Malaysia\"},\r\n  {\"value\":\"MV\",\"label\":\"Maldives\"},\r\n  {\"value\":\"ML\",\"label\":\"Mali\"},\r\n  {\"value\":\"MT\",\"label\":\"Malta\"},\r\n  {\"value\":\"MQ\",\"label\":\"Martinique\"},\r\n  {\"value\":\"MR\",\"label\":\"Mauritania\"},\r\n  {\"value\":\"MU\",\"label\":\"Mauritius\"},\r\n  {\"value\":\"YT\",\"label\":\"Mayotte\"},\r\n  {\"value\":\"MX\",\"label\":\"Mexico\"},\r\n  {\"value\":\"MD\",\"label\":\"Moldova\"},\r\n  {\"value\":\"MC\",\"label\":\"Monaco\"},\r\n  {\"value\":\"MN\",\"label\":\"Mongolia\"},\r\n  {\"value\":\"ME\",\"label\":\"Montenegro\"},\r\n  {\"value\":\"MS\",\"label\":\"Montserrat\"},\r\n  {\"value\":\"MA\",\"label\":\"Morocco\"},\r\n  {\"value\":\"MZ\",\"label\":\"Mozambique\"},\r\n  {\"value\":\"MM\",\"label\":\"Myanmar (Burma)\"},\r\n  {\"value\":\"NA\",\"label\":\"Namibia\"},\r\n  {\"value\":\"NR\",\"label\":\"Nauru\"},\r\n  {\"value\":\"NP\",\"label\":\"Nepal\"},\r\n  {\"value\":\"NL\",\"label\":\"Netherlands\"},\r\n  {\"value\":\"AN\",\"label\":\"Netherlands Antilles\"},\r\n  {\"value\":\"NC\",\"label\":\"New Caledonia\"},\r\n  {\"value\":\"NZ\",\"label\":\"New Zealand\"},\r\n  {\"value\":\"NI\",\"label\":\"Nicaragua\"},\r\n  {\"value\":\"NE\",\"label\":\"Niger\"},\r\n  {\"value\":\"NG\",\"label\":\"Nigeria\"},\r\n  {\"value\":\"NU\",\"label\":\"Niue\"},\r\n  {\"value\":\"NF\",\"label\":\"Norfolk Island\"},\r\n  {\"value\":\"KP\",\"label\":\"North Korea\"},\r\n  {\"value\":\"MK\",\"label\":\"North Macedonia\"},\r\n  {\"value\":\"NO\",\"label\":\"Norway\"},\r\n  {\"value\":\"OM\",\"label\":\"Oman\"},\r\n  {\"value\":\"PK\",\"label\":\"Pakistan\"},\r\n  {\"value\":\"PS\",\"label\":\"Palestinian Territories\"},\r\n  {\"value\":\"PA\",\"label\":\"Panama\"},\r\n  {\"value\":\"PG\",\"label\":\"Papua New Guinea\"},\r\n  {\"value\":\"PY\",\"label\":\"Paraguay\"},\r\n  {\"value\":\"PE\",\"label\":\"Peru\"},\r\n  {\"value\":\"PH\",\"label\":\"Philippines\"},\r\n  {\"value\":\"PN\",\"label\":\"Pitcairn Islands\"},\r\n  {\"value\":\"PL\",\"label\":\"Poland\"},\r\n  {\"value\":\"PT\",\"label\":\"Portugal\"},\r\n  {\"value\":\"QA\",\"label\":\"Qatar\"},\r\n  {\"value\":\"RE\",\"label\":\"Réunion\"},\r\n  {\"value\":\"RO\",\"label\":\"Romania\"},\r\n  {\"value\":\"RU\",\"label\":\"Russia\"},\r\n  {\"value\":\"RW\",\"label\":\"Rwanda\"},\r\n  {\"value\":\"WS\",\"label\":\"Samoa\"},\r\n  {\"value\":\"SM\",\"label\":\"San Marino\"},\r\n  {\"value\":\"ST\",\"label\":\"São Tomé, Príncipe\"},\r\n  {\"value\":\"SA\",\"label\":\"Saudi Arabia\"},\r\n  {\"value\":\"SN\",\"label\":\"Senegal\"},\r\n  {\"value\":\"RS\",\"label\":\"Serbia\"},\r\n  {\"value\":\"SC\",\"label\":\"Seychelles\"},\r\n  {\"value\":\"SL\",\"label\":\"Sierra Leone\"},\r\n  {\"value\":\"SG\",\"label\":\"Singapore\"},\r\n  {\"value\":\"SX\",\"label\":\"Sint Maarten\"},\r\n  {\"value\":\"SK\",\"label\":\"Slovakia\"},\r\n  {\"value\":\"SI\",\"label\":\"Slovenia\"},\r\n  {\"value\":\"SB\",\"label\":\"Solomon Islands\"},\r\n  {\"value\":\"SO\",\"label\":\"Somalia\"},\r\n  {\"value\":\"ZA\",\"label\":\"South Africa\"},\r\n  {\"value\":\"GS\",\"label\":\"South Georgia, South Sandwich Islands\"},\r\n  {\"value\":\"KR\",\"label\":\"South Korea\"},\r\n  {\"value\":\"SS\",\"label\":\"South Sudan\"},\r\n  {\"value\":\"ES\",\"label\":\"Spain\"},\r\n  {\"value\":\"LK\",\"label\":\"Sri Lanka\"},\r\n  {\"value\":\"BL\",\"label\":\"St Barthélemy\"},\r\n  {\"value\":\"SH\",\"label\":\"St Helena\"},\r\n  {\"value\":\"KN\",\"label\":\"St Kitts, Nevis\"},\r\n  {\"value\":\"LC\",\"label\":\"St Lucia\"},\r\n  {\"value\":\"MF\",\"label\":\"St Martin\"},\r\n  {\"value\":\"PM\",\"label\":\"St Pierre, Miquelon\"},\r\n  {\"value\":\"VC\",\"label\":\"St Vincent, Grenadines\"},\r\n  {\"value\":\"SD\",\"label\":\"Sudan\"},\r\n  {\"value\":\"SR\",\"label\":\"Surivalue\"},\r\n  {\"value\":\"SJ\",\"label\":\"Svalbard, Jan Mayen\"},\r\n  {\"value\":\"SE\",\"label\":\"Sweden\"},\r\n  {\"value\":\"CH\",\"label\":\"Switzerland\"},\r\n  {\"value\":\"SY\",\"label\":\"Syria\"},\r\n  {\"value\":\"TW\",\"label\":\"Taiwan\"},\r\n  {\"value\":\"TJ\",\"label\":\"Tajikistan\"},\r\n  {\"value\":\"TZ\",\"label\":\"Tanzania\"},\r\n  {\"value\":\"TH\",\"label\":\"Thailand\"},\r\n  {\"value\":\"TL\",\"label\":\"Timor-Leste\"},\r\n  {\"value\":\"TG\",\"label\":\"Togo\"},\r\n  {\"value\":\"TK\",\"label\":\"Tokelau\"},\r\n  {\"value\":\"TO\",\"label\":\"Tonga\"},\r\n  {\"value\":\"TT\",\"label\":\"Trinidad, Tobago\"},\r\n  {\"value\":\"TN\",\"label\":\"Tunisia\"},\r\n  {\"value\":\"TR\",\"label\":\"Turkey\"},\r\n  {\"value\":\"TM\",\"label\":\"Turkmenistan\"},\r\n  {\"value\":\"TC\",\"label\":\"Turks, Caicos Islands\"},\r\n  {\"value\":\"TV\",\"label\":\"Tuvalu\"},\r\n  {\"value\":\"UM\",\"label\":\"US Outlying Islands\"},\r\n  {\"value\":\"UG\",\"label\":\"Uganda\"},\r\n  {\"value\":\"UA\",\"label\":\"Ukraine\"},\r\n  {\"value\":\"AE\",\"label\":\"United Arab Emirates\"},\r\n  {\"value\":\"GB\",\"label\":\"United Kingdom\"},\r\n  {\"value\":\"US\",\"label\":\"United States\"},\r\n  {\"value\":\"UY\",\"label\":\"Uruguay\"},\r\n  {\"value\":\"UZ\",\"label\":\"Uzbekistan\"},\r\n  {\"value\":\"VU\",\"label\":\"Vanuatu\"},\r\n  {\"value\":\"VA\",\"label\":\"Vatican City\"},\r\n  {\"value\":\"VE\",\"label\":\"Venezuela\"},\r\n  {\"value\":\"VN\",\"label\":\"Vietnam\"},\r\n  {\"value\":\"WF\",\"label\":\"Wallis, Futuna\"},\r\n  {\"value\":\"EH\",\"label\":\"Western Sahara\"},\r\n  {\"value\":\"YE\",\"label\":\"Yemen\"},\r\n  {\"value\":\"ZM\",\"label\":\"Zambia\"},\r\n  {\"value\":\"ZW\",\"label\":\"Zimbabwe\"}\r\n  ]\r\n  ","import { CAMPAIGN_TARGETS } from 'lib/globals';\r\nimport ShopContext from 'context/ShopContext';\r\nimport React,{ useContext } from 'react';\r\nimport { Alert, Button, ButtonSelect, FormControl, ShopifyResourcePicker } from 'components';\r\n\r\nexport default function CampaignTarget({ context }) {\r\n    const { state: campaign, validationErrors, validate,setItem } = context;\r\n    const shopContext = useContext(ShopContext);\r\n    return (\r\n        <>\r\n            {campaign.settings.type &&\r\n                <FormControl\r\n                    label=\"choose products you want to trigger this campaign\"\r\n                    error={validationErrors['target.type']}\r\n                    info={\r\n                        campaign.settings.type === 'bundles'\r\n                            ? 'This campaign will show up on the products you choose below. you can show it on specific products or collections'\r\n                            : 'This campaign will show up on the products you choose below. you can show it on all products or specific'\r\n                    }\r\n                >\r\n                    <ButtonSelect\r\n                        options={CAMPAIGN_TARGETS.filter(\r\n                            target => {\r\n                                const isAllProductsBundles = target.value === 'all_products' && campaign.settings.type === 'bundles'\r\n                                return !isAllProductsBundles\r\n                            }\r\n                        )}\r\n                        shopContext={shopContext}\r\n                        BindToContext={[\r\n                            context,\r\n                            'target.type',\r\n                            newValue =>\r\n                                {\r\n                                if(['specific_products','specific_collections'].includes(newValue)){\r\n                                    setItem('target.selected', [])\r\n                                }\r\n                            }\r\n                        ]}\r\n                    />\r\n                </FormControl>}\r\n\r\n            {campaign.target.type === 'specific_products' &&\r\n                <FormControl\r\n                    label=\"Specify the products\"\r\n                    error={validationErrors['target.selected']}\r\n                >\r\n                    <ShopifyResourcePicker\r\n                        allowMultiple={20}\r\n                        BindToContext={[context, 'target.selected']}\r\n                    >\r\n                        {trigger =>\r\n                            <Button\r\n                                text=\"Select Products\"\r\n                                type={\r\n                                    validationErrors['target.selected'] &&\r\n                                    !!validationErrors['target.selected'][0]\r\n                                        ? 'danger'\r\n                                        : 'primary'\r\n                                }\r\n                                onClick={trigger}\r\n                                style={{ width: '100%' }}\r\n                            />}\r\n                    </ShopifyResourcePicker>\r\n                </FormControl>}\r\n            {campaign.target.type === 'specific_collections' &&\r\n                <FormControl\r\n                    label=\"Specify the collections\"\r\n                    error={validationErrors['target.selected']}\r\n                >\r\n                    <ShopifyResourcePicker\r\n                        allowMultiple={2}\r\n                        BindToContext={[context, 'target.selected']}\r\n                        type=\"Collection\"\r\n                    >\r\n                        {trigger =>\r\n                            <Button\r\n                                text=\"Select Collections\"\r\n                                type={\r\n                                    validationErrors['target.selected'] &&\r\n                                    !!validationErrors['target.selected'][0]\r\n                                        ? 'danger'\r\n                                        : 'primary'\r\n                                }\r\n                                onClick={trigger}\r\n                                style={{ width: '100%' }}\r\n                            />}\r\n                    </ShopifyResourcePicker>\r\n                </FormControl>}\r\n            {campaign.settings.type === 'add_to_unlock' &&\r\n                (campaign.target.type === 'specific_products' ||\r\n                    campaign.target.type === 'specific_collections') &&\r\n                <Alert\r\n                    {...{\r\n                        type: 'warning',\r\n                        borderPosition: 'border-l-4',\r\n                        iconSize: '2x', // title: \"Add To Unlock - Limitation\",\r\n                        icon: 'exclamation-circle',\r\n                        customStyle: { icon: 'text-orange-400 self-start mt-1' }\r\n                    }}\r\n                    className=\"my-6 z-5\"\r\n                >\r\n                    <p>\r\n                        Once activated this offer is SITEWIDE. All products in cart will contribute\r\n                        to the unlock goal.\r\n                    </p>\r\n                </Alert>}\r\n        </>\r\n    );\r\n}\r\n","import React, { useContext, useEffect } from \"react\";\r\nimport {\r\n  FormGroup,\r\n  FormControl,\r\n  Input,\r\n  Icon,\r\n  Button,\r\n  ButtonSelect,\r\n  ShopifyResourcePicker,\r\n  Alert,\r\n  Dropdown,\r\n} from \"components\";\r\nimport styles from \"styles/campaign_settings_first_step.module.scss\";\r\nimport tutorial_styles from \"styles/tutorial.module.scss\";\r\nimport {\r\n  BOX_CHECK_ICON,\r\n  CAMPAIGN_TYPES,\r\n  CAMPAIGN_TARGETS,\r\n  BREAK_POINTS,\r\n} from \"lib/globals\";\r\nimport { COUNTRIES_LIST } from \"lib/countries\";\r\nimport classNames from \"lib/classNames\";\r\nimport ShopContext from \"context/ShopContext\";\r\nimport CampaignTarget from \"./CampaignTarget\";\r\n// import compareVersions from 'compare-versions';\r\n\r\nconst FirstStep = ({ context, setIsOpen }) => {\r\n  const { state: campaign, setItem, validationErrors, validate } = context;\r\n  const shopContext = useContext(ShopContext);\r\n  const {\r\n    state: {\r\n      settings: { multiCurrencyMode },\r\n    },\r\n  } = shopContext;\r\n  const select = (type) => setItem(\"settings.type\", type);\r\n  const killDraftBreakPoint = BREAK_POINTS[\"kill_draft\"](shopContext);\r\n\r\n  useEffect(() => {\r\n    if (\r\n      campaign.settings.type === \"bundles\" &&\r\n      campaign.target.type === \"all_products\"\r\n    ) {\r\n      setItem(\"target.type\", \"specific_products\");\r\n    }\r\n    // if (\r\n    //   campaign.settings.type !== \"bundles\" &&\r\n    //   campaign.target.type !== \"all_products\"\r\n    // ) {\r\n    //   setItem(\"target.type\", \"all_products\");\r\n    // }\r\n  }, [campaign.settings.type]);\r\n\r\n  // useEffect(() => {\r\n  // \tsetItem('target.selected', []);\r\n  // }, [campaign.target.type]);\r\n\r\n  return (\r\n    <>\r\n      {!!Object.keys(validationErrors).filter(\r\n        (e) => typeof validationErrors[e] === \"string\"\r\n      ).length && (\r\n        <Alert type=\"error\" title=\"Errors\">\r\n          <ul className={classNames(\"list-disc list-inside\")}>\r\n            {Object.keys(validationErrors).map((key) => {\r\n              const error = validationErrors[key];\r\n              return Array.isArray(error) ? (\r\n                error\r\n                  .filter((e) => typeof e === \"string\")\r\n                  .map((k, i) => <li key={i}>{k}</li>)\r\n              ) : (\r\n                <li key={key}>{error}</li>\r\n              );\r\n            })}\r\n          </ul>\r\n        </Alert>\r\n      )}\r\n      <p\r\n        className={\r\n          classNames(\"flex-1 text-gray-600 text-sm font-bold mb-3\") +\r\n          \" \" +\r\n          tutorial_styles.button\r\n        }\r\n        onClick={() => setIsOpen(true)}\r\n      >\r\n        Need help setting up campaigns or want best practices? Click here\r\n      </p>\r\n      <FormGroup\r\n        label=\"Basic Settings\"\r\n        info={`Setup the campaign triggers and the type of campaign.\r\n\t\t\tTip: Most stores can setup an Add to unlock campaign with a free shipping goal that targets all products in store`}\r\n      >\r\n        <FormControl\r\n          label=\"choose a name for the campaign\"\r\n          error={validationErrors.name}\r\n        >\r\n          <Input\r\n            autofocus\r\n            placeholder=\"Name\"\r\n            BindToContext={[context, \"name\"]}\r\n          />\r\n        </FormControl>\r\n        {multiCurrencyMode && !killDraftBreakPoint && (\r\n          <Alert\r\n            {...{\r\n              type: \"warning\",\r\n              borderPosition: \"border-l-4\",\r\n              iconSize: \"2x\",\r\n              title: \"Some campaign types are not supported\",\r\n              icon: \"exclamation-circle\",\r\n              customStyle: {\r\n                icon: \"text-orange-400 self-start mt-1\",\r\n              },\r\n            }}\r\n            className=\"my-6 z-5\"\r\n          >\r\n            <p>Shopify native checkout doesn't support all campaign types.</p>\r\n            <div className={classNames(\"flex space-x-3 pt-3 justify-start\")}>\r\n              <a\r\n                className={classNames(\r\n                  \"text-gray-800 text-sm flex items-center hover:text-orange-500 focus:outline-none focus:outline-shadow font-semibold py-1 px-2 uppercase border bg-orange-200 bg-opacity-50 border-orange-300 rounded\"\r\n                )}\r\n                href=\"https://monsterapps.crisp.help/en/article/reasons-a-campaign-might-not-be-working-jzsza7/\"\r\n                target=\"_blank\"\r\n              >\r\n                <Icon icon=\"info-circle\" className=\"mr-2\" size=\"1x\" />\r\n                <span className={classNames(\"text-xs\")}>Learn More</span>\r\n              </a>\r\n            </div>\r\n          </Alert>\r\n        )}\r\n        <FormControl\r\n          label=\"select a campaign type\"\r\n          error={validationErrors[\"settings.type\"]}\r\n        >\r\n          <ButtonSelect\r\n            options={[\r\n              {\r\n                value: \"add_to_unlock\",\r\n                label: CAMPAIGN_TYPES[\"add_to_unlock\"],\r\n                icon: \"unlock\",\r\n                title: \"(Free gifts, Free shipping, Discount)\",\r\n                info: \"Offer customers a reward when a purchase goal is hit and suggest products to add to cart.\",\r\n                link: {\r\n                  href: \"https://monsterapps.crisp.help/en/article/add-to-unlock-frequently-bought-together-campaign-free-shipping-free-gift-discount-1x7xy1r/\",\r\n                  text: \"Watch tutorial\",\r\n                },\r\n              },\r\n              {\r\n                value: \"bundles\",\r\n                label: CAMPAIGN_TYPES[\"bundles\"],\r\n                // disabled: ({ state }) => {\r\n                // \treturn BREAK_POINTS['kill_draft'](shopContext)\r\n                // \t\t? state.target.type === 'all_products'\r\n                // \t\t: !!multiCurrencyMode;\r\n                // },\r\n                icon: \"bars\",\r\n                info: \"Offer customers quick discounts on bulk orders.\",\r\n                link: {\r\n                  href: \"https://monsterapps.crisp.help/en/article/buy-more-save-more-campaign-135cfea/\",\r\n                  text: \"Watch tutorial\",\r\n                },\r\n              },\r\n              {\r\n                value: \"one_check_up_sell\",\r\n                label: CAMPAIGN_TYPES[\"one_check_up_sell\"],\r\n                title:\r\n                  \"(Shipping protection, Priority processing, Extended warranty, Gift wrapping)\",\r\n                icon: BOX_CHECK_ICON,\r\n                info: \"A quick one-click upsell.\",\r\n                link: {\r\n                  href: \"https://monsterapps.crisp.help/en/article/one-tick-upsell-campaign-vfswak/\",\r\n                  text: \"Watch tutorial\",\r\n                },\r\n              },\r\n            ]}\r\n            showSeparator={false}\r\n            BindToContext={[context, \"settings.type\"]}\r\n          />\r\n\r\n          {/* <div style={{ textAlign: 'center' }}>\r\n\t\t\t\t\t<Button\r\n\t\t\t\t\t\tdisabled={disabled}\r\n\t\t\t\t\t\ttext={`Customize ${CAMPAIGN_TYPES[campaign.settings.type]}`}\r\n\t\t\t\t\t\ticon=\"sliders-v-square\"\r\n\t\t\t\t\t\tonClick={() => next()}\r\n\t\t\t\t\t/>\r\n\t\t\t\t</div> */}\r\n        </FormControl>\r\n        {!campaign.settings.type && (\r\n          <div\r\n            className={classNames(\r\n              `mb-3${\r\n                !campaign.settings.type ||\r\n                campaign.settings.type === \"add_to_unlock\"\r\n                  ? \"\"\r\n                  : \" border-gray-300 border-b pb-4\"\r\n              }`\r\n            )}\r\n          >\r\n            <label\r\n              className={classNames(\r\n                \"block flex-1 flex-grow capitalize text-sm font-bold text-gray-600 flex items-center\"\r\n              )}\r\n            >\r\n              <span>(NEW) Buy X, Get Y Free Feature</span>\r\n              <div\r\n                className={classNames(\r\n                  \"flex-center bg-orange-500 p-1 rounded text-white font-extrabold ml-2\"\r\n                )}\r\n                style={{ fontSize: 10, padding: \"3px 8px\" }}\r\n              >\r\n                Beta\r\n              </div>\r\n            </label>\r\n            <div\r\n              className={classNames(\r\n                \"text-gray-600 text-xs font-semibold underline cursor-pointer\"\r\n              )}\r\n              onClick={() =>\r\n                window.open(\r\n                  \"https://monsterapps.crisp.help/en/article/buy-x-get-y-beta-feature-1pm496b/\",\r\n                  \"_blank\"\r\n                )\r\n              }\r\n            >\r\n              Learn more about this feature\r\n            </div>\r\n          </div>\r\n        )}\r\n        {campaign.settings.type === \"bundles\" && (\r\n          <div className={classNames(`mb-3 border-gray-300 border-b pb-4`)}>\r\n            <label\r\n              className={classNames(\r\n                \"block flex-1 flex-grow capitalize text-sm font-bold text-gray-600 flex items-center\"\r\n              )}\r\n            >\r\n              <span>(NEW) Buy More Save More Product Page Widget</span>\r\n              <div\r\n                className={classNames(\r\n                  \"flex-center bg-orange-500 p-1 rounded text-white font-extrabold ml-2\"\r\n                )}\r\n                style={{ fontSize: 10, padding: \"3px 8px\" }}\r\n              >\r\n                Beta\r\n              </div>\r\n            </label>\r\n            <div\r\n              className={classNames(\r\n                \"text-gray-600 text-xs font-semibold underline cursor-pointer\"\r\n              )}\r\n              onClick={() =>\r\n                window.open(\r\n                  \"https://monsterapps.crisp.help/en/article/buy-more-save-more-product-page-widget-ubnm6h\",\r\n                  \"_blank\"\r\n                )\r\n              }\r\n            >\r\n              Learn how to show this on product pages\r\n            </div>\r\n          </div>\r\n        )}\r\n\r\n        {/* {!campaign.settings.type && (\r\n          <div\r\n            className={classNames(\r\n              \"relative flex flex-col flex-1 text-gray-500 bg-gray-200 p-2 border-2 focus:outline-none border-gray-600 justify-start cursor-not-allowed\"\r\n            )}\r\n          >\r\n            <p\r\n              className={classNames(\r\n                \"text-gray-600 text-sm font-semibold mb-1 italic\"\r\n              )}\r\n            >\r\n              Coming Soon\r\n            </p>\r\n            <h3\r\n              className={classNames(\r\n                \"capitalize font-bold text-sm relative text-left mb-1 text-gray-600\"\r\n              )}\r\n            >\r\n              Buy X, Get Y\r\n            </h3>\r\n            <p className={classNames(\"text-gray-500 text-xs italic h-full\")}>\r\n              We are creating a new campaign for this, however you can achieve\r\n              Buy X Get Y using Shopify Automatic discounts.\r\n            </p>\r\n            <div\r\n              className={classNames(\r\n                \"text-gray-600 text-xs font-semibold underline mt-2 cursor-pointer\"\r\n              )}\r\n              onClick={() =>\r\n                window.open(\r\n                  \"https://monsterapps.crisp.help/en/article/buy-x-get-y-best-practices-1pm496b/\",\r\n                  \"_blank\"\r\n                )\r\n              }\r\n            >\r\n              Watch tutorial\r\n            </div>\r\n          </div>\r\n        )} */}\r\n        {/* {campaign.settings.type === \"add_to_unlock\" && (\r\n          <Alert\r\n            {...{\r\n              type: \"warning\",\r\n              borderPosition: \"border-l-4\",\r\n              iconSize: \"2x\",\r\n              // title: \"Add To Unlock - Limitation\",\r\n              icon: \"exclamation-circle\",\r\n              customStyle: {\r\n                icon: \"text-orange-400 self-start mt-1\",\r\n              },\r\n            }}\r\n            className=\"my-6 z-5\"\r\n          >\r\n            <p>\r\n              Once activated this offer is SITEWIDE. All products in cart will\r\n              contribute to the unlock goal.\r\n            </p>\r\n          </Alert>\r\n        )} */}\r\n        {campaign.settings.type === \"bundles\" && (\r\n          <Alert\r\n            {...{\r\n              type: \"warning\",\r\n              borderPosition: \"border-l-4\",\r\n              iconSize: \"2x\",\r\n              title: \"Buy more save more - Limitation\",\r\n              icon: \"exclamation-circle\",\r\n              customStyle: {\r\n                icon: \"text-orange-400 self-start mt-1\",\r\n              },\r\n            }}\r\n            className=\"my-6 z-5\"\r\n          >\r\n            <p>\r\n              Works on volume of same exact product (Not mixing with other\r\n              products)\r\n            </p>\r\n            <p>Fully compatible with product variants.</p>\r\n          </Alert>\r\n        )}\r\n        {campaign.settings.type !== \"add_to_unlock\" && (\r\n          <CampaignTarget context={context} />\r\n        )}\r\n      </FormGroup>\r\n    </>\r\n  );\r\n};\r\n\r\nconst Tile = (props) => {\r\n  const { active, type, select, icon, title, description } = props;\r\n  return (\r\n    <div\r\n      className={styles.tile}\r\n      data-selected={active}\r\n      onClick={() => {\r\n        if (!active) select(type);\r\n      }}\r\n    >\r\n      <Icon\r\n        icon={icon}\r\n        type={active ? \"primary\" : \"secondary\"}\r\n        style={{ marginBottom: \"16px\" }}\r\n        size={38}\r\n      />\r\n      <b>{CAMPAIGN_TYPES[type]}</b>\r\n      <p>{description}</p>\r\n    </div>\r\n  );\r\n};\r\n\r\nexport default FirstStep;\r\n","import React from 'react';\r\nimport { SortableElement, sortableHandle } from 'react-sortable-hoc';\r\nimport { Switch, Button, Icon } from 'components';\r\nimport styles from 'styles/extra_modules.module.scss';\r\nimport classNames from 'lib/classNames';\r\n\r\nconst Module = SortableElement(\r\n\t({ module, name, reset, switchButton = true, resetModule, moduleKey, children, context, info }) => {\r\n\t\tconst active = module && typeof module.active === 'boolean' ? module.active : true;\r\n\r\n\t\treturn (\r\n\t\t\t<div className={styles.module} data-active={active}>\r\n\t\t\t\t<div className={styles.header} data-has-children={!!children}>\r\n\t\t\t\t\t<div className={styles.header_wrapper}>\r\n\t\t\t\t\t\t<b className={styles.name}>{name}</b>\r\n\t\t\t\t\t\t{reset && (\r\n\t\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\t\ttext=\"Reset\"\r\n\t\t\t\t\t\t\t\ticon=\"undo\"\r\n\t\t\t\t\t\t\t\ttype=\"link\"\r\n\t\t\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t\t\tclassName={styles.ml_4}\r\n\t\t\t\t\t\t\t\tonClick={() => resetModule(moduleKey)}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{switchButton && (\r\n\t\t\t\t\t\t\t<Switch\r\n\t\t\t\t\t\t\t\tclassName={styles.ml_4}\r\n\t\t\t\t\t\t\t\tBindToContext={[context, `settings.modules.${moduleKey}.active`]}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t{!!info && <p className={styles.info}>{info}</p>}\r\n\t\t\t\t</div>\r\n\t\t\t\t{!!children && (\r\n\t\t\t\t\t<div\r\n\t\t\t\t\t\tclassName={`${styles.content} ${!active ? styles.collapsed : ''}`}\r\n\t\t\t\t\t\tstyle={{\r\n\t\t\t\t\t\t\toverflow: active ? 'initial' : 'hidden',\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<div className={styles.inner}>{children}</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t)}\r\n\t\t\t\t<Grip active={active} />\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nModule.defaultProps = {\r\n\tswitchButton: true,\r\n\treset: true,\r\n};\r\n\r\nconst Grip = sortableHandle(({ active }) => {\r\n\treturn (\r\n\t\t<div className={styles.grip} data-active={active}>\r\n\t\t\t<Icon icon=\"angle-up\" />\r\n\t\t\t<Icon icon=\"angle-down\" />\r\n\t\t</div>\r\n\t);\r\n});\r\n\r\nexport default Module;\r\n","import React from 'react';\r\nimport Module from './Module';\r\nimport { FormControl, Input, RichEditor } from 'components';\r\n\r\nconst RandomText = (props) => {\r\n\tconst { context } = props;\r\n\tconst { validationErrors, state } = context;\r\n\r\n\treturn (\r\n\t\t<Module name=\"Random Text\" {...props}>\r\n\t\t\t<FormControl\r\n\t\t\t\tlabel=\"Text :\"\r\n\t\t\t\tmarginBottom=\"mb-0\"\r\n\t\t\t\terror={validationErrors['settings.modules.random_text.text']}\r\n\t\t\t>\r\n\t\t\t\t<RichEditor\r\n\t\t\t\t\tplaceholder=\"Enter your sold here!\"\r\n\t\t\t\t\tBindToContext={[context, 'settings.modules.random_text.text']}\r\n\t\t\t\t\thasError={!!validationErrors['settings.modules.random_text.text']}\r\n\t\t\t\t/>\r\n\t\t\t</FormControl>\r\n\t\t</Module>\r\n\t);\r\n};\r\n\r\nexport default RandomText;\r\n","import React from 'react';\r\nimport Module from './Module';\r\nimport { FormControl, Input, RichEditor } from 'components';\r\nimport useReactRouter from 'use-react-router';\r\n\r\nconst OrderNote = (props) => {\r\n\tconst { context } = props;\r\n\tconst { validationErrors, state } = context;\r\n\tconst { history } = useReactRouter();\r\n\r\n\t// if(history.location.pathname.indexOf(\"settings\") === -1) return null\r\n\r\n\treturn (\r\n\t\t<Module name=\"Order Note\" {...props}>\r\n\t\t\t<FormControl\r\n\t\t\t\tlabel=\"Text :\"\r\n\t\t\t\tmarginBottom=\"mb-0\"\r\n\t\t\t\terror={validationErrors['settings.modules.order_note.text']}\r\n\t\t\t>\r\n\t\t\t\t<RichEditor\r\n\t\t\t\t\tplaceholder=\"Enter your text here!\"\r\n\t\t\t\t\tBindToContext={[context, 'settings.modules.order_note.text']}\r\n\t\t\t\t\thasError={!!validationErrors['settings.modules.order_note.text']}\r\n\t\t\t\t/>\r\n\t\t\t</FormControl>\r\n\t\t</Module>\r\n\t);\r\n};\r\n\r\nexport default OrderNote;\r\n","import React from \"react\";\r\nimport Module from \"./Module\";\r\nimport {\r\n  FormControl,\r\n  FormGroup,\r\n  Input,\r\n  ColorPicker,\r\n  CustomText,\r\n  Icon,\r\n  Switch,\r\n} from \"components\";\r\nimport classNames from \"lib/classNames\";\r\nconst CheckoutButton = (props) => {\r\n  const { context, setCheckoutButtonLoadingEdit } = props;\r\n  const { state, validationErrors } = context;\r\n  // <Module name=\"Checkout Section\" {...{ ...props, reset: !!hasCheckout }}>\r\n  // \t<>\r\n  // \t\t{!!hasCheckout && (\r\n  return (\r\n    <>\r\n      <FormGroup\r\n        label=\"Checkout Button\"\r\n        info=\"Keep these settings simple and to the point\"\r\n        fullWidth\r\n      >\r\n        <CustomText\r\n          context={context}\r\n          label=\"Subtotal\"\r\n          hasColor={true}\r\n          path=\"settings.modules.checkout_button.subtotal\"\r\n          hasWeight=\"700\"\r\n        />\r\n        <CustomText\r\n          context={context}\r\n          label=\"Savings\"\r\n          hasColor={true}\r\n          path=\"settings.modules.checkout_button.savings\"\r\n          hasWeight=\"700\"\r\n        />\r\n        <FormControl\r\n          label=\"Checkout as Link\"\r\n          withSwitch={[\r\n            context,\r\n            \"settings.modules.checkout_button.checkout_as_link\",\r\n          ]}\r\n          info=\"Turn the checkout button into a link\"\r\n          className={\"mb-6\"}\r\n        />\r\n        <CustomText\r\n          context={context}\r\n          placeholder=\"checkout\"\r\n          hasColor={true}\r\n          label=\"checkout button text\"\r\n          path=\"settings.modules.checkout_button.button_text\"\r\n          hasWeight=\"700\"\r\n        />\r\n        <CustomText\r\n          context={context}\r\n          placeholder=\"processing\"\r\n          hasColor={true}\r\n          hasNumber={false}\r\n          onFocus={() => setCheckoutButtonLoadingEdit(true)}\r\n          onBlur={() => setCheckoutButtonLoadingEdit(false)}\r\n          label=\"checkout button loading text\"\r\n          path=\"settings.modules.checkout_button.button_text_loading\"\r\n        />\r\n        <FormControl label=\"checkout button colors\">\r\n          <ColorPicker\r\n            text=\"background\"\r\n            BindToContext={[\r\n              context,\r\n              \"settings.modules.checkout_button.background\",\r\n            ]}\r\n          />\r\n          {/* <ColorPicker\r\n\t\t\t\t\t\ttext=\"hover background\"\r\n\t\t\t\t\t\tBindToContext={[context, 'settings.modules.checkout_button.hoverBackground']}\r\n\t\t\t\t\t/> */}\r\n        </FormControl>\r\n        <FormControl\r\n          label=\"Continue Shopping Button\"\r\n          info=\"Make it easy for customers to continue shopping\"\r\n          withSwitch={[\r\n            context,\r\n            \"settings.modules.checkout_button.active_continue_shopping_button\",\r\n          ]}\r\n        >\r\n          {state.settings.modules.checkout_button\r\n            .active_continue_shopping_button && (\r\n            <CustomText\r\n              context={context}\r\n              placeholder=\"Continue shopping\"\r\n              hasColor={true}\r\n              path=\"settings.modules.checkout_button.continue_shopping_button\"\r\n            />\r\n          )}\r\n        </FormControl>\r\n        {state.settings.modules.checkout_button\r\n          .active_continue_shopping_button && (\r\n          <FormControl\r\n            label=\"Underline link\"\r\n            withSwitch={[\r\n              context,\r\n              \"settings.modules.checkout_button.active_continue_shopping_underlined\",\r\n            ]}\r\n          ></FormControl>\r\n        )}\r\n\r\n        {state.settings.cod_settings.is_active && (\r\n          <>\r\n            <FormControl label=\"COD checkout button colors\">\r\n              <ColorPicker\r\n                text=\"background\"\r\n                BindToContext={[\r\n                  context,\r\n                  \"settings.cod_settings.checkout_button.background\",\r\n                ]}\r\n              />\r\n              {/* <ColorPicker\r\n\t\t\t\t\t\t\t\ttext=\"hover background\"\r\n\t\t\t\t\t\t\t\tBindToContext={[context, 'settings.cod_settings.checkout_button.hoverBackground']}\r\n\t\t\t\t\t\t\t/> */}\r\n            </FormControl>\r\n            <CustomText\r\n              context={context}\r\n              label=\"COD checkout button\"\r\n              hasColor={true}\r\n              path=\"settings.cod_settings.checkout_button\"\r\n            />\r\n          </>\r\n        )}\r\n      </FormGroup>\r\n      <FormGroup\r\n        label=\"coupon code form\"\r\n        info={`The cart allows discounts codes to be entered.\r\n\t\t\t\tIf a discount code is activated all other cart discounts are dismissed.`}\r\n        fullWidth\r\n      >\r\n        <CustomText\r\n          context={context}\r\n          label=\"Use Coupon Code\"\r\n          hasColor={true}\r\n          path=\"settings.modules.checkout_button.use_coupon_code\"\r\n          withSwitch={[context, \"settings.show_coupon\"]}\r\n          marginBottom=\"mb-4\"\r\n          beta\r\n        />\r\n        <div className={classNames(\"flex flex-wrap -mx-2\")}>\r\n          <CustomText\r\n            context={context}\r\n            className=\"px-2 flex-1 w-auto\"\r\n            label=\"Edit Coupon Code\"\r\n            path=\"settings.modules.checkout_button.edit_coupon_code\"\r\n          />\r\n          <CustomText\r\n            context={context}\r\n            className=\"px-2 flex-1 w-auto\"\r\n            label=\"Close Coupon Code\"\r\n            path=\"settings.modules.checkout_button.close_coupon_code\"\r\n          />\r\n        </div>\r\n        <CustomText\r\n          context={context}\r\n          label=\"Enter Coupon Code\"\r\n          hasColor={true}\r\n          path=\"settings.modules.checkout_button.enter_coupon_code\"\r\n        />\r\n        <CustomText\r\n          context={context}\r\n          label=\"Apply Coupon Code\"\r\n          hasColor={true}\r\n          path=\"settings.modules.checkout_button.apply_coupon_code\"\r\n        />\r\n        <CustomText\r\n          context={context}\r\n          label=\"Coupon Code Alert\"\r\n          withSwitch={[context, \"settings.show_coupon_alert_text\"]}\r\n          hasColor={true}\r\n          path=\"settings.modules.checkout_button.coupon_alert_text\"\r\n        />\r\n        <FormControl label=\"apply coupon button colors\">\r\n          <ColorPicker\r\n            text=\"background\"\r\n            BindToContext={[\r\n              context,\r\n              \"settings.modules.checkout_button.coupon.background\",\r\n            ]}\r\n          />\r\n          {/* <ColorPicker\r\n                        text=\"hover background\"\r\n                        BindToContext={[\r\n                            context,\r\n                            'settings.modules.checkout_button.coupon.hoverBackground'\r\n                        ]}\r\n                    /> */}\r\n        </FormControl>\r\n      </FormGroup>\r\n    </>\r\n  );\r\n};\r\n\r\nexport default CheckoutButton;\r\n","import { setIn } from 'immutable';\r\nimport uuid from 'uuid/v1';\r\nimport { DEFAULT_GOAL, default_one_check_upsell } from 'lib/globals';\r\n\r\nexport const SET_ITEM = 'SET_ITEM';\r\nexport const NEW_GOAL = 'NEW_GOAL';\r\nexport const NEW_SPECIFIC_GOAL = 'NEW_SPECIFIC_GOAL';\r\nexport const REMOVE_SPECIFIC_GOAL = 'REMOVE_SPECIFIC_GOAL';\r\nexport const DELETE_GOAL = 'DELETE_GOAL';\r\nexport const NEW_OCU_PRODUCT = 'NEW_OCU_PRODUCT';\r\nexport const DELETE_OCU_PRODUCT = 'DELETE_OCU_PRODUCT';\r\nexport const NEW_BUNDLE = 'NEW_BUNDLE';\r\nexport const DELETE_BUNDLE = 'DELETE_BUNDLE';\r\nexport const DISCARD = 'DISCARD';\r\nexport const UPDATE_OLD_OCU = 'UPDATE_OLD_OCU';\r\nexport const CampaignReducer = (default_language = 'english', default_currency = 'USD') => {\r\n    return (state, { type, path, value, goal_index }) => {\r\n        switch (type) {\r\n          case DISCARD:\r\n            return { ...value };\r\n          case SET_ITEM: {\r\n            // Ensure intermediate structures exist\r\n            const pathParts = path.split(\".\");\r\n            let updatedState = state;\r\n            let current = updatedState;\r\n\r\n            // Traverse the path and ensure non-existing keys are initialized\r\n            for (let i = 0; i < pathParts.length - 1; i++) {\r\n              const key = pathParts[i];\r\n              if (current[key] === undefined || current[key] === null) {\r\n                current[key] = {}; // Ensure it's an object\r\n              }\r\n              current = current[key];\r\n            }\r\n\r\n            // Finally, apply setIn\r\n            return setIn(updatedState, pathParts, value);\r\n          }\r\n          case NEW_BUNDLE:\r\n            return setIn(\r\n              state,\r\n              [\"settings\", \"bundles\", \"list\"],\r\n              state.settings.bundles.list.concat([\r\n                {\r\n                  id: uuid(),\r\n                  type: \"percentage\",\r\n                  reward: \"\",\r\n                  quantity: \"\",\r\n                },\r\n              ])\r\n            );\r\n          case DELETE_BUNDLE:\r\n            return setIn(\r\n              state,\r\n              [\"settings\", \"bundles\", \"list\"],\r\n              state.settings.bundles.list.filter(({ id }) => id !== value)\r\n            );\r\n          case NEW_GOAL:\r\n            return setIn(\r\n              state,\r\n              [\"settings\", \"add_to_unlock\", \"goals\"],\r\n              state.settings.add_to_unlock.goals.concat(\r\n                DEFAULT_GOAL(\r\n                  state.settings.add_to_unlock,\r\n                  default_language,\r\n                  default_currency\r\n                )\r\n              )\r\n            );\r\n          case NEW_SPECIFIC_GOAL:\r\n            return setIn(\r\n              state,\r\n              [\"settings\", \"add_to_unlock\", \"goals\", value, \"specific_goals\"],\r\n              state.settings.add_to_unlock.goals[value].specific_goals.concat({\r\n                currency: \"\",\r\n                goal: \"\",\r\n              })\r\n            );\r\n          case REMOVE_SPECIFIC_GOAL:\r\n            return setIn(\r\n              state,\r\n              [\r\n                \"settings\",\r\n                \"add_to_unlock\",\r\n                \"goals\",\r\n                goal_index,\r\n                \"specific_goals\",\r\n              ],\r\n              state.settings.add_to_unlock.goals[\r\n                goal_index\r\n              ].specific_goals.filter((_, index) => index !== value)\r\n            );\r\n          case DELETE_GOAL:\r\n            let newGoals = state.settings.add_to_unlock.goals.slice(0);\r\n            newGoals.splice(value, 1);\r\n            return setIn(\r\n              state,\r\n              [\"settings\", \"add_to_unlock\", \"goals\"],\r\n              newGoals\r\n            );\r\n          case NEW_OCU_PRODUCT:\r\n            return setIn(\r\n              state,\r\n              [\"settings\", \"multi_one_check_upsell\", \"products\"],\r\n              state.settings.multi_one_check_upsell.products.concat([\r\n                default_one_check_upsell(default_language),\r\n              ])\r\n            );\r\n          case DELETE_OCU_PRODUCT:\r\n            let newProducts =\r\n              state.settings.multi_one_check_upsell.products.slice(0);\r\n            newProducts.splice(value, 1);\r\n            return setIn(\r\n              state,\r\n              [\"settings\", \"multi_one_check_upsell\", \"products\"],\r\n              newProducts\r\n            );\r\n          case UPDATE_OLD_OCU:\r\n            const new_state = setIn(\r\n              state,\r\n              [\"settings\", \"multi_one_check_upsell\"],\r\n              value\r\n            );\r\n            return setIn(\r\n              new_state,\r\n              [\"settings\", \"one_check_up_sell\"],\r\n              undefined\r\n            );\r\n          default:\r\n            return state;\r\n        }\r\n    };\r\n};\r\n","import React, { Component, useContext } from 'react';\r\nimport { FormGroup, FormControl, Input } from 'components';\r\nimport { SortableContainer } from 'react-sortable-hoc';\r\nimport arrayMove from 'array-move';\r\nimport RandomText from './RandomText';\r\nimport OrderNote from './OrderNote';\r\nimport CheckoutButton from './CheckoutButton';\r\nimport Module from './Module';\r\nimport { RESET_EXTRA_MODULE, SET_ITEM } from 'reducers/CampaignReducer';\r\nimport { NEW_CAMPAIGN_INITIAL_STATE } from 'lib/globals';\r\nimport ShopContext from 'context/ShopContext';\r\n\r\nconst ExtraModules = ({ context, label = 'Extra Modules', hasCheckout = true }) => {\r\n\tconst {\r\n\t\tstate: {\r\n\t\t\tsettings: {\r\n\t\t\t\ttheme: { primary, secondary, background },\r\n\t\t\t\tfont,\r\n\t\t\t\tmodules: { checkout_button },\r\n\t\t\t},\r\n\t\t},\r\n\t} = useContext(ShopContext);\r\n\tconst modules = context.state.settings.modules;\r\n\tconst onSortEnd = ({ oldIndex, newIndex }) => {\r\n\t\tconst newOrder = arrayMove(modules.order, oldIndex, newIndex);\r\n\t\t// this.props.edit('modules', 'order', newOrder);\r\n\t\tcontext.dispatch({\r\n\t\t\ttype: SET_ITEM,\r\n\t\t\tpath: 'settings.modules.order',\r\n\t\t\tvalue: newOrder,\r\n\t\t});\r\n\t};\r\n\tconst resetModule = (module) => {\r\n\t\tcontext.dispatch({\r\n\t\t\ttype: SET_ITEM,\r\n\t\t\tpath: `settings.modules.${module}`,\r\n\t\t\tvalue: NEW_CAMPAIGN_INITIAL_STATE({\r\n\t\t\t\tcheckout_button,\r\n\t\t\t\tprimary,\r\n\t\t\t\tsecondary,\r\n\t\t\t\tfont_color: font.color,\r\n\t\t\t\tbackground,\r\n\t\t\t}).settings.modules[module],\r\n\t\t});\r\n\t};\r\n\treturn <ModulesList useDragHandle {...{ context, modules, onSortEnd, resetModule, label, hasCheckout }} />;\r\n};\r\n\r\nconst ModulesList = SortableContainer(({ context, resetModule, modules, label, hasCheckout }) => {\r\n\treturn (\r\n\t\t<FormGroup label={label} info=\"Move around and edit extra modules. More modules coming soon...\">\r\n\t\t\t<div>\r\n\t\t\t\t{modules.order.map((key, index) => {\r\n\t\t\t\t\tswitch (key) {\r\n\t\t\t\t\t\tcase 'random_text':\r\n\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t<RandomText\r\n\t\t\t\t\t\t\t\t\tkey={key}\r\n\t\t\t\t\t\t\t\t\t{...{\r\n\t\t\t\t\t\t\t\t\t\tcontext,\r\n\t\t\t\t\t\t\t\t\t\tindex,\r\n\t\t\t\t\t\t\t\t\t\tmoduleKey: key,\r\n\t\t\t\t\t\t\t\t\t\tmodule: modules[key],\r\n\t\t\t\t\t\t\t\t\t\tresetModule,\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\tcase 'checkout_button':\r\n\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t<Module\r\n\t\t\t\t\t\t\t\t\tname=\"Checkout Section\"\r\n\t\t\t\t\t\t\t\t\tkey={key}\r\n\t\t\t\t\t\t\t\t\t{...{\r\n\t\t\t\t\t\t\t\t\t\tcontext,\r\n\t\t\t\t\t\t\t\t\t\tindex,\r\n\t\t\t\t\t\t\t\t\t\tswitchButton: false,\r\n\t\t\t\t\t\t\t\t\t\tmoduleKey: key,\r\n\t\t\t\t\t\t\t\t\t\tmodule: modules[key],\r\n\t\t\t\t\t\t\t\t\t\tresetModule,\r\n\t\t\t\t\t\t\t\t\t\thasCheckout,\r\n\t\t\t\t\t\t\t\t\t\treset: false,\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\tcase 'order_note':\r\n\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t<OrderNote\r\n\t\t\t\t\t\t\t\t\tname=\"Order Note Section\"\r\n\t\t\t\t\t\t\t\t\tkey={key}\r\n\t\t\t\t\t\t\t\t\t{...{\r\n\t\t\t\t\t\t\t\t\t\tcontext,\r\n\t\t\t\t\t\t\t\t\t\tindex,\r\n\t\t\t\t\t\t\t\t\t\tswitchButton: true,\r\n\t\t\t\t\t\t\t\t\t\tmoduleKey: key,\r\n\t\t\t\t\t\t\t\t\t\tmodule: modules[key],\r\n\t\t\t\t\t\t\t\t\t\tresetModule,\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\treturn null;\r\n\t\t\t\t\t}\r\n\t\t\t\t})}\r\n\t\t\t</div>\r\n\t\t</FormGroup>\r\n\t);\r\n});\r\n\r\nexport default ExtraModules;\r\n","import React, { useContext } from 'react';\r\nimport { COUNTRIES_LIST } from 'lib/countries';\r\n\r\nimport {\r\n    FormGroup,\r\n    FormControl,\r\n    Dropdown,\r\n    Alert,\r\n    ButtonSelect,\r\n    ShopifyResourcePicker,\r\n    Button\r\n} from 'components';\r\nimport { CAMPAIGN_TARGETS } from 'lib/globals';\r\nimport ShopContext from 'context/ShopContext';\r\nimport CampaignTarget from './CampaignTarget';\r\nconst GeoTargeting = ({ context }) => {\r\n    const { state: campaign, validationErrors, validate } = context;\r\n    const shopContext = useContext(ShopContext);\r\n\r\n    return (\r\n        <FormGroup\r\n            label=\"Targeting\"\r\n            info=\"Target specific products you would like to include/exclude for this campaign. (If no countries have been selected campaign will show to all users.\"\r\n        >\r\n            {campaign.settings.type === 'add_to_unlock' && <CampaignTarget context={context} />}\r\n            <FormControl\r\n                label=\"Target specific countries\"\r\n                withSwitch={[context, 'target.countries.include_active']}\r\n                info={\r\n                    campaign.target.countries.include_active\r\n                        ? 'Choose countries you would like to show your campaign too.'\r\n                        : ''\r\n                }\r\n            >\r\n                {campaign.target.countries.include_active &&\r\n                    <Dropdown\r\n                        disabled={!campaign.target.countries.include_active}\r\n                        options={COUNTRIES_LIST}\r\n                        isMulti={true}\r\n                        first\r\n                        BindToContext={[context, 'target.countries.include']}\r\n                    />}\r\n            </FormControl>\r\n            <FormControl\r\n                label=\"Exclude countries\"\r\n                withSwitch={[context, 'target.countries.exclude_active']}\r\n                info={\r\n                    campaign.target.countries.exclude_active\r\n                        ? 'Hide this campaign from these countries.'\r\n                        : ''\r\n                }\r\n            >\r\n                {campaign.target.countries.exclude_active &&\r\n                    <Dropdown\r\n                        disabled={!campaign.target.countries.exclude_active}\r\n                        options={COUNTRIES_LIST}\r\n                        isMulti={true}\r\n                        first\r\n                        BindToContext={[context, 'target.countries.exclude']}\r\n                    />}\r\n            </FormControl>\r\n        </FormGroup>\r\n    );\r\n};\r\n\r\nexport default GeoTargeting;\r\n","import { setIn, removeIn } from 'immutable';\r\n\r\nexport const SET_ITEM = 'SET_ITEM';\r\nexport const DELETE_ITEM = 'DELETE_ITEM';\r\nexport const SET_ALL = 'SET_ALL';\r\n\r\nexport const SetItemReducer = (state, { type, path, value }) => {\r\n\ttry {\r\n\t\tswitch (type) {\r\n\t\t\tcase SET_ITEM:\r\n\t\t\t\treturn setIn(state, path.split('.'), value);\r\n\t\t\tcase SET_ALL:\r\n\t\t\t\treturn value;\r\n\t\t\tcase DELETE_ITEM:\r\n\t\t\t\treturn removeIn(state, path.split('.'));\r\n\t\t\tdefault:\r\n\t\t\t\treturn state;\r\n\t\t}\r\n\t} catch (error) {\r\n\t\tconsole.log('Reducer error', { state, path, value });\r\n\t\treturn state;\r\n\t}\r\n};\r\n","import React from 'react';\r\nconst EmbeddedContext = React.createContext(null);\r\nexport const EmbeddedProvider = EmbeddedContext.Provider;\r\nexport default EmbeddedContext;\r\n","import React, { useState, useEffect } from 'react';\r\nimport { Button, TagInput } from 'components';\r\nimport { ResourcePicker } from '@shopify/app-bridge-react';\r\nimport { RESOURCE_PICKER_DEFAULT_REDUCERS } from 'lib/globals';\r\nimport useBindToContext from 'hooks/useBindToContext';\r\n\r\nexport function InitialSelectionIds(resourcesArray, pattern) {\r\n    return resourcesArray.map(({ id }) => ({ id: pattern.replace('{id}', id) }));\r\n}\r\nconst ShopifyResourcePicker = ({\r\n    value,\r\n    type = 'Product',\r\n    children,\r\n    onChange,\r\n    reducer = false,\r\n    allowMultiple = true,\r\n    BindToContext = null,\r\n    showVariants = false,\r\n    initialSelectionIds,\r\n    showHidden = false,\r\n    verifySelection,\r\n    initialQuery\r\n}) => {\r\n    const [isOpened, setIsOpen] = useState(false);\r\n    const [BindedValue, BindedOnChange, _, onRender] = useBindToContext(\r\n        BindToContext,\r\n        value,\r\n        onChange\r\n    );\r\n    const idFilterRegex = /gid:\\/\\/shopify\\/.*\\/([0-9]+)?.*/;\r\n    const formatIds = (value) => {\r\n        if (Array.isArray(value)) {\r\n            return value.map((item) => {\r\n                return formatIds(item);\r\n            });\r\n        } else if (value === Object(value)) {\r\n            let outputObject = {};\r\n            Object.keys(value).forEach((key) => {\r\n                outputObject[key] = formatIds(value[key]);\r\n            });\r\n            return outputObject;\r\n        } else if (typeof value === 'string') {\r\n            const match = value.match(idFilterRegex);\r\n            return match ? match[1] : value;\r\n        }\r\n        return value;\r\n    };\r\n\r\n    const onSelection = ({ selection }) => {\r\n        setIsOpen(false);\r\n        if (verifySelection && !verifySelection(selection)) {\r\n            return;\r\n        }\r\n        let value = formatIds(selection.map(reducer || RESOURCE_PICKER_DEFAULT_REDUCERS[type]));\r\n        if (!allowMultiple) return BindedOnChange(value[0]);\r\n        let mergedItems = BindedValue.concat(value || []);\r\n        let uniqueItems = mergedItems.reduce((acc, obj) => {\r\n            const foundIndex = acc.findIndex((item) => item.id === obj.id);\r\n            if (foundIndex === -1) {\r\n                acc.push(obj);\r\n            }\r\n            return acc;\r\n        }, []);\r\n        BindedOnChange(uniqueItems);\r\n    };\r\n\r\n    const removeItem = (id) => {\r\n        BindedOnChange(allowMultiple ? BindedValue.filter((item) => item.id != id) : null);\r\n    };\r\n\r\n    const tags = allowMultiple\r\n        ? BindedValue\r\n        : BindedValue && !!Object.keys(BindedValue).length\r\n        ? [BindedValue]\r\n        : [];\r\n    \r\n    return (\r\n        <>\r\n            <div>\r\n                {/* pass trigger function to children */}\r\n                {children(() => setIsOpen(true))}\r\n                {!!tags.length && <TagInput tags={tags} close={(id) => removeItem(id)} />}\r\n            </div>\r\n            <ResourcePicker\r\n                showVariants={showVariants}\r\n                showHidden={showHidden}\r\n                resourceType={type}\r\n                initialSelectionIds={initialSelectionIds}\r\n                open={isOpened}\r\n                allowMultiple={allowMultiple}\r\n                onSelection={onSelection}\r\n                onCancel={() => setIsOpen(false)}\r\n                initialQuery={initialQuery}\r\n            />\r\n        </>\r\n    );\r\n};\r\n\r\nexport default ShopifyResourcePicker;\r\n","import React from 'react';\r\n\r\nconst SidebarContext = React.createContext(null);\r\nexport const SidebarProvider = SidebarContext.Provider;\r\nexport default SidebarContext;\r\n","import React, { useContext, useEffect, useState } from \"react\";\r\nimport { Icon } from \"components\";\r\nimport styles from \"styles/sidebar.module.scss\";\r\nimport {\r\n  faChartLine,\r\n  faBullhorn,\r\n  faCog,\r\n  faCartPlus,\r\n  faQuestionCircle,\r\n  faThumbtack,\r\n  faLightbulb,\r\n  faUsers,\r\n  faHandshake,\r\n} from \"@fortawesome/fontawesome-pro-solid\";\r\nimport { Reviewing } from \"components\";\r\nimport UserContext from \"context/UserContext\";\r\nimport ShopContext from \"context/ShopContext\";\r\nimport useReactRouter from \"use-react-router\";\r\nimport SidebarContext from \"context/SidebarContext\";\r\nimport {\r\n  USER_SHIELD_ICON,\r\n  SACK_DOLLAR_ICON,\r\n  COMMENT_DOLLAR,\r\n} from \"lib/globals\";\r\nimport Logo from \"svgs/logo_v2.png\";\r\nimport { LIST_SHOP_CAMPAIGNS } from \"Queries\";\r\nimport { useQuery } from \"@apollo/react-hooks\";\r\nimport classNames from \"lib/classNames\";\r\n\r\nconst SideBar = () => {\r\n  const { collapsed, setCollapsed } = useContext(SidebarContext);\r\n  const { history, location } = useReactRouter();\r\n\r\n  const [campaignActive, setCampaignActive] = useState(false);\r\n  const [dataLoading, setDataLoading] = useState(true);\r\n  const [designActive, setDesignActive] = useState(false);\r\n  const [completedTasks, setCompletedTasks] = useState(0);\r\n\r\n  const user = useContext(UserContext);\r\n  const shopContext = useContext(ShopContext);\r\n  const {\r\n    AppLocalStorage,\r\n    setup: { cartActive, cartLoading },\r\n  } = shopContext;\r\n  let { data } = useQuery(LIST_SHOP_CAMPAIGNS, {\r\n    variables: {\r\n      userId: user.attributes.sub,\r\n    },\r\n    fetchPolicy: \"network-only\",\r\n  });\r\n\r\n  useEffect(() => {\r\n    const app_first_turn_on = AppLocalStorage.getItem(\"first_cart_turn_on\");\r\n    setDesignActive(app_first_turn_on);\r\n  }, [AppLocalStorage]);\r\n\r\n  useEffect(() => {\r\n    if (data) {\r\n      if (data.campaigns?.list?.length) {\r\n        setCampaignActive(\r\n          !!data.campaigns.list.find((campaign) => campaign.active)\r\n        );\r\n      }\r\n      setDataLoading(false);\r\n    }\r\n  }, [data]);\r\n\r\n  useEffect(() => {\r\n    if (!dataLoading && !cartLoading) {\r\n      setCompletedTasks(+cartActive + +designActive + +campaignActive);\r\n    }\r\n  }, [cartActive, designActive, campaignActive, cartLoading, dataLoading]);\r\n\r\n  return (\r\n    <div className={styles.sidebar} collapsed={collapsed ? 1 : 0}>\r\n      <div className={styles.logo}>\r\n        <img src={Logo} />\r\n      </div>\r\n      <div className={styles.menu}>\r\n        <div\r\n          className={styles.menu_setup}\r\n          data-active={location.pathname === \"/\"}\r\n          data-completed={completedTasks === 3}\r\n          pathto={\"/\"}\r\n          onClick={() => {\r\n            if (location.pathname !== \"/\") history.push(\"/\" + location.search);\r\n          }}\r\n        >\r\n          <div\r\n            className={`${styles.div} ${classNames(\r\n              \"flex flex-col items-start\"\r\n            )}`}\r\n          >\r\n            <span className={styles.text}>Getting started</span>\r\n            <div\r\n              className={classNames(\r\n                \"flex flex-row items-center justify-start w-full\"\r\n              )}\r\n              style={{\r\n                marginTop: 3,\r\n              }}\r\n            >\r\n              <div\r\n                className={classNames(\r\n                  \"flex w-3/4 h-3 rounded-md relative overflow-hidden mix-blend-darken bg-white items-start\"\r\n                )}\r\n                style={{\r\n                  background: \"rgba(93, 120, 240, 0.2)\",\r\n                }}\r\n              >\r\n                <div\r\n                  className={classNames(\r\n                    \"block transition-width absolute inset-0 duration-500 ease-out z-10 items-start rounded-md\"\r\n                  )}\r\n                  style={{\r\n                    background: completedTasks < 3 ? \"#5D78F0\" : \"#48bb78\",\r\n                    width: `${\r\n                      completedTasks ? (completedTasks * 100) / 3 : 10\r\n                    }%`,\r\n                  }}\r\n                ></div>\r\n              </div>\r\n              <span\r\n                className={`${styles.counter} ${classNames(\r\n                  \"text-gray-600 font-bold ml-2\"\r\n                )}`}\r\n              >\r\n                {completedTasks}/3\r\n              </span>\r\n            </div>\r\n          </div>\r\n        </div>\r\n        <MenuItem\r\n          pathto=\"/dashboard\"\r\n          activeRoutes={[\"/dashboard\"]}\r\n          icon={faChartLine}\r\n        >\r\n          Dashboard\r\n        </MenuItem>\r\n        <MenuItem pathto=\"/settings\" activeRoutes={[\"/settings\"]} icon={faCog}>\r\n          Cart Setup\r\n        </MenuItem>\r\n        <MenuItem\r\n          pathto=\"/campaigns\"\r\n          activeRoutes={[\"/campaigns\"]}\r\n          icon={faBullhorn}\r\n        >\r\n          Upsell Campaigns\r\n        </MenuItem>\r\n        <MenuItem pathto=\"/sticky\" activeRoutes={[\"/sticky\"]} icon={faCartPlus}>\r\n          Sticky cart\r\n        </MenuItem>\r\n        <div className={styles.spacer}></div>\r\n        {data?.campaigns?.list?.length ? (\r\n          <MenuItem\r\n            onClick={() => {\r\n              window.open(\r\n                \"https://monsterapps.crisp.help/en/article/redeemly-cashback-loyalty-store-credit-special-offer-apooev/\"\r\n              );\r\n            }}\r\n            badge=\"NEW APP\"\r\n            newApp\r\n          >\r\n            CashBack Loyalty App\r\n            <br />\r\n            (BONUS FREE OFFER)\r\n          </MenuItem>\r\n        ) : (\r\n          <></>\r\n        )}\r\n        <MenuItem\r\n          pathto=\"/integrations\"\r\n          activeRoutes={[\"/integrations\"]}\r\n          icon={faHandshake}\r\n        >\r\n          Integrations\r\n        </MenuItem>\r\n        <MenuItem\r\n          icon={COMMENT_DOLLAR}\r\n          onClick={() => {\r\n            window.open(\r\n              \"https://platform.shoffi.app/signup/affiliate?app=Il_7GsC6qzi\"\r\n            );\r\n          }}\r\n        >\r\n          Referral Program\r\n        </MenuItem>\r\n        {/* <MenuItem onClick={() => {window.open(\"https://monsterapps.shop/partner-program/\")}}>\r\n\t\t\t\t\tAffiliate Signup\r\n\t\t\t\t</MenuItem> */}\r\n        <MenuItem\r\n          icon={faUsers}\r\n          onClick={() => {\r\n            window.open(\"https://www.facebook.com/groups/ecom.monsterapps\");\r\n          }}\r\n        >\r\n          Facebook Group\r\n        </MenuItem>\r\n        <MenuItem\r\n          icon={faLightbulb}\r\n          onClick={() => {\r\n            window.open(\r\n              \"https://monsterupsells.feedbear.com/boards/feature-requests\"\r\n            );\r\n          }}\r\n        >\r\n          Feature Suggestion\r\n        </MenuItem>\r\n        <MenuItem pathto=\"/plan\" icon={SACK_DOLLAR_ICON}>\r\n          Your Plan\r\n        </MenuItem>\r\n        <MenuItem\r\n          icon={faQuestionCircle}\r\n          onClick={() => {\r\n            window.open(\r\n              \"https://monsterapps.crisp.help/en/category/monsterupsells-48n04z\"\r\n            );\r\n          }}\r\n        >\r\n          Faq\r\n        </MenuItem>\r\n        <MenuItem\r\n          icon={USER_SHIELD_ICON}\r\n          onClick={() => {\r\n            window.open(\r\n              \"https://monsterapps.crisp.help/en/article/privacy-policy-monsterupsells-76n8in\"\r\n            );\r\n          }}\r\n        >\r\n          Privacy Policy\r\n        </MenuItem>\r\n      </div>\r\n      <div className={styles.attach} active={collapsed ? 0 : 1}>\r\n        <Icon\r\n          icon={faThumbtack}\r\n          size=\"xs\"\r\n          onClick={() => setCollapsed(!collapsed)}\r\n        />\r\n      </div>\r\n      {/* <div className={styles.widget}>\r\n        <Reviewing {...{ user, shopContext }} />\r\n      </div> */}\r\n    </div>\r\n  );\r\n};\r\n\r\nconst MenuItem = ({\r\n  pathto,\r\n  activeRoutes = false,\r\n  children,\r\n  icon,\r\n  onClick,\r\n  badge,\r\n  newApp,\r\n}) => {\r\n  const { history, location } = useReactRouter();\r\n  const active = (activeRoutes || [pathto]).includes(location.pathname);\r\n  return (\r\n    <div\r\n      className={`${styles.menu_item}${newApp ? \" \" + styles.new_app : \"\"}`}\r\n      data-active={active}\r\n      pathto={pathto}\r\n      onClick={() => {\r\n        if (onClick) onClick();\r\n        else if (!active) history.push(pathto + location.search);\r\n      }}\r\n    >\r\n      <div>\r\n        {icon && <Icon icon={icon} size=\"lg\" />}\r\n        <span className={styles.text}>{children}</span>\r\n      </div>\r\n      {badge && <SideBarBadge>{badge}</SideBarBadge>}\r\n    </div>\r\n  );\r\n};\r\n\r\nexport const SideBarBadge = ({ children, style, className = \"\" }) => (\r\n  <div className={`${styles.badge} ${className}`} style={style}>\r\n    {children}\r\n  </div>\r\n);\r\n\r\nexport default SideBar;\r\n","import { Bindings, FormControl, RichEditor, ShopifyResourcePicker, Button, Alert, Icon, CustomText, ColorPicker, ButtonSelect, ImagePicker } from \"components\"\r\nimport PreviewContext from \"context/PreviewContext\";\r\nimport classNames from \"lib/classNames\";\r\nimport { GIFT_WITH_PURCHASE_PRODUCT_REDUCER } from \"lib/globals\";\r\nimport React, { Fragment, useContext, useState } from \"react\"\r\nimport { Toast } from '@shopify/app-bridge/actions';\r\nimport EmbeddedContext from \"context/EmbeddedContext\";\r\nimport imagePlaceholder from \"assets/image_placeholder.png\"\r\nimport { InitialSelectionIds } from \"components/ShopifyResourcePicker\";\r\nimport { SideBarBadge } from \"components/Sidebar\";\r\n\r\nexport default function Gift ({ context, index, validationErrors }) {\r\n    const [current, setCurrentState] = useState(\"before\")\r\n    const { setGiftCurrentPreview } = useContext(PreviewContext)\r\n    const { AppBridgeToast } = useContext(EmbeddedContext);\r\n    const setCurrent = state => {\r\n        setGiftCurrentPreview(state)\r\n        setCurrentState(state)\r\n    }\r\n    const { goals } = context.state.settings.add_to_unlock\r\n    const currentGoal = goals[index].gift\r\n    const isRandom = currentGoal.multi_gift_select === \"random\"\r\n    const previousGift = index > 0 ? goals[index - 1].reward_type === \"gift\" : false\r\n    const hasMultipleGiftFeature = !!currentGoal.products //((currentGoal.products || []).concat([currentGoal.product]).filter(Boolean)).length > 1\r\n    const hasMoreThanOneGift = currentGoal.products?.length > 1\r\n    return (\r\n        <Fragment>\r\n            {!hasMultipleGiftFeature && <FormControl\r\n                label=\"Select free gift\"\r\n                error={\r\n                    validationErrors[`settings.add_to_unlock.goals.${index}.gift.product`]\r\n                }\r\n                info=\"Select the gift you would like to offer when goal is unlocked.\"\r\n                isSingleCol\r\n            >\r\n                <ShopifyResourcePicker\r\n                    allowMultiple={false}\r\n                    initialQuery=\"product_type:free_gift\"\r\n                    reducer={GIFT_WITH_PURCHASE_PRODUCT_REDUCER}\r\n                    verifySelection={([{ productType }]) => {\r\n                        const isGift = productType.toLowerCase() === \"free_gift\"\r\n                        if (!isGift) {\r\n                            AppBridgeToast({\r\n                                message: 'Select products with type: free_gift',\r\n                                isError: true\r\n                            }).open()\r\n                        }\r\n                        return isGift\r\n                    }}\r\n                    BindToContext={[context, `settings.add_to_unlock.goals.${index}.gift.product`]}\r\n                >\r\n                    {(trigger) => (\r\n                        <Button\r\n                            className={classNames(\"w-full mt-3\")}\r\n                            text=\"Select a free product\"\r\n                            type={\r\n                                validationErrors[\r\n                                    `settings.add_to_unlock.goals.${index}.gift.product`\r\n                                ] &&\r\n                                    !!validationErrors[\r\n                                    `settings.add_to_unlock.goals.${index}.gift.product`\r\n                                    ][0]\r\n                                    ? \"danger\"\r\n                                    : \"primary\"\r\n                            }\r\n                            onClick={trigger}\r\n                        />\r\n                    )}\r\n                </ShopifyResourcePicker>\r\n            </FormControl>}\r\n            {\r\n                hasMultipleGiftFeature && <FormControl\r\n                    label=\"Select free gifts\"\r\n                    error={\r\n                        validationErrors[`settings.add_to_unlock.goals.${index}.gift.products`]\r\n                    }\r\n                    info=\"Select the gifts you would like to offer when goal is unlocked. You can select multiple products however only 1 will be rewarded to customer.\"\r\n                    isSingleCol\r\n                >\r\n                    <ShopifyResourcePicker\r\n                        allowMultiple={hasMultipleGiftFeature}\r\n                        initialSelectionIds={hasMultipleGiftFeature ? InitialSelectionIds(currentGoal.products, \"gid://shopify/Product/{id}\") : undefined}\r\n                        initialQuery=\"product_type:free_gift\"\r\n                        reducer={GIFT_WITH_PURCHASE_PRODUCT_REDUCER}\r\n                        verifySelection={(selection) => {\r\n                            const hasNoGiftProduct = selection.find(({ productType }) => productType.toLowerCase() !== \"free_gift\")\r\n                            if (hasNoGiftProduct) {\r\n                                AppBridgeToast({\r\n                                    message: 'Select products with type: free_gift',\r\n                                    isError: true\r\n                                }).open()\r\n                                return false\r\n                            }\r\n                            return true\r\n                        }}\r\n                        BindToContext={[context, `settings.add_to_unlock.goals.${index}.gift.products`]}\r\n                    >\r\n                        {(trigger) => (\r\n                            <Button\r\n                                className={classNames(\"w-full mt-3\")}\r\n                                text=\"Select Free Products\"\r\n                                type={\r\n                                    validationErrors[\r\n                                        `settings.add_to_unlock.goals.${index}.gift.product`\r\n                                    ] &&\r\n                                        !!validationErrors[\r\n                                        `settings.add_to_unlock.goals.${index}.gift.product`\r\n                                        ][0]\r\n                                        ? \"danger\"\r\n                                        : \"primary\"\r\n                                }\r\n                                onClick={trigger}\r\n                            />\r\n                        )}\r\n                    </ShopifyResourcePicker>\r\n                </FormControl>\r\n            }\r\n            <Alert\r\n                {...{\r\n                    type: 'warning',\r\n                    borderPosition: 'border-l-4',\r\n                    iconSize: '2x',\r\n                    title: 'Free Gift Products Must Be Created Within Shopify With Product Type: free_gift.',\r\n                    icon: 'exclamation-circle',\r\n                    customStyle: {\r\n                        icon: 'text-orange-400 self-start mt-1',\r\n                    }\r\n                }}\r\n                className=\"my-6 z-5\"\r\n            >\r\n                <p>This campaign will not discount products for you. It will add a $0 product you created within shopify. We suggest hiding $0 products from your site search.</p>\r\n                <div className={classNames('flex space-x-3 pt-3 justify-start')}>\r\n                    <a\r\n                        className={classNames(\r\n                            'text-gray-800 text-sm flex items-center hover:text-orange-500 focus:outline-none focus:outline-shadow font-semibold py-1 px-2 uppercase border bg-orange-200 bg-opacity-50 border-orange-300 rounded'\r\n                        )}\r\n                        href=\"https://monsterapps.crisp.help/en/article/gift-with-purchase-setup-qt2dwa/\"\r\n                        target=\"_blank\"\r\n                    >\r\n                        <Icon icon=\"info-circle\" className=\"mr-2\" size=\"1x\" />\r\n                        <span className={classNames('text-xs')}>Learn to make free gift product</span>\r\n                    </a>\r\n                </div>\r\n            </Alert>\r\n            {\r\n                previousGift &&\r\n                <FormControl error={validationErrors[`settings.add_to_unlock.goals.${index}.gift.previous_gift`]}>\r\n                    <ButtonSelect\r\n                        options={[\r\n                            {\r\n                                value: \"keep\",\r\n                                label: \"Keep previous gift\",\r\n                                info: \"Previous unlocked gifts will stay in the cart\"\r\n                            },\r\n                            {\r\n                                value: \"remove\",\r\n                                label: \"Remove previous gift\",\r\n                                info: \"Previously unlocked gifts will be replaced by this gift\",\r\n                                beta: true\r\n                            }\r\n                        ]}\r\n                        BindToContext={[context, `settings.add_to_unlock.goals.${index}.gift.previous_gift`]} />\r\n                </FormControl>\r\n            }\r\n            {\r\n                hasMoreThanOneGift &&\r\n                <FormControl error={validationErrors[`settings.add_to_unlock.goals.${index}.gift.multi_gift_select`]}>\r\n                    <ButtonSelect\r\n                        options={[\r\n                            {\r\n                                value: \"select\",\r\n                                label: \"Customer choose gift\",\r\n                                info: \"Give a choice of free products when cart goals are met\"\r\n                            },\r\n                            {\r\n                                value: \"random\",\r\n                                label: \"Select random gift\",\r\n                                info: \"Reward random gift from select products when cart goals are met\",\r\n                                beta: true\r\n                            }\r\n                        ]}\r\n                        BindToContext={[context, `settings.add_to_unlock.goals.${index}.gift.multi_gift_select`]} />\r\n                </FormControl>\r\n            }\r\n            <FormControl\r\n                label=\"text before hitting the goal\"\r\n                info=\"We recommend using emoji's to draw attention\"\r\n                // error={validationErrors['settings.add_to_unlock.free_shipping.before']}\r\n                isSingleCol\r\n            >\r\n                <RichEditor\r\n                    imageEmoji={true}\r\n                    BindToContext={[\r\n                        context,\r\n                        `settings.add_to_unlock.goals.${index}.gift.before`\r\n                    ]}\r\n                    placeholder=\"add {{amount}} to unlock free shipping !\"\r\n                // hasError={!!validationErrors['settings.add_to_unlock.free_shipping.before']}\r\n                />\r\n                <Bindings only={[\"goal\", \"amount_left\"]} />\r\n            </FormControl>\r\n            <FormControl\r\n                label=\"text after hitting the goal\"\r\n                info=\"We recommend using emoji's to draw attention. (You can leave this blank.)\"\r\n                // error={validationErrors['settings.add_to_unlock.discount.after']}\r\n                isSingleCol\r\n            >\r\n                <RichEditor\r\n                    imageEmoji={true}\r\n                    BindToContext={[\r\n                        context,\r\n                        `settings.add_to_unlock.goals.${index}.gift.after`\r\n                    ]}\r\n                    placeholder=\"you've unlocked a Free Gift\"\r\n                />\r\n            </FormControl>\r\n            <FormControl\r\n                label=\"Unlock Widget\"\r\n                isSingleCol\r\n                withSwitch={[context, `settings.add_to_unlock.goals.${index}.gift.widget.active`]}\r\n            />\r\n            <div className={classNames({\r\n                \"hidden\": !context.state.settings.add_to_unlock.goals[index].gift.widget.active\r\n            })}>\r\n                <CustomText\r\n                    context={context}\r\n                    label=\"Compare at price\"\r\n                    path={`settings.add_to_unlock.goals.${index}.gift.widget.compare_at_price`}\r\n                    hasColor={true}\r\n                    isSingleCol\r\n                    bindings={{\r\n                        custom: [\"compare_at_price\", \"compare at price\"]\r\n                    }}\r\n                    withSwitch={[context, `settings.add_to_unlock.goals.${index}.gift.widget.compare_at_price_active`]}\r\n                />\r\n\r\n                <FormControl label=\"Design gift widget\" info=\"select gift will appear when gift uses variants or customer needs to choose from multiple gifts\">\r\n                    <div>\r\n                        <div className={classNames(\"flex-center pt-5\")}>\r\n                            <button className={classNames(\"text-sm focus:outline-none py-2 px-3 font-semibold border-2 rounded-l border-r-none border-blue-500\", {\r\n                                \"bg-blue-500 text-white\": current === \"before\",\r\n                                \"bg-white text-blue-500\": current !== \"before\",\r\n                            })} onClick={() => setCurrent(\"before\")}>Before hitting the goal</button>\r\n                            {hasMultipleGiftFeature && !isRandom &&\r\n                                <button className={classNames(\"relative text-sm focus:outline-none py-2 px-3 font-semibold border-t-2 border-b-2 border-blue-500\", {\r\n                                    \"bg-blue-500 text-white\": current === \"selecting\",\r\n                                    \"bg-white text-blue-500\": current !== \"selecting\",\r\n                                })} onClick={() => setCurrent(\"selecting\")}>Selecting gift\r\n                                    <span className={classNames('absolute flex-center bg-orange-500 tracking-wider py-1 px-2 rounded-lg text-white text-xxs font-bold')} style={{ top: -14, right: 5 }}>Beta</span>\r\n                                </button>\r\n                            }\r\n                            <button className={classNames(\"text-sm focus:outline-none py-2 px-3 font-semibold border-2 rounded-r border-l-none border-blue-500\", {\r\n                                \"bg-blue-500 text-white\": current === \"after\",\r\n                                \"bg-white text-blue-500\": current !== \"after\",\r\n                            })} onClick={() => setCurrent(\"after\")}>After hitting the goal</button>\r\n                        </div>\r\n                        <div className={classNames(\"py-5\")}>\r\n                            <div className={classNames({ \"hidden\": current !== \"before\" })}>\r\n                                {hasMoreThanOneGift &&\r\n                                    <FormControl\r\n                                        label=\"Gift image\"\r\n                                        isSingleCol\r\n                                    >\r\n                                        <ImagePicker\r\n                                            simplified\r\n                                            value={context.state.settings.add_to_unlock.goals[index].gift.widget.before.multi_gift_image}\r\n                                            onChange={(value) => {\r\n                                                context.setItem(`settings.add_to_unlock.goals.${index}.gift.widget.before.multi_gift_image`, value)\r\n                                            }}\r\n                                        />\r\n                                    </FormControl>\r\n                                }\r\n                                <FormControl\r\n                                    label=\"header\"\r\n                                    info=\"We recommend using emoji's to draw attention\"\r\n                                    isSingleCol\r\n                                >\r\n                                    <RichEditor\r\n                                        imageEmoji={true}\r\n                                        BindToContext={[\r\n                                            context,\r\n                                            `settings.add_to_unlock.goals.${index}.gift.widget.before.header`\r\n                                        ]}\r\n                                        placeholder=\"Spend {{goal}} Get A Free Gift\"\r\n                                    />\r\n                                    <Bindings only={[\"goal\", \"amount_left\"]} />\r\n                                </FormControl>\r\n                                <FormControl\r\n                                    label=\"Product name\" isSingleCol>\r\n                                    <RichEditor\r\n                                        imageEmoji={true}\r\n                                        BindToContext={[\r\n                                            context,\r\n                                            `settings.add_to_unlock.goals.${index}.gift.widget.before.product_name`\r\n                                        ]}\r\n                                        placeholder=\"Free Gift: {{product_name}}\"\r\n                                    // hasError={!!validationErrors['settings.add_to_unlock.free_shipping.before']}\r\n                                    />\r\n                                    {!hasMoreThanOneGift && <Bindings custom={[\"product_name\", \"product name\"]} />}\r\n                                </FormControl>\r\n                                <CustomText\r\n                                    context={context}\r\n                                    label=\"Offer Highlight\"\r\n                                    path={`settings.add_to_unlock.goals.${index}.gift.widget.before.offer_highlight`}\r\n                                    hasColor\r\n                                />\r\n                                <FormControl\r\n                                    label=\"Design\"\r\n                                >\r\n                                    <ColorPicker\r\n                                        text=\"Background\"\r\n                                        BindToContext={[context, `settings.add_to_unlock.goals.${index}.gift.widget.before.background`]}\r\n                                    />\r\n                                    <ColorPicker\r\n                                        text=\"Outline\"\r\n                                        BindToContext={[context, `settings.add_to_unlock.goals.${index}.gift.widget.before.outline`]}\r\n                                    />\r\n                                </FormControl>\r\n                                {/* {!hasMultipleGiftProducts && <Fragment>\r\n                                <CustomText\r\n                                    context={context}\r\n                                    label=\"Variant picker options\"\r\n                                    info=\"This will appear if free product has variants. (color, sizing ect.)\"\r\n                                    path={`settings.add_to_unlock.goals.${index}.gift.widget.before.variant_selector_text`}\r\n                                    hasColor\r\n                                />\r\n                                <FormControl>\r\n                                    <ColorPicker\r\n                                        text=\"Button background\"\r\n                                        BindToContext={[context, `settings.add_to_unlock.goals.${index}.gift.widget.before.variant_button_background`]}\r\n                                    />\r\n                                </FormControl>\r\n                            </Fragment>} */}\r\n                            </div>\r\n                            {hasMultipleGiftFeature && <div className={classNames({ \"hidden\": current !== \"selecting\" })}>\r\n                                <FormControl\r\n                                    label=\"header\"\r\n                                    info=\"We recommend using emoji's to draw attention\"\r\n                                    isSingleCol\r\n                                >\r\n                                    <RichEditor\r\n                                        imageEmoji={true}\r\n                                        BindToContext={[\r\n                                            context,\r\n                                            `settings.add_to_unlock.goals.${index}.gift.widget.selecting.header`\r\n                                        ]}\r\n                                        placeholder=\"Spend {{goal}} Get A Free Gift\"\r\n                                    />\r\n                                    <Bindings only={[\"goal\", \"amount_left\"]} />\r\n                                </FormControl>\r\n                                <FormControl\r\n                                    label=\"Product name\" isSingleCol>\r\n                                    <RichEditor\r\n                                        imageEmoji={true}\r\n                                        BindToContext={[\r\n                                            context,\r\n                                            `settings.add_to_unlock.goals.${index}.gift.widget.selecting.product_name`\r\n                                        ]}\r\n                                        placeholder=\"Free Gift: {{product_name}}\"\r\n                                    // hasError={!!validationErrors['settings.add_to_unlock.free_shipping.selecting']}\r\n                                    />\r\n                                    <Bindings custom={[\"product_name\", \"product name\"]} />\r\n                                </FormControl>\r\n                                <CustomText\r\n                                    context={context}\r\n                                    label=\"Offer Highlight\"\r\n                                    path={`settings.add_to_unlock.goals.${index}.gift.widget.selecting.offer_highlight`}\r\n                                    hasColor\r\n                                />\r\n                                <CustomText\r\n                                    context={context}\r\n                                    label=\"Add to cart button\"\r\n                                    path={`settings.add_to_unlock.goals.${index}.gift.widget.selecting.variant_selector_text`}\r\n                                    hasColor\r\n                                    beta\r\n                                />\r\n                                <FormControl\r\n                                    label=\"Design\"\r\n                                >\r\n                                    <ColorPicker\r\n                                        text=\"Background\"\r\n                                        BindToContext={[context, `settings.add_to_unlock.goals.${index}.gift.widget.selecting.background`]}\r\n                                    />\r\n                                    <ColorPicker\r\n                                        text=\"Outline\"\r\n                                        BindToContext={[context, `settings.add_to_unlock.goals.${index}.gift.widget.selecting.outline`]}\r\n                                    />\r\n                                    <ColorPicker\r\n                                        text=\"Add to cart button background\"\r\n                                        BindToContext={[context, `settings.add_to_unlock.goals.${index}.gift.widget.selecting.variant_button_background`]}\r\n                                    />\r\n                                </FormControl>\r\n                            </div>}\r\n                            <div className={classNames({ \"hidden\": current !== \"after\" })}>\r\n                                <FormControl\r\n                                    label=\"header\"\r\n                                    info=\"We recommend using emoji's to draw attention\"\r\n                                    // error={validationErrors['settings.add_to_unlock.free_shipping.before']}\r\n                                    isSingleCol\r\n                                >\r\n                                    <RichEditor\r\n                                        imageEmoji={true}\r\n                                        BindToContext={[\r\n                                            context,\r\n                                            `settings.add_to_unlock.goals.${index}.gift.widget.after.header`\r\n                                        ]}\r\n                                        placeholder=\"Spend {{goal}} Get A Free Gift\"\r\n                                    // hasError={!!validationErrors['settings.add_to_unlock.free_shipping.before']}\r\n                                    />\r\n                                </FormControl>\r\n                                <FormControl\r\n                                    label=\"Product name\" isSingleCol>\r\n                                    <RichEditor\r\n                                        imageEmoji={true}\r\n                                        BindToContext={[\r\n                                            context,\r\n                                            `settings.add_to_unlock.goals.${index}.gift.widget.after.product_name`\r\n                                        ]}\r\n                                        placeholder=\"Free Gift: {{product_name}}\"\r\n                                    // hasError={!!validationErrors['settings.add_to_unlock.free_shipping.before']}\r\n                                    />\r\n                                    <Bindings custom={[\"product_name\", \"product name\"]} />\r\n                                </FormControl>\r\n                                <CustomText\r\n                                    context={context}\r\n                                    label=\"Offer Highlight\"\r\n                                    path={`settings.add_to_unlock.goals.${index}.gift.widget.after.offer_highlight`}\r\n                                    hasColor={true}\r\n                                />\r\n                                <FormControl\r\n                                    label=\"Design\"\r\n                                >\r\n                                    <ColorPicker\r\n                                        text=\"Background\"\r\n                                        BindToContext={[context, `settings.add_to_unlock.goals.${index}.gift.widget.after.background`]}\r\n                                    />\r\n                                    <ColorPicker\r\n                                        text=\"Outline\"\r\n                                        BindToContext={[context, `settings.add_to_unlock.goals.${index}.gift.widget.after.outline`]}\r\n                                    />\r\n                                    {/* <ColorPicker\r\n                                text=\"Tick\"\r\n                                BindToContext={[context, `settings.add_to_unlock.goals.${index}.gift.widget.after.tick`]}\r\n                            /> */}\r\n                                </FormControl>\r\n                                <CustomText\r\n                                    context={context}\r\n                                    beta\r\n                                    label=\"Change to other gift\"\r\n                                    path={`settings.add_to_unlock.goals.${index}.gift.widget.after.variant_change_text`}\r\n                                    hasColor={true}\r\n                                />\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </FormControl>\r\n                {/* <FormControl label=\"Show inventory amount left\" info=\"When inventory is zero reward will be hidden\" withSwitch={[context, `settings.add_to_unlock.goals.${index}.gift.inventory_quantity.active`]}>\r\n                    <RichEditor\r\n                        imageEmoji={true}\r\n                        BindToContext={[\r\n                            context,\r\n                            `settings.add_to_unlock.goals.${index}.gift.inventory_quantity.text`\r\n                        ]}\r\n                        placeholder=\"Only {{inventory_quantity}} left\"\r\n                    />\r\n                </FormControl> */}\r\n            </div>\r\n        </Fragment >\r\n    )\r\n}\r\n\r\n","import { Bindings, FormControl, Input, RichEditor } from \"components\"\r\nimport { DISCOUNT_TYPES } from \"lib/globals\"\r\nimport React, { Fragment } from \"react\"\r\n\r\nexport default function Discount ({ context, index, currency, validationErrors, campaign, styles }) {\r\n    return (\r\n        <Fragment>\r\n            <FormControl\r\n                label=\"Discount\"\r\n                className={styles.input}\r\n                error={\r\n                    validationErrors[\r\n                    `settings.add_to_unlock.goals.${index}.discount.reward`\r\n                    ]\r\n                }\r\n            >\r\n                <Input\r\n                    type=\"number\"\r\n                    BindToContext={[\r\n                        context,\r\n                        `settings.add_to_unlock.goals.${index}.discount.reward`\r\n                    ]}\r\n                    min=\"0\"\r\n                    max={\r\n                        campaign.settings.add_to_unlock.goals[index].discount.type ===\r\n                            \"percentage\"\r\n                            ? 100\r\n                            : undefined\r\n                    }\r\n                    withDropdown={{\r\n                        BindToContext: [\r\n                            context,\r\n                            `settings.add_to_unlock.goals.${index}.discount.type`\r\n                        ],\r\n                        options: DISCOUNT_TYPES(currency)\r\n                    }}\r\n                />\r\n            </FormControl>\r\n            <FormControl\r\n                label=\"text before hitting the goal\"\r\n                info=\"We recommend using emoji's to draw attention\"\r\n                // error={validationErrors['settings.add_to_unlock.discount.before']}\r\n                isSingleCol\r\n            >\r\n                <RichEditor\r\n                    imageEmoji={true}\r\n                    BindToContext={[\r\n                        context,\r\n                        `settings.add_to_unlock.goals.${index}.discount.before`\r\n                    ]}\r\n                    placeholder=\"add {{amount}} to unlock {{reward}} off\"\r\n                // hasError={!!validationErrors['settings.add_to_unlock.discount.before']}\r\n                />\r\n                <Bindings />\r\n            </FormControl>\r\n            <FormControl\r\n                label=\"text after hitting the goal\"\r\n                info=\"We recommend using emoji's to draw attention. (You can leave this blank.)\"\r\n                // error={validationErrors['settings.add_to_unlock.discount.after']}\r\n                isSingleCol\r\n            >\r\n                <RichEditor\r\n                    imageEmoji={true}\r\n                    // onFocus={() => setShowATUAfterText(true)}\r\n                    // onBlur={() => setShowATUAfterText(false)}\r\n                    // hasError={!!validationErrors['settings.add_to_unlock.discount.after']}\r\n                    // BindToContext={[context, 'settings.add_to_unlock.discount.after']}\r\n                    BindToContext={[\r\n                        context,\r\n                        `settings.add_to_unlock.goals.${index}.discount.after`\r\n                    ]}\r\n                    placeholder=\"you've unlocked {{reward}} off\"\r\n                />\r\n                <Bindings />\r\n            </FormControl>\r\n        </Fragment>\r\n    )\r\n}","import { API } from 'aws-amplify';\r\nimport Axios from 'axios';\r\nimport { CustomText, FormControl } from 'components';\r\nimport classNames from 'lib/classNames';\r\nimport { set } from 'lodash';\r\nimport React, { useEffect, useState, Fragment } from 'react';\r\n\r\nexport default function GoalImage({ context, goal,show_badges, setBadgeType, setBadgeImage, index }) {\r\n    const { reward_type } = goal;\r\n    const id = `goal-badge-${index}`;\r\n    const [previewImage, setPreviewImage] = useState(null);\r\n    const [uploadedImage, setUploadedImage] = useState(goal.badge?.image || null);\r\n    const [hasPreview, setHasPreview] = useState(false);\r\n    const [isUploading, setIsUploading] = useState(false);\r\n    async function uploadImage(e) {\r\n        const file = e.target.files[0];\r\n        if(!file) return;\r\n        setIsUploading(true);\r\n        const reader = new FileReader();\r\n        reader.onload = async () => {\r\n            try {\r\n                setPreviewImage(reader.result);\r\n                setUploadedImage(reader.result);\r\n                const attachment = reader.result;\r\n                const fileName = file.name;\r\n                const response = await API.post('API_GATEWAY_NEW', '/uploadImage', {\r\n                    body: { fileName, attachment }\r\n                });\r\n                setBadgeImage(response.public_url);\r\n                setIsUploading(false);\r\n            } catch (error) {\r\n                setPreviewImage(null);\r\n                setUploadedImage(null);\r\n                setIsUploading(false);\r\n            }\r\n        };\r\n        reader.readAsDataURL(file);\r\n    }\r\n\r\n    useEffect(\r\n        () => {\r\n            setHasPreview(previewImage || uploadedImage);\r\n        },\r\n        [previewImage, uploadedImage]\r\n    );\r\n\r\n    return (\r\n        <Fragment>\r\n            <FormControl\r\n                className={!show_badges && 'hidden'}\r\n                // withSwitch={[context, `settings.add_to_unlock.goals.${index}.badge.enabled`]}\r\n                label=\"badge\"\r\n                info=\"Add add an eye catching image to display for the reward. Selected option will automatically adopt primary bar colors\"\r\n            >\r\n                <div\r\n                    className={classNames('flex space-x-2 items-center')}\r\n                >\r\n                    <Circle goal={goal} setBadgeType={setBadgeType} index={1}>\r\n                        <label\r\n                            htmlFor={id}\r\n                            className={classNames(\r\n                                'flex flex-col items-center justify-center w-full h-full cursor-pointer bg-cover bg-center rounded-full'\r\n                            )}\r\n                            style={{\r\n                                backgroundImage: hasPreview\r\n                                    ? `url(${uploadedImage || previewImage})`\r\n                                    : undefined,\r\n                                opacity: isUploading ? 0.5 : 1\r\n                            }}\r\n                        >\r\n                            <span\r\n                                style={{ fontSize: '10px' }}\r\n                                className={classNames('mb-1', {\r\n                                    hidden: hasPreview || isUploading\r\n                                })}\r\n                            >\r\n                                Upload Image\r\n                            </span>\r\n                            <svg\r\n                                width=\"14\"\r\n                                className={classNames({\r\n                                    hidden: hasPreview || isUploading\r\n                                })}\r\n                                height=\"17\"\r\n                                viewBox=\"0 0 14 17\"\r\n                                fill=\"none\"\r\n                                xmlns=\"http://www.w3.org/2000/svg\"\r\n                            >\r\n                                <path\r\n                                    d=\"M0 17H14V15H0V17ZM0 7H4V13H10V7H14L7 0L0 7Z\"\r\n                                    fill=\"currentColor\"\r\n                                />\r\n                            </svg>\r\n                            <svg\r\n                                aria-hidden=\"true\"\r\n                                focusable=\"false\"\r\n                                data-icon=\"spinner-third\"\r\n                                role=\"img\"\r\n                                xmlns=\"http://www.w3.org/2000/svg\"\r\n                                viewBox=\"0 0 512 512\"\r\n                                className={classNames('w-5 h-5 fa-spin', { hidden: !isUploading })}\r\n                            >\r\n                                <path\r\n                                    fill=\"currentColor\"\r\n                                    d=\"M456.433 371.72l-27.79-16.045c-7.192-4.152-10.052-13.136-6.487-20.636 25.82-54.328 23.566-118.602-6.768-171.03-30.265-52.529-84.802-86.621-144.76-91.424C262.35 71.922 256 64.953 256 56.649V24.56c0-9.31 7.916-16.609 17.204-15.96 81.795 5.717 156.412 51.902 197.611 123.408 41.301 71.385 43.99 159.096 8.042 232.792-4.082 8.369-14.361 11.575-22.424 6.92z\"\r\n                                />\r\n                            </svg>\r\n                        </label>\r\n                        <input\r\n                            type=\"file\"\r\n                            id={id}\r\n                            className={classNames('hidden')}\r\n                            onChange={uploadImage}\r\n                        />\r\n                    </Circle>\r\n                    <Option goal={goal} setBadgeType={setBadgeType} />\r\n                </div>\r\n            </FormControl>\r\n            <CustomText\r\n                className={!show_badges && 'hidden'}\r\n                withSwitch={[context, `settings.add_to_unlock.goals.${index}.badge.show_text`]}\r\n                context={context}\r\n                label=\"Goal text\"\r\n                path={`settings.add_to_unlock.goals.${index}.badge.text`}\r\n                text={goal.badge?.text}\r\n                hasColor={true}\r\n            />\r\n        </Fragment>\r\n    );\r\n}\r\n\r\nfunction Circle({ children, className, goal, setBadgeType, index }) {\r\n    const selected = goal.badge?.type === index;\r\n\r\n    return (\r\n        <button\r\n            style={{ fontSize: '11px', color: !selected && '#A3AEBE' }}\r\n            onClick={() => setBadgeType(index)}\r\n            className={classNames(\r\n                'cursor-pointer w-16 h-16 outline-none focus:outline-none flex flex-col items-center justify-center rounded-full text-sm font-semibold text-center',\r\n                className,\r\n                selected ? 'border-2' : 'border',\r\n                { 'border-blue-500 text-blue-500': selected }\r\n            )}\r\n        >\r\n            {children}\r\n        </button>\r\n    );\r\n}\r\n\r\nfunction Option({ goal, setBadgeType }) {\r\n    const { reward_type } = goal;\r\n    switch (reward_type) {\r\n        case 'discount':\r\n            return (\r\n                <Circle goal={goal} setBadgeType={setBadgeType} index={2}>\r\n                    <span>..%</span>\r\n                    <span>Off</span>\r\n                </Circle>\r\n            );\r\n        case 'free_shipping':\r\n            return (\r\n                <Fragment>\r\n                    <Circle goal={goal} setBadgeType={setBadgeType} index={2}>\r\n                        <span style={{ fontSize: '8px' }} className={classNames('mb-1')}>\r\n                            Free shipping\r\n                        </span>\r\n                        <svg\r\n                            width=\"22\"\r\n                            height=\"14.67\"\r\n                            viewBox=\"0 0 33 22\"\r\n                            fill=\"none\"\r\n                            xmlns=\"http://www.w3.org/2000/svg\"\r\n                        >\r\n                            <path\r\n                                d=\"M3.82105 13.0625L2.77895 11H10.0737L9.24 8.9375H2.43158L1.38947 6.875H12.2274L11.3937 4.8125H1.19495L0 2.75H5.21053C5.21053 2.02065 5.50331 1.32118 6.02446 0.805456C6.54561 0.289731 7.25245 0 7.98947 0H24.6632V5.5H28.8316L33 11V17.875H30.2211C30.2211 18.969 29.7819 20.0182 29.0002 20.7918C28.2184 21.5654 27.1582 22 26.0526 22C24.9471 22 23.8868 21.5654 23.1051 20.7918C22.3234 20.0182 21.8842 18.969 21.8842 17.875H16.3263C16.3263 18.969 15.8871 20.0182 15.1054 20.7918C14.3237 21.5654 13.2634 22 12.1579 22C11.0524 22 9.99211 21.5654 9.21038 20.7918C8.42865 20.0182 7.98947 18.969 7.98947 17.875H5.21053V13.0625H3.82105ZM26.0526 19.9375C26.6054 19.9375 27.1355 19.7202 27.5264 19.3334C27.9173 18.9466 28.1368 18.422 28.1368 17.875C28.1368 17.328 27.9173 16.8034 27.5264 16.4166C27.1355 16.0298 26.6054 15.8125 26.0526 15.8125C25.4999 15.8125 24.9697 16.0298 24.5789 16.4166C24.188 16.8034 23.9684 17.328 23.9684 17.875C23.9684 18.422 24.188 18.9466 24.5789 19.3334C24.9697 19.7202 25.4999 19.9375 26.0526 19.9375ZM28.1368 7.5625H24.6632V11H30.8602L28.1368 7.5625ZM12.1579 19.9375C12.7107 19.9375 13.2408 19.7202 13.6317 19.3334C14.0225 18.9466 14.2421 18.422 14.2421 17.875C14.2421 17.328 14.0225 16.8034 13.6317 16.4166C13.2408 16.0298 12.7107 15.8125 12.1579 15.8125C11.6051 15.8125 11.075 16.0298 10.6841 16.4166C10.2933 16.8034 10.0737 17.328 10.0737 17.875C10.0737 18.422 10.2933 18.9466 10.6841 19.3334C11.075 19.7202 11.6051 19.9375 12.1579 19.9375Z\"\r\n                                fill=\"currentColor\"\r\n                            />\r\n                        </svg>\r\n                    </Circle>\r\n                    <Circle goal={goal} setBadgeType={setBadgeType} index={3}>\r\n                        <svg\r\n                            width=\"33\"\r\n                            height=\"22\"\r\n                            viewBox=\"0 0 33 22\"\r\n                            fill=\"none\"\r\n                            xmlns=\"http://www.w3.org/2000/svg\"\r\n                        >\r\n                            <path\r\n                                d=\"M3.82105 13.0625L2.77895 11H10.0737L9.24 8.9375H2.43158L1.38947 6.875H12.2274L11.3937 4.8125H1.19495L0 2.75H5.21053C5.21053 2.02065 5.50331 1.32118 6.02446 0.805456C6.54561 0.289731 7.25245 0 7.98947 0H24.6632V5.5H28.8316L33 11V17.875H30.2211C30.2211 18.969 29.7819 20.0182 29.0002 20.7918C28.2184 21.5654 27.1582 22 26.0526 22C24.9471 22 23.8868 21.5654 23.1051 20.7918C22.3234 20.0182 21.8842 18.969 21.8842 17.875H16.3263C16.3263 18.969 15.8871 20.0182 15.1054 20.7918C14.3237 21.5654 13.2634 22 12.1579 22C11.0524 22 9.99211 21.5654 9.21038 20.7918C8.42865 20.0182 7.98947 18.969 7.98947 17.875H5.21053V13.0625H3.82105ZM26.0526 19.9375C26.6054 19.9375 27.1355 19.7202 27.5264 19.3334C27.9173 18.9466 28.1368 18.422 28.1368 17.875C28.1368 17.328 27.9173 16.8034 27.5264 16.4166C27.1355 16.0298 26.6054 15.8125 26.0526 15.8125C25.4999 15.8125 24.9697 16.0298 24.5789 16.4166C24.188 16.8034 23.9684 17.328 23.9684 17.875C23.9684 18.422 24.188 18.9466 24.5789 19.3334C24.9697 19.7202 25.4999 19.9375 26.0526 19.9375ZM28.1368 7.5625H24.6632V11H30.8602L28.1368 7.5625ZM12.1579 19.9375C12.7107 19.9375 13.2408 19.7202 13.6317 19.3334C14.0225 18.9466 14.2421 18.422 14.2421 17.875C14.2421 17.328 14.0225 16.8034 13.6317 16.4166C13.2408 16.0298 12.7107 15.8125 12.1579 15.8125C11.6051 15.8125 11.075 16.0298 10.6841 16.4166C10.2933 16.8034 10.0737 17.328 10.0737 17.875C10.0737 18.422 10.2933 18.9466 10.6841 19.3334C11.075 19.7202 11.6051 19.9375 12.1579 19.9375Z\"\r\n                                fill=\"currentColor\"\r\n                            />\r\n                        </svg>\r\n                    </Circle>\r\n                </Fragment>\r\n            );\r\n            case 'manual':\r\n            return (\r\n                <Fragment>\r\n                    <Circle goal={goal} setBadgeType={setBadgeType} index={2}>\r\n                        <span style={{ fontSize: '8px' }} className={classNames('mb-1')}>\r\n                            Express shipping\r\n                        </span>\r\n                        <svg\r\n                            width=\"22\"\r\n                            height=\"14.67\"\r\n                            viewBox=\"0 0 33 22\"\r\n                            fill=\"none\"\r\n                            xmlns=\"http://www.w3.org/2000/svg\"\r\n                        >\r\n                            <path\r\n                                d=\"M3.82105 13.0625L2.77895 11H10.0737L9.24 8.9375H2.43158L1.38947 6.875H12.2274L11.3937 4.8125H1.19495L0 2.75H5.21053C5.21053 2.02065 5.50331 1.32118 6.02446 0.805456C6.54561 0.289731 7.25245 0 7.98947 0H24.6632V5.5H28.8316L33 11V17.875H30.2211C30.2211 18.969 29.7819 20.0182 29.0002 20.7918C28.2184 21.5654 27.1582 22 26.0526 22C24.9471 22 23.8868 21.5654 23.1051 20.7918C22.3234 20.0182 21.8842 18.969 21.8842 17.875H16.3263C16.3263 18.969 15.8871 20.0182 15.1054 20.7918C14.3237 21.5654 13.2634 22 12.1579 22C11.0524 22 9.99211 21.5654 9.21038 20.7918C8.42865 20.0182 7.98947 18.969 7.98947 17.875H5.21053V13.0625H3.82105ZM26.0526 19.9375C26.6054 19.9375 27.1355 19.7202 27.5264 19.3334C27.9173 18.9466 28.1368 18.422 28.1368 17.875C28.1368 17.328 27.9173 16.8034 27.5264 16.4166C27.1355 16.0298 26.6054 15.8125 26.0526 15.8125C25.4999 15.8125 24.9697 16.0298 24.5789 16.4166C24.188 16.8034 23.9684 17.328 23.9684 17.875C23.9684 18.422 24.188 18.9466 24.5789 19.3334C24.9697 19.7202 25.4999 19.9375 26.0526 19.9375ZM28.1368 7.5625H24.6632V11H30.8602L28.1368 7.5625ZM12.1579 19.9375C12.7107 19.9375 13.2408 19.7202 13.6317 19.3334C14.0225 18.9466 14.2421 18.422 14.2421 17.875C14.2421 17.328 14.0225 16.8034 13.6317 16.4166C13.2408 16.0298 12.7107 15.8125 12.1579 15.8125C11.6051 15.8125 11.075 16.0298 10.6841 16.4166C10.2933 16.8034 10.0737 17.328 10.0737 17.875C10.0737 18.422 10.2933 18.9466 10.6841 19.3334C11.075 19.7202 11.6051 19.9375 12.1579 19.9375Z\"\r\n                                fill=\"currentColor\"\r\n                            />\r\n                        </svg>\r\n                    </Circle>\r\n                    <Circle goal={goal} setBadgeType={setBadgeType} index={3}>\r\n                        <svg\r\n                            width=\"33\"\r\n                            height=\"22\"\r\n                            viewBox=\"0 0 33 22\"\r\n                            fill=\"none\"\r\n                            xmlns=\"http://www.w3.org/2000/svg\"\r\n                        >\r\n                            <path\r\n                                d=\"M3.82105 13.0625L2.77895 11H10.0737L9.24 8.9375H2.43158L1.38947 6.875H12.2274L11.3937 4.8125H1.19495L0 2.75H5.21053C5.21053 2.02065 5.50331 1.32118 6.02446 0.805456C6.54561 0.289731 7.25245 0 7.98947 0H24.6632V5.5H28.8316L33 11V17.875H30.2211C30.2211 18.969 29.7819 20.0182 29.0002 20.7918C28.2184 21.5654 27.1582 22 26.0526 22C24.9471 22 23.8868 21.5654 23.1051 20.7918C22.3234 20.0182 21.8842 18.969 21.8842 17.875H16.3263C16.3263 18.969 15.8871 20.0182 15.1054 20.7918C14.3237 21.5654 13.2634 22 12.1579 22C11.0524 22 9.99211 21.5654 9.21038 20.7918C8.42865 20.0182 7.98947 18.969 7.98947 17.875H5.21053V13.0625H3.82105ZM26.0526 19.9375C26.6054 19.9375 27.1355 19.7202 27.5264 19.3334C27.9173 18.9466 28.1368 18.422 28.1368 17.875C28.1368 17.328 27.9173 16.8034 27.5264 16.4166C27.1355 16.0298 26.6054 15.8125 26.0526 15.8125C25.4999 15.8125 24.9697 16.0298 24.5789 16.4166C24.188 16.8034 23.9684 17.328 23.9684 17.875C23.9684 18.422 24.188 18.9466 24.5789 19.3334C24.9697 19.7202 25.4999 19.9375 26.0526 19.9375ZM28.1368 7.5625H24.6632V11H30.8602L28.1368 7.5625ZM12.1579 19.9375C12.7107 19.9375 13.2408 19.7202 13.6317 19.3334C14.0225 18.9466 14.2421 18.422 14.2421 17.875C14.2421 17.328 14.0225 16.8034 13.6317 16.4166C13.2408 16.0298 12.7107 15.8125 12.1579 15.8125C11.6051 15.8125 11.075 16.0298 10.6841 16.4166C10.2933 16.8034 10.0737 17.328 10.0737 17.875C10.0737 18.422 10.2933 18.9466 10.6841 19.3334C11.075 19.7202 11.6051 19.9375 12.1579 19.9375Z\"\r\n                                fill=\"currentColor\"\r\n                            />\r\n                        </svg>\r\n                    </Circle>\r\n                </Fragment>\r\n            );\r\n        case 'gift':\r\n            return (\r\n                <Fragment>\r\n                    <Circle goal={goal} setBadgeType={setBadgeType} index={2}>\r\n                        <span style={{ fontSize: '9px' }} className={classNames('mb-1')}>\r\n                            Free Gift\r\n                        </span>\r\n                        <svg\r\n                            xmlns=\"http://www.w3.org/2000/svg\"\r\n                            fill=\"none\"\r\n                            viewBox=\"0 0 24 24\"\r\n                            strokeWidth={1.5}\r\n                            stroke=\"currentColor\"\r\n                            className={classNames('w-4 h-4')}\r\n                        >\r\n                            <path\r\n                                strokeLinecap=\"round\"\r\n                                strokeLinejoin=\"round\"\r\n                                d=\"M21 11.25v8.25a1.5 1.5 0 01-1.5 1.5H5.25a1.5 1.5 0 01-1.5-1.5v-8.25M12 4.875A2.625 2.625 0 109.375 7.5H12m0-2.625V7.5m0-2.625A2.625 2.625 0 1114.625 7.5H12m0 0V21m-8.625-9.75h18c.621 0 1.125-.504 1.125-1.125v-1.5c0-.621-.504-1.125-1.125-1.125h-18c-.621 0-1.125.504-1.125 1.125v1.5c0 .621.504 1.125 1.125 1.125z\"\r\n                            />\r\n                        </svg>\r\n                    </Circle>\r\n                    <Circle goal={goal} setBadgeType={setBadgeType} index={3}>\r\n                        <svg\r\n                            xmlns=\"http://www.w3.org/2000/svg\"\r\n                            fill=\"none\"\r\n                            viewBox=\"0 0 24 24\"\r\n                            strokeWidth={1.5}\r\n                            stroke=\"currentColor\"\r\n                            className={classNames('w-6 h-6')}\r\n                        >\r\n                            <path\r\n                                strokeLinecap=\"round\"\r\n                                strokeLinejoin=\"round\"\r\n                                d=\"M21 11.25v8.25a1.5 1.5 0 01-1.5 1.5H5.25a1.5 1.5 0 01-1.5-1.5v-8.25M12 4.875A2.625 2.625 0 109.375 7.5H12m0-2.625V7.5m0-2.625A2.625 2.625 0 1114.625 7.5H12m0 0V21m-8.625-9.75h18c.621 0 1.125-.504 1.125-1.125v-1.5c0-.621-.504-1.125-1.125-1.125h-18c-.621 0-1.125.504-1.125 1.125v1.5c0 .621.504 1.125 1.125 1.125z\"\r\n                            />\r\n                        </svg>\r\n                    </Circle>\r\n                </Fragment>\r\n            );\r\n        default:\r\n            return null;\r\n    }\r\n}\r\n","import React, { Fragment, useContext, useState } from \"react\";\r\nimport {\r\n\tADD_TO_UNLOCK_REWARD_OPTIONS,\r\n\tADD_TO_UNLOCK_PRODUCTS_PICKER_REDUCER\r\n} from \"lib/globals\";\r\nimport {\r\n\tFormGroup,\r\n\tFormControl,\r\n\tDropdown,\r\n\tShopifyResourcePicker,\r\n\tButton,\r\n\tInput,\r\n\tButtonSelect,\r\n\tColorPicker,\r\n\tRichEditor,\r\n\tRange,\r\n\tCustomText,\r\n\tAlert,\r\n\tBindings,\r\n\tSwitch\r\n} from \"components\";\r\nimport styles from \"styles/campaign_settings_second_step.module.scss\";\r\nimport ShopContext from \"context/ShopContext\";\r\nimport PreviewContext from \"context/PreviewContext\";\r\nimport classNames from \"lib/classNames\";\r\nimport { sortByProp } from \"components/cart/Utils\";\r\nimport { SetItemReducer } from \"reducers/SetItemReducer\";\r\nimport { getIn } from \"immutable\";\r\nimport Gift from \"./atu_goals/Gift\";\r\nimport Discount from \"./atu_goals/Discount\";\r\nimport GoalImage from \"./atu_goals/GoalImage\";\r\nimport redeemlyLogo from \"assets/redeemly-logo.jpeg\";\r\nconst AddToUnlock = ({ context, validationErrors, setShowATUAfterText }) => {\r\n\tconst { state: campaign, setItem } = context;\r\n\tconst {\r\n\t\tsettings: { add_to_unlock },\r\n\t\ttarget\r\n\t} = campaign;\r\n\tconst { setEditingProductDetails } = useContext(PreviewContext);\r\n\tconst getError = (key, index) => getIn(validationErrors, [\"settings.add_to_unlock.goals\", index, key], false);\r\n\tconst {\r\n\t\tstate: {\r\n\t\t\tcurrency,\r\n\t\t\tenabled_presentment_currencies\r\n\t\t}\r\n\t} = useContext(ShopContext);\r\n\tconst [old_add_to_unlock, set_old_add_to_unlock] = useState(add_to_unlock);\r\n\t\r\n\treturn (\r\n\t\t<Fragment>\r\n\t\t\t<FormGroup\r\n\t\t\t\tlabel=\"Add To Unlock\"\r\n\t\t\t\tinfo={`Create spend goals that will unlock rewards.\r\n\t\t\t\tTip: If you don’t want to add a discount at least create a free shipping goal.\r\n\t\t\t\tNote: Discount do not stack on to of each other.\r\n\t\t\t\t<a href=\"https://monsterapps.crisp.help/en/article/add-to-unlock-frequently-bought-together-campaign-1x7xy1r/\" target=\"_blank\">(Click to learn more)</a>\r\n\t\t\t\t`}\r\n\t\t\t>\r\n\t\t\t\t<FormControl\r\n\t\t\t\t\tlabel=\"Enable\"\r\n\t\t\t\t\tclassName=\"mb-6\"\r\n\t\t\t\t\twithSwitch={[context, \"settings.add_to_unlock.isActive\"]}\r\n\t\t\t\t/>\r\n\t\t\t\t{add_to_unlock.isActive && (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t<FormControl error={validationErrors[\"settings.add_to_unlock.multi_goal_type\"]}>\r\n\t\t\t\t\t\t\t<ButtonSelect\r\n\t\t\t\t\t\t\t\toptions={[\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tvalue: \"amount\",\r\n\t\t\t\t\t\t\t\t\t\tlabel: \"$ Amount in Cart\",\r\n\t\t\t\t\t\t\t\t\t\t// icon: 'unlock',\r\n\t\t\t\t\t\t\t\t\t\tinfo: \"Unlock rewards depending on how much $ are in cart.\"\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tvalue: \"quantity\",\r\n\t\t\t\t\t\t\t\t\t\tlabel: \"Product Quantity\",\r\n\t\t\t\t\t\t\t\t\t\t// icon: BOX_CHECK_ICON,\r\n\t\t\t\t\t\t\t\t\t\tinfo: \"Unlock reward based on how many products are in the cart.\"\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t]}\r\n\t\t\t\t\t\t\t\tshowSeparator={false}\r\n\t\t\t\t\t\t\t\tBindToContext={[\r\n\t\t\t\t\t\t\t\t\tcontext,\r\n\t\t\t\t\t\t\t\t\t\"settings.add_to_unlock.multi_goal_type\",\r\n\t\t\t\t\t\t\t\t\t(newValue) => {\r\n\t\t\t\t\t\t\t\t\t\tfor (const index in add_to_unlock?.goals) {\r\n\t\t\t\t\t\t\t\t\t\t\tconst goal = newValue === \"quantity\" ? 2 + 2 * index : 40 + 20 * index;\r\n\t\t\t\t\t\t\t\t\t\t\tconst reward = 10 + 5 * index;\r\n\t\t\t\t\t\t\t\t\t\t\tconst hasSpecificGoals = add_to_unlock.goals[index].specific_goals || old_add_to_unlock.goals[index].specific_goals;\r\n\t\t\t\t\t\t\t\t\t\t\tconst goalPAth = hasSpecificGoals ? 'specific_goals.0.goal' : 'goal'\r\n\t\t\t\t\t\t\t\t\t\t\tif (newValue === \"quantity\") {\r\n\t\t\t\t\t\t\t\t\t\t\t\tsetItem(`settings.add_to_unlock.goals.${index}.goal`, goal);\r\n\t\t\t\t\t\t\t\t\t\t\t\tif (hasSpecificGoals) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tsetItem(`settings.add_to_unlock.goals.${index}.specific_goals`, undefined);\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t\t\tif (hasSpecificGoals) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tsetItem(`settings.add_to_unlock.goals.${index}.specific_goals`, hasSpecificGoals);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tsetItem(`settings.add_to_unlock.goals.${index}.goal`, undefined);\r\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tsetItem(`settings.add_to_unlock.goals.${index}.${goalPAth}`, goal);\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\tsetItem(`settings.add_to_unlock.goals.${index}.discount.reward`, reward);\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t]}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t</FormControl>\r\n\t\t\t\t\t\t<FormControl\r\n\t\t\t\t\t\t\tlabel=\"Show all locked goals\"\r\n\t\t\t\t\t\t\tclassName=\"mb-6\"\r\n\t\t\t\t\t\t\twithSwitch={[context, \"settings.add_to_unlock.show_all_locked_goals\"]}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t<div className={classNames('flex items-center mb-3', {\r\n\t\t\t\t\t\thidden: add_to_unlock?.goals?.filter(({badge}) => !badge).length !== 0\r\n\t\t\t\t\t})}>\r\n                    \t<label className={classNames('text-gray-600 block flex-1 flex-grow capitalize text-sm font-bold')}>Show badges</label>\r\n\t\t\t\t\t\t<Switch BindToContext={[context, \"settings.add_to_unlock.show_badges\"]} />\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t\t{/* mu-block mu-flex-1 mu-flex-grow mu-capitalize mu-text-sm mu-font-bold mu-text-gray-600  */}\r\n\t\t\t\t\t\t{add_to_unlock?.goals?.map((goal, index) => {\r\n\t\t\t\t\t\t\tconst isQuantityGoal = add_to_unlock.multi_goal_type === \"quantity\"\r\n\t\t\t\t\t\t\tconst added_currencies = goal.specific_goals?.map(({ currency }) => currency) || []\r\n\t\t\t\t\t\t\tconst all_currencies_are_selected = enabled_presentment_currencies.filter(currency => !added_currencies.includes(currency)).length === 0\r\n\t\t\t\t\t\t\tconsole.log(\"goal:\");\r\n\t\t\t\t\t\t\tconsole.log(goal);\r\n\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t<div key={`goal_${index}`} className={classNames(\"mb-5 p-4 rounded bg-white relative\")}>\r\n\t\t\t\t\t\t\t\t\t{add_to_unlock.goals.length > 1 && index !== 0 && (\r\n\t\t\t\t\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\t\t\t\t\tclassName={classNames(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\"absolute top-0 right-0 -translate-y-1/2 transform translate-x-1/2\"\r\n\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\ticon=\"times\"\r\n\t\t\t\t\t\t\t\t\t\t\ttype=\"circle-danger\"\r\n\t\t\t\t\t\t\t\t\t\t\tonClick={() => context.deleteGoal(index)}\r\n\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t<div className={classNames(\" font-bold text-gray-600 mb-3\")}>\r\n\t\t\t\t\t\t\t\t\t\t{`Reward ${index + 1}`}\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\r\n\r\n\t\t\t\t\t\t\t\t\t{(goal.goal || isQuantityGoal) && <FormControl\r\n\t\t\t\t\t\t\t\t\t\tlabel=\"spend goal\"\r\n\t\t\t\t\t\t\t\t\t\tinfo={\r\n\t\t\t\t\t\t\t\t\t\t\tisQuantityGoal\r\n\t\t\t\t\t\t\t\t\t\t\t\t? \"Choose how many products need to be added to the cart to unlock the reward.\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t: \"Choose what $ amount will need to be added to the cart to unlock the reward.\"\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\tclassName={styles.input}\r\n\t\t\t\t\t\t\t\t\t\terror={getError(\"goal\", index)}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t<Input\r\n\t\t\t\t\t\t\t\t\t\t\ttype=\"number\"\r\n\t\t\t\t\t\t\t\t\t\t\tBindToContext={[context, `settings.add_to_unlock.goals.${index}.goal`]}\r\n\t\t\t\t\t\t\t\t\t\t\tmin={index > 0 ? add_to_unlock.goals[index - 1].goal : 0}\r\n\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t</FormControl>}\r\n\t\t\t\t\t\t\t\t\t{goal.specific_goals && <FormControl label=\"spend goal\"\r\n\t\t\t\t\t\t\t\t\t\tisSingleCol\r\n\t\t\t\t\t\t\t\t\t\tinfo={!isQuantityGoal && \"Specify goals for multiple currencies. The goal on currencies that are not specified here will be the store default currency goal multiplied by the currency exchange rate determined by Shopify Markets.\"}\r\n\t\t\t\t\t\t\t\t\t\tFooter={!isQuantityGoal ? () => {\r\n\t\t\t\t\t\t\t\t\t\t\treturn <div className={classNames(\"flex justify-end p-2\")}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<Button beta type=\"info\" text=\"Specific currency goal\" disabled={all_currencies_are_selected} onClick={() => context.newSpecificGoal(index)} icon=\"plus\" />\r\n\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t} : undefined}>\r\n\t\t\t\t\t\t\t\t\t\t{!isQuantityGoal && goal.specific_goals?.map((specific_goal, specific_goal_index) => (\r\n\t\t\t\t\t\t\t\t\t\t\t<div className={classNames('flex relative bg-white rounded mb-4')} key={`specific_goal_${specific_goal.currency}`}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<FormControl\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tlabel=\"Currency\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName='flex-1 mr-2'\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tmarginBottom=\"mb-0\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t// error={!!getError('quantity')}\r\n\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Dropdown options={enabled_presentment_currencies.filter(currency => {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (specific_goal.main || currency === specific_goal.currency) return true\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn !added_currencies.includes(currency)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}).map(currency => ({ value: currency, label: currency }))} disabled={specific_goal.main} BindToContext={[context, `settings.add_to_unlock.goals.${index}.specific_goals.${specific_goal_index}.currency`]} />\r\n\t\t\t\t\t\t\t\t\t\t\t\t</FormControl>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<FormControl\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tlabel={`Goal in ${specific_goal.currency}`}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName='flex-1'\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tmarginBottom=\"mb-0\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\taction={!specific_goal.main && (() => context.removeSpecificGoal(index, specific_goal_index))}\r\n\t\t\t\t\t\t\t\t\t\t\t\t// error={!!getError('quantity')}\r\n\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Input\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"number\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tBindToContext={[context, `settings.add_to_unlock.goals.${index}.specific_goals.${specific_goal_index}.goal`]}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmin={index > 0 ? add_to_unlock.goals[index - 1].goal : 0}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t\t\t</FormControl>\r\n\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t\t\t\t\t{isQuantityGoal && <Input\r\n\t\t\t\t\t\t\t\t\t\t\ttype=\"number\"\r\n\t\t\t\t\t\t\t\t\t\t\tBindToContext={[context, `settings.add_to_unlock.goals.${index}.specific_goals.0.goal`]}\r\n\t\t\t\t\t\t\t\t\t\t/>\r\n\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t</FormControl>}\r\n\r\n\r\n\t\t\t\t\t\t\t\t\t<FormControl\r\n\t\t\t\t\t\t\t\t\t\tlabel=\"Show confetti on unlock\"\r\n\t\t\t\t\t\t\t\t\t\tinfo=\"This will display a celebration when unlock has been achieved.\"\r\n\t\t\t\t\t\t\t\t\t\thasError={\r\n\t\t\t\t\t\t\t\t\t\t\t!!validationErrors[`settings.add_to_unlock.goals.${index}.confetti`] ||\r\n\t\t\t\t\t\t\t\t\t\t\t!!validationErrors[`settings.add_to_unlock.goals.${index}.confetti_length`]\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t<Input\r\n\t\t\t\t\t\t\t\t\t\t\ttype=\"number\"\r\n\t\t\t\t\t\t\t\t\t\t\tmax={600}\r\n\t\t\t\t\t\t\t\t\t\t\tmin={200}\r\n\t\t\t\t\t\t\t\t\t\t\tplaceholder=\"Confetti count\"\r\n\t\t\t\t\t\t\t\t\t\t\tBindToContext={[\r\n\t\t\t\t\t\t\t\t\t\t\t\tcontext,\r\n\t\t\t\t\t\t\t\t\t\t\t\t`settings.add_to_unlock.goals.${index}.confetti_length`\r\n\t\t\t\t\t\t\t\t\t\t\t]}\r\n\t\t\t\t\t\t\t\t\t\t\twithSwitch={[context, `settings.add_to_unlock.goals.${index}.confetti`]}\r\n\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t</FormControl>\r\n\r\n\t\t\t\t\t\t\t\t\t<FormControl\r\n\t\t\t\t\t\t\t\t\t\tlabel=\"When goal is reached what will you give them?\"\r\n\t\t\t\t\t\t\t\t\t// error={validationErrors['settings.add_to_unlock.reward_type']}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t<ButtonSelect\r\n\t\t\t\t\t\t\t\t\t\t\toptions={ADD_TO_UNLOCK_REWARD_OPTIONS(add_to_unlock.goals, index)}\r\n\t\t\t\t\t\t\t\t\t\t\tkeyPrefix={`settings.add_to_unlock.goals.${index}.reward_type`}\r\n\t\t\t\t\t\t\t\t\t\t\tBindToContext={[\r\n\t\t\t\t\t\t\t\t\t\t\t\tcontext,\r\n\t\t\t\t\t\t\t\t\t\t\t\t`settings.add_to_unlock.goals.${index}.reward_type`,\r\n\t\t\t\t\t\t\t\t\t\t\t\t(newValue) => {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (newValue === \"free_shipping\") {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetItem(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t`settings.add_to_unlock.goals.${index}.goal_text.text`,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"Free Shipping\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t} else if (newValue === \"discount\") {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst { type, reward } = add_to_unlock.goals[index].discount;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst text =\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype === \"percentage\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? `${reward}% Off`\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: `${currency} ${reward} Off`;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetItem(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t`settings.add_to_unlock.goals.${index}.goal_text.text`,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttext\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\telse if (newValue === \"gift\") {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetItem(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t`settings.add_to_unlock.goals.${index}.goal_text.text`,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"Free Gift\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t]}\r\n\t\t\t\t\t\t\t\t\t\t\tfirst\r\n\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t</FormControl>\r\n\t\t\t\t\t\t\t\t\t{goal.reward_type === \"manual\" && (\r\n\t\t\t\t\t\t\t\t\t\t<div className={classNames(\"mt-4 mb-6\")}>\r\n\t\t\t\t\t\t\t\t\t\t\t<div className={classNames(\"flex items-start\")}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span className={classNames(\"font-medium text-sm\")}>Store credit / cashback is in partnership with Shopify App</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<img src={redeemlyLogo} style={{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\theight: 24,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t// width: 96\r\n\t\t\t\t\t\t\t\t\t\t\t\t}} className={classNames(\"ml-2\")} />\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span className={classNames(\"ml-2 flex-center bg-orange-500 tracking-wider py-1 px-2 rounded-lg text-white text-xxs font-bold\")}>Beta</span>\r\n\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t\t<a \r\n\t\t\t\t\t\t\t\t\t\t\thref=\"https://monsterapps.crisp.help/en/article/store-credits-monster-cart-redeemly-guide-1pott89/\" \r\n\t\t\t\t\t\t\t\t\t\t\ttarget=\"_blank\" \r\n\t\t\t\t\t\t\t\t\t\t\trel=\"noopener noreferrer\" \r\n\t\t\t\t\t\t\t\t\t\t\tclassName={classNames(\"text-blue-600 hover:text-blue-800 underline font-medium text-sm\")}\r\n\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\tLearn how to set this up here\r\n\t\t\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t<GoalImage goal={goal} index={index} \r\n\t\t\t\t\t\t\t\t\tshow_badges={!!goal.badge && add_to_unlock.show_badges}\r\n\t\t\t\t\t\t\t\t\tcontext={context}\r\n\t\t\t\t\t\t\t\t\tsetBadgeType={(selected) => setItem(`settings.add_to_unlock.goals.${index}.badge.type`, selected)} \r\n\t\t\t\t\t\t\t\t\tsetBadgeImage={(selected) => setItem(`settings.add_to_unlock.goals.${index}.badge.image`, selected)} \r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t<CustomText\r\n\t\t\t\t\t\t\t\t\t\tclassName={add_to_unlock.show_badges ? 'hidden': ''}\r\n\t\t\t\t\t\t\t\t\t\twithSwitch={[context, `settings.add_to_unlock.goals.${index}.show_goal_text`]}\r\n\t\t\t\t\t\t\t\t\t\tcontext={context}\r\n\t\t\t\t\t\t\t\t\t\tlabel=\"Goal text\"\r\n\t\t\t\t\t\t\t\t\t\tpath={`settings.add_to_unlock.goals.${index}.goal_text`}\r\n\t\t\t\t\t\t\t\t\t\ttext={add_to_unlock.goals[index].goal_text.text}\r\n\t\t\t\t\t\t\t\t\t\thasColor={true}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tgoal.reward_type === \"free_shipping\" && (\r\n\t\t\t\t\t\t\t\t\t\t\t<Fragment>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<FormControl\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tlabel=\"text before hitting the goal\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tinfo=\"We recommend using emoji's to draw attention\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t// error={validationErrors['settings.add_to_unlock.free_shipping.before']}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tisSingleCol\r\n\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<RichEditor\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\timageEmoji={true}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tBindToContext={[\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcontext,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t`settings.add_to_unlock.goals.${index}.free_shipping.before`\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t]}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tplaceholder=\"add {{amount}} to unlock free shipping !\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t// hasError={!!validationErrors['settings.add_to_unlock.free_shipping.before']}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Bindings only={[\"goal\", \"amount_left\"]} />\r\n\t\t\t\t\t\t\t\t\t\t\t\t</FormControl>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<FormControl\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tlabel=\"text after hitting the goal\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tinfo=\"We recommend using emoji's to draw attention. (You can leave this blank.)\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t// error={validationErrors['settings.add_to_unlock.discount.after']}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tisSingleCol\r\n\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<RichEditor\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\timageEmoji={true}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t// onFocus={() => setShowATUAfterText(true)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t// onBlur={() => setShowATUAfterText(false)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t// hasError={!!validationErrors['settings.add_to_unlock.discount.after']}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t// BindToContext={[context, 'settings.add_to_unlock.discount.after']}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tBindToContext={[\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcontext,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t`settings.add_to_unlock.goals.${index}.free_shipping.after`\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t]}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tplaceholder=\"you've unlocked {{reward}} off\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Bindings />\r\n\t\t\t\t\t\t\t\t\t\t\t\t</FormControl>\r\n\t\t\t\t\t\t\t\t\t\t\t</Fragment>\r\n\t\t\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tgoal.reward_type === \"discount\" && (\r\n\t\t\t\t\t\t\t\t\t\t\t<Discount {...{ campaign, context, currency, index, validationErrors, styles }} />\r\n\t\t\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tgoal.reward_type === \"manual\" && (\r\n\t\t\t\t\t\t\t\t\t\t\t<Fragment>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<FormControl\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tlabel=\"text before hitting the goal\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tinfo=\"We recommend using emoji's to draw attention\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t// error={validationErrors['settings.add_to_unlock.free_shipping.before']}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tisSingleCol\r\n\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<RichEditor\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\timageEmoji={true}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tBindToContext={[\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcontext,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t`settings.add_to_unlock.goals.${index}.manual.before`\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t]}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tplaceholder=\"add {{amount}} to unlock free shipping !\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t// hasError={!!validationErrors['settings.add_to_unlock.free_shipping.before']}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Bindings only={[\"goal\", \"amount_left\"]} />\r\n\t\t\t\t\t\t\t\t\t\t\t\t</FormControl>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<FormControl\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tlabel=\"text after hitting the goal\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tinfo=\"We recommend using emoji's to draw attention. (You can leave this blank.)\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t// error={validationErrors['settings.add_to_unlock.discount.after']}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tisSingleCol\r\n\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<RichEditor\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\timageEmoji={true}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tBindToContext={[\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcontext,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t`settings.add_to_unlock.goals.${index}.manual.after`\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t]}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tplaceholder=\"you've unlocked {{reward}} off\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Bindings />\r\n\t\t\t\t\t\t\t\t\t\t\t\t</FormControl>\r\n\t\t\t\t\t\t\t\t\t\t\t</Fragment>\r\n\t\t\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t{goal.reward_type === \"gift\" && <Gift  {...{ context, index, validationErrors }} />}\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t})}\r\n\t\t\t\t\t\t<FormControl>\r\n\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\t\t\ttext={\r\n\t\t\t\t\t\t\t\t\t\tadd_to_unlock?.goals?.length < 4\r\n\t\t\t\t\t\t\t\t\t\t\t? \"+ Add another reward\"\r\n\t\t\t\t\t\t\t\t\t\t\t: \"Only 4 rewards are available\"\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\t\t\tcontext.newGoal();\r\n\t\t\t\t\t\t\t\t\t\tif (add_to_unlock.goals[0].show_goal_text === false) {\r\n\t\t\t\t\t\t\t\t\t\t\tsetItem(\"settings.add_to_unlock.goals.0.show_goal_text\", true);\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\tstyle={{ width: \"100%\" }}\r\n\t\t\t\t\t\t\t\t\tdisabled={add_to_unlock?.goals?.length >= 4}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</FormControl>\r\n\t\t\t\t\t\t<FormControl>\r\n\t\t\t\t\t\t\t<Alert type=\"info\" icon=\"info-circle\" title=\"campaign summary\">\r\n\t\t\t\t\t\t\t\t{add_to_unlock?.goals?.map((campaignGoal, currentIndex) => (\r\n\t\t\t\t\t\t\t\t\t<Summary\r\n\t\t\t\t\t\t\t\t\t\t{...{\r\n\t\t\t\t\t\t\t\t\t\t\tkey: `atu_summary_${currentIndex}`,\r\n\t\t\t\t\t\t\t\t\t\t\tcampaignGoal,\r\n\t\t\t\t\t\t\t\t\t\t\ttarget,\r\n\t\t\t\t\t\t\t\t\t\t\tgoals: add_to_unlock.goals,\r\n\t\t\t\t\t\t\t\t\t\t\tcurrentIndex,\r\n\t\t\t\t\t\t\t\t\t\t\tcurrency,\r\n\t\t\t\t\t\t\t\t\t\t\tmulti_goal_type: add_to_unlock.multi_goal_type\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t\t</Alert>\r\n\t\t\t\t\t\t</FormControl>\r\n\t\t\t\t\t\t<FormControl label=\"Progress bar thickness\">\r\n\t\t\t\t\t\t\t<ButtonSelect\r\n\t\t\t\t\t\t\t\toptions={[\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tlabel: \"Thin\",\r\n\t\t\t\t\t\t\t\t\t\tvalue: false,\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tlabel: \"Thick\",\r\n\t\t\t\t\t\t\t\t\t\tvalue: true,\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t]}\r\n\t\t\t\t\t\t\t\tBindToContext={[context, \"settings.add_to_unlock.progress_thick\"]}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t</FormControl>\r\n\t\t\t\t\t\t<FormControl label=\"Progress bar colors\">\r\n\t\t\t\t\t\t\t<ColorPicker\r\n\t\t\t\t\t\t\t\ttext=\"Primary\"\r\n\t\t\t\t\t\t\t\tBindToContext={[context, \"settings.add_to_unlock.progress_primary\"]}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t<ColorPicker\r\n\t\t\t\t\t\t\t\ttext=\"Secondary\"\r\n\t\t\t\t\t\t\t\tBindToContext={[context, \"settings.add_to_unlock.progress_secondary\"]}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t<ColorPicker\r\n\t\t\t\t\t\t\t\ttext=\"Goal complete\"\r\n\t\t\t\t\t\t\t\tBindToContext={[context, \"settings.add_to_unlock.progress_complete\"]}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t<ColorPicker\r\n\t\t\t\t\t\t\t\ttext=\"Background\"\r\n\t\t\t\t\t\t\t\tBindToContext={[context, \"settings.add_to_unlock.progress_background\"]}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t</FormControl>\r\n\t\t\t\t\t</>\r\n\t\t\t\t)}\r\n\t\t\t</FormGroup>\r\n\t\t\t<FormGroup label=\"Frequently bought Together\">\r\n\t\t\t\t<FormControl\r\n\t\t\t\t\tlabel=\"Enable\"\r\n\t\t\t\t\tclassName=\"mb-6\"\r\n\t\t\t\t\twithSwitch={[context, \"settings.add_to_unlock.show_suggestions\"]}\r\n\t\t\t\t/>\r\n\t\t\t\t{!!campaign.settings.add_to_unlock.show_suggestions && (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t<FormControl\r\n\t\t\t\t\t\t\tlabel=\"products to suggest\"\r\n\t\t\t\t\t\t\tinfo=\"Suggest products that are likely to be added. We recommend choosing products that are easy to understand without learning more.\"\r\n\t\t\t\t\t\t\terror={validationErrors[\"settings.add_to_unlock.products\"]}\r\n\t\t\t\t\t\t\tisSingleCol={true}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<div className={classNames(\"mb-4\")}>\r\n\t\t\t\t\t\t\t\t<ButtonSelect\r\n\t\t\t\t\t\t\t\t\tisVertical={false}\r\n\t\t\t\t\t\t\t\t\toptions={[\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tlabel: \"Specific Products\",\r\n\t\t\t\t\t\t\t\t\t\t\tvalue: \"custom_recommendation\",\r\n\t\t\t\t\t\t\t\t\t\t\t// infoHtml: true,\r\n\t\t\t\t\t\t\t\t\t\t\tinfo: `When you want very specific products to appear depending on what is in the cart`\r\n\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tlabel: \"Shopify Recomendations\",\r\n\t\t\t\t\t\t\t\t\t\t\tvalue: \"shopify_recommendation\",\r\n\t\t\t\t\t\t\t\t\t\t\t// infoHtml: true,\r\n\t\t\t\t\t\t\t\t\t\t\tinfo: ` Use Shopify’s powerful machine learning to suggest commonly purchased products or products in related collections.`\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t]}\r\n\t\t\t\t\t\t\t\t\tBindToContext={[context, \"settings.add_to_unlock.recommendation_type\"]}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t\t\t{campaign.settings.add_to_unlock.recommendation_type === \"custom_recommendation\" && (\r\n\t\t\t\t\t\t\t\t// (\r\n\t\t\t\t\t\t\t\t// \t!campaign.settings.add_to_unlock.recommendation_type ||\r\n\t\t\t\t\t\t\t\t// \tcampaign.settings.add_to_unlock.recommendation_type === \"custom_recommendation\"\r\n\t\t\t\t\t\t\t\t// ) &&\r\n\t\t\t\t\t\t\t\t<ShopifyResourcePicker\r\n\t\t\t\t\t\t\t\t\tBindToContext={[context, \"settings.add_to_unlock.products\"]}\r\n\t\t\t\t\t\t\t\t\treducer={ADD_TO_UNLOCK_PRODUCTS_PICKER_REDUCER}\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t{(trigger) => {\r\n\t\t\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\t\t\t\t\t\t\ttext=\"Select Products\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\ttype={\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalidationErrors[\"settings.add_to_unlock.products\"] &&\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t!!validationErrors[\"settings.add_to_unlock.products\"][0]\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? \"danger\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: \"primary\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={trigger}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tstyle={{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\twidth: \"100%\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t\t\t{!!campaign.settings.add_to_unlock.show_suggestions &&\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t!campaign.settings.add_to_unlock.products.length && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<p\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={classNames(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"text-center text-gray-500 text-xs italic mt-2\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tSelect a product to expand more settings\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</p>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t</>\r\n\t\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t</ShopifyResourcePicker>\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t</FormControl>\r\n\t\t\t\t\t\t{campaign.settings.add_to_unlock.recommendation_type === \"shopify_recommendation\" && (\r\n\t\t\t\t\t\t\t<div className={classNames(\"mb-4\")}>\r\n\t\t\t\t\t\t\t\t<Alert type=\"info\" icon=\"info-circle\" title=\"Please note\">\r\n\t\t\t\t\t\t\t\t\t<p>Products in preview cart have been randomly selected.</p>\r\n\t\t\t\t\t\t\t\t</Alert>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t\t{campaign.settings.add_to_unlock.recommendation_type === \"shopify_recommendation\" && (\r\n\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t<FormControl label=\"Number of products displayed\">\r\n\t\t\t\t\t\t\t\t\t<Range\r\n\t\t\t\t\t\t\t\t\t\tBindToContext={[context, \"settings.add_to_unlock.products_length\"]}\r\n\t\t\t\t\t\t\t\t\t\tmin={1}\r\n\t\t\t\t\t\t\t\t\t\tmax={5}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t</FormControl>\r\n\t\t\t\t\t\t\t\t<FormControl label=\"Exclusion tags\" info=\"Hide products with these tags\">\r\n\t\t\t\t\t\t\t\t\t<Dropdown\r\n\t\t\t\t\t\t\t\t\t\tisCreatable={true}\r\n\t\t\t\t\t\t\t\t\t\tisMulti={true}\r\n\t\t\t\t\t\t\t\t\t\tBindToContext={[context, \"settings.add_to_unlock.exclude_tags\"]}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t</FormControl>\r\n\t\t\t\t\t\t\t</>\r\n\t\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t\t<FormControl\r\n\t\t\t\t\t\t\tlabel=\"Separator\"\r\n\t\t\t\t\t\t\tinfo=\"This separator can help you communicate your suggested products. It disappears when no suggested products are available.\"\r\n\t\t\t\t\t\t\terror={\r\n\t\t\t\t\t\t\t\tvalidationErrors[\"settings.add_to_unlock.separator.text\"] ||\r\n\t\t\t\t\t\t\t\tvalidationErrors[\"settings.add_to_unlock.separator.active\"]\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<Input\r\n\t\t\t\t\t\t\t\tplaceholder=\"Or\"\r\n\t\t\t\t\t\t\t\tBindToContext={[context, \"settings.add_to_unlock.separator.text\"]}\r\n\t\t\t\t\t\t\t\twithSwitch={[context, \"settings.add_to_unlock.separator.active\"]}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t</FormControl>\r\n\r\n\t\t\t\t\t\t<div className={classNames(\"flex\")}>\r\n\t\t\t\t\t\t\t<FormControl\r\n\t\t\t\t\t\t\t\tclassName={classNames(\"flex-1 mr-2\")}\r\n\t\t\t\t\t\t\t\tlabel=\"Background color\"\r\n\t\t\t\t\t\t\t\t// info=\"Header background color\"\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t<ColorPicker BindToContext={[context, \"settings.add_to_unlock.background\"]} />\r\n\t\t\t\t\t\t\t</FormControl>\r\n\t\t\t\t\t\t\t<FormControl className={classNames(\"flex-1\")} label=\"Border color\"\r\n\t\t\t\t\t\t\t\t// info=\"Box border color\"\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t<ColorPicker BindToContext={[context, \"settings.add_to_unlock.borderColor\"]} />\r\n\t\t\t\t\t\t\t</FormControl>\r\n\t\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t\t<CustomText\r\n\t\t\t\t\t\t\tlabel=\"Title\"\r\n\t\t\t\t\t\t\tplaceholder=\"Frequently Bought Together\"\r\n\t\t\t\t\t\t\thasColor={true}\r\n\t\t\t\t\t\t\tcontext={context}\r\n\t\t\t\t\t\t\tpath=\"settings.add_to_unlock.title\"\r\n\t\t\t\t\t\t\thasWeight=\"600\"\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t<CustomText\r\n\t\t\t\t\t\t\tlabel=\"Show Product Details\"\r\n\t\t\t\t\t\t\tplaceholder=\"Show Details\"\r\n\t\t\t\t\t\t\thasColor={true}\r\n\t\t\t\t\t\t\tcontext={context}\r\n\t\t\t\t\t\t\tpath=\"settings.add_to_unlock.show_product_details\"\r\n\t\t\t\t\t\t\thasWeight=\"600\"\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t<CustomText\r\n\t\t\t\t\t\t\tlabel=\"Add To Cart Button\"\r\n\t\t\t\t\t\t\tplaceholder=\"Add To Cart\"\r\n\t\t\t\t\t\t\thasColor={true}\r\n\t\t\t\t\t\t\tcontext={context}\r\n\t\t\t\t\t\t\tpath=\"settings.add_to_unlock.upsell_add_button\"\r\n\t\t\t\t\t\t\thasWeight=\"600\"\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t<CustomText\r\n\t\t\t\t\t\t\tlabel=\"Confirm Button\"\r\n\t\t\t\t\t\t\tplaceholder=\"Confirm\"\r\n\t\t\t\t\t\t\tcontext={context}\r\n\t\t\t\t\t\t\tpath=\"settings.add_to_unlock.upsell_confirm_button\"\r\n\t\t\t\t\t\t\thasWeight=\"600\"\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t<CustomText\r\n\t\t\t\t\t\t\tlabel=\"Product title\"\r\n\t\t\t\t\t\t\tcontext={context}\r\n\t\t\t\t\t\t\thasColor={true}\r\n\t\t\t\t\t\t\tpath=\"settings.add_to_unlock.product_title\"\r\n\t\t\t\t\t\t\thasWeight=\"600\"\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t<CustomText\r\n\t\t\t\t\t\t\tlabel=\"Product Price\"\r\n\t\t\t\t\t\t\tplaceholder=\"Confirm\"\r\n\t\t\t\t\t\t\tcontext={context}\r\n\t\t\t\t\t\t\thasColor={true}\r\n\t\t\t\t\t\t\tpath=\"settings.add_to_unlock.product_price\"\r\n\t\t\t\t\t\t\thasWeight=\"600\"\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t{/* <FormControl\r\n\t\t\t\t\t\t\tlabel=\"Display above checkout\"\r\n\t\t\t\t\t\t\tclassName=\"mb-4\"\r\n\t\t\t\t\t\t\twithSwitch={[context, \"settings.add_to_unlock.fbt_below\"]}\r\n\t\t\t\t\t\t/> */}\r\n          \t\t\t\t<FormControl label=\"Display\">\r\n\t\t\t\t\t\t\t<Dropdown\r\n\t\t\t\t\t\t\t\toptions={[\r\n\t\t\t\t\t\t\t\t\t{ value: \"under_products\", label: \"Under products\" },\r\n\t\t\t\t\t\t\t\t\t{ value: \"above_checkout\", label: \"Above checkout\" },\r\n\t\t\t\t\t\t\t\t\t{ value: \"below_checkout\", label: \"Below checkout\" },\r\n\t\t\t\t\t\t\t\t]}\r\n\t\t\t\t\t\t\t\tBindToContext={[\r\n\t\t\t\t\t\t\t\t\tcontext,\r\n\t\t\t\t\t\t\t\t\t\"settings.add_to_unlock.fbt_position\"\r\n\t\t\t\t\t\t\t\t]}\r\n\t\t\t\t\t\t\t/>\r\n\t\t  \t\t\t\t</FormControl>\r\n\t\t\t\t\t</>\r\n\t\t\t\t)}\r\n\t\t\t</FormGroup>\r\n\r\n\t\t\t{/* from settings  */}\r\n\t\t\t{\r\n\t\t\t\t!!campaign.settings.add_to_unlock.show_suggestions && (\r\n\t\t\t\t\t// (!!campaign.settings.add_to_unlock.products.length ||\r\n\t\t\t\t\t// \tcampaign.settings.add_to_unlock.recommendation_type === \"shopify_recommendation\" )\r\n\t\t\t\t\t// &&\r\n\t\t\t\t\t<FormGroup\r\n\t\t\t\t\t\tlabel=\"show details\"\r\n\t\t\t\t\t\tinfo={`This is used when someone clicks read more on campaigns.\r\n\t\t\t\t\t\t\tTip: If you have a long descriptions make the read more button send users straight to the product page for a better experience.`}\r\n\t\t\t\t\t\tonFocus={() => setEditingProductDetails(true)}\r\n\t\t\t\t\t\tonBlur={() => setEditingProductDetails(false)}\r\n\t\t\t\t\t\tfocusCondition={({ event }) => {\r\n\t\t\t\t\t\t\tconst productDetails = document.getElementById(\"monster_product_details\");\r\n\t\t\t\t\t\t\treturn productDetails\r\n\t\t\t\t\t\t\t\t? productDetails === event.target || productDetails.contains(event.target)\r\n\t\t\t\t\t\t\t\t: false;\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<CustomText\r\n\t\t\t\t\t\t\t// onFocus={() => setEditingProductDetails(true)}\r\n\t\t\t\t\t\t\t// onBlur={() => setEditingProductDetails(false)}\r\n\t\t\t\t\t\t\tcontext={context}\r\n\t\t\t\t\t\t\tlabel=\"Add to cart button\"\r\n\t\t\t\t\t\t\tpath=\"settings.add_to_unlock.product_details.atcButton\"\r\n\t\t\t\t\t\t\thasColor={true}\r\n\t\t\t\t\t\t\thasWeight=\"700\"\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t<FormControl label=\"add to cart button colors\">\r\n\t\t\t\t\t\t\t<ColorPicker\r\n\t\t\t\t\t\t\t\t// onFocus={() => setEditingProductDetails(true)}\r\n\t\t\t\t\t\t\t\t// onBlur={() => setEditingProductDetails(false)}\r\n\t\t\t\t\t\t\t\ttext=\"Background\"\r\n\t\t\t\t\t\t\t\tBindToContext={[context, \"settings.add_to_unlock.product_details.atcButton_background\"]}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t{/* <ColorPicker\r\n\t\t\t\t\t\t\t// onFocus={() => setEditingProductDetails(true)}\r\n\t\t\t\t\t\t\t// onBlur={() => setEditingProductDetails(false)}\r\n\t\t\t\t\t\t\ttext=\"hover background\"\r\n\t\t\t\t\t\t\tBindToContext={[\r\n\t\t\t\t\t\t\t\tcontext,\r\n\t\t\t\t\t\t\t\t\"settings.add_to_unlock.product_details.atcButton_hoverBackground\"\r\n\t\t\t\t\t\t\t]}\r\n\t\t\t\t\t\t/> */}\r\n\t\t\t\t\t\t</FormControl>\r\n\t\t\t\t\t\t<FormControl label=\"Limit product description length\">\r\n\t\t\t\t\t\t\t<Input\r\n\t\t\t\t\t\t\t\t// onFocus={() => setEditingProductDetails(true)}\r\n\t\t\t\t\t\t\t\t// onBlur={() => setEditingProductDetails(false)}\r\n\t\t\t\t\t\t\t\ttype=\"number\"\r\n\t\t\t\t\t\t\t\tplaceholder=\"Characters length\"\r\n\t\t\t\t\t\t\t\tBindToContext={[context, \"settings.add_to_unlock.product_details.truncate_length\"]}\r\n\t\t\t\t\t\t\t\twithSwitch={[context, \"settings.add_to_unlock.product_details.truncate\"]}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t</FormControl>\r\n\t\t\t\t\t\t<CustomText\r\n\t\t\t\t\t\t\t// onFocus={() => setEditingProductDetails(true)}\r\n\t\t\t\t\t\t\t// onBlur={() => setEditingProductDetails(false)}\r\n\t\t\t\t\t\t\tcontext={context}\r\n\t\t\t\t\t\t\tlabel=\"Read more button\"\r\n\t\t\t\t\t\t\tpath=\"settings.add_to_unlock.product_details.readMore\"\r\n\t\t\t\t\t\t\thasColor={true}\r\n\t\t\t\t\t\t\thasWeight=\"700\"\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t<FormControl error={validationErrors[\"settings.add_to_unlock.product_details.external\"]}>\r\n\t\t\t\t\t\t\t<ButtonSelect\r\n\t\t\t\t\t\t\t\toptions={[\r\n\t\t\t\t\t\t\t\t\t{ label: \"Open product page\", value: true },\r\n\t\t\t\t\t\t\t\t\t{ label: \"Expand description\", value: false }\r\n\t\t\t\t\t\t\t\t]}\r\n\t\t\t\t\t\t\t\tBindToContext={[context, \"settings.add_to_unlock.product_details.external\"]}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t</FormControl>\r\n\t\t\t\t\t</FormGroup>\r\n\t\t\t\t)\r\n\t\t\t}\r\n\t\t</Fragment >\r\n\t);\r\n};\r\n\r\nexport default AddToUnlock;\r\n\r\nconst Summary = ({ campaignGoal, target, goals, currentIndex, currency, multi_goal_type }) => {\r\n\tconst { reward_type, goal, goal_type } = campaignGoal;\r\n\tconst rewardType = campaignGoal[reward_type];\r\n\tconst isDiscount = reward_type === \"discount\";\r\n\tconst isGift = reward_type === \"gift\";\r\n\tconst { type, reward } = rewardType;\r\n\t//TODO: i need show money formatting here\r\n\tlet free_shipping_text = \"\";\r\n\tif (isDiscount) {\r\n\t\t//check if the previous goals has free shipping\r\n\t\tconst sortedGoalsAsc = sortByProp(\"goal\", \"asc\")(goals);\r\n\t\tconst previousGoals = [...goals].splice(0, currentIndex);\r\n\t\tconst hasFreeShipping = !!previousGoals.find((goal) => goal.reward_type === \"free_shipping\");\r\n\t\tif (hasFreeShipping) {\r\n\t\t\tfree_shipping_text = \"Free Shipping + \";\r\n\t\t}\r\n\t}\r\n\r\n\tif (\r\n\t\t(target.type === \"specific_products\" && !target.selected.length) ||\r\n\t\t(!!isDiscount && !type) ||\r\n\t\t!goal ||\r\n\t\t!goal_type ||\r\n\t\t(!!isDiscount && !reward)\r\n\t) {\r\n\t\treturn null;\r\n\t}\r\n\t// const must_truncated = (text) => text.length > 25;\r\n\t// const truncate_name = (text) => `\"${text.substring(0, 25).trim()}${must_truncated(text) ? \"...\" : \"\"}\"`;\r\n\t// const product_name = target.type === \"specific_products\" ? truncate_name(target.selected[0].title) : \"any product\";\r\n\tconst formatter_reward = isDiscount\r\n\t\t? type === \"percentage\"\r\n\t\t\t? `${reward}%  off`\r\n\t\t\t: `$${reward}  off`\r\n\t\t: isGift ? \"a Free Gift\" : \"Free Shipping\";\r\n\r\n\tif (multi_goal_type === \"amount\") {\r\n\t\treturn (\r\n\t\t\t<p\r\n\t\t\t\tclassName={classNames(\"mb-2\")}\r\n\t\t\t>{`Spend ${currency} ${goal}+ and get ${free_shipping_text}${formatter_reward}.`}</p>\r\n\t\t);\r\n\t} else if (multi_goal_type === \"quantity\") {\r\n\t\treturn (\r\n\t\t\t<p\r\n\t\t\t\tclassName={classNames(\"mb-2\")}\r\n\t\t\t>{`Buy ${goal} products and get ${free_shipping_text}${formatter_reward}.`}</p>\r\n\t\t);\r\n\t}\r\n};\r\n","import React, { Component } from 'react';\r\nimport { Dropdown, FormControl, Input, Button } from 'components';\r\nimport { DISCOUNT_TYPES, PERCENTAGE_ICON } from 'lib/globals';\r\nimport styles from 'styles/bundle.module.scss';\r\nimport { getIn } from 'immutable';\r\nimport classNames from 'lib/classNames';\r\n\r\nconst Bundle = ({ bundle, index, context, shopContext }) => {\r\n\tconst { validationErrors } = context;\r\n\tconst { state: { currency } } = shopContext\r\n\tconst getError = (key) => getIn(validationErrors, ['settings.bundles.list', index, key], false);\r\n\r\n\treturn (\r\n\t\t<div className={classNames('flex relative bg-white rounded p-3 pr-6 mb-4')}>\r\n\t\t\t<FormControl\r\n\t\t\t\tlabel=\"quantity\"\r\n\t\t\t\tclassName='flex-1 mr-2'\r\n\t\t\t\tmarginBottom=\"mb-0\"\r\n\t\t\t\terror={!!getError('quantity')}\r\n\t\t\t>\r\n\t\t\t\t<Input\r\n\t\t\t\t\ttype=\"number\"\r\n\t\t\t\t\tBindToContext={[context, `settings.bundles.list.${index}.quantity`]}\r\n\t\t\t\t\tgetError={!!getError('quantity')}\r\n\t\t\t\t\tspecificValidation={'settings.bundles.list'}\r\n\t\t\t\t\tmin=\"2\"\r\n\t\t\t\t\tisFlex\r\n\t\t\t\t\tclassName={classNames('w-20')}\r\n\t\t\t\t/>\r\n\t\t\t</FormControl>\r\n\t\t\t<FormControl\r\n\t\t\t\tlabel=\"discount\"\r\n\t\t\t\tclassName='flex-1 flex-grow'\r\n\t\t\t\tmarginBottom=\"mb-0\"\r\n\t\t\t\terror={!!getError('reward')}\r\n\t\t\t>\r\n\t\t\t\t<Input\r\n\t\t\t\t\ttype=\"number\"\r\n\t\t\t\t\tBindToContext={[context, `settings.bundles.list.${index}.reward`]}\r\n\t\t\t\t\tgetError={!!getError('reward')}\r\n\t\t\t\t\tspecificValidation={'settings.bundles.list'}\r\n\t\t\t\t\tmin=\"0\"\r\n\t\t\t\t\tmax=\"100\"\r\n\t\t\t\t\tmax={context.state.settings.bundles.list[index].type === 'percentage' ? 100 : undefined}\r\n\t\t\t\t\twithDropdown={{\r\n\t\t\t\t\t\tBindToContext: [context, `settings.bundles.list.${index}.type`],\r\n\t\t\t\t\t\toptions: DISCOUNT_TYPES(currency),\r\n\t\t\t\t\t\tgetError: !!getError('type'),\r\n\t\t\t\t\t\tspecificValidation: 'settings.bundles.list',\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tfullWidth\r\n\t\t\t\t/>\r\n\t\t\t</FormControl>\r\n\t\t\t<Button\r\n\t\t\t\tclassName={classNames('absolute top-1/2 right-0 -translate-y-1/2 transform translate-x-1/2')}\r\n\t\t\t\ticon=\"times\"\r\n\t\t\t\ttype=\"circle-danger\"\r\n\t\t\t\tonClick={() => context.deleteBundle(bundle.id)}\r\n\t\t\t/>\r\n\t\t</div>\r\n\t);\r\n};\r\n\r\nexport default Bundle;\r\n","import React, { useContext, useState } from 'react';\r\nimport {\r\n    FormGroup,\r\n    FormControl,\r\n    Button,\r\n    Input,\r\n    ColorPicker,\r\n    Alert,\r\n    ButtonSelect\r\n} from 'components';\r\nimport styles from 'styles/campaign_settings_second_step.module.scss';\r\nimport Bundle from './Bundle';\r\nimport { CAMPAIGN_TYPES } from 'lib/globals';\r\nimport classNames from 'lib/classNames';\r\nimport { getIn } from 'immutable';\r\nimport PreviewContext from 'context/PreviewContext';\r\nimport { useFocusWithin } from 'react-aria';\r\nimport useRefState from 'hooks/useRefState';\r\n\r\nconst Bundles = ({ context, validationErrors, shopContext }) => {\r\n    const { previewBundlesVariantsPicker } = useContext(PreviewContext);\r\n    const { state: campaign, newBundle } = context;\r\n    const [\r\n        visiblePickerColorPickers,\r\n        setVisiblePickerColorPickers,\r\n        visiblePickerColorPickers_ref\r\n    ] = useRefState([]);\r\n    const handleColorPickerVisibleChange = name => visible => {\r\n        if (visible) {\r\n            const set = new Set(...visiblePickerColorPickers).add(name);\r\n            setVisiblePickerColorPickers([...set]);\r\n        } else {\r\n            const v = visiblePickerColorPickers.filter(n => n !== name);\r\n            setVisiblePickerColorPickers(v);\r\n        }\r\n    };\r\n    let { focusWithinProps } = useFocusWithin({\r\n        onFocusWithin: () => previewBundlesVariantsPicker(true, context.state.settings.bundles),\r\n        onBlurWithin: event => {\r\n            if (!visiblePickerColorPickers_ref.current.length) previewBundlesVariantsPicker(false);\r\n        }\r\n    });\r\n    return (\r\n        <FormGroup\r\n            className={styles.group}\r\n            label={CAMPAIGN_TYPES['bundles']}\r\n            info=\"Create rewards for when a customer buys more of certain products.\"\r\n        >\r\n            <FormControl label=\"style\" error={validationErrors['settings.bundles.style']}>\r\n                <ButtonSelect\r\n                    options={[\r\n                        { value: 'vertical', label: 'Vertical' },\r\n                        { value: 'horizontal', label: 'Horizontal' }\r\n                    ]}\r\n                    showSeparator={false}\r\n                    BindToContext={[context, 'settings.bundles.style']}\r\n                />\r\n            </FormControl>\r\n            <FormControl label=\"Create offer\" marginBottom=\"mb-0\">\r\n                <div className={classNames('flex flex-col')}>\r\n                    {campaign.settings.bundles.list.map((bundle, index) =>\r\n                        <Bundle\r\n                            bundle={bundle}\r\n                            key={index}\r\n                            index={index}\r\n                            context={context}\r\n                            shopContext={shopContext}\r\n                        />\r\n                    )}\r\n                </div>\r\n            </FormControl>\r\n            <div className={classNames('flex justify-end mb-4')}>\r\n                <Button text=\"New offer\" icon=\"plus\" onClick={() => newBundle()} type=\"info\" />\r\n            </div>\r\n            <Summary campaign={context.state} />\r\n            <FormControl\r\n                label=\"offer description\"\r\n                error={validationErrors['settings.bundles.text']}\r\n            >\r\n                <Input\r\n                    BindToContext={[context, 'settings.bundles.text']}\r\n                    placeholder=\"offer description\"\r\n                />\r\n            </FormControl>\r\n            <FormControl label=\"pricing\" error={validationErrors['settings.bundles.prefix']}>\r\n                <Input BindToContext={[context, 'settings.bundles.prefix']} placeholder=\"pricing\" />\r\n            </FormControl>\r\n            <FormControl label=\"font size\" error={validationErrors['settings.bundles.font_size']}>\r\n                <Input\r\n                    BindToContext={[context, 'settings.bundles.font_size']}\r\n                    type=\"number\"\r\n                    min={0.5}\r\n                    max={2}\r\n                    step={0.1}\r\n                    placeholder=\"font size\"\r\n                />\r\n            </FormControl>\r\n            <FormControl\r\n                label=\"Offer colors\"\r\n                error={\r\n                    validationErrors['settings.bundles.background'] ||\r\n                    validationErrors['settings.bundles.color']\r\n                }\r\n            >\r\n                <ColorPicker\r\n                    text=\"Background\"\r\n                    BindToContext={[context, 'settings.bundles.background']}\r\n                />\r\n                <ColorPicker\r\n                    text=\"Color\"\r\n                    position=\"bottom right\"\r\n                    BindToContext={[context, 'settings.bundles.color']}\r\n                />\r\n            </FormControl>\r\n            <FormControl\r\n                label=\"badge colors\"\r\n                error={\r\n                    validationErrors['settings.bundles.badge.text'] ||\r\n                    validationErrors['settings.bundles.badge.background'] ||\r\n                    validationErrors['settings.bundles.badge.text']\r\n                }\r\n            >\r\n                <ColorPicker\r\n                    text=\"text\"\r\n                    BindToContext={[context, 'settings.bundles.badge.text']}\r\n                />\r\n                <ColorPicker\r\n                    text=\"Background\"\r\n                    BindToContext={[context, 'settings.bundles.badge.background']}\r\n                />\r\n                <ColorPicker\r\n                    text=\"board\"\r\n                    BindToContext={[context, 'settings.bundles.badge.border']}\r\n                />\r\n            </FormControl> \r\n            <FormControl\r\n                beta\r\n                label=\"variant picker\"\r\n                info=\"Appears when product has variants and customer clicks volume increase buttons in cart.\"\r\n                withSwitch={[context, 'settings.bundles.variantsPicker.active']}\r\n            >\r\n                <span />\r\n            </FormControl>\r\n            <div\r\n                className={classNames({\r\n                    hidden: !context.state.settings.bundles.variantsPicker?.active\r\n                })}\r\n                {...focusWithinProps}\r\n            >\r\n                <FormControl\r\n                    label=\"Multi Product Label\"\r\n                    className=\"mt-5\"\r\n                    info=\"Appears when customer has to add more than 1 product with a variant.\"\r\n                >\r\n                    <Input\r\n                        placeholder=\"Multi Product Label\"\r\n                        BindToContext={[\r\n                            context,\r\n                            'settings.bundles.variantsPicker.label',\r\n                            value => {\r\n                                const { bundles } = context.state.settings;\r\n                                bundles.variantsPicker.label = value;\r\n                                previewBundlesVariantsPicker(true, bundles);\r\n                            }\r\n                        ]}\r\n                    />\r\n                </FormControl>\r\n                <FormControl label=\"Confirm Product Label\">\r\n                    <Input\r\n                        placeholder=\"Confirm Product Label\"\r\n                        BindToContext={[\r\n                            context,\r\n                            'settings.bundles.variantsPicker.confirm',\r\n                            value => {\r\n                                const { bundles } = context.state.settings;\r\n                                bundles.variantsPicker.confirm = value;\r\n                                previewBundlesVariantsPicker(true, campaign.settings.bundles);\r\n                            }\r\n                        ]}\r\n                    />\r\n                </FormControl>\r\n                <FormControl\r\n                    label=\"Picker colors\"\r\n                    isSingleCol\r\n                    error={validationErrors['settings.bundles.variantsPicker.textColor']}\r\n                >\r\n                    <ColorPicker\r\n                        text=\"Text\"\r\n                        BindToContext={[\r\n                            context,\r\n                            'settings.bundles.variantsPicker.textColor',\r\n                            value => {\r\n                                const { bundles } = context.state.settings;\r\n                                bundles.variantsPicker.textColor = value;\r\n                                previewBundlesVariantsPicker(true, campaign.settings.bundles);\r\n                            }\r\n                        ]}\r\n                        onVisibleChange={handleColorPickerVisibleChange('textColor')}\r\n                    />\r\n                    <div className={classNames('flex')}>\r\n                        <ColorPicker\r\n                            className=\"py-3 w-1/2\"\r\n                            text=\"Dropdown text\"\r\n                            BindToContext={[\r\n                                context,\r\n                                'settings.bundles.variantsPicker.dropdownTextColor',\r\n                                value => {\r\n                                    const { bundles } = context.state.settings;\r\n                                    bundles.variantsPicker.dropdownTextColor = value;\r\n                                    previewBundlesVariantsPicker(true, campaign.settings.bundles);\r\n                                }\r\n                            ]}\r\n                            onVisibleChange={handleColorPickerVisibleChange('dropdownTextColor')}\r\n                        />\r\n                        <ColorPicker\r\n                            className=\"w-1/2\"\r\n                            text=\"Dropdown background\"\r\n                            BindToContext={[\r\n                                context,\r\n                                'settings.bundles.variantsPicker.dropdownBackground',\r\n                                value => {\r\n                                    const { bundles } = context.state.settings;\r\n                                    bundles.variantsPicker.dropdownBackground = value;\r\n                                    previewBundlesVariantsPicker(true, campaign.settings.bundles);\r\n                                }\r\n                            ]}\r\n                            onVisibleChange={handleColorPickerVisibleChange('dropdownBackground')}\r\n                        />\r\n                    </div>\r\n                    <div className={classNames('flex')}>\r\n                        <ColorPicker\r\n                            className=\"py-3 w-1/2\"\r\n                            text=\"Confirm Button Background\"\r\n                            BindToContext={[\r\n                                context,\r\n                                'settings.bundles.variantsPicker.confirmBackground',\r\n                                value => {\r\n                                    const { bundles } = context.state.settings;\r\n                                    bundles.variantsPicker.confirmBackground = value;\r\n                                    previewBundlesVariantsPicker(true, campaign.settings.bundles);\r\n                                }\r\n                            ]}\r\n                            onVisibleChange={handleColorPickerVisibleChange('confirmBackground')}\r\n                        />\r\n                        <ColorPicker\r\n                            className=\"w-1/2\"\r\n                            text=\"Confirm Button Text\"\r\n                            BindToContext={[\r\n                                context,\r\n                                'settings.bundles.variantsPicker.confirmTextColor',\r\n                                value => {\r\n                                    const { bundles } = context.state.settings;\r\n                                    bundles.variantsPicker.confirmTextColor = value;\r\n                                    previewBundlesVariantsPicker(true, campaign.settings.bundles);\r\n                                }\r\n                            ]}\r\n                            onVisibleChange={handleColorPickerVisibleChange('confirmTextColor')}\r\n                        />\r\n                    </div>\r\n                </FormControl>\r\n            </div>\r\n            {/* <FormControl label=\"discount title\" error={validationErrors['settings.applied_discount_title']}>\r\n                <Input placeholder=\"discount title\" BindToContext={[context, 'settings.applied_discount_title']} />\r\n            </FormControl> */}\r\n        </FormGroup>\r\n    );\r\n};\r\n\r\nexport default Bundles;\r\n\r\nconst Summary = ({ campaign }) => {\r\n    const { target, settings: { bundles } } = campaign;\r\n    //TODO: i need show money formatting here\r\n    if ((target.type === 'specific_products' && !target.selected.length) || !bundles.list.length)\r\n        return null;\r\n    const must_truncated = text => text.length > 25;\r\n    const truncate_name = text =>\r\n        `\"${text.substring(0, 25).trim()}${must_truncated(text) ? '...' : ''}\"`;\r\n    const product_name =\r\n        target.type === 'specific_products'\r\n            ? truncate_name(target.selected[0].title)\r\n            : 'any product';\r\n\r\n    return (\r\n        <Alert\r\n            type=\"info\"\r\n            icon=\"info-circle\"\r\n            title=\"campaign summary\"\r\n            className={classNames('mb-6')}\r\n        >\r\n            {bundles.list.map(({ quantity, type, reward }, i) => {\r\n                if (!quantity || !type || !reward) return null;\r\n                const isLast = i === bundles.list.length - 1;\r\n                const formatted_reward = type === 'percentage' ? `${reward}%` : `$${reward}`;\r\n                return (\r\n                    <p key={i}>\r\n                        {`Buy ${quantity} ${isLast\r\n                            ? ' or more'\r\n                            : ''} of ${product_name} and get ${formatted_reward} off.`}\r\n                    </p>\r\n                );\r\n            })}\r\n        </Alert>\r\n    );\r\n};\r\n","import React, { Fragment, useState, useEffect, useContext } from \"react\";\r\nimport {\r\n  FormGroup,\r\n  FormControl,\r\n  ShopifyResourcePicker,\r\n  Button,\r\n  ButtonSelect,\r\n  Input,\r\n  ProductSelector,\r\n  ImagePicker,\r\n  Modal,\r\n  Carousel,\r\n  RichEditor,\r\n  Alert,\r\n  ColorPicker\r\n} from \"components\";\r\nimport {\r\n  ONE_CHECK_UP_SELL_PRODUCT_TYPE_OPTIONS,\r\n  ONE_CHECK_UP_SELL_PRODUCT_REDUCER,\r\n  PRESET_HIDDEN_PRODUCTS,\r\n  CAMPAIGN_TYPES,\r\n  BREAK_POINTS\r\n} from \"lib/globals\";\r\nimport { API } from \"aws-amplify\";\r\nimport styles from \"styles/campaign_settings_second_step.module.scss\";\r\nimport { CartContext } from \"components/cart\";\r\nimport ShopContext from \"context/ShopContext\";\r\nimport classNames from \"lib/classNames\";\r\nimport useRefState from \"hooks/useRefState\";\r\n\r\nconst OneCheckUpSell = ({ context, validationErrors }) => {\r\n  const { state: campaign, setItem, updateOldOCU } = context;\r\n  const shopContext = useContext(ShopContext);\r\n  const {\r\n    state: {\r\n      settings: { theme },\r\n      currency\r\n    }\r\n  } = shopContext;\r\n  const [hiddenProducts, setHiddenProducts] = useState([]);\r\n  const newHiddenProductDefault = { title: \"\", image: \"\", price: \"\" };\r\n  // const [newHiddenProduct, setNewHiddenProduct, newHiddenProductRef] = useRefState(newHiddenProductDefault);\r\n  const [newHiddenProductLoading, setNewHiddenProductLoading] = useState(false);\r\n  const [productsFetchLoading, setProductsFetchLoading] = useState(true);\r\n  const [showHiddenProductSelector, setShowHiddenProductSelector] =\r\n    useState(false);\r\n  const [activeTab, setActiveTab] = useState(0);\r\n  // const setProp = (value) => setNewHiddenProduct(Object.assign({}, newHiddenProduct, value));\r\n\r\n  const [productImage, setProductImage] = useState(\"\");\r\n  const [productTitle, setProductTitle] = useState(\"\");\r\n  const [productPrice, setProductPrice] = useState(\"\");\r\n  const [bodyHtml, setBodyHtml] = useState(\"\");\r\n\r\n  const setProps = (id) => {\r\n    const selected = PRESET_HIDDEN_PRODUCTS.find((p) => p.id === id);\r\n    setProductImage(selected.image);\r\n    setProductTitle(selected.title);\r\n    setProductPrice(selected.price);\r\n    setBodyHtml(selected.body_html);\r\n  };\r\n  const createProduct = (setActiveTab) => {\r\n    if (\r\n      productImage === \"\" ||\r\n      productTitle === \"\" ||\r\n      productPrice === \"\" ||\r\n      bodyHtml === \"\"\r\n    )\r\n      return;\r\n    setNewHiddenProductLoading(true);\r\n    API.post(\"API_GATEWAY_NEW\", \"/products\", {\r\n      body: {\r\n        price: productPrice,\r\n        title: productTitle,\r\n        image: productImage,\r\n        body_html: bodyHtml\r\n      }\r\n    })\r\n      .then(({ product }) => {\r\n        setHiddenProducts(hiddenProducts.concat([product]));\r\n        setProductImage(\"\");\r\n        setProductTitle(\"\");\r\n        setProductPrice(\"\");\r\n        setBodyHtml(\"\");\r\n        setActiveTab(0);\r\n        setNewHiddenProductLoading(false);\r\n      })\r\n      .catch(console.log);\r\n  };\r\n\r\n  useEffect(() => {\r\n    setProductsFetchLoading(true);\r\n    API.get(\"API_GATEWAY_NEW\", \"/products\", {\r\n      queryStringParameters: {\r\n        type: \"hidden\",\r\n        limit: 4\r\n      }\r\n    })\r\n      .then(({ products }) => {\r\n        setHiddenProducts(products);\r\n        setProductsFetchLoading(false);\r\n      })\r\n      .catch(console.log);\r\n  }, []);\r\n\r\n  // useEffect(() => {\r\n  // \tconsole.log(!!Object.values(newHiddenProduct).filter((value) => value === '').length || bodyHtml === '');\r\n  // }, [newHiddenProduct, bodyHtml]);\r\n\r\n  return (\r\n    <>\r\n      <FormGroup\r\n        label={CAMPAIGN_TYPES[\"one_check_up_sell\"]}\r\n        info=\"Create a tick box that adds a little extra product to the cart.\"\r\n      >\r\n        <Alert type=\"info\" icon=\"info-circle\" className=\"mb-6\" title=\"New one tick upsell version is now available\" actions={[{\r\n          text: \"update\",\r\n          onClick: updateOldOCU\r\n        }]} />\r\n        <FormControl\r\n          label=\"Ticked by default\"\r\n          info=\"When campaign is active it will auto tick the box and add one tick upsell product to the cart.\"\r\n          withSwitch={[\r\n            context,\r\n            \"settings.one_check_up_sell.is_ticked_by_default\"\r\n          ]}\r\n          disabled\r\n        >\r\n          <div>\r\n            <a\r\n              href=\"https://monsterapps.crisp.help/en/article/auto-select-tick-box-deprecated-15wrgud/\"\r\n              target=\"_blank\"\r\n              rel=\"noopener noreferrer\"\r\n              className={classNames(\"underline text-sm font-medium\")}\r\n            >\r\n              Learn more\r\n            </a>\r\n          </div>\r\n          {/* <div className={classNames(\"border border-orange-100 rounded-lg p-4 mt-2 mb-6\")} style={{ backgroundColor: \"#FFF2E2\" }}>\r\n              <div className={classNames(\"flex\")}>\r\n                  <div className={classNames(\"flex-shrink-0\")}>\r\n                      <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 16 16\" className={classNames(\"h-5 w-5\")}>\r\n                          <path d=\"M8.982 1.566a1.13 1.13 0 0 0-1.96 0L.165 13.233c-.457.778.091 1.767.98 1.767h13.713c.889 0 1.438-.99.98-1.767L8.982 1.566M8 5c.535 0 .954.462.9.995l-.35 3.507a.552.552 0 0 1-1.1 0L7.1 5.995A.905.905 0 0 1 8 5m.002 6a1 1 0 1 1 0 2 1 1 0 0 1 0-2\" />\r\n                      </svg>\r\n                  </div>\r\n                  <div className={classNames(\"ml-3\")}>\r\n                      <h3 className={classNames(\"text-sm font-medium\")}>\r\n                          We have removed \"Ticked by default\"\r\n                      </h3>\r\n                      <div className={classNames(\"mt-1 text-sm\")}>\r\n                          <p>\r\n                              To provide more trustworthy buyer experiences, Shopify is prohibiting apps from automatically adding non-free items. Buyers will need to explicitly accept add-ons by clicking the toggle. To learn more, see{' '}\r\n                              <a \r\n                                  href=\"https://shopify.dev/docs/apps/launch/app-requirements-checklist#1-prohibited-and-restricted-app-configurations\"\r\n                                  target=\"_blank\"\r\n                                  rel=\"noopener noreferrer\"\r\n                                  className={classNames(\"underline\")}\r\n                              >\r\n                                  Section 1.19\r\n                              </a>\r\n                              {' '}of Shopify's app requirements.\r\n                          </p>\r\n                      </div>\r\n                  </div>\r\n              </div>\r\n          </div> */}\r\n        </FormControl>\r\n        <FormControl\r\n          label=\"Include in add to unlock goal\"\r\n          info=\"The one tick product amount will count towards Add To Unlock reward goals.\"\r\n          withSwitch={[context, \"settings.one_check_up_sell.include_in_atu\"]}\r\n        >\r\n          <div></div>\r\n        </FormControl>\r\n        <FormControl label=\"Text\">\r\n          <RichEditor\r\n            placeholder=\"Enter your sold here!\"\r\n            BindToContext={[context, \"settings.one_check_up_sell.text\"]}\r\n            indicator=\"You can use {{title}} {{price}}\"\r\n          />\r\n        </FormControl>\r\n        <FormControl\r\n          error={validationErrors[\"settings.one_check_up_sell.highlight\"]}\r\n        >\r\n          {/*label=\"Highlight color\" */}\r\n          <ColorPicker\r\n            text=\"Highlight color\"\r\n            BindToContext={[context, \"settings.one_check_up_sell.highlight\"]}\r\n          />\r\n        </FormControl>\r\n\r\n        <FormControl label=\"Limit product name length\">\r\n          <Input\r\n            // onFocus={() => setEditingProductDetails(true)}\r\n            // onBlur={() => setEditingProductDetails(false)}\r\n            type=\"number\"\r\n            placeholder=\"Characters length\"\r\n            BindToContext={[\r\n              context,\r\n              \"settings.one_check_up_sell.truncate_length\"\r\n            ]}\r\n            withSwitch={[context, \"settings.one_check_up_sell.truncate\"]}\r\n          />\r\n        </FormControl>\r\n\r\n        <FormControl\r\n          label=\"Product\"\r\n          error={\r\n            validationErrors[\"settings.one_check_up_sell.product.variants\"]\r\n          }\r\n          info={`Choose the product you want tick box to add to the cart.${!BREAK_POINTS[\"kill_draft\"](shopContext)\r\n            ? \" Virtual products are invisible on your storefront, And existing products are not.\"\r\n            : \"\"\r\n            }`}\r\n          isSingleCol\r\n        >\r\n          {!BREAK_POINTS[\"kill_draft\"](shopContext) && (\r\n            <ButtonSelect\r\n              options={ONE_CHECK_UP_SELL_PRODUCT_TYPE_OPTIONS}\r\n              BindToContext={[\r\n                context,\r\n                \"settings.one_check_up_sell.product_type\"\r\n              ]}\r\n              first\r\n              loading={[productsFetchLoading]}\r\n            />\r\n          )}\r\n          <ShopifyResourcePicker\r\n            allowMultiple={false}\r\n            reducer={ONE_CHECK_UP_SELL_PRODUCT_REDUCER}\r\n            BindToContext={[context, \"settings.one_check_up_sell.product\"]}\r\n          >\r\n            {(trigger) => (\r\n              <Button\r\n                className={classNames(\"w-full mt-3\")}\r\n                text=\"Select a product\"\r\n                type={\r\n                  validationErrors[\r\n                    \"settings.one_check_up_sell.product.variants\"\r\n                  ] &&\r\n                    !!validationErrors[\r\n                    \"settings.one_check_up_sell.product.variants\"\r\n                    ][0]\r\n                    ? \"danger\"\r\n                    : \"primary\"\r\n                }\r\n                onClick={() => {\r\n                  switch (campaign.settings.one_check_up_sell.product_type) {\r\n                    case \"existing\":\r\n                      return trigger();\r\n                    case \"hidden\":\r\n                      return setShowHiddenProductSelector(true);\r\n                  }\r\n                }}\r\n              />\r\n            )}\r\n          </ShopifyResourcePicker>\r\n        </FormControl>\r\n        <FormControl>\r\n          <Summary campaign={context.state} />\r\n        </FormControl>\r\n      </FormGroup>\r\n      <Modal\r\n        visible={showHiddenProductSelector}\r\n        title=\"Select Hidden product\"\r\n        onClose={() => setShowHiddenProductSelector(false)}\r\n      >\r\n        {(close, setTitle) => (\r\n          <Carousel\r\n            onChange={(tab) =>\r\n              setTitle(\r\n                tab === 0\r\n                  ? \"Select a hidden product\"\r\n                  : \"Create a hidden product\"\r\n              )\r\n            }\r\n            contents={[\r\n              (setActiveTab) => (\r\n                <FormControl label=\"Hidden Products\">\r\n                  <ProductSelector\r\n                    reducer={ONE_CHECK_UP_SELL_PRODUCT_REDUCER}\r\n                    products={hiddenProducts}\r\n                    BindToContext={[\r\n                      context,\r\n                      \"settings.one_check_up_sell.product\"\r\n                    ]}\r\n                    showCreate={() => setActiveTab(1)}\r\n                  />\r\n                </FormControl>\r\n              ),\r\n              <Fragment>\r\n                <FormControl label=\"select example product\">\r\n                  <ProductSelector\r\n                    presets={true}\r\n                    reducer={ONE_CHECK_UP_SELL_PRODUCT_REDUCER}\r\n                    products={PRESET_HIDDEN_PRODUCTS}\r\n                    // BindToContext={[context, 'settings.one_check_up_sell.product']}\r\n                    onChange={setProps}\r\n                  // showCreate={() => setActiveTab(1)}\r\n                  />\r\n                </FormControl>\r\n                <FormControl label=\"image\">\r\n                  <ImagePicker\r\n                    // type=\"image\"\r\n                    value={productImage}\r\n                    onChange={setProductImage}\r\n                  />\r\n                </FormControl>\r\n                <FormControl label=\"Title\">\r\n                  <Input\r\n                    placeholder=\"Gift Wrapping\"\r\n                    value={productTitle}\r\n                    onChange={setProductTitle}\r\n                  />\r\n                </FormControl>\r\n                <FormControl label=\"Price\">\r\n                  <Input\r\n                    placeholder=\"Price\"\r\n                    type=\"number\"\r\n                    value={productPrice}\r\n                    onChange={setProductPrice}\r\n                  />\r\n                </FormControl>\r\n                <FormControl label=\"Description\">\r\n                  <RichEditor\r\n                    placeholder=\"Description\"\r\n                    value={bodyHtml}\r\n                    onChange={setBodyHtml}\r\n                  />\r\n                </FormControl>\r\n              </Fragment>\r\n            ]}\r\n            controlsPosition=\"bottom\"\r\n            active={0}\r\n            controls={[\r\n              {\r\n                text: \"Close\",\r\n                type: \"secondary\",\r\n                current: 0,\r\n                next: () => close()\r\n              },\r\n              {\r\n                text: hiddenProducts.length ? \"Cancel\" : \"Close\",\r\n                type: \"secondary\",\r\n                current: 1,\r\n                next: (setActiveTab) =>\r\n                  hiddenProducts.length ? setActiveTab(0) : close()\r\n              },\r\n              {\r\n                text: \"Create\",\r\n                loading: newHiddenProductLoading,\r\n                current: 1,\r\n                disabled:\r\n                  productImage === \"\" ||\r\n                  productTitle === \"\" ||\r\n                  productPrice === \"\" ||\r\n                  bodyHtml === \"\",\r\n                next: (setActiveTab) => createProduct(setActiveTab)\r\n              }\r\n            ]}\r\n          />\r\n        )}\r\n      </Modal>\r\n    </>\r\n  );\r\n};\r\n\r\nexport default OneCheckUpSell;\r\n\r\nconst Summary = ({ campaign }) => {\r\n  const {\r\n    target,\r\n    settings: { one_check_up_sell }\r\n  } = campaign;\r\n  const { product } = one_check_up_sell;\r\n  if (!Object.keys(product || {}).length) return null;\r\n  if (\r\n    (target.type === \"specific_products\" && !target.selected.length) ||\r\n    !product\r\n  )\r\n    return null;\r\n  const must_truncated = (text) => text.length > 25;\r\n  const truncate_name = (text) =>\r\n    `\"${text.substring(0, 25).trim()}${must_truncated(text) ? \"...\" : \"\"}\"`;\r\n  const product_name =\r\n    target.type === \"specific_products\"\r\n      ? truncate_name(target.selected[0].title)\r\n      : \"any product\";\r\n  if (!product.title) return null;\r\n\r\n  return (\r\n    <Alert type=\"info\" icon=\"info-circle\" title=\"campaign summary\">\r\n      <p>\r\n        {`If ${product_name} is on the cart, Then you can add \"${product.title\r\n          .substring(0, 25)\r\n          .trim()}\r\n\t\t\t\t\t${must_truncated(product.title) ? \"...\" : \"\"}\" with one tick.`}\r\n      </p>\r\n    </Alert>\r\n  );\r\n};\r\n","import React, { Fragment, useState, useEffect, useContext } from \"react\";\r\nimport {\r\n  FormGroup,\r\n  FormControl,\r\n  ShopifyResourcePicker,\r\n  Button,\r\n  ButtonSelect,\r\n  Input,\r\n  ProductSelector,\r\n  ImagePicker,\r\n  Modal,\r\n  Carousel,\r\n  RichEditor,\r\n  Alert,\r\n  ColorPicker,\r\n  Dropdown\r\n} from \"components\";\r\nimport {\r\n  ONE_CHECK_UP_SELL_PRODUCT_TYPE_OPTIONS,\r\n  ONE_CHECK_UP_SELL_PRODUCT_REDUCER,\r\n  CAMPAIGN_TYPES,\r\n  BREAK_POINTS\r\n} from \"lib/globals\";\r\nimport { API } from \"aws-amplify\";\r\nimport styles from \"styles/campaign_settings_second_step.module.scss\";\r\nimport { CartContext } from \"components/cart\";\r\nimport ShopContext from \"context/ShopContext\";\r\nimport classNames from \"lib/classNames\";\r\nimport useRefState from \"hooks/useRefState\";\r\nimport EmbeddedContext from \"context/EmbeddedContext\";\r\n\r\nconst MultiOneCheckUpSell = ({ context, validationErrors }) => {\r\n  const { state: campaign, setItem } = context;\r\n  const { AppBridgeToast } = useContext(EmbeddedContext);\r\n  const shopContext = useContext(ShopContext);\r\n  const {\r\n    state: {\r\n      settings: { theme, rtl },\r\n      currency\r\n    }\r\n  } = shopContext;\r\n  const [hiddenProducts, setHiddenProducts] = useState([]);\r\n  const newHiddenProductDefault = { title: \"\", image: \"\", price: \"\" };\r\n  // const [newHiddenProduct, setNewHiddenProduct, newHiddenProductRef] = useRefState(newHiddenProductDefault);\r\n  const [newHiddenProductLoading, setNewHiddenProductLoading] = useState(false);\r\n  const [productsFetchLoading, setProductsFetchLoading] = useState(true);\r\n  const [showHiddenProductSelector, setShowHiddenProductSelector] =\r\n    useState(false);\r\n  const [activeTab, setActiveTab] = useState(0);\r\n\r\n  useEffect(() => {\r\n    setProductsFetchLoading(true);\r\n    API.get(\"API_GATEWAY_NEW\", \"/products\", {\r\n      queryStringParameters: {\r\n        type: \"hidden\",\r\n        limit: 4\r\n      }\r\n    })\r\n      .then(({ products }) => {\r\n        setHiddenProducts(products);\r\n        setProductsFetchLoading(false);\r\n      })\r\n      .catch(console.log);\r\n  }, []);\r\n\r\n  const products = campaign.settings.multi_one_check_upsell.products;\r\n  const isSwitch = campaign.settings.multi_one_check_upsell.variant === \"switch\"\r\n  return (\r\n    <FormGroup\r\n      label={CAMPAIGN_TYPES[\"one_check_up_sell\"]}\r\n      info=\"Create a tick box that adds a little extra product to the cart.\"\r\n    >\r\n      <FormControl label=\"Variant\">\r\n        <Dropdown\r\n          options={[\r\n            { value: \"switch\", label: \"Switch\" },\r\n            { value: \"square\", label: \"Square\" },\r\n            { value: \"circle\", label: \"Circle\" }\r\n          ]}\r\n          first\r\n          BindToContext={[context, \"settings.multi_one_check_upsell.variant\"]}\r\n        />\r\n      </FormControl>\r\n      <FormControl\r\n        label=\"Align\"\r\n        info=\"Align center works good with a single product\"\r\n      >\r\n        <Dropdown\r\n          options={[\r\n            { value: \"natural\", label: rtl ? \"Right\" : \"Left\" },\r\n            { value: \"center\", label: \"Center\" }\r\n          ]}\r\n          first\r\n          BindToContext={[context, \"settings.multi_one_check_upsell.align\"]}\r\n        />\r\n      </FormControl>\r\n      <FormControl\r\n        label=\"Border\"\r\n        isSingleCol\r\n        withSwitch={[context, \"settings.multi_one_check_upsell.border\"]}\r\n      />\r\n      <FormControl label=\"Colors\">\r\n        <ColorPicker\r\n          text=\"Highlight\"\r\n          BindToContext={[\r\n            context,\r\n            \"settings.multi_one_check_upsell.highlight\"\r\n          ]}\r\n        />\r\n        <ColorPicker\r\n          text=\"Border\"\r\n          BindToContext={[\r\n            context,\r\n            \"settings.multi_one_check_upsell.border_color\"\r\n          ]}\r\n        />\r\n        {isSwitch && (\r\n          <ColorPicker\r\n            text=\"Switch ON\"\r\n            disableAlpha\r\n            BindToContext={[\r\n              context,\r\n              \"settings.multi_one_check_upsell.switch_on\"\r\n            ]}\r\n          />\r\n        )}\r\n        {isSwitch && (\r\n          <ColorPicker\r\n            text=\"Switch OFF\"\r\n            disableAlpha\r\n            BindToContext={[\r\n              context,\r\n              \"settings.multi_one_check_upsell.switch_off\"\r\n            ]}\r\n          />\r\n        )}\r\n      </FormControl>\r\n      {products.map((product, index) => (\r\n        <div\r\n          key={`product_${index}`}\r\n          className={classNames(\"mb-5 p-4 rounded bg-white relative\")}\r\n        >\r\n          {products.length > 1 && index !== 0 && (\r\n            <Button\r\n              className={classNames(\r\n                \"absolute top-0 right-0 -translate-y-1/2 transform translate-x-1/2\"\r\n              )}\r\n              icon=\"times\"\r\n              type=\"circle-danger\"\r\n              onClick={() => context.deleteOneCheckUpsellProduct(index)}\r\n            />\r\n          )}\r\n          <FormControl\r\n            label=\"Ticked by default\"\r\n            info=\"When campaign is active it will auto tick the box and add one tick upsell product to the cart.\"\r\n            withSwitch={[\r\n              context,\r\n              `settings.multi_one_check_upsell.products.${index}.is_ticked_by_default`\r\n            ]}\r\n            disabled\r\n          >\r\n            <div>\r\n              <a\r\n                href=\"https://monsterapps.crisp.help/en/article/auto-select-tick-box-deprecated-15wrgud/\"\r\n                target=\"_blank\"\r\n                rel=\"noopener noreferrer\"\r\n                className={classNames(\"underline text-sm font-medium\")}\r\n              >\r\n                Learn more\r\n              </a>\r\n            </div>\r\n            {/* <div className={classNames(\"border border-orange-100 rounded-lg p-4 mt-2 mb-6\")} style={{ backgroundColor: \"#FFF2E2\" }}>\r\n                <div className={classNames(\"flex\")}>\r\n                    <div className={classNames(\"flex-shrink-0\")}>\r\n                        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 16 16\" className={classNames(\"h-5 w-5\")}>\r\n                            <path d=\"M8.982 1.566a1.13 1.13 0 0 0-1.96 0L.165 13.233c-.457.778.091 1.767.98 1.767h13.713c.889 0 1.438-.99.98-1.767L8.982 1.566M8 5c.535 0 .954.462.9.995l-.35 3.507a.552.552 0 0 1-1.1 0L7.1 5.995A.905.905 0 0 1 8 5m.002 6a1 1 0 1 1 0 2 1 1 0 0 1 0-2\" />\r\n                        </svg>\r\n                    </div>\r\n                    <div className={classNames(\"ml-3\")}>\r\n                        <h3 className={classNames(\"text-sm font-medium\")}>\r\n                            We have removed \"Ticked by default\"\r\n                        </h3>\r\n                        <div className={classNames(\"mt-1 text-sm\")}>\r\n                            <p>\r\n                                To provide more trustworthy buyer experiences, Shopify is prohibiting apps from automatically adding non-free items. Buyers will need to explicitly accept add-ons by clicking the toggle. To learn more, see{' '}\r\n                                <a \r\n                                    href=\"https://shopify.dev/docs/apps/launch/app-requirements-checklist#1-prohibited-and-restricted-app-configurations\"\r\n                                    target=\"_blank\"\r\n                                    rel=\"noopener noreferrer\"\r\n                                    className={classNames(\"underline\")}\r\n                                >\r\n                                    Section 1.19\r\n                                </a>\r\n                                {' '}of Shopify's app requirements.\r\n                            </p>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div> */}\r\n          </FormControl>\r\n          <FormControl\r\n            label=\"Include in add to unlock goal\"\r\n            info=\"The one tick product amount will count towards Add To Unlock reward goals.\"\r\n            withSwitch={[\r\n              context,\r\n              `settings.multi_one_check_upsell.products.${index}.include_in_atu`\r\n            ]}\r\n          >\r\n            <div></div>\r\n          </FormControl>\r\n          <FormControl label=\"Text\">\r\n            <RichEditor\r\n              placeholder=\"Enter your sold here!\"\r\n              BindToContext={[\r\n                context,\r\n                `settings.multi_one_check_upsell.products.${index}.text`\r\n              ]}\r\n              indicator=\"You can use {{title}} {{price}}\"\r\n              error={productError(validationErrors, index)}\r\n            />\r\n          </FormControl>\r\n          <FormControl label=\"Limit product name length\">\r\n            <Input\r\n              // onFocus={() => setEditingProductDetails(true)}\r\n              // onBlur={() => setEditingProductDetails(false)}\r\n              type=\"number\"\r\n              placeholder=\"Characters length\"\r\n              BindToContext={[\r\n                context,\r\n                `settings.multi_one_check_upsell.products.${index}.truncate_length`\r\n              ]}\r\n              withSwitch={[\r\n                context,\r\n                `settings.multi_one_check_upsell.products.${index}.truncate`\r\n              ]}\r\n            />\r\n          </FormControl>\r\n          <FormControl\r\n            label=\"Product\"\r\n            error={productError(validationErrors, index)}\r\n            info={`Choose the product you want tick box to add to the cart.${!BREAK_POINTS[\"kill_draft\"](shopContext)\r\n              ? \" Virtual products are invisible on your storefront, And existing products are not.\"\r\n              : \"\"\r\n              }`}\r\n            isSingleCol\r\n          >\r\n            {!BREAK_POINTS[\"kill_draft\"](shopContext) && (\r\n              <ButtonSelect\r\n                options={ONE_CHECK_UP_SELL_PRODUCT_TYPE_OPTIONS}\r\n                BindToContext={[\r\n                  context,\r\n                  `settings.multi_one_check_upsell.products.${index}.product_type`\r\n                ]}\r\n                first\r\n                loading={[productsFetchLoading]}\r\n              />\r\n            )}\r\n            <ShopifyResourcePicker\r\n              allowMultiple={false}\r\n              reducer={ONE_CHECK_UP_SELL_PRODUCT_REDUCER}\r\n              verifySelection={([{ id, title }]) => {\r\n                id = id.replace(\"gid://shopify/Product/\", \"\");\r\n                const exists = products\r\n                  .filter(({ product }) => !!product)\r\n                  .find(({ product }) => id === product.id);\r\n                if (exists) {\r\n                  AppBridgeToast({\r\n                    message: `\"${title}\" is already selected`,\r\n                    isError: true\r\n                  }).open();\r\n                }\r\n                return !exists;\r\n              }}\r\n              BindToContext={[\r\n                context,\r\n                `settings.multi_one_check_upsell.products.${index}.product`\r\n              ]}\r\n            >\r\n              {(trigger) => (\r\n                <Button\r\n                  className={classNames(\"w-full mt-3\")}\r\n                  text=\"Select a product\"\r\n                  type={\r\n                    productError(validationErrors, index)\r\n                      ? \"danger\"\r\n                      : \"primary\"\r\n                  }\r\n                  onClick={() => {\r\n                    switch (product.product_type) {\r\n                      case \"existing\":\r\n                        return trigger();\r\n                      case \"hidden\":\r\n                        return setShowHiddenProductSelector(true);\r\n                    }\r\n                  }}\r\n                />\r\n              )}\r\n            </ShopifyResourcePicker>\r\n          </FormControl>\r\n          <FormControl>\r\n            <Summary campaign={context.state} product={product.product} />\r\n          </FormControl>\r\n        </div>\r\n      ))}\r\n      <FormControl>\r\n        <div>\r\n          <Button\r\n            text={\r\n              products.length < 4\r\n                ? \"+ Add another product\"\r\n                : \"Only 3 products are available\"\r\n            }\r\n            onClick={context.newOneCheckUpsellProduct}\r\n            style={{ width: \"100%\" }}\r\n            disabled={products.length >= 3}\r\n          />\r\n        </div>\r\n      </FormControl>\r\n    </FormGroup>\r\n  );\r\n};\r\n\r\nexport default MultiOneCheckUpSell;\r\n\r\nconst Summary = ({ campaign, product }) => {\r\n  const { target } = campaign;\r\n  if (!Object.keys(product || {}).length) return null;\r\n  if (\r\n    (target.type === \"specific_products\" && !target.selected.length) ||\r\n    !product\r\n  )\r\n    return null;\r\n  const must_truncated = (text) => text.length > 25;\r\n  const truncate_name = (text) =>\r\n    `${text.substring(0, 25).trim()}${must_truncated(text) ? \"...\" : \"\"}\"`;\r\n  const product_name =\r\n    target.type === \"specific_products\"\r\n      ? truncate_name(target.selected[0].title)\r\n      : \"any product\";\r\n  if (!product.title) return null;\r\n\r\n  return (\r\n    <Alert\r\n      customStyle={{ box: \"bg-gray-200\" }}\r\n      t\r\n      type=\"info\"\r\n      icon=\"info-circle\"\r\n      title=\"campaign summary\"\r\n    >\r\n      <p>\r\n        {`If ${product_name} is on the cart, Then you can add \"${product.title\r\n          .substring(0, 25)\r\n          .trim()}\r\n\t\t\t\t\t${must_truncated(product.title) ? \"...\" : \"\"}\" with one tick.`}\r\n      </p>\r\n    </Alert>\r\n  );\r\n};\r\n\r\nfunction productError (validationErrors, index) {\r\n  const products = validationErrors[`settings.multi_one_check_upsell.products`];\r\n  return products && products[index] ? products[index][\"product.id\"] : false;\r\n}\r\n","import React from 'react';\r\nimport { Button, Icon, Switch, FormGroup, FormControl } from 'components';\r\nimport styles from 'styles/campaign_settings_second_step.module.scss';\r\nimport ExtraModules from './ExtraModules/index';\r\nimport GeoTargeting from './GeoTargeting';\r\nimport { AddToUnlock, Bundles, OneCheckUpSell, MultiOneCheckUpSell } from './Types';\r\n\r\nconst SecondStep = ({\r\n    context,\r\n    setActiveTab,\r\n    stickyHeaderPosition: headerPosition,\r\n    stickyHeader,\r\n    setShowATUAfterText,\r\n    shopContext\r\n}) => {\r\n    const { state: campaign, setItem, validationErrors } = context;\r\n    const is_OCU = campaign.settings.type === 'one_check_up_sell';\r\n    const isOld_OCU = is_OCU && !campaign.settings.multi_one_check_upsell;\r\n    return (\r\n        <>\r\n            {campaign.settings.type === 'bundles' && (\r\n                <Bundles {...{ context, shopContext, validationErrors }} />\r\n            )}\r\n            {campaign.settings.type === 'add_to_unlock' && (\r\n                <AddToUnlock {...{ context, validationErrors, setShowATUAfterText }} />\r\n            )}\r\n            {isOld_OCU && <OneCheckUpSell {...{ context, validationErrors }} />}\r\n            {is_OCU && !isOld_OCU && <MultiOneCheckUpSell {...{ context, validationErrors }} />}\r\n            {campaign.settings.type && (\r\n                <>\r\n                    <GeoTargeting context={context} />\r\n                    <ExtraModules context={context} hasCheckout={false} />\r\n                </>\r\n            )}\r\n        </>\r\n    );\r\n};\r\n\r\nexport default SecondStep;\r\n","const removeTypeName = (value) => {\r\n\tif (value === null || value === undefined) {\r\n\t\treturn value;\r\n\t} else if (Array.isArray(value)) {\r\n\t\treturn value.map((v) => removeTypeName(v));\r\n\t} else if (typeof value === 'object') {\r\n\t\tconst newObj = {};\r\n\t\tObject.entries(value).forEach(([key, v]) => {\r\n\t\t\tif (key !== '__typename') {\r\n\t\t\t\tnewObj[key] = removeTypeName(v);\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn newObj;\r\n\t}\r\n\treturn value;\r\n};\r\n\r\nexport const removeByType = (value, condition = (v) => typeof v !== 'undefined') => {\r\n\tif (Array.isArray(value)) {\r\n\t\treturn value.map((v) => removeByType(v, condition));\r\n\t} else if (Object.prototype.toString.call(value) === '[object Object]') {\r\n\t\tconst newObj = {};\r\n\t\tObject.entries(value).forEach(([key, v]) => {\r\n\t\t\tif (condition(v)) {\r\n\t\t\t\tnewObj[key] = removeByType(v, condition);\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn newObj;\r\n\t}\r\n\treturn value;\r\n};\r\n\r\nexport const removeFalsyErrors = (value) => {\r\n\tif (value === null || value === undefined) {\r\n\t\treturn value;\r\n\t} else if (Array.isArray(value)) {\r\n\t\treturn value.map((v) => removeFalsyErrors(v));\r\n\t} else if (typeof value === 'object') {\r\n\t\tconst newObj = {};\r\n\t\tObject.entries(value).forEach(([key, v]) => {\r\n\t\t\tif (!!v && !isFalsyArray(v)) newObj[key] = removeFalsyErrors(v);\r\n\t\t});\r\n\t\treturn Object.keys(newObj).length ? newObj : null;\r\n\t}\r\n\treturn value;\r\n};\r\n\r\nconst isFalsy = (value) => Number.isInteger(value) && value < 1;\r\n\r\nconst isFalsyArray = (array) => array.every(isFalsy);\r\n\r\nexport default removeTypeName;\r\n","import validate, { capitalize, isString } from 'validate.js/validate';\r\nimport { removeByType, removeFalsyErrors } from 'lib/removeTypeName';\r\nimport { Collection, getIn } from 'immutable';\r\n\r\nvalidate.validators.array = (arrayItems, itemConstraints, key, attributes) => {\r\n\tconst { isRequired, fieldName, ...constraints } = itemConstraints;\r\n\tif (isRequired === false && !arrayItems) return null;\r\n\tif (isRequired === true && !arrayItems.length) return `^A ${fieldName || ''} is required`;\r\n\tif (typeof isRequired === 'string' && RegExp('if:(.*)').test(isRequired)) {\r\n\t\tconst rules = isRequired\r\n\t\t\t.split(':')[1]\r\n\t\t\t.split(',')\r\n\t\t\t.reduce((acc, cur) => {\r\n\t\t\t\tconst [path, value] = cur.split('=');\r\n\t\t\t\ttry {\r\n\t\t\t\t\tacc[path] = JSON.parse(value);\r\n\t\t\t\t} catch {\r\n\t\t\t\t\tacc[path] = value;\r\n\t\t\t\t}\r\n\t\t\t\treturn acc;\r\n\t\t\t}, {});\r\n\t\tif (\r\n\t\t\tObject.entries(rules)\r\n\t\t\t\t.map(([path, value]) => {\r\n\t\t\t\t\treturn getIn(attributes, path.split('.')) === value;\r\n\t\t\t\t})\r\n\t\t\t\t.every((entry) => entry === true) &&\r\n\t\t\t!(arrayItems || []).length\r\n\t\t)\r\n\t\t\treturn `^${fieldName || ''} is required`;\r\n\t}\r\n\tconst arrayItemErrors = (arrayItems || []).reduce((errors, item, index) => {\r\n\t\tconst error = validate(isString(item) ? { value: item } : item, constraints);\r\n\t\t//if error is undefined we return a unique falsy variable because validate js will make the errors array unique and  we'll lose errors order\r\n\t\terrors[index] = error || -index;\r\n\t\treturn errors;\r\n\t}, []);\r\n\treturn arrayItemErrors.length ? arrayItemErrors : null;\r\n};\r\n\r\nvalidate.validators.color = function (value) {\r\n\tconst isRGBA = ['rgba', 'rgba__typename', 'abgr'].includes(Object.keys(value).join(''));\r\n\tif (!isRGBA) return 'must be an rgba object';\r\n\r\n\tconst rules = {\r\n\t\tr: (int) => Number.isInteger(int) && int >= 0 && int <= 255,\r\n\t\tg: (int) => Number.isInteger(int) && int >= 0 && int <= 255,\r\n\t\tb: (int) => Number.isInteger(int) && int >= 0 && int <= 255,\r\n\t\ta: (float) => typeof float === 'number' && float >= 0 && float <= 1,\r\n\t};\r\n\tconst valuesAreValid = Object.entries(value).reduce((acc, [key, val]) => {\r\n\t\tif (key === '__typename') return acc;\r\n\t\tacc += rules[key](val) ? 0 : -1;\r\n\t\treturn acc;\r\n\t}, 0);\r\n\treturn valuesAreValid < 0 ? 'is not valid' : null;\r\n};\r\n\r\nexport const Field = ({ required, min, max, inArray, type, name, debug } = {}) => {\r\n\tconst output = removeByType({\r\n\t\tpresence: Value(required)({\r\n\t\t\tallowEmpty: false,\r\n\t\t\tmessage: Value(name)(`^${capitalize(name)} can't be blank`),\r\n\t\t}),\r\n\t\tlength: Value(type === 'string' && (min || max))({\r\n\t\t\tminimum: required ? min || 1 : 0,\r\n\t\t\ttooShort: Value(min && name)(`${capitalize(name)} is too short (minimum is ${min} characters)`),\r\n\t\t\tmaximum: max,\r\n\t\t\ttooLong: Value(max && name)(`${capitalize(name)} is too long (maximum is ${max} characters)`),\r\n\t\t}),\r\n\t\tinclusion: Value(inArray)({\r\n\t\t\twithin: inArray,\r\n\t\t\tmessage: Value(name)(`^${capitalize(name)} value is not valid`),\r\n\t\t}),\r\n\t\tnumericality: Value(['integer', 'float'].includes(type))({\r\n\t\t\tonlyInteger: type === 'integer',\r\n\t\t\tgreaterThanOrEqualTo: Value(min)(),\r\n\t\t\tlessThanOrEqualTo: Value(max)(),\r\n\t\t\tstrict: true,\r\n\t\t\tnotValid: Value(name)(`^${capitalize(name)} value is not valid`, `must be a valid ${type}`),\r\n\t\t\tnotGreaterThanOrEqualTo: Value(name)(`^${capitalize(name)}  must be greater than or equal to ${min}`),\r\n\t\t\tnotLessThanOrEqualTo: Value(name)(`^${capitalize(name)}  must be less than or equal to ${max}`),\r\n\t\t}),\r\n\t\ttype: type !== 'float' ? type : undefined,\r\n\t\t// type: Value(type && type !== 'float', type),\r\n\t});\r\n\tif (!!debug) console.log(output);\r\n\treturn output;\r\n};\r\nconst Value = (condition) => (value = condition, defaultValue = undefined) => (!!condition ? value : defaultValue);\r\n\r\nexport const Integer = ({ required = true, ...options } = {}) => Field({ required, type: 'integer', ...options });\r\nexport const Float = ({ required = true, ...options } = {}) => Field({ required, type: 'float', ...options });\r\nexport const Text = ({ required = true, ...options } = {}) => Field({ required, type: 'string', ...options });\r\nexport const Bool = ({ required = true, ...options } = {}) => Field({ required, type: 'boolean', ...options });\r\nexport const Num = ({ required = true, ...options } = {}) => Field({ required, type: 'number', ...options });\r\n\r\nexport const Run = (state, specific, { errors, setErrors, constraints }, silent = false) => {\r\n\tlet filteredConstraints = Collection(constraints)\r\n\t\t.filter((value, key) => (specific.length ? specific.includes(key) : true))\r\n\t\t.toObject();\r\n\tlet newErrors = validate(state, filteredConstraints);\r\n\tlet oldErrors = Object.assign({}, errors);\r\n\tlet outputErrors = newErrors;\r\n\tif (specific.length && Object.keys(oldErrors).length) {\r\n\t\tObject.keys(oldErrors).forEach((key) => {\r\n\t\t\tif ((!newErrors && specific.includes(key)) || !specific.includes(key)) {\r\n\t\t\t\t//no errors, we should remove the specified keys from old errors\r\n\t\t\t\tdelete oldErrors[key];\r\n\t\t\t} else if (specific.includes(key) && !!newErrors[key]) {\r\n\t\t\t\t// new errors, we should replace old errors with new ones\r\n\t\t\t\toldErrors[key] = newErrors[key];\r\n\t\t\t}\r\n\t\t});\r\n\t\toutputErrors = oldErrors;\r\n\t}\r\n\tif (!silent) setErrors(outputErrors || {});\r\n\treturn removeFalsyErrors(outputErrors);\r\n};\r\n\r\nexport default validate;\r\n","var _title, _circle, _path, _polygon, _path2, _polygon2, _ellipse, _ellipse2, _ellipse3, _ellipse4, _circle2, _rect, _rect2, _ellipse5, _ellipse6, _circle3, _circle4, _path3, _path4, _path5, _circle5, _rect3, _rect4, _ellipse7, _ellipse8, _circle6, _circle7, _path6, _path7, _path8, _path9, _path10, _ellipse9, _ellipse10;\n\nvar _excluded = [\"svgRef\", \"title\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar SvgNotFound = function SvgNotFound(_ref) {\n  var svgRef = _ref.svgRef,\n      title = _ref.title,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    id: \"a706cf1c-1654-439b-8fcf-310eb7aa0e00\",\n    \"data-name\": \"Layer 1\",\n    width: 1120.59226,\n    height: 777.91584,\n    viewBox: \"0 0 1120.59226 777.91584\",\n    ref: svgRef\n  }, props), title === undefined ? _title || (_title = /*#__PURE__*/React.createElement(\"title\", null, \"not found\")) : title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n    cx: 212.59226,\n    cy: 103,\n    r: 64,\n    fill: \"#ff6584\"\n  })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M563.68016,404.16381c0,151.01141-89.77389,203.73895-200.51559,203.73895S162.649,555.17522,162.649,404.16381,363.16457,61.04208,363.16457,61.04208,563.68016,253.1524,563.68016,404.16381Z\",\n    transform: \"translate(-39.70387 -61.04208)\",\n    fill: \"#f2f2f2\"\n  })), _polygon || (_polygon = /*#__PURE__*/React.createElement(\"polygon\", {\n    points: \"316.156 523.761 318.21 397.378 403.674 241.024 318.532 377.552 319.455 320.725 378.357 207.605 319.699 305.687 319.699 305.687 321.359 203.481 384.433 113.423 321.621 187.409 322.658 0 316.138 248.096 316.674 237.861 252.547 139.704 315.646 257.508 309.671 371.654 309.493 368.625 235.565 265.329 309.269 379.328 308.522 393.603 308.388 393.818 308.449 394.99 293.29 684.589 313.544 684.589 315.974 535.005 389.496 421.285 316.156 523.761\",\n    fill: \"#3f3d56\"\n  })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1160.29613,466.01367c0,123.61-73.4842,166.77-164.13156,166.77s-164.13156-43.16-164.13156-166.77S996.16457,185.15218,996.16457,185.15218,1160.29613,342.40364,1160.29613,466.01367Z\",\n    transform: \"translate(-39.70387 -61.04208)\",\n    fill: \"#f2f2f2\"\n  })), _polygon2 || (_polygon2 = /*#__PURE__*/React.createElement(\"polygon\", {\n    points: \"950.482 552.833 952.162 449.383 1022.119 321.4 952.426 433.154 953.182 386.639 1001.396 294.044 953.382 374.329 953.382 374.329 954.741 290.669 1006.369 216.952 954.954 277.514 955.804 124.11 950.467 327.188 950.906 318.811 898.414 238.464 950.064 334.893 945.173 428.327 945.027 425.847 884.514 341.294 944.844 434.608 944.232 446.293 944.123 446.469 944.173 447.428 931.764 684.478 948.343 684.478 950.332 562.037 1010.514 468.952 950.482 552.833\",\n    fill: \"#3f3d56\"\n  })), _ellipse || (_ellipse = /*#__PURE__*/React.createElement(\"ellipse\", {\n    cx: 554.59226,\n    cy: 680.47903,\n    rx: 554.59226,\n    ry: 28.03433,\n    fill: \"#3f3d56\"\n  })), _ellipse2 || (_ellipse2 = /*#__PURE__*/React.createElement(\"ellipse\", {\n    cx: 892.44491,\n    cy: 726.79663,\n    rx: 94.98858,\n    ry: 4.80162,\n    fill: \"#3f3d56\"\n  })), _ellipse3 || (_ellipse3 = /*#__PURE__*/React.createElement(\"ellipse\", {\n    cx: 548.71959,\n    cy: 773.11422,\n    rx: 94.98858,\n    ry: 4.80162,\n    fill: \"#3f3d56\"\n  })), _ellipse4 || (_ellipse4 = /*#__PURE__*/React.createElement(\"ellipse\", {\n    cx: 287.94432,\n    cy: 734.27887,\n    rx: 217.01436,\n    ry: 10.96996,\n    fill: \"#3f3d56\"\n  })), _circle2 || (_circle2 = /*#__PURE__*/React.createElement(\"circle\", {\n    cx: 97.08375,\n    cy: 566.26982,\n    r: 79,\n    fill: \"#2f2e41\"\n  })), _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n    x: 99.80546,\n    y: 689.02332,\n    width: 24,\n    height: 43,\n    transform: \"translate(-31.32451 -62.31008) rotate(0.67509)\",\n    fill: \"#2f2e41\"\n  })), _rect2 || (_rect2 = /*#__PURE__*/React.createElement(\"rect\", {\n    x: 147.80213,\n    y: 689.58887,\n    width: 24,\n    height: 43,\n    transform: \"translate(-31.31452 -62.87555) rotate(0.67509)\",\n    fill: \"#2f2e41\"\n  })), _ellipse5 || (_ellipse5 = /*#__PURE__*/React.createElement(\"ellipse\", {\n    cx: 119.54569,\n    cy: 732.61606,\n    rx: 7.5,\n    ry: 20,\n    transform: \"translate(-654.1319 782.47948) rotate(-89.32491)\",\n    fill: \"#2f2e41\"\n  })), _ellipse6 || (_ellipse6 = /*#__PURE__*/React.createElement(\"ellipse\", {\n    cx: 167.55414,\n    cy: 732.18168,\n    rx: 7.5,\n    ry: 20,\n    transform: \"translate(-606.25475 830.05533) rotate(-89.32491)\",\n    fill: \"#2f2e41\"\n  })), _circle3 || (_circle3 = /*#__PURE__*/React.createElement(\"circle\", {\n    cx: 99.31925,\n    cy: 546.29477,\n    r: 27,\n    fill: \"#fff\"\n  })), _circle4 || (_circle4 = /*#__PURE__*/React.createElement(\"circle\", {\n    cx: 99.31925,\n    cy: 546.29477,\n    r: 9,\n    fill: \"#3f3d56\"\n  })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M61.02588,552.94636c-6.04185-28.64075,14.68758-57.26483,46.30049-63.93367s62.13813,11.14292,68.18,39.78367-14.97834,38.93-46.59124,45.59886S67.06774,581.58712,61.02588,552.94636Z\",\n    transform: \"translate(-39.70387 -61.04208)\",\n    fill: \"#536dfe\"\n  })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M257.29613,671.38411c0,55.07585-32.73985,74.3063-73.13,74.3063q-1.40351,0-2.80255-.0312c-1.87139-.04011-3.72494-.1292-5.55619-.254-36.45135-2.57979-64.77127-22.79937-64.77127-74.02113,0-53.00843,67.73872-119.89612,72.827-124.84633l.00892-.00889c.19608-.19159.29409-.28516.29409-.28516S257.29613,616.30827,257.29613,671.38411Z\",\n    transform: \"translate(-39.70387 -61.04208)\",\n    fill: \"#536dfe\"\n  })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M181.50168,737.26482l26.747-37.37367-26.81386,41.4773-.07125,4.29076c-1.87139-.04011-3.72494-.1292-5.55619-.254l2.88282-55.10258-.0223-.42775.049-.0802.27179-5.20415-26.88076-41.5798,26.96539,37.67668.06244,1.105,2.17874-41.63324-23.0132-42.96551,23.29391,35.6583,2.26789-86.31419.00892-.294v.28516l-.37871,68.064,22.91079-26.98321-23.00435,32.84678-.60595,37.27566L204.18523,621.958l-21.4805,41.259-.33863,20.723,31.05561-49.79149-31.17146,57.023Z\",\n    transform: \"translate(-39.70387 -61.04208)\",\n    fill: \"#3f3d56\"\n  })), _circle5 || (_circle5 = /*#__PURE__*/React.createElement(\"circle\", {\n    cx: 712.48505,\n    cy: 565.41532,\n    r: 79,\n    fill: \"#2f2e41\"\n  })), _rect3 || (_rect3 = /*#__PURE__*/React.createElement(\"rect\", {\n    x: 741.77716,\n    y: 691.82355,\n    width: 24,\n    height: 43,\n    transform: \"translate(-215.99457 191.86399) rotate(-17.08345)\",\n    fill: \"#2f2e41\"\n  })), _rect4 || (_rect4 = /*#__PURE__*/React.createElement(\"rect\", {\n    x: 787.6593,\n    y: 677.72286,\n    width: 24,\n    height: 43,\n    transform: \"matrix(0.95588, -0.29376, 0.29376, 0.95588, -209.82788, 204.72037)\",\n    fill: \"#2f2e41\"\n  })), _ellipse7 || (_ellipse7 = /*#__PURE__*/React.createElement(\"ellipse\", {\n    cx: 767.887,\n    cy: 732.00275,\n    rx: 20,\n    ry: 7.5,\n    transform: \"translate(-220.8593 196.83312) rotate(-17.08345)\",\n    fill: \"#2f2e41\"\n  })), _ellipse8 || (_ellipse8 = /*#__PURE__*/React.createElement(\"ellipse\", {\n    cx: 813.47537,\n    cy: 716.94619,\n    rx: 20,\n    ry: 7.5,\n    transform: \"translate(-214.42477 209.56103) rotate(-17.08345)\",\n    fill: \"#2f2e41\"\n  })), _circle6 || (_circle6 = /*#__PURE__*/React.createElement(\"circle\", {\n    cx: 708.52153,\n    cy: 545.71023,\n    r: 27,\n    fill: \"#fff\"\n  })), _circle7 || (_circle7 = /*#__PURE__*/React.createElement(\"circle\", {\n    cx: 708.52153,\n    cy: 545.71023,\n    r: 9,\n    fill: \"#3f3d56\"\n  })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M657.35526,578.74316c-14.48957-25.43323-3.47841-59.016,24.59412-75.0092s62.57592-8.34055,77.06549,17.09268-2.39072,41.6435-30.46325,57.63671S671.84483,604.17639,657.35526,578.74316Z\",\n    transform: \"translate(-39.70387 -61.04208)\",\n    fill: \"#536dfe\"\n  })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M611.29613,661.29875c0,50.55711-30.05368,68.20979-67.13,68.20979q-1.28835,0-2.57261-.02864c-1.71785-.03682-3.41933-.1186-5.10033-.23313-33.46068-2.36813-59.45707-20.92878-59.45707-67.948,0-48.65932,62.18106-110.05916,66.85186-114.60322l.00819-.00817c.18-.17587.27-.26177.27-.26177S611.29613,610.74164,611.29613,661.29875Z\",\n    transform: \"translate(-39.70387 -61.04208)\",\n    fill: \"#536dfe\"\n  })), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M541.72029,721.77424l24.55253-34.30732-24.6139,38.07426-.0654,3.93872c-1.71785-.03682-3.41933-.1186-5.10033-.23313l2.6463-50.58165-.02047-.39266.045-.07361.24949-4.77718-24.67531-38.16836,24.753,34.58547.05731,1.01433,2-38.21741-21.12507-39.44039L541.80616,625.928l2.08182-79.23247.00819-.26994v.26177l-.34764,62.47962,21.031-24.76934-21.11693,30.15184-.55624,34.21735,19.63634-32.839-19.71812,37.87389-.31085,19.0228,28.50763-45.70631-28.614,52.34448Z\",\n    transform: \"translate(-39.70387 -61.04208)\",\n    fill: \"#3f3d56\"\n  })), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M875.29613,682.38411c0,55.07585-32.73985,74.3063-73.13,74.3063q-1.4035,0-2.80255-.0312c-1.87139-.04011-3.72494-.1292-5.55619-.254-36.45135-2.57979-64.77127-22.79937-64.77127-74.02113,0-53.00843,67.73872-119.89612,72.827-124.84633l.00892-.00889c.19608-.19159.29409-.28516.29409-.28516S875.29613,627.30827,875.29613,682.38411Z\",\n    transform: \"translate(-39.70387 -61.04208)\",\n    fill: \"#536dfe\"\n  })), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M799.50168,748.26482l26.747-37.37367-26.81386,41.4773-.07125,4.29076c-1.87139-.04011-3.72494-.1292-5.55619-.254l2.88282-55.10258-.0223-.42775.049-.0802.27179-5.20415L770.108,654.01076l26.96539,37.67668.06244,1.105,2.17874-41.63324-23.0132-42.96551,23.29391,35.6583,2.26789-86.31419.00892-.294v.28516l-.37871,68.064,22.91079-26.98321-23.00435,32.84678-.606,37.27566L822.18523,632.958l-21.4805,41.259-.33863,20.723,31.05561-49.79149-31.17146,57.023Z\",\n    transform: \"translate(-39.70387 -61.04208)\",\n    fill: \"#3f3d56\"\n  })), _ellipse9 || (_ellipse9 = /*#__PURE__*/React.createElement(\"ellipse\", {\n    cx: 721.51694,\n    cy: 656.82212,\n    rx: 12.40027,\n    ry: 39.5,\n    transform: \"translate(-220.83517 966.22323) rotate(-64.62574)\",\n    fill: \"#2f2e41\"\n  })), _ellipse10 || (_ellipse10 = /*#__PURE__*/React.createElement(\"ellipse\", {\n    cx: 112.51694,\n    cy: 651.82212,\n    rx: 12.40027,\n    ry: 39.5,\n    transform: \"translate(-574.07936 452.71367) rotate(-68.15829)\",\n    fill: \"#2f2e41\"\n  })));\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  return /*#__PURE__*/React.createElement(SvgNotFound, _extends({\n    svgRef: ref\n  }, props));\n});\nexport default __webpack_public_path__ + \"static/media/not_found.71c89504.svg\";\nexport { ForwardRef as ReactComponent };","import { Integer, Text, Bool, Num, Float } from 'lib/validate';\r\n\r\nconst bundle = {\r\n    id: Text(),\r\n    type: Text({ inArray: ['percentage', 'fixed_amount'] }),\r\n    quantity: Integer({ min: 1 }),\r\n    reward: Num()\r\n};\r\n\r\nconst bundles = {\r\n    'settings.bundles.text': Text({ max: 55, name: 'offer description' }),\r\n    'settings.bundles.prefix': Text({ max: 45, name: 'pricing' }),\r\n    'settings.bundles.font_size': Float({ min: 0.5, max: 2, name: 'font size' }),\r\n    'settings.bundles.background': { color: true },\r\n    'settings.bundles.color': { color: true },\r\n    'settings.bundles.activeBackground': { color: true },\r\n    'settings.bundles.activeColor': { color: true },\r\n    'settings.bundles.list': { array: bundle }\r\n};\r\n\r\nconst add_to_unlock_product = {\r\n    isRequired:\r\n        'if:settings.type=add_to_unlock,settings.add_to_unlock.show_suggestions=true,settings.add_to_unlock.recommendation_type=custom_recommendation',\r\n    fieldName: 'suggested product',\r\n    id: Text(),\r\n    title: Text(),\r\n    handle: Text(),\r\n    image: Text({ required: false })\r\n};\r\n\r\nconst specific_goal = {\r\n    currency: Text({ name: 'goal currency' }),\r\n    goal: Num({ name: 'spend goal' })\r\n};\r\n\r\nconst add_to_unlock_goal = {\r\n    reward_type: Text({\r\n        name: 'reward type',\r\n        inArray: ['discount', 'free_shipping', 'manual', 'gift']\r\n    }),\r\n    goal: Num({ name: 'spend goal', required: false }),\r\n    specific_goals: { array: specific_goal },\r\n    goal_type: Text({ inArray: ['relative', 'fixed'] }),\r\n    'goal_text.text': Text({ max: 35, min: 3, name: 'text' }),\r\n    'goal_text.font_size': Float({ max: 1.2, min: 0.5, name: 'font size' }),\r\n    'goal_text.color': { color: true },\r\n    show_goal_text: Bool({ name: 'show goal text' }),\r\n    confetti: Bool({ name: 'Confetti' }),\r\n    confetti_length: Num({ name: 'Confetti count', min: 200, max: 600 }),\r\n    'discount.before': Text({ name: 'text before', max: 600 }),\r\n    'discount.type': Text({ name: 'discount type', inArray: ['percentage', 'fixed_amount'] }),\r\n    'discount.after': Text({ name: 'text after', max: 600 }),\r\n    'discount.reward': Num({ name: 'reward' }),\r\n\r\n    'free_shipping.before': Text({ name: 'text before', max: 600 }),\r\n    'free_shipping.after': Text({ name: 'text after', max: 600 }),\r\n    'free_shipping.manual': Bool({ required: false, name: 'free shipping offer handler' }),\r\n\r\n    'manual.before': Text({ name: 'text before', max: 600 }),\r\n    'manual.after': Text({ name: 'text after', max: 600 })\r\n};\r\n\r\nconst add_to_unlock = {\r\n    'settings.add_to_unlock.title.text': Text({ max: 40, min: 3, name: 'text' }),\r\n    'settings.add_to_unlock.title.font_size': Float({ min: 0.5, max: 2, name: 'font size' }),\r\n    'settings.add_to_unlock.title.color': { color: true },\r\n\r\n    'settings.add_to_unlock.background': { color: true },\r\n    'settings.add_to_unlock.borderColor': { color: true },\r\n\r\n    'settings.add_to_unlock.show_product_details.text': Text({ max: 30, min: 3, name: 'text' }),\r\n    'settings.add_to_unlock.show_product_details.font_size': Float({\r\n        min: 0.5,\r\n        max: 2,\r\n        name: 'font size'\r\n    }),\r\n    'settings.add_to_unlock.show_product_details.color': { color: true },\r\n\r\n    'settings.add_to_unlock.upsell_add_button.text': Text({ max: 40, min: 3, name: 'text' }),\r\n    // 'settings.add_to_unlock.upsell_add_button.color': { color: true },\r\n    'settings.add_to_unlock.upsell_add_button.font_size': Float({\r\n        min: 0.5,\r\n        max: 2,\r\n        name: 'font size'\r\n    }),\r\n    'settings.add_to_unlock.show_suggestions': Bool({ name: 'Show suggestions' }),\r\n\r\n    'settings.add_to_unlock.upsell_confirm_button.text': Text({ max: 40, min: 3, name: 'text' }),\r\n    'settings.add_to_unlock.upsell_confirm_button.font_size': Float({\r\n        min: 0.5,\r\n        max: 2,\r\n        name: 'font size'\r\n    }),\r\n\r\n    //TODO: validate shopify product-\r\n    'settings.add_to_unlock.products': { array: add_to_unlock_product },\r\n\r\n    'settings.add_to_unlock.goals': { array: add_to_unlock_goal },\r\n\r\n    'settings.add_to_unlock.separator.active': Bool({ name: 'separator active' }),\r\n    'settings.add_to_unlock.separator.text': Text({ max: 50, name: 'separator text' }),\r\n    'settings.add_to_unlock.isActive': Bool({ name: 'enable progress bar' })\r\n};\r\n\r\nconst one_check_up_sell_product_options = {\r\n    values: {\r\n        array: {\r\n            value: Text()\r\n        }\r\n    }\r\n};\r\nconst one_check_up_sell_product_variants = {\r\n    isRequired: 'if:settings.type=one_check_up_sell',\r\n    fieldName: 'one tick upsell product',\r\n    id: Text(),\r\n    title: Text(),\r\n    price: Text(),\r\n    image: Text({ required: false })\r\n};\r\n\r\nconst one_check_up_sell_product = {\r\n    'product.id': Text({ required: false }),\r\n    'product.title': Text({ required: false }),\r\n    'product.handle': Text({ required: false }),\r\n    'product.variant_id': Text({ required: false }),\r\n    'product.image': Text({ required: false }),\r\n    'product.variants': { array: one_check_up_sell_product_variants }\r\n    // 'settings.one_check_up_sell.product.options': { array: one_check_up_sell_product_options },\r\n};\r\n\r\nconst one_check_up_sell = {\r\n    is_ticked_by_default: Bool({ required: false }),\r\n    include_in_atu: Bool({ required: false }),\r\n    text: Text({ required: true, name: 'text', max: 250 }),\r\n    product_type: Text({\r\n        inArray: ['existing', 'hidden']\r\n    }),\r\n    ...one_check_up_sell_product\r\n};\r\n\r\nconst multi_one_check_upsell = {\r\n    'settings.multi_one_check_upsell.products': {\r\n        array: one_check_up_sell\r\n    }\r\n};\r\n\r\nexport const modules = {\r\n    'settings.modules.order': {\r\n        array: {\r\n            value: Text({ inArray: ['order_note', 'random_text', 'checkout_button'] })\r\n        }\r\n    },\r\n    'settings.modules.random_text.text': Text({ max: 6000 }),\r\n    'settings.modules.random_text.active': Bool()\r\n    // 'settings.modules.order_note.text': Text({ max: 300, required: false  }),\r\n    // 'settings.modules.order_note.active': Bool(),\r\n};\r\n\r\nconst settings = {\r\n    'settings.type': Text({\r\n        inArray: ['bundles', 'add_to_unlock', 'one_check_up_sell'],\r\n        name: 'campaign type'\r\n    }),\r\n    'settings.applied_discount_title': Text({\r\n        required: false,\r\n        name: 'discount title'\r\n    }),\r\n    ...bundles,\r\n    ...add_to_unlock,\r\n    // ...one_check_up_sell,\r\n    ...multi_one_check_upsell,\r\n    ...modules\r\n};\r\n\r\nconst target_selected = {\r\n    isRequired: 'if:target.type=specific_products',\r\n    fieldName: 'target product',\r\n    id: Text(),\r\n    title: Text(),\r\n    handle: Text(),\r\n    image: Text({ required: false })\r\n};\r\n\r\nconst target = {\r\n    'target.type': Text({ inArray: ['all_products', 'specific_products', 'specific_collections'] }),\r\n    // \"target.selected.*\" : Required({inArray: [\"all_products\", 'specific_products']})\r\n    'target.selected': { array: target_selected }\r\n    // countries\r\n};\r\n\r\nconst CampaignConstraints = {\r\n    name: Text({ min: 1, max: 50 }),\r\n    ...target,\r\n    ...settings\r\n};\r\n\r\nexport default CampaignConstraints;\r\n","import { Integer, Text, Float, Bool } from 'lib/validate';\r\nimport { modules } from './CampaignConstraints';\r\n\r\nconst theme = {\r\n    'settings.theme.primary': { color: true },\r\n    'settings.theme.secondary': { color: true },\r\n    'settings.theme.background': { color: true }\r\n};\r\nconst font = {\r\n    'settings.font.color': { color: true },\r\n    'settings.font.size': Integer({ min: 12, max: 18 }),\r\n    'settings.font.family': Text({ required: false }),\r\n    'settings.font.custom': Bool()\r\n};\r\nconst checkout_button = {\r\n    'settings.modules.checkout_button.button_text.text': Text({ max: 50, min: 3, name: 'text' }),\r\n    'settings.modules.checkout_button.button_text.font_size': Float({\r\n        min: 0.5,\r\n        max: 2,\r\n        name: 'font size'\r\n    }),\r\n    'settings.modules.checkout_button.button_text.color': { color: true },\r\n    'settings.modules.checkout_button.button_text_loading.text': Text({\r\n        max: 20,\r\n        min: 3,\r\n        name: 'text'\r\n    }),\r\n    'settings.modules.checkout_button.button_text_loading.color': { color: true },\r\n    'settings.modules.checkout_button.background': { color: true },\r\n    // 'settings.modules.checkout_button.hoverBackground': { color: true },\r\n    'settings.modules.checkout_button.coupon.background': { color: true },\r\n    // 'settings.modules.checkout_button.coupon.hoverBackground': { color: true },\r\n    'settings.modules.checkout_button.use_coupon_code.text': Text({\r\n        max: 40,\r\n        min: 3,\r\n        name: 'text'\r\n    }),\r\n    'settings.modules.checkout_button.use_coupon_code.font_size': Float({\r\n        min: 0.5,\r\n        max: 2,\r\n        name: 'font size'\r\n    }),\r\n    'settings.modules.checkout_button.use_coupon_code.color': { color: true },\r\n    'settings.modules.checkout_button.enter_coupon_code.text': Text({\r\n        max: 40,\r\n        min: 3,\r\n        name: 'text'\r\n    }),\r\n    'settings.modules.checkout_button.enter_coupon_code.font_size': Float({\r\n        min: 0.5,\r\n        max: 2,\r\n        name: 'font size'\r\n    }),\r\n    'settings.modules.checkout_button.enter_coupon_code.color': { color: true },\r\n    'settings.modules.checkout_button.apply_coupon_code.text': Text({\r\n        max: 15,\r\n        min: 3,\r\n        name: 'text'\r\n    }),\r\n    'settings.modules.checkout_button.apply_coupon_code.font_size': Float({\r\n        min: 0.5,\r\n        max: 2,\r\n        name: 'font size'\r\n    }),\r\n    'settings.modules.checkout_button.apply_coupon_code.color': { color: true },\r\n    'settings.modules.checkout_button.edit_coupon_code.text': Text({\r\n        max: 35,\r\n        min: 3,\r\n        name: 'text'\r\n    }),\r\n    'settings.modules.checkout_button.edit_coupon_code.font_size': Float({\r\n        min: 0.5,\r\n        max: 2,\r\n        name: 'font size'\r\n    }),\r\n    'settings.modules.checkout_button.close_coupon_code.text': Text({\r\n        max: 35,\r\n        min: 3,\r\n        name: 'text'\r\n    }),\r\n    'settings.modules.checkout_button.close_coupon_code.font_size': Float({\r\n        min: 0.5,\r\n        max: 2,\r\n        name: 'font size'\r\n    }),\r\n    'settings.modules.checkout_button.subtotal.text': Text({ max: 35, min: 3, name: 'text' }),\r\n    'settings.modules.checkout_button.subtotal.font_size': Float({\r\n        min: 0.5,\r\n        max: 2,\r\n        name: 'font size'\r\n    }),\r\n    'settings.modules.checkout_button.subtotal.color': { color: true }\r\n};\r\n\r\nconst header = {\r\n    'settings.header.title.text': Text({ max: 35, min: 3 }),\r\n    'settings.header.title.font_size': Float({ max: 2, min: 0.5, name: 'cart title font size' }),\r\n    'settings.header.title.color': { color: true },\r\n    'settings.header.background': { color: true }\r\n};\r\n\r\nconst product = {\r\n    'settings.product.title.text': Text({ max: 35, min: 3, name: 'text' }),\r\n    'settings.product.title.font_size': Float({ max: 2, min: 0.5, name: 'font size' }),\r\n    'settings.product.title.color': { color: true },\r\n    'settings.product.price.text': Text({ max: 35, min: 3, name: 'text' }),\r\n    'settings.product.price.font_size': Float({ max: 2, min: 0.5, name: 'font size' }),\r\n    'settings.product.sold_out': Text({ name: 'sold out' }),\r\n    'settings.product.price.color': { color: true },\r\n    'settings.product.image_size': Integer({ min: 50, max: 120, name: 'product image size' })\r\n};\r\n\r\n// const product_details = {\r\n// \t'settings.product_details.atcButton.text': Text({ max: 35, min: 3, name: 'text' }),\r\n// \t'settings.product_details.atcButton.font_size': Float({ max: 2, min: 0.5, name: 'font size' }),\r\n// \t'settings.product_details.atcButton.color': { color: true },\r\n// \t'settings.product_details.readMore.text': Text({ max: 35, min: 3, name: 'text' }),\r\n// \t'settings.product_details.readMore.font_size': Float({ max: 2, min: 0.5, name: 'font size' }),\r\n// \t'settings.product_details.readMore.color': { color: true },\r\n// \t'settings.product_details.truncate_length': Integer({ min: 50, max: 500, name: 'description length' }),\r\n// \t'settings.product_details.truncate': Bool(),\r\n// \t'settings.product_details.atcButton_background': { color: true },\r\n// \t'settings.product_details.atcButton_hoverBackground': { color: true },\r\n// };\r\n\r\nconst settings = {\r\n    'settings.multiCurrencyMode': Bool(),\r\n    'settings.empty_cart': Text(),\r\n    ...theme,\r\n    ...font,\r\n    ...{ ...modules, ...checkout_button },\r\n    ...header,\r\n    ...product\r\n    // ...product_details,\r\n};\r\n\r\nconst ShopConstraints = {\r\n    ...settings\r\n};\r\n\r\nexport default ShopConstraints;\r\n","import React, { useState, useReducer, useContext } from \"react\";\r\nimport {\r\n  CampaignReducer,\r\n  SET_ITEM,\r\n  NEW_BUNDLE,\r\n  DELETE_BUNDLE,\r\n  DELETE_GOAL,\r\n  DELETE_OCU_PRODUCT,\r\n  NEW_GOAL,\r\n  DISCARD,\r\n  NEW_OCU_PRODUCT,\r\n  UPDATE_OLD_OCU,\r\n  NEW_SPECIFIC_GOAL,\r\n  REMOVE_SPECIFIC_GOAL\r\n} from \"reducers/CampaignReducer\";\r\nimport { useMutation } from \"@apollo/react-hooks\";\r\nimport useReactRouter from \"use-react-router\";\r\nimport { Loading, Toast } from \"@shopify/app-bridge-react\";\r\nimport {\r\n  CREATE_CAMPAIGN_MUTATION,\r\n  UPDATE_CAMPAIGN_MUTATION\r\n} from \"lib/mutations\";\r\nimport { LIST_SHOP_CAMPAIGNS, GET_SINGLE_CAMPAIGN } from \"Queries\";\r\nimport { SHOPIFY_API_KEY, SHOPIFY_EMBEDDED_FORCE_REDIRECT } from \"aws-exports\";\r\nimport { NEW_CAMPAIGN_INITIAL_STATE } from \"lib/globals\";\r\nimport { Run } from \"lib/validate\";\r\nimport { CampaignConstraints } from \"Constraints\";\r\nimport removeTypeName, { removeByType } from \"lib/removeTypeName\";\r\nimport UserContext from \"context/UserContext\";\r\nimport ShopContext from \"context/ShopContext\";\r\nimport _ from \"lodash\";\r\n\r\nconst CampaignContext = React.createContext(null);\r\nexport const CampaignProvider = CampaignContext.Provider;\r\n\r\nexport const withCampaignProvider = (\r\n  ChildComponent,\r\n  campaign = null,\r\n  duplication = false,\r\n  setIsOpen=()=>{}\r\n) => {\r\n  return () => {\r\n    const user = useContext(UserContext);\r\n    const {\r\n      state: {\r\n        settings: {\r\n          theme: { primary, secondary, background },\r\n          font,\r\n          modules: { checkout_button, order_note },\r\n          default_language,\r\n          multiCurrencyMode,\r\n          product_details\r\n        },\r\n        currency\r\n      }\r\n    } = useContext(ShopContext);\r\n\r\n    if (!campaign)\r\n      campaign = NEW_CAMPAIGN_INITIAL_STATE(\r\n        {\r\n          checkout_button,\r\n          primary,\r\n          secondary,\r\n          font_color: font.color,\r\n          background,\r\n          multiCurrencyMode\r\n        },\r\n        default_language,\r\n        currency\r\n      );\r\n    else {\r\n      if (!campaign.settings.modules.order_note) {\r\n        campaign.settings.modules.order_note = order_note;\r\n        campaign.settings.modules.order = [\r\n          ...campaign.settings.modules.order,\r\n          \"order_note\"\r\n        ];\r\n      }\r\n      if (!campaign.target.countries) {\r\n        campaign.target.countries =\r\n          NEW_CAMPAIGN_INITIAL_STATE().target.countries;\r\n      }\r\n\r\n      // migrations\r\n      if (!campaign.settings.add_to_unlock.product_details) {\r\n        campaign.settings.add_to_unlock.product_details = product_details;\r\n      }\r\n\r\n      if (!campaign.settings.one_check_up_sell?.highlight && !campaign.settings.multi_one_check_upsell) {\r\n        campaign.settings.one_check_up_sell.highlight = primary;\r\n      }\r\n      if (!campaign.settings.add_to_unlock.progress_primary) {\r\n        campaign.settings.add_to_unlock.progress_primary = primary;\r\n        campaign.settings.add_to_unlock.progress_secondary = secondary;\r\n        campaign.settings.add_to_unlock.progress_complete = primary;\r\n      }\r\n      if (!campaign.settings.add_to_unlock.upsell_add_button.color) {\r\n        campaign.settings.add_to_unlock.upsell_add_button.color = primary;\r\n      }\r\n    }\r\n    let originalCampaign = { ...campaign };\r\n    if (duplication) {\r\n      originalCampaign.name = originalCampaign.name + \" \";\r\n    }\r\n    const [validationErrors, setValidationErrors] = useState({});\r\n    const [originalState, setOriginalState] = useState(originalCampaign);\r\n    const [showValidationError, setShowValidationError] = useState(\"\");\r\n    const [state, dispatch] = useReducer(\r\n      CampaignReducer(default_language, currency),\r\n      campaign\r\n    );\r\n    const { history } = useReactRouter();\r\n    let [\r\n      CreateCampaignMutation,\r\n      {\r\n        loading: CreateCampaignMutation_Loading,\r\n        error: CreateCampaignMutation_Error,\r\n        data: CreateCampaignMutation_Data\r\n      }\r\n    ] = useMutation(CREATE_CAMPAIGN_MUTATION);\r\n\r\n    let [\r\n      UpdateCampaignMutation,\r\n      {\r\n        loading: UpdateCampaignMutation_Loading,\r\n        error: UpdateCampaignMutation_Error,\r\n        data: UpdateCampaignMutation_Data\r\n      }\r\n    ] = useMutation(UPDATE_CAMPAIGN_MUTATION);\r\n\r\n    const setItem = (path, value) => dispatch({ type: SET_ITEM, path, value });\r\n    const newBundle = () => dispatch({ type: NEW_BUNDLE });\r\n    const deleteBundle = (value) => dispatch({ type: DELETE_BUNDLE, value });\r\n\r\n    const newGoal = () => dispatch({ type: NEW_GOAL });\r\n    const newSpecificGoal = (index) => dispatch({ type: NEW_SPECIFIC_GOAL, value: index });\r\n    const removeSpecificGoal = (goal_index, specific_goal_index) => dispatch({ type: REMOVE_SPECIFIC_GOAL, value: specific_goal_index, goal_index });\r\n    const deleteGoal = (value) => dispatch({ type: DELETE_GOAL, value });\r\n    const newOneCheckUpsellProduct = () => dispatch({ type: NEW_OCU_PRODUCT });\r\n    const deleteOneCheckUpsellProduct = (value) => dispatch({ type: DELETE_OCU_PRODUCT, value });\r\n    const updateOldOCU = () => {\r\n      const { highlight, ...rest } = campaign.settings.one_check_up_sell\r\n      const value = {\r\n        variant: \"switch\",\r\n        align: \"natural\",\r\n        border: false,\r\n        border_color: { r: 226, g: 232, b: 240, a: 1 },\r\n        switch_on: primary,\r\n        switch_off: secondary,\r\n        highlight,\r\n        products: [rest]\r\n      }\r\n      dispatch({ type: UPDATE_OLD_OCU, value });\r\n    }\r\n\r\n    const discard = () => {\r\n      dispatch({ type: DISCARD, value: originalState });\r\n    };\r\n    const validate = (state, specific = [], silent = false) => {\r\n      return Run(\r\n        state,\r\n        specific,\r\n        {\r\n          errors: validationErrors,\r\n          setErrors: setValidationErrors,\r\n          constraints: CampaignConstraints\r\n        },\r\n        silent\r\n      );\r\n    };\r\n\r\n    const saveCampaign = async (overrides = {}) => {\r\n      const errors = validate(state);\r\n      if (errors) {\r\n        const flatErrors = Object.values(errors)\r\n          .map((error) => error.filter(Boolean))\r\n          .flat(Infinity);\r\n        const errorMessage =\r\n          typeof flatErrors[0] === \"object\"\r\n            ? Object.values(flatErrors[0]).flat(Infinity)[0]\r\n            : flatErrors[0];\r\n        if (errorMessage) setShowValidationError(errorMessage);\r\n        if (flatErrors.length && errorMessage) return errors;\r\n      }\r\n      if (state.settings.type === \"add_to_unlock\") {\r\n        // making sure one of [progress,recommendations] is enabled\r\n        const { add_to_unlock } = state.settings;\r\n        if (!add_to_unlock.isActive && !add_to_unlock.show_suggestions) {\r\n          setShowValidationError(\r\n            \"Please enable add to unlock or products to suggest.\"\r\n          );\r\n          const newErrors = {\r\n            \"settings.add_to_unlock.isActive\": [\r\n              \"Please enable add to unlock or products to suggest.\"\r\n            ],\r\n            \"settings.add_to_unlock.show_suggestions\": [\r\n              \"Please enable add to unlock or products to suggest.\"\r\n            ]\r\n          };\r\n          setValidationErrors(newErrors);\r\n          return newErrors;\r\n        }\r\n\r\n        const goals = add_to_unlock.goals.map(({ goal }) => goal);\r\n        const goalsErrors = {\r\n          \"settings.add_to_unlock.goals\": []\r\n        };\r\n        goals.forEach((goal, index) => {\r\n          const nextGoal = goals[index + 1];\r\n          if (nextGoal && nextGoal <= goal) {\r\n            goalsErrors[\"settings.add_to_unlock.goals\"].push({\r\n              goal: `Spend goal must be greater than ${goal} on \"Reward ${index + 2\r\n                }\"`\r\n            });\r\n          } else {\r\n            goalsErrors[\"settings.add_to_unlock.goals\"].push(-index);\r\n          }\r\n        });\r\n        const truthyErrors = goalsErrors[\"settings.add_to_unlock.goals\"].filter(\r\n          (e) => typeof e === \"object\"\r\n        );\r\n        if (truthyErrors.length) {\r\n          setShowValidationError(truthyErrors[0].goal);\r\n          setValidationErrors(goalsErrors);\r\n          return goalsErrors;\r\n        }\r\n      }\r\n      state.target.ids = state.target.selected.map(({ id }) => id);\r\n      //remove empty strings because dynamodb doesn't allow it\r\n      //and null values because there may be some new settings\r\n      // const saveState = _.merge(\r\n      // \t{},\r\n      // \tNEW_CAMPAIGN_INITIAL_STATE(),\r\n      // \tremoveByType(removeTypeName(state), (v) => v !== '' && v !== null)\r\n      // );\r\n\r\n      // const saveState = _.mergeWith(\r\n      // \tNEW_CAMPAIGN_INITIAL_STATE(),\r\n      // \tremoveByType(removeTypeName(state), (v) => v !== '' && v !== null),\r\n      // \t(objValue, srcValue) => srcValue && _.isArray(srcValue) ? srcValue : undefined\r\n      // );\r\n\r\n      const saveState = removeByType(\r\n        removeTypeName(state),\r\n        (v) => v !== \"\" && v !== null\r\n      );\r\n      if (!state.id) {\r\n        const {\r\n          data: { createCampaign }\r\n        } = await CreateCampaignMutation({\r\n          variables: {\r\n            input: {\r\n              ...saveState,\r\n              ...{ ...overrides, active: true }\r\n            }\r\n          },\r\n          refetchQueries: [\r\n            {\r\n              query: LIST_SHOP_CAMPAIGNS,\r\n              variables: {\r\n                userId: user.attributes.sub\r\n              }\r\n            }\r\n          ]\r\n        });\r\n        history.push(\"/campaigns/\" + createCampaign.id);\r\n      } else {\r\n        const { id, ...input } = { ...saveState, ...overrides };\r\n        await UpdateCampaignMutation({\r\n          variables: { id, input },\r\n          refetchQueries: [\r\n            {\r\n              query: LIST_SHOP_CAMPAIGNS,\r\n              variables: {\r\n                userId: user.attributes.sub\r\n              }\r\n            },\r\n            {\r\n              query: GET_SINGLE_CAMPAIGN,\r\n              variables: {\r\n                id\r\n              }\r\n            }\r\n          ]\r\n        });\r\n      }\r\n      setOriginalState(state);\r\n    };\r\n\r\n    return (\r\n      <CampaignProvider\r\n        value={{\r\n          originalState,\r\n          discard,\r\n          state,\r\n          setItem,\r\n          newBundle,\r\n          newGoal,\r\n          newSpecificGoal,\r\n          removeSpecificGoal,\r\n          newOneCheckUpsellProduct,\r\n          deleteGoal,\r\n          deleteBundle,\r\n          deleteOneCheckUpsellProduct,\r\n          dispatch,\r\n          saveCampaign,\r\n          validate,\r\n          validationErrors,\r\n          updateOldOCU,\r\n        }}\r\n      >\r\n        {(CreateCampaignMutation_Loading || UpdateCampaignMutation_Loading) && (\r\n          <Loading />\r\n        )}\r\n        {(CreateCampaignMutation_Error || UpdateCampaignMutation_Error) && (\r\n          <Toast\r\n            content={`Something went wrong`}\r\n            duration={3000}\r\n            error\r\n            onDismiss={() => {\r\n              UpdateCampaignMutation_Error = null;\r\n              CreateCampaignMutation_Error = null;\r\n            }}\r\n          />\r\n        )}\r\n        {(CreateCampaignMutation_Data || UpdateCampaignMutation_Data) && (\r\n          <Toast\r\n            content={`Campaign has been ${state.id ? \"updated\" : \"saved\"}`}\r\n            duration={3000}\r\n            onDismiss={() => {}}\r\n          />\r\n        )}\r\n        {showValidationError && (\r\n          <Toast\r\n            content={showValidationError}\r\n            error={true}\r\n            duration={3000}\r\n            onDismiss={() => setShowValidationError(\"\")}\r\n          />\r\n        )}\r\n        <ChildComponent setIsOpen={setIsOpen} />\r\n      </CampaignProvider>\r\n    );\r\n  };\r\n};\r\nexport default CampaignContext;\r\n","import React, { useState, useContext, useEffect, useRef } from 'react';\r\nimport { Page, Carousel, Button, Alert } from 'components';\r\nimport useReactRouter from 'use-react-router';\r\nimport { Modal } from '@shopify/app-bridge-react';\r\nimport FirstStep from './settings/FirstStep';\r\nimport ShopContext from 'context/ShopContext';\r\nimport SecondStep from './settings/SecondStep';\r\nimport CampaignContext from 'context/CampaignContext';\r\nimport PreviewContext from 'context/PreviewContext';\r\nimport { useTransition, animated } from 'react-spring';\r\nimport _ from 'lodash';\r\nimport { trackMixPanelEvent } from \"lib/mixpanel\"\r\n\r\nconst Create = ({ setIsOpen }) => {\r\n\tconst { history } = useReactRouter();\r\n\tconst [showConfirmCancel, setShowConfirmCancel] = useState(false);\r\n\tconst [scrollTop, setScrollTop] = useState(0);\r\n\tconst newCampaignContext = useContext(CampaignContext);\r\n\tconst shopContext = useContext(ShopContext);\r\n\tconst { AppLocalStorage } = shopContext\r\n\tconst { validate, state, originalState, discard, validationErrors } = newCampaignContext;\r\n\tconst { previewCampaign, setShowATUAfterText } = useContext(PreviewContext);\r\n\tconst [activeTab, setActiveTab] = useState(0);\r\n\tconst stickyHeader = useRef(null);\r\n\tconst [stickyHeaderPosition, setStickyHeaderPosition] = useState(0);\r\n\tconst transitions = useTransition(!_.isEqual(originalState, state), null, {\r\n\t\tfrom: { position: 'absolute', opacity: 0 },\r\n\t\tenter: { opacity: 1 },\r\n\t\tleave: { opacity: 0 },\r\n\t});\r\n\r\n\t// console.log(\"shopContext\")\r\n\t// console.log(shopContext)\r\n\tuseEffect(() => {\r\n\t\tpreviewCampaign(state);\r\n\t}, [state]);\r\n\r\n\treturn (\r\n\t\t<Page\r\n\t\t\tpadding={0}\r\n\t\t\tonScroll={(scrollTop) => {\r\n\t\t\t\tif (!stickyHeader.current) {\r\n\t\t\t\t\tsetStickyHeaderPosition(0);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tif (scrollTop > stickyHeader.current.offsetTop + 15)\r\n\t\t\t\t\tsetStickyHeaderPosition(scrollTop - stickyHeader.current.offsetTop - 15);\r\n\t\t\t\telse setStickyHeaderPosition(0);\r\n\t\t\t}}\r\n\t\t\theader={{\r\n\t\t\t\ttitle: state.id ? state.name.substring(0, 25) : 'New Campaign',\r\n\t\t\t}}\r\n\t\t\tTopContent={{\r\n\t\t\t\ttransitions,\r\n\t\t\t\trender: ({ error, loading }) => (\r\n\t\t\t\t\t<Alert\r\n\t\t\t\t\t\ttype=\"save_settings\"\r\n\t\t\t\t\t\ttitle=\"unsaved changes\"\r\n\t\t\t\t\t\tborderPosition=\"none\"\r\n\t\t\t\t\t\tpaddingX=\"px-6\"\r\n\t\t\t\t\t\tactions={[\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\ttext: 'Discard',\r\n\t\t\t\t\t\t\t\ttype: 'secondary',\r\n\t\t\t\t\t\t\t\tloading: false,\r\n\t\t\t\t\t\t\t\tonClick: () => discard(),\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\ttext: newCampaignContext.originalState.active ? 'Save' : 'Save & Activate',\r\n\t\t\t\t\t\t\t\ttype: Object.values(validationErrors)\r\n\t\t\t\t\t\t\t\t\t.map((error) => error.filter(Boolean))\r\n\t\t\t\t\t\t\t\t\t.flat(Infinity)\r\n\t\t\t\t\t\t\t\t\t.filter(Boolean).length\r\n\t\t\t\t\t\t\t\t\t? 'danger'\r\n\t\t\t\t\t\t\t\t\t: 'primary',\r\n\t\t\t\t\t\t\t\t// disabled: Object.keys(validationErrors).length,\r\n\t\t\t\t\t\t\t\tonClick: () => {\r\n\t\t\t\t\t\t\t\t\tif (!AppLocalStorage.getItem('first_new_campaign')) {\r\n\t\t\t\t\t\t\t\t\t\tAppLocalStorage.setItem('first_new_campaign', true)\r\n\t\t\t\t\t\t\t\t\t\ttrackMixPanelEvent('First new campaign', shopContext.state?.id)\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\tnewCampaignContext.saveCampaign(\r\n\t\t\t\t\t\t\t\t\t\t!newCampaignContext.originalState.active ? { active: true } : {}\r\n\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t]}\r\n\t\t\t\t\t/>\r\n\t\t\t\t),\r\n\t\t\t}}\r\n\t\t>\r\n\t\t\t{/* <Carousel\r\n\t\t\t\tactive={activeTab}\r\n\t\t\t\tcontents={[\r\n\t\t\t\t\t<FirstStep context={newCampaignContext} setActiveTab={setActiveTab} />,\r\n\t\t\t\t\t<SecondStep\r\n\t\t\t\t\t\tsetActiveTab={setActiveTab}\r\n\t\t\t\t\t\tcontext={newCampaignContext}\r\n\t\t\t\t\t\tstickyHeaderPosition={stickyHeaderPosition}\r\n\t\t\t\t\t\tstickyHeader={stickyHeader}\r\n\t\t\t\t\t/>,\r\n\t\t\t\t]}\r\n\t\t\t/> */}\r\n\t\t\t<FirstStep context={newCampaignContext} setActiveTab={setActiveTab} setIsOpen={setIsOpen} />\r\n\t\t\t<SecondStep\r\n\t\t\t\tsetActiveTab={setActiveTab}\r\n\t\t\t\tcontext={newCampaignContext}\r\n\t\t\t\tshopContext={shopContext}\r\n\t\t\t\tstickyHeaderPosition={stickyHeaderPosition}\r\n\t\t\t\tstickyHeader={stickyHeader}\r\n\t\t\t\tsetShowATUAfterText={setShowATUAfterText}\r\n\t\t\t/>\r\n\t\t\t<Modal\r\n\t\t\t\ttitle=\"Confirm Cancel\"\r\n\t\t\t\tmessage=\"Are you sure, You want to cancel\"\r\n\t\t\t\topen={showConfirmCancel}\r\n\t\t\t\tprimaryAction={{\r\n\t\t\t\t\tcontent: 'Yes, Cancel',\r\n\t\t\t\t\tonAction: () => {\r\n\t\t\t\t\t\tsetShowConfirmCancel(false);\r\n\t\t\t\t\t\thistory.push('/campaigns');\r\n\t\t\t\t\t},\r\n\t\t\t\t}}\r\n\t\t\t\tsecondaryActions={[\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tcontent: 'No',\r\n\t\t\t\t\t\tonAction: () => setShowConfirmCancel(false),\r\n\t\t\t\t\t},\r\n\t\t\t\t]}\r\n\t\t\t/>\r\n\t\t</Page>\r\n\t);\r\n};\r\n\r\nexport default Create;\r\n","import React, { useContext } from 'react';\r\nimport { withCampaignProvider } from 'context/CampaignContext';\r\nimport Create from './Create';\r\nimport { GET_SINGLE_CAMPAIGN } from 'Queries';\r\nimport { useQuery } from '@apollo/react-hooks';\r\nimport { Spinner } from 'components';\r\nimport useReactRouter from 'use-react-router';\r\nimport ShopContext from 'context/ShopContext';\r\n\r\nconst Update = ({ setIsOpen }) => {\r\n    const { match } = useReactRouter();\r\n    const { id } = match.params;\r\n    const { data, loading, error } = useQuery(GET_SINGLE_CAMPAIGN, {\r\n        variables: {\r\n            id\r\n        },\r\n        fetchPolicy: 'no-cache'\r\n    });\r\n    const { state: { settings: { theme: { primary, secondary, background } } } } = useContext(\r\n        ShopContext\r\n    );\r\n    if (error) throw new Error(error);\r\n    if (loading) return <Spinner />;\r\n    if (data) {\r\n        if (\r\n            data.campaign?.settings.type === 'bundles' &&\r\n            !data.campaign?.settings.bundles.variantsPicker\r\n        ) {\r\n            const default_font_color = { r: 22, g: 37, b: 67, a: 1 };\r\n            data.campaign.settings.bundles = Object.assign({}, data.campaign.settings.bundles, {\r\n                style: 'vertical',\r\n                labelColor: primary,\r\n                variantsPicker: {\r\n                    active: false,\r\n                    label: 'Product #{{number}}',\r\n                    confirm: 'Confirm',\r\n                    textColor: default_font_color,\r\n                    dropdownTextColor: primary,\r\n                    dropdownBackground: secondary,\r\n                    confirmTextColor: background,\r\n                    confirmBackground: primary\r\n                }\r\n            });\r\n        }\r\n        if (\r\n            data.campaign?.settings.type === 'bundles' &&\r\n            !data.campaign?.settings.bundles.badge\r\n        ) {\r\n            data.campaign.settings.bundles = Object.assign({}, data.campaign.settings.bundles, {\r\n                badge: {\r\n                    text: {\r\n                        a: 1,\r\n                        r: 0,\r\n                        g: 45,\r\n                        b: 255\r\n                    },\r\n                    background: {\r\n                        a: 1,\r\n                        r: 240,\r\n                        g: 242,\r\n                        b: 255\r\n                    },\r\n                    border: {\r\n                        a: 1,\r\n                        r: 161,\r\n                        g: 178,\r\n                        b: 255\r\n                    }\r\n                }\r\n            });\r\n        }\r\n        const UpdateCampaign = withCampaignProvider(Create, data.campaign, null, setIsOpen);\r\n        return <UpdateCampaign />;\r\n    }\r\n};\r\n\r\nexport default Update;\r\n","import React from 'react';\r\nimport { withCampaignProvider } from 'context/CampaignContext';\r\nimport Create from './Create';\r\nimport { GET_SINGLE_CAMPAIGN } from 'Queries';\r\nimport { useQuery } from '@apollo/react-hooks';\r\nimport { Spinner } from 'components';\r\nimport useReactRouter from 'use-react-router';\r\n\r\nconst Duplicate = ({ setIsOpen }) => {\r\n\tconst { match } = useReactRouter();\r\n\tconst { id } = match.params;\r\n\tconst { data, loading, error } = useQuery(GET_SINGLE_CAMPAIGN, {\r\n\t\tvariables: {\r\n\t\t\tid,\r\n\t\t},\r\n\t\tfetchPolicy: 'cache-first',\r\n\t});\r\n\r\n\tif (error) throw new Error(error);\r\n\tif (loading) return <Spinner />;\r\n\r\n\tlet campaignData = null\r\n\tif(data.campaign){\r\n\t\tlet {id:{campaignId}, name, ...other} = data.campaign\r\n\t\tcampaignData = other\r\n\t\tcampaignData.name = `${name} (copy)`\r\n\t}\r\n\t\r\n\tif (data) {\r\n\t\tconst DuplicateCampaign = withCampaignProvider(Create, campaignData, true, setIsOpen); //duplication = true\r\n\t\treturn <DuplicateCampaign />;\r\n\t}\r\n};\r\n\r\nexport default Duplicate;\r\n","import React, { Component } from 'react';\r\nimport { EmptyState } from 'components';\r\nimport { ReactComponent as NotFound } from 'svgs/not_found.svg';\r\n\r\nclass ErrorScreen extends Component {\r\n\tstate = {\r\n\t\thasError: false,\r\n\t\terror: null,\r\n\t\tinfo: null,\r\n\t};\r\n\r\n\tcomponentDidCatch(error, info) {\r\n\t\tconsole.log('ERROR', error);\r\n\t\tconsole.log('INFO', info);\r\n\t\tthis.setState({ hasError: true, error, info });\r\n\t}\r\n\r\n\trender() {\r\n\t\tif (!this.state.hasError) return this.props.children;\r\n\r\n\t\treturn (\r\n\t\t\t<EmptyState\r\n\t\t\t\theading=\"Something went wrong.\"\r\n\t\t\t\tIllustration={NotFound}\r\n\t\t\t\taction={{\r\n\t\t\t\t\ttext: 'Go to Dashboard',\r\n\t\t\t\t\turl: '/',\r\n\t\t\t\t}}\r\n\t\t\t\tbackground='#f6f7fb'\r\n\t\t\t>\r\n\t\t\t\t<details style={{ whiteSpace: 'pre-wrap' }}>\r\n\t\t\t\t\t{this.state.error.toString()}\r\n\t\t\t\t\t<br />\r\n\t\t\t\t\t{this.state.info.componentStack}\r\n\t\t\t\t</details>\r\n\t\t\t</EmptyState>\r\n\t\t);\r\n\t}\r\n}\r\n\r\nexport default ErrorScreen;\r\n","import React from 'react';\r\nimport { Embedded, EmptyState } from 'components';\r\nimport { ReactComponent as NotFound } from 'svgs/not_found.svg';\r\n\r\nconst NotFoundScreen = () => {\r\n\treturn (\r\n\t\t<EmptyState\r\n\t\t\theading=\"Page Not Found\"\r\n\t\t\tIllustration={NotFound}\r\n\t\t\taction={{\r\n\t\t\t\ttext: 'Go to Dashboard',\r\n\t\t\t\turl: '/',\r\n\t\t\t}}\r\n\t\t>\r\n\t\t\t<p>Oh no! We could not find the page you were looking for.</p>\r\n\t\t</EmptyState>\r\n\t);\r\n};\r\n\r\nexport default NotFoundScreen;\r\n","var _metadata, _g;\n\nvar _excluded = [\"svgRef\", \"title\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar SvgDots = function SvgDots(_ref) {\n  var svgRef = _ref.svgRef,\n      title = _ref.title,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    width: \"140px\",\n    height: \"140px\",\n    viewBox: \"0 0 1280.000000 1280.000000\",\n    preserveAspectRatio: \"xMidYMid meet\",\n    ref: svgRef\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _metadata || (_metadata = /*#__PURE__*/React.createElement(\"metadata\", null, \"\\r\\nCreated by potrace 1.15, written by Peter Selinger 2001-2017\\r\\n\")), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n    transform: \"translate(0.000000,1280.000000) scale(0.100000,-0.100000)\",\n    fill: \"#e1f7ff\",\n    stroke: \"none\"\n  }, /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M550 12465 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1830 12465 c-151 -50 -253 -216 -222 -362 25 -119 136 -230 254 -255 194 -41 395 142 375 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M3110 12465 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M4390 12465 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M5670 12465 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M6950 12465 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M8230 12465 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M9510 12465 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M10790 12465 c-105 -35 -200 -141 -222 -248 -25 -117 32 -244 142 -319 107 -74 229 -75 337 -3 177 118 201 338 53 485 -85 86 -207 119 -310 85z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M12070 12465 c-105 -35 -200 -141 -222 -248 -25 -117 32 -244 142 -319 107 -74 229 -75 337 -3 177 118 201 338 53 485 -85 86 -207 119 -310 85z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M550 11185 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1830 11185 c-151 -50 -253 -216 -222 -362 25 -119 136 -230 254 -255 194 -41 395 142 375 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M3110 11185 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M4390 11185 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M5670 11185 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M6950 11185 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M8230 11185 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M9510 11185 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M10790 11185 c-105 -35 -200 -141 -222 -248 -25 -117 32 -244 142 -319 107 -74 229 -75 337 -3 177 118 201 338 53 485 -85 86 -207 119 -310 85z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M12070 11185 c-105 -35 -200 -141 -222 -248 -25 -117 32 -244 142 -319 107 -74 229 -75 337 -3 177 118 201 338 53 485 -85 86 -207 119 -310 85z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M550 9905 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1830 9905 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M3110 9905 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M4390 9905 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M5670 9905 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M6950 9905 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M8230 9905 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M9510 9905 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M10790 9905 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M12070 9905 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M550 8625 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1830 8625 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M3110 8625 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M4390 8625 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M5670 8625 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M6950 8625 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M8230 8625 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M9510 8625 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M10790 8625 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M12070 8625 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M550 7345 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1830 7345 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M3110 7345 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M4390 7345 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M5670 7345 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M6950 7345 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M8230 7345 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M9510 7345 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M10790 7345 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M12070 7345 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M550 6065 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1830 6065 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M3110 6065 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M4390 6065 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M5670 6065 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M6950 6065 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M8230 6065 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M9510 6065 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M10790 6065 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M12070 6065 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M550 4785 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1830 4785 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M3110 4785 c-105 -35 -200 -141 -222 -248 -25 -117 32 -244 142 -319 107 -74 229 -75 337 -3 177 118 201 338 53 485 -85 86 -207 119 -310 85z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M4390 4785 c-105 -35 -200 -141 -222 -248 -25 -117 32 -244 142 -319 107 -74 229 -75 337 -3 177 118 201 338 53 485 -85 86 -207 119 -310 85z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M5670 4785 c-151 -50 -253 -216 -222 -362 25 -119 136 -230 255 -255 193 -41 394 142 374 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M6950 4785 c-151 -50 -253 -216 -222 -362 25 -119 136 -230 255 -255 193 -41 394 142 374 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M8230 4785 c-151 -50 -253 -216 -222 -362 25 -119 136 -230 255 -255 193 -41 394 142 374 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M9510 4785 c-151 -50 -253 -216 -222 -362 25 -119 136 -230 255 -255 193 -41 394 142 374 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M10790 4785 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M12070 4785 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M550 3505 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1830 3505 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M3110 3505 c-105 -35 -200 -141 -222 -248 -25 -117 32 -244 142 -319 107 -74 229 -75 337 -3 177 118 201 338 53 485 -85 86 -207 119 -310 85z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M4390 3505 c-105 -35 -200 -141 -222 -248 -25 -117 32 -244 142 -319 107 -74 229 -75 337 -3 177 118 201 338 53 485 -85 86 -207 119 -310 85z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M5670 3505 c-151 -50 -253 -216 -222 -362 25 -119 136 -230 255 -255 193 -41 394 142 374 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M6950 3505 c-151 -50 -253 -216 -222 -362 25 -119 136 -230 255 -255 193 -41 394 142 374 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M8230 3505 c-151 -50 -253 -216 -222 -362 25 -119 136 -230 255 -255 193 -41 394 142 374 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M9510 3505 c-151 -50 -253 -216 -222 -362 25 -119 136 -230 255 -255 193 -41 394 142 374 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M10790 3505 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M12070 3505 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M550 2225 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1830 2225 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M3110 2225 c-105 -35 -200 -141 -222 -248 -25 -117 32 -244 142 -319 107 -74 229 -75 337 -3 177 118 201 338 53 485 -85 86 -207 119 -310 85z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M4390 2225 c-105 -35 -200 -141 -222 -248 -25 -117 32 -244 142 -319 107 -74 229 -75 337 -3 177 118 201 338 53 485 -85 86 -207 119 -310 85z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M5670 2225 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M6950 2225 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M8230 2225 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M9510 2225 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M10790 2225 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M12070 2225 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M550 945 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1830 945 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M3110 945 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M4390 945 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M5670 945 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M6950 945 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M8230 945 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M9510 945 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M10790 945 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M12070 945 c-105 -35 -200 -141 -222 -248 -43 -206 163 -412 369 -369 155 32 275 190 260 339 -11 105 -90 213 -190 262 -61 29 -155 36 -217 16z\"\n  }))));\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  return /*#__PURE__*/React.createElement(SvgDots, _extends({\n    svgRef: ref\n  }, props));\n});\nexport default __webpack_public_path__ + \"static/media/dots.5e63ec14.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3;\n\nvar _excluded = [\"svgRef\", \"title\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar SvgRotate = function SvgRotate(_ref) {\n  var svgRef = _ref.svgRef,\n      title = _ref.title,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    width: 33,\n    height: 31,\n    viewBox: \"0 0 33 31\",\n    fill: \"none\",\n    ref: svgRef\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M25.625 20L30.125 18.875L31.25 23.375\",\n    stroke: \"#748094\",\n    strokeWidth: 3,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M30.125 18.875C29.1256 21.7069 27.3103 24.1796 24.9079 25.9814C22.5055 27.7832 19.6234 28.8335 16.625 29C13.8533 29.0005 11.1485 28.1478 8.87821 26.5578C6.60789 24.9678 4.88201 22.7174 3.935 20.1125M7.625 11L3.125 12.125L2 7.625\",\n    stroke: \"#748094\",\n    strokeWidth: 3,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M3.125 12.125C5.015 6.95 10.82 2 16.625 2C19.4102 2.00783 22.1249 2.87695 24.3968 4.48822C26.6687 6.09949 28.3866 8.37403 29.315 11\",\n    stroke: \"#748094\",\n    strokeWidth: 3,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  })));\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  return /*#__PURE__*/React.createElement(SvgRotate, _extends({\n    svgRef: ref\n  }, props));\n});\nexport default __webpack_public_path__ + \"static/media/rotate.d02e519b.svg\";\nexport { ForwardRef as ReactComponent };","import React from 'react';\r\nimport { Auth } from 'aws-amplify';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { Redirect } from 'react-router-dom';\r\nimport { APP_NAME } from 'aws-exports';\r\n\r\nconst LogoutScreen = () => {\r\n\tAuth.signOut();\r\n\tdocument.title = `${APP_NAME} — Logout`;\r\n\treturn <Redirect push={true} to=\"/login\" />;\r\n};\r\nexport default LogoutScreen;\r\n","import React from 'react';\r\n\r\nconst PageScrollContext = React.createContext(null);\r\nexport const PageScrollProvider = PageScrollContext.Provider;\r\n\r\nexport const WithPageScrollProvider = ({ pageScroll, children }) => {\r\n\tconst value = pageScroll.current || {};\r\n\treturn <PageScrollProvider value={value}>{children}</PageScrollProvider>;\r\n};\r\nexport default PageScrollContext;\r\n","import React from 'react';\r\nimport {\r\n\tColorPicker,\r\n\tFormGroup,\r\n\tInput,\r\n\tFormControl,\r\n\tDropdown,\r\n\tCustomText,\r\n\tIcon,\r\n    ButtonSelect,\r\n} from 'components';\r\n\r\nimport styles from 'styles/cart_screen.module.scss';\r\n\r\n\r\nconst ScarcitySettings = ({shopContext, }) => {\r\n\r\n\tconst { state, setItem } = shopContext;\r\n\tconst { scary } = state.settings\r\n\r\n    const handleCheck = (event, name) => {\r\n\t\tsetItem( `settings.scary.${name}`, event.target.checked);\r\n\t}\r\n\r\n\tconst handleRadio = (value, name) => {\r\n\t\tsetItem( `settings.scary.${name}`, value);\r\n\t}\r\n\r\n    return (\r\n      <FormGroup\r\n        label=\"Scarcity Timer\"\r\n        info=\"Create a sense of urgency for your customers to checkout using a scarcity timer.\"\r\n        fullWidth\r\n      >\r\n        <FormControl\r\n          label=\"Timer Setup\"\r\n          isSingleCol=\"false\"\r\n          withSwitch={[shopContext, \"settings.scary.isActive\"]}\r\n          marginBottom=\"\"\r\n        >\r\n          <div\r\n            className=\"row four-columns\"\r\n            style={{ gridTemplateColumns: \"repeat(4, 1fr)\" }}\r\n          >\r\n            <div className={styles.checkboxControl}>\r\n              <input\r\n                type=\"checkbox\"\r\n                id=\"daysCheck\"\r\n                value={\"days\"}\r\n                checked={scary.isDaysActive}\r\n                onChange={(e) => handleCheck(e, \"isDaysActive\")}\r\n              />\r\n              <label htmlFor=\"daysCheck\" className={styles.checkbox}>\r\n                <Icon icon=\"check\" size=\"xs\" />\r\n              </label>\r\n              <p>Days</p>\r\n            </div>\r\n            <div className={styles.checkboxControl}>\r\n              <input\r\n                type=\"checkbox\"\r\n                id=\"hoursCheck\"\r\n                value={\"hours\"}\r\n                checked={scary.isHoursActive}\r\n                onChange={(e) => handleCheck(e, \"isHoursActive\")}\r\n              />\r\n              <label htmlFor=\"hoursCheck\" className={styles.checkbox}>\r\n                <Icon icon=\"check\" size=\"xs\" />\r\n              </label>\r\n              <p>Hours</p>\r\n            </div>\r\n            <div className={styles.checkboxControl}>\r\n              <input\r\n                type=\"checkbox\"\r\n                id=\"minutesCheck\"\r\n                value={\"minutes\"}\r\n                checked={scary.isMinutesActive}\r\n                onChange={(e) => handleCheck(e, \"isMinutesActive\")}\r\n              />\r\n              <label htmlFor=\"minutesCheck\" className={styles.checkbox}>\r\n                <Icon icon=\"check\" size=\"xs\" />\r\n              </label>\r\n              <p>Minutes</p>\r\n            </div>\r\n            <div className={styles.checkboxControl}>\r\n              <input\r\n                type=\"checkbox\"\r\n                id=\"secondsCheck\"\r\n                value={\"seconds\"}\r\n                checked={scary.isSecondsActive}\r\n                onChange={(e) => handleCheck(e, \"isSecondsActive\")}\r\n              />\r\n              <label htmlFor=\"secondsCheck\" className={styles.checkbox}>\r\n                <Icon icon=\"check\" size=\"xs\" />\r\n              </label>\r\n              <p>Seconds</p>\r\n            </div>\r\n          </div>\r\n        </FormControl>\r\n        <FormControl isSingleCol=\"false\" className=\"flex\">\r\n          <div\r\n            className=\"row four-columns\"\r\n            style={{ gridTemplateColumns: \"repeat(4, 1fr)\" }}\r\n          >\r\n            <Input\r\n              type=\"number\"\r\n              min={0}\r\n              BindToContext={[shopContext, \"settings.scary.days\"]}\r\n            />\r\n            <Input\r\n              type=\"number\"\r\n              max={23}\r\n              min={0}\r\n              BindToContext={[shopContext, \"settings.scary.hours\"]}\r\n            />\r\n            <Input\r\n              type=\"number\"\r\n              max={59}\r\n              min={0}\r\n              BindToContext={[shopContext, \"settings.scary.minutes\"]}\r\n            />\r\n            <Input\r\n              type=\"number\"\r\n              max={59}\r\n              min={0}\r\n              BindToContext={[shopContext, \"settings.scary.seconds\"]}\r\n            />\r\n          </div>\r\n        </FormControl>\r\n\r\n        <CustomText\r\n          context={shopContext}\r\n          label=\"Customize\"\r\n          path=\"settings.scary.text\"\r\n          hasColor={true}\r\n        />\r\n        <FormControl label=\"Alignement\">\r\n          <Dropdown\r\n            options={[\r\n              { value: \"left\", label: \"Left\" },\r\n              { value: \"center\", label: \"Center\" },\r\n              { value: \"right\", label: \"Right\" },\r\n            ]}\r\n            first\r\n            BindToContext={[shopContext, \"settings.scary.textAlignement\"]}\r\n          />\r\n        </FormControl>\r\n\r\n        <FormControl label=\"Timer style\">\r\n          <ButtonSelect\r\n            options={[\r\n              {\r\n                value: \"rounded\",\r\n                label: \"Rounded\",\r\n              },\r\n              {\r\n                value: \"full\",\r\n                label: \"Full width\",\r\n              },\r\n            ]}\r\n            showSeparator={true}\r\n            BindToContext={[shopContext, \"settings.scary.style\"]}\r\n          />\r\n        </FormControl>\r\n        <FormControl>\r\n          <ColorPicker\r\n            text=\"Background\"\r\n            BindToContext={[shopContext, \"settings.scary.background\"]}\r\n          />\r\n          <ColorPicker\r\n            text=\"Border\"\r\n            BindToContext={[shopContext, \"settings.scary.border\"]}\r\n          />\r\n        </FormControl>\r\n        <FormControl label=\"When timeout I want to:\" isSingleCol=\"false\">\r\n          <div className={styles.radioDiv}>\r\n            <input\r\n              type=\"radio\"\r\n              id=\"timerhide\"\r\n              value={\"hide\"}\r\n              checked={scary.endAction === \"hide\"}\r\n              onChange={(e) => handleRadio(\"hide\", \"endAction\")}\r\n            />\r\n            <label onClick={() => handleRadio(\"hide\", \"endAction\")}>\r\n              Hide timer\r\n            </label>\r\n          </div>\r\n          <div className={styles.radioDiv}>\r\n            <input\r\n              type=\"radio\"\r\n              id=\"timerrestart\"\r\n              value={\"restart\"}\r\n              checked={scary.endAction === \"restart\"}\r\n              onChange={(e) => handleRadio(\"restart\", \"endAction\")}\r\n            />\r\n            <label onClick={() => handleRadio(\"restart\", \"endAction\")}>\r\n              Restart Timer\r\n            </label>\r\n          </div>\r\n        </FormControl>\r\n        <FormControl label=\"Timer Placement\" isSingleCol=\"false\">\r\n          <div className={styles.radioDiv}>\r\n            <input\r\n              type=\"radio\"\r\n              id=\"timerplacementtop\"\r\n              value={\"top\"}\r\n              checked={scary.placement === \"top\"}\r\n              onChange={(e) => handleRadio(\"top\", \"placement\")}\r\n            />\r\n            <label onClick={() => handleRadio(\"top\", \"placement\")}>\r\n              Top of the cart{\" \"}\r\n            </label>\r\n          </div>\r\n          <div className={styles.radioDiv}>\r\n            <input\r\n              type=\"radio\"\r\n              id=\"timerplacementbottom\"\r\n              value={\"bottom\"}\r\n              checked={scary.placement === \"bottom\"}\r\n              onChange={() => handleRadio(\"bottom\", \"placement\")}\r\n            />\r\n            <label onClick={() => handleRadio(\"bottom\", \"placement\")}>\r\n              Above checkout button\r\n            </label>\r\n          </div>\r\n        </FormControl>\r\n      </FormGroup>\r\n    );\r\n}\r\n\r\n\r\nexport  {ScarcitySettings};","import React from 'react';\r\nimport {\r\n\tFormGroup,\r\n\tFormControl,\r\n\tDropdown,\r\n    RichEditor,\r\n} from 'components';\r\nimport { BADGES_POSITIONS } from 'lib/globals'\r\nimport styles from 'styles/cart_screen.module.scss';\r\n\r\n\r\nconst BadgesSettings = ({shopContext, }) => {\r\n\r\n    return (\r\n      <FormGroup\r\n        label=\"Trust Badges / images\"\r\n        info={`Increase trust with a secure checkout message and payment badges.\r\n            You can use the ones we provide or upload your own. \r\n            (Suggested image size = 50kb or less)`}\r\n        fullWidth\r\n      >\r\n        <FormControl\r\n          label=\"Position in Cart Drawer\"\r\n          withSwitch={[shopContext, \"settings.badges.isActive\"]}\r\n        >\r\n          <Dropdown\r\n            options={BADGES_POSITIONS}\r\n            first\r\n            BindToContext={[shopContext, \"settings.badges.position\"]}\r\n          />\r\n        </FormControl>\r\n        <FormControl>\r\n          <RichEditor\r\n            placeholder=\"payement badges\"\r\n            BindToContext={[shopContext, \"settings.badges.value\"]}\r\n          />\r\n        </FormControl>\r\n      </FormGroup>\r\n    );\r\n}\r\n\r\n\r\nexport  {BadgesSettings};","import React from 'react';\r\nimport {\r\n\tColorPicker,\r\n\tFormGroup,\r\n\tFormControl,\r\n    RichEditor\r\n} from 'components';\r\n\r\n\r\n\r\nconst TermsSettings = ({shopContext }) => {\r\n\r\n\tconst { state, setItem } = shopContext;\r\n\tconst { checkout_condition_text } = state.settings\r\n\r\n\r\n    return (\r\n        \r\n        <FormGroup label=\"Terms And Conditions\" fullWidth>\r\n            <FormControl\r\n                label=\" Terms and conditions checkbox\" \r\n                info={`Add a checkbox that must be clicked before proceeding to checkout.\r\n                Tip: You can also add url hyperlinks for terms and condition pages.`}\r\n                withSwitch={[shopContext, 'settings.is_checkout_condition_active']}\r\n            >\r\n                <RichEditor\r\n                    placeholder=\"I agree with terms & conditions\"\r\n                    BindToContext={[shopContext, 'settings.checkout_condition_text']}\r\n                />\r\n            </FormControl>\r\n            <FormControl >\r\n                <ColorPicker text=\"Checkbox color\" BindToContext={[shopContext, 'settings.checkout_condition_color']} />\r\n            </FormControl>\r\n        </FormGroup>\r\n\r\n    )\r\n}\r\n\r\n\r\nexport  {TermsSettings};","\r\nimport React from 'react';\r\nimport {\r\n\tColorPicker,\r\n\tFormGroup,\r\n\tInput,\r\n\tFormControl,\r\n\tDropdown,\r\n\tCustomText,\r\n    RichEditor,\r\n    Icon,\r\n    ButtonSelect,\r\n} from 'components';\r\nimport { ANNOUNCEMENT_POSITIONS } from 'lib/globals'\r\nimport styles from 'styles/cart_screen.module.scss';\r\n\r\n\r\nconst AnnouncementSettings = ({shopContext }) => {\r\n    return (\r\n        <FormGroup \r\n            label=\"Announcement Banner\" \r\n            info=\"Get your message across with banner.\" fullWidth\r\n        >\r\n             <FormControl\r\n                label=\"Position in Cart Drawer\"\r\n                withSwitch={[shopContext, \"settings.announcement.isActive\"]}\r\n            >\r\n                <Dropdown\r\n                    options={ANNOUNCEMENT_POSITIONS}\r\n                    first\r\n                    BindToContext={[shopContext, \"settings.announcement.position\"]}\r\n                />\r\n            </FormControl>\r\n            <FormControl >\r\n                <CustomText\r\n                    context={shopContext}\r\n                    label=\"Customize\"\r\n                    path=\"settings.announcement.text\"\r\n                    hasColor={true}\r\n                />\r\n            </FormControl>\r\n            <FormControl >\r\n                <ColorPicker text=\"Background\" BindToContext={[shopContext, 'settings.announcement.background']} />\r\n                <ColorPicker text=\"Border\" BindToContext={[shopContext, 'settings.announcement.border']} />\r\n            </FormControl>\r\n            \r\n            <FormControl label=\"Style\" >\r\n                <Dropdown\r\n                    options={[\r\n                        { value: 'left', label: 'Left' },\r\n                        { value: 'center', label: 'Center' },\r\n                        { value: 'right', label: 'Right' },\r\n                    ]}\r\n                    first\r\n                    BindToContext={[ shopContext, 'settings.announcement.textAlignement']}\r\n                />\r\n            </FormControl>\r\n\r\n            <FormControl >\r\n                <ButtonSelect\r\n                    options={[\r\n                        {\r\n                            value: 'rounded',\r\n                            label: \"Rounded\",\r\n                        },\r\n                        {\r\n                            value: 'full',\r\n                            label: \"Full width\",\r\n                        },\r\n                    ]}\r\n                    showSeparator={true}\r\n                    BindToContext={[shopContext, 'settings.announcement.style']}\r\n                />\r\n            </FormControl>\r\n        </FormGroup>\r\n    )\r\n\r\n}\r\n\r\nexport default AnnouncementSettings","var _path, _path2, _g, _defs;\n\nvar _excluded = [\"svgRef\", \"title\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar SvgCheck = function SvgCheck(_ref) {\n  var svgRef = _ref.svgRef,\n      title = _ref.title,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    width: 28,\n    height: 28,\n    viewBox: \"0 0 28 28\",\n    fill: \"none\",\n    ref: svgRef\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, /*#__PURE__*/React.createElement(\"g\", {\n    clipPath: \"url(#clip0_3554_531)\"\n  }, /*#__PURE__*/React.createElement(\"mask\", {\n    id: \"mask0_3554_531\",\n    style: {\n      maskType: \"luminance\"\n    },\n    maskUnits: \"userSpaceOnUse\",\n    x: 0,\n    y: 0,\n    width: 28,\n    height: 28\n  }, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M14.0026 25.6667C15.535 25.6687 17.0527 25.3678 18.4684 24.7814C19.8841 24.195 21.17 23.3345 22.2521 22.2495C23.3371 21.1674 24.1975 19.8815 24.784 18.4658C25.3704 17.0501 25.6713 15.5324 25.6693 14.0001C25.6712 12.4677 25.3703 10.95 24.7839 9.5343C24.1975 8.11858 23.3371 6.8327 22.2521 5.75055C21.17 4.66557 19.8841 3.80513 18.4684 3.2187C17.0527 2.63227 15.535 2.3314 14.0026 2.33338C12.4702 2.33143 10.9526 2.63231 9.53686 3.21874C8.12114 3.80518 6.83526 4.66559 5.75311 5.75055C4.66816 6.8327 3.80774 8.11858 3.22131 9.5343C2.63488 10.95 2.33399 12.4677 2.33595 14.0001C2.33396 15.5324 2.63483 17.0501 3.22126 18.4658C3.8077 19.8815 4.66813 21.1674 5.75311 22.2495C6.83526 23.3345 8.12114 24.1949 9.53686 24.7814C10.9526 25.3678 12.4702 25.6687 14.0026 25.6667Z\",\n    fill: \"white\",\n    stroke: \"white\",\n    strokeWidth: 4,\n    strokeLinejoin: \"round\"\n  })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M9.33594 14L12.8359 17.5L19.8359 10.5\",\n    stroke: \"black\",\n    strokeWidth: 4,\n    strokeLinecap: \"round\",\n    strokeLinejoin: \"round\"\n  }))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n    mask: \"url(#mask0_3554_531)\"\n  }, /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M0 0H28V28H0V0Z\",\n    fill: \"#3FB36D\"\n  })))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n    id: \"clip0_3554_531\"\n  }, /*#__PURE__*/React.createElement(\"rect\", {\n    width: 28,\n    height: 28,\n    fill: \"white\"\n  })))));\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  return /*#__PURE__*/React.createElement(SvgCheck, _extends({\n    svgRef: ref\n  }, props));\n});\nexport default __webpack_public_path__ + \"static/media/check.fd1534ee.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"svgRef\", \"title\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar SvgWarning = function SvgWarning(_ref) {\n  var svgRef = _ref.svgRef,\n      title = _ref.title,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    width: 28,\n    height: 28,\n    viewBox: \"0 0 28 28\",\n    fill: \"none\",\n    ref: svgRef\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M14 0C6.3 0 0 6.3 0 14C0 21.7 6.3 28 14 28C21.7 28 28 21.7 28 14C28 6.3 21.7 0 14 0ZM12.9 6H15.1V17H12.9V6ZM14 23C13.2 23 12.5 22.3 12.5 21.5C12.5 20.7 13.2 20 14 20C14.8 20 15.5 20.7 15.5 21.5C15.5 22.3 14.8 23 14 23Z\",\n    fill: \"#F5A34B\"\n  })));\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  return /*#__PURE__*/React.createElement(SvgWarning, _extends({\n    svgRef: ref\n  }, props));\n});\nexport default __webpack_public_path__ + \"static/media/warning.e11c7b1a.svg\";\nexport { ForwardRef as ReactComponent };","export const LOGOS = [\r\n    {\r\n        src: \"https://s3-us-west-2.amazonaws.com/apps.static.resources/afterpay_green.png\"\r\n    },\r\n    {\r\n        src: \"https://s3-us-west-2.amazonaws.com/apps.static.resources/afterpay_black.png\"\r\n    },\r\n    {\r\n        src: \"https://s3-us-west-2.amazonaws.com/apps.static.resources/afterpay_white.png\"\r\n    },\r\n]","\r\nimport React, { useState } from 'react';\r\nimport {\r\n    FormControl,\r\n    Icon,\r\n    ImagePicker\r\n} from 'components';\r\nimport {\r\n    faCheckCircle\r\n} from '@fortawesome/fontawesome-pro-solid';\r\nimport { LOGOS } from 'lib/afterPayLogos'\r\nimport classNames from 'lib/classNames';\r\n\r\nconst AfterPaySelector = ({ shopContext }) => {\r\n    const {\r\n        state: { settings: { afterPay } },\r\n        setItem\r\n    } = shopContext\r\n    const [uploadedImage, setUploadedImage] = useState(afterPay.isExternal ? afterPay.image : null)\r\n    const handleImageSelect = (image, isExternal = true) => {\r\n        setItem(\"settings.afterPay.image\", image)\r\n        setItem(\"settings.afterPay.isExternal\", isExternal)\r\n        if (isExternal) {\r\n            setUploadedImage(image)\r\n        }\r\n    }\r\n\r\n    const selectedImage = afterPay?.image\r\n    return (\r\n        <>\r\n            <FormControl label='Select payment provider' isSingleCol={true}>\r\n                <div className={classNames('flex flex-wrap ')} >\r\n                    {\r\n                        LOGOS.map(({ src, id, style }, key) => {\r\n                            return (\r\n                                <div key={key} className={classNames('relative')} >\r\n                                    <div key={id} className={classNames('rounded-full flex justify-center items-center m-2 cursor-pointer overflow-hidden')} style={style} onClick={() => handleImageSelect(src, false)}>\r\n                                        <img style={{ height: \"25px\" }} src={src} />\r\n                                    </div>\r\n                                    {selectedImage === src && <div className={classNames('absolute top-0 right-0')}> <Icon icon={faCheckCircle} color=\"#2f80ed\" /> </div>}\r\n                                </div>\r\n                            )\r\n                        })\r\n                    }\r\n                    {\r\n                        !!uploadedImage &&\r\n                        <div className={classNames('flex relative')}>\r\n                            <div className={classNames('rounded-full flex justify-center items-center m-2 cursor-pointer overflow-hidden\t')} onClick={() => handleImageSelect(uploadedImage, true)}>\r\n                                <img style={{ height: \"25px\" }} src={uploadedImage} />\r\n                            </div>\r\n                            {selectedImage === uploadedImage && <div className={classNames('absolute top-0 right-0')}> <Icon icon={faCheckCircle} color=\"#2f80ed\" /> </div>}\r\n                        </div>\r\n                    }\r\n                </div>\r\n                <div className={classNames('m-2')}>\r\n                    <ImagePicker onChange={handleImageSelect} simplified={true} />\r\n                </div>\r\n            </FormControl>\r\n        </>\r\n    )\r\n\r\n}\r\n\r\nexport default AfterPaySelector","\r\nimport React from 'react';\r\nimport {\r\n\tFormGroup,\r\n\tInput,\r\n\tFormControl,\r\n\tCustomText,\r\n} from 'components';\r\nimport AfterPaySelector from \"./afterPaySelector\"\r\n\r\nconst AfterPay = ({shopContext }) => {\r\n    return (\r\n        <FormGroup \r\n            label=\"Split Payments\" \r\n            info=\"Communicate split payments offers within the cart. (only activate this if you have a split payment provider active on shopify checkout)\" fullWidth\r\n        >\r\n            <FormControl label=\"Customize\" withSwitch={[shopContext, \"settings.afterPay.isActive\"]}>\r\n                <CustomText\r\n                    context={shopContext}\r\n                    \r\n                    path=\"settings.afterPay.text\"\r\n                    hasColor={true}\r\n                    indicator=\"{{installments}}  {{split payment}}\"\r\n                    hasWeight=\"700\"\r\n                />\r\n            </FormControl>\r\n            <AfterPaySelector shopContext={shopContext}/>\r\n            <FormControl label='Select split payment quantity'>\r\n                <Input min={2} BindToContext={[shopContext, \"settings.afterPay.splits\"]}/>\r\n            </FormControl>\r\n        </FormGroup>\r\n    )\r\n\r\n}\r\n\r\nexport default AfterPay","import React, {\r\n  useContext,\r\n  Fragment,\r\n  useEffect,\r\n  useRef,\r\n  useState,\r\n} from \"react\";\r\nimport { useMutation, useQuery } from \"@apollo/react-hooks\";\r\nimport PageScrollContext from \"context/PageScrollContext\";\r\nimport md5 from \"crypto-js/md5\";\r\nimport {\r\n  Page,\r\n  Range,\r\n  ColorPicker,\r\n  FormGroup,\r\n  Input,\r\n  Textarea,\r\n  FormControl,\r\n  Dropdown,\r\n  Switch,\r\n  CustomText,\r\n  Icon,\r\n  Button,\r\n  Alert,\r\n  VideoModal,\r\n  RichEditor,\r\n  ButtonSelect,\r\n  MultiCurrencyModeAlerts,\r\n  CodeEditor,\r\n} from \"components\";\r\nimport PreviewContext from \"context/PreviewContext\";\r\nimport ShopContext from \"context/ShopContext\";\r\nimport UserContext from \"context/UserContext\";\r\nimport {\r\n  GOOGLE_FONTS,\r\n  CAMPAIGN_TYPES,\r\n  SHOP_DEFAULT_SETTINGS,\r\n  BREAK_POINTS,\r\n} from \"lib/globals\";\r\nimport { SAVE_SHOP_SETTINGS, UPDATE_SHOP_PROP } from \"lib/mutations\";\r\nimport CheckoutButton from \"screens/campaigns/settings/ExtraModules/CheckoutButton\";\r\nimport { Loading, Toast, Modal } from \"@shopify/app-bridge-react\";\r\n\r\nimport { ShopConstraints } from \"Constraints\";\r\nimport removeTypeName, { removeByType } from \"lib/removeTypeName\";\r\nimport { Run } from \"lib/validate\";\r\nimport { GET_SHOP_SETTINGS, LIST_SHOP_CAMPAIGNS } from \"Queries\";\r\nimport { API, graphqlOperation } from \"aws-amplify\";\r\nimport { APP_DEV } from \"aws-exports\";\r\nimport Axios from \"axios\";\r\nimport { useTransition } from \"react-spring\";\r\nimport _ from \"lodash\";\r\nimport classNames from \"lib/classNames\";\r\nimport useReactRouter from \"use-react-router\";\r\nimport { SET_ALL, SET_ITEM } from \"reducers/SetItemReducer\";\r\nimport useRefState from \"hooks/useRefState\";\r\nimport { ScarcitySettings } from \"./settings/scarcity\";\r\nimport { BadgesSettings } from \"./settings/badges\";\r\nimport { TermsSettings } from \"./settings/terms\";\r\nimport AnnouncementSettings from \"./settings/announcement\";\r\nimport { getSessionToken } from \"@shopify/app-bridge-utils\";\r\nimport EmbeddedContext from \"context/EmbeddedContext\";\r\nimport { trackMixPanelEvent } from \"lib/mixpanel\";\r\nimport { Redirect } from \"@shopify/app-bridge/actions\";\r\nimport { ReactComponent as Rotate } from \"svgs/rotate.svg\";\r\nimport { ReactComponent as Check } from \"svgs/check.svg\";\r\nimport { ReactComponent as Warning } from \"svgs/warning.svg\";\r\nimport \"styles/custom.css\";\r\nimport AfterPay from \"./settings/afterPay\";\r\nimport { getIn, setIn } from \"immutable\";\r\n\r\nconst CartScreen = (props) => {\r\n  const {\r\n    setCartIsEmpty,\r\n    previewBundlesVariantsPicker,\r\n    setAutoDiscount,\r\n    setShowSubscription,\r\n    setCheckoutButtonLoadingEdit,\r\n    campaign_preview_types,\r\n  } = useContext(PreviewContext);\r\n  const stickyAlert = useRef(null);\r\n  const { history, location } = useReactRouter();\r\n  const [scrollTop, setScrollTop, scrollTopRef] = useRefState();\r\n  const [cartActivateLoading, setCartActivateLoading] = useState(false);\r\n  const [videoOne, setVideoOne] = useState(false);\r\n  const [googleFonts, setGoogleFonts] = useState([]);\r\n  const [hideTopBar, setHideTopBar] = useState(false);\r\n  const [embedInstructionsCollapsed, setEmbedInstructionsCollapsed] =\r\n    useState(false);\r\n  const [showConfirmActivate, setShowConfirmActivate] = useState(false);\r\n  const [showInstallationModel, setShowInstallationModel] = useState(false);\r\n\r\n  const [campaignActive, setCampaignActive] = useState(false);\r\n  const [dataLoading, setDataLoading] = useState(true);\r\n  const [subscriptionTab, setSubscriptionTab] = useState(\"unsubscribed\");\r\n\r\n  const [cartType, setCartType] = useState(\"loading\");\r\n  const [cartTextPrimary, setCartTextPrimary] = useState(\r\n    \"Checking if Monster Cart is activated.\"\r\n  );\r\n  const [cartTextSecondary, setCartTextSecondary] = useState(\r\n    \"We are checking your theme to see if monster cart is activated\"\r\n  );\r\n  const [cartButtonText, setCartButtonText] = useState(\"\");\r\n  const [cartButtonType, setCartButtonType] = useState(\"\");\r\n\r\n  const [campaign_preview_visible, setCampaign_preview_visible] =\r\n    useState(false);\r\n  const campaign_preview_content_ref = useRef(null);\r\n  const shopContext = useContext(ShopContext);\r\n  const { app, AppBridgeRedirect } = useContext(EmbeddedContext);\r\n  const user = useContext(UserContext);\r\n  const {\r\n    state,\r\n    discard,\r\n    validationErrors,\r\n    setValidationErrors,\r\n    dispatch,\r\n    setItem,\r\n    AppLocalStorage,\r\n    setup: { cartActive, cartLoading, setCartLoading },\r\n  } = shopContext;\r\n  const {\r\n    campaigns,\r\n    draft_checkout_alerted,\r\n    multi_currency_checkout_alerted,\r\n  } = state;\r\n  // const filterSettings = (settings) =>\r\n  // \t_.merge(\r\n  // \t\t{},\r\n  // \t\tSHOP_DEFAULT_SETTINGS(),\r\n  // \t\tremoveByType(\r\n  // \t\t\tremoveTypeName(\r\n  // \t\t\t\tObject.fromEntries(Object.entries(settings).filter(([key]) => !['settingsSaved'].includes(key)))\r\n  // \t\t\t),\r\n  // \t\t\t(v) => v !== '' && v !== null\r\n  // \t\t)\r\n  // \t);\r\n  const filterSettings = (settings) => {\r\n    return removeByType(\r\n      removeTypeName(\r\n        Object.fromEntries(\r\n          Object.entries(settings).filter(\r\n            ([key]) => ![\"settingsSaved\"].includes(key)\r\n          )\r\n        )\r\n      ),\r\n      (v) => v !== \"\" && v !== null\r\n    );\r\n\r\n    return (\r\n      _.mergeWith(\r\n        SHOP_DEFAULT_SETTINGS(),\r\n        removeByType(\r\n          removeTypeName(\r\n            Object.fromEntries(\r\n              Object.entries(settings).filter(\r\n                ([key]) => ![\"settingsSaved\"].includes(key)\r\n              )\r\n            )\r\n          ),\r\n          (v) => v !== \"\" && v !== null\r\n        ),\r\n        (v) => v !== \"\" && v !== null\r\n      ),\r\n      (objValue, srcValue) =>\r\n        srcValue && _.isArray(srcValue) ? srcValue : undefined\r\n    );\r\n  };\r\n\r\n  let [saveShopSettings, { data, error, loading }] = useMutation(\r\n    SAVE_SHOP_SETTINGS,\r\n    {\r\n      refetchQueries: [\r\n        {\r\n          query: GET_SHOP_SETTINGS,\r\n          variables: {\r\n            userId: user.attributes.website,\r\n          },\r\n        },\r\n      ],\r\n    }\r\n  );\r\n  const transitions = useTransition(\r\n    !_.isEqual(state.original_settings, state.settings) && !hideTopBar,\r\n    null,\r\n    {\r\n      from: { position: \"absolute\", opacity: 0 },\r\n      enter: { opacity: 1 },\r\n      leave: { opacity: 0 },\r\n      config: {\r\n        duration: 300,\r\n      },\r\n    }\r\n  );\r\n  const validate = (state, specific = []) =>\r\n    Run(state, specific, {\r\n      errors: validationErrors,\r\n      setErrors: setValidationErrors,\r\n      constraints: ShopConstraints,\r\n    });\r\n  const save = (assign = {}, checkRTL = true) => {\r\n    if (validate(state)) {\r\n      // console.log(\"validationErrors\",validationErrors,validate(state));\r\n      return;\r\n    }\r\n    // if (\r\n    //   checkRTL &&\r\n    //   Object.keys(state.original_settings || {}).length &&\r\n    //   state.settings.rtl !== state.original_settings.rtl\r\n    // ) {\r\n    //   return activateCart(state.settings.active, true, state.settings.rtl);\r\n    // }\r\n\r\n    if (!AppLocalStorage.getItem(\"first_cart_turn_on\"))\r\n      AppLocalStorage.setItem(\"first_cart_turn_on\", true);\r\n\r\n    saveShopSettings({\r\n      variables: {\r\n        id: user.attributes.website,\r\n        input: filterSettings(Object.assign(state.settings, assign)),\r\n      },\r\n    });\r\n  };\r\n\r\n  let campaign_data = useQuery(LIST_SHOP_CAMPAIGNS, {\r\n    variables: {\r\n      userId: user.attributes.sub,\r\n    },\r\n    fetchPolicy: \"network-only\",\r\n  });\r\n\r\n  const activateCart = async (\r\n    active,\r\n    confirmed = false,\r\n    rtl = null,\r\n    disableLoading = true\r\n  ) => {\r\n    if (\r\n      active &&\r\n      !confirmed &&\r\n      !state.settingsSaved &&\r\n      _.isEqual(SHOP_DEFAULT_SETTINGS, state.settings)\r\n    ) {\r\n      return setShowConfirmActivate(true);\r\n    }\r\n    setCartActivateLoading(true);\r\n    const { success } = await API.post(\"API_GATEWAY_NEW\", \"/cart/activate\", {\r\n      body: { active, rtl: rtl === null ? state.settings.rtl : rtl },\r\n    });\r\n    if (disableLoading) setCartActivateLoading(false);\r\n\r\n    if (!AppLocalStorage.getItem(\"first_cart_turn_on\")) {\r\n      AppLocalStorage.setItem(\"first_cart_turn_on\", true);\r\n      trackMixPanelEvent(\"First cart turn ON\", state?.id);\r\n    }\r\n    return save({ active }, false);\r\n  };\r\n\r\n  const handleOutSideClick = (event) => {\r\n    if (!campaign_preview_content_ref.current) return;\r\n    else if (campaign_preview_content_ref.current.contains(event.target))\r\n      return;\r\n    setCampaign_preview_visible(false);\r\n  };\r\n\r\n  const toggle_type = (type, value) => {\r\n    if (value) {\r\n      campaign_preview_types.set([\r\n        ...new Set(campaign_preview_types.get.concat([type])),\r\n      ]);\r\n    } else {\r\n      campaign_preview_types.set(\r\n        campaign_preview_types.get.filter((c) => c !== type)\r\n      );\r\n    }\r\n  };\r\n\r\n  const type_is_active = (type) => {\r\n    const typeIndex = campaign_preview_types.get.indexOf(type);\r\n    return typeIndex !== -1 ? true : false;\r\n  };\r\n\r\n  useEffect(() => {\r\n    if (campaign_preview_visible)\r\n      document.addEventListener(\"mousedown\", handleOutSideClick, false);\r\n    else document.removeEventListener(\"mousedown\", handleOutSideClick, false);\r\n    return () => {\r\n      document.removeEventListener(\"mousedown\", handleOutSideClick, false);\r\n    };\r\n  }, [campaign_preview_visible]);\r\n\r\n  useEffect(() => {\r\n    const { data } = campaign_data;\r\n    if (data) {\r\n      if (data.campaigns?.list?.length) {\r\n        setCampaignActive(\r\n          !!data.campaigns.list.find((campaign) => campaign.active)\r\n        );\r\n      }\r\n      setDataLoading(false);\r\n    }\r\n  }, [campaign_data]);\r\n\r\n  useEffect(() => {\r\n    // if (typeof state.settings.multiCurrencyMode !== 'boolean') {\r\n    // \tsetItem('settings.multiCurrencyMode', false);\r\n    // }\r\n    async function getGoogleFonts() {\r\n      const { data } = await Axios.get(\r\n        `https://www.googleapis.com/webfonts/v1/webfonts?sort=popularity&key=AIzaSyCYLq50twmAe1_7jITZuehrERZWOjNqBCY`\r\n      );\r\n      setGoogleFonts(\r\n        data.items.map(({ family, variants }) => ({\r\n          label: family,\r\n          value: `${family}:${variants.join()}`,\r\n        }))\r\n      );\r\n    }\r\n    getGoogleFonts();\r\n  }, []);\r\n\r\n  const redirectToCheckoutSettings = (e) => {\r\n    e.preventDefault();\r\n    if (!scrollTopRef.current) return;\r\n    const padding =\r\n      1.5 * parseFloat(getComputedStyle(document.documentElement).fontSize);\r\n    scrollTopRef.current(\r\n      document\r\n        .getElementById(`id_${md5(\"checkout settings\")}`)\r\n        .closest(\".mu-group-wrapper\").offsetTop - 0\r\n    );\r\n  };\r\n\r\n  const sticky_path = \"settings.modules.checkout_button.fix_checkout_container\";\r\n  const lower_path = \"settings.product.grow\";\r\n  \r\n  const getCheckoutPosition = () => {\r\n    const lower_checkout_container = getIn(\r\n      shopContext.state,\r\n      lower_path.split(\".\")\r\n    );\r\n    const fix_checkout_container = getIn(\r\n      shopContext.state,\r\n      sticky_path.split(\".\")\r\n    );\r\n    if (fix_checkout_container) return \"sticky\";\r\n    if (lower_checkout_container) return \"lower\";\r\n    return \"higher\";\r\n  };\r\n\r\n  const [checkoutPosition, setCheckoutPosition] = useState(\r\n    getCheckoutPosition()\r\n  );\r\n\r\n  const handleCheckoutPosition = (value) => {\r\n    const isSticky = value === \"sticky\";\r\n    const isLower = value === \"lower\";\r\n\r\n    setIn(shopContext.state, sticky_path.split(\".\"), isSticky);\r\n    shopContext.setItem(sticky_path, isSticky);\r\n\r\n    setIn(shopContext.state, lower_path.split(\".\"), isLower);\r\n    shopContext.setItem(lower_path, isLower);\r\n\r\n    setCheckoutPosition(isSticky ? \"sticky\" : isLower ? \"lower\" : \"higher\");\r\n  };\r\n\r\n  const updateCheckoutText = (value) => {\r\n    const path = \"settings.modules.checkout_button.button_text.text\";\r\n    const checkout_text = getIn(shopContext.state, path.split(\".\"));\r\n    const regex = /(\\{\\s*)?\\{\\s*subtotal\\s*\\}\\s*(\\})?/gi;\r\n    let new_text = checkout_text;\r\n\r\n    if (value) {\r\n      if (!regex.test(checkout_text)) {\r\n        new_text += \" / {{subtotal}}\";\r\n      }\r\n    } else {\r\n      new_text = checkout_text.replace(\r\n        /\\s*?\\/?\\s*-?\\s*?\\{\\{\\s*subtotal\\s*\\}\\}\\s*/,\r\n        \"\"\r\n      );\r\n    }\r\n\r\n    setIn(shopContext.state, path.split(\".\"), new_text);\r\n    shopContext.setItem(path, new_text);\r\n  };\r\n\r\n  const updateShopProps = async (input) => {\r\n    const authToken = `Bearer ${await getSessionToken(app)}`;\r\n    await API.graphql(\r\n      graphqlOperation(\r\n        UPDATE_SHOP_PROP,\r\n        {\r\n          id: user.attributes.website,\r\n          input,\r\n        },\r\n        authToken\r\n      )\r\n    );\r\n    Object.entries(input).forEach(([key, value]) => {\r\n      setItem(key, value);\r\n    });\r\n  };\r\n\r\n  useEffect(() => {\r\n    setHideTopBar(!!data);\r\n    if (APP_DEV) {\r\n      const timeout = setTimeout(() => setHideTopBar(false), 1500);\r\n      return () => clearTimeout(timeout);\r\n    }\r\n  }, [data]);\r\n\r\n  useEffect(() => {\r\n    if (state.settings.cod_settings.checkout_mode == \"cod_and_checkout\") {\r\n      setItem(\"settings.cod_settings.is_form_in_cart\", false);\r\n    }\r\n  }, [state.settings.cod_settings]);\r\n\r\n  useEffect(() => {\r\n    if (cartLoading) {\r\n      setCartType(\"loading\");\r\n      setCartTextPrimary(\"Checking if Monster Cart is activated.\");\r\n      setCartTextSecondary(\r\n        \"We are checking your theme to see if monster cart is activated\"\r\n      );\r\n      setCartButtonText(\"\");\r\n      setCartButtonType(\"\");\r\n    } else {\r\n      if (cartActive) {\r\n        setCartType(\"success\");\r\n        setCartTextPrimary(\r\n          \"Monster Cart is <span style='color: #3FB36D;'>active on theme</span>\"\r\n        );\r\n        setCartTextSecondary(\r\n          \"Your cart is currently active on your live theme.\"\r\n        );\r\n        setCartButtonText(\"Disable\");\r\n        setCartButtonType(\"default\");\r\n      } else {\r\n        setCartType(\"warning\");\r\n        setCartTextPrimary(\"Monster Cart is not activated on your theme.\");\r\n        setCartTextSecondary(\r\n          \"Click “activate” and then click “save” in your theme editor.\"\r\n        );\r\n        setCartButtonText(\"Activate\");\r\n        setCartButtonType(\"warning2\");\r\n      }\r\n    }\r\n  }, [cartActive, cartLoading]);\r\n\r\n  return (\r\n    <Page\r\n      background=\"none\"\r\n      getScrollTop={({ scrollTop }) => {\r\n        setScrollTop(scrollTop);\r\n      }}\r\n      padding={0}\r\n      header={{\r\n        title: \"Settings\",\r\n      }}\r\n      TopContent={{\r\n        transitions,\r\n        render: () => (\r\n          <Alert\r\n            type=\"save_settings\"\r\n            title=\"unsaved changes\"\r\n            borderPosition=\"none\"\r\n            paddingX=\"px-6\"\r\n            actions={[\r\n              {\r\n                text: \"Discard\",\r\n                type: \"secondary\",\r\n                loading: false,\r\n                onClick: () => discard(),\r\n              },\r\n              {\r\n                text: \"Save\",\r\n                type: \"primary\",\r\n                loading: loading || cartActivateLoading,\r\n                onClick: () => save(),\r\n              },\r\n            ]}\r\n          />\r\n        ),\r\n      }}\r\n    >\r\n      <Fragment>\r\n        {data && (\r\n          <Toast\r\n            content=\"Cart settings has been saved\"\r\n            duration={3000}\r\n            onDismiss={() => {\r\n              setHideTopBar(false);\r\n            }}\r\n          />\r\n        )}\r\n        {(loading || cartActivateLoading) && <Loading />}\r\n        {/* <div className={classNames(\"bg-white rounded overflow-hidden shadow mb-10\")}>\r\n          <div className={classNames(\"flex-center border-b px-3 py-1 text-gray-600\")}>\r\n            <b className={classNames(\"flex-1 font-semibold text-base uppercase-first\")}>Activation instructions</b>\r\n            <button className={classNames(\"w-10 h-10 flex-center hover:bg-gray-200 rounded-full focus:outline-none\")} onClick={() => setEmbedInstructionsCollapsed(!embedInstructionsCollapsed)}>\r\n              <Icon icon=\"angle-up\" style={{\r\n                transform: embedInstructionsCollapsed ? \"rotate(180deg)\" : undefined\r\n              }}\r\n              />\r\n            </button>\r\n          </div>\r\n          <div className={classNames(\"text-gray-600 text-sm\")} style={{\r\n            height: embedInstructionsCollapsed ? 0 : undefined\r\n          }}>\r\n            <div className={classNames(\"p-3\")}>\r\n              <div className={classNames(\"leading-loose mb-3\")}>\r\n                <p>When you click \"Preview in theme\" you will be redirected to your Shopify theme editor where you can turn your cart ON and OFF.</p>\r\n                <p>All you need to do is enable/disable MonsterUpsells and click save.</p>\r\n              </div>\r\n              <img className={classNames(\"border rounded\")} src={`${window.location.origin}/static/images/embed-screenshot.jpg`} />\r\n              <div className={classNames(\"flex flex-row-reverse mt-3\")}>\r\n                <Button type=\"primary\" text=\"Preview in theme\" className={classNames(\"ml-3\")} />\r\n                <Button type=\"secondary\" text=\"Watch video tutorial\" />\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </div> */}\r\n        <Alert\r\n          type={cartType}\r\n          title={cartTextPrimary}\r\n          className=\"z-5\"\r\n          icon={\r\n            cartLoading ? (\r\n              <Rotate className=\"rotating\" />\r\n            ) : cartActive ? (\r\n              <Check />\r\n            ) : (\r\n              <Warning />\r\n            )\r\n          }\r\n          customSvg={true}\r\n          actions={\r\n            !cartLoading && [\r\n              {\r\n                text: cartButtonText,\r\n                type: cartButtonType,\r\n                loading: cartLoading,\r\n                onClick: async () => {\r\n                  setCartLoading(true);\r\n                  if (!state.settingsSaved) {\r\n                    await save();\r\n                  }\r\n                  setShowInstallationModel(true);\r\n                },\r\n              },\r\n            ]\r\n          }\r\n        >\r\n          <p>{cartTextSecondary}</p>\r\n        </Alert>\r\n        {!AppLocalStorage?.getItem(\"first_cart_turn_on\") && (\r\n          <Alert type={\"info\"} className=\"z-5 mt-4\">\r\n            <p\r\n              className={classNames(\r\n                \"text-gray-600 text-md not-italic font-medium\"\r\n              )}\r\n            >\r\n              Nearly there! ... Design Your Cart, Click “Save” {\">>\"} Then Click\r\n              “Activate”\r\n            </p>\r\n          </Alert>\r\n        )}\r\n        {cartActive && !campaignActive && !dataLoading && (\r\n          <Alert\r\n            type={\"info\"}\r\n            className=\"z-5 mt-4\"\r\n            actions={[\r\n              {\r\n                text: \"Add Upsell\",\r\n                type: \"info\",\r\n                onClick: () => {\r\n                  history.push(\"/campaigns/create\" + location.search);\r\n                },\r\n              },\r\n            ]}\r\n          >\r\n            <p\r\n              className={classNames(\r\n                \"text-gray-600 text-md not-italic font-medium\"\r\n              )}\r\n            >\r\n              Cart is live! 👏 Now add your first upsell campaign.\r\n            </p>\r\n          </Alert>\r\n        )}\r\n        <Modal\r\n          size=\"Large\"\r\n          title=\"Installation\"\r\n          open={!!showInstallationModel}\r\n          primaryAction={{\r\n            content: \"Open Editor\",\r\n            onAction: function () {\r\n              const activateAppId = APP_DEV\r\n                ? \"13fae760-4743-463c-aaeb-80cebaccc364\"\r\n                : \"a1b8e58a-bf1d-4e0f-8768-a387c3f643c0\";\r\n              const deepLink = `/themes/current/editor?context=apps&template=product&activateAppId=${activateAppId}/app-embed`;\r\n              AppBridgeRedirect.dispatch(Redirect.Action.ADMIN_PATH, {\r\n                path: deepLink,\r\n                newContext: true,\r\n              });\r\n            },\r\n          }}\r\n          secondaryActions={[\r\n            {\r\n              content: \"Watch Tutorial\",\r\n              onAction: () => {\r\n                AppBridgeRedirect.dispatch(Redirect.Action.REMOTE, {\r\n                  url: \"https://monsterapps.crisp.help/en/article/activate-deactivate-monster-cart-19okfn1/\",\r\n                  newContext: true,\r\n                });\r\n              },\r\n            },\r\n          ]}\r\n          src={`${window.location.origin}/AppThemeExtensionInstallation.html`}\r\n          onClose={() => setShowInstallationModel(false)}\r\n        />\r\n        <Alert\r\n          {...{\r\n            forwardRef: stickyAlert,\r\n            type: state.settings.active ? \"success\" : \"warning\",\r\n            title: `custom cart is ${\r\n              state.settings.active ? \"enabled\" : \"disabled\"\r\n            }`,\r\n            withSwitch: {\r\n              context: [\r\n                shopContext,\r\n                \"settings.active\",\r\n                (value) => activateCart(value),\r\n              ],\r\n            },\r\n            icon: state.settings.active ? \"check-circle\" : \"exclamation-circle\",\r\n          }}\r\n          className=\"z-5 hidden\"\r\n        >\r\n          {state.settings.active && (\r\n            <p>\r\n              Cart button not working? Click to{\" \"}\r\n              <span\r\n                href=\"#\"\r\n                className={classNames(\"font-bold underline cursor-pointer\")}\r\n                onClick={() => {\r\n                  history.push(\"/settings/setup\" + location.search);\r\n                }}\r\n              >\r\n                manually setup\r\n              </span>\r\n            </p>\r\n          )}\r\n          {!state.settings.active && (\r\n            <p>Customize default cart settings / visuals and set it live.</p>\r\n          )}\r\n        </Alert>\r\n        {/* {campaigns.length === 0 && (\r\n          <Alert\r\n            {...{\r\n              type: \"warning\",\r\n              borderPosition: \"border-l-4\",\r\n              iconSize: \"2x\",\r\n              title: \"Create your first campaign\",\r\n              icon: \"exclamation-circle\",\r\n              customStyle: {\r\n                icon: \"text-orange-400 self-start mt-1\",\r\n              },\r\n            }}\r\n            className=\"my-6 z-5\"\r\n          >\r\n            <p>Visit Campaign Page To Create Your 1st Upsell Campaign.</p>\r\n            <div className={classNames(\"flex space-x-3 pt-3 justify-start\")}>\r\n              <a\r\n                className={classNames(\r\n                  \"text-gray-800 text-sm flex items-center hover:text-orange-500 focus:outline-none focus:outline-shadow font-semibold py-1 px-2 uppercase border bg-orange-200 bg-opacity-50 border-orange-300 rounded\"\r\n                )}\r\n                onClick={() =>\r\n                  history.push(\"campaigns/create\" + location.search)\r\n                }\r\n              >\r\n                <Icon icon=\"info-circle\" className=\"mr-2\" size=\"1x\" />\r\n                <span className={classNames(\"text-xs\")}>Create campaign</span>\r\n              </a>\r\n            </div>\r\n          </Alert>\r\n        )} */}\r\n\r\n        <Modal\r\n          title=\"Activating custom cart\"\r\n          message=\"You're about to activate the cart with the default settings\"\r\n          open={!!showConfirmActivate}\r\n          primaryAction={{\r\n            content: \"Activate\",\r\n            destructive: true,\r\n            onAction: () => {\r\n              setShowConfirmActivate(false);\r\n              activateCart(true, true);\r\n            },\r\n          }}\r\n          secondaryActions={[\r\n            {\r\n              content: \"Cancel\",\r\n              onAction: () => {\r\n                setShowConfirmActivate(false);\r\n                discard();\r\n              },\r\n            },\r\n          ]}\r\n        />\r\n        <MultiCurrencyModeAlerts\r\n          {...{\r\n            ...state,\r\n            redirectToCheckoutSettings,\r\n            IUnderstand: updateShopProps,\r\n          }}\r\n        />\r\n\r\n        <FormGroup\r\n          label=\"Basic Cart Design\"\r\n          info=\"Design theme of cart\"\r\n          collapsable\r\n          isOpen={false}\r\n        >\r\n          <FormControl label=\"Default language\">\r\n            <Dropdown\r\n              options={[\r\n                { value: \"english\", label: \"English\" },\r\n                { value: \"french\", label: \"Français\" },\r\n                { value: \"german\", label: \"German\" },\r\n                { value: \"arabic\", label: \"العربية\" },\r\n              ]}\r\n              first\r\n              autoFocus={true}\r\n              BindToContext={[\r\n                shopContext,\r\n                \"settings.default_language\",\r\n                (language) => {\r\n                  dispatch({\r\n                    type: SET_ALL,\r\n                    value: {\r\n                      ...state,\r\n                      settings: SHOP_DEFAULT_SETTINGS(language),\r\n                    },\r\n                  });\r\n                },\r\n                \"settings\",\r\n              ]}\r\n            />\r\n          </FormControl>\r\n          <FormControl\r\n            label=\"Colors\"\r\n            error={validationErrors[\"settings.theme.background\"]}\r\n          >\r\n            <ColorPicker\r\n              text=\"Primary\"\r\n              BindToContext={[\r\n                shopContext,\r\n                \"settings.theme.primary\",\r\n                (value) => {\r\n                  dispatch({\r\n                    type: SET_ALL,\r\n                    value: {\r\n                      ...state,\r\n                      settings: {\r\n                        ...state.settings,\r\n                        modules: {\r\n                          ...state.settings.modules,\r\n                          checkout_button: {\r\n                            ...state.settings.modules.checkout_button,\r\n                            background: value,\r\n                            savings: {\r\n                              ...state.settings.modules.checkout_button.savings,\r\n                              color: value,\r\n                            },\r\n                          },\r\n                        },\r\n                        theme: {\r\n                          ...state.settings.theme,\r\n                          primary: value,\r\n                        },\r\n                      },\r\n                    },\r\n                  });\r\n                },\r\n              ]}\r\n            />\r\n            <ColorPicker\r\n              text=\"Secondary\"\r\n              BindToContext={[shopContext, \"settings.theme.secondary\"]}\r\n            />\r\n            <ColorPicker\r\n              text=\"Text On Cart\"\r\n              BindToContext={[\r\n                shopContext,\r\n                \"settings.theme.textColor\",\r\n                (value) => {\r\n                  dispatch({\r\n                    type: SET_ALL,\r\n                    value: {\r\n                      ...state,\r\n                      settings: {\r\n                        ...state.settings,\r\n                        modules: {\r\n                          ...state.settings.modules,\r\n                          checkout_button: {\r\n                            ...state.settings.modules.checkout_button,\r\n                            subtotal: {\r\n                              ...state.settings.modules.checkout_button\r\n                                .subtotal,\r\n                              color: value,\r\n                            },\r\n                          },\r\n                        },\r\n                        theme: {\r\n                          ...state.settings.theme,\r\n                          textColor: value,\r\n                        },\r\n                        product: {\r\n                          ...state.settings.product,\r\n                          //   title: {\r\n                          //     ...state.settings.product.title,\r\n                          //     color: value,\r\n                          //   },\r\n                          price: {\r\n                            ...state.settings.product.price,\r\n                            color: value,\r\n                          },\r\n                        },\r\n                      },\r\n                    },\r\n                  });\r\n                },\r\n              ]}\r\n            />\r\n            <ColorPicker\r\n              text=\"Text On Buttons\"\r\n              BindToContext={[\r\n                shopContext,\r\n                \"settings.theme.buttonColor\",\r\n                (value) => {\r\n                  dispatch({\r\n                    type: SET_ALL,\r\n                    value: {\r\n                      ...state,\r\n                      settings: {\r\n                        ...state.settings,\r\n                        modules: {\r\n                          ...state.settings.modules,\r\n                          checkout_button: {\r\n                            ...state.settings.modules.checkout_button,\r\n                            button_text: {\r\n                              ...state.settings.modules.checkout_button\r\n                                .button_text,\r\n                              color: value,\r\n                            },\r\n                          },\r\n                        },\r\n                        theme: {\r\n                          ...state.settings.theme,\r\n                          buttonColor: value,\r\n                        },\r\n                      },\r\n                    },\r\n                  });\r\n                },\r\n              ]}\r\n            />\r\n            <ColorPicker\r\n              text=\"Background\"\r\n              BindToContext={[shopContext, \"settings.theme.background\"]}\r\n            />\r\n          </FormControl>\r\n          <FormControl\r\n            label=\"default font size\"\r\n            info=\"This font effects all other cart font sizes\"\r\n            error={validationErrors[\"settings.font.size\"]}\r\n          >\r\n            <Input\r\n              type=\"number\"\r\n              icon={{ char: \"PX\" }}\r\n              max={18}\r\n              min={12}\r\n              BindToContext={[shopContext, \"settings.font.size\"]}\r\n              hasError={!!validationErrors[\"settings.font.size\"]}\r\n            />\r\n          </FormControl>\r\n          <FormControl\r\n            label=\"choose font\"\r\n            withSwitch={[shopContext, \"settings.font.custom\"]}\r\n            info=\"By default the cart will use your store theme font. Turn this section on to add a custom google font.\"\r\n          >\r\n            <Dropdown\r\n              disabled={!state.settings.font.custom || !googleFonts.length}\r\n              options={googleFonts}\r\n              first\r\n              BindToContext={[shopContext, \"settings.font.family\"]}\r\n            />\r\n          </FormControl>\r\n        </FormGroup>\r\n        <FormGroup\r\n          label=\"advanced design settings\"\r\n          info=\"Finetune Cart Visuals\"\r\n          collapsable\r\n        >\r\n          <FormGroup label=\"header\" fullWidth>\r\n            <CustomText\r\n              context={shopContext}\r\n              label=\"cart title\"\r\n              path=\"settings.header.title\"\r\n              hasWeight=\"600\"\r\n              // info=\"The em unit is relative to the font size (2em means 2 times the current font size)\"\r\n            />\r\n            <FormControl\r\n              label=\"header colors\"\r\n              error={validationErrors[\"settings.header.background\"]}\r\n            >\r\n              <ColorPicker\r\n                text=\"text\"\r\n                BindToContext={[shopContext, \"settings.header.title.color\"]}\r\n              />\r\n              <ColorPicker\r\n                text=\"background\"\r\n                BindToContext={[shopContext, \"settings.header.background\"]}\r\n              />\r\n            </FormControl>\r\n          </FormGroup>\r\n          <FormGroup\r\n            label=\"cart\"\r\n            info=\"Design the basic cart visuals\"\r\n            fullWidth\r\n          >\r\n            <CustomText\r\n              context={shopContext}\r\n              label=\"product title\"\r\n              path=\"settings.product.title\"\r\n              hasColor={true}\r\n              hasWeight=\"600\"\r\n            />\r\n            <CustomText\r\n              context={shopContext}\r\n              label=\"product price\"\r\n              path=\"settings.product.price\"\r\n              hasColor={true}\r\n              hasWeight=\"600\"\r\n            />\r\n            <FormControl\r\n              label=\"product image size\"\r\n              info=\"an integer between 50 and 120\"\r\n              error={validationErrors[\"settings.product.image_size\"]}\r\n            >\r\n              <Input\r\n                type=\"number\"\r\n                BindToContext={[shopContext, \"settings.product.image_size\"]}\r\n                min={50}\r\n                max={120}\r\n              />\r\n            </FormControl>\r\n            <FormControl\r\n              label=\"Checkout Button Position\"\r\n              info={\r\n                \"Sticky: Always Visible At Bottom of cart (Suggested)\\nLower: Sits at Bottom of Page until product push it down further.\\nHigher: Sits Under Product Section And Scrolls Down as more products are added.\"\r\n              }\r\n            >\r\n              <Dropdown\r\n                options={[\r\n                  {\r\n                    value: \"sticky\",\r\n                    label: \"Sticky\",\r\n                  },\r\n                  {\r\n                    value: \"higher\",\r\n                    label: \"Higher\",\r\n                  },\r\n                  {\r\n                    value: \"lower\",\r\n                    label: \"Lower\",\r\n                  },\r\n                ]}\r\n                value={checkoutPosition}\r\n                onChange={handleCheckoutPosition}\r\n              />\r\n            </FormControl>\r\n            {/* <FormControl\r\n              label=\"lower checkout button\"\r\n              info=\"Checkout button will sit at the bottom of screen unless products push it lower.\"\r\n              error={validationErrors[\"settings.product.grow\"]}\r\n            >\r\n              <Switch BindToContext={[shopContext, \"settings.product.grow\"]} />\r\n            </FormControl>\r\n            <FormControl\r\n              label=\"sticky checkout button\"\r\n              info=\"Keeps the checkout button fixed at the bottom, always visible and not pushed down by products.\"\r\n              error={\r\n                validationErrors[\r\n                  \"settings.modules.checkout_button.fix_checkout_container\"\r\n                ]\r\n              }\r\n            >\r\n              <Switch\r\n                BindToContext={[\r\n                  shopContext,\r\n                  \"settings.modules.checkout_button.fix_checkout_container\",\r\n                ]}\r\n              />\r\n            </FormControl> */}\r\n            <FormControl\r\n              label=\"subtotal within checkout\"\r\n              info=\"Choose to integrate the subtotal within the checkout button or display it separately.\"\r\n              error={\r\n                validationErrors[\r\n                  \"settings.modules.checkout_button.show_subtotal\"\r\n                ]\r\n              }\r\n            >\r\n              <Switch\r\n                BindToContext={[\r\n                  shopContext,\r\n                  \"settings.modules.checkout_button.show_subtotal\",\r\n                  updateCheckoutText,\r\n                ]}\r\n              />\r\n            </FormControl>\r\n            <FormControl\r\n              label=\"Add to cart opens Cart\"\r\n              info=\"Every time a customer adds to cart the slide cart will appears. (We recommended leaving this on.)\"\r\n              error={validationErrors[\"settings.open_cart\"]}\r\n            >\r\n              <Switch BindToContext={[shopContext, \"settings.open_cart\"]} />\r\n            </FormControl>\r\n            <FormControl\r\n              label=\"sold out\"\r\n              error={validationErrors[\"settings.product.sold_out\"]}\r\n            >\r\n              <Input\r\n                type=\"text\"\r\n                BindToContext={[\r\n                  shopContext,\r\n                  \"settings.product.sold_out\",\r\n                  null,\r\n                  \"settings\",\r\n                ]}\r\n                hasError={!!validationErrors[\"settings.product.sold_out\"]}\r\n              />\r\n            </FormControl>\r\n            <FormControl\r\n              label=\"empty cart\"\r\n              info={`Displayed when no products are in the cart.\r\n\t\t\t\t\t\t\tTip: you can add images`}\r\n            >\r\n              <RichEditor\r\n                placeholder=\"empty cart text\"\r\n                BindToContext={[shopContext, \"settings.empty_cart\"]}\r\n                onFocus={() => {\r\n                  setCartIsEmpty(true);\r\n                }}\r\n                onBlur={(editor, activeElement) => {\r\n                  if (!editor.contains(activeElement)) setCartIsEmpty(false);\r\n                }}\r\n              />\r\n            </FormControl>\r\n            <FormControl\r\n              label=\"Empty cart - Continue shopping button\"\r\n              info=\"Make it easy for customers to continue shopping\"\r\n              withSwitch={[\r\n                shopContext,\r\n                \"settings.active_continue_shopping_button\",\r\n              ]}\r\n            >\r\n              {state.settings.active_continue_shopping_button && (\r\n                <CustomText\r\n                  context={shopContext}\r\n                  placeholder=\"Continue shopping\"\r\n                  hasColor={true}\r\n                  path=\"settings.continue_shopping_button\"\r\n                  onFocus={() => {\r\n                    setCartIsEmpty(true);\r\n                  }}\r\n                  onBlur={() => {\r\n                    setCartIsEmpty(false);\r\n                  }}\r\n                  hasWeight={true}\r\n                />\r\n              )}\r\n            </FormControl>\r\n          </FormGroup>\r\n\r\n          <FormGroup\r\n            label=\"Auto discount style\"\r\n            onFocus={() => setAutoDiscount(true)}\r\n            onBlur={() => setAutoDiscount(false)}\r\n            fullWidth\r\n          >\r\n            <CustomText\r\n              context={shopContext}\r\n              label=\"text\"\r\n              path=\"settings.auto_discount.text\"\r\n              hasColor={true}\r\n              hasWeight=\"700\"\r\n              beta\r\n            />\r\n            <FormControl>\r\n              <ColorPicker\r\n                text=\"Background\"\r\n                BindToContext={[\r\n                  shopContext,\r\n                  \"settings.auto_discount.background\",\r\n                ]}\r\n              />\r\n              <ColorPicker\r\n                text=\"Border\"\r\n                BindToContext={[shopContext, \"settings.auto_discount.border\"]}\r\n              />\r\n            </FormControl>\r\n          </FormGroup>\r\n          <FormGroup\r\n            label=\"Subscription upgrades\"\r\n            fullWidth\r\n            withSwitch={[shopContext, \"settings.subscription.isActive\"]}\r\n            onFocus={() => setShowSubscription(true)}\r\n            onBlur={() => setShowSubscription(false)}\r\n            beta\r\n          >\r\n            {state.settings.subscription?.isActive && (\r\n              <>\r\n                <div className={classNames(\"flex-center pt-5 mb-3\")}>\r\n                  <button\r\n                    className={classNames(\r\n                      \"text-sm focus:outline-none py-2 px-3 font-semibold border-2 rounded-l border-r-none border-blue-500\",\r\n                      {\r\n                        \"bg-blue-500 text-white\":\r\n                          subscriptionTab === \"unsubscribed\",\r\n                        \"bg-white text-blue-500\":\r\n                          subscriptionTab !== \"unsubscribed\",\r\n                      }\r\n                    )}\r\n                    onClick={() => setSubscriptionTab(\"unsubscribed\")}\r\n                  >\r\n                    Unsubscribed\r\n                  </button>\r\n                  <button\r\n                    className={classNames(\r\n                      \"relative text-sm focus:outline-none py-2 px-3 font-semibold border-t-2 border-b-2 border-blue-500\",\r\n                      {\r\n                        \"bg-blue-500 text-white\": subscriptionTab === \"loading\",\r\n                        \"bg-white text-blue-500\": subscriptionTab !== \"loading\",\r\n                      }\r\n                    )}\r\n                    onClick={() => setSubscriptionTab(\"loading\")}\r\n                  >\r\n                    Loading\r\n                  </button>\r\n                  <button\r\n                    className={classNames(\r\n                      \"text-sm focus:outline-none py-2 px-3 font-semibold border-2 rounded-r border-l-none border-blue-500\",\r\n                      {\r\n                        \"bg-blue-500 text-white\":\r\n                          subscriptionTab === \"subscribed\",\r\n                        \"bg-white text-blue-500\":\r\n                          subscriptionTab !== \"subscribed\",\r\n                      }\r\n                    )}\r\n                    onClick={() => setSubscriptionTab(\"subscribed\")}\r\n                  >\r\n                    Subscribed\r\n                  </button>\r\n                </div>\r\n                {subscriptionTab === \"unsubscribed\" && (\r\n                  <>\r\n                    <CustomText\r\n                      context={shopContext}\r\n                      label=\"subscribe text\"\r\n                      path=\"settings.subscription.text\"\r\n                      hasColor={true}\r\n                      hasWeight=\"700\"\r\n                      info=\"use {{plans_group_name}} to display the subscriptions group name, ex: (Subscribe & Save 10%)\"\r\n                    />\r\n                    <FormControl>\r\n                      <ColorPicker\r\n                        text=\"Background\"\r\n                        BindToContext={[\r\n                          shopContext,\r\n                          \"settings.subscription.background\",\r\n                        ]}\r\n                      />\r\n                      <ColorPicker\r\n                        text=\"Border\"\r\n                        BindToContext={[\r\n                          shopContext,\r\n                          \"settings.subscription.border\",\r\n                        ]}\r\n                      />\r\n                    </FormControl>\r\n                  </>\r\n                )}\r\n                {subscriptionTab === \"loading\" && (\r\n                  <>\r\n                    <CustomText\r\n                      context={shopContext}\r\n                      label=\"upgrading text\"\r\n                      path=\"settings.subscription.upgradingText\"\r\n                      hasColor={true}\r\n                      hasWeight=\"700\"\r\n                    />\r\n                    <CustomText\r\n                      context={shopContext}\r\n                      label=\"downgrading text\"\r\n                      path=\"settings.subscription.downgradingText\"\r\n                      hasColor={true}\r\n                      hasWeight=\"700\"\r\n                    />\r\n                    <FormControl>\r\n                      <ColorPicker\r\n                        text=\"Background\"\r\n                        BindToContext={[\r\n                          shopContext,\r\n                          \"settings.subscription.loadingBackground\",\r\n                        ]}\r\n                      />\r\n                      <ColorPicker\r\n                        text=\"Border\"\r\n                        BindToContext={[\r\n                          shopContext,\r\n                          \"settings.subscription.loadingBorder\",\r\n                        ]}\r\n                      />\r\n                    </FormControl>\r\n                  </>\r\n                )}\r\n                {subscriptionTab === \"subscribed\" && (\r\n                  <>\r\n                    <CustomText\r\n                      context={shopContext}\r\n                      label=\"subscribed text\"\r\n                      path=\"settings.subscription.subscribedText\"\r\n                      hasColor={true}\r\n                      hasWeight=\"700\"\r\n                      info=\"use {{selling_plan_name}} to display the selected plan name, ex: (Monthly Subscription)\"\r\n                    />\r\n                    <FormControl>\r\n                      <ColorPicker\r\n                        text=\"Background\"\r\n                        BindToContext={[\r\n                          shopContext,\r\n                          \"settings.subscription.subscribedBackground\",\r\n                        ]}\r\n                      />\r\n                      <ColorPicker\r\n                        text=\"Border\"\r\n                        BindToContext={[\r\n                          shopContext,\r\n                          \"settings.subscription.subscribedBorder\",\r\n                        ]}\r\n                      />\r\n                    </FormControl>\r\n                  </>\r\n                )}\r\n                <a\r\n                  className={classNames(\r\n                    \"w-full cursor-pointer hover:underline flex-1 mt-6 text-gray-500 text-xs italic mb-1\"\r\n                  )}\r\n                  href=\"https://monsterapps.crisp.help/en/article/subscription-apps-subscribe-in-cart-giteo5/?bust=1726664071981&fbclid=IwY2xjawFjVcJleHRuA2FlbQIxMAABHVf2wiS31mKi6CfqqRw28L9z4OPn2grGtJl4PrQZyP7TQM4PNi1WNo_j6Q_aem_ttRHtjqNu4zJqEd-85JT_A\"\r\n                  target=\"_blank\"\r\n                >\r\n                  Click here to see the list of compatible apps\r\n                </a>\r\n              </>\r\n            )}\r\n          </FormGroup>\r\n          <CheckoutButton\r\n            context={shopContext}\r\n            setCheckoutButtonLoadingEdit={setCheckoutButtonLoadingEdit}\r\n          />\r\n\r\n          <FormControl\r\n            label=\"display cart on RTL\"\r\n            withSwitch={[shopContext, \"settings.rtl\"]}\r\n            info=\"Enable this if your store language uses right to left scripts.\"\r\n          />\r\n          <FormControl\r\n            label=\"Curve corners\"\r\n            withSwitch={[shopContext, \"settings.curved\"]}\r\n            info=\"Turn curved corners on and off.\"\r\n          />\r\n          <FormControl\r\n            label=\"Display compare price\"\r\n            info=\"Show Shopify product compare pricing in cart.\"\r\n            withSwitch={[shopContext, \"settings.count_compare_at\"]}\r\n          />\r\n        </FormGroup>\r\n        <FormGroup\r\n          label=\"extra features\"\r\n          info=\"Timer, Split Payments, Badges Banners ect.\"\r\n          collapsable\r\n        >\r\n          <AfterPay shopContext={shopContext} />\r\n          <ScarcitySettings {...{ shopContext }} />\r\n          <BadgesSettings {...{ shopContext }} />\r\n          <TermsSettings {...{ shopContext }} />\r\n          <AnnouncementSettings {...{ shopContext }} />\r\n        </FormGroup>\r\n        <FormGroup label=\"advanced cart settings\" collapsable>\r\n          <FormGroup label=\"Custom CSS\" fullWidth>\r\n            <FormControl\r\n              label=\"Manually Add Custom CSS Changes To The Cart.\"\r\n              info={`This is helpful if you need to modify text sizes and introduce small branding elements.\r\n\t\t\t\t\t\t\tReach out to the team if you need help finding specific id's. Styles will only be applied to live cart on your store not in dashboard preview. \r\n\t\t\t\t\t\t\t(Advanced users only)`}\r\n            >\r\n              {/* <Textarea\r\n              BindToContext={[shopContext, \"settings.custom_css\"]}\r\n              placeholder=\".text{ color: blue; }\"\r\n            /> */}\r\n              <CodeEditor\r\n                BindToContext={[shopContext, \"settings.custom_css\"]}\r\n                language={\"css\"}\r\n                placeholder=\"/* your css here */\"\r\n              />\r\n            </FormControl>\r\n          </FormGroup>\r\n        </FormGroup>\r\n\r\n        {!BREAK_POINTS[\"kill_draft\"](shopContext) && (\r\n          <FormGroup\r\n            label=\"checkout settings\"\r\n            info={`\r\n\t\t\t\t\t\t<p class=\"${classNames(\r\n              \"mb-1\"\r\n            )}\">To navigate Shopify’s limited discount functionalities we use draft discounts.</p>\r\n\t\t\t\t\t\t<h4 class=\"${classNames(\"font-bold text-gray-600 mb-1\")}\">Draft checkout:</h4>\r\n\t\t\t\t\t\t<p>has more discount functionality and is preferred option for upsells.</p>\r\n\t\t\t\t\t\t<h4 class=\"${classNames(\r\n              \"font-bold text-gray-600 mb-1\"\r\n            )}\">Normal Shopify checkout:</h4>\r\n\t\t\t\t\t\t<p>works better for stores that sell in multi-currency and want customers to add discounts in checkout area.</p>\r\n\t\t\t\t\t\t`}\r\n          >\r\n            <ButtonSelect\r\n              isVertical\r\n              options={[\r\n                {\r\n                  label: \"Draft Checkout\",\r\n                  value: false,\r\n                  infoHtml: true,\r\n                  info: `\r\n\t\t\t\t\t\t\t\t<ul class=\"${classNames(\"list-disc list-inside\")}\">\r\n\t\t\t\t\t\t\t\t\t<li>Allow multiple discounts</li>\r\n\t\t\t\t\t\t\t\t\t<li>More powerful campaign options</li>\r\n\t\t\t\t\t\t\t\t\t<li>Checkout is in default store currency</li>\r\n\t\t\t\t\t\t\t\t\t<li>Coupon must be added in upsell cart</li>\r\n\t\t\t\t\t\t\t\t</ul>\r\n\t\t\t\t\t\t\t\t`,\r\n                },\r\n                {\r\n                  label: \"Normal Shopify Checkout\",\r\n                  value: true,\r\n                  infoHtml: true,\r\n                  info: `\r\n\t\t\t\t\t\t\t\t\t<ul class=\"${classNames(\"list-disc list-inside\")}\">\r\n\t\t\t\t\t\t\t\t\t<li>One discount at a time</li>\r\n\t\t\t\t\t\t\t\t\t<li>Uses unique discount codes injected at checkout</li>\r\n\t\t\t\t\t\t\t\t\t<li>Checkout is in Multi-currency</li>\r\n\t\t\t\t\t\t\t\t\t<li>Coupons added in checkout like normal</li>\r\n\t\t\t\t\t\t\t\t</ul>\r\n\t\t\t\t\t\t\t\t`,\r\n                },\r\n              ]}\r\n              BindToContext={[shopContext, \"settings.multiCurrencyMode\"]}\r\n            />\r\n          </FormGroup>\r\n        )}\r\n\r\n        {/* // COD */}\r\n        {/* <FormGroup\r\n          label=\"Cash On Delivery Checkout\"\r\n          info={`<p>Replace standard Shopify checkout process with our fully customizable COD checkout.</p>`}\r\n          collapsable\r\n        >\r\n          <ButtonSelect\r\n            isVertical\r\n            options={[\r\n              {\r\n                label:\r\n                  \"Cash On Delivery Checkout - COD ( Shopify will not take any payments)\",\r\n                infoHtml: true,\r\n                withSwitch: true,\r\n                disabledClick: true,\r\n                info: `\r\n\t\t\t\t\t\t\t\t<ul class=\"${classNames(\"list-disc list-inside\")}\">\r\n\t\t\t\t\t\t\t\t\t<li>Replace checkout with quick order form</li>\r\n\t\t\t\t\t\t\t\t\t<li>Creates Draft order for you to fullfill </li>\r\n\t\t\t\t\t\t\t\t\t<li>Skips all checkout payment options (example: Paypal, Shopify Payments, Afterpay)</li>\r\n\t\t\t\t\t\t\t\t\t<li>Creates customer orders/accounts for you to fullfill and collect payment for</li>\r\n\t\t\t\t\t\t\t\t</ul>\r\n\t\t\t\t\t\t\t\t`,\r\n              },\r\n            ]}\r\n            BindToContext={[shopContext, \"settings.cod_settings.is_active\"]}\r\n            showCheckedIcon={false}\r\n          />\r\n          {state.settings.cod_settings.is_active && (\r\n            <>\r\n              <FormControl\r\n                label=\"Cash on delivery options\"\r\n                info=\"Would you like to give both checkout options or limit to just cash on delivery?\"\r\n                error={validationErrors[\"settings.cod_settings.checkout_mode\"]}\r\n                isSingleCol={true}\r\n              >\r\n                <ButtonSelect\r\n                  options={[\r\n                    { label: \"Cash on Delivery only\", value: \"cod_only\" },\r\n                    {\r\n                      label: \"Checkout and cash on delivery\",\r\n                      value: \"cod_and_checkout\",\r\n                    },\r\n                  ]}\r\n                  BindToContext={[\r\n                    shopContext,\r\n                    \"settings.cod_settings.checkout_mode\",\r\n                  ]}\r\n                />\r\n              </FormControl>\r\n              <FormControl>\r\n                <div>\r\n                  <Button\r\n                    text=\"Customize COD Checkout\"\r\n                    onClick={() => {\r\n                      history.push(\"/settings/checkout\" + location.search);\r\n                    }}\r\n                    style={{ width: \"100%\" }}\r\n                  />\r\n                </div>\r\n              </FormControl>\r\n            </>\r\n          )}\r\n          {state.settings.cod_settings.checkout_mode == \"cod_only\" && (\r\n            <FormControl\r\n              label=\"one step checkout\"\r\n              withSwitch={[\r\n                shopContext,\r\n                \"settings.cod_settings.is_form_in_cart\",\r\n              ]}\r\n              info=\"Display the checkout form in the main cart for a fast onr step checkout.\"\r\n            />\r\n          )}\r\n        </FormGroup> */}\r\n      </Fragment>\r\n    </Page>\r\n  );\r\n};\r\n\r\nexport default CartScreen;\r\n","import React, { useRef, useState, useEffect } from \"react\";\r\nimport styles from \"styles/page.module.scss\";\r\nimport { Button, Spinner, Notifications } from \"components\";\r\nimport { Scrollbars } from \"react-custom-scrollbars\";\r\nimport { useTransition, animated } from \"react-spring\";\r\nimport { WithPageScrollProvider } from \"context/PageScrollContext\";\r\nimport classNames from \"lib/classNames\";\r\n\r\nexport const PageHeader = ({ style = {}, title, actions = [] }) => {\r\n  return (\r\n    <div\r\n      className={classNames(\"flex items-center px-6 p-2 bg-white\")}\r\n      style={{ ...style, height: 48 }}\r\n    >\r\n      <h3\r\n        className={\r\n          classNames(\"flex-1 capitalize text-gray-600 text-lg font-bold\") +\r\n          ` ${styles.page_header}`\r\n        }\r\n      >\r\n        {title}\r\n      </h3>\r\n      {!!actions.length &&\r\n        actions.map((action, index) => {\r\n          if (typeof action === \"function\") return action(index);\r\n          if (!action.type) action.type = \"circle-icon__primary\";\r\n          return <Button {...action} className={styles.action} key={index} />;\r\n        })}\r\n    </div>\r\n  );\r\n};\r\n\r\nconst Page = ({\r\n  header = false,\r\n  TopContent = null,\r\n  children,\r\n  loading = false,\r\n  background = \"none\",\r\n  padding = \"\",\r\n  onScroll = null,\r\n  getScrollTop,\r\n  additional_classes = \"\",\r\n}) => {\r\n  const scrollbars_ref = useRef(null);\r\n  const [error, setError] = useState(false);\r\n  const [buttonLoading, setButtonLoading] = useState(false);\r\n\r\n  useEffect(() => {\r\n    if (getScrollTop && scrollbars_ref.current) {\r\n      getScrollTop(scrollbars_ref.current);\r\n    }\r\n  }, [scrollbars_ref]);\r\n  return (\r\n    <div className={styles.app_container}>\r\n      {header && TopContent && (\r\n        <div className={styles.topBarWrapper}>\r\n          {TopContent.transitions.map(({ item, key, props }) => {\r\n            return item ? (\r\n              <animated.div\r\n                style={props}\r\n                className={classNames(\"h-full\")}\r\n                key={key}\r\n              >\r\n                <TopContent.render\r\n                  error={{\r\n                    get: error,\r\n                    set: setError,\r\n                  }}\r\n                  loading={{\r\n                    get: buttonLoading,\r\n                    set: setButtonLoading,\r\n                  }}\r\n                />\r\n              </animated.div>\r\n            ) : (\r\n              <animated.div\r\n                style={props}\r\n                className={classNames(\"h-full\")}\r\n                key={key}\r\n              >\r\n                <PageHeader {...header} />\r\n              </animated.div>\r\n            );\r\n          })}\r\n        </div>\r\n      )}\r\n      {header && !TopContent && (\r\n        <div className={styles.topBarWrapper}>\r\n          <PageHeader {...header} />\r\n        </div>\r\n      )}\r\n      <Scrollbars\r\n        className={styles.customScrollbars}\r\n        style={{\r\n          height: header ? \"calc(100vh - 50px)\" : \"100vh\",\r\n        }}\r\n        ref={scrollbars_ref}\r\n        onScroll={() => {\r\n          if (onScroll) onScroll(scrollbars_ref.current.getScrollTop());\r\n          // localStorage.setItem('pst', scrollTop);\r\n        }}\r\n      >\r\n        <WithPageScrollProvider pageScroll={scrollbars_ref}>\r\n          <div className={classNames(\"relative h-full\")}>\r\n            <Notifications />\r\n            <div\r\n              className={classNames(\r\n                `min-h-full relative${additional_classes}`,\r\n                styles.page_content,\r\n                padding || \"p-6\"\r\n              )}\r\n              id=\"page-content\"\r\n            >\r\n              {loading.status ? (\r\n                <Spinner text={loading.text || \"page loading\"} />\r\n              ) : (\r\n                children\r\n              )}\r\n            </div>\r\n          </div>\r\n        </WithPageScrollProvider>\r\n      </Scrollbars>\r\n    </div>\r\n  );\r\n};\r\n\r\nexport default Page;\r\n","import React, {\r\n  useContext,\r\n  Fragment,\r\n  useEffect,\r\n  useRef,\r\n  useState\r\n} from \"react\";\r\nimport { useMutation } from \"@apollo/react-hooks\";\r\nimport {\r\n  SortableContainer,\r\n  SortableElement,\r\n  sortableHandle\r\n} from \"react-sortable-hoc\";\r\nimport extrastyles from \"styles/extra_modules.module.scss\";\r\nimport arrayMove from \"array-move\";\r\nimport PageScrollContext from \"context/PageScrollContext\";\r\nimport md5 from \"crypto-js/md5\";\r\nimport {\r\n  Page,\r\n  Range,\r\n  ColorPicker,\r\n  FormGroup,\r\n  Input,\r\n  FormControl,\r\n  Dropdown,\r\n  Switch,\r\n  CustomText,\r\n  Icon,\r\n  Button,\r\n  Alert,\r\n  VideoModal,\r\n  RichEditor,\r\n  ButtonSelect,\r\n  MultiCurrencyModeAlerts,\r\n  Modal\r\n} from \"components\";\r\nimport PreviewContext from \"context/PreviewContext\";\r\nimport ShopContext from \"context/ShopContext\";\r\nimport UserContext from \"context/UserContext\";\r\nimport {\r\n  GOOGLE_FONTS,\r\n  CAMPAIGN_TYPES,\r\n  SHOP_DEFAULT_SETTINGS\r\n} from \"lib/globals\";\r\nimport { SAVE_SHOP_SETTINGS, UPDATE_SHOP_PROP } from \"lib/mutations\";\r\nimport ExtraModules from \"screens/campaigns/settings/ExtraModules/index\";\r\nimport CheckoutButton from \"screens/campaigns/settings/ExtraModules/CheckoutButton\";\r\nimport { Loading, Toast } from \"@shopify/app-bridge-react\";\r\nimport { ShopConstraints } from \"Constraints\";\r\nimport removeTypeName, { removeByType } from \"lib/removeTypeName\";\r\nimport { Run } from \"lib/validate\";\r\nimport { GET_SHOP_SETTINGS } from \"Queries\";\r\nimport { PageHeader } from \"components/Page\";\r\nimport { API, graphqlOperation } from \"aws-amplify\";\r\nimport { APP_DEV } from \"aws-exports\";\r\nimport Axios from \"axios\";\r\nimport { Manager, Reference, Popper } from \"react-popper\";\r\nimport Checkbox from \"react-simple-checkbox\";\r\nimport styles from \"styles/cart_screen.module.scss\";\r\nimport { useTransition } from \"react-spring\";\r\nimport _ from \"lodash\";\r\nimport classNames from \"lib/classNames\";\r\nimport useReactRouter from \"use-react-router\";\r\nimport { SET_ALL } from \"reducers/SetItemReducer\";\r\nimport useRefState from \"hooks/useRefState\";\r\nimport { modules } from \"Constraints/CampaignConstraints\";\r\n\r\nconst CodCheckout = (props) => {\r\n  const {\r\n    collapsed,\r\n    setCollapsed,\r\n    setCartIsEmpty,\r\n    setComfirmOrderButtonLoadingEdit,\r\n    editingProductDetails,\r\n    setEditingProductDetails,\r\n    campaign_preview_types\r\n  } = useContext(PreviewContext);\r\n  const stickyAlert = useRef(null);\r\n  const { history, location } = useReactRouter();\r\n  const [scrollTop, setScrollTop, scrollTopRef] = useRefState();\r\n  const [cartActivateLoading, setCartActivateLoading] = useState(false);\r\n  const [videoOne, setVideoOne] = useState(false);\r\n  const [googleFonts, setGoogleFonts] = useState([]);\r\n  const [hideTopBar, setHideTopBar] = useState(false);\r\n  const [showConfirmActivate, setShowConfirmActivate] = useState(false);\r\n  const [campaign_preview_visible, setCampaign_preview_visible] =\r\n    useState(false);\r\n  const campaign_preview_content_ref = useRef(null);\r\n  const shopContext = useContext(ShopContext);\r\n  const user = useContext(UserContext);\r\n  const [editModalVisibility, setEditModalVisibility] = useState(false);\r\n  const [addModalVisibility, setAddModalVisibility] = useState(false);\r\n\r\n  const [selectedModule, setSelectedModule] = useState(null);\r\n  const {\r\n    state,\r\n    discard,\r\n    validationErrors,\r\n    setValidationErrors,\r\n    dispatch,\r\n    setItem\r\n  } = shopContext;\r\n\r\n  const {\r\n    settings: {\r\n      cod_settings: { form, checkout_mode }\r\n    }\r\n  } = state;\r\n  // const filterSettings = (settings) =>\r\n  // \t_.merge(\r\n  // \t\t{},\r\n  // \t\tSHOP_DEFAULT_SETTINGS(),\r\n  // \t\tremoveByType(\r\n  // \t\t\tremoveTypeName(\r\n  // \t\t\t\tObject.fromEntries(Object.entries(settings).filter(([key]) => !['settingsSaved'].includes(key)))\r\n  // \t\t\t),\r\n  // \t\t\t(v) => v !== '' && v !== null\r\n  // \t\t)\r\n  // \t);\r\n\r\n  const filterSettings = (settings) => {\r\n    return removeByType(\r\n      removeTypeName(\r\n        Object.fromEntries(\r\n          Object.entries(settings).filter(\r\n            ([key]) => ![\"settingsSaved\"].includes(key)\r\n          )\r\n        )\r\n      ),\r\n      (v) => v !== \"\" && v !== null\r\n    );\r\n    // _.mergeWith(\r\n    // \tSHOP_DEFAULT_SETTINGS(),\r\n    // \tremoveByType(\r\n    // \t\tremoveTypeName(\r\n    // \t\t\tObject.fromEntries(Object.entries(settings).filter(([key]) => !['settingsSaved'].includes(key)))\r\n    // \t\t),\r\n    // \t\t(v) => v !== '' && v !== null\r\n    // \t),\r\n    // \t(objValue, srcValue) => srcValue && _.isArray(srcValue) ? srcValue : undefined\r\n    // );\r\n  };\r\n\r\n  let [saveShopSettings, { data, error, loading }] = useMutation(\r\n    SAVE_SHOP_SETTINGS,\r\n    {\r\n      refetchQueries: [\r\n        {\r\n          query: GET_SHOP_SETTINGS,\r\n          variables: {\r\n            userId: user.attributes.website\r\n          }\r\n        }\r\n      ]\r\n    }\r\n  );\r\n  const transitions = useTransition(\r\n    !_.isEqual(state.original_settings, state.settings) && !hideTopBar,\r\n    null,\r\n    {\r\n      from: { position: \"absolute\", opacity: 0 },\r\n      enter: { opacity: 1 },\r\n      leave: { opacity: 0 },\r\n      config: {\r\n        duration: 300\r\n      }\r\n    }\r\n  );\r\n  const validate = (state, specific = []) =>\r\n    Run(state, specific, {\r\n      errors: validationErrors,\r\n      setErrors: setValidationErrors,\r\n      constraints: ShopConstraints\r\n    });\r\n  const onSortEnd = ({ oldIndex, newIndex }) => {\r\n    const newOrder = arrayMove(form, oldIndex, newIndex);\r\n    setItem(\"settings.cod_settings.form\", newOrder);\r\n    // console.log(newOrder)\r\n    // modules = newOrder\r\n    // this.props.edit('modules', 'order', newOrder);\r\n    // setModules(newOrder);\r\n  };\r\n\r\n  const deleteModule = (index) => {\r\n    const newOrder = form.slice();\r\n    newOrder.splice(index, 1);\r\n    setItem(\"settings.cod_settings.form\", newOrder);\r\n  };\r\n  const editModule = (index, module) => {\r\n    const newForm = form.slice();\r\n    newForm[index] = module;\r\n    setItem(\"settings.cod_settings.form\", newForm);\r\n  };\r\n  const addModule = (module) => {\r\n    const newForm = form.slice();\r\n    newForm.push(module);\r\n    setItem(\"settings.cod_settings.form\", newForm);\r\n  };\r\n\r\n  const save = (assign = {}, checkRTL = true) => {\r\n    // console.log(\"state.settings\")\r\n    // console.log(state.settings)\r\n    // return\r\n    if (validate(state)) return;\r\n    if (\r\n      checkRTL &&\r\n      Object.keys(state.original_settings || {}).length &&\r\n      state.settings.rtl !== state.original_settings.rtl\r\n    ) {\r\n      console.log(\r\n        \"updating theme\",\r\n        state.settings.rtl,\r\n        state.original_settings.rtl,\r\n        state.settings.active\r\n      );\r\n      // return activateCart(state.settings.active, true, state.settings.rtl);\r\n    }\r\n\r\n    saveShopSettings({\r\n      variables: {\r\n        id: user.attributes.website,\r\n        input: filterSettings(Object.assign(state.settings, assign))\r\n      }\r\n    });\r\n  };\r\n\r\n  const activateCart = async (active, confirmed = false, rtl = null) => {\r\n    if (\r\n      active &&\r\n      !confirmed &&\r\n      !state.settingsSaved &&\r\n      _.isEqual(SHOP_DEFAULT_SETTINGS, state.settings)\r\n    ) {\r\n      return setShowConfirmActivate(true);\r\n    }\r\n    // setCartActivateLoading(true);\r\n    // const { success } = await API.post(\"API_GATEWAY_NEW\", \"/cart/activate\", {\r\n    //   body: { active, rtl: rtl === null ? state.settings.rtl : rtl }\r\n    // });\r\n    // setCartActivateLoading(false);\r\n    return save({ active }, false);\r\n  };\r\n\r\n  const handleOutSideClick = (event) => {\r\n    if (!campaign_preview_content_ref.current) return;\r\n    else if (campaign_preview_content_ref.current.contains(event.target))\r\n      return;\r\n    setCampaign_preview_visible(false);\r\n  };\r\n\r\n  useEffect(() => {\r\n    if (campaign_preview_visible)\r\n      document.addEventListener(\"mousedown\", handleOutSideClick, false);\r\n    else document.removeEventListener(\"mousedown\", handleOutSideClick, false);\r\n    return () => {\r\n      document.removeEventListener(\"mousedown\", handleOutSideClick, false);\r\n    };\r\n  }, [campaign_preview_visible]);\r\n\r\n  useEffect(() => {\r\n    // if (typeof state.settings.multiCurrencyMode !== 'boolean') {\r\n    // \tsetItem('settings.multiCurrencyMode', false);\r\n    // }\r\n    async function getGoogleFonts () {\r\n      const { data } = await Axios.get(\r\n        `https://www.googleapis.com/webfonts/v1/webfonts?sort=popularity&key=AIzaSyCYLq50twmAe1_7jITZuehrERZWOjNqBCY`\r\n      );\r\n      setGoogleFonts(\r\n        data.items.map(({ family, variants }) => ({\r\n          label: family,\r\n          value: `${family}:${variants.join()}`\r\n        }))\r\n      );\r\n    }\r\n    getGoogleFonts();\r\n  }, []);\r\n\r\n  useEffect(() => {\r\n    setHideTopBar(!!data);\r\n    if (APP_DEV) setTimeout(() => setHideTopBar(false), 1500);\r\n  }, [data]);\r\n  return (\r\n    <Page\r\n      background=\"none\"\r\n      getScrollTop={({ scrollTop }) => {\r\n        setScrollTop(scrollTop);\r\n      }}\r\n      padding={0}\r\n      header={{\r\n        title: \"Cash on Delivery Checkout - Customization and Settings\",\r\n        actions: [\r\n          {\r\n            text: \"Back to settings\",\r\n            type: \"secondary\",\r\n            loading: false,\r\n            onClick: () => history.push(\"/settings\" + location.search)\r\n          }\r\n        ]\r\n      }}\r\n      TopContent={{\r\n        transitions,\r\n        render: () => (\r\n          <Alert\r\n            type=\"save_settings\"\r\n            title=\"unsaved changes\"\r\n            borderPosition=\"none\"\r\n            paddingX=\"px-6\"\r\n            actions={[\r\n              {\r\n                text: \"Discard\",\r\n                type: \"secondary\",\r\n                loading: false,\r\n                onClick: () => discard()\r\n              },\r\n              {\r\n                text: \"Save\",\r\n                type: \"primary\",\r\n                loading: loading || cartActivateLoading,\r\n                onClick: () => save()\r\n              }\r\n            ]}\r\n          />\r\n        )\r\n      }}\r\n    >\r\n      <Fragment>\r\n        {data && (\r\n          <Toast\r\n            content=\"Cart settings has been saved\"\r\n            duration={3000}\r\n            onDismiss={() => {\r\n              setHideTopBar(false);\r\n            }}\r\n          />\r\n        )}\r\n        {(loading || cartActivateLoading) && <Loading />}\r\n        <FormGroup\r\n          label=\"Create Cash on Delivery Form\"\r\n          info={`Add the feilds you want your order form to have. You can add, edit , drag'n'drop and remove fields.`}\r\n        >\r\n          <ModulesList\r\n            useDragHandle\r\n            {...{\r\n              form,\r\n              onSortEnd,\r\n              deleteModule,\r\n              setSelectedModule,\r\n              setEditModalVisibility\r\n            }}\r\n          />\r\n          <FormControl>\r\n            <div>\r\n              <Button\r\n                text=\"+ Add New Field\"\r\n                type={\r\n                  validationErrors[\"target.selected\"] &&\r\n                    !!validationErrors[\"target.selected\"][0]\r\n                    ? \"danger\"\r\n                    : \"primary\"\r\n                }\r\n                onClick={() => {\r\n                  setAddModalVisibility(true);\r\n                }}\r\n                style={{ width: \"100%\" }}\r\n              />\r\n            </div>\r\n          </FormControl>\r\n        </FormGroup>\r\n        {/* <FormGroup label=\"Customize checkout button\" info=\"Keep these settings simple and to the point\">\r\n\t\t\t\t\t<FormControl\r\n\t\t\t\t\t\tlabel=\"display cart on RTL\"\r\n\t\t\t\t\t\twithSwitch={[shopContext, 'settings.rtl']}\r\n\t\t\t\t\t\tinfo=\"Enable this if your store language uses right to left scripts.\"\r\n\t\t\t\t\t/>\r\n\t\t\t\t</FormGroup> */}\r\n        <FormGroup\r\n          label=\"Customize checkout button\"\r\n          info=\"Keep these settings simple and to the point\"\r\n        >\r\n          <CustomText\r\n            context={shopContext}\r\n            placeholder=\"Confirm Order\"\r\n            hasColor={true}\r\n            label=\"Confirm order text\"\r\n            path=\"settings.cod_settings.confirm_button\"\r\n          />\r\n\r\n          <FormControl label=\"checkout button colors\">\r\n            <ColorPicker\r\n              text=\"background\"\r\n              BindToContext={[\r\n                shopContext,\r\n                \"settings.cod_settings.confirm_button.background\"\r\n              ]}\r\n            />\r\n            {/* <ColorPicker\r\n              text=\"hover background\"\r\n              BindToContext={[\r\n                shopContext,\r\n                \"settings.cod_settings.confirm_button.hoverBackground\"\r\n              ]}\r\n            /> */}\r\n          </FormControl>\r\n          <CustomText\r\n            context={shopContext}\r\n            placeholder=\"processing\"\r\n            hasColor={true}\r\n            hasNumber={false}\r\n            onFocus={() => setComfirmOrderButtonLoadingEdit(true)}\r\n            onBlur={() => setComfirmOrderButtonLoadingEdit(false)}\r\n            label=\"checkout button loading text\"\r\n            path=\"settings.cod_settings.loading_button\"\r\n          />\r\n        </FormGroup>\r\n        <FormGroup>\r\n          <FormControl\r\n            label=\"Error message\"\r\n            error={validationErrors[\"settings.cod_settings.error_message\"]}\r\n          >\r\n            <Input\r\n              type=\"text\"\r\n              BindToContext={[\r\n                shopContext,\r\n                \"settings.cod_settings.error_message\"\r\n              ]}\r\n              hasError={\r\n                !!validationErrors[\"settings.cod_settings.error_message\"]\r\n              }\r\n            />\r\n          </FormControl>\r\n        </FormGroup>\r\n\r\n        <EditModal\r\n          {...{\r\n            editModalVisibility,\r\n            setEditModalVisibility,\r\n            selectedModule,\r\n            editModule\r\n          }}\r\n        />\r\n        {addModalVisibility && (\r\n          <AddModal\r\n            {...{\r\n              addModalVisibility,\r\n              setAddModalVisibility,\r\n              addModule\r\n            }}\r\n          />\r\n        )}\r\n      </Fragment>\r\n    </Page>\r\n  );\r\n};\r\n\r\nconst ModulesList = SortableContainer(\r\n  ({ form, deleteModule, setSelectedModule, setEditModalVisibility }) => {\r\n    return (\r\n      <FormControl isSingleCol={true}>\r\n        <div>\r\n          {!!form &&\r\n            form.map((module, index) => {\r\n              return (\r\n                <Module\r\n                  {...{\r\n                    setEditModalVisibility,\r\n                    module,\r\n                    setSelectedModule,\r\n                    deleteModule,\r\n                    index\r\n                  }}\r\n                  itemIndex={index}\r\n                  key={index}\r\n                />\r\n              );\r\n            })}\r\n        </div>\r\n      </FormControl>\r\n    );\r\n  }\r\n);\r\n\r\nconst Module = SortableElement(\r\n  ({\r\n    module,\r\n    deleteModule,\r\n    itemIndex,\r\n    setSelectedModule,\r\n    setEditModalVisibility\r\n  }) => {\r\n    const { label, isRequired, type } = module;\r\n    return (\r\n      <div className={extrastyles.module} data-active={true}>\r\n        <div\r\n          className={extrastyles.header}\r\n          data-has-children={false}\r\n          data-one-row={true}\r\n        >\r\n          <div className={extrastyles.header_wrapper}>\r\n            <b className={extrastyles.name}>{`${label} ${isRequired ? \"*\" : \"\"\r\n              }`}</b>\r\n          </div>\r\n          <div className={classNames(\"flex \")}>\r\n            <Button\r\n              className={classNames(\"mx-2 \")}\r\n              icon=\"edit\"\r\n              type=\"circle-warning\"\r\n              onClick={() => {\r\n                setSelectedModule([itemIndex, module]);\r\n                setEditModalVisibility(true);\r\n              }}\r\n            />\r\n            {type !== \"name\" && (\r\n              <Button\r\n                className={classNames(\"mx-2 \")}\r\n                icon=\"trash\"\r\n                type=\"circle-danger\"\r\n                onClick={() => deleteModule(itemIndex)}\r\n              />\r\n            )}\r\n          </div>\r\n        </div>\r\n        <Grip active={true} />\r\n      </div>\r\n    );\r\n  }\r\n);\r\n\r\nconst Grip = sortableHandle(({ active }) => {\r\n  return (\r\n    <div className={extrastyles.grip} data-active={active}>\r\n      <Icon icon=\"angle-up\" />\r\n      <Icon icon=\"angle-down\" />\r\n    </div>\r\n  );\r\n});\r\n\r\nconst EditModal = ({\r\n  editModalVisibility,\r\n  setEditModalVisibility,\r\n  selectedModule,\r\n  editModule\r\n}) => {\r\n  const [module, setModule] = useState(null);\r\n  useEffect(() => {\r\n    if (selectedModule) {\r\n      setModule({ ...selectedModule[1] });\r\n    }\r\n  }, [selectedModule]);\r\n\r\n  const handleChange = (value, attribute) => {\r\n    setModule({\r\n      ...module,\r\n      [attribute]: value\r\n    });\r\n  };\r\n\r\n  const save = () => {\r\n    editModule(selectedModule[0], module);\r\n    setEditModalVisibility(false);\r\n    // setSelectedModule(null)\r\n  };\r\n\r\n  return (\r\n    <Modal\r\n      visible={editModalVisibility && module}\r\n      title=\"Edit\"\r\n      onClose={() => setEditModalVisibility(false)}\r\n    >\r\n      {(close, setTitle) =>\r\n        module ? (\r\n          <div className={classNames(\"px-2 h-full flex flex-col\")}>\r\n            <div className={classNames(\"h-full \")}>\r\n              <FormControl label=\"Title\">\r\n                <Input\r\n                  value={module.label}\r\n                  onChange={(v) => handleChange(v, \"label\")}\r\n                />\r\n              </FormControl>\r\n              <FormControl label=\"Placeholder\">\r\n                <Input\r\n                  value={module.placeholder}\r\n                  onChange={(v) => handleChange(v, \"placeholder\")}\r\n                />\r\n              </FormControl>\r\n              <FormControl label=\"Required\">\r\n                <Switch\r\n                  value={module.isRequired}\r\n                  onChange={(v) => handleChange(v, \"isRequired\")}\r\n                />\r\n              </FormControl>\r\n            </div>\r\n\r\n            <div className={classNames(\"flex justify-end \")}>\r\n              <Button text=\"Save\" onClick={save} />\r\n            </div>\r\n          </div>\r\n        ) : (\r\n          <div></div>\r\n        )\r\n      }\r\n    </Modal>\r\n  );\r\n};\r\n\r\nconst AddModal = ({ addModalVisibility, setAddModalVisibility, addModule }) => {\r\n  const [label, setLabel] = useState(\"Titre\");\r\n  const [isRequired, setIsRequired] = useState(false);\r\n  const [type, setType] = useState(\"string\");\r\n  const [options, setOptions] = useState([]);\r\n  const [placeholder, setPlaceholder] = useState(\"\");\r\n\r\n  const save = () => {\r\n    addModule({\r\n      label,\r\n      isRequired,\r\n      type,\r\n      options,\r\n      placeholder\r\n    });\r\n    setAddModalVisibility(false);\r\n  };\r\n\r\n  const showOptions = [\"dropdown\", \"checkbox\", \"radio\"];\r\n\r\n  return (\r\n    <Modal\r\n      visible={addModalVisibility}\r\n      title=\"Add Field\"\r\n      onClose={() => setAddModalVisibility(false)}\r\n    >\r\n      {(close, setTitle) => (\r\n        <div className={classNames(\"px-2 \")}>\r\n          <FormControl label=\"Field type\">\r\n            <Dropdown\r\n              options={[\r\n                { value: \"name\", label: \"Full name\" },\r\n                { value: \"email\", label: \"Email\" },\r\n                { value: \"string\", label: \"Text\" },\r\n                { value: \"textarea\", label: \"Text area\" },\r\n                { value: \"dropdown\", label: \"Dropdown list\" }\r\n                // { value: 'checkbox', \tlabel: 'Checkbox' },\r\n                // { value: 'radio', \t\tlabel: 'Radio' },\r\n              ]}\r\n              onChange={(value) => setType(value)}\r\n              value={type}\r\n            />\r\n          </FormControl>\r\n          <FormControl label=\"Title\">\r\n            <Input value={label || \"\"} onChange={setLabel} />\r\n          </FormControl>\r\n          {showOptions.indexOf(type) === -1 && (\r\n            <FormControl label=\"Placeholder\">\r\n              <Input value={placeholder || \"\"} onChange={setPlaceholder} />\r\n            </FormControl>\r\n          )}\r\n          {showOptions.indexOf(type) !== -1 && (\r\n            <FormControl label=\"Options\">\r\n              <Dropdown\r\n                isCreatable={true}\r\n                isMulti={true}\r\n                onChange={setOptions}\r\n                value={options || []}\r\n              />\r\n            </FormControl>\r\n          )}\r\n\r\n          <FormControl label=\"Required\">\r\n            <Switch value={isRequired} onChange={setIsRequired} />\r\n          </FormControl>\r\n          <div className={classNames(\"flex justify-end py-2\")}>\r\n            <Button text=\"Save\" onClick={save} />\r\n          </div>\r\n        </div>\r\n      )}\r\n    </Modal>\r\n  );\r\n};\r\n\r\nexport default CodCheckout;\r\n","var _defs, _title, _ellipse, _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _path9, _path10, _g, _polygon, _polygon2, _path11, _path12, _path13, _path14, _path15, _path16, _path17, _path18, _path19, _path20, _path21, _path22, _path23, _path24, _path25, _path26, _path27, _path28, _path29, _path30, _path31, _path32, _path33, _path34, _g2, _path35, _path36, _path37, _path38, _path39, _path40, _polygon3, _polygon4, _polygon5, _polygon6, _polygon7, _polygon8, _polygon9, _polygon10, _polygon11, _polygon12, _polygon13, _polygon14, _polygon15, _polygon16, _polygon17, _polygon18, _path41, _path42, _path43, _path44, _path45, _path46, _path47, _path48, _path49, _path50, _path51, _path52, _path53, _path54, _path55, _path56, _path57, _path58, _path59, _path60, _path61, _ellipse2, _ellipse3, _ellipse4, _ellipse5, _ellipse6, _path62, _path63, _path64;\n\nvar _excluded = [\"svgRef\", \"title\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar SvgEmpty = function SvgEmpty(_ref) {\n  var svgRef = _ref.svgRef,\n      title = _ref.title,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    id: \"9af98f83-10c5-4067-bc84-20554b2827d8\",\n    \"data-name\": \"Layer 1\",\n    width: 1009.54,\n    height: 789.93,\n    viewBox: \"0 0 1009.54 789.93\",\n    ref: svgRef\n  }, props), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n    id: \"07c62293-c0d3-4921-8e06-4e39241449cd\",\n    x1: 318.22,\n    y1: 488.45,\n    x2: 630.35,\n    y2: 488.45,\n    gradientUnits: \"userSpaceOnUse\"\n  }, /*#__PURE__*/React.createElement(\"stop\", {\n    offset: 0,\n    stopColor: \"gray\",\n    stopOpacity: 0.25\n  }), /*#__PURE__*/React.createElement(\"stop\", {\n    offset: 0.54,\n    stopColor: \"gray\",\n    stopOpacity: 0.12\n  }), /*#__PURE__*/React.createElement(\"stop\", {\n    offset: 1,\n    stopColor: \"gray\",\n    stopOpacity: 0.1\n  })))), title === undefined ? _title || (_title = /*#__PURE__*/React.createElement(\"title\", null, \"empty\")) : title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ellipse || (_ellipse = /*#__PURE__*/React.createElement(\"ellipse\", {\n    cx: 354.13,\n    cy: 741.27,\n    rx: 176.1,\n    ry: 33.36,\n    fill: \"#2f80ed\",\n    opacity: 0.1\n  })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M681.78,166.43c-64.72-2.24-126.36-23.14-185.22-46S379.4,72.25,316.23,60.14C275.6,52.35,229.13,51.24,196.4,73c-31.51,21-41.69,57.15-47.16,90.72-4.12,25.26-6.54,51.85,4.74,75.5,7.84,16.42,21.74,30.22,31.36,45.95,33.47,54.72,9.81,122.2-26.45,175.63-17,25.06-36.75,49-49.88,75.65S89.81,593.74,101.3,621c11.38,27,38.51,47.24,67.9,61.49,59.69,28.95,130,37.23,198.61,41.93,151.83,10.38,304.46,5.89,456.69,1.38,56.34-1.66,112.92-3.35,168.34-12.06,30.78-4.84,62.55-12.52,84.9-31.06,28.36-23.53,35.39-63.37,16.38-92.87-31.88-49.5-120-61.79-142.31-114.9-12.26-29.24.33-61.8,18.16-88.91,38.24-58.17,102.33-109.2,105.7-175.68,2.32-45.66-28.49-91.39-76.13-113-49.93-22.65-119.18-19.8-156,17.69C805.59,153.57,738.93,168.42,681.78,166.43Z\",\n    transform: \"translate(-95.23 -55.03)\",\n    fill: \"#2f80ed\",\n    opacity: 0.1\n  })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M630.35,416.77l-30.63-20.65h0l15.45-23-80.9-6.45L505.2,389.15l-36.39-20.4-30.35,3.65-.36-8a225.78,225.78,0,0,0-2.51-24.9c.13-2.5.22-5.37.21-8.49,0-13.15-1.78-30.58-9.6-42.2L428,272.63,413.4,255.38a110.37,110.37,0,0,1,8-13.46c.5-.72,1-1.42,1.54-2.1,18.95-1.37,33.9-16.95,33.9-36,0-.88,0-1.76-.1-2.63,0-.35-.07-.71-.11-1.06,1.85,1,3.72,2,5.59,3,.35.5.75,1,1.19,1.59l0,0,.09.11.56.69.18.21c.2.24.41.47.62.71l.14.16c.53.59,1.09,1.19,1.69,1.78a1.8,1.8,0,0,1,.2.19l.75.7.21.19c.64.57,1.32,1.12,2,1.64l.22.16.86.59.28.18c.33.2.67.41,1,.6l.12.07c.39.21.79.41,1.19.6l.2.08q.51.22,1,.42l.31.11c.35.12.69.23,1.05.33l.22.06c.44.11.88.2,1.33.27h.05a10.88,10.88,0,0,0,1.28.13h.29a11,11,0,0,0,1.15,0h.25a11.85,11.85,0,0,0,1.43-.17,15.78,15.78,0,0,0,6.3-2.26,5.5,5.5,0,0,0,1.28-1.19c2-2.62-.2-5.49-.2-5.49h0c-.78-1.86-5.84-3.17-5.84-3.17s-16-6.68-16-12-4-32.92-45.29-39.23c0,0-26.86-1.51-34.41,12.87l-.16,1.68c-2.22,1.39-4.06,4.18-6.25,5a10.21,10.21,0,0,0-2.71,1l0-.19h0a2.58,2.58,0,0,0-.61.79,8,8,0,0,0-.83,3,11.3,11.3,0,0,1-1.31,3.63,8.07,8.07,0,0,1-.6.92h0l-.17.27a7.3,7.3,0,0,0,3.4-.55,16.93,16.93,0,0,1-1,4,3.32,3.32,0,0,0,3.08-1.84l0-.08.13-.18a8.44,8.44,0,0,0,.62-1.45l-.11.12c.2-.65.38-1.31.6-1.95a3.06,3.06,0,0,1,.49-1,2.42,2.42,0,0,1,2.07-.69l-.41,8.67h.18a11.83,11.83,0,0,1-.88,1.82c-1.42,2.3-4,3.87-4.95,6.39a9.4,9.4,0,0,0-.46,3.78c0,.75.09,1.51.15,2.26v-.06c.14,2,.18,3.9-.9,5.51-.74,1.1-1.93,1.93-2.34,3.18a3.1,3.1,0,0,0-.15,1.08,12.13,12.13,0,0,0,.68,3.21.14.14,0,0,0,0-.06,4.88,4.88,0,0,1,.17,2.36c-.45,2-2.88,3.67-2.76,5.58a2.15,2.15,0,0,0,.11.74,4.05,4.05,0,0,0,2.26,2,8.8,8.8,0,0,0,5.08,1.12,6.68,6.68,0,0,0,1.9-.65c-.7,1.61-1.42,3.2-2.15,4.71-.11.24-.23.48-.35.72,0,0-6.18-4.13-9.69,4.29a18.68,18.68,0,0,0-2.17,5.64,13.42,13.42,0,0,1-.74,2.32,14.93,14.93,0,0,1-6.68,6c-7.16,3.28-36.08,39.35-36.59,48.69a54.49,54.49,0,0,1-1.84,10.78,64.15,64.15,0,0,0-1.72,25.49,48.77,48.77,0,0,0,1.77,8.13c3.07,9.33,5.12,26.74,5.12,26.74l3.32,30.22a86,86,0,0,0,.54,12.49c-3.39,3.87-17,20-11.8,24.39,4,3.46,11,2.89,14.93,2.18-3.31,8.19-8.52,22.43-9.21,32.21-1,14.47,1.71,33.64,6,41s18.59,26.24,18.59,26.24-.67,25.9,4.44,35.31,7.17,28.93,7.17,28.93,4.77,16.48,2.38,22.54,4.43,11.1-2.73,15.13-16.32,94.86-16.32,94.86-3.69,59.53,0,62.56a3.75,3.75,0,0,0,.63.37v20s-2.56,4.2,7.85,5.05c7.13.57,27.34,1.86,39.33,2.61l9.29.58s22,4.38,31.72,0,26.95-4.28,24.39-15.85a32.92,32.92,0,0,0-1.36-4.63c-2.81-7.18-7.58-8-16.37-10-.51-.11-1-.21-1.45-.29-9.26-1.61-12.3,2.7-17.49-2.91-4.51-4.85-18.87-10.28-23.76-12,.12-.36.27-.71.39-1.08a7.32,7.32,0,0,1-3.71-1.81l13.25.84,7.89.49s18.7,3.73,27,0,22.9-3.63,20.72-13.46a28.21,28.21,0,0,0-1.15-3.94c-2.39-6.1-6.45-6.77-13.92-8.46-.43-.09-.83-.18-1.23-.25-7.87-1.37-10.45,2.29-14.86-2.47-3.78-4.06-15.71-8.61-20-10.16,0-2.22-3-5.38-4.89-8.55-2.22-3.7,1.88-16.65,1.88-16.65L411,658.74a10.38,10.38,0,0,1,2.8-.8s10.58-10.1,8.19-20.86a69.13,69.13,0,0,1-.76-9.83c3.48-3.23,8.27-8,9.63-10.94,2.22-4.79,0-28,0-28V499.56l17.7,1.79L464.62,503l4.89.5,16.06,1.62,36.91,3.73,33.26-6.3,14.39-2.72,29.59-5.6V421.83ZM386.74,176.86l-2.06-.22C385.36,176.67,386.08,176.8,386.74,176.86Z\",\n    transform: \"translate(-95.23 -55.03)\",\n    fill: \"url(#07c62293-c0d3-4921-8e06-4e39241449cd)\"\n  })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M558.56,463.78c-10,14.31-45.95,6.73-45.95,6.73l-27.86-26.07L481,440.91l6.29-13.36s2,.55,5.43,1.53C510.73,434.31,567,451.75,558.56,463.78Z\",\n    transform: \"translate(-95.23 -55.03)\",\n    fill: \"#efb7b9\"\n  })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M492.7,429.08c-1.23,4.28-4.6,10.69-7.95,15.36L481,440.91l6.29-13.36S489.31,428.1,492.7,429.08Z\",\n    transform: \"translate(-95.23 -55.03)\",\n    opacity: 0.1\n  })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M397.15,278.42s-25.68,11.39-24.42,39.36a461.14,461.14,0,0,0,5.88,53.76s-5.25,42.09,16.61,52.94,42.09,19.77,42.09,19.77,34.2,3.68,38.45,5.2,17.53-21.72,15.08-25.34S457,412.9,453,406.86s-13.25-9.77-13.25-9.77-9.55-5.78-10.2-11,1.87-9.11,2.51-11.4,2.26-24.4,2.26-24.4S445.1,271.59,397.15,278.42Z\",\n    transform: \"translate(-95.23 -55.03)\",\n    fill: \"#dce6f2\"\n  })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M414.1,370.39s-35.23,5.9-31.82,18.23C382.28,388.62,395.07,375.31,414.1,370.39Z\",\n    transform: \"translate(-95.23 -55.03)\",\n    opacity: 0.1\n  })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M414.37,375.38S395,391.19,398.79,392,414.37,375.38,414.37,375.38Z\",\n    transform: \"translate(-95.23 -55.03)\",\n    opacity: 0.1\n  })), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M423.68,380.89s-5.19,10.63-2,9.91S423.68,380.89,423.68,380.89Z\",\n    transform: \"translate(-95.23 -55.03)\",\n    opacity: 0.1\n  })), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M494,430.21l-2.14-.61c.61-2,.78-3.62.28-4.37-2.45-3.62-33.82-11.2-37.81-17.25s-13.25-9.77-13.25-9.77-9.55-5.78-10.2-11,1.87-9.11,2.51-11.4,2.26-24.41,2.26-24.41,10.75-78.69-37.2-71.86c0,0-25.68,11.4-24.43,39.37a459.85,459.85,0,0,0,5.89,53.76s-5.25,42.09,16.61,52.94,42.09,19.77,42.09,19.77,34.19,3.67,38.45,5.2c1.61.58,4.52-2.41,7.37-6.52l1.62,1.51,27.86,26.06s35.95,7.59,45.95-6.72C568.31,452.87,512.05,435.43,494,430.21Z\",\n    transform: \"translate(-95.23 -55.03)\",\n    opacity: 0.1\n  })), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M382.37,173.44a8.5,8.5,0,0,0-2.77,1.07c-1,.83-1,2.25-1.25,3.49a11.48,11.48,0,0,1-2,4.78,7.19,7.19,0,0,0,3.33-.55,17.14,17.14,0,0,1-1,4,3.24,3.24,0,0,0,3-1.83,19.26,19.26,0,0,0,1.25-3.51,2.89,2.89,0,0,1,.48-1c.92-1.09,2.63-.6,4.05-.46a6.65,6.65,0,0,0,6.08-2.92c1.51-2.29,1.6-8.15-2-8.77C387.78,167.12,385.44,172.3,382.37,173.44Z\",\n    transform: \"translate(-95.23 -55.03)\",\n    fill: \"#965d7b\"\n  })), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n    opacity: 0.1\n  }, /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M379.5,175.74c.09-.49.15-1,.26-1.49h0c-.95.83-1,2.24-1.25,3.49a11,11,0,0,1-.59,2.11A11.46,11.46,0,0,0,379.5,175.74Z\",\n    transform: \"translate(-95.23 -55.03)\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M379.82,184a16.63,16.63,0,0,0,1-4,7.16,7.16,0,0,1-3.17.55,11.57,11.57,0,0,1-1.15,2,7.12,7.12,0,0,0,3.32-.54,16.63,16.63,0,0,1-1,4,3.25,3.25,0,0,0,3-1.83,7.46,7.46,0,0,0,.6-1.43A3,3,0,0,1,379.82,184Z\",\n    transform: \"translate(-95.23 -55.03)\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M388.6,177.2c-1.42-.14-3.14-.63-4.06.46a3.09,3.09,0,0,0-.48,1c-.09.26-.17.53-.24.8.95-.75,2.49-.35,3.78-.22a6.68,6.68,0,0,0,6.08-2.92,5.54,5.54,0,0,0,.67-1.57A6.66,6.66,0,0,1,388.6,177.2Z\",\n    transform: \"translate(-95.23 -55.03)\"\n  }))), _polygon || (_polygon = /*#__PURE__*/React.createElement(\"polygon\", {\n    points: \"317.24 201 332.49 219.34 330.5 237.85 312.07 209 317.24 201\",\n    fill: \"#dce6f2\"\n  })), _polygon2 || (_polygon2 = /*#__PURE__*/React.createElement(\"polygon\", {\n    points: \"332.48 219.34 330.61 236.75 330.49 237.85 313.86 211.81 312.07 209 312.59 208.19 317.23 201 318.26 202.24 332.48 219.34\",\n    opacity: 0.1\n  })), _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M435.63,231.2c-5.16,1.48-10.09,6.56-14.38,12.73a108.65,108.65,0,0,0-7.76,13.34c-1.41,2.82-2.65,5.53-3.68,7.89l-.72,1.68c-1.74,4.11-2.71,6.86-2.71,6.86S366.88,244,373.13,242c2.1-.67,4.86-5.17,7.59-10.84l.34-.72c1.73-3.64,3.43-7.7,4.94-11.52,3.09-7.85,5.38-14.67,5.38-14.67S451.38,226.7,435.63,231.2Z\",\n    transform: \"translate(-95.23 -55.03)\",\n    fill: \"#efb7b9\"\n  })), _path12 || (_path12 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M459.26,202.58s9.12,16.5,21.37,14.25,7.21-8.86,7.21-8.86Z\",\n    transform: \"translate(-95.23 -55.03)\",\n    fill: \"#444053\"\n  })), _path13 || (_path13 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M441.59,773.73c-8.08,3.69-26.35,0-26.35,0l-7.7-.48c-10-.64-26.74-1.72-32.66-2.2-8.64-.71-6.52-4.25-6.52-4.25V745.41l41.92-10.62s16.57,5.67,21.11,10.62c4.31,4.72,6.83,1.09,14.52,2.45.38.07.78.15,1.2.25,7.3,1.67,11.26,2.33,13.6,8.38a28.1,28.1,0,0,1,1.13,3.9C464,770.13,449.66,770.06,441.59,773.73Z\",\n    transform: \"translate(-95.23 -55.03)\",\n    fill: \"#a36468\"\n  })), _path14 || (_path14 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M460.71,756.49a31.34,31.34,0,0,1-4.72,2.42c-5.5,2.51-10.73,5.57-16.29,7.94s-11.55,4.06-17.57,3.61c-3.15-.23-6.37-1-9.38-.1a21.66,21.66,0,0,0-5.21,2.89c-10-.64-26.74-1.72-32.66-2.2-8.64-.71-6.52-4.25-6.52-4.25v-2.5c.31,0,.66-.09,1.06-.12a18.88,18.88,0,0,1,6.1.91c4.34,1.18,8.66,2.34,13,3.5a10.27,10.27,0,0,1,5-6.38,15.94,15.94,0,0,1,8.06-1.85c6.73.09,13.1,3.28,19.82,3.6a10.92,10.92,0,0,0,5.49-.92c.92-.46,1.73-1.13,2.63-1.64a19.2,19.2,0,0,1,4.53-1.53A99.76,99.76,0,0,0,447,755.69c1.2-.47,2.6-1.32,2.44-2.6-.21-1.7-2.88-1.9-3.58-3.46a2,2,0,0,1,.08-1.77c.38.07.78.15,1.2.25C454.41,749.78,458.37,750.44,460.71,756.49Z\",\n    transform: \"translate(-95.23 -55.03)\",\n    opacity: 0.1\n  })), _path15 || (_path15 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M433.05,820.53c-9.5,4.34-31,0-31,0L393,820c-11.72-.75-31.46-2-38.43-2.59-10.17-.84-7.67-5-7.67-5V787.2l49.33-12.5s19.5,6.67,24.84,12.5c5.07,5.55,8,1.28,17.09,2.88.45.08.92.18,1.41.29,8.59,2,13.25,2.75,16,9.87a32.1,32.1,0,0,1,1.33,4.59C459.38,816.29,442.55,816.2,433.05,820.53Z\",\n    transform: \"translate(-95.23 -55.03)\",\n    fill: \"#a36468\"\n  })), _path16 || (_path16 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M455.55,800.24a37.23,37.23,0,0,1-5.55,2.85c-6.47,2.95-12.63,6.55-19.17,9.34s-13.59,4.77-20.68,4.25c-3.7-.27-7.49-1.2-11-.12A25.5,25.5,0,0,0,393,820c-11.72-.75-31.46-2-38.43-2.59-10.17-.84-7.67-5-7.67-5v-2.94a12.5,12.5,0,0,1,1.25-.14,21.94,21.94,0,0,1,7.18,1.07l15.29,4.12a12.1,12.1,0,0,1,5.93-7.51,18.66,18.66,0,0,1,9.49-2.18c7.92.11,15.41,3.86,23.32,4.24A12.91,12.91,0,0,0,415.8,808c1.09-.55,2-1.34,3.1-1.93a21.75,21.75,0,0,1,5.33-1.8,119.69,119.69,0,0,0,15.16-4.92c1.41-.56,3.06-1.56,2.87-3.06-.25-2-3.39-2.24-4.22-4.08a2.41,2.41,0,0,1,.1-2.08c.45.08.92.18,1.41.29C448.14,792.34,452.8,793.12,455.55,800.24Z\",\n    transform: \"translate(-95.23 -55.03)\",\n    opacity: 0.1\n  })), _path17 || (_path17 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M411.55,647.54l-2.67,62.83s-4,12.83-1.83,16.5,5.83,7.33,4.5,9.5S394.22,762,389.05,753s-10.27-48-10.27-48l4.77-48.17Z\",\n    transform: \"translate(-95.23 -55.03)\",\n    fill: \"#444053\"\n  })), _path18 || (_path18 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M423.13,491l7.42,9.92V587.2s2.17,23,0,27.75-13.17,14.25-13.17,14.25l-9.25-47.5,2-50.25Z\",\n    transform: \"translate(-95.23 -55.03)\",\n    fill: \"#444053\"\n  })), _path19 || (_path19 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M411.55,647.54l-2.67,62.83s-4,12.83-1.83,16.5,5.83,7.33,4.5,9.5S394.22,762,389.05,753s-10.27-48-10.27-48l4.77-48.17Z\",\n    transform: \"translate(-95.23 -55.03)\",\n    opacity: 0.1\n  })), _path20 || (_path20 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M423.13,491l7.42,9.92V587.2s2.17,23,0,27.75-13.17,14.25-13.17,14.25l-9.25-47.5,2-50.25Z\",\n    transform: \"translate(-95.23 -55.03)\",\n    opacity: 0.1\n  })), _path21 || (_path21 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M430.55,454.2v46.67l-8.33,36.33s-2.67,87.67-.34,98.33-8,20.67-8,20.67-6,.67-6,5.33-10,18-10,18l.33,26s4.34,48.67-2.33,58,2.33,10.67,2.33,10.67c-8.33,27.33-48.33,21-51.94,18s0-62,0-62,8.94-90,15.94-94,.34-9,2.67-15-2.33-22.33-2.33-22.33-2-19.34-7-28.67-4.34-35-4.34-35-14-18.67-18.16-26-6.84-26.33-5.84-40.67c.68-9.69,5.77-23.8,9-31.92,1.55-3.89,2.67-6.41,2.67-6.41l.95.25,54.62,14.3Z\",\n    transform: \"translate(-95.23 -55.03)\",\n    fill: \"#444053\"\n  })), _path22 || (_path22 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M435.63,231.2c-5.16,1.48-10.09,6.56-14.38,12.73l-1.12,0a35.72,35.72,0,0,1-31-17.93,35.18,35.18,0,0,1-3.14-7.15c3.09-7.85,5.38-14.67,5.38-14.67S451.38,226.7,435.63,231.2Z\",\n    transform: \"translate(-95.23 -55.03)\",\n    opacity: 0.1\n  })), _path23 || (_path23 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M455.88,206.2A35.75,35.75,0,1,1,389,188.68a34.93,34.93,0,0,1,3.78-5.46A36.18,36.18,0,0,1,401,176a35.75,35.75,0,0,1,54.83,27.58C455.85,204.46,455.88,205.33,455.88,206.2Z\",\n    transform: \"translate(-95.23 -55.03)\",\n    fill: \"#efb7b9\"\n  })), _path24 || (_path24 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M425.84,291.78l-.12,1.1-16.63-26c-1.74,4.11-2.71,6.86-2.71,6.86S366.88,244,373.13,242c2.1-.67,4.86-5.17,7.59-10.84l.34-.72c2.9,8.64,19.75,25.91,26.76,32.83.81.8,1.48,1.46,2,1.94l1.07,1,.56.56C414,269.4,424.76,281,425.84,291.78Z\",\n    transform: \"translate(-95.23 -55.03)\",\n    opacity: 0.1\n  })), _path25 || (_path25 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M438.27,380l-1.82,58.57L436.13,449s-21.56-2-41.68-4.2c-16.2-1.77-31.47-3.68-33.82-4.8-3-1.41-9.43-2.5-14.5-3.19-3.92-.53-7-.81-7-.81s-1.15.34-2.92.66c-3.86.7-10.64,1.27-14.59-2.16-5.05-4.39,8.22-20.34,11.53-24.17l.73-.83-1.25-11.55L329.38,368s-2-17.25-5-26.5a48.88,48.88,0,0,1-1.73-8.05,64.48,64.48,0,0,1,1.68-25.26,55.08,55.08,0,0,0,1.8-10.69c.5-9.25,28.75-45,35.75-48.25a14.84,14.84,0,0,0,7.16-7.14,13.64,13.64,0,0,0,1.09-3.11c3-13,10.59-7.84,10.59-7.84,1.83,10.17,30.16,37.09,30.16,37.09l.56.56c2.81,2.88,15.33,16.4,14.44,27.94a33.87,33.87,0,0,0,1.89,12.64,213.75,213.75,0,0,1,9.85,56Z\",\n    transform: \"translate(-95.23 -55.03)\",\n    fill: \"#dce6f2\"\n  })), _path26 || (_path26 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M398.13,310.45s-7,17-12.25,19.75S400.63,336,398.13,310.45Z\",\n    transform: \"translate(-95.23 -55.03)\",\n    opacity: 0.1\n  })), _path27 || (_path27 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M403.38,342.2s-16,2-16,5S403.38,342.2,403.38,342.2Z\",\n    transform: \"translate(-95.23 -55.03)\",\n    opacity: 0.1\n  })), _path28 || (_path28 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M420.13,361.7s-23.25,49.5-29.75,51S420.13,361.7,420.13,361.7Z\",\n    transform: \"translate(-95.23 -55.03)\",\n    opacity: 0.1\n  })), _path29 || (_path29 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M410.44,270.76l-19.23,8.36L368,244.06a13.64,13.64,0,0,0,1.09-3.11c3-13,10.59-7.84,10.59-7.84,1.83,10.17,30.16,37.09,30.16,37.09Z\",\n    transform: \"translate(-95.23 -55.03)\",\n    opacity: 0.1\n  })), _path30 || (_path30 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M411.44,268.76l-19.23,8.36L369,242.06a13.64,13.64,0,0,0,1.09-3.11c3-13,10.59-7.84,10.59-7.84,1.83,10.17,30.16,37.09,30.16,37.09Z\",\n    transform: \"translate(-95.23 -55.03)\",\n    fill: \"#dce6f2\"\n  })), _path31 || (_path31 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M436.13,449s-21.56-2-41.68-4.2l36.1,9.45v11c-1.58,1.43-2.95,2.17-3.84,1.79-4.16-1.75-38.11-7.25-38.11-7.25s-19.72-10-41-22a16.43,16.43,0,0,1-1.5-.94,23.64,23.64,0,0,1-6.3-6.31c-3.93-5.69-5.85-13-6.68-20.17a87.22,87.22,0,0,1-.52-12.38A101.51,101.51,0,0,1,333.88,384a460.08,460.08,0,0,1-3-54c.25-28,26.5-38,26.5-38,48.25-4.25,33.29,73.75,33.29,73.75s-2.79,22-3.55,24.25-3.49,6-3.12,11.25,9.59,11.53,9.59,11.53,9,4.22,12.71,10.47c2.7,4.61,20.24,10.86,30.15,15.32Z\",\n    transform: \"translate(-95.23 -55.03)\",\n    opacity: 0.1\n  })), _path32 || (_path32 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M452.29,184a11.32,11.32,0,0,1-1,4.78,29.55,29.55,0,0,1-1.78,3.56,16.4,16.4,0,0,1-4.38,5.44c-2.31,1.65-5.23,2.11-8,2.78s-5.65,1.74-7.23,4.1a14.34,14.34,0,0,0-1.69,4.9,10.54,10.54,0,0,1-2,4.74,3.93,3.93,0,0,1-4.68,1.12,4.73,4.73,0,0,1-1.81-2.33c-1.14-2.57-1.43-5.42-1.89-8.19s-1.11-5.62-2.81-7.85-4.71-3.7-7.38-2.83a7.11,7.11,0,0,0-4,3.88,22.24,22.24,0,0,0-1.51,5.52q-1.86,10.18-4.39,20.24a1.86,1.86,0,0,1-.33.76,1.44,1.44,0,0,1-1,.42c-2.24.3-4.39-1.27-6.65-1.1a3.82,3.82,0,0,0-.69.11,35.73,35.73,0,0,1,3.61-40.8l.18-.05a10.78,10.78,0,0,0,4-2.52,42.22,42.22,0,0,0,4-4.63l.8-1a45.61,45.61,0,0,1,7.8-7.41,8,8,0,0,1,2.66-1.44,7.88,7.88,0,0,1,2.52-.08,63.57,63.57,0,0,0,10.41.39,66.79,66.79,0,0,1,7.31-.74c6.33.18,11.73,4.65,15.73,9.55C450.24,177.83,452.16,180.72,452.29,184Z\",\n    transform: \"translate(-95.23 -55.03)\",\n    opacity: 0.1\n  })), _path33 || (_path33 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M384.33,189.63c-1.39,2.28-3.9,3.83-4.84,6.33-1.38,3.63.95,8.15-1.19,11.39-.71,1.09-1.88,1.9-2.28,3.15-.68,2.11,1.18,4.36.7,6.53s-3.34,4-2.58,6.12a4,4,0,0,0,2.2,2,8.6,8.6,0,0,0,5,1.11c2.73-.45,4.76-3.13,7.53-3.33,2.25-.16,4.4,1.4,6.64,1.11a1.5,1.5,0,0,0,1-.43,1.73,1.73,0,0,0,.33-.76q2.52-10.05,4.4-20.24a21.8,21.8,0,0,1,1.5-5.52,7.17,7.17,0,0,1,4-3.88c2.67-.86,5.67.6,7.38,2.83s2.36,5.08,2.82,7.85.75,5.62,1.88,8.19a4.78,4.78,0,0,0,1.82,2.34c1.5.87,3.52.18,4.67-1.12a10.43,10.43,0,0,0,2-4.75,14.28,14.28,0,0,1,1.69-4.89c1.58-2.36,4.47-3.43,7.23-4.1s5.67-1.14,8-2.79a16.46,16.46,0,0,0,4.38-5.43c1.48-2.58,2.86-5.38,2.74-8.35-.13-3.24-2.05-6.13-4.1-8.65-4-4.9-9.41-9.37-15.74-9.54a62.2,62.2,0,0,0-7.31.74,62.57,62.57,0,0,1-10.41-.4,8.18,8.18,0,0,0-2.52.09,7.54,7.54,0,0,0-2.65,1.44,45.63,45.63,0,0,0-7.81,7.4,57.31,57.31,0,0,1-4.82,5.6,10.85,10.85,0,0,1-4,2.53c-1,.28-2,.08-2.95.39C386.09,183.52,385.7,187.37,384.33,189.63Z\",\n    transform: \"translate(-95.23 -55.03)\",\n    fill: \"#965d7b\"\n  })), _path34 || (_path34 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M480.63,216.82c-8,1.47-14.63-5-18.3-9.72a39.22,39.22,0,0,1-3.07-4.52l27.46,5.18,1.11.21S492.88,214.58,480.63,216.82Z\",\n    transform: \"translate(-95.23 -55.03)\",\n    opacity: 0.1\n  })), _g2 || (_g2 = /*#__PURE__*/React.createElement(\"g\", {\n    opacity: 0.1\n  }, /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M376.72,214.17a8.33,8.33,0,0,0-.58-3.84c0,.1-.09.2-.12.3-.43,1.34.15,2.73.52,4.12A3,3,0,0,0,376.72,214.17Z\",\n    transform: \"translate(-95.23 -55.03)\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M379.1,197.8a22.22,22.22,0,0,0,.08,4.15A22.28,22.28,0,0,0,379.1,197.8Z\",\n    transform: \"translate(-95.23 -55.03)\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M448.55,188.45a16.4,16.4,0,0,1-4.38,5.44c-2.31,1.65-5.22,2.11-8,2.78s-5.65,1.74-7.23,4.1a14.41,14.41,0,0,0-1.69,4.9,10.47,10.47,0,0,1-2,4.75c-1.15,1.3-3.17,2-4.67,1.12a4.78,4.78,0,0,1-1.82-2.34c-1.13-2.57-1.43-5.41-1.88-8.19s-1.12-5.62-2.82-7.85-4.71-3.7-7.38-2.83a7.14,7.14,0,0,0-4,3.88,21.8,21.8,0,0,0-1.5,5.52q-1.87,10.19-4.4,20.24a1.73,1.73,0,0,1-.33.76,1.5,1.5,0,0,1-1,.43c-2.24.29-4.39-1.27-6.64-1.11-2.77.2-4.8,2.88-7.53,3.32a8.45,8.45,0,0,1-5-1.11,5.35,5.35,0,0,1-1.83-1.3,2.7,2.7,0,0,0-.37,2.33,3.9,3.9,0,0,0,2.2,2,8.45,8.45,0,0,0,5,1.11c2.73-.44,4.76-3.12,7.53-3.32,2.25-.16,4.4,1.4,6.64,1.11a1.5,1.5,0,0,0,1-.43,1.73,1.73,0,0,0,.33-.76q2.52-10,4.4-20.24a21.8,21.8,0,0,1,1.5-5.52,7.14,7.14,0,0,1,4-3.88c2.67-.87,5.67.6,7.38,2.83s2.36,5.08,2.82,7.85.75,5.62,1.88,8.19a4.78,4.78,0,0,0,1.82,2.34c1.5.87,3.52.18,4.67-1.12a10.47,10.47,0,0,0,2-4.75,14.41,14.41,0,0,1,1.69-4.9c1.58-2.36,4.47-3.42,7.23-4.1s5.67-1.13,8-2.78a16.4,16.4,0,0,0,4.38-5.44c1.48-2.57,2.86-5.37,2.74-8.34a10.74,10.74,0,0,0-.12-1.14A19.65,19.65,0,0,1,448.55,188.45Z\",\n    transform: \"translate(-95.23 -55.03)\"\n  }))), _path35 || (_path35 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M451.33,188.75a35.33,35.33,0,0,1,4.45,14.85c-8.91-5-17.29-10.49-21.52-12.4-7.37-3.33-34.93-2.83-45.29-2.52a34.93,34.93,0,0,1,3.78-5.46A36.18,36.18,0,0,1,401,176a35.77,35.77,0,0,1,50.38,12.73Z\",\n    transform: \"translate(-95.23 -55.03)\",\n    opacity: 0.1\n  })), _path36 || (_path36 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M483.13,212.58c-4.81,1.48-12.66-1.38-20.8-5.48a39.22,39.22,0,0,1-3.07-4.52l27.46,5.18C488.54,209,489,210.77,483.13,212.58Z\",\n    transform: \"translate(-95.23 -55.03)\",\n    opacity: 0.1\n  })), _path37 || (_path37 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M422.26,154.08s-26.25-1.5-33.63,12.75l-1.19,12.63-2-.22-.4,8.59s40.12-1.75,49.25,2.37,37.5,24.88,48.87,21.38-1-6.75-1-6.75S466.51,198.2,466.51,193,462.63,160.33,422.26,154.08Z\",\n    transform: \"translate(-95.23 -55.03)\",\n    fill: \"#444053\"\n  })), _path38 || (_path38 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M371.63,622.28s16.75,16.25,24,15C395.63,637.28,375.13,635.53,371.63,622.28Z\",\n    transform: \"translate(-95.23 -55.03)\",\n    opacity: 0.1\n  })), _path39 || (_path39 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M368.13,629.81s1.5,8.36,5.5,7.54S368.13,629.81,368.13,629.81Z\",\n    transform: \"translate(-95.23 -55.03)\",\n    opacity: 0.1\n  })), _path40 || (_path40 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M394.38,769.53s-23.78,18.5-19.77,19S394.38,769.53,394.38,769.53Z\",\n    transform: \"translate(-95.23 -55.03)\",\n    opacity: 0.1\n  })), _polygon3 || (_polygon3 = /*#__PURE__*/React.createElement(\"polygon\", {\n    points: \"330.96 347.33 407.96 334.8 407.96 407.7 334.8 403.87 330.96 347.33\",\n    fill: \"#2f80ed\"\n  })), _polygon4 || (_polygon4 = /*#__PURE__*/React.createElement(\"polygon\", {\n    points: \"330.96 347.33 407.96 334.8 407.96 407.7 334.8 403.87 330.96 347.33\",\n    opacity: 0.05\n  })), _polygon5 || (_polygon5 = /*#__PURE__*/React.createElement(\"polygon\", {\n    points: \"407.96 334.8 500.3 341.71 495.19 405.15 407.96 407.7 407.96 334.8\",\n    fill: \"#2f80ed\"\n  })), _polygon6 || (_polygon6 = /*#__PURE__*/React.createElement(\"polygon\", {\n    points: \"407.96 334.8 500.3 341.71 495.19 405.15 407.96 407.7 407.96 334.8\",\n    opacity: 0.1\n  })), _polygon7 || (_polygon7 = /*#__PURE__*/React.createElement(\"polygon\", {\n    points: \"436.35 312.55 407.96 334.8 500.3 341.71 515.39 318.94 436.35 312.55\",\n    fill: \"#2f80ed\"\n  })), _polygon8 || (_polygon8 = /*#__PURE__*/React.createElement(\"polygon\", {\n    points: \"303.08 323.03 372.4 314.59 407.96 334.8 330.96 347.33 303.08 323.03\",\n    fill: \"#2f80ed\"\n  })), _polygon9 || (_polygon9 = /*#__PURE__*/React.createElement(\"polygon\", {\n    points: \"424.84 353.73 424.84 453.4 388.77 449.7 373.08 448.1 368.3 447.6 352.62 445.99 330.96 443.77 330.96 347.33 407.95 352.57 424.84 353.73\",\n    fill: \"#2f80ed\"\n  })), _polygon10 || (_polygon10 = /*#__PURE__*/React.createElement(\"polygon\", {\n    points: \"500.3 341.71 500.3 438.91 471.39 444.46 457.33 447.16 424.84 453.4 424.84 353.73 500.3 341.71\",\n    fill: \"#2f80ed\"\n  })), _polygon11 || (_polygon11 = /*#__PURE__*/React.createElement(\"polygon\", {\n    points: \"500.3 341.71 500.3 438.91 471.39 444.46 457.33 447.16 424.84 453.4 424.84 353.73 500.3 341.71\",\n    opacity: 0.05\n  })), _polygon12 || (_polygon12 = /*#__PURE__*/React.createElement(\"polygon\", {\n    points: \"303.08 368.31 330.96 347.33 424.84 353.73 411.02 377.01 303.08 368.31\",\n    fill: \"#2f80ed\"\n  })), _polygon13 || (_polygon13 = /*#__PURE__*/React.createElement(\"polygon\", {\n    points: \"303.08 368.31 330.96 347.33 424.84 353.73 411.02 377.01 303.08 368.31\",\n    fill: \"#fff\",\n    opacity: 0.1\n  })), _polygon14 || (_polygon14 = /*#__PURE__*/React.createElement(\"polygon\", {\n    points: \"500.3 341.71 424.84 353.73 449.4 375.73 530.23 362.17 500.3 341.71\",\n    fill: \"#2f80ed\"\n  })), _polygon15 || (_polygon15 = /*#__PURE__*/React.createElement(\"polygon\", {\n    points: \"500.3 341.71 424.84 353.73 449.4 375.73 530.23 362.17 500.3 341.71\",\n    fill: \"#fff\",\n    opacity: 0.1\n  })), _polygon16 || (_polygon16 = /*#__PURE__*/React.createElement(\"polygon\", {\n    points: \"471.39 444.46 457.33 447.16 457.33 426.39 470.5 423.07 471.39 444.46\",\n    fill: \"#fff\",\n    opacity: 0.1\n  })), _polygon17 || (_polygon17 = /*#__PURE__*/React.createElement(\"polygon\", {\n    points: \"388.77 435.96 388.77 449.7 373.08 448.1 373.08 435.96 388.77 435.96\",\n    fill: \"#fff\",\n    opacity: 0.1\n  })), _polygon18 || (_polygon18 = /*#__PURE__*/React.createElement(\"polygon\", {\n    points: \"368.3 440.29 368.3 447.6 352.62 445.99 352.62 440.29 368.3 440.29\",\n    fill: \"#fff\",\n    opacity: 0.1\n  })), _path41 || (_path41 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M510.63,483.7c-10.75,13.75-46.25,4.25-46.25,4.25L438,460.43l-3.58-3.73,7-13s2,.66,5.34,1.82C464.44,451.7,519.68,472.13,510.63,483.7Z\",\n    transform: \"translate(-95.23 -55.03)\",\n    opacity: 0.1\n  })), _path42 || (_path42 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M509.63,481.7c-10.75,13.75-46.25,4.25-46.25,4.25L437,458.43l-3.58-3.73,7-13s2,.66,5.34,1.82C463.44,449.7,518.68,470.13,509.63,481.7Z\",\n    transform: \"translate(-95.23 -55.03)\",\n    fill: \"#efb7b9\"\n  })), _path43 || (_path43 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M445.72,443.52c-1.46,4.2-5.17,10.42-8.76,14.91l-3.58-3.73,7-13S442.39,442.36,445.72,443.52Z\",\n    transform: \"translate(-95.23 -55.03)\",\n    opacity: 0.1\n  })), _path44 || (_path44 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M358.38,288s-26.25,10-26.5,38a460.08,460.08,0,0,0,3,54s-7.5,41.75,13.75,53.75,41,22,41,22,33.95,5.5,38.12,7.25,18.66-20.75,16.41-24.5-33.16-13-36.83-19.25-12.71-10.46-12.71-10.46-9.22-6.29-9.59-11.54,2.35-9,3.12-11.25,3.56-24.25,3.56-24.25S406.63,283.7,358.38,288Z\",\n    transform: \"translate(-95.23 -55.03)\",\n    fill: \"#dce6f2\"\n  })), _path45 || (_path45 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M370.38,380.7s-35.5,4-32.75,16.5C337.63,397.2,351.12,384.59,370.38,380.7Z\",\n    transform: \"translate(-95.23 -55.03)\",\n    opacity: 0.1\n  })), _path46 || (_path46 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M370.38,385.7s-20.15,14.75-16.45,15.75S370.38,385.7,370.38,385.7Z\",\n    transform: \"translate(-95.23 -55.03)\",\n    opacity: 0.1\n  })), _path47 || (_path47 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M379.38,391.7s-5.75,10.34-2.5,9.8S379.38,391.7,379.38,391.7Z\",\n    transform: \"translate(-95.23 -55.03)\",\n    opacity: 0.1\n  })), _path48 || (_path48 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M749,167.42s-38-2.29-33.56,24.37c0,0-.89,4.71,3.38,6.85,0,0,.07-2,3.9-1.31a17.51,17.51,0,0,0,4.13.2,8.57,8.57,0,0,0,5.06-2.09h0s10.69-4.41,14.85-21.89c0,0,3.08-3.82,3-4.8l-6.42,2.75s2.19,4.63.46,8.48c0,0-.2-8.31-1.44-8.12-.25,0-3.33,1.61-3.33,1.61s3.77,8.06.92,13.93c0,0,1.08-9.94-2.1-13.35l-4.52,2.64s4.41,8.33,1.42,15.13c0,0,.77-10.43-2.37-14.49l-4.1,3.19s4.15,8.22,1.62,13.86c0,0-.33-12.14-2.51-13.06,0,0-3.58,3.16-4.12,4.46,0,0,2.83,6,1.07,9.11,0,0-1.08-8.09-2-8.13,0,0-3.57,5.36-3.94,9a19.46,19.46,0,0,1,3.07-9.54,10.71,10.71,0,0,0-5.46,2.83s.55-3.79,6.34-4.12c0,0,3-4.07,3.74-4.32,0,0-5.76-.48-9.25,1.07,0,0,3.07-3.57,10.31-2l4-3.3s-7.58-1-10.8.11c0,0,3.7-3.16,11.89-.86l4.4-2.63s-6.46-1.4-10.31-.89c0,0,4.06-2.19,11.6.18l3.15-1.41s-4.74-.93-6.12-1.08-1.46-.53-1.46-.53a16.36,16.36,0,0,1,8.89,1S749.14,167.84,749,167.42Z\",\n    transform: \"translate(-95.23 -55.03)\",\n    fill: \"#2f80ed\"\n  })), _path49 || (_path49 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M864.46,300.76s-38-2.29-33.56,24.37c0,0-.89,4.71,3.38,6.85,0,0,.07-2,3.91-1.31a17.51,17.51,0,0,0,4.13.2,8.56,8.56,0,0,0,5-2.08h0s10.7-4.42,14.86-21.9c0,0,3.07-3.81,2.95-4.79l-6.42,2.74s2.19,4.63.47,8.48c0,0-.21-8.31-1.44-8.12-.25,0-3.34,1.61-3.34,1.61s3.78,8.07.93,13.93c0,0,1.08-9.94-2.11-13.35L848.75,310s4.41,8.33,1.42,15.13c0,0,.77-10.43-2.37-14.49l-4.09,3.2s4.14,8.21,1.62,13.85c0,0-.33-12.14-2.51-13.06,0,0-3.58,3.16-4.13,4.46,0,0,2.84,6,1.08,9.11,0,0-1.08-8.09-2-8.13,0,0-3.57,5.36-3.94,9a19.52,19.52,0,0,1,3.08-9.54,10.76,10.76,0,0,0-5.47,2.83s.56-3.79,6.35-4.12c0,0,2.95-4.07,3.74-4.32,0,0-5.76-.48-9.25,1.07,0,0,3.07-3.57,10.3-1.95l4-3.3s-7.59-1-10.8.11c0,0,3.7-3.16,11.89-.86l4.4-2.63s-6.47-1.39-10.32-.89c0,0,4.07-2.19,11.61.18l3.15-1.41s-4.74-.93-6.13-1.08-1.46-.53-1.46-.53a16.39,16.39,0,0,1,8.9,1S864.58,301.18,864.46,300.76Z\",\n    transform: \"translate(-95.23 -55.03)\",\n    fill: \"#2f80ed\",\n    opacity: 0.1\n  })), _path50 || (_path50 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M633.61,277.09s8.75-37.09-18.29-37.22c0,0-4.49-1.68-7.32,2.16,0,0,1.93.41.62,4.07a17.8,17.8,0,0,0-.9,4,8.59,8.59,0,0,0,1.19,5.33h0s2.53,11.3,19,18.38c0,0,3.24,3.68,4.22,3.72l-1.6-6.79s-4.94,1.37-8.44-1c0,0,8.23,1.21,8.24,0,0-.25-1-3.56-1-3.56s-8.59,2.34-13.89-1.47c0,0,9.61,2.76,13.52.21L627.16,260s-9,2.93-15.16-1.18c0,0,10.15,2.54,14.69.14l-2.45-4.58s-8.8,2.68-13.93-.77c0,0,12,1.74,13.3-.24,0,0-2.5-4.07-3.69-4.83,0,0-6.36,1.78-9.16-.49,0,0,8.15.31,8.34-.55,0,0-4.67-4.43-8.23-5.43a19.6,19.6,0,0,1,8.89,4.66,10.79,10.79,0,0,0-1.86-5.87s3.64,1.2,3,7c0,0,3.5,3.6,3.61,4.42,0,0,1.45-5.59.52-9.3,0,0,3,3.64.17,10.49l2.56,4.55s2.32-7.3,1.73-10.66c0,0,2.49,4.18-1.18,11.86l1.85,4.79s2.47-6.14,2.63-10c0,0,1.47,4.38-2.16,11.41l.86,3.34s1.72-4.51,2.1-5.85.77-1.35.77-1.35a16.38,16.38,0,0,1-2.49,8.6S633.18,277.14,633.61,277.09Z\",\n    transform: \"translate(-95.23 -55.03)\",\n    fill: \"#2f80ed\",\n    opacity: 0.1\n  })), _path51 || (_path51 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M550.39,289.73s-30.52-22.83-41.43,1.9c0,0-3.33,3.45-.94,7.58,0,0,1.14-1.61,4,1.06a17.51,17.51,0,0,0,3.34,2.44,8.58,8.58,0,0,0,5.37,1h0s11.36,2.19,24.44-10.12c0,0,4.67-1.5,5.11-2.38L543.39,290s-.72,5.07-4.27,7.34c0,0,4.39-7.06,3.25-7.57-.23-.11-3.67-.5-3.67-.5s-1.28,8.82-6.88,12.15c0,0,6.37-7.71,5.58-12.31l-5.23-.28s-.89,9.39-7.13,13.43c0,0,6.37-8.29,6-13.41l-5.18.42s-1.05,9.13-6.26,12.45c0,0,6.39-10.32,5.08-12.28,0,0-4.73.67-5.9,1.45,0,0-.91,6.54-4.11,8.2,0,0,3.55-7.35,2.83-7.86,0,0-5.93,2.51-8.26,5.37a19.53,19.53,0,0,1,7.82-6.28,10.77,10.77,0,0,0-6.12-.64s2.54-2.86,7.56.05c0,0,4.7-1.77,5.5-1.55,0,0-4.55-3.57-8.32-4.19,0,0,4.54-1.3,9.69,4l5.19-.53s-5.77-5-9.08-5.84c0,0,4.83-.61,10.4,5.81l5.12.23s-4.63-4.72-8.12-6.42c0,0,4.59.4,9.59,6.53l3.41.55s-3.45-3.38-4.53-4.26-.93-1.25-.93-1.25a16.43,16.43,0,0,1,6.89,5.72S550.26,290.14,550.39,289.73Z\",\n    transform: \"translate(-95.23 -55.03)\",\n    fill: \"#2f80ed\",\n    opacity: 0.1\n  })), _path52 || (_path52 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M652,77.62s-30.52-22.84-41.43,1.9c0,0-3.33,3.45-.94,7.58,0,0,1.14-1.61,4,1.06a17.79,17.79,0,0,0,3.35,2.43,8.57,8.57,0,0,0,5.37,1h0s11.36,2.19,24.44-10.13c0,0,4.67-1.49,5.1-2.38L645,77.89s-.71,5.07-4.27,7.34c0,0,4.4-7.06,3.26-7.57-.23-.11-3.67-.5-3.67-.5S639,86,633.4,89.31c0,0,6.36-7.71,5.58-12.31l-5.23-.28s-.9,9.39-7.13,13.42c0,0,6.37-8.29,6-13.41l-5.17.42s-1.06,9.14-6.27,12.46c0,0,6.4-10.32,5.09-12.28,0,0-4.73.67-5.9,1.45,0,0-.91,6.54-4.11,8.2,0,0,3.55-7.35,2.83-7.87,0,0-5.93,2.52-8.26,5.38a19.44,19.44,0,0,1,7.82-6.28,10.7,10.7,0,0,0-6.13-.64s2.55-2.86,7.57.05c0,0,4.7-1.78,5.5-1.55,0,0-4.55-3.57-8.32-4.2,0,0,4.53-1.29,9.68,4l5.19-.53s-5.76-5-9.08-5.85c0,0,4.83-.6,10.41,5.82l5.12.22s-4.63-4.72-8.13-6.41c0,0,4.6.4,9.6,6.53l3.4.55S640,72.86,638.92,72s-.93-1.24-.93-1.24a16.4,16.4,0,0,1,6.89,5.72S651.83,78,652,77.62Z\",\n    transform: \"translate(-95.23 -55.03)\",\n    fill: \"#2f80ed\",\n    opacity: 0.1\n  })), _path53 || (_path53 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M768.62,106.55s-12.2-36.11-35.21-21.92c0,0-4.7,1-5.07,5.71,0,0,1.85-.68,2.67,3.12a18,18,0,0,0,1.37,3.91,8.66,8.66,0,0,0,3.84,3.89h0s8.12,8.25,25.88,5.52c0,0,4.69,1.42,5.55.93l-5-4.91s-3.46,3.77-7.68,3.62c0,0,7.63-3.32,7-4.39-.13-.21-2.74-2.48-2.74-2.48s-6.06,6.53-12.56,6.1c0,0,9.61-2.74,11.57-7l-4.14-3.19s-6.06,7.22-13.49,7c0,0,10-3.21,12.53-7.65l-4.5-2.59s-6,6.93-12.22,6.71c0,0,11.12-4.87,11.15-7.23,0,0-4.27-2.13-5.68-2.15,0,0-4.46,4.87-8,4.43,0,0,7.08-4.05,6.78-4.88,0,0-6.3-1.29-9.85-.25a19.49,19.49,0,0,1,10-.75,10.79,10.79,0,0,0-4.69-4s3.72-.91,6.21,4.33c0,0,4.88,1.21,5.4,1.84,0,0-1.72-5.51-4.47-8.17,0,0,4.47,1.51,5.69,8.82l4.58,2.5s-1.89-7.41-4.17-10c0,0,4.33,2.24,5.27,10.69l4.1,3.09s-1.14-6.52-3.06-9.9c0,0,3.56,2.94,4.2,10.83l2.49,2.38s-.92-4.74-1.3-6.08S761,93,761,93a16.49,16.49,0,0,1,2.43,8.62S768.27,106.81,768.62,106.55Z\",\n    transform: \"translate(-95.23 -55.03)\",\n    fill: \"#2f80ed\",\n    opacity: 0.1\n  })), _path54 || (_path54 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M689,108.33S651.1,104.11,654.23,131c0,0-1.13,4.66,3,7,0,0,.17-2,4-1.1a18.4,18.4,0,0,0,4.12.41,8.6,8.6,0,0,0,5.15-1.83h0s10.91-3.87,16-21.12c0,0,3.26-3.65,3.19-4.64l-6.55,2.42s2,4.73,0,8.49c0,0,.21-8.31-1-8.18-.25,0-3.41,1.44-3.41,1.44s3.36,8.25.22,14c0,0,1.58-9.88-1.43-13.44l-4.65,2.4s4,8.55.65,15.19c0,0,1.3-10.38-1.63-14.59l-4.25,3s3.72,8.41.91,13.92c0,0,.29-12.14-1.84-13.17,0,0-3.74,3-4.35,4.24,0,0,2.53,6.1.62,9.15,0,0-.67-8.13-1.55-8.21,0,0-3.84,5.17-4.4,8.82a19.47,19.47,0,0,1,3.56-9.38,10.76,10.76,0,0,0-5.6,2.55s.74-3.75,6.54-3.79c0,0,3.15-3.91,4-4.12,0,0-5.73-.77-9.3.6,0,0,3.25-3.42,10.39-1.43l4.21-3.09S663.22,115,660,116c0,0,3.86-3,11.92-.25l4.53-2.41s-6.39-1.72-10.26-1.41c0,0,4.17-2,11.58.77l3.22-1.25s-4.69-1.17-6.07-1.39-1.43-.6-1.43-.6a16.45,16.45,0,0,1,8.84,1.44S689.07,108.75,689,108.33Z\",\n    transform: \"translate(-95.23 -55.03)\",\n    fill: \"#2f80ed\",\n    opacity: 0.1\n  })), _path55 || (_path55 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1020.6,402.5s-37.88-4.22-34.75,22.64c0,0-1.13,4.66,3,7,0,0,.17-2,4-1.11a17.3,17.3,0,0,0,4.12.41,8.53,8.53,0,0,0,5.15-1.83h0s10.91-3.87,15.95-21.11c0,0,3.26-3.66,3.19-4.64l-6.55,2.41s2,4.74,0,8.5c0,0,.21-8.32-1-8.18-.25,0-3.41,1.43-3.41,1.43s3.36,8.25.22,14c0,0,1.58-9.87-1.43-13.44l-4.65,2.41s4,8.55.66,15.19c0,0,1.29-10.38-1.64-14.6l-4.25,3s3.72,8.41.91,13.91c0,0,.29-12.14-1.84-13.16,0,0-3.73,3-4.35,4.24,0,0,2.54,6.1.62,9.15,0,0-.67-8.13-1.55-8.21,0,0-3.84,5.17-4.4,8.82a19.47,19.47,0,0,1,3.56-9.38,10.67,10.67,0,0,0-5.6,2.55s.74-3.76,6.54-3.8c0,0,3.16-3.91,4-4.11,0,0-5.73-.78-9.3.59,0,0,3.25-3.41,10.4-1.42l4.2-3.09s-7.52-1.42-10.79-.44c0,0,3.86-3,11.92-.26l4.53-2.4s-6.39-1.72-10.26-1.41c0,0,4.17-2,11.58.77l3.22-1.26s-4.69-1.17-6.07-1.38-1.43-.6-1.43-.6a16.39,16.39,0,0,1,8.84,1.43S1020.7,402.93,1020.6,402.5Z\",\n    transform: \"translate(-95.23 -55.03)\",\n    fill: \"#2f80ed\",\n    opacity: 0.1\n  })), _path56 || (_path56 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1078.51,437.88s-37.88-4.21-34.75,22.64c0,0-1.12,4.66,3,7,0,0,.17-2,4-1.1a17.65,17.65,0,0,0,4.11.4A8.64,8.64,0,0,0,1060,465h0s10.9-3.87,15.94-21.12c0,0,3.27-3.65,3.19-4.64l-6.55,2.41s2,4.74,0,8.5c0,0,.21-8.31-1-8.18-.25,0-3.41,1.43-3.41,1.43s3.36,8.25.22,14c0,0,1.58-9.87-1.43-13.43l-4.65,2.4s4,8.55.66,15.19c0,0,1.29-10.38-1.64-14.59l-4.25,3s3.72,8.41.92,13.92c0,0,.28-12.15-1.85-13.17,0,0-3.73,3-4.35,4.24,0,0,2.54,6.1.62,9.15,0,0-.67-8.13-1.55-8.21,0,0-3.84,5.17-4.39,8.82a19.52,19.52,0,0,1,3.55-9.38,10.76,10.76,0,0,0-5.6,2.55s.75-3.76,6.55-3.79c0,0,3.15-3.91,4-4.12,0,0-5.73-.77-9.3.6,0,0,3.25-3.42,10.4-1.43l4.2-3.09s-7.52-1.42-10.79-.44c0,0,3.86-3,11.92-.25l4.53-2.41s-6.39-1.72-10.26-1.41c0,0,4.17-2,11.58.77l3.22-1.25s-4.69-1.17-6.06-1.39-1.44-.6-1.44-.6a16.45,16.45,0,0,1,8.84,1.44S1078.61,438.31,1078.51,437.88Z\",\n    transform: \"translate(-95.23 -55.03)\",\n    fill: \"#2f80ed\",\n    opacity: 0.1\n  })), _path57 || (_path57 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M949.94,139.87s-30.52-22.83-41.43,1.9c0,0-3.33,3.45-.94,7.58,0,0,1.14-1.61,4,1.06a17.51,17.51,0,0,0,3.34,2.44,8.59,8.59,0,0,0,5.37,1h0s11.36,2.19,24.45-10.12c0,0,4.66-1.5,5.1-2.38l-6.87-1.24s-.72,5.07-4.27,7.34c0,0,4.39-7.06,3.25-7.57-.23-.11-3.66-.5-3.66-.5s-1.29,8.82-6.89,12.15c0,0,6.37-7.71,5.58-12.31l-5.23-.28s-.89,9.39-7.13,13.43c0,0,6.38-8.29,6-13.41l-5.18.42s-1,9.13-6.26,12.45c0,0,6.4-10.32,5.08-12.28,0,0-4.73.67-5.9,1.45,0,0-.9,6.54-4.1,8.2,0,0,3.54-7.35,2.82-7.86,0,0-5.93,2.51-8.26,5.37a19.53,19.53,0,0,1,7.82-6.28,10.77,10.77,0,0,0-6.12-.64s2.55-2.86,7.57.05c0,0,4.69-1.77,5.49-1.55,0,0-4.55-3.57-8.32-4.19,0,0,4.54-1.3,9.69,4l5.19-.53s-5.76-5-9.08-5.84c0,0,4.83-.61,10.4,5.81l5.13.23s-4.64-4.72-8.13-6.42c0,0,4.6.4,9.59,6.53l3.41.55s-3.45-3.38-4.53-4.26S936,133,936,133a16.44,16.44,0,0,1,6.88,5.72S949.81,140.28,949.94,139.87Z\",\n    transform: \"translate(-95.23 -55.03)\",\n    fill: \"#2f80ed\",\n    opacity: 0.1\n  })), _path58 || (_path58 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M973.52,304.69S963,268.06,939.34,281.21c0,0-4.74.73-5.33,5.47,0,0,1.88-.59,2.53,3.24a17.73,17.73,0,0,0,1.2,4A8.59,8.59,0,0,0,941.4,298h0s7.74,8.6,25.6,6.68c0,0,4.62,1.62,5.5,1.18l-4.73-5.14s-3.63,3.62-7.83,3.28c0,0,7.76-3,7.16-4.07-.12-.22-2.62-2.61-2.62-2.61s-6.34,6.26-12.82,5.53c0,0,9.73-2.3,11.87-6.44l-4-3.38s-6.38,6.94-13.79,6.4c0,0,10.08-2.77,12.86-7.08l-4.38-2.79s-6.35,6.65-12.51,6.15c0,0,11.33-4.37,11.47-6.72,0,0-4.18-2.32-5.59-2.4,0,0-4.67,4.66-8.22,4.06,0,0,7.26-3.73,7-4.57,0,0-6.24-1.57-9.83-.7a19.51,19.51,0,0,1,10-.29,10.73,10.73,0,0,0-4.5-4.2s3.76-.75,6,4.6c0,0,4.81,1.42,5.31,2.08,0,0-1.47-5.59-4.1-8.36,0,0,4.4,1.7,5.29,9.06l4.46,2.71s-1.56-7.5-3.72-10.14c0,0,4.22,2.43,4.79,10.91l4,3.27s-.85-6.56-2.61-10c0,0,3.43,3.1,3.71,11l2.38,2.5s-.7-4.78-1-6.14,0-1.55,0-1.55a16.39,16.39,0,0,1,2.05,8.72S973.16,304.93,973.52,304.69Z\",\n    transform: \"translate(-95.23 -55.03)\",\n    fill: \"#2f80ed\",\n    opacity: 0.1\n  })), _path59 || (_path59 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M739.1,387.23s-20.43-32.18-39.4-12.92c0,0-4.34,2-3.58,6.75,0,0,1.65-1.1,3.35,2.4a17.12,17.12,0,0,0,2.26,3.46,8.54,8.54,0,0,0,4.65,2.88h0s9.85,6.08,26.45-.8c0,0,4.89.26,5.61-.41l-6-3.6s-2.47,4.5-6.6,5.35c0,0,6.62-5,5.73-5.92-.17-.18-3.25-1.76-3.25-1.76s-4.33,7.78-10.75,8.91c0,0,8.69-4.95,9.59-9.53l-4.79-2.11s-4.17,8.45-11.43,10c0,0,8.9-5.49,10.35-10.41l-5-1.44s-4.22,8.17-10.27,9.42c0,0,9.64-7.38,9.11-9.68,0,0-4.66-1.05-6-.73,0,0-3.17,5.79-6.75,6.21,0,0,5.92-5.62,5.43-6.36,0,0-6.43.25-9.63,2.1a19.46,19.46,0,0,1,9.54-3.1,10.73,10.73,0,0,0-5.49-2.77s3.39-1.77,7,2.73c0,0,5,0,5.69.5,0,0-3-5-6.29-6.87,0,0,4.7.4,7.62,7.21l5.05,1.34s-3.61-6.75-6.42-8.68c0,0,4.73,1.14,7.66,9.13l4.72,2s-2.66-6.05-5.33-8.88c0,0,4.16,2,6.65,9.51l3,1.73s-2-4.39-2.71-5.6-.43-1.49-.43-1.49a16.4,16.4,0,0,1,4.41,7.79S738.83,387.57,739.1,387.23Z\",\n    transform: \"translate(-95.23 -55.03)\",\n    fill: \"#2f80ed\",\n    opacity: 0.1\n  })), _path60 || (_path60 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M873.37,222.81s-19.43-32.79-39-14.13c0,0-4.4,1.9-3.78,6.64,0,0,1.67-1.06,3.27,2.49a17.28,17.28,0,0,0,2.15,3.54,8.49,8.49,0,0,0,4.56,3h0s9.65,6.38,26.46,0c0,0,4.88.41,5.62-.24l-5.87-3.78s-2.6,4.41-6.76,5.14c0,0,6.77-4.83,5.92-5.74-.18-.19-3.2-1.87-3.2-1.87s-4.57,7.65-11,8.58c0,0,8.84-4.68,9.87-9.22L856.89,215s-4.43,8.33-11.74,9.66c0,0,9.07-5.21,10.67-10.08l-4.94-1.6s-4.48,8-10.56,9.1c0,0,9.86-7.08,9.4-9.39,0,0-4.62-1.2-6-.92,0,0-3.35,5.69-6.94,6,0,0,6.09-5.42,5.63-6.18,0,0-6.44.05-9.69,1.8a19.52,19.52,0,0,1,9.63-2.8,10.75,10.75,0,0,0-5.41-2.94s3.45-1.67,7,2.94c0,0,5,.17,5.67.68,0,0-2.83-5-6.07-7.06,0,0,4.68.54,7.39,7.44l5,1.5s-3.39-6.86-6.15-8.88c0,0,4.7,1.29,7.38,9.36l4.65,2.17s-2.47-6.13-5-9c0,0,4.09,2.13,6.36,9.71l2.93,1.82s-1.88-4.45-2.54-5.68-.38-1.5-.38-1.5a16.43,16.43,0,0,1,4.17,7.92S873.08,223.14,873.37,222.81Z\",\n    transform: \"translate(-95.23 -55.03)\",\n    fill: \"#2f80ed\"\n  })), _path61 || (_path61 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M750.44,291.76s1-38.1-25.47-32.73c0,0-4.74-.73-6.74,3.61,0,0,2,0,1.44,3.85a17.56,17.56,0,0,0-.06,4.14,8.55,8.55,0,0,0,2.25,5h0s4.77,10.54,22.38,14.12c0,0,3.91,2.95,4.89,2.79l-3-6.32s-4.55,2.34-8.46.75c0,0,8.3-.49,8.07-1.71,0-.25-1.72-3.29-1.72-3.29s-7.94,4.05-13.89,1.39c0,0,10,.75,13.27-2.54l-2.79-4.43s-8.18,4.68-15.08,1.92c0,0,10.45.42,14.41-2.85l-3.33-4s-8.07,4.42-13.79,2.08c0,0,12.12-.73,13-2.94,0,0-3.28-3.47-4.6-4,0,0-5.86,3-9.06,1.38,0,0,8-1.34,8.05-2.23,0,0-5.47-3.39-9.16-3.64a19.47,19.47,0,0,1,9.65,2.76,10.75,10.75,0,0,0-3-5.37s3.81.43,4.33,6.2c0,0,4.17,2.82,4.44,3.6,0,0,.29-5.77-1.38-9.21,0,0,3.68,2.95,2.3,10.23l3.43,3.94s.78-7.62-.47-10.79c0,0,3.28,3.59,1.26,11.85l2.77,4.31s1.18-6.51.55-10.34c0,0,2.32,4,.2,11.61l1.52,3.1s.77-4.77.87-6.16.48-1.48.48-1.48a16.42,16.42,0,0,1-.69,8.93S750,291.89,750.44,291.76Z\",\n    transform: \"translate(-95.23 -55.03)\",\n    fill: \"#2f80ed\"\n  })), _ellipse2 || (_ellipse2 = /*#__PURE__*/React.createElement(\"ellipse\", {\n    cx: 698.97,\n    cy: 716.3,\n    rx: 26.93,\n    ry: 4.55,\n    fill: \"#2f80ed\",\n    opacity: 0.1\n  })), _ellipse3 || (_ellipse3 = /*#__PURE__*/React.createElement(\"ellipse\", {\n    cx: 600.8,\n    cy: 785.38,\n    rx: 26.93,\n    ry: 4.55,\n    fill: \"#2f80ed\",\n    opacity: 0.1\n  })), _ellipse4 || (_ellipse4 = /*#__PURE__*/React.createElement(\"ellipse\", {\n    cx: 93.14,\n    cy: 749.99,\n    rx: 26.93,\n    ry: 4.55,\n    fill: \"#2f80ed\",\n    opacity: 0.1\n  })), _ellipse5 || (_ellipse5 = /*#__PURE__*/React.createElement(\"ellipse\", {\n    cx: 805.06,\n    cy: 780.83,\n    rx: 26.93,\n    ry: 4.55,\n    fill: \"#2f80ed\",\n    opacity: 0.1\n  })), _ellipse6 || (_ellipse6 = /*#__PURE__*/React.createElement(\"ellipse\", {\n    cx: 833.1,\n    cy: 723.1,\n    rx: 40.21,\n    ry: 6.8,\n    fill: \"#2f80ed\"\n  })), _path62 || (_path62 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M945,767a11.61,11.61,0,0,0,3.83-5.78c.5-2.3-.48-5.05-2.67-5.89-2.46-.94-5.09.76-7.09,2.48s-4.27,3.69-6.88,3.33a10.5,10.5,0,0,0,3.24-9.81,4.11,4.11,0,0,0-.9-2c-1.37-1.46-3.84-.83-5.48.32-5.2,3.66-6.65,10.72-6.68,17.08-.52-2.29-.08-4.68-.09-7s-.66-5-2.65-6.22a7.91,7.91,0,0,0-4-1c-2.34-.08-4.95.15-6.54,1.86-2,2.12-1.47,5.69.25,8s4.35,3.8,6.77,5.42a15.13,15.13,0,0,1,4.84,4.61,4.7,4.7,0,0,1,.35.82h14.66A40.44,40.44,0,0,0,945,767Z\",\n    transform: \"translate(-95.23 -55.03)\",\n    fill: \"#2f80ed\"\n  })), _path63 || (_path63 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M170.29,783.87s15.35-.47,20-3.77,23.63-7.23,24.78-1.94,23.08,26.29,5.74,26.43-40.29-2.7-44.91-5.52S170.29,783.87,170.29,783.87Z\",\n    transform: \"translate(-95.23 -55.03)\",\n    fill: \"#a8a8a8\"\n  })), _path64 || (_path64 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M221.1,802.75c-17.34.14-40.29-2.7-44.91-5.52-3.52-2.14-4.92-9.83-5.39-13.38l-.51,0s1,12.39,5.59,15.2,27.57,5.66,44.91,5.52c5,0,6.73-1.82,6.64-4.46C226.73,801.72,224.82,802.72,221.1,802.75Z\",\n    transform: \"translate(-95.23 -55.03)\",\n    opacity: 0.2\n  })));\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  return /*#__PURE__*/React.createElement(SvgEmpty, _extends({\n    svgRef: ref\n  }, props));\n});\nexport default __webpack_public_path__ + \"static/media/empty.7214f99f.svg\";\nexport { ForwardRef as ReactComponent };","import React, { useState, useEffect, useContext } from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport Chart from \"react-apexcharts\";\r\nimport _ from \"lodash\";\r\nimport { API } from \"aws-amplify\";\r\nimport {\r\n  CircularProgressbarWithChildren,\r\n  buildStyles,\r\n} from \"react-circular-progressbar\";\r\nimport \"react-circular-progressbar/dist/styles.css\";\r\nimport { throttle } from \"lodash\";\r\nimport ContentLoader from \"react-content-loader\";\r\nimport moment from \"moment\";\r\n\r\nimport { Page, Icon, SetupGuide } from \"components\";\r\nimport { EmptyState, SearchDropdown, DateRange, Button } from \"components\";\r\nimport { ReactComponent as Empty } from \"svgs/empty.svg\";\r\nimport ShopContext from \"context/ShopContext\";\r\nimport classNames from \"lib/classNames\";\r\nimport { chartOptions, stateCards } from \"lib/globals\";\r\nimport { getShopifyCartItems } from \"../components/cart/Utils\";\r\nimport styles from \"styles/dashboard.module.scss\";\r\nimport { formatMoney } from \"components/cart/Utils\";\r\n\r\nwindow.mo = moment;\r\nconst defaultStateCards = {\r\n  CartsDisplayed: null,\r\n  SalesGenerated: null,\r\n  SalesAmount: null,\r\n  AverageOrderSize: null,\r\n  CartConversionRate: null,\r\n  UpsellsGenerated: null,\r\n  UpsellsTotalAmount: null,\r\n  TotalROI: null,\r\n};\r\nconst DashboardScreen = (props) => {\r\n  const [activeChart, setActiveChart] = useState(\"CartsDisplayed\");\r\n  const [loading, setLoading] = useState(false);\r\n  const [campaignsFilter, setCampaignsFilter] = useState([]);\r\n  const [dateRangeFilter, setDateRangeFilter] = useState(null);\r\n  const [chartSeries, setChartSeries] = useState([\r\n    {\r\n      name: \"test\",\r\n      data: [1, 2, 3],\r\n    },\r\n  ]);\r\n  const [count, setCount] = useState(defaultStateCards);\r\n  const { state: shop } = useContext(ShopContext);\r\n  const formatter = (val, opts) => {\r\n    switch (activeChart) {\r\n      // case \"views\":\r\n      //   return `${val} views`;\r\n      case \"revenue\":\r\n        return `${val} $`;\r\n      case \"CartConversionRate\":\r\n        return `${val} %`;\r\n      default:\r\n        return val;\r\n    }\r\n  };\r\n  const getChart = async (newActiveChart = \"CartsDisplayed\") => {\r\n    setActiveChart(newActiveChart);\r\n    setLoading(true);\r\n    const dateFilter = dateRangeFilter\r\n      ? {\r\n          start: new Date(dateRangeFilter[0]).getTime(),\r\n          end: new Date(dateRangeFilter[1]).getTime(),\r\n        }\r\n      : {};\r\n    const data = await API.get(\"API_GATEWAY_NEW\", \"/analytics/chart\", {\r\n      queryStringParameters: Object.assign(\r\n        {\r\n          type: newActiveChart,\r\n          campaigns: campaignsFilter,\r\n        },\r\n        dateFilter\r\n      ),\r\n    });\r\n    setChartSeries([\r\n      {\r\n        name: newActiveChart,\r\n        data: data[newActiveChart]\r\n          ? data[newActiveChart]\r\n              .map((point) => {\r\n                const { x = 0, y = 0 } = point || {};\r\n                return x ? { x, y: y || 0 } : undefined;\r\n              })\r\n              .filter((p) => !!p)\r\n          : [],\r\n      },\r\n    ]);\r\n    setLoading(false);\r\n  };\r\n  const getCount = async () => {\r\n    setCount(defaultStateCards);\r\n    const dateFilter = dateRangeFilter\r\n      ? {\r\n          start: new Date(dateRangeFilter[0]).getTime(),\r\n          end: new Date(dateRangeFilter[1]).getTime(),\r\n        }\r\n      : {};\r\n    const count = await API.get(\"API_GATEWAY_NEW\", \"/analytics/count\", {\r\n      queryStringParameters: Object.assign(\r\n        {\r\n          campaigns: campaignsFilter,\r\n        },\r\n        dateFilter\r\n      ),\r\n    });\r\n    setCount(count);\r\n  };\r\n  const searchCampaigns = (keyword) =>\r\n    API.get(\"API_GATEWAY_NEW\", \"/campaigns/search\", {\r\n      queryStringParameters: { keyword },\r\n    });\r\n  const searchCampaignsThrottle = throttle(searchCampaigns, 700);\r\n\r\n  useEffect(() => {\r\n    getCount();\r\n    getChart();\r\n    return () => {\r\n      console.log(\"dashboard screen cleanup\");\r\n    };\r\n  }, [campaignsFilter, dateRangeFilter]);\r\n  return (\r\n    <Page\r\n      header={{\r\n        title: \"Dashboard\",\r\n        actions: [],\r\n      }}\r\n      loading={{\r\n        text: \"Loading\",\r\n        status: false,\r\n      }}\r\n      background=\"none\"\r\n      padding={0}\r\n    >\r\n      <div\r\n        className={classNames(\r\n          \"grid grid-flow-row gap-8 grid-cols-1 lg:grid-cols-3\"\r\n        )}\r\n      >\r\n        <div\r\n          className={classNames(\r\n            \"col-span-1 lg:col-span-3 flex items-center flex-wrap space-y-3 sm:space-y-0 sm:space-x-3\"\r\n          )}\r\n        >\r\n          <b className={classNames(\"flex-1 text-gray-600 text-lg\")}>Stats</b>\r\n          {/* <SearchDropdown\r\n\t\t\t\t\t\tclassName={classNames('flex-auto w-full sm:flex-1')}\r\n\t\t\t\t\t\tplaceholder=\"Campaigns Filter\"\r\n\t\t\t\t\t\tpromise={(keyword) => searchCampaignsThrottle(keyword)}\r\n\t\t\t\t\t\tonChange={(selected) => {\r\n\t\t\t\t\t\t\tsetCampaignsFilter(selected ? selected.map(({ value }) => value) : []);\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t/> */}\r\n          <DateRange\r\n            onChange={(range) => {\r\n              setDateRangeFilter(range);\r\n            }}\r\n            maxDate={new Date()}\r\n            value={dateRangeFilter}\r\n            className={classNames(\"flex-auto w-full sm:flex-1\")}\r\n            button={{\r\n              text: \"Date Filter\",\r\n              icon: \"calendar-alt\",\r\n            }}\r\n          />\r\n        </div>\r\n        <div\r\n          className={classNames(\r\n            \"col-span-1 lg:col-span-3 grid grid-cols-1 gap-8 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4\"\r\n          )}\r\n        >\r\n          {stateCards.map((stateCard, i) => (\r\n            <StateCard\r\n              {...stateCard}\r\n              value={count[stateCard.title]}\r\n              key={i}\r\n              position={i + 1}\r\n              onClick={() => {\r\n                if (stateCard.clickable === false) return;\r\n                getChart(stateCard.title);\r\n              }}\r\n              active={activeChart == stateCard.title.toString() ? 1 : 0}\r\n            />\r\n          ))}\r\n        </div>\r\n        <div\r\n          className={classNames(\r\n            \"col-span-2 lg:col-span-3 bg-white p-3 relative rounded p-6 shadow\"\r\n          )}\r\n        >\r\n          <Chart\r\n            options={chartOptions(formatter)}\r\n            series={chartSeries}\r\n            type=\"area\"\r\n          />\r\n          {loading && (\r\n            <div className={styles.loading}>\r\n              <Icon\r\n                icon=\"spinner-third\"\r\n                className=\"fa-spin\"\r\n                style={{\r\n                  animation: \"fa-spin 0.5s infinite linear\",\r\n                }}\r\n              />\r\n            </div>\r\n          )}\r\n        </div>\r\n        {/* <div\r\n          className={classNames(\r\n            \"col-span-1 lg:col-span-1 text-gray-600 flex flex-col space-y-6\"\r\n          )}\r\n        >\r\n          <h3 className={classNames(\"font-bold text-lg leading-none\")}>\r\n            Setup guide - Increase revenue\r\n          </h3>\r\n          <iframe\r\n            style={{ width: \"100%\", height: \"250px\" }}\r\n            frameBorder=\"0\"\r\n            allowFullScreen=\"1\"\r\n            allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\r\n            title=\"Setup guide - Increase revenue\"\r\n            src=\"https://www.youtube.com/embed/22qamcR2eOc?autoplay=0&amp;cc_load_policy=1&amp;controls=2&amp;hl=en&amp;rel=0&amp;enablejsapi=1&amp\"\r\n          ></iframe>\r\n        </div> */}\r\n      </div>\r\n    </Page>\r\n  );\r\n};\r\n\r\nDashboardScreen.propTypes = {};\r\n\r\nconst Step = ({ index, title, completed = false, children }) => (\r\n  <div\r\n    className={classNames(\"flex items-start p-3 rounded bg-white shadow\")}\r\n    data-completed={completed}\r\n  >\r\n    <span\r\n      className={classNames(\r\n        \"bg-orange-400 text-white w-8 h-8 rounded-full inline-flex items-center justify-center mr-3\",\r\n        {\r\n          \"bg-green-500\": completed,\r\n        }\r\n      )}\r\n    >\r\n      {completed ? (\r\n        <Icon icon=\"check\" size=\"xs\" />\r\n      ) : (\r\n        <span className={classNames(\"font-bold\")}>{index}</span>\r\n      )}\r\n    </span>\r\n    <div className={classNames(\"flex-1\")}>\r\n      <h4\r\n        className={classNames(\"font-bold mb-2 leading-none text-orange-400\", {\r\n          \"line-through text-green-500\": completed,\r\n        })}\r\n      >\r\n        {title}\r\n      </h4>\r\n      <div className={classNames(\"text-xs text-opacity-50\")}>{children}</div>\r\n    </div>\r\n  </div>\r\n);\r\n\r\nconst StateCard = (props) => {\r\n  const {\r\n    title,\r\n    label,\r\n    value,\r\n    suf,\r\n    pre,\r\n    onClick,\r\n    active,\r\n    currency,\r\n    clickable,\r\n  } = props;\r\n  const {\r\n    state: { money_format },\r\n  } = useContext(ShopContext);\r\n  return (\r\n    // <div className={styles.stateCard} {...{ position, onClick, active }}>\r\n    <div\r\n      className={classNames(\r\n        \"shadow flex-1 bg-white rounded p-5 text-gray-600\",\r\n        {\r\n          \"text-blue-500 ring\": active,\r\n        },\r\n        {\r\n          \"cursor-pointer\": clickable !== false,\r\n        }\r\n      )}\r\n      {...{ onClick, active }}\r\n    >\r\n      {value === null && (\r\n        <ContentLoader>\r\n          <rect x=\"0\" y=\"0\" rx=\"4\" ry=\"4\" width=\"60%\" height=\"30\" />\r\n          <rect x=\"0\" y=\"60\" rx=\"4\" ry=\"4\" width=\"30%\" height=\"30\" />\r\n        </ContentLoader>\r\n      )}\r\n      {typeof value === \"number\" && (\r\n        <>\r\n          <h3 className={classNames(\"font-bold mb-3\")}>\r\n            {label || _.startCase(title)}\r\n          </h3>\r\n          <h1 className={classNames(\"font-bold text-4xl\")}>\r\n            {pre && <i className={styles.pre}>{pre}</i>}{\" \"}\r\n            {currency ? (\r\n              <span\r\n                dangerouslySetInnerHTML={{\r\n                  __html: formatMoney(value * 100, money_format),\r\n                }}\r\n              ></span>\r\n            ) : (\r\n              value\r\n            )}{\" \"}\r\n            {suf && <i className={styles.suf}>{suf}</i>}\r\n          </h1>\r\n        </>\r\n      )}\r\n    </div>\r\n  );\r\n};\r\n\r\nconst SetupAlert = (props) => {\r\n  const { title, content, value } = props;\r\n  return (\r\n    <div className={styles.SetupAlert}>\r\n      <div className={styles.content}>\r\n        <b>{title}</b>\r\n        <p>{content}</p>\r\n      </div>\r\n      <div className={styles.progress}>\r\n        <CircularProgressbarWithChildren\r\n          value={value}\r\n          // text=\r\n          strokeWidth={10}\r\n          styles={buildStyles({\r\n            // Rotation of path and trail, in number of turns (0-1)\r\n            strokeLinecap: \"round\",\r\n            textSize: \"17px\",\r\n            pathTransitionDuration: 0.5,\r\n            pathColor: \"#fff\",\r\n            textColor: \"#fff\",\r\n            trailColor: \"#286CC8\",\r\n            backgroundColor: \"#3e98c7\",\r\n          })}\r\n        >\r\n          <b>{`${value}%`}</b>\r\n        </CircularProgressbarWithChildren>\r\n      </div>\r\n    </div>\r\n  );\r\n};\r\n\r\nexport default DashboardScreen;\r\n","import React from 'react';\r\nimport { Page } from 'components';\r\nimport 'styles/static_pages.scss';\r\nimport classNames from 'lib/classNames';\r\n\r\nconst FaqScreen = () => (\r\n\t<Page\r\n\t\tbackground=\"white\"\r\n\t\tpadding={0}\r\n\t\theader={{\r\n\t\t\ttitle: \"FAQ's\",\r\n\t\t}}\r\n\t>\r\n\t\t<div className={classNames('text-gray-700 static_page')}>\r\n\t\t\t<h4>Simple setup instructions</h4>\r\n\r\n\t\t\t<h6>Setup cart:</h6>\r\n\t\t\t<p>Visit Settings Page And Setup/Design Your Stores Default Cart.</p>\r\n\t\t\t<h6>Activate cart:</h6>\r\n\t\t\t<p>Click Activate at the top of the settings page.</p>\r\n\t\t\t<p>\r\n\t\t\t\t(Note: This will activate the your cart immediately on your storefront and display any upsell campaigns\r\n\t\t\t\tyou currently have active.)\r\n\t\t\t</p>\r\n\t\t\t<h6>Create Upsell Campaigns:</h6>\r\n\t\t\t<p>Visit Campaign Page To Create Your 1St Upsell Campaign.</p>\r\n\r\n\t\t\t<h4>How to turn monster upsell cart off/on?</h4>\r\n\t\t\t<p>At the top of the settings page.</p>\r\n\t\t\t<h4>What happens if Monster Upsells Cart doesn’t load?</h4>\r\n\t\t\t<p>\r\n\t\t\t\tAt the top of the settings Your normal cart will be activated and customers will still be able to\r\n\t\t\t\tcheckout seamlessly.\r\n\t\t\t</p>\r\n\t\t\t<h4>Can i run multiple campaigns on the same cart?</h4>\r\n\t\t\t<p>Multiple campaigns can run on the cart at the same time but only 1 campaign (type) at a time.</p>\r\n\t\t\t<p>For example: If 2 Add To Unlock campaigns are running only 1 will show.</p>\r\n\t\t\t<h4>If 2 or more campaign types target the same product which campaign shows?</h4>\r\n\t\t\t<p>\r\n\t\t\t\tAlready activated campaigns on storefront will override new types to give the customer best user\r\n\t\t\t\texperience.\r\n\t\t\t</p>\r\n\t\t\t<h6>\r\n\t\t\t\tIf no existing campaign type was previously activated the following hierarchy will take place based on\r\n\t\t\t\tcampaign product targeting:\r\n\t\t\t</h6>\r\n\t\t\t<p>Order of least favored to most favored product targeting options. </p>\r\n\t\t\t<ul className={classNames('list-decimal list-inside')} style={{ marginBottom: 13 }}>\r\n\t\t\t\t<li style={{ fontSize: 13 }}>All products</li>\r\n\t\t\t\t<li style={{ fontSize: 13 }}>Collection</li>\r\n\t\t\t\t<li style={{ fontSize: 13 }}>Single product (most favored targeting)</li>\r\n\t\t\t</ul>\r\n\t\t\t<h6>Campaign Types using the same product targeting options:</h6>\r\n\t\t\t<p>The newest made campaign wins.</p>\r\n\t\t\t<h4>How do I cancel my subscription?</h4>\r\n\t\t\t<p>Uninstall the app, it's better to disable the custom cart before uninstalling.</p>\r\n\t\t\t<h4>Do you make changes to my store code?</h4>\r\n\t\t\t<p>Yes. We automatically add 2 snippets and 2 files to your theme.</p>\r\n\t\t\t<p>It’s really easy to remove all Monster Upsell code from your theme</p>\r\n\t\t\t<ul>\r\n\t\t\t\t<li>\r\n\t\t\t\t\t<p>Delete these 2 files from your theme code</p>\r\n\t\t\t\t\t<img src=\"https://s3-us-west-2.amazonaws.com/apps.static.resources/snippetsNames.png\" />\r\n\t\t\t\t</li>\r\n\t\t\t\t<li>\r\n\t\t\t\t\t<p>and these 2 snippets from your theme.liquid</p>\r\n\t\t\t\t\t<img src=\"https://s3-us-west-2.amazonaws.com/apps.static.resources/snippetsCalls.png\" />\r\n\t\t\t\t</li>\r\n\t\t\t</ul>\r\n\t\t\t<h4>\r\n\t\t\t\tWhy are my heat-map/screen recording tools (example: hotjar, crazy egg) not showing the correct shopping\r\n\t\t\t\tcart?\r\n\t\t\t</h4>\r\n\t\t\t<p>\r\n\t\t\t\tWe are trying to find a workaround for this, however for now these tools may not import the correct css.\r\n\t\t\t\tRest assured your cart is displayed perfectly for your customers.\r\n\t\t\t</p>\r\n\t\t\t<h4>Does it work with dynamic checkout buttons?</h4>\r\n\t\t\t<p>\r\n\t\t\t\tNo, it doesn't. You will need to deactivate those buttons if you want checkout to go through monster\r\n\t\t\t\tcart.\r\n\t\t\t</p>\r\n\t\t\t<h4>When will there be more updates?</h4>\r\n\t\t\t<p>\r\n\t\t\t\tOur goal is to be the only upsell app you will ever need. We have already started working on new updates\r\n\t\t\t\tyou are going to love and are planning to send updates live monthly! (Feel free to email us feature\r\n\t\t\t\tsuggestions.)\r\n\t\t\t</p>\r\n\t\t\t<p>\r\n\t\t\t\tIf you have any further questions feel free to contact our team at{' '}\r\n\t\t\t\t<a\r\n\t\t\t\t\thref=\"mailto:support@monsterapps.shop\"\r\n\t\t\t\t\ttarget=\"_blank\"\r\n\t\t\t\t\tclassName={classNames('text-blue-500 font-bold')}\r\n\t\t\t\t>\r\n\t\t\t\t\tsupport@monsterapps.shop\r\n\t\t\t\t</a>\r\n\t\t\t</p>\r\n\t\t</div>\r\n\t</Page>\r\n);\r\n\r\nexport default FaqScreen;\r\n","import React from 'react';\r\nimport { Page } from 'components';\r\nimport 'styles/static_pages.scss';\r\nimport classNames from 'lib/classNames';\r\n\r\nconst PrivacyPolicy = () => (\r\n\t<Page\r\n\t\tbackground=\"none\"\r\n\t\tpadding={0}\r\n\t\theader={{\r\n\t\t\ttitle: 'Privacy Policy',\r\n\t\t}}\r\n\t>\r\n\t\t<div className={classNames('text-gray-700 static_page')}>\r\n\t\t\t<h4>Privacy Policy</h4>\r\n\t\t\t<p>\r\n\t\t\t\t(Basically we are serious about your privacy!)\r\n\t\t\t\t<br /> <br /> MonsterApps provides applications (\"the Service\") to merchants who use Shopify to build\r\n\t\t\t\tand maintain their online store. This Privacy Policy provide detailed information on how data is\r\n\t\t\t\tcollected, used, and shared when you install or use our apps with your Shopify store.\r\n\t\t\t</p>\r\n\r\n\t\t\t<h4>Personal Data We Process</h4>\r\n\t\t\t<p>\r\n\t\t\t\tWhen you install our apps, we are automatically able to access certain types of information from your\r\n\t\t\t\tShopify account. See more detailed information in Shopify's help docs.\r\n\t\t\t</p>\r\n\t\t\t<p>\r\n\t\t\t\tIn addition, we store the following personal information: Emails, names and location of our customers\r\n\t\t\t\tthat are necessary for localized email notifications, reports, support, product updates and reminders.\r\n\t\t\t</p>\r\n\r\n\t\t\t<h4>How We Use Personal Data</h4>\r\n\t\t\t<p>\r\n\t\t\t\tWe use the personal information we collect from you in order to provide the Service and to operate our\r\n\t\t\t\tapps. Additionally, we use the personal information to: communicate with you, optimize or improve the\r\n\t\t\t\tService, provide you with information about our products, and handling software bugs or support\r\n\t\t\t\trequests.\r\n\t\t\t</p>\r\n\t\t\t<p>\r\n\t\t\t\tWe also use your Personal Information to provide you with targeted advertisements or marketing\r\n\t\t\t\tcommunications we believe may be of interest to you. For more information about how targeted advertising\r\n\t\t\t\tworks, you can visit the Network Advertising Initiative&rsquo;s (&ldquo;NAI&rdquo;) educational page at\r\n\t\t\t\thttp://www.networkadvertising.org/understanding-online-advertising/how-does-it-work.\r\n\t\t\t</p>\r\n\t\t\t<p>\r\n\t\t\t\tYou can opt out of some of these services by visiting the Digital Advertising Alliance&rsquo;s opt-out\r\n\t\t\t\tportal at: http://optout.aboutads.info/.\r\n\t\t\t</p>\r\n\r\n\t\t\t<h4>Sharing Your Information</h4>\r\n\t\t\t<p>\r\n\t\t\t\tWe do not share your Personal Information with any third parties. We may share your Personal Information\r\n\t\t\t\tto comply with applicable laws and regulations, to respond to a subpoena, search warrant or other lawful\r\n\t\t\t\trequest for information we receive, or to otherwise protect our rights.\r\n\t\t\t</p>\r\n\r\n\t\t\t<h4>Your Rights</h4>\r\n\t\t\t<p>\r\n\t\t\t\tIf you are in the EU, you have the right to access, update or delete your Information and obtain a copy\r\n\t\t\t\tof your information we store on our systems and have us update, correct or delete it. You are also\r\n\t\t\t\tentitled to obtain your Information (excluding data obtained from other sources) in a structured,\r\n\t\t\t\tcommonly used and machine-readable format, and have the right to transmit those data to another data\r\n\t\t\t\tcontroller. If you wish to exercise any of these rights, contact us directly at\r\n\t\t\t\tsupport@monsterapps.shop. You have a right to submit a complaint to the relevant supervisory data\r\n\t\t\t\tprotection authority.\r\n\t\t\t</p>\r\n\t\t\t<p>\r\n\t\t\t\tIf you are in the EU, you can lodge a complaint to the supervisory authority under the General data\r\n\t\t\t\tProtection Regulations (\"GDPR\"), in particular in the Member State of your residence, place of work or\r\n\t\t\t\twhere the alleged infringement of the GDPR occurred.\r\n\t\t\t</p>\r\n\r\n\t\t\t<h4>Age Of Consent</h4>\r\n\t\t\t<p>\r\n\t\t\t\tBy using our apps, you indicate that you are at least 13 years of age or at least the age of majority in\r\n\t\t\t\tyour state or province of residence to use the App.\r\n\t\t\t</p>\r\n\r\n\t\t\t<h4>Changes To The Privacy Policy</h4>\r\n\t\t\t<p>\r\n\t\t\t\tWe may update this privacy policy at any time in order to reflect, for example, changes to our practices\r\n\t\t\t\tor for other operational, legal or regulatory reasons. If we make changes to this policy, we will notify\r\n\t\t\t\tyou by email of updates, so that you are aware of information we collect, how we use it, and under what\r\n\t\t\t\tcircumstances, if any.\r\n\t\t\t</p>\r\n\r\n\t\t\t<h4>Contact Information</h4>\r\n\t\t\t<p>\r\n\t\t\t\tIf you would like to access, correct, amend or delete any personal information, or require any\r\n\t\t\t\tadditional information about our privacy policy please contact us at{' '}\r\n\t\t\t\t<a\r\n\t\t\t\t\thref=\"mailto:support@monsterapps.shop\"\r\n\t\t\t\t\ttarget=\"_blank\"\r\n\t\t\t\t\tclassName={classNames('text-blue-500 font-bold')}\r\n\t\t\t\t>\r\n\t\t\t\t\tsupport@monsterapps.shop\r\n\t\t\t\t</a>\r\n\t\t\t</p>\r\n\t\t</div>\r\n\t</Page>\r\n);\r\n\r\nexport default PrivacyPolicy;\r\n","import React, { useState, useContext, useEffect, useRef } from \"react\";\r\nimport {\r\n  Page,\r\n  Icon,\r\n  Spinner,\r\n  ButtonSelect,\r\n  FormGroup,\r\n  FormControl,\r\n  Input,\r\n  Dropdown,\r\n  Button,\r\n  Alert\r\n} from \"components\";\r\nimport classNames from \"lib/classNames\";\r\nimport ShopContext from \"context/ShopContext\";\r\nimport UserContext from \"context/UserContext\";\r\nimport { Scrollbars } from \"react-custom-scrollbars\";\r\nimport { API_GATEWAY_NEW } from \"aws-exports\";\r\nimport styles from \"styles/page.module.scss\";\r\nimport { API } from \"aws-amplify\";\r\nimport { useTransition } from \"react-spring\";\r\nimport removeTypeName from \"lib/removeTypeName\";\r\nimport useRefState from \"hooks/useRefState\";\r\nimport useReactRouter from 'use-react-router';\r\n\r\nconst defaultCartLinks = [{ selector: 'a[href=\"/cart\"]', action: \"TOGGLE\" }];\r\nconst actions = [\r\n  { value: \"TOGGLE\", label: \"Toggle Cart\" },\r\n  { value: \"OPEN\", label: \"Open Cart\" },\r\n  { value: \"CLOSE\", label: \"Close Cart\" }\r\n];\r\n\r\nconst ManualSetup = () => {\r\n  const [activePreviewDevice, setActivePreviewDevice] = useState(\"desktop\");\r\n  const is = value => activePreviewDevice === value\r\n  const [currentAction, setCurrentAction] = useState();\r\n  const [unsaved, setUnsaved] = useState(false);\r\n  const shopContext = useContext(ShopContext);\r\n  const user = useContext(UserContext);\r\n  const { state } = shopContext;\r\n  const [iframeSrc, setIframeSrc] = useState(\r\n    `${API_GATEWAY_NEW}/storeFront?shop=${user.attributes.website}&manual_setup=true&origin=${window.location.origin}`\r\n  );\r\n  const { history, location } = useReactRouter();\r\n  const iframe = useRef(null);\r\n  const selectorOverlay = useRef(null);\r\n  const [shopCustomLinks, setShopCustomLinks] = useState(\r\n    removeTypeName(state.custom_links || [])\r\n  );\r\n  const [shopCustomATCs, setShopCustomATCs] = useState(\r\n    removeTypeName(state.custom_atcs || [])\r\n  );\r\n  const [customCartLinks, setCustomCartLinks, cclRef] =\r\n    useRefState(shopCustomLinks);\r\n  const [customATCs, setCustomATCs, catcRef] =\r\n    useRefState(shopCustomATCs);\r\n  const [loading, setLoading] = useState(true);\r\n  const [saveLoading, setSaveLoading] = useState(false);\r\n\r\n  const discard = () => {\r\n    setCustomCartLinks(shopCustomLinks);\r\n    sendMessage({\r\n      action: \"RESET_LINKS\",\r\n      selectors: shopCustomLinks.map(({ selector }) => selector)\r\n    });\r\n  };\r\n\r\n  const save = async () => {\r\n    setSaveLoading(true);\r\n    await API.post(\"API_GATEWAY_NEW\", \"/cart/links\", {\r\n      body: {\r\n        custom_links: cclRef.current,\r\n        custom_atcs: catcRef.current,\r\n      }\r\n    });\r\n    setShopCustomLinks(cclRef.current);\r\n    setShopCustomATCs(catcRef.current);\r\n    setSaveLoading(false);\r\n  };\r\n\r\n  const sendMessage = (data) => {\r\n    if (iframe.current)\r\n      iframe.current.contentWindow.postMessage(data, API_GATEWAY_NEW);\r\n  };\r\n\r\n  const handleMessage = (event) => {\r\n    const { action, value } = event.data;\r\n    console.log(event.data);\r\n    switch (action) {\r\n      case \"SELECT_CART_LINK\":\r\n        if (!cclRef.current.find(v => v.selector === value)) {\r\n          setCustomCartLinks(\r\n            [...cclRef.current].concat([{\r\n              selector: value,\r\n              action: \"TOGGLE\"\r\n            }])\r\n          )\r\n        }\r\n        else {\r\n          setCustomCartLinks(\r\n            [...cclRef.current].filter(v => v.selector !== value)\r\n          )\r\n        }\r\n        break;\r\n      case \"SELECT_ATC\":\r\n        console.log(value);\r\n        if (!catcRef.current.find(v => v.button === value.button)) {\r\n          setCustomATCs(\r\n            [...catcRef.current].concat([value])\r\n          )\r\n        }\r\n        else {\r\n          setCustomATCs(\r\n            [...catcRef.current].filter(v => v.button !== value.button)\r\n          )\r\n        }\r\n        break;\r\n    }\r\n  };\r\n\r\n  const [elementPickerEnabled, setElementPickerEnabled] = useState(false);\r\n\r\n  useEffect(() => {\r\n    window.addEventListener(\"message\", handleMessage);\r\n    return () => {\r\n      window.removeEventListener(\"message\", handleMessage);\r\n    };\r\n  }, []);\r\n  useEffect(() => {\r\n    if (currentAction) {\r\n      sendMessage({\r\n        action: \"VALUE_CHANGED\",\r\n        value: {\r\n          currentAction,\r\n          customCartLinks\r\n        }\r\n      })\r\n    }\r\n  }, [currentAction, customCartLinks])\r\n\r\n  useEffect(() => {\r\n    console.log(\"unsaved\", JSON.stringify({ l: shopCustomLinks, b: shopCustomATCs }) !== JSON.stringify({ l: customCartLinks, b: customATCs }));\r\n    setUnsaved(JSON.stringify({ l: shopCustomLinks, b: shopCustomATCs }) !== JSON.stringify({ l: customCartLinks, b: customATCs }))\r\n  }, [shopCustomATCs, shopCustomLinks, customATCs, customCartLinks])\r\n\r\n  return (\r\n    <Page\r\n      background=\"white\"\r\n      padding=\"p-0\"\r\n      header={{ title: \"Manual Setup\" }}\r\n    >\r\n      <div className={classNames(\"fixed z-20 bg-white inset-0 flex flex-col\")}>\r\n        <nav className={classNames(\"flex py-2 px-4 items-center justify-between bg-gray-800 text-white font-bold text-lg\")}>\r\n\r\n          <div className={classNames(\"flex-1\")}>\r\n            <div className={classNames(\"flex w-48 border border-gray-700 rounded overflow-hidden\")}>\r\n              <div className={classNames(\"py-1 flex-1 text-sm text-center rounded-l\", {\r\n                \"bg-gray-700 pointer-events-none\": is(\"desktop\"),\r\n                \"cursor-pointer hover:bg-gray-900\": is(\"mobile\"),\r\n              })} disabled={is(\"desktop\")} onClick={() => setActivePreviewDevice(\"desktop\")}>Desktop</div>\r\n              <div className={classNames(\" py-1 flex-1 text-sm text-center rounded-r\", {\r\n                \"bg-gray-700 pointer-events-none\": is(\"mobile\"),\r\n                \"cursor-pointer hover:bg-gray-900\": is(\"desktop\")\r\n              })} disabled={is(\"mobile\")} onClick={() => setActivePreviewDevice(\"mobile\")}>Mobile</div>\r\n            </div>\r\n          </div>\r\n          <div className={classNames(\"flex-1 flex-center\")}>\r\n            <button className={classNames(\"py-1 px-2 text-sm text-center rounded cursor-pointer border border-gray-700 hover:bg-gray-900\", {\r\n              hidden: !currentAction\r\n            })} onClick={() => {\r\n              const newState = currentAction === \"done\" ? undefined : \"done\"\r\n              setCurrentAction(newState)\r\n            }}>{\r\n                currentAction === \"done\" ? \"Select an action \" : !currentAction ? \"Change Action\" : \"Done editing\"}</button>\r\n          </div>\r\n          <div className={classNames(\"w-48 flex items-center flex-1 justify-end\")}>\r\n            <p className={classNames(\"text-sm text-white mr-3\", {\r\n              hidden: !unsaved\r\n            })}>Unsaved changes</p>\r\n            <button className={classNames(\"py-1 px-4 text-sm bg-red-500 hover:bg-red-600 rounded\")} onClick={() => history.push(\"/settings\")}>Close</button>\r\n            <button\r\n              disabled={!unsaved}\r\n              className={classNames(\"py-1 px-4 text-sm disabled:bg-gray-500 bg-blue-500 hover:bg-blue-600 rounded ml-2\")} onClick={() => {\r\n                setCurrentAction(\"done\")\r\n                save()\r\n              }}>Save</button>\r\n          </div>\r\n        </nav>\r\n        <div className={classNames(\"flex-1 h-full relative\")} >\r\n          <div className={classNames(\"absolute inset-0 z-20 bg-black bg-opacity-75 backdrop-blur-sm flex-center\", {\r\n            \"hidden\": currentAction || loading\r\n          })}>\r\n            <div className={classNames(\"bg-white rounded px-5 py-10 min-w-md\")}>\r\n              <FormControl label=\"Manually setup cart trigger buttons\" info=\"Not every theme is created equal.<br/>You may need to manually select your cart drawer triggers.<br/>If you have any trouble with this please reach out to the team.\">\r\n                <ButtonSelect\r\n                  options={[\r\n                    { value: \"atc_button\", icon: \"cart-plus\", info: \"Specify your products add to cart buttons\", label: \"Add to cart button\" },\r\n                    {\r\n                      value: \"cart_link\", icon: \"shopping-cart\", info: \"Specify elements that will open the cart drawer\", label: \"Open cart links\"\r\n                    },\r\n                  ]}\r\n                  value={currentAction}\r\n                  onChange={(value) => setCurrentAction(value)}\r\n                  className={classNames(\"mt-4\")}\r\n                />\r\n              </FormControl>\r\n            </div>\r\n          </div>\r\n          <div className={classNames(\"w-full h-full relative\")}>\r\n            {loading && <Spinner text=\"loading storefront\" />}\r\n            <iframe\r\n              ref={iframe}\r\n              onLoad={() => {\r\n                sendMessage({\r\n                  action: \"VALUE_CHANGED\",\r\n                  value: {\r\n                    currentAction,\r\n                    customCartLinks\r\n                  }\r\n                })\r\n                setLoading(false);\r\n              }}\r\n              src={iframeSrc}\r\n              className={classNames(\"h-full mx-auto\", loading && \"hidden\")}\r\n              style={{\r\n                width: activePreviewDevice === \"desktop\" ? \"100%\" : 350\r\n              }}\r\n              onMouseLeave={() => {\r\n                if (elementPickerEnabled && selectorOverlay.current)\r\n                  selectorOverlay.current.style.display = \"flex\";\r\n              }}\r\n            />\r\n            {elementPickerEnabled && (\r\n              <div\r\n                ref={selectorOverlay}\r\n                className={classNames(\r\n                  \"absolute inset-0 z-20 top-0 w-full h-full text-white text-2xl flex-center\"\r\n                )}\r\n                style={{ background: \"rgba(0,0,0,0.6)\" }}\r\n                onMouseEnter={({ target }) => (target.style.display = \"none\")}\r\n              >\r\n                Click on the element to select it.\r\n              </div>\r\n            )}\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </Page>\r\n  );\r\n};\r\n\r\nexport default ManualSetup;\r\n\r\n//'ritzystore2.myshopify.com' ||\r\n\r\nconst CartLink = ({ link, updateLink, removeLink }) => {\r\n  const isDefault = defaultCartLinks.includes(link);\r\n  return (\r\n    <div className={classNames(\"p-3 rounded bg-white mb-2 shadow-sm\")}>\r\n      <FormControl\r\n        label={`${isDefault ? \"default\" : \"additional\"} trigger`}\r\n        marginBottom=\"mb-3\"\r\n      >\r\n        <Input\r\n          type=\"text\"\r\n          value={link.selector}\r\n          onChange={(v) => console.log(v)}\r\n          disabled={isDefault}\r\n        />\r\n      </FormControl>\r\n      {/* <FormControl label=\"action\" marginBottom=\"mb-3\">\r\n\t\t\t\t<Dropdown options={actions} value={link.action} disabled={true} onChange={(v) => console.log(v)} />\r\n\t\t\t</FormControl> */}\r\n      {!isDefault && (\r\n        <div className={classNames(\"flex flex-row-reverse\")}>\r\n          <button\r\n            className={classNames(\r\n              \"cursor-pointer focus:outline-none text-center text-red-500 text-sm\"\r\n            )}\r\n            onClick={() => removeLink(link.selector)}\r\n          >\r\n            Remove\r\n          </button>\r\n        </div>\r\n      )}\r\n    </div>\r\n  );\r\n};\r\n","const oldPlans = [\r\n\t{\r\n\t\tdescription: 'Mini Cart',\r\n\t\ttransactions: 50,\r\n\t\tprice: 0,\r\n\t\treal_price: 7.99,\r\n\t\tcolor: 'teal-500',\r\n\t\tinfo: 'up to <b>50</b> transactions',\r\n\t},\r\n\t{\r\n\t\tdescription: 'Big Cart',\r\n\t\ttransactions: 200,\r\n\t\tprice: 7,\r\n\t\treal_price: 14.99,\r\n\t\tcolor: 'blue-500',\r\n\t\tinfo: 'up to <b>200</b> transactions',\r\n\t},\r\n\t{\r\n\t\tdescription: 'Beast Cart',\r\n\t\ttransactions: 500,\r\n\t\tprice: 15,\r\n\t\treal_price: 29.99,\r\n\t\tcolor: 'indigo-500',\r\n\t\tinfo: 'up to <b>500</b> transactions',\r\n\t},\r\n\t{\r\n\t\tdescription: 'Ultimate Cart',\r\n\t\ttransactions: Infinity,\r\n\t\tprice: 20,\r\n\t\treal_price: 49.99,\r\n\t\tcolor: 'purple-500',\r\n\t\tinfo: '<b>unlimited</b> transactions',\r\n\t},\r\n];\r\n\r\nconst newPlans = [\r\n\t{\r\n\t\tdescription: 'Mini Cart',\r\n\t\ttransactions: 50,\r\n\t\tprice: 0,\r\n\t\treal_price: 7.99,\r\n\t\tcolor: 'teal-500',\r\n\t\tinfo: 'up to <b>50</b> transactions',\r\n\t},\r\n\t{\r\n\t\tdescription: 'Big Cart',\r\n\t\ttransactions: 200,\r\n\t\tprice: 7,\r\n\t\treal_price: 14.99,\r\n\t\tcolor: 'blue-500',\r\n\t\tinfo: 'up to <b>200</b> transactions',\r\n\t},\r\n\t{\r\n\t\tdescription: 'Beast Cart',\r\n\t\ttransactions: 500,\r\n\t\tprice: 15,\r\n\t\treal_price: 29.99,\r\n\t\tcolor: 'indigo-500',\r\n\t\tinfo: 'up to <b>500</b> transactions',\r\n\t},\r\n\t{\r\n\t\tdescription: 'Ultimate Cart',\r\n\t\ttransactions: 1000,\r\n\t\tprice: 20,\r\n\t\treal_price: 49.99,\r\n\t\tcolor: 'purple-500',\r\n\t\tinfo: '<b>1000</b> transactions',\r\n\t},\r\n\t{\r\n\t\tdescription: 'Epic Cart',\r\n\t\ttransactions: 2000,\r\n\t\tprice: 35,\r\n\t\treal_price: 84.99,\r\n\t\tcolor: 'purple-500',\r\n\t\tinfo: '<b>2000</b> transactions',\r\n\t},\r\n\t{\r\n\t\tdescription: 'Advanced Cart',\r\n\t\ttransactions: 3000,\r\n\t\tprice: 15,\r\n\t\treal_price: 99.99,\r\n\t\tcolor: 'purple-500',\r\n\t\tinfo: '<b>3000</b> transactions',\r\n\t},\r\n\t{\r\n\t\tdescription: 'Monster Cart',\r\n\t\ttransactions: Infinity,\r\n\t\tprice: 30,\r\n\t\treal_price: 129.99,\r\n\t\tcolor: 'purple-500',\r\n\t\tinfo: '<b>unlimited</b> transactions',\r\n\t},\r\n];\r\n\r\nconst newPlansStartsAt = new Date('Thu Mar 04 2021 13:27:29 GMT+0100 (Central European Standard Time)').getTime();\r\nconst thirdPlansStartsAt = new Date(\"Tue Mar 01 2022 13:49:50 GMT+0100 (Central European Standard Time)\").getTime();\r\n\r\n\r\nfunction getNewPlans (installationTime) {\r\n\tconst hasSecondPricing = installationTime <= thirdPlansStartsAt;\r\n\treturn newPlans.map((plan, index) => {\r\n\t\tconst currentPlan = { ...plan }\r\n\t\tconst isLast = index === (newPlans.length - 1)\r\n\t\tcurrentPlan.real_price += hasSecondPricing ? isLast ? 0 : 3 : 5\r\n\t\tcurrentPlan.real_price = Number(currentPlan.real_price.toFixed(2))\r\n\t\tif (!hasSecondPricing) return currentPlan\r\n\t\tif (index === 0) {\r\n\t\t\tcurrentPlan.price = 3 // increase the first plan\r\n\t\t}\r\n\t\tif (isLast) {\r\n\t\t\tcurrentPlan.price -= 3 // decrease the last one\r\n\t\t}\r\n\t\treturn currentPlan\r\n\t})\r\n}\r\n\r\nexport default function getPlans (installationTime) {\r\n\tconst hasFirstPricing = installationTime <= newPlansStartsAt;\r\n\treturn hasFirstPricing ? oldPlans : getNewPlans(installationTime);\r\n}\r\n\r\nexport function getBasePrice (installationTime) {\r\n\tconst hasFirstPricing = installationTime <= newPlansStartsAt;\r\n\tconst hasSecondPricing = installationTime <= thirdPlansStartsAt;\r\n\treturn hasFirstPricing ? 7.99 : hasSecondPricing ? 10.99 : 12.99\r\n}\r\nexport function getPlansModal (installationTime) {\r\n\treturn installationTime <= newPlansStartsAt ? 'chargeApprovalModal.html' : 'chargeApprovalModal2.html';\r\n}\r\n","import React, { useState, useContext, useEffect, useRef } from \"react\";\r\nimport { Page, Spinner, Icon } from \"components\";\r\nimport classNames from \"lib/classNames\";\r\nimport ShopContext from \"context/ShopContext\";\r\nimport UserContext from \"context/UserContext\";\r\nimport { API_GATEWAY_NEW, APP_DEV } from \"aws-exports\";\r\nimport { API } from \"aws-amplify\";\r\nimport moment from \"moment\";\r\nimport { SAVE_PLAN_SETTINGS } from \"lib/mutations\";\r\nimport { useMutation } from \"@apollo/react-hooks\";\r\nimport { GET_SHOP_SETTINGS } from \"Queries\";\r\nimport { Loading, Toast } from \"@shopify/app-bridge-react\";\r\nimport useRefState from \"hooks/useRefState\";\r\nimport getPlans, { getBasePrice } from \"lib/getPlans\";\r\n\r\n// ⛔⛔ do not remove\r\n// this classes for the css purge\r\n// border-teal-500\r\n// border-blue-500\r\n// border-indigo-500\r\n// border-purple-500\r\n// bg-teal-500\r\n// bg-blue-500\r\n// bg-indigo-500\r\n// bg-purple-500\r\n// text-teal-500\r\n// text-blue-500\r\n// text-indigo-500\r\n// text-purple-500\r\n\r\nconst PlanScreen = () => {\r\n  const [loading, setLoading] = useState(true);\r\n  const [plan, setPlan] = useState(null);\r\n  const [currentPlan, setCurrentPlan] = useState(null);\r\n  const user = useContext(UserContext);\r\n  const { state: shop } = useContext(ShopContext);\r\n  const plans = getPlans(new Date(shop.installedAt).getTime());\r\n  const hasDiscount =\r\n    shop?.invitation &&\r\n    shop?.invitation?.type === \"discount_percentage\" &&\r\n    shop?.invitation?.value;\r\n  const discount = hasDiscount ? shop.invitation.value / 100 : 0;\r\n  const applyDiscount = (value) =>\r\n    Number((value - value * discount).toFixed(2));\r\n  const getPlan = async () => {\r\n    const planResponse = await API.get(\"API_GATEWAY_NEW\", \"/shop/get_plan\");\r\n    const balance_used = Number(planResponse.balance_used);\r\n    setCurrentPlan(\r\n      balance_used === 0\r\n        ? 0\r\n        : plans.findIndex(\r\n            ({ real_price }) =>\r\n              applyDiscount(real_price).toString() ===\r\n              (balance_used + applyDiscount(getBasePrice())).toFixed(2)\r\n          )\r\n    );\r\n    setPlan({\r\n      ...planResponse,\r\n      balance_used: Number(planResponse.balance_used),\r\n    });\r\n    setLoading(false);\r\n  };\r\n\r\n  useEffect(() => {\r\n    getPlan();\r\n  }, []);\r\n\r\n  return (\r\n    <Page background=\"white\" header={{ title: \"Your Plan\" }}>\r\n      {loading && (\r\n        <>\r\n          <Spinner />\r\n          <Loading />\r\n        </>\r\n      )}\r\n      {!loading && plan && (\r\n        <>\r\n          <div className={classNames(\"mb-4 rounded bg-white mx-auto w-1/2\")}>\r\n            <div\r\n              className={classNames(\r\n                \"flex items-start  border-b p-3 font-bold text-sm\"\r\n              )}\r\n            >\r\n              <label className={classNames(\"flex-1 capitalize text-gray-600\")}>\r\n                Current Plan\r\n              </label>\r\n              <div className={classNames(\"w-40 text-gray-700\")}>\r\n                <p>{plans[currentPlan]?.description}</p>\r\n              </div>\r\n            </div>\r\n            <div\r\n              className={classNames(\r\n                \"flex items-start  border-b p-3 font-bold text-sm\"\r\n              )}\r\n            >\r\n              <label className={classNames(\"flex-1 capitalize text-gray-600\")}>\r\n                Amount To Be Charged\r\n              </label>\r\n              <div className={classNames(\"w-40 text-gray-700\")}>\r\n                <p\r\n                  dangerouslySetInnerHTML={{\r\n                    __html: `$${(\r\n                      plan.balance_used + applyDiscount(getBasePrice())\r\n                    ).toFixed(2)}${\r\n                      // plan.balance_used > 0\r\n                      // \t? ` <span class='mu-text-xs mu-text-gray-500'>(${plans[currentPlan].description})</span>`\r\n                      // \t: ''\r\n                      \"\"\r\n                    }`,\r\n                  }}\r\n                />\r\n              </div>\r\n            </div>\r\n            <div\r\n              className={classNames(\r\n                \"flex items-center  border-b p-3 font-bold text-sm\"\r\n              )}\r\n            >\r\n              <label className={classNames(\"flex-1 capitalize text-gray-600\")}>\r\n                Status\r\n              </label>\r\n              <div className={classNames(\"w-40 text-gray-700\")}>\r\n                <p>{plan.status}</p>\r\n              </div>\r\n            </div>\r\n            <div\r\n              className={classNames(\r\n                \"flex items-center  border-b p-3 font-bold text-sm\"\r\n              )}\r\n            >\r\n              <label className={classNames(\"flex-1 capitalize text-gray-600\")}>\r\n                Billing Date\r\n              </label>\r\n              <div className={classNames(\"w-40 text-gray-700\")}>\r\n                <p>\r\n                  {plan.billing_on\r\n                    ? moment(plan.billing_on).format(\"MMM Do YYYY\")\r\n                    : \"Not Set\"}\r\n                </p>\r\n              </div>\r\n            </div>\r\n            <div\r\n              className={classNames(\r\n                \"flex items-center   p-3 font-bold text-sm\"\r\n              )}\r\n            >\r\n              <label className={classNames(\"flex-1 capitalize text-gray-600\")}>\r\n                Transactions This Month\r\n              </label>\r\n              <div className={classNames(\"w-40 text-gray-700\")}>\r\n                <p>{shop.transactions}</p>\r\n              </div>\r\n            </div>\r\n          </div>\r\n          <div className={classNames(\"flex-center p-3 mx-auto w-1/2\")}>\r\n            <a\r\n              className={classNames(\r\n                \"font-bold text-sm text-blue-500 hover:underline\"\r\n              )}\r\n              href=\"https://monsterapps.crisp.help/en/article/pricing-and-billing-charges-48yd1o/\"\r\n              target=\"_blank\"\r\n            >\r\n              Visit our pricing page for more information\r\n            </a>\r\n          </div>\r\n        </>\r\n      )}\r\n    </Page>\r\n  );\r\n};\r\n\r\nexport default PlanScreen;\r\n","import React, { useContext, Fragment, useEffect, useRef, useState } from 'react';\r\nimport { STICKY_CART_OPTIONS } from 'lib/globals';\r\nimport { useMutation } from '@apollo/react-hooks';\r\nimport PageScrollContext from 'context/PageScrollContext';\r\nimport md5 from 'crypto-js/md5';\r\nimport {\r\n    Page,\r\n    Range,\r\n    ColorPicker,\r\n    FormGroup,\r\n    Input,\r\n    FormControl,\r\n    Dropdown,\r\n    Switch,\r\n    CustomText,\r\n    Icon,\r\n    Button,\r\n    Alert,\r\n    VideoModal,\r\n    RichEditor,\r\n    ButtonSelect,\r\n    MultiCurrencyModeAlerts\r\n} from 'components';\r\nimport PreviewContext from 'context/PreviewContext';\r\nimport ShopContext from 'context/ShopContext';\r\nimport UserContext from 'context/UserContext';\r\nimport { GOOGLE_FONTS, CAMPAIGN_TYPES, SHOP_DEFAULT_SETTINGS, BREAK_POINTS } from 'lib/globals';\r\nimport { SAVE_SHOP_SETTINGS, UPDATE_SHOP_PROP } from 'lib/mutations';\r\nimport ExtraModules from 'screens/campaigns/settings/ExtraModules/index';\r\nimport CheckoutButton from 'screens/campaigns/settings/ExtraModules/CheckoutButton';\r\nimport { Loading, Toast, Modal } from '@shopify/app-bridge-react';\r\nimport { ShopConstraints } from 'Constraints';\r\nimport removeTypeName, { removeByType } from 'lib/removeTypeName';\r\nimport { Run } from 'lib/validate';\r\nimport { GET_SHOP_SETTINGS } from 'Queries';\r\nimport { PageHeader } from 'components/Page';\r\nimport { API, graphqlOperation } from 'aws-amplify';\r\nimport { APP_DEV } from 'aws-exports';\r\nimport Axios from 'axios';\r\nimport { Manager, Reference, Popper } from 'react-popper';\r\nimport Checkbox from 'react-simple-checkbox';\r\nimport styles from 'styles/cart_screen.module.scss';\r\nimport { useTransition } from 'react-spring';\r\nimport _ from 'lodash';\r\nimport classNames from 'lib/classNames';\r\nimport useReactRouter from 'use-react-router';\r\nimport { SET_ALL } from 'reducers/SetItemReducer';\r\nimport useRefState from 'hooks/useRefState';\r\n\r\nconst StickyCartSettings = (props) => {\r\n    const { setIsStickyActVariantFocused } = useContext(PreviewContext);\r\n    const stickyAlert = useRef(null);\r\n    const { history, location } = useReactRouter();\r\n    const [scrollTop, setScrollTop, scrollTopRef] = useRefState();\r\n    const [cartActivateLoading, setCartActivateLoading] = useState(false);\r\n    const [videoOne, setVideoOne] = useState(false);\r\n    const [googleFonts, setGoogleFonts] = useState([]);\r\n    const [hideTopBar, setHideTopBar] = useState(false);\r\n    const [showConfirmActivate, setShowConfirmActivate] = useState(false);\r\n    const [campaign_preview_visible, setCampaign_preview_visible] = useState(false);\r\n    const campaign_preview_content_ref = useRef(null);\r\n    const shopContext = useContext(ShopContext);\r\n    const user = useContext(UserContext);\r\n    const { state, discard, validationErrors, setValidationErrors, dispatch, setItem } =\r\n        shopContext;\r\n\r\n    const { sticky_cart } = state;\r\n\r\n    const filterSettings = (settings) => {\r\n        return removeByType(\r\n            removeTypeName(\r\n                Object.fromEntries(\r\n                    Object.entries(settings).filter(([key]) => !['settingsSaved'].includes(key))\r\n                )\r\n            ),\r\n            (v) => v !== '' && v !== null\r\n        );\r\n    };\r\n\r\n    let [saveShopSettings, { data, error, loading }] = useMutation(SAVE_SHOP_SETTINGS, {\r\n        refetchQueries: [\r\n            {\r\n                query: GET_SHOP_SETTINGS,\r\n                variables: {\r\n                    userId: user.attributes.website\r\n                }\r\n            }\r\n        ]\r\n    });\r\n    const transitions = useTransition(\r\n        !_.isEqual(state.original_settings, state.settings) && !hideTopBar,\r\n        null,\r\n        {\r\n            from: { position: 'absolute', opacity: 0 },\r\n            enter: { opacity: 1 },\r\n            leave: { opacity: 0 },\r\n            config: {\r\n                duration: 300\r\n            }\r\n        }\r\n    );\r\n    const validate = (state, specific = []) =>\r\n        Run(state, specific, {\r\n            errors: validationErrors,\r\n            setErrors: setValidationErrors,\r\n            constraints: ShopConstraints\r\n        });\r\n    const save = (assign = {}, checkRTL = true) => {\r\n        // console.log(\"state\")\r\n        // console.log(state.settings)\r\n        // return\r\n        if (validate(state)) return;\r\n        if (\r\n            checkRTL &&\r\n            Object.keys(state.original_settings || {}).length &&\r\n            state.settings.rtl !== state.original_settings.rtl\r\n        ) {\r\n            console.log(\r\n                'updating theme',\r\n                state.settings.rtl,\r\n                state.original_settings.rtl,\r\n                state.settings.active\r\n            );\r\n            return activateCart(state.settings.active, true, state.settings.rtl);\r\n        }\r\n        saveShopSettings({\r\n            variables: {\r\n                id: user.attributes.website,\r\n                input: filterSettings(Object.assign(state.settings, assign))\r\n            }\r\n        });\r\n    };\r\n\r\n    const activateCart = async (active, confirmed = false, rtl = null) => {\r\n        if (\r\n            active &&\r\n            !confirmed &&\r\n            !state.settingsSaved &&\r\n            _.isEqual(SHOP_DEFAULT_SETTINGS, state.settings)\r\n        ) {\r\n            return setShowConfirmActivate(true);\r\n        }\r\n        // setCartActivateLoading(true);\r\n        // const { success } = await API.post(\"API_GATEWAY_NEW\", \"/cart/activate\", {\r\n        //   body: { active, rtl: rtl === null ? state.settings.rtl : rtl }\r\n        // });\r\n        // setCartActivateLoading(false);\r\n        return save({ active }, false);\r\n    };\r\n\r\n    const handleOutSideClick = (event) => {\r\n        if (!campaign_preview_content_ref.current) return;\r\n        else if (campaign_preview_content_ref.current.contains(event.target)) return;\r\n        setCampaign_preview_visible(false);\r\n    };\r\n\r\n    useEffect(() => {\r\n        if (campaign_preview_visible)\r\n            document.addEventListener('mousedown', handleOutSideClick, false);\r\n        else document.removeEventListener('mousedown', handleOutSideClick, false);\r\n        return () => {\r\n            document.removeEventListener('mousedown', handleOutSideClick, false);\r\n        };\r\n    }, [campaign_preview_visible]);\r\n\r\n    useEffect(() => {\r\n        async function getGoogleFonts() {\r\n            const { data } = await Axios.get(\r\n                `https://www.googleapis.com/webfonts/v1/webfonts?sort=popularity&key=AIzaSyCYLq50twmAe1_7jITZuehrERZWOjNqBCY`\r\n            );\r\n            setGoogleFonts(\r\n                data.items.map(({ family, variants }) => ({\r\n                    label: family,\r\n                    value: `${family}:${variants.join()}`\r\n                }))\r\n            );\r\n        }\r\n        getGoogleFonts();\r\n    }, []);\r\n\r\n    useEffect(() => {\r\n        setHideTopBar(!!data);\r\n        if (APP_DEV) setTimeout(() => setHideTopBar(false), 1500);\r\n    }, [data]);\r\n\r\n    return (\r\n        <Page\r\n            background=\"none\"\r\n            getScrollTop={({ scrollTop }) => {\r\n                setScrollTop(scrollTop);\r\n            }}\r\n            padding={0}\r\n            header={{\r\n                title: 'Settings',\r\n                actions: []\r\n            }}\r\n            TopContent={{\r\n                transitions,\r\n                render: () => (\r\n                    <Alert\r\n                        type=\"save_settings\"\r\n                        title=\"unsaved changes\"\r\n                        borderPosition=\"none\"\r\n                        paddingX=\"px-6\"\r\n                        actions={[\r\n                            {\r\n                                text: 'Discard',\r\n                                type: 'secondary',\r\n                                loading: false,\r\n                                onClick: () => discard()\r\n                            },\r\n                            {\r\n                                text: 'Save',\r\n                                type: 'primary',\r\n                                loading: loading || cartActivateLoading,\r\n                                onClick: () => save()\r\n                            }\r\n                        ]}\r\n                    />\r\n                )\r\n            }}\r\n        >\r\n            <Fragment>\r\n                {data && (\r\n                    <Toast\r\n                        content=\"Cart settings has been saved\"\r\n                        duration={3000}\r\n                        onDismiss={() => {\r\n                            setHideTopBar(false);\r\n                        }}\r\n                    />\r\n                )}\r\n                {(loading || cartActivateLoading) && <Loading />}\r\n                <Alert\r\n                    type={state.settings.sticky_cart.isActive ? 'success' : 'warning'}\r\n                    icon={\r\n                        state.settings.sticky_cart.isActive ? 'check-circle' : 'exclamation-circle'\r\n                    }\r\n                    title=\"Sticky Add To Cart\"\r\n                    withSwitch={{\r\n                        context: [shopContext, 'settings.sticky_cart.isActive']\r\n                    }}\r\n                    className=\"z-5\"\r\n                >\r\n                    <p>\r\n                        {' '}\r\n                        Keep Your Add To Cart Button Always Visible To Increase The Chances Of It\r\n                        Being Pressed.\r\n                    </p>\r\n                </Alert>\r\n\r\n                <Modal\r\n                    title=\"Activating custom cart\"\r\n                    message=\"You're about to activate the cart with the default settings\"\r\n                    open={!!showConfirmActivate}\r\n                    primaryAction={{\r\n                        content: 'Activate',\r\n                        destructive: true,\r\n                        onAction: () => {\r\n                            setShowConfirmActivate(false);\r\n                            activateCart(true, true);\r\n                        }\r\n                    }}\r\n                    secondaryActions={[\r\n                        {\r\n                            content: 'Cancel',\r\n                            onAction: () => {\r\n                                setShowConfirmActivate(false);\r\n                                discard();\r\n                            }\r\n                        }\r\n                    ]}\r\n                />\r\n                <FormGroup\r\n                    label=\"Button Settings\"\r\n                    className=\"settings-row\"\r\n                    info=\"Setup the color and look of your sticky cart button\"\r\n                >\r\n                    <FormControl label=\"Button Style\">\r\n                        <Dropdown\r\n                            options={STICKY_CART_OPTIONS.btnStyles}\r\n                            first\r\n                            BindToContext={[shopContext, 'settings.sticky_cart.btn_style']}\r\n                        />\r\n                    </FormControl>\r\n                    <FormControl label=\"Button Text\">\r\n                        <Input BindToContext={[shopContext, 'settings.sticky_cart.btn_text']} />\r\n                    </FormControl>\r\n                    <FormControl label=\"Unavailable Text\">\r\n                        <Input\r\n                            // onFocus={() => setIsUnavailableFocused(true)}\r\n                            // onBlur={() => setIsUnavailableFocused(false)}\r\n                            BindToContext={[\r\n                                shopContext,\r\n                                'settings.sticky_cart.btn_text_unavailable'\r\n                            ]}\r\n                        />\r\n                    </FormControl>\r\n                    <FormControl label=\"Button Colors\">\r\n                        <div className=\"row three-columns\">\r\n                            <ColorPicker\r\n                                text=\"Button Color\"\r\n                                colorType=\"hex\"\r\n                                BindToContext={[shopContext, 'settings.sticky_cart.btn_color']}\r\n                            />\r\n                            <ColorPicker\r\n                                text=\"text Color\"\r\n                                colorType=\"hex\"\r\n                                BindToContext={[shopContext, 'settings.sticky_cart.txt_color']}\r\n                            />\r\n                            <ColorPicker\r\n                                text=\"background Color\"\r\n                                colorType=\"hex\"\r\n                                BindToContext={[\r\n                                    shopContext,\r\n                                    'settings.sticky_cart.background_color'\r\n                                ]}\r\n                            />\r\n                        </div>\r\n                    </FormControl>\r\n                </FormGroup>\r\n                {/* //----------------------------------- */}\r\n\r\n                <FormGroup label=\"Desktop Settings\" info=\"Set settings for desktop sticky cart\">\r\n                    <FormControl\r\n                        label=\"Activate Sticky Cart\"\r\n                        withSwitch={[shopContext, 'settings.sticky_cart.desktop_active']}\r\n                    >\r\n                        {' '}\r\n                        <span></span>\r\n                    </FormControl>\r\n                    <FormControl\r\n                        label=\"Show Variants Selector\"\r\n                        info=\"When turned off variants are selected from product\"\r\n                        withSwitch={[shopContext, 'settings.sticky_cart.desktop_show_variants']}\r\n                    >\r\n                        {' '}\r\n                        <span></span>\r\n                    </FormControl>\r\n                    <FormControl\r\n                        label=\"Show Quantity Selector\"\r\n                        withSwitch={[shopContext, 'settings.sticky_cart.desktop_show_quantity']}\r\n                    >\r\n                        {' '}\r\n                        <span></span>\r\n                    </FormControl>\r\n                    <CustomText\r\n                        context={shopContext}\r\n                        label=\"Quantity text\"\r\n                        path=\"settings.sticky_cart.desktop_quantity\"\r\n                        hasNumber={false}\r\n                        // hasWeight=\"700\"\r\n                    />\r\n                    <FormControl\r\n                        label=\"Show Product name\"\r\n                        withSwitch={[shopContext, 'settings.sticky_cart.desktop_show_product_name']}\r\n                    >\r\n                        {' '}\r\n                        <span></span>\r\n                    </FormControl>\r\n                    <FormControl\r\n                        label=\"Product Image Preview\"\r\n                        withSwitch={[shopContext, 'settings.sticky_cart.desktop_product_preview']}\r\n                    >\r\n                        {' '}\r\n                        <span></span>\r\n                    </FormControl>\r\n                    <FormControl\r\n                        label=\"Show compared price\"\r\n                        withSwitch={[\r\n                            shopContext,\r\n                            'settings.sticky_cart.desktop_show_compared_price'\r\n                        ]}\r\n                    >\r\n                        {' '}\r\n                        <span></span>\r\n                    </FormControl>\r\n                    <FormControl label=\"Desktop Visibilty\">\r\n                        <Dropdown\r\n                            options={STICKY_CART_OPTIONS.visibilityOptions}\r\n                            first\r\n                            BindToContext={[shopContext, 'settings.sticky_cart.desktop_visibility']}\r\n                        />\r\n                    </FormControl>\r\n                    <FormControl label=\"Desktop Location\">\r\n                        <Dropdown\r\n                            options={STICKY_CART_OPTIONS.btnPosition}\r\n                            first\r\n                            BindToContext={[shopContext, 'settings.sticky_cart.desktop_location']}\r\n                        />\r\n                    </FormControl>\r\n                </FormGroup>\r\n\r\n                {/* //----------------------------------- */}\r\n                <FormGroup label=\"Mobile Settings\" info=\"Set settings for mobile sticky cart\">\r\n                    <FormControl\r\n                        label=\"Activate Sticky Cart\"\r\n                        withSwitch={[shopContext, 'settings.sticky_cart.mobile_active']}\r\n                    >\r\n                        {' '}\r\n                        <span></span>\r\n                    </FormControl>\r\n                    <FormControl\r\n                        label=\"Show Variants Selector\"\r\n                        info=\"When turned off variants are selected from product\"\r\n                        withSwitch={[shopContext, 'settings.sticky_cart.mobile_show_variants']}\r\n                    >\r\n                        {' '}\r\n                        <span></span>\r\n                    </FormControl>\r\n                    <FormControl\r\n                        label=\"Show Quantity Selector\"\r\n                        withSwitch={[shopContext, 'settings.sticky_cart.mobile_show_quantity']}\r\n                    >\r\n                        {' '}\r\n                        <span></span>\r\n                    </FormControl>\r\n                    <CustomText\r\n                        context={shopContext}\r\n                        label=\"Quantity text\"\r\n                        path=\"settings.sticky_cart.mobile_quantity\"\r\n                        hasNumber={false}\r\n                        // hasWeight=\"700\"\r\n                    />\r\n                    <FormControl\r\n                        label=\"Show compared price\"\r\n                        withSwitch={[\r\n                            shopContext,\r\n                            'settings.sticky_cart.mobile_show_compared_price'\r\n                        ]}\r\n                    >\r\n                        {' '}\r\n                        <span></span>\r\n                    </FormControl>\r\n\r\n                    {/*New feature added*/}\r\n                    <FormControl\r\n                        label=\"Show product title\"\r\n                        withSwitch={[shopContext, 'settings.sticky_cart.mobile_show_title']}\r\n                    >\r\n                        {' '}\r\n                        <span></span>\r\n                    </FormControl>\r\n                    <FormControl\r\n                        label=\"Show product price\"\r\n                        withSwitch={[shopContext, 'settings.sticky_cart.mobile_show_price']}\r\n                    >\r\n                        {' '}\r\n                        <span></span>\r\n                    </FormControl>\r\n                    {/*---------*/}\r\n                    <FormControl label=\"Mobile Visibilty\">\r\n                        <Dropdown\r\n                            options={STICKY_CART_OPTIONS.visibilityOptions}\r\n                            first\r\n                            BindToContext={[shopContext, 'settings.sticky_cart.mobile_visibility']}\r\n                        />\r\n                    </FormControl>\r\n                    {state.settings.sticky_cart.mobile_show_variants && (\r\n                        <>\r\n                            <FormControl\r\n                                label=\"Customize Button text when variant available\"\r\n                                withSwitch={[\r\n                                    shopContext,\r\n                                    'settings.sticky_cart.show_btn_atc_txt_variant_active'\r\n                                ]}\r\n                            >\r\n                                <Input\r\n                                    disabled={\r\n                                        !state.settings.sticky_cart.show_btn_atc_txt_variant_active\r\n                                    }\r\n                                    onFocus={() => setIsStickyActVariantFocused(true)}\r\n                                    onBlur={() => setIsStickyActVariantFocused(false)}\r\n                                    BindToContext={[\r\n                                        shopContext,\r\n                                        'settings.sticky_cart.btn_atc_txt_variant_active'\r\n                                    ]}\r\n                                />\r\n                            </FormControl>\r\n                            <CustomText\r\n                                context={shopContext}\r\n                                label=\"Cart Name\"\r\n                                path=\"settings.sticky_cart.cart_name\"\r\n                                hasNumber={false}\r\n                                // hasWeight=\"700\"\r\n                            />\r\n                            <FormControl label=\"Button Text on variant picker active\">\r\n                                <Input\r\n                                    BindToContext={[\r\n                                        shopContext,\r\n                                        'settings.sticky_cart.btn_text_variant_active'\r\n                                    ]}\r\n                                />\r\n                            </FormControl>\r\n                        </>\r\n                    )}\r\n\r\n                    <FormControl label=\"Mobile Location\">\r\n                        <Dropdown\r\n                            options={STICKY_CART_OPTIONS.btnPosition}\r\n                            first\r\n                            BindToContext={[shopContext, 'settings.sticky_cart.mobile_location']}\r\n                        />\r\n                    </FormControl>\r\n                    <FormControl>\r\n                        <CustomText\r\n                            context={shopContext}\r\n                            label=\"ATC height\"\r\n                            path={`settings.sticky_cart.mobile_atc_height`}\r\n                            hasColor={false}\r\n                            hasNumber={false}\r\n                            hasBU={false}\r\n                            type=\"number\"\r\n                            icon={{ char: 'PX' }}\r\n                            // colorType=\"hex\"\r\n                            step=\"1\"\r\n                        />\r\n                    </FormControl>\r\n                </FormGroup>\r\n                <br />\r\n                <br />\r\n                <br />\r\n                <br />\r\n                <br />\r\n            </Fragment>\r\n        </Page>\r\n    );\r\n};\r\n\r\nexport default StickyCartSettings;\r\n","import { Spinner } from \"components\";\r\n\r\nimport React, { useContext, useEffect } from \"react\";\r\nimport { useHistory, useParams } from \"react-router\";\r\nimport Axios from \"axios\";\r\nimport { API_GATEWAY2 } from \"aws-exports\";\r\nimport ShopContext from \"context/ShopContext\";\r\n\r\nfunction addDays (date, days) {\r\n  const copy = new Date(Number(date));\r\n  copy.setDate(date.getDate() + days);\r\n  return copy.getTime();\r\n}\r\n\r\nexport default function InvitationScreen (props) {\r\n  const history = useHistory();\r\n  const { id } = useParams();\r\n  const { AppLocalStorage } = useContext(ShopContext)\r\n  const fetchInvitation = async () => {\r\n    try {\r\n      //HIT API\r\n      const { data } = await Axios({\r\n        method: \"get\",\r\n        url: `${API_GATEWAY2}/invitations`,\r\n        params: {\r\n          id\r\n        }\r\n      });\r\n      if (data.redirect) {\r\n        AppLocalStorage.setItem(\r\n          \"invitation_id\",\r\n          JSON.stringify({\r\n            id,\r\n            expiry: addDays(new Date(), 7)\r\n          })\r\n        );\r\n        window.location.href = `${data.redirect.indexOf(\"https://\") === 0 ? \"\" : \"https://\"\r\n          }${data.redirect}`;\r\n      } else {\r\n        throw new Error(\"invitation not found\");\r\n      }\r\n    } catch (error) {\r\n      history.push(\"/login\");\r\n    }\r\n  };\r\n\r\n  useEffect(() => {\r\n    // get the invitation\r\n    fetchInvitation();\r\n  }, []);\r\n\r\n  return <Spinner text=\"Please Wait\" />;\r\n}\r\n","import React, { useState, useEffect } from \"react\";\r\nimport { API } from \"aws-amplify\";\r\nimport { AUTH_COOKIE_DOMAIN, APP_DEV } from \"aws-exports\";\r\nimport classNames from \"lib/classNames\";\r\nimport _ from \"lodash\";\r\nimport ContentLoader from \"react-content-loader\";\r\nimport copy from \"copy-to-clipboard\";\r\nimport { Toast } from \"@shopify/app-bridge-react\";\r\n\r\nimport { Input, Button, Page, Alert, Icon, Spinner } from \"components\";\r\nimport {\r\n  faEdit,\r\n  faCopy,\r\n  faSave,\r\n  faUndo,\r\n  fabac\r\n} from \"@fortawesome/fontawesome-pro-solid\";\r\n\r\nconst Affiliation = () => {\r\n  const [settings, setSettings] = useState({});\r\n  const [aff_code, setCode] = useState(\"\");\r\n  const [eventsList, setEventsList] = useState();\r\n  const [stats, setStats] = useState({});\r\n  const [isEditingCode, setIsEditingCode] = useState(false);\r\n  const [isEditingPaypal, setIsEditingPaypal] = useState(false);\r\n  const [error, setError] = useState(false);\r\n  const [message, setMessage] = useState();\r\n  // const [paypal, setPaypal] = useState(false)\r\n  const getAffiliationSettings = async () => {\r\n    const {\r\n      data,\r\n      settings: responseSettings,\r\n      code: aff_code\r\n    } = await API.get(\"API_GATEWAY_NEW\", \"/aff/settings\");\r\n    console.log(data);\r\n    console.log(responseSettings);\r\n    setCode(aff_code);\r\n    setSettings({...responseSettings, ...data});\r\n  };\r\n  const handleSubmitSettings = async (settingsTosave, codeTosave) => {\r\n    return await API.post(\"API_GATEWAY_NEW\", \"/aff/settings\", {\r\n      body: {\r\n        settings: settingsTosave,\r\n        aff_code: codeTosave\r\n      }\r\n    });\r\n  };\r\n\r\n  const getEvents = async () => {\r\n    const { stats, data } = await API.get(\"API_GATEWAY_NEW\", \"/aff/events\");\r\n    setEventsList(data);\r\n    setStats(stats);\r\n  };\r\n\r\n  const handlePaypalEdit = async (paypal_email) => {\r\n    if (/^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,3})+$/.test(paypal_email)) {\r\n      await handleSubmitSettings({ ...settings, paypal_email }, aff_code);\r\n      setSettings({ ...settings, paypal_email });\r\n      setIsEditingPaypal(false);\r\n      setMessage(\"Settings has been saved\");\r\n    } else {\r\n      setError(\"Invalid email\");\r\n    }\r\n  };\r\n\r\n  const handleCodeEdit = async (code) => {\r\n    const { error: responseError } = await handleSubmitSettings(settings, code);\r\n    if (responseError) {\r\n      setError(responseError);\r\n    } else {\r\n      setCode(code);\r\n      setIsEditingCode(false);\r\n      setMessage(\"Settings has been saved\");\r\n    }\r\n  };\r\n\r\n  const handleLinkCopy = (link) => {\r\n    copy(link);\r\n    setMessage(\"Copied !\");\r\n  };\r\n\r\n  useEffect(() => {\r\n    getAffiliationSettings();\r\n    getEvents();\r\n  }, []);\r\n\r\n  return (\r\n    <Page background=\"none\" padding={0}>\r\n      <>\r\n        {error && (\r\n          <Toast\r\n            content={error}\r\n            duration={3000}\r\n            error\r\n            onDismiss={() => setError()}\r\n          />\r\n        )}\r\n        {message && (\r\n          <Toast\r\n            content={message}\r\n            duration={3000}\r\n            onDismiss={() => setMessage()}\r\n          />\r\n        )}\r\n        <div className={classNames(\"flex justify-between\")}>\r\n          <div\r\n            className={classNames(\r\n              \" capitalize text-gray-600 text-2xl font-bold mb-6 \"\r\n            )}\r\n          >\r\n            Referral Program\r\n          </div>\r\n        </div>\r\n        <div className={classNames(\"bg-white  my-4 p-4\")}>\r\n          <div className={classNames(\" text-lg font-bold text-gray-600\")}>\r\n            Share Link\r\n          </div>\r\n          <p className={classNames(\"text-sm text-gray-500\")}>\r\n            {`Earn ${settings?.commission || \"15\"}% + Friend saves ${settings?.discount || \"5\"}% = Everyone is HAPPY 🥳 `}\r\n          </p>\r\n          <div className={classNames(\"flex my-2 items-center justify-center\")}>\r\n            {!aff_code ? (\r\n              <Spinner />\r\n            ) : !isEditingCode ? (\r\n              <ShowCode {...{ aff_code, setIsEditingCode, handleLinkCopy }} />\r\n            ) : (\r\n              <EditCode {...{ aff_code, setIsEditingCode, handleCodeEdit }} />\r\n            )}\r\n          </div>\r\n          <div className={classNames(\" text-lg font-bold text-gray-600\")}>\r\n            Share Coupon Code\r\n          </div>\r\n          <p className={classNames(\"text-sm text-gray-500\")}> Enter coupon code during MonsterUpsells installation. </p>\r\n          <div className={classNames(\"flex my-2 items-center justify-center\")}>\r\n            <ShowCoupon {...{ aff_code, setIsEditingCode, handleLinkCopy }} />\r\n          </div>\r\n          <p className={classNames(\"text-sm text-gray-500\")}>\r\n            Earn{\" \"}\r\n            <span className={classNames(\"text-blue-500 font-bold\")}>\r\n              {settings?.commission || \"15\"}% of all revenue for life\r\n            </span>{\" \"}\r\n            from stores registered through this link.{\" \"}\r\n          </p>\r\n          <p className={classNames(\"text-sm text-gray-500\")}>\r\n            Reward any paying store{\" \"}\r\n            <span className={classNames(\"text-blue-500 font-bold\")}>\r\n              {\" \"}\r\n              {settings?.discount || \"5\"}% off Monsterupsells for life\r\n            </span>{\" \"}\r\n            within 30 days of link click.{\" \"}\r\n          </p>\r\n        </div>\r\n        <div className={classNames(\"bg-white  my-4 p-4\")}>\r\n          <div className={classNames(\" text-lg font-bold text-gray-600\")}>\r\n            Payment method{\" \"}\r\n          </div>\r\n          <div className={classNames(\"flex my-2 items-center justify-center\")}>\r\n            {!settings?.hasOwnProperty(\"paypal_email\") ? (\r\n              <Spinner />\r\n            ) : !isEditingPaypal ? (\r\n              <ShowPaypal\r\n                {...{ paypal: settings.paypal_email, setIsEditingPaypal }}\r\n              />\r\n            ) : (\r\n              <EditPaypal\r\n                {...{\r\n                  paypal: settings.paypal_email,\r\n                  setIsEditingPaypal,\r\n                  handlePaypalEdit\r\n                }}\r\n              />\r\n            )}\r\n          </div>\r\n\r\n          <p className={classNames(\"text-sm text-gray-500\")}>\r\n            {\" \"}\r\n            Payouts will be sent monthly. Minimum payment $50{\" \"}\r\n          </p>\r\n        </div>\r\n\r\n        <div\r\n          className={classNames(\r\n            \"flex-1 capitalize text-gray-600 text-2xl font-bold mt-6\"\r\n          )}\r\n        >\r\n          Statics\r\n        </div>\r\n\r\n        <div\r\n          className={classNames(\r\n            \"col-span-1 lg:col-span-3 grid grid-cols-1 gap-8 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 py-4\"\r\n          )}\r\n        >\r\n          <StateCard title=\"Clicks\" value={stats.views} />\r\n          <StateCard\r\n            title=\"Active subscribers\"\r\n            value={stats.active_referrals}\r\n          />\r\n          <StateCard title=\"Accumilated Commissions\" value={\"$0\"} />\r\n          <StateCard title=\"Paid Out Commissions\" value={\"$0\"} />\r\n        </div>\r\n        <div className={classNames(\" pb-4 \")}>\r\n          <div\r\n            className={classNames(\"bg-white  my-4 p-4 border-b \", {\r\n              \"h-60\": !eventsList || !eventsList.length\r\n            })}\r\n          >\r\n            <div className={classNames(\" text-lg font-bold text-gray-600\")}>\r\n              Referred Stores{\" \"}\r\n            </div>\r\n            <div\r\n              className={classNames(\r\n                \"flex text-gray-600 text-lg font-bold border-b mt-6 \"\r\n              )}\r\n            >\r\n              <div className={classNames(\"flex-1\")}>Store name</div>\r\n              {/* <div></div> */}\r\n              <div className={classNames(\"flex-1\")}>Total earned</div>\r\n            </div>\r\n            {!eventsList ? (\r\n              <Spinner />\r\n            ) : (\r\n              eventsList.map((e, index) => {\r\n                return (\r\n                  <div\r\n                    className={classNames(\r\n                      \"flex text-gray-500  font-bold border-b py-2 \"\r\n                    )}\r\n                    key={index}\r\n                  >\r\n                    <div className={classNames(\"flex-1\")}>{e.referral} </div>\r\n                    <div className={classNames(\"flex-1\")}>${e.earnings} </div>\r\n                  </div>\r\n                );\r\n              })\r\n            )}\r\n          </div>\r\n        </div>\r\n        <Alert\r\n          type=\"success\"\r\n          // icon= {state.settings.sticky_cart.isActive ? 'check-circle' : 'exclamation-circle'}\r\n          title=\"Want to supply your audience with unique benefits or join our agency partner ?\"\r\n          className=\"z-5\"\r\n        >\r\n          <p>\r\n            {\" \"}\r\n            Please contact our team at{\" \"}\r\n            <a\r\n              href=\"mailto:support@monsterapps.shop\"\r\n              target=\"_blank\"\r\n              className={classNames(\"text-blue-500 font-bold\")}\r\n            >\r\n              support@monsterapps.shop\r\n            </a>\r\n          </p>\r\n        </Alert>\r\n        <div></div>\r\n        <div></div>\r\n        <div></div>\r\n        <div></div>\r\n        <div></div>\r\n        <div></div>\r\n      </>\r\n    </Page>\r\n  );\r\n};\r\n\r\nconst ShowCode = ({ aff_code, setIsEditingCode, handleLinkCopy }) => {\r\n  const link = APP_DEV\r\n    ? `${AUTH_COOKIE_DOMAIN}/ref/${aff_code}`\r\n    : `https://monsterupsells.com/ref/${aff_code}`;\r\n  return (\r\n    <>\r\n      <Input disabled={true} disabledBgColor=\"bg-gray-100\" value={link} />\r\n      <div\r\n        className={classNames(\r\n          \"h-full flex p-2 items-center justify-center text-blue-500 mx-1 cursor-pointer\"\r\n        )}\r\n        onClick={() => handleLinkCopy(link)}\r\n      >\r\n        <Icon icon={faCopy} size=\"lg\" />\r\n      </div>\r\n      <div\r\n        className={classNames(\r\n          \"h-full flex p-2 items-center justify-center text-blue-500 mx-1 cursor-pointer\"\r\n        )}\r\n        onClick={() => setIsEditingCode(true)}\r\n      >\r\n        <Icon icon={faEdit} size=\"lg\" />\r\n      </div>\r\n    </>\r\n  );\r\n};\r\nconst ShowCoupon = ({ aff_code , handleLinkCopy }) => { \r\n  return (\r\n    <>\r\n      <Input disabled={true} disabledBgColor=\"bg-gray-100\" value={aff_code} />\r\n      <div\r\n        className={classNames(\r\n          \"h-full flex p-2 items-center justify-center text-blue-500 mx-1 cursor-pointer\"\r\n        )}\r\n        onClick={() => handleLinkCopy(aff_code)}\r\n      >\r\n        <Icon icon={faCopy} size=\"lg\" />\r\n      </div>\r\n    </>\r\n  );\r\n};\r\n\r\nconst EditCode = ({ aff_code, setIsEditingCode, handleCodeEdit }) => {\r\n  const [code, setCode] = useState(aff_code);\r\n\r\n  const handleLinkEdit = () => {\r\n    handleCodeEdit(code);\r\n  };\r\n\r\n  const link = APP_DEV\r\n    ? `${AUTH_COOKIE_DOMAIN}/ref/`\r\n    : `https://monsterupsells.com/ref/`;\r\n  return (\r\n    <div className={classNames(\"flex flex-1  items-center justify-center\")}>\r\n      <div className={classNames(\"text-gray-600 ml-2 mr-1\")}>{link}</div>\r\n      <Input value={code} onChange={setCode} />\r\n      <div\r\n        className={classNames(\r\n          \"h-full flex p-2 items-center justify-center text-blue-500 mx-1 cursor-pointer\"\r\n        )}\r\n        onClick={() => setIsEditingCode(false)}\r\n      >\r\n        <Icon icon={faUndo} size=\"lg\" />\r\n      </div>\r\n      <div\r\n        className={classNames(\r\n          \"h-full flex p-2 items-center justify-center text-blue-500 mx-1 cursor-pointer\"\r\n        )}\r\n        onClick={handleLinkEdit}\r\n      >\r\n        <Icon icon={faSave} size=\"lg\" />\r\n      </div>\r\n    </div>\r\n  );\r\n};\r\n\r\nconst ShowPaypal = ({ paypal, setIsEditingPaypal }) => {\r\n  return (\r\n    <div className={classNames(\"flex flex-1  items-center justify-center\")}>\r\n      <Input disabled disabledBgColor=\"bg-gray-100\" value={paypal} />\r\n      <div\r\n        className={classNames(\r\n          \"h-full flex p-2 items-center justify-center text-blue-500 mx-1 cursor-pointer\"\r\n        )}\r\n        onClick={() => setIsEditingPaypal(true)}\r\n      >\r\n        <Icon icon={faEdit} size=\"lg\" />\r\n      </div>\r\n    </div>\r\n  );\r\n};\r\n\r\nconst EditPaypal = ({ paypal, setIsEditingPaypal, handlePaypalEdit }) => {\r\n  const [localPaypal, setLocalPaypal] = useState(paypal);\r\n  return (\r\n    <div className={classNames(\"flex flex-1  items-center justify-center\")}>\r\n      <Input\r\n        disabledBgColor=\"bg-gray-100\"\r\n        value={localPaypal}\r\n        onChange={setLocalPaypal}\r\n      />\r\n      <div\r\n        className={classNames(\r\n          \"h-full flex p-2 items-center justify-center text-blue-500 mx-1 cursor-pointer\"\r\n        )}\r\n        onClick={() => setIsEditingPaypal(false)}\r\n      >\r\n        <Icon icon={faUndo} size=\"lg\" />\r\n      </div>\r\n      <div\r\n        className={classNames(\r\n          \"h-full flex p-2 items-center justify-center text-blue-500 mx-1 cursor-pointer\"\r\n        )}\r\n        onClick={() => handlePaypalEdit(localPaypal)}\r\n      >\r\n        <Icon icon={faSave} size=\"lg\" />\r\n      </div>\r\n    </div>\r\n  );\r\n};\r\n\r\nconst StateCard = (props) => {\r\n  const { title, value, onClick, active } = props;\r\n  return (\r\n    <div\r\n      className={classNames(\r\n        \"shadow flex-1 bg-white rounded p-5 text-gray-600 cursor-pointer\",\r\n        {\r\n          \"text-blue-500 ring\": active\r\n        }\r\n      )}\r\n      {...{ onClick, active }}\r\n    >\r\n      {value === null && (\r\n        <ContentLoader>\r\n          <rect x=\"0\" y=\"0\" rx=\"4\" ry=\"4\" width=\"60%\" height=\"30\" />\r\n          <rect x=\"0\" y=\"60\" rx=\"4\" ry=\"4\" width=\"30%\" height=\"30\" />\r\n        </ContentLoader>\r\n      )}\r\n      <h3 className={classNames(\"font-bold mb-3\")}>{_.startCase(title)}</h3>\r\n      <h1 className={classNames(\"font-bold text-4xl\")}>{value}</h1>\r\n    </div>\r\n  );\r\n};\r\n\r\nexport default Affiliation;\r\n","import React, { useContext, useEffect } from \"react\";\r\nimport { useHistory, useParams } from \"react-router\";\r\nimport { API } from \"aws-amplify\";\r\nimport { Spinner } from \"components\";\r\nimport { AUTH_COOKIE_DOMAIN } from \"aws-exports\";\r\nimport Axios from \"axios\";\r\nimport { API_GATEWAY_NEW, APP_DEV } from \"aws-exports\";\r\nimport ShopContext from \"context/ShopContext\";\r\n\r\nexport default function ReferralScreen (props) {\r\n  const history = useHistory();\r\n  const { code } = useParams();\r\n  const { AppLocalStorage } = useContext(ShopContext)\r\n  const addDays = (date, days) => {\r\n    const copy = new Date(Number(date));\r\n    copy.setDate(date.getDate() + days);\r\n    return copy.getTime();\r\n  };\r\n  const handleReferral = async () => {\r\n    if (window.location.host.indexOf(\"monsterupsells.com\") != -1) {\r\n      AppLocalStorage.setItem(\r\n        \"aff_code\",\r\n        JSON.stringify({\r\n          code,\r\n          expiry: addDays(new Date(), 30)\r\n        })\r\n      );\r\n      window.location.href = `https://${AUTH_COOKIE_DOMAIN}/ref/${code}`;\r\n    } else {\r\n      if (code) {\r\n        const { exists } = await Axios.post(`${API_GATEWAY_NEW}/aff/events`, {\r\n          aff_code: code,\r\n          event: \"view\"\r\n        });\r\n        // if(exists){\r\n        AppLocalStorage.setItem(\r\n          \"aff_code\",\r\n          JSON.stringify({\r\n            code,\r\n            expiry: addDays(new Date(), 30)\r\n          })\r\n        );\r\n        // }\r\n      }\r\n      window.location.href = APP_DEV\r\n        ? \"https://localhost/login\"\r\n        : \"https://apps.shopify.com/monster-upsells\";\r\n    }\r\n  };\r\n\r\n  useEffect(() => {\r\n    handleReferral();\r\n  }, []);\r\n\r\n  // return <div onClick={handleReferral}> clivk me </div>\r\n  return <Spinner text=\"Please Wait\" />;\r\n}\r\n","import React from \"react\"\r\nimport { API_GATEWAY } from \"aws-exports\";\r\nimport { parseQueryString } from \"lib/query-string\";\r\nimport { useEffect } from \"react\";\r\nimport { Spinner } from \"components\";\r\n\r\nexport default function NewLoginScreen (props) {\r\n    const { search } = props.location\r\n    useEffect(() => {\r\n        window.location.href = `${API_GATEWAY}/auth/shopify/install${search}`;\r\n    }, [])\r\n    return <Spinner />\r\n}","import React from \"react\";\r\nimport { Page } from \"components\";\r\nimport classNames from \"lib/classNames\";\r\n// import WbIcon from \"svgs/wb-icon.png\";\r\n// import TranscyIcon from \"svgs/transcy-icon.png\";\r\n// import PageflyIcon from \"svgs/pagefly-icon.png\";\r\n// import MonsterIcon from \"svgs/monster-checkout-icon.png\";\r\n// import GorillaIcon from \"svgs/gorilla-icon.png\";\r\n// import RechargeIcon from \"svgs/recharge-icon.jpeg\";\r\n// import ZeptoIcon from \"svgs/zepto-icon.png\";\r\n\r\n// const partners = [\r\n//   {\r\n//     name: \"Monster Checkout Upsells\",\r\n//     description:\r\n//       \"Increase Checkout Revenue using One Click Upsell funnels after someone has purchased from your store.\",\r\n//     link: \"https://apps.shopify.com/monster-checkout\",\r\n//     icon: MonsterIcon,\r\n//   },\r\n//   {\r\n//     name: \"Widebundle\",\r\n//     description:\r\n//       \"Increase your AOV by adding bundles and offers to your products. Provide discounts that boost sales.\",\r\n//     link: \"https://apps.shopify.com/widebundle\",\r\n//     icon: WbIcon,\r\n//   },\r\n//   {\r\n//     name: \"Transcy - Translate\",\r\n//     description:\r\n//       \"Transcy allows you to translate the content of your online store into multiple languages and convert the currency into the local currency of the customers.\",\r\n//     link: \"https://apps.shopify.com/transcy-multiple-languages\",\r\n//     icon: TranscyIcon,\r\n//   },\r\n//   {\r\n//     name: \"PageFly\",\r\n//     description: \"Drag and drop to build Landing, Product, Home and Blog pages\",\r\n//     link: \"https://apps.shopify.com/pagefly\",\r\n//     icon: PageflyIcon,\r\n//   },\r\n//   {\r\n//     name: \"Wholesale Gorilla\",\r\n//     description:\r\n//       \"Create a wholesale portal on your store. A simple and powerful B2B solution built by real merchants.\",\r\n//     link: \"https://apps.shopify.com/wholesale-gorilla\",\r\n//     icon: GorillaIcon,\r\n//   },\r\n//   {\r\n//     name: \"Recharge Subscriptions\",\r\n//     description:\r\n//       \"Grow your subscription business with Recharge and enable your customers to fully manage their subscriptions directly from your store.\",\r\n//     link: \"https://apps.shopify.com/subscription-payments\",\r\n//     icon: RechargeIcon,\r\n//   },\r\n//   {\r\n//     name: \"Zepto Product Personalizer\",\r\n//     description:\r\n//       \"Add Unlimited Custom Product Options with Live Preview. A Visual Personalizer to boost sales.\",\r\n//     link: \"https://apps.shopify.com/product-personalizer\",\r\n//     icon: ZeptoIcon,\r\n//   },\r\n// ];\r\n\r\nconst Integrations = () => {\r\n  return (\r\n    <>\r\n      <Page\r\n        background=\"white\"\r\n        header={{ title: \"Integrations & Partners\" }}\r\n        padding=\"p-0\"\r\n        additional_classes=\" h-full\"\r\n      >\r\n        {/* <div className={classNames(\"bg-white relative rounded shadow p-5 pb-6\")}>\r\n        <b className={classNames(\"text-gray-600 text-md\")}>\r\n          We integrate with and recommend these apps\r\n        </b>\r\n        <div\r\n          className={classNames(\r\n            \"col-span-1 lg:col-span-3 grid grid-cols-1 gap-4 sm:grid-cols-1 md:grid-cols-2 lg:grid-cols-3 mt-4\"\r\n          )}\r\n        >\r\n          {partners.map((partner) => (\r\n            <div\r\n              className={classNames(\r\n                \"flex flex-1 items-start justify-start border border-solid border-gray-500 rounded-md p-3\"\r\n              )}\r\n              key={partner.name}\r\n            >\r\n              <div className={classNames(\"mr-3\")}>\r\n                <img\r\n                  src={partner.icon}\r\n                  className={classNames(\"rounded-md w-12 h-12 max-w-none\")}\r\n                />\r\n              </div>\r\n              <div className={classNames(\"\")}>\r\n                <h3\r\n                  className={classNames(\"font-bold text-sm mb-1 text-gray-600\")}\r\n                >\r\n                  {partner.name}\r\n                </h3>\r\n                <p\r\n                  className={classNames(\r\n                    \"font-small text-xs leading-4 text-gray-700\"\r\n                  )}\r\n                >\r\n                  {partner.description}\r\n                </p>\r\n                <a\r\n                  className={classNames(\r\n                    \"font-medium text-xs leading-4 underline text-black mt-2\"\r\n                  )}\r\n                  href={partner.link}\r\n                  target=\"_blank\"\r\n                >\r\n                  Learn More\r\n                </a>\r\n              </div>\r\n            </div>\r\n          ))}\r\n        </div>\r\n      </div> */}\r\n        <iframe\r\n          src=\"https://monsterupsells.partnerpage.io/integrations\"\r\n          width=\"100%\"\r\n          height=\"100%\"\r\n          frameborder=\"0\"\r\n          className={classNames(\"bg-white\")}\r\n        ></iframe>\r\n      </Page>\r\n    </>\r\n  );\r\n};\r\n\r\nexport default Integrations;\r\n","import CampaignsList from \"./campaigns/List\";\r\nimport CreateCampaign from \"./campaigns/Create\";\r\nimport UpdateCampaign from \"./campaigns/Update\";\r\nimport DuplicateCampaign from \"./campaigns/Duplicate\";\r\n\r\nexport const Campaigns = {\r\n  list: CampaignsList,\r\n  update: UpdateCampaign,\r\n  duplicate: DuplicateCampaign,\r\n  create: CreateCampaign,\r\n};\r\n\r\n// export { default as UnexpectedErrorScreen } from './UnexpectedErrorScreen_deprecated';\r\nexport { default as ErrorScreen } from \"./ErrorScreen\";\r\nexport { default as NotFoundScreen } from \"./NotFoundScreen\";\r\nexport { default as LoginScreen } from \"./LoginScreen\";\r\nexport { default as LogoutScreen } from \"./LogoutScreen\";\r\n// export { default as CallbackScreen } from './__CallbackScreenen';\r\nexport { default as CartScreen } from \"./CartScreen\";\r\nexport { default as CodCheckout } from \"./CodCheckout\";\r\nexport { default as DashboardScreen } from \"./DashboardScreen\";\r\nexport { default as FaqScreen } from \"./FaqScreen\";\r\nexport { default as PrivacyPolicy } from \"./PrivacyPolicy\";\r\nexport { default as ManualSetup } from \"./ManualSetup\";\r\nexport { default as PlanScreen } from \"./PlanScreen\";\r\nexport { default as StickyCartSettings } from \"./StickyCartSettings\";\r\nexport { default as InvitationScreen } from \"./InvitationScreen\";\r\nexport { default as Affiliation } from \"./Affiliation\";\r\nexport { default as ReferralScreen } from \"./ReferralScreen\";\r\nexport { default as NewLoginScreen } from \"./NewLoginScreen\";\r\nexport { default as Integrations } from \"./Integrations\";\r\n","import React, { useState, useRef, useEffect } from 'react';\r\nimport { Icon } from 'components';\r\nimport { CenterModal } from 'react-spring-modal';\r\nimport 'react-spring-modal/dist/index.css';\r\nimport styled from 'styled-components';\r\nimport styles from 'styles/modal.module.scss';\r\nimport { Scrollbars } from 'react-custom-scrollbars';\r\nimport classNames from 'lib/classNames';\r\n\r\nconst Modal = ({ footer,visible, title, children, subTitle = '', onClose = () => null, style ={} , background= \"bg-gray-200\"}) => {\r\n\t// const modal = useRef(null);\r\n\t// const overlay = useRef(null);\r\n\tconst [stateTitle, setTitle] = useState(title);\r\n\tconst scrollbars_ref = useRef(null);\r\n\r\n\tconst close = () => {\r\n\t\t// modal.current.appendChild(overlay.current);\r\n\t\tonClose();\r\n\t};\r\n\r\n\t// useEffect(() => {\r\n\t// \tconst PARENT_IS_NOT_BODY = !!overlay.current ? overlay.current.parentElement !== document.body : false;\r\n\t// \tif (PARENT_IS_NOT_BODY) {\r\n\t// \t\tdocument.getElementById('monster-upsell-cart').appendChild(overlay.current);\r\n\t// \t\toverlay.current.style.opacity = 1;\r\n\t// \t}\r\n\t// }, [overlay.current]);\r\n\r\n\treturn (\r\n\t\t<CenterModal isOpen={visible} onRequestClose={() => onClose()} className={`BottomModal__backdrop ${styles.modal}`}>\r\n\t\t\t<div  className={`${classNames('p-4 h-full w-full '+background)} ${styles.header}`}>\r\n\t\t\t\t<div className={styles.meta}>\r\n\t\t\t\t\t<div className={styles.head}>{stateTitle}</div>\r\n\t\t\t\t\t{subTitle && <p>{subTitle}</p>}\r\n\t\t\t\t</div>\r\n\t\t\t\t<Icon icon=\"times\" onClick={() => close()} />\r\n\t\t\t</div>\r\n\t\t\t<Scrollbars className={styles.content} style={style}>\r\n\t\t\t\t<div className={styles.wrapper}>{children(close, setTitle)}</div>\r\n\t\t\t</Scrollbars>\r\n\t\t\t{\r\n\t\t\t\t!!footer && <div className={styles.footer}>{footer}</div>\r\n\t\t\t}\r\n\t\t</CenterModal>\r\n\t);\r\n};\r\n\r\nexport default Modal;\r\n","import React, { useContext, useEffect, useState, useCallback } from \"react\";\r\nimport { API } from \"aws-amplify\";\r\nimport classNames from \"lib/classNames\";\r\nimport styles from \"styles/charge_approval.module.scss\";\r\nimport Modal from \"./Modal\";\r\nimport ShopContext from \"context/ShopContext\";\r\nimport {\r\n  Icon,\r\n  Range\r\n} from 'components';\r\nimport { Redirect } from \"@shopify/app-bridge/actions\";\r\nimport {\r\n  faCheckSquare\r\n} from '@fortawesome/fontawesome-pro-solid';\r\n\r\nimport EmbeddedContext from \"context/EmbeddedContext\";\r\nimport getPlans, { getBasePrice } from \"lib/getPlans\";\r\nimport { trackMixPanelEvent } from \"lib/mixpanel\"\r\n\r\n\r\nconst ChargeApproval = ({ }) => {\r\n  const { AppBridgeRedirect } = useContext(EmbeddedContext);\r\n  const shopContext = useContext(ShopContext);\r\n  const {\r\n    state: { chargeConfirmationUrl, redirectToChargeApproval },\r\n    state\r\n  } = shopContext;\r\n  const plans = getPlans(new Date(state.installedAt).getTime());\r\n  const [isModalVisible, setIsModalVisible] = useState(\r\n    redirectToChargeApproval\r\n  );\r\n  const [orderSize, setOrderSize] = useState(10)\r\n  const [isExpanded, setIsExpanded] = useState(false);\r\n  // type: \"trial\"\r\n  // value: 10\r\n  const [couponOpened, setCouponOpened] = useState(false);\r\n  const [couponCode, setCouponCode] = useState();\r\n  const [discountLoading, setDiscountLoading] = useState(false);\r\n  const [discount, setDiscount] = useState();\r\n  const [discountMessage, setDiscountMessage] = useState();\r\n  const [discountedChargeUrl, setDiscountedChargeUrl] = useState();\r\n\r\n  useEffect(() => {\r\n    if (redirectToChargeApproval) {\r\n      AppBridgeRedirect.dispatch(Redirect.Action.REMOTE, chargeConfirmationUrl);\r\n    }\r\n    if (state?.invitation?.type === \"discount_percentage\") {\r\n      setDiscount(state?.invitation?.value)\r\n      setDiscountMessage({ type: \"info\", text: \"Discount applied: \" + state?.invitation?.value + \"%\" })\r\n    }\r\n  }, [])\r\n\r\n  const calculatePrice = (orderSize) => {\r\n    return plans.find(({ transactions }) => orderSize <= transactions)?.real_price\r\n  }\r\n  const handleDiscountApply = async () => {\r\n    if (!couponCode) return\r\n    setDiscountLoading(true)\r\n    // make the call to check the discount\r\n    const result = await API.post(\"API_GATEWAY_NEW\", \"/aff/coupon\", {\r\n      body: {\r\n        coupon: couponCode\r\n      }\r\n    });\r\n    setDiscountLoading(false)\r\n    if (result.found) {\r\n      setDiscount(result.discount + \"%\")\r\n      setDiscountMessage({ type: \"info\", text: \"Discount applied: \" + result.discount + \"%\" })\r\n      setDiscountedChargeUrl(result.chargeConfirmationUrl)\r\n      setCouponOpened(false)\r\n    } else {\r\n      setDiscount()\r\n      setDiscountMessage({ type: \"error\", text: \"Discount code not found\" })\r\n    }\r\n  }\r\n  const redirect = () => {\r\n    trackMixPanelEvent(\"Accept charges click\", state?.id)\r\n    AppBridgeRedirect.dispatch(Redirect.Action.REMOTE, discountedChargeUrl || chargeConfirmationUrl);\r\n  };\r\n  const footer = (\r\n    <div className={`${classNames(\"flex items-center justify-between\")} `}>\r\n      <div className={classNames(\"flex items-center\tflex-row\")}>\r\n        {!discount && <div >\r\n          <div\r\n            className={classNames(\"font-bold flex items-center cursor-pointer text-gray-500\", { [\"justify-center\"]: !couponOpened })}\r\n            onClick={() => setCouponOpened(!couponOpened)}\r\n            tabIndex=\"0\"\r\n          >\r\n            <svg\r\n              aria-hidden=\"true\"\r\n              focusable=\"false\"\r\n              className={classNames(\r\n                \"transition-transform duration-200 ease-out transform\",\r\n                {\r\n                  \"rotate-45\": couponOpened\r\n                }\r\n              )}\r\n              role=\"img\"\r\n              xmlns=\"http://www.w3.org/2000/svg\"\r\n              viewBox=\"0 0 512 512\"\r\n              style={{ width: 13, height: 13 }}\r\n            >\r\n              <path\r\n                fill=\"currentColor\"\r\n                d=\"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm144 276c0 6.6-5.4 12-12 12h-92v92c0 6.6-5.4 12-12 12h-56c-6.6 0-12-5.4-12-12v-92h-92c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h92v-92c0-6.6 5.4-12 12-12h56c6.6 0 12 5.4 12 12v92h92c6.6 0 12 5.4 12 12v56z\"\r\n              ></path>\r\n            </svg>\r\n\r\n            <div className={classNames(\"leading-full pl-1 text-sm\")} >\r\n              Coupon code\r\n            </div>\r\n          </div>\r\n          {couponOpened && (\r\n            <>\r\n              <div className={classNames(\"mt-2 flex items-stretch\")}>\r\n                <div\r\n                  className={`${classNames(\r\n                    \"flex rounded border p-1 flex items-center flex-1 border-gray-500\"\r\n                  )}`}// ${styles.border_blue_color}\r\n                >\r\n                  <svg\r\n                    aria-hidden=\"true\"\r\n                    focusable=\"false\"\r\n                    className={`${classNames(\"pr-2 flex-shrink-0\")} ${styles.blue_color}`}\r\n                    role=\"img\"\r\n                    xmlns=\"http://www.w3.org/2000/svg\"\r\n                    viewBox=\"0 0 512 512\"\r\n                    style={{ width: 25, height: 25 }}\r\n                  >\r\n                    <path\r\n                      fill=\"currentColor\"\r\n                      d=\"M512 256c0-37.7-23.7-69.9-57.1-82.4 14.7-32.4 8.8-71.9-17.9-98.6-26.7-26.7-66.2-32.6-98.6-17.9C325.9 23.7 293.7 0 256 0s-69.9 23.7-82.4 57.1c-32.4-14.7-72-8.8-98.6 17.9-26.7 26.7-32.6 66.2-17.9 98.6C23.7 186.1 0 218.3 0 256s23.7 69.9 57.1 82.4c-14.7 32.4-8.8 72 17.9 98.6 26.6 26.6 66.1 32.7 98.6 17.9 12.5 33.3 44.7 57.1 82.4 57.1s69.9-23.7 82.4-57.1c32.6 14.8 72 8.7 98.6-17.9 26.7-26.7 32.6-66.2 17.9-98.6 33.4-12.5 57.1-44.7 57.1-82.4zm-320-96c17.67 0 32 14.33 32 32s-14.33 32-32 32-32-14.33-32-32 14.33-32 32-32zm12.28 181.65c-6.25 6.25-16.38 6.25-22.63 0l-11.31-11.31c-6.25-6.25-6.25-16.38 0-22.63l137.37-137.37c6.25-6.25 16.38-6.25 22.63 0l11.31 11.31c6.25 6.25 6.25 16.38 0 22.63L204.28 341.65zM320 352c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"\r\n                    ></path>\r\n                  </svg>\r\n                  {!!discount && (\r\n                    <div\r\n                      className={`${classNames(\"flex px-2 py-1 rounded relative text-white\")} ${styles.bg_blue_color}`}\r\n                    >\r\n                      <span className={classNames(\"flex-1\")}>{couponCode}</span>\r\n                    </div>\r\n                  )}\r\n                  {!discount && (\r\n                    <input\r\n                      value={couponCode}\r\n                      placeholder={\"enter coupon code\"}\r\n                      onChange={({ target }) => {\r\n                        if (!discount) setCouponCode(target.value);\r\n                      }}\r\n                      disabled={!!discount}\r\n                      className={classNames(\r\n                        \"border-0 shadow-none focus:outline-none bg-transparent w-full text-sm\"\r\n                      )}\r\n                    />\r\n                  )}\r\n                </div>\r\n                <button\r\n                  onClick={() => handleDiscountApply()}\r\n                  disabled={!!discount || discountLoading}\r\n                  style={{ flex: 0 }}\r\n                  className={`${classNames(\"ml-2 px-3 btn-small flex-0 text-white\")} ${styles.bg_blue_color}`}\r\n                >\r\n                  Apply\r\n                </button>\r\n              </div>\r\n            </>\r\n          )}\r\n        </div>\r\n        }\r\n        {discountMessage && (\r\n          <div\r\n            className={classNames(\"pt-2 p-1 rounded  font-bold\", {\r\n              \"text-green-500\":\r\n                discountMessage.type === \"info\",\r\n              \"text-red-500\":\r\n                discountMessage.type === \"error\"\r\n            })}\r\n          >\r\n            {discountMessage.text}\r\n          </div>\r\n        )}\r\n      </div>\r\n      <div className={`${classNames(\"flex\")} `}>\r\n        <a\r\n          className={`${classNames(\r\n            \"py-2 px-5 font-bold text-sm cursor-pointer flex items-center\"\r\n          )} ${styles.blue_color}`}\r\n          onClick={() => setIsExpanded(!isExpanded)}\r\n        >\r\n          Pricing table\r\n          <svg\r\n            className={`${classNames(\"duration-300\", {\r\n              \"transform \": isExpanded,\r\n              \"rotate-180\": isExpanded\r\n            })}`}\r\n            width=\"30\"\r\n            height=\"30\"\r\n            viewBox=\"0 0 30 30\"\r\n            fill=\"none\"\r\n            xmlns=\"http://www.w3.org/2000/svg\"\r\n          >\r\n            <path\r\n              d=\"M9.2625 10.7375L15 16.4625L20.7375 10.7375L22.5 12.5L15 20L7.5 12.5L9.2625 10.7375Z\"\r\n              fill=\"#0053DC\"\r\n            />\r\n          </svg>\r\n        </a>\r\n        <a\r\n          className={`${classNames(\r\n            \"py-2 px-5 font-bold rounded-sm text-white text-sm cursor-pointer flex items-center\"\r\n          )} ${styles.bg_blue_color}`}\r\n          onClick={() => redirect()}\r\n        >\r\n          Get Access\r\n        </a>\r\n      </div>\r\n    </div>\r\n  )\r\n\r\n\r\n  return (\r\n    <div className={classNames(\"absolute z-50\")}>\r\n      <Modal\r\n        visible={isModalVisible}\r\n        onClose={() => setIsModalVisible(false)}\r\n        style={{ minWidth: \"900px\", minHeight: isExpanded ? \"485px\" : \"205px\" }}\r\n        background=\"bg-white\"\r\n        title={<div className={classNames(\" font-bold flex-center text-2xl\")} >  Welcome to MonsterUpsells <span>👋</span>  </div>}\r\n        footer={footer}\r\n      >\r\n        {(close, setTitle) => (\r\n          <div\r\n            id=\"monster-upsell-cart\"\r\n            className={classNames(\"px-4 h-full w-full \")}\r\n          >\r\n            <div\r\n              className={`${classNames(\"w-full text-center\")} ${styles.navy_color}`}\r\n            >\r\n\r\n              <div className={classNames(\"py-2\")}>\r\n                <p> The next page is a Shopify charge page. </p>\r\n              </div>\r\n              <div className={classNames(\"py-2\")}>\r\n                <p> Although it might seem scarry...</p>\r\n                <p> Dont worry! </p>\r\n              </div>\r\n              <div className={classNames(\"py-2 font-bold\")}>\r\n                <p> YOU WILL NOT BE CHARGED UNLESS YOU KEEP THE APP LONGER THAN <u>THE 10-DAYS FREE TRIAL</u>.</p>\r\n              </div>\r\n              <div className={classNames(\"py-2\")}>\r\n                <p> The app starts at ${getBasePrice(new Date(state.installedAt).getTime())} and increases depending on order volume.  </p>\r\n              </div>\r\n            </div>\r\n            <div\r\n              className={`${classNames(\"flex \", {\r\n                \"pb-6\": isExpanded\r\n              })} ${styles.table} ${isExpanded ? \"\" : styles.hidden_pricing}`}\r\n            >\r\n              <div className={`${classNames(\"flex-1 p-2 m-2 h-full rounded\")} ${styles.bg_lighter_blue_color}`}>\r\n                <div className={classNames(\"py-3 font-bold flex justify-center\")}>\r\n                  <p> <u>Our pricing</u></p>\r\n                </div>\r\n                <div className={classNames(\"py-2 flex justify-center\")}>\r\n                  <p className={classNames(\"text-center w-2/3\")}> How many monthly orders does your store have?</p>\r\n                </div>\r\n                <div className={classNames(\"px-6 py-4\")}>\r\n                  <Range\r\n                    value={orderSize}\r\n                    onChange={setOrderSize}\r\n                    min={1}\r\n                    max={3001}\r\n                  />\r\n                </div>\r\n                <div className={classNames(\" py-6 px-6 flex items-center justify-between\t\")}>\r\n                  <div className={classNames(\" mb-2\")}> <div className={classNames(\"p-1 bg-white rounded text-center \")}>{orderSize === 3001 ? \"Over 3000+\" : `Up to ${orderSize}`} </div> <div className={classNames(\"\")}> Orders per Month</div></div>\r\n                  <div className={classNames(\" text-center \")}>  <div>${calculatePrice(orderSize)}</div> <div className={classNames(\"\")}> Price </div></div>\r\n                </div>\r\n              </div>\r\n              <div className={classNames(\"flex-1  p-2 m-2\")}>\r\n                <div className={classNames(\"py-2 font-bold\")}>\r\n                  <p> <u>Why MonsterUpsells?</u></p>\r\n                </div>\r\n                <div className={classNames(\"flex py-2\")}>\r\n                  <Icon color={\"#48bb78\"} icon={faCheckSquare} size=\"lg\" />\r\n                  <p className={classNames(\"pl-2\")} > Average revenue increase 10-15%</p>\r\n                </div>\r\n                <div className={classNames(\"flex py-2\")}>\r\n                  <Icon color={\"#48bb78\"} icon={faCheckSquare} size=\"lg\" />\r\n                  <p className={classNames(\"pl-2\")} > 10 Day free trial</p>\r\n                </div>\r\n                <div className={classNames(\"flex py-2\")}>\r\n                  <Icon color={\"#48bb78\"} icon={faCheckSquare} size=\"lg\" />\r\n                  <p className={classNames(\"pl-2\")} > Beautiful user experience</p>\r\n                </div>\r\n                <div className={classNames(\"flex py-2\")}>\r\n                  <Icon color={\"#48bb78\"} icon={faCheckSquare} size=\"lg\" />\r\n                  <p className={classNames(\"pl-2\")} > Powerful upsells offers</p>\r\n                </div>\r\n                <div className={classNames(\"flex py-2\")}>\r\n                  <Icon color={\"#48bb78\"} icon={faCheckSquare} size=\"lg\" />\r\n                  <p className={classNames(\"pl-2\")} > Average ROI of 2000%+</p>\r\n                </div>\r\n              </div>\r\n            </div>\r\n          </div>\r\n        )}\r\n      </Modal>\r\n    </div>\r\n  );\r\n};\r\n\r\nexport default ChargeApproval;\r\n","import React, { useContext, useEffect, useState, useCallback } from \"react\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport { SHOPIFY_API_KEY, SHOPIFY_EMBEDDED_FORCE_REDIRECT } from \"aws-exports\";\r\nimport { Provider } from \"@shopify/app-bridge-react\";\r\nimport createApp from \"@shopify/app-bridge\";\r\nimport { Redirect, History, Toast } from \"@shopify/app-bridge/actions\";\r\n// import { useRoutePropagation } from \"@shopify/react-shopify-app-route-propagator\";\r\nimport useReactRouter from \"use-react-router\";\r\nimport NotifyContext from \"context/NotifyContext\";\r\nimport ShopContext from \"context/ShopContext\";\r\nimport { ErrorScreen } from \"screens\";\r\nimport { EmbeddedProvider } from \"context/EmbeddedContext\";\r\nimport UserContext from \"context/UserContext\";\r\nimport { ENGINE_WARNING_ICON } from \"lib/globals\";\r\nimport ChargeApproval from \"./chargeApproval\";\r\nimport WelcomeModal from \"./welcomeModal\";\r\nimport { setupModalAutoSizing } from \"@shopify/app-bridge-utils\";\r\n\r\nconst Embedded = ({ children, location, newPlanRedirect }) => {\r\n  const { history } = useReactRouter();\r\n  const user = useContext(UserContext);\r\n  const shopContext = useContext(ShopContext);\r\n  const {\r\n    state: {\r\n      settings,\r\n      settingsSaved,\r\n      chargeConfirmationUrl,\r\n      redirectToChargeApproval,\r\n      id,\r\n      installedAt\r\n      // show_recharge_alert\r\n    },\r\n    setItem\r\n  } = shopContext;\r\n  const { createNotification, deleteNotification } = useContext(NotifyContext);\r\n  const queryString = window.location.search;\r\n  const params = new URLSearchParams(queryString);\r\n  const config = {\r\n    apiKey: SHOPIFY_API_KEY,\r\n    shopOrigin: user.attributes.website,\r\n    forceRedirect: SHOPIFY_EMBEDDED_FORCE_REDIRECT,\r\n    host: params.get(\"host\") || btoa(user.attributes.website)\r\n  };\r\n  const app = createApp(config);\r\n  setupModalAutoSizing(app);\r\n  const AppBridgeHistory = History.create(app);\r\n  const AppBridgeRedirect = Redirect.create(app);\r\n  const AppBridgeToast = toastOptions => {\r\n    const toast = Toast.create(app, toastOptions)\r\n    return {\r\n      open () {\r\n        toast.dispatch(Toast.Action.SHOW)\r\n      }\r\n    }\r\n  };\r\n  // useRoutePropagation(app, location);\r\n  useEffect(() => {\r\n    if (window.$crisp) {\r\n      window.$crisp.push([\"set\", \"session:data\", [\"store\", id]]);\r\n      window.$crisp.push([\"set\", \"session:data\", [\"App\", \"Monster UPSELLS\"]]);\r\n    }\r\n  }, [settings]);\r\n  useEffect(() => {\r\n    if (params.get(\"source\") === 'charge-accepted') {\r\n      if (typeof window.fbq === 'function') {\r\n        window.fbq('track', 'TrialStarted')\r\n      }\r\n      AppBridgeRedirect.dispatch(Redirect.Action.APP, '')\r\n    }\r\n  }, [params])\r\n  // src={ `${window.location.origin}/${getPlansModal(new Date(installedAt).getTime())}?chargeConfirmationUrl=${chargeConfirmationUrl}`}\r\n  return (\r\n    <>\r\n      <EmbeddedProvider value={{ app, AppBridgeRedirect, AppBridgeHistory, AppBridgeToast }}>\r\n        <Provider config={config}>\r\n          {!!(redirectToChargeApproval && window.location.pathname !== \"/affiliation\") && <ChargeApproval />}\r\n          {/* {!redirectToChargeApproval && <WelcomeModal />} */}\r\n          <ErrorScreen>{children}</ErrorScreen>\r\n        </Provider>\r\n      </EmbeddedProvider>\r\n    </>\r\n  );\r\n};\r\n\r\nexport default withRouter(Embedded);\r\n","import { getSessionToken } from \"@shopify/app-bridge-utils\";\r\nimport { API, graphqlOperation } from \"aws-amplify\";\r\nimport { UPDATE_SHOP_PROP } from \"./mutations\";\r\n\r\nexport default function (shop, shopSetItem, app) {\r\n    const db_keys = [\"review_clicked\", \"welcome_video_watched\", \"survey_closed\", \"first_cart_turn_on\", \"first_new_campaign_click\", \"first_new_campaign\", \"fb_pixel_trial_started\"]\r\n    const data = {}\r\n    return {\r\n        getItem (key) {\r\n            const source = db_keys.includes(key) ? shop : data\r\n            return shop[key] || null\r\n        },\r\n        async setItem (key, value) {\r\n            if (db_keys.includes(key)) {\r\n                const input = { [key]: value }\r\n                const authToken = `Bearer ${await getSessionToken(app)}`\r\n                API.graphql(\r\n                    graphqlOperation(UPDATE_SHOP_PROP, {\r\n                        id: shop.id,\r\n                        input\r\n                    }, authToken)\r\n                ).then(() => {\r\n                    shopSetItem(key, value);\r\n                })\r\n            } else {\r\n                data[key] = value\r\n            }\r\n        }\r\n    }\r\n}","var _defs, _title, _rect, _g, _rect2, _rect3, _path, _rect4, _path2, _rect5, _g2, _rect6, _rect7, _path3, _rect8, _path4, _g3, _g4, _path5, _path6, _path7, _circle, _circle2, _circle3, _circle4, _circle5;\n\nvar _excluded = [\"svgRef\", \"title\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar SvgNoData = function SvgNoData(_ref) {\n  var svgRef = _ref.svgRef,\n      title = _ref.title,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    id: \"f20e0c25-d928-42cc-98d1-13cc230663ea\",\n    \"data-name\": \"Layer 1\",\n    width: 820.16,\n    height: 780.81,\n    viewBox: \"0 0 820.16 780.81\",\n    ref: svgRef\n  }, props), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n    id: \"07332201-7176-49c2-9908-6dc4a39c4716\",\n    x1: 539.63,\n    y1: 734.6,\n    x2: 539.63,\n    y2: 151.19,\n    gradientTransform: \"translate(-3.62 1.57)\",\n    gradientUnits: \"userSpaceOnUse\"\n  }, /*#__PURE__*/React.createElement(\"stop\", {\n    offset: 0,\n    stopColor: \"gray\",\n    stopOpacity: 0.25\n  }), /*#__PURE__*/React.createElement(\"stop\", {\n    offset: 0.54,\n    stopColor: \"gray\",\n    stopOpacity: 0.12\n  }), /*#__PURE__*/React.createElement(\"stop\", {\n    offset: 1,\n    stopColor: \"gray\",\n    stopOpacity: 0.1\n  })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n    id: \"0ee1ab3f-7ba2-4205-9d4a-9606ad702253\",\n    x1: 540.17,\n    y1: 180.2,\n    x2: 540.17,\n    y2: 130.75,\n    gradientTransform: \"translate(-63.92 7.85)\",\n    xlinkHref: \"#07332201-7176-49c2-9908-6dc4a39c4716\"\n  }), /*#__PURE__*/React.createElement(\"linearGradient\", {\n    id: \"abca9755-bed1-4a97-b027-7f02ee3ffa09\",\n    x1: 540.17,\n    y1: 140.86,\n    x2: 540.17,\n    y2: 82.43,\n    gradientTransform: \"translate(-84.51 124.6) rotate(-12.11)\",\n    xlinkHref: \"#07332201-7176-49c2-9908-6dc4a39c4716\"\n  }), /*#__PURE__*/React.createElement(\"linearGradient\", {\n    id: \"2632d424-e666-4ee4-9508-a494957e14ab\",\n    x1: 476.4,\n    y1: 710.53,\n    x2: 476.4,\n    y2: 127.12,\n    gradientTransform: \"matrix(1, 0, 0, 1, 0, 0)\",\n    xlinkHref: \"#07332201-7176-49c2-9908-6dc4a39c4716\"\n  }), /*#__PURE__*/React.createElement(\"linearGradient\", {\n    id: \"97571ef7-1c83-4e06-b701-c2e47e77dca3\",\n    x1: 476.94,\n    y1: 156.13,\n    x2: 476.94,\n    y2: 106.68,\n    gradientTransform: \"matrix(1, 0, 0, 1, 0, 0)\",\n    xlinkHref: \"#07332201-7176-49c2-9908-6dc4a39c4716\"\n  }), /*#__PURE__*/React.createElement(\"linearGradient\", {\n    id: \"7d32e13e-a0c7-49c4-af0e-066a2f8cb76e\",\n    x1: 666.86,\n    y1: 176.39,\n    x2: 666.86,\n    y2: 117.95,\n    gradientTransform: \"matrix(1, 0, 0, 1, 0, 0)\",\n    xlinkHref: \"#07332201-7176-49c2-9908-6dc4a39c4716\"\n  }))), title === undefined ? _title || (_title = /*#__PURE__*/React.createElement(\"title\", null, \"no data\")) : title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n    x: 317.5,\n    y: 142.55,\n    width: 437.02,\n    height: 603.82,\n    transform: \"translate(-271.22 62.72) rotate(-12.11)\",\n    fill: \"#e0e0e0\"\n  })), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n    opacity: 0.5\n  }, /*#__PURE__*/React.createElement(\"rect\", {\n    x: 324.89,\n    y: 152.76,\n    width: 422.25,\n    height: 583.41,\n    transform: \"translate(-271.22 62.72) rotate(-12.11)\",\n    fill: \"url(#07332201-7176-49c2-9908-6dc4a39c4716)\"\n  }))), _rect2 || (_rect2 = /*#__PURE__*/React.createElement(\"rect\", {\n    x: 329.81,\n    y: 157.1,\n    width: 411.5,\n    height: 570.52,\n    transform: \"translate(-270.79 62.58) rotate(-12.11)\",\n    fill: \"#fafafa\"\n  })), _rect3 || (_rect3 = /*#__PURE__*/React.createElement(\"rect\", {\n    x: 374.18,\n    y: 138.6,\n    width: 204.14,\n    height: 49.45,\n    transform: \"translate(-213.58 43.93) rotate(-12.11)\",\n    fill: \"url(#0ee1ab3f-7ba2-4205-9d4a-9606ad702253)\"\n  })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M460.93,91.9c-15.41,3.31-25.16,18.78-21.77,34.55s18.62,25.89,34,22.58,25.16-18.78,21.77-34.55S476.34,88.59,460.93,91.9ZM470.6,137A16.86,16.86,0,1,1,483.16,117,16.66,16.66,0,0,1,470.6,137Z\",\n    transform: \"translate(-189.92 -59.59)\",\n    fill: \"url(#abca9755-bed1-4a97-b027-7f02ee3ffa09)\"\n  })), _rect4 || (_rect4 = /*#__PURE__*/React.createElement(\"rect\", {\n    x: 375.66,\n    y: 136.55,\n    width: 199.84,\n    height: 47.27,\n    transform: \"translate(-212.94 43.72) rotate(-12.11)\",\n    fill: \"#2f80ed\"\n  })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M460.93,91.9a27.93,27.93,0,1,0,33.17,21.45A27.93,27.93,0,0,0,460.93,91.9ZM470.17,135a16.12,16.12,0,1,1,12.38-19.14A16.12,16.12,0,0,1,470.17,135Z\",\n    transform: \"translate(-189.92 -59.59)\",\n    fill: \"#2f80ed\"\n  })), _rect5 || (_rect5 = /*#__PURE__*/React.createElement(\"rect\", {\n    x: 257.89,\n    y: 116.91,\n    width: 437.02,\n    height: 603.82,\n    fill: \"#e0e0e0\"\n  })), _g2 || (_g2 = /*#__PURE__*/React.createElement(\"g\", {\n    opacity: 0.5\n  }, /*#__PURE__*/React.createElement(\"rect\", {\n    x: 265.28,\n    y: 127.12,\n    width: 422.25,\n    height: 583.41,\n    fill: \"url(#2632d424-e666-4ee4-9508-a494957e14ab)\"\n  }))), _rect6 || (_rect6 = /*#__PURE__*/React.createElement(\"rect\", {\n    x: 270.65,\n    y: 131.42,\n    width: 411.5,\n    height: 570.52,\n    fill: \"#fff\"\n  })), _rect7 || (_rect7 = /*#__PURE__*/React.createElement(\"rect\", {\n    x: 374.87,\n    y: 106.68,\n    width: 204.14,\n    height: 49.45,\n    fill: \"url(#97571ef7-1c83-4e06-b701-c2e47e77dca3)\"\n  })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M666.86,118c-15.76,0-28.54,13.08-28.54,29.22s12.78,29.22,28.54,29.22,28.54-13.08,28.54-29.22S682.62,118,666.86,118Zm0,46.08a16.86,16.86,0,1,1,16.46-16.86A16.66,16.66,0,0,1,666.86,164Z\",\n    transform: \"translate(-189.92 -59.59)\",\n    fill: \"url(#7d32e13e-a0c7-49c4-af0e-066a2f8cb76e)\"\n  })), _rect8 || (_rect8 = /*#__PURE__*/React.createElement(\"rect\", {\n    x: 377.02,\n    y: 104.56,\n    width: 199.84,\n    height: 47.27,\n    fill: \"#2f80ed\"\n  })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M666.86,118a27.93,27.93,0,1,0,27.93,27.93A27.93,27.93,0,0,0,666.86,118Zm0,44.05A16.12,16.12,0,1,1,683,145.89,16.12,16.12,0,0,1,666.86,162Z\",\n    transform: \"translate(-189.92 -59.59)\",\n    fill: \"#2f80ed\"\n  })), _g3 || (_g3 = /*#__PURE__*/React.createElement(\"g\", {\n    opacity: 0.5\n  }, /*#__PURE__*/React.createElement(\"rect\", {\n    x: 15.27,\n    y: 737.05,\n    width: 3.76,\n    height: 21.33,\n    fill: \"#47e6b1\"\n  }), /*#__PURE__*/React.createElement(\"rect\", {\n    x: 205.19,\n    y: 796.65,\n    width: 3.76,\n    height: 21.33,\n    transform: \"translate(824.47 540.65) rotate(90)\",\n    fill: \"#47e6b1\"\n  }))), _g4 || (_g4 = /*#__PURE__*/React.createElement(\"g\", {\n    opacity: 0.5\n  }, /*#__PURE__*/React.createElement(\"rect\", {\n    x: 451.49,\n    width: 3.76,\n    height: 21.33,\n    fill: \"#47e6b1\"\n  }), /*#__PURE__*/React.createElement(\"rect\", {\n    x: 641.4,\n    y: 59.59,\n    width: 3.76,\n    height: 21.33,\n    transform: \"translate(523.63 -632.62) rotate(90)\",\n    fill: \"#47e6b1\"\n  }))), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M961,832.15a4.61,4.61,0,0,1-2.57-5.57,2.22,2.22,0,0,0,.1-.51h0a2.31,2.31,0,0,0-4.15-1.53h0a2.22,2.22,0,0,0-.26.45,4.61,4.61,0,0,1-5.57,2.57,2.22,2.22,0,0,0-.51-.1h0a2.31,2.31,0,0,0-1.53,4.15h0a2.22,2.22,0,0,0,.45.26,4.61,4.61,0,0,1,2.57,5.57,2.22,2.22,0,0,0-.1.51h0a2.31,2.31,0,0,0,4.15,1.53h0a2.22,2.22,0,0,0,.26-.45,4.61,4.61,0,0,1,5.57-2.57,2.22,2.22,0,0,0,.51.1h0a2.31,2.31,0,0,0,1.53-4.15h0A2.22,2.22,0,0,0,961,832.15Z\",\n    transform: \"translate(-189.92 -59.59)\",\n    fill: \"#4d8af0\",\n    opacity: 0.5\n  })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M326.59,627.09a4.61,4.61,0,0,1-2.57-5.57,2.22,2.22,0,0,0,.1-.51h0a2.31,2.31,0,0,0-4.15-1.53h0a2.22,2.22,0,0,0-.26.45,4.61,4.61,0,0,1-5.57,2.57,2.22,2.22,0,0,0-.51-.1h0a2.31,2.31,0,0,0-1.53,4.15h0a2.22,2.22,0,0,0,.45.26,4.61,4.61,0,0,1,2.57,5.57,2.22,2.22,0,0,0-.1.51h0a2.31,2.31,0,0,0,4.15,1.53h0a2.22,2.22,0,0,0,.26-.45A4.61,4.61,0,0,1,325,631.4a2.22,2.22,0,0,0,.51.1h0a2.31,2.31,0,0,0,1.53-4.15h0A2.22,2.22,0,0,0,326.59,627.09Z\",\n    transform: \"translate(-189.92 -59.59)\",\n    fill: \"#fdd835\",\n    opacity: 0.5\n  })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M855,127.77a4.61,4.61,0,0,1-2.57-5.57,2.22,2.22,0,0,0,.1-.51h0a2.31,2.31,0,0,0-4.15-1.53h0a2.22,2.22,0,0,0-.26.45,4.61,4.61,0,0,1-5.57,2.57,2.22,2.22,0,0,0-.51-.1h0a2.31,2.31,0,0,0-1.53,4.15h0a2.22,2.22,0,0,0,.45.26,4.61,4.61,0,0,1,2.57,5.57,2.22,2.22,0,0,0-.1.51h0a2.31,2.31,0,0,0,4.15,1.53h0a2.22,2.22,0,0,0,.26-.45,4.61,4.61,0,0,1,5.57-2.57,2.22,2.22,0,0,0,.51.1h0a2.31,2.31,0,0,0,1.53-4.15h0A2.22,2.22,0,0,0,855,127.77Z\",\n    transform: \"translate(-189.92 -59.59)\",\n    fill: \"#fdd835\",\n    opacity: 0.5\n  })), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n    cx: 812.64,\n    cy: 314.47,\n    r: 7.53,\n    fill: \"#f55f44\",\n    opacity: 0.5\n  })), _circle2 || (_circle2 = /*#__PURE__*/React.createElement(\"circle\", {\n    cx: 230.73,\n    cy: 746.65,\n    r: 7.53,\n    fill: \"#f55f44\",\n    opacity: 0.5\n  })), _circle3 || (_circle3 = /*#__PURE__*/React.createElement(\"circle\", {\n    cx: 735.31,\n    cy: 477.23,\n    r: 7.53,\n    fill: \"#f55f44\",\n    opacity: 0.5\n  })), _circle4 || (_circle4 = /*#__PURE__*/React.createElement(\"circle\", {\n    cx: 87.14,\n    cy: 96.35,\n    r: 7.53,\n    fill: \"#4d8af0\",\n    opacity: 0.5\n  })), _circle5 || (_circle5 = /*#__PURE__*/React.createElement(\"circle\", {\n    cx: 7.53,\n    cy: 301.76,\n    r: 7.53,\n    fill: \"#47e6b1\",\n    opacity: 0.5\n  })));\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  return /*#__PURE__*/React.createElement(SvgNoData, _extends({\n    svgRef: ref\n  }, props));\n});\nexport default __webpack_public_path__ + \"static/media/no_data.caf56327.svg\";\nexport { ForwardRef as ReactComponent };","import React, { useState, useEffect, useReducer } from \"react\";\r\nimport { Auth } from \"aws-amplify\";\r\nimport { Spinner } from \"components\";\r\nimport UserContext, { UserProvider } from \"context/UserContext\";\r\nimport { ShopProvider } from \"context/ShopContext\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport { parseQueryString } from \"lib/query-string\";\r\nimport useShop from \"hooks/useShop\";\r\nimport { SetItemReducer, SET_ITEM, SET_ALL } from \"reducers/SetItemReducer\";\r\nimport { GET_SHOP_SETTINGS } from \"Queries\";\r\nimport { SHOP_DEFAULT_SETTINGS } from \"lib/globals\";\r\nimport {\r\n  SCOPE,\r\n  SHOPIFY_API_KEY,\r\n  SHOPIFY_EMBEDDED_FORCE_REDIRECT,\r\n} from \"aws-exports\";\r\nimport AppLocalStorage from \"lib/AppLocalStorage\";\r\nimport { createApp } from \"@shopify/app-bridge\";\r\nimport { getScriptStatus } from \"./cart/Utils\";\r\n\r\nconst Authenticator = ({ children, location }) => {\r\n  return <WithShopProvider shopName={window.shop}>{children}</WithShopProvider>;\r\n};\r\n\r\nexport default withRouter(Authenticator);\r\n\r\nconst WithShopProvider = ({ children, shopName }) => {\r\n  const [validationErrors, setValidationErrors] = useState({});\r\n  const [state, dispatch] = useReducer(SetItemReducer, {});\r\n  const params = new URLSearchParams(window.location.search);\r\n  const { data, error, loading } = useShop(\r\n    shopName,\r\n    GET_SHOP_SETTINGS,\r\n    {},\r\n    \"cache-first\"\r\n  );\r\n  const setItem = (path, value) => dispatch({ type: SET_ITEM, path, value });\r\n  const discard = () => {\r\n    if (data && data?.shop) {\r\n      const { shop } = data;\r\n      dispatch({\r\n        type: SET_ITEM,\r\n        path: \"settings\",\r\n        value: shop.settings || SHOP_DEFAULT_SETTINGS(),\r\n      });\r\n    }\r\n  };\r\n\r\n  const [cartActive, setCartActive] = useState(false);\r\n  const [cartLoading, setCartLoading] = useState(true);\r\n\r\n  // const hasRecharge = async (shop_url: string) => {\r\n  //   const { data } = await Axios.get(\r\n  //     `https://static.rechargecdn.com/store/${shop_url}/product/2020-12/products.json`\r\n  //   );\r\n  //   return !!data?.widget_settings;\r\n  // };\r\n\r\n  useEffect(() => {\r\n    async function checkScope(shop) {\r\n      // console.log(\"#################\")\r\n      // console.log(shop.scope)\r\n      // console.log(SCOPE)\r\n      // console.log(shop.version)\r\n      // console.log(\"#################\")\r\n      if (shop.scope !== SCOPE || !shop.version || shop.version !== \"1.0.3\") {\r\n        // await logOutUser(shop);\r\n      }\r\n    }\r\n    if (data && data?.shop) {\r\n      const { shop } = data;\r\n      checkScope(shop);\r\n      const default_settings = SHOP_DEFAULT_SETTINGS(\r\n        state.settings ? state.settings.default_language : \"english\"\r\n      );\r\n\r\n      const shop_settings = shop.settings;\r\n\r\n      if (\r\n        shop_settings &&\r\n        !shop_settings.modules.checkout_button.coupon_alert_text\r\n      ) {\r\n        shop_settings[\"modules\"][\"checkout_button\"][\"coupon_alert_text\"] =\r\n          default_settings[\"modules\"][\"checkout_button\"][\"coupon_alert_text\"];\r\n      }\r\n      // if (shop_settings && !shop_settings.modules.order_note) {\r\n      //   shop_settings[\"modules\"][\"order_note\"] = {\r\n      //     active: false,\r\n      //     ...default_settings[\"modules\"][\"order_note\"]\r\n      //   };\r\n      // }\r\n      // if (\r\n      //   shop_settings &&\r\n      //   shop_settings[\"modules\"][\"order\"].indexOf(\"order_note\") === -1\r\n      // ) {\r\n      //   shop_settings[\"modules\"][\"order\"].push(\"order_note\");\r\n      // }\r\n      if (shop_settings && !shop_settings[\"cod_settings\"]) {\r\n        shop_settings[\"cod_settings\"] = default_settings.cod_settings;\r\n      }\r\n      if (shop_settings && !shop_settings[\"subscription\"]) {\r\n        shop_settings[\"subscription\"] = default_settings.subscription;\r\n      } else if (\r\n        shop_settings &&\r\n        shop_settings[\"subscription\"] &&\r\n        !shop_settings[\"subscription\"].upgradingText\r\n      ) {\r\n        shop_settings[\"subscription\"] = {\r\n          ...shop_settings[\"subscription\"],\r\n          downgradingText: default_settings.subscription.downgradingText,\r\n          upgradingText: default_settings.subscription.upgradingText,\r\n          loadingBackground: default_settings.subscription.loadingBackground,\r\n          loadingBorder: default_settings.subscription.loadingBorder,\r\n          subscribedText: default_settings.subscription.subscribedText,\r\n          subscribedBackground: default_settings.subscription.subscribedBackground,\r\n          subscribedBorder: default_settings.subscription.subscribedBorder,\r\n        };\r\n      }\r\n      if (shop_settings && !shop_settings.hasOwnProperty(\"open_cart\")) {\r\n        shop_settings[\"open_cart\"] = true;\r\n      }\r\n      if (shop_settings && !shop_settings.hasOwnProperty(\"show_coupon\")) {\r\n        shop_settings[\"show_coupon\"] = true;\r\n      }\r\n      if (\r\n        shop_settings &&\r\n        !shop_settings.hasOwnProperty(\"show_coupon_alert_text\")\r\n      ) {\r\n        shop_settings[\"show_coupon_alert_text\"] = true;\r\n      }\r\n      if (shop_settings && !shop_settings[\"sticky_cart\"]) {\r\n        shop_settings[\"sticky_cart\"] = default_settings.sticky_cart;\r\n      }\r\n      if (shop_settings && !shop_settings[\"scary\"]) {\r\n        shop_settings[\"scary\"] = default_settings.scary;\r\n      }\r\n      if (\r\n        shop_settings &&\r\n        !shop_settings[\"modules\"][\"checkout_button\"][\"continue_shopping_button\"]\r\n      ) {\r\n        shop_settings[\"modules\"][\"checkout_button\"][\r\n          \"continue_shopping_button\"\r\n        ] = default_settings.modules.checkout_button.continue_shopping_button;\r\n        shop_settings[\"modules\"][\"checkout_button\"][\r\n          \"active_continue_shopping_button\"\r\n        ] =\r\n          default_settings.modules.checkout_button.active_continue_shopping_button;\r\n        shop_settings[\"modules\"][\"checkout_button\"][\r\n          \"active_continue_shopping_underlined\"\r\n        ] =\r\n          default_settings.modules.checkout_button.active_continue_shopping_underlined;\r\n      }\r\n      if (shop_settings && !shop_settings[\"checkout_condition_text\"]) {\r\n        shop_settings[\"checkout_condition_text\"] =\r\n          default_settings.checkout_condition_text;\r\n        shop_settings[\"checkout_condition_color\"] =\r\n          default_settings.checkout_condition_color;\r\n        shop_settings[\"is_checkout_condition_active\"] = false;\r\n      }\r\n      if (shop_settings && !shop_settings[\"continue_shopping_button\"]) {\r\n        shop_settings[\"continue_shopping_button\"] =\r\n          default_settings.continue_shopping_button;\r\n        shop_settings[\"active_continue_shopping_button\"] =\r\n          default_settings.active_continue_shopping_button;\r\n        shop_settings[\"active_continue_shopping_underlined\"] =\r\n          default_settings.active_continue_shopping_underlined;\r\n      }\r\n\r\n      if (shop_settings && !shop_settings.sticky_cart[\"desktop_quantity\"]) {\r\n        shop_settings.sticky_cart.desktop_quantity =\r\n          default_settings.sticky_cart.desktop_quantity;\r\n        shop_settings.sticky_cart.mobile_quantity =\r\n          default_settings.sticky_cart.mobile_quantity;\r\n        shop_settings.sticky_cart.cart_name =\r\n          default_settings.sticky_cart.cart_name;\r\n      }\r\n      if (shop_settings && !shop_settings.badges) {\r\n        shop_settings.badges = default_settings.badges;\r\n        shop_settings.badges.isActive = false;\r\n      }\r\n      if (shop_settings && !shop_settings.announcement) {\r\n        shop_settings.announcement = default_settings.announcement;\r\n        shop_settings.announcement.isActive = false;\r\n      }\r\n      if (shop_settings && !shop_settings.afterPay) {\r\n        shop_settings.afterPay = default_settings.afterPay;\r\n      }\r\n      if (shop_settings && !shop_settings.auto_discount) {\r\n        shop_settings.auto_discount = {\r\n          text: {\r\n            ...default_settings.scary.text,\r\n            font_size: 0.9,\r\n            font_weight: 400,\r\n            text: \"{{title}}\",\r\n          },\r\n          background: default_settings.scary.background,\r\n          border: default_settings.scary.border,\r\n        };\r\n      }\r\n      dispatch({\r\n        type: SET_ALL,\r\n        value: {\r\n          ...shop,\r\n          settings: shop_settings || default_settings,\r\n          // settings: default_settings,\r\n          // show_recharge_alert,\r\n          original_settings: shop.settings || {},\r\n          settingsSaved: !!shop.settings ? true : false, //TODO: this will be deprecated\r\n          redirectToChargeApproval: !shop.chargeAccepted,\r\n        },\r\n      });\r\n    }\r\n  }, [data]);\r\n\r\n  useEffect(() => {\r\n    if (!data?.shop?.id && !window.location.origin) return;\r\n    async function checkStatus() {\r\n      // setCartLoading(true);\r\n      await getScriptStatus(\r\n        data?.shop.id,\r\n        window.location.origin,\r\n        (status, error) => {\r\n          if (!error) {\r\n            setCartActive(status);\r\n          }\r\n          setCartLoading(false);\r\n        }\r\n      );\r\n    }\r\n    checkStatus();\r\n\r\n    const intervalId = setInterval(checkStatus, 6000);\r\n\r\n    return () => clearInterval(intervalId);\r\n  }, [data]);\r\n\r\n  if (error) {\r\n    console.log(error);\r\n    throw new Error(error);\r\n  }\r\n  if (loading || !Object.keys(state).length)\r\n    return <Spinner text=\"Fetching shop data\" />;\r\n  else if (data) {\r\n    const config = {\r\n      apiKey: SHOPIFY_API_KEY,\r\n      shopOrigin: state.id,\r\n      forceRedirect: SHOPIFY_EMBEDDED_FORCE_REDIRECT,\r\n      host: params.get(\"host\") || btoa(state.id),\r\n    };\r\n    const app = createApp(config);\r\n    return (\r\n      <ShopProvider\r\n        value={{\r\n          state,\r\n          setItem,\r\n          dispatch,\r\n          discard,\r\n          validationErrors,\r\n          setValidationErrors,\r\n          AppLocalStorage: AppLocalStorage(state, setItem, app),\r\n          setup: {\r\n            cartActive,\r\n            cartLoading,\r\n            setCartLoading,\r\n          },\r\n        }}\r\n      >\r\n        <UserProvider\r\n          value={{\r\n            attributes: {\r\n              website: data?.shop.id,\r\n              sub: data?.shop.userId,\r\n            },\r\n          }}\r\n        >\r\n          {children}\r\n        </UserProvider>\r\n      </ShopProvider>\r\n    );\r\n  }\r\n};\r\n","import { useQuery } from \"@apollo/react-hooks\";\r\n\r\nexport default function useShop(\r\n  user,\r\n  query,\r\n  variables = {},\r\n  fetchPolicy = \"no-cache\"\r\n) {\r\n  let userId =\r\n    typeof user === \"string\" &&\r\n    user.match(/[a-z0-9][a-z0-9\\-]*\\.myshopify\\.com/i)\r\n      ? user\r\n      : user.attributes.website;\r\n  let { data, loading, error, fetchMore } = useQuery(query, {\r\n    variables: { userId, ...variables },\r\n    fetchPolicy\r\n  });\r\n  return { data, loading, error, fetchMore };\r\n}\r\n","import React, { useContext, useEffect, useState } from \"react\";\r\nimport { getApolloContext } from \"@apollo/react-hooks\";\r\nimport AWSAppSyncClient from \"aws-appsync\";\r\nimport { Spinner } from \"components\";\r\n\r\nconst Rehydrated = ({ children }) => {\r\n  const { client } = useContext(getApolloContext());\r\n  const [rehydrated, setState] = useState(false);\r\n\r\n  useEffect(() => {\r\n    if (client instanceof AWSAppSyncClient) {\r\n      (async () => {\r\n        await client.hydrated();\r\n        setState(true);\r\n      })();\r\n    }\r\n  }, [client]);\r\n  return rehydrated ? <>{children}</> : <Spinner />;\r\n};\r\n\r\nexport default Rehydrated;\r\n","import React from 'react';\r\nimport styles from 'styles/empty_state.module.scss';\r\nimport Button from 'components/Button';\r\nimport useReactRouter from 'use-react-router';\r\n\r\nconst EmptyState = ({ heading, children, Illustration, action = false, secondaryAction = false, background }) => {\r\n\tconst { history, location } = useReactRouter();\r\n\treturn (\r\n\t\t<div className={styles.EmptyState} style={{ background }}>\r\n\t\t\t<Illustration className={styles.illustration} />\r\n\t\t\t<div className={styles.details}>\r\n\t\t\t\t<h2>{heading}</h2>\r\n\t\t\t\t{children}\r\n\t\t\t\t{action && <Button {...action} onClick={() => history.push(action.url + location.search)} />}\r\n\t\t\t\t{secondaryAction && (\r\n\t\t\t\t\t<Button {...secondaryAction} onClick={() => history.push(action.url + location.search)} />\r\n\t\t\t\t)}\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t);\r\n};\r\n\r\nexport default EmptyState;\r\n","import React from 'react';\r\nimport { Switch, Button, ActionsButtons } from 'components';\r\nimport styles from 'styles/items_list.module.scss';\r\nimport get from 'lodash/get';\r\nimport classNames from 'lib/classNames';\r\n\r\nconst Item = (props) => {\r\n\tconst { item, actions, header } = props;\r\n\treturn (\r\n\t\t<tr className={styles.item}>\r\n\t\t\t{header.map((cell) => {\r\n\t\t\t\tswitch (cell.title) {\r\n\t\t\t\t\tcase 'Active':\r\n\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t<td key={`Status-${item.id}`}>\r\n\t\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t\t<Switch value={item.active} onChange={(status) => cell.onChange(item, status)} />\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</td>\r\n\t\t\t\t\t\t);\r\n\r\n\t\t\t\t\tcase 'Created At':\r\n\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t<td key={`${cell.title}-${item.id}`}>\r\n\t\t\t\t\t\t\t\t<div className={classNames('flex-center')}>\r\n\t\t\t\t\t\t\t\t\t{new Date(parseInt(item[cell.value])).toDateString()}\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</td>\r\n\t\t\t\t\t\t);\r\n\r\n\t\t\t\t\tcase 'Updated At':\r\n\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t<td key={`${cell.title}-${item.id}`}>\r\n\t\t\t\t\t\t\t\t<div className={classNames('flex-center')}>\r\n\t\t\t\t\t\t\t\t\t{new Date(parseInt(item[cell.value])).toDateString()}\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</td>\r\n\t\t\t\t\t\t);\r\n\r\n\t\t\t\t\tcase 'Actions':\r\n\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t<td key={`${cell.title}-${item.id}`}>\r\n\t\t\t\t\t\t\t\t<div className={classNames('flex-center')}>\r\n\t\t\t\t\t\t\t\t\t<ActionsButtons {...{ item, actions }} />\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</td>\r\n\t\t\t\t\t\t);\r\n\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t<td key={`${cell.title}-${item.id}`}>\r\n\t\t\t\t\t\t\t\t<div>{getValue(item, cell)}</div>\r\n\t\t\t\t\t\t\t</td>\r\n\t\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t})}\r\n\t\t</tr>\r\n\t);\r\n};\r\n\r\nconst getValue = (item, cell) => {\r\n\tif (cell.value instanceof Function) return cell.value(item);\r\n\treturn get(item, cell.value || cell.title.toLowerCase());\r\n};\r\n\r\nexport default Item;\r\n","import React from 'react';\r\nimport styles from 'styles/items_list.module.scss';\r\nimport Item from './ItemsList_item';\r\nimport { EmptyState } from 'components';\r\nimport { ReactComponent as NoData } from 'svgs/no_data.svg';\r\n\r\nconst ItemsList = ({ items, header, actions, emptyState }) => {\r\n\tif (!items.length)\r\n\t\treturn (\r\n\t\t\t<EmptyState heading=\"No Data\" Illustration={NoData} action={emptyState.action} noIcon>\r\n\t\t\t\t<p>{emptyState.text}</p>\r\n\t\t\t</EmptyState>\r\n\t\t);\r\n\treturn (\r\n\t\t<table cellSpacing=\"0\" cellPadding=\"0\">\r\n\t\t\t<thead className={styles.header}>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t{header.map(item => {\r\n\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t<th\r\n\t\t\t\t\t\t\t\tkey={item.title}\r\n\t\t\t\t\t\t\t\tclassName={item.title}\r\n\t\t\t\t\t\t\t\t// style={{\r\n\t\t\t\t\t\t\t\t// \tdisplay: item.title === 'Actions' ? 'none' : null,\r\n\t\t\t\t\t\t\t\t// }}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t{item.title}\r\n\t\t\t\t\t\t\t</th>\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t})}\r\n\t\t\t\t</tr>\r\n\t\t\t</thead>\r\n\t\t\t<tbody>\r\n\t\t\t\t{items.map((item, index) => (\r\n\t\t\t\t\t<Item header={header} index={index} actions={actions} item={item} key={`item-${item.id}`} />\r\n\t\t\t\t))}\r\n\t\t\t</tbody>\r\n\t\t</table>\r\n\t);\r\n};\r\n\r\nexport default ItemsList;\r\n","import React, { Fragment, useState, useEffect, useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport styles from 'styles/carousel.module.scss';\r\nimport { Button } from 'components';\r\nimport useReactRouter from 'use-react-router';\r\nimport EmbeddedContext from 'context/EmbeddedContext';\r\nimport { History } from '@shopify/app-bridge/actions';\r\n\r\nconst Carousel = ({\r\n\tactive = null,\r\n\tcontents,\r\n\tcontrols,\r\n\tcontrolsPosition = 'both',\r\n\tonChange = null,\r\n\ttype = 'carousel',\r\n}) => {\r\n\tconst { location } = useReactRouter();\r\n\tlet params = new URLSearchParams(location.search);\r\n\tconst { AppBridgeHistory } = useContext(EmbeddedContext);\r\n\tconst ACTIVE_IS_NOT_SET = active === null;\r\n\tconst [activeTab, setActiveTab] = useState(ACTIVE_IS_NOT_SET ? parseInt(params.get('activeTab')) || 0 : active);\r\n\tconst bindedSetActiveTab = (tab) => {\r\n\t\tif (onChange) onChange(tab);\r\n\t\tsetActiveTab(tab);\r\n\t};\r\n\r\n\tuseEffect(() => {\r\n\t\tif (ACTIVE_IS_NOT_SET)\r\n\t\t\tAppBridgeHistory.dispatch(History.Action.REPLACE, `${location.pathname}?activeTab=${activeTab}`);\r\n\t}, [activeTab]);\r\n\r\n\treturn (\r\n\t\t<div className={styles.carousel}>\r\n\t\t\t{['top', 'both'].includes(controlsPosition) && (\r\n\t\t\t\t<Fragment>\r\n\t\t\t\t\t{type === 'carousel' ? (\r\n\t\t\t\t\t\t<CarouselControls {...{ controls, activeTab, setActiveTab }} />\r\n\t\t\t\t\t) : (\r\n\t\t\t\t\t\t<StepperControls {...{ controls, activeTab, setActiveTab }} />\r\n\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t<hr />\r\n\t\t\t\t</Fragment>\r\n\t\t\t)}\r\n\t\t\t<div className={styles.content}>\r\n\t\t\t\t{contents.map((content, index) => {\r\n\t\t\t\t\tlet isFunction = typeof content === 'function';\r\n\t\t\t\t\treturn index === activeTab ? (\r\n\t\t\t\t\t\t<Fragment key={`content-${index}`}>\r\n\t\t\t\t\t\t\t{isFunction ? content(bindedSetActiveTab) : content}\r\n\t\t\t\t\t\t</Fragment>\r\n\t\t\t\t\t) : null;\r\n\t\t\t\t})}\r\n\t\t\t</div>\r\n\t\t\t{['bottom', 'both'].includes(controlsPosition) && (\r\n\t\t\t\t<Fragment>\r\n\t\t\t\t\t<hr />\r\n\t\t\t\t\t<CarouselControls {...{ controls, activeTab, setActiveTab }} />\r\n\t\t\t\t</Fragment>\r\n\t\t\t)}\r\n\t\t</div>\r\n\t);\r\n};\r\n\r\nconst CarouselControls = ({ controls, activeTab, setActiveTab }) => {\r\n\treturn (\r\n\t\t<div className={styles.control}>\r\n\t\t\t{controls.map(\r\n\t\t\t\t(control, index) =>\r\n\t\t\t\t\tcontrol.current === activeTab && (\r\n\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\t// loading={true}\r\n\t\t\t\t\t\t\tkey={`control-${index}`}\r\n\t\t\t\t\t\t\t{...control}\r\n\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\tif (typeof control.next === 'function') control.next(setActiveTab);\r\n\t\t\t\t\t\t\t\telse if (Number.isInteger(control.next)) setActiveTab(control.next);\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t)\r\n\t\t\t)}\r\n\t\t</div>\r\n\t);\r\n};\r\n\r\nconst StepperControls = ({ controls, activeTab, setActiveTab }) => {\r\n\treturn (\r\n\t\t<div className={styles.stepperControls}>\r\n\t\t\t{controls.map((control, index) => (\r\n\t\t\t\t<div\r\n\t\t\t\t\tclassName={`${control.current === activeTab ? styles.active : ''}`}\r\n\t\t\t\t\tkey={`control-${index}`}\r\n\t\t\t\t\t{...control}\r\n\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\tif (typeof control.next === 'function') control.next(setActiveTab);\r\n\t\t\t\t\t\telse if (Number.isInteger(control.next)) setActiveTab(control.next);\r\n\t\t\t\t\t}}\r\n\t\t\t\t>\r\n\t\t\t\t\t{control.text}\r\n\t\t\t\t</div>\r\n\t\t\t))}\r\n\t\t</div>\r\n\t);\r\n};\r\n\r\nCarousel.propTypes = {\r\n\tcontents: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.element, PropTypes.func])).isRequired,\r\n\tcontrols: PropTypes.arrayOf(\r\n\t\tPropTypes.shape({\r\n\t\t\ttext: PropTypes.string.isRequired,\r\n\t\t\tcurrent: PropTypes.number.isRequired,\r\n\t\t})\r\n\t).isRequired,\r\n};\r\nexport default Carousel;\r\n","import React, { useState, useRef, useEffect, useContext } from 'react';\r\nimport propTypes from 'prop-types';\r\nimport md5 from 'crypto-js/md5';\r\nimport cssStyles from 'styles/form_group.module.scss';\r\nimport { Button, Switch, Icon } from 'components';\r\nimport PageScrollContext from 'context/PageScrollContext';\r\nimport classNames from 'lib/classNames';\r\n\r\nconst FormGroup = ({\r\n    label,\r\n    children,\r\n    className = '',\r\n    onFocus,\r\n    onBlur,\r\n    info,\r\n    minWidth = 410,\r\n    focusCondition = () => false,\r\n    styles = { content: {}, title: {} },\r\n    noBorderBottom,\r\n    collapsable = false,\r\n    isOpen = true,\r\n    fullWidth = false,\r\n    withSwitch = false,\r\n    beta = false\r\n}) => {\r\n    const group = useRef(null);\r\n    const groupContent = useRef(null);\r\n    const { scrollTop, getScrollTop } = useContext(PageScrollContext) || {};\r\n    const [collapsed, setCollapsed] = useState(isOpen);\r\n    const [maxHeight, setMaxHeight] = useState(0);\r\n\r\n    const handleClick = container => event => {\r\n        const focusWithIn =\r\n            container === document.activeElement ||\r\n            container.contains(document.activeElement) ||\r\n            focusCondition({\r\n                activeElement: document.activeElement,\r\n                event,\r\n                container\r\n            }) ||\r\n            !![...container.querySelectorAll('.sketch-picker')].find(picker =>\r\n                picker.contains(event.target)\r\n            );\r\n        if (focusWithIn && onFocus) onFocus();\r\n        else if (!focusWithIn && onBlur) onBlur();\r\n    };\r\n\r\n    useEffect(\r\n        () => {\r\n            if (onFocus || onBlur) {\r\n                document.addEventListener('mouseup', handleClick(group.current));\r\n            }\r\n            return () => {\r\n                if (onFocus || onBlur) {\r\n                    document.removeEventListener('mouseup', handleClick(group.current));\r\n                }\r\n            };\r\n        },\r\n        [group.current, onFocus, onBlur]\r\n    );\r\n\r\n    useEffect(\r\n        () => {\r\n            if (groupContent.current) {\r\n                setMaxHeight(groupContent.current.offsetHeight);\r\n            }\r\n        },\r\n        [collapsed]\r\n    );\r\n\r\n    return (\r\n      <div\r\n        className={classNames(\r\n          `flex flex-wrap sm:flex-col md:flex-col lg:flex-row border-gray-300 border-b ${\r\n            collapsable ? \"\" : \"pt-6 pb-6\"\r\n          } group-wrapper`\r\n        )}\r\n      >\r\n        <div\r\n          className={classNames(\r\n            `${\r\n              collapsable\r\n                ? \"w-full flex-grow pt-6 pb-6\"\r\n                : `${\r\n                    fullWidth\r\n                      ? \"w-full\"\r\n                      : \"flex-grow sm:w-full md:w-full lg:w-1/3\"\r\n                  } pb-3`\r\n            } group-left-side flex flex-row pr-2 justify-between items-start cursor-pointer`\r\n          )}\r\n          style={{ ...styles.title, transition: \"margin 0.4s ease\" }}\r\n          onClick={() => {\r\n            setCollapsed(!collapsed);\r\n          }}\r\n        >\r\n          <div className={classNames(\"flex-col\")}>\r\n            <label\r\n              className={classNames(\r\n                `${\r\n                  collapsable\r\n                    ? \"text-lg text-gray-700\"\r\n                    : \"text-base text-gray-800\"\r\n                } mb-2 font-bold capitalize relative group-label cursor-pointer`\r\n              )}\r\n              onClick={(e) => {\r\n                if (!scrollTop) return;\r\n                const padding =\r\n                  1.5 *\r\n                  parseFloat(\r\n                    getComputedStyle(document.documentElement).fontSize\r\n                  );\r\n                scrollTop(e.target.closest(\".mu-group-wrapper\").offsetTop - 0);\r\n              }}\r\n              id={`id_${md5(label)}`}\r\n            >\r\n              <Icon\r\n                icon=\"hashtag\"\r\n                style={{\r\n                  maxHeight: 27,\r\n                }}\r\n                className=\"absolute top-0 left-0 transform -translate-x-full text-gray-500 h-full pr-1 group-label-icon hidden\"\r\n              />\r\n              {label}\r\n            </label>\r\n            {!!info && (\r\n              <p\r\n                className={classNames(\"text-gray-500 text-xs italic\")}\r\n                dangerouslySetInnerHTML={{\r\n                  __html: info.replace(\"\\n\", \"<br/>\"),\r\n                }}\r\n              />\r\n            )}\r\n          </div>\r\n\r\n          <div className={classNames(\"flex flex-wrap\")}>\r\n            {beta && (\r\n              <span\r\n                className={classNames(\r\n                  \"flex-center bg-orange-500 tracking-wider py-1 px-2 rounded-lg text-white text-xxs font-bold\",\r\n                  {\r\n                    \"mr-2\": withSwitch,\r\n                  }\r\n                )}\r\n                style={{ top: -2, right: -2 }}\r\n              >\r\n                Beta\r\n              </span>\r\n            )}\r\n            {!!withSwitch && !collapsable && (\r\n              <Switch BindToContext={withSwitch} />\r\n            )}\r\n          </div>\r\n          {collapsable && (\r\n            <div className={classNames(\"pt-2\")}>\r\n              <svg\r\n                className={classNames(\"w-4 h-3\")}\r\n                viewBox=\"0 0 14 8\"\r\n                fill=\"none\"\r\n                style={{\r\n                  transform: collapsed ? \"rotate(180deg)\" : \"rotate(0deg)\",\r\n                  transition: \"transform 0.4s ease\",\r\n                }}\r\n              >\r\n                <path\r\n                  d=\"M1 1L7 7L13 1\"\r\n                  stroke=\"#718096\"\r\n                  strokeWidth=\"3\"\r\n                  strokeLinecap=\"round\"\r\n                  strokeLinejoin=\"round\"\r\n                />\r\n              </svg>\r\n            </div>\r\n          )}\r\n        </div>\r\n\r\n        <div\r\n          className={classNames(\r\n            `relative sm:w-full md:w-full ${\r\n              collapsable\r\n                ? \"lg:w-2/3 ml-auto sm:flex-grow xl:flex-grow-0\"\r\n                : `${\r\n                    fullWidth ? \"\" : \"lg:w-2/3 \"\r\n                  }flex-grow flex-shrink-0 min-w-2/3 overflow-visible`\r\n            } pl-2 sm:pl-0 md:pl-0`\r\n          )}\r\n          ref={group}\r\n          style={{\r\n            ...styles.content,\r\n            minWidth,\r\n            ...(collapsable\r\n              ? {\r\n                  maxHeight: collapsed ? \"0px\" : `${maxHeight}px`,\r\n                  opacity: collapsed ? 0 : 1,\r\n                  overflow: collapsed ? \"hidden\" : \"visible\",\r\n                  transition: \"all 0.6s ease\",\r\n                }\r\n              : {}),\r\n          }}\r\n        >\r\n          <div\r\n            ref={groupContent}\r\n            className={classNames(\"w-full px-1 pt-1\", { \"pb-6\": collapsable })}\r\n          >\r\n            {children}\r\n          </div>\r\n        </div>\r\n      </div>\r\n    );\r\n};\r\n\r\nFormGroup.propTypes = {\r\n    // children: propTypes.Children.isRequired,\r\n    label: propTypes.string\r\n};\r\nexport default FormGroup;\r\n","import React from 'react';\r\n\r\nconst ErrorsList = ({ error, showFirstOnly = false, style = {} }) => {\r\n\tconst isString = typeof error === 'string';\r\n\tconst isArray = Array.isArray(error) && error.length;\r\n\tif (isString) return <small className=\"error\">{error}</small>;\r\n\tif (isArray && showFirstOnly) return <small className=\"error\" style={style}>{error[0]}</small>;\r\n\telse if (isArray)\r\n\t\treturn error.length ? (\r\n\t\t\t<div style={{ marginTop: 5 }}>\r\n\t\t\t\t{error.map(e => (e ? <small className=\"error\" style={style}>{e}</small> : null))}\r\n\t\t\t</div>\r\n\t\t) : null;\r\n\treturn null;\r\n};\r\n\r\nexport default ErrorsList;\r\n","import React, { useState, Children } from 'react';\r\nimport propTypes from 'prop-types';\r\nimport ErrorsList from 'components/ErrorsList';\r\nimport Switch from 'components/Switch';\r\nimport classNames from 'lib/classNames';\r\nimport { SideBarBadge } from './Sidebar';\r\nimport Button from './Button';\r\n\r\nconst FormControl = ({\r\n    label,\r\n    labelColor = 'text-gray-600',\r\n    children,\r\n    className = '',\r\n    marginBottom = 'mb-6',\r\n    info = null,\r\n    error = null,\r\n    showError = true,\r\n    styles = {\r\n        container: {},\r\n        label: {}\r\n    },\r\n    withSwitch,\r\n    childrenWidth = 'w-1/2',\r\n    singleChildWidth = 'w-full',\r\n    isSingleCol,\r\n    beta,\r\n    action,\r\n    Footer,\r\n    disabled = false,\r\n}) => {\r\n    const isErrorArray = Array.isArray(error);\r\n    const isString = error => typeof error === 'string';\r\n    const hasErrors = (isErrorArray ? error.filter(isString).length : error) && !!showError;\r\n    const getErrors = isErrorArray ? error.filter(isString) : error;\r\n\r\n    const containerClasses = classNames(\r\n        className,\r\n        'relative',\r\n        {\r\n            [marginBottom]: Children.count(children) === 1 || isSingleCol,\r\n            'opacity-50': disabled\r\n        }\r\n    );\r\n\r\n    const labelClasses = classNames(\r\n        'flex items-center block flex-1 flex-grow capitalize text-sm font-bold',\r\n        labelColor,\r\n        {\r\n            'error': !!hasErrors && !disabled,\r\n            'text-gray-400': disabled\r\n        }\r\n    );\r\n\r\n    const infoClasses = classNames(\r\n        'text-gray-500 text-xs italic mb-1',\r\n        {\r\n            'error': !!hasErrors && !disabled,\r\n            'text-gray-400': disabled\r\n        }\r\n    );\r\n\r\n    return (\r\n        <div className={containerClasses}>\r\n            {disabled && (\r\n                <div className=\"absolute bottom-0 left-0 right-0 h-0.5 bg-gray-200 rounded\"></div>\r\n            )}\r\n            {!!label && (\r\n                <div\r\n                    className={classNames('flex items-center mb-1', {\r\n                        'mb-3': Children.count(children) && withSwitch\r\n                    })}\r\n                >\r\n                    <label className={labelClasses}>\r\n                        {label}\r\n                        {disabled && (\r\n                            <span\r\n                                className={classNames(\r\n                                    \"ml-2 flex-center tracking-wider py-1 px-2 rounded-lg text-black text-xs font-bold\"\r\n                                )}\r\n                                style={{ backgroundColor: \"#ffbf6e\" }}\r\n                            >\r\n                                Deprecated\r\n                            </span>\r\n                        )}\r\n                    </label>\r\n                    {(beta && !disabled) && (\r\n                        <span\r\n                            className={classNames(\r\n                                'flex-center bg-orange-500 tracking-wider py-1 px-2 rounded-lg text-white text-xxs font-bold',\r\n                                {\r\n                                    'mr-2': withSwitch\r\n                                }\r\n                            )}\r\n                            style={{ top: -2, right: -2 }}\r\n                        >\r\n                            Beta\r\n                        </span>\r\n                    )}\r\n                    {!!withSwitch && <Switch disabled={disabled} BindToContext={withSwitch} />}\r\n                    {!withSwitch && action && (\r\n                        <Button\r\n                            disabled={disabled}\r\n                            type=\"link-danger\"\r\n                            icon=\"trash\"\r\n                            size=\"medium\"\r\n                            onClick={action}\r\n                            style={{ top: -2, right: -2 }}\r\n                        />\r\n                    )}\r\n                </div>\r\n            )}\r\n            {!!info && (\r\n                <p\r\n                    className={infoClasses}\r\n                    dangerouslySetInnerHTML={{ __html: info.replace(/\\n/g, '<br/>') }}\r\n                />\r\n            )}\r\n            {Children.count(children) > 1 && !isSingleCol && (\r\n                <div\r\n                    className={classNames('flex flex-wrap -mx-2', {\r\n                        'mb-2': !!hasErrors\r\n                    })}\r\n                >\r\n                    {Children.map(children, (child, i) => (\r\n                        <div className={classNames('px-2', childrenWidth, marginBottom)}>\r\n                            {child}\r\n                        </div>\r\n                    ))}\r\n                </div>\r\n            )}\r\n            {(Children.count(children) === 1 || isSingleCol) && (\r\n                <div className={classNames(singleChildWidth)}>\r\n                    {children}\r\n                </div>\r\n            )}\r\n            {!!Footer && <Footer />}\r\n            {!!hasErrors && !disabled && (\r\n                <ErrorsList\r\n                    {...{ error: getErrors, showFirstOnly: true }}\r\n                    style={{ marginTop: 10 }}\r\n                />\r\n            )}\r\n        </div>\r\n    );\r\n};\r\n\r\nFormControl.propTypes = {\r\n    label: propTypes.string,\r\n    labelColor: propTypes.string,\r\n    className: propTypes.string,\r\n    marginBottom: propTypes.string,\r\n    info: propTypes.string,\r\n    error: propTypes.oneOfType([\r\n        propTypes.string,\r\n        propTypes.arrayOf(propTypes.string)\r\n    ]),\r\n    showError: propTypes.bool,\r\n    styles: propTypes.object,\r\n    withSwitch: propTypes.object,\r\n    childrenWidth: propTypes.string,\r\n    singleChildWidth: propTypes.string,\r\n    isSingleCol: propTypes.bool,\r\n    beta: propTypes.bool,\r\n    action: propTypes.func,\r\n    Footer: propTypes.func,\r\n    disabled: propTypes.bool\r\n};\r\n\r\nFormControl.defaultProps = {\r\n    info: false,\r\n    style: {},\r\n    disabled: false\r\n};\r\n\r\nexport default FormControl;","import React from 'react';\r\nimport Icon from 'components/Icon';\r\nimport classNames from 'lib/classNames';\r\n\r\nconst Tag = ({\r\n\timage,\r\n\ttitle,\r\n\tid,\r\n\tonClose,\r\n\tstyle = {\r\n\t\tbackground: null,\r\n\t\tcolor: null,\r\n\t},\r\n}) => {\r\n\treturn (\r\n\t\t<div\r\n\t\t\tclassName={classNames('w-full p-2 relative inline-flex items-center flex-row bg-white rounded shadow')}\r\n\t\t\tstyle={{\r\n\t\t\t\tbackground: style.background,\r\n\t\t\t}}\r\n\t\t>\r\n\t\t\t{image && (\r\n\t\t\t\t<img\r\n\t\t\t\t\tstyle={{ width: 30, height: 30 }}\r\n\t\t\t\t\tsrc={typeof image === 'string' ? image : image.src}\r\n\t\t\t\t\talt={title}\r\n\t\t\t\t/>\r\n\t\t\t)}\r\n\t\t\t{!image && (\r\n\t\t\t\t<div\r\n\t\t\t\t\tstyle={{ fill: '#c4cdd5', width: 30, height: 30, padding: 0 }}\r\n\t\t\t\t\tclassName={classNames('text-transparent')}\r\n\t\t\t\t>\r\n\t\t\t\t\t<svg viewBox=\"0 0 20 20\" className={classNames('w-full h-full')}>\r\n\t\t\t\t\t\t<path fill=\"currentColor\" d=\"M14 9l-5 5-3-2-5 3v4h18v-6z\"></path>\r\n\t\t\t\t\t\t<path d=\"M19 0H1a1 1 0 0 0-1 1v18a1 1 0 0 0 1 1h18a1 1 0 0 0 1-1V1a1 1 0 0 0-1-1zM8 6c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm0 4c1.654 0 3-1.346 3-3S9.654 4 8 4 5 5.346 5 7s1.346 3 3 3zm-6 8v-2.434l3.972-2.383 2.473 1.65c.398.264.925.21 1.262-.126l4.367-4.367L18 13.48V18H2zM18 2v8.92l-3.375-2.7a.999.999 0 0 0-1.332.073l-4.42 4.42-2.318-1.545a1 1 0 0 0-1.07-.025L2 13.233V2h16z\"></path>\r\n\t\t\t\t\t</svg>\r\n\t\t\t\t</div>\r\n\t\t\t)}\r\n\t\t\t<div\r\n\t\t\t\tclassName={classNames('mx-2 flex-1 text-xs font-bold capitalize text-gray-700 truncate ...')}\r\n\t\t\t\tstyle={{ color: style.color }}\r\n\t\t\t>\r\n\t\t\t\t{title}\r\n\t\t\t</div>\r\n\t\t\t<i\r\n\t\t\t\tclassName={classNames('text-red-500')}\r\n\t\t\t\tonClick={() => onClose(id)}\r\n\t\t\t\tstyle={{\r\n\t\t\t\t\tbackground: style.color,\r\n\t\t\t\t}}\r\n\t\t\t>\r\n\t\t\t\t<Icon\r\n\t\t\t\t\ticon=\"times\"\r\n\t\t\t\t\tsize=\"xs\"\r\n\t\t\t\t\tstyle={{\r\n\t\t\t\t\t\tcolor: style.background,\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tclassName=\"cursor-pointer\"\r\n\t\t\t\t/>\r\n\t\t\t</i>\r\n\t\t</div>\r\n\t);\r\n};\r\n\r\nexport default Tag;\r\n","import React, { useState, useEffect, useRef } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Manager, Reference, Popper } from 'react-popper';\r\nimport { SketchPicker } from 'react-color';\r\nimport useBindToContext from 'hooks/useBindToContext';\r\nimport classNames from 'lib/classNames';\r\n\r\nconst formatColor = color => {\r\n    if (!color)\r\n        color = {\r\n            r: 0,\r\n            g: 0,\r\n            b: 0,\r\n            a: 1\r\n        };\r\n    return typeof color === 'string' ? color : `rgba(${color.r},${color.g},${color.b},${color.a})`;\r\n};\r\n\r\nconst ColorPicker = ({\r\n    BindToContext = null,\r\n    value = null,\r\n    onChange = null,\r\n    onVisibleChange,\r\n    text = null,\r\n    position = 'bottom left',\r\n    color_type = 'rgb',\r\n    data_input,\r\n    onFocus,\r\n    onBlur,\r\n    className = '',\r\n    disableAlpha = false\r\n}) => {\r\n    const [BindedValue, BindedOnChange, _, onRender] = useBindToContext(\r\n        BindToContext,\r\n        value,\r\n        onChange\r\n    );\r\n    const contentRef = useRef(null);\r\n    const [visible, _setVisible] = useState(false);\r\n    const setVisible = value => {\r\n        if (onVisibleChange) onVisibleChange(value);\r\n        _setVisible(value);\r\n    };\r\n    const contentStyle = {\r\n        padding: 0,\r\n        border: 'none',\r\n        background: 'none',\r\n        boxShadow: 'none',\r\n        width: 'initial'\r\n    };\r\n    const arrowStyle = {\r\n        zIndex: 1\r\n    };\r\n\r\n    const handleOutSideClick = event => {\r\n        if (!contentRef.current) return;\r\n        else if (contentRef.current.contains(event.target)) return;\r\n\r\n        setVisible(false);\r\n    };\r\n\r\n    useEffect(\r\n        () => {\r\n            if (visible) document.addEventListener('mousedown', handleOutSideClick, false);\r\n            else document.removeEventListener('mousedown', handleOutSideClick, false);\r\n            return () => {\r\n                document.removeEventListener('mousedown', handleOutSideClick, false);\r\n            };\r\n        },\r\n        [visible]\r\n    );\r\n\r\n    //useEffect(() => {\r\n    //if (onRender?.length) onRender.forEach(fn => fn());\r\n    //}, [onRender]);\r\n\r\n    return (\r\n        <div className={classNames('flex items-center', className)}>\r\n            <Manager>\r\n                <Reference>\r\n                    {({ ref }) =>\r\n                        <button\r\n                            type=\"button\"\r\n                            ref={ref}\r\n                            className={classNames('focus:output-none', {\r\n                                'rounded-l border-r': data_input,\r\n                                'rounded border focus:ring': !data_input\r\n                            })}\r\n                            onClick={() => {\r\n                                if (!visible) setVisible(true);\r\n                            }}\r\n                            data-active={visible}\r\n                            onFocus={e => {\r\n                                if (onFocus) onFocus(e);\r\n                            }}\r\n                            onBlur={e => {\r\n                                if (onBlur) onBlur(e);\r\n                            }}\r\n                            style={{\r\n                                width: 37,\r\n                                height: 37,\r\n                                backgroundColor: formatColor(BindedValue)\r\n                            }}\r\n                            tabIndex=\"0\"\r\n                        />}\r\n                </Reference>\r\n                <Popper\r\n                    placement=\"right-start\"\r\n                    positionFixed={false}\r\n                    modifiers={{\r\n                        preventOverflow: { enabled: true },\r\n                        offset: { offset: '100%r,0px', enabled: true }\r\n                    }}\r\n                >\r\n                    {({ ref, style, placement, arrowProps }) => {\r\n                        return visible\r\n                            ? <div ref={contentRef}>\r\n                                  <div\r\n                                      ref={ref}\r\n                                      style={{ ...style, zIndex: 100 }}\r\n                                      data-placement={placement}\r\n                                  >\r\n                                      <SketchPicker\r\n                                          disableAlpha={disableAlpha}\r\n                                          color={BindedValue}\r\n                                          onChange={color => {\r\n                                              BindedOnChange(color[color_type]);\r\n                                          }}\r\n                                      />\r\n                                      <div ref={arrowProps.ref} style={arrowProps.style} />\r\n                                  </div>\r\n                              </div>\r\n                            : null;\r\n                    }}\r\n                </Popper>\r\n            </Manager>\r\n            {!!text &&\r\n                <span\r\n                    className={classNames('flex-1 flex-grow ml-2 text-gray-500 text-sm font-bold')}\r\n                >\r\n                    {text}\r\n                </span>}\r\n        </div>\r\n    );\r\n};\r\n\r\nColorPicker.propTypes = {};\r\n\r\nexport default ColorPicker;\r\n","import React, { useEffect } from 'react';\r\nimport Select, { components } from 'react-select';\r\nimport CreatableSelect from 'react-select/creatable';\r\nimport Icon from 'components/Icon';\r\nimport useBindToContext from 'hooks/useBindToContext';\r\n\r\nconst DropdownIndicator = (props) => {\r\n\treturn (\r\n\t\t<components.DropdownIndicator {...props}>\r\n\t\t\t<Icon icon=\"caret-down\" />\r\n\t\t</components.DropdownIndicator>\r\n\t);\r\n};\r\n\r\nconst colourStyles = (hasError, inInput) => ({\r\n\toption: (styles, { data, isDisabled, isFocused, isSelected }) => {\r\n\t\treturn {\r\n\t\t\t...styles,\r\n\t\t\tbackgroundColor: isDisabled ? null : isSelected ? '#F5F9FC' : isFocused ? '#F5F9FC' : null,\r\n\t\t\tcolor: isDisabled ? '#ccc' : isSelected ? '#027FFF' : isFocused ? '#027FFF' : '#BEC3C5',\r\n\t\t\tcursor: isDisabled ? 'not-allowed' : 'default',\r\n\t\t\tfontSize: '0.875rem',\r\n\t\t\ttextTransform: 'capitalize',\r\n\t\t};\r\n\t},\r\n\tcontrol: (styles, { data, isDisabled, isFocused, isSelected, isHovered }) => {\r\n\t\treturn {\r\n\t\t\t...styles,\r\n\t\t\tborder: inInput ? 'none' : undefined,\r\n\t\t\tboxShadow: inInput ? 'none' : isFocused ? '0 0 0 3px rgba(66, 153, 225, 0.5)' : 'none',\r\n\t\t\tbackgroundColor: inInput || isDisabled ? '#e2e8f0' : styles.backgroundColor,\r\n\t\t\tborderColor: inInput ? 'none' : hasError ? '#eb5757' : '#e2e8f0',\r\n\t\t\tborderRadius: inInput ? '4px 0 0 4px' : '4px',\r\n\t\t\theight: inInput ? '100%' : 39,\r\n\t\t\tminHeight: inInput ? '100%' : 39,\r\n\t\t\tfontWeight: inInput ? 'bold' : undefined,\r\n\t\t\t'&:hover': {\r\n\t\t\t\tborderColor: inInput ? 'none' : hasError ? '#eb5757' : '#e2e8f0',\r\n\t\t\t},\r\n\t\t};\r\n\t},\r\n\tsingleValue: (styles, { data, isDisabled }) => ({\r\n\t\t...styles,\r\n\t\tfontSize: inInput ? 16 : 12,\r\n\t\ttextTransform: 'capitalize',\r\n\t\tcolor: inInput ? '#4299e1' : isDisabled ? '#4a5568' : styles.color,\r\n\t\tfontSize: '0.875rem',\r\n\t}),\r\n\tdropdownIndicator: (styles, { isDisabled }) => ({\r\n\t\t...styles,\r\n\t\tcolor: inInput ? '#4299e1' : isDisabled ? '#4a5568' : styles.color,\r\n\t\t'&:hover': {\r\n\t\t\tcolor: inInput ? '#3182ce' : undefined,\r\n\t\t},\r\n\t}),\r\n\tindicatorSeparator: (styles) => ({ ...styles, display: inInput ? 'none' : 'initial' }),\r\n\tvalueContainer: (styles) => ({ ...styles, padding: '0 8px 0 8px', height: '100%' }),\r\n\tmenu: (styles) => ({ ...styles, padding: 0 }),\r\n});\r\n\r\nconst Dropdown = (props) => {\r\n\tconst {\r\n\t\toptions = [],\r\n\t\tvalue,\r\n\t\tonChange,\r\n\t\tBindToContext = null,\r\n\t\tvalidation = true,\r\n\t\tgetError = null,\r\n\t\tspecificValidation = null,\r\n\t\tinInput = false,\r\n\t\tdisabled,\r\n\t\tclassName = '',\r\n\t\tautoFocus = false,\r\n\t\tisMulti = false,\r\n\t\tcloseMenuOnSelect=true,\r\n\t\tisCreatable = false\r\n\t} = props;\r\n\tconst [BindedValue, BindedOnChange, hasError, onRender] = useBindToContext(\r\n\t\tBindToContext,\r\n\t\tvalue,\r\n\t\tonChange,\r\n\t\tspecificValidation,\r\n\t\tgetError,\r\n\t\tvalidation\r\n\t);\r\n\tlet selectedOption = !isMulti ?\r\n\t\toptions.find((option) => option.value == BindedValue)\r\n\t\t\t:\r\n\t\toptions.filter((option) => BindedValue.indexOf(option.value) !== -1);\r\n\r\n\tconst handleChange = (option) => {\r\n\t\tif(!option){\r\n\t\t\tBindedOnChange(isMulti ? [] : null)\r\n\t\t}else  if(Array.isArray(option)){\r\n\t\t\tBindedOnChange(option.map(op => op.value))\r\n\t\t}else {\r\n\t\t\tBindedOnChange(option.value)\r\n\t\t}\r\n\t}\r\n\t//useEffect(() => {\r\n\t\t//if (onRender?.length) onRender.forEach(fn => fn());\r\n\t//}, [onRender]);\r\n\r\n\tif(isCreatable){\r\n\t\tlet createdOptions = !BindedValue ?\r\n\t\t[]\r\n\t\t\t:\r\n\t\tBindedValue.map(v => ({ value: v, label: v }))\r\n\t\treturn (\r\n\t\t\t<CreatableSelect\r\n\t\t\t\tisClearable={false}\r\n\t\t\t\t{...props}\r\n\t\t\t\tclassName={`basic-single ${className}`}\r\n\t\t\t\tclassNamePrefix=\"select\"\r\n\t\t\t\tisClearable={false}\r\n\t\t\t\tisDisabled={disabled}\r\n\t\t\t\tvalue={createdOptions}\r\n\t\t\t\tonChange={handleChange}\r\n\t\t\t\tcomponents={{ DropdownIndicator, indicatorSeparator: null }}\r\n\t\t\t\tstyles={colourStyles(hasError, inInput)}\r\n\t\t\t\tautoFocus={autoFocus}\r\n\t\t\t\tisMulti={isMulti}\r\n\t\t\t\t// menuIsOpen={false}\r\n\t\t\t\tcloseMenuOnSelect={closeMenuOnSelect}\r\n\t\t\t/>\r\n\t\t)\r\n\t} else\r\n\t\treturn (\r\n\t\t\t<Select\r\n\t\t\t\t{...props}\r\n\t\t\t\tclassName={`basic-single ${className}`}\r\n\t\t\t\tclassNamePrefix=\"select\"\r\n\t\t\t\tisClearable={false}\r\n\t\t\t\tisDisabled={disabled}\r\n\t\t\t\tvalue={selectedOption}\r\n\t\t\t\tonChange={handleChange}\r\n\t\t\t\tcomponents={{ DropdownIndicator, indicatorSeparator: null }}\r\n\t\t\t\tstyles={colourStyles(hasError, inInput)}\r\n\t\t\t\tautoFocus={autoFocus}\r\n\t\t\t\tisMulti={isMulti}\r\n\t\t\t\tcloseMenuOnSelect={closeMenuOnSelect}\r\n\t\t\t/>\r\n\t\t)\r\n};\r\n\r\nexport default Dropdown;\r\n","import React, { useState, useEffect, useCallback } from 'react';\r\nimport Switch from 'components/Switch';\r\nimport Tag from 'components/Tag';\r\nimport Icon from 'components/Icon';\r\nimport ColorPicker from 'components/ColorPicker';\r\nimport Dropdown from 'components/Dropdown';\r\nimport useBindToContext from 'hooks/useBindToContext';\r\nimport styled from 'styled-components';\r\nimport classNames from 'lib/classNames';\r\nimport _ from 'lodash'\r\n\r\nconst Input = ({\r\n\tdisabled,\r\n\tdisabledBgColor = \"bg-gray-300\",\r\n\twithSwitch,\r\n\twithDropdown,\r\n\twithNumber,\r\n\twithWeight,\r\n\twithColor,\r\n\ttags,\r\n\tonFocus,\r\n\tonBlur,\r\n\tinputRef,\r\n\ttype,\r\n\tvalue,\r\n\tautofocus,\r\n\ticon,\r\n\tplaceholder,\r\n\tclassName,\r\n\tstyle,\r\n\tonChange,\r\n\tBindToContext,\r\n\ticonFirst,\r\n\tplaceholder_color,\r\n\tborder_color,\r\n\tmax,\r\n\tmin,\r\n\tvalidation = true,\r\n\tgetError = null,\r\n\tspecificValidation = null,\r\n\tfullWidth,\r\n\tisFlex,\r\n\tstep = 1,\r\n\tindicator\r\n}) => {\r\n\tconst hasTags = !!(tags && tags.length);\r\n\tconst [BindedValue, BindedOnChange, hasError, onRender] = useBindToContext(\r\n\t\tBindToContext,\r\n\t\tvalue,\r\n\t\tonChange,\r\n\t\tspecificValidation,\r\n\t\tgetError,\r\n\t\tvalidation\r\n\t);\r\n\tconst hasLeftNeighbor = !!withColor || !!withDropdown || !!hasTags;\r\n\r\n\tconst [inputValue, setInputValue] = useState(BindedValue)\r\n\t//useEffect(() => {\r\n\t//if (onRender?.length) onRender.forEach(fn => fn());\r\n\t//}, [onRender]);\r\n\r\n\tconst handleChange = (value) => {\r\n\t\tlet newValue = type === 'number' && value.length ? JSON.parse(value) : value;\r\n\t\tif (type === 'number' && typeof newValue === 'number' && max && newValue > max) return;\r\n\t\tBindedOnChange(newValue);\r\n\t\t// setInputValue(newValue)\r\n\t\t// debounce(newValue);\r\n\t};\r\n\r\n\t//   const debounce = useCallback(\r\n\t// \t_.debounce((newValue) => {\r\n\t// \t\tBindedOnChange(newValue);\r\n\t// \t  // send the server request here\t\t\r\n\t// \t}, 200),\r\n\t// \t[]\r\n\t//   );\r\n\treturn (\r\n\t\t<>\r\n\t\t\t<div\r\n\t\t\t\tclassName={classNames(className, 'flex rounded focus-within-ring border', {\r\n\t\t\t\t\t'w-full': !isFlex,\r\n\t\t\t\t\t[disabledBgColor]: disabled,\r\n\t\t\t\t\t'bg-white': !disabled,\r\n\t\t\t\t\t'border-red-400': hasError,\r\n\t\t\t\t})}\r\n\t\t\t\tdata-tags={hasTags}\r\n\t\t\t>\r\n\t\t\t\t{!!withColor && (\r\n\t\t\t\t\t<ColorPicker data_input={true} value={withColor.value} color_type=\"rgb\" onChange={withColor.onChange} />\r\n\t\t\t\t)}\r\n\r\n\t\t\t\t{!!withDropdown && <Dropdown {...withDropdown} className={classNames('w-17')} inInput={true} first />}\r\n\t\t\t\t{icon && iconFirst && (\r\n\t\t\t\t\t<div className={classNames('flex ml-2 text-xs rounded-l items-center')}>\r\n\t\t\t\t\t\t{icon.icon && <Icon {...icon} />}\r\n\t\t\t\t\t\t{icon.char && <span>{icon.char}</span>}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t)}\r\n\t\t\t\t{!!hasTags && (\r\n\t\t\t\t\t<div className={classNames('flex ml-2 items-center')}>\r\n\t\t\t\t\t\t{tags.map(({ id, title, onClose, style = {} }, i) => (\r\n\t\t\t\t\t\t\t<Tag key={i} style={style} title={title} id={id} onClose={(id) => onClose(id)} />\r\n\t\t\t\t\t\t))}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t)}\r\n\r\n\t\t\t\t<input\r\n\t\t\t\t\tonChange={({ target: { value } }) => handleChange(value)}\r\n\t\t\t\t\tstep={step}\r\n\t\t\t\t\tonFocus={(e) => {\r\n\t\t\t\t\t\tif (onFocus) onFocus(e);\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tdisabled={disabled}\r\n\t\t\t\t\tonBlur={(e) => {\r\n\t\t\t\t\t\tif (onBlur) onBlur(e);\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tplaceholder_color={placeholder_color}\r\n\t\t\t\t\tref={inputRef}\r\n\t\t\t\t\ttype={type}\r\n\t\t\t\t\tvalue={BindedValue}\r\n\t\t\t\t\tmax={max}\r\n\t\t\t\t\tmin={min}\r\n\t\t\t\t\tplaceholder={!hasTags ? placeholder : null}\r\n\t\t\t\t\tclassName={classNames(\r\n\t\t\t\t\t\t'border-0 shadow-none min-w-0 w-full appearance-none flex-1 flex-grow py-2 px-3 text-sm text-gray-700 focus:outline-none bg-inherit',\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t'rounded-r': hasLeftNeighbor,\r\n\t\t\t\t\t\t\trounded: !hasLeftNeighbor,\r\n\t\t\t\t\t\t\t'placeholder-red-400': hasError,\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t)}\r\n\t\t\t\t\tautoFocus={autofocus}\r\n\t\t\t\t/>\r\n\t\t\t\t{icon && !iconFirst && (\r\n\t\t\t\t\t<div\r\n\t\t\t\t\t\tclassName={classNames(\r\n\t\t\t\t\t\t\t'h-full flex p-2 items-center justify-center bg-gray-300 text-blue-500 font-bold text-sm rounded-r'\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t{icon.icon && <Icon {...icon} />}\r\n\t\t\t\t\t\t{icon.char && <span>{icon.char}</span>}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t)}\r\n\t\t\t\t{withSwitch && (\r\n\t\t\t\t\t<div className={classNames('flex items-center justify-center bg-white mr-3 rounded-r border-l pl-2')}>\r\n\t\t\t\t\t\t<Switch onFocus={onFocus} onBlur={onBlur} BindToContext={withSwitch} />\r\n\t\t\t\t\t</div>\r\n\t\t\t\t)}\r\n\t\t\t\t{withWeight && (\r\n\t\t\t\t\t<div className={classNames('flex items-center')}>\r\n\t\t\t\t\t\t<span className={classNames('bg-gray-300 number-input-separator')}></span>\r\n\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\ttype=\"number\"\r\n\t\t\t\t\t\t\tvalue={withWeight.value}\r\n\t\t\t\t\t\t\tonChange={withWeight.onChange}\r\n\t\t\t\t\t\t\tmin={withWeight.min || 0}\r\n\t\t\t\t\t\t\tmax={withWeight.max || 900}\r\n\t\t\t\t\t\t\tonFocus={(e) => {\r\n\t\t\t\t\t\t\t\tif (onFocus) onFocus(e);\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\tstep={withWeight.step || step}\r\n\t\t\t\t\t\t\tonBlur={(e) => {\r\n\t\t\t\t\t\t\t\tif (onBlur) onBlur(e);\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\tclassName={classNames(\r\n\t\t\t\t\t\t\t\t'w-12 focus:outline-none appearance-none text-sm py-2 pl-3 text-gray-700 items-center'\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t<div className={classNames('pr-2 flex flex-col relative ')}>\r\n\t\t\t\t\t\t\t<button type='button' onClick={() => withWeight.onClick(withWeight.value + withWeight.step)} className={classNames('focus:ring-0 focus:outline-none p-0 flex-1 flex-center')}><Icon icon=\"caret-up\" /></button>\r\n\t\t\t\t\t\t\t<button type='button' onClick={() => withWeight.onClick(withWeight.value - withWeight.step)} className={classNames('focus:ring-0 focus:outline-none p-0 flex-1 flex-center')}><Icon icon=\"caret-down\" /></button>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t)}\r\n\t\t\t\t{withNumber && (\r\n\t\t\t\t\t<div className={classNames('flex items-center')}>\r\n\t\t\t\t\t\t<span className={classNames('bg-gray-300 number-input-separator')}></span>\r\n\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\ttype=\"number\"\r\n\t\t\t\t\t\t\tvalue={withNumber.value}\r\n\t\t\t\t\t\t\tonChange={withNumber.onChange}\r\n\t\t\t\t\t\t\tmin={withNumber.min || 0}\r\n\t\t\t\t\t\t\tonFocus={(e) => {\r\n\t\t\t\t\t\t\t\tif (onFocus) onFocus(e);\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\tstep={withNumber.step || step}\r\n\t\t\t\t\t\t\tonBlur={(e) => {\r\n\t\t\t\t\t\t\t\tif (onBlur) onBlur(e);\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\tclassName={classNames(\r\n\t\t\t\t\t\t\t\t'w-12 focus:outline-none appearance-none text-sm py-2 pl-3 text-gray-700 items-center'\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t<div className={classNames('pr-2 flex flex-col relative ')}>\r\n\t\t\t\t\t\t\t<button type='button' onClick={() => withNumber.onClick(withNumber.value + withNumber.step)} className={classNames('focus:ring-0 focus:outline-none p-0 flex-1 flex-center')}><Icon icon=\"caret-up\" /></button>\r\n\t\t\t\t\t\t\t<button type='button' onClick={() => withNumber.onClick(withNumber.value - withNumber.step)} className={classNames('focus:ring-0 focus:outline-none p-0 flex-1 flex-center')}><Icon icon=\"caret-down\" /></button>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t{withNumber.icon.icon ||\r\n\t\t\t\t\t\t\t(withNumber.icon.char && (\r\n\t\t\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\t\t\tclassName={classNames(\r\n\t\t\t\t\t\t\t\t\t\t'h-full flex p-2 items-center justify-center bg-gray-300 text-blue-500 font-bold text-sm rounded-r'\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t{withNumber.icon.icon && <Icon {...withNumber.icon} />}\r\n\t\t\t\t\t\t\t\t\t{withNumber.icon.char && <span>{withNumber.icon.char}</span>}\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t)}\r\n\t\t\t</div>\r\n\t\t\t{\r\n\t\t\t\tindicator && <p className={classNames(\"text-gray-500 text-xs italic\")}>{indicator}</p>\r\n\t\t\t}\r\n\t\t</>\r\n\t);\r\n};\r\n\r\nInput.defaultProps = {\r\n\tswitch: false,\r\n\ttags: [],\r\n\tdisabled: false,\r\n\tstyle: {},\r\n\tonEnter: false,\r\n\tonFocus: false,\r\n\tonBlur: false,\r\n\tonKeyDown: false,\r\n\tinputRef: null,\r\n\tBindToContext: null,\r\n\tdispatch: null,\r\n\tplaceholder: '',\r\n\twithSwitch: false,\r\n\twithNumber: false,\r\n\twithDropdown: false,\r\n\tvalue: undefined,\r\n\tclassName: '',\r\n\ticonFirst: false,\r\n\tplaceholder_color: null,\r\n\tborder_color: null,\r\n\tmax: null,\r\n\tmin: null,\r\n};\r\n\r\nexport default Input;\r\n","import React, { useState, useEffect, useCallback } from 'react';\r\nimport Switch from 'components/Switch';\r\nimport Tag from 'components/Tag';\r\nimport Icon from 'components/Icon';\r\nimport ColorPicker from 'components/ColorPicker';\r\nimport Dropdown from 'components/Dropdown';\r\nimport useBindToContext from 'hooks/useBindToContext';\r\nimport styled from 'styled-components';\r\nimport classNames from 'lib/classNames';\r\nimport  _ from 'lodash'\r\n\r\nconst Textarea = ({\r\n\tdisabled,\r\n\tonFocus,\r\n\tonBlur,\r\n\tinputRef,\r\n\tvalue,\r\n\tautofocus,\r\n\tplaceholder,\r\n\tclassName,\r\n\tonChange,\r\n\tBindToContext,\r\n\tplaceholder_color,\r\n\tborder_color,\r\n\tvalidation = true,\r\n\tgetError = null,\r\n\tspecificValidation = null,\r\n\tisFlex,\r\n\trow= 2\r\n}) => {\r\n\tconst [BindedValue, BindedOnChange, hasError, onRender] = useBindToContext(\r\n\t\tBindToContext,\r\n\t\tvalue,\r\n\t\tonChange,\r\n\t\tspecificValidation,\r\n\t\tgetError,\r\n\t\tvalidation\r\n\t);\r\n\r\n\tconst handleChange = (value) => {\r\n\t\tBindedOnChange(value);\r\n\t}\r\n\treturn (\r\n\t\t<div\r\n\t\t\tclassName={classNames(className, 'flex rounded focus-within-ring border', {\r\n\t\t\t\t'w-full': !isFlex,\r\n\t\t\t\t'bg-gray-300': disabled,\r\n\t\t\t\t'bg-white': !disabled,\r\n\t\t\t\t'border-red-400': hasError,\r\n\t\t\t})}\r\n\t\t>\r\n\t\t\t\r\n\t\t\t<textarea\r\n\t\t\t\tonChange={({ target: { value } }) => handleChange(value)}\r\n\t\t\t\tonFocus={(e) => {\r\n\t\t\t\t\tif (onFocus) onFocus(e);\r\n\t\t\t\t}}\r\n\t\t\t\tdisabled={disabled}\r\n\t\t\t\tonBlur={(e) => {\r\n\t\t\t\t\tif (onBlur) onBlur(e);\r\n\t\t\t\t}}\r\n\t\t\t\tplaceholder_color={placeholder_color}\r\n\t\t\t\tref={inputRef}\r\n\t\t\t\tvalue={BindedValue}\r\n\t\t\t\trow={row}\r\n\t\t\t\tplaceholder={placeholder}\r\n\t\t\t\tclassName={classNames(\r\n\t\t\t\t\t'border-0 shadow-none min-w-0 w-full appearance-none flex-1 flex-grow py-2 px-3 text-sm text-gray-700 focus:outline-none bg-inherit rounded',\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t'placeholder-red-400': hasError,\r\n\t\t\t\t\t}\r\n\t\t\t\t)}\r\n\t\t\t\tautoFocus={autofocus}\r\n\t\t\t/>\r\n\r\n\t\t</div>\r\n\t);\r\n};\r\n\r\nTextarea.defaultProps = {\r\n\tdisabled: false,\r\n\tstyle: {},\r\n\tonEnter: false,\r\n\tonFocus: false,\r\n\tonBlur: false,\r\n\tonKeyDown: false,\r\n\tinputRef: null,\r\n\tBindToContext: null,\r\n\tdispatch: null,\r\n\tplaceholder: '',\r\n\twithSwitch: false,\r\n\twithNumber: false,\r\n\twithDropdown: false,\r\n\tvalue: undefined,\r\n\tclassName: '',\r\n\ticonFirst: false,\r\n\tplaceholder_color: null,\r\n\tborder_color: null,\r\n\tmax: null,\r\n\tmin: null,\r\n};\r\n\r\nexport default Textarea;\r\n","import React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport styles from 'styles/tag_input.module.scss';\r\nimport classNames from 'lib/classNames';\r\nimport { Tag, Icon } from 'components';\r\n\r\nconst TagInput = ({ tags, close }) => {\r\n\treturn (\r\n\t\t<div className={classNames('px-3 p-1 bg-gray-200 mt-6 rounded ')}>\r\n\t\t\t<div className={classNames('flex -mx-2 flex-wrap')}>\r\n\t\t\t\t{tags.map((tag) => (\r\n\t\t\t\t\t<div className={classNames('px-1 w-1/2 py-1')} key={tag.id}>\r\n\t\t\t\t\t\t<Tag {...tag} onClose={close} />\r\n\t\t\t\t\t</div>\r\n\t\t\t\t))}\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t);\r\n};\r\n\r\nTagInput.propTypes = {\r\n\ttags: PropTypes.arrayOf(\r\n\t\tPropTypes.shape({\r\n\t\t\tid: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,\r\n\t\t\timage: PropTypes.string,\r\n\t\t\ttitle: PropTypes.string.isRequired,\r\n\t\t})\r\n\t),\r\n\tclose: PropTypes.func.isRequired,\r\n};\r\n\r\nexport default TagInput;\r\n","import React, { Fragment, useEffect } from 'react';\r\nimport styles from 'styles/button_select.module.scss';\r\nimport useBindToContext from 'hooks/useBindToContext';\r\nimport { Icon, Switch } from 'components';\r\nimport classNames from 'lib/classNames';\r\nimport { SideBarBadge } from './Sidebar';\r\n\r\nconst ButtonSelect = ({\r\n    options,\r\n    onChange,\r\n    value,\r\n    BindToContext,\r\n    onSelect = null,\r\n    loading = [],\r\n    showSeparator = true,\r\n    showCheckedIcon = true,\r\n    inlineIcon = false,\r\n    noIconBG,\r\n    className,\r\n    isVertical,\r\n    disabledClick = false,\r\n    shopContext,\r\n    keyPrefix = ''\r\n}) => {\r\n    const [BindedValue, BindedOnChange, _, onRender] = useBindToContext(\r\n        BindToContext,\r\n        value,\r\n        onChange\r\n    );\r\n    //useEffect(() => {\r\n    //if (onRender?.length) onRender.forEach(fn => fn());\r\n    //}, [onRender]);\r\n\r\n    return (\r\n        <div\r\n            className={`${classNames('flex items-stretch w-full', {\r\n                'flex-col': isVertical\r\n            })} ${className || ''}`}\r\n        >\r\n            {options.map((option, i) => {\r\n                const isLoading = loading[i] ? loading[i] : false;\r\n                const isLastButton = i === options.length - 1;\r\n                const selected = BindedValue === option.value;\r\n                const isDisabled =\r\n                    typeof option.disabled === 'function'\r\n                        ? option.disabled(BindToContext[0], shopContext)\r\n                        : option.disabled;\r\n                return (\r\n                    <Fragment key={keyPrefix + i}>\r\n                        <div\r\n                            className={classNames(\r\n                                'relative flex flex-col flex-1 text-gray-500 rounded bg-white p-2 border-2 focus:outline-none',\r\n                                {\r\n                                    'border-blue-500': selected,\r\n                                    'border-gray-500': !selected,\r\n                                    'justify-start': !!option.info,\r\n                                    'justify-center': !option.info,\r\n                                    'cursor-pointer focus:ring': !isDisabled,\r\n                                    'opacity-50 cursor-not-allowed': !!isDisabled\r\n                                }\r\n                            )}\r\n                            onClick={() => {\r\n                                if (isDisabled || option.disabledClick) return;\r\n                                BindedOnChange(option.value);\r\n                                if (onSelect) onSelect(option.value);\r\n                            }}\r\n                            onKeyPress={event => {\r\n                                if (event.key === 'Enter' && !isDisabled) {\r\n                                    BindedOnChange(option.value);\r\n                                    if (onSelect) onSelect(option.value);\r\n                                }\r\n                            }}\r\n                            tabIndex=\"0\"\r\n                        >\r\n                            {selected &&\r\n                                showCheckedIcon &&\r\n                                <div className={classNames('clear-both')}>\r\n                                    <div\r\n                                        className={classNames('rounded-full flex-center', {\r\n                                            'w-8 h-8 float-right mb-1':\r\n                                                !!option.icon && !inlineIcon,\r\n                                            'w-5 h-5 absolute top-1/2 transform -translate-y-1/2 right-0 mr-1':\r\n                                                !option.icon || inlineIcon,\r\n                                            'bg-blue-500 text-white': !noIconBG,\r\n                                            'text-blue-500': noIconBG\r\n                                        })}\r\n                                    >\r\n                                        <Icon\r\n                                            spin={!!option.loading}\r\n                                            size=\"sm\"\r\n                                            icon={\r\n                                                option.loading\r\n                                                    ? 'spinner-third'\r\n                                                    : noIconBG && !!option.icon\r\n                                                      ? option.icon\r\n                                                      : 'check'\r\n                                            }\r\n                                        />\r\n                                    </div>\r\n                                </div>}\r\n                            {!selected &&\r\n                                !!option.icon &&\r\n                                <div className={classNames('clear-both')}>\r\n                                    <div\r\n                                        className={classNames('rounded-full flex-center', {\r\n                                            'w-8 h-8 float-right mb-1': !inlineIcon,\r\n                                            'w-6 h-6 absolute top-1/2 transform -translate-y-1/2 right-0 mr-2': inlineIcon,\r\n                                            'bg-gray-500 text-white': !noIconBG,\r\n                                            'text-gray-500': noIconBG\r\n                                        })}\r\n                                    >\r\n                                        <Icon\r\n                                            spin={!!option.loading}\r\n                                            icon={\r\n                                                option.loading && option.icon\r\n                                                    ? 'spinner-third'\r\n                                                    : option.icon\r\n                                            }\r\n                                        />\r\n                                    </div>\r\n                                </div>}\r\n                            <h3\r\n                                className={classNames('capitalize font-bold text-sm relative', {\r\n                                    'text-left mb-1': !!option.info,\r\n                                    'text-center': !option.info,\r\n                                    'text-blue-500': selected,\r\n                                    'text-gray-600': !selected,\r\n                                    'flex items-center justify-between': option.withSwitch\r\n                                })}\r\n                            >\r\n                                {option.beta &&\r\n                                    <SideBarBadge\r\n                                        className={classNames(\r\n                                            'flex-center bg-orange-500 transform -translate-y-full'\r\n                                        )}\r\n                                        style={{ top: -2, right: -2 }}\r\n                                    >\r\n                                        Beta\r\n                                    </SideBarBadge>}\r\n                                {option.label}\r\n                                {option.withSwitch &&\r\n                                    <div className={classNames('clear-both')}>\r\n                                        <Switch BindToContext={BindToContext} />\r\n                                    </div>}\r\n                            </h3>\r\n                            {!!option.title &&\r\n                                <p className={classNames('text-gray-600 text-xs font-bold mb-2')}>\r\n                                    {option.title}\r\n                                </p>}\r\n                            {!!option.info &&\r\n                                !option.infoHtml &&\r\n                                <p className={classNames('text-gray-500 text-xs italic h-full')}>\r\n                                    {option.info}\r\n                                </p>}\r\n                            {!!option.info &&\r\n                                !!option.infoHtml &&\r\n                                <p\r\n                                    className={classNames('text-gray-500 text-xs italic h-full')}\r\n                                    dangerouslySetInnerHTML={{ __html: option.info }}\r\n                                />}\r\n                            {!!option.link &&\r\n                                <div\r\n                                    className={classNames(\r\n                                        'text-gray-600 text-xs font-semibold underline mt-2 cursor-pointer'\r\n                                    )}\r\n                                    onClick={() => window.open(option.link.href, '_blank')}\r\n                                >\r\n                                    {option.link.text}\r\n                                </div>}\r\n                        </div>\r\n                        {!isLastButton && showSeparator && <Or isVertical={isVertical} />}\r\n                        {!isLastButton && !showSeparator && <span className={classNames('mx-2')} />}\r\n                    </Fragment>\r\n                );\r\n            })}\r\n        </div>\r\n    );\r\n};\r\n\r\nconst Or = ({ isVertical }) =>\r\n    <div\r\n        className={classNames(\r\n            'flex justify-center items-center',\r\n            isVertical ? 'flex-row w-3/4 my-2 mx-auto' : 'flex-col h-16 mx-2 my-auto'\r\n        )}\r\n    >\r\n        <div\r\n            style={{ width: !isVertical && 2, height: isVertical && 2 }}\r\n            className={classNames('bg-gray-400 flex-1')}\r\n        />\r\n        <span className={classNames('text-gray-600 font-bold uppercase', { 'mx-2': isVertical })}>\r\n            or\r\n        </span>\r\n        <div\r\n            style={{ width: !isVertical && 2, height: isVertical && 2 }}\r\n            className={classNames('bg-gray-400 flex-1')}\r\n        />\r\n    </div>;\r\nexport default ButtonSelect;\r\n","import React, { useEffect, useState, useRef, useContext } from 'react';\r\nimport Styles from 'styles/sticky_cart_feature_preview.module.scss'\r\nimport PreviewContext from 'context/PreviewContext';\r\nimport { CartContext } from \"components/cart\";\r\n\r\nconst StickyCart = ({ settings, money_format, isPreview, device, product }) => {\r\n\r\n    const SC = settings.sticky_cart\r\n    // const {\r\n    // \tcart_currency\r\n    // } = useContext(CartContext);\r\n    const {\r\n        isUnavailableFocused,\r\n        isStickyActVariantFocused,\r\n        setIsStickyActVariantFocused\r\n    } = useContext(PreviewContext);\r\n\r\n    const [variants, setVariants] = useState({})\r\n    const [isOpen, setIsOpen] = useState(false)\r\n    const [qte, setQte] = useState(1)\r\n\r\n    let price = product.variants[0].price\r\n    let oldPrice = product.variants[0].compare_at_price || 0\r\n\r\n\r\n    const formatColor = (color) => {\r\n        if (!color)\r\n            color = {\r\n                r: 0,\r\n                g: 0,\r\n                b: 0,\r\n                a: 1,\r\n            };\r\n        return typeof color === 'string' ? color : `rgba(${color.r},${color.g},${color.b},${color.a})`;\r\n    };\r\n    const formatWithDelimiters = (number, precision = 2, thousands = ',', decimal = '.') => {\r\n        if (isNaN(number) || number == null) {\r\n            return 0;\r\n        }\r\n\r\n        number = (number / 100.0).toFixed(precision);\r\n\r\n        var parts = number.split('.'),\r\n            dollars = parts[0].replace(/(\\d)(?=(\\d\\d\\d)+(?!\\d))/g, '$1' + thousands),\r\n            cents = parts[1] ? decimal + parts[1] : '';\r\n\r\n        return dollars + cents;\r\n    }\r\n    const formatMoney = (n, money_format = '${{amount}}') =>\r\n        money_format\r\n            .replace(/{{\\s*?amount\\s*?}}/g, formatWithDelimiters(n, 2))\r\n            .replace(/{{\\s*?amount_with_decimal_separator\\s*?}}/g, formatWithDelimiters(n, 2))\r\n            .replace(/{{\\s*?amount_no_decimals\\s*?}}/g, formatWithDelimiters(n, 0))\r\n            .replace(/{{\\s*?amount_with_comma_separator\\s*?}}/g, formatWithDelimiters(n, 2, \".\", \",\"))\r\n            .replace(/{{\\s*?amount_no_decimals_with_comma_separator\\s*?}}/g, formatWithDelimiters(n, 0, \".\", \",\"))\r\n            .replace(/{{\\s*?amount_with_apostrophe_separator\\s*? }}/g, formatWithDelimiters(n, 2, \"'\", \".\"))\r\n            .replace(/{{\\s*?amount_no_decimals\\s*? }}/g, formatWithDelimiters(n, 2, \"'\", \".\"));\r\n\r\n\r\n    useEffect(() => {\r\n\r\n        const selectedVariants = {}\r\n\r\n        product.options.forEach(option => {\r\n            selectedVariants['option' + option.position] = option.name\r\n        })\r\n        setVariants(\r\n            selectedVariants\r\n        )\r\n\r\n\r\n        // auto close the selects\r\n        window.addEventListener('click', function (e) {\r\n            const selects = document.querySelectorAll('[data-open=\"open\"]')\r\n            // console.log(selects)\r\n            selects.forEach(select => {\r\n                if (select && !select.contains(e.target)) {\r\n                    select.dataset.open = \"close\"\r\n                }\r\n            })\r\n\r\n        });\r\n\r\n    }, [])\r\n\r\n    const changeSelect = (value, position) => {\r\n        let tmpVariants = variants\r\n        tmpVariants['option' + position] = value\r\n        setVariants(\r\n            { ...tmpVariants }\r\n        )\r\n    }\r\n    const handleMobileAtcClick = () => {\r\n        if (SC.mobile_show_quantity || SC.mobile_show_variants) setIsOpen(!isOpen)\r\n    }\r\n\r\n    useEffect(() => {\r\n        if (!SC.mobile_show_quantity && !SC.mobile_show_variants) setIsOpen(false)\r\n    }, [SC.mobile_show_quantity, SC.mobile_show_variants])\r\n\r\n    const toggleOpen = (element) => {\r\n        // element.currentTarget.focus()\r\n        const state = element.currentTarget.dataset.open\r\n        element.currentTarget.dataset.open = state === \"open\" ? \"close\" : \"open\"\r\n    }\r\n\r\n    const mobile_cart_position = SC.mobile_location\r\n    return (\r\n        <>\r\n            {device === \"desktop\" &&\r\n                <div\r\n                    className={`${Styles.desktopStickyCartContainar} ${SC.btn_style === \"curvy\" && Styles.curvy}`}\r\n                    style={{\r\n                        background: formatColor(SC.background_color),\r\n                        bottom: '10px',\r\n                        opacity: 1,\r\n                        visibility: SC.desktop_active ? \"visible\" : \"hidden\",\r\n                    }}>\r\n                    <div className={Styles.detailsSection}>\r\n                        {SC.desktop_product_preview && product.images.length && (product.images[0].src || typeof (product.images[0]) === \"string\") &&\r\n                            <img\r\n                                src={product.images[0].src || product.images[0]}\r\n                                alt=\"product image\"\r\n                                className={Styles.image}\r\n                            />\r\n                        }\r\n\r\n                        <div className={Styles.details}>\r\n                            {SC.desktop_show_product_name &&\r\n                                <div className={Styles.title}>\r\n                                    {product.title}\r\n                                </div>\r\n                            }\r\n                            <span className={Styles.price}>\r\n                                {SC.desktop_show_compared_price && oldPrice != 0 &&\r\n                                    <span className={Styles.oldPrice} dangerouslySetInnerHTML={{ __html: formatMoney(oldPrice, money_format) }}></span>\r\n                                }\r\n                                <span style={{ color: formatColor(SC.btn_color) }} dangerouslySetInnerHTML={{ __html: formatMoney(price, money_format) }}></span>\r\n                            </span>\r\n                        </div>\r\n                    </div>\r\n                    <div className={Styles.actionsSection}>\r\n\r\n                        {SC.desktop_show_variants && product.variants.length > 1 &&\r\n                            product.options.map((option, id) => {\r\n                                return (\r\n                                    <div className={` ${Styles.map_select_containar} `} key={id}>\r\n                                        <div className={` ${Styles.label} `}>\r\n                                            {option.name}\r\n                                        </div>\r\n                                        <div\r\n                                            key={\"options-\" + id}\r\n                                            className={` ${Styles.map_select} `}\r\n                                            data-open=\"close\"\r\n                                            onClick={(e) => toggleOpen(e)}\r\n                                        >\r\n\r\n                                            <span className={Styles.current}> {option.values[0]} </span>\r\n                                            <ul className={Styles.list} style={{ bottom: \"68px\" }}>\r\n                                                {\r\n                                                    option.values.map((value, id) => <li key={id} data-value={id}\r\n                                                        data-display={value}\r\n                                                        className={` ${Styles.option} ${id === 0 && Styles.selected} `}>{value}</li>)\r\n                                                }\r\n                                            </ul>\r\n                                        </div>\r\n                                    </div>\r\n                                )\r\n                            })\r\n                        }\r\n\r\n                        {SC.desktop_show_quantity &&\r\n\r\n                            <div>\r\n                                <div className={` ${Styles.label} `}>\r\n                                    {SC.desktop_quantity.text}\r\n                                </div>\r\n                                <div className={Styles.qte}>\r\n                                    <span onClick={() => setQte(qte < 2 ? 1 : parseInt(qte, 10) - 1)}\r\n                                        className={Styles.minus}>-</span>\r\n                                    <input\r\n                                        type=\"number\"\r\n                                        value={qte}\r\n                                        min={1}\r\n                                    />\r\n                                    <span onClick={() => setQte(parseInt(qte, 10) + 1)} className={Styles.minus}>+</span>\r\n                                </div>\r\n                            </div>\r\n                        }\r\n\r\n                        <div\r\n                            className={Styles.atc}\r\n                            style={{\r\n                                background: formatColor(SC.btn_color),\r\n                                color: formatColor(SC.txt_color),\r\n                            }}\r\n                        >\r\n                            {isUnavailableFocused ? SC.btn_text_unavailable : SC.btn_text}\r\n                            {/* BUY NOW */}\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            }\r\n            {\r\n                device === \"mobile\" &&\r\n                <>\r\n                    <div\r\n                        className={`${Styles.background}`}\r\n                        data-open={isOpen}\r\n                        onClick={() => setIsOpen(false)}\r\n                    ></div>\r\n                    <div\r\n                        className={Styles.mobileStickyCartContainar}\r\n                        style={{\r\n                            background: formatColor(SC.background_color),\r\n                            [mobile_cart_position]: 0,\r\n                            opacity: 1,\r\n                        }}\r\n                    >\r\n                        <div className={`${Styles.actionsSection}`} data-open={isOpen}>\r\n                            {!isOpen ?\r\n                                SC.mobile_show_title || SC.mobile_show_price ?\r\n                                    <div className={Styles.infos}>\r\n                                        <span className={Styles.title}> {SC.mobile_show_title && product.title} </span>\r\n                                        {\r\n                                            SC.mobile_show_price &&\r\n                                            <span className={Styles.price} style={{ color: formatColor(SC.btn_color) }}>\r\n                                                {SC.mobile_show_compared_price && oldPrice != 0 &&\r\n                                                    <span className={Styles.oldPrice} dangerouslySetInnerHTML={{ __html: formatMoney(oldPrice, money_format) }}></span>\r\n                                                }\r\n                                                <span className={Styles.current} dangerouslySetInnerHTML={{ __html: formatMoney(price, money_format) }} ></span>\r\n                                            </span>\r\n                                        }\r\n                                    </div>\r\n                                    :\r\n                                    null\r\n                                :\r\n                                <div className={Styles.cart}>\r\n                                    <div className={Styles.header}>\r\n                                        <div className={Styles.txt}>\r\n                                            <svg width=\"19\" height=\"18\" viewBox=\"0 0 19 18\" fill=\"none\"\r\n                                                xmlns=\"http://www.w3.org/2000/svg\">\r\n                                                <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n                                                    d=\"M4.64135 0.422363H0.53125V2.13789H3.29187L5.66684 13.0122H5.67782V13.2888H16.8287V13.076L18.71 4.78919L18.9995 3.85341H5.38207L4.89284 1.61338L4.64135 0.422363ZM16.8175 5.56893H5.75674L7.06809 11.5733H15.4544L16.8175 5.56893Z\"\r\n                                                    fill=\"#393939\" />\r\n                                                <path\r\n                                                    d=\"M8.25166 17.5776C9.19914 17.5776 9.96718 16.8096 9.96718 15.8621C9.96718 14.9146 9.19914 14.1465 8.25166 14.1465C7.3042 14.1465 6.53613 14.9146 6.53613 15.8621C6.53613 16.8096 7.3042 17.5776 8.25166 17.5776Z\"\r\n                                                    fill=\"#393939\" />\r\n                                                <path\r\n                                                    d=\"M15.9711 15.8621C15.9711 16.8096 15.203 17.5776 14.2556 17.5776C13.3081 17.5776 12.54 16.8096 12.54 15.8621C12.54 14.9146 13.3081 14.1465 14.2556 14.1465C15.203 14.1465 15.9711 14.9146 15.9711 15.8621Z\"\r\n                                                    fill=\"#393939\" />\r\n                                            </svg>\r\n                                            {SC.cart_name.text}\r\n                                            <div className={Styles.close} onClick={() => setIsOpen(false)}>\r\n                                                <svg width=\"11\" height=\"11\" viewBox=\"0 0 12 12\" fill=\"none\"\r\n                                                    xmlns=\"http://www.w3.org/2000/svg\">\r\n                                                    <path\r\n                                                        d=\"M12 1.20857L10.7914 0L6 4.79143L1.20857 0L0 1.20857L4.79143 6L0 10.7914L1.20857 12L6 7.20857L10.7914 12L12 10.7914L7.20857 6L12 1.20857Z\"\r\n                                                        fill=\"#959595\" />\r\n                                                </svg>\r\n                                            </div>\r\n                                        </div>\r\n\r\n                                    </div>\r\n                                    <div className={Styles.body}>\r\n                                        <div className={Styles.infos}>\r\n                                            {product.images.length && (product.images[0].src || typeof (product.images[0]) === \"string\") &&\r\n                                                <img\r\n                                                    src={product.images[0].src || product.images[0]}\r\n                                                    alt=\"product image\"\r\n                                                    className={Styles.image}\r\n                                                />\r\n                                            }\r\n                                            <span className={Styles.title}> {product.title} </span>\r\n                                            <span className={Styles.price} style={{ color: formatColor(SC.btn_color) }}>\r\n                                                {\r\n                                                    SC.mobile_show_compared_price && oldPrice != 0 &&\r\n                                                    <span className={Styles.oldPrice} dangerouslySetInnerHTML={{ __html: formatMoney(oldPrice, money_format) }} ></span>\r\n                                                }\r\n                                                <span dangerouslySetInnerHTML={{ __html: formatMoney(price, money_format) }} ></span>\r\n                                            </span>\r\n                                        </div>\r\n                                        {SC.mobile_show_quantity &&\r\n                                            <div className={` ${Styles.row} `}>\r\n                                                <div className={` ${Styles.label} `}>\r\n                                                    {SC.mobile_quantity.text}\r\n                                                </div>\r\n                                                <div className={Styles.qte}>\r\n                                                    <span onClick={() => setQte(qte < 2 ? 1 : parseInt(qte, 10) - 1)}\r\n                                                        className={Styles.minus}>-</span>\r\n                                                    <input\r\n                                                        type=\"number\"\r\n                                                        value={qte}\r\n                                                        min={1}\r\n                                                    />\r\n                                                    <span onClick={() => setQte(parseInt(qte, 10) + 1)}\r\n                                                        className={Styles.minus}>+</span>\r\n                                                </div>\r\n                                            </div>\r\n                                        }\r\n                                        {SC.mobile_show_variants && product.variants.length > 1 &&\r\n                                            product.options.map((option, id) => {\r\n                                                return (\r\n                                                    <div className={` ${Styles.row} `} key={id}>\r\n                                                        <div className={` ${Styles.label} `}>\r\n                                                            {option.name}\r\n                                                        </div>\r\n                                                        <div\r\n                                                            key={\"options-\" + id}\r\n                                                            className={` ${Styles.map_select} `}\r\n                                                            data-open=\"close\"\r\n                                                            onClick={(e) => toggleOpen(e)}\r\n                                                        >\r\n\r\n                                                            <span className={Styles.current}> {option.values[0]} </span>\r\n                                                            <ul className={Styles.list} style={{ bottom: \"68px\" }}>\r\n                                                                {\r\n                                                                    option.values.map((value, id) => <li key={id}\r\n                                                                        data-value={id}\r\n                                                                        data-display={value}\r\n                                                                        className={` ${Styles.option} ${id === 0 && Styles.selected} `}>{value}</li>)\r\n                                                                }\r\n                                                            </ul>\r\n                                                        </div>\r\n                                                    </div>\r\n                                                )\r\n                                            })\r\n                                        }\r\n                                    </div>\r\n                                </div>\r\n\r\n                            }\r\n                            <div\r\n                                className={Styles.atc}\r\n                                style={{\r\n                                    background: formatColor(SC.btn_color),\r\n                                    color: formatColor(SC.txt_color),\r\n                                    height: SC.mobile_atc_height.text + \"px\"\r\n                                }}\r\n                                onClick={handleMobileAtcClick}\r\n                            >\r\n                                {isUnavailableFocused ? SC.btn_text_unavailable :\r\n                                    isOpen ? SC.btn_text_variant_active :\r\n                                        (isStickyActVariantFocused && SC.show_btn_atc_txt_variant_active) ? SC.btn_atc_txt_variant_active : SC.btn_text\r\n                                }\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </>\r\n            }\r\n\r\n        </>\r\n\r\n    )\r\n}\r\n\r\n\r\nexport default StickyCart\r\n\r\n","import React, { useState, useContext, useEffect } from 'react';\r\nimport styles from 'styles/preview.module.scss';\r\nimport { PreviewProvider } from 'context/PreviewContext';\r\nimport { Spinner, Cart, Icon } from 'components';\r\nimport UserContext from 'context/UserContext';\r\nimport ShopContext from 'context/ShopContext';\r\nimport Axios from 'axios';\r\nimport { NEW_CAMPAIGN_INITIAL_STATE } from 'lib/globals';\r\nimport { API } from 'aws-amplify';\r\nimport classNames from 'lib/classNames';\r\nimport { fakePreviewProducts } from './cart/Utils';\r\nimport { default as StickyCart } from './stickyCart';\r\nconst cache = {};\r\n\r\nconst Preview = ({ children, openByDefault, noCampaign }) => {\r\n    const [collapsed, setCollapsed] = useState(!openByDefault);\r\n    const [campaignsFilter, setCampaignsFilter] = useState([]);\r\n    const [compareAtMap, setCompareAtMap] = useState({});\r\n    const [preview_active_campaign, setCampaign] = useState(null);\r\n    const [cartItems, setCartItems] = useState([]);\r\n    const [campaigns, setCampaigns] = useState(null);\r\n    const [loading, setLoading] = useState(false);\r\n    const [previewError, setPreviewError] = useState('');\r\n    const [lastCampaign, setLastCampaign] = useState(null);\r\n    const [cartIsEmpty, setCartIsEmpty] = useState(false);\r\n    const [bundlesVariantPickerPreview, setBundlesVariantPickerPreview] = useState(null);\r\n    const [autoDiscount, setAutoDiscount] = useState(false);\r\n    const [giftCurrentPreview, setGiftCurrentPreview] = useState('before');\r\n    const [isStickyActVariantFocused, setIsStickyActVariantFocused] = useState(false);\r\n    const [checkoutButtonLoadingEdit, setCheckoutButtonLoadingEdit] =\r\n      useState(false);\r\n    const [showSubscription, setShowSubscription] = useState(false);\r\n    const [comfirmOrderButtonLoadingEdit, setComfirmOrderButtonLoadingEdit] = useState(false);\r\n    const [showATUAfterText, setShowATUAfterText] = useState(false);\r\n    const [editingProductDetails, setEditingProductDetails] = useState(false);\r\n    const [product, setProduct] = useState(null);\r\n    const [orderCodForm, setOrderCodForm] = useState({});\r\n    const [isCodFormSubmitted, setIsCodFormSubmitted] = useState(false);\r\n\r\n    const [campaign_preview_types, setCampaign_preview_types] = useState([\r\n        // 'bundles',\r\n        // 'add_to_unlock',\r\n        // 'one_check_up_sell',\r\n        //\r\n    ]);\r\n    function previewBundlesVariantsPicker(status,bundles){\r\n        console.log(product);\r\n        const preview =status && product ? {\r\n                product,\r\n                quantity: 1,\r\n                countStartAt:1,\r\n                bundles,\r\n                onConfirm: () => {},\r\n                onClose: async () => {}\r\n        }: null;\r\n        setBundlesVariantPickerPreview(preview)\r\n    }\r\n    const {\r\n        attributes: { website }\r\n    } = useContext(UserContext);\r\n    const {\r\n        state: { settings, money_format, currency },\r\n        AppLocalStorage\r\n    } = useContext(ShopContext);\r\n    const previewCampaign = (campaign, openPreview = true) => {\r\n        // if (!collapsed && campaign == preview_active_campaign) setCollapsed(true);\r\n        // else {\r\n        // \tsetCampaign(campaign);\r\n        // }\r\n        // console.log(campaign.settings.add_to_unlock.goals[0].gift.products[0]);\r\n        // debugger;\r\n        setCampaign(campaign);\r\n        if (openPreview) setCollapsed(false);\r\n    };\r\n    const mergeCompareAt = (data) => {\r\n        setCompareAtMap(Object.assign({}, compareAtMap, data));\r\n    };\r\n\r\n    const PREVIEW_CAN_RENDER_ONLY_WITH_CAMPAIGN = !noCampaign && !!campaigns && !!settings;\r\n    const PREVIEW_CAN_RENDER_WITHOUT_CAMPAIGN = !!noCampaign && !!settings;\r\n    const CAN_RENDER_CART =\r\n        !loading &&\r\n        (!!cartItems.length || !!cartIsEmpty) &&\r\n        (!!PREVIEW_CAN_RENDER_ONLY_WITH_CAMPAIGN || !!PREVIEW_CAN_RENDER_WITHOUT_CAMPAIGN);\r\n\r\n    const isStickyPreview = window.location.pathname === '/sticky';\r\n\r\n    useEffect(() => {\r\n        const generateFakeCartItems = async (campaign) => {\r\n            setLoading(true);\r\n            setLastCampaign(campaign);\r\n            let queryStringParameters = null;\r\n            let productGetter;\r\n            const isSpecificWithNoSelected = campaign?.target?.type !== 'all_products' && !campaign?.target?.selected?.length\r\n            if (!campaign || campaign.target.type === 'all_products' || isSpecificWithNoSelected) {\r\n                queryStringParameters = {};\r\n            } else if (\r\n                campaign.target.type === 'specific_products' &&\r\n                campaign.target.selected?.length\r\n            ) {\r\n                queryStringParameters = { handle: campaign.target.selected[0].handle };\r\n            } else if (\r\n                campaign.target.type === 'specific_collections' &&\r\n                campaign.target.selected?.length\r\n            ) {\r\n                // console.log(campaign.target.selected)\r\n                queryStringParameters = {\r\n                    collection_id: campaign.target.selected[0].id\r\n                };\r\n            }\r\n            if (queryStringParameters || !campaign?.target?.selected?.length) {\r\n                let product = queryStringParameters\r\n                    ? await (async () => {\r\n                          try {\r\n                              const key = JSON.stringify(queryStringParameters);\r\n                              if (cache[key]) return cache[key];\r\n                              const data = await API.get('API_GATEWAY_NEW', '/products', {\r\n                                  queryStringParameters: { limit: 5, ...queryStringParameters }\r\n                              })\r\n                              cache[key] = data.products.find(\r\n                                      (prd) =>\r\n                                          prd.variants.every((v) => Number(v.price) > 0) &&\r\n                                          (prd.variants[0].featured_image?.src || prd.images?.length)\r\n                                  ) || data.products[0];\r\n                              return cache[key];\r\n                          } catch (_error) {\r\n                              return undefined;\r\n                          }\r\n                      })()\r\n                    : fakePreviewProducts('20.00', 5)[0];\r\n                if (product === undefined) product = fakePreviewProducts('20.00', 5)[0];\r\n                if (!product) return setPreviewError('Sorry, there are no products to preview');\r\n                setProduct(product);\r\n                const { variants, title, images, id } = product;\r\n                const variant = variants[0];\r\n                const image =\r\n                    variant.featured_image?.src || product.images?.length\r\n                        ? product.images[0].src\r\n                        : 'https://cdn.shopify.com/s/files/1/0459/2081/3221/t/4/assets/product-placeholder.png?v=1662386189';\r\n                const price = parseFloat((parseFloat(variant.price) * 100).toFixed(0));\r\n                const cartItemQuantity = campaign?.settings?.type === \"bundles\" && campaign?.settings?.bundles?.list?.length ?\r\n                campaign?.settings?.bundles?.list[0].quantity || 1 : 1\r\n                setCartItems([\r\n                    {\r\n                        ...variant,\r\n                        price,\r\n                        product_title: title,\r\n                        image,\r\n                        discounts: autoDiscount\r\n                            ? [\r\n                                  {\r\n                                      title: '10% OFF',\r\n                                      amount: price / 10\r\n                                  }\r\n                              ]\r\n                            : [],\r\n                        line_level_discount_allocations: [\r\n                            {\r\n                                discount_application: {\r\n                                    type: 'automatic'\r\n                                }\r\n                            }\r\n                        ],\r\n                        discounted_price: autoDiscount ? price - price / 10 : price,\r\n                        quantity: cartItemQuantity,\r\n                        variant_id: variant.id\r\n                    }\r\n                ]);\r\n                setCompareAtMap(\r\n                    settings.count_compare_at\r\n                        ? {\r\n                              [variant.id]: variant.compare_at_price\r\n                                  ? Number(variant.compare_at_price) * 100\r\n                                  : undefined\r\n                          }\r\n                        : {}\r\n                );\r\n                if (campaign) {\r\n                    setCampaigns({\r\n                        [variant.product_id]: [\r\n                            {\r\n                                type: campaign.settings.type,\r\n                                [campaign.settings.type]: campaign.settings[campaign.settings.type],\r\n                                multi_one_check_upsell:\r\n                                    campaign.settings.type === 'one_check_up_sell'\r\n                                        ? campaign.settings.multi_one_check_upsell\r\n                                        : undefined\r\n                            }\r\n                        ]\r\n                    });\r\n                }\r\n                setLoading(false);\r\n            }\r\n        };\r\n\r\n        if (!lastCampaign || !cartItems || lastCampaign.target !== preview_active_campaign.target \r\n            || lastCampaign.settings.type !== preview_active_campaign.settings.type\r\n            || JSON.stringify(lastCampaign.settings.bundles.list) !== JSON.stringify(preview_active_campaign.settings.bundles.list)\r\n        ) {\r\n            generateFakeCartItems(preview_active_campaign);\r\n        } else if (preview_active_campaign && cartItems.length) {\r\n            setCampaigns({\r\n                [cartItems[0].product_id]: [\r\n                    {\r\n                        type: preview_active_campaign.settings.type,\r\n                        [preview_active_campaign.settings.type]:\r\n                            preview_active_campaign.settings[preview_active_campaign.settings.type],\r\n                        multi_one_check_upsell:\r\n                            preview_active_campaign.settings.type === 'one_check_up_sell'\r\n                                ? preview_active_campaign.settings.multi_one_check_upsell\r\n                                : undefined\r\n                    }\r\n                ]\r\n            });\r\n        }\r\n    }, [preview_active_campaign, settings.count_compare_at, autoDiscount]);\r\n\r\n    useEffect(() => {\r\n        if (noCampaign && Object.keys(cartItems).length) {\r\n            const {\r\n                modules: { checkout_button },\r\n                theme: { primary, secondary, background },\r\n                font: { color: font_color }\r\n            } = settings;\r\n            const [{ product_id }] = cartItems;\r\n            const fakeCampaigns = campaign_preview_types.map((type) =>\r\n                NEW_CAMPAIGN_INITIAL_STATE(\r\n                    { checkout_button, primary, secondary, font_color, background, type },\r\n                    settings.default_language,\r\n                    currency\r\n                )\r\n            );\r\n            setCampaigns({\r\n                [product_id]: fakeCampaigns.map(({ settings }) => ({\r\n                    type: settings.type,\r\n                    [settings.type]: settings[settings.type]\r\n                }))\r\n            });\r\n        }\r\n        return () => {\r\n\r\n        }\r\n    }, [noCampaign,cartItems, settings, campaign_preview_types]);\r\n\r\n    const getSettings = () => {\r\n        if (!preview_active_campaign) {\r\n            return {\r\n                ...settings,\r\n                money_format\r\n            };\r\n        }\r\n        const campaignModules = preview_active_campaign.settings.modules;\r\n        return {\r\n            ...settings,\r\n            money_format,\r\n            modules: {\r\n                ...campaignModules,\r\n                checkout_button: settings.modules.checkout_button,\r\n                order_note: campaignModules?.order_note || settings.modules.order_note,\r\n                order:\r\n                    campaignModules.order.indexOf('order_note') === -1\r\n                        ? [...campaignModules.order, 'order_note']\r\n                        : campaignModules.order\r\n            }\r\n        };\r\n    };\r\n\r\n    return (\r\n        <PreviewProvider\r\n            value={{\r\n                collapsed,\r\n                setCollapsed,\r\n                setCartIsEmpty,\r\n                setAutoDiscount,\r\n                setGiftCurrentPreview,\r\n                isStickyActVariantFocused,\r\n                setIsStickyActVariantFocused,\r\n                setCheckoutButtonLoadingEdit,\r\n                setComfirmOrderButtonLoadingEdit,\r\n                setShowATUAfterText,\r\n                editingProductDetails,\r\n                setEditingProductDetails,\r\n                previewCampaign,\r\n                preview_active_campaign,\r\n                campaign_preview_types: {\r\n                    get: campaign_preview_types,\r\n                    set: setCampaign_preview_types\r\n                },\r\n                previewBundlesVariantsPicker,\r\n                showSubscription,\r\n                setShowSubscription\r\n            }}\r\n        >\r\n            <div className={styles.wrapper}>\r\n                <div className={styles.content}>{children}</div>\r\n                <div\r\n                    className={styles.preview}\r\n                    data-collapsed={collapsed}\r\n                    data-curved={settings?.curved}\r\n                    id=\"monster_preview\"\r\n                    style={{ background: isStickyPreview ? '#f6f7fb' : '' }}\r\n                >\r\n                    {previewError && (\r\n                        <div className={classNames('h-full flex-center flex-col p-3')}>\r\n                            <Icon\r\n                                icon=\"exclamation-triangle\"\r\n                                className=\"text-red-500 mb-2\"\r\n                                size=\"2x\"\r\n                            />\r\n                            <p className={classNames('text-red-500 text-sm')}>{previewError}</p>\r\n                        </div>\r\n                    )}\r\n                    {!CAN_RENDER_CART && !previewError && <Spinner text=\"Fetching product\" />}\r\n                    {CAN_RENDER_CART && !previewError && !isStickyPreview && (\r\n                        <Cart\r\n                            campaigns={campaigns}\r\n                            shop_settings={getSettings()}\r\n                            shop_url={website}\r\n                            compareAtMap={compareAtMap}\r\n                            cart_items={cartIsEmpty ? [] : cartItems}\r\n                            bundlesVariantPickerPreview={bundlesVariantPickerPreview}\r\n                            giftCurrentPreview={giftCurrentPreview}\r\n                            isPreview={true}\r\n                            showSubscription={showSubscription}\r\n                            cart_currency={currency}\r\n                            setCompareAtMap={mergeCompareAt}\r\n                            showCheckoutLoading={checkoutButtonLoadingEdit}\r\n                            showComfirmOrderLoading={comfirmOrderButtonLoadingEdit}\r\n                            showATUAfterText={showATUAfterText}\r\n                            {...{\r\n                                orderCodForm,\r\n                                setOrderCodForm,\r\n                                isCodFormSubmitted,\r\n                                setIsCodFormSubmitted\r\n                            }}\r\n                            forcePreview={\r\n                                editingProductDetails && product\r\n                                    ? { ...product, showAddCartButton: true }\r\n                                    : null\r\n                            }\r\n                            AppLocalStorage={AppLocalStorage}\r\n                        />\r\n                    )}\r\n                    {product && !previewError && isStickyPreview && (\r\n                        <div className={styles.mobileContainar}>\r\n                            <StickyCart\r\n                                settings={settings}\r\n                                device=\"mobile\"\r\n                                product={product}\r\n                                isPreview={true}\r\n                            />\r\n                        </div>\r\n                    )}\r\n                </div>\r\n\r\n                {product && !previewError && isStickyPreview && (\r\n                    <StickyCart\r\n                        settings={settings}\r\n                        money_format={money_format}\r\n                        device=\"desktop\"\r\n                        product={product}\r\n                        isPreview={true}\r\n                    />\r\n                )}\r\n            </div>\r\n        </PreviewProvider>\r\n    );\r\n};\r\n\r\nexport default Preview;\r\n","import React, { useState, useEffect, useRef } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Button } from 'components';\r\nimport styles from 'styles/actions_buttons.module.scss';\r\nimport useHover from 'hooks/useHover';\r\nimport { useResponsive } from 'react-hooks-responsive'\r\n\r\n\r\nconst ActionsButtons = ({ item, actions }) => {\r\n\tconst [collapsed, setCollapsed] = useState(true);\r\n\tconst getProperValue = (value, item) => (typeof value === 'function' ? value(item) : value);\r\n\tconst button_ref = useRef(null);\r\n\tconst actions_ref = useRef(null);\r\n\tconst breakpoints = { xs: 0, sm: 1045, md: 1200 }\r\n\tconst { size, orientation, screenIsAtLeast, screenIsAtMost } = useResponsive(breakpoints)\r\n\r\n\t// useEffect(() => {\r\n\t// \tdocument.addEventListener('click', handleClick, false);\r\n\t// \treturn () => {\r\n\t// \t\tdocument.removeEventListener('click', handleClick, false);\r\n\t// \t};\r\n\t// }, [collapsed]);\r\n\r\n\t// const handleClick = event => {\r\n\t// \tconst node = button_ref.current;\r\n\t// \tif (!node) return;\r\n\t// \tif (node.contains(event.target)) {\r\n\t// \t\t//click inside the button\r\n\t// \t\treturn setCollapsed(!collapsed); //toggle\r\n\t// \t}\r\n\t// \t//click outside the button\r\n\t// \tsetCollapsed(true); //close\r\n\t// \treturn true;\r\n\t// };\r\n\r\n\treturn (\r\n\t\t<div\r\n\t\t\tclassName={styles.actions}\r\n\t\t\tref={actions_ref}\r\n\t\t>\r\n\t\t\t<div\r\n\t\t\t\tclassName={styles.actions_wrapper}\r\n\t\t\t\tdata-collapsed={collapsed}\r\n\t\t\t\tdata-popover={screenIsAtMost('sm')}\r\n\t\t\t\tonMouseEnter={() => setCollapsed(false)}\r\n\t\t\t\tonMouseLeave={() => setCollapsed(true)}\r\n\t\t\t>\r\n\t\t\t\t{screenIsAtMost('sm') && <Button\r\n\t\t\t\t\tclassName={styles.action_button_menu}\r\n\t\t\t\t\ticon=\"ellipsis-v\"\r\n\t\t\t\t\treact_ref={button_ref}\r\n\t\t\t\t\ttype=\"circle-secondary\"\r\n\t\t\t\t\tstyle={{ margin: '7px', flexShrink: 0 }}\r\n\t\t\t\t/>}\r\n\t\t\t\t{(screenIsAtMost('sm') ? !collapsed : true) && (\r\n\t\t\t\t\t<div>\r\n\t\t\t\t\t\t{actions.map((action, key) => {\r\n\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t<Button\r\n\t\t\t\t\t\t\t\t\tclassName={styles.action_button}\r\n\t\t\t\t\t\t\t\t\tkey={key}\r\n\t\t\t\t\t\t\t\t\ticon={getProperValue(action.icon, item)}\r\n\t\t\t\t\t\t\t\t\tid={item.id}\r\n\t\t\t\t\t\t\t\t\tonClick={() => action.method(item)}\r\n\t\t\t\t\t\t\t\t\ttype={`circle-${getProperValue(action.color, item)}`}\r\n\t\t\t\t\t\t\t\t\tstyle={{ margin: '7px' }}\r\n\t\t\t\t\t\t\t\t\tdisabled={getProperValue(action.disabled,item)}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t})}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t)}\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t);\r\n};\r\n\r\nActionsButtons.propTypes = {};\r\n\r\nexport default ActionsButtons;\r\n","import React, { useContext } from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport NotifyContext from \"context/NotifyContext\";\r\nimport { Button, Icon, Alert } from \"components\";\r\nimport styles from \"styles/notifications.module.scss\";\r\nimport useReactRouter from \"use-react-router\";\r\nimport _ from \"lodash\";\r\nimport classNames from \"lib/classNames\";\r\n\r\nconst Notifications = () => {\r\n  const { state: notifications } = useContext(NotifyContext);\r\n  const { history } = useReactRouter();\r\n  const uniqNotifications = _.uniqBy(Object.values(notifications), \"id\").filter(\r\n    ({ exclude = [], only = [] }) => {\r\n      if (exclude.length && exclude.includes(history.location.pathname))\r\n        return false;\r\n      if (only.length && !only.includes(history.location.pathname))\r\n        return false;\r\n      return true;\r\n    }\r\n  );\r\n  return !!uniqNotifications.length ? (\r\n    <div className={classNames(\"px-6 pt-6\")}>\r\n      {uniqNotifications.map((notification, index) => (\r\n        <Notification key={index} {...notification} />\r\n      ))}\r\n    </div>\r\n  ) : null;\r\n};\r\n\r\nNotifications.propTypes = {};\r\n\r\nconst Notification = ({\r\n  type,\r\n  icon,\r\n  title,\r\n  content = null,\r\n  action = null,\r\n  closeable = true\r\n}) => {\r\n  const icons = {\r\n    info: \"info-square\",\r\n    warning: \"exclamation-square\"\r\n  };\r\n  return (\r\n    <Alert\r\n      {...{ type, title, closeable, icon, className: \"mb-2\" }}\r\n      actions={action ? [action] : []}\r\n    >\r\n      {!!content && <p>{content}</p>}\r\n    </Alert>\r\n  );\r\n};\r\n\r\nexport default Notifications;\r\n","import React, { useEffect } from 'react';\r\nimport InputRange from 'react-input-range';\r\nimport useBindToContext from 'hooks/useBindToContext';\r\nimport 'styles/range.css';\r\n\r\nconst Range = ({\r\n\tmax = 100,\r\n\tmin = 0,\r\n\tstep = 1,\r\n\tvalue = null,\r\n\tonChange = null,\r\n\tBindToContext = null,\r\n\tvalidation = true,\r\n\tgetError = null,\r\n\tspecificValidation = null,\r\n\tformatter = (value) => parseFloat(value.toFixed(2)),\r\n}) => {\r\n\tconst [BindedValue, BindedOnChange, onRender] = useBindToContext(\r\n\t\tBindToContext,\r\n\t\tvalue,\r\n\t\tonChange,\r\n\t\tspecificValidation,\r\n\t\tgetError,\r\n\t\tvalidation\r\n\t);\r\n\r\n\t//useEffect(() => {\r\n\t\t//if (onRender?.length) onRender.forEach(fn => fn());\r\n\t//}, [onRender]);\r\n\r\n\treturn (\r\n\t\t<InputRange\r\n\t\t\tmaxValue={max}\r\n\t\t\tminValue={min}\r\n\t\t\tstep={step}\r\n\t\t\tstyle={{\r\n\t\t\t\tzIndex: 1,\r\n\t\t\t\tmarginBottom: 20,\r\n\t\t\t}}\r\n\t\t\tvalue={parseFloat(BindedValue)}\r\n\t\t\tonChange={(value) => BindedOnChange(formatter(value))}\r\n\t\t/>\r\n\t);\r\n};\r\n\r\nexport default Range;\r\n","import React, { useContext, useEffect } from \"react\";\r\n\r\nimport { Icon } from \"components\";\r\nimport useBindToContext from \"hooks/useBindToContext\";\r\nimport styles from \"styles/product_selector.module.scss\";\r\nimport ShopContext from \"context/ShopContext\";\r\nimport { formatMoney } from \"components/cart/Utils\";\r\n\r\nconst ProductSelector = ({\r\n\tproducts,\r\n\tcontext,\r\n\tshowCreate,\r\n\treducer,\r\n\tBindToContext = null,\r\n\tvalue = null,\r\n\tonChange = null,\r\n\tpresets = false,\r\n\tselectedProduct\r\n}) => {\r\n\tconst [BindedValue, BindedOnChange, __, onRender] = useBindToContext(BindToContext, value, onChange);\r\n\tconst {\r\n\t\tstate: { money_format }\r\n\t} = useContext(ShopContext);\r\n\t//useEffect(() => {\r\n\t\t//if (onRender?.length) onRender.forEach(fn => fn());\r\n\t//}, [onRender]);\r\n\r\n\treturn (\r\n\t\t<div className={styles.container}>\r\n\t\t\t{products.length > 0 &&\r\n\t\t\t\tproducts.map((product, key) => {\r\n\t\t\t\t\t// console.log(product)\r\n\t\t\t\t\tconst selected = BindedValue ? product.id.toString() === BindedValue.id : false;\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\tclassName={styles.tile}\r\n\t\t\t\t\t\t\tdata-selected={!!selected}\r\n\t\t\t\t\t\t\tkey={key}\r\n\t\t\t\t\t\t\tonClick={() =>\r\n\t\t\t\t\t\t\t\tpresets\r\n\t\t\t\t\t\t\t\t\t? onChange(product.id)\r\n\t\t\t\t\t\t\t\t\t: BindedOnChange({ ...reducer(product), image: product.image.src })\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\t\tclassName={`${styles.product} ${selected ? styles.selected : \"\"}`}\r\n\t\t\t\t\t\t\t\tkey={`p-${product.id}`}\r\n\t\t\t\t\t\t\t\tstyle={{\r\n\t\t\t\t\t\t\t\t\tbackgroundImage: `url(${product.image.src ? product.image.src : product.image})`\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t></div>\r\n\t\t\t\t\t\t\t<div className={styles.title}>{product.title}</div>\r\n\t\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\t\tclassName={styles.priceTag}\r\n\t\t\t\t\t\t\t\tdangerouslySetInnerHTML={{\r\n\t\t\t\t\t\t\t\t\t__html: formatMoney(\r\n\t\t\t\t\t\t\t\t\t\t(presets ? product.price : product.variants[0].price) * 100,\r\n\t\t\t\t\t\t\t\t\t\tmoney_format\r\n\t\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t{}\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t);\r\n\t\t\t\t})}\r\n\t\t\t{!presets && (\r\n\t\t\t\t<div className={styles.add} onClick={() => showCreate()}>\r\n\t\t\t\t\t<div className={styles.inside}>\r\n\t\t\t\t\t\t<div>Create New</div>\r\n\t\t\t\t\t\t<Icon icon=\"plus\" size=\"lg\" style={{ color: \"#a2a2a2\" }} />\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t)}\r\n\t\t</div>\r\n\t);\r\n};\r\n\r\nexport default ProductSelector;\r\n","import React, { Fragment, useCallback, useEffect, useMemo, useRef, useState } from 'react';\r\nimport styles from 'styles/image_picker.module.scss';\r\nimport { DragAndDrop, Icon } from 'components';\r\nimport {\r\n\tfaUpload,\r\n} from '@fortawesome/fontawesome-pro-solid';\r\nimport classNames from 'lib/classNames';\r\nimport { API } from 'aws-amplify';\r\nimport useRefState from 'hooks/useRefState';\r\n\r\nconst ImagePicker = ({ onChange, value, simplified = false }) => {\r\n\tconst input = useRef(null);\r\n\tconst [preview, setPreview] = useState(value)\r\n\tconst readImage = ({ target }) => {\r\n\t\tif (target.files && target.files[0]) {\r\n\t\t\tconst file = target.files[0]\r\n\t\t\tconst reader = new FileReader();\r\n\t\t\treader.onload = async function (event) {\r\n\t\t\t\t//TODO: update ui to show a loading indicator\r\n\t\t\t\tconst value = event.target.result\r\n\t\t\t\tsetPreview(value)\r\n\t\t\t\tconst body = {\r\n\t\t\t\t\tfileName: file.name,\r\n\t\t\t\t\tattachment: value.replace(/data:.*\\/.*;base64,/, \"\")\r\n\t\t\t\t}\r\n\t\t\t\t// const response = await API.post(\"API_GATEWAY_NEW\", \"/uploadImage\", { body });\r\n\t\t\t\t// console.log(\"response\", response);\r\n\t\t\t\t// onChange(response.public_url);\r\n\t\t\t};\r\n\t\t\treader.readAsDataURL(file);\r\n\t\t}\r\n\t};\r\n\tconst handleDrop = files => {\r\n\t\tinput.current.files = files;\r\n\t\treadImage({ target: input.current });\r\n\t};\r\n\tconst id = `fp-${new Date().getTime()}`;\r\n\tconst hasPreview = value || preview\r\n\treturn (\r\n\t\t<div className={styles.ImagePicker}>\r\n\t\t\t<input type=\"file\" id={id} onChange={e => readImage(e)} ref={input} />\r\n\t\t\t<label htmlFor={id} className=\"label\">\r\n\t\t\t\t{\r\n\t\t\t\t\tsimplified ?\r\n\t\t\t\t\t\t<span className={classNames('flex-1 flex-grow ml-2 text-gray-500 text-sm font-bold  cursor-pointer')}>Upload my own <Icon icon={faUpload} color=\"\" /></span>\r\n\t\t\t\t\t\t:\r\n\t\t\t\t\t\t<DragAndDrop handleDrop={f => handleDrop(f)}>\r\n\t\t\t\t\t\t\t{hasPreview && (\r\n\t\t\t\t\t\t\t\t<Fragment>\r\n\t\t\t\t\t\t\t\t\t<div className={styles.previewWrapper}>\r\n\t\t\t\t\t\t\t\t\t\t<div className={styles.previewImage} style={{ backgroundImage: `url(${preview})` }} />\r\n\t\t\t\t\t\t\t\t\t\t{value && <div className={styles.image} style={{ backgroundImage: `url(${value})` }} />}\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t<small>Change</small>\r\n\t\t\t\t\t\t\t\t</Fragment>\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t{!hasPreview && (\r\n\t\t\t\t\t\t\t\t<p>\r\n\t\t\t\t\t\t\t\t\t<b>Choose an image </b> or drag it here.\r\n\t\t\t\t\t\t\t\t</p>\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t</DragAndDrop>\r\n\t\t\t\t}\r\n\r\n\t\t\t</label>\r\n\t\t</div>\r\n\t);\r\n};\r\nconst ImagePicker2 = ({ onChange, value }) => {\r\n\tconst reader = useMemo(() => new FileReader(), []);\r\n\tconst input = useRef(null);\r\n\tconst [preview, setPreview, previewRef] = useRefState(value)\r\n\tconst [uploading, setUploading, uploadingRef] = useRefState(false)\r\n\tconst readImage = ({ target }) => {\r\n\t\tif (target.files && target.files[0]) {\r\n\t\t\tsetUploading(true)\r\n\t\t\treader.readAsDataURL(target.files[0]);\r\n\t\t}\r\n\t};\r\n\tconst handleDrop = files => {\r\n\t\tinput.current.files = files;\r\n\t\treadImage({ target: input.current });\r\n\t};\r\n\tconst id = `fp-${new Date().getTime()}`;\r\n\tconst hasPreview = value || previewRef.current\r\n\tuseEffect(() => {\r\n\t\tasync function OnLoad (event) {\r\n\t\t\tconst value = event.target.result\r\n\t\t\tsetPreview(value)\r\n\t\t\tconst body = {\r\n\t\t\t\tfileName: input.current.files[0]?.name || `image_${(new Date()).getTime()}`,\r\n\t\t\t\tattachment: value\r\n\t\t\t}\r\n\t\t\ttry {\r\n\t\t\t\tconst response = await API.post(\"API_GATEWAY_NEW\", \"/uploadImage\", { body });\r\n\t\t\t\tonChange(response.public_url);\r\n\t\t\t\tsetPreview(response.public_url)\r\n\t\t\t} catch (error) {\r\n\t\t\t\tsetPreview(undefined)\r\n\t\t\t}\r\n\t\t\tsetUploading(false)\r\n\t\t};\r\n\t\treader.addEventListener('load', OnLoad);\r\n\t\treturn () => {\r\n\t\t\treader.removeEventListener('load', OnLoad);\r\n\t\t}\r\n\t}, [reader])\r\n\treturn (\r\n\t\t<Fragment>\r\n\t\t\t<input type=\"file\" className={classNames(\"hidden\")} id={id} onChange={e => readImage(e)} ref={input} />\r\n\t\t\t<label htmlFor={id} className={classNames(\"flex justify-center w-full h-32 px-4 transition bg-white border-2 border-gray-300 border-dashed rounded-md appearance-none cursor-pointer hover:border-gray-400 focus:outline-none\")}>\r\n\t\t\t\t<DragAndDrop handleDrop={f => handleDrop(f)} className={classNames(\"w-full h-full flex-center space-x-2\")}>\r\n\t\t\t\t\t{/* <div className={classNames(\"w-full h-full flex-center space-x-2\")}> */}\r\n\t\t\t\t\t{hasPreview && (\r\n\t\t\t\t\t\t<Fragment>\r\n\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t<div className={classNames(\"w-24 h-24 rounded bg-cover bg-center border-2 border-white shadow rounded\")} style={{ backgroundImage: `url(${previewRef.current})` }}>\r\n\t\t\t\t\t\t\t\t\t<div className={classNames(\"flex-center w-full h-full bg-cover bg-center\")} style={{\r\n\t\t\t\t\t\t\t\t\t\tbackground: uploadingRef.current ? \"rgba(255,255,255,0.72)\" : undefined,\r\n\t\t\t\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t\t\t\t\t<svg className={classNames(\"fa-spin h-5 w-5 text-blue-500\", { hidden: !uploadingRef.current })} xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\r\n\t\t\t\t\t\t\t\t\t\t\t<circle className={classNames(\"opacity-25\")} cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"4\"></circle>\r\n\t\t\t\t\t\t\t\t\t\t\t<path className={classNames(\"opacity-75\")} fill=\"currentColor\" d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"></path>\r\n\t\t\t\t\t\t\t\t\t\t</svg>\r\n\t\t\t\t\t\t\t\t\t\t<span className={classNames(\"bg-black text-white font-bold p-2 rounded bg-opacity-60 text-xxs tracking-wider uppercase\", { hidden: uploading || !value })}>change</span>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</Fragment>\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t{!hasPreview && (\r\n\t\t\t\t\t\t<div className={classNames(\"flex flex-col\")}>\r\n\t\t\t\t\t\t\t<div className={classNames(\"opacity-0 mb-2 mx-auto\") + \" \" + styles.dots} />\r\n\t\t\t\t\t\t\t<div className={classNames(\"flex space-x-2\")}>\r\n\t\t\t\t\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" className={classNames(\"w-6 h-6 text-gray-600\")} fill=\"none\" viewBox=\"0 0 24 24\"\r\n\t\t\t\t\t\t\t\t\tstroke=\"currentColor\" strokeWidth=\"2\">\r\n\t\t\t\t\t\t\t\t\t<path strokeLinecap=\"round\" strokeLinejoin=\"round\"\r\n\t\t\t\t\t\t\t\t\t\td=\"M7 16a4 4 0 01-.88-7.903A5 5 0 1115.9 6L16 6a5 5 0 011 9.9M15 13l-3-3m0 0l-3 3m3-3v12\" />\r\n\t\t\t\t\t\t\t\t</svg>\r\n\t\t\t\t\t\t\t\t<span className={classNames(\"font-semibold text-gray-600\")}>\r\n\t\t\t\t\t\t\t\t\tDrop images here, or <span className={classNames(\"text-blue-500 underline\")}>browse</span>\r\n\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div className={classNames(uploadingRef.current && !previewRef.current ? \"visible\" : \"invisible\", \"mt-2 mx-auto\") + \" \" + styles.dots} />\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t{/* </div> */}\r\n\t\t\t\t</DragAndDrop>\r\n\t\t\t</label>\r\n\t\t</Fragment>\r\n\t);\r\n};\r\n\r\nexport default ImagePicker2;\r\n","import React, { useState, useRef, useEffect } from 'react';\r\nimport styles from 'styles/drag_and_drop.module.scss';\r\n\r\nconst DragAndDrop = props => {\r\n\tconst { noClass, className, children } = props\r\n\tconst [state, setState] = useState({ drag: false });\r\n\tconst dropRef = useRef(null);\r\n\r\n\tconst handleDrag = e => {\r\n\t\te.preventDefault();\r\n\t\t// e.stopPropagation();\r\n\t};\r\n\r\n\tconst handleDragIn = e => {\r\n\t\te.preventDefault();\r\n\t\t// e.stopPropagation();\r\n\t\tif (e.dataTransfer.items && e.dataTransfer.items.length > 0) {\r\n\t\t\tsetState({ drag: true });\r\n\t\t}\r\n\t};\r\n\r\n\tconst handleDragOut = e => {\r\n\t\te.preventDefault();\r\n\t\t// e.stopPropagation();\r\n\t\tsetState({ drag: false });\r\n\t};\r\n\r\n\tconst handleDrop = e => {\r\n\t\te.preventDefault();\r\n\t\t// e.stopPropagation();\r\n\t\tsetState({ drag: false });\r\n\t\tif (e.dataTransfer.files && e.dataTransfer.files.length > 0) {\r\n\t\t\tprops.handleDrop(e.dataTransfer.files);\r\n\t\t\te.dataTransfer.clearData();\r\n\t\t}\r\n\t};\r\n\r\n\tuseEffect(() => {\r\n\t\tlet div = dropRef.current;\r\n\t\tdiv.addEventListener('dragenter', handleDragIn);\r\n\t\tdiv.addEventListener('dragleave', handleDragOut);\r\n\t\tdiv.addEventListener('dragover', handleDrag);\r\n\t\tdiv.addEventListener('drop', handleDrop);\r\n\t\treturn () => {\r\n\t\t\tlet div = dropRef.current;\r\n\t\t\tdiv.removeEventListener('dragenter', handleDragIn);\r\n\t\t\tdiv.removeEventListener('dragleave', handleDragOut);\r\n\t\t\tdiv.removeEventListener('dragover', handleDrag);\r\n\t\t\tdiv.removeEventListener('drop', handleDrop);\r\n\t\t};\r\n\t}, []);\r\n\r\n\treturn (\r\n\t\t<div ref={dropRef} className={noClass || className ? className : `${styles.dragAndDrop} ${state.drag ? styles.dragging : ''}`}>\r\n\t\t\t{children}\r\n\t\t</div>\r\n\t);\r\n};\r\n\r\nexport default DragAndDrop;\r\n","import React, { useMemo, useRef } from 'react';\r\nimport useBindToContext from 'hooks/useBindToContext';\r\nimport ReactQuill from 'react-quill';\r\nimport uuid from 'uuid/v1';\r\nimport { GOOGLE_FONTS } from 'lib/globals';\r\nimport 'react-quill/dist/quill.snow.css';\r\nimport classNames from 'lib/classNames';\r\nimport { API } from 'aws-amplify';\r\n\r\nconst getColors = (value) => {\r\n\tconst array = [];\r\n\tif (value === null || value === undefined) return [];\r\n\tif (typeof value === 'string' && new RegExp('^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$').test(value)) array.push(value);\r\n\telse if (typeof value === 'object') {\r\n\t\tObject.entries(value).forEach(([key, v]) => {\r\n\t\t\tarray.push(getColors(value[key]));\r\n\t\t});\r\n\t}\r\n\treturn array;\r\n};\r\n\r\nconst RichEditor = ({\r\n\tBindToContext,\r\n\tvalue,\r\n\tonChange,\r\n\tspecificValidation = null,\r\n\tgetError = null,\r\n\tvalidation = null,\r\n\tdisabled = false,\r\n\tonFocus = null,\r\n\tonBlur = null,\r\n\tplaceholder = undefined,\r\n\timageEmoji = false,\r\n\trtl = false,\r\n\tdebug = false,\r\n\tindicator\r\n}) => {\r\n\tconst id = uuid();\r\n\tconst editorRef = useRef(null);\r\n\tconst colors = BindToContext ? [...new Set(getColors(BindToContext[0].state).flat(Infinity))] : [];\r\n\tconst [BindedValue, BindedOnChange, _hasError, onRender] = useBindToContext(\r\n\t\tBindToContext,\r\n\t\tvalue,\r\n\t\tonChange,\r\n\t\tspecificValidation,\r\n\t\tgetError,\r\n\t\tvalidation,\r\n\t\tdebug\r\n\t);\r\n\tconst input = document.createElement(\"input\");\r\n\tinput.setAttribute(\"type\", \"file\");\r\n\tinput.setAttribute(\"accept\", \"image/*\");\r\n\tinput.onchange = async () => {\r\n\t\tconst file = input.files[0];\r\n\t\tif (/^image\\//.test(file?.type)) {\r\n\t\t\ttry {\r\n\t\t\t\tconst reader = new FileReader();\r\n\t\t\t\treader.readAsDataURL(file)\r\n\t\t\t\treader.onload = async (event) => {\r\n\t\t\t\t\tconst attachment = event.target.result\r\n\t\t\t\t\tconst fileName = file.name\r\n\t\t\t\t\tconst response = await API.post(\"API_GATEWAY_NEW\", \"/uploadImage\", {\r\n\t\t\t\t\t\tbody: { fileName, attachment }\r\n\t\t\t\t\t});\r\n\t\t\t\t\tconst editor = editorRef.current.getEditor();\r\n\t\t\t\t\teditor.insertEmbed(editor.getSelection(), \"image\", response.public_url);\r\n\t\t\t\t}\r\n\t\t\t} catch (error) {\r\n\t\t\t\tconsole.log(error.message);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tconsole.log('You could only upload images.');\r\n\t\t}\r\n\t};\r\n\r\n\tconst modules = useMemo(\r\n    () => ({\r\n      toolbar: {\r\n        container: [\r\n          [{ size: [\"small\", false, \"large\", \"huge\"] }],\r\n          [\"bold\", \"italic\", \"underline\", \"strike\"],\r\n          [{ align: [] }],\r\n        //   [{ color: colors }],\r\n\t\t  [{ color: ['#000000', '#e60000', '#ff9900', '#ffff00', '#008a00', '#0066cc', '#9933ff', '#ffffff', '#facccc', '#ffebcc', '#ffffcc', '#cce8cc', '#cce0f5', '#ebd6ff', '#bbbbbb', '#f06666', '#ffc266', '#ffff66', '#66b966', '#66a3e0', '#c285ff', '#888888', '#a10000', '#b26b00', '#b2b200', '#006100', '#0047b2', '#6b24b2', '#444444', '#5c0000', '#663d00', '#666600', '#003700', '#002966', '#3d1466', 'custom-color'] }],\r\n          [\"image\", \"direction\"],\r\n          [\"link\"],\r\n        ],\r\n        handlers: {\r\n          image: async () => {\r\n            console.log(\"working\");\r\n            input.click();\r\n            return true;\r\n          },\r\n          color: function (value) {\r\n            if (value == \"custom-color\")\r\n              value = window.prompt(\"Enter Hex Color Code\");\r\n            this.quill.format(\"color\", value);\r\n          },\r\n        },\r\n      },\r\n    }),\r\n    []\r\n  );\r\n\r\n\treturn (\r\n\t\t<div>\r\n\t\t\t<ReactQuill\r\n\t\t\t\tid={id}\r\n\t\t\t\tclassName={classNames('bg-white', {\r\n\t\t\t\t\t'emoji-image': imageEmoji,\r\n\t\t\t\t})}\r\n\t\t\t\tref={editorRef}\r\n\t\t\t\ttheme=\"snow\"\r\n\t\t\t\tdisabled={disabled}\r\n\t\t\t\tvalue={BindedValue}\r\n\t\t\t\tplaceholder={placeholder}\r\n\t\t\t\tonChange={(value) => BindedOnChange(value)}\r\n\t\t\t\tonFocus={() => {\r\n\t\t\t\t\tif (onFocus) onFocus();\r\n\t\t\t\t}}\r\n\t\t\t\tonBlur={() => {\r\n\t\t\t\t\tif (onBlur) {\r\n\t\t\t\t\t\tconst editor = document.getElementById(id);\r\n\t\t\t\t\t\tconst activeElement = document.activeElement;\r\n\t\t\t\t\t\tonBlur(editor, activeElement);\r\n\t\t\t\t\t}\r\n\t\t\t\t}}\r\n\t\t\t\tmodules={modules}\r\n\t\t\t/>\r\n\t\t\t{\r\n\t\t\t\tindicator && <p className={classNames(\"text-gray-500 text-xs italic\")}>{indicator}</p>\r\n\t\t\t}\r\n\t\t</div>\r\n\t);\r\n};\r\n\r\nexport default RichEditor;\r\n","import classNames from \"lib/classNames\";\r\nimport React from \"react\"\r\n\r\nexport default function Bindings ({ only = [], custom = null }) {\r\n    return (\r\n        <div className={classNames(\"flex flex-wrap items-center text-xs py-1\")}>\r\n            You can use\r\n            {Object.entries({\r\n                goal: \"goal\",\r\n                amount_left: \"goal minus total\",\r\n                reward: \"reward\"\r\n            })\r\n                .filter(([key]) => {\r\n                    if (!only.length && !custom) return true;\r\n                    return only.includes(key);\r\n                })\r\n                .concat(custom ? [custom] : [])\r\n                .map(([binding, tooltip], key) => {\r\n                    return (\r\n                        <div className={classNames(\"relative parent mx-1\")} key={key}>\r\n                            <span\r\n                                className={classNames(\"font-bold text-gray-500 hover:text-blue-500 cursor-pointer\")}\r\n                            >{`{{${binding}}}`}</span>\r\n                            <div\r\n                                className={classNames(\r\n                                    \"absolute mt-1 bg-black text-white rounded left-0 bottom-full hidden parent-hover:block\"\r\n                                )}\r\n                                style={{\r\n                                    width: \"max-content\"\r\n                                }}\r\n                            >\r\n                                <div className={classNames(\"relative py-1 px-4\")}>\r\n                                    <svg\r\n                                        className={classNames(\r\n                                            \"absolute text-black h-2 left-0 ml-3 top-0 transform -translate-y-1/2\"\r\n                                        )}\r\n                                        x=\"0px\"\r\n                                        y=\"0px\"\r\n                                        viewBox=\"0 0 255 255\"\r\n                                        xmlSpace=\"preserve\"\r\n                                    >\r\n                                        <polygon\r\n                                            className={classNames(\"fill-current\")}\r\n                                            points=\"0,127.5 127.5,0 255,127.5\"\r\n                                        />\r\n                                    </svg>\r\n                                    {tooltip}\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    );\r\n                })}\r\n        </div>\r\n    );\r\n}","import React, { useReducer, useEffect } from \"react\";\r\nimport { getIn } from \"immutable\";\r\nimport { FormControl, Input } from \"components\";\r\nimport Bindings from \"./Bindings\";\r\n\r\nconst CustomText = ({\r\n\tcontext,\r\n\tclassName = \"\",\r\n\tlabel,\r\n\tpath,\r\n\tmin = 0.5,\r\n\tmax = 2,\r\n\thasColor,\r\n\thasNumber = true,\r\n\thasWeight = false, // or the default weight value\r\n\tonFocus,\r\n\tonBlur,\r\n\twithSwitch,\r\n\tlabelColor,\r\n\tmarginBottom,\r\n\tinfo,\r\n\ttext,\r\n\tisSingleCol,\r\n\tbindings,\r\n\tindicator,\r\n\tbeta\r\n}) => {\r\n\tconst { state, setItem, validationErrors } = context;\r\n\tconst textPAth = path + \".text\";\r\n\tconst fontSizePath = path + \".font_size\";\r\n\tconst fontWeightPath = path + \".font_weight\";\r\n\tconst colorPath = path + \".color\";\r\n\tconst withWeight = hasWeight ? {\r\n\t\tvalue: getIn(state, fontWeightPath.split(\".\")) || hasWeight,\r\n\t\tonChange: (e) => {\r\n\t\t\t// setItem(fontWeightPath, JSON.parse(e.target.value)); editable with arrows only\r\n\t\t},\r\n\t\tonClick: (value) => {\r\n\t\t\tif (value >= 100 && value <= 900)\r\n\t\t\t\tsetItem(fontWeightPath, JSON.parse(value));\r\n\t\t},\r\n\t\tmin: 100,\r\n\t\tmax: 900,\r\n\t\tstep: 100\r\n\t} : undefined\r\n\tconst withNumber = hasNumber\r\n\t\t? {\r\n\t\t\tvalue: getIn(state, fontSizePath.split(\".\")),\r\n\t\t\tonChange: (e) => {\r\n\t\t\t\tif (e.target.value >= min && e.target.value <= max)\r\n\t\t\t\t\tsetItem(fontSizePath, JSON.parse(e.target.value));\r\n\t\t\t},\r\n\t\t\tonClick: (value) => {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tif (value >= min && value <= max)\r\n\t\t\t\t\t\tsetItem(fontSizePath, JSON.parse(value.toFixed(2)));\r\n\t\t\t\t} catch (e) {\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t},\r\n\t\t\ticon: { char: \"EM\" },\r\n\t\t\tmin,\r\n\t\t\tmax,\r\n\t\t\tstep: 0.1\r\n\t\t}\r\n\t\t: undefined;\r\n\tconst withColor = hasColor\r\n\t\t? {\r\n\t\t\tvalue: getIn(state, colorPath.split(\".\")),\r\n\t\t\tonChange: (value) => setItem(colorPath, value)\r\n\t\t}\r\n\t\t: false;\r\n\r\n\treturn (\r\n\t\t<FormControl\r\n\t\t\tlabel={label}\r\n\t\t\tinfo={info}\r\n\t\t\tclassName={className}\r\n\t\t\terror={validationErrors[textPAth] || validationErrors[fontSizePath]}\r\n\t\t\tlabelColor={labelColor}\r\n\t\t\twithSwitch={withSwitch}\r\n\t\t\tmarginBottom={marginBottom}\r\n\t\t\tbeta={beta}\r\n\t\t\tisSingleCol\r\n\t\t>\r\n\t\t\t<Input\r\n\t\t\t\ttype=\"text\"\r\n\t\t\t\tBindToContext={[context, textPAth]}\r\n\t\t\t\t{...{\r\n\t\t\t\t\tonFocus,\r\n\t\t\t\t\tonBlur,\r\n\t\t\t\t\twithColor,\r\n\t\t\t\t\twithNumber,\r\n\t\t\t\t\twithWeight,\r\n\t\t\t\t\tindicator\r\n\t\t\t\t}}\r\n\t\t\t/>\r\n\t\t\t{\r\n\t\t\t\tbindings && <Bindings {...bindings} />\r\n\t\t\t}\r\n\t\t</FormControl>\r\n\t);\r\n};\r\n\r\nexport default CustomText;\r\n","import React, { useState, useEffect, useRef } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Manager, Reference, Popper } from 'react-popper';\r\nimport Moment from 'moment';\r\nimport { extendMoment } from 'moment-range';\r\n\r\n// import classNames from 'lib/classNames';\r\nimport styles from 'styles/date_range.module.scss';\r\nimport { Icon, Calendar } from 'components';\r\n\r\nconst moment = extendMoment(Moment);\r\nconst defaultPeriods = [\r\n\t{ label: 'Today', range: moment.range([moment().startOf('day'), moment().endOf('day')]) },\r\n\t{\r\n\t\tlabel: 'Yesterday',\r\n\t\trange: moment.range([moment().subtract(1, 'days').startOf('day'), moment().subtract(1, 'days').endOf('day')]),\r\n\t},\r\n\t{ label: 'This Week', range: moment.range([moment().startOf('week'), moment().endOf('week')]) },\r\n\t{\r\n\t\tlabel: 'Last Week',\r\n\t\trange: moment.range([\r\n\t\t\tmoment().subtract(1, 'weeks').startOf('week'),\r\n\t\t\tmoment().subtract(1, 'weeks').endOf('week'),\r\n\t\t]),\r\n\t},\r\n\t{\r\n\t\tlabel: 'This Month',\r\n\t\trange: moment.range([moment().startOf('month'), moment().endOf('month')]),\r\n\t},\r\n\t{\r\n\t\tlabel: 'Last Month',\r\n\t\trange: moment.range([\r\n\t\t\tmoment().subtract(1, 'months').startOf('month'),\r\n\t\t\tmoment().subtract(1, 'months').endOf('month'),\r\n\t\t]),\r\n\t},\r\n\t{ label: 'All Time', range: null },\r\n];\r\n\r\nconst DateRange = ({ onChange, value, children, button, maxDate, className, minDate, style = {} }) => {\r\n\tconst contentRef = useRef(null);\r\n\tconst tagRef = useRef(null);\r\n\tconst [visible, setVisible] = useState(false);\r\n\tconst handleOutSideClick = (event) => {\r\n\t\tif (!contentRef.current) return;\r\n\t\telse if (contentRef.current.contains(event.target)) return;\r\n\t\tsetVisible(false);\r\n\t};\r\n\r\n\tuseEffect(() => {\r\n\t\tif (visible) document.addEventListener('mousedown', handleOutSideClick, false);\r\n\t\telse document.removeEventListener('mousedown', handleOutSideClick, false);\r\n\t\treturn () => {\r\n\t\t\tdocument.removeEventListener('mousedown', handleOutSideClick, false);\r\n\t\t};\r\n\t}, [visible]);\r\n\r\n\tconst formateUnLabeledRange = () => {\r\n\t\tconst range = [...new Set(value.map((date) => moment(date).format('MMM DD YYYY')))];\r\n\r\n\t\treturn range.length === 2 ? `${range[0]} - ${range[1]}` : range[0];\r\n\t};\r\n\tconst formatTagText = () => {\r\n\t\tconst isLabeled = defaultPeriods.find(({ range }) =>\r\n\t\t\tvalue && range ? moment.range(value).isSame(range) : value === range\r\n\t\t);\r\n\t\treturn isLabeled ? isLabeled.label : formateUnLabeledRange();\r\n\t};\r\n\r\n\treturn (\r\n\t\t<div style={style} className={className} ref={contentRef}>\r\n\t\t\t<Manager>\r\n\t\t\t\t<Reference>\r\n\t\t\t\t\t{({ ref }) => (\r\n\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\tref={ref}\r\n\t\t\t\t\t\t\tstyle={{ width: '100%', ...(button.style || {}) }}\r\n\t\t\t\t\t\t\tclassName={styles.trigger}\r\n\t\t\t\t\t\t\tonClick={(event) => {\r\n\t\t\t\t\t\t\t\tif (tagRef.current && tagRef.current.contains(event.target)) return;\r\n\t\t\t\t\t\t\t\tsetVisible(!visible);\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\tdata-active={!!value}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{button.icon && <Icon icon={button.icon} className=\"mr-2\" />}\r\n\t\t\t\t\t\t\t{button.text}\r\n\r\n\t\t\t\t\t\t\t<Tag\r\n\t\t\t\t\t\t\t\tforwardRef={tagRef}\r\n\t\t\t\t\t\t\t\ttext={formatTagText()}\r\n\t\t\t\t\t\t\t\tclosable={!!value}\r\n\t\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\t\tonChange(null);\r\n\t\t\t\t\t\t\t\t\tsetVisible(false);\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t)}\r\n\t\t\t\t</Reference>\r\n\t\t\t\t<Popper\r\n\t\t\t\t\tplacement=\"right-start\"\r\n\t\t\t\t\tpositionFixed={false}\r\n\t\t\t\t\tmodifiers={{\r\n\t\t\t\t\t\tpreventOverflow: { enabled: true },\r\n\t\t\t\t\t\toffset: { offset: '100%r,-100%r', enabled: true },\r\n\t\t\t\t\t}}\r\n\t\t\t\t>\r\n\t\t\t\t\t{({ ref, style, placement, arrowProps }) => {\r\n\t\t\t\t\t\treturn visible ? (\r\n\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\t\t\tref={ref}\r\n\t\t\t\t\t\t\t\t\tstyle={{\r\n\t\t\t\t\t\t\t\t\t\t...style,\r\n\t\t\t\t\t\t\t\t\t\tzIndex: 100,\r\n\t\t\t\t\t\t\t\t\t\tmarginTop: 10,\r\n\t\t\t\t\t\t\t\t\t\tborderRadius: 4,\r\n\t\t\t\t\t\t\t\t\t\tboxShadow: '0 1px 5px rgba(0, 0, 0, 0.46)',\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\tdata-placement={placement}\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t<DateRangePicker value={value} onChange={(value) => onChange(value)} />\r\n\t\t\t\t\t\t\t\t\t<div ref={arrowProps.ref} style={arrowProps.style} />\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t) : null;\r\n\t\t\t\t\t}}\r\n\t\t\t\t</Popper>\r\n\t\t\t</Manager>\r\n\t\t</div>\r\n\t);\r\n};\r\n\r\nconst Tag = ({ text, onClick, forwardRef, closable }) => {\r\n\treturn (\r\n\t\t<div className={styles.tag}>\r\n\t\t\t<div className={styles.text}>{text}</div>\r\n\t\t\t{closable && (\r\n\t\t\t\t<div className={styles.close} ref={forwardRef} onClick={() => onClick()}>\r\n\t\t\t\t\t<svg\r\n\t\t\t\t\t\theight=\"14\"\r\n\t\t\t\t\t\twidth=\"14\"\r\n\t\t\t\t\t\tviewBox=\"0 0 20 20\"\r\n\t\t\t\t\t\taria-hidden=\"true\"\r\n\t\t\t\t\t\tfocusable=\"false\"\r\n\t\t\t\t\t\tclassName=\"css-tj5bde-Svg\"\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<path d=\"M14.348 14.849c-0.469 0.469-1.229 0.469-1.697 0l-2.651-3.030-2.651 3.029c-0.469 0.469-1.229 0.469-1.697 0-0.469-0.469-0.469-1.229 0-1.697l2.758-3.15-2.759-3.152c-0.469-0.469-0.469-1.228 0-1.697s1.228-0.469 1.697 0l2.652 3.031 2.651-3.031c0.469-0.469 1.228-0.469 1.697 0s0.469 1.229 0 1.697l-2.758 3.152 2.758 3.15c0.469 0.469 0.469 1.229 0 1.698z\"></path>\r\n\t\t\t\t\t</svg>\r\n\t\t\t\t</div>\r\n\t\t\t)}\r\n\t\t</div>\r\n\t);\r\n};\r\n\r\nexport default DateRange;\r\n\r\nconst DateRangePicker = ({ periods, value, onChange }) => {\r\n\treturn (\r\n\t\t<div className={styles.DateRangePicker}>\r\n\t\t\t<div className={styles.menu}>\r\n\t\t\t\t{periods.map(({ label, range }, i) => {\r\n\t\t\t\t\tconst active = value && range ? moment.range(value).isSame(range) : value === range;\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t<span key={i} data-active={active} onClick={() => onChange(range ? range.toDate() : null)}>\r\n\t\t\t\t\t\t\t{label}\r\n\t\t\t\t\t\t</span>\r\n\t\t\t\t\t);\r\n\t\t\t\t})}\r\n\t\t\t</div>\r\n\t\t\t<Calendar range={value} onChange={(value) => onChange(value)} />\r\n\t\t</div>\r\n\t);\r\n};\r\n\r\nDateRangePicker.propTypes = {};\r\n\r\nDateRangePicker.defaultProps = {\r\n\tperiods: defaultPeriods,\r\n};\r\n","import React, { useState, useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport styles from 'styles/calendar.module.scss';\r\nimport { Icon, Dropdown } from 'components';\r\nimport Moment from 'moment';\r\nimport { extendMoment } from 'moment-range';\r\nconst moment = extendMoment(Moment);\r\n\r\nconst Calendar = ({ range, onChange }) => {\r\n\tconst [activePicker, setActivePicker] = useState('days');\r\n\tconst [dateObject, setDateObject] = useState(moment());\r\n\tconst [month, setMonth] = useState(moment(dateObject).format('MMMM'));\r\n\tconst [year, setYear] = useState(parseInt(moment(dateObject).format('YYYY')));\r\n\tconst [lastMonth, setLastMonth] = useState(\r\n\t\tmoment(dateObject)\r\n\t\t\t.subtract(1, 'months')\r\n\t\t\t.format('MMMM')\r\n\t);\r\n\tconst [nextMonth, setNextMonth] = useState(\r\n\t\tmoment(dateObject)\r\n\t\t\t.add(1, 'months')\r\n\t\t\t.format('MMMM')\r\n\t);\r\n\tuseEffect(() => {\r\n\t\tsetDateObject(moment(`${month}/${year}`));\r\n\t\tconst last_month = moment(`${month}/${year}`)\r\n\t\t\t.subtract(1, 'months')\r\n\t\t\t.format('MMMM');\r\n\t\tconst next_month = moment(`${month}/${year}`)\r\n\t\t\t.add(1, 'months')\r\n\t\t\t.format('MMMM');\r\n\t\tsetLastMonth(last_month);\r\n\t\tsetNextMonth(next_month);\r\n\t}, [month, year]);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (!range) {\r\n\t\t\tsetMonth(moment().format('MMMM'));\r\n\t\t\tsetYear(moment().format('YYYY'));\r\n\t\t} else if (Array.isArray(range) && range.length === 2) {\r\n\t\t\tsetMonth(moment(range[0]).format('MMMM'));\r\n\t\t\tsetYear(moment(range[0]).format('YYYY'));\r\n\t\t}\r\n\t}, [range]);\r\n\r\n\treturn (\r\n\t\t<div className={styles.calendar}>\r\n\t\t\t<div className={styles.header}>\r\n\t\t\t\t<Icon\r\n\t\t\t\t\tsize=\"lg\"\r\n\t\t\t\t\ticon=\"caret-left\"\r\n\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\tif (lastMonth === 'December') setYear(year - 1);\r\n\t\t\t\t\t\tsetMonth(lastMonth);\r\n\t\t\t\t\t}}\r\n\t\t\t\t/>\r\n\t\t\t\t<div className={styles.selects}>\r\n\t\t\t\t\t<b onClick={() => setActivePicker('months')}>{month}</b>\r\n\t\t\t\t\t<b onClick={() => setActivePicker('years')}>{year}</b>\r\n\t\t\t\t</div>\r\n\t\t\t\t<Icon\r\n\t\t\t\t\tsize=\"lg\"\r\n\t\t\t\t\ticon=\"caret-right\"\r\n\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\tif (nextMonth === 'January') setYear(year + 1);\r\n\t\t\t\t\t\tsetMonth(nextMonth);\r\n\t\t\t\t\t}}\r\n\t\t\t\t/>\r\n\t\t\t</div>\r\n\t\t\t{activePicker === 'days' && <DaysPicker {...{ dateObject, range, onChange }} />}\r\n\t\t\t{activePicker === 'months' && (\r\n\t\t\t\t<MonthPicker\r\n\t\t\t\t\tactive={month}\r\n\t\t\t\t\tonChange={month => {\r\n\t\t\t\t\t\tsetMonth(month);\r\n\t\t\t\t\t\tsetActivePicker('days');\r\n\t\t\t\t\t}}\r\n\t\t\t\t/>\r\n\t\t\t)}\r\n\t\t\t{activePicker === 'years' && (\r\n\t\t\t\t<YearsPicker\r\n\t\t\t\t\tactive={year}\r\n\t\t\t\t\tonChange={year => {\r\n\t\t\t\t\t\tsetYear(year);\r\n\t\t\t\t\t\tsetActivePicker('days');\r\n\t\t\t\t\t}}\r\n\t\t\t\t/>\r\n\t\t\t)}\r\n\t\t</div>\r\n\t);\r\n};\r\n\r\nCalendar.propTypes = {};\r\n\r\nCalendar.defaultProps = {};\r\n\r\nexport default Calendar;\r\n\r\nconst DaysPicker = ({ dateObject, range, onChange }) => {\r\n\tconst [selectedRange, setSelectedRangeState] = useState(range);\r\n\tconst [isSliding, setIsSliding] = useState(false);\r\n\tconst isArray = length => array => Array.isArray(array) && array.length === length;\r\n\tconst setSelectedRange = (range, fireOnChange = true) => {\r\n\t\tsetSelectedRangeState(range);\r\n\t\tif (fireOnChange) {\r\n\t\t\tconst formatRange = isArray(2)(range)\r\n\t\t\t\t? moment.range([moment(range[0]).startOf('day'), moment(range[1]).endOf('day')]).toDate()\r\n\t\t\t\t: null;\r\n\t\t\tonChange(formatRange);\r\n\t\t}\r\n\t};\r\n\tconst [tempRange, setTempRange] = useState(null);\r\n\tconst [previewRange, setPreviewRange] = useState(null);\r\n\tconst [mouseIsDown, setMouseIsDown] = useState(false);\r\n\r\n\tconst weekDayShort = moment.weekdaysShort();\r\n\tconst monthDaysCount = moment(dateObject).daysInMonth();\r\n\tconst currentMonthIsActive = moment(dateObject).format('MM/YYYY') === moment().format('MM/YYYY');\r\n\tconst currentDay = currentMonthIsActive ? parseInt(moment().format('D')) : null;\r\n\tconst firstDayOfMonth = parseInt(\r\n\t\tmoment(dateObject)\r\n\t\t\t.startOf('month')\r\n\t\t\t.format('d')\r\n\t);\r\n\tconst lastMonthDaysCount = moment(dateObject)\r\n\t\t.subtract(1, 'months')\r\n\t\t.daysInMonth();\r\n\r\n\tconst handleMouseDown = date => {\r\n\t\tsetMouseIsDown(true);\r\n\t\tif (!tempRange) {\r\n\t\t\tsetTempRange([new Date(date)]);\r\n\t\t\tsetSelectedRange(null);\r\n\t\t} else if (isArray(1)(tempRange)) {\r\n\t\t\tconst newSelectedRange = tempRange.concat([new Date(date)]).sort((a, b) => a.getTime() - b.getTime());\r\n\t\t\tsetSelectedRange(newSelectedRange);\r\n\t\t\tsetTempRange(null);\r\n\t\t\tsetPreviewRange(null);\r\n\t\t}\r\n\t};\r\n\tconst handleMouseUp = () => {\r\n\t\tsetMouseIsDown(false);\r\n\t\tsetPreviewRange(null);\r\n\t\tif (isArray(2)(selectedRange)) setTempRange(null);\r\n\t\tif (isSliding) {\r\n\t\t\tsetIsSliding(false);\r\n\t\t\tsetSelectedRange(selectedRange);\r\n\t\t}\r\n\t};\r\n\r\n\tconst handleMouseOver = date => {\r\n\t\tif (isArray(1)(tempRange) && (!selectedRange || mouseIsDown)) {\r\n\t\t\tconst newSelectedRange = tempRange.concat([new Date(date)]).sort((a, b) => a.getTime() - b.getTime());\r\n\t\t\tif (mouseIsDown) {\r\n\t\t\t\tsetIsSliding(true);\r\n\t\t\t\tsetSelectedRange(newSelectedRange, false);\r\n\t\t\t\tsetPreviewRange(null);\r\n\t\t\t} else setPreviewRange(newSelectedRange);\r\n\t\t}\r\n\t};\r\n\r\n\tconst isOnRange = date => {\r\n\t\tconst output = { selected: false, isFirst: false, isLast: false };\r\n\t\tif (!selectedRange) return output;\r\n\t\tconst [startDate, endDate] = selectedRange;\r\n\t\tconst momentRange = moment().range(startDate, endDate);\r\n\t\tconst selected = momentRange.contains(new Date(date));\r\n\t\tif (!selected) return output;\r\n\t\tconst isFirst = moment(date).format('MM/DD/YYYY') === moment(startDate).format('MM/DD/YYYY');\r\n\t\tconst isLast = moment(date).format('MM/DD/YYYY') === moment(endDate).format('MM/DD/YYYY');\r\n\t\treturn { selected, isFirst, isLast };\r\n\t};\r\n\r\n\tconst isOnPreviewRange = date => {\r\n\t\tconst output = { preview: false, isFirst: false, isLast: false };\r\n\t\tif (!previewRange) return output;\r\n\t\tconst [startDate, endDate] = previewRange;\r\n\t\tconst momentRange = moment().range(startDate, endDate);\r\n\t\tconst preview = isArray(2)(previewRange) ? momentRange.contains(new Date(date)) : false;\r\n\t\tif (!preview) return output;\r\n\t\tconst isFirst = moment(date).format('MM/DD/YYYY') === moment(startDate).format('MM/DD/YYYY');\r\n\t\tconst isLast = moment(date).format('MM/DD/YYYY') === moment(endDate).format('MM/DD/YYYY');\r\n\t\treturn { preview, isFirst, isLast };\r\n\t};\r\n\r\n\tuseEffect(() => {\r\n\t\tif (!range) {\r\n\t\t\tsetSelectedRange(null);\r\n\t\t} else if (\r\n\t\t\tisArray(2)(range) &&\r\n\t\t\t(!selectedRange || (isArray(2)(selectedRange) && !moment.range(range).isSame(moment.range(selectedRange))))\r\n\t\t) {\r\n\t\t\tsetSelectedRange(range);\r\n\t\t}\r\n\t}, [range]);\r\n\r\n\tlet blankDays = new Array(firstDayOfMonth)\r\n\t\t.fill(0)\r\n\t\t.map((_, i) => (\r\n\t\t\t<Day\r\n\t\t\t\tvalue={lastMonthDaysCount - i}\r\n\t\t\t\tisOnRange={isOnRange}\r\n\t\t\t\tisOnPreviewRange={isOnPreviewRange}\r\n\t\t\t\tsetMouseIsDown={setMouseIsDown}\r\n\t\t\t\tdateObject={dateObject}\r\n\t\t\t\tonMouseDown={date => handleMouseDown(date)}\r\n\t\t\t\tonMouseUp={() => handleMouseUp()}\r\n\t\t\t\tonMouseOver={date => handleMouseOver(date)}\r\n\t\t\t\tmonth={moment(dateObject).subtract(1, 'months')}\r\n\t\t\t\tempty={true}\r\n\t\t\t\tkey={i}\r\n\t\t\t/>\r\n\t\t))\r\n\t\t.reverse();\r\n\r\n\tlet daysInMonth = new Array(monthDaysCount).fill(0).map((_, i) => {\r\n\t\tlet attrs = currentDay && currentDay === i + 1 ? { 'data-today': true } : {};\r\n\t\treturn (\r\n\t\t\t<Day\r\n\t\t\t\tisOnRange={isOnRange}\r\n\t\t\t\tisOnPreviewRange={isOnPreviewRange}\r\n\t\t\t\tsetMouseIsDown={setMouseIsDown}\r\n\t\t\t\tvalue={i + 1}\r\n\t\t\t\tdateObject={dateObject}\r\n\t\t\t\tonMouseDown={date => handleMouseDown(date)}\r\n\t\t\t\tonMouseUp={() => handleMouseUp()}\r\n\t\t\t\tonMouseOver={date => handleMouseOver(date)}\r\n\t\t\t\tmonth={moment(dateObject)}\r\n\t\t\t\tkey={firstDayOfMonth + i}\r\n\t\t\t/>\r\n\t\t);\r\n\t});\r\n\tlet totalSlots = [...blankDays, ...daysInMonth];\r\n\tif (totalSlots.length < 35) {\r\n\t\ttotalSlots = totalSlots.concat(\r\n\t\t\tnew Array(35 - totalSlots.length)\r\n\t\t\t\t.fill(0)\r\n\t\t\t\t.map((_, i) => (\r\n\t\t\t\t\t<Day\r\n\t\t\t\t\t\tvalue={i + 1}\r\n\t\t\t\t\t\tisOnRange={isOnRange}\r\n\t\t\t\t\t\tisOnPreviewRange={isOnPreviewRange}\r\n\t\t\t\t\t\tsetMouseIsDown={setMouseIsDown}\r\n\t\t\t\t\t\tdateObject={dateObject}\r\n\t\t\t\t\t\tonMouseDown={date => handleMouseDown(date)}\r\n\t\t\t\t\t\tonMouseUp={() => handleMouseUp()}\r\n\t\t\t\t\t\tmonth={moment(dateObject).add(1, 'months')}\r\n\t\t\t\t\t\tonMouseOver={date => handleMouseOver(date)}\r\n\t\t\t\t\t\tempty={true}\r\n\t\t\t\t\t\tkey={totalSlots.length + i}\r\n\t\t\t\t\t/>\r\n\t\t\t\t))\r\n\t\t);\r\n\t}\r\n\treturn (\r\n\t\t<>\r\n\t\t\t<div className={styles.weekDays}>\r\n\t\t\t\t{weekDayShort.map((day, i) => (\r\n\t\t\t\t\t<div key={i}>\r\n\t\t\t\t\t\t<span>{day}</span>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t))}\r\n\t\t\t</div>\r\n\t\t\t<div\r\n\t\t\t\tclassName={styles.days}\r\n\t\t\t\tonMouseLeave={() => {\r\n\t\t\t\t\tsetPreviewRange(null);\r\n\t\t\t\t\tsetTempRange(null);\r\n\t\t\t\t}}\r\n\t\t\t>\r\n\t\t\t\t{totalSlots}\r\n\t\t\t</div>\r\n\t\t</>\r\n\t);\r\n};\r\n\r\nconst Day = ({\r\n\tdateObject,\r\n\tvalue,\r\n\tmonth,\r\n\tonMouseDown,\r\n\tonMouseUp,\r\n\tonMouseOver,\r\n\tisOnRange,\r\n\tisOnPreviewRange,\r\n\tempty = false,\r\n}) => {\r\n\tconst date = month.set('date', value).format('MM/DD/YYYY');\r\n\tconst { selected, isFirst, isLast } = isOnRange(date);\r\n\tconst { isFirst: isFirst_p, isLast: isLast_p, preview } = isOnPreviewRange(date);\r\n\treturn (\r\n\t\t<div\r\n\t\t\tclassName={styles.day}\r\n\t\t\tdata-selected={selected}\r\n\t\t\tdata-preview={preview}\r\n\t\t\tdata-first={isFirst || isFirst_p}\r\n\t\t\tdata-last={isLast || isLast_p}\r\n\t\t\tonMouseOver={() => onMouseOver(date)}\r\n\t\t\tonMouseDown={() => onMouseDown(date)}\r\n\t\t\tonMouseUp={() => onMouseUp(false)}\r\n\t\t\tonTouchStart={() => onMouseDown(date)}\r\n\t\t\tonTouchEnd={() => onMouseUp(false)}\r\n\t\t>\r\n\t\t\t<span className={styles.selected} />\r\n\t\t\t<span className={styles.preview} />\r\n\t\t\t<span data-empty={empty} data-selected={selected} data-preview={preview}>\r\n\t\t\t\t{value}\r\n\t\t\t</span>\r\n\t\t</div>\r\n\t);\r\n};\r\n\r\nconst MonthPicker = ({ active, onChange }) => {\r\n\tconst months = moment.months();\r\n\treturn (\r\n\t\t<div className={styles.months}>\r\n\t\t\t{months.map((month, i) => {\r\n\t\t\t\tlet attrs = active === month ? { 'data-active': true } : {};\r\n\t\t\t\treturn (\r\n\t\t\t\t\t<div key={i}>\r\n\t\t\t\t\t\t<span {...attrs} onClick={() => onChange(month)}>\r\n\t\t\t\t\t\t\t{month}\r\n\t\t\t\t\t\t</span>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t);\r\n\t\t\t})}\r\n\t\t</div>\r\n\t);\r\n};\r\n\r\nconst YearsPicker = ({ active, onChange }) => {\r\n\tconst years = new Array(12).fill(0).map((_, i) => 2019 + i);\r\n\treturn (\r\n\t\t<div className={styles.months}>\r\n\t\t\t{years.map((year, i) => {\r\n\t\t\t\tlet attrs = active === year ? { 'data-active': true } : {};\r\n\t\t\t\treturn (\r\n\t\t\t\t\t<div key={i}>\r\n\t\t\t\t\t\t<span {...attrs} onClick={() => onChange(year)}>\r\n\t\t\t\t\t\t\t{year}\r\n\t\t\t\t\t\t</span>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t);\r\n\t\t\t})}\r\n\t\t</div>\r\n\t);\r\n};\r\n","import React from \"react\";\r\nimport { Icon, Button, Switch } from \"components\";\r\nimport classNames from \"lib/classNames\";\r\n\r\nconst Alert = ({\r\n  type = \"info\",\r\n  title,\r\n  children,\r\n  icon = null,\r\n  desc = null,\r\n  withSwitch = null,\r\n  actions = [],\r\n  style = {},\r\n  forwardRef = null,\r\n  borderPosition = \"border-l-4\",\r\n  paddingX = \"px-2\",\r\n  className = \"\",\r\n  customStyle = {},\r\n  inlineIcon,\r\n  iconSize,\r\n  closable,\r\n  iconColor = \"#748094\",\r\n  customSvg = false,\r\n}) => {\r\n  const styles = {\r\n    loading: {\r\n      box: \"border-gray-600 bg-white text-gray-600 \" + borderPosition,\r\n      title: \"text-gray-600\",\r\n      icon: \"text-orange-500\",\r\n      inlineIcon: false,\r\n      iconSize: \"1x\",\r\n    },\r\n    info: {\r\n      box: \"border-l-4 border-blue-500 bg-white text-gray-500 text-md\",\r\n      title: \"text-gray-600\",\r\n      icon: \"text-blue-500\",\r\n    },\r\n    error: {\r\n      box: \"border-l-4 border-red-500 bg-white text-gray-500 text-md\",\r\n      title: \"text-red-500\",\r\n      icon: \"text-gray-600\",\r\n    },\r\n    warning: {\r\n      box:\r\n        \"border-orange-400 bg-white text-gray-800 bg-yellow-100 \" +\r\n        borderPosition,\r\n      title: \"text-gray-900\",\r\n      icon: \"text-orange-400\",\r\n      inlineIcon: !!inlineIcon,\r\n      iconSize: iconSize,\r\n    },\r\n    warning_secondary: {\r\n      box: \"bg-yellow-200 border-b-2 border-yellow-300 text-yellow-800 rounded text-justify\",\r\n      title: \"font-semibold text-yellow-800 mb-2 uppercase text-left\",\r\n      icon: \"bg-white text-yellow-500 rounded-full w-10 h-10  flex-center border-2 border-yellow-500\",\r\n      iconSize: \"1x\",\r\n      inlineIcon: true,\r\n    },\r\n    success: {\r\n      box: \"border-l-4 border-green-400 bg-white text-gray-500\",\r\n      title: \"text-gray-600 mb-2\",\r\n      icon: \"text-green-400\",\r\n    },\r\n    save_settings: {\r\n      box: \"bg-white h-full max-h-full\",\r\n      title: \"text-blue-500 uppercase\",\r\n    },\r\n  };\r\n  return (\r\n    <div\r\n      className={classNames(\r\n        className,\r\n        (customStyle.box ? customStyle : styles[type]).box,\r\n        \"relative flex items-center text-sm py-2\",\r\n        paddingX\r\n      )}\r\n      ref={forwardRef}\r\n      style={style}\r\n    >\r\n      {icon && !styles[type].inlineIcon && (\r\n        <div\r\n          className={classNames(\r\n            (customStyle.icon ? customStyle : styles[type]).icon,\r\n            \"flex items-center justify-center ml-2 mr-4\"\r\n          )}\r\n        >\r\n          {customSvg ? (\r\n            <>{icon}</>\r\n          ) : (\r\n            <Icon\r\n              size={styles[type].iconSize || \"2x\"}\r\n              icon={icon}\r\n              color={iconColor}\r\n            />\r\n          )}\r\n        </div>\r\n      )}\r\n      <div className={classNames(\"flex-1 flex-grow\")}>\r\n        {!!title && (\r\n          <h4\r\n            className={classNames(\r\n              (customStyle.title ? customStyle : styles[type]).title,\r\n              \"font-semibold text-base uppercase-first\",\r\n              {\r\n                \"flex items-center\": styles[type].inlineIcon,\r\n                \"mb-2\": !!children,\r\n              }\r\n            )}\r\n          >\r\n            {!!styles[type].inlineIcon && (\r\n              <div\r\n                className={classNames(\r\n                  (customStyle || styles[type]).icon,\r\n                  \"flex items-center justify-center mr-2\"\r\n                )}\r\n              >\r\n                <Icon size={styles[type].iconSize || \"2x\"} icon={icon} />\r\n              </div>\r\n            )}\r\n            <div\r\n              className={classNames(\"flex-1\")}\r\n              dangerouslySetInnerHTML={{\r\n                __html: title,\r\n              }}\r\n            />\r\n          </h4>\r\n        )}\r\n        {!!children && children}\r\n      </div>\r\n      {!!actions.length && (\r\n        <div className={classNames(\"pl-2\")}>\r\n          {actions.map((action, i) => (\r\n            <Button\r\n              className={classNames({ \"mr-2\": i !== actions.length - 1 })}\r\n              key={i}\r\n              type={action.type || type}\r\n              {...action}\r\n            />\r\n          ))}\r\n        </div>\r\n      )}\r\n      {!!withSwitch && (\r\n        <Switch\r\n          className={classNames(\"pl-2\")}\r\n          BindToContext={withSwitch.context}\r\n          {...(withSwitch.props || {})}\r\n        />\r\n      )}\r\n    </div>\r\n  );\r\n};\r\n\r\nexport default Alert;\r\n","import React from 'react';\r\n\r\nimport { Alert, Icon } from 'components';\r\nimport classNames from 'lib/classNames';\r\n\r\nexport default function MultiCurrencyModeAlerts ({\r\n\tenabled_presentment_currencies,\r\n\tdraft_checkout_alerted,\r\n\tmulti_currency_checkout_alerted,\r\n\tsettings,\r\n\tredirectToCheckoutSettings,\r\n\tIUnderstand,\r\n}) {\r\n\tconst showAlerts = enabled_presentment_currencies.length > 1 && !settings.multiCurrencyMode;\r\n\tif (!showAlerts) return null;\r\n\treturn (\r\n\t\t<div>\r\n\t\t\t{!multi_currency_checkout_alerted && (\r\n\t\t\t\t<Alert\r\n\t\t\t\t\t{...{\r\n\t\t\t\t\t\ttype: 'warning',\r\n\t\t\t\t\t\tborderPosition: 'border-l-4',\r\n\t\t\t\t\t\ticonSize: '2x',\r\n\t\t\t\t\t\ttitle: 'You have multi-currency enabled in your store',\r\n\t\t\t\t\t\ticon: 'exclamation-circle',\r\n\t\t\t\t\t\tcustomStyle: {\r\n\t\t\t\t\t\t\ticon: 'text-orange-400 self-start mt-1',\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tclassName=\"mt-6 z-5\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<p>\r\n\t\t\t\t\t\tCurrently customers will only be able to checkout with your default store currency. Visit\r\n\t\t\t\t\t\t<span\r\n\t\t\t\t\t\t\tclassName={classNames(\r\n\t\t\t\t\t\t\t\t'underline cursor-pointer hover:text-orange-500 focus:outline-none font-semibold mx-1'\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\tonClick={redirectToCheckoutSettings}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\tCheckout Settings\r\n\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\tif you want to enable multi-currency on checkout.\r\n\t\t\t\t\t</p>\r\n\t\t\t\t\t<div className={classNames('flex space-x-3 pt-3 justify-start')}>\r\n\t\t\t\t\t\t<a\r\n\t\t\t\t\t\t\tclassName={classNames(\r\n\t\t\t\t\t\t\t\t'text-gray-800 text-sm flex items-center hover:text-orange-500 focus:outline-none focus:outline-shadow font-semibold py-1 px-2 uppercase border bg-orange-200 bg-opacity-50 border-orange-300 rounded'\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\thref=\"https://monsterapps.crisp.help/en/article/checkout-settings-multi-currency-discount-codes-draft-checkout-1qsfus8/?1604963115355\"\r\n\t\t\t\t\t\t\ttarget=\"_blank\"\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<Icon icon=\"info-circle\" className=\"mr-2\" size=\"1x\" />\r\n\t\t\t\t\t\t\t<span className={classNames('text-xs')}>Learn More</span>\r\n\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\tclassName={classNames(\r\n\t\t\t\t\t\t\t\t'text-gray-800 text-sm flex items-center hover:text-orange-500 focus:outline-none focus:outline-shadow font-semibold py-1 px-2 uppercase border bg-orange-200 bg-opacity-50 border-orange-300 rounded'\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\tonClick={redirectToCheckoutSettings}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<Icon icon=\"cog\" className=\"mr-2\" size=\"1x\" />\r\n\t\t\t\t\t\t\t<span className={classNames('text-xs')}>Checkout Settings</span>\r\n\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\tclassName={classNames(\r\n\t\t\t\t\t\t\t\t'text-gray-800 text-sm flex items-center hover:text-orange-500 focus:outline-none focus:outline-shadow font-semibold py-1 px-2 uppercase border bg-orange-200 bg-opacity-50 border-orange-300 rounded'\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\tIUnderstand({\r\n\t\t\t\t\t\t\t\t\tmulti_currency_checkout_alerted: true,\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<Icon icon=\"trash-alt\" className=\"mr-2\" size=\"1x\" />\r\n\t\t\t\t\t\t\t<span className={classNames('text-xs')}>I Understand</span>\r\n\t\t\t\t\t\t</button>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</Alert>\r\n\t\t\t)}\r\n\t\t\t{!draft_checkout_alerted && (\r\n\t\t\t\t<Alert\r\n\t\t\t\t\t{...{\r\n\t\t\t\t\t\ttype: 'warning',\r\n\t\t\t\t\t\tborderPosition: 'border-l-4',\r\n\t\t\t\t\t\ticonSize: '2x',\r\n\t\t\t\t\t\ttitle: 'Draft checkout is currently activated',\r\n\t\t\t\t\t\ticon: 'exclamation-circle',\r\n\t\t\t\t\t\tcustomStyle: {\r\n\t\t\t\t\t\t\ticon: 'text-orange-400 self-start mt-1',\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tclassName=\"mt-6 z-5\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<p>This means all store discount codes need to be entered through Upsell Cart. (Not at checkout)</p>\r\n\t\t\t\t\t<p>\r\n\t\t\t\t\t\tVisit\r\n\t\t\t\t\t\t<span\r\n\t\t\t\t\t\t\tclassName={classNames(\r\n\t\t\t\t\t\t\t\t'underline cursor-pointer hover:text-orange-500 focus:outline-none font-semibold mx-1'\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\tonClick={redirectToCheckoutSettings}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\tCheckout Settings\r\n\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\tif you want to revert to native Shopify checkout.\r\n\t\t\t\t\t</p>\r\n\t\t\t\t\t<div className={classNames('flex space-x-3 pt-3 justify-start')}>\r\n\t\t\t\t\t\t<a\r\n\t\t\t\t\t\t\tclassName={classNames(\r\n\t\t\t\t\t\t\t\t'text-gray-800 text-sm flex items-center hover:text-orange-500 focus:outline-none focus:outline-shadow font-semibold py-1 px-2 uppercase border bg-orange-200 bg-opacity-50 border-orange-300 rounded'\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\thref=\"https://monsterapps.crisp.help/en/article/checkout-settings-multi-currency-discount-codes-draft-checkout-1qsfus8/?1604963115355\"\r\n\t\t\t\t\t\t\ttarget=\"_blank\"\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<Icon icon=\"info-circle\" className=\"mr-2\" size=\"1x\" />\r\n\t\t\t\t\t\t\t<span className={classNames('text-xs')}>Learn More</span>\r\n\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\tclassName={classNames(\r\n\t\t\t\t\t\t\t\t'text-gray-800 text-sm flex items-center hover:text-orange-500 focus:outline-none focus:outline-shadow font-semibold py-1 px-2 uppercase border bg-orange-200 bg-opacity-50 border-orange-300 rounded'\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\tonClick={redirectToCheckoutSettings}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<Icon icon=\"cog\" className=\"mr-2\" size=\"1x\" />\r\n\t\t\t\t\t\t\t<span className={classNames('text-xs')}>Checkout Settings</span>\r\n\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\tclassName={classNames(\r\n\t\t\t\t\t\t\t\t'text-gray-800 text-sm flex items-center hover:text-orange-500 focus:outline-none focus:outline-shadow font-semibold py-1 px-2 uppercase border bg-orange-200 bg-opacity-50 border-orange-300 rounded'\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\tIUnderstand({\r\n\t\t\t\t\t\t\t\t\tdraft_checkout_alerted: true,\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<Icon icon=\"trash-alt\" className=\"mr-2\" size=\"1x\" />\r\n\t\t\t\t\t\t\t<span className={classNames('text-xs')}>I Understand</span>\r\n\t\t\t\t\t\t</button>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</Alert>\r\n\t\t\t)}\r\n\t\t</div>\r\n\t);\r\n}\r\n","import React from \"react\";\r\nimport classNames from \"lib/classNames\";\r\n\r\nconst GuideContainer = ({\r\n  title,\r\n  children,\r\n  className = \"\",\r\n  link = \"\",\r\n  linkLabel,\r\n  styles = {},\r\n  itemsClassName = \"\",\r\n  itemsStyles = {},\r\n}) => {\r\n  return (\r\n    <div\r\n      className={classNames(\r\n        \"shadow-sm px-5 pt-5 bg-white rounded relative\",\r\n        className\r\n      )}\r\n      style={{ ...styles, paddingBottom: \"50px\" }}\r\n    >\r\n      <h4\r\n        className={classNames(\r\n          \"flex-1 capitalize text-gray-600 text-md font-bold\"\r\n        )}\r\n      >\r\n        {title}\r\n      </h4>\r\n      <div\r\n        className={classNames(\"w-full my-4\", itemsClassName)}\r\n        style={itemsStyles}\r\n      >\r\n        {children}\r\n      </div>\r\n      <div\r\n        className={classNames(\r\n          \"w-full absolute flex items-center justify-center\"\r\n        )}\r\n        style={{ bottom: \"31px\" }}\r\n      >\r\n        <a\r\n          className={classNames(\"capitalize text-gray-600 text-md font-bold\")}\r\n          style={{\r\n            bottom: \"31px\",\r\n            textDecoration: \"underline\",\r\n            lineHeight: \"22px\",\r\n          }}\r\n          href={link}\r\n          target=\"_blank\"\r\n        >\r\n          {linkLabel}\r\n        </a>\r\n      </div>\r\n    </div>\r\n  );\r\n};\r\n\r\nexport default GuideContainer;\r\n","import React from \"react\";\r\nimport classNames from \"lib/classNames\";\r\nimport Icon from \"./Icon\";\r\nimport styles from \"styles/tutorial.module.scss\";\r\n\r\nconst GuideLink = ({ label, link = \"\" }) => {\r\n  return (\r\n    <div\r\n      className={\r\n        classNames(\"flex items-center justify-start mb-3\") + \" \" + styles.link\r\n      }\r\n    >\r\n      <Icon icon=\"link\" color=\"#718096\" />\r\n      <a\r\n        className={classNames(\"text-gray-600 text-sm ml-2\")}\r\n        style={{ lineHeight: \"19px\" }}\r\n        href={link}\r\n        target=\"_blank\"\r\n      >\r\n        {label}\r\n      </a>\r\n    </div>\r\n  );\r\n};\r\n\r\nexport default GuideLink;\r\n","import React from \"react\";\r\nimport classNames from \"lib/classNames\";\r\n\r\nconst GuideVideo = ({ label, link = \"\", image }) => {\r\n  return (\r\n    <a\r\n      className={classNames(\"mb-3\")}\r\n      href={link}\r\n      style={{ width: \"30%\" }}\r\n      target=\"_blank\"\r\n    >\r\n      <div\r\n        style={{\r\n          backgroundImage: `url(${image})`,\r\n          backgroundRepeat: \"no-repeat\",\r\n          backgroundPosition: \"center\",\r\n          backgroundSize: \"contain\",\r\n          width: \"100%\",\r\n          height: \"110px\",\r\n        }}\r\n      ></div>\r\n      {/* <iframe\r\n        width=\"100%\"\r\n        height=\"110px\"\r\n        src={link}\r\n        title={label}\r\n        frameBorder=\"0\"\r\n        allow=\"fullscreen; accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\"\r\n        allowFullScreen\r\n      ></iframe> */}\r\n      <p\r\n        className={classNames(\"text-gray-600 text-sm mt-2 text-center\")}\r\n        style={{ lineHeight: \"19px\" }}\r\n      >\r\n        {label}\r\n      </p>\r\n    </a>\r\n  );\r\n};\r\n\r\nexport default GuideVideo;\r\n","import React from \"react\";\r\nimport classNames from \"lib/classNames\";\r\n\r\nconst SetupStep = ({\r\n  title,\r\n  description,\r\n  required,\r\n  recommended,\r\n  actionText,\r\n  action,\r\n  done,\r\n}) => {\r\n  return (\r\n    <div\r\n      className={classNames(\r\n        \"flex items-center justify-between pt-4 pb-4 border-gray-400 border-solid border-b\"\r\n      )}\r\n    >\r\n      <div style={{ width: \"75%\" }}>\r\n        <div className={classNames(\"flex items-center justify-start mb-3\")}>\r\n          <b\r\n            className={classNames(\r\n              `font-medium text-gray-600 ${done ? \"line-through\" : \"\"}`\r\n            )}\r\n          >\r\n            {title}\r\n          </b>\r\n          {(required || recommended) && (\r\n            <div\r\n              className={classNames(\"ml-6\")}\r\n              style={{\r\n                borderRadius: \"13px\",\r\n                padding: \"1px 16px\",\r\n                background: done\r\n                  ? \"#48bb78\"\r\n                  : required\r\n                  ? \"rgba(255, 0, 0, 0.4)\"\r\n                  : \"#4399E0\",\r\n              }}\r\n            >\r\n              <b className={classNames(\"font-bold text-white text-sm\")}>\r\n                {done ? \"Completed\" : required ? \"Required\" : \"Recommended\"}\r\n              </b>\r\n            </div>\r\n          )}\r\n        </div>\r\n        <p\r\n          className={classNames(\r\n            `whitespace-pre-wrap text-sm leading-5 text-gray-600 ${\r\n              done ? \"line-through\" : \"\"\r\n            }`\r\n          )}\r\n        >\r\n          {description}\r\n        </p>\r\n      </div>\r\n      <button\r\n        className={classNames(\r\n          \"border-gray-400 border-solid border rounded-md capitalize font-bold text-sm text-center text-gray-600 py-1 px-5 no-outline focus:outline-none\"\r\n        )}\r\n        onClick={action}\r\n      >\r\n        {actionText}\r\n      </button>\r\n    </div>\r\n  );\r\n};\r\n\r\nexport default SetupStep;\r\n","import React, { useContext, useEffect, useState } from \"react\";\r\nimport classNames from \"lib/classNames\";\r\nimport SetupStep from \"./SetupStep\";\r\nimport { LIST_SHOP_CAMPAIGNS } from \"Queries\";\r\nimport UserContext from \"context/UserContext\";\r\nimport ShopContext from \"context/ShopContext\";\r\nimport { useQuery } from \"@apollo/react-hooks\";\r\nimport useReactRouter from \"use-react-router\";\r\nimport { API_GATEWAY_NEW, APP_DEV, SHOPIFY_API_KEY } from \"aws-exports\";\r\nimport EmbeddedContext from \"context/EmbeddedContext\";\r\nimport { Redirect } from \"@shopify/app-bridge/actions\";\r\nimport Axios from \"axios\";\r\nimport { Loading, Toast, Modal } from \"@shopify/app-bridge-react\";\r\nimport ContentLoader from \"react-content-loader\";\r\nimport { getScriptStatus } from \"./cart/Utils\";\r\n\r\nconst SetupGuide = () => {\r\n  const { history, location } = useReactRouter();\r\n  const shopContext = useContext(ShopContext);\r\n  const [showInstallationModel, setShowInstallationModel] = useState(false);\r\n  const {\r\n    AppLocalStorage,\r\n    setup: { cartActive, cartLoading },\r\n  } = shopContext;\r\n  const user = useContext(UserContext);\r\n  let { data } = useQuery(LIST_SHOP_CAMPAIGNS, {\r\n    variables: {\r\n      userId: user.attributes.sub,\r\n    },\r\n    fetchPolicy: \"network-only\",\r\n  });\r\n  const { AppBridgeRedirect } = useContext(EmbeddedContext);\r\n\r\n  const [collapsed, setCollapsed] = useState(true);\r\n\r\n  const [campaignActive, setCampaignActive] = useState(false);\r\n  const [dataLoading, setDataLoading] = useState(true);\r\n  const [designActive, setDesignActive] = useState(false);\r\n  const [completedTasks, setCompletedTasks] = useState(0);\r\n\r\n  useEffect(() => {\r\n    const app_first_turn_on = AppLocalStorage.getItem(\"first_cart_turn_on\");\r\n    setDesignActive(app_first_turn_on);\r\n  }, [AppLocalStorage]);\r\n\r\n  useEffect(() => {\r\n    if (data) {\r\n      if (data.campaigns?.list?.length) {\r\n        setCampaignActive(\r\n          !!data.campaigns.list.find((campaign) => campaign.active)\r\n        );\r\n      }\r\n      setDataLoading(false);\r\n    }\r\n  }, [data]);\r\n\r\n  useEffect(() => {\r\n    if (!dataLoading && !cartLoading) {\r\n      let total = +cartActive + +designActive + +campaignActive;\r\n      setCompletedTasks(total);\r\n      setCollapsed(total === 3);\r\n    }\r\n  }, [cartActive, designActive, campaignActive, cartLoading, dataLoading]);\r\n\r\n  return (\r\n    <div className={classNames(\"col-span-1 lg:col-span-3\")}>\r\n      <div className={classNames(\"flex-1 mb-3\")}>\r\n        <b className={classNames(\"text-gray-600 text-lg\")}>\r\n          Welcome To Monster Cart Upsells 🥰\r\n        </b>\r\n        <p\r\n          className={classNames(\"text-gray-600 font-normal text-md mt-1 mb-4\")}\r\n        >\r\n          Here are a few steps to get started. Reach out to the team if you need\r\n          help.\r\n        </p>\r\n      </div>\r\n      <div className={classNames(\"bg-white relative rounded shadow\")}>\r\n        <div className={classNames(\"py-6 px-8\")}>\r\n          <div className={classNames(\"flex items-center justify-between\")}>\r\n            {dataLoading || cartLoading ? (\r\n              <ContentLoader\r\n                className={classNames(\"mb-3 rounded h-4\")}\r\n                viewBox=\"0 0 400 12\"\r\n                style={{ width: 100 }}\r\n              >\r\n                <rect x=\"0\" y=\"0\" width=\"400\" height=\"12\" />\r\n              </ContentLoader>\r\n            ) : (\r\n              <>\r\n                <h3 className={classNames(\"font-bold mb-3 text-gray-600\")}>\r\n                  Setup Guide\r\n                </h3>\r\n                <div\r\n                  className={classNames(\"mb-3 cursor-pointer\")}\r\n                  style={{\r\n                    transform: collapsed ? \"rotate(180deg)\" : \"rotate(0deg)\",\r\n                    transition: \"transform 0.4s ease\",\r\n                  }}\r\n                  onClick={() => {\r\n                    setCollapsed(!collapsed);\r\n                  }}\r\n                >\r\n                  <svg\r\n                    className={classNames(\"w-4 h-3\")}\r\n                    viewBox=\"0 0 14 8\"\r\n                    fill=\"none\"\r\n                  >\r\n                    <path\r\n                      d=\"M1 1L7 7L13 1\"\r\n                      stroke=\"#718096\"\r\n                      strokeWidth=\"3\"\r\n                      strokeLinecap=\"round\"\r\n                      strokeLinejoin=\"round\"\r\n                    />\r\n                  </svg>\r\n                </div>\r\n              </>\r\n            )}\r\n          </div>\r\n          <div\r\n            className={classNames(\r\n              \"flex items-center flex-wrap space-y-3 sm:space-y-0\"\r\n            )}\r\n          >\r\n            {dataLoading || cartLoading ? (\r\n              <>\r\n                <ContentLoader\r\n                  viewBox=\"0 0 400 12\"\r\n                  className={classNames(\"flex-1 w-1/5 h-4 mr-3 rounded\")}\r\n                >\r\n                  <rect x=\"0\" y=\"0\" width=\"400\" height=\"12\" />\r\n                </ContentLoader>\r\n                <ContentLoader\r\n                  viewBox=\"0 0 400 12\"\r\n                  className={classNames(\"w-3/4 h-4 rounded-lg\")}\r\n                >\r\n                  <rect x=\"0\" y=\"0\" width=\"400\" height=\"12\" />\r\n                </ContentLoader>\r\n              </>\r\n            ) : (\r\n              <>\r\n                <p className={classNames(\"flex-1 text-gray-600 text-sm\")}>\r\n                  {completedTasks} of 3 tasks completed\r\n                </p>\r\n                <div\r\n                  className={classNames(\r\n                    \"flex w-3/4 h-3 rounded-md relative overflow-hidden mix-blend-darken bg-white\"\r\n                  )}\r\n                  style={{\r\n                    background: \"rgba(93, 120, 240, 0.2)\",\r\n                  }}\r\n                >\r\n                  <div\r\n                    className={classNames(\r\n                      \"block transition-width absolute inset-0 duration-500 ease-out z-10\"\r\n                    )}\r\n                    style={{\r\n                      background: completedTasks < 3 ? \"#5D78F0\" : \"#48bb78\",\r\n                      width: `${(completedTasks * 100) / 3}%`,\r\n                    }}\r\n                  ></div>\r\n                </div>\r\n              </>\r\n            )}\r\n          </div>\r\n        </div>\r\n        {/* <div className={classNames(\"w-full h-px bg-gray-400\")}></div> */}\r\n        <div\r\n          className={classNames(\"relative overflow-hidden\")}\r\n          style={{\r\n            maxHeight: collapsed ? \"0px\" : \"450px\",\r\n            transition: \"max-height 0.4s ease\",\r\n          }}\r\n        >\r\n          <div\r\n            className={classNames(\r\n              \"border-gray-400 border-solid border-t pt-0 px-8 pb-6\"\r\n            )}\r\n          >\r\n            <SetupStep\r\n              title={`1.  Review Monster Cart Design`}\r\n              description={`The Monster Cart comes with great preset options. However you can customize them further to match your brand`}\r\n              actionText=\"Open Cart Setup\"\r\n              action={() => history.push(\"/settings\" + location.search)}\r\n              done={designActive}\r\n            />\r\n            <SetupStep\r\n              title={`2.  Activate Monster Cart`}\r\n              description={`Activate Monster Cart App embed block in your theme editor. \\nFind it in Theme settings > App embeds. Make sure you click save.`}\r\n              required\r\n              actionText=\"Enable / Disable Cart\"\r\n              action={() => {\r\n                setShowInstallationModel(true);\r\n              }}\r\n              done={cartActive}\r\n            />\r\n            <SetupStep\r\n              title={`3.  Activate Upsell Campaigns`}\r\n              description={`Increase your average order value by displaying high converting upsell campaigns in your cart. Be sure to check out our best practise guides or reach out to the team if needed`}\r\n              recommended\r\n              actionText=\"Add Upsells\"\r\n              action={() => history.push(\"/campaigns/create\" + location.search)}\r\n              done={campaignActive}\r\n            />\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <Modal\r\n        size=\"Large\"\r\n        title=\"Installation\"\r\n        open={!!showInstallationModel}\r\n        primaryAction={{\r\n          content: \"Open Editor\",\r\n          onAction: function () {\r\n            const activateAppId = APP_DEV\r\n              ? \"13fae760-4743-463c-aaeb-80cebaccc364\"\r\n              : \"a1b8e58a-bf1d-4e0f-8768-a387c3f643c0\";\r\n            const deepLink = `/themes/current/editor?context=apps&template=product&activateAppId=${activateAppId}/app-embed`;\r\n            AppBridgeRedirect.dispatch(Redirect.Action.ADMIN_PATH, {\r\n              path: deepLink,\r\n              newContext: true,\r\n            });\r\n          },\r\n        }}\r\n        secondaryActions={[\r\n          {\r\n            content: \"Watch Tutorial\",\r\n            onAction: () => {\r\n              AppBridgeRedirect.dispatch(Redirect.Action.REMOTE, {\r\n                url: \"https://monsterapps.crisp.help/en/article/activate-deactivate-monster-cart-19okfn1/\",\r\n                newContext: true,\r\n              });\r\n            },\r\n          },\r\n        ]}\r\n        src={`${window.location.origin}/AppThemeExtensionInstallation.html`}\r\n        onClose={() => setShowInstallationModel(false)}\r\n      />\r\n    </div>\r\n  );\r\n};\r\n\r\nexport default SetupGuide;\r\n","import React, { useState, useEffect, useCallback } from \"react\";\r\nimport Switch from \"components/Switch\";\r\nimport Tag from \"components/Tag\";\r\nimport Icon from \"components/Icon\";\r\nimport ColorPicker from \"components/ColorPicker\";\r\nimport Dropdown from \"components/Dropdown\";\r\nimport useBindToContext from \"hooks/useBindToContext\";\r\nimport styled from \"styled-components\";\r\nimport classNames from \"lib/classNames\";\r\nimport _ from \"lodash\";\r\nimport Editor, { DiffEditor, useMonaco, loader } from \"@monaco-editor/react\";\r\n\r\nconst CodeEditor = ({\r\n  disabled,\r\n  onFocus,\r\n  onBlur,\r\n  inputRef,\r\n  value,\r\n  autofocus,\r\n  placeholder,\r\n  className,\r\n  onChange,\r\n  BindToContext,\r\n  placeholder_color,\r\n  border_color,\r\n  validation = true,\r\n  getError = null,\r\n  specificValidation = null,\r\n  isFlex,\r\n  row = 2,\r\n  language,\r\n}) => {\r\n  const [BindedValue, BindedOnChange, hasError, onRender] = useBindToContext(\r\n    BindToContext,\r\n    value,\r\n    onChange,\r\n    specificValidation,\r\n    getError,\r\n    validation\r\n  );\r\n\r\n  const handleChange = (value) => {\r\n    BindedOnChange(value);\r\n  };\r\n  return (\r\n    <div\r\n      className={classNames(\r\n        \"w-full rounded-md relative overflow-hidden h-64 mt-2\"\r\n      )}\r\n    >\r\n      <Editor\r\n        height=\"100%\"\r\n        theme=\"light\"\r\n        language={language}\r\n        value={BindedValue}\r\n        onChange={handleChange}\r\n        defaultValue={placeholder}\r\n      />\r\n    </div>\r\n  );\r\n};\r\n\r\nCodeEditor.defaultProps = {\r\n  disabled: false,\r\n  style: {},\r\n  onEnter: false,\r\n  onFocus: false,\r\n  onBlur: false,\r\n  onKeyDown: false,\r\n  inputRef: null,\r\n  BindToContext: null,\r\n  dispatch: null,\r\n  placeholder: \"\",\r\n  withSwitch: false,\r\n  withNumber: false,\r\n  withDropdown: false,\r\n  value: undefined,\r\n  className: \"\",\r\n  iconFirst: false,\r\n  placeholder_color: null,\r\n  border_color: null,\r\n  max: null,\r\n  min: null,\r\n};\r\n\r\nexport default CodeEditor;\r\n","import React, { useCallback, useReducer } from \"react\";\r\nimport { SetItemReducer, SET_ITEM, DELETE_ITEM } from \"reducers/SetItemReducer\";\r\nimport uuid from \"uuid/v1\";\r\nimport { Embedded, Preview } from \"components\";\r\nimport { NotifyProvider } from \"context/NotifyContext\";\r\n\r\nexport const isEmbedded =\r\n  ({\r\n    ChildComponent,\r\n    previewOpenByDefault = true,\r\n    noCampaign = false,\r\n    newPlanRedirect,\r\n    setIsOpen,\r\n  }) =>\r\n  () => {\r\n    const [state, dispatch] = useReducer(SetItemReducer, {});\r\n\r\n    const createNotification = (notification) => {\r\n      const id = notification.id || uuid();\r\n      if (!state[id])\r\n        dispatch({ type: SET_ITEM, path: id, value: { id, ...notification } });\r\n    };\r\n    const deleteNotification = (id) =>\r\n      dispatch({ type: DELETE_ITEM, path: id });\r\n\r\n    return (\r\n      <NotifyProvider value={{ state, createNotification, deleteNotification }}>\r\n        <Embedded newPlanRedirect={newPlanRedirect}>\r\n          <Preview openByDefault={previewOpenByDefault} noCampaign={noCampaign}>\r\n            {ChildComponent && <ChildComponent setIsOpen={setIsOpen} />}\r\n          </Preview>\r\n        </Embedded>\r\n      </NotifyProvider>\r\n    );\r\n  };\r\n\r\nexport const hasPreview = (\r\n  ChildComponent,\r\n  openByDefault = true,\r\n  noCampaign = false\r\n) => {\r\n  return () => (\r\n    <Preview openByDefault={openByDefault} noCampaign={noCampaign}>\r\n      <ChildComponent />\r\n    </Preview>\r\n  );\r\n};\r\n","import React, { useEffect, useState, useCallback, useContext } from \"react\";\r\nimport classNames from \"lib/classNames\";\r\nimport GuideContainer from \"./GuideContainer\";\r\nimport GuideLink from \"./GuideLink\";\r\nimport GuideVideo from \"./GuideVideo\";\r\nimport YtClothing from \"svgs/yt-clothing.jpeg\";\r\nimport YtDesigning from \"svgs/yt-designing.jpeg\";\r\nimport YtDropshipping from \"svgs/yt-dropshipping.jpeg\";\r\nimport YtFreeGift from \"svgs/yt-free-gift.jpeg\";\r\nimport YtFreeShipping from \"svgs/yt-free-shipping.jpeg\";\r\nimport YtShippingProtection from \"svgs/yt-shipping-protection.jpeg\";\r\nimport styles from \"styles/tutorial.module.scss\";\r\n\r\nconst TutorialModal = ({ isOpen, setIsOpen }) => {\r\n  return (\r\n    isOpen && (\r\n      <div>\r\n        <div className={styles.overlay} onClick={() => setIsOpen(false)}></div>\r\n        <div className={styles.container}>\r\n          <h4\r\n            className={classNames(\r\n              \"flex-1 text-gray-600 text-md font-bold mb-4\"\r\n            )}\r\n          >\r\n            Here are some quick setup tools. If you need further help please\r\n            contact the support team.\r\n          </h4>\r\n          <div className={styles.close} onClick={() => setIsOpen(false)}>\r\n            X\r\n          </div>\r\n          <div className={classNames(\"flex items-stretch\")}>\r\n            <GuideContainer\r\n              title=\"Frequent Asked Questions\"\r\n              className=\"flex-1\"\r\n              link=\"https://monsterapps.crisp.help/en/\"\r\n              linkLabel=\"Visit Helpdesk\"\r\n              styles={{ marginRight: \"10px\", maxWidth: \"35%\" }}\r\n            >\r\n              <GuideLink\r\n                label=\"Why isn’t my MonsterUpsell cart appearing?\"\r\n                link=\"https://monsterapps.crisp.help/en/article/activate-deactivate-monster-cart-19okfn1/\"\r\n              />\r\n              <GuideLink\r\n                label=\"Can you run multiple Campaigns at the same time?\"\r\n                link=\"https://monsterapps.crisp.help/en/article/multiple-campaigns-at-the-same-time-rules-and-targeting-1tt85ak/\"\r\n              />\r\n              <GuideLink\r\n                label=\"Why isn't the store mini cart in corner syncing to MonsterUpsells?\"\r\n                link=\"https://monsterapps.crisp.help/en/article/cart-button-in-corner-trouble-shooting-1paigp8\"\r\n              />\r\n              <GuideLink\r\n                label=\"Is it possible to create Buy X Get Y offers?\"\r\n                link=\"https://monsterapps.crisp.help/en/article/shopify-auto-discounts-setup-buy-x-get-y-and-more-jlyqfr/\"\r\n              />\r\n              <GuideLink\r\n                label=\"Does MonsterUpsells work with Shopify Marketplace?\"\r\n                link=\"https://monsterapps.crisp.help/en/article/shopify-markets-multi-currency-setup-1ab07h1\"\r\n              />\r\n              <GuideLink\r\n                label=\"How do i turn off my default theme cart?\"\r\n                link=\"https://monsterapps.crisp.help/en/article/my-old-cart-drawerajax-cart-is-showing-jpwk52\"\r\n              />\r\n            </GuideContainer>\r\n            <GuideContainer\r\n              title=\"Setup Guides and Best Practices\"\r\n              className=\"flex-1\"\r\n              link=\"https://monsterapps.crisp.help/en/\"\r\n              linkLabel=\"More Setup Guides\"\r\n              itemsClassName=\"flex items-start flex-wrap\"\r\n              itemsStyles={{ justifyContent: \"space-between\" }}\r\n            >\r\n              <GuideVideo\r\n                label=\"🎁 Add To Unlock Free Gifts\"\r\n                link=\"https://www.youtube.com/watch?v=7x68Cw-C3C4\"\r\n                image={YtFreeGift}\r\n              />\r\n              <GuideVideo\r\n                label=\"🚚 Add To Unlock Free Shipping\"\r\n                link=\"https://www.youtube.com/watch?v=Tn6CKnyprA4\"\r\n                image={YtFreeShipping}\r\n              />\r\n              <GuideVideo\r\n                label=\"🛡 One tick Upsells\"\r\n                link=\"https://www.youtube.com/watch?v=dNva0Jrd3FQ\"\r\n                image={YtShippingProtection}\r\n              />\r\n              <GuideVideo\r\n                label={\"Dropshiping / Gadgets  (Best Practices)\"}\r\n                link=\"https://www.youtube.com/watch?v=psPl2PNYt40\"\r\n                image={YtDropshipping}\r\n              />\r\n              <GuideVideo\r\n                label=\"Clothing / Accessories / Brand (Best Practices)\"\r\n                link=\"https://www.youtube.com/watch?v=utNw-leSD9o\"\r\n                image={YtClothing}\r\n              />\r\n              <GuideVideo\r\n                label=\"Setup & Design Cart\"\r\n                link=\"https://www.youtube.com/watch?v=OOHWtIoAf-w\"\r\n                image={YtDesigning}\r\n              />\r\n            </GuideContainer>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    )\r\n  );\r\n};\r\n\r\nexport default TutorialModal;\r\n","import React, { useEffect, useState, useCallback, useContext } from 'react';\r\nimport classNames from 'lib/classNames';\r\nimport styles from 'styles/charge_approval.module.scss'\r\nimport Modal from \"./Modal\"\r\nimport ShopContext from 'context/ShopContext';\r\nimport { trackMixPanelEvent } from \"lib/mixpanel\" \r\n\r\nconst TallyModal = ({ }) => {\r\n    const { AppLocalStorage, state: { id : shop} } = useContext(ShopContext)\r\n    const [isModalVisible, setIsModalVisible] = useState(!AppLocalStorage.getItem('welcome_video_watched'));\r\n\r\n    const close = () => {\r\n        AppLocalStorage.setItem(\"welcome_video_watched\", true);\r\n        trackMixPanelEvent(\"First login\", shop);\r\n        setIsModalVisible(false);\r\n    }\r\n\r\n    return (\r\n      <div className={classNames(\"absolute z-50\")}>\r\n        <Modal\r\n          visible={isModalVisible}\r\n          onClose={() => close()}\r\n          style={{ minWidth: \"900px\", minHeight: \"530px\" }}\r\n          background=\"bg-white\"\r\n        >\r\n          {(close, setTitle) => (\r\n            <div\r\n              id=\"monster-upsell-cart\"\r\n              className={classNames(\"px-4 h-full w-full \")}\r\n            >\r\n              <div\r\n                className={`${classNames(\"h-full w-full -mt-8\")} ${\r\n                  styles.navy_color\r\n                }`}\r\n              >\r\n                <iframe\r\n                  src=\"https://tally.so/embed/31kGaO?alignLeft=1&hideTitle=1&transparentBackground=1&dynamicHeight=1\"\r\n                  loading=\"lazy\"\r\n                  width=\"100%\"\r\n                  height=\"837\"\r\n                  frameborder=\"0\"\r\n                  marginheight=\"0\"\r\n                  marginwidth=\"0\"\r\n                  title=\"Welcome To Monster Cart Upsells\"\r\n                ></iframe>\r\n              </div>\r\n            </div>\r\n          )}\r\n        </Modal>\r\n      </div>\r\n    );\r\n\r\n}\r\n\r\nexport default TallyModal;","import React from \"react\";\r\nimport { Page, SetupGuide } from \"components\";\r\nimport classNames from \"lib/classNames\";\r\n\r\nconst SetupScreen = ({ setIsOpen }) => {\r\n  return (\r\n    <>\r\n      <Page background=\"white\" header={{ title: \"Getting Started\" }}>\r\n        <SetupGuide />\r\n        <div\r\n          className={classNames(\r\n            \"grid grid-flow-row gap-8 grid-cols-1 lg:grid-cols-3 mt-6\"\r\n          )}\r\n        >\r\n          <div\r\n            className={classNames(\r\n              \"col-span-1 lg:col-span-2 text-gray-600 flex flex-col space-y-3\"\r\n            )}\r\n          >\r\n            <h3 className={classNames(\"font-bold text-lg leading-none\")}>\r\n              Setup guide - Increase revenue\r\n            </h3>\r\n            <iframe\r\n              style={{\r\n                width: \"100%\",\r\n                height: 400,\r\n                minWidth: 700,\r\n                maxWidth: 800,\r\n              }}\r\n              frameBorder=\"0\"\r\n              allowFullScreen=\"1\"\r\n              allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\r\n              title=\"Setup guide - Increase revenue\"\r\n              src=\"https://www.youtube.com/embed/yDMXgJUQ3NY?si=Rb2ctvLvRY4oBRuL&autoplay=0&amp;cc_load_policy=1&amp;controls=2&amp;hl=en&amp;rel=0&amp;enablejsapi=1&amp\"\r\n            ></iframe>\r\n          </div>\r\n        </div>\r\n        <p\r\n          className={classNames(\r\n            \"w-full cursor-pointer hover:underline flex-1 text-gray-600 text-md font-bold mt-6\"\r\n          )}\r\n          onClick={() => setIsOpen(true)}\r\n        >\r\n          Need help setting up campaigns or want best practices? Click here\r\n        </p>\r\n      </Page>\r\n    </>\r\n  );\r\n};\r\n\r\nexport default SetupScreen;\r\n","import React, { useState, useCallback } from \"react\";\r\nimport { Authenticator, Sidebar, Input, Button } from \"components\";\r\nimport { SidebarProvider } from \"context/SidebarContext\";\r\nimport { BrowserRouter, Route, Switch } from \"react-router-dom\";\r\nimport {\r\n  Campaigns,\r\n  ErrorScreen,\r\n  NotFoundScreen,\r\n  LoginScreen,\r\n  NewLoginScreen,\r\n  LogoutScreen,\r\n  CartScreen,\r\n  CodCheckout,\r\n  DashboardScreen,\r\n  FaqScreen,\r\n  PrivacyPolicy,\r\n  ManualSetup,\r\n  PlanScreen,\r\n  StickyCartSettings,\r\n  InvitationScreen,\r\n  Affiliation,\r\n  ReferralScreen,\r\n  Integrations,\r\n} from \"screens\";\r\nimport { withCampaignProvider } from \"context/CampaignContext\";\r\nimport { isEmbedded } from \"lib/wrappers\";\r\nimport styles from \"styles/page.module.scss\";\r\nimport useReactRouter from \"use-react-router\";\r\nimport classNames from \"lib/classNames\";\r\nimport { API } from \"aws-amplify\";\r\nimport TutorialModal from \"components/TutorialModal\";\r\nimport TallyModal from \"components/TallyModal\";\r\nimport SetupScreen from \"screens/SetupScreen\";\r\n\r\nfunction App() {\r\n  return (\r\n    <BrowserRouter>\r\n      <ErrorScreen>\r\n        <Routes />\r\n      </ErrorScreen>\r\n    </BrowserRouter>\r\n  );\r\n}\r\n\r\nexport default App;\r\n\r\nconst Routes = () => {\r\n  const [voucher, setVoucher] = useState(\"\");\r\n  const [newPlanRedirect, setNewPlanRedirect] = useState(null);\r\n  const [isOpen, setIsOpen] = useState(false);\r\n\r\n  const { location } = useReactRouter();\r\n  // const [collapsed, originalSetCollapsed] = useState(\r\n  //   // JSON.parse(localStorage.getItem(\"sidebar_collapsed\"))\r\n  // );\r\n  // const setCollapsed = (value) => {\r\n  //   // localStorage.setItem(\"sidebar_collapsed\", value);\r\n  //   originalSetCollapsed(value);\r\n  // };\r\n  const [collapsed, setCollapsed] = useState(false);\r\n\r\n  if (\r\n    [\"/login\", \"/auth/shopify/callback\"].includes(location.pathname) ||\r\n    new RegExp(\"/invitation/.*\").test(location.pathname) ||\r\n    new RegExp(\"/ref/.*\").test(location.pathname)\r\n  )\r\n    return (\r\n      <Switch>\r\n        {/* <Route path=\"/login\" component={LoginScreen} /> */}\r\n        <Route path=\"/login\" component={NewLoginScreen} />\r\n        <Route path=\"/invitation/:id\" component={InvitationScreen} />\r\n        <Route path=\"/ref/:code\" component={ReferralScreen} />\r\n      </Switch>\r\n    );\r\n  else\r\n    return (\r\n      <Authenticator>\r\n        <>\r\n          <div\r\n            className={classNames(\r\n              \"hidden px-20 pr-8 mx-auto py-2 flex-center bg-indigo-800 text-white font-bold\"\r\n            )}\r\n          >\r\n            <span className={classNames(\"flex-1\")}>Have a voucher code?</span>\r\n            <div className={classNames(\"w-2/3 flex items-center justify-end\")}>\r\n              <Input\r\n                value={voucher}\r\n                onChange={(value) => setVoucher(value)}\r\n                isFlex\r\n                placeholder=\"Voucher code\"\r\n              />\r\n              <Button\r\n                text=\"Use It Now\"\r\n                type=\"secondary2\"\r\n                className={classNames(\"ml-3\")}\r\n                onClick={async () => {\r\n                  const planResponse = await API.post(\r\n                    \"API_GATEWAY_NEW\",\r\n                    \"/shop/get_plan\",\r\n                    {\r\n                      body: {\r\n                        voucher,\r\n                      },\r\n                    }\r\n                  );\r\n                  setVoucher(\"\");\r\n                  setNewPlanRedirect(planResponse.confirmation_url);\r\n                }}\r\n              />\r\n            </div>\r\n          </div>\r\n          <div className={styles.app_wrapper} data-collapsed={collapsed}>\r\n            <SidebarProvider value={{ collapsed, setCollapsed }}>\r\n              <Sidebar />\r\n            </SidebarProvider>\r\n            <Switch>\r\n              <Route path=\"/logout\" component={LogoutScreen} />\r\n              <Route\r\n                path=\"/\"\r\n                component={isEmbedded({\r\n                  ChildComponent: SetupScreen,\r\n                  previewOpenByDefault: false,\r\n                  newPlanRedirect,\r\n                  setIsOpen,\r\n                })}\r\n                exact={true}\r\n              />\r\n              <Route\r\n                path=\"/campaigns\"\r\n                component={isEmbedded({\r\n                  ChildComponent: Campaigns.list,\r\n                  previewOpenByDefault: false,\r\n                  newPlanRedirect,\r\n                  setIsOpen,\r\n                })}\r\n                exact={true}\r\n              />\r\n              <Route\r\n                path=\"/campaigns/create\"\r\n                component={isEmbedded({\r\n                  ChildComponent: withCampaignProvider(\r\n                    Campaigns.create,\r\n                    null,\r\n                    null,\r\n                    setIsOpen\r\n                  ),\r\n                  newPlanRedirect,\r\n                  setIsOpen,\r\n                })}\r\n                exact={true}\r\n              />\r\n              <Route\r\n                path=\"/campaigns/create/:id\"\r\n                component={isEmbedded({\r\n                  ChildComponent: Campaigns.duplicate,\r\n                  newPlanRedirect,\r\n                  setIsOpen,\r\n                })}\r\n              />\r\n              <Route\r\n                path=\"/campaigns/:id\"\r\n                component={isEmbedded({\r\n                  ChildComponent: Campaigns.update,\r\n                  newPlanRedirect,\r\n                  setIsOpen,\r\n                })}\r\n              />\r\n              <Route\r\n                path=\"/settings\"\r\n                component={isEmbedded({\r\n                  ChildComponent: CartScreen,\r\n                  previewOpenByDefault: true,\r\n                  noCampaign: true,\r\n                  newPlanRedirect,\r\n                })}\r\n                exact={true}\r\n              />\r\n\r\n              <Route\r\n                path=\"/sticky\"\r\n                component={isEmbedded({\r\n                  ChildComponent: StickyCartSettings,\r\n                  previewOpenByDefault: true,\r\n                  noCampaign: true,\r\n                  newPlanRedirect,\r\n                })}\r\n                exact={true}\r\n              />\r\n              <Route\r\n                path=\"/settings/checkout\"\r\n                component={isEmbedded({\r\n                  ChildComponent: CodCheckout,\r\n                  previewOpenByDefault: true,\r\n                  noCampaign: true,\r\n                  newPlanRedirect,\r\n                })}\r\n                exact={true}\r\n              />\r\n              <Route\r\n                path=\"/settings/setup\"\r\n                component={isEmbedded({\r\n                  ChildComponent: ManualSetup,\r\n                  previewOpenByDefault: false,\r\n                  newPlanRedirect,\r\n                })}\r\n                exact={true}\r\n              />\r\n              <Route\r\n                path=\"/dashboard\"\r\n                component={isEmbedded({\r\n                  ChildComponent: DashboardScreen,\r\n                  previewOpenByDefault: false,\r\n                  newPlanRedirect,\r\n                })}\r\n                exact={true}\r\n              />\r\n              <Route\r\n                path=\"/plan\"\r\n                component={isEmbedded({\r\n                  ChildComponent: PlanScreen,\r\n                  previewOpenByDefault: false,\r\n                  newPlanRedirect,\r\n                })}\r\n              />\r\n              <Route\r\n                path=\"/integrations\"\r\n                component={isEmbedded({\r\n                  ChildComponent: Integrations,\r\n                  previewOpenByDefault: false,\r\n                  newPlanRedirect,\r\n                })}\r\n              />\r\n              <Route\r\n                path=\"/faq\"\r\n                component={isEmbedded({\r\n                  ChildComponent: FaqScreen,\r\n                  previewOpenByDefault: false,\r\n                  newPlanRedirect,\r\n                })}\r\n              />\r\n              <Route\r\n                path=\"/privacy_policy\"\r\n                component={isEmbedded({\r\n                  ChildComponent: PrivacyPolicy,\r\n                  previewOpenByDefault: false,\r\n                  newPlanRedirect,\r\n                })}\r\n              />\r\n\r\n              <Route\r\n                path=\"/affiliation\"\r\n                component={isEmbedded({\r\n                  ChildComponent: Affiliation,\r\n                  previewOpenByDefault: false,\r\n                  newPlanRedirect,\r\n                })}\r\n                exact={true}\r\n              />\r\n              <Route component={NotFoundScreen} />\r\n            </Switch>\r\n            <TutorialModal isOpen={isOpen} setIsOpen={setIsOpen} />\r\n            <TallyModal />\r\n          </div>\r\n        </>\r\n      </Authenticator>\r\n    );\r\n};\r\n","import createApp from \"@shopify/app-bridge\";\r\nimport { getSessionToken } from \"@shopify/app-bridge-utils\";\r\nimport React, { useState } from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport App from \"./App\";\r\nimport * as config from \"./aws-exports\";\r\nimport Client from \"aws-appsync\";\r\nimport Amplify from \"aws-amplify\";\r\nimport { ApolloProvider } from \"@apollo/react-hooks\";\r\nimport { Rehydrated } from \"components\";\r\nimport { InMemoryCache } from \"apollo-cache-inmemory\";\r\n\r\nconst queryString = window.location.search;\r\nconst params = new URLSearchParams(queryString);\r\nlet client;\r\n\r\nif (params.get(\"shop\")) {\r\n  window.Shopify = {\r\n    currency: {\r\n      rate: 1\r\n    }\r\n  };\r\n\r\n  Amplify.configure({\r\n    // Auth: {\r\n    //   cookieStorage: {\r\n    //     domain: config.AUTH_COOKIE_DOMAIN,\r\n    //     expires: config.AUTH_COOKIE_EXPIRES,\r\n    //     path: config.AUTH_COOKIE_PATH,\r\n    //     secure: true,\r\n    //     sameSite: \"none\"\r\n    //   },\r\n    //   identityPoolId: config.AWS_COGNITO_IDENTITY_POOL_ID,\r\n    //   region: config.AWS_COGNITO_REGION,\r\n    //   userPoolId: config.AWS_COGNITO_USER_POOL_ID,\r\n    //   userPoolWebClientId: config.AWS_COGNITO_USER_POOL_CLIENT_ID\r\n    // },\r\n    API: {\r\n      endpoints: [\r\n        {\r\n          name: \"API_GATEWAY_NEW\",\r\n          endpoint: config.API_GATEWAY_NEW,\r\n          custom_header: async () => {\r\n            return {\r\n              Authorization: `Bearer ${await getSessionToken(shopifyApp)}`\r\n            };\r\n          }\r\n        },\r\n        {\r\n          name: \"API_GATEWAY\",\r\n          endpoint: config.API_GATEWAY,\r\n          custom_header: async () => {\r\n            return {\r\n              Authorization: `Bearer ${await getSessionToken(shopifyApp)}`\r\n            };\r\n          }\r\n        }\r\n      ]\r\n    },\r\n    aws_appsync_graphqlEndpoint: config.APPSYNC_ENDPOINT,\r\n    aws_appsync_region: config.APPSYNC_REGION,\r\n    aws_appsync_authenticationType: \"AWS_LAMBDA\"\r\n  });\r\n\r\n  const cache = new InMemoryCache();\r\n  const shopifyApp = createApp({\r\n    apiKey: config.SHOPIFY_API_KEY,\r\n    shopOrigin: params.get(\"shop\"), // to handle login page\r\n    host: params.get(\"host\") || btoa(params.get(\"shop\"))\r\n  });\r\n  client = new Client({\r\n    auth: {\r\n      token: async () => {\r\n        const token = await getSessionToken(shopifyApp);\r\n        return token;\r\n      },\r\n      type: \"AWS_LAMBDA\"\r\n    },\r\n    region: config.APPSYNC_REGION,\r\n    url: config.APPSYNC_ENDPOINT,\r\n    disableOffline: true,\r\n    cache\r\n  });\r\n\r\n  window.shop = params.get(\"shop\");\r\n}\r\n\r\n\r\nReactDOM.render(\r\n  client ? <ApolloProvider client={client}>\r\n    <Rehydrated>\r\n      <App />\r\n    </Rehydrated>\r\n  </ApolloProvider> : <App />,\r\n  document.getElementById(\"app\")\r\n);\r\n","// Import dependencies\r\nimport axios from \"axios\";\r\nimport wrapper from \"axios-cache-plugin\";\r\n\r\nconst logging = false;\r\naxios.interceptors.request.use((request) => {\r\n  if (logging) console.log(\"Starting Request\", request);\r\n  return request;\r\n});\r\n\r\naxios.interceptors.response.use((response) => {\r\n  if (logging) console.log(\"Response:\", response);\r\n  return response;\r\n});\r\n\r\nlet Api = wrapper(axios, {\r\n  maxCacheSize: 20,\r\n  ttl: 24 * 60000\r\n});\r\nApi.__addFilter(/products/);\r\n\r\nexport default Api;\r\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"customScrollbars\":\"page_customScrollbars__kv58A\",\"topBarWrapper\":\"page_topBarWrapper__1YfHZ\",\"app_wrapper\":\"page_app_wrapper__qSf65\",\"app_container\":\"page_app_container__2KX6y\",\"page_header\":\"page_page_header__TM-uT\",\"action\":\"page_action__2KvAQ\",\"page\":\"page_page__3-Uh5\",\"page_content\":\"page_page_content__2tC9_\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"calendar\":\"calendar_calendar__3srR9\",\"header\":\"calendar_header__21JZa\",\"selects\":\"calendar_selects__3zjo7\",\"weekDays\":\"calendar_weekDays__3G0DI\",\"days\":\"calendar_days__119h-\",\"selected\":\"calendar_selected__14nrg\",\"preview\":\"calendar_preview__2HMFV\",\"months\":\"calendar_months__1Kqw9\"};","import React, {\r\n  Fragment,\r\n  useState,\r\n  useContext,\r\n  useEffect,\r\n  useMemo,\r\n} from \"react\";\r\nimport PropTypes from \"prop-types\";\r\n\r\nimport axios from \"axios\";\r\nimport Cookies from \"js-cookie\";\r\nimport loadable from \"@loadable/component\";\r\nimport { CartContext } from \"components/cart\";\r\nimport { API_GATEWAY_NEW } from \"aws-exports\";\r\nimport API from \"../Api\";\r\nimport useCampaign from \"hooks/useCampaign\";\r\nimport classNames from \"lib/classNames\";\r\nimport { GetCartLevelAutoDiscount } from \"../Utils\";\r\nimport { DefaultAutoDiscountSettings } from \"./CartItemsList\";\r\nconst AddToUnlock = loadable(() => import(\"./AddToUnlock\"));\r\nconst OneCheckUpSell = loadable(() => import(\"./OneCheckUpSell\"));\r\nconst Scary = loadable(() => import(\"./scary\"));\r\nconst Badges = loadable(() => import(\"./badges\"));\r\nconst Announcement = loadable(() => import(\"./announcement\"));\r\nconst AfterPay = loadable(() => import(\"./afterPay\"));\r\nconst NewOneCheckUpSell = loadable(() => import(\"./NewOneCheckUpSell\"));\r\nconst ConditionCheck = loadable(() => import(\"./ConditionCheck\"));\r\nconst CouponCodeForm = loadable(() => import(\"./CouponCodeForm\"));\r\n\r\nconst CheckoutButton = (props) => {\r\n  const {\r\n    campaigns,\r\n    cart_settings,\r\n    get_total,\r\n    Utils,\r\n    isPreview,\r\n    shop_url,\r\n    cart_level_discount_applications,\r\n    shopify_cart_items,\r\n    shopify_cart_upsells,\r\n    cart_currency,\r\n    productAddedToCart,\r\n    discountCode,\r\n    token,\r\n    showCheckoutLoading,\r\n    cartNote,\r\n    slider,\r\n    setPreviewed_product,\r\n    update_cart_item,\r\n    hasAutoDiscount,\r\n    rechargeSettings,\r\n  } = useContext(CartContext);\r\n  const cartLevelAutoDiscount = useMemo(() => {\r\n    return GetCartLevelAutoDiscount({ cart_level_discount_applications });\r\n  }, [shopify_cart_items, cart_level_discount_applications]);\r\n  const [checkoutLoading, setCheckoutLoading] = useState(false);\r\n  const [previewCheckoutToast, setPreviewCheckoutToast] = useState(false);\r\n  const [isTermsAccepted, setIsTermsAccepted] = useState(false);\r\n  const [shakeClass, setShakeClass] = useState(\"\");\r\n  const {\r\n    theme: { secondary, primary, background },\r\n    money_format,\r\n    modules: { checkout_button },\r\n    auto_discount = DefaultAutoDiscountSettings,\r\n    currency,\r\n    show_coupon,\r\n    show_coupon_alert_text,\r\n    rtl,\r\n    cod_settings = {},\r\n    scary = {},\r\n    badges = {},\r\n    announcement = {},\r\n    afterPay,\r\n    checkout_condition_text,\r\n    is_checkout_condition_active,\r\n    checkout_condition_color,\r\n  } = cart_settings;\r\n  function formatAutoDiscount(discount) {\r\n    const { title, total_allocated_amount } = discount;\r\n    return auto_discount.text.text\r\n      .replace(\"{{title}}\", title)\r\n      .replace(\r\n        \"{{amount}}\",\r\n        Utils.formatMoney(total_allocated_amount, money_format)\r\n      );\r\n  }\r\n  function formatCheckout(text) {\r\n    const moneyHtml = Utils.formatMoney(get_total(\"subtotal\"), money_format);\r\n    const parser = new DOMParser();\r\n    const doc = parser.parseFromString(moneyHtml, \"text/html\");\r\n    const subtotal = doc.body.textContent || \"\";\r\n    return text\r\n      .replace(/\\//g, \"•\")\r\n      .replace(\r\n        /(\\{)?\\{\\s*subtotal\\s*\\}(\\})?/gi,\r\n        () => `<span class=\"money\">${subtotal}</span>`\r\n      );\r\n  }\r\n  const generateCheckoutUrl = (discount = null, esid = null) => {\r\n    const wheelioDiscount = Cookies.get(\"discount_code\");\r\n    const queryString = [\r\n      discount && `discount=${encodeURIComponent(discount)}`,\r\n      !discount &&\r\n        wheelioDiscount &&\r\n        `discount=${encodeURIComponent(wheelioDiscount)}`,\r\n      esid && `attributes[esid]=${esid}`,\r\n    ].filter(Boolean);\r\n    return Utils.getLangPath(\r\n      `checkout${queryString.length ? `?${queryString.join(\"&\")}` : \"\"}`\r\n    );\r\n    // return `https://${shop_url}/cart/${shopify_cart_items\r\n    // \t.map(({ variant_id, quantity }) => `${variant_id}:${quantity}`)\r\n    // \t.join()}${discount ? '?discount=' + discount : ''}`;\r\n  };\r\n  const setNote = async () => {\r\n    try {\r\n      await API.post(Utils.getLangPath(\"cart/update.js\"), { note: cartNote });\r\n    } catch (error) {\r\n      console.log(error);\r\n    }\r\n  };\r\n  const [one_check_up_sell_product_id, ocu_campaign, ocu_isGlobal] =\r\n    useCampaign(\"one_check_up_sell\", null, true)(campaigns, shopify_cart_items);\r\n  const [add_to_unlock_product_id, add_to_unlock, isGlobal] = useCampaign(\r\n    \"add_to_unlock\"\r\n  )(campaigns, shopify_cart_items);\r\n  const CAN_RENDER_ADD_TO_UNLOCK =\r\n    add_to_unlock &&\r\n    (add_to_unlock.products.length ||\r\n      add_to_unlock.recommendation_type == \"shopify_recommendation\" ||\r\n      isPreview) &&\r\n    add_to_unlock.show_suggestions &&\r\n    (productAddedToCart({ id: add_to_unlock_product_id }) ||\r\n      (isGlobal && shopify_cart_items.length));\r\n  const products = getAllOCUProducts(ocu_campaign);\r\n  const CAN_RENDER_ONE_CHECK_UP_SELL =\r\n    ocuHasProduct(ocu_campaign || {}, products, isPreview) &&\r\n    (productAddedToCart({ id: one_check_up_sell_product_id }) ||\r\n      (ocu_isGlobal && shopify_cart_items.length));\r\n\r\n    const redirectToCheckout = async (discount = null, esid = null) => {\r\n        if(window.addShipProtect){\r\n            await window.addShipProtect();\r\n        }\r\n        const checkoutUrl = generateCheckoutUrl(discount, esid);\r\n        if (window.mu_checkoutHook) {\r\n            const response = await window.mu_checkoutHook(checkoutUrl, setCheckoutLoading);\r\n            if(response) return;\r\n        }\r\n        setCheckoutLoading(false);\r\n        window.location.href = checkoutUrl;\r\n    };\r\n\r\n  const generateReChargeCheckout = async () => {\r\n    const {\r\n      data: { token },\r\n    } = await axios.get(`${window.location.origin}/cart.js`);\r\n    const checkoutUrl = `https://checkout.rechargeapps.com/r/checkout?myshopify_domain=${\r\n      shop_url || window.Shopify.shop\r\n    }&cart_token=${token}`;\r\n    setCheckoutLoading(false);\r\n    window.location.href = checkoutUrl;\r\n  };\r\n\r\n    const checkout = async () => {\r\n        const isRechargeCheckout =\r\n            rechargeSettings &&\r\n            !!shopify_cart_items.filter(\r\n                ({ properties }) =>\r\n                    properties &&\r\n                    properties?.shipping_interval_frequency &&\r\n                    properties?.shipping_interval_unit_type\r\n            ).length;\r\n        if (is_checkout_condition_active && !isTermsAccepted) {\r\n            setShakeClass('shake-it');\r\n            if (!shakeClass) {\r\n                setTimeout(() => {\r\n                    setShakeClass('');\r\n                }, 900);\r\n            }\r\n            return;\r\n        }\r\n        if (isPreview) {\r\n            setCheckoutLoading(true);\r\n            setPreviewCheckoutToast(true);\r\n            setTimeout(() => {\r\n                setCheckoutLoading(false);\r\n                setPreviewCheckoutToast(false);\r\n            }, 4000);\r\n            return;\r\n        }\r\n        await setNote();\r\n        if (window.mu_custom_checkout) {\r\n            const continueExecuting = await window.mu_custom_checkout();\r\n            if(continueExecuting === false) return;\r\n        }\r\n        if (window.ttq && !window.mu_disable_tiktok_tracking) {\r\n            window.ttq.track('StartCheckout', {\r\n                value: get_total('subtotal') / 100,\r\n                currency: cart_currency,\r\n                contents: shopify_cart_items.map((item) => ({\r\n                    content_type: 'product',\r\n                    content_name: item.title,\r\n                    content_id: item.product_id,\r\n                    quantity: item.quantity,\r\n                    price: item.price / 100\r\n                }))\r\n            });\r\n        }\r\n        setCheckoutLoading(true);\r\n        if (discountCode) {\r\n            return await redirectToCheckout(discountCode.code);\r\n        } else if (hasAutoDiscount) {\r\n            return await redirectToCheckout();\r\n        }\r\n        if (isRechargeCheckout) {\r\n            return generateReChargeCheckout();\r\n        }\r\n        // const token = cart_token || generateToken(campaigns)\r\n        API.post(`${API_GATEWAY_NEW}/public/checkout`, {\r\n            shop: shop_url || window.Shopify?.shop,\r\n            items: shopify_cart_items.map(\r\n                ({ variant_id, product_id, quantity, selling_plan_allocation }) => ({\r\n                    variant_id,\r\n                    product_id,\r\n                    quantity,\r\n                    sp: selling_plan_allocation?.selling_plan?.id\r\n                })\r\n            ),\r\n            note: cartNote,\r\n            fbt: shopify_cart_upsells,\r\n            cart_currency,\r\n            schema: Object.entries(campaigns).reduce((acc, cur) => {\r\n                const [product_id, campaigns] = cur;\r\n                acc[product_id] = campaigns.map(({ campaign_key }) => campaign_key);\r\n                return acc;\r\n            }, {}),\r\n            discountCode: discountCode?.title || null\r\n        })\r\n            .then(async ({ data: { invoice_url, code, esid } }) => {\r\n                Cookies.remove('monster_cart');\r\n                Cookies.remove('monster_product_id');\r\n                if(!window.mu_keep_checkout_loading) setCheckoutLoading(false);\r\n                if (invoice_url) {\r\n                    window.location.href = invoice_url;\r\n                } else {\r\n                    if (code) {\r\n                        await axios.get(`${window.location.origin}/discount/${code}`);\r\n                    }\r\n                    return await redirectToCheckout(code, esid);\r\n                }\r\n            })\r\n            .catch((error) => {\r\n                console.log('checkout error', error);\r\n                setCheckoutLoading(false);\r\n            });\r\n    };\r\n\r\n    useEffect(() => {\r\n      async function getCheckoutInfo(\r\n        items = window.mu_filter_discount_items\r\n          ? window.mu_filter_discount_items(shopify_cart_items)\r\n          : shopify_cart_items\r\n      ) {\r\n        const { data } = await API.post(`${API_GATEWAY_NEW}/public/checkout`, {\r\n          shop: shop_url || window.Shopify?.shop,\r\n          items: items.map(\r\n            ({\r\n              variant_id,\r\n              product_id,\r\n              quantity,\r\n              selling_plan_allocation,\r\n              price,\r\n            }) => ({\r\n              variant_id,\r\n              product_id,\r\n              quantity,\r\n              sp: selling_plan_allocation?.selling_plan?.id,\r\n              ...(selling_plan_allocation\r\n                ? {\r\n                    selling_plan: {\r\n                      price_adjustments_value:\r\n                        ((price - selling_plan_allocation.price) / price) * 100,\r\n                      price_adjustments_value_type: \"percentage\",\r\n                    },\r\n                  }\r\n                : {}),\r\n            })\r\n          ),\r\n          note: cartNote,\r\n          fbt: shopify_cart_upsells,\r\n          cart_currency,\r\n          schema: Object.entries(campaigns).reduce((acc, cur) => {\r\n            const [product_id, campaigns] = cur;\r\n            acc[product_id] = campaigns.map(({ campaign_key }) => campaign_key);\r\n            return acc;\r\n          }, {}),\r\n          discountCode: discountCode?.title || null,\r\n        });\r\n        return data;\r\n      }\r\n      window.mu_get_discount = getCheckoutInfo;\r\n    }, [\r\n      discountCode,\r\n      shopify_cart_items,\r\n      cartNote,\r\n      shopify_cart_upsells,\r\n      campaigns,\r\n    ]);\r\n    \r\n    useEffect(() => {\r\n        window.mu_terms_accepted = isTermsAccepted;\r\n    }, [isTermsAccepted]);\r\n\r\n    return (\r\n      <div\r\n        id=\"mu-checkout-container\"\r\n        className={classNames(\"px-5\", {\r\n          \"relative overflow-hidden border-t border-gray-300 pt-2 pb-2\":\r\n            checkout_button.fix_checkout_container,\r\n        })}\r\n      >\r\n        {/* {isPreview && previewCheckoutToast && (\r\n  const checkout = async () => {\r\n    const isRechargeCheckout =\r\n      rechargeSettings &&\r\n      !!shopify_cart_items.filter(\r\n        ({ properties }) =>\r\n          properties &&\r\n          properties?.shipping_interval_frequency &&\r\n          properties?.shipping_interval_unit_type\r\n      ).length;\r\n    if (is_checkout_condition_active && !isTermsAccepted) {\r\n      setShakeClass(\"shake-it\");\r\n      if (!shakeClass) {\r\n        setTimeout(() => {\r\n          setShakeClass(\"\");\r\n        }, 900);\r\n      }\r\n      return;\r\n    }\r\n    if (isPreview) {\r\n      setCheckoutLoading(true);\r\n      setPreviewCheckoutToast(true);\r\n      setTimeout(() => {\r\n        setCheckoutLoading(false);\r\n        setPreviewCheckoutToast(false);\r\n      }, 4000);\r\n      return;\r\n    }\r\n    await setNote();\r\n    if (window.ttq && !window.mu_disable_tiktok_tracking) {\r\n      window.ttq.track(\"StartCheckout\", {\r\n        value: get_total(\"subtotal\") / 100,\r\n        currency: cart_currency,\r\n        contents: shopify_cart_items.map((item) => ({\r\n          content_type: \"product\",\r\n          content_name: item.title,\r\n          content_id: item.product_id,\r\n          quantity: item.quantity,\r\n          price: item.price / 100,\r\n        })),\r\n      });\r\n    }\r\n    setCheckoutLoading(true);\r\n    if (discountCode) {\r\n      return await redirectToCheckout(discountCode.code);\r\n    } else if (hasAutoDiscount) {\r\n      return await redirectToCheckout();\r\n    }\r\n    if (isRechargeCheckout) {\r\n      return generateReChargeCheckout();\r\n    }\r\n    // const token = cart_token || generateToken(campaigns)\r\n    API.post(`${API_GATEWAY_NEW}/public/checkout`, {\r\n      shop: shop_url || window.Shopify?.shop,\r\n      items: shopify_cart_items.map(\r\n        ({ variant_id, product_id, quantity, selling_plan_allocation }) => ({\r\n          variant_id,\r\n          product_id,\r\n          quantity,\r\n          sp: selling_plan_allocation?.selling_plan?.id,\r\n        })\r\n      ),\r\n      note: cartNote,\r\n      fbt: shopify_cart_upsells,\r\n      cart_currency,\r\n      schema: Object.entries(campaigns).reduce((acc, cur) => {\r\n        const [product_id, campaigns] = cur;\r\n        acc[product_id] = campaigns.map(({ campaign_key }) => campaign_key);\r\n        return acc;\r\n      }, {}),\r\n      discountCode: discountCode?.title || null,\r\n    })\r\n      .then(async ({ data: { invoice_url, code, esid } }) => {\r\n        Cookies.remove(\"monster_cart\");\r\n        Cookies.remove(\"monster_product_id\");\r\n        if (!window.mu_keep_checkout_loading) setCheckoutLoading(false);\r\n        if (invoice_url) {\r\n          window.location.href = invoice_url;\r\n        } else {\r\n          if (code) {\r\n            await axios.get(`${window.location.origin}/discount/${code}`);\r\n          }\r\n          return await redirectToCheckout(code, esid);\r\n        }\r\n      })\r\n      .catch((error) => {\r\n        console.log(\"checkout error\", error);\r\n        setCheckoutLoading(false);\r\n      });\r\n  };\r\n  return (\r\n    <div\r\n      id=\"mu-checkout-container\"\r\n      className={classNames(\"px-5\", {\r\n        \"relative overflow-hidden border-t border-gray-300 pt-2 pb-2\":\r\n          checkout_button.fix_checkout_container,\r\n      })}\r\n    >\r\n      {/* {isPreview && previewCheckoutToast && (\r\n\t\t\t\t<Toast content={`This is only a preview button. Visit store for action`} duration={3000} />\r\n\t\t\t)} */}\r\n\r\n        {cartLevelAutoDiscount && (\r\n          <div style={{ textAlign: \"end\" }}>\r\n            <div\r\n              className={classNames(\r\n                \"text-sm p-1 rounded mb-1 inline-flex items-center space-x-1\"\r\n              )}\r\n              style={{\r\n                fontSize: `${auto_discount.text.font_size}em`,\r\n                fontWeight: auto_discount.text.font_weight,\r\n                color: Utils.formatColor(auto_discount.text.color),\r\n                background: Utils.formatColor(auto_discount.background),\r\n                border: `${Utils.formatColor(auto_discount.border)} 1px solid`,\r\n              }}\r\n            >\r\n              <svg\r\n                xmlns=\"http://www.w3.org/2000/svg\"\r\n                viewBox=\"0 0 20 20\"\r\n                fill=\"currentColor\"\r\n                className={classNames(\"w-5 h-5\")}\r\n              >\r\n                <path\r\n                  fill-rule=\"evenodd\"\r\n                  d=\"M5.5 3A2.5 2.5 0 003 5.5v2.879a2.5 2.5 0 00.732 1.767l6.5 6.5a2.5 2.5 0 003.536 0l2.878-2.878a2.5 2.5 0 000-3.536l-6.5-6.5A2.5 2.5 0 008.38 3H5.5zM6 7a1 1 0 100-2 1 1 0 000 2z\"\r\n                  clip-rule=\"evenodd\"\r\n                />\r\n              </svg>\r\n              <span className={classNames(\"leading-none\")}>\r\n                {formatAutoDiscount(cartLevelAutoDiscount)}\r\n              </span>\r\n            </div>\r\n          </div>\r\n        )}\r\n        {show_coupon && <CouponCodeForm />}\r\n\r\n        {scary.isActive && scary.placement === \"bottom\" && (\r\n          <Scary scary={scary} />\r\n        )}\r\n        {announcement?.isActive && announcement.position === \"above_totals\" && (\r\n          <Announcement announcement={announcement} />\r\n        )}\r\n        {badges?.isActive && badges.position === \"above_totals\" && (\r\n          <Badges badges={badges} />\r\n        )}\r\n        <InfoItem\r\n          name={{ ...checkout_button.savings, text: \"total\" }}\r\n          value={get_total(\"total\")}\r\n          infoClass=\"total hidden\"\r\n        />\r\n        {get_total(\"finalDiscount\") > 0 && (\r\n          <InfoItem\r\n            negative={true}\r\n            name={checkout_button.savings}\r\n            value={get_total(\"finalDiscount\")}\r\n            infoClass=\"savings\"\r\n          />\r\n        )}\r\n\r\n        <InfoItem\r\n          name={checkout_button.subtotal}\r\n          value={get_total(\"subtotal\")}\r\n          infoClass={`subtotal${\r\n            checkout_button.show_subtotal ? \" hidden\" : \"\"\r\n          }`}\r\n        />\r\n        {afterPay?.isActive && (\r\n          <AfterPay afterPay={afterPay} price={get_total(\"subtotal\")} />\r\n        )}\r\n        {!!CAN_RENDER_ONE_CHECK_UP_SELL && (\r\n          <div\r\n            id=\"mu-ocu-container\"\r\n            className={classNames(\"flex flex-col mb-1 space-y-1\")}\r\n          >\r\n            {products.map((ocu, i) => {\r\n              const isOld = !ocu_campaign?.multi_one_check_upsell;\r\n              if (isOld) {\r\n                return (\r\n                  <OneCheckUpSell\r\n                    key={`one_tick_${i}`}\r\n                    one_check_up_sell={ocu}\r\n                  />\r\n                );\r\n              } else {\r\n                return (\r\n                  <NewOneCheckUpSell\r\n                    key={`one_tick_${i}`}\r\n                    index={i}\r\n                    one_check_up_sell={ocu}\r\n                    multi_one_check_upsell={ocu_campaign.multi_one_check_upsell}\r\n                  />\r\n                );\r\n              }\r\n            })}\r\n          </div>\r\n        )}\r\n        {!!is_checkout_condition_active && (\r\n          <ConditionCheck\r\n            {...{\r\n              checkout_condition_text,\r\n              checkout_condition_color,\r\n              isTermsAccepted,\r\n              setIsTermsAccepted,\r\n              Utils,\r\n              rtl,\r\n              shakeClass,\r\n            }}\r\n          />\r\n        )}\r\n        {badges?.isActive && badges.position === \"above_checkout\" && (\r\n          <Badges badges={badges} />\r\n        )}\r\n        <div className=\"fondue-cashback-module\"></div>\r\n        {/* normal checkout */}\r\n        <button\r\n          id=\"mu-checkout-button\"\r\n          className={classNames(\r\n            `custom-btn w-full${checkout_button.checkout_as_link ? \" py-1\":\" py-3\"} mb-2 checkout-btn flex items-center justify-center`,\r\n            {\r\n              \"rounded\": !checkout_button.checkout_as_link,\r\n              \"hover:bg-transparent\": checkout_button.checkout_as_link\r\n            }\r\n          )}\r\n          style={{\r\n            backgroundColor: checkout_button.checkout_as_link\r\n              ? \"transparent\"\r\n              : Utils.formatColor(checkout_button.background),\r\n            border: checkout_button.checkout_as_link ? \"none\" : \"inherit\",\r\n            textDecoration: checkout_button.checkout_as_link\r\n              ? \"underline\"\r\n              : \"none\",\r\n            fontFamily: \"inherit\",\r\n            fontSize: Utils.em(checkout_button.button_text.font_size),\r\n            fontWeight: checkout_button.button_text.font_weight,\r\n            color:\r\n              checkoutLoading || showCheckoutLoading\r\n                ? Utils.formatColor(checkout_button.button_text_loading.color)\r\n                : Utils.formatColor(checkout_button.button_text.color),\r\n            \"--hover-background\": Utils.formatColor(\r\n              checkout_button.hoverBackground\r\n            ),\r\n          }}\r\n          onClick={async () => await checkout()}\r\n          disabled={checkoutLoading || showCheckoutLoading}\r\n          data-loading={`${checkoutLoading || showCheckoutLoading}`}\r\n          data-display={Utils.formatMoney(get_total(\"subtotal\"), money_format)}\r\n        >\r\n          {window.mu_checkout_img && (\r\n            <span\r\n              className={classNames(\"mr-2\")}\r\n              dangerouslySetInnerHTML={{ __html: window.mu_checkout_img }}\r\n            />\r\n          )}\r\n          <span\r\n            dangerouslySetInnerHTML={{\r\n              __html:\r\n                (checkoutLoading || showCheckoutLoading) &&\r\n                !window.mu_stop_checkout_loading\r\n                  ? checkout_button.button_text_loading.text\r\n                  : formatCheckout(checkout_button.button_text.text),\r\n            }}\r\n          />\r\n          {/* {checkout_button.show_subtotal &&\r\n          !checkoutLoading &&\r\n          !showCheckoutLoading && (\r\n            <span\r\n              className={classNames(\"checkout-subtotal\", {\r\n                \"ml-1\": !rtl,\r\n                \"mr-1\": rtl,\r\n              })}\r\n            >\r\n              • {Utils.formatMoney(get_total(\"subtotal\"), money_format)}\r\n            </span>\r\n          )} */}\r\n        </button>\r\n        {badges?.isActive && badges.position === \"bellow_checkout\" && (\r\n          <Badges badges={badges} />\r\n        )}\r\n        {checkout_button.active_continue_shopping_button && (\r\n          <div\r\n            id=\"mu-continue-shopping\"\r\n            onClick={() => {\r\n              if (window.mu_continue_shopping_logic) {\r\n                const continueExecuting = window.mu_continue_shopping_logic();\r\n                if (continueExecuting === false) return;\r\n              }\r\n              if (window.closeCart) window.closeCart();\r\n            }}\r\n            className={classNames(\r\n              \"custom-btn w-full w-full py-1 mb-1 text-center cursor-pointer\"\r\n            )}\r\n            style={{\r\n              color: Utils.formatColor(\r\n                checkout_button.continue_shopping_button.color\r\n              ),\r\n              fontSize: `${checkout_button.continue_shopping_button.font_size}em`,\r\n              textDecoration:\r\n                checkout_button.active_continue_shopping_underlined &&\r\n                \"underline\",\r\n            }}\r\n          >\r\n            {checkout_button.continue_shopping_button.text}\r\n          </div>\r\n        )}\r\n        {!!CAN_RENDER_ADD_TO_UNLOCK &&\r\n          add_to_unlock.fbt_position !== \"under_products\" &&\r\n          add_to_unlock.fbt_position !== \"above_checkout\" &&\r\n          (add_to_unlock.fbt_position || !add_to_unlock.fbt_below) && (\r\n            <AddToUnlock {...{ add_to_unlock, add_to_unlock_product_id }} />\r\n          )}\r\n      </div>\r\n    );\r\n};\r\n\r\nconst InfoItem = ({\r\n  name: { text, font_size, color, font_weight },\r\n  value,\r\n  negative = false,\r\n  infoClass = \"\",\r\n}) => {\r\n  const {\r\n    Utils,\r\n    cart_settings: { money_format },\r\n  } = useContext(CartContext);\r\n  // const original = get_total('discount') > 0 ? get_total('original') : null;\r\n  return (\r\n    <div\r\n      className={classNames(\r\n        `${infoClass} pb-2 flex items-center font-bold info-item`\r\n      )}\r\n      style={{\r\n        fontSize: Utils.em(font_size),\r\n        fontWeight: font_weight,\r\n        color: Utils.formatColor(color),\r\n      }}\r\n    >\r\n      <span\r\n        className={classNames(\"flex-1 flex-grow\")}\r\n        style={{ color: \"inherit\" }}\r\n      >\r\n        {text}\r\n      </span>\r\n      <AnimatedNumber\r\n        component=\"span\"\r\n        value={value}\r\n        style={{ color: \"inherit\" }}\r\n        formatValue={(n) =>\r\n          `${\r\n            negative && !window.mu_stop_negative ? \"-\" : \"\"\r\n          }${Utils.formatMoney(n, money_format)}`\r\n        }\r\n      />\r\n    </div>\r\n  );\r\n};\r\n\r\nconst AnimatedNumber = ({ value, style = {}, formatValue = null }) => (\r\n  <span\r\n    {...{ style }}\r\n    data-value={formatValue ? formatValue(value) : value}\r\n    className=\"notranslate\"\r\n    dangerouslySetInnerHTML={{\r\n      __html: formatValue ? formatValue(value) : value,\r\n    }}\r\n  />\r\n);\r\n\r\nCheckoutButton.propTypes = {};\r\n\r\nexport default CheckoutButton;\r\n\r\nfunction ocuHasProduct(\r\n  { one_check_up_sell, multi_one_check_upsell } = {},\r\n  products,\r\n  preview\r\n) {\r\n  if (preview) return true;\r\n  if (!one_check_up_sell && !multi_one_check_upsell) return false;\r\n  return !!products.find(canRenderOCU);\r\n}\r\n\r\nexport function getAllOCUProducts(campaign) {\r\n  if (!campaign) return [];\r\n  const { one_check_up_sell, multi_one_check_upsell } = campaign;\r\n  return multi_one_check_upsell\r\n    ? multi_one_check_upsell.products\r\n    : [one_check_up_sell];\r\n}\r\n\r\nexport function isOCUProduct(campaign, product_id, is_example) {\r\n  if (!campaign) return false;\r\n  if (is_example) return true;\r\n  const products = getAllOCUProducts(campaign);\r\n  return !!products.find(\r\n    ({ product }) => product && parseInt(product.id) === product_id\r\n  );\r\n}\r\n\r\nfunction canRenderOCU({ product, text }) {\r\n  return !!product && !!text;\r\n}\r\n\r\n// function generateToken (campaigns) {\r\n//   const token = Object.assign(\r\n//     {},\r\n//     ...Object.entries(campaigns).map(([product_id, product_campaigns]: any[]) => {\r\n//       return {\r\n//         [product_id]: product_campaigns.map(({ campaign_key }: any) => campaign_key)\r\n//       }\r\n//     })\r\n//   );\r\n//   const simpleCrypto = new SimpleCrypto('58j?18!rI/]63#i~aqZZ*p(7<GSyJH');\r\n//   return simpleCrypto.encrypt(token)\r\n// }\r\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"product_selector_container__2zpr4\",\"add\":\"product_selector_add__2HM2T\",\"inside\":\"product_selector_inside__2UXx0\",\"product\":\"product_selector_product__3n_bR\",\"selected\":\"product_selector_selected__2eAkw\",\"title\":\"product_selector_title__1Lo6w\",\"priceTag\":\"product_selector_priceTag__3eKmJ\",\"tile\":\"product_selector_tile__heHJN\"};","import React, { useEffect } from \"react\";\r\nimport ReactSwitch from \"react-switch\";\r\nimport useBindToContext from \"hooks/useBindToContext\";\r\nimport classNames from \"lib/classNames\";\r\n\r\nconst Switch = ({\r\n\tvalue,\r\n\tdisabled = false,\r\n\tclassName = \"\",\r\n\tonChange,\r\n\tBindToContext = null,\r\n\thandleDiameter,\r\n\twidth,\r\n\theight,\r\n\tonColor,\r\n\toffColor,\r\n\tonHandleColor,\r\n\toffHandleColor,\r\n\tonFocus,\r\n\tonBlur,\r\n\tnoText = false\r\n}) => {\r\n\tconst [BindedValue, BindedOnChange, _, onRender] = useBindToContext(\r\n\t\tBindToContext,\r\n\t\tvalue,\r\n\t\tonChange\r\n\t);\r\n\r\n\t//useEffect(() => {\r\n\t//if (onRender?.length) onRender.forEach(fn => fn());\r\n\t//}, [onRender]);\r\n\r\n\treturn (\r\n\t\t<ReactSwitch\r\n\t\t\tchecked={BindedValue || false}\r\n\t\t\tonColor={onColor || \"#68d391\"}\r\n\t\t\toffColor={offColor || \"#f6ad55\"}\r\n\t\t\tdisabled={disabled}\r\n\t\t\tonHandleColor={onHandleColor || \"#FFFFFF\"}\r\n\t\t\toffHandleColor={offHandleColor || \"#FFFFFF\"}\r\n\t\t\thandleDiameter={handleDiameter || 22}\r\n\t\t\tboxShadow=\"0px 1px 5px rgba(0, 0, 0, 0.6)\"\r\n\t\t\tuncheckedIcon={false}\r\n\t\t\theight={height || 20}\r\n\t\t\twidth={width || 47}\r\n\t\t\tonChange={BindedOnChange}\r\n\t\t\tclassName={`switch ${className}`}\r\n\t\t\tonFocus={(e) => {\r\n\t\t\t\tif (onFocus) onFocus(e);\r\n\t\t\t}}\r\n\t\t\tonBlur={(e) => {\r\n\t\t\t\tif (onBlur) onBlur(e);\r\n\t\t\t}}\r\n\t\t\tcheckedIcon={\r\n\t\t\t\tnoText ? false : (\r\n\t\t\t\t\t<div\r\n\t\t\t\t\t\tclassName={classNames(\r\n\t\t\t\t\t\t\t\"flex-center h-full font-bold text-white pl-1\"\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\tstyle={{ fontSize: \"0.6em\" }}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\tON\r\n\t\t\t\t\t</div>\r\n\t\t\t\t)\r\n\t\t\t}\r\n\t\t\tuncheckedIcon={\r\n\t\t\t\tnoText ? false : (\r\n\t\t\t\t\t<div\r\n\t\t\t\t\t\tclassName={classNames(\r\n\t\t\t\t\t\t\t\"flex-center h-full font-bold text-white pr-1\"\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\tstyle={{ fontSize: \"0.6em\" }}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\tOFF\r\n\t\t\t\t\t</div>\r\n\t\t\t\t)\r\n\t\t\t}\r\n\t\t/>\r\n\t);\r\n};\r\n\r\nexport default Switch;\r\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"form\":\"campaign_settings_second_step_form__1IwEJ\",\"addBundle\":\"campaign_settings_second_step_addBundle__1TAkA\",\"goal\":\"campaign_settings_second_step_goal__1blpn\",\"row\":\"campaign_settings_second_step_row__14sXN\",\"header\":\"campaign_settings_second_step_header__3ous6\",\"switch\":\"campaign_settings_second_step_switch__1cken\",\"presets\":\"campaign_settings_second_step_presets__2Utnf\",\"preset\":\"campaign_settings_second_step_preset__2IPiF\",\"cover\":\"campaign_settings_second_step_cover__1FPwP\",\"title\":\"campaign_settings_second_step_title__1KprV\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"overlay\":\"tutorial_overlay__20obe\",\"container\":\"tutorial_container__1J8-S\",\"close\":\"tutorial_close__1evcg\",\"link\":\"tutorial_link__2Ffsy\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"modal\":\"modal_modal__3apDG\",\"header\":\"modal_header__3_jDX\",\"meta\":\"modal_meta__3yj7b\",\"head\":\"modal_head__2Vy9R\",\"content\":\"modal_content__39mqc\",\"wrapper\":\"modal_wrapper__xkAcp\",\"footer\":\"modal_footer__JiRDX\"};","import React from 'react';\r\nimport styles from 'styles/button.module.scss';\r\nimport loadable from '@loadable/component'\r\nimport PropTypes from 'prop-types';\r\nimport styled from 'styled-components';\r\nimport classNames from 'lib/classNames';\r\nconst Icon = loadable(() => import('components/Icon'));\r\n\r\nconst StyledButton = styled.button`\r\n\t&:hover,\r\n\t&:active {\r\n\t\tbackground: ${(props) => props.hover_background || ''} !important;\r\n\t}\r\n`;\r\n\r\nconst iconSizes = {\r\n\tdefault: 'lg',\r\n\tsmall: 'sm',\r\n\tmedium: '1x',\r\n};\r\n\r\nconst Button = (props) => {\r\n\tconst {\r\n\t\ttype,\r\n\t\tonClick,\r\n\t\tonMouseEnter,\r\n\t\tstyle,\r\n\t\tsize,\r\n\t\tclassName,\r\n\t\tid,\r\n\t\tloading,\r\n\t\tvalue,\r\n\t\tdisabled,\r\n\t\treact_ref,\r\n\t\thover_background,\r\n\t\tbeta\r\n\t} = props;\r\n\treturn (\r\n\t\t<StyledButton\r\n\t\t\tclassName={`${styles.button} ${styles['type-' + type]} ${styles['size-' + size]\r\n\t\t\t\t} ${className} focus:mu-outline-none focus:mu-shadow-ring`}\r\n\t\t\t{...{\r\n\t\t\t\tonClick,\r\n\t\t\t\tonMouseEnter,\r\n\t\t\t\tstyle,\r\n\t\t\t\tid,\r\n\t\t\t\tref: react_ref,\r\n\t\t\t\tvalue,\r\n\t\t\t\tdisabled: disabled || loading,\r\n\t\t\t\thover_background,\r\n\t\t\t}}\r\n\t\t>\r\n\t\t\t{beta && <div className={`${styles.badge} ${classNames('flex-center bg-orange-500 transform -translate-y-full')}`} style={{ top: 10, right: 5 }}>Beta</div>}\r\n\t\t\t{loading ? <ButtonLoading {...props} /> : <ButtonText {...props} />}\r\n\t\t</StyledButton>\r\n\t);\r\n};\r\n\r\nconst ButtonText = (props) => {\r\n\tconst { text, icon, size, iconFirst } = props;\r\n\treturn (\r\n\t\t<>\r\n\t\t\t{icon && iconFirst && <Icon className={text && 'mr-2'} icon={icon} size={iconSizes[size]} />}\r\n\t\t\t{text && <b>{text}</b>}\r\n\t\t\t{icon && !iconFirst && <Icon className={text && 'ml-2'} icon={icon} size={iconSizes[size]} />}\r\n\t\t</>\r\n\t);\r\n};\r\n\r\nconst ButtonLoading = (props) => {\r\n\tconst { text } = props;\r\n\treturn (\r\n\t\t<div className={styles.loadingContainer}>\r\n\t\t\t<b>{text}</b>\r\n\t\t\t<Icon icon=\"spinner-third\" className=\"absolute\" spin />\r\n\t\t</div>\r\n\t);\r\n};\r\n\r\nButton.propTypes = {\r\n\ttext: PropTypes.string.isRequired,\r\n\tsize: PropTypes.string.isRequired,\r\n\ticonFirst: PropTypes.bool.isRequired,\r\n\ttype: PropTypes.string.isRequired,\r\n\tstyle: PropTypes.object,\r\n\tclassName: PropTypes.string,\r\n\tloading: PropTypes.bool.isRequired,\r\n};\r\n\r\nButton.defaultProps = {\r\n\ttype: 'primary',\r\n\tstyle: {},\r\n\tsize: 'default',\r\n\tclassName: '',\r\n\tloading: false,\r\n\ttext: '',\r\n\tid: '',\r\n\ticonFirst: true,\r\n\tonClick: undefined,\r\n\tonMouseEnter: undefined,\r\n\tvalue: null,\r\n\tdisabled: false,\r\n\treact_ref: null,\r\n};\r\n\r\nexport default Button;\r\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"header\":\"dashboard_header__14yuA\",\"campaignsFilter\":\"dashboard_campaignsFilter__2h7z9\",\"states\":\"dashboard_states__1B9Au\",\"loading\":\"dashboard_loading__2vAf5\",\"flashStates\":\"dashboard_flashStates__3lVIY\",\"stateCard\":\"dashboard_stateCard__3T-mT\",\"chart\":\"dashboard_chart__UKsJP\",\"setup\":\"dashboard_setup__28PQV\",\"ChartMenu\":\"dashboard_ChartMenu__202y2\",\"ChartMenuItem\":\"dashboard_ChartMenuItem__3ilrU\",\"title\":\"dashboard_title__2i7dv\",\"value\":\"dashboard_value__M21cy\",\"step\":\"dashboard_step__3jaUr\",\"icon\":\"dashboard_icon__1J1Ij\",\"content\":\"dashboard_content__66QhG\",\"SetupAlert\":\"dashboard_SetupAlert__3dYsA\",\"progress\":\"dashboard_progress__1SQ3f\",\"pre\":\"dashboard_pre__cH_dR\",\"suf\":\"dashboard_suf__1liR0\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"dots\":\"image_picker_dots__1ZbAy\",\"dots-u8fzftmn\":\"image_picker_dots-u8fzftmn__2OkFO\",\"ImagePicker\":\"image_picker_ImagePicker__3C4AL\",\"label\":\"image_picker_label__2CcS5\",\"image\":\"image_picker_image__1Bbf0\",\"dots-u8fzftmd\":\"image_picker_dots-u8fzftmd__18yMz\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"trigger\":\"date_range_trigger__3XX7W\",\"leftIcon\":\"date_range_leftIcon__Zp3HF\",\"rightIcon\":\"date_range_rightIcon__1Abh6\",\"content\":\"date_range_content__3TOvS\",\"tag\":\"date_range_tag__6cBuf\",\"text\":\"date_range_text__WRmLX\",\"close\":\"date_range_close__17dCm\",\"DateRangePicker\":\"date_range_DateRangePicker__1kkkB\",\"menu\":\"date_range_menu__3SN3v\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"badge\":\"button_badge__LxuwU\",\"button\":\"button_button__1Tp7w\",\"loadingContainer\":\"button_loadingContainer__35W0p\",\"withTextRight\":\"button_withTextRight__34ghc\",\"withTextLeft\":\"button_withTextLeft__3eDna\",\"type-primary\":\"button_type-primary__e0GEw\",\"type-circle-icon__primary\":\"button_type-circle-icon__primary__4O12F\",\"type-circle-icon__default\":\"button_type-circle-icon__default__3qvka\",\"type-danger\":\"button_type-danger__2qiaJ\",\"type-danger2\":\"button_type-danger2__1AQrH\",\"type-warning\":\"button_type-warning__L17EG\",\"type-warning2\":\"button_type-warning2__2NAdU\",\"type-default\":\"button_type-default__1yYTs\",\"type-success\":\"button_type-success__c3zUS\",\"type-success-filled\":\"button_type-success-filled__1RlVN\",\"type-secondary\":\"button_type-secondary__3BhlA\",\"type-secondary2\":\"button_type-secondary2__2RpGt\",\"type-info\":\"button_type-info__3dgSy\",\"type-link\":\"button_type-link__1uiFH\",\"type-link-success\":\"button_type-link-success__2DdQx\",\"type-link-danger\":\"button_type-link-danger__2xKa3\",\"type-link-primary\":\"button_type-link-primary__2rOwo\",\"type-link-info\":\"button_type-link-info__2tTu4\",\"type-link-secondary\":\"button_type-link-secondary__1vmVN\",\"type-link-warning\":\"button_type-link-warning__3gAfm\",\"type-link-default\":\"button_type-link-default__2vtUP\",\"type-circle-primary\":\"button_type-circle-primary__43jux\",\"type-circle-secondary\":\"button_type-circle-secondary__1i58v\",\"type-circle-danger\":\"button_type-circle-danger__30NdJ\",\"type-circle-success\":\"button_type-circle-success__3oXH8\",\"type-circle-warning\":\"button_type-circle-warning__1JB5c\",\"size-default\":\"button_size-default__2X4Dr\",\"size-small\":\"button_size-small__2q0gD\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"carousel\":\"carousel_carousel__1kW5u\",\"content\":\"carousel_content__1risj\",\"control\":\"carousel_control__T8TqV\"};","import english from './translations/english';\r\nimport french from './translations/french';\r\nimport arabic from './translations/arabic';\r\nimport german from './translations/german';\r\n\r\nexport default { english, french, arabic, german };\r\n","export default {\r\n    rtl: false,\r\n    header: {\r\n        title: 'Your Cart'\r\n    },\r\n    empty_cart: '',\r\n    shipping_option: 'livraison standard',\r\n    product: {\r\n        sold_out: 'Sold Out'\r\n    },\r\n    product_details: {\r\n        atcButton: { text: 'Add To Cart' },\r\n        readMore: { text: 'Read More' }\r\n    },\r\n    modules: {\r\n        checkout_button: {\r\n            button_text: { text: 'Checkout / {{ subtotal }}' },\r\n            button_text_loading: { text: 'Generating Offer...' },\r\n            use_coupon_code: { text: 'Coupon code' },\r\n            enter_coupon_code: { text: 'Enter Coupon Code' },\r\n            apply_coupon_code: { text: 'Apply' },\r\n            edit_coupon_code: { text: 'Edit' },\r\n            close_coupon_code: { text: 'Close' },\r\n            subtotal: { text: 'Subtotal' },\r\n            savings: { text: 'Savings' },\r\n            coupon_alert_text: { text: 'Code overrides offers' }\r\n        },\r\n        random_text: {\r\n            text: '<p class=\"ql-align-center\">100% NO-RISK MONEY BACK GUARANTEE</p>'\r\n        },\r\n        order_note: {\r\n            text: '<p> <strong>Add a note to your order</strong></p>'\r\n        }\r\n    },\r\n    campaigns: {\r\n        bundles: {\r\n            text: 'Buy {{quantity}} save {{discount}}',\r\n            prefix: '{{individual_price}} each'\r\n        },\r\n        add_to_unlock: {\r\n            title: {\r\n                text: 'Frequently Bought Together'\r\n            },\r\n\r\n            show_product_details: {\r\n                text: 'Show Details'\r\n            },\r\n            upsell_add_button: {\r\n                text: 'Add To Cart'\r\n            },\r\n            upsell_confirm_button: {\r\n                text: 'Confirm'\r\n            },\r\n            discount: {\r\n                before:\r\n                    \"<p class='ql-align-center'><img src='https://monster-upsells-images-prod.s3.us-east-2.amazonaws.com/wp4cb45f10.gif'> Add <b>{{amount_left}}</b> to unlock <b>{{reward}}</b> off<p>\",\r\n                after:\r\n                    \"<p class='ql-align-center'><img src='https://media.giphy.com/media/1wX5TJZPqVw3HhyDYn/giphy.gif'> You've unlocked <b>{{reward}}</b> off<p>\"\r\n            },\r\n            free_shipping: {\r\n                before:\r\n                    \"<p class='ql-align-center'><img src='https://monster-upsells-images-prod.s3.us-east-2.amazonaws.com/wp4cb45f10.gif'>  Add <b>{{amount_left}}</b> to get <b>free shipping</b><p>\",\r\n                after:\r\n                    \"<p class='ql-align-center'><img src='https://media.giphy.com/media/1wX5TJZPqVw3HhyDYn/giphy.gif'> You've unlocked <b>Free shipping!</b><p>\"\r\n            },\r\n            separator: {\r\n                text: 'OR'\r\n            },\r\n            gift: {\r\n                before:\r\n                    \"<p class='ql-align-center'><img src='https://monster-upsells-images-prod.s3.us-east-2.amazonaws.com/wp4cb45f10.gif'> Add <b>{{amount_left}}</b> to get a <b>Free Gift</b><p>\",\r\n                after:\r\n                    \"<p class='ql-align-center'><img src='https://media.giphy.com/media/1wX5TJZPqVw3HhyDYn/giphy.gif'> You've unlocked a <b>Free Gift</b><p>\",\r\n                compare_at_price: {\r\n                    text: '{{compare_at_price}}'\r\n                },\r\n                widget: {\r\n                    before: {\r\n                        header: '<b>Add {{amount_left}} to unlock Free Gift 🎁</b>',\r\n                        product_name: 'Today only offer',\r\n                        offer_highlight: {\r\n                            text: 'Free'\r\n                        }\r\n                        // variant_selector_text: {\r\n                        // \ttext: \"Add Gift\"\r\n                        // },\r\n                    },\r\n                    selecting: {\r\n                        header: '<b>Select 1 Free Gift</b>',\r\n                        product_name: '{{product_name}}',\r\n                        offer_highlight: {\r\n                            text: 'Free'\r\n                        },\r\n                        variant_selector_text: {\r\n                            text: 'Add Gift'\r\n                        }\r\n                    },\r\n                    after: {\r\n                        header: '<b>You unlocked a Free Gift! 🎉</b>',\r\n                        product_name: '<p>Only valid today! ⏰</p><p>{{product_name}}</p>',\r\n                        offer_highlight: {\r\n                            text: 'Free'\r\n                        },\r\n                        variant_change_text: {\r\n                            text: 'Change gift'\r\n                        }\r\n                    }\r\n                },\r\n                inventory_quantity: {\r\n                    text: 'Only {{inventory_quantity}} left'\r\n                }\r\n            }\r\n        },\r\n        one_check_up_sell: {\r\n            text: '<p>🔥 Add {{title}} For {{price}}</p>'\r\n        }\r\n    }\r\n};\r\n","export default {\r\n    rtl: false,\r\n    header: {\r\n        title: 'votre panier'\r\n    },\r\n    empty_cart: '',\r\n    shipping_option: 'livraison standard',\r\n    product: {\r\n        sold_out: 'épuisé'\r\n    },\r\n    product_details: {\r\n        atcButton: { text: 'ajouter au panier' },\r\n        readMore: { text: 'voir plus' }\r\n    },\r\n    modules: {\r\n        checkout_button: {\r\n            button_text: { text: 'check-out  / {{ subtotal }}' },\r\n            button_text_loading: { text: 'générer une offre...' },\r\n            use_coupon_code: { text: 'code de coupon' },\r\n            enter_coupon_code: { text: 'entrez le coupon' },\r\n            apply_coupon_code: { text: 'appliquer' },\r\n            edit_coupon_code: { text: 'modifier' },\r\n            close_coupon_code: { text: 'fermer' },\r\n            subtotal: { text: 'total' },\r\n            savings: { text: 'remise' },\r\n            coupon_alert_text: { text: 'Le code remplace les autres offres' }\r\n        },\r\n        random_text: {\r\n            text: '<p class=\"ql-align-center\">100% NO-RISK MONEY BACK GUARANTEE</p>'\r\n        },\r\n        order_note: {\r\n            text: '<p> <strong>Ajoutez une note</strong></p>'\r\n        }\r\n    },\r\n    campaigns: {\r\n        bundles: {\r\n            text: 'Achetez {{quantity}} économisez {{discount}}',\r\n            prefix: '{{individual_price}} chacun'\r\n        },\r\n        add_to_unlock: {\r\n            title: {\r\n                text: 'fréquemment achetés ensemble'\r\n            },\r\n\r\n            show_product_details: {\r\n                text: 'afficher les détails'\r\n            },\r\n            upsell_add_button: {\r\n                text: 'ajouter au panier'\r\n            },\r\n            upsell_confirm_button: {\r\n                text: 'confirmer'\r\n            },\r\n            discount: {\r\n                before:\r\n                    \"<p class='ql-align-center'><img src='https://monster-upsells-images-prod.s3.us-east-2.amazonaws.com/wp4cb45f10.gif'> ajoutez <b>{{amount_left}}</b> pour débloquer <b>{{award}}</b> de réduction<p>\",\r\n                after:\r\n                    \"<p class='ql-align-center'><img src='https://media.giphy.com/media/1wX5TJZPqVw3HhyDYn/giphy.gif'> vous avez débloqué <b>{{reward}}</b><p>\"\r\n            },\r\n            free_shipping: {\r\n                before:\r\n                    \"<p class='ql-align-center'><img src='https://monster-upsells-images-prod.s3.us-east-2.amazonaws.com/wp4cb45f10.gif'>  ajoutez <b>{{amount_left}}</b> pour bénéficier de <b>la livraison gratuite</b><p>\",\r\n                after:\r\n                    \"<p class='ql-align-center'><img src='https://media.giphy.com/media/1wX5TJZPqVw3HhyDYn/giphy.gif'> La livraison est <b>GRATUITE</b><p>\"\r\n            },\r\n            separator: {\r\n                text: 'OU'\r\n            },\r\n            gift: {\r\n                before:\r\n                    \"<p class='ql-align-center'><img src='https://monster-upsells-images-prod.s3.us-east-2.amazonaws.com/wp4cb45f10.gif'> Add <b>{{amount_left}}</b> to get a <b>Free Gift</b><p>\",\r\n                after:\r\n                    \"<p class='ql-align-center'><img src='https://media.giphy.com/media/1wX5TJZPqVw3HhyDYn/giphy.gif'> You've unlocked a <b>Free Gift</b><p>\",\r\n                compare_at_price: {\r\n                    text: '{{compare_at_price}}'\r\n                },\r\n                widget: {\r\n                    before: {\r\n                        header: 'Spend {{goal}} Get A Free Gift 🎁',\r\n                        product_name: 'Free gift: {{product_name}}',\r\n                        offer_highlight: {\r\n                            text: 'Free'\r\n                        }\r\n                    },\r\n                    after: {\r\n                        header: 'Hurry! This offer is only valid today! ⏰',\r\n                        product_name:\r\n                            '<p><b>You unlocked this! 🎉</b></p><p>Free gift: {{product_name}}</p>',\r\n                        offer_highlight: {\r\n                            text: 'Free'\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        },\r\n        one_check_up_sell: {\r\n            text: '<p>🔥 ajouter {{title}} pour {{price}}</p>'\r\n        }\r\n    }\r\n};\r\n","export default {\r\n    rtl: true,\r\n    header: {\r\n        title: 'حقيبة التسوق'\r\n    },\r\n    empty_cart: '',\r\n    shipping_option: 'شحن عادي',\r\n    product: {\r\n        sold_out: 'غير متوفر'\r\n    },\r\n    product_details: {\r\n        atcButton: { text: 'اضف الى حقيبة التسوق' },\r\n        readMore: { text: 'اظهر المزيد' }\r\n    },\r\n    modules: {\r\n        checkout_button: {\r\n            button_text: { text: 'اتمام عملية الشراء  / {{ subtotal }}' },\r\n            button_text_loading: { text: 'اتمام عملية الشراء' },\r\n            use_coupon_code: { text: 'كوبون خصم' },\r\n            enter_coupon_code: { text: 'ادخل الكود ان كان لديك كوبون خصم' },\r\n            apply_coupon_code: { text: 'استخدام' },\r\n            edit_coupon_code: { text: 'تعديل' },\r\n            close_coupon_code: { text: 'اغلاق' },\r\n            subtotal: { text: 'المجموع' },\r\n            savings: { text: 'التوفير' },\r\n            coupon_alert_text: { text: 'كود الخصم يلغي بقية العروض' }\r\n        },\r\n        random_text: {\r\n            text: '<p class=\"ql-align-center\">100% NO-RISK MONEY BACK GUARANTEE</p>'\r\n        },\r\n        order_note: {\r\n            text: '<p> <strong>Add a note to your order</strong></p>'\r\n        }\r\n    },\r\n    campaigns: {\r\n        bundles: {\r\n            text: 'إشتري {{quantity}} و وفر {{discount}}',\r\n            prefix: '{{individual_price}} للوحدة'\r\n        },\r\n        add_to_unlock: {\r\n            title: {\r\n                text: 'منتجات ممكن أن تعجبك'\r\n            },\r\n\r\n            show_product_details: {\r\n                text: 'أظهر المزيد'\r\n            },\r\n            upsell_add_button: {\r\n                text: 'أضف إلى حقيبة التسوق'\r\n            },\r\n            upsell_confirm_button: {\r\n                text: 'تأكيد'\r\n            },\r\n            discount: {\r\n                before:\r\n                    \"<p class='ql-align-center'><img src='https://monster-upsells-images-prod.s3.us-east-2.amazonaws.com/wp4cb45f10.gif'> أظف <b>{{amount_left}}</b> للحصول على تخفيض <b>{{award}}</b><p>\",\r\n                after:\r\n                    \"<p class='ql-align-center'><img src='https://media.giphy.com/media/1wX5TJZPqVw3HhyDYn/giphy.gif'> لقد حصلت على تخفيض <b>{{reward}}</b><p>\"\r\n            },\r\n            free_shipping: {\r\n                before:\r\n                    \"<p class='ql-align-center'><img src='https://monster-upsells-images-prod.s3.us-east-2.amazonaws.com/wp4cb45f10.gif'>  أظف <b>{{amount_left}}</b> للحصول على <b>شحن مجاني</b><p>\",\r\n                after:\r\n                    \"<p class='ql-align-center'><img src='https://media.giphy.com/media/1wX5TJZPqVw3HhyDYn/giphy.gif'> لقد حصلت على <b>شحن مجاني</b><p>\"\r\n            },\r\n            separator: {\r\n                text: 'أو'\r\n            },\r\n            gift: {\r\n                before:\r\n                    \"<p class='ql-align-center'><img src='https://monster-upsells-images-prod.s3.us-east-2.amazonaws.com/wp4cb45f10.gif'> Add <b>{{amount_left}}</b> to get a <b>Free Gift</b><p>\",\r\n                after:\r\n                    \"<p class='ql-align-center'><img src='https://media.giphy.com/media/1wX5TJZPqVw3HhyDYn/giphy.gif'> You've unlocked a <b>Free Gift</b><p>\",\r\n                compare_at_price: {\r\n                    text: '{{compare_at_price}}'\r\n                },\r\n                widget: {\r\n                    before: {\r\n                        header: 'Spend {{goal}} Get A Free Gift 🎁',\r\n                        product_name: 'Free gift: {{product_name}}',\r\n                        offer_highlight: {\r\n                            text: 'Free'\r\n                        }\r\n                    },\r\n                    after: {\r\n                        header: 'Hurry! This offer is only valid today! ⏰',\r\n                        product_name:\r\n                            '<p><b>You unlocked this! 🎉</b></p><p>Free gift: {{product_name}}</p>',\r\n                        offer_highlight: {\r\n                            text: 'Free'\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        },\r\n        one_check_up_sell: {\r\n            text: '<p>🔥 أظف {{title}} مقابل {{price}}</p>'\r\n        }\r\n    }\r\n};\r\n","export default {\r\n    rtl: true,\r\n    header: {\r\n        title: 'Dein Warenkorb'\r\n    },\r\n    empty_cart: '',\r\n    shipping_option: 'Kostenloser Versand',\r\n    product: {\r\n        sold_out: 'Ausverkauft'\r\n    },\r\n    product_details: {\r\n        atcButton: { text: 'In den Warenkorb' },\r\n        readMore: { text: 'Mehr lesen' }\r\n    },\r\n    modules: {\r\n        checkout_button: {\r\n            button_text: { text: 'Zur Kasse  / {{ subtotal }}' },\r\n            button_text_loading: { text: 'Neu generieren' },\r\n            use_coupon_code: { text: 'Rabattcode' },\r\n            enter_coupon_code: { text: 'Rabattcode eingeben' },\r\n            apply_coupon_code: { text: 'Anwenden' },\r\n            edit_coupon_code: { text: 'Ändern' },\r\n            close_coupon_code: { text: 'Schließen' },\r\n            subtotal: { text: 'Zwischensumme' },\r\n            savings: { text: 'Du sparst' },\r\n            coupon_alert_text: { text: 'Rabattcode nicht anwendbar' }\r\n        },\r\n        random_text: {\r\n            text: '<p class=\"ql-align-center\">100% NO-RISK MONEY BACK GUARANTEE</p>'\r\n        },\r\n        order_note: {\r\n            text: '<p> <strong>Add a note to your order</strong></p>'\r\n        }\r\n    },\r\n    campaigns: {\r\n        bundles: {\r\n            text: 'Kaufe {{quantity}} Artikel,spare {{discount}}',\r\n            prefix: '{{individual_price}} pro Set'\r\n        },\r\n        add_to_unlock: {\r\n            title: {\r\n                text: 'Wird oft zusammen gekauft'\r\n            },\r\n\r\n            show_product_details: {\r\n                text: 'Zur Produktseite'\r\n            },\r\n            upsell_add_button: {\r\n                text: 'Hinzufügen'\r\n            },\r\n            upsell_confirm_button: {\r\n                text: 'Bestätigen'\r\n            },\r\n            discount: {\r\n                before:\r\n                    '<p class=\"ql-align-center\">Füge Produkte im Wert von <strong>{{amount_left}}</strong> hinzu, um zusätzlich <strong>{{reward}}</strong> zu sparen</p>',\r\n                after:\r\n                    '<p class=\"ql-align-center\">Du sparst zusätzlich <strong>{{reward}}</strong> auf deine Bestellung</p>'\r\n            },\r\n            free_shipping: {\r\n                before:\r\n                    \"<p class='ql-align-center'><img src='https://monster-upsells-images-prod.s3.us-east-2.amazonaws.com/wp4cb45f10.gif'> Bitte Fügen Sie <b>{{amount_left}}</b> hinzu, um <b>kostenlosen Versand</b> zu erhalten<p>\",\r\n                after:\r\n                    \"<p class='ql-align-center'><img src='https://media.giphy.com/media/1wX5TJZPqVw3HhyDYn/giphy.gif'> Sie haben den <b>Kostenlosen Versand</b> freigeschaltet <p>\"\r\n            },\r\n            separator: {\r\n                text: 'Wie wäre es mit'\r\n            },\r\n            gift: {\r\n                before:\r\n                    \"<p class='ql-align-center'><img src='https://monster-upsells-images-prod.s3.us-east-2.amazonaws.com/wp4cb45f10.gif'> Add <b>{{amount_left}}</b> to get a <b>Free Gift</b><p>\",\r\n                after:\r\n                    \"<p class='ql-align-center'><img src='https://media.giphy.com/media/1wX5TJZPqVw3HhyDYn/giphy.gif'> You've unlocked a <b>Free Gift</b><p>\",\r\n                compare_at_price: {\r\n                    text: '{{compare_at_price}}'\r\n                },\r\n                widget: {\r\n                    before: {\r\n                        header: 'Spend {{goal}} Get A Free Gift 🎁',\r\n                        product_name: 'Free gift: {{product_name}}',\r\n                        offer_highlight: {\r\n                            text: 'Free'\r\n                        }\r\n                    },\r\n                    after: {\r\n                        header: 'Hurry! This offer is only valid today! ⏰',\r\n                        product_name:\r\n                            '<p><b>You unlocked this! 🎉</b></p><p>Free gift: {{product_name}}</p>',\r\n                        offer_highlight: {\r\n                            text: 'Free'\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        },\r\n        one_check_up_sell: {\r\n            text: '<p>🔥 Add {{title}} For {{price}}</p>'\r\n        }\r\n    }\r\n};\r\n\r\n// 6f74adbe-fd22-4934-b17b-39020f42349f\r\n","import uuid from \"uuid/v1\";\r\nimport PriorityProcessingImage from \"./PriorityProcessings.base6\";\r\nimport Languages from \"./translations\";\r\nimport { getIn } from \"immutable\";\r\n// import compareVersions from 'compare-versions';\r\n\r\nexport const BREAK_POINTS = {\r\n  kill_draft: (shopContext) => {\r\n    return shopContext.state.settings.multiCurrencyMode;\r\n    // const installedAt = new Date(shopContext.state.installedAt).getTime();\r\n    // const breakPoint = new Date('Sun Apr 18 2021 15:00:00 GMT+0100').getTime();\r\n    // return installedAt > breakPoint;\r\n  },\r\n};\r\n\r\nexport const CAMPAIGN_TARGETS = [\r\n  {\r\n    value: \"all_products\",\r\n    label: \"All Products\",\r\n    disabled: ({ state }, shopContext) => {\r\n      return BREAK_POINTS[\"kill_draft\"](shopContext)\r\n        ? state.settings.type === \"bundles\"\r\n        : false;\r\n    },\r\n  },\r\n  { value: \"specific_products\", label: \"Specific Products\" },\r\n  { value: \"specific_collections\", label: \"Specific Collections\" },\r\n];\r\nexport const ADD_TO_UNLOCK_FREE_SHIPPING_HANDLER = [\r\n  {\r\n    value: false,\r\n    label: \"MonsterUpsells\",\r\n    info: \"Shopify will inject a unique Free Shipping coupon code at checkout\",\r\n  },\r\n  {\r\n    value: true,\r\n    label: \"Shopify Admin\",\r\n    info: \"You need to setup Free Shipping threshold in Shopify Admin\",\r\n    link: {\r\n      href: \"https://help.shopify.com/en/manual/shipping/setting-up-and-managing-your-shipping/setting-up-shipping-rates?fbclid=IwAR3OtBxohPJS0X1kzl1sOLfIqyCHkJkiLGiJPwmeAlkK3MAfZN6VdtmQw2s#create-free-shipping-rates\",\r\n      text: \"Learn More\",\r\n    },\r\n  },\r\n];\r\nexport const CAMPAIGN_TYPES = {\r\n  bundles: \"buy more save more\",\r\n  add_to_unlock: \"Add to unlock + Frequently bought Together\",\r\n  one_check_up_sell: \"one tick upsell\",\r\n};\r\n\r\nexport const ONE_CHECK_UP_SELL_PRODUCT_TYPE_OPTIONS = [\r\n  { value: \"hidden\", label: \"Virtual Product\" },\r\n  { value: \"existing\", label: \"Existing Product\" },\r\n];\r\n\r\nexport const GOOGLE_FONTS = [\r\n  { value: \"Raleway\", label: \"Raleway\" },\r\n  { value: \"Dosis\", label: \"Dosis\" },\r\n];\r\n\r\nexport const RESOURCE_PICKER_DEFAULT_REDUCERS = {\r\n  Product: ({ id, title, variants, images, handle }) => ({\r\n    id,\r\n    title,\r\n    handle,\r\n    image: images.length ? images[0].originalSrc : null,\r\n    price: variants[0].price,\r\n  }),\r\n  Collection: ({ id, title, image, handle }) => ({\r\n    id,\r\n    title,\r\n    handle,\r\n    image: image && image.originalSrc ? image.originalSrc : null,\r\n  }),\r\n};\r\n\r\nexport const ADD_TO_UNLOCK_PRODUCTS_PICKER_REDUCER = ({\r\n  id,\r\n  title,\r\n  variants,\r\n  options,\r\n  images,\r\n  handle,\r\n}) => ({\r\n  id,\r\n  title,\r\n  handle,\r\n  image: images.length ? images[0].originalSrc : null,\r\n  variants: variants.map(ADD_TO_UNLOCK_PRODUCTS_VARIANTS_MAP),\r\n  options,\r\n});\r\n\r\nexport const ONE_CHECK_UP_SELL_PRODUCT_REDUCER = ({\r\n  id,\r\n  title,\r\n  variants,\r\n  options,\r\n  images,\r\n  image,\r\n  handle,\r\n  body_html,\r\n}) => ({\r\n  id: id.toString(),\r\n  title: title.toString(),\r\n  handle,\r\n  image: image\r\n    ? image.originalSrc\r\n    : images.length\r\n    ? images[0].src || images[0].originalSrc\r\n    : \"\",\r\n  variant_id: variants[0].id.toString(),\r\n  options,\r\n  variants: variants.map(ADD_TO_UNLOCK_PRODUCTS_VARIANTS_MAP),\r\n});\r\n\r\nexport const GIFT_WITH_PURCHASE_PRODUCT_REDUCER = (product) => {\r\n  const { id, title, variants, options, images, image, handle, body_html } =\r\n    product;\r\n  const variant = variants[0];\r\n  if (!variant) throw new Error(\"variant not found\");\r\n  const price = Number(variant.price) * 100;\r\n  const compareAtPrice = variant.compareAtPrice\r\n    ? Number(variant.compareAtPrice) * 100\r\n    : price;\r\n  const productImage = image\r\n    ? image.originalSrc\r\n    : images.length\r\n    ? images[0].src || images[0].originalSrc\r\n    : \"\";\r\n  return {\r\n    id: id.toString(),\r\n    title: title.toString(),\r\n    handle,\r\n    image: image\r\n      ? image.originalSrc\r\n      : images.length\r\n      ? images[0].src || images[0].originalSrc\r\n      : \"\",\r\n    variant_id: variants[0].id.toString(),\r\n    variants: variants.map(ADD_TO_UNLOCK_PRODUCTS_VARIANTS_MAP),\r\n    options,\r\n    variant_price: compareAtPrice,\r\n  };\r\n};\r\n\r\nconst ADD_TO_UNLOCK_PRODUCTS_VARIANTS_MAP = ({\r\n  id,\r\n  title,\r\n  price,\r\n  image,\r\n  productImage = null,\r\n  compareAtPrice,\r\n}) => ({\r\n  id: id.toString(),\r\n  title,\r\n  price,\r\n  compare_at_price: compareAtPrice ? Number(compareAtPrice) * 100 : undefined,\r\n  image: image ? image.originalSrc : productImage,\r\n});\r\n\r\nexport const DISCOUNT_TYPES = (currency = \"$ \") => [\r\n  { label: \"% \", value: \"percentage\" },\r\n  { label: `${currency} `, value: \"fixed_amount\" },\r\n];\r\n\r\nexport const GET_GOAL_TYPES = (currency = \"$ \") => {\r\n  return [\r\n    { label: \"% \", value: \"relative\" },\r\n    { label: `${currency} `, value: \"fixed\" },\r\n  ];\r\n};\r\n\r\nexport const ADD_TO_UNLOCK_REWARD_OPTIONS = (goals, index) => {\r\n  const otherGoals = goals\r\n    .filter((_, i) => i !== index)\r\n    .map(({ reward_type }) => reward_type);\r\n  return [\r\n    {\r\n      value: \"discount\",\r\n      label: \"Discount\",\r\n      info: \"Unlock discounts that will be auto aded to the checkout using discount codes\",\r\n    },\r\n    {\r\n      value: \"free_shipping\",\r\n      label: \"Free Shipping\",\r\n      info: \"You need to setup free shipping options in Shopify Admin\",\r\n      disabled: otherGoals.includes(\"free_shipping\"),\r\n    },\r\n    {\r\n      value: \"gift\",\r\n      label: \"Free Gift\",\r\n      info: \"Select a product as a free gift when cart goals are met\",\r\n      disabled: !goals[index].gift,\r\n      // beta: true\r\n    },\r\n    {\r\n      value: \"manual\",\r\n      label: \"Manual / Store Credit (CashBack)\",\r\n      infoHtml: true,\r\n      info: \"Create a goal that you will reward yourself.<br/><b>Example:</b> Free products, Gift wrapping, Free express shipping\",\r\n    },\r\n  ];\r\n};\r\n\r\nexport const CART_SLIDER_SETTINGS = {\r\n  dots: false,\r\n  arrows: false,\r\n  speed: 500,\r\n  slidesToShow: 1,\r\n  slidesToScroll: 1,\r\n  adaptiveHeight: false,\r\n  draggable: false,\r\n  infinite: false,\r\n  easing: \"easeOut\",\r\n};\r\n\r\nconst default_background = { r: 255, g: 255, b: 255, a: 1 };\r\nconst default_primary = { a: 1, b: 248, g: 117, r: 90 };\r\nconst default_secondary = { a: 1, b: 255, g: 222, r: 215 };\r\nconst default_font_color = { r: 22, g: 37, b: 67, a: 1 };\r\nconst default_danger = { r: 239, g: 68, b: 68, a: 1 };\r\n\r\nexport const NEW_CAMPAIGN_INITIAL_STATE = (\r\n  {\r\n    checkout_button = {\r\n      background: default_primary,\r\n      hoverBackground: default_secondary,\r\n    },\r\n    primary = default_primary,\r\n    secondary = default_secondary,\r\n    font_color = default_font_color,\r\n    background = default_background,\r\n    danger = default_danger,\r\n    type = \"\",\r\n    multiCurrencyMode,\r\n  } = {},\r\n  language,\r\n  currency\r\n) => {\r\n  language = Object.keys(Languages).includes(language) ? language : \"english\";\r\n  const __ = translate(language);\r\n  return {\r\n    name: \"\",\r\n    settings: {\r\n      type,\r\n      applied_discount_title: \"Special Discount\",\r\n      bundles: {\r\n        text: __(\"campaigns.bundles.text\"),\r\n        prefix: __(\"campaigns.bundles.prefix\"),\r\n        font_size: 0.8,\r\n        background: secondary,\r\n        color: font_color,\r\n        activeBackground: primary,\r\n        activeColor: background,\r\n        list: [\r\n          { id: uuid(), type: \"percentage\", quantity: 2, reward: 10 },\r\n          { id: uuid(), type: \"percentage\", quantity: 3, reward: 15 },\r\n        ],\r\n        style: \"vertical\",\r\n        labelColor: primary,\r\n        badge: {\r\n          text: { a: 1, r: 0, g: 45, b: 255 },\r\n          background: { a: 1, r: 240, g: 242, b: 255 },\r\n          border: { a: 1, r: 161, g: 178, b: 255 },\r\n        },\r\n        variantsPicker: {\r\n          active: true,\r\n          label: \"Select product #{{number}}\",\r\n          confirm: \"Confirm\",\r\n          textColor: default_font_color,\r\n          dropdownTextColor: default_font_color,\r\n          dropdownBackground: secondary,\r\n          confirmTextColor: background,\r\n          confirmBackground: primary,\r\n        },\r\n      },\r\n      add_to_unlock: {\r\n        isActive: true,\r\n        show_all_locked_goals: false,\r\n        title: {\r\n          text: __(\"campaigns.add_to_unlock.title.text\"),\r\n          font_size: 1,\r\n          color: font_color,\r\n        },\r\n        background: secondary,\r\n        borderColor: secondary,\r\n        show_product_details: {\r\n          text: __(\"campaigns.add_to_unlock.show_product_details.text\"),\r\n          font_size: 0.7,\r\n          color: primary,\r\n        },\r\n        product_title: {\r\n          text: \"{{product_title}}\",\r\n          font_size: 1,\r\n          color: font_color,\r\n        },\r\n        product_price: {\r\n          text: \"{{original_price}}{{product_price}}\",\r\n          font_size: 0.9,\r\n          color: font_color,\r\n        },\r\n        upsell_add_button: {\r\n          text: __(\"campaigns.add_to_unlock.upsell_add_button.text\"),\r\n          color: primary,\r\n          font_size: 0.8,\r\n        },\r\n        upsell_confirm_button: {\r\n          text: __(\"campaigns.add_to_unlock.upsell_confirm_button.text\"),\r\n          font_size: 0.8,\r\n        },\r\n        show_suggestions: true,\r\n        recommendation_type: \"shopify_recommendation\",\r\n        products_length: 2,\r\n        exclude_tags: [],\r\n        products: [],\r\n        separator: {\r\n          active: false,\r\n          text: __(\"campaigns.add_to_unlock.separator.text\"),\r\n        },\r\n        multi_goal_type: \"amount\",\r\n        show_badges: false,\r\n        goals: [\r\n          {\r\n            badge: {\r\n              show_text: true,\r\n              text: { text: \"{{goal}}\", font_size: 1, color: default_primary },\r\n              type: 2,\r\n              image: null,\r\n            },\r\n            specific_goals: [{ currency, goal: 40, main: true }],\r\n            reward_type: \"free_shipping\",\r\n            goal_type: \"fixed\",\r\n            goal_text: {\r\n              text: \"Free Shipping\",\r\n              font_size: 0.7,\r\n              color: { r: 44, g: 50, b: 59, a: 1 },\r\n            },\r\n            show_goal_text: false,\r\n            confetti: false,\r\n            confetti_length: 400,\r\n            discount: {\r\n              type: \"percentage\",\r\n              before: __(\"campaigns.add_to_unlock.discount.before\"),\r\n              after: __(\"campaigns.add_to_unlock.discount.after\"),\r\n              reward: 10,\r\n            },\r\n            free_shipping: {\r\n              before: __(\"campaigns.add_to_unlock.free_shipping.before\"),\r\n              after: __(\"campaigns.add_to_unlock.free_shipping.after\"),\r\n              manual: true,\r\n            },\r\n            manual: {\r\n              before: __(\"campaigns.add_to_unlock.free_shipping.before\"),\r\n              after: __(\"campaigns.add_to_unlock.free_shipping.after\"),\r\n            },\r\n            gift: {\r\n              before: __(\"campaigns.add_to_unlock.gift.before\"),\r\n              after: __(\"campaigns.add_to_unlock.gift.after\"),\r\n              products: [],\r\n              previous_gift: \"keep\",\r\n              multi_gift_select: \"select\",\r\n              widget: {\r\n                active: true,\r\n                compare_at_price_active: true,\r\n                compare_at_price: {\r\n                  color: { r: 141, g: 141, b: 141, a: 1 },\r\n                  font_size: 1,\r\n                  text: __(\r\n                    \"campaigns.add_to_unlock.gift.compare_at_price.text\"\r\n                  ),\r\n                },\r\n                before: {\r\n                  header: __(\r\n                    \"campaigns.add_to_unlock.gift.widget.before.header\"\r\n                  ),\r\n                  product_name: __(\r\n                    \"campaigns.add_to_unlock.gift.widget.before.product_name\"\r\n                  ),\r\n                  offer_highlight: {\r\n                    color: { r: 95, g: 95, b: 95, a: 1 },\r\n                    font_size: 1.2,\r\n                    text: __(\r\n                      \"campaigns.add_to_unlock.gift.widget.before.offer_highlight.text\"\r\n                    ),\r\n                  }, //   color: background, // goal: 40, // or custom_recommendation shopify_recommendation //  quantity // product: {}, // free_shipping,discount, manual, gift // variant_selector_text: {\r\n                  //   font_size: 1,\r\n                  //   text: __(\"campaigns.add_to_unlock.gift.widget.before.variant_selector_text.text\")\r\n                  // },\r\n                  background: { r: 242, g: 245, b: 255, a: 1 },\r\n                  outline: { r: 196, g: 196, b: 196, a: 1 },\r\n                  multi_gift_image:\r\n                    \"https://d1s1zm0vzu692k.cloudfront.net/static/images/default_gifts.png\",\r\n                },\r\n                selecting: {\r\n                  header: __(\r\n                    \"campaigns.add_to_unlock.gift.widget.selecting.header\"\r\n                  ),\r\n                  product_name: __(\r\n                    \"campaigns.add_to_unlock.gift.widget.selecting.product_name\"\r\n                  ),\r\n                  offer_highlight: {\r\n                    color: { r: 95, g: 95, b: 95, a: 1 },\r\n                    font_size: 1.2,\r\n                    text: __(\r\n                      \"campaigns.add_to_unlock.gift.widget.selecting.offer_highlight.text\"\r\n                    ),\r\n                  },\r\n                  variant_selector_text: {\r\n                    color: background,\r\n                    font_size: 1,\r\n                    text: __(\r\n                      \"campaigns.add_to_unlock.gift.widget.selecting.variant_selector_text.text\"\r\n                    ),\r\n                  },\r\n                  background: { r: 242, g: 245, b: 255, a: 1 },\r\n                  outline: { r: 196, g: 196, b: 196, a: 1 },\r\n                  variant_button_background: primary,\r\n                },\r\n                after: {\r\n                  header: __(\r\n                    \"campaigns.add_to_unlock.gift.widget.after.header\"\r\n                  ),\r\n                  product_name: __(\r\n                    \"campaigns.add_to_unlock.gift.widget.after.product_name\"\r\n                  ),\r\n                  offer_highlight: {\r\n                    color: { r: 79, g: 181, b: 110, a: 1 },\r\n                    font_size: 1.2,\r\n                    text: __(\r\n                      \"campaigns.add_to_unlock.gift.widget.after.offer_highlight.text\"\r\n                    ),\r\n                  },\r\n                  background: { r: 248, g: 251, b: 246, a: 1 },\r\n                  outline: { r: 203, g: 235, b: 206, a: 1 },\r\n                  variant_change_text: {\r\n                    color: { r: 134, g: 134, b: 134, a: 1 },\r\n                    font_size: 1,\r\n                    text: __(\r\n                      \"campaigns.add_to_unlock.gift.widget.after.variant_change_text.text\"\r\n                    ),\r\n                  },\r\n                },\r\n              },\r\n            },\r\n          },\r\n        ],\r\n        separator: {\r\n          active: false,\r\n          text: __(\"campaigns.add_to_unlock.separator.text\"),\r\n        },\r\n        progress_primary: primary,\r\n        progress_secondary: secondary,\r\n        progress_complete: { a: 1, r: 87, g: 239, b: 197 },\r\n        progress_background: { a: 1, r: 255, g: 255, b: 255 },\r\n        product_details: {\r\n          atcButton: {\r\n            color: { a: 1, b: 255, g: 255, r: 255 },\r\n            font_size: 1,\r\n            text: __(\"product_details.atcButton.text\"),\r\n          },\r\n          atcButton_background: { a: 1, b: 248, g: 117, r: 90 },\r\n          atcButton_hoverBackground: { a: 1, b: 206, g: 206, r: 206 },\r\n          external: false,\r\n          readMore: {\r\n            color: { a: 1, b: 248, g: 117, r: 90 },\r\n            font_size: 1,\r\n            text: __(\"product_details.readMore.text\"),\r\n          },\r\n          truncate: true,\r\n          truncate_length: 200,\r\n        },\r\n        fbt_below: true,\r\n        fbt_position: \"above_checkout\",\r\n      }, // inventory_quantity: { // variant_button_background: primary, // one_check_up_sell: default_one_check_upsell(language),\r\n      //   active: true,\r\n      //   text: __(\"campaigns.add_to_unlock.gift.inventory_quantity.text\")\r\n      // }\r\n      multi_one_check_upsell: {\r\n        variant: \"square\",\r\n        align: \"natural\",\r\n        border: false,\r\n        border_color: { r: 226, g: 232, b: 240, a: 1 },\r\n        switch_on: primary,\r\n        switch_off: secondary,\r\n        highlight: primary,\r\n        products: [default_one_check_upsell(language)],\r\n      },\r\n      modules: {\r\n        order: [\"checkout_button\", \"random_text\", \"order_note\"],\r\n        random_text: { text: __(\"modules.random_text.text\"), active: false },\r\n        order_note: { text: __(\"modules.order_note.text\"), active: false },\r\n        checkout_button: {\r\n          checkout_as_link: false,\r\n          show_subtotal: true,\r\n          fix_checkout_container: true,\r\n          active_continue_shopping_button: false,\r\n          active_continue_shopping_underlined: true,\r\n          continue_shopping_button: {\r\n            text: \"Continue shopping\",\r\n            font_size: 1,\r\n            color: primary,\r\n          },\r\n          button_text: {\r\n            text: __(\"modules.checkout_button.button_text.text\"),\r\n            font_size: 1.3,\r\n            color: background,\r\n          },\r\n          button_text_loading: {\r\n            text: __(\"modules.checkout_button.button_text_loading.text\"),\r\n            color: background,\r\n          },\r\n          background: checkout_button.background,\r\n          hoverBackground: checkout_button.hoverBackground,\r\n          coupon: {\r\n            background: checkout_button.background,\r\n            hoverBackground: checkout_button.hoverBackground,\r\n            active_background: checkout_button.background,\r\n            active_color: secondary,\r\n          },\r\n          coupon_alert_text: {\r\n            text: __(\"modules.checkout_button.coupon_alert_text.text\"),\r\n            font_size: 1,\r\n            color: danger,\r\n          },\r\n          use_coupon_code: {\r\n            text: __(\"modules.checkout_button.use_coupon_code.text\"),\r\n            font_size: 0.9,\r\n            color: { r: 160, g: 160, b: 160, a: 1 },\r\n          },\r\n          enter_coupon_code: {\r\n            text: __(\"modules.checkout_button.enter_coupon_code.text\"),\r\n            font_size: 0.9,\r\n            color: secondary,\r\n          },\r\n          apply_coupon_code: {\r\n            text: __(\"modules.checkout_button.apply_coupon_code.text\"),\r\n            font_size: 1,\r\n            color: background,\r\n          },\r\n          edit_coupon_code: {\r\n            text: __(\"modules.checkout_button.edit_coupon_code.text\"),\r\n            font_size: 0.9,\r\n          },\r\n          close_coupon_code: {\r\n            text: __(\"modules.checkout_button.close_coupon_code.text\"),\r\n            font_size: 0.9,\r\n          },\r\n          subtotal: {\r\n            text: __(\"modules.checkout_button.subtotal.text\"),\r\n            font_size: 1.3,\r\n            color: font_color,\r\n          },\r\n          savings: {\r\n            text: __(\"modules.checkout_button.savings.text\"),\r\n            font_size: 1.3,\r\n            color: checkout_button.background,\r\n          },\r\n        },\r\n      },\r\n    },\r\n    target: {\r\n      type: \"all_products\",\r\n      selected: [],\r\n      countries: {\r\n        include_active: false,\r\n        include: [\"worldwide\"],\r\n        exclude_active: false,\r\n        exclude: [],\r\n      },\r\n    },\r\n  };\r\n};\r\n\r\nfunction translate(language) {\r\n  return (path) => {\r\n    path = path.split(\".\");\r\n    return getIn(Languages[language], path) || getIn(Languages.english, path);\r\n  };\r\n}\r\n\r\nexport const default_one_check_upsell = (language) => {\r\n  const __ = translate(language);\r\n  return {\r\n    text: __(\"campaigns.one_check_up_sell.text\"),\r\n    is_ticked_by_default: false,\r\n    include_in_atu: true,\r\n    product: {},\r\n    product_type: \"existing\",\r\n    truncate: true,\r\n    truncate_length: 25,\r\n  };\r\n};\r\n\r\nexport const SHOP_DEFAULT_SETTINGS = (language) => {\r\n  language = Object.keys(Languages).includes(language) ? language : \"english\";\r\n  const __ = translate(language);\r\n  return {\r\n    modules: NEW_CAMPAIGN_INITIAL_STATE({}, language).settings.modules,\r\n    active: false,\r\n    open_cart: true,\r\n    multiCurrencyMode: true,\r\n    rtl: __(\"rtl\"),\r\n    curved: true,\r\n    show_coupon: false,\r\n    show_coupon_alert_text: true,\r\n    is_checkout_condition_active: false,\r\n    checkout_condition_color: default_primary,\r\n    checkout_condition_text: \"I agree to <b>Terms & conditions</b>\",\r\n    active_continue_shopping_button: true,\r\n    active_continue_shopping_underlined: true,\r\n    count_compare_at: true,\r\n    continue_shopping_button: {\r\n      text: \"Continue shopping\",\r\n      font_size: 1,\r\n      font_weight: 700,\r\n      color: default_primary,\r\n    },\r\n    empty_cart:\r\n      '<p class=\"ql-align-center\"><img src=\"https://cdn.shopify.com/s/files/1/0597/9367/0293/t/38/assets/download.png?v=1667818689\"></p>',\r\n    font: {\r\n      color: {\r\n        a: 1,\r\n        b: 67,\r\n        g: 37,\r\n        r: 22,\r\n      },\r\n      custom: false,\r\n      family:\r\n        \"Poppins:100,100italic,200,200italic,300,300italic,regular,italic,500,500italic,600,600italic,700,700italic,800,800italic,900,900italic\",\r\n      size: 14,\r\n    },\r\n    header: {\r\n      background: {\r\n        a: 1,\r\n        b: 255,\r\n        g: 255,\r\n        r: 255,\r\n      },\r\n      title: {\r\n        color: {\r\n          a: 1,\r\n          b: 0,\r\n          g: 0,\r\n          r: 0,\r\n        },\r\n        font_size: 1.1,\r\n        text: __(\"header.title\"),\r\n      },\r\n    },\r\n    product: {\r\n      sold_out: __(\"product.sold_out\"),\r\n      grow: false,\r\n      image_size: 80,\r\n      price: {\r\n        color: {\r\n          a: 1,\r\n          b: 67,\r\n          g: 37,\r\n          r: 22,\r\n        },\r\n        font_size: 1.1,\r\n        text: \"{{original_price}}{{product_price}}\",\r\n      },\r\n      title: {\r\n        color: {\r\n          a: 1,\r\n          b: 67,\r\n          g: 37,\r\n          r: 22,\r\n        },\r\n        font_size: 1.1,\r\n        text: \"{{product_title}}\",\r\n      },\r\n    },\r\n    product_details: {\r\n      atcButton: {\r\n        color: {\r\n          a: 1,\r\n          b: 255,\r\n          g: 255,\r\n          r: 255,\r\n        },\r\n        font_size: 1,\r\n        text: __(\"product_details.atcButton.text\"),\r\n      },\r\n      atcButton_background: {\r\n        a: 1,\r\n        b: 178,\r\n        g: 84,\r\n        r: 64,\r\n      },\r\n      atcButton_hoverBackground: {\r\n        a: 1,\r\n        b: 206,\r\n        g: 206,\r\n        r: 206,\r\n      },\r\n      external: false,\r\n      readMore: {\r\n        color: {\r\n          a: 1,\r\n          b: 178,\r\n          g: 84,\r\n          r: 64,\r\n        },\r\n        font_size: 1,\r\n        text: __(\"product_details.readMore.text\"),\r\n      },\r\n      truncate: true,\r\n      truncate_length: 200,\r\n    },\r\n    theme: {\r\n      background: {\r\n        a: 1,\r\n        b: 255,\r\n        g: 255,\r\n        r: 255,\r\n      },\r\n      primary: {\r\n        a: 1,\r\n        b: 248,\r\n        g: 117,\r\n        r: 90,\r\n      },\r\n      secondary: {\r\n        a: 1,\r\n        b: 255,\r\n        g: 222,\r\n        r: 215,\r\n      },\r\n      textColor: {\r\n        a: 0.8,\r\n        b: 67,\r\n        g: 37,\r\n        r: 22,\r\n      },\r\n      buttonColor: {\r\n        a: 1,\r\n        b: 255,\r\n        g: 255,\r\n        r: 255,\r\n      },\r\n    },\r\n    default_language: language,\r\n\r\n    cod_settings: {\r\n      error_message: \"This field is required\",\r\n      is_active: false,\r\n      is_form_in_cart: false,\r\n      checkout_mode: \"cod_and_checkout\", // cod_and_checkout cod_only\r\n      checkout_button: {\r\n        text: \"PAY ON DELIVERY\",\r\n        font_size: 1.7,\r\n        color: default_background,\r\n        background: default_primary,\r\n        hoverBackground: default_secondary,\r\n      },\r\n      confirm_button: {\r\n        text: \"Confirm Order\",\r\n        font_size: 1.7,\r\n        color: default_background,\r\n        background: default_primary,\r\n        hoverBackground: default_secondary,\r\n      },\r\n      loading_button: {\r\n        text: \"Loading ...\",\r\n        font_size: 1.7,\r\n        color: default_background,\r\n        background: default_primary,\r\n        hoverBackground: default_secondary,\r\n      },\r\n      form: [\r\n        {\r\n          label: \"First name\", // editable\r\n          isRequired: true, // obligatry for customer\r\n          type: \"name\",\r\n          placeholder: \"Please enter your full name\",\r\n        },\r\n        {\r\n          label: \"Email\",\r\n          isRequired: false,\r\n          type: \"email\",\r\n          placeholder: \"Please enter your email\",\r\n        },\r\n        // {\r\n        // \tlabel: \"Zip Code\",\r\n        // \tisRequired: true\r\n        // },\r\n        {\r\n          label: \"Phone number\",\r\n          isRequired: true,\r\n          type: \"phone\",\r\n          placeholder: \"Please enter your phone number\",\r\n        },\r\n        {\r\n          label: \"Address\",\r\n          isRequired: true,\r\n          type: \"string\",\r\n          placeholder: \"Please enter your address\",\r\n        },\r\n        {\r\n          label: \"Note to seller\",\r\n          isRequired: false,\r\n          type: \"textarea\",\r\n          placeholder: \"Please enter your a custome note\",\r\n        },\r\n      ],\r\n    },\r\n    sticky_cart: {\r\n      isActive: false,\r\n      btn_style: \"square\",\r\n      btn_text: \"Add To Cart\",\r\n      btn_text_variant_active: \"CONFIRM\",\r\n      btn_text_unavailable: \"UNAVAILABLE\",\r\n      btn_color: default_primary,\r\n      txt_color: {\r\n        r: 255,\r\n        g: 255,\r\n        b: 255,\r\n        a: 1,\r\n      },\r\n      background_color: {\r\n        r: 255,\r\n        g: 255,\r\n        b: 255,\r\n        a: 1,\r\n      },\r\n\r\n      atc_action: \"checkout\",\r\n\r\n      desktop_active: true,\r\n      desktop_show_variants: true,\r\n      desktop_show_quantity: true,\r\n      desktop_show_product_name: true,\r\n      desktop_product_preview: true,\r\n      desktop_show_compared_price: true,\r\n\r\n      desktop_visibility: \"dynamic\",\r\n      desktop_location: \"bottom\",\r\n\r\n      desktop_quantity: {\r\n        text: \"Quantity\",\r\n        // font_size: 1.7,\r\n      },\r\n      mobile_quantity: {\r\n        text: \"Quantity\",\r\n        // font_size: 1.7,\r\n      },\r\n      cart_name: {\r\n        text: \"Add To Cart\",\r\n        // font_size: 1.7,\r\n      },\r\n      mobile_active: true,\r\n      mobile_show_variants: true,\r\n      mobile_show_quantity: true,\r\n      mobile_show_compared_price: true,\r\n\r\n      mobile_show_title: true,\r\n      mobile_show_price: true,\r\n\r\n      mobile_visibility: \"dynamic\",\r\n      mobile_location: \"bottom\",\r\n      mobile_atc_height: {\r\n        text: 50,\r\n      },\r\n\r\n      show_btn_atc_txt_variant_active: false,\r\n      btn_atc_txt_variant_active: \"Choose size\",\r\n    },\r\n    auto_discount: {\r\n      text: {\r\n        color: {\r\n          a: 1,\r\n          r: 0,\r\n          g: 45,\r\n          b: 255,\r\n        },\r\n        font_weight: 400,\r\n        font_size: 0.9,\r\n        text: \"{{title}}\",\r\n      },\r\n      background: {\r\n        a: 1,\r\n        r: 240,\r\n        g: 242,\r\n        b: 255,\r\n      },\r\n      border: {\r\n        a: 1,\r\n        r: 161,\r\n        g: 178,\r\n        b: 255,\r\n      },\r\n    },\r\n    subscription: {\r\n      isActive: false,\r\n      text: {\r\n        color: {\r\n          a: 1,\r\n          r: 255,\r\n          g: 255,\r\n          b: 255,\r\n        },\r\n        font_weight: 700,\r\n        font_size: 0.9,\r\n        text: \"Upgrade to {{plans_group_name}}\",\r\n      },\r\n      background: {\r\n        a: 1,\r\n        r: 26,\r\n        g: 68,\r\n        b: 156,\r\n      },\r\n      border: {\r\n        a: 1,\r\n        r: 26,\r\n        g: 68,\r\n        b: 156,\r\n      },\r\n      upgradingText: {\r\n        color: {\r\n          a: 1,\r\n          r: 255,\r\n          g: 255,\r\n          b: 255,\r\n        },\r\n        font_weight: 700,\r\n        font_size: 0.9,\r\n        text: \"Upgrading...\",\r\n      },\r\n      downgradingText: {\r\n        color: {\r\n          a: 1,\r\n          r: 255,\r\n          g: 255,\r\n          b: 255,\r\n        },\r\n        font_weight: 700,\r\n        font_size: 0.9,\r\n        text: \"Downgrading...\",\r\n      },\r\n      loadingBackground: {\r\n        a: 1,\r\n        r: 153,\r\n        g: 153,\r\n        b: 153,\r\n      },\r\n      loadingBorder: {\r\n        a: 1,\r\n        r: 153,\r\n        g: 153,\r\n        b: 153,\r\n      },\r\n      subscribedText: {\r\n        color: {\r\n          a: 1,\r\n          r: 0,\r\n          g: 0,\r\n          b: 0,\r\n        },\r\n        font_weight: 500,\r\n        font_size: 0.9,\r\n        text: \"{{selling_plan_name}}\",\r\n      },\r\n      subscribedBackground: {\r\n        a: 1,\r\n        r: 255,\r\n        g: 255,\r\n        b: 255,\r\n      },\r\n      subscribedBorder: {\r\n        a: 1,\r\n        r: 153,\r\n        g: 153,\r\n        b: 153,\r\n      },\r\n    },\r\n    scary: {\r\n      isActive: false,\r\n      text: {\r\n        color: {\r\n          a: 1,\r\n          r: 0,\r\n          g: 45,\r\n          b: 255,\r\n        },\r\n        font_size: 0.7,\r\n        text: \"🔥 Your cart is reserved for... {{timer}} minutes\",\r\n      },\r\n      style: \"rounded\",\r\n      background: {\r\n        a: 1,\r\n        r: 240,\r\n        g: 242,\r\n        b: 255,\r\n      },\r\n      border: {\r\n        a: 1,\r\n        r: 161,\r\n        g: 178,\r\n        b: 255,\r\n      },\r\n      isDaysActive: false,\r\n      isHoursActive: true,\r\n      isMinutesActive: true,\r\n      isSecondsActive: true,\r\n      days: 0,\r\n      hours: 0,\r\n      minutes: 4,\r\n      seconds: 49,\r\n      endAction: \"hide\", // hide restart\r\n      placement: \"bottom\", // bottom top\r\n      textAlignement: \"left\", // left center right\r\n    },\r\n    badges: {\r\n      isActive: false,\r\n      position: \"bellow_checkout\", // BADGES_POSITIONS\r\n      value:\r\n        '<p class=\"ql-align-center\" style=\"color: #162543;font-size: 13px;\">Guaranteed Safe &amp; Secure Checkout </p><p><img src=\"https://storage.crisp.chat/users/upload/operator/efc812c3c6152000/payment-methods-min_dp91kr.png\"></p>',\r\n    },\r\n    afterPay: {\r\n      isActive: false,\r\n      splits: 4,\r\n      text: {\r\n        color: {\r\n          a: 1,\r\n          r: 22,\r\n          g: 37,\r\n          b: 67,\r\n        },\r\n        font_size: 0.8,\r\n        font_weight: 700,\r\n        text: \"Or {{installments}} installments of {{split payment}} with\",\r\n      },\r\n      image:\r\n        \"https://s3-us-west-2.amazonaws.com/apps.static.resources/afterpay_black.png\",\r\n      isExternal: false,\r\n    },\r\n    announcement: {\r\n      isActive: false,\r\n      position: \"bellow_products\", //ANNOUNCEMENT_POSITIONS\r\n      text: {\r\n        color: {\r\n          a: 1,\r\n          r: 0,\r\n          g: 102,\r\n          b: 79,\r\n        },\r\n        font_size: 0.7,\r\n        text: \"⏰ Order before your items are out of stock!\",\r\n      },\r\n      style: \"rounded\", // full\r\n      background: {\r\n        a: 0.22,\r\n        r: 80,\r\n        g: 277,\r\n        b: 194,\r\n      },\r\n      border: {\r\n        a: 1,\r\n        r: 80,\r\n        g: 277,\r\n        b: 194,\r\n      },\r\n      textAlignement: \"center\", // left center right\r\n    },\r\n  };\r\n};\r\nexport const BADGE_PERCENT_ICON = {\r\n  //this icon is missing on fontawesome package\r\n  prefix: \"fas\",\r\n  iconName: \"adjust\",\r\n  icon: [\r\n    512,\r\n    512,\r\n    [],\r\n    \"f646\",\r\n    \"M512 256c0-37.7-23.7-69.9-57.1-82.4 14.7-32.4 8.8-71.9-17.9-98.6-26.7-26.7-66.2-32.6-98.6-17.9C325.9 23.7 293.7 0 256 0s-69.9 23.7-82.4 57.1c-32.4-14.7-72-8.8-98.6 17.9-26.7 26.7-32.6 66.2-17.9 98.6C23.7 186.1 0 218.3 0 256s23.7 69.9 57.1 82.4c-14.7 32.4-8.8 72 17.9 98.6 26.6 26.6 66.1 32.7 98.6 17.9 12.5 33.3 44.7 57.1 82.4 57.1s69.9-23.7 82.4-57.1c32.6 14.8 72 8.7 98.6-17.9 26.7-26.7 32.6-66.2 17.9-98.6 33.4-12.5 57.1-44.7 57.1-82.4zm-320-96c17.67 0 32 14.33 32 32s-14.33 32-32 32-32-14.33-32-32 14.33-32 32-32zm12.28 181.65c-6.25 6.25-16.38 6.25-22.63 0l-11.31-11.31c-6.25-6.25-6.25-16.38 0-22.63l137.37-137.37c6.25-6.25 16.38-6.25 22.63 0l11.31 11.31c6.25 6.25 6.25 16.38 0 22.63L204.28 341.65zM320 352c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\",\r\n  ],\r\n};\r\n\r\nconst parseProductId = (string) => {\r\n  // example gid://shopify/ProductVariant/19566771404862\r\n  const pattern = new RegExp(\"gid://shopify/Product/([0-9]+)$\");\r\n  if (pattern.test(string)) return parseInt(string.match(pattern)[1]);\r\n  return string;\r\n};\r\n\r\nexport const stateCards = [\r\n  { title: \"CartsDisplayed\" },\r\n  { title: \"SalesGenerated\", label: \"Cart Orders\" },\r\n  { title: \"SalesAmount\", label: \"Cart Total Revenue\", currency: true },\r\n  { title: \"AverageOrderSize\", currency: true },\r\n  { title: \"CartConversionRate\", suf: \"%\" },\r\n  { title: \"UpsellsGenerated\", label: \"Campaign Added Products\" },\r\n  { title: \"UpsellsTotalAmount\", label: \"Campaign Revenue\", currency: true },\r\n  { title: \"TotalROI\", suf: \"%\", clickable: false },\r\n];\r\n\r\nexport const chartOptions = (formatter) => ({\r\n  fill: {\r\n    type: \"solid\",\r\n    color: \"#485aff\",\r\n    opacity: 0.15,\r\n  },\r\n  width: \"50%\",\r\n  stroke: {\r\n    show: true,\r\n    curve: \"smooth\",\r\n    lineCap: \"butt\",\r\n    colors: [\"#2F80ED\"],\r\n    width: 4,\r\n    dashArray: 0,\r\n  },\r\n  dropShadow: {\r\n    enabled: true,\r\n    top: 1,\r\n    left: 1,\r\n    blur: 2,\r\n    color: \"#000\",\r\n    opacity: 0.9,\r\n  },\r\n  xaxis: {\r\n    type: \"datetime\",\r\n  },\r\n  yaxis: {\r\n    type: \"numeric\",\r\n  },\r\n  dataLabels: {\r\n    enabled: false,\r\n    enabledOnSeries: undefined,\r\n    formatter,\r\n  },\r\n});\r\n\r\nexport const ENGINE_WARNING_ICON = {\r\n  prefix: \"fas\",\r\n  iconName: \"engine-warning\",\r\n  icon: [\r\n    640,\r\n    448,\r\n    [],\r\n    \"f5f2\",\r\n    \"M48 256c0-59.53 19.55-117.38 55.36-164.51 5.18-6.81 4.48-16.31-2.03-21.86l-12.2-10.41c-6.91-5.9-17.62-5.06-23.15 2.15C23.32 117.02 0 185.5 0 256c0 70.47 23.32 138.96 65.96 194.62 5.53 7.21 16.23 8.05 23.15 2.16l12.19-10.4c6.51-5.55 7.21-15.04 2.04-21.86C67.55 373.37 48 315.53 48 256zM320 32C196.3 32 96 132.3 96 256c0 123.76 100.3 224 224 224s224-100.24 224-224c0-123.7-100.3-224-224-224zm0 352c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm25.44-110.41c-.82 8.18-7.7 14.41-15.92 14.41h-19.04c-8.22 0-15.1-6.23-15.92-14.41l-12.8-128c-.94-9.42 6.45-17.59 15.92-17.59h44.64c9.47 0 16.86 8.17 15.92 17.59l-12.8 128zM572.73 59.71c-5.58-7.18-16.29-7.95-23.17-2l-12.15 10.51c-6.47 5.6-7.1 15.09-1.88 21.87C572.04 137.47 592 195.81 592 256c0 60.23-19.96 118.57-56.46 165.95-5.22 6.78-4.59 16.27 1.88 21.87l12.15 10.5c6.87 5.95 17.59 5.18 23.17-2C616.21 396.38 640 327.31 640 256c0-71.27-23.79-140.34-67.27-196.29z\",\r\n  ],\r\n};\r\nexport const SACK_DOLLAR_ICON = {\r\n  prefix: \"fas\",\r\n  iconName: \"sack-dollar\",\r\n  icon: [\r\n    512,\r\n    512,\r\n    [],\r\n    \"f81d\",\r\n    \"M192 96h128l47.4-71.12A16 16 0 0 0 354.09 0H157.94a16 16 0 0 0-13.31 24.88zm128 32H192C-10.38 243.4.09 396.64.09 416c0 53 49.11 96 109.68 96h292.48c60.58 0 109.68-43 109.68-96 0-19 9.35-173.24-191.93-288zm-46.58 278v17.34a8.68 8.68 0 0 1-8.7 8.62h-17.41a8.69 8.69 0 0 1-8.71-8.62v-17.51a63.14 63.14 0 0 1-34.16-12.17 8.52 8.52 0 0 1-.67-13l12.84-12.06a8.93 8.93 0 0 1 11-.76 26.71 26.71 0 0 0 13.93 4h30.58c7.07 0 12.84-6.35 12.84-14.22 0-6.46-3.92-12.06-9.58-13.67l-49-14.54c-20.24-6-34.39-25.2-34.39-46.74 0-26.38 20.68-47.82 46.46-48.57v-17.48a8.69 8.69 0 0 1 8.75-8.62h17.41a8.68 8.68 0 0 1 8.7 8.62v17.55a63.15 63.15 0 0 1 34.17 12.17 8.54 8.54 0 0 1 1.58 12 8.72 8.72 0 0 1-.92 1l-12.73 12.2a8.91 8.91 0 0 1-11 .75 26.8 26.8 0 0 0-13.93-4h-30.57c-7.07 0-12.84 6.35-12.84 14.21 0 6.46 3.92 12.06 9.57 13.68l49 14.54c20.24 6 34.38 25.2 34.38 46.74-.14 26.4-20.92 47.94-46.6 48.54z\",\r\n  ],\r\n};\r\n\r\nexport const COMMENT_DOLLAR = {\r\n  prefix: \"fas\",\r\n  iconName: \"comment-dollar\",\r\n  icon: [\r\n    512,\r\n    512,\r\n    [],\r\n    \"f81d\",\r\n    \"M256 32C114.62 32 0 125.12 0 240c0 49.56 21.41 95.01 57.02 130.74C44.46 421.05 2.7 465.97 2.2 466.5A7.995 7.995 0 0 0 8 480c66.26 0 115.99-31.75 140.6-51.38C181.29 440.93 217.59 448 256 448c141.38 0 256-93.12 256-208S397.38 32 256 32zm24 302.44V352c0 8.84-7.16 16-16 16h-16c-8.84 0-16-7.16-16-16v-17.73c-11.42-1.35-22.28-5.19-31.78-11.46-6.22-4.11-6.82-13.11-1.55-18.38l17.52-17.52c3.74-3.74 9.31-4.24 14.11-2.03 3.18 1.46 6.66 2.22 10.26 2.22h32.78c4.66 0 8.44-3.78 8.44-8.42 0-3.75-2.52-7.08-6.12-8.11l-50.07-14.3c-22.25-6.35-40.01-24.71-42.91-47.67-4.05-32.07 19.03-59.43 49.32-63.05V128c0-8.84 7.16-16 16-16h16c8.84 0 16 7.16 16 16v17.73c11.42 1.35 22.28 5.19 31.78 11.46 6.22 4.11 6.82 13.11 1.55 18.38l-17.52 17.52c-3.74 3.74-9.31 4.24-14.11 2.03a24.516 24.516 0 0 0-10.26-2.22h-32.78c-4.66 0-8.44 3.78-8.44 8.42 0 3.75 2.52 7.08 6.12 8.11l50.07 14.3c22.25 6.36 40.01 24.71 42.91 47.67 4.05 32.06-19.03 59.42-49.32 63.04z\",\r\n  ],\r\n};\r\nexport const BOX_CHECK_ICON = {\r\n  prefix: \"fas\",\r\n  iconName: \"box-check\",\r\n  icon: [\r\n    640,\r\n    512,\r\n    [],\r\n    \"f467\",\r\n    \"M240 0H98.6c-20.7 0-39 13.2-45.5 32.8L2.5 184.6c-.8 2.4-.8 4.9-1.2 7.4H240V0zm235.2 81.7l-16.3-48.8C452.4 13.2 434.1 0 413.4 0H272v157.4C315.9 109.9 378.4 80 448 80c9.2 0 18.3.6 27.2 1.7zM208 320c0-34.1 7.3-66.6 20.2-96H0v240c0 26.5 21.5 48 48 48h256.6C246.1 468.2 208 398.6 208 320zm240-192c-106 0-192 86-192 192s86 192 192 192 192-86 192-192-86-192-192-192zm114.1 147.8l-131 130c-4.3 4.3-11.3 4.3-15.6-.1l-75.7-76.3c-4.3-4.3-4.2-11.3.1-15.6l26-25.8c4.3-4.3 11.3-4.2 15.6.1l42.1 42.5 97.2-96.4c4.3-4.3 11.3-4.2 15.6.1l25.8 26c4.2 4.3 4.2 11.3-.1 15.5z\",\r\n  ],\r\n};\r\nexport const PERCENTAGE_ICON = {\r\n  prefix: \"fas\",\r\n  iconName: \"percentage\",\r\n  icon: [\r\n    384,\r\n    512,\r\n    [],\r\n    \"f541\",\r\n    \"M109.25 173.25c24.99-24.99 24.99-65.52 0-90.51-24.99-24.99-65.52-24.99-90.51 0-24.99 24.99-24.99 65.52 0 90.51 25 25 65.52 25 90.51 0zm256 165.49c-24.99-24.99-65.52-24.99-90.51 0-24.99 24.99-24.99 65.52 0 90.51 24.99 24.99 65.52 24.99 90.51 0 25-24.99 25-65.51 0-90.51zm-1.94-231.43l-22.62-22.62c-12.5-12.5-32.76-12.5-45.25 0L20.69 359.44c-12.5 12.5-12.5 32.76 0 45.25l22.62 22.62c12.5 12.5 32.76 12.5 45.25 0l274.75-274.75c12.5-12.49 12.5-32.75 0-45.25z\",\r\n  ],\r\n};\r\n\r\nexport const COMMENT_ALT_SMILE_ICON = {\r\n  prefix: \"fas\",\r\n  iconName: \"comment-alt-smile\",\r\n  icon: [\r\n    512,\r\n    512,\r\n    [],\r\n    \"f4aa\",\r\n    \"M448 0H64C28.7 0 0 28.7 0 64v288c0 35.3 28.7 64 64 64h96v84c0 9.8 11.2 15.5 19.1 9.7L304 416h144c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zM320 133.2c14.8 0 26.8 12 26.8 26.8s-12 26.8-26.8 26.8-26.8-12-26.8-26.8 12-26.8 26.8-26.8zm-128 0c14.8 0 26.8 12 26.8 26.8s-12 26.8-26.8 26.8-26.8-12-26.8-26.8 12-26.8 26.8-26.8zm164.2 140.9C331.3 303.3 294.8 320 256 320c-38.8 0-75.3-16.7-100.2-45.9-5.8-6.7-5-16.8 1.8-22.5 6.7-5.7 16.8-5 22.5 1.8 18.8 22 46.5 34.6 75.8 34.6 29.4 0 57-12.6 75.8-34.7 5.8-6.7 15.9-7.5 22.6-1.8 6.8 5.8 7.6 15.9 1.9 22.6z\",\r\n  ],\r\n};\r\n\r\nexport const USER_SHIELD_ICON = {\r\n  prefix: \"fas\",\r\n  iconName: \"user-shield\",\r\n  icon: [\r\n    640,\r\n    512,\r\n    [],\r\n    \"f505\",\r\n    \"M622.3 271.1l-115.2-45c-4.1-1.6-12.6-3.7-22.2 0l-115.2 45c-10.7 4.2-17.7 14-17.7 24.9 0 111.6 68.7 188.8 132.9 213.9 9.6 3.7 18 1.6 22.2 0C558.4 489.9 640 420.5 640 296c0-10.9-7-20.7-17.7-24.9zM496 462.4V273.3l95.5 37.3c-5.6 87.1-60.9 135.4-95.5 151.8zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm96 40c0-2.5.8-4.8 1.1-7.2-2.5-.1-4.9-.8-7.5-.8h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c6.8 0 13.3-1.5 19.2-4-54-42.9-99.2-116.7-99.2-212z\",\r\n  ],\r\n};\r\n\r\nexport const PRESET_HIDDEN_PRODUCTS = [\r\n  {\r\n    id: 1,\r\n    title: \"Gift Wrappping\",\r\n    price: 2.55,\r\n    body_html:\r\n      \"<p>Buying&nbsp;a&nbsp;Gift?&nbsp;Let&nbsp;us&nbsp;wrap&nbsp;it&nbsp;for&nbsp;you!</p><p>One of our team, will carefully wrap all you items individually to make your (someone special)...feel special!</p>\",\r\n  },\r\n  {\r\n    id: 4,\r\n    title: \"Fast Processing\",\r\n    price: 2.55,\r\n    body_html:\r\n      \"<p>Want to get your order FAST?</p><p>Get Priority Processing and we'll bump your order up to the front of the line.&nbsp;</p>\",\r\n  },\r\n  {\r\n    id: 2,\r\n    title: \"Extended waranty\",\r\n    price: 4.19,\r\n    body_html: \"<p>We will cover any manufacturing faults for 2 years!</p>\",\r\n  },\r\n];\r\nexport const TEST_COOKIE_NAME = \"shopifyTestCookie\";\r\nexport const GRANTED_STORAGE_ACCESS_COOKIE_NAME =\r\n  \"shopify.granted_storage_access\";\r\n\r\nexport const DEFAULT_GOAL = (\r\n  { multi_goal_type, goals },\r\n  language,\r\n  currency\r\n) => {\r\n  language = Object.keys(Languages).includes(language) ? language : \"english\";\r\n  const index = goals.length;\r\n  const goal = multi_goal_type === \"amount\" ? 40 + 20 * index : 2 + 2 * index;\r\n  const reward = 10 + 5 * index;\r\n  const __ = translate(language);\r\n  return {\r\n    // goal,\r\n    badge: {\r\n      show_text: true,\r\n      text: {\r\n        text: \"{{goal}}\",\r\n        font_size: 1,\r\n        color: default_primary,\r\n      },\r\n      type: 2,\r\n      image: null,\r\n    },\r\n    specific_goals: [\r\n      {\r\n        currency,\r\n        goal,\r\n        main: true,\r\n      },\r\n    ],\r\n    reward_type: \"discount\", // free_shipping,discount,gift\r\n    goal_type: \"fixed\",\r\n    goal_text: {\r\n      text: reward + \"% OFF\",\r\n      font_size: 0.7,\r\n      color: {\r\n        r: 44,\r\n        g: 50,\r\n        b: 59,\r\n        a: 1,\r\n      },\r\n    },\r\n    show_goal_text: true,\r\n    confetti: false,\r\n    confetti_length: 400,\r\n    discount: {\r\n      type: \"percentage\",\r\n      before: __(\"campaigns.add_to_unlock.discount.before\"),\r\n      after: __(\"campaigns.add_to_unlock.discount.after\"),\r\n      reward,\r\n    },\r\n    free_shipping: {\r\n      before: __(\"campaigns.add_to_unlock.free_shipping.before\"),\r\n      after: __(\"campaigns.add_to_unlock.free_shipping.after\"),\r\n      manual: true,\r\n    },\r\n    manual: {\r\n      before: __(\"campaigns.add_to_unlock.free_shipping.before\"),\r\n      after: __(\"campaigns.add_to_unlock.free_shipping.after\"),\r\n    },\r\n    gift: {\r\n      before: __(\"campaigns.add_to_unlock.gift.before\"),\r\n      after: __(\"campaigns.add_to_unlock.gift.after\"),\r\n      // product: {},\r\n      products: [],\r\n      previous_gift: \"keep\",\r\n      multi_gift_select: \"select\",\r\n      widget: {\r\n        active: true,\r\n        compare_at_price_active: true,\r\n        compare_at_price: {\r\n          color: { r: 141, g: 141, b: 141, a: 1 },\r\n          font_size: 1,\r\n          text: __(\"campaigns.add_to_unlock.gift.compare_at_price.text\"),\r\n        },\r\n        before: {\r\n          header: __(\"campaigns.add_to_unlock.gift.widget.before.header\"),\r\n          product_name: __(\r\n            \"campaigns.add_to_unlock.gift.widget.before.product_name\"\r\n          ),\r\n          offer_highlight: {\r\n            color: { r: 95, g: 95, b: 95, a: 1 },\r\n            font_size: 1.2,\r\n            text: __(\r\n              \"campaigns.add_to_unlock.gift.widget.before.offer_highlight.text\"\r\n            ),\r\n          },\r\n          // variant_selector_text: {\r\n          //   color: { r: 255, g: 255, b: 255, a: 1 },\r\n          //   font_size: 1,\r\n          //   text: __(\"campaigns.add_to_unlock.gift.widget.before.variant_selector_text.text\"),\r\n          // },\r\n          background: { r: 242, g: 245, b: 255, a: 1 },\r\n          outline: { r: 196, g: 196, b: 196, a: 1 },\r\n          // variant_button_background: { r: 10, g: 133, b: 255, a: 1 },\r\n          multi_gift_image:\r\n            \"https://d1s1zm0vzu692k.cloudfront.net/static/images/default_gifts.png\",\r\n        },\r\n        selecting: {\r\n          header: __(\"campaigns.add_to_unlock.gift.widget.selecting.header\"),\r\n          product_name: __(\r\n            \"campaigns.add_to_unlock.gift.widget.selecting.product_name\"\r\n          ),\r\n          offer_highlight: {\r\n            color: { r: 95, g: 95, b: 95, a: 1 },\r\n            font_size: 1.2,\r\n            text: __(\r\n              \"campaigns.add_to_unlock.gift.widget.selecting.offer_highlight.text\"\r\n            ),\r\n          },\r\n          variant_selector_text: {\r\n            color: { r: 255, g: 255, b: 255, a: 1 },\r\n            font_size: 1,\r\n            text: __(\r\n              \"campaigns.add_to_unlock.gift.widget.selecting.variant_selector_text.text\"\r\n            ),\r\n          },\r\n          background: { r: 242, g: 245, b: 255, a: 1 },\r\n          outline: { r: 196, g: 196, b: 196, a: 1 },\r\n          variant_button_background: { r: 10, g: 133, b: 255, a: 1 },\r\n        },\r\n        after: {\r\n          header: __(\"campaigns.add_to_unlock.gift.widget.after.header\"),\r\n          product_name: __(\r\n            \"campaigns.add_to_unlock.gift.widget.after.product_name\"\r\n          ),\r\n          offer_highlight: {\r\n            color: { r: 79, g: 181, b: 110, a: 1 },\r\n            font_size: 1.2,\r\n            text: __(\r\n              \"campaigns.add_to_unlock.gift.widget.after.offer_highlight.text\"\r\n            ),\r\n          },\r\n          background: { r: 248, g: 251, b: 246, a: 1 },\r\n          outline: { r: 203, g: 235, b: 206, a: 1 },\r\n          variant_change_text: {\r\n            color: { r: 134, g: 134, b: 134, a: 1 },\r\n            font_size: 1,\r\n            text: __(\r\n              \"campaigns.add_to_unlock.gift.widget.after.variant_change_text.text\"\r\n            ),\r\n          },\r\n        },\r\n      },\r\n      // inventory_quantity: {\r\n      //   active: true,\r\n      //   text: __(\"campaigns.add_to_unlock.gift.inventory_quantity.text\")\r\n      // }\r\n    },\r\n  };\r\n};\r\nexport const COD_FORM = [];\r\n\r\nexport const STICKY_CART_OPTIONS = {\r\n  btnStyles: [\r\n    { value: \"square\", label: \"Square\" },\r\n    { value: \"curvy\", label: \"Curvy\" },\r\n    // { value: 'organic', label: 'Organic' },\r\n  ],\r\n  btnPosition: [\r\n    { value: \"bottom\", label: \"Bottom\" },\r\n    { value: \"top\", label: \"Top\" },\r\n  ],\r\n  visibilityOptions: [\r\n    { value: \"always\", label: \"Always\" },\r\n    { value: \"dynamic\", label: 'when \"Add To Cart\" is hidden' },\r\n  ],\r\n  atcActions: [\r\n    { value: \"checkout\", label: \"Redirect to checkout page\" },\r\n    { value: \"cart\", label: \"Redirect to cart\" },\r\n    { value: \"stay\", label: \"Stay in product page\" },\r\n  ],\r\n};\r\n\r\nexport const BADGES_POSITIONS = [\r\n  { value: \"bellow_checkout\", label: \"Bellow checkout button\" },\r\n  { value: \"above_checkout\", label: \"Above checkout button\" },\r\n  { value: \"above_totals\", label: \"Above totals\" },\r\n];\r\n\r\nexport const ANNOUNCEMENT_POSITIONS = [\r\n  { value: \"bellow_header\", label: \"Bellow cart header\" },\r\n  { value: \"bellow_products\", label: \"Bellow product\" },\r\n  { value: \"above_products\", label: \"Above Products\" },\r\n  { value: \"above_totals\", label: \"Above Totals\" },\r\n];\r\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"preview_wrapper__3Au4R\",\"content\":\"preview_content__Zinsu\",\"preview\":\"preview_preview__1gYLv\",\"mobileContainar\":\"preview_mobileContainar__1aYRM\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"actions\":\"actions_buttons_actions__3WX0-\",\"actions_wrapper\":\"actions_buttons_actions_wrapper__3Gw5d\",\"action_button_menu\":\"actions_buttons_action_button_menu__joiZz\"};","import React from 'react';\r\nimport classNames from 'lib/classNames';\r\n\r\nconst Spinner = ({ text, color, size = 5 }) => {\r\n\treturn (\r\n\t\t<div className={classNames('h-full flex-center flex-col p-3')}>\r\n\t\t\t<div\r\n\t\t\t\tstyle={{\r\n\t\t\t\t\tcolor: color || '#2f80ed',\r\n\t\t\t\t}}\r\n\t\t\t\tclassName={classNames('flex-center')}\r\n\t\t\t>\r\n\t\t\t\t<svg\r\n\t\t\t\t\taria-hidden=\"true\"\r\n\t\t\t\t\tfocusable=\"false\"\r\n\t\t\t\t\tdata-icon=\"spinner-third\"\r\n\t\t\t\t\trole=\"img\"\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\tviewBox=\"0 0 512 512\"\r\n\t\t\t\t\tclassName={classNames(`w-${size} h-${size} fa-spin`, {\r\n\t\t\t\t\t\t\"mb-2\": !!text\r\n\t\t\t\t\t})}\r\n\t\t\t\t>\r\n\t\t\t\t\t<path\r\n\t\t\t\t\t\tfill=\"currentColor\"\r\n\t\t\t\t\t\td=\"M456.433 371.72l-27.79-16.045c-7.192-4.152-10.052-13.136-6.487-20.636 25.82-54.328 23.566-118.602-6.768-171.03-30.265-52.529-84.802-86.621-144.76-91.424C262.35 71.922 256 64.953 256 56.649V24.56c0-9.31 7.916-16.609 17.204-15.96 81.795 5.717 156.412 51.902 197.611 123.408 41.301 71.385 43.99 159.096 8.042 232.792-4.082 8.369-14.361 11.575-22.424 6.92z\"\r\n\t\t\t\t\t></path>\r\n\t\t\t\t</svg>\r\n\t\t\t</div>\r\n\t\t\t{text && <p className={classNames('text-gray-400 text-sm')}>{text}</p>}\r\n\t\t</div>\r\n\t);\r\n};\r\n\r\nexport default Spinner;\r\n","import classNames from 'lib/classNames';\r\nimport React from 'react';\r\nimport styles from 'styles/custom_scroll.module.scss'\r\n\r\nexport default function CustomScroll (props) {\r\n    const { children, isMobile, style, trackBg = \"#ffffff\", thumbBg = \"#afafaf\", className, scrollRef } = props\r\n    const finalClassName = [className, styles.custom_scrollbar, isMobile && 'isMobile'].filter(Boolean).join(' ')\r\n    return <div className={finalClassName} ref={scrollRef} style={Object.assign({}, style, {\r\n        \"--trackBg\": trackBg,\r\n        \"--thumbBg\": thumbBg,\r\n    })}  >\r\n        {children}\r\n    </div>\r\n}","const addPrefix = require('./addPrefix');\r\n\r\nexport default function classNames(...cssClasses) {\r\n    const isObject = variable => Object.prototype.toString.call(variable) === '[object Object]';\r\n    let className = '';\r\n    return cssClasses\r\n        .map(cssClass => {\r\n            if (!cssClass) return '';\r\n            if (isObject(cssClass)) {\r\n                return Object.entries(cssClass)\r\n                    .map(([value, condition]) => {\r\n                        return !!condition ? addPrefix(value) : '';\r\n                    })\r\n                    .filter(c => !!c)\r\n                    .join(' ');\r\n            }\r\n            return addPrefix(cssClass);\r\n        })\r\n        .join(' ');\r\n}\r\n","//AWS API Gateway endpoint for the AppSync service\r\nexport const API_GATEWAY = process.env.REACT_APP_API_GATEWAY;\r\nexport const API_GATEWAY_NEW = process.env.REACT_APP_API_GATEWAY_NEW;\r\nexport const API_GATEWAY2 = process.env.REACT_APP_API_GATEWAY2;\r\n//AWS AppSync authentication type\r\nexport const APPSYNC_AUTH_TYPE = process.env.REACT_APP_APPSYNC_AUTH_TYPE;\r\n//AWS AppSync endpoint\r\nexport const APPSYNC_ENDPOINT = process.env.REACT_APP_APPSYNC_ENDPOINT;\r\n//AWS AppSyncregion\r\nexport const APPSYNC_REGION = process.env.REACT_APP_APPSYNC_REGION;\r\n//Domain for Amplify cookie storage\r\nexport const AUTH_COOKIE_DOMAIN = process.env.REACT_APP_AUTH_COOKIE_DOMAIN;\r\n//Cookie expiry time for Amplify cookie storage\r\nexport const AUTH_COOKIE_EXPIRES = parseInt(process.env.REACT_APP_AUTH_COOKIE_EXPIRES);\r\n//Path for Amplify cookie storage\r\nexport const AUTH_COOKIE_PATH = process.env.REACT_APP_AUTH_COOKIE_PATH;\r\n//The key used to store our temporary OAuth token in localStorage\r\nexport const AUTH_TOKEN_KEY = process.env.REACT_APP_AUTH_TOKEN_KEY;\r\n//AWS Cognito Identity Pool ID\r\nexport const AWS_COGNITO_IDENTITY_POOL_ID = process.env.REACT_APP_AWS_COGNITO_IDENTITY_POOL_ID;\r\n//AWS Cognito Identity Pool ID\r\nexport const AWS_COGNITO_REGION = process.env.REACT_APP_AWS_COGNITO_REGION;\r\n//AWS Cognito User Pool ID\r\nexport const AWS_COGNITO_USER_POOL_ID = process.env.REACT_APP_AWS_COGNITO_USER_POOL_ID;\r\n//AWS Cognito User Pool Client ID\r\nexport const AWS_COGNITO_USER_POOL_CLIENT_ID =\r\n    process.env.REACT_APP_AWS_COGNITO_USER_POOL_CLIENT_ID;\r\n//Set to true to enable an embedded app or false to disable it\r\nexport const ENABLED_EMBEDDED = process.env.REACT_APP_ENABLED_EMBEDDED;\r\n//Shopify API Key\r\nexport const SHOPIFY_API_KEY = process.env.REACT_APP_SHOPIFY_API_KEY;\r\n// The app permalink is used for redirection you can found it here: shop.myshopify/admin/apps/{app permalink}\r\nexport const SHOPIFY_APP_PERMALINK = process.env.REACT_APP_SHOPIFY_APP_PERMALINK;\r\n//Embedded app force redirect\r\nexport const SHOPIFY_EMBEDDED_FORCE_REDIRECT = JSON.parse(\r\n    process.env.REACT_APP_SHOPIFY_EMBEDDED_FORCE_REDIRECT\r\n);\r\nexport const APP_NAME = process.env.REACT_APP_APP_NAME;\r\nexport const SCOPE = process.env.REACT_APP_SCOPE;\r\nexport const APP_DEV = JSON.parse(process.env.REACT_APP_DEV);\r\nconst pushing_time = \"1742983365765\";\r\n","import React, { useContext, useState, useEffect } from 'react';\r\nimport loadable from '@loadable/component';\r\nimport PropTypes from 'prop-types';\r\nimport { CartContext } from 'components/cart';\r\nimport useCampaign from 'hooks/useCampaign';\r\nimport classNames from 'lib/classNames';\r\n// import GiftWithPurchaseWidget from \"./GiftWithPurchaseWidget\";\r\n// import MultiGiftWithPurchaseWidget from \"./MultiGiftWithPurchaseWidget\";\r\nimport { isOCUProduct, getAllOCUProducts } from './CheckoutButton';\r\nimport Axios from 'axios';\r\nimport { getAddedGifts, getGoal, GetPresentableItemsList } from '../Utils';\r\nimport AddToUnlock from './AddToUnlock';\r\nconst Bundles = loadable(() => import('./Bundles'));\r\nconst Announcement = loadable(() => import('./announcement'));\r\nconst GiftWithPurchaseWidget = loadable(() => import('./GiftWithPurchaseWidget'));\r\nconst MultiGiftWithPurchaseWidget = loadable(() => import('./MultiGiftWithPurchaseWidget'));\r\nconst Badges = loadable(() => import('./badges'));\r\n\r\nexport const DefaultAutoDiscountSettings = {\r\n    text: {\r\n        color: {\r\n            a: 1,\r\n            r: 0,\r\n            g: 45,\r\n            b: 255\r\n        },\r\n        font_weight: 400,\r\n        font_size: 0.9,\r\n        text: '{{title}}'\r\n    },\r\n    background: {\r\n        a: 1,\r\n        r: 240,\r\n        g: 242,\r\n        b: 255\r\n    },\r\n    border: {\r\n        a: 1,\r\n        r: 161,\r\n        g: 178,\r\n        b: 255\r\n    }\r\n};\r\n\r\nconst CartItemsList = (props) => {\r\n    const {\r\n        campaigns,\r\n        shopify_cart_items,\r\n        cart_settings,\r\n        isPreview,\r\n        cart_settings: {\r\n            announcement = {},\r\n            modules: { checkout_button },\r\n            badges = {}\r\n        },\r\n        productAddedToCart,\r\n        discountCode,\r\n        setCartItems,\r\n        Utils,\r\n        get_total,\r\n        products\r\n    } = useContext(CartContext);\r\n    const [one_check_up_sell_product_id, ocu_campaign] = useCampaign(\r\n        'one_check_up_sell',\r\n        null,\r\n        true\r\n    )(campaigns, shopify_cart_items);\r\n    const ocu_products = getAllOCUProducts(ocu_campaign);\r\n    const filteredItems = shopify_cart_items.filter((item) => {\r\n        const ocu_product = ocu_products.find(\r\n            ({ product }) => item.product_id.toString() === product?.id\r\n        );\r\n        return ocu_product\r\n            ? ocu_product.include_in_atu\r\n            : !['free_gift', 'singleton_gift'].includes(item?.product_type?.toLowerCase());\r\n    });\r\n    const [add_to_unlock_product_id, add_to_unlock, isGlobal] = useCampaign('add_to_unlock')(\r\n        campaigns,\r\n        shopify_cart_items\r\n    );\r\n    const CAN_RENDER_ADD_TO_UNLOCK =\r\n        add_to_unlock &&\r\n        (add_to_unlock.products.length ||\r\n            add_to_unlock.recommendation_type == 'shopify_recommendation' ||\r\n            isPreview) &&\r\n        add_to_unlock.show_suggestions &&\r\n        (productAddedToCart({ id: add_to_unlock_product_id }) ||\r\n            (isGlobal && shopify_cart_items.length));\r\n    const { original, subtotal } = get_total(null, filteredItems);\r\n    const byQuantity = add_to_unlock?.multi_goal_type === 'quantity';\r\n    const bundlesDiscounts = Utils.getDiscount({\r\n        campaigns,\r\n        items: shopify_cart_items,\r\n        getBundlesOnly: true\r\n    });\r\n    const rate = window.mu_stop_shopify_rate ? 1 : parseFloat(window.Shopify.currency.rate);\r\n    const goalValue = (goal) => (byQuantity ? goal : parseInt(goal * 100 * rate));\r\n    const totalItems = shopify_cart_items\r\n        .filter(({ price }) => Number(price) > 0)\r\n        .reduce((acc, cur) => acc + cur.quantity, 0);\r\n    const getTotal = (reward_type) => {\r\n        const total = byQuantity\r\n            ? totalItems\r\n            : reward_type === 'free_shipping'\r\n            ? subtotal\r\n            : original - bundlesDiscounts;\r\n        return total;\r\n    };\r\n    const giftGoals = add_to_unlock?.goals?.filter(\r\n        ({ reward_type, gift }) =>\r\n            reward_type === 'gift' && (gift?.product?.title || gift?.products?.length)\r\n    );\r\n    const CAN_RENDER_GIFT_WIDGET =\r\n      (add_to_unlock?.isActive &&\r\n        giftGoals.length &&\r\n        productAddedToCart({ id: add_to_unlock_product_id })) ||\r\n      (add_to_unlock?.isActive && isGlobal && shopify_cart_items.length);\r\n      \r\n    useEffect(() => {\r\n        async function handleGiftCampaignChange() {\r\n            const gifts = shopify_cart_items.filter(({ product_type }) =>\r\n                ['free_gift', 'singleton_gift'].includes(product_type?.toLowerCase())\r\n            );\r\n            const { origin } = window.location;\r\n            gifts.forEach(async (gift) => {\r\n                const belongsToCurrentATU = !!giftGoals?.find((goal) => {\r\n                    if (goal.gift.products) {\r\n                        return !!goal.gift.products?.find(\r\n                            (product) => product?.id === gift.product_id.toString()\r\n                        );\r\n                    }\r\n                    return goal.gift.product?.id === gift.product_id.toString();\r\n                });\r\n                if (!belongsToCurrentATU) {\r\n                    const { data } = await Axios.post(Utils.getLangPath('cart/update.js'), {\r\n                        updates: { [gift.id]: 0 }\r\n                    });\r\n                    if (data?.items) {\r\n                        setCartItems(data.items, data.cart_level_discount_applications);\r\n                    }\r\n                }\r\n            });\r\n        }\r\n        handleGiftCampaignChange();\r\n    }, [shopify_cart_items]);\r\n\r\n    function getCartItems() {\r\n        const items = GetPresentableItemsList(shopify_cart_items);\r\n        return window.mu_dont_reverse_items ? items.reverse() : items;\r\n    }\r\n\r\n    return (\r\n        <>\r\n            <div\r\n                id=\"mu-items-container\"\r\n                className={classNames('flex flex-col px-5 ', {\r\n                    'flex-1':\r\n                        cart_settings.product.grow ||\r\n                        (!!CAN_RENDER_ADD_TO_UNLOCK &&\r\n                            (add_to_unlock.fbt_position === 'above_checkout' ||\r\n                                (!add_to_unlock.fbt_position && add_to_unlock.fbt_below)) &&\r\n                            checkout_button.fix_checkout_container)\r\n                })}\r\n                style={{\r\n                    paddingTop: 12\r\n                }}\r\n            >\r\n                {!!shopify_cart_items.length &&\r\n                    announcement?.isActive &&\r\n                    announcement.position === 'above_products' && (\r\n                        <Announcement announcement={announcement} />\r\n                    )}\r\n                {!!shopify_cart_items.length &&\r\n                    getCartItems().map((cartItem, key) => (\r\n                        <CartItem\r\n                            cartItem={cartItem}\r\n                            key={key}\r\n                            giftGoals={giftGoals}\r\n                            line={shopify_cart_items.length - key}\r\n                        />\r\n                    ))}\r\n                {!!CAN_RENDER_GIFT_WIDGET &&\r\n                    giftGoals.map((goal, key) => {\r\n                        if (!goal.gift?.widget?.active) {\r\n                            return null;\r\n                        }\r\n                        const { products, previous_gift } = goal.gift;\r\n                        const hasManyGifts = products?.length;\r\n                        // find if there is a previous goal and inject it on MultiGiftWithPurchaseWidget if the current goal removes the previous one\r\n                        const previous_goal =\r\n                            previous_gift === 'remove' && key > 0 && giftGoals[key - 1];\r\n                        // find the next goal and check if it's unlocked and it's removed previous and a gift is added\r\n                        //TODO: find all next goals with  previous_gift = remove\r\n                        //TODO: check if at least one goal is unlocked to hide this goal\r\n                        const next_goal =\r\n                            key < giftGoals.length - 1 ? giftGoals[key + 1] : undefined;\r\n                        const next_remove_previous_goals = giftGoals\r\n                            .slice(key + 1)\r\n                            .filter(({ gift }) => gift?.previous_gift === 'remove');\r\n                        const oneGoalIsUnlocked = (goalObject) => {\r\n                            const { goal: oldGoal, specific_goals, reward_type } = goalObject;\r\n                            const goal = getGoal({\r\n                                byQuantity,\r\n                                oldGoal,\r\n                                specific_goals,\r\n                                inCents: true\r\n                            });\r\n                            const total = getTotal(reward_type);\r\n                            return total >= goal;\r\n                        };\r\n                        if (next_remove_previous_goals.some(oneGoalIsUnlocked)) {\r\n                            return null;\r\n                        }\r\n                        if (hasManyGifts)\r\n                            return (\r\n                                <MultiGiftWithPurchaseWidget\r\n                                    key={key}\r\n                                    previous_goal={previous_goal}\r\n                                    giftGoal={goal}\r\n                                    filteredItems={filteredItems}\r\n                                    add_to_unlock={add_to_unlock}\r\n                                />\r\n                            );\r\n                        return (\r\n                            <GiftWithPurchaseWidget\r\n                                key={key}\r\n                                byQuantity={byQuantity}\r\n                                giftGoal={goal}\r\n                                filteredItems={filteredItems}\r\n                                multi_goal_type={add_to_unlock.multi_goal_type}\r\n                            />\r\n                        );\r\n                    })}\r\n                {!!shopify_cart_items.length &&\r\n                    announcement?.isActive &&\r\n                    announcement.position === 'bellow_products' && (\r\n                        <Announcement announcement={announcement} />\r\n                    )}\r\n                {/* {badges?.isActive && checkout_button.fix_checkout_container && (\r\n          <Badges badges={badges} />\r\n        )} */}\r\n            </div>\r\n            {!!CAN_RENDER_ADD_TO_UNLOCK &&\r\n                (add_to_unlock.fbt_position === 'under_products' ||\r\n                    add_to_unlock.fbt_position === 'above_checkout' ||\r\n                    (!add_to_unlock.fbt_position && add_to_unlock.fbt_below)) && (\r\n                    <div className={classNames('px-5')}>\r\n                        <AddToUnlock {...{ add_to_unlock, add_to_unlock_product_id }} />\r\n                    </div>\r\n                )}\r\n        </>\r\n    );\r\n};\r\n\r\nCartItemsList.propTypes = {};\r\n\r\nconst CartItem = ({ cartItem, giftGoals }) => {\r\n    const {\r\n      id,\r\n      image,\r\n      product_title,\r\n      product_type,\r\n      quantity,\r\n      line,\r\n      line_quantity,\r\n      price,\r\n      product_id,\r\n      variant_id,\r\n      url,\r\n      itemSoldOut,\r\n      variant_title,\r\n      selling_plan_allocation,\r\n      properties,\r\n      compare_at_price,\r\n      variant_options,\r\n    } = cartItem;\r\n    const [error, setError] = useState(null);\r\n    const [soldOut, setSoldOut] = useState(!!itemSoldOut);\r\n    const [maxQuantity, setMaxQuantity] = useState(Infinity);\r\n    const [selectedSellingPlanID, setSelectedSellingPlanID] = useState(\r\n      selling_plan_allocation?.selling_plan?.id ?? null\r\n    );\r\n    const [plansData, setPlansData] = useState(null);\r\n    const [loadingPlan, setLoadingPlan] = useState(false);\r\n    const {\r\n        campaigns,\r\n        update_cart_item,\r\n        Utils,\r\n        isPreview,\r\n        showSubscription,\r\n        cart_settings: {\r\n            count_compare_at,\r\n            theme: { background },\r\n            product,\r\n            money_format,\r\n            rtl,\r\n            auto_discount = DefaultAutoDiscountSettings,\r\n            subscription\r\n        },\r\n        shopify_cart_items,\r\n        productAddedToCart,\r\n        discountCode,\r\n        removeFBTUpsell,\r\n        compareAtMap,\r\n        hasAutoDiscount,\r\n        products\r\n    } = useContext(CartContext);\r\n    // const subscription = {\r\n    //   isActive: true,\r\n    //   text: {\r\n    //     color: {\r\n    //       a: 1,\r\n    //       r: 255,\r\n    //       g: 255,\r\n    //       b: 255,\r\n    //     },\r\n    //     font_weight: 400,\r\n    //     font_size: 0.8,\r\n    //     text: \"Upgrade to {{selling_plan_name}}\",\r\n    //   },\r\n    //   background: {\r\n    //     a: 1,\r\n    //     r: 26,\r\n    //     g: 68,\r\n    //     b: 156,\r\n    //   },\r\n    //   border: {\r\n    //     a: 1,\r\n    //     r: 26,\r\n    //     g: 68,\r\n    //     b: 156,\r\n    //   },\r\n    // };\r\n    const [one_check_up_sell_product_id, ocu_campaign] = useCampaign(\r\n        'one_check_up_sell',\r\n        null,\r\n        true\r\n    )(campaigns, shopify_cart_items);\r\n    const selectedProduct = products\r\n      ?.find(({ id }) => id == product_id);\r\n    const selectedVariant = selectedProduct?.variants?.find(\r\n      ({ id }) => id == variant_id\r\n    );\r\n    const [_, bundles] = useCampaign('bundles', product_id)(campaigns, shopify_cart_items);\r\n    const IS_EXAMPLE = isPreview && product_id < 10;\r\n    const IS_ONE_CHECK_PRODUCT =\r\n        shopify_cart_items.length > 1 &&\r\n        productAddedToCart(one_check_up_sell_product_id) &&\r\n        isOCUProduct(ocu_campaign, product_id, IS_EXAMPLE);\r\n    const IS_GIFT_PRODUCT = !!giftGoals?.find(\r\n        ({ gift }) => gift?.product?.variant_id === variant_id?.toString()\r\n    );\r\n    const updateItem = (step) => {\r\n        const newQuantity = (line_quantity || quantity) + step;\r\n        update_cart_item({ line, variant_id: id, quantity: newQuantity });\r\n        if (newQuantity === 0) removeFBTUpsell(id);\r\n    };\r\n    const formatText = (text) => {\r\n        const { price, original } = getPrice();\r\n        return text\r\n          .replace(\"{{product_title}}\", product_title)\r\n          .replace(\"{{product_price}}\", Utils.formatMoney(price, money_format))\r\n          .replace(\r\n            \"{{original_price}}\",\r\n            original && original.toFixed(2) !== price.toFixed(2)\r\n              ? `<del class='mu-original-price mu-opacity-75 ${\r\n                  rtl ? \"mu-ml-1\" : \"mu-mr-1\"\r\n                } notranslate' style='font-size:0.8em'>${Utils.formatMoney(\r\n                  original,\r\n                  money_format\r\n                )}</del> `\r\n              : \"\"\r\n          );\r\n    };\r\n    const hasCompareAt = (variant_id, quantity, price = null) => {\r\n        if (!count_compare_at) return false;\r\n        const finalPrice =\r\n            (selectedVariant && Number(selectedVariant?.compare_at_price) * 100) ??\r\n            (compareAtMap && compareAtMap[variant_id] ? compareAtMap[variant_id] : price);\r\n        // console.log(compareAtMap);\r\n        // const finalPrice = compareAtMap && compareAtMap[variant_id] ? compareAtMap[variant_id] * parseFloat(window.Shopify.currency.rate) : price\r\n        if (window.mu_handle_compareAt) return window.mu_handle_compareAt(variant_id, quantity, price, finalPrice);\r\n        return finalPrice * quantity;\r\n    };\r\n    const autoDiscount = Utils.GetCartLineItemDiscount(cartItem);\r\n    const getPrice = () => {\r\n        let single_price = window.mu_show_single_price;\r\n        if (autoDiscount || cartItem.discounts.length) {\r\n            const { discounted_price, original_line_price, discounts } = cartItem;\r\n            const price =\r\n                original_line_price - discounts.reduce((acc, { amount }) => acc + amount, 0);\r\n            // return { price: discounted_price * (single_price ? 1 : quantity), original: hasCompareAt(id, (single_price ? 1 : quantity)) };\r\n            if (!hasCompareAt(id, single_price ? 1 : quantity))\r\n                return {\r\n                    price: single_price ? discounted_price : price,\r\n                    original: single_price ? original_line_price / quantity : original_line_price\r\n                };\r\n            return {\r\n                price: single_price ? discounted_price : price,\r\n                original: hasCompareAt(id, single_price ? 1 : quantity)\r\n            };\r\n        }\r\n        if (!bundles || discountCode?.value) {\r\n            return {\r\n              price:\r\n                price * (single_price ? 1 : quantity) -\r\n                (cartItem.discounts?.reduce(\r\n                  (acc, { amount }) => acc + amount,\r\n                  0\r\n                ) ?? 0) /\r\n                  (single_price ? quantity : 1),\r\n              original: hasCompareAt(id, single_price ? 1 : quantity, price),\r\n            };\r\n        }\r\n        const productQuantity = shopify_cart_items\r\n          .filter(({ product_id }) => product_id == cartItem.product_id)\r\n          .reduce((acc, { quantity }) => acc + quantity, 0);\r\n        const selectedBundle =\r\n            bundles.list.find((bundle) => bundle.quantity === productQuantity) ||\r\n            Utils.sortByQuantity(bundles.list).find(\r\n                (bundle) => bundle.quantity < productQuantity\r\n            );\r\n        if (!selectedBundle)\r\n            return {\r\n              price: price * (single_price ? 1 : quantity),\r\n              original: hasCompareAt(id, single_price ? 1 : quantity, price),\r\n            };\r\n        const discountedPrice = Utils.getBundleDiscount(\r\n            selectedBundle,\r\n            single_price ? 1 : quantity,\r\n            price,\r\n            money_format\r\n        );  \r\n        return {\r\n            price: discountedPrice.plain,\r\n            original: hasCompareAt(id, single_price ? 1 : quantity, price)\r\n        };\r\n    };\r\n\r\n    function formatAutoDiscount(discount) {\r\n        const { title, amount } = discount;\r\n        return auto_discount.text.text\r\n            .replace('{{title}}', title)\r\n            .replace('{{amount}}', Utils.formatMoney(amount, money_format));\r\n    }\r\n    function formatBundleLabel(text) {\r\n        if(!text) return null;\r\n        const quantity = shopify_cart_items\r\n            .filter((i) => i.product_id === product_id)\r\n            .reduce((acc, { quantity }) => acc + quantity, 0);\r\n        const bundle = Utils.sortBundles(bundles.list).reduce((acc, cur) => {\r\n            if (quantity >= cur.quantity) acc = cur;\r\n            return acc;\r\n        }, null);\r\n        if (!bundle) return null;\r\n        const { type, reward } = bundle;\r\n        const formatted_reward =\r\n            type === 'percentage'\r\n                ? `${reward}%`\r\n                : Utils.formatMoney(reward * 100 * Number(window.Shopify.currency.rate), money_format, (n, p) =>\r\n                      Utils.formatWithDelimiters(n, p, ',', '.', true)\r\n                  );  \r\n        return text.replace('{{quantity}}', quantity).replace('{{discount}}', formatted_reward);\r\n    }\r\n\r\n    useEffect(() => {\r\n      const fetchData = async () => {\r\n        if (isPreview) {\r\n          if (showSubscription) {\r\n            const response = await Utils.getPlansData(\r\n              8353444036775,\r\n              \"recharge\",\r\n              null,\r\n              true\r\n            );\r\n            setPlansData(response);\r\n          }\r\n        } else {\r\n          const subscriptionApps = [\r\n            { name: \"recharge\", scriptKeyword: \"rechargecdn.com\" },\r\n            { name: \"seal\", scriptKeyword: \"sealsubscriptions.com\" },\r\n            { name: \"casa\", scriptKeyword: \"casaapps.com\" },\r\n            { name: \"subify\", scriptKeyword: \"subify\" },\r\n            { name: \"appstle\", scriptKeyword: \"appstle-subscription\" },\r\n            { name: \"recurpay\", scriptKeyword: \"recurpay-subscriptions\" },\r\n            { name: \"yotpo\", scriptKeyword: \"yotpo.com\" },\r\n            { name: \"paywhirl\", scriptKeyword: \"paywhirl.com\" },\r\n          ];\r\n\r\n          const checkForAppScript = (scriptKeyword) => {\r\n            const scripts = document.getElementsByTagName(\"script\");\r\n            for (let i = 0; i < scripts.length; i++) {\r\n              if (scripts[i].src.includes(scriptKeyword)) {\r\n                return true;\r\n              }\r\n            }\r\n            return false;\r\n          };\r\n\r\n          let plansData = null;\r\n          for (const app of subscriptionApps) {\r\n            if (checkForAppScript(app.scriptKeyword)) {\r\n              plansData = await Utils.getPlansData(\r\n                product_id,\r\n                app.name,\r\n                url,\r\n                null,\r\n                variant_id\r\n              );\r\n              if (plansData) {\r\n                setPlansData(plansData);\r\n                break;\r\n              }\r\n            } else {\r\n              setPlansData(null);\r\n            }\r\n          }\r\n        }\r\n      };\r\n\r\n      fetchData();\r\n    }, [product_id, showSubscription, isPreview, shopify_cart_items.length]);\r\n\r\n    if (['free_gift', 'singleton_gift', 'ship_protect'].includes(product_type?.toLowerCase())) {\r\n        return null;\r\n    }\r\n\r\n    function formatSubsciptionUpgrade(text=\"\", plans_group_name, selling_plan_name) {\r\n      return text.replace(\r\n          /{{plans_group_name}}/g,\r\n          plans_group_name ?? Object.keys(plansData.subscriptions)[0]\r\n        ).replace(\r\n          /{{selling_plan_name}}/g,\r\n          selling_plan_name ??\r\n            plansData.subscriptions[\r\n              Object.keys(plansData.subscriptions)[0]\r\n            ]?.[0]?.external_plan_name\r\n        );\r\n    }\r\n    \r\n    return IS_ONE_CHECK_PRODUCT || IS_GIFT_PRODUCT ? null : (\r\n      <div\r\n        data-product-id={product_id}\r\n        data-variant-id={variant_id}\r\n        className={classNames(\"cart-item mb-2\")}\r\n      >\r\n        <div className={classNames(\"flex\")}>\r\n          <div\r\n            className={classNames(\"item-image bg-cover bg-center block\", {\r\n              \"ml-2\": rtl,\r\n              \"mr-2\": !rtl,\r\n            })}\r\n            style={{\r\n              backgroundImage: `url(${\r\n                window.mu_display_product_image && selectedProduct\r\n                  ? selectedProduct.images[0].src\r\n                  : (properties && properties[\"_customily-preview\"]) || image\r\n              })`,\r\n              width: `${product.image_size}px`,\r\n              height: `${product.image_size}px`,\r\n            }}\r\n          />\r\n          <div className={classNames(\"flex-1 flex-col\")}>\r\n            <div\r\n              className={classNames(\r\n                \"item-title mb-0 overflow-hidden font-bold line-clamp leading-none mb-1\"\r\n              )}\r\n              style={{\r\n                fontSize: Utils.em(product.title.font_size),\r\n                color: Utils.formatColor(product.title.color),\r\n                fontWeight: product.title.font_weight,\r\n              }}\r\n            >\r\n              {isPreview || window.mu_title_unclickable ? (\r\n                <span\r\n                  dangerouslySetInnerHTML={{\r\n                    __html: formatText(product.title.text),\r\n                  }}\r\n                />\r\n              ) : (\r\n                <a\r\n                  href={`${window.origin}${url}`}\r\n                  dangerouslySetInnerHTML={{\r\n                    __html: formatText(product.title.text),\r\n                  }}\r\n                />\r\n              )}\r\n            </div>\r\n            {variant_title && variant_options && !window.hide_variant_title && (\r\n              <p className={classNames(\"item-variants leading-none mb-1\")}>\r\n                {variant_options.join(window.mu_variants_join_char ?? \"•\")}\r\n              </p>\r\n            )}\r\n            {(!!autoDiscount ||\r\n              (cartItem.discounts.length > 0 &&\r\n                (window.mu_show_discount_when_code_only\r\n                  ? Boolean(discountCode?.value)\r\n                  : true))) &&\r\n              !bundles && (\r\n                <div\r\n                  className={classNames(\r\n                    \"item-auto-discount text-sm p-1 rounded mb-1 flex items-center space-x-1 leading-none mb-1\"\r\n                  )}\r\n                  style={{\r\n                    fontSize: `${auto_discount.text.font_size}em`,\r\n                    fontWeight: auto_discount.text.font_weight,\r\n                    color: Utils.formatColor(auto_discount.text.color),\r\n                    background: Utils.formatColor(auto_discount.background),\r\n                    border: `${Utils.formatColor(\r\n                      auto_discount.border\r\n                    )} 1px solid`,\r\n                  }}\r\n                >\r\n                  <svg\r\n                    xmlns=\"http://www.w3.org/2000/svg\"\r\n                    viewBox=\"0 0 20 20\"\r\n                    fill=\"currentColor\"\r\n                    className={classNames(\"w-5 h-5\")}\r\n                  >\r\n                    <path\r\n                      fillRule=\"evenodd\"\r\n                      d=\"M5.5 3A2.5 2.5 0 003 5.5v2.879a2.5 2.5 0 00.732 1.767l6.5 6.5a2.5 2.5 0 003.536 0l2.878-2.878a2.5 2.5 0 000-3.536l-6.5-6.5A2.5 2.5 0 008.38 3H5.5zM6 7a1 1 0 100-2 1 1 0 000 2z\"\r\n                      clip-rule=\"evenodd\"\r\n                    />\r\n                  </svg>\r\n                  <span\r\n                    className={classNames(\"leading-none\")}\r\n                    dangerouslySetInnerHTML={{\r\n                      __html: formatAutoDiscount(cartItem.discounts[0]),\r\n                    }}\r\n                  ></span>\r\n                </div>\r\n              )}\r\n            {!!bundles &&\r\n              !soldOut &&\r\n              !discountCode &&\r\n              !hasAutoDiscount &&\r\n              formatBundleLabel(bundles.text) && (\r\n                <div\r\n                  className={classNames(\r\n                    \"item-auto-discount text-sm p-1 rounded mb-1 flex items-center space-x-1 leading-none inline-block\"\r\n                  )}\r\n                  style={{\r\n                    fontSize: `${auto_discount.text.font_size}em`,\r\n                    fontWeight: auto_discount.text.font_weight,\r\n                    color: Utils.formatColor(\r\n                      bundles.badge?.text || auto_discount.text.color\r\n                    ),\r\n                    background: Utils.formatColor(\r\n                      bundles.badge?.background || auto_discount.background\r\n                    ),\r\n                    border: `${Utils.formatColor(\r\n                      bundles.badge?.border || auto_discount.border\r\n                    )} 1px solid`,\r\n                  }}\r\n                >\r\n                  {\" \"}\r\n                  <svg\r\n                    xmlns=\"http://www.w3.org/2000/svg\"\r\n                    viewBox=\"0 0 20 20\"\r\n                    fill=\"currentColor\"\r\n                    className={classNames(\"w-5 h-5\")}\r\n                  >\r\n                    <path\r\n                      fillRule=\"evenodd\"\r\n                      d=\"M5.5 3A2.5 2.5 0 003 5.5v2.879a2.5 2.5 0 00.732 1.767l6.5 6.5a2.5 2.5 0 003.536 0l2.878-2.878a2.5 2.5 0 000-3.536l-6.5-6.5A2.5 2.5 0 008.38 3H5.5zM6 7a1 1 0 100-2 1 1 0 000 2z\"\r\n                      clipRule=\"evenodd\"\r\n                    />\r\n                  </svg>\r\n                  <span\r\n                    className={classNames(\"leading-none\")}\r\n                    dangerouslySetInnerHTML={{\r\n                      __html: formatBundleLabel(bundles.text),\r\n                    }}\r\n                  />\r\n                </div>\r\n              )}\r\n            {properties &&\r\n              !properties[\"File1\"] &&\r\n              !properties[\"_pplr_preview\"] &&\r\n              !properties[\"_is_preorder\"] &&\r\n              window.show_item_properties && (\r\n                <div className={classNames(\"item-properties space-y-1\")}>\r\n                  {Object.entries(properties)\r\n                    .filter(\r\n                      ([key, value]) =>\r\n                        typeof value === \"string\" &&\r\n                        (!key.startsWith(\"_\") || window.show_private_properties)\r\n                    )\r\n                    .map(([key, value]) => (\r\n                      <p\r\n                        className={classNames(\r\n                          \"item-property text-sm capitalize\"\r\n                        )}\r\n                        key={key}\r\n                        style={{ opacity: 0.8 }}\r\n                        data-key={key}\r\n                        data-value={value}\r\n                        dangerouslySetInnerHTML={{\r\n                          __html: `<b>${key}: </b> ${value}`,\r\n                        }}\r\n                      ></p>\r\n                    ))}\r\n                </div>\r\n              )}\r\n            {selling_plan_allocation?.selling_plan && (\r\n              <p className={classNames(\"item-selling-plan text-xs\")}>\r\n                {selling_plan_allocation?.selling_plan?.name}\r\n              </p>\r\n            )}\r\n            {properties && properties[\"File1\"] && (\r\n              <div className={classNames(\"item-properties gf-file\")}>\r\n                {Object.entries(properties)\r\n                  .filter(([key]) => key !== \"_pplr_ref_variant\")\r\n                  .map(([key, value]) => (\r\n                    <div\r\n                      key={key}\r\n                      className={classNames(\r\n                        \"item-property flex items-center justify-start my-1\"\r\n                      )}\r\n                      data-key={key}\r\n                      data-value={value}\r\n                    >\r\n                      <p className={classNames(\"text-sm\")}>{key}</p>\r\n                      {key.includes(\"File\") ? (\r\n                        <a href={value} target={\"_blank\"}>\r\n                          <img\r\n                            className={classNames(\r\n                              \"rounded-sm ml-12 h-12 w-12 object-cover\"\r\n                            )}\r\n                            src={value}\r\n                          />\r\n                        </a>\r\n                      ) : (\r\n                        <p className={classNames(\"text-sm ml-2\")}>{value}</p>\r\n                      )}\r\n                    </div>\r\n                  ))}\r\n              </div>\r\n            )}\r\n            {properties && properties[\"_pplr_preview\"] && (\r\n              <div className={classNames(\"item-properties pplr mt-1\")}>\r\n                {Object.entries(properties)\r\n                  .filter(\r\n                    ([name, value]) =>\r\n                      name &&\r\n                      value &&\r\n                      !name.includes(\"_pplr_preview\") &&\r\n                      !name.includes(\"_pplr_ref_variant\") &&\r\n                      !name.includes(\"_svg\")\r\n                  )\r\n                  .map(([name, value]) => (\r\n                    <div\r\n                      key={name}\r\n                      className={classNames(\"item-property text-sm\")}\r\n                      data-key={name}\r\n                      data-value={value}\r\n                      dangerouslySetInnerHTML={{\r\n                        __html: `${name.replace(\r\n                          \"See photo guide\",\r\n                          \"\"\r\n                        )}: ${value}`,\r\n                      }}\r\n                    ></div>\r\n                  ))}\r\n              </div>\r\n            )}\r\n            {properties && properties[\"_is_preorder\"] && (\r\n              <div className={classNames(\"item-properties preorder mt-1\")}>\r\n                {Object.entries(properties)\r\n                  .filter(\r\n                    ([name, value]) =>\r\n                      name &&\r\n                      value &&\r\n                      !name.includes(\"_is_preorder\") &&\r\n                      !name.includes(\"_preorder_locale\")\r\n                  )\r\n                  .map(([name, value]) => (\r\n                    <p\r\n                      className={classNames(\"item-property text-sm\")}\r\n                      key={name}\r\n                      data-key={name}\r\n                      data-value={value}\r\n                    >\r\n                      <b\r\n                        className={classNames(\"font-bold\")}\r\n                      >{`${name}: ${value}`}</b>\r\n                    </p>\r\n                  ))}\r\n              </div>\r\n            )}\r\n            <div className={classNames(\"flex items-center\")}>\r\n              <b\r\n                className={`${classNames(\r\n                  \"item-price flex-1 leading-none\"\r\n                )} notranslate`}\r\n                style={{\r\n                  fontSize: Utils.em(product.price.font_size),\r\n                  fontWeight: product.price.font_weight,\r\n                  color: Utils.formatColor(product.price.color),\r\n                }}\r\n                dangerouslySetInnerHTML={{\r\n                  __html: formatText(product.price.text),\r\n                }}\r\n              />\r\n\r\n              {!soldOut && (\r\n                <div\r\n                  className={`${classNames(\r\n                    \"item-quantity flex items-stretch\",\r\n                    getPrice().price == 0 ? \" hidden\" : \"\"\r\n                  )} notranslate`}\r\n                >\r\n                  <button\r\n                    style={{\r\n                      border: \"1px solid\",\r\n                      color: Utils.formatColor(product.title.color),\r\n                      borderColor: Utils.lighterColor(0.8, product.title.color),\r\n                      minWidth: \"unset\",\r\n                    }}\r\n                    className={classNames(\r\n                      \"border flex-center p-1 xs:p-2 bg-transparent\",\r\n                      {\r\n                        \"rounded-r rounded-l-none\": rtl,\r\n                        \"rounded-l rounded-r-none\": !rtl,\r\n                      }\r\n                    )}\r\n                    onClick={() => updateItem(-1)}\r\n                    aria-label={\r\n                      quantity === 1\r\n                        ? \"remove item from cart\"\r\n                        : \"decrease item quantity by one\"\r\n                    }\r\n                  >\r\n                    {quantity === 1 && (\r\n                      <svg\r\n                        aria-hidden=\"true\"\r\n                        focusable=\"false\"\r\n                        data-icon=\"trash\"\r\n                        style={{ height: 12 }}\r\n                        role=\"img\"\r\n                        xmlns=\"http://www.w3.org/2000/svg\"\r\n                        viewBox=\"0 0 448 512\"\r\n                      >\r\n                        <path\r\n                          fill=\"currentColor\"\r\n                          d=\"M0 84V56c0-13.3 10.7-24 24-24h112l9.4-18.7c4-8.2 12.3-13.3 21.4-13.3h114.3c9.1 0 17.4 5.1 21.5 13.3L312 32h112c13.3 0 24 10.7 24 24v28c0 6.6-5.4 12-12 12H12C5.4 96 0 90.6 0 84zm415.2 56.7L394.8 467c-1.6 25.3-22.6 45-47.9 45H101.1c-25.3 0-46.3-19.7-47.9-45L32.8 140.7c-.4-6.9 5.1-12.7 12-12.7h358.5c6.8 0 12.3 5.8 11.9 12.7z\"\r\n                        ></path>\r\n                      </svg>\r\n                    )}\r\n                    {quantity > 1 && (\r\n                      <svg\r\n                        aria-hidden=\"true\"\r\n                        focusable=\"false\"\r\n                        data-icon=\"minus\"\r\n                        style={{ height: 12 }}\r\n                        role=\"img\"\r\n                        xmlns=\"http://www.w3.org/2000/svg\"\r\n                        viewBox=\"0 0 448 512\"\r\n                      >\r\n                        <path\r\n                          fill=\"currentColor\"\r\n                          d=\"M424 318.2c13.3 0 24-10.7 24-24v-76.4c0-13.3-10.7-24-24-24H24c-13.3 0-24 10.7-24 24v76.4c0 13.3 10.7 24 24 24h400z\"\r\n                        ></path>\r\n                      </svg>\r\n                    )}\r\n                  </button>\r\n                  <div\r\n                    className={classNames(\r\n                      \"px-2 border-t border-b font-bold flex-center w-8\"\r\n                    )}\r\n                    style={{\r\n                      color: Utils.formatColor(product.title.color),\r\n                      borderColor: Utils.lighterColor(0.8, product.title.color),\r\n                    }}\r\n                  >\r\n                    {quantity}\r\n                  </div>\r\n                  <button\r\n                    style={{\r\n                      border: \"1px solid\",\r\n                      color: Utils.formatColor(product.title.color),\r\n                      borderColor: Utils.lighterColor(0.8, product.title.color),\r\n                      minWidth: \"unset\",\r\n                    }}\r\n                    className={classNames(\r\n                      \"border flex-center p-1 xs:p-2 bg-transparent\",\r\n                      {\r\n                        \"rounded-l rounded-r-none\": rtl,\r\n                        \"rounded-r rounded-l-none\": !rtl,\r\n                        \"opacity-50 cursor-not-allowed\":\r\n                          quantity + 1 > maxQuantity,\r\n                      }\r\n                    )}\r\n                    disabled={quantity + 1 > maxQuantity}\r\n                    aria-label=\"increase item quantity by one\"\r\n                    onClick={() => updateItem(+1)}\r\n                  >\r\n                    <svg\r\n                      aria-hidden=\"true\"\r\n                      focusable=\"false\"\r\n                      data-icon=\"plus\"\r\n                      style={{ height: 12 }}\r\n                      role=\"img\"\r\n                      xmlns=\"http://www.w3.org/2000/svg\"\r\n                      viewBox=\"0 0 448 512\"\r\n                    >\r\n                      <path\r\n                        fill=\"currentColor\"\r\n                        d=\"M448 294.2v-76.4c0-13.3-10.7-24-24-24H286.2V56c0-13.3-10.7-24-24-24h-76.4c-13.3 0-24 10.7-24 24v137.8H24c-13.3 0-24 10.7-24 24v76.4c0 13.3 10.7 24 24 24h137.8V456c0 13.3 10.7 24 24 24h76.4c13.3 0 24-10.7 24-24V318.2H424c13.3 0 24-10.7 24-24z\"\r\n                      ></path>\r\n                    </svg>\r\n                  </button>\r\n                </div>\r\n              )}\r\n              {soldOut && (\r\n                <div\r\n                  className={classNames(\r\n                    \"item-soldout flex text-red-500 items-center\"\r\n                  )}\r\n                >\r\n                  <svg\r\n                    aria-hidden=\"true\"\r\n                    focusable=\"false\"\r\n                    data-icon=\"ban\"\r\n                    role=\"img\"\r\n                    xmlns=\"http://www.w3.org/2000/svg\"\r\n                    viewBox=\"0 0 512 512\"\r\n                    className={classNames(\"w-4 h-4\", rtl ? \"ml-1\" : \"mr-1\")}\r\n                  >\r\n                    <path\r\n                      fill=\"currentColor\"\r\n                      d=\"M256 8C119.034 8 8 119.033 8 256s111.034 248 248 248 248-111.034 248-248S392.967 8 256 8zm130.108 117.892c65.448 65.448 70 165.481 20.677 235.637L150.47 105.216c70.204-49.356 170.226-44.735 235.638 20.676zM125.892 386.108c-65.448-65.448-70-165.481-20.677-235.637L361.53 406.784c-70.203 49.356-170.226 44.736-235.638-20.676z\"\r\n                    ></path>\r\n                  </svg>\r\n                  <span>Sold out</span>\r\n                </div>\r\n              )}\r\n            </div>\r\n            <div\r\n              className={classNames(\r\n                \"remove-item-container flex items-center hidden\"\r\n              )}\r\n            >\r\n              <button\r\n                className={classNames(\r\n                  \"remove-item border flex-center p-1 xs:p-2 bg-transparent\"\r\n                )}\r\n                onClick={() => {\r\n                  update_cart_item({\r\n                    line,\r\n                    variant_id: id,\r\n                    quantity: 0,\r\n                  });\r\n                }}\r\n              >\r\n                Remove\r\n              </button>\r\n            </div>\r\n          </div>\r\n        </div>\r\n        {subscription &&\r\n          subscription?.isActive &&\r\n          !!plansData &&\r\n          !!plansData.subscriptions && (\r\n            <div\r\n              className={classNames(\"subscription-container mt-2 mb-2 w-full\")}\r\n            >\r\n              {!selectedSellingPlanID ? (\r\n                loadingPlan ? (\r\n                  <div\r\n                    className={classNames(\r\n                      \"subscription-button text-white block m-0 pt-2 pb-2 pl-3 pr-3 w-full leading-5 cursor-pointer shadow-none text-center\"\r\n                    )}\r\n                    data-state=\"upgrading\"\r\n                    style={{\r\n                      fontSize: `${\r\n                        subscription.upgradingText?.font_size ?? 0.8\r\n                      }em`,\r\n                      fontWeight:\r\n                        subscription.upgradingText?.font_weight ?? 500,\r\n                      lineHeight: \"normal\",\r\n                      color: Utils.formatColor(\r\n                        subscription.upgradingText?.color ?? {\r\n                          a: 1,\r\n                          r: 255,\r\n                          g: 255,\r\n                          b: 255,\r\n                        }\r\n                      ),\r\n                      backgroundColor: Utils.formatColor(\r\n                        subscription.loadingBackground ?? {\r\n                          a: 1,\r\n                          r: 153,\r\n                          g: 153,\r\n                          b: 153,\r\n                        }\r\n                      ),\r\n                      border: `1px solid ${Utils.formatColor(\r\n                        subscription.loadingBorder ?? {\r\n                          a: 1,\r\n                          r: 153,\r\n                          g: 153,\r\n                          b: 153,\r\n                        }\r\n                      )}`,\r\n                    }}\r\n                  >\r\n                    <span>{subscription.upgradingText?.text}</span>\r\n                  </div>\r\n                ) : (\r\n                  <button\r\n                    className={classNames(\r\n                      \"subscription-button text-white block m-0 pt-2 pb-2 pl-3 pr-3 w-full leading-5 cursor-pointer shadow-none text-center\"\r\n                    )}\r\n                    onClick={async () => {\r\n                      const labels = Object.keys(plansData.subscriptions);\r\n                      const plans = plansData.subscriptions[labels[0]];\r\n                      const selling_plan_id = plans[0].external_plan_id;\r\n\r\n                      // console.log(\"selling_plan_id:\", selling_plan_id);\r\n                      // console.log(\"upgrading...\");\r\n\r\n                      if (isPreview) {\r\n                        setLoadingPlan(true);\r\n                        return setTimeout(() => {\r\n                          setSelectedSellingPlanID(selling_plan_id);\r\n                          setLoadingPlan(false);\r\n                        }, 1000);\r\n                      }\r\n\r\n                      const updateCartItem = async (retry = false) => {\r\n                        try {\r\n                          const { item, items } = await new Promise(\r\n                            (resolve, reject) => {\r\n                              update_cart_item(\r\n                                {\r\n                                  line,\r\n                                  variant_id: id,\r\n                                  quantity,\r\n                                  selling_plan: selling_plan_id,\r\n                                },\r\n                                (item, items, error) => {\r\n                                  if (error) {\r\n                                    reject(error);\r\n                                  } else {\r\n                                    resolve({ item, items });\r\n                                  }\r\n                                }\r\n                              );\r\n                            }\r\n                          );\r\n\r\n                          // Log the successful upgrade and update state\r\n                          // console.log(\"upgraded successfully\");\r\n                          setSelectedSellingPlanID(selling_plan_id);\r\n\r\n                          // Return the items for further use if needed\r\n                          return { item, items };\r\n                        } catch (error) {\r\n                          console.error(\"An error occurred:\", error);\r\n                          // Retry the update in case of an error if it hasn't retried already\r\n                          if (!retry) {\r\n                            console.log(\"Retrying due to error...\");\r\n                            return await updateCartItem(true);\r\n                          }\r\n                        } finally {\r\n                          setLoadingPlan(false);\r\n                        }\r\n                      };\r\n\r\n                      setLoadingPlan(true);\r\n\r\n                      // Execute the update logic with an initial attempt\r\n                      await updateCartItem();\r\n                    }}\r\n                    style={{\r\n                      backgroundColor: Utils.formatColor(\r\n                        subscription.background\r\n                      ),\r\n                      border: `1px solid ${Utils.formatColor(\r\n                        subscription.border\r\n                      )}`,\r\n                      color: Utils.formatColor(subscription.text.color),\r\n                      fontSize: `${subscription.text.font_size}em`,\r\n                      fontWeight: subscription.text.font_weight,\r\n                      lineHeight: \"normal\",\r\n                    }}\r\n                  >\r\n                    <span>\r\n                      {formatSubsciptionUpgrade(subscription.text.text)}\r\n                    </span>\r\n                  </button>\r\n                )\r\n              ) : loadingPlan ? (\r\n                <div\r\n                  className={classNames(\r\n                    \"subscription-button text-white block m-0 pt-2 pb-2 pl-3 pr-3 w-full leading-5 cursor-pointer shadow-none text-center\"\r\n                  )}\r\n                  data-state=\"downgrading\"\r\n                  style={{\r\n                    fontSize: `${\r\n                      subscription.downgradingText?.font_size ?? 0.8\r\n                    }em`,\r\n                    fontWeight:\r\n                      subscription.downgradingText?.font_weight ?? 500,\r\n                    lineHeight: \"normal\",\r\n                    color: Utils.formatColor(\r\n                      subscription.downgradingText?.color ?? {\r\n                        a: 1,\r\n                        r: 255,\r\n                        g: 255,\r\n                        b: 255,\r\n                      }\r\n                    ),\r\n                    backgroundColor: Utils.formatColor(\r\n                      subscription.loadingBackground ?? {\r\n                        a: 1,\r\n                        r: 153,\r\n                        g: 153,\r\n                        b: 153,\r\n                      }\r\n                    ),\r\n                    border: `1px solid ${Utils.formatColor(\r\n                      subscription.loadingBorder ?? {\r\n                        a: 1,\r\n                        r: 153,\r\n                        g: 153,\r\n                        b: 153,\r\n                      }\r\n                    )}`,\r\n                  }}\r\n                >\r\n                  <span>{subscription.downgradingText?.text}</span>\r\n                </div>\r\n              ) : (\r\n                <select\r\n                  className={classNames(\r\n                    \"subscription-frequency border-gray-200 pt-2 pb-2 pl-3 pr-5 w-full leading-5 shadow-none\"\r\n                  )}\r\n                  style={{\r\n                    backgroundColor: Utils.formatColor(\r\n                      subscription.subscribedBackground ?? {\r\n                        a: 1,\r\n                        r: 255,\r\n                        g: 255,\r\n                        b: 255,\r\n                      }\r\n                    ),\r\n                    border: `1px solid ${Utils.formatColor(\r\n                      subscription.subscribedBorder ?? {\r\n                        a: 1,\r\n                        r: 90,\r\n                        g: 117,\r\n                        b: 248,\r\n                      }\r\n                    )}`,\r\n                    color: Utils.formatColor(\r\n                      subscription.subscribedText?.color ?? {\r\n                        a: 1,\r\n                        r: 90,\r\n                        g: 117,\r\n                        b: 248,\r\n                      }\r\n                    ),\r\n                    fontSize: `${\r\n                      subscription.subscribedText?.font_size ?? 0.8\r\n                    }em`,\r\n                    fontWeight: subscription.subscribedText?.font_weight ?? 500,\r\n                    backgroundImage:\r\n                      \"linear-gradient(45deg, transparent 50%, #ccc 50%), linear-gradient(135deg, #ccc 50%, transparent 50%), linear-gradient(to right, #ccc, #ccc)\",\r\n                    backgroundPosition:\r\n                      \"calc(100% - 15px) calc(13px), calc(100% - 10px) calc(13px), calc(100% - 2.5em) 0.5em\",\r\n                    backgroundSize: \"5px 5px, 5px 5px, 1px 1.5em\",\r\n                    backgroundRepeat: \"no-repeat\",\r\n                    appearance: \"none\",\r\n                    lineHeight: \"normal\",\r\n                  }}\r\n                  value={selectedSellingPlanID}\r\n                  onChange={async (event) => {\r\n                    const value = event.target.value;\r\n                    const selling_plan_id = value !== \"onetime\" ? value : null;\r\n\r\n                    // console.log(\"selling_plan_id:\", selling_plan_id);\r\n\r\n                    if (isPreview) {\r\n                      if (!value || value === \"onetime\") {\r\n                        setLoadingPlan(true);\r\n                      }\r\n                      return setTimeout(() => {\r\n                        setSelectedSellingPlanID(selling_plan_id);\r\n                        setLoadingPlan(false);\r\n                      }, 1000);\r\n                    }\r\n\r\n                    const updateCartItem = async (retry = false) => {\r\n                      try {\r\n                        const { item, items } = await new Promise(\r\n                          (resolve, reject) => {\r\n                            update_cart_item(\r\n                              {\r\n                                line,\r\n                                variant_id: id,\r\n                                quantity,\r\n                                selling_plan: selling_plan_id,\r\n                              },\r\n                              (item, items, error) => {\r\n                                if (error) {\r\n                                  reject(error);\r\n                                } else {\r\n                                  resolve({ item, items });\r\n                                }\r\n                              }\r\n                            );\r\n                          }\r\n                        );\r\n\r\n                        // If successfully updated, log the result and update state\r\n                        // const message =\r\n                        //   value === \"onetime\" ? \"downgraded\" : \"updated\";\r\n                        // console.log(`${message} successfully`);\r\n                        setSelectedSellingPlanID(selling_plan_id);\r\n\r\n                        // Return the items for further use if needed\r\n                        return { item, items };\r\n                      } catch (error) {\r\n                        console.error(\"An error occurred:\", error);\r\n                        // Retry the update in case of an error if it hasn't retried already\r\n                        if (!retry) {\r\n                          console.log(\"Retrying due to error...\");\r\n                          return await updateCartItem(true);\r\n                        }\r\n                      } finally {\r\n                        setLoadingPlan(false);\r\n                      }\r\n                    };\r\n\r\n                    if (!value || value === \"onetime\") {\r\n                      setLoadingPlan(true);\r\n                    }\r\n\r\n                    // Execute the update logic with an initial attempt\r\n                    await updateCartItem();\r\n                  }}\r\n                >\r\n                  {/* One-time purchase option */}\r\n                  {plansData.onetime.length > 0 && (\r\n                    <optgroup label=\"Pay Full Price\">\r\n                      {plansData.onetime.map((plan) => (\r\n                        <option key={plan.id} value=\"onetime\">\r\n                          One-time only\r\n                        </option>\r\n                      ))}\r\n                    </optgroup>\r\n                  )}\r\n\r\n                  {/* Subscription options grouped by discount */}\r\n                  {Object.keys(plansData.subscriptions).map((groupLabel) => (\r\n                    <optgroup key={groupLabel} label={groupLabel}>\r\n                      {plansData.subscriptions[groupLabel].map((plan) => (\r\n                        <option\r\n                          key={plan.external_plan_id}\r\n                          value={plan.external_plan_id}\r\n                        >\r\n                          {formatSubsciptionUpgrade(\r\n                            subscription.subscribedText?.text ??\r\n                              \"{{selling_plan_name}}\",\r\n                            groupLabel,\r\n                            plan.external_plan_name\r\n                          )}\r\n                        </option>\r\n                      ))}\r\n                    </optgroup>\r\n                  ))}\r\n                </select>\r\n              )}\r\n            </div>\r\n          )}\r\n        {!!bundles && !soldOut && !discountCode && !hasAutoDiscount && (\r\n          <Bundles\r\n            id={id}\r\n            line={line}\r\n            key={id}\r\n            bundles={bundles}\r\n            soldOut={{\r\n              get: soldOut,\r\n              set: (v) => setSoldOut(v),\r\n            }}\r\n            maxQuantity={{\r\n              get: maxQuantity,\r\n              set: (v) => setMaxQuantity(v),\r\n            }}\r\n            itemQuantity={quantity}\r\n          />\r\n        )}\r\n      </div>\r\n    );\r\n};\r\n\r\nexport default CartItemsList;\r\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"header\":\"items_list_header__2hYjr\",\"item\":\"items_list_item__2KlM7\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"EmptyState\":\"empty_state_EmptyState__39alv\",\"illustration\":\"empty_state_illustration__2YW3A\",\"details\":\"empty_state_details__1aWkY\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"qte\":\"sticky_cart_feature_preview_qte__p8EnI\",\"label\":\"sticky_cart_feature_preview_label__viS5u\",\"minus\":\"sticky_cart_feature_preview_minus__CwXR6\",\"map_select_containar\":\"sticky_cart_feature_preview_map_select_containar__dxw_Z\",\"map_select\":\"sticky_cart_feature_preview_map_select__1AuCw\",\"list\":\"sticky_cart_feature_preview_list__2Rq3o\",\"option\":\"sticky_cart_feature_preview_option__3fSRX\",\"focus\":\"sticky_cart_feature_preview_focus__2VmCf\",\"selected\":\"sticky_cart_feature_preview_selected__38qJJ\",\"disabled\":\"sticky_cart_feature_preview_disabled__ptUFw\",\"current\":\"sticky_cart_feature_preview_current__3ziWG\",\"desktopStickyCartContainar\":\"sticky_cart_feature_preview_desktopStickyCartContainar__2P6VA\",\"curvy\":\"sticky_cart_feature_preview_curvy__AdioQ\",\"atc\":\"sticky_cart_feature_preview_atc__1FI3o\",\"image\":\"sticky_cart_feature_preview_image__1db5T\",\"detailsSection\":\"sticky_cart_feature_preview_detailsSection__NfdTv\",\"details\":\"sticky_cart_feature_preview_details__3EkjT\",\"price\":\"sticky_cart_feature_preview_price__2Yzl8\",\"oldPrice\":\"sticky_cart_feature_preview_oldPrice__lTwcV\",\"title\":\"sticky_cart_feature_preview_title__3JulC\",\"actionsSection\":\"sticky_cart_feature_preview_actionsSection__kyg7B\",\"input\":\"sticky_cart_feature_preview_input__PDySe\",\"dropdown\":\"sticky_cart_feature_preview_dropdown__61Xd-\",\"background\":\"sticky_cart_feature_preview_background__3mROG\",\"mobileStickyCartContainar\":\"sticky_cart_feature_preview_mobileStickyCartContainar__1qok8\",\"infos\":\"sticky_cart_feature_preview_infos__2kR1S\",\"cart\":\"sticky_cart_feature_preview_cart__3dHfD\",\"header\":\"sticky_cart_feature_preview_header__3EUXV\",\"txt\":\"sticky_cart_feature_preview_txt__zfsQu\",\"close\":\"sticky_cart_feature_preview_close__18EVx\",\"body\":\"sticky_cart_feature_preview_body__1_lQN\",\"row\":\"sticky_cart_feature_preview_row__3ZKn5\"};","import Api from './Api';\r\nimport pSBC from 'shade-blend-color';\r\nimport getCampaign from 'hooks/useCampaign';\r\nimport { rgbaToHex } from 'hex-and-rgba';\r\nimport Decimal from 'decimal.js';\r\nimport { log } from 'xstate/lib/actions';\r\nimport { API_GATEWAY_NEW } from 'aws-exports';\r\nimport Axios from 'axios';\r\n// import ISO6391 from \"iso-639-1\";\r\n\r\nexport const get_product_by_handle = (shop_url, product_handle) =>\r\n    Api.get(`https://${shop_url}/products/${product_handle}.json?fields=variants`);\r\n\r\nexport const getGoal = ({ oldGoal, specific_goals, byQuantity, inCents = false }) => {\r\n    const cents = inCents ? 100 : 1;\r\n    const rate = window.Shopify?.currency?.rate ?? 1;\r\n    const multiplier = (value) =>\r\n      value *\r\n      (byQuantity || Number(rate) * cents);\r\n    if (!specific_goals) return oldGoal ? multiplier(oldGoal) : 0;\r\n    const goal = specific_goals.find(\r\n        ({ currency }) => currency === window.Shopify.currency.active\r\n    )?.goal;\r\n    if (goal) return inCents ? goal * 100 : goal;\r\n    return multiplier(specific_goals.find(({ main }) => main === true).goal);\r\n};\r\n\r\nconst formHasFile = (formData, variant_id) => {\r\n    let hasFile = false;\r\n\r\n    if (!formData) {\r\n        return false;\r\n    }\r\n    const entriesIsFunction = typeof formData.entries === 'function';\r\n\r\n    const getEntries = () => (entriesIsFunction ? formData.entries() : formData.entries);\r\n    for (const [name, type] of getEntries()) {\r\n        if (type instanceof File) {\r\n            hasFile = true;\r\n            window.mu_form_files[variant_id] = [\r\n                ...new Set(\r\n                    (window.mu_form_files[variant_id] || []).concat([\r\n                        name.replace('properties[', '').replace(']', '')\r\n                    ])\r\n                )\r\n            ];\r\n            // localStorage.setItem(\r\n            //   \"mu_form_files\",\r\n            //   JSON.stringify(window.mu_form_files)\r\n            // );\r\n        }\r\n    }\r\n    return hasFile;\r\n};\r\n\r\nexport function getLangPath(path) {\r\n    const { origin } = window.location;\r\n    let langPath = '/';\r\n    // const pathArray = window.location.pathname.replace(/^\\//, \"\").split(\"/\");\r\n    if (window.Shopify?.routes?.root) {\r\n        langPath = window.Shopify.routes.root;\r\n    }\r\n    // else if (pathArray.length && ISO6391.validate(pathArray[0])) {\r\n    //   langPath = `/${pathArray[0]}/`;\r\n    // }\r\n    return `${origin}${langPath}${path}`;\r\n}\r\n\r\nexport function GetCartLevelAutoDiscount({ cart_level_discount_applications = [] }, types = ['automatic', '']) {\r\n    const discount = cart_level_discount_applications?.find((discount) =>{\r\n        if(discount.discount_application){\r\n            discount = discount.discount_application\r\n        }\r\n        const {type,total_allocated_amount} = discount\r\n        return types.includes(type) && total_allocated_amount > 0\r\n    });\r\n    if(!discount) return  undefined\r\n    return discount.discount_application || discount\r\n}\r\n\r\nexport function GetDiscountFromCheckoutPage(serializedGraphqlString) {\r\n    try {\r\n        const ParsedGraphql = JSON.parse(serializedGraphqlString);\r\n        for (let key in ParsedGraphql)\r\n            if (ParsedGraphql[key]?.session?.negotiate?.result?.sellerProposal) {\r\n                const result = ParsedGraphql[key].session.negotiate.result;\r\n                const errorMessage =\r\n                    ParsedGraphql[key].session.negotiate.errors.find(\r\n                        (error) => 'DISCOUNTS_NOT_FOUND' === error.code\r\n                    )?.localizedMessage || null;\r\n                const { subtotalBeforeReductions, runningTotal, merchandiseDiscount } = result.sellerProposal;\r\n                const discountCode = merchandiseDiscount?.lines[0]?.discount?.code;\r\n                const OriginalTotal = new Decimal(subtotalBeforeReductions.value.amount)\r\n                    .mul(100)\r\n                    .toNumber();\r\n                const NewTotal = new Decimal(runningTotal.value.amount).mul(100).toNumber();\r\n                const discountValue = new Decimal(OriginalTotal).minus(NewTotal).toNumber();\r\n                return {\r\n                  errorMessage,\r\n                  discountValue,\r\n                  discountCode\r\n                };\r\n            }\r\n    } catch (error) {\r\n        console.log(error);\r\n    }\r\n}\r\n\r\nexport function CartHasAutoDiscount(cart) {\r\n    const hasItemLevelAutoDiscount = cart.items.some(\r\n        ({ discounts, line_level_discount_allocations }) => {\r\n            const hasDiscount = !!discounts?.length;\r\n            if (!hasDiscount) return false;\r\n            const hasAutoDiscount = line_level_discount_allocations?.find(\r\n                ({ discount_application }) => ['automatic', ''].includes(discount_application?.type)\r\n            );\r\n            return !!hasAutoDiscount;\r\n        }\r\n    );\r\n    const hasCartLevelAutoDiscount = cart.cart_level_discount_applications?.some((discount) =>\r\n        ['automatic', ''].includes(discount?.type)\r\n    );\r\n    return hasItemLevelAutoDiscount || hasCartLevelAutoDiscount;\r\n}\r\n\r\nexport function getCartLink() {\r\n    return getLangPath(window.mu_use_cart_json ? 'cart.json' : 'cart.js');\r\n}\r\n\r\nexport const addToCart = (\r\n    {\r\n        variant_id,\r\n        quantity,\r\n        properties,\r\n        selling_plan,\r\n        currency,\r\n        // props below are required for preview\r\n        isPreview = false,\r\n        shop_url = null,\r\n        product_handle = null,\r\n        product = null\r\n    },\r\n    formData\r\n) => {\r\n    if (Array.isArray(selling_plan)) {\r\n        selling_plan = selling_plan[0];\r\n    }\r\n    else if (typeof selling_plan === 'string'){\r\n        selling_plan = Number.isNaN(parseInt(selling_plan)) ? undefined : parseInt(selling_plan);\r\n    }\r\n    const hasFile = formHasFile(formData, variant_id);\r\n    if (isPreview) {\r\n        variant_id = parseVariantId(variant_id);\r\n        if (product) {\r\n            const { id, image, title: product_title, variants } = product;\r\n            const variant = variants.find(({ id }) => id === variant_id);\r\n            const price = parseFloat((parseFloat(variant.price) * 100).toFixed(0));\r\n            return Promise.resolve({\r\n                ...variant,\r\n                price,\r\n                product_title,\r\n                product_id: parseInt(id),\r\n                image,\r\n                quantity\r\n            });\r\n        }\r\n        return new Promise((resolve, reject) => {\r\n            get_product_by_handle(shop_url, product_handle)\r\n                .then(({ data }) => {\r\n                    const { variants, title, images } = data.product;\r\n                    const variant = variants.find(({ id }) => id === parseInt(variant_id));\r\n                    const image = variant.image_id\r\n                        ? images.find(({ id }) => variant.image_id).src\r\n                        : data.product.image.src;\r\n                    const price = parseFloat((parseFloat(variant.price) * 100).toFixed(0));\r\n                    resolve({ ...variant, price, product_title: title, image, quantity });\r\n                })\r\n                .catch(reject);\r\n        });\r\n    } else {\r\n        if (Array.isArray(variant_id)) {\r\n            variant_id = variant_id.map(parseVariantId).filter((singleId) => !isNaN(singleId));\r\n            if (variant_id.length == 1) variant_id = variant_id[0];\r\n\r\n            if (variant_id.length == 0) return;\r\n        }\r\n        variant_id = parseVariantId(variant_id);\r\n        return new Promise((resolve, reject) => {\r\n            Api.post(\r\n                getLangPath(`cart/add.js?m=true&shop=${window.Shopify.shop}`),\r\n                hasFile\r\n                    ? formData\r\n                    : Array.isArray(variant_id)\r\n                    ? {\r\n                          items: variant_id.map((singleId) => ({\r\n                              quantity,\r\n                              id: parseVariantId(singleId)\r\n                          }))\r\n                      }\r\n                    : {\r\n                          quantity,\r\n                          id: parseVariantId(variant_id),\r\n                          properties,\r\n                          selling_plan\r\n                      }\r\n            )\r\n                .then(({ data }) => {\r\n                    if (window.ttq && !window.mu_disable_tiktok_tracking) {\r\n                        window.ttq.track('AddToCart', {\r\n                            contents: [\r\n                                {\r\n                                    content_type: 'product',\r\n                                    content_name: data.title,\r\n                                    content_id: data.product_id,\r\n                                    quantity: data.quantity,\r\n                                    price: data.price / 100\r\n                                }\r\n                            ],\r\n                            value: data.price / 100,\r\n                            currency\r\n                        });\r\n                    }\r\n\r\n                    Api.get(getCartLink()).then(({ data }) => {\r\n                        resolve(data);\r\n                    });\r\n                })\r\n                .catch(reject);\r\n        });\r\n    }\r\n};\r\n\r\nexport const findItem = ({ line, items, variant_id }) => {\r\n    return items.find(({ variant_id: id }, index) =>\r\n        line ? line === index + 1 : id ? id.toString() == variant_id.toString() : false\r\n    );\r\n};\r\n\r\nexport const updateCartItem = ({\r\n    variant_id,\r\n    line,\r\n    quantity,\r\n    properties,\r\n    selling_plan,\r\n    isPreview = false,\r\n    state = null\r\n}) => {\r\n    if (Array.isArray(selling_plan)) {\r\n        selling_plan = selling_plan[0];\r\n    }\r\n    if (isPreview) {\r\n        if (quantity === 0 && state.items.length === 1) {\r\n            return Promise.resolve(state.items);\r\n        }\r\n        const stateCopy = { ...state };\r\n        const newItems = stateCopy.items.map((item) => {\r\n            if (item.id === variant_id) {\r\n                return { ...item, quantity };\r\n            }\r\n            return item;\r\n        });\r\n        return Promise.resolve(newItems.filter(({ quantity }) => quantity > 0));\r\n    } else {\r\n        return new Promise((resolve, reject) => {\r\n            Api.post(getLangPath(`cart/change.js?m=true&shop=${window.Shopify.shop}`), {\r\n                quantity,\r\n                properties,\r\n                selling_plan,\r\n                id: line ? undefined : parseVariantId(variant_id).toString(),\r\n                line\r\n            })\r\n                .then(({ data }) => {\r\n                    const { items, cart_level_discount_applications } = {\r\n                      ...data,\r\n                      items: data.items.map((item) => ({\r\n                        ...item,\r\n                        // price: item.line_price ? (item.line_price / item.quantity):item.price,\r\n                        // original_price: item.original_line_price ? (item.original_line_price / item.quantity) : item.original_price\r\n                      })),\r\n                    };\r\n                    resolve({ items, cart_level_discount_applications });\r\n                })\r\n\r\n                .catch(reject);\r\n        });\r\n    }\r\n};\r\n\r\nexport const getBundleDiscount = ({ reward, type }, quantity, price, money_format) => {\r\n    quantity = parseInt(quantity);\r\n    reward = parseFloat(reward);\r\n    const discounted = calculateDiscount({\r\n        type,\r\n        reward,\r\n        total: price * quantity\r\n    });\r\n    return {\r\n        plain: price * quantity - discounted,\r\n        formatted: formatMoney(price * quantity - discounted, money_format),\r\n        discounted\r\n    };\r\n};\r\n\r\nexport const sortByProp = (prop, order = 'desc') => {\r\n    return (array) => {\r\n        return [...array].sort(function (a, b) {\r\n            var x = a[prop];\r\n            var y = b[prop];\r\n            if (order === 'desc') {\r\n                return x > y ? -1 : x < y ? 1 : 0;\r\n            } else {\r\n                return y > x ? -1 : y < x ? 1 : 0;\r\n            }\r\n        });\r\n    };\r\n};\r\n\r\nexport const sortByQuantity = sortByProp('quantity');\r\n\r\nexport const isMobile = () => {\r\n    const a = navigator.userAgent || navigator.vendor || window.opera;\r\n    return (\r\n        /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(\r\n            a\r\n        ) ||\r\n        /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(\r\n            a.substr(0, 4)\r\n        )\r\n    );\r\n};\r\n\r\nexport const calculateDiscount = ({ reward, type, total }) => {\r\n    switch (type) {\r\n        case 'fixed_amount':\r\n            return Math.abs(reward) * 100 * Number(window.Shopify.currency.rate);\r\n        case 'percentage':\r\n            return Math.floor((total * Math.abs(reward)) / 100);\r\n        default:\r\n            return 0;\r\n    }\r\n};\r\n\r\nexport function formatWithDelimiters(number, precision = 2, thousands = ',', decimal = '.', noMarketsRounding = false) {\r\n    if (isNaN(number) || number == null) {\r\n        return 0;\r\n    }\r\n\r\n    number = number / 100.0;\r\n    if (window.mu_market_rounding && !noMarketsRounding) number = Math.ceil(number);\r\n    number = number.toFixed(precision);\r\n\r\n    const parts = number.split('.');\r\n    const dollars = parts[0].replace(/(\\d)(?=(\\d\\d\\d)+(?!\\d))/g, '$1' + thousands);\r\n    const cents = parts[1] ? decimal + parts[1] : '';\r\n    return dollars + cents;\r\n}\r\n\r\nexport const formatMoney = (n, money_format = '${{amount}}', formatter = formatWithDelimiters) => {\r\n    const formattedMoney = money_format\r\n    .replace(/{{\\s*?amount\\s*?}}/g, formatter(n, 2))\r\n    .replace(/{{\\s*?amount_with_decimal_separator\\s*?}}/g, formatter(n, 2))\r\n    .replace(/{{\\s*?amount_no_decimals\\s*?}}/g, formatter(n, 0))\r\n    .replace(/{{\\s*?amount_with_comma_separator\\s*?}}/g, formatter(n, 2, '.', ','))\r\n    .replace(/{{\\s*?amount_no_decimals_with_comma_separator\\s*?}}/g, formatter(n, 0, '.', ','))\r\n    .replace(/{{\\s*?amount_with_apostrophe_separator\\s*? }}/g, formatter(n, 2, \"'\", '.'));\r\n    return window.mu_after_format_money\r\n      ? window.mu_after_format_money(formattedMoney)\r\n      : formattedMoney;\r\n}\r\n\r\nexport const logError = (error) => {\r\n    //log errors to bugSnag\r\n    console.log('Monster error:', error);\r\n};\r\n\r\nexport function getVariantPrice({ isPreview, cart_currency, variant, plansData }) {\r\n    if(plansData) {\r\n        const selected_variant = plansData.variants?.find((v) => v.id === variant.id);\r\n        if(selected_variant) {\r\n            const subscription_first =\r\n            selected_variant.requires_selling_plan || window.mu_fbt_sub_first;\r\n            const { selling_plan_allocations } = selected_variant;\r\n            const price = selling_plan_allocations?.[0]?.price;\r\n            if (subscription_first && price) {\r\n                return window.mu_market_rounding\r\n                  ? Math.ceil(price / 100)\r\n                  : price / 100;\r\n            }\r\n        }\r\n    }\r\n    const activeCurrency = isPreview ? cart_currency : window.Shopify.currency.active;\r\n    const rate = isPreview || window.mu_stop_shopify_rate ? 1 : Number(window.Shopify.currency.rate);\r\n    \r\n    let unformattedPrice;\r\n\r\n    const presentmentPrices = variant?.presentmentPrices || variant?.presentment_prices;\r\n\r\n    if (Array.isArray(presentmentPrices)) {\r\n        const foundPrice = presentmentPrices.find(\r\n        ({ price }) => price.currency_code == activeCurrency\r\n        );\r\n        unformattedPrice = foundPrice ? Number(foundPrice.price.amount) : Number(variant.price) * rate;\r\n    } else {\r\n        unformattedPrice = presentmentPrices && presentmentPrices[activeCurrency]\r\n        ? Number(presentmentPrices[activeCurrency].price)\r\n        : Number(variant.price) * rate;\r\n    }\r\n    if (window.mu_stop_presentment) {\r\n        unformattedPrice = Number(variant.price) * rate;\r\n    } else {\r\n        unformattedPrice = Number(unformattedPrice.toFixed(2));\r\n    }\r\n    \r\n    return window.mu_market_rounding ? Math.ceil(unformattedPrice) : unformattedPrice;\r\n}\r\n\r\n\r\nexport const getAddedGifts = ({ goal, productAddedToCart }) => {\r\n    let { products, product } = goal.gift;\r\n    if (!products) {\r\n        products = product ? [{ variants: [{ id: product.variant_id }] }] : [];\r\n    }\r\n    return products\r\n        .map(({ variants }) => variants)\r\n        .flat()\r\n        .filter((variant) => productAddedToCart(variant, true));\r\n};\r\n\r\nexport const productHasOneVariant = (product) => {\r\n    const { variants } = product;\r\n    return variants.length === 1;\r\n    // return options.every(({ values }) => values.length === 1);\r\n};\r\n\r\nexport const variantIsOnStock = (variant) => {\r\n    const { inventory_management, inventory_quantity, inventory_policy } = variant;\r\n    return inventory_management && inventory_policy === 'deny' ? inventory_quantity >= 1 : true;\r\n};\r\n\r\nexport const getMaxQuantity = (variant) => {\r\n    const { inventory_management, inventory_quantity, inventory_policy } = variant;\r\n    return inventory_management && inventory_policy === 'deny' ? inventory_quantity  : Infinity;\r\n}\r\n\r\nexport const parseProductId = (string) => {\r\n    // example gid://shopify/ProductVariant/19566771404862\r\n    const pattern = new RegExp('gid://shopify/Product/([0-9]+)$');\r\n    if (pattern.test(string)) return parseInt(string.match(pattern)[1]);  \r\n    return string;\r\n};\r\n\r\nexport const parseVariantId = (string) => {\r\n    // example gid://shopify/ProductVariant/19566771404862\r\n    const pattern = new RegExp('gid://shopify/ProductVariant/([0-9]+)$');\r\n    if (pattern.test(string)) return parseInt(string.match(pattern)[1]);\r\n    return string;\r\n};\r\n\r\nconst add = (x, y) => x + y;\r\n\r\nexport const getTotal = (items, products=[]) => {\r\n  const initialValue = window.mu_shipProtectSelected\r\n    ? window.mu_shipProtectPrice\r\n    : 0;\r\n  // console.log(initialValue,  window.mu_shipProtectSelected , window.mu_shipProtectPrice);\r\n  return items.length\r\n    ? items\r\n        .filter(\r\n          ({ product_type, price }) =>\r\n            !(\r\n              [\"free_gift\", \"singleton_gift\"].includes(\r\n                product_type?.toLowerCase()\r\n              ) && price === 0\r\n            )\r\n        )\r\n        .map(\r\n          ({\r\n            product_id,\r\n            variant_id,\r\n            price,\r\n            quantity,\r\n            selling_plan_allocation,\r\n          }) => {\r\n            const selectedProduct = products.find(({ id }) => id == product_id);\r\n            const selectedVariant = selectedProduct?.variants?.find(\r\n              ({ id }) => id == variant_id\r\n            );\r\n\r\n            const itemPrice =\r\n              selectedVariant && !selling_plan_allocation\r\n                ? Number(selectedVariant.price) * 100\r\n                : price;\r\n\r\n            return itemPrice * quantity;\r\n          }\r\n        )\r\n        .reduce(add, initialValue)\r\n    : initialValue;\r\n};\r\n\r\nexport function sortBundles(bundles) {\r\n    return [...bundles].sort((a, b) => a.quantity - b.quantity);\r\n}\r\nexport function BundlesIndexMap(bundles) {\r\n    return [...bundles].reduce((acc, cur, index) => {\r\n        const { quantity } = cur;\r\n        const next = bundles[index + 1];\r\n        const quantityDeference = next ? next.quantity - quantity : 1;\r\n        acc[quantity] = index;\r\n        if (quantityDeference > 1) {\r\n            for (let i = 1; i < quantityDeference; i++) {\r\n                acc[quantity + i] = index;\r\n            }\r\n        }\r\n        return acc;\r\n    }, {});\r\n}\r\n\r\nexport const extractContent = (s) => {\r\n    var span = document.createElement('span');\r\n    span.innerHTML = s;\r\n    return span.textContent || span.innerText;\r\n};\r\nexport const getCompareAtDiscount = ({ filteredItems, compareAtMap, products }) => {\r\n    const compareAtDiscount = [...filteredItems.filter((item) => !window.mu_exclude_free_gift_price || item.product_type != \"free_gift\")].reduce((acc, { product_id, variant_id, price, quantity }) => {\r\n        const selectedVariant = products?.find(({ id }) => id == product_id)?.variants?.find(({ id }) => id == variant_id);\r\n        let rate = window.mu_stop_shopify_rate ? 1 : parseFloat(window.Shopify.currency.rate);\r\n        let compare_at = selectedVariant ? Number(selectedVariant.compare_at_price)*100 : (compareAtMap && compareAtMap[variant_id] !== price && compareAtMap[variant_id]);\r\n        compare_at = window.mu_market_rounding ? Math.ceil(\r\n            compare_at\r\n            ): compare_at;\r\n            if (!compare_at) return acc;\r\n        if (window.mu_handle_compareAt) compare_at = window.mu_handle_compareAt(variant_id, quantity, price, compare_at);\r\n        const discount = new Decimal(compare_at).minus(price).times(quantity).toNumber();\r\n        return acc + discount;\r\n    }, 0);\r\n    return compareAtDiscount;\r\n};\r\n\r\nexport function GetCartLineItemDiscount(item, checkAgainst = ['automatic', '']) {\r\n    return item.line_level_discount_allocations?.filter(({ discount_application }) =>\r\n            checkAgainst.includes(discount_application?.type)\r\n        ).reduce((acc, { amount }) => acc + amount, 0);\r\n}\r\n\r\nexport function FilterAtuGoals(goals, hasAutoDiscount) {\r\n    return hasAutoDiscount ? goals.filter(({ reward_type }) => reward_type !== 'discount') : goals;\r\n}\r\n\r\nfunction itemHasAutoDiscount({ discounted_price, price }) {\r\n    return discounted_price !== price;\r\n}\r\n\r\nexport function GetPresentableItemsList(items) {\r\n    const reversedItems = [...items].reverse();\r\n \r\n    return reversedItems.reduce((acc, item, index) => {\r\n        const line = items.length - index;\r\n        const existingItemIndex = acc.findIndex(\r\n            ({ variant_id, selling_plan_allocation, properties }) =>\r\n                variant_id === item.variant_id &&\r\n                selling_plan_allocation === item.selling_plan_allocation &&\r\n                properties === item.properties\r\n        );\r\n        if (existingItemIndex === -1) {\r\n            return acc.concat([{ ...item, line }]);\r\n        }\r\n        const existingItem = acc[existingItemIndex];\r\n        // const oneItemIsAGift = [existingItem, item].some(isAutoDiscountGift)\r\n        const oneItemHasADiscount = [existingItem, item].some(itemHasAutoDiscount);\r\n        if (oneItemHasADiscount) {\r\n            return acc.concat([{ ...item, line }]);\r\n        }\r\n        acc[existingItemIndex] = Object.assign({}, existingItem, {\r\n            // price: existingItem.price + item.price,\r\n            discounted_price: existingItem.discounted_price + item.discounted_price,\r\n            quantity: existingItem.quantity + item.quantity,\r\n            line_quantity: item.quantity,\r\n            line\r\n        });\r\n        return acc;\r\n    }, []);\r\n}\r\n\r\nexport function getAutoDiscounts({items,cart_level_discount_applications = []}) {\r\n        // look for automatic discounts\r\n    const ItemLevelAutoDiscount = items.map(i => GetCartLineItemDiscount(i)).reduce((a, b) => a + b, 0);\r\n    const CartLevelAutoDiscount = GetCartLevelAutoDiscount({cart_level_discount_applications}, ['automatic', ''])?.total_allocated_amount || 0;\r\n    return {\r\n        ItemLevelAutoDiscount,\r\n        CartLevelAutoDiscount,\r\n        totalAutoDiscount: ItemLevelAutoDiscount + CartLevelAutoDiscount\r\n    }\r\n}\r\n\r\nexport const getDiscount = ({\r\n    campaigns,\r\n    items,\r\n    cart_level_discount_applications = [],\r\n    total,\r\n    filteredItems,\r\n    filteredItemsTotal,\r\n    discountCode,\r\n    getBundlesOnly = false\r\n}) => {\r\n    // const ItemLevelTotalDiscount = discountCode?.value ? 0 : window.mu_use_new_discount_calculation ? items.map( i => GetCartLineItemDiscount(i, ['discount_code'])).reduce((a, b) => a + b, 0) : items.reduce((total, item) => {\r\n    //   return total + (item.total_discount || 0);\r\n    // }, 0);\r\n    const ItemLevelTotalDiscount = window.mu_use_new_discount_calculation ? items.map( i => GetCartLineItemDiscount(i, ['discount_code'])).reduce((a, b) => a + b, 0) : items.reduce((total, item) => {\r\n      return total + (item.total_discount || 0);\r\n    }, 0);\r\n    // const CartLevelDiscountCode = GetCartLevelAutoDiscount({cart_level_discount_applications}, ['discount_code'])?.totalAutoDiscount || discountCode?.value || 0;\r\n    const CartLevelDiscountCode = GetCartLevelAutoDiscount({cart_level_discount_applications}, ['discount_code'])?.totalAutoDiscount || 0;\r\n    // look for automatic discounts\r\n    const { ItemLevelAutoDiscount, CartLevelAutoDiscount, totalAutoDiscount } = getAutoDiscounts({items,cart_level_discount_applications})\r\n\r\n    const totalAppliedDiscounts = items.reduce((total, { discounts = [] }) => {\r\n      return total + discounts.reduce((acc, discount) => acc + discount.amount, 0);\r\n    }, 0);\r\n\r\n    if(window.mu_use_totalAppliedDiscounts && totalAppliedDiscounts) return totalAppliedDiscounts;\r\n    \r\n    if ((CartLevelDiscountCode || ItemLevelTotalDiscount) && !totalAutoDiscount) {\r\n        return CartLevelDiscountCode + ItemLevelTotalDiscount\r\n    }\r\n    else if (totalAutoDiscount)\r\n        return totalAutoDiscount + (CartLevelDiscountCode || 0) + (window.mu_use_new_discount_calculation ? ItemLevelTotalDiscount || 0 : 0);\r\n    if (!campaigns || !Object.keys(campaigns).length) return ItemLevelTotalDiscount;\r\n    const calculatedCampaignsTypes = [];\r\n    const countedBundles = []\r\n    const bundlesDiscounts = [...items].reverse().reduce((acc, item) => {\r\n        const {  product_id } = item;\r\n        const product_bundles_campaign = (campaigns[product_id] || []).find(\r\n            ({ type }) => type === 'bundles'\r\n        );\r\n        if (product_bundles_campaign && !countedBundles.includes(product_id)) {\r\n            countedBundles.push(product_id)\r\n            const { bundles } = product_bundles_campaign;\r\n            const productItems = items.filter(i => i.product_id === product_id);\r\n            const quantity = productItems.reduce((acc,{quantity}) => acc + quantity, 0)\r\n            const productTotal = productItems.reduce((acc,{price, quantity}) => acc + (price * quantity), 0)\r\n            // const item = items.find((item) => item.product_id === product_id);\r\n            // if (!item) return 0;\r\n            const bundlesIndexMap = BundlesIndexMap(sortBundles(bundles.list));\r\n            const maxQuantity = Math.max(...Object.keys(bundlesIndexMap).map(Number));\r\n            let selectedBundle = bundlesIndexMap[quantity];\r\n            if (selectedBundle === undefined && quantity > maxQuantity) {\r\n                selectedBundle = bundlesIndexMap[maxQuantity];\r\n            }\r\n            const bundle = bundles.list[selectedBundle];\r\n            const bundles_discount = bundle ? calculateReward(bundle, productTotal) : 0;\r\n            acc += bundles_discount;\r\n        }\r\n        return acc;\r\n    }, 0);\r\n    if (getBundlesOnly) return bundlesDiscounts;\r\n    const [add_to_unlock_product_id, add_to_unlock] = getCampaign('add_to_unlock')(\r\n        campaigns,\r\n        items\r\n    );\r\n    let atuDiscount = 0;\r\n    const totalWithBundlesDiscount = filteredItemsTotal - bundlesDiscounts;\r\n    const quantityCount = filteredItems.reduce((acc, cur) => {\r\n        return acc + Number(cur.quantity);\r\n    }, 0);\r\n    if (add_to_unlock && add_to_unlock?.isActive) {\r\n        const discounts = add_to_unlock.goals.filter(\r\n            ({ reward_type, goal: oldGoal, specific_goals }) => {\r\n                const goal = getGoal({\r\n                    oldGoal,\r\n                    specific_goals,\r\n                    byQuantity: add_to_unlock.multi_goal_type === 'quantity'\r\n                });\r\n                let unlocked = false;\r\n                if (add_to_unlock.multi_goal_type === 'amount') {\r\n                    unlocked = totalWithBundlesDiscount >= goal * 100;\r\n                } else if (add_to_unlock.multi_goal_type === 'quantity') {\r\n                    unlocked = quantityCount >= goal;\r\n                }\r\n                return reward_type === 'discount' && unlocked;\r\n            }\r\n        );\r\n        atuDiscount = discounts.reduce((acc, cur) => {\r\n            const add_to_unlock_discount = calculateReward(cur.discount, totalWithBundlesDiscount);\r\n            if (add_to_unlock_discount > acc) {\r\n                acc = add_to_unlock_discount;\r\n            }\r\n            return acc;\r\n        }, 0);\r\n    }\r\n    return bundlesDiscounts + (window.round_atuDiscount\r\n      ? Math.round(atuDiscount/100)*100\r\n      : atuDiscount);\r\n};\r\n\r\nexport const getModules = (campaign, cart_settings) => {\r\n    return campaign ? campaign.settings.modules : cart_settings.modules;\r\n};\r\n\r\nconst calculateReward = ({ type, reward }, total) => {\r\n    return Math.floor(calculateDiscount({ reward, type, total }));\r\n};\r\n\r\nconst percentage = (partialValue, totalValue) => {\r\n    return Math.floor((totalValue / 100) * partialValue);\r\n};\r\n\r\nconst lightOrDark = (color) => {\r\n    color = formatColor(color);\r\n    var r, g, b, hsp;\r\n    if (color.match(/^rgb/)) {\r\n        color = color.match(/^rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)(?:,\\s*(\\d+(?:\\.\\d+)?))?\\)$/);\r\n        r = color[1];\r\n        g = color[2];\r\n        b = color[3];\r\n    } else {\r\n        color = +('0x' + color.slice(1).replace(color.length < 5 && /./g, '$&$&'));\r\n        r = color >> 16;\r\n        g = (color >> 8) & 255;\r\n        b = color & 255;\r\n    }\r\n    hsp = Math.sqrt(0.299 * (r * r) + 0.587 * (g * g) + 0.114 * (b * b));\r\n    return hsp > 127.5 ? 'light' : 'dark';\r\n};\r\n\r\nexport const formatColor = (color, alpha = null) =>\r\n    !!color\r\n        ? typeof color === 'string'\r\n            ? color\r\n            : `rgba(${color?.r},${color?.g},${color?.b},${alpha || color?.a})`\r\n        : undefined;\r\n\r\nexport function formatColorHex(color) {\r\n    const { r, g, b } = color;\r\n    return rgbaToHex(r, g, b);\r\n}\r\n\r\nexport function RGBToHex(r, g, b) {\r\n    r = r.toString(16);\r\n    g = g.toString(16);\r\n    b = b.toString(16);\r\n\r\n    if (r.length == 1) r = '0' + r;\r\n    if (g.length == 1) g = '0' + g;\r\n    if (b.length == 1) b = '0' + b;\r\n\r\n    return '#' + r + g + b;\r\n}\r\nexport const colorAutoBlend = (percentage, color) => {\r\n    switch (lightOrDark(color)) {\r\n        case 'light':\r\n            return darkerColor(percentage, formatColor(color));\r\n        case 'dark':\r\n            return lighterColor(percentage, formatColor(color));\r\n    }\r\n};\r\nexport const lighterColor = (percentage, color, blend = '#fff') => {\r\n    color = formatColor(color);\r\n    return pSBC(percentage, color, blend, true);\r\n};\r\nexport const darkerColor = (percentage, color, blend = '#000') => {\r\n    color = formatColor(color);\r\n    return pSBC(-percentage, color, blend, true);\r\n};\r\n\r\nexport const fakePreviewProducts = (price = '20.00', index = 0) => [\r\n    {\r\n        isExample: true,\r\n        handle: 'example-product',\r\n        id: index.toString(),\r\n        options: [\r\n            {\r\n                id: 0,\r\n                product_id: index.toString(),\r\n                name: 'Title',\r\n                position: 1,\r\n                values: ['Default Title']\r\n            }\r\n        ],\r\n        images: [\r\n            {\r\n                src: 'https://cdn.pixabay.com/photo/2017/01/25/17/35/picture-2008484_1280.png'\r\n            }\r\n        ],\r\n        title: 'Example product',\r\n        variants: [\r\n            {\r\n                id: 1,\r\n                product_id: index.toString(),\r\n                image: null,\r\n                price: price,\r\n                featured_image: {\r\n                    src: 'https://cdn.pixabay.com/photo/2017/01/25/17/35/picture-2008484_1280.png'\r\n                },\r\n                title: 'Default Title',\r\n                quantity: 20,\r\n                inventory_policy: 'continue',\r\n\r\n                inventory_management: null,\r\n                inventory_quantity: 1,\r\n                old_inventory_quantity: 1\r\n            }\r\n        ],\r\n        variant_id: 1\r\n    }\r\n];\r\n\r\nexport const em = (font_size) => `${font_size}em`;\r\n\r\nexport function hasParentWithMatchingSelector(target, selector) {\r\n    return [...document.querySelectorAll(selector)].some(\r\n        (el) => el !== target && el.contains(target)\r\n    );\r\n}\r\n\r\nexport async function getScriptStatus(shop, origin, callback) {\r\n  try {\r\n    const { data } = await Axios.get(\r\n      `${API_GATEWAY_NEW}/storeFront?shop=${shop}&manual_setup=true&origin=${origin}`\r\n    );\r\n    let isScript =\r\n      data.includes(\"/cart_renderer.gz.js\") ||\r\n      data.includes(\"/cart_renderer.js\");\r\n    return callback(isScript);\r\n  } catch (error) {\r\n    return callback(false, true);\r\n  }\r\n};\r\n\r\nexport async function getShopProducts() {\r\n    try {\r\n        if (window.mu_stop_json_products) return [];\r\n        const totalPages = window.mu_get_all_products ? Number(window.mu_get_all_products) : 1;\r\n        const requests = [];\r\n\r\n        // Create an array of requests for each page\r\n        for (let page = 1; page <= totalPages; page++) {\r\n            requests.push(\r\n                Axios.get(getLangPath(`products.json?limit=250&page=${page}`))\r\n            );\r\n        }\r\n        // Fetch all pages concurrently\r\n        const responses = await Promise.all(requests);\r\n        const products = responses.flatMap(\r\n            (response) => response.data?.products ?? []\r\n        );\r\n        return products;\r\n    } catch (error) {\r\n        console.error(\"Error fetching multiple pages:\", error);\r\n        return [];\r\n    }\r\n};\r\n\r\nconst getRechargeSubscriptionsData = async (productId, isPreview) => {\r\n  try {\r\n    const response = await fetch(\r\n      `https://static.rechargecdn.com/store/${\r\n        isPreview ? \"monsterapps-beta.myshopify.com\" : window.Shopify.shop\r\n      }/product/2022-06/${productId}.json`\r\n    );\r\n    if (!response.ok) {\r\n      console.error(\"Failed to fetch Recharge subscription data\");\r\n      return null;\r\n    }\r\n    const data = await response.json();\r\n    if (\r\n      data &&\r\n      data.product &&\r\n      data.product.plans &&\r\n      data.product.plans.length\r\n    ) {\r\n      const plans = data.product.plans;\r\n      const groupedPlans = {\r\n        onetime: [],\r\n        subscriptions: {},\r\n      };\r\n\r\n      plans.reverse().forEach((plan) => {\r\n        if (plan.type === \"onetime\") {\r\n          groupedPlans.onetime.push(plan);\r\n        } else if (plan.type === \"subscription\") {\r\n          const discountLabel = `Subscribe and Save ${plan.discount_amount}%`;\r\n          if (!groupedPlans.subscriptions[discountLabel]) {\r\n            groupedPlans.subscriptions[discountLabel] = [];\r\n          }\r\n          groupedPlans.subscriptions[discountLabel].push(plan);\r\n        }\r\n      });\r\n      return groupedPlans;\r\n    }\r\n    return null;\r\n  } catch (error) {\r\n    console.error(\"Error fetching recharge subscriptions data:\", error);\r\n    return null;\r\n  }\r\n};\r\n\r\nexport const getDefaultSubscriptionsData = async (productUrl, appId, variantId) => {\r\n  try {\r\n    const url = `https://${window.location.hostname}${productUrl?.split(\"?\")[0]}.js`;\r\n\r\n    const response = await fetch(url);\r\n\r\n    if (!response.ok) {\r\n      console.error(\"Failed to fetch subscriptions data\");\r\n      return null;\r\n    }\r\n\r\n    const data = await response.json();\r\n\r\n    if (!data?.selling_plan_groups?.length) {\r\n      return null;\r\n    }\r\n\r\n    const filteredSubscriptions = data.selling_plan_groups.filter(\r\n      (group) =>\r\n        (group.app_id &&\r\n          group.app_id?.toLowerCase().includes(appId?.toLowerCase())) ||\r\n        !appId\r\n    );\r\n\r\n    if (!filteredSubscriptions.length) {\r\n      return null;\r\n    }\r\n\r\n    const selectedVariant = variantId\r\n      ? data.variants.find((variant) => variant.id == variantId)\r\n      : null;\r\n\r\n    if(selectedVariant && !selectedVariant.selling_plan_allocations?.length) return null;\r\n\r\n    const groupedPlans = {\r\n      onetime: (\r\n        selectedVariant\r\n          ? selectedVariant.requires_selling_plan\r\n          : data.requires_selling_plan\r\n      )\r\n        ? []\r\n        : [\r\n            {\r\n              id: \"onetime\",\r\n              type: \"onetime\",\r\n              title: \"One-time Purchase\",\r\n            },\r\n          ],\r\n      subscriptions: {},\r\n      variants: data.variants,\r\n      selling_plan_groups: data.selling_plan_groups,\r\n    };\r\n\r\n    filteredSubscriptions.forEach((subscriptionGroup) => {\r\n      subscriptionGroup.selling_plans.forEach((plan) => {\r\n        const { name, id, price_adjustments } = plan;\r\n        const priceAdjustment = price_adjustments?.[0];\r\n\r\n        let discount = \"\";\r\n        if (priceAdjustment?.value) {\r\n          if (priceAdjustment?.value_type === \"percentage\") {\r\n            discount = `${priceAdjustment?.value}%`;\r\n          } else if (priceAdjustment?.value_type === \"price\") {\r\n            const oneTimePrice = selectedVariant\r\n              ? selectedVariant.price\r\n              : data.variants[0].price;\r\n            const formattedMoney = formatMoney(\r\n              oneTimePrice - priceAdjustment?.value,\r\n              window.mu_money_format\r\n            );\r\n            discount = new DOMParser().parseFromString(\r\n              formattedMoney,\r\n              \"text/html\"\r\n            ).body.textContent;\r\n          } else {\r\n            // Reintroducing DOMParser to strip any HTML tags from the formatted money string\r\n            const formattedMoney = formatMoney(\r\n              priceAdjustment?.value,\r\n              window.mu_money_format\r\n            );\r\n            discount = new DOMParser().parseFromString(\r\n              formattedMoney,\r\n              \"text/html\"\r\n            ).body.textContent;\r\n          }\r\n        }\r\n\r\n        const discountLabel = discount\r\n          ? `Subscribe & Save ${discount}` //`${subscriptionGroup.name} ${discount}`\r\n          : \"Subscribe without discount\";\r\n\r\n        const availableForVariant = selectedVariant\r\n          ? selectedVariant.selling_plan_allocations.some(\r\n              (spa) => spa.selling_plan_id == id\r\n            )\r\n          : true;\r\n          \r\n        if (availableForVariant) {\r\n          if (!groupedPlans.subscriptions[discountLabel]) {\r\n            groupedPlans.subscriptions[discountLabel] = [];\r\n          }\r\n\r\n          groupedPlans.subscriptions[discountLabel].push({\r\n            id,\r\n            external_plan_id: id,\r\n            external_plan_name: name,\r\n            charge_interval_frequency: 30,\r\n            discount_amount: (priceAdjustment?.value_type === \"percentage\"\r\n              ? priceAdjustment.value\r\n              : (priceAdjustment?.value / 100 || 0).toFixed(2)\r\n            )?.toString(),\r\n            discount_type: priceAdjustment?.value_type,\r\n            external_plan_group_id: subscriptionGroup.id,\r\n            title: `${name}${discount ? ` with ${discount}` : \"\"}`,\r\n            type: \"subscription\",\r\n            //   apply_cutoff_date_to_checkout: false,\r\n            //   charge_interval_frequency: 30,\r\n            //   external_variant_ids: [],\r\n            //   has_variant_restrictions: false,\r\n            // interval_unit: \"day\",\r\n            // order_interval_frequency: 30,\r\n            //   pricing_progression: [],\r\n            // sort_order: 2,\r\n          });\r\n        }\r\n      });\r\n    });\r\n\r\n    return groupedPlans;\r\n  } catch (error) {\r\n    console.error(\"Error fetching subscriptions data:\", error);\r\n    return null;\r\n  }\r\n};\r\n\r\nexport const getPlansData = async (productId, appType, productUrl, isPreview, variantId) => {\r\n  switch (appType) {\r\n    case \"recharge\":\r\n      return await getRechargeSubscriptionsData(productId, isPreview);\r\n    case \"seal\":\r\n      return await getDefaultSubscriptionsData(\r\n        productUrl,\r\n        \"Seal Subscriptions\",\r\n        variantId\r\n      );\r\n    case \"subify\":\r\n      return await getDefaultSubscriptionsData(productUrl, \"subi\", variantId);\r\n    case \"casa\":\r\n      return await getDefaultSubscriptionsData(\r\n        productUrl,\r\n        \"IW00819979621610\",\r\n        variantId\r\n      );\r\n    case \"appstle\":\r\n      return await getDefaultSubscriptionsData(\r\n        productUrl,\r\n        \"appstle\",\r\n        variantId\r\n      );\r\n    case \"recurpay\":\r\n      return await getDefaultSubscriptionsData(productUrl, null, variantId);\r\n    case \"yotpo\":\r\n      return await getDefaultSubscriptionsData(\r\n        productUrl,\r\n        \"Yotpo Echo\",\r\n        variantId\r\n      );\r\n    case \"paywhirl\":\r\n      return await getDefaultSubscriptionsData(\r\n        productUrl,\r\n        \"paywhirl\",\r\n        variantId\r\n      );\r\n    default:\r\n      return null;\r\n  }\r\n};","import React, { useState, useContext, useEffect, useMemo, useCallback } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { CartContext } from 'components/cart';\r\nimport classNames from 'lib/classNames';\r\nimport Api from '../Api';\r\nimport axios from 'axios';\r\nimport { API_GATEWAY_NEW } from 'aws-exports';\r\nimport { getDefaultSubscriptionsData } from '../Utils';\r\n\r\nconst Product = React.memo(({ product_info, add_to_unlock }) => {\r\n    const {\r\n        preview_product,\r\n        Utils,\r\n        isPreview,\r\n        cart_settings: {\r\n            count_compare_at,\r\n            money_format,\r\n            rtl,\r\n            theme: { primary, background, secondary },\r\n            product: { sold_out }\r\n        },\r\n        shop_url,\r\n        add_to_cart,\r\n        update_cart_item,\r\n        productNotAddedToCart,\r\n        setVariantPickerOptions,\r\n        setVariantsPickerShow,\r\n        addFBTUpsell,\r\n        cart_currency,\r\n        rechargeSettings,\r\n        hasWriteDiscountsScope,\r\n        products\r\n    } = useContext(CartContext);\r\n    const [product, setProduct] = useState(product_info);\r\n    const subscriptionObject = rechargeSettings?.products?.find((p) => {\r\n        return Object.keys(p)[0] === product_info.id.toString();\r\n    });\r\n    const subscription = subscriptionObject && subscriptionObject[product_info.id];\r\n    const HAS_SUBSCRIPTION =\r\n        subscription &&\r\n        !!subscription?.selling_plan_groups?.length &&\r\n        rechargeSettings?.widget_settings?.published;\r\n    const { variants } = product_info;\r\n    const [loading, setLoading] = useState(true);\r\n    const [sodOut, setSodOut] = useState(false);\r\n    const [compareAtMap, setCompareAtMap] = useState({});\r\n    const [dataFetched, setDataFetched] = useState(false);\r\n    const [plansData, setPlansData] = useState(null);\r\n\r\n    const unformattedPrice = useMemo(\r\n        () =>\r\n            Utils.getVariantPrice({\r\n                variant: window.mu_fbt_set_default_variant\r\n                    ? variants.find(({ title, option1, option2, option3 }) => {\r\n                          const selectedOptions = window.mu_fbt_set_default_variant(product);\r\n                          const selectedValues = Object.values(selectedOptions);\r\n                          const variantOptions = [option1, option2, option3];\r\n\r\n                          return (\r\n                              title === Object.values(selectedOptions).join(' / ') ||\r\n                              selectedValues.every(\r\n                                  (value, index) => value === variantOptions[index]\r\n                              )\r\n                          );\r\n                      })\r\n                    : product.variants[0],\r\n                cart_currency,\r\n                isPreview,\r\n                plansData\r\n            }),\r\n        [variants, cart_currency, isPreview, plansData]\r\n    );\r\n\r\n    const price = Utils.formatMoney(unformattedPrice * 100, money_format);\r\n    const [original, setOriginal] = useState(0);\r\n\r\n    const addToCartInit = useCallback(async () => {\r\n        if (product.isExample || !product.fetched || loading) return;\r\n        try {\r\n            setLoading(true);\r\n            const { variants } = product;\r\n            let skip_picker = false;\r\n            if (window.mu_custom_fbt_logic) {\r\n                skip_picker = await window.mu_custom_fbt_logic(product);\r\n            }\r\n            if ((Utils.productHasOneVariant({ variants }) && !HAS_SUBSCRIPTION) || skip_picker) {\r\n                if (Utils.variantIsOnStock(variants[0])) {\r\n                    addToCart(variants[0]);\r\n                } else {\r\n                    setSodOut(true);\r\n                }\r\n                setLoading(false);\r\n            } else {\r\n                if (!dataFetched && !isPreview) {\r\n                    const data = await getDefaultSubscriptionsData(\r\n                        `/products/${product_info.handle}`\r\n                    );\r\n                    setPlansData(\r\n                        window.mu_filter_fbt_subscription\r\n                            ? window.mu_filter_fbt_subscription(data)\r\n                            : data\r\n                    );\r\n                }\r\n                setVariantPickerOptions({\r\n                    product,\r\n                    buttonText: add_to_unlock.upsell_confirm_button.text,\r\n                    onConfirm: (variant, sellingPlanId) => {\r\n                        addToCart(variant, sellingPlanId);\r\n                    },\r\n                    onClose: async () => {\r\n                        setLoading(false);\r\n                    },\r\n                    plansData,\r\n                    priceText: add_to_unlock.product_price.text\r\n                });\r\n                setVariantsPickerShow(true);\r\n            }\r\n        } catch (error) {\r\n            setLoading(false);\r\n        }\r\n    }, [product, preview_product]);\r\n\r\n    useEffect(() => {\r\n        if (product?.variants?.length && !!count_compare_at) {\r\n            setCompareAtMap(\r\n                product.variants?.reduce((acc, variant) => {\r\n                    if (variant.compareAtPrice) {\r\n                        acc[variant.id] = Number(variant.compareAtPrice) * 100;\r\n                    }\r\n                    return acc;\r\n                }, {})\r\n            );\r\n        }\r\n    }, [product]);\r\n\r\n    const addToCart = async (variant, sellingPlanId) => {\r\n        if (window.mu_fbt_custom_atc) {\r\n            const response = await window.mu_fbt_custom_atc(product, variant, sellingPlanId);\r\n            if (response) {\r\n                setLoading(false);\r\n                setVariantsPickerShow(false);\r\n                return;\r\n            }\r\n        }\r\n        const variant_id = Number.parseInt(\r\n            variant.id.toString().replace('gid://shopify/ProductVariant/', '')\r\n        );\r\n        if (productNotAddedToCart(product)) {\r\n            add_to_cart(\r\n                {\r\n                    variant_id,\r\n                    quantity: 1,\r\n                    selling_plan: sellingPlanId,\r\n                    product_handle: product.handle //required for preview only\r\n                },\r\n                (item) => {\r\n                    addFBTUpsell(item.id);\r\n                    setVariantsPickerShow(false);\r\n                    setLoading(false);\r\n                }\r\n            );\r\n        } else {\r\n            update_cart_item(\r\n                { variant_id, selling_plan: sellingPlanId, quantity: '+1' },\r\n                (item) => {\r\n                    addFBTUpsell(item.id);\r\n                    setVariantsPickerShow(false);\r\n                    setLoading(false);\r\n                }\r\n            );\r\n        }\r\n    };\r\n\r\n    const formatText = (text) =>\r\n        text\r\n            .replace(/{{product_title}}/g, product.title)\r\n            .replace(/{{product_price}}/g, price)\r\n            .replace(\r\n                /{{original_price}}/g,\r\n                original && original !== price\r\n                    ? `<del class='mu-fbt-original-price mu-opacity-75 mu-ml-1 mu-mr-1 notranslate'>${original}</del> `\r\n                    : ''\r\n            );\r\n\r\n    useEffect(() => {\r\n        const fetchProductInfo = async () => {\r\n            const product = products?.find(({ id }) => id == product_info.id);\r\n            // const updatedVariants = updateVariants(product.variants);\r\n            if (product) {\r\n                const newOriginal = calculateOriginal(product.variants);\r\n                updateProduct(\r\n                    product,\r\n                    product.variants.map((variant) => ({\r\n                        ...product_info.variants.find(({ id }) => id == variant.id),\r\n                        ...variant,\r\n                        presentmentPrices: null\r\n                    })),\r\n                    newOriginal\r\n                );\r\n            } else {\r\n                setProduct(product_info);\r\n            }\r\n            setLoading(false);\r\n            if (!isPreview) {\r\n                const data = await getDefaultSubscriptionsData(`/products/${product_info.handle}`);\r\n                setPlansData(\r\n                    window.mu_filter_fbt_subscription\r\n                        ? window.mu_filter_fbt_subscription(data)\r\n                        : data\r\n                );\r\n                setDataFetched(true);\r\n            }\r\n        };\r\n\r\n        const updateVariants = (newVariants) => {\r\n            return product_info.variants.map((variant) => {\r\n                const newVariantInfo = newVariants.find(\r\n                    (newVariant) => newVariant.id === variant.id\r\n                );\r\n                if (newVariantInfo) {\r\n                    return {\r\n                        ...newVariantInfo,\r\n                        ...variant,\r\n                        ...(window.mu_stop_presentment ? { presentmentPrices: null } : {}),\r\n                        price: Number(newVariantInfo.price)\r\n                    };\r\n                }\r\n                return variant;\r\n            });\r\n        };\r\n\r\n        const calculateOriginal = (updatedVariants) => {\r\n            if (!updatedVariants) return 0;\r\n            const selected_variant = window.mu_fbt_set_default_variant\r\n                ? updatedVariants.find(({ title, option1, option2, option3 }) => {\r\n                      const selectedOptions = window.mu_fbt_set_default_variant(product);\r\n                      const selectedValues = Object.values(selectedOptions);\r\n                      const variantOptions = [option1, option2, option3];\r\n\r\n                      return (\r\n                          title === Object.values(selectedOptions).join(' / ') ||\r\n                          selectedValues.every((value, index) => value === variantOptions[index])\r\n                      );\r\n                  })\r\n                : updatedVariants[0];\r\n            return (\r\n                (updatedVariants &&\r\n                    selected_variant?.compare_at_price &&\r\n                    !!Number(selected_variant?.compare_at_price) &&\r\n                    Utils.formatMoney(\r\n                        Number(selected_variant?.compare_at_price) * 100,\r\n                        money_format\r\n                    )) ||\r\n                0\r\n            );\r\n        };\r\n\r\n        const updateProduct = (newProduct, updatedVariants, newOriginal) => {\r\n            const updatedProduct = {\r\n                ...newProduct,\r\n                ...(window.mu_fbt_use_fetched_product\r\n                    ? {\r\n                          fetched: true,\r\n                          handle: newProduct.handle,\r\n                          image: newProduct.images?.[0]?.src\r\n                      }\r\n                    : product_info),\r\n                options: newProduct.options,\r\n                variants: updatedVariants\r\n            };\r\n            setOriginal(newOriginal);\r\n            setProduct(updatedProduct);\r\n        };\r\n\r\n        if (product_info) {\r\n            fetchProductInfo();\r\n        }\r\n    }, [product_info]);\r\n\r\n    const formattedText = useMemo(\r\n        () => formatText(add_to_unlock.product_title.text),\r\n        [product.title]\r\n    );\r\n    const formattedPrice = useMemo(\r\n        () => formatText(add_to_unlock.product_price.text),\r\n        [price, original]\r\n    );\r\n\r\n    return (\r\n        <div\r\n            className={classNames('fbt-item border-b last:border-b-0 mx-2 py-2')}\r\n            style={{\r\n                borderColor: Utils.formatColor(add_to_unlock.borderColor)\r\n            }}\r\n            data-loading={`${loading}`}\r\n        >\r\n            <div className={classNames('flex')}>\r\n                {product.image || product.variants[0].image ? (\r\n                    <div\r\n                        className={classNames('fbt-item-image rounded bg-cover bg-center block')}\r\n                        style={{\r\n                            backgroundImage: `url(${(\r\n                                product.image?.src || product.variants[0].image?.src\r\n                            )?.replace(/\\.jpg|\\.png|\\.webp/, '_small$&')})`,\r\n                            width: 70,\r\n                            height: 70\r\n                        }}\r\n                    />\r\n                ) : (\r\n                    <div\r\n                        style={{\r\n                            width: 70,\r\n                            height: 70,\r\n                            fill: Utils.formatColor(secondary),\r\n                            borderColor: Utils.formatColor(secondary)\r\n                        }}\r\n                        className={classNames(\r\n                            'fbt-item-image text-transparent flex-center rounded border'\r\n                        )}\r\n                    >\r\n                        {product_info.fetch ? (\r\n                            <svg viewBox=\"0 0 20 20\" className={classNames('w-1/2 h-1/2')}>\r\n                                <path fill=\"currentColor\" d=\"M14 9l-5 5-3-2-5 3v4h18v-6z\"></path>\r\n                                <path d=\"M19 0H1a1 1 0 0 0-1 1v18a1 1 0 0 0 1 1h18a1 1 0 0 0 1-1V1a1 1 0 0 0-1-1zM8 6c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm0 4c1.654 0 3-1.346 3-3S9.654 4 8 4 5 5.346 5 7s1.346 3 3 3zm-6 8v-2.434l3.972-2.383 2.473 1.65c.398.264.925.21 1.262-.126l4.367-4.367L18 13.48V18H2zM18 2v8.92l-3.375-2.7a.999.999 0 0 0-1.332.073l-4.42 4.42-2.318-1.545a1 1 0 0 0-1.07-.025L2 13.233V2h16z\"></path>\r\n                            </svg>\r\n                        ) : (\r\n                            <svg\r\n                                aria-hidden=\"true\"\r\n                                focusable=\"false\"\r\n                                data-icon=\"spinner-third\"\r\n                                role=\"img\"\r\n                                xmlns=\"http://www.w3.org/2000/svg\"\r\n                                viewBox=\"0 0 512 512\"\r\n                                className={classNames('w-4 h-4 fa-spin')}\r\n                                style={{ color: Utils.formatColor(secondary) }}\r\n                            >\r\n                                <path\r\n                                    fill=\"currentColor\"\r\n                                    d=\"M456.433 371.72l-27.79-16.045c-7.192-4.152-10.052-13.136-6.487-20.636 25.82-54.328 23.566-118.602-6.768-171.03-30.265-52.529-84.802-86.621-144.76-91.424C262.35 71.922 256 64.953 256 56.649V24.56c0-9.31 7.916-16.609 17.204-15.96 81.795 5.717 156.412 51.902 197.611 123.408 41.301 71.385 43.99 159.096 8.042 232.792-4.082 8.369-14.361 11.575-22.424 6.92z\"\r\n                                ></path>\r\n                            </svg>\r\n                        )}\r\n                    </div>\r\n                )}\r\n                <div className={classNames('flex-1 flex flex-col', rtl ? 'pr-2' : 'pl-2')}>\r\n                    <b\r\n                        className={classNames(\r\n                            'fbt-item-title mb-0 overflow-hidden w-full line-clamp'\r\n                        )}\r\n                        style={{\r\n                            fontSize: Utils.em(add_to_unlock.product_title.font_size),\r\n                            fontWeight: add_to_unlock.product_title.font_weight,\r\n                            color: Utils.formatColor(add_to_unlock.product_title.color)\r\n                        }}\r\n                    >\r\n                        {isPreview || window.mu_fbt_title_unclickable ? (\r\n                            <span\r\n                                dangerouslySetInnerHTML={{\r\n                                    __html: formattedText\r\n                                }}\r\n                            />\r\n                        ) : (\r\n                            <a\r\n                                href={`${window.origin}/products/${product.handle}`}\r\n                                dangerouslySetInnerHTML={{\r\n                                    __html: formattedText\r\n                                }}\r\n                            />\r\n                        )}\r\n                    </b>\r\n                    <div className={classNames('flex items-center flex-wrap')}>\r\n                        <div\r\n                            className={classNames(\r\n                                'flex flex-col flex-1 items-start',\r\n                                rtl ? 'ml-2' : 'mr-2'\r\n                            )}\r\n                        >\r\n                            <b\r\n                                className={`${classNames('fbt-item-price mb-0')} notranslate`}\r\n                                style={{\r\n                                    fontSize: Utils.em(add_to_unlock.product_price.font_size),\r\n                                    fontWeight: add_to_unlock.product_price.font_weight,\r\n                                    color: Utils.formatColor(add_to_unlock.product_price.color)\r\n                                }}\r\n                                dangerouslySetInnerHTML={{\r\n                                    __html: formattedPrice\r\n                                }}\r\n                                data-display={formattedPrice}\r\n                            />\r\n\r\n                            {window.mu_fbt_replace_show_details?.find(\r\n                                (elm) => elm.id === product.id\r\n                            ) ? (\r\n                                <p>\r\n                                    {\r\n                                        window.mu_fbt_replace_show_details?.find(\r\n                                            (elm) => elm.id === product.id\r\n                                        )?.text\r\n                                    }\r\n                                </p>\r\n                            ) : (\r\n                                <button\r\n                                    className={classNames('fbt-item-link btn-link')}\r\n                                    style={{\r\n                                        color: Utils.formatColor(\r\n                                            add_to_unlock.show_product_details.color\r\n                                        ),\r\n                                        fontWeight: add_to_unlock.show_product_details.font_weight,\r\n                                        fontSize: Utils.em(\r\n                                            add_to_unlock.show_product_details.font_size\r\n                                        )\r\n                                    }}\r\n                                    onClick={() => {\r\n                                        if (!product.isExample) preview_product(product);\r\n                                    }}\r\n                                >\r\n                                    {add_to_unlock.show_product_details.text}\r\n                                </button>\r\n                            )}\r\n                        </div>\r\n\r\n                        <button\r\n                            className={classNames(\r\n                                'fbt-item-atc border-solid border-2 bg-transparent btn-small py-2 relative'\r\n                            )}\r\n                            style={{\r\n                                borderColor: Utils.formatColor(\r\n                                    add_to_unlock.upsell_add_button.color || primary\r\n                                ),\r\n                                color: Utils.formatColor(\r\n                                    add_to_unlock.upsell_add_button.color || primary\r\n                                ),\r\n                                fontWeight: add_to_unlock.upsell_add_button.font_weight,\r\n                                fontSize: Utils.em(add_to_unlock.upsell_add_button.font_size)\r\n                            }}\r\n                            onClick={() => addToCartInit()}\r\n                            disabled={sodOut || !product.fetched || loading}\r\n                        >\r\n                            <span\r\n                                className={classNames({\r\n                                    'opacity-0': loading\r\n                                })}\r\n                            >\r\n                                {sodOut ? sold_out : add_to_unlock.upsell_add_button.text}\r\n                            </span>\r\n                            <div\r\n                                className={classNames('absolute inset-0 flex-center', {\r\n                                    hidden: !loading\r\n                                })}\r\n                            >\r\n                                <svg\r\n                                    aria-hidden=\"true\"\r\n                                    focusable=\"false\"\r\n                                    data-icon=\"spinner-third\"\r\n                                    role=\"img\"\r\n                                    xmlns=\"http://www.w3.org/2000/svg\"\r\n                                    viewBox=\"0 0 512 512\"\r\n                                    className={classNames('w-3 h-3 fa-spin')}\r\n                                >\r\n                                    <path\r\n                                        fill=\"currentColor\"\r\n                                        d=\"M456.433 371.72l-27.79-16.045c-7.192-4.152-10.052-13.136-6.487-20.636 25.82-54.328 23.566-118.602-6.768-171.03-30.265-52.529-84.802-86.621-144.76-91.424C262.35 71.922 256 64.953 256 56.649V24.56c0-9.31 7.916-16.609 17.204-15.96 81.795 5.717 156.412 51.902 197.611 123.408 41.301 71.385 43.99 159.096 8.042 232.792-4.082 8.369-14.361 11.575-22.424 6.92z\"\r\n                                    ></path>\r\n                                </svg>\r\n                            </div>\r\n                        </button>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    );\r\n});\r\n\r\nProduct.propTypes = {};\r\n\r\nexport default Product;\r\n","import React, { useContext, useEffect, useState } from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport { CartContext } from \"components/cart\";\r\nimport Product from \"./Product\";\r\nimport Axios from \"axios\";\r\nimport classNames from \"lib/classNames\";\r\nimport API from \"../Api\";\r\nimport { API_GATEWAY_NEW } from \"aws-exports\";\r\nimport useCampaign from \"hooks/useCampaign\";\r\n\r\nconst productsInMemory = {};\r\n\r\nconst AddToUnlock = ({ add_to_unlock, add_to_unlock_product_id }) => {\r\n  const cartContext = useContext(CartContext);\r\n  const {\r\n    cart_settings: { theme, font },\r\n    shopify_cart_items,\r\n    campaigns,\r\n    Utils,\r\n    get_total,\r\n    shop_url,\r\n    isPreview,\r\n    productNotAddedToCart,\r\n    productAddedToCart,\r\n    rechargeSettings,\r\n    hasWriteDiscountsScope,\r\n    products,\r\n  } = cartContext;\r\n  const [one_check_up_sell_product_id, ocu_campaign] = useCampaign(\r\n    \"one_check_up_sell\",\r\n    null,\r\n    true\r\n  )(campaigns, shopify_cart_items);\r\n  const {\r\n    borderColor,\r\n    background,\r\n    show_suggestions,\r\n    recommendation_type = \"custom_recommendation\",\r\n    products_length = 1,\r\n    exclude_tags,\r\n  } = add_to_unlock;\r\n  const static_variants = window.monster_static?.variants;\r\n  const [upSells, setUpSells] = useState([]);\r\n  const filterUpsells = (value) => {\r\n    return value.filter((product) => {\r\n      if (productAddedToCart(product) || product.product_type === 'ship_protect') {\r\n        return false;\r\n      }\r\n      const subscriptionObject = rechargeSettings?.products?.find((p) => {\r\n        return Object.keys(p)[0] === product.id.toString();\r\n      });\r\n      const subscription = subscriptionObject && subscriptionObject[product.id];\r\n      const { storefront_purchase_options } =\r\n        subscription?.subscription_options || {};\r\n      if (\r\n        storefront_purchase_options &&\r\n        storefront_purchase_options !== \"subscription_and_onetime\" &&\r\n        storefront_purchase_options !== \"onetime_only\"\r\n      ) {\r\n        return false;\r\n      }\r\n      return true;\r\n    });\r\n  };\r\n  const [allProducts, setAllProducts] = useState([]);\r\n  const add_to_unlock_reward = add_to_unlock[add_to_unlock.reward_type];\r\n  const handleSetAllProducts = (tmpProducts) => {\r\n    setAllProducts(tmpProducts);\r\n  };\r\n\r\n  const fetchProducts = async (source, upsells) => {\r\n    if (!upsells.length || upsells.every(({ fetched }) => fetched)) {\r\n      return source.cancel();\r\n    }\r\n    try {\r\n      const toBeFetched = [];\r\n      let products = [];\r\n      upsells.forEach(({ id }) => {\r\n        const product = productsInMemory[id];\r\n        if (product) {\r\n          products.push(product);\r\n        } else {\r\n          toBeFetched.push(id);\r\n        }\r\n      });\r\n      if (toBeFetched.length) {\r\n        // const { data } = await Axios.get('https://mu-api.com/public/products', {\r\n        //   params: {\r\n        //     shopName: shop_url,\r\n        //     productIds: toBeFetched \r\n        //   },\r\n        //   cancelToken: source?.token,\r\n        // });\r\n        const { data } = await Axios.get(`${API_GATEWAY_NEW}/public/products`, {\r\n          params: {\r\n            shop: shop_url,\r\n            ids: toBeFetched,\r\n          },\r\n          cancelToken: source?.token,\r\n        });\r\n        const fetchedProducts = Object.entries(data.products).reduce(\r\n          (acc, [key, product]) => {\r\n            if (!product) return acc;\r\n            const data = { ...product, fetched: true };\r\n            productsInMemory[key] = data;\r\n            return acc.concat([data]);\r\n          },\r\n          []\r\n        );\r\n        products = products.concat(fetchedProducts);\r\n      }\r\n      setUpSells(filterUpsells(products));\r\n      // // temporary send double product request\r\n      // await Axios.get('https://mu-api.com/public/products', {params: {shopName: shop_url,productIds: toBeFetched }});\r\n    } catch (e) {\r\n      source.cancel();\r\n    }\r\n  };\r\n\r\n  // set all possible poducts without the recommandations\r\n  useEffect(() => {\r\n    const tmpProducts = add_to_unlock.products.length\r\n      ? add_to_unlock.products\r\n      : isPreview\r\n        ? Utils.fakePreviewProducts()\r\n        : [];\r\n    if (recommendation_type !== \"shopify_recommendation\")\r\n      handleSetAllProducts(tmpProducts);\r\n  }, [add_to_unlock.products, show_suggestions, recommendation_type]);\r\n\r\n  // handle items change\r\n  useEffect(() => {\r\n    let tmpProducts = allProducts.filter((pro) => {\r\n      const notAdded = productNotAddedToCart(pro);\r\n      if (window.mu_custom_fbt_filter) {\r\n        return window.mu_custom_fbt_filter(pro, products) && notAdded;\r\n      }\r\n      return notAdded;\r\n    }).slice(0);\r\n    if (show_suggestions && recommendation_type === \"shopify_recommendation\") {\r\n      tmpProducts = tmpProducts\r\n        .filter((prod) => checkTags(prod, exclude_tags))\r\n        .splice(0, products_length);\r\n    }\r\n\r\n    if (rechargeSettings && !hasWriteDiscountsScope) {\r\n      tmpProducts = filterUpsells(tmpProducts);\r\n    }\r\n    setUpSells(filterUpsells(tmpProducts));\r\n  }, [\r\n    shopify_cart_items,\r\n    allProducts,\r\n    show_suggestions,\r\n    recommendation_type,\r\n    products_length,\r\n    exclude_tags,\r\n    rechargeSettings,\r\n    hasWriteDiscountsScope,\r\n  ]);\r\n\r\n  useEffect(() => {\r\n    let tmpUpsel = (\r\n      add_to_unlock.products.length\r\n        ? add_to_unlock.products\r\n        : isPreview\r\n        ? Utils.fakePreviewProducts()\r\n        : []\r\n    ).filter((pro) => {\r\n      const notAdded = productNotAddedToCart(pro);\r\n      if (window.mu_custom_fbt_filter) {\r\n        return window.mu_custom_fbt_filter(pro, products) && notAdded;\r\n      }\r\n      return notAdded;\r\n    });\r\n    setUpSells(filterUpsells(tmpUpsel));\r\n\r\n    if (show_suggestions && recommendation_type == \"shopify_recommendation\") {\r\n      if (isPreview) {\r\n        API.get(`${API_GATEWAY_NEW}/public/products`, {\r\n        params: { shop: shop_url, isPreview: true },\r\n        })\r\n        // API.get(\"https://mu-api.com/public/products\", {\r\n        //   params: { shopName: shop_url, isPreview: true },\r\n        // })\r\n          .then(({ data }) => {\r\n            const { products } = data;\r\n            let tmpProducts = parseProducts(products);\r\n            handleSetAllProducts(tmpProducts);\r\n          })\r\n          .catch((error) => {\r\n            API.get(`https://${shop_url}/products.json?limit=20`)\r\n              .then(({ data }) => {\r\n                const { products } = data;\r\n                let tmpProducts = parseProducts(products);\r\n                handleSetAllProducts(tmpProducts);\r\n              })\r\n              .catch((error) => {\r\n                console.log(error);\r\n              });\r\n          });\r\n        return; // TODO: return clean up function\r\n      }\r\n      const recoEndpoint = `/recommendations/products.json?product_id=${add_to_unlock_product_id}`;\r\n      // const endpoint = 'https://shopquoteworthy.com/recommendations/products.json?product_id=5803024318625'\r\n      // const recoEndpoint = '/recommendations/products.json?product_id=3320752701504'\r\n      const productsEndpoint = \"/products.json?limit=20\";\r\n      Axios.get(recoEndpoint).then(({ data }) => {\r\n        const { products } = data;\r\n        if (products) {\r\n          if (products.length) {\r\n            // map product and set it setAllProducts\r\n            const tmpProducts = parseProducts(products);\r\n            handleSetAllProducts(tmpProducts);\r\n          } else {\r\n            Axios.get(productsEndpoint).then(({ data: productsData }) => {\r\n              const { products } = productsData;\r\n              const tmpProducts = parseProducts(products);\r\n              handleSetAllProducts(tmpProducts);\r\n            });\r\n          }\r\n        }\r\n      });\r\n      //TODO: return clean up function\r\n    }\r\n  }, [show_suggestions, recommendation_type]);\r\n\r\n  useEffect(() => {\r\n    const CancelToken = Axios.CancelToken;\r\n    const source = CancelToken.source();\r\n    fetchProducts(source, upSells);\r\n    return () => {\r\n      source.cancel();\r\n    };\r\n  }, [upSells]);\r\n\r\n  const parseProducts = (products) => {\r\n    const ocu_products = (ocu_campaign?.multi_one_check_upsell?.products || [])\r\n      .map(({ product }) => product.id)\r\n      .filter(Boolean)\r\n      .map(String);\r\n    return products\r\n      .filter(({ id }) => !ocu_products.includes(id.toString()))\r\n      .map((product) => {\r\n        return {\r\n          id: product.id,\r\n          title: product.title,\r\n          handle: product.handle,\r\n          image: product.image,\r\n          options: product.options,\r\n          tags: product.tags,\r\n          product_type:product.product_type,\r\n          variants: product.variants.map((v) => {\r\n            return {\r\n              ...v,\r\n              id: v.id,\r\n              title: v.title,\r\n              price: v.price / 100,\r\n              image: v.featured_image ? v.featured_image.src : null,\r\n            };\r\n          }),\r\n        };\r\n      });\r\n  };\r\n\r\n  const checkTags = (product, tags = []) => {\r\n    if (!tags) return true;\r\n    return tags.every(\r\n      (tag) =>\r\n        !product.tags || (product.tags && product.tags.indexOf(tag) === -1)\r\n    );\r\n  };\r\n\r\n  return upSells.length ? (\r\n    <>\r\n      {add_to_unlock.separator.active && (\r\n        <div\r\n          id=\"mu-fbt-separator\"\r\n          className={classNames(\"text-center my-3\")}\r\n          style={{\r\n            lineHeight: \"2px\",\r\n            background: Utils.formatColor(font.color, 0.28),\r\n          }}\r\n        >\r\n          <span\r\n            style={{\r\n              background: Utils.formatColor(theme.background),\r\n            }}\r\n            className={classNames(\"px-2 font-bold\")}\r\n          >\r\n            {add_to_unlock.separator.text}\r\n          </span>\r\n        </div>\r\n      )}\r\n      <div\r\n        id=\"mu-fbt\"\r\n        className={classNames(\"frequently-container rounded border mb-2\", {\r\n          \"mt-5\": add_to_unlock.separator.active,\r\n          \"mt-1\": !add_to_unlock.separator.active,\r\n        })}\r\n        style={{ borderColor: Utils.formatColor(borderColor) }}\r\n      >\r\n        <div\r\n          className={classNames(\r\n            \"frequently-header text-center p-2 font-bold w-full\"\r\n          )}\r\n          style={{\r\n            background: Utils.formatColor(background),\r\n            color: Utils.formatColor(add_to_unlock.title.color),\r\n            fontSize: Utils.em(add_to_unlock.title.font_size),\r\n            fontWeight: add_to_unlock.title.font_weight,\r\n          }}\r\n        >\r\n          {add_to_unlock.title.text}\r\n        </div>\r\n        <div>\r\n          {upSells.map((product) => {\r\n            return (\r\n              <Product\r\n                key={product.id}\r\n                product_info={product}\r\n                add_to_unlock={add_to_unlock}\r\n              />\r\n            );\r\n          })}\r\n        </div>\r\n      </div>\r\n    </>\r\n  ) : null;\r\n};\r\n\r\n// quotebujosandmore.myshopify.com/recommendations/products.json?product_id=36765506109601\r\n// https://shopquoteworthy.com//recommendations/products.json?product_id=36765506109601\r\n\r\n//3wizzystore.myshopify.com/recommendations/products.json?product_id=3431364624448\r\n\r\n// 3431364624448\r\n// const formateText = (text, rewardType, { type, reward, goal }, formatMoney, get_total) => {\r\n// \tlet replacedReward =\r\n// \t\trewardType === 'discount' ? (type === 'percentage' ? `${reward}%` : formatMoney(reward * 100)) : '';\r\n// \tlet replacedAmount = formatMoney(goal * 100 - get_total('original'));\r\n// \treturn text.replace('{{amount}}', replacedAmount).replace('{{reward}}', replacedReward);\r\n// };\r\n\r\nhttps: AddToUnlock.propTypes = {};\r\n\r\nexport default AddToUnlock;\r\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"dragAndDrop\":\"drag_and_drop_dragAndDrop__36uZF\",\"dragging\":\"drag_and_drop_dragging__2JXPf\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"group\":\"campaign_settings_first_step_group__shXfQ\",\"first_step\":\"campaign_settings_first_step_first_step__3UBAa\",\"tiles\":\"campaign_settings_first_step_tiles__3t-dL\",\"tile\":\"campaign_settings_first_step_tile__37qLL\"};","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/redeemly-logo.546a3149.jpeg\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"custom_scrollbar\":\"custom_scroll_custom_scrollbar__3qT24\",\"isMobile\":\"custom_scroll_isMobile__HoMyk\"};","module.exports = __webpack_public_path__ + \"static/media/monster_logo.8c8178cf.png\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"display_text\":\"display_text_display_text__m2GIB\"};","module.exports = __webpack_public_path__ + \"static/media/yt-clothing.67ce0882.jpeg\";","module.exports = __webpack_public_path__ + \"static/media/yt-designing.99df31f6.jpeg\";","module.exports = __webpack_public_path__ + \"static/media/yt-dropshipping.1ebd70d4.jpeg\";","module.exports = __webpack_public_path__ + \"static/media/yt-free-gift.2208a3ba.jpeg\";","module.exports = __webpack_public_path__ + \"static/media/yt-free-shipping.b3ddfca6.jpeg\";","module.exports = __webpack_public_path__ + \"static/media/yt-shipping-protection.791f1aa9.jpeg\";","import { createMachine, interpret, assign } from \"xstate\";\r\nimport { getGoal } from \"../Utils\";\r\n\r\nconst sortGoals = (dir = \"DESC\") => {\r\n\tconst isDesc = dir.toLocaleUpperCase() === \"DESC\";\r\n\tif (isDesc) {\r\n\t\treturn (a, b) => b.goal - a.goal;\r\n\t} else {\r\n\t\treturn (a, b) => a.goal - b.goal;\r\n\t}\r\n};\r\n\r\nconst isUnlocked = (goal, total, log = false) => {\r\n\tif (log) console.log(`total: ${total}, goal: ${goal}, unlocked: ${total >= goal}`);\r\n\treturn total >= goal\r\n};\r\n\r\nconst calculateGoals = ({\r\n\tcampaign_id,\r\n\tgoals,\r\n\tshow_badges,\r\n\tshopify_cart_items,\r\n\toriginal,\r\n\tsubtotal,\r\n\tautoDiscountGifts,\r\n\tbundlesDiscounts,\r\n\tdiscountCode,\r\n\tbyQuantity,\r\n\tcontextCache,\r\n\tsetShowConfetti\r\n}) => {\r\n\t// const descGoals = [...goals].sort(sortGoals(\"DESC\"));\r\n\tconst ascGoals = [...goals].sort(sortGoals(\"ASC\")).map(goalObject => {\r\n\t\tconst { goal: oldGoal, specific_goals } = goalObject;\r\n\t\tconst goal = getGoal({ oldGoal, specific_goals, byQuantity })\r\n\t\treturn { ...goalObject, goal }\r\n\t});\r\n\tconst goalValue = (goal) => byQuantity ? goal : parseInt(goal * 100);\r\n\tconst getTotal = (reward_type) => {\r\n\t\tconst discountedValue = bundlesDiscounts \r\n\t\tconst total = byQuantity\r\n\t\t\t? totalItems\r\n\t\t\t: reward_type === \"free_shipping\"\r\n\t\t\t\t? (window.mu_include_sub_full_price ? totalPrice : subtotal)\r\n\t\t\t\t: reward_type === \"manual\"\r\n\t\t\t\t\t? original + autoDiscountGifts - discountedValue\r\n\t\t\t\t\t: original - discountedValue;\r\n\t\treturn total\r\n\t}\r\n\tconst totalItems = shopify_cart_items.filter(({ product_type }) => product_type?.toLowerCase() !== \"free_gift\").reduce((acc, cur) => acc + cur.quantity, 0);\r\n\tconst totalPrice = shopify_cart_items.filter(({ product_type }) => product_type?.toLowerCase() !== \"free_gift\").reduce((acc, cur) => {\r\n\t\tlet price;\r\n\t\tif(cur.selling_plan_allocation && cur.selling_plan_allocation.compare_at_price) {\r\n\t\t\tprice = cur.selling_plan_allocation.compare_at_price;\r\n\t\t} else {\r\n\t\t\tprice = cur.price;\r\n\t\t}\r\n\t\treturn acc + price * cur.quantity - cur.discounts?.reduce((acc, { amount }) => acc + amount, 0);\r\n\t}, 0);\r\n\treturn ascGoals.map((goalObject, index) => {\r\n\t\tconst { goal, reward_type, confetti, confetti_length } = goalObject;\r\n\t\tconst total = getTotal(reward_type)\r\n\t\tconst unlocked = isUnlocked(goalValue(goal), total);\r\n\t\tconst wasLocked = contextCache ? contextCache?.goals[index]?.unlocked === false : true;\r\n\t\tconst value = show_badges ? badgeProgressLength(unlocked, ascGoals.length) : Math.min(100, Number(((total / goalValue(goal)) * 100).toFixed(2)));\r\n\t\tconst isDescending = contextCache ? contextCache?.goals[index]?.value > value : false;\r\n\t\tconst previousGoal = index > 0 ? ascGoals[index - 1] : {};\r\n\t\tif (confetti && !isDescending && unlocked && wasLocked) {\r\n\t\t\tsetShowConfetti(confetti_length);\r\n\t\t}\r\n\t\treturn {\r\n\t\t\tcampaign_id,\r\n\t\t\tkey: \"atu_goal_\" + index,\r\n\t\t\ttextKey: \"atu_goal_text_\" + index,\r\n\t\t\tlabelKey: \"atu_goal_label_\" + index,\r\n\t\t\tgoalObject,\r\n\t\t\tvalue,\r\n\t\t\tpreviousIsUnlocked: previousGoal?.goal || previousGoal?.goal === 0 ? isUnlocked(goalValue(previousGoal.goal), getTotal(previousGoal.reward_type)) : undefined,\r\n\t\t\tisFirst: index === 0,\r\n\t\t\tisLast: index === ascGoals.length - 1,\r\n\t\t\tunlocked\r\n\t\t\t// animating:false\r\n\t\t};\r\n\t});\r\n};\r\n\r\nfunction badgeProgressLength(unlocked, goalsLength){\r\n\tconst preset = {\r\n\t\t1: 68,\r\n\t\t2: 45,\r\n\t\t3:10,\r\n\t\t4:5,\r\n\t}\r\n\treturn unlocked ? 100 : preset[goalsLength]\r\n}\r\n\r\nconst HeaderMachine = ({\r\n\tcampaign_id,\r\n\tgoals,\r\n\tshow_badges,\r\n\tshopify_cart_items,\r\n\tbyQuantity,\r\n\toriginal,\r\n\tautoDiscountGifts,\r\n\tsubtotal,\r\n\tbundlesDiscounts,\r\n\tdiscountCode,\r\n\tcontextCache,\r\n\tsetShowConfetti\r\n}) => {\r\n\t// const highestGoal = descGoals[0];\r\n\treturn createMachine({\r\n\t\tid: \"header-machine\",\r\n\t\t// initial: \"idle\",\r\n\t\tcontext: {\r\n\t\t\tgoals: calculateGoals({\r\n\t\t\t\tcampaign_id,\r\n\t\t\t\tgoals,\r\n\t\t\t\tshow_badges,\r\n\t\t\t\tshopify_cart_items,\r\n\t\t\t\toriginal,\r\n\t\t\t\tautoDiscountGifts,\r\n\t\t\t\tsubtotal,\r\n\t\t\t\tbyQuantity,\r\n\t\t\t\tbundlesDiscounts,\r\n\t\t\t\tdiscountCode,\r\n\t\t\t\tcontextCache,\r\n\t\t\t\tsetShowConfetti\r\n\t\t\t})\r\n\t\t}\r\n\t\t// states: {\r\n\t\t// \tidle: {\r\n\t\t// \t\ton: {\r\n\t\t// \t\t\tSTART_ANIMATION: {\r\n\t\t// \t\t\t\tactions: (context, event) => {\r\n\t\t// \t\t\t\t\tconst goals = {...context}.goals\r\n\t\t//                     goals[event.index].animating = true\r\n\t\t// \t\t\t\t\treturn assign({ goals: goals });\r\n\t\t// \t\t\t\t}\r\n\t\t// \t\t\t},\r\n\t\t// \t\t\tSTOP_ANIMATION: {\r\n\t\t// \t\t\t\tactions: (context, event) => {\r\n\t\t// \t\t\t\t\tconst goals = {...context}.goals\r\n\t\t//                     goals[event.index].animating = false\r\n\t\t// \t\t\t\t\treturn assign({ goals: goals });\r\n\t\t// \t\t\t\t}\r\n\t\t// \t\t\t}\r\n\t\t// \t\t}\r\n\t\t// \t}\r\n\t\t// }\r\n\t});\r\n};\r\n\r\nexport default HeaderMachine;\r\n","import classNames from 'lib/classNames';\r\nimport React, { Fragment, useContext } from 'react';\r\nimport { CartContext } from '../index';\r\n\r\nexport default function GoalImageContent({ goal }) {\r\n    const { cart_settings: { money_format }, Utils } = useContext(CartContext);\r\n\r\n    const { badge, reward_type } = goal;\r\n    if (reward_type === 'discount' && badge?.type === 2) {\r\n        const { type, reward } = goal.discount;\r\n        const discount =\r\n          type === \"percentage\"\r\n            ? `${reward}%`\r\n            : Utils.formatMoney(\r\n                reward * 100 * Number(window.Shopify.currency.rate),\r\n                money_format.replace(`money`, `\"money mu-font-bold\"`)\r\n              );\r\n        return (\r\n          <Fragment>\r\n            <span dangerouslySetInnerHTML={{ __html: discount }} />\r\n            <span>Off</span>\r\n          </Fragment>\r\n        );\r\n    } else if (reward_type === 'manual') {\r\n        switch (badge?.type) {\r\n            case 2:\r\n                return (\r\n                    <Fragment>\r\n                        <span className={classNames('text-9px')}>Express</span>\r\n                        <span className={classNames('text-9px')} style={{ marginBottom: '2px' }}>\r\n                            shipping\r\n                        </span>\r\n                        <svg\r\n                            width=\"22\"\r\n                            height=\"14.67\"\r\n                            viewBox=\"0 0 33 22\"\r\n                            fill=\"none\"\r\n                            xmlns=\"http://www.w3.org/2000/svg\"\r\n                        >\r\n                            <path\r\n                                d=\"M3.82105 13.0625L2.77895 11H10.0737L9.24 8.9375H2.43158L1.38947 6.875H12.2274L11.3937 4.8125H1.19495L0 2.75H5.21053C5.21053 2.02065 5.50331 1.32118 6.02446 0.805456C6.54561 0.289731 7.25245 0 7.98947 0H24.6632V5.5H28.8316L33 11V17.875H30.2211C30.2211 18.969 29.7819 20.0182 29.0002 20.7918C28.2184 21.5654 27.1582 22 26.0526 22C24.9471 22 23.8868 21.5654 23.1051 20.7918C22.3234 20.0182 21.8842 18.969 21.8842 17.875H16.3263C16.3263 18.969 15.8871 20.0182 15.1054 20.7918C14.3237 21.5654 13.2634 22 12.1579 22C11.0524 22 9.99211 21.5654 9.21038 20.7918C8.42865 20.0182 7.98947 18.969 7.98947 17.875H5.21053V13.0625H3.82105ZM26.0526 19.9375C26.6054 19.9375 27.1355 19.7202 27.5264 19.3334C27.9173 18.9466 28.1368 18.422 28.1368 17.875C28.1368 17.328 27.9173 16.8034 27.5264 16.4166C27.1355 16.0298 26.6054 15.8125 26.0526 15.8125C25.4999 15.8125 24.9697 16.0298 24.5789 16.4166C24.188 16.8034 23.9684 17.328 23.9684 17.875C23.9684 18.422 24.188 18.9466 24.5789 19.3334C24.9697 19.7202 25.4999 19.9375 26.0526 19.9375ZM28.1368 7.5625H24.6632V11H30.8602L28.1368 7.5625ZM12.1579 19.9375C12.7107 19.9375 13.2408 19.7202 13.6317 19.3334C14.0225 18.9466 14.2421 18.422 14.2421 17.875C14.2421 17.328 14.0225 16.8034 13.6317 16.4166C13.2408 16.0298 12.7107 15.8125 12.1579 15.8125C11.6051 15.8125 11.075 16.0298 10.6841 16.4166C10.2933 16.8034 10.0737 17.328 10.0737 17.875C10.0737 18.422 10.2933 18.9466 10.6841 19.3334C11.075 19.7202 11.6051 19.9375 12.1579 19.9375Z\"\r\n                                fill=\"currentColor\"\r\n                            />\r\n                        </svg>\r\n                    </Fragment>\r\n                );\r\n            case 3:\r\n                return (\r\n                    <svg\r\n                        width=\"33\"\r\n                        height=\"22\"\r\n                        viewBox=\"0 0 33 22\"\r\n                        fill=\"none\"\r\n                        xmlns=\"http://www.w3.org/2000/svg\"\r\n                    >\r\n                        <path\r\n                            d=\"M3.82105 13.0625L2.77895 11H10.0737L9.24 8.9375H2.43158L1.38947 6.875H12.2274L11.3937 4.8125H1.19495L0 2.75H5.21053C5.21053 2.02065 5.50331 1.32118 6.02446 0.805456C6.54561 0.289731 7.25245 0 7.98947 0H24.6632V5.5H28.8316L33 11V17.875H30.2211C30.2211 18.969 29.7819 20.0182 29.0002 20.7918C28.2184 21.5654 27.1582 22 26.0526 22C24.9471 22 23.8868 21.5654 23.1051 20.7918C22.3234 20.0182 21.8842 18.969 21.8842 17.875H16.3263C16.3263 18.969 15.8871 20.0182 15.1054 20.7918C14.3237 21.5654 13.2634 22 12.1579 22C11.0524 22 9.99211 21.5654 9.21038 20.7918C8.42865 20.0182 7.98947 18.969 7.98947 17.875H5.21053V13.0625H3.82105ZM26.0526 19.9375C26.6054 19.9375 27.1355 19.7202 27.5264 19.3334C27.9173 18.9466 28.1368 18.422 28.1368 17.875C28.1368 17.328 27.9173 16.8034 27.5264 16.4166C27.1355 16.0298 26.6054 15.8125 26.0526 15.8125C25.4999 15.8125 24.9697 16.0298 24.5789 16.4166C24.188 16.8034 23.9684 17.328 23.9684 17.875C23.9684 18.422 24.188 18.9466 24.5789 19.3334C24.9697 19.7202 25.4999 19.9375 26.0526 19.9375ZM28.1368 7.5625H24.6632V11H30.8602L28.1368 7.5625ZM12.1579 19.9375C12.7107 19.9375 13.2408 19.7202 13.6317 19.3334C14.0225 18.9466 14.2421 18.422 14.2421 17.875C14.2421 17.328 14.0225 16.8034 13.6317 16.4166C13.2408 16.0298 12.7107 15.8125 12.1579 15.8125C11.6051 15.8125 11.075 16.0298 10.6841 16.4166C10.2933 16.8034 10.0737 17.328 10.0737 17.875C10.0737 18.422 10.2933 18.9466 10.6841 19.3334C11.075 19.7202 11.6051 19.9375 12.1579 19.9375Z\"\r\n                            fill=\"currentColor\"\r\n                        />\r\n                    </svg>\r\n                );\r\n        }\r\n    } else if (reward_type ===  'free_shipping') {\r\n        switch (badge?.type) {\r\n            case 2:\r\n                return (\r\n                    <Fragment>\r\n                        <span className={classNames('text-9px')}>Free</span>\r\n                        <span className={classNames('text-9px')} style={{ marginBottom: '2px' }}>\r\n                            shipping\r\n                        </span>\r\n                        <svg\r\n                            width=\"22\"\r\n                            height=\"14.67\"\r\n                            viewBox=\"0 0 33 22\"\r\n                            fill=\"none\"\r\n                            xmlns=\"http://www.w3.org/2000/svg\"\r\n                        >\r\n                            <path\r\n                                d=\"M3.82105 13.0625L2.77895 11H10.0737L9.24 8.9375H2.43158L1.38947 6.875H12.2274L11.3937 4.8125H1.19495L0 2.75H5.21053C5.21053 2.02065 5.50331 1.32118 6.02446 0.805456C6.54561 0.289731 7.25245 0 7.98947 0H24.6632V5.5H28.8316L33 11V17.875H30.2211C30.2211 18.969 29.7819 20.0182 29.0002 20.7918C28.2184 21.5654 27.1582 22 26.0526 22C24.9471 22 23.8868 21.5654 23.1051 20.7918C22.3234 20.0182 21.8842 18.969 21.8842 17.875H16.3263C16.3263 18.969 15.8871 20.0182 15.1054 20.7918C14.3237 21.5654 13.2634 22 12.1579 22C11.0524 22 9.99211 21.5654 9.21038 20.7918C8.42865 20.0182 7.98947 18.969 7.98947 17.875H5.21053V13.0625H3.82105ZM26.0526 19.9375C26.6054 19.9375 27.1355 19.7202 27.5264 19.3334C27.9173 18.9466 28.1368 18.422 28.1368 17.875C28.1368 17.328 27.9173 16.8034 27.5264 16.4166C27.1355 16.0298 26.6054 15.8125 26.0526 15.8125C25.4999 15.8125 24.9697 16.0298 24.5789 16.4166C24.188 16.8034 23.9684 17.328 23.9684 17.875C23.9684 18.422 24.188 18.9466 24.5789 19.3334C24.9697 19.7202 25.4999 19.9375 26.0526 19.9375ZM28.1368 7.5625H24.6632V11H30.8602L28.1368 7.5625ZM12.1579 19.9375C12.7107 19.9375 13.2408 19.7202 13.6317 19.3334C14.0225 18.9466 14.2421 18.422 14.2421 17.875C14.2421 17.328 14.0225 16.8034 13.6317 16.4166C13.2408 16.0298 12.7107 15.8125 12.1579 15.8125C11.6051 15.8125 11.075 16.0298 10.6841 16.4166C10.2933 16.8034 10.0737 17.328 10.0737 17.875C10.0737 18.422 10.2933 18.9466 10.6841 19.3334C11.075 19.7202 11.6051 19.9375 12.1579 19.9375Z\"\r\n                                fill=\"currentColor\"\r\n                            />\r\n                        </svg>\r\n                    </Fragment>\r\n                );\r\n            case 3:\r\n                return (\r\n                    <svg\r\n                        width=\"33\"\r\n                        height=\"22\"\r\n                        viewBox=\"0 0 33 22\"\r\n                        fill=\"none\"\r\n                        xmlns=\"http://www.w3.org/2000/svg\"\r\n                    >\r\n                        <path\r\n                            d=\"M3.82105 13.0625L2.77895 11H10.0737L9.24 8.9375H2.43158L1.38947 6.875H12.2274L11.3937 4.8125H1.19495L0 2.75H5.21053C5.21053 2.02065 5.50331 1.32118 6.02446 0.805456C6.54561 0.289731 7.25245 0 7.98947 0H24.6632V5.5H28.8316L33 11V17.875H30.2211C30.2211 18.969 29.7819 20.0182 29.0002 20.7918C28.2184 21.5654 27.1582 22 26.0526 22C24.9471 22 23.8868 21.5654 23.1051 20.7918C22.3234 20.0182 21.8842 18.969 21.8842 17.875H16.3263C16.3263 18.969 15.8871 20.0182 15.1054 20.7918C14.3237 21.5654 13.2634 22 12.1579 22C11.0524 22 9.99211 21.5654 9.21038 20.7918C8.42865 20.0182 7.98947 18.969 7.98947 17.875H5.21053V13.0625H3.82105ZM26.0526 19.9375C26.6054 19.9375 27.1355 19.7202 27.5264 19.3334C27.9173 18.9466 28.1368 18.422 28.1368 17.875C28.1368 17.328 27.9173 16.8034 27.5264 16.4166C27.1355 16.0298 26.6054 15.8125 26.0526 15.8125C25.4999 15.8125 24.9697 16.0298 24.5789 16.4166C24.188 16.8034 23.9684 17.328 23.9684 17.875C23.9684 18.422 24.188 18.9466 24.5789 19.3334C24.9697 19.7202 25.4999 19.9375 26.0526 19.9375ZM28.1368 7.5625H24.6632V11H30.8602L28.1368 7.5625ZM12.1579 19.9375C12.7107 19.9375 13.2408 19.7202 13.6317 19.3334C14.0225 18.9466 14.2421 18.422 14.2421 17.875C14.2421 17.328 14.0225 16.8034 13.6317 16.4166C13.2408 16.0298 12.7107 15.8125 12.1579 15.8125C11.6051 15.8125 11.075 16.0298 10.6841 16.4166C10.2933 16.8034 10.0737 17.328 10.0737 17.875C10.0737 18.422 10.2933 18.9466 10.6841 19.3334C11.075 19.7202 11.6051 19.9375 12.1579 19.9375Z\"\r\n                            fill=\"currentColor\"\r\n                        />\r\n                    </svg>\r\n                );\r\n        }\r\n    }\r\n    \r\n    \r\n    else if (reward_type === 'gift') {\r\n        switch (badge?.type) {\r\n            case 2:\r\n                return (\r\n                    <Fragment>\r\n                        <span className={classNames('text-11px')}>Free</span>\r\n                        <span className={classNames('text-11px')}>Gift</span>\r\n                        <svg\r\n                            xmlns=\"http://www.w3.org/2000/svg\"\r\n                            viewBox=\"0 0 20 20\"\r\n                            fill=\"currentColor\"\r\n                            className={classNames('w-4 h-4')}\r\n                        >\r\n                            <path\r\n                                fillRule=\"evenodd\"\r\n                                d=\"M14 6a2.5 2.5 0 00-4-3 2.5 2.5 0 00-4 3H3.25C2.56 6 2 6.56 2 7.25v.5C2 8.44 2.56 9 3.25 9h6V6h1.5v3h6C17.44 9 18 8.44 18 7.75v-.5C18 6.56 17.44 6 16.75 6H14zm-1-1.5a1 1 0 01-1 1h-1v-1a1 1 0 112 0zm-6 0a1 1 0 001 1h1v-1a1 1 0 00-2 0z\"\r\n                                clipRule=\"evenodd\"\r\n                            />\r\n                            <path d=\"M9.25 10.5H3v4.75A2.75 2.75 0 005.75 18h3.5v-7.5zM10.75 18v-7.5H17v4.75A2.75 2.75 0 0114.25 18h-3.5z\" />\r\n                        </svg>\r\n                    </Fragment>\r\n                );\r\n            case 3:\r\n                return (\r\n                    <svg\r\n                        xmlns=\"http://www.w3.org/2000/svg\"\r\n                        viewBox=\"0 0 24 24\"\r\n                        fill=\"currentColor\"\r\n                        className={classNames('w-6 h-6')}\r\n                    >\r\n                        <path d=\"M9.375 3a1.875 1.875 0 000 3.75h1.875v4.5H3.375A1.875 1.875 0 011.5 9.375v-.75c0-1.036.84-1.875 1.875-1.875h3.193A3.375 3.375 0 0112 2.753a3.375 3.375 0 015.432 3.997h3.943c1.035 0 1.875.84 1.875 1.875v.75c0 1.036-.84 1.875-1.875 1.875H12.75v-4.5h1.875a1.875 1.875 0 10-1.875-1.875V6.75h-1.5V4.875C11.25 3.839 10.41 3 9.375 3zM11.25 12.75H3v6.75a2.25 2.25 0 002.25 2.25h6v-9zM12.75 12.75v9h6.75a2.25 2.25 0 002.25-2.25v-6.75h-9z\" />\r\n                    </svg>\r\n                );\r\n        }\r\n    }\r\n\r\n    return null;\r\n}\r\n","import React, { Fragment, useMemo, useContext, useEffect, useState } from 'react';\r\nimport { CartContext } from 'components/cart';\r\nimport classNames from 'lib/classNames';\r\nimport HeaderMachine from '../machines/HeaderMachine';\r\nimport { useMachine } from '@xstate/react';\r\nimport useRefState from 'hooks/useRefState';\r\nimport useCampaign from 'hooks/useCampaign';\r\nimport promisify from 'lib/promisify';\r\nimport { getAllOCUProducts } from './CheckoutButton';\r\nimport Axios from 'axios';\r\nimport { FilterAtuGoals } from '../Utils';\r\nimport GoalImageContent from './GoalImages';\r\n\r\nexport default function HeaderATU({ campaign_id, add_to_unlock, bundlesDiscounts }) {\r\n    const {\r\n        cart_settings: {\r\n            theme: { primary, background },\r\n            font: { color },\r\n            rtl,\r\n            money_format\r\n        },\r\n        campaigns,\r\n        setShowConfetti,\r\n        shopify_cart_items,\r\n        Utils,\r\n        add_to_cart,\r\n        update_cart_item,\r\n        get_total,\r\n        productNotAddedToCart,\r\n        onlyOneItemAddedToCart,\r\n        productAddedToCart,\r\n        discountCode,\r\n        setCartItems,\r\n        AppLocalStorage,\r\n        hasAutoDiscount,\r\n        shipProtectState\r\n    } = useContext(CartContext);\r\n    const [__, setContextCache, contextCache] = useRefState(null);\r\n    const [one_check_up_sell_product_id, ocu_campaign] = useCampaign(\r\n        'one_check_up_sell',\r\n        null,\r\n        true\r\n    )(campaigns, shopify_cart_items);\r\n    const ocu_products = getAllOCUProducts(ocu_campaign);\r\n    const filteredItems = shopify_cart_items.filter((item) => {\r\n        const ocu_product = ocu_products.find(\r\n            ({ product }) => item.product_id.toString() === product?.id\r\n        );\r\n        return ocu_product\r\n            ? ocu_product.include_in_atu\r\n            : !(['free_gift', 'singleton_gift'].includes(item?.product_type?.toLowerCase()) && item?.price === 0)\r\n    });\r\n    const { original, subtotal, autoDiscountGifts } = get_total(null, filteredItems);\r\n    const byQuantity = add_to_unlock.multi_goal_type === 'quantity';\r\n    const headerMachine = useMemo(\r\n        () =>\r\n            HeaderMachine({\r\n                campaign_id,\r\n                goals: FilterAtuGoals(\r\n                    add_to_unlock.goals,\r\n                    !!discountCode?.value || hasAutoDiscount\r\n                ),\r\n                show_badges:add_to_unlock.show_badges,\r\n                setShowConfetti,\r\n                shopify_cart_items: filteredItems,\r\n                original,\r\n                autoDiscountGifts,\r\n                subtotal,\r\n                bundlesDiscounts,\r\n                discountCode,\r\n                byQuantity,\r\n                contextCache: contextCache.current\r\n            }),\r\n        [\r\n            shopify_cart_items,\r\n            add_to_unlock,\r\n            bundlesDiscounts,\r\n            contextCache.current,\r\n            hasAutoDiscount,\r\n            discountCode,\r\n            shipProtectState\r\n        ]\r\n    );\r\n    // const [current, send, service] = useMachine(headerMachine);\r\n    const { context } = headerMachine;\r\nconst hasImage = context.goals.filter(({ goalObject: { badge } }) => add_to_unlock.show_badges).length > 0;\r\n    useEffect(() => {\r\n        const giftGoals = context.goals.filter(\r\n            ({ goalObject }) => goalObject.reward_type === 'gift'\r\n        );\r\n        if (giftGoals.length) {\r\n            handleGifts({\r\n                giftGoals,\r\n                AppLocalStorage,\r\n                Utils,\r\n                discountCode,\r\n                productNotAddedToCart,\r\n                onlyOneItemAddedToCart,\r\n                productAddedToCart,\r\n                setCartItems\r\n            });\r\n        }\r\n    }, [discountCode, shopify_cart_items]);\r\n\r\n    useEffect(() => {\r\n        if (JSON.stringify(context) !== JSON.stringify(contextCache.current)) {\r\n            if (contextCache.current) {\r\n                const showConfettiPreview = context?.goals?.filter(\r\n                    ({ goalObject: { confetti } }, i) =>\r\n                        confetti && !contextCache?.current?.goals[i]?.goalObject?.confetti\r\n                );\r\n                if (showConfettiPreview.length) {\r\n                    setShowConfetti(showConfettiPreview[0].goalObject.confetti_length);\r\n                }\r\n            }\r\n            setContextCache(context);\r\n        }\r\n    }, [context]);\r\n\r\n    const hasLongBadgePrice = context?.goals?.filter(({goalObject}) => {\r\n        const {badge,goal} = goalObject\r\n        if(!badge) return false;\r\n        const formattedGoal = badge?.text?.text.replace('{{goal}}', add_to_unlock.multi_goal_type === 'quantity' ? goal : Utils.formatMoney(goal * 100,money_format));\r\n        const matches = formattedGoal.match(/>(.*?)<|^[^<>]+$/);\r\n        const extractedText =\r\n          matches && matches.length > 1 && matches[1]\r\n            ? matches[1]\r\n            : matches && matches.length > 0\r\n            ? matches[0]\r\n            : \"\";\r\n\r\n        return extractedText\r\n        ? extractedText.length > 8 && extractedText.split(\" \").length > 1\r\n        : false;\r\n    }).length\r\n    \r\n    return (\r\n        <div\r\n            className={classNames('atu-banner px-5 pb-2 mb-px border-b border-gray-400')}\r\n            data-offset={1}\r\n            style={{\r\n                background: add_to_unlock.progress_background\r\n                    ? Utils.formatColor(add_to_unlock.progress_background)\r\n                    : 'inherit',\r\n                paddingBottom: hasImage ? hasLongBadgePrice ? '43px' : \"30px\" : undefined,\r\n            }}\r\n            data-quantity={`${filteredItems.map((item) => item.quantity).reduce((acc, item) => acc + item, 0)}`}\r\n            // data-subtotal={`${subtotal}`}\r\n        >\r\n            <div className={classNames('goal-text w-full')} \r\n            style={{\r\n                marginBottom: hasImage ? '20px': undefined,\r\n            }}\r\n            >\r\n                {context.goals.map(\r\n                    ({ textKey, goalObject, unlocked, previousIsUnlocked, isFirst, isLast }, index) => (\r\n                        <GoalText\r\n                            key={textKey}\r\n                            unlocked={unlocked}\r\n                            bundlesDiscounts={bundlesDiscounts}\r\n                            currentGoal={goalObject}\r\n                            add_to_unlock={add_to_unlock}\r\n                            filteredItems={filteredItems}\r\n                            otherUnlockedDiscounts={context.goals.filter(\r\n                                ({ unlocked, goalObject: { reward_type } }, i) =>\r\n                                    i !== index && unlocked && reward_type === 'discount'\r\n                            )}\r\n                            previousIsUnlocked={previousIsUnlocked}\r\n                            show_all_locked_goals={add_to_unlock.show_all_locked_goals}\r\n                            {...{ isFirst, isLast }}\r\n                        />\r\n                    )\r\n                )}\r\n            </div>\r\n            <div\r\n                className={classNames(\r\n                    'progress-bar-container flex w-full relative mix-blend-darken',\r\n                    add_to_unlock.progress_thick ? 'h-4 rounded-4' : 'h-2 rounded-2'\r\n                )}\r\n                style={{\r\n                    background: Utils.formatColor(add_to_unlock.progress_secondary),\r\n                }}\r\n            >\r\n                <div\r\n                    className={classNames(\r\n                        'progress-bar block transition-width absolute inset-0 duration-500 ease-out z-10',\r\n                        add_to_unlock.progress_thick ? 'h-4 rounded-4' : 'h-2 rounded-2'\r\n                    )}\r\n                    style={{\r\n                        background:\r\n                            context.goals.filter(({ unlocked }) => !unlocked).length > 0\r\n                                ? Utils.formatColor(add_to_unlock.progress_primary)\r\n                                : Utils.formatColor(add_to_unlock.progress_complete),\r\n                        width: `${\r\n                            context.goals.reduce((acc, cur) => {\r\n                                const { unlocked, isFirst, previousIsUnlocked, value } = cur;\r\n                                return isFirst || previousIsUnlocked ? acc + value : acc;\r\n                            }, 0) / context.goals.length\r\n                        }%`\r\n                    }}\r\n                />\r\n                {context.goals.map(({ key,goalObject, isFirst, isLast,unlocked }, index) => (\r\n                    <ProgressBar\r\n                        key={key}\r\n                        add_to_unlock={add_to_unlock}\r\n                        unlocked={unlocked}\r\n                        goal={goalObject}\r\n                        goals={context.goals}\r\n                        isFirst={isFirst}\r\n                        isLast={isLast}\r\n                        borderColor=\"#718096\"\r\n                    />\r\n                ))}\r\n            </div>\r\n            {/* {context.goals.length > 1 && ( */}\r\n            <div className={classNames('goals flex justify-between text-gray-600 relative h-3')}>\r\n                {context.goals.map(\r\n                    ({ labelKey, goalObject, isLast }, index) => {\r\n                        const { goal_text,badge,reward_type, show_goal_text } = goalObject;\r\n                        if (!show_goal_text || !!add_to_unlock.show_badges) return null;\r\n                        return (\r\n                            <div\r\n                                key={labelKey}\r\n                                className={classNames('goal absolute transform w-max text-center')}\r\n                                data-goal={Utils.formatMoney(goalObject.goal * 100 * (parseFloat(window.Shopify.currency.rate) || 1), money_format)}\r\n                                style={{\r\n                                    left: !rtl && `${((index + 1) / context.goals.length) * 100}%`,\r\n                                    right: rtl && `${((index + 1) / context.goals.length) * 100}%`,\r\n                                    width: hasImage ? `${100 / context.goals.length}%` : 'fit-content',\r\n                                    whiteSpace: 'nowrap',\r\n                                    fontSize: Utils.em(goal_text.font_size),\r\n                                    color: Utils.formatColor(goal_text.color),\r\n                                    '--transform-translate-x': hasImage ? `${100 * (rtl ? 1 : -1)}%` : `${\r\n                                        (isLast ? 100 : 50) * (rtl ? 1 : -1)\r\n                                    }%`\r\n                                }}\r\n                            >\r\n                                {goal_text.text}\r\n                            </div>\r\n                        );\r\n                    }\r\n                )}\r\n            </div>\r\n            {/* )} */}\r\n        </div>\r\n    );\r\n}\r\n\r\nconst ProgressBar = ({ isFirst, isLast, borderColor, goal,goals, unlocked,add_to_unlock }) => {\r\n    const {\r\n        cart_settings: {\r\n            theme: { background },\r\n            rtl,\r\n            money_format\r\n        },\r\n        Utils\r\n    } = useContext(CartContext);\r\n    const {reward_type, badge } = goal;\r\n    const formattedGoal = badge?.text?.text.replace('{{goal}}', add_to_unlock.multi_goal_type === 'quantity' ? goal.goal : Utils.formatMoney(goal.goal * 100,money_format));\r\n    const hasUploadedImage = badge?.type === 1 && badge?.image\r\n    const roundedFirst = add_to_unlock.progress_thick ? rtl ? 'rounded-r-4' : 'rounded-l-4' :  rtl ? 'rounded-r-2' : 'rounded-l-2';\r\n    const roundedLast = add_to_unlock.progress_thick ? rtl ? 'rounded-l-4' : 'rounded-r-4' :  rtl ? 'rounded-l-2' : 'rounded-r-2';\r\n    const goalsLength = goals.length\r\n    const direction = (size) => ({[rtl? 'right' : 'left']: size})\r\n    // right-1/2\r\n    // left-1/2\r\n    // right-4\r\n    // left-4\r\n    const completed = goals.filter(({ unlocked }) => !unlocked).length === 0\r\n    \r\n    return (\r\n        <div\r\n            className={classNames('badge-goal relative flex-1 bg-transparent z-20 mix-blend-overlay', \r\n            add_to_unlock.progress_thick ? 'h-4' : 'h-2',\r\n            {\r\n                [roundedFirst]: isFirst,\r\n                [roundedLast]: isLast,\r\n                'border-r': !add_to_unlock.show_badges && !rtl && !isLast,\r\n                'border-l': !add_to_unlock.show_badges && rtl && !isLast\r\n            })}\r\n            style={{ borderColor, display: 'block' }}\r\n        >\r\n            {!!add_to_unlock.show_badges && badge && <div \r\n                        className={classNames('z-20 w-55px h-55px rounded-full border-3 absolute top-1/2 transform text-12px font-bold leading-tight')} \r\n                        style={{\r\n                            ...direction(goalsLength > 2 ? '50%' : goalsLength === 1 ? '80%' : isFirst ? '85%' : '70%'),\r\n                            background: Utils.formatColor(background),\r\n                            color: Utils.formatColor(add_to_unlock.progress_primary),\r\n                            '--transform-translate-y': '-50%',\r\n                            '--transform-translate-x': !(goalsLength === 2 && isFirst) ? '-50%' : 0,\r\n                            borderColor: Utils.formatColor(unlocked ? completed ? add_to_unlock.progress_complete : add_to_unlock.progress_primary : add_to_unlock.progress_secondary),\r\n                        }}>\r\n                            <div style={{\r\n                                backgroundImage: hasUploadedImage ? `url(${badge?.image})` : undefined\r\n                            }} className={classNames('relative bg-cover bg-center flex items-center justify-center flex-col w-full h-full rounded-full')}>\r\n                                {!hasUploadedImage && <GoalImageContent goal={goal} />}\r\n                                <span className={classNames('absolute w-full text-center', {\r\n                                    hidden: badge.show_text !== true\r\n                                })} style={{top: '53px', \r\n                                    fontSize: Utils.em(badge?.text?.font_size),\r\n                                    color: Utils.formatColor(badge?.text?.color),\r\n                            }} dangerouslySetInnerHTML={{__html:formattedGoal}}/>\r\n                            </div>\r\n                    </div>\r\n            }\r\n        </div>\r\n    );\r\n};\r\n\r\nconst textIsEmpty = (html) => {\r\n    const element = document.createElement('span');\r\n    element.innerHTML = html;\r\n    return element.innerText.length === 0;\r\n};\r\n\r\nconst GoalText = ({\r\n    currentGoal,\r\n    add_to_unlock: { multi_goal_type },\r\n    unlocked,\r\n    otherUnlockedDiscounts,\r\n    previousIsUnlocked,\r\n    show_all_locked_goals,\r\n    bundlesDiscounts,\r\n    filteredItems,\r\n    isLast,\r\n    isFirst\r\n}) => {\r\n    const {\r\n        cart_settings: {\r\n            font: { color },\r\n            money_format\r\n        },\r\n        Utils,\r\n        get_total,\r\n        discountCode\r\n    } = useContext(CartContext);\r\n    const { goal, reward_type } = currentGoal;\r\n    const reward = currentGoal[reward_type];\r\n    const isDiscount = reward_type === 'discount';\r\n    const notTheHighestDiscount = isDiscount\r\n        ? !!otherUnlockedDiscounts.find(\r\n              ({ goalObject: { discount } }) => discount.reward > reward.reward\r\n          )\r\n        : false;\r\n    const text = unlocked ? reward.after : reward.before;\r\n    // if (\r\n    //   textIsEmpty(text) ||\r\n    //   notTheHighestDiscount ||\r\n    //   previousIsUnlocked === false ||\r\n    //   (!isLast && !show_all_locked_goals)\r\n    // )\r\n    //   return null;\r\n    if (\r\n        !textIsEmpty(text) &&\r\n        !notTheHighestDiscount &&\r\n        ((show_all_locked_goals && unlocked) ||\r\n            (isFirst && !unlocked) ||\r\n            (isLast && unlocked) ||\r\n            (!unlocked && previousIsUnlocked))\r\n    )\r\n        //   if(!textIsEmpty(text) && !notTheHighestDiscount &&\r\n        //   ((isFirst && ((unlocked && show_all_locked_goals) || !unlocked) ) ||\r\n        //   (isLast && (unlocked || (!unlocked && previousIsUnlocked)))) ||\r\n        //   (!isLast && !isFirst && ((unlocked && show_all_locked_goals) || (!unlocked && previousIsUnlocked)))\r\n        // )\r\n        return (\r\n            <div\r\n                className={classNames('emoji-image mb-0 text-center')}\r\n                style={{ color }}\r\n                dangerouslySetInnerHTML={{\r\n                    __html: formateText(\r\n                        text,\r\n                        reward_type,\r\n                        reward,\r\n                        (v) => Utils.formatMoney(v, money_format),\r\n                        get_total,\r\n                        goal,\r\n                        multi_goal_type,\r\n                        filteredItems,\r\n                        bundlesDiscounts,\r\n                        discountCode\r\n                    )\r\n                }}\r\n            ></div>\r\n        );\r\n    else return null;\r\n};\r\n\r\nconst formateText = (\r\n    text,\r\n    rewardType,\r\n    { type, reward },\r\n    formatMoney,\r\n    get_total,\r\n    goal,\r\n    multi_goal_type,\r\n    filteredItems,\r\n    bundlesDiscounts,\r\n    discountCode\r\n) => {\r\n    const rate = Number(window.Shopify.currency.rate);\r\n    let replacedReward =\r\n      rewardType === \"discount\"\r\n        ? type === \"percentage\"\r\n          ? `${reward}%`\r\n          : formatMoney(reward * rate * 100)\r\n        : \"\";\r\n    const formattedGoal = parseInt(goal * 100);\r\n    const { subtotal, original } = get_total(null, filteredItems);\r\n\tconst totalPrice = filteredItems.reduce((acc, cur) => {\r\n\t\tlet price;\r\n\t\tif(cur.selling_plan_allocation && cur.selling_plan_allocation.compare_at_price) {\r\n\t\t\tprice = cur.selling_plan_allocation.compare_at_price;\r\n\t\t} else {\r\n\t\t\tprice = cur.price;\r\n\t\t}\r\n\t\treturn acc + price * cur.quantity - cur.discounts?.reduce((acc, { amount }) => acc + amount, 0);\r\n\t}, 0);\r\n    const currentAmount = rewardType === 'free_shipping' ? (window.mu_include_sub_full_price ? totalPrice : subtotal) : original - bundlesDiscounts;\r\n    let replacedAmount = formatMoney(formattedGoal - currentAmount);\r\n    let replacedQuantity =\r\n        goal - filteredItems.map((item) => item.quantity).reduce((acc, item) => acc + item, 0);\r\n\r\n    return text\r\n        .replace(\r\n            '{{amount_left}}',\r\n            multi_goal_type === 'quantity' ? replacedQuantity : replacedAmount\r\n        )\r\n        .replace('{{reward}}', replacedReward)\r\n        .replace('{{goal}}', formatMoney(goal * 100))\r\n        .replace('https://www.amabattery.co.za/wpimages/wp4cb45f10.gif', 'https://monster-upsells-images-prod.s3.us-east-2.amazonaws.com/wp4cb45f10.gif')\r\n};\r\n\r\nfunction pickRandomGift({ AppLocalStorage, variants, key }) {\r\n    const cachedVariant = AppLocalStorage.getItem(key);\r\n    const generateVariant = () => {\r\n        const variant = [...variants].sort(() => 0.5 - Math.random())[0];\r\n        AppLocalStorage.setItem(\r\n            key,\r\n            JSON.stringify({\r\n                cached_at: Date.now(),\r\n                variant\r\n            })\r\n        );\r\n        return variant;\r\n    };\r\n    if (cachedVariant) {\r\n        const { cached_at, variant } = JSON.parse(cachedVariant);\r\n        const eleven_hours = 12 * 60 * 60 * 100;\r\n        if (Date.now() - cached_at > eleven_hours) {\r\n            return generateVariant();\r\n        }\r\n        return variant;\r\n    }\r\n    return generateVariant();\r\n}\r\n\r\nfunction getVariants(products) {\r\n    return products.map(({ variants }) => variants).flat();\r\n}\r\n\r\nfunction addedVariants(variants, productAddedToCart, type = 'find') {\r\n    if (!['find', 'filter'].includes(type)) throw new Error('type must be find or filter');\r\n    return variants[type]((variant) => productAddedToCart(variant, true));\r\n}\r\n\r\nasync function handleGifts({\r\n    giftGoals,\r\n    AppLocalStorage,\r\n    Utils,\r\n    discountCode,\r\n    productNotAddedToCart,\r\n    onlyOneItemAddedToCart,\r\n    productAddedToCart,\r\n    setCartItems\r\n}) {\r\n    const { add, remove } = giftGoals.reduce(\r\n        (acc, goal, index) => {\r\n            const { campaign_id, key, goalObject } = goal;\r\n            const { product, multi_gift_select, previous_gift } = goalObject.gift;\r\n            const products =\r\n                goalObject.gift.products ||\r\n                [\r\n                    goalObject.gift.product\r\n                        ? { variants: [{ id: goalObject.gift.product.variant_id }] }\r\n                        : null\r\n                ].filter(Boolean);\r\n            const previous_goal = previous_gift === 'remove' && index > 0 && giftGoals[index - 1];\r\n            const next_goal = index < giftGoals.length - 1 && giftGoals[index + 1];\r\n            const giftsCount = products?.length;\r\n            const isRandom = multi_gift_select === 'random';\r\n            const GiftMustBeAddedManually =\r\n                !isRandom && (giftsCount === 1 ? !Utils.productHasOneVariant(products[0]) : true);\r\n            const variants = getVariants(\r\n                products ||\r\n                    [product ? { variants: [{ id: product.variant_id }] } : null].filter(Boolean)\r\n            );\r\n            const oneVariantIsAdded = addedVariants(variants, productAddedToCart);\r\n            const randomVariant =\r\n                !oneVariantIsAdded &&\r\n                pickRandomGift({\r\n                    AppLocalStorage,\r\n                    variants,\r\n                    key: `multi_gifts_${campaign_id}_${key}`\r\n                });\r\n            const { origin } = window.location;\r\n            variants.forEach((variant) => {\r\n                const action = handleGiftProduct({\r\n                    goal,\r\n                    variant,\r\n                    discountCode,\r\n                    productNotAddedToCart,\r\n                    onlyOneItemAddedToCart,\r\n                    productAddedToCart\r\n                });\r\n                if (action) {\r\n                    if (action === 'add' && products) {\r\n                        if (previous_goal && !GiftMustBeAddedManually) {\r\n                            const gift = previous_goal.goalObject.gift;\r\n                            const previous_goal_products =\r\n                                gift.products ||\r\n                                [\r\n                                    gift.product\r\n                                        ? { variants: [{ id: gift.product.variant_id }] }\r\n                                        : null\r\n                                ].filter(Boolean);\r\n                            const added_variants = addedVariants(\r\n                                getVariants(previous_goal_products),\r\n                                productAddedToCart,\r\n                                'filter'\r\n                            );\r\n                            added_variants.forEach((variant) => {\r\n                                acc['remove'].push({ id: variant.id });\r\n                            });\r\n                        }\r\n                        if (\r\n                            next_goal &&\r\n                            next_goal.unlocked &&\r\n                            next_goal.goalObject.gift.previous_gift === 'remove' &&\r\n                            variants.find((v) => v.id === variant.id)\r\n                        ) {\r\n                            return;\r\n                        }\r\n                        if (\r\n                            GiftMustBeAddedManually ||\r\n                            (isRandom && variant.id !== randomVariant.id)\r\n                        ) {\r\n                            return;\r\n                        }\r\n                    }\r\n                    acc[action].push({ id: variant.id });\r\n                }\r\n            });\r\n            return acc;\r\n        },\r\n        { add: [], remove: [] }\r\n    );\r\n    if (add.length) {\r\n        const updates = add.reduce((acc, { id }) => ({ ...acc, [id]: 1 }), {});\r\n        const { data } = await Axios.post(Utils.getLangPath('cart/update.js'), { updates });\r\n        if (data?.items) {\r\n            setCartItems(data.items, data.cart_level_discount_applications);\r\n        }\r\n    }\r\n    if (remove.length) {\r\n        const updates = remove.reduce((acc, { id }) => ({ ...acc, [id]: 0 }), {});\r\n        const { data } = await Axios.post(Utils.getLangPath('cart/update.js'), { updates });\r\n        if (data?.items) {\r\n            setCartItems(data.items.filter(({quantity}) => quantity !== 0), data.cart_level_discount_applications);\r\n        }\r\n    }\r\n}\r\nfunction handleGiftProduct({\r\n    goal,\r\n    variant,\r\n    discountCode,\r\n    productNotAddedToCart,\r\n    onlyOneItemAddedToCart,\r\n    productAddedToCart\r\n}) {\r\n    const { unlocked } = goal;\r\n    if (!variant) return;\r\n    // we're using !onlyOneItemAddedToCart(product) here, because add will force the item quantity to be 1\r\n    if (\r\n        unlocked &&\r\n        (productNotAddedToCart(variant, true) || !onlyOneItemAddedToCart(variant, true))\r\n    ) {\r\n        return 'add';\r\n    } else if (!unlocked && productAddedToCart(variant, true)) {\r\n        return 'remove';\r\n    }\r\n    return null;\r\n}\r\n","function addPrefix(string, prefix = 'mu-') {\r\n\tconst splice = (string, index, prefix) => string.slice(0, index) + prefix + string.slice(index);\r\n\treturn string\r\n\t\t.split(' ')\r\n\t\t.map((c) => {\r\n\t\t\tif (c.indexOf(':') !== -1) {\r\n\t\t\t\treturn splice(c, c.indexOf(':') + 1, prefix);\r\n\t\t\t}\r\n\t\t\treturn prefix + c;\r\n\t\t})\r\n\t\t.join(' ');\r\n}\r\n\r\nmodule.exports = addPrefix;\r\n","import { useState, useRef } from 'react';\r\n\r\nconst useRefState = (initialState, log) => {\r\n    const [state, setState] = useState(initialState);\r\n    if (log) console.log(log, state);\r\n    const stateRef = useRef(initialState);\r\n    return [\r\n        state,\r\n        newState => {\r\n            stateRef.current = newState;\r\n            setState(newState);\r\n        },\r\n        stateRef\r\n    ];\r\n};\r\n\r\nexport default useRefState;\r\n","import { getIn, setIn, hasIn } from 'immutable';\r\nimport { NEW_CAMPAIGN_INITIAL_STATE, SHOP_DEFAULT_SETTINGS } from 'lib/globals';\r\n\r\nconst useBindToContext = (\r\n    BindToContext,\r\n    value = null,\r\n    onChange = null,\r\n    specificValidation = null,\r\n    getError = null,\r\n    validation = true,\r\n    debug = false\r\n) => {\r\n    if (debug) console.log('value changed', value);\r\n    if (!BindToContext) return [value, onChange];\r\n    const [\r\n        { state, setItem, validationErrors, validate },\r\n        path,\r\n        inlineOnChange = null,\r\n        type = 'campaign'\r\n    ] = BindToContext;\r\n    const hasError = !!(typeof getError === 'boolean' ? getError : validationErrors[path]);\r\n\r\n    //in case we add new settings we want out ui to work with old ones\r\n    let returnValue = getIn(state, path.split('.'));\r\n\r\n    // const onRender = [];\r\n    if ([null, undefined].includes(returnValue)) {\r\n        returnValue =\r\n            type === 'campaign'\r\n                ? getIn(NEW_CAMPAIGN_INITIAL_STATE(), path.split('.'))\r\n                : getIn(SHOP_DEFAULT_SETTINGS('english'), path.replace('settings.', '').split('.'));\r\n        // onRender.push(() => setItem(path, returnValue));\r\n    }\r\n\r\n    return [\r\n        returnValue,\r\n        value => {\r\n            setItem(path, value);\r\n            if (inlineOnChange) {\r\n                inlineOnChange(value, setItem);\r\n            }\r\n            if (validate && validation && hasError)\r\n                validate(setIn(state, path.split('.'), value), [specificValidation || path]);\r\n        },\r\n        hasError\r\n        // onRender\r\n    ]; //we're returning here [ value , onChange, hasError ]\r\n};\r\nexport default useBindToContext;\r\n","import React, { useContext, useState, useEffect, useRef } from 'react';\r\nimport loadable from '@loadable/component';\r\nimport { CartContext } from 'components/cart';\r\nimport useCampaign from 'hooks/useCampaign';\r\nimport classNames from 'lib/classNames';\r\nimport { FilterAtuGoals } from '../Utils';\r\nconst Scary = loadable(() => import('./scary'));\r\nconst Announcement = loadable(() => import('./announcement'));\r\nconst HeaderATU = loadable(() => import('./Header_ATU'));\r\n\r\nconst Header = (props) => {\r\n    const {\r\n        cart_settings: {\r\n            header,\r\n            theme: { background, primary },\r\n            rtl,\r\n            curved,\r\n            scary = {},\r\n            announcement = {},\r\n            modules: { checkout_button },\r\n        },\r\n        slider: { slickGoTo, active_slide },\r\n        scrollbars_ref,\r\n        shopify_cart_items,\r\n        campaigns,\r\n        Utils,\r\n        isPreview,\r\n        close,\r\n        productAddedToCart,\r\n        discountCode\r\n    } = useContext(CartContext);\r\n    const loadingBarRef = useRef();\r\n    const back = () => {\r\n        slickGoTo(0);\r\n        scrollbars_ref.scrollTop = 0;\r\n    };\r\n    const [add_to_unlock_product_id, add_to_unlock_campaign, isGlobal] = useCampaign(\r\n        'add_to_unlock',\r\n        null,\r\n        true\r\n    )(campaigns, shopify_cart_items);\r\n    const { add_to_unlock, campaign_key } = add_to_unlock_campaign || {};\r\n    const goals = add_to_unlock?.goals || [];\r\n    const filterGoalsBasedOnDiscount = FilterAtuGoals(goals, !!discountCode);\r\n    const CAN_RENDER_ADD_TO_UNLOCK =\r\n        filterGoalsBasedOnDiscount.length &&\r\n        add_to_unlock?.isActive &&\r\n        (productAddedToCart({ id: add_to_unlock_product_id }) ||\r\n            (isGlobal && shopify_cart_items.length));\r\n    const bundlesDiscounts = Utils.getDiscount({\r\n        campaigns,\r\n        items: shopify_cart_items,\r\n        getBundlesOnly: true\r\n    });\r\n    return (\r\n        <div\r\n            id=\"mu-header\"\r\n            className={classNames({\r\n                shadow: !CAN_RENDER_ADD_TO_UNLOCK && !scary.placement === 'top'\r\n            })}\r\n            ref={props.headerRef}\r\n            // style={{\r\n            // \tbackground: Utils.formatColor(background),\r\n            // \tborderRadius: curved ? \"16px 16px 0px 0px\" : \"\"\r\n            // }}\r\n        >\r\n            <div\r\n                className={classNames('flex items-center relative')}\r\n                style={{\r\n                    background: Utils.formatColor(header.background),\r\n                    color: Utils.formatColor(header.title.color),\r\n                    borderRadius: curved ? '15px 15px 0px 0px' : ''\r\n                }}\r\n            >\r\n                <div\r\n                    className={classNames('px-5 py-3',\r\n                        // rtl ? 'pl-2' : 'pr-2',\r\n                        active_slide !== 1 ? 'opacity-0' : 'cursor-pointer'\r\n                    )}\r\n                    onClick={active_slide !== 1 ? () => {}: () => back()}\r\n                >\r\n                    <svg\r\n                        aria-hidden=\"true\"\r\n                        style={{ width: 15, height: 15 }}\r\n                        focusable=\"false\"\r\n                        data-icon=\"chevron-left\"\r\n                        onClick={() => back()}\r\n                        className={classNames('cursor-pointer')}\r\n                        role=\"img\"\r\n                        xmlns=\"http://www.w3.org/2000/svg\"\r\n                        viewBox={rtl ? '0 0 320 512' : '0 0 384 512'}\r\n                    >\r\n                        {!rtl && (\r\n                            <path\r\n                                fill=\"currentColor\"\r\n                                d=\"M34.52 239.03L228.87 44.69c9.37-9.37 24.57-9.37 33.94 0l22.67 22.67c9.36 9.36 9.37 24.52.04 33.9L131.49 256l154.02 154.75c9.34 9.38 9.32 24.54-.04 33.9l-22.67 22.67c-9.37 9.37-24.57 9.37-33.94 0L34.52 272.97c-9.37-9.37-9.37-24.57 0-33.94z\"\r\n                            ></path>\r\n                        )}\r\n                        {rtl && (\r\n                            <path\r\n                                fill=\"currentColor\"\r\n                                d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"\r\n                            ></path>\r\n                        )}\r\n                    </svg>\r\n                </div>\r\n                <span\r\n                    className={classNames('cart-header flex-1 flex-grow text-center font-bold py-3')}\r\n                    style={{\r\n                        fontSize: Utils.em(header.title.font_size),\r\n                        fontWeight: header.title.font_weight\r\n                    }}\r\n                >\r\n                    {header.title.text}\r\n                </span>\r\n                <div className={classNames(\"px-5 py-3\",\r\n                    // rtl ? 'pr-2' : 'pl-2',\r\n                    'cursor-pointer')}\r\n                    onClick={() => (close ? close() : null)}\r\n                >\r\n                    <svg\r\n                        aria-hidden=\"true\"\r\n                        style={{ width: 15, height: 15 }}\r\n                        focusable=\"false\"\r\n                        data-icon=\"times\"\r\n                        className={classNames('cursor-pointer')}\r\n                        role=\"img\"\r\n                        xmlns=\"http://www.w3.org/2000/svg\"\r\n                        viewBox=\"0 0 384 512\"\r\n                    >\r\n                        <path\r\n                            fill=\"currentColor\"\r\n                            d=\"M323.1 441l53.9-53.9c9.4-9.4 9.4-24.5 0-33.9L279.8 256l97.2-97.2c9.4-9.4 9.4-24.5 0-33.9L323.1 71c-9.4-9.4-24.5-9.4-33.9 0L192 168.2 94.8 71c-9.4-9.4-24.5-9.4-33.9 0L7 124.9c-9.4 9.4-9.4 24.5 0 33.9l97.2 97.2L7 353.2c-9.4 9.4-9.4 24.5 0 33.9L60.9 441c9.4 9.4 24.5 9.4 33.9 0l97.2-97.2 97.2 97.2c9.3 9.3 24.5 9.3 33.9 0z\"\r\n                        ></path>\r\n                    </svg>\r\n                </div>\r\n            </div>\r\n            {!!shopify_cart_items.length &&\r\n                announcement?.isActive &&\r\n                announcement.position === 'bellow_header' && (\r\n                    <Announcement announcement={announcement} />\r\n                )}\r\n            {!!shopify_cart_items.length && scary.isActive && scary.placement === 'top' && (\r\n                <Scary scary={scary} />\r\n            )}\r\n            {!checkout_button.fix_checkout_container && !!CAN_RENDER_ADD_TO_UNLOCK && (\r\n                <HeaderATU\r\n                    campaign_id={campaign_key && campaign_key[1]}\r\n                    add_to_unlock={add_to_unlock}\r\n                    bundlesDiscounts={bundlesDiscounts}\r\n                />\r\n            )}\r\n        </div>\r\n    );\r\n};\r\n\r\nexport default Header;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport loadable from '@loadable/component'\r\nimport CheckoutButton from './CheckoutButton';\r\n\r\nconst RandomText = loadable(() => import('./RandomText'))\r\nconst OrderNote = loadable(() => import('./OrderNote'))\r\n\r\nconst ExtraModule = ({ moduleKey, modules, cartNote }) => {\r\n\tconst { random_text, checkout_button, order_note } = modules;\r\n\r\n\tswitch (moduleKey) {\r\n\t\tcase 'random_text':\r\n\t\t\treturn random_text.active ? <RandomText /> : null;\r\n\t\tcase 'order_note':\r\n\t\t\treturn order_note.active ? <OrderNote cartNote={cartNote} /> : null;\r\n\t\tcase 'checkout_button':\r\n\t\t\treturn <CheckoutButton />;\r\n\r\n\t\tdefault:\r\n\t\t\treturn null;\r\n\t}\r\n};\r\n\r\nExtraModule.propTypes = {};\r\n\r\nexport default ExtraModule;\r\n","import React, { useContext } from 'react';\r\nimport { CartContext } from 'components/cart';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'lib/classNames';\r\n\r\nconst EmptyState = () => {\r\n\tconst { \r\n\t\tUtils,\r\n\t\tcart_settings :{\r\n\t\t\tempty_cart,\r\n\t\t\tactive_continue_shopping_button,\r\n\t\t\tactive_continue_shopping_underlined,\r\n\t\t\tcontinue_shopping_button\r\n\t\t}\r\n\t } = useContext(CartContext);\r\n\treturn (\r\n\t\t<div id=\"mu-empty-cart\" className={classNames('relative p-3 empty-cart w-full min-w-full max-w-full')}>\r\n\t\t\t<div dangerouslySetInnerHTML={{ __html: empty_cart }}></div>\r\n\t\t\t{\r\n\t\t\t\tactive_continue_shopping_button && (\r\n\t\t\t\t\t<div\r\n                \t\tid=\"mu-continue-shopping\"\r\n\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\tif (window.mu_continue_shopping_logic) {\r\n\t\t\t\t\t\t\tconst continueExecuting =\r\n\t\t\t\t\t\t\t\twindow.mu_continue_shopping_logic();\r\n\t\t\t\t\t\t\tif (continueExecuting === false) return;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tif (window.closeCart) window.closeCart();\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tclassName={classNames(\r\n\t\t\t\t\t\t\t\"custom-btn w-full w-full py-2 mb-2 text-center cursor-pointer\"\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\tstyle={{\r\n\t\t\t\t\t\t\tcolor: Utils.formatColor(\r\n\t\t\t\t\t\t\tcontinue_shopping_button.color\r\n\t\t\t\t\t\t\t),\r\n\t\t\t\t\t\t\tfontSize: `${continue_shopping_button.font_size}em`,\r\n\t\t\t\t\t\t\tfontWeight: `${continue_shopping_button.font_weight}`,\r\n\t\t\t\t\t\t\ttextDecoration:\r\n\t\t\t\t\t\t\tactive_continue_shopping_underlined && \"underline\"\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t{continue_shopping_button.text}\r\n\t\t\t\t\t</div>\r\n      \t\t\t)\r\n\t\t\t}\r\n\t\t</div>\r\n\t);\r\n};\r\n\r\nEmptyState.propTypes = {};\r\n\r\nexport default EmptyState;\r\n","export const ADD_ITEM = \"ADD_ITEM\";\r\nexport const MERGE_ITEM = \"MERGE_ITEM\";\r\nexport const REMOVE_ITEM = \"REMOVE_ITEM\";\r\nexport const ADD_ITEMS = \"ADD_ITEMS\";\r\nexport const SET_ITEMS = \"SET_ITEMS\";\r\nexport const SET_CART_NOTE = \"SET_CART_NOTE\";\r\nexport const SET_PRODUCT_ID = \"SET_PRODUCT_ID\";\r\nexport const SET_CAMPAIGN = \"SET_CAMPAIGN\";\r\nexport const ADD_UPSELL = \"ADD_UPSELL\";\r\nexport const REMOVE_UPSELL = \"REMOVE_UPSELL\";\r\n\r\nconst fixItemPrice = (item) => {\r\n  const { price, line_price, quantity, discounts } = item;\r\n  if (!discounts?.length && line_price > 0 && price * quantity !== line_price) {\r\n    item.price = line_price / quantity;\r\n  }\r\n  return item;\r\n};\r\n\r\nfunction getBagSelectors() {\r\n  const initialSelectors = [\r\n    \".icon_cart .tcount\",\r\n    \".sticky_nav .cart_count\",\r\n    \"#header .cart_count\",\r\n    \"[data-desktop-header] .cart_count\",\r\n    \".cart-count-bubble span\",\r\n    \".sticky_nav .header-right + div .cart-count\",\r\n    \".sticky_nav .header-right .cart-count\",\r\n    \"#header .cart-count\",\r\n    \"[data-desktop-header] .cart-count\",\r\n    \"[data-cart-count]\",\r\n    \"#shopify-section-toolbar_mobile [data-cart-count]\",\r\n    \".cart-icon--basket2 > div\",\r\n    \"[aria-label='Cart'] > div\",\r\n    \".header__icon-list .header__cart-count\",\r\n    \".hidden-pocket .header__cart-count\",\r\n    \"#nav-user #cart-count\",\r\n    \"#nav #cart-count\",\r\n    \".mobile-header-wrap .cart-item-count-header\",\r\n    \"#site-header .cart-item-count-header\",\r\n    \".count-bubble.count-bubble--md\",\r\n    \".page__header--desktop [data-count]\",\r\n    \".page__header--mobile [data-count]\",\r\n    \"span.cartCount\",\r\n    \"[data-js-cart-count]\",\r\n    \".header__row-mobile [data-js-cart-count]\",\r\n    \"#navbar-desktop .cart-count-badge\",\r\n    \"#navbar-mobile .cart-count-badge\",\r\n  ];\r\n  return initialSelectors.concat(\r\n    window.mu_bag_selecor || window.mu_bag_selector || []\r\n  );\r\n}\r\n\r\nfunction updateBagCounter(item_count) {\r\n  if (item_count) {\r\n    const dawn_icon = document.querySelector(\"#cart-icon-bubble\");\r\n    const dawn_counter = document.querySelector(\".cart-count-bubble span\");\r\n    const envy_counters = document.querySelectorAll(\r\n      \"span.cart-item-count-header:not(.show)\"\r\n    );\r\n    if (dawn_icon && !dawn_counter) {\r\n      const cart_svg = dawn_icon.querySelector(\".icon.icon-cart-empty\");\r\n      if (cart_svg) {\r\n        cart_svg.outerHTML = `<svg class=\"icon icon-cart\" aria-hidden=\"true\" focusable=\"false\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 40 40\" fill=\"none\"><path fill=\"currentColor\" fill-rule=\"evenodd\" d=\"M20.5 6.5a4.75 4.75 0 00-4.75 4.75v.56h-3.16l-.77 11.6a5 5 0 004.99 5.34h7.38a5 5 0 004.99-5.33l-.77-11.6h-3.16v-.57A4.75 4.75 0 0020.5 6.5zm3.75 5.31v-.56a3.75 3.75 0 10-7.5 0v.56h7.5zm-7.5 1h7.5v.56a3.75 3.75 0 11-7.5 0v-.56zm-1 0v.56a4.75 4.75 0 109.5 0v-.56h2.22l.71 10.67a4 4 0 01-3.99 4.27h-7.38a4 4 0 01-4-4.27l.72-10.67h2.22z\"></path></svg>`;\r\n        let cart_bubble = document.createElement(\"div\");\r\n        cart_bubble.setAttribute(\"class\", \"cart-count-bubble\");\r\n        cart_bubble.innerHTML = `<span aria-hidden=\"true\">${item_count}</span><span class=\"visually-hidden\">${item_count} items</span>`;\r\n        dawn_icon.appendChild(cart_bubble);\r\n      }\r\n    }\r\n    if (envy_counters.length) {\r\n      envy_counters.forEach((envy_counter) => {\r\n        envy_counter.classList.add(\"show\");\r\n        envy_counter.classList.remove(\"hide\");\r\n      });\r\n    }\r\n  }\r\n  let selectors = getBagSelectors();\r\n  selectors.forEach((selector) => {\r\n    const count = item_count || 0;\r\n    const formatted_count = window.mu_cart_count_formatter ? window.mu_cart_count_formatter(count) : count;\r\n    if (typeof selector === \"function\") {\r\n      selector(formatted_count);\r\n    } else if (document.querySelectorAll(selector).length) {\r\n      let counter = document.querySelectorAll(selector)[0];\r\n\r\n      let child_nodes = counter.querySelectorAll(\"*\");\r\n\r\n      if (child_nodes.length) {\r\n        counter = child_nodes[0];\r\n      }\r\n      \r\n      counter.textContent = formatted_count;\r\n    }\r\n  });\r\n}\r\n\r\nexport const CartItemsReducer = (AppLocalStorage) => (state, action) => {\r\n  switch (action.type) {\r\n    case SET_ITEMS:\r\n      const items = action.items.map(fixItemPrice);\r\n      sendCartUpdatedEvent(items);\r\n      return {\r\n        ...state,\r\n        items,\r\n        cart_level_discount_applications:\r\n          action.cart_level_discount_applications ||\r\n          state.cart_level_discount_applications,\r\n      };\r\n    case SET_CART_NOTE:\r\n      return { ...state, cartNote: action.cartNote };\r\n    case ADD_ITEM:\r\n      const new_items = [action.item].concat(state.items).map(fixItemPrice);\r\n      sendCartUpdatedEvent(new_items);\r\n      return { ...state, items: new_items };\r\n    case MERGE_ITEM:\r\n      const item_exists = state.items.find(({ id }) => id === action.item.id);\r\n      if (!item_exists) {\r\n        const items = [action.item].concat(state.items).map(fixItemPrice);\r\n        sendCartUpdatedEvent(items);\r\n        return { ...state, items };\r\n      } else {\r\n        const items = state.items.map((item) => {\r\n          if (item.id === action.item.id) {\r\n            return action.item;\r\n          }\r\n          return item;\r\n        });\r\n        sendCartUpdatedEvent(items);\r\n        return { ...state, items };\r\n      }\r\n    case REMOVE_ITEM:\r\n      const filtered_items = state.items.filter(({ id }) => id !== action.id);\r\n      sendCartUpdatedEvent(filtered_items);\r\n      return { ...state, items: filtered_items };\r\n    case ADD_ITEMS:\r\n      const added_items = action.item.concat(state.items).map(fixItemPrice);\r\n      sendCartUpdatedEvent(added_items);\r\n      return { ...state, items: added_items };\r\n    case SET_PRODUCT_ID:\r\n      return { ...state, product_id: action.product_id };\r\n    case SET_CAMPAIGN:\r\n      return { ...state, campaign: action.campaign };\r\n    case ADD_UPSELL:\r\n      const newUpsells = [...new Set([...state.fbtUpsells, action.id])];\r\n      AppLocalStorage.setItem(\"monster_uc_upsells\", JSON.stringify(newUpsells));\r\n      return { ...state, fbtUpsells: newUpsells };\r\n    case REMOVE_UPSELL:\r\n      const finalUpsells = state.fbtUpsells.filter(\r\n        (variant_id) => variant_id !== action.id\r\n      );\r\n      AppLocalStorage.setItem(\r\n        \"monster_uc_upsells\",\r\n        JSON.stringify(finalUpsells)\r\n      );\r\n      return { ...state, fbtUpsells: finalUpsells };\r\n    default:\r\n      return state;\r\n  }\r\n};\r\n\r\nfunction sendCartUpdatedEvent(items) {\r\n  const counter = items.reduce((total, item) => total + item.quantity, 0);\r\n  if (!window.mu_disable_cart_update) updateBagCounter(counter);\r\n  if (window.mu_stop_cart_updated_event) return;\r\n  const event = new CustomEvent(\"cart:updated\", { detail: { items } });\r\n  document.dispatchEvent(event);\r\n}\r\n","import Axios from 'axios';\r\nimport loadable from '@loadable/component';\r\nimport uniqueSelector from 'unique-selector';\r\nimport { getCartLink, getLangPath } from 'components/cart/Utils';\r\n\r\nvar jQuery = require('jquery/src/core');\r\nrequire('jquery/src/core/init');\r\nrequire('jquery/src/selector');\r\nrequire('jquery/src/event');\r\nrequire('jquery/src/traversing');\r\nrequire('jquery/src/event/trigger');\r\nrequire('jquery/src/manipulation');\r\nrequire('jquery/src/attributes');\r\n// require('jquery/src/deprecated');\r\n\r\nwindow.onSubmit = undefined;\r\nwindow.upsellCartStopped = false;\r\nvar DelayedEvents = [];\r\nvar additionalCartLinks = [\r\n    \"a[data-toggle='mini-cart-desktop-info']\",\r\n    \"a[data-toggle='mini-cart-info']\",\r\n    '.minicart-link',\r\n    '.cart-link__bubble',\r\n    '.js-drawer-open-cart',\r\n    '.cd-cart-trigger',\r\n    '.tt-desctop-parent-cart.tt-parent-box',\r\n    '.basket.cart-toggle',\r\n    '.tt-cart .tt-dropdown-toggle',\r\n    \"a[data-node-type='commerce-cart-open-link']\"\r\n];\r\nvar elementPickerEnabled = false;\r\n\r\n// if (process.env.BETA === \"true\") {\r\n//   console.log(\r\n//     \"%c%s\",\r\n//     \"background: #00ffc4; color: #021c16; font-size: 12px; font-weight:bold; padding: 5px 10px; border-radius: 3px\",\r\n//     \"MONSTER BETA\"\r\n//   );\r\n// }\r\n\r\nexport var manualSetupCartLinks = [\r\n    \"a[data-href='/cart']\",\r\n    `a[data-href='https://${window.mu_origin}/cart']`\r\n]\r\n    .concat(additionalCartLinks)\r\n    .join();\r\n\r\nexport var cartLinks = [\r\n    \"a[href='/cart']\",\r\n    \"a[href$='/cart']\",\r\n    `a[href='https://${window.mu_origin}/cart']`,\r\n    'div.minicart__button.monster'\r\n]\r\n    .concat(manualSetupCartLinks)\r\n    .concat((window.mu_custom_links || []).map(({ selector }) => selector))\r\n    .join();\r\n\r\nfunction immediatePropStopped(event, label) {\r\n    var msg = '';\r\n    if (event.isImmediatePropagationStopped()) {\r\n        msg = label + ' stopImmediatePropagation called';\r\n    } else {\r\n        msg = label + ' stopImmediatePropagation not called';\r\n    }\r\n}\r\n\r\nexport const getParams = (url) => {\r\n    var params = {};\r\n    var parser = document.createElement('a');\r\n    parser.href = url;\r\n    var query = parser.search.substring(1);\r\n    var vars = query.split('&');\r\n    for (var i = 0; i < vars.length; i++) {\r\n        var pair = vars[i].split('=');\r\n        params[pair[0]] = decodeURIComponent(pair[1]);\r\n    }\r\n    return params;\r\n};\r\n\r\nconst handleResize = () => {\r\n    document.documentElement.style.setProperty('--screen-height', `${window.innerHeight}px`);\r\n    // document.documentElement.style.setProperty('--screen-width', `${window.innerWidth}px`);\r\n};\r\n\r\nexport function stopUpsellCart() {\r\n    window.upsellCartStopped = true;\r\n}\r\n\r\nexport const controlTheme = () => {\r\n    console.log(\r\n        '%c%s',\r\n        'background: #1c64f6; color: #fff; font-size: 12px; font-weight:bold; padding: 5px 10px; border-radius: 3px',\r\n        '⚡️ MONSTER UPSELLS cart is controlling the theme ⚡️'\r\n    );\r\n    if (!window.mu_stop_resize) {\r\n        jQuery(window).on('resize', handleResize);\r\n        jQuery(window).on('scroll', handleResize);\r\n    }\r\n    jQuery('head meta[name=\"viewport\"]').attr(\r\n        'content',\r\n        `width=device-width, initial-scale=1.0${\r\n            window.mu_allow_zoom ? '' : ', maximum-scale=1.0,user-scalable=0'\r\n        }`\r\n    );\r\n\r\n    window.handleAddToCart = (event) => {\r\n        if (window.upsellCartStopped) return;\r\n        event.stopImmediatePropagation();\r\n        event.preventDefault();\r\n        if (window.onSubmit) return window.onSubmit(event);\r\n        else if (window.monster_submitAddToCartForm && window.monster_setCartItems)\r\n            monster_submit(event);\r\n        else {\r\n            DelayedEvents.push({\r\n                type: 'submit',\r\n                target: event.target\r\n            });\r\n        }\r\n    };\r\n\r\n    // jQuery(\"form[data-zp-add-to-cart-form]\").each(function () {\r\n    //   jQuery(this)\r\n    //     .removeAttr(\"data-zp-add-to-cart-form\")\r\n    //     .attr(\"action\", \"/cart/add\");\r\n    // });\r\n    jQuery(document).on('submit', `form[action*='/cart/add']`, (e) => {\r\n        return window.handleAddToCart(e);\r\n    });\r\n    window.removeSelectors_keepStyle = (element) => {\r\n        const style = window.getComputedStyle(element);\r\n        [...element.children].forEach((child) => window.removeSelectors_keepStyle(child));\r\n        element.style = style;\r\n        element.className = '';\r\n        element.setAttribute('id', '');\r\n    };\r\n\r\n    let ATC_SELECTOR =\r\n        \"form[action*='/cart/add'] button[name='add'], form[action*='/cart/add'] button[data-checkout='same'], form[action*='/cart/add'] button[type='submit'],form[action*='/cart/add'] input[type='submit'], form[action*='/cart/add'] button[data-add-to-cart],form[action*='/cart/add'] label[role='submit'],form[data-zp-product-url='/cart'] button[type='submit'], form[action*='/cart/add'] a[role='submit'], [data-zp-add-to-cart]\";\r\n    jQuery(window.mu_atc_selector ?? ATC_SELECTOR).on('click', function (event) {\r\n        if (window.upsellCartStopped) return;\r\n        event.stopImmediatePropagation();\r\n        event.preventDefault();\r\n        const atcButton = jQuery(this);\r\n        const form = atcButton.closest(\"form[action*='/cart/add'], [data-zp-add-to-cart-form]\");\r\n        if (form.length) {\r\n            atcButton.attr('type', 'submit');\r\n            atcButton.removeAttr('data-product-id');\r\n            return window.handleAddToCart({\r\n                preventDefault: () => null,\r\n                stopImmediatePropagation: () => null,\r\n                target: form.get(0)\r\n            });\r\n        }\r\n    });\r\n\r\n    jQuery('[data-pf-type=\"ProductATC\"]:not(.disable-monster)').on('click', async function (event) {\r\n        const atcButton = jQuery(this);\r\n        if (window.upsellCartStopped) {\r\n            return;\r\n        }\r\n        event.stopImmediatePropagation();\r\n        event.preventDefault();\r\n        const form = atcButton.closest(\"form[action*='/cart/add']\");\r\n        if (form.length) {\r\n            return window.handleAddToCart({\r\n                preventDefault: () => null,\r\n                stopImmediatePropagation: () => null,\r\n                target: form.get(0)\r\n            });\r\n        }\r\n        if (window.mu_custom_atc_logic) {\r\n            const continueATC = await window.mu_custom_atc_logic(event);\r\n            if (continueATC === false) return;\r\n        }\r\n        const variantDiv = atcButton.siblings(\r\n            '[data-pf-type=\"ProductVariant\"], [data-pf-type=\"ProductVariantSwatches\"]'\r\n        );\r\n        const combined = variantDiv.attr('data-combined');\r\n        let quantity =\r\n            atcButton\r\n                .prev('[data-pf-type=\"ProductQuantity\"]')\r\n                .find(\"[data-pf-type='QuantityField']\")\r\n                .val() || 1;\r\n        quantity = Number(quantity);\r\n        if (combined) {\r\n            const variant_id = variantDiv.find('[name=\"id\"]').val();\r\n            window.onSubmit(null, { id: variant_id, quantity });\r\n        } else {\r\n            const product_id = atcButton.attr('data-product-id');\r\n            const selected_options = getPageFlyOptions(variantDiv);\r\n            const product_data = window.__pageflyProducts && window.__pageflyProducts[product_id];\r\n            if (product_data && selected_options.length) {\r\n                const selected_variant = getPageFlyVariant(selected_options, product_data);\r\n                if (selected_variant) {\r\n                    window.onSubmit(null, { id: selected_variant.id, quantity });\r\n                }\r\n            } else if (product_data) {\r\n                window.onSubmit(null, { id: product_data.variants[0].id, quantity });\r\n            }\r\n        }\r\n    });\r\n\r\n    function getPageFlyOptions(variantDiv) {\r\n        const selected_options = [];\r\n        const isRadio = variantDiv.attr('data-display') === 'radio';\r\n        if (isRadio) {\r\n            variantDiv.find(\"input[type='radio']:checked\").each(function () {\r\n                const value = jQuery(this).val();\r\n                if (value) selected_options.push(value);\r\n            });\r\n        } else {\r\n            variantDiv.find('select.pf-variant-select').each(function () {\r\n                const value = jQuery(this).val();\r\n                if (value) selected_options.push(value);\r\n            });\r\n        }\r\n        return selected_options;\r\n    }\r\n\r\n    function getPageFlyVariant(selected_options, product_data) {\r\n        const selected_title = selected_options.join(' / ');\r\n        const selected_variant = product_data.variants.find(\r\n            ({ title }) => title === selected_title\r\n        );\r\n        return selected_variant;\r\n    }\r\n    function toggleCart(event) {\r\n        if (window.upsellCartStopped || window?.MANUAL_SETUP_ACTION === 'cart_link') return;\r\n        event.preventDefault();\r\n        event.stopImmediatePropagation();\r\n        if (window.toggleCart) return window.toggleCart();\r\n        else {\r\n            DelayedEvents.push({\r\n                type: 'click',\r\n                target: event.target\r\n            });\r\n        }\r\n    }\r\n    jQuery(cartLinks).on('click', toggleCart);\r\n    jQuery(document).on('click', cartLinks, toggleCart);\r\n\r\n    function IDGetter(settings, element) {\r\n        const { type, selector, name } = settings;\r\n        if (type === 'self-attr') {\r\n            return element.attr(name);\r\n        }\r\n        const idElement = jQuery(selector);\r\n        const parsedId = type === 'attr' ? idElement.attr(name) : idElement.val();\r\n        return parsedId;\r\n    }\r\n    function cloneCustomATC(settings) {\r\n        const elements = jQuery(settings.button);\r\n        if (!elements.length) return;\r\n        elements.each(function () {\r\n            const element = jQuery(this);\r\n            const clone = element[0].cloneNode(true);\r\n            jQuery(clone).unbind().attr('clone', true);\r\n            clone.addEventListener('click', (event) => {\r\n                if (!window.onSubmit) return;\r\n                event.preventDefault();\r\n                event.stopImmediatePropagation();\r\n                if (settings.id.type === 'hasFormParent') {\r\n                    const form = jQuery(clone).closest(\"form[action='/cart/add']\");\r\n                    if (form.length) {\r\n                        return window.handleAddToCart({\r\n                            preventDefault: () => null,\r\n                            stopImmediatePropagation: () => null,\r\n                            target: form[0]\r\n                        });\r\n                    }\r\n                }\r\n                const id = IDGetter(settings.id, element);\r\n                if (id) {\r\n                    window.onSubmit(null, { id, quantity: 1 });\r\n                }\r\n            });\r\n            element.replaceWith(clone);\r\n        });\r\n    }\r\n    if (window.mu_custom_atcs?.length) {\r\n        window.mu_custom_atcs.forEach(cloneCustomATC);\r\n    }\r\n};\r\n\r\n// function activateWideBundleIntegration() {\r\n//   // WIDE BUNDLE APP SUPPORT\r\n//   const atc_btn = jQuery(\"#new-form-atc\");\r\n//   if (atc_btn.length) {\r\n//     const old_onclick = atc_btn[0].onclick;\r\n//     const wb_atc_clone = atc_btn.clone().addClass(\"clone\");\r\n//     atc_btn.replaceWith(wb_atc_clone);\r\n//     wb_atc_clone.on(\"click\", function (event) {\r\n//       if (window.upsellCartStopped) {\r\n//         return old_onclick();\r\n//       }\r\n//       addLoadingATC();\r\n//       event.stopImmediatePropagation();\r\n//       event.preventDefault();\r\n//       const id = getSelectedID();\r\n//       if (id) {\r\n//         window.onSubmit(null, { id, quantity: 1 });\r\n//       }\r\n//       putBackATC();\r\n//       putBackATC(); // for some reason we need to call this twice\r\n//     });\r\n//   }\r\n//   // END OF WIDE BUNDLE APP SUPPORT\r\n// }\r\n\r\nexport function init({ handleSubmit }) {\r\n    // activateWideBundleIntegration()\r\n    window.onSubmit = handleSubmit;\r\n    window.monster_atc = ({ id, quantity = 1 }) => handleSubmit(null, { id, quantity });\r\n    DelayedEvents.forEach(({ type, target }) => {\r\n        jQuery(target).trigger(type);\r\n    });\r\n}\r\n\r\nconst fetchProductDetails = async (handle) => {\r\n    try {\r\n        const response = await Axios.get(getLangPath(`/products/${handle}.json`));\r\n        const productData = response.data.product;\r\n        return productData;\r\n    } catch (error) {\r\n        console.error(`Error fetching product details for product ID ${handle}:`, error);\r\n        return null;\r\n    }\r\n};\r\n\r\nexport const getCartItems = async () => {\r\n    const origin = window.location.origin;\r\n    return new Promise((resolve, reject) => {\r\n        Axios.get(getCartLink())\r\n            .then(async ({ data: { token, items, cart_level_discount_applications } }) => {\r\n                const cartItemsWithComparedPrices = window.mu_cart_with_compares\r\n                    ? await Promise.all(\r\n                          items.map(async (cartItem) => {\r\n                              const productDetails = await fetchProductDetails(cartItem.handle);\r\n                              const variant_data = productDetails?.variants.find(\r\n                                  (variant) => variant.id === cartItem.variant_id\r\n                              );\r\n\r\n                              if (variant_data) {\r\n                                  cartItem.compare_at_price =\r\n                                      Number(variant_data.compare_at_price) * 100;\r\n                              }\r\n\r\n                              return cartItem;\r\n                          })\r\n                      )\r\n                    : items;\r\n                if (cartItemsWithComparedPrices.length === 0) {\r\n                    thankYouPageCleanup();\r\n                }\r\n                resolve({\r\n                    token,\r\n                    items: cartItemsWithComparedPrices,\r\n                    cart_level_discount_applications\r\n                });\r\n            })\r\n            .catch(reject);\r\n    });\r\n};\r\nwindow.monster_getCartItems = getCartItems;\r\nfunction thankYouPageCleanup() {\r\n    localStorage.removeItem('monster_uc_upsells');\r\n    localStorage.removeItem('mu_form_files');\r\n    localStorage.removeItem('cart_items');\r\n    // function removeByCondition(condition) {\r\n    //     Object.entries(localStorage)\r\n    //         .map((x) => x[0])\r\n    //         .filter(condition)\r\n    //         .map((x) => localStorage.removeItem(x));\r\n    // }\r\n    // removeByCondition((x) => x?.contains('one_tick_removed_'));\r\n    // removeByCondition((x) => x?.contains('multi_gifts_'));\r\n}\r\nasync function refreshCart(open = true, callback = () => {}) {\r\n    await fetch(window.location.origin + '/cart.js')\r\n        .then((res) => res.json())\r\n        .then(async (response) => {\r\n            if (window.monster_setCartItems && window.mu_productionAddToCartCallBack) {\r\n                await window.monster_setCartItems(\r\n                    response.items,\r\n                    response.cart_level_discount_applications\r\n                );\r\n                await window.mu_productionAddToCartCallBack(response.items);\r\n            }\r\n            if (open && window.openCart) await window.openCart();\r\n            callback();\r\n        })\r\n        .catch((error) => {\r\n            console.log(error);\r\n        });\r\n}\r\n\r\nwindow.monster_refresh = refreshCart;\r\n\r\nasync function monster_addToCart({ id, quantity, ...rest }, open = true, callback = () => {}) {\r\n    await fetch(window.location.origin + '/cart/add.js', {\r\n        headers: {\r\n            'content-type': 'application/json;'\r\n        },\r\n        body: JSON.stringify({\r\n            id: Number(id),\r\n            quantity: Number(quantity),\r\n            ...rest\r\n        }),\r\n        method: 'POST'\r\n    })\r\n        .then(async () => {\r\n            await refreshCart(open);\r\n            callback();\r\n        })\r\n        .catch((error) => {\r\n            console.log(error);\r\n        });\r\n}\r\n\r\nwindow.monster_addToCart = monster_addToCart;\r\n\r\nfunction serializeForm(form) {\r\n    const formData = new FormData(form);\r\n    let serialized = { properties: {} };\r\n\r\n    for (const [name, value] of formData) {\r\n        if (name.includes('properties')) {\r\n            const start = name.indexOf('[') + 1;\r\n            const end = name.indexOf(']');\r\n            const key = name.substring(start, end);\r\n            serialized['properties'][key] = value;\r\n        } else if (!name.includes('utf') && !name.includes('form_type')) serialized[name] = value;\r\n    }\r\n    return serialized;\r\n}\r\n\r\nasync function monster_submit(event) {\r\n    if (event.target && event.target.tagName === 'FORM') {\r\n        const form = event.target;\r\n\r\n        if (form.action.includes('/cart/add')) {\r\n            event.preventDefault();\r\n\r\n            if (window.mu_custom_atc_logic) {\r\n                const continueATC = await window.mu_custom_atc_logic(event);\r\n                if (continueATC === false) return;\r\n            }\r\n\r\n            const id =\r\n                form.querySelector('[name=\"id\"]')?.value ?? window.mu_product?.variants[0].id;\r\n            const quantity = form.querySelector('[name=\"quantity\"]')?.value ?? 1;\r\n            console.log('monster_addToCart');\r\n            await monster_addToCart({ id, quantity, ...serializeForm(form) });\r\n        } else {\r\n            console.log('Monster : Unsuposted add to cart form');\r\n        }\r\n    } else {\r\n        DelayedEvents.push({\r\n            type: 'submit',\r\n            target: event.target\r\n        });\r\n    }\r\n}\r\n\r\nwindow.monster_submitAddToCartForm = monster_submit;\r\n\r\nexport const getCartNote = async () => {\r\n    return new Promise((resolve, reject) => {\r\n        Axios.get(getCartLink())\r\n            .then(({ data: { note } }) => resolve(note))\r\n            .catch(reject);\r\n    });\r\n};\r\n\r\nexport const clearCart = async () => {\r\n    return new Promise((resolve, reject) => {\r\n        Axios.post(`${window.location.origin}/cart/clear.js`)\r\n            .then(({ data }) => resolve(data))\r\n            .catch(reject);\r\n    });\r\n};\r\n\r\nwindow.monster_clearCart = clearCart;\r\n","import React, {\r\n    createContext,\r\n    useRef,\r\n    useEffect,\r\n    useState,\r\n    useReducer,\r\n    useMemo,\r\n    useContext\r\n} from 'react';\r\n// import \"preact/debug\"\r\n// import { Scrollbars } from 'react-custom-scrollbars';\r\nimport loadable from '@loadable/component';\r\nimport Header from './partials/Header';\r\nimport CartItemsList from './partials/CartItemsList';\r\nimport ExtraModule from './partials/ExtraModule';\r\nimport EmptyState from './partials/EmptyState';\r\nimport * as Utils from './Utils';\r\nimport { API_GATEWAY2 } from 'aws-exports';\r\nimport {\r\n    CartItemsReducer,\r\n    ADD_ITEM,\r\n    MERGE_ITEM,\r\n    REMOVE_ITEM,\r\n    SET_ITEMS,\r\n    SET_CART_NOTE,\r\n    ADD_UPSELL,\r\n    REMOVE_UPSELL\r\n} from 'reducers/CartItemsReducer';\r\nimport Axios from 'axios';\r\nimport classNames from 'lib/classNames';\r\nimport useCampaign from 'hooks/useCampaign';\r\nimport { getAllOCUProducts } from './partials/CheckoutButton';\r\nimport Spinner from 'components/Spinner';\r\nimport CustomScroll from './partials/CustomScroll';\r\nimport useRefState from 'hooks/useRefState';\r\nimport { getCartItems } from 'shopify_script_tags/cart';\r\nimport HeaderATU from './partials/Header_ATU';\r\n\r\nconst ProductDetails = loadable(() => import('./partials/ProductDetails'));\r\nconst CodForm = loadable(() => import('./partials/CodForm'));\r\nconst VariantsPicker = loadable(() => import('./partials/VariantsPicker'));\r\nconst BundlesVariantsPicker = loadable(() => import('./partials/BundlesVariantsPicker'));\r\nconst Confetti = loadable(() => import('react-confetti'));\r\n\r\nexport const CartContext = createContext(null);\r\nexport const CartProvider = CartContext.Provider;\r\n\r\nconst Cart = ({\r\n    campaigns = {},\r\n    token,\r\n    getCampaigns,\r\n    setCampaigns,\r\n    mergeCampaigns,\r\n    mergeCompareAtMap,\r\n    shop_url = null,\r\n    isPreview = false,\r\n    showSubscription = false,\r\n    cart_items = [],\r\n    cart_level_discount_applications = [],\r\n    cart_currency,\r\n    shop_settings,\r\n    setShopSettings,\r\n    close = null,\r\n    isOpened = null,\r\n    onInit = null,\r\n    product_id = null,\r\n    products,\r\n    forcePreview = null,\r\n    style = {},\r\n    showCheckoutLoading,\r\n    showComfirmOrderLoading,\r\n    orderCodForm,\r\n    setOrderCodForm,\r\n    isCodFormSubmitted,\r\n    setIsCodFormSubmitted,\r\n    showATUAfterText,\r\n    cartNote = '',\r\n    hasWriteDiscountsScope = false,\r\n    compareAtMap = {},\r\n    setCompareAtMap,\r\n    giftCurrentPreview,\r\n    AppLocalStorage,\r\n    bundlesVariantPickerPreview\r\n}) => {\r\n    const cart_ref = useRef(null);\r\n    const header_ref = useRef(null);\r\n    const [hasAutoDiscount, setHasAutoDiscount] = useState(\r\n        Utils.CartHasAutoDiscount({ items: cart_items, cart_level_discount_applications })\r\n    );\r\n    const scrollbars_ref = useRef(null);\r\n    const [variantsPickerShow, setVariantsPickerShow, variantsPickerShow_ref] = useRefState(false);\r\n    const [variantPickerOptions, setVariantPickerOptions, setVariantPickerOptions_ref] =\r\n        useRefState({});\r\n    const [addedFromFbt, setAddedFromFbt] = useState([]);\r\n    const [viewCartTracked, setViewCartTracked] = useState(false);\r\n    const [showConfetti, setShowConfetti] = useState(0);\r\n    const [active_slide, slickGoTo] = useState(0);\r\n    const [previewed_product, setPreviewed_product] = useState(null);\r\n    const [discountCode, setDiscountCode] = useState(null);\r\n    const [rechargeSettings, setRechargeSettings] = useState(null);\r\n    const [userIsTabbing, setUserIsTabbing] = useState(false);\r\n    const [shipProtectState, setShipProtectState] = useState({selected:false, price: 0});\r\n    const variantsPickerOverlay_ref = useRef(null);\r\n    const bundlesVariantsPickerOverlay_ref = useRef(null);\r\n    const [cartLoading, setCartLoading] = useState(false);\r\n    const [bundlesVariantsPickerShow, setBundlesVariantsPickerShow] = useState(false);\r\n    const [bundlesVariantsPickerOptions, setBundlesVariantsPickerOptions] = useState({});\r\n    const [shopify_cart_state, dispatch] = useReducer(CartItemsReducer(AppLocalStorage), {\r\n        items: cart_items,\r\n        cart_level_discount_applications,\r\n        cartNote,\r\n        token,\r\n        fbtUpsells: JSON.parse(AppLocalStorage.getItem('monster_uc_upsells') || '[]')\r\n    });\r\n    const [one_check_up_sell_product_id, ocu_campaign] = useCampaign(\r\n        'one_check_up_sell',\r\n        null,\r\n        true\r\n    )(campaigns, shopify_cart_state.items);\r\n    const slider = {\r\n        slickGoTo,\r\n        active_slide\r\n    };\r\n\r\n    const add_to_cart = (\r\n        {\r\n            variant_id,\r\n            quantity = 1,\r\n            product_handle = null,\r\n            product = null,\r\n            properties,\r\n            selling_plan\r\n        },\r\n        callback = null,\r\n        formData\r\n    ) => {\r\n        if(window.monster_loading) setCartLoading(true);\r\n        Utils.addToCart(\r\n            {\r\n                variant_id,\r\n                quantity,\r\n                properties,\r\n                selling_plan,\r\n                isPreview,\r\n                shop_url,\r\n                product_handle,\r\n                product,\r\n                currency: shop_settings.currency\r\n            },\r\n            formData\r\n        ).then((data) => {\r\n            const items = data?.items || [data];\r\n            const item = data?.items ? Utils.findItem({ items: data.items, variant_id }) : data;\r\n            if (data?.items) {\r\n                dispatch({\r\n                    type: SET_ITEMS,\r\n                    items,\r\n                    cart_level_discount_applications: data.cart_level_discount_applications\r\n                });\r\n            } else {\r\n                dispatch({ type: ADD_ITEM, item });\r\n            }\r\n\r\n            if (!isPreview) {\r\n                productionAddToCartCallBack(items);\r\n            }\r\n            if (callback) callback(item);\r\n            if (window.monster_loading) setCartLoading(false);\r\n        }).catch((error) => {\r\n          if (window.monster_loading) setCartLoading(false);\r\n        });\r\n    };\r\n    const productionAddToCartCallBack = async (items) => {\r\n        const NonUndefinedCampaigns = campaigns || {};\r\n        const campaignsKeys = Object.keys(NonUndefinedCampaigns).map(parseInt);\r\n        \r\n        const shouldBeActive = {\r\n          random_text: false,\r\n          order_note: false,\r\n          checkout_button: false,\r\n        };\r\n\r\n        // First check which modules should be active based on items in cart\r\n        items.filter(Boolean).forEach(({ product_id }) => {\r\n          if (NonUndefinedCampaigns[product_id]) {\r\n            const productCampaigns = NonUndefinedCampaigns[product_id];\r\n            for (const campaign of productCampaigns) {\r\n              if (campaign?.modules) {\r\n                const modules = campaign.modules;\r\n                Object.keys(shouldBeActive).forEach((moduleKey) => {\r\n                  if (\r\n                    modules[moduleKey] &&\r\n                    modules[moduleKey].active === true\r\n                  ) {\r\n                    shouldBeActive[moduleKey] = true;\r\n                  }\r\n                });\r\n              }\r\n            }\r\n          }\r\n        });\r\n\r\n        items.filter(Boolean).forEach(async ({ product_id, variant_id, product_type }) => {\r\n            const hasNoCampaigns =\r\n                !campaigns ||\r\n                !campaignsKeys.includes(product_id) ||\r\n                (NonUndefinedCampaigns && NonUndefinedCampaigns[product_id] === []);\r\n            if (hasNoCampaigns && product_type.toLowerCase() !== 'free_gift') {\r\n                // const current_types = Object.entries(NonUndefinedCampaigns).filter(([id]) => productAddedToCart({ id })).map(([_, c]) => c).flat().map(({ type }) => type);\r\n                const response = await getCampaigns(\r\n                    [product_id],\r\n                    [`${product_id}:${variant_id}`],\r\n                    shopify_cart_state.token\r\n                );\r\n                const { settings, compareAtMap } = response;\r\n                mergeCampaigns(response.campaigns);\r\n                mergeCompareAtMap(compareAtMap);\r\n                if (\r\n                  settings.fromCampaign ||\r\n                  !shop_settings.modules.order ||\r\n                  (shop_settings.modules.order && settings.modules.order && shop_settings.modules != settings.modules)\r\n                ) {\r\n                  const mergedModules = { ...shop_settings.modules };\r\n\r\n                  Object.keys(settings.modules).forEach((moduleKey) => {\r\n                    if (moduleKey === \"order\") {\r\n                      mergedModules[moduleKey] = settings.modules[moduleKey];\r\n                    } else {\r\n                      if (!shouldBeActive[moduleKey]) {\r\n                        mergedModules[moduleKey] = {\r\n                          ...settings.modules[moduleKey],\r\n                        };\r\n                      }\r\n                    }\r\n                  });\r\n\r\n                  setShopSettings({\r\n                    ...shop_settings,\r\n                    ...settings,\r\n                    money_format: shop_settings.money_format,\r\n                    modules: mergedModules,\r\n                  });\r\n                }\r\n            }\r\n        });\r\n        // if(items.filter(Boolean).length){\r\n        const newItems = await getCartItems()\r\n        dispatch({ \r\n            type: SET_ITEMS,\r\n            items: newItems.items,\r\n            cart_level_discount_applications:newItems.cart_level_discount_applications\r\n        });\r\n        // }\r\n    };\r\n    window.mu_productionAddToCartCallBack = productionAddToCartCallBack;\r\n\r\n    const update_cart_item = (\r\n        { variant_id, line, quantity = 1, properties, selling_plan, sold_out = false },\r\n        callback = null,\r\n        formData\r\n    ) => {\r\n        if (window.monster_loading) setCartLoading(true);\r\n        const item = Utils.findItem({\r\n            line,\r\n            items: shopify_cart_state.items,\r\n            variant_id: variant_id\r\n        });\r\n        const currentQuantity = item ? item.quantity : 0;\r\n        if (quantity === '+1') quantity = currentQuantity + 1;\r\n        if (quantity === '-1') quantity = currentQuantity - 1;\r\n        Utils.updateCartItem(\r\n            {\r\n                variant_id,\r\n                line,\r\n                quantity,\r\n                properties,\r\n                selling_plan,\r\n                isPreview,\r\n                state: shopify_cart_state\r\n            },\r\n            formData\r\n        ).then(({ items, cart_level_discount_applications }) => {\r\n                if (items.length === 1 && items[0].price === 0 && items[0].product_type === \"free_gift\") {\r\n                  let { variant_id } = items[0];\r\n                  return update_cart_item(\r\n                    {\r\n                      variant_id,\r\n                      line: 1,\r\n                      quantity: 0,\r\n                    },\r\n                    callback\r\n                  );\r\n                }\r\n                if (!sold_out) {\r\n                    if(!hasAutoDiscount){\r\n                        dispatch({ type: SET_ITEMS, items, cart_level_discount_applications });\r\n                    }\r\n                    const item = Utils.findItem({ line, items, variant_id });\r\n                    if (!isPreview) {\r\n                        productionAddToCartCallBack(items);\r\n                    }\r\n                    // if (!item) return;\r\n                    if (callback) callback(item, items);\r\n                } else {\r\n                    dispatch({\r\n                        type: SET_ITEMS,\r\n                        cart_level_discount_applications,\r\n                        items: items.map((item) => {\r\n                            if (item.variant_id === variant_id) {\r\n                                return { ...item, quantity: 0, itemSoldOut: true };\r\n                            }\r\n                            return item;\r\n                        })\r\n                    });\r\n                    if (callback) callback(null, items);\r\n                }\r\n                if (window.monster_loading) setCartLoading(false);\r\n            })\r\n            .catch((error) => {\r\n                if (window.monster_loading) setCartLoading(false);\r\n                if (callback) callback(null, null, error?.response?.data);\r\n            });\r\n    };\r\n\r\n    const trackEvent = (data) => {\r\n        return isPreview\r\n            ? Promise.resolve(null)\r\n            : Axios({\r\n                  method: 'post',\r\n                  url: `${API_GATEWAY2}/public/track`,\r\n                  params: {\r\n                      shop: shop_url\r\n                  },\r\n                  data\r\n              });\r\n    };\r\n\r\n    const preview_product = (product, showAddCartButton = true) => {\r\n        setPreviewed_product({ ...product, showAddCartButton });\r\n        slider.slickGoTo(1);\r\n    };\r\n    const productAddedToCart = (product, byVariant) => {\r\n        if (byVariant) return productAddedToCartByVariant(product);\r\n\r\n        const product_id = Number(typeof product === 'object' ? product?.id : product);\r\n        return !!shopify_cart_state.items.find((item) => item.product_id === product_id);\r\n    };\r\n    const productAddedToCartByVariant = (variant, items = undefined) => {\r\n      items = items || shopify_cart_state.items;\r\n        const variant_id = Number(typeof variant === 'object' ? variant?.id : variant);\r\n        return !!items.find((item) => item.variant_id === variant_id);\r\n    };\r\n\r\n    const onlyOneItemAddedToCart = (product, byVariant) => {\r\n        if (byVariant) return onlyOneItemAddedToCartByVariant(product);\r\n        const product_id = Number(typeof product === 'object' ? product?.id : product);\r\n        return !!shopify_cart_state.items.find(\r\n            (item) => item.product_id === product_id && item.quantity === 1\r\n        );\r\n    };\r\n    const onlyOneItemAddedToCartByVariant = (variant) => {\r\n        const variant_id = Number(typeof variant === 'object' ? variant?.id : variant);\r\n        return !!shopify_cart_state.items.find(\r\n            (item) => item.variant_id === variant_id && item.quantity === 1\r\n        );\r\n    };\r\n\r\n    const productNotAddedToCart = (product, byVariant) => !productAddedToCart(product, byVariant);\r\n\r\n    const get_total = (type = null, items = null) => {\r\n        const ocu_products = getAllOCUProducts(ocu_campaign);\r\n        const filteredItems = (items || shopify_cart_state.items).filter((item) => {\r\n            const ocu_product = ocu_products.find(\r\n                ({ product }) => item.product_id.toString() === product?.id\r\n            );\r\n            return ocu_product\r\n                ? ocu_product.include_in_atu\r\n                : !(['free_gift', 'singleton_gift'].includes(item?.product_type?.toLowerCase()) && item?.price === 0);\r\n        });\r\n        const original = Utils.getTotal(items || shopify_cart_state.items, products);\r\n        const filteredItemsTotal = Utils.getTotal(filteredItems);\r\n        const discount = Utils.getDiscount({\r\n            items: items || shopify_cart_state.items,\r\n            cart_level_discount_applications: shopify_cart_state.cart_level_discount_applications,\r\n            filteredItems,\r\n            filteredItemsTotal,\r\n            campaigns: campaigns || {},\r\n            total: original,\r\n            discountCode\r\n        });\r\n        const autoDiscountGifts = filteredItems.reduce((acc, item) => {\r\n            const { discounts, price, line_level_discount_allocations } = item;\r\n            const hasGiftAutoDiscount =\r\n                discounts?.length &&\r\n                line_level_discount_allocations?.find(({ discount_application }) =>\r\n                    ['automatic', ''].includes(discount_application?.type)\r\n                ) &&\r\n                discounts[0]?.amount === price;\r\n            return hasGiftAutoDiscount ? acc + price : acc;\r\n        }, 0);\r\n        const subtotal = original - discount;\r\n        const compareAt = shop_settings.count_compare_at\r\n            ? Utils.getCompareAtDiscount({\r\n                  filteredItems: items || shopify_cart_state.items,\r\n                  compareAtMap,\r\n                  products\r\n              })\r\n            : 0;\r\n\r\n        const output = {\r\n            original,\r\n            discount,\r\n            subtotal,\r\n            autoDiscountGifts,\r\n            finalDiscount: compareAt + discount,\r\n            total: original + compareAt\r\n        };\r\n        window.mu_cartSummary = output;\r\n        return type ? output[type] : output;\r\n    };\r\n    window.monster_getTotal = get_total;\r\n\r\n    const productionAddToCart = (\r\n        items,\r\n        { variant_id, quantity, selling_plan, properties },\r\n        callback,\r\n        formData\r\n    ) => {\r\n        const item = items.find((item) => {\r\n            const sameId = item.id === parseInt(variant_id);\r\n            const sameProperties = properties\r\n                ? JSON.stringify(properties) === JSON.stringify(item.properties)\r\n                : true;\r\n            const sellingPlanId = item?.selling_plan_allocation?.selling_plan?.id;\r\n            const sameSellingPlane = selling_plan\r\n                ? sellingPlanId === Number(selling_plan) // selling plan must be the same\r\n                : !sellingPlanId; // selling plan must be undefined\r\n            return sameId && sameProperties && sameSellingPlane;\r\n        });\r\n        const gfFileUpload = document.querySelector('.gf_file-upload');\r\n        if (item && !gfFileUpload) {\r\n            const line = items.indexOf(item) + 1;\r\n            update_cart_item(\r\n                {\r\n                    variant_id,\r\n                    line,\r\n                    quantity: item.quantity + quantity,\r\n                    properties,\r\n                    selling_plan\r\n                },\r\n                callback,\r\n                formData\r\n            );\r\n        } else {\r\n            if (gfFileUpload) {\r\n                const form = document.querySelector('form[action=\"/cart/add\"]');\r\n                const requiredFields = form.querySelectorAll('[required=\"required\"]');\r\n                for (let i = 0; i < requiredFields.length; i++) {\r\n                    if (!requiredFields[i].value) {\r\n                        form.requestSubmit();\r\n                        return;\r\n                    }\r\n                }\r\n            }\r\n            add_to_cart(\r\n                { variant_id, quantity, properties, selling_plan },\r\n                (item) => {\r\n                    if (callback) callback(item, items.concat([item]));\r\n                },\r\n                formData\r\n            );\r\n        }\r\n    };\r\n\r\n    const hasFont =\r\n        shop_settings.font.custom && shop_settings.font.family ? shop_settings.font.family : false;\r\n\r\n    const handleFirstTab = ({ keyCode }) => {\r\n        if (keyCode === 9) {\r\n            setUserIsTabbing(true);\r\n            window.removeEventListener('keydown', handleFirstTab);\r\n        }\r\n    };\r\n    // const handleResize = () => {\r\n    // \t// setWindowHeight(window.innerHeight);\r\n    // \tdocument.documentElement.style.setProperty('--screen-width', `${window.innerWidth}px`);\r\n    // \tdocument.documentElement.style.setProperty('--screen-height', `${window.innerHeight + 60}px`);\r\n    // };\r\n    const [add_to_unlock_product_id, add_to_unlock, campaign_key, isGlobal] = useCampaign('add_to_unlock')(\r\n        campaigns,\r\n        shopify_cart_state.items\r\n    );\r\n\r\n    useEffect(() => {\r\n        if (isPreview) return;\r\n        const gifts = add_to_unlock?.goals\r\n            .filter(({ reward_type }) => reward_type === 'gift')\r\n            .map(({ gift: { product, products } }) => product || products)\r\n            .flat()\r\n            .filter(Boolean);\r\n        const nonGiftsItems = shopify_cart_state.items.filter(\r\n            ({ product_type }) =>\r\n                !['free_gift', 'singleton_gift'].includes(product_type?.toLowerCase())\r\n        );\r\n        if (\r\n            gifts?.length &&\r\n            (productAddedToCart({ id: add_to_unlock_product_id }) ||\r\n                (isGlobal && nonGiftsItems.length))\r\n        ) {\r\n            if (!!shop_settings.count_compare_at) {\r\n                setCompareAtMap(\r\n                    gifts?.reduce((acc, { variant_price, variants }) => {\r\n                        if (!variants) return;\r\n                        return Object.assign(\r\n                            {},\r\n                            acc,\r\n                            ...variants.map(({ id, compare_at_price }) => ({\r\n                                [id]: compare_at_price || variant_price\r\n                            }))\r\n                        );\r\n                    }, {})\r\n                );\r\n            }\r\n        } else {\r\n            const deleteGifts = shopify_cart_state.items\r\n                .filter(({ product_type }) =>\r\n                    ['free_gift', 'singleton_gift'].includes(product_type?.toLowerCase())\r\n                )\r\n                .map(({ variant_id }) => update_cart_item({ variant_id, quantity: 0 }));\r\n            Promise.all(deleteGifts);\r\n        }\r\n        // AppLocalStorage.setItem(\"cart_items\", JSON.stringify(shopify_cart_state.items))\r\n    }, [\r\n        campaigns,\r\n        shopify_cart_state.items,\r\n        add_to_unlock_product_id,\r\n        add_to_unlock,\r\n        discountCode\r\n    ]);\r\n\r\n    useEffect(() => {\r\n      if(bundlesVariantPickerPreview){\r\n        setBundlesVariantsPickerOptions(bundlesVariantPickerPreview)\r\n        setBundlesVariantsPickerShow(true)\r\n      }else {\r\n        setBundlesVariantsPickerOptions(null)\r\n        setBundlesVariantsPickerShow(false)\r\n\r\n      }\r\n    }, [bundlesVariantPickerPreview])\r\n\r\n    useEffect(() => {\r\n      const updateCartState = () => {\r\n        if (window.monster_refresh && !isPreview) window.monster_refresh(false);\r\n      };\r\n\r\n      updateCartState();\r\n    }, [discountCode]);\r\n    \r\n    async function updateShippingProtectAppState({selected,price,variant}){\r\n      window.mu_shipProtectSelected = selected;\r\n      window.mu_shipProtectPrice = price;\r\n      setShipProtectState({selected,price})\r\n      if(!selected){\r\n        const {items} = await getCartItems()\r\n        if(productAddedToCartByVariant(variant, items)){\r\n          update_cart_item({ variant_id: variant, quantity: 0 });\r\n        }\r\n      }\r\n    }\r\n\r\n    window.notifyMonsterUpsells = updateShippingProtectAppState\r\n\r\n    useEffect(() => {\r\n        if (onInit) onInit(productionAddToCart);\r\n        window.addEventListener('keydown', handleFirstTab);\r\n        return () => {\r\n            window.removeEventListener('keydown', handleFirstTab);\r\n        };\r\n    }, []);\r\n\r\n    useEffect(() => {\r\n        if (hasFont && window.WebFont) {\r\n            window.WebFont.load({\r\n                google: {\r\n                    families: [hasFont]\r\n                }\r\n            });\r\n        }\r\n    }, [hasFont]);\r\n\r\n    const addFBTUpsell = (id) => {\r\n        dispatch({ type: ADD_UPSELL, id });\r\n    };\r\n\r\n    const removeFBTUpsell = (id) => {\r\n        dispatch({ type: REMOVE_UPSELL, id });\r\n    };\r\n\r\n    const setCartItems = (items, cart_level_discount_applications, fetchCampaigns) => {\r\n        dispatch({ type: SET_ITEMS, items, cart_level_discount_applications });\r\n        if (fetchCampaigns) productionAddToCartCallBack(items);\r\n    };\r\n    const addCartItem = (item) => {\r\n        dispatch({ type: ADD_ITEM, item });\r\n        // productionAddToCartCallBack([item])\r\n    };\r\n    const   mergeCartItem = (item) => {\r\n        dispatch({ type: MERGE_ITEM, item });\r\n        // productionAddToCartCallBack([item])\r\n    };\r\n    const removeCartItem = (id) => dispatch({ type: REMOVE_ITEM, id });\r\n    const setCartNote = (cartNote) => dispatch({ type: SET_CART_NOTE, cartNote });\r\n    window.monster_setCartItems = setCartItems;\r\n    window.monster_addCartItem = mergeCartItem;\r\n    window.monster_mergeCartItem = mergeCartItem;\r\n    window.monster_removeCartItem = removeCartItem;\r\n    window.monster_setCartNote = setCartNote;\r\n    const getRechargeSettings = async () => {\r\n        try {\r\n            const response = await Axios.get(window.location.href);\r\n            const recharge_installed = response.data.includes('static.rechargecdn.com');\r\n            const recharge_active = response.data.includes('data-recharge-theme');\r\n            if (!recharge_installed || !recharge_active) return setRechargeSettings(undefined);\r\n            const { data } = await Axios.get(\r\n                `https://static.rechargecdn.com/store/${shop_url}/product/2020-12/products.json`\r\n            );\r\n            setRechargeSettings(data);\r\n        } catch (error) {\r\n            if(window.ReCharge && window.ReCharge.is_installed) setRechargeSettings(window.ReCharge);\r\n            else setRechargeSettings(undefined);\r\n        }\r\n    };\r\n    useEffect(() => {\r\n        const atcs = document.querySelectorAll(\"button[data-pf-type='ProductATC']\");\r\n        atcs.forEach((atc) => {\r\n            const form = atc.closest('form');\r\n            atc.setAttribute('type', 'submit');\r\n            if (form) {\r\n                atc.removeAttribute('data-checkout');\r\n                if (shop_url !== 'primary-beans.myshopify.com') {\r\n                    atc.removeAttribute('data-pf-type');\r\n                    atc.removeAttribute('data-product-id');\r\n                }\r\n            }\r\n        });\r\n        setCartItems(cart_items);\r\n        if (rechargeSettings === null && !isPreview) getRechargeSettings();\r\n    }, [cart_items]);\r\n\r\n    useEffect(() => {\r\n        if (!isPreview) return;\r\n\r\n        if (forcePreview) {\r\n            preview_product(forcePreview);\r\n        } else if (\r\n            window.location.pathname === '/settings/checkout' &&\r\n            !shop_settings?.cod_settings?.is_form_in_cart\r\n        ) {\r\n            slider.slickGoTo(1);\r\n        } else {\r\n            slider.slickGoTo(0);\r\n        }\r\n    }, [isPreview, forcePreview, shop_settings?.cod_settings?.is_form_in_cart]);\r\n\r\n    useEffect(() => {\r\n        if (window.location.pathname === '/settings/checkout')\r\n            slider.slickGoTo(\r\n                shop_settings.cod_settings && shop_settings?.cod_settings?.is_form_in_cart ? 0 : 1\r\n            );\r\n    }, [shop_settings.cod_settings, shop_settings?.cod_settings?.is_form_in_cart]);\r\n\r\n    useEffect(() => {\r\n        if (!isPreview) {\r\n            const hasAutoDiscount = Utils.CartHasAutoDiscount(shopify_cart_state);\r\n            setHasAutoDiscount(hasAutoDiscount);\r\n        }\r\n    }, [shopify_cart_state.items]);\r\n\r\n    useEffect(() => {\r\n        // if (isOpened) iNoBounce.enable();\r\n        // else iNoBounce.disable();\r\n        if (isOpened && !viewCartTracked) {\r\n            const campaignsIds = Object.values(campaigns)\r\n                .flat(Infinity)\r\n                .map((c) => {\r\n                    const { campaign_key } = c;\r\n                    return campaign_key && campaign_key[1];\r\n                })\r\n                .filter(Boolean);\r\n            trackEvent({\r\n                type: 'view_cart',\r\n                campaigns: campaignsIds\r\n            }).then((_) => {\r\n                setViewCartTracked(true);\r\n            });\r\n        }\r\n    }, [isOpened, viewCartTracked]);\r\n\r\n    const goals = add_to_unlock?.goals || [];\r\n    const filterGoalsBasedOnDiscount = Utils.FilterAtuGoals(goals, !!discountCode);\r\n    const CAN_RENDER_ADD_TO_UNLOCK =\r\n      filterGoalsBasedOnDiscount.length &&\r\n      add_to_unlock?.isActive &&\r\n      (productAddedToCart({ id: add_to_unlock_product_id }) ||\r\n        (isGlobal && shopify_cart_state.items.length));\r\n    const bundlesDiscounts = Utils.getDiscount({\r\n      campaigns,\r\n      items: shopify_cart_state.items,\r\n      getBundlesOnly: true,\r\n    });\r\n    let stickyElements;\r\n    return (\r\n      <CartProvider\r\n        value={{\r\n          campaigns,\r\n          token,\r\n          cart_level_discount_applications:\r\n            shopify_cart_state.cart_level_discount_applications,\r\n          shopify_cart_items: shopify_cart_state.items,\r\n          shopify_cart_upsells: shopify_cart_state.fbtUpsells,\r\n          cartNote: shopify_cart_state.cartNote,\r\n          setCartItems,\r\n          addCartItem,\r\n          removeCartItem,\r\n          cart_currency,\r\n          cart_ref,\r\n          slider,\r\n          cart_settings: shop_settings,\r\n          Utils,\r\n          add_to_cart,\r\n          update_cart_item,\r\n          preview_product,\r\n          get_total,\r\n          isPreview,\r\n          showSubscription,\r\n          previewed_product,\r\n          setPreviewed_product,\r\n          shop_url,\r\n          productNotAddedToCart,\r\n          onlyOneItemAddedToCart,\r\n          productAddedToCart,\r\n          scrollbars_ref: scrollbars_ref.current,\r\n          close,\r\n          discountCode,\r\n          setDiscountCode,\r\n          productionAddToCart,\r\n          isOpened,\r\n          trackEvent,\r\n          setShowConfetti,\r\n          variantsPickerShow,\r\n          setVariantsPickerShow,\r\n          setVariantPickerOptions,\r\n          setBundlesVariantsPickerShow,\r\n          setBundlesVariantsPickerOptions,\r\n          showCheckoutLoading,\r\n          showComfirmOrderLoading,\r\n          orderCodForm,\r\n          setOrderCodForm,\r\n          isCodFormSubmitted,\r\n          setIsCodFormSubmitted,\r\n          showATUAfterText,\r\n          setCartNote,\r\n          addFBTUpsell,\r\n          removeFBTUpsell,\r\n          rechargeSettings,\r\n          hasWriteDiscountsScope,\r\n          compareAtMap,\r\n          setCompareAtMap,\r\n          giftCurrentPreview,\r\n          AppLocalStorage,\r\n          hasAutoDiscount,\r\n          products,\r\n          shipProtectState,\r\n          cartLoading,\r\n          setCartLoading,\r\n        }}\r\n      >\r\n        <div\r\n          className={classNames(\r\n            \"w-full h-full m-0 p-0 max-w-full flex flex-col relative\",\r\n            {\r\n              \"disable-outline\": !userIsTabbing,\r\n            }\r\n          )}\r\n          ref={cart_ref}\r\n          style={{\r\n            color: Utils.formatColor(shop_settings.font.color),\r\n            background: Utils.formatColor(shop_settings.theme.background),\r\n            fontSize: shop_settings.font.size,\r\n            fontFamily: hasFont ? hasFont.split(\":\")[0] : \"inherit\",\r\n            direction: shop_settings.rtl ? \"rtl\" : \"ltr\",\r\n            borderRadius: shop_settings.curved ? \"15px\" : \"\",\r\n          }}\r\n        >\r\n          {cart_ref.current && showConfetti !== 0 && (\r\n            <Confetti\r\n              width={cart_ref.current.offsetwidth}\r\n              height={cart_ref.current.offsetHeight}\r\n              recycle={false}\r\n              numberOfPieces={showConfetti}\r\n              gravity={0.2}\r\n              onConfettiComplete={() => setShowConfetti(0)}\r\n              initialVelocityX={5}\r\n            />\r\n          )}\r\n          <Header title=\"My Cart\" headerRef={header_ref} />\r\n          <CustomScroll\r\n            scrollRef={scrollbars_ref}\r\n            thumbBg={Utils.formatColor(shop_settings.theme.secondary)}\r\n            trackBg={Utils.formatColor(shop_settings.theme.background)}\r\n            isMobile={Utils.isMobile()}\r\n            className={classNames(\"flex-1\")}\r\n            style={{\r\n              marginBottom:\r\n                shop_settings.curved &&\r\n                !shop_settings.modules.checkout_button.fix_checkout_container\r\n                  ? \"15px\"\r\n                  : \"\",\r\n            }}\r\n          >\r\n            <div\r\n              style={{ minHeight: \"100%\" }}\r\n              className={classNames(\r\n                \"slider w-full min-w-full flex-1 overflow-hidden flex flex-col\"\r\n              )}\r\n            >\r\n              <div\r\n                className={classNames(\r\n                  \"flex-1 flex transform transition-transform duration-300 ease-out\",\r\n                  {\r\n                    \"translate-x-full\": active_slide && shop_settings.rtl,\r\n                    \"-translate-x-full\": active_slide && !shop_settings.rtl,\r\n                    \"translate-x-0\": !active_slide,\r\n                  }\r\n                )}\r\n              >\r\n                {shopify_cart_state.items.length ? (\r\n                  <div\r\n                    className={classNames(\r\n                      \"w-full min-w-full flex flex-col h-auto\"\r\n                    )}\r\n                  >\r\n                    {shop_settings.modules.checkout_button\r\n                      .fix_checkout_container &&\r\n                      !!CAN_RENDER_ADD_TO_UNLOCK && (\r\n                        <HeaderATU\r\n                          campaign_id={campaign_key && campaign_key[1]}\r\n                          add_to_unlock={add_to_unlock}\r\n                          bundlesDiscounts={bundlesDiscounts}\r\n                        />\r\n                      )}\r\n                    <CartItemsList />\r\n                    {shop_settings.cod_settings &&\r\n                      shop_settings.cod_settings.is_active &&\r\n                      shop_settings?.cod_settings?.is_form_in_cart && (\r\n                        <CodForm />\r\n                      )}\r\n                    {shop_settings.modules.order &&\r\n                      shop_settings.modules.order\r\n                        .filter(\r\n                          (key) =>\r\n                            !shop_settings.modules.checkout_button\r\n                              .fix_checkout_container ||\r\n                            key !== \"checkout_button\"\r\n                        )\r\n                        .map((key, i) => (\r\n                          <ExtraModule\r\n                            key={key}\r\n                            moduleKey={key}\r\n                            modules={shop_settings.modules}\r\n                            cartNote={shopify_cart_state.cartNote}\r\n                          />\r\n                        ))}\r\n                  </div>\r\n                ) : (\r\n                  <EmptyState />\r\n                )}\r\n\r\n                {active_slide != 0 && <ProductDetails\r\n                  style={{\r\n                    maxHeight:\r\n                      active_slide === 0 && header_ref.current\r\n                        ? `calc(100vh - ${header_ref.current.offsetHeight}px)`\r\n                        : undefined,\r\n                  }}\r\n                  add_to_unlock={add_to_unlock}\r\n                />}\r\n                {(isPreview ||\r\n                  (shop_settings.cod_settings &&\r\n                    shop_settings.cod_settings.is_active)) && <CodForm />}\r\n              </div>\r\n            </div>\r\n            {/* </div> */}\r\n            {/* </Slider> */}\r\n          </CustomScroll>\r\n\r\n          {shopify_cart_state.items.length > 0 &&\r\n            shop_settings.modules.order &&\r\n            shop_settings.modules.order\r\n              .filter(\r\n                (key) =>\r\n                  shop_settings.modules.checkout_button\r\n                    .fix_checkout_container && key === \"checkout_button\"\r\n              )\r\n              .map((key, i) => (\r\n                <ExtraModule\r\n                  key={key}\r\n                  moduleKey={key}\r\n                  modules={shop_settings.modules}\r\n                  cartNote={shopify_cart_state.cartNote}\r\n                />\r\n              ))}\r\n\r\n          {variantsPickerShow_ref.current && variantsPickerShow && (\r\n            <div className={classNames(\"absolute inset-0 z-20\")}>\r\n              <div\r\n                className={classNames(\r\n                  \"flex flex-col justify-end w-full h-full overflow-hidden transition-colors duration-300 ease-in cursor-pointer\"\r\n                )}\r\n                ref={variantsPickerOverlay_ref}\r\n                onClick={(event) => {\r\n                  event.preventDefault();\r\n                  if (event.target === variantsPickerOverlay_ref.current) {\r\n                    if (variantPickerOptions.onClose)\r\n                      variantPickerOptions.onClose();\r\n                    setVariantsPickerShow(false);\r\n                  }\r\n                }}\r\n                style={{\r\n                  background: variantsPickerShow\r\n                    ? \"rgba(0,0,0,0.2)\"\r\n                    : \"transparent\",\r\n                  borderRadius: shop_settings.curved ? \"15px\" : \"\",\r\n                }}\r\n              >\r\n                <div\r\n                  style={{}}\r\n                  className={classNames(\r\n                    \"max-h-full\",\r\n                    variantsPickerShow\r\n                      ? \"animate-slide-up\"\r\n                      : \"animate-slide-down\"\r\n                  )}\r\n                >\r\n                  <VariantsPicker\r\n                    {...variantPickerOptions}\r\n                    CustomScroll={CustomScroll}\r\n                    parentRef={variantsPickerOverlay_ref}\r\n                  />\r\n                </div>\r\n              </div>\r\n            </div>\r\n          )}\r\n          {bundlesVariantsPickerShow && (\r\n            <div className={classNames(\"absolute inset-0 z-20\")}>\r\n              <div\r\n                className={classNames(\r\n                  \"flex flex-col justify-end w-full h-full overflow-hidden transition-colors duration-300 ease-in\"\r\n                )}\r\n                ref={bundlesVariantsPickerOverlay_ref}\r\n                onClick={(event) => {\r\n                  if (\r\n                    event.target === bundlesVariantsPickerOverlay_ref.current\r\n                  ) {\r\n                    setBundlesVariantsPickerShow(false);\r\n                    if (bundlesVariantsPickerOptions.onClose)\r\n                      bundlesVariantsPickerOptions.onClose();\r\n                  }\r\n                }}\r\n                style={{\r\n                  background: bundlesVariantsPickerShow\r\n                    ? \"rgba(0,0,0,0.2)\"\r\n                    : \"transparent\",\r\n                  borderRadius: shop_settings.curved ? \"15px\" : \"\",\r\n                }}\r\n              >\r\n                <div\r\n                  style={{}}\r\n                  className={classNames(\r\n                    \"max-h-full\",\r\n                    bundlesVariantsPickerShow\r\n                      ? \"animate-slide-up\"\r\n                      : \"animate-slide-down\"\r\n                  )}\r\n                >\r\n                  <BundlesVariantsPicker\r\n                    {...bundlesVariantsPickerOptions}\r\n                    CustomScroll={CustomScroll}\r\n                    parentRef={bundlesVariantsPickerOverlay_ref}\r\n                  />\r\n                </div>\r\n              </div>\r\n            </div>\r\n          )}\r\n          {cartLoading && (\r\n            <div\r\n              className={classNames(\r\n                \"absolute h-full w-full flex-center flex-col\"\r\n              )}\r\n              style={{ background: \"#30303030\" }}\r\n            >\r\n              <Spinner />\r\n            </div>\r\n          )}\r\n        </div>\r\n      </CartProvider>\r\n    );\r\n};\r\n\r\nexport default Cart;\r\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAEUElEQVR42uzTMQ0AIBAAMfw7ZSF5BWCA8cYOldC1z1zgTxAQBASBnCAgCAgCOUFAEBAEcoKAICAI5AQBQUAQyAkCgoAgkBMEBAFBICcICAKCQE4QEAQEgZwgIAgIAjlBQBAQBHKCgCAgCOQEAUFAEMgJAoKAIJATBAQBQSAnCAgCgkBOEBAEBIGcICAICAI5QUAQEARygoAgIAjkBAFBQBDICQKCgCCQEwQEAUEgJwgIAoJAThAQBASBnCA89u61KW0gCsDw//9LreMFqIrYgZZCQUDuV7XtP0iz1akQzyh6zm4S8n54PzkysLMPJJuwEECIAEJkHkCIAEIEkCANZ8uo2elF39rd3NXq9qPpcqMegyIFECGp5f3vqPq1EX06Pst9Dsvq4Y96TIoQQISkrurf1RMzS7VuBuoxKUIA2aPJcqOekFnruPSFTxGA2PSzP3zx7jvfPOSuWqO58zomnI8AxKIYxM7EGs1X6sdMo/aBvI6QAQQgBJBwQKaru+jmdhx1B6NovFhn6jgfIADx0j5AZut7cRm4clnLzEQECEC89AaQfyfAp5UL9zexo9Oyu8Cofh5rgAQPIAZAantcIymdV1M/3AIIQLz0GpDF3a/o80kpAUJuMJmrnwtAwgYQJZDb6ULAIPej25ceX05eAHBX9B1KgAQKIDkBEuP4f55TqV47JAAJEEBycIi1heOxZyQA8RxAMn6SnsAhIQGIxwBiAMTXMm8ChxoJQADipTQuFCZwmCABCEC89KFbTeLiW03MD6veQAIQ4wBiDCROvZS7hcMUCUAA4qVQQBI4zJEABCBeUgJxh1lBcCSQAMQggHgG4la4yhdXUW80DYJja3HAIQEIQPwnANkXh7v+4f7HXUx0SILg2ELiPr0AAhC/CUDeg+OxZyRBcDzltisCCED8JgB5Dw4JSRAcANEHEGMgAg4RyUn5XD35AeI/gBgCecKhntSWAQQg3hOA5AIHQPQBxABIVnEARB9APgYkFzgAog8gSiD98Uw9iX0GEIB4DyDFDSAAIYAABCAA8RZAihtADHY1ib9vntm4WREg3msdyMQCCEC8BJDiBpA96gxGOxOr0eqoD33S6PK6vv063B3F6rE59AAiJHypSX2ynLXiW+1T320+DwFESKrebKsnZZaKtyVSj0kRAoiUvPHCQSA5Oqu4X+1Vj0dRAsjrSTsoundfN8lyV284ccvS6jEoUgAhAggRQIjMAwgRQIgAQmQeQIgAQgQQIvMAQgQQIoAQmQcQIoAQAYTIPIAQAYQIIETmAYQIIEQAITIPIEQAIQIIkXkAIQIIEUCIzAMIEUD+tk+HBAAAAACC/r/2hJHABEAQ2AkCgoAgsBMEBAFBYCcICAKCwE4QEAQEgZ0gIAgIAjtBQBAQBHaCgCAgCOwEAUFAENgJAoKAILATBAQBQWAnCAgCgsBOEBAEBIGdICAICAI7QUAQEAR2goAgIAjsAhByelclhK5iAAAAAElFTkSuQmCC\"","// extracted by mini-css-extract-plugin\nmodule.exports = {\"bundle\":\"bundle_bundle__2I8ca\",\"trash\":\"bundle_trash__2H968\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"floating\":\"review_widget_floating__323Y2\",\"checklist\":\"review_widget_checklist__1c5RI\",\"btn\":\"review_widget_btn__3exhv\",\"label\":\"review_widget_label__9pELa\",\"badge\":\"review_widget_badge__3GOuM\",\"checklist_main\":\"review_widget_checklist_main__Rfano\",\"expanded\":\"review_widget_expanded__2R-4K\",\"show\":\"review_widget_show__aDk8r\",\"checklist_container\":\"review_widget_checklist_container__2MzPa\",\"checklist_header\":\"review_widget_checklist_header__iENhD\",\"header_content\":\"review_widget_header_content__209XZ\",\"title\":\"review_widget_title__1LyQZ\",\"desc\":\"review_widget_desc__3kgzJ\",\"progress_container\":\"review_widget_progress_container__2xpch\",\"completed_caption\":\"review_widget_completed_caption__3Lnsj\",\"progress_bar\":\"review_widget_progress_bar__pDJTZ\",\"progress_bar_complete\":\"review_widget_progress_bar_complete__3c9--\",\"minimize\":\"review_widget_minimize__1Ed1b\",\"checklist_body\":\"review_widget_checklist_body__2dg2_\",\"items\":\"review_widget_items__1YStB\",\"item\":\"review_widget_item__2GeP2\",\"completed\":\"review_widget_completed__1JS5r\",\"checkmark\":\"review_widget_checkmark__3ucmH\",\"sequential_label\":\"review_widget_sequential_label__23sJh\",\"checklist_footer\":\"review_widget_checklist_footer__1aLu-\",\"stars\":\"review_widget_stars__dZz54\",\"star\":\"review_widget_star__2yufD\",\"review\":\"review_widget_review__2lo7m\"};","import React from 'react';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'lib/classNames';\r\n// import styles from 'styles/icon.module.scss';\r\n\r\nconst Icon = props => {\r\n    const {\r\n        icon,\r\n        size,\r\n        style,\r\n        className,\r\n        type,\r\n        onClick,\r\n        spin,\r\n        color,\r\n        iconRef,\r\n        onMouseEnter,\r\n        onMouseLeave\r\n    } = props;\r\n    if (!icon) console.log(props);\r\n    return (\r\n        <FontAwesomeIcon\r\n            icon={icon}\r\n            size={size}\r\n            color={color}\r\n            className={classNames(className, { 'cursor-pointer': onClick })}\r\n            spin={spin}\r\n            onMouseEnter={e => {\r\n                if (onMouseEnter) onMouseEnter(e);\r\n            }}\r\n            onMouseLeave={e => {\r\n                if (onMouseLeave) onMouseLeave(e);\r\n            }}\r\n            ref={iconRef}\r\n            onClick={onClick}\r\n            style={style}\r\n        />\r\n    );\r\n};\r\n\r\nIcon.propTypes = {\r\n    style: PropTypes.object.isRequired\r\n};\r\n\r\nIcon.defaultProps = {\r\n    style: {},\r\n    size: '1x',\r\n    className: '',\r\n    type: 'normal',\r\n    onClick: null,\r\n    spin: false,\r\n    color: null,\r\n    iconRef: null,\r\n    onMouseEnter: null,\r\n    onMouseLeave: null\r\n};\r\n\r\nexport default Icon;\r\n","const useCampaign = (campaign_type, bundles_product_id = null, getFullCampaign = false) => (campaigns, cart_items) => {\r\n\tconst noCampaign = new Array(2).fill(null);\r\n\tif (!campaigns) return noCampaign;\r\n\r\n\tlet product_campaign = noCampaign;\r\n\r\n\tconst global_campaigns = Object.values(campaigns)\r\n\t\t.flat(Infinity)\r\n\t\t.filter((campaign) => campaign.isGlobal);\r\n\tif (campaign_type === 'bundles') {\r\n\t\tconst product_campaigns = campaigns[bundles_product_id] || [];\r\n\t\tconst bundles_campaign =\r\n\t\t\tproduct_campaigns.find(({ type }) => type === 'bundles') ||\r\n\t\t\tglobal_campaigns.find(({ type }) => type === 'bundles');\r\n\t\tif (bundles_campaign) product_campaign = [bundles_product_id, bundles_campaign];\r\n\t} else {\r\n\t\t// add to unlock and one tick renders a single campaign at time\r\n\t\tconst itemsIds = [...cart_items].reverse().map(({ product_id }) => product_id.toString());\r\n\t\tconst type_campaign = Object.entries(campaigns)\r\n\t\t\t.sort(([a], [b]) => {\r\n\t\t\t\tconst AIndex = itemsIds.indexOf(a) === -1 ? itemsIds.length + 1 : itemsIds.indexOf(a);\r\n\t\t\t\tconst BIndex = itemsIds.indexOf(b) === -1 ? itemsIds.length + 1 : itemsIds.indexOf(b);\r\n\t\t\t\treturn AIndex - BIndex;\r\n\t\t\t})\r\n\t\t\t.find(([product_id, product_campaigns]) => {\r\n\t\t\t\tconst productGlobalCampaigns = product_campaigns.filter((campaign) => campaign.isGlobal)\r\n\t\t\t\tconst productIsAddedToCart = cart_items.map(({ product_id: id }) => id).includes(parseInt(product_id))\r\n\t\t\t\tif (!productGlobalCampaigns.length && !productIsAddedToCart) return false;\r\n\t\t\t\treturn productIsAddedToCart ? product_campaigns.find(({ type }) => type === campaign_type) : productGlobalCampaigns.find(({ type }) => type === campaign_type);\r\n\t\t\t});\r\n\t\tif (type_campaign) {\r\n\t\t\tconst [id, camps] = type_campaign;\r\n\t\t\tproduct_campaign = [id, camps.find(({ type }) => type === campaign_type)];\r\n\t\t}\r\n\t}\r\n\tconst [product_id, campaign] = product_campaign;\r\n\treturn product_id ? [product_id, getFullCampaign ? campaign : campaign[campaign_type], campaign.isGlobal] : noCampaign;\r\n};\r\n\r\nconst getCampaignsByType = (campaign_type) => (campaigns) =>\r\n\tObject.values(campaigns)\r\n\t\t.filter(({ type }) => type === campaign_type)\r\n\t\t.map((campaign) => campaign[campaign_type]);\r\nexport default useCampaign;\r\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"ml_4\":\"extra_modules_ml_4__3193O\",\"module\":\"extra_modules_module__2xRB1\",\"header\":\"extra_modules_header__rHkZ9\",\"header_wrapper\":\"extra_modules_header_wrapper__7XGTe\",\"name\":\"extra_modules_name__2n4sH\",\"info\":\"extra_modules_info__11j55\",\"grip\":\"extra_modules_grip__1KJqt\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"campaign_preview\":\"cart_screen_campaign_preview__3f1M1\",\"campaign\":\"cart_screen_campaign__1yY51\",\"checkbox\":\"cart_screen_checkbox__ygUxe\",\"saveSettingBar\":\"cart_screen_saveSettingBar__sQQLl\",\"checkboxControl\":\"cart_screen_checkboxControl__3jBZl\",\"radioDiv\":\"cart_screen_radioDiv__3bAKu\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"group\":\"form_group_group__3-IRL\",\"title\":\"form_group_title__1qZF7\",\"content\":\"form_group_content__QcaQG\"};"],"sourceRoot":""}