@openmrs/esm-generic-patient-widgets-app 11.3.1-pre.9462 → 11.3.1-pre.9475

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.
@@ -1 +1 @@
1
- var _openmrs_esm_generic_patient_widgets_app;(()=>{"use strict";var e,r,t,n,o,a,i,s,l,u,p,f,d,c,h,m,g,v,b,w,y,_={45684:(e,r,t)=>{var n={"./start":()=>Promise.all([t.e(2606),t.e(3204),t.e(5641),t.e(5434),t.e(8571),t.e(1936)]).then((()=>()=>t(61936)))},o=(e,r)=>(t.R=r,r=t.o(n,e)?n[e]():Promise.resolve().then((()=>{throw new Error('Module "'+e+'" does not exist in container.')})),t.R=void 0,r),a=(e,r)=>{if(t.S){var n="default",o=t.S[n];if(o&&o!==e)throw new Error("Container initialization failed as it has already been initialized with a different share scope");return t.S[n]=e,t.I(n,r)}};t.d(r,{get:()=>o,init:()=>a})}},P={};function j(e){var r=P[e];if(void 0!==r)return r.exports;var t=P[e]={id:e,exports:{}};return _[e].call(t.exports,t,t.exports,j),t.exports}j.m=_,j.c=P,j.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return j.d(r,{a:r}),r},r=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,j.t=function(t,n){if(1&n&&(t=this(t)),8&n)return t;if("object"==typeof t&&t){if(4&n&&t.__esModule)return t;if(16&n&&"function"==typeof t.then)return t}var o=Object.create(null);j.r(o);var a={};e=e||[null,r({}),r([]),r(r)];for(var i=2&n&&t;"object"==typeof i&&!~e.indexOf(i);i=r(i))Object.getOwnPropertyNames(i).forEach((e=>a[e]=()=>t[e]));return a.default=()=>t,j.d(o,a),o},j.d=(e,r)=>{for(var t in r)j.o(r,t)&&!j.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},j.f={},j.e=e=>Promise.all(Object.keys(j.f).reduce(((r,t)=>(j.f[t](e,r),r)),[])),j.u=e=>e+".js",j.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),j.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),t={},n="@openmrs/esm-generic-patient-widgets-app:",j.l=(e,r,o,a)=>{if(t[e])t[e].push(r);else{var i,s;if(void 0!==o)for(var l=document.getElementsByTagName("script"),u=0;u<l.length;u++){var p=l[u];if(p.getAttribute("src")==e||p.getAttribute("data-webpack")==n+o){i=p;break}}i||(s=!0,(i=document.createElement("script")).charset="utf-8",i.timeout=120,j.nc&&i.setAttribute("nonce",j.nc),i.setAttribute("data-webpack",n+o),i.src=e),t[e]=[r];var f=(r,n)=>{i.onerror=i.onload=null,clearTimeout(d);var o=t[e];if(delete t[e],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach((e=>e(n))),r)return r(n)},d=setTimeout(f.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=f.bind(null,i.onerror),i.onload=f.bind(null,i.onload),s&&document.head.appendChild(i)}},j.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{j.S={};var e={},r={};j.I=(t,n)=>{n||(n=[]);var o=r[t];if(o||(o=r[t]={}),!(n.indexOf(o)>=0)){if(n.push(o),e[t])return e[t];j.o(j.S,t)||(j.S[t]={});var a=j.S[t],i="@openmrs/esm-generic-patient-widgets-app",s=(e,r,t,n)=>{var o=a[e]=a[e]||{},s=o[r];(!s||!s.loaded&&(!n!=!s.eager?n:i>s.from))&&(o[r]={get:t,from:i,eager:!!n})},l=[];return"default"===t&&(s("@openmrs/esm-framework","8.0.1-pre.3518",(()=>Promise.all([j.e(7545),j.e(2606),j.e(5670),j.e(5641),j.e(5434),j.e(8382),j.e(8571)]).then((()=>()=>j(55670))))),s("@openmrs/esm-patient-common-lib","11.3.1-pre.9462",(()=>Promise.all([j.e(7545),j.e(2606),j.e(5641),j.e(5434),j.e(8382),j.e(8571),j.e(4341)]).then((()=>()=>j(94341))))),s("dayjs","1.11.13",(()=>j.e(3464).then((()=>()=>j(23464))))),s("react-i18next","16.0.0",(()=>Promise.all([j.e(6336),j.e(5641)]).then((()=>()=>j(16336))))),s("react-router-dom","6.16.0",(()=>Promise.all([j.e(2913),j.e(5641)]).then((()=>()=>j(52913))))),s("react","18.3.1",(()=>j.e(4041).then((()=>()=>j(14041))))),s("rxjs","6.6.7",(()=>j.e(2457).then((()=>()=>j(82457))))),s("swr/_internal","2.2.5",(()=>Promise.all([j.e(2372),j.e(5641)]).then((()=>()=>j(42372))))),s("swr/immutable","2.2.5",(()=>Promise.all([j.e(5641),j.e(5434),j.e(7495)]).then((()=>()=>j(29876))))),s("swr/infinite","2.2.5",(()=>Promise.all([j.e(5641),j.e(5434),j.e(89)]).then((()=>()=>j(52470)))))),e[t]=l.length?Promise.all(l).then((()=>e[t]=1)):1}}})(),(()=>{var e;j.g.importScripts&&(e=j.g.location+"");var r=j.g.document;if(!e&&r&&(r.currentScript&&"SCRIPT"===r.currentScript.tagName.toUpperCase()&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName("script");if(t.length)for(var n=t.length-1;n>-1&&(!e||!/^http(s?):/.test(e));)e=t[n--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),j.p=e})(),o=e=>{var r=e=>e.split(".").map((e=>+e==e?+e:e)),t=/^([^-+]+)?(?:-([^+]+))?(?:\+(.+))?$/.exec(e),n=t[1]?r(t[1]):[];return t[2]&&(n.length++,n.push.apply(n,r(t[2]))),t[3]&&(n.push([]),n.push.apply(n,r(t[3]))),n},a=(e,r)=>{e=o(e),r=o(r);for(var t=0;;){if(t>=e.length)return t<r.length&&"u"!=(typeof r[t])[0];var n=e[t],a=(typeof n)[0];if(t>=r.length)return"u"==a;var i=r[t],s=(typeof i)[0];if(a!=s)return"o"==a&&"n"==s||"s"==s||"u"==a;if("o"!=a&&"u"!=a&&n!=i)return n<i;t++}},i=e=>{var r=e[0],t="";if(1===e.length)return"*";if(r+.5){t+=0==r?">=":-1==r?"<":1==r?"^":2==r?"~":r>0?"=":"!=";for(var n=1,o=1;o<e.length;o++)n--,t+="u"==(typeof(s=e[o]))[0]?"-":(n>0?".":"")+(n=2,s);return t}var a=[];for(o=1;o<e.length;o++){var s=e[o];a.push(0===s?"not("+l()+")":1===s?"("+l()+" || "+l()+")":2===s?a.pop()+" "+a.pop():i(s))}return l();function l(){return a.pop().replace(/^\((.+)\)$/,"$1")}},s=(e,r)=>{if(0 in e){r=o(r);var t=e[0],n=t<0;n&&(t=-t-1);for(var a=0,i=1,l=!0;;i++,a++){var u,p,f=i<e.length?(typeof e[i])[0]:"";if(a>=r.length||"o"==(p=(typeof(u=r[a]))[0]))return!l||("u"==f?i>t&&!n:""==f!=n);if("u"==p){if(!l||"u"!=f)return!1}else if(l)if(f==p)if(i<=t){if(u!=e[i])return!1}else{if(n?u>e[i]:u<e[i])return!1;u!=e[i]&&(l=!1)}else if("s"!=f&&"n"!=f){if(n||i<=t)return!1;l=!1,i--}else{if(i<=t||p<f!=n)return!1;l=!1}else"s"!=f&&"n"!=f&&(l=!1,i--)}}var d=[],c=d.pop.bind(d);for(a=1;a<e.length;a++){var h=e[a];d.push(1==h?c()|c():2==h?c()&c():h?s(h,r):!c())}return!!c()},l=(e,r)=>e&&j.o(e,r),u=e=>(e.loaded=1,e.get()),p=e=>Object.keys(e).reduce(((r,t)=>(e[t].eager&&(r[t]=e[t]),r)),{}),f=(e,r,t)=>{var n=t?p(e[r]):e[r];return Object.keys(n).reduce(((e,r)=>!e||!n[e].loaded&&a(e,r)?r:e),0)},d=(e,r,t,n)=>"Unsatisfied version "+t+" from "+(t&&e[r][t].from)+" of shared singleton module "+r+" (required "+i(n)+")",c=e=>{throw new Error(e)},h=e=>{"undefined"!=typeof console&&console.warn&&console.warn(e)},m=(e,r,t)=>t?t():((e,r)=>c("Shared module "+r+" doesn't exist in shared scope "+e))(e,r),g=(e=>function(r,t,n,o,a){var i=j.I(r);return i&&i.then&&!n?i.then(e.bind(e,r,j.S[r],t,!1,o,a)):e(r,j.S[r],t,n,o,a)})(((e,r,t,n,o,a)=>{if(!l(r,t))return m(e,t,a);var i=f(r,t,n);return s(o,i)||h(d(r,t,i,o)),u(r[t][i])})),v={},b={75641:()=>g("default","react",!1,[1,18,2,0],(()=>j.e(4041).then((()=>()=>j(14041))))),55434:()=>g("default","swr/_internal",!1,[1,2],(()=>j.e(2372).then((()=>()=>j(42372))))),8877:()=>g("default","react-router-dom",!1,[1,6],(()=>j.e(2913).then((()=>()=>j(52913))))),24818:()=>g("default","rxjs",!1,[1,6],(()=>j.e(2457).then((()=>()=>j(82457))))),46372:()=>g("default","dayjs",!1,[1,1],(()=>j.e(3464).then((()=>()=>j(23464))))),98394:()=>g("default","swr/infinite",!1,[1,2],(()=>j.e(2470).then((()=>()=>j(52470))))),54440:()=>g("default","@openmrs/esm-framework",!1,[1,8],(()=>Promise.all([j.e(7545),j.e(5670),j.e(8382)]).then((()=>()=>j(55670))))),72339:()=>g("default","react-i18next",!1,[1,16],(()=>j.e(6336).then((()=>()=>j(16336))))),88010:()=>g("default","swr/immutable",!1,[1,2],(()=>j.e(9876).then((()=>()=>j(29876))))),36274:()=>g("default","@openmrs/esm-patient-common-lib",!1,[1,11],(()=>Promise.all([j.e(7545),j.e(8382),j.e(4341)]).then((()=>()=>j(94341)))))},w={1936:[36274],5434:[55434],5641:[75641],8382:[8877,24818,46372,98394],8571:[54440,72339,88010]},y={},j.f.consumes=(e,r)=>{j.o(w,e)&&w[e].forEach((e=>{if(j.o(v,e))return r.push(v[e]);if(!y[e]){var t=r=>{v[e]=0,j.m[e]=t=>{delete j.c[e],t.exports=r()}};y[e]=!0;var n=r=>{delete v[e],j.m[e]=t=>{throw delete j.c[e],r}};try{var o=b[e]();o.then?r.push(v[e]=o.then(t).catch(n)):t(o)}catch(e){n(e)}}}))},(()=>{var e={3461:0};j.f.j=(r,t)=>{var n=j.o(e,r)?e[r]:void 0;if(0!==n)if(n)t.push(n[2]);else if(/^(5434|5641|8382|8571)$/.test(r))e[r]=0;else{var o=new Promise(((t,o)=>n=e[r]=[t,o]));t.push(n[2]=o);var a=j.p+j.u(r),i=new Error;j.l(a,(t=>{if(j.o(e,r)&&(0!==(n=e[r])&&(e[r]=void 0),n)){var o=t&&("load"===t.type?"missing":t.type),a=t&&t.target&&t.target.src;i.message="Loading chunk "+r+" failed.\n("+o+": "+a+")",i.name="ChunkLoadError",i.type=o,i.request=a,n[1](i)}}),"chunk-"+r,r)}};var r=(r,t)=>{var n,o,[a,i,s]=t,l=0;if(a.some((r=>0!==e[r]))){for(n in i)j.o(i,n)&&(j.m[n]=i[n]);s&&s(j)}for(r&&r(t);l<a.length;l++)o=a[l],j.o(e,o)&&e[o]&&e[o][0](),e[o]=0},t=globalThis.webpackChunk_openmrs_esm_generic_patient_widgets_app=globalThis.webpackChunk_openmrs_esm_generic_patient_widgets_app||[];t.forEach(r.bind(null,0)),t.push=r.bind(null,t.push.bind(t))})(),j.nc=void 0;var S=j(45684);_openmrs_esm_generic_patient_widgets_app=S})();
1
+ var _openmrs_esm_generic_patient_widgets_app;(()=>{"use strict";var e,r,t,n,o,a,i,s,l,u,p,f,d,c,h,m,g,v,b,w,y,_={45684:(e,r,t)=>{var n={"./start":()=>Promise.all([t.e(2606),t.e(3204),t.e(5641),t.e(5434),t.e(8571),t.e(1936)]).then((()=>()=>t(61936)))},o=(e,r)=>(t.R=r,r=t.o(n,e)?n[e]():Promise.resolve().then((()=>{throw new Error('Module "'+e+'" does not exist in container.')})),t.R=void 0,r),a=(e,r)=>{if(t.S){var n="default",o=t.S[n];if(o&&o!==e)throw new Error("Container initialization failed as it has already been initialized with a different share scope");return t.S[n]=e,t.I(n,r)}};t.d(r,{get:()=>o,init:()=>a})}},P={};function j(e){var r=P[e];if(void 0!==r)return r.exports;var t=P[e]={id:e,exports:{}};return _[e].call(t.exports,t,t.exports,j),t.exports}j.m=_,j.c=P,j.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return j.d(r,{a:r}),r},r=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,j.t=function(t,n){if(1&n&&(t=this(t)),8&n)return t;if("object"==typeof t&&t){if(4&n&&t.__esModule)return t;if(16&n&&"function"==typeof t.then)return t}var o=Object.create(null);j.r(o);var a={};e=e||[null,r({}),r([]),r(r)];for(var i=2&n&&t;"object"==typeof i&&!~e.indexOf(i);i=r(i))Object.getOwnPropertyNames(i).forEach((e=>a[e]=()=>t[e]));return a.default=()=>t,j.d(o,a),o},j.d=(e,r)=>{for(var t in r)j.o(r,t)&&!j.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},j.f={},j.e=e=>Promise.all(Object.keys(j.f).reduce(((r,t)=>(j.f[t](e,r),r)),[])),j.u=e=>e+".js",j.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),j.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),t={},n="@openmrs/esm-generic-patient-widgets-app:",j.l=(e,r,o,a)=>{if(t[e])t[e].push(r);else{var i,s;if(void 0!==o)for(var l=document.getElementsByTagName("script"),u=0;u<l.length;u++){var p=l[u];if(p.getAttribute("src")==e||p.getAttribute("data-webpack")==n+o){i=p;break}}i||(s=!0,(i=document.createElement("script")).charset="utf-8",i.timeout=120,j.nc&&i.setAttribute("nonce",j.nc),i.setAttribute("data-webpack",n+o),i.src=e),t[e]=[r];var f=(r,n)=>{i.onerror=i.onload=null,clearTimeout(d);var o=t[e];if(delete t[e],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach((e=>e(n))),r)return r(n)},d=setTimeout(f.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=f.bind(null,i.onerror),i.onload=f.bind(null,i.onload),s&&document.head.appendChild(i)}},j.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{j.S={};var e={},r={};j.I=(t,n)=>{n||(n=[]);var o=r[t];if(o||(o=r[t]={}),!(n.indexOf(o)>=0)){if(n.push(o),e[t])return e[t];j.o(j.S,t)||(j.S[t]={});var a=j.S[t],i="@openmrs/esm-generic-patient-widgets-app",s=(e,r,t,n)=>{var o=a[e]=a[e]||{},s=o[r];(!s||!s.loaded&&(!n!=!s.eager?n:i>s.from))&&(o[r]={get:t,from:i,eager:!!n})},l=[];return"default"===t&&(s("@openmrs/esm-framework","8.0.1-pre.3518",(()=>Promise.all([j.e(7545),j.e(2606),j.e(5670),j.e(5641),j.e(5434),j.e(8382),j.e(8571)]).then((()=>()=>j(55670))))),s("@openmrs/esm-patient-common-lib","11.3.1-pre.9475",(()=>Promise.all([j.e(7545),j.e(2606),j.e(5641),j.e(5434),j.e(8382),j.e(8571),j.e(4341)]).then((()=>()=>j(94341))))),s("dayjs","1.11.13",(()=>j.e(3464).then((()=>()=>j(23464))))),s("react-i18next","16.0.0",(()=>Promise.all([j.e(6336),j.e(5641)]).then((()=>()=>j(16336))))),s("react-router-dom","6.16.0",(()=>Promise.all([j.e(2913),j.e(5641)]).then((()=>()=>j(52913))))),s("react","18.3.1",(()=>j.e(4041).then((()=>()=>j(14041))))),s("rxjs","6.6.7",(()=>j.e(2457).then((()=>()=>j(82457))))),s("swr/_internal","2.2.5",(()=>Promise.all([j.e(2372),j.e(5641)]).then((()=>()=>j(42372))))),s("swr/immutable","2.2.5",(()=>Promise.all([j.e(5641),j.e(5434),j.e(7495)]).then((()=>()=>j(29876))))),s("swr/infinite","2.2.5",(()=>Promise.all([j.e(5641),j.e(5434),j.e(89)]).then((()=>()=>j(52470)))))),e[t]=l.length?Promise.all(l).then((()=>e[t]=1)):1}}})(),(()=>{var e;j.g.importScripts&&(e=j.g.location+"");var r=j.g.document;if(!e&&r&&(r.currentScript&&"SCRIPT"===r.currentScript.tagName.toUpperCase()&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName("script");if(t.length)for(var n=t.length-1;n>-1&&(!e||!/^http(s?):/.test(e));)e=t[n--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),j.p=e})(),o=e=>{var r=e=>e.split(".").map((e=>+e==e?+e:e)),t=/^([^-+]+)?(?:-([^+]+))?(?:\+(.+))?$/.exec(e),n=t[1]?r(t[1]):[];return t[2]&&(n.length++,n.push.apply(n,r(t[2]))),t[3]&&(n.push([]),n.push.apply(n,r(t[3]))),n},a=(e,r)=>{e=o(e),r=o(r);for(var t=0;;){if(t>=e.length)return t<r.length&&"u"!=(typeof r[t])[0];var n=e[t],a=(typeof n)[0];if(t>=r.length)return"u"==a;var i=r[t],s=(typeof i)[0];if(a!=s)return"o"==a&&"n"==s||"s"==s||"u"==a;if("o"!=a&&"u"!=a&&n!=i)return n<i;t++}},i=e=>{var r=e[0],t="";if(1===e.length)return"*";if(r+.5){t+=0==r?">=":-1==r?"<":1==r?"^":2==r?"~":r>0?"=":"!=";for(var n=1,o=1;o<e.length;o++)n--,t+="u"==(typeof(s=e[o]))[0]?"-":(n>0?".":"")+(n=2,s);return t}var a=[];for(o=1;o<e.length;o++){var s=e[o];a.push(0===s?"not("+l()+")":1===s?"("+l()+" || "+l()+")":2===s?a.pop()+" "+a.pop():i(s))}return l();function l(){return a.pop().replace(/^\((.+)\)$/,"$1")}},s=(e,r)=>{if(0 in e){r=o(r);var t=e[0],n=t<0;n&&(t=-t-1);for(var a=0,i=1,l=!0;;i++,a++){var u,p,f=i<e.length?(typeof e[i])[0]:"";if(a>=r.length||"o"==(p=(typeof(u=r[a]))[0]))return!l||("u"==f?i>t&&!n:""==f!=n);if("u"==p){if(!l||"u"!=f)return!1}else if(l)if(f==p)if(i<=t){if(u!=e[i])return!1}else{if(n?u>e[i]:u<e[i])return!1;u!=e[i]&&(l=!1)}else if("s"!=f&&"n"!=f){if(n||i<=t)return!1;l=!1,i--}else{if(i<=t||p<f!=n)return!1;l=!1}else"s"!=f&&"n"!=f&&(l=!1,i--)}}var d=[],c=d.pop.bind(d);for(a=1;a<e.length;a++){var h=e[a];d.push(1==h?c()|c():2==h?c()&c():h?s(h,r):!c())}return!!c()},l=(e,r)=>e&&j.o(e,r),u=e=>(e.loaded=1,e.get()),p=e=>Object.keys(e).reduce(((r,t)=>(e[t].eager&&(r[t]=e[t]),r)),{}),f=(e,r,t)=>{var n=t?p(e[r]):e[r];return Object.keys(n).reduce(((e,r)=>!e||!n[e].loaded&&a(e,r)?r:e),0)},d=(e,r,t,n)=>"Unsatisfied version "+t+" from "+(t&&e[r][t].from)+" of shared singleton module "+r+" (required "+i(n)+")",c=e=>{throw new Error(e)},h=e=>{"undefined"!=typeof console&&console.warn&&console.warn(e)},m=(e,r,t)=>t?t():((e,r)=>c("Shared module "+r+" doesn't exist in shared scope "+e))(e,r),g=(e=>function(r,t,n,o,a){var i=j.I(r);return i&&i.then&&!n?i.then(e.bind(e,r,j.S[r],t,!1,o,a)):e(r,j.S[r],t,n,o,a)})(((e,r,t,n,o,a)=>{if(!l(r,t))return m(e,t,a);var i=f(r,t,n);return s(o,i)||h(d(r,t,i,o)),u(r[t][i])})),v={},b={75641:()=>g("default","react",!1,[1,18,2,0],(()=>j.e(4041).then((()=>()=>j(14041))))),55434:()=>g("default","swr/_internal",!1,[1,2],(()=>j.e(2372).then((()=>()=>j(42372))))),8877:()=>g("default","react-router-dom",!1,[1,6],(()=>j.e(2913).then((()=>()=>j(52913))))),24818:()=>g("default","rxjs",!1,[1,6],(()=>j.e(2457).then((()=>()=>j(82457))))),46372:()=>g("default","dayjs",!1,[1,1],(()=>j.e(3464).then((()=>()=>j(23464))))),98394:()=>g("default","swr/infinite",!1,[1,2],(()=>j.e(2470).then((()=>()=>j(52470))))),54440:()=>g("default","@openmrs/esm-framework",!1,[1,8],(()=>Promise.all([j.e(7545),j.e(5670),j.e(8382)]).then((()=>()=>j(55670))))),72339:()=>g("default","react-i18next",!1,[1,16],(()=>j.e(6336).then((()=>()=>j(16336))))),88010:()=>g("default","swr/immutable",!1,[1,2],(()=>j.e(9876).then((()=>()=>j(29876))))),36274:()=>g("default","@openmrs/esm-patient-common-lib",!1,[1,11],(()=>Promise.all([j.e(7545),j.e(8382),j.e(4341)]).then((()=>()=>j(94341)))))},w={1936:[36274],5434:[55434],5641:[75641],8382:[8877,24818,46372,98394],8571:[54440,72339,88010]},y={},j.f.consumes=(e,r)=>{j.o(w,e)&&w[e].forEach((e=>{if(j.o(v,e))return r.push(v[e]);if(!y[e]){var t=r=>{v[e]=0,j.m[e]=t=>{delete j.c[e],t.exports=r()}};y[e]=!0;var n=r=>{delete v[e],j.m[e]=t=>{throw delete j.c[e],r}};try{var o=b[e]();o.then?r.push(v[e]=o.then(t).catch(n)):t(o)}catch(e){n(e)}}}))},(()=>{var e={3461:0};j.f.j=(r,t)=>{var n=j.o(e,r)?e[r]:void 0;if(0!==n)if(n)t.push(n[2]);else if(/^(5434|5641|8382|8571)$/.test(r))e[r]=0;else{var o=new Promise(((t,o)=>n=e[r]=[t,o]));t.push(n[2]=o);var a=j.p+j.u(r),i=new Error;j.l(a,(t=>{if(j.o(e,r)&&(0!==(n=e[r])&&(e[r]=void 0),n)){var o=t&&("load"===t.type?"missing":t.type),a=t&&t.target&&t.target.src;i.message="Loading chunk "+r+" failed.\n("+o+": "+a+")",i.name="ChunkLoadError",i.type=o,i.request=a,n[1](i)}}),"chunk-"+r,r)}};var r=(r,t)=>{var n,o,[a,i,s]=t,l=0;if(a.some((r=>0!==e[r]))){for(n in i)j.o(i,n)&&(j.m[n]=i[n]);s&&s(j)}for(r&&r(t);l<a.length;l++)o=a[l],j.o(e,o)&&e[o]&&e[o][0](),e[o]=0},t=globalThis.webpackChunk_openmrs_esm_generic_patient_widgets_app=globalThis.webpackChunk_openmrs_esm_generic_patient_widgets_app||[];t.forEach(r.bind(null,0)),t.push=r.bind(null,t.push.bind(t))})(),j.nc=void 0;var S=j(45684);_openmrs_esm_generic_patient_widgets_app=S})();
@@ -183,9 +183,9 @@
183
183
  "initial": false,
