PageSourceSearch

https://smh.re/2522-0b2426.bundle.js

js smh.re collected 2026-10-01 14:08:39 UTC 31,504 bytes, 149 lines download raw bytes

1"use strict";(self.webpackChunksmarpshare_frontend=self.webpackChunksmarpshare_frontend||[]).push([[2522],{34:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{l:()=>DragNDropArea});var react__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(96540);const handleDragOver=event=>{event.preventDefault(),event.stopPropagation()},DragNDropArea=({children,onDrop})=>react__WEBPACK_IMPORTED_MODULE_0__.createElement("div",{onDragOver:handleDragOver,onDrop:event=>((event,handleSelectFiles)=>{if(handleDragOver(event),!event.dataTransfer.files||0===event.dataTransfer.files.length)return;const fileInput=document.createElement("input");fileInput.type="file",fileInput.style.display="none",document.body.appendChild(fileInput);const dataTransfer=new DataTransfer;Array.from(event.dataTransfer.files).forEach((file=>dataTransfer.items.add(file))),fileInput.files=dataTransfer.files;const changeEvent=new Event("change",{bubbles:!0});fileInput.dispatchEvent(changeEvent),handleSelectFiles({target:fileInput}),document.body.removeChild(fileInput)})(event,onDrop)},children)},5741:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{M:()=>ImageInput});var _emotion_styled__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(59295),_haiilo_catalyst_react__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(11432),react__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(96540),src_app_react_common_hooks_use_get_text__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(87914);const TextWrapper=_emotion_styled__WEBPACK_IMPORTED_MODULE_0__.A.div`
2	display: flex;
3	align-items: center;
4	justify-content: center;
5`,BrowseButton=(0,_emotion_styled__WEBPACK_IMPORTED_MODULE_0__.A)(_haiilo_catalyst_react__WEBPACK_IMPORTED_MODULE_3__.B$)`
6	::part(button) {
7		text-decoration: underline;
8		color: ${props=>props.theme.color.PrimaryDefault};
9		padding-left: 5px;
10		padding-right: 5px;
11
12		&:hover {
13			background-color: transparent;
14		}
15	}
16`,ImageInput=({text,onChange,inputRef,multiple=!1,hasCustomText=!1,...props})=>{const{gettext}=(0,src_app_react_common_hooks_use_get_text__WEBPACK_IMPORTED_MODULE_2__.z)(),promptText=gettext(multiple?"Drag and drop your images here, or":"Drag and drop your image here, or");return react__WEBPACK_IMPORTED_MODULE_1__.createElement("div",{className:"image-placeholder-caption","data-testid":"image-placeholder-caption"},text?react__WEBPACK_IMPORTED_MODULE_1__.createElement("span",null,text):!hasCustomText&&react__WEBPACK_IMPORTED_MODULE_1__.createElement(TextWrapper,null,react__WEBPACK_IMPORTED_MODULE_1__.createElement("span",null,promptText)," ",react__WEBPACK_IMPORTED_MODULE_1__.createElement(BrowseButton,{variant:"text",color:"primary"},gettext("browse"))," ",react__WEBPACK_IMPORTED_MODULE_1__.createElement("span",null,gettext("your computer."))),react__WEBPACK_IMPORTED_MODULE_1__.createElement("input",{type:"file",style:{display:"none"},onChange,ref:inputRef,...props,multiple}))}},31242:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{x:()=>ImagePlaceholder});var react__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(96540),classnames__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(32485),_emotion_styled__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(59295),_haiilo_catalyst_react__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(11432),src_design_system_components__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(66931);const Content=_emotion_styled__WEBPACK_IMPORTED_MODULE_2__.A.div`
17	border-radius: 8px;
18	height: 184px;
19	width: 100%;
20	border: 1px dashed #d7dbe0;
21	display: flex;
22	justify-content: center;
23	align-items: center;
24	color: #000000;
25
26	.flex-break {
27		flex-basis: 100%;
28	}
29
30	.image-placeholder-caption {
31		text-align: center;
32		font-size: 15px;
33		font-weight: 400;
34		line-height: 24px;
35		color: #000000;
36	}
37`,Placeholder=_emotion_styled__WEBPACK_IMPORTED_MODULE_2__.A.div`
38	display: flex;
39	justify-content: center;
40	align-items: center;
41	flex-wrap: wrap;
42	flex-direction: column;
43`,ImagePlaceholder=({className,children,showPlaceholder,onClick,title})=>react__WEBPACK_IMPORTED_MODULE_0__.createElement(Content,{onClick,className:classnames__WEBPACK_IMPORTED_MODULE_1__(className,{hoverable:!!onClick})},showPlaceholder?react__WEBPACK_IMPORTED_MODULE_0__.createElement(Placeholder,null,react__WEBPACK_IMPORTED_MODULE_0__.createElement(_haiilo_catalyst_react__WEBPACK_IMPORTED_MODULE_4__.k0,{icon:"upload-outlined",size:"xl"}),title&&react__WEBPACK_IMPORTED_MODULE_0__.createElement("div",null,react__WEBPACK_IMPORTED_MODULE_0__.createElement("div",{className:"flex-break"},react__WEBPACK_IMPORTED_MODULE_0__.createElement(src_design_system_components__WEBPACK_IMPORTED_MODULE_3__.hK,{dir:"y",size:"m"})),title)):children),ButtonGroupContent=_emotion_styled__WEBPACK_IMPORTED_MODULE_2__.A.div`
44	width: 100%;
45	height: 100%;
46	display: flex;
47	padding: ${props=>props.theme.spacing.S};
48`,ImageUploaderControl=_emotion_styled__WEBPACK_IMPORTED_MODULE_2__.A.label`
49	flex: 1;
50	flex-wrap: wrap;
51	display: flex;
52	align-items: center;
53	justify-content: center;
54	align-content: center;
55	background-color: white;
56	border: 1px solid transparent;
57
58	&:hover {
59		border-color: ${props=>props.theme.color.PrimaryDefault};
60		cursor: pointer;
61	}
62
63	&:first-of-type {
64		border-top-left-radius: 5px;
65		border-bottom-left-radius: 5px;
66	}
67
68	&:last-of-type {
69		border-top-right-radius: 5px;
70		border-bottom-right-radius: 5px;
71	}
72`,Loader=_emotion_styled__WEBPACK_IMPORTED_MODULE_2__.A.div`
73	border: 4px solid color(primary-default);
74	border-top: 4px solid color(space-darkest);
75	border-radius: 50%;
76	width: 64px;
77	height: 64px;
78	animation: spin 2s linear infinite;
79
80	border-color: ${props=>props.theme.color.PrimaryDefault};
81`;ImagePlaceholder.Loader=Loader,ImagePlaceholder.Button=({icon,children,onClick})=>react__WEBPACK_IMPORTED_MODULE_0__.createElement(ImageUploaderControl,{onClick},icon,react__WEBPACK_IMPORTED_MODULE_0__.createElement("div",{className:"flex-break"},react__WEBPACK_IMPORTED_MODULE_0__.createElement(src_design_system_components__WEBPACK_IMPORTED_MODULE_3__.hK,{dir:"y",size:"m"})),children),ImagePlaceholder.ButtonGroup=({children})=>react__WEBPACK_IMPORTED_MODULE_0__.createElement(ButtonGroupContent,null,react__WEBPACK_IMPORTED_MODULE_0__.Children.toArray(children).reduce(((prev,curr,index)=>[prev,react__WEBPACK_IMPORTED_MODULE_0__.createElement(src_design_system_components__WEBPACK_IMPORTED_MODULE_3__.hK,{dir:"x",size:"s",key:`sep-${index}`}),curr])))},37373:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{ve:()=>HeaderWithGroupSelection,uA:()=>HeaderWithGroupSelectionRenderer,lW:()=>NO_FILTER_OPTION_VALUE,Xy:()=>mapStateToProps});var react=__webpack_require__(96540),es=__webpack_require__(49924),redux=__webpack_require__(82960),stencil_generated=__webpack_require__(11432),emotion_styled_browser_esm=__webpack_require__(59295),effects=__webpack_require__(61412),cat_select_facade=__webpack_require__(33544),use_cat_select=__webpack_require__(50071),use_get_text=__webpack_require__(87914);const Select=(0,emotion_styled_browser_esm.A)(cat_select_facade.j)`
82	${({theme:{cat:{fontSize,fontWeight,color,radius}}})=>`\n\t\tcolor: ${color.uiFontBase};\n\t\twidth: 240px;\n\t\t--cat-border-radius-m: ${radius.l};\n\t\t--cat-border-color-dark: 235, 236, 240;\n\t\t::part(input) {\n\t\t\tfont-size: ${fontSize.m};\n\t\t\tfont-weight: ${fontWeight.head};\n\t\t}\n\t`}
83`,CatGroupSelect=({options,value,onGroupChange})=>{const{gettext}=(0,use_get_text.z)();return react.createElement(Select,{label:gettext("Group select"),labelHidden:!0,required:!0,options:(0,use_cat_select.a)(options,(folder=>folder.value),(folder=>folder.display)),nativeAttributes:{"data-testid":"group-select"},noItems:gettext("No matching group found"),value,onCatChange:event=>{if(!event.target.value||event.target.value===value)return;const group=options.find((({value})=>value===event.target.value));group&&onGroupChange(group)}})};var use_query_params=__webpack_require__(47547),use_session=__webpack_require__(84280);const GroupLabel=emotion_styled_browser_esm.A.p`
84	color: ${p=>p.theme.cat.color.uiFontBase};
85`,NO_FILTER_OPTION_VALUE="no_filter",HeaderWithGroupSelectionRenderer=({groupOptions,isGroupSelectionEnabled,isFetchingGroups,selectedGroup,onGroupSelection,fetchGroups,testId,title,toolbar,isUpdateQueryParamEnabled=!0,isNoFilterOptionEnabled=!0,noFilterOptionText})=>{const[queryParams,setQueryParam]=(0,use_query_params.s)(),{groupId:groupIdFromUrl}=queryParams,{session:{company:{_id:companyId,isGroupEnabled},user}}=(0,use_session.w)(),{gettext}=(0,use_get_text.z)(),[hasMounted,setHasMounted]=react.useState(!1),noFilterOption={value:NO_FILTER_OPTION_VALUE,display:noFilterOptionText||gettext("All groups")};react.useEffect((()=>{if(setHasMounted(!0),isGroupEnabled&&isGroupSelectionEnabled){fetchGroups(!0)}else handleGroupSelection({display:user.groupName,value:user.groupId})}),[]);const filteredGroupOptions=react.useMemo((()=>{const groups=(groupOptions=>user.companyId!==companyId&&isGroupEnabled?groupOptions.filter((group=>group.value!==user.groupId)):groupOptions)(groupOptions);return isNoFilterOptionEnabled?[noFilterOption,...groups]:groups}),[groupOptions]),handleGroupSelection=group=>{onGroupSelection(group),isUpdateQueryParamEnabled&&updateQueryParam(group)},updateQueryParam=group=>{if((null==group?void 0:group.value)!==NO_FILTER_OPTION_VALUE)setQueryParam({...queryParams,groupId:null==group?void 0:group.value});else{const{groupId,...query}=queryParams;setQueryParam({...query})}};react.useEffect((()=>{if(!isGroupSelectionEnabled||!hasMounted||isFetchingGroups)return;const groupToSelect=(()=>
85{if(!groupIdFromUrl&&isNoFilterOptionEnabled)return noFilterOption;let groupToSelect=filteredGroupOptions.find((({value})=>value===(groupIdFromUrl||user.groupId)));return void 0===groupToSelect&&(groupToSelect=filteredGroupOptions[0]),groupToSelect})();void 0!==groupToSelect&&groupToSelect.value!==(null==selectedGroup?void 0:selectedGroup.value)&&handleGroupSelection(groupToSelect)}),[groupOptions,groupIdFromUrl]);return react.createElement("div",{className:"cat-flex-col cat-gap-s"},react.createElement("h1",{className:"cat-h1","data-testid":testId},title),react.createElement("div",{className:"cat-flex cat-justify-between"},isGroupEnabled?isGroupSelectionEnabled?isFetchingGroups?react.createElement(stencil_generated.K0,{"data-testid":"loading-indicator"}):0===filteredGroupOptions.length?gettext("No groups for this user. Please check your user role."):1===filteredGroupOptions.length?react.createElement(GroupLabel,{className:"cat-text-l","data-testid":"group-label"},filteredGroupOptions[0].display):react.createElement(CatGroupSelect,{options:filteredGroupOptions,value:(null==selectedGroup?void 0:selectedGroup.value)||"",onGroupChange:handleGroupSelection}):react.createElement(GroupLabel,{className:"cat-text-l","data-testid":"group-label"},null==selectedGroup?void 0:selectedGroup.display):null,toolbar))},mapStateToProps=state=>({isFetchingGroups:state.Group.isFetching,groupOptions:Object.values(state.Group.groupList).map((({general:{name,_id}})=>({display:name,value:_id})))}),HeaderWithGroupSelection=(0,es.Ng)(mapStateToProps,(dispatch=>(0,redux.bindActionCreators)({fetchGroups:effects.pl},dispatch)))(HeaderWithGroupSelectionRenderer)},53255:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{G:()=>ImageUploader});var _emotion_styled__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(59295),react__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(96540),_haiilo_catalyst_react__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__(11432),_image_input__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(5741),_image_placeholder__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(31242),_image_utils__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(3554);const ImageUploader=({onSelectImages,imageInputText,width,imageCountLimit,isLoading})=>{const imageInputEl=react__WEBPACK_IMPORTED_MODULE_1__.useRef(null),Content=_emotion_styled__WEBPACK_IMPORTED_MODULE_0__.A.section`
86		display: flex;
87		flex-direction: column;
88		align-items: center;
89		padding: ${props=>props.theme.spacing.S};
90		border: 1px dashed #d7dbe0;
91		border-radius: 5px;
92		width: ${width||"800px"};
93	`,ImagePlaceholderStyled=(0,_emotion_styled__WEBPACK_IMPORTED_MODULE_0__.A)(_image_placeholder__WEBPACK_IMPORTED_MODULE_3__.x)`
94		border: 0;
95		background: white;
96	`,LoadingWrapper=_emotion_styled__WEBPACK_IMPORTED_MODULE_0__.A.div`
97		width: 100%;
98		height: 184px;
99	`;return react__WEBPACK_IMPORTED_MODULE_1__.createElement(Content,null,isLoading?react__WEBPACK_IMPORTED_MODULE_1__.createElement(LoadingWrapper,{className:"cat-flex cat-justify-center cat-items-center"},react__WEBPACK_IMPORTED_MODULE_1__.createElement(_haiilo_catalyst_react__WEBPACK_IMPORTED_MODULE_5__.K0,{size:"l","data-testid":"image-uploading-spinner"})):react__WEBPACK_IMPORTED_MODULE_1__.createElement(ImagePlaceholderStyled,{showPlaceholder:!0,onClick:()=>{var _a;return null===(_a=null==imageInputEl?void 0:imageInputEl.current)||void 0===_a?void 0:_a.click()},title:react__WEBPACK_IMPORTED_MODULE_1__.createElement(_image_input__WEBPACK_IMPORTED_MODULE_2__.M,{text:imageInputText,onChange:onSelectImages,inputRef:imageInputEl,accept:_image_utils__WEBPACK_IMPORTED_MODULE_4__.Zw,multiple:imageCountLimit>1,"data-testid":"image-upload-input"})}))}},71909:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{k:()=>ImagePreview});var _emotion_styled__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(59295),_haiilo_catalyst_react__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(11432),react__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(96540);const DeleteButton=(0,_emotion_styled__WEBPACK_IMPORTED_MODULE_0__.A)(_haiilo_catalyst_react__WEBPACK_IMPORTED_MODULE_2__.B$)`
100	${({theme:{cat:{spacing:{s}}}})=>`\n\t\tposition: absolute;\n\t\tright: ${s};\n\t\ttop: ${s};\n\t`}
101`,Container=_emotion_styled__WEBPACK_IMPORTED_MODULE_0__.A.div`
102	${({theme:{cat:{color,radius}}})=>`\n\t\tposition: relative;\n\t\tborder: 1px solid ${color.uiBorderDefault};\n\t\tborder-radius: ${radius.m};\n\t\toverflow: hidden;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t`}
103`,ImagePreview=({children,remove})=>react__WEBPACK_IMPORTED_MODULE_1__.createElement(Container,null,react__WEBPACK_IMPORTED_MODULE_1__.createElement(DeleteButton,{className:"image-preview-action",onCatClick:remove,icon:"trash-outlined",iconOnly:!0,nativeAttributes:{"data-testid":"delete-button"}}),children)},72522:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{RewardPage:()=>RewardPage});var emotion_styled_browser_esm=__webpack_require__(59295),stencil_generated=__webpack_require__(11432),react=__webpack_require__(96540),tracking_utils=__webpack_require__(48458),api=__webpack_require__(56433),string_utils=__webpack_require__(73225),util=__webpack_require__(58151),use_get_text=__webpack_require__(87914),use_session=__webpack_require__(84280),components=__webpack_require__(66931),toast=__webpack_require__(62614);const Body=emotion_styled_browser_esm.A.div`
104	color: ${p=>p.theme.cat.color.uiFontBase};
105`,DeleteRewardDialog=({reward:{title,_id},onClose})=>{const{gettext}=(0,use_get_text.z)(),[isLoading,setIsLoading]=react.useState(!1);return react.createElement(components.Au,{show:!0,onClose:()=>onClose(),width:524},react.createElement(components.Au.Header,{title:gettext("Delete reward")}),react.createElement(components.Au.Content,null,react.createElement(Body,null,react.createElement("p",{className:"cat-text-l","data-testid":"reward-delete-dialog-description"},gettext("Are you sure you want to delete")," ",react.createElement("strong",null,title),"?"))),react.createElement(components.Au.FooterActions,null,react.createElement(stencil_generated.B$,{onClick:async()=>{var _a,_b;setIsLoading(!0);const[,error]=await(0,util.Oi)((()=>api.gM.deleteReward(_id)));if(setIsLoading(!1),error)return(0,toast.Kf)({message:null!==(_a=(0,string_utils.fi)(error))&&void 0!==_a?_a:gettext("Failed to delete reward. Please try again.")}),void tracking_utils.A.error(null!==(_b=(0,string_utils.fi)(error))&&void 0!==_b?_b:"Failed to delete reward. Please try again.","DeleteRewardDialog.handleDelete",(0,string_utils.hT)(error));(0,toast.tP)({message:gettext("Reward has been deleted.")}),onClose(!0)},color:"primary",variant:"filled",nativeAttributes:{"data-testid":"delete-button"},loading:isLoading}
105,gettext("Delete"))))};var use_document_title=__webpack_require__(10207),header_with_group_selection=__webpack_require__(37373),dist=__webpack_require__(71287),drag_n_drop_area=__webpack_require__(34),image_preview=__webpack_require__(71909),image_uploader=__webpack_require__(53255),shared_react_components=__webpack_require__(67940),file_utils=__webpack_require__(47339),media=__webpack_require__(75088),image_utils=__webpack_require__(3554),catalyst_provider=__webpack_require__(2784);const RewardForm=emotion_styled_browser_esm.A.div`
106	color: ${p=>p.theme.cat.color.uiFontBase};
107`,AddEditRewardDialog=({reward,groupId,onClose})=>{const{gettext}=(0,use_get_text.z)(),[form,setForm]=react.useState(reward),[formErrors,setFormErrors]=react.useState({image:"",title:!1,description:!1,point:!1}),{session:{user}}=(0,use_session.w)(),[isSaving,setIsSaving]=react.useState(!1),[isUploadingImage,setIsUploadingImage]=react.useState(!1),dialogTitle=form._id?gettext("Edit reward"):gettext("Create new reward");(0,catalyst_provider.g)({"error.AddEditRewardDialog.title":gettext("Please enter title for the reward"),"error.AddEditRewardDialog.point":gettext("Please enter price for the reward (not less than 1 point)")});const handleSelectFiles=async event=>{var _a;const file=null===(_a=(0,file_utils.fz)(event))||void 0===_a?void 0:_a[0];if(!file)return;setFormErrors((prev=>({...prev,image:""})));const validationError=(file=>[...image_utils.k3,image_utils.DL].includes(file.type)?null:gettext("Please select an image or a gif to upload."))(file);if(validationError)return void setFormErrors((prev=>({...prev,image:validationError})));const metadata=await(async file=>{try{return await(0,image_utils.K4)(URL.createObjectURL(file))}catch(_a){return setFormErrors((prev=>({...prev,image:gettext("An error occurred while processing the image. Please try again.")}))),null}})(file);metadata&&(setIsUploadingImage(!0),await(async metadata=>{try{const uploadedImages=await(0,media.eC)([metadata.url],user._id,dist.LWb.Image);setForm((prev=>({...prev,imageUrl:uploadedImages[0].accessUrl})))}catch(_a){setFormErrors((prev=>({...prev,image:gettext("An error occurred while uploading the image. Please try again.")})))}})(metadata),setIsUploadingImage(!1))};return react.createElement(components.Au,{show:!0,onClose,width:524},react.createElement(components.Au.Header,{title:dialogTitle}),react.createElement(components.Au.Content,null,react.createElement(RewardForm,{className:"cat-form"},react.createElement(stencil_generated.BU,{required:!0,label:gettext("Title"),value:form.title,maxLength:400,nativeAttributes:{"data-testid":"title-input"},onCatChange:event=>{const value=event.target.value||"";setForm({...form,title:value}),setFormErrors((prev=>({...prev,title:!1})))},errors:formErrors.title?["AddEditRewardDialog.title"]:[]}),react.createElement(stencil_generated.Fc,{onCatChange:event=>{const value=event.target.value||"";setForm({...form,description:value})},label:gettext("Description"),nativeAttributes:{"data-testid":"description-input"}}),react.createElement(stencil_generated.BU,{required:!0,type:"number",label:gettext("Price"),min:1,textSuffix:"points",value:form.point.toString(),nativeAttributes:{"data-testid":"points-input"},onCatChange:event=>{const value=event.target.value||"";Number(value)<=0?setFormErrors((prev=>({...prev,point:!0}))):(setForm({...form,point:Number(value)}),setFormErrors((prev=>({...prev,point:!1}))))},errors:formErrors.point?["AddEditRewardDialog.point"]:[]}),form.imageUrl?react.createElement(image_preview.k,{remove:()=>setForm({...form,imageUrl:""})},react.createElement(shared_react_components.Cr,{imageUrl:form.imageUrl,token:dist.JRo.FitIn,id:"post-link-image-preview"})):react.createElement(react.Fragment,null,formErrors.image&&react.createElement(stencil_generated.Jv,{className:"cat-mb-s",color:"danger"},formErrors.image),react.createElement(drag_n_drop_area.l,{onDrop:handleSelectFiles},react.createElement(image_uploader.G,{onSelectImages:handleSelectFiles,imageCountLimit:1,width:"100%",isLoading:isUploadingImage}))))),react.createElement(components.Au.FooterActions,null,react.createElement(stencil_generated.B$,{onClick:async()=>{var _a,_b;if(!form.title)return void setFormErrors((prev=>({...prev,title:!0})));if(!form.point||form.point<=0)return void setFormErrors((prev=>({...prev,point:!0})));setIsSaving(!0);const[,error]=await(0,util.Oi)((async()=>form._id?api.gM.updateReward(form._id,form):api.gM.createReward({...form,groupId})));if(setIsSaving(!1),error)return(0,toast.Kf)({message:null!==(_a=(0,string_utils.fi)(error))&&void 0!==_a?_a:gettext("Something went wrong while saving changes, please try again later.")}),void tracking_utils.A.error(null!==(_b=(0,string_utils.fi)(error))&&void 0!==_b?_b:"Something went wrong while saving changes, please try again later.","AddEditRewardDialog.handleSave",(0,string_utils.hT)(error));onClose(!0)},color:"primary",variant:"filled",nativeAttributes:{"data-testid":"save-button"},loading:isSaving}
107,gettext("Save"))))},claim_reward_dialog_Body=emotion_styled_browser_esm.A.div`
108	color: ${p=>p.theme.cat.color.uiFontBase};
109`,ImageWrapper=emotion_styled_browser_esm.A.div`
110	img {
111		max-width: 270px;
112		width: 100%;
113		height: 152px;
114	}
115`,ClaimRewardDialog=({reward:{_id,imageUrl,title},onClose})=>{const{gettext}=(0,use_get_text.z)(),[isLoading,setIsLoading]=react.useState(!1),[message,setMessage]=react.useState("");return react.createElement(components.Au,{show:!0,onClose:()=>onClose(),width:524},react.createElement(components.Au.Header,{title:gettext("Claim reward")}),react.createElement(components.Au.Content,null,react.createElement(claim_reward_dialog_Body,null,react.createElement(ImageWrapper,{className:"cat-flex cat-flex-col cat-items-center cat-mb-m"},react.createElement(shared_react_components.Cr,{imageUrl,token:dist.JRo.Post,fallbackImage:"/images/no-image-16x9.jpg","data-testid":"reward-image",className:"cat-radius-l"})),react.createElement(stencil_generated.Fc,{label:gettext("Message to administrator"),requiredMarker:"none",value:message,onCatChange:e=>setMessage(e.target.value||""),placeholder:gettext("Add a quick note for the admin — like size or type.")}))),react.createElement(components.Au.FooterActions,null,react.createElement(stencil_generated.B$,{onClick:async()=>{var _a,_b;setIsLoading(!0);const[,error]=await(0,util.Oi)((()=>api.Zk.claimReward({rewardId:_id,message})));if(setIsLoading(!1),error)return(0,toast.Kf)({message:null!==(_a=(0,string_utils.fi)(error))&&void 0!==_a?_a:gettext("Failed to claim. Please try again.")}),void tracking_utils.A.error(null!==(_b=(0,string_utils.fi)(error))&&void 0!==_b?_b:"Failed to claim reward. Please try again.","ClaimRewardDialog.handleClaim",(0,string_utils.hT)(error));(0,toast.tP)({message:`${title} ${gettext("has been claimed!")}`}),onClose(!0)},color:"primary",variant:"filled",nativeAttributes:{"data-testid":"reward-claim-modal-button"},loading:isLoading},gettext("Claim"))))};var emotion_react_browser_esm=__webpack_require__(17437);const Wrapper=emotion_styled_browser_esm.A.div`
116	width: 100%;
117	height: ${({height})=>height}px;
118	background-color: ${({bgColor})=>bgColor};
119`,StyledIcon=(0,emotion_styled_browser_esm.A)(stencil_generated.k0)`
120	color: ${({iconColor})=>iconColor};
121	font-size: ${({iconSize})=>iconSize}px;
122`,FallbackImage=({height=152,bgColor="#ced2dd",icon,iconSize=56,iconColor="#ffffff","data-testid":testId="fallback-image"})=>react.createElement(Wrapper,{height,bgColor,className:"cat-flex cat-justify-center cat-items-center"},react.createElement(StyledIcon,{icon,iconSize,"data-testid":testId,iconColor,size:"inline"})),reward_item_ImageWrapper=emotion_styled_browser_esm.A.div`
123	position: relative;
124
125	img {
126		width: 100%;
127		height: 152px;
128	}
129`,Card=(0,emotion_styled_browser_esm.A)(stencil_generated.Re)`
130	color: ${p=>p.theme.cat.color.uiFontBase};
131	padding: 0;
132	overflow: hidden;
133`,maintainLineHeight=emotion_react_browser_esm.AH`
134	&:empty::before {
135		content: "\\00a0";
136	}
137`,Title=emotion_styled_browser_esm.A.h4`
138	${maintainLineHeight};
139`,Description=emotion_styled_browser_esm.A.p`
140	${maintainLineHeight};
141`,Option=emotion_styled_browser_esm.A.div`
142	position: absolute;
143	right: 0;
144	padding: ${({theme})=>theme.cat.spacing.m};
145`,PendingButtonWrapper=emotion_styled_browser_esm.A.div`
146	height: ${p=>p.theme.cat.spacing.xl};
147`,RewardItem=({reward,onEditReward,onDeleteReward,onClaimReward})=>{const{title,imageUrl,description,point,pendingUser}=reward,{session:{user},sessionUtil:{isGroupAdmin,isManager}}=(0,use_session.w)(),{gettext,ngettext}=(0,use_get_text.z)();return react.createElement(Card,{className:"cat-border","data-testid":`reward-item-${reward._id}`},react.createElement(reward_item_ImageWrapper,null,(isManager()||isGroupAdmin())&&react.createElement(Option,{className:"cat-flex cat-flex-row cat-gap-s"},react.createElement(stencil_generated.B$,{icon:"16-pen-outlined",iconOnly:!0,nativeAttributes:{"data-testid":"reward-edit-button"},size:"xs",onClick:onEditReward}),react.createElement(stencil_generated.B$,{icon:"16-editor-delete",iconOnly:!0,nativeAttributes:{"data-testid":"reward-delete-button"},size:"xs",onClick:onDeleteReward})),react.createElement(shared_react_components.Cr,{imageUrl,token:dist.JRo.Post,fallbackImage:react.createElement(FallbackImage,{icon:"star-circle-filled","data-testid":"reward-icon"}),"data-testid":"reward-image"})),react.createElement("div",{className:"cat-p-m cat-flex-col cat-text-center cat-items-center"},react.createElement(Title,{className:"cat-h4"}
147,title),react.createElement(Description,{className:"cat-text-m cat-m-0 cat-mt-s"},description),(isManager()||isGroupAdmin())&&react.createElement(PendingButtonWrapper,{className:"cat-mt-m"},pendingUser&&pendingUser.length>0&&react.createElement(stencil_generated.B$,{variant:"outlined",color:"primary",icon:"external-link-outlined",size:"s",nativeAttributes:{"data-testid":"pending-claims-button"},url:`/#/reward/${reward._id}/pending?groupId=${reward.groupId}`},pendingUser.length," ",ngettext(gettext("claim pending"),gettext("claims pending"),pendingUser.length))),react.createElement("div",{className:"cat-mt-l cat-flex cat-items-center cat-gap-xs"},react.createElement(stencil_generated.k0,{icon:"tag-outlined",size:"xl"}),react.createElement("h5",{className:"cat-h5"},point," ",ngettext(gettext("point"),gettext("points"),point))),react.createElement(stencil_generated.QS,{content:gettext("You do not have enough points for this reward. Share more to earn more points."),placement:"bottom",disabled:user.Coin>=point,size:"s"},react.createElement(stencil_generated.B$,{style:{width:"fit-content"},className:"cat-mt-l",variant:"filled",disabled:point>user.Coin,color:"primary",onClick:()=>{if(user.Coin<point){const errorMessage=gettext("You do not have enough points for this reward. Share more to earn more points!");return(0,toast.Kf)({message:errorMessage})}onClaimReward()},nativeAttributes:{"data-testid":"reward-claim-button"}},gettext("Claim")))))},RewardGrid=emotion_styled_browser_esm.A.div`
148	--grid-min: 250px;
149`,RewardPage=()=>{const{gettext}=(0,use_get_text.z)(),[isLoading,setIsLoading]=react.useState(!1),[rewards,setRewards]=react.useState(null),[rewardToDelete,setRewardToDelete]=react.useState(null),[rewardToClaim,setRewardToClaim]=react.useState(null),[rewardToEdit,setRewardToEdit]=react.useState(null),[selectedGroup,setSelectedGroup]=react.useState(null);(0,use_document_title.r)({title:gettext("Rewards")});const{session:{user,company:{isGroupEnabled}},sessionUtil:{isGroupAdmin,isManager}}=(0,use_session.w)(),fetchRewards=react.useCallback((async()=>{var _a,_b;setIsLoading(!0),setRewards(null);const[response,error]=await(0,util.Oi)((()=>api.gM.getRewardList((null==selectedGroup?void 0:selectedGroup.value)||user.groupId)));if(setIsLoading(!1),error)return(0,toast.Kf)({message:null!==(_a=(0,string_utils.fi)(error))&&void 0!==_a?_a:gettext("Failed to load rewards. Please try again.")}),void tracking_utils.A.error(null!==(_b=(0,string_utils.fi)(error))&&void 0!==_b?_b:"Failed to load rewards. Please try again.","RewardPage.fetchRewards",(0,string_utils.hT)(error));setRewards(response.data)}),[user.groupId,gettext,selectedGroup]);(0,react.useEffect)((()=>{selectedGroup&&fetchRewards()}),[fetchRewards,selectedGroup]);const handleCloseDialog=shouldRefetch=>{shouldRefetch&&fetchRewards(),setRewardToClaim(null),setRewardToDelete(null),setRewardToEdit(null)},toolbar=isManager()||isGroupAdmin()?react.createElement("div",{className:"cat-flex-row cat-gap-m"},react.createElement(stencil_generated.B$,{color:"primary",variant:"filled",icon:"plus-outlined",onClick:()=>setRewardToEdit({title:"",imageUrl:"",description:"",point:0,groupId:(null==selectedGroup?void 0:selectedGroup.value)||user.groupId}),nativeAttributes:{"data-testid":"new-reward-button"}},gettext("New reward")),react.createElement(stencil_generated.B$,{color:"primary",variant:"outlined",icon:"list-unordered-outlined",url:`/#/reward/delivered?groupId=${(null==selectedGroup?void 0:selectedGroup.value)||user.groupId}`,nativeAttributes:{"data-testid":"deliver-reward-list"}},gettext("List of delivered rewards"))):null;return react.createElement(react.Fragment,null,react.createElement("div",{className:"cat-flex cat-flex-row cat-items-end cat-gap-m"},react.createElement("div",{className:"cat-flex-1"},react.createElement(header_with_group_selection.ve,{isGroupSelectionEnabled:isGroupEnabled&&isManager(),onGroupSelection:setSelectedGroup,selectedGroup,title:gettext("Rewards"),testId:"page-header",toolbar,isNoFilterOptionEnabled:!1}))),isLoading?react.createElement("div",{className:"cat-flex cat-justify-center cat-mt-l"},react.createElement(stencil_generated.K0,{size:"xl","data-testid":"loading-indicator"})):react.createElement(react.Fragment,null,rewards&&0!==rewards.length?react.createElement(RewardGrid,{className:"cat-grid cat-grid-auto cat-gap-m cat-mv-l"},null==rewards?void 0:rewards.map((reward=>react.createElement(RewardItem,{key:reward._id,reward,onDeleteReward:()=>setRewardToDelete(reward),onEditReward:()=>setRewardToEdit(reward),onClaimReward:()=>setRewardToClaim(reward)})))):react.createElement("div",{className:"cat-flex cat-flex-col cat-items-center cat-p-xl"},react.createElement("h4",{className:"cat-h4 cat-mb-m"},gettext("Nothing here yet")),react.createElement("img",{src:"/images/empty-state.svg",alt:"",className:"cat-mt-xl","aria-hidden":!0}))),rewardToDelete&&react.createElement(DeleteRewardDialog,{onClose:handleCloseDialog,reward:rewardToDelete}),rewardToClaim&&react.createElement(ClaimRewardDialog,{onClose:handleCloseDialog,reward:rewardToClaim}),rewardToEdit&&selectedGroup&&react.createElement(AddEditRewardDialog,{groupId:selectedGroup.value,reward:rewardToEdit,onClose:handleCloseDialog}))}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.