PageSourceSearch

https://cdn.mercury.com/builds/5ae8add9e1b1cf7fc8d221a20f4e72a7e1903a7f/static/js/normal-CThi0op3.js

js mercury.com collected 2026-09-24 17:11:05 UTC 16,312 bytes, 2 lines download raw bytes

1(function(){try{var e=typeof window<`u`?window:typeof global<`u`?global:typeof globalThis<`u`?globalThis:typeof self<`u`?self:{};e.SENTRY_RELEASE={id:`5ae8add9e1b1cf7fc8d221a20f4e72a7e1903a7f-app.mercury.com`};var t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]=`5b610f50-af2d-473d-baf2-8bbbdd84d933`,e._sentryDebugIdIdentifier=`sentry-dbid-5b610f50-af2d-473d-baf2-8bbbdd84d933`)}catch{}})();import{o as e}from"./rolldown-runtime-dXcnzKUm.js";import{Ab as t,Ax as n,Lp as r,Sb as i,Zp as a,_v as o,bg as s,od as c,ov as l,qs as u,xi as d,yx as f}from"./MockConfig-CsL9j1tk.js";import{t as p}from"./react-BzePN1c-.js";import{c as m,nt as h,r as g,s as _,t as v}from"./SimpleAPILocalErrorError-CczLPget.js";import{o as y}from"./external-links-DJHK0dyT.js";import{t as b}from"./mergeDeepWithKey-C5HHaRvD.js";import{t as x}from"./Analytics-D2v_YXe6.js";import{t as S}from"./jsx-runtime-DNHIfA0O.js";import{t as C}from"./DSButton-NXYixe0m.js";import{a as w,i as T,n as E,r as D}from"./parseSubmitError-4IdIodu7.js";import{t as O}from"./valuePreprocessors-Balz8yV0.js";var k=n(function(e,t){return b(function(e,t,n){return n},e,t)}),A=e(p()),j=function(e){return e[e.NORMAL=0]=`NORMAL`,e[e.INCREMENTAL=1]=`INCREMENTAL`,e}({}),M=S(),N=e=>{let{analyticsEvent:t,loading:n,onClick:r,submitText:i}=e;return(0,M.jsxs)(`div`,{children:[(0,M.jsx)(`div`,{className:w.spacer}),(0,M.jsx)(C,{__DEPRECATED_analyticsEvent:x.prefix(t,`submit`),analyticsEvent:void 0,variant:{style:`primary`,size:`large`},loading:n,onClick:r,children:i||`Continue`})]})},P=(e,t,n)=>{console.warn(`submitIncremental: Server errors from form submission: `,t);let i=null;if(t instanceof r)i=t.globalErrorMessage;else if(t instanceof g)i=null;else if(t instanceof a)i=t.firstErrorMessage();else if(t instanceof _)i=t.toHumanString();else if(t instanceof v)c(`ProvideForm incremental submission had a local error while processing API response for field: '${e}'`,{caughtError:t,metadata:{errorShownToUser:t.toHumanString()},team:n}),i=t.toHumanString();else if(t instanceof m)c(`ProvideForm incremental submission had a JSON-parsing exception on the backend for field: '${e}'`,{caughtError:t,metadata:{errorShownToUser:t.toHumanString()},team:n,groupingHash:`ProvideFormIncremental JSONParsingError: ${t.debugInfo}`}),i=t.toHumanString();else{let r=`A server error occurred.`,a=`ProvideFormIncremental unexpected `;typeof t==`string`?(r=t,a+=`string error: ${t}`):t instanceof Error&&(r=t.message,a+=`error object: ${t.name} ${t.message}`),i=r,c(`ProvideForm incremental submission had an error in an unexpected format for field: '${e}'`,{caughtError:t,metadata:{errorShownToUser:r},team:n,groupingHash:a})}return i},F=class extends A.Component{initialState={reRenderTrigger:0,fieldStates:{},serverState:{errorMessage:null,isSubmittingWholeForm:!1}};constraints={};initialValues={};preSubmittedValues={};fieldNames=new Set;runValuePreprocessor=(e,t)=>(this.props.valuePreprocessor??O)(e,t);constructor(e){super(e),this.state=this.initialState}setState(e,t){super.setState(e,()=>{this.sendFormStatus(),t&&t()})}buildFormStatus=()=>({anyErrors:this.doAnyFieldsHaveServerErrors()||this.determineLocalErrors(!1),unsubmittedChanges:this.doAnyFieldsHaveUnsubmittedChanges(),areAnyFieldsShowingErrors:this.areAnyFieldsShowingErrors(),areAnyFieldsSubmitting:this.areAnyFieldsSubmitting(),areAnyFieldsChangedAndNotSubmitting:this.areAnyFieldsChangedAndNotSubmitting(),haveAnyFieldsChangedFromDefault:this.haveAnyFieldsChangedFromDefault(),fieldValues:this.fieldValues(),fieldStates:this.fieldStates(),fieldsWithUnsubmittedChanges:this.fieldsWithUnsubmittedChanges()});sendFormStatus=()=>{this.props.formStatus?.(this.buildFormStatus())};resetFormState=()=>{this.setState(this.initialState)};resetFieldState=e=>{this.setState(t=>{let{[e]:n,...r}=t.fieldStates;return{...t,fieldStates:r}})};removeField=e=>{this.fieldNames.delete(e),delete this.constraints[e],delete this.initialValues[e],delete this.preSubmittedValues[e],this.resetFieldState(e)};fieldStates=()=>{let e=this.state.fieldStates,t={};
1return this.fieldNames.forEach(n=>{let r=e[n],i=this.getDefaultFieldState(n);if(!r)t[n]=i;else{if(r.isDefaultValue||r.value===i.value){let e=r.isDefaultValue&&r.value!==i.value;r.localErrorMessage=i.localErrorMessage,e&&(r.value=i.value,r.serverErrorMessage=null),r.isDefaultValue=!0}t[n]=r}}),t};fieldValues=()=>y(e=>e.value,this.fieldStates());fieldValuesNoSideEffects=()=>Array.from(this.fieldNames).reduce((e,t)=>(e[t]=this.getFieldValue(t)??``,e),{});setValue=e=>(t,n)=>{this.createOrUpdateFieldState(e,()=>({value:t}),n)};ignoreConstraintsOnField=e=>this.props.ignoreConstraintsOnFields?this.props.ignoreConstraintsOnFields(this.fieldValuesNoSideEffects()).indexOf(e)>-1:!1;setShouldShowErrorMessages=()=>{f(this.fieldStates()).forEach(e=>{this.ignoreConstraintsOnField(e)||this.setShouldShowErrorMessageOnField(e)})};setShouldShowErrorMessageOnField=(e,t)=>{this.createOrUpdateFieldState(e,()=>({shouldShowErrorMessage:!0}),t)};setLocalErrorMessage=(e,t,n)=>{this.createOrUpdateFieldState(e,()=>({localErrorMessage:t}),n)};setServerErrorMessage=(e,t,n)=>{this.createOrUpdateFieldState(e,()=>({serverErrorMessage:t}),n)};setFieldIsSubmitting=(e,t,n)=>{let r=t?1:-1;this.createOrUpdateFieldState(e,e=>({currentlySubmittingCount:Math.max(e.currentlySubmittingCount+r,0)}),n)};createOrUpdateFieldState=(e,t,n)=>{this.setState(n=>{let r=n.fieldStates,i=this.getDefaultFieldState(e),a;a=r[e]?r[e]:i;let o=t(a);if(o.localErrorMessage!==void 0&&o.value!==void 0)throw Error(`ProvideForm asked to update both a value and localErrorMessage on a form field: `+JSON.stringify(o));o.localErrorMessage===void 0&&o.value!==void 0&&o.value!==a.value&&(o.localErrorMessage=this.getFailedConstraintResponseOnField(e,o.value)?.message??null,o.serverErrorMessage=null);let s=k(a,o);return s.isDefaultValue=s.value===i.value,{...n,fieldStates:{...r,[e]:s}}},n)};getFailedConstraintResponseOnField(e,t){if(this.ignoreConstraintsOnField(e))return null;let n=null,r=this.runValuePreprocessor(e,t),i=this.constraints[e];return i&&i.some(e=>{let t=e.test(r);return t.type===`fail`&&(n=t),!!n}),n}determineLocalErrorMessageForField(e,t){let n=this.getFailedConstraintResponseOnField(e,t);return n?n.message:null}updateLocalErrorMessageOnField=(e,t)=>{let n=this.ignoreConstraintsOnField(e),r=null;return n||(r=this.determineLocalErrorMessageForField(e,t)),this.setLocalErrorMessage(e,r),r!==null};determineLocalErrors=e=>{let n=!1,r=this.fieldStates();return t((t,r)=>{t!==void 0&&(n=this.determineLocalErrorsOnField(r,t,e)||n)},r),n||this.determinePeripheralConstraintFailures()};determineLocalErrorsOnField=(e,t,n)=>n?this.updateLocalErrorMessageOnField(e,t.value):!!this.getFailedConstraintResponseOnField(e,t.value);buildPeripheralConstraintData=()=>({fieldStates:this.fieldStates(),haveAnyFieldsChangedFromDefault:this.haveAnyFieldsChangedFromDefault()});determinePeripheralConstraintFailures=()=>{let e=this.buildPeripheralConstraintData();return h(t=>!t.constraint(e),this.props.peripheralConstraints||[])};peripheralConstraintErrorMessage=()=>{let e=this.buildPeripheralConstraintData(),t=(this.props.peripheralConstraints||[]).find(t=>!t.constraint(e));return t?t.message(e):null};onChanges=(e,t)=>
1{let n=d(e),r=f(n);if(r.length===0){t?.();return}for(let e=0;e<r.length;e++){let i=r[e],a=n[i];this.setValue(i)(a,()=>{this.onBlurField(i),e===r.length-1&&t?.()})}};removeFields=e=>{e.forEach(e=>this.removeField(e))};removeFieldsMatching=e=>{this.removeFields(Array.from(this.fieldNames).filter(e))};showErrorsOnFields=e=>{e.forEach(e=>this.setShouldShowErrorMessageOnField(e))};submitIncremental=e=>t=>n=>{this.createOrUpdateFieldState(t,e=>({value:this.runValuePreprocessor(t,e.value)}),()=>{this.props.onAttemptFormSubmission?.();let r=this.fieldStates(),i=r[t];if(this.setShouldShowErrorMessageOnField(t),this.determineLocalErrorsOnField(t,i,!1)||this.determinePeripheralConstraintFailures()||this.props.ignoreSubmitWithoutChanges&&!this.doesFieldHaveUnsubmittedChanges(r)(t)||e.shouldSubmit&&!e.shouldSubmit())return;this.setFieldIsSubmitting(t,!0);let a=i.value;e.submit(t,a,n).then(()=>{this.createOrUpdateFieldState(t,e=>({submittedValue:a,currentlySubmittingCount:Math.max(e.currentlySubmittingCount-1,0)}))}).catch(e=>{let n=P(t,e,this.props.team);this.setServerErrorMessage(t,n),this.setFieldIsSubmitting(t,!1)})})};submitNormal=e=>t=>{if(this.props.onAttemptFormSubmission?.(),this.state.serverState.isSubmittingWholeForm)return;let n=()=>{if(this.fieldNames.forEach(e=>this.setShouldShowErrorMessageOnField(e)),this.determineLocalErrors(!0)){x.track(`error`,{type:`form-submit-validation-error`,customProperties:{analyticsId:this.props.analyticsId??null}});return}if(this.props.ignoreSubmitWithoutChanges&&!this.doAnyFieldsHaveUnsubmittedChanges()||e.shouldSubmit&&!e.shouldSubmit({doAnyFieldsHaveUnsubmittedChanges:this.doAnyFieldsHaveUnsubmittedChanges()}))return;this.setState(e=>({...e,serverState:{...e.serverState,errorMessage:null,isSubmittingWholeForm:!0}}));let n=this.fieldValues();e.submit(n,{submissionContext:t,formStatus:this.buildFormStatus()}).then(e=>{this.setState(e=>{let t=y((e,t)=>n[t]===void 0?e:{...e,submittedValue:n[t]},e.fieldStates);return{...e,fieldStates:t,serverState:{...e.serverState,errorMessage:null,isSubmittingWholeForm:!1}}},()=>{this.props.submitSuccess?.(n,e)})}).catch(e=>{let{globalError:t,fieldErrors:r}=E(this.fieldNames,e,this.props.team);for(let e in r)if(Object.hasOwn(r,e)){let t=e,n=r[t]??null;this.setServerErrorMessage(t,n)}this.setState(e=>({...e,serverState:{...e.serverState,errorMessage:t,isSubmittingWholeForm:!1}}),()=>{this.props.submitFailure?.(n,e)})})},r=d(this.fieldStates()),i=f(r);if(i.length===0){n();return}for(let e=0;e<i.length;e++){let t=i[e];this.createOrUpdateFieldState(t,e=>({value:this.runValuePreprocessor(t,e.value)}),()=>{e===i.length-1&&n()})}};getFieldValue(e){let t=this.state.fieldStates[e];return t===void 0?this.initialValues[e]:t.value}getDefaultFieldState(e){let t=this.initialValues[e],n=this.preSubmittedValues[e],r=t||``,i=(()=>{let t=this.props.immediatelyShowErrorMessages??!1;return typeof t==`boolean`?t:t.indexOf(e)>-1})();return{value:r,localErrorMessage:this.determineLocalErrorMessageForField(e,r),serverErrorMessage:null,shouldShowErrorMessage:i,isDefaultValue:!0,submittedValue:n||``,currentlySubmittingCount:0}}addFieldToForm(e,t,n){return t&&(this.constraints[e]=t.map(e=>e instanceof s?e:u(e))),n&&(n.initialValue!==void 0&&(this.initialValues[e]=n.initialValue,this.props.getPreviouslySubmittedValuesFromInitialValues&&(this.preSubmittedValues[e]=n.initialValue)),n.previouslySubmittedValue&&(this.preSubmittedValues[e]=n.previouslySubmittedValue)),this.fieldNames.add(e),this.fieldStates()[e]}isFormSubmitting(){return this.state.serverState.isSubmittingWholeForm}isFieldEmpty=e=>{let t=this.getFieldValue(e);return!t||i(t)};hasFieldChangedFromDefault=e=>t=>{let n=e[t];return n&&!n.isDefaultValue};haveAnyFieldsChangedFromDefault=()=>{let e=this.fieldStates();return h(this.hasFieldChangedFromDefault(e),Array.from(this.fieldNames).filter(e=>!this.ignoreConstraintsOnField(e)))};doesFieldHaveUnsubmittedChanges=e=>t=>{let n=e[t];return n&&n.value!==n.submittedValue};doAnyFieldsHaveUnsubmittedChanges=()=>o(this.fieldsWithUnsubmittedChanges());fieldsWithUnsubmittedChanges=()=>{let e=this.fieldStates();return l(t=>!this.ignoreConstraintsOnField(t)&&this.doesFieldHaveUnsubmittedChanges(e)(t),this.fieldNames)};isFieldShowingAnError=e=>t=>{let n=e[t];return n&&n.shouldShowErrorMessage&&(n.localErrorMessage!==null||n.serverErrorMessage!==null)};areAnyFieldsShowingErrors=()=>{let e=this.fieldStates();return h(this.isFieldShowingAnError(e),Array.from(this.fieldNames))};doesFieldHaveAServerError=e=>t=>{let n=e[t];return n&&n.serverErrorMessage!==null};doAnyFieldsHaveServerErrors=()=>{let e=this.fieldStates();return h(this.doesFieldHaveAServerError(e),Array.from(this.fieldNames))};isFieldSubmitting=e=>t=>{let n=e[t];return n&&n.currentlySubmittingCount>0};areAnyFieldsSubmitting=()=>{let e=this.fieldStates();return h(this.isFieldSubmitting(e),Array.from(this.fieldNames))};isFieldChangedAndNotSubmitting=e=>t=>!this.isFieldSubmitting(e)(t)&&this.doesFieldHaveUnsubmittedChanges(e)(t);areAnyFieldsChangedAndNotSubmitting=()=>{let e=this.fieldStates();return h(this.isFieldChangedAndNotSubmitting(e),Array.from(this.fieldNames))};cleanServerStateError=()=>{this.setState(e=>({serverState:{...e.serverState,errorMessage:null}}))};componentDidMount(){this.changeReRenderTrigger()}formFieldAdded=()=>{this.changeReRenderTrigger()};changeReRenderTrigger(){this.setState(e=>({reRenderTrigger:(e.reRenderTrigger+1)%1e3}))}isNormalForm=e=>e.type===j.NORMAL;isIncrementalForm=e=>e.type===j.INCREMENTAL;onBlurField=e=>{if(!this.fieldStates()[e]){console.error(`ProvideForm was asked to blur a field it does not know about yet. Field:`,e),c(`ProvideForm was asked to blur a field it does not know about yet.`,{metadata:{f
1ieldName:e},team:this.props.team});return}this.createOrUpdateFieldState(e,t=>({value:this.runValuePreprocessor(e,t.value)}),()=>{let t=this.fieldStates();(this.initialValues[e]?.length||t[e].value.length>0)&&this.setShouldShowErrorMessageOnField(e),this.isIncrementalForm(this.props.formConfig)&&this.doesFieldHaveUnsubmittedChanges(t)(e)&&this.submitIncremental(this.props.formConfig)(e)(void 0)})};render(){let e=this.props.formConfig,t=this.fieldStates(),n=(n,r,i)=>{let a=this.addFieldToForm(n,r,i);return{fieldName:n,value:a.value,errorMessage:a.shouldShowErrorMessage?a.localErrorMessage||a.serverErrorMessage:null,onBlur:()=>{this.onBlurField(n)},onChange:(e,t)=>this.setValue(n)(e,t),onSubmit:this.isNormalForm(e)?this.submitNormal(e):this.submitIncremental(e)(n),failingConstraint:this.getFailedConstraintResponseOnField(n,a.value),resetFieldState:()=>this.resetFieldState(n),hasFieldChanged:this.hasFieldChangedFromDefault(t)(n),removeField:()=>this.removeField(n),unsubmittedChange:this.doesFieldHaveUnsubmittedChanges(t)(n),isFieldSubmitting:this.isNormalForm(e)?this.isFormSubmitting():this.isFieldSubmitting(t)(n),formDisabledAutoComplete:!!this.props.disableAutoComplete}},r={anyErrors:this.doAnyFieldsHaveServerErrors()||this.determineLocalErrors(!1),onChanges:this.onChanges,resetFormState:this.resetFormState,removeFields:this.removeFields,removeFieldsMatching:this.removeFieldsMatching,formFieldAdded:this.formFieldAdded,runAllConstraints:(e=!1)=>{e&&this.setShouldShowErrorMessages(),this.determineLocalErrors(!0)},globalErrorMessage:this.peripheralConstraintErrorMessage()||this.state.serverState.errorMessage,peripheralConstraintErrorMessage:this.peripheralConstraintErrorMessage(),hasFieldChanged:this.hasFieldChangedFromDefault(t),isFieldEmpty:this.isFieldEmpty,haveAnyFieldsChangedFromDefault:this.haveAnyFieldsChangedFromDefault,unsubmittedChanges:this.doAnyFieldsHaveUnsubmittedChanges,fieldsWithUnsubmittedChanges:this.fieldsWithUnsubmittedChanges,showErrorsOnFields:this.showErrorsOnFields,cleanServerStateError:this.cleanServerStateError};return(0,M.jsxs)(D,{dataTestId:this.props.dataTestId,disableAutoComplete:this.props.disableAutoComplete,classNames:{wrapper:this.props.classNames?.wrapper},children:[!this.props.hideGlobalErrors&&(0,M.jsx)(T,{message:r.globalErrorMessage}),(()=>{if(this.isNormalForm(e)){let t={...r,onSubmit:this.submitNormal(e),isFormSubmitting:this.isFormSubmitting()},i={anyErrors:t.anyErrors,isFormSubmitting:t.isFormSubmitting,haveAnyFieldsChangedFromDefault:t.haveAnyFieldsChangedFromDefault(),onSubmit:()=>t.onSubmit()};return e.toFormFields({generateFormFieldProps:n,formProps:t,submitProps:i})}{let t={...r,areAnyFieldsSubmitting:this.areAnyFieldsSubmitting()};return e.toFormFields({generateFormFieldProps:n,formProps:t})}})(),this.props.showDeprecatedDefaultButton&&this.isNormalForm(e)&&(0,M.jsx)(N,{analyticsEvent:this.props.analyticsEvent,loading:this.state.serverState.isSubmittingWholeForm,onClick:()=>this.submitNormal(e)(),submitText:this.props.submitText})]})}},I=class extends A.Component{render(){let{onSubmit:e,toFormFields:t,shouldSubmit:n,...r}=this.props,i={type:j.NORMAL,submit:e,shouldSubmit:n,toFormFields:t};return(0,M.jsx)(F,{...r,formConfig:i})}};
1export{k as i,F as n,j as r,I as t};
2//# sourceMappingURL=normal-CThi0op3.js.map

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.