184
184
  "entry": false,
185
185
  "recorded": false,
186
- "size": 178713,
186
+ "size": 182596,
187
187
  "sizes": {
188
- "javascript": 178671,
188
+ "javascript": 182554,
189
189
  "consume-shared": 42
190
190
  },
191
191
  "names": [],
@@ -199,7 +199,7 @@
199
199
  "auxiliaryFiles": [
200
200
  "1936.js.map"
201
201
  ],
202
- "hash": "99714b4200f129e5",
202
+ "hash": "0c358309feb64cf8",
203
203
  "childrenByOrder": {}
204
204
  },
205
205
  {
@@ -450,7 +450,7 @@
450
450
  "auxiliaryFiles": [
451
451
  "openmrs-esm-generic-patient-widgets-app.js.map"
452
452
  ],
453
- "hash": "0b4da4636e150aff",
453
+ "hash": "b55e6a0cc5f4306b",
454
454
  "childrenByOrder": {}
455
455
  },
456
456
  {
@@ -1270,10 +1270,10 @@
1270
1270
  "initial": true,
1271
1271
  "entry": true,
1272
1272
  "recorded": false,
1273
- "size": 3810370,
1273
+ "size": 3814253,
1274
1274
  "sizes": {
1275
1275
  "consume-shared": 252,
1276
- "javascript": 3787007,
1276
+ "javascript": 3790890,
1277
1277
  "share-init": 420,
1278
1278
  "runtime": 22691
1279
1279
  },
@@ -1290,7 +1290,7 @@
1290
1290
  "auxiliaryFiles": [
1291
1291
  "main.js.map"
1292
1292
  ],
1293
- "hash": "5bee89d3867ceab6",
1293
+ "hash": "e0b706f2ae8d233f",
1294
1294
  "childrenByOrder": {}
1295
1295
  },
