itsm-widget 1.0.5 → 1.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
1
  /*! For license information please see itsm-widget.min.js.LICENSE.txt */
2
- !function(n,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ITSMWidget=e():n.ITSMWidget=e()}(window,()=>(()=>{"use strict";var n={72:(n,e,t)=>{var r,i=function(){return void 0===r&&(r=Boolean(window&&document&&document.all&&!window.atob)),r},o=function(){var n={};return function(e){if(void 0===n[e]){var t=document.querySelector(e);if(window.HTMLIFrameElement&&t instanceof window.HTMLIFrameElement)try{t=t.contentDocument.head}catch(n){t=null}n[e]=t}return n[e]}}(),a=[];function s(n){for(var e=-1,t=0;t<a.length;t++)if(a[t].identifier===n){e=t;break}return e}function c(n,e){for(var t={},r=[],i=0;i<n.length;i++){var o=n[i],c=e.base?o[0]+e.base:o[0],l=t[c]||0,u="".concat(c," ").concat(l);t[c]=l+1;var d=s(u),f={css:o[1],media:o[2],sourceMap:o[3]};-1!==d?(a[d].references++,a[d].updater(f)):a.push({identifier:u,updater:g(f,e),references:1}),r.push(u)}return r}function l(n){var e=document.createElement("style"),r=n.attributes||{};if(void 0===r.nonce){var i=t.nc;i&&(r.nonce=i)}if(Object.keys(r).forEach(function(n){e.setAttribute(n,r[n])}),"function"==typeof n.insert)n.insert(e);else{var a=o(n.insert||"head");if(!a)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");a.appendChild(e)}return e}var u,d=(u=[],function(n,e){return u[n]=e,u.filter(Boolean).join("\n")});function f(n,e,t,r){var i=t?"":r.media?"@media ".concat(r.media," {").concat(r.css,"}"):r.css;if(n.styleSheet)n.styleSheet.cssText=d(e,i);else{var o=document.createTextNode(i),a=n.childNodes;a[e]&&n.removeChild(a[e]),a.length?n.insertBefore(o,a[e]):n.appendChild(o)}}function m(n,e,t){var r=t.css,i=t.media,o=t.sourceMap;if(i?n.setAttribute("media",i):n.removeAttribute("media"),o&&"undefined"!=typeof btoa&&(r+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(o))))," */")),n.styleSheet)n.styleSheet.cssText=r;else{for(;n.firstChild;)n.removeChild(n.firstChild);n.appendChild(document.createTextNode(r))}}var p=null,h=0;function g(n,e){var t,r,i;if(e.singleton){var o=h++;t=p||(p=l(e)),r=f.bind(null,t,o,!1),i=f.bind(null,t,o,!0)}else t=l(e),r=m.bind(null,t,e),i=function(){!function(n){if(null===n.parentNode)return!1;n.parentNode.removeChild(n)}(t)};return r(n),function(e){if(e){if(e.css===n.css&&e.media===n.media&&e.sourceMap===n.sourceMap)return;r(n=e)}else i()}}n.exports=function(n,e){(e=e||{}).singleton||"boolean"==typeof e.singleton||(e.singleton=i());var t=c(n=n||[],e);return function(n){if(n=n||[],"[object Array]"===Object.prototype.toString.call(n)){for(var r=0;r<t.length;r++){var i=s(t[r]);a[i].references--}for(var o=c(n,e),l=0;l<t.length;l++){var u=s(t[l]);0===a[u].references&&(a[u].updater(),a.splice(u,1))}t=o}}}},314:n=>{n.exports=function(n){var e=[];return e.toString=function(){return this.map(function(e){var t=n(e);return e[2]?"@media ".concat(e[2]," {").concat(t,"}"):t}).join("")},e.i=function(n,t,r){"string"==typeof n&&(n=[[null,n,""]]);var i={};if(r)for(var o=0;o<this.length;o++){var a=this[o][0];null!=a&&(i[a]=!0)}for(var s=0;s<n.length;s++){var c=[].concat(n[s]);r&&i[c[0]]||(t&&(c[2]?c[2]="".concat(t," and ").concat(c[2]):c[2]=t),e.push(c))}},e}},322:(n,e,t)=>{t.r(e),t.d(e,{default:()=>B});var r=t(72),i=t.n(r),o=t(555),a={insert:"head",singleton:!1};i()(o.A,a);o.A.locals;var s=t(890),c=[{category:"A01A00 - Quản lý an toàn điện",subcategories:[{subcategory:"A01A01 - Hệ thống",items:["Danh sách chức năng","Danh sách đơn vị","Danh sách người dùng","Danh sách nhóm","Phân quyền"]},{subcategory:"A01A02 - Giám sát an toàn",items:["Báo cáo","Khởi tạo số phiếu","Lệnh công tác","Phiếu công tác"]},{subcategory:"A01A03 - Quản lý công tác an toàn",items:["An toàn điện","Báo cáo CT ATVSLĐ","BC tháng hành động","Biên bản sinh hoạt AT","Công tác HLuyện ATLĐ","Công tác kiểm tra ATLĐ","Công tác PCCC & CNCH","Danh mục","Dụng cụ An toàn","Kế hoạch công tác AT","Kiến nghị","Lịch công tác tuần","Mạng lưới ATVSV","PCTT-TKCN","Quy trình quy định","Tai nạn lao động","Thi đua - khen thưởng","Thiết bị Hotline","Thiết bị Hotline YCNN","Thiết bị YCNN"]},{subcategory:"A01A04 - Đánh giá rủi ro",items:["Bổ sung","Danh mục DGRR","Định kỳ","Lực lượng làm công tác ATVSLĐ","QĐ thành lập nhóm"]}]}],l=["Bổ sung chương trình","Dữ liệu","Hiệu chỉnh chương trình","Nghiệp vụ","Phần mềm"],u="EVNSPC",d="A - An toàn điện",f="A1 - Phần mềm ứng dụng",m="C - The Business/Customer Service Catalog",p="Máy tính";function h(n){return h="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},h(n)}n=t.hmd(n);var g=["apiBaseUrl"];function b(){var n,e,t="function"==typeof Symbol?Symbol:{},r=t.iterator||"@@iterator",i=t.toStringTag||"@@toStringTag";function o(t,r,i,o){var c=r&&r.prototype instanceof s?r:s,l=Object.create(c.prototype);return y(l,"_invoke",function(t,r,i){var o,s,c,l=0,u=i||[],d=!1,f={p:0,n:0,v:n,a:m,f:m.bind(n,4),d:function(e,t){return o=e,s=0,c=n,f.n=t,a}};function m(t,r){for(s=t,c=r,e=0;!d&&l&&!i&&e<u.length;e++){var i,o=u[e],m=f.p,p=o[2];t>3?(i=p===r)&&(c=o[(s=o[4])?5:(s=3,3)],o[4]=o[5]=n):o[0]<=m&&((i=t<2&&m<o[1])?(s=0,f.v=r,f.n=o[1]):m<p&&(i=t<3||o[0]>r||r>p)&&(o[4]=t,o[5]=r,f.n=p,s=0))}if(i||t>1)return a;throw d=!0,r}return function(i,u,p){if(l>1)throw TypeError("Generator is already running");for(d&&1===u&&m(u,p),s=u,c=p;(e=s<2?n:c)||!d;){o||(s?s<3?(s>1&&(f.n=-1),m(s,c)):f.n=c:f.v=c);try{if(l=2,o){if(s||(i="next"),e=o[i]){if(!(e=e.call(o,c)))throw TypeError("iterator result is not an object");if(!e.done)return e;c=e.value,s<2&&(s=0)}else 1===s&&(e=o.return)&&e.call(o),s<2&&(c=TypeError("The iterator does not provide a '"+i+"' method"),s=1);o=n}else if((e=(d=f.n<0)?c:t.call(r,f))!==a)break}catch(e){o=n,s=1,c=e}finally{l=1}}return{value:e,done:d}}}(t,i,o),!0),l}var a={};function s(){}function c(){}function l(){}e=Object.getPrototypeOf;var u=[][r]?e(e([][r]())):(y(e={},r,function(){return this}),e),d=l.prototype=s.prototype=Object.create(u);function f(n){return Object.setPrototypeOf?Object.setPrototypeOf(n,l):(n.__proto__=l,y(n,i,"GeneratorFunction")),n.prototype=Object.create(d),n}return c.prototype=l,y(d,"constructor",l),y(l,"constructor",c),c.displayName="GeneratorFunction",y(l,i,"GeneratorFunction"),y(d),y(d,i,"Generator"),y(d,r,function(){return this}),y(d,"toString",function(){return"[object Generator]"}),(b=function(){return{w:o,m:f}})()}function y(n,e,t,r){var i=Object.defineProperty;try{i({},"",{})}catch(n){i=0}y=function(n,e,t,r){function o(e,t){y(n,e,function(n){return this._invoke(e,t,n)})}e?i?i(n,e,{value:t,enumerable:!r,configurable:!r,writable:!r}):n[e]=t:(o("next",0),o("throw",1),o("return",2))},y(n,e,t,r)}function v(n,e){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(n);e&&(r=r.filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable})),t.push.apply(t,r)}return t}function w(n){for(var e=1;e<arguments.length;e++){var t=null!=arguments[e]?arguments[e]:{};e%2?v(Object(t),!0).forEach(function(e){x(n,e,t[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(t)):v(Object(t)).forEach(function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(t,e))})}return n}function x(n,e,t){return(e=C(e))in n?Object.defineProperty(n,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[e]=t,n}function k(n,e){if(null==n)return{};var t,r,i=function(n,e){if(null==n)return{};var t={};for(var r in n)if({}.hasOwnProperty.call(n,r)){if(-1!==e.indexOf(r))continue;t[r]=n[r]}return t}(n,e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(n);for(r=0;r<o.length;r++)t=o[r],-1===e.indexOf(t)&&{}.propertyIsEnumerable.call(n,t)&&(i[t]=n[t])}return i}function S(n,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,C(r.key),r)}}function C(n){var e=function(n,e){if("object"!=h(n)||!n)return n;var t=n[Symbol.toPrimitive];if(void 0!==t){var r=t.call(n,e||"default");if("object"!=h(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(n)}(n,"string");return"symbol"==h(e)?e:e+""}function T(n,e,t,r,i,o,a){try{var s=n[o](a),c=s.value}catch(n){return void t(n)}s.done?e(c):Promise.resolve(c).then(r,i)}function A(n){return function(){var e=this,t=arguments;return new Promise(function(r,i){var o=n.apply(e,t);function a(n){T(o,r,i,a,s,"next",n)}function s(n){T(o,r,i,a,s,"throw",n)}a(void 0)})}}var j=null,M=null;function q(){return O.apply(this,arguments)}function O(){return(O=A(b().m(function n(){return b().w(function(n){for(;;)switch(n.n){case 0:if(null===j){n.n=1;break}return n.a(2,j);case 1:if(null===M){n.n=2;break}return n.a(2,M);case 2:return M=A(b().m(function n(){var e,t,r,i,o,a,s,c,l,u;return b().w(function(n){for(;;)switch(n.p=n.n){case 0:(e=[]).push("/assets/itsm-widget-config.json"),e.push("./assets/itsm-widget-config.json"),e.push("/itsm-widget-config.json"),e.push("./itsm-widget-config.json"),(t=document.querySelectorAll('script[src*="itsm-widget"]')).length>0&&(r=t[t.length-1].src,i=r.substring(0,r.lastIndexOf("/")),e.push("".concat(i,"/itsm-widget-config.json"))),o=0,a=e;case 1:if(!(o<a.length)){n.n=8;break}return s=a[o],n.p=2,n.n=3,fetch(s);case 3:if(!(c=n.v).ok){n.n=5;break}return n.n=4,c.json();case 4:return l=n.v,j=l,console.log("[ITSMWidget] ✅ Loaded config from file:",s,"→",l),n.a(2,l);case 5:n.n=7;break;case 6:return n.p=6,n.v,n.a(3,7);case 7:o++,n.n=1;break;case 8:throw u=new Error("File itsm-widget-config.json not found. Đã thử các vị trí: ".concat(e.join(", "))),console.error("[ITSMWidget] ❌ Cannot load itsm-widget-config.json from any location:",e),u;case 9:return n.a(2)}},n,null,[[2,6]])}))(),n.a(2,M)}},n)}))).apply(this,arguments)}var I=function(){return n=function n(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};!function(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),this._configPromise=this._initializeConfig(e)},e=[{key:"_initializeConfig",value:(o=A(b().m(function n(e){var t,r,i;return b().w(function(n){for(;;)switch(n.p=n.n){case 0:return console.log("[ITSMWidget] Đang load apiBaseUrl từ file itsm-widget-config.json..."),n.p=1,n.n=2,q();case 2:if((t=n.v)&&t.apiBaseUrl){n.n=3;break}throw new Error("File itsm-widget-config.json không có apiBaseUrl");case 3:console.log("[ITSMWidget] ✅ Loaded apiBaseUrl từ file:",t.apiBaseUrl),e.apiBaseUrl&&console.warn("[ITSMWidget] ⚠️ apiBaseUrl trong constructor bị bỏ qua. Chỉ sử dụng apiBaseUrl từ file itsm-widget-config.json"),e.apiBaseUrl,r=k(e,g),this.config=this._buildConfig(w(w({},t),r)),this._initWidget(),n.n=5;break;case 4:throw n.p=4,i=n.v,console.error("[ITSMWidget] ❌ Lỗi: Không thể load apiBaseUrl từ file itsm-widget-config.json:",i),console.error("[ITSMWidget] Vui lòng đảm bảo file itsm-widget-config.json tồn tại và có apiBaseUrl"),new Error("Không thể load config: ".concat(i.message));case 5:return n.a(2)}},n,this,[[1,4]])})),function(n){return o.apply(this,arguments)})},{key:"_buildConfig",value:function(n){if(!n.apiBaseUrl)throw new Error("apiBaseUrl is required in itsm-widget-config.json");var e=n.apiBaseUrl;return console.log("[ITSMWidget] Building config with apiBaseUrl:",e,"(từ file itsm-widget-config.json)"),w({apiBaseUrl:e,authToken:n.authToken||n.apiToken||"",getAuthToken:n.getAuthToken||null,getRequesterName:n.getRequesterName||null,getSite:n.getSite||null,position:n.position||"bottom-right",iconText:n.iconText||"📝",iconImage:void 0!==n.iconImage?n.iconImage:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYAAABw4pVUAAAACXBIWXMAAAsTAAALEwEAmpwYAAAJqklEQVR4nO1debBWYxj/3bZ7KaKrupIlTYqUVHQJ/5BKRpYiypgyGWaMGdsM/2gYwh9EO1mi3KIUlTaKLNmyFmUrS8iSCjcKfeYZzzGnZ573fmd9z/nO+X4z70zde773fe77+95znv0A+UYtgOkA1vKYAeC0pIXKI6oA3ANgD4CCMqYCaJK0kHlBJYCFBiLcYy6ApkkLm3XsA2C5BzLKpFjAvgBWKJu+AcBZPD5Rfj+nfPuyS0Y713VtAKwrn5T4yVipbPJ6AAcr15dJiRHNfZLhoExKDNgPwKvKpq7lDS+GGiZOfn6MBdkzh/0BrFY280MArX3MQ6R8I+Z4Pka5M4mWAN5QyPjAJxmEIwD8Kea5Oia5M4kDALylkPE+gIMCzDdNzLMKQKMY5M4kDgTwdoRk0En73TUPuVl6xiB3JtEWwLsKGe8BqA4450VirpciljnT2tRrChlEUKsQ804R890Yocy5U20LAIaGnHuJmG9gRDLnTrUt8JgZcv43xXwnRiR3JtESwOtFPLXXh1xjmZjvzIhkz42d8TKAAayqXhOBh/ZRMf/oiOTPhZ2xCkCLiNe6SazxdMTzZ9bOeImdiCY0BnADgHEAevlYr6tYp57V6zLwn/q6RiHjxSJkEMa6rv8LwDAf68qA1eSQf0emb1Mve7xNSffH3wAu87j2SPHZPRGo0yWNara2JRkrOPDkBQP5ZLg//w9b4sXQmD3E7s/+xuFeP+gC4G4AV/CcJYmD2A8lyXjBBxkOhvHJcM9Dp84LegPYqZyyO9gwbQjN2ML/o9SDXK3ZXV5QYhF+yXBwKZ8MZ65XfBKq5XD9wMrCGQDa80a34QS8WwB8bbCR5pUSKW2U20SB03cojScMzuUTRrfBY3x+9jIlNhJmPMMnKNVoY4hlL4uAjChwMoAvAxKwS/nZgjST0hbAR4rQSy2QQVb96R7XqeLnwlaPRGwEcDmAQwwx+kWcTZkqUOz6Y0XYJbwBcaIFq9AFDkiRqusFleyqmcpOToq97wbwIz//JrE21shD4sRiC3+nZxycsJCdFZV4VIzrmUiZl4bwcDvOHpTCPWfxGLfnb3YaSIlzzaI4xJBLuyiBe+pIoRI7tkYny6RQlDMR0LfyU4WMhQk+4EYppJI9ESe6ifXI1rGOQwF8llIVcJRLPV3nMcMxbGxH7oNVHAbgc0WIZ1NAhtvNf74lhWKy2IctsIjDAXxRqhZrDBin7MV9sEjGJkWA+SVCxhHsR5vPfqs4yNhs4Rb5/x/zZYk72Ba45CZX/pCIySCr/3hYwJEGMp4uITLAp6MQASkaGT/bIqMjgK8UAUoxHnC2EuSi/w+KgIwesHSb2mQooCw1MhxcoFj09Pd4wV3KXvziM+kiMDopRS40nsxANesQcVIeCngyfgLQ3YK8OIq1BSnA7AyQ4eAkAA8CuNdD9FIj48ekyXgqQ2T4wV0GMshdEjsoq+I7RYC6Us6y8AkKQo3nEzTOEH8/FhZwNIDvFQGeyBEZI4WDsKC4RCgTMnYcw4tppQB5IQMcHZR74CbDb0JFIHTlYygFmJEzMginGE7G93wHiR3dDGQ8lkMywLUo2smwQkZ31hakANNzSgaUhDgiow8s4Dg2aiQZj6YhQJ8gVgp3iBXVtgcvJsl4JOdkOCHp6WwAd02SjIfLZNgHuYbLZKScDHKqlcmwjBMAbFPIeABABfKB5pwuOpajhhvYbb6bxy+cW7WAr+nvocQuEEhl266QMTUHZFTwxs4WhTZeB31mFs8RyV7VGsiYkgMyzjOU0AUdlIk4OIxA5KncoUw8KeNkHMllD4WYBmXxd/ArVF8AvyqTTcw4GRcavoTO+JT3YBgrOa04DN2Ui1LpZxfzl1bLyHTGdj8VvLUGMiZknIxbDZtHYdrHA7o/atnBKpMiPDfRrDEEl8ZnnIz7DRu2iDNmosgtWGxYg9Y2YoIhpTFvJ+N3Hw0F/Aav6v2cFOksnJyDZ0ZBiVvEmR91vCGQpybbyYuoMViWtakdChl+C3OaBvjSdlJI2a5pX5IQK4H4hLBUuU31CHDCtrES5LfvSU/l9kXPmb0g21es5wd9Fo2+ghhBnhnubzkpQ0GyU6Qc58iqoULGSalQLHDSpoJA7lUUJ/Ud9y2wEZcG+CWlgov9j+bS5jSHb/srdkbHBAnprDTD2aunY5VBZ5akUHHNCC5ckQ/Hv9mqpZdtnZoyTW22kJWMPiRICDhvTSYV7oVKPsYaKRSivNKQEGcaq9kdkzRaKF7bPikg5GQxz04tV7iZqBZyhkzD9zMmJpzbO0DIQ6cYKSCkQqm5VFvRNuNCTC+bvZV7lHyr3BNla6Wk7JuxyhckDYRo7cypKZrR8NEe9AUuUbtOMWiquNJotiGLb2FCYd8FQg7yzKaFkOFKeTgaImWu6+I/uN2qlwqoXoZeHrfDPjYIGXqkiJCeyvO6QTTmjs53sqrmt5uo0/bIrW76nScsZJKG6fUVIwwZmWHHxgYa+bcW15JfMVZUs0DuRenU2cQusb5WF99UaXQZ5aBCJg2V4jpqIRg7BopF93AnoDQRUmlwkWeSECgvXLkqhbesSwwu8kzdshxcIxYmzSdKVAO4GcC1St9E+VAPW6QvNzwMeom5yISwgm7Kyx3j6tdYV0Jq7wgxF9l/1loeSYMyrq5sm4sYhpQdkhZCpno1DKNGlViYbJq4+haOL+LppVSdtLhOZLeLfrDYnkla+3GQMUfxmzVXVNraFBDSV8xTH6KNum8MUTL5bJDhYJa4lvKmkiakrpj7PU7MFIuTC8YWGaYAVacECemiOGP72cz02C02gxph2iLDuV+/Wyy5wCIhy8Uca2wF9Brzy1dkVyCbZDgYrHzea1txN9yuIPq3X4xW5CAveSL127sC3CpqIiDD9PbO+gCG4kBWrTcHePun9nKYoMkWgbBKLP6Nz2yWmgjJAMdwZO3Llpg7WLu7JclmC9u42Zs13BYixagmYjIcDFXm3BLzq7l7GzpfUJc6q2jCG+iXlJqYyHAwRpl7JyexRY3RBtc+vRIpEfglpSZmMoqVIyyNKIjWRdGmPJUjpImUGktkNHRSCmwjPMGpOn7U0Qq2wOsaSPpI7GR4JeUTbrc6yPD6irjIcHsRtCJXt2o7hRMSerKrvxmPanahD2dHodaJ1f0At/7MCEqKacyxlNPVoYFqpyjGItvaVBykzEkgwe4cTnyOiog1No2+MGiixAIKooorqWzHCs4grAuY+FDPzx9rvqko0Zf7przFYxo/SNMCcocTORQ4omgeRSYpuEYeBxpO5ib9jq4hEkK50P8FHQHmi838YTAAAAAASUVORK5CYII=",iconColor:n.iconColor||"#335fb3",title:n.title||"Tạo phiếu yêu cầu ITSM",requesterName:n.requesterName||"",site:n.site||"",udf_fields:n.udf_fields||{}},n)}},{key:"_initWidget",value:function(){console.log("[ITSMWidget] Initializing widget with config:",{apiBaseUrl:this.config.apiBaseUrl,hasAuthToken:!!this.config.authToken,position:this.config.position}),this.apiService=new s.A({baseUrl:this.config.apiBaseUrl,authToken:this.config.authToken}),this.isOpen=!1,this.widgetContainer=null,this.modalContainer=null,this.init()}},{key:"init",value:function(){this.createWidgetButton(),this.createModal(),this.attachEvents()}},{key:"createWidgetButton",value:function(){var n=document.createElement("div");n.id="itsm-widget-button",n.className="itsm-widget-button itsm-position-".concat(this.config.position);var e="";e=this.config.iconImage&&null!==this.config.iconImage?'<img src="'.concat(this.config.iconImage,'" alt="ITSM Widget" class="itsm-widget-icon-img" />'):this.config.iconText||"📝";var t=this.config.iconImage&&null!==this.config.iconImage?"":"background-color: ".concat(this.config.iconColor,";");n.style.borderColor=this.config.iconColor,n.innerHTML='\n <div class="itsm-widget-icon" style="'.concat(t,'">\n ').concat(e,"\n </div>\n "),document.body.appendChild(n),this.widgetContainer=n}},{key:"createModal",value:function(){var n=document.createElement("div");n.id="itsm-widget-modal",n.className="itsm-modal-overlay",n.innerHTML='\n <div class="itsm-modal-container" style="width: 50vw; max-width: 90vw;">\n <div class="itsm-modal-header">\n <span class="itsm-modal-title">'.concat(this.config.title,'</span>\n <div class="itsm-modal-header-icons">\n <button class="itsm-modal-close" aria-label="Đóng">\n <span>×</span>\n </button>\n </div>\n </div>\n <div class="itsm-modal-content">\n <form id="itsm-request-form" class="itsm-form">\n \n\n <div class="itsm-form-group">\n <label for="itsm-requester">\n Người yêu cầu <span class="itsm-required">*</span>\n </label>\n <input \n type="text" \n id="itsm-requester" \n name="requester" \n class="itsm-input" \n disabled\n placeholder=""\n value="').concat(this.config.requesterName||"",'"\n />\n </div>\n <div class="itsm-form-group">\n <label for="itsm-site">Đơn vị</label>\n <input \n type="text" \n id="itsm-site" \n name="site" \n class="itsm-input" \n disabled\n placeholder=""\n value="').concat(this.config.site||"",'"\n />\n </div>\n\n <div class="itsm-form-group">\n <label for="itsm-category">\n Danh mục dịch vụ <span class="itsm-required">*</span>\n </label>\n <select id="itsm-category" name="category" class="itsm-select" required>\n <option value="">-- Chọn danh mục --</option>\n </select>\n </div>\n\n <div class="itsm-form-group">\n <label for="itsm-subcategory">\n Dịch vụ con <span class="itsm-required">*</span>\n </label>\n <select id="itsm-subcategory" name="subcategory" class="itsm-select" required disabled>\n <option value="">Chưa lựa chọn</option>\n </select>\n </div>\n\n <div class="itsm-form-group">\n <label for="itsm-item">\n Chi tiết dịch vụ <span class="itsm-required">*</span>\n </label>\n <select id="itsm-item" name="item" class="itsm-select" required disabled>\n <option value="">Chưa lựa chọn</option>\n </select>\n </div>\n\n <div class="itsm-form-row">\n <div class="itsm-form-group itsm-form-group-half">\n <label for="itsm-priority">\n Mức độ ưu tiên <span class="itsm-required">*</span>\n </label>\n <select id="itsm-priority" name="priority" class="itsm-select" required>\n <option value="" selected>Chưa lựa chọn</option>\n <option value="low">Thấp</option>\n <option value="medium">Trung bình</option>\n <option value="high">Cao</option>\n </select>\n </div>\n\n <div class="itsm-form-group itsm-form-group-half">\n <label for="itsm-udf-pick-305">Loại hỗ trợ</label>\n <select id="itsm-udf-pick-305" name="udf_pick_305" class="itsm-select">\n <option value="">Chưa lựa chọn</option>\n </select>\n </div>\n </div>\n \n <div class="itsm-form-group">\n <label for="itsm-udf-pick-306">\n Loại thiết bị sử dụng <span class="itsm-required">*</span>\n </label>\n <select id="itsm-udf-pick-306" name="udf_pick_306" class="itsm-select" required>\n <option value="">Chưa lựa chọn</option>\n <option value="Máy tính">Máy tính</option>\n <option value="Máy tính bảng">Máy tính bảng</option>\n <option value="Điện thoại">Điện thoại</option>\n <option value="Laptop">Laptop</option>\n </select>\n </div>\n\n <div class="itsm-form-group">\n <label for="itsm-title">\n Tiêu đề <span class="itsm-required">*</span>\n </label>\n <input \n type="text" \n id="itsm-title" \n name="title" \n class="itsm-input" \n required \n placeholder="Nhập tiêu đề phiếu yêu cầu"\n />\n </div>\n\n <div class="itsm-form-group">\n <label for="itsm-description-editor">\n Mô tả <span class="itsm-required">*</span>\n </label>\n <div class="itsm-editor-container">\n <div class="itsm-editor-toolbar">\n <button type="button" class="itsm-editor-btn" data-command="bold" title="Bold">\n <strong>B</strong>\n </button>\n <button type="button" class="itsm-editor-btn" data-command="italic" title="Italic">\n <em>I</em>\n </button>\n <button type="button" class="itsm-editor-btn" data-command="underline" title="Underline">\n <u>U</u>\n </button>\n <div class="itsm-editor-separator"></div>\n <button type="button" class="itsm-editor-btn" data-command="insertUnorderedList" title="Bullet List">• List</button>\n <button type="button" class="itsm-editor-btn" data-command="insertOrderedList" title="Numbered List">1. List</button>\n <div class="itsm-editor-separator"></div>\n <label class="itsm-editor-file-btn">\n 📎 Đính kèm file\n <input \n type="file" \n id="itsm-attachment" \n name="attachment" \n multiple\n style="display: none;"\n />\n </label>\n </div>\n <div \n id="itsm-description-editor" \n class="itsm-editor-content"\n contenteditable="true"\n data-placeholder="Nhập mô tả chi tiết yêu cầu..."\n ></div>\n <textarea \n id="itsm-description" \n name="description" \n style="display: none;"\n required\n ></textarea>\n <div id="itsm-file-list" class="itsm-file-list"></div>\n </div>\n </div>\n\n <div class="itsm-modal-footer">\n <button type="button" class="itsm-btn itsm-btn-secondary" id="itsm-cancel-btn">\n Hủy\n </button>\n <button type="submit" class="itsm-btn itsm-btn-primary" id="itsm-submit-btn">\n <span class="itsm-btn-text">Gửi Yêu Cầu</span>\n <span class="itsm-btn-loading" style="display: none;">Đang gửi...</span>\n </button>\n </div>\n </form>\n </div>\n </div>\n '),document.body.appendChild(n),this.modalContainer=n}},{key:"attachEvents",value:function(){var n=this;this.widgetContainer.addEventListener("click",function(){n.toggleModal()});var e=this.modalContainer.querySelector(".itsm-modal-close"),t=this.modalContainer.querySelector("#itsm-cancel-btn"),r=this.modalContainer;e&&e.addEventListener("click",function(){return n.closeModal()}),t&&t.addEventListener("click",function(){return n.closeModal()}),r.addEventListener("click",function(e){e.target===r&&n.closeModal()}),this.modalContainer.querySelector("#itsm-request-form").addEventListener("submit",function(e){return n.handleSubmit(e)}),this.modalContainer.querySelector("#itsm-attachment").addEventListener("change",function(e){return n.handleFileSelect(e)}),this.initEditor(),this.initCategoryDropdowns()}},{key:"initEditor",value:function(){var n=this.modalContainer.querySelector("#itsm-description-editor"),e=this.modalContainer.querySelector("#itsm-description"),t=this.modalContainer.querySelector(".itsm-editor-toolbar");n.addEventListener("input",function(){e.value=n.innerHTML,n.textContent.trim()?e.setCustomValidity(""):e.setCustomValidity("Mô tả là bắt buộc")}),n.addEventListener("focus",function(){""===n.textContent.trim()&&(n.innerHTML="")}),n.addEventListener("blur",function(){""===n.textContent.trim()&&(n.innerHTML="")}),t.querySelectorAll(".itsm-editor-btn[data-command]").forEach(function(t){t.addEventListener("click",function(r){r.preventDefault();var i=t.getAttribute("data-command");n.focus(),document.execCommand(i,!1,null),e.value=n.innerHTML})})}},{key:"initCategoryDropdowns",value:function(){var n=this.modalContainer.querySelector("#itsm-category"),e=this.modalContainer.querySelector("#itsm-subcategory"),t=this.modalContainer.querySelector("#itsm-item"),r=this.modalContainer.querySelector("#itsm-udf-pick-305");c.map(function(n){return n.category}).forEach(function(e){var t=document.createElement("option");t.value=e,t.textContent=e,n.appendChild(t)}),l.forEach(function(n){var e=document.createElement("option");e.value=n,e.textContent=n,r.appendChild(e)}),n&&n.addEventListener("change",function(n){var r,i,o=n.target.value;e&&(e.innerHTML='<option value="">Chưa lựa chọn</option>',e.disabled=!o),t&&(t.innerHTML='<option value="">Chưa lựa chọn</option>',t.disabled=!0),o&&((r=o,(i=c.find(function(n){return n.category===r}))?i.subcategories.map(function(n){return n.subcategory}):[]).forEach(function(n){var t=document.createElement("option");t.value=n,t.textContent=n,e&&e.appendChild(t)}),e&&(e.disabled=!1))}),e&&e.addEventListener("change",function(e){var r=null==n?void 0:n.value,i=e.target.value;t&&(t.innerHTML='<option value="">Chưa lựa chọn</option>',t.disabled=!i),r&&i&&(function(n,e){var t=c.find(function(e){return e.category===n});if(!t)return[];var r=t.subcategories.find(function(n){return n.subcategory===e});return r?r.items:[]}(r,i).forEach(function(n){var e=document.createElement("option");e.value=n,e.textContent=n,t&&t.appendChild(e)}),t&&(t.disabled=!1))})}},{key:"toggleModal",value:function(){this.isOpen?this.closeModal():this.openModal()}},{key:"openModal",value:function(){if(this.config.getAuthToken&&"function"==typeof this.config.getAuthToken){var n=this.config.getAuthToken();n&&this.apiService&&(this.apiService.authToken=n,this.config.authToken=n)}if(this.config.getRequesterName&&"function"==typeof this.config.getRequesterName){var e=this.config.getRequesterName();if(e){this.config.requesterName=e;var t=this.modalContainer.querySelector("#itsm-requester");t&&(t.value=e)}}if(this.config.getSite&&"function"==typeof this.config.getSite){var r=this.config.getSite();if(r){this.config.site=r;var i=this.modalContainer.querySelector("#itsm-site");i&&(i.value=r)}}this.modalContainer.classList.add("itsm-modal-active"),this.modalContainer.style.display="flex",this.isOpen=!0,document.body.style.overflow="hidden"}},{key:"closeModal",value:function(){this.modalContainer.classList.remove("itsm-modal-active"),this.modalContainer.style.display="none",this.isOpen=!1,document.body.style.overflow=""}},{key:"handleFileSelect",value:function(n){var e=this,t=Array.from(n.target.files),r=this.modalContainer.querySelector("#itsm-file-list");0!==t.length?r.innerHTML=t.map(function(n){return'\n <div class="itsm-file-item">\n <span class="itsm-file-name">'.concat(n.name,'</span>\n <span class="itsm-file-size">').concat(e.formatFileSize(n.size),"</span>\n </div>\n ")}).join(""):r.innerHTML=""}},{key:"formatFileSize",value:function(n){if(0===n)return"0 Bytes";var e=Math.floor(Math.log(n)/Math.log(1024));return Math.round(n/Math.pow(1024,e)*100)/100+" "+["Bytes","KB","MB","GB"][e]}},{key:"handleSubmit",value:(i=A(b().m(function n(e){var t,r,i,o,a,s,c,l,u,d,f,m,p,h,g,y,v,w=this;return b().w(function(n){for(;;)switch(n.p=n.n){case 0:if(e.preventDefault(),t=e.target,r=new FormData(t),this.config.getAuthToken&&"function"==typeof this.config.getAuthToken&&(i=this.config.getAuthToken())&&this.apiService&&(this.apiService.authToken=i,this.config.authToken=i),o="",o=this.config.getRequesterName&&"function"==typeof this.config.getRequesterName?this.config.getRequesterName()||"":this.config.requesterName||r.get("requester")||"",a="",a=this.config.getSite&&"function"==typeof this.config.getSite?this.config.getSite()||"":this.config.site||r.get("site")||"",s={title:r.get("title"),description:r.get("description"),requester:o,category:r.get("category"),subcategory:r.get("subcategory"),item:r.get("item"),priority:r.get("priority"),site:a,udf_pick_305:r.get("udf_pick_305"),udf_pick_306:r.get("udf_pick_306"),contact:r.get("contact"),attachments:[]},c=this.modalContainer.querySelector("#itsm-description-editor"),s.description=c?c.innerHTML.trim():s.description,s.title&&s.description&&s.category&&s.subcategory&&s.item&&s.priority&&s.udf_pick_306&&s.requester){n.n=1;break}return this.showMessage("Vui lòng điền đầy đủ thông tin bắt buộc!","error"),n.a(2);case 1:if(c&&c.textContent.trim()){n.n=2;break}return this.showMessage("Mô tả không được để trống!","error"),null==c||c.focus(),n.a(2);case 2:return l=t.querySelector("#itsm-attachment"),u=Array.from(l.files),d=t.querySelector("#itsm-submit-btn"),f=d.querySelector(".itsm-btn-text"),m=d.querySelector(".itsm-btn-loading"),f.style.display="none",m.style.display="inline",d.disabled=!0,n.p=3,n.n=4,this.submitRequest(s,u);case 4:p=n.v,this.showMessage("Phiếu yêu cầu đã được gửi thành công!","success"),t.reset(),(h=this.modalContainer.querySelector("#itsm-description-editor"))&&(h.innerHTML=""),this.modalContainer.querySelector("#itsm-file-list").innerHTML="",g=this.modalContainer.querySelector("#itsm-subcategory"),y=this.modalContainer.querySelector("#itsm-item"),g&&(g.innerHTML='<option value="">Chưa lựa chọn</option>',g.disabled=!0),y&&(y.innerHTML='<option value="">Chưa lựa chọn</option>',y.disabled=!0),setTimeout(function(){w.closeModal()},1500),this.config.onSuccess&&this.config.onSuccess(p),n.n=6;break;case 5:n.p=5,v=n.v,console.error("Error submitting ITSM request:",v),this.showMessage(v.message||"Có lỗi xảy ra khi gửi yêu cầu. Vui lòng thử lại!","error");case 6:return n.p=6,f.style.display="inline",m.style.display="none",d.disabled=!1,n.f(6);case 7:return n.a(2)}},n,this,[[3,5,6,7]])})),function(n){return i.apply(this,arguments)})},{key:"submitRequest",value:(r=A(b().m(function n(e,t){var r,i,o;return b().w(function(n){for(;;)switch(n.n){case 0:if(r={udf_pick_301:u||"EVNSPC",udf_pick_302:d||"A - An toàn điện",udf_pick_303:f||"A1 - Phần mềm ứng dụng",udf_pick_304:m||"C - The Business/Customer Service Catalog",udf_pick_305:e.udf_pick_305||null,udf_pick_306:e.udf_pick_306||p||null,udf_pick_602:null,udf_mline_603:""},Object.assign(r,this.config.udf_fields||{}),i=this.apiService.buildRequestData(e,{requesterName:this.config.requesterName||e.requester||e.contact||"",site:this.config.site||e.site||null,category:e.category,subcategory:e.subcategory,item:e.item,template:e.category,udf_fields:r,zia_properties:this.config.zia_properties||{}}),!((o=t&&t.length>0?Array.from(t):[]).length>0)){n.n=2;break}return n.n=1,this.apiService.createRequestWithAttachments(i,o);case 1:case 3:return n.a(2,n.v);case 2:return n.n=3,this.apiService.createRequest(i);case 4:return n.a(2)}},n,this)})),function(n,e){return r.apply(this,arguments)})},{key:"showMessage",value:function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"info",t=document.querySelector(".itsm-message");t&&t.remove();var r=document.createElement("div");r.className="itsm-message itsm-message-".concat(e),r.textContent=n,document.body.appendChild(r),setTimeout(function(){r.classList.add("itsm-message-show")},10),setTimeout(function(){r.classList.remove("itsm-message-show"),setTimeout(function(){return r.remove()},300)},3e3)}},{key:"destroy",value:function(){this.widgetContainer&&this.widgetContainer.remove(),this.modalContainer&&this.modalContainer.remove(),document.body.style.overflow=""}}],e&&S(n.prototype,e),t&&S(n,t),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,e,t,r,i,o}();n.exports&&(n.exports=I,n.exports.default=I);const B=I;"undefined"!=typeof window&&(window.ITSMWidget=I,window.ITSMWidget.default||(window.ITSMWidget.default=I),document.addEventListener("DOMContentLoaded",function(){var n=document.querySelector("script[data-itsm-config]");if(n)try{var e=JSON.parse(n.getAttribute("data-itsm-config"));window.itsmWidgetInstance=new I(e)}catch(n){console.error("Error parsing ITSM widget config:",n)}}))},555:(n,e,t)=>{t.d(e,{A:()=>o});var r=t(314),i=t.n(r)()(function(n){return n[1]});i.push([n.id,'/**\r\n * ITSM Widget Styles\r\n * Native HTML/CSS - No external libraries required\r\n */\r\n\r\n/* Floating Button */\r\n.itsm-widget-button {\r\n position: fixed;\r\n z-index: 9998;\r\n cursor: pointer;\r\n transition: transform 0.3s ease, box-shadow 0.3s ease;\r\n border-radius: 50%;\r\n overflow: visible;\r\n padding: 4px;\r\n border: 3px solid transparent;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n background-color: #ffffff;\r\n}\r\n\r\n.itsm-widget-button:hover {\r\n transform: scale(1.1);\r\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\r\n}\r\n\r\n.itsm-position-bottom-right {\r\n bottom: 24px;\r\n right: 24px;\r\n}\r\n\r\n.itsm-position-bottom-left {\r\n bottom: 24px;\r\n left: 24px;\r\n}\r\n\r\n.itsm-widget-icon {\r\n width: 48px;\r\n height: 48px;\r\n padding: 8px;\r\n border-radius: 50%;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n color: white;\r\n font-size: 18px;\r\n font-weight: bold;\r\n /* box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2); */\r\n user-select: none;\r\n font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;\r\n overflow: hidden;\r\n background-color: #ffffff;\r\n}\r\n\r\n.itsm-widget-icon-img {\r\n width: 100%;\r\n height: 100%;\r\n object-fit: contain;\r\n filter: brightness(0) saturate(100%) invert(27%) sepia(78%) saturate(1250%) hue-rotate(197deg) brightness(96%) contrast(95%);\r\n /* border-radius: 50%; */\r\n}\r\n\r\n/* Modal Overlay */\r\n.itsm-modal-overlay {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n bottom: 0;\r\n background-color: rgba(0, 0, 0, 0.5);\r\n z-index: 9999;\r\n display: none;\r\n align-items: center;\r\n justify-content: center;\r\n opacity: 0;\r\n transition: opacity 0.3s ease;\r\n padding: 16px;\r\n}\r\n\r\n.itsm-modal-overlay.itsm-modal-active {\r\n display: flex;\r\n opacity: 1;\r\n}\r\n\r\n/* Modal Container */\r\n.itsm-modal-container {\r\n background: #ffffff;\r\n border-radius: 6px;\r\n box-shadow: 0 11px 15px -7px rgba(0, 0, 0, 0.2), 0 24px 38px 3px rgba(0, 0, 0, 0.14), 0 9px 46px 8px rgba(0, 0, 0, 0.12);\r\n width: 100%;\r\n max-width: 50vw;\r\n max-height: 90vh;\r\n display: flex;\r\n flex-direction: column;\r\n transform: scale(0.9);\r\n transition: transform 0.3s ease;\r\n font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;\r\n}\r\n\r\n.itsm-modal-overlay.itsm-modal-active .itsm-modal-container {\r\n transform: scale(1);\r\n}\r\n\r\n/* Modal Header */\r\n.itsm-modal-header {\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n padding: 1.5rem;\r\n border-bottom: 1px solid #e9ecef;\r\n background-color: #ffffff;\r\n border-radius: 6px 6px 0 0;\r\n flex-shrink: 0;\r\n}\r\n\r\n.itsm-modal-title {\r\n margin: 0;\r\n font-size: 1.5rem;\r\n font-weight: 600;\r\n color: #212529;\r\n flex: 1;\r\n}\r\n\r\n.itsm-modal-header-icons {\r\n display: flex;\r\n align-items: center;\r\n gap: 0.5rem;\r\n}\r\n\r\n.itsm-modal-close {\r\n background: transparent;\r\n border: none;\r\n color: #6c757d;\r\n cursor: pointer;\r\n padding: 0.5rem;\r\n width: 2rem;\r\n height: 2rem;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n border-radius: 50%;\r\n transition: background-color 0.2s ease, color 0.2s ease;\r\n font-size: 1.5rem;\r\n line-height: 1;\r\n}\r\n\r\n.itsm-modal-close:hover {\r\n background-color: #e9ecef;\r\n color: #212529;\r\n}\r\n\r\n.itsm-modal-close span {\r\n font-size: 1.5rem;\r\n line-height: 1;\r\n}\r\n\r\n/* Modal Content */\r\n.itsm-modal-content {\r\n padding: 1.5rem;\r\n overflow-y: auto;\r\n flex: 1;\r\n}\r\n\r\n/* Modal Footer */\r\n.itsm-modal-footer {\r\n display: flex;\r\n justify-content: flex-end;\r\n gap: 0.5rem;\r\n padding: 1rem 1.5rem;\r\n border-top: 1px solid #e9ecef;\r\n background-color: #ffffff;\r\n border-radius: 0 0 6px 6px;\r\n flex-shrink: 0;\r\n}\r\n\r\n/* Form Styles */\r\n.itsm-form {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 1rem;\r\n}\r\n\r\n.itsm-form-row {\r\n display: flex;\r\n gap: 1rem;\r\n}\r\n\r\n.itsm-form-group {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 0.5rem;\r\n}\r\n\r\n.itsm-form-group-half {\r\n flex: 1;\r\n}\r\n\r\n/* Label */\r\n.itsm-form-group label {\r\n font-weight: 500;\r\n color: #495057;\r\n font-size: 0.875rem;\r\n display: block;\r\n margin-bottom: 0.25rem;\r\n}\r\n\r\n.itsm-required {\r\n color: #dc3545;\r\n margin-left: 2px;\r\n}\r\n\r\n/* Input */\r\n.itsm-input {\r\n width: 100%;\r\n padding: 0.5rem 0.75rem;\r\n font-size: 1rem;\r\n line-height: 1.5;\r\n color: #495057;\r\n background-color: #ffffff;\r\n border: 1px solid #ced4da;\r\n border-radius: 4px;\r\n transition: background-color 0.2s, border-color 0.2s, box-shadow 0.2s;\r\n font-family: inherit;\r\n box-sizing: border-box;\r\n}\r\n\r\n.itsm-input:hover {\r\n border-color: #adb5bd;\r\n}\r\n\r\n.itsm-input:focus {\r\n outline: 0 none;\r\n outline-offset: 0;\r\n border-color: #007bff;\r\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\r\n}\r\n\r\n.itsm-input:disabled {\r\n background-color: #e9ecef;\r\n opacity: 1;\r\n cursor: not-allowed;\r\n}\r\n\r\n/* Textarea */\r\n.itsm-textarea {\r\n width: 100%;\r\n padding: 0.5rem 0.75rem;\r\n font-size: 1rem;\r\n line-height: 1.5;\r\n color: #495057;\r\n background-color: #ffffff;\r\n border: 1px solid #ced4da;\r\n border-radius: 4px;\r\n transition: background-color 0.2s, border-color 0.2s, box-shadow 0.2s;\r\n font-family: inherit;\r\n box-sizing: border-box;\r\n resize: vertical;\r\n min-height: 100px;\r\n}\r\n\r\n.itsm-textarea:hover {\r\n border-color: #adb5bd;\r\n}\r\n\r\n.itsm-textarea:focus {\r\n outline: 0 none;\r\n outline-offset: 0;\r\n border-color: #007bff;\r\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\r\n}\r\n\r\n.itsm-textarea:disabled {\r\n background-color: #e9ecef;\r\n opacity: 1;\r\n cursor: not-allowed;\r\n}\r\n\r\n/* Rich Text Editor */\r\n.itsm-editor-container {\r\n border: 1px solid #ced4da;\r\n border-radius: 4px;\r\n background-color: #ffffff;\r\n transition: border-color 0.2s, box-shadow 0.2s;\r\n}\r\n\r\n.itsm-editor-container:focus-within {\r\n border-color: #007bff;\r\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\r\n}\r\n\r\n.itsm-editor-toolbar {\r\n display: flex;\r\n align-items: center;\r\n gap: 0.25rem;\r\n padding: 0.5rem;\r\n border-bottom: 1px solid #e9ecef;\r\n background-color: #f8f9fa;\r\n flex-wrap: wrap;\r\n}\r\n\r\n.itsm-editor-btn {\r\n padding: 0.25rem 0.5rem;\r\n font-size: 0.875rem;\r\n border: 1px solid #ced4da;\r\n border-radius: 3px;\r\n background-color: #ffffff;\r\n color: #495057;\r\n cursor: pointer;\r\n transition: background-color 0.2s, border-color 0.2s;\r\n font-family: inherit;\r\n min-width: 2rem;\r\n height: 2rem;\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n}\r\n\r\n.itsm-editor-btn:hover {\r\n background-color: #e9ecef;\r\n border-color: #adb5bd;\r\n}\r\n\r\n.itsm-editor-btn:active {\r\n background-color: #dee2e6;\r\n}\r\n\r\n.itsm-editor-separator {\r\n width: 1px;\r\n height: 1.5rem;\r\n background-color: #ced4da;\r\n margin: 0 0.25rem;\r\n}\r\n\r\n.itsm-editor-file-btn {\r\n padding: 0.25rem 0.5rem;\r\n font-size: 0.875rem;\r\n border: 1px solid #ced4da;\r\n border-radius: 3px;\r\n background-color: #ffffff;\r\n color: #495057;\r\n cursor: pointer;\r\n transition: background-color 0.2s, border-color 0.2s;\r\n font-family: inherit;\r\n margin-left: auto;\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n}\r\n\r\n.itsm-editor-file-btn:hover {\r\n background-color: #e9ecef;\r\n border-color: #adb5bd;\r\n}\r\n\r\n.itsm-editor-content {\r\n min-height: 150px;\r\n max-height: 400px;\r\n overflow-y: auto;\r\n padding: 0.75rem;\r\n font-size: 1rem;\r\n line-height: 1.5;\r\n color: #495057;\r\n font-family: inherit;\r\n outline: none;\r\n}\r\n\r\n.itsm-editor-content:empty:before {\r\n content: attr(data-placeholder);\r\n color: #6c757d;\r\n pointer-events: none;\r\n}\r\n\r\n.itsm-editor-content:focus:empty:before {\r\n content: \'\';\r\n}\r\n\r\n.itsm-editor-content img {\r\n max-width: 100%;\r\n height: auto;\r\n margin: 0.5rem 0;\r\n}\r\n\r\n.itsm-editor-content ul,\r\n.itsm-editor-content ol {\r\n margin: 0.5rem 0;\r\n padding-left: 1.5rem;\r\n}\r\n\r\n.itsm-editor-content p {\r\n margin: 0.5rem 0;\r\n}\r\n\r\n.itsm-editor-content p:first-child {\r\n margin-top: 0;\r\n}\r\n\r\n.itsm-editor-content p:last-child {\r\n margin-bottom: 0;\r\n}\r\n\r\n/* Select */\r\n.itsm-select {\r\n width: 100%;\r\n padding: 0.5rem 0.75rem;\r\n font-size: 1rem;\r\n line-height: 1.5;\r\n color: #495057;\r\n background-color: #ffffff;\r\n border: 1px solid #ced4da;\r\n border-radius: 4px;\r\n transition: background-color 0.2s, border-color 0.2s, box-shadow 0.2s;\r\n font-family: inherit;\r\n box-sizing: border-box;\r\n cursor: pointer;\r\n}\r\n\r\n.itsm-select:hover {\r\n border-color: #adb5bd;\r\n}\r\n\r\n.itsm-select:focus {\r\n outline: 0 none;\r\n outline-offset: 0;\r\n border-color: #007bff;\r\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\r\n}\r\n\r\n.itsm-select:disabled {\r\n background-color: #e9ecef;\r\n opacity: 0.6;\r\n cursor: not-allowed;\r\n}\r\n\r\n/* Button */\r\n.itsm-btn {\r\n padding: 0.5rem 1rem;\r\n font-size: 1rem;\r\n font-weight: 400;\r\n line-height: 1.5;\r\n border-radius: 4px;\r\n border: 1px solid transparent;\r\n cursor: pointer;\r\n transition: background-color 0.2s, border-color 0.2s, box-shadow 0.2s;\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n text-align: center;\r\n user-select: none;\r\n font-family: inherit;\r\n position: relative;\r\n overflow: hidden;\r\n}\r\n\r\n.itsm-btn:disabled {\r\n opacity: 0.6;\r\n cursor: default;\r\n}\r\n\r\n.itsm-btn-text {\r\n line-height: inherit;\r\n}\r\n\r\n/* Primary Button */\r\n.itsm-btn-primary {\r\n color: #ffffff;\r\n background-color: #007bff;\r\n border-color: #007bff;\r\n}\r\n\r\n.itsm-btn-primary:hover:not(:disabled) {\r\n background-color: #0056b3;\r\n border-color: #0056b3;\r\n}\r\n\r\n.itsm-btn-primary:focus {\r\n outline: 0 none;\r\n outline-offset: 0;\r\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\r\n}\r\n\r\n.itsm-btn-primary:active:not(:disabled) {\r\n background-color: #004085;\r\n border-color: #004085;\r\n}\r\n\r\n/* Secondary Button */\r\n.itsm-btn-secondary {\r\n color: #ffffff;\r\n background-color: #6c757d;\r\n border-color: #6c757d;\r\n}\r\n\r\n.itsm-btn-secondary:hover:not(:disabled) {\r\n background-color: #5a6268;\r\n border-color: #545b62;\r\n}\r\n\r\n.itsm-btn-secondary:focus {\r\n outline: 0 none;\r\n outline-offset: 0;\r\n box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);\r\n}\r\n\r\n.itsm-btn-secondary:active:not(:disabled) {\r\n background-color: #545b62;\r\n border-color: #4e555b;\r\n}\r\n\r\n/* File Input */\r\n.itsm-file-list {\r\n margin-top: 0.5rem;\r\n display: flex;\r\n flex-direction: column;\r\n gap: 0.5rem;\r\n}\r\n\r\n.itsm-file-item {\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n padding: 0.5rem;\r\n background-color: #f8f9fa;\r\n border-radius: 4px;\r\n font-size: 0.875rem;\r\n}\r\n\r\n.itsm-file-name {\r\n color: #495057;\r\n flex: 1;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n}\r\n\r\n.itsm-file-size {\r\n color: #6c757d;\r\n margin-left: 0.5rem;\r\n}\r\n\r\n/* Message/Toast Styles */\r\n.itsm-message {\r\n position: fixed;\r\n top: 20px;\r\n right: 20px;\r\n z-index: 10000;\r\n padding: 1rem 1.5rem;\r\n border-radius: 4px;\r\n box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);\r\n min-width: 300px;\r\n max-width: 500px;\r\n transform: translateX(400px);\r\n transition: transform 0.3s ease;\r\n font-family: inherit;\r\n font-size: 0.875rem;\r\n}\r\n\r\n.itsm-message.itsm-message-show {\r\n transform: translateX(0);\r\n}\r\n\r\n.itsm-message-success {\r\n background-color: #d4edda;\r\n color: #155724;\r\n border: 1px solid #c3e6cb;\r\n}\r\n\r\n.itsm-message-error {\r\n background-color: #f8d7da;\r\n color: #721c24;\r\n border: 1px solid #f5c6cb;\r\n}\r\n\r\n.itsm-message-info {\r\n background-color: #d1ecf1;\r\n color: #0c5460;\r\n border: 1px solid #bee5eb;\r\n}\r\n\r\n/* Responsive */\r\n@media (max-width: 768px) {\r\n .itsm-modal-container {\r\n max-width: 95%;\r\n max-height: 95vh;\r\n }\r\n\r\n .itsm-form-row {\r\n flex-direction: column;\r\n }\r\n\r\n .itsm-form-group-half {\r\n flex: none;\r\n }\r\n\r\n .itsm-modal-header,\r\n .itsm-modal-content,\r\n .itsm-modal-footer {\r\n padding: 1rem;\r\n }\r\n}',""]);const o=i},890:(n,e,t)=>{function r(n){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},r(n)}function i(n,e){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(n);e&&(r=r.filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable})),t.push.apply(t,r)}return t}function o(n){for(var e=1;e<arguments.length;e++){var t=null!=arguments[e]?arguments[e]:{};e%2?i(Object(t),!0).forEach(function(e){a(n,e,t[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(t)):i(Object(t)).forEach(function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(t,e))})}return n}function a(n,e,t){return(e=u(e))in n?Object.defineProperty(n,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[e]=t,n}function s(){var n,e,t="function"==typeof Symbol?Symbol:{},r=t.iterator||"@@iterator",i=t.toStringTag||"@@toStringTag";function o(t,r,i,o){var s=r&&r.prototype instanceof l?r:l,u=Object.create(s.prototype);return c(u,"_invoke",function(t,r,i){var o,s,c,l=0,u=i||[],d=!1,f={p:0,n:0,v:n,a:m,f:m.bind(n,4),d:function(e,t){return o=e,s=0,c=n,f.n=t,a}};function m(t,r){for(s=t,c=r,e=0;!d&&l&&!i&&e<u.length;e++){var i,o=u[e],m=f.p,p=o[2];t>3?(i=p===r)&&(c=o[(s=o[4])?5:(s=3,3)],o[4]=o[5]=n):o[0]<=m&&((i=t<2&&m<o[1])?(s=0,f.v=r,f.n=o[1]):m<p&&(i=t<3||o[0]>r||r>p)&&(o[4]=t,o[5]=r,f.n=p,s=0))}if(i||t>1)return a;throw d=!0,r}return function(i,u,p){if(l>1)throw TypeError("Generator is already running");for(d&&1===u&&m(u,p),s=u,c=p;(e=s<2?n:c)||!d;){o||(s?s<3?(s>1&&(f.n=-1),m(s,c)):f.n=c:f.v=c);try{if(l=2,o){if(s||(i="next"),e=o[i]){if(!(e=e.call(o,c)))throw TypeError("iterator result is not an object");if(!e.done)return e;c=e.value,s<2&&(s=0)}else 1===s&&(e=o.return)&&e.call(o),s<2&&(c=TypeError("The iterator does not provide a '"+i+"' method"),s=1);o=n}else if((e=(d=f.n<0)?c:t.call(r,f))!==a)break}catch(e){o=n,s=1,c=e}finally{l=1}}return{value:e,done:d}}}(t,i,o),!0),u}var a={};function l(){}function u(){}function d(){}e=Object.getPrototypeOf;var f=[][r]?e(e([][r]())):(c(e={},r,function(){return this}),e),m=d.prototype=l.prototype=Object.create(f);function p(n){return Object.setPrototypeOf?Object.setPrototypeOf(n,d):(n.__proto__=d,c(n,i,"GeneratorFunction")),n.prototype=Object.create(m),n}return u.prototype=d,c(m,"constructor",d),c(d,"constructor",u),u.displayName="GeneratorFunction",c(d,i,"GeneratorFunction"),c(m),c(m,i,"Generator"),c(m,r,function(){return this}),c(m,"toString",function(){return"[object Generator]"}),(s=function(){return{w:o,m:p}})()}function c(n,e,t,r){var i=Object.defineProperty;try{i({},"",{})}catch(n){i=0}c=function(n,e,t,r){function o(e,t){c(n,e,function(n){return this._invoke(e,t,n)})}e?i?i(n,e,{value:t,enumerable:!r,configurable:!r,writable:!r}):n[e]=t:(o("next",0),o("throw",1),o("return",2))},c(n,e,t,r)}function l(n,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,u(r.key),r)}}function u(n){var e=function(n,e){if("object"!=r(n)||!n)return n;var t=n[Symbol.toPrimitive];if(void 0!==t){var i=t.call(n,e||"default");if("object"!=r(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(n)}(n,"string");return"symbol"==r(e)?e:e+""}function d(n,e,t,r,i,o,a){try{var s=n[o](a),c=s.value}catch(n){return void t(n)}s.done?e(c):Promise.resolve(c).then(r,i)}function f(n){return function(){var e=this,t=arguments;return new Promise(function(r,i){var o=n.apply(e,t);function a(n){d(o,r,i,a,s,"next",n)}function s(n){d(o,r,i,a,s,"throw",n)}a(void 0)})}}t.d(e,{A:()=>y}),n=t.hmd(n);var m=null,p=null;function h(){return g.apply(this,arguments)}function g(){return(g=f(s().m(function n(){return s().w(function(n){for(;;)switch(n.n){case 0:if(null===m){n.n=1;break}return n.a(2,m);case 1:if(null===p){n.n=2;break}return n.a(2,p);case 2:return p=f(s().m(function n(){var e,t,r,i,o,a,c,l,u,d;return s().w(function(n){for(;;)switch(n.p=n.n){case 0:(e=[]).push("/assets/itsm-widget-config.json"),e.push("./assets/itsm-widget-config.json"),e.push("/itsm-widget-config.json"),e.push("./itsm-widget-config.json"),(t=document.querySelectorAll('script[src*="itsm-widget"]')).length>0&&(r=t[t.length-1].src,i=r.substring(0,r.lastIndexOf("/")),e.push("".concat(i,"/itsm-widget-config.json"))),console.log("[ITSMAPIService] Đang load apiBaseUrl từ file itsm-widget-config.json..."),o=0,a=e;case 1:if(!(o<a.length)){n.n=8;break}return c=a[o],n.p=2,n.n=3,fetch(c);case 3:if(!(l=n.v).ok){n.n=5;break}return n.n=4,l.json();case 4:return u=n.v,m=u,console.log("[ITSMAPIService] ✅ Loaded config from file:",c,"→",u),n.a(2,u);case 5:n.n=7;break;case 6:return n.p=6,n.v,n.a(3,7);case 7:o++,n.n=1;break;case 8:throw d=new Error("File itsm-widget-config.json not found. Đã thử các vị trí: ".concat(e.join(", "))),console.error("[ITSMAPIService] ❌ Cannot load itsm-widget-config.json from any location:",e),d;case 9:return n.a(2)}},n,null,[[2,6]])}))(),n.a(2,p)}},n)}))).apply(this,arguments)}var b=function(){return n=function n(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};!function(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),this.authToken=e.authToken||e.apiToken||"",e.baseUrl&&console.warn("[ITSMAPIService] ⚠️ baseUrl trong constructor bị bỏ qua. Chỉ sử dụng apiBaseUrl từ file itsm-widget-config.json"),this.baseUrl="",this._baseUrlPromise=this._initializeBaseUrl()},e=[{key:"_initializeBaseUrl",value:(d=f(s().m(function n(){var e,t;return s().w(function(n){for(;;)switch(n.p=n.n){case 0:return n.p=0,n.n=1,h();case 1:if((e=n.v)&&e.apiBaseUrl){n.n=2;break}throw new Error("File itsm-widget-config.json không có apiBaseUrl");case 2:return this.baseUrl=e.apiBaseUrl,console.log("[ITSMAPIService] ✅ baseUrl đã được load từ file:",this.baseUrl),n.a(2,this.baseUrl);case 3:throw n.p=3,t=n.v,console.error("[ITSMAPIService] ❌ Lỗi: Không thể load apiBaseUrl từ file itsm-widget-config.json:",t),new Error("Không thể load apiBaseUrl: ".concat(t.message));case 4:return n.a(2)}},n,this,[[0,3]])})),function(){return d.apply(this,arguments)})},{key:"_ensureBaseUrl",value:(u=f(s().m(function n(){return s().w(function(n){for(;;)switch(n.n){case 0:if(this.baseUrl||!this._baseUrlPromise){n.n=1;break}return n.n=1,this._baseUrlPromise;case 1:if(this.baseUrl){n.n=2;break}throw new Error("baseUrl is required. Please ensure itsm-widget-config.json exists and contains apiBaseUrl.");case 2:return n.a(2)}},n,this)})),function(){return u.apply(this,arguments)})},{key:"buildHeaders",value:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"application/json",e={};return this.authToken&&(e.Authorization="Bearer ".concat(this.authToken)),"multipart/form-data"!==n&&(e["Content-Type"]=n),e}},{key:"createRequest",value:(c=f(s().m(function n(e){var t,r,i,o,a;return s().w(function(n){for(;;)switch(n.p=n.n){case 0:return n.n=1,this._ensureBaseUrl();case 1:return t="".concat(this.baseUrl,"/spcit/send"),r={request:{requester:e.requester||{name:""},assets:e.assets||[],category:e.category||null,group:e.group||null,subcategory:e.subcategory||null,technician:e.technician||null,item:e.item||null,priority:e.priority||null,subject:e.subject||"",description:e.description||"",site:e.site||null,attachments:e.attachments||[],udf_fields:e.udf_fields||{},template:e.template||null,zia_properties:e.zia_properties||{}}},n.p=2,n.n=3,fetch(t,{method:"POST",headers:this.buildHeaders("application/json"),body:JSON.stringify(r)});case 3:return i=n.v,n.n=4,i.json();case 4:if(o=n.v,i.ok){n.n=5;break}throw new Error(o.error||o.message||"HTTP error! status: ".concat(i.status));case 5:return n.a(2,o);case 6:throw n.p=6,a=n.v,console.error("Error creating request:",a),a;case 7:return n.a(2)}},n,this,[[2,6]])})),function(n){return c.apply(this,arguments)})},{key:"uploadAttachment",value:(a=f(s().m(function n(e,t){var r,i,o,a,c;return s().w(function(n){for(;;)switch(n.p=n.n){case 0:return n.n=1,this._ensureBaseUrl();case 1:return r="".concat(this.baseUrl,"/spcit/").concat(e,"/upload"),i=new FormData,(Array.isArray(t)?t:[t]).forEach(function(n){n instanceof File&&i.append("files",n)}),n.p=2,n.n=3,fetch(r,{method:"PUT",headers:this.buildHeaders("multipart/form-data"),body:i});case 3:return o=n.v,n.n=4,o.json();case 4:if(a=n.v,o.ok){n.n=5;break}throw new Error(a.error||a.message||"HTTP error! status: ".concat(o.status));case 5:return n.a(2,a);case 6:throw n.p=6,c=n.v,console.error("Error uploading attachment:",c),c;case 7:return n.a(2)}},n,this,[[2,6]])})),function(n,e){return a.apply(this,arguments)})},{key:"createRequestWithAttachments",value:(i=f(s().m(function n(e){var t,r,i,a,c,l,u=arguments;return s().w(function(n){for(;;)switch(n.p=n.n){case 0:return t=u.length>1&&void 0!==u[1]?u[1]:[],n.p=1,n.n=2,this.createRequest(e);case 2:if(i=n.v,!(t&&t.length>0&&null!==(r=i.request)&&void 0!==r&&r.id)){n.n=6;break}return n.p=3,n.n=4,this.uploadAttachment(i.request.id,t);case 4:return a=n.v,n.a(2,o(o({},i),{},{uploadResponse:a}));case 5:return n.p=5,c=n.v,console.warn("Request created but file upload failed:",c),n.a(2,o(o({},i),{},{uploadError:c.message}));case 6:return n.a(2,i);case 7:throw n.p=7,l=n.v,console.error("Error creating request with attachments:",l),l;case 8:return n.a(2)}},n,this,[[3,5],[1,7]])})),function(n){return i.apply(this,arguments)})},{key:"getRequest",value:(r=f(s().m(function n(e){var t,r,i,o,a;return s().w(function(n){for(;;)switch(n.p=n.n){case 0:return n.n=1,this._ensureBaseUrl();case 1:return t="".concat(this.baseUrl,"/spcit/ticket/").concat(e),n.p=2,(r=this.buildHeaders("application/json")).Accept="application/json",n.n=3,fetch(t,{method:"POST",headers:r,body:JSON.stringify({request_id:e})});case 3:return i=n.v,n.n=4,i.json();case 4:if(o=n.v,i.ok){n.n=5;break}throw new Error(o.error||o.message||"HTTP error! status: ".concat(i.status));case 5:return n.a(2,o);case 6:throw n.p=6,a=n.v,console.error("Error getting request:",a),a;case 7:return n.a(2)}},n,this,[[2,6]])})),function(n){return r.apply(this,arguments)})},{key:"mapPriority",value:function(n){return{low:"Thấp",medium:"Trung bình",high:"Cao",none:"Chưa lựa chọn"}[n]||"Chưa lựa chọn"}},{key:"mapCategory",value:function(n){return{hardware:"A01A00 - Quản lý an toàn thông tin",software:"Software Category",network:"Network Category",account:"Account Category",other:"Other Category"}[n]||null}},{key:"buildRequestData",value:function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=e.category||this.mapCategory(n.category),r=e.subcategory||n.subcategory||null,i=e.item||n.item||null,o=e.template||t||null,a=e.requesterName||n.requester||n.contact||"",s=e.site||n.site||"";return{requester:{name:a},category:t?{name:t}:null,subcategory:r?{name:r}:null,priority:{name:this.mapPriority(n.priority||"none")},subject:n.title||"",description:n.description||"",site:s?{name:s}:null,item:i?{name:i}:null,template:o?{name:o}:null,udf_fields:e.udf_fields||{},zia_properties:e.zia_properties||{},assets:[],attachments:[],group:null,technician:null}}}],e&&l(n.prototype,e),t&&l(n,t),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,e,t,r,i,a,c,u,d}();n.exports&&(n.exports=b),"undefined"!=typeof window&&(window.ITSMAPIService=b);const y=b}},e={};function t(r){var i=e[r];if(void 0!==i)return i.exports;var o=e[r]={id:r,loaded:!1,exports:{}};return n[r](o,o.exports,t),o.loaded=!0,o.exports}return t.n=n=>{var e=n&&n.__esModule?()=>n.default:()=>n;return t.d(e,{a:e}),e},t.d=(n,e)=>{for(var r in e)t.o(e,r)&&!t.o(n,r)&&Object.defineProperty(n,r,{enumerable:!0,get:e[r]})},t.hmd=n=>((n=Object.create(n)).children||(n.children=[]),Object.defineProperty(n,"exports",{enumerable:!0,set:()=>{throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: "+n.id)}}),n),t.o=(n,e)=>Object.prototype.hasOwnProperty.call(n,e),t.r=n=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},t.nc=void 0,t(322)})());
2
+ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.ITSMWidget=t():e.ITSMWidget=t()}(window,()=>(()=>{"use strict";var e={72:(e,t,n)=>{var r,i=function(){return void 0===r&&(r=Boolean(window&&document&&document.all&&!window.atob)),r},o=function(){var e={};return function(t){if(void 0===e[t]){var n=document.querySelector(t);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}e[t]=n}return e[t]}}(),s=[];function a(e){for(var t=-1,n=0;n<s.length;n++)if(s[n].identifier===e){t=n;break}return t}function c(e,t){for(var n={},r=[],i=0;i<e.length;i++){var o=e[i],c=t.base?o[0]+t.base:o[0],l=n[c]||0,d="".concat(c," ").concat(l);n[c]=l+1;var u=a(d),m={css:o[1],media:o[2],sourceMap:o[3]};-1!==u?(s[u].references++,s[u].updater(m)):s.push({identifier:d,updater:g(m,t),references:1}),r.push(d)}return r}function l(e){var t=document.createElement("style"),r=e.attributes||{};if(void 0===r.nonce){var i=n.nc;i&&(r.nonce=i)}if(Object.keys(r).forEach(function(e){t.setAttribute(e,r[e])}),"function"==typeof e.insert)e.insert(t);else{var s=o(e.insert||"head");if(!s)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");s.appendChild(t)}return t}var d,u=(d=[],function(e,t){return d[e]=t,d.filter(Boolean).join("\n")});function m(e,t,n,r){var i=n?"":r.media?"@media ".concat(r.media," {").concat(r.css,"}"):r.css;if(e.styleSheet)e.styleSheet.cssText=u(t,i);else{var o=document.createTextNode(i),s=e.childNodes;s[t]&&e.removeChild(s[t]),s.length?e.insertBefore(o,s[t]):e.appendChild(o)}}function f(e,t,n){var r=n.css,i=n.media,o=n.sourceMap;if(i?e.setAttribute("media",i):e.removeAttribute("media"),o&&"undefined"!=typeof btoa&&(r+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(o))))," */")),e.styleSheet)e.styleSheet.cssText=r;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(r))}}var p=null,h=0;function g(e,t){var n,r,i;if(t.singleton){var o=h++;n=p||(p=l(t)),r=m.bind(null,n,o,!1),i=m.bind(null,n,o,!0)}else n=l(t),r=f.bind(null,n,t),i=function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(n)};return r(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;r(e=t)}else i()}}e.exports=function(e,t){(t=t||{}).singleton||"boolean"==typeof t.singleton||(t.singleton=i());var n=c(e=e||[],t);return function(e){if(e=e||[],"[object Array]"===Object.prototype.toString.call(e)){for(var r=0;r<n.length;r++){var i=a(n[r]);s[i].references--}for(var o=c(e,t),l=0;l<n.length;l++){var d=a(n[l]);0===s[d].references&&(s[d].updater(),s.splice(d,1))}n=o}}}},314:e=>{e.exports=function(e){var t=[];return t.toString=function(){return this.map(function(t){var n=e(t);return t[2]?"@media ".concat(t[2]," {").concat(n,"}"):n}).join("")},t.i=function(e,n,r){"string"==typeof e&&(e=[[null,e,""]]);var i={};if(r)for(var o=0;o<this.length;o++){var s=this[o][0];null!=s&&(i[s]=!0)}for(var a=0;a<e.length;a++){var c=[].concat(e[a]);r&&i[c[0]]||(n&&(c[2]?c[2]="".concat(n," and ").concat(c[2]):c[2]=n),t.push(c))}},t}},322:(e,t,n)=>{n.r(t),n.d(t,{default:()=>_});var r=n(72),i=n.n(r),o=n(555),s={insert:"head",singleton:!1};i()(o.A,s);o.A.locals;var a=n(890),c=["Bổ sung chương trình","Dữ liệu","Hiệu chỉnh chương trình","Nghiệp vụ","Phần mềm"],l="EVNSPC",d="A - An toàn điện",u="A1 - Phần mềm ứng dụng",m="C - The Business/Customer Service Catalog",f="Máy tính";function p(e){return p="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},p(e)}e=n.hmd(e);var h=["apiBaseUrl"];function g(){var e,t,n="function"==typeof Symbol?Symbol:{},r=n.iterator||"@@iterator",i=n.toStringTag||"@@toStringTag";function o(n,r,i,o){var c=r&&r.prototype instanceof a?r:a,l=Object.create(c.prototype);return b(l,"_invoke",function(n,r,i){var o,a,c,l=0,d=i||[],u=!1,m={p:0,n:0,v:e,a:f,f:f.bind(e,4),d:function(t,n){return o=t,a=0,c=e,m.n=n,s}};function f(n,r){for(a=n,c=r,t=0;!u&&l&&!i&&t<d.length;t++){var i,o=d[t],f=m.p,p=o[2];n>3?(i=p===r)&&(c=o[(a=o[4])?5:(a=3,3)],o[4]=o[5]=e):o[0]<=f&&((i=n<2&&f<o[1])?(a=0,m.v=r,m.n=o[1]):f<p&&(i=n<3||o[0]>r||r>p)&&(o[4]=n,o[5]=r,m.n=p,a=0))}if(i||n>1)return s;throw u=!0,r}return function(i,d,p){if(l>1)throw TypeError("Generator is already running");for(u&&1===d&&f(d,p),a=d,c=p;(t=a<2?e:c)||!u;){o||(a?a<3?(a>1&&(m.n=-1),f(a,c)):m.n=c:m.v=c);try{if(l=2,o){if(a||(i="next"),t=o[i]){if(!(t=t.call(o,c)))throw TypeError("iterator result is not an object");if(!t.done)return t;c=t.value,a<2&&(a=0)}else 1===a&&(t=o.return)&&t.call(o),a<2&&(c=TypeError("The iterator does not provide a '"+i+"' method"),a=1);o=e}else if((t=(u=m.n<0)?c:n.call(r,m))!==s)break}catch(t){o=e,a=1,c=t}finally{l=1}}return{value:t,done:u}}}(n,i,o),!0),l}var s={};function a(){}function c(){}function l(){}t=Object.getPrototypeOf;var d=[][r]?t(t([][r]())):(b(t={},r,function(){return this}),t),u=l.prototype=a.prototype=Object.create(d);function m(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,l):(e.__proto__=l,b(e,i,"GeneratorFunction")),e.prototype=Object.create(u),e}return c.prototype=l,b(u,"constructor",l),b(l,"constructor",c),c.displayName="GeneratorFunction",b(l,i,"GeneratorFunction"),b(u),b(u,i,"Generator"),b(u,r,function(){return this}),b(u,"toString",function(){return"[object Generator]"}),(g=function(){return{w:o,m}})()}function b(e,t,n,r){var i=Object.defineProperty;try{i({},"",{})}catch(e){i=0}b=function(e,t,n,r){function o(t,n){b(e,t,function(e){return this._invoke(t,n,e)})}t?i?i(e,t,{value:n,enumerable:!r,configurable:!r,writable:!r}):e[t]=n:(o("next",0),o("throw",1),o("return",2))},b(e,t,n,r)}function y(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function v(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?y(Object(n),!0).forEach(function(t){w(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):y(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function w(e,t,n){return(t=k(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function x(e,t){if(null==e)return{};var n,r,i=function(e,t){if(null==e)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(-1!==t.indexOf(r))continue;n[r]=e[r]}return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],-1===t.indexOf(n)&&{}.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function S(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,k(r.key),r)}}function k(e){var t=function(e,t){if("object"!=p(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!=p(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==p(t)?t:t+""}function C(e,t,n,r,i,o,s){try{var a=e[o](s),c=a.value}catch(e){return void n(e)}a.done?t(c):Promise.resolve(c).then(r,i)}function q(e){return function(){var t=this,n=arguments;return new Promise(function(r,i){var o=e.apply(t,n);function s(e){C(o,r,i,s,a,"next",e)}function a(e){C(o,r,i,s,a,"throw",e)}s(void 0)})}}var T=function(){return window.__itsmWidgetConfigCache||(window.__itsmWidgetConfigCache={cache:null,loadingPromise:null}),window.__itsmWidgetConfigCache};function A(){return M.apply(this,arguments)}function M(){return(M=q(g().m(function e(){var t;return g().w(function(e){for(;;)switch(e.n){case 0:if(null===(t=T()).cache){e.n=1;break}return e.a(2,t.cache);case 1:if(null===t.loadingPromise){e.n=2;break}return e.a(2,t.loadingPromise);case 2:return t.loadingPromise=q(g().m(function e(){var n,r,i,o,s,a,c,l;return g().w(function(e){for(;;)switch(e.p=e.n){case 0:n=[],r=0,i=["/assets/itsm-widget-config.json","./assets/itsm-widget-config.json","/node_modules/itsm-widget/dist/itsm-widget-config.json","./node_modules/itsm-widget/dist/itsm-widget-config.json","/itsm-widget-config.json","./itsm-widget-config.json","assets/itsm-widget-config.json","node_modules/itsm-widget/dist/itsm-widget-config.json","itsm-widget-config.json"];case 1:if(!(r<i.length)){e.n=8;break}return o=i[r],n.push(o),e.p=2,e.n=3,fetch(o);case 3:if(!(s=e.v).ok){e.n=5;break}return e.n=4,s.json();case 4:return a=e.v,t.cache=a,console.log("[ITSMWidget] ✅ Loaded config from: ".concat(o)),e.a(2,a);case 5:e.n=7;break;case 6:return e.p=6,l=e.v,e.a(3,7);case 7:r++,e.n=1;break;case 8:throw c="File itsm-widget-config.json not found. Đã thử các vị trí: ".concat(n.join(", ")),console.error("[ITSMWidget] ❌ Cannot load itsm-widget-config.json"),console.error("[ITSMWidget] Tried locations:",n),new Error(c);case 9:return e.a(2)}},e,null,[[2,6]])}))(),e.a(2,t.loadingPromise)}},e)}))).apply(this,arguments)}var j=function(){return e=function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this._configPromise=this._initializeConfig(t)},t=[{key:"_initializeConfig",value:(b=q(g().m(function e(t){var n,r,i;return g().w(function(e){for(;;)switch(e.p=e.n){case 0:return e.p=0,e.n=1,A();case 1:if((n=e.v)&&n.apiBaseUrl){e.n=2;break}throw new Error("File itsm-widget-config.json không có apiBaseUrl");case 2:t.apiBaseUrl,r=x(t,h),this.config=this._buildConfig(v(v({},n),r)),this._initWidget(),e.n=4;break;case 3:throw e.p=3,i=e.v,console.error("[ITSMWidget] ❌ Không thể load config:",i.message),new Error("Không thể load config: ".concat(i.message));case 4:return e.a(2)}},e,this,[[0,3]])})),function(e){return b.apply(this,arguments)})},{key:"_buildConfig",value:function(e){if(!e.apiBaseUrl)throw new Error("apiBaseUrl is required in itsm-widget-config.json");return v({apiBaseUrl:e.apiBaseUrl,authToken:e.authToken||e.apiToken||"",getAuthToken:e.getAuthToken||null,getRequesterName:e.getRequesterName||null,getSite:e.getSite||null,position:e.position||"bottom-right",iconText:e.iconText||"📝",iconImage:void 0!==e.iconImage?e.iconImage:"data:image/png;base64,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",iconColor:e.iconColor||"#335fb3",title:e.title||"Tạo phiếu yêu cầu ITSM",requesterName:e.requesterName||"",site:e.site||"",udf_fields:e.udf_fields||{}},e)}},{key:"_initWidget",value:function(){this.apiService=new a.A({baseUrl:this.config.apiBaseUrl,authToken:this.config.authToken}),this.isOpen=!1,this.widgetContainer=null,this.modalContainer=null,this.init()}},{key:"init",value:function(){this.createWidgetButton(),this.createModal(),this.attachEvents()}},{key:"createWidgetButton",value:function(){var e=document.createElement("div");e.id="itsm-widget-button",e.className="itsm-widget-button itsm-position-".concat(this.config.position);var t="";t=this.config.iconImage&&null!==this.config.iconImage?'<img src="'.concat(this.config.iconImage,'" alt="ITSM Widget" class="itsm-widget-icon-img" />'):this.config.iconText||"📝";var n=this.config.iconImage&&null!==this.config.iconImage?"":"background-color: ".concat(this.config.iconColor,";");e.style.borderColor=this.config.iconColor,e.innerHTML='\n <div class="itsm-widget-icon" style="'.concat(n,'">\n ').concat(t,"\n </div>\n "),document.body.appendChild(e),this.widgetContainer=e}},{key:"createModal",value:function(){var e=document.createElement("div");e.id="itsm-widget-modal",e.className="itsm-modal-overlay",e.innerHTML='\n <div class="itsm-modal-container" style="width: 50vw; max-width: 90vw;">\n <div class="itsm-modal-header">\n <span class="itsm-modal-title">'.concat(this.config.title,'</span>\n <div class="itsm-modal-header-icons">\n <button class="itsm-modal-close" aria-label="Đóng">\n <span>×</span>\n </button>\n </div>\n </div>\n <div class="itsm-modal-content">\n <form id="itsm-request-form" class="itsm-form">\n \n\n <div class="itsm-form-group">\n <label for="itsm-requester">\n Người yêu cầu <span class="itsm-required">*</span>\n </label>\n <input \n type="text" \n id="itsm-requester" \n name="requester" \n class="itsm-input" \n disabled\n placeholder=""\n value="').concat(this.config.requesterName||"",'"\n />\n </div>\n <div class="itsm-form-group">\n <label for="itsm-site">Đơn vị</label>\n <input \n type="text" \n id="itsm-site" \n name="site" \n class="itsm-input" \n disabled\n placeholder=""\n value="').concat(this.config.site||"",'"\n />\n </div>\n\n <div class="itsm-form-group">\n <label for="itsm-category">\n Danh mục dịch vụ <span class="itsm-required">*</span>\n </label>\n <div class="itsm-custom-select" data-select-id="itsm-category">\n <input type="hidden" id="itsm-category" name="category" required>\n <div class="itsm-select-display" tabindex="0">\n <span class="itsm-select-text">-- Chọn danh mục --</span>\n <span class="itsm-select-arrow">▼</span>\n </div>\n <div class="itsm-select-dropdown">\n <input \n type="text" \n class="itsm-select-filter" \n placeholder="Tìm kiếm danh mục..."\n autocomplete="off"\n />\n <div class="itsm-select-options"></div>\n </div>\n </div>\n </div>\n\n <div class="itsm-form-group">\n <label for="itsm-subcategory">\n Dịch vụ con <span class="itsm-required">*</span>\n </label>\n <div class="itsm-custom-select" data-select-id="itsm-subcategory" data-disabled="true">\n <input type="hidden" id="itsm-subcategory" name="subcategory" required>\n <div class="itsm-select-display" tabindex="0">\n <span class="itsm-select-text">Chưa lựa chọn</span>\n <span class="itsm-select-arrow">▼</span>\n </div>\n <div class="itsm-select-dropdown">\n <input \n type="text" \n class="itsm-select-filter" \n placeholder="Tìm kiếm dịch vụ con..."\n autocomplete="off"\n />\n <div class="itsm-select-options"></div>\n </div>\n </div>\n </div>\n\n <div class="itsm-form-group">\n <label for="itsm-item">\n Chi tiết dịch vụ <span class="itsm-required">*</span>\n </label>\n <div class="itsm-custom-select" data-select-id="itsm-item" data-disabled="true">\n <input type="hidden" id="itsm-item" name="item" required>\n <div class="itsm-select-display" tabindex="0">\n <span class="itsm-select-text">Chưa lựa chọn</span>\n <span class="itsm-select-arrow">▼</span>\n </div>\n <div class="itsm-select-dropdown">\n <input \n type="text" \n class="itsm-select-filter" \n placeholder="Tìm kiếm chi tiết dịch vụ..."\n autocomplete="off"\n />\n <div class="itsm-select-options"></div>\n </div>\n </div>\n </div>\n\n <div class="itsm-form-row">\n <div class="itsm-form-group itsm-form-group-half">\n <label for="itsm-priority">\n Mức độ ưu tiên <span class="itsm-required">*</span>\n </label>\n <div class="itsm-custom-select" data-select-id="itsm-priority" data-no-filter="true">\n <input type="hidden" id="itsm-priority" name="priority" required>\n <div class="itsm-select-display" tabindex="0">\n <span class="itsm-select-text">Chưa lựa chọn</span>\n <span class="itsm-select-arrow">▼</span>\n </div>\n <div class="itsm-select-dropdown">\n <div class="itsm-select-options"></div>\n </div>\n </div>\n </div>\n\n <div class="itsm-form-group itsm-form-group-half">\n <label for="itsm-udf-pick-305">Loại hỗ trợ</label>\n <div class="itsm-custom-select" data-select-id="itsm-udf-pick-305" data-no-filter="true">\n <input type="hidden" id="itsm-udf-pick-305" name="udf_pick_305">\n <div class="itsm-select-display" tabindex="0">\n <span class="itsm-select-text">Chưa lựa chọn</span>\n <span class="itsm-select-arrow">▼</span>\n </div>\n <div class="itsm-select-dropdown">\n <div class="itsm-select-options"></div>\n </div>\n </div>\n </div>\n </div>\n \n <div class="itsm-form-group">\n <label for="itsm-udf-pick-306">\n Loại thiết bị sử dụng <span class="itsm-required">*</span>\n </label>\n <div class="itsm-custom-select" data-select-id="itsm-udf-pick-306" data-no-filter="true">\n <input type="hidden" id="itsm-udf-pick-306" name="udf_pick_306" required>\n <div class="itsm-select-display" tabindex="0">\n <span class="itsm-select-text">Chưa lựa chọn</span>\n <span class="itsm-select-arrow">▼</span>\n </div>\n <div class="itsm-select-dropdown">\n <div class="itsm-select-options"></div>\n </div>\n </div>\n </div>\n\n <div class="itsm-form-group">\n <label for="itsm-title">\n Tiêu đề <span class="itsm-required">*</span>\n </label>\n <input \n type="text" \n id="itsm-title" \n name="title" \n class="itsm-input" \n required \n placeholder="Nhập tiêu đề phiếu yêu cầu"\n />\n </div>\n\n <div class="itsm-form-group">\n <label for="itsm-description-editor">\n Mô tả <span class="itsm-required">*</span>\n </label>\n <div class="itsm-editor-container">\n <div class="itsm-editor-toolbar">\n <button type="button" class="itsm-editor-btn" data-command="bold" title="Bold">\n <strong>B</strong>\n </button>\n <button type="button" class="itsm-editor-btn" data-command="italic" title="Italic">\n <em>I</em>\n </button>\n <button type="button" class="itsm-editor-btn" data-command="underline" title="Underline">\n <u>U</u>\n </button>\n <div class="itsm-editor-separator"></div>\n <button type="button" class="itsm-editor-btn" data-command="insertUnorderedList" title="Bullet List">• List</button>\n <button type="button" class="itsm-editor-btn" data-command="insertOrderedList" title="Numbered List">1. List</button>\n <div class="itsm-editor-separator"></div>\n <label class="itsm-editor-file-btn">\n 📎 Đính kèm file\n <input \n type="file" \n id="itsm-attachment" \n name="attachment" \n multiple\n style="display: none;"\n />\n </label>\n </div>\n <div \n id="itsm-description-editor" \n class="itsm-editor-content"\n contenteditable="true"\n data-placeholder="Nhập mô tả chi tiết yêu cầu..."\n ></div>\n <textarea \n id="itsm-description" \n name="description" \n style="display: none;"\n required\n ></textarea>\n <div id="itsm-file-list" class="itsm-file-list"></div>\n </div>\n </div>\n\n <div class="itsm-modal-footer">\n <button type="button" class="itsm-btn itsm-btn-secondary" id="itsm-cancel-btn">\n Hủy\n </button>\n <button type="submit" class="itsm-btn itsm-btn-primary" id="itsm-submit-btn">\n <span class="itsm-btn-text">Gửi Yêu Cầu</span>\n <span class="itsm-btn-loading" style="display: none;">Đang gửi...</span>\n </button>\n </div>\n </form>\n </div>\n </div>\n '),document.body.appendChild(e),this.modalContainer=e}},{key:"attachEvents",value:function(){var e=this;this.widgetContainer.addEventListener("click",function(){e.toggleModal()});var t=this.modalContainer.querySelector(".itsm-modal-close"),n=this.modalContainer.querySelector("#itsm-cancel-btn"),r=this.modalContainer;t&&t.addEventListener("click",function(){return e.closeModal()}),n&&n.addEventListener("click",function(){return e.closeModal()}),r.addEventListener("click",function(t){t.target===r&&e.closeModal()}),this.modalContainer.querySelector("#itsm-request-form").addEventListener("submit",function(t){return e.handleSubmit(t)}),this.modalContainer.querySelector("#itsm-attachment").addEventListener("change",function(t){return e.handleFileSelect(t)}),this.initEditor(),this.initCategoryDropdowns()}},{key:"initEditor",value:function(){var e=this.modalContainer.querySelector("#itsm-description-editor"),t=this.modalContainer.querySelector("#itsm-description"),n=this.modalContainer.querySelector(".itsm-editor-toolbar");e.addEventListener("input",function(){t.value=e.innerHTML,e.textContent.trim()?t.setCustomValidity(""):t.setCustomValidity("Mô tả là bắt buộc")}),e.addEventListener("focus",function(){""===e.textContent.trim()&&(e.innerHTML="")}),e.addEventListener("blur",function(){""===e.textContent.trim()&&(e.innerHTML="")}),n.querySelectorAll(".itsm-editor-btn[data-command]").forEach(function(n){n.addEventListener("click",function(r){r.preventDefault();var i=n.getAttribute("data-command");e.focus(),document.execCommand(i,!1,null),t.value=e.innerHTML})})}},{key:"initCategoryDropdowns",value:function(){var e=this,t=this.modalContainer.querySelector('[data-select-id="itsm-category"]'),n=this.modalContainer.querySelector('[data-select-id="itsm-subcategory"]'),r=this.modalContainer.querySelector('[data-select-id="itsm-item"]'),i=this.modalContainer.querySelector('[data-select-id="itsm-priority"]'),o=this.modalContainer.querySelector('[data-select-id="itsm-udf-pick-305"]'),s=this.modalContainer.querySelector('[data-select-id="itsm-udf-pick-306"]');this.categoryMap=new Map,this.subcategoryMap=new Map,this.allCategories=[],this.allSubcategories=[],this.allItems=[],this._initCustomSelect(t,"category"),this._initCustomSelect(n,"subcategory"),this._initCustomSelect(r,"item"),this._initCustomSelect(i,"priority"),this._initCustomSelect(o,"udf_pick_305"),this._initCustomSelect(s,"udf_pick_306"),this._populateCustomSelect(i,[{value:"low",text:"Thấp"},{value:"medium",text:"Trung bình"},{value:"high",text:"Cao"}],"Chưa lựa chọn");var a=c.map(function(e){return{value:e,text:e}});this._populateCustomSelect(o,a,"Chưa lựa chọn"),this._populateCustomSelect(s,[{value:"Máy tính",text:"Máy tính"},{value:"Máy tính bảng",text:"Máy tính bảng"},{value:"Điện thoại",text:"Điện thoại"},{value:"Laptop",text:"Laptop"}],"Chưa lựa chọn"),this._loadCategories(t,n,r),t&&t.querySelector('input[type="hidden"]').addEventListener("change",function(){var t=q(g().m(function t(i){var o,s;return g().w(function(t){for(;;)switch(t.n){case 0:if(o=i.target.value,e._resetCustomSelect(n,"Chưa lựa chọn",!0),e._resetCustomSelect(r,"Chưa lựa chọn",!0),!o){t.n=1;break}if(!(s=e.categoryMap.get(o))||!s.id){t.n=1;break}return t.n=1,e._loadSubcategories(s.id,n,r);case 1:return t.a(2)}},t)}));return function(e){return t.apply(this,arguments)}}()),n&&n.querySelector('input[type="hidden"]').addEventListener("change",function(){var t=q(g().m(function t(n){var i,o;return g().w(function(t){for(;;)switch(t.n){case 0:if(i=n.target.value,e._resetCustomSelect(r,"Chưa lựa chọn",!i),!i){t.n=1;break}if(!(o=e.subcategoryMap.get(i))||!o.id){t.n=1;break}return t.n=1,e._loadItems(o.id,r);case 1:return t.a(2)}},t)}));return function(e){return t.apply(this,arguments)}}())}},{key:"_initCustomSelect",value:function(e,t){var n=this;if(e){var r=e.querySelector(".itsm-select-display"),i=(e.querySelector(".itsm-select-dropdown"),e.querySelector(".itsm-select-filter")),o=e.querySelector(".itsm-select-options"),s=(e.querySelector('input[type="hidden"]'),"true"===e.getAttribute("data-disabled"));s&&(r.classList.add("disabled"),r.setAttribute("tabindex","-1")),r.addEventListener("click",function(t){"true"===e.getAttribute("data-disabled")||(t.stopPropagation(),n._toggleDropdown(e))}),document.addEventListener("click",function(t){e.contains(t.target)||n._closeDropdown(e)}),i&&(i.addEventListener("input",function(e){var t=e.target.value.toLowerCase().trim();n._filterCustomOptions(o,t)}),i.addEventListener("click",function(e){e.stopPropagation()})),r.addEventListener("keydown",function(t){"Enter"!==t.key&&" "!==t.key||(t.preventDefault(),s||n._toggleDropdown(e))})}}},{key:"_toggleDropdown",value:function(e){var t=e.querySelector(".itsm-select-dropdown"),n=t.classList.contains("open");if(this.modalContainer.querySelectorAll(".itsm-select-dropdown.open").forEach(function(e){e!==t&&e.classList.remove("open")}),n)t.classList.remove("open");else{t.classList.add("open");var r=e.querySelector(".itsm-select-filter");r&&setTimeout(function(){return r.focus()},10)}}},{key:"_closeDropdown",value:function(e){e.querySelector(".itsm-select-dropdown").classList.remove("open");var t=e.querySelector(".itsm-select-filter");t&&(t.value="")}},{key:"_resetCustomSelect",value:function(e,t,n){if(e){var r=e.querySelector(".itsm-select-display"),i=r.querySelector(".itsm-select-text"),o=e.querySelector('input[type="hidden"]'),s=e.querySelector(".itsm-select-options"),a=e.querySelector(".itsm-select-filter");i.textContent=t,o.value="",n?(r.classList.add("disabled"),r.setAttribute("tabindex","-1"),e.setAttribute("data-disabled","true")):(r.classList.remove("disabled"),r.setAttribute("tabindex","0"),e.setAttribute("data-disabled","false")),a&&(a.value="",a.disabled=n),s.innerHTML="",this._closeDropdown(e)}}},{key:"_filterCustomOptions",value:function(e,t){Array.from(e.querySelectorAll(".itsm-select-option")).forEach(function(e){var n=e.textContent.toLowerCase();!t||n.includes(t)?e.style.display="":e.style.display="none"})}},{key:"_populateCustomSelect",value:function(e,t,n){var r=this;if(e){var i=e.querySelector(".itsm-select-options"),o=e.querySelector('input[type="hidden"]');if(i){console.log("[ITSMWidget] _populateCustomSelect: populating",t.length,"options"),i.innerHTML="",t.forEach(function(t,n){var s=document.createElement("div");s.className="itsm-select-option",s.textContent=t.text,s.dataset.value=t.value,t.dataset&&Object.keys(t.dataset).forEach(function(e){s.dataset[e]=t.dataset[e]}),s.addEventListener("click",function(t){t.stopPropagation();var n=s.dataset.value,i=s.textContent;o.value=n,e.querySelector(".itsm-select-text").textContent=i,o.dispatchEvent(new Event("change",{bubbles:!0})),r._closeDropdown(e)}),i.appendChild(s)});var s=i.querySelectorAll(".itsm-select-option").length;console.log("[ITSMWidget] _populateCustomSelect: added",s,"options to DOM")}else console.error("[ITSMWidget] _populateCustomSelect: optionsContainer not found")}else console.warn("[ITSMWidget] _populateCustomSelect: customSelectElement is null")}},{key:"_loadCategories",value:(p=q(g().m(function e(t,n,r){var i,o,s,a,c,l=this;return g().w(function(e){for(;;)switch(e.p=e.n){case 0:if(t){e.n=1;break}return e.a(2);case 1:return e.p=1,i=t.querySelector(".itsm-select-display"),(o=i.querySelector(".itsm-select-text")).textContent="Đang tải...",i.classList.add("disabled"),e.n=2,this.apiService.getAllCategories();case 2:(s=e.v)&&s.categories&&Array.isArray(s.categories)?(this.allCategories=[],s.categories.forEach(function(e){e&&e.name&&e.id&&(l.categoryMap.set(e.name,{id:e.id,name:e.name}),l.allCategories.push({value:e.name,text:e.name,dataset:{categoryId:e.id}}))}),this._populateCustomSelect(t,this.allCategories,"-- Chọn danh mục --"),o.textContent="-- Chọn danh mục --"):(o.textContent="Không có dữ liệu",console.error("[ITSMWidget] Invalid categories response:",s)),e.n=4;break;case 3:e.p=3,c=e.v,console.error("[ITSMWidget] Error loading categories:",c),t.querySelector(".itsm-select-text").textContent="Lỗi tải dữ liệu";case 4:return e.p=4,(a=t.querySelector(".itsm-select-display")).classList.remove("disabled"),a.setAttribute("tabindex","0"),t.setAttribute("data-disabled","false"),e.f(4);case 5:return e.a(2)}},e,this,[[1,3,4,5]])})),function(e,t,n){return p.apply(this,arguments)})},{key:"_loadSubcategories",value:(s=q(g().m(function e(t,n,r){var i,o,s,a,c,l,d,u,m,f,p=this;return g().w(function(e){for(;;)switch(e.p=e.n){case 0:if(n){e.n=1;break}return e.a(2);case 1:return e.p=1,i=n.querySelector(".itsm-select-display"),(o=i.querySelector(".itsm-select-text")).textContent="Đang tải...",i.classList.add("disabled"),this._resetCustomSelect(r,"Chưa lựa chọn",!0),this.subcategoryMap.clear(),e.n=2,this.apiService.getSubcategoriesByCategoryId(t);case 2:s=e.v,console.log("[ITSMWidget] Subcategories response:",s),s&&s.subcategories&&Array.isArray(s.subcategories)?(this.allSubcategories=[],s.subcategories.forEach(function(e){e&&e.name&&e.id&&(p.subcategoryMap.set(e.name,{id:e.id,name:e.name}),p.allSubcategories.push({value:e.name,text:e.name,dataset:{subcategoryId:e.id}}))}),console.log("[ITSMWidget] Processed subcategories:",this.allSubcategories.length,this.allSubcategories),this.allSubcategories.length>0?(this._populateCustomSelect(n,this.allSubcategories,"Chưa lựa chọn"),(a=n.querySelector(".itsm-select-display")).classList.remove("disabled"),a.setAttribute("tabindex","0"),n.setAttribute("data-disabled","false"),(c=n.querySelector(".itsm-select-filter"))&&(c.disabled=!1),l=n.querySelector(".itsm-select-options"),d=l.querySelectorAll(".itsm-select-option").length,console.log("[ITSMWidget] Options populated:",d,"options in dropdown"),o.textContent="Chưa lựa chọn"):(o.textContent="Không có dữ liệu",console.warn("[ITSMWidget] No subcategories found for category:",t))):(o.textContent="Không có dữ liệu",console.error("[ITSMWidget] Invalid subcategories response:",s)),e.n=4;break;case 3:e.p=3,f=e.v,console.error("[ITSMWidget] Error loading subcategories:",f),n.querySelector(".itsm-select-text").textContent="Lỗi tải dữ liệu";case 4:return e.p=4,(u=n.querySelector(".itsm-select-display")).classList.contains("disabled")||(u.classList.remove("disabled"),u.setAttribute("tabindex","0"),n.setAttribute("data-disabled","false"),(m=n.querySelector(".itsm-select-filter"))&&(m.disabled=!1)),e.f(4);case 5:return e.a(2)}},e,this,[[1,3,4,5]])})),function(e,t,n){return s.apply(this,arguments)})},{key:"_loadItems",value:(o=q(g().m(function e(t,n){var r,i,o,s,a,c,l,d,u=this;return g().w(function(e){for(;;)switch(e.p=e.n){case 0:if(n){e.n=1;break}return e.a(2);case 1:return e.p=1,r=n.querySelector(".itsm-select-display"),(i=r.querySelector(".itsm-select-text")).textContent="Đang tải...",r.classList.add("disabled"),e.n=2,this.apiService.getItemsBySubcategoryId(t);case 2:(o=e.v)&&o.items&&Array.isArray(o.items)?(this.allItems=[],o.items.forEach(function(e){if(e&&e.name){var t={};e.id&&(t.itemId=e.id),u.allItems.push({value:e.name,text:e.name,dataset:t})}}),this.allItems.length>0?(this._populateCustomSelect(n,this.allItems,"Chưa lựa chọn"),(s=n.querySelector(".itsm-select-display")).classList.remove("disabled"),s.setAttribute("tabindex","0"),n.setAttribute("data-disabled","false"),(a=n.querySelector(".itsm-select-filter"))&&(a.disabled=!1),i.textContent="Chưa lựa chọn"):(i.textContent="Không có dữ liệu",console.warn("[ITSMWidget] No items found for subcategory:",t))):(i.textContent="Không có dữ liệu",console.error("[ITSMWidget] Invalid items response:",o)),e.n=4;break;case 3:e.p=3,d=e.v,console.error("[ITSMWidget] Error loading items:",d),n.querySelector(".itsm-select-text").textContent="Lỗi tải dữ liệu";case 4:return e.p=4,(c=n.querySelector(".itsm-select-display")).classList.contains("disabled")||(c.classList.remove("disabled"),c.setAttribute("tabindex","0"),n.setAttribute("data-disabled","false"),(l=n.querySelector(".itsm-select-filter"))&&(l.disabled=!1)),e.f(4);case 5:return e.a(2)}},e,this,[[1,3,4,5]])})),function(e,t){return o.apply(this,arguments)})},{key:"toggleModal",value:function(){this.isOpen?this.closeModal():this.openModal()}},{key:"openModal",value:function(){if(this.config.getAuthToken&&"function"==typeof this.config.getAuthToken){var e=this.config.getAuthToken();e&&this.apiService&&(this.apiService.authToken=e,this.config.authToken=e)}if(this.config.getRequesterName&&"function"==typeof this.config.getRequesterName){var t=this.config.getRequesterName();if(t){this.config.requesterName=t;var n=this.modalContainer.querySelector("#itsm-requester");n&&(n.value=t)}}if(this.config.getSite&&"function"==typeof this.config.getSite){var r=this.config.getSite();if(r){this.config.site=r;var i=this.modalContainer.querySelector("#itsm-site");i&&(i.value=r)}}this.modalContainer.classList.add("itsm-modal-active"),this.modalContainer.style.display="flex",this.isOpen=!0,document.body.style.overflow="hidden"}},{key:"closeModal",value:function(){this.modalContainer.classList.remove("itsm-modal-active"),this.modalContainer.style.display="none",this.isOpen=!1,document.body.style.overflow=""}},{key:"handleFileSelect",value:function(e){var t=this,n=Array.from(e.target.files),r=this.modalContainer.querySelector("#itsm-file-list");0!==n.length?r.innerHTML=n.map(function(e){return'\n <div class="itsm-file-item">\n <span class="itsm-file-name">'.concat(e.name,'</span>\n <span class="itsm-file-size">').concat(t.formatFileSize(e.size),"</span>\n </div>\n ")}).join(""):r.innerHTML=""}},{key:"formatFileSize",value:function(e){if(0===e)return"0 Bytes";var t=Math.floor(Math.log(e)/Math.log(1024));return Math.round(e/Math.pow(1024,t)*100)/100+" "+["Bytes","KB","MB","GB"][t]}},{key:"handleSubmit",value:(i=q(g().m(function e(t){var n,r,i,o,s,a,c,l,d,u,m,f,p,h,b,y,v,w,x=this;return g().w(function(e){for(;;)switch(e.p=e.n){case 0:if(t.preventDefault(),n=t.target,r=new FormData(n),this.config.getAuthToken&&"function"==typeof this.config.getAuthToken&&(i=this.config.getAuthToken())&&this.apiService&&(this.apiService.authToken=i,this.config.authToken=i),o="",o=this.config.getRequesterName&&"function"==typeof this.config.getRequesterName?this.config.getRequesterName()||"":this.config.requesterName||r.get("requester")||"",s="",s=this.config.getSite&&"function"==typeof this.config.getSite?this.config.getSite()||"":this.config.site||r.get("site")||"",a={title:r.get("title"),description:r.get("description"),requester:o,category:r.get("category"),subcategory:r.get("subcategory"),item:r.get("item"),priority:r.get("priority"),site:s,udf_pick_305:r.get("udf_pick_305"),udf_pick_306:r.get("udf_pick_306"),contact:r.get("contact"),attachments:[]},c=this.modalContainer.querySelector("#itsm-description-editor"),a.description=c?c.innerHTML.trim():a.description,a.title&&a.description&&a.category&&a.subcategory&&a.item&&a.priority&&a.udf_pick_306&&a.requester){e.n=1;break}return this.showMessage("Vui lòng điền đầy đủ thông tin bắt buộc!","error"),e.a(2);case 1:if(c&&c.textContent.trim()){e.n=2;break}return this.showMessage("Mô tả không được để trống!","error"),null==c||c.focus(),e.a(2);case 2:return l=n.querySelector("#itsm-attachment"),d=Array.from(l.files),u=n.querySelector("#itsm-submit-btn"),m=u.querySelector(".itsm-btn-text"),f=u.querySelector(".itsm-btn-loading"),m.style.display="none",f.style.display="inline",u.disabled=!0,e.p=3,e.n=4,this.submitRequest(a,d);case 4:p=e.v,this.showMessage("Phiếu yêu cầu đã được gửi thành công!","success"),n.reset(),(h=this.modalContainer.querySelector("#itsm-description-editor"))&&(h.innerHTML=""),this.modalContainer.querySelector("#itsm-file-list").innerHTML="",b=this.modalContainer.querySelector('[data-select-id="itsm-category"]'),y=this.modalContainer.querySelector('[data-select-id="itsm-subcategory"]'),v=this.modalContainer.querySelector('[data-select-id="itsm-item"]'),b&&this._resetCustomSelect(b,"-- Chọn danh mục --",!1),this._resetCustomSelect(y,"Chưa lựa chọn",!0),this._resetCustomSelect(v,"Chưa lựa chọn",!0),setTimeout(function(){x.closeModal()},1500),this.config.onSuccess&&this.config.onSuccess(p),e.n=6;break;case 5:e.p=5,w=e.v,console.error("Error submitting ITSM request:",w),this.showMessage(w.message||"Có lỗi xảy ra khi gửi yêu cầu. Vui lòng thử lại!","error");case 6:return e.p=6,m.style.display="inline",f.style.display="none",u.disabled=!1,e.f(6);case 7:return e.a(2)}},e,this,[[3,5,6,7]])})),function(e){return i.apply(this,arguments)})},{key:"submitRequest",value:(r=q(g().m(function e(t,n){var r,i,o;return g().w(function(e){for(;;)switch(e.n){case 0:if(r={udf_pick_301:l||"EVNSPC",udf_pick_302:d||"A - An toàn điện",udf_pick_303:u||"A1 - Phần mềm ứng dụng",udf_pick_304:m||"C - The Business/Customer Service Catalog",udf_pick_305:t.udf_pick_305||null,udf_pick_306:t.udf_pick_306||f||null,udf_pick_602:null,udf_mline_603:""},Object.assign(r,this.config.udf_fields||{}),i=this.apiService.buildRequestData(t,{requesterName:this.config.requesterName||t.requester||t.contact||"",site:this.config.site||t.site||null,category:t.category,subcategory:t.subcategory,item:t.item,template:t.category,udf_fields:r,zia_properties:this.config.zia_properties||{}}),!((o=n&&n.length>0?Array.from(n):[]).length>0)){e.n=2;break}return e.n=1,this.apiService.createRequestWithAttachments(i,o);case 1:case 3:return e.a(2,e.v);case 2:return e.n=3,this.apiService.createRequest(i);case 4:return e.a(2)}},e,this)})),function(e,t){return r.apply(this,arguments)})},{key:"showMessage",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"info",n=document.querySelector(".itsm-message");n&&n.remove();var r=document.createElement("div");r.className="itsm-message itsm-message-".concat(t),r.textContent=e,document.body.appendChild(r),setTimeout(function(){r.classList.add("itsm-message-show")},10),setTimeout(function(){r.classList.remove("itsm-message-show"),setTimeout(function(){return r.remove()},300)},3e3)}},{key:"destroy",value:function(){this.widgetContainer&&this.widgetContainer.remove(),this.modalContainer&&this.modalContainer.remove(),document.body.style.overflow=""}}],t&&S(e.prototype,t),n&&S(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t,n,r,i,o,s,p,b}();e.exports&&(e.exports=j,e.exports.default=j);const _=j;"undefined"!=typeof window&&(window.ITSMWidget=j,window.ITSMWidget.default||(window.ITSMWidget.default=j),document.addEventListener("DOMContentLoaded",function(){var e=document.querySelector("script[data-itsm-config]");if(e)try{var t=JSON.parse(e.getAttribute("data-itsm-config"));window.itsmWidgetInstance=new j(t)}catch(e){console.error("Error parsing ITSM widget config:",e)}}))},555:(e,t,n)=>{n.d(t,{A:()=>o});var r=n(314),i=n.n(r)()(function(e){return e[1]});i.push([e.id,'/**\r\n * ITSM Widget Styles\r\n * Native HTML/CSS - No external libraries required\r\n */\r\n\r\n/* Floating Button */\r\n.itsm-widget-button {\r\n position: fixed;\r\n z-index: 9998;\r\n cursor: pointer;\r\n transition: transform 0.3s ease, box-shadow 0.3s ease;\r\n border-radius: 50%;\r\n overflow: visible;\r\n padding: 4px;\r\n border: 3px solid transparent;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n background-color: #ffffff;\r\n}\r\n\r\n.itsm-widget-button:hover {\r\n transform: scale(1.1);\r\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\r\n}\r\n\r\n.itsm-position-bottom-right {\r\n bottom: 24px;\r\n right: 24px;\r\n}\r\n\r\n.itsm-position-bottom-left {\r\n bottom: 24px;\r\n left: 24px;\r\n}\r\n\r\n.itsm-widget-icon {\r\n width: 48px;\r\n height: 48px;\r\n padding: 8px;\r\n border-radius: 50%;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n color: white;\r\n font-size: 18px;\r\n font-weight: bold;\r\n /* box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2); */\r\n user-select: none;\r\n font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;\r\n overflow: hidden;\r\n background-color: #ffffff;\r\n}\r\n\r\n.itsm-widget-icon-img {\r\n width: 100%;\r\n height: 100%;\r\n object-fit: contain;\r\n filter: brightness(0) saturate(100%) invert(27%) sepia(78%) saturate(1250%) hue-rotate(197deg) brightness(96%) contrast(95%);\r\n /* border-radius: 50%; */\r\n}\r\n\r\n/* Modal Overlay */\r\n.itsm-modal-overlay {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n bottom: 0;\r\n background-color: rgba(0, 0, 0, 0.5);\r\n z-index: 9999;\r\n display: none;\r\n align-items: center;\r\n justify-content: center;\r\n opacity: 0;\r\n transition: opacity 0.3s ease;\r\n padding: 16px;\r\n}\r\n\r\n.itsm-modal-overlay.itsm-modal-active {\r\n display: flex;\r\n opacity: 1;\r\n}\r\n\r\n/* Modal Container */\r\n.itsm-modal-container {\r\n background: #ffffff;\r\n border-radius: 6px;\r\n box-shadow: 0 11px 15px -7px rgba(0, 0, 0, 0.2), 0 24px 38px 3px rgba(0, 0, 0, 0.14), 0 9px 46px 8px rgba(0, 0, 0, 0.12);\r\n width: 100%;\r\n max-width: 50vw;\r\n max-height: 90vh;\r\n display: flex;\r\n flex-direction: column;\r\n transform: scale(0.9);\r\n transition: transform 0.3s ease;\r\n font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;\r\n}\r\n\r\n.itsm-modal-overlay.itsm-modal-active .itsm-modal-container {\r\n transform: scale(1);\r\n}\r\n\r\n/* Modal Header */\r\n.itsm-modal-header {\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n padding: 1.5rem;\r\n border-bottom: 1px solid #e9ecef;\r\n background-color: #ffffff;\r\n border-radius: 6px 6px 0 0;\r\n flex-shrink: 0;\r\n}\r\n\r\n.itsm-modal-title {\r\n margin: 0;\r\n font-size: 1.5rem;\r\n font-weight: 600;\r\n color: #212529;\r\n flex: 1;\r\n}\r\n\r\n.itsm-modal-header-icons {\r\n display: flex;\r\n align-items: center;\r\n gap: 0.5rem;\r\n}\r\n\r\n.itsm-modal-close {\r\n background: transparent;\r\n border: none;\r\n color: #6c757d;\r\n cursor: pointer;\r\n padding: 0.5rem;\r\n width: 2rem;\r\n height: 2rem;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n border-radius: 50%;\r\n transition: background-color 0.2s ease, color 0.2s ease;\r\n font-size: 1.5rem;\r\n line-height: 1;\r\n}\r\n\r\n.itsm-modal-close:hover {\r\n background-color: #e9ecef;\r\n color: #212529;\r\n}\r\n\r\n.itsm-modal-close span {\r\n font-size: 1.5rem;\r\n line-height: 1;\r\n}\r\n\r\n/* Modal Content */\r\n.itsm-modal-content {\r\n padding: 1.5rem;\r\n overflow-y: auto;\r\n flex: 1;\r\n}\r\n\r\n/* Modal Footer */\r\n.itsm-modal-footer {\r\n display: flex;\r\n justify-content: flex-end;\r\n gap: 0.5rem;\r\n padding: 1rem 1.5rem;\r\n border-top: 1px solid #e9ecef;\r\n background-color: #ffffff;\r\n border-radius: 0 0 6px 6px;\r\n flex-shrink: 0;\r\n}\r\n\r\n/* Form Styles */\r\n.itsm-form {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 1rem;\r\n}\r\n\r\n.itsm-form-row {\r\n display: flex;\r\n gap: 1rem;\r\n}\r\n\r\n.itsm-form-group {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 0.5rem;\r\n}\r\n\r\n.itsm-form-group-half {\r\n flex: 1;\r\n}\r\n\r\n/* Label */\r\n.itsm-form-group label {\r\n font-weight: 500;\r\n color: #495057;\r\n font-size: 0.875rem;\r\n display: block;\r\n margin-bottom: 0.25rem;\r\n}\r\n\r\n.itsm-required {\r\n color: #dc3545;\r\n margin-left: 2px;\r\n}\r\n\r\n/* Input */\r\n.itsm-input {\r\n width: 100%;\r\n padding: 0.5rem 0.75rem;\r\n font-size: 1rem;\r\n line-height: 1.5;\r\n color: #495057;\r\n background-color: #ffffff;\r\n border: 1px solid #ced4da;\r\n border-radius: 4px;\r\n transition: background-color 0.2s, border-color 0.2s, box-shadow 0.2s;\r\n font-family: inherit;\r\n box-sizing: border-box;\r\n}\r\n\r\n.itsm-input:hover {\r\n border-color: #adb5bd;\r\n}\r\n\r\n.itsm-input:focus {\r\n outline: 0 none;\r\n outline-offset: 0;\r\n border-color: #007bff;\r\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\r\n}\r\n\r\n.itsm-input:disabled {\r\n background-color: #e9ecef;\r\n opacity: 1;\r\n cursor: not-allowed;\r\n}\r\n\r\n/* Textarea */\r\n.itsm-textarea {\r\n width: 100%;\r\n padding: 0.5rem 0.75rem;\r\n font-size: 1rem;\r\n line-height: 1.5;\r\n color: #495057;\r\n background-color: #ffffff;\r\n border: 1px solid #ced4da;\r\n border-radius: 4px;\r\n transition: background-color 0.2s, border-color 0.2s, box-shadow 0.2s;\r\n font-family: inherit;\r\n box-sizing: border-box;\r\n resize: vertical;\r\n min-height: 100px;\r\n}\r\n\r\n.itsm-textarea:hover {\r\n border-color: #adb5bd;\r\n}\r\n\r\n.itsm-textarea:focus {\r\n outline: 0 none;\r\n outline-offset: 0;\r\n border-color: #007bff;\r\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\r\n}\r\n\r\n.itsm-textarea:disabled {\r\n background-color: #e9ecef;\r\n opacity: 1;\r\n cursor: not-allowed;\r\n}\r\n\r\n/* Rich Text Editor */\r\n.itsm-editor-container {\r\n border: 1px solid #ced4da;\r\n border-radius: 4px;\r\n background-color: #ffffff;\r\n transition: border-color 0.2s, box-shadow 0.2s;\r\n}\r\n\r\n.itsm-editor-container:focus-within {\r\n border-color: #007bff;\r\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\r\n}\r\n\r\n.itsm-editor-toolbar {\r\n display: flex;\r\n align-items: center;\r\n gap: 0.25rem;\r\n padding: 0.5rem;\r\n border-bottom: 1px solid #e9ecef;\r\n background-color: #f8f9fa;\r\n flex-wrap: wrap;\r\n}\r\n\r\n.itsm-editor-btn {\r\n padding: 0.25rem 0.5rem;\r\n font-size: 0.875rem;\r\n border: 1px solid #ced4da;\r\n border-radius: 3px;\r\n background-color: #ffffff;\r\n color: #495057;\r\n cursor: pointer;\r\n transition: background-color 0.2s, border-color 0.2s;\r\n font-family: inherit;\r\n min-width: 2rem;\r\n height: 2rem;\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n}\r\n\r\n.itsm-editor-btn:hover {\r\n background-color: #e9ecef;\r\n border-color: #adb5bd;\r\n}\r\n\r\n.itsm-editor-btn:active {\r\n background-color: #dee2e6;\r\n}\r\n\r\n.itsm-editor-separator {\r\n width: 1px;\r\n height: 1.5rem;\r\n background-color: #ced4da;\r\n margin: 0 0.25rem;\r\n}\r\n\r\n.itsm-editor-file-btn {\r\n padding: 0.25rem 0.5rem;\r\n font-size: 0.875rem;\r\n border: 1px solid #ced4da;\r\n border-radius: 3px;\r\n background-color: #ffffff;\r\n color: #495057;\r\n cursor: pointer;\r\n transition: background-color 0.2s, border-color 0.2s;\r\n font-family: inherit;\r\n margin-left: auto;\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n}\r\n\r\n.itsm-editor-file-btn:hover {\r\n background-color: #e9ecef;\r\n border-color: #adb5bd;\r\n}\r\n\r\n.itsm-editor-content {\r\n min-height: 150px;\r\n max-height: 400px;\r\n overflow-y: auto;\r\n padding: 0.75rem;\r\n font-size: 1rem;\r\n line-height: 1.5;\r\n color: #495057;\r\n font-family: inherit;\r\n outline: none;\r\n}\r\n\r\n.itsm-editor-content:empty:before {\r\n content: attr(data-placeholder);\r\n color: #6c757d;\r\n pointer-events: none;\r\n}\r\n\r\n.itsm-editor-content:focus:empty:before {\r\n content: \'\';\r\n}\r\n\r\n.itsm-editor-content img {\r\n max-width: 100%;\r\n height: auto;\r\n margin: 0.5rem 0;\r\n}\r\n\r\n.itsm-editor-content ul,\r\n.itsm-editor-content ol {\r\n margin: 0.5rem 0;\r\n padding-left: 1.5rem;\r\n}\r\n\r\n.itsm-editor-content p {\r\n margin: 0.5rem 0;\r\n}\r\n\r\n.itsm-editor-content p:first-child {\r\n margin-top: 0;\r\n}\r\n\r\n.itsm-editor-content p:last-child {\r\n margin-bottom: 0;\r\n}\r\n\r\n/* Filter Input */\r\n.itsm-filter-input {\r\n width: 100%;\r\n padding: 0.5rem 0.75rem;\r\n font-size: 0.875rem;\r\n line-height: 1.5;\r\n color: #495057;\r\n background-color: #ffffff;\r\n border: 1px solid #ced4da;\r\n border-radius: 4px 4px 0 0;\r\n border-bottom: none;\r\n transition: background-color 0.2s, border-color 0.2s, box-shadow 0.2s;\r\n font-family: inherit;\r\n box-sizing: border-box;\r\n margin-bottom: 0;\r\n}\r\n\r\n.itsm-filter-input:hover {\r\n border-color: #adb5bd;\r\n}\r\n\r\n.itsm-filter-input:focus {\r\n outline: 0 none;\r\n outline-offset: 0;\r\n border-color: #007bff;\r\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\r\n border-bottom-color: #ced4da;\r\n}\r\n\r\n.itsm-filter-input:disabled {\r\n background-color: #e9ecef;\r\n opacity: 1;\r\n cursor: not-allowed;\r\n}\r\n\r\n/* Select */\r\n.itsm-select {\r\n width: 100%;\r\n padding: 0.5rem 0.75rem;\r\n font-size: 1rem;\r\n line-height: 1.5;\r\n color: #495057;\r\n background-color: #ffffff;\r\n border: 1px solid #ced4da;\r\n border-radius: 4px;\r\n transition: background-color 0.2s, border-color 0.2s, box-shadow 0.2s;\r\n font-family: inherit;\r\n box-sizing: border-box;\r\n cursor: pointer;\r\n}\r\n\r\n/* Select with filter input above */\r\n.itsm-form-group:has(.itsm-filter-input) .itsm-select {\r\n border-radius: 0 0 4px 4px;\r\n border-top: none;\r\n}\r\n\r\n.itsm-select:hover {\r\n border-color: #adb5bd;\r\n}\r\n\r\n.itsm-select:focus {\r\n outline: 0 none;\r\n outline-offset: 0;\r\n border-color: #007bff;\r\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\r\n}\r\n\r\n.itsm-select:disabled {\r\n background-color: #e9ecef;\r\n opacity: 0.6;\r\n cursor: not-allowed;\r\n}\r\n\r\n/* Custom Select Dropdown */\r\n.itsm-custom-select {\r\n position: relative;\r\n width: 100%;\r\n}\r\n\r\n.itsm-select-display {\r\n width: 100%;\r\n padding: 0.5rem 0.75rem;\r\n font-size: 1rem;\r\n line-height: 1.5;\r\n color: #495057;\r\n background-color: #ffffff;\r\n border: 1px solid #ced4da;\r\n border-radius: 4px;\r\n transition: background-color 0.2s, border-color 0.2s, box-shadow 0.2s;\r\n font-family: inherit;\r\n box-sizing: border-box;\r\n cursor: pointer;\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n user-select: none;\r\n}\r\n\r\n.itsm-select-display:hover:not(.disabled) {\r\n border-color: #adb5bd;\r\n}\r\n\r\n.itsm-select-display:focus {\r\n outline: 0 none;\r\n outline-offset: 0;\r\n border-color: #007bff;\r\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\r\n}\r\n\r\n.itsm-select-display.disabled {\r\n background-color: #e9ecef;\r\n opacity: 0.6;\r\n cursor: not-allowed;\r\n}\r\n\r\n.itsm-select-text {\r\n flex: 1;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n}\r\n\r\n.itsm-select-arrow {\r\n margin-left: 0.5rem;\r\n font-size: 0.75rem;\r\n color: #6c757d;\r\n transition: transform 0.2s;\r\n}\r\n\r\n.itsm-custom-select[data-disabled="true"] .itsm-select-arrow {\r\n opacity: 0.5;\r\n}\r\n\r\n.itsm-select-dropdown {\r\n position: absolute;\r\n top: 100%;\r\n left: 0;\r\n right: 0;\r\n background-color: #ffffff;\r\n border: 1px solid #ced4da;\r\n border-radius: 4px;\r\n box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);\r\n z-index: 1000;\r\n display: none;\r\n margin-top: 0.25rem;\r\n max-height: 300px;\r\n overflow: hidden;\r\n flex-direction: column;\r\n}\r\n\r\n.itsm-select-dropdown.open {\r\n display: flex;\r\n}\r\n\r\n.itsm-select-filter {\r\n width: 100%;\r\n padding: 0.5rem 0.75rem;\r\n font-size: 0.875rem;\r\n line-height: 1.5;\r\n color: #495057;\r\n background-color: #ffffff;\r\n border: none;\r\n border-bottom: 1px solid #e9ecef;\r\n font-family: inherit;\r\n box-sizing: border-box;\r\n outline: none;\r\n}\r\n\r\n.itsm-select-filter:focus {\r\n border-bottom-color: #007bff;\r\n}\r\n\r\n.itsm-select-filter:disabled {\r\n background-color: #f8f9fa;\r\n cursor: not-allowed;\r\n}\r\n\r\n.itsm-select-options {\r\n max-height: 250px;\r\n overflow-y: auto;\r\n padding: 0.25rem 0;\r\n}\r\n\r\n.itsm-select-option {\r\n padding: 0.5rem 0.75rem;\r\n font-size: 1rem;\r\n line-height: 1.5;\r\n color: #495057;\r\n cursor: pointer;\r\n transition: background-color 0.15s;\r\n user-select: none;\r\n}\r\n\r\n.itsm-select-option:hover {\r\n background-color: #f8f9fa;\r\n}\r\n\r\n.itsm-select-option:active {\r\n background-color: #e9ecef;\r\n}\r\n\r\n.itsm-select-option[style*="display: none"] {\r\n display: none !important;\r\n}\r\n\r\n/* Button */\r\n.itsm-btn {\r\n padding: 0.5rem 1rem;\r\n font-size: 1rem;\r\n font-weight: 400;\r\n line-height: 1.5;\r\n border-radius: 4px;\r\n border: 1px solid transparent;\r\n cursor: pointer;\r\n transition: background-color 0.2s, border-color 0.2s, box-shadow 0.2s;\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n text-align: center;\r\n user-select: none;\r\n font-family: inherit;\r\n position: relative;\r\n overflow: hidden;\r\n}\r\n\r\n.itsm-btn:disabled {\r\n opacity: 0.6;\r\n cursor: default;\r\n}\r\n\r\n.itsm-btn-text {\r\n line-height: inherit;\r\n}\r\n\r\n/* Primary Button */\r\n.itsm-btn-primary {\r\n color: #ffffff;\r\n background-color: #007bff;\r\n border-color: #007bff;\r\n}\r\n\r\n.itsm-btn-primary:hover:not(:disabled) {\r\n background-color: #0056b3;\r\n border-color: #0056b3;\r\n}\r\n\r\n.itsm-btn-primary:focus {\r\n outline: 0 none;\r\n outline-offset: 0;\r\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\r\n}\r\n\r\n.itsm-btn-primary:active:not(:disabled) {\r\n background-color: #004085;\r\n border-color: #004085;\r\n}\r\n\r\n/* Secondary Button */\r\n.itsm-btn-secondary {\r\n color: #ffffff;\r\n background-color: #6c757d;\r\n border-color: #6c757d;\r\n}\r\n\r\n.itsm-btn-secondary:hover:not(:disabled) {\r\n background-color: #5a6268;\r\n border-color: #545b62;\r\n}\r\n\r\n.itsm-btn-secondary:focus {\r\n outline: 0 none;\r\n outline-offset: 0;\r\n box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);\r\n}\r\n\r\n.itsm-btn-secondary:active:not(:disabled) {\r\n background-color: #545b62;\r\n border-color: #4e555b;\r\n}\r\n\r\n/* File Input */\r\n.itsm-file-list {\r\n margin-top: 0.5rem;\r\n display: flex;\r\n flex-direction: column;\r\n gap: 0.5rem;\r\n}\r\n\r\n.itsm-file-item {\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n padding: 0.5rem;\r\n background-color: #f8f9fa;\r\n border-radius: 4px;\r\n font-size: 0.875rem;\r\n}\r\n\r\n.itsm-file-name {\r\n color: #495057;\r\n flex: 1;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n}\r\n\r\n.itsm-file-size {\r\n color: #6c757d;\r\n margin-left: 0.5rem;\r\n}\r\n\r\n/* Message/Toast Styles */\r\n.itsm-message {\r\n position: fixed;\r\n top: 20px;\r\n right: 20px;\r\n z-index: 10000;\r\n padding: 1rem 1.5rem;\r\n border-radius: 4px;\r\n box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);\r\n min-width: 300px;\r\n max-width: 500px;\r\n transform: translateX(400px);\r\n transition: transform 0.3s ease;\r\n font-family: inherit;\r\n font-size: 0.875rem;\r\n}\r\n\r\n.itsm-message.itsm-message-show {\r\n transform: translateX(0);\r\n}\r\n\r\n.itsm-message-success {\r\n background-color: #d4edda;\r\n color: #155724;\r\n border: 1px solid #c3e6cb;\r\n}\r\n\r\n.itsm-message-error {\r\n background-color: #f8d7da;\r\n color: #721c24;\r\n border: 1px solid #f5c6cb;\r\n}\r\n\r\n.itsm-message-info {\r\n background-color: #d1ecf1;\r\n color: #0c5460;\r\n border: 1px solid #bee5eb;\r\n}\r\n\r\n/* Responsive */\r\n@media (max-width: 768px) {\r\n .itsm-modal-container {\r\n max-width: 95%;\r\n max-height: 95vh;\r\n }\r\n\r\n .itsm-form-row {\r\n flex-direction: column;\r\n }\r\n\r\n .itsm-form-group-half {\r\n flex: none;\r\n }\r\n\r\n .itsm-modal-header,\r\n .itsm-modal-content,\r\n .itsm-modal-footer {\r\n padding: 1rem;\r\n }\r\n}',""]);const o=i},890:(e,t,n)=>{function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach(function(t){s(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function s(e,t,n){return(t=d(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(){var e,t,n="function"==typeof Symbol?Symbol:{},r=n.iterator||"@@iterator",i=n.toStringTag||"@@toStringTag";function o(n,r,i,o){var a=r&&r.prototype instanceof l?r:l,d=Object.create(a.prototype);return c(d,"_invoke",function(n,r,i){var o,a,c,l=0,d=i||[],u=!1,m={p:0,n:0,v:e,a:f,f:f.bind(e,4),d:function(t,n){return o=t,a=0,c=e,m.n=n,s}};function f(n,r){for(a=n,c=r,t=0;!u&&l&&!i&&t<d.length;t++){var i,o=d[t],f=m.p,p=o[2];n>3?(i=p===r)&&(c=o[(a=o[4])?5:(a=3,3)],o[4]=o[5]=e):o[0]<=f&&((i=n<2&&f<o[1])?(a=0,m.v=r,m.n=o[1]):f<p&&(i=n<3||o[0]>r||r>p)&&(o[4]=n,o[5]=r,m.n=p,a=0))}if(i||n>1)return s;throw u=!0,r}return function(i,d,p){if(l>1)throw TypeError("Generator is already running");for(u&&1===d&&f(d,p),a=d,c=p;(t=a<2?e:c)||!u;){o||(a?a<3?(a>1&&(m.n=-1),f(a,c)):m.n=c:m.v=c);try{if(l=2,o){if(a||(i="next"),t=o[i]){if(!(t=t.call(o,c)))throw TypeError("iterator result is not an object");if(!t.done)return t;c=t.value,a<2&&(a=0)}else 1===a&&(t=o.return)&&t.call(o),a<2&&(c=TypeError("The iterator does not provide a '"+i+"' method"),a=1);o=e}else if((t=(u=m.n<0)?c:n.call(r,m))!==s)break}catch(t){o=e,a=1,c=t}finally{l=1}}return{value:t,done:u}}}(n,i,o),!0),d}var s={};function l(){}function d(){}function u(){}t=Object.getPrototypeOf;var m=[][r]?t(t([][r]())):(c(t={},r,function(){return this}),t),f=u.prototype=l.prototype=Object.create(m);function p(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,u):(e.__proto__=u,c(e,i,"GeneratorFunction")),e.prototype=Object.create(f),e}return d.prototype=u,c(f,"constructor",u),c(u,"constructor",d),d.displayName="GeneratorFunction",c(u,i,"GeneratorFunction"),c(f),c(f,i,"Generator"),c(f,r,function(){return this}),c(f,"toString",function(){return"[object Generator]"}),(a=function(){return{w:o,m:p}})()}function c(e,t,n,r){var i=Object.defineProperty;try{i({},"",{})}catch(e){i=0}c=function(e,t,n,r){function o(t,n){c(e,t,function(e){return this._invoke(t,n,e)})}t?i?i(e,t,{value:n,enumerable:!r,configurable:!r,writable:!r}):e[t]=n:(o("next",0),o("throw",1),o("return",2))},c(e,t,n,r)}function l(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,d(r.key),r)}}function d(e){var t=function(e,t){if("object"!=r(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,t||"default");if("object"!=r(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==r(t)?t:t+""}function u(e,t,n,r,i,o,s){try{var a=e[o](s),c=a.value}catch(e){return void n(e)}a.done?t(c):Promise.resolve(c).then(r,i)}function m(e){return function(){var t=this,n=arguments;return new Promise(function(r,i){var o=e.apply(t,n);function s(e){u(o,r,i,s,a,"next",e)}function a(e){u(o,r,i,s,a,"throw",e)}s(void 0)})}}n.d(t,{A:()=>b}),e=n.hmd(e);var f=function(){return window.__itsmWidgetConfigCache||(window.__itsmWidgetConfigCache={cache:null,loadingPromise:null}),window.__itsmWidgetConfigCache};function p(){return h.apply(this,arguments)}function h(){return(h=m(a().m(function e(){var t;return a().w(function(e){for(;;)switch(e.n){case 0:if(null===(t=f()).cache){e.n=1;break}return e.a(2,t.cache);case 1:if(null===t.loadingPromise){e.n=2;break}return e.a(2,t.loadingPromise);case 2:return t.loadingPromise=m(a().m(function e(){var n,r,i,o,s,c,l,d;return a().w(function(e){for(;;)switch(e.p=e.n){case 0:n=[],r=0,i=["/assets/itsm-widget-config.json","./assets/itsm-widget-config.json","/node_modules/itsm-widget/dist/itsm-widget-config.json","./node_modules/itsm-widget/dist/itsm-widget-config.json","/itsm-widget-config.json","./itsm-widget-config.json","assets/itsm-widget-config.json","node_modules/itsm-widget/dist/itsm-widget-config.json","itsm-widget-config.json"];case 1:if(!(r<i.length)){e.n=8;break}return o=i[r],n.push(o),e.p=2,e.n=3,fetch(o);case 3:if(!(s=e.v).ok){e.n=5;break}return e.n=4,s.json();case 4:return c=e.v,t.cache=c,console.log("[ITSMAPIService] ✅ Loaded config from: ".concat(o)),e.a(2,c);case 5:e.n=7;break;case 6:return e.p=6,d=e.v,e.a(3,7);case 7:r++,e.n=1;break;case 8:throw l="File itsm-widget-config.json not found. Đã thử các vị trí: ".concat(n.join(", ")),console.error("[ITSMAPIService] ❌ Cannot load itsm-widget-config.json"),console.error("[ITSMAPIService] Tried locations:",n),new Error(l);case 9:return e.a(2)}},e,null,[[2,6]])}))(),e.a(2,t.loadingPromise)}},e)}))).apply(this,arguments)}var g=function(){return e=function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.authToken=t.authToken||t.apiToken||"",this.baseUrl="",this._baseUrlPromise=this._initializeBaseUrl()},t=[{key:"_initializeBaseUrl",value:(g=m(a().m(function e(){var t,n;return a().w(function(e){for(;;)switch(e.p=e.n){case 0:return e.p=0,e.n=1,p();case 1:if((t=e.v)&&t.apiBaseUrl){e.n=2;break}throw new Error("File itsm-widget-config.json không có apiBaseUrl");case 2:return this.baseUrl=t.apiBaseUrl,e.a(2,this.baseUrl);case 3:throw e.p=3,n=e.v,console.error("[ITSMAPIService] ❌ Không thể load apiBaseUrl:",n.message),new Error("Không thể load apiBaseUrl: ".concat(n.message));case 4:return e.a(2)}},e,this,[[0,3]])})),function(){return g.apply(this,arguments)})},{key:"_ensureBaseUrl",value:(h=m(a().m(function e(){return a().w(function(e){for(;;)switch(e.n){case 0:if(this.baseUrl||!this._baseUrlPromise){e.n=1;break}return e.n=1,this._baseUrlPromise;case 1:if(this.baseUrl){e.n=2;break}throw new Error("baseUrl is required. Please ensure itsm-widget-config.json exists and contains apiBaseUrl.");case 2:return e.a(2)}},e,this)})),function(){return h.apply(this,arguments)})},{key:"buildHeaders",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"application/json",t={};return this.authToken&&(t.Authorization="Bearer ".concat(this.authToken)),"multipart/form-data"!==e&&(t["Content-Type"]=e),t}},{key:"createRequest",value:(f=m(a().m(function e(t){var n,r,i,o,s;return a().w(function(e){for(;;)switch(e.p=e.n){case 0:return e.n=1,this._ensureBaseUrl();case 1:return n="".concat(this.baseUrl,"/spcit/send"),r={request:{requester:t.requester||{name:""},assets:t.assets||[],category:t.category||null,group:t.group||null,subcategory:t.subcategory||null,technician:t.technician||null,item:t.item||null,priority:t.priority||null,subject:t.subject||"",description:t.description||"",site:t.site||null,attachments:t.attachments||[],udf_fields:t.udf_fields||{},template:t.template||null,zia_properties:t.zia_properties||{}}},e.p=2,e.n=3,fetch(n,{method:"POST",headers:this.buildHeaders("application/json"),body:JSON.stringify(r)});case 3:return i=e.v,e.n=4,i.json();case 4:if(o=e.v,i.ok){e.n=5;break}throw new Error(o.error||o.message||"HTTP error! status: ".concat(i.status));case 5:return e.a(2,o);case 6:throw e.p=6,s=e.v,console.error("Error creating request:",s),s;case 7:return e.a(2)}},e,this,[[2,6]])})),function(e){return f.apply(this,arguments)})},{key:"uploadAttachment",value:(u=m(a().m(function e(t,n){var r,i,o,s,c;return a().w(function(e){for(;;)switch(e.p=e.n){case 0:return e.n=1,this._ensureBaseUrl();case 1:return r="".concat(this.baseUrl,"/spcit/").concat(t,"/upload"),i=new FormData,(Array.isArray(n)?n:[n]).forEach(function(e){e instanceof File&&i.append("files",e)}),e.p=2,e.n=3,fetch(r,{method:"PUT",headers:this.buildHeaders("multipart/form-data"),body:i});case 3:return o=e.v,e.n=4,o.json();case 4:if(s=e.v,o.ok){e.n=5;break}throw new Error(s.error||s.message||"HTTP error! status: ".concat(o.status));case 5:return e.a(2,s);case 6:throw e.p=6,c=e.v,console.error("Error uploading attachment:",c),c;case 7:return e.a(2)}},e,this,[[2,6]])})),function(e,t){return u.apply(this,arguments)})},{key:"createRequestWithAttachments",value:(d=m(a().m(function e(t){var n,r,i,s,c,l,d=arguments;return a().w(function(e){for(;;)switch(e.p=e.n){case 0:return n=d.length>1&&void 0!==d[1]?d[1]:[],e.p=1,e.n=2,this.createRequest(t);case 2:if(i=e.v,!(n&&n.length>0&&null!==(r=i.request)&&void 0!==r&&r.id)){e.n=6;break}return e.p=3,e.n=4,this.uploadAttachment(i.request.id,n);case 4:return s=e.v,e.a(2,o(o({},i),{},{uploadResponse:s}));case 5:return e.p=5,c=e.v,console.warn("Request created but file upload failed:",c),e.a(2,o(o({},i),{},{uploadError:c.message}));case 6:return e.a(2,i);case 7:throw e.p=7,l=e.v,console.error("Error creating request with attachments:",l),l;case 8:return e.a(2)}},e,this,[[3,5],[1,7]])})),function(e){return d.apply(this,arguments)})},{key:"getRequest",value:(c=m(a().m(function e(t){var n,r,i,o,s;return a().w(function(e){for(;;)switch(e.p=e.n){case 0:return e.n=1,this._ensureBaseUrl();case 1:return n="".concat(this.baseUrl,"/spcit/ticket/").concat(t),e.p=2,(r=this.buildHeaders("application/json")).Accept="application/json",e.n=3,fetch(n,{method:"POST",headers:r,body:JSON.stringify({request_id:t})});case 3:return i=e.v,e.n=4,i.json();case 4:if(o=e.v,i.ok){e.n=5;break}throw new Error(o.error||o.message||"HTTP error! status: ".concat(i.status));case 5:return e.a(2,o);case 6:throw e.p=6,s=e.v,console.error("Error getting request:",s),s;case 7:return e.a(2)}},e,this,[[2,6]])})),function(e){return c.apply(this,arguments)})},{key:"getAllCategories",value:(s=m(a().m(function e(){var t,n,r,i,o;return a().w(function(e){for(;;)switch(e.p=e.n){case 0:return e.n=1,this._ensureBaseUrl();case 1:return t="".concat(this.baseUrl,"/spcit/categories"),n={list_info:{start_index:1,page:1,row_count:100,sort_field:"name",sort_order:"asc",get_total_count:!0}},e.p=2,e.n=3,fetch(t,{method:"POST",headers:this.buildHeaders("application/json"),body:JSON.stringify(n)});case 3:return r=e.v,e.n=4,r.json();case 4:if(i=e.v,r.ok){e.n=5;break}throw new Error(i.error||i.message||"HTTP error! status: ".concat(r.status));case 5:return e.a(2,i);case 6:throw e.p=6,o=e.v,console.error("Error getting categories:",o),o;case 7:return e.a(2)}},e,this,[[2,6]])})),function(){return s.apply(this,arguments)})},{key:"getSubcategoriesByCategoryId",value:(i=m(a().m(function e(t){var n,r,i,o,s;return a().w(function(e){for(;;)switch(e.p=e.n){case 0:return e.n=1,this._ensureBaseUrl();case 1:return n="".concat(this.baseUrl,"/spcit/categories/").concat(t,"/subcategories"),r={list_info:{start_index:0,row_count:100,sort_field:"name",sort_order:"asc",get_total_count:!0}},e.p=2,e.n=3,fetch(n,{method:"POST",headers:this.buildHeaders("application/json"),body:JSON.stringify(r)});case 3:return i=e.v,e.n=4,i.json();case 4:if(o=e.v,i.ok){e.n=5;break}throw new Error(o.error||o.message||"HTTP error! status: ".concat(i.status));case 5:return e.a(2,o);case 6:throw e.p=6,s=e.v,console.error("Error getting subcategories:",s),s;case 7:return e.a(2)}},e,this,[[2,6]])})),function(e){return i.apply(this,arguments)})},{key:"getItemsBySubcategoryId",value:(r=m(a().m(function e(t){var n,r,i,o,s;return a().w(function(e){for(;;)switch(e.p=e.n){case 0:return e.n=1,this._ensureBaseUrl();case 1:return n="".concat(this.baseUrl,"/spcit/subcategories/").concat(t,"/items"),r={list_info:{start_index:0,row_count:100,sort_field:"name",sort_order:"asc",get_total_count:!0}},e.p=2,e.n=3,fetch(n,{method:"POST",headers:this.buildHeaders("application/json"),body:JSON.stringify(r)});case 3:return i=e.v,e.n=4,i.json();case 4:if(o=e.v,i.ok){e.n=5;break}throw new Error(o.error||o.message||"HTTP error! status: ".concat(i.status));case 5:return e.a(2,o);case 6:throw e.p=6,s=e.v,console.error("Error getting items:",s),s;case 7:return e.a(2)}},e,this,[[2,6]])})),function(e){return r.apply(this,arguments)})},{key:"mapPriority",value:function(e){return{low:"Thấp",medium:"Trung bình",high:"Cao",none:"Chưa lựa chọn"}[e]||"Chưa lựa chọn"}},{key:"mapCategory",value:function(e){return{hardware:"A01A00 - Quản lý an toàn thông tin",software:"Software Category",network:"Network Category",account:"Account Category",other:"Other Category"}[e]||null}},{key:"buildRequestData",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.category||this.mapCategory(e.category),r=t.subcategory||e.subcategory||null,i=t.item||e.item||null,o=t.template||n||null,s=t.requesterName||e.requester||e.contact||"",a=t.site||e.site||"";return{requester:{name:s},category:n?{name:n}:null,subcategory:r?{name:r}:null,priority:{name:this.mapPriority(e.priority||"none")},subject:e.title||"",description:e.description||"",site:a?{name:a}:null,item:i?{name:i}:null,template:o?{name:o}:null,udf_fields:t.udf_fields||{},zia_properties:t.zia_properties||{},assets:[],attachments:[],group:null,technician:null}}}],t&&l(e.prototype,t),n&&l(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t,n,r,i,s,c,d,u,f,h,g}();e.exports&&(e.exports=g),"undefined"!=typeof window&&(window.ITSMAPIService=g);const b=g}},t={};function n(r){var i=t[r];if(void 0!==i)return i.exports;var o=t[r]={id:r,loaded:!1,exports:{}};return e[r](o,o.exports,n),o.loaded=!0,o.exports}return n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.hmd=e=>((e=Object.create(e)).children||(e.children=[]),Object.defineProperty(e,"exports",{enumerable:!0,set:()=>{throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: "+e.id)}}),e),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.nc=void 0,n(322)})());
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "itsm-widget",
3
- "version": "1.0.5",
3
+ "version": "1.0.7",
4
4
  "description": "ITSM Request Widget - Standalone HTML plugin với native HTML/CSS, tích hợp vào MVC, Angular, React, Vue, PHP, Java và bất kỳ web project nào",
5
5
  "main": "dist/itsm-widget.min.js",
6
6
  "style": "dist/itsm-widget.min.css",