{"version":3,"file":"inet-core.mjs","sources":["../../src/lib/inet-core.js","../../src/iNet.ts","../../src/model/error-message.ts","../../src/model/response-data.ts","../../src/model/app-cloud-config.ts","../../src/http-url-encoding-codec.ts","../../src/loading-indicator.service.ts","../../src/http-client.service.ts","../../src/core.service.ts","../../src/suggestion.service.ts","../../src/infinite-scroller.directive.ts","../../src/model/new-password.ts","../../src/notification.service.ts","../../src/security.service.ts","../../src/role-access.directive.ts","../../src/ssourl.pipe.ts","../../src/time-ago.pipe.ts","../../src/user-profile.service.ts","../../src/accent.service.ts","../../src/cache-storage.service.ts","../../src/autosize.directive.ts","../../src/avatar.directive.ts","../../src/resource-loader.service.ts","../../src/dev-config.service.ts","../../src/init-app.ts","../../src/core.module.ts","../../src/websocket/websocket-abstract.ts","../../src/websocket/websocket-jboss.ts","../../src/websocket/websocket-client.ts","../../src/websocket/websocket-client.service.ts","../../src/utils/HtmlUtils.ts","../../src/uploader.service.ts","../../inet-core.ts"],"sourcesContent":["( function( global, factory ) {\n\n  \"use strict\";\n\n  if ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n    // For CommonJS and CommonJS-like environments where a proper `window`\n    // is present, execute the factory and get iNet.\n    // For environments that do not have a `window` with a `document`\n    // (such as Node.js), expose a factory as module.exports.\n    // This accentuates the need for the creation of a real `window`.\n    // e.g. var iNet = require(\"iNet\")(window);\n    module.exports = global.document ?\n      factory( global, true ) :\n      function( w ) {\n        return factory( w );\n      };\n  } else {\n    factory( global );\n  }\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n  /*--------------------------------------------\n   |         C O N S T R U C T O R S           |\n   ============================================*/\n  /**\n   * Define the iNet instance.\n   */\n  /**\n   * iNet core utilities and functions.\n   *\n   * The iNet namespace (global object) encapsulates all classes, singletons, and utility methods provided by iNet Solution's libraries.\n   * @class iNet\n   * @singleton\n   */\n  var iNet = {\n    /**\n     * @property {String}\n     * @readonly\n     * The version of the framework\n     * @type String Major[.Minor[.Patch[.Build[Release]]]]\n     *\n     */\n    version: '6.0.0.1',\n    /**\n     * The date release the framework\n     * @property {String}\n     * @readonly\n     */\n    build_date: '14/06/2022',\n    /**\n     * @property {String} BLANK_IMAGE_URL\n     * URL to a 1x1 transparent gif image used by iNet to create inline icons with\n     * CSS background images.\n     */\n    BLANK_IMAGE_URL: 'data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=='\n  };\n\n  /*--------------------------------------------\n   |               M E T H O D S               |\n   ============================================*/\n  /**\n   * Copies all the properties of config to obj.\n   * Example:\n   *\n   *      var a = {a:1,b:2,c:5};\n   *      var b = {b:3,d:7};\n   *      iNet.apply(a, b);\n   *      // a ={ a: 1, b: 3, c: 5, d: 7};\n   *\n   * @param {Object} obj The receiver of the properties\n   * @param {Object} config The source of the properties\n   * @param {Object} defaults A different object that will also be applied for default values\n   * @return {Object} returns obj\n   * @member iNet apply\n   */\n  iNet.apply = function (o, c, defaults) {\n    // no \"this\" reference for friendly out of scope calls\n    if (defaults) {\n      iNet.apply(o, defaults);\n    }\n    if (o && c && typeof c == 'object') {\n      for (var p in c) {\n        o[p] = c[p];\n      }\n    }\n    return o;\n  };\n  (function () {\n    var ua = navigator.userAgent.toLowerCase(), toString = Object.prototype.toString,\n      check = function (r) {\n        return r.test(ua);\n      },\n      DOC = document,\n      isStrict = DOC.compatMode == \"CSS1Compat\",\n      docMode = document.documentMode,\n      isOpera = check(/opera/),\n      isChrome = check(/chrome/),\n      isWebKit = check(/webkit/),\n      isSafari = !isChrome && check(/safari/),\n      isSafari2 = isSafari && check(/applewebkit\\/4/), // unique to Safari 2\n      isSafari3 = isSafari && check(/version\\/3/),\n      isSafari4 = isSafari && check(/version\\/4/),\n      isIE = !isOpera && check(/msie/),\n      isIE7 = isIE && (check(/msie 7/) || docMode == 7),\n      isIE8 = isIE && (check(/msie 8/) && docMode != 7 && docMode != 9 && docMode != 10 || docMode == 8),\n      isIE9 = isIE && (check(/msie 9/) && docMode != 7 && docMode != 8 && docMode != 10 || docMode == 9),\n      isIE10 = isIE && (check(/msie 10/) && docMode != 7 && docMode != 8 && docMode != 9 || docMode == 10),\n      isIE6 = isIE && !isIE7 && !isIE8 && !isIE9 && !isIE10,\n      isSupport = (isIE && (docMode && !(docMode >= 7))) || !isIE,\n      isGecko = !isWebKit && check(/gecko/),\n      isGecko2 = isGecko && check(/rv:1\\.8/),\n      isGecko3 = isGecko && check(/rv:1\\.9/),\n      isGecko4 = isGecko && check(/rv:2\\.0/),\n      isBorderBox = isIE && !isStrict,\n      isWindows = check(/windows|win32/),\n      isMac = check(/macintosh|mac os x/),\n      isAir = check(/adobeair/),\n      isLinux = check(/linux/),\n      isSecure = /^https/i.test(window.location.protocol),\n      propertyNameSplitRe= /[,;\\s]+/;\n    iNet.apply(iNet, {\n      /**\n       * Returns true if the passed object is a JavaScript Function, otherwise false.\n       * @param {Object} object The object to test\n       * @return {Boolean}\n       */\n      isFunction: function (v) {\n        return toString.apply(v) === '[object Function]';\n      },\n      /**\n       * Returns the current context path.\n       *\n       * @return {String} The current context path\n       */\n      getContextPath: function () {\n        var pathname = window.location.pathname;\n        if (pathname == '/') {\n          return '/';\n        }\n\n        var position = pathname.indexOf('/', 1);\n        if (position == 0) {\n          position = pathname.length;\n        }\n        return pathname.substr(0, position);\n      },\n      /**\n       * return a new MediaQueryList object.\n       * @param {String} media Is a string mediaQueryString\n       * @return MediaQueryList object\n       */\n      matchMedia: function(media){\n        return window.matchMedia(media);\n      },\n      /**\n       * Returns the true if viewport is match with width value, otherwise false.\n       * @param {Number} v The width to test\n       * @returns {Boolean}\n       */\n      matchWidth: function(v){\n        return iNet.matchMedia(\"(min-width:\"+v+\"px)\").matches;\n      },\n      /**\n       * Returns the full url from the given relative path.\n       *\n       * @param {String} relativePath (required) The given relative path.\n       *\n       * @return {String} The string URL\n       */\n      getUrl: function (relativePath) {\n        relativePath = relativePath || '';\n        var url = window.location.protocol + '//';\n        url += window.location.hostname;\n        var __port = window.location.port;\n\n        if (!iNet.isEmpty(__port)) {\n          if (isSecure && (__port != 443)) {\n            url += ':' + __port;\n          }\n          else if (!isSecure && __port != 80) {\n            url += ':' + __port;\n          }\n        }\n        // append the context path.\n        var pathname = window.location.pathname;\n        if (pathname.length > 1) {\n          var position = pathname.indexOf('/', 1);\n          if (position == 0)\n            position = pathname.length;\n          url += pathname.substr(0, position);\n        }\n        var prefix = iNet.prefix || 'smartcloud';\n        var extension = iNet.extension || '.cpx';\n        if (relativePath.indexOf('/') == 0) {\n          return url + '/' + prefix + relativePath + extension;\n        }\n        else {\n          return url + '/' + prefix + '/' + relativePath + extension;\n        }\n      },\n      /**\n       * Returns full url form given relative path with pattern\n       * @param {String} url The URL\n       * @param {String} pattern (optional) The pattern of module\n       * @return {String} The string URL\n       */\n      getXUrl: function (url, pattern) {\n        var __pattern = !iNet.isEmpty(pattern) ? pattern : iNet.pattern;\n        if (!iNet.isEmpty(__pattern)) {\n          return iNet.getUrl(__pattern + \"/\" + url)\n        }\n        return iNet.getUrl(url);\n      },\n      /**\n       * Returns full url form given relative path with firm prefix\n       * @param {String} path (required) The URL\n       * @return {String} The string URL\n       */\n      getPUrl: function (path) {\n        path = path || '';\n        var url = window.location.protocol + '//';\n        url += window.location.hostname;\n        var __port = window.location.port;\n\n        if (!iNet.isEmpty(__port)) {\n          if (isSecure && (__port != 443)) {\n            url += ':' + __port;\n          }\n          else if (!isSecure && __port != 80) {\n            url += ':' + __port;\n          }\n        }\n        // append the context path.\n        var pathname = window.location.pathname;\n        if (pathname.length > 1) {\n          var position = pathname.indexOf('/', 1);\n          if (position == 0)\n            position = pathname.length;\n          url += pathname.substr(0, position);\n        }\n        var prefix = iNet.firmPrefix || iNet.prefix || 'smartcloud';\n        var extension = iNet.extension || '.cpx';\n        if(prefix==='icloud') {\n          prefix = 'smartcloud';\n        }\n        if (path.indexOf('/') == 0) {\n          return url + '/' + prefix + path + extension;\n        }\n        else {\n          return url + '/' + prefix + '/' + path + extension;\n        }\n      },\n      /**\n       * Returns the SSO redirect url from the given url path.\n       *\n       * @param {String} url (required) The given url.\n       * @param {String} app (option) The given application.\n       *\n       * @return {String} The string SSO redirect URL\n       */\n      getSSOUrl: function(url, app){\n        if(iNet.isEmpty(url)) {\n          return '';\n        }\n        return iNet.urlAppend(iNet.getUrl('ssorequest/redirect'), (!iNet.isEmpty(app) ? 'application=' + app + '&' : '') + 'url=' + encodeURIComponent(url));\n      },\n      /**\n       * Returns the Discovery redirect url from the given url path.\n       *\n       * @param {String} url (required) The given url.\n       * @param {String} app (option) The given application.\n       *\n       * @return {String} The string SSO Discovery redirect URL\n       */\n      getSSODiscoveryUrl: function(url, app){\n        if(iNet.isEmpty(url)) {\n          return '';\n        }\n        return iNet.urlAppend(iNet.getUrl('ssodiscovery/redirect'), (!iNet.isEmpty(app) ? 'application=' + app + '&' : '') + 'url=' + encodeURIComponent(url));\n      },\n      /**\n       * Returns the Discovery redirect url from the given url path.\n       *\n       * @param {String} app (option) The given application.\n       * @param {Object} params (option) The given params.\n       *\n       * @return {String} The string SSO Callback redirect URL\n       */\n      getSSOCallback: function(app, params){\n        var __params = params || {};\n        if(!iNet.isEmpty(app)) {\n          __params.application = app;\n        }\n        var __pairs= Object.keys(__params).map(function(k) {\n          return encodeURIComponent(k) + \"=\" + encodeURIComponent(__params[k]);\n        }).join('&');\n\n        return iNet.urlAppend(iNet.getPUrl('ssocallback/redirect'), __pairs);\n      },\n      /**\n       * Appends content to the query string of a URL, handling logic for whether to place\n       * a question mark or ampersand.\n       * @param {String} url The URL to append to.\n       * @param {String} s The content to append to the URL.\n       * @return (String) The resulting URL\n       */\n      urlAppend: function (url, s) {\n        if (!iNet.isEmpty(s)) {\n          return url + (url.indexOf('?') === -1 ? '?' : '&') + s;\n        }\n        return url;\n      },\n      /**\n       * Clone simple variables including array, {}-like objects, DOM nodes and Date without keeping the old reference.\n       * A reference for the object itself is returned if it's not a direct descendant of Object.\n       *\n       * @param {Object} obj The object to clone\n       * @return {Object} The new object\n       */\n      clone: function (obj) {\n        if (null == obj || \"object\" != typeof obj) {\n          return obj;\n        }\n        var copy = obj.constructor();\n        if(copy) {\n          for (var attr in obj) {\n            if (obj.hasOwnProperty(attr)) {\n              copy[attr] = obj[attr];\n            }\n          }\n        }\n        return copy;\n      },\n      /**\n       * @method copy\n       * @member iNet\n       * Copies a set of named properties fom the source object to the destination object.\n       *\n       * Example:\n       *\n       *      var foo = { a: 1, b: 2, c: 3 };\n       *      var bar = iNet.copy({}, foo, 'a,c');\n       *      // bar = { a: 1, c: 3 };\n       *\n       * @param {Object} dest The destination object.\n       * @param {Object} source The source object.\n       * @param {String/String[]} names Either an Array of property names, or a comma-delimited list\n       * of property names to copy.\n       * @param {Boolean} [usePrototypeKeys=false] Pass `true` to copy keys off of the\n       * prototype as well as the instance.\n       * @return {Object} The `dest` object.\n       */\n      copy: function (dest, source, names, usePrototypeKeys) {\n        if (typeof names === 'string') {\n          names = names.split(propertyNameSplitRe);\n        }\n        for (var name, i = 0, n = names ? names.length : 0; i < n; i++) {\n          name = names[i];\n          // Only copy a property if the source actually *has* that property.\n          // If we are including prototype properties, then ensure that a property of\n          // that name can be found *somewhere* in the prototype chain (otherwise we'd be copying undefined in which may break things)\n          if (source.hasOwnProperty(name) || (usePrototypeKeys && name in source)) {\n            dest[name] = source[name];\n          }\n        }\n        return dest;\n      },\n      /**\n       * @method copyToIf\n       * @member iNet\n       * Copies a set of named properties fom the source object to the destination object\n       * if the destination object does not already have them.\n       *\n       * Example:\n       *\n       *      var foo = { a: 1, b: 2, c: 3 };\n       *      var bar = iNet.copyIf({ a:115 }, foo, 'a,c');\n       *      // bar = { a: 115, c: 3 };\n       *\n       * @param {Object} destination The destination object.\n       * @param {Object} source The source object.\n       * @param {String/String[]} names Either an Array of property names, or a single string\n       * with a list of property names separated by \",\", \";\" or spaces.\n       * @return {Object} The `dest` object.\n       */\n      copyIf: function (destination, source, names) {\n        if (typeof names === 'string') {\n          names = names.split(propertyNameSplitRe);\n        }\n        for (var name, i = 0, n = names ? names.length : 0; i < n; i++) {\n          name = names[i];\n          if (destination[name] === undefined) {\n            destination[name] = source[name];\n          }\n        }\n        return destination;\n      },\n      /**\n       * Returns true if the passed object is a JavaScript Object, otherwise false.\n       *\n       * @param {Object} v The object to test\n       * @return {Boolean}\n       */\n      isObject: function (v) {\n        return v && typeof v == \"object\";\n      },\n      /**\n       * Returns true if the passed object is a string.\n       *\n       * @param {Object} v The object to test\n       * @return {Boolean}\n       */\n      isString: function (v) {\n        return typeof v === 'string';\n      },\n      /**\n       * Returns true if the passed object is a number. Returns false for\n       * non-finite numbers.\n       *\n       * @param {Object} v The object to test\n       * @return {Boolean}\n       */\n      isNumber: function (v) {\n        return typeof v === 'number' && isFinite(v);\n      },\n      /**\n       * Returns true if the passed object is a boolean.\n       *\n       * @param {Object} v The object to test\n       * @return {Boolean}\n       */\n      isBoolean: function (v) {\n        return typeof v === 'boolean';\n      },\n      /**\n       * Returns true if the passed object is a JavaScript array, otherwise false.\n       *\n       * @param {Object} v The object to test\n       * @return {Boolean}\n       */\n      isArray: function (v) {\n        return toString.apply(v) === '[object Array]';\n      },\n      /**\n       * Returns true if the passed object is not undefined.\n       *\n       * @param {Object} v The object to test\n       * @return {Boolean}\n       */\n      isDefined: function (v) {\n        return typeof v !== 'undefined';\n      },\n      /**\n       * Returns true if the passed value is iterable, false otherwise\n       * @param {Mixed} value The value to test\n       * @return {Boolean}\n       */\n      isIterable: function(value) {\n        return (value && typeof value !== 'string') ? value.length !== undefined : false;\n      },\n      /**\n       * Returns true if the passed value is empty. The value is deemed to be\n       * empty if it is * null * undefined * an empty array * a zero length * an empty object\n       * string (Unless the allowBlank parameter is true)\n       *\n       * @param {Mixed} value The value to test\n       * @param {Boolean} allowBlank (optional) true to allow empty strings (defaults to false)\n       * @return {Boolean}\n       */\n      isEmpty: function (v, allowBlank) {\n        return v === null || v === undefined || ((iNet.isArray(v) && !v.length)) || (!allowBlank ? v === '' : false) || iNet.isEmptyObject(v);\n      },\n      /**\n       * Returns the given value itself if it's not empty, as described in {@link iNet#isEmpty}; returns the default\n       * value (second argument) otherwise.\n       *\n       * @param {Object} value The value to test.\n       * @param {Object} defaultValue The value to return if the original value is empty.\n       * @param {Boolean} [allowBlank=false] `true` to allow zero length strings to qualify as non-empty.\n       * @return {Object} value, if non-empty, else defaultValue.\n       */\n      valueFrom: function(value, defaultValue, allowBlank){\n        return iNet.isEmpty(value, allowBlank) ? defaultValue : value;\n      },\n      /**\n       * Return true if passed object is empty.\n       * @param {Mixed} value The value to test\n       * @returns {boolean}\n       */\n      isEmptyObject: function(v){\n        if(!iNet.isObject(v)) {\n          return false;\n        }\n        for(var key in v){\n          return false;\n        }\n        return true;\n      },\n      /**\n       * Returns true if the passed object is a email.\n       *\n       * @param {Object} v The object to test\n       * @return {Boolean}\n       */\n      isEmail: function (v) {\n        return /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/.test(v);\n      },\n      /**\n       * Returns true if the passed value is a JavaScript Date object, false otherwise.\n       * @param {Object} v The object to test\n       * @return {Boolean}\n       */\n      isDate: function(v) {\n        return toString.call(v) === '[object Date]';\n      },\n      /**\n       * Returns true if the passed value is a JavaScript 'primitive', a string, number or boolean.\n       * @param {Mixed} value The value to test\n       * @return {Boolean}\n       */\n      isPrimitive: function(value) {\n        var type = typeof value;\n        return type === 'string' || type === 'number' || type === 'boolean';\n      },\n      /**\n       * Returns `true` if the passed value is an HTMLElement\n       * @param {Object} value The value to test.\n       * @return {Boolean}\n       */\n      isElement: function(value) {\n        return value ? value.nodeType === 1 : false;\n      },\n      /**\n       * True if the detected browser is Opera.\n       *\n       * @type Boolean\n       */\n      isOpera: isOpera,\n      /**\n       * True if the detected browser uses WebKit.\n       *\n       * @type Boolean\n       */\n      isWebKit: isWebKit,\n      /**\n       * True if the detected browser is Chrome.\n       *\n       * @type Boolean\n       */\n      isChrome: isChrome,\n      /**\n       * True if the detected browser is Safari.\n       *\n       * @type Boolean\n       */\n      isSafari: isSafari,\n      /**\n       * True if the detected browser is Safari 3.x.\n       *\n       * @type Boolean\n       */\n      isSafari3: isSafari3,\n      /**\n       * True if the detected browser is Safari 4.x.\n       *\n       * @type Boolean\n       */\n      isSafari4: isSafari4,\n      /**\n       * True if the detected browser is Safari 2.x.\n       *\n       * @type Boolean\n       */\n      isSafari2: isSafari2,\n      /**\n       * True if the detected browser is Internet Explorer.\n       *\n       * @type Boolean\n       */\n      isIE: isIE,\n      /**\n       * True if the detected browser is Internet Explorer 6.x.\n       *\n       * @type Boolean\n       */\n      isIE6: isIE6,\n      /**\n       * True if the detected browser is Internet Explorer 7.x.\n       *\n       * @type Boolean\n       */\n      isIE7: isIE7,\n      /**\n       * True if the detected browser is Internet Explorer 8.x.\n       *\n       * @type Boolean\n       */\n      isIE8: isIE8,\n      /**\n       * True if the detected browser is Internet Explorer 9.x.\n       *\n       * @type Boolean\n       */\n      isIE9: isIE9,\n      /**\n       * True if the detected browser is Internet Explorer 10.x.\n       *\n       * @type Boolean\n       */\n      isIE10: isIE10,\n      /**\n       * True if the detected browser uses the Gecko layout engine (e.g. Mozilla,\n       * Firefox).\n       *\n       * @type Boolean\n       */\n      isGecko: isGecko,\n      /**\n       * True if the detected browser uses a pre-Gecko 1.9 layout engine (e.g.\n       * Firefox 2.x).\n       *\n       * @type Boolean\n       */\n      isGecko2: isGecko2,\n      /**\n       * True if the detected browser uses a Gecko 1.9+ layout engine (e.g.\n       * Firefox 3.x).\n       *\n       * @type Boolean\n       */\n      isGecko3: isGecko3,\n      /**\n       * True if the detected browser uses a Gecko 1.9+ layout engine (e.g.\n       * Firefox 4.x).\n       *\n       * @type Boolean\n       */\n      isGecko4: isGecko4,\n      /**\n       * True if the detected browser is Internet Explorer running in non-strict\n       * mode.\n       *\n       * @type Boolean\n       */\n      isBorderBox: isBorderBox,\n      /**\n       * True if the detected platform is Linux.\n       *\n       * @type Boolean\n       */\n      isLinux: isLinux,\n      /**\n       * True if the detected platform is Windows.\n       *\n       * @type Boolean\n       */\n      isWindows: isWindows,\n      /**\n       * True if the detected platform is Mac OS.\n       *\n       * @type Boolean\n       */\n      isMac: isMac,\n      /**\n       * True if the detected platform is Adobe Air.\n       *\n       * @type Boolean\n       */\n      isAir: isAir,\n      /**\n       * True if the detected browser is Support.\n       *\n       * @type Boolean\n       */\n      isSupport: isSupport,\n      /**\n       * Converts any iterable (numeric indices and a length property) into a\n       * true array Don't use this on strings. IE doesn't support \"abc\"[0]\n       * which this implementation depends on. For strings, use this instead:\n       * \"abc\".match(/./g) => [a,b,c];\n       *\n       * @param {Iterable} the iterable object to be turned into a true Array.\n       * @return (Array) array\n       */\n      toArray: function () {\n        return isIE ? function (a, i, j, res) {\n          res = [];\n          iNet.each(a, function (v) {\n            res.push(v);\n          });\n          return res.slice(i || 0, j || res.length);\n        } : function (a, i, j) {\n          return Array.prototype.slice.call(a, i || 0, j || a.length);\n        };\n      }(),\n      /**\n       * Copies all the properties of config to obj if they don't already exist.\n       *\n       * @param {Object} obj The receiver of the properties\n       * @param {Object} config The source of the properties\n       * @return {Object} returns obj\n       */\n      applyIf: function (o, c) {\n        if (o) {\n          for (var p in c) {\n            if (iNet.isEmpty(o[p])) {\n              o[p] = c[p];\n            }\n          }\n        }\n        return o;\n      },\n      /**\n       * Iterates an array or an iterable value and invoke the given callback function for each item.\n       *\n       * @param {Object} array The item at the current index in the passed array\n       * @param {Object} fn The callback function\n       * @param {Object} scope (optional) The scope (this reference) in which the specified function is executed.\n       */\n      each: function (array, fn, scope) {\n        if (iNet.isEmpty(array, true)) {\n          return;\n        }\n        for (var i = 0, len = array.length; i < len; i++) {\n          if (fn.call(scope || array[i], array[i], i, array) === false) {\n            return i;\n          }\n        }\n      },\n      /**\n       * Creates namespaces to be used for scoping variables and classes so that they are not global. Specifying the last node of a namespace implicitly creates all other nodes.\n       * Usage:\n       *\n       *     iNet.namespace('iNet.ui', 'iNet.ui.form');\n       *\n       *     // equivalent and preferable to the above syntax\n       *     iNet.ns('iNet.ui',, 'iNet.ui.form');\n       *\n       *     iNet.ui.form.Control = function() { ... };\n       *\n       * @param {String...} namespaces\n       * @return {Object} The (last) namespace object created.\n       * @member iNet\n       * @method namespace\n       */\n      namespace: function () {\n        var o, d;\n        iNet.each(arguments, function (v) {\n          d = v.split(\".\");\n          o = window[d[0]] = window[d[0]] || {};\n          iNet.each(d.slice(1), function (v2) {\n            o = o[v2] = o[v2] || {};\n          });\n        });\n        return o;\n      },\n      /**\n       * Get parameter from URL\n       *\n       * @param {String} name The parameter name\n       * @param {String} url (optional) The URL\n       *\n       * @return {String} Returns the value of param\n       */\n      getParam: function (name, url) {\n        if(!!window['ctx_'+ name]) {\n          return window['ctx_'+ name];\n        }\n        name = name.replace(/[\\[]/, \"\\\\\\[\").replace(/[\\]]/, \"\\\\\\]\");\n        var regexS = \"[\\\\?&]\" + name + \"=([^&#]*)\";\n        var regex = new RegExp(regexS);\n        var results = regex.exec(url || window.location.href);\n        if (!results) {\n          return \"\";\n        }\n        else {\n          return results[1];\n        }\n      },\n      /**\n       * Parser html to string\n       *\n       * @param {String} v the given value\n       * @return {String} The new string\n       */\n      parserHtml: function (v) {\n        if (v === undefined || v === null || v.length === undefined) {\n          return '';\n        }\n        v.replace(/</g, \"&lt;\");\n        v.replace(/>/g, \"&gt;\");\n        v.replace(/\\n/g, '<br />');\n        return v;\n      },\n      /**\n       * Generate the identifier.\n       * @return {String} The string\n       */\n      generateId: function () {\n        var sid=\"\";\n        for (var i=0; i<24; i++)\n        {\n          sid+=Math.floor(Math.random()*0xF).toString(0xF);\n        }\n        return sid;\n      },\n      /**\n       * Generate the UUID.\n       * @return {String} The string UUID\n       */\n      generateUUID: function () {\n        var d = new Date().getTime();\n        var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n          var r = (d + Math.random() * 16) % 16 | 0;\n          d = Math.floor(d / 16);\n          return (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16);\n        });\n        return uuid;\n      },\n      /**\n       * Generate the identifier as alphabet.\n       * @return {String} The string\n       */\n      alphaGenerateId: function () {\n        var __id = '';\n        var __alphabet = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\n        var len = __alphabet.length;\n        for (var index = 0; index < len; index++) {\n          __id += __alphabet.charAt(Math.floor(Math.random() * len));\n        }\n        // return the identifier 24 character\n        return __id.substr(len - 24);\n      },\n      /**\n       * Returns the current timestamp\n       * @param {Number} time (optional) the timestamp\n       * @return {Number}  The current timestamp\n       */\n      getDate: function (time) {\n        var __time = time || new Date().getTime();\n        try {\n          return (new Date(__time)).getTime();\n        }\n        catch (e) {\n          return (new Date()).getTime();\n        }\n      },\n      /**\n       * Get layout of framework\n       * @returns {window} The given window document\n       */\n      getLayout: function () {\n        return window.parent;\n      },\n      /**\n       * Get current Application\n       * @return {iNet.app.Application} The current application\n       */\n      getApp: function(){\n        var layout = iNet.getLayout();\n        var app= null;\n        if(layout && layout.iNet) {\n          app = layout.iNet.APP;\n        }\n        return app;\n      },\n      /**\n       * Return number item of object\n       * @param {Object} v The object to get size\n       * @return {Number}\n       */\n      getSize: function (v) {\n        var size = 0, key;\n        if (iNet.isArray(v)) {\n          size = v.length;\n        } else if(iNet.isObject(v)) {\n          for (key in v) {\n            if (v.hasOwnProperty(key)) {\n              size++;\n            }\n          }\n        } else {\n          size = v.length;\n        }\n        return size;\n      },\n      /**\n       * Return currency with currency code\n       * @deprecated 5.6\n       * @param {Number} v The number of currency\n       * @returns {String}\n       */\n      getCurrency: function (v) {\n        var __lang = iNet.lang || iNet.language;\n        var __numberArr = v.toString().split('.');\n        __numberArr[0] = __numberArr[0].replace(/(\\d)(?=(\\d\\d\\d)+(?!\\d))/g, '$1,');\n        var __result = __numberArr.join('.');\n        switch (__lang) {\n          case 'en' : return String.format('{0} USD', __result); break;\n          default : return String.format('{0} VND', __result);\n        }\n      },\n      /**\n       * Returns the given value itself if it's not empty, as described in {@link iNet#isEmpty}; returns the default\n       * value (second argument) otherwise.\n       *\n       * @param {Object} value The value to test.\n       * @param {Object} defaultValue The value to return if the original value is empty.\n       * @param {Boolean} [allowBlank=false] `true` to allow zero length strings to qualify as non-empty.\n       * @return {Object} value, if non-empty, else defaultValue.\n       */\n      valueFrom: function(value, defaultValue, allowBlank){\n        return iNet.isEmpty(value, allowBlank) ? defaultValue : value;\n      },\n      /**\n       * @property {Function}\n       * A reusable empty function.\n       */\n      emptyFn: function () {},\n      /**\n       * Create a new function from the provided `fn`, the arguments of which are pre-set to `args`.\n       * New arguments passed to the newly created callback when it's invoked are appended after the pre-set ones.\n       * This is especially useful when creating callbacks.\n       * @param {Function} fn The original function.\n       * @param {Array} args The arguments to pass to new callback.\n       * @param {Object} scope (optional) The scope (`this` reference) in which the function is executed.\n       * @return {Function} The new callback function.\n       */\n      pass: function(fn, args, scope) {\n        if (!iNet.isArray(args)) {\n          if (iNet.isIterable(args)) {\n            args = iNet.Array.clone(args);\n          } else {\n            args = args !== undefined ? [args] : [];\n          }\n        }\n\n        return function() {\n          var fnArgs = args.slice();\n          fnArgs.push.apply(fnArgs, arguments);\n          return fn.apply(scope || this, fnArgs);\n        };\n      },\n      /**\n       * Overrides members of the specified target with the given values.\n       * @param {Object} origclass The class to override\n       * @param {Object} overrides The list of functions to add to origClass.\n       * This should be specified as an object literal containing one or more methods.\n       * @method override\n       */\n      override: function (origclass, overrides) {\n        if (overrides) {\n          var p = origclass.prototype;\n          iNet.apply(p, overrides);\n          if (iNet.isIE && overrides.toString != origclass.toString) {\n            p.toString = overrides.toString;\n          }\n        }\n      },\n      /**\n       * Defines a class or override\n       * @param {Function} subclass The class inheriting the functionality\n       * @param {Function} superclass The class being extended\n       * @param {Object} overrides (optional) A literal with members which are copied\n       * into the subclass's prototype, and are therefore shared between all instances of the new class.\n       * @return {Function} The subclass constructor.\n       * @method extend\n       */\n      extend: function () {\n        // inline overrides\n        var io = function (o) {\n          for (var m in o) {\n            this[m] = o[m];\n          }\n        };\n        var oc = Object.prototype.constructor;\n\n        return function (sb, sp, overrides) {\n          if (iNet.isObject(sp)) {\n            overrides = sp;\n            sp = sb;\n            sb = overrides.constructor != oc ? overrides.constructor : function () {\n              sp.apply(this, arguments);\n            };\n          }\n          var F = function () {\n          }, sbp, spp = sp.prototype;\n\n          F.prototype = spp;\n          sbp = sb.prototype = new F();\n          sbp.constructor = sb;\n          sb.superclass = spp;\n          if (spp.constructor == oc) {\n            spp.constructor = sp;\n          }\n          sb.override = function (o) {\n            iNet.override(sb, o);\n          };\n          sbp.superclass = sbp.supr = (function () {\n            return spp;\n          });\n          sbp.override = io;\n          iNet.override(sb, overrides);\n          sb.extend = function (o) {\n            iNet.extend(sb, o);\n          };\n          return sb;\n        };\n      }(),\n      getIconByAppName: function (appName, domain) {\n        if(iNet.isEmpty(domain) || iNet.isEmpty(appName))\n          throw new Error(\"Domain or application name must not empty\");\n        var url = new URL(domain);\n        var __iconFile = appName.toLowerCase() + '.png';\n        return url.origin + url.pathname.substring(0, url.pathname.indexOf(\"/\",2)) +'/images/' + __iconFile;\n      },\n      /*\n      * Load JavaScript file (asynchronously)\n      * @param {String} src The URL of an Javascript\n      * @return {Function} onLoad The new callback function.\n       */\n      loadScript: function(src, onLoad) {\n        var script = document.createElement('script');\n        script.type = 'text/javascript';\n        script.src = src;\n        if (script.readyState) {\n          script.onreadystatechange = function () {\n            var state = this.readyState;\n            if (state === 'loaded' || state === 'complete') {\n              script.onreadystatechange = null;\n              onLoad();\n            }\n          };\n        } else {\n          script.onload = onLoad;\n        }\n        document.getElementsByTagName('head')[0].appendChild(script);\n      }\n    });\n    /**\n     * Convenient alias for {@link iNet#namespace iNet.namespace}.\n     * @inheritdoc iNet#namespace\n     * @member iNet\n     * @method ns\n     */\n    iNet.ns = iNet.namespace;\n  })();\n\n  /**\n   * Support URL decode, encode.\n   *\n   * @class iNet.Url\n   *\n   */\n  iNet.Url = {\n    /**\n     * URL encoding strings\n     * @param string The string to encode\n     * @returns {String} The new String\n     */\n    encode: function (string) {\n      return escape(this._utf8_encode(string));\n    },\n\n    /**\n     * URL decoding to string\n     * @param string  the String to decode\n     * @returns {String} The new String\n     */\n    decode: function (string) {\n      return this._utf8_decode(unescape(string));\n    },\n    //\n    /**\n     * private method for UTF-8 encoding\n     * @param string The string to encode\n     * @returns {string} The new String\n     * @private\n     */\n    _utf8_encode: function (string) {\n      string = string.replace(/\\r\\n/g, \"\\n\");\n      var utftext = \"\";\n\n      for (var n = 0; n < string.length; n++) {\n\n        var c = string.charCodeAt(n);\n\n        if (c < 128) {\n          utftext += String.fromCharCode(c);\n        }\n        else if ((c > 127) && (c < 2048)) {\n          utftext += String.fromCharCode((c >> 6) | 192);\n          utftext += String.fromCharCode((c & 63) | 128);\n        }\n        else {\n          utftext += String.fromCharCode((c >> 12) | 224);\n          utftext += String.fromCharCode(((c >> 6) & 63) | 128);\n          utftext += String.fromCharCode((c & 63) | 128);\n        }\n      }\n      return utftext;\n    },\n    /**\n     *  private method for UTF-8 decoding\n     * @param utftext The string to decode\n     * @returns {string} The new String\n     * @private\n     */\n    _utf8_decode: function (utftext) {\n      var string = \"\";\n      var i = 0;\n      var c = 0, c1 = 0, c2 = 0, c3=0;\n\n      while (i < utftext.length) {\n\n        c = utftext.charCodeAt(i);\n\n        if (c < 128) {\n          string += String.fromCharCode(c);\n          i++;\n        }\n        else if ((c > 191) && (c < 224)) {\n          c2 = utftext.charCodeAt(i + 1);\n          string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));\n          i += 2;\n        }\n        else {\n          c2 = utftext.charCodeAt(i + 1);\n          c3 = utftext.charCodeAt(i + 2);\n          string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));\n          i += 3;\n        }\n      }\n      return string;\n    }\n  };\n\n  iNet.Template = {\n    parse: function (templateId, obj) {\n      var templateElement = document.getElementById(templateId);\n      var converter = function (data) {\n        return data;\n      };\n\n      function getTemplateText(element) {\n        return element.innerHTML.toString();\n      }\n\n      if (iNet.isFunction(templateElement['converter']))\n        converter = templateElement['converter'];\n\n      var item = converter(obj);\n\n      return getTemplateText(templateElement).replace(/{(\\w+)}/g, function (str, key) {\n        return (typeof item[key] !== 'undefined') ? item[key] : '';\n      });\n    }\n  };\n\n  /*--------------------------------------------\n   |           S C O P E  F U N C T I O N      |\n   ============================================*/\n  /**\n   * These functions are available on every Function object (any JavaScript function).\n   * @class Function\n   */\n  iNet.apply(Function.prototype, {\n    /**\n     * Creates an interceptor function. The passed fcn is called before the\n     * original one. If it returns false, the original one is not called. The\n     * resulting function returns the results of the original function. The passed\n     * fcn is called with the parameters of the original function.\n     *\n     * @param {Function} fcn The function to call before the original\n     * @param {Object} scope (optional) The scope of the passed fcn (Defaults to scope of original function or window)\n     * @return {Function} The new function\n     */\n    createInterceptor: function (fcn, scope) {\n      var method = this;\n      return !iNet.isFunction(fcn) ? this : function () {\n        var me = this, args = arguments;\n        fcn.target = me;\n        fcn.method = method;\n        return (fcn.apply(scope || me || window, args) !== false) ? method.apply(me || window, args) : null;\n      };\n    },\n\n    /**\n     * Creates a callback that passes arguments[0], arguments[1], arguments[2],\n     * ... Call directly on any function. Example:\n     *        myFunction.createCallback(arg1, arg2);\n     *        //Will create a function that is bound to those 2 args. executes in the window scope.\n     *\n     * @return {Function} The new function\n     */\n    createCallback: function () {\n      // make args available, in function below\n      var args = arguments, method = this;\n      return function () {\n        return method.apply(window, args);\n      };\n    },\n\n    /**\n     * Creates a delegate (callback) that sets the scope to obj. Call directly\n     * on any function.\n     * Example:\n     *\n     *       this.myFunction.createDelegate(this, [arg1, arg2]);\n     *       //Will create a function that is automatically scoped to obj so that the <tt>this</tt> variable inside the callback points to obj.\n     *\n     * @param {Object} obj (optional) The object for which the scope is set\n     * @param {Array} args (optional) Overrides arguments for the call. (Defaults to the arguments passed by the caller)\n     * @param {Boolean/Number} appendArgs (optional) if True args are appended to call args instead of overriding,\n     * if a number the args are inserted at the specified position\n     * @return {Function} The new function\n     */\n    createDelegate: function (obj, args, appendArgs) {\n      var method = this;\n      return function () {\n        var callArgs = args || arguments;\n        if (appendArgs === true) {\n          callArgs = Array.prototype.slice.call(arguments, 0);\n          callArgs = callArgs.concat(args);\n        }\n        else if (iNet.isNumber(appendArgs)) {\n          callArgs = Array.prototype.slice.call(arguments, 0); // copy arguments first\n          var applyArgs = [appendArgs, 0].concat(args); // create method call params\n          Array.prototype.splice.apply(callArgs, applyArgs); // splice them in\n        }\n        return method.apply(obj || window, callArgs);\n      };\n    },\n\n    /**\n     * Calls this function after the number of millseconds specified, optionally\n     * in a specific scope. Example usage:\n     *\n     *     var sayHi = function(name){\n     *         alert('Hi, ' + name);\n     *     }\n     *\n     *     // executes immediately:\n     *     sayHi('Fred');\n     *\n     *     // executes after 2 seconds:\n     *     Function.defer(sayHi, 2000, this, ['Fred']);\n     *\n     *     // this syntax is sometimes useful for deferring\n     *     // execution of an anonymous function:\n     *     Function.defer(function(){\n     *         alert('Anonymous');\n     *     }, 100);\n     *\n     * @param {Number} millis The number of milliseconds for the setTimeout call (if\n     *          less than or equal to 0 the function is executed immediately)\n     * @param {Object} obj (optional) The object for which the scope is set\n     * @param {Array} args (optional) Overrides arguments for the call. (Defaults to the arguments passed by the caller)\n     * @param {Boolean/Number} appendArgs (optional) if True args are appended to call args instead of overriding,\n     * if a number the args are inserted at the specified position\n     * @return {Number} The timeout id that can be used with clearTimeout\n     */\n    defer: function (millis, obj, args, appendArgs) {\n      var fn = this.createDelegate(obj, args, appendArgs);\n      if (millis > 0) {\n        return setTimeout(fn, millis);\n      }\n      fn();\n      return 0;\n    }\n  });\n\n  /**\n   * Provides the methods of sending messages. Recieving messages is the same in both of available Plugin classes\n   * @class iNet.PluginManager\n   */\n  iNet.PluginManager = {\n    /**\n     * Add EventListener to Listen to message from window\n     * @param element - A DOM element\n     * @param eventName - The event to listen\n     * @param eventHandler - The callback to execute\n     */\n    bindEvent: function (element, eventName, eventHandler) {\n      if (element.addEventListener) {\n        element.addEventListener(eventName, eventHandler, false);\n      } else if (element.attachEvent) {\n        element.attachEvent('on' + eventName, eventHandler);\n      }\n    },\n    /**\n     * Send a message to the window\n     * @param msg - The data to send\n     * @param contentWindow - The window object\n     */\n    sendMessageTo: function (msg, contentWindow) {\n      contentWindow = contentWindow || window.parent;\n      // Make sure you are sending a string, and to stringify JSON\n      contentWindow.postMessage(msg, '*');\n    },\n    /**\n     * Send message to parent window\n     * @param msg - The data to send\n     */\n    sendMessage: function(msg) {\n      iNet.PluginManager.sendMessageTo(msg, window.parent);\n    }\n  };\n  /**\n   * Copyright (c) 2016 by Vy Nguyen (ntvy@inetcloud.vn)\n   *\n   * Created by ntvy on 14:55 25/03/2016\n   *\n   */\n\n  /*--------------------------------------------\n   |               S T R I N G                   |\n   ============================================*/\n  /**\n   * A collection of useful static methods to deal with strings.\n   *\n   * `String` is a global object that may be used to construct String instances.\n   *\n   * For example:\n   *\n   *     var s1 = \"2 + 2\";               // creates a string primitive\n   *     var s2 = new String(\"2 + 2\");  // creates a String object\n   *\n   * @class String\n   */\n  iNet.applyIf(String, {\n    /**\n     * @property {Number} length\n     * Reflects the length of the string.\n     */\n    /**\n     * @method charAt\n     * Returns the character at the specified index.\n     */\n    /**\n     * @method charCodeAt\n     * Returns a number indicating the Unicode value of the character at the given index.\n     */\n    /**\n     * @method concat\n     * Combines combines the text from one or more strings and returns a new string. Changes to the text in\n     * one string do not affect the other string.\n     */\n    /**\n     * @method indexOf\n     * Returns the index within the calling `String` object of the first occurrence of the specified value,\n     * or -1 if not found.\n     */\n    /**\n     * @method lastIndexOf\n     * Returns the index within the calling String object of the last occurrence of\n     * the specified value, or -1 if not found. The calling string is searched\n     * backward, starting at fromIndex.\n     */\n    /**\n     * @method replace\n     * Used to find a match between a regular expression and a string, and to replace the matched substring\n     * with a new substring.\n     */\n    /**\n     * @method search\n     * Executes the search for a match between a regular expression and a specified string.\n     */\n    /**\n     * @method slice\n     * Extracts a section of a string and returns a new string.\n     */\n    /**\n     * @method split\n     * Splits a `String` object into an array of strings by separating the string into substrings.\n     */\n    /**\n     * @method substr\n     * Returns the characters in a string beginning at the specified location through the specified number\n     * of characters.\n     */\n    /**\n     * @method substring\n     * Returns the characters in a string between two indexes into the string.\n     */\n    /**\n     * @method toLocaleLowerCase\n     * The characters within a string are converted to lower case while respecting the current locale. For\n     * most languages, this will return the same as `toLowerCase`.\n     */\n    /**\n     * @method toLowerCase\n     * Returns the calling string value converted to lower case.\n     */\n    /**\n     * @method toString\n     * Returns a string representing the specified object. Overrides the `Object.toString` method.\n     */\n    /**\n     * @method toUpperCase\n     * Returns the calling string value converted to uppercase.\n     */\n    /**\n     * @method valueOf\n     * Returns the primitive value of the specified object. Overrides the `Object.valueOf` method.\n     */\n    /**\n     * Allows you to define a tokenized string and pass an arbitrary number of\n     * arguments to replace the tokens.\n     *  Example usage:\n     *\n     *     var cls = 'my-class',\n     *         text = 'Some text';\n     *     var s = String.format('<div class=\"{0}\">{1}</div>', cls, text);\n     *     // s now contains the string: '<div class=\"my-class\">Some text</div>'\n     * @param {String} format The values to replace tokens `{0}`, `{1}`, etc in order.\n     * @return {String} The formatted string.\n     */\n    format: function (format) {\n      var args = iNet.toArray(arguments, 1);\n      return format.replace(/\\{(\\d+)\\}/g, function (m, i) {\n        return args[i];\n      });\n    },\n    /**\n     * Parse a template with list keys defined of an Object.\n     *\n     * Example usage:\n     *\n     *   - HTML Template:\n     *\n     *     <script id=\"template-id\" type=\"text/template\"\n     *             data-keys=\"title|content|time\"\n     *             data-fn=\"convertTitle||convertTime\">\n     *       <div title=\"{0}\">{1} - <span class=\"time\">{2}</span></div>\n     *     </script>\n     *\n     *   - Javascript:\n     *\n     *     var templateEl = $('#template-id');\n     *     var template = templateEl[0];\n     *\n     *     template.convertTitle = function(title) {\n     *       return 'Title of Object is ' + title;\n     *     };\n     *     template.convertTime = function(time) {\n     *       return '<span>' + new Date(time) + '</span>';\n     *     };\n     *\n     *     var obj = {title: 'Any Title', content: 'Short Content', time: 1476179064156};\n     *\n     *     var str = String.parseTemplate('template-id', obj);\n     *     // str now contains the string:\n     *     '<div title=\"Title of Object is Any Title\">Short Content - <span class=\"time\">Tue Oct 11 2016 16:44:24 GMT+0700 (ICT)</span></div>'\n     *\n     *     // Pass param keys if you want to override list keys on template\n     *     // Pass param convertFn if you want to override function has been implement on templateEl DOM\n     *\n     * @param {String} templateId\n     * @param {Object} obj\n     * @param {Array} [keys] (optional)\n     * @param {Array|Function} [convertFn] (optional)\n     * @returns {string|void|XML}\n     * @public\n     */\n    parseTemplate: function (templateId, obj, keys, convertFn) {\n      var _this = this;\n      var item = obj;\n      var tplEl = document.getElementById(templateId);\n      var converter = tplEl.getAttribute('data-converter');\n      var renderFn = tplEl.getAttribute('data-fn');\n      if (!keys)\n        keys = tplEl.getAttribute('data-keys').split('|');\n\n      if (converter && iNet.isFunction(tplEl[converter]))\n        converter = tplEl[converter];\n\n      if (convertFn && iNet.isFunction(convertFn))\n        converter = convertFn;\n      else {\n        if (renderFn)\n          convertFn = renderFn.split('|');\n      }\n\n      if (iNet.isFunction(converter))\n        item = converter(obj);\n\n      return tplEl.innerHTML.replace(/\\{(\\d+)\\}/g, function (m, i) {\n        if (convertFn)\n          if (convertFn[i] && iNet.isFunction(tplEl[convertFn[i]]))\n            return tplEl[convertFn[i]].call(_this, item[keys[i]] || '', item, keys[i]);\n        return item[keys[i]] || '';\n      });\n    },\n\n    /**\n     * Trims whitespace from either end of a string, leaving spaces within the string intact\n     *\n     * @return {String} Returns a string that trim all white spaces at the begining and the end of this string.\n     */\n    trim: function () {\n      return this.replace(/^[\\s\\xA0]+/, \"\").replace(/[\\s\\xA0]+$/, \"\");\n    },\n\n    /**\n     * Checks if a string starts with a substring\n     *\n     * @param str the given string to check.\n     * @return {Boolean} Returns true if this string starts with the given string.\n     */\n    startsWith: function (str) {\n      return (this.match(\"^\" + str) == str);\n    },\n\n    /**\n     *\n     * Checks if a string ends with a substring\n     *\n     * @param str the given string to check.\n     * @return {Boolean} Returns true if this string ends with the given string.\n     */\n    endsWith: function (str) {\n      return (this.match(str + \"$\") == str);\n    }\n  });\n  iNet.applyIf(String.prototype, {\n    /**\n     * Escapes the passed string quotes\n     *\n     * @return {String} The escaped string\n     */\n    escapeHtml: function () {\n      //return escape(this);\n      return (this.replace(/&/g, '&amp;').replace(/>/g, '&gt;').replace(/</g, '&lt;').replace(/\"/g, '&quot;'));\n    },\n    /**\n     * Returns an unescaped HTML trimmed string\n     * @returns {XML|string} The new string\n     */\n    unEscapeHtml: function () {\n      return (this.replace(/&amp;/g, '&').replace(/&gt;/g, '>').replace(/&lt;/g, '<').replace(/&quot;/g, '\"'));\n    },\n    /**\n     * Replace all line breaks in a string with br tags\n     * @returns {String} The new string\n     */\n    replaceBreak: function () {\n      return this.replace(/\\r\\n|\\r|\\n/g, \"<br />\");\n      //return (iNet.isEmpty(this) ? '' : this.replace(/\\r\\n|\\r|\\n/g, \"<br />\"));\n    },\n    /**\n     * Capitalize the given string\n     * @returns {string} The new string\n     */\n    capitalize: function () {\n      return this.charAt(0).toUpperCase() + this.slice(1);\n    },\n    /**\n     * @method removeAccents\n     * Change characters Vietnamese to English\n     * @returns {string} The new string\n     */\n    removeAccents: function () {\n      var accents_arr = [\n        \"à\", \"á\", \"ạ\", \"ả\", \"ã\", \"â\", \"ầ\", \"ấ\", \"ậ\", \"ẩ\", \"ẫ\", \"ă\", \"ằ\", \"ắ\", \"ặ\", \"ẳ\", \"ẵ\",\n        \"è\", \"é\", \"ẹ\", \"ẻ\", \"ẽ\", \"ê\", \"ề\", \"ế\", \"ệ\", \"ể\", \"ễ\",\n        \"ì\", \"í\", \"ị\", \"ỉ\", \"ĩ\",\n        \"ò\", \"ó\", \"ọ\", \"ỏ\", \"õ\", \"ô\", \"ồ\", \"ố\", \"ộ\", \"ổ\", \"ỗ\", \"ơ\", \"ờ\", \"ớ\", \"ợ\", \"ở\", \"ỡ\",\n        \"ù\", \"ú\", \"ụ\", \"ủ\", \"ũ\", \"ư\", \"ừ\", \"ứ\", \"ự\", \"ử\", \"ữ\",\n        \"ỳ\", \"ý\", \"ỵ\", \"ỷ\", \"ỹ\",\n        \"đ\",\n        \"À\", \"Á\", \"Ạ\", \"Ả\", \"Ã\", \"Â\", \"Ầ\", \"Ấ\", \"Ậ\", \"Ẩ\", \"Ẫ\", \"Ă\", \"Ằ\", \"Ắ\", \"Ặ\", \"Ẳ\", \"Ẵ\",\n        \"È\", \"É\", \"Ẹ\", \"Ẻ\", \"Ẽ\", \"Ê\", \"Ề\", \"Ế\", \"Ệ\", \"Ể\", \"Ễ\",\n        \"Ì\", \"Í\", \"Ị\", \"Ỉ\", \"Ĩ\",\n        \"Ò\", \"Ó\", \"Ọ\", \"Ỏ\", \"Õ\", \"Ô\", \"Ồ\", \"Ố\", \"Ộ\", \"Ổ\", \"Ỗ\", \"Ơ\", \"Ờ\", \"Ớ\", \"Ợ\", \"Ở\", \"Ỡ\",\n        \"Ù\", \"Ú\", \"Ụ\", \"Ủ\", \"Ũ\", \"Ư\", \"Ừ\", \"Ứ\", \"Ự\", \"Ử\", \"Ữ\",\n        \"Ỳ\", \"Ý\", \"Ỵ\", \"Ỷ\", \"Ỹ\",\n        \"Đ\"\n      ];\n      var no_accents_arr = [\n        \"a\", \"a\", \"a\", \"a\", \"a\", \"a\", \"a\", \"a\", \"a\", \"a\", \"a\", \"a\", \"a\", \"a\", \"a\", \"a\", \"a\",\n        \"e\", \"e\", \"e\", \"e\", \"e\", \"e\", \"e\", \"e\", \"e\", \"e\", \"e\",\n        \"i\", \"i\", \"i\", \"i\", \"i\",\n        \"o\", \"o\", \"o\", \"o\", \"o\", \"o\", \"o\", \"o\", \"o\", \"o\", \"o\", \"o\",\n        \"o\", \"o\", \"o\", \"o\", \"o\",\n        \"u\", \"u\", \"u\", \"u\", \"u\", \"u\", \"u\", \"u\", \"u\", \"u\", \"u\",\n        \"y\", \"y\", \"y\", \"y\", \"y\",\n        \"d\",\n        \"A\", \"A\", \"A\", \"A\", \"A\", \"A\", \"A\", \"A\", \"A\", \"A\", \"A\", \"A\",\n        \"A\", \"A\", \"A\", \"A\", \"A\",\n        \"E\", \"E\", \"E\", \"E\", \"E\", \"E\", \"E\", \"E\", \"E\", \"E\", \"E\",\n        \"I\", \"I\", \"I\", \"I\", \"I\",\n        \"O\", \"O\", \"O\", \"O\", \"O\", \"O\", \"O\", \"O\", \"O\", \"O\", \"O\", \"O\",\n        \"O\", \"O\", \"O\", \"O\", \"O\",\n        \"U\", \"U\", \"U\", \"U\", \"U\", \"U\", \"U\", \"U\", \"U\", \"U\", \"U\",\n        \"Y\", \"Y\", \"Y\", \"Y\", \"Y\",\n        \"D\"\n      ];\n      return this.replace(/[^\\u0000-\\u007E]/g, function (a) {\n        var index = accents_arr.indexOf(a);\n        return index < 0 ? a : no_accents_arr[index];\n      });\n    },\n    /**\n     * @method replaceSpace\n     * Replace all space in a string with special seperator\n     * @param {string} (optional) seperator Default with \"-\"\n     * @returns {string|*|XML|void}\n     */\n    replaceSpace: function (seperator) {\n      return this.replace(/ /g, seperator || '-');\n    },\n    /**\n     * @method cutStr\n     * Sub-String with space\n     * @param {int} length\n     * @returns {String}\n     */\n    cutStr: function (length) {\n      var arr = this.split(' ');\n      var subStr = '';\n      length = length - 3;\n      for (var i = 0; i < arr.length; i++) {\n        var tmpStr = subStr + (subStr.length > 0 ? ' ' : '') + arr[i];\n        if (tmpStr.length <= length)\n          subStr = tmpStr;\n        else\n          break;\n      }\n      return subStr + (this.length > length ? '...' : '');\n    }\n  });/**\n   * Copyright (c) 2016 by Vy Nguyen (ntvy@inetcloud.vn)\n   *\n   * Created by ntvy on 14:48 25/03/2016\n   *\n   */\n  /*--------------------------------------------\n   |                    D A T E                |\n   ============================================*/\n  /**\n   * Creates Date instances which let you work with dates and times.\n   *\n   * Formats a date given the supplied format string.\n   *\n   * The `Date` object provides uniform behavior across platforms.\n   * @class Date\n   *\n   *\n   * The following is a list of all currently supported formats:\n   * <pre class=\"\">\n   Format  Description                                                             Example returned values\n   ----  -----------------------------------------------------------------------   -----------------------\n   d     Day of the month, 2 digits with leading zeros                             01 to 31\n   D     A short textual representation of the day of the week                     Mon to Sun\n   j     Day of the month without leading zeros                                    1 to 31\n   l     A full textual representation of the day of the week                      Sunday to Saturday\n   N     ISO-8601 numeric representation of the day of the week                    1 (for Monday) through 7 (for Sunday)\n   S     English ordinal suffix for the day of the month, 2 characters             st, nd, rd or th. Works well with j\n   w     Numeric representation of the day of the week                             0 (for Sunday) to 6 (for Saturday)\n   z     The day of the year (starting from 0)                                     0 to 364 (365 in leap years)\n   W     ISO-8601 week number of year, weeks starting on Monday                    01 to 53\n   F     A full textual representation of a month, such as January or March        January to December\n   m     Numeric representation of a month, with leading zeros                     01 to 12\n   M     A short textual representation of a month                                 Jan to Dec\n   n     Numeric representation of a month, without leading zeros                  1 to 12\n   t     Number of days in the given month                                         28 to 31\n   L     Whether it&#39;s a leap year 1 if it is a leap year, 0 otherwise.\n   o     ISO-8601 year number (identical to (Y), but if the ISO week number (W)    Examples: 1998 or 2004\n   belongs to the previous or next year, that year is used instead)\n   Y     A full numeric representation of a year, 4 digits                         Examples: 1999 or 2003\n   y     A two digit representation of a year                                      Examples: 99 or 03\n   a     Lowercase Ante meridiem and Post meridiem                                 am or pm\n   A     Uppercase Ante meridiem and Post meridiem                                 AM or PM\n   g     12-hour format of an hour without leading zeros                           1 to 12\n   G     24-hour format of an hour without leading zeros                           0 to 23\n   h     12-hour format of an hour with leading zeros                              01 to 12\n   H     24-hour format of an hour with leading zeros                              00 to 23\n   i     Minutes, with leading zeros                                               00 to 59\n   s     Seconds, with leading zeros                                               00 to 59\n   u     Decimal fraction of a second                                              Examples:\n   (minimum 1 digit, arbitrary number of digits allowed)                      001 (i.e. 0.001s) or\n   100 (i.e. 0.100s) or\n   999 (i.e. 0.999s) or\n   999876543210 (i.e. 0.999876543210s)\n   O     Difference to Greenwich time (GMT) in hours and minutes                   Example: +1030\n   P     Difference to Greenwich time (GMT) with colon between hours and minutes   Example: -08:00\n   T     Timezone abbreviation of the machine running the code                     Examples: EST, MDT, PDT ...\n   Z     Timezone offset in seconds (negative if west of UTC, positive if east)    -43200 to 50400\n   c     ISO 8601 date\n   </pre>\n   *\n   * Example usage:\n   *\n   *      // Sample date:\n   *      // 'Wed Jan 10 2007 15:05:01 GMT-0600 (Central Standard Time)'\n   *      var dt = new Date('1/10/2007 03:05:01 PM GMT-0600');\n   *      console.log(dt.format('Y-m-d'));                          // 2007-01-10\n   *      console.log(dt.format('F j, Y, g:i a'));                  // January 10, 2007, 3:05 pm\n   *      console.log(dt.format('d/m/Y H:i:s'));                    // 11/01/2007 04:05:01\n   */\n  /**\n   * Date constant.\n   * @readonly\n   * @private\n   */\n  Date.replaceChars = {\n    shortMonths: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n    longMonths: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n    shortDays: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n    longDays: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n    // Day\n    d: function () {\n      return (this.getDate() < 10 ? '0' : '') + this.getDate();\n    },\n    D: function () {\n      return Date.replaceChars.shortDays[this.getDay()];\n    },\n    j: function () {\n      return this.getDate();\n    },\n    l: function () {\n      return Date.replaceChars.longDays[this.getDay()];\n    },\n    N: function () {\n      return this.getDay() + 1;\n    },\n    S: function () {\n      return (this.getDate() % 10 == 1 && this.getDate() != 11 ? 'st' : (this.getDate() % 10 == 2 && this.getDate() != 12 ? 'nd' : (this.getDate() % 10 == 3 && this.getDate() != 13 ? 'rd' : 'th')));\n    },\n    w: function () {\n      return this.getDay();\n    },\n    z: function () {\n      return \"Not Yet Supported\";\n    },\n    // Week\n    W: function () {\n      return \"Not Yet Supported\";\n    },\n    // Month\n    F: function () {\n      return Date.replaceChars.longMonths[this.getMonth()];\n    },\n    m: function () {\n      return (this.getMonth() < 9 ? '0' : '') + (this.getMonth() + 1);\n    },\n    M: function () {\n      return Date.replaceChars.shortMonths[this.getMonth()];\n    },\n    n: function () {\n      return this.getMonth() + 1;\n    },\n    t: function () {\n      return \"Not Yet Supported\";\n    },\n    // Year\n    L: function () {\n      return (((this.getFullYear() % 4 == 0) && (this.getFullYear() % 100 != 0)) || (this.getFullYear() % 400 == 0)) ? '1' : '0';\n    },\n    o: function () {\n      return \"Not Supported\";\n    },\n    Y: function () {\n      return this.getFullYear();\n    },\n    y: function () {\n      return ('' + this.getFullYear()).substr(2);\n    },\n    // Time\n    a: function () {\n      return this.getHours() < 12 ? 'am' : 'pm';\n    },\n    A: function () {\n      return this.getHours() < 12 ? 'AM' : 'PM';\n    },\n    B: function () {\n      return \"Not Yet Supported\";\n    },\n    g: function () {\n      return this.getHours() % 12 || 12;\n    },\n    G: function () {\n      return this.getHours();\n    },\n    h: function () {\n      return ((this.getHours() % 12 || 12) < 10 ? '0' : '') + (this.getHours() % 12 || 12);\n    },\n    H: function () {\n      return (this.getHours() < 10 ? '0' : '') + this.getHours();\n    },\n    i: function () {\n      return (this.getMinutes() < 10 ? '0' : '') + this.getMinutes();\n    },\n    s: function () {\n      return (this.getSeconds() < 10 ? '0' : '') + this.getSeconds();\n    },\n    // Timezone\n    e: function () {\n      return \"Not Yet Supported\";\n    },\n    I: function () {\n      return \"Not Supported\";\n    },\n    O: function () {\n      return (-this.getTimezoneOffset() < 0 ? '-' : '+') + (Math.abs(this.getTimezoneOffset() / 60) < 10 ? '0' : '') + (Math.abs(this.getTimezoneOffset() / 60)) + '00';\n    },\n    P: function () {\n      return (-this.getTimezoneOffset() < 0 ? '-' : '+') + (Math.abs(this.getTimezoneOffset() / 60) < 10 ? '0' : '') + (Math.abs(this.getTimezoneOffset() / 60)) + (Math.abs(this.getTimezoneOffset() % 60) < 10 ? '0' : '') + (Math.abs(this.getTimezoneOffset() % 60));\n    },\n    T: function () {\n      var m = this.getMonth();\n      this.setMonth(0);\n      var result = this.toTimeString().replace(/^.+ \\(?([^\\)]+)\\)?$/, '$1');\n      this.setMonth(m);\n      return result;\n    },\n    Z: function () {\n      return -this.getTimezoneOffset() * 60;\n    },\n    // Full Date/Time\n    c: function () {\n      return this.format(\"Y-m-d\") + \"T\" + this.format(\"H:i:sP\");\n    },\n    r: function () {\n      return this.toString();\n    },\n    U: function () {\n      return this.getTime() / 1000;\n    }\n  };\n  /**\n   * Formats a date given the supplied format string.\n   * @param {String} format The format string\n   * @return {String} The formatted date\n   */\n  Date.prototype.format = function (format) {\n    var returnStr = '';\n    var replace = Date.replaceChars;\n    for (var i = 0; i < format.length; i++) {\n      var curChar = format.charAt(i);\n      if (replace[curChar]) {\n        returnStr += replace[curChar].call(this);\n      }\n      else {\n        returnStr += curChar;\n      }\n    }\n    return returnStr;\n  };\n  /**\n   * Get the numeric day number of the year, adjusted for leap year.\n   * @returns {Number} 0 to 364 (365 in leap years).\n   */\n  Date.prototype.getDayOfYear = function () {\n    var start = new Date(this.getFullYear(), 0, 0),\n      now = new Date(this.getFullYear(), this.getMonth(), this.getDate()),\n      diff = now - start,\n      oneDate = 1000 * 60 * 60 * 24;\n    return Math.ceil(diff / oneDate);\n  };\n  /**\n   * Get the numeric week number of the year\n   * @returns {Number} Week number of the year.\n   */\n  Date.prototype.getWeek = function () {\n    var start = new Date(this.getFullYear(), 0, 0),\n      day = this.getDayOfYear();\n    return Math.ceil((day + start.getDay() + 1) / 7);\n  };\n  /**\n   * Get the numeric week number of the month\n   * @returns {number} Week number of the month\n   */\n  Date.prototype.getWeekOfMonth = function () {\n    var firstDay = new Date(this.getFullYear(), this.getMonth(), 1).getDay();\n    return Math.ceil((this.getDate() + firstDay) / 7);\n  };\n  /**\n   * Get the numeric day number of the year, adjusted for leap year.\n   * @param {Number} dayOfYear The date of year\n   * @returns {Date} The date\n   */\n  Date.prototype.getDateByDayOfYear = function (dayOfYear) {\n    var year = this.getFullYear();\n    var curDate = new Date(year, 0);\n    return new Date(curDate.setDate(dayOfYear || 0));\n  };\n  /**\n   * Copyright (c) 2016 by Vy Nguyen (ntvy@inetcloud.vn)\n   *\n   * Created by ntvy on 14:49 25/03/2016\n   *\n   */\n  // Register as a named AMD module, since iNet can be concatenated with other\n// files that may use define, but not via a proper concatenation script that\n// understands anonymous AMD modules. A named AMD is safest and most robust\n// way to register. Lowercase iNet is used because AMD module names are\n// derived from file names, and iNet is normally delivered in a lowercase\n// file name. Do this after creating the global so that if an AMD module wants\n// to call noConflict to hide this version of iNet, it will work.\n\n// Note that for maximum portability, libraries that are not iNet should\n// declare themselves as anonymous modules, and avoid setting a global if an\n// AMD loader is present. iNet is a special case. For more information, see\n// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\n  if ( typeof define === \"function\" && define.amd ) {\n    define( \"iNet\", [], function() {\n      return iNet;\n    } );\n  }\n  if ( typeof noGlobal === \"undefined\" ) {\n    window.iNet = iNet;\n  }\n\n  if(window['webConfig'] && typeof window['webConfig']===\"object\") {\n    iNet.apply(iNet, window['webConfig']);\n  }\n  return iNet;\n\n} );\n\n","// @ts-ignore\n/**\n * Copyright (c) 2022 by Vy Nguyen (ntvy@inetcloud.vn)\n *\n * Created by ntvy on 16:14 10/06/2022\n *\n */\nimport * as _iNet from './lib/inet-core';\n\nexport class iNet{\n    /**\n     * Either global variable or required library\n     */\n    private static iNetGlobal() {\n        if(window['iNet']) {\n            return window['iNet'];\n        }\n        return  _iNet;\n    }\n    /**\n     * Returns the full url from the given relative path.\n     *\n     * @param {String} relativePath (required) The given relative path.\n     *\n     * @return {String} The string URL\n     */\n    static getUrl (relativePath): string {\n        return this.iNetGlobal()['getUrl'](relativePath);\n    }\n    /**\n     * Returns full url form given relative path with firm prefix\n     * @param {String} path (required) The URL\n     * @return {String} The string URL\n     */\n    static getPUrl (path: string): string {\n        return this.iNetGlobal()['getPUrl'](path);\n    }\n\n    /**\n     * Returns the SSO redirect url from the given url path.\n     *\n     * @param {String} url (required) The given url.\n     * @param {String} app (option) The given application.\n     *\n     * @return {String} The string SSO redirect URL\n     */\n    static getSSOUrl (url: string, app: string = ''): string {\n        return this.iNetGlobal()['getSSOUrl'](url, app);\n    }\n\n    /**\n     * Gets the username of user logged\n     */\n    static getUserName (): string {\n        return this.iNetGlobal()['username'];\n    }\n\n    /**\n     * Gets the displayName of user logged\n     */\n    static getDisplayName (): string {\n        return this.iNetGlobal()['displayName'];\n    }\n    /**\n     * Gets the url of file server\n     */\n    static getFileServer (): string {\n        return this.iNetGlobal()['fileServer'];\n    }\n\n    /**\n     * Gets the image folder path of module inside cloud\n     */\n    static getImageFolder (): string {\n        return this.iNetGlobal()['imgFolder'];\n    }\n\n    /**\n     * Gets the prefix of server\n     */\n    static getPrefix (): string {\n        return this.iNetGlobal()['prefix'];\n    }\n\n    /**\n     * Gets the prefix of server\n     */\n    static getFirmPrefix(): string {\n        return this.iNetGlobal()['firmPrefix'];\n    }\n\n    /**\n     * Checks if inet layout is enabled\n     */\n    static isEnableLayout(): boolean {\n        return !!this.iNetGlobal()['enableLayout']\n    }\n\n    /**\n     * Gets the id of organization\n     */\n    static getOrganId(): string {\n        return this.iNetGlobal()['organId']\n    }\n\n    /**\n     * Encodes an Object, Array or other value.\n     * @param {Object} o The variable to encode.\n     * @returns {String} The JSON string\n     */\n    static encodeJSON(o: any): string {\n        if (this.iNetGlobal()['JSON']) {\n            return this.iNetGlobal()['JSON']['encode'](o)\n        }\n        return '';\n    }\n\n    /**\n     * Decodes (parses) a JSON string to an object.\n     * @param {String} src The JSON string.\n     * @returns {Object} The resulting object\n     */\n    static decodeJSON(src: string): any {\n        if (this.iNetGlobal()['JSON']) {\n            return this.iNetGlobal()['JSON']['decode'](src);\n        }\n        return {};\n    }\n\n    /**\n     * Gets the plugin manager\n     */\n    static getPluginManager(): any {\n        return this.iNetGlobal()['PluginManager']\n    }\n\n    /**\n     * Gets the query param from url\n     */\n    static getParam(param: string): string {\n        return this.iNetGlobal()['getParam'](param);\n    }\n\n   /**\n   * Gets the media path of file server\n   */\n    static getMediaPath(): string {\n        return this.iNetGlobal()['mediaPath'];\n    }\n\n   /**\n   * The instances of global object\n   */\n    static getInstances(): any {\n        return this.iNetGlobal();\n    }\n\n    /**\n    * Generate the identifier.\n    * @return {String} The string\n    */\n    static generateId(): string {\n        return this.iNetGlobal()['generateId']();\n    }\n\n    /**\n    * Generate the UUID.\n    * @return {String} The string UUID\n    */\n    static generateUUID(): string {\n        return this.iNetGlobal()['generateUUID']();\n    }\n    /**\n     * Returns true if the passed value is empty. The value is deemed to be\n     * empty if it is * null * undefined * an empty array * a zero length * an empty object\n     * string (Unless the allowBlank parameter is true)\n     *\n     * @param {Mixed} value The value to test\n     * @param {Boolean} allowBlank (optional) true to allow empty strings (defaults to false)\n     * @return {Boolean}\n     */\n\n    static isEmpty(v: any, allowBlank: boolean= false): boolean {\n        return this.iNetGlobal()['isEmpty'](v, allowBlank);\n    }\n    /**\n    * Return true if passed object is empty.\n    * @param {Mixed} value The value to test\n    * @returns {boolean}\n    */\n    static isEmptyObject(v: any): boolean {\n        return this.iNetGlobal()['isEmptyObject'](v);\n    } \n\n    /**\n    * Return true if firm prefix is smartcloud.\n    */\n    static isSmartCloud(): boolean {\n        return this.getFirmPrefix() ==='smartcloud';\n    }\n\n    /**\n    * Gets the web context of server\n    */\n    static getWebContext(): string {\n        return this.iNetGlobal()['webContext'];\n    }\n\n    /**\n     * Appends content to the query string of a URL, handling logic for whether to place\n     * a question mark or ampersand.\n     * @param {String} url The URL to append to.\n     * @param {String} s The content to append to the URL.\n     * @return (String) The resulting URL\n     */\n    static urlAppend = function (url: string, s: string) {\n        if (!!s) {\n            return url + (url.indexOf('?') === -1 ? '?' : '&') + s;\n        }\n        return url;\n    }\n\n    /**\n   * Gets the max size of file upload\n   */\n    static getMaxSizeUpload(): number {\n        return Number(this.iNetGlobal()['maxSizeUpload']);\n    }\n}\n","export const ErrorMessage = {\n  CLIENT: 'Client-side error occurred',\n  SERVER:'Server-side error occurred',\n  TYPE: 'ERROR'\n};","export interface WebResponse {\n\n}\n\nexport class ErrorResponse {\n  errors: any[];\n  type: string;\n}\n\nexport class ResponseData extends ErrorResponse implements WebResponse {\n  total: number;\n  items: any[];\n}\n\nexport class ResponseElementsData extends ErrorResponse implements WebResponse {\n  elements: any[];\n}","export class AppCloudConfig {\n    canChat?: boolean\n    wsContext?: string\n    devConfigUrl?: string\n}","/**\n * Copyright (c) 2019 by Vy Nguyen (ntvy@inetcloud.vn)\n *\n * Created by ntvy on 14:21 28/02/2019\n *\n */\nimport {HttpParameterCodec} from \"@angular/common/http\";\nexport class HttpUrlEncodingCodec implements HttpParameterCodec {\n    encodeKey(k: string): string { return standardEncoding(k); }\n    encodeValue(v: string): string { return standardEncoding(v); }\n    decodeKey(k: string): string { return decodeURIComponent(k); }\n    decodeValue(v: string) { return decodeURIComponent(v); }\n}\nfunction standardEncoding(v: string): string {\n    return encodeURIComponent(v);\n}\n","import {Injectable, OnDestroy} from '@angular/core';\n@Injectable({\n    providedIn: 'platform'\n})\nexport class LoadingIndicatorService implements OnDestroy {\n    static instance: LoadingIndicatorService = null;  // Create a singleton service\n    elementId: string =  'loading-indicator';\n    private static loadingIndicator: LoadingIndicator = null;\n\n    constructor() {\n    }\n    setElementId(elementId: string){\n        this.elementId = elementId;\n    }\n\n    getElementId (): string {\n        return this.elementId;\n    }\n\n    /**\n     * Get DOM of loading indicator\n     */\n    private getIndicator(): LoadingIndicator {\n        if (LoadingIndicatorService.loadingIndicator && LoadingIndicatorService.loadingIndicator.container) {\n            return LoadingIndicatorService.loadingIndicator;\n        }\n        // If Loading indicator not exist\n        const container = document.getElementById(this.getElementId()) as HTMLElement;\n        let loadingElement: HTMLElement;\n        let message: string;\n        if (container) {\n            const elements = container.getElementsByTagName('span');\n            if (elements && elements.length > 0) {\n                loadingElement = container.getElementsByTagName('span')[0] as HTMLElement;\n                if (loadingElement && loadingElement.innerText) {\n                    message = loadingElement.innerText;\n                }\n            }\n        }\n        // cache Loading indicator\n        LoadingIndicatorService.loadingIndicator = new LoadingIndicator(container, loadingElement, message);\n        return LoadingIndicatorService.loadingIndicator;\n    }\n\n    private getLoadingIndicator(): Promise<LoadingIndicator> {\n        return new Promise((resolve, reject) => {\n            setTimeout(() => resolve(this.getIndicator()));\n        });\n    }\n\n    showLoading(message?: string) {\n        this.getLoadingIndicator().then(loadingIndicator => {\n            if (loadingIndicator && loadingIndicator.container) {\n                if (loadingIndicator.element) {\n                    loadingIndicator.element.innerText = message || loadingIndicator.message || loadingIndicator.container.title;\n                }\n                loadingIndicator.container.style.display = 'block';\n            }\n        });\n    }\n\n    hideLoading() {\n        this.getLoadingIndicator().then(loadingIndicator => {\n            if(loadingIndicator && loadingIndicator.container) {\n                loadingIndicator.container.style.display = 'none';\n            }\n        });\n    }\n\n    complete() {\n        this.hideLoading();\n    }\n\n    ngOnDestroy() {\n        this.complete();\n    }\n}\n\nexport class LoadingIndicator {\n    container: HTMLElement;\n    element: HTMLElement;\n    message: string;\n\n    constructor(container: HTMLElement, el: HTMLElement, msg: string = '') {\n        this.container = container;\n        this.element = el;\n        this.message = msg;\n    }\n}\n","import {Injectable} from '@angular/core';\nimport {HttpClient, HttpHandler, HttpHeaders, HttpParams} from '@angular/common/http';\nimport {Observable} from 'rxjs';\nimport {LoadingIndicatorService} from \"./loading-indicator.service\";\nimport {HttpUrlEncodingCodec} from \"./http-url-encoding-codec\";\nimport {iNet} from \"./iNet\";\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class HttpClientService extends HttpClient {\n    private headers = new HttpHeaders({'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'});\n\n    constructor(handler: HttpHandler, private loadingService: LoadingIndicatorService) {\n        super(handler);\n    }\n\n    convertToHttpParams(obj: any): HttpParams {\n        if (!obj) {\n            return null;\n        }\n        return Object.getOwnPropertyNames(obj).reduce((p, key) => p.set(key, obj[key] == undefined ? '' : obj[key]), new HttpParams({encoder: new HttpUrlEncodingCodec()}));\n    }\n\n    getJSON(url: string, body?: any | null): Observable<any> {\n        return this.get(url, {params: this.convertToHttpParams(body), headers: this.headers});\n    }\n\n    postJSON(url: string, body?: any | null): Observable<any> {\n        return this.post(url, this.convertToHttpParams(body), {headers: this.headers});\n    }\n\n    putJSON(url: string, body?: any | null): Observable<any> {\n        return this.put(url, this.convertToHttpParams(body), {headers: this.headers});\n    }\n\n    deleteJSON(url: string, body?: any | null): Observable<any> {\n        return this.delete(url, {params: this.convertToHttpParams(body), headers: this.headers});\n    }\n\n    convertToFormData(obj: any): FormData {\n        //console.log('[convertToFormData]', obj);\n        let formData = new FormData();\n        if (!obj) {\n            return formData;\n        }\n        Object.keys(obj).forEach(k => {\n            //console.log('[key]', k , '=', obj[k]==undefined ? '' : obj[k]);\n            formData.append(k, obj[k] == undefined ? '' : obj[k]);\n        });\n        //console.log('[formData]', formData);\n        return formData;\n    }\n\n    downloadFile(url: string, obj?: any) {\n        if (!obj) {\n            return;\n        }\n        let form = document.createElement('form');\n        form.method = 'POST';\n        form.action = url;\n        form.enctype = 'multipart/form-data';\n\n        Object.keys(obj).forEach(k => {\n            //console.log('[key]', k , '=', obj[k]==undefined ? '' : obj[k]);\n            let input = document.createElement(\"input\");\n            input.name = k;\n            input.value = obj[k] == undefined ? '' : obj[k];\n            input.type = 'hidden';\n            form.appendChild(input);\n        });\n        document.body.appendChild(form);\n        form.submit();\n        document.body.removeChild(form);\n    }\n\n    showLoading(message?: string) {\n        this.loadingService.showLoading(message);\n    }\n\n    hideLoading() {\n        this.loadingService.hideLoading()\n    }\n\n    getUrl(relativePath: string) {\n        if (!window['iNet']) {\n            return iNet.getPUrl(relativePath);\n        }\n        return relativePath;\n    }\n}\n","import { Injectable } from '@angular/core';\nimport { combineLatest, Observable, of } from 'rxjs';\nimport { HttpClientService } from './http-client.service';\nimport { catchError, map, shareReplay, tap } from 'rxjs/operators';\nimport { iNet } from \"./iNet\";\n\n@Injectable({\n    providedIn: 'platform'\n})\nexport class CoreService {\n    static instance: CoreService = null;  // Create a singleton service\n    private static environment = { production: false };\n    private $appCache: Observable<any[]>;\n    private applications: any[];\n\n    constructor(private http: HttpClientService) {\n        return CoreService.instance = CoreService.instance || this;\n    }\n\n    logout(locale?: string) {\n        //Logout all apps the same site\n        this.getAppsWithoutContext().subscribe((apps: SystemApplication[]) => {\n            let requests$: Observable<string>[] = apps.map(app => {\n                return this.logoutApp(app);\n            })\n            requests$.push(this.logoutCurrentApp());\n            this.http.showLoading();\n            combineLatest(requests$).subscribe((responses: string[]) => {\n                responses = responses.filter((v) => !!v);\n                if (responses.length > 0) {\n                    let casUrl = responses.pop();\n                    const iFrame = document.createElement('iframe');\n                    iFrame.style.display = 'none';\n                    if (locale) {\n                        casUrl = `${casUrl}?locale=${locale}`;\n                    }\n                    iFrame.setAttribute('src', casUrl);\n                    iFrame.addEventListener('load', function () {\n                        location.reload();\n                    });\n                    document.body.appendChild(iFrame);\n                }\n            })\n        })\n    }\n\n    /*\n    * Gets the avatar URL with the username\n    * @deprecated Use UserProfileService.getAvatarUrlByUsername() instead\n    */\n    getAvatar(usercode: string, thumbnail?: number): string {\n        thumbnail = thumbnail || 50;\n        return iNet.getPUrl('system/userprofile/photo') +\n            `?usercode=${usercode}&thumbnail=${thumbnail}`;\n    }\n\n    isExternalUser(): boolean {\n        return false;\n    }\n\n    isCommunity(): boolean {\n        return false;\n    }\n\n    getOrg(): Observable<any[]> {\n        return this.http.get(iNet.getPUrl('plugin/organization/list'))\n            .pipe(map((res: CustomResponse) => res.elements));\n    }\n\n    searchOrgan(params: any = {}): Observable<any> {\n        return this.http.postJSON(iNet.getPUrl('plugin/organization/search'), params)\n            .pipe(map((res: CustomResponse) => res.elements));\n    }\n\n    getSystemApplication(clearCached: boolean = false): Observable<any[]> {\n        if (clearCached) {\n            this.applications = null;\n            this.$appCache = null;\n        }\n        if (this.applications) {\n            return of(JSON.parse(JSON.stringify(this.applications)));\n        }\n        if (!this.$appCache) {\n            this.$appCache = this.http.postJSON(iNet.getPUrl('system/application/list'))\n                .pipe(tap((res: CustomResponse) => this.applications = JSON.parse(JSON.stringify(res.elements))))\n                .pipe(map((res: CustomResponse) => res.elements))\n                .pipe(shareReplay(1));\n        }\n        return this.$appCache;\n    }\n\n    getApps(): Observable<SystemApplication[]> {\n        return this.getSystemApplication().pipe(\n            map((apps: SystemApplication[]) => {\n                return apps.filter((app) => {\n                    return app.homepage?.includes('http');\n                });\n            }),\n            catchError(err => {\n                return of([]);\n            })\n        )\n    }\n\n    searchFirmAccount(params: any, callback: Function) {\n        this.http.postJSON(iNet.getPUrl('plugin/firmaccount/list'), params).subscribe({\n            next: (data) => {\n                callback(data);\n            },\n            error:\n                (err) => {\n                    callback(null, err);\n                }\n        });\n    }\n\n    updateLanguage(lang: string, callback?: Function) {\n        this.http.postJSON(iNet.getPUrl('system/userprofile/languageupdate'), { intl: lang }).subscribe({\n            next: () => {\n                if (callback) {\n                    callback(lang);\n                }\n            },\n            error: () => {\n                if (callback) {\n                    callback(lang);\n                }\n            }\n        }\n        );\n    }\n\n    /**\n     * Get the Image URL for the current app\n     * @param fileName - the file name\n     */\n    getImageUrl(fileName: string): string {\n        if (!fileName) {\n            return '';\n        }\n        if (fileName.indexOf('/') === 0) {\n            return this.getAssetsPath() + fileName;\n        }\n        return `${this.getAssetsPath()}/${fileName}`;\n    }\n\n    /**\n     * Build the file URL for the file server request\n     * @param fileName - the given file name\n     */\n    getFileUrl(fileName: string): string {\n        if (!fileName) {\n            return '';\n        }\n        if (fileName.indexOf('/') === 0) {\n            return this.getFileServerPath() + fileName;\n        }\n        return `${this.getFileServerPath()}/${fileName}`;\n    }\n\n    getSsoRedirect(data: SsoRedirectData): string {\n        const params = Object.keys(data).map(key => {\n            return `${key}=${data[key]}`;\n        })\n        return iNet.getPUrl('ssorequest/redirect') + '?' + params.join('&');\n    }\n\n    convergePlugins(): Observable<any> {\n        return this.convergeSearch({ converge: 'plugins' });\n    }\n\n    convergeSearch(params): Observable<any> {\n        return this.http.postJSON(iNet.getPUrl('converge/search'), params);\n    }\n\n    setEnvironment(v: any = { production: false }) {\n        CoreService.environment = v;\n    }\n\n    getEnvironment(): any {\n        return CoreService.environment;\n    }\n\n    private getPath(path: string = ''): string {\n        const lastIndex = path.lastIndexOf('/');\n        if (lastIndex === path.length - 1) {\n            return path.substring(0, lastIndex);\n        }\n        return path;\n    }\n\n    /**\n     * Gets File server path\n     */\n    getFileServerPath(): string {\n        return this.getPath(iNet.getFileServer());\n    }\n\n    /**\n     * Gets assets path of current app\n     */\n    getAssetsPath(): string {\n        return this.getPath(iNet.getImageFolder());\n    }\n    /**\n     * Get the Image URL from module\n     * @param moduleName - the module name\n     * @param fileName - the file name\n     */\n    getImageUrlFromModule(fileName: string, moduleName?: string): string {\n        if (!fileName) {\n            return '';\n        }\n        if (!moduleName) {\n            return this.getImageUrl(fileName);\n        }\n        let path = this.getAssetsPath();\n        let paths: string[] = path.split('/');\n        paths[paths.length - 1] = moduleName;\n        path = paths.join('/');\n\n        if (fileName.indexOf('/') === 0) {\n            return path + fileName;\n        }\n        return `${path}/${fileName}`;\n    }\n\n    private logoutCurrentApp(): Observable<any> {\n        return new Observable((observer) => {\n            this.http.postJSON(iNet.getPUrl('system/logout'), { 'username': iNet.getUserName() }).subscribe({\n                next: (data: any) => {\n                    if (!data?.uuid || data?.uuid?.includes('null')) {\n                        location.reload();\n                    } else {\n                        observer.next(data?.uuid);\n                    }\n                },\n                error: (err: any) => {\n                    observer.error(`Logout fail`);\n                    location.reload();\n                }\n            });\n        })\n    }\n\n    private logoutApp(app: SystemApplication): Observable<string> {\n        return new Observable((observer) => {\n            if (app.homepage) {\n                let appUrl = new URL(app.homepage);\n                let logoutUrl = new URL(iNet.getPUrl('system/logout'));\n                const paths = logoutUrl.pathname.split('/');\n                if (app.webContext) {\n                    paths[1] = app.webContext;\n                }\n                paths[2] = iNet.getFirmPrefix();\n                logoutUrl.pathname = paths.join('/');\n\n                if (appUrl.host === logoutUrl.host) {\n                    this.http.postJSON(logoutUrl.href, { 'username': iNet.getUserName() }).subscribe({\n                        next: (data: any) => {\n                            observer.next(data?.uuid);\n                        },\n                        error: (err: any) => {\n                            observer.next('');\n                        }\n                    });\n                } else {\n                    observer.next('');\n                }\n            } else {\n                observer.next('');\n            }\n        })\n\n    }\n\n    private getAppsWithoutContext(): Observable<SystemApplication[]> {\n        return this.getSystemApplication().pipe(\n            map((apps: SystemApplication[]) => {\n                return apps.filter(app => {\n                    return (app.homepage && app.homepage?.includes('http') && app.webContext != iNet.getWebContext() \n                    && (new URL(app.homepage).host) === window.location.host)\n                });\n            }),\n            catchError(err => {\n                return of([]);\n            })\n        )\n    }\n}\n\nexport interface LogoutData {\n    uuid: string;\n}\n\ninterface CustomResponse extends Response {\n    elements: any[];\n}\n\nexport interface SsoRedirectData {\n    url: string;\n    application: string;\n    redirect?: boolean;\n}\n\nexport interface PathRedirectData {\n    path: string;\n    application: string;\n    organId?: string;\n    firmPrefix?: string;\n}\n\nexport interface SystemApplication {\n    domain?: string;\n    firmContext?: string;\n    homepage?: string;\n    icon?: string;\n    module?: string;\n    name?: string;\n    organId?: string;\n    pattern?: string;\n    prefixUri?: string;\n    webContext?: string;\n    widget?: string;\n}","import { Injectable } from '@angular/core';\nimport { HttpClientService } from './http-client.service';\nimport { Subscription } from 'rxjs';\nimport { iNet } from \"./iNet\";\n@Injectable()\nexport class SuggestionService {\n    static instance: SuggestionService = null;  // Create a singleton service\n\n    constructor(private http: HttpClientService) {\n        return SuggestionService.instance = SuggestionService.instance || this;\n    }\n\n    saveSuggestion(params: SuggestionParamData, callback?: Function): Subscription {\n        if (!params.keyword) {\n            return;\n        }\n        return this.http.postJSON(iNet.getPUrl('system/suggestion/update'), params).subscribe({\n            next: (data) => {\n                if (callback) {\n                    callback(data);\n                }\n            },\n            error: (err) => {\n                if (callback) {\n                    callback(null, err);\n                }\n            }\n        });\n    }\n\n    loadSuggestion(params: SuggestionParamData, callback: Function): Subscription {\n        return this.http.postJSON(iNet.getPUrl('system/suggestion/hint'), params).subscribe({\n            next: (data: SuggestionResponse) => {\n                callback(data && data.items || []);\n            },\n            error: (err) => {\n                callback([], err);\n            }\n        }\n        );\n    }\n}\nexport interface SuggestionParamData {\n    content: string;\n    keyword: string;\n}\n\nexport interface SuggestionResponse {\n    items: SuggestionItem[];\n    total: number;\n}\n\nexport interface SuggestionItem {\n    content: string;\n    keyword: string;\n    ownercode: string;\n    usage: number;\n    uuid: string;\n}\n","import { Directive, AfterViewInit, ElementRef, Input } from '@angular/core';\nimport {fromEvent} from \"rxjs\";\n\ninterface ScrollPosition {\n  sH: number;\n  sT: number;\n  cH: number;\n}\n\nconst DEFAULT_SCROLL_POSITION: ScrollPosition = {\n  sH: 0,\n  sT: 0,\n  cH: 0\n};\n\n@Directive({\n  selector: '[appInfiniteScroller]',\n  standalone: true\n})\nexport class InfiniteScrollerDirective implements AfterViewInit {\n\n  private scrollEvent$;\n  private userScrolledDown$;\n  private requestOnScroll$;\n\n  @Input()\n  scrollCallback;\n\n  @Input()\n  immediateCallback;\n\n  @Input()\n  scrollPercent = 70;\n\n  @Input()\n  isSubmit = false;\n\n  constructor(private elm: ElementRef) { }\n\n  ngAfterViewInit() {\n    this.registerScrollEvent();\n    this.streamScrollEvents();\n    this.requestCallbackOnScroll();\n\n  }\n\n  private registerScrollEvent() {\n\n    this.scrollEvent$ = fromEvent(this.elm.nativeElement, 'scroll');\n\n  }\n\n  private streamScrollEvents() {\n    this.userScrolledDown$ = this.scrollEvent$\n      .map((e: any): ScrollPosition => ({\n        sH: e.target.scrollHeight,\n        sT: e.target.scrollTop,\n        cH: e.target.clientHeight\n      }))\n      .pairwise()\n      .filter(positions => this.isUserScrollingDown(positions) && this.isScrollExpectedPercent(positions[1]))\n  }\n\n  private requestCallbackOnScroll() {\n    this.requestOnScroll$ = this.userScrolledDown$;\n\n    if (this.immediateCallback) {\n      this.requestOnScroll$ = this.requestOnScroll$\n        .startWith([DEFAULT_SCROLL_POSITION, DEFAULT_SCROLL_POSITION]);\n    }\n\n    this.requestOnScroll$\n      .exhaustMap(() => {\n        return this.scrollCallback();\n      })\n      .subscribe((data) => { console.log(data) }, (err) => console.log(err));\n\n  }\n\n  private isUserScrollingDown = (positions) => {\n    return positions[0].sT < positions[1].sT;\n  };\n\n  private isScrollExpectedPercent = (position) => {\n    return ((position.sT + position.cH) / position.sH) > (this.scrollPercent / 100);\n  };\n\n  private isScrollSubmit() {\n    return this.isSubmit;\n  };\n\n}\n","export class NewPassword {\n  oldpass: string;\n  newpass: string;\n  confirmpass: string;\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class NotificationService {\n\n  constructor() { }\n\n  showMessage(msg: string, type?:string, title?: string, config?: any){\n\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClientService } from \"./http-client.service\";\nimport { HttpErrorResponse } from \"@angular/common/http\";\nimport { iNet } from \"./iNet\";\n@Injectable({\n    providedIn: 'root'\n})\nexport class SecurityService {\n    static instance: SecurityService = null;\n    private roles: Array<string> = [];\n\n    constructor(private http: HttpClientService) {\n        if (!SecurityService.instance) {\n            this.roles = this.parserRoleFrom({});\n        }\n        return SecurityService.instance = SecurityService.instance || this;\n    }\n\n    public load(): Promise<any> {\n        return new Promise(resolve => {\n            if (!iNet.getFirmPrefix() || !iNet.getUserName() || !iNet.getWebContext()) {\n                resolve({});\n            } else {\n                this.http.postJSON(iNet.getPUrl('system/userrole/list'))\n                    .subscribe({\n                        next: (obj: any) => {\n                            this.roles = (iNet.isSmartCloud() ? obj[iNet.getWebContext()] : obj[iNet.getFirmPrefix()]) || [];\n                            resolve(obj);\n                        },\n                        error: (err: HttpErrorResponse) => {\n                            resolve({});\n                        }\n                    });\n            }\n        });\n    }\n\n    private parserRoleFrom(obj: Object): Array<string> {\n        let roles: Array<string> = [];\n        for (let key in obj) {\n            if (obj[key] === \"true\" || obj[key] === true) {\n                roles.push(key);\n            }\n        }\n        return roles;\n    }\n\n    private uniqueArray(arrArg) {\n        return arrArg.filter(function (elem: any, pos: any, arr: any) {\n            return arr.indexOf(elem) == pos;\n        });\n    };\n\n    private append(v: Array<string>): Array<string> {\n        //console.log('[append]roles', v);\n        this.roles = this.uniqueArray(this.roles.concat(v));\n        return this.roles;\n    }\n\n    hasRole(v: string): boolean {\n        //console.log('[checkRole]=', v);\n        let roles = v.split(',');\n        if (roles.length > 1) {\n            let __items = roles.filter(role => this.roles.indexOf(role) > -1);\n            return (__items.length > 0);\n        }\n        return (this.roles.indexOf(v) > -1);\n    }\n\n    /**\n     * Check session timeout when system is idle\n     */\n    ping() {\n        if (!iNet.getUserName()) {\n            return;\n        }\n        const client = new XMLHttpRequest();\n        client.open(\"POST\", iNet.getPUrl('common/page/ping'), true);\n        client.onreadystatechange = function () {\n            if (client.readyState === 4) {\n                if (client.status >= 200 && client.status < 300) { //Successful responses\n                    if (client?.responseURL?.includes('/cas')) {\n                        location.reload();\n                    }\n                } else {\n                    location.reload();\n                }\n            }\n        };\n        client.send();\n    }\n\n}\n","import {Directive, Input, OnInit, TemplateRef, ViewContainerRef} from '@angular/core';\nimport {SecurityService} from './security.service';\n\n@Directive({\n  selector: '[roleAccess]',\n  standalone: true\n})\nexport class RoleAccessDirective implements OnInit {\n\n  @Input('roleAccess') roleAccess: string;\n\n  constructor(private templateRef: TemplateRef<any>,\n              private viewContainer: ViewContainerRef,\n              private securityService: SecurityService) {\n  }\n\n  ngOnInit(): void {\n    this.applyPermission();\n  }\n\n  private applyPermission(): void {\n    if(this.securityService.hasRole(this.roleAccess)){\n      this.viewContainer.createEmbeddedView(this.templateRef);\n    } else {\n      this.viewContainer.clear();\n    }\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport {iNet} from \"./iNet\";\n@Pipe({\n  name: 'ssoUrl',\n  standalone: true\n})\nexport class SSOUrlPipe implements PipeTransform {\n\n  transform(url: string): string {\n    return iNet.getSSOUrl(url);\n  }\n\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {DatePipe} from \"@angular/common\";\n\n@Pipe({\n  name: 'timeAgo',\n  standalone: true\n})\nexport class TimeAgoPipe implements PipeTransform {\n  transform(value: number = 0, format?: string ): string | null {\n    if (value === 0) {\n      return '';\n    }\n    let date = new Date(value), now = new Date();\n    let datePipe = new DatePipe(\"en-US\");\n\n    if (date.getDate() === now.getDate() && date.getFullYear() === now.getFullYear()) {\n      return datePipe.transform(value, 'HH:mm')\n    } else {\n      return datePipe.transform(value, format || 'HH:mm dd/MM/yyyy');\n    }\n  }\n\n}\n","import { Injectable } from '@angular/core';\nimport { UserProfile } from './model/user-profile';\nimport { HttpClientService } from './http-client.service';\nimport { Observable, of } from 'rxjs';\nimport { UserResponseData } from \"./model/user-response-data\";\nimport { NewPassword } from \"./model/new-password\";\nimport { map, shareReplay, tap } from 'rxjs/operators';\nimport { HttpErrorResponse } from \"@angular/common/http\";\nimport { CoreService } from \"./core.service\";\nimport { iNet } from \"./iNet\";\n\nconst AVATAR_VERSION_KEY = 'avatarVersion';\n@Injectable({\n    providedIn: 'platform'\n})\nexport class UserProfileService {\n    static instance: UserProfileService = null;\n    static readonly DEFAULT_AVATAR_URL = 'data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==';\n    private profile: UserProfile = null;\n\n    private $systemProfileCache: Observable<Object>;\n    private systemProfile: UserResponseData = null;\n\n    private $profileObservableCache: any = {};\n    private inventory: any = {};\n\n    private url = {\n        get: iNet.getPUrl('gl/contact/load'),\n        view: iNet.getPUrl('system/userprofile/view'),\n        update: iNet.getPUrl('system/userprofile/update'),\n        change_password: iNet.getPUrl('system/account/passsword'),\n        photo: iNet.getPUrl('system/userprofile/photo')\n    };\n\n    constructor(private http: HttpClientService,\n        private coreService: CoreService) {\n    }\n\n    /*\n    private loadProfile(): Observable<Object> {\n        return this.http.postJSON(this.url.get)\n            .map((res: UserProfile) => res)\n            .do(profile => this.profile = profile);\n    }\n     */\n\n    private loadSystemProfile(): Observable<Object> {\n        return this.http.postJSON(this.url.view).pipe(\n            map((res: UserResponseData) => res),\n            tap((profile: any) => {\n                this.systemProfile = profile;\n                this.profile = profile.user as UserProfile;\n            })\n        );\n    }\n\n    /**\n     * Gets the currently LDAP profile of user logged\n     */\n    getSystemProfile(): Observable<Object> {\n        if(!iNet.getUserName()) {\n            return of({});\n        }\n        if (this.systemProfile) {\n            return of(this.systemProfile);\n        }\n        if (!this.$systemProfileCache) {\n            this.$systemProfileCache = this.loadSystemProfile().pipe(shareReplay(1));\n        }\n        return this.$systemProfileCache;\n    }\n\n    /**\n     * Gets the curently profile of user logged\n     */\n    getProfile(): Observable<Object> {\n        if (this.profile) {\n            return of(this.profile);\n        }\n        return this.getSystemProfile().pipe(map((res: UserResponseData) => res.user));\n    }\n\n    update(user: UserProfile): Observable<Object> {\n        return this.http.postJSON(this.url.update, user);\n    }\n\n    changePassword(password: NewPassword): Observable<Object> {\n        return this.http.postJSON(this.url.change_password, password);\n    }\n\n    getAvatarUrlByProfile(userProfile: UserProfile): string {\n        let avatarUrl: string;\n        avatarUrl = this.coreService.getFileUrl(userProfile.avatar);\n        if (this.getAvatarVersion() > 0) {\n            avatarUrl = `${avatarUrl}?version=${this.getAvatarVersion()}`;\n        }\n        return avatarUrl;\n    }\n\n    getAvatarUrl(): Promise<string> {\n        return new Promise(resolve => {\n            resolve(this.url.photo);\n        });\n    }\n\n    getFullName(): Promise<string> {\n        return new Promise(resolve => {\n            if (!iNet.getPrefix() || !iNet.isEnableLayout()) {\n                resolve(iNet.getDisplayName());\n            } else {\n                this.getProfile().subscribe(\n                    {\n                        next: (profile: UserProfile) => {\n                            let fullName: string = '';\n                            if (profile.lastName) {\n                                fullName += profile.lastName;\n                            }\n                            if (profile.middleName) {\n                                fullName += ' ' + profile.middleName;\n                            }\n                            if (profile.firstName) {\n                                fullName += ' ' + profile.firstName;\n                            }\n                            profile.name = fullName || iNet.getDisplayName() || iNet.getUserName();\n                            resolve(profile.name.trim());\n                        },\n                        error: (err: HttpErrorResponse) => {\n                            resolve('');\n                        }\n                    });\n            }\n        });\n    }\n\n    getSignPictureId(): Promise<string> {\n        return new Promise(resolve => {\n            this.getSystemProfile().subscribe({\n                next: (data: UserResponseData) => {\n                    let signPictureId: string = '';\n                    if (data.user && data.user.signPictureID) {\n                        signPictureId = data.user.signPictureID;\n                    }\n                    resolve(signPictureId);\n                },\n                error: (err: HttpErrorResponse) => {\n                    resolve('');\n                }\n            });\n        });\n    }\n\n    getSignVerifyNumber(): Promise<string> {\n        return new Promise(resolve => {\n            this.getSystemProfile().subscribe({\n                next: (data: UserResponseData) => {\n                    let signVerify: string = '';\n                    if (data.user && data.user.signVerify) {\n                        signVerify = data.user.signVerify;\n                    }\n                    resolve(signVerify);\n                }, error: () => {\n                    resolve('');\n                }\n            });\n        });\n    }\n\n    increaseAvatarVersion() {\n        localStorage.setItem(AVATAR_VERSION_KEY, (this.getAvatarVersion() + 1).toString());\n    }\n\n    getAvatarVersion(): number {\n        return Number(localStorage.getItem(AVATAR_VERSION_KEY));\n    }\n\n    /**\n     * Returns the profile associated with the username.\n     * @param username - {string} The username variable\n     */\n    getProfileByUsername(username: string): Observable<any> {\n        //console.log('[getProfileByUsername]--username, inventory', username, this.inventory);\n        if (this.inventory.hasOwnProperty(username)) {\n            return of(this.inventory[username]);\n        }\n        if (!this.$profileObservableCache[username]) {\n            this.$profileObservableCache[username] = this.http.getJSON(this.url.get, { username: username })\n                .pipe(tap((res) => this.inventory[username] = res), shareReplay(1))\n        }\n        return this.$profileObservableCache[username];\n    }\n\n    /**\n     * Returns the avatar URL  with the username.\n     * @param username - {string} The username variable\n     */\n    getAvatarUrlByUsername(username: string): Promise<string> {\n        return new Promise(resolve => {\n            this.getProfileByUsername(username).subscribe({\n                next: (obj: UserProfile) => {\n                    if (obj.avatar) {\n                        resolve(this.coreService.getFileUrl(obj.avatar));\n                    } else {\n                        resolve('');\n                    }\n                },\n                error: (err: HttpErrorResponse) => {\n                    resolve('');\n                }\n            });\n        });\n    }\n\n    getDefaultAvatarUrl(): string {\n        return UserProfileService.DEFAULT_AVATAR_URL;\n    }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class AccentService {\n\n  private _vi_accents = [\n    \"à\",\"á\",\"ạ\",\"ả\",\"ã\",\"â\",\"ầ\",\"ấ\",\"ậ\",\"ẩ\",\"ẫ\",\"ă\",\n    \"ằ\",\"ắ\",\"ặ\",\"ẳ\",\"ẵ\",\"è\",\"é\",\"ẹ\",\"ẻ\",\"ẽ\",\"ê\",\"ề\",\n    \"ế\",\"ệ\",\"ể\",\"ễ\",\n    \"ì\",\"í\",\"ị\",\"ỉ\",\"ĩ\",\n    \"ò\",\"ó\",\"ọ\",\"ỏ\",\"õ\",\"ô\",\"ồ\",\"ố\",\"ộ\",\"ổ\",\"ỗ\",\"ơ\",\n    \"ờ\",\"ớ\",\"ợ\",\"ở\",\"ỡ\",\n    \"ù\",\"ú\",\"ụ\",\"ủ\",\"ũ\",\"ư\",\"ừ\",\"ứ\",\"ự\",\"ử\",\"ữ\",\n    \"ỳ\",\"ý\",\"ỵ\",\"ỷ\",\"ỹ\",\n    \"đ\",\n    \"À\",\"Á\",\"Ạ\",\"Ả\",\"Ã\",\"Â\",\"Ầ\",\"Ấ\",\"Ậ\",\"Ẩ\",\"Ẫ\",\"Ă\",\n    \"Ằ\",\"Ắ\",\"Ặ\",\"Ẳ\",\"Ẵ\",\n    \"È\",\"É\",\"Ẹ\",\"Ẻ\",\"Ẽ\",\"Ê\",\"Ề\",\"Ế\",\"Ệ\",\"Ể\",\"Ễ\",\n    \"Ì\",\"Í\",\"Ị\",\"Ỉ\",\"Ĩ\",\n    \"Ò\",\"Ó\",\"Ọ\",\"Ỏ\",\"Õ\",\"Ô\",\"Ồ\",\"Ố\",\"Ộ\",\"Ổ\",\"Ỗ\",\"Ơ\",\n    \"Ờ\",\"Ớ\",\"Ợ\",\"Ở\",\"Ỡ\",\n    \"Ù\",\"Ú\",\"Ụ\",\"Ủ\",\"Ũ\",\"Ư\",\"Ừ\",\"Ứ\",\"Ự\",\"Ử\",\"Ữ\",\n    \"Ỳ\",\"Ý\",\"Ỵ\",\"Ỷ\",\"Ỹ\",\n    \"Đ\"\n  ];\n\n  private _en_accents = [\n    \"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\n    \"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\n    \"e\",\"e\",\"e\",\"e\",\"e\",\"e\",\"e\",\"e\",\"e\",\"e\",\"e\",\n    \"i\",\"i\",\"i\",\"i\",\"i\",\n    \"o\",\"o\",\"o\",\"o\",\"o\",\"o\",\"o\",\"o\",\"o\",\"o\",\"o\",\"o\",\n    \"o\",\"o\",\"o\",\"o\",\"o\",\n    \"u\",\"u\",\"u\",\"u\",\"u\",\"u\",\"u\",\"u\",\"u\",\"u\",\"u\",\n    \"y\",\"y\",\"y\",\"y\",\"y\",\n    \"d\",\n    \"A\",\"A\",\"A\",\"A\",\"A\",\"A\",\"A\",\"A\",\"A\",\"A\",\"A\",\"A\",\n    \"A\",\"A\",\"A\",\"A\",\"A\",\n    \"E\",\"E\",\"E\",\"E\",\"E\",\"E\",\"E\",\"E\",\"E\",\"E\",\"E\",\n    \"I\",\"I\",\"I\",\"I\",\"I\",\n    \"O\",\"O\",\"O\",\"O\",\"O\",\"O\",\"O\",\"O\",\"O\",\"O\",\"O\",\"O\",\n    \"O\",\"O\",\"O\",\"O\",\"O\",\n    \"U\",\"U\",\"U\",\"U\",\"U\",\"U\",\"U\",\"U\",\"U\",\"U\",\"U\",\n    \"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\n    \"D\"\n  ];\n\n  constructor() { }\n\n  viToEn(str: string) {\n    return str.replace(/[^\\u0000-\\u007E]/g, (a) => {\n      var index = this._vi_accents.indexOf(a);\n      return index < 0 ? a : this._en_accents[index];\n    });\n  }\n}","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class CacheStorageService {\n\n  // Time cache data. Default 5 minutes.\n  timeCache: number = 5 * 60 * 1000;\n\n  private __storage = {};\n  private __queue = {};\n\n  constructor() { }\n\n  promiseQueue(name: string, promise: Function, resovle: Function) {\n    if (this.__queue[name]) {\n      this.__queue[name].push(resovle);\n    } else {\n      this.__queue[name] = [resovle];\n      promise(name);\n    }\n  }\n\n  resolveQueue(name: string, context: any, args?: any[]) {\n    if (this.__queue[name]) {\n      this.__queue[name].forEach(fn => {\n        try {\n          fn.apply(context, args);\n        } catch (e) {\n\n        }\n      });\n      delete this.__queue[name];\n    }\n  }\n\n  getData(key: string) {\n    const data: CacheStorageItem = this.__storage[key];\n    // Check data expired\n    if (data && new Date().getTime() - data.time <= data.timeCache) {\n      return data.value;\n    }\n  }\n\n  setData(key: string, data: any, options?: CacheStorageOptions) {\n    const timeCache = options && options.timeCache || this.timeCache;\n    this.__storage[key] = <CacheStorageItem>{\n      time: new Date().getTime(),\n      timeCache: timeCache,\n      value: data\n    };\n  }\n\n  removeData(key: string) {\n    delete this.__storage[key];\n  }\n\n  clearData() {\n    this.__storage = {};\n  }\n\n}\n\nexport interface CacheStorageOptions {\n  timeCache?: number;\n  resolveData?: boolean;\n}\n\nexport interface CacheStorageItem {\n  time: number;\n  timeCache: number;\n  value: any;\n}\n","/**\n * Inspired from: https://stevepapa.com/ng-autosize/\n */\nimport { Input, AfterViewInit, ElementRef, HostListener, Directive} from '@angular/core';\n\n@Directive({\n  selector: 'textarea[appAutoSize]',\n  exportAs: 'appAutoSize',\n  standalone: true\n})\n\nexport class AutoSizeDirective implements AfterViewInit {\n\n  private el: HTMLElement;\n  private _minHeight: string;\n  private _maxHeight: string;\n  private _lastHeight: number;\n  private _clientWidth: number;\n\n  @Input('minHeight')\n  get minHeight() {\n    return this._minHeight;\n  }\n  set minHeight(val: string) {\n    this._minHeight = val;\n    this.updateMinHeight();\n  }\n\n  @Input('maxHeight')\n  get maxHeight() {\n    return this._maxHeight;\n  }\n  set maxHeight(val: string) {\n    this._maxHeight = val;\n    this.updateMaxHeight();\n  }\n\n  @HostListener('window:resize')\n  onResize() {\n    //Only apply adjustment if element width had changed.\n    if (this.el.clientWidth === this._clientWidth) return;\n    this._clientWidth = this.element.nativeElement.clientWidth;\n    this.adjust();\n  }\n\n  @HostListener('input')\n  onInput(): void {\n    this.adjust();\n  }\n\n  constructor(public element: ElementRef){\n    this.el = element.nativeElement;\n    this._clientWidth = this.el.clientWidth;\n  }\n\n  ngAfterViewInit(): void{\n    // set element resize allowed manually by user\n    const style = window.getComputedStyle(this.el, null);\n    if (style.resize === 'both') {\n      this.el.style.resize = 'horizontal';\n    }\n    else if (style.resize === 'vertical') {\n      this.el.style.resize = 'none';\n    }\n    // run first adjust\n    this.adjust();\n  }\n\n  adjust(): void{\n    // perform height adjustments after input changes, if height is different\n    // if (this.el.style.height == this.element.nativeElement.scrollHeight + \"px\") return;\n    this.el.style.overflow = 'hidden';\n    this.el.style.height = 'auto';\n    this.el.style.height = this.el.scrollHeight + \"px\";\n  }\n\n  updateMinHeight(): void{\n    // Set textarea min height if input defined\n    this.el.style.minHeight = this._minHeight + 'px';\n  }\n\n  updateMaxHeight(): void{\n    // Set textarea max height if input defined\n    this.el.style.maxHeight = this._maxHeight + 'px';\n  }\n\n}","import { Directive, ElementRef, Input, OnChanges, OnInit } from '@angular/core';\nimport { iNet } from './iNet';\n\nconst DEFAULT_ERROR_CLASS: string = 'default-avatar';\n\n@Directive({\n    selector: 'img[userAvatar]',\n    standalone: true\n})\nexport class AvatarDirective implements OnInit, OnChanges {\n    @Input() usercode?: string;\n    @Input() version?: number;\n    private url = iNet.getPUrl('system/userprofile/photo');\n\n    constructor(private _el: ElementRef) {\n    }\n\n    ngOnInit() {\n        this._el.nativeElement.addEventListener('error', this._loadAvatarError.bind(this));\n        this._setAvatar();\n    }\n\n    ngOnChanges() {\n        this._setAvatar();\n    }\n\n    private _setAvatar() {\n        const usercode = this.usercode;\n        if (!usercode) {\n            this._loadAvatarError();\n            return;\n        }\n        if (!!usercode) {\n            this._loadAvatarSuccess();\n        }\n        if (this.version) {\n            this._el.nativeElement.src = this.url + `?usercode=${encodeURIComponent(usercode)}&version=${this.version}`;\n        } else {\n            this._el.nativeElement.src = this.url + `?usercode=${encodeURIComponent(usercode)}`;\n        }\n    }\n\n    private _loadAvatarError() {\n        if (this._el.nativeElement && !this._el.nativeElement?.classList?.contains(DEFAULT_ERROR_CLASS)) {\n            this._el.nativeElement.classList.add(DEFAULT_ERROR_CLASS);\n        }\n    }\n\n    private _loadAvatarSuccess() {\n        if (this._el.nativeElement && this._el.nativeElement?.classList?.contains(DEFAULT_ERROR_CLASS)) {\n            this._el.nativeElement.classList.remove(DEFAULT_ERROR_CLASS);\n        }\n    }\n}\n","import {Injectable} from '@angular/core';\nimport {iNet} from \"./iNet\";\n\n@Injectable()\nexport class ResourceLoaderService {\n\n    private _loaded = [];\n    private _version: string = '';\n\n    constructor() {\n\n    }\n\n    load(resources: Resource[], callback: Function) {\n        if (resources.length < 1) {\n            return callback();\n        }\n        this._loadResources(resources, callback);\n    }\n\n    loadJS(url: string, callback: Function) {\n        this._loadWithTagName('script', {\n            type: 'text/javascript',\n            src: this.getFullUrlJS(url)\n        }, callback);\n    }\n\n    loadCSS(url: string, callback: Function) {\n        this._loadWithTagName('link', {\n            type: 'text/css',\n            rel: 'stylesheet',\n            href: url\n        }, callback);\n    }\n\n    getFullUrlJS(url: string) {\n        if (url.indexOf('//') < 0 && iNet.getFileServer()) {\n            if (url.startsWith('/')) {\n                url = url.substr(1, url.length);\n            }\n            return iNet.getFileServer() + url;\n        }\n        return url;\n    }\n\n    isLoaded(url: string) {\n        return this._loaded.indexOf(url) > -1;\n    }\n\n    private _loadResources(resources: Resource[], callback: Function) {\n        let splitGroups = this._groupResources(resources);\n        let fn = () => {\n            if (splitGroups.length < 1) {\n                return callback();\n            }\n            this._loadGroups(splitGroups.splice(0, 1)[0], fn);\n        };\n        fn();\n    }\n\n    //  Split group resources by sync/async\n    private _groupResources(resources: Resource[]) {\n        let splitGroups = [];\n        let groups;\n\n        //  Split group resources by sync/async\n        for (let i = 0; i < resources.length; i++) {\n            if (!groups) {\n                groups = [];\n                splitGroups.push(groups);\n            }\n\n            groups.push(resources[i]);\n\n            if (resources[i].sync) {\n                groups = null;\n            }\n        }\n        return splitGroups;\n    }\n\n    private _loadGroups(resources: Resource[], callback: Function) {\n        let promises = [];\n        resources.forEach(item => promises.push(this._load(item)));\n        Promise.all(promises).then(() => {\n            callback();\n        });\n    }\n\n    private _load(resource: Resource): Promise<any> {\n        return new Promise((resolve) => {\n            if (resource.type === 'css') {\n                this.loadCSS(resource.url, resolve);\n            } else {\n                this.loadJS(resource.url, resolve);\n            }\n        });\n    }\n\n    private _loadWithTagName(tagName: string, properties, callback: Function) {\n        let url = properties.src || properties.href;\n        // Loaded\n        if (this.isLoaded(url)) {\n            return callback();\n        }\n\n\n        let tagEl = document.createElement(tagName);\n        for (let k in properties) {\n            tagEl[k] = properties[k];\n        }\n\n        tagEl.onload = () => {\n            this._loaded.push(url);\n            callback();\n        };\n        tagEl.onerror = (e) => {\n            console.warn(\"Load resource error: \" + url);\n            console.warn(e);\n            this._loaded.push(url);\n            callback();\n        };\n\n        document.head.appendChild(tagEl);\n    }\n}\n\nexport interface Resource {\n    url: string;\n    sync?: boolean;\n    loaded?: boolean;\n    type?: string;\n}\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { iNet } from './iNet';\nimport { AppCloudConfig } from './core';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class DevConfigService {\n\n  constructor(private http: HttpClient,\n    private appConfig: AppCloudConfig) {\n  }\n\n  isExist() {\n    return this.appConfig && this.appConfig?.devConfigUrl;\n  }\n\n  loadConfig(): Promise<boolean> {\n    return new Promise((resolve, reject) => {\n      if (!this.isExist()) {\n        resolve(false);\n      } else {\n        const headers = new HttpHeaders({ 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' });\n        this.http.get(this.appConfig.devConfigUrl, { headers }).subscribe((devConfig: DevConfig) => {\n          const port = devConfig?.port || 3000;\n          if(!devConfig.authUrl){\n            throw new Error('authUrl is required');\n          }\n          const urls = devConfig?.authUrl?.split('/');\n          const protocol = devConfig?.protocol || 'http';\n          const hostname = devConfig?.hostname || window.location.hostname || 'localhost';\n          const pathServer = `${protocol}://${hostname}:${port}/${urls[3]}/${urls[4]}`;\n          const domain = pathServer.split('/').slice(0, 3).join('/');\n          const moduleName = urls[5];\n          const config = {\n            path: '/' + urls[3],\n            webContext: urls[3],\n            firmPrefix: urls[4],\n            extension: '.cpx'\n          }\n          const apiUrl = domain + config.path;\n          let _iNet = iNet.getInstances();\n          _iNet.apply(_iNet, {\n            webContext: config.webContext,\n            prefix: config.firmPrefix,\n            firmPrefix: config.firmPrefix,\n            imgFolder: `${domain}/images/${moduleName}`,\n            commonImageFolder: `${domain}/images/common`,\n            jsFolder: `${domain}/js/${moduleName}/`,\n            webchat: devConfig.webchat || '',\n            extension: config.extension,\n            path: config.path,\n            username: devConfig.username,\n            displayName: devConfig.displayName,\n            organId: devConfig.organId,\n            organName: devConfig?.organName || '',\n            getUrl: function (url) {\n              return apiUrl + '/smartcloud/' + url + config.extension;\n            },\n            getPUrl: function (url) {\n              return apiUrl + '/' + config.firmPrefix + '/' + url + config.extension;\n            }\n          })\n          resolve(true)\n        })\n      }\n    })\n  }\n}\nexport interface DevConfig {\n  target: string,\n  authUrl: string,\n  username: string,\n  displayName: string,\n  password: string,\n  organId: string,\n  organName?: string,\n  port: number,\n  webchat: string,\n  hostname?: string,\n  protocol?: string\n}","/*\nimport { DevConfigService } from \"./dev-config.service\";\nimport {SecurityService} from \"./security.service\";\n\nexport function initApp(devConfig: DevConfigService, securityConfig: SecurityService){\n    return () => {\n        if (devConfig.isExist()) {\n            return new Promise(resolve => {\n                devConfig.loadConfig().then(() => {\n                }).finally(() => {\n                    resolve(securityConfig.load());\n                });\n            })\n        } else {\n            return securityConfig.load();\n        }\n    }\n}\n    */\n\nimport { inject } from '@angular/core';\nimport { DevConfigService } from './dev-config.service';\nimport { SecurityService } from './security.service';\n\nexport async function initApp(): Promise<void> {\n  const devConfig = inject(DevConfigService);\n  const securityConfig = inject(SecurityService);\n  if (devConfig.isExist()) {\n      try {\n        await devConfig.loadConfig();\n      } catch (err) {\n        console.warn('Dev config load failed:', err);\n      }\n      await securityConfig.load();\n  } else {\n    await securityConfig.load();\n  }\n}","import {NgModule, ModuleWithProviders, provideAppInitializer, inject} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {provideHttpClient} from '@angular/common/http';\nimport {CoreService} from \"./core.service\";\nimport {HttpClientService} from \"./http-client.service\";\nimport {NotificationService} from \"./notification.service\";\nimport {AccentService} from \"./accent.service\";\nimport {UserProfileService} from \"./user-profile.service\";\nimport {CacheStorageService} from \"./cache-storage.service\";\nimport {RoleAccessDirective} from \"./role-access.directive\";\nimport {InfiniteScrollerDirective} from \"./infinite-scroller.directive\";\nimport {AutoSizeDirective} from \"./autosize.directive\";\nimport {AvatarDirective} from \"./avatar.directive\";\nimport {SecurityService} from \"./security.service\";\nimport {SSOUrlPipe} from \"./ssourl.pipe\";\nimport {ResourceLoaderService} from \"./resource-loader.service\";\nimport {initApp} from \"./init-app\";\nimport {LoadingIndicatorService} from \"./loading-indicator.service\";\nimport { AppCloudConfig } from './model/app-cloud-config';\nimport { DevConfigService } from './dev-config.service';\nimport { TimeAgoPipe } from './time-ago.pipe';\n\n@NgModule({\n    imports: [\n        CommonModule,\n        RoleAccessDirective,\n        InfiniteScrollerDirective,\n        AutoSizeDirective,\n        AvatarDirective,\n        SSOUrlPipe,\n        TimeAgoPipe\n    ],\n    declarations: [\n    ],\n    exports: [\n        RoleAccessDirective,\n        InfiniteScrollerDirective,\n        AutoSizeDirective,\n        AvatarDirective,\n        SSOUrlPipe,\n        TimeAgoPipe\n    ],\n    providers: [\n        CoreService,\n        HttpClientService,\n        NotificationService,\n        AccentService,\n        UserProfileService,\n        CacheStorageService,\n        ResourceLoaderService,\n        DevConfigService,\n        SecurityService,\n        provideHttpClient(),\n        /*\n        {\n            'provide': APP_INITIALIZER,\n            'useFactory': initApp,\n            'multi': true,\n            'deps': [DevConfigService, SecurityService]\n        },\n        */\n        provideAppInitializer(initApp),\n        LoadingIndicatorService,\n        AppCloudConfig\n    ]\n})\nexport class CoreModule {\n    static forRoot(config: AppCloudConfig = {}): ModuleWithProviders<CoreModule> {\n        return {\n            ngModule: CoreModule,\n            providers: [\n                { provide: AppCloudConfig, useValue: config }\n            ]\n        }\n    }\n}\n\n","import { Subject } from 'rxjs';\n\nexport abstract class WebSocketAbstract {\n    // receive message from socket server\n    onMessage: Subject<EnvelopBody> = new Subject();\n    onStateChange: Subject<number> = new Subject();\n\n    // update readyState\n    stateChange () {\n        this.onStateChange.next(this.readyState);\n    }\n\n    // WebSocket readyState\n    abstract readyState: number;\n\n    // connect to socket server\n    abstract connect(options: any, username: string): any;\n\n    // close socket server\n    abstract close(): any;\n\n    // send message to socket server\n    abstract send(envelop: WebSocketEnvelop): Promise<boolean>;\n}\n\nexport enum WebSocketType {\n\n    // send to the first address\n    SEND = 'send',\n\n    // publish to the all address\n    PUBLISH = 'publish',\n}\n\nexport class WebSocketEnvelop {\n    type: WebSocketType | string = WebSocketType.PUBLISH;\n    address: string;\n    socialOrgid?: string;\n    body: EnvelopBody | CustomEnvelopBody<any>;\n}\n\nexport class EnvelopBody {\n    uuid: string;\n    application: string;\n    message: EnvelopMessage;\n    sender: string;\n    alias: string[]; // receivers\n    sent: number;\n    channelIds?: string;\n    socialOrgid?: string;\n    categories?: string | string[]\n}\n\nexport class EnvelopMessage {\n    sender: string;\n    alert: string;\n    content: string;\n    joins: string;\n    duration: string;\n    channelIds?: string;\n    constructor(sender: string, content: string, joins?: string, duration?: string) {\n        this.content = this.alert = content;\n        this.sender = sender;\n        if(!!joins ){\n            this.joins = joins || sender;\n        }\n        this.duration = duration || \"0\";\n    }\n}\n\nexport class CustomEnvelopBody<T>{\n    uuid: string;\n    application: string;\n    message: T;\n    sender: string;\n    alias: string[]; // receivers\n    sent: number;\n    channelIds?: string;\n    socialOrgid?: string;\n    categories?: string | string[]\n}\n\n","import {EnvelopBody, WebSocketAbstract, WebSocketEnvelop} from './websocket-abstract';\n\nexport class WebSocketJboss extends WebSocketAbstract {\n    constructor(url: string, username: string) {\n        super();\n        this.connect(url, username);\n    }\n    private _socket: WebSocket;\n\n    get readyState(): number {\n        //console.log('[readyState]', this._socket.readyState)\n        return this._socket ? this._socket.readyState : null;\n    }\n\n    private onChange() {\n        if (this.readyState === WebSocket.OPEN) {\n            this._ping();\n        }\n        this.stateChange();\n    }\n\n    connect(url: string, username: string) {\n        //Check the window object is available before initializing the WebSocket\n        if (typeof window !== 'undefined') {\n            this._socket = new WebSocket(url);\n            this._socket.onmessage = (event) => {\n                const envelopBody: EnvelopBody = JSON.parse(event.data);\n                if (envelopBody.sender) {\n                    this.onMessage.next(envelopBody);\n                }\n            };\n            this._socket.onopen = () => this.onChange();\n            this._socket.onerror = () => this.onChange();\n            this._socket.onclose = () => this.onChange();\n        }\n    }\n\n    close() {\n        this._socket.close();\n    }\n\n    send(envelop: WebSocketEnvelop): Promise<boolean> {\n        return new Promise(resolve => {\n            try {\n                this._socket.send(JSON.stringify(envelop));\n                resolve(true);\n            } catch(e) {\n                resolve(false);\n                console.warn('Send message failed', e);\n            }\n        });\n    }\n\n    private _ping() {\n        if (this.readyState === WebSocket.OPEN) {\n            this._socket.send(JSON.stringify({type: 'ping'}));\n            setTimeout(() => this._ping(), 30000);\n        }\n    }\n}\n","import { WebSocketAbstract, WebSocketEnvelop, EnvelopBody, EnvelopMessage } from './websocket-abstract';\nimport { WebSocketJboss } from './websocket-jboss';\nimport { Subject } from 'rxjs';\nimport {iNet} from \"../iNet\";\nimport { AppCloudConfig } from '../model/app-cloud-config';\nimport { Injectable } from '@angular/core';\nimport { HttpClientService } from '../http-client.service';\nimport { HttpHeaders } from '@angular/common/http';\n@Injectable({\n    providedIn: 'root'\n}) \nexport class WebSocketClient {\n    static instance: WebSocketClient = null;\n    socket: WebSocketAbstract;\n    // message from socket server\n    onMessage: Subject<EnvelopBody> = new Subject();\n    // socket state change\n    onStateChange: Subject<any> = new Subject();\n    // envelop send will be timeout after 30s\n    sendTimeout: number = 30000;\n    private _username: string;\n    private _autoconnect: boolean;\n    private _autoconnectAfter: number = 5000; // 5s\n    private _autoconnectRepeat: number = 4; // 5 times\n    private _autoconnectRetryAfter: number = 30000; // 30s\n    private _autoconectCount: number;\n    private _autoconectTimer: any;\n    private _envelopQueue = [];\n\n    get readyState(): number {\n        return this.socket ? this.socket.readyState : null;\n    }\n\n    get connecting(): boolean {\n        return this.readyState === WebSocket.CONNECTING || this.readyState === null;\n    }\n\n    get connected(): boolean {\n        return this.readyState === WebSocket.OPEN;\n    }\n\n    get closing(): boolean {\n        return this.readyState === WebSocket.CLOSING;\n    }\n\n    get closed(): boolean {\n        return this.readyState === WebSocket.CLOSED;\n    }\n\n    get autoconnect(): boolean {\n        return this._autoconnect;\n    }\n\n    constructor(\n        private appConfig: AppCloudConfig, \n        private http: HttpClientService) {\n        if (!WebSocketClient.instance && this.appConfig?.canChat) {\n            this._getAccountInfo(() => this._register());\n        }\n        return WebSocketClient.instance = WebSocketClient.instance || this;\n    }\n\n    // close websocket client\n    close() {\n        this.socket.close();\n    }\n\n    send(address: string, message: string, application: string = ''): Promise<boolean> {\n        return this.sendEnvelop(this.buildEnvelop(address, message, application));\n    }\n\n    sendEnvelop(envelop: WebSocketEnvelop): Promise<boolean> {\n        if (this.connected) {\n            return this.socket.send(envelop);\n        } else {\n            return new Promise((resolve) => {\n                // Add to queue and waiting socket connected to send\n                let data: any = {\n                    e: envelop,\n                    f: resolve\n                };\n                data.timer = setTimeout(() => this._completeEnvelopQueue(data, false), this.sendTimeout);\n                this._envelopQueue.push(data);\n            });\n        }\n    }\n\n    buildEnvelop(address: string, message: string, application: string = '', join?: string): WebSocketEnvelop {\n        let envelop = new WebSocketEnvelop();\n        envelop.address = address;\n        envelop.body = new EnvelopBody();\n        envelop.body.application = application;\n        envelop.body.sender = this._username;\n        envelop.body.alias = [address];\n        envelop.body.message = new EnvelopMessage(this._username, message, join || '');\n        return envelop;\n    }\n\n    private _sendEnvelopQueue() {\n        this._envelopQueue.forEach((data) => {\n            this.sendEnvelop(data.e).then((status) => this._completeEnvelopQueue(data, status));\n        });\n    }\n\n    private _completeEnvelopQueue(data: any, status: boolean) {\n        const index = this._envelopQueue.indexOf(data);\n        if (index >= 0) {\n            this._envelopQueue.splice(index, 1);\n        }\n        data.f(status);\n    }\n\n    private _register(callback?: Function) {\n        let url: string = iNet.getPUrl('account/register');\n        /*\n        if(!!this.appConfig?.wsContext) {\n            let collaborationUrl = new URL(url);\n            const paths = collaborationUrl.pathname.split('/');\n            paths[1] = this.appConfig?.wsContext;\n            collaborationUrl.pathname = paths.join('/');\n            url = collaborationUrl.href;\n        }\n        */\n\n        const headers = new HttpHeaders().set('Content-Type', 'text/plain; charset=utf-8');\n        return this.http.post(url, {}, { headers, responseType: 'text' }).subscribe({\n            next: (data: any) => {\n                if (typeof data === 'string') {\n                    data = data.split(`\"`).filter((v) => !!v).join();\n                    this.socket = new WebSocketJboss(data, this._username);\n                } else {\n                    //throw new Error('Vertx Not Support');\n                    //this.socket = new WebSocketVertx(data, this._username);\n                }\n                if (this.socket) {\n                    this.socket.onStateChange.subscribe(() => this._stateChange());\n                    this.socket.onMessage.subscribe((body: EnvelopBody) => {\n                        this.onMessage.next(body);\n                    });\n                    callback && callback();\n                }\n                \n            },\n            error: (err) => {\n                callback && callback();\n            }\n        })\n    }\n\n    private _getAccountInfo(callback: Function) {\n        if (this._username) {\n            return callback(this._username);\n        }\n        if(iNet.getUserName()) {\n            this._username = iNet.getUserName();\n            callback(this._username);\n            return ;\n        } else {\n            this.http.getJSON(iNet.getPUrl('system/userprofile/view'), {}).subscribe({\n                next: (data: any) => {\n                    this._username = data && data.user && (data.user.usercode || data.user.username) || '';\n                    callback(this._username);\n                },\n                error: (err) => {\n                    callback(null)\n                }\n            });\n        }\n    }\n\n    private _stateChange() {\n        if (this.closed && !this.autoconnect) {\n            this._runAutoConnect();\n        }\n        if (this._autoconnect) {\n            return;\n        }\n        if (this.connected) {\n            this._sendEnvelopQueue();\n        }\n        this._cancelAutoConnect();\n        this.onStateChange.next({});\n    }\n\n    private _runAutoConnect() {\n        this._autoconnect = true;\n        this._autoconectTimer = setTimeout(() => {\n            if (this.connected) {\n                this._cancelAutoConnect();\n                return;\n            }\n            if (this._autoconectCount >= this._autoconnectRepeat) {\n                this._cancelAutoConnect();\n                // Sleep and retry connect after 30s\n                setTimeout(() => this._runAutoConnect(), this._autoconnectRetryAfter);\n                return;\n            }\n\n\n            this._register(() => {\n                this._autoconectCount++;\n                if (!this.connected) {\n                    this._runAutoConnect();\n                }\n            });\n        }, this._autoconnectAfter);\n    }\n\n    private _cancelAutoConnect() {\n        this._autoconnect = false;\n        this._autoconectCount = 0;\n        clearTimeout(this._autoconectTimer);\n    }\n}\n","import { Injectable } from '@angular/core';\nimport { WebSocketClient } from './websocket-client';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class WebSocketClientService extends WebSocketClient {\n    \n}","export class HtmlUtils {\n\n    static formatPattern: RegExp = new RegExp('(\\\\n)|(\\\\\\\\n)|(\\\\\\\\\\\\\\\\n)|↵', 'g');\n\n    // Escape html to display\n    static formatHtmlDisplay(html: string): string {\n        return html.replace(HtmlUtils.formatPattern, '<br>');\n    }\n}","import { HttpRequest } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable, forkJoin } from 'rxjs';\nimport { HttpClientService } from './http-client.service';\nimport { iNet } from './iNet';\nimport { ChunkUploadOptions, FileUploadOptions } from './model/upload-options.interface';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class UploaderService {\n\n  constructor(private http: HttpClientService) { }\n\n\n  private uploadFile(url: string, formData: FormData, options: FileUploadOptions): Promise<any[]> {\n    if (formData) {\n      const req = new HttpRequest('POST', url, formData, {\n        reportProgress: true\n      });\n      return new Promise((resolve, reject) => {\n        this.http.request(req).subscribe(\n          {\n            next: (event: any) => {\n              if (event?.body) {\n                resolve(options.resolver(options.resolveKey, event?.body))\n              }\n            },\n            error: (error: any) => {\n              reject('FILE_UPLOAD_FAILED');\n            }\n          }\n        );\n      })\n    } else {\n      throw new Error('Invalid File');\n    }\n  }\n\n  private uploadChunk(url: string, formData: FormData): Promise<any> {\n    //console.log('[uploadChunk]');\n    if (formData) {\n      //this.http.showLoading();\n      const req = new HttpRequest('POST', url, formData, {\n        reportProgress: true\n      });\n      return new Promise((resolve, reject) => {\n        this.http.request(req).subscribe(\n          {\n            next: (event: any) => {\n              if (event?.body) {\n                resolve(event?.body);\n              }\n            },\n            error: (error: any) => {\n              reject('FILE_UPLOAD_FAILED');\n            }\n          }\n        );\n      })\n    } else {\n      throw new Error('Invalid File');\n    }\n  }\n\n  private uploadChunks(url: string, chunks: Blob[], partitionID: string, formData: FormData, fieldName: string, options: FileUploadOptions): Promise<any> {\n    //console.log('[uploadChunks]', chunks.length);\n    let chunkRequest$ = chunks.map((chunk, index) => {\n      formData.delete(fieldName);\n      formData.delete(`${fieldName}_chunk`);\n      formData.delete('partitionID');\n\n      formData.append(fieldName, chunk)\n      formData.append(`${fieldName}_chunk`, (index + 1).toString());\n      formData.append('partitionID', partitionID);\n      return this.uploadChunk(url, formData);\n    })\n    return new Promise((resolve, reject) => {\n      forkJoin([...chunkRequest$]).subscribe({\n        next: (results: any[]) => {\n          //console.log('reponse', results);\n          results.forEach((response: any, index: number) => {\n            if (response[options.resolveKey]) {\n              resolve(options.resolver(options.resolveKey, response))\n            }\n          })\n        },\n        error: (error: any) => {\n          reject(error);\n        }\n      });\n    })\n  }\n\n  private uploadChunkFile(url: string, file: File, formData: FormData, index: number, options: FileUploadOptions): Promise<any[]> {\n    const maxSizeUpload = (iNet.getMaxSizeUpload() || options.maxSizeUpload || 2000000)\n    const chunkSize = maxSizeUpload * 0.75;\n    let chunkIndex = 0, chunkCount = Math.ceil(file.size / chunkSize);\n    /*\n    console.log('[maxSizeUpload]', maxSizeUpload);\n    console.log('[chunkSize]', chunkSize);\n    console.log('[chunkCount]', chunkCount);\n    */\n    //console.log('[file]', file, file.size);\n    let fieldName = `file${index}`;\n    return new Promise((resolve, reject) => {\n      if (chunkCount == 1) {\n        formData.append(fieldName, file);\n        this.uploadFile(url, formData, options).then(file => {\n          resolve([file]);\n        })\n      } else if (chunkCount > 1) {\n        let chunks: Blob[] = [];\n        for (let start = 0; start < file.size; start += chunkSize) {\n          const chunk = file.slice(start, start + chunkSize);\n          chunkIndex += 1;\n          if (chunkIndex === 1) {\n            formData.append(fieldName, chunk);\n            formData.append(`${fieldName}_filename`, file.name);\n            formData.append(`${fieldName}_minetype`, file.type);\n            formData.append(`${fieldName}_chunk`, chunkCount.toString())\n          } else {\n            chunks.push(chunk);\n          }\n        }\n        //Upload first chunk\n        this.uploadChunk(url, formData).then((data: any) => {\n          //Upload chunks\n          this.uploadChunks(url, chunks, data?.uuid, formData, fieldName, options).then((file) => {\n            resolve([file]);\n          }).catch(reason => {\n            reject(reason);\n          });\n        }).catch(reason => {\n          reject(reason);\n        })\n      }\n    })\n  }\n\n  uploadBlob(url: string, blobs: Blob[], formData: FormData, options: ChunkUploadOptions): Observable<any> {\n    return new Observable<any>((observer) => {\n      if (blobs && blobs.length > 0 ) {\n        if (blobs.length === 1) {\n          //console.log('[uploadFile]---blobs--', blobs.length);\n          formData.append(options.filename, blobs[0]);\n          this.uploadFile(url, formData, (options as FileUploadOptions)).then(file => {\n            observer.next(file);\n          })\n        } else if (blobs.length > 1) {\n          let fieldName = `file`;\n          formData.append(fieldName, blobs[0]);\n          formData.append(`${fieldName}_filename`, options.filename);\n          formData.append(`${fieldName}_minetype`, options.minetype);\n          formData.append(`${fieldName}_chunk`, options.chunkCount.toString());\n\n          //Upload first chunk\n          ///console.log('[uploadFirstChunk]', blobs.length);\n          this.uploadChunk(url, formData).then((data: any) => {\n            //console.log('[uploadFirstChunk]--succesfull--');\n            blobs.splice(0, 1); //Remove firts chunk\n            //Upload chunks\n            this.uploadChunks(url, blobs, data?.uuid, formData, fieldName, (options as FileUploadOptions)).then((file) => {\n              observer.next(file);\n            }).catch(reason => {\n              observer.error(reason);\n            });\n          }).catch(reason => {\n            observer.error(reason);\n          })\n        }\n      } else {\n        observer.error('Blob not found');\n      }\n    });\n  }\n\n  /**\n   *  Send files to a server\n   * @param url  - URL of server to receive the file\n   * @param files - the input files\n   * @param formData - the FormData object \n   * @param options - the file upload options\n   */\n  upload(url: string, files: File[], params: any = {},\n    options: FileUploadOptions = {\n      resolveKey: 'elements',\n      resolver: (key: string, response: any) => {\n        return response;\n      }\n    }): Promise<any[]> {\n    files = Array.from(files);\n\n    let requests$ = files.map((file, index) => {\n      return this.uploadChunkFile(url, file, this.http.convertToFormData(params), index + 1, options)\n    })\n    return new Promise((resolve, reject) => {\n      forkJoin([...requests$]).subscribe({\n        next: (results: any[]) => {\n          let files: any[] = [];\n          results.forEach((_files: any[], index: number) => {\n            if (_files.length > 0) {\n              files = files.concat(_files);\n            }\n          })\n          resolve(files);\n        },\n        error: (error: any) => {\n          //console.log('[upload]' , error);\n          if (typeof error === 'string') {\n            reject(error);\n          }\n        }\n      });\n    })\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["this","i2.LoadingIndicatorService","i1.HttpClientService","i1.SecurityService","i2.CoreService","i2.AppCloudConfig","i1.AppCloudConfig","i2.HttpClientService"],"mappings":"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"}