// ==UserScript==
// @name Unified Lab Assistant (Enhanced Grid & Auto-Verify) - LOCAL
// @version 14.2.4
// @description Merges "Enhanced AG Grid" and "Conditional Auto & Manual VERIFY2" functionalities. Adds a unified summary table, auto-verification, improved UI styling, and QoL features, including a more robust MRN display, all optimized for performance in a Single-Page Application (SPA) environment. This version has NO EXTERNAL DEPENDENCIES.
// @match https://his.kaauh.org/lab/*
// @author Hamad AlShegifi (Modified for local assets)
// @grant GM_addStyle
// @namespace http://tampermonkey.net/
// ==/UserScript==
// --- EMBEDDED JsBarcode v3.11.5 ---
// The following block of code is the JsBarcode library, embedded to remove external dependencies.
/*! JsBarcode v3.11.5 | (c) Johan Lindell | MIT license */
!function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=15)}([function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default=function t(e,n){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.data=e,this.text=n.text||e,this.options=n}},function(t,e,n){"use strict";var r;function o(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}Object.defineProperty(e,"__esModule",{value:!0});var i=e.SET_A=0,a=e.SET_B=1,u=e.SET_C=2,f=(e.SHIFT=98,e.START_A=103),c=e.START_B=104,s=e.START_C=105;e.MODULO=103,e.STOP=106,e.FNC1=207,e.SET_BY_CODE=(o(r={},f,i),o(r,c,a),o(r,s,u),r),e.SWAP={101:i,100:a,99:u},e.A_START_CHAR=String.fromCharCode(208),e.B_START_CHAR=String.fromCharCode(209),e.C_START_CHAR=String.fromCharCode(210),e.A_CHARS="[\0-_È-Ï]",e.B_CHARS="[ -È-Ï]",e.C_CHARS="(Ï*[0-9]{2}Ï*)",e.BARS=[11011001100,11001101100,11001100110,10010011e3,10010001100,10001001100,10011001e3,10011000100,10001100100,11001001e3,11001000100,11000100100,10110011100,10011011100,10011001110,10111001100,10011101100,10011100110,11001110010,11001011100,11001001110,11011100100,11001110100,11101101110,11101001100,11100101100,11100100110,11101100100,11100110100,11100110010,11011011e3,11011000110,11000110110,10100011e3,10001011e3,10001000110,10110001e3,10001101e3,10001100010,11010001e3,11000101e3,11000100010,10110111e3,10110001110,10001101110,10111011e3,10111000110,10001110110,11101110110,11010001110,11000101110,11011101e3,11011100010,11011101110,11101011e3,11101000110,11100010110,11101101e3,11101100010,11100011010,11101111010,11001000010,11110001010,1010011e4,10100001100,1001011e4,10010000110,10000101100,10000100110,1011001e4,10110000100,1001101e4,10011000010,10000110100,10000110010,11000010010,1100101e4,11110111010,11000010100,10001111010,10100111100,10010111100,10010011110,10111100100,10011110100,10011110010,11110100100,11110010100,11110010010,11011011110,11011110110,11110110110,10101111e3,10100011110,10001011110,10111101e3,10111100010,11110101e3,11110100010,10111011110,10111101110,11101011110,11110101110,11010000100,1101001e4,11010011100,1100011101011]},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.SIDE_BIN="101",e.MIDDLE_BIN="01010",e.BINARIES={L:["0001101","0011001","0010011","0111101","0100011","0110001","0101111","0111011","0110111","0001011"],G:["0100111","0110011","0011011","0100001","0011101","0111001","0000101","0010001","0001001","0010111"],R:["1110010","1100110","1101100","1000010","1011100","1001110","1010000","1000100","1001000","1110100"],O:["0001101","0011001","0010011","0111101","0100011","0110001","0101111","0111011","0110111","0001011"],E:["0100111","0110011","0011011","0100001","0011101","0111001","0000101","0010001","0001001","0010111"]},e.EAN2_STRUCTURE=["LL","LG","GL","GG"],e.EAN5_STRUCTURE=["GGLLL","GLGLL","GLLGL","GLLLG","LGGLL","LLGGL","LLLGG","LGLGL","LGLLG","LLGLG"],e.EAN13_STRUCTURE=["LLLLLL","LLGLGG","LLGGLG","LLGGGL","LGLLGG","LGGLLG","LGGGLL","LGLGLG","LGLGGL","LGGLGL"]},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(2);e.default=function(t,e,n){var o=t.split("").map((function(t,n){return r.BINARIES[e[n]]})).map((function(e,n){return e?e[t[n]]:""}));if(n){var i=t.length-1;o=o.map((function(t,e){return e<i?t+n:t}))}return o.join("")}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,o=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),i=n(0);var a=function(t){function e(t,n){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,n))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),o(e,[{key:"encode",value:function(){for(var t="110",e=0;e<this.data.length;e++){var n=parseInt(this.data[e]).toString(2);n=u(n,4-n.length);for(var r=0;r<n.length;r++)t+="0"==n[r]?"100":"110"}return{data:t+="1001",text:this.text}}},{key:"valid",value:function(){return-1!==this.data.search(/^[0-9]+$/)}}]),e}(((r=i)&&r.__esModule?r:{default:r}).default);function u(t,e){for(var n=0;n<e;n++)t="0"+t;return t}e.default=a},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,o=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),i=n(0),a=(r=i)&&r.__esModule?r:{default:r},u=n(1);var f=function(t){function e(t,n){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var r=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t.substring(1),n));return r.bytes=t.split("").map((function(t){return t.charCodeAt(0)})),r}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),o(e,[{key:"valid",value:function(){return/^[\x00-\x7F\xC8-\xD3]+$/.test(this.data)}},{key:"encode",value:function(){var t=this.bytes,n=t.shift()-105,r=u.SET_BY_CODE[n];if(void 0===r)throw new RangeError("The encoding does not start with a start character.");!0===this.shouldEncodeAsEan128()&&t.unshift(u.FNC1);var o=e.next(t,1,r);return{text:this.text===this.data?this.text.replace(/[^\x20-\x7E]/g,""):this.text,data:e.getBar(n)+o.result+e.getBar((o.checksum+n)%u.MODULO)+e.getBar(u.STOP)}}},{key:"shouldEncodeAsEan128",value:function(){var t=this.options.ean128||!1;return"string"==typeof t&&(t="true"===t.toLowerCase()),t}}],[{key:"getBar",value:function(t){return u.BARS[t]?u.BARS[t].toString():""}},{key:"correctIndex",value:function(t,e){if(e===u.SET_A){var n=t.shift();return n<32?n+64:n-32}return e===u.SET_B?t.shift()-32:10*(t.shift()-48)+t.shift()-48}},{key:"next",value:function(t,n,r){if(!t.length)return{result:"",checksum:0};var o=void 0,i=void 0;if(t[0]>=200){i=t.shift()-105;var a=u.SWAP[i];void 0!==a?o=e.next(t,n+1,a):(r!==u.SET_A&&r!==u.SET_B||i!==u.SHIFT||(t[0]=r===u.SET_A?t[0]>95?t[0]-96:t[0]:t[0]<32?t[0]+96:t[0]),o=e.next(t,n+1,r))}else i=e.correctIndex(t,r),o=e.next(t,n+1,r);var f=i*n;return{result:e.getBar(i)+o.result,checksum:f+o.checksum}}}]),e}(a.default);e.default=f},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.mod10=function(t){for(var e=0,n=0;n<t.length;n++){var r=parseInt(t[n]);(n+t.length)%2==0?e+=r:e+=2*r%10+Math.floor(2*r/10)}return(10-e%10)%10},e.mod11=function(t){for(var e=0,n=[2,3,4,5,6,7],r=0;r<t.length;r++){var o=parseInt(t[t.length-1-r]);e+=n[r%n.length]*o}return(11-e%11)%11}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t};e.default=function(t,e){return r({},t,e)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),o=n(2),i=a(n(3));function a(t){return t&&t.__esModule?t:{default:t}}var u=function(t){function e(t,n){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var r=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,n));return r.fontSize=!n.flat&&n.fontSize>10*n.width?10*n.width:n.fontSize,r.guardHeight=n.height+r.fontSize/2+n.textMargin,r}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,
t),r(e,[{key:"encode",value:function(){return this.options.flat?this.encodeFlat():this.encodeGuarded()}},{key:"leftText",value:function(t,e){return this.text.substr(t,e)}},{key:"leftEncode",value:function(t,e){return(0,i.default)(t,e)}},{key:"rightText",value:function(t,e){return this.text.substr(t,e)}},{key:"rightEncode",value:function(t,e){return(0,i.default)(t,e)}},{key:"encodeGuarded",value:function(){var t={fontSize:this.fontSize},e={height:this.guardHeight};return[{data:o.SIDE_BIN,options:e},{data:this.leftEncode(),text:this.leftText(),options:t},{data:o.MIDDLE_BIN,options:e},{data:this.rightEncode(),text:this.rightText(),options:t},{data:o.SIDE_BIN,options:e}]}},{key:"encodeFlat",value:function(){return{data:[o.SIDE_BIN,this.leftEncode(),o.MIDDLE_BIN,this.rightEncode(),o.SIDE_BIN].join(""),text:this.text}}}]),e}(a(n(0)).default);e.default=u},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}();e.checksum=u;var o=i(n(3));function i(t){return t&&t.__esModule?t:{default:t}}var a=function(t){function e(t,n){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),-1!==t.search(/^[0-9]{11}$/)&&(t+=u(t));var r=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,n));return r.displayValue=n.displayValue,n.fontSize>10*n.width?r.fontSize=10*n.width:r.fontSize=n.fontSize,r.guardHeight=n.height+r.fontSize/2+n.textMargin,r}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),r(e,[{key:"valid",value:function(){return-1!==this.data.search(/^[0-9]{12}$/)&&this.data[11]==u(this.data)}},{key:"encode",value:function(){return this.options.flat?this.flatEncoding():this.guardedEncoding()}},{key:"flatEncoding",value:function(){var t="";return t+="101",t+=(0,o.default)(this.data.substr(0,6),"LLLLLL"),t+="01010",t+=(0,o.default)(this.data.substr(6,6),"RRRRRR"),{data:t+="101",text:this.text}}},{key:"guardedEncoding",value:function(){var t=[];return this.displayValue&&t.push({data:"00000000",text:this.text.substr(0,1),options:{textAlign:"left",fontSize:this.fontSize}}),t.push({data:"101"+(0,o.default)(this.data[0],"L"),options:{height:this.guardHeight}}),t.push({data:(0,o.default)(this.data.substr(1,5),"LLLLL"),text:this.text.substr(1,5),options:{fontSize:this.fontSize}}),t.push({data:"01010",options:{height:this.guardHeight}}),t.push({data:(0,o.default)(this.data.substr(6,5),"RRRRR"),text:this.text.substr(6,5),options:{fontSize:this.fontSize}}),t.push({data:(0,o.default)(this.data[11],"R")+"101",options:{height:this.guardHeight}}),this.displayValue&&t.push({data:"00000000",text:this.text.substr(11,1),options:{textAlign:"right",fontSize:this.fontSize}}),t}}]),e}(i(n(0)).default);function u(t){var e,n=0;for(e=1;e<11;e+=2)n+=parseInt(t[e]);for(e=0;e<11;e+=2)n+=3*parseInt(t[e]);return(10-n%10)%10}e.default=a},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,o=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),i=n(31),a=n(0);function u(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function f(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}var c=function(t){function e(){return u(this,e),f(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),o(e,[{key:"valid",value:function(){return-1!==this.data.search(/^([0-9]{2})+$/)}},{key:"encode",value:function(){var t=this,e=this.data.match(/.{2}/g).map((function(e){return t.encodePair(e)})).join("");return{data:i.START_BIN+e+i.END_BIN,text:this.text}}},{key:"encodePair",value:function(t){var e=i.BINARIES[t[1]];return i.BINARIES[t[0]].split("").map((function(t,n){return("1"===t?"111":"1")+("1"===e[n]?"000":"0")})).join("")}}]),e}(((r=a)&&r.__esModule?r:{default:r}).default);e.default=c},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){var e=["width","height","textMargin","fontSize","margin","marginTop","marginBottom","marginLeft","marginRight"];for(var n in e)e.hasOwnProperty(n)&&(n=e[n],"string"==typeof t[n]&&(t[n]=parseInt(t[n],10)));"string"==typeof t.displayValue&&(t.displayValue="false"!=t.displayValue);return t}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r={width:2,height:100,format:"auto",displayValue:!0,fontOptions:"",font:"monospace",text:void 0,textAlign:"center",textPosition:"bottom",textMargin:2,fontSize:20,background:"#ffffff",lineColor:"#000000",margin:10,marginTop:void 0,marginBottom:void 0,marginLeft:void 0,marginRight:void 0,valid:function(){}};e.default=r},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getTotalWidthOfEncodings=e.calculateEncodingAttributes=e.getBarcodePadding=e.getEncodingHeight=e.getMaximumHeightOfEncodings=void 0;var r,o=n(7),i=(r=o)&&r.__esModule?r:{default:r};function a(t,e){return e.height+(e.displayValue&&t.text.length>0?e.fontSize+e.textMargin:0)+e.marginTop+e.marginBottom}function u(t,e,n){if(n.displayValue&&e<t){if("center"==n.textAlign)return Math.floor((t-e)/2);if("left"==n.textAlign)return 0;if("right"==n.textAlign)return Math.floor(t-e)}return 0}function f(t,e,n){var r;if(n)r=n;else{if("undefined"==typeof document)return 0;r=document.createElement("canvas").getContext("2d")}r.font=e.fontOptions+" "+e.fontSize+"px "+e.font;var o=r.measureText(t);return o?o.width:0}e.getMaximumHeightOfEncodings=function(t){for(var e=0,n=0;n<t.length;n++)t[n].height>e&&(e=t[n].height);return e},e.getEncodingHeight=a,e.getBarcodePadding=u,e.calculateEncodingAttributes=function(t,e,n){for(var r=0;r<t.length;r++){var o,c=t[r],s=(0,i.default)(e,c.options);o=s.displayValue?f(c.text,s,n):0;var l=c.data.length*s.width;c.width=Math.ceil(Math.max(o,l)),c.height=a(c,s),c.barcodePadding=u(o,l,s)}},e.getTotalWidthOfEncodings=function(t){for(var e=0,n=0;n<t.length;n++)e+=t[n].width;return e}},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var a=function(t){function e(t,n){r(this,e);var i=o(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return i.name="InvalidInputException",i.symbology=t,i.input=n,i.message='"'+i.input+'" is not a valid input for '+i.symbology,i}return i(e,Error),e}(),u=function(t){function e(){r(this,e);var t=o(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return t.name="InvalidElementException",t.message="Not supported type to render on",t}return i(e,Error),e}(),f=function(t){function e(){r(this,e);var t=o(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return t.name="NoElementException",t.message="No element to render on.",t}return i(e,Error),e}();e.InvalidInputException=a,e.InvalidElementException=u,e.NoElementException=f},function(t,e,n){"use strict";var r=p(n(16)),o=p(n(7)),i=p(n(41)),a=p(n(42)),u=p(n(43)),f=p(n(11)),c=p(n(49)),s=n(14),l=p(n(12));function p(t){return t&&t.__esModule?t:{default:t}}var d=function(){},h=function(t,e,n){var r=new d;if(void 0===t)throw Error("No element to render on was provided.");return r._renderProperties=(0,u.default)(t),r._encodings=[],r._options=l.default,r._errorHandler=new c.default(r),void 0!==e&&((n=n||{}).format||(n.format=_()),r.options(n)[n.format](e,n).render()),r};for(var y in h.getModule=function(t){return r.default[t]},r.default)r.default.hasOwnProperty(y)&&b(r.default,y);function b(t,e){d.prototype[e]=d.prototype[e.toUpperCase()]=d.prototype[e.toLowerCase()]=function(n,r){var i=this;return i._errorHandler.wrapBarcodeCall((function(){r.text=void 0===r.text?void 0:""+r.text;var a=(0,o.default)(i._options,r);a=(0,f.default)(a);var u=t[e],c=v(n,u,a);return i._encodings.push(c),i}))}}function v(t,e,n){var r=new e(t=""+t,n);if(!r.valid())throw new s.InvalidInputException(r.constructor.name,t);var a=r.encode();a=(0,i.default)(a);for(var u=0;u<a.length;u++)a[u].options=(0,o.default)(n,a[u].options);return a}function _(){return r.default.CODE128?"CODE128":Object.keys(r.default)[0]}function g(t,e,n){e=(0,i.default)(e);for(var r=0;r<e.length;r++)e[r].options=(0,o.default)(n,e[r].options),(0,a.default)(e[r].options);(0,a.default)(n),new(0,t.renderer)(t.element,e,n).render(),t.afterRender&&t.afterRender()}d.prototype.options=function(t){
return this._options=(0,o.default)(this._options,t),this},d.prototype.blank=function(t){var e=new Array(t+1).join("0");return this._encodings.push({data:e}),this},d.prototype.init=function(){var t;if(this._renderProperties)for(var e in Array.isArray(this._renderProperties)||(this._renderProperties=[this._renderProperties]),this._renderProperties){t=this._renderProperties[e];var n=(0,o.default)(this._options,t.options);"auto"==n.format&&(n.format=_()),this._errorHandler.wrapBarcodeCall((function(){var e=v(n.value,r.default[n.format.toUpperCase()],n);g(t,e,n)}))}},d.prototype.render=function(){if(!this._renderProperties)throw new s.NoElementException;if(Array.isArray(this._renderProperties))for(var t=0;t<this._renderProperties.length;t++)g(this._renderProperties[t],this._encodings,this._options);else g(this._renderProperties,this._encodings,this._options);return this},d.prototype._defaults=l.default,"undefined"!=typeof window&&(window.JsBarcode=h),"undefined"!=typeof jQuery&&(jQuery.fn.JsBarcode=function(t,e){var n=[];return jQuery(this).each((function(){n.push(this)})),h(n,t,e)}),t.exports=h},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(17),o=n(18),i=n(24),a=n(30),u=n(33),f=n(38),c=n(39),s=n(40);e.default={CODE39:r.CODE39,CODE128:o.CODE128,CODE128A:o.CODE128A,CODE128B:o.CODE128B,CODE128C:o.CODE128C,EAN13:i.EAN13,EAN8:i.EAN8,EAN5:i.EAN5,EAN2:i.EAN2,UPC:i.UPC,UPCE:i.UPCE,ITF14:a.ITF14,ITF:a.ITF,MSI:u.MSI,MSI10:u.MSI10,MSI11:u.MSI11,MSI1010:u.MSI1010,MSI1110:u.MSI1110,pharmacode:f.pharmacode,codabar:c.codabar,GenericBarcode:s.GenericBarcode}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CODE39=void 0;var r,o=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),i=n(0);var a=function(t){function e(t,n){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),t=t.toUpperCase(),n.mod43&&(t+=function(t){return u[t]}(function(t){for(var e=0,n=0;n<t.length;n++)e+=s(t[n]);return e%=43}(t))),function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,n))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),o(e,[{key:"encode",value:function(){for(var t=c("*"),e=0;e<this.data.length;e++)t+=c(this.data[e])+"0";return{data:t+=c("*"),text:this.text}}},{key:"valid",value:function(){return-1!==this.data.search(/^[0-9A-Z\-\.\ \$\/\+\%]+$/)}}]),e}(((r=i)&&r.__esModule?r:{default:r}).default),u=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","-","."," ","$","/","+","%","*"],f=[20957,29783,23639,30485,20951,29813,23669,20855,29789,23645,29975,23831,30533,22295,30149,24005,21623,29981,23837,22301,30023,23879,30545,22343,30161,24017,21959,30065,23921,22385,29015,18263,29141,17879,29045,18293,17783,29021,18269,17477,17489,17681,20753,35770];function c(t){return function(t){return f[t].toString(2)}(s(t))}function s(t){return u.indexOf(t)}e.CODE39=a},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CODE128C=e.CODE128B=e.CODE128A=e.CODE128=void 0;var r=u(n(19)),o=u(n(21)),i=u(n(22)),a=u(n(23));function u(t){return t&&t.__esModule?t:{default:t}}e.CODE128=r.default,e.CODE128A=o.default,e.CODE128B=i.default,e.CODE128C=a.default},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=i(n(5)),o=i(n(20));function i(t){return t&&t.__esModule?t:{default:t}}function a(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}var u=function(t){function e(t,n){if(function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),/^[\x00-\x7F\xC8-\xD3]+$/.test(t))var r=a(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,(0,o.default)(t),n));else r=a(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,n));return a(r)}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e}(r.default);e.default=u},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(1),o=function(t){return t.match(new RegExp("^"+r.A_CHARS+"*"))[0].length},i=function(t){return t.match(new RegExp("^"+r.B_CHARS+"*"))[0].length},a=function(t){return t.match(new RegExp("^"+r.C_CHARS+"*"))[0]};function u(t,e){var n=e?r.A_CHARS:r.B_CHARS,o=t.match(new RegExp("^("+n+"+?)(([0-9]{2}){2,})([^0-9]|$)"));if(o)return o[1]+String.fromCharCode(204)+f(t.substring(o[1].length));var i=t.match(new RegExp("^"+n+"+"))[0];return i.length===t.length?t:i+String.fromCharCode(e?205:206)+u(t.substring(i.length),!e)}function f(t){var e=a(t),n=e.length;if(n===t.length)return t;t=t.substring(n);var r=o(t)>=i(t);return e+String.fromCharCode(r?206:205)+u(t,r)}e.default=function(t){var e=void 0;if(a(t).length>=2)e=r.C_START_CHAR+f(t);else{var n=o(t)>i(t);e=(n?r.A_START_CHAR:r.B_START_CHAR)+u(t,n)}return e.replace(/[\xCD\xCE]([^])[\xCD\xCE]/,(function(t,e){return String.fromCharCode(203)+e}))}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,o=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),i=n(5),a=(r=i)&&r.__esModule?r:{default:r},u=n(1);var f=function(t){function e(t,n){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,u.A_START_CHAR+t,n))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),o(e,[{key:"valid",value:function(){return new RegExp("^"+u.A_CHARS+"+$").test(this.data)}}]),e}(a.default);e.default=f},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,o=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),i=n(5),a=(r=i)&&r.__esModule?r:{default:r},u=n(1);var f=function(t){function e(t,n){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,u.B_START_CHAR+t,n))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),o(e,[{key:"valid",value:function(){return new RegExp("^"+u.B_CHARS+"+$").test(this.data)}}]),e}(a.default);e.default=f},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,o=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),i=n(5),a=(r=i)&&r.__esModule?r:{default:r},u=n(1);var f=function(t){function e(t,n){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,u.C_START_CHAR+t,n))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),o(e,[{key:"valid",value:function(){return new RegExp("^"+u.C_CHARS+"+$").test(this.data)}}]),e}(a.default);e.default=f},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.UPCE=e.UPC=e.EAN2=e.EAN5=e.EAN8=e.EAN13=void 0;var r=c(n(25)),o=c(n(26)),i=c(n(27)),a=c(n(28)),u=c(n(9)),f=c(n(29));function c(t){return t&&t.__esModule?t:{default:t}}e.EAN13=r.default,e.EAN8=o.default,e.EAN5=i.default,e.EAN2=a.default,e.UPC=u.default,e.UPCE=f.default},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,o=function(){function t(t,e){for(
var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),i=function t(e,n,r){null===e&&(e=Function.prototype);var o=Object.getOwnPropertyDescriptor(e,n);if(void 0===o){var i=Object.getPrototypeOf(e);return null===i?void 0:t(i,n,r)}if("value"in o)return o.value;var a=o.get;return void 0!==a?a.call(r):void 0},a=n(2),u=n(8),f=(r=u)&&r.__esModule?r:{default:r};var c=function(t){return(10-t.substr(0,12).split("").map((function(t){return+t})).reduce((function(t,e,n){return n%2?t+3*e:t+e}),0)%10)%10},s=function(t){function e(t,n){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),-1!==t.search(/^[0-9]{12}$/)&&(t+=c(t));var r=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,n));return r.lastChar=n.lastChar,r}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),o(e,[{key:"valid",value:function(){return-1!==this.data.search(/^[0-9]{13}$/)&&+this.data[12]===c(this.data)}},{key:"leftText",value:function(){return i(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"leftText",this).call(this,1,6)}},{key:"leftEncode",value:function(){var t=this.data.substr(1,6),n=a.EAN13_STRUCTURE[this.data[0]];return i(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"leftEncode",this).call(this,t,n)}},{key:"rightText",value:function(){return i(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"rightText",this).call(this,7,6)}},{key:"rightEncode",value:function(){var t=this.data.substr(7,6);return i(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"rightEncode",this).call(this,t,"RRRRRR")}},{key:"encodeGuarded",value:function(){var t=i(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"encodeGuarded",this).call(this);return this.options.displayValue&&(t.unshift({data:"000000000000",text:this.text.substr(0,1),options:{textAlign:"left",fontSize:this.fontSize}}),this.options.lastChar&&(t.push({data:"00"}),t.push({data:"00000",text:this.options.lastChar,options:{fontSize:this.fontSize}}))),t}}]),e}(f.default);e.default=s},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,o=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),i=function t(e,n,r){null===e&&(e=Function.prototype);var o=Object.getOwnPropertyDescriptor(e,n);if(void 0===o){var i=Object.getPrototypeOf(e);return null===i?void 0:t(i,n,r)}if("value"in o)return o.value;var a=o.get;return void 0!==a?a.call(r):void 0},a=n(8),u=(r=a)&&r.__esModule?r:{default:r};var f=function(t){return(10-t.substr(0,7).split("").map((function(t){return+t})).reduce((function(t,e,n){return n%2?t+e:t+3*e}),0)%10)%10},c=function(t){function e(t,n){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),-1!==t.search(/^[0-9]{7}$/)&&(t+=f(t)),function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,n))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),o(e,[{key:"valid",value:function(){return-1!==this.data.search(/^[0-9]{8}$/)&&+this.data[7]===f(this.data)}},{key:"leftText",value:function(){return i(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"leftText",this).call(this,0,4)}},{key:"leftEncode",value:function(){var t=this.data.substr(0,4);return i(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"leftEncode",this).call(this,t,"LLLL")}},{key:"rightText",value:function(){return i(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"rightText",this).call(this,4,4)}},{key:"rightEncode",value:function(){var t=this.data.substr(4,4);return i(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"rightEncode",this).call(this,t,"RRRR")}}]),e}(u.default);e.default=c},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),o=n(2),i=u(n(3)),a=u(n(0));function u(t){return t&&t.__esModule?t:{default:t}}var f=function(t){function e(t,n){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,n))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),r(e,[{key:"valid",value:function(){return-1!==this.data.search(/^[0-9]{5}$/)}},{key:"encode",value:function(){var t,e=o.EAN5_STRUCTURE[(t=this.data,t.split("").map((function(t){return+t})).reduce((function(t,e,n){return n%2?t+9*e:t+3*e}),0)%10)];return{data:"1011"+(0,i.default)(this.data,e,"01"),text:this.text}}}]),e}(a.default);e.default=f},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),o=n(2),i=a(n(3));function a(t){return t&&t.__esModule?t:{default:t}}var u=function(t){function e(t,n){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,n))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),r(e,[{key:"valid",value:function(){return-1!==this.data.search(/^[0-9]{2}$/)}},{key:"encode",value:function(){var t=o.EAN2_STRUCTURE[parseInt(this.data)%4];return{data:"1011"+(0,i.default)(this.data,t,"01"),text:this.text}}}]),e}(a(n(0)).default);e.default=u},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),o=u(n(3)),i=u(n(0)),a=n(9);function u(t){return t&&t.__esModule?t:{default:t}}function f(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}var c=["XX00000XXX","XX10000XXX","XX20000XXX","XXX00000XX","XXXX00000X","XXXXX00005","XXXXX00006","XXXXX00007","XXXXX00008","XXXXX00009"],s=[["EEEOOO","OOOEEE"],["EEOEOO","OOEOEE"],["EEOOEO","OOEEOE"],["EEOOOE","OOEEEO"],["EOEEOO","OEOOEE"],["EOOEEO","OEEOOE"],["EOOOEE","OEEEOO"],["EOEOEO","OEOEOE"],["EOEOOE","OEOEEO"],["EOOEOE","OEEOEO"]],l=function(t){function e(t,n){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var r=f(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,n));if(r.isValid=!1,-1!==t.search(/^[0-9]{6}$/))r.middleDigits=t,r.upcA=p(t,"0"),r.text=n.text||""+r.upcA[0]+t+r.upcA[r.upcA.length-1],r.isValid=!0;else{if(-1===t.search(/^[01][0-9]{7}$/))return f(r);if(r.middleDigits=t.substring(1,t.length-1),r.upcA=p(r.middleDigits,t[0]),r.upcA[r.upcA.length-1]!==t[t.length-1])return f(r);r.isValid=!0}return r.displayValue=n.displayValue,n.fontSize>10*n.width?r.fontSize=10*n.width:r.fontSize=n.fontSize,r.guardHeight=n.height+r.fontSize/2+n.textMargin,r}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),r(e,[{key:"valid",value:function(){return this.isValid}},{key:"encode",value:function(){return this.options.flat?this.flatEncoding():this.guardedEncoding()}},{key:"flatEncoding",value:function(){var t="";return t+="101",t+=this.encodeMiddleDigits(),{data:t+="010101",text:this.text}}},{key:"guardedEncoding",value:function(){var t=[];return this.displayValue&&t.push({data:"00000000",text:this.text[0],options:{textAlign:"left",
fontSize:this.fontSize}}),t.push({data:"101",options:{height:this.guardHeight}}),t.push({data:this.encodeMiddleDigits(),text:this.text.substring(1,7),options:{fontSize:this.fontSize}}),t.push({data:"010101",options:{height:this.guardHeight}}),this.displayValue&&t.push({data:"00000000",text:this.text[7],options:{textAlign:"right",fontSize:this.fontSize}}),t}},{key:"encodeMiddleDigits",value:function(){var t=this.upcA[0],e=this.upcA[this.upcA.length-1],n=s[parseInt(e)][parseInt(t)];return(0,o.default)(this.middleDigits,n)}}]),e}(i.default);function p(t,e){for(var n=parseInt(t[t.length-1]),r=c[n],o="",i=0,u=0;u<r.length;u++){var f=r[u];o+="X"===f?t[i++]:f}return""+(o=""+e+o)+(0,a.checksum)(o)}e.default=l},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ITF14=e.ITF=void 0;var r=i(n(10)),o=i(n(32));function i(t){return t&&t.__esModule?t:{default:t}}e.ITF=r.default,e.ITF14=o.default},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.START_BIN="1010",e.END_BIN="11101",e.BINARIES=["00110","10001","01001","11000","00101","10100","01100","00011","10010","01010"]},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,o=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),i=n(10),a=(r=i)&&r.__esModule?r:{default:r};var u=function(t){var e=t.substr(0,13).split("").map((function(t){return parseInt(t,10)})).reduce((function(t,e,n){return t+e*(3-n%2*2)}),0);return 10*Math.ceil(e/10)-e},f=function(t){function e(t,n){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),-1!==t.search(/^[0-9]{13}$/)&&(t+=u(t)),function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,n))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),o(e,[{key:"valid",value:function(){return-1!==this.data.search(/^[0-9]{14}$/)&&+this.data[13]===u(this.data)}}]),e}(a.default);e.default=f},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.MSI1110=e.MSI1010=e.MSI11=e.MSI10=e.MSI=void 0;var r=f(n(4)),o=f(n(34)),i=f(n(35)),a=f(n(36)),u=f(n(37));function f(t){return t&&t.__esModule?t:{default:t}}e.MSI=r.default,e.MSI10=o.default,e.MSI11=i.default,e.MSI1010=a.default,e.MSI1110=u.default},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,o=n(4),i=(r=o)&&r.__esModule?r:{default:r},a=n(6);var u=function(t){function e(t,n){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t+(0,a.mod10)(t),n))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e}(i.default);e.default=u},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,o=n(4),i=(r=o)&&r.__esModule?r:{default:r},a=n(6);var u=function(t){function e(t,n){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t+(0,a.mod11)(t),n))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e}(i.default);e.default=u},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,o=n(4),i=(r=o)&&r.__esModule?r:{default:r},a=n(6);var u=function(t){function e(t,n){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),t+=(0,a.mod10)(t),t+=(0,a.mod10)(t),function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,n))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e}(i.default);e.default=u},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,o=n(4),i=(r=o)&&r.__esModule?r:{default:r},a=n(6);var u=function(t){function e(t,n){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),t+=(0,a.mod11)(t),t+=(0,a.mod10)(t),function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,n))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e}(i.default);e.default=u},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.pharmacode=void 0;var r,o=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),i=n(0);var a=function(t){function e(t,n){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var r=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,n));return r.number=parseInt(t,10),r}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),o(e,[{key:"encode",value:function(){for(var t=this.number,e="";!isNaN(t)&&0!=t;)t%2==0?(e="11100"+e,t=(t-2)/2):(e="100"+e,t=(t-1)/2);return{data:e=e.slice(0,-2),text:this.text}}},{key:"valid",value:function(){return this.number>=3&&this.number<=131070}}]),e}(((r=i)&&r.__esModule?r:{default:r}).default);e.pharmacode=a},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.codabar=void 0;var r,o=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),i=n(0);var a=function(t){function e(t,n){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),0===t.search(/^[0-9\-\$\:\.\+\/]+$/)&&(t="A"+t+"A");var r=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t.toUpperCase(),n));return r.text=r.options.text||r.text.replace(/[A-D]/g,""),r}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),o(e,[{key:"valid",value:function(){return-1!==this.data.search(/^[A-D][0-9\-\$\:\.\+\/]+[A-D]$/)}},{key:"encode",value:function(){for(var t=[],e=this.getEncodings(),n=0;n<this.data.length;n++)t.push(e[this.data.charAt(n)]),n!==this.data.length-1&&t.push("0");return{text:this.text,data:t.join("")}}},{key:"getEncodings",value:function(){return{0:"101010011",1:"101011001",2:"101001011",3:"110010101",4:"101101001",5:"110101001",6:"100101011",7:"100101101",8:"100110101",9:"110100101","-":"101001101",$:"101100101",":":"1101011011","/":"1101101011",".":"1101101101","+":"1011011011",A:"1011001001",B:"1001001011",C:"1010010011",D:"1010011001"}}}]),e}(((r=i)&&r.__esModule?r:{default:r}).default);e.codabar=a},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.GenericBarcode=void 0;var r,o=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&
t(e,r),e}}(),i=n(0);var a=function(t){function e(t,n){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,n))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),o(e,[{key:"encode",value:function(){return{data:"10101010101010101010101010101010101010101",text:this.text}}},{key:"valid",value:function(){return!0}}]),e}(((r=i)&&r.__esModule?r:{default:r}).default);e.GenericBarcode=a},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){var e=[];return function t(n){if(Array.isArray(n))for(var r=0;r<n.length;r++)t(n[r]);else n.text=n.text||"",n.data=n.data||"",e.push(n)}(t),e}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){return t.marginTop=t.marginTop||t.margin,t.marginBottom=t.marginBottom||t.margin,t.marginRight=t.marginRight||t.margin,t.marginLeft=t.marginLeft||t.margin,t}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},o=u(n(44)),i=u(n(45)),a=n(14);function u(t){return t&&t.__esModule?t:{default:t}}function f(t){if("string"==typeof t)return function(t){var e=document.querySelectorAll(t);if(0===e.length)return;for(var n=[],r=0;r<e.length;r++)n.push(f(e[r]));return n}(t);if(Array.isArray(t)){for(var e=[],n=0;n<t.length;n++)e.push(f(t[n]));return e}if("undefined"!=typeof HTMLCanvasElement&&t instanceof HTMLImageElement)return u=t,{element:c=document.createElement("canvas"),options:(0,o.default)(u),renderer:i.default.CanvasRenderer,afterRender:function(){u.setAttribute("src",c.toDataURL())}};if(t&&t.nodeName&&"svg"===t.nodeName.toLowerCase()||"undefined"!=typeof SVGElement&&t instanceof SVGElement)return{element:t,options:(0,o.default)(t),renderer:i.default.SVGRenderer};if("undefined"!=typeof HTMLCanvasElement&&t instanceof HTMLCanvasElement)return{element:t,options:(0,o.default)(t),renderer:i.default.CanvasRenderer};if(t&&t.getContext)return{element:t,renderer:i.default.CanvasRenderer};if(t&&"object"===(void 0===t?"undefined":r(t))&&!t.nodeName)return{element:t,renderer:i.default.ObjectRenderer};throw new a.InvalidElementException;var u,c}e.default=f},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=i(n(11)),o=i(n(12));function i(t){return t&&t.__esModule?t:{default:t}}e.default=function(t){var e={};for(var n in o.default)o.default.hasOwnProperty(n)&&(t.hasAttribute("jsbarcode-"+n.toLowerCase())&&(e[n]=t.getAttribute("jsbarcode-"+n.toLowerCase())),t.hasAttribute("data-"+n.toLowerCase())&&(e[n]=t.getAttribute("data-"+n.toLowerCase())));return e.value=t.getAttribute("jsbarcode-value")||t.getAttribute("data-value"),e=(0,r.default)(e)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=a(n(46)),o=a(n(47)),i=a(n(48));function a(t){return t&&t.__esModule?t:{default:t}}e.default={CanvasRenderer:r.default,SVGRenderer:o.default,ObjectRenderer:i.default}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,o=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),i=n(7),a=(r=i)&&r.__esModule?r:{default:r},u=n(13);var f=function(){function t(e,n,r){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.canvas=e,this.encodings=n,this.options=r}return o(t,[{key:"render",value:function(){if(!this.canvas.getContext)throw new Error("The browser does not support canvas.");this.prepareCanvas();for(var t=0;t<this.encodings.length;t++){var e=(0,a.default)(this.options,this.encodings[t].options);this.drawCanvasBarcode(e,this.encodings[t]),this.drawCanvasText(e,this.encodings[t]),this.moveCanvasDrawing(this.encodings[t])}this.restoreCanvas()}},{key:"prepareCanvas",value:function(){var t=this.canvas.getContext("2d");t.save(),(0,u.calculateEncodingAttributes)(this.encodings,this.options,t);var e=(0,u.getTotalWidthOfEncodings)(this.encodings),n=(0,u.getMaximumHeightOfEncodings)(this.encodings);this.canvas.width=e+this.options.marginLeft+this.options.marginRight,this.canvas.height=n,t.clearRect(0,0,this.canvas.width,this.canvas.height),this.options.background&&(t.fillStyle=this.options.background,t.fillRect(0,0,this.canvas.width,this.canvas.height)),t.translate(this.options.marginLeft,0)}},{key:"drawCanvasBarcode",value:function(t,e){var n,r=this.canvas.getContext("2d"),o=e.data;n="top"==t.textPosition?t.marginTop+t.fontSize+t.textMargin:t.marginTop,r.fillStyle=t.lineColor;for(var i=0;i<o.length;i++){var a=i*t.width+e.barcodePadding;"1"===o[i]?r.fillRect(a,n,t.width,t.height):o[i]&&r.fillRect(a,n,t.width,t.height*o[i])}}},{key:"drawCanvasText",value:function(t,e){var n,r,o=this.canvas.getContext("2d"),i=t.fontOptions+" "+t.fontSize+"px "+t.font;t.displayValue&&(r="top"==t.textPosition?t.marginTop+t.fontSize-t.textMargin:t.height+t.textMargin+t.marginTop+t.fontSize,o.font=i,"left"==t.textAlign||e.barcodePadding>0?(n=0,o.textAlign="left"):"right"==t.textAlign?(n=e.width-1,o.textAlign="right"):(n=e.width/2,o.textAlign="center"),o.fillText(e.text,n,r))}},{key:"moveCanvasDrawing",value:function(t){this.canvas.getContext("2d").translate(t.width,0)}},{key:"restoreCanvas",value:function(){this.canvas.getContext("2d").restore()}}]),t}();e.default=f},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,o=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),i=n(7),a=(r=i)&&r.__esModule?r:{default:r},u=n(13);var f="http://www.w3.org/2000/svg",c=function(){function t(e,n,r){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.svg=e,this.encodings=n,this.options=r,this.document=r.xmlDocument||document}return o(t,[{key:"render",value:function(){var t=this.options.marginLeft;this.prepareSVG();for(var e=0;e<this.encodings.length;e++){var n=this.encodings[e],r=(0,a.default)(this.options,n.options),o=this.createGroup(t,r.marginTop,this.svg);this.setGroupOptions(o,r),this.drawSvgBarcode(o,r,n),this.drawSVGText(o,r,n),t+=n.width}}},{key:"prepareSVG",value:function(){for(;this.svg.firstChild;)this.svg.removeChild(this.svg.firstChild);(0,u.calculateEncodingAttributes)(this.encodings,this.options);var t=(0,u.getTotalWidthOfEncodings)(this.encodings),e=(0,u.getMaximumHeightOfEncodings)(this.encodings),n=t+this.options.marginLeft+this.options.marginRight;this.setSvgAttributes(n,e),this.options.background&&this.drawRect(0,0,n,e,this.svg).setAttribute("style","fill:"+this.options.background+";")}},{key:"drawSvgBarcode",value:function(t,e,n){var r,o=n.data;r="top"==e.textPosition?e.fontSize+e.textMargin:0;for(var i=0,a=0,u=0;u<o.length;u++)a=u*e.width+n.barcodePadding,"1"===o[u]?i++:i>0&&(this.drawRect(a-e.width*i,r,e.width*i,e.height,t),i=0);i>0&&this.drawRect(a-e.width*(i-1),r,e.width*i,e.height,t)}},{key:"drawSVGText",value:function(t,e,n){var r,o,i=this.document.createElementNS(f,"text");e.displayValue&&(i.setAttribute("style","font:"+e.fontOptions+" "+e.fontSize+"px "+e.font),o="top"==e.textPosition?e.fontSize-e.textMargin:e.height+e.textMargin+e.fontSize,"left"==e.textAlign||n.barcodePadding>0?(r=0,i.setAttribute("text-anchor","start")):"right"==e.textAlign?(r=n.width-1,i.setAttribute("text-anchor","end")):(r=n.width/2,i.setAttribute("text-anchor","middle")),i.setAttribute("x",r),i.setAttribute("y",o),i.appendChild(this.document.createTextNode(n.text)),t.appendChild(i))}},{key:"setSvgAttributes",value:function(t,e){var n=this.svg;n.setAttribute("width",t+"px"),n.setAttribute("height",e+"px"),n.setAttribute("x","0px"),n.setAttribute("y","0px"),n.setAttribute("viewBox","0 0 "+t+" "+e),n.setAttribute("xmlns",f),n.setAttribute("version","1.1"),n.setAttribute("style","transform: translate(0,0)")}},{key:"createGroup",value:function(t,e,n){var r=this.document.createElementNS(f,"g");return r.setAttribute("transform","translate("+t+", "+e+")"),n.appendChild(r),r}},{key:"setGroupOptions",value:function(t,e){t.setAttribute("style","fill:"+e.lineColor+";")}},{key:"drawRect",value:function(t,e,n,r,o){var i=this.document.createElementNS(f,"rect");return i.setAttribute("x",t),i.setAttribute("y",e),i.setAttribute("width",n),i.setAttribute("height",r),o.appendChild(i),i}}]),t}();e.default=c},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}();var o=function(){function t(e,n,r){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.object=e,this.encodings=n,this.options=r}return r(t,[{key:"render",value:function(){this.object.encodings=this.encodings}}]),t}();e.default=o},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){
for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}();var o=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.api=e}return r(t,[{key:"handleCatch",value:function(t){if("InvalidInputException"!==t.name)throw t;if(this.api._options.valid===this.api._defaults.valid)throw t.message;this.api._options.valid(!1),this.api.render=function(){}}},{key:"wrapBarcodeCall",value:function(t){try{var e=t.apply(void 0,arguments);return this.api._options.valid(!0),e}catch(t){return this.handleCatch(t),this.api}}}]),t}();e.default=o}]);
// End of JsBarcode library code
(function() {
'use strict';
// Create a global namespace for inter-IIFE communication
window.enhancedGrid = window.enhancedGrid || {};
// --- Global Constants ---
const GRID_WIDTH = '54vw';
const RESIZED_FLAG = 'data-ag-resized';
const INTERVAL = 300; // Main update interval
const CLICKED_ROW_EXPIRY_PREFIX = 'clicked_row_expiry_';
const CLICK_DURATION_MS = 60 * 1000;
// --- Utility Functions ---
const debounce = (func, wait) => {
let timeout;
return function executedFunction(...args) {
const later = () => {
clearTimeout(timeout);
func(...args);
};
clearTimeout(timeout);
timeout = setTimeout(later, wait);
};
};
// --- MRN Collection & Display Functions (Corrected for Female Patient Layout) ---
function extractMrnsFromContainer(profileContainer) {
const mrns = {};
// Case 1: First, check for the highly specific "Baby/Mother" layout with a '.mid2' container.
const mid2Container = profileContainer.querySelector('.mid2');
if (mid2Container) {
const primaryMrnEl = mid2Container.querySelector('span.content[placement="left"]');
const secondaryMrnEl = mid2Container.querySelector('span.content[placement="right"]');
if (primaryMrnEl && secondaryMrnEl) {
const babyMrn = primaryMrnEl.textContent.trim();
const motherMrn = secondaryMrnEl.textContent.replace(/[\/ ]/g, '').trim();
return ` Baby's MRN: ${babyMrn} | Mother's MRN: ${motherMrn}`;
}
}
// Case 2: If not the above, use a general approach for all other patient types.
// It looks for any '.mid' div inside the profile and checks if it contains an MRN.
const midDivs = profileContainer.querySelectorAll('.mid');
midDivs.forEach(div => {
const labelEl = div.querySelector('h6');
const valueEl = div.querySelector('span');
if (labelEl && valueEl) {
const label = labelEl.textContent.trim().toUpperCase();
const value = valueEl.textContent.trim();
if (label.includes('MRN')) {
// This handles C.MRN, H.MRN, B.MRN etc.
// We only assign the patient MRN once to avoid duplicates.
if (!mrns.patient && value) {
mrns.patient = value;
}
// Specifically look for Mother's MRN (M.MRN)
if (label.includes('M.MRN') && value) {
mrns.mother = value;
}
}
}
});
// Assemble the final display string based on what was found
if (mrns.patient && mrns.mother) {
return `Baby'MRN : ${mrns.patient} | Mother's MRN: ${mrns.mother}`;
}
if (mrns.patient) {
return `MRN: ${mrns.patient}`;
}
return null; // Return null if no MRN was found
}
function displayMrn() {
const box = document.getElementById('barcode-display-box');
if (!box) {
return; // Exit if the barcode box isn't on the page
}
const profileContainer = document.querySelector('.patient-profile');
if (!profileContainer) {
return; // Exit if the profile banner isn't loaded yet
}
const mrnString = extractMrnsFromContainer(profileContainer);
let mrnElement = document.getElementById('mrn-display');
if (mrnString) {
if (!mrnElement) {
mrnElement = document.createElement('div');
mrnElement.id = 'mrn-display';
box.appendChild(mrnElement);
}
if (mrnElement.textContent !== mrnString) {
mrnElement.textContent = mrnString;
}
} else if (mrnElement) {
mrnElement.remove(); // Clean up if no MRN is found but the element exists
}
}
// --- Inject CSS Styles ---
GM_addStyle(`
/* --- LOCAL FONT AWESOME DEFINITION --- */
@font-face {
font-family: 'FontAwesome';
font-style: normal;
font-weight: 900;
font-display: block;
src: url(https://his.kaauh.org/lab/fontawesome-webfont.af7ae505a9eed503f8b8.woff2?v=4.7.0) format('woff2');
}
.fa, .fas {
font-family: 'FontAwesome';
font-weight: 900;
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
display: inline-block;
font-style: normal;
font-variant: normal;
text-rendering: auto;
line-height: 1;
}
.fa-check-circle:before { content: "\\f058"; }
.fa-star:before { content: "\\f005"; }
.fa-arrow-circle-up:before { content: "\\f0aa"; }
.fa-arrow-circle-down:before { content: "\\f0ab"; }
.fa-arrow-circle-right:before { content: "\\f0a9"; }
/* --- General Layout & Resizing --- */
.results .ag-theme-balham, .accd-details, .accd-details-table-static, .card-header {
width: ${GRID_WIDTH} !important; margin-left: auto !important; margin-right: 0 !important; box-sizing: border-box;
}
.accd-details table, .accd-details-table-static table {
width: 100% !important; table-layout: fixed !important; border-collapse: collapse !important;
}
.accd-details table th, .accd-details table td, .accd-details-table-static table th, .accd-details-table-static table td {
padding: 8px !important; word-wrap: break-word !important;
}
.results .ag-theme-balham { height: auto; }
/* --- AG-Grid Row and Cell Styles --- */
.ag-row { transition: background-color 0.3s ease; }
.ag-row.clicked-row-green .ag-cell { background-color: #A0ECA0 !important; }
/* --- MRN Display Style --- */
#mrn-display {
font-size: 20px; font-weight: bold; color: #ffffff; background-color: #000000;
padding: 4px 8px; border-radius: 4px; margin-left: 10px;
}
`);
// --- AG-Grid Column Definitions ---
const columnsToUncheck = [
'Lab Order No', 'Hospital MRN', 'DOB', 'Test ID', 'National/Iqama Id', 'Department',
'Doctor', 'Analyzer', 'Reference Lab', 'Accession No', 'Sequence No', 'Age',
'Container Type', 'Storage Condition'
];
let hasRunOnce = false;
// --- AG-Grid Row Highlight Logic ---
function handleRowClickForPersistentGreen(event) {
const cellElement = event.target.closest('.ag-cell');
if (!cellElement) return;
const rowElement = cellElement.closest('.ag-row[role="row"]');
if (!rowElement) return;
const barcodeCell = rowElement.querySelector('div[col-id="barcode"]');
if (!barcodeCell || !barcodeCell.textContent) return;
const barcode = barcodeCell.textContent.trim();
if (!barcode) return;
const expiryTimestamp = Date.now() + CLICK_DURATION_MS;
try {
localStorage.setItem(CLICKED_ROW_EXPIRY_PREFIX + barcode, expiryTimestamp.toString());
} catch (e) {
console.error("Error saving to localStorage:", e);
}
applyPersistentRowStyles();
}
function applyPersistentRowStyles() {
const rows = document.querySelectorAll('.ag-center-cols-container div[role="row"], .ag-pinned-left-cols-container div[role="row"], .ag-pinned-right-cols-container div[role="row"]');
const now = Date.now();
rows.forEach(row => {
const barcodeCell = row.querySelector('div[col-id="barcode"]');
let rowBarcode = barcodeCell?.textContent?.trim();
if (rowBarcode) {
const expiryKey = CLICKED_ROW_EXPIRY_PREFIX + rowBarcode;
const expiryTimestampStr = localStorage.getItem(expiryKey);
if (expiryTimestampStr) {
if (now < parseInt(expiryTimestampStr, 10)) row.classList.add('clicked-row-green');
else {
localStorage.removeItem(expiryKey);
row.classList.remove('clicked-row-green');
}
} else row.classList.remove('clicked-row-green');
} else row.classList.remove('clicked-row-green');
});
try {
for (let i = 0; i < localStorage.length; i++) {
const key = localStorage.key(i);
if (key?.startsWith(CLICKED_ROW_EXPIRY_PREFIX)) {
if (now >= parseInt(localStorage.getItem(key), 10)) localStorage.removeItem(key);
}
}
} catch (e) {
console.error("Error during localStorage cleanup:", e);
}
}
function setupPersistentRowStylesListener() {
const gridRoot = document.querySelector('.ag-root-wrapper');
const listenerTarget = gridRoot || document.querySelector('.ag-body-viewport') || document.body;
if (listenerTarget && !listenerTarget.dataset.persistentClickListenerAttached) {
listenerTarget.addEventListener('click', handleRowClickForPersistentGreen, true);
listenerTarget.dataset.persistentClickListenerAttached = 'true';
}
}
// --- AG-Grid Column Visibility Logic ---
function isSpecificPageForColumns() {
return window.location.href.endsWith('/#/lab-orders/lab-test-analyzer');
}
function areColumnsChecked() {
return columnsToUncheck.some(column => isColumnChecked(column));
}
function isColumnChecked(labelText) {
for (const label of document.querySelectorAll('.ag-column-tool-panel-column-label')) {
if (label.textContent.trim() === labelText && label.parentElement.querySelector('.ag-icon-checkbox-checked')) return true;
}
return false;
}
function ensureColumnsUnchecked() {
if (hasRunOnce || !isSpecificPageForColumns() || !areColumnsChecked()) return;
hasRunOnce = true;
setTimeout(() => columnsToUncheck.forEach(clickColumnLabel), 1000);
}
function ensureOtherColumnsChecked() {
if (!isSpecificPageForColumns()) return;
document.querySelectorAll('.ag-column-tool-panel-column-label').forEach(label => {
if (!columnsToUncheck.includes(label.textContent.trim()) && label.parentElement.querySelector('.ag-icon-checkbox-unchecked')) label.click();
});
}
function clickColumnLabel(labelText) {
if (!isSpecificPageForColumns()) return;
document.querySelectorAll('.ag-column-tool-panel-column-label').forEach(label => {
if (label.textContent.trim() === labelText && label.parentElement.querySelector('.ag-icon-checkbox-checked')) label.click();
});
}
function initColumnToggle() {
if (!isSpecificPageForColumns()) return;
let attempts = 0;
const interval = setInterval(() => {
if (document.querySelector('.ag-side-buttons') || ++attempts > 10) {
if (document.querySelector('.ag-side-buttons')) {
ensureColumnsUnchecked();
ensureOtherColumnsChecked();
}
clearInterval(interval);
}
}, 500);
}
// --- Layout and Main Update Orchestration ---
const performLayoutAdjustments = () => {
const actionButtonContainer = document.querySelector('div.lo-act-btn');
if (actionButtonContainer && actionButtonContainer.parentElement) {
actionButtonContainer.parentElement.removeAttribute('style');
}
document.querySelectorAll('ag-grid-angular').forEach(grid => {
if (grid.getAttribute(RESIZED_FLAG)) return;
const api = grid.agGrid?.api || grid.__agGridComp?.api;
if (api && typeof api.sizeColumnsToFit === 'function') {
grid.style.width = GRID_WIDTH;
grid.style.marginLeft = 'auto';
grid.style.marginRight = '0';
api.sizeColumnsToFit();
grid.setAttribute(RESIZED_FLAG, 'true');
}
});
document.querySelectorAll('div.accd-details-table-static.test-open, .card-header').forEach(el => {
el.style.width = GRID_WIDTH;
el.style.marginLeft = 'auto';
el.style.marginRight = '0';
});
document.querySelectorAll('h6[translateid="test-results.Results"]').forEach(el => el.remove());
};
const fullPageUpdate = debounce(() => {
performLayoutAdjustments();
applyPersistentRowStyles();
setupPersistentRowStylesListener();
displayMrn(); // Continuously try to display the MRN
if (window.enhancedGrid && typeof window.enhancedGrid.triggerSummaryUpdate === 'function') {
window.enhancedGrid.triggerSummaryUpdate();
}
if (isSpecificPageForColumns()) {
hasRunOnce = false;
initColumnToggle();
}
}, 100);
// --- Feature: Barcode Display Box ---
(function() {
const BARCODE_KEY = 'selectedBarcode';
let currentUrl = location.href;
// MODIFIED: This function is now simplified. It no longer creates a <script> tag.
// It assumes JsBarcode is already available in the `window` scope from the embedded library.
function loadJsBarcode(callback) {
if (window.JsBarcode) {
callback();
} else {
console.error("Unified Lab Assistant: Embedded JsBarcode library not found!");
}
}
function insertBarcodeBox(barcode) {
let insertionTarget = document.querySelector('.btn-area.stickey-btnset') || document.querySelector('.test-open.mt-2');
if (!barcode || !insertionTarget || document.getElementById('barcode-display-box')) return;
const box = document.createElement('div');
box.id = 'barcode-display-box';
box.style.cssText = 'padding:8px 12px;background:#f7f7f7;border-radius:8px;display:flex;align-items:center;gap:10px;border:1px solid #ccc;';
const label = document.createElement('div');
label.textContent = 'Sample Barcode:';
label.style.cssText = 'font-weight:bold;font-size:14px;color:#333;';
const text = document.createElement('div');
text.textContent = barcode;
text.style.cssText = 'font-size: 20px; color: #444; font-weight: bold;';
const svg = document.createElementNS("http://www.w3.org/2000/svg", "svg");
svg.id = "barcode-svg";
svg.style.cssText = 'height:40px;width:120px;border:1px solid #ccc;border-radius:4px;padding:2px;';
box.append(label, text, svg);
insertionTarget.insertAdjacentElement('afterend', box);
try {
const buttonBarStyles = window.getComputedStyle(insertionTarget);
if (buttonBarStyles.position === 'sticky' || buttonBarStyles.position === 'fixed') {
const buttonBarHeight = insertionTarget.offsetHeight;
const buttonBarTop = parseInt(buttonBarStyles.top, 10) || 0;
const desiredTopForBarcode = buttonBarTop + buttonBarHeight + 5;
Object.assign(box.style, {
position: 'sticky',
top: `${desiredTopForBarcode}px`,
zIndex: '99',
boxShadow: '0 3px 5px rgba(0,0,0,0.08)',
});
} else box.style.marginTop = '10px';
} catch (e) {
console.error("Enhanced AG Grid: Error applying sticky style to barcode box.", e);
box.style.marginTop = '10px';
}
loadJsBarcode(() => {
try {
JsBarcode(svg, barcode, {
format: "CODE128",
displayValue: false,
height: 40,
width: 2,
margin: 0
});
} catch (err) {
console.warn('Barcode render error:', err);
svg.outerHTML = "<span>Invalid Barcode</span>";
}
});
// Attempt to display MRN immediately after box creation
displayMrn();
}
function watchGridClicksForBarcodeBox() {
document.body.addEventListener('click', e => {
const cell = e.target.closest('.ag-row')?.querySelector('[col-id="barcode"]');
if (cell?.textContent.trim()) localStorage.setItem(BARCODE_KEY, cell.textContent.trim());
});
}
function waitAndShowBarcode() {
const barcode = localStorage.getItem(BARCODE_KEY);
const urlPattern = /\/0\/.*\/undefined$/;
if (!barcode || !urlPattern.test(location.href)) return;
const interval = setInterval(() => {
const ready = document.querySelector('.btn-area.stickey-btnset') || document.querySelector('.test-open.mt-2');
if (ready) {
clearInterval(interval);
insertBarcodeBox(barcode);
}
}, 300);
}
function observeSPA() {
const bodyObserver = new MutationObserver(() => {
if (location.href !== currentUrl) {
currentUrl = location.href;
waitAndShowBarcode();
}
});
bodyObserver.observe(document.body, {
childList: true,
subtree: true
});
}
watchGridClicksForBarcodeBox();
observeSPA();
waitAndShowBarcode();
})();
// --- Feature: Dropdown Pagination ---
(function() {
const setDropdownValue = () => {
const dropdown = document.getElementById("dropdownPaginationPageSize");
if (dropdown && dropdown.value !== "100") {
dropdown.value = "100";
dropdown.dispatchEvent(new Event('change', {
bubbles: true
}));
}
};
new MutationObserver(setDropdownValue).observe(document.body, {
childList: true,
subtree: true
});
window.addEventListener('load', setDropdownValue);
})();
// --- Feature: Unified Test Summary Table ---
(function() {
GM_addStyle(`
#test-summary-container {
width: 40%; float: left; margin: 25px 10px 10px 0;
background-color: #fff; border: 1px solid #ddd; border-radius: 6px;
box-shadow: 0 2px 8px rgba(0,0,0,0.08); display: flex; flex-direction: column;
}
.card-body::after { content: ""; display: table; clear: both; }
#test-summary-container .summary-content { padding: 0; position: relative; flex-grow: 1; }
.summary-header {
font-weight: 500; font-size: 12px; padding: 8px 10px;
border-bottom: 1px solid #e0e0e0; display: flex; align-items: center; gap: 10px;
color: #000000; cursor: pointer; user-select: none; flex-shrink: 0;
}
.summary-header > span {
flex-grow: 1;
}
.summary-status-icon {
margin-left: auto;
margin-right: 5px;
font-size: 1.2em;
}
.summary-header i.vicon.fa-check-circle { color: #28a745; }
.summary-header i.vicon.fa-star { color: #6c757d; }
.summary-header i.vicon.fa-arrow-circle-up.ord { color: #17a2b8; }
.summary-header i.vicon.fa-arrow-circle-up:not(.ord) { color: #007bff; }
.collapse-icon {
transition: color 0.2s ease-in-out;
color: #28a745;
}
.collapse-icon.collapsed {
color: #dc3545;
}
.no-tests { padding: 20px; color: #6c757d; text-align: center; }
.hidden-note { color: #dc3545; font-style: italic; }
.test-list-container { display: contents; }
.hidden-note-container { display: none; }
#test-summary-container .summary-content.collapsed { display: none; }
#test-summary-container .summary-content.collapsed .test-list-container { display: none; }
#test-summary-container .summary-content.collapsed .hidden-note-container { display: block; }
.summary-grid-container {
display: grid;
grid-template-columns: 1fr minmax(80px, auto) min-content minmax(80px, auto) min-content;
align-items: start;
}
.summary-grid-header { display: contents; font-weight: bold; }
.summary-grid-header > div {
background-color: #f0f0f0; padding: 6px 15px; border-bottom: 1px solid #e0e0e0;
white-space: nowrap; color: #555; font-size: 12px;
position: sticky; top: 0; z-index: 1;
}
.summary-grid-header > div.test-name-header { text-align: left; }
.summary-grid-header > div.test-value-header { text-align: right; }
.summary-grid-header > div.range-header { text-align: left; }
.summary-grid-header > div.uom-header { text-align: left; }
.summary-grid-header > div.flag-header { text-align: center; }
.test-item { display: contents; }
.grid-cell {
padding: 0px 15px; border-bottom: 1px solid #c4c2c2; font-size: 13px;
display: flex; align-items: center; min-height: 28px;
overflow: hidden; text-overflow: ellipsis;
}
.test-item:last-of-type > .grid-cell { border-bottom: none; }
.grid-cell.test-details { gap: 8px; }
.grid-cell.pending-value { justify-content: right; color: #999; }
.test-name { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.test-icon { color: #28a745; }
.test-bullet { color: #0056b3; }
.test-value {
font-weight: bold; color: #000000; border-radius: 0px;
font-size: 16px; text-align: right; padding: 2px 4px;
justify-content: flex-end; width: 100%;
}
.test-value.highlight-H { background-color: #ffe0e0 !important; }
.test-value.highlight-L { background-color: #e0f2f7 !important; }
.test-uom { font-size: 12px; color: #555; }
.grid-cell.flag-cell { justify-content: center; }
.flag {
font-weight: bold; border-radius: 50%; width: 16px; height: 16px;
display: inline-flex; align-items: center; justify-content: center;
font-size: 11px; color: white; flex-shrink: 0;
}
.flag-placeholder { width: 16px; height: 16px; visibility: hidden; flex-shrink: 0; }
.flag-H { background-color: #d32f2f !important; }
.flag-L { background-color: #1976d2 !important; }
.summary-footer {
display: flex; justify-content: space-between; align-items: center; background: #f8f9fa;
border-top: 1px solid #e0e0e0; padding: 10px 15px; font-size: 12px; color: #6c757d;
flex-shrink: 0;
}
`);
const CONFIG = {
COLUMN_PATTERNS: {
TEST_DESC: ['testdesc', 'testdescription', 'name'],
STATUS: ['resultstatus', 'teststatus', 'status', 'state'],
RESULT_VALUE: ['testresult'],
UOM: ['uom', 'uomvalue'],
REFERENCE_RANGE: ['referencerange', 'range']
},
STATUS_PROPERTIES: {
resulted: {
color: '#ffca77',
className: 'fa fa-check-circle vicon'
},
ordered: {
color: '#E0E0E0',
className: 'fa fa-star vicon'
},
verifiedlevel1: {
color: '#90EE90',
className: 'fa fa-arrow-circle-up ord vicon'
},
verifiedlevel2: {
color: '#28a745',
className: 'fa fa-arrow-circle-up vicon'
},
default: {
color: '#E0E0E0',
className: null
}
}
};
const collapseState = {};
const testSortOrder = [
'sodium (na)', 'potassium', 'chloride', 'urea (bun)', 'creatinine', 'calcium',
'phosphate (phos)', 'magnesium (mg)', 'alkaline phosphatase (alpi)',
'Alanine Amino Transferase (ALTI)', 'Aspartate Amino Transferase(AST)',
'total protein (tp)', 'albumin (alb)', 'Bilirubin - Total (TBIL)',
'Bilirubin - Direct (DBIL)', 'cholesterol', 'triglycerides',
'high density lipoprotein - hdl', 'low density lipoprotein - ldl',
'creatine kinase (ck)', 'lactate dehydrogenase (ldh)', 'troponin -i (ctn-1)',
'haemoglobin a1c (hba1c)', 'tsh (thyroid stimulating hormone)-tft', 'uric acid',
'mid stream urine'
];
function getSortIndex(testName) {
const lowerTestName = testName.toLowerCase();
const index = testSortOrder.findIndex(sortedName => lowerTestName.includes(sortedName.toLowerCase()));
return index === -1 ? Infinity : index;
}
const findCellByPatterns = (row, patterns) => {
for (const cell of row.querySelectorAll('[col-id]')) {
const colId = cell.getAttribute('col-id')?.toLowerCase();
if (colId && patterns.includes(colId)) return cell;
}
return null;
};
const parseRangeAndCompare = (rangeStr, value) => {
if (!rangeStr || value === null || isNaN(parseFloat(value))) return null;
const numVal = parseFloat(value);
const stdRange = rangeStr.match(/(\d+\.?\d*)\s*-\s*(\d+\.?\d*)/);
if (stdRange) {
const lower = parseFloat(stdRange[1]);
const upper = parseFloat(stdRange[2]);
if (numVal < lower) return 'L';
if (numVal > upper) return 'H';
}
const ltRange = rangeStr.match(/(?:<|Less than)\s*(\d+\.?\d*)/i);
if (ltRange) {
if (numVal >= parseFloat(ltRange[1])) return 'H';
}
const gtRange = rangeStr.match(/(?:>|Greater than)\s*(\d+\.?\d*)/i);
if (gtRange) {
if (numVal <= parseFloat(gtRange[1])) return 'L';
}
return null;
};
const capitalize = (s) => {
if (typeof s !== 'string' || s.length === 0) return '';
const spaced = s.replace(/([A-Z])|([0-9]+)/g, ' $1$2').trim();
return spaced.charAt(0).toUpperCase() + spaced.slice(1);
};
const getNormalizedStatusKey = (status) => {
const normalized = status.toLowerCase().replace(/\s+/g, '');
if (normalized.includes('verified') && normalized.includes('1')) return 'verifiedlevel1';
if (normalized.includes('verified') && normalized.includes('2')) return 'verifiedlevel2';
if (normalized === 'resulted') return 'resulted';
if (normalized === 'ordered') return 'ordered';
return 'default';
};
function getAllTests() {
const testsByStatus = {};
const leftRows = document.querySelectorAll('.ag-pinned-left-cols-container .ag-row');
const centerRows = document.querySelectorAll('.ag-center-cols-container .ag-row');
const rightRows = document.querySelectorAll('.ag-pinned-right-cols-container .ag-row');
const combinedRows = [];
for (let i = 0; i < centerRows.length; i++) {
const combined = document.createElement('div');
[leftRows[i], centerRows[i], rightRows[i]].forEach(p => {
if (p) p.querySelectorAll('[col-id]').forEach(c => combined.appendChild(c.cloneNode(true)));
});
combinedRows.push(combined);
}
const uniqueTests = new Map();
for (const [index, combined] of combinedRows.entries()) {
const nameCell = findCellByPatterns(combined, CONFIG.COLUMN_PATTERNS.TEST_DESC);
const testName = nameCell?.textContent?.trim();
if (!testName) continue;
const statusCell = findCellByPatterns(combined, CONFIG.COLUMN_PATTERNS.STATUS);
const status = statusCell?.textContent?.trim().toLowerCase() || 'unknown';
let data = {
name: testName,
status: status,
value: null,
uom: null,
range: null,
flag: null,
originalIndex: index
};
const valCell = findCellByPatterns(combined, CONFIG.COLUMN_PATTERNS.RESULT_VALUE);
const rangeCell = findCellByPatterns(combined, CONFIG.COLUMN_PATTERNS.REFERENCE_RANGE);
const uomCell = findCellByPatterns(combined, CONFIG.COLUMN_PATTERNS.UOM);
data.value = valCell?.textContent?.trim() || null;
data.range = rangeCell?.textContent?.trim() || null;
data.uom = uomCell?.textContent?.trim() || null;
data.flag = parseRangeAndCompare(data.range, data.value);
uniqueTests.set(testName, data);
}
uniqueTests.forEach(data => {
if (!testsByStatus[data.status]) testsByStatus[data.status] = [];
testsByStatus[data.status].push(data);
});
return testsByStatus;
}
const renderList = (list) => {
if (list.length === 0) return `<div class="no-tests" style="grid-column: 1 / -1;">No tests in this category.</div>`;
const headerHtml = `
<div class="summary-grid-header">
<div class="test-name-header">Test Name</div>
<div class="test-value-header">Result</div>
<div class="uom-header">UOM</div>
<div class="range-header">Ref Range</div>
<div class="flag-header">H/L</div>
</div>`;
const itemsHtml = list.map(t => {
let iconHtml;
if (t.status.includes('result')) {
iconHtml = `<span class="test-icon">✅</span>`;
} else if (t.status.includes('verif')) {
iconHtml = `<span class="test-icon">✓</span>`;
} else {
iconHtml = `<span class="test-bullet">⏳</span>`;
}
const resultCellHtml = (t.value !== null && t.value !== undefined) ? `<div class="grid-cell test-value ${t.flag ? 'highlight-' + t.flag : ''}">${t.value}</div>` : `<div class="grid-cell pending-value">${capitalize(t.status)}</div>`;
return `
<div class="test-item" title="${t.name} (${capitalize(t.status)})">
<div class="grid-cell test-details">${iconHtml}<span class="test-name">${t.name}</span></div>
${resultCellHtml}
<div class="grid-cell test-uom">${t.uom || '-'}</div>
<div class="grid-cell test-range">${t.range || '-'}</div>
<div class="grid-cell flag-cell"><span class="flag ${t.flag ? 'flag-' + t.flag : 'flag-placeholder'}">${t.flag || ''}</span></div>
</div>`;
}).join('');
return headerHtml + itemsHtml;
};
function updateSummaryContent(containerEl) {
if (!containerEl) return;
const testsByStatus = getAllTests();
const statusOrder = ['resulted', 'ordered', 'verifiedlevel1', 'verifiedlevel2'];
const sortedStatuses = Object.keys(testsByStatus).sort((a, b) => {
const keyA = getNormalizedStatusKey(a);
const keyB = getNormalizedStatusKey(b);
const indexA = statusOrder.indexOf(keyA);
const indexB = statusOrder.indexOf(keyB);
if (indexA === -1 && indexB === -1) return a.localeCompare(b);
if (indexA === -1) return 1;
if (indexB === -1) return -1;
return indexA - indexB;
});
let contentHtml = '';
let totalTests = 0;
if (sortedStatuses.length === 0) {
contentHtml = `<div class="no-tests">No tests found on this page.</div>`;
} else {
sortedStatuses.forEach(status => {
const testList = testsByStatus[status];
if (testList.length === 0) return;
testList.sort((a, b) => {
const indexA = getSortIndex(a.name);
const indexB = getSortIndex(b.name);
if (indexA === indexB) {
return a.originalIndex - b.originalIndex;
}
return indexA - indexB;
});
totalTests += testList.length;
collapseState[status] = collapseState[status] ?? false;
const isCollapsed = collapseState[status];
const collapseIconClass = isCollapsed ? 'fa-arrow-circle-right' : 'fa-arrow-circle-down';
const statusDisplayName = capitalize(status);
const normalizedKey = getNormalizedStatusKey(status);
const properties = CONFIG.STATUS_PROPERTIES[normalizedKey] || CONFIG.STATUS_PROPERTIES.default;
const headerColor = properties.color;
const statusIconHtml = properties.className ? `<i class="${properties.className} summary-status-icon"></i>` : '';
contentHtml += `
<div class="summary-header" data-section="${status}" style="background-color: ${headerColor};">
<i class="fas ${collapseIconClass} collapse-icon ${isCollapsed ? 'collapsed' : ''}"></i>
<span>${statusDisplayName} (${testList.length})</span>
${statusIconHtml}
</div>
<div id="${status.replace(/\s+/g, '-')}-tests-content" class="summary-content ${isCollapsed ? 'collapsed' : ''}">
<div class="summary-grid-container test-list-container">${renderList(testList)}</div>
<div class="hidden-note-container">
${testList.length > 0 ? `<div class="no-tests hidden-note">${testList.length} ${statusDisplayName} tests hidden</div>` : ''}
</div>
</div>`;
});
}
const now = new Date();
containerEl.innerHTML = contentHtml + `
<div class="summary-footer">
<span>Total Tests: ${totalTests}</span>
<span>Updated: ${now.toLocaleDateString([], {month: 'short', day: 'numeric'})} ${now.toLocaleTimeString([], { hour: '2-digit', minute:'2-digit' })}</span>
</div>`;
}
const summaryContainer = document.createElement('div');
summaryContainer.id = 'test-summary-container';
summaryContainer.addEventListener('click', e => {
const header = e.target.closest('.summary-header');
if (!header) return;
const section = header.dataset.section;
if (section) {
collapseState[section] = !collapseState[section];
const content = document.getElementById(`${section.replace(/\s+/g, '-')}-tests-content`);
const icon = header.querySelector('.collapse-icon');
if (content && icon) {
content.classList.toggle('collapsed', collapseState[section]);
icon.classList.toggle('collapsed', collapseState[section]);
icon.classList.toggle('fa-arrow-circle-down', !collapseState[section]);
icon.classList.toggle('fa-arrow-circle-right', collapseState[section]);
}
}
});
let insertionIntervalId = null;
const isTargetPageForSummary = () => /\/0\/.*\/undefined$/.test(window.location.href);
const removeSummaryContainer = () => {
const container = document.getElementById(summaryContainer.id);
if (container) {
Object.assign(container.style, {
position: '',
top: '',
zIndex: ''
});
container.remove();
}
};
const attemptInsertion = () => {
let targetElement = document.getElementById('barcode-display-box') || document.querySelector('.test-open.mt-2');
if (!targetElement || document.getElementById(summaryContainer.id)) return false;
targetElement.insertAdjacentElement('afterend', summaryContainer);
try {
const barcodeBox = document.getElementById('barcode-display-box');
if (barcodeBox) {
const barcodeBoxStyles = window.getComputedStyle(barcodeBox);
if (barcodeBoxStyles.position === 'sticky') {
const barcodeBoxHeight = barcodeBox.offsetHeight;
const barcodeBoxTop = parseInt(barcodeBoxStyles.top, 10) || 0;
const summaryTopPosition = barcodeBoxTop + barcodeBoxHeight + 10;
Object.assign(summaryContainer.style, {
position: 'sticky',
top: `${summaryTopPosition}px`,
zIndex: '98'
});
}
}
} catch (e) {
console.error("Enhanced AG Grid: Error applying sticky style to summary container.", e);
}
return true;
};
const startInsertionPolling = () => {
if (insertionIntervalId !== null) return;
insertionIntervalId = setInterval(() => {
if (attemptInsertion()) {
clearInterval(insertionIntervalId);
insertionIntervalId = null;
if (window.enhancedGrid && window.enhancedGrid.triggerSummaryUpdate) window.enhancedGrid.triggerSummaryUpdate();
}
}, 500);
};
const stopInsertionPolling = () => {
if (insertionIntervalId !== null) {
clearInterval(insertionIntervalId);
insertionIntervalId = null;
}
};
const manageSummaryTableLifecycle = () => {
if (isTargetPageForSummary()) startInsertionPolling();
else {
stopInsertionPolling();
removeSummaryContainer();
}
};
window.enhancedGrid.triggerSummaryUpdate = () => {
const container = document.getElementById(summaryContainer.id);
if (container && isTargetPageForSummary()) updateSummaryContent(container);
};
const observeSpaUrlChangesForSummary = () => {
let lastHandledUrl = location.href;
const checkUrlChange = () => {
if (location.href !== lastHandledUrl) {
lastHandledUrl = location.href;
manageSummaryTableLifecycle();
}
};
const bodyObserver = new MutationObserver(checkUrlChange);
bodyObserver.observe(document.body, {
childList: true,
subtree: true
});
};
observeSpaUrlChangesForSummary();
manageSummaryTableLifecycle();
})();
// --- Feature: Conditional Auto & Manual VERIFY2 ---
(function() {
// --- Configuration (Auto Verify) ---
const VERIFIED1_STATUS_TEXT = 'Verified 1';
const RESULTED_STATUS_TEXT = 'Resulted';
const STATUS_CELL_SELECTOR = 'div[col-id="ResultStatus"]';
const VERIFY1_BUTTON_SELECTOR = 'button.verify1-btn';
const VERIFY2_BUTTON_SELECTOR = 'button.verify2-btn';
const HISTORY_BUTTON_SELECTOR = 'button.backBtn[translateid="edit-lab-order.HistoryResults"]';
const VERIFICATION_MODAL_SELECTOR = '.modal-content';
const CHECK_INTERVAL_MS = 200;
// --- State Management (Auto Verify) ---
let isAutoVerifyEnabled = true;
let isVerificationProcessStarted = false;
let hasAutoClicked = false;
// --- Core Logic (Auto Verify) ---
function clickVerifyButton() {
const verifyButton = document.querySelector(VERIFY2_BUTTON_SELECTOR);
if (verifyButton) {
verifyButton.click();
}
}
function hasResultedStatus() {
const statusCells = document.querySelectorAll(STATUS_CELL_SELECTOR);
for (const cell of statusCells) {
if (cell.textContent && cell.textContent.trim().includes(RESULTED_STATUS_TEXT)) {
return true;
}
}
return false;
}
function hasVerified1Status() {
const statusCells = document.querySelectorAll(STATUS_CELL_SELECTOR);
for (const cell of statusCells) {
if (cell.textContent && cell.textContent.trim().includes(VERIFIED1_STATUS_TEXT)) {
return true;
}
}
return false;
}
function isModalVisible() {
const modal = document.querySelector(VERIFICATION_MODAL_SELECTOR);
if (modal) {
const modalTitle = modal.querySelector('h4.modal-title');
if (modalTitle && modalTitle.textContent.trim() === 'Primary Verification') {
return true;
}
}
return false;
}
function runSafetyChecks() {
if (isModalVisible()) return false;
if (hasResultedStatus()) return false;
return true;
}
function checkAndAutoClick() {
if (!isAutoVerifyEnabled || !isVerificationProcessStarted || hasAutoClicked) return;
if (!runSafetyChecks()) return;
if (hasVerified1Status()) {
clickVerifyButton();
hasAutoClicked = true;
}
}
// --- UI Redesign and Injection (Auto Verify) ---
function injectAutoVerifyStyles() {
const styleId = 'auto-verify-modern-styles';
if (document.getElementById(styleId)) return;
const styleSheet = document.createElement("style");
styleSheet.id = styleId;
styleSheet.innerText = `
.auto-verify-toggle {
display: inline-flex; align-items: center; gap: 12px; padding: 6px 10px;
border: 1px solid #ccc; border-radius: 20px; background-color: #f8f9fa;
cursor: pointer; transition: all 0.3s ease; user-select: none;
}
.auto-verify-toggle.is-active {
border-color: #7ab5ff; background-color: #e7f1ff; animation: pulse-glow 2s infinite;
}
.toggle-label {
font-size: 12px; font-weight: 600; color: #333;
display: flex; align-items: center; gap: 6px;
}
.toggle-switch {
position: relative; width: 40px; height: 22px;
background-color: #ccc; border-radius: 11px; transition: background-color 0.3s ease;
}
.auto-verify-toggle.is-active .toggle-switch { background-color: #007bff; }
.toggle-thumb {
position: absolute; top: 2px; left: 2px; width: 18px; height: 18px;
background-color: white; border-radius: 50%; box-shadow: 0 1px 3px rgba(0,0,0,0.2);
transition: transform 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}
.auto-verify-toggle.is-active .toggle-thumb { transform: translateX(18px); }
@keyframes pulse-glow {
0% { box-shadow: 0 0 0 0px rgba(0, 123, 255, 0.3); }
70% { box-shadow: 0 0 0 8px rgba(0, 123, 255, 0); }
100% { box-shadow: 0 0 0 0px rgba(0, 123, 255, 0); }
}
`;
document.head.appendChild(styleSheet);
}
function updateVerifyUI() {
const toggle = document.getElementById('autoVerifyToggleContainer');
if (toggle) toggle.classList.toggle('is-active', isAutoVerifyEnabled);
const verify2Button = document.querySelector(VERIFY2_BUTTON_SELECTOR);
if (verify2Button) {
if (!verify2Button.dataset.redesigned) {
verify2Button.textContent = 'VERIFY2 (F8)';
Object.assign(verify2Button.style, {
display: 'inline-flex', alignItems: 'center', justifyContent: 'center',
fontWeight: '500', transition: 'border-color 0.3s ease'
});
verify2Button.dataset.redesigned = 'true';
}
verify2Button.style.borderColor = isAutoVerifyEnabled ? '#007bff' : '';
}
}
function redesignHistoryButton() {
const historyButton = document.querySelector(HISTORY_BUTTON_SELECTOR);
if (!historyButton || historyButton.dataset.redesigned) return;
historyButton.innerHTML = `<span style="margin-right: 6px;">🕒</span> View History`;
historyButton.title = "Click to view patient's full lab history";
Object.assign(historyButton.style, {
display: 'inline-flex', alignItems: 'center', fontWeight: '500'
});
historyButton.dataset.redesigned = 'true';
}
function injectModernToggle() {
const historyButton = document.querySelector(HISTORY_BUTTON_SELECTOR);
if (!historyButton || document.getElementById('autoVerifyToggleContainer')) return;
const buttonParent = historyButton.parentElement;
const toggleContainer = document.createElement('div');
toggleContainer.id = 'autoVerifyToggleContainer';
toggleContainer.className = 'auto-verify-toggle';
toggleContainer.innerHTML = `
<span class="toggle-label">
<span style="font-size: 14px;">🤖</span>
<span>AUTO VERIFY 2</span>
</span>
<div class="toggle-switch"><div class="toggle-thumb"></div></div>
`;
toggleContainer.addEventListener('click', () => {
isAutoVerifyEnabled = !isAutoVerifyEnabled;
updateVerifyUI();
});
Object.assign(toggleContainer.style, { marginRight: '15px', verticalAlign: 'middle' });
buttonParent.insertBefore(toggleContainer, historyButton);
}
// --- Event Listeners and Initialization ---
function handleKeyPress(event) {
if (event.key === 'F8') {
event.preventDefault();
if (runSafetyChecks()) clickVerifyButton();
}
}
function handlePageClick(event) {
if (event.target.closest(VERIFY1_BUTTON_SELECTOR)) {
isVerificationProcessStarted = true;
hasAutoClicked = false;
}
}
// Expose functions to the main orchestrator
window.enhancedGrid.autoVerify = {
init: () => {
injectAutoVerifyStyles();
setInterval(checkAndAutoClick, CHECK_INTERVAL_MS);
document.addEventListener('keydown', handleKeyPress);
document.addEventListener('click', handlePageClick);
},
updateUI: updateVerifyUI,
redesignHistory: redesignHistoryButton,
injectToggle: injectModernToggle,
resetState: () => {
hasAutoClicked = false;
isVerificationProcessStarted = false;
}
};
})();
// --- Main Orchestrator ---
function runAllUpdates() {
fullPageUpdate(); // Main layout and MRN updater
if (window.enhancedGrid.autoVerify) {
window.enhancedGrid.autoVerify.injectToggle();
window.enhancedGrid.autoVerify.redesignHistory();
window.enhancedGrid.autoVerify.updateUI();
}
}
console.log('Unified Lab Assistant [v14.2.2-local] loaded.');
window.enhancedGrid.autoVerify?.init();
// Combined MutationObserver for SPA navigation
let lastUrl = location.href;
const spaObserver = new MutationObserver(() => {
if (location.href !== lastUrl) {
lastUrl = location.href;
document.querySelectorAll('ag-grid-angular').forEach(grid => grid.removeAttribute(RESIZED_FLAG));
window.enhancedGrid.autoVerify?.resetState();
console.log('[Lab Assistant] SPA Navigation Detected: Resetting states.');
}
// Use a debounce to run updates after DOM changes have settled.
debounce(runAllUpdates, 200)();
});
spaObserver.observe(document.body, {
childList: true,
subtree: true
});
// Also run updates periodically to catch elements that load without DOM mutations.
setInterval(runAllUpdates, INTERVAL);
// Initial run to place all elements
setTimeout(runAllUpdates, 500);
})();