@openmrs/esm-form-builder-app 3.5.2-pre.3821 → 3.5.2-pre.3826
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/123.js +1 -0
- package/dist/123.js.map +1 -0
- package/dist/1481.js +1 -0
- package/dist/1481.js.map +1 -0
- package/dist/1515.js +1 -1
- package/dist/1515.js.map +1 -1
- package/dist/1617.js +1 -0
- package/dist/1617.js.map +1 -0
- package/dist/2355.js +1 -0
- package/dist/2355.js.map +1 -0
- package/dist/3238.js +1 -0
- package/dist/3238.js.map +1 -0
- package/dist/3334.js +4 -4
- package/dist/3334.js.map +1 -1
- package/dist/3378.js +1 -1
- package/dist/3378.js.map +1 -1
- package/dist/3431.js +8 -8
- package/dist/3431.js.map +1 -1
- package/dist/3877.js +1 -0
- package/dist/3877.js.map +1 -0
- package/dist/4383.js +1 -1
- package/dist/4383.js.map +1 -1
- package/dist/4442.js +1 -1
- package/dist/4442.js.map +1 -1
- package/dist/4511.js +15 -0
- package/dist/4511.js.map +1 -0
- package/dist/4858.js +1 -1
- package/dist/4858.js.map +1 -1
- package/dist/4948.js +1 -1
- package/dist/4948.js.map +1 -1
- package/dist/5354.js +1 -1
- package/dist/5354.js.map +1 -1
- package/dist/7104.js +1 -1
- package/dist/7104.js.map +1 -1
- package/dist/7247.js +1 -1
- package/dist/7247.js.map +1 -1
- package/dist/7992.js +1 -1
- package/dist/7992.js.map +1 -1
- package/dist/8228.js +1 -1
- package/dist/8228.js.map +1 -1
- package/dist/8636.js +1 -1
- package/dist/8636.js.map +1 -1
- package/dist/8668.js +1 -0
- package/dist/8668.js.map +1 -0
- package/dist/9103.js +1 -1
- package/dist/9103.js.map +1 -1
- package/dist/9314.js +1 -0
- package/dist/9314.js.map +1 -0
- package/dist/9316.js +1 -1
- package/dist/9316.js.map +1 -1
- package/dist/9485.js +1 -1
- package/dist/9485.js.map +1 -1
- package/dist/openmrs-esm-form-builder-app.js +2 -2
- package/dist/openmrs-esm-form-builder-app.js.buildmanifest.json +274 -71
- package/dist/openmrs-esm-form-builder-app.js.map +1 -1
- package/dist/routes.json +1 -1
- package/package.json +2 -1
- package/dist/4701.js +0 -11
- package/dist/4701.js.map +0 -1
- package/dist/8770.js +0 -1
- package/dist/8770.js.map +0 -1
package/dist/4858.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";(globalThis.webpackChunk_openmrs_esm_form_builder_app=globalThis.webpackChunk_openmrs_esm_form_builder_app||[]).push([["4858"],{79140(e,t,a){a.d(t,{S:()=>s});var n=a(66148),r=a.n(n),l=a(46718);let s=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:s,error:o,isLoading:i,isValidating:c,mutate:d}=r()(a?n:null,l.openmrsFetch);return{clobdata:s?.data,clobdataError:o,isLoadingClobdata:i,isValidatingClobdata:c,mutate:d}}},6916(e,t,a){a.d(t,{m:()=>s});var n=a(66148),r=a.n(n),l=a(46718);let s=e=>{let t=`${l.restBaseUrl}/form/${e}?v=full`,{data:a,error:n,isLoading:s,isValidating:o,mutate:i}=r()(e?t:null,l.openmrsFetch);return{form:a?.data,formError:n,isLoadingForm:s,isValidatingForm:o,mutate:i}}},70243(e,t,a){a.d(t,{h:()=>s});var n=a(73391),r=a.n(n),l=a(46718);function s(){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:s}=r()(e,l.openmrsFetch);return{forms:t?.data?.results??[],error:a,isLoading:!t&&!a,isValidating:n,mutate:s}}},70721(e,t,a){a.d(t,{Rv:()=>_,UY:()=>m,Vb:()=>o,_I:()=>i,b4:()=>u,i6:()=>l,kb:()=>d,o8:()=>s,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 s(e,t){return await (0,n.openmrsFetch)(`${n.restBaseUrl}/form/${e}/resource/${t}`,{method:"DELETE",headers:{"Content-Type":"application/json"}})}async function o(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 s=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:s.signal})}async function d(e,t,a,r,l){let s=new AbortController,o={name:e,version:t,published:a??!1,description:r??""};return l&&(o.encounterType=l),(await (0,n.openmrsFetch)(`${n.restBaseUrl}/form`,{method:"POST",headers:{"Content-Type":"application/json"},body:o,signal:s.signal})).data}async function m(e){return await (0,n.openmrsFetch)(`${n.restBaseUrl}/form/${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:{published:!0}})}async function u(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:()=>eI});var n=a(47499),r=a.n(n),l=a(84976),s=a(47767),o=a(58779),i=a(68108),c=a(63654),d=a(40771),m=a(55576),u=a(92137),_=a(73391),p=a(46718);let f=({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}))),b=function(){let{t:e}=(0,o.useTranslation)(),t="tablet"===(0,p.useLayoutType)();return r().createElement(i.Wdr,null,r().createElement(i.FAs,{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(f,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.N_E,{onClick:()=>(0,p.navigate)({to:`${window.spaBase}/form-builder/new`})},e("createNewForm","Create a new form")))))},h=({error:e})=>{let{t}=(0,o.useTranslation)(),a="tablet"===(0,p.useLayoutType)();return r().createElement(i.Wdr,null,r().createElement(i.FAs,{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"})),v={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"},w=({title:e})=>{let{t}=(0,o.useTranslation)(),a=(0,p.useSession)(),n=a?.sessionLocation?.display;return r().createElement("div",{className:v.header},r().createElement("div",{className:v["left-justified-items"]},r().createElement(y,null),r().createElement("div",{className:v["page-labels"]},r().createElement("p",null,t("formBuilder","Form builder")),r().createElement("p",{className:v["page-name"]},e))),r().createElement("div",{className:v["right-justified-items"]},r().createElement("div",{className:v.userContainer},r().createElement("p",null,a?.user?.person?.display),r().createElement(m.rs,{size:16,className:v.userIcon})),r().createElement("div",{className:v["date-and-location"]},r().createElement(g.aZ,{size:16}),r().createElement("span",{className:v.value},n),r().createElement("span",{className:v.middot},"\xb7"),r().createElement(E.Vv,{size:16}),r().createElement("span",{className:v.value},(0,p.formatDate)(new Date,{mode:"standard"})))))};var C=a(70721);let k=({totalItems:e,pageSize:t,onPageNumberChange:a,pageNumber:l,currentItems:s})=>{let{itemsDisplayed:c,pageSizes:d}=function(e,t,a,r){let{t:l}=(0,o.useTranslation)(),s=(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:s,itemsDisplayed:`${i} ${l("items"," items")}`}}(t,e,l,s),m="tablet"===(0,p.useLayoutType)();return r().createElement(r().Fragment,null,e>0&&r().createElement("div",{className:m?"-esm-form-builder__pagination__tablet___uSPe-":"-esm-form-builder__pagination__desktop___Spb8M"},r().createElement("div",null,c),r().createElement(i.dKS,{className:"-esm-form-builder__pagination__pagination___G81qx",page:l,pageSize:t,pageSizes:d,totalItems:e,onChange:a,size:m?"lg":"sm"})))};var N=a(79140),S=a(70243);let q={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 T({condition:e,invertTone:t=!1}){let{t:a}=(0,o.useTranslation)();return e?r().createElement(i.vwO,{type:t?"red":"green",size:"md",title:"Clear Filter","data-testid":"yes-tag"},a("yes","Yes")):r().createElement(i.vwO,{type:"cool-gray",size:"md",title:"Clear Filter","data-testid":"no-tag"},a("no","No"))}function F({form:e,mutate:t,responsiveSize:a,t:l}){let{clobdata:s}=(0,N.S)(e),o=e?.resources,[u,_]=(0,n.useState)(!1),f=(0,n.useMemo)(()=>new Blob([JSON.stringify(s,null,2)],{type:"application/json"}),[s]),b=(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:u,onDeleteForm:()=>b(e.uuid)})},[e.uuid,b,u]);return r().createElement("div",{className:q.actionButtons},0!=o.length&&e?.resources[0]?r().createElement(r().Fragment,null,r().createElement(()=>r().createElement(i.K0,{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(f)},r().createElement(i.K0,{enterDelayMs:300,kind:"ghost",label:l("downloadSchema","Download schema"),size:a},r().createElement(d.f5,null))),null)):r().createElement(()=>r().createElement(i.K0,{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.K0,{enterDelayMs:300,kind:"ghost",label:l("restoreSchema","Restore form"),onClick:h,size:a},r().createElement(m.Vn,null)),null):r().createElement(()=>r().createElement(i.K0,{enterDelayMs:300,kind:"ghost",label:l("retireSchema","Retire schema"),onClick:g,size:a},r().createElement(m.zH,null)),null))}function M({forms:e,isValidating:t,mutate:a,t:l}){let s="tablet"===(0,p.useLayoutType)(),o=s?"lg":"sm",[c,d]=(0,n.useState)("Active"),[m,f]=(0,n.useState)(""),b=(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)(()=>m&&""!==m.trim()?b.filter(e=>e.name.toLowerCase().includes(m.toLowerCase())):b,[m,b]),{paginated:E,goTo:y,results:v,currentPage:w}=(0,p.usePagination)(g,10),C=v?.map(e=>({id:e?.uuid,name:e.name,version:e.version,published:e.published,retired:e.retired,actions:e.uuid})),N=(0,n.useMemo)(()=>new Map(v?.map(e=>[e.uuid,e])??[]),[v]),S=(0,n.useCallback)(e=>{y(1),f(e.target.value)},[y,f]);return r().createElement(r().Fragment,null,r().createElement("div",{className:q.flexContainer},r().createElement("div",{className:q.filterContainer},r().createElement(i.msM,{className:q.filterDropdown,id:"publishStatusFilter",initialSelectedItem:"Active",label:"",titleText:l("filterBy","Filter by")+":",size:o,type:"inline",items:["Active","All","Published","Unpublished","Retired"],onChange:({selectedItem:e})=>d(e)})),r().createElement("div",{className:q.backgroundDataFetchingIndicator},r().createElement("span",null,t?r().createElement(i.OuH,null):null))),r().createElement(i.bQt,{rows:C,headers:h,size:s?"lg":"sm",useZebraStyles:!0,isSortable:!0},({rows:e,headers:t,getTableProps:n,getHeaderProps:s,getRowProps:c})=>r().createElement(r().Fragment,null,r().createElement(i.K3K,{className:q.tableContainer,"data-testid":"forms-table"},r().createElement("div",{className:q.toolbarWrapper},r().createElement(i.e1U,{className:q.tableToolbar,size:o},r().createElement(i.VbH,{className:q.headerContainer},r().createElement(i.w6V,{expanded:!0,size:o,className:q.searchbox,onChange:S,placeholder:l("searchThisList","Search this list")}),r().createElement(i.$nd,{kind:"primary",iconDescription:l("createNewForm","Create a new form"),size:o,onClick:()=>(0,p.navigate)({to:`${window.spaBase}/form-builder/new`})},r().createElement(u.OM,{size:16,style:{marginRight:"0.5rem"},"aria-hidden":!0}),l("createNewForm","Create a new form"))))),r().createElement(i.XIK,{...n(),className:q.table},r().createElement(i.ndF,null,r().createElement(i.Hjg,null,t.map(e=>{let t=e.isSortable;return r().createElement(i.A0N,s({header:e,isSortable:t}),e.header)}))),r().createElement(i.BFY,null,e.map(e=>r().createElement(i.Hjg,{key:e.id,...c({row:e}),"data-testid":`form-row-${e.id}`},e.cells.map(e=>r().createElement(i.nA6,{key:e.id},(e=>{switch(N.get(String(e.value))??N.get(e.id.split(":")[0]),e.info.header){case"name":{let t=N.get(e.id.split(":")[0]);return r().createElement(p.ConfigurableLink,{className:q.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(T,{condition:!!e.value});case"retired":return r().createElement(T,{condition:!!e.value,invertTone:!0});case"actions":{let t=N.get(String(e.value));return t?r().createElement(F,{form:t,mutate:a,responsiveSize:o,t:l}):null}default:return String(e.value)}})(e)))))))),0===e.length?r().createElement("div",{className:q.tileContainer},r().createElement(i.FAs,{className:q.tile},r().createElement("div",{className:q.tileContent},r().createElement("p",{className:q.content},l("noMatchingFormsToDisplay","No matching forms to display")),r().createElement("p",{className:q.helper},l("checkFilters","Check the filters above"))))):null)),E&&r().createElement(k,{currentItems:v.length,totalItems:g.length,onPageNumberChange:({page:e})=>{y(e)},pageNumber:w,pageSize:10}))}let x=()=>{let{t:e}=(0,o.useTranslation)(),{forms:t,error:a,isLoading:n,isValidating:l,mutate:s}=(0,S.h)(),{showSchemaSaveWarning:c}=(0,p.useConfig)();return r().createElement("main",null,r().createElement(w,{title:e("home","Home")}),r().createElement("div",{className:q.container},a?r().createElement(h,{error:a}):n?r().createElement(i.OOb,{role:"progressbar"}):0===t.length?r().createElement(b,null):r().createElement(r().Fragment,null,c&&r().createElement(i.jeF,{className:q.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(M,{forms:t,isValidating:l,mutate:s,t:e}))))};var $=a(46942),B=a.n($),O=a(49564),I=a(54535);let D=async(e,t,a)=>{let n=[],r=[];if(e){let l="string"==typeof e?JSON.parse(e):e,s=[];l.pages?.forEach(e=>e.sections?.forEach(e=>e.questions?.forEach(e=>{s.push(U(e,n,t,r,a),z(e,n,a),L(e,n,a),A(e,n,a)),"obsGroup"===e.type&&e?.questions?.forEach(e=>s.push(U(e,n,t,r,a),z(e,n,a),A(e,n,a)))}))),await Promise.all(s)}return[n,r]},U=async(e,t,a,n,r)=>{let l=e.questionOptions.conceptMappings,s=e.questionOptions.concept?e.questionOptions.concept:l?.length?l.map(e=>`${e.type}:${e.value}`).join(","):"";if(s)try{let{data:l}=await (0,p.openmrsFetch)(`${p.restBaseUrl}/concept?references=${s}&v=custom:(uuid,display,datatype,answers,conceptMappings:(conceptReferenceTerm:(conceptSource:(name),code)))`);if(l.results.length){let[s]=l.results;"Boolean"===s.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"===s.datatype.name&&e.questionOptions.answers?.forEach(t=>{s.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})}),R(e,s,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})},L=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})}},R=(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",H=function({isValidating:e,onFormValidation:t,schema:a,schemaErrors:l,setPublishedWithErrors:o,setValidationComplete:c,setValidationResponse:d,t:m}){let{formUuid:u}=(0,s.g)(),{form:_,mutate:f}=(0,P.m)(u),[b,h]=(0,n.useState)("idle"),[g,E]=(0,n.useState)(!1),y=(0,n.useRef)();(0,n.useEffect)(()=>()=>y.current?.(),[]);let{dataTypeToRenderingMap:v,enableFormValidation:w}=(0,p.useConfig)();async function k(){try{h("publishing"),await (0,C.UY)(_.uuid),(0,p.showSnackbar)({title:m("formPublished","Form published"),kind:"success",isLowContrast:!0,subtitle:`${_.name} `+m("formPublishedSuccessfully","form was published successfully")}),h("published"),await f()}catch(e){e instanceof Error&&((0,p.showSnackbar)({title:m("errorPublishingForm","Error publishing form"),kind:"error",subtitle:e?.message}),h("error"))}}async function N(){h("validateBeforePublishing");let[e]=await D(a,v,m);if(d(e),e.length){h("validated"),c(!0),o(!0);return}await k()}let S=(0,n.useCallback)(async()=>{h("unpublishing");try{await (0,C.b4)(_.uuid),h("unpublished"),(0,p.showSnackbar)({title:m("formUnpublished","Form unpublished"),kind:"success",isLowContrast:!0,subtitle:`${_.name} `+m("formUnpublishedSuccessfully","form was unpublished successfully")}),await f()}catch(e){e instanceof Error&&((0,p.showSnackbar)({title:m("errorUnpublishingForm","Error unpublishing form"),kind:"error",subtitle:e?.message}),h("error"))}},[_?.name,_?.uuid,f,m]),q=(0,n.useCallback)(()=>{let e=(0,p.showModal)("unpublish-form-modal",{closeModal:()=>e(),onUnpublishForm:S})},[S]);return r().createElement("div",{className:"-esm-form-builder__action-buttons__actionButtons___FIBsK"},r().createElement(i.$nd,{disabled:!a||g,kind:"primary",onClick:()=>{y.current?.(),y.current=(0,p.showModal)("save-form-modal",{form:_,schema:a,formUuid:u,closeModal:()=>y.current?.(),onSavingChange:E})}},m("saveForm","Save form")),r().createElement(r().Fragment,null,_&&w&&r().createElement(i.$nd,{kind:"tertiary",onClick:t,disabled:e},e?r().createElement(i.OuH,{className:j,description:m("validating","Validating")+"..."}):r().createElement("span",null,m("validateForm","Validate form"))),_&&!_.published?w?r().createElement(i.$nd,{kind:"secondary",onClick:N,disabled:"validateBeforePublishing"===b||l.length>0},"validateBeforePublishing"===b?r().createElement(i.OuH,{className:j,description:m("validating","Validating")+"..."}):r().createElement("span",null,m("validateAndPublishForm","Validate and publish form"))):r().createElement(i.$nd,{kind:"secondary",onClick:k,disabled:"publishing"===b||l.length>0},"publishing"!==b||_?.published?r().createElement("span",null,m("publishForm","Publish form")):r().createElement(i.OuH,{className:j,description:m("publishing","Publishing")+"..."})):null,_&&_.published?r().createElement(i.$nd,{kind:"danger--tertiary",onClick:q,disabled:"unpublishing"===b},m("unpublishForm","Unpublish form")):null))};var K=a(31397);function V({value:e}){let{t}=(0,o.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.K0,{kind:"ghost",size:"sm",label:t("copyToClipboard","Copy to clipboard"),onClick:a},r().createElement(K.QR,null)))}let Q=({form:e})=>{let{t}=(0,o.useTranslation)();return r().createElement(i.r9c,{isCondensed:!0,selection:!1},r().createElement(i.GRJ,null,r().createElement(i.Cvq,null,r().createElement(i.Um2,null,r().createElement("b",null,t("formName","Form Name"))),r().createElement(i.Um2,null,e.name)),r().createElement(i.Cvq,null,r().createElement(i.Um2,null,t("description","Description")),r().createElement(i.Um2,null,e.description)),r().createElement(i.Cvq,null,r().createElement(i.Um2,null,t("formUuid","Form UUID")),r().createElement(i.Um2,null,r().createElement(V,{value:e.uuid}))),r().createElement(i.Cvq,null,r().createElement(i.Um2,null,t("version","Version")),r().createElement(i.Um2,null,e.version)),r().createElement(i.Cvq,null,r().createElement(i.Um2,null,t("encounterType","Encounter Type")),r().createElement(i.Um2,null,r().createElement(V,{value:e.encounterType.uuid}))),r().createElement(i.Cvq,null,r().createElement(i.Um2,null,t("createdBy","Created By")),r().createElement(i.Um2,null,`${e?.auditInfo?.creator?.display??t("unknownUser","Unknown")} on ${(0,p.formatDatetime)((0,p.parseDate)(e?.auditInfo?.dateCreated))}`)),r().createElement(i.Cvq,null,r().createElement(i.Um2,null,t("lastEditedBy","Last Edited By")),r().createElement(i.Um2,null,e?.auditInfo?.dateChanged?`${e?.auditInfo?.changedBy.display} 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.Cvq,null,r().createElement(i.Um2,null,t("published","Published")),r().createElement(i.Um2,null,e.published?t("yes","Yes"):t("no","No"))),r().createElement(i.Cvq,null,r().createElement(i.Um2,null,t("retired","Retired")),r().createElement(i.Um2,null,e.retired?t("yes","Yes"):t("no","No")))))};var J=a(47665),Z=a(33174);let G="-esm-form-builder__form-renderer__helperText___dF96R",W="-esm-form-builder__form-renderer__heading___qZZcH";function X({error:e}){let{t}=(0,o.useTranslation)();return r().createElement(i.FAs,{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:G},r().createElement("pre",null,e.message)),r().createElement("p",{className:G},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,o.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"},[s,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.OuH,{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.FAs,{className:"-esm-form-builder__form-renderer__emptyStateTile___lbKY4"},r().createElement("h4",{className:W},a("noSchemaLoaded","No schema loaded")),r().createElement("p",{className:G},a("formRendererHelperText","Load a form schema in the Schema Editor to the left to see it rendered here by the Form Engine."))),t===s&&r().createElement(J.tH,{FallbackComponent:X,resetKeys:[s]},r().createElement(Z.Tn,{formJson:s,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,s=[];for(let e of t){let t=l.indexOf(e),a=l.indexOf(e,t+e.length);-1!==t&&(-1===a?(s.push(e),l=l.replace(e,"")):l=l.replace(e,"").replace(e,""))}return n+s.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:s,questionIndex:c,schema:u,sectionIndex:_,subQuestionIndex:f,children:b})=>{let{t:h}=(0,o.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:u,questionIndex:c,pageIndex:a,sectionIndex:_,subQuestionIndex:f})},[t,a,l,c,u,_,f]),v=(0,n.useCallback)(()=>{let e=(0,p.showModal)("delete-question-modal",{closeModal:()=>e(),pageIndex:a,sectionIndex:_,question:l,questionIndex:c,subQuestionIndex:f,onSchemaChange:t,schema:u})},[t,a,l,c,u,_,f]),{attributes:w,listeners:C,setNodeRef:k,active:N,isDragging:S,over:q,isOver:T}=(0,et.gl)({id:l.id,data:{type:null==f?"question":"obsQuestion",question:{handleDuplicateQuestion:e,onSchemaChange:t,pageIndex:a,sectionIndex:_,question:l,questionCount:s,questionIndex:c,subQuestionIndex:null!==f?f:null,schema:u}},disabled:s<=1&&null==f}),F=(0,n.useCallback)(()=>{S||(null!=f?e(l,a,_,c):e(l,a,_))},[e,S,l,a,_,c,f]);return r().createElement("div",{ref:k,className:B()("-esm-form-builder__draggable-question__question___1YGRp",{"-esm-form-builder__draggable-question__dragContainer___43qlJ":!0,"-esm-form-builder__draggable-question__dragContainerWhenDragging___Dybal":S,"-esm-form-builder__draggable-question__dropZone___QitMD":q?.id===l.id,"-esm-form-builder__draggable-question__droppable___ou3PG":N?.id===l.id})},r().createElement("div",{className:B()("-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:k,...w,...C},r().createElement(i.K0,{className:"-esm-form-builder__draggable-question__dragIcon___Iwqc-",enterDelayMs:q?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.K0,{enterDelayMs:300,label:h("duplicateQuestion","Duplicate question"),kind:"ghost",onClick:F,size:"md"},r().createElement(K.QR,null)),r().createElement(i.K0,{enterDelayMs:300,label:h("editQuestion","Edit question"),kind:"ghost",onClick:y,size:"md"},r().createElement(d.ff,null)),r().createElement(i.K0,{enterDelayMs:300,label:h("deleteQuestion","Delete question"),kind:"ghost",onClick:v,size:"md"},r().createElement(m.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:B()("-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)},b)))};var es=a(54499),eo=a(59184);let ei=({id:e,handleCancel:t,handleSave:a,value:l})=>{let{t:s}=(0,o.useTranslation)(),[c,d]=(0,n.useState)(l);return r().createElement(r().Fragment,null,r().createElement(i.ksK,{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.$nd,{size:"md",renderIcon:e=>r().createElement(es.eM,{...e,size:16}),kind:"primary",onClick:()=>a(c)},s("saveButtonText","Save")),r().createElement(i.$nd,{size:"md",renderIcon:e=>r().createElement(eo.bm,{...e,size:16}),kind:"secondary",onClick:t},s("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:s}=(0,o.useTranslation)(),[c,m]=(0,n.useState)(!1),u=()=>{m(!1)};return c?r().createElement(ei,{handleCancel:u,handleSave:e=>{l(e),u()},id:t,value:a}):r().createElement(r().Fragment,null,r().createElement("h1",{className:ec[`${e}Label`]},a),r().createElement(i.K0,{enterDelayMs:300,kind:"ghost",label:s("editButton","Edit {{elementType}}",{elementType:e}),onClick:()=>m(!0),size:"md"},r().createElement(d.ff,null)))},em={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"},eu=({isLoading:e,onSchemaChange:t,schema:a,validationResponse:l})=>{let[c,_]=(0,n.useState)(null),f=(0,ee.MS)(ee.cA,{activationConstraint:{distance:10}}),b=(0,ee.MS)(ee.uN),h=(0,ee.FR)(f,b),{t:g}=(0,o.useTranslation)(),{formUuid:E}=(0,s.g)(),y=(0,n.useCallback)(()=>{let e={name:"",pages:[],processor:"EncounterFormProcessor",encounterType:"",referencedForms:[],uuid:""};return a||t({...e}),a||e},[t,a]),v=(0,n.useCallback)(()=>{let e=y(),a=(0,p.showModal)("new-form-modal",{closeModal:()=>a(),schema:e,onSchemaChange:t})},[t,y]),w=(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]),k=(0,n.useCallback)(e=>{let n=(0,p.showModal)("new-section-modal",{closeModal:()=>n(),pageIndex:e,schema:a,onSchemaChange:t})},[a,t]),N=(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]),S=(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]),q=(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]),T=(0,n.useCallback)((e,n)=>{let r=(0,p.showModal)("question-modal",{closeModal:()=>r(),onSchemaChange:t,schema:a,pageIndex:e,sectionIndex:n})},[t,a]),F=(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]),M=(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 s=JSON.parse(JSON.stringify(e));s.id=s.id+"Duplicate",Number.isInteger(l)?a.pages[n].sections[r].questions[l].questions.push(s):a.pages[n].sections[r].questions.push(s),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]),$=e=>{let t=e?.map(e=>e.label)||[];return l.filter(e=>t?.includes(e.field.label))||[]},B=e=>{let t=l.find(t=>t.field.label===e.label&&t.field.id===e.id&&t.field.type===e.type);return t?.errorMessage||""},O=({question:e,pageIndex:n,sectionIndex:l,questionIndex:s})=>r().createElement("div",{className:em.obsQuestions},e.questions.map((o,i)=>r().createElement(el,{handleDuplicateQuestion:x,key:o.id,onSchemaChange:t,pageIndex:n,question:o,questionCount:e.questions.length,questionIndex:s,schema:a,sectionIndex:l,subQuestionIndex:i})));return r().createElement("div",{className:em.container},e?r().createElement(i.OuH,{description:g("loadingSchema","Loading schema")+"..."}):null,a?.name&&r().createElement(r().Fragment,null,r().createElement("div",{className:em.header},r().createElement("div",{className:em.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.$nd,{kind:"tertiary",size:"sm",renderIcon:u.OM,onClick:w,iconDescription:g("addPage","Add Page")},g("addPage","Add Page"))),r().createElement("div",{className:em.editorContainer},r().createElement(ed,{elementType:"schema",id:"formNameInput",value:a?.name,onSave:e=>F(e)}))),!E&&!a?.name&&r().createElement("div",{className:em.header},r().createElement("p",{className:em.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.$nd,{onClick:v,className:em.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,s=r.id,o=n.data.current,i=r.data.current;if(l===s||"question"===o.type&&"obsQuestion"===i.type||"obsQuestion"===o.type&&(o.question.sectionIndex!==i.question.sectionIndex||o.question.pageIndex!==i.question.pageIndex||o.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))}},s=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(!s)return;let o=function(e,t,a,n){let{pageIndex:r,sectionIndex:l}=a.question;if("question"===t.type){let s=e.pages[r]?.sections[l]?.questions;if(!s)return;let o=s.findIndex(e=>e.id===n);if(-1===o)return;return t.question.pageIndex===a.question.pageIndex&&a.question.sectionIndex===t.question.sectionIndex?t.question.questionIndex>a.question.questionIndex?s.splice(o,0,t.question.question):s.splice(o+1,0,t.question.question):s.splice(o,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}}}(s,l,a,n);if(o)return o}(a,o,i,s);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:em.editableFieldsContainer,key:n},r().createElement("div",{style:{display:"flex",alignItems:"center"}},r().createElement("div",{className:em.editorContainer},r().createElement(ed,{elementType:"page",id:"pageNameInput",value:a.pages[n].label,onSave:e=>M(e,n)})),r().createElement(i.K0,{enterDelayMs:300,kind:"ghost",label:g("deletePage","Delete page"),onClick:()=>C(n),size:"md"},r().createElement(m.zH,null))),r().createElement("div",null,e?.sections?.length?r().createElement("p",{className:em.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.nD3,{key:l},r().createElement(i.AsP,{title:e.label},r().createElement(r().Fragment,null,r().createElement("div",{style:{display:"flex",alignItems:"center"}},r().createElement("div",{className:em.editorContainer},r().createElement("h1",{className:em.sectionLabel},e.label),r().createElement(i.K0,{enterDelayMs:300,kind:"ghost",label:g("editSection","Edit section"),onClick:()=>e.reference?q(n,"edit",l):N(n,l),size:"md"},r().createElement(d.ff,null))),r().createElement(i.K0,{enterDelayMs:300,kind:"ghost",label:g("deleteSection","Delete section"),onClick:()=>S(n,l),size:"md"},r().createElement(m.zH,null))),r().createElement("div",null,e.questions?.length?e.questions.map((s,o)=>r().createElement("div",{id:`droppable-question-${n}-${l}-${o}`,key:o},r().createElement(el,{handleDuplicateQuestion:x,key:s.id,onSchemaChange:t,pageIndex:n,question:s,questionCount:e.questions.length,questionIndex:o,schema:a,sectionIndex:l},r().createElement(O,{question:s,pageIndex:n,sectionIndex:l,questionIndex:o})),B(s)&&r().createElement("div",{className:em.validationErrorMessage},B(s)),$(s.questionOptions.answers)?.length?r().createElement("div",{className:em.answerErrors},r().createElement("div",null,g("answerErrors","Answer Errors")),$(s.questionOptions.answers)?.map((e,t)=>r().createElement("div",{className:em.validationErrorMessage,key:t},`${e.field.label}: ${e.errorMessage}`))):null)):e.reference?r().createElement("p",{className:em.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:em.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.$nd,{className:em.addQuestionButton,kind:"tertiary",size:"sm",renderIcon:u.OM,onClick:()=>{T(n,l)},iconDescription:g("addQuestion","Add Question"),disabled:!!e.reference},g("addQuestion","Add Question"))))))):r().createElement("p",{className:em.explainer},g("pageExplainer","Pages typically have one or more sections. Click the button below to add a section to your page."))),r().createElement(i.$nd,{className:em.addSectionButton,kind:"ghost",renderIcon:u.OM,onClick:()=>{k(n)},iconDescription:g("addSection","Add Section")},g("addSection","Add Section")),r().createElement(i.$nd,{className:em.addSectionButton,kind:"ghost",renderIcon:u.OM,onClick:()=>{q(n)},iconDescription:g("addReference","Add Reference")},g("addReference","Add Reference")))):null,r().createElement(ee.Hd,null,c?r().createElement("div",{className:em.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 ef(e,t,a,n){try{let r=await (0,p.openmrsFetch)(`${p.restBaseUrl}/form/${e}?v=full`),l=r?.data,s=`${a}_translations_${t}`,o=l?.resources?.find(e=>e.name===s);o&&(await (0,p.openmrsFetch)(`${p.restBaseUrl}/form/${e}/resource/${o.uuid}`,{method:"DELETE",headers:{"Content-Type":"application/json"}}),o.valueReference&&await (0,p.openmrsFetch)(`${p.restBaseUrl}/clobdata/${o.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}),m=await d.text();if(!m)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:s,valueReference:m})})}catch(e){throw console.error("Error uploading backend translations:",e),e}}async function eb(e,t,a){try{let n=`${p.restBaseUrl}/form/${e}?v=full`,r=await (0,p.openmrsFetch)(n),l=r?.data,s=l?.resources?.find(e=>e.name?.endsWith(`translations_${t}`));if(!s?.valueReference)return a;let o=`${p.restBaseUrl}/clobdata/${s.valueReference}`,i=await (0,p.openmrsFetch)(o),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,o.useTranslation)(),l=ep(),[c,_]=(0,n.useState)(()=>l[0]?.code??"en"),[f,b]=(0,n.useState)({}),[h,g]=(0,n.useState)(!1),[E,y]=(0,n.useState)(!1),[v,w]=(0,n.useState)(null),[C,k]=(0,n.useState)(null),[N,S]=(0,n.useState)("all"),[q,T]=(0,n.useState)(""),[F,M]=(0,n.useState)(q),{formUuid:x}=(0,s.g)();(0,n.useEffect)(()=>{let e=setTimeout(()=>{M(q)},300);return()=>clearTimeout(e)},[q]);let $=(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]),B=(0,n.useCallback)((a,n)=>{let r={...f,[a]:n};if(b(r),e){let a={...e};a.translations||(a.translations={}),a.translations[c]=r,t(a)}},[e,c,t,f]),O=(0,n.useCallback)(e=>{let t=(0,p.showModal)("edit-translation-modal",{onClose:()=>t(),originalKey:e,initialValue:f[e],onSave:a=>{b({...f,[e]:a}),B(e,a),t()}})},[f,B]),I=(0,n.useMemo)(()=>{if(!e)return null;let t=e.translations?.[c],a="en"===c?$: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,$]),D=(0,n.useCallback)((e,t)=>{let a=$[e]??"";return null!=t&&""!==t.trim()&&t.trim()!==a.trim()},[$]);(0,n.useEffect)(()=>{"en"===c&&e&&b($)},[c,e,$]);let U=async a=>{if(_(a),!e||"en"===a)return void b($);g(!0);try{let n=await eb(x,a,$);b(n);let r={...e,translations:{...e.translations||{},[a]:n}};t(r)}catch(e){w("Failed to load backend translations.")}finally{g(!1)}},L=(0,n.useMemo)(()=>Object.entries(f).filter(([e,t])=>{if("translated"===N&&!D(e,t)||"untranslated"===N&&D(e,t))return!1;let a=F.toLowerCase();return e.toLowerCase().includes(a)||(t??"").toLowerCase().includes(a)}),[f,N,F,D]),A=(0,n.useCallback)(()=>{if(k(null),!I){"en"!==c&&k(a("noTranslationForLang","No translations found for selected language."));return}let t=URL.createObjectURL(I),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)},[I,c,e?.name,a]),R=(0,n.useCallback)(async()=>{if(!e)return;let t=e.translations?.[c],n="en"===c?$:t;if(!n){w(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 ef(x,c,e.name,n),(0,p.showSnackbar)({title:a("translationsUploaded","Translations Uploaded."),kind:"success",subtitle:a("translationsUploadedSuccessfully","Translation file uploaded successfully.")})}catch(e){w(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,$,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(u.Qp,{className:eh.arrow}),r().createElement(i.msM,{id:"target-language",items:l,itemToString:e=>e?.label??"",label:"",titleText:"",selectedItem:l.find(e=>e.code===c),onChange:({selectedItem:e})=>e&&U(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:R,disabled:E},a("uploadTranslation","Upload translation"),E?r().createElement(i.OuH,null):r().createElement(m._O,{size:16})))),r().createElement("div",{className:eh.translationTabs},r().createElement(i.tUM,{onChange:({selectedIndex:e})=>{0===e&&S("all"),1===e&&S("translated"),2===e&&S("untranslated")}},r().createElement(i.wbY,{"aria-label":"Translation filter"},r().createElement(i.ozo,null,a("all","All")),r().createElement(i.ozo,null,a("translated","Translated")),r().createElement(i.ozo,null,a("untranslated","Untranslated")))))),h?r().createElement(i.OuH,{description:a("loadingTranslations","Loading translations...")}):v?r().createElement(i.jeF,{kind:"error",title:a("error","Error"),subtitle:v,lowContrast:!0}):r().createElement(r().Fragment,null,C&&r().createElement(i.jeF,{className:eh.downloadError,kind:"error",title:a("error","Error"),subtitle:C,lowContrast:!0,onClose:()=>k(null)}),r().createElement("div",{className:eh.searchBox},r().createElement("input",{type:"text",placeholder:a("searchTranslationKeys","Search Translation Keys..."),className:eh.searchInput,value:q,onChange:e=>T(e.target.value)})),r().createElement("div",{className:eh.translationEditor},L.length>0?L.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.K0,{kind:"ghost",label:a("editString","Edit string"),onClick:()=>O(e),size:"md",className:eh.deleteButton},r().createElement(d.ff,null))))):r().createElement(i.jeF,{kind:"info",subtitle:"translated"===N?a("noTranslatedStrings","No strings are translated yet."):"untranslated"===N?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),ev=a(66148),ew=a.n(ev),eC=a(63282),ek=a.n(eC),eN=a(44861);let eS="-esm-form-builder__schema-editor__paginationIcon___3XKWl",eq="-esm-form-builder__schema-editor__disabledIcon___r9vkB",eT=({onSchemaChange:e,stringifiedSchema:t,setErrors:a,errors:l,validationOn:s,setValidationOn:c})=>{let{schema:d,schemaProperties:m}=function(){let{data:e,error:t,isLoading:a}=ew()("https://json.openmrs.org/form.schema.json",p.openmrsFetch);return{schema:e?.data,schemaProperties:e?.data.properties,error:t,isLoading:a}}(),{t:u}=(0,o.useTranslation)(),[_,f]=(0,n.useState)([]),[b,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(m,""),e},[m]);(0,n.useEffect)(()=>{f(g().flat())},[m,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,eN.A)((e,t)=>{try{let n=e.replace(/\s/g,"");if("{}"===n.trim())return void a([]);let r=new(ek())({allErrors:!0,jsPropertySyntax:!0,strict:!1}).compile(t),l=JSON.parse(e),s=r(l),o=e.split("\n");if(s)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=o.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.kZS,{subtitle:e,inline:!0,title:u("errorOnLine","Error on line")+` ${t+1}: `,kind:"error",lowContrast:!0,actionButtonLabel:u("referenceSchema","Reference schema"),onActionButtonClick:()=>window.open("https://json.openmrs.org/form.schema.json","_blank","noopener,noreferrer")}),v=()=>{h(e=>Math.max(e-1,0))},w=()=>{h(e=>Math.min(e+1,l.length-1))};return r().createElement("div",null,l.length&&s?r().createElement(()=>r().createElement("div",{className:"-esm-form-builder__schema-editor__validationErrorsContainer___vJh4t"},r().createElement(y,{text:l[b]?.text,line:l[b]?.startRow}),r().createElement("div",{className:"-esm-form-builder__schema-editor__pagination___q8uQ8"},r().createElement(eo.JG,{onClick:v,className:0===b?eq:eS}),r().createElement("div",null,b+1,"/",l.length),r().createElement(eo.c_,{onClick:w,className:b===l.length-1?eq:eS}))),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}))},eF=({hasValidationErrors:e,publishedWithErrors:t,errorsCount:a})=>{let{t:n}=(0,o.useTranslation)();return t?r().createElement(i.jeF,{kind:"error",title:n("publishingFailed","Publishing failed"),lowContrast:!0,subtitle:n("publishWarning","Cannot publish form with validation errors")}):e?r().createElement(i.jeF,{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.jeF,{kind:"success",title:n("ValidationSuccessful","Validation Successful"),lowContrast:!0,subtitle:n("noValidationErrorsFound","No validation errors found")})},eM="-esm-form-builder__form-editor__column___mmSc6",ex=({error:e,title:t})=>r().createElement(i.jeF,{className:"-esm-form-builder__form-editor__errorNotification___8cDJm",kind:"error",lowContrast:!0,subtitle:e?.message,title:t}),e$=({t:e})=>{let{formUuid:t}=(0,s.g)(),{blockRenderingWithErrors:a,dataTypeToRenderingMap:l}=(0,p.useConfig)(),o=!t,[c,m]=(0,n.useState)(),{form:u,formError:_,isLoadingForm:f,mutate:b}=(0,P.m)(t),{clobdata:h,clobdataError:g,isLoadingClobdata:E}=(0,N.S)(u),[y,v]=(0,n.useState)(!1),[w,k]=(0,n.useState)("idle"),[S,q]=(0,n.useState)(!1),[T,F]=(0,n.useState)(c?JSON.stringify(c,null,2):""),[M,x]=(0,n.useState)([]),[$,U]=(0,n.useState)(!1),[L,A]=(0,n.useState)(!1),[R,z]=(0,n.useState)(!1),[j,K]=(0,n.useState)([]),[V,J]=(0,n.useState)(!1),[Z,G]=(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||f),es=(0,n.useMemo)(()=>h?JSON.stringify(h,null,2):"",[h]),eo=!!T&&"undefined"!==T&&"null"!==T&&T!==es;(0,n.useEffect)(()=>{if(!eo)return;let e=e=>{e.preventDefault(),e.returnValue=""};return window.addEventListener("beforeunload",e),()=>window.removeEventListener("beforeunload",e)},[eo]);let ei=(0,n.useMemo)(()=>et?en:null,[et,en]),ec=(0,n.useCallback)(()=>{G("")},[]),ed=(0,n.useCallback)(e=>{ec(),F(e)},[ec]),em=(0,n.useCallback)(e=>{m(e),localStorage.setItem("formJSON",JSON.stringify(e))},[]),e_=(0,n.useCallback)(()=>{let e=(0,p.showModal)("restore-draft-schema-modal",{closeModal:()=>e(),onSchemaChange:em})},[em]),ef=(0,n.useCallback)(async()=>{if(u){v(!0);try{let t=await (0,C.Rv)(u.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:u.name})}),await b())}catch(t){t instanceof Error&&(0,p.showSnackbar)({title:e("errorRestoringForm","Error restoring form"),kind:"error",subtitle:t.message})}finally{v(!1)}}},[u,b,e]);(0,n.useEffect)(()=>{t&&(u&&Object.keys(u).length>0&&k("formLoaded"),"formLoaded"!==w||E||void 0!==h||e_(),h&&Object.keys(h).length>0&&(k("schemaLoaded"),m(h),localStorage.setItem("formJSON",JSON.stringify(h))))},[h,u,t,E,el,e_,w]),(0,n.useEffect)(()=>{F(JSON.stringify(c,null,2))},[c]);let eb=async()=>{U(!0);try{let[t]=await D(c,l,e);x(t),A(!0)}catch(e){console.error("Error during form validation:",e)}finally{U(!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"}]}}]}]}]};F(JSON.stringify(e,null,2)),em({...e})},[em]),eE=(0,n.useCallback)(()=>{ec();try{let e=JSON.parse(T);em(e),F(JSON.stringify(e,null,2))}catch(e){e instanceof Error&&G(e.message)}},[T,em,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]),ev=(0,n.useCallback)(()=>{j.length&&a?J(!0):(ea(!0),er(X),j.length&&!a&&J(!0),eE())},[a,j.length,eE,X]),ew=(0,n.useMemo)(()=>new Blob([JSON.stringify(c,null,2)],{type:"application/json"}),[c]),eC=(0,n.useCallback)(async()=>{await navigator.clipboard.writeText(T)},[T]),ek=S?16:8;return r().createElement("div",{className:"-esm-form-builder__form-editor__container___P4qBJ"},u?.retired&&r().createElement(i.kZS,{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:ef}),r().createElement(i.xA9,{className:B()("-esm-form-builder__form-editor__grid___Lg8eU",{"-esm-form-builder__form-editor__maximized___VbNzz":S})},r().createElement(i.VPZ,{lg:ek,md:ek,sm:4,className:eM},r().createElement("div",{className:"-esm-form-builder__form-editor__actionButtons___iXlCp"},el?r().createElement(i.OuH,{description:e("loadingSchema","Loading schema")+"..."}):r().createElement("h1",{className:"-esm-form-builder__form-editor__formName___5Ku8M"},u?.name,eo&&r().createElement(i.vwO,{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.l0C,{onChange:e=>{let t=e.target.files[0],a=new FileReader;a.onload=e=>{let t=e.target?.result;"string"==typeof t?m(JSON.parse(t)):t instanceof ArrayBuffer&&m(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"}),o&&!c?r().createElement(i.$nd,{kind:"ghost",onClick:eh},e("inputDummySchema","Load sample schema")):null,r().createElement(i.msM,{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.$nd,{kind:"tertiary",size:"sm",renderIcon:O.wM,onClick:ev,disabled:!!Z},e("renderChanges","Render changes"))),c?r().createElement("div",{className:"-esm-form-builder__form-editor__schemaIconActions___IdO3E"},r().createElement(i.K0,{enterDelayMs:300,kind:"ghost",label:S?e("minimizeEditor","Minimize editor"):e("maximizeEditor","Maximize editor"),onClick:()=>{q(!S)},size:"md"},S?r().createElement(I.Xj,null):r().createElement(I.hz,null)),r().createElement(i.i8y,{align:"top",className:"cds--btn--md",iconDescription:e("copySchema","Copy schema"),kind:"ghost",onClick:eC}),r().createElement("a",{download:`${u?.name}.json`,href:window.URL.createObjectURL(ew)},r().createElement(i.K0,{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(eT,{errors:j,isLoading:el,onSchemaChange:ed,setErrors:K,setValidationOn:J,stringifiedSchema:T,validationOn:V})))),r().createElement(i.VPZ,{lg:8,md:8,sm:4,className:eM},r().createElement(H,{schema:c,t:e,schemaErrors:j,setPublishedWithErrors:z,onFormValidation:eb,setValidationResponse:x,setValidationComplete:A,isValidating:$}),L&&r().createElement(eF,{hasValidationErrors:M.length>0,publishedWithErrors:R,errorsCount:M.length}),r().createElement(i.tUM,null,r().createElement(i.wbY,{"aria-label":"Form previews"},r().createElement(i.ozo,null,e("preview","Preview")),r().createElement(i.ozo,null,e("interactiveBuilder","Interactive Builder")),r().createElement(i.ozo,null,e("translationBuilder","Translation Builder")),u&&r().createElement(i.ozo,null,e("auditDetails","Audit Details"))),r().createElement(i.T2N,null,r().createElement(i.KpK,null,r().createElement(Y,{schema:ey,isLoading:el})),r().createElement(i.KpK,null,r().createElement(eu,{schema:c,onSchemaChange:em,isLoading:el,validationResponse:M})),r().createElement(i.KpK,null,r().createElement(eg,{formSchema:c,onUpdateSchema:em})),r().createElement(i.KpK,null,u&&r().createElement(Q,{form:u,key:u.uuid})))))))};function eB({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.$nd,{kind:"ghost",renderIcon:e=>r().createElement(u.nk,{size:24,...e}),iconDescription:e("returnToDashboard","Return to dashboard")},r().createElement("span",null,e("backToDashboard","Back to dashboard")))))}let eO=function(){let{t:e}=(0,o.useTranslation)(),{formUuid:t}=(0,s.g)();return r().createElement(r().Fragment,null,r().createElement(w,{title:t?e("editForm","Edit form"):e("createNewForm","Create a new form")}),r().createElement(eB,{t:e}),r().createElement(e$,{t:e}))},eI=()=>r().createElement(l.Kd,{basename:`${window.spaBase}/form-builder`},r().createElement(s.BV,null,r().createElement(s.qh,{path:"/",element:r().createElement(x,null)}),r().createElement(s.qh,{path:"/new",element:r().createElement(eO,null)}),r().createElement(s.qh,{path:"/edit/:formUuid",element:r().createElement(eO,null)})))}}]);
|
|
1
|
+
"use strict";(globalThis.webpackChunk_openmrs_esm_form_builder_app=globalThis.webpackChunk_openmrs_esm_form_builder_app||[]).push([["4858"],{79140(e,t,a){a.d(t,{S:()=>s});var n=a(66148),r=a.n(n),l=a(46718);let s=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:s,error:o,isLoading:i,isValidating:c,mutate:d}=r()(a?n:null,l.openmrsFetch);return{clobdata:s?.data,clobdataError:o,isLoadingClobdata:i,isValidatingClobdata:c,mutate:d}}},6916(e,t,a){a.d(t,{m:()=>s});var n=a(66148),r=a.n(n),l=a(46718);let s=e=>{let t=`${l.restBaseUrl}/form/${e}?v=full`,{data:a,error:n,isLoading:s,isValidating:o,mutate:i}=r()(e?t:null,l.openmrsFetch);return{form:a?.data,formError:n,isLoadingForm:s,isValidatingForm:o,mutate:i}}},70243(e,t,a){a.d(t,{h:()=>s});var n=a(73391),r=a.n(n),l=a(46718);function s(){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:s}=r()(e,l.openmrsFetch);return{forms:t?.data?.results??[],error:a,isLoading:!t&&!a,isValidating:n,mutate:s}}},70721(e,t,a){a.d(t,{Rv:()=>_,UY:()=>u,Vb:()=>o,_I:()=>i,b4:()=>m,i6:()=>l,kb:()=>d,o8:()=>s,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 s(e,t){return await (0,n.openmrsFetch)(`${n.restBaseUrl}/form/${e}/resource/${t}`,{method:"DELETE",headers:{"Content-Type":"application/json"}})}async function o(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 s=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:s.signal})}async function d(e,t,a,r,l){let s=new AbortController,o={name:e,version:t,published:a??!1,description:r??""};return l&&(o.encounterType=l),(await (0,n.openmrsFetch)(`${n.restBaseUrl}/form`,{method:"POST",headers:{"Content-Type":"application/json"},body:o,signal:s.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),s=a(47767),o=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,o.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,o.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"})),v={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"},w=({title:e})=>{let{t}=(0,o.useTranslation)(),a=(0,p.useSession)(),n=a?.sessionLocation?.display;return r().createElement("div",{className:v.header},r().createElement("div",{className:v["left-justified-items"]},r().createElement(y,null),r().createElement("div",{className:v["page-labels"]},r().createElement("p",null,t("formBuilder","Form builder")),r().createElement("p",{className:v["page-name"]},e))),r().createElement("div",{className:v["right-justified-items"]},r().createElement("div",{className:v.userContainer},r().createElement("p",null,a?.user?.person?.display),r().createElement(u.rs,{size:16,className:v.userIcon})),r().createElement("div",{className:v["date-and-location"]},r().createElement(g.aZ,{size:16}),r().createElement("span",{className:v.value},n),r().createElement("span",{className:v.middot},"\xb7"),r().createElement(E.Vv,{size:16}),r().createElement("span",{className:v.value},(0,p.formatDate)(new Date,{mode:"standard"})))))};var C=a(70721);let S=({totalItems:e,pageSize:t,onPageNumberChange:a,pageNumber:l,currentItems:s})=>{let{itemsDisplayed:c,pageSizes:d}=function(e,t,a,r){let{t:l}=(0,o.useTranslation)(),s=(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:s,itemsDisplayed:`${i} ${l("items"," items")}`}}(t,e,l,s),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,o.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:s}=(0,k.S)(e),o=e?.resources,[m,_]=(0,n.useState)(!1),b=(0,n.useMemo)(()=>new Blob([JSON.stringify(s,null,2)],{type:"application/json"}),[s]),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!=o.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 s="tablet"===(0,p.useLayoutType)(),o=s?"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:v,currentPage:w}=(0,p.usePagination)(g,10),C=v?.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(v?.map(e=>[e.uuid,e])??[]),[v]),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:o,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:s?"lg":"sm",useZebraStyles:!0,isSortable:!0},({rows:e,headers:t,getTableProps:n,getHeaderProps:s,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:o},r().createElement(i.TableToolbarContent,{className:T.headerContainer},r().createElement(i.TableToolbarSearch,{expanded:!0,size:o,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:o,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,s({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:o,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:v.length,totalItems:g.length,onPageNumberChange:({page:e})=>{y(e)},pageNumber:w,pageSize:10}))}let x=()=>{let{t:e}=(0,o.useTranslation)(),{forms:t,error:a,isLoading:n,isValidating:l,mutate:s}=(0,N.h)(),{showSchemaSaveWarning:c}=(0,p.useConfig)();return r().createElement("main",null,r().createElement(w,{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:s,t:e}))))};var F=a(46942),M=a.n(F),L=a(49564),D=a(54535);let $=async(e,t,a)=>{let n=[],r=[];if(e){let l="string"==typeof e?JSON.parse(e):e,s=[];l.pages?.forEach(e=>e.sections?.forEach(e=>e.questions?.forEach(e=>{s.push(O(e,n,t,r,a),U(e,n,a),R(e,n,a),A(e,n,a)),"obsGroup"===e.type&&e?.questions?.forEach(e=>s.push(O(e,n,t,r,a),U(e,n,a),A(e,n,a)))}))),await Promise.all(s)}return[n,r]},O=async(e,t,a,n,r)=>{let l=e.questionOptions.conceptMappings,s=e.questionOptions.concept?e.questionOptions.concept:l?.length?l.map(e=>`${e.type}:${e.value}`).join(","):"";if(s)try{let{data:l}=await (0,p.openmrsFetch)(`${p.restBaseUrl}/concept?references=${s}&v=custom:(uuid,display,datatype,answers,conceptMappings:(conceptReferenceTerm:(conceptSource:(name),code)))`);if(l.results.length){let[s]=l.results;"Boolean"===s.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"===s.datatype.name&&e.questionOptions.answers?.forEach(t=>{s.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})}),z(e,s,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})}},z=(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})},U=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:o,setValidationComplete:c,setValidationResponse:d,t:u}){let{formUuid:m}=(0,s.g)(),{form:_,mutate:b}=(0,P.m)(m),[f,h]=(0,n.useState)("idle"),[g,E]=(0,n.useState)(!1),y=(0,n.useRef)();(0,n.useEffect)(()=>()=>y.current?.(),[]);let{dataTypeToRenderingMap:v,enableFormValidation:w}=(0,p.useConfig)();async function S(){try{h("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")}),h("published"),await b()}catch(e){e instanceof Error&&((0,p.showSnackbar)({title:u("errorPublishingForm","Error publishing form"),kind:"error",subtitle:e?.message}),h("error"))}}async function k(){h("validateBeforePublishing");let[e]=await $(a,v,u);if(d(e),e.length){h("validated"),c(!0),o(!0);return}await S()}let N=(0,n.useCallback)(async()=>{h("unpublishing");try{await (0,C.b4)(_.uuid),h("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}),h("error"))}},[_?.name,_?.uuid,b,u]),T=(0,n.useCallback)(()=>{let e=(0,p.showModal)("unpublish-form-modal",{closeModal:()=>e(),onUnpublishForm:N})},[N]);return r().createElement("div",{className:"-esm-form-builder__action-buttons__actionButtons___FIBsK"},r().createElement(i.Button,{disabled:!a||g,kind:"primary",onClick:()=>{y.current?.(),y.current=(0,p.showModal)("save-form-modal",{form:_,schema:a,formUuid:m,closeModal:()=>y.current?.(),onSavingChange:E})}},u("saveForm","Save form")),r().createElement(r().Fragment,null,_&&w&&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?w?r().createElement(i.Button,{kind:"secondary",onClick:k,disabled:"validateBeforePublishing"===f||l.length>0},"validateBeforePublishing"===f?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:S,disabled:"publishing"===f||l.length>0},"publishing"!==f||_?.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:T,disabled:"unpublishing"===f},u("unpublishForm","Unpublish form")):null))};var H=a(31397);function Q({value:e}){let{t}=(0,o.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,o.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,r().createElement(Q,{value:e.encounterType.uuid}))),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} 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(33174);let Z="-esm-form-builder__form-renderer__helperText___dF96R",W="-esm-form-builder__form-renderer__heading___qZZcH";function X({error:e}){let{t}=(0,o.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,o.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"},[s,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===s&&r().createElement(K.tH,{FallbackComponent:X,resetKeys:[s]},r().createElement(G.Tn,{formJson:s,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,s=[];for(let e of t){let t=l.indexOf(e),a=l.indexOf(e,t+e.length);-1!==t&&(-1===a?(s.push(e),l=l.replace(e,"")):l=l.replace(e,"").replace(e,""))}return n+s.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:s,questionIndex:c,schema:m,sectionIndex:_,subQuestionIndex:b,children:f})=>{let{t:h}=(0,o.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]),v=(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:w,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:s,questionIndex:c,subQuestionIndex:null!==b?b:null,schema:m}},disabled:s<=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,...w,...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:v,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 es=a(54499),eo=a(59184);let ei=({id:e,handleCancel:t,handleSave:a,value:l})=>{let{t:s}=(0,o.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(es.eM,{...e,size:16}),kind:"primary",onClick:()=>a(c)},s("saveButtonText","Save")),r().createElement(i.Button,{size:"md",renderIcon:e=>r().createElement(eo.bm,{...e,size:16}),kind:"secondary",onClick:t},s("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:s}=(0,o.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:s("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,o.useTranslation)(),{formUuid:E}=(0,s.g)(),y=(0,n.useCallback)(()=>{let e={name:"",pages:[],processor:"EncounterFormProcessor",encounterType:"",referencedForms:[],uuid:""};return a||t({...e}),a||e},[t,a]),v=(0,n.useCallback)(()=>{let e=y(),a=(0,p.showModal)("new-form-modal",{closeModal:()=>a(),schema:e,onSchemaChange:t})},[t,y]),w=(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 s=JSON.parse(JSON.stringify(e));s.id=s.id+"Duplicate",Number.isInteger(l)?a.pages[n].sections[r].questions[l].questions.push(s):a.pages[n].sections[r].questions.push(s),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:s})=>r().createElement("div",{className:eu.obsQuestions},e.questions.map((o,i)=>r().createElement(el,{handleDuplicateQuestion:x,key:o.id,onSchemaChange:t,pageIndex:n,question:o,questionCount:e.questions.length,questionIndex:s,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:w,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:v,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,s=r.id,o=n.data.current,i=r.data.current;if(l===s||"question"===o.type&&"obsQuestion"===i.type||"obsQuestion"===o.type&&(o.question.sectionIndex!==i.question.sectionIndex||o.question.pageIndex!==i.question.pageIndex||o.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))}},s=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(!s)return;let o=function(e,t,a,n){let{pageIndex:r,sectionIndex:l}=a.question;if("question"===t.type){let s=e.pages[r]?.sections[l]?.questions;if(!s)return;let o=s.findIndex(e=>e.id===n);if(-1===o)return;return t.question.pageIndex===a.question.pageIndex&&a.question.sectionIndex===t.question.sectionIndex?t.question.questionIndex>a.question.questionIndex?s.splice(o,0,t.question.question):s.splice(o+1,0,t.question.question):s.splice(o,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}}}(s,l,a,n);if(o)return o}(a,o,i,s);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((s,o)=>r().createElement("div",{id:`droppable-question-${n}-${l}-${o}`,key:o},r().createElement(el,{handleDuplicateQuestion:x,key:s.id,onSchemaChange:t,pageIndex:n,question:s,questionCount:e.questions.length,questionIndex:o,schema:a,sectionIndex:l},r().createElement(L,{question:s,pageIndex:n,sectionIndex:l,questionIndex:o})),M(s)&&r().createElement("div",{className:eu.validationErrorMessage},M(s)),F(s.questionOptions.answers)?.length?r().createElement("div",{className:eu.answerErrors},r().createElement("div",null,g("answerErrors","Answer Errors")),F(s.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,s=`${a}_translations_${t}`,o=l?.resources?.find(e=>e.name===s);o&&(await (0,p.openmrsFetch)(`${p.restBaseUrl}/form/${e}/resource/${o.uuid}`,{method:"DELETE",headers:{"Content-Type":"application/json"}}),o.valueReference&&await (0,p.openmrsFetch)(`${p.restBaseUrl}/clobdata/${o.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:s,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,s=l?.resources?.find(e=>e.name?.endsWith(`translations_${t}`));if(!s?.valueReference)return a;let o=`${p.restBaseUrl}/clobdata/${s.valueReference}`,i=await (0,p.openmrsFetch)(o),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,o.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),[v,w]=(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,s.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]),$=(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 O=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){w("Failed to load backend translations.")}finally{g(!1)}},R=(0,n.useMemo)(()=>Object.entries(b).filter(([e,t])=>{if("translated"===k&&!$(e,t)||"untranslated"===k&&$(e,t))return!1;let a=B.toLowerCase();return e.toLowerCase().includes(a)||(t??"").toLowerCase().includes(a)}),[b,k,B,$]),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]),z=(0,n.useCallback)(async()=>{if(!e)return;let t=e.translations?.[c],n="en"===c?F:t;if(!n){w(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){w(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&&O(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:z,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...")}):v?r().createElement(i.InlineNotification,{kind:"error",title:a("error","Error"),subtitle:v,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),ev=a(66148),ew=a.n(ev),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:s,setValidationOn:c})=>{let{schema:d,schemaProperties:u}=function(){let{data:e,error:t,isLoading:a}=ew()("https://json.openmrs.org/form.schema.json",p.openmrsFetch);return{schema:e?.data,schemaProperties:e?.data.properties,error:t,isLoading:a}}(),{t:m}=(0,o.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),s=r(l),o=e.split("\n");if(s)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=o.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")}),v=()=>{h(e=>Math.max(e-1,0))},w=()=>{h(e=>Math.min(e+1,l.length-1))};return r().createElement("div",null,l.length&&s?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(eo.JG,{onClick:v,className:0===f?eT:eN}),r().createElement("div",null,f+1,"/",l.length),r().createElement(eo.c_,{onClick:w,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,o.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,s.g)(),{blockRenderingWithErrors:a,dataTypeToRenderingMap:l}=(0,p.useConfig)(),o=!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,v]=(0,n.useState)(!1),[w,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,O]=(0,n.useState)(!1),[R,A]=(0,n.useState)(!1),[z,U]=(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),es=(0,n.useMemo)(()=>h?JSON.stringify(h,null,2):"",[h]),eo=!!q&&"undefined"!==q&&"null"!==q&&q!==es;(0,n.useEffect)(()=>{if(!eo)return;let e=e=>{e.preventDefault(),e.returnValue=""};return window.addEventListener("beforeunload",e),()=>window.removeEventListener("beforeunload",e)},[eo]);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){v(!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{v(!1)}}},[m,f,e]);(0,n.useEffect)(()=>{t&&(m&&Object.keys(m).length>0&&S("formLoaded"),"formLoaded"!==w||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_,w]),(0,n.useEffect)(()=>{B(JSON.stringify(c,null,2))},[c]);let ef=async()=>{O(!0);try{let[t]=await $(c,l,e);x(t),A(!0)}catch(e){console.error("Error during form validation:",e)}finally{O(!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]),ev=(0,n.useCallback)(()=>{j.length&&a?K(!0):(ea(!0),er(X),j.length&&!a&&K(!0),eE())},[a,j.length,eE,X]),ew=(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,eo&&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"}),o&&!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:ev,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(ew)},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:U,onFormValidation:ef,setValidationResponse:x,setValidationComplete:A,isValidating:F}),R&&r().createElement(eB,{hasValidationErrors:I.length>0,publishedWithErrors:z,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,o.useTranslation)(),{formUuid:t}=(0,s.g)();return r().createElement(r().Fragment,null,r().createElement(w,{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(s.BV,null,r().createElement(s.qh,{path:"/",element:r().createElement(x,null)}),r().createElement(s.qh,{path:"/new",element:r().createElement(eL,null)}),r().createElement(s.qh,{path:"/edit/:formUuid",element:r().createElement(eL,null)})))}}]);
|