@openmrs/esm-app-shell 9.0.3-pre.4784 → 9.0.3-pre.4788
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 +3 -3
- package/dist/{9cde77ac1259de4f.js.map → 808ebf328e1e3a3c.js.map} +1 -1
- package/dist/index.html +1 -1
- package/dist/{openmrs.88cb8affe0fde258.js → openmrs.b219191cc5a09b04.js} +4 -4
- package/dist/openmrs.b219191cc5a09b04.js.map +1 -0
- package/lib/{bea4dcd241e3e05f.js → 5348a598ca9af4bc.js} +4 -4
- package/lib/openmrs.js +3 -3
- package/package.json +3 -3
- package/dist/openmrs.88cb8affe0fde258.js.map +0 -1
- /package/dist/{9cde77ac1259de4f.js → 808ebf328e1e3a3c.js} +0 -0
|
@@ -1960,7 +1960,7 @@ eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webp
|
|
|
1960
1960
|
},
|
|
1961
1961
|
"../../framework/esm-styleguide/dist/workspaces2/action-menu2/action-menu-button2.component.js"(__unused_rspack_module, __webpack_exports__, __webpack_require__) {
|
|
1962
1962
|
"use strict";
|
|
1963
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n ActionMenuButton2: () => (ActionMenuButton2)\n});\n/* import */ var react_jsx_runtime__rspack_import_0 = __webpack_require__(\"../../../node_modules/react/jsx-runtime.js\");\n/* import */ var react__rspack_import_1 = __webpack_require__(\"webpack/sharing/consume/default/react/react\");\n/* import */ var react__rspack_import_1_default = /*#__PURE__*/__webpack_require__.n(react__rspack_import_1);\n/* import */ var classnames__rspack_import_2 = __webpack_require__(\"../../../node_modules/classnames/index.js\");\n/* import */ var classnames__rspack_import_2_default = /*#__PURE__*/__webpack_require__.n(classnames__rspack_import_2);\n/* import */ var _carbon_react__rspack_import_3 = __webpack_require__(\"webpack/sharing/consume/default/@carbon/react/@carbon/react\");\n/* import */ var _carbon_react__rspack_import_3_default = /*#__PURE__*/__webpack_require__.n(_carbon_react__rspack_import_3);\n/* import */ var _openmrs_esm_react_utils__rspack_import_4 = __webpack_require__(\"../../framework/esm-react-utils/dist/index.js\");\n/* import */ var _workspace2_js__rspack_import_5 = __webpack_require__(\"../../framework/esm-styleguide/dist/workspaces2/workspace2.js\");\n/* import */ var _action_menu_button2_module_scss__rspack_import_6 = __webpack_require__(\"../../framework/esm-styleguide/dist/workspaces2/action-menu2/action-menu-button2.module.scss\");\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 _ts_generator(thisArg, body) {\n var f, y, t, _ = {\n label: 0,\n sent: function() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n }, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype), d = Object.defineProperty;\n return d(g, \"next\", {\n value: verb(0)\n }), d(g, \"throw\", {\n value: verb(1)\n }), d(g, \"return\", {\n value: verb(2)\n }), typeof Symbol === \"function\" && d(g, Symbol.iterator, {\n value: function() {\n return this;\n }\n }), g;\n function verb(n) {\n return function(v) {\n return step([\n n,\n v\n ]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while(g && (g = 0, op[0] && (_ = 0)), _)try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [\n op[0] & 2,\n t.value\n ];\n switch(op[0]){\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [\n 0\n ];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [\n 6,\n e\n ];\n y = 0;\n } finally{\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n}\n\n/** @module @category Workspace */ \n\n\n\n\n\nfunction Tags(param) {\n var getIcon = param.getIcon, hasUnsavedChanges = param.hasUnsavedChanges, tagContent = param.tagContent;\n return /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsxs)(react_jsx_runtime__rspack_import_0.Fragment, {\n children: [\n getIcon({\n size: 16\n }),\n hasUnsavedChanges ? /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsx)(\"span\", {\n className: _action_menu_button2_module_scss__rspack_import_6[\"default\"].interruptedTag,\n children: \"!\"\n }) : /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsx)(\"span\", {\n className: _action_menu_button2_module_scss__rspack_import_6[\"default\"].countTag,\n children: tagContent\n })\n ]\n });\n}\n/**\n * The ActionMenuButton2 component is used to render a button in the action menu of a workspace group.\n * The button is associated with a specific workspace window, defined in routes.json of the app with the button.\n * When one or more workspaces within the window are opened, the button will be highlighted:\n * bold blue when the window is focused (un-minimized and in front), green when unfocused.\n * If any workspace in the window has unsaved changes, an exclamation mark will be displayed\n * on top of the icon.\n *\n * On clicked, The button either:\n * 1. hides the workspace window if it is opened and focused; or\n * 2. restores the workspace window if it is opened and unfocused; or\n * 3. launches a workspace from within that window, if the window is not opened.\n *\n * @experimental\n */ var ActionMenuButton2 = function ActionMenuButton2(param) {\n var getIcon = param.icon, label = param.label, tagContent = param.tagContent, workspaceToLaunch = param.workspaceToLaunch, onBeforeWorkspaceLaunch = param.onBeforeWorkspaceLaunch;\n var _ref;\n var layout = (0,_openmrs_esm_react_utils__rspack_import_4.useLayoutType)();\n var _useWorkspace2Store = (0,_workspace2_js__rspack_import_5.useWorkspace2Store)(), openedWindows = _useWorkspace2Store.openedWindows, restoreWindow = _useWorkspace2Store.restoreWindow, hideWindow = _useWorkspace2Store.hideWindow, isMostRecentlyOpenedWindowHidden = _useWorkspace2Store.isMostRecentlyOpenedWindowHidden;\n var extension = (0,react__rspack_import_1.useContext)(_openmrs_esm_react_utils__rspack_import_4.ComponentContext).extension;\n var openedWindowIndex = openedWindows.findIndex(function(w) {\n return w.windowName === (extension === null || extension === void 0 ? void 0 : extension.extensionId);\n });\n // can be undefined if the window is not opened\n var window = openedWindows[openedWindowIndex];\n var isWindowOpened = window != null;\n var isWindowHidden = isWindowOpened && (openedWindowIndex < openedWindows.length - 1 || isMostRecentlyOpenedWindowHidden);\n var isWindowFocused = isWindowOpened && !isWindowHidden;\n var hasUnsavedChanges = (_ref = window === null || window === void 0 ? void 0 : window.openedWorkspaces.some(function(w) {\n return w.hasUnsavedChanges;\n })) !== null && _ref !== void 0 ? _ref : false;\n var onClick = function onClick() {\n return _async_to_generator(function() {\n var _ref, shouldLaunch, workspaceName, workspaceProps, windowProps;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n if (!isWindowOpened) return [\n 3,\n 1\n ];\n if (isWindowHidden) {\n restoreWindow(window.windowName);\n } else {\n hideWindow();\n }\n return [\n 3,\n 3\n ];\n case 1:\n return [\n 4,\n (_ref = onBeforeWorkspaceLaunch === null || onBeforeWorkspaceLaunch === void 0 ? void 0 : onBeforeWorkspaceLaunch()) !== null && _ref !== void 0 ? _ref : true\n ];\n case 2:\n shouldLaunch = _state.sent();\n if (shouldLaunch) {\n workspaceName = workspaceToLaunch.workspaceName, workspaceProps = workspaceToLaunch.workspaceProps, windowProps = workspaceToLaunch.windowProps;\n (0,_workspace2_js__rspack_import_5.launchWorkspace2)(workspaceName, workspaceProps, windowProps);\n }\n _state.label = 3;\n case 3:\n return [\n 2\n ];\n }\n });\n })();\n };\n if (layout === 'tablet' || layout === 'phone') {\n var _obj;\n return /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsxs)(_carbon_react__rspack_import_3.Button, {\n className: classnames__rspack_import_2_default()(_action_menu_button2_module_scss__rspack_import_6[\"default\"].container, (_obj = {}, _define_property(_obj, _action_menu_button2_module_scss__rspack_import_6[\"default\"].active, isWindowOpened && !isWindowFocused), _define_property(_obj, _action_menu_button2_module_scss__rspack_import_6[\"default\"].focused, isWindowFocused), _obj)),\n iconDescription: label,\n kind: \"ghost\",\n onClick: onClick,\n role: \"button\",\n tabIndex: 0,\n size: \"md\",\n children: [\n /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsx)(\"span\", {\n className: _action_menu_button2_module_scss__rspack_import_6[\"default\"].elementContainer,\n children: /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsx)(Tags, {\n hasUnsavedChanges: hasUnsavedChanges,\n getIcon: getIcon,\n tagContent: tagContent\n })\n }),\n /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsx)(\"span\", {\n children: label\n })\n ]\n });\n }\n var _obj1;\n return /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsx)(_carbon_react__rspack_import_3.IconButton, {\n align: \"left\",\n \"aria-label\": label,\n className: classnames__rspack_import_2_default()(_action_menu_button2_module_scss__rspack_import_6[\"default\"].container, (_obj1 = {}, _define_property(_obj1, _action_menu_button2_module_scss__rspack_import_6[\"default\"].active, isWindowOpened && !isWindowFocused), _define_property(_obj1, _action_menu_button2_module_scss__rspack_import_6[\"default\"].focused, isWindowFocused), _obj1)),\n enterDelayMs: 300,\n kind: \"ghost\",\n label: label,\n onClick: onClick,\n size: \"md\",\n children: /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsx)(\"div\", {\n className: _action_menu_button2_module_scss__rspack_import_6[\"default\"].elementContainer,\n children: /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsx)(Tags, {\n hasUnsavedChanges: hasUnsavedChanges,\n getIcon: getIcon,\n tagContent: tagContent\n })\n })\n });\n};\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbHRpbjpzd2MtbG9hZGVyIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9wYWNrYWdlcy9mcmFtZXdvcmsvZXNtLXN0eWxlZ3VpZGUvZGlzdC93b3Jrc3BhY2VzMi9hY3Rpb24tbWVudTIvYWN0aW9uLW1lbnUtYnV0dG9uMi5jb21wb25lbnQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uL2ZyYW1ld29yay9lc20tc3R5bGVndWlkZS9kaXN0L3dvcmtzcGFjZXMyL2FjdGlvbi1tZW51Mi9hY3Rpb24tbWVudS1idXR0b24yLmNvbXBvbmVudC5qcz80NTE4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzLCBGcmFnbWVudCBhcyBfRnJhZ21lbnQgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbi8qKiBAbW9kdWxlIEBjYXRlZ29yeSBXb3Jrc3BhY2UgKi8gaW1wb3J0IFJlYWN0LCB7IHVzZUNvbnRleHQgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gXCJjbGFzc25hbWVzXCI7XG5pbXBvcnQgeyBCdXR0b24sIEljb25CdXR0b24gfSBmcm9tIFwiQGNhcmJvbi9yZWFjdFwiO1xuaW1wb3J0IHsgQ29tcG9uZW50Q29udGV4dCwgdXNlTGF5b3V0VHlwZSB9IGZyb20gXCJAb3Blbm1ycy9lc20tcmVhY3QtdXRpbHNcIjtcbmltcG9ydCB7IGxhdW5jaFdvcmtzcGFjZTIsIHVzZVdvcmtzcGFjZTJTdG9yZSB9IGZyb20gXCIuLi93b3Jrc3BhY2UyLmpzXCI7XG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL2FjdGlvbi1tZW51LWJ1dHRvbjIubW9kdWxlLnNjc3NcIjtcbmZ1bmN0aW9uIFRhZ3MoeyBnZXRJY29uLCBoYXNVbnNhdmVkQ2hhbmdlcywgdGFnQ29udGVudCB9KSB7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gX2pzeHMoX0ZyYWdtZW50LCB7XG4gICAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgICAgICBnZXRJY29uKHtcbiAgICAgICAgICAgICAgICBzaXplOiAxNlxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBoYXNVbnNhdmVkQ2hhbmdlcyA/IC8qI19fUFVSRV9fKi8gX2pzeChcInNwYW5cIiwge1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogc3R5bGVzLmludGVycnVwdGVkVGFnLFxuICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBcIiFcIlxuICAgICAgICAgICAgfSkgOiAvKiNfX1BVUkVfXyovIF9qc3goXCJzcGFuXCIsIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6IHN0eWxlcy5jb3VudFRhZyxcbiAgICAgICAgICAgICAgICBjaGlsZHJlbjogdGFnQ29udGVudFxuICAgICAgICAgICAgfSlcbiAgICAgICAgXVxuICAgIH0pO1xufVxuLyoqXG4gKiBUaGUgQWN0aW9uTWVudUJ1dHRvbjIgY29tcG9uZW50IGlzIHVzZWQgdG8gcmVuZGVyIGEgYnV0dG9uIGluIHRoZSBhY3Rpb24gbWVudSBvZiBhIHdvcmtzcGFjZSBncm91cC5cbiAqIFRoZSBidXR0b24gaXMgYXNzb2NpYXRlZCB3aXRoIGEgc3BlY2lmaWMgd29ya3NwYWNlIHdpbmRvdywgZGVmaW5lZCBpbiByb3V0ZXMuanNvbiBvZiB0aGUgYXBwIHdpdGggdGhlIGJ1dHRvbi5cbiAqIFdoZW4gb25lIG9yIG1vcmUgd29ya3NwYWNlcyB3aXRoaW4gdGhlIHdpbmRvdyBhcmUgb3BlbmVkLCB0aGUgYnV0dG9uIHdpbGwgYmUgaGlnaGxpZ2h0ZWQ6XG4gKiBib2xkIGJsdWUgd2hlbiB0aGUgd2luZG93IGlzIGZvY3VzZWQgKHVuLW1pbmltaXplZCBhbmQgaW4gZnJvbnQpLCBncmVlbiB3aGVuIHVuZm9jdXNlZC5cbiAqIElmIGFueSB3b3Jrc3BhY2UgaW4gdGhlIHdpbmRvdyBoYXMgdW5zYXZlZCBjaGFuZ2VzLCBhbiBleGNsYW1hdGlvbiBtYXJrIHdpbGwgYmUgZGlzcGxheWVkXG4gKiBvbiB0b3Agb2YgdGhlIGljb24uXG4gKlxuICogT24gY2xpY2tlZCwgVGhlIGJ1dHRvbiBlaXRoZXI6XG4gKiAxLiBoaWRlcyB0aGUgd29ya3NwYWNlIHdpbmRvdyBpZiBpdCBpcyBvcGVuZWQgYW5kIGZvY3VzZWQ7IG9yXG4gKiAyLiByZXN0b3JlcyB0aGUgd29ya3NwYWNlIHdpbmRvdyBpZiBpdCBpcyBvcGVuZWQgYW5kIHVuZm9jdXNlZDsgb3JcbiAqIDMuIGxhdW5jaGVzIGEgd29ya3NwYWNlIGZyb20gd2l0aGluIHRoYXQgd2luZG93LCBpZiB0aGUgd2luZG93IGlzIG5vdCBvcGVuZWQuXG4gKlxuICogQGV4cGVyaW1lbnRhbFxuICovIGV4cG9ydCBjb25zdCBBY3Rpb25NZW51QnV0dG9uMiA9ICh7IGljb246IGdldEljb24sIGxhYmVsLCB0YWdDb250ZW50LCB3b3Jrc3BhY2VUb0xhdW5jaCwgb25CZWZvcmVXb3Jrc3BhY2VMYXVuY2ggfSk9PntcbiAgICBjb25zdCBsYXlvdXQgPSB1c2VMYXlvdXRUeXBlKCk7XG4gICAgY29uc3QgeyBvcGVuZWRXaW5kb3dzLCByZXN0b3JlV2luZG93LCBoaWRlV2luZG93LCBpc01vc3RSZWNlbnRseU9wZW5lZFdpbmRvd0hpZGRlbiB9ID0gdXNlV29ya3NwYWNlMlN0b3JlKCk7XG4gICAgY29uc3QgeyBleHRlbnNpb24gfSA9IHVzZUNvbnRleHQoQ29tcG9uZW50Q29udGV4dCk7XG4gICAgY29uc3Qgb3BlbmVkV2luZG93SW5kZXggPSBvcGVuZWRXaW5kb3dzLmZpbmRJbmRleCgodyk9Pncud2luZG93TmFtZSA9PT0gZXh0ZW5zaW9uPy5leHRlbnNpb25JZCk7XG4gICAgLy8gY2FuIGJlIHVuZGVmaW5lZCBpZiB0aGUgd2luZG93IGlzIG5vdCBvcGVuZWRcbiAgICBjb25zdCB3aW5kb3cgPSBvcGVuZWRXaW5kb3dzW29wZW5lZFdpbmRvd0luZGV4XTtcbiAgICBjb25zdCBpc1dpbmRvd09wZW5lZCA9IHdpbmRvdyAhPSBudWxsO1xuICAgIGNvbnN0IGlzV2luZG93SGlkZGVuID0gaXNXaW5kb3dPcGVuZWQgJiYgKG9wZW5lZFdpbmRvd0luZGV4IDwgb3BlbmVkV2luZG93cy5sZW5ndGggLSAxIHx8IGlzTW9zdFJlY2VudGx5T3BlbmVkV2luZG93SGlkZGVuKTtcbiAgICBjb25zdCBpc1dpbmRvd0ZvY3VzZWQgPSBpc1dpbmRvd09wZW5lZCAmJiAhaXNXaW5kb3dIaWRkZW47XG4gICAgY29uc3QgaGFzVW5zYXZlZENoYW5nZXMgPSB3aW5kb3c/Lm9wZW5lZFdvcmtzcGFjZXMuc29tZSgodyk9PncuaGFzVW5zYXZlZENoYW5nZXMpID8/IGZhbHNlO1xuICAgIGNvbnN0IG9uQ2xpY2sgPSBhc3luYyAoKT0+e1xuICAgICAgICBpZiAoaXNXaW5kb3dPcGVuZWQpIHtcbiAgICAgICAgICAgIGlmIChpc1dpbmRvd0hpZGRlbikge1xuICAgICAgICAgICAgICAgIHJlc3RvcmVXaW5kb3cod2luZG93LndpbmRvd05hbWUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBoaWRlV2luZG93KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBzaG91bGRMYXVuY2ggPSBhd2FpdCAob25CZWZvcmVXb3Jrc3BhY2VMYXVuY2g/LigpID8/IHRydWUpO1xuICAgICAgICAgICAgaWYgKHNob3VsZExhdW5jaCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgd29ya3NwYWNlTmFtZSwgd29ya3NwYWNlUHJvcHMsIHdpbmRvd1Byb3BzIH0gPSB3b3Jrc3BhY2VUb0xhdW5jaDtcbiAgICAgICAgICAgICAgICBsYXVuY2hXb3Jrc3BhY2UyKHdvcmtzcGFjZU5hbWUsIHdvcmtzcGFjZVByb3BzLCB3aW5kb3dQcm9wcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIGlmIChsYXlvdXQgPT09ICd0YWJsZXQnIHx8IGxheW91dCA9PT0gJ3Bob25lJykge1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qLyBfanN4cyhCdXR0b24sIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lcyhzdHlsZXMuY29udGFpbmVyLCB7XG4gICAgICAgICAgICAgICAgW3N0eWxlcy5hY3RpdmVdOiBpc1dpbmRvd09wZW5lZCAmJiAhaXNXaW5kb3dGb2N1c2VkLFxuICAgICAgICAgICAgICAgIFtzdHlsZXMuZm9jdXNlZF06IGlzV2luZG93Rm9jdXNlZFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBpY29uRGVzY3JpcHRpb246IGxhYmVsLFxuICAgICAgICAgICAga2luZDogXCJnaG9zdFwiLFxuICAgICAgICAgICAgb25DbGljazogb25DbGljayxcbiAgICAgICAgICAgIHJvbGU6IFwiYnV0dG9uXCIsXG4gICAgICAgICAgICB0YWJJbmRleDogMCxcbiAgICAgICAgICAgIHNpemU6IFwibWRcIixcbiAgICAgICAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgICAgICAgICAgLyojX19QVVJFX18qLyBfanN4KFwic3BhblwiLCB7XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogc3R5bGVzLmVsZW1lbnRDb250YWluZXIsXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiAvKiNfX1BVUkVfXyovIF9qc3goVGFncywge1xuICAgICAgICAgICAgICAgICAgICAgICAgaGFzVW5zYXZlZENoYW5nZXM6IGhhc1Vuc2F2ZWRDaGFuZ2VzLFxuICAgICAgICAgICAgICAgICAgICAgICAgZ2V0SWNvbjogZ2V0SWNvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhZ0NvbnRlbnQ6IHRhZ0NvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAvKiNfX1BVUkVfXyovIF9qc3goXCJzcGFuXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IGxhYmVsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIF1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiAvKiNfX1BVUkVfXyovIF9qc3goSWNvbkJ1dHRvbiwge1xuICAgICAgICBhbGlnbjogXCJsZWZ0XCIsXG4gICAgICAgIFwiYXJpYS1sYWJlbFwiOiBsYWJlbCxcbiAgICAgICAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKHN0eWxlcy5jb250YWluZXIsIHtcbiAgICAgICAgICAgIFtzdHlsZXMuYWN0aXZlXTogaXNXaW5kb3dPcGVuZWQgJiYgIWlzV2luZG93Rm9jdXNlZCxcbiAgICAgICAgICAgIFtzdHlsZXMuZm9jdXNlZF06IGlzV2luZG93Rm9jdXNlZFxuICAgICAgICB9KSxcbiAgICAgICAgZW50ZXJEZWxheU1zOiAzMDAsXG4gICAgICAgIGtpbmQ6IFwiZ2hvc3RcIixcbiAgICAgICAgbGFiZWw6IGxhYmVsLFxuICAgICAgICBvbkNsaWNrOiBvbkNsaWNrLFxuICAgICAgICBzaXplOiBcIm1kXCIsXG4gICAgICAgIGNoaWxkcmVuOiAvKiNfX1BVUkVfXyovIF9qc3goXCJkaXZcIiwge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiBzdHlsZXMuZWxlbWVudENvbnRhaW5lcixcbiAgICAgICAgICAgIGNoaWxkcmVuOiAvKiNfX1BVUkVfXyovIF9qc3goVGFncywge1xuICAgICAgICAgICAgICAgIGhhc1Vuc2F2ZWRDaGFuZ2VzOiBoYXNVbnNhdmVkQ2hhbmdlcyxcbiAgICAgICAgICAgICAgICBnZXRJY29uOiBnZXRJY29uLFxuICAgICAgICAgICAgICAgIHRhZ0NvbnRlbnQ6IHRhZ0NvbnRlbnRcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0pXG4gICAgfSk7XG59O1xuIl0sIm5hbWVzIjpbImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsIlJlYWN0IiwidXNlQ29udGV4dCIsImNsYXNzTmFtZXMiLCJCdXR0b24iLCJJY29uQnV0dG9uIiwiQ29tcG9uZW50Q29udGV4dCIsInVzZUxheW91dFR5cGUiLCJsYXVuY2hXb3Jrc3BhY2UyIiwidXNlV29ya3NwYWNlMlN0b3JlIiwic3R5bGVzIiwiVGFncyIsInBhcmFtIiwiZ2V0SWNvbiIsImhhc1Vuc2F2ZWRDaGFuZ2VzIiwidGFnQ29udGVudCIsIkFjdGlvbk1lbnVCdXR0b24yIiwibGFiZWwiLCJ3b3Jrc3BhY2VUb0xhdW5jaCIsIm9uQmVmb3JlV29ya3NwYWNlTGF1bmNoIiwibGF5b3V0IiwiX3VzZVdvcmtzcGFjZTJTdG9yZSIsIm9wZW5lZFdpbmRvd3MiLCJyZXN0b3JlV2luZG93IiwiaGlkZVdpbmRvdyIsImlzTW9zdFJlY2VudGx5T3BlbmVkV2luZG93SGlkZGVuIiwiZXh0ZW5zaW9uIiwib3BlbmVkV2luZG93SW5kZXgiLCJ3Iiwid2luZG93IiwiaXNXaW5kb3dPcGVuZWQiLCJpc1dpbmRvd0hpZGRlbiIsImlzV2luZG93Rm9jdXNlZCIsIm9uQ2xpY2siLCJzaG91bGRMYXVuY2giLCJ3b3Jrc3BhY2VOYW1lIiwid29ya3NwYWNlUHJvcHMiLCJ3aW5kb3dQcm9wcyIsIl9vYmoiLCJfb2JqMSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBc0Y7QUFDdEYsZ0NBQWdDLEdBQTZDO0FBQ3pDO0FBQ2U7QUFDd0I7QUFDSDtBQUNqQjtBQUN2RCxTQUFTZ0IsS0FBS0MsS0FBMEM7UUFBeENDLFVBQUZELE1BQUVDLFNBQVNDLG9CQUFYRixNQUFXRSxtQkFBbUJDLGFBQTlCSCxNQUE4Qkc7SUFDeEMsT0FBTyxXQUFXLEdBQUdqQiwyQ0FBS0EsQ0FBQ0UsMkNBQVNBLEVBQUU7UUFDbEMs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\n//# sourceURL=webpack-internal:///../../framework/esm-styleguide/dist/workspaces2/action-menu2/action-menu-button2.component.js\n\n}");
|
|
1963
|
+
eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n ActionMenuButton2: () => (ActionMenuButton2)\n});\n/* import */ var react_jsx_runtime__rspack_import_0 = __webpack_require__(\"../../../node_modules/react/jsx-runtime.js\");\n/* import */ var react__rspack_import_1 = __webpack_require__(\"webpack/sharing/consume/default/react/react\");\n/* import */ var react__rspack_import_1_default = /*#__PURE__*/__webpack_require__.n(react__rspack_import_1);\n/* import */ var classnames__rspack_import_2 = __webpack_require__(\"../../../node_modules/classnames/index.js\");\n/* import */ var classnames__rspack_import_2_default = /*#__PURE__*/__webpack_require__.n(classnames__rspack_import_2);\n/* import */ var _carbon_react__rspack_import_3 = __webpack_require__(\"webpack/sharing/consume/default/@carbon/react/@carbon/react\");\n/* import */ var _carbon_react__rspack_import_3_default = /*#__PURE__*/__webpack_require__.n(_carbon_react__rspack_import_3);\n/* import */ var _openmrs_esm_react_utils__rspack_import_4 = __webpack_require__(\"../../framework/esm-react-utils/dist/index.js\");\n/* import */ var _workspace2_js__rspack_import_5 = __webpack_require__(\"../../framework/esm-styleguide/dist/workspaces2/workspace2.js\");\n/* import */ var _action_menu_button2_module_scss__rspack_import_6 = __webpack_require__(\"../../framework/esm-styleguide/dist/workspaces2/action-menu2/action-menu-button2.module.scss\");\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 _ts_generator(thisArg, body) {\n var f, y, t, _ = {\n label: 0,\n sent: function() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n }, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype), d = Object.defineProperty;\n return d(g, \"next\", {\n value: verb(0)\n }), d(g, \"throw\", {\n value: verb(1)\n }), d(g, \"return\", {\n value: verb(2)\n }), typeof Symbol === \"function\" && d(g, Symbol.iterator, {\n value: function() {\n return this;\n }\n }), g;\n function verb(n) {\n return function(v) {\n return step([\n n,\n v\n ]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while(g && (g = 0, op[0] && (_ = 0)), _)try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [\n op[0] & 2,\n t.value\n ];\n switch(op[0]){\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [\n 0\n ];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [\n 6,\n e\n ];\n y = 0;\n } finally{\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n}\n\n/** @module @category Workspace */ \n\n\n\n\n\nfunction Tags(param) {\n var getIcon = param.getIcon, hasUnsavedChanges = param.hasUnsavedChanges, tagContent = param.tagContent;\n return /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsxs)(react_jsx_runtime__rspack_import_0.Fragment, {\n children: [\n getIcon({\n size: 16\n }),\n hasUnsavedChanges ? /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsx)(\"span\", {\n className: _action_menu_button2_module_scss__rspack_import_6[\"default\"].interruptedTag,\n children: \"!\"\n }) : /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsx)(\"span\", {\n className: _action_menu_button2_module_scss__rspack_import_6[\"default\"].countTag,\n children: tagContent\n })\n ]\n });\n}\n/**\n * The ActionMenuButton2 component is used to render a button in the action menu of a workspace group.\n * The button is associated with a specific workspace window, defined in routes.json of the app with the button.\n * When one or more workspaces within the window are opened, the button will be highlighted:\n * bold blue when the window is focused (un-minimized and in front), green when unfocused.\n * If any workspace in the window has unsaved changes, an exclamation mark will be displayed\n * on top of the icon.\n *\n * On clicked, The button either:\n * 1. hides the workspace window if it is opened and focused; or\n * 2. restores the workspace window if it is opened and unfocused; or\n * 3. launches a workspace from within that window, if the window is not opened.\n *\n */ var ActionMenuButton2 = function ActionMenuButton2(param) {\n var getIcon = param.icon, label = param.label, tagContent = param.tagContent, workspaceToLaunch = param.workspaceToLaunch, onBeforeWorkspaceLaunch = param.onBeforeWorkspaceLaunch;\n var _ref;\n var layout = (0,_openmrs_esm_react_utils__rspack_import_4.useLayoutType)();\n var _useWorkspace2Store = (0,_workspace2_js__rspack_import_5.useWorkspace2Store)(), openedWindows = _useWorkspace2Store.openedWindows, restoreWindow = _useWorkspace2Store.restoreWindow, hideWindow = _useWorkspace2Store.hideWindow, isMostRecentlyOpenedWindowHidden = _useWorkspace2Store.isMostRecentlyOpenedWindowHidden;\n var extension = (0,react__rspack_import_1.useContext)(_openmrs_esm_react_utils__rspack_import_4.ComponentContext).extension;\n var openedWindowIndex = openedWindows.findIndex(function(w) {\n return w.windowName === (extension === null || extension === void 0 ? void 0 : extension.extensionId);\n });\n // can be undefined if the window is not opened\n var window = openedWindows[openedWindowIndex];\n var isWindowOpened = window != null;\n var isWindowHidden = isWindowOpened && (openedWindowIndex < openedWindows.length - 1 || isMostRecentlyOpenedWindowHidden);\n var isWindowFocused = isWindowOpened && !isWindowHidden;\n var hasUnsavedChanges = (_ref = window === null || window === void 0 ? void 0 : window.openedWorkspaces.some(function(w) {\n return w.hasUnsavedChanges;\n })) !== null && _ref !== void 0 ? _ref : false;\n var onClick = function onClick() {\n return _async_to_generator(function() {\n var _ref, shouldLaunch, workspaceName, workspaceProps, windowProps;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n if (!isWindowOpened) return [\n 3,\n 1\n ];\n if (isWindowHidden) {\n restoreWindow(window.windowName);\n } else {\n hideWindow();\n }\n return [\n 3,\n 3\n ];\n case 1:\n return [\n 4,\n (_ref = onBeforeWorkspaceLaunch === null || onBeforeWorkspaceLaunch === void 0 ? void 0 : onBeforeWorkspaceLaunch()) !== null && _ref !== void 0 ? _ref : true\n ];\n case 2:\n shouldLaunch = _state.sent();\n if (shouldLaunch) {\n workspaceName = workspaceToLaunch.workspaceName, workspaceProps = workspaceToLaunch.workspaceProps, windowProps = workspaceToLaunch.windowProps;\n (0,_workspace2_js__rspack_import_5.launchWorkspace2)(workspaceName, workspaceProps, windowProps);\n }\n _state.label = 3;\n case 3:\n return [\n 2\n ];\n }\n });\n })();\n };\n if (layout === 'tablet' || layout === 'phone') {\n var _obj;\n return /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsxs)(_carbon_react__rspack_import_3.Button, {\n className: classnames__rspack_import_2_default()(_action_menu_button2_module_scss__rspack_import_6[\"default\"].container, (_obj = {}, _define_property(_obj, _action_menu_button2_module_scss__rspack_import_6[\"default\"].active, isWindowOpened && !isWindowFocused), _define_property(_obj, _action_menu_button2_module_scss__rspack_import_6[\"default\"].focused, isWindowFocused), _obj)),\n iconDescription: label,\n kind: \"ghost\",\n onClick: onClick,\n role: \"button\",\n tabIndex: 0,\n size: \"md\",\n children: [\n /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsx)(\"span\", {\n className: _action_menu_button2_module_scss__rspack_import_6[\"default\"].elementContainer,\n children: /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsx)(Tags, {\n hasUnsavedChanges: hasUnsavedChanges,\n getIcon: getIcon,\n tagContent: tagContent\n })\n }),\n /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsx)(\"span\", {\n children: label\n })\n ]\n });\n }\n var _obj1;\n return /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsx)(_carbon_react__rspack_import_3.IconButton, {\n align: \"left\",\n \"aria-label\": label,\n className: classnames__rspack_import_2_default()(_action_menu_button2_module_scss__rspack_import_6[\"default\"].container, (_obj1 = {}, _define_property(_obj1, _action_menu_button2_module_scss__rspack_import_6[\"default\"].active, isWindowOpened && !isWindowFocused), _define_property(_obj1, _action_menu_button2_module_scss__rspack_import_6[\"default\"].focused, isWindowFocused), _obj1)),\n enterDelayMs: 300,\n kind: \"ghost\",\n label: label,\n onClick: onClick,\n size: \"md\",\n children: /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsx)(\"div\", {\n className: _action_menu_button2_module_scss__rspack_import_6[\"default\"].elementContainer,\n children: /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsx)(Tags, {\n hasUnsavedChanges: hasUnsavedChanges,\n getIcon: getIcon,\n tagContent: tagContent\n })\n })\n });\n};\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbHRpbjpzd2MtbG9hZGVyIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9wYWNrYWdlcy9mcmFtZXdvcmsvZXNtLXN0eWxlZ3VpZGUvZGlzdC93b3Jrc3BhY2VzMi9hY3Rpb24tbWVudTIvYWN0aW9uLW1lbnUtYnV0dG9uMi5jb21wb25lbnQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uL2ZyYW1ld29yay9lc20tc3R5bGVndWlkZS9kaXN0L3dvcmtzcGFjZXMyL2FjdGlvbi1tZW51Mi9hY3Rpb24tbWVudS1idXR0b24yLmNvbXBvbmVudC5qcz80NTE4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzLCBGcmFnbWVudCBhcyBfRnJhZ21lbnQgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbi8qKiBAbW9kdWxlIEBjYXRlZ29yeSBXb3Jrc3BhY2UgKi8gaW1wb3J0IFJlYWN0LCB7IHVzZUNvbnRleHQgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gXCJjbGFzc25hbWVzXCI7XG5pbXBvcnQgeyBCdXR0b24sIEljb25CdXR0b24gfSBmcm9tIFwiQGNhcmJvbi9yZWFjdFwiO1xuaW1wb3J0IHsgQ29tcG9uZW50Q29udGV4dCwgdXNlTGF5b3V0VHlwZSB9IGZyb20gXCJAb3Blbm1ycy9lc20tcmVhY3QtdXRpbHNcIjtcbmltcG9ydCB7IGxhdW5jaFdvcmtzcGFjZTIsIHVzZVdvcmtzcGFjZTJTdG9yZSB9IGZyb20gXCIuLi93b3Jrc3BhY2UyLmpzXCI7XG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL2FjdGlvbi1tZW51LWJ1dHRvbjIubW9kdWxlLnNjc3NcIjtcbmZ1bmN0aW9uIFRhZ3MoeyBnZXRJY29uLCBoYXNVbnNhdmVkQ2hhbmdlcywgdGFnQ29udGVudCB9KSB7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gX2pzeHMoX0ZyYWdtZW50LCB7XG4gICAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgICAgICBnZXRJY29uKHtcbiAgICAgICAgICAgICAgICBzaXplOiAxNlxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBoYXNVbnNhdmVkQ2hhbmdlcyA/IC8qI19fUFVSRV9fKi8gX2pzeChcInNwYW5cIiwge1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogc3R5bGVzLmludGVycnVwdGVkVGFnLFxuICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBcIiFcIlxuICAgICAgICAgICAgfSkgOiAvKiNfX1BVUkVfXyovIF9qc3goXCJzcGFuXCIsIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6IHN0eWxlcy5jb3VudFRhZyxcbiAgICAgICAgICAgICAgICBjaGlsZHJlbjogdGFnQ29udGVudFxuICAgICAgICAgICAgfSlcbiAgICAgICAgXVxuICAgIH0pO1xufVxuLyoqXG4gKiBUaGUgQWN0aW9uTWVudUJ1dHRvbjIgY29tcG9uZW50IGlzIHVzZWQgdG8gcmVuZGVyIGEgYnV0dG9uIGluIHRoZSBhY3Rpb24gbWVudSBvZiBhIHdvcmtzcGFjZSBncm91cC5cbiAqIFRoZSBidXR0b24gaXMgYXNzb2NpYXRlZCB3aXRoIGEgc3BlY2lmaWMgd29ya3NwYWNlIHdpbmRvdywgZGVmaW5lZCBpbiByb3V0ZXMuanNvbiBvZiB0aGUgYXBwIHdpdGggdGhlIGJ1dHRvbi5cbiAqIFdoZW4gb25lIG9yIG1vcmUgd29ya3NwYWNlcyB3aXRoaW4gdGhlIHdpbmRvdyBhcmUgb3BlbmVkLCB0aGUgYnV0dG9uIHdpbGwgYmUgaGlnaGxpZ2h0ZWQ6XG4gKiBib2xkIGJsdWUgd2hlbiB0aGUgd2luZG93IGlzIGZvY3VzZWQgKHVuLW1pbmltaXplZCBhbmQgaW4gZnJvbnQpLCBncmVlbiB3aGVuIHVuZm9jdXNlZC5cbiAqIElmIGFueSB3b3Jrc3BhY2UgaW4gdGhlIHdpbmRvdyBoYXMgdW5zYXZlZCBjaGFuZ2VzLCBhbiBleGNsYW1hdGlvbiBtYXJrIHdpbGwgYmUgZGlzcGxheWVkXG4gKiBvbiB0b3Agb2YgdGhlIGljb24uXG4gKlxuICogT24gY2xpY2tlZCwgVGhlIGJ1dHRvbiBlaXRoZXI6XG4gKiAxLiBoaWRlcyB0aGUgd29ya3NwYWNlIHdpbmRvdyBpZiBpdCBpcyBvcGVuZWQgYW5kIGZvY3VzZWQ7IG9yXG4gKiAyLiByZXN0b3JlcyB0aGUgd29ya3NwYWNlIHdpbmRvdyBpZiBpdCBpcyBvcGVuZWQgYW5kIHVuZm9jdXNlZDsgb3JcbiAqIDMuIGxhdW5jaGVzIGEgd29ya3NwYWNlIGZyb20gd2l0aGluIHRoYXQgd2luZG93LCBpZiB0aGUgd2luZG93IGlzIG5vdCBvcGVuZWQuXG4gKlxuICovIGV4cG9ydCBjb25zdCBBY3Rpb25NZW51QnV0dG9uMiA9ICh7IGljb246IGdldEljb24sIGxhYmVsLCB0YWdDb250ZW50LCB3b3Jrc3BhY2VUb0xhdW5jaCwgb25CZWZvcmVXb3Jrc3BhY2VMYXVuY2ggfSk9PntcbiAgICBjb25zdCBsYXlvdXQgPSB1c2VMYXlvdXRUeXBlKCk7XG4gICAgY29uc3QgeyBvcGVuZWRXaW5kb3dzLCByZXN0b3JlV2luZG93LCBoaWRlV2luZG93LCBpc01vc3RSZWNlbnRseU9wZW5lZFdpbmRvd0hpZGRlbiB9ID0gdXNlV29ya3NwYWNlMlN0b3JlKCk7XG4gICAgY29uc3QgeyBleHRlbnNpb24gfSA9IHVzZUNvbnRleHQoQ29tcG9uZW50Q29udGV4dCk7XG4gICAgY29uc3Qgb3BlbmVkV2luZG93SW5kZXggPSBvcGVuZWRXaW5kb3dzLmZpbmRJbmRleCgodyk9Pncud2luZG93TmFtZSA9PT0gZXh0ZW5zaW9uPy5leHRlbnNpb25JZCk7XG4gICAgLy8gY2FuIGJlIHVuZGVmaW5lZCBpZiB0aGUgd2luZG93IGlzIG5vdCBvcGVuZWRcbiAgICBjb25zdCB3aW5kb3cgPSBvcGVuZWRXaW5kb3dzW29wZW5lZFdpbmRvd0luZGV4XTtcbiAgICBjb25zdCBpc1dpbmRvd09wZW5lZCA9IHdpbmRvdyAhPSBudWxsO1xuICAgIGNvbnN0IGlzV2luZG93SGlkZGVuID0gaXNXaW5kb3dPcGVuZWQgJiYgKG9wZW5lZFdpbmRvd0luZGV4IDwgb3BlbmVkV2luZG93cy5sZW5ndGggLSAxIHx8IGlzTW9zdFJlY2VudGx5T3BlbmVkV2luZG93SGlkZGVuKTtcbiAgICBjb25zdCBpc1dpbmRvd0ZvY3VzZWQgPSBpc1dpbmRvd09wZW5lZCAmJiAhaXNXaW5kb3dIaWRkZW47XG4gICAgY29uc3QgaGFzVW5zYXZlZENoYW5nZXMgPSB3aW5kb3c/Lm9wZW5lZFdvcmtzcGFjZXMuc29tZSgodyk9PncuaGFzVW5zYXZlZENoYW5nZXMpID8/IGZhbHNlO1xuICAgIGNvbnN0IG9uQ2xpY2sgPSBhc3luYyAoKT0+e1xuICAgICAgICBpZiAoaXNXaW5kb3dPcGVuZWQpIHtcbiAgICAgICAgICAgIGlmIChpc1dpbmRvd0hpZGRlbikge1xuICAgICAgICAgICAgICAgIHJlc3RvcmVXaW5kb3cod2luZG93LndpbmRvd05hbWUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBoaWRlV2luZG93KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBzaG91bGRMYXVuY2ggPSBhd2FpdCAob25CZWZvcmVXb3Jrc3BhY2VMYXVuY2g/LigpID8/IHRydWUpO1xuICAgICAgICAgICAgaWYgKHNob3VsZExhdW5jaCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgd29ya3NwYWNlTmFtZSwgd29ya3NwYWNlUHJvcHMsIHdpbmRvd1Byb3BzIH0gPSB3b3Jrc3BhY2VUb0xhdW5jaDtcbiAgICAgICAgICAgICAgICBsYXVuY2hXb3Jrc3BhY2UyKHdvcmtzcGFjZU5hbWUsIHdvcmtzcGFjZVByb3BzLCB3aW5kb3dQcm9wcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIGlmIChsYXlvdXQgPT09ICd0YWJsZXQnIHx8IGxheW91dCA9PT0gJ3Bob25lJykge1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qLyBfanN4cyhCdXR0b24sIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lcyhzdHlsZXMuY29udGFpbmVyLCB7XG4gICAgICAgICAgICAgICAgW3N0eWxlcy5hY3RpdmVdOiBpc1dpbmRvd09wZW5lZCAmJiAhaXNXaW5kb3dGb2N1c2VkLFxuICAgICAgICAgICAgICAgIFtzdHlsZXMuZm9jdXNlZF06IGlzV2luZG93Rm9jdXNlZFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBpY29uRGVzY3JpcHRpb246IGxhYmVsLFxuICAgICAgICAgICAga2luZDogXCJnaG9zdFwiLFxuICAgICAgICAgICAgb25DbGljazogb25DbGljayxcbiAgICAgICAgICAgIHJvbGU6IFwiYnV0dG9uXCIsXG4gICAgICAgICAgICB0YWJJbmRleDogMCxcbiAgICAgICAgICAgIHNpemU6IFwibWRcIixcbiAgICAgICAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgICAgICAgICAgLyojX19QVVJFX18qLyBfanN4KFwic3BhblwiLCB7XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogc3R5bGVzLmVsZW1lbnRDb250YWluZXIsXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiAvKiNfX1BVUkVfXyovIF9qc3goVGFncywge1xuICAgICAgICAgICAgICAgICAgICAgICAgaGFzVW5zYXZlZENoYW5nZXM6IGhhc1Vuc2F2ZWRDaGFuZ2VzLFxuICAgICAgICAgICAgICAgICAgICAgICAgZ2V0SWNvbjogZ2V0SWNvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhZ0NvbnRlbnQ6IHRhZ0NvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAvKiNfX1BVUkVfXyovIF9qc3goXCJzcGFuXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IGxhYmVsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIF1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiAvKiNfX1BVUkVfXyovIF9qc3goSWNvbkJ1dHRvbiwge1xuICAgICAgICBhbGlnbjogXCJsZWZ0XCIsXG4gICAgICAgIFwiYXJpYS1sYWJlbFwiOiBsYWJlbCxcbiAgICAgICAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKHN0eWxlcy5jb250YWluZXIsIHtcbiAgICAgICAgICAgIFtzdHlsZXMuYWN0aXZlXTogaXNXaW5kb3dPcGVuZWQgJiYgIWlzV2luZG93Rm9jdXNlZCxcbiAgICAgICAgICAgIFtzdHlsZXMuZm9jdXNlZF06IGlzV2luZG93Rm9jdXNlZFxuICAgICAgICB9KSxcbiAgICAgICAgZW50ZXJEZWxheU1zOiAzMDAsXG4gICAgICAgIGtpbmQ6IFwiZ2hvc3RcIixcbiAgICAgICAgbGFiZWw6IGxhYmVsLFxuICAgICAgICBvbkNsaWNrOiBvbkNsaWNrLFxuICAgICAgICBzaXplOiBcIm1kXCIsXG4gICAgICAgIGNoaWxkcmVuOiAvKiNfX1BVUkVfXyovIF9qc3goXCJkaXZcIiwge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiBzdHlsZXMuZWxlbWVudENvbnRhaW5lcixcbiAgICAgICAgICAgIGNoaWxkcmVuOiAvKiNfX1BVUkVfXyovIF9qc3goVGFncywge1xuICAgICAgICAgICAgICAgIGhhc1Vuc2F2ZWRDaGFuZ2VzOiBoYXNVbnNhdmVkQ2hhbmdlcyxcbiAgICAgICAgICAgICAgICBnZXRJY29uOiBnZXRJY29uLFxuICAgICAgICAgICAgICAgIHRhZ0NvbnRlbnQ6IHRhZ0NvbnRlbnRcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0pXG4gICAgfSk7XG59O1xuIl0sIm5hbWVzIjpbImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsIlJlYWN0IiwidXNlQ29udGV4dCIsImNsYXNzTmFtZXMiLCJCdXR0b24iLCJJY29uQnV0dG9uIiwiQ29tcG9uZW50Q29udGV4dCIsInVzZUxheW91dFR5cGUiLCJsYXVuY2hXb3Jrc3BhY2UyIiwidXNlV29ya3NwYWNlMlN0b3JlIiwic3R5bGVzIiwiVGFncyIsInBhcmFtIiwiZ2V0SWNvbiIsImhhc1Vuc2F2ZWRDaGFuZ2VzIiwidGFnQ29udGVudCIsIkFjdGlvbk1lbnVCdXR0b24yIiwibGFiZWwiLCJ3b3Jrc3BhY2VUb0xhdW5jaCIsIm9uQmVmb3JlV29ya3NwYWNlTGF1bmNoIiwibGF5b3V0IiwiX3VzZVdvcmtzcGFjZTJTdG9yZSIsIm9wZW5lZFdpbmRvd3MiLCJyZXN0b3JlV2luZG93IiwiaGlkZVdpbmRvdyIsImlzTW9zdFJlY2VudGx5T3BlbmVkV2luZG93SGlkZGVuIiwiZXh0ZW5zaW9uIiwib3BlbmVkV2luZG93SW5kZXgiLCJ3Iiwid2luZG93IiwiaXNXaW5kb3dPcGVuZWQiLCJpc1dpbmRvd0hpZGRlbiIsImlzV2luZG93Rm9jdXNlZCIsIm9uQ2xpY2siLCJzaG91bGRMYXVuY2giLCJ3b3Jrc3BhY2VOYW1lIiwid29ya3NwYWNlUHJvcHMiLCJ3aW5kb3dQcm9wcyIsIl9vYmoiLCJfb2JqMSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBc0Y7QUFDdEYsZ0NBQWdDLEdBQTZDO0FBQ3pDO0FBQ2U7QUFDd0I7QUFDSDtBQUNqQjtBQUN2RCxTQUFTZ0IsS0FBS0MsS0FBMEM7UUFBeENDLFVBQUZELE1BQUVDLFNBQVNDLG9CQUFYRixNQUFXRSxtQkFBbUJDLGFBQTlCSCxNQUE4Qkc7SUFDeEMsT0FBTyxXQUFXLEdBQUdqQiwyQ0FBS0EsQ0FBQ0UsMkNBQVNBLEVBQUU7UUFDbEMsVUFBVTtZQUNOYSxRQUFRO2dC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\n//# sourceURL=webpack-internal:///../../framework/esm-styleguide/dist/workspaces2/action-menu2/action-menu-button2.component.js\n\n}");
|
|
1964
1964
|
|
|
1965
1965
|
},
|
|
1966
1966
|
"../../framework/esm-styleguide/dist/workspaces2/action-menu2/action-menu2.component.js"(__unused_rspack_module, __webpack_exports__, __webpack_require__) {
|
|
@@ -1990,12 +1990,12 @@ eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webp
|
|
|
1990
1990
|
},
|
|
1991
1991
|
"../../framework/esm-styleguide/dist/workspaces2/workspace2.component.js"(__unused_rspack_module, __webpack_exports__, __webpack_require__) {
|
|
1992
1992
|
"use strict";
|
|
1993
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n Workspace2: () => (Workspace2)\n});\n/* import */ var react_jsx_runtime__rspack_import_0 = __webpack_require__(\"../../../node_modules/react/jsx-runtime.js\");\n/* import */ var react__rspack_import_1 = __webpack_require__(\"webpack/sharing/consume/default/react/react\");\n/* import */ var react__rspack_import_1_default = /*#__PURE__*/__webpack_require__.n(react__rspack_import_1);\n/* import */ var classnames__rspack_import_2 = __webpack_require__(\"../../../node_modules/classnames/index.js\");\n/* import */ var classnames__rspack_import_2_default = /*#__PURE__*/__webpack_require__.n(classnames__rspack_import_2);\n/* import */ var _carbon_react__rspack_import_3 = __webpack_require__(\"webpack/sharing/consume/default/@carbon/react/@carbon/react\");\n/* import */ var _carbon_react__rspack_import_3_default = /*#__PURE__*/__webpack_require__.n(_carbon_react__rspack_import_3);\n/* import */ var _carbon_react_icons__rspack_import_10 = __webpack_require__(\"../../../node_modules/@carbon/icons-react/es/generated/bucket-11.js\");\n/* import */ var _carbon_react_icons__rspack_import_11 = __webpack_require__(\"../../../node_modules/@carbon/icons-react/es/generated/bucket-6.js\");\n/* import */ var _openmrs_esm_react_utils__rspack_import_4 = __webpack_require__(\"../../framework/esm-react-utils/dist/index.js\");\n/* import */ var _openmrs_esm_translations__rspack_import_5 = __webpack_require__(\"../../framework/esm-translations/dist/index.js\");\n/* import */ var _openmrs_esm_extensions__rspack_import_6 = __webpack_require__(\"../../framework/esm-extensions/dist/index.js\");\n/* import */ var _icons_index_js__rspack_import_7 = __webpack_require__(\"../../framework/esm-styleguide/dist/icons/index.js\");\n/* import */ var _workspace2_js__rspack_import_8 = __webpack_require__(\"../../framework/esm-styleguide/dist/workspaces2/workspace2.js\");\n/* import */ var _workspace2_module_scss__rspack_import_9 = __webpack_require__(\"../../framework/esm-styleguide/dist/workspaces2/workspace2.module.scss\");\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}\n\n\n\n\n\n\n\n\n\n\n\n/**\n * The Workspace2 component is used as a top-level container to render\n * its children as content within a workspace. When creating a workspace\n * component, `<Workspace2>` should be the top-level component returned,\n * wrapping all of the workspace content.\n * @experimental\n */ var Workspace2 = function Workspace2(param) {\n var title = param.title, children = param.children, _param_hasUnsavedChanges = param.hasUnsavedChanges, hasUnsavedChanges = _param_hasUnsavedChanges === void 0 ? false : _param_hasUnsavedChanges;\n var _ref;\n var layout = (0,_openmrs_esm_react_utils__rspack_import_4.useLayoutType)();\n var _useWorkspace2Store = (0,_workspace2_js__rspack_import_8.useWorkspace2Store)(), setWindowMaximized = _useWorkspace2Store.setWindowMaximized, hideWindow = _useWorkspace2Store.hideWindow, setHasUnsavedChanges = _useWorkspace2Store.setHasUnsavedChanges, openedWindows = _useWorkspace2Store.openedWindows, openedGroup = _useWorkspace2Store.openedGroup, registeredGroupsByName = _useWorkspace2Store.registeredGroupsByName, registeredWindowsByName = _useWorkspace2Store.registeredWindowsByName, registeredWorkspacesByName = _useWorkspace2Store.registeredWorkspacesByName, workspaceTitleByWorkspaceName = _useWorkspace2Store.workspaceTitleByWorkspaceName, setWorkspaceTitle = _useWorkspace2Store.setWorkspaceTitle, isMostRecentlyOpenedWindowHidden = _useWorkspace2Store.isMostRecentlyOpenedWindowHidden;\n var _useWorkspace2Context = (0,_workspace2_js__rspack_import_8.useWorkspace2Context)(), workspaceName = _useWorkspace2Context.workspaceName, isRootWorkspace = _useWorkspace2Context.isRootWorkspace, closeWorkspace = _useWorkspace2Context.closeWorkspace, showActionMenu = _useWorkspace2Context.showActionMenu;\n var openedWindowIndex = (0,_openmrs_esm_extensions__rspack_import_6.getOpenedWindowIndexByWorkspace)(workspaceName);\n var openedWindow = openedWindows[openedWindowIndex];\n var openedWorkspace = openedWindow === null || openedWindow === void 0 ? void 0 : openedWindow.openedWorkspaces.find(function(workspace) {\n return workspace.workspaceName === workspaceName;\n });\n (0,react__rspack_import_1.useEffect)(function() {\n if ((openedWorkspace === null || openedWorkspace === void 0 ? void 0 : openedWorkspace.hasUnsavedChanges) != hasUnsavedChanges) {\n setHasUnsavedChanges(workspaceName, hasUnsavedChanges !== null && hasUnsavedChanges !== void 0 ? hasUnsavedChanges : false);\n }\n }, [\n openedWorkspace === null || openedWorkspace === void 0 ? void 0 : openedWorkspace.hasUnsavedChanges,\n hasUnsavedChanges,\n workspaceName,\n setHasUnsavedChanges\n ]);\n (0,react__rspack_import_1.useEffect)(function() {\n if (workspaceTitleByWorkspaceName[workspaceName] !== title) {\n setWorkspaceTitle(workspaceName, title);\n }\n }, [\n workspaceTitleByWorkspaceName,\n workspaceName,\n title,\n setWorkspaceTitle\n ]);\n if (openedWindowIndex < 0 || openedGroup == null || openedWorkspace == null) {\n // workspace window / group has likely just closed\n return null;\n }\n var group = registeredGroupsByName[openedGroup.groupName];\n if (!group) {\n throw new Error(\"Cannot find registered workspace group \".concat(openedGroup.groupName));\n }\n var workspaceDef = registeredWorkspacesByName[workspaceName];\n var windowName = workspaceDef.window;\n var windowDef = registeredWindowsByName[windowName];\n if (!windowDef) {\n throw new Error(\"Cannot find registered workspace window \".concat(windowName));\n }\n var icon = windowDef.icon, canMaximize = windowDef.canMaximize;\n var canCloseGroup = group.persistence === 'closable';\n var canHide = !!icon && !canCloseGroup;\n var maximized = openedWindow.maximized;\n var width = (_ref = windowDef === null || windowDef === void 0 ? void 0 : windowDef.width) !== null && _ref !== void 0 ? _ref : 'narrow';\n var isActionMenuOpened = Object.values(registeredWindowsByName).some(function(window) {\n return window.group === openedGroup.groupName && window.icon !== undefined;\n });\n var isWindowHidden = openedWindowIndex < openedWindows.length - 1 || isMostRecentlyOpenedWindowHidden;\n var _obj, _obj1, _obj2;\n return /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsxs)(\"div\", {\n className: classnames__rspack_import_2_default()(_workspace2_module_scss__rspack_import_9[\"default\"].workspaceOuterContainer, (_obj = {}, _define_property(_obj, _workspace2_module_scss__rspack_import_9[\"default\"].narrowWorkspace, width === 'narrow'), _define_property(_obj, _workspace2_module_scss__rspack_import_9[\"default\"].widerWorkspace, width === 'wider'), _define_property(_obj, _workspace2_module_scss__rspack_import_9[\"default\"].extraWideWorkspace, width === 'extra-wide'), _define_property(_obj, _workspace2_module_scss__rspack_import_9[\"default\"].isActionMenuOpened, isActionMenuOpened), _obj)),\n children: [\n /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsx)(\"div\", {\n className: classnames__rspack_import_2_default()(_workspace2_module_scss__rspack_import_9[\"default\"].workspaceSpacer, _define_property({}, _workspace2_module_scss__rspack_import_9[\"default\"].hidden, isWindowHidden))\n }),\n /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsx)(\"div\", {\n className: classnames__rspack_import_2_default()(_workspace2_module_scss__rspack_import_9[\"default\"].workspaceMiddleContainer, (_obj1 = {}, _define_property(_obj1, _workspace2_module_scss__rspack_import_9[\"default\"].maximized, maximized), _define_property(_obj1, _workspace2_module_scss__rspack_import_9[\"default\"].hidden, isWindowHidden), _define_property(_obj1, _workspace2_module_scss__rspack_import_9[\"default\"].isRootWorkspace, isRootWorkspace), _define_property(_obj1, _workspace2_module_scss__rspack_import_9[\"default\"].showActionMenu, showActionMenu), _obj1)),\n children: /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsxs)(\"div\", {\n className: classnames__rspack_import_2_default()(_workspace2_module_scss__rspack_import_9[\"default\"].workspaceInnerContainer, (_obj2 = {}, _define_property(_obj2, _workspace2_module_scss__rspack_import_9[\"default\"].maximized, maximized), _define_property(_obj2, _workspace2_module_scss__rspack_import_9[\"default\"].hidden, isWindowHidden), _define_property(_obj2, _workspace2_module_scss__rspack_import_9[\"default\"].isRootWorkspace, isRootWorkspace), _obj2)),\n children: [\n /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsxs)(_carbon_react__rspack_import_3.Header, {\n \"aria-label\": (0,_openmrs_esm_translations__rspack_import_5.getCoreTranslation)('workspaceHeader'),\n className: _workspace2_module_scss__rspack_import_9[\"default\"].header,\n children: [\n /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsx)(_carbon_react__rspack_import_3.HeaderName, {\n prefix: \"\",\n children: title\n }),\n /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsx)(\"div\", {\n className: _workspace2_module_scss__rspack_import_9[\"default\"].overlayHeaderSpacer\n }),\n /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsx)(_carbon_react__rspack_import_3.HeaderGlobalBar, {\n className: _workspace2_module_scss__rspack_import_9[\"default\"].headerButtons,\n children: (0,_openmrs_esm_react_utils__rspack_import_4.isDesktop)(layout) ? /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsxs)(react_jsx_runtime__rspack_import_0.Fragment, {\n children: [\n (canMaximize || maximized) && /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsx)(_carbon_react__rspack_import_3.HeaderGlobalAction, {\n \"aria-label\": maximized ? (0,_openmrs_esm_translations__rspack_import_5.getCoreTranslation)('minimize') : (0,_openmrs_esm_translations__rspack_import_5.getCoreTranslation)('maximize'),\n onClick: function onClick() {\n return setWindowMaximized(windowName, !maximized);\n },\n children: maximized ? /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsx)(_carbon_react_icons__rspack_import_10.Minimize, {}) : /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsx)(_carbon_react_icons__rspack_import_10.Maximize, {})\n }),\n canHide && /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsx)(_carbon_react__rspack_import_3.HeaderGlobalAction, {\n \"aria-label\": (0,_openmrs_esm_translations__rspack_import_5.getCoreTranslation)('hide'),\n onClick: function onClick() {\n return hideWindow();\n },\n children: /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsx)(_icons_index_js__rspack_import_7.ArrowRightIcon, {})\n }),\n !canCloseGroup && /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsx)(_carbon_react__rspack_import_3.HeaderGlobalAction, {\n \"aria-label\": (0,_openmrs_esm_translations__rspack_import_5.getCoreTranslation)('close'),\n onClick: function onClick() {\n return closeWorkspace({\n closeWindow: true\n });\n },\n children: /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsx)(_icons_index_js__rspack_import_7.CloseIcon, {})\n })\n ]\n }) : /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsxs)(react_jsx_runtime__rspack_import_0.Fragment, {\n children: [\n canHide && /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsx)(_carbon_react__rspack_import_3.HeaderGlobalAction, {\n \"aria-label\": (0,_openmrs_esm_translations__rspack_import_5.getCoreTranslation)('hide'),\n onClick: function onClick() {\n return hideWindow();\n },\n children: /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsx)(_carbon_react_icons__rspack_import_11.DownToBottom, {})\n }),\n /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsx)(_carbon_react__rspack_import_3.HeaderGlobalAction, {\n \"aria-label\": (0,_openmrs_esm_translations__rspack_import_5.getCoreTranslation)('close'),\n onClick: function onClick() {\n if (canCloseGroup) {\n (0,_workspace2_js__rspack_import_8.closeWorkspaceGroup2)();\n } else {\n closeWorkspace({\n closeWindow: true\n });\n }\n },\n children: /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsx)(_icons_index_js__rspack_import_7.CloseIcon, {})\n })\n ]\n })\n })\n ]\n }),\n /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsx)(\"div\", {\n className: classnames__rspack_import_2_default()(_workspace2_module_scss__rspack_import_9[\"default\"].workspaceContent),\n children: children\n })\n ]\n })\n })\n ]\n });\n};\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbHRpbjpzd2MtbG9hZGVyIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9wYWNrYWdlcy9mcmFtZXdvcmsvZXNtLXN0eWxlZ3VpZGUvZGlzdC93b3Jrc3BhY2VzMi93b3Jrc3BhY2UyLmNvbXBvbmVudC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi4vLi4vZnJhbWV3b3JrL2VzbS1zdHlsZWd1aWRlL2Rpc3Qvd29ya3NwYWNlczIvd29ya3NwYWNlMi5jb21wb25lbnQuanM/NzRhOCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cywgRnJhZ21lbnQgYXMgX0ZyYWdtZW50IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tIFwiY2xhc3NuYW1lc1wiO1xuaW1wb3J0IHsgSGVhZGVyLCBIZWFkZXJHbG9iYWxBY3Rpb24sIEhlYWRlckdsb2JhbEJhciwgSGVhZGVyTmFtZSB9IGZyb20gXCJAY2FyYm9uL3JlYWN0XCI7XG5pbXBvcnQgeyBEb3duVG9Cb3R0b20sIE1heGltaXplLCBNaW5pbWl6ZSB9IGZyb20gXCJAY2FyYm9uL3JlYWN0L2ljb25zXCI7XG5pbXBvcnQgeyBpc0Rlc2t0b3AsIHVzZUxheW91dFR5cGUgfSBmcm9tIFwiQG9wZW5tcnMvZXNtLXJlYWN0LXV0aWxzXCI7XG5pbXBvcnQgeyBnZXRDb3JlVHJhbnNsYXRpb24gfSBmcm9tIFwiQG9wZW5tcnMvZXNtLXRyYW5zbGF0aW9uc1wiO1xuaW1wb3J0IHsgZ2V0T3BlbmVkV2luZG93SW5kZXhCeVdvcmtzcGFjZSB9IGZyb20gXCJAb3Blbm1ycy9lc20tZXh0ZW5zaW9uc1wiO1xuaW1wb3J0IHsgQXJyb3dSaWdodEljb24sIENsb3NlSWNvbiB9IGZyb20gXCIuLi9pY29ucy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgdXNlV29ya3NwYWNlMlN0b3JlLCB1c2VXb3Jrc3BhY2UyQ29udGV4dCwgY2xvc2VXb3Jrc3BhY2VHcm91cDIgfSBmcm9tIFwiLi93b3Jrc3BhY2UyLmpzXCI7XG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL3dvcmtzcGFjZTIubW9kdWxlLnNjc3NcIjtcbi8qKlxuICogVGhlIFdvcmtzcGFjZTIgY29tcG9uZW50IGlzIHVzZWQgYXMgYSB0b3AtbGV2ZWwgY29udGFpbmVyIHRvIHJlbmRlclxuICogaXRzIGNoaWxkcmVuIGFzIGNvbnRlbnQgd2l0aGluIGEgd29ya3NwYWNlLiBXaGVuIGNyZWF0aW5nIGEgd29ya3NwYWNlXG4gKiBjb21wb25lbnQsIGA8V29ya3NwYWNlMj5gIHNob3VsZCBiZSB0aGUgdG9wLWxldmVsIGNvbXBvbmVudCByZXR1cm5lZCxcbiAqIHdyYXBwaW5nIGFsbCBvZiB0aGUgd29ya3NwYWNlIGNvbnRlbnQuXG4gKiBAZXhwZXJpbWVudGFsXG4gKi8gZXhwb3J0IGNvbnN0IFdvcmtzcGFjZTIgPSAoeyB0aXRsZSwgY2hpbGRyZW4sIGhhc1Vuc2F2ZWRDaGFuZ2VzID0gZmFsc2UgfSk9PntcbiAgICBjb25zdCBsYXlvdXQgPSB1c2VMYXlvdXRUeXBlKCk7XG4gICAgY29uc3QgeyBzZXRXaW5kb3dNYXhpbWl6ZWQsIGhpZGVXaW5kb3csIHNldEhhc1Vuc2F2ZWRDaGFuZ2VzLCBvcGVuZWRXaW5kb3dzLCBvcGVuZWRHcm91cCwgcmVnaXN0ZXJlZEdyb3Vwc0J5TmFtZSwgcmVnaXN0ZXJlZFdpbmRvd3NCeU5hbWUsIHJlZ2lzdGVyZWRXb3Jrc3BhY2VzQnlOYW1lLCB3b3Jrc3BhY2VUaXRsZUJ5V29ya3NwYWNlTmFtZSwgc2V0V29ya3NwYWNlVGl0bGUsIGlzTW9zdFJlY2VudGx5T3BlbmVkV2luZG93SGlkZGVuIH0gPSB1c2VXb3Jrc3BhY2UyU3RvcmUoKTtcbiAgICBjb25zdCB7IHdvcmtzcGFjZU5hbWUsIGlzUm9vdFdvcmtzcGFjZSwgY2xvc2VXb3Jrc3BhY2UsIHNob3dBY3Rpb25NZW51IH0gPSB1c2VXb3Jrc3BhY2UyQ29udGV4dCgpO1xuICAgIGNvbnN0IG9wZW5lZFdpbmRvd0luZGV4ID0gZ2V0T3BlbmVkV2luZG93SW5kZXhCeVdvcmtzcGFjZSh3b3Jrc3BhY2VOYW1lKTtcbiAgICBjb25zdCBvcGVuZWRXaW5kb3cgPSBvcGVuZWRXaW5kb3dzW29wZW5lZFdpbmRvd0luZGV4XTtcbiAgICBjb25zdCBvcGVuZWRXb3Jrc3BhY2UgPSBvcGVuZWRXaW5kb3c/Lm9wZW5lZFdvcmtzcGFjZXMuZmluZCgod29ya3NwYWNlKT0+d29ya3NwYWNlLndvcmtzcGFjZU5hbWUgPT09IHdvcmtzcGFjZU5hbWUpO1xuICAgIHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICBpZiAob3BlbmVkV29ya3NwYWNlPy5oYXNVbnNhdmVkQ2hhbmdlcyAhPSBoYXNVbnNhdmVkQ2hhbmdlcykge1xuICAgICAgICAgICAgc2V0SGFzVW5zYXZlZENoYW5nZXMod29ya3NwYWNlTmFtZSwgaGFzVW5zYXZlZENoYW5nZXMgPz8gZmFsc2UpO1xuICAgICAgICB9XG4gICAgfSwgW1xuICAgICAgICBvcGVuZWRXb3Jrc3BhY2U/Lmhhc1Vuc2F2ZWRDaGFuZ2VzLFxuICAgICAgICBoYXNVbnNhdmVkQ2hhbmdlcyxcbiAgICAgICAgd29ya3NwYWNlTmFtZSxcbiAgICAgICAgc2V0SGFzVW5zYXZlZENoYW5nZXNcbiAgICBdKTtcbiAgICB1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgaWYgKHdvcmtzcGFjZVRpdGxlQnlXb3Jrc3BhY2VOYW1lW3dvcmtzcGFjZU5hbWVdICE9PSB0aXRsZSkge1xuICAgICAgICAgICAgc2V0V29ya3NwYWNlVGl0bGUod29ya3NwYWNlTmFtZSwgdGl0bGUpO1xuICAgICAgICB9XG4gICAgfSwgW1xuICAgICAgICB3b3Jrc3BhY2VUaXRsZUJ5V29ya3NwYWNlTmFtZSxcbiAgICAgICAgd29ya3NwYWNlTmFtZSxcbiAgICAgICAgdGl0bGUsXG4gICAgICAgIHNldFdvcmtzcGFjZVRpdGxlXG4gICAgXSk7XG4gICAgaWYgKG9wZW5lZFdpbmRvd0luZGV4IDwgMCB8fCBvcGVuZWRHcm91cCA9PSBudWxsIHx8IG9wZW5lZFdvcmtzcGFjZSA9PSBudWxsKSB7XG4gICAgICAgIC8vIHdvcmtzcGFjZSB3aW5kb3cgLyBncm91cCBoYXMgbGlrZWx5IGp1c3QgY2xvc2VkXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBncm91cCA9IHJlZ2lzdGVyZWRHcm91cHNCeU5hbWVbb3BlbmVkR3JvdXAuZ3JvdXBOYW1lXTtcbiAgICBpZiAoIWdyb3VwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGZpbmQgcmVnaXN0ZXJlZCB3b3Jrc3BhY2UgZ3JvdXAgJHtvcGVuZWRHcm91cC5ncm91cE5hbWV9YCk7XG4gICAgfVxuICAgIGNvbnN0IHdvcmtzcGFjZURlZiA9IHJlZ2lzdGVyZWRXb3Jrc3BhY2VzQnlOYW1lW3dvcmtzcGFjZU5hbWVdO1xuICAgIGNvbnN0IHdpbmRvd05hbWUgPSB3b3Jrc3BhY2VEZWYud2luZG93O1xuICAgIGNvbnN0IHdpbmRvd0RlZiA9IHJlZ2lzdGVyZWRXaW5kb3dzQnlOYW1lW3dpbmRvd05hbWVdO1xuICAgIGlmICghd2luZG93RGVmKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGZpbmQgcmVnaXN0ZXJlZCB3b3Jrc3BhY2Ugd2luZG93ICR7d2luZG93TmFtZX1gKTtcbiAgICB9XG4gICAgY29uc3QgeyBpY29uLCBjYW5NYXhpbWl6ZSB9ID0gd2luZG93RGVmO1xuICAgIGNvbnN0IGNhbkNsb3NlR3JvdXAgPSBncm91cC5wZXJzaXN0ZW5jZSA9PT0gJ2Nsb3NhYmxlJztcbiAgICBjb25zdCBjYW5IaWRlID0gISFpY29uICYmICFjYW5DbG9zZUdyb3VwO1xuICAgIGNvbnN0IHsgbWF4aW1pemVkIH0gPSBvcGVuZWRXaW5kb3c7XG4gICAgY29uc3Qgd2lkdGggPSB3aW5kb3dEZWY/LndpZHRoID8/ICduYXJyb3cnO1xuICAgIGNvbnN0IGlzQWN0aW9uTWVudU9wZW5lZCA9IE9iamVjdC52YWx1ZXMocmVnaXN0ZXJlZFdpbmRvd3NCeU5hbWUpLnNvbWUoKHdpbmRvdyk9PndpbmRvdy5ncm91cCA9PT0gb3BlbmVkR3JvdXAuZ3JvdXBOYW1lICYmIHdpbmRvdy5pY29uICE9PSB1bmRlZmluZWQpO1xuICAgIGNvbnN0IGlzV2luZG93SGlkZGVuID0gb3BlbmVkV2luZG93SW5kZXggPCBvcGVuZWRXaW5kb3dzLmxlbmd0aCAtIDEgfHwgaXNNb3N0UmVjZW50bHlPcGVuZWRXaW5kb3dIaWRkZW47XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gX2pzeHMoXCJkaXZcIiwge1xuICAgICAgICBjbGFzc05hbWU6IGNsYXNzTmFtZXMoc3R5bGVzLndvcmtzcGFjZU91dGVyQ29udGFpbmVyLCB7XG4gICAgICAgICAgICBbc3R5bGVzLm5hcnJvd1dvcmtzcGFjZV06IHdpZHRoID09PSAnbmFycm93JyxcbiAgICAgICAgICAgIFtzdHlsZXMud2lkZXJXb3Jrc3BhY2VdOiB3aWR0aCA9PT0gJ3dpZGVyJyxcbiAgICAgICAgICAgIFtzdHlsZXMuZXh0cmFXaWRlV29ya3NwYWNlXTogd2lkdGggPT09ICdleHRyYS13aWRlJyxcbiAgICAgICAgICAgIFtzdHlsZXMuaXNBY3Rpb25NZW51T3BlbmVkXTogaXNBY3Rpb25NZW51T3BlbmVkXG4gICAgICAgIH0pLFxuICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAgICAgLyojX19QVVJFX18qLyBfanN4KFwiZGl2XCIsIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6IGNsYXNzTmFtZXMoc3R5bGVzLndvcmtzcGFjZVNwYWNlciwge1xuICAgICAgICAgICAgICAgICAgICBbc3R5bGVzLmhpZGRlbl06IGlzV2luZG93SGlkZGVuXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgLyojX19QVVJFX18qLyBfanN4KFwiZGl2XCIsIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6IGNsYXNzTmFtZXMoc3R5bGVzLndvcmtzcGFjZU1pZGRsZUNvbnRhaW5lciwge1xuICAgICAgICAgICAgICAgICAgICBbc3R5bGVzLm1heGltaXplZF06IG1heGltaXplZCxcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlcy5oaWRkZW5dOiBpc1dpbmRvd0hpZGRlbixcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlcy5pc1Jvb3RXb3Jrc3BhY2VdOiBpc1Jvb3RXb3Jrc3BhY2UsXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZXMuc2hvd0FjdGlvbk1lbnVdOiBzaG93QWN0aW9uTWVudVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGNoaWxkcmVuOiAvKiNfX1BVUkVfXyovIF9qc3hzKFwiZGl2XCIsIHtcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKHN0eWxlcy53b3Jrc3BhY2VJbm5lckNvbnRhaW5lciwge1xuICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlcy5tYXhpbWl6ZWRdOiBtYXhpbWl6ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGVzLmhpZGRlbl06IGlzV2luZG93SGlkZGVuLFxuICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlcy5pc1Jvb3RXb3Jrc3BhY2VdOiBpc1Jvb3RXb3Jrc3BhY2VcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAvKiNfX1BVUkVfXyovIF9qc3hzKEhlYWRlciwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiYXJpYS1sYWJlbFwiOiBnZXRDb3JlVHJhbnNsYXRpb24oJ3dvcmtzcGFjZUhlYWRlcicpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogc3R5bGVzLmhlYWRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiNfX1BVUkVfXyovIF9qc3goSGVhZGVyTmFtZSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4OiBcIlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IHRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiNfX1BVUkVfXyovIF9qc3goXCJkaXZcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBzdHlsZXMub3ZlcmxheUhlYWRlclNwYWNlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyojX19QVVJFX18qLyBfanN4KEhlYWRlckdsb2JhbEJhciwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBzdHlsZXMuaGVhZGVyQnV0dG9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBpc0Rlc2t0b3AobGF5b3V0KSA/IC8qI19fUFVSRV9fKi8gX2pzeHMoX0ZyYWdtZW50LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNhbk1heGltaXplIHx8IG1heGltaXplZCkgJiYgLyojX19QVVJFX18qLyBfanN4KEhlYWRlckdsb2JhbEFjdGlvbiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJhcmlhLWxhYmVsXCI6IG1heGltaXplZCA/IGdldENvcmVUcmFuc2xhdGlvbignbWluaW1pemUnKSA6IGdldENvcmVUcmFuc2xhdGlvbignbWF4aW1pemUnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s6ICgpPT5zZXRXaW5kb3dNYXhpbWl6ZWQod2luZG93TmFtZSwgIW1heGltaXplZCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbjogbWF4aW1pemVkID8gLyojX19QVVJFX18qLyBfanN4KE1pbmltaXplLCB7fSkgOiAvKiNfX1BVUkVfXyovIF9qc3goTWF4aW1pemUsIHt9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuSGlkZSAmJiAvKiNfX1BVUkVfXyovIF9qc3goSGVhZGVyR2xvYmFsQWN0aW9uLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImFyaWEtbGFiZWxcIjogZ2V0Q29yZVRyYW5zbGF0aW9uKCdoaWRlJyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrOiAoKT0+aGlkZVdpbmRvdygpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IC8qI19fUFVSRV9fKi8gX2pzeChBcnJvd1JpZ2h0SWNvbiwge30pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhY2FuQ2xvc2VHcm91cCAmJiAvKiNfX1BVUkVfXyovIF9qc3goSGVhZGVyR2xvYmFsQWN0aW9uLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImFyaWEtbGFiZWxcIjogZ2V0Q29yZVRyYW5zbGF0aW9uKCdjbG9zZScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljazogKCk9PmNsb3NlV29ya3NwYWNlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VXaW5kb3c6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiAvKiNfX1BVUkVfXyovIF9qc3goQ2xvc2VJY29uLCB7fSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSA6IC8qI19fUFVSRV9fKi8gX2pzeHMoX0ZyYWdtZW50LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuSGlkZSAmJiAvKiNfX1BVUkVfXyovIF9qc3goSGVhZGVyR2xvYmFsQWN0aW9uLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImFyaWEtbGFiZWxcIjogZ2V0Q29yZVRyYW5zbGF0aW9uKCdoaWRlJyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrOiAoKT0+aGlkZVdpbmRvdygpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IC8qI19fUFVSRV9fKi8gX2pzeChEb3duVG9Cb3R0b20sIHt9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyojX19QVVJFX18qLyBfanN4KEhlYWRlckdsb2JhbEFjdGlvbiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJhcmlhLWxhYmVsXCI6IGdldENvcmVUcmFuc2xhdGlvbignY2xvc2UnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s6ICgpPT57XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhbkNsb3NlR3JvdXApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VXb3Jrc3BhY2VHcm91cDIoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZVdvcmtzcGFjZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZVdpbmRvdzogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IC8qI19fUFVSRV9fKi8gX2pzeChDbG9zZUljb24sIHt9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAvKiNfX1BVUkVfXyovIF9qc3goXCJkaXZcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lcyhzdHlsZXMud29ya3NwYWNlQ29udGVudCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IGNoaWxkcmVuXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgIF1cbiAgICB9KTtcbn07XG4iXSwibmFtZXMiOlsianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwiUmVhY3QiLCJ1c2VFZmZlY3QiLCJjbGFzc05hbWVzIiwiSGVhZGVyIiwiSGVhZGVyR2xvYmFsQWN0aW9uIiwiSGVhZGVyR2xvYmFsQmFyIiwiSGVhZGVyTmFtZSIsIkRvd25Ub0JvdHRvbSIsIk1heGltaXplIiwiTWluaW1pemUiLCJpc0Rlc2t0b3AiLCJ1c2VMYXlvdXRUeXBlIiwiZ2V0Q29yZVRyYW5zbGF0aW9uIiwiZ2V0T3BlbmVkV2luZG93SW5kZXhCeVdvcmtzcGFjZSIsIkFycm93UmlnaHRJY29uIiwiQ2xvc2VJY29uIiwidXNlV29ya3NwYWNlMlN0b3JlIiwidXNlV29ya3NwYWNlMkNvbnRleHQiLCJjbG9zZVdvcmtzcGFjZUdyb3VwMiIsInN0eWxlcyIsIldvcmtzcGFjZTIiLCJ0aXRsZSIsImNoaWxkcmVuIiwiaGFzVW5zYXZlZENoYW5nZXMiLCJsYXlvdXQiLCJfdXNlV29ya3NwYWNlMlN0b3JlIiwic2V0V2luZG93TWF4aW1pemVkIiwiaGlkZVdpbmRvdyIsInNldEhhc1Vuc2F2ZWRDaGFuZ2VzIiwib3BlbmVkV2luZG93cyIsIm9wZW5lZEdyb3VwIiwicmVnaXN0ZXJlZEdyb3Vwc0J5TmFtZSIsInJlZ2lzdGVyZWRXaW5kb3dzQnlOYW1lIiwicmVnaXN0ZXJlZFdvcmtzcGFjZXNCeU5hbWUiLCJ3b3Jrc3BhY2VUaXRsZUJ5V29ya3NwYWNlTmFtZSIsInNldFdvcmtzcGFjZVRpdGxlIiwiaXNNb3N0UmVjZW50bHlPcGVuZWRXaW5kb3dIaWRkZW4iLCJfdXNlV29ya3NwYWNlMkNvbnRleHQiLCJ3b3Jrc3BhY2VOYW1lIiwiaXNSb290V29ya3NwYWNlIiwiY2xvc2VXb3Jrc3BhY2UiLCJzaG93QWN0aW9uTWVudSIsIm9wZW5lZFdpbmRvd0luZGV4Iiwib3BlbmVkV2luZG93Iiwib3BlbmVkV29ya3NwYWNlIiwid29ya3NwYWNlIiwiZ3JvdXAiLCJFcnJvciIsIndvcmtzcGFjZURlZiIsIndpbmRvd05hbWUiLCJ3aW5kb3dEZWYiLCJpY29uIiwiY2FuTWF4aW1pemUiLCJjYW5DbG9zZUdyb3VwIiwiY2FuSGlkZSIsIm1heGltaXplZCIsIndpZHRoIiwiaXNBY3Rpb25NZW51T3BlbmVkIiwiT2JqZWN0Iiwid2luZG93IiwidW5kZWZpbmVkIiwiaXNXaW5kb3dIaWRkZW4iLCJfb2JqIiwiX29iajEiLCJfb2JqMiIsIm9uQ2xpY2siXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQXNGO0FBQzdDO0FBQ0w7QUFDb0Q7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\n//# sourceURL=webpack-internal:///../../framework/esm-styleguide/dist/workspaces2/workspace2.component.js\n\n}");
|
|
1993
|
+
eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n Workspace2: () => (Workspace2)\n});\n/* import */ var react_jsx_runtime__rspack_import_0 = __webpack_require__(\"../../../node_modules/react/jsx-runtime.js\");\n/* import */ var react__rspack_import_1 = __webpack_require__(\"webpack/sharing/consume/default/react/react\");\n/* import */ var react__rspack_import_1_default = /*#__PURE__*/__webpack_require__.n(react__rspack_import_1);\n/* import */ var classnames__rspack_import_2 = __webpack_require__(\"../../../node_modules/classnames/index.js\");\n/* import */ var classnames__rspack_import_2_default = /*#__PURE__*/__webpack_require__.n(classnames__rspack_import_2);\n/* import */ var _carbon_react__rspack_import_3 = __webpack_require__(\"webpack/sharing/consume/default/@carbon/react/@carbon/react\");\n/* import */ var _carbon_react__rspack_import_3_default = /*#__PURE__*/__webpack_require__.n(_carbon_react__rspack_import_3);\n/* import */ var _carbon_react_icons__rspack_import_10 = __webpack_require__(\"../../../node_modules/@carbon/icons-react/es/generated/bucket-11.js\");\n/* import */ var _carbon_react_icons__rspack_import_11 = __webpack_require__(\"../../../node_modules/@carbon/icons-react/es/generated/bucket-6.js\");\n/* import */ var _openmrs_esm_react_utils__rspack_import_4 = __webpack_require__(\"../../framework/esm-react-utils/dist/index.js\");\n/* import */ var _openmrs_esm_translations__rspack_import_5 = __webpack_require__(\"../../framework/esm-translations/dist/index.js\");\n/* import */ var _openmrs_esm_extensions__rspack_import_6 = __webpack_require__(\"../../framework/esm-extensions/dist/index.js\");\n/* import */ var _icons_index_js__rspack_import_7 = __webpack_require__(\"../../framework/esm-styleguide/dist/icons/index.js\");\n/* import */ var _workspace2_js__rspack_import_8 = __webpack_require__(\"../../framework/esm-styleguide/dist/workspaces2/workspace2.js\");\n/* import */ var _workspace2_module_scss__rspack_import_9 = __webpack_require__(\"../../framework/esm-styleguide/dist/workspaces2/workspace2.module.scss\");\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}\n\n\n\n\n\n\n\n\n\n\n\n/**\n * The Workspace2 component is used as a top-level container to render\n * its children as content within a workspace. When creating a workspace\n * component, `<Workspace2>` should be the top-level component returned,\n * wrapping all of the workspace content.\n */ var Workspace2 = function Workspace2(param) {\n var title = param.title, children = param.children, _param_hasUnsavedChanges = param.hasUnsavedChanges, hasUnsavedChanges = _param_hasUnsavedChanges === void 0 ? false : _param_hasUnsavedChanges;\n var _ref;\n var layout = (0,_openmrs_esm_react_utils__rspack_import_4.useLayoutType)();\n var _useWorkspace2Store = (0,_workspace2_js__rspack_import_8.useWorkspace2Store)(), setWindowMaximized = _useWorkspace2Store.setWindowMaximized, hideWindow = _useWorkspace2Store.hideWindow, setHasUnsavedChanges = _useWorkspace2Store.setHasUnsavedChanges, openedWindows = _useWorkspace2Store.openedWindows, openedGroup = _useWorkspace2Store.openedGroup, registeredGroupsByName = _useWorkspace2Store.registeredGroupsByName, registeredWindowsByName = _useWorkspace2Store.registeredWindowsByName, registeredWorkspacesByName = _useWorkspace2Store.registeredWorkspacesByName, workspaceTitleByWorkspaceName = _useWorkspace2Store.workspaceTitleByWorkspaceName, setWorkspaceTitle = _useWorkspace2Store.setWorkspaceTitle, isMostRecentlyOpenedWindowHidden = _useWorkspace2Store.isMostRecentlyOpenedWindowHidden;\n var _useWorkspace2Context = (0,_workspace2_js__rspack_import_8.useWorkspace2Context)(), workspaceName = _useWorkspace2Context.workspaceName, isRootWorkspace = _useWorkspace2Context.isRootWorkspace, closeWorkspace = _useWorkspace2Context.closeWorkspace, showActionMenu = _useWorkspace2Context.showActionMenu;\n var openedWindowIndex = (0,_openmrs_esm_extensions__rspack_import_6.getOpenedWindowIndexByWorkspace)(workspaceName);\n var openedWindow = openedWindows[openedWindowIndex];\n var openedWorkspace = openedWindow === null || openedWindow === void 0 ? void 0 : openedWindow.openedWorkspaces.find(function(workspace) {\n return workspace.workspaceName === workspaceName;\n });\n (0,react__rspack_import_1.useEffect)(function() {\n if ((openedWorkspace === null || openedWorkspace === void 0 ? void 0 : openedWorkspace.hasUnsavedChanges) != hasUnsavedChanges) {\n setHasUnsavedChanges(workspaceName, hasUnsavedChanges !== null && hasUnsavedChanges !== void 0 ? hasUnsavedChanges : false);\n }\n }, [\n openedWorkspace === null || openedWorkspace === void 0 ? void 0 : openedWorkspace.hasUnsavedChanges,\n hasUnsavedChanges,\n workspaceName,\n setHasUnsavedChanges\n ]);\n (0,react__rspack_import_1.useEffect)(function() {\n if (workspaceTitleByWorkspaceName[workspaceName] !== title) {\n setWorkspaceTitle(workspaceName, title);\n }\n }, [\n workspaceTitleByWorkspaceName,\n workspaceName,\n title,\n setWorkspaceTitle\n ]);\n if (openedWindowIndex < 0 || openedGroup == null || openedWorkspace == null) {\n // workspace window / group has likely just closed\n return null;\n }\n var group = registeredGroupsByName[openedGroup.groupName];\n if (!group) {\n throw new Error(\"Cannot find registered workspace group \".concat(openedGroup.groupName));\n }\n var workspaceDef = registeredWorkspacesByName[workspaceName];\n var windowName = workspaceDef.window;\n var windowDef = registeredWindowsByName[windowName];\n if (!windowDef) {\n throw new Error(\"Cannot find registered workspace window \".concat(windowName));\n }\n var icon = windowDef.icon, canMaximize = windowDef.canMaximize;\n var canCloseGroup = group.persistence === 'closable';\n var canHide = !!icon && !canCloseGroup;\n var maximized = openedWindow.maximized;\n var width = (_ref = windowDef === null || windowDef === void 0 ? void 0 : windowDef.width) !== null && _ref !== void 0 ? _ref : 'narrow';\n var isActionMenuOpened = Object.values(registeredWindowsByName).some(function(window) {\n return window.group === openedGroup.groupName && window.icon !== undefined;\n });\n var isWindowHidden = openedWindowIndex < openedWindows.length - 1 || isMostRecentlyOpenedWindowHidden;\n var _obj, _obj1, _obj2;\n return /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsxs)(\"div\", {\n className: classnames__rspack_import_2_default()(_workspace2_module_scss__rspack_import_9[\"default\"].workspaceOuterContainer, (_obj = {}, _define_property(_obj, _workspace2_module_scss__rspack_import_9[\"default\"].narrowWorkspace, width === 'narrow'), _define_property(_obj, _workspace2_module_scss__rspack_import_9[\"default\"].widerWorkspace, width === 'wider'), _define_property(_obj, _workspace2_module_scss__rspack_import_9[\"default\"].extraWideWorkspace, width === 'extra-wide'), _define_property(_obj, _workspace2_module_scss__rspack_import_9[\"default\"].isActionMenuOpened, isActionMenuOpened), _obj)),\n children: [\n /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsx)(\"div\", {\n className: classnames__rspack_import_2_default()(_workspace2_module_scss__rspack_import_9[\"default\"].workspaceSpacer, _define_property({}, _workspace2_module_scss__rspack_import_9[\"default\"].hidden, isWindowHidden))\n }),\n /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsx)(\"div\", {\n className: classnames__rspack_import_2_default()(_workspace2_module_scss__rspack_import_9[\"default\"].workspaceMiddleContainer, (_obj1 = {}, _define_property(_obj1, _workspace2_module_scss__rspack_import_9[\"default\"].maximized, maximized), _define_property(_obj1, _workspace2_module_scss__rspack_import_9[\"default\"].hidden, isWindowHidden), _define_property(_obj1, _workspace2_module_scss__rspack_import_9[\"default\"].isRootWorkspace, isRootWorkspace), _define_property(_obj1, _workspace2_module_scss__rspack_import_9[\"default\"].showActionMenu, showActionMenu), _obj1)),\n children: /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsxs)(\"div\", {\n className: classnames__rspack_import_2_default()(_workspace2_module_scss__rspack_import_9[\"default\"].workspaceInnerContainer, (_obj2 = {}, _define_property(_obj2, _workspace2_module_scss__rspack_import_9[\"default\"].maximized, maximized), _define_property(_obj2, _workspace2_module_scss__rspack_import_9[\"default\"].hidden, isWindowHidden), _define_property(_obj2, _workspace2_module_scss__rspack_import_9[\"default\"].isRootWorkspace, isRootWorkspace), _obj2)),\n children: [\n /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsxs)(_carbon_react__rspack_import_3.Header, {\n \"aria-label\": (0,_openmrs_esm_translations__rspack_import_5.getCoreTranslation)('workspaceHeader'),\n className: _workspace2_module_scss__rspack_import_9[\"default\"].header,\n children: [\n /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsx)(_carbon_react__rspack_import_3.HeaderName, {\n prefix: \"\",\n children: title\n }),\n /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsx)(\"div\", {\n className: _workspace2_module_scss__rspack_import_9[\"default\"].overlayHeaderSpacer\n }),\n /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsx)(_carbon_react__rspack_import_3.HeaderGlobalBar, {\n className: _workspace2_module_scss__rspack_import_9[\"default\"].headerButtons,\n children: (0,_openmrs_esm_react_utils__rspack_import_4.isDesktop)(layout) ? /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsxs)(react_jsx_runtime__rspack_import_0.Fragment, {\n children: [\n (canMaximize || maximized) && /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsx)(_carbon_react__rspack_import_3.HeaderGlobalAction, {\n \"aria-label\": maximized ? (0,_openmrs_esm_translations__rspack_import_5.getCoreTranslation)('minimize') : (0,_openmrs_esm_translations__rspack_import_5.getCoreTranslation)('maximize'),\n onClick: function onClick() {\n return setWindowMaximized(windowName, !maximized);\n },\n children: maximized ? /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsx)(_carbon_react_icons__rspack_import_10.Minimize, {}) : /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsx)(_carbon_react_icons__rspack_import_10.Maximize, {})\n }),\n canHide && /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsx)(_carbon_react__rspack_import_3.HeaderGlobalAction, {\n \"aria-label\": (0,_openmrs_esm_translations__rspack_import_5.getCoreTranslation)('hide'),\n onClick: function onClick() {\n return hideWindow();\n },\n children: /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsx)(_icons_index_js__rspack_import_7.ArrowRightIcon, {})\n }),\n !canCloseGroup && /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsx)(_carbon_react__rspack_import_3.HeaderGlobalAction, {\n \"aria-label\": (0,_openmrs_esm_translations__rspack_import_5.getCoreTranslation)('close'),\n onClick: function onClick() {\n return closeWorkspace({\n closeWindow: true\n });\n },\n children: /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsx)(_icons_index_js__rspack_import_7.CloseIcon, {})\n })\n ]\n }) : /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsxs)(react_jsx_runtime__rspack_import_0.Fragment, {\n children: [\n canHide && /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsx)(_carbon_react__rspack_import_3.HeaderGlobalAction, {\n \"aria-label\": (0,_openmrs_esm_translations__rspack_import_5.getCoreTranslation)('hide'),\n onClick: function onClick() {\n return hideWindow();\n },\n children: /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsx)(_carbon_react_icons__rspack_import_11.DownToBottom, {})\n }),\n /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsx)(_carbon_react__rspack_import_3.HeaderGlobalAction, {\n \"aria-label\": (0,_openmrs_esm_translations__rspack_import_5.getCoreTranslation)('close'),\n onClick: function onClick() {\n if (canCloseGroup) {\n (0,_workspace2_js__rspack_import_8.closeWorkspaceGroup2)();\n } else {\n closeWorkspace({\n closeWindow: true\n });\n }\n },\n children: /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsx)(_icons_index_js__rspack_import_7.CloseIcon, {})\n })\n ]\n })\n })\n ]\n }),\n /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsx)(\"div\", {\n className: classnames__rspack_import_2_default()(_workspace2_module_scss__rspack_import_9[\"default\"].workspaceContent),\n children: children\n })\n ]\n })\n })\n ]\n });\n};\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbHRpbjpzd2MtbG9hZGVyIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9wYWNrYWdlcy9mcmFtZXdvcmsvZXNtLXN0eWxlZ3VpZGUvZGlzdC93b3Jrc3BhY2VzMi93b3Jrc3BhY2UyLmNvbXBvbmVudC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi4vLi4vZnJhbWV3b3JrL2VzbS1zdHlsZWd1aWRlL2Rpc3Qvd29ya3NwYWNlczIvd29ya3NwYWNlMi5jb21wb25lbnQuanM/NzRhOCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cywgRnJhZ21lbnQgYXMgX0ZyYWdtZW50IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tIFwiY2xhc3NuYW1lc1wiO1xuaW1wb3J0IHsgSGVhZGVyLCBIZWFkZXJHbG9iYWxBY3Rpb24sIEhlYWRlckdsb2JhbEJhciwgSGVhZGVyTmFtZSB9IGZyb20gXCJAY2FyYm9uL3JlYWN0XCI7XG5pbXBvcnQgeyBEb3duVG9Cb3R0b20sIE1heGltaXplLCBNaW5pbWl6ZSB9IGZyb20gXCJAY2FyYm9uL3JlYWN0L2ljb25zXCI7XG5pbXBvcnQgeyBpc0Rlc2t0b3AsIHVzZUxheW91dFR5cGUgfSBmcm9tIFwiQG9wZW5tcnMvZXNtLXJlYWN0LXV0aWxzXCI7XG5pbXBvcnQgeyBnZXRDb3JlVHJhbnNsYXRpb24gfSBmcm9tIFwiQG9wZW5tcnMvZXNtLXRyYW5zbGF0aW9uc1wiO1xuaW1wb3J0IHsgZ2V0T3BlbmVkV2luZG93SW5kZXhCeVdvcmtzcGFjZSB9IGZyb20gXCJAb3Blbm1ycy9lc20tZXh0ZW5zaW9uc1wiO1xuaW1wb3J0IHsgQXJyb3dSaWdodEljb24sIENsb3NlSWNvbiB9IGZyb20gXCIuLi9pY29ucy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgdXNlV29ya3NwYWNlMlN0b3JlLCB1c2VXb3Jrc3BhY2UyQ29udGV4dCwgY2xvc2VXb3Jrc3BhY2VHcm91cDIgfSBmcm9tIFwiLi93b3Jrc3BhY2UyLmpzXCI7XG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL3dvcmtzcGFjZTIubW9kdWxlLnNjc3NcIjtcbi8qKlxuICogVGhlIFdvcmtzcGFjZTIgY29tcG9uZW50IGlzIHVzZWQgYXMgYSB0b3AtbGV2ZWwgY29udGFpbmVyIHRvIHJlbmRlclxuICogaXRzIGNoaWxkcmVuIGFzIGNvbnRlbnQgd2l0aGluIGEgd29ya3NwYWNlLiBXaGVuIGNyZWF0aW5nIGEgd29ya3NwYWNlXG4gKiBjb21wb25lbnQsIGA8V29ya3NwYWNlMj5gIHNob3VsZCBiZSB0aGUgdG9wLWxldmVsIGNvbXBvbmVudCByZXR1cm5lZCxcbiAqIHdyYXBwaW5nIGFsbCBvZiB0aGUgd29ya3NwYWNlIGNvbnRlbnQuXG4gKi8gZXhwb3J0IGNvbnN0IFdvcmtzcGFjZTIgPSAoeyB0aXRsZSwgY2hpbGRyZW4sIGhhc1Vuc2F2ZWRDaGFuZ2VzID0gZmFsc2UgfSk9PntcbiAgICBjb25zdCBsYXlvdXQgPSB1c2VMYXlvdXRUeXBlKCk7XG4gICAgY29uc3QgeyBzZXRXaW5kb3dNYXhpbWl6ZWQsIGhpZGVXaW5kb3csIHNldEhhc1Vuc2F2ZWRDaGFuZ2VzLCBvcGVuZWRXaW5kb3dzLCBvcGVuZWRHcm91cCwgcmVnaXN0ZXJlZEdyb3Vwc0J5TmFtZSwgcmVnaXN0ZXJlZFdpbmRvd3NCeU5hbWUsIHJlZ2lzdGVyZWRXb3Jrc3BhY2VzQnlOYW1lLCB3b3Jrc3BhY2VUaXRsZUJ5V29ya3NwYWNlTmFtZSwgc2V0V29ya3NwYWNlVGl0bGUsIGlzTW9zdFJlY2VudGx5T3BlbmVkV2luZG93SGlkZGVuIH0gPSB1c2VXb3Jrc3BhY2UyU3RvcmUoKTtcbiAgICBjb25zdCB7IHdvcmtzcGFjZU5hbWUsIGlzUm9vdFdvcmtzcGFjZSwgY2xvc2VXb3Jrc3BhY2UsIHNob3dBY3Rpb25NZW51IH0gPSB1c2VXb3Jrc3BhY2UyQ29udGV4dCgpO1xuICAgIGNvbnN0IG9wZW5lZFdpbmRvd0luZGV4ID0gZ2V0T3BlbmVkV2luZG93SW5kZXhCeVdvcmtzcGFjZSh3b3Jrc3BhY2VOYW1lKTtcbiAgICBjb25zdCBvcGVuZWRXaW5kb3cgPSBvcGVuZWRXaW5kb3dzW29wZW5lZFdpbmRvd0luZGV4XTtcbiAgICBjb25zdCBvcGVuZWRXb3Jrc3BhY2UgPSBvcGVuZWRXaW5kb3c/Lm9wZW5lZFdvcmtzcGFjZXMuZmluZCgod29ya3NwYWNlKT0+d29ya3NwYWNlLndvcmtzcGFjZU5hbWUgPT09IHdvcmtzcGFjZU5hbWUpO1xuICAgIHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICBpZiAob3BlbmVkV29ya3NwYWNlPy5oYXNVbnNhdmVkQ2hhbmdlcyAhPSBoYXNVbnNhdmVkQ2hhbmdlcykge1xuICAgICAgICAgICAgc2V0SGFzVW5zYXZlZENoYW5nZXMod29ya3NwYWNlTmFtZSwgaGFzVW5zYXZlZENoYW5nZXMgPz8gZmFsc2UpO1xuICAgICAgICB9XG4gICAgfSwgW1xuICAgICAgICBvcGVuZWRXb3Jrc3BhY2U/Lmhhc1Vuc2F2ZWRDaGFuZ2VzLFxuICAgICAgICBoYXNVbnNhdmVkQ2hhbmdlcyxcbiAgICAgICAgd29ya3NwYWNlTmFtZSxcbiAgICAgICAgc2V0SGFzVW5zYXZlZENoYW5nZXNcbiAgICBdKTtcbiAgICB1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgaWYgKHdvcmtzcGFjZVRpdGxlQnlXb3Jrc3BhY2VOYW1lW3dvcmtzcGFjZU5hbWVdICE9PSB0aXRsZSkge1xuICAgICAgICAgICAgc2V0V29ya3NwYWNlVGl0bGUod29ya3NwYWNlTmFtZSwgdGl0bGUpO1xuICAgICAgICB9XG4gICAgfSwgW1xuICAgICAgICB3b3Jrc3BhY2VUaXRsZUJ5V29ya3NwYWNlTmFtZSxcbiAgICAgICAgd29ya3NwYWNlTmFtZSxcbiAgICAgICAgdGl0bGUsXG4gICAgICAgIHNldFdvcmtzcGFjZVRpdGxlXG4gICAgXSk7XG4gICAgaWYgKG9wZW5lZFdpbmRvd0luZGV4IDwgMCB8fCBvcGVuZWRHcm91cCA9PSBudWxsIHx8IG9wZW5lZFdvcmtzcGFjZSA9PSBudWxsKSB7XG4gICAgICAgIC8vIHdvcmtzcGFjZSB3aW5kb3cgLyBncm91cCBoYXMgbGlrZWx5IGp1c3QgY2xvc2VkXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBncm91cCA9IHJlZ2lzdGVyZWRHcm91cHNCeU5hbWVbb3BlbmVkR3JvdXAuZ3JvdXBOYW1lXTtcbiAgICBpZiAoIWdyb3VwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGZpbmQgcmVnaXN0ZXJlZCB3b3Jrc3BhY2UgZ3JvdXAgJHtvcGVuZWRHcm91cC5ncm91cE5hbWV9YCk7XG4gICAgfVxuICAgIGNvbnN0IHdvcmtzcGFjZURlZiA9IHJlZ2lzdGVyZWRXb3Jrc3BhY2VzQnlOYW1lW3dvcmtzcGFjZU5hbWVdO1xuICAgIGNvbnN0IHdpbmRvd05hbWUgPSB3b3Jrc3BhY2VEZWYud2luZG93O1xuICAgIGNvbnN0IHdpbmRvd0RlZiA9IHJlZ2lzdGVyZWRXaW5kb3dzQnlOYW1lW3dpbmRvd05hbWVdO1xuICAgIGlmICghd2luZG93RGVmKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGZpbmQgcmVnaXN0ZXJlZCB3b3Jrc3BhY2Ugd2luZG93ICR7d2luZG93TmFtZX1gKTtcbiAgICB9XG4gICAgY29uc3QgeyBpY29uLCBjYW5NYXhpbWl6ZSB9ID0gd2luZG93RGVmO1xuICAgIGNvbnN0IGNhbkNsb3NlR3JvdXAgPSBncm91cC5wZXJzaXN0ZW5jZSA9PT0gJ2Nsb3NhYmxlJztcbiAgICBjb25zdCBjYW5IaWRlID0gISFpY29uICYmICFjYW5DbG9zZUdyb3VwO1xuICAgIGNvbnN0IHsgbWF4aW1pemVkIH0gPSBvcGVuZWRXaW5kb3c7XG4gICAgY29uc3Qgd2lkdGggPSB3aW5kb3dEZWY/LndpZHRoID8/ICduYXJyb3cnO1xuICAgIGNvbnN0IGlzQWN0aW9uTWVudU9wZW5lZCA9IE9iamVjdC52YWx1ZXMocmVnaXN0ZXJlZFdpbmRvd3NCeU5hbWUpLnNvbWUoKHdpbmRvdyk9PndpbmRvdy5ncm91cCA9PT0gb3BlbmVkR3JvdXAuZ3JvdXBOYW1lICYmIHdpbmRvdy5pY29uICE9PSB1bmRlZmluZWQpO1xuICAgIGNvbnN0IGlzV2luZG93SGlkZGVuID0gb3BlbmVkV2luZG93SW5kZXggPCBvcGVuZWRXaW5kb3dzLmxlbmd0aCAtIDEgfHwgaXNNb3N0UmVjZW50bHlPcGVuZWRXaW5kb3dIaWRkZW47XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gX2pzeHMoXCJkaXZcIiwge1xuICAgICAgICBjbGFzc05hbWU6IGNsYXNzTmFtZXMoc3R5bGVzLndvcmtzcGFjZU91dGVyQ29udGFpbmVyLCB7XG4gICAgICAgICAgICBbc3R5bGVzLm5hcnJvd1dvcmtzcGFjZV06IHdpZHRoID09PSAnbmFycm93JyxcbiAgICAgICAgICAgIFtzdHlsZXMud2lkZXJXb3Jrc3BhY2VdOiB3aWR0aCA9PT0gJ3dpZGVyJyxcbiAgICAgICAgICAgIFtzdHlsZXMuZXh0cmFXaWRlV29ya3NwYWNlXTogd2lkdGggPT09ICdleHRyYS13aWRlJyxcbiAgICAgICAgICAgIFtzdHlsZXMuaXNBY3Rpb25NZW51T3BlbmVkXTogaXNBY3Rpb25NZW51T3BlbmVkXG4gICAgICAgIH0pLFxuICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAgICAgLyojX19QVVJFX18qLyBfanN4KFwiZGl2XCIsIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6IGNsYXNzTmFtZXMoc3R5bGVzLndvcmtzcGFjZVNwYWNlciwge1xuICAgICAgICAgICAgICAgICAgICBbc3R5bGVzLmhpZGRlbl06IGlzV2luZG93SGlkZGVuXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgLyojX19QVVJFX18qLyBfanN4KFwiZGl2XCIsIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6IGNsYXNzTmFtZXMoc3R5bGVzLndvcmtzcGFjZU1pZGRsZUNvbnRhaW5lciwge1xuICAgICAgICAgICAgICAgICAgICBbc3R5bGVzLm1heGltaXplZF06IG1heGltaXplZCxcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlcy5oaWRkZW5dOiBpc1dpbmRvd0hpZGRlbixcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlcy5pc1Jvb3RXb3Jrc3BhY2VdOiBpc1Jvb3RXb3Jrc3BhY2UsXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZXMuc2hvd0FjdGlvbk1lbnVdOiBzaG93QWN0aW9uTWVudVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGNoaWxkcmVuOiAvKiNfX1BVUkVfXyovIF9qc3hzKFwiZGl2XCIsIHtcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKHN0eWxlcy53b3Jrc3BhY2VJbm5lckNvbnRhaW5lciwge1xuICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlcy5tYXhpbWl6ZWRdOiBtYXhpbWl6ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGVzLmhpZGRlbl06IGlzV2luZG93SGlkZGVuLFxuICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlcy5pc1Jvb3RXb3Jrc3BhY2VdOiBpc1Jvb3RXb3Jrc3BhY2VcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAvKiNfX1BVUkVfXyovIF9qc3hzKEhlYWRlciwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiYXJpYS1sYWJlbFwiOiBnZXRDb3JlVHJhbnNsYXRpb24oJ3dvcmtzcGFjZUhlYWRlcicpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogc3R5bGVzLmhlYWRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiNfX1BVUkVfXyovIF9qc3goSGVhZGVyTmFtZSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4OiBcIlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IHRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiNfX1BVUkVfXyovIF9qc3goXCJkaXZcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBzdHlsZXMub3ZlcmxheUhlYWRlclNwYWNlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyojX19QVVJFX18qLyBfanN4KEhlYWRlckdsb2JhbEJhciwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBzdHlsZXMuaGVhZGVyQnV0dG9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBpc0Rlc2t0b3AobGF5b3V0KSA/IC8qI19fUFVSRV9fKi8gX2pzeHMoX0ZyYWdtZW50LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNhbk1heGltaXplIHx8IG1heGltaXplZCkgJiYgLyojX19QVVJFX18qLyBfanN4KEhlYWRlckdsb2JhbEFjdGlvbiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJhcmlhLWxhYmVsXCI6IG1heGltaXplZCA/IGdldENvcmVUcmFuc2xhdGlvbignbWluaW1pemUnKSA6IGdldENvcmVUcmFuc2xhdGlvbignbWF4aW1pemUnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s6ICgpPT5zZXRXaW5kb3dNYXhpbWl6ZWQod2luZG93TmFtZSwgIW1heGltaXplZCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbjogbWF4aW1pemVkID8gLyojX19QVVJFX18qLyBfanN4KE1pbmltaXplLCB7fSkgOiAvKiNfX1BVUkVfXyovIF9qc3goTWF4aW1pemUsIHt9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuSGlkZSAmJiAvKiNfX1BVUkVfXyovIF9qc3goSGVhZGVyR2xvYmFsQWN0aW9uLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImFyaWEtbGFiZWxcIjogZ2V0Q29yZVRyYW5zbGF0aW9uKCdoaWRlJyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrOiAoKT0+aGlkZVdpbmRvdygpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IC8qI19fUFVSRV9fKi8gX2pzeChBcnJvd1JpZ2h0SWNvbiwge30pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhY2FuQ2xvc2VHcm91cCAmJiAvKiNfX1BVUkVfXyovIF9qc3goSGVhZGVyR2xvYmFsQWN0aW9uLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImFyaWEtbGFiZWxcIjogZ2V0Q29yZVRyYW5zbGF0aW9uKCdjbG9zZScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljazogKCk9PmNsb3NlV29ya3NwYWNlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VXaW5kb3c6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiAvKiNfX1BVUkVfXyovIF9qc3goQ2xvc2VJY29uLCB7fSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSA6IC8qI19fUFVSRV9fKi8gX2pzeHMoX0ZyYWdtZW50LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuSGlkZSAmJiAvKiNfX1BVUkVfXyovIF9qc3goSGVhZGVyR2xvYmFsQWN0aW9uLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImFyaWEtbGFiZWxcIjogZ2V0Q29yZVRyYW5zbGF0aW9uKCdoaWRlJyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrOiAoKT0+aGlkZVdpbmRvdygpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IC8qI19fUFVSRV9fKi8gX2pzeChEb3duVG9Cb3R0b20sIHt9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyojX19QVVJFX18qLyBfanN4KEhlYWRlckdsb2JhbEFjdGlvbiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJhcmlhLWxhYmVsXCI6IGdldENvcmVUcmFuc2xhdGlvbignY2xvc2UnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s6ICgpPT57XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhbkNsb3NlR3JvdXApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VXb3Jrc3BhY2VHcm91cDIoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZVdvcmtzcGFjZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZVdpbmRvdzogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IC8qI19fUFVSRV9fKi8gX2pzeChDbG9zZUljb24sIHt9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAvKiNfX1BVUkVfXyovIF9qc3goXCJkaXZcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lcyhzdHlsZXMud29ya3NwYWNlQ29udGVudCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IGNoaWxkcmVuXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgIF1cbiAgICB9KTtcbn07XG4iXSwibmFtZXMiOlsianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwiUmVhY3QiLCJ1c2VFZmZlY3QiLCJjbGFzc05hbWVzIiwiSGVhZGVyIiwiSGVhZGVyR2xvYmFsQWN0aW9uIiwiSGVhZGVyR2xvYmFsQmFyIiwiSGVhZGVyTmFtZSIsIkRvd25Ub0JvdHRvbSIsIk1heGltaXplIiwiTWluaW1pemUiLCJpc0Rlc2t0b3AiLCJ1c2VMYXlvdXRUeXBlIiwiZ2V0Q29yZVRyYW5zbGF0aW9uIiwiZ2V0T3BlbmVkV2luZG93SW5kZXhCeVdvcmtzcGFjZSIsIkFycm93UmlnaHRJY29uIiwiQ2xvc2VJY29uIiwidXNlV29ya3NwYWNlMlN0b3JlIiwidXNlV29ya3NwYWNlMkNvbnRleHQiLCJjbG9zZVdvcmtzcGFjZUdyb3VwMiIsInN0eWxlcyIsIldvcmtzcGFjZTIiLCJ0aXRsZSIsImNoaWxkcmVuIiwiaGFzVW5zYXZlZENoYW5nZXMiLCJsYXlvdXQiLCJfdXNlV29ya3NwYWNlMlN0b3JlIiwic2V0V2luZG93TWF4aW1pemVkIiwiaGlkZVdpbmRvdyIsInNldEhhc1Vuc2F2ZWRDaGFuZ2VzIiwib3BlbmVkV2luZG93cyIsIm9wZW5lZEdyb3VwIiwicmVnaXN0ZXJlZEdyb3Vwc0J5TmFtZSIsInJlZ2lzdGVyZWRXaW5kb3dzQnlOYW1lIiwicmVnaXN0ZXJlZFdvcmtzcGFjZXNCeU5hbWUiLCJ3b3Jrc3BhY2VUaXRsZUJ5V29ya3NwYWNlTmFtZSIsInNldFdvcmtzcGFjZVRpdGxlIiwiaXNNb3N0UmVjZW50bHlPcGVuZWRXaW5kb3dIaWRkZW4iLCJfdXNlV29ya3NwYWNlMkNvbnRleHQiLCJ3b3Jrc3BhY2VOYW1lIiwiaXNSb290V29ya3NwYWNlIiwiY2xvc2VXb3Jrc3BhY2UiLCJzaG93QWN0aW9uTWVudSIsIm9wZW5lZFdpbmRvd0luZGV4Iiwib3BlbmVkV2luZG93Iiwib3BlbmVkV29ya3NwYWNlIiwid29ya3NwYWNlIiwiZ3JvdXAiLCJFcnJvciIsIndvcmtzcGFjZURlZiIsIndpbmRvd05hbWUiLCJ3aW5kb3dEZWYiLCJpY29uIiwiY2FuTWF4aW1pemUiLCJjYW5DbG9zZUdyb3VwIiwiY2FuSGlkZSIsIm1heGltaXplZCIsIndpZHRoIiwiaXNBY3Rpb25NZW51T3BlbmVkIiwiT2JqZWN0Iiwid2luZG93IiwidW5kZWZpbmVkIiwiaXNXaW5kb3dIaWRkZW4iLCJfb2JqIiwiX29iajEiLCJfb2JqMiIsIm9uQ2xpY2siXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQXNGO0FBQzdDO0FBQ0w7QUFDb0Q7QUFDakI7QUFDSDtBQUNMO0FB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\n//# sourceURL=webpack-internal:///../../framework/esm-styleguide/dist/workspaces2/workspace2.component.js\n\n}");
|
|
1994
1994
|
|
|
1995
1995
|
},
|
|
1996
1996
|
"../../framework/esm-styleguide/dist/workspaces2/workspace2.js"(__unused_rspack_module, __webpack_exports__, __webpack_require__) {
|
|
1997
1997
|
"use strict";
|
|
1998
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n closeWorkspaceGroup2: () => (closeWorkspaceGroup2),\n getRegisteredWorkspace2Names: () => (getRegisteredWorkspace2Names),\n launchWorkspace2: () => (launchWorkspace2),\n launchWorkspaceGroup2: () => (launchWorkspaceGroup2),\n promptForClosingWorkspaces: () => (promptForClosingWorkspaces),\n useWorkspace2Context: () => (useWorkspace2Context),\n useWorkspace2Store: () => (useWorkspace2Store),\n workspace2StoreActions: () => (workspace2StoreActions)\n});\n/* import */ var react__rspack_import_0 = __webpack_require__(\"webpack/sharing/consume/default/react/react\");\n/* import */ var react__rspack_import_0_default = /*#__PURE__*/__webpack_require__.n(react__rspack_import_0);\n/* import */ var single_spa_react__rspack_import_1 = __webpack_require__(\"../../../node_modules/single-spa-react/lib/esm/single-spa-react.js\");\n/* import */ var uuid__rspack_import_6 = __webpack_require__(\"../../../node_modules/uuid/dist/esm-browser/v4.js\");\n/* import */ var _openmrs_esm_extensions__rspack_import_2 = __webpack_require__(\"../../framework/esm-extensions/dist/index.js\");\n/* import */ var _openmrs_esm_react_utils__rspack_import_3 = __webpack_require__(\"../../framework/esm-react-utils/dist/index.js\");\n/* import */ var _openmrs_esm_utils__rspack_import_5 = __webpack_require__(\"../../framework/esm-utils/dist/shallowEqual.js\");\n/* import */ var _modals_index_js__rspack_import_4 = __webpack_require__(\"../../framework/esm-styleguide/dist/modals/index.js\");\nfunction _array_like_to_array(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction _array_without_holes(arr) {\n if (Array.isArray(arr)) return _array_like_to_array(arr);\n}\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 _iterable_to_array(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nfunction _non_iterable_spread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\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}\nfunction _to_consumable_array(arr) {\n return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();\n}\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);\n}\nfunction _ts_generator(thisArg, body) {\n var f, y, t, _ = {\n label: 0,\n sent: function() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n }, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype), d = Object.defineProperty;\n return d(g, \"next\", {\n value: verb(0)\n }), d(g, \"throw\", {\n value: verb(1)\n }), d(g, \"return\", {\n value: verb(2)\n }), typeof Symbol === \"function\" && d(g, Symbol.iterator, {\n value: function() {\n return this;\n }\n }), g;\n function verb(n) {\n return function(v) {\n return step([\n n,\n v\n ]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while(g && (g = 0, op[0] && (_ = 0)), _)try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [\n op[0] & 2,\n t.value\n ];\n switch(op[0]){\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [\n 0\n ];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [\n 6,\n e\n ];\n y = 0;\n } finally{\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n}\n\n\n\n\n\n\n\n/**\n * Attempts to launch the specified workspace group with the given group props. Note that only one workspace group\n * may be opened at any given time. If a workspace group is already opened, calling `launchWorkspaceGroup2` with\n * either a different group name, or same group name but different incompatible props**, will result in prompting to\n * confirm closing workspaces. If the user confirms, the opened group, along with its windows (and their workspaces), is closed, and\n * the requested group is immediately opened.\n *\n * ** 2 sets of props are compatible if either one is nullish, or if they are shallow equal.\n * @experimental\n * @param groupName\n * @param groupProps\n * @returns a Promise that resolves to true if the specified workspace group with the specified group props\n * is successfully opened, or that it already is opened.\n */ function launchWorkspaceGroup2(groupName, groupProps) {\n return _async_to_generator(function() {\n var openedGroup, okToCloseWorkspaces;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n openedGroup = _openmrs_esm_extensions__rspack_import_2.workspace2Store.getState().openedGroup;\n if (!openedGroup) return [\n 3,\n 3\n ];\n if (!(openedGroup.groupName !== groupName || !arePropsCompatible(openedGroup.props, groupProps))) return [\n 3,\n 2\n ];\n return [\n 4,\n promptForClosingWorkspaces({\n reason: 'CLOSE_WORKSPACE_GROUP',\n explicit: false\n })\n ];\n case 1:\n okToCloseWorkspaces = _state.sent();\n if (!okToCloseWorkspaces) {\n return [\n 2,\n false\n ];\n }\n return [\n 3,\n 3\n ];\n case 2:\n // no-op, group with group props is already opened\n return [\n 2,\n true\n ];\n case 3:\n _openmrs_esm_extensions__rspack_import_2.workspace2Store.setState(function(state) {\n return _object_spread_props(_object_spread({}, state), {\n openedGroup: {\n groupName: groupName,\n props: groupProps\n },\n openedWindows: []\n });\n });\n return [\n 2,\n true\n ];\n }\n });\n })();\n}\n/**\n * Closes the workspace group that is currently opened. Note that only one workspace group\n * may be opened at any given time\n * @experimental\n * @param discardUnsavedChanges If true, then the workspace group is forced closed, with no prompt\n * for confirmation for unsaved changes in any opened workspace. This should be used sparingly\n * for clean-up purpose, ex: when exiting an app.\n * @returns a Promise that resolves to true if there is no opened group to begin with or we successfully closed\n * the opened group; false otherwise.\n */ function closeWorkspaceGroup2(discardUnsavedChanges) {\n return _async_to_generator(function() {\n var state, openedGroup, openedWindows, okToCloseWorkspaces, _tmp;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n state = _openmrs_esm_extensions__rspack_import_2.workspace2Store.getState();\n openedGroup = state.openedGroup, openedWindows = state.openedWindows;\n if (!openedGroup) return [\n 3,\n 4\n ];\n if (!(openedWindows.length > 0)) return [\n 3,\n 3\n ];\n _tmp = discardUnsavedChanges;\n if (_tmp) return [\n 3,\n 2\n ];\n return [\n 4,\n promptForClosingWorkspaces({\n reason: 'CLOSE_WORKSPACE_GROUP',\n explicit: true\n })\n ];\n case 1:\n _tmp = _state.sent();\n _state.label = 2;\n case 2:\n okToCloseWorkspaces = _tmp;\n if (!okToCloseWorkspaces) {\n return [\n 2,\n false\n ];\n }\n _state.label = 3;\n case 3:\n _openmrs_esm_extensions__rspack_import_2.workspace2Store.setState(function(state) {\n return _object_spread_props(_object_spread({}, state), {\n openedGroup: null,\n openedWindows: []\n });\n });\n return [\n 2,\n true\n ];\n case 4:\n // no openedGroup with begin with, return true\n return [\n 2,\n true\n ];\n }\n });\n })();\n}\n/**\n * Attempts to launch the specified workspace with the given workspace props. This also implicitly opens\n * the workspace window to which the workspace belongs (if it's not opened already),\n * and the workspace group to which the window belongs (if it's not opened already).\n *\n * When calling `launchWorkspace2`, we need to also pass in the workspace props. While not required,\n * we can also pass in the window props (shared by other workspaces in the window) and the group props\n * (shared by all windows and their workspaces). Omitting the window props or the group props[^1] means the caller\n * explicitly does not care what the current window props and group props are, and that they may be set\n * by other actions (like calling `launchWorkspace2` on a different workspace with those props passed in)\n * at a later time.\n *\n * If there is already an opened workspace group, and it's not the group the workspace belongs to\n * or has incompatible[^2] group props, then we prompt the user to close the group (and its windows and their workspaces).\n * On user confirm, the existing opened group is closed and the new workspace, along with its window and its group,\n * is opened.\n *\n * If the window is already opened, but with incompatible window props, we prompt the user to close\n * the window (and all its opened workspaces), and reopen the window with (only) the newly requested workspace.\n *\n * If the workspace is already opened, but with incompatible workspace props, we also prompt the user to close\n * the **window** (and all its opened workspaces), and reopen the window with (only) the newly requested workspace.\n * This is true regardless of whether the already opened workspace has any child workspaces.\n *\n * Note that calling this function *never* results in creating a child workspace in the affected window.\n * To do so, we need to call `launchChildWorkspace` instead.\n *\n * [^1] Omitting window or group props is useful for workspaces that don't have ties to the window or group \"context\" (props).\n * For example, in the patient chart, the visit notes / clinical forms / order basket action menu button all share\n * a \"group context\" of the current visit. However, the \"patient list\" action menu button does not need to share that group\n * context, so opening that workspace should not need to cause other workspaces / windows / groups to potentially close.\n * The \"patient search\" workspace in the queues and ward apps is another example.\n *\n * [^2] 2 sets of props are compatible if either one is nullish, or if they are shallow equal.\n * @experimental\n */ function launchWorkspace2(workspaceName) {\n var workspaceProps = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null, windowProps = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : null, groupProps = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : null;\n return _async_to_generator(function() {\n var storeState, windowDef, openedGroup, windowName, groupDef, openedWindowIndex, isWindowAlreadyOpened, okToCloseWorkspaces, _ref, _storeState_openedGroup, openedWindow, groupProps1, isMostRecentlyOpenedWindowHidden, openedWorkspaces, openedWorkspace, okToCloseWorkspaces1, _ref1, _ref2, _storeState_openedGroup1, okToCloseWorkspaces2, _storeState_openedGroup2, okToCloseWorkspaces3, _ref3, _storeState_openedGroup3, _ref4, _storeState_openedGroup4;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n storeState = _openmrs_esm_extensions__rspack_import_2.workspace2Store.getState();\n if (!storeState.registeredWorkspacesByName[workspaceName]) {\n throw new Error(\"Unable to launch workspace \".concat(workspaceName, \". Workspace is not registered\"));\n }\n windowDef = (0,_openmrs_esm_extensions__rspack_import_2.getWindowByWorkspaceName)(workspaceName);\n if (!windowDef) {\n throw new Error(\"Unable to launch workspace \".concat(workspaceName, \". Workspace is not registered to a workspace window\"));\n }\n openedGroup = storeState.openedGroup;\n windowName = windowDef.name;\n groupDef = (0,_openmrs_esm_extensions__rspack_import_2.getGroupByWindowName)(windowName);\n if (!groupDef) {\n throw new Error(\"Unable to launch workspace \".concat(workspaceName, \". Workspace window \").concat(windowDef.name, \" is not registered to a workspace group\"));\n }\n openedWindowIndex = (0,_openmrs_esm_extensions__rspack_import_2.getOpenedWindowIndexByWorkspace)(workspaceName);\n isWindowAlreadyOpened = openedWindowIndex >= 0;\n if (!(openedGroup && (openedGroup.groupName !== groupDef.name || !arePropsCompatible(openedGroup.props, groupProps)))) return [\n 3,\n 2\n ];\n return [\n 4,\n promptForClosingWorkspaces({\n reason: 'CLOSE_WORKSPACE_GROUP',\n explicit: true\n })\n ];\n case 1:\n okToCloseWorkspaces = _state.sent();\n if (okToCloseWorkspaces) {\n _openmrs_esm_extensions__rspack_import_2.workspace2Store.setState(_object_spread_props(_object_spread({}, storeState), {\n openedGroup: {\n groupName: groupDef.name,\n props: groupProps\n },\n openedWindows: [\n // discard all opened windows, open a new one with the requested workspace\n // most recently opened action appended to the end\n {\n windowName: windowName,\n openedWorkspaces: [\n newOpenedWorkspace(workspaceName, workspaceProps)\n ],\n props: windowProps,\n maximized: false\n }\n ],\n isMostRecentlyOpenedWindowHidden: false\n }));\n return [\n 2,\n true\n ];\n } else {\n return [\n 2,\n false\n ];\n }\n return [\n 3,\n 12\n ];\n case 2:\n if (!isWindowAlreadyOpened) return [\n 3,\n 9\n ];\n openedWindow = storeState.openedWindows[openedWindowIndex];\n groupProps1 = (_ref = (_storeState_openedGroup = storeState.openedGroup) === null || _storeState_openedGroup === void 0 ? void 0 : _storeState_openedGroup.props) !== null && _ref !== void 0 ? _ref : {};\n isMostRecentlyOpenedWindowHidden = storeState.isMostRecentlyOpenedWindowHidden;\n openedWorkspaces = openedWindow.openedWorkspaces;\n if (!arePropsCompatible(openedWindow.props, windowProps)) return [\n 3,\n 6\n ];\n // this case is tricky, this results in restoring the window if:\n // 1. the workspace is opened (but not necessarily as a leaf workspace)\n // 2. the props of the opened workspace is same as workspace props (from the function input)\n //\n // Otherwise, we close all workspaces in this window, and open this newly requested one\n openedWorkspace = openedWorkspaces.find(function(w) {\n return w.workspaceName === workspaceName;\n });\n if (!(openedWorkspace && arePropsCompatible(openedWorkspace.props, workspaceProps))) return [\n 3,\n 3\n ];\n // restore the window if it is hidden or not the most recently opened one\n if (isMostRecentlyOpenedWindowHidden || openedWindowIndex !== storeState.openedWindows.length - 1) {\n _openmrs_esm_extensions__rspack_import_2.workspace2Store.setState(workspace2StoreActions.restoreWindow(storeState, windowName));\n }\n return [\n 2,\n true\n ];\n case 3:\n return [\n 4,\n promptForClosingWorkspaces({\n reason: 'CLOSE_WORKSPACE',\n explicit: false,\n windowName: windowName,\n workspaceName: workspaceName\n })\n ];\n case 4:\n okToCloseWorkspaces1 = _state.sent();\n if (okToCloseWorkspaces1) {\n ;\n ;\n _openmrs_esm_extensions__rspack_import_2.workspace2Store.setState(_object_spread_props(_object_spread({}, storeState), {\n openedGroup: {\n groupName: groupDef.name,\n props: (_ref1 = storeState === null || storeState === void 0 ? void 0 : (_storeState_openedGroup1 = storeState.openedGroup) === null || _storeState_openedGroup1 === void 0 ? void 0 : _storeState_openedGroup1.props) !== null && _ref1 !== void 0 ? _ref1 : groupProps1\n },\n openedWindows: _to_consumable_array(storeState.openedWindows.filter(function(_, i) {\n return i !== openedWindowIndex;\n })).concat([\n // most recently opened workspace at the end of the array\n {\n windowName: windowName,\n openedWorkspaces: [\n newOpenedWorkspace(workspaceName, workspaceProps)\n ],\n props: (_ref2 = openedWindow === null || openedWindow === void 0 ? void 0 : openedWindow.props) !== null && _ref2 !== void 0 ? _ref2 : windowProps,\n maximized: false\n }\n ]),\n isMostRecentlyOpenedWindowHidden: false\n }));\n return [\n 2,\n true\n ];\n } else {\n return [\n 2,\n false\n ];\n }\n _state.label = 5;\n case 5:\n return [\n 3,\n 8\n ];\n case 6:\n return [\n 4,\n promptForClosingWorkspaces({\n reason: 'CLOSE_WINDOW',\n explicit: false,\n windowName: windowName\n })\n ];\n case 7:\n okToCloseWorkspaces2 = _state.sent();\n if (okToCloseWorkspaces2) {\n ;\n // discard the openedWindows element at openedWindowIndex\n // and create a new one with the requested workspace opened\n _openmrs_esm_extensions__rspack_import_2.workspace2Store.setState(_object_spread_props(_object_spread({}, storeState), {\n openedGroup: {\n groupName: groupDef.name,\n props: groupProps1 !== null && groupProps1 !== void 0 ? groupProps1 : storeState === null || storeState === void 0 ? void 0 : (_storeState_openedGroup2 = storeState.openedGroup) === null || _storeState_openedGroup2 === void 0 ? void 0 : _storeState_openedGroup2.props\n },\n openedWindows: _to_consumable_array(storeState.openedWindows.filter(function(_, i) {\n return i !== openedWindowIndex;\n })).concat([\n // most recently opened workspace at the end of the array\n {\n windowName: windowName,\n openedWorkspaces: [\n newOpenedWorkspace(workspaceName, workspaceProps)\n ],\n props: windowProps,\n maximized: false\n }\n ]),\n isMostRecentlyOpenedWindowHidden: false\n }));\n return [\n 2,\n true\n ];\n } else {\n return [\n 2,\n false\n ];\n }\n _state.label = 8;\n case 8:\n return [\n 3,\n 12\n ];\n case 9:\n if (!(groupDef.persistence == 'closable')) return [\n 3,\n 11\n ];\n return [\n 4,\n promptForClosingWorkspaces({\n reason: 'CLOSE_OTHER_WINDOWS',\n explicit: false,\n windowNameToSpare: windowDef.name\n })\n ];\n case 10:\n okToCloseWorkspaces3 = _state.sent();\n if (okToCloseWorkspaces3) {\n ;\n ;\n _openmrs_esm_extensions__rspack_import_2.workspace2Store.setState(_object_spread_props(_object_spread({}, storeState), {\n openedGroup: {\n groupName: groupDef.name,\n props: (_ref3 = groupProps !== null && groupProps !== void 0 ? groupProps : storeState === null || storeState === void 0 ? void 0 : (_storeState_openedGroup3 = storeState.openedGroup) === null || _storeState_openedGroup3 === void 0 ? void 0 : _storeState_openedGroup3.props) !== null && _ref3 !== void 0 ? _ref3 : null\n },\n openedWindows: [\n {\n windowName: windowName,\n openedWorkspaces: [\n newOpenedWorkspace(workspaceName, workspaceProps)\n ],\n props: windowProps,\n maximized: false\n }\n ],\n isMostRecentlyOpenedWindowHidden: false\n }));\n return [\n 2,\n true\n ];\n } else {\n return [\n 2,\n false\n ];\n }\n return [\n 3,\n 12\n ];\n case 11:\n _openmrs_esm_extensions__rspack_import_2.workspace2Store.setState(_object_spread_props(_object_spread({}, storeState), {\n openedGroup: {\n groupName: groupDef.name,\n props: (_ref4 = groupProps !== null && groupProps !== void 0 ? groupProps : storeState === null || storeState === void 0 ? void 0 : (_storeState_openedGroup4 = storeState.openedGroup) === null || _storeState_openedGroup4 === void 0 ? void 0 : _storeState_openedGroup4.props) !== null && _ref4 !== void 0 ? _ref4 : null\n },\n openedWindows: _to_consumable_array(storeState.openedWindows).concat([\n // most recently opened workspace at the end of the array\n {\n windowName: windowName,\n openedWorkspaces: [\n newOpenedWorkspace(workspaceName, workspaceProps)\n ],\n props: windowProps,\n maximized: false\n }\n ]),\n isMostRecentlyOpenedWindowHidden: false\n }));\n return [\n 2,\n true\n ];\n case 12:\n return [\n 2\n ];\n }\n });\n })();\n}\n/**\n * When we launch a workspace, we may pass in workspace / windows / group props. If the workspace or\n * window or group is currently opened, we have to check whether the current props are compatible with\n * the passed in props. 2 props A and B are compatible if:\n * either one is nullish (because this indicates that the caller does not care about prop incompatibility)\n * neither is nullish, and A and B are shallow equal.\n * @param a props\n * @param b props\n * @returns whether props a and b are compatible\n */ function arePropsCompatible(a, b) {\n if (a == null || b == null) {\n return true;\n }\n return (0,_openmrs_esm_utils__rspack_import_5.shallowEqual)(a, b);\n}\n/**\n * A user can perform actions that explicitly result in closing workspaces\n * (such that clicking the 'X' button for the workspace or workspace group), or\n * implicitly (by opening a workspace with different props than the one that is already opened).\n * Calls to closeWorkspace2() or closeWorkspaceGroup2() are considered explicit, while calls\n * to launchWorkspace2() or launchWorkspaceGroup2() are considered implicit.\n *\n * This function prompts the user for confirmation to close workspaces with a modal dialog.\n * When the closing is explicit, it prompts for confirmation for affected workspaces with unsaved changes.\n * When the closing is implicit, it prompts for confirmation for all affected workspaces, regardless of\n * whether they have unsaved changes.\n * @experimental\n * @param promptReason\n * @returns a Promise that resolves to true if the user confirmed closing the workspaces; false otherwise.\n */ function promptForClosingWorkspaces(promptReason) {\n // if onlyUpToThisWorkspace is provided, we will only loop till we hit that workspace\n function getAffectedWorkspacesInWindow(openedWindow, onlyUpToThisWorkspace) {\n var ret = [];\n for(var i = openedWindow.openedWorkspaces.length - 1; i >= 0; i--){\n var openedWorkspace = openedWindow.openedWorkspaces[i];\n if (openedWorkspace.hasUnsavedChanges) {\n ret.push(openedWorkspace);\n }\n if (onlyUpToThisWorkspace && openedWorkspace.workspaceName === onlyUpToThisWorkspace) {\n break;\n }\n }\n return ret;\n }\n var _workspace2Store_getState = _openmrs_esm_extensions__rspack_import_2.workspace2Store.getState(), openedWindows = _workspace2Store_getState.openedWindows, workspaceTitleByWorkspaceName = _workspace2Store_getState.workspaceTitleByWorkspaceName;\n var affectedWorkspaces = [];\n switch(promptReason.reason){\n case 'CLOSE_WORKSPACE_GROUP':\n {\n affectedWorkspaces = openedWindows.flatMap(function(window) {\n return getAffectedWorkspacesInWindow(window);\n });\n break;\n }\n case 'CLOSE_WINDOW':\n {\n var openedWindow = openedWindows.find(function(window) {\n return window.windowName === promptReason.windowName;\n });\n if (!openedWindow) {\n throw new Error(\"Window \".concat(promptReason.windowName, \" not found in opened windows.\"));\n }\n affectedWorkspaces = getAffectedWorkspacesInWindow(openedWindow);\n break;\n }\n case 'CLOSE_WORKSPACE':\n {\n var openedWindow1 = openedWindows.find(function(window) {\n return window.windowName === promptReason.windowName;\n });\n if (!openedWindow1) {\n throw new Error(\"Window \".concat(promptReason.windowName, \" not found in opened windows.\"));\n }\n affectedWorkspaces = getAffectedWorkspacesInWindow(openedWindow1, promptReason.workspaceName);\n break;\n }\n case 'CLOSE_OTHER_WINDOWS':\n {\n var windowsToClose = openedWindows.filter(function(window) {\n return window.windowName !== promptReason.windowNameToSpare;\n });\n affectedWorkspaces = windowsToClose.flatMap(function(w) {\n return getAffectedWorkspacesInWindow(w);\n });\n break;\n }\n }\n if (affectedWorkspaces.length === 0) {\n return Promise.resolve(true); // no unsaved changes, no need to prompt\n }\n return new Promise(function(resolve) {\n var dispose = (0,_modals_index_js__rspack_import_4.showModal)('workspace2-close-prompt', {\n onConfirm: function onConfirm() {\n dispose();\n resolve(true);\n },\n onCancel: function onCancel() {\n dispose();\n resolve(false);\n },\n affectedWorkspaceTitles: affectedWorkspaces.map(function(workspace) {\n return workspaceTitleByWorkspaceName[workspace.workspaceName];\n })\n });\n });\n}\nvar workspace2StoreActions = {\n setWindowMaximized: function setWindowMaximized(state, windowName, maximized) {\n var openedWindowIndex = state.openedWindows.findIndex(function(a) {\n return a.windowName === windowName;\n });\n var openedWindows = _to_consumable_array(state.openedWindows);\n var currentWindow = _object_spread_props(_object_spread({}, openedWindows[openedWindowIndex]), {\n maximized: maximized\n });\n openedWindows[openedWindowIndex] = currentWindow;\n return _object_spread_props(_object_spread({}, state), {\n openedWindows: openedWindows\n });\n },\n // hides the most recently opened window (all other opened windows are implicitly hidden)\n hideWindow: function hideWindow(state) {\n return _object_spread_props(_object_spread({}, state), {\n isMostRecentlyOpenedWindowHidden: true\n });\n },\n restoreWindow: function restoreWindow(state, windowName) {\n var openedWindowIndex = state.openedWindows.findIndex(function(a) {\n return a.windowName === windowName;\n });\n var currentWindow = state.openedWindows[openedWindowIndex];\n var openedWindows = _to_consumable_array(state.openedWindows.filter(function(_, i) {\n return i !== openedWindowIndex;\n })).concat([\n currentWindow\n ]);\n return _object_spread_props(_object_spread({}, state), {\n openedWindows: openedWindows,\n isMostRecentlyOpenedWindowHidden: false\n });\n },\n closeWorkspace: function closeWorkspace(state, workspaceName) {\n var openedWindowIndex = (0,_openmrs_esm_extensions__rspack_import_2.getOpenedWindowIndexByWorkspace)(workspaceName);\n if (openedWindowIndex < 0) {\n return state; // no-op if the window does not exist\n }\n var window = _object_spread({}, state.openedWindows[openedWindowIndex]);\n var workspaceIndex = window.openedWorkspaces.findIndex(function(w) {\n return w.workspaceName === workspaceName;\n });\n var openedWindows = _to_consumable_array(state.openedWindows);\n // close all children of the input workspace as well\n window.openedWorkspaces = window.openedWorkspaces.slice(0, workspaceIndex);\n var hidden = state.isMostRecentlyOpenedWindowHidden;\n if (window.openedWorkspaces.length === 0) {\n var wasMostRecentWindow = openedWindowIndex === state.openedWindows.length - 1;\n // if no workspaces left, remove the window\n openedWindows.splice(openedWindowIndex, 1);\n // If we removed the most recent window and there are still windows left,\n // the new most recent window should be shown\n if (wasMostRecentWindow && openedWindows.length > 0) {\n hidden = false;\n }\n } else {\n // if there are still workspaces left, just update the window\n openedWindows[openedWindowIndex] = window;\n }\n return _object_spread_props(_object_spread({}, state), {\n openedWindows: openedWindows,\n isMostRecentlyOpenedWindowHidden: hidden\n });\n },\n openChildWorkspace: function openChildWorkspace(state, parentWorkspaceName, childWorkspaceName, childWorkspaceProps) {\n var childWorkspaceDef = state.registeredWorkspacesByName[childWorkspaceName];\n if (!childWorkspaceDef) {\n throw new Error('No workspace named \"'.concat(childWorkspaceName, '\" registered'));\n }\n var parentWorkspaceDef = state.registeredWorkspacesByName[parentWorkspaceName];\n if (!parentWorkspaceDef) {\n throw new Error('No workspace named \"'.concat(parentWorkspaceName, '\" registered'));\n }\n if (parentWorkspaceDef.window !== childWorkspaceDef.window) {\n throw new Error(\"Child workspace \".concat(childWorkspaceName, \" does not belong to the same workspace window as parent workspace \").concat(parentWorkspaceName));\n }\n // as the request workspace should be a child workspace, the corresponding window\n // to contain the workspace should already be opened\n var openedWindowIndex = state.openedWindows.findIndex(function(window) {\n return window.windowName === childWorkspaceDef.window;\n });\n if (openedWindowIndex == -1) {\n throw new Error(\"Cannot open child workspace \".concat(childWorkspaceName, \" as window \").concat(childWorkspaceDef.window, \" is not opened\"));\n }\n var openedWindow = state.openedWindows[openedWindowIndex];\n var openedWorkspaces = openedWindow.openedWorkspaces;\n var parentIndex = openedWorkspaces.findIndex(function(w) {\n return w.workspaceName === parentWorkspaceName;\n });\n if (parentIndex === -1) {\n throw new Error(\"Cannot open child workspace \".concat(childWorkspaceName, \" from parent workspace \").concat(parentWorkspaceName, \" as the parent is not opened within the workspace window\"));\n }\n // Close any workspaces above the parent (analogous to closeWorkspace's slice behavior)\n var trimmedWorkspaces = openedWorkspaces.slice(0, parentIndex + 1);\n return {\n openedWindows: state.openedWindows.map(function(w, i) {\n if (i == openedWindowIndex) {\n return _object_spread_props(_object_spread({}, w), {\n openedWorkspaces: _to_consumable_array(trimmedWorkspaces).concat([\n newOpenedWorkspace(childWorkspaceName, childWorkspaceProps)\n ])\n });\n } else {\n return w;\n }\n })\n };\n },\n setHasUnsavedChanges: function setHasUnsavedChanges(state, workspaceName, hasUnsavedChanges) {\n var openedWindowIndex = (0,_openmrs_esm_extensions__rspack_import_2.getOpenedWindowIndexByWorkspace)(workspaceName);\n if (openedWindowIndex < 0) {\n return state; // no-op if the window does not exist\n }\n var openedWindow = _object_spread({}, state.openedWindows[openedWindowIndex]);\n var workspaceIndex = openedWindow.openedWorkspaces.findIndex(function(w) {\n return w.workspaceName === workspaceName;\n });\n if (workspaceIndex < 0) {\n return state; // no-op if the workspace is not found\n }\n openedWindow.openedWorkspaces[workspaceIndex] = _object_spread_props(_object_spread({}, openedWindow.openedWorkspaces[workspaceIndex]), {\n hasUnsavedChanges: hasUnsavedChanges\n });\n var openedWindows = _to_consumable_array(state.openedWindows);\n openedWindows[openedWindowIndex] = openedWindow;\n return _object_spread_props(_object_spread({}, state), {\n openedWindows: openedWindows\n });\n },\n setWorkspaceTitle: function setWorkspaceTitle(state, workspaceName, title) {\n var newWorkspaceTitleByWorkspaceName = _object_spread({}, state.workspaceTitleByWorkspaceName);\n if (title === null) {\n delete newWorkspaceTitleByWorkspaceName[workspaceName];\n } else {\n newWorkspaceTitleByWorkspaceName[workspaceName] = title;\n }\n return _object_spread_props(_object_spread({}, state), {\n workspaceTitleByWorkspaceName: newWorkspaceTitleByWorkspaceName\n });\n }\n};\nfunction useWorkspace2Store() {\n return (0,_openmrs_esm_react_utils__rspack_import_3.useStoreWithActions)(_openmrs_esm_extensions__rspack_import_2.workspace2Store, workspace2StoreActions);\n}\n/**\n * Returns the react Context containing props passed into a workspace.\n * This hook MUST be called inside a child of <Workspace2>\n */ var useWorkspace2Context = function useWorkspace2Context() {\n return (0,react__rspack_import_0.useContext)(single_spa_react__rspack_import_1.SingleSpaContext);\n};\n/**\n * @returns a list of registered workspaces.\n */ var getRegisteredWorkspace2Names = function getRegisteredWorkspace2Names() {\n return Object.keys(_openmrs_esm_extensions__rspack_import_2.workspace2Store.getState().registeredWorkspacesByName);\n};\nfunction newOpenedWorkspace(workspaceName, workspaceProps) {\n return {\n workspaceName: workspaceName,\n props: workspaceProps !== null && workspaceProps !== void 0 ? workspaceProps : {},\n hasUnsavedChanges: false,\n uuid: (0,uuid__rspack_import_6[\"default\"])()\n };\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbHRpbjpzd2MtbG9hZGVyIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9wYWNrYWdlcy9mcmFtZXdvcmsvZXNtLXN0eWxlZ3VpZGUvZGlzdC93b3Jrc3BhY2VzMi93b3Jrc3BhY2UyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uLi8uLi9mcmFtZXdvcmsvZXNtLXN0eWxlZ3VpZGUvZGlzdC93b3Jrc3BhY2VzMi93b3Jrc3BhY2UyLmpzPzhjYjUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlQ29udGV4dCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgU2luZ2xlU3BhQ29udGV4dCB9IGZyb20gXCJzaW5nbGUtc3BhLXJlYWN0XCI7XG5pbXBvcnQgeyB2NCBhcyB1dWlkVjQgfSBmcm9tIFwidXVpZFwiO1xuaW1wb3J0IHsgZ2V0R3JvdXBCeVdpbmRvd05hbWUsIGdldE9wZW5lZFdpbmRvd0luZGV4QnlXb3Jrc3BhY2UsIGdldFdpbmRvd0J5V29ya3NwYWNlTmFtZSwgd29ya3NwYWNlMlN0b3JlIH0gZnJvbSBcIkBvcGVubXJzL2VzbS1leHRlbnNpb25zXCI7XG5pbXBvcnQgeyB1c2VTdG9yZVdpdGhBY3Rpb25zIH0gZnJvbSBcIkBvcGVubXJzL2VzbS1yZWFjdC11dGlsc1wiO1xuaW1wb3J0IHsgc2hhbGxvd0VxdWFsIH0gZnJvbSBcIkBvcGVubXJzL2VzbS11dGlsc1wiO1xuaW1wb3J0IHsgc2hvd01vZGFsIH0gZnJvbSBcIi4uL21vZGFscy9pbmRleC5qc1wiO1xuLyoqXG4gKiBBdHRlbXB0cyB0byBsYXVuY2ggdGhlIHNwZWNpZmllZCB3b3Jrc3BhY2UgZ3JvdXAgd2l0aCB0aGUgZ2l2ZW4gZ3JvdXAgcHJvcHMuIE5vdGUgdGhhdCBvbmx5IG9uZSB3b3Jrc3BhY2UgZ3JvdXBcbiAqIG1heSBiZSBvcGVuZWQgYXQgYW55IGdpdmVuIHRpbWUuIElmIGEgd29ya3NwYWNlIGdyb3VwIGlzIGFscmVhZHkgb3BlbmVkLCBjYWxsaW5nIGBsYXVuY2hXb3Jrc3BhY2VHcm91cDJgIHdpdGhcbiAqIGVpdGhlciBhIGRpZmZlcmVudCBncm91cCBuYW1lLCBvciBzYW1lIGdyb3VwIG5hbWUgYnV0IGRpZmZlcmVudCBpbmNvbXBhdGlibGUgcHJvcHMqKiwgd2lsbCByZXN1bHQgaW4gcHJvbXB0aW5nIHRvXG4gKiBjb25maXJtIGNsb3Npbmcgd29ya3NwYWNlcy4gSWYgdGhlIHVzZXIgY29uZmlybXMsIHRoZSBvcGVuZWQgZ3JvdXAsIGFsb25nIHdpdGggaXRzIHdpbmRvd3MgKGFuZCB0aGVpciB3b3Jrc3BhY2VzKSwgaXMgY2xvc2VkLCBhbmRcbiAqIHRoZSByZXF1ZXN0ZWQgZ3JvdXAgaXMgaW1tZWRpYXRlbHkgb3BlbmVkLlxuICpcbiAqICoqIDIgc2V0cyBvZiBwcm9wcyBhcmUgY29tcGF0aWJsZSBpZiBlaXRoZXIgb25lIGlzIG51bGxpc2gsIG9yIGlmIHRoZXkgYXJlIHNoYWxsb3cgZXF1YWwuXG4gKiBAZXhwZXJpbWVudGFsXG4gKiBAcGFyYW0gZ3JvdXBOYW1lXG4gKiBAcGFyYW0gZ3JvdXBQcm9wc1xuICogQHJldHVybnMgYSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdHJ1ZSBpZiB0aGUgc3BlY2lmaWVkIHdvcmtzcGFjZSBncm91cCB3aXRoIHRoZSBzcGVjaWZpZWQgZ3JvdXAgcHJvcHNcbiAqICBpcyBzdWNjZXNzZnVsbHkgb3BlbmVkLCBvciB0aGF0IGl0IGFscmVhZHkgaXMgb3BlbmVkLlxuICovIGV4cG9ydCBhc3luYyBmdW5jdGlvbiBsYXVuY2hXb3Jrc3BhY2VHcm91cDIoZ3JvdXBOYW1lLCBncm91cFByb3BzKSB7XG4gICAgY29uc3QgeyBvcGVuZWRHcm91cCB9ID0gd29ya3NwYWNlMlN0b3JlLmdldFN0YXRlKCk7XG4gICAgaWYgKG9wZW5lZEdyb3VwKSB7XG4gICAgICAgIGlmIChvcGVuZWRHcm91cC5ncm91cE5hbWUgIT09IGdyb3VwTmFtZSB8fCAhYXJlUHJvcHNDb21wYXRpYmxlKG9wZW5lZEdyb3VwLnByb3BzLCBncm91cFByb3BzKSkge1xuICAgICAgICAgICAgY29uc3Qgb2tUb0Nsb3NlV29ya3NwYWNlcyA9IGF3YWl0IHByb21wdEZvckNsb3NpbmdXb3Jrc3BhY2VzKHtcbiAgICAgICAgICAgICAgICByZWFzb246ICdDTE9TRV9XT1JLU1BBQ0VfR1JPVVAnLFxuICAgICAgICAgICAgICAgIGV4cGxpY2l0OiBmYWxzZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoIW9rVG9DbG9zZVdvcmtzcGFjZXMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIC8vIGVsc2UsIHByb2NlZWQgdG8gb3BlbiB0aGUgbmV3IGdyb3VwIHdpdGggbm8gb3BlbmVkV2luZG93c1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gbm8tb3AsIGdyb3VwIHdpdGggZ3JvdXAgcHJvcHMgaXMgYWxyZWFkeSBvcGVuZWRcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHdvcmtzcGFjZTJTdG9yZS5zZXRTdGF0ZSgoc3RhdGUpPT4oe1xuICAgICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgICBvcGVuZWRHcm91cDoge1xuICAgICAgICAgICAgICAgIGdyb3VwTmFtZSxcbiAgICAgICAgICAgICAgICBwcm9wczogZ3JvdXBQcm9wc1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9wZW5lZFdpbmRvd3M6IFtdXG4gICAgICAgIH0pKTtcbiAgICByZXR1cm4gdHJ1ZTtcbn1cbi8qKlxuICogQ2xvc2VzIHRoZSB3b3Jrc3BhY2UgZ3JvdXAgdGhhdCBpcyBjdXJyZW50bHkgb3BlbmVkLiBOb3RlIHRoYXQgb25seSBvbmUgd29ya3NwYWNlIGdyb3VwXG4gKiBtYXkgYmUgb3BlbmVkIGF0IGFueSBnaXZlbiB0aW1lXG4gKiBAZXhwZXJpbWVudGFsXG4gKiBAcGFyYW0gZGlzY2FyZFVuc2F2ZWRDaGFuZ2VzIElmIHRydWUsIHRoZW4gdGhlIHdvcmtzcGFjZSBncm91cCBpcyBmb3JjZWQgY2xvc2VkLCB3aXRoIG5vIHByb21wdFxuICogZm9yIGNvbmZpcm1hdGlvbiBmb3IgdW5zYXZlZCBjaGFuZ2VzIGluIGFueSBvcGVuZWQgd29ya3NwYWNlLiBUaGlzIHNob3VsZCBiZSB1c2VkIHNwYXJpbmdseVxuICogZm9yIGNsZWFuLXVwIHB1cnBvc2UsIGV4OiB3aGVuIGV4aXRpbmcgYW4gYXBwLlxuICogQHJldHVybnMgYSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdHJ1ZSBpZiB0aGVyZSBpcyBubyBvcGVuZWQgZ3JvdXAgdG8gYmVnaW4gd2l0aCBvciB3ZSBzdWNjZXNzZnVsbHkgY2xvc2VkXG4gKiB0aGUgb3BlbmVkIGdyb3VwOyBmYWxzZSBvdGhlcndpc2UuXG4gKi8gZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNsb3NlV29ya3NwYWNlR3JvdXAyKGRpc2NhcmRVbnNhdmVkQ2hhbmdlcykge1xuICAgIGNvbnN0IHN0YXRlID0gd29ya3NwYWNlMlN0b3JlLmdldFN0YXRlKCk7XG4gICAgY29uc3QgeyBvcGVuZWRHcm91cCwgb3BlbmVkV2luZG93cyB9ID0gc3RhdGU7XG4gICAgaWYgKG9wZW5lZEdyb3VwKSB7XG4gICAgICAgIGlmIChvcGVuZWRXaW5kb3dzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IG9rVG9DbG9zZVdvcmtzcGFjZXMgPSBkaXNjYXJkVW5zYXZlZENoYW5nZXMgfHwgYXdhaXQgcHJvbXB0Rm9yQ2xvc2luZ1dvcmtzcGFjZXMoe1xuICAgICAgICAgICAgICAgIHJlYXNvbjogJ0NMT1NFX1dPUktTUEFDRV9HUk9VUCcsXG4gICAgICAgICAgICAgICAgZXhwbGljaXQ6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKCFva1RvQ2xvc2VXb3Jrc3BhY2VzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHdvcmtzcGFjZTJTdG9yZS5zZXRTdGF0ZSgoc3RhdGUpPT4oe1xuICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgICAgIG9wZW5lZEdyb3VwOiBudWxsLFxuICAgICAgICAgICAgICAgIG9wZW5lZFdpbmRvd3M6IFtdXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICAvLyBubyBvcGVuZWRHcm91cCB3aXRoIGJlZ2luIHdpdGgsIHJldHVybiB0cnVlXG4gICAgcmV0dXJuIHRydWU7XG59XG4vKipcbiAqIEF0dGVtcHRzIHRvIGxhdW5jaCB0aGUgc3BlY2lmaWVkIHdvcmtzcGFjZSB3aXRoIHRoZSBnaXZlbiB3b3Jrc3BhY2UgcHJvcHMuIFRoaXMgYWxzbyBpbXBsaWNpdGx5IG9wZW5zXG4gKiB0aGUgd29ya3NwYWNlIHdpbmRvdyB0byB3aGljaCB0aGUgd29ya3NwYWNlIGJlbG9uZ3MgKGlmIGl0J3Mgbm90IG9wZW5lZCBhbHJlYWR5KSxcbiAqIGFuZCB0aGUgd29ya3NwYWNlIGdyb3VwIHRvIHdoaWNoIHRoZSB3aW5kb3cgYmVsb25ncyAoaWYgaXQncyBub3Qgb3BlbmVkIGFscmVhZHkpLlxuICpcbiAqIFdoZW4gY2FsbGluZyBgbGF1bmNoV29ya3NwYWNlMmAsIHdlIG5lZWQgdG8gYWxzbyBwYXNzIGluIHRoZSB3b3Jrc3BhY2UgcHJvcHMuIFdoaWxlIG5vdCByZXF1aXJlZCxcbiAqIHdlIGNhbiBhbHNvIHBhc3MgaW4gdGhlIHdpbmRvdyBwcm9wcyAoc2hhcmVkIGJ5IG90aGVyIHdvcmtzcGFjZXMgaW4gdGhlIHdpbmRvdykgYW5kIHRoZSBncm91cCBwcm9wc1xuICogKHNoYXJlZCBieSBhbGwgd2luZG93cyBhbmQgdGhlaXIgd29ya3NwYWNlcykuIE9taXR0aW5nIHRoZSB3aW5kb3cgcHJvcHMgb3IgdGhlIGdyb3VwIHByb3BzW14xXSBtZWFucyB0aGUgY2FsbGVyXG4gKiBleHBsaWNpdGx5IGRvZXMgbm90IGNhcmUgd2hhdCB0aGUgY3VycmVudCB3aW5kb3cgcHJvcHMgYW5kIGdyb3VwIHByb3BzIGFyZSwgYW5kIHRoYXQgdGhleSBtYXkgYmUgc2V0XG4gKiBieSBvdGhlciBhY3Rpb25zIChsaWtlIGNhbGxpbmcgYGxhdW5jaFdvcmtzcGFjZTJgIG9uIGEgZGlmZmVyZW50IHdvcmtzcGFjZSB3aXRoIHRob3NlIHByb3BzIHBhc3NlZCBpbilcbiAqIGF0IGEgbGF0ZXIgdGltZS5cbiAqXG4gKiBJZiB0aGVyZSBpcyBhbHJlYWR5IGFuIG9wZW5lZCB3b3Jrc3BhY2UgZ3JvdXAsIGFuZCBpdCdzIG5vdCB0aGUgZ3JvdXAgdGhlIHdvcmtzcGFjZSBiZWxvbmdzIHRvXG4gKiBvciBoYXMgaW5jb21wYXRpYmxlW14yXSBncm91cCBwcm9wcywgdGhlbiB3ZSBwcm9tcHQgdGhlIHVzZXIgdG8gY2xvc2UgdGhlIGdyb3VwIChhbmQgaXRzIHdpbmRvd3MgYW5kIHRoZWlyIHdvcmtzcGFjZXMpLlxuICogT24gdXNlciBjb25maXJtLCB0aGUgZXhpc3Rpbmcgb3BlbmVkIGdyb3VwIGlzIGNsb3NlZCBhbmQgdGhlIG5ldyB3b3Jrc3BhY2UsIGFsb25nIHdpdGggaXRzIHdpbmRvdyBhbmQgaXRzIGdyb3VwLFxuICogaXMgb3BlbmVkLlxuICpcbiAqIElmIHRoZSB3aW5kb3cgaXMgYWxyZWFkeSBvcGVuZWQsIGJ1dCB3aXRoIGluY29tcGF0aWJsZSB3aW5kb3cgcHJvcHMsIHdlIHByb21wdCB0aGUgdXNlciB0byBjbG9zZVxuICogdGhlIHdpbmRvdyAoYW5kIGFsbCBpdHMgb3BlbmVkIHdvcmtzcGFjZXMpLCBhbmQgcmVvcGVuIHRoZSB3aW5kb3cgd2l0aCAob25seSkgdGhlIG5ld2x5IHJlcXVlc3RlZCB3b3Jrc3BhY2UuXG4gKlxuICogSWYgdGhlIHdvcmtzcGFjZSBpcyBhbHJlYWR5IG9wZW5lZCwgYnV0IHdpdGggaW5jb21wYXRpYmxlIHdvcmtzcGFjZSBwcm9wcywgd2UgYWxzbyBwcm9tcHQgdGhlIHVzZXIgdG8gY2xvc2VcbiAqIHRoZSAqKndpbmRvdyoqIChhbmQgYWxsIGl0cyBvcGVuZWQgd29ya3NwYWNlcyksIGFuZCByZW9wZW4gdGhlIHdpbmRvdyB3aXRoIChvbmx5KSB0aGUgbmV3bHkgcmVxdWVzdGVkIHdvcmtzcGFjZS5cbiAqIFRoaXMgaXMgdHJ1ZSByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhlIGFscmVhZHkgb3BlbmVkIHdvcmtzcGFjZSBoYXMgYW55IGNoaWxkIHdvcmtzcGFjZXMuXG4gKlxuICogTm90ZSB0aGF0IGNhbGxpbmcgdGhpcyBmdW5jdGlvbiAqbmV2ZXIqIHJlc3VsdHMgaW4gY3JlYXRpbmcgYSBjaGlsZCB3b3Jrc3BhY2UgaW4gdGhlIGFmZmVjdGVkIHdpbmRvdy5cbiAqIFRvIGRvIHNvLCB3ZSBuZWVkIHRvIGNhbGwgYGxhdW5jaENoaWxkV29ya3NwYWNlYCBpbnN0ZWFkLlxuICpcbiAqIFteMV0gT21pdHRpbmcgd2luZG93IG9yIGdyb3VwIHByb3BzIGlzIHVzZWZ1bCBmb3Igd29ya3NwYWNlcyB0aGF0IGRvbid0IGhhdmUgdGllcyB0byB0aGUgd2luZG93IG9yIGdyb3VwIFwiY29udGV4dFwiIChwcm9wcykuXG4gKiBGb3IgZXhhbXBsZSwgaW4gdGhlIHBhdGllbnQgY2hhcnQsIHRoZSB2aXNpdCBub3RlcyAvIGNsaW5pY2FsIGZvcm1zIC8gb3JkZXIgYmFza2V0IGFjdGlvbiBtZW51IGJ1dHRvbiBhbGwgc2hhcmVcbiAqIGEgXCJncm91cCBjb250ZXh0XCIgb2YgdGhlIGN1cnJlbnQgdmlzaXQuIEhvd2V2ZXIsIHRoZSBcInBhdGllbnQgbGlzdFwiIGFjdGlvbiBtZW51IGJ1dHRvbiBkb2VzIG5vdCBuZWVkIHRvIHNoYXJlIHRoYXQgZ3JvdXBcbiAqIGNvbnRleHQsIHNvIG9wZW5pbmcgdGhhdCB3b3Jrc3BhY2Ugc2hvdWxkIG5vdCBuZWVkIHRvIGNhdXNlIG90aGVyIHdvcmtzcGFjZXMgLyB3aW5kb3dzIC8gZ3JvdXBzIHRvIHBvdGVudGlhbGx5IGNsb3NlLlxuICogVGhlIFwicGF0aWVudCBzZWFyY2hcIiB3b3Jrc3BhY2UgaW4gdGhlIHF1ZXVlcyBhbmQgd2FyZCBhcHBzIGlzIGFub3RoZXIgZXhhbXBsZS5cbiAqXG4gKiBbXjJdIDIgc2V0cyBvZiBwcm9wcyBhcmUgY29tcGF0aWJsZSBpZiBlaXRoZXIgb25lIGlzIG51bGxpc2gsIG9yIGlmIHRoZXkgYXJlIHNoYWxsb3cgZXF1YWwuXG4gKiBAZXhwZXJpbWVudGFsXG4gKi8gZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxhdW5jaFdvcmtzcGFjZTIod29ya3NwYWNlTmFtZSwgd29ya3NwYWNlUHJvcHMgPSBudWxsLCB3aW5kb3dQcm9wcyA9IG51bGwsIGdyb3VwUHJvcHMgPSBudWxsKSB7XG4gICAgY29uc3Qgc3RvcmVTdGF0ZSA9IHdvcmtzcGFjZTJTdG9yZS5nZXRTdGF0ZSgpO1xuICAgIGlmICghc3RvcmVTdGF0ZS5yZWdpc3RlcmVkV29ya3NwYWNlc0J5TmFtZVt3b3Jrc3BhY2VOYW1lXSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBsYXVuY2ggd29ya3NwYWNlICR7d29ya3NwYWNlTmFtZX0uIFdvcmtzcGFjZSBpcyBub3QgcmVnaXN0ZXJlZGApO1xuICAgIH1cbiAgICBjb25zdCB3aW5kb3dEZWYgPSBnZXRXaW5kb3dCeVdvcmtzcGFjZU5hbWUod29ya3NwYWNlTmFtZSk7XG4gICAgaWYgKCF3aW5kb3dEZWYpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gbGF1bmNoIHdvcmtzcGFjZSAke3dvcmtzcGFjZU5hbWV9LiBXb3Jrc3BhY2UgaXMgbm90IHJlZ2lzdGVyZWQgdG8gYSB3b3Jrc3BhY2Ugd2luZG93YCk7XG4gICAgfVxuICAgIGNvbnN0IHsgb3BlbmVkR3JvdXAgfSA9IHN0b3JlU3RhdGU7XG4gICAgY29uc3QgeyBuYW1lOiB3aW5kb3dOYW1lIH0gPSB3aW5kb3dEZWY7XG4gICAgY29uc3QgZ3JvdXBEZWYgPSBnZXRHcm91cEJ5V2luZG93TmFtZSh3aW5kb3dOYW1lKTtcbiAgICBpZiAoIWdyb3VwRGVmKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIGxhdW5jaCB3b3Jrc3BhY2UgJHt3b3Jrc3BhY2VOYW1lfS4gV29ya3NwYWNlIHdpbmRvdyAke3dpbmRvd0RlZi5uYW1lfSBpcyBub3QgcmVnaXN0ZXJlZCB0byBhIHdvcmtzcGFjZSBncm91cGApO1xuICAgIH1cbiAgICBjb25zdCBvcGVuZWRXaW5kb3dJbmRleCA9IGdldE9wZW5lZFdpbmRvd0luZGV4QnlXb3Jrc3BhY2Uod29ya3NwYWNlTmFtZSk7XG4gICAgY29uc3QgaXNXaW5kb3dBbHJlYWR5T3BlbmVkID0gb3BlbmVkV2luZG93SW5kZXggPj0gMDtcbiAgICAvLyBpZiBjdXJyZW50IG9wZW5lZCBncm91cCBpcyBub3QgdGhlIHNhbWUgYXMgdGhlIHJlcXVlc3RlZCBncm91cCwgb3IgaWYgdGhlIGdyb3VwIHByb3BzIGFyZSBkaWZmZXJlbnQsIHRoZW4gcHJvbXB0IGZvciB1bnNhdmVkIGNoYW5nZXNcbiAgICBpZiAob3BlbmVkR3JvdXAgJiYgKG9wZW5lZEdyb3VwLmdyb3VwTmFtZSAhPT0gZ3JvdXBEZWYubmFtZSB8fCAhYXJlUHJvcHNDb21wYXRpYmxlKG9wZW5lZEdyb3VwLnByb3BzLCBncm91cFByb3BzKSkpIHtcbiAgICAgICAgY29uc3Qgb2tUb0Nsb3NlV29ya3NwYWNlcyA9IGF3YWl0IHByb21wdEZvckNsb3NpbmdXb3Jrc3BhY2VzKHtcbiAgICAgICAgICAgIHJlYXNvbjogJ0NMT1NFX1dPUktTUEFDRV9HUk9VUCcsXG4gICAgICAgICAgICBleHBsaWNpdDogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKG9rVG9DbG9zZVdvcmtzcGFjZXMpIHtcbiAgICAgICAgICAgIHdvcmtzcGFjZTJTdG9yZS5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAgICAgLi4uc3RvcmVTdGF0ZSxcbiAgICAgICAgICAgICAgICBvcGVuZWRHcm91cDoge1xuICAgICAgICAgICAgICAgICAgICBncm91cE5hbWU6IGdyb3VwRGVmLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHByb3BzOiBncm91cFByb3BzXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBvcGVuZWRXaW5kb3dzOiBbXG4gICAgICAgICAgICAgICAgICAgIC8vIGRpc2NhcmQgYWxsIG9wZW5lZCB3aW5kb3dzLCBvcGVuIGEgbmV3IG9uZSB3aXRoIHRoZSByZXF1ZXN0ZWQgd29ya3NwYWNlXG4gICAgICAgICAgICAgICAgICAgIC8vIG1vc3QgcmVjZW50bHkgb3BlbmVkIGFjdGlvbiBhcHBlbmRlZCB0byB0aGUgZW5kXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvd05hbWU6IHdpbmRvd05hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcGVuZWRXb3Jrc3BhY2VzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3T3BlbmVkV29ya3NwYWNlKHdvcmtzcGFjZU5hbWUsIHdvcmtzcGFjZVByb3BzKVxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzOiB3aW5kb3dQcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1heGltaXplZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgaXNNb3N0UmVjZW50bHlPcGVuZWRXaW5kb3dIaWRkZW46IGZhbHNlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1dpbmRvd0FscmVhZHlPcGVuZWQpIHtcbiAgICAgICAgY29uc3Qgb3BlbmVkV2luZG93ID0gc3RvcmVTdGF0ZS5vcGVuZWRXaW5kb3dzW29wZW5lZFdpbmRvd0luZGV4XTtcbiAgICAgICAgY29uc3QgZ3JvdXBQcm9wcyA9IHN0b3JlU3RhdGUub3BlbmVkR3JvdXA/LnByb3BzID8/IHt9O1xuICAgICAgICBjb25zdCBpc01vc3RSZWNlbnRseU9wZW5lZFdpbmRvd0hpZGRlbiA9IHN0b3JlU3RhdGUuaXNNb3N0UmVjZW50bHlPcGVuZWRXaW5kb3dIaWRkZW47XG4gICAgICAgIGNvbnN0IHsgb3BlbmVkV29ya3NwYWNlcyB9ID0gb3BlbmVkV2luZG93O1xuICAgICAgICBpZiAoYXJlUHJvcHNDb21wYXRpYmxlKG9wZW5lZFdpbmRvdy5wcm9wcywgd2luZG93UHJvcHMpKSB7XG4gICAgICAgICAgICAvLyB0aGlzIGNhc2UgaXMgdHJpY2t5LCB0aGlzIHJlc3VsdHMgaW4gcmVzdG9yaW5nIHRoZSB3aW5kb3cgaWY6XG4gICAgICAgICAgICAvLyAxLiB0aGUgd29ya3NwYWNlIGlzIG9wZW5lZCAoYnV0IG5vdCBuZWNlc3NhcmlseSBhcyBhIGxlYWYgd29ya3NwYWNlKVxuICAgICAgICAgICAgLy8gMi4gdGhlIHByb3BzIG9mIHRoZSBvcGVuZWQgd29ya3NwYWNlIGlzIHNhbWUgYXMgd29ya3NwYWNlIHByb3BzIChmcm9tIHRoZSBmdW5jdGlvbiBpbnB1dClcbiAgICAgICAgICAgIC8vXG4gICAgICAgICAgICAvLyBPdGhlcndpc2UsIHdlIGNsb3NlIGFsbCB3b3Jrc3BhY2VzIGluIHRoaXMgd2luZG93LCBhbmQgb3BlbiB0aGlzIG5ld2x5IHJlcXVlc3RlZCBvbmVcbiAgICAgICAgICAgIGNvbnN0IG9wZW5lZFdvcmtzcGFjZSA9IG9wZW5lZFdvcmtzcGFjZXMuZmluZCgodyk9Pncud29ya3NwYWNlTmFtZSA9PT0gd29ya3NwYWNlTmFtZSk7XG4gICAgICAgICAgICBpZiAob3BlbmVkV29ya3NwYWNlICYmIGFyZVByb3BzQ29tcGF0aWJsZShvcGVuZWRXb3Jrc3BhY2UucHJvcHMsIHdvcmtzcGFjZVByb3BzKSkge1xuICAgICAgICAgICAgICAgIC8vIHJlc3RvcmUgdGhlIHdpbmRvdyBpZiBpdCBpcyBoaWRkZW4gb3Igbm90IHRoZSBtb3N0IHJlY2VudGx5IG9wZW5lZCBvbmVcbiAgICAgICAgICAgICAgICBpZiAoaXNNb3N0UmVjZW50bHlPcGVuZWRXaW5kb3dIaWRkZW4gfHwgb3BlbmVkV2luZG93SW5kZXggIT09IHN0b3JlU3RhdGUub3BlbmVkV2luZG93cy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHdvcmtzcGFjZTJTdG9yZS5zZXRTdGF0ZSh3b3Jrc3BhY2UyU3RvcmVBY3Rpb25zLnJlc3RvcmVXaW5kb3coc3RvcmVTdGF0ZSwgd2luZG93TmFtZSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb2tUb0Nsb3NlV29ya3NwYWNlcyA9IGF3YWl0IHByb21wdEZvckNsb3NpbmdXb3Jrc3BhY2VzKHtcbiAgICAgICAgICAgICAgICAgICAgcmVhc29uOiAnQ0xPU0VfV09SS1NQQUNFJyxcbiAgICAgICAgICAgICAgICAgICAgZXhwbGljaXQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICB3aW5kb3dOYW1lLFxuICAgICAgICAgICAgICAgICAgICB3b3Jrc3BhY2VOYW1lXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKG9rVG9DbG9zZVdvcmtzcGFjZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgd29ya3NwYWNlMlN0b3JlLnNldFN0YXRlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnN0b3JlU3RhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcGVuZWRHcm91cDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwTmFtZTogZ3JvdXBEZWYubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wczogc3RvcmVTdGF0ZT8ub3BlbmVkR3JvdXA/LnByb3BzID8/IGdyb3VwUHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvcGVuZWRXaW5kb3dzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uc3RvcmVTdGF0ZS5vcGVuZWRXaW5kb3dzLmZpbHRlcigoXywgaSk9PmkgIT09IG9wZW5lZFdpbmRvd0luZGV4KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtb3N0IHJlY2VudGx5IG9wZW5lZCB3b3Jrc3BhY2UgYXQgdGhlIGVuZCBvZiB0aGUgYXJyYXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvd05hbWU6IHdpbmRvd05hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5lZFdvcmtzcGFjZXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld09wZW5lZFdvcmtzcGFjZSh3b3Jrc3BhY2VOYW1lLCB3b3Jrc3BhY2VQcm9wcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM6IG9wZW5lZFdpbmRvdz8ucHJvcHMgPz8gd2luZG93UHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGltaXplZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNNb3N0UmVjZW50bHlPcGVuZWRXaW5kb3dIaWRkZW46IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3Qgb2tUb0Nsb3NlV29ya3NwYWNlcyA9IGF3YWl0IHByb21wdEZvckNsb3NpbmdXb3Jrc3BhY2VzKHtcbiAgICAgICAgICAgICAgICByZWFzb246ICdDTE9TRV9XSU5ET1cnLFxuICAgICAgICAgICAgICAgIGV4cGxpY2l0OiBmYWxzZSxcbiAgICAgICAgICAgICAgICB3aW5kb3dOYW1lXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChva1RvQ2xvc2VXb3Jrc3BhY2VzKSB7XG4gICAgICAgICAgICAgICAgLy8gZGlzY2FyZCB0aGUgb3BlbmVkV2luZG93cyBlbGVtZW50IGF0IG9wZW5lZFdpbmRvd0luZGV4XG4gICAgICAgICAgICAgICAgLy8gYW5kIGNyZWF0ZSBhIG5ldyBvbmUgd2l0aCB0aGUgcmVxdWVzdGVkIHdvcmtzcGFjZSBvcGVuZWRcbiAgICAgICAgICAgICAgICB3b3Jrc3BhY2UyU3RvcmUuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICAgICAgICAuLi5zdG9yZVN0YXRlLFxuICAgICAgICAgICAgICAgICAgICBvcGVuZWRHcm91cDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBOYW1lOiBncm91cERlZi5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM6IGdyb3VwUHJvcHMgPz8gc3RvcmVTdGF0ZT8ub3BlbmVkR3JvdXA/LnByb3BzXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIG9wZW5lZFdpbmRvd3M6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnN0b3JlU3RhdGUub3BlbmVkV2luZG93cy5maWx0ZXIoKF8sIGkpPT5pICE9PSBvcGVuZWRXaW5kb3dJbmRleCksXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBtb3N0IHJlY2VudGx5IG9wZW5lZCB3b3Jrc3BhY2UgYXQgdGhlIGVuZCBvZiB0aGUgYXJyYXlcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3dOYW1lOiB3aW5kb3dOYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5lZFdvcmtzcGFjZXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3T3BlbmVkV29ya3NwYWNlKHdvcmtzcGFjZU5hbWUsIHdvcmtzcGFjZVByb3BzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM6IHdpbmRvd1Byb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGltaXplZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgaXNNb3N0UmVjZW50bHlPcGVuZWRXaW5kb3dIaWRkZW46IGZhbHNlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZ3JvdXBEZWYucGVyc2lzdGVuY2UgPT0gJ2Nsb3NhYmxlJykge1xuICAgICAgICBjb25zdCBva1RvQ2xvc2VXb3Jrc3BhY2VzID0gYXdhaXQgcHJvbXB0Rm9yQ2xvc2luZ1dvcmtzcGFjZXMoe1xuICAgICAgICAgICAgcmVhc29uOiAnQ0xPU0VfT1RIRVJfV0lORE9XUycsXG4gICAgICAgICAgICBleHBsaWNpdDogZmFsc2UsXG4gICAgICAgICAgICB3aW5kb3dOYW1lVG9TcGFyZTogd2luZG93RGVmLm5hbWVcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChva1RvQ2xvc2VXb3Jrc3BhY2VzKSB7XG4gICAgICAgICAgICB3b3Jrc3BhY2UyU3RvcmUuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICAgIC4uLnN0b3JlU3RhdGUsXG4gICAgICAgICAgICAgICAgb3BlbmVkR3JvdXA6IHtcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXBOYW1lOiBncm91cERlZi5uYW1lLFxuICAgICAgICAgICAgICAgICAgICBwcm9wczogZ3JvdXBQcm9wcyA/PyBzdG9yZVN0YXRlPy5vcGVuZWRHcm91cD8ucHJvcHMgPz8gbnVsbFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgb3BlbmVkV2luZG93czogW1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3dOYW1lOiB3aW5kb3dOYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3BlbmVkV29ya3NwYWNlczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld09wZW5lZFdvcmtzcGFjZSh3b3Jrc3BhY2VOYW1lLCB3b3Jrc3BhY2VQcm9wcylcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wczogd2luZG93UHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXhpbWl6ZWQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIGlzTW9zdFJlY2VudGx5T3BlbmVkV2luZG93SGlkZGVuOiBmYWxzZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHdvcmtzcGFjZTJTdG9yZS5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAuLi5zdG9yZVN0YXRlLFxuICAgICAgICAgICAgb3BlbmVkR3JvdXA6IHtcbiAgICAgICAgICAgICAgICBncm91cE5hbWU6IGdyb3VwRGVmLm5hbWUsXG4gICAgICAgICAgICAgICAgcHJvcHM6IGdyb3VwUHJvcHMgPz8gc3RvcmVTdGF0ZT8ub3BlbmVkR3JvdXA/LnByb3BzID8/IG51bGxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvcGVuZWRXaW5kb3dzOiBbXG4gICAgICAgICAgICAgICAgLi4uc3RvcmVTdGF0ZS5vcGVuZWRXaW5kb3dzLFxuICAgICAgICAgICAgICAgIC8vIG1vc3QgcmVjZW50bHkgb3BlbmVkIHdvcmtzcGFjZSBhdCB0aGUgZW5kIG9mIHRoZSBhcnJheVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93TmFtZTogd2luZG93TmFtZSxcbiAgICAgICAgICAgICAgICAgICAgb3BlbmVkV29ya3NwYWNlczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3T3BlbmVkV29ya3NwYWNlKHdvcmtzcGFjZU5hbWUsIHdvcmtzcGFjZVByb3BzKVxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBwcm9wczogd2luZG93UHJvcHMsXG4gICAgICAgICAgICAgICAgICAgIG1heGltaXplZDogZmFsc2VcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgaXNNb3N0UmVjZW50bHlPcGVuZWRXaW5kb3dIaWRkZW46IGZhbHNlXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG59XG4vKipcbiAqIFdoZW4gd2UgbGF1bmNoIGEgd29ya3NwYWNlLCB3ZSBtYXkgcGFzcyBpbiB3b3Jrc3BhY2UgLyB3aW5kb3dzIC8gZ3JvdXAgcHJvcHMuIElmIHRoZSB3b3Jrc3BhY2Ugb3JcbiAqIHdpbmRvdyBvciBncm91cCBpcyBjdXJyZW50bHkgb3BlbmVkLCB3ZSBoYXZlIHRvIGNoZWNrIHdoZXRoZXIgdGhlIGN1cnJlbnQgcHJvcHMgYXJlIGNvbXBhdGlibGUgd2l0aFxuICogdGhlIHBhc3NlZCBpbiBwcm9wcy4gMiBwcm9wcyBBIGFuZCBCIGFyZSBjb21wYXRpYmxlIGlmOlxuICogICBlaXRoZXIgb25lIGlzIG51bGxpc2ggKGJlY2F1c2UgdGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgY2FsbGVyIGRvZXMgbm90IGNhcmUgYWJvdXQgcHJvcCBpbmNvbXBhdGliaWxpdHkpXG4gKiAgIG5laXRoZXIgaXMgbnVsbGlzaCwgYW5kIEEgYW5kIEIgYXJlIHNoYWxsb3cgZXF1YWwuXG4gKiBAcGFyYW0gYSBwcm9wc1xuICogQHBhcmFtIGIgcHJvcHNcbiAqIEByZXR1cm5zIHdoZXRoZXIgcHJvcHMgYSBhbmQgYiBhcmUgY29tcGF0aWJsZVxuICovIGZ1bmN0aW9uIGFyZVByb3BzQ29tcGF0aWJsZShhLCBiKSB7XG4gICAgaWYgKGEgPT0gbnVsbCB8fCBiID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBzaGFsbG93RXF1YWwoYSwgYik7XG59XG4vKipcbiAqIEEgdXNlciBjYW4gcGVyZm9ybSBhY3Rpb25zIHRoYXQgZXhwbGljaXRseSByZXN1bHQgaW4gY2xvc2luZyB3b3Jrc3BhY2VzXG4gKiAoc3VjaCB0aGF0IGNsaWNraW5nIHRoZSAnWCcgYnV0dG9uIGZvciB0aGUgd29ya3NwYWNlIG9yIHdvcmtzcGFjZSBncm91cCksIG9yXG4gKiBpbXBsaWNpdGx5IChieSBvcGVuaW5nIGEgd29ya3NwYWNlIHdpdGggZGlmZmVyZW50IHByb3BzIHRoYW4gdGhlIG9uZSB0aGF0IGlzIGFscmVhZHkgb3BlbmVkKS5cbiAqIENhbGxzIHRvIGNsb3NlV29ya3NwYWNlMigpIG9yIGNsb3NlV29ya3NwYWNlR3JvdXAyKCkgYXJlIGNvbnNpZGVyZWQgZXhwbGljaXQsIHdoaWxlIGNhbGxzXG4gKiB0byBsYXVuY2hXb3Jrc3BhY2UyKCkgb3IgbGF1bmNoV29ya3NwYWNlR3JvdXAyKCkgYXJlIGNvbnNpZGVyZWQgaW1wbGljaXQuXG4gKlxuICogVGhpcyBmdW5jdGlvbiBwcm9tcHRzIHRoZSB1c2VyIGZvciBjb25maXJtYXRpb24gdG8gY2xvc2Ugd29ya3NwYWNlcyB3aXRoIGEgbW9kYWwgZGlhbG9nLlxuICogV2hlbiB0aGUgY2xvc2luZyBpcyBleHBsaWNpdCwgaXQgcHJvbXB0cyBmb3IgY29uZmlybWF0aW9uIGZvciBhZmZlY3RlZCB3b3Jrc3BhY2VzIHdpdGggdW5zYXZlZCBjaGFuZ2VzLlxuICogV2hlbiB0aGUgY2xvc2luZyBpcyBpbXBsaWNpdCwgaXQgcHJvbXB0cyBmb3IgY29uZmlybWF0aW9uIGZvciBhbGwgYWZmZWN0ZWQgd29ya3NwYWNlcywgcmVnYXJkbGVzcyBvZlxuICogd2hldGhlciB0aGV5IGhhdmUgdW5zYXZlZCBjaGFuZ2VzLlxuICogQGV4cGVyaW1lbnRhbFxuICogQHBhcmFtIHByb21wdFJlYXNvblxuICogQHJldHVybnMgYSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdHJ1ZSBpZiB0aGUgdXNlciBjb25maXJtZWQgY2xvc2luZyB0aGUgd29ya3NwYWNlczsgZmFsc2Ugb3RoZXJ3aXNlLlxuICovIGV4cG9ydCBmdW5jdGlvbiBwcm9tcHRGb3JDbG9zaW5nV29ya3NwYWNlcyhwcm9tcHRSZWFzb24pIHtcbiAgICAvLyBpZiBvbmx5VXBUb1RoaXNXb3Jrc3BhY2UgaXMgcHJvdmlkZWQsIHdlIHdpbGwgb25seSBsb29wIHRpbGwgd2UgaGl0IHRoYXQgd29ya3NwYWNlXG4gICAgZnVuY3Rpb24gZ2V0QWZmZWN0ZWRXb3Jrc3BhY2VzSW5XaW5kb3cob3BlbmVkV2luZG93LCBvbmx5VXBUb1RoaXNXb3Jrc3BhY2UpIHtcbiAgICAgICAgY29uc3QgcmV0ID0gW107XG4gICAgICAgIGZvcihsZXQgaSA9IG9wZW5lZFdpbmRvdy5vcGVuZWRXb3Jrc3BhY2VzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKXtcbiAgICAgICAgICAgIGNvbnN0IG9wZW5lZFdvcmtzcGFjZSA9IG9wZW5lZFdpbmRvdy5vcGVuZWRXb3Jrc3BhY2VzW2ldO1xuICAgICAgICAgICAgaWYgKG9wZW5lZFdvcmtzcGFjZS5oYXNVbnNhdmVkQ2hhbmdlcykge1xuICAgICAgICAgICAgICAgIHJldC5wdXNoKG9wZW5lZFdvcmtzcGFjZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAob25seVVwVG9UaGlzV29ya3NwYWNlICYmIG9wZW5lZFdvcmtzcGFjZS53b3Jrc3BhY2VOYW1lID09PSBvbmx5VXBUb1RoaXNXb3Jrc3BhY2UpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmV0O1xuICAgIH1cbiAgICBjb25zdCB7IG9wZW5lZFdpbmRvd3MsIHdvcmtzcGFjZVRpdGxlQnlXb3Jrc3BhY2VOYW1lIH0gPSB3b3Jrc3BhY2UyU3RvcmUuZ2V0U3RhdGUoKTtcbiAgICBsZXQgYWZmZWN0ZWRXb3Jrc3BhY2VzID0gW107XG4gICAgc3dpdGNoKHByb21wdFJlYXNvbi5yZWFzb24pe1xuICAgICAgICBjYXNlICdDTE9TRV9XT1JLU1BBQ0VfR1JPVVAnOlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFmZmVjdGVkV29ya3NwYWNlcyA9IG9wZW5lZFdpbmRvd3MuZmxhdE1hcCgod2luZG93KT0+Z2V0QWZmZWN0ZWRXb3Jrc3BhY2VzSW5XaW5kb3cod2luZG93KSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIGNhc2UgJ0NMT1NFX1dJTkRPVyc6XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3BlbmVkV2luZG93ID0gb3BlbmVkV2luZG93cy5maW5kKCh3aW5kb3cpPT53aW5kb3cud2luZG93TmFtZSA9PT0gcHJvbXB0UmVhc29uLndpbmRvd05hbWUpO1xuICAgICAgICAgICAgICAgIGlmICghb3BlbmVkV2luZG93KSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgV2luZG93ICR7cHJvbXB0UmVhc29uLndpbmRvd05hbWV9IG5vdCBmb3VuZCBpbiBvcGVuZWQgd2luZG93cy5gKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYWZmZWN0ZWRXb3Jrc3BhY2VzID0gZ2V0QWZmZWN0ZWRXb3Jrc3BhY2VzSW5XaW5kb3cob3BlbmVkV2luZG93KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgY2FzZSAnQ0xPU0VfV09SS1NQQUNFJzpcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb25zdCBvcGVuZWRXaW5kb3cgPSBvcGVuZWRXaW5kb3dzLmZpbmQoKHdpbmRvdyk9PndpbmRvdy53aW5kb3dOYW1lID09PSBwcm9tcHRSZWFzb24ud2luZG93TmFtZSk7XG4gICAgICAgICAgICAgICAgaWYgKCFvcGVuZWRXaW5kb3cpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBXaW5kb3cgJHtwcm9tcHRSZWFzb24ud2luZG93TmFtZX0gbm90IGZvdW5kIGluIG9wZW5lZCB3aW5kb3dzLmApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBhZmZlY3RlZFdvcmtzcGFjZXMgPSBnZXRBZmZlY3RlZFdvcmtzcGFjZXNJbldpbmRvdyhvcGVuZWRXaW5kb3csIHByb21wdFJlYXNvbi53b3Jrc3BhY2VOYW1lKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgY2FzZSAnQ0xPU0VfT1RIRVJfV0lORE9XUyc6XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29uc3Qgd2luZG93c1RvQ2xvc2UgPSBvcGVuZWRXaW5kb3dzLmZpbHRlcigod2luZG93KT0+d2luZG93LndpbmRvd05hbWUgIT09IHByb21wdFJlYXNvbi53aW5kb3dOYW1lVG9TcGFyZSk7XG4gICAgICAgICAgICAgICAgYWZmZWN0ZWRXb3Jrc3BhY2VzID0gd2luZG93c1RvQ2xvc2UuZmxhdE1hcCgodyk9PmdldEFmZmVjdGVkV29ya3NwYWNlc0luV2luZG93KHcpKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGFmZmVjdGVkV29ya3NwYWNlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0cnVlKTsgLy8gbm8gdW5zYXZlZCBjaGFuZ2VzLCBubyBuZWVkIHRvIHByb21wdFxuICAgIH1cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpPT57XG4gICAgICAgIGNvbnN0IGRpc3Bvc2UgPSBzaG93TW9kYWwoJ3dvcmtzcGFjZTItY2xvc2UtcHJvbXB0Jywge1xuICAgICAgICAgICAgb25Db25maXJtOiAoKT0+e1xuICAgICAgICAgICAgICAgIGRpc3Bvc2UoKTtcbiAgICAgICAgICAgICAgICByZXNvbHZlKHRydWUpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uQ2FuY2VsOiAoKT0+e1xuICAgICAgICAgICAgICAgIGRpc3Bvc2UoKTtcbiAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhZmZlY3RlZFdvcmtzcGFjZVRpdGxlczogYWZmZWN0ZWRXb3Jrc3BhY2VzLm1hcCgod29ya3NwYWNlKT0+d29ya3NwYWNlVGl0bGVCeVdvcmtzcGFjZU5hbWVbd29ya3NwYWNlLndvcmtzcGFjZU5hbWVdKVxuICAgICAgICB9KTtcbiAgICB9KTtcbn1cbmV4cG9ydCBjb25zdCB3b3Jrc3BhY2UyU3RvcmVBY3Rpb25zID0ge1xuICAgIHNldFdpbmRvd01heGltaXplZCAoc3RhdGUsIHdpbmRvd05hbWUsIG1heGltaXplZCkge1xuICAgICAgICBjb25zdCBvcGVuZWRXaW5kb3dJbmRleCA9IHN0YXRlLm9wZW5lZFdpbmRvd3MuZmluZEluZGV4KChhKT0+YS53aW5kb3dOYW1lID09PSB3aW5kb3dOYW1lKTtcbiAgICAgICAgY29uc3Qgb3BlbmVkV2luZG93cyA9IFtcbiAgICAgICAgICAgIC4uLnN0YXRlLm9wZW5lZFdpbmRvd3NcbiAgICAgICAgXTtcbiAgICAgICAgY29uc3QgY3VycmVudFdpbmRvdyA9IHtcbiAgICAgICAgICAgIC4uLm9wZW5lZFdpbmRvd3Nbb3BlbmVkV2luZG93SW5kZXhdLFxuICAgICAgICAgICAgbWF4aW1pemVkXG4gICAgICAgIH07XG4gICAgICAgIG9wZW5lZFdpbmRvd3Nbb3BlbmVkV2luZG93SW5kZXhdID0gY3VycmVudFdpbmRvdztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgb3BlbmVkV2luZG93c1xuICAgICAgICB9O1xuICAgIH0sXG4gICAgLy8gaGlkZXMgdGhlIG1vc3QgcmVjZW50bHkgb3BlbmVkIHdpbmRvdyAoYWxsIG90aGVyIG9wZW5lZCB3aW5kb3dzIGFyZSBpbXBsaWNpdGx5IGhpZGRlbilcbiAgICBoaWRlV2luZG93IChzdGF0ZSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgICBpc01vc3RSZWNlbnRseU9wZW5lZFdpbmRvd0hpZGRlbjogdHJ1ZVxuICAgICAgICB9O1xuICAgIH0sXG4gICAgcmVzdG9yZVdpbmRvdyAoc3RhdGUsIHdpbmRvd05hbWUpIHtcbiAgICAgICAgY29uc3Qgb3BlbmVkV2luZG93SW5kZXggPSBzdGF0ZS5vcGVuZWRXaW5kb3dzLmZpbmRJbmRleCgoYSk9PmEud2luZG93TmFtZSA9PT0gd2luZG93TmFtZSk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRXaW5kb3cgPSBzdGF0ZS5vcGVuZWRXaW5kb3dzW29wZW5lZFdpbmRvd0luZGV4XTtcbiAgICAgICAgY29uc3Qgb3BlbmVkV2luZG93cyA9IFtcbiAgICAgICAgICAgIC4uLnN0YXRlLm9wZW5lZFdpbmRvd3MuZmlsdGVyKChfLCBpKT0+aSAhPT0gb3BlbmVkV2luZG93SW5kZXgpLFxuICAgICAgICAgICAgY3VycmVudFdpbmRvd1xuICAgICAgICBdO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgICBvcGVuZWRXaW5kb3dzLFxuICAgICAgICAgICAgaXNNb3N0UmVjZW50bHlPcGVuZWRXaW5kb3dIaWRkZW46IGZhbHNlXG4gICAgICAgIH07XG4gICAgfSxcbiAgICBjbG9zZVdvcmtzcGFjZSAoc3RhdGUsIHdvcmtzcGFjZU5hbWUpIHtcbiAgICAgICAgY29uc3Qgb3BlbmVkV2luZG93SW5kZXggPSBnZXRPcGVuZWRXaW5kb3dJbmRleEJ5V29ya3NwYWNlKHdvcmtzcGFjZU5hbWUpO1xuICAgICAgICBpZiAob3BlbmVkV2luZG93SW5kZXggPCAwKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RhdGU7IC8vIG5vLW9wIGlmIHRoZSB3aW5kb3cgZG9lcyBub3QgZXhpc3RcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB3aW5kb3cgPSB7XG4gICAgICAgICAgICAuLi5zdGF0ZS5vcGVuZWRXaW5kb3dzW29wZW5lZFdpbmRvd0luZGV4XVxuICAgICAgICB9O1xuICAgICAgICBjb25zdCB3b3Jrc3BhY2VJbmRleCA9IHdpbmRvdy5vcGVuZWRXb3Jrc3BhY2VzLmZpbmRJbmRleCgodyk9Pncud29ya3NwYWNlTmFtZSA9PT0gd29ya3NwYWNlTmFtZSk7XG4gICAgICAgIGNvbnN0IG9wZW5lZFdpbmRvd3MgPSBbXG4gICAgICAgICAgICAuLi5zdGF0ZS5vcGVuZWRXaW5kb3dzXG4gICAgICAgIF07XG4gICAgICAgIC8vIGNsb3NlIGFsbCBjaGlsZHJlbiBvZiB0aGUgaW5wdXQgd29ya3NwYWNlIGFzIHdlbGxcbiAgICAgICAgd2luZG93Lm9wZW5lZFdvcmtzcGFjZXMgPSB3aW5kb3cub3BlbmVkV29ya3NwYWNlcy5zbGljZSgwLCB3b3Jrc3BhY2VJbmRleCk7XG4gICAgICAgIGxldCBoaWRkZW4gPSBzdGF0ZS5pc01vc3RSZWNlbnRseU9wZW5lZFdpbmRvd0hpZGRlbjtcbiAgICAgICAgaWYgKHdpbmRvdy5vcGVuZWRXb3Jrc3BhY2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgY29uc3Qgd2FzTW9zdFJlY2VudFdpbmRvdyA9IG9wZW5lZFdpbmRvd0luZGV4ID09PSBzdGF0ZS5vcGVuZWRXaW5kb3dzLmxlbmd0aCAtIDE7XG4gICAgICAgICAgICAvLyBpZiBubyB3b3Jrc3BhY2VzIGxlZnQsIHJlbW92ZSB0aGUgd2luZG93XG4gICAgICAgICAgICBvcGVuZWRXaW5kb3dzLnNwbGljZShvcGVuZWRXaW5kb3dJbmRleCwgMSk7XG4gICAgICAgICAgICAvLyBJZiB3ZSByZW1vdmVkIHRoZSBtb3N0IHJlY2VudCB3aW5kb3cgYW5kIHRoZXJlIGFyZSBzdGlsbCB3aW5kb3dzIGxlZnQsXG4gICAgICAgICAgICAvLyB0aGUgbmV3IG1vc3QgcmVjZW50IHdpbmRvdyBzaG91bGQgYmUgc2hvd25cbiAgICAgICAgICAgIGlmICh3YXNNb3N0UmVjZW50V2luZG93ICYmIG9wZW5lZFdpbmRvd3MubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGhpZGRlbiA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gaWYgdGhlcmUgYXJlIHN0aWxsIHdvcmtzcGFjZXMgbGVmdCwganVzdCB1cGRhdGUgdGhlIHdpbmRvd1xuICAgICAgICAgICAgb3BlbmVkV2luZG93c1tvcGVuZWRXaW5kb3dJbmRleF0gPSB3aW5kb3c7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgb3BlbmVkV2luZG93cyxcbiAgICAgICAgICAgIGlzTW9zdFJlY2VudGx5T3BlbmVkV2luZG93SGlkZGVuOiBoaWRkZW5cbiAgICAgICAgfTtcbiAgICB9LFxuICAgIG9wZW5DaGlsZFdvcmtzcGFjZSAoc3RhdGUsIHBhcmVudFdvcmtzcGFjZU5hbWUsIGNoaWxkV29ya3NwYWNlTmFtZSwgY2hpbGRXb3Jrc3BhY2VQcm9wcykge1xuICAgICAgICBjb25zdCBjaGlsZFdvcmtzcGFjZURlZiA9IHN0YXRlLnJlZ2lzdGVyZWRXb3Jrc3BhY2VzQnlOYW1lW2NoaWxkV29ya3NwYWNlTmFtZV07XG4gICAgICAgIGlmICghY2hpbGRXb3Jrc3BhY2VEZWYpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTm8gd29ya3NwYWNlIG5hbWVkIFwiJHtjaGlsZFdvcmtzcGFjZU5hbWV9XCIgcmVnaXN0ZXJlZGApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBhcmVudFdvcmtzcGFjZURlZiA9IHN0YXRlLnJlZ2lzdGVyZWRXb3Jrc3BhY2VzQnlOYW1lW3BhcmVudFdvcmtzcGFjZU5hbWVdO1xuICAgICAgICBpZiAoIXBhcmVudFdvcmtzcGFjZURlZikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyB3b3Jrc3BhY2UgbmFtZWQgXCIke3BhcmVudFdvcmtzcGFjZU5hbWV9XCIgcmVnaXN0ZXJlZGApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYXJlbnRXb3Jrc3BhY2VEZWYud2luZG93ICE9PSBjaGlsZFdvcmtzcGFjZURlZi53aW5kb3cpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2hpbGQgd29ya3NwYWNlICR7Y2hpbGRXb3Jrc3BhY2VOYW1lfSBkb2VzIG5vdCBiZWxvbmcgdG8gdGhlIHNhbWUgd29ya3NwYWNlIHdpbmRvdyBhcyBwYXJlbnQgd29ya3NwYWNlICR7cGFyZW50V29ya3NwYWNlTmFtZX1gKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBhcyB0aGUgcmVxdWVzdCB3b3Jrc3BhY2Ugc2hvdWxkIGJlIGEgY2hpbGQgd29ya3NwYWNlLCB0aGUgY29ycmVzcG9uZGluZyB3aW5kb3dcbiAgICAgICAgLy8gdG8gY29udGFpbiB0aGUgd29ya3NwYWNlIHNob3VsZCBhbHJlYWR5IGJlIG9wZW5lZFxuICAgICAgICBjb25zdCBvcGVuZWRXaW5kb3dJbmRleCA9IHN0YXRlLm9wZW5lZFdpbmRvd3MuZmluZEluZGV4KCh3aW5kb3cpPT53aW5kb3cud2luZG93TmFtZSA9PT0gY2hpbGRXb3Jrc3BhY2VEZWYud2luZG93KTtcbiAgICAgICAgaWYgKG9wZW5lZFdpbmRvd0luZGV4ID09IC0xKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBvcGVuIGNoaWxkIHdvcmtzcGFjZSAke2NoaWxkV29ya3NwYWNlTmFtZX0gYXMgd2luZG93ICR7Y2hpbGRXb3Jrc3BhY2VEZWYud2luZG93fSBpcyBub3Qgb3BlbmVkYCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb3BlbmVkV2luZG93ID0gc3RhdGUub3BlbmVkV2luZG93c1tvcGVuZWRXaW5kb3dJbmRleF07XG4gICAgICAgIGNvbnN0IHsgb3BlbmVkV29ya3NwYWNlcyB9ID0gb3BlbmVkV2luZG93O1xuICAgICAgICBjb25zdCBwYXJlbnRJbmRleCA9IG9wZW5lZFdvcmtzcGFjZXMuZmluZEluZGV4KCh3KT0+dy53b3Jrc3BhY2VOYW1lID09PSBwYXJlbnRXb3Jrc3BhY2VOYW1lKTtcbiAgICAgICAgaWYgKHBhcmVudEluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3Qgb3BlbiBjaGlsZCB3b3Jrc3BhY2UgJHtjaGlsZFdvcmtzcGFjZU5hbWV9IGZyb20gcGFyZW50IHdvcmtzcGFjZSAke3BhcmVudFdvcmtzcGFjZU5hbWV9IGFzIHRoZSBwYXJlbnQgaXMgbm90IG9wZW5lZCB3aXRoaW4gdGhlIHdvcmtzcGFjZSB3aW5kb3dgKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBDbG9zZSBhbnkgd29ya3NwYWNlcyBhYm92ZSB0aGUgcGFyZW50IChhbmFsb2dvdXMgdG8gY2xvc2VXb3Jrc3BhY2UncyBzbGljZSBiZWhhdmlvcilcbiAgICAgICAgY29uc3QgdHJpbW1lZFdvcmtzcGFjZXMgPSBvcGVuZWRXb3Jrc3BhY2VzLnNsaWNlKDAsIHBhcmVudEluZGV4ICsgMSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBvcGVuZWRXaW5kb3dzOiBzdGF0ZS5vcGVuZWRXaW5kb3dzLm1hcCgodywgaSk9PntcbiAgICAgICAgICAgICAgICBpZiAoaSA9PSBvcGVuZWRXaW5kb3dJbmRleCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4udyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5lZFdvcmtzcGFjZXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50cmltbWVkV29ya3NwYWNlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdPcGVuZWRXb3Jrc3BhY2UoY2hpbGRXb3Jrc3BhY2VOYW1lLCBjaGlsZFdvcmtzcGFjZVByb3BzKVxuICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB3O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgIH07XG4gICAgfSxcbiAgICBzZXRIYXNVbnNhdmVkQ2hhbmdlcyAoc3RhdGUsIHdvcmtzcGFjZU5hbWUsIGhhc1Vuc2F2ZWRDaGFuZ2VzKSB7XG4gICAgICAgIGNvbnN0IG9wZW5lZFdpbmRvd0luZGV4ID0gZ2V0T3BlbmVkV2luZG93SW5kZXhCeVdvcmtzcGFjZSh3b3Jrc3BhY2VOYW1lKTtcbiAgICAgICAgaWYgKG9wZW5lZFdpbmRvd0luZGV4IDwgMCkge1xuICAgICAgICAgICAgcmV0dXJuIHN0YXRlOyAvLyBuby1vcCBpZiB0aGUgd2luZG93IGRvZXMgbm90IGV4aXN0XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb3BlbmVkV2luZG93ID0ge1xuICAgICAgICAgICAgLi4uc3RhdGUub3BlbmVkV2luZG93c1tvcGVuZWRXaW5kb3dJbmRleF1cbiAgICAgICAgfTtcbiAgICAgICAgY29uc3Qgd29ya3NwYWNlSW5kZXggPSBvcGVuZWRXaW5kb3cub3BlbmVkV29ya3NwYWNlcy5maW5kSW5kZXgoKHcpPT53LndvcmtzcGFjZU5hbWUgPT09IHdvcmtzcGFjZU5hbWUpO1xuICAgICAgICBpZiAod29ya3NwYWNlSW5kZXggPCAwKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RhdGU7IC8vIG5vLW9wIGlmIHRoZSB3b3Jrc3BhY2UgaXMgbm90IGZvdW5kXG4gICAgICAgIH1cbiAgICAgICAgb3BlbmVkV2luZG93Lm9wZW5lZFdvcmtzcGFjZXNbd29ya3NwYWNlSW5kZXhdID0ge1xuICAgICAgICAgICAgLi4ub3BlbmVkV2luZG93Lm9wZW5lZFdvcmtzcGFjZXNbd29ya3NwYWNlSW5kZXhdLFxuICAgICAgICAgICAgaGFzVW5zYXZlZENoYW5nZXNcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3Qgb3BlbmVkV2luZG93cyA9IFtcbiAgICAgICAgICAgIC4uLnN0YXRlLm9wZW5lZFdpbmRvd3NcbiAgICAgICAgXTtcbiAgICAgICAgb3BlbmVkV2luZG93c1tvcGVuZWRXaW5kb3dJbmRleF0gPSBvcGVuZWRXaW5kb3c7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICAgIG9wZW5lZFdpbmRvd3NcbiAgICAgICAgfTtcbiAgICB9LFxuICAgIHNldFdvcmtzcGFjZVRpdGxlIChzdGF0ZSwgd29ya3NwYWNlTmFtZSwgdGl0bGUpIHtcbiAgICAgICAgY29uc3QgbmV3V29ya3NwYWNlVGl0bGVCeVdvcmtzcGFjZU5hbWUgPSB7XG4gICAgICAgICAgICAuLi5zdGF0ZS53b3Jrc3BhY2VUaXRsZUJ5V29ya3NwYWNlTmFtZVxuICAgICAgICB9O1xuICAgICAgICBpZiAodGl0bGUgPT09IG51bGwpIHtcbiAgICAgICAgICAgIGRlbGV0ZSBuZXdXb3Jrc3BhY2VUaXRsZUJ5V29ya3NwYWNlTmFtZVt3b3Jrc3BhY2VOYW1lXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5ld1dvcmtzcGFjZVRpdGxlQnlXb3Jrc3BhY2VOYW1lW3dvcmtzcGFjZU5hbWVdID0gdGl0bGU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgd29ya3NwYWNlVGl0bGVCeVdvcmtzcGFjZU5hbWU6IG5ld1dvcmtzcGFjZVRpdGxlQnlXb3Jrc3BhY2VOYW1lXG4gICAgICAgIH07XG4gICAgfVxufTtcbmV4cG9ydCBmdW5jdGlvbiB1c2VXb3Jrc3BhY2UyU3RvcmUoKSB7XG4gICAgcmV0dXJuIHVzZVN0b3JlV2l0aEFjdGlvbnMod29ya3NwYWNlMlN0b3JlLCB3b3Jrc3BhY2UyU3RvcmVBY3Rpb25zKTtcbn1cbi8qKlxuICogUmV0dXJucyB0aGUgcmVhY3QgQ29udGV4dCBjb250YWluaW5nIHByb3BzIHBhc3NlZCBpbnRvIGEgd29ya3NwYWNlLlxuICogVGhpcyBob29rIE1VU1QgYmUgY2FsbGVkIGluc2lkZSBhIGNoaWxkIG9mIDxXb3Jrc3BhY2UyPlxuICovIGV4cG9ydCBjb25zdCB1c2VXb3Jrc3BhY2UyQ29udGV4dCA9ICgpPT51c2VDb250ZXh0KFNpbmdsZVNwYUNvbnRleHQpO1xuLyoqXG4gKiBAcmV0dXJucyBhIGxpc3Qgb2YgcmVnaXN0ZXJlZCB3b3Jrc3BhY2VzLlxuICovIGV4cG9ydCBjb25zdCBnZXRSZWdpc3RlcmVkV29ya3NwYWNlMk5hbWVzID0gKCk9PntcbiAgICByZXR1cm4gT2JqZWN0LmtleXMod29ya3NwYWNlMlN0b3JlLmdldFN0YXRlKCkucmVnaXN0ZXJlZFdvcmtzcGFjZXNCeU5hbWUpO1xufTtcbmZ1bmN0aW9uIG5ld09wZW5lZFdvcmtzcGFjZSh3b3Jrc3BhY2VOYW1lLCB3b3Jrc3BhY2VQcm9wcykge1xuICAgIHJldHVybiB7XG4gICAgICAgIHdvcmtzcGFjZU5hbWUsXG4gICAgICAgIHByb3BzOiB3b3Jrc3BhY2VQcm9wcyA/PyB7fSxcbiAgICAgICAgaGFzVW5zYXZlZENoYW5nZXM6IGZhbHNlLFxuICAgICAgICB1dWlkOiB1dWlkVjQoKVxuICAgIH07XG59XG4iXSwibmFtZXMiOlsidXNlQ29udGV4dCIsIlNpbmdsZVNwYUNvbnRleHQiLCJ2NCIsInV1aWRWNCIsImdldEdyb3VwQnlXaW5kb3dOYW1lIiwiZ2V0T3BlbmVkV2luZG93SW5kZXhCeVdvcmtzcGFjZSIsImdldFdpbmRvd0J5V29ya3NwYWNlTmFtZSIsIndvcmtzcGFjZTJTdG9yZSIsInVzZVN0b3JlV2l0aEFjdGlvbnMiLCJzaGFsbG93RXF1YWwiLCJzaG93TW9kYWwiLCJsYXVuY2hXb3Jrc3BhY2VHcm91cDIiLCJncm91cE5hbWUiLCJncm91cFByb3BzIiwib3BlbmVkR3JvdXAiLCJva1RvQ2xvc2VXb3Jrc3BhY2VzIiwiYXJlUHJvcHNDb21wYXRpYmxlIiwicHJvbXB0Rm9yQ2xvc2luZ1dvcmtzcGFjZXMiLCJzdGF0ZSIsImNsb3NlV29ya3NwYWNlR3JvdXAyIiwiZGlzY2FyZFVuc2F2ZWRDaGFuZ2VzIiwib3BlbmVkV2luZG93cyIsImxhdW5jaFdvcmtzcGFjZTIiLCJ3b3Jrc3BhY2VOYW1lIiwid29ya3NwYWNlUHJvcHMiLCJ3aW5kb3dQcm9wcyIsInN0b3JlU3RhdGUiLCJ3aW5kb3dEZWYiLCJ3aW5kb3dOYW1lIiwiZ3JvdXBEZWYiLCJvcGVuZWRXaW5kb3dJbmRleCIsImlzV2luZG93QWxyZWFkeU9wZW5lZCIsIl9zdG9yZVN0YXRlX29wZW5lZEdyb3VwIiwib3BlbmVkV2luZG93IiwiZ3JvdXBQcm9wczEiLCJpc01vc3RSZWNlbnRseU9wZW5lZFdpbmRvd0hpZGRlbiIsIm9wZW5lZFdvcmtzcGFjZXMiLCJvcGVuZWRXb3Jrc3BhY2UiLCJva1RvQ2xvc2VXb3Jrc3BhY2VzMSIsIl9zdG9yZVN0YXRlX29wZW5lZEdyb3VwMSIsIm9rVG9DbG9zZVdvcmtzcGFjZXMyIiwiX3N0b3JlU3RhdGVfb3BlbmVkR3JvdXAyIiwib2tUb0Nsb3NlV29ya3NwYWNlczMiLCJfcmVmMyIsIl9zdG9yZVN0YXRlX29wZW5lZEdyb3VwMyIsIl9yZWY0IiwiX3N0b3JlU3RhdGVfb3BlbmVkR3JvdXA0IiwiRXJyb3IiLCJuZXdPcGVuZWRXb3Jrc3BhY2UiLCJ3Iiwid29ya3NwYWNlMlN0b3JlQWN0aW9ucyIsIl8iLCJpIiwiYSIsImIiLCJwcm9tcHRSZWFzb24iLCJnZXRBZmZlY3RlZFdvcmtzcGFjZXNJbldpbmRvdyIsIm9ubHlVcFRvVGhpc1dvcmtzcGFjZSIsInJldCIsIl93b3Jrc3BhY2UyU3RvcmVfZ2V0U3RhdGUiLCJ3b3Jrc3BhY2VUaXRsZUJ5V29ya3NwYWNlTmFtZSIsImFmZmVjdGVkV29ya3NwYWNlcyIsIndpbmRvdyIsIm9wZW5lZFdpbmRvdzEiLCJ3aW5kb3dzVG9DbG9zZSIsIlByb21pc2UiLCJyZXNvbHZlIiwiZGlzcG9zZSIsIm9uQ29uZmlybSIsIm9uQ2FuY2VsIiwid29ya3NwYWNlIiwic2V0V2luZG93TWF4aW1pemVkIiwibWF4aW1pemVkIiwiY3VycmVudFdpbmRvdyIsImhpZGVXaW5kb3ciLCJyZXN0b3JlV2luZG93IiwiY2xvc2VXb3Jrc3BhY2UiLCJ3b3Jrc3BhY2VJbmRleCIsImhpZGRlbiIsIndhc01vc3RSZWNlbnRXaW5kb3ciLCJvcGVuQ2hpbGRXb3Jrc3BhY2UiLCJwYXJlbnRXb3Jrc3BhY2VOYW1lIiwiY2hpbGRXb3Jrc3BhY2VOYW1lIiwiY2hpbGRXb3Jrc3BhY2VQcm9wcyIsImNoaWxkV29ya3NwYWNlRGVmIiwicGFyZW50V29ya3NwYWNlRGVmIiwicGFyZW50SW5kZXgiLCJ0cmltbWVkV29ya3NwYWNlcyIsInNldEhhc1Vuc2F2ZWRDaGFuZ2VzIiwiaGFzVW5zYXZlZENoYW5nZXMiLCJzZXRXb3Jrc3BhY2VUaXRsZSIsInRpdGxlIiwibmV3V29ya3NwYWNlVGl0bGVCeVdvcmtzcGFjZU5hbWUiLCJ1c2VXb3Jrc3BhY2UyU3RvcmUiLCJ1c2VXb3Jrc3BhY2UyQ29udGV4dCIsImdldFJlZ2lzdGVyZWRXb3Jrc3BhY2UyTmFtZXMiLCJPYmplY3QiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQW1DO0FBQ2lCO0FBQ2hCO0FBQ3VHO0FBQzVFO0FBQ2I7QUFDSDtBQUMvQzs7Ozs7Ozs7Ozs7OztDQWFDLEdBQVUsU0FBZVcsc0JBQXNCQyxTQUFTLEVBQUVDLFVBQVU7O1lBQ3pEQyxhQUdNQzs7OztvQkFITkQsY0FBZ0JQLGlFQUF3QixHQUF4Q087eUJBQ0pBLGFBQUFBOzs7O3lCQUNJQSxDQUFBQSxZQUFZLFNBQVMsS0FBS0YsYUFBYSxDQUFDSSxtQkFBbUJGLFlBQVksS0FBSyxFQUFFRCxXQUFVLEdBQXhGQzs7OztvQkFDNEI7O3dCQUFNRywyQkFBMkI7NEJBQ3pELFFBQVE7NEJBQ1IsVUFBVTt3QkFDZDs7O29CQUhNRixzQkFBc0I7b0JBSTVCLElBQUksQ0FBQ0EscUJBQXFCO3dCQUN0Qjs7NEJBQU87O29CQUNYOzs7Ozs7b0JBR0Esa0RBQWtEO29CQUNsRDs7d0JBQU87OztvQkFHZlIsaUVBQXdCLENBQUMsU0FBQ1c7K0JBQVMsd0NBQ3hCQTs0QkFDSCxhQUFhO2dDQUNUTixXQUFBQTtnQ0FDQSxPQUFPQzs0QkFDWDs0QkFDQSxlQUFlLEVBQUU7OztvQkFFekI7O3dCQUFPOzs7O0lBQ1g7O0FBQ0E7Ozs7Ozs7OztDQVNDLEdBQVUsU0FBZU0scUJBQXFCQyxxQkFBcUI7O1lBQzFERixPQUNFSixhQUFhTyxlQUdQTjs7OztvQkFKUkcsUUFBUVgs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\n//# sourceURL=webpack-internal:///../../framework/esm-styleguide/dist/workspaces2/workspace2.js\n\n}");
|
|
1998
|
+
eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n closeWorkspaceGroup2: () => (closeWorkspaceGroup2),\n getRegisteredWorkspace2Names: () => (getRegisteredWorkspace2Names),\n launchWorkspace2: () => (launchWorkspace2),\n launchWorkspaceGroup2: () => (launchWorkspaceGroup2),\n promptForClosingWorkspaces: () => (promptForClosingWorkspaces),\n useWorkspace2Context: () => (useWorkspace2Context),\n useWorkspace2Store: () => (useWorkspace2Store),\n workspace2StoreActions: () => (workspace2StoreActions)\n});\n/* import */ var react__rspack_import_0 = __webpack_require__(\"webpack/sharing/consume/default/react/react\");\n/* import */ var react__rspack_import_0_default = /*#__PURE__*/__webpack_require__.n(react__rspack_import_0);\n/* import */ var single_spa_react__rspack_import_1 = __webpack_require__(\"../../../node_modules/single-spa-react/lib/esm/single-spa-react.js\");\n/* import */ var uuid__rspack_import_6 = __webpack_require__(\"../../../node_modules/uuid/dist/esm-browser/v4.js\");\n/* import */ var _openmrs_esm_extensions__rspack_import_2 = __webpack_require__(\"../../framework/esm-extensions/dist/index.js\");\n/* import */ var _openmrs_esm_react_utils__rspack_import_3 = __webpack_require__(\"../../framework/esm-react-utils/dist/index.js\");\n/* import */ var _openmrs_esm_utils__rspack_import_5 = __webpack_require__(\"../../framework/esm-utils/dist/shallowEqual.js\");\n/* import */ var _modals_index_js__rspack_import_4 = __webpack_require__(\"../../framework/esm-styleguide/dist/modals/index.js\");\nfunction _array_like_to_array(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction _array_without_holes(arr) {\n if (Array.isArray(arr)) return _array_like_to_array(arr);\n}\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 _iterable_to_array(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nfunction _non_iterable_spread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\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}\nfunction _to_consumable_array(arr) {\n return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();\n}\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);\n}\nfunction _ts_generator(thisArg, body) {\n var f, y, t, _ = {\n label: 0,\n sent: function() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n }, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype), d = Object.defineProperty;\n return d(g, \"next\", {\n value: verb(0)\n }), d(g, \"throw\", {\n value: verb(1)\n }), d(g, \"return\", {\n value: verb(2)\n }), typeof Symbol === \"function\" && d(g, Symbol.iterator, {\n value: function() {\n return this;\n }\n }), g;\n function verb(n) {\n return function(v) {\n return step([\n n,\n v\n ]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while(g && (g = 0, op[0] && (_ = 0)), _)try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [\n op[0] & 2,\n t.value\n ];\n switch(op[0]){\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [\n 0\n ];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [\n 6,\n e\n ];\n y = 0;\n } finally{\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n}\n\n\n\n\n\n\n\n/**\n * Attempts to launch the specified workspace group with the given group props. Note that only one workspace group\n * may be opened at any given time. If a workspace group is already opened, calling `launchWorkspaceGroup2` with\n * either a different group name, or same group name but different incompatible props**, will result in prompting to\n * confirm closing workspaces. If the user confirms, the opened group, along with its windows (and their workspaces), is closed, and\n * the requested group is immediately opened.\n *\n * ** 2 sets of props are compatible if either one is nullish, or if they are shallow equal.\n * @param groupName\n * @param groupProps\n * @returns a Promise that resolves to true if the specified workspace group with the specified group props\n * is successfully opened, or that it already is opened.\n */ function launchWorkspaceGroup2(groupName, groupProps) {\n return _async_to_generator(function() {\n var openedGroup, okToCloseWorkspaces;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n openedGroup = _openmrs_esm_extensions__rspack_import_2.workspace2Store.getState().openedGroup;\n if (!openedGroup) return [\n 3,\n 3\n ];\n if (!(openedGroup.groupName !== groupName || !arePropsCompatible(openedGroup.props, groupProps))) return [\n 3,\n 2\n ];\n return [\n 4,\n promptForClosingWorkspaces({\n reason: 'CLOSE_WORKSPACE_GROUP',\n explicit: false\n })\n ];\n case 1:\n okToCloseWorkspaces = _state.sent();\n if (!okToCloseWorkspaces) {\n return [\n 2,\n false\n ];\n }\n return [\n 3,\n 3\n ];\n case 2:\n // no-op, group with group props is already opened\n return [\n 2,\n true\n ];\n case 3:\n _openmrs_esm_extensions__rspack_import_2.workspace2Store.setState(function(state) {\n return _object_spread_props(_object_spread({}, state), {\n openedGroup: {\n groupName: groupName,\n props: groupProps\n },\n openedWindows: []\n });\n });\n return [\n 2,\n true\n ];\n }\n });\n })();\n}\n/**\n * Closes the workspace group that is currently opened. Note that only one workspace group\n * may be opened at any given time\n * @param discardUnsavedChanges If true, then the workspace group is forced closed, with no prompt\n * for confirmation for unsaved changes in any opened workspace. This should be used sparingly\n * for clean-up purpose, ex: when exiting an app.\n * @returns a Promise that resolves to true if there is no opened group to begin with or we successfully closed\n * the opened group; false otherwise.\n */ function closeWorkspaceGroup2(discardUnsavedChanges) {\n return _async_to_generator(function() {\n var state, openedGroup, openedWindows, okToCloseWorkspaces, _tmp;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n state = _openmrs_esm_extensions__rspack_import_2.workspace2Store.getState();\n openedGroup = state.openedGroup, openedWindows = state.openedWindows;\n if (!openedGroup) return [\n 3,\n 4\n ];\n if (!(openedWindows.length > 0)) return [\n 3,\n 3\n ];\n _tmp = discardUnsavedChanges;\n if (_tmp) return [\n 3,\n 2\n ];\n return [\n 4,\n promptForClosingWorkspaces({\n reason: 'CLOSE_WORKSPACE_GROUP',\n explicit: true\n })\n ];\n case 1:\n _tmp = _state.sent();\n _state.label = 2;\n case 2:\n okToCloseWorkspaces = _tmp;\n if (!okToCloseWorkspaces) {\n return [\n 2,\n false\n ];\n }\n _state.label = 3;\n case 3:\n _openmrs_esm_extensions__rspack_import_2.workspace2Store.setState(function(state) {\n return _object_spread_props(_object_spread({}, state), {\n openedGroup: null,\n openedWindows: []\n });\n });\n return [\n 2,\n true\n ];\n case 4:\n // no openedGroup with begin with, return true\n return [\n 2,\n true\n ];\n }\n });\n })();\n}\n/**\n * Attempts to launch the specified workspace with the given workspace props. This also implicitly opens\n * the workspace window to which the workspace belongs (if it's not opened already),\n * and the workspace group to which the window belongs (if it's not opened already).\n *\n * When calling `launchWorkspace2`, we need to also pass in the workspace props. While not required,\n * we can also pass in the window props (shared by other workspaces in the window) and the group props\n * (shared by all windows and their workspaces). Omitting the window props or the group props[^1] means the caller\n * explicitly does not care what the current window props and group props are, and that they may be set\n * by other actions (like calling `launchWorkspace2` on a different workspace with those props passed in)\n * at a later time.\n *\n * If there is already an opened workspace group, and it's not the group the workspace belongs to\n * or has incompatible[^2] group props, then we prompt the user to close the group (and its windows and their workspaces).\n * On user confirm, the existing opened group is closed and the new workspace, along with its window and its group,\n * is opened.\n *\n * If the window is already opened, but with incompatible window props, we prompt the user to close\n * the window (and all its opened workspaces), and reopen the window with (only) the newly requested workspace.\n *\n * If the workspace is already opened, but with incompatible workspace props, we also prompt the user to close\n * the **window** (and all its opened workspaces), and reopen the window with (only) the newly requested workspace.\n * This is true regardless of whether the already opened workspace has any child workspaces.\n *\n * Note that calling this function *never* results in creating a child workspace in the affected window.\n * To do so, we need to call `launchChildWorkspace` instead.\n *\n * [^1] Omitting window or group props is useful for workspaces that don't have ties to the window or group \"context\" (props).\n * For example, in the patient chart, the visit notes / clinical forms / order basket action menu button all share\n * a \"group context\" of the current visit. However, the \"patient list\" action menu button does not need to share that group\n * context, so opening that workspace should not need to cause other workspaces / windows / groups to potentially close.\n * The \"patient search\" workspace in the queues and ward apps is another example.\n *\n * [^2] 2 sets of props are compatible if either one is nullish, or if they are shallow equal.\n */ function launchWorkspace2(workspaceName) {\n var workspaceProps = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null, windowProps = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : null, groupProps = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : null;\n return _async_to_generator(function() {\n var storeState, windowDef, openedGroup, windowName, groupDef, openedWindowIndex, isWindowAlreadyOpened, okToCloseWorkspaces, _ref, _storeState_openedGroup, openedWindow, groupProps1, isMostRecentlyOpenedWindowHidden, openedWorkspaces, openedWorkspace, okToCloseWorkspaces1, _ref1, _ref2, _storeState_openedGroup1, okToCloseWorkspaces2, _storeState_openedGroup2, okToCloseWorkspaces3, _ref3, _storeState_openedGroup3, _ref4, _storeState_openedGroup4;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n storeState = _openmrs_esm_extensions__rspack_import_2.workspace2Store.getState();\n if (!storeState.registeredWorkspacesByName[workspaceName]) {\n throw new Error(\"Unable to launch workspace \".concat(workspaceName, \". Workspace is not registered\"));\n }\n windowDef = (0,_openmrs_esm_extensions__rspack_import_2.getWindowByWorkspaceName)(workspaceName);\n if (!windowDef) {\n throw new Error(\"Unable to launch workspace \".concat(workspaceName, \". Workspace is not registered to a workspace window\"));\n }\n openedGroup = storeState.openedGroup;\n windowName = windowDef.name;\n groupDef = (0,_openmrs_esm_extensions__rspack_import_2.getGroupByWindowName)(windowName);\n if (!groupDef) {\n throw new Error(\"Unable to launch workspace \".concat(workspaceName, \". Workspace window \").concat(windowDef.name, \" is not registered to a workspace group\"));\n }\n openedWindowIndex = (0,_openmrs_esm_extensions__rspack_import_2.getOpenedWindowIndexByWorkspace)(workspaceName);\n isWindowAlreadyOpened = openedWindowIndex >= 0;\n if (!(openedGroup && (openedGroup.groupName !== groupDef.name || !arePropsCompatible(openedGroup.props, groupProps)))) return [\n 3,\n 2\n ];\n return [\n 4,\n promptForClosingWorkspaces({\n reason: 'CLOSE_WORKSPACE_GROUP',\n explicit: true\n })\n ];\n case 1:\n okToCloseWorkspaces = _state.sent();\n if (okToCloseWorkspaces) {\n _openmrs_esm_extensions__rspack_import_2.workspace2Store.setState(_object_spread_props(_object_spread({}, storeState), {\n openedGroup: {\n groupName: groupDef.name,\n props: groupProps\n },\n openedWindows: [\n // discard all opened windows, open a new one with the requested workspace\n // most recently opened action appended to the end\n {\n windowName: windowName,\n openedWorkspaces: [\n newOpenedWorkspace(workspaceName, workspaceProps)\n ],\n props: windowProps,\n maximized: false\n }\n ],\n isMostRecentlyOpenedWindowHidden: false\n }));\n return [\n 2,\n true\n ];\n } else {\n return [\n 2,\n false\n ];\n }\n return [\n 3,\n 12\n ];\n case 2:\n if (!isWindowAlreadyOpened) return [\n 3,\n 9\n ];\n openedWindow = storeState.openedWindows[openedWindowIndex];\n groupProps1 = (_ref = (_storeState_openedGroup = storeState.openedGroup) === null || _storeState_openedGroup === void 0 ? void 0 : _storeState_openedGroup.props) !== null && _ref !== void 0 ? _ref : {};\n isMostRecentlyOpenedWindowHidden = storeState.isMostRecentlyOpenedWindowHidden;\n openedWorkspaces = openedWindow.openedWorkspaces;\n if (!arePropsCompatible(openedWindow.props, windowProps)) return [\n 3,\n 6\n ];\n // this case is tricky, this results in restoring the window if:\n // 1. the workspace is opened (but not necessarily as a leaf workspace)\n // 2. the props of the opened workspace is same as workspace props (from the function input)\n //\n // Otherwise, we close all workspaces in this window, and open this newly requested one\n openedWorkspace = openedWorkspaces.find(function(w) {\n return w.workspaceName === workspaceName;\n });\n if (!(openedWorkspace && arePropsCompatible(openedWorkspace.props, workspaceProps))) return [\n 3,\n 3\n ];\n // restore the window if it is hidden or not the most recently opened one\n if (isMostRecentlyOpenedWindowHidden || openedWindowIndex !== storeState.openedWindows.length - 1) {\n _openmrs_esm_extensions__rspack_import_2.workspace2Store.setState(workspace2StoreActions.restoreWindow(storeState, windowName));\n }\n return [\n 2,\n true\n ];\n case 3:\n return [\n 4,\n promptForClosingWorkspaces({\n reason: 'CLOSE_WORKSPACE',\n explicit: false,\n windowName: windowName,\n workspaceName: workspaceName\n })\n ];\n case 4:\n okToCloseWorkspaces1 = _state.sent();\n if (okToCloseWorkspaces1) {\n ;\n ;\n _openmrs_esm_extensions__rspack_import_2.workspace2Store.setState(_object_spread_props(_object_spread({}, storeState), {\n openedGroup: {\n groupName: groupDef.name,\n props: (_ref1 = storeState === null || storeState === void 0 ? void 0 : (_storeState_openedGroup1 = storeState.openedGroup) === null || _storeState_openedGroup1 === void 0 ? void 0 : _storeState_openedGroup1.props) !== null && _ref1 !== void 0 ? _ref1 : groupProps1\n },\n openedWindows: _to_consumable_array(storeState.openedWindows.filter(function(_, i) {\n return i !== openedWindowIndex;\n })).concat([\n // most recently opened workspace at the end of the array\n {\n windowName: windowName,\n openedWorkspaces: [\n newOpenedWorkspace(workspaceName, workspaceProps)\n ],\n props: (_ref2 = openedWindow === null || openedWindow === void 0 ? void 0 : openedWindow.props) !== null && _ref2 !== void 0 ? _ref2 : windowProps,\n maximized: false\n }\n ]),\n isMostRecentlyOpenedWindowHidden: false\n }));\n return [\n 2,\n true\n ];\n } else {\n return [\n 2,\n false\n ];\n }\n _state.label = 5;\n case 5:\n return [\n 3,\n 8\n ];\n case 6:\n return [\n 4,\n promptForClosingWorkspaces({\n reason: 'CLOSE_WINDOW',\n explicit: false,\n windowName: windowName\n })\n ];\n case 7:\n okToCloseWorkspaces2 = _state.sent();\n if (okToCloseWorkspaces2) {\n ;\n // discard the openedWindows element at openedWindowIndex\n // and create a new one with the requested workspace opened\n _openmrs_esm_extensions__rspack_import_2.workspace2Store.setState(_object_spread_props(_object_spread({}, storeState), {\n openedGroup: {\n groupName: groupDef.name,\n props: groupProps1 !== null && groupProps1 !== void 0 ? groupProps1 : storeState === null || storeState === void 0 ? void 0 : (_storeState_openedGroup2 = storeState.openedGroup) === null || _storeState_openedGroup2 === void 0 ? void 0 : _storeState_openedGroup2.props\n },\n openedWindows: _to_consumable_array(storeState.openedWindows.filter(function(_, i) {\n return i !== openedWindowIndex;\n })).concat([\n // most recently opened workspace at the end of the array\n {\n windowName: windowName,\n openedWorkspaces: [\n newOpenedWorkspace(workspaceName, workspaceProps)\n ],\n props: windowProps,\n maximized: false\n }\n ]),\n isMostRecentlyOpenedWindowHidden: false\n }));\n return [\n 2,\n true\n ];\n } else {\n return [\n 2,\n false\n ];\n }\n _state.label = 8;\n case 8:\n return [\n 3,\n 12\n ];\n case 9:\n if (!(groupDef.persistence == 'closable')) return [\n 3,\n 11\n ];\n return [\n 4,\n promptForClosingWorkspaces({\n reason: 'CLOSE_OTHER_WINDOWS',\n explicit: false,\n windowNameToSpare: windowDef.name\n })\n ];\n case 10:\n okToCloseWorkspaces3 = _state.sent();\n if (okToCloseWorkspaces3) {\n ;\n ;\n _openmrs_esm_extensions__rspack_import_2.workspace2Store.setState(_object_spread_props(_object_spread({}, storeState), {\n openedGroup: {\n groupName: groupDef.name,\n props: (_ref3 = groupProps !== null && groupProps !== void 0 ? groupProps : storeState === null || storeState === void 0 ? void 0 : (_storeState_openedGroup3 = storeState.openedGroup) === null || _storeState_openedGroup3 === void 0 ? void 0 : _storeState_openedGroup3.props) !== null && _ref3 !== void 0 ? _ref3 : null\n },\n openedWindows: [\n {\n windowName: windowName,\n openedWorkspaces: [\n newOpenedWorkspace(workspaceName, workspaceProps)\n ],\n props: windowProps,\n maximized: false\n }\n ],\n isMostRecentlyOpenedWindowHidden: false\n }));\n return [\n 2,\n true\n ];\n } else {\n return [\n 2,\n false\n ];\n }\n return [\n 3,\n 12\n ];\n case 11:\n _openmrs_esm_extensions__rspack_import_2.workspace2Store.setState(_object_spread_props(_object_spread({}, storeState), {\n openedGroup: {\n groupName: groupDef.name,\n props: (_ref4 = groupProps !== null && groupProps !== void 0 ? groupProps : storeState === null || storeState === void 0 ? void 0 : (_storeState_openedGroup4 = storeState.openedGroup) === null || _storeState_openedGroup4 === void 0 ? void 0 : _storeState_openedGroup4.props) !== null && _ref4 !== void 0 ? _ref4 : null\n },\n openedWindows: _to_consumable_array(storeState.openedWindows).concat([\n // most recently opened workspace at the end of the array\n {\n windowName: windowName,\n openedWorkspaces: [\n newOpenedWorkspace(workspaceName, workspaceProps)\n ],\n props: windowProps,\n maximized: false\n }\n ]),\n isMostRecentlyOpenedWindowHidden: false\n }));\n return [\n 2,\n true\n ];\n case 12:\n return [\n 2\n ];\n }\n });\n })();\n}\n/**\n * When we launch a workspace, we may pass in workspace / windows / group props. If the workspace or\n * window or group is currently opened, we have to check whether the current props are compatible with\n * the passed in props. 2 props A and B are compatible if:\n * either one is nullish (because this indicates that the caller does not care about prop incompatibility)\n * neither is nullish, and A and B are shallow equal.\n * @param a props\n * @param b props\n * @returns whether props a and b are compatible\n */ function arePropsCompatible(a, b) {\n if (a == null || b == null) {\n return true;\n }\n return (0,_openmrs_esm_utils__rspack_import_5.shallowEqual)(a, b);\n}\n/**\n * A user can perform actions that explicitly result in closing workspaces\n * (such that clicking the 'X' button for the workspace or workspace group), or\n * implicitly (by opening a workspace with different props than the one that is already opened).\n * Calls to closeWorkspace2() or closeWorkspaceGroup2() are considered explicit, while calls\n * to launchWorkspace2() or launchWorkspaceGroup2() are considered implicit.\n *\n * This function prompts the user for confirmation to close workspaces with a modal dialog.\n * When the closing is explicit, it prompts for confirmation for affected workspaces with unsaved changes.\n * When the closing is implicit, it prompts for confirmation for all affected workspaces, regardless of\n * whether they have unsaved changes.\n * @param promptReason\n * @returns a Promise that resolves to true if the user confirmed closing the workspaces; false otherwise.\n */ function promptForClosingWorkspaces(promptReason) {\n // if onlyUpToThisWorkspace is provided, we will only loop till we hit that workspace\n function getAffectedWorkspacesInWindow(openedWindow, onlyUpToThisWorkspace) {\n var ret = [];\n for(var i = openedWindow.openedWorkspaces.length - 1; i >= 0; i--){\n var openedWorkspace = openedWindow.openedWorkspaces[i];\n if (openedWorkspace.hasUnsavedChanges) {\n ret.push(openedWorkspace);\n }\n if (onlyUpToThisWorkspace && openedWorkspace.workspaceName === onlyUpToThisWorkspace) {\n break;\n }\n }\n return ret;\n }\n var _workspace2Store_getState = _openmrs_esm_extensions__rspack_import_2.workspace2Store.getState(), openedWindows = _workspace2Store_getState.openedWindows, workspaceTitleByWorkspaceName = _workspace2Store_getState.workspaceTitleByWorkspaceName;\n var affectedWorkspaces = [];\n switch(promptReason.reason){\n case 'CLOSE_WORKSPACE_GROUP':\n {\n affectedWorkspaces = openedWindows.flatMap(function(window) {\n return getAffectedWorkspacesInWindow(window);\n });\n break;\n }\n case 'CLOSE_WINDOW':\n {\n var openedWindow = openedWindows.find(function(window) {\n return window.windowName === promptReason.windowName;\n });\n if (!openedWindow) {\n throw new Error(\"Window \".concat(promptReason.windowName, \" not found in opened windows.\"));\n }\n affectedWorkspaces = getAffectedWorkspacesInWindow(openedWindow);\n break;\n }\n case 'CLOSE_WORKSPACE':\n {\n var openedWindow1 = openedWindows.find(function(window) {\n return window.windowName === promptReason.windowName;\n });\n if (!openedWindow1) {\n throw new Error(\"Window \".concat(promptReason.windowName, \" not found in opened windows.\"));\n }\n affectedWorkspaces = getAffectedWorkspacesInWindow(openedWindow1, promptReason.workspaceName);\n break;\n }\n case 'CLOSE_OTHER_WINDOWS':\n {\n var windowsToClose = openedWindows.filter(function(window) {\n return window.windowName !== promptReason.windowNameToSpare;\n });\n affectedWorkspaces = windowsToClose.flatMap(function(w) {\n return getAffectedWorkspacesInWindow(w);\n });\n break;\n }\n }\n if (affectedWorkspaces.length === 0) {\n return Promise.resolve(true); // no unsaved changes, no need to prompt\n }\n return new Promise(function(resolve) {\n var dispose = (0,_modals_index_js__rspack_import_4.showModal)('workspace2-close-prompt', {\n onConfirm: function onConfirm() {\n dispose();\n resolve(true);\n },\n onCancel: function onCancel() {\n dispose();\n resolve(false);\n },\n affectedWorkspaceTitles: affectedWorkspaces.map(function(workspace) {\n return workspaceTitleByWorkspaceName[workspace.workspaceName];\n })\n });\n });\n}\nvar workspace2StoreActions = {\n setWindowMaximized: function setWindowMaximized(state, windowName, maximized) {\n var openedWindowIndex = state.openedWindows.findIndex(function(a) {\n return a.windowName === windowName;\n });\n var openedWindows = _to_consumable_array(state.openedWindows);\n var currentWindow = _object_spread_props(_object_spread({}, openedWindows[openedWindowIndex]), {\n maximized: maximized\n });\n openedWindows[openedWindowIndex] = currentWindow;\n return _object_spread_props(_object_spread({}, state), {\n openedWindows: openedWindows\n });\n },\n // hides the most recently opened window (all other opened windows are implicitly hidden)\n hideWindow: function hideWindow(state) {\n return _object_spread_props(_object_spread({}, state), {\n isMostRecentlyOpenedWindowHidden: true\n });\n },\n restoreWindow: function restoreWindow(state, windowName) {\n var openedWindowIndex = state.openedWindows.findIndex(function(a) {\n return a.windowName === windowName;\n });\n var currentWindow = state.openedWindows[openedWindowIndex];\n var openedWindows = _to_consumable_array(state.openedWindows.filter(function(_, i) {\n return i !== openedWindowIndex;\n })).concat([\n currentWindow\n ]);\n return _object_spread_props(_object_spread({}, state), {\n openedWindows: openedWindows,\n isMostRecentlyOpenedWindowHidden: false\n });\n },\n closeWorkspace: function closeWorkspace(state, workspaceName) {\n var openedWindowIndex = (0,_openmrs_esm_extensions__rspack_import_2.getOpenedWindowIndexByWorkspace)(workspaceName);\n if (openedWindowIndex < 0) {\n return state; // no-op if the window does not exist\n }\n var window = _object_spread({}, state.openedWindows[openedWindowIndex]);\n var workspaceIndex = window.openedWorkspaces.findIndex(function(w) {\n return w.workspaceName === workspaceName;\n });\n var openedWindows = _to_consumable_array(state.openedWindows);\n // close all children of the input workspace as well\n window.openedWorkspaces = window.openedWorkspaces.slice(0, workspaceIndex);\n var hidden = state.isMostRecentlyOpenedWindowHidden;\n if (window.openedWorkspaces.length === 0) {\n var wasMostRecentWindow = openedWindowIndex === state.openedWindows.length - 1;\n // if no workspaces left, remove the window\n openedWindows.splice(openedWindowIndex, 1);\n // If we removed the most recent window and there are still windows left,\n // the new most recent window should be shown\n if (wasMostRecentWindow && openedWindows.length > 0) {\n hidden = false;\n }\n } else {\n // if there are still workspaces left, just update the window\n openedWindows[openedWindowIndex] = window;\n }\n return _object_spread_props(_object_spread({}, state), {\n openedWindows: openedWindows,\n isMostRecentlyOpenedWindowHidden: hidden\n });\n },\n openChildWorkspace: function openChildWorkspace(state, parentWorkspaceName, childWorkspaceName, childWorkspaceProps) {\n var childWorkspaceDef = state.registeredWorkspacesByName[childWorkspaceName];\n if (!childWorkspaceDef) {\n throw new Error('No workspace named \"'.concat(childWorkspaceName, '\" registered'));\n }\n var parentWorkspaceDef = state.registeredWorkspacesByName[parentWorkspaceName];\n if (!parentWorkspaceDef) {\n throw new Error('No workspace named \"'.concat(parentWorkspaceName, '\" registered'));\n }\n if (parentWorkspaceDef.window !== childWorkspaceDef.window) {\n throw new Error(\"Child workspace \".concat(childWorkspaceName, \" does not belong to the same workspace window as parent workspace \").concat(parentWorkspaceName));\n }\n // as the request workspace should be a child workspace, the corresponding window\n // to contain the workspace should already be opened\n var openedWindowIndex = state.openedWindows.findIndex(function(window) {\n return window.windowName === childWorkspaceDef.window;\n });\n if (openedWindowIndex == -1) {\n throw new Error(\"Cannot open child workspace \".concat(childWorkspaceName, \" as window \").concat(childWorkspaceDef.window, \" is not opened\"));\n }\n var openedWindow = state.openedWindows[openedWindowIndex];\n var openedWorkspaces = openedWindow.openedWorkspaces;\n var parentIndex = openedWorkspaces.findIndex(function(w) {\n return w.workspaceName === parentWorkspaceName;\n });\n if (parentIndex === -1) {\n throw new Error(\"Cannot open child workspace \".concat(childWorkspaceName, \" from parent workspace \").concat(parentWorkspaceName, \" as the parent is not opened within the workspace window\"));\n }\n // Close any workspaces above the parent (analogous to closeWorkspace's slice behavior)\n var trimmedWorkspaces = openedWorkspaces.slice(0, parentIndex + 1);\n return {\n openedWindows: state.openedWindows.map(function(w, i) {\n if (i == openedWindowIndex) {\n return _object_spread_props(_object_spread({}, w), {\n openedWorkspaces: _to_consumable_array(trimmedWorkspaces).concat([\n newOpenedWorkspace(childWorkspaceName, childWorkspaceProps)\n ])\n });\n } else {\n return w;\n }\n })\n };\n },\n setHasUnsavedChanges: function setHasUnsavedChanges(state, workspaceName, hasUnsavedChanges) {\n var openedWindowIndex = (0,_openmrs_esm_extensions__rspack_import_2.getOpenedWindowIndexByWorkspace)(workspaceName);\n if (openedWindowIndex < 0) {\n return state; // no-op if the window does not exist\n }\n var openedWindow = _object_spread({}, state.openedWindows[openedWindowIndex]);\n var workspaceIndex = openedWindow.openedWorkspaces.findIndex(function(w) {\n return w.workspaceName === workspaceName;\n });\n if (workspaceIndex < 0) {\n return state; // no-op if the workspace is not found\n }\n openedWindow.openedWorkspaces[workspaceIndex] = _object_spread_props(_object_spread({}, openedWindow.openedWorkspaces[workspaceIndex]), {\n hasUnsavedChanges: hasUnsavedChanges\n });\n var openedWindows = _to_consumable_array(state.openedWindows);\n openedWindows[openedWindowIndex] = openedWindow;\n return _object_spread_props(_object_spread({}, state), {\n openedWindows: openedWindows\n });\n },\n setWorkspaceTitle: function setWorkspaceTitle(state, workspaceName, title) {\n var newWorkspaceTitleByWorkspaceName = _object_spread({}, state.workspaceTitleByWorkspaceName);\n if (title === null) {\n delete newWorkspaceTitleByWorkspaceName[workspaceName];\n } else {\n newWorkspaceTitleByWorkspaceName[workspaceName] = title;\n }\n return _object_spread_props(_object_spread({}, state), {\n workspaceTitleByWorkspaceName: newWorkspaceTitleByWorkspaceName\n });\n }\n};\nfunction useWorkspace2Store() {\n return (0,_openmrs_esm_react_utils__rspack_import_3.useStoreWithActions)(_openmrs_esm_extensions__rspack_import_2.workspace2Store, workspace2StoreActions);\n}\n/**\n * Returns the react Context containing props passed into a workspace.\n * This hook MUST be called inside a child of <Workspace2>\n */ var useWorkspace2Context = function useWorkspace2Context() {\n return (0,react__rspack_import_0.useContext)(single_spa_react__rspack_import_1.SingleSpaContext);\n};\n/**\n * @returns a list of registered workspaces.\n */ var getRegisteredWorkspace2Names = function getRegisteredWorkspace2Names() {\n return Object.keys(_openmrs_esm_extensions__rspack_import_2.workspace2Store.getState().registeredWorkspacesByName);\n};\nfunction newOpenedWorkspace(workspaceName, workspaceProps) {\n return {\n workspaceName: workspaceName,\n props: workspaceProps !== null && workspaceProps !== void 0 ? workspaceProps : {},\n hasUnsavedChanges: false,\n uuid: (0,uuid__rspack_import_6[\"default\"])()\n };\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbHRpbjpzd2MtbG9hZGVyIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9wYWNrYWdlcy9mcmFtZXdvcmsvZXNtLXN0eWxlZ3VpZGUvZGlzdC93b3Jrc3BhY2VzMi93b3Jrc3BhY2UyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uLi8uLi9mcmFtZXdvcmsvZXNtLXN0eWxlZ3VpZGUvZGlzdC93b3Jrc3BhY2VzMi93b3Jrc3BhY2UyLmpzPzhjYjUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlQ29udGV4dCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgU2luZ2xlU3BhQ29udGV4dCB9IGZyb20gXCJzaW5nbGUtc3BhLXJlYWN0XCI7XG5pbXBvcnQgeyB2NCBhcyB1dWlkVjQgfSBmcm9tIFwidXVpZFwiO1xuaW1wb3J0IHsgZ2V0R3JvdXBCeVdpbmRvd05hbWUsIGdldE9wZW5lZFdpbmRvd0luZGV4QnlXb3Jrc3BhY2UsIGdldFdpbmRvd0J5V29ya3NwYWNlTmFtZSwgd29ya3NwYWNlMlN0b3JlIH0gZnJvbSBcIkBvcGVubXJzL2VzbS1leHRlbnNpb25zXCI7XG5pbXBvcnQgeyB1c2VTdG9yZVdpdGhBY3Rpb25zIH0gZnJvbSBcIkBvcGVubXJzL2VzbS1yZWFjdC11dGlsc1wiO1xuaW1wb3J0IHsgc2hhbGxvd0VxdWFsIH0gZnJvbSBcIkBvcGVubXJzL2VzbS11dGlsc1wiO1xuaW1wb3J0IHsgc2hvd01vZGFsIH0gZnJvbSBcIi4uL21vZGFscy9pbmRleC5qc1wiO1xuLyoqXG4gKiBBdHRlbXB0cyB0byBsYXVuY2ggdGhlIHNwZWNpZmllZCB3b3Jrc3BhY2UgZ3JvdXAgd2l0aCB0aGUgZ2l2ZW4gZ3JvdXAgcHJvcHMuIE5vdGUgdGhhdCBvbmx5IG9uZSB3b3Jrc3BhY2UgZ3JvdXBcbiAqIG1heSBiZSBvcGVuZWQgYXQgYW55IGdpdmVuIHRpbWUuIElmIGEgd29ya3NwYWNlIGdyb3VwIGlzIGFscmVhZHkgb3BlbmVkLCBjYWxsaW5nIGBsYXVuY2hXb3Jrc3BhY2VHcm91cDJgIHdpdGhcbiAqIGVpdGhlciBhIGRpZmZlcmVudCBncm91cCBuYW1lLCBvciBzYW1lIGdyb3VwIG5hbWUgYnV0IGRpZmZlcmVudCBpbmNvbXBhdGlibGUgcHJvcHMqKiwgd2lsbCByZXN1bHQgaW4gcHJvbXB0aW5nIHRvXG4gKiBjb25maXJtIGNsb3Npbmcgd29ya3NwYWNlcy4gSWYgdGhlIHVzZXIgY29uZmlybXMsIHRoZSBvcGVuZWQgZ3JvdXAsIGFsb25nIHdpdGggaXRzIHdpbmRvd3MgKGFuZCB0aGVpciB3b3Jrc3BhY2VzKSwgaXMgY2xvc2VkLCBhbmRcbiAqIHRoZSByZXF1ZXN0ZWQgZ3JvdXAgaXMgaW1tZWRpYXRlbHkgb3BlbmVkLlxuICpcbiAqICoqIDIgc2V0cyBvZiBwcm9wcyBhcmUgY29tcGF0aWJsZSBpZiBlaXRoZXIgb25lIGlzIG51bGxpc2gsIG9yIGlmIHRoZXkgYXJlIHNoYWxsb3cgZXF1YWwuXG4gKiBAcGFyYW0gZ3JvdXBOYW1lXG4gKiBAcGFyYW0gZ3JvdXBQcm9wc1xuICogQHJldHVybnMgYSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdHJ1ZSBpZiB0aGUgc3BlY2lmaWVkIHdvcmtzcGFjZSBncm91cCB3aXRoIHRoZSBzcGVjaWZpZWQgZ3JvdXAgcHJvcHNcbiAqICBpcyBzdWNjZXNzZnVsbHkgb3BlbmVkLCBvciB0aGF0IGl0IGFscmVhZHkgaXMgb3BlbmVkLlxuICovIGV4cG9ydCBhc3luYyBmdW5jdGlvbiBsYXVuY2hXb3Jrc3BhY2VHcm91cDIoZ3JvdXBOYW1lLCBncm91cFByb3BzKSB7XG4gICAgY29uc3QgeyBvcGVuZWRHcm91cCB9ID0gd29ya3NwYWNlMlN0b3JlLmdldFN0YXRlKCk7XG4gICAgaWYgKG9wZW5lZEdyb3VwKSB7XG4gICAgICAgIGlmIChvcGVuZWRHcm91cC5ncm91cE5hbWUgIT09IGdyb3VwTmFtZSB8fCAhYXJlUHJvcHNDb21wYXRpYmxlKG9wZW5lZEdyb3VwLnByb3BzLCBncm91cFByb3BzKSkge1xuICAgICAgICAgICAgY29uc3Qgb2tUb0Nsb3NlV29ya3NwYWNlcyA9IGF3YWl0IHByb21wdEZvckNsb3NpbmdXb3Jrc3BhY2VzKHtcbiAgICAgICAgICAgICAgICByZWFzb246ICdDTE9TRV9XT1JLU1BBQ0VfR1JPVVAnLFxuICAgICAgICAgICAgICAgIGV4cGxpY2l0OiBmYWxzZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoIW9rVG9DbG9zZVdvcmtzcGFjZXMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIC8vIGVsc2UsIHByb2NlZWQgdG8gb3BlbiB0aGUgbmV3IGdyb3VwIHdpdGggbm8gb3BlbmVkV2luZG93c1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gbm8tb3AsIGdyb3VwIHdpdGggZ3JvdXAgcHJvcHMgaXMgYWxyZWFkeSBvcGVuZWRcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHdvcmtzcGFjZTJTdG9yZS5zZXRTdGF0ZSgoc3RhdGUpPT4oe1xuICAgICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgICBvcGVuZWRHcm91cDoge1xuICAgICAgICAgICAgICAgIGdyb3VwTmFtZSxcbiAgICAgICAgICAgICAgICBwcm9wczogZ3JvdXBQcm9wc1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9wZW5lZFdpbmRvd3M6IFtdXG4gICAgICAgIH0pKTtcbiAgICByZXR1cm4gdHJ1ZTtcbn1cbi8qKlxuICogQ2xvc2VzIHRoZSB3b3Jrc3BhY2UgZ3JvdXAgdGhhdCBpcyBjdXJyZW50bHkgb3BlbmVkLiBOb3RlIHRoYXQgb25seSBvbmUgd29ya3NwYWNlIGdyb3VwXG4gKiBtYXkgYmUgb3BlbmVkIGF0IGFueSBnaXZlbiB0aW1lXG4gKiBAcGFyYW0gZGlzY2FyZFVuc2F2ZWRDaGFuZ2VzIElmIHRydWUsIHRoZW4gdGhlIHdvcmtzcGFjZSBncm91cCBpcyBmb3JjZWQgY2xvc2VkLCB3aXRoIG5vIHByb21wdFxuICogZm9yIGNvbmZpcm1hdGlvbiBmb3IgdW5zYXZlZCBjaGFuZ2VzIGluIGFueSBvcGVuZWQgd29ya3NwYWNlLiBUaGlzIHNob3VsZCBiZSB1c2VkIHNwYXJpbmdseVxuICogZm9yIGNsZWFuLXVwIHB1cnBvc2UsIGV4OiB3aGVuIGV4aXRpbmcgYW4gYXBwLlxuICogQHJldHVybnMgYSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdHJ1ZSBpZiB0aGVyZSBpcyBubyBvcGVuZWQgZ3JvdXAgdG8gYmVnaW4gd2l0aCBvciB3ZSBzdWNjZXNzZnVsbHkgY2xvc2VkXG4gKiB0aGUgb3BlbmVkIGdyb3VwOyBmYWxzZSBvdGhlcndpc2UuXG4gKi8gZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNsb3NlV29ya3NwYWNlR3JvdXAyKGRpc2NhcmRVbnNhdmVkQ2hhbmdlcykge1xuICAgIGNvbnN0IHN0YXRlID0gd29ya3NwYWNlMlN0b3JlLmdldFN0YXRlKCk7XG4gICAgY29uc3QgeyBvcGVuZWRHcm91cCwgb3BlbmVkV2luZG93cyB9ID0gc3RhdGU7XG4gICAgaWYgKG9wZW5lZEdyb3VwKSB7XG4gICAgICAgIGlmIChvcGVuZWRXaW5kb3dzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IG9rVG9DbG9zZVdvcmtzcGFjZXMgPSBkaXNjYXJkVW5zYXZlZENoYW5nZXMgfHwgYXdhaXQgcHJvbXB0Rm9yQ2xvc2luZ1dvcmtzcGFjZXMoe1xuICAgICAgICAgICAgICAgIHJlYXNvbjogJ0NMT1NFX1dPUktTUEFDRV9HUk9VUCcsXG4gICAgICAgICAgICAgICAgZXhwbGljaXQ6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKCFva1RvQ2xvc2VXb3Jrc3BhY2VzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHdvcmtzcGFjZTJTdG9yZS5zZXRTdGF0ZSgoc3RhdGUpPT4oe1xuICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgICAgIG9wZW5lZEdyb3VwOiBudWxsLFxuICAgICAgICAgICAgICAgIG9wZW5lZFdpbmRvd3M6IFtdXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICAvLyBubyBvcGVuZWRHcm91cCB3aXRoIGJlZ2luIHdpdGgsIHJldHVybiB0cnVlXG4gICAgcmV0dXJuIHRydWU7XG59XG4vKipcbiAqIEF0dGVtcHRzIHRvIGxhdW5jaCB0aGUgc3BlY2lmaWVkIHdvcmtzcGFjZSB3aXRoIHRoZSBnaXZlbiB3b3Jrc3BhY2UgcHJvcHMuIFRoaXMgYWxzbyBpbXBsaWNpdGx5IG9wZW5zXG4gKiB0aGUgd29ya3NwYWNlIHdpbmRvdyB0byB3aGljaCB0aGUgd29ya3NwYWNlIGJlbG9uZ3MgKGlmIGl0J3Mgbm90IG9wZW5lZCBhbHJlYWR5KSxcbiAqIGFuZCB0aGUgd29ya3NwYWNlIGdyb3VwIHRvIHdoaWNoIHRoZSB3aW5kb3cgYmVsb25ncyAoaWYgaXQncyBub3Qgb3BlbmVkIGFscmVhZHkpLlxuICpcbiAqIFdoZW4gY2FsbGluZyBgbGF1bmNoV29ya3NwYWNlMmAsIHdlIG5lZWQgdG8gYWxzbyBwYXNzIGluIHRoZSB3b3Jrc3BhY2UgcHJvcHMuIFdoaWxlIG5vdCByZXF1aXJlZCxcbiAqIHdlIGNhbiBhbHNvIHBhc3MgaW4gdGhlIHdpbmRvdyBwcm9wcyAoc2hhcmVkIGJ5IG90aGVyIHdvcmtzcGFjZXMgaW4gdGhlIHdpbmRvdykgYW5kIHRoZSBncm91cCBwcm9wc1xuICogKHNoYXJlZCBieSBhbGwgd2luZG93cyBhbmQgdGhlaXIgd29ya3NwYWNlcykuIE9taXR0aW5nIHRoZSB3aW5kb3cgcHJvcHMgb3IgdGhlIGdyb3VwIHByb3BzW14xXSBtZWFucyB0aGUgY2FsbGVyXG4gKiBleHBsaWNpdGx5IGRvZXMgbm90IGNhcmUgd2hhdCB0aGUgY3VycmVudCB3aW5kb3cgcHJvcHMgYW5kIGdyb3VwIHByb3BzIGFyZSwgYW5kIHRoYXQgdGhleSBtYXkgYmUgc2V0XG4gKiBieSBvdGhlciBhY3Rpb25zIChsaWtlIGNhbGxpbmcgYGxhdW5jaFdvcmtzcGFjZTJgIG9uIGEgZGlmZmVyZW50IHdvcmtzcGFjZSB3aXRoIHRob3NlIHByb3BzIHBhc3NlZCBpbilcbiAqIGF0IGEgbGF0ZXIgdGltZS5cbiAqXG4gKiBJZiB0aGVyZSBpcyBhbHJlYWR5IGFuIG9wZW5lZCB3b3Jrc3BhY2UgZ3JvdXAsIGFuZCBpdCdzIG5vdCB0aGUgZ3JvdXAgdGhlIHdvcmtzcGFjZSBiZWxvbmdzIHRvXG4gKiBvciBoYXMgaW5jb21wYXRpYmxlW14yXSBncm91cCBwcm9wcywgdGhlbiB3ZSBwcm9tcHQgdGhlIHVzZXIgdG8gY2xvc2UgdGhlIGdyb3VwIChhbmQgaXRzIHdpbmRvd3MgYW5kIHRoZWlyIHdvcmtzcGFjZXMpLlxuICogT24gdXNlciBjb25maXJtLCB0aGUgZXhpc3Rpbmcgb3BlbmVkIGdyb3VwIGlzIGNsb3NlZCBhbmQgdGhlIG5ldyB3b3Jrc3BhY2UsIGFsb25nIHdpdGggaXRzIHdpbmRvdyBhbmQgaXRzIGdyb3VwLFxuICogaXMgb3BlbmVkLlxuICpcbiAqIElmIHRoZSB3aW5kb3cgaXMgYWxyZWFkeSBvcGVuZWQsIGJ1dCB3aXRoIGluY29tcGF0aWJsZSB3aW5kb3cgcHJvcHMsIHdlIHByb21wdCB0aGUgdXNlciB0byBjbG9zZVxuICogdGhlIHdpbmRvdyAoYW5kIGFsbCBpdHMgb3BlbmVkIHdvcmtzcGFjZXMpLCBhbmQgcmVvcGVuIHRoZSB3aW5kb3cgd2l0aCAob25seSkgdGhlIG5ld2x5IHJlcXVlc3RlZCB3b3Jrc3BhY2UuXG4gKlxuICogSWYgdGhlIHdvcmtzcGFjZSBpcyBhbHJlYWR5IG9wZW5lZCwgYnV0IHdpdGggaW5jb21wYXRpYmxlIHdvcmtzcGFjZSBwcm9wcywgd2UgYWxzbyBwcm9tcHQgdGhlIHVzZXIgdG8gY2xvc2VcbiAqIHRoZSAqKndpbmRvdyoqIChhbmQgYWxsIGl0cyBvcGVuZWQgd29ya3NwYWNlcyksIGFuZCByZW9wZW4gdGhlIHdpbmRvdyB3aXRoIChvbmx5KSB0aGUgbmV3bHkgcmVxdWVzdGVkIHdvcmtzcGFjZS5cbiAqIFRoaXMgaXMgdHJ1ZSByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhlIGFscmVhZHkgb3BlbmVkIHdvcmtzcGFjZSBoYXMgYW55IGNoaWxkIHdvcmtzcGFjZXMuXG4gKlxuICogTm90ZSB0aGF0IGNhbGxpbmcgdGhpcyBmdW5jdGlvbiAqbmV2ZXIqIHJlc3VsdHMgaW4gY3JlYXRpbmcgYSBjaGlsZCB3b3Jrc3BhY2UgaW4gdGhlIGFmZmVjdGVkIHdpbmRvdy5cbiAqIFRvIGRvIHNvLCB3ZSBuZWVkIHRvIGNhbGwgYGxhdW5jaENoaWxkV29ya3NwYWNlYCBpbnN0ZWFkLlxuICpcbiAqIFteMV0gT21pdHRpbmcgd2luZG93IG9yIGdyb3VwIHByb3BzIGlzIHVzZWZ1bCBmb3Igd29ya3NwYWNlcyB0aGF0IGRvbid0IGhhdmUgdGllcyB0byB0aGUgd2luZG93IG9yIGdyb3VwIFwiY29udGV4dFwiIChwcm9wcykuXG4gKiBGb3IgZXhhbXBsZSwgaW4gdGhlIHBhdGllbnQgY2hhcnQsIHRoZSB2aXNpdCBub3RlcyAvIGNsaW5pY2FsIGZvcm1zIC8gb3JkZXIgYmFza2V0IGFjdGlvbiBtZW51IGJ1dHRvbiBhbGwgc2hhcmVcbiAqIGEgXCJncm91cCBjb250ZXh0XCIgb2YgdGhlIGN1cnJlbnQgdmlzaXQuIEhvd2V2ZXIsIHRoZSBcInBhdGllbnQgbGlzdFwiIGFjdGlvbiBtZW51IGJ1dHRvbiBkb2VzIG5vdCBuZWVkIHRvIHNoYXJlIHRoYXQgZ3JvdXBcbiAqIGNvbnRleHQsIHNvIG9wZW5pbmcgdGhhdCB3b3Jrc3BhY2Ugc2hvdWxkIG5vdCBuZWVkIHRvIGNhdXNlIG90aGVyIHdvcmtzcGFjZXMgLyB3aW5kb3dzIC8gZ3JvdXBzIHRvIHBvdGVudGlhbGx5IGNsb3NlLlxuICogVGhlIFwicGF0aWVudCBzZWFyY2hcIiB3b3Jrc3BhY2UgaW4gdGhlIHF1ZXVlcyBhbmQgd2FyZCBhcHBzIGlzIGFub3RoZXIgZXhhbXBsZS5cbiAqXG4gKiBbXjJdIDIgc2V0cyBvZiBwcm9wcyBhcmUgY29tcGF0aWJsZSBpZiBlaXRoZXIgb25lIGlzIG51bGxpc2gsIG9yIGlmIHRoZXkgYXJlIHNoYWxsb3cgZXF1YWwuXG4gKi8gZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxhdW5jaFdvcmtzcGFjZTIod29ya3NwYWNlTmFtZSwgd29ya3NwYWNlUHJvcHMgPSBudWxsLCB3aW5kb3dQcm9wcyA9IG51bGwsIGdyb3VwUHJvcHMgPSBudWxsKSB7XG4gICAgY29uc3Qgc3RvcmVTdGF0ZSA9IHdvcmtzcGFjZTJTdG9yZS5nZXRTdGF0ZSgpO1xuICAgIGlmICghc3RvcmVTdGF0ZS5yZWdpc3RlcmVkV29ya3NwYWNlc0J5TmFtZVt3b3Jrc3BhY2VOYW1lXSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBsYXVuY2ggd29ya3NwYWNlICR7d29ya3NwYWNlTmFtZX0uIFdvcmtzcGFjZSBpcyBub3QgcmVnaXN0ZXJlZGApO1xuICAgIH1cbiAgICBjb25zdCB3aW5kb3dEZWYgPSBnZXRXaW5kb3dCeVdvcmtzcGFjZU5hbWUod29ya3NwYWNlTmFtZSk7XG4gICAgaWYgKCF3aW5kb3dEZWYpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gbGF1bmNoIHdvcmtzcGFjZSAke3dvcmtzcGFjZU5hbWV9LiBXb3Jrc3BhY2UgaXMgbm90IHJlZ2lzdGVyZWQgdG8gYSB3b3Jrc3BhY2Ugd2luZG93YCk7XG4gICAgfVxuICAgIGNvbnN0IHsgb3BlbmVkR3JvdXAgfSA9IHN0b3JlU3RhdGU7XG4gICAgY29uc3QgeyBuYW1lOiB3aW5kb3dOYW1lIH0gPSB3aW5kb3dEZWY7XG4gICAgY29uc3QgZ3JvdXBEZWYgPSBnZXRHcm91cEJ5V2luZG93TmFtZSh3aW5kb3dOYW1lKTtcbiAgICBpZiAoIWdyb3VwRGVmKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIGxhdW5jaCB3b3Jrc3BhY2UgJHt3b3Jrc3BhY2VOYW1lfS4gV29ya3NwYWNlIHdpbmRvdyAke3dpbmRvd0RlZi5uYW1lfSBpcyBub3QgcmVnaXN0ZXJlZCB0byBhIHdvcmtzcGFjZSBncm91cGApO1xuICAgIH1cbiAgICBjb25zdCBvcGVuZWRXaW5kb3dJbmRleCA9IGdldE9wZW5lZFdpbmRvd0luZGV4QnlXb3Jrc3BhY2Uod29ya3NwYWNlTmFtZSk7XG4gICAgY29uc3QgaXNXaW5kb3dBbHJlYWR5T3BlbmVkID0gb3BlbmVkV2luZG93SW5kZXggPj0gMDtcbiAgICAvLyBpZiBjdXJyZW50IG9wZW5lZCBncm91cCBpcyBub3QgdGhlIHNhbWUgYXMgdGhlIHJlcXVlc3RlZCBncm91cCwgb3IgaWYgdGhlIGdyb3VwIHByb3BzIGFyZSBkaWZmZXJlbnQsIHRoZW4gcHJvbXB0IGZvciB1bnNhdmVkIGNoYW5nZXNcbiAgICBpZiAob3BlbmVkR3JvdXAgJiYgKG9wZW5lZEdyb3VwLmdyb3VwTmFtZSAhPT0gZ3JvdXBEZWYubmFtZSB8fCAhYXJlUHJvcHNDb21wYXRpYmxlKG9wZW5lZEdyb3VwLnByb3BzLCBncm91cFByb3BzKSkpIHtcbiAgICAgICAgY29uc3Qgb2tUb0Nsb3NlV29ya3NwYWNlcyA9IGF3YWl0IHByb21wdEZvckNsb3NpbmdXb3Jrc3BhY2VzKHtcbiAgICAgICAgICAgIHJlYXNvbjogJ0NMT1NFX1dPUktTUEFDRV9HUk9VUCcsXG4gICAgICAgICAgICBleHBsaWNpdDogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKG9rVG9DbG9zZVdvcmtzcGFjZXMpIHtcbiAgICAgICAgICAgIHdvcmtzcGFjZTJTdG9yZS5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAgICAgLi4uc3RvcmVTdGF0ZSxcbiAgICAgICAgICAgICAgICBvcGVuZWRHcm91cDoge1xuICAgICAgICAgICAgICAgICAgICBncm91cE5hbWU6IGdyb3VwRGVmLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHByb3BzOiBncm91cFByb3BzXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBvcGVuZWRXaW5kb3dzOiBbXG4gICAgICAgICAgICAgICAgICAgIC8vIGRpc2NhcmQgYWxsIG9wZW5lZCB3aW5kb3dzLCBvcGVuIGEgbmV3IG9uZSB3aXRoIHRoZSByZXF1ZXN0ZWQgd29ya3NwYWNlXG4gICAgICAgICAgICAgICAgICAgIC8vIG1vc3QgcmVjZW50bHkgb3BlbmVkIGFjdGlvbiBhcHBlbmRlZCB0byB0aGUgZW5kXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvd05hbWU6IHdpbmRvd05hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcGVuZWRXb3Jrc3BhY2VzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3T3BlbmVkV29ya3NwYWNlKHdvcmtzcGFjZU5hbWUsIHdvcmtzcGFjZVByb3BzKVxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzOiB3aW5kb3dQcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1heGltaXplZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgaXNNb3N0UmVjZW50bHlPcGVuZWRXaW5kb3dIaWRkZW46IGZhbHNlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1dpbmRvd0FscmVhZHlPcGVuZWQpIHtcbiAgICAgICAgY29uc3Qgb3BlbmVkV2luZG93ID0gc3RvcmVTdGF0ZS5vcGVuZWRXaW5kb3dzW29wZW5lZFdpbmRvd0luZGV4XTtcbiAgICAgICAgY29uc3QgZ3JvdXBQcm9wcyA9IHN0b3JlU3RhdGUub3BlbmVkR3JvdXA/LnByb3BzID8/IHt9O1xuICAgICAgICBjb25zdCBpc01vc3RSZWNlbnRseU9wZW5lZFdpbmRvd0hpZGRlbiA9IHN0b3JlU3RhdGUuaXNNb3N0UmVjZW50bHlPcGVuZWRXaW5kb3dIaWRkZW47XG4gICAgICAgIGNvbnN0IHsgb3BlbmVkV29ya3NwYWNlcyB9ID0gb3BlbmVkV2luZG93O1xuICAgICAgICBpZiAoYXJlUHJvcHNDb21wYXRpYmxlKG9wZW5lZFdpbmRvdy5wcm9wcywgd2luZG93UHJvcHMpKSB7XG4gICAgICAgICAgICAvLyB0aGlzIGNhc2UgaXMgdHJpY2t5LCB0aGlzIHJlc3VsdHMgaW4gcmVzdG9yaW5nIHRoZSB3aW5kb3cgaWY6XG4gICAgICAgICAgICAvLyAxLiB0aGUgd29ya3NwYWNlIGlzIG9wZW5lZCAoYnV0IG5vdCBuZWNlc3NhcmlseSBhcyBhIGxlYWYgd29ya3NwYWNlKVxuICAgICAgICAgICAgLy8gMi4gdGhlIHByb3BzIG9mIHRoZSBvcGVuZWQgd29ya3NwYWNlIGlzIHNhbWUgYXMgd29ya3NwYWNlIHByb3BzIChmcm9tIHRoZSBmdW5jdGlvbiBpbnB1dClcbiAgICAgICAgICAgIC8vXG4gICAgICAgICAgICAvLyBPdGhlcndpc2UsIHdlIGNsb3NlIGFsbCB3b3Jrc3BhY2VzIGluIHRoaXMgd2luZG93LCBhbmQgb3BlbiB0aGlzIG5ld2x5IHJlcXVlc3RlZCBvbmVcbiAgICAgICAgICAgIGNvbnN0IG9wZW5lZFdvcmtzcGFjZSA9IG9wZW5lZFdvcmtzcGFjZXMuZmluZCgodyk9Pncud29ya3NwYWNlTmFtZSA9PT0gd29ya3NwYWNlTmFtZSk7XG4gICAgICAgICAgICBpZiAob3BlbmVkV29ya3NwYWNlICYmIGFyZVByb3BzQ29tcGF0aWJsZShvcGVuZWRXb3Jrc3BhY2UucHJvcHMsIHdvcmtzcGFjZVByb3BzKSkge1xuICAgICAgICAgICAgICAgIC8vIHJlc3RvcmUgdGhlIHdpbmRvdyBpZiBpdCBpcyBoaWRkZW4gb3Igbm90IHRoZSBtb3N0IHJlY2VudGx5IG9wZW5lZCBvbmVcbiAgICAgICAgICAgICAgICBpZiAoaXNNb3N0UmVjZW50bHlPcGVuZWRXaW5kb3dIaWRkZW4gfHwgb3BlbmVkV2luZG93SW5kZXggIT09IHN0b3JlU3RhdGUub3BlbmVkV2luZG93cy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHdvcmtzcGFjZTJTdG9yZS5zZXRTdGF0ZSh3b3Jrc3BhY2UyU3RvcmVBY3Rpb25zLnJlc3RvcmVXaW5kb3coc3RvcmVTdGF0ZSwgd2luZG93TmFtZSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb2tUb0Nsb3NlV29ya3NwYWNlcyA9IGF3YWl0IHByb21wdEZvckNsb3NpbmdXb3Jrc3BhY2VzKHtcbiAgICAgICAgICAgICAgICAgICAgcmVhc29uOiAnQ0xPU0VfV09SS1NQQUNFJyxcbiAgICAgICAgICAgICAgICAgICAgZXhwbGljaXQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICB3aW5kb3dOYW1lLFxuICAgICAgICAgICAgICAgICAgICB3b3Jrc3BhY2VOYW1lXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKG9rVG9DbG9zZVdvcmtzcGFjZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgd29ya3NwYWNlMlN0b3JlLnNldFN0YXRlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnN0b3JlU3RhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcGVuZWRHcm91cDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwTmFtZTogZ3JvdXBEZWYubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wczogc3RvcmVTdGF0ZT8ub3BlbmVkR3JvdXA/LnByb3BzID8/IGdyb3VwUHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvcGVuZWRXaW5kb3dzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uc3RvcmVTdGF0ZS5vcGVuZWRXaW5kb3dzLmZpbHRlcigoXywgaSk9PmkgIT09IG9wZW5lZFdpbmRvd0luZGV4KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtb3N0IHJlY2VudGx5IG9wZW5lZCB3b3Jrc3BhY2UgYXQgdGhlIGVuZCBvZiB0aGUgYXJyYXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvd05hbWU6IHdpbmRvd05hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5lZFdvcmtzcGFjZXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld09wZW5lZFdvcmtzcGFjZSh3b3Jrc3BhY2VOYW1lLCB3b3Jrc3BhY2VQcm9wcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM6IG9wZW5lZFdpbmRvdz8ucHJvcHMgPz8gd2luZG93UHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGltaXplZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNNb3N0UmVjZW50bHlPcGVuZWRXaW5kb3dIaWRkZW46IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3Qgb2tUb0Nsb3NlV29ya3NwYWNlcyA9IGF3YWl0IHByb21wdEZvckNsb3NpbmdXb3Jrc3BhY2VzKHtcbiAgICAgICAgICAgICAgICByZWFzb246ICdDTE9TRV9XSU5ET1cnLFxuICAgICAgICAgICAgICAgIGV4cGxpY2l0OiBmYWxzZSxcbiAgICAgICAgICAgICAgICB3aW5kb3dOYW1lXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChva1RvQ2xvc2VXb3Jrc3BhY2VzKSB7XG4gICAgICAgICAgICAgICAgLy8gZGlzY2FyZCB0aGUgb3BlbmVkV2luZG93cyBlbGVtZW50IGF0IG9wZW5lZFdpbmRvd0luZGV4XG4gICAgICAgICAgICAgICAgLy8gYW5kIGNyZWF0ZSBhIG5ldyBvbmUgd2l0aCB0aGUgcmVxdWVzdGVkIHdvcmtzcGFjZSBvcGVuZWRcbiAgICAgICAgICAgICAgICB3b3Jrc3BhY2UyU3RvcmUuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICAgICAgICAuLi5zdG9yZVN0YXRlLFxuICAgICAgICAgICAgICAgICAgICBvcGVuZWRHcm91cDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBOYW1lOiBncm91cERlZi5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM6IGdyb3VwUHJvcHMgPz8gc3RvcmVTdGF0ZT8ub3BlbmVkR3JvdXA/LnByb3BzXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIG9wZW5lZFdpbmRvd3M6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnN0b3JlU3RhdGUub3BlbmVkV2luZG93cy5maWx0ZXIoKF8sIGkpPT5pICE9PSBvcGVuZWRXaW5kb3dJbmRleCksXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBtb3N0IHJlY2VudGx5IG9wZW5lZCB3b3Jrc3BhY2UgYXQgdGhlIGVuZCBvZiB0aGUgYXJyYXlcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3dOYW1lOiB3aW5kb3dOYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5lZFdvcmtzcGFjZXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3T3BlbmVkV29ya3NwYWNlKHdvcmtzcGFjZU5hbWUsIHdvcmtzcGFjZVByb3BzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM6IHdpbmRvd1Byb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGltaXplZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgaXNNb3N0UmVjZW50bHlPcGVuZWRXaW5kb3dIaWRkZW46IGZhbHNlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZ3JvdXBEZWYucGVyc2lzdGVuY2UgPT0gJ2Nsb3NhYmxlJykge1xuICAgICAgICBjb25zdCBva1RvQ2xvc2VXb3Jrc3BhY2VzID0gYXdhaXQgcHJvbXB0Rm9yQ2xvc2luZ1dvcmtzcGFjZXMoe1xuICAgICAgICAgICAgcmVhc29uOiAnQ0xPU0VfT1RIRVJfV0lORE9XUycsXG4gICAgICAgICAgICBleHBsaWNpdDogZmFsc2UsXG4gICAgICAgICAgICB3aW5kb3dOYW1lVG9TcGFyZTogd2luZG93RGVmLm5hbWVcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChva1RvQ2xvc2VXb3Jrc3BhY2VzKSB7XG4gICAgICAgICAgICB3b3Jrc3BhY2UyU3RvcmUuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICAgIC4uLnN0b3JlU3RhdGUsXG4gICAgICAgICAgICAgICAgb3BlbmVkR3JvdXA6IHtcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXBOYW1lOiBncm91cERlZi5uYW1lLFxuICAgICAgICAgICAgICAgICAgICBwcm9wczogZ3JvdXBQcm9wcyA/PyBzdG9yZVN0YXRlPy5vcGVuZWRHcm91cD8ucHJvcHMgPz8gbnVsbFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgb3BlbmVkV2luZG93czogW1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3dOYW1lOiB3aW5kb3dOYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3BlbmVkV29ya3NwYWNlczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld09wZW5lZFdvcmtzcGFjZSh3b3Jrc3BhY2VOYW1lLCB3b3Jrc3BhY2VQcm9wcylcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wczogd2luZG93UHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXhpbWl6ZWQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIGlzTW9zdFJlY2VudGx5T3BlbmVkV2luZG93SGlkZGVuOiBmYWxzZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHdvcmtzcGFjZTJTdG9yZS5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAuLi5zdG9yZVN0YXRlLFxuICAgICAgICAgICAgb3BlbmVkR3JvdXA6IHtcbiAgICAgICAgICAgICAgICBncm91cE5hbWU6IGdyb3VwRGVmLm5hbWUsXG4gICAgICAgICAgICAgICAgcHJvcHM6IGdyb3VwUHJvcHMgPz8gc3RvcmVTdGF0ZT8ub3BlbmVkR3JvdXA/LnByb3BzID8/IG51bGxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvcGVuZWRXaW5kb3dzOiBbXG4gICAgICAgICAgICAgICAgLi4uc3RvcmVTdGF0ZS5vcGVuZWRXaW5kb3dzLFxuICAgICAgICAgICAgICAgIC8vIG1vc3QgcmVjZW50bHkgb3BlbmVkIHdvcmtzcGFjZSBhdCB0aGUgZW5kIG9mIHRoZSBhcnJheVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93TmFtZTogd2luZG93TmFtZSxcbiAgICAgICAgICAgICAgICAgICAgb3BlbmVkV29ya3NwYWNlczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3T3BlbmVkV29ya3NwYWNlKHdvcmtzcGFjZU5hbWUsIHdvcmtzcGFjZVByb3BzKVxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBwcm9wczogd2luZG93UHJvcHMsXG4gICAgICAgICAgICAgICAgICAgIG1heGltaXplZDogZmFsc2VcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgaXNNb3N0UmVjZW50bHlPcGVuZWRXaW5kb3dIaWRkZW46IGZhbHNlXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG59XG4vKipcbiAqIFdoZW4gd2UgbGF1bmNoIGEgd29ya3NwYWNlLCB3ZSBtYXkgcGFzcyBpbiB3b3Jrc3BhY2UgLyB3aW5kb3dzIC8gZ3JvdXAgcHJvcHMuIElmIHRoZSB3b3Jrc3BhY2Ugb3JcbiAqIHdpbmRvdyBvciBncm91cCBpcyBjdXJyZW50bHkgb3BlbmVkLCB3ZSBoYXZlIHRvIGNoZWNrIHdoZXRoZXIgdGhlIGN1cnJlbnQgcHJvcHMgYXJlIGNvbXBhdGlibGUgd2l0aFxuICogdGhlIHBhc3NlZCBpbiBwcm9wcy4gMiBwcm9wcyBBIGFuZCBCIGFyZSBjb21wYXRpYmxlIGlmOlxuICogICBlaXRoZXIgb25lIGlzIG51bGxpc2ggKGJlY2F1c2UgdGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgY2FsbGVyIGRvZXMgbm90IGNhcmUgYWJvdXQgcHJvcCBpbmNvbXBhdGliaWxpdHkpXG4gKiAgIG5laXRoZXIgaXMgbnVsbGlzaCwgYW5kIEEgYW5kIEIgYXJlIHNoYWxsb3cgZXF1YWwuXG4gKiBAcGFyYW0gYSBwcm9wc1xuICogQHBhcmFtIGIgcHJvcHNcbiAqIEByZXR1cm5zIHdoZXRoZXIgcHJvcHMgYSBhbmQgYiBhcmUgY29tcGF0aWJsZVxuICovIGZ1bmN0aW9uIGFyZVByb3BzQ29tcGF0aWJsZShhLCBiKSB7XG4gICAgaWYgKGEgPT0gbnVsbCB8fCBiID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBzaGFsbG93RXF1YWwoYSwgYik7XG59XG4vKipcbiAqIEEgdXNlciBjYW4gcGVyZm9ybSBhY3Rpb25zIHRoYXQgZXhwbGljaXRseSByZXN1bHQgaW4gY2xvc2luZyB3b3Jrc3BhY2VzXG4gKiAoc3VjaCB0aGF0IGNsaWNraW5nIHRoZSAnWCcgYnV0dG9uIGZvciB0aGUgd29ya3NwYWNlIG9yIHdvcmtzcGFjZSBncm91cCksIG9yXG4gKiBpbXBsaWNpdGx5IChieSBvcGVuaW5nIGEgd29ya3NwYWNlIHdpdGggZGlmZmVyZW50IHByb3BzIHRoYW4gdGhlIG9uZSB0aGF0IGlzIGFscmVhZHkgb3BlbmVkKS5cbiAqIENhbGxzIHRvIGNsb3NlV29ya3NwYWNlMigpIG9yIGNsb3NlV29ya3NwYWNlR3JvdXAyKCkgYXJlIGNvbnNpZGVyZWQgZXhwbGljaXQsIHdoaWxlIGNhbGxzXG4gKiB0byBsYXVuY2hXb3Jrc3BhY2UyKCkgb3IgbGF1bmNoV29ya3NwYWNlR3JvdXAyKCkgYXJlIGNvbnNpZGVyZWQgaW1wbGljaXQuXG4gKlxuICogVGhpcyBmdW5jdGlvbiBwcm9tcHRzIHRoZSB1c2VyIGZvciBjb25maXJtYXRpb24gdG8gY2xvc2Ugd29ya3NwYWNlcyB3aXRoIGEgbW9kYWwgZGlhbG9nLlxuICogV2hlbiB0aGUgY2xvc2luZyBpcyBleHBsaWNpdCwgaXQgcHJvbXB0cyBmb3IgY29uZmlybWF0aW9uIGZvciBhZmZlY3RlZCB3b3Jrc3BhY2VzIHdpdGggdW5zYXZlZCBjaGFuZ2VzLlxuICogV2hlbiB0aGUgY2xvc2luZyBpcyBpbXBsaWNpdCwgaXQgcHJvbXB0cyBmb3IgY29uZmlybWF0aW9uIGZvciBhbGwgYWZmZWN0ZWQgd29ya3NwYWNlcywgcmVnYXJkbGVzcyBvZlxuICogd2hldGhlciB0aGV5IGhhdmUgdW5zYXZlZCBjaGFuZ2VzLlxuICogQHBhcmFtIHByb21wdFJlYXNvblxuICogQHJldHVybnMgYSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdHJ1ZSBpZiB0aGUgdXNlciBjb25maXJtZWQgY2xvc2luZyB0aGUgd29ya3NwYWNlczsgZmFsc2Ugb3RoZXJ3aXNlLlxuICovIGV4cG9ydCBmdW5jdGlvbiBwcm9tcHRGb3JDbG9zaW5nV29ya3NwYWNlcyhwcm9tcHRSZWFzb24pIHtcbiAgICAvLyBpZiBvbmx5VXBUb1RoaXNXb3Jrc3BhY2UgaXMgcHJvdmlkZWQsIHdlIHdpbGwgb25seSBsb29wIHRpbGwgd2UgaGl0IHRoYXQgd29ya3NwYWNlXG4gICAgZnVuY3Rpb24gZ2V0QWZmZWN0ZWRXb3Jrc3BhY2VzSW5XaW5kb3cob3BlbmVkV2luZG93LCBvbmx5VXBUb1RoaXNXb3Jrc3BhY2UpIHtcbiAgICAgICAgY29uc3QgcmV0ID0gW107XG4gICAgICAgIGZvcihsZXQgaSA9IG9wZW5lZFdpbmRvdy5vcGVuZWRXb3Jrc3BhY2VzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKXtcbiAgICAgICAgICAgIGNvbnN0IG9wZW5lZFdvcmtzcGFjZSA9IG9wZW5lZFdpbmRvdy5vcGVuZWRXb3Jrc3BhY2VzW2ldO1xuICAgICAgICAgICAgaWYgKG9wZW5lZFdvcmtzcGFjZS5oYXNVbnNhdmVkQ2hhbmdlcykge1xuICAgICAgICAgICAgICAgIHJldC5wdXNoKG9wZW5lZFdvcmtzcGFjZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAob25seVVwVG9UaGlzV29ya3NwYWNlICYmIG9wZW5lZFdvcmtzcGFjZS53b3Jrc3BhY2VOYW1lID09PSBvbmx5VXBUb1RoaXNXb3Jrc3BhY2UpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmV0O1xuICAgIH1cbiAgICBjb25zdCB7IG9wZW5lZFdpbmRvd3MsIHdvcmtzcGFjZVRpdGxlQnlXb3Jrc3BhY2VOYW1lIH0gPSB3b3Jrc3BhY2UyU3RvcmUuZ2V0U3RhdGUoKTtcbiAgICBsZXQgYWZmZWN0ZWRXb3Jrc3BhY2VzID0gW107XG4gICAgc3dpdGNoKHByb21wdFJlYXNvbi5yZWFzb24pe1xuICAgICAgICBjYXNlICdDTE9TRV9XT1JLU1BBQ0VfR1JPVVAnOlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFmZmVjdGVkV29ya3NwYWNlcyA9IG9wZW5lZFdpbmRvd3MuZmxhdE1hcCgod2luZG93KT0+Z2V0QWZmZWN0ZWRXb3Jrc3BhY2VzSW5XaW5kb3cod2luZG93KSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIGNhc2UgJ0NMT1NFX1dJTkRPVyc6XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3BlbmVkV2luZG93ID0gb3BlbmVkV2luZG93cy5maW5kKCh3aW5kb3cpPT53aW5kb3cud2luZG93TmFtZSA9PT0gcHJvbXB0UmVhc29uLndpbmRvd05hbWUpO1xuICAgICAgICAgICAgICAgIGlmICghb3BlbmVkV2luZG93KSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgV2luZG93ICR7cHJvbXB0UmVhc29uLndpbmRvd05hbWV9IG5vdCBmb3VuZCBpbiBvcGVuZWQgd2luZG93cy5gKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYWZmZWN0ZWRXb3Jrc3BhY2VzID0gZ2V0QWZmZWN0ZWRXb3Jrc3BhY2VzSW5XaW5kb3cob3BlbmVkV2luZG93KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgY2FzZSAnQ0xPU0VfV09SS1NQQUNFJzpcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb25zdCBvcGVuZWRXaW5kb3cgPSBvcGVuZWRXaW5kb3dzLmZpbmQoKHdpbmRvdyk9PndpbmRvdy53aW5kb3dOYW1lID09PSBwcm9tcHRSZWFzb24ud2luZG93TmFtZSk7XG4gICAgICAgICAgICAgICAgaWYgKCFvcGVuZWRXaW5kb3cpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBXaW5kb3cgJHtwcm9tcHRSZWFzb24ud2luZG93TmFtZX0gbm90IGZvdW5kIGluIG9wZW5lZCB3aW5kb3dzLmApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBhZmZlY3RlZFdvcmtzcGFjZXMgPSBnZXRBZmZlY3RlZFdvcmtzcGFjZXNJbldpbmRvdyhvcGVuZWRXaW5kb3csIHByb21wdFJlYXNvbi53b3Jrc3BhY2VOYW1lKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgY2FzZSAnQ0xPU0VfT1RIRVJfV0lORE9XUyc6XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29uc3Qgd2luZG93c1RvQ2xvc2UgPSBvcGVuZWRXaW5kb3dzLmZpbHRlcigod2luZG93KT0+d2luZG93LndpbmRvd05hbWUgIT09IHByb21wdFJlYXNvbi53aW5kb3dOYW1lVG9TcGFyZSk7XG4gICAgICAgICAgICAgICAgYWZmZWN0ZWRXb3Jrc3BhY2VzID0gd2luZG93c1RvQ2xvc2UuZmxhdE1hcCgodyk9PmdldEFmZmVjdGVkV29ya3NwYWNlc0luV2luZG93KHcpKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGFmZmVjdGVkV29ya3NwYWNlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0cnVlKTsgLy8gbm8gdW5zYXZlZCBjaGFuZ2VzLCBubyBuZWVkIHRvIHByb21wdFxuICAgIH1cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpPT57XG4gICAgICAgIGNvbnN0IGRpc3Bvc2UgPSBzaG93TW9kYWwoJ3dvcmtzcGFjZTItY2xvc2UtcHJvbXB0Jywge1xuICAgICAgICAgICAgb25Db25maXJtOiAoKT0+e1xuICAgICAgICAgICAgICAgIGRpc3Bvc2UoKTtcbiAgICAgICAgICAgICAgICByZXNvbHZlKHRydWUpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uQ2FuY2VsOiAoKT0+e1xuICAgICAgICAgICAgICAgIGRpc3Bvc2UoKTtcbiAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhZmZlY3RlZFdvcmtzcGFjZVRpdGxlczogYWZmZWN0ZWRXb3Jrc3BhY2VzLm1hcCgod29ya3NwYWNlKT0+d29ya3NwYWNlVGl0bGVCeVdvcmtzcGFjZU5hbWVbd29ya3NwYWNlLndvcmtzcGFjZU5hbWVdKVxuICAgICAgICB9KTtcbiAgICB9KTtcbn1cbmV4cG9ydCBjb25zdCB3b3Jrc3BhY2UyU3RvcmVBY3Rpb25zID0ge1xuICAgIHNldFdpbmRvd01heGltaXplZCAoc3RhdGUsIHdpbmRvd05hbWUsIG1heGltaXplZCkge1xuICAgICAgICBjb25zdCBvcGVuZWRXaW5kb3dJbmRleCA9IHN0YXRlLm9wZW5lZFdpbmRvd3MuZmluZEluZGV4KChhKT0+YS53aW5kb3dOYW1lID09PSB3aW5kb3dOYW1lKTtcbiAgICAgICAgY29uc3Qgb3BlbmVkV2luZG93cyA9IFtcbiAgICAgICAgICAgIC4uLnN0YXRlLm9wZW5lZFdpbmRvd3NcbiAgICAgICAgXTtcbiAgICAgICAgY29uc3QgY3VycmVudFdpbmRvdyA9IHtcbiAgICAgICAgICAgIC4uLm9wZW5lZFdpbmRvd3Nbb3BlbmVkV2luZG93SW5kZXhdLFxuICAgICAgICAgICAgbWF4aW1pemVkXG4gICAgICAgIH07XG4gICAgICAgIG9wZW5lZFdpbmRvd3Nbb3BlbmVkV2luZG93SW5kZXhdID0gY3VycmVudFdpbmRvdztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgb3BlbmVkV2luZG93c1xuICAgICAgICB9O1xuICAgIH0sXG4gICAgLy8gaGlkZXMgdGhlIG1vc3QgcmVjZW50bHkgb3BlbmVkIHdpbmRvdyAoYWxsIG90aGVyIG9wZW5lZCB3aW5kb3dzIGFyZSBpbXBsaWNpdGx5IGhpZGRlbilcbiAgICBoaWRlV2luZG93IChzdGF0ZSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgICBpc01vc3RSZWNlbnRseU9wZW5lZFdpbmRvd0hpZGRlbjogdHJ1ZVxuICAgICAgICB9O1xuICAgIH0sXG4gICAgcmVzdG9yZVdpbmRvdyAoc3RhdGUsIHdpbmRvd05hbWUpIHtcbiAgICAgICAgY29uc3Qgb3BlbmVkV2luZG93SW5kZXggPSBzdGF0ZS5vcGVuZWRXaW5kb3dzLmZpbmRJbmRleCgoYSk9PmEud2luZG93TmFtZSA9PT0gd2luZG93TmFtZSk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRXaW5kb3cgPSBzdGF0ZS5vcGVuZWRXaW5kb3dzW29wZW5lZFdpbmRvd0luZGV4XTtcbiAgICAgICAgY29uc3Qgb3BlbmVkV2luZG93cyA9IFtcbiAgICAgICAgICAgIC4uLnN0YXRlLm9wZW5lZFdpbmRvd3MuZmlsdGVyKChfLCBpKT0+aSAhPT0gb3BlbmVkV2luZG93SW5kZXgpLFxuICAgICAgICAgICAgY3VycmVudFdpbmRvd1xuICAgICAgICBdO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgICBvcGVuZWRXaW5kb3dzLFxuICAgICAgICAgICAgaXNNb3N0UmVjZW50bHlPcGVuZWRXaW5kb3dIaWRkZW46IGZhbHNlXG4gICAgICAgIH07XG4gICAgfSxcbiAgICBjbG9zZVdvcmtzcGFjZSAoc3RhdGUsIHdvcmtzcGFjZU5hbWUpIHtcbiAgICAgICAgY29uc3Qgb3BlbmVkV2luZG93SW5kZXggPSBnZXRPcGVuZWRXaW5kb3dJbmRleEJ5V29ya3NwYWNlKHdvcmtzcGFjZU5hbWUpO1xuICAgICAgICBpZiAob3BlbmVkV2luZG93SW5kZXggPCAwKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RhdGU7IC8vIG5vLW9wIGlmIHRoZSB3aW5kb3cgZG9lcyBub3QgZXhpc3RcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB3aW5kb3cgPSB7XG4gICAgICAgICAgICAuLi5zdGF0ZS5vcGVuZWRXaW5kb3dzW29wZW5lZFdpbmRvd0luZGV4XVxuICAgICAgICB9O1xuICAgICAgICBjb25zdCB3b3Jrc3BhY2VJbmRleCA9IHdpbmRvdy5vcGVuZWRXb3Jrc3BhY2VzLmZpbmRJbmRleCgodyk9Pncud29ya3NwYWNlTmFtZSA9PT0gd29ya3NwYWNlTmFtZSk7XG4gICAgICAgIGNvbnN0IG9wZW5lZFdpbmRvd3MgPSBbXG4gICAgICAgICAgICAuLi5zdGF0ZS5vcGVuZWRXaW5kb3dzXG4gICAgICAgIF07XG4gICAgICAgIC8vIGNsb3NlIGFsbCBjaGlsZHJlbiBvZiB0aGUgaW5wdXQgd29ya3NwYWNlIGFzIHdlbGxcbiAgICAgICAgd2luZG93Lm9wZW5lZFdvcmtzcGFjZXMgPSB3aW5kb3cub3BlbmVkV29ya3NwYWNlcy5zbGljZSgwLCB3b3Jrc3BhY2VJbmRleCk7XG4gICAgICAgIGxldCBoaWRkZW4gPSBzdGF0ZS5pc01vc3RSZWNlbnRseU9wZW5lZFdpbmRvd0hpZGRlbjtcbiAgICAgICAgaWYgKHdpbmRvdy5vcGVuZWRXb3Jrc3BhY2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgY29uc3Qgd2FzTW9zdFJlY2VudFdpbmRvdyA9IG9wZW5lZFdpbmRvd0luZGV4ID09PSBzdGF0ZS5vcGVuZWRXaW5kb3dzLmxlbmd0aCAtIDE7XG4gICAgICAgICAgICAvLyBpZiBubyB3b3Jrc3BhY2VzIGxlZnQsIHJlbW92ZSB0aGUgd2luZG93XG4gICAgICAgICAgICBvcGVuZWRXaW5kb3dzLnNwbGljZShvcGVuZWRXaW5kb3dJbmRleCwgMSk7XG4gICAgICAgICAgICAvLyBJZiB3ZSByZW1vdmVkIHRoZSBtb3N0IHJlY2VudCB3aW5kb3cgYW5kIHRoZXJlIGFyZSBzdGlsbCB3aW5kb3dzIGxlZnQsXG4gICAgICAgICAgICAvLyB0aGUgbmV3IG1vc3QgcmVjZW50IHdpbmRvdyBzaG91bGQgYmUgc2hvd25cbiAgICAgICAgICAgIGlmICh3YXNNb3N0UmVjZW50V2luZG93ICYmIG9wZW5lZFdpbmRvd3MubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGhpZGRlbiA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gaWYgdGhlcmUgYXJlIHN0aWxsIHdvcmtzcGFjZXMgbGVmdCwganVzdCB1cGRhdGUgdGhlIHdpbmRvd1xuICAgICAgICAgICAgb3BlbmVkV2luZG93c1tvcGVuZWRXaW5kb3dJbmRleF0gPSB3aW5kb3c7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgb3BlbmVkV2luZG93cyxcbiAgICAgICAgICAgIGlzTW9zdFJlY2VudGx5T3BlbmVkV2luZG93SGlkZGVuOiBoaWRkZW5cbiAgICAgICAgfTtcbiAgICB9LFxuICAgIG9wZW5DaGlsZFdvcmtzcGFjZSAoc3RhdGUsIHBhcmVudFdvcmtzcGFjZU5hbWUsIGNoaWxkV29ya3NwYWNlTmFtZSwgY2hpbGRXb3Jrc3BhY2VQcm9wcykge1xuICAgICAgICBjb25zdCBjaGlsZFdvcmtzcGFjZURlZiA9IHN0YXRlLnJlZ2lzdGVyZWRXb3Jrc3BhY2VzQnlOYW1lW2NoaWxkV29ya3NwYWNlTmFtZV07XG4gICAgICAgIGlmICghY2hpbGRXb3Jrc3BhY2VEZWYpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTm8gd29ya3NwYWNlIG5hbWVkIFwiJHtjaGlsZFdvcmtzcGFjZU5hbWV9XCIgcmVnaXN0ZXJlZGApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBhcmVudFdvcmtzcGFjZURlZiA9IHN0YXRlLnJlZ2lzdGVyZWRXb3Jrc3BhY2VzQnlOYW1lW3BhcmVudFdvcmtzcGFjZU5hbWVdO1xuICAgICAgICBpZiAoIXBhcmVudFdvcmtzcGFjZURlZikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyB3b3Jrc3BhY2UgbmFtZWQgXCIke3BhcmVudFdvcmtzcGFjZU5hbWV9XCIgcmVnaXN0ZXJlZGApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYXJlbnRXb3Jrc3BhY2VEZWYud2luZG93ICE9PSBjaGlsZFdvcmtzcGFjZURlZi53aW5kb3cpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2hpbGQgd29ya3NwYWNlICR7Y2hpbGRXb3Jrc3BhY2VOYW1lfSBkb2VzIG5vdCBiZWxvbmcgdG8gdGhlIHNhbWUgd29ya3NwYWNlIHdpbmRvdyBhcyBwYXJlbnQgd29ya3NwYWNlICR7cGFyZW50V29ya3NwYWNlTmFtZX1gKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBhcyB0aGUgcmVxdWVzdCB3b3Jrc3BhY2Ugc2hvdWxkIGJlIGEgY2hpbGQgd29ya3NwYWNlLCB0aGUgY29ycmVzcG9uZGluZyB3aW5kb3dcbiAgICAgICAgLy8gdG8gY29udGFpbiB0aGUgd29ya3NwYWNlIHNob3VsZCBhbHJlYWR5IGJlIG9wZW5lZFxuICAgICAgICBjb25zdCBvcGVuZWRXaW5kb3dJbmRleCA9IHN0YXRlLm9wZW5lZFdpbmRvd3MuZmluZEluZGV4KCh3aW5kb3cpPT53aW5kb3cud2luZG93TmFtZSA9PT0gY2hpbGRXb3Jrc3BhY2VEZWYud2luZG93KTtcbiAgICAgICAgaWYgKG9wZW5lZFdpbmRvd0luZGV4ID09IC0xKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBvcGVuIGNoaWxkIHdvcmtzcGFjZSAke2NoaWxkV29ya3NwYWNlTmFtZX0gYXMgd2luZG93ICR7Y2hpbGRXb3Jrc3BhY2VEZWYud2luZG93fSBpcyBub3Qgb3BlbmVkYCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb3BlbmVkV2luZG93ID0gc3RhdGUub3BlbmVkV2luZG93c1tvcGVuZWRXaW5kb3dJbmRleF07XG4gICAgICAgIGNvbnN0IHsgb3BlbmVkV29ya3NwYWNlcyB9ID0gb3BlbmVkV2luZG93O1xuICAgICAgICBjb25zdCBwYXJlbnRJbmRleCA9IG9wZW5lZFdvcmtzcGFjZXMuZmluZEluZGV4KCh3KT0+dy53b3Jrc3BhY2VOYW1lID09PSBwYXJlbnRXb3Jrc3BhY2VOYW1lKTtcbiAgICAgICAgaWYgKHBhcmVudEluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3Qgb3BlbiBjaGlsZCB3b3Jrc3BhY2UgJHtjaGlsZFdvcmtzcGFjZU5hbWV9IGZyb20gcGFyZW50IHdvcmtzcGFjZSAke3BhcmVudFdvcmtzcGFjZU5hbWV9IGFzIHRoZSBwYXJlbnQgaXMgbm90IG9wZW5lZCB3aXRoaW4gdGhlIHdvcmtzcGFjZSB3aW5kb3dgKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBDbG9zZSBhbnkgd29ya3NwYWNlcyBhYm92ZSB0aGUgcGFyZW50IChhbmFsb2dvdXMgdG8gY2xvc2VXb3Jrc3BhY2UncyBzbGljZSBiZWhhdmlvcilcbiAgICAgICAgY29uc3QgdHJpbW1lZFdvcmtzcGFjZXMgPSBvcGVuZWRXb3Jrc3BhY2VzLnNsaWNlKDAsIHBhcmVudEluZGV4ICsgMSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBvcGVuZWRXaW5kb3dzOiBzdGF0ZS5vcGVuZWRXaW5kb3dzLm1hcCgodywgaSk9PntcbiAgICAgICAgICAgICAgICBpZiAoaSA9PSBvcGVuZWRXaW5kb3dJbmRleCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4udyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5lZFdvcmtzcGFjZXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50cmltbWVkV29ya3NwYWNlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdPcGVuZWRXb3Jrc3BhY2UoY2hpbGRXb3Jrc3BhY2VOYW1lLCBjaGlsZFdvcmtzcGFjZVByb3BzKVxuICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB3O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgIH07XG4gICAgfSxcbiAgICBzZXRIYXNVbnNhdmVkQ2hhbmdlcyAoc3RhdGUsIHdvcmtzcGFjZU5hbWUsIGhhc1Vuc2F2ZWRDaGFuZ2VzKSB7XG4gICAgICAgIGNvbnN0IG9wZW5lZFdpbmRvd0luZGV4ID0gZ2V0T3BlbmVkV2luZG93SW5kZXhCeVdvcmtzcGFjZSh3b3Jrc3BhY2VOYW1lKTtcbiAgICAgICAgaWYgKG9wZW5lZFdpbmRvd0luZGV4IDwgMCkge1xuICAgICAgICAgICAgcmV0dXJuIHN0YXRlOyAvLyBuby1vcCBpZiB0aGUgd2luZG93IGRvZXMgbm90IGV4aXN0XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb3BlbmVkV2luZG93ID0ge1xuICAgICAgICAgICAgLi4uc3RhdGUub3BlbmVkV2luZG93c1tvcGVuZWRXaW5kb3dJbmRleF1cbiAgICAgICAgfTtcbiAgICAgICAgY29uc3Qgd29ya3NwYWNlSW5kZXggPSBvcGVuZWRXaW5kb3cub3BlbmVkV29ya3NwYWNlcy5maW5kSW5kZXgoKHcpPT53LndvcmtzcGFjZU5hbWUgPT09IHdvcmtzcGFjZU5hbWUpO1xuICAgICAgICBpZiAod29ya3NwYWNlSW5kZXggPCAwKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RhdGU7IC8vIG5vLW9wIGlmIHRoZSB3b3Jrc3BhY2UgaXMgbm90IGZvdW5kXG4gICAgICAgIH1cbiAgICAgICAgb3BlbmVkV2luZG93Lm9wZW5lZFdvcmtzcGFjZXNbd29ya3NwYWNlSW5kZXhdID0ge1xuICAgICAgICAgICAgLi4ub3BlbmVkV2luZG93Lm9wZW5lZFdvcmtzcGFjZXNbd29ya3NwYWNlSW5kZXhdLFxuICAgICAgICAgICAgaGFzVW5zYXZlZENoYW5nZXNcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3Qgb3BlbmVkV2luZG93cyA9IFtcbiAgICAgICAgICAgIC4uLnN0YXRlLm9wZW5lZFdpbmRvd3NcbiAgICAgICAgXTtcbiAgICAgICAgb3BlbmVkV2luZG93c1tvcGVuZWRXaW5kb3dJbmRleF0gPSBvcGVuZWRXaW5kb3c7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICAgIG9wZW5lZFdpbmRvd3NcbiAgICAgICAgfTtcbiAgICB9LFxuICAgIHNldFdvcmtzcGFjZVRpdGxlIChzdGF0ZSwgd29ya3NwYWNlTmFtZSwgdGl0bGUpIHtcbiAgICAgICAgY29uc3QgbmV3V29ya3NwYWNlVGl0bGVCeVdvcmtzcGFjZU5hbWUgPSB7XG4gICAgICAgICAgICAuLi5zdGF0ZS53b3Jrc3BhY2VUaXRsZUJ5V29ya3NwYWNlTmFtZVxuICAgICAgICB9O1xuICAgICAgICBpZiAodGl0bGUgPT09IG51bGwpIHtcbiAgICAgICAgICAgIGRlbGV0ZSBuZXdXb3Jrc3BhY2VUaXRsZUJ5V29ya3NwYWNlTmFtZVt3b3Jrc3BhY2VOYW1lXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5ld1dvcmtzcGFjZVRpdGxlQnlXb3Jrc3BhY2VOYW1lW3dvcmtzcGFjZU5hbWVdID0gdGl0bGU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgd29ya3NwYWNlVGl0bGVCeVdvcmtzcGFjZU5hbWU6IG5ld1dvcmtzcGFjZVRpdGxlQnlXb3Jrc3BhY2VOYW1lXG4gICAgICAgIH07XG4gICAgfVxufTtcbmV4cG9ydCBmdW5jdGlvbiB1c2VXb3Jrc3BhY2UyU3RvcmUoKSB7XG4gICAgcmV0dXJuIHVzZVN0b3JlV2l0aEFjdGlvbnMod29ya3NwYWNlMlN0b3JlLCB3b3Jrc3BhY2UyU3RvcmVBY3Rpb25zKTtcbn1cbi8qKlxuICogUmV0dXJucyB0aGUgcmVhY3QgQ29udGV4dCBjb250YWluaW5nIHByb3BzIHBhc3NlZCBpbnRvIGEgd29ya3NwYWNlLlxuICogVGhpcyBob29rIE1VU1QgYmUgY2FsbGVkIGluc2lkZSBhIGNoaWxkIG9mIDxXb3Jrc3BhY2UyPlxuICovIGV4cG9ydCBjb25zdCB1c2VXb3Jrc3BhY2UyQ29udGV4dCA9ICgpPT51c2VDb250ZXh0KFNpbmdsZVNwYUNvbnRleHQpO1xuLyoqXG4gKiBAcmV0dXJucyBhIGxpc3Qgb2YgcmVnaXN0ZXJlZCB3b3Jrc3BhY2VzLlxuICovIGV4cG9ydCBjb25zdCBnZXRSZWdpc3RlcmVkV29ya3NwYWNlMk5hbWVzID0gKCk9PntcbiAgICByZXR1cm4gT2JqZWN0LmtleXMod29ya3NwYWNlMlN0b3JlLmdldFN0YXRlKCkucmVnaXN0ZXJlZFdvcmtzcGFjZXNCeU5hbWUpO1xufTtcbmZ1bmN0aW9uIG5ld09wZW5lZFdvcmtzcGFjZSh3b3Jrc3BhY2VOYW1lLCB3b3Jrc3BhY2VQcm9wcykge1xuICAgIHJldHVybiB7XG4gICAgICAgIHdvcmtzcGFjZU5hbWUsXG4gICAgICAgIHByb3BzOiB3b3Jrc3BhY2VQcm9wcyA/PyB7fSxcbiAgICAgICAgaGFzVW5zYXZlZENoYW5nZXM6IGZhbHNlLFxuICAgICAgICB1dWlkOiB1dWlkVjQoKVxuICAgIH07XG59XG4iXSwibmFtZXMiOlsidXNlQ29udGV4dCIsIlNpbmdsZVNwYUNvbnRleHQiLCJ2NCIsInV1aWRWNCIsImdldEdyb3VwQnlXaW5kb3dOYW1lIiwiZ2V0T3BlbmVkV2luZG93SW5kZXhCeVdvcmtzcGFjZSIsImdldFdpbmRvd0J5V29ya3NwYWNlTmFtZSIsIndvcmtzcGFjZTJTdG9yZSIsInVzZVN0b3JlV2l0aEFjdGlvbnMiLCJzaGFsbG93RXF1YWwiLCJzaG93TW9kYWwiLCJsYXVuY2hXb3Jrc3BhY2VHcm91cDIiLCJncm91cE5hbWUiLCJncm91cFByb3BzIiwib3BlbmVkR3JvdXAiLCJva1RvQ2xvc2VXb3Jrc3BhY2VzIiwiYXJlUHJvcHNDb21wYXRpYmxlIiwicHJvbXB0Rm9yQ2xvc2luZ1dvcmtzcGFjZXMiLCJzdGF0ZSIsImNsb3NlV29ya3NwYWNlR3JvdXAyIiwiZGlzY2FyZFVuc2F2ZWRDaGFuZ2VzIiwib3BlbmVkV2luZG93cyIsImxhdW5jaFdvcmtzcGFjZTIiLCJ3b3Jrc3BhY2VOYW1lIiwid29ya3NwYWNlUHJvcHMiLCJ3aW5kb3dQcm9wcyIsInN0b3JlU3RhdGUiLCJ3aW5kb3dEZWYiLCJ3aW5kb3dOYW1lIiwiZ3JvdXBEZWYiLCJvcGVuZWRXaW5kb3dJbmRleCIsImlzV2luZG93QWxyZWFkeU9wZW5lZCIsIl9zdG9yZVN0YXRlX29wZW5lZEdyb3VwIiwib3BlbmVkV2luZG93IiwiZ3JvdXBQcm9wczEiLCJpc01vc3RSZWNlbnRseU9wZW5lZFdpbmRvd0hpZGRlbiIsIm9wZW5lZFdvcmtzcGFjZXMiLCJvcGVuZWRXb3Jrc3BhY2UiLCJva1RvQ2xvc2VXb3Jrc3BhY2VzMSIsIl9zdG9yZVN0YXRlX29wZW5lZEdyb3VwMSIsIm9rVG9DbG9zZVdvcmtzcGFjZXMyIiwiX3N0b3JlU3RhdGVfb3BlbmVkR3JvdXAyIiwib2tUb0Nsb3NlV29ya3NwYWNlczMiLCJfcmVmMyIsIl9zdG9yZVN0YXRlX29wZW5lZEdyb3VwMyIsIl9yZWY0IiwiX3N0b3JlU3RhdGVfb3BlbmVkR3JvdXA0IiwiRXJyb3IiLCJuZXdPcGVuZWRXb3Jrc3BhY2UiLCJ3Iiwid29ya3NwYWNlMlN0b3JlQWN0aW9ucyIsIl8iLCJpIiwiYSIsImIiLCJwcm9tcHRSZWFzb24iLCJnZXRBZmZlY3RlZFdvcmtzcGFjZXNJbldpbmRvdyIsIm9ubHlVcFRvVGhpc1dvcmtzcGFjZSIsInJldCIsIl93b3Jrc3BhY2UyU3RvcmVfZ2V0U3RhdGUiLCJ3b3Jrc3BhY2VUaXRsZUJ5V29ya3NwYWNlTmFtZSIsImFmZmVjdGVkV29ya3NwYWNlcyIsIndpbmRvdyIsIm9wZW5lZFdpbmRvdzEiLCJ3aW5kb3dzVG9DbG9zZSIsIlByb21pc2UiLCJyZXNvbHZlIiwiZGlzcG9zZSIsIm9uQ29uZmlybSIsIm9uQ2FuY2VsIiwid29ya3NwYWNlIiwic2V0V2luZG93TWF4aW1pemVkIiwibWF4aW1pemVkIiwiY3VycmVudFdpbmRvdyIsImhpZGVXaW5kb3ciLCJyZXN0b3JlV2luZG93IiwiY2xvc2VXb3Jrc3BhY2UiLCJ3b3Jrc3BhY2VJbmRleCIsImhpZGRlbiIsIndhc01vc3RSZWNlbnRXaW5kb3ciLCJvcGVuQ2hpbGRXb3Jrc3BhY2UiLCJwYXJlbnRXb3Jrc3BhY2VOYW1lIiwiY2hpbGRXb3Jrc3BhY2VOYW1lIiwiY2hpbGRXb3Jrc3BhY2VQcm9wcyIsImNoaWxkV29ya3NwYWNlRGVmIiwicGFyZW50V29ya3NwYWNlRGVmIiwicGFyZW50SW5kZXgiLCJ0cmltbWVkV29ya3NwYWNlcyIsInNldEhhc1Vuc2F2ZWRDaGFuZ2VzIiwiaGFzVW5zYXZlZENoYW5nZXMiLCJzZXRXb3Jrc3BhY2VUaXRsZSIsInRpdGxlIiwibmV3V29ya3NwYWNlVGl0bGVCeVdvcmtzcGFjZU5hbWUiLCJ1c2VXb3Jrc3BhY2UyU3RvcmUiLCJ1c2VXb3Jrc3BhY2UyQ29udGV4dCIsImdldFJlZ2lzdGVyZWRXb3Jrc3BhY2UyTmFtZXMiLCJPYmplY3QiXSwi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\n//# sourceURL=webpack-internal:///../../framework/esm-styleguide/dist/workspaces2/workspace2.js\n\n}");
|
|
1999
1999
|
|
|
2000
2000
|
},
|
|
2001
2001
|
"../../../node_modules/@internationalized/date/dist/BuddhistCalendar.mjs"(__unused_rspack___webpack_module__, __webpack_exports__, __webpack_require__) {
|
|
@@ -5725,7 +5725,7 @@ eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webp
|
|
|
5725
5725
|
},
|
|
5726
5726
|
"../../framework/esm-emr-api/dist/visit-utils.js"(__unused_rspack___webpack_module__, __webpack_exports__, __webpack_require__) {
|
|
5727
5727
|
"use strict";
|
|
5728
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n VisitMode: () => (VisitMode),\n VisitStatus: () => (VisitStatus),\n defaultVisitCustomRepresentation: () => (defaultVisitCustomRepresentation),\n getStartedVisit: () => (getStartedVisit),\n getVisitStore: () => (getVisitStore),\n getVisitsForPatient: () => (getVisitsForPatient),\n saveVisit: () => (saveVisit),\n setCurrentVisit: () => (setCurrentVisit),\n updateVisit: () => (updateVisit)\n});\n/* import */ var _openmrs_esm_api__rspack_import_0 = __webpack_require__(\"../../framework/esm-api/dist/index.js\");\n/* import */ var _openmrs_esm_state__rspack_import_1 = __webpack_require__(\"../../framework/esm-state/dist/index.js\");\n/* import */ var rxjs__rspack_import_2 = __webpack_require__(\"webpack/sharing/consume/default/rxjs/rxjs\");\n/* import */ var rxjs__rspack_import_2_default = /*#__PURE__*/__webpack_require__.n(rxjs__rspack_import_2);\n/** @module @category API */ \n\n\nvar VisitMode = /*#__PURE__*/ function(VisitMode) {\n VisitMode[\"NEWVISIT\"] = \"startVisit\";\n VisitMode[\"EDITVISIT\"] = \"editVisit\";\n VisitMode[\"LOADING\"] = \"loadingVisit\";\n return VisitMode;\n}({});\nvar VisitStatus = /*#__PURE__*/ function(VisitStatus) {\n VisitStatus[\"NOTSTARTED\"] = \"notStarted\";\n VisitStatus[\"ONGOING\"] = \"ongoing\";\n return VisitStatus;\n}({});\n/**\n * The default custom representation string for fetching visit data from the REST API.\n * This representation includes comprehensive visit details such as encounters, patient,\n * visit type, attributes, and location information.\n */ var defaultVisitCustomRepresentation = 'custom:(uuid,display,voided,indication,startDatetime,stopDatetime,' + 'encounters:(uuid,display,encounterDatetime,' + 'form:(uuid,name),location:ref,' + 'encounterType:ref,' + 'encounterProviders:(uuid,display,' + 'provider:(uuid,display))),' + 'patient:(uuid,display),' + 'visitType:(uuid,name,display),' + 'attributes:(uuid,display,attributeType:(name,datatypeClassname,uuid),value),' + 'location:(uuid,name,display))';\nvar initialState = getVisitSessionStorage() || {\n patientUuid: null,\n manuallySetVisitUuid: null,\n mutateVisitCallbacks: {}\n};\n/**\n * Returns the global visit store that manages the current visit state. The store\n * contains information about the current patient's visit and provides methods\n * for subscribing to visit state changes.\n *\n * @returns The global visit store instance.\n *\n * @example\n * ```ts\n * import { getVisitStore } from '@openmrs/esm-framework';\n * const store = getVisitStore();\n * const unsubscribe = store.subscribe((state) => {\n * console.log('Current patient:', state.patientUuid);\n * });\n * ```\n */ function getVisitStore() {\n return (0,_openmrs_esm_state__rspack_import_1.getGlobalStore)('visit', initialState);\n}\n/**\n * Sets the current visit for a patient in the global visit store. This is used\n * to manually specify which visit should be considered \"active\" for the given patient.\n *\n * @param patientUuid The UUID of the patient.\n * @param visitUuid The UUID of the visit to set as the current visit.\n *\n * @example\n * ```ts\n * import { setCurrentVisit } from '@openmrs/esm-framework';\n * setCurrentVisit('patient-uuid', 'visit-uuid');\n * ```\n */ function setCurrentVisit(patientUuid, visitUuid) {\n getVisitStore().setState({\n patientUuid: patientUuid,\n manuallySetVisitUuid: visitUuid\n });\n}\ngetVisitStore().subscribe(function(state) {\n setVisitSessionStorage(state);\n});\nfunction setVisitSessionStorage(value) {\n sessionStorage.setItem('openmrs:visitStoreState', JSON.stringify(value));\n}\nfunction getVisitSessionStorage() {\n try {\n return JSON.parse(sessionStorage.getItem('openmrs:visitStoreState') || 'null');\n } catch (e) {\n return null;\n }\n}\n/**\n * Creates a new visit by sending a POST request to the OpenMRS REST API.\n *\n * @param payload The visit data to create, including patient UUID, visit type,\n * start datetime, and other visit attributes.\n * @param abortController An AbortController to allow cancellation of the request.\n * @returns A Promise that resolves with the FetchResponse containing the created Visit.\n *\n * @example\n * ```ts\n * import { saveVisit } from '@openmrs/esm-framework';\n * const abortController = new AbortController();\n * const response = await saveVisit({\n * patient: 'patient-uuid',\n * visitType: 'visit-type-uuid',\n * startDatetime: new Date().toISOString()\n * }, abortController);\n * ```\n */ function saveVisit(payload, abortController) {\n return (0,_openmrs_esm_api__rspack_import_0.openmrsFetch)(\"\".concat(_openmrs_esm_api__rspack_import_0.restBaseUrl, \"/visit\"), {\n signal: abortController.signal,\n method: 'POST',\n headers: {\n 'Content-type': 'application/json'\n },\n body: payload\n });\n}\n/**\n * Updates an existing visit by sending a POST request to the OpenMRS REST API.\n *\n * @param uuid The UUID of the visit to update.\n * @param payload The visit data to update, such as stop datetime or attributes.\n * @param abortController An AbortController to allow cancellation of the request.\n * @returns A Promise that resolves with the FetchResponse containing the updated Visit.\n *\n * @example\n * ```ts\n * import { updateVisit } from '@openmrs/esm-framework';\n * const abortController = new AbortController();\n * const response = await updateVisit('visit-uuid', {\n * stopDatetime: new Date().toISOString()\n * }, abortController);\n * ```\n */ function updateVisit(uuid, payload, abortController) {\n return (0,_openmrs_esm_api__rspack_import_0.openmrsFetch)(\"\".concat(_openmrs_esm_api__rspack_import_0.restBaseUrl, \"/visit/\").concat(uuid), {\n signal: abortController.signal,\n method: 'POST',\n headers: {\n 'Content-type': 'application/json'\n },\n body: payload\n });\n}\n/**\n * @deprecated Use the `useVisit` hook instead.\n */ function getVisitsForPatient(patientUuid, abortController, v) {\n var custom = v !== null && v !== void 0 ? v : defaultVisitCustomRepresentation;\n return (0,_openmrs_esm_api__rspack_import_0.openmrsFetch)(\"\".concat(_openmrs_esm_api__rspack_import_0.restBaseUrl, \"/visit?patient=\").concat(patientUuid, \"&v=\").concat(custom), {\n signal: abortController.signal,\n method: 'GET',\n headers: {\n 'Content-type': 'application/json'\n }\n });\n}\n/** @deprecated */ var getStartedVisit = new rxjs__rspack_import_2.BehaviorSubject(null);\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC9lc218YnVpbHRpbjpzd2MtbG9hZGVyIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9wYWNrYWdlcy9mcmFtZXdvcmsvZXNtLWVtci1hcGkvZGlzdC92aXNpdC11dGlscy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi4vLi4vZnJhbWV3b3JrL2VzbS1lbXItYXBpL2Rpc3QvdmlzaXQtdXRpbHMuanM/ZGNkNSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQG1vZHVsZSBAY2F0ZWdvcnkgQVBJICovIGltcG9ydCB7IG9wZW5tcnNGZXRjaCwgcmVzdEJhc2VVcmwgfSBmcm9tIFwiQG9wZW5tcnMvZXNtLWFwaVwiO1xuaW1wb3J0IHsgZ2V0R2xvYmFsU3RvcmUgfSBmcm9tIFwiQG9wZW5tcnMvZXNtLXN0YXRlXCI7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xuZXhwb3J0IHZhciBWaXNpdE1vZGUgPSAvKiNfX1BVUkVfXyovIGZ1bmN0aW9uKFZpc2l0TW9kZSkge1xuICAgIFZpc2l0TW9kZVtcIk5FV1ZJU0lUXCJdID0gXCJzdGFydFZpc2l0XCI7XG4gICAgVmlzaXRNb2RlW1wiRURJVFZJU0lUXCJdID0gXCJlZGl0VmlzaXRcIjtcbiAgICBWaXNpdE1vZGVbXCJMT0FESU5HXCJdID0gXCJsb2FkaW5nVmlzaXRcIjtcbiAgICByZXR1cm4gVmlzaXRNb2RlO1xufSh7fSk7XG5leHBvcnQgdmFyIFZpc2l0U3RhdHVzID0gLyojX19QVVJFX18qLyBmdW5jdGlvbihWaXNpdFN0YXR1cykge1xuICAgIFZpc2l0U3RhdHVzW1wiTk9UU1RBUlRFRFwiXSA9IFwibm90U3RhcnRlZFwiO1xuICAgIFZpc2l0U3RhdHVzW1wiT05HT0lOR1wiXSA9IFwib25nb2luZ1wiO1xuICAgIHJldHVybiBWaXNpdFN0YXR1cztcbn0oe30pO1xuLyoqXG4gKiBUaGUgZGVmYXVsdCBjdXN0b20gcmVwcmVzZW50YXRpb24gc3RyaW5nIGZvciBmZXRjaGluZyB2aXNpdCBkYXRhIGZyb20gdGhlIFJFU1QgQVBJLlxuICogVGhpcyByZXByZXNlbnRhdGlvbiBpbmNsdWRlcyBjb21wcmVoZW5zaXZlIHZpc2l0IGRldGFpbHMgc3VjaCBhcyBlbmNvdW50ZXJzLCBwYXRpZW50LFxuICogdmlzaXQgdHlwZSwgYXR0cmlidXRlcywgYW5kIGxvY2F0aW9uIGluZm9ybWF0aW9uLlxuICovIGV4cG9ydCBjb25zdCBkZWZhdWx0VmlzaXRDdXN0b21SZXByZXNlbnRhdGlvbiA9ICdjdXN0b206KHV1aWQsZGlzcGxheSx2b2lkZWQsaW5kaWNhdGlvbixzdGFydERhdGV0aW1lLHN0b3BEYXRldGltZSwnICsgJ2VuY291bnRlcnM6KHV1aWQsZGlzcGxheSxlbmNvdW50ZXJEYXRldGltZSwnICsgJ2Zvcm06KHV1aWQsbmFtZSksbG9jYXRpb246cmVmLCcgKyAnZW5jb3VudGVyVHlwZTpyZWYsJyArICdlbmNvdW50ZXJQcm92aWRlcnM6KHV1aWQsZGlzcGxheSwnICsgJ3Byb3ZpZGVyOih1dWlkLGRpc3BsYXkpKSksJyArICdwYXRpZW50Oih1dWlkLGRpc3BsYXkpLCcgKyAndmlzaXRUeXBlOih1dWlkLG5hbWUsZGlzcGxheSksJyArICdhdHRyaWJ1dGVzOih1dWlkLGRpc3BsYXksYXR0cmlidXRlVHlwZToobmFtZSxkYXRhdHlwZUNsYXNzbmFtZSx1dWlkKSx2YWx1ZSksJyArICdsb2NhdGlvbjoodXVpZCxuYW1lLGRpc3BsYXkpKSc7XG5jb25zdCBpbml0aWFsU3RhdGUgPSBnZXRWaXNpdFNlc3Npb25TdG9yYWdlKCkgfHwge1xuICAgIHBhdGllbnRVdWlkOiBudWxsLFxuICAgIG1hbnVhbGx5U2V0VmlzaXRVdWlkOiBudWxsLFxuICAgIG11dGF0ZVZpc2l0Q2FsbGJhY2tzOiB7fVxufTtcbi8qKlxuICogUmV0dXJucyB0aGUgZ2xvYmFsIHZpc2l0IHN0b3JlIHRoYXQgbWFuYWdlcyB0aGUgY3VycmVudCB2aXNpdCBzdGF0ZS4gVGhlIHN0b3JlXG4gKiBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudCBwYXRpZW50J3MgdmlzaXQgYW5kIHByb3ZpZGVzIG1ldGhvZHNcbiAqIGZvciBzdWJzY3JpYmluZyB0byB2aXNpdCBzdGF0ZSBjaGFuZ2VzLlxuICpcbiAqIEByZXR1cm5zIFRoZSBnbG9iYWwgdmlzaXQgc3RvcmUgaW5zdGFuY2UuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBnZXRWaXNpdFN0b3JlIH0gZnJvbSAnQG9wZW5tcnMvZXNtLWZyYW1ld29yayc7XG4gKiBjb25zdCBzdG9yZSA9IGdldFZpc2l0U3RvcmUoKTtcbiAqIGNvbnN0IHVuc3Vic2NyaWJlID0gc3RvcmUuc3Vic2NyaWJlKChzdGF0ZSkgPT4ge1xuICogICBjb25zb2xlLmxvZygnQ3VycmVudCBwYXRpZW50OicsIHN0YXRlLnBhdGllbnRVdWlkKTtcbiAqIH0pO1xuICogYGBgXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIGdldFZpc2l0U3RvcmUoKSB7XG4gICAgcmV0dXJuIGdldEdsb2JhbFN0b3JlKCd2aXNpdCcsIGluaXRpYWxTdGF0ZSk7XG59XG4vKipcbiAqIFNldHMgdGhlIGN1cnJlbnQgdmlzaXQgZm9yIGEgcGF0aWVudCBpbiB0aGUgZ2xvYmFsIHZpc2l0IHN0b3JlLiBUaGlzIGlzIHVzZWRcbiAqIHRvIG1hbnVhbGx5IHNwZWNpZnkgd2hpY2ggdmlzaXQgc2hvdWxkIGJlIGNvbnNpZGVyZWQgXCJhY3RpdmVcIiBmb3IgdGhlIGdpdmVuIHBhdGllbnQuXG4gKlxuICogQHBhcmFtIHBhdGllbnRVdWlkIFRoZSBVVUlEIG9mIHRoZSBwYXRpZW50LlxuICogQHBhcmFtIHZpc2l0VXVpZCBUaGUgVVVJRCBvZiB0aGUgdmlzaXQgdG8gc2V0IGFzIHRoZSBjdXJyZW50IHZpc2l0LlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgc2V0Q3VycmVudFZpc2l0IH0gZnJvbSAnQG9wZW5tcnMvZXNtLWZyYW1ld29yayc7XG4gKiBzZXRDdXJyZW50VmlzaXQoJ3BhdGllbnQtdXVpZCcsICd2aXNpdC11dWlkJyk7XG4gKiBgYGBcbiAqLyBleHBvcnQgZnVuY3Rpb24gc2V0Q3VycmVudFZpc2l0KHBhdGllbnRVdWlkLCB2aXNpdFV1aWQpIHtcbiAgICBnZXRWaXNpdFN0b3JlKCkuc2V0U3RhdGUoe1xuICAgICAgICBwYXRpZW50VXVpZCxcbiAgICAgICAgbWFudWFsbHlTZXRWaXNpdFV1aWQ6IHZpc2l0VXVpZFxuICAgIH0pO1xufVxuZ2V0VmlzaXRTdG9yZSgpLnN1YnNjcmliZSgoc3RhdGUpPT57XG4gICAgc2V0VmlzaXRTZXNzaW9uU3RvcmFnZShzdGF0ZSk7XG59KTtcbmZ1bmN0aW9uIHNldFZpc2l0U2Vzc2lvblN0b3JhZ2UodmFsdWUpIHtcbiAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdvcGVubXJzOnZpc2l0U3RvcmVTdGF0ZScsIEpTT04uc3RyaW5naWZ5KHZhbHVlKSk7XG59XG5mdW5jdGlvbiBnZXRWaXNpdFNlc3Npb25TdG9yYWdlKCkge1xuICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBKU09OLnBhcnNlKHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ29wZW5tcnM6dmlzaXRTdG9yZVN0YXRlJykgfHwgJ251bGwnKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbn1cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyB2aXNpdCBieSBzZW5kaW5nIGEgUE9TVCByZXF1ZXN0IHRvIHRoZSBPcGVuTVJTIFJFU1QgQVBJLlxuICpcbiAqIEBwYXJhbSBwYXlsb2FkIFRoZSB2aXNpdCBkYXRhIHRvIGNyZWF0ZSwgaW5jbHVkaW5nIHBhdGllbnQgVVVJRCwgdmlzaXQgdHlwZSxcbiAqICAgc3RhcnQgZGF0ZXRpbWUsIGFuZCBvdGhlciB2aXNpdCBhdHRyaWJ1dGVzLlxuICogQHBhcmFtIGFib3J0Q29udHJvbGxlciBBbiBBYm9ydENvbnRyb2xsZXIgdG8gYWxsb3cgY2FuY2VsbGF0aW9uIG9mIHRoZSByZXF1ZXN0LlxuICogQHJldHVybnMgQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgRmV0Y2hSZXNwb25zZSBjb250YWluaW5nIHRoZSBjcmVhdGVkIFZpc2l0LlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgc2F2ZVZpc2l0IH0gZnJvbSAnQG9wZW5tcnMvZXNtLWZyYW1ld29yayc7XG4gKiBjb25zdCBhYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gKiBjb25zdCByZXNwb25zZSA9IGF3YWl0IHNhdmVWaXNpdCh7XG4gKiAgIHBhdGllbnQ6ICdwYXRpZW50LXV1aWQnLFxuICogICB2aXNpdFR5cGU6ICd2aXNpdC10eXBlLXV1aWQnLFxuICogICBzdGFydERhdGV0aW1lOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKClcbiAqIH0sIGFib3J0Q29udHJvbGxlcik7XG4gKiBgYGBcbiAqLyBleHBvcnQgZnVuY3Rpb24gc2F2ZVZpc2l0KHBheWxvYWQsIGFib3J0Q29udHJvbGxlcikge1xuICAgIHJldHVybiBvcGVubXJzRmV0Y2goYCR7cmVzdEJhc2VVcmx9L3Zpc2l0YCwge1xuICAgICAgICBzaWduYWw6IGFib3J0Q29udHJvbGxlci5zaWduYWwsXG4gICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAnQ29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgICAgIH0sXG4gICAgICAgIGJvZHk6IHBheWxvYWRcbiAgICB9KTtcbn1cbi8qKlxuICogVXBkYXRlcyBhbiBleGlzdGluZyB2aXNpdCBieSBzZW5kaW5nIGEgUE9TVCByZXF1ZXN0IHRvIHRoZSBPcGVuTVJTIFJFU1QgQVBJLlxuICpcbiAqIEBwYXJhbSB1dWlkIFRoZSBVVUlEIG9mIHRoZSB2aXNpdCB0byB1cGRhdGUuXG4gKiBAcGFyYW0gcGF5bG9hZCBUaGUgdmlzaXQgZGF0YSB0byB1cGRhdGUsIHN1Y2ggYXMgc3RvcCBkYXRldGltZSBvciBhdHRyaWJ1dGVzLlxuICogQHBhcmFtIGFib3J0Q29udHJvbGxlciBBbiBBYm9ydENvbnRyb2xsZXIgdG8gYWxsb3cgY2FuY2VsbGF0aW9uIG9mIHRoZSByZXF1ZXN0LlxuICogQHJldHVybnMgQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgRmV0Y2hSZXNwb25zZSBjb250YWluaW5nIHRoZSB1cGRhdGVkIFZpc2l0LlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgdXBkYXRlVmlzaXQgfSBmcm9tICdAb3Blbm1ycy9lc20tZnJhbWV3b3JrJztcbiAqIGNvbnN0IGFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAqIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdXBkYXRlVmlzaXQoJ3Zpc2l0LXV1aWQnLCB7XG4gKiAgIHN0b3BEYXRldGltZTogbmV3IERhdGUoKS50b0lTT1N0cmluZygpXG4gKiB9LCBhYm9ydENvbnRyb2xsZXIpO1xuICogYGBgXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVZpc2l0KHV1aWQsIHBheWxvYWQsIGFib3J0Q29udHJvbGxlcikge1xuICAgIHJldHVybiBvcGVubXJzRmV0Y2goYCR7cmVzdEJhc2VVcmx9L3Zpc2l0LyR7dXVpZH1gLCB7XG4gICAgICAgIHNpZ25hbDogYWJvcnRDb250cm9sbGVyLnNpZ25hbCxcbiAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICdDb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24vanNvbidcbiAgICAgICAgfSxcbiAgICAgICAgYm9keTogcGF5bG9hZFxuICAgIH0pO1xufVxuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2UgdGhlIGB1c2VWaXNpdGAgaG9vayBpbnN0ZWFkLlxuICovIGV4cG9ydCBmdW5jdGlvbiBnZXRWaXNpdHNGb3JQYXRpZW50KHBhdGllbnRVdWlkLCBhYm9ydENvbnRyb2xsZXIsIHYpIHtcbiAgICBjb25zdCBjdXN0b20gPSB2ID8/IGRlZmF1bHRWaXNpdEN1c3RvbVJlcHJlc2VudGF0aW9uO1xuICAgIHJldHVybiBvcGVubXJzRmV0Y2goYCR7cmVzdEJhc2VVcmx9L3Zpc2l0P3BhdGllbnQ9JHtwYXRpZW50VXVpZH0mdj0ke2N1c3RvbX1gLCB7XG4gICAgICAgIHNpZ25hbDogYWJvcnRDb250cm9sbGVyLnNpZ25hbCxcbiAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgJ0NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICAgICB9XG4gICAgfSk7XG59XG4vKiogQGRlcHJlY2F0ZWQgKi8gZXhwb3J0IGNvbnN0IGdldFN0YXJ0ZWRWaXNpdCA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCk7XG4iXSwibmFtZXMiOlsib3Blbm1yc0ZldGNoIiwicmVzdEJhc2VVcmwiLCJnZXRHbG9iYWxTdG9yZSIsIkJlaGF2aW9yU3ViamVjdCIsIlZpc2l0TW9kZSIsIlZpc2l0U3RhdHVzIiwiZGVmYXVsdFZpc2l0Q3VzdG9tUmVwcmVzZW50YXRpb24iLCJpbml0aWFsU3RhdGUiLCJnZXRWaXNpdFNlc3Npb25TdG9yYWdlIiwiZ2V0VmlzaXRTdG9yZSIsInNldEN1cnJlbnRWaXNpdCIsInBhdGllbnRVdWlkIiwidmlzaXRVdWlkIiwic3RhdGUiLCJzZXRWaXNpdFNlc3Npb25TdG9yYWdlIiwidmFsdWUiLCJzZXNzaW9uU3RvcmFnZSIsIkpTT04iLCJlIiwic2F2ZVZpc2l0IiwicGF5bG9hZCIsImFib3J0Q29udHJvbGxlciIsInVwZGF0ZVZpc2l0IiwidXVpZCIsImdldFZpc2l0c0ZvclBhdGllbnQiLCJ2IiwiY3VzdG9tIiwiZ2V0U3RhcnRlZFZpc2l0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEs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\n//# sourceURL=webpack-internal:///../../framework/esm-emr-api/dist/visit-utils.js\n\n}");
|
|
5728
|
+
eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n VisitMode: () => (VisitMode),\n VisitStatus: () => (VisitStatus),\n defaultVisitCustomRepresentation: () => (defaultVisitCustomRepresentation),\n getStartedVisit: () => (getStartedVisit),\n getVisitStore: () => (getVisitStore),\n getVisitsForPatient: () => (getVisitsForPatient),\n saveVisit: () => (saveVisit),\n setCurrentVisit: () => (setCurrentVisit),\n updateVisit: () => (updateVisit)\n});\n/* import */ var _openmrs_esm_api__rspack_import_0 = __webpack_require__(\"../../framework/esm-api/dist/index.js\");\n/* import */ var _openmrs_esm_state__rspack_import_1 = __webpack_require__(\"../../framework/esm-state/dist/index.js\");\n/* import */ var rxjs__rspack_import_2 = __webpack_require__(\"webpack/sharing/consume/default/rxjs/rxjs\");\n/* import */ var rxjs__rspack_import_2_default = /*#__PURE__*/__webpack_require__.n(rxjs__rspack_import_2);\n/** @module @category API */ \n\n\nvar VisitMode = /*#__PURE__*/ function(VisitMode) {\n VisitMode[\"NEWVISIT\"] = \"startVisit\";\n VisitMode[\"EDITVISIT\"] = \"editVisit\";\n VisitMode[\"LOADING\"] = \"loadingVisit\";\n return VisitMode;\n}({});\nvar VisitStatus = /*#__PURE__*/ function(VisitStatus) {\n VisitStatus[\"NOTSTARTED\"] = \"notStarted\";\n VisitStatus[\"ONGOING\"] = \"ongoing\";\n return VisitStatus;\n}({});\n/**\n * The default custom representation string for fetching visit data from the REST API.\n * This representation includes comprehensive visit details such as encounters, patient,\n * visit type, attributes, and location information.\n */ var defaultVisitCustomRepresentation = 'custom:(uuid,display,voided,indication,startDatetime,stopDatetime,' + 'encounters:(uuid,display,encounterDatetime,' + 'form:(uuid,name),location:ref,' + 'encounterType:ref,' + 'encounterProviders:(uuid,display,' + 'provider:(uuid,display))),' + 'patient:(uuid,display),' + 'visitType:(uuid,name,display),' + 'attributes:(uuid,display,attributeType:(name,datatypeClassname,uuid),value),' + 'location:(uuid,name,display))';\nvar initialState = getVisitSessionStorage() || {\n patientUuid: null,\n manuallySetVisitUuid: null,\n mutateVisitCallbacks: {}\n};\n/**\n * Returns the global visit store that manages the current visit state. The store\n * contains information about the current patient's visit and provides methods\n * for subscribing to visit state changes.\n *\n * @returns The global visit store instance.\n *\n * @example\n * ```ts\n * import { getVisitStore } from '@openmrs/esm-framework';\n * const store = getVisitStore();\n * const unsubscribe = store.subscribe((state) => {\n * console.log('Current patient:', state.patientUuid);\n * });\n * ```\n */ function getVisitStore() {\n return (0,_openmrs_esm_state__rspack_import_1.getGlobalStore)('visit', initialState);\n}\n/**\n * Sets the current visit for a patient in the global visit store. This is used\n * to manually specify which visit should be considered \"active\" for the given patient.\n *\n * @param patientUuid The UUID of the patient.\n * @param visitUuid The UUID of the visit to set as the current visit.\n *\n * @example\n * ```ts\n * import { setCurrentVisit } from '@openmrs/esm-framework';\n * setCurrentVisit('patient-uuid', 'visit-uuid');\n * ```\n *\n * @deprecated \"current visit\" is not well defined outside of the patient chart.\n * Use `visitContext` in the patient chart instead.\n */ function setCurrentVisit(patientUuid, visitUuid) {\n getVisitStore().setState({\n patientUuid: patientUuid,\n manuallySetVisitUuid: visitUuid\n });\n}\ngetVisitStore().subscribe(function(state) {\n setVisitSessionStorage(state);\n});\nfunction setVisitSessionStorage(value) {\n sessionStorage.setItem('openmrs:visitStoreState', JSON.stringify(value));\n}\nfunction getVisitSessionStorage() {\n try {\n return JSON.parse(sessionStorage.getItem('openmrs:visitStoreState') || 'null');\n } catch (e) {\n return null;\n }\n}\n/**\n * Creates a new visit by sending a POST request to the OpenMRS REST API.\n *\n * @param payload The visit data to create, including patient UUID, visit type,\n * start datetime, and other visit attributes.\n * @param abortController An AbortController to allow cancellation of the request.\n * @returns A Promise that resolves with the FetchResponse containing the created Visit.\n *\n * @example\n * ```ts\n * import { saveVisit } from '@openmrs/esm-framework';\n * const abortController = new AbortController();\n * const response = await saveVisit({\n * patient: 'patient-uuid',\n * visitType: 'visit-type-uuid',\n * startDatetime: new Date().toISOString()\n * }, abortController);\n * ```\n */ function saveVisit(payload, abortController) {\n return (0,_openmrs_esm_api__rspack_import_0.openmrsFetch)(\"\".concat(_openmrs_esm_api__rspack_import_0.restBaseUrl, \"/visit\"), {\n signal: abortController.signal,\n method: 'POST',\n headers: {\n 'Content-type': 'application/json'\n },\n body: payload\n });\n}\n/**\n * Updates an existing visit by sending a POST request to the OpenMRS REST API.\n *\n * @param uuid The UUID of the visit to update.\n * @param payload The visit data to update, such as stop datetime or attributes.\n * @param abortController An AbortController to allow cancellation of the request.\n * @returns A Promise that resolves with the FetchResponse containing the updated Visit.\n *\n * @example\n * ```ts\n * import { updateVisit } from '@openmrs/esm-framework';\n * const abortController = new AbortController();\n * const response = await updateVisit('visit-uuid', {\n * stopDatetime: new Date().toISOString()\n * }, abortController);\n * ```\n */ function updateVisit(uuid, payload, abortController) {\n return (0,_openmrs_esm_api__rspack_import_0.openmrsFetch)(\"\".concat(_openmrs_esm_api__rspack_import_0.restBaseUrl, \"/visit/\").concat(uuid), {\n signal: abortController.signal,\n method: 'POST',\n headers: {\n 'Content-type': 'application/json'\n },\n body: payload\n });\n}\n/**\n * @deprecated Use the `useVisit` hook instead.\n */ function getVisitsForPatient(patientUuid, abortController, v) {\n var custom = v !== null && v !== void 0 ? v : defaultVisitCustomRepresentation;\n return (0,_openmrs_esm_api__rspack_import_0.openmrsFetch)(\"\".concat(_openmrs_esm_api__rspack_import_0.restBaseUrl, \"/visit?patient=\").concat(patientUuid, \"&v=\").concat(custom), {\n signal: abortController.signal,\n method: 'GET',\n headers: {\n 'Content-type': 'application/json'\n }\n });\n}\n/** @deprecated */ var getStartedVisit = new rxjs__rspack_import_2.BehaviorSubject(null);\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC9lc218YnVpbHRpbjpzd2MtbG9hZGVyIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9wYWNrYWdlcy9mcmFtZXdvcmsvZXNtLWVtci1hcGkvZGlzdC92aXNpdC11dGlscy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi4vLi4vZnJhbWV3b3JrL2VzbS1lbXItYXBpL2Rpc3QvdmlzaXQtdXRpbHMuanM/ZGNkNSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQG1vZHVsZSBAY2F0ZWdvcnkgQVBJICovIGltcG9ydCB7IG9wZW5tcnNGZXRjaCwgcmVzdEJhc2VVcmwgfSBmcm9tIFwiQG9wZW5tcnMvZXNtLWFwaVwiO1xuaW1wb3J0IHsgZ2V0R2xvYmFsU3RvcmUgfSBmcm9tIFwiQG9wZW5tcnMvZXNtLXN0YXRlXCI7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xuZXhwb3J0IHZhciBWaXNpdE1vZGUgPSAvKiNfX1BVUkVfXyovIGZ1bmN0aW9uKFZpc2l0TW9kZSkge1xuICAgIFZpc2l0TW9kZVtcIk5FV1ZJU0lUXCJdID0gXCJzdGFydFZpc2l0XCI7XG4gICAgVmlzaXRNb2RlW1wiRURJVFZJU0lUXCJdID0gXCJlZGl0VmlzaXRcIjtcbiAgICBWaXNpdE1vZGVbXCJMT0FESU5HXCJdID0gXCJsb2FkaW5nVmlzaXRcIjtcbiAgICByZXR1cm4gVmlzaXRNb2RlO1xufSh7fSk7XG5leHBvcnQgdmFyIFZpc2l0U3RhdHVzID0gLyojX19QVVJFX18qLyBmdW5jdGlvbihWaXNpdFN0YXR1cykge1xuICAgIFZpc2l0U3RhdHVzW1wiTk9UU1RBUlRFRFwiXSA9IFwibm90U3RhcnRlZFwiO1xuICAgIFZpc2l0U3RhdHVzW1wiT05HT0lOR1wiXSA9IFwib25nb2luZ1wiO1xuICAgIHJldHVybiBWaXNpdFN0YXR1cztcbn0oe30pO1xuLyoqXG4gKiBUaGUgZGVmYXVsdCBjdXN0b20gcmVwcmVzZW50YXRpb24gc3RyaW5nIGZvciBmZXRjaGluZyB2aXNpdCBkYXRhIGZyb20gdGhlIFJFU1QgQVBJLlxuICogVGhpcyByZXByZXNlbnRhdGlvbiBpbmNsdWRlcyBjb21wcmVoZW5zaXZlIHZpc2l0IGRldGFpbHMgc3VjaCBhcyBlbmNvdW50ZXJzLCBwYXRpZW50LFxuICogdmlzaXQgdHlwZSwgYXR0cmlidXRlcywgYW5kIGxvY2F0aW9uIGluZm9ybWF0aW9uLlxuICovIGV4cG9ydCBjb25zdCBkZWZhdWx0VmlzaXRDdXN0b21SZXByZXNlbnRhdGlvbiA9ICdjdXN0b206KHV1aWQsZGlzcGxheSx2b2lkZWQsaW5kaWNhdGlvbixzdGFydERhdGV0aW1lLHN0b3BEYXRldGltZSwnICsgJ2VuY291bnRlcnM6KHV1aWQsZGlzcGxheSxlbmNvdW50ZXJEYXRldGltZSwnICsgJ2Zvcm06KHV1aWQsbmFtZSksbG9jYXRpb246cmVmLCcgKyAnZW5jb3VudGVyVHlwZTpyZWYsJyArICdlbmNvdW50ZXJQcm92aWRlcnM6KHV1aWQsZGlzcGxheSwnICsgJ3Byb3ZpZGVyOih1dWlkLGRpc3BsYXkpKSksJyArICdwYXRpZW50Oih1dWlkLGRpc3BsYXkpLCcgKyAndmlzaXRUeXBlOih1dWlkLG5hbWUsZGlzcGxheSksJyArICdhdHRyaWJ1dGVzOih1dWlkLGRpc3BsYXksYXR0cmlidXRlVHlwZToobmFtZSxkYXRhdHlwZUNsYXNzbmFtZSx1dWlkKSx2YWx1ZSksJyArICdsb2NhdGlvbjoodXVpZCxuYW1lLGRpc3BsYXkpKSc7XG5jb25zdCBpbml0aWFsU3RhdGUgPSBnZXRWaXNpdFNlc3Npb25TdG9yYWdlKCkgfHwge1xuICAgIHBhdGllbnRVdWlkOiBudWxsLFxuICAgIG1hbnVhbGx5U2V0VmlzaXRVdWlkOiBudWxsLFxuICAgIG11dGF0ZVZpc2l0Q2FsbGJhY2tzOiB7fVxufTtcbi8qKlxuICogUmV0dXJucyB0aGUgZ2xvYmFsIHZpc2l0IHN0b3JlIHRoYXQgbWFuYWdlcyB0aGUgY3VycmVudCB2aXNpdCBzdGF0ZS4gVGhlIHN0b3JlXG4gKiBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudCBwYXRpZW50J3MgdmlzaXQgYW5kIHByb3ZpZGVzIG1ldGhvZHNcbiAqIGZvciBzdWJzY3JpYmluZyB0byB2aXNpdCBzdGF0ZSBjaGFuZ2VzLlxuICpcbiAqIEByZXR1cm5zIFRoZSBnbG9iYWwgdmlzaXQgc3RvcmUgaW5zdGFuY2UuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBnZXRWaXNpdFN0b3JlIH0gZnJvbSAnQG9wZW5tcnMvZXNtLWZyYW1ld29yayc7XG4gKiBjb25zdCBzdG9yZSA9IGdldFZpc2l0U3RvcmUoKTtcbiAqIGNvbnN0IHVuc3Vic2NyaWJlID0gc3RvcmUuc3Vic2NyaWJlKChzdGF0ZSkgPT4ge1xuICogICBjb25zb2xlLmxvZygnQ3VycmVudCBwYXRpZW50OicsIHN0YXRlLnBhdGllbnRVdWlkKTtcbiAqIH0pO1xuICogYGBgXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIGdldFZpc2l0U3RvcmUoKSB7XG4gICAgcmV0dXJuIGdldEdsb2JhbFN0b3JlKCd2aXNpdCcsIGluaXRpYWxTdGF0ZSk7XG59XG4vKipcbiAqIFNldHMgdGhlIGN1cnJlbnQgdmlzaXQgZm9yIGEgcGF0aWVudCBpbiB0aGUgZ2xvYmFsIHZpc2l0IHN0b3JlLiBUaGlzIGlzIHVzZWRcbiAqIHRvIG1hbnVhbGx5IHNwZWNpZnkgd2hpY2ggdmlzaXQgc2hvdWxkIGJlIGNvbnNpZGVyZWQgXCJhY3RpdmVcIiBmb3IgdGhlIGdpdmVuIHBhdGllbnQuXG4gKlxuICogQHBhcmFtIHBhdGllbnRVdWlkIFRoZSBVVUlEIG9mIHRoZSBwYXRpZW50LlxuICogQHBhcmFtIHZpc2l0VXVpZCBUaGUgVVVJRCBvZiB0aGUgdmlzaXQgdG8gc2V0IGFzIHRoZSBjdXJyZW50IHZpc2l0LlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgc2V0Q3VycmVudFZpc2l0IH0gZnJvbSAnQG9wZW5tcnMvZXNtLWZyYW1ld29yayc7XG4gKiBzZXRDdXJyZW50VmlzaXQoJ3BhdGllbnQtdXVpZCcsICd2aXNpdC11dWlkJyk7XG4gKiBgYGBcbiAqXG4gKiBAZGVwcmVjYXRlZCBcImN1cnJlbnQgdmlzaXRcIiBpcyBub3Qgd2VsbCBkZWZpbmVkIG91dHNpZGUgb2YgdGhlIHBhdGllbnQgY2hhcnQuXG4gKiBVc2UgYHZpc2l0Q29udGV4dGAgaW4gdGhlIHBhdGllbnQgY2hhcnQgaW5zdGVhZC5cbiAqLyBleHBvcnQgZnVuY3Rpb24gc2V0Q3VycmVudFZpc2l0KHBhdGllbnRVdWlkLCB2aXNpdFV1aWQpIHtcbiAgICBnZXRWaXNpdFN0b3JlKCkuc2V0U3RhdGUoe1xuICAgICAgICBwYXRpZW50VXVpZCxcbiAgICAgICAgbWFudWFsbHlTZXRWaXNpdFV1aWQ6IHZpc2l0VXVpZFxuICAgIH0pO1xufVxuZ2V0VmlzaXRTdG9yZSgpLnN1YnNjcmliZSgoc3RhdGUpPT57XG4gICAgc2V0VmlzaXRTZXNzaW9uU3RvcmFnZShzdGF0ZSk7XG59KTtcbmZ1bmN0aW9uIHNldFZpc2l0U2Vzc2lvblN0b3JhZ2UodmFsdWUpIHtcbiAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdvcGVubXJzOnZpc2l0U3RvcmVTdGF0ZScsIEpTT04uc3RyaW5naWZ5KHZhbHVlKSk7XG59XG5mdW5jdGlvbiBnZXRWaXNpdFNlc3Npb25TdG9yYWdlKCkge1xuICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBKU09OLnBhcnNlKHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ29wZW5tcnM6dmlzaXRTdG9yZVN0YXRlJykgfHwgJ251bGwnKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbn1cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyB2aXNpdCBieSBzZW5kaW5nIGEgUE9TVCByZXF1ZXN0IHRvIHRoZSBPcGVuTVJTIFJFU1QgQVBJLlxuICpcbiAqIEBwYXJhbSBwYXlsb2FkIFRoZSB2aXNpdCBkYXRhIHRvIGNyZWF0ZSwgaW5jbHVkaW5nIHBhdGllbnQgVVVJRCwgdmlzaXQgdHlwZSxcbiAqICAgc3RhcnQgZGF0ZXRpbWUsIGFuZCBvdGhlciB2aXNpdCBhdHRyaWJ1dGVzLlxuICogQHBhcmFtIGFib3J0Q29udHJvbGxlciBBbiBBYm9ydENvbnRyb2xsZXIgdG8gYWxsb3cgY2FuY2VsbGF0aW9uIG9mIHRoZSByZXF1ZXN0LlxuICogQHJldHVybnMgQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgRmV0Y2hSZXNwb25zZSBjb250YWluaW5nIHRoZSBjcmVhdGVkIFZpc2l0LlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgc2F2ZVZpc2l0IH0gZnJvbSAnQG9wZW5tcnMvZXNtLWZyYW1ld29yayc7XG4gKiBjb25zdCBhYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gKiBjb25zdCByZXNwb25zZSA9IGF3YWl0IHNhdmVWaXNpdCh7XG4gKiAgIHBhdGllbnQ6ICdwYXRpZW50LXV1aWQnLFxuICogICB2aXNpdFR5cGU6ICd2aXNpdC10eXBlLXV1aWQnLFxuICogICBzdGFydERhdGV0aW1lOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKClcbiAqIH0sIGFib3J0Q29udHJvbGxlcik7XG4gKiBgYGBcbiAqLyBleHBvcnQgZnVuY3Rpb24gc2F2ZVZpc2l0KHBheWxvYWQsIGFib3J0Q29udHJvbGxlcikge1xuICAgIHJldHVybiBvcGVubXJzRmV0Y2goYCR7cmVzdEJhc2VVcmx9L3Zpc2l0YCwge1xuICAgICAgICBzaWduYWw6IGFib3J0Q29udHJvbGxlci5zaWduYWwsXG4gICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAnQ29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgICAgIH0sXG4gICAgICAgIGJvZHk6IHBheWxvYWRcbiAgICB9KTtcbn1cbi8qKlxuICogVXBkYXRlcyBhbiBleGlzdGluZyB2aXNpdCBieSBzZW5kaW5nIGEgUE9TVCByZXF1ZXN0IHRvIHRoZSBPcGVuTVJTIFJFU1QgQVBJLlxuICpcbiAqIEBwYXJhbSB1dWlkIFRoZSBVVUlEIG9mIHRoZSB2aXNpdCB0byB1cGRhdGUuXG4gKiBAcGFyYW0gcGF5bG9hZCBUaGUgdmlzaXQgZGF0YSB0byB1cGRhdGUsIHN1Y2ggYXMgc3RvcCBkYXRldGltZSBvciBhdHRyaWJ1dGVzLlxuICogQHBhcmFtIGFib3J0Q29udHJvbGxlciBBbiBBYm9ydENvbnRyb2xsZXIgdG8gYWxsb3cgY2FuY2VsbGF0aW9uIG9mIHRoZSByZXF1ZXN0LlxuICogQHJldHVybnMgQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgRmV0Y2hSZXNwb25zZSBjb250YWluaW5nIHRoZSB1cGRhdGVkIFZpc2l0LlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgdXBkYXRlVmlzaXQgfSBmcm9tICdAb3Blbm1ycy9lc20tZnJhbWV3b3JrJztcbiAqIGNvbnN0IGFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAqIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdXBkYXRlVmlzaXQoJ3Zpc2l0LXV1aWQnLCB7XG4gKiAgIHN0b3BEYXRldGltZTogbmV3IERhdGUoKS50b0lTT1N0cmluZygpXG4gKiB9LCBhYm9ydENvbnRyb2xsZXIpO1xuICogYGBgXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVZpc2l0KHV1aWQsIHBheWxvYWQsIGFib3J0Q29udHJvbGxlcikge1xuICAgIHJldHVybiBvcGVubXJzRmV0Y2goYCR7cmVzdEJhc2VVcmx9L3Zpc2l0LyR7dXVpZH1gLCB7XG4gICAgICAgIHNpZ25hbDogYWJvcnRDb250cm9sbGVyLnNpZ25hbCxcbiAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICdDb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24vanNvbidcbiAgICAgICAgfSxcbiAgICAgICAgYm9keTogcGF5bG9hZFxuICAgIH0pO1xufVxuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2UgdGhlIGB1c2VWaXNpdGAgaG9vayBpbnN0ZWFkLlxuICovIGV4cG9ydCBmdW5jdGlvbiBnZXRWaXNpdHNGb3JQYXRpZW50KHBhdGllbnRVdWlkLCBhYm9ydENvbnRyb2xsZXIsIHYpIHtcbiAgICBjb25zdCBjdXN0b20gPSB2ID8/IGRlZmF1bHRWaXNpdEN1c3RvbVJlcHJlc2VudGF0aW9uO1xuICAgIHJldHVybiBvcGVubXJzRmV0Y2goYCR7cmVzdEJhc2VVcmx9L3Zpc2l0P3BhdGllbnQ9JHtwYXRpZW50VXVpZH0mdj0ke2N1c3RvbX1gLCB7XG4gICAgICAgIHNpZ25hbDogYWJvcnRDb250cm9sbGVyLnNpZ25hbCxcbiAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgJ0NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICAgICB9XG4gICAgfSk7XG59XG4vKiogQGRlcHJlY2F0ZWQgKi8gZXhwb3J0IGNvbnN0IGdldFN0YXJ0ZWRWaXNpdCA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCk7XG4iXSwibmFtZXMiOlsib3Blbm1yc0ZldGNoIiwicmVzdEJhc2VVcmwiLCJnZXRHbG9iYWxTdG9yZSIsIkJlaGF2aW9yU3ViamVjdCIsIlZpc2l0TW9kZSIsIlZpc2l0U3RhdHVzIiwiZGVmYXVsdFZpc2l0Q3VzdG9tUmVwcmVzZW50YXRpb24iLCJpbml0aWFsU3RhdGUiLCJnZXRWaXNpdFNlc3Npb25TdG9yYWdlIiwiZ2V0VmlzaXRTdG9yZSIsInNldEN1cnJlbnRWaXNpdCIsInBhdGllbnRVdWlkIiwidmlzaXRVdWlkIiwic3RhdGUiLCJzZXRWaXNpdFNlc3Npb25TdG9yYWdlIiwidmFsdWUiLCJzZXNzaW9uU3RvcmFnZSIsIkpTT04iLCJlIiwic2F2ZVZpc2l0IiwicGF5bG9hZCIsImFib3J0Q29udHJvbGxlciIsInVwZGF0ZVZpc2l0IiwidXVpZCIsImdldFZpc2l0c0ZvclBhdGllbnQiLCJ2IiwiY3VzdG9tIiwiZ2V0U3RhcnRlZFZpc2l0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMEJBQTBCLEdBQWdFO0FBQ3RDO0FBQ2I7QUFDaEMsSUFBSUksWUFBWSxXQUFXLEdBQUcsU0FBU0EsU0FBUztJQUNuREEsU0FBUyxDQUFDLFdBQVcsR0FBRztJQUN4QkEsU0FBUyxDQUFDLFlBQVksR0FBRztJQUN6QkEsU0FBUyxDQUFDLFVBQVUsR0FBRztJQUN2QixPQUFPQTtBQUNYLEVBQUUsQ0FBQyxHQUFHO0FBQ0MsSUFBSUMsY0FBYyxXQUFXLEdBQUcsU0FBU0EsV0FBVztJQUN2REEsV0FBVyxDQUFDLGFBQWEsR0FBRztJQUM1QkEsV0FBVyxDQUFDLFVBQVUsR0FBRztJQUN6QixPQUFPQTtBQUNYLEVBQUUsQ0FBQyxHQUFHO0FBQ047Ozs7Q0FJQyxHQUFVLElBQU1DLG1DQUFtQyx1RUFBdUUsZ0RBQWdELG1DQUFtQyx1QkFBdUIsc0NBQXNDLCtCQUErQiw0QkFBNEIsbUNBQW1DLGlGQUFpRixnQ0FBZ0M7QUFDMWQsSUFBTUMsZUFBZUMsNEJBQTRCO0lBQzdDLGFBQWE7SUFDYixzQkFBc0I7SUFDdEIsc0JBQXNCLENBQUM7QUFDM0I7QUFDQTs7Ozs7Ozs7Ozs7Ozs7O0NBZUMsR0FBVSxTQUFTQztJQUNoQixPQUFPUCxzREFBY0EsQ0FBQyxTQUFTSztBQUNuQztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Q0FlQyxHQUFVLFNBQVNHLGdCQUFnQkMsV0FBVyxFQUFFQyxTQUFTO0lBQ3RESCxnQkFBZ0IsUUFBUSxDQUFDO1FBQ3JCRSxhQUFBQTtRQUNBLHNCQUFzQkM7SUFDMUI7QUFDSjtBQUNBSCxnQkFBZ0IsU0FBUyxDQUFDLFNBQUNJO0lBQ3ZCQyx1QkFBdUJEO0FBQzNCO0FBQ0EsU0FBU0MsdUJBQXVCQyxLQUFLO0lBQ2pDQyxlQUFlLE9BQU8sQ0FBQywyQkFBMkJDLEtBQUssU0FBUyxDQUFDRjtBQUNyRTtBQUNBLFNBQVNQO0lBQ0wsSUFBSTtRQUNBLE9BQU9TLEtBQUssS0FBSyxDQUFDRCxlQUFlLE9BQU8sQ0FBQyw4QkFBOEI7SUFDM0UsRUFBRSxPQUFPRSxHQUFHO1FBQ1IsT0FBTztJQUNYO0FBQ0o7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBa0JDLEdBQVUsU0FBU0MsVUFBVUMsT0FBTyxFQUFFQyxlQUFlO0lBQ2xELE9BQU9yQixrREFBWUEsQ0FBRSxHQUFjLE9BQVpDLDZDQUFXQSxFQUFDLFdBQVM7UUFDeEMsUUFBUW9CLGdCQUFnQixNQUFNO1FBQzlCLFFBQVE7UUFDUixTQUFTO1lBQ0wsZ0JBQWdCO1FBQ3BCO1FBQ0EsTUFBTUQ7SUFDVjtBQUNKO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FnQkMsR0FBVSxTQUFTRSxZQUFZQyxJQUFJLEVBQUVILE9BQU8sRUFBRUMsZUFBZTtJQUMxRCxPQUFPckIsa0RBQVlBLENBQUUsR0FBdUJ1QixPQUFyQnRCLDZDQUFXQSxFQUFDLFdBQWMsT0FBTHNCLE9BQVE7UUFDaEQsUUFBUUYsZ0JBQWdCLE1BQU07UUFDOUIsUUFBUTtRQUNSLFNBQVM7WUFDTCxnQkFBZ0I7UUFDcEI7UUFDQSxNQUFNRDtJQUNWO0FBQ0o7QUFDQTs7Q0FFQyxHQUFVLFNBQVNJLG9CQUFvQmIsV0FBVyxFQUFFVSxlQUFlLEVBQUVJLENBQUM7SUFDbkUsSUFBTUMsU0FBU0QsY0FBQUEsZUFBQUEsSUFBS25CO0lBQ3BCLE9BQU9OLGtEQUFZQSxDQUFFLEdBQStCVyxPQUE3QlYsNkNBQVdBLEVBQUMsbUJBQWtDeUIsT0FBakJmLGFBQVksT0FBWSxPQUFQZSxTQUFVO1FBQzNFLFFBQVFMLGdCQUFnQixNQUFNO1FBQzlCLFFBQVE7UUFDUixTQUFTO1lBQ0wsZ0JBQWdCO1FBQ3BCO0lBQ0o7QUFDSjtBQUNBLGdCQUFnQixHQUFVLElBQU1NLGtCQUFrQixJQUFJeEIscUNBQWVBLENBQUMsTUFBTSJ9\n//# sourceURL=webpack-internal:///../../framework/esm-emr-api/dist/visit-utils.js\n\n}");
|
|
5729
5729
|
|
|
5730
5730
|
},
|
|
5731
5731
|
"../../framework/esm-error-handling/dist/index.js"(__unused_rspack___webpack_module__, __webpack_exports__, __webpack_require__) {
|