@openmrs/esm-implementer-tools-app 3.2.1-pre.1015 → 3.2.1-pre.1016

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.
Files changed (74) hide show
  1. package/dist/307.js +1 -1
  2. package/dist/307.js.map +1 -1
  3. package/dist/319.js +1 -1
  4. package/dist/371.js +2 -0
  5. package/dist/371.js.map +1 -0
  6. package/dist/494.js +2 -0
  7. package/dist/494.js.map +1 -0
  8. package/dist/574.js +1 -1
  9. package/dist/597.js +1 -1
  10. package/dist/597.js.map +1 -1
  11. package/dist/620.js +2 -0
  12. package/dist/620.js.map +1 -0
  13. package/dist/652.js +2 -0
  14. package/dist/652.js.map +1 -0
  15. package/dist/683.js +2 -0
  16. package/dist/683.js.map +1 -0
  17. package/dist/707.js +2 -0
  18. package/dist/707.js.map +1 -0
  19. package/dist/839.js +1 -1
  20. package/dist/839.js.map +1 -1
  21. package/dist/95.js +2 -0
  22. package/dist/95.js.map +1 -0
  23. package/dist/openmrs-esm-implementer-tools-app.js +1 -1
  24. package/dist/openmrs-esm-implementer-tools-app.js.buildmanifest.json +168 -70
  25. package/dist/openmrs-esm-implementer-tools-app.js.map +1 -1
  26. package/dist/openmrs-esm-implementer-tools-app.old +1 -1
  27. package/package.json +6 -4
  28. package/src/configuration/configuration.component.tsx +41 -22
  29. package/src/configuration/configuration.styles.scss +0 -12
  30. package/src/configuration/configuration.test.tsx +4 -4
  31. package/src/configuration/{config-subtree.component.tsx → interactive-editor/config-subtree.component.tsx} +1 -1
  32. package/src/configuration/{config-tree-for-module.component.tsx → interactive-editor/config-tree-for-module.component.tsx} +0 -0
  33. package/src/configuration/{config-tree.component.tsx → interactive-editor/config-tree.component.tsx} +2 -2
  34. package/src/configuration/interactive-editor/config-tree.styles.scss +3 -0
  35. package/src/configuration/{description.component.tsx → interactive-editor/description.component.tsx} +1 -1
  36. package/src/configuration/{description.styles.scss → interactive-editor/description.styles.scss} +1 -1
  37. package/src/configuration/interactive-editor/display-value.scss +5 -0
  38. package/src/configuration/{display-value.tsx → interactive-editor/display-value.tsx} +1 -1
  39. package/src/configuration/{editable-value.component.tsx → interactive-editor/editable-value.component.tsx} +1 -1
  40. package/src/configuration/{editable-value.styles.scss → interactive-editor/editable-value.styles.scss} +1 -1
  41. package/src/configuration/{extension-configure-tree.tsx → interactive-editor/extension-configure-tree.tsx} +0 -0
  42. package/src/configuration/{extension-slots-config-tree.tsx → interactive-editor/extension-slots-config-tree.tsx} +1 -1
  43. package/src/configuration/{layout → interactive-editor/layout}/layout.styles.css +0 -0
  44. package/src/configuration/{layout → interactive-editor/layout}/subtree.component.tsx +0 -0
  45. package/src/configuration/{layout → interactive-editor/layout}/tree-container.component.tsx +0 -0
  46. package/src/configuration/interactive-editor/value-editor.scss +5 -0
  47. package/src/configuration/{value-editor.tsx → interactive-editor/value-editor.tsx} +1 -1
  48. package/src/configuration/{value-editors → interactive-editor/value-editors}/array-editor.styles.css +0 -0
  49. package/src/configuration/{value-editors → interactive-editor/value-editors}/array-editor.tsx +0 -0
  50. package/src/configuration/{value-editors → interactive-editor/value-editors}/concept-search.resource.tsx +0 -0
  51. package/src/configuration/{value-editors → interactive-editor/value-editors}/concept-search.styles.scss +0 -0
  52. package/src/configuration/{value-editors → interactive-editor/value-editors}/concept-search.tsx +0 -0
  53. package/src/configuration/{value-editors → interactive-editor/value-editors}/extension-slot-add.tsx +0 -0
  54. package/src/configuration/{value-editors → interactive-editor/value-editors}/extension-slot-order.tsx +0 -0
  55. package/src/configuration/{value-editors → interactive-editor/value-editors}/extension-slot-remove.tsx +0 -0
  56. package/src/configuration/{value-editors → interactive-editor/value-editors}/object-editor.styles.css +0 -0
  57. package/src/configuration/{value-editors → interactive-editor/value-editors}/object-editor.tsx +0 -0
  58. package/src/configuration/{value-editors → interactive-editor/value-editors}/person-attribute-search.resource.tsx +0 -0
  59. package/src/configuration/{value-editors → interactive-editor/value-editors}/person-attribute-search.tsx +0 -0
  60. package/src/configuration/{value-editors → interactive-editor/value-editors}/uuid-search.scss +1 -1
  61. package/src/configuration/{value-editors → interactive-editor/value-editors}/value-editor-field.tsx +0 -0
  62. package/src/configuration/json-editor/json-editor.component.tsx +67 -0
  63. package/src/configuration/json-editor/json-editor.scss +11 -0
  64. package/src/implementer-tools.component.tsx +4 -2
  65. package/src/store.ts +19 -0
  66. package/src/ui-editor/ui-editor.tsx +1 -1
  67. package/translations/en.json +3 -2
  68. package/translations/es.json +14 -7
  69. package/dist/237.js +0 -2
  70. package/dist/237.js.map +0 -1
  71. package/dist/664.js +0 -2
  72. package/dist/664.js.map +0 -1
  73. package/dist/865.js +0 -2
  74. package/dist/865.js.map +0 -1
