@openmrs/esm-form-builder-app 3.5.2-pre.3900 → 3.5.2-pre.3902

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/1515.js CHANGED
@@ -1 +1 @@
1
- "use strict";(globalThis.webpackChunk_openmrs_esm_form_builder_app=globalThis.webpackChunk_openmrs_esm_form_builder_app||[]).push([["1515"],{49094(e,t,n){n.r(t),n.d(t,{default:()=>c});var l=n(47499),a=n.n(l),r=n(58779),o=n(14968),s=n(46718),i=n(70243),d=n(79140);let c=({closeModal:e,pageIndex:t,schema:n,onSchemaChange:c,mode:m,sectionIndex:u})=>{let{t:p}=(0,r.useTranslation)(),[f,b]=(0,l.useState)(null),[g,E]=(0,l.useState)([]),[h,k]=(0,l.useState)(null),[_,C]=(0,l.useState)(null),[F,S]=(0,l.useState)([]),{forms:T,error:x,isLoading:v}=(0,i.h)(),{clobdata:$,isLoadingClobdata:w,clobdataError:L}=(0,d.S)(f),N=(0,l.useCallback)(({selectedItem:e})=>{b(e),k(null),C(null),S([])},[]);(0,l.useEffect)(()=>{$&&E($.pages)},[$]);let y=(0,l.useCallback)(({selectedItem:e})=>{k(e),C(null),S([])},[]),B=(0,l.useCallback)(e=>{C(e),S([])},[]),G=(0,l.useCallback)((e,t)=>{S(n=>t?n.filter(t=>t!==e.id):n.some(t=>t===e.id)?n:[...n,e.id])},[]);return(0,l.useEffect)(()=>{if("edit"!==m||void 0===u||!T)return;let e=n.pages[t].sections[u].reference,l=T.find(t=>t.name===e.form);l&&b(l)},[m,u,T,n,t]),(0,l.useEffect)(()=>{if("edit"!==m||!f||!$||void 0===u)return;let e=n.pages[t].sections[u].reference,l=$.pages.find(t=>t.label===e.page);if(l){k(l);let t=l.sections.find(t=>t.label===e.section);t&&C(t),S(e.excludeQuestions)}},[m,f,$,n,t,u]),a().createElement(a().Fragment,null,a().createElement(o.ModalHeader,{closeModal:e,title:p("addFormComponent","Add Form Component")}),a().createElement(o.Form,{className:"-esm-form-builder__add-form-reference__form___TsOeU"},a().createElement(o.ModalBody,{className:"-esm-form-builder__add-form-reference__modalBody___jtoPP"},a().createElement(o.Stack,{gap:4},v?a().createElement(o.InlineLoading,{description:p("loading","Loading")+"..."}):x?a().createElement(o.InlineNotification,null,p("errorLoadingForms","Error loading forms")):0===T.length?a().createElement(o.InlineNotification,null,p("noFormsAvailable","No forms available")):m?null:a().createElement(o.FormGroup,{legendText:""},a().createElement(o.Dropdown,{titleText:p("selectForm","Select form"),id:"form-component-dropdown",label:p("selectForm","Select form"),items:T.map(e=>({uuid:e.uuid,name:e.name,resources:e.resources})),itemToString:e=>e?e.name:"",onChange:N})),w?a().createElement(o.InlineLoading,{description:p("loading","Loading")+"..."}):L?a().createElement(o.InlineNotification,null,p("errorLoadingForm","Error loading form")):g&&g.length>0&&!m?a().createElement(a().Fragment,null,a().createElement(o.FormGroup,{legendText:""},a().createElement(o.Dropdown,{titleText:`${f.name} ${p("pages","Pages")}:`,id:"form-Pages-dropdown",label:p("Page","Select page"),items:g.map(e=>({label:e.label,sections:e.sections})),itemToString:e=>e?e.label:"",onChange:y,selectedItem:h})),h?a().createElement(o.FormGroup,{legendText:""},a().createElement(o.RadioButtonGroup,{orientation:"vertical",name:"radio-button-group",legendText:`${h.label} ${p("sections","Sections")}:`},h.sections.map(e=>a().createElement(o.RadioButton,{key:`${h.label}-${e.label}`,labelText:e.label,id:`${h.label}-${e.label}`,value:e.label,onClick:()=>B(e)})))):null):null,_?a().createElement(o.FormGroup,{legendText:""},a().createElement(o.CheckboxGroup,{legendText:p("selectQuestions","Select questions")},_.questions.map(e=>a().createElement(o.Checkbox,{key:e.id,labelText:e.label||e.id,id:`${_.label}-${e.id}`,value:e.id,checked:!F.includes(e.id),onChange:(t,{checked:n})=>G(e,n)})))):null))),a().createElement(o.ModalFooter,null,a().createElement(o.Button,{kind:"secondary",onClick:e},p("cancel","Cancel")),a().createElement(o.Button,{kind:"primary",onClick:()=>{(()=>{try{if("edit"===m&&void 0!==u){n.pages[t].sections[u].reference.excludeQuestions=F,c({...n}),(0,s.showSnackbar)({title:p("success","Success!"),kind:"success",isLowContrast:!0,subtitle:p("questionsUpdated","Questions updated")});return}n.referencedForms?.some(e=>e.formName===f.name)||(n.referencedForms?n.referencedForms.push({formName:f.name,alias:f.name}):n.referencedForms=[{formName:f.name,alias:f.name}]),n.pages[t].sections.push({label:_.label,isExpanded:"true",questions:[],reference:{form:f.name,page:h.label,section:_.label,excludeQuestions:F}}),c({...n}),(0,s.showSnackbar)({title:p("success","Success!"),kind:"success",isLowContrast:!0,subtitle:p("componentadded","Component added")})}catch(e){e instanceof Error&&(0,s.showSnackbar)({title:p("errorAddingComponent","Error adding component"),kind:"error",subtitle:e?.message})}})(),e()},disabled:!f||!h||!_||F.length===_.questions.length},a().createElement("span",null,"edit"===m?p("update","Update"):p("add","Add")))))}},79140(e,t,n){n.d(t,{S:()=>o});var l=n(66148),a=n.n(l),r=n(46718);let o=e=>{let t=e?.resources?.find(({name:e})=>"JSON schema"===e)?.valueReference,n=e&&e?.resources?.length>0&&t,l=`${r.restBaseUrl}/clobdata/${t}`,{data:o,error:s,isLoading:i,isValidating:d,mutate:c}=a()(n?l:null,r.openmrsFetch);return{clobdata:o?.data,clobdataError:s,isLoadingClobdata:i,isValidatingClobdata:d,mutate:c}}},70243(e,t,n){n.d(t,{h:()=>o});var l=n(73391),a=n.n(l),r=n(46718);function o(){let e=`${r.restBaseUrl}/form?v=custom:(uuid,name,encounterType:(uuid,name),version,published,retired,resources:(uuid,name,dataType,valueReference))&includeAll=true`,{data:t,error:n,isValidating:l,mutate:o}=a()(e,r.openmrsFetch);return{forms:t?.data?.results??[],error:n,isLoading:!t&&!n,isValidating:l,mutate:o}}}}]);
1
+ "use strict";(globalThis.webpackChunk_openmrs_esm_form_builder_app=globalThis.webpackChunk_openmrs_esm_form_builder_app||[]).push([["1515"],{49094(e,t,n){n.r(t),n.d(t,{default:()=>c});var l=n(47499),a=n.n(l),r=n(58779),o=n(14968),s=n(23365),i=n(70243),d=n(79140);let c=({closeModal:e,pageIndex:t,schema:n,onSchemaChange:c,mode:m,sectionIndex:u})=>{let{t:p}=(0,r.useTranslation)(),[f,b]=(0,l.useState)(null),[g,E]=(0,l.useState)([]),[h,k]=(0,l.useState)(null),[_,C]=(0,l.useState)(null),[F,S]=(0,l.useState)([]),{forms:T,error:x,isLoading:v}=(0,i.h)(),{clobdata:$,isLoadingClobdata:w,clobdataError:L}=(0,d.S)(f),N=(0,l.useCallback)(({selectedItem:e})=>{b(e),k(null),C(null),S([])},[]);(0,l.useEffect)(()=>{$&&E($.pages)},[$]);let y=(0,l.useCallback)(({selectedItem:e})=>{k(e),C(null),S([])},[]),B=(0,l.useCallback)(e=>{C(e),S([])},[]),G=(0,l.useCallback)((e,t)=>{S(n=>t?n.filter(t=>t!==e.id):n.some(t=>t===e.id)?n:[...n,e.id])},[]);return(0,l.useEffect)(()=>{if("edit"!==m||void 0===u||!T)return;let e=n.pages[t].sections[u].reference,l=T.find(t=>t.name===e.form);l&&b(l)},[m,u,T,n,t]),(0,l.useEffect)(()=>{if("edit"!==m||!f||!$||void 0===u)return;let e=n.pages[t].sections[u].reference,l=$.pages.find(t=>t.label===e.page);if(l){k(l);let t=l.sections.find(t=>t.label===e.section);t&&C(t),S(e.excludeQuestions)}},[m,f,$,n,t,u]),a().createElement(a().Fragment,null,a().createElement(o.ModalHeader,{closeModal:e,title:p("addFormComponent","Add Form Component")}),a().createElement(o.Form,{className:"-esm-form-builder__add-form-reference__form___TsOeU"},a().createElement(o.ModalBody,{className:"-esm-form-builder__add-form-reference__modalBody___jtoPP"},a().createElement(o.Stack,{gap:4},v?a().createElement(o.InlineLoading,{description:p("loading","Loading")+"..."}):x?a().createElement(o.InlineNotification,null,p("errorLoadingForms","Error loading forms")):0===T.length?a().createElement(o.InlineNotification,null,p("noFormsAvailable","No forms available")):m?null:a().createElement(o.FormGroup,{legendText:""},a().createElement(o.Dropdown,{titleText:p("selectForm","Select form"),id:"form-component-dropdown",label:p("selectForm","Select form"),items:T.map(e=>({uuid:e.uuid,name:e.name,resources:e.resources})),itemToString:e=>e?e.name:"",onChange:N})),w?a().createElement(o.InlineLoading,{description:p("loading","Loading")+"..."}):L?a().createElement(o.InlineNotification,null,p("errorLoadingForm","Error loading form")):g&&g.length>0&&!m?a().createElement(a().Fragment,null,a().createElement(o.FormGroup,{legendText:""},a().createElement(o.Dropdown,{titleText:`${f.name} ${p("pages","Pages")}:`,id:"form-Pages-dropdown",label:p("Page","Select page"),items:g.map(e=>({label:e.label,sections:e.sections})),itemToString:e=>e?e.label:"",onChange:y,selectedItem:h})),h?a().createElement(o.FormGroup,{legendText:""},a().createElement(o.RadioButtonGroup,{orientation:"vertical",name:"radio-button-group",legendText:`${h.label} ${p("sections","Sections")}:`},h.sections.map(e=>a().createElement(o.RadioButton,{key:`${h.label}-${e.label}`,labelText:e.label,id:`${h.label}-${e.label}`,value:e.label,onClick:()=>B(e)})))):null):null,_?a().createElement(o.FormGroup,{legendText:""},a().createElement(o.CheckboxGroup,{legendText:p("selectQuestions","Select questions")},_.questions.map(e=>a().createElement(o.Checkbox,{key:e.id,labelText:e.label||e.id,id:`${_.label}-${e.id}`,value:e.id,checked:!F.includes(e.id),onChange:(t,{checked:n})=>G(e,n)})))):null))),a().createElement(o.ModalFooter,null,a().createElement(o.Button,{kind:"secondary",onClick:e},p("cancel","Cancel")),a().createElement(o.Button,{kind:"primary",onClick:()=>{(()=>{try{if("edit"===m&&void 0!==u){n.pages[t].sections[u].reference.excludeQuestions=F,c({...n}),(0,s.showSnackbar)({title:p("success","Success!"),kind:"success",isLowContrast:!0,subtitle:p("questionsUpdated","Questions updated")});return}n.referencedForms?.some(e=>e.formName===f.name)||(n.referencedForms?n.referencedForms.push({formName:f.name,alias:f.name}):n.referencedForms=[{formName:f.name,alias:f.name}]),n.pages[t].sections.push({label:_.label,isExpanded:"true",questions:[],reference:{form:f.name,page:h.label,section:_.label,excludeQuestions:F}}),c({...n}),(0,s.showSnackbar)({title:p("success","Success!"),kind:"success",isLowContrast:!0,subtitle:p("componentadded","Component added")})}catch(e){e instanceof Error&&(0,s.showSnackbar)({title:p("errorAddingComponent","Error adding component"),kind:"error",subtitle:e?.message})}})(),e()},disabled:!f||!h||!_||F.length===_.questions.length},a().createElement("span",null,"edit"===m?p("update","Update"):p("add","Add")))))}},79140(e,t,n){n.d(t,{S:()=>o});var l=n(66148),a=n.n(l),r=n(23365);let o=e=>{let t=e?.resources?.find(({name:e})=>"JSON schema"===e)?.valueReference,n=e&&e?.resources?.length>0&&t,l=`${r.restBaseUrl}/clobdata/${t}`,{data:o,error:s,isLoading:i,isValidating:d,mutate:c}=a()(n?l:null,r.openmrsFetch);return{clobdata:o?.data,clobdataError:s,isLoadingClobdata:i,isValidatingClobdata:d,mutate:c}}},70243(e,t,n){n.d(t,{h:()=>o});var l=n(73391),a=n.n(l),r=n(23365);function o(){let e=`${r.restBaseUrl}/form?v=custom:(uuid,name,encounterType:(uuid,name),version,published,retired,resources:(uuid,name,dataType,valueReference))&includeAll=true`,{data:t,error:n,isValidating:l,mutate:o}=a()(e,r.openmrsFetch);return{forms:t?.data?.results??[],error:n,isLoading:!t&&!n,isValidating:l,mutate:o}}}}]);
package/dist/3378.js CHANGED
@@ -1 +1 @@
1
- (globalThis.webpackChunk_openmrs_esm_form_builder_app=globalThis.webpackChunk_openmrs_esm_form_builder_app||[]).push([["3378"],{26738(e,n,t){var o={"./uk.json":["60723","9072"],"./ar.json":["14132","7045"],"./ru_RU.json":["60986","8359"],"./uz_UZ.json":["70890","7175"],"./fr.json":["94055","6508"],"./sw_KE.json":["88618","903"],"./uz.json":["43584","6377"],"./en.json":["34300","5117"],"./ky.json":["88163","2416"],"./pl.json":["41119","6724"],"./sq.json":["88371","4928"],"./ka.json":["70795","1480"],"./si.json":["56859","6904"],"./zh_TW.json":["10439","556"],"./de.json":["34944","5145"],"./lg.json":["64618","8695"],"./vi.json":["79214","6371"],"./tr.json":["55241","434"],"./es_MX.json":["88349","1646"],"./tr_TR.json":["99900","1869"],"./zh_CN.json":["99879","5644"],"./en_US.json":["59569","4106"],"./he.json":["84652","2317"],"./id.json":["72690","6047"],"./ku.json":["9895","4348"],"./es.json":["93099","7912"],"./ne.json":["12146","5503"],"./ar_SY.json":["37617","282"],"./uz@Latn.json":["27097","4658"],"./bn.json":["77159","6444"],"./cs.json":["86589","7182"],"./zh.json":["35661","7742"],"./hi_IN.json":["55442","6764"],"./pt_BR.json":["36468","1877"],"./qu.json":["35173","8358"],"./ro_RO.json":["46022","3963"],"./sw.json":["89913","997"],"./am.json":["81197","9806"],"./pt.json":["96679","5132"],"./it.json":["9538","4111"],"./km.json":["54335","5940"],"./hi.json":["36840","2881"]};function r(e){if(!t.o(o,e))return Promise.resolve().then(function(){var n=Error("Cannot find module '"+e+"'");throw n.code="MODULE_NOT_FOUND",n});var n=o[e],r=n[0];return t.e(n[1]).then(function(){return t(r)})}r.keys=()=>Object.keys(o),r.id=26738,e.exports=r},47481(e,n,t){"use strict";t.r(n),t.d(n,{newFormModal:()=>p,questionModal:()=>g,editTranslationModal:()=>v,deletePageModal:()=>u,addFormReferenceModal:()=>h,deleteQuestionModal:()=>b,newPageModal:()=>_,deleteSectionModal:()=>f,startupApp:()=>w,systemAdministrationFormBuilderCardLink:()=>y,deleteFormModal:()=>A,unpublishFormModal:()=>T,importTranslation:()=>d,saveFormModal:()=>k,restoreDraftSchemaModal:()=>j,newSectionModal:()=>m,root:()=>c});var o=t(46718);let r=["control","encounterDatetime","encounterLocation","encounterProvider","encounterRole","obs","obsGroup","patientIdentifier","personAttribute","testOrder","programState"],i=["checkbox","checkbox-searchable","content-switcher","date","datetime","drug","encounter-location","encounter-provider","encounter-role","fixed-value","file","group","number","problem","radio","repeating","select","text","textarea","toggle","ui-select-extended","workspace-launcher","markdown","extension-widget","select-concept-answers"],a={questionTypes:{_type:o.Type.Array,_elements:{_type:o.Type.String},_description:"Provides information that the processor uses to render a field",_default:r,_validators:[o.validators.oneOf(r)]},fieldTypes:{_type:o.Type.Array,_elements:{_type:o.Type.String},_description:"An array of available field types. A question can have only one field type, and the field type determines how the question is rendered.",_default:i,_validators:[o.validators.oneOf(i)]},showSchemaSaveWarning:{_type:o.Type.Boolean,_description:"Whether to show a warning about possibly losing data in the forms dashboard",_default:!0},dataTypeToRenderingMap:{Numeric:{_type:o.Type.Array,_elements:{_type:o.Type.String},_default:["number","fixed-value"]},Coded:{_type:o.Type.Array,_elements:{_type:o.Type.String},_default:["select","checkbox","checkbox-searchable","radio","content-switcher","fixed-value","markdown","ui-select-extended","drug","problem","encounter-provider","encounter-location","select-concept-answers","encounter-role","multiCheckbox"]},Text:{_type:o.Type.Array,_elements:{_type:o.Type.String},_default:["text","textarea","fixed-value"]},Date:{_type:o.Type.Array,_elements:{_type:o.Type.String},_default:["date","fixed-value"]},Datetime:{_type:o.Type.Array,_elements:{_type:o.Type.String},_default:["datetime","fixed-value"]},Boolean:{_type:o.Type.Array,_elements:{_type:o.Type.String},_default:["toggle","select","radio","content-switcher","fixed-value"]},Rule:{_type:o.Type.Array,_elements:{_type:o.Type.String},_default:["repeating","group"]},"N/A":{_type:o.Type.Array,_elements:{_type:o.Type.String},_default:[]},Complex:{_type:o.Type.Array,_elements:{_type:o.Type.String},_default:["file"]}},enableFormValidation:{_type:o.Type.Boolean,_description:"Whether to enable form validation",_default:!1},blockRenderingWithErrors:{_type:o.Type.Boolean,_description:"Whether to block form rendering when there are validation errors",_default:!1}},s="@openmrs/esm-form-builder-app",l={featureName:"form-builder",moduleName:s},d=t(26738),c=(0,o.getAsyncLifecycle)(()=>Promise.all([t.e("3238"),t.e("9314"),t.e("8668"),t.e("1617"),t.e("1481"),t.e("7989"),t.e("5699"),t.e("8998"),t.e("6392"),t.e("4123"),t.e("6692"),t.e("2020"),t.e("5861"),t.e("5543")]).then(t.bind(t,16316)),l),y=(0,o.getAsyncLifecycle)(()=>Promise.all([t.e("9314"),t.e("6392"),t.e("4123"),t.e("2355")]).then(t.bind(t,98713)),l),p=(0,o.getAsyncLifecycle)(()=>Promise.all([t.e("6392"),t.e("4123"),t.e("9316")]).then(t.bind(t,83519)),l),_=(0,o.getAsyncLifecycle)(()=>Promise.all([t.e("6392"),t.e("4123"),t.e("4383")]).then(t.bind(t,30162)),l),u=(0,o.getAsyncLifecycle)(()=>Promise.all([t.e("6392"),t.e("4123"),t.e("7992")]).then(t.bind(t,17211)),l),m=(0,o.getAsyncLifecycle)(()=>Promise.all([t.e("6392"),t.e("4123"),t.e("4948")]).then(t.bind(t,87375)),l),f=(0,o.getAsyncLifecycle)(()=>Promise.all([t.e("6392"),t.e("4123"),t.e("7104")]).then(t.bind(t,8243)),l),h=(0,o.getAsyncLifecycle)(()=>Promise.all([t.e("6392"),t.e("4123"),t.e("2020"),t.e("5861"),t.e("1515")]).then(t.bind(t,49094)),l),g=(0,o.getAsyncLifecycle)(()=>Promise.all([t.e("3238"),t.e("9314"),t.e("1617"),t.e("123"),t.e("7989"),t.e("3910"),t.e("6392"),t.e("4123"),t.e("6692"),t.e("2020"),t.e("9103")]).then(t.bind(t,47826)),l),b=(0,o.getAsyncLifecycle)(()=>Promise.all([t.e("6392"),t.e("4123"),t.e("8636")]).then(t.bind(t,711)),l),j=(0,o.getAsyncLifecycle)(()=>Promise.all([t.e("6392"),t.e("4123"),t.e("5354")]).then(t.bind(t,60545)),l),T=(0,o.getAsyncLifecycle)(()=>Promise.all([t.e("6392"),t.e("4123"),t.e("8228")]).then(t.bind(t,85087)),l),A=(0,o.getAsyncLifecycle)(()=>Promise.all([t.e("6392"),t.e("4123"),t.e("7247")]).then(t.bind(t,34562)),l),v=(0,o.getAsyncLifecycle)(()=>Promise.all([t.e("6392"),t.e("4123"),t.e("9485")]).then(t.bind(t,38604)),l),k=(0,o.getAsyncLifecycle)(()=>Promise.all([t.e("6392"),t.e("4123"),t.e("5861"),t.e("4442")]).then(t.bind(t,38353)),l);function w(){(0,o.defineConfigSchema)(s,a)}}}]);
1
+ (globalThis.webpackChunk_openmrs_esm_form_builder_app=globalThis.webpackChunk_openmrs_esm_form_builder_app||[]).push([["3378"],{26738(e,n,t){var o={"./uk.json":["60723","9072"],"./ar.json":["14132","7045"],"./ru_RU.json":["60986","8359"],"./uz_UZ.json":["70890","7175"],"./fr.json":["94055","6508"],"./sw_KE.json":["88618","903"],"./uz.json":["43584","6377"],"./en.json":["34300","5117"],"./ky.json":["88163","2416"],"./pl.json":["41119","6724"],"./sq.json":["88371","4928"],"./ka.json":["70795","1480"],"./si.json":["56859","6904"],"./zh_TW.json":["10439","556"],"./de.json":["34944","5145"],"./lg.json":["64618","8695"],"./vi.json":["79214","6371"],"./tr.json":["55241","434"],"./es_MX.json":["88349","1646"],"./tr_TR.json":["99900","1869"],"./zh_CN.json":["99879","5644"],"./en_US.json":["59569","4106"],"./he.json":["84652","2317"],"./id.json":["72690","6047"],"./ku.json":["9895","4348"],"./es.json":["93099","7912"],"./ne.json":["12146","5503"],"./ar_SY.json":["37617","282"],"./uz@Latn.json":["27097","4658"],"./bn.json":["77159","6444"],"./cs.json":["86589","7182"],"./zh.json":["35661","7742"],"./hi_IN.json":["55442","6764"],"./pt_BR.json":["36468","1877"],"./qu.json":["35173","8358"],"./ro_RO.json":["46022","3963"],"./sw.json":["89913","997"],"./am.json":["81197","9806"],"./pt.json":["96679","5132"],"./it.json":["9538","4111"],"./km.json":["54335","5940"],"./hi.json":["36840","2881"]};function r(e){if(!t.o(o,e))return Promise.resolve().then(function(){var n=Error("Cannot find module '"+e+"'");throw n.code="MODULE_NOT_FOUND",n});var n=o[e],r=n[0];return t.e(n[1]).then(function(){return t(r)})}r.keys=()=>Object.keys(o),r.id=26738,e.exports=r},47481(e,n,t){"use strict";t.r(n),t.d(n,{newFormModal:()=>p,questionModal:()=>g,editTranslationModal:()=>v,deletePageModal:()=>u,addFormReferenceModal:()=>h,deleteQuestionModal:()=>b,newPageModal:()=>_,deleteSectionModal:()=>f,startupApp:()=>w,systemAdministrationFormBuilderCardLink:()=>y,deleteFormModal:()=>A,unpublishFormModal:()=>T,importTranslation:()=>d,saveFormModal:()=>k,restoreDraftSchemaModal:()=>j,newSectionModal:()=>m,root:()=>c});var o=t(23365);let r=["control","encounterDatetime","encounterLocation","encounterProvider","encounterRole","obs","obsGroup","patientIdentifier","personAttribute","testOrder","programState"],i=["checkbox","checkbox-searchable","content-switcher","date","datetime","drug","encounter-location","encounter-provider","encounter-role","fixed-value","file","group","number","problem","radio","repeating","select","text","textarea","toggle","ui-select-extended","workspace-launcher","markdown","extension-widget","select-concept-answers"],a={questionTypes:{_type:o.Type.Array,_elements:{_type:o.Type.String},_description:"Provides information that the processor uses to render a field",_default:r,_validators:[o.validators.oneOf(r)]},fieldTypes:{_type:o.Type.Array,_elements:{_type:o.Type.String},_description:"An array of available field types. A question can have only one field type, and the field type determines how the question is rendered.",_default:i,_validators:[o.validators.oneOf(i)]},showSchemaSaveWarning:{_type:o.Type.Boolean,_description:"Whether to show a warning about possibly losing data in the forms dashboard",_default:!0},dataTypeToRenderingMap:{Numeric:{_type:o.Type.Array,_elements:{_type:o.Type.String},_default:["number","fixed-value"]},Coded:{_type:o.Type.Array,_elements:{_type:o.Type.String},_default:["select","checkbox","checkbox-searchable","radio","content-switcher","fixed-value","markdown","ui-select-extended","drug","problem","encounter-provider","encounter-location","select-concept-answers","encounter-role","multiCheckbox"]},Text:{_type:o.Type.Array,_elements:{_type:o.Type.String},_default:["text","textarea","fixed-value"]},Date:{_type:o.Type.Array,_elements:{_type:o.Type.String},_default:["date","fixed-value"]},Datetime:{_type:o.Type.Array,_elements:{_type:o.Type.String},_default:["datetime","fixed-value"]},Boolean:{_type:o.Type.Array,_elements:{_type:o.Type.String},_default:["toggle","select","radio","content-switcher","fixed-value"]},Rule:{_type:o.Type.Array,_elements:{_type:o.Type.String},_default:["repeating","group"]},"N/A":{_type:o.Type.Array,_elements:{_type:o.Type.String},_default:[]},Complex:{_type:o.Type.Array,_elements:{_type:o.Type.String},_default:["file"]}},enableFormValidation:{_type:o.Type.Boolean,_description:"Whether to enable form validation",_default:!1},blockRenderingWithErrors:{_type:o.Type.Boolean,_description:"Whether to block form rendering when there are validation errors",_default:!1}},s="@openmrs/esm-form-builder-app",l={featureName:"form-builder",moduleName:s},d=t(26738),c=(0,o.getAsyncLifecycle)(()=>Promise.all([t.e("3238"),t.e("9314"),t.e("8668"),t.e("1617"),t.e("1481"),t.e("7989"),t.e("5699"),t.e("8998"),t.e("6392"),t.e("4123"),t.e("6692"),t.e("2020"),t.e("5861"),t.e("5543")]).then(t.bind(t,16316)),l),y=(0,o.getAsyncLifecycle)(()=>Promise.all([t.e("9314"),t.e("6392"),t.e("4123"),t.e("2355")]).then(t.bind(t,98713)),l),p=(0,o.getAsyncLifecycle)(()=>Promise.all([t.e("6392"),t.e("4123"),t.e("9316")]).then(t.bind(t,83519)),l),_=(0,o.getAsyncLifecycle)(()=>Promise.all([t.e("6392"),t.e("4123"),t.e("4383")]).then(t.bind(t,30162)),l),u=(0,o.getAsyncLifecycle)(()=>Promise.all([t.e("6392"),t.e("4123"),t.e("7992")]).then(t.bind(t,17211)),l),m=(0,o.getAsyncLifecycle)(()=>Promise.all([t.e("6392"),t.e("4123"),t.e("4948")]).then(t.bind(t,87375)),l),f=(0,o.getAsyncLifecycle)(()=>Promise.all([t.e("6392"),t.e("4123"),t.e("7104")]).then(t.bind(t,8243)),l),h=(0,o.getAsyncLifecycle)(()=>Promise.all([t.e("6392"),t.e("4123"),t.e("2020"),t.e("5861"),t.e("1515")]).then(t.bind(t,49094)),l),g=(0,o.getAsyncLifecycle)(()=>Promise.all([t.e("3238"),t.e("9314"),t.e("1617"),t.e("123"),t.e("7989"),t.e("3910"),t.e("6392"),t.e("4123"),t.e("6692"),t.e("2020"),t.e("9103")]).then(t.bind(t,47826)),l),b=(0,o.getAsyncLifecycle)(()=>Promise.all([t.e("6392"),t.e("4123"),t.e("8636")]).then(t.bind(t,711)),l),j=(0,o.getAsyncLifecycle)(()=>Promise.all([t.e("6392"),t.e("4123"),t.e("5354")]).then(t.bind(t,60545)),l),T=(0,o.getAsyncLifecycle)(()=>Promise.all([t.e("6392"),t.e("4123"),t.e("8228")]).then(t.bind(t,85087)),l),A=(0,o.getAsyncLifecycle)(()=>Promise.all([t.e("6392"),t.e("4123"),t.e("7247")]).then(t.bind(t,34562)),l),v=(0,o.getAsyncLifecycle)(()=>Promise.all([t.e("6392"),t.e("4123"),t.e("9485")]).then(t.bind(t,38604)),l),k=(0,o.getAsyncLifecycle)(()=>Promise.all([t.e("6392"),t.e("4123"),t.e("5861"),t.e("4442")]).then(t.bind(t,38353)),l);function w(){(0,o.defineConfigSchema)(s,a)}}}]);
package/dist/4383.js CHANGED
@@ -1 +1 @@
1
- "use strict";(globalThis.webpackChunk_openmrs_esm_form_builder_app=globalThis.webpackChunk_openmrs_esm_form_builder_app||[]).push([["4383"],{30162(e,t,a){a.r(t),a.d(t,{default:()=>c});var r=a(47499),l=a.n(r),n=a(58779),o=a(14968),s=a(46718);let c=({closeModal:e,schema:t,onSchemaChange:a})=>{let{t:c}=(0,n.useTranslation)(),[u,i]=(0,r.useState)("");return l().createElement(l().Fragment,null,l().createElement(o.ModalHeader,{title:c("createNewPage","Create a new page"),closeModal:e}),l().createElement(o.Form,{onSubmit:e=>e.preventDefault()},l().createElement(o.ModalBody,null,l().createElement(o.FormGroup,{legendText:""},l().createElement(o.TextInput,{id:"pageTitle",labelText:c("enterPageTitle","Enter a title for your new page"),value:u,onChange:e=>i(e.target.value)})))),l().createElement(o.ModalFooter,null,l().createElement(o.Button,{onClick:e,kind:"secondary"},c("cancel","Cancel")),l().createElement(o.Button,{disabled:!u,onClick:()=>{(()=>{try{u&&(t.pages.push({label:u,sections:[]}),a({...t}),i("")),(0,s.showSnackbar)({title:c("success","Success!"),kind:"success",isLowContrast:!0,subtitle:c("pageCreated","New page created")})}catch(e){e instanceof Error&&(0,s.showSnackbar)({title:c("errorCreatingPage","Error creating page"),kind:"error",subtitle:e?.message})}})(),e()}},l().createElement("span",null,c("save","Save")))))}}}]);
1
+ "use strict";(globalThis.webpackChunk_openmrs_esm_form_builder_app=globalThis.webpackChunk_openmrs_esm_form_builder_app||[]).push([["4383"],{30162(e,t,a){a.r(t),a.d(t,{default:()=>c});var r=a(47499),l=a.n(r),n=a(58779),o=a(14968),s=a(23365);let c=({closeModal:e,schema:t,onSchemaChange:a})=>{let{t:c}=(0,n.useTranslation)(),[u,i]=(0,r.useState)("");return l().createElement(l().Fragment,null,l().createElement(o.ModalHeader,{title:c("createNewPage","Create a new page"),closeModal:e}),l().createElement(o.Form,{onSubmit:e=>e.preventDefault()},l().createElement(o.ModalBody,null,l().createElement(o.FormGroup,{legendText:""},l().createElement(o.TextInput,{id:"pageTitle",labelText:c("enterPageTitle","Enter a title for your new page"),value:u,onChange:e=>i(e.target.value)})))),l().createElement(o.ModalFooter,null,l().createElement(o.Button,{onClick:e,kind:"secondary"},c("cancel","Cancel")),l().createElement(o.Button,{disabled:!u,onClick:()=>{(()=>{try{u&&(t.pages.push({label:u,sections:[]}),a({...t}),i("")),(0,s.showSnackbar)({title:c("success","Success!"),kind:"success",isLowContrast:!0,subtitle:c("pageCreated","New page created")})}catch(e){e instanceof Error&&(0,s.showSnackbar)({title:c("errorCreatingPage","Error creating page"),kind:"error",subtitle:e?.message})}})(),e()}},l().createElement("span",null,c("save","Save")))))}}}]);
package/dist/4442.js CHANGED
@@ -1 +1 @@
1
- "use strict";(globalThis.webpackChunk_openmrs_esm_form_builder_app=globalThis.webpackChunk_openmrs_esm_form_builder_app||[]).push([["4442"],{38353(e,t,r){r.r(t),r.d(t,{default:()=>m});var a=r(47499),n=r.n(a),o=r(58779),s=r(14968),i=r(46718),l=r(66148),c=r.n(l),u=r(6916),d=r(70721);let m=({form:e,schema:t,formUuid:r,closeModal:l,onSavingChange:m})=>{let{t:p}=(0,o.useTranslation)(),{encounterTypes:h}=(()=>{let e=`${i.restBaseUrl}/encountertype?v=custom:(uuid,name)`,{data:t,error:r,isLoading:a}=c()(e,i.openmrsFetch);return{encounterTypes:t?.data?.results??[],encounterTypesError:r,isEncounterTypesLoading:a}})(),{mutate:y}=(0,u.m)(r),[f,v]=(0,a.useState)(""),[w,b]=(0,a.useState)(""),[E,g]=(0,a.useState)(!1),[T,S]=(0,a.useState)(!1),[C,k]=(0,a.useState)(""),[F,$]=(0,a.useState)(r?null:"newVersion"),[x,B]=(0,a.useState)(""),_=(0,a.useCallback)(()=>localStorage.removeItem("formJSON"),[]);(0,a.useEffect)(()=>{t&&(k(t.name),v(t.description),b(t.encounterType),B(t.version))},[t]);let U=async r=>{r.preventDefault(),S(!0),m?.(!0);try{if("newVersion"===F)try{let e,r=await (0,d.kb)(C,x,!1,f,w),a={...t,name:C,version:x,description:f,encounterType:w,uuid:r.uuid};try{e=(await (0,d.Vb)(a)).toString(),await (0,d._I)(r.uuid,e)}catch(t){throw e&&await (0,d.yI)(e).catch(()=>{}),await (0,d.i6)(r.uuid).catch(()=>{}),t}(0,i.showSnackbar)({title:p("formCreated","New form created"),kind:"success",isLowContrast:!0,subtitle:C+" "+p("saveSuccessMessage","was created successfully. It is now visible on the Forms dashboard.")}),_(),l(),await y(),(0,i.navigate)({to:`${window.spaBase}/form-builder/edit/${r.uuid}`})}catch(e){e instanceof Error&&(0,i.showSnackbar)({title:p("errorCreatingForm","Error creating form"),kind:"error",subtitle:e?.message})}else try{let r={...t,name:C,version:x,description:f,encounterType:w};await (0,d.wi)(e.uuid,C,x,f,w);let a=e?.resources?.length?e.resources.find(({name:e})=>"JSON schema"===e):void 0,n=(await (0,d.Vb)(r)).toString();try{a&&await (0,d.o8)(e.uuid,a.uuid),await (0,d._I)(e.uuid,n)}catch(e){throw await (0,d.yI)(n).catch(()=>{}),e}a&&await (0,d.yI)(a.valueReference).catch(()=>{}),(0,i.showSnackbar)({title:p("success","Success!"),kind:"success",isLowContrast:!0,subtitle:e?.name+" "+p("saveSuccess","was updated successfully")}),l(),await y()}catch(e){e instanceof Error&&(0,i.showSnackbar)({title:p("errorUpdatingForm","Error updating form"),kind:"error",subtitle:e?.message})}}finally{S(!1),m?.(!1)}};return null===F?n().createElement(n().Fragment,null,n().createElement(s.ModalHeader,{closeModal:l,title:p("saveConfirmation","Save or Update form")}),n().createElement(s.ModalBody,null,n().createElement("p",null,p("saveAsModal","A version of the form you're working on already exists on the server. Do you want to update the form or to save it as a new version?"))),n().createElement(s.ModalFooter,null,n().createElement(s.Button,{kind:"tertiary",onClick:()=>$("update")},p("updateExistingForm","Update existing version")),n().createElement(s.Button,{kind:"primary",onClick:()=>$("newVersion")},p("saveAsNewForm","Save as a new form")),n().createElement(s.Button,{kind:"secondary",onClick:l},p("close","Close")))):n().createElement(n().Fragment,null,n().createElement(s.ModalHeader,{closeModal:l,title:p("saveFormToServer","Save form to server")}),n().createElement(s.ModalBody,null,n().createElement(s.Form,{id:"save-form",onSubmit:U},n().createElement("p",null,p("saveExplainerText","Clicking the Save button saves your form schema to the database. To see your form in your frontend, you first need to publish it. Click the Publish button to publish your form.")),n().createElement(s.FormGroup,{legendText:""},n().createElement(s.Stack,{gap:5},n().createElement(s.TextInput,{id:"name",labelText:p("formName","Form Name"),onChange:e=>k(e.target.value),placeholder:p("formNamePlaceholder","e.g. OHRI Express Care Patient Encounter Form"),required:!0,value:C}),"update"===F?n().createElement(s.TextInput,{id:"uuid",labelText:p("autogeneratedUuid","UUID (auto-generated)"),disabled:!0,value:e?.uuid}):null,n().createElement(s.TextInput,{id:"version",labelText:p("version","Version"),placeholder:p("versionPlaceholder","e.g. 1.0"),onChange:e=>{(e=>{if(!e)return g(!1);g(!/^[0-9]/.test(e))})(e.target.value),E||B(e.target.value)},invalid:E,invalidText:p("invalidVersionWarning","Version can only start with with a number"),required:!0,value:x}),n().createElement(s.Select,{id:"encounterType",labelText:p("encounterType","Encounter Type"),onChange:e=>b(e.target.value),required:!0,value:w},w?null:n().createElement(s.SelectItem,{text:p("chooseEncounterType","Choose an encounter type to link your form to"),value:""}),h?.length>0&&h.map(e=>n().createElement(s.SelectItem,{key:e.uuid,value:e.uuid,text:e.name},e.name))),n().createElement(s.TextArea,{labelText:p("description","Description"),onChange:e=>v(e.target.value),id:"description",placeholder:p("descriptionPlaceholderText","e.g. A form used to collect encounter data for clients in the Express Care program."),required:!0,value:f}))))),n().createElement(s.ModalFooter,null,n().createElement(s.Button,{kind:"secondary",onClick:l},p("close","Close")),n().createElement(s.Button,{disabled:T||E,className:"-esm-form-builder__save-form__spinner___3Anx1",type:"submit",form:"save-form",kind:"primary"},T?n().createElement(s.InlineLoading,{description:p("saving","Saving")+"..."}):n().createElement("span",null,p("save","Save")))))}},6916(e,t,r){r.d(t,{m:()=>s});var a=r(66148),n=r.n(a),o=r(46718);let s=e=>{let t=`${o.restBaseUrl}/form/${e}?v=full`,{data:r,error:a,isLoading:s,isValidating:i,mutate:l}=n()(e?t:null,o.openmrsFetch);return{form:r?.data,formError:a,isLoadingForm:s,isValidatingForm:i,mutate:l}}},70721(e,t,r){r.d(t,{Rv:()=>p,UY:()=>d,Vb:()=>i,_I:()=>l,b4:()=>m,i6:()=>o,kb:()=>u,o8:()=>s,wi:()=>c,yI:()=>n});var a=r(46718);async function n(e){return await (0,a.openmrsFetch)(`${a.restBaseUrl}/clobdata/${e}`,{method:"DELETE",headers:{"Content-Type":"application/json"}})}async function o(e){return await (0,a.openmrsFetch)(`${a.restBaseUrl}/form/${e}`,{method:"DELETE",headers:{"Content-Type":"application/json"}})}async function s(e,t){return await (0,a.openmrsFetch)(`${a.restBaseUrl}/form/${e}/resource/${t}`,{method:"DELETE",headers:{"Content-Type":"application/json"}})}async function i(e){let t=new Blob([JSON.stringify(e)],{type:"application/json"}),r=new FormData;r.append("file",t);let n=await window.fetch(`${window.openmrsBase}${a.restBaseUrl}/clobdata`,{body:r,method:"POST"});if(!n.ok)throw Error(`Schema upload failed (status ${n.status})`);return n.text()}async function l(e,t){return await (0,a.openmrsFetch)(`${a.restBaseUrl}/form/${e}/resource`,{method:"POST",headers:{"Content-Type":"application/json"},body:{name:"JSON schema",dataType:"AmpathJsonSchema",valueReference:t}})}async function c(e,t,r,n,o){let s=new AbortController;return await (0,a.openmrsFetch)(`${a.restBaseUrl}/form/${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:{name:t,version:r,description:n,encounterType:{uuid:o}},signal:s.signal})}async function u(e,t,r,n,o){let s=new AbortController,i={name:e,version:t,published:r??!1,description:n??""};return o&&(i.encounterType=o),(await (0,a.openmrsFetch)(`${a.restBaseUrl}/form`,{method:"POST",headers:{"Content-Type":"application/json"},body:i,signal:s.signal})).data}async function d(e){return await (0,a.openmrsFetch)(`${a.restBaseUrl}/form/${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:{published:!0}})}async function m(e){return await (0,a.openmrsFetch)(`${a.restBaseUrl}/form/${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:{published:!1}})}async function p(e){return await (0,a.openmrsFetch)(`${a.restBaseUrl}/form/${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:{deleted:"false"}})}}}]);
1
+ "use strict";(globalThis.webpackChunk_openmrs_esm_form_builder_app=globalThis.webpackChunk_openmrs_esm_form_builder_app||[]).push([["4442"],{38353(e,t,r){r.r(t),r.d(t,{default:()=>m});var a=r(47499),n=r.n(a),o=r(58779),s=r(14968),i=r(23365),l=r(66148),c=r.n(l),u=r(6916),d=r(70721);let m=({form:e,schema:t,formUuid:r,closeModal:l,onSavingChange:m})=>{let{t:p}=(0,o.useTranslation)(),{encounterTypes:h}=(()=>{let e=`${i.restBaseUrl}/encountertype?v=custom:(uuid,name)`,{data:t,error:r,isLoading:a}=c()(e,i.openmrsFetch);return{encounterTypes:t?.data?.results??[],encounterTypesError:r,isEncounterTypesLoading:a}})(),{mutate:y}=(0,u.m)(r),[f,v]=(0,a.useState)(""),[w,b]=(0,a.useState)(""),[E,g]=(0,a.useState)(!1),[T,S]=(0,a.useState)(!1),[C,k]=(0,a.useState)(""),[F,$]=(0,a.useState)(r?null:"newVersion"),[x,B]=(0,a.useState)(""),_=(0,a.useCallback)(()=>localStorage.removeItem("formJSON"),[]);(0,a.useEffect)(()=>{t&&(k(t.name),v(t.description),b(t.encounterType),B(t.version))},[t]);let U=async r=>{r.preventDefault(),S(!0),m?.(!0);try{if("newVersion"===F)try{let e,r=await (0,d.kb)(C,x,!1,f,w),a={...t,name:C,version:x,description:f,encounterType:w,uuid:r.uuid};try{e=(await (0,d.Vb)(a)).toString(),await (0,d._I)(r.uuid,e)}catch(t){throw e&&await (0,d.yI)(e).catch(()=>{}),await (0,d.i6)(r.uuid).catch(()=>{}),t}(0,i.showSnackbar)({title:p("formCreated","New form created"),kind:"success",isLowContrast:!0,subtitle:C+" "+p("saveSuccessMessage","was created successfully. It is now visible on the Forms dashboard.")}),_(),l(),await y(),(0,i.navigate)({to:`${window.spaBase}/form-builder/edit/${r.uuid}`})}catch(e){e instanceof Error&&(0,i.showSnackbar)({title:p("errorCreatingForm","Error creating form"),kind:"error",subtitle:e?.message})}else try{let r={...t,name:C,version:x,description:f,encounterType:w};await (0,d.wi)(e.uuid,C,x,f,w);let a=e?.resources?.length?e.resources.find(({name:e})=>"JSON schema"===e):void 0,n=(await (0,d.Vb)(r)).toString();try{a&&await (0,d.o8)(e.uuid,a.uuid),await (0,d._I)(e.uuid,n)}catch(e){throw await (0,d.yI)(n).catch(()=>{}),e}a&&await (0,d.yI)(a.valueReference).catch(()=>{}),(0,i.showSnackbar)({title:p("success","Success!"),kind:"success",isLowContrast:!0,subtitle:e?.name+" "+p("saveSuccess","was updated successfully")}),l(),await y()}catch(e){e instanceof Error&&(0,i.showSnackbar)({title:p("errorUpdatingForm","Error updating form"),kind:"error",subtitle:e?.message})}}finally{S(!1),m?.(!1)}};return null===F?n().createElement(n().Fragment,null,n().createElement(s.ModalHeader,{closeModal:l,title:p("saveConfirmation","Save or Update form")}),n().createElement(s.ModalBody,null,n().createElement("p",null,p("saveAsModal","A version of the form you're working on already exists on the server. Do you want to update the form or to save it as a new version?"))),n().createElement(s.ModalFooter,null,n().createElement(s.Button,{kind:"tertiary",onClick:()=>$("update")},p("updateExistingForm","Update existing version")),n().createElement(s.Button,{kind:"primary",onClick:()=>$("newVersion")},p("saveAsNewForm","Save as a new form")),n().createElement(s.Button,{kind:"secondary",onClick:l},p("close","Close")))):n().createElement(n().Fragment,null,n().createElement(s.ModalHeader,{closeModal:l,title:p("saveFormToServer","Save form to server")}),n().createElement(s.ModalBody,null,n().createElement(s.Form,{id:"save-form",onSubmit:U},n().createElement("p",null,p("saveExplainerText","Clicking the Save button saves your form schema to the database. To see your form in your frontend, you first need to publish it. Click the Publish button to publish your form.")),n().createElement(s.FormGroup,{legendText:""},n().createElement(s.Stack,{gap:5},n().createElement(s.TextInput,{id:"name",labelText:p("formName","Form Name"),onChange:e=>k(e.target.value),placeholder:p("formNamePlaceholder","e.g. OHRI Express Care Patient Encounter Form"),required:!0,value:C}),"update"===F?n().createElement(s.TextInput,{id:"uuid",labelText:p("autogeneratedUuid","UUID (auto-generated)"),disabled:!0,value:e?.uuid}):null,n().createElement(s.TextInput,{id:"version",labelText:p("version","Version"),placeholder:p("versionPlaceholder","e.g. 1.0"),onChange:e=>{(e=>{if(!e)return g(!1);g(!/^[0-9]/.test(e))})(e.target.value),E||B(e.target.value)},invalid:E,invalidText:p("invalidVersionWarning","Version can only start with with a number"),required:!0,value:x}),n().createElement(s.Select,{id:"encounterType",labelText:p("encounterType","Encounter Type"),onChange:e=>b(e.target.value),required:!0,value:w},w?null:n().createElement(s.SelectItem,{text:p("chooseEncounterType","Choose an encounter type to link your form to"),value:""}),h?.length>0&&h.map(e=>n().createElement(s.SelectItem,{key:e.uuid,value:e.uuid,text:e.name},e.name))),n().createElement(s.TextArea,{labelText:p("description","Description"),onChange:e=>v(e.target.value),id:"description",placeholder:p("descriptionPlaceholderText","e.g. A form used to collect encounter data for clients in the Express Care program."),required:!0,value:f}))))),n().createElement(s.ModalFooter,null,n().createElement(s.Button,{kind:"secondary",onClick:l},p("close","Close")),n().createElement(s.Button,{disabled:T||E,className:"-esm-form-builder__save-form__spinner___3Anx1",type:"submit",form:"save-form",kind:"primary"},T?n().createElement(s.InlineLoading,{description:p("saving","Saving")+"..."}):n().createElement("span",null,p("save","Save")))))}},6916(e,t,r){r.d(t,{m:()=>s});var a=r(66148),n=r.n(a),o=r(23365);let s=e=>{let t=`${o.restBaseUrl}/form/${e}?v=full`,{data:r,error:a,isLoading:s,isValidating:i,mutate:l}=n()(e?t:null,o.openmrsFetch);return{form:r?.data,formError:a,isLoadingForm:s,isValidatingForm:i,mutate:l}}},70721(e,t,r){r.d(t,{Rv:()=>p,UY:()=>d,Vb:()=>i,_I:()=>l,b4:()=>m,i6:()=>o,kb:()=>u,o8:()=>s,wi:()=>c,yI:()=>n});var a=r(23365);async function n(e){return await (0,a.openmrsFetch)(`${a.restBaseUrl}/clobdata/${e}`,{method:"DELETE",headers:{"Content-Type":"application/json"}})}async function o(e){return await (0,a.openmrsFetch)(`${a.restBaseUrl}/form/${e}`,{method:"DELETE",headers:{"Content-Type":"application/json"}})}async function s(e,t){return await (0,a.openmrsFetch)(`${a.restBaseUrl}/form/${e}/resource/${t}`,{method:"DELETE",headers:{"Content-Type":"application/json"}})}async function i(e){let t=new Blob([JSON.stringify(e)],{type:"application/json"}),r=new FormData;r.append("file",t);let n=await window.fetch(`${window.openmrsBase}${a.restBaseUrl}/clobdata`,{body:r,method:"POST"});if(!n.ok)throw Error(`Schema upload failed (status ${n.status})`);return n.text()}async function l(e,t){return await (0,a.openmrsFetch)(`${a.restBaseUrl}/form/${e}/resource`,{method:"POST",headers:{"Content-Type":"application/json"},body:{name:"JSON schema",dataType:"AmpathJsonSchema",valueReference:t}})}async function c(e,t,r,n,o){let s=new AbortController;return await (0,a.openmrsFetch)(`${a.restBaseUrl}/form/${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:{name:t,version:r,description:n,encounterType:{uuid:o}},signal:s.signal})}async function u(e,t,r,n,o){let s=new AbortController,i={name:e,version:t,published:r??!1,description:n??""};return o&&(i.encounterType=o),(await (0,a.openmrsFetch)(`${a.restBaseUrl}/form`,{method:"POST",headers:{"Content-Type":"application/json"},body:i,signal:s.signal})).data}async function d(e){return await (0,a.openmrsFetch)(`${a.restBaseUrl}/form/${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:{published:!0}})}async function m(e){return await (0,a.openmrsFetch)(`${a.restBaseUrl}/form/${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:{published:!1}})}async function p(e){return await (0,a.openmrsFetch)(`${a.restBaseUrl}/form/${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:{deleted:"false"}})}}}]);
package/dist/4831.js CHANGED
@@ -1 +1 @@
1
- "use strict";(globalThis.webpackChunk_openmrs_esm_form_builder_app=globalThis.webpackChunk_openmrs_esm_form_builder_app||[]).push([["4831"],{61042(e,n,t){t.r(n),t.d(n,{ProgramEnrollmentSubmissionAction:()=>d,default:()=>u});var o=t(74353),r=t.n(o),l=t(46718),i=t(32749),a=t(45278),s=t(10578);let d={applyAction:async function({patient:e,encounters:n,sessionMode:t},o){let d=n[0],u=d.location.uuid,m=(e,n,t)=>(0,l.translateFrom)(a.L,e,n,t),c=o.programUuid;if("view"===t)return;if(!c)throw Error("Program UUID not configured");let p=d.obs?.find(e=>e.formFieldPath.includes(o.enrollmentDate||null))?.value,h=d.obs?.find(e=>e.formFieldPath.includes(o.completionDate||null))?.value,f=new AbortController,b={patient:e.id,program:c,dateEnrolled:p??r()().format(),location:u},w=await (0,i.getPatientEnrolledPrograms)(e.id),g=w?.results.find(e=>e.program.uuid===c&&!e.dateCompleted);if(o.completionDate){if(!h)throw Error("Completion date was not found in the encounter");if(!g)return void(0,l.showSnackbar)({title:m("enrollmentDiscontinuationNotAllowed","Enrollment discontinuation not allowed"),subtitle:m("cannotDiscontinueEnrollment","Cannot discontinue an enrollment that does not exist"),kind:"error",isLowContrast:!1});b={uuid:g.uuid,dateCompleted:function(e){if(!e.endsWith("T00:00:00.000+0000"))return e;let n=r()();return r()(e).hour(n.hour()).minute(n.minute()).second(n.second()).millisecond(n.millisecond()).format()}(h)}}if(g)if(g.dateCompleted||h){if(g.dateCompleted){"enter"===t&&(0,l.showSnackbar)({title:m("enrollmentAlreadyDiscontinued","Enrollment already discontinued"),subtitle:m("alreadyDiscontinuedDescription","This patient is already enrolled in the selected program and has already been discontinued."),kind:"error",isLowContrast:!1});return}}else{"enter"===t&&(0,l.showSnackbar)({title:m("enrollmentNotAllowed","Enrollment not allowed"),subtitle:m("alreadyEnrolledDescription","This patient is already enrolled in the selected program and cannot be enrolled again."),kind:"error",isLowContrast:!1});return}(0,i.saveProgramEnrollment)(b,f).then(e=>{var n;(0,l.showSnackbar)({kind:"success",title:(n=m,e.data.dateCompleted?n("enrollmentDiscontinued","The patient's program enrollment has been successfully discontinued."):n("enrolledToProgram","The patient has been successfully enrolled in the program.")),isLowContrast:!0})},e=>{(0,l.showSnackbar)({title:m("errorSavingEnrollment","Error saving enrollment"),subtitle:(0,s.j)(e).join(", "),kind:"error",isLowContrast:!1})})}},u=d}}]);
1
+ "use strict";(globalThis.webpackChunk_openmrs_esm_form_builder_app=globalThis.webpackChunk_openmrs_esm_form_builder_app||[]).push([["4831"],{61042(e,n,t){t.r(n),t.d(n,{ProgramEnrollmentSubmissionAction:()=>d,default:()=>u});var o=t(74353),r=t.n(o),l=t(23365),i=t(32749),a=t(45278),s=t(10578);let d={applyAction:async function({patient:e,encounters:n,sessionMode:t},o){let d=n[0],u=d.location.uuid,m=(e,n,t)=>(0,l.translateFrom)(a.L,e,n,t),c=o.programUuid;if("view"===t)return;if(!c)throw Error("Program UUID not configured");let p=d.obs?.find(e=>e.formFieldPath.includes(o.enrollmentDate||null))?.value,h=d.obs?.find(e=>e.formFieldPath.includes(o.completionDate||null))?.value,f=new AbortController,b={patient:e.id,program:c,dateEnrolled:p??r()().format(),location:u},w=await (0,i.getPatientEnrolledPrograms)(e.id),g=w?.results.find(e=>e.program.uuid===c&&!e.dateCompleted);if(o.completionDate){if(!h)throw Error("Completion date was not found in the encounter");if(!g)return void(0,l.showSnackbar)({title:m("enrollmentDiscontinuationNotAllowed","Enrollment discontinuation not allowed"),subtitle:m("cannotDiscontinueEnrollment","Cannot discontinue an enrollment that does not exist"),kind:"error",isLowContrast:!1});b={uuid:g.uuid,dateCompleted:function(e){if(!e.endsWith("T00:00:00.000+0000"))return e;let n=r()();return r()(e).hour(n.hour()).minute(n.minute()).second(n.second()).millisecond(n.millisecond()).format()}(h)}}if(g)if(g.dateCompleted||h){if(g.dateCompleted){"enter"===t&&(0,l.showSnackbar)({title:m("enrollmentAlreadyDiscontinued","Enrollment already discontinued"),subtitle:m("alreadyDiscontinuedDescription","This patient is already enrolled in the selected program and has already been discontinued."),kind:"error",isLowContrast:!1});return}}else{"enter"===t&&(0,l.showSnackbar)({title:m("enrollmentNotAllowed","Enrollment not allowed"),subtitle:m("alreadyEnrolledDescription","This patient is already enrolled in the selected program and cannot be enrolled again."),kind:"error",isLowContrast:!1});return}(0,i.saveProgramEnrollment)(b,f).then(e=>{var n;(0,l.showSnackbar)({kind:"success",title:(n=m,e.data.dateCompleted?n("enrollmentDiscontinued","The patient's program enrollment has been successfully discontinued."):n("enrolledToProgram","The patient has been successfully enrolled in the program.")),isLowContrast:!0})},e=>{(0,l.showSnackbar)({title:m("errorSavingEnrollment","Error saving enrollment"),subtitle:(0,s.j)(e).join(", "),kind:"error",isLowContrast:!1})})}},u=d}}]);
package/dist/4948.js CHANGED
@@ -1 +1 @@
1
- "use strict";(globalThis.webpackChunk_openmrs_esm_form_builder_app=globalThis.webpackChunk_openmrs_esm_form_builder_app||[]).push([["4948"],{87375(e,t,n){n.r(t),n.d(t,{default:()=>c});var a=n(47499),i=n.n(a),s=n(58779),r=n(14968),o=n(46718);let c=({closeModal:e,schema:t,onSchemaChange:n,pageIndex:c,sectionIndex:l,modalType:d})=>{let{t:u}=(0,s.useTranslation)(),[p,m]=(0,a.useState)("edit"===d?t.pages[c].sections[l].label:""),[E,b]=(0,a.useState)("edit"===d?t.pages[c].sections[l].isExpanded:"true");return i().createElement(i().Fragment,null,i().createElement(r.ModalHeader,{closeModal:e,title:"edit"===d?u("editSection","Edit section"):u("createNewSection","Create a new section")}),i().createElement(r.Form,{onSubmit:e=>e.preventDefault()},i().createElement(r.ModalBody,null,i().createElement(r.FormGroup,{legendText:""},i().createElement(r.TextInput,{id:"sectionTitle",labelText:u("enterSectionTitle","Enter a section title"),value:p,onChange:e=>m(e.target.value),style:{marginBottom:"16px"}}),i().createElement(r.Checkbox,{id:"isExpanded",checked:"true"===E,labelText:u("expandedSection","Keep section expanded"),onChange:(e,{checked:t})=>{b(!0===t?"true":"false")},"data-testid":"keep-section-expanded-checkbox"})))),i().createElement(r.ModalFooter,null,i().createElement(r.Button,{onClick:e,kind:"secondary"},u("cancel","Cancel")),i().createElement(r.Button,{disabled:!p,onClick:()=>{(()=>{try{"edit"===d?(t.pages[c].sections[l].label=p,t.pages[c].sections[l].isExpanded=E):t.pages[c]?.sections?.push({label:p,isExpanded:E,questions:[]}),n({...t}),m(""),(0,o.showSnackbar)({title:u("success","Success!"),kind:"success",isLowContrast:!0,subtitle:"edit"===d?u("sectionEdited","Section edited"):u("sectionCreated","New section created")})}catch(e){e instanceof Error&&(0,o.showSnackbar)({title:"edit"===d?u("errorCreatingSection","Error creating section"):u("errorEditingSection","Error editing section"),kind:"error",subtitle:e?.message})}})(),e()}},i().createElement("span",null,u("save","Save")))))}}}]);
1
+ "use strict";(globalThis.webpackChunk_openmrs_esm_form_builder_app=globalThis.webpackChunk_openmrs_esm_form_builder_app||[]).push([["4948"],{87375(e,t,n){n.r(t),n.d(t,{default:()=>c});var a=n(47499),i=n.n(a),s=n(58779),r=n(14968),o=n(23365);let c=({closeModal:e,schema:t,onSchemaChange:n,pageIndex:c,sectionIndex:l,modalType:d})=>{let{t:u}=(0,s.useTranslation)(),[p,m]=(0,a.useState)("edit"===d?t.pages[c].sections[l].label:""),[E,b]=(0,a.useState)("edit"===d?t.pages[c].sections[l].isExpanded:"true");return i().createElement(i().Fragment,null,i().createElement(r.ModalHeader,{closeModal:e,title:"edit"===d?u("editSection","Edit section"):u("createNewSection","Create a new section")}),i().createElement(r.Form,{onSubmit:e=>e.preventDefault()},i().createElement(r.ModalBody,null,i().createElement(r.FormGroup,{legendText:""},i().createElement(r.TextInput,{id:"sectionTitle",labelText:u("enterSectionTitle","Enter a section title"),value:p,onChange:e=>m(e.target.value),style:{marginBottom:"16px"}}),i().createElement(r.Checkbox,{id:"isExpanded",checked:"true"===E,labelText:u("expandedSection","Keep section expanded"),onChange:(e,{checked:t})=>{b(!0===t?"true":"false")},"data-testid":"keep-section-expanded-checkbox"})))),i().createElement(r.ModalFooter,null,i().createElement(r.Button,{onClick:e,kind:"secondary"},u("cancel","Cancel")),i().createElement(r.Button,{disabled:!p,onClick:()=>{(()=>{try{"edit"===d?(t.pages[c].sections[l].label=p,t.pages[c].sections[l].isExpanded=E):t.pages[c]?.sections?.push({label:p,isExpanded:E,questions:[]}),n({...t}),m(""),(0,o.showSnackbar)({title:u("success","Success!"),kind:"success",isLowContrast:!0,subtitle:"edit"===d?u("sectionEdited","Section edited"):u("sectionCreated","New section created")})}catch(e){e instanceof Error&&(0,o.showSnackbar)({title:"edit"===d?u("errorCreatingSection","Error creating section"):u("errorEditingSection","Error editing section"),kind:"error",subtitle:e?.message})}})(),e()}},i().createElement("span",null,u("save","Save")))))}}}]);
package/dist/5543.js CHANGED
@@ -1 +1 @@
1
- "use strict";(globalThis.webpackChunk_openmrs_esm_form_builder_app=globalThis.webpackChunk_openmrs_esm_form_builder_app||[]).push([["5543"],{79140(e,t,a){a.d(t,{S:()=>o});var n=a(66148),r=a.n(n),l=a(46718);let o=e=>{let t=e?.resources?.find(({name:e})=>"JSON schema"===e)?.valueReference,a=e&&e?.resources?.length>0&&t,n=`${l.restBaseUrl}/clobdata/${t}`,{data:o,error:s,isLoading:i,isValidating:c,mutate:d}=r()(a?n:null,l.openmrsFetch);return{clobdata:o?.data,clobdataError:s,isLoadingClobdata:i,isValidatingClobdata:c,mutate:d}}},6916(e,t,a){a.d(t,{m:()=>o});var n=a(66148),r=a.n(n),l=a(46718);let o=e=>{let t=`${l.restBaseUrl}/form/${e}?v=full`,{data:a,error:n,isLoading:o,isValidating:s,mutate:i}=r()(e?t:null,l.openmrsFetch);return{form:a?.data,formError:n,isLoadingForm:o,isValidatingForm:s,mutate:i}}},70243(e,t,a){a.d(t,{h:()=>o});var n=a(73391),r=a.n(n),l=a(46718);function o(){let e=`${l.restBaseUrl}/form?v=custom:(uuid,name,encounterType:(uuid,name),version,published,retired,resources:(uuid,name,dataType,valueReference))&includeAll=true`,{data:t,error:a,isValidating:n,mutate:o}=r()(e,l.openmrsFetch);return{forms:t?.data?.results??[],error:a,isLoading:!t&&!a,isValidating:n,mutate:o}}},70721(e,t,a){a.d(t,{Rv:()=>_,UY:()=>u,Vb:()=>s,_I:()=>i,b4:()=>m,i6:()=>l,kb:()=>d,o8:()=>o,wi:()=>c,yI:()=>r});var n=a(46718);async function r(e){return await (0,n.openmrsFetch)(`${n.restBaseUrl}/clobdata/${e}`,{method:"DELETE",headers:{"Content-Type":"application/json"}})}async function l(e){return await (0,n.openmrsFetch)(`${n.restBaseUrl}/form/${e}`,{method:"DELETE",headers:{"Content-Type":"application/json"}})}async function o(e,t){return await (0,n.openmrsFetch)(`${n.restBaseUrl}/form/${e}/resource/${t}`,{method:"DELETE",headers:{"Content-Type":"application/json"}})}async function s(e){let t=new Blob([JSON.stringify(e)],{type:"application/json"}),a=new FormData;a.append("file",t);let r=await window.fetch(`${window.openmrsBase}${n.restBaseUrl}/clobdata`,{body:a,method:"POST"});if(!r.ok)throw Error(`Schema upload failed (status ${r.status})`);return r.text()}async function i(e,t){return await (0,n.openmrsFetch)(`${n.restBaseUrl}/form/${e}/resource`,{method:"POST",headers:{"Content-Type":"application/json"},body:{name:"JSON schema",dataType:"AmpathJsonSchema",valueReference:t}})}async function c(e,t,a,r,l){let o=new AbortController;return await (0,n.openmrsFetch)(`${n.restBaseUrl}/form/${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:{name:t,version:a,description:r,encounterType:{uuid:l}},signal:o.signal})}async function d(e,t,a,r,l){let o=new AbortController,s={name:e,version:t,published:a??!1,description:r??""};return l&&(s.encounterType=l),(await (0,n.openmrsFetch)(`${n.restBaseUrl}/form`,{method:"POST",headers:{"Content-Type":"application/json"},body:s,signal:o.signal})).data}async function u(e){return await (0,n.openmrsFetch)(`${n.restBaseUrl}/form/${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:{published:!0}})}async function m(e){return await (0,n.openmrsFetch)(`${n.restBaseUrl}/form/${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:{published:!1}})}async function _(e){return await (0,n.openmrsFetch)(`${n.restBaseUrl}/form/${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:{deleted:"false"}})}},16316(e,t,a){a.r(t),a.d(t,{default:()=>eD});var n=a(47499),r=a.n(n),l=a(84976),o=a(47767),s=a(58779),i=a(14968),c=a(63654),d=a(40771),u=a(55576),m=a(92137),_=a(73391),p=a(46718);let b=({width:e="64",height:t="64"})=>r().createElement("svg",{width:e,height:t,viewBox:"0 0 64 64"},r().createElement("title",null,"Empty data illustration"),r().createElement("g",{fill:"none",fillRule:"evenodd"},r().createElement("path",{d:"M38.133 13.186H21.947c-.768.001-1.39.623-1.39 1.391V50.55l-.186.057-3.97 1.216a.743.743 0 01-.927-.493L3.664 12.751a.742.742 0 01.492-.926l6.118-1.874 17.738-5.43 6.119-1.873a.741.741 0 01.926.492L38.076 13l.057.186z",fill:"#F4F4F4"}),r().createElement("path",{d:"M41.664 13L38.026 1.117A1.576 1.576 0 0036.056.07l-8.601 2.633-17.737 5.43-8.603 2.634a1.578 1.578 0 00-1.046 1.97l12.436 40.616a1.58 1.58 0 001.969 1.046l5.897-1.805.185-.057v-.194l-.185.057-5.952 1.822a1.393 1.393 0 01-1.737-.923L.247 12.682a1.39 1.39 0 01.923-1.738L9.772 8.31 27.51 2.881 36.112.247a1.393 1.393 0 011.737.923L41.47 13l.057.186h.193l-.057-.185z",fill:"#8D8D8D"}),r().createElement("path",{d:"M11.378 11.855a.836.836 0 01-.798-.59L9.385 7.361a.835.835 0 01.554-1.042l16.318-4.996a.836.836 0 011.042.554l1.195 3.902a.836.836 0 01-.554 1.043l-16.318 4.995a.831.831 0 01-.244.037z",fill:"#C6C6C6"}),r().createElement("circle",{fill:"#C6C6C6",cx:17.636,cy:2.314,r:1.855}),r().createElement("circle",{fill:"#FFF",fillRule:"nonzero",cx:17.636,cy:2.314,r:1.175}),r().createElement("path",{d:"M55.893 53.995H24.544a.79.79 0 01-.788-.789V15.644a.79.79 0 01.788-.788h31.349a.79.79 0 01.788.788v37.562a.79.79 0 01-.788.789z",fill:"#F4F4F4"}),r().createElement("path",{d:"M41.47 13H21.948a1.579 1.579 0 00-1.576 1.577V52.4l.185-.057V14.577c.001-.768.623-1.39 1.391-1.39h19.581L41.471 13zm17.02 0H21.947a1.579 1.579 0 00-1.576 1.577v42.478c0 .87.706 1.576 1.576 1.577H58.49a1.579 1.579 0 001.576-1.577V14.577a1.579 1.579 0 00-1.576-1.576zm1.39 44.055c0 .768-.622 1.39-1.39 1.392H21.947c-.768-.001-1.39-.624-1.39-1.392V14.577c0-.768.622-1.39 1.39-1.39H58.49c.768 0 1.39.622 1.39 1.39v42.478z",fill:"#8D8D8D"}),r().createElement("path",{d:"M48.751 17.082H31.686a.836.836 0 01-.835-.835v-4.081c0-.46.374-.834.835-.835H48.75c.461 0 .834.374.835.835v4.08c0 .462-.374.835-.835.836z",fill:"#C6C6C6"}),r().createElement("circle",{fill:"#C6C6C6",cx:40.218,cy:9.755,r:1.855}),r().createElement("circle",{fill:"#FFF",fillRule:"nonzero",cx:40.218,cy:9.755,r:1.13}))),f=function(){let{t:e}=(0,s.useTranslation)(),t="tablet"===(0,p.useLayoutType)();return r().createElement(i.Layer,null,r().createElement(i.Tile,{className:"-esm-form-builder__empty-state__tile___jF73w"},r().createElement("div",{className:t?"-esm-form-builder__empty-state__tabletHeading___DPyKR":"-esm-form-builder__empty-state__desktopHeading___Z-bpb"},r().createElement("h4",null,e("forms","Forms"))),r().createElement(b,null),r().createElement("p",{className:"-esm-form-builder__empty-state__content___ET3co"},e("noFormsToDisplay","There are no forms to display.")),r().createElement("p",{className:"-esm-form-builder__empty-state__action___tQQy9"},r().createElement(i.Link,{onClick:()=>(0,p.navigate)({to:`${window.spaBase}/form-builder/new`})},e("createNewForm","Create a new form")))))},h=({error:e})=>{let{t}=(0,s.useTranslation)(),a="tablet"===(0,p.useLayoutType)();return r().createElement(i.Layer,null,r().createElement(i.Tile,{className:"-esm-form-builder__error-state__tile___Ai4Wv"},r().createElement("div",{className:a?"-esm-form-builder__error-state__tabletHeading___HslHm":"-esm-form-builder__error-state__desktopHeading___8hxit"},r().createElement("h4",null,t("forms","Forms"))),r().createElement("p",{className:"-esm-form-builder__error-state__errorMessage___RI0uK"},t("error","Error"),": ",e?.message),r().createElement("p",{className:"-esm-form-builder__error-state__errorCopy___CK6PT"},t("errorCopy","Sorry, there was a problem displaying this information. You can try to reload this page, or contact the site administrator and quote the error code above."))))};var g=a(97136),E=a(83335);let y=()=>r().createElement("svg",{height:"64",width:"64",viewBox:"0 0 32 32",xmlns:"http://www.w3.org/2000/svg",xmlSpace:"preserve",fillRule:"evenodd",clipRule:"evenodd",strokeLinejoin:"round",strokeMiterlimit:"2"},r().createElement("path",{d:"M27 31.36H8a.36.36 0 0 1-.36-.36v-1.64H6a.36.36 0 0 1-.36-.36v-1.64H5a.36.36 0 0 1-.36-.36V3A.36.36 0 0 1 5 2.64h4.64V2a.36.36 0 0 1 .36-.36h1.64V1A.36.36 0 0 1 12 .64h4a.36.36 0 0 1 .36.36v.64H18a.36.36 0 0 1 .36.36v.64H23a.36.36 0 0 1 .36.36v1.64H25a.36.36 0 0 1 .36.36v1.64H27a.36.36 0 0 1 .36.36v24a.36.36 0 0 1-.36.36Z",fill:"#d2e5e5"}),r().createElement("path",{d:"M8.36 30.64h18.28V7.36h-1.28V29a.36.36 0 0 1-.36.36H8.36v1.28Z",fill:"#8abab8"}),r().createElement("path",{d:"M5.36 26.64h17.28V3.36h-4.28V4a.36.36 0 0 1-.36.36h-8A.36.36 0 0 1 9.64 4v-.64H5.36v23.28Z",fill:"#8abab8"}),r().createElement("path",{fill:"#fff",d:"M7.5 12.64h13v.72h-13zM7.5 8.64h13v.72h-13zM7.5 20.64h13v.72h-13zM7.5 16.64h13v.72h-13z"}),r().createElement("path",{d:"M10.36 3.64h7.28V2.36H16a.36.36 0 0 1-.36-.36v-.64h-3.28V2a.36.36 0 0 1-.36.36h-1.64v1.28ZM6.36 28.64h18.28V5.36h-1.28V27a.36.36 0 0 1-.36.36H6.36v1.28Z",fill:"#8abab8"})),w={header:"-esm-form-builder__header__header___SDlCx","left-justified-items":"-esm-form-builder__header__left-justified-items___yMMyK","right-justified-items":"-esm-form-builder__header__right-justified-items___VFsPg","page-name":"-esm-form-builder__header__page-name___Kd8pu","page-labels":"-esm-form-builder__header__page-labels___7bzGg","date-and-location":"-esm-form-builder__header__date-and-location___bnzV2",userContainer:"-esm-form-builder__header__userContainer___7ofa0",value:"-esm-form-builder__header__value___Ja9MH",middot:"-esm-form-builder__header__middot___9yR-4"},v=({title:e})=>{let{t}=(0,s.useTranslation)(),a=(0,p.useSession)(),n=a?.sessionLocation?.display;return r().createElement("div",{className:w.header},r().createElement("div",{className:w["left-justified-items"]},r().createElement(y,null),r().createElement("div",{className:w["page-labels"]},r().createElement("p",null,t("formBuilder","Form builder")),r().createElement("p",{className:w["page-name"]},e))),r().createElement("div",{className:w["right-justified-items"]},r().createElement("div",{className:w.userContainer},r().createElement("p",null,a?.user?.person?.display),r().createElement(u.rs,{size:16,className:w.userIcon})),r().createElement("div",{className:w["date-and-location"]},r().createElement(g.aZ,{size:16}),r().createElement("span",{className:w.value},n),r().createElement("span",{className:w.middot},"\xb7"),r().createElement(E.Vv,{size:16}),r().createElement("span",{className:w.value},(0,p.formatDate)(new Date,{mode:"standard"})))))};var C=a(70721);let S=({totalItems:e,pageSize:t,onPageNumberChange:a,pageNumber:l,currentItems:o})=>{let{itemsDisplayed:c,pageSizes:d}=function(e,t,a,r){let{t:l}=(0,s.useTranslation)(),o=(0,n.useMemo)(()=>{let a=Math.ceil(t/e);return isNaN(a)&&(a=0),[...Array(a).keys()].map(t=>(t+1)*e)},[e,t]),i=(0,n.useMemo)(()=>e>t?`${t} / ${t}`:e*a>t?`${e*(a-1)+r} / ${t}`:`${e*a} / ${t}`,[e,t,a,r]);return{pageSizes:o,itemsDisplayed:`${i} ${l("items"," items")}`}}(t,e,l,o),u="tablet"===(0,p.useLayoutType)();return r().createElement(r().Fragment,null,e>0&&r().createElement("div",{className:u?"-esm-form-builder__pagination__tablet___uSPe-":"-esm-form-builder__pagination__desktop___Spb8M"},r().createElement("div",null,c),r().createElement(i.Pagination,{className:"-esm-form-builder__pagination__pagination___G81qx",page:l,pageSize:t,pageSizes:d,totalItems:e,onChange:a,size:u?"lg":"sm"})))};var k=a(79140),N=a(70243);let T={container:"-esm-form-builder__dashboard__container___ExLMu",backgroundDataFetchingIndicator:"-esm-form-builder__dashboard__backgroundDataFetchingIndicator___wNwb7",flexContainer:"-esm-form-builder__dashboard__flexContainer___57jX7",toolbarWrapper:"-esm-form-builder__dashboard__toolbarWrapper___uws3q",headerContainer:"-esm-form-builder__dashboard__headerContainer___3G6kP",searchbox:"-esm-form-builder__dashboard__searchbox___HEfNy",tableToolbar:"-esm-form-builder__dashboard__tableToolbar___P0O1U",link:"-esm-form-builder__dashboard__link___GD54A",table:"-esm-form-builder__dashboard__table___PB2ul",tableContainer:"-esm-form-builder__dashboard__tableContainer___xZZPN",filterContainer:"-esm-form-builder__dashboard__filterContainer___-NhmA",filterDropdown:"-esm-form-builder__dashboard__filterDropdown___TR7KF",content:"-esm-form-builder__dashboard__content___A0rW1",tileContainer:"-esm-form-builder__dashboard__tileContainer___HQWcm",tile:"-esm-form-builder__dashboard__tile___TerAk",tileContent:"-esm-form-builder__dashboard__tileContent___LQhc5",warningMessage:"-esm-form-builder__dashboard__warningMessage___C3SE2",actionButtons:"-esm-form-builder__dashboard__actionButtons___t3tKH"};function q({condition:e,invertTone:t=!1}){let{t:a}=(0,s.useTranslation)();return e?r().createElement(i.Tag,{type:t?"red":"green",size:"md",title:"Clear Filter","data-testid":"yes-tag"},a("yes","Yes")):r().createElement(i.Tag,{type:"cool-gray",size:"md",title:"Clear Filter","data-testid":"no-tag"},a("no","No"))}function B({form:e,mutate:t,responsiveSize:a,t:l}){let{clobdata:o}=(0,k.S)(e),s=e?.resources,[m,_]=(0,n.useState)(!1),b=(0,n.useMemo)(()=>new Blob([JSON.stringify(o,null,2)],{type:"application/json"}),[o]),f=(0,n.useCallback)(async a=>{try{let n=await (0,C.i6)(a);204===n.status&&((0,p.showSnackbar)({title:l("formRetired","Form retired"),kind:"success",isLowContrast:!0,subtitle:l("formRetiredMessage",'The form "{{- formName}}" has been retired successfully',{formName:e.name})}),await t())}catch(e){e instanceof Error&&(0,p.showSnackbar)({title:l("errorRetiringForm","Error retiring form"),kind:"error",subtitle:e?.message})}finally{_(!1)}},[e.name,t,l]),h=(0,n.useCallback)(async()=>{try{let a=await (0,C.Rv)(e.uuid);200===a.status&&((0,p.showSnackbar)({title:l("formRestored","Form restored"),kind:"success",isLowContrast:!0,subtitle:l("formRestoredMessage",'The form "{{- formName}}" has been restored',{formName:e.name})}),await t())}catch(e){e instanceof Error&&(0,p.showSnackbar)({title:l("errorRestoringForm","Error restoring form"),kind:"error",subtitle:e?.message})}},[e.uuid,e.name,t,l]),g=(0,n.useCallback)(()=>{let t=(0,p.showModal)("delete-form-modal",{closeModal:()=>t(),isDeletingForm:m,onDeleteForm:()=>f(e.uuid)})},[e.uuid,f,m]);return r().createElement("div",{className:T.actionButtons},0!=s.length&&e?.resources[0]?r().createElement(r().Fragment,null,r().createElement(()=>r().createElement(i.IconButton,{enterDelayMs:300,kind:"ghost",label:l("editSchema","Edit schema"),onClick:()=>(0,p.navigate)({to:`${window.spaBase}/form-builder/edit/${e.uuid}`}),size:a},r().createElement(d.ff,null)),null),r().createElement(()=>r().createElement("a",{download:`${e?.name}.json`,href:window.URL.createObjectURL(b)},r().createElement(i.IconButton,{enterDelayMs:300,kind:"ghost",label:l("downloadSchema","Download schema"),size:a},r().createElement(d.f5,null))),null)):r().createElement(()=>r().createElement(i.IconButton,{enterDelayMs:300,label:l("import","Import"),kind:"ghost",onClick:()=>(0,p.navigate)({to:`${window.spaBase}/form-builder/edit/${e.uuid}`}),size:a},r().createElement(c.t0,null)),null),e.retired?r().createElement(()=>r().createElement(i.IconButton,{enterDelayMs:300,kind:"ghost",label:l("restoreSchema","Restore form"),onClick:h,size:a},r().createElement(u.Vn,null)),null):r().createElement(()=>r().createElement(i.IconButton,{enterDelayMs:300,kind:"ghost",label:l("retireSchema","Retire schema"),onClick:g,size:a},r().createElement(u.zH,null)),null))}function I({forms:e,isValidating:t,mutate:a,t:l}){let o="tablet"===(0,p.useLayoutType)(),s=o?"lg":"sm",[c,d]=(0,n.useState)("Active"),[u,b]=(0,n.useState)(""),f=(0,n.useMemo)(()=>c&&"All"!==c?"Active"===c?e.filter(e=>!e.retired):"Published"===c?e.filter(e=>e.published&&!e.retired):"Unpublished"===c?e.filter(e=>!e.published&&!e.retired):"Retired"===c?e.filter(e=>e.retired):e:e,[c,e]),h=[{header:l("name","Name"),key:"name",isSortable:!0},{header:l("version","Version"),key:"version",isSortable:!0},{header:l("published","Published"),key:"published",isSortable:!0},{header:l("retired","Retired"),key:"retired",isSortable:!0},{header:l("schemaActions","Schema actions"),key:"actions",isSortable:!1}],g=(0,n.useMemo)(()=>u&&""!==u.trim()?f.filter(e=>e.name.toLowerCase().includes(u.toLowerCase())):f,[u,f]),{paginated:E,goTo:y,results:w,currentPage:v}=(0,p.usePagination)(g,10),C=w?.map(e=>({id:e?.uuid,name:e.name,version:e.version,published:e.published,retired:e.retired,actions:e.uuid})),k=(0,n.useMemo)(()=>new Map(w?.map(e=>[e.uuid,e])??[]),[w]),N=(0,n.useCallback)(e=>{y(1),b(e.target.value)},[y,b]);return r().createElement(r().Fragment,null,r().createElement("div",{className:T.flexContainer},r().createElement("div",{className:T.filterContainer},r().createElement(i.Dropdown,{className:T.filterDropdown,id:"publishStatusFilter",initialSelectedItem:"Active",label:"",titleText:l("filterBy","Filter by")+":",size:s,type:"inline",items:["Active","All","Published","Unpublished","Retired"],onChange:({selectedItem:e})=>d(e)})),r().createElement("div",{className:T.backgroundDataFetchingIndicator},r().createElement("span",null,t?r().createElement(i.InlineLoading,null):null))),r().createElement(i.DataTable,{rows:C,headers:h,size:o?"lg":"sm",useZebraStyles:!0,isSortable:!0},({rows:e,headers:t,getTableProps:n,getHeaderProps:o,getRowProps:c})=>r().createElement(r().Fragment,null,r().createElement(i.TableContainer,{className:T.tableContainer,"data-testid":"forms-table"},r().createElement("div",{className:T.toolbarWrapper},r().createElement(i.TableToolbar,{className:T.tableToolbar,size:s},r().createElement(i.TableToolbarContent,{className:T.headerContainer},r().createElement(i.TableToolbarSearch,{expanded:!0,size:s,className:T.searchbox,onChange:N,placeholder:l("searchThisList","Search this list")}),r().createElement(i.Button,{kind:"primary",iconDescription:l("createNewForm","Create a new form"),size:s,onClick:()=>(0,p.navigate)({to:`${window.spaBase}/form-builder/new`})},r().createElement(m.OM,{size:16,style:{marginRight:"0.5rem"},"aria-hidden":!0}),l("createNewForm","Create a new form"))))),r().createElement(i.Table,{...n(),className:T.table},r().createElement(i.TableHead,null,r().createElement(i.TableRow,null,t.map(e=>{let t=e.isSortable;return r().createElement(i.TableHeader,o({header:e,isSortable:t}),e.header)}))),r().createElement(i.TableBody,null,e.map(e=>r().createElement(i.TableRow,{key:e.id,...c({row:e}),"data-testid":`form-row-${e.id}`},e.cells.map(e=>r().createElement(i.TableCell,{key:e.id},(e=>{switch(k.get(String(e.value))??k.get(e.id.split(":")[0]),e.info.header){case"name":{let t=k.get(e.id.split(":")[0]);return r().createElement(p.ConfigurableLink,{className:T.link,to:"${openmrsSpaBase}/form-builder/edit/${formUuid}",templateParams:{formUuid:t?.uuid},onMouseEnter:()=>t&&void(0,_.preload)(`${p.restBaseUrl}/form/${t.uuid}?v=full`,p.openmrsFetch)},String(e.value))}case"published":return r().createElement(q,{condition:!!e.value});case"retired":return r().createElement(q,{condition:!!e.value,invertTone:!0});case"actions":{let t=k.get(String(e.value));return t?r().createElement(B,{form:t,mutate:a,responsiveSize:s,t:l}):null}default:return String(e.value)}})(e)))))))),0===e.length?r().createElement("div",{className:T.tileContainer},r().createElement(i.Tile,{className:T.tile},r().createElement("div",{className:T.tileContent},r().createElement("p",{className:T.content},l("noMatchingFormsToDisplay","No matching forms to display")),r().createElement("p",{className:T.helper},l("checkFilters","Check the filters above"))))):null)),E&&r().createElement(S,{currentItems:w.length,totalItems:g.length,onPageNumberChange:({page:e})=>{y(e)},pageNumber:v,pageSize:10}))}let x=()=>{let{t:e}=(0,s.useTranslation)(),{forms:t,error:a,isLoading:n,isValidating:l,mutate:o}=(0,N.h)(),{showSchemaSaveWarning:c}=(0,p.useConfig)();return r().createElement("main",null,r().createElement(v,{title:e("home","Home")}),r().createElement("div",{className:T.container},a?r().createElement(h,{error:a}):n?r().createElement(i.DataTableSkeleton,{role:"progressbar"}):0===t.length?r().createElement(f,null):r().createElement(r().Fragment,null,c&&r().createElement(i.InlineNotification,{className:T.warningMessage,kind:"info",lowContrast:!0,title:e("schemaSaveWarningMessage","This is a demo server and can't be relied upon to save your schemas permanently. To avoid losing your work, please save your schemas to your local machine. Alternatively, upload your schema to the distro repo to have it persisted across server resets.")}),r().createElement(I,{forms:t,isValidating:l,mutate:o,t:e}))))};var F=a(46942),M=a.n(F),L=a(49564),D=a(54535);let O=async(e,t,a)=>{let n=[],r=[];if(e){let l="string"==typeof e?JSON.parse(e):e,o=[];l.pages?.forEach(e=>e.sections?.forEach(e=>e.questions?.forEach(e=>{o.push($(e,n,t,r,a),z(e,n,a),R(e,n,a),A(e,n,a)),"obsGroup"===e.type&&e?.questions?.forEach(e=>o.push($(e,n,t,r,a),z(e,n,a),A(e,n,a)))}))),await Promise.all(o)}return[n,r]},$=async(e,t,a,n,r)=>{let l=e.questionOptions.conceptMappings,o=e.questionOptions.concept?e.questionOptions.concept:l?.length?l.map(e=>`${e.type}:${e.value}`).join(","):"";if(o)try{let{data:l}=await (0,p.openmrsFetch)(`${p.restBaseUrl}/concept?references=${o}&v=custom:(uuid,display,datatype,answers,conceptMappings:(conceptReferenceTerm:(conceptSource:(name),code)))`);if(l.results.length){let[o]=l.results;"Boolean"===o.datatype.name&&e.questionOptions.answers?.forEach(a=>{"cf82933b-3f3f-45e7-a5ab-5d31aaee3da3"!==a.concept&&"488b58ff-64f5-4f8a-8979-fa79940b1594"!==a.concept&&t.push({errorMessage:r("booleanConceptNonBooleanAnswer",'Concept "{{concept}}" of type "boolean" has a non-boolean answer "{{answer}}"',{concept:e.questionOptions.concept,answer:a.label}),field:e})}),"Coded"===o.datatype.name&&e.questionOptions.answers?.forEach(t=>{o.answers.some(e=>e.uuid===t.concept)||n.push({warningMessage:r("answerNotInResponseAnswers",'Answer: "{{label}}" - "{{concept}}" does not exist in the response answers but exists in the form',{label:t.label,concept:t.concept}),field:e})}),U(e,o,t,a,r)}else t.push({errorMessage:r("conceptNotFound",'Concept "{{concept}}" not found',{concept:e.questionOptions.concept}),field:e})}catch(e){console.error(e)}else"workspace-launcher"!==e.questionOptions.rendering&&"personAttribute"!==e.type&&t.push({errorMessage:r("noUuid","No UUID"),field:e})},R=async(e,t,a)=>{if("patientIdentifier"!==e.type||e.questionOptions.identifierType||t.push({errorMessage:a("patientIdentifierTypeMissing","Patient identifier type missing in schema"),field:e}),e.questionOptions.identifierType)try{let{data:n}=await (0,p.openmrsFetch)(`${p.restBaseUrl}/patientidentifiertype/${e.questionOptions.identifierType}`);n||t.push({errorMessage:a("identifierTypeDoesNotExist","The identifier type does not exist"),field:e})}catch(n){console.error("Error fetching patient identifier:",n),t.push({errorMessage:a("identifierTypeDoesNotExist","The identifier type does not exist"),field:e})}},A=async(e,t,a)=>{let n=e.questionOptions.attributeType;if("personAttribute"===e.type&&!n)return void t.push({errorMessage:a("personAttributeTypeMissing","Person attribute type missing in schema"),field:e});if(n)try{let{data:r}=await (0,p.openmrsFetch)(`${p.restBaseUrl}/personattributetype/${n}`);r||t.push({errorMessage:a("personAttributeTypeDoesNotExist","The person attribute type does not exist"),field:e})}catch(n){console.error("Error fetching person attribute:",n),t.push({errorMessage:a("personAttributeTypeDoesNotExist","The person attribute type does not exist"),field:e})}},U=(e,t,a,n,r)=>{Object.prototype.hasOwnProperty.call(n,t.datatype.name)?n[t.datatype.name].includes(e.questionOptions.rendering)||a.push({errorMessage:r("datatypeMismatch",'{{concept}}: datatype "{{datatype}}" doesn\'t match control type "{{rendering}}"',{concept:e.questionOptions.concept,datatype:t.datatype.name,rendering:e.questionOptions.rendering}),field:e}):a.push({errorMessage:r("untrackedDatatype",'Untracked datatype "{{datatype}}"',{datatype:t.datatype.name}),field:e})},z=async(e,t,a)=>{let n=e.questionOptions.answers;if(n?.length)for(let e of n){let n=e.concept?e.concept:e.conceptMappings?.length?e.conceptMappings.map(e=>`${e.type}:${e.value}`).join(","):"";try{(await (0,p.openmrsFetch)(`${p.restBaseUrl}/concept?references=${n}&v=custom:(uuid,display,datatype,conceptMappings:(conceptReferenceTerm:(conceptSource:(name),code)))`)).data.results.length||t.push({errorMessage:a("answerConceptNotFound",'Concept "{{concept}}" not found',{concept:e.concept}),field:e})}catch(e){console.error("Error fetching concept:",e)}}};var P=a(6916);let j="-esm-form-builder__action-buttons__spinner___0U3zu",V=function({isValidating:e,onFormValidation:t,schema:a,schemaErrors:l,setPublishedWithErrors:s,setValidationComplete:c,setValidationResponse:d,t:u}){let{formUuid:m}=(0,o.g)(),{form:_,mutate:b}=(0,P.m)(m),f=_?.resources?.some(({name:e})=>"JSON schema"===e),[h,g]=(0,n.useState)("idle"),[E,y]=(0,n.useState)(!1),w=(0,n.useRef)();(0,n.useEffect)(()=>()=>w.current?.(),[]);let{dataTypeToRenderingMap:v,enableFormValidation:S}=(0,p.useConfig)();async function k(){try{g("publishing"),await (0,C.UY)(_.uuid),(0,p.showSnackbar)({title:u("formPublished","Form published"),kind:"success",isLowContrast:!0,subtitle:`${_.name} `+u("formPublishedSuccessfully","form was published successfully")}),g("published"),await b()}catch(e){e instanceof Error&&((0,p.showSnackbar)({title:u("errorPublishingForm","Error publishing form"),kind:"error",subtitle:e?.message}),g("error"))}}async function N(){g("validateBeforePublishing");let[e]=await O(a,v,u);if(d(e),e.length){g("validated"),c(!0),s(!0);return}await k()}let T=(0,n.useCallback)(async()=>{g("unpublishing");try{await (0,C.b4)(_.uuid),g("unpublished"),(0,p.showSnackbar)({title:u("formUnpublished","Form unpublished"),kind:"success",isLowContrast:!0,subtitle:`${_.name} `+u("formUnpublishedSuccessfully","form was unpublished successfully")}),await b()}catch(e){e instanceof Error&&((0,p.showSnackbar)({title:u("errorUnpublishingForm","Error unpublishing form"),kind:"error",subtitle:e?.message}),g("error"))}},[_?.name,_?.uuid,b,u]),q=(0,n.useCallback)(()=>{let e=(0,p.showModal)("unpublish-form-modal",{closeModal:()=>e(),onUnpublishForm:T})},[T]);return r().createElement("div",{className:"-esm-form-builder__action-buttons__actionButtons___FIBsK"},r().createElement(i.Button,{disabled:!a||E,kind:"primary",onClick:()=>{w.current?.(),w.current=(0,p.showModal)("save-form-modal",{form:_,schema:a,formUuid:m,closeModal:()=>w.current?.(),onSavingChange:y})}},u("saveForm","Save form")),r().createElement(r().Fragment,null,_&&S&&r().createElement(i.Button,{kind:"tertiary",onClick:t,disabled:e},e?r().createElement(i.InlineLoading,{className:j,description:u("validating","Validating")+"..."}):r().createElement("span",null,u("validateForm","Validate form"))),_&&!_.published?S?r().createElement(i.Button,{kind:"secondary",onClick:N,disabled:!f||"validateBeforePublishing"===h||l.length>0},"validateBeforePublishing"===h?r().createElement(i.InlineLoading,{className:j,description:u("validating","Validating")+"..."}):r().createElement("span",null,u("validateAndPublishForm","Validate and publish form"))):r().createElement(i.Button,{kind:"secondary",onClick:k,disabled:!f||"publishing"===h||l.length>0},"publishing"!==h||_?.published?r().createElement("span",null,u("publishForm","Publish form")):r().createElement(i.InlineLoading,{className:j,description:u("publishing","Publishing")+"..."})):null,_&&_.published?r().createElement(i.Button,{kind:"danger--tertiary",onClick:q,disabled:"unpublishing"===h},u("unpublishForm","Unpublish form")):null))};var H=a(31397);function Q({value:e}){let{t}=(0,s.useTranslation)(),a=(0,n.useCallback)(()=>{navigator.clipboard.writeText(e)},[e]);return r().createElement("span",{style:{display:"inline-flex",alignItems:"center",gap:"0.25rem"}},r().createElement("span",null,e),r().createElement(i.IconButton,{kind:"ghost",size:"sm",label:t("copyToClipboard","Copy to clipboard"),onClick:a},r().createElement(H.QR,null)))}let J=({form:e})=>{let{t}=(0,s.useTranslation)();return r().createElement(i.StructuredListWrapper,{isCondensed:!0,selection:!1},r().createElement(i.StructuredListBody,null,r().createElement(i.StructuredListRow,null,r().createElement(i.StructuredListCell,null,r().createElement("b",null,t("formName","Form Name"))),r().createElement(i.StructuredListCell,null,e.name)),r().createElement(i.StructuredListRow,null,r().createElement(i.StructuredListCell,null,t("description","Description")),r().createElement(i.StructuredListCell,null,e.description)),r().createElement(i.StructuredListRow,null,r().createElement(i.StructuredListCell,null,t("formUuid","Form UUID")),r().createElement(i.StructuredListCell,null,r().createElement(Q,{value:e.uuid}))),r().createElement(i.StructuredListRow,null,r().createElement(i.StructuredListCell,null,t("version","Version")),r().createElement(i.StructuredListCell,null,e.version)),r().createElement(i.StructuredListRow,null,r().createElement(i.StructuredListCell,null,t("encounterType","Encounter Type")),r().createElement(i.StructuredListCell,null,e.encounterType?.uuid?r().createElement(Q,{value:e.encounterType.uuid}):t("noEncounterType","None"))),r().createElement(i.StructuredListRow,null,r().createElement(i.StructuredListCell,null,t("createdBy","Created By")),r().createElement(i.StructuredListCell,null,`${e?.auditInfo?.creator?.display??t("unknownUser","Unknown")} on ${(0,p.formatDatetime)((0,p.parseDate)(e?.auditInfo?.dateCreated))}`)),r().createElement(i.StructuredListRow,null,r().createElement(i.StructuredListCell,null,t("lastEditedBy","Last Edited By")),r().createElement(i.StructuredListCell,null,e?.auditInfo?.dateChanged?`${e?.auditInfo?.changedBy?.display??t("unknownUser","Unknown")} on ${(0,p.formatDatetime)((0,p.parseDate)(e?.auditInfo?.dateChanged))}`:r().createElement("span",{"aria-label":t("uneditedFormMsg","This form has never been edited"),style:{color:"var(--cds-text-placeholder)"}},"—"))),r().createElement(i.StructuredListRow,null,r().createElement(i.StructuredListCell,null,t("published","Published")),r().createElement(i.StructuredListCell,null,e.published?t("yes","Yes"):t("no","No"))),r().createElement(i.StructuredListRow,null,r().createElement(i.StructuredListCell,null,t("retired","Retired")),r().createElement(i.StructuredListCell,null,e.retired?t("yes","Yes"):t("no","No")))))};var K=a(47665),G=a(22958);let Z="-esm-form-builder__form-renderer__helperText___dF96R",W="-esm-form-builder__form-renderer__heading___qZZcH";function X({error:e}){let{t}=(0,s.useTranslation)();return r().createElement(i.Tile,{className:"-esm-form-builder__form-renderer__errorStateTile___O5Lt7"},r().createElement("h4",{className:W},t("problemLoadingPreview","There was a problem loading the form preview")),r().createElement("p",{className:Z},r().createElement("pre",null,e.message)),r().createElement("p",{className:Z},t("fixSchemaAndRender",'Fix the error in the Schema Editor and click "Render changes" to retry.')))}let Y=({isLoading:e,schema:t})=>{let{t:a}=(0,s.useTranslation)(),l={encounterType:"",name:"Test Form",pages:[{label:"Test Page",sections:[{label:"Test Section",isExpanded:"true",questions:[{label:"Test Question",type:"obs",questionOptions:{rendering:"text",concept:"xxxx"},id:"testQuestion"}]}]}],processor:"EncounterFormProcessor",referencedForms:[],uuid:"xxx"},[o,c]=(0,n.useState)(l);return((0,n.useEffect)(()=>{t&&c(t)},[t]),e)?r().createElement("div",{className:"-esm-form-builder__form-renderer__loadingContainer___5-hoT"},r().createElement(i.InlineLoading,{className:"-esm-form-builder__form-renderer__loader___oXGC4",description:a("loading","Loading")+"..."})):r().createElement("div",{className:"-esm-form-builder__form-renderer__container___qAa7V"},!t&&r().createElement(i.Tile,{className:"-esm-form-builder__form-renderer__emptyStateTile___lbKY4"},r().createElement("h4",{className:W},a("noSchemaLoaded","No schema loaded")),r().createElement("p",{className:Z},a("formRendererHelperText","Load a form schema in the Schema Editor to the left to see it rendered here by the Form Engine."))),t===o&&r().createElement(K.tH,{FallbackComponent:X,resetKeys:[o]},r().createElement(G.Tn,{formJson:o,mode:"enter",patientUUID:""})))};var ee=a(98668),et=a(43627),ea=a(29012);let en=({markdown:e})=>{let t=function(e,t){let a=Array.isArray(e)?e.join("\n"):e,n=a.length<=15?a:a.slice(0,15).trimEnd(),r=/[*_#]+$/;r.test(n)&&(n=n.replace(r,"").trimEnd());let l=n,o=[];for(let e of t){let t=l.indexOf(e),a=l.indexOf(e,t+e.length);-1!==t&&(-1===a?(o.push(e),l=l.replace(e,"")):l=l.replace(e,"").replace(e,""))}return n+o.reverse().join("")+(a.length>15?" ...":"")}(e,["***","**","*","__","_"]);return r().createElement(ea.o,{children:t,unwrapDisallowed:!0,allowedElements:["h1","h2","h3","h4","h5","h6","p","strong","em"]})},er="-esm-form-builder__draggable-question__collapseIcon___CymCK",el=({handleDuplicateQuestion:e,onSchemaChange:t,pageIndex:a,question:l,questionCount:o,questionIndex:c,schema:m,sectionIndex:_,subQuestionIndex:b,children:f})=>{let{t:h}=(0,s.useTranslation)(),[g,E]=(0,n.useState)(!0),y=(0,n.useCallback)(()=>{let e=(0,p.showModal)("question-modal",{formField:l,closeModal:()=>e(),onSchemaChange:t,schema:m,questionIndex:c,pageIndex:a,sectionIndex:_,subQuestionIndex:b})},[t,a,l,c,m,_,b]),w=(0,n.useCallback)(()=>{let e=(0,p.showModal)("delete-question-modal",{closeModal:()=>e(),pageIndex:a,sectionIndex:_,question:l,questionIndex:c,subQuestionIndex:b,onSchemaChange:t,schema:m})},[t,a,l,c,m,_,b]),{attributes:v,listeners:C,setNodeRef:S,active:k,isDragging:N,over:T,isOver:q}=(0,et.gl)({id:l.id,data:{type:null==b?"question":"obsQuestion",question:{handleDuplicateQuestion:e,onSchemaChange:t,pageIndex:a,sectionIndex:_,question:l,questionCount:o,questionIndex:c,subQuestionIndex:null!==b?b:null,schema:m}},disabled:o<=1&&null==b}),B=(0,n.useCallback)(()=>{N||(null!=b?e(l,a,_,c):e(l,a,_))},[e,N,l,a,_,c,b]);return r().createElement("div",{ref:S,className:M()("-esm-form-builder__draggable-question__question___1YGRp",{"-esm-form-builder__draggable-question__dragContainer___43qlJ":!0,"-esm-form-builder__draggable-question__dragContainerWhenDragging___Dybal":N,"-esm-form-builder__draggable-question__dropZone___QitMD":T?.id===l.id,"-esm-form-builder__draggable-question__droppable___ou3PG":k?.id===l.id})},r().createElement("div",{className:M()("-esm-form-builder__draggable-question__questionContainer___GDe3o",{"-esm-form-builder__draggable-question__obsGroup___eY5JM":l?.questions&&l?.questions.length>0}),onClick:()=>{l.questions&&E(!g)}},r().createElement("div",{className:"-esm-form-builder__draggable-question__iconAndName___mGiMs"},r().createElement("div",{ref:S,...v,...C},r().createElement(i.IconButton,{className:"-esm-form-builder__draggable-question__dragIcon___Iwqc-",enterDelayMs:T?6e3:300,label:h("dragToReorder","Drag to reorder"),kind:"ghost",size:"md"},r().createElement(d.sx,null))),r().createElement("p",{className:"-esm-form-builder__draggable-question__questionLabel___ThMqf"},"markdown"===l.questionOptions.rendering?r().createElement(en,{markdown:l.value}):l.label)),r().createElement("div",{className:"-esm-form-builder__draggable-question__buttonsContainer___Xonrc"},r().createElement(i.IconButton,{enterDelayMs:300,label:h("duplicateQuestion","Duplicate question"),kind:"ghost",onClick:B,size:"md"},r().createElement(H.QR,null)),r().createElement(i.IconButton,{enterDelayMs:300,label:h("editQuestion","Edit question"),kind:"ghost",onClick:y,size:"md"},r().createElement(d.ff,null)),r().createElement(i.IconButton,{enterDelayMs:300,label:h("deleteQuestion","Delete question"),kind:"ghost",onClick:w,size:"md"},r().createElement(u.zH,null)),l?.questions&&l?.questions.length>0&&r().createElement("span",{className:"-esm-form-builder__draggable-question__collapseIconWrapper___ayXXV"},g?r().createElement(p.ChevronDownIcon,{className:er,"aria-label":"Expand"}):r().createElement(p.ChevronUpIcon,{className:er,"aria-label":"Collapse"})))),l?.questions&&r().createElement("div",{className:M()("-esm-form-builder__draggable-question__obsQuestions___L7lQR",{"-esm-form-builder__draggable-question__hiddenAccordion___EFVwN":g,"-esm-form-builder__draggable-question__accordionContainer___fHVME":!g})},r().createElement(et.gB,{items:l.questions.map(e=>e.id)},f)))};var eo=a(54499),es=a(59184);let ei=({id:e,handleCancel:t,handleSave:a,value:l})=>{let{t:o}=(0,s.useTranslation)(),[c,d]=(0,n.useState)(l);return r().createElement(r().Fragment,null,r().createElement(i.TextInput,{id:e,labelText:"",value:c,onChange:e=>d(e.target.value)}),r().createElement("div",{className:"-esm-form-builder__value-editor__actionButtons___ZGibM"},r().createElement(i.Button,{size:"md",renderIcon:e=>r().createElement(eo.eM,{...e,size:16}),kind:"primary",onClick:()=>a(c)},o("saveButtonText","Save")),r().createElement(i.Button,{size:"md",renderIcon:e=>r().createElement(es.bm,{...e,size:16}),kind:"secondary",onClick:t},o("cancelButtonText","Cancel"))))},ec={schemaLabel:"-esm-form-builder__editable-value__schemaLabel___+x+E+",pageLabel:"-esm-form-builder__editable-value__pageLabel___qXcLD",sectionLabel:"-esm-form-builder__editable-value__sectionLabel___G8kBI"},ed=({elementType:e,id:t,value:a,onSave:l})=>{let{t:o}=(0,s.useTranslation)(),[c,u]=(0,n.useState)(!1),m=()=>{u(!1)};return c?r().createElement(ei,{handleCancel:m,handleSave:e=>{l(e),m()},id:t,value:a}):r().createElement(r().Fragment,null,r().createElement("h1",{className:ec[`${e}Label`]},a),r().createElement(i.IconButton,{enterDelayMs:300,kind:"ghost",label:o("editButton","Edit {{elementType}}",{elementType:e}),onClick:()=>u(!0),size:"md"},r().createElement(d.ff,null)))},eu={container:"-esm-form-builder__interactive-builder__container___qGI+m",editableFieldsContainer:"-esm-form-builder__interactive-builder__editableFieldsContainer___w-njG",addQuestionButton:"-esm-form-builder__interactive-builder__addQuestionButton___HfTF8",header:"-esm-form-builder__interactive-builder__header___K+III",sectionLabel:"-esm-form-builder__interactive-builder__sectionLabel___x40lu",explainer:"-esm-form-builder__interactive-builder__explainer___XNpDZ",sectionExplainer:"-esm-form-builder__interactive-builder__sectionExplainer___6v2Fk",startButton:"-esm-form-builder__interactive-builder__startButton___Lf6zz",editorContainer:"-esm-form-builder__interactive-builder__editorContainer___kOWvN",addSectionButton:"-esm-form-builder__interactive-builder__addSectionButton___0xL++",validationErrorMessage:"-esm-form-builder__interactive-builder__validationErrorMessage___5PJRj",answerErrors:"-esm-form-builder__interactive-builder__answerErrors___JzigN",dragOverlay:"-esm-form-builder__interactive-builder__dragOverlay___I9zui"},em=({isLoading:e,onSchemaChange:t,schema:a,validationResponse:l})=>{let[c,_]=(0,n.useState)(null),b=(0,ee.MS)(ee.cA,{activationConstraint:{distance:10}}),f=(0,ee.MS)(ee.uN),h=(0,ee.FR)(b,f),{t:g}=(0,s.useTranslation)(),{formUuid:E}=(0,o.g)(),y=(0,n.useCallback)(()=>{let e={name:"",pages:[],processor:"EncounterFormProcessor",encounterType:"",referencedForms:[],uuid:""};return a||t({...e}),a||e},[t,a]),w=(0,n.useCallback)(()=>{let e=y(),a=(0,p.showModal)("new-form-modal",{closeModal:()=>a(),schema:e,onSchemaChange:t})},[t,y]),v=(0,n.useCallback)(()=>{let e=(0,p.showModal)("new-page-modal",{closeModal:()=>e(),schema:a,onSchemaChange:t})},[a,t]),C=(0,n.useCallback)(e=>{let n=(0,p.showModal)("delete-page-modal",{closeModal:()=>n(),onSchemaChange:t,schema:a,pageIndex:e})},[t,a]),S=(0,n.useCallback)(e=>{let n=(0,p.showModal)("new-section-modal",{closeModal:()=>n(),pageIndex:e,schema:a,onSchemaChange:t})},[a,t]),k=(0,n.useCallback)((e,n)=>{let r=(0,p.showModal)("new-section-modal",{closeModal:()=>r(),pageIndex:e,sectionIndex:n,schema:a,onSchemaChange:t,modalType:"edit"})},[t,a]),N=(0,n.useCallback)((e,n)=>{let r=(0,p.showModal)("delete-section-modal",{closeModal:()=>r(),pageIndex:e,sectionIndex:n,schema:a,onSchemaChange:t})},[t,a]),T=(0,n.useCallback)((e,n,r)=>{let l=(0,p.showModal)("add-form-reference-modal",{closeModal:()=>l(),pageIndex:e,schema:a,onSchemaChange:t,mode:n,sectionIndex:r})},[t,a]),q=(0,n.useCallback)((e,n)=>{let r=(0,p.showModal)("question-modal",{closeModal:()=>r(),onSchemaChange:t,schema:a,pageIndex:e,sectionIndex:n})},[t,a]),B=(0,n.useCallback)(e=>{try{e&&(a.name=e),t({...a}),(0,p.showSnackbar)({title:g("success","Success!"),kind:"success",isLowContrast:!0,subtitle:g("formRenamed","Form renamed")})}catch(e){(0,p.showSnackbar)({title:g("errorRenamingForm","Error renaming form"),kind:"error",subtitle:e?.message})}},[t,a,g]),I=(0,n.useCallback)((e,n)=>{try{e&&(a.pages[n].label=e),t({...a}),(0,p.showSnackbar)({title:g("success","Success!"),kind:"success",isLowContrast:!0,subtitle:g("pageRenamed","Page renamed")})}catch(e){e instanceof Error&&(0,p.showSnackbar)({title:g("errorRenamingPage","Error renaming page"),kind:"error",subtitle:e?.message})}},[t,a,g]);(0,n.useCallback)((e,n,r)=>{try{e&&(a.pages[n].sections[r].label=e),t({...a}),(0,p.showSnackbar)({title:g("success","Success!"),kind:"success",isLowContrast:!0,subtitle:g("sectionRenamed","Section renamed")})}catch(e){e instanceof Error&&(0,p.showSnackbar)({title:g("errorRenamingSection","Error renaming section"),kind:"error",subtitle:e?.message})}},[t,a,g]);let x=(0,n.useCallback)((e,n,r,l)=>{try{let o=JSON.parse(JSON.stringify(e));o.id=o.id+"Duplicate",Number.isInteger(l)?a.pages[n].sections[r].questions[l].questions.push(o):a.pages[n].sections[r].questions.push(o),t({...a}),(0,p.showSnackbar)({title:g("success","Success!"),kind:"success",isLowContrast:!0,subtitle:g("questionDuplicated","Question duplicated. Please change the duplicated question's ID to a unique, camelcased value")})}catch(e){e instanceof Error&&(0,p.showSnackbar)({title:g("errorDuplicatingQuestion","Error duplicating question"),kind:"error",subtitle:e?.message})}},[t,a,g]),F=e=>{let t=e?.map(e=>e.label)||[];return l.filter(e=>t?.includes(e.field.label))||[]},M=e=>{let t=l.find(t=>t.field.label===e.label&&t.field.id===e.id&&t.field.type===e.type);return t?.errorMessage||""},L=({question:e,pageIndex:n,sectionIndex:l,questionIndex:o})=>r().createElement("div",{className:eu.obsQuestions},e.questions.map((s,i)=>r().createElement(el,{handleDuplicateQuestion:x,key:s.id,onSchemaChange:t,pageIndex:n,question:s,questionCount:e.questions.length,questionIndex:o,schema:a,sectionIndex:l,subQuestionIndex:i})));return r().createElement("div",{className:eu.container},e?r().createElement(i.InlineLoading,{description:g("loadingSchema","Loading schema")+"..."}):null,a?.name&&r().createElement(r().Fragment,null,r().createElement("div",{className:eu.header},r().createElement("div",{className:eu.explainer},r().createElement("p",null,g("welcomeHeading","Welcome to the Interactive Schema builder")),r().createElement("p",null,g("welcomeExplainer","Add pages, sections and questions to your form. The Preview tab automatically updates as you build your form. For a detailed explanation of what constitutes an OpenMRS form schema, please read through the ")," ",r().createElement("a",{target:"_blank",rel:"noopener noreferrer",href:"https://openmrs.atlassian.net/wiki/spaces/projects/pages/68747273/React+Form+Engine"},g("formBuilderDocs","form builder documentation"),"."))),r().createElement(i.Button,{kind:"tertiary",size:"sm",renderIcon:m.OM,onClick:v,iconDescription:g("addPage","Add Page")},g("addPage","Add Page"))),r().createElement("div",{className:eu.editorContainer},r().createElement(ed,{elementType:"schema",id:"formNameInput",value:a?.name,onSave:e=>B(e)}))),!E&&!a?.name&&r().createElement("div",{className:eu.header},r().createElement("p",{className:eu.explainer},g("interactiveBuilderHelperText","The Interactive Builder lets you build your form schema without writing JSON code. The Preview tab automatically updates as you build your form. When done, click Save Form to save your form.")),r().createElement(i.Button,{onClick:w,className:eu.startButton,kind:"primary"},g("startBuilding","Start building"))),r().createElement(ee.Mp,{collisionDetection:e=>[...(0,ee.Qo)(e),...(0,ee.y$)(e),...(0,ee.TT)(e)],onDragStart:e=>{_(e.active.data.current?.question)},onDragEnd:e=>(e=>{let{active:n,over:r}=e;if(!r)return;let l=n.id,o=r.id,s=n.data.current,i=r.data.current;if(l===o||"question"===s.type&&"obsQuestion"===i.type||"obsQuestion"===s.type&&(s.question.sectionIndex!==i.question.sectionIndex||s.question.pageIndex!==i.question.pageIndex||s.question.questionIndex!==i.question.questionIndex))return;let c=function(e,t,a,n){if(!t.question.question)return;let r=JSON.parse(JSON.stringify(e)),l={...t,question:{...t.question,question:JSON.parse(JSON.stringify(t.question.question))}},o=function(e,t){let{pageIndex:a,sectionIndex:n}=t.question;if("obsQuestion"===t.type){let r=e.pages[a]?.sections[n]?.questions?.[t.question.questionIndex];if(!r?.questions)return;return r.questions.splice(t.question.subQuestionIndex,1).length>0?e:void 0}if("question"===t.type){let r=e.pages[a]?.sections[n]?.questions;if(!r)return;return r.splice(t.question.questionIndex,1).length>0?e:void 0}}(r,l);if(!o)return;let s=function(e,t,a,n){let{pageIndex:r,sectionIndex:l}=a.question;if("question"===t.type){let o=e.pages[r]?.sections[l]?.questions;if(!o)return;let s=o.findIndex(e=>e.id===n);if(-1===s)return;return t.question.pageIndex===a.question.pageIndex&&a.question.sectionIndex===t.question.sectionIndex?t.question.questionIndex>a.question.questionIndex?o.splice(s,0,t.question.question):o.splice(s+1,0,t.question.question):o.splice(s,0,t.question.question),e}if("obsQuestion"===t.type){if("question"===a.type){let n=e.pages[r]?.sections[l]?.questions?.[a.question.questionIndex];if(!n?.questions)return;return n.questions.unshift(t.question.question),e}if("obsQuestion"===a.type){let n=e.pages[r]?.sections[l]?.questions?.[a.question.questionIndex];if(!n?.questions)return;return n.questions.splice(a.question.subQuestionIndex,0,t.question.question),e}}}(o,l,a,n);if(s)return s}(a,s,i,o);c?(t(c),_(null)):console.warn("Drag-and-drop: move failed, aborting")})(e),sensors:h},r().createElement(et.gB,{items:a?.pages?.flatMap(e=>e?.sections?.flatMap(e=>e?.questions?.map(e=>e.id)||[])||[])||[]},a?.pages?.length?a.pages.map((e,n)=>r().createElement("div",{className:eu.editableFieldsContainer,key:n},r().createElement("div",{style:{display:"flex",alignItems:"center"}},r().createElement("div",{className:eu.editorContainer},r().createElement(ed,{elementType:"page",id:"pageNameInput",value:a.pages[n].label,onSave:e=>I(e,n)})),r().createElement(i.IconButton,{enterDelayMs:300,kind:"ghost",label:g("deletePage","Delete page"),onClick:()=>C(n),size:"md"},r().createElement(u.zH,null))),r().createElement("div",null,e?.sections?.length?r().createElement("p",{className:eu.sectionExplainer},g("expandSectionExplainer","Below are the sections linked to this page. Expand each section to add questions to it.")):null,e?.sections?.length?e.sections?.map((e,l)=>r().createElement(i.Accordion,{key:l},r().createElement(i.AccordionItem,{title:e.label},r().createElement(r().Fragment,null,r().createElement("div",{style:{display:"flex",alignItems:"center"}},r().createElement("div",{className:eu.editorContainer},r().createElement("h1",{className:eu.sectionLabel},e.label),r().createElement(i.IconButton,{enterDelayMs:300,kind:"ghost",label:g("editSection","Edit section"),onClick:()=>e.reference?T(n,"edit",l):k(n,l),size:"md"},r().createElement(d.ff,null))),r().createElement(i.IconButton,{enterDelayMs:300,kind:"ghost",label:g("deleteSection","Delete section"),onClick:()=>N(n,l),size:"md"},r().createElement(u.zH,null))),r().createElement("div",null,e.questions?.length?e.questions.map((o,s)=>r().createElement("div",{id:`droppable-question-${n}-${l}-${s}`,key:s},r().createElement(el,{handleDuplicateQuestion:x,key:o.id,onSchemaChange:t,pageIndex:n,question:o,questionCount:e.questions.length,questionIndex:s,schema:a,sectionIndex:l},r().createElement(L,{question:o,pageIndex:n,sectionIndex:l,questionIndex:s})),M(o)&&r().createElement("div",{className:eu.validationErrorMessage},M(o)),F(o.questionOptions.answers)?.length?r().createElement("div",{className:eu.answerErrors},r().createElement("div",null,g("answerErrors","Answer Errors")),F(o.questionOptions.answers)?.map((e,t)=>r().createElement("div",{className:eu.validationErrorMessage,key:t},`${e.field.label}: ${e.errorMessage}`))):null)):e.reference?r().createElement("p",{className:eu.explainer},g("sectionReferenceExplainer","This section is a reference to another form. Modify the referenced form to add questions to this section.")):r().createElement("p",{className:eu.explainer},g("sectionExplainer","A section will typically contain one or more questions. Click the button below to add a question to this section.")),r().createElement(i.Button,{className:eu.addQuestionButton,kind:"tertiary",size:"sm",renderIcon:m.OM,onClick:()=>{q(n,l)},iconDescription:g("addQuestion","Add Question"),disabled:!!e.reference},g("addQuestion","Add Question"))))))):r().createElement("p",{className:eu.explainer},g("pageExplainer","Pages typically have one or more sections. Click the button below to add a section to your page."))),r().createElement(i.Button,{className:eu.addSectionButton,kind:"ghost",renderIcon:m.OM,onClick:()=>{S(n)},iconDescription:g("addSection","Add Section")},g("addSection","Add Section")),r().createElement(i.Button,{className:eu.addSectionButton,kind:"ghost",renderIcon:m.OM,onClick:()=>{T(n)},iconDescription:g("addReference","Add Reference")},g("addReference","Add Reference")))):null,r().createElement(ee.Hd,null,c?r().createElement("div",{className:eu.dragOverlay},r().createElement(el,{handleDuplicateQuestion:x,onSchemaChange:t,pageIndex:c.pageIndex,sectionIndex:c.sectionIndex,question:c.question,questionCount:c.questionCount,questionIndex:c.questionIndex,schema:a})):null))))};var e_=a(13634);function ep(){let e,t=(0,p.useSession)(),a=t?.allowedLocales||[],n=t?.locale||"en";if(!Array.isArray(a)||0===a.length)return[];try{e=new Intl.DisplayNames([n],{type:"language"})}catch(e){return console.warn("Intl.DisplayNames not supported, falling back to raw locale codes."),a.map(e=>({label:e,code:e}))}return a.map(t=>{let a=e.of(t)||t;return{label:`${(0,e_.A)(a)} (${t})`,code:t}})}async function eb(e,t,a,n){try{let r=await (0,p.openmrsFetch)(`${p.restBaseUrl}/form/${e}?v=full`),l=r?.data,o=`${a}_translations_${t}`,s=l?.resources?.find(e=>e.name===o);s&&(await (0,p.openmrsFetch)(`${p.restBaseUrl}/form/${e}/resource/${s.uuid}`,{method:"DELETE",headers:{"Content-Type":"application/json"}}),s.valueReference&&await (0,p.openmrsFetch)(`${p.restBaseUrl}/clobdata/${s.valueReference}`,{method:"DELETE",headers:{"Content-Type":"application/json"}}));let i=new Blob([JSON.stringify({translations:n})],{type:"application/json"}),c=new FormData;c.append("file",i);let d=await window.fetch(`${window.openmrsBase}${p.restBaseUrl}/clobdata`,{method:"POST",body:c}),u=await d.text();if(!u)throw Error("Failed to create new clobdata");await (0,p.openmrsFetch)(`${p.restBaseUrl}/form/${e}/resource`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:o,valueReference:u})})}catch(e){throw console.error("Error uploading backend translations:",e),e}}async function ef(e,t,a){try{let n=`${p.restBaseUrl}/form/${e}?v=full`,r=await (0,p.openmrsFetch)(n),l=r?.data,o=l?.resources?.find(e=>e.name?.endsWith(`translations_${t}`));if(!o?.valueReference)return a;let s=`${p.restBaseUrl}/clobdata/${o.valueReference}`,i=await (0,p.openmrsFetch)(s),c=i?.data?.translations??{};return Object.entries(a).reduce((e,[t,a])=>(e[t]=c[t]??a,e),{})}catch(e){return console.error("Error fetching backend translations:",e),a}}let eh={translationBuilderContainer:"-esm-form-builder__translation-builder-module__translationBuilderContainer___ZkW0-",translationEditor:"-esm-form-builder__translation-builder-module__translationEditor___6e3Zb",translationRow:"-esm-form-builder__translation-builder-module__translationRow___Tk8NV",translationKey:"-esm-form-builder__translation-builder-module__translationKey___xcZA+",inlineControls:"-esm-form-builder__translation-builder-module__inlineControls___1fpUa",translatedKey:"-esm-form-builder__translation-builder-module__translatedKey___ZUNOQ",translationBuilderHeader:"-esm-form-builder__translation-builder-module__translationBuilderHeader___NDf8p",languageTools:"-esm-form-builder__translation-builder-module__languageTools___x8amU",languagePath:"-esm-form-builder__translation-builder-module__languagePath___hG3I3",language:"-esm-form-builder__translation-builder-module__language___-XmRn",downloadError:"-esm-form-builder__translation-builder-module__downloadError___UDQbZ",searchBox:"-esm-form-builder__translation-builder-module__searchBox___QyPBP",searchInput:"-esm-form-builder__translation-builder-module__searchInput___ymbZg",translationActions:"-esm-form-builder__translation-builder-module__translationActions___3kAEl",linkButton:"-esm-form-builder__translation-builder-module__linkButton___BBFDc"},eg=({formSchema:e,onUpdateSchema:t})=>{let{t:a}=(0,s.useTranslation)(),l=ep(),[c,_]=(0,n.useState)(()=>l[0]?.code??"en"),[b,f]=(0,n.useState)({}),[h,g]=(0,n.useState)(!1),[E,y]=(0,n.useState)(!1),[w,v]=(0,n.useState)(null),[C,S]=(0,n.useState)(null),[k,N]=(0,n.useState)("all"),[T,q]=(0,n.useState)(""),[B,I]=(0,n.useState)(T),{formUuid:x}=(0,o.g)();(0,n.useEffect)(()=>{let e=setTimeout(()=>{I(T)},300);return()=>clearTimeout(e)},[T]);let F=(0,n.useMemo)(()=>{let t;return e?(t={},e.pages&&e.pages.forEach(e=>{e.label&&(t[e.label]=e.label),e.sections&&e.sections.forEach(e=>{e.label&&(t[e.label]=e.label),e.questions&&e.questions.forEach(e=>(function e(t,a){t.label&&(a[t.label]=t.label),t.questionOptions?.answers?.forEach(e=>{e.label&&(a[e.label]=e.label)}),t.questionOptions?.rendering==="markdown"&&(Array.isArray(t.value)?t.value.forEach(e=>{"string"==typeof e&&e.trim()&&(a[e]=e)}):"string"==typeof t.value&&t.value.trim()&&(a[t.value]=t.value)),t.questions?.forEach(t=>e(t,a))})(e,t))})}),t):{}},[e]),M=(0,n.useCallback)((a,n)=>{let r={...b,[a]:n};if(f(r),e){let a={...e};a.translations||(a.translations={}),a.translations[c]=r,t(a)}},[e,c,t,b]),L=(0,n.useCallback)(e=>{let t=(0,p.showModal)("edit-translation-modal",{onClose:()=>t(),originalKey:e,initialValue:b[e],onSave:a=>{f({...b,[e]:a}),M(e,a),t()}})},[b,M]),D=(0,n.useMemo)(()=>{if(!e)return null;let t=e.translations?.[c],a="en"===c?F:t;return a?new Blob([JSON.stringify({uuid:e.uuid||"",form:e.name,description:`${c.toUpperCase()} Translations for '${e.name}'`,language:c,translations:a},null,2)],{type:"application/json"}):null},[e,c,F]),O=(0,n.useCallback)((e,t)=>{let a=F[e]??"";return null!=t&&""!==t.trim()&&t.trim()!==a.trim()},[F]);(0,n.useEffect)(()=>{"en"===c&&e&&f(F)},[c,e,F]);let $=async a=>{if(_(a),!e||"en"===a)return void f(F);g(!0);try{let n=await ef(x,a,F);f(n);let r={...e,translations:{...e.translations||{},[a]:n}};t(r)}catch(e){v("Failed to load backend translations.")}finally{g(!1)}},R=(0,n.useMemo)(()=>Object.entries(b).filter(([e,t])=>{if("translated"===k&&!O(e,t)||"untranslated"===k&&O(e,t))return!1;let a=B.toLowerCase();return e.toLowerCase().includes(a)||(t??"").toLowerCase().includes(a)}),[b,k,B,O]),A=(0,n.useCallback)(()=>{if(S(null),!D){"en"!==c&&S(a("noTranslationForLang","No translations found for selected language."));return}let t=URL.createObjectURL(D),n=document.createElement("a");n.href=t,n.download=`${e?.name}_translations_${c}.json`,document.body.appendChild(n),n.click(),document.body.removeChild(n),URL.revokeObjectURL(t)},[D,c,e?.name,a]),U=(0,n.useCallback)(async()=>{if(!e)return;let t=e.translations?.[c],n="en"===c?F:t;if(!n){v(a("noTranslationForLang","No translations found for selected language.")),(0,p.showSnackbar)({title:a("noTranslations","No translatable strings found."),kind:"error",subtitle:a("noTranslationFileToUpload","No translations found for the selected language to upload")});return}y(!0);try{await eb(x,c,e.name,n),(0,p.showSnackbar)({title:a("translationsUploaded","Translations Uploaded."),kind:"success",subtitle:a("translationsUploadedSuccessfully","Translation file uploaded successfully.")})}catch(e){v(a("translationFileUploadFail","Failed to upload translation file")),(0,p.showSnackbar)({title:a("uploadFailed","Upload Failed"),kind:"error",subtitle:a("translationFileUploadFail","Failed to upload translation file")}),console.error(e)}finally{y(!1)}},[e,c,F,x,a]);return r().createElement("div",{className:eh.translationBuilderContainer},r().createElement("div",{className:eh.translationBuilderHeader},r().createElement("div",{className:eh.languageTools},r().createElement("div",{className:eh.languagePath},r().createElement("span",{className:eh.language},"English (en)"),r().createElement(m.Qp,{className:eh.arrow}),r().createElement(i.Dropdown,{id:"target-language",items:l,itemToString:e=>e?.label??"",label:"",titleText:"",selectedItem:l.find(e=>e.code===c),onChange:({selectedItem:e})=>e&&$(e.code)})),r().createElement("div",{className:eh.translationActions},r().createElement("button",{className:eh.linkButton,onClick:A},a("downloadTranslation","Download translation"),r().createElement(d.f5,{size:16})),r().createElement("button",{className:eh.linkButton,onClick:U,disabled:E},a("uploadTranslation","Upload translation"),E?r().createElement(i.InlineLoading,null):r().createElement(u._O,{size:16})))),r().createElement("div",{className:eh.translationTabs},r().createElement(i.Tabs,{onChange:({selectedIndex:e})=>{0===e&&N("all"),1===e&&N("translated"),2===e&&N("untranslated")}},r().createElement(i.TabList,{"aria-label":"Translation filter"},r().createElement(i.Tab,null,a("all","All")),r().createElement(i.Tab,null,a("translated","Translated")),r().createElement(i.Tab,null,a("untranslated","Untranslated")))))),h?r().createElement(i.InlineLoading,{description:a("loadingTranslations","Loading translations...")}):w?r().createElement(i.InlineNotification,{kind:"error",title:a("error","Error"),subtitle:w,lowContrast:!0}):r().createElement(r().Fragment,null,C&&r().createElement(i.InlineNotification,{className:eh.downloadError,kind:"error",title:a("error","Error"),subtitle:C,lowContrast:!0,onClose:()=>S(null)}),r().createElement("div",{className:eh.searchBox},r().createElement("input",{type:"text",placeholder:a("searchTranslationKeys","Search Translation Keys..."),className:eh.searchInput,value:T,onChange:e=>q(e.target.value)})),r().createElement("div",{className:eh.translationEditor},R.length>0?R.map(([e,t])=>r().createElement("div",{key:e,className:eh.translationRow},r().createElement("div",{className:eh.translationKey},e),r().createElement("div",{className:eh.translatedKey},t),r().createElement("div",{className:eh.inlineControls},r().createElement(i.IconButton,{kind:"ghost",label:a("editString","Edit string"),onClick:()=>L(e),size:"md",className:eh.deleteButton},r().createElement(d.ff,null))))):r().createElement(i.InlineNotification,{kind:"info",subtitle:"translated"===k?a("noTranslatedStrings","No strings are translated yet."):"untranslated"===k?a("noUntranslatedStrings","All strings are translated."):a("noTranslations","No translatable strings found."),hideCloseButton:!0,lowContrast:!0}))))};var eE=a(70470);a(62432);var ey=a(20047),ew=a(66148),ev=a.n(ew),eC=a(63282),eS=a.n(eC),ek=a(44861);let eN="-esm-form-builder__schema-editor__paginationIcon___3XKWl",eT="-esm-form-builder__schema-editor__disabledIcon___r9vkB",eq=({onSchemaChange:e,stringifiedSchema:t,setErrors:a,errors:l,validationOn:o,setValidationOn:c})=>{let{schema:d,schemaProperties:u}=function(){let{data:e,error:t,isLoading:a}=ev()("https://json.openmrs.org/form.schema.json",p.openmrsFetch);return{schema:e?.data,schemaProperties:e?.data.properties,error:t,isLoading:a}}(),{t:m}=(0,s.useTranslation)(),[_,b]=(0,n.useState)([]),[f,h]=(0,n.useState)(0),g=(0,n.useCallback)(()=>{let e=[],t=(a,n)=>{a&&a&&"object"==typeof a&&Object.entries(a).forEach(([a,r])=>{if("$schema"===a)return;let l=n?`${n}.${a}`:a;if("object"==typeof r){if("array"===r.type&&r.items&&r.items.properties)t(r.items.properties,l);else if(r.properties)t(r.properties,l);else if(r.oneOf){let t=r?.oneOf?.map(e=>e.type).join(" | ");e.push({name:a,type:t||"any",path:l})}}e.push({name:a,type:r.type||"any",path:l})})};return t(u,""),e},[u]);(0,n.useEffect)(()=>{b(g().flat())},[u,g]),(0,n.useEffect)(()=>{(0,ey.addCompleter)({getCompletions:function(e,t,a,n,r){r(null,_.map(function(e){return{caption:e.name,value:e.name,meta:e.type,docText:`Path: ${e.path}`}}))}})},[_]);let E=(0,ek.A)((e,t)=>{try{let n=e.replace(/\s/g,"");if("{}"===n.trim())return void a([]);let r=new(eS())({allErrors:!0,jsPropertySyntax:!0,strict:!1}).compile(t),l=JSON.parse(e),o=r(l),s=e.split("\n");if(o)a([]);else{let e=r.errors.map(e=>{let t=e.schemaPath.replace(/^#\//,""),a=(e=>{let t=e.split("/").filter(e=>""!==e||"type"!==e),a=-1;for(let e of t)if("properties"!==e&&"items"!==e){if(e.match(/^([^[\]]+)/)){let e=t[t.length-2];a=s.findIndex(t=>t.includes(e))}if(-1!==a)break}return a})(t),n=e.instancePath.split("."),r=n[n.length-1],l="type"===e.keyword||"enum"===e.keyword?`${r.charAt(0).toUpperCase()+r.slice(1)} ${e.message}`:`${e.message.charAt(0).toUpperCase()+e.message.slice(1)}`;return{startRow:a,startCol:0,endRow:a,endCol:1,className:"error",text:l,type:"text"}});a(e)}}catch(e){console.error("Error parsing or validating JSON:",e)}},300),y=({text:e,line:t})=>r().createElement(i.ActionableNotification,{subtitle:e,inline:!0,title:m("errorOnLine","Error on line")+` ${t+1}: `,kind:"error",lowContrast:!0,actionButtonLabel:m("referenceSchema","Reference schema"),onActionButtonClick:()=>window.open("https://json.openmrs.org/form.schema.json","_blank","noopener,noreferrer")}),w=()=>{h(e=>Math.max(e-1,0))},v=()=>{h(e=>Math.min(e+1,l.length-1))};return r().createElement("div",null,l.length&&o?r().createElement(()=>r().createElement("div",{className:"-esm-form-builder__schema-editor__validationErrorsContainer___vJh4t"},r().createElement(y,{text:l[f]?.text,line:l[f]?.startRow}),r().createElement("div",{className:"-esm-form-builder__schema-editor__pagination___q8uQ8"},r().createElement(es.JG,{onClick:w,className:0===f?eT:eN}),r().createElement("div",null,f+1,"/",l.length),r().createElement(es.c_,{onClick:v,className:f===l.length-1?eT:eN}))),null):null,r().createElement(eE.default,{style:{height:"100vh",width:"100%",border:l.length?"3px solid #DA1E28":"none"},mode:"json",theme:"textmate",name:"schemaEditor",onChange:t=>{c(!1),h(0),e(t),E(t,d)},fontSize:15,showPrintMargin:!1,showGutter:!0,highlightActiveLine:!0,value:t,setOptions:{enableBasicAutocompletion:!0,enableLiveAutocompletion:!0,displayIndentGuides:!0,enableSnippets:!0,showLineNumbers:!0,tabSize:2},markers:l}))},eB=({hasValidationErrors:e,publishedWithErrors:t,errorsCount:a})=>{let{t:n}=(0,s.useTranslation)();return t?r().createElement(i.InlineNotification,{kind:"error",title:n("publishingFailed","Publishing failed"),lowContrast:!0,subtitle:n("publishWarning","Cannot publish form with validation errors")}):e?r().createElement(i.InlineNotification,{kind:"error",title:n("validationErrors","Validation found {{count}} errors",{count:a}),lowContrast:!0,subtitle:n("viewErrors","View the errors in the interactive builder")}):r().createElement(i.InlineNotification,{kind:"success",title:n("ValidationSuccessful","Validation Successful"),lowContrast:!0,subtitle:n("noValidationErrorsFound","No validation errors found")})},eI="-esm-form-builder__form-editor__column___mmSc6",ex=({error:e,title:t})=>r().createElement(i.InlineNotification,{className:"-esm-form-builder__form-editor__errorNotification___8cDJm",kind:"error",lowContrast:!0,subtitle:e?.message,title:t}),eF=({t:e})=>{let{formUuid:t}=(0,o.g)(),{blockRenderingWithErrors:a,dataTypeToRenderingMap:l}=(0,p.useConfig)(),s=!t,[c,u]=(0,n.useState)(),{form:m,formError:_,isLoadingForm:b,mutate:f}=(0,P.m)(t),{clobdata:h,clobdataError:g,isLoadingClobdata:E}=(0,k.S)(m),[y,w]=(0,n.useState)(!1),[v,S]=(0,n.useState)("idle"),[N,T]=(0,n.useState)(!1),[q,B]=(0,n.useState)(c?JSON.stringify(c,null,2):""),[I,x]=(0,n.useState)([]),[F,$]=(0,n.useState)(!1),[R,A]=(0,n.useState)(!1),[U,z]=(0,n.useState)(!1),[j,H]=(0,n.useState)([]),[Q,K]=(0,n.useState)(!1),[G,Z]=(0,n.useState)(""),W=ep(),[X,ee]=(0,n.useState)(()=>W[0]?.code??"en"),[et,ea]=(0,n.useState)(!1),[en,er]=(0,n.useState)(null),el=!!t&&(E||b),eo=(0,n.useMemo)(()=>h?JSON.stringify(h,null,2):"",[h]),es=!!q&&"undefined"!==q&&"null"!==q&&q!==eo;(0,n.useEffect)(()=>{if(!es)return;let e=e=>{e.preventDefault(),e.returnValue=""};return window.addEventListener("beforeunload",e),()=>window.removeEventListener("beforeunload",e)},[es]);let ei=(0,n.useMemo)(()=>et?en:null,[et,en]),ec=(0,n.useCallback)(()=>{Z("")},[]),ed=(0,n.useCallback)(e=>{ec(),B(e)},[ec]),eu=(0,n.useCallback)(e=>{u(e),localStorage.setItem("formJSON",JSON.stringify(e))},[]),e_=(0,n.useCallback)(()=>{let e=(0,p.showModal)("restore-draft-schema-modal",{closeModal:()=>e(),onSchemaChange:eu})},[eu]),eb=(0,n.useCallback)(async()=>{if(m){w(!0);try{let t=await (0,C.Rv)(m.uuid);200===t.status&&((0,p.showSnackbar)({title:e("formRestored","Form restored"),kind:"success",isLowContrast:!0,subtitle:e("formRestoredMessage",'The form "{{- formName}}" has been restored',{formName:m.name})}),await f())}catch(t){t instanceof Error&&(0,p.showSnackbar)({title:e("errorRestoringForm","Error restoring form"),kind:"error",subtitle:t.message})}finally{w(!1)}}},[m,f,e]);(0,n.useEffect)(()=>{t&&(m&&Object.keys(m).length>0&&S("formLoaded"),"formLoaded"!==v||E||void 0!==h||e_(),h&&Object.keys(h).length>0&&(S("schemaLoaded"),u(h),localStorage.setItem("formJSON",JSON.stringify(h))))},[h,m,t,E,el,e_,v]),(0,n.useEffect)(()=>{B(JSON.stringify(c,null,2))},[c]);let ef=async()=>{$(!0);try{let[t]=await O(c,l,e);x(t),A(!0)}catch(e){console.error("Error during form validation:",e)}finally{$(!1)}},eh=(0,n.useCallback)(()=>{let e={encounterType:"",name:"Sample Form",processor:"EncounterFormProcessor",referencedForms:[],uuid:"",version:"1.0",pages:[{label:"First Page",sections:[{label:"A Section",isExpanded:"true",questions:[{id:"sampleQuestion",label:"A Question of type obs that renders a text input",type:"obs",questionOptions:{rendering:"text",concept:"a-system-defined-concept-uuid"}}]},{label:"Another Section",isExpanded:"true",questions:[{id:"anotherSampleQuestion",label:"Another Question of type obs whose answers get rendered as radio inputs",type:"obs",questionOptions:{rendering:"radio",concept:"system-defined-concept-uuid",answers:[{concept:"another-system-defined-concept-uuid",label:"Choice 1"},{concept:"yet-another-system-defined-concept-uuid",label:"Choice 2"},{concept:"yet-one-more-system-defined-concept-uuid",label:"Choice 3"}]}}]}]}]};B(JSON.stringify(e,null,2)),eu({...e})},[eu]),eE=(0,n.useCallback)(()=>{ec();try{let e=JSON.parse(q);eu(e),B(JSON.stringify(e,null,2))}catch(e){e instanceof Error&&Z(e.message)}},[q,eu,ec]),ey=(0,n.useMemo)(()=>{if(!c)return null;if(!et)return c;if(!c?.translations?.[ei])return c;let e=JSON.parse(JSON.stringify(c)),t=c.translations[ei];return e.pages&&(e.pages=e.pages.map(e=>(t[e.label]&&(e.label=t[e.label]),e.sections&&(e.sections=e.sections.map(e=>(t[e.label]&&(e.label=t[e.label]),e.questions&&(e.questions=e.questions.map(e=>(function e(t,a){return t.label&&a[t.label]&&(t.label=a[t.label]),t.questionOptions?.answers&&(t.questionOptions={...t.questionOptions,answers:t.questionOptions.answers.map(e=>({...e,label:e.label&&a[e.label]?a[e.label]:e.label}))}),t.questionOptions?.rendering==="markdown"&&(Array.isArray(t.value)?t.value=t.value.map(e=>a[e]):t.value=a[t.value]),t.questions&&(t.questions=t.questions.map(t=>e(t,a))),t})(e,t))),e))),e))),e},[c,et,ei]),ew=(0,n.useCallback)(()=>{j.length&&a?K(!0):(ea(!0),er(X),j.length&&!a&&K(!0),eE())},[a,j.length,eE,X]),ev=(0,n.useMemo)(()=>new Blob([JSON.stringify(c,null,2)],{type:"application/json"}),[c]),eC=(0,n.useCallback)(async()=>{await navigator.clipboard.writeText(q)},[q]),eS=N?16:8;return r().createElement("div",{className:"-esm-form-builder__form-editor__container___P4qBJ"},m?.retired&&r().createElement(i.ActionableNotification,{className:"-esm-form-builder__form-editor__retiredNotification___hvl+y",kind:"warning",lowContrast:!0,inline:!0,hideCloseButton:!0,title:e("formIsRetired","This form is retired."),actionButtonLabel:y?e("restoring","Restoring"):e("restoreForm","Restore form"),onActionButtonClick:eb}),r().createElement(i.Grid,{className:M()("-esm-form-builder__form-editor__grid___Lg8eU",{"-esm-form-builder__form-editor__maximized___VbNzz":N})},r().createElement(i.Column,{lg:eS,md:eS,sm:4,className:eI},r().createElement("div",{className:"-esm-form-builder__form-editor__actionButtons___iXlCp"},el?r().createElement(i.InlineLoading,{description:e("loadingSchema","Loading schema")+"..."}):r().createElement("h1",{className:"-esm-form-builder__form-editor__formName___5Ku8M"},m?.name,es&&r().createElement(i.Tag,{className:"-esm-form-builder__form-editor__dirtyIndicator___wG7Q9",type:"warm-gray",size:"sm"},e("unsavedChanges","Unsaved changes")))),r().createElement("div",null,r().createElement("div",{className:"-esm-form-builder__form-editor__heading___9S6rK"},r().createElement("span",{className:"-esm-form-builder__form-editor__tabHeading___3cfeA"},e("schemaEditor","Schema editor")),r().createElement("div",{className:"-esm-form-builder__form-editor__topBtns___RZrcX"},c?null:r().createElement(i.FileUploader,{onChange:e=>{let t=e.target.files[0],a=new FileReader;a.onload=e=>{let t=e.target?.result;"string"==typeof t?u(JSON.parse(t)):t instanceof ArrayBuffer&&u(JSON.parse(new TextDecoder().decode(t)))},a.readAsText(t)},labelTitle:"",labelDescription:"",buttonLabel:e("importSchema","Import schema"),buttonKind:"ghost",size:"lg",filenameStatus:"edit",accept:[".json"],multiple:!1,disabled:!1,iconDescription:e("importSchema","Import schema"),name:"form-import"}),s&&!c?r().createElement(i.Button,{kind:"ghost",onClick:eh},e("inputDummySchema","Load sample schema")):null,r().createElement(i.Dropdown,{id:"target-language",items:W,itemToString:e=>e?.label??"",label:e("selectLanguage","Select language"),onChange:({selectedItem:e})=>{e&&ee(e.code)},titleText:e("previewFormIn","Preview form in"),selectedItem:W.find(e=>e.code===X),type:"inline",className:"-esm-form-builder__form-editor__dropdown___uw+pI"}),r().createElement(i.Button,{kind:"tertiary",size:"sm",renderIcon:L.wM,onClick:ew,disabled:!!G},e("renderChanges","Render changes"))),c?r().createElement("div",{className:"-esm-form-builder__form-editor__schemaIconActions___IdO3E"},r().createElement(i.IconButton,{enterDelayMs:300,kind:"ghost",label:N?e("minimizeEditor","Minimize editor"):e("maximizeEditor","Maximize editor"),onClick:()=>{T(!N)},size:"md"},N?r().createElement(D.Xj,null):r().createElement(D.hz,null)),r().createElement(i.CopyButton,{align:"top",className:"cds--btn--md",iconDescription:e("copySchema","Copy schema"),kind:"ghost",onClick:eC}),r().createElement("a",{download:`${m?.name}.json`,href:window.URL.createObjectURL(ev)},r().createElement(i.IconButton,{enterDelayMs:300,kind:"ghost",label:e("downloadSchema","Download schema"),size:"md"},r().createElement(d.f5,null)))):null),_?r().createElement(ex,{error:_,title:e("formError","Error loading form metadata")}):null,g?r().createElement(ex,{error:g,title:e("schemaLoadError","Error loading schema")}):null,r().createElement("div",{className:"-esm-form-builder__form-editor__editorContainer___Bvc6d"},r().createElement(eq,{errors:j,isLoading:el,onSchemaChange:ed,setErrors:H,setValidationOn:K,stringifiedSchema:q,validationOn:Q})))),r().createElement(i.Column,{lg:8,md:8,sm:4,className:eI},r().createElement(V,{schema:c,t:e,schemaErrors:j,setPublishedWithErrors:z,onFormValidation:ef,setValidationResponse:x,setValidationComplete:A,isValidating:F}),R&&r().createElement(eB,{hasValidationErrors:I.length>0,publishedWithErrors:U,errorsCount:I.length}),r().createElement(i.Tabs,null,r().createElement(i.TabList,{"aria-label":"Form previews"},r().createElement(i.Tab,null,e("preview","Preview")),r().createElement(i.Tab,null,e("interactiveBuilder","Interactive Builder")),r().createElement(i.Tab,null,e("translationBuilder","Translation Builder")),m&&r().createElement(i.Tab,null,e("auditDetails","Audit Details"))),r().createElement(i.TabPanels,null,r().createElement(i.TabPanel,null,r().createElement(Y,{schema:ey,isLoading:el})),r().createElement(i.TabPanel,null,r().createElement(em,{schema:c,onSchemaChange:eu,isLoading:el,validationResponse:I})),r().createElement(i.TabPanel,null,r().createElement(eg,{formSchema:c,onUpdateSchema:eu})),r().createElement(i.TabPanel,null,m&&r().createElement(J,{form:m,key:m.uuid})))))))};function eM({t:e}){return r().createElement("div",{className:"-esm-form-builder__form-editor__backButton___t4pGC"},r().createElement(p.ConfigurableLink,{to:window.getOpenmrsSpaBase()+"form-builder"},r().createElement(i.Button,{kind:"ghost",renderIcon:e=>r().createElement(m.nk,{size:24,...e}),iconDescription:e("returnToDashboard","Return to dashboard")},r().createElement("span",null,e("backToDashboard","Back to dashboard")))))}let eL=function(){let{t:e}=(0,s.useTranslation)(),{formUuid:t}=(0,o.g)();return r().createElement(r().Fragment,null,r().createElement(v,{title:t?e("editForm","Edit form"):e("createNewForm","Create a new form")}),r().createElement(eM,{t:e}),r().createElement(eF,{t:e}))},eD=()=>r().createElement(l.Kd,{basename:`${window.spaBase}/form-builder`},r().createElement(o.BV,null,r().createElement(o.qh,{path:"/",element:r().createElement(x,null)}),r().createElement(o.qh,{path:"/new",element:r().createElement(eL,null)}),r().createElement(o.qh,{path:"/edit/:formUuid",element:r().createElement(eL,null)})))}}]);
1
+ "use strict";(globalThis.webpackChunk_openmrs_esm_form_builder_app=globalThis.webpackChunk_openmrs_esm_form_builder_app||[]).push([["5543"],{79140(e,t,a){a.d(t,{S:()=>o});var n=a(66148),r=a.n(n),l=a(23365);let o=e=>{let t=e?.resources?.find(({name:e})=>"JSON schema"===e)?.valueReference,a=e&&e?.resources?.length>0&&t,n=`${l.restBaseUrl}/clobdata/${t}`,{data:o,error:s,isLoading:i,isValidating:c,mutate:d}=r()(a?n:null,l.openmrsFetch);return{clobdata:o?.data,clobdataError:s,isLoadingClobdata:i,isValidatingClobdata:c,mutate:d}}},6916(e,t,a){a.d(t,{m:()=>o});var n=a(66148),r=a.n(n),l=a(23365);let o=e=>{let t=`${l.restBaseUrl}/form/${e}?v=full`,{data:a,error:n,isLoading:o,isValidating:s,mutate:i}=r()(e?t:null,l.openmrsFetch);return{form:a?.data,formError:n,isLoadingForm:o,isValidatingForm:s,mutate:i}}},70243(e,t,a){a.d(t,{h:()=>o});var n=a(73391),r=a.n(n),l=a(23365);function o(){let e=`${l.restBaseUrl}/form?v=custom:(uuid,name,encounterType:(uuid,name),version,published,retired,resources:(uuid,name,dataType,valueReference))&includeAll=true`,{data:t,error:a,isValidating:n,mutate:o}=r()(e,l.openmrsFetch);return{forms:t?.data?.results??[],error:a,isLoading:!t&&!a,isValidating:n,mutate:o}}},70721(e,t,a){a.d(t,{Rv:()=>_,UY:()=>u,Vb:()=>s,_I:()=>i,b4:()=>m,i6:()=>l,kb:()=>d,o8:()=>o,wi:()=>c,yI:()=>r});var n=a(23365);async function r(e){return await (0,n.openmrsFetch)(`${n.restBaseUrl}/clobdata/${e}`,{method:"DELETE",headers:{"Content-Type":"application/json"}})}async function l(e){return await (0,n.openmrsFetch)(`${n.restBaseUrl}/form/${e}`,{method:"DELETE",headers:{"Content-Type":"application/json"}})}async function o(e,t){return await (0,n.openmrsFetch)(`${n.restBaseUrl}/form/${e}/resource/${t}`,{method:"DELETE",headers:{"Content-Type":"application/json"}})}async function s(e){let t=new Blob([JSON.stringify(e)],{type:"application/json"}),a=new FormData;a.append("file",t);let r=await window.fetch(`${window.openmrsBase}${n.restBaseUrl}/clobdata`,{body:a,method:"POST"});if(!r.ok)throw Error(`Schema upload failed (status ${r.status})`);return r.text()}async function i(e,t){return await (0,n.openmrsFetch)(`${n.restBaseUrl}/form/${e}/resource`,{method:"POST",headers:{"Content-Type":"application/json"},body:{name:"JSON schema",dataType:"AmpathJsonSchema",valueReference:t}})}async function c(e,t,a,r,l){let o=new AbortController;return await (0,n.openmrsFetch)(`${n.restBaseUrl}/form/${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:{name:t,version:a,description:r,encounterType:{uuid:l}},signal:o.signal})}async function d(e,t,a,r,l){let o=new AbortController,s={name:e,version:t,published:a??!1,description:r??""};return l&&(s.encounterType=l),(await (0,n.openmrsFetch)(`${n.restBaseUrl}/form`,{method:"POST",headers:{"Content-Type":"application/json"},body:s,signal:o.signal})).data}async function u(e){return await (0,n.openmrsFetch)(`${n.restBaseUrl}/form/${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:{published:!0}})}async function m(e){return await (0,n.openmrsFetch)(`${n.restBaseUrl}/form/${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:{published:!1}})}async function _(e){return await (0,n.openmrsFetch)(`${n.restBaseUrl}/form/${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:{deleted:"false"}})}},16316(e,t,a){a.r(t),a.d(t,{default:()=>eD});var n=a(47499),r=a.n(n),l=a(84976),o=a(47767),s=a(58779),i=a(14968),c=a(63654),d=a(40771),u=a(55576),m=a(92137),_=a(73391),p=a(23365);let b=({width:e="64",height:t="64"})=>r().createElement("svg",{width:e,height:t,viewBox:"0 0 64 64"},r().createElement("title",null,"Empty data illustration"),r().createElement("g",{fill:"none",fillRule:"evenodd"},r().createElement("path",{d:"M38.133 13.186H21.947c-.768.001-1.39.623-1.39 1.391V50.55l-.186.057-3.97 1.216a.743.743 0 01-.927-.493L3.664 12.751a.742.742 0 01.492-.926l6.118-1.874 17.738-5.43 6.119-1.873a.741.741 0 01.926.492L38.076 13l.057.186z",fill:"#F4F4F4"}),r().createElement("path",{d:"M41.664 13L38.026 1.117A1.576 1.576 0 0036.056.07l-8.601 2.633-17.737 5.43-8.603 2.634a1.578 1.578 0 00-1.046 1.97l12.436 40.616a1.58 1.58 0 001.969 1.046l5.897-1.805.185-.057v-.194l-.185.057-5.952 1.822a1.393 1.393 0 01-1.737-.923L.247 12.682a1.39 1.39 0 01.923-1.738L9.772 8.31 27.51 2.881 36.112.247a1.393 1.393 0 011.737.923L41.47 13l.057.186h.193l-.057-.185z",fill:"#8D8D8D"}),r().createElement("path",{d:"M11.378 11.855a.836.836 0 01-.798-.59L9.385 7.361a.835.835 0 01.554-1.042l16.318-4.996a.836.836 0 011.042.554l1.195 3.902a.836.836 0 01-.554 1.043l-16.318 4.995a.831.831 0 01-.244.037z",fill:"#C6C6C6"}),r().createElement("circle",{fill:"#C6C6C6",cx:17.636,cy:2.314,r:1.855}),r().createElement("circle",{fill:"#FFF",fillRule:"nonzero",cx:17.636,cy:2.314,r:1.175}),r().createElement("path",{d:"M55.893 53.995H24.544a.79.79 0 01-.788-.789V15.644a.79.79 0 01.788-.788h31.349a.79.79 0 01.788.788v37.562a.79.79 0 01-.788.789z",fill:"#F4F4F4"}),r().createElement("path",{d:"M41.47 13H21.948a1.579 1.579 0 00-1.576 1.577V52.4l.185-.057V14.577c.001-.768.623-1.39 1.391-1.39h19.581L41.471 13zm17.02 0H21.947a1.579 1.579 0 00-1.576 1.577v42.478c0 .87.706 1.576 1.576 1.577H58.49a1.579 1.579 0 001.576-1.577V14.577a1.579 1.579 0 00-1.576-1.576zm1.39 44.055c0 .768-.622 1.39-1.39 1.392H21.947c-.768-.001-1.39-.624-1.39-1.392V14.577c0-.768.622-1.39 1.39-1.39H58.49c.768 0 1.39.622 1.39 1.39v42.478z",fill:"#8D8D8D"}),r().createElement("path",{d:"M48.751 17.082H31.686a.836.836 0 01-.835-.835v-4.081c0-.46.374-.834.835-.835H48.75c.461 0 .834.374.835.835v4.08c0 .462-.374.835-.835.836z",fill:"#C6C6C6"}),r().createElement("circle",{fill:"#C6C6C6",cx:40.218,cy:9.755,r:1.855}),r().createElement("circle",{fill:"#FFF",fillRule:"nonzero",cx:40.218,cy:9.755,r:1.13}))),f=function(){let{t:e}=(0,s.useTranslation)(),t="tablet"===(0,p.useLayoutType)();return r().createElement(i.Layer,null,r().createElement(i.Tile,{className:"-esm-form-builder__empty-state__tile___jF73w"},r().createElement("div",{className:t?"-esm-form-builder__empty-state__tabletHeading___DPyKR":"-esm-form-builder__empty-state__desktopHeading___Z-bpb"},r().createElement("h4",null,e("forms","Forms"))),r().createElement(b,null),r().createElement("p",{className:"-esm-form-builder__empty-state__content___ET3co"},e("noFormsToDisplay","There are no forms to display.")),r().createElement("p",{className:"-esm-form-builder__empty-state__action___tQQy9"},r().createElement(i.Link,{onClick:()=>(0,p.navigate)({to:`${window.spaBase}/form-builder/new`})},e("createNewForm","Create a new form")))))},h=({error:e})=>{let{t}=(0,s.useTranslation)(),a="tablet"===(0,p.useLayoutType)();return r().createElement(i.Layer,null,r().createElement(i.Tile,{className:"-esm-form-builder__error-state__tile___Ai4Wv"},r().createElement("div",{className:a?"-esm-form-builder__error-state__tabletHeading___HslHm":"-esm-form-builder__error-state__desktopHeading___8hxit"},r().createElement("h4",null,t("forms","Forms"))),r().createElement("p",{className:"-esm-form-builder__error-state__errorMessage___RI0uK"},t("error","Error"),": ",e?.message),r().createElement("p",{className:"-esm-form-builder__error-state__errorCopy___CK6PT"},t("errorCopy","Sorry, there was a problem displaying this information. You can try to reload this page, or contact the site administrator and quote the error code above."))))};var g=a(97136),E=a(83335);let y=()=>r().createElement("svg",{height:"64",width:"64",viewBox:"0 0 32 32",xmlns:"http://www.w3.org/2000/svg",xmlSpace:"preserve",fillRule:"evenodd",clipRule:"evenodd",strokeLinejoin:"round",strokeMiterlimit:"2"},r().createElement("path",{d:"M27 31.36H8a.36.36 0 0 1-.36-.36v-1.64H6a.36.36 0 0 1-.36-.36v-1.64H5a.36.36 0 0 1-.36-.36V3A.36.36 0 0 1 5 2.64h4.64V2a.36.36 0 0 1 .36-.36h1.64V1A.36.36 0 0 1 12 .64h4a.36.36 0 0 1 .36.36v.64H18a.36.36 0 0 1 .36.36v.64H23a.36.36 0 0 1 .36.36v1.64H25a.36.36 0 0 1 .36.36v1.64H27a.36.36 0 0 1 .36.36v24a.36.36 0 0 1-.36.36Z",fill:"#d2e5e5"}),r().createElement("path",{d:"M8.36 30.64h18.28V7.36h-1.28V29a.36.36 0 0 1-.36.36H8.36v1.28Z",fill:"#8abab8"}),r().createElement("path",{d:"M5.36 26.64h17.28V3.36h-4.28V4a.36.36 0 0 1-.36.36h-8A.36.36 0 0 1 9.64 4v-.64H5.36v23.28Z",fill:"#8abab8"}),r().createElement("path",{fill:"#fff",d:"M7.5 12.64h13v.72h-13zM7.5 8.64h13v.72h-13zM7.5 20.64h13v.72h-13zM7.5 16.64h13v.72h-13z"}),r().createElement("path",{d:"M10.36 3.64h7.28V2.36H16a.36.36 0 0 1-.36-.36v-.64h-3.28V2a.36.36 0 0 1-.36.36h-1.64v1.28ZM6.36 28.64h18.28V5.36h-1.28V27a.36.36 0 0 1-.36.36H6.36v1.28Z",fill:"#8abab8"})),w={header:"-esm-form-builder__header__header___SDlCx","left-justified-items":"-esm-form-builder__header__left-justified-items___yMMyK","right-justified-items":"-esm-form-builder__header__right-justified-items___VFsPg","page-name":"-esm-form-builder__header__page-name___Kd8pu","page-labels":"-esm-form-builder__header__page-labels___7bzGg","date-and-location":"-esm-form-builder__header__date-and-location___bnzV2",userContainer:"-esm-form-builder__header__userContainer___7ofa0",value:"-esm-form-builder__header__value___Ja9MH",middot:"-esm-form-builder__header__middot___9yR-4"},v=({title:e})=>{let{t}=(0,s.useTranslation)(),a=(0,p.useSession)(),n=a?.sessionLocation?.display;return r().createElement("div",{className:w.header},r().createElement("div",{className:w["left-justified-items"]},r().createElement(y,null),r().createElement("div",{className:w["page-labels"]},r().createElement("p",null,t("formBuilder","Form builder")),r().createElement("p",{className:w["page-name"]},e))),r().createElement("div",{className:w["right-justified-items"]},r().createElement("div",{className:w.userContainer},r().createElement("p",null,a?.user?.person?.display),r().createElement(u.rs,{size:16,className:w.userIcon})),r().createElement("div",{className:w["date-and-location"]},r().createElement(g.aZ,{size:16}),r().createElement("span",{className:w.value},n),r().createElement("span",{className:w.middot},"\xb7"),r().createElement(E.Vv,{size:16}),r().createElement("span",{className:w.value},(0,p.formatDate)(new Date,{mode:"standard"})))))};var C=a(70721);let S=({totalItems:e,pageSize:t,onPageNumberChange:a,pageNumber:l,currentItems:o})=>{let{itemsDisplayed:c,pageSizes:d}=function(e,t,a,r){let{t:l}=(0,s.useTranslation)(),o=(0,n.useMemo)(()=>{let a=Math.ceil(t/e);return isNaN(a)&&(a=0),[...Array(a).keys()].map(t=>(t+1)*e)},[e,t]),i=(0,n.useMemo)(()=>e>t?`${t} / ${t}`:e*a>t?`${e*(a-1)+r} / ${t}`:`${e*a} / ${t}`,[e,t,a,r]);return{pageSizes:o,itemsDisplayed:`${i} ${l("items"," items")}`}}(t,e,l,o),u="tablet"===(0,p.useLayoutType)();return r().createElement(r().Fragment,null,e>0&&r().createElement("div",{className:u?"-esm-form-builder__pagination__tablet___uSPe-":"-esm-form-builder__pagination__desktop___Spb8M"},r().createElement("div",null,c),r().createElement(i.Pagination,{className:"-esm-form-builder__pagination__pagination___G81qx",page:l,pageSize:t,pageSizes:d,totalItems:e,onChange:a,size:u?"lg":"sm"})))};var k=a(79140),N=a(70243);let T={container:"-esm-form-builder__dashboard__container___ExLMu",backgroundDataFetchingIndicator:"-esm-form-builder__dashboard__backgroundDataFetchingIndicator___wNwb7",flexContainer:"-esm-form-builder__dashboard__flexContainer___57jX7",toolbarWrapper:"-esm-form-builder__dashboard__toolbarWrapper___uws3q",headerContainer:"-esm-form-builder__dashboard__headerContainer___3G6kP",searchbox:"-esm-form-builder__dashboard__searchbox___HEfNy",tableToolbar:"-esm-form-builder__dashboard__tableToolbar___P0O1U",link:"-esm-form-builder__dashboard__link___GD54A",table:"-esm-form-builder__dashboard__table___PB2ul",tableContainer:"-esm-form-builder__dashboard__tableContainer___xZZPN",filterContainer:"-esm-form-builder__dashboard__filterContainer___-NhmA",filterDropdown:"-esm-form-builder__dashboard__filterDropdown___TR7KF",content:"-esm-form-builder__dashboard__content___A0rW1",tileContainer:"-esm-form-builder__dashboard__tileContainer___HQWcm",tile:"-esm-form-builder__dashboard__tile___TerAk",tileContent:"-esm-form-builder__dashboard__tileContent___LQhc5",warningMessage:"-esm-form-builder__dashboard__warningMessage___C3SE2",actionButtons:"-esm-form-builder__dashboard__actionButtons___t3tKH"};function q({condition:e,invertTone:t=!1}){let{t:a}=(0,s.useTranslation)();return e?r().createElement(i.Tag,{type:t?"red":"green",size:"md",title:"Clear Filter","data-testid":"yes-tag"},a("yes","Yes")):r().createElement(i.Tag,{type:"cool-gray",size:"md",title:"Clear Filter","data-testid":"no-tag"},a("no","No"))}function B({form:e,mutate:t,responsiveSize:a,t:l}){let{clobdata:o}=(0,k.S)(e),s=e?.resources,[m,_]=(0,n.useState)(!1),b=(0,n.useMemo)(()=>new Blob([JSON.stringify(o,null,2)],{type:"application/json"}),[o]),f=(0,n.useCallback)(async a=>{try{let n=await (0,C.i6)(a);204===n.status&&((0,p.showSnackbar)({title:l("formRetired","Form retired"),kind:"success",isLowContrast:!0,subtitle:l("formRetiredMessage",'The form "{{- formName}}" has been retired successfully',{formName:e.name})}),await t())}catch(e){e instanceof Error&&(0,p.showSnackbar)({title:l("errorRetiringForm","Error retiring form"),kind:"error",subtitle:e?.message})}finally{_(!1)}},[e.name,t,l]),h=(0,n.useCallback)(async()=>{try{let a=await (0,C.Rv)(e.uuid);200===a.status&&((0,p.showSnackbar)({title:l("formRestored","Form restored"),kind:"success",isLowContrast:!0,subtitle:l("formRestoredMessage",'The form "{{- formName}}" has been restored',{formName:e.name})}),await t())}catch(e){e instanceof Error&&(0,p.showSnackbar)({title:l("errorRestoringForm","Error restoring form"),kind:"error",subtitle:e?.message})}},[e.uuid,e.name,t,l]),g=(0,n.useCallback)(()=>{let t=(0,p.showModal)("delete-form-modal",{closeModal:()=>t(),isDeletingForm:m,onDeleteForm:()=>f(e.uuid)})},[e.uuid,f,m]);return r().createElement("div",{className:T.actionButtons},0!=s.length&&e?.resources[0]?r().createElement(r().Fragment,null,r().createElement(()=>r().createElement(i.IconButton,{enterDelayMs:300,kind:"ghost",label:l("editSchema","Edit schema"),onClick:()=>(0,p.navigate)({to:`${window.spaBase}/form-builder/edit/${e.uuid}`}),size:a},r().createElement(d.ff,null)),null),r().createElement(()=>r().createElement("a",{download:`${e?.name}.json`,href:window.URL.createObjectURL(b)},r().createElement(i.IconButton,{enterDelayMs:300,kind:"ghost",label:l("downloadSchema","Download schema"),size:a},r().createElement(d.f5,null))),null)):r().createElement(()=>r().createElement(i.IconButton,{enterDelayMs:300,label:l("import","Import"),kind:"ghost",onClick:()=>(0,p.navigate)({to:`${window.spaBase}/form-builder/edit/${e.uuid}`}),size:a},r().createElement(c.t0,null)),null),e.retired?r().createElement(()=>r().createElement(i.IconButton,{enterDelayMs:300,kind:"ghost",label:l("restoreSchema","Restore form"),onClick:h,size:a},r().createElement(u.Vn,null)),null):r().createElement(()=>r().createElement(i.IconButton,{enterDelayMs:300,kind:"ghost",label:l("retireSchema","Retire schema"),onClick:g,size:a},r().createElement(u.zH,null)),null))}function I({forms:e,isValidating:t,mutate:a,t:l}){let o="tablet"===(0,p.useLayoutType)(),s=o?"lg":"sm",[c,d]=(0,n.useState)("Active"),[u,b]=(0,n.useState)(""),f=(0,n.useMemo)(()=>c&&"All"!==c?"Active"===c?e.filter(e=>!e.retired):"Published"===c?e.filter(e=>e.published&&!e.retired):"Unpublished"===c?e.filter(e=>!e.published&&!e.retired):"Retired"===c?e.filter(e=>e.retired):e:e,[c,e]),h=[{header:l("name","Name"),key:"name",isSortable:!0},{header:l("version","Version"),key:"version",isSortable:!0},{header:l("published","Published"),key:"published",isSortable:!0},{header:l("retired","Retired"),key:"retired",isSortable:!0},{header:l("schemaActions","Schema actions"),key:"actions",isSortable:!1}],g=(0,n.useMemo)(()=>u&&""!==u.trim()?f.filter(e=>e.name.toLowerCase().includes(u.toLowerCase())):f,[u,f]),{paginated:E,goTo:y,results:w,currentPage:v}=(0,p.usePagination)(g,10),C=w?.map(e=>({id:e?.uuid,name:e.name,version:e.version,published:e.published,retired:e.retired,actions:e.uuid})),k=(0,n.useMemo)(()=>new Map(w?.map(e=>[e.uuid,e])??[]),[w]),N=(0,n.useCallback)(e=>{y(1),b(e.target.value)},[y,b]);return r().createElement(r().Fragment,null,r().createElement("div",{className:T.flexContainer},r().createElement("div",{className:T.filterContainer},r().createElement(i.Dropdown,{className:T.filterDropdown,id:"publishStatusFilter",initialSelectedItem:"Active",label:"",titleText:l("filterBy","Filter by")+":",size:s,type:"inline",items:["Active","All","Published","Unpublished","Retired"],onChange:({selectedItem:e})=>d(e)})),r().createElement("div",{className:T.backgroundDataFetchingIndicator},r().createElement("span",null,t?r().createElement(i.InlineLoading,null):null))),r().createElement(i.DataTable,{rows:C,headers:h,size:o?"lg":"sm",useZebraStyles:!0,isSortable:!0},({rows:e,headers:t,getTableProps:n,getHeaderProps:o,getRowProps:c})=>r().createElement(r().Fragment,null,r().createElement(i.TableContainer,{className:T.tableContainer,"data-testid":"forms-table"},r().createElement("div",{className:T.toolbarWrapper},r().createElement(i.TableToolbar,{className:T.tableToolbar,size:s},r().createElement(i.TableToolbarContent,{className:T.headerContainer},r().createElement(i.TableToolbarSearch,{expanded:!0,size:s,className:T.searchbox,onChange:N,placeholder:l("searchThisList","Search this list")}),r().createElement(i.Button,{kind:"primary",iconDescription:l("createNewForm","Create a new form"),size:s,onClick:()=>(0,p.navigate)({to:`${window.spaBase}/form-builder/new`})},r().createElement(m.OM,{size:16,style:{marginRight:"0.5rem"},"aria-hidden":!0}),l("createNewForm","Create a new form"))))),r().createElement(i.Table,{...n(),className:T.table},r().createElement(i.TableHead,null,r().createElement(i.TableRow,null,t.map(e=>{let t=e.isSortable;return r().createElement(i.TableHeader,o({header:e,isSortable:t}),e.header)}))),r().createElement(i.TableBody,null,e.map(e=>r().createElement(i.TableRow,{key:e.id,...c({row:e}),"data-testid":`form-row-${e.id}`},e.cells.map(e=>r().createElement(i.TableCell,{key:e.id},(e=>{switch(k.get(String(e.value))??k.get(e.id.split(":")[0]),e.info.header){case"name":{let t=k.get(e.id.split(":")[0]);return r().createElement(p.ConfigurableLink,{className:T.link,to:"${openmrsSpaBase}/form-builder/edit/${formUuid}",templateParams:{formUuid:t?.uuid},onMouseEnter:()=>t&&void(0,_.preload)(`${p.restBaseUrl}/form/${t.uuid}?v=full`,p.openmrsFetch)},String(e.value))}case"published":return r().createElement(q,{condition:!!e.value});case"retired":return r().createElement(q,{condition:!!e.value,invertTone:!0});case"actions":{let t=k.get(String(e.value));return t?r().createElement(B,{form:t,mutate:a,responsiveSize:s,t:l}):null}default:return String(e.value)}})(e)))))))),0===e.length?r().createElement("div",{className:T.tileContainer},r().createElement(i.Tile,{className:T.tile},r().createElement("div",{className:T.tileContent},r().createElement("p",{className:T.content},l("noMatchingFormsToDisplay","No matching forms to display")),r().createElement("p",{className:T.helper},l("checkFilters","Check the filters above"))))):null)),E&&r().createElement(S,{currentItems:w.length,totalItems:g.length,onPageNumberChange:({page:e})=>{y(e)},pageNumber:v,pageSize:10}))}let x=()=>{let{t:e}=(0,s.useTranslation)(),{forms:t,error:a,isLoading:n,isValidating:l,mutate:o}=(0,N.h)(),{showSchemaSaveWarning:c}=(0,p.useConfig)();return r().createElement("main",null,r().createElement(v,{title:e("home","Home")}),r().createElement("div",{className:T.container},a?r().createElement(h,{error:a}):n?r().createElement(i.DataTableSkeleton,{role:"progressbar"}):0===t.length?r().createElement(f,null):r().createElement(r().Fragment,null,c&&r().createElement(i.InlineNotification,{className:T.warningMessage,kind:"info",lowContrast:!0,title:e("schemaSaveWarningMessage","This is a demo server and can't be relied upon to save your schemas permanently. To avoid losing your work, please save your schemas to your local machine. Alternatively, upload your schema to the distro repo to have it persisted across server resets.")}),r().createElement(I,{forms:t,isValidating:l,mutate:o,t:e}))))};var F=a(46942),M=a.n(F),L=a(49564),D=a(54535);let O=async(e,t,a)=>{let n=[],r=[];if(e){let l="string"==typeof e?JSON.parse(e):e,o=[];l.pages?.forEach(e=>e.sections?.forEach(e=>e.questions?.forEach(e=>{o.push($(e,n,t,r,a),z(e,n,a),R(e,n,a),A(e,n,a)),"obsGroup"===e.type&&e?.questions?.forEach(e=>o.push($(e,n,t,r,a),z(e,n,a),A(e,n,a)))}))),await Promise.all(o)}return[n,r]},$=async(e,t,a,n,r)=>{let l=e.questionOptions.conceptMappings,o=e.questionOptions.concept?e.questionOptions.concept:l?.length?l.map(e=>`${e.type}:${e.value}`).join(","):"";if(o)try{let{data:l}=await (0,p.openmrsFetch)(`${p.restBaseUrl}/concept?references=${o}&v=custom:(uuid,display,datatype,answers,conceptMappings:(conceptReferenceTerm:(conceptSource:(name),code)))`);if(l.results.length){let[o]=l.results;"Boolean"===o.datatype.name&&e.questionOptions.answers?.forEach(a=>{"cf82933b-3f3f-45e7-a5ab-5d31aaee3da3"!==a.concept&&"488b58ff-64f5-4f8a-8979-fa79940b1594"!==a.concept&&t.push({errorMessage:r("booleanConceptNonBooleanAnswer",'Concept "{{concept}}" of type "boolean" has a non-boolean answer "{{answer}}"',{concept:e.questionOptions.concept,answer:a.label}),field:e})}),"Coded"===o.datatype.name&&e.questionOptions.answers?.forEach(t=>{o.answers.some(e=>e.uuid===t.concept)||n.push({warningMessage:r("answerNotInResponseAnswers",'Answer: "{{label}}" - "{{concept}}" does not exist in the response answers but exists in the form',{label:t.label,concept:t.concept}),field:e})}),U(e,o,t,a,r)}else t.push({errorMessage:r("conceptNotFound",'Concept "{{concept}}" not found',{concept:e.questionOptions.concept}),field:e})}catch(e){console.error(e)}else"workspace-launcher"!==e.questionOptions.rendering&&"personAttribute"!==e.type&&t.push({errorMessage:r("noUuid","No UUID"),field:e})},R=async(e,t,a)=>{if("patientIdentifier"!==e.type||e.questionOptions.identifierType||t.push({errorMessage:a("patientIdentifierTypeMissing","Patient identifier type missing in schema"),field:e}),e.questionOptions.identifierType)try{let{data:n}=await (0,p.openmrsFetch)(`${p.restBaseUrl}/patientidentifiertype/${e.questionOptions.identifierType}`);n||t.push({errorMessage:a("identifierTypeDoesNotExist","The identifier type does not exist"),field:e})}catch(n){console.error("Error fetching patient identifier:",n),t.push({errorMessage:a("identifierTypeDoesNotExist","The identifier type does not exist"),field:e})}},A=async(e,t,a)=>{let n=e.questionOptions.attributeType;if("personAttribute"===e.type&&!n)return void t.push({errorMessage:a("personAttributeTypeMissing","Person attribute type missing in schema"),field:e});if(n)try{let{data:r}=await (0,p.openmrsFetch)(`${p.restBaseUrl}/personattributetype/${n}`);r||t.push({errorMessage:a("personAttributeTypeDoesNotExist","The person attribute type does not exist"),field:e})}catch(n){console.error("Error fetching person attribute:",n),t.push({errorMessage:a("personAttributeTypeDoesNotExist","The person attribute type does not exist"),field:e})}},U=(e,t,a,n,r)=>{Object.prototype.hasOwnProperty.call(n,t.datatype.name)?n[t.datatype.name].includes(e.questionOptions.rendering)||a.push({errorMessage:r("datatypeMismatch",'{{concept}}: datatype "{{datatype}}" doesn\'t match control type "{{rendering}}"',{concept:e.questionOptions.concept,datatype:t.datatype.name,rendering:e.questionOptions.rendering}),field:e}):a.push({errorMessage:r("untrackedDatatype",'Untracked datatype "{{datatype}}"',{datatype:t.datatype.name}),field:e})},z=async(e,t,a)=>{let n=e.questionOptions.answers;if(n?.length)for(let e of n){let n=e.concept?e.concept:e.conceptMappings?.length?e.conceptMappings.map(e=>`${e.type}:${e.value}`).join(","):"";try{(await (0,p.openmrsFetch)(`${p.restBaseUrl}/concept?references=${n}&v=custom:(uuid,display,datatype,conceptMappings:(conceptReferenceTerm:(conceptSource:(name),code)))`)).data.results.length||t.push({errorMessage:a("answerConceptNotFound",'Concept "{{concept}}" not found',{concept:e.concept}),field:e})}catch(e){console.error("Error fetching concept:",e)}}};var P=a(6916);let j="-esm-form-builder__action-buttons__spinner___0U3zu",V=function({isValidating:e,onFormValidation:t,schema:a,schemaErrors:l,setPublishedWithErrors:s,setValidationComplete:c,setValidationResponse:d,t:u}){let{formUuid:m}=(0,o.g)(),{form:_,mutate:b}=(0,P.m)(m),f=_?.resources?.some(({name:e})=>"JSON schema"===e),[h,g]=(0,n.useState)("idle"),[E,y]=(0,n.useState)(!1),w=(0,n.useRef)();(0,n.useEffect)(()=>()=>w.current?.(),[]);let{dataTypeToRenderingMap:v,enableFormValidation:S}=(0,p.useConfig)();async function k(){try{g("publishing"),await (0,C.UY)(_.uuid),(0,p.showSnackbar)({title:u("formPublished","Form published"),kind:"success",isLowContrast:!0,subtitle:`${_.name} `+u("formPublishedSuccessfully","form was published successfully")}),g("published"),await b()}catch(e){e instanceof Error&&((0,p.showSnackbar)({title:u("errorPublishingForm","Error publishing form"),kind:"error",subtitle:e?.message}),g("error"))}}async function N(){g("validateBeforePublishing");let[e]=await O(a,v,u);if(d(e),e.length){g("validated"),c(!0),s(!0);return}await k()}let T=(0,n.useCallback)(async()=>{g("unpublishing");try{await (0,C.b4)(_.uuid),g("unpublished"),(0,p.showSnackbar)({title:u("formUnpublished","Form unpublished"),kind:"success",isLowContrast:!0,subtitle:`${_.name} `+u("formUnpublishedSuccessfully","form was unpublished successfully")}),await b()}catch(e){e instanceof Error&&((0,p.showSnackbar)({title:u("errorUnpublishingForm","Error unpublishing form"),kind:"error",subtitle:e?.message}),g("error"))}},[_?.name,_?.uuid,b,u]),q=(0,n.useCallback)(()=>{let e=(0,p.showModal)("unpublish-form-modal",{closeModal:()=>e(),onUnpublishForm:T})},[T]);return r().createElement("div",{className:"-esm-form-builder__action-buttons__actionButtons___FIBsK"},r().createElement(i.Button,{disabled:!a||E,kind:"primary",onClick:()=>{w.current?.(),w.current=(0,p.showModal)("save-form-modal",{form:_,schema:a,formUuid:m,closeModal:()=>w.current?.(),onSavingChange:y})}},u("saveForm","Save form")),r().createElement(r().Fragment,null,_&&S&&r().createElement(i.Button,{kind:"tertiary",onClick:t,disabled:e},e?r().createElement(i.InlineLoading,{className:j,description:u("validating","Validating")+"..."}):r().createElement("span",null,u("validateForm","Validate form"))),_&&!_.published?S?r().createElement(i.Button,{kind:"secondary",onClick:N,disabled:!f||"validateBeforePublishing"===h||l.length>0},"validateBeforePublishing"===h?r().createElement(i.InlineLoading,{className:j,description:u("validating","Validating")+"..."}):r().createElement("span",null,u("validateAndPublishForm","Validate and publish form"))):r().createElement(i.Button,{kind:"secondary",onClick:k,disabled:!f||"publishing"===h||l.length>0},"publishing"!==h||_?.published?r().createElement("span",null,u("publishForm","Publish form")):r().createElement(i.InlineLoading,{className:j,description:u("publishing","Publishing")+"..."})):null,_&&_.published?r().createElement(i.Button,{kind:"danger--tertiary",onClick:q,disabled:"unpublishing"===h},u("unpublishForm","Unpublish form")):null))};var H=a(31397);function Q({value:e}){let{t}=(0,s.useTranslation)(),a=(0,n.useCallback)(()=>{navigator.clipboard.writeText(e)},[e]);return r().createElement("span",{style:{display:"inline-flex",alignItems:"center",gap:"0.25rem"}},r().createElement("span",null,e),r().createElement(i.IconButton,{kind:"ghost",size:"sm",label:t("copyToClipboard","Copy to clipboard"),onClick:a},r().createElement(H.QR,null)))}let J=({form:e})=>{let{t}=(0,s.useTranslation)();return r().createElement(i.StructuredListWrapper,{isCondensed:!0,selection:!1},r().createElement(i.StructuredListBody,null,r().createElement(i.StructuredListRow,null,r().createElement(i.StructuredListCell,null,r().createElement("b",null,t("formName","Form Name"))),r().createElement(i.StructuredListCell,null,e.name)),r().createElement(i.StructuredListRow,null,r().createElement(i.StructuredListCell,null,t("description","Description")),r().createElement(i.StructuredListCell,null,e.description)),r().createElement(i.StructuredListRow,null,r().createElement(i.StructuredListCell,null,t("formUuid","Form UUID")),r().createElement(i.StructuredListCell,null,r().createElement(Q,{value:e.uuid}))),r().createElement(i.StructuredListRow,null,r().createElement(i.StructuredListCell,null,t("version","Version")),r().createElement(i.StructuredListCell,null,e.version)),r().createElement(i.StructuredListRow,null,r().createElement(i.StructuredListCell,null,t("encounterType","Encounter Type")),r().createElement(i.StructuredListCell,null,e.encounterType?.uuid?r().createElement(Q,{value:e.encounterType.uuid}):t("noEncounterType","None"))),r().createElement(i.StructuredListRow,null,r().createElement(i.StructuredListCell,null,t("createdBy","Created By")),r().createElement(i.StructuredListCell,null,`${e?.auditInfo?.creator?.display??t("unknownUser","Unknown")} on ${(0,p.formatDatetime)((0,p.parseDate)(e?.auditInfo?.dateCreated))}`)),r().createElement(i.StructuredListRow,null,r().createElement(i.StructuredListCell,null,t("lastEditedBy","Last Edited By")),r().createElement(i.StructuredListCell,null,e?.auditInfo?.dateChanged?`${e?.auditInfo?.changedBy?.display??t("unknownUser","Unknown")} on ${(0,p.formatDatetime)((0,p.parseDate)(e?.auditInfo?.dateChanged))}`:r().createElement("span",{"aria-label":t("uneditedFormMsg","This form has never been edited"),style:{color:"var(--cds-text-placeholder)"}},"—"))),r().createElement(i.StructuredListRow,null,r().createElement(i.StructuredListCell,null,t("published","Published")),r().createElement(i.StructuredListCell,null,e.published?t("yes","Yes"):t("no","No"))),r().createElement(i.StructuredListRow,null,r().createElement(i.StructuredListCell,null,t("retired","Retired")),r().createElement(i.StructuredListCell,null,e.retired?t("yes","Yes"):t("no","No")))))};var K=a(47665),G=a(22958);let Z="-esm-form-builder__form-renderer__helperText___dF96R",W="-esm-form-builder__form-renderer__heading___qZZcH";function X({error:e}){let{t}=(0,s.useTranslation)();return r().createElement(i.Tile,{className:"-esm-form-builder__form-renderer__errorStateTile___O5Lt7"},r().createElement("h4",{className:W},t("problemLoadingPreview","There was a problem loading the form preview")),r().createElement("p",{className:Z},r().createElement("pre",null,e.message)),r().createElement("p",{className:Z},t("fixSchemaAndRender",'Fix the error in the Schema Editor and click "Render changes" to retry.')))}let Y=({isLoading:e,schema:t})=>{let{t:a}=(0,s.useTranslation)(),l={encounterType:"",name:"Test Form",pages:[{label:"Test Page",sections:[{label:"Test Section",isExpanded:"true",questions:[{label:"Test Question",type:"obs",questionOptions:{rendering:"text",concept:"xxxx"},id:"testQuestion"}]}]}],processor:"EncounterFormProcessor",referencedForms:[],uuid:"xxx"},[o,c]=(0,n.useState)(l);return((0,n.useEffect)(()=>{t&&c(t)},[t]),e)?r().createElement("div",{className:"-esm-form-builder__form-renderer__loadingContainer___5-hoT"},r().createElement(i.InlineLoading,{className:"-esm-form-builder__form-renderer__loader___oXGC4",description:a("loading","Loading")+"..."})):r().createElement("div",{className:"-esm-form-builder__form-renderer__container___qAa7V"},!t&&r().createElement(i.Tile,{className:"-esm-form-builder__form-renderer__emptyStateTile___lbKY4"},r().createElement("h4",{className:W},a("noSchemaLoaded","No schema loaded")),r().createElement("p",{className:Z},a("formRendererHelperText","Load a form schema in the Schema Editor to the left to see it rendered here by the Form Engine."))),t===o&&r().createElement(K.tH,{FallbackComponent:X,resetKeys:[o]},r().createElement(G.Tn,{formJson:o,mode:"enter",patientUUID:""})))};var ee=a(98668),et=a(43627),ea=a(29012);let en=({markdown:e})=>{let t=function(e,t){let a=Array.isArray(e)?e.join("\n"):e,n=a.length<=15?a:a.slice(0,15).trimEnd(),r=/[*_#]+$/;r.test(n)&&(n=n.replace(r,"").trimEnd());let l=n,o=[];for(let e of t){let t=l.indexOf(e),a=l.indexOf(e,t+e.length);-1!==t&&(-1===a?(o.push(e),l=l.replace(e,"")):l=l.replace(e,"").replace(e,""))}return n+o.reverse().join("")+(a.length>15?" ...":"")}(e,["***","**","*","__","_"]);return r().createElement(ea.o,{children:t,unwrapDisallowed:!0,allowedElements:["h1","h2","h3","h4","h5","h6","p","strong","em"]})},er="-esm-form-builder__draggable-question__collapseIcon___CymCK",el=({handleDuplicateQuestion:e,onSchemaChange:t,pageIndex:a,question:l,questionCount:o,questionIndex:c,schema:m,sectionIndex:_,subQuestionIndex:b,children:f})=>{let{t:h}=(0,s.useTranslation)(),[g,E]=(0,n.useState)(!0),y=(0,n.useCallback)(()=>{let e=(0,p.showModal)("question-modal",{formField:l,closeModal:()=>e(),onSchemaChange:t,schema:m,questionIndex:c,pageIndex:a,sectionIndex:_,subQuestionIndex:b})},[t,a,l,c,m,_,b]),w=(0,n.useCallback)(()=>{let e=(0,p.showModal)("delete-question-modal",{closeModal:()=>e(),pageIndex:a,sectionIndex:_,question:l,questionIndex:c,subQuestionIndex:b,onSchemaChange:t,schema:m})},[t,a,l,c,m,_,b]),{attributes:v,listeners:C,setNodeRef:S,active:k,isDragging:N,over:T,isOver:q}=(0,et.gl)({id:l.id,data:{type:null==b?"question":"obsQuestion",question:{handleDuplicateQuestion:e,onSchemaChange:t,pageIndex:a,sectionIndex:_,question:l,questionCount:o,questionIndex:c,subQuestionIndex:null!==b?b:null,schema:m}},disabled:o<=1&&null==b}),B=(0,n.useCallback)(()=>{N||(null!=b?e(l,a,_,c):e(l,a,_))},[e,N,l,a,_,c,b]);return r().createElement("div",{ref:S,className:M()("-esm-form-builder__draggable-question__question___1YGRp",{"-esm-form-builder__draggable-question__dragContainer___43qlJ":!0,"-esm-form-builder__draggable-question__dragContainerWhenDragging___Dybal":N,"-esm-form-builder__draggable-question__dropZone___QitMD":T?.id===l.id,"-esm-form-builder__draggable-question__droppable___ou3PG":k?.id===l.id})},r().createElement("div",{className:M()("-esm-form-builder__draggable-question__questionContainer___GDe3o",{"-esm-form-builder__draggable-question__obsGroup___eY5JM":l?.questions&&l?.questions.length>0}),onClick:()=>{l.questions&&E(!g)}},r().createElement("div",{className:"-esm-form-builder__draggable-question__iconAndName___mGiMs"},r().createElement("div",{ref:S,...v,...C},r().createElement(i.IconButton,{className:"-esm-form-builder__draggable-question__dragIcon___Iwqc-",enterDelayMs:T?6e3:300,label:h("dragToReorder","Drag to reorder"),kind:"ghost",size:"md"},r().createElement(d.sx,null))),r().createElement("p",{className:"-esm-form-builder__draggable-question__questionLabel___ThMqf"},"markdown"===l.questionOptions.rendering?r().createElement(en,{markdown:l.value}):l.label)),r().createElement("div",{className:"-esm-form-builder__draggable-question__buttonsContainer___Xonrc"},r().createElement(i.IconButton,{enterDelayMs:300,label:h("duplicateQuestion","Duplicate question"),kind:"ghost",onClick:B,size:"md"},r().createElement(H.QR,null)),r().createElement(i.IconButton,{enterDelayMs:300,label:h("editQuestion","Edit question"),kind:"ghost",onClick:y,size:"md"},r().createElement(d.ff,null)),r().createElement(i.IconButton,{enterDelayMs:300,label:h("deleteQuestion","Delete question"),kind:"ghost",onClick:w,size:"md"},r().createElement(u.zH,null)),l?.questions&&l?.questions.length>0&&r().createElement("span",{className:"-esm-form-builder__draggable-question__collapseIconWrapper___ayXXV"},g?r().createElement(p.ChevronDownIcon,{className:er,"aria-label":"Expand"}):r().createElement(p.ChevronUpIcon,{className:er,"aria-label":"Collapse"})))),l?.questions&&r().createElement("div",{className:M()("-esm-form-builder__draggable-question__obsQuestions___L7lQR",{"-esm-form-builder__draggable-question__hiddenAccordion___EFVwN":g,"-esm-form-builder__draggable-question__accordionContainer___fHVME":!g})},r().createElement(et.gB,{items:l.questions.map(e=>e.id)},f)))};var eo=a(54499),es=a(59184);let ei=({id:e,handleCancel:t,handleSave:a,value:l})=>{let{t:o}=(0,s.useTranslation)(),[c,d]=(0,n.useState)(l);return r().createElement(r().Fragment,null,r().createElement(i.TextInput,{id:e,labelText:"",value:c,onChange:e=>d(e.target.value)}),r().createElement("div",{className:"-esm-form-builder__value-editor__actionButtons___ZGibM"},r().createElement(i.Button,{size:"md",renderIcon:e=>r().createElement(eo.eM,{...e,size:16}),kind:"primary",onClick:()=>a(c)},o("saveButtonText","Save")),r().createElement(i.Button,{size:"md",renderIcon:e=>r().createElement(es.bm,{...e,size:16}),kind:"secondary",onClick:t},o("cancelButtonText","Cancel"))))},ec={schemaLabel:"-esm-form-builder__editable-value__schemaLabel___+x+E+",pageLabel:"-esm-form-builder__editable-value__pageLabel___qXcLD",sectionLabel:"-esm-form-builder__editable-value__sectionLabel___G8kBI"},ed=({elementType:e,id:t,value:a,onSave:l})=>{let{t:o}=(0,s.useTranslation)(),[c,u]=(0,n.useState)(!1),m=()=>{u(!1)};return c?r().createElement(ei,{handleCancel:m,handleSave:e=>{l(e),m()},id:t,value:a}):r().createElement(r().Fragment,null,r().createElement("h1",{className:ec[`${e}Label`]},a),r().createElement(i.IconButton,{enterDelayMs:300,kind:"ghost",label:o("editButton","Edit {{elementType}}",{elementType:e}),onClick:()=>u(!0),size:"md"},r().createElement(d.ff,null)))},eu={container:"-esm-form-builder__interactive-builder__container___qGI+m",editableFieldsContainer:"-esm-form-builder__interactive-builder__editableFieldsContainer___w-njG",addQuestionButton:"-esm-form-builder__interactive-builder__addQuestionButton___HfTF8",header:"-esm-form-builder__interactive-builder__header___K+III",sectionLabel:"-esm-form-builder__interactive-builder__sectionLabel___x40lu",explainer:"-esm-form-builder__interactive-builder__explainer___XNpDZ",sectionExplainer:"-esm-form-builder__interactive-builder__sectionExplainer___6v2Fk",startButton:"-esm-form-builder__interactive-builder__startButton___Lf6zz",editorContainer:"-esm-form-builder__interactive-builder__editorContainer___kOWvN",addSectionButton:"-esm-form-builder__interactive-builder__addSectionButton___0xL++",validationErrorMessage:"-esm-form-builder__interactive-builder__validationErrorMessage___5PJRj",answerErrors:"-esm-form-builder__interactive-builder__answerErrors___JzigN",dragOverlay:"-esm-form-builder__interactive-builder__dragOverlay___I9zui"},em=({isLoading:e,onSchemaChange:t,schema:a,validationResponse:l})=>{let[c,_]=(0,n.useState)(null),b=(0,ee.MS)(ee.cA,{activationConstraint:{distance:10}}),f=(0,ee.MS)(ee.uN),h=(0,ee.FR)(b,f),{t:g}=(0,s.useTranslation)(),{formUuid:E}=(0,o.g)(),y=(0,n.useCallback)(()=>{let e={name:"",pages:[],processor:"EncounterFormProcessor",encounterType:"",referencedForms:[],uuid:""};return a||t({...e}),a||e},[t,a]),w=(0,n.useCallback)(()=>{let e=y(),a=(0,p.showModal)("new-form-modal",{closeModal:()=>a(),schema:e,onSchemaChange:t})},[t,y]),v=(0,n.useCallback)(()=>{let e=(0,p.showModal)("new-page-modal",{closeModal:()=>e(),schema:a,onSchemaChange:t})},[a,t]),C=(0,n.useCallback)(e=>{let n=(0,p.showModal)("delete-page-modal",{closeModal:()=>n(),onSchemaChange:t,schema:a,pageIndex:e})},[t,a]),S=(0,n.useCallback)(e=>{let n=(0,p.showModal)("new-section-modal",{closeModal:()=>n(),pageIndex:e,schema:a,onSchemaChange:t})},[a,t]),k=(0,n.useCallback)((e,n)=>{let r=(0,p.showModal)("new-section-modal",{closeModal:()=>r(),pageIndex:e,sectionIndex:n,schema:a,onSchemaChange:t,modalType:"edit"})},[t,a]),N=(0,n.useCallback)((e,n)=>{let r=(0,p.showModal)("delete-section-modal",{closeModal:()=>r(),pageIndex:e,sectionIndex:n,schema:a,onSchemaChange:t})},[t,a]),T=(0,n.useCallback)((e,n,r)=>{let l=(0,p.showModal)("add-form-reference-modal",{closeModal:()=>l(),pageIndex:e,schema:a,onSchemaChange:t,mode:n,sectionIndex:r})},[t,a]),q=(0,n.useCallback)((e,n)=>{let r=(0,p.showModal)("question-modal",{closeModal:()=>r(),onSchemaChange:t,schema:a,pageIndex:e,sectionIndex:n})},[t,a]),B=(0,n.useCallback)(e=>{try{e&&(a.name=e),t({...a}),(0,p.showSnackbar)({title:g("success","Success!"),kind:"success",isLowContrast:!0,subtitle:g("formRenamed","Form renamed")})}catch(e){(0,p.showSnackbar)({title:g("errorRenamingForm","Error renaming form"),kind:"error",subtitle:e?.message})}},[t,a,g]),I=(0,n.useCallback)((e,n)=>{try{e&&(a.pages[n].label=e),t({...a}),(0,p.showSnackbar)({title:g("success","Success!"),kind:"success",isLowContrast:!0,subtitle:g("pageRenamed","Page renamed")})}catch(e){e instanceof Error&&(0,p.showSnackbar)({title:g("errorRenamingPage","Error renaming page"),kind:"error",subtitle:e?.message})}},[t,a,g]);(0,n.useCallback)((e,n,r)=>{try{e&&(a.pages[n].sections[r].label=e),t({...a}),(0,p.showSnackbar)({title:g("success","Success!"),kind:"success",isLowContrast:!0,subtitle:g("sectionRenamed","Section renamed")})}catch(e){e instanceof Error&&(0,p.showSnackbar)({title:g("errorRenamingSection","Error renaming section"),kind:"error",subtitle:e?.message})}},[t,a,g]);let x=(0,n.useCallback)((e,n,r,l)=>{try{let o=JSON.parse(JSON.stringify(e));o.id=o.id+"Duplicate",Number.isInteger(l)?a.pages[n].sections[r].questions[l].questions.push(o):a.pages[n].sections[r].questions.push(o),t({...a}),(0,p.showSnackbar)({title:g("success","Success!"),kind:"success",isLowContrast:!0,subtitle:g("questionDuplicated","Question duplicated. Please change the duplicated question's ID to a unique, camelcased value")})}catch(e){e instanceof Error&&(0,p.showSnackbar)({title:g("errorDuplicatingQuestion","Error duplicating question"),kind:"error",subtitle:e?.message})}},[t,a,g]),F=e=>{let t=e?.map(e=>e.label)||[];return l.filter(e=>t?.includes(e.field.label))||[]},M=e=>{let t=l.find(t=>t.field.label===e.label&&t.field.id===e.id&&t.field.type===e.type);return t?.errorMessage||""},L=({question:e,pageIndex:n,sectionIndex:l,questionIndex:o})=>r().createElement("div",{className:eu.obsQuestions},e.questions.map((s,i)=>r().createElement(el,{handleDuplicateQuestion:x,key:s.id,onSchemaChange:t,pageIndex:n,question:s,questionCount:e.questions.length,questionIndex:o,schema:a,sectionIndex:l,subQuestionIndex:i})));return r().createElement("div",{className:eu.container},e?r().createElement(i.InlineLoading,{description:g("loadingSchema","Loading schema")+"..."}):null,a?.name&&r().createElement(r().Fragment,null,r().createElement("div",{className:eu.header},r().createElement("div",{className:eu.explainer},r().createElement("p",null,g("welcomeHeading","Welcome to the Interactive Schema builder")),r().createElement("p",null,g("welcomeExplainer","Add pages, sections and questions to your form. The Preview tab automatically updates as you build your form. For a detailed explanation of what constitutes an OpenMRS form schema, please read through the ")," ",r().createElement("a",{target:"_blank",rel:"noopener noreferrer",href:"https://openmrs.atlassian.net/wiki/spaces/projects/pages/68747273/React+Form+Engine"},g("formBuilderDocs","form builder documentation"),"."))),r().createElement(i.Button,{kind:"tertiary",size:"sm",renderIcon:m.OM,onClick:v,iconDescription:g("addPage","Add Page")},g("addPage","Add Page"))),r().createElement("div",{className:eu.editorContainer},r().createElement(ed,{elementType:"schema",id:"formNameInput",value:a?.name,onSave:e=>B(e)}))),!E&&!a?.name&&r().createElement("div",{className:eu.header},r().createElement("p",{className:eu.explainer},g("interactiveBuilderHelperText","The Interactive Builder lets you build your form schema without writing JSON code. The Preview tab automatically updates as you build your form. When done, click Save Form to save your form.")),r().createElement(i.Button,{onClick:w,className:eu.startButton,kind:"primary"},g("startBuilding","Start building"))),r().createElement(ee.Mp,{collisionDetection:e=>[...(0,ee.Qo)(e),...(0,ee.y$)(e),...(0,ee.TT)(e)],onDragStart:e=>{_(e.active.data.current?.question)},onDragEnd:e=>(e=>{let{active:n,over:r}=e;if(!r)return;let l=n.id,o=r.id,s=n.data.current,i=r.data.current;if(l===o||"question"===s.type&&"obsQuestion"===i.type||"obsQuestion"===s.type&&(s.question.sectionIndex!==i.question.sectionIndex||s.question.pageIndex!==i.question.pageIndex||s.question.questionIndex!==i.question.questionIndex))return;let c=function(e,t,a,n){if(!t.question.question)return;let r=JSON.parse(JSON.stringify(e)),l={...t,question:{...t.question,question:JSON.parse(JSON.stringify(t.question.question))}},o=function(e,t){let{pageIndex:a,sectionIndex:n}=t.question;if("obsQuestion"===t.type){let r=e.pages[a]?.sections[n]?.questions?.[t.question.questionIndex];if(!r?.questions)return;return r.questions.splice(t.question.subQuestionIndex,1).length>0?e:void 0}if("question"===t.type){let r=e.pages[a]?.sections[n]?.questions;if(!r)return;return r.splice(t.question.questionIndex,1).length>0?e:void 0}}(r,l);if(!o)return;let s=function(e,t,a,n){let{pageIndex:r,sectionIndex:l}=a.question;if("question"===t.type){let o=e.pages[r]?.sections[l]?.questions;if(!o)return;let s=o.findIndex(e=>e.id===n);if(-1===s)return;return t.question.pageIndex===a.question.pageIndex&&a.question.sectionIndex===t.question.sectionIndex?t.question.questionIndex>a.question.questionIndex?o.splice(s,0,t.question.question):o.splice(s+1,0,t.question.question):o.splice(s,0,t.question.question),e}if("obsQuestion"===t.type){if("question"===a.type){let n=e.pages[r]?.sections[l]?.questions?.[a.question.questionIndex];if(!n?.questions)return;return n.questions.unshift(t.question.question),e}if("obsQuestion"===a.type){let n=e.pages[r]?.sections[l]?.questions?.[a.question.questionIndex];if(!n?.questions)return;return n.questions.splice(a.question.subQuestionIndex,0,t.question.question),e}}}(o,l,a,n);if(s)return s}(a,s,i,o);c?(t(c),_(null)):console.warn("Drag-and-drop: move failed, aborting")})(e),sensors:h},r().createElement(et.gB,{items:a?.pages?.flatMap(e=>e?.sections?.flatMap(e=>e?.questions?.map(e=>e.id)||[])||[])||[]},a?.pages?.length?a.pages.map((e,n)=>r().createElement("div",{className:eu.editableFieldsContainer,key:n},r().createElement("div",{style:{display:"flex",alignItems:"center"}},r().createElement("div",{className:eu.editorContainer},r().createElement(ed,{elementType:"page",id:"pageNameInput",value:a.pages[n].label,onSave:e=>I(e,n)})),r().createElement(i.IconButton,{enterDelayMs:300,kind:"ghost",label:g("deletePage","Delete page"),onClick:()=>C(n),size:"md"},r().createElement(u.zH,null))),r().createElement("div",null,e?.sections?.length?r().createElement("p",{className:eu.sectionExplainer},g("expandSectionExplainer","Below are the sections linked to this page. Expand each section to add questions to it.")):null,e?.sections?.length?e.sections?.map((e,l)=>r().createElement(i.Accordion,{key:l},r().createElement(i.AccordionItem,{title:e.label},r().createElement(r().Fragment,null,r().createElement("div",{style:{display:"flex",alignItems:"center"}},r().createElement("div",{className:eu.editorContainer},r().createElement("h1",{className:eu.sectionLabel},e.label),r().createElement(i.IconButton,{enterDelayMs:300,kind:"ghost",label:g("editSection","Edit section"),onClick:()=>e.reference?T(n,"edit",l):k(n,l),size:"md"},r().createElement(d.ff,null))),r().createElement(i.IconButton,{enterDelayMs:300,kind:"ghost",label:g("deleteSection","Delete section"),onClick:()=>N(n,l),size:"md"},r().createElement(u.zH,null))),r().createElement("div",null,e.questions?.length?e.questions.map((o,s)=>r().createElement("div",{id:`droppable-question-${n}-${l}-${s}`,key:s},r().createElement(el,{handleDuplicateQuestion:x,key:o.id,onSchemaChange:t,pageIndex:n,question:o,questionCount:e.questions.length,questionIndex:s,schema:a,sectionIndex:l},r().createElement(L,{question:o,pageIndex:n,sectionIndex:l,questionIndex:s})),M(o)&&r().createElement("div",{className:eu.validationErrorMessage},M(o)),F(o.questionOptions.answers)?.length?r().createElement("div",{className:eu.answerErrors},r().createElement("div",null,g("answerErrors","Answer Errors")),F(o.questionOptions.answers)?.map((e,t)=>r().createElement("div",{className:eu.validationErrorMessage,key:t},`${e.field.label}: ${e.errorMessage}`))):null)):e.reference?r().createElement("p",{className:eu.explainer},g("sectionReferenceExplainer","This section is a reference to another form. Modify the referenced form to add questions to this section.")):r().createElement("p",{className:eu.explainer},g("sectionExplainer","A section will typically contain one or more questions. Click the button below to add a question to this section.")),r().createElement(i.Button,{className:eu.addQuestionButton,kind:"tertiary",size:"sm",renderIcon:m.OM,onClick:()=>{q(n,l)},iconDescription:g("addQuestion","Add Question"),disabled:!!e.reference},g("addQuestion","Add Question"))))))):r().createElement("p",{className:eu.explainer},g("pageExplainer","Pages typically have one or more sections. Click the button below to add a section to your page."))),r().createElement(i.Button,{className:eu.addSectionButton,kind:"ghost",renderIcon:m.OM,onClick:()=>{S(n)},iconDescription:g("addSection","Add Section")},g("addSection","Add Section")),r().createElement(i.Button,{className:eu.addSectionButton,kind:"ghost",renderIcon:m.OM,onClick:()=>{T(n)},iconDescription:g("addReference","Add Reference")},g("addReference","Add Reference")))):null,r().createElement(ee.Hd,null,c?r().createElement("div",{className:eu.dragOverlay},r().createElement(el,{handleDuplicateQuestion:x,onSchemaChange:t,pageIndex:c.pageIndex,sectionIndex:c.sectionIndex,question:c.question,questionCount:c.questionCount,questionIndex:c.questionIndex,schema:a})):null))))};var e_=a(13634);function ep(){let e,t=(0,p.useSession)(),a=t?.allowedLocales||[],n=t?.locale||"en";if(!Array.isArray(a)||0===a.length)return[];try{e=new Intl.DisplayNames([n],{type:"language"})}catch(e){return console.warn("Intl.DisplayNames not supported, falling back to raw locale codes."),a.map(e=>({label:e,code:e}))}return a.map(t=>{let a=e.of(t)||t;return{label:`${(0,e_.A)(a)} (${t})`,code:t}})}async function eb(e,t,a,n){try{let r=await (0,p.openmrsFetch)(`${p.restBaseUrl}/form/${e}?v=full`),l=r?.data,o=`${a}_translations_${t}`,s=l?.resources?.find(e=>e.name===o);s&&(await (0,p.openmrsFetch)(`${p.restBaseUrl}/form/${e}/resource/${s.uuid}`,{method:"DELETE",headers:{"Content-Type":"application/json"}}),s.valueReference&&await (0,p.openmrsFetch)(`${p.restBaseUrl}/clobdata/${s.valueReference}`,{method:"DELETE",headers:{"Content-Type":"application/json"}}));let i=new Blob([JSON.stringify({translations:n})],{type:"application/json"}),c=new FormData;c.append("file",i);let d=await window.fetch(`${window.openmrsBase}${p.restBaseUrl}/clobdata`,{method:"POST",body:c}),u=await d.text();if(!u)throw Error("Failed to create new clobdata");await (0,p.openmrsFetch)(`${p.restBaseUrl}/form/${e}/resource`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:o,valueReference:u})})}catch(e){throw console.error("Error uploading backend translations:",e),e}}async function ef(e,t,a){try{let n=`${p.restBaseUrl}/form/${e}?v=full`,r=await (0,p.openmrsFetch)(n),l=r?.data,o=l?.resources?.find(e=>e.name?.endsWith(`translations_${t}`));if(!o?.valueReference)return a;let s=`${p.restBaseUrl}/clobdata/${o.valueReference}`,i=await (0,p.openmrsFetch)(s),c=i?.data?.translations??{};return Object.entries(a).reduce((e,[t,a])=>(e[t]=c[t]??a,e),{})}catch(e){return console.error("Error fetching backend translations:",e),a}}let eh={translationBuilderContainer:"-esm-form-builder__translation-builder-module__translationBuilderContainer___ZkW0-",translationEditor:"-esm-form-builder__translation-builder-module__translationEditor___6e3Zb",translationRow:"-esm-form-builder__translation-builder-module__translationRow___Tk8NV",translationKey:"-esm-form-builder__translation-builder-module__translationKey___xcZA+",inlineControls:"-esm-form-builder__translation-builder-module__inlineControls___1fpUa",translatedKey:"-esm-form-builder__translation-builder-module__translatedKey___ZUNOQ",translationBuilderHeader:"-esm-form-builder__translation-builder-module__translationBuilderHeader___NDf8p",languageTools:"-esm-form-builder__translation-builder-module__languageTools___x8amU",languagePath:"-esm-form-builder__translation-builder-module__languagePath___hG3I3",language:"-esm-form-builder__translation-builder-module__language___-XmRn",downloadError:"-esm-form-builder__translation-builder-module__downloadError___UDQbZ",searchBox:"-esm-form-builder__translation-builder-module__searchBox___QyPBP",searchInput:"-esm-form-builder__translation-builder-module__searchInput___ymbZg",translationActions:"-esm-form-builder__translation-builder-module__translationActions___3kAEl",linkButton:"-esm-form-builder__translation-builder-module__linkButton___BBFDc"},eg=({formSchema:e,onUpdateSchema:t})=>{let{t:a}=(0,s.useTranslation)(),l=ep(),[c,_]=(0,n.useState)(()=>l[0]?.code??"en"),[b,f]=(0,n.useState)({}),[h,g]=(0,n.useState)(!1),[E,y]=(0,n.useState)(!1),[w,v]=(0,n.useState)(null),[C,S]=(0,n.useState)(null),[k,N]=(0,n.useState)("all"),[T,q]=(0,n.useState)(""),[B,I]=(0,n.useState)(T),{formUuid:x}=(0,o.g)();(0,n.useEffect)(()=>{let e=setTimeout(()=>{I(T)},300);return()=>clearTimeout(e)},[T]);let F=(0,n.useMemo)(()=>{let t;return e?(t={},e.pages&&e.pages.forEach(e=>{e.label&&(t[e.label]=e.label),e.sections&&e.sections.forEach(e=>{e.label&&(t[e.label]=e.label),e.questions&&e.questions.forEach(e=>(function e(t,a){t.label&&(a[t.label]=t.label),t.questionOptions?.answers?.forEach(e=>{e.label&&(a[e.label]=e.label)}),t.questionOptions?.rendering==="markdown"&&(Array.isArray(t.value)?t.value.forEach(e=>{"string"==typeof e&&e.trim()&&(a[e]=e)}):"string"==typeof t.value&&t.value.trim()&&(a[t.value]=t.value)),t.questions?.forEach(t=>e(t,a))})(e,t))})}),t):{}},[e]),M=(0,n.useCallback)((a,n)=>{let r={...b,[a]:n};if(f(r),e){let a={...e};a.translations||(a.translations={}),a.translations[c]=r,t(a)}},[e,c,t,b]),L=(0,n.useCallback)(e=>{let t=(0,p.showModal)("edit-translation-modal",{onClose:()=>t(),originalKey:e,initialValue:b[e],onSave:a=>{f({...b,[e]:a}),M(e,a),t()}})},[b,M]),D=(0,n.useMemo)(()=>{if(!e)return null;let t=e.translations?.[c],a="en"===c?F:t;return a?new Blob([JSON.stringify({uuid:e.uuid||"",form:e.name,description:`${c.toUpperCase()} Translations for '${e.name}'`,language:c,translations:a},null,2)],{type:"application/json"}):null},[e,c,F]),O=(0,n.useCallback)((e,t)=>{let a=F[e]??"";return null!=t&&""!==t.trim()&&t.trim()!==a.trim()},[F]);(0,n.useEffect)(()=>{"en"===c&&e&&f(F)},[c,e,F]);let $=async a=>{if(_(a),!e||"en"===a)return void f(F);g(!0);try{let n=await ef(x,a,F);f(n);let r={...e,translations:{...e.translations||{},[a]:n}};t(r)}catch(e){v("Failed to load backend translations.")}finally{g(!1)}},R=(0,n.useMemo)(()=>Object.entries(b).filter(([e,t])=>{if("translated"===k&&!O(e,t)||"untranslated"===k&&O(e,t))return!1;let a=B.toLowerCase();return e.toLowerCase().includes(a)||(t??"").toLowerCase().includes(a)}),[b,k,B,O]),A=(0,n.useCallback)(()=>{if(S(null),!D){"en"!==c&&S(a("noTranslationForLang","No translations found for selected language."));return}let t=URL.createObjectURL(D),n=document.createElement("a");n.href=t,n.download=`${e?.name}_translations_${c}.json`,document.body.appendChild(n),n.click(),document.body.removeChild(n),URL.revokeObjectURL(t)},[D,c,e?.name,a]),U=(0,n.useCallback)(async()=>{if(!e)return;let t=e.translations?.[c],n="en"===c?F:t;if(!n){v(a("noTranslationForLang","No translations found for selected language.")),(0,p.showSnackbar)({title:a("noTranslations","No translatable strings found."),kind:"error",subtitle:a("noTranslationFileToUpload","No translations found for the selected language to upload")});return}y(!0);try{await eb(x,c,e.name,n),(0,p.showSnackbar)({title:a("translationsUploaded","Translations Uploaded."),kind:"success",subtitle:a("translationsUploadedSuccessfully","Translation file uploaded successfully.")})}catch(e){v(a("translationFileUploadFail","Failed to upload translation file")),(0,p.showSnackbar)({title:a("uploadFailed","Upload Failed"),kind:"error",subtitle:a("translationFileUploadFail","Failed to upload translation file")}),console.error(e)}finally{y(!1)}},[e,c,F,x,a]);return r().createElement("div",{className:eh.translationBuilderContainer},r().createElement("div",{className:eh.translationBuilderHeader},r().createElement("div",{className:eh.languageTools},r().createElement("div",{className:eh.languagePath},r().createElement("span",{className:eh.language},"English (en)"),r().createElement(m.Qp,{className:eh.arrow}),r().createElement(i.Dropdown,{id:"target-language",items:l,itemToString:e=>e?.label??"",label:"",titleText:"",selectedItem:l.find(e=>e.code===c),onChange:({selectedItem:e})=>e&&$(e.code)})),r().createElement("div",{className:eh.translationActions},r().createElement("button",{className:eh.linkButton,onClick:A},a("downloadTranslation","Download translation"),r().createElement(d.f5,{size:16})),r().createElement("button",{className:eh.linkButton,onClick:U,disabled:E},a("uploadTranslation","Upload translation"),E?r().createElement(i.InlineLoading,null):r().createElement(u._O,{size:16})))),r().createElement("div",{className:eh.translationTabs},r().createElement(i.Tabs,{onChange:({selectedIndex:e})=>{0===e&&N("all"),1===e&&N("translated"),2===e&&N("untranslated")}},r().createElement(i.TabList,{"aria-label":"Translation filter"},r().createElement(i.Tab,null,a("all","All")),r().createElement(i.Tab,null,a("translated","Translated")),r().createElement(i.Tab,null,a("untranslated","Untranslated")))))),h?r().createElement(i.InlineLoading,{description:a("loadingTranslations","Loading translations...")}):w?r().createElement(i.InlineNotification,{kind:"error",title:a("error","Error"),subtitle:w,lowContrast:!0}):r().createElement(r().Fragment,null,C&&r().createElement(i.InlineNotification,{className:eh.downloadError,kind:"error",title:a("error","Error"),subtitle:C,lowContrast:!0,onClose:()=>S(null)}),r().createElement("div",{className:eh.searchBox},r().createElement("input",{type:"text",placeholder:a("searchTranslationKeys","Search Translation Keys..."),className:eh.searchInput,value:T,onChange:e=>q(e.target.value)})),r().createElement("div",{className:eh.translationEditor},R.length>0?R.map(([e,t])=>r().createElement("div",{key:e,className:eh.translationRow},r().createElement("div",{className:eh.translationKey},e),r().createElement("div",{className:eh.translatedKey},t),r().createElement("div",{className:eh.inlineControls},r().createElement(i.IconButton,{kind:"ghost",label:a("editString","Edit string"),onClick:()=>L(e),size:"md",className:eh.deleteButton},r().createElement(d.ff,null))))):r().createElement(i.InlineNotification,{kind:"info",subtitle:"translated"===k?a("noTranslatedStrings","No strings are translated yet."):"untranslated"===k?a("noUntranslatedStrings","All strings are translated."):a("noTranslations","No translatable strings found."),hideCloseButton:!0,lowContrast:!0}))))};var eE=a(70470);a(62432);var ey=a(20047),ew=a(66148),ev=a.n(ew),eC=a(63282),eS=a.n(eC),ek=a(44861);let eN="-esm-form-builder__schema-editor__paginationIcon___3XKWl",eT="-esm-form-builder__schema-editor__disabledIcon___r9vkB",eq=({onSchemaChange:e,stringifiedSchema:t,setErrors:a,errors:l,validationOn:o,setValidationOn:c})=>{let{schema:d,schemaProperties:u}=function(){let{data:e,error:t,isLoading:a}=ev()("https://json.openmrs.org/form.schema.json",p.openmrsFetch);return{schema:e?.data,schemaProperties:e?.data.properties,error:t,isLoading:a}}(),{t:m}=(0,s.useTranslation)(),[_,b]=(0,n.useState)([]),[f,h]=(0,n.useState)(0),g=(0,n.useCallback)(()=>{let e=[],t=(a,n)=>{a&&a&&"object"==typeof a&&Object.entries(a).forEach(([a,r])=>{if("$schema"===a)return;let l=n?`${n}.${a}`:a;if("object"==typeof r){if("array"===r.type&&r.items&&r.items.properties)t(r.items.properties,l);else if(r.properties)t(r.properties,l);else if(r.oneOf){let t=r?.oneOf?.map(e=>e.type).join(" | ");e.push({name:a,type:t||"any",path:l})}}e.push({name:a,type:r.type||"any",path:l})})};return t(u,""),e},[u]);(0,n.useEffect)(()=>{b(g().flat())},[u,g]),(0,n.useEffect)(()=>{(0,ey.addCompleter)({getCompletions:function(e,t,a,n,r){r(null,_.map(function(e){return{caption:e.name,value:e.name,meta:e.type,docText:`Path: ${e.path}`}}))}})},[_]);let E=(0,ek.A)((e,t)=>{try{let n=e.replace(/\s/g,"");if("{}"===n.trim())return void a([]);let r=new(eS())({allErrors:!0,jsPropertySyntax:!0,strict:!1}).compile(t),l=JSON.parse(e),o=r(l),s=e.split("\n");if(o)a([]);else{let e=r.errors.map(e=>{let t=e.schemaPath.replace(/^#\//,""),a=(e=>{let t=e.split("/").filter(e=>""!==e||"type"!==e),a=-1;for(let e of t)if("properties"!==e&&"items"!==e){if(e.match(/^([^[\]]+)/)){let e=t[t.length-2];a=s.findIndex(t=>t.includes(e))}if(-1!==a)break}return a})(t),n=e.instancePath.split("."),r=n[n.length-1],l="type"===e.keyword||"enum"===e.keyword?`${r.charAt(0).toUpperCase()+r.slice(1)} ${e.message}`:`${e.message.charAt(0).toUpperCase()+e.message.slice(1)}`;return{startRow:a,startCol:0,endRow:a,endCol:1,className:"error",text:l,type:"text"}});a(e)}}catch(e){console.error("Error parsing or validating JSON:",e)}},300),y=({text:e,line:t})=>r().createElement(i.ActionableNotification,{subtitle:e,inline:!0,title:m("errorOnLine","Error on line")+` ${t+1}: `,kind:"error",lowContrast:!0,actionButtonLabel:m("referenceSchema","Reference schema"),onActionButtonClick:()=>window.open("https://json.openmrs.org/form.schema.json","_blank","noopener,noreferrer")}),w=()=>{h(e=>Math.max(e-1,0))},v=()=>{h(e=>Math.min(e+1,l.length-1))};return r().createElement("div",null,l.length&&o?r().createElement(()=>r().createElement("div",{className:"-esm-form-builder__schema-editor__validationErrorsContainer___vJh4t"},r().createElement(y,{text:l[f]?.text,line:l[f]?.startRow}),r().createElement("div",{className:"-esm-form-builder__schema-editor__pagination___q8uQ8"},r().createElement(es.JG,{onClick:w,className:0===f?eT:eN}),r().createElement("div",null,f+1,"/",l.length),r().createElement(es.c_,{onClick:v,className:f===l.length-1?eT:eN}))),null):null,r().createElement(eE.default,{style:{height:"100vh",width:"100%",border:l.length?"3px solid #DA1E28":"none"},mode:"json",theme:"textmate",name:"schemaEditor",onChange:t=>{c(!1),h(0),e(t),E(t,d)},fontSize:15,showPrintMargin:!1,showGutter:!0,highlightActiveLine:!0,value:t,setOptions:{enableBasicAutocompletion:!0,enableLiveAutocompletion:!0,displayIndentGuides:!0,enableSnippets:!0,showLineNumbers:!0,tabSize:2},markers:l}))},eB=({hasValidationErrors:e,publishedWithErrors:t,errorsCount:a})=>{let{t:n}=(0,s.useTranslation)();return t?r().createElement(i.InlineNotification,{kind:"error",title:n("publishingFailed","Publishing failed"),lowContrast:!0,subtitle:n("publishWarning","Cannot publish form with validation errors")}):e?r().createElement(i.InlineNotification,{kind:"error",title:n("validationErrors","Validation found {{count}} errors",{count:a}),lowContrast:!0,subtitle:n("viewErrors","View the errors in the interactive builder")}):r().createElement(i.InlineNotification,{kind:"success",title:n("ValidationSuccessful","Validation Successful"),lowContrast:!0,subtitle:n("noValidationErrorsFound","No validation errors found")})},eI="-esm-form-builder__form-editor__column___mmSc6",ex=({error:e,title:t})=>r().createElement(i.InlineNotification,{className:"-esm-form-builder__form-editor__errorNotification___8cDJm",kind:"error",lowContrast:!0,subtitle:e?.message,title:t}),eF=({t:e})=>{let{formUuid:t}=(0,o.g)(),{blockRenderingWithErrors:a,dataTypeToRenderingMap:l}=(0,p.useConfig)(),s=!t,[c,u]=(0,n.useState)(),{form:m,formError:_,isLoadingForm:b,mutate:f}=(0,P.m)(t),{clobdata:h,clobdataError:g,isLoadingClobdata:E}=(0,k.S)(m),[y,w]=(0,n.useState)(!1),[v,S]=(0,n.useState)("idle"),[N,T]=(0,n.useState)(!1),[q,B]=(0,n.useState)(c?JSON.stringify(c,null,2):""),[I,x]=(0,n.useState)([]),[F,$]=(0,n.useState)(!1),[R,A]=(0,n.useState)(!1),[U,z]=(0,n.useState)(!1),[j,H]=(0,n.useState)([]),[Q,K]=(0,n.useState)(!1),[G,Z]=(0,n.useState)(""),W=ep(),[X,ee]=(0,n.useState)(()=>W[0]?.code??"en"),[et,ea]=(0,n.useState)(!1),[en,er]=(0,n.useState)(null),el=!!t&&(E||b),eo=(0,n.useMemo)(()=>h?JSON.stringify(h,null,2):"",[h]),es=!!q&&"undefined"!==q&&"null"!==q&&q!==eo;(0,n.useEffect)(()=>{if(!es)return;let e=e=>{e.preventDefault(),e.returnValue=""};return window.addEventListener("beforeunload",e),()=>window.removeEventListener("beforeunload",e)},[es]);let ei=(0,n.useMemo)(()=>et?en:null,[et,en]),ec=(0,n.useCallback)(()=>{Z("")},[]),ed=(0,n.useCallback)(e=>{ec(),B(e)},[ec]),eu=(0,n.useCallback)(e=>{u(e),localStorage.setItem("formJSON",JSON.stringify(e))},[]),e_=(0,n.useCallback)(()=>{let e=(0,p.showModal)("restore-draft-schema-modal",{closeModal:()=>e(),onSchemaChange:eu})},[eu]),eb=(0,n.useCallback)(async()=>{if(m){w(!0);try{let t=await (0,C.Rv)(m.uuid);200===t.status&&((0,p.showSnackbar)({title:e("formRestored","Form restored"),kind:"success",isLowContrast:!0,subtitle:e("formRestoredMessage",'The form "{{- formName}}" has been restored',{formName:m.name})}),await f())}catch(t){t instanceof Error&&(0,p.showSnackbar)({title:e("errorRestoringForm","Error restoring form"),kind:"error",subtitle:t.message})}finally{w(!1)}}},[m,f,e]);(0,n.useEffect)(()=>{t&&(m&&Object.keys(m).length>0&&S("formLoaded"),"formLoaded"!==v||E||void 0!==h||e_(),h&&Object.keys(h).length>0&&(S("schemaLoaded"),u(h),localStorage.setItem("formJSON",JSON.stringify(h))))},[h,m,t,E,el,e_,v]),(0,n.useEffect)(()=>{B(JSON.stringify(c,null,2))},[c]);let ef=async()=>{$(!0);try{let[t]=await O(c,l,e);x(t),A(!0)}catch(e){console.error("Error during form validation:",e)}finally{$(!1)}},eh=(0,n.useCallback)(()=>{let e={encounterType:"",name:"Sample Form",processor:"EncounterFormProcessor",referencedForms:[],uuid:"",version:"1.0",pages:[{label:"First Page",sections:[{label:"A Section",isExpanded:"true",questions:[{id:"sampleQuestion",label:"A Question of type obs that renders a text input",type:"obs",questionOptions:{rendering:"text",concept:"a-system-defined-concept-uuid"}}]},{label:"Another Section",isExpanded:"true",questions:[{id:"anotherSampleQuestion",label:"Another Question of type obs whose answers get rendered as radio inputs",type:"obs",questionOptions:{rendering:"radio",concept:"system-defined-concept-uuid",answers:[{concept:"another-system-defined-concept-uuid",label:"Choice 1"},{concept:"yet-another-system-defined-concept-uuid",label:"Choice 2"},{concept:"yet-one-more-system-defined-concept-uuid",label:"Choice 3"}]}}]}]}]};B(JSON.stringify(e,null,2)),eu({...e})},[eu]),eE=(0,n.useCallback)(()=>{ec();try{let e=JSON.parse(q);eu(e),B(JSON.stringify(e,null,2))}catch(e){e instanceof Error&&Z(e.message)}},[q,eu,ec]),ey=(0,n.useMemo)(()=>{if(!c)return null;if(!et)return c;if(!c?.translations?.[ei])return c;let e=JSON.parse(JSON.stringify(c)),t=c.translations[ei];return e.pages&&(e.pages=e.pages.map(e=>(t[e.label]&&(e.label=t[e.label]),e.sections&&(e.sections=e.sections.map(e=>(t[e.label]&&(e.label=t[e.label]),e.questions&&(e.questions=e.questions.map(e=>(function e(t,a){return t.label&&a[t.label]&&(t.label=a[t.label]),t.questionOptions?.answers&&(t.questionOptions={...t.questionOptions,answers:t.questionOptions.answers.map(e=>({...e,label:e.label&&a[e.label]?a[e.label]:e.label}))}),t.questionOptions?.rendering==="markdown"&&(Array.isArray(t.value)?t.value=t.value.map(e=>a[e]):t.value=a[t.value]),t.questions&&(t.questions=t.questions.map(t=>e(t,a))),t})(e,t))),e))),e))),e},[c,et,ei]),ew=(0,n.useCallback)(()=>{j.length&&a?K(!0):(ea(!0),er(X),j.length&&!a&&K(!0),eE())},[a,j.length,eE,X]),ev=(0,n.useMemo)(()=>new Blob([JSON.stringify(c,null,2)],{type:"application/json"}),[c]),eC=(0,n.useCallback)(async()=>{await navigator.clipboard.writeText(q)},[q]),eS=N?16:8;return r().createElement("div",{className:"-esm-form-builder__form-editor__container___P4qBJ"},m?.retired&&r().createElement(i.ActionableNotification,{className:"-esm-form-builder__form-editor__retiredNotification___hvl+y",kind:"warning",lowContrast:!0,inline:!0,hideCloseButton:!0,title:e("formIsRetired","This form is retired."),actionButtonLabel:y?e("restoring","Restoring"):e("restoreForm","Restore form"),onActionButtonClick:eb}),r().createElement(i.Grid,{className:M()("-esm-form-builder__form-editor__grid___Lg8eU",{"-esm-form-builder__form-editor__maximized___VbNzz":N})},r().createElement(i.Column,{lg:eS,md:eS,sm:4,className:eI},r().createElement("div",{className:"-esm-form-builder__form-editor__actionButtons___iXlCp"},el?r().createElement(i.InlineLoading,{description:e("loadingSchema","Loading schema")+"..."}):r().createElement("h1",{className:"-esm-form-builder__form-editor__formName___5Ku8M"},m?.name,es&&r().createElement(i.Tag,{className:"-esm-form-builder__form-editor__dirtyIndicator___wG7Q9",type:"warm-gray",size:"sm"},e("unsavedChanges","Unsaved changes")))),r().createElement("div",null,r().createElement("div",{className:"-esm-form-builder__form-editor__heading___9S6rK"},r().createElement("span",{className:"-esm-form-builder__form-editor__tabHeading___3cfeA"},e("schemaEditor","Schema editor")),r().createElement("div",{className:"-esm-form-builder__form-editor__topBtns___RZrcX"},c?null:r().createElement(i.FileUploader,{onChange:e=>{let t=e.target.files[0],a=new FileReader;a.onload=e=>{let t=e.target?.result;"string"==typeof t?u(JSON.parse(t)):t instanceof ArrayBuffer&&u(JSON.parse(new TextDecoder().decode(t)))},a.readAsText(t)},labelTitle:"",labelDescription:"",buttonLabel:e("importSchema","Import schema"),buttonKind:"ghost",size:"lg",filenameStatus:"edit",accept:[".json"],multiple:!1,disabled:!1,iconDescription:e("importSchema","Import schema"),name:"form-import"}),s&&!c?r().createElement(i.Button,{kind:"ghost",onClick:eh},e("inputDummySchema","Load sample schema")):null,r().createElement(i.Dropdown,{id:"target-language",items:W,itemToString:e=>e?.label??"",label:e("selectLanguage","Select language"),onChange:({selectedItem:e})=>{e&&ee(e.code)},titleText:e("previewFormIn","Preview form in"),selectedItem:W.find(e=>e.code===X),type:"inline",className:"-esm-form-builder__form-editor__dropdown___uw+pI"}),r().createElement(i.Button,{kind:"tertiary",size:"sm",renderIcon:L.wM,onClick:ew,disabled:!!G},e("renderChanges","Render changes"))),c?r().createElement("div",{className:"-esm-form-builder__form-editor__schemaIconActions___IdO3E"},r().createElement(i.IconButton,{enterDelayMs:300,kind:"ghost",label:N?e("minimizeEditor","Minimize editor"):e("maximizeEditor","Maximize editor"),onClick:()=>{T(!N)},size:"md"},N?r().createElement(D.Xj,null):r().createElement(D.hz,null)),r().createElement(i.CopyButton,{align:"top",className:"cds--btn--md",iconDescription:e("copySchema","Copy schema"),kind:"ghost",onClick:eC}),r().createElement("a",{download:`${m?.name}.json`,href:window.URL.createObjectURL(ev)},r().createElement(i.IconButton,{enterDelayMs:300,kind:"ghost",label:e("downloadSchema","Download schema"),size:"md"},r().createElement(d.f5,null)))):null),_?r().createElement(ex,{error:_,title:e("formError","Error loading form metadata")}):null,g?r().createElement(ex,{error:g,title:e("schemaLoadError","Error loading schema")}):null,r().createElement("div",{className:"-esm-form-builder__form-editor__editorContainer___Bvc6d"},r().createElement(eq,{errors:j,isLoading:el,onSchemaChange:ed,setErrors:H,setValidationOn:K,stringifiedSchema:q,validationOn:Q})))),r().createElement(i.Column,{lg:8,md:8,sm:4,className:eI},r().createElement(V,{schema:c,t:e,schemaErrors:j,setPublishedWithErrors:z,onFormValidation:ef,setValidationResponse:x,setValidationComplete:A,isValidating:F}),R&&r().createElement(eB,{hasValidationErrors:I.length>0,publishedWithErrors:U,errorsCount:I.length}),r().createElement(i.Tabs,null,r().createElement(i.TabList,{"aria-label":"Form previews"},r().createElement(i.Tab,null,e("preview","Preview")),r().createElement(i.Tab,null,e("interactiveBuilder","Interactive Builder")),r().createElement(i.Tab,null,e("translationBuilder","Translation Builder")),m&&r().createElement(i.Tab,null,e("auditDetails","Audit Details"))),r().createElement(i.TabPanels,null,r().createElement(i.TabPanel,null,r().createElement(Y,{schema:ey,isLoading:el})),r().createElement(i.TabPanel,null,r().createElement(em,{schema:c,onSchemaChange:eu,isLoading:el,validationResponse:I})),r().createElement(i.TabPanel,null,r().createElement(eg,{formSchema:c,onUpdateSchema:eu})),r().createElement(i.TabPanel,null,m&&r().createElement(J,{form:m,key:m.uuid})))))))};function eM({t:e}){return r().createElement("div",{className:"-esm-form-builder__form-editor__backButton___t4pGC"},r().createElement(p.ConfigurableLink,{to:window.getOpenmrsSpaBase()+"form-builder"},r().createElement(i.Button,{kind:"ghost",renderIcon:e=>r().createElement(m.nk,{size:24,...e}),iconDescription:e("returnToDashboard","Return to dashboard")},r().createElement("span",null,e("backToDashboard","Back to dashboard")))))}let eL=function(){let{t:e}=(0,s.useTranslation)(),{formUuid:t}=(0,o.g)();return r().createElement(r().Fragment,null,r().createElement(v,{title:t?e("editForm","Edit form"):e("createNewForm","Create a new form")}),r().createElement(eM,{t:e}),r().createElement(eF,{t:e}))},eD=()=>r().createElement(l.Kd,{basename:`${window.spaBase}/form-builder`},r().createElement(o.BV,null,r().createElement(o.qh,{path:"/",element:r().createElement(x,null)}),r().createElement(o.qh,{path:"/new",element:r().createElement(eL,null)}),r().createElement(o.qh,{path:"/edit/:formUuid",element:r().createElement(eL,null)})))}}]);
package/dist/7104.js CHANGED
@@ -1 +1 @@
1
- "use strict";(globalThis.webpackChunk_openmrs_esm_form_builder_app=globalThis.webpackChunk_openmrs_esm_form_builder_app||[]).push([["7104"],{8243(e,t,n){n.r(t),n.d(t,{default:()=>i});var r=n(47499),l=n.n(r),o=n(58779),s=n(14968),a=n(46718);let i=({closeModal:e,onSchemaChange:t,pageIndex:n,sectionIndex:r,schema:i})=>{let{t:c}=(0,o.useTranslation)();return l().createElement(l().Fragment,null,l().createElement(s.ModalHeader,{closeModal:e,title:c("deleteSectionConfirmation","Are you sure you want to delete this section?")}),l().createElement(s.ModalBody,null,l().createElement("p",null,c("deleteSectionExplainerText","Deleting this section will delete all the questions associated with it. This action cannot be undone."))),l().createElement(s.ModalFooter,null,l().createElement(s.Button,{kind:"secondary",onClick:e},c("cancel","Cancel")),l().createElement(s.Button,{kind:"danger",onClick:()=>{try{let e=i.pages[n].sections[r].reference?.form;i.pages[n].sections.splice(r,1),e&&(i=((e,t)=>{let n=!1;for(let r of e.pages){for(let e of r.sections)if(e.reference&&e.reference.form===t){n=!0;break}if(n)break}return n||(e.referencedForms=e.referencedForms.filter(e=>e.alias!==t)),e})(i,e)),t({...i}),(0,a.showSnackbar)({title:c("success","Success!"),kind:"success",isLowContrast:!0,subtitle:c("SectionDeleted","Section deleted")})}catch(e){e instanceof Error&&(0,a.showSnackbar)({title:c("errorDeletingSection","Error deleting section"),kind:"error",subtitle:e?.message})}e()}},l().createElement("span",null,c("deleteSection","Delete section")))))}}}]);
1
+ "use strict";(globalThis.webpackChunk_openmrs_esm_form_builder_app=globalThis.webpackChunk_openmrs_esm_form_builder_app||[]).push([["7104"],{8243(e,t,n){n.r(t),n.d(t,{default:()=>i});var r=n(47499),l=n.n(r),o=n(58779),s=n(14968),a=n(23365);let i=({closeModal:e,onSchemaChange:t,pageIndex:n,sectionIndex:r,schema:i})=>{let{t:c}=(0,o.useTranslation)();return l().createElement(l().Fragment,null,l().createElement(s.ModalHeader,{closeModal:e,title:c("deleteSectionConfirmation","Are you sure you want to delete this section?")}),l().createElement(s.ModalBody,null,l().createElement("p",null,c("deleteSectionExplainerText","Deleting this section will delete all the questions associated with it. This action cannot be undone."))),l().createElement(s.ModalFooter,null,l().createElement(s.Button,{kind:"secondary",onClick:e},c("cancel","Cancel")),l().createElement(s.Button,{kind:"danger",onClick:()=>{try{let e=i.pages[n].sections[r].reference?.form;i.pages[n].sections.splice(r,1),e&&(i=((e,t)=>{let n=!1;for(let r of e.pages){for(let e of r.sections)if(e.reference&&e.reference.form===t){n=!0;break}if(n)break}return n||(e.referencedForms=e.referencedForms.filter(e=>e.alias!==t)),e})(i,e)),t({...i}),(0,a.showSnackbar)({title:c("success","Success!"),kind:"success",isLowContrast:!0,subtitle:c("SectionDeleted","Section deleted")})}catch(e){e instanceof Error&&(0,a.showSnackbar)({title:c("errorDeletingSection","Error deleting section"),kind:"error",subtitle:e?.message})}e()}},l().createElement("span",null,c("deleteSection","Delete section")))))}}}]);