@openmrs/esm-app-shell 5.0.0 → 5.0.1-pre.813
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/.turbo/turbo-build.log +107 -101
- package/dist/e7831e65bf630771.js +1 -0
- package/dist/{ada4eada232e904d.js.map → e7831e65bf630771.js.map} +1 -1
- package/dist/f6119f9dfa081aeb.js +1 -0
- package/dist/{a97287a5da255cf7.js.map → f6119f9dfa081aeb.js.map} +1 -1
- package/dist/index.html +1 -1
- package/dist/{openmrs.904c37cbf573920b.js → openmrs.46f54143af9c4f1b.js} +2 -2
- package/dist/{openmrs.904c37cbf573920b.js.map → openmrs.46f54143af9c4f1b.js.map} +1 -1
- package/dist/service-worker.js +1 -1
- package/lib/023bd53d342b7463.woff +0 -0
- package/lib/02acc4469a2fe2e4.woff2 +0 -0
- package/lib/033e03f8663ab9b1.woff +0 -0
- package/lib/052607e67da262ec.woff +0 -0
- package/lib/081587ca0db8e63f.woff2 +0 -0
- package/lib/08cf53c4e5e71cf1.woff2 +0 -0
- package/lib/090b2bc014d24ea4.woff2 +0 -0
- package/lib/0a28cd0b47497b71.woff +0 -0
- package/lib/0a9765a89ff0437d.woff +0 -0
- package/lib/0ae92bcea615e948.woff2 +0 -0
- package/lib/0be8520d8945b3b7.woff2 +0 -0
- package/lib/0bf6b66a8b86b014.woff +0 -0
- package/lib/0e7dd073cd8bb0ad.woff2 +0 -0
- package/lib/14869ac5d1830304.woff2 +0 -0
- package/lib/14aaceff85fc8b28.woff2 +0 -0
- package/lib/1590052e1cf8f28d.woff +0 -0
- package/lib/16f443eed01776ca.woff2 +0 -0
- package/lib/183bae0e53a22182.woff2 +0 -0
- package/lib/19b239a0bb74b27e.woff +0 -0
- package/lib/19c8f94ccd6289f5.woff2 +0 -0
- package/lib/1ae86565eab7451c.woff2 +0 -0
- package/lib/1c7bf8797e0a9be6.woff2 +0 -0
- package/lib/1d9aff9a93a3bb66.woff +0 -0
- package/lib/1f266d3619b30f16.woff2 +0 -0
- package/lib/1f8c5a4087a524fd.woff2 +0 -0
- package/lib/20ba2b23c5c0cd0b.woff2 +0 -0
- package/lib/2269d45733c5cf8f.woff +0 -0
- package/lib/258ecbd235953099.woff +0 -0
- package/lib/295dd01a1fbfee6d.woff2 +0 -0
- package/lib/2d7f835ab7c7c764.woff +0 -0
- package/lib/2f66cca99eeead63.woff +0 -0
- package/lib/2f686985e26e7107.woff2 +0 -0
- package/lib/315eff729e4ccbd9.woff2 +0 -0
- package/lib/32f1e5aadf845e08.woff +0 -0
- package/lib/338484e1c850669c.woff +0 -0
- package/lib/33b7a82f1e295190.woff +0 -0
- package/lib/3674d98ec4a9173d.woff +0 -0
- package/lib/368d16e3259bf207.woff2 +0 -0
- package/lib/36c49aa341a7079a.woff2 +0 -0
- package/lib/36e1e0430475edee.woff2 +0 -0
- package/lib/3bc19662b8630ee9.woff2 +0 -0
- package/lib/3f645f473b3f8fba.woff2 +0 -0
- package/lib/4095df88acae9e98.woff +0 -0
- package/lib/4218ac9901b9d36d.woff2 +0 -0
- package/lib/45ae93918c51cff2.js +22 -0
- package/lib/4680ba68412e4da9.woff2 +0 -0
- package/lib/47d7a8698d562a0e.woff +0 -0
- package/lib/47ec6c9dffe776a0.woff +0 -0
- package/lib/48e37bd7ebf85a1f.woff2 +0 -0
- package/lib/48edfdf51dfb3160.woff +0 -0
- package/lib/4a35a2746c8ad7a5.woff +0 -0
- package/lib/4e11b8a7c445255f.woff2 +0 -0
- package/lib/4ea1f5c3baf89fe3.woff +0 -0
- package/lib/4ea99f41c896bf9d.woff +0 -0
- package/lib/5005db1d1caf70c7.woff +0 -0
- package/lib/527f45835605c1e2.js +505 -0
- package/lib/528a8e7c1c141a31.woff +0 -0
- package/lib/52ca12f5b516d4ea.woff +0 -0
- package/lib/537ddd61c5c1fce2.woff2 +0 -0
- package/lib/5432f7541ec25c34.woff +0 -0
- package/lib/54a95d73a9454ba3.woff +0 -0
- package/lib/56c4118c0907f151.woff2 +0 -0
- package/lib/5938bc2ae7ec60c0.woff2 +0 -0
- package/lib/594306657c4e44e8.woff +0 -0
- package/lib/5a538aa477a66067.woff +0 -0
- package/lib/5c6586155f0d278a.woff2 +0 -0
- package/lib/60ec587649ba812a.woff2 +0 -0
- package/lib/616567cd947eb9dd.woff +0 -0
- package/lib/65168b59f44caab4.woff +0 -0
- package/lib/65c0982f98374864.woff +0 -0
- package/lib/65e6511e035870e1.woff2 +0 -0
- package/lib/661425f6798cd16a.woff2 +0 -0
- package/lib/66b864fe213caf46.woff2 +0 -0
- package/lib/6775fee945132ef9.woff +0 -0
- package/lib/68bbd362c8e4983b.woff +0 -0
- package/lib/68d6deec87b6b604.woff +0 -0
- package/lib/69a7e6d31d390296.woff +0 -0
- package/lib/69d087d970ee9455.woff2 +0 -0
- package/lib/69fa3fc7363bbc04.woff +0 -0
- package/lib/6a1f0178b45b2e9e.woff +0 -0
- package/lib/6c6c45e66ff54281.woff2 +0 -0
- package/lib/6fab4b9bc6dd3981.js +76 -0
- package/lib/6ffb9ed97b21fdc0.woff +0 -0
- package/lib/7073a7323e92bd11.woff2 +0 -0
- package/lib/718c6cc31274ab1a.woff2 +0 -0
- package/lib/72cdbedfe04be9f9.woff2 +0 -0
- package/lib/7509c9f56fe9e532.woff2 +0 -0
- package/lib/75dc5c5b04adc8bf.woff2 +0 -0
- package/lib/76a7c256fc8b3490.woff +0 -0
- package/lib/77b48bc05299ecca.woff2 +0 -0
- package/lib/787f56efa306ddbc.woff +0 -0
- package/lib/7a0a0215c248c73d.woff2 +0 -0
- package/lib/7c4463d9c84f263a.woff +0 -0
- package/lib/7d112a556b7670d2.woff +0 -0
- package/lib/7d52d6014b5f2bbc.woff +0 -0
- package/lib/7f00bebb24e40167.woff2 +0 -0
- package/lib/7f2c6ea3e740417e.woff +0 -0
- package/lib/802c6176541eeed7.woff2 +0 -0
- package/lib/8080081b3379c637.woff2 +0 -0
- package/lib/8274cc1afc7619f1.woff +0 -0
- package/lib/8605507b7a8487c4.woff2 +0 -0
- package/lib/8a83d654702f6534.woff2 +0 -0
- package/lib/8ccee65f6cf254ee.woff +0 -0
- package/lib/8d82a082a4aba439.woff +0 -0
- package/lib/8de04ae985937b56.woff +0 -0
- package/lib/8fe71173a13fe571.woff2 +0 -0
- package/lib/90edccb224a51cee.woff +0 -0
- package/lib/94b292fe87831a8b.woff +0 -0
- package/lib/95dc66c1b88745f8.woff +0 -0
- package/lib/95fb698be77c85ef.woff +0 -0
- package/lib/9624cec0f9bdd81e.woff2 +0 -0
- package/lib/9662331fa31e3f20.woff +0 -0
- package/lib/98a3af55a1698171.woff2 +0 -0
- package/lib/9ba85996af74c5ce.woff2 +0 -0
- package/lib/9bc133b1df25cb74.woff +0 -0
- package/lib/9ddb22faa35006e7.woff2 +0 -0
- package/lib/9e97352380611b95.woff +0 -0
- package/lib/a167fb2799dd741b.woff2 +0 -0
- package/lib/a2045a5cc4fdf94f.woff2 +0 -0
- package/lib/a246c73905a31c93.woff2 +0 -0
- package/lib/a401aa7939cb6e6f.woff2 +0 -0
- package/lib/a41a71258c38684d.woff +0 -0
- package/lib/a60d94a72d615a8e.woff +0 -0
- package/lib/a66764dd0c1fa213.woff +0 -0
- package/lib/a6ed036f17a1ea29.woff2 +0 -0
- package/lib/a8f635129d660202.woff +0 -0
- package/lib/a9f25ca430709a1a.woff2 +0 -0
- package/lib/ae14d98ad8a1212c.woff +0 -0
- package/lib/aeec4f78084adf7f.woff +0 -0
- package/lib/af11e94b0644eba5.woff +0 -0
- package/lib/afa9121a49e95351.woff2 +0 -0
- package/lib/afcda12d9f805543.woff2 +0 -0
- package/lib/b09ded85a7da77f1.woff2 +0 -0
- package/lib/b2f4e9d1e821b71c.woff2 +0 -0
- package/lib/b30b06698dc369b2.woff +0 -0
- package/lib/b4a074bf828bb757.woff2 +0 -0
- package/lib/b7f447da43f6e596.woff2 +0 -0
- package/lib/b7f633b871b84820.woff +0 -0
- package/lib/bcca84a524572d10.woff2 +0 -0
- package/lib/be4d1f97b11d087c.woff2 +0 -0
- package/lib/be91def2232f6776.woff +0 -0
- package/lib/bec14780d81164de.woff2 +0 -0
- package/lib/c285f4b15d11f172.woff +0 -0
- package/lib/c4673617b80801f3.woff +0 -0
- package/lib/c553f7e0199c5084.woff2 +0 -0
- package/lib/c8470ed2c145ace7.woff +0 -0
- package/lib/c9d9ce9f465df4fe.woff2 +0 -0
- package/lib/ccb2870475da9fe8.woff +0 -0
- package/lib/d04134fa33c2606d.woff +0 -0
- package/lib/d11f9c5cd7d9ea16.woff +0 -0
- package/lib/d188f7f036ac5779.woff2 +0 -0
- package/lib/d265d81c58525ae4.woff2 +0 -0
- package/lib/d5942cd81663e136.woff2 +0 -0
- package/lib/d6097a5c452acf6d.woff +0 -0
- package/lib/d66b8ff73d95cabb.woff2 +0 -0
- package/lib/d77f5bf95de8edaa.woff +0 -0
- package/lib/d8829a685af4f372.woff +0 -0
- package/lib/d88899ef0fd16719.woff2 +0 -0
- package/lib/d9a5d958e69e058d.woff2 +0 -0
- package/lib/da65d9a514c628c8.woff +0 -0
- package/lib/dac90d495be353a0.woff2 +0 -0
- package/lib/dd7071bc6306585c.woff +0 -0
- package/lib/dd8ce598529c3fab.woff2 +0 -0
- package/lib/ddef6f2dd566c2b9.woff +0 -0
- package/lib/de013f1be25103fa.woff2 +0 -0
- package/lib/dee2ff599db31e5b.woff +0 -0
- package/lib/dee7c6b5dd954d9b.woff +0 -0
- package/lib/df222fceeffca849.woff2 +0 -0
- package/lib/e0d2e5b12f028b5d.woff +0 -0
- package/lib/e33e3db8e4f7559f.woff +0 -0
- package/lib/e62b00b9199c1ac9.woff2 +0 -0
- package/lib/e696cef1407b2610.woff2 +0 -0
- package/lib/e89ca83b24959664.woff +0 -0
- package/lib/eb8c0ae77ad55249.woff +0 -0
- package/lib/ed0997bd7d221b8e.woff +0 -0
- package/lib/eed48feba743e21c.woff2 +0 -0
- package/lib/f280bda8a6e535a6.woff +0 -0
- package/lib/f543c88feb236d11.woff2 +0 -0
- package/lib/f591b0079faa93fe.woff2 +0 -0
- package/lib/f6ed27923769ad1d.woff2 +0 -0
- package/lib/f8803bebe640d99a.woff +0 -0
- package/lib/favicon.ico +0 -0
- package/lib/fbebeb4336e67012.woff2 +0 -0
- package/lib/fd522cd7a5c646fe.woff +0 -0
- package/lib/icon_128x128.3dde25c6e69b1c010a6a5d6b27b3f436.png +0 -0
- package/lib/icon_144x144.e263e02b838d229b02ff9133e6e0f2ba.png +0 -0
- package/lib/icon_192x192.d3d318638bbe8a10a3c687d3d302d01a.png +0 -0
- package/lib/icon_256x256.c729f6e7e914b58fcea5ce91d7aa9bad.png +0 -0
- package/lib/icon_384x384.c8923df6b6bd08eba5c79b78d7fcecc0.png +0 -0
- package/lib/icon_512x512.7163efb26df832de513bc58d925ea22e.png +0 -0
- package/lib/icon_96x96.682ee334ae19d49894217370b8596f61.png +0 -0
- package/lib/index.html +91 -0
- package/lib/logo-512.png +0 -0
- package/lib/logo.svg +30 -0
- package/lib/manifest.c61e464ba60302bdc2442acdd49954f1.json +47 -0
- package/lib/openmrs.js +11656 -0
- package/lib/service-worker.js +1732 -0
- package/package.json +4 -4
- package/dist/a97287a5da255cf7.js +0 -1
- package/dist/ada4eada232e904d.js +0 -1
- /package/dist/{openmrs.904c37cbf573920b.js.LICENSE.txt → openmrs.46f54143af9c4f1b.js.LICENSE.txt} +0 -0
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* ATTENTION: An "eval-source-map" devtool has been used.
|
|
3
|
+
* This devtool is neither made for production nor for readable output files.
|
|
4
|
+
* It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
|
|
5
|
+
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
|
|
6
|
+
* or disable the default devtool with "devtool: false".
|
|
7
|
+
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
|
|
8
|
+
*/
|
|
9
|
+
(self["webpackChunk_openmrs_esm_app_shell"] = self["webpackChunk_openmrs_esm_app_shell"] || []).push([["src_run_ts"],{
|
|
10
|
+
|
|
11
|
+
/***/ "./src/apps.ts":
|
|
12
|
+
/*!*********************!*\
|
|
13
|
+
!*** ./src/apps.ts ***!
|
|
14
|
+
\*********************/
|
|
15
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
16
|
+
|
|
17
|
+
"use strict";
|
|
18
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ finishRegisteringAllApps: () => (/* binding */ finishRegisteringAllApps),\n/* harmony export */ registerApp: () => (/* binding */ registerApp),\n/* harmony export */ tryRegisterExtension: () => (/* binding */ tryRegisterExtension),\n/* harmony export */ tryRegisterPage: () => (/* binding */ tryRegisterPage)\n/* harmony export */ });\n/* harmony import */ var _openmrs_esm_framework__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @openmrs/esm-framework */ \"webpack/sharing/consume/default/@openmrs/esm-framework/@openmrs/esm-framework\");\n/* harmony import */ var _openmrs_esm_framework__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_openmrs_esm_framework__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var single_spa__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! single-spa */ \"webpack/sharing/consume/default/single-spa/single-spa\");\n/* harmony import */ var single_spa__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(single_spa__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./helpers */ \"./src/helpers.ts\");\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _async_to_generator(fn) {\n return function() {\n var self = this, args = arguments;\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\nfunction _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _object_spread(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n if (typeof Object.getOwnPropertySymbols === \"function\") {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n ownKeys.forEach(function(key) {\n _define_property(target, key, source[key]);\n });\n }\n return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _object_spread_props(target, source) {\n source = source != null ? source : {};\n if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\n\n\n\nconst pages = [];\n/**\n * This takes a page's route definitions and returns a single-spa\n * activityFn which returns true when the page matches the current\n * route and false if it does not.\n *\n * @param route A string or regexp that matches the location when the\n * page should be displayed, a boolean constant, or an array of such\n * strings, regexps, and booleans\n * @returns An activityFn suitable to use for a single-spa application\n */ function getActivityFn(route) {\n if (Array.isArray(route)) {\n const activators = route.map(getActivityFn);\n return (location)=>activators.some((activator)=>activator(location));\n } else if (typeof route === \"string\") {\n return (0,single_spa__WEBPACK_IMPORTED_MODULE_1__.pathToActiveWhen)(window.getOpenmrsSpaBase() + route);\n } else if (route instanceof RegExp) {\n return (location)=>(0,_helpers__WEBPACK_IMPORTED_MODULE_2__.routeRegex)(route, location);\n } else {\n return ()=>route;\n }\n}\n/**\n * For pages, we also support the activityFn taking into account the online / offline\n * status. This wraps an existing single-spa activityFn and only allows the page to\n * be rendered in the appropriate mode.\n *\n * By default, we assume that all pages should be rendered when online, but only rendered\n * offline if specifically configured to do so.\n *\n * @param activityFn A standard single-spa activityFn such as that returned by {@link getActivityFn()}\n * @param pageDefinition The RegisteredPageDefinition object for this page\n * @returns An activityFn suitable to use for a single-spa application\n */ function wrapPageActivityFn(activityFn, { online , offline }) {\n return (location)=>{\n // basically, if the page should only work online and we're offline or if the\n // page should only work offline and we're online, defaulting to always rendering\n // the page\n if (!(navigator.onLine && (online !== null && online !== void 0 ? online : true) || !navigator.onLine && (offline !== null && offline !== void 0 ? offline : false))) {\n return false;\n }\n return activityFn(location);\n };\n}\nconst STARTUP_FUNCTION = \"startupApp\";\n/**\n * @internal\n *\n * Used internally to track which apps have had their `startupApp()` initializer called\n *\n * Values are promises to support asynchronous loading of the same app multiple times\n */ const initializedApps = new Map();\n/**\n * This function creates a loader function suitable for use in either a single-spa\n * application or parcel.\n *\n * The returned function is lazy and ensures that the appropriate module is loaded,\n * that the module's `startupApp()` is called before the component is loaded. It\n * then calls the component function, which should return either a single-spa\n * {@link LifeCycles} object or a {@link Promise} that will resolve to such an object.\n *\n * React-based pages or extensions should generally use the framework's\n * `getAsyncLifecycle()` or `getSyncLifecycle()` functions.\n */ function getLoader(appName, component) {\n return /*#__PURE__*/ _async_to_generator(function*() {\n const module = yield (0,_openmrs_esm_framework__WEBPACK_IMPORTED_MODULE_0__.importDynamic)(appName);\n if (module && Object.hasOwn(module, component) && typeof module[component] === \"function\") {\n if (!(appName in initializedApps)) {\n yield initializedApps[appName] = new Promise((resolve, reject)=>{\n if (Object.hasOwn(module, STARTUP_FUNCTION)) {\n const startup = module[STARTUP_FUNCTION];\n if (typeof startup === \"function\") {\n return Promise.resolve(startup()).then(resolve).catch(reject);\n }\n }\n resolve(null);\n });\n } else {\n yield initializedApps[appName];\n }\n return Promise.resolve(module[component]());\n } else {\n if (module && Object.hasOwn(module, component)) {\n console.warn(`The export ${component} of the app ${appName} is not a function`);\n } else {\n console.warn(`The app ${appName} does not define a component called ${component}, this cannot be loaded`);\n }\n }\n return _helpers__WEBPACK_IMPORTED_MODULE_2__.emptyLifecycle;\n });\n}\n/**\n * This is the main entry-point for registering an app with the app shell.\n * Each app has a name and should have a `routes.json` file that defines it's\n * associated routes.\n *\n * @param appName The name of the application, e.g. `@openmrs/esm-my-app`\n * @param routes A Javascript object that corresponds to the app's routes.json`\n * definition.\n */ function registerApp(appName, routes) {\n if (appName && routes && typeof routes === \"object\") {\n var _routes_pages;\n (0,_openmrs_esm_framework__WEBPACK_IMPORTED_MODULE_0__.defineConfigSchema)(appName, {});\n var _routes_extensions;\n const availableExtensions = (_routes_extensions = routes.extensions) !== null && _routes_extensions !== void 0 ? _routes_extensions : [];\n (_routes_pages = routes.pages) === null || _routes_pages === void 0 ? void 0 : _routes_pages.forEach((p)=>{\n var _p_order;\n pages.push(_object_spread_props(_object_spread({}, p), {\n order: (_p_order = p.order) !== null && _p_order !== void 0 ? _p_order : Number.MAX_SAFE_INTEGER,\n appName\n }));\n });\n availableExtensions.forEach((ext)=>{\n tryRegisterExtension(appName, ext);\n });\n }\n}\n/**\n * This is called by the app shell once all route entries have been processed.\n * This actually registers the pages with the application. This function is\n * necessary to ensure that pages are rendered in the DOM according to their\n * order definition, especially because certain pages _must_ be first in the DOM.\n *\n * Each page is rendered into a div with an appropriate name.\n */ function finishRegisteringAllApps() {\n pages.sort((a, b)=>a.order - b.order);\n // Create a div for each page. This ensures their DOM order.\n // If we don't do this, Single-SPA 5 will create the DOM element only once\n // the page becomes active, which makes it impossible to guarantee order.\n let index = 0;\n let lastAppName = undefined;\n for (let page of pages){\n if (page.appName !== lastAppName) {\n index = 0;\n lastAppName = page.appName;\n } else {\n index++;\n }\n const name = `${page.appName}-page-${index}`;\n const div = document.createElement(\"div\");\n div.id = `single-spa-application:${name}`;\n document.body.appendChild(div);\n tryRegisterPage(name, page);\n }\n}\n/**\n * This function actually converts each page definition into a single-spa application\n * if that's possible. After this point, pages are rendered using single-spa's\n * routing logic.\n *\n * @param appName The name of the app containing this page\n * @param page A Javascript object that describes the page defintion, derived from `routes.json`\n */ function tryRegisterPage(appName, page) {\n const route = typeof page.route !== \"undefined\" ? page.route : typeof page.routeRegex !== \"undefined\" ? new RegExp(page.routeRegex) : false;\n if (route === false) {\n console.warn(`A registered page definition is missing a route and thus cannot be registered.\nTo fix this, ensure that you define the \"route\" (or alternatively the \"routeRegex\") field inside the extension definition.`, appName);\n return;\n }\n if (!page.component) {\n console.warn(`A registered page definition is missing a component and thus cannot be registered.\nTo fix this, ensure that you define the \"component\" field inside the page definition.`, appName);\n return;\n }\n const activityFn = wrapPageActivityFn(getActivityFn(route), page);\n const loader = getLoader(page.appName, page.component);\n (0,single_spa__WEBPACK_IMPORTED_MODULE_1__.registerApplication)(appName, loader, activityFn);\n}\n/**\n * This function actually registers an extension definition with the framework and will\n * attach the extension to any configured slots.\n *\n * @param appName The name of the app containing this page\n * @param extension A Javascript object that describes the extension defintion, derived from `routes.json`\n */ function tryRegisterExtension(appName, extension) {\n const name = extension.name;\n if (!name) {\n console.error(`An extension definition in ${appName} is missing an name and thus cannot be\nregistered. To fix this, ensure that you define the \"name\" field inside the\nextension definition.`, extension);\n return;\n }\n if (extension.slots && extension.slot) {\n console.warn(`The extension ${name} from ${appName} declares both a 'slots' property and \na 'slot' property. Only the 'slots' property will be honored.`);\n }\n const slots = extension.slots ? extension.slots : extension.slot ? [\n extension.slot\n ] : [];\n if (!extension.component && !extension.load) {\n console.error(`The extension ${name} from ${appName} is missing a 'component' entry and thus cannot be registered.\nTo fix this, ensure that you define a 'component' field inside the extension definition.`, extension);\n return;\n }\n let loader;\n if (extension.component) {\n loader = getLoader(appName, extension.component);\n } else if (extension.load) {\n if (typeof extension.load !== \"function\") {\n console.error(`The extension ${name} from ${appName} declares a 'load' property that is not a function. This is not\nsupported, so the extension will not be loaded.`);\n return;\n }\n loader = extension.load;\n }\n (0,_openmrs_esm_framework__WEBPACK_IMPORTED_MODULE_0__.registerExtension)({\n name,\n load: loader,\n meta: extension.meta || {},\n order: extension.order || Number.MAX_SAFE_INTEGER,\n moduleName: appName,\n privileges: extension.privileges\n });\n for (const slot of slots){\n (0,_openmrs_esm_framework__WEBPACK_IMPORTED_MODULE_0__.attach)(slot, name);\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QU8sU0FBUztBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUMsTUFBTSxPQUFPLFNBQVM7QUFDN0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0EsMkNBQTJDLE1BQU0sT0FBTyxTQUFTO0FBQ2pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLHlFQUFpQjtBQUNyQjtBQUNBO0FBQ0Esa0NBQWtDO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLFFBQVEsOERBQU07QUFDZDtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uL3NyYy9hcHBzLnRzPzlhYzYiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBrZXksIGFyZykge1xuICAgIHRyeSB7XG4gICAgICAgIHZhciBpbmZvID0gZ2VuW2tleV0oYXJnKTtcbiAgICAgICAgdmFyIHZhbHVlID0gaW5mby52YWx1ZTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChpbmZvLmRvbmUpIHtcbiAgICAgICAgcmVzb2x2ZSh2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgUHJvbWlzZS5yZXNvbHZlKHZhbHVlKS50aGVuKF9uZXh0LCBfdGhyb3cpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIF9hc3luY190b19nZW5lcmF0b3IoZm4pIHtcbiAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBzZWxmID0gdGhpcywgYXJncyA9IGFyZ3VtZW50cztcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgICAgdmFyIGdlbiA9IGZuLmFwcGx5KHNlbGYsIGFyZ3MpO1xuICAgICAgICAgICAgZnVuY3Rpb24gX25leHQodmFsdWUpIHtcbiAgICAgICAgICAgICAgICBhc3luY0dlbmVyYXRvclN0ZXAoZ2VuLCByZXNvbHZlLCByZWplY3QsIF9uZXh0LCBfdGhyb3csIFwibmV4dFwiLCB2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmdW5jdGlvbiBfdGhyb3coZXJyKSB7XG4gICAgICAgICAgICAgICAgYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBcInRocm93XCIsIGVycik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBfbmV4dCh1bmRlZmluZWQpO1xuICAgICAgICB9KTtcbiAgICB9O1xufVxuZnVuY3Rpb24gX2RlZmluZV9wcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHtcbiAgICBpZiAoa2V5IGluIG9iaikge1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHtcbiAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBvYmpba2V5XSA9IHZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gb2JqO1xufVxuZnVuY3Rpb24gX29iamVjdF9zcHJlYWQodGFyZ2V0KSB7XG4gICAgZm9yKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKyl7XG4gICAgICAgIHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV0gIT0gbnVsbCA/IGFyZ3VtZW50c1tpXSA6IHt9O1xuICAgICAgICB2YXIgb3duS2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7XG4gICAgICAgIGlmICh0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICBvd25LZXlzID0gb3duS2V5cy5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzb3VyY2UpLmZpbHRlcihmdW5jdGlvbihzeW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIHN5bSkuZW51bWVyYWJsZTtcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuICAgICAgICBvd25LZXlzLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7XG4gICAgICAgICAgICBfZGVmaW5lX3Byb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdGFyZ2V0O1xufVxuZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7XG4gICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpO1xuICAgIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7XG4gICAgICAgIHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpO1xuICAgICAgICBpZiAoZW51bWVyYWJsZU9ubHkpIHtcbiAgICAgICAgICAgIHN5bWJvbHMgPSBzeW1ib2xzLmZpbHRlcihmdW5jdGlvbihzeW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTtcbiAgICB9XG4gICAgcmV0dXJuIGtleXM7XG59XG5mdW5jdGlvbiBfb2JqZWN0X3NwcmVhZF9wcm9wcyh0YXJnZXQsIHNvdXJjZSkge1xuICAgIHNvdXJjZSA9IHNvdXJjZSAhPSBudWxsID8gc291cmNlIDoge307XG4gICAgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgb3duS2V5cyhPYmplY3Qoc291cmNlKSkuZm9yRWFjaChmdW5jdGlvbihrZXkpIHtcbiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHRhcmdldDtcbn1cbmltcG9ydCB7IGF0dGFjaCwgcmVnaXN0ZXJFeHRlbnNpb24sIGRlZmluZUNvbmZpZ1NjaGVtYSwgaW1wb3J0RHluYW1pYyB9IGZyb20gXCJAb3Blbm1ycy9lc20tZnJhbWV3b3JrXCI7XG5pbXBvcnQgeyBwYXRoVG9BY3RpdmVXaGVuLCByZWdpc3RlckFwcGxpY2F0aW9uIH0gZnJvbSBcInNpbmdsZS1zcGFcIjtcbmltcG9ydCB7IGVtcHR5TGlmZWN5Y2xlLCByb3V0ZVJlZ2V4IH0gZnJvbSBcIi4vaGVscGVyc1wiO1xuY29uc3QgcGFnZXMgPSBbXTtcbi8qKlxuICogVGhpcyB0YWtlcyBhIHBhZ2UncyByb3V0ZSBkZWZpbml0aW9ucyBhbmQgcmV0dXJucyBhIHNpbmdsZS1zcGFcbiAqIGFjdGl2aXR5Rm4gd2hpY2ggcmV0dXJucyB0cnVlIHdoZW4gdGhlIHBhZ2UgbWF0Y2hlcyB0aGUgY3VycmVudFxuICogcm91dGUgYW5kIGZhbHNlIGlmIGl0IGRvZXMgbm90LlxuICpcbiAqIEBwYXJhbSByb3V0ZSBBIHN0cmluZyBvciByZWdleHAgdGhhdCBtYXRjaGVzIHRoZSBsb2NhdGlvbiB3aGVuIHRoZVxuICogcGFnZSBzaG91bGQgYmUgZGlzcGxheWVkLCBhIGJvb2xlYW4gY29uc3RhbnQsIG9yIGFuIGFycmF5IG9mIHN1Y2hcbiAqIHN0cmluZ3MsIHJlZ2V4cHMsIGFuZCBib29sZWFuc1xuICogQHJldHVybnMgQW4gYWN0aXZpdHlGbiBzdWl0YWJsZSB0byB1c2UgZm9yIGEgc2luZ2xlLXNwYSBhcHBsaWNhdGlvblxuICovIGZ1bmN0aW9uIGdldEFjdGl2aXR5Rm4ocm91dGUpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShyb3V0ZSkpIHtcbiAgICAgICAgY29uc3QgYWN0aXZhdG9ycyA9IHJvdXRlLm1hcChnZXRBY3Rpdml0eUZuKTtcbiAgICAgICAgcmV0dXJuIChsb2NhdGlvbik9PmFjdGl2YXRvcnMuc29tZSgoYWN0aXZhdG9yKT0+YWN0aXZhdG9yKGxvY2F0aW9uKSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2Ygcm91dGUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgcmV0dXJuIHBhdGhUb0FjdGl2ZVdoZW4od2luZG93LmdldE9wZW5tcnNTcGFCYXNlKCkgKyByb3V0ZSk7XG4gICAgfSBlbHNlIGlmIChyb3V0ZSBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuICAgICAgICByZXR1cm4gKGxvY2F0aW9uKT0+cm91dGVSZWdleChyb3V0ZSwgbG9jYXRpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiAoKT0+cm91dGU7XG4gICAgfVxufVxuLyoqXG4gKiBGb3IgcGFnZXMsIHdlIGFsc28gc3VwcG9ydCB0aGUgYWN0aXZpdHlGbiB0YWtpbmcgaW50byBhY2NvdW50IHRoZSBvbmxpbmUgLyBvZmZsaW5lXG4gKiBzdGF0dXMuIFRoaXMgd3JhcHMgYW4gZXhpc3Rpbmcgc2luZ2xlLXNwYSBhY3Rpdml0eUZuIGFuZCBvbmx5IGFsbG93cyB0aGUgcGFnZSB0b1xuICogYmUgcmVuZGVyZWQgaW4gdGhlIGFwcHJvcHJpYXRlIG1vZGUuXG4gKlxuICogQnkgZGVmYXVsdCwgd2UgYXNzdW1lIHRoYXQgYWxsIHBhZ2VzIHNob3VsZCBiZSByZW5kZXJlZCB3aGVuIG9ubGluZSwgYnV0IG9ubHkgcmVuZGVyZWRcbiAqIG9mZmxpbmUgaWYgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQgdG8gZG8gc28uXG4gKlxuICogQHBhcmFtIGFjdGl2aXR5Rm4gQSBzdGFuZGFyZCBzaW5nbGUtc3BhIGFjdGl2aXR5Rm4gc3VjaCBhcyB0aGF0IHJldHVybmVkIGJ5IHtAbGluayBnZXRBY3Rpdml0eUZuKCl9XG4gKiBAcGFyYW0gcGFnZURlZmluaXRpb24gVGhlIFJlZ2lzdGVyZWRQYWdlRGVmaW5pdGlvbiBvYmplY3QgZm9yIHRoaXMgcGFnZVxuICogQHJldHVybnMgQW4gYWN0aXZpdHlGbiBzdWl0YWJsZSB0byB1c2UgZm9yIGEgc2luZ2xlLXNwYSBhcHBsaWNhdGlvblxuICovIGZ1bmN0aW9uIHdyYXBQYWdlQWN0aXZpdHlGbihhY3Rpdml0eUZuLCB7IG9ubGluZSAsIG9mZmxpbmUgIH0pIHtcbiAgICByZXR1cm4gKGxvY2F0aW9uKT0+e1xuICAgICAgICAvLyBiYXNpY2FsbHksIGlmIHRoZSBwYWdlIHNob3VsZCBvbmx5IHdvcmsgb25saW5lIGFuZCB3ZSdyZSBvZmZsaW5lIG9yIGlmIHRoZVxuICAgICAgICAvLyBwYWdlIHNob3VsZCBvbmx5IHdvcmsgb2ZmbGluZSBhbmQgd2UncmUgb25saW5lLCBkZWZhdWx0aW5nIHRvIGFsd2F5cyByZW5kZXJpbmdcbiAgICAgICAgLy8gdGhlIHBhZ2VcbiAgICAgICAgaWYgKCEobmF2aWdhdG9yLm9uTGluZSAmJiAob25saW5lICE9PSBudWxsICYmIG9ubGluZSAhPT0gdm9pZCAwID8gb25saW5lIDogdHJ1ZSkgfHwgIW5hdmlnYXRvci5vbkxpbmUgJiYgKG9mZmxpbmUgIT09IG51bGwgJiYgb2ZmbGluZSAhPT0gdm9pZCAwID8gb2ZmbGluZSA6IGZhbHNlKSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYWN0aXZpdHlGbihsb2NhdGlvbik7XG4gICAgfTtcbn1cbmNvbnN0IFNUQVJUVVBfRlVOQ1RJT04gPSBcInN0YXJ0dXBBcHBcIjtcbi8qKlxuICogQGludGVybmFsXG4gKlxuICogVXNlZCBpbnRlcm5hbGx5IHRvIHRyYWNrIHdoaWNoIGFwcHMgaGF2ZSBoYWQgdGhlaXIgYHN0YXJ0dXBBcHAoKWAgaW5pdGlhbGl6ZXIgY2FsbGVkXG4gKlxuICogVmFsdWVzIGFyZSBwcm9taXNlcyB0byBzdXBwb3J0IGFzeW5jaHJvbm91cyBsb2FkaW5nIG9mIHRoZSBzYW1lIGFwcCBtdWx0aXBsZSB0aW1lc1xuICovIGNvbnN0IGluaXRpYWxpemVkQXBwcyA9IG5ldyBNYXAoKTtcbi8qKlxuICogVGhpcyBmdW5jdGlvbiBjcmVhdGVzIGEgbG9hZGVyIGZ1bmN0aW9uIHN1aXRhYmxlIGZvciB1c2UgaW4gZWl0aGVyIGEgc2luZ2xlLXNwYVxuICogYXBwbGljYXRpb24gb3IgcGFyY2VsLlxuICpcbiAqIFRoZSByZXR1cm5lZCBmdW5jdGlvbiBpcyBsYXp5IGFuZCBlbnN1cmVzIHRoYXQgdGhlIGFwcHJvcHJpYXRlIG1vZHVsZSBpcyBsb2FkZWQsXG4gKiB0aGF0IHRoZSBtb2R1bGUncyBgc3RhcnR1cEFwcCgpYCBpcyBjYWxsZWQgYmVmb3JlIHRoZSBjb21wb25lbnQgaXMgbG9hZGVkLiBJdFxuICogdGhlbiBjYWxscyB0aGUgY29tcG9uZW50IGZ1bmN0aW9uLCB3aGljaCBzaG91bGQgcmV0dXJuIGVpdGhlciBhIHNpbmdsZS1zcGFcbiAqIHtAbGluayBMaWZlQ3ljbGVzfSBvYmplY3Qgb3IgYSB7QGxpbmsgUHJvbWlzZX0gdGhhdCB3aWxsIHJlc29sdmUgdG8gc3VjaCBhbiBvYmplY3QuXG4gKlxuICogUmVhY3QtYmFzZWQgcGFnZXMgb3IgZXh0ZW5zaW9ucyBzaG91bGQgZ2VuZXJhbGx5IHVzZSB0aGUgZnJhbWV3b3JrJ3NcbiAqIGBnZXRBc3luY0xpZmVjeWNsZSgpYCBvciBgZ2V0U3luY0xpZmVjeWNsZSgpYCBmdW5jdGlvbnMuXG4gKi8gZnVuY3Rpb24gZ2V0TG9hZGVyKGFwcE5hbWUsIGNvbXBvbmVudCkge1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovIF9hc3luY190b19nZW5lcmF0b3IoZnVuY3Rpb24qKCkge1xuICAgICAgICBjb25zdCBtb2R1bGUgPSB5aWVsZCBpbXBvcnREeW5hbWljKGFwcE5hbWUpO1xuICAgICAgICBpZiAobW9kdWxlICYmIE9iamVjdC5oYXNPd24obW9kdWxlLCBjb21wb25lbnQpICYmIHR5cGVvZiBtb2R1bGVbY29tcG9uZW50XSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICBpZiAoIShhcHBOYW1lIGluIGluaXRpYWxpemVkQXBwcykpIHtcbiAgICAgICAgICAgICAgICB5aWVsZCBpbml0aWFsaXplZEFwcHNbYXBwTmFtZV0gPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KT0+e1xuICAgICAgICAgICAgICAgICAgICBpZiAoT2JqZWN0Lmhhc093bihtb2R1bGUsIFNUQVJUVVBfRlVOQ1RJT04pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGFydHVwID0gbW9kdWxlW1NUQVJUVVBfRlVOQ1RJT05dO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBzdGFydHVwID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHN0YXJ0dXAoKSkudGhlbihyZXNvbHZlKS5jYXRjaChyZWplY3QpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUobnVsbCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHlpZWxkIGluaXRpYWxpemVkQXBwc1thcHBOYW1lXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobW9kdWxlW2NvbXBvbmVudF0oKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAobW9kdWxlICYmIE9iamVjdC5oYXNPd24obW9kdWxlLCBjb21wb25lbnQpKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBUaGUgZXhwb3J0ICR7Y29tcG9uZW50fSBvZiB0aGUgYXBwICR7YXBwTmFtZX0gaXMgbm90IGEgZnVuY3Rpb25gKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBUaGUgYXBwICR7YXBwTmFtZX0gZG9lcyBub3QgZGVmaW5lIGEgY29tcG9uZW50IGNhbGxlZCAke2NvbXBvbmVudH0sIHRoaXMgY2Fubm90IGJlIGxvYWRlZGApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBlbXB0eUxpZmVjeWNsZTtcbiAgICB9KTtcbn1cbi8qKlxuICogVGhpcyBpcyB0aGUgbWFpbiBlbnRyeS1wb2ludCBmb3IgcmVnaXN0ZXJpbmcgYW4gYXBwIHdpdGggdGhlIGFwcCBzaGVsbC5cbiAqIEVhY2ggYXBwIGhhcyBhIG5hbWUgYW5kIHNob3VsZCBoYXZlIGEgYHJvdXRlcy5qc29uYCBmaWxlIHRoYXQgZGVmaW5lcyBpdCdzXG4gKiBhc3NvY2lhdGVkIHJvdXRlcy5cbiAqXG4gKiBAcGFyYW0gYXBwTmFtZSBUaGUgbmFtZSBvZiB0aGUgYXBwbGljYXRpb24sIGUuZy4gYEBvcGVubXJzL2VzbS1teS1hcHBgXG4gKiBAcGFyYW0gcm91dGVzIEEgSmF2YXNjcmlwdCBvYmplY3QgdGhhdCBjb3JyZXNwb25kcyB0byB0aGUgYXBwJ3MgIHJvdXRlcy5qc29uYFxuICogZGVmaW5pdGlvbi5cbiAqLyBleHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJBcHAoYXBwTmFtZSwgcm91dGVzKSB7XG4gICAgaWYgKGFwcE5hbWUgJiYgcm91dGVzICYmIHR5cGVvZiByb3V0ZXMgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgdmFyIF9yb3V0ZXNfcGFnZXM7XG4gICAgICAgIGRlZmluZUNvbmZpZ1NjaGVtYShhcHBOYW1lLCB7fSk7XG4gICAgICAgIHZhciBfcm91dGVzX2V4dGVuc2lvbnM7XG4gICAgICAgIGNvbnN0IGF2YWlsYWJsZUV4dGVuc2lvbnMgPSAoX3JvdXRlc19leHRlbnNpb25zID0gcm91dGVzLmV4dGVuc2lvbnMpICE9PSBudWxsICYmIF9yb3V0ZXNfZXh0ZW5zaW9ucyAhPT0gdm9pZCAwID8gX3JvdXRlc19leHRlbnNpb25zIDogW107XG4gICAgICAgIChfcm91dGVzX3BhZ2VzID0gcm91dGVzLnBhZ2VzKSA9PT0gbnVsbCB8fCBfcm91dGVzX3BhZ2VzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfcm91dGVzX3BhZ2VzLmZvckVhY2goKHApPT57XG4gICAgICAgICAgICB2YXIgX3Bfb3JkZXI7XG4gICAgICAgICAgICBwYWdlcy5wdXNoKF9vYmplY3Rfc3ByZWFkX3Byb3BzKF9vYmplY3Rfc3ByZWFkKHt9LCBwKSwge1xuICAgICAgICAgICAgICAgIG9yZGVyOiAoX3Bfb3JkZXIgPSBwLm9yZGVyKSAhPT0gbnVsbCAmJiBfcF9vcmRlciAhPT0gdm9pZCAwID8gX3Bfb3JkZXIgOiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUixcbiAgICAgICAgICAgICAgICBhcHBOYW1lXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH0pO1xuICAgICAgICBhdmFpbGFibGVFeHRlbnNpb25zLmZvckVhY2goKGV4dCk9PntcbiAgICAgICAgICAgIHRyeVJlZ2lzdGVyRXh0ZW5zaW9uKGFwcE5hbWUsIGV4dCk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbi8qKlxuICogVGhpcyBpcyBjYWxsZWQgYnkgdGhlIGFwcCBzaGVsbCBvbmNlIGFsbCByb3V0ZSBlbnRyaWVzIGhhdmUgYmVlbiBwcm9jZXNzZWQuXG4gKiBUaGlzIGFjdHVhbGx5IHJlZ2lzdGVycyB0aGUgcGFnZXMgd2l0aCB0aGUgYXBwbGljYXRpb24uIFRoaXMgZnVuY3Rpb24gaXNcbiAqIG5lY2Vzc2FyeSB0byBlbnN1cmUgdGhhdCBwYWdlcyBhcmUgcmVuZGVyZWQgaW4gdGhlIERPTSBhY2NvcmRpbmcgdG8gdGhlaXJcbiAqIG9yZGVyIGRlZmluaXRpb24sIGVzcGVjaWFsbHkgYmVjYXVzZSBjZXJ0YWluIHBhZ2VzIF9tdXN0XyBiZSBmaXJzdCBpbiB0aGUgRE9NLlxuICpcbiAqIEVhY2ggcGFnZSBpcyByZW5kZXJlZCBpbnRvIGEgZGl2IHdpdGggYW4gYXBwcm9wcmlhdGUgbmFtZS5cbiAqLyBleHBvcnQgZnVuY3Rpb24gZmluaXNoUmVnaXN0ZXJpbmdBbGxBcHBzKCkge1xuICAgIHBhZ2VzLnNvcnQoKGEsIGIpPT5hLm9yZGVyIC0gYi5vcmRlcik7XG4gICAgLy8gQ3JlYXRlIGEgZGl2IGZvciBlYWNoIHBhZ2UuIFRoaXMgZW5zdXJlcyB0aGVpciBET00gb3JkZXIuXG4gICAgLy8gSWYgd2UgZG9uJ3QgZG8gdGhpcywgU2luZ2xlLVNQQSA1IHdpbGwgY3JlYXRlIHRoZSBET00gZWxlbWVudCBvbmx5IG9uY2VcbiAgICAvLyB0aGUgcGFnZSBiZWNvbWVzIGFjdGl2ZSwgd2hpY2ggbWFrZXMgaXQgaW1wb3NzaWJsZSB0byBndWFyYW50ZWUgb3JkZXIuXG4gICAgbGV0IGluZGV4ID0gMDtcbiAgICBsZXQgbGFzdEFwcE5hbWUgPSB1bmRlZmluZWQ7XG4gICAgZm9yIChsZXQgcGFnZSBvZiBwYWdlcyl7XG4gICAgICAgIGlmIChwYWdlLmFwcE5hbWUgIT09IGxhc3RBcHBOYW1lKSB7XG4gICAgICAgICAgICBpbmRleCA9IDA7XG4gICAgICAgICAgICBsYXN0QXBwTmFtZSA9IHBhZ2UuYXBwTmFtZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGluZGV4Kys7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmFtZSA9IGAke3BhZ2UuYXBwTmFtZX0tcGFnZS0ke2luZGV4fWA7XG4gICAgICAgIGNvbnN0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgICAgIGRpdi5pZCA9IGBzaW5nbGUtc3BhLWFwcGxpY2F0aW9uOiR7bmFtZX1gO1xuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRpdik7XG4gICAgICAgIHRyeVJlZ2lzdGVyUGFnZShuYW1lLCBwYWdlKTtcbiAgICB9XG59XG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gYWN0dWFsbHkgY29udmVydHMgZWFjaCBwYWdlIGRlZmluaXRpb24gaW50byBhIHNpbmdsZS1zcGEgYXBwbGljYXRpb25cbiAqIGlmIHRoYXQncyBwb3NzaWJsZS4gQWZ0ZXIgdGhpcyBwb2ludCwgcGFnZXMgYXJlIHJlbmRlcmVkIHVzaW5nIHNpbmdsZS1zcGEnc1xuICogcm91dGluZyBsb2dpYy5cbiAqXG4gKiBAcGFyYW0gYXBwTmFtZSBUaGUgbmFtZSBvZiB0aGUgYXBwIGNvbnRhaW5pbmcgdGhpcyBwYWdlXG4gKiBAcGFyYW0gcGFnZSBBIEphdmFzY3JpcHQgb2JqZWN0IHRoYXQgZGVzY3JpYmVzIHRoZSBwYWdlIGRlZmludGlvbiwgZGVyaXZlZCBmcm9tIGByb3V0ZXMuanNvbmBcbiAqLyBleHBvcnQgZnVuY3Rpb24gdHJ5UmVnaXN0ZXJQYWdlKGFwcE5hbWUsIHBhZ2UpIHtcbiAgICBjb25zdCByb3V0ZSA9IHR5cGVvZiBwYWdlLnJvdXRlICE9PSBcInVuZGVmaW5lZFwiID8gcGFnZS5yb3V0ZSA6IHR5cGVvZiBwYWdlLnJvdXRlUmVnZXggIT09IFwidW5kZWZpbmVkXCIgPyBuZXcgUmVnRXhwKHBhZ2Uucm91dGVSZWdleCkgOiBmYWxzZTtcbiAgICBpZiAocm91dGUgPT09IGZhbHNlKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgQSByZWdpc3RlcmVkIHBhZ2UgZGVmaW5pdGlvbiBpcyBtaXNzaW5nIGEgcm91dGUgYW5kIHRodXMgY2Fubm90IGJlIHJlZ2lzdGVyZWQuXG5UbyBmaXggdGhpcywgZW5zdXJlIHRoYXQgeW91IGRlZmluZSB0aGUgXCJyb3V0ZVwiIChvciBhbHRlcm5hdGl2ZWx5IHRoZSBcInJvdXRlUmVnZXhcIikgZmllbGQgaW5zaWRlIHRoZSBleHRlbnNpb24gZGVmaW5pdGlvbi5gLCBhcHBOYW1lKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIXBhZ2UuY29tcG9uZW50KSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgQSByZWdpc3RlcmVkIHBhZ2UgZGVmaW5pdGlvbiBpcyBtaXNzaW5nIGEgY29tcG9uZW50IGFuZCB0aHVzIGNhbm5vdCBiZSByZWdpc3RlcmVkLlxuVG8gZml4IHRoaXMsIGVuc3VyZSB0aGF0IHlvdSBkZWZpbmUgdGhlIFwiY29tcG9uZW50XCIgZmllbGQgaW5zaWRlIHRoZSBwYWdlIGRlZmluaXRpb24uYCwgYXBwTmFtZSk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgYWN0aXZpdHlGbiA9IHdyYXBQYWdlQWN0aXZpdHlGbihnZXRBY3Rpdml0eUZuKHJvdXRlKSwgcGFnZSk7XG4gICAgY29uc3QgbG9hZGVyID0gZ2V0TG9hZGVyKHBhZ2UuYXBwTmFtZSwgcGFnZS5jb21wb25lbnQpO1xuICAgIHJlZ2lzdGVyQXBwbGljYXRpb24oYXBwTmFtZSwgbG9hZGVyLCBhY3Rpdml0eUZuKTtcbn1cbi8qKlxuICogVGhpcyBmdW5jdGlvbiBhY3R1YWxseSByZWdpc3RlcnMgYW4gZXh0ZW5zaW9uIGRlZmluaXRpb24gd2l0aCB0aGUgZnJhbWV3b3JrIGFuZCB3aWxsXG4gKiBhdHRhY2ggdGhlIGV4dGVuc2lvbiB0byBhbnkgY29uZmlndXJlZCBzbG90cy5cbiAqXG4gKiBAcGFyYW0gYXBwTmFtZSBUaGUgbmFtZSBvZiB0aGUgYXBwIGNvbnRhaW5pbmcgdGhpcyBwYWdlXG4gKiBAcGFyYW0gZXh0ZW5zaW9uIEEgSmF2YXNjcmlwdCBvYmplY3QgdGhhdCBkZXNjcmliZXMgdGhlIGV4dGVuc2lvbiBkZWZpbnRpb24sIGRlcml2ZWQgZnJvbSBgcm91dGVzLmpzb25gXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIHRyeVJlZ2lzdGVyRXh0ZW5zaW9uKGFwcE5hbWUsIGV4dGVuc2lvbikge1xuICAgIGNvbnN0IG5hbWUgPSBleHRlbnNpb24ubmFtZTtcbiAgICBpZiAoIW5hbWUpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgQW4gZXh0ZW5zaW9uIGRlZmluaXRpb24gaW4gJHthcHBOYW1lfSBpcyBtaXNzaW5nIGFuIG5hbWUgYW5kIHRodXMgY2Fubm90IGJlXG5yZWdpc3RlcmVkLiBUbyBmaXggdGhpcywgZW5zdXJlIHRoYXQgeW91IGRlZmluZSB0aGUgXCJuYW1lXCIgZmllbGQgaW5zaWRlIHRoZVxuZXh0ZW5zaW9uIGRlZmluaXRpb24uYCwgZXh0ZW5zaW9uKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoZXh0ZW5zaW9uLnNsb3RzICYmIGV4dGVuc2lvbi5zbG90KSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgVGhlIGV4dGVuc2lvbiAke25hbWV9IGZyb20gJHthcHBOYW1lfSBkZWNsYXJlcyBib3RoIGEgJ3Nsb3RzJyBwcm9wZXJ0eSBhbmQgXG5hICdzbG90JyBwcm9wZXJ0eS4gT25seSB0aGUgJ3Nsb3RzJyBwcm9wZXJ0eSB3aWxsIGJlIGhvbm9yZWQuYCk7XG4gICAgfVxuICAgIGNvbnN0IHNsb3RzID0gZXh0ZW5zaW9uLnNsb3RzID8gZXh0ZW5zaW9uLnNsb3RzIDogZXh0ZW5zaW9uLnNsb3QgPyBbXG4gICAgICAgIGV4dGVuc2lvbi5zbG90XG4gICAgXSA6IFtdO1xuICAgIGlmICghZXh0ZW5zaW9uLmNvbXBvbmVudCAmJiAhZXh0ZW5zaW9uLmxvYWQpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgVGhlIGV4dGVuc2lvbiAke25hbWV9IGZyb20gJHthcHBOYW1lfSBpcyBtaXNzaW5nIGEgJ2NvbXBvbmVudCcgZW50cnkgYW5kIHRodXMgY2Fubm90IGJlIHJlZ2lzdGVyZWQuXG5UbyBmaXggdGhpcywgZW5zdXJlIHRoYXQgeW91IGRlZmluZSBhICdjb21wb25lbnQnIGZpZWxkIGluc2lkZSB0aGUgZXh0ZW5zaW9uIGRlZmluaXRpb24uYCwgZXh0ZW5zaW9uKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgbG9hZGVyO1xuICAgIGlmIChleHRlbnNpb24uY29tcG9uZW50KSB7XG4gICAgICAgIGxvYWRlciA9IGdldExvYWRlcihhcHBOYW1lLCBleHRlbnNpb24uY29tcG9uZW50KTtcbiAgICB9IGVsc2UgaWYgKGV4dGVuc2lvbi5sb2FkKSB7XG4gICAgICAgIGlmICh0eXBlb2YgZXh0ZW5zaW9uLmxvYWQgIT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgVGhlIGV4dGVuc2lvbiAke25hbWV9IGZyb20gJHthcHBOYW1lfSBkZWNsYXJlcyBhICdsb2FkJyBwcm9wZXJ0eSB0aGF0IGlzIG5vdCBhIGZ1bmN0aW9uLiBUaGlzIGlzIG5vdFxuc3VwcG9ydGVkLCBzbyB0aGUgZXh0ZW5zaW9uIHdpbGwgbm90IGJlIGxvYWRlZC5gKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBsb2FkZXIgPSBleHRlbnNpb24ubG9hZDtcbiAgICB9XG4gICAgcmVnaXN0ZXJFeHRlbnNpb24oe1xuICAgICAgICBuYW1lLFxuICAgICAgICBsb2FkOiBsb2FkZXIsXG4gICAgICAgIG1ldGE6IGV4dGVuc2lvbi5tZXRhIHx8IHt9LFxuICAgICAgICBvcmRlcjogZXh0ZW5zaW9uLm9yZGVyIHx8IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSLFxuICAgICAgICBtb2R1bGVOYW1lOiBhcHBOYW1lLFxuICAgICAgICBwcml2aWxlZ2VzOiBleHRlbnNpb24ucHJpdmlsZWdlc1xuICAgIH0pO1xuICAgIGZvciAoY29uc3Qgc2xvdCBvZiBzbG90cyl7XG4gICAgICAgIGF0dGFjaChzbG90LCBuYW1lKTtcbiAgICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/apps.ts\n");
|
|
19
|
+
|
|
20
|
+
/***/ }),
|
|
21
|
+
|
|
22
|
+
/***/ "./src/helpers.ts":
|
|
23
|
+
/*!************************!*\
|
|
24
|
+
!*** ./src/helpers.ts ***!
|
|
25
|
+
\************************/
|
|
26
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
27
|
+
|
|
28
|
+
"use strict";
|
|
29
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ emptyLifecycle: () => (/* binding */ emptyLifecycle),\n/* harmony export */ routeRegex: () => (/* binding */ routeRegex)\n/* harmony export */ });\nconst emptyLifecycle = {\n bootstrap () {\n return Promise.resolve();\n },\n mount () {\n return Promise.resolve();\n },\n unmount () {\n return Promise.resolve();\n }\n};\nfunction routeRegex(regex, location) {\n const result = regex.test(location.pathname.replace(window.getOpenmrsSpaBase(), \"\"));\n return result;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvaGVscGVycy50cyIsIm1hcHBpbmdzIjoiOzs7OztBQUFPO0FBQ1A7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4vc3JjL2hlbHBlcnMudHM/NWMxMSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgZW1wdHlMaWZlY3ljbGUgPSB7XG4gICAgYm9vdHN0cmFwICgpIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgIH0sXG4gICAgbW91bnQgKCkge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfSxcbiAgICB1bm1vdW50ICgpIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgIH1cbn07XG5leHBvcnQgZnVuY3Rpb24gcm91dGVSZWdleChyZWdleCwgbG9jYXRpb24pIHtcbiAgICBjb25zdCByZXN1bHQgPSByZWdleC50ZXN0KGxvY2F0aW9uLnBhdGhuYW1lLnJlcGxhY2Uod2luZG93LmdldE9wZW5tcnNTcGFCYXNlKCksIFwiXCIpKTtcbiAgICByZXR1cm4gcmVzdWx0O1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/helpers.ts\n");
|
|
30
|
+
|
|
31
|
+
/***/ }),
|
|
32
|
+
|
|
33
|
+
/***/ "./src/locale.ts":
|
|
34
|
+
/*!***********************!*\
|
|
35
|
+
!*** ./src/locale.ts ***!
|
|
36
|
+
\***********************/
|
|
37
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
38
|
+
|
|
39
|
+
"use strict";
|
|
40
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ setupI18n: () => (/* binding */ setupI18n)\n/* harmony export */ });\n/* harmony import */ var i18next__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! i18next */ \"webpack/sharing/consume/default/i18next/i18next\");\n/* harmony import */ var i18next__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(i18next__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var i18next_icu__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! i18next-icu */ \"../../../node_modules/i18next-icu/index.js\");\n/* harmony import */ var i18next_icu__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(i18next_icu__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var i18next_browser_languagedetector__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! i18next-browser-languagedetector */ \"../../../node_modules/i18next-browser-languagedetector/dist/esm/i18nextBrowserLanguageDetector.js\");\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-i18next */ \"webpack/sharing/consume/default/react-i18next/react-i18next\");\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_i18next__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var lodash_es_merge__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lodash-es/merge */ \"../../../node_modules/lodash-es/merge.js\");\n/* harmony import */ var _openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @openmrs/esm-framework/src/internal */ \"webpack/sharing/consume/default/@openmrs/esm-framework/src/internal/@openmrs/esm-framework/src/internal\");\n/* harmony import */ var _openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_4__);\n\n\n\n\n\n\nfunction setupI18n() {\n window.i18next = (i18next__WEBPACK_IMPORTED_MODULE_0___default()) || i18next__WEBPACK_IMPORTED_MODULE_0__;\n const languageChangeObserver = new MutationObserver(()=>{\n const reDetect = undefined;\n window.i18next.changeLanguage(reDetect).catch((e)=>console.error(\"i18next failed to re-detect language\", e));\n });\n languageChangeObserver.observe(document.documentElement, {\n attributeFilter: [\n \"lang\"\n ],\n attributes: true\n });\n window.i18next.on(\"languageChanged\", ()=>{\n document.documentElement.setAttribute(\"dir\", window.i18next.dir());\n });\n return window.i18next.use(i18next_browser_languagedetector__WEBPACK_IMPORTED_MODULE_2__[\"default\"]).use({\n type: \"backend\",\n init () {},\n read (language, namespace, callback) {\n if (namespace === \"translation\") {\n callback(Error(\"can't handle translation namespace\"), null);\n } else if (namespace === undefined || language === undefined) {\n callback(Error(), null);\n } else {\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_4__.importDynamic)(namespace).then((module)=>Promise.all([\n getImportPromise(module, namespace, language),\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_4__.getConfigInternal)(namespace)\n ])).then(([json, config])=>{\n let translations = json !== null && json !== void 0 ? json : {};\n if (config && \"Translation overrides\" in config) {\n const overrides = config[\"Translation overrides\"];\n if (language in overrides) {\n translations = (0,lodash_es_merge__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(translations, overrides[language]);\n }\n }\n callback(null, translations);\n }).catch((err)=>{\n callback(err, null);\n });\n }\n }\n }).use(react_i18next__WEBPACK_IMPORTED_MODULE_3__.initReactI18next).use((i18next_icu__WEBPACK_IMPORTED_MODULE_1___default())).init({\n detection: {\n order: [\n \"querystring\",\n \"htmlTag\",\n \"localStorage\",\n \"navigator\"\n ],\n lookupQuerystring: \"lang\"\n },\n fallbackLng: \"en\"\n });\n}\nfunction getImportPromise(module, namespace, language) {\n if (typeof module.importTranslation !== \"function\") {\n throw Error(`Module ${namespace} does not export an importTranslation function`);\n }\n const importPromise = module.importTranslation(`./${language}.json`);\n if (!(importPromise instanceof Promise)) {\n throw Error(`Module ${namespace} exports an importTranslation function that does not return a promise. Did you forget to set require.context mode to 'lazy'?`);\n }\n return importPromise;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbG9jYWxlLnRzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQW1DO0FBQ0w7QUFDa0M7QUFDZjtBQUNiO0FBQ21EO0FBQ2hGO0FBQ1AscUJBQXFCLGdEQUFlLElBQUksb0NBQU87QUFDL0M7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTCw4QkFBOEIsd0VBQWdCO0FBQzlDO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBLGNBQWM7QUFDZCxnQkFBZ0Isa0ZBQWE7QUFDN0I7QUFDQSx3QkFBd0Isc0ZBQWlCO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkMsMkRBQUs7QUFDaEQ7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQSxLQUFLLE1BQU0sMkRBQWdCLE1BQU0sb0RBQUc7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSw4QkFBOEIsV0FBVztBQUN6QztBQUNBLHdEQUF3RCxTQUFTO0FBQ2pFO0FBQ0EsOEJBQThCLFdBQVc7QUFDekM7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uL3NyYy9sb2NhbGUudHM/ZTQwNSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBpMThuZXh0IGZyb20gXCJpMThuZXh0XCI7XG5pbXBvcnQgSUNVIGZyb20gXCJpMThuZXh0LWljdVwiO1xuaW1wb3J0IExhbmd1YWdlRGV0ZWN0b3IgZnJvbSBcImkxOG5leHQtYnJvd3Nlci1sYW5ndWFnZWRldGVjdG9yXCI7XG5pbXBvcnQgeyBpbml0UmVhY3RJMThuZXh0IH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBtZXJnZSBmcm9tIFwibG9kYXNoLWVzL21lcmdlXCI7XG5pbXBvcnQgeyBnZXRDb25maWdJbnRlcm5hbCwgaW1wb3J0RHluYW1pYyB9IGZyb20gXCJAb3Blbm1ycy9lc20tZnJhbWV3b3JrL3NyYy9pbnRlcm5hbFwiO1xuZXhwb3J0IGZ1bmN0aW9uIHNldHVwSTE4bigpIHtcbiAgICB3aW5kb3cuaTE4bmV4dCA9IGkxOG5leHQuZGVmYXVsdCB8fCBpMThuZXh0O1xuICAgIGNvbnN0IGxhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigoKT0+e1xuICAgICAgICBjb25zdCByZURldGVjdCA9IHVuZGVmaW5lZDtcbiAgICAgICAgd2luZG93LmkxOG5leHQuY2hhbmdlTGFuZ3VhZ2UocmVEZXRlY3QpLmNhdGNoKChlKT0+Y29uc29sZS5lcnJvcihcImkxOG5leHQgZmFpbGVkIHRvIHJlLWRldGVjdCBsYW5ndWFnZVwiLCBlKSk7XG4gICAgfSk7XG4gICAgbGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwge1xuICAgICAgICBhdHRyaWJ1dGVGaWx0ZXI6IFtcbiAgICAgICAgICAgIFwibGFuZ1wiXG4gICAgICAgIF0sXG4gICAgICAgIGF0dHJpYnV0ZXM6IHRydWVcbiAgICB9KTtcbiAgICB3aW5kb3cuaTE4bmV4dC5vbihcImxhbmd1YWdlQ2hhbmdlZFwiLCAoKT0+e1xuICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2V0QXR0cmlidXRlKFwiZGlyXCIsIHdpbmRvdy5pMThuZXh0LmRpcigpKTtcbiAgICB9KTtcbiAgICByZXR1cm4gd2luZG93LmkxOG5leHQudXNlKExhbmd1YWdlRGV0ZWN0b3IpLnVzZSh7XG4gICAgICAgIHR5cGU6IFwiYmFja2VuZFwiLFxuICAgICAgICBpbml0ICgpIHt9LFxuICAgICAgICByZWFkIChsYW5ndWFnZSwgbmFtZXNwYWNlLCBjYWxsYmFjaykge1xuICAgICAgICAgICAgaWYgKG5hbWVzcGFjZSA9PT0gXCJ0cmFuc2xhdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2soRXJyb3IoXCJjYW4ndCBoYW5kbGUgdHJhbnNsYXRpb24gbmFtZXNwYWNlXCIpLCBudWxsKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobmFtZXNwYWNlID09PSB1bmRlZmluZWQgfHwgbGFuZ3VhZ2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrKEVycm9yKCksIG51bGwpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpbXBvcnREeW5hbWljKG5hbWVzcGFjZSkudGhlbigobW9kdWxlKT0+UHJvbWlzZS5hbGwoW1xuICAgICAgICAgICAgICAgICAgICAgICAgZ2V0SW1wb3J0UHJvbWlzZShtb2R1bGUsIG5hbWVzcGFjZSwgbGFuZ3VhZ2UpLFxuICAgICAgICAgICAgICAgICAgICAgICAgZ2V0Q29uZmlnSW50ZXJuYWwobmFtZXNwYWNlKVxuICAgICAgICAgICAgICAgICAgICBdKSkudGhlbigoW2pzb24sIGNvbmZpZ10pPT57XG4gICAgICAgICAgICAgICAgICAgIGxldCB0cmFuc2xhdGlvbnMgPSBqc29uICE9PSBudWxsICYmIGpzb24gIT09IHZvaWQgMCA/IGpzb24gOiB7fTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpZyAmJiBcIlRyYW5zbGF0aW9uIG92ZXJyaWRlc1wiIGluIGNvbmZpZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3ZlcnJpZGVzID0gY29uZmlnW1wiVHJhbnNsYXRpb24gb3ZlcnJpZGVzXCJdO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmd1YWdlIGluIG92ZXJyaWRlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9ucyA9IG1lcmdlKHRyYW5zbGF0aW9ucywgb3ZlcnJpZGVzW2xhbmd1YWdlXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgdHJhbnNsYXRpb25zKTtcbiAgICAgICAgICAgICAgICB9KS5jYXRjaCgoZXJyKT0+e1xuICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhlcnIsIG51bGwpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSkudXNlKGluaXRSZWFjdEkxOG5leHQpLnVzZShJQ1UpLmluaXQoe1xuICAgICAgICBkZXRlY3Rpb246IHtcbiAgICAgICAgICAgIG9yZGVyOiBbXG4gICAgICAgICAgICAgICAgXCJxdWVyeXN0cmluZ1wiLFxuICAgICAgICAgICAgICAgIFwiaHRtbFRhZ1wiLFxuICAgICAgICAgICAgICAgIFwibG9jYWxTdG9yYWdlXCIsXG4gICAgICAgICAgICAgICAgXCJuYXZpZ2F0b3JcIlxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGxvb2t1cFF1ZXJ5c3RyaW5nOiBcImxhbmdcIlxuICAgICAgICB9LFxuICAgICAgICBmYWxsYmFja0xuZzogXCJlblwiXG4gICAgfSk7XG59XG5mdW5jdGlvbiBnZXRJbXBvcnRQcm9taXNlKG1vZHVsZSwgbmFtZXNwYWNlLCBsYW5ndWFnZSkge1xuICAgIGlmICh0eXBlb2YgbW9kdWxlLmltcG9ydFRyYW5zbGF0aW9uICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgdGhyb3cgRXJyb3IoYE1vZHVsZSAke25hbWVzcGFjZX0gZG9lcyBub3QgZXhwb3J0IGFuIGltcG9ydFRyYW5zbGF0aW9uIGZ1bmN0aW9uYCk7XG4gICAgfVxuICAgIGNvbnN0IGltcG9ydFByb21pc2UgPSBtb2R1bGUuaW1wb3J0VHJhbnNsYXRpb24oYC4vJHtsYW5ndWFnZX0uanNvbmApO1xuICAgIGlmICghKGltcG9ydFByb21pc2UgaW5zdGFuY2VvZiBQcm9taXNlKSkge1xuICAgICAgICB0aHJvdyBFcnJvcihgTW9kdWxlICR7bmFtZXNwYWNlfSBleHBvcnRzIGFuIGltcG9ydFRyYW5zbGF0aW9uIGZ1bmN0aW9uIHRoYXQgZG9lcyBub3QgcmV0dXJuIGEgcHJvbWlzZS4gRGlkIHlvdSBmb3JnZXQgdG8gc2V0IHJlcXVpcmUuY29udGV4dCBtb2RlIHRvICdsYXp5Jz9gKTtcbiAgICB9XG4gICAgcmV0dXJuIGltcG9ydFByb21pc2U7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/locale.ts\n");
|
|
41
|
+
|
|
42
|
+
/***/ }),
|
|
43
|
+
|
|
44
|
+
/***/ "./src/run.ts":
|
|
45
|
+
/*!********************!*\
|
|
46
|
+
!*** ./src/run.ts ***!
|
|
47
|
+
\********************/
|
|
48
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
49
|
+
|
|
50
|
+
"use strict";
|
|
51
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ run: () => (/* binding */ run)\n/* harmony export */ });\n/* harmony import */ var single_spa__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! single-spa */ \"webpack/sharing/consume/default/single-spa/single-spa\");\n/* harmony import */ var single_spa__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(single_spa__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @openmrs/esm-framework/src/internal */ \"webpack/sharing/consume/default/@openmrs/esm-framework/src/internal/@openmrs/esm-framework/src/internal\");\n/* harmony import */ var _openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _apps__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./apps */ \"./src/apps.ts\");\n/* harmony import */ var _locale__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./locale */ \"./src/locale.ts\");\n/* harmony import */ var _ui__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./ui */ \"./src/ui/index.ts\");\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _async_to_generator(fn) {\n return function() {\n var self = this, args = arguments;\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\n\n\n\n\n\nfunction setupApps() {\n return _setupApps.apply(this, arguments);\n}\nfunction _setupApps() {\n _setupApps = /**\n * Sets up the frontend modules (apps). Uses the defined export\n * from the root modules of the apps, which should export a\n * special function called \"setupOpenMRS\".\n * That function returns an object that is used to feed Single\n * SPA.\n */ _async_to_generator(function*() {\n const scriptTags = document.querySelectorAll(\"script[type='openmrs-routes']\");\n const promises = [];\n for(let i = 0; i < scriptTags.length; i++){\n promises.push((function() {\n var _ref = _async_to_generator(function*(scriptTag) {\n const modules = [];\n let routes = undefined;\n try {\n if (scriptTag.textContent) {\n routes = JSON.parse(scriptTag.textContent);\n } else if (scriptTag.src) {\n routes = (yield (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.openmrsFetch)(scriptTag.src)).data;\n }\n } catch (e) {\n var _scriptTag_src;\n console.error(`Caught error while loading routes from ${(_scriptTag_src = scriptTag.src) !== null && _scriptTag_src !== void 0 ? _scriptTag_src : \"JSON script tag content\"}`, e);\n return [];\n }\n if (typeof routes === \"object\") {\n Object.entries(routes).forEach(([module, routes])=>{\n modules.push([\n module,\n routes\n ]);\n (0,_apps__WEBPACK_IMPORTED_MODULE_2__.registerApp)(module, routes);\n });\n }\n return Promise.resolve(modules);\n });\n return function(scriptTag) {\n return _ref.apply(this, arguments);\n };\n })()(scriptTags.item(i)));\n }\n window.installedModules = (yield Promise.all(promises)).flat();\n });\n return _setupApps.apply(this, arguments);\n}\nfunction loadConfigs(configs) {\n return _loadConfigs.apply(this, arguments);\n}\nfunction _loadConfigs() {\n _loadConfigs = /**\n * Loads the provided configurations and sets them in the system.\n */ _async_to_generator(function*(configs) {\n for (const config of configs){\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.provide)(config.value, config.name);\n }\n });\n return _loadConfigs.apply(this, arguments);\n}\n/**\n * Invoked when the connectivity is changed.\n */ function connectivityChanged() {\n const online = navigator.onLine;\n // NB We do not wait for this to be done; it is simply scheduled\n (0,single_spa__WEBPACK_IMPORTED_MODULE_0__.triggerAppChange)();\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.dispatchConnectivityChanged)(online);\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.showToast)({\n critical: true,\n description: `Connection: ${online ? \"online\" : \"offline\"}`,\n title: \"App\",\n kind: online ? \"success\" : \"warning\"\n });\n}\n/**\n * Runs the shell by importing the translations and starting single SPA.\n */ function runShell() {\n window.addEventListener(\"offline\", connectivityChanged);\n window.addEventListener(\"online\", connectivityChanged);\n return (0,_locale__WEBPACK_IMPORTED_MODULE_3__.setupI18n)().catch((err)=>console.error(`Failed to initialize translations`, err)).then(()=>(0,single_spa__WEBPACK_IMPORTED_MODULE_0__.start)());\n}\nfunction handleInitFailure(e) {\n console.error(e);\n renderFatalErrorPage(e);\n}\nfunction renderFatalErrorPage(e) {\n const template = document.querySelector(\"#app-error\");\n if (template) {\n const fragment = template.content.cloneNode(true);\n const messageContainer = fragment.querySelector('[data-var=\"message\"]');\n if (messageContainer) {\n messageContainer.textContent = (e === null || e === void 0 ? void 0 : e.message) || \"No additional information available.\";\n }\n if (localStorage.getItem(\"openmrs:devtools\") && Object.keys(localStorage).some((k)=>k.startsWith(\"import-map-override:\"))) {\n const appErrorActionButtons = fragment === null || fragment === void 0 ? void 0 : fragment.querySelector(\"#buttons\");\n if (appErrorActionButtons) {\n const clearDevOverridesButton = document.createElement(\"button\");\n clearDevOverridesButton.className = \"cds--btn\";\n clearDevOverridesButton.innerHTML = \"Clear dev overrides\";\n clearDevOverridesButton.onclick = clearDevOverrides;\n appErrorActionButtons.appendChild(clearDevOverridesButton);\n }\n }\n document.body.appendChild(fragment);\n }\n}\nfunction clearDevOverrides() {\n for (const key of Object.keys(localStorage)){\n if (key.startsWith(\"import-map-override:\") && ![\n \"import-map-override:react\",\n \"import-map-override:react-dom\"\n ].includes(key)) {\n localStorage.removeItem(key);\n }\n }\n location.reload();\n}\nfunction isAbsoluteUrl(url) {\n const absoluteUrlPattern = /^https?:\\/\\//i;\n return absoluteUrlPattern.test(url);\n}\nfunction createConfigLoader(configUrls) {\n const loadingConfigs = Promise.all(configUrls.map((configUrl)=>{\n const interpolatedUrl = `${(0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.interpolateUrl)(`\\${openmrsSpaBase}${configUrl}`)}`;\n const url = isAbsoluteUrl(configUrl) ? configUrl : `${window.location.origin}${interpolatedUrl}`;\n return fetch(url).then((res)=>res.json()).then((config)=>({\n name: configUrl,\n value: config\n })).catch((err)=>{\n console.error(`Loading the config from \"${configUrl}\" failed.`, err);\n return {\n name: configUrl,\n value: {}\n };\n });\n }));\n return ()=>loadingConfigs.then(loadConfigs);\n}\nfunction showNotifications() {\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.renderInlineNotifications)(document.querySelector(\".omrs-inline-notifications-container\"));\n return;\n}\nfunction showActionableNotifications() {\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.renderActionableNotifications)(document.querySelector(\".omrs-actionable-notifications-container\"));\n}\nfunction showToasts() {\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.renderToasts)(document.querySelector(\".omrs-toasts-container\"));\n}\nfunction showModals() {\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.renderModals)(document.querySelector(\".omrs-modals-container\"));\n}\nfunction showLoadingSpinner() {\n return (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.renderLoadingSpinner)(document.body);\n}\n/**\n * Registers the extensions coming from the app shell itself.\n */ function registerCoreExtensions() {\n const extensions = (0,_ui__WEBPACK_IMPORTED_MODULE_4__.getCoreExtensions)();\n for (const extension of extensions){\n (0,_apps__WEBPACK_IMPORTED_MODULE_2__.tryRegisterExtension)(_ui__WEBPACK_IMPORTED_MODULE_4__.appName, extension);\n }\n}\nfunction setupOffline() {\n return _setupOffline.apply(this, arguments);\n}\nfunction _setupOffline() {\n _setupOffline = _async_to_generator(function*() {\n try {\n yield (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.registerOmrsServiceWorker)(`${window.getOpenmrsSpaBase()}service-worker.js`);\n yield (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.activateOfflineCapability)();\n setupOfflineStaticDependencyPrecaching();\n } catch (error) {\n console.error(\"Error while setting up offline mode.\", error);\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.showNotification)({\n kind: \"error\",\n title: \"Offline Setup Error\",\n description: error.message\n });\n }\n });\n return _setupOffline.apply(this, arguments);\n}\nfunction setupOfflineStaticDependencyPrecaching() {\n const precacheDelay = 1000 * 60 * 5;\n let lastPrecache = null;\n subscribeOnlineAndLoginChange((online, hasLoggedInUser)=>{\n const hasExceededPrecacheDelay = !lastPrecache || new Date().getTime() - lastPrecache.getTime() > precacheDelay;\n if (hasLoggedInUser && online && hasExceededPrecacheDelay) {\n lastPrecache = new Date();\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.dispatchPrecacheStaticDependencies)();\n }\n });\n}\nfunction subscribeOnlineAndLoginChange(cb) {\n let isOnline = false;\n let hasLoggedInUser = false;\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.getCurrentUser)({\n includeAuthStatus: false\n }).subscribe((user)=>{\n hasLoggedInUser = !!user;\n cb(isOnline, hasLoggedInUser);\n });\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.subscribeConnectivity)(({ online })=>{\n isOnline = online;\n cb(online, hasLoggedInUser);\n });\n}\nfunction precacheGlobalStaticDependencies() {\n return _precacheGlobalStaticDependencies.apply(this, arguments);\n}\nfunction _precacheGlobalStaticDependencies() {\n _precacheGlobalStaticDependencies = _async_to_generator(function*() {\n yield precacheImportMap();\n // By default, cache the session endpoint.\n // This ensures that a lot of user/session related functions also work offline.\n const sessionPathUrl = new URL(`${window.openmrsBase}/ws/rest/v1/session`, window.location.origin).href;\n yield (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.messageOmrsServiceWorker)({\n type: \"registerDynamicRoute\",\n url: sessionPathUrl,\n strategy: \"network-first\"\n });\n yield (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.openmrsFetch)(\"/ws/rest/v1/session\").catch((e)=>console.warn(\"Failed to precache the user session data from the app shell. MFs depending on this data may run into problems while offline.\", e));\n });\n return _precacheGlobalStaticDependencies.apply(this, arguments);\n}\nfunction precacheImportMap() {\n return _precacheImportMap.apply(this, arguments);\n}\nfunction _precacheImportMap() {\n _precacheImportMap = _async_to_generator(function*() {\n const importMap = yield window.importMapOverrides.getCurrentPageMap();\n yield (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.messageOmrsServiceWorker)({\n type: \"onImportMapChanged\",\n importMap\n });\n });\n return _precacheImportMap.apply(this, arguments);\n}\nfunction setupOfflineCssClasses() {\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.subscribeConnectivity)(({ online })=>{\n const body = document.querySelector(\"body\");\n if (online) {\n body.classList.remove(\"omrs-offline\");\n } else {\n body.classList.add(\"omrs-offline\");\n }\n });\n}\nfunction run(configUrls, offline) {\n const closeLoading = showLoadingSpinner();\n const provideConfigs = createConfigLoader(configUrls);\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.integrateBreakpoints)();\n showToasts();\n showModals();\n showNotifications();\n showActionableNotifications();\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.createAppState)({});\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.subscribeNotificationShown)(_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.showNotification);\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.subscribeActionableNotificationShown)(_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.showActionableNotification);\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.subscribeToastShown)(_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.showToast);\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.subscribePrecacheStaticDependencies)(precacheGlobalStaticDependencies);\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.setupApiModule)();\n registerCoreExtensions();\n return setupApps().then(_apps__WEBPACK_IMPORTED_MODULE_2__.finishRegisteringAllApps).then(setupOfflineCssClasses).then(provideConfigs).then(runShell).catch(handleInitFailure).then(closeLoading).then(()=>offline ? setupOffline() : undefined);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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SUFBSSxTQUFTO0FBQ3RDO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMENBQTBDLG1CQUFtQjtBQUM3RCxjQUFjLDZGQUF3QjtBQUN0QztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsY0FBYyxpRkFBWTtBQUMxQixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsNkZBQXdCO0FBQ3RDO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLElBQUksMEZBQXFCLElBQUksU0FBUztBQUN0QztBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNPO0FBQ1A7QUFDQTtBQUNBLElBQUkseUZBQW9CO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxtRkFBYyxHQUFHO0FBQ3JCLElBQUksK0ZBQTBCLENBQUMsaUZBQWdCO0FBQy9DLElBQUkseUdBQW9DLENBQUMsMkZBQTBCO0FBQ25FLElBQUksd0ZBQW1CLENBQUMsMEVBQVM7QUFDakMsSUFBSSx3R0FBbUM7QUFDdkMsSUFBSSxtRkFBYztBQUNsQjtBQUNBLDRCQUE0QiwyREFBd0I7QUFDcEQiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4vc3JjL3J1bi50cz9kNDJjIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIGFzeW5jR2VuZXJhdG9yU3RlcChnZW4sIHJlc29sdmUsIHJlamVjdCwgX25leHQsIF90aHJvdywga2V5LCBhcmcpIHtcbiAgICB0cnkge1xuICAgICAgICB2YXIgaW5mbyA9IGdlbltrZXldKGFyZyk7XG4gICAgICAgIHZhciB2YWx1ZSA9IGluZm8udmFsdWU7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoaW5mby5kb25lKSB7XG4gICAgICAgIHJlc29sdmUodmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIFByb21pc2UucmVzb2x2ZSh2YWx1ZSkudGhlbihfbmV4dCwgX3Rocm93KTtcbiAgICB9XG59XG5mdW5jdGlvbiBfYXN5bmNfdG9fZ2VuZXJhdG9yKGZuKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgc2VsZiA9IHRoaXMsIGFyZ3MgPSBhcmd1bWVudHM7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgIHZhciBnZW4gPSBmbi5hcHBseShzZWxmLCBhcmdzKTtcbiAgICAgICAgICAgIGZ1bmN0aW9uIF9uZXh0KHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBcIm5leHRcIiwgdmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZnVuY3Rpb24gX3Rocm93KGVycikge1xuICAgICAgICAgICAgICAgIGFzeW5jR2VuZXJhdG9yU3RlcChnZW4sIHJlc29sdmUsIHJlamVjdCwgX25leHQsIF90aHJvdywgXCJ0aHJvd1wiLCBlcnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgX25leHQodW5kZWZpbmVkKTtcbiAgICAgICAgfSk7XG4gICAgfTtcbn1cbmltcG9ydCB7IHN0YXJ0LCB0cmlnZ2VyQXBwQ2hhbmdlIH0gZnJvbSBcInNpbmdsZS1zcGFcIjtcbmltcG9ydCB7IHNldHVwQXBpTW9kdWxlLCByZW5kZXJMb2FkaW5nU3Bpbm5lciwgY3JlYXRlQXBwU3RhdGUsIHByb3ZpZGUsIHNob3dOb3RpZmljYXRpb24sIHNob3dBY3Rpb25hYmxlTm90aWZpY2F0aW9uLCBzaG93VG9hc3QsIHJlbmRlcklubGluZU5vdGlmaWNhdGlvbnMsIHJlbmRlckFjdGlvbmFibGVOb3RpZmljYXRpb25zLCByZW5kZXJUb2FzdHMsIGludGVncmF0ZUJyZWFrcG9pbnRzLCBkaXNwYXRjaENvbm5lY3Rpdml0eUNoYW5nZWQsIHN1YnNjcmliZU5vdGlmaWNhdGlvblNob3duLCBzdWJzY3JpYmVBY3Rpb25hYmxlTm90aWZpY2F0aW9uU2hvd24sIHN1YnNjcmliZVRvYXN0U2hvd24sIHJlZ2lzdGVyT21yc1NlcnZpY2VXb3JrZXIsIG1lc3NhZ2VPbXJzU2VydmljZVdvcmtlciwgc3Vic2NyaWJlQ29ubmVjdGl2aXR5LCBnZXRDdXJyZW50VXNlciwgcmVuZGVyTW9kYWxzLCBkaXNwYXRjaFByZWNhY2hlU3RhdGljRGVwZW5kZW5jaWVzLCBhY3RpdmF0ZU9mZmxpbmVDYXBhYmlsaXR5LCBzdWJzY3JpYmVQcmVjYWNoZVN0YXRpY0RlcGVuZGVuY2llcywgb3Blbm1yc0ZldGNoLCBpbnRlcnBvbGF0ZVVybCB9IGZyb20gXCJAb3Blbm1ycy9lc20tZnJhbWV3b3JrL3NyYy9pbnRlcm5hbFwiO1xuaW1wb3J0IHsgZmluaXNoUmVnaXN0ZXJpbmdBbGxBcHBzLCByZWdpc3RlckFwcCwgdHJ5UmVnaXN0ZXJFeHRlbnNpb24gfSBmcm9tIFwiLi9hcHBzXCI7XG5pbXBvcnQgeyBzZXR1cEkxOG4gfSBmcm9tIFwiLi9sb2NhbGVcIjtcbmltcG9ydCB7IGFwcE5hbWUsIGdldENvcmVFeHRlbnNpb25zIH0gZnJvbSBcIi4vdWlcIjtcbmZ1bmN0aW9uIHNldHVwQXBwcygpIHtcbiAgICByZXR1cm4gX3NldHVwQXBwcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufVxuZnVuY3Rpb24gX3NldHVwQXBwcygpIHtcbiAgICBfc2V0dXBBcHBzID0gLyoqXG4gKiBTZXRzIHVwIHRoZSBmcm9udGVuZCBtb2R1bGVzIChhcHBzKS4gVXNlcyB0aGUgZGVmaW5lZCBleHBvcnRcbiAqIGZyb20gdGhlIHJvb3QgbW9kdWxlcyBvZiB0aGUgYXBwcywgd2hpY2ggc2hvdWxkIGV4cG9ydCBhXG4gKiBzcGVjaWFsIGZ1bmN0aW9uIGNhbGxlZCBcInNldHVwT3Blbk1SU1wiLlxuICogVGhhdCBmdW5jdGlvbiByZXR1cm5zIGFuIG9iamVjdCB0aGF0IGlzIHVzZWQgdG8gZmVlZCBTaW5nbGVcbiAqIFNQQS5cbiAqLyBfYXN5bmNfdG9fZ2VuZXJhdG9yKGZ1bmN0aW9uKigpIHtcbiAgICAgICAgY29uc3Qgc2NyaXB0VGFncyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJzY3JpcHRbdHlwZT0nb3Blbm1ycy1yb3V0ZXMnXVwiKTtcbiAgICAgICAgY29uc3QgcHJvbWlzZXMgPSBbXTtcbiAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IHNjcmlwdFRhZ3MubGVuZ3RoOyBpKyspe1xuICAgICAgICAgICAgcHJvbWlzZXMucHVzaCgoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9yZWYgPSBfYXN5bmNfdG9fZ2VuZXJhdG9yKGZ1bmN0aW9uKihzY3JpcHRUYWcpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbW9kdWxlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBsZXQgcm91dGVzID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNjcmlwdFRhZy50ZXh0Q29udGVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlcyA9IEpTT04ucGFyc2Uoc2NyaXB0VGFnLnRleHRDb250ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc2NyaXB0VGFnLnNyYykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlcyA9ICh5aWVsZCBvcGVubXJzRmV0Y2goc2NyaXB0VGFnLnNyYykpLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfc2NyaXB0VGFnX3NyYztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYENhdWdodCBlcnJvciB3aGlsZSBsb2FkaW5nIHJvdXRlcyBmcm9tICR7KF9zY3JpcHRUYWdfc3JjID0gc2NyaXB0VGFnLnNyYykgIT09IG51bGwgJiYgX3NjcmlwdFRhZ19zcmMgIT09IHZvaWQgMCA/IF9zY3JpcHRUYWdfc3JjIDogXCJKU09OIHNjcmlwdCB0YWcgY29udGVudFwifWAsIGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygcm91dGVzID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZW50cmllcyhyb3V0ZXMpLmZvckVhY2goKFttb2R1bGUsIHJvdXRlc10pPT57XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlcy5wdXNoKFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3V0ZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlckFwcChtb2R1bGUsIHJvdXRlcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG1vZHVsZXMpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihzY3JpcHRUYWcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9yZWYuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSkoKShzY3JpcHRUYWdzLml0ZW0oaSkpKTtcbiAgICAgICAgfVxuICAgICAgICB3aW5kb3cuaW5zdGFsbGVkTW9kdWxlcyA9ICh5aWVsZCBQcm9taXNlLmFsbChwcm9taXNlcykpLmZsYXQoKTtcbiAgICB9KTtcbiAgICByZXR1cm4gX3NldHVwQXBwcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufVxuZnVuY3Rpb24gbG9hZENvbmZpZ3MoY29uZmlncykge1xuICAgIHJldHVybiBfbG9hZENvbmZpZ3MuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn1cbmZ1bmN0aW9uIF9sb2FkQ29uZmlncygpIHtcbiAgICBfbG9hZENvbmZpZ3MgPSAvKipcbiAqIExvYWRzIHRoZSBwcm92aWRlZCBjb25maWd1cmF0aW9ucyBhbmQgc2V0cyB0aGVtIGluIHRoZSBzeXN0ZW0uXG4gKi8gX2FzeW5jX3RvX2dlbmVyYXRvcihmdW5jdGlvbiooY29uZmlncykge1xuICAgICAgICBmb3IgKGNvbnN0IGNvbmZpZyBvZiBjb25maWdzKXtcbiAgICAgICAgICAgIHByb3ZpZGUoY29uZmlnLnZhbHVlLCBjb25maWcubmFtZSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gX2xvYWRDb25maWdzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59XG4vKipcbiAqIEludm9rZWQgd2hlbiB0aGUgY29ubmVjdGl2aXR5IGlzIGNoYW5nZWQuXG4gKi8gZnVuY3Rpb24gY29ubmVjdGl2aXR5Q2hhbmdlZCgpIHtcbiAgICBjb25zdCBvbmxpbmUgPSBuYXZpZ2F0b3Iub25MaW5lO1xuICAgIC8vIE5CIFdlIGRvIG5vdCB3YWl0IGZvciB0aGlzIHRvIGJlIGRvbmU7IGl0IGlzIHNpbXBseSBzY2hlZHVsZWRcbiAgICB0cmlnZ2VyQXBwQ2hhbmdlKCk7XG4gICAgZGlzcGF0Y2hDb25uZWN0aXZpdHlDaGFuZ2VkKG9ubGluZSk7XG4gICAgc2hvd1RvYXN0KHtcbiAgICAgICAgY3JpdGljYWw6IHRydWUsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBgQ29ubmVjdGlvbjogJHtvbmxpbmUgPyBcIm9ubGluZVwiIDogXCJvZmZsaW5lXCJ9YCxcbiAgICAgICAgdGl0bGU6IFwiQXBwXCIsXG4gICAgICAgIGtpbmQ6IG9ubGluZSA/IFwic3VjY2Vzc1wiIDogXCJ3YXJuaW5nXCJcbiAgICB9KTtcbn1cbi8qKlxuICogUnVucyB0aGUgc2hlbGwgYnkgaW1wb3J0aW5nIHRoZSB0cmFuc2xhdGlvbnMgYW5kIHN0YXJ0aW5nIHNpbmdsZSBTUEEuXG4gKi8gZnVuY3Rpb24gcnVuU2hlbGwoKSB7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJvZmZsaW5lXCIsIGNvbm5lY3Rpdml0eUNoYW5nZWQpO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwib25saW5lXCIsIGNvbm5lY3Rpdml0eUNoYW5nZWQpO1xuICAgIHJldHVybiBzZXR1cEkxOG4oKS5jYXRjaCgoZXJyKT0+Y29uc29sZS5lcnJvcihgRmFpbGVkIHRvIGluaXRpYWxpemUgdHJhbnNsYXRpb25zYCwgZXJyKSkudGhlbigoKT0+c3RhcnQoKSk7XG59XG5mdW5jdGlvbiBoYW5kbGVJbml0RmFpbHVyZShlKSB7XG4gICAgY29uc29sZS5lcnJvcihlKTtcbiAgICByZW5kZXJGYXRhbEVycm9yUGFnZShlKTtcbn1cbmZ1bmN0aW9uIHJlbmRlckZhdGFsRXJyb3JQYWdlKGUpIHtcbiAgICBjb25zdCB0ZW1wbGF0ZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjYXBwLWVycm9yXCIpO1xuICAgIGlmICh0ZW1wbGF0ZSkge1xuICAgICAgICBjb25zdCBmcmFnbWVudCA9IHRlbXBsYXRlLmNvbnRlbnQuY2xvbmVOb2RlKHRydWUpO1xuICAgICAgICBjb25zdCBtZXNzYWdlQ29udGFpbmVyID0gZnJhZ21lbnQucXVlcnlTZWxlY3RvcignW2RhdGEtdmFyPVwibWVzc2FnZVwiXScpO1xuICAgICAgICBpZiAobWVzc2FnZUNvbnRhaW5lcikge1xuICAgICAgICAgICAgbWVzc2FnZUNvbnRhaW5lci50ZXh0Q29udGVudCA9IChlID09PSBudWxsIHx8IGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGUubWVzc2FnZSkgfHwgXCJObyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGF2YWlsYWJsZS5cIjtcbiAgICAgICAgfVxuICAgICAgICBpZiAobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJvcGVubXJzOmRldnRvb2xzXCIpICYmIE9iamVjdC5rZXlzKGxvY2FsU3RvcmFnZSkuc29tZSgoayk9Pmsuc3RhcnRzV2l0aChcImltcG9ydC1tYXAtb3ZlcnJpZGU6XCIpKSkge1xuICAgICAgICAgICAgY29uc3QgYXBwRXJyb3JBY3Rpb25CdXR0b25zID0gZnJhZ21lbnQgPT09IG51bGwgfHwgZnJhZ21lbnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGZyYWdtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjYnV0dG9uc1wiKTtcbiAgICAgICAgICAgIGlmIChhcHBFcnJvckFjdGlvbkJ1dHRvbnMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjbGVhckRldk92ZXJyaWRlc0J1dHRvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJidXR0b25cIik7XG4gICAgICAgICAgICAgICAgY2xlYXJEZXZPdmVycmlkZXNCdXR0b24uY2xhc3NOYW1lID0gXCJjZHMtLWJ0blwiO1xuICAgICAgICAgICAgICAgIGNsZWFyRGV2T3ZlcnJpZGVzQnV0dG9uLmlubmVySFRNTCA9IFwiQ2xlYXIgZGV2IG92ZXJyaWRlc1wiO1xuICAgICAgICAgICAgICAgIGNsZWFyRGV2T3ZlcnJpZGVzQnV0dG9uLm9uY2xpY2sgPSBjbGVhckRldk92ZXJyaWRlcztcbiAgICAgICAgICAgICAgICBhcHBFcnJvckFjdGlvbkJ1dHRvbnMuYXBwZW5kQ2hpbGQoY2xlYXJEZXZPdmVycmlkZXNCdXR0b24pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZnJhZ21lbnQpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGNsZWFyRGV2T3ZlcnJpZGVzKCkge1xuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGxvY2FsU3RvcmFnZSkpe1xuICAgICAgICBpZiAoa2V5LnN0YXJ0c1dpdGgoXCJpbXBvcnQtbWFwLW92ZXJyaWRlOlwiKSAmJiAhW1xuICAgICAgICAgICAgXCJpbXBvcnQtbWFwLW92ZXJyaWRlOnJlYWN0XCIsXG4gICAgICAgICAgICBcImltcG9ydC1tYXAtb3ZlcnJpZGU6cmVhY3QtZG9tXCJcbiAgICAgICAgXS5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShrZXkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGxvY2F0aW9uLnJlbG9hZCgpO1xufVxuZnVuY3Rpb24gaXNBYnNvbHV0ZVVybCh1cmwpIHtcbiAgICBjb25zdCBhYnNvbHV0ZVVybFBhdHRlcm4gPSAvXmh0dHBzPzpcXC9cXC8vaTtcbiAgICByZXR1cm4gYWJzb2x1dGVVcmxQYXR0ZXJuLnRlc3QodXJsKTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZUNvbmZpZ0xvYWRlcihjb25maWdVcmxzKSB7XG4gICAgY29uc3QgbG9hZGluZ0NvbmZpZ3MgPSBQcm9taXNlLmFsbChjb25maWdVcmxzLm1hcCgoY29uZmlnVXJsKT0+e1xuICAgICAgICBjb25zdCBpbnRlcnBvbGF0ZWRVcmwgPSBgJHtpbnRlcnBvbGF0ZVVybChgXFwke29wZW5tcnNTcGFCYXNlfSR7Y29uZmlnVXJsfWApfWA7XG4gICAgICAgIGNvbnN0IHVybCA9IGlzQWJzb2x1dGVVcmwoY29uZmlnVXJsKSA/IGNvbmZpZ1VybCA6IGAke3dpbmRvdy5sb2NhdGlvbi5vcmlnaW59JHtpbnRlcnBvbGF0ZWRVcmx9YDtcbiAgICAgICAgcmV0dXJuIGZldGNoKHVybCkudGhlbigocmVzKT0+cmVzLmpzb24oKSkudGhlbigoY29uZmlnKT0+KHtcbiAgICAgICAgICAgICAgICBuYW1lOiBjb25maWdVcmwsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGNvbmZpZ1xuICAgICAgICAgICAgfSkpLmNhdGNoKChlcnIpPT57XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGBMb2FkaW5nIHRoZSBjb25maWcgZnJvbSBcIiR7Y29uZmlnVXJsfVwiIGZhaWxlZC5gLCBlcnIpO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBjb25maWdVcmwsXG4gICAgICAgICAgICAgICAgdmFsdWU6IHt9XG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICB9KSk7XG4gICAgcmV0dXJuICgpPT5sb2FkaW5nQ29uZmlncy50aGVuKGxvYWRDb25maWdzKTtcbn1cbmZ1bmN0aW9uIHNob3dOb3RpZmljYXRpb25zKCkge1xuICAgIHJlbmRlcklubGluZU5vdGlmaWNhdGlvbnMoZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIi5vbXJzLWlubGluZS1ub3RpZmljYXRpb25zLWNvbnRhaW5lclwiKSk7XG4gICAgcmV0dXJuO1xufVxuZnVuY3Rpb24gc2hvd0FjdGlvbmFibGVOb3RpZmljYXRpb25zKCkge1xuICAgIHJlbmRlckFjdGlvbmFibGVOb3RpZmljYXRpb25zKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIub21ycy1hY3Rpb25hYmxlLW5vdGlmaWNhdGlvbnMtY29udGFpbmVyXCIpKTtcbn1cbmZ1bmN0aW9uIHNob3dUb2FzdHMoKSB7XG4gICAgcmVuZGVyVG9hc3RzKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIub21ycy10b2FzdHMtY29udGFpbmVyXCIpKTtcbn1cbmZ1bmN0aW9uIHNob3dNb2RhbHMoKSB7XG4gICAgcmVuZGVyTW9kYWxzKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIub21ycy1tb2RhbHMtY29udGFpbmVyXCIpKTtcbn1cbmZ1bmN0aW9uIHNob3dMb2FkaW5nU3Bpbm5lcigpIHtcbiAgICByZXR1cm4gcmVuZGVyTG9hZGluZ1NwaW5uZXIoZG9jdW1lbnQuYm9keSk7XG59XG4vKipcbiAqIFJlZ2lzdGVycyB0aGUgZXh0ZW5zaW9ucyBjb21pbmcgZnJvbSB0aGUgYXBwIHNoZWxsIGl0c2VsZi5cbiAqLyBmdW5jdGlvbiByZWdpc3RlckNvcmVFeHRlbnNpb25zKCkge1xuICAgIGNvbnN0IGV4dGVuc2lvbnMgPSBnZXRDb3JlRXh0ZW5zaW9ucygpO1xuICAgIGZvciAoY29uc3QgZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbnMpe1xuICAgICAgICB0cnlSZWdpc3RlckV4dGVuc2lvbihhcHBOYW1lLCBleHRlbnNpb24pO1xuICAgIH1cbn1cbmZ1bmN0aW9uIHNldHVwT2ZmbGluZSgpIHtcbiAgICByZXR1cm4gX3NldHVwT2ZmbGluZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufVxuZnVuY3Rpb24gX3NldHVwT2ZmbGluZSgpIHtcbiAgICBfc2V0dXBPZmZsaW5lID0gX2FzeW5jX3RvX2dlbmVyYXRvcihmdW5jdGlvbiooKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB5aWVsZCByZWdpc3Rlck9tcnNTZXJ2aWNlV29ya2VyKGAke3dpbmRvdy5nZXRPcGVubXJzU3BhQmFzZSgpfXNlcnZpY2Utd29ya2VyLmpzYCk7XG4gICAgICAgICAgICB5aWVsZCBhY3RpdmF0ZU9mZmxpbmVDYXBhYmlsaXR5KCk7XG4gICAgICAgICAgICBzZXR1cE9mZmxpbmVTdGF0aWNEZXBlbmRlbmN5UHJlY2FjaGluZygpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIHdoaWxlIHNldHRpbmcgdXAgb2ZmbGluZSBtb2RlLlwiLCBlcnJvcik7XG4gICAgICAgICAgICBzaG93Tm90aWZpY2F0aW9uKHtcbiAgICAgICAgICAgICAgICBraW5kOiBcImVycm9yXCIsXG4gICAgICAgICAgICAgICAgdGl0bGU6IFwiT2ZmbGluZSBTZXR1cCBFcnJvclwiLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBlcnJvci5tZXNzYWdlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBfc2V0dXBPZmZsaW5lLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59XG5mdW5jdGlvbiBzZXR1cE9mZmxpbmVTdGF0aWNEZXBlbmRlbmN5UHJlY2FjaGluZygpIHtcbiAgICBjb25zdCBwcmVjYWNoZURlbGF5ID0gMTAwMCAqIDYwICogNTtcbiAgICBsZXQgbGFzdFByZWNhY2hlID0gbnVsbDtcbiAgICBzdWJzY3JpYmVPbmxpbmVBbmRMb2dpbkNoYW5nZSgob25saW5lLCBoYXNMb2dnZWRJblVzZXIpPT57XG4gICAgICAgIGNvbnN0IGhhc0V4Y2VlZGVkUHJlY2FjaGVEZWxheSA9ICFsYXN0UHJlY2FjaGUgfHwgbmV3IERhdGUoKS5nZXRUaW1lKCkgLSBsYXN0UHJlY2FjaGUuZ2V0VGltZSgpID4gcHJlY2FjaGVEZWxheTtcbiAgICAgICAgaWYgKGhhc0xvZ2dlZEluVXNlciAmJiBvbmxpbmUgJiYgaGFzRXhjZWVkZWRQcmVjYWNoZURlbGF5KSB7XG4gICAgICAgICAgICBsYXN0UHJlY2FjaGUgPSBuZXcgRGF0ZSgpO1xuICAgICAgICAgICAgZGlzcGF0Y2hQcmVjYWNoZVN0YXRpY0RlcGVuZGVuY2llcygpO1xuICAgICAgICB9XG4gICAgfSk7XG59XG5mdW5jdGlvbiBzdWJzY3JpYmVPbmxpbmVBbmRMb2dpbkNoYW5nZShjYikge1xuICAgIGxldCBpc09ubGluZSA9IGZhbHNlO1xuICAgIGxldCBoYXNMb2dnZWRJblVzZXIgPSBmYWxzZTtcbiAgICBnZXRDdXJyZW50VXNlcih7XG4gICAgICAgIGluY2x1ZGVBdXRoU3RhdHVzOiBmYWxzZVxuICAgIH0pLnN1YnNjcmliZSgodXNlcik9PntcbiAgICAgICAgaGFzTG9nZ2VkSW5Vc2VyID0gISF1c2VyO1xuICAgICAgICBjYihpc09ubGluZSwgaGFzTG9nZ2VkSW5Vc2VyKTtcbiAgICB9KTtcbiAgICBzdWJzY3JpYmVDb25uZWN0aXZpdHkoKHsgb25saW5lICB9KT0+e1xuICAgICAgICBpc09ubGluZSA9IG9ubGluZTtcbiAgICAgICAgY2Iob25saW5lLCBoYXNMb2dnZWRJblVzZXIpO1xuICAgIH0pO1xufVxuZnVuY3Rpb24gcHJlY2FjaGVHbG9iYWxTdGF0aWNEZXBlbmRlbmNpZXMoKSB7XG4gICAgcmV0dXJuIF9wcmVjYWNoZUdsb2JhbFN0YXRpY0RlcGVuZGVuY2llcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufVxuZnVuY3Rpb24gX3ByZWNhY2hlR2xvYmFsU3RhdGljRGVwZW5kZW5jaWVzKCkge1xuICAgIF9wcmVjYWNoZUdsb2JhbFN0YXRpY0RlcGVuZGVuY2llcyA9IF9hc3luY190b19nZW5lcmF0b3IoZnVuY3Rpb24qKCkge1xuICAgICAgICB5aWVsZCBwcmVjYWNoZUltcG9ydE1hcCgpO1xuICAgICAgICAvLyBCeSBkZWZhdWx0LCBjYWNoZSB0aGUgc2Vzc2lvbiBlbmRwb2ludC5cbiAgICAgICAgLy8gVGhpcyBlbnN1cmVzIHRoYXQgYSBsb3Qgb2YgdXNlci9zZXNzaW9uIHJlbGF0ZWQgZnVuY3Rpb25zIGFsc28gd29yayBvZmZsaW5lLlxuICAgICAgICBjb25zdCBzZXNzaW9uUGF0aFVybCA9IG5ldyBVUkwoYCR7d2luZG93Lm9wZW5tcnNCYXNlfS93cy9yZXN0L3YxL3Nlc3Npb25gLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKS5ocmVmO1xuICAgICAgICB5aWVsZCBtZXNzYWdlT21yc1NlcnZpY2VXb3JrZXIoe1xuICAgICAgICAgICAgdHlwZTogXCJyZWdpc3RlckR5bmFtaWNSb3V0ZVwiLFxuICAgICAgICAgICAgdXJsOiBzZXNzaW9uUGF0aFVybCxcbiAgICAgICAgICAgIHN0cmF0ZWd5OiBcIm5ldHdvcmstZmlyc3RcIlxuICAgICAgICB9KTtcbiAgICAgICAgeWllbGQgb3Blbm1yc0ZldGNoKFwiL3dzL3Jlc3QvdjEvc2Vzc2lvblwiKS5jYXRjaCgoZSk9PmNvbnNvbGUud2FybihcIkZhaWxlZCB0byBwcmVjYWNoZSB0aGUgdXNlciBzZXNzaW9uIGRhdGEgZnJvbSB0aGUgYXBwIHNoZWxsLiBNRnMgZGVwZW5kaW5nIG9uIHRoaXMgZGF0YSBtYXkgcnVuIGludG8gcHJvYmxlbXMgd2hpbGUgb2ZmbGluZS5cIiwgZSkpO1xuICAgIH0pO1xuICAgIHJldHVybiBfcHJlY2FjaGVHbG9iYWxTdGF0aWNEZXBlbmRlbmNpZXMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn1cbmZ1bmN0aW9uIHByZWNhY2hlSW1wb3J0TWFwKCkge1xuICAgIHJldHVybiBfcHJlY2FjaGVJbXBvcnRNYXAuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn1cbmZ1bmN0aW9uIF9wcmVjYWNoZUltcG9ydE1hcCgpIHtcbiAgICBfcHJlY2FjaGVJbXBvcnRNYXAgPSBfYXN5bmNfdG9fZ2VuZXJhdG9yKGZ1bmN0aW9uKigpIHtcbiAgICAgICAgY29uc3QgaW1wb3J0TWFwID0geWllbGQgd2luZG93LmltcG9ydE1hcE92ZXJyaWRlcy5nZXRDdXJyZW50UGFnZU1hcCgpO1xuICAgICAgICB5aWVsZCBtZXNzYWdlT21yc1NlcnZpY2VXb3JrZXIoe1xuICAgICAgICAgICAgdHlwZTogXCJvbkltcG9ydE1hcENoYW5nZWRcIixcbiAgICAgICAgICAgIGltcG9ydE1hcFxuICAgICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4gX3ByZWNhY2hlSW1wb3J0TWFwLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59XG5mdW5jdGlvbiBzZXR1cE9mZmxpbmVDc3NDbGFzc2VzKCkge1xuICAgIHN1YnNjcmliZUNvbm5lY3Rpdml0eSgoeyBvbmxpbmUgIH0pPT57XG4gICAgICAgIGNvbnN0IGJvZHkgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiYm9keVwiKTtcbiAgICAgICAgaWYgKG9ubGluZSkge1xuICAgICAgICAgICAgYm9keS5jbGFzc0xpc3QucmVtb3ZlKFwib21ycy1vZmZsaW5lXCIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYm9keS5jbGFzc0xpc3QuYWRkKFwib21ycy1vZmZsaW5lXCIpO1xuICAgICAgICB9XG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gcnVuKGNvbmZpZ1VybHMsIG9mZmxpbmUpIHtcbiAgICBjb25zdCBjbG9zZUxvYWRpbmcgPSBzaG93TG9hZGluZ1NwaW5uZXIoKTtcbiAgICBjb25zdCBwcm92aWRlQ29uZmlncyA9IGNyZWF0ZUNvbmZpZ0xvYWRlcihjb25maWdVcmxzKTtcbiAgICBpbnRlZ3JhdGVCcmVha3BvaW50cygpO1xuICAgIHNob3dUb2FzdHMoKTtcbiAgICBzaG93TW9kYWxzKCk7XG4gICAgc2hvd05vdGlmaWNhdGlvbnMoKTtcbiAgICBzaG93QWN0aW9uYWJsZU5vdGlmaWNhdGlvbnMoKTtcbiAgICBjcmVhdGVBcHBTdGF0ZSh7fSk7XG4gICAgc3Vic2NyaWJlTm90aWZpY2F0aW9uU2hvd24oc2hvd05vdGlmaWNhdGlvbik7XG4gICAgc3Vic2NyaWJlQWN0aW9uYWJsZU5vdGlmaWNhdGlvblNob3duKHNob3dBY3Rpb25hYmxlTm90aWZpY2F0aW9uKTtcbiAgICBzdWJzY3JpYmVUb2FzdFNob3duKHNob3dUb2FzdCk7XG4gICAgc3Vic2NyaWJlUHJlY2FjaGVTdGF0aWNEZXBlbmRlbmNpZXMocHJlY2FjaGVHbG9iYWxTdGF0aWNEZXBlbmRlbmNpZXMpO1xuICAgIHNldHVwQXBpTW9kdWxlKCk7XG4gICAgcmVnaXN0ZXJDb3JlRXh0ZW5zaW9ucygpO1xuICAgIHJldHVybiBzZXR1cEFwcHMoKS50aGVuKGZpbmlzaFJlZ2lzdGVyaW5nQWxsQXBwcykudGhlbihzZXR1cE9mZmxpbmVDc3NDbGFzc2VzKS50aGVuKHByb3ZpZGVDb25maWdzKS50aGVuKHJ1blNoZWxsKS5jYXRjaChoYW5kbGVJbml0RmFpbHVyZSkudGhlbihjbG9zZUxvYWRpbmcpLnRoZW4oKCk9Pm9mZmxpbmUgPyBzZXR1cE9mZmxpbmUoKSA6IHVuZGVmaW5lZCk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/run.ts\n");
|
|
52
|
+
|
|
53
|
+
/***/ }),
|
|
54
|
+
|
|
55
|
+
/***/ "./src/ui/index.ts":
|
|
56
|
+
/*!*************************!*\
|
|
57
|
+
!*** ./src/ui/index.ts ***!
|
|
58
|
+
\*************************/
|
|
59
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
60
|
+
|
|
61
|
+
"use strict";
|
|
62
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ appName: () => (/* binding */ appName),\n/* harmony export */ getCoreExtensions: () => (/* binding */ getCoreExtensions)\n/* harmony export */ });\n/* harmony import */ var _openmrs_esm_framework__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @openmrs/esm-framework */ \"webpack/sharing/consume/default/@openmrs/esm-framework/@openmrs/esm-framework\");\n/* harmony import */ var _openmrs_esm_framework__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_openmrs_esm_framework__WEBPACK_IMPORTED_MODULE_0__);\n\nconst appName = \"@openmrs/esm-app-shell\";\nfunction getCoreExtensions() {\n const options = {\n featureName: \"app-shell\",\n moduleName: appName\n };\n return [\n {\n name: \"breadcrumbs-widget\",\n slot: \"breadcrumbs-slot\",\n load: (0,_openmrs_esm_framework__WEBPACK_IMPORTED_MODULE_0__.getAsyncLifecycle)(()=>__webpack_require__.e(/*! import() */ \"src_ui_breadcrumbs_tsx\").then(__webpack_require__.bind(__webpack_require__, /*! ./breadcrumbs */ \"./src/ui/breadcrumbs.tsx\")), options),\n online: true,\n offline: true\n }\n ];\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvdWkvaW5kZXgudHMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUEyRDtBQUNwRDtBQUNBO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQix5RUFBaUIsS0FBSyxvS0FBdUI7QUFDL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi9zcmMvdWkvaW5kZXgudHM/YzdjYiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRBc3luY0xpZmVjeWNsZSB9IGZyb20gXCJAb3Blbm1ycy9lc20tZnJhbWV3b3JrXCI7XG5leHBvcnQgY29uc3QgYXBwTmFtZSA9IFwiQG9wZW5tcnMvZXNtLWFwcC1zaGVsbFwiO1xuZXhwb3J0IGZ1bmN0aW9uIGdldENvcmVFeHRlbnNpb25zKCkge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgIGZlYXR1cmVOYW1lOiBcImFwcC1zaGVsbFwiLFxuICAgICAgICBtb2R1bGVOYW1lOiBhcHBOYW1lXG4gICAgfTtcbiAgICByZXR1cm4gW1xuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcImJyZWFkY3J1bWJzLXdpZGdldFwiLFxuICAgICAgICAgICAgc2xvdDogXCJicmVhZGNydW1icy1zbG90XCIsXG4gICAgICAgICAgICBsb2FkOiBnZXRBc3luY0xpZmVjeWNsZSgoKT0+aW1wb3J0KFwiLi9icmVhZGNydW1ic1wiKSwgb3B0aW9ucyksXG4gICAgICAgICAgICBvbmxpbmU6IHRydWUsXG4gICAgICAgICAgICBvZmZsaW5lOiB0cnVlXG4gICAgICAgIH1cbiAgICBdO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/index.ts\n");
|
|
63
|
+
|
|
64
|
+
/***/ }),
|
|
65
|
+
|
|
66
|
+
/***/ "?d643":
|
|
67
|
+
/*!*******************************!*\
|
|
68
|
+
!*** ./lib/locales (ignored) ***!
|
|
69
|
+
\*******************************/
|
|
70
|
+
/***/ (() => {
|
|
71
|
+
|
|
72
|
+
/* (ignored) */
|
|
73
|
+
|
|
74
|
+
/***/ })
|
|
75
|
+
|
|
76
|
+
}]);
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/lib/favicon.ico
ADDED
|
Binary file
|
|
Binary file
|