@@ -1,2 +1,2 @@
1
- System.register("@openmrs/esm-implementer-tools-app",[],(function(e,r){return{execute:function(){e((()=>{var e,t,n,o,a,i,s,l,u,p,f,c,d,h,m={6585:(e,r,t)=>{(0,t(7968).s)(1)},7968:(e,r,t)=>{const n=t(1577).R;r.s=function(e){if(e||(e=1),!t.y.meta||!t.y.meta.url)throw console.error("__system_context__",t.y),Error("systemjs-webpack-interop was provided an unknown SystemJS context. Expected context.meta.url, but none was provided");t.p=n(t.y.meta.url,e)}},8331:(e,r,t)=>{t(6585)},1577:(e,r,t)=>{r.R=function(e,r){var t=document.createElement("a");t.href=e;for(var n="/"===t.pathname[0]?t.pathname:"/"+t.pathname,o=0,a=n.length;o!==r&&a>=0;)"/"===n[--a]&&o++;if(o!==r)throw Error("systemjs-webpack-interop: rootDirectoryLevel ("+r+") is greater than the number of directories ("+o+") in the URL path "+e);var i=n.slice(0,a+1);return t.protocol+"//"+t.host+i};Number.isInteger},3055:(e,r,t)=>{"use strict";var n={app:()=>Promise.all([t.e(983),t.e(307)]).then((()=>()=>t(5307)))},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})}},v={};function b(e){var r=v[e];if(void 0!==r)return r.exports;var t=v[e]={id:e,loaded:!1,exports:{}};return m[e].call(t.exports,t,t.exports,b),t.loaded=!0,t.exports}return b.m=m,b.c=v,b.y=r,b.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return b.d(r,{a:r}),r},b.d=(e,r)=>{for(var t in r)b.o(r,t)&&!b.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},b.f={},b.e=e=>Promise.all(Object.keys(b.f).reduce(((r,t)=>(b.f[t](e,r),r)),[])),b.u=e=>e+".js",b.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),b.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),e={},t="@openmrs/esm-implementer-tools-app:",b.l=(r,n,o,a)=>{if(e[r])e[r].push(n);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")==r||p.getAttribute("data-webpack")==t+o){i=p;break}}i||(s=!0,(i=document.createElement("script")).charset="utf-8",i.timeout=120,b.nc&&i.setAttribute("nonce",b.nc),i.setAttribute("data-webpack",t+o),i.src=r),e[r]=[n];var f=(t,n)=>{i.onerror=i.onload=null,clearTimeout(c);var o=e[r];if(delete e[r],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach((e=>e(n))),t)return t(n)},c=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)}},b.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},b.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),(()=>{b.S={};var e={},r={};b.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];b.o(b.S,t)||(b.S[t]={});var a=b.S[t],i="@openmrs/esm-implementer-tools-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","3.2.1-pre.1015",(()=>b.e(217).then((()=>()=>b(7217))))),s("carbon-components-react","7.31.0",(()=>Promise.all([b.e(597),b.e(983),b.e(412),b.e(199),b.e(237)]).then((()=>()=>b(9597))))),s("carbon-components","10.31.0",(()=>Promise.all([b.e(25),b.e(1)]).then((()=>()=>b(25))))),s("carbon-icons","7.0.7",(()=>b.e(860).then((()=>()=>b(4860))))),s("react-dom","16.14.0",(()=>Promise.all([b.e(788),b.e(983)]).then((()=>()=>b(2788))))),s("react-i18next","11.15.4",(()=>Promise.all([b.e(743),b.e(983)]).then((()=>()=>b(5743))))),s("react","16.14.0",(()=>b.e(735).then((()=>()=>b(2735)))))),e[t]=l.length?Promise.all(l).then((()=>e[t]=1)):1}}})(),b.p="",n=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},o=(e,r)=>{e=n(e),r=n(r);for(var t=0;;){if(t>=e.length)return t<r.length&&"u"!=(typeof r[t])[0];var o=e[t],a=(typeof o)[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&&o!=i)return o<i;t++}},a=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 i=[];for(o=1;o<e.length;o++){var s=e[o];i.push(0===s?"not("+l()+")":1===s?"("+l()+" || "+l()+")":2===s?i.pop()+" "+i.pop():a(s))}return l();function l(){return i.pop().replace(/^\((.+)\)$/,"$1")}},i=(e,r)=>{if(0 in e){r=n(r);var t=e[0],o=t<0;o&&(t=-t-1);for(var a=0,s=1,l=!0;;s++,a++){var u,p,f=s<e.length?(typeof e[s])[0]:"";if(a>=r.length||"o"==(p=(typeof(u=r[a]))[0]))return!l||("u"==f?s>t&&!o:""==f!=o);if("u"==p){if(!l||"u"!=f)return!1}else if(l)if(f==p)if(s<=t){if(u!=e[s])return!1}else{if(o?u>e[s]:u<e[s])return!1;u!=e[s]&&(l=!1)}else if("s"!=f&&"n"!=f){if(o||s<=t)return!1;l=!1,s--}else{if(s<=t||p<f!=o)return!1;l=!1}else"s"!=f&&"n"!=f&&(l=!1,s--)}}var c=[],d=c.pop.bind(c);for(a=1;a<e.length;a++){var h=e[a];c.push(1==h?d()|d():2==h?d()&d():h?i(h,r):!d())}return!!d()},s=(e,r)=>{var t=e[r];return Object.keys(t).reduce(((e,r)=>!e||!t[e].loaded&&o(e,r)?r:e),0)},l=(e,r,t,n)=>"Unsatisfied version "+t+" from "+(t&&e[r][t].from)+" of shared singleton module "+r+" (required "+a(n)+")",u=(e,r,t,n)=>{var o=s(e,t);return i(n,o)||"undefined"!=typeof console&&console.warn&&console.warn(l(e,t,o,n)),p(e[t][o])},p=e=>(e.loaded=1,e.get()),f=(e=>function(r,t,n,o){var a=b.I(r);return a&&a.then?a.then(e.bind(e,r,b.S[r],t,n,o)):e(0,b.S[r],t,n,o)})(((e,r,t,n,o)=>r&&b.o(r,t)?u(r,0,t,n):o())),c={},d={6983:()=>f("default","react",[1,16],(()=>b.e(735).then((()=>()=>b(2735))))),2680:()=>f("default","react-i18next",[1,11],(()=>b.e(743).then((()=>()=>b(5743))))),7657:()=>f("default","@openmrs/esm-framework",[0,3,1,14,,"pre"],(()=>b.e(217).then((()=>()=>b(7217))))),5412:()=>f("default","react-dom",[1,16],(()=>b.e(788).then((()=>()=>b(2788))))),6240:()=>f("default","carbon-icons",[1,7],(()=>b.e(860).then((()=>()=>b(4860))))),7569:()=>f("default","carbon-components",[1,10],(()=>b.e(25).then((()=>()=>b(25))))),9784:()=>f("default","carbon-components-react",[1,7],(()=>Promise.all([b.e(597),b.e(412),b.e(199)]).then((()=>()=>b(9597)))))},h={199:[6240,7569],307:[2680,7657],412:[5412],784:[9784],983:[6983]},b.f.consumes=(e,r)=>{b.o(h,e)&&h[e].forEach((e=>{if(b.o(c,e))return r.push(c[e]);var t=r=>{c[e]=0,b.m[e]=t=>{delete b.c[e],t.exports=r()}},n=r=>{delete c[e],b.m[e]=t=>{throw delete b.c[e],r}};try{var o=d[e]();o.then?r.push(c[e]=o.then(t).catch(n)):t(o)}catch(e){n(e)}}))},(()=>{var e={346:0};b.f.j=(r,t)=>{var n=b.o(e,r)?e[r]:void 0;if(0!==n)if(n)t.push(n[2]);else if(/^(199|412|784|983)$/.test(r))e[r]=0;else{var o=new Promise(((t,o)=>n=e[r]=[t,o]));t.push(n[2]=o);var a=b.p+b.u(r),i=new Error;b.l(a,(t=>{if(b.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)b.o(i,n)&&(b.m[n]=i[n]);s&&s(b)}for(r&&r(t);l<a.length;l++)o=a[l],b.o(e,o)&&e[o]&&e[o][0](),e[o]=0},t=self.webpackChunk_openmrs_esm_implementer_tools_app=self.webpackChunk_openmrs_esm_implementer_tools_app||[];t.forEach(r.bind(null,0)),t.push=r.bind(null,t.push.bind(t))})(),b(8331),b(3055)})())}}}));
1
+ System.register("@openmrs/esm-implementer-tools-app",[],(function(e,r){return{execute:function(){e((()=>{var e,t,n,o,a,i,s,l,u,p,f,c,d,h,m={6585:(e,r,t)=>{(0,t(7968).s)(1)},7968:(e,r,t)=>{const n=t(1577).R;r.s=function(e){if(e||(e=1),!t.y.meta||!t.y.meta.url)throw console.error("__system_context__",t.y),Error("systemjs-webpack-interop was provided an unknown SystemJS context. Expected context.meta.url, but none was provided");t.p=n(t.y.meta.url,e)}},8331:(e,r,t)=>{t(6585)},1577:(e,r,t)=>{r.R=function(e,r){var t=document.createElement("a");t.href=e;for(var n="/"===t.pathname[0]?t.pathname:"/"+t.pathname,o=0,a=n.length;o!==r&&a>=0;)"/"===n[--a]&&o++;if(o!==r)throw Error("systemjs-webpack-interop: rootDirectoryLevel ("+r+") is greater than the number of directories ("+o+") in the URL path "+e);var i=n.slice(0,a+1);return t.protocol+"//"+t.host+i};Number.isInteger},3055:(e,r,t)=>{"use strict";var n={app:()=>Promise.all([t.e(983),t.e(307)]).then((()=>()=>t(5307)))},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})}},v={};function b(e){var r=v[e];if(void 0!==r)return r.exports;var t=v[e]={id:e,loaded:!1,exports:{}};return m[e].call(t.exports,t,t.exports,b),t.loaded=!0,t.exports}return b.m=m,b.c=v,b.y=r,b.amdD=function(){throw new Error("define cannot be used indirect")},b.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return b.d(r,{a:r}),r},b.d=(e,r)=>{for(var t in r)b.o(r,t)&&!b.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},b.f={},b.e=e=>Promise.all(Object.keys(b.f).reduce(((r,t)=>(b.f[t](e,r),r)),[])),b.u=e=>e+".js",b.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),b.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),e={},t="@openmrs/esm-implementer-tools-app:",b.l=(r,n,o,a)=>{if(e[r])e[r].push(n);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")==r||p.getAttribute("data-webpack")==t+o){i=p;break}}i||(s=!0,(i=document.createElement("script")).charset="utf-8",i.timeout=120,b.nc&&i.setAttribute("nonce",b.nc),i.setAttribute("data-webpack",t+o),i.src=r),e[r]=[n];var f=(t,n)=>{i.onerror=i.onload=null,clearTimeout(c);var o=e[r];if(delete e[r],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach((e=>e(n))),t)return t(n)},c=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)}},b.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},b.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),(()=>{b.S={};var e={},r={};b.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];b.o(b.S,t)||(b.S[t]={});var a=b.S[t],i="@openmrs/esm-implementer-tools-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","3.2.1-pre.1016",(()=>b.e(217).then((()=>()=>b(7217))))),s("carbon-components-react","7.31.0",(()=>Promise.all([b.e(652),b.e(597),b.e(983),b.e(412),b.e(199)]).then((()=>()=>b(9597))))),s("carbon-components","10.31.0",(()=>Promise.all([b.e(25),b.e(1)]).then((()=>()=>b(25))))),s("carbon-icons","7.0.7",(()=>b.e(860).then((()=>()=>b(4860))))),s("react-dom","16.14.0",(()=>Promise.all([b.e(788),b.e(983)]).then((()=>()=>b(2788))))),s("react-i18next","11.15.4",(()=>Promise.all([b.e(743),b.e(983)]).then((()=>()=>b(5743))))),s("react","16.14.0",(()=>b.e(735).then((()=>()=>b(2735)))))),e[t]=l.length?Promise.all(l).then((()=>e[t]=1)):1}}})(),b.p="",n=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},o=(e,r)=>{e=n(e),r=n(r);for(var t=0;;){if(t>=e.length)return t<r.length&&"u"!=(typeof r[t])[0];var o=e[t],a=(typeof o)[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&&o!=i)return o<i;t++}},a=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 i=[];for(o=1;o<e.length;o++){var s=e[o];i.push(0===s?"not("+l()+")":1===s?"("+l()+" || "+l()+")":2===s?i.pop()+" "+i.pop():a(s))}return l();function l(){return i.pop().replace(/^\((.+)\)$/,"$1")}},i=(e,r)=>{if(0 in e){r=n(r);var t=e[0],o=t<0;o&&(t=-t-1);for(var a=0,s=1,l=!0;;s++,a++){var u,p,f=s<e.length?(typeof e[s])[0]:"";if(a>=r.length||"o"==(p=(typeof(u=r[a]))[0]))return!l||("u"==f?s>t&&!o:""==f!=o);if("u"==p){if(!l||"u"!=f)return!1}else if(l)if(f==p)if(s<=t){if(u!=e[s])return!1}else{if(o?u>e[s]:u<e[s])return!1;u!=e[s]&&(l=!1)}else if("s"!=f&&"n"!=f){if(o||s<=t)return!1;l=!1,s--}else{if(s<=t||p<f!=o)return!1;l=!1}else"s"!=f&&"n"!=f&&(l=!1,s--)}}var c=[],d=c.pop.bind(c);for(a=1;a<e.length;a++){var h=e[a];c.push(1==h?d()|d():2==h?d()&d():h?i(h,r):!d())}return!!d()},s=(e,r)=>{var t=e[r];return Object.keys(t).reduce(((e,r)=>!e||!t[e].loaded&&o(e,r)?r:e),0)},l=(e,r,t,n)=>"Unsatisfied version "+t+" from "+(t&&e[r][t].from)+" of shared singleton module "+r+" (required "+a(n)+")",u=(e,r,t,n)=>{var o=s(e,t);return i(n,o)||"undefined"!=typeof console&&console.warn&&console.warn(l(e,t,o,n)),p(e[t][o])},p=e=>(e.loaded=1,e.get()),f=(e=>function(r,t,n,o){var a=b.I(r);return a&&a.then?a.then(e.bind(e,r,b.S[r],t,n,o)):e(0,b.S[r],t,n,o)})(((e,r,t,n,o)=>r&&b.o(r,t)?u(r,0,t,n):o())),c={},d={6983:()=>f("default","react",[1,16],(()=>b.e(735).then((()=>()=>b(2735))))),2680:()=>f("default","react-i18next",[1,11],(()=>b.e(743).then((()=>()=>b(5743))))),7657:()=>f("default","@openmrs/esm-framework",[0,3,1,14,,"pre"],(()=>b.e(217).then((()=>()=>b(7217))))),5412:()=>f("default","react-dom",[1,16],(()=>b.e(788).then((()=>()=>b(2788))))),6240:()=>f("default","carbon-icons",[1,7],(()=>b.e(860).then((()=>()=>b(4860))))),7569:()=>f("default","carbon-components",[1,10],(()=>b.e(25).then((()=>()=>b(25))))),9784:()=>f("default","carbon-components-react",[1,7],(()=>Promise.all([b.e(652),b.e(597),b.e(412),b.e(199)]).then((()=>()=>b(9597)))))},h={199:[6240,7569],307:[2680,7657],412:[5412],784:[9784],983:[6983]},b.f.consumes=(e,r)=>{b.o(h,e)&&h[e].forEach((e=>{if(b.o(c,e))return r.push(c[e]);var t=r=>{c[e]=0,b.m[e]=t=>{delete b.c[e],t.exports=r()}},n=r=>{delete c[e],b.m[e]=t=>{throw delete b.c[e],r}};try{var o=d[e]();o.then?r.push(c[e]=o.then(t).catch(n)):t(o)}catch(e){n(e)}}))},(()=>{var e={346:0};b.f.j=(r,t)=>{var n=b.o(e,r)?e[r]:void 0;if(0!==n)if(n)t.push(n[2]);else if(/^(199|412|784|983)$/.test(r))e[r]=0;else{var o=new Promise(((t,o)=>n=e[r]=[t,o]));t.push(n[2]=o);var a=b.p+b.u(r),i=new Error;b.l(a,(t=>{if(b.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)b.o(i,n)&&(b.m[n]=i[n]);s&&s(b)}for(r&&r(t);l<a.length;l++)o=a[l],b.o(e,o)&&e[o]&&e[o][0](),e[o]=0},t=self.webpackChunk_openmrs_esm_implementer_tools_app=self.webpackChunk_openmrs_esm_implementer_tools_app||[];t.forEach(r.bind(null,0)),t.push=r.bind(null,t.push.bind(t))})(),b(8331),b(3055)})())}}}));
2
2
  //# sourceMappingURL=openmrs-esm-implementer-tools-app.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openmrs/esm-implementer-tools-app",
3
- "version": "3.2.1-pre.1015",
3
+ "version": "3.2.1-pre.1016",
4
4
  "license": "MPL-2.0",
5
5
  "description": "The admin interface for OpenMRS Frontend",
6
6
  "browser": "dist/openmrs-esm-implementer-tools-app.js",
@@ -51,13 +51,15 @@
51
51
  "rxjs": "6.x"
52
52
  },
53
53
  "devDependencies": {
54
- "@openmrs/esm-framework": "^3.2.1-pre.1015",
55
- "@openmrs/webpack-config": "^3.2.1-pre.1015",
54
+ "@openmrs/esm-framework": "^3.2.1-pre.1016",
55
+ "@openmrs/webpack-config": "^3.2.1-pre.1016",
56
56
  "@types/carbon-components-react": "^7.24.0",
57
+ "ace-builds": "^1.4.14",
57
58
  "jest": "^26.6.3",
58
59
  "react": "^16.13.1",
60
+ "react-ace": "^9.5.0",
59
61
  "react-dom": "^16.13.1",
60
62
  "rxjs": "^6.5.3"
61
63
  },
62
- "gitHead": "2a10b8956cd63006bd913b18a2a482fa9a0134ec"
64
+ "gitHead": "6f2524aae4c9b8fde4b910989c8b74d75c49d663"
63
65
  }
@@ -22,12 +22,16 @@ import {
22
22
  } from "carbon-components-react";
23
23
  import { useTranslation } from "react-i18next";
24
24
  import { implementerToolsStore, ImplementerToolsStore } from "../store";
25
- import { ConfigTree } from "./config-tree.component";
26
- import { Description } from "./description.component";
25
+ import { ConfigTree } from "./interactive-editor/config-tree.component";
26
+ import { Description } from "./interactive-editor/description.component";
27
27
  import cloneDeep from "lodash-es/cloneDeep";
28
28
  import isEmpty from "lodash-es/isEmpty";
29
29
  import styles from "./configuration.styles.scss";
30
30
 
31
+ const JsonEditor = React.lazy(
32
+ () => import("./json-editor/json-editor.component")
33
+ );
34
+
31
35
  function isLeaf(configNode: Config) {
32
36
  return (
33
37
  configNode.hasOwnProperty("_default") ||
@@ -44,6 +48,9 @@ const actions = {
44
48
  toggleIsToolbarOpen({ isConfigToolbarOpen }: ImplementerToolsStore) {
45
49
  return { isConfigToolbarOpen: !isConfigToolbarOpen };
46
50
  },
51
+ toggleIsJsonModeEnabled({ isJsonModeEnabled }: ImplementerToolsStore) {
52
+ return { isJsonModeEnabled: !isJsonModeEnabled };
53
+ },
47
54
  };
48
55
 
49
56
  const configActions = {
@@ -78,6 +85,8 @@ export const Configuration: React.FC<ConfigurationProps> = () => {
78
85
  const {
79
86
  isUIEditorEnabled,
80
87
  toggleIsUIEditorEnabled,
88
+ isJsonModeEnabled,
89
+ toggleIsJsonModeEnabled,
81
90
  isConfigToolbarOpen,
82
91
  toggleIsToolbarOpen,
83
92
  } = useStore(implementerToolsStore, actions);
@@ -134,6 +143,9 @@ export const Configuration: React.FC<ConfigurationProps> = () => {
134
143
  : combinedConfig;
135
144
  }, [filterText, combinedConfig]);
136
145
 
146
+ const mainContentHeight = isConfigToolbarOpen
147
+ ? "calc(50vh - 7rem)"
148
+ : "calc(50vh - 2rem)";
137
149
  return (
138
150
  <>
139
151
  <div className={styles.tools}>
@@ -153,6 +165,14 @@ export const Configuration: React.FC<ConfigurationProps> = () => {
153
165
  onChange={(e) => setFilterText(e.target.value)}
154
166
  />
155
167
  </Column>
168
+ <Column sm={1} md={1}>
169
+ <Toggle
170
+ id="jsonModeSwitch"
171
+ labelText={t("jsonEditor", "JSON Editor")}
172
+ onToggle={toggleIsJsonModeEnabled}
173
+ toggled={isJsonModeEnabled}
174
+ />
175
+ </Column>
156
176
  <Column sm={1} md={1}>
157
177
  <Toggle
158
178
  id="devConfigSwitch"
@@ -169,22 +189,22 @@ export const Configuration: React.FC<ConfigurationProps> = () => {
169
189
  onToggle={toggleIsUIEditorEnabled}
170
190
  />
171
191
  </Column>
172
- <Column sm={1} md={2} className={styles.actionButton}>
192
+ <Column sm={1} md={1} className={styles.actionButton}>
173
193
  <Button
174
194
  kind="danger"
175
- iconDescription="Clear temporary config"
195
+ iconDescription="Clear local config"
176
196
  renderIcon={TrashCan16}
177
197
  onClick={() => {
178
198
  temporaryConfigStore.setState({ config: {} });
179
199
  }}
180
200
  >
181
- {t("clearTemporaryConfig", "Clear Temporary Config")}
201
+ {t("clearConfig", "Clear Local Config")}
182
202
  </Button>
183
203
  </Column>
184
- <Column sm={1} md={2} className={styles.actionButton}>
204
+ <Column sm={1} md={1} className={styles.actionButton}>
185
205
  <Button
186
206
  kind="secondary"
187
- iconDescription="Download temporary config"
207
+ iconDescription="Download config"
188
208
  renderIcon={Download16}
189
209
  >
190
210
  <a
@@ -192,7 +212,7 @@ export const Configuration: React.FC<ConfigurationProps> = () => {
192
212
  download="temporary_config.json"
193
213
  href={window.URL.createObjectURL(tempConfigObjUrl)}
194
214
  >
195
- {t("downloadTemporaryConfig", "Download Temporary Config")}
215
+ {t("downloadConfig", "Download Config")}
196
216
  </a>
197
217
  </Button>
198
218
  </Column>
@@ -200,20 +220,19 @@ export const Configuration: React.FC<ConfigurationProps> = () => {
200
220
  </Grid>
201
221
  ) : null}
202
222
  </div>
203
- <div
204
- className={styles.mainContent}
205
- style={{
206
- height: isConfigToolbarOpen
207
- ? "calc(50vh - 7rem)"
208
- : "calc(50vh - 2rem)",
209
- }}
210
- >
211
- <div className={styles.configTreePane}>
212
- <ConfigTree config={filteredConfig} />
213
- </div>
214
- <div className={styles.descriptionPane}>
215
- <Description />
216
- </div>
223
+ <div className={styles.mainContent} style={{ height: mainContentHeight }}>
224
+ {isJsonModeEnabled ? (
225
+ <JsonEditor height={mainContentHeight} />
226
+ ) : (
227
+ <>
228
+ <div className={styles.configTreePane}>
229
+ <ConfigTree config={filteredConfig} />
230
+ </div>
231
+ <div className={styles.descriptionPane}>
232
+ <Description />
233
+ </div>
234
+ </>
235
+ )}
217
236
  </div>
218
237
  </>
219
238
  );
@@ -51,20 +51,8 @@
51
51
  min-width: 8em;
52
52
  }
53
53
 
54
- .fullWidthAccordion :global(.bx--accordion__content) {
55
- padding-right: 0;
56
- }
57
-
58
54
  .toggleToolbarButton {
59
55
  width: 100%;
60
56
  display: flex;
61
57
  justify-content: flex-end;
62
58
  }
63
-
64
- .valueEditorButtons {
65
- margin-top: $spacing-03;
66
- }
67
-
68
- .smallListCell {
69
- padding: $spacing-03;
70
- }
@@ -11,11 +11,11 @@ import { Configuration } from "./configuration.component";
11
11
  import {
12
12
  performConceptSearch,
13
13
  fetchConceptByUuid,
14
- } from "./value-editors/concept-search.resource";
14
+ } from "./interactive-editor/value-editors/concept-search.resource";
15
15
 
16
16
  const mockPerformConceptSearch = performConceptSearch as jest.Mock;
17
17
  const mockFetchConceptByUuid = fetchConceptByUuid as jest.Mock;
18
- jest.mock("./value-editors/concept-search.resource", () => ({
18
+ jest.mock("./interactive-editor/value-editors/concept-search.resource", () => ({
19
19
  fetchConceptByUuid: jest.fn(),
20
20
  performConceptSearch: jest.fn(),
21
21
  }));
@@ -106,8 +106,8 @@ describe(`<Configuration />`, () => {
106
106
  renderConfiguration();
107
107
  await screen.findByText("Dev Config");
108
108
  screen.getByText("UI Editor");
109
- screen.getByText("Clear Temporary Config");
110
- screen.getByText("Download Temporary Config");
109
+ screen.getByText("Clear Local Config");
110
+ screen.getByText("Download Config");
111
111
  });
112
112
 
113
113
  it("displays correct boolean value and editor", async () => {
@@ -1,6 +1,6 @@
1
1
  import React from "react";
2
2
  import EditableValue from "./editable-value.component";
3
- import { implementerToolsStore } from "../store";
3
+ import { implementerToolsStore } from "../../store";
4
4
  import isEqual from "lodash-es/isEqual";
5
5
  import { Subtree } from "./layout/subtree.component";
6
6
 
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import styles from "./configuration.styles.scss";
2
+ import styles from "./config-tree.styles.scss";
3
3
  import { Accordion, AccordionItem } from "carbon-components-react";
4
4
  import { ConfigTreeForModule } from "./config-tree-for-module.component";
5
5
 
@@ -17,7 +17,7 @@ export function ConfigTree({ config }: ConfigTreeProps) {
17
17
  const moduleConfig = config[moduleName];
18
18
  return Object.keys(moduleConfig).length ? (
19
19
  <AccordionItem
20
- title={<h6 className={styles.moduleName}>{moduleName}</h6>}
20
+ title={<h6>{moduleName}</h6>}
21
21
  className={styles.fullWidthAccordion}
22
22
  key={`accordion-${moduleName}`}
23
23
  >
@@ -0,0 +1,3 @@
1
+ .fullWidthAccordion :global(.bx--accordion__content) {
2
+ padding-right: 0;
3
+ }
@@ -1,7 +1,7 @@
1
1
  import React from "react";
2
2
  import styles from "./description.styles.scss";
3
3
  import { useStore } from "@openmrs/esm-framework";
4
- import { implementerToolsStore } from "../store";
4
+ import { implementerToolsStore } from "../../store";
5
5
  import { useTranslation } from "react-i18next";
6
6
 
7
7
  export function Description() {
@@ -1,4 +1,4 @@
1
- @import "../implementer-tools.styles.scss";
1
+ @import "../../implementer-tools.styles.scss";
2
2
 
3
3
  .path {
4
4
  @include carbon--type-style("productive-heading-02");
@@ -0,0 +1,5 @@
1
+ @import "../../implementer-tools.styles.scss";
2
+
3
+ .smallListCell {
4
+ padding: $spacing-03;
5
+ }
@@ -1,6 +1,6 @@
1
1
  import { StructuredListCell, StructuredListRow } from "carbon-components-react";
2
2
  import React from "react";
3
- import styles from "./configuration.styles.scss";
3
+ import styles from "./display-value.scss";
4
4
 
5
5
  export interface DisplayValueProps {
6
6
  value: any;
@@ -14,7 +14,7 @@ import {
14
14
  temporaryConfigStore,
15
15
  } from "@openmrs/esm-framework";
16
16
  import { ValueEditor, CustomValueType } from "./value-editor";
17
- import { implementerToolsStore, ImplementerToolsStore } from "../store";
17
+ import { implementerToolsStore, ImplementerToolsStore } from "../../store";
18
18
  import { DisplayValue } from "./display-value";
19
19
  import { useTranslation } from "react-i18next";
20
20
 
@@ -1,4 +1,4 @@
1
- @import "../implementer-tools.styles.scss";
1
+ @import "../../implementer-tools.styles.scss";
2
2
 
3
3
  .secretButton {
4
4
  background: none;
@@ -7,7 +7,7 @@ import {
7
7
  } from "@openmrs/esm-framework";
8
8
  import { ExtensionConfigureTree } from "./extension-configure-tree";
9
9
  import { Subtree } from "./layout/subtree.component";
10
- import { implementerToolsStore } from "../store";
10
+ import { implementerToolsStore } from "../../store";
11
11
 
12
12
  interface ExtensionSlotsConfigTreeProps {
13
13
  extensionsConfig: { [key: string]: any };
@@ -0,0 +1,5 @@
1
+ @import "../../implementer-tools.styles.scss";
2
+
3
+ .valueEditorButtons {
4
+ margin-top: $spacing-03;
5
+ }
@@ -5,7 +5,7 @@ import { Button } from "carbon-components-react";
5
5
  import { Type } from "@openmrs/esm-framework";
6
6
  import { ConfigValueDescriptor } from "./editable-value.component";
7
7
  import { ValueEditorField } from "./value-editors/value-editor-field";
8
- import styles from "./configuration.styles.scss";
8
+ import styles from "./value-editor.scss";
9
9
  import { useTranslation } from "react-i18next";
10
10
 
11
11
  export type CustomValueType = "add" | "remove" | "order" | "configure";
@@ -1,4 +1,4 @@
1
- @import "../../implementer-tools.styles.scss";
1
+ @import "../../../implementer-tools.styles.scss";
2
2
 
3
3
  .activeUuid {
4
4
  @include carbon--type-style("body-short-01");
@@ -0,0 +1,67 @@
1
+ import React, { useCallback, useEffect, useState } from "react";
2
+ import { temporaryConfigStore, useStore } from "@openmrs/esm-framework";
3
+ import AceEditor from "react-ace";
4
+ import style from "./json-editor.scss";
5
+
6
+ import "ace-builds/src-noconflict/mode-java";
7
+ import "ace-builds/src-noconflict/theme-github";
8
+ import { Button } from "carbon-components-react";
9
+
10
+ export interface JsonEditorProps {
11
+ /** A CSS value */
12
+ height: string;
13
+ }
14
+
15
+ export default function JsonEditor({ height }: JsonEditorProps) {
16
+ const temporaryConfig = useStore(temporaryConfigStore);
17
+ const [editorValue, setEditorValue] = useState("");
18
+ const [error, setError] = useState("");
19
+ const [key, setKey] = useState(`ace-editor`);
20
+
21
+ const updateTemporaryConfig = useCallback(() => {
22
+ let config;
23
+ try {
24
+ config = JSON.parse(editorValue);
25
+ } catch (e) {
26
+ setError(e.message);
27
+ return;
28
+ }
29
+ setError("");
30
+ temporaryConfigStore.setState({ config });
31
+ }, [editorValue, temporaryConfigStore]);
32
+
33
+ useEffect(() => {
34
+ if (editorValue != JSON.stringify(temporaryConfig.config, null, 2)) {
35
+ setKey((k) => `${k}+`); // just keep appendingplus signs
36
+ }
37
+ }, [temporaryConfig.config]);
38
+
39
+ return (
40
+ <div>
41
+ <AceEditor
42
+ key={key}
43
+ mode="json"
44
+ theme="github"
45
+ defaultValue={JSON.stringify(temporaryConfig.config, null, 2)}
46
+ tabSize={2}
47
+ fontSize="12pt"
48
+ width="100vw"
49
+ height={`calc(${height} - 3rem)`}
50
+ onChange={(v) => {
51
+ setEditorValue(v);
52
+ }}
53
+ />
54
+ <div className={style.toolbar}>
55
+ <Button type="submit" onClick={updateTemporaryConfig}>
56
+ Update
57
+ </Button>
58
+ <div
59
+ className={style.alert}
60
+ style={{ backgroundColor: error ? "#d03030" : "inherit" }}
61
+ >
62
+ {error}
63
+ </div>
64
+ </div>
65
+ </div>
66
+ );
67
+ }
@@ -0,0 +1,11 @@
1
+ .toolbar {
2
+ display: flex;
3
+ }
4
+
5
+ .alert {
6
+ color: white;
7
+ display: flex;
8
+ align-items: center;
9
+ width: 100%;
10
+ padding-left: 2em;
11
+ }
@@ -1,5 +1,4 @@
1
1
  import React, { useState, useEffect } from "react";
2
- import Popup from "./popup/popup.component";
3
2
  import { NotificationActionButton } from "carbon-components-react";
4
3
  import {
5
4
  showNotification,
@@ -11,11 +10,14 @@ import {
11
10
  showModuleDiagnostics,
12
11
  togglePopup,
13
12
  } from "./store";
14
- import { UiEditor } from "./ui-editor/ui-editor";
13
+
15
14
  import { useBackendDependencies } from "./backend-dependencies/useBackendDependencies";
16
15
  import { hasInvalidDependencies } from "./backend-dependencies/openmrs-backend-dependencies";
17
16
  import { useTranslation } from "react-i18next";
18
17
 
18
+ const Popup = React.lazy(() => import("./popup/popup.component"));
19
+ const UiEditor = React.lazy(() => import("./ui-editor/ui-editor"));
20
+
19
21
  function PopupHandler() {
20
22
  const frontendModules = useBackendDependencies();
21
23
  const [shouldShowNotification, setShouldShowNotification] = useState(false);
package/src/store.ts CHANGED
@@ -9,6 +9,7 @@ export interface ImplementerToolsStore {
9
9
  openTabIndex: number;
10
10
  isConfigToolbarOpen: boolean;
11
11
  isUIEditorEnabled: boolean;
12
+ isJsonModeEnabled: boolean;
12
13
  }
13
14
 
14
15
  export interface ActiveItemDescription {
@@ -27,6 +28,7 @@ export const implementerToolsStore: Store<ImplementerToolsStore> =
27
28
  openTabIndex: 0,
28
29
  isConfigToolbarOpen: getIsConfigToolbarOpen(),
29
30
  isUIEditorEnabled: getIsUIEditorEnabled(),
31
+ isJsonModeEnabled: getIsJsonModeEnabled(),
30
32
  });
31
33
 
32
34
  export const setHasAlert = implementerToolsStore.action(
@@ -52,6 +54,7 @@ export const showModuleDiagnostics = implementerToolsStore.action((state) => ({
52
54
  let lastValueOfIsOpen = getIsImplementerToolsOpen();
53
55
  let lastValueOfConfigToolbarOpen = getIsConfigToolbarOpen();
54
56
  let lastValueOfIsUiEditorEnabled = getIsUIEditorEnabled();
57
+ let lastValueOfIsJsonModeEnabled = getIsJsonModeEnabled();
55
58
 
56
59
  implementerToolsStore.subscribe((state) => {
57
60
  if (state.isOpen != lastValueOfIsOpen) {
@@ -66,6 +69,10 @@ implementerToolsStore.subscribe((state) => {
66
69
  setIsConfigToolbarOpen(state.isConfigToolbarOpen);
67
70
  lastValueOfConfigToolbarOpen = state.isConfigToolbarOpen;
68
71
  }
72
+ if (state.isJsonModeEnabled != lastValueOfIsJsonModeEnabled) {
73
+ setIsJsonModeEnabled(state.isJsonModeEnabled);
74
+ lastValueOfIsJsonModeEnabled = state.isJsonModeEnabled;
75
+ }
69
76
  });
70
77
 
71
78
  function getIsImplementerToolsOpen(): boolean {
@@ -109,3 +116,15 @@ function getIsUIEditorEnabled(): boolean {
109
116
  function setIsUIEditorEnabled(enabled: boolean) {
110
117
  localStorage.setItem("openmrs:isUIEditorEnabled", JSON.stringify(enabled));
111
118
  }
119
+
120
+ function getIsJsonModeEnabled(): boolean {
121
+ return (
122
+ JSON.parse(
123
+ localStorage.getItem("openmrs:getIsJsonModeEnabled") || "false"
124
+ ) ?? false
125
+ );
126
+ }
127
+
128
+ function setIsJsonModeEnabled(enabled: boolean) {
129
+ localStorage.setItem("openmrs:getIsJsonModeEnabled", JSON.stringify(enabled));
130
+ }
@@ -7,7 +7,7 @@ import { Portal } from "./portal";
7
7
  import { ExtensionOverlay } from "./extension-overlay.component";
8
8
  import { ImplementerToolsStore, implementerToolsStore } from "../store";
9
9
 
10
- export function UiEditor() {
10
+ export default function UiEditor() {
11
11
  const { slots, extensions } = useExtensionInternalStore();
12
12
  const { isOpen: implementerToolsIsOpen } = useStore(implementerToolsStore);
13
13
 
@@ -1,14 +1,15 @@
1
1
  {
2
2
  "activeItemSourceText": "The current value comes from ",
3
3
  "backendModules": "Backend Modules",
4
- "clearTemporaryConfig": "Clear Temporary Config",
4
+ "clearConfig": "Clear Local Config",
5
5
  "configuration": "Configuration",
6
6
  "devConfig": "Dev Config",
7
- "downloadTemporaryConfig": "Download Temporary Config",
7
+ "downloadConfig": "Download Config",
8
8
  "edit": "Edit",
9
9
  "editValueButtonText": "Edit",
10
10
  "installedVersion": "Installed Version",
11
11
  "itemDescriptionSourceDefaultText": "The current value is the default.",
12
+ "jsonEditor": "JSON Editor",
12
13
  "missing": "Missing",
13
14
  "moduleName": "Module Name",
14
15
  "requiredVersion": "Required Version",
@@ -1,13 +1,20 @@
1
1
  {
2
- "backendModules": "Módulos backend",
3
- "clearTemporaryConfig": "Borrar configuración temporal",
2
+ "activeItemSourceText": "El valor coriente viene de ",
3
+ "backendModules": "Modulos backend",
4
+ "clearConfig": "Borrar config",
4
5
  "configuration": "Configuración",
5
- "devConfig": "Configuración de desarrollo",
6
- "downloadTemporaryConfig": "Descargar configuración temporal",
6
+ "devConfig": "Valores defectos experimentales",
7
+ "downloadConfig": "Descargar config",
7
8
  "edit": "Editar",
9
+ "editValueButtonText": "Editar",
8
10
  "installedVersion": "Versión instalada",
9
- "missing": "Desaparecido",
11
+ "itemDescriptionSourceDefaultText": "El valor coriente es lo predeterminado.",
12
+ "jsonEditor": "Editar como JSON",
13
+ "missing": "Falta",
14
+ "moduleName": "Nombre de modulo",
10
15
  "requiredVersion": "Versión requerida",
11
- "uiEditor": "Editora de interfaz de usuario",
12
- "implementerTools": "Herramientas de implementación"
16
+ "resetToDefaultValueButtonText": "Volver al valor predeterminado",
17
+ "uiEditor": "Editór visual",
18
+ "value": "Valor",
19
+ "view": "Vista"
13
20
  }
package/dist/237.js DELETED
@@ -1,2 +0,0 @@
1
- (self.webpackChunk_openmrs_esm_implementer_tools_app=self.webpackChunk_openmrs_esm_implementer_tools_app||[]).push([[237],{7024:(e,t,r)=>{"use strict";function n(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?n(Object(r),!0).forEach((function(t){i(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):n(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},i=Object.keys(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}r.d(t,{u9:()=>l});var c=["width","height","viewBox"],p=["tabindex"],s={focusable:"false",preserveAspectRatio:"xMidYMid meet"};function l(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.width,r=e.height,n=e.viewBox,i=void 0===n?"0 0 ".concat(t," ").concat(r):n,l=a(e,c),u=l.tabindex,b=a(l,p),f=o(o(o({},s),b),{},{width:t,height:r,viewBox:i});return f["aria-label"]||f["aria-labelledby"]||f.title?(f.role="img",null!=u&&(f.focusable="true",f.tabindex=u)):f["aria-hidden"]=!0,f}},459:(e,t,r)=>{"use strict";var n=r(5704);function o(){}function i(){}i.resetWarningCache=o,e.exports=function(){function e(e,t,r,o,i,a){if(a!==n){var c=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw c.name="Invariant Violation",c}}function t(){return e}e.isRequired=e;var r={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:i,resetWarningCache:o};return r.PropTypes=r,r}},216:(e,t,r)=>{e.exports=r(459)()},5704:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"}}]);
2
- //# sourceMappingURL=237.js.map