1296
1296
  {
package/dist/routes.json CHANGED
@@ -1 +1 @@
1
- {"$schema":"https://json.openmrs.org/routes.schema.json","backendDependencies":{"fhir2":">=1.2"},"extensions":[{"name":"obs-by-encounter-widget","component":"switchableObs","online":true,"offline":true,"meta":{"fullWidth":false}},{"name":"obs-table-horizontal-widget-small","component":"obsTableHorizontal","online":true,"offline":true,"meta":{"fullWidth":false}},{"name":"obs-table-horizontal-widget","component":"obsTableHorizontal","online":true,"offline":true,"meta":{"fullWidth":true}}],"version":"11.3.1-pre.9462"}
1
+ {"$schema":"https://json.openmrs.org/routes.schema.json","backendDependencies":{"fhir2":">=1.2"},"extensions":[{"name":"obs-by-encounter-widget","component":"switchableObs","online":true,"offline":true,"meta":{"fullWidth":false}},{"name":"obs-table-horizontal-widget-small","component":"obsTableHorizontal","online":true,"offline":true,"meta":{"fullWidth":false}},{"name":"obs-table-horizontal-widget","component":"obsTableHorizontal","online":true,"offline":true,"meta":{"fullWidth":true}}],"version":"11.3.1-pre.9475"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openmrs/esm-generic-patient-widgets-app",
3
- "version": "11.3.1-pre.9462",
3
+ "version": "11.3.1-pre.9475",
4
4
  "license": "MPL-2.0",
5
5
  "description": "Generic widgets for the patient chart",
6
6
  "browser": "dist/openmrs-esm-generic-patient-widgets-app.js",
@@ -52,7 +52,7 @@
52
52
  "swr": "2.x"
53
53
  },
54
54
  "devDependencies": {
55
- "@openmrs/esm-patient-common-lib": "11.3.1-pre.9462",
55
+ "@openmrs/esm-patient-common-lib": "11.3.1-pre.9475",
56
56
  "webpack": "^5.99.9"
57
57
  },
58
58
  "stableVersion": "11.3.0"
@@ -13,7 +13,12 @@ export const configSchemaSwitchable = {
13
13
  },
14
14
  graphOldestFirst: {
15
15
  _type: Type.Boolean,
16
- _description: 'Show graph values from most oldest to recent',
16
+ _description: 'Plot values from oldest (left) to newest (right)',
17
+ _default: false,
18
+ },
19
+ tableSortOldestFirst: {
20
+ _type: Type.Boolean,
21
+ _description: 'Sort table by default from oldest to newest',
17
22
  _default: false,
18
23
  },
19
24
  interpretationSlot: {
@@ -98,6 +103,7 @@ export interface ConfigObjectSwitchable {
98
103
  title: string;
99
104
  resultsName: string;
100
105
  graphOldestFirst: boolean;
106
+ tableSortOldestFirst: boolean;
101
107
  interpretationSlot: string;
102
108
  data: Array<{
103
109
  concept: string;
@@ -116,17 +116,17 @@ describe('ObsSwitchable', () => {
116
116
  expect(headerRow).toHaveTextContent('Chief Complaint');
117
117
  expect(headerRow).toHaveTextContent('Power Level');
118
118
  const firstRow = screen.getAllByRole('row')[1];
119
- expect(firstRow).toHaveTextContent('Jan');
120
- expect(firstRow).toHaveTextContent('180');
121
- expect(firstRow).toHaveTextContent('70');
122
- expect(firstRow).toHaveTextContent('Too strong');
123
- expect(firstRow).toHaveTextContent('9001');
119
+ expect(firstRow).toHaveTextContent('Feb');
120
+ expect(firstRow).toHaveTextContent('182');
121
+ expect(firstRow).toHaveTextContent('72');
122
+ expect(firstRow).toHaveTextContent('--');
123
+ expect(firstRow).toHaveTextContent('--');
124
124
  const secondRow = screen.getAllByRole('row')[2];
125
- expect(secondRow).toHaveTextContent('Feb');
126
- expect(secondRow).toHaveTextContent('182');
127
- expect(secondRow).toHaveTextContent('72');
128
- expect(secondRow).toHaveTextContent('--');
129
- expect(secondRow).toHaveTextContent('--');
125
+ expect(secondRow).toHaveTextContent('Jan');
126
+ expect(secondRow).toHaveTextContent('180');
127
+ expect(secondRow).toHaveTextContent('70');
128
+ expect(secondRow).toHaveTextContent('Too strong');
129
+ expect(secondRow).toHaveTextContent('9001');
130
130
 
131
131
  const user = userEvent.setup();
132
132
  const chartViewButton = screen.getByLabelText('Chart view');
@@ -182,6 +182,82 @@ describe('ObsSwitchable', () => {
182
182
  );
183
183
  });
184
184
 
185
+ it('should sort by date and by obs correctly', async () => {
186
+ mockUseObs.mockReturnValue({
187
+ data: { observations: mockObsData as Array<ObsResult>, concepts: mockConceptData, encounters: mockEncounters },
188
+ error: null,
189
+ isLoading: false,
190
+ isValidating: false,
191
+ mutate: jest.fn(),
192
+ });
193
+ mockUseConfig.mockReturnValue({
194
+ ...(getDefaultsFromConfigSchema(configSchemaSwitchable) as Object),
195
+ title: 'My Stats',
196
+ data: [
197
+ {
198
+ concept: '5090AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA',
199
+ label: 'Tallitude',
200
+ },
201
+ {
202
+ concept: '2154AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA',
203
+ },
204
+ { concept: '164162AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' },
205
+ { concept: '164163AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' },
206
+ ],
207
+ });
208
+
209
+ render(<ObsSwitchable patientUuid="123" />);
210
+
211
+ const user = userEvent.setup();
212
+
213
+ const firstRowInitial = screen.getAllByRole('row')[1];
214
+ expect(firstRowInitial).toHaveTextContent('01 — Feb — 2021');
215
+ const secondRowInitial = screen.getAllByRole('row')[2];
216
+ expect(secondRowInitial).toHaveTextContent('01 — Jan — 2021');
217
+
218
+ const dateHeader = screen.getByText('Date and time');
219
+ await user.click(dateHeader);
220
+ const firstRow = screen.getAllByRole('row')[1];
221
+ expect(firstRow).toHaveTextContent('01 — Feb — 2021');
222
+ const secondRow = screen.getAllByRole('row')[2];
223
+ expect(secondRow).toHaveTextContent('01 — Jan — 2021');
224
+
225
+ await user.click(dateHeader);
226
+ const firstRow2 = screen.getAllByRole('row')[1];
227
+ expect(firstRow2).toHaveTextContent('01 — Jan — 2021');
228
+ const secondRow2 = screen.getAllByRole('row')[2];
229
+ expect(secondRow2).toHaveTextContent('01 — Feb — 2021');
230
+ });
231
+
232
+ it('supports table sorting oldest to newest', async () => {
233
+ mockUseObs.mockReturnValue({
234
+ data: { observations: mockObsData as Array<ObsResult>, concepts: mockConceptData, encounters: mockEncounters },
235
+ error: null,
236
+ isLoading: false,
237
+ isValidating: false,
238
+ mutate: jest.fn(),
239
+ });
240
+
241
+ mockUseConfig.mockReturnValue({
242
+ ...(getDefaultsFromConfigSchema(configSchemaSwitchable) as Object),
243
+ title: 'My Stats',
244
+ data: [{ concept: '5090AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' }, { concept: '2154AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' }],
245
+ tableSortOldestFirst: true,
246
+ });
247
+
248
+ render(<ObsSwitchable patientUuid="123" />);
249
+
250
+ const user = userEvent.setup();
251
+
252
+ const dateHeader = screen.getByText('Date and time');
253
+ await user.click(dateHeader);
254
+
255
+ const firstRow = screen.getAllByRole('row')[1];
256
+ expect(firstRow).toHaveTextContent('01 — Jan — 2021');
257
+ const secondRow = screen.getAllByRole('row')[2];
258
+ expect(secondRow).toHaveTextContent('01 — Feb — 2021');
259
+ });
260
+
185
261
  it('should support showing graph tab by default', async () => {
186
262
  mockUseObs.mockReturnValue({
187
263
  data: { observations: mockObsData as Array<ObsResult>, concepts: mockConceptData, encounters: mockEncounters },
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import React, { useMemo, useState, useCallback } from 'react';
2
2
  import {
3
3
  DataTable,
4
4
  Table,
@@ -8,6 +8,7 @@ import {
8
8
  TableHead,
9
9
  TableHeader,
10
10
  TableRow,
11
+ type DataTableSortState,
11
12
  } from '@carbon/react';
12
13
  import { usePagination, useConfig, formatDatetime, formatDate, formatTime } from '@openmrs/esm-framework';
13
14
  import { PatientChartPagination } from '@openmrs/esm-patient-common-lib';
@@ -20,6 +21,20 @@ interface ObsTableProps {
20
21
  patientUuid: string;
21
22
  }
22
23
 
24
+ interface Row {
25
+ id: string;
26
+ date: string;
27
+ rawDate: string;
28
+ encounter: string;
29
+ [conceptUuid: string]: string | number;
30
+ }
31
+
32
+ interface Header {
33
+ key: string;
34
+ header: string;
35
+ sortFunc: (rowA: Row, rowB: Row) => number;
36
+ }
37
+
23
38
  const ObsTable: React.FC<ObsTableProps> = ({ patientUuid }) => {
24
39
  const { t } = useTranslation();
25
40
  const config = useConfig<ConfigObjectSwitchable>();
@@ -32,24 +47,51 @@ const ObsTable: React.FC<ObsTableProps> = ({ patientUuid }) => {
32
47
  observations.filter((o) => o.encounter.reference === reference),
33
48
  );
34
49
 
35
- const tableHeaders = [
36
- { key: 'date', header: t('dateAndTime', 'Date and time'), isSortable: true },
37
- ...config.data.map(({ concept, label }) => ({
38
- key: concept,
39
- header: label || concepts.find((c) => c.uuid == concept)?.display,
40
- })),
41
- ];
42
-
43
- if (config.showEncounterType) {
44
- tableHeaders.splice(1, 0, { key: 'encounter', header: t('encounterType', 'Encounter type'), isSortable: true });
45
- }
46
-
47
- const tableRows = React.useMemo(
50
+ const tableHeaders: Array<Header> = useMemo(() => {
51
+ const headers: Array<Header> = [
52
+ {
53
+ key: 'date',
54
+ header: t('dateAndTime', 'Date and time'),
55
+ sortFunc: (rowA: Row, rowB: Row) => new Date(rowB.rawDate).getTime() - new Date(rowA.rawDate).getTime(),
56
+ },
57
+ ];
58
+ if (config.showEncounterType) {
59
+ headers.splice(1, 0, {
60
+ key: 'encounter',
61
+ header: t('encounterType', 'Encounter type'),
62
+ sortFunc: (rowA: Row, rowB: Row) => rowA.encounter.localeCompare(rowB.encounter) as 1 | -1,
63
+ });
64
+ }
65
+ headers.push(
66
+ ...config.data.map(({ concept, label }) => ({
67
+ key: concept,
68
+ header: label || concepts.find((c) => c.uuid == concept)?.display,
69
+ sortFunc: (rowA: Row, rowB: Row) => {
70
+ const a = rowA[concept];
71
+ const b = rowB[concept];
72
+ if (a === b) {
73
+ return 0;
74
+ }
75
+ if (a == null) {
76
+ return 1;
77
+ }
78
+ if (b == null) {
79
+ return -1;
80
+ }
81
+ return a < b ? 1 : -1;
82
+ },
83
+ })),
84
+ );
85
+ return headers;
86
+ }, [t, config.data, config.showEncounterType, concepts]);
87
+
88
+ const tableRows: Array<Row> = React.useMemo(
48
89
  () =>
49
90
  obssGroupedByEncounters?.map((obss, index) => {
50
91
  const rowData = {
51
92
  id: `${index}`,
52
93
  date: formatDatetime(new Date(obss[0].effectiveDateTime), { mode: 'wide' }),
94
+ rawDate: obss[0].effectiveDateTime,
53
95
  encounter: obss[0].encounter.name,
54
96
  };
55
97
 
@@ -101,11 +143,50 @@ const ObsTable: React.FC<ObsTableProps> = ({ patientUuid }) => {
101
143
  [config.data, config?.dateFormat, obssGroupedByEncounters],
102
144
  );
103
145
 
104
- const { results, goTo, currentPage } = usePagination(tableRows, config.table.pageSize);
146
+ const [sortParams, setSortParams] = useState<{ key: string; sortDirection: 'ASC' | 'DESC' | 'NONE' }>({
147
+ key: 'date',
148
+ sortDirection: config.tableSortOldestFirst ? 'ASC' : 'DESC',
149
+ });
150
+
151
+ const handleSorting = useCallback(
152
+ (cellA: any, cellB: any, { key, sortDirection }: { key: string; sortDirection: DataTableSortState }) => {
153
+ // Use setTimeout to avoid setState during render
154
+ setTimeout(() => {
155
+ if (sortDirection === 'NONE') {
156
+ setSortParams({ key: '', sortDirection });
157
+ } else {
158
+ setSortParams({ key, sortDirection });
159
+ }
160
+ }, 0);
161
+ return 0;
162
+ },
163
+ [],
164
+ );
165
+
166
+ const sortedData: Array<any> = useMemo(() => {
167
+ if (sortParams.sortDirection === 'NONE') {
168
+ return tableRows;
169
+ }
170
+
171
+ const header = tableHeaders.find((header) => header.key === sortParams.key);
172
+
173
+ if (!header) {
174
+ return tableRows;
175
+ }
176
+
177
+ const sortedRows = tableRows.slice().sort((rowA, rowB) => {
178
+ const sortingNum = header.sortFunc(rowA, rowB);
179
+ return sortParams.sortDirection === 'DESC' ? sortingNum : -sortingNum;
180
+ });
181
+
182
+ return sortedRows;
183
+ }, [tableHeaders, tableRows, sortParams]);
184
+
185
+ const { results, goTo, currentPage } = usePagination(sortedData, config.table.pageSize);
105
186
 
106
187
  return (
107
188
  <div>
108
- <DataTable rows={results} headers={tableHeaders} isSortable size="sm" useZebraStyles>
189
+ <DataTable rows={results} headers={tableHeaders} isSortable sortRow={handleSorting} size="sm" useZebraStyles>
109
190
  {({ rows, headers, getHeaderProps, getTableProps }) => (
110
191
  <TableContainer>
111
192
  <Table {...getTableProps()} className={styles.customRow}>
@@ -138,7 +219,7 @@ const ObsTable: React.FC<ObsTableProps> = ({ patientUuid }) => {
138
219
  </DataTable>
139
220
  <PatientChartPagination
140
221
  pageNumber={currentPage}
141
- totalItems={tableRows.length}
222
+ totalItems={sortedData.length}
142
223
  currentItems={results.length}
143
224
  pageSize={config.table.pageSize}
144
225
  onPageNumberChange={({ page }) => goTo(page)}