{"version":3,"sources":["webpack:///./node_modules/core-js/internals/same-value.js","webpack:///./node_modules/randomstring/lib/randomstring.js","webpack:///./node_modules/randomstring/lib/charset.js","webpack:///./src/views/userProfile/sections/UserProfileSummary.vue?492e","webpack:///./node_modules/randomstring/index.js","webpack:///./@core/components/AppSignatureBox.vue?242e","webpack:///./@master/model/options/SystemRoleOptions.ts","webpack:///./@core/components/TheUserNavi.vue?9188","webpack:///./@core/components/TheUserNavi.vue","webpack:///./@core/components/TheUserNavi.vue?c344","webpack:///./@core/components/TheUserNavi.vue?3deb","webpack:///./@core/assets/myinfo-icon.svg","webpack:///./node_modules/randomstring/node_modules/randombytes/browser.js","webpack:///./@master/model/options/IDDocTypeOptions.ts","webpack:///./node_modules/core-js/modules/es.string.search.js","webpack:///./@core/pages/userProfile/api/services/AccountStructureMemberService.ts","webpack:///./@core/components/AppForm.vue?baa9","webpack:///./@core/components/TheUserNavi.vue?81fc","webpack:///./@core/components/AppDatatable.vue?fa4e","webpack:///./@core/components/AppDatatable.vue","webpack:///./@core/components/AppDatatable.vue?a0c0","webpack:///./@core/components/AppDatatable.vue?89f0","webpack:///./@core/components/AppCurrencyNA.vue?af5e","webpack:///./src/views/userProfile/sections/UserProfileSummary.vue?b2a7","webpack:///./src/views/userProfile/sections/UserProfileSummary.vue","webpack:///./src/views/userProfile/sections/UserProfileSummary.vue?c42e","webpack:///./src/views/userProfile/sections/UserProfileSummary.vue?6b14","webpack:///./@core/components/AppSignatureBox.vue?a3b5","webpack:///./@core/pages/signatures/api/services/SignaturesService.ts","webpack:///./@core/components/AppSignatureBox.vue","webpack:///./@core/components/AppSignatureBox.vue?a2e4","webpack:///./@core/components/AppSignatureBox.vue?bc82","webpack:///./node_modules/randomstring/node_modules/array-uniq/index.js","webpack:///./@core/components/AppDatatable.vue?8f2d","webpack:///./@core/components/AppForm.vue?4190","webpack:///./@core/components/AppCurrencyNA.vue?2c19","webpack:///./@core/components/AppCurrencyNA.vue","webpack:///./@core/components/AppCurrencyNA.vue?4219","webpack:///./@core/components/AppCurrencyNA.vue?6502","webpack:///./@core/components/AppForm.vue","webpack:///./@core/components/AppForm.vue?cec5","webpack:///./@core/components/AppForm.vue?3db6","webpack:///./node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","webpack:///./node_modules/signature_pad/src/point.ts","webpack:///./node_modules/signature_pad/src/throttle.ts","webpack:///./node_modules/signature_pad/src/bezier.ts","webpack:///./@core/tools/CustomSignaturePad.ts"],"names":["module","exports","Object","is","x","y","randomBytes","Charset","unsafeRandomBytes","length","stack","i","push","Math","floor","random","readUInt8","index","safeRandomBytes","e","processString","buf","initialString","chars","reqLen","maxByte","string","randomByte","charAt","getAsyncString","cb","err","generatedString","generate","options","charset","setType","capitalization","setcapitalization","readable","removeUnreadable","removeDuplicates","charsLen","ceil","arrayUniq","this","prototype","type","numbers","charsLower","charsUpper","toUpperCase","hexChars","binaryChars","octalChars","unreadableChars","replace","toLowerCase","charMap","split","join","SystemRoleOptions","label","value","render","_vm","_h","$createElement","_c","_self","staticClass","attrs","_v","_s","user","fullname","email","systemrole","isBscReviewer","_e","_l","section","key","path","name","params","userOid","oid","scopedSlots","_u","fn","ref","href","isActive","staticRenderFns","$store","getters","currentUser","$router","required","component","oldBrowser","Error","crypto","global","msCrypto","size","rawBytes","Uint8Array","getRandomValues","bytes","Buffer","buffer","process","nextTick","IDDocOptions","call","fixRegExpWellKnownSymbolLogic","anObject","requireObjectCoercible","sameValue","toString","getMethod","regExpExec","SEARCH","nativeSearch","maybeCallNative","regexp","O","searcher","undefined","RegExp","rx","S","res","done","previousLastIndex","lastIndex","result","requestBody","method","body","memberId","accountOid","class","show","directives","rawName","expression","currentPageData","hasNoError","selectionKey","tableRowClassName","on","sortChange","rowClick","handleSelection","column","field","sortable","scope","row","modifiers","$event","$$selectedVal","Array","filter","target","o","selected","map","val","_value","$set","multiple","handleCustomEvent","option","domProps","_n","$forceUpdate","decimal","disabled","convertToCurrency","_t","button","$emit","shouldDisabled","stopPropagation","infoFrom","infoTo","total","currentPage","pageSizesDisplay","pageSize","pageChange","handleSizeChange","pageSizes","sortBy","prop","data","order","sizes","lastSize","round","search","searchKeyword","trim","filters","JSON","stringify","includes","filteredData","sort","a","b","sortedData","slice","every","error","emit","redirect","window","location","rows","appdatatable","$refs","clearSelection","currencySymbol","Number","toLocaleString","minimumFractionDigits","maximumFractionDigits","clearCheckboxOnHeader","default","components","AppDecimalNumber","errors","isCurrentUser","isUserSignatureEnabled","showSignPad","userStructure","systemStructure","userSystem","loading","productPrincipalColumns","productPrincipalRows","userGroupsColumns","userGroupsRows","isModalVisible","slot","productPrincipalStructure","productPrincipal","saveAdviserCode","userStore","PrincipalMeta","representativeBranch","$route","accountID","sharedVariable","sysInfo","user_signature","uiService","_oid","isSuperUser","productPrincipals","getFullList","model","get","projectSettings","useNewCommissionModule","adviserBranch","set","buttonName","classes","others","adviserProducts","tooltip","placement","effect","style","content","icon","saveProductPrincipal","groups","userGroup","accountId","names","role","oldPassword","newPassword","confirmPassword","sign","$api","signature","upsert","then","alert","catch","validatePassword","saveUser","username","originalUserName","changeUserName","message","savePassword","findMemberInStructure","fetchPrincipalList","fetchRepresentativeBranch","$parent","$off","onSubmit","$on","State","Action","AppForm","AppRadioSelection","AppSignatureBox","AppDatatable","TheUserNavi","AppDialog","_m","footerBtn","hasOwnProperty","clearSignature","triggerSave","signaturePad","userSignature","clear","noSigned","isEmpty","signatureData","toDataURL","canvas","document","querySelector","maxWidth","addEventListener","ev","detail","setSignature","fetchUserSignature","retrieveUserSignature","signData","fromDataURL","console","log","findOne","uniqNoSet","arr","ret","indexOf","uniqSet","seen","Set","el","has","add","uniqSetWithForEach","forEach","doesForEachActuallyWork","structure","shouldShow","getCustomClass","hasErrors","focusId","getId","focusInner","getTestId","labelModelValue","labelModel","labelKey","composing","eidx","msg","full","fullErr","optionCols","multiLimit","cycleMode","displayDirection","setValue","blurHandler","getValue","checkboxColumnNo","compact","isMyInfo","getLabelId","setSelectValue","maxChar","currencyFormat","precision","futureDate","disabledFutureDate","isVertical","maxSize","columns","getValueForTable","remove","maxLength","counterMsg","isModernTheme","maxlength","numberAndNAOnly","onBlur","onFocus","onSelect","inputModal","textIsSelected","number","convertCurrencyToNumber","remainingChar","evt","event","charCode","which","keyCode","currentValue","isAlphabetN","isNonNumber","preventDefault","charCodeAt","isAlphabetA","formatValue","isNaN","source","useCurrency","currencyPrefix","currency","replaceAll","projectInfo","inputValue","minimal","structures","charLeft","getCharLeft","getCounterMsg","gridTemplateColumns","theme","condition","readOnly","Function","input","oriValue","String","labelValue","selectedOption","selectedIndex","onChange","ex","uniqueID","snakeCaseKey","curAppForm","$el","hasOverflow","scrollWidth","clientWidth","eleId","ele","getElementById","focus","mc","swe","first","find","s","scrollIntoView","behavior","block","arrangeCols","Date","now","deep","AppSmartSelect","AppCheckboxGroup","AppDateInput","AppFormTable","AppCurrencyNA","AppTooltip","_createForOfIteratorHelper","allowArrayLike","it","Symbol","iterator","isArray","unsupportedIterableToArray","F","n","f","TypeError","normalCompletion","didErr","step","next","_e2","time","start","sqrt","pow","other","distanceTo","throttle","storedContext","storedArgs","wait","previous","timeout","later","apply","remaining","args","clearTimeout","setTimeout","startPoint","control2","control1","endPoint","startWidth","endWidth","px","py","steps","t","cx","point","cy","xdiff","ydiff","c1","c2","end","points","widths","calculateControlPoints","c3","Bezier","s1","s2","s3","dx1","dy1","dx2","dy2","m1","m2","l1","l2","dxm","dym","k","cm","tx","ty","_handleMouseDown","_mouseButtonDown","_strokeBegin","_handleMouseMove","_strokeMoveUpdate","_handleMouseUp","_strokeEnd","_handleTouchStart","targetTouches","touch","changedTouches","_handleTouchMove","_handleTouchEnd","wasCanvasTouched","velocityFilterWeight","minWidth","minDistance","dotSize","penColor","backgroundColor","onBegin","onEnd","SignaturePad","_strokeUpdate","_ctx","getContext","ctx","fillStyle","clearRect","width","height","fillRect","_data","_reset","_isEmpty","dataUrl","callback","image","Image","ratio","devicePixelRatio","onload","drawImage","onerror","src","encoderOptions","_toSVG","touchAction","msTouchAction","PointerEvent","_handlePointerEvents","_handleMouseEvents","_handleTouchEvents","removeEventListener","pointGroups","_fromData","color","curve","_drawCurve","_drawDot","newPointGroup","clientX","clientY","_createPoint","lastPointGroup","lastPoints","lastPoint","isLastPointTooClose","_addPoint","_lastPoints","_lastVelocity","_lastWidth","rect","getBoundingClientRect","left","top","getTime","unshift","_calculateCurveWidths","fromPoints","shift","velocity","velocityFrom","newWidth","_strokeWidth","max","moveTo","arc","PI","widthDelta","drawSteps","beginPath","tt","ttt","u","uu","uuu","min","_drawCurveSegment","closePath","fill","drawCurve","drawDot","group","j","basicPoint","minX","minY","maxX","maxY","svg","createElementNS","setAttribute","createElement","attr","toFixed","appendChild","circle","prefix","header","innerHTML","dummy","nodes","childNodes","cloneNode","footer","btoa"],"mappings":"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","file":"js/chunk-69679642.4bba46ba.js","sourcesContent":["// `SameValue` abstract operation\n// https://tc39.es/ecma262/#sec-samevalue\n// eslint-disable-next-line es/no-object-is -- safe\nmodule.exports = Object.is || function is(x, y) {\n // eslint-disable-next-line no-self-compare -- NaN check\n return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n","\"use strict\";\n\nvar randomBytes = require('randombytes');\nvar Charset = require('./charset.js');\n\n\nfunction unsafeRandomBytes(length) {\n var stack = [];\n for (var i = 0; i < length; i++) {\n stack.push(Math.floor(Math.random() * 255));\n }\n\n return {\n length,\n readUInt8: function (index) {\n return stack[index];\n }\n };\n}\n\nfunction safeRandomBytes(length) {\n try {\n return randomBytes(length);\n } catch (e) {\n /* React/React Native Fix + Eternal loop removed */\n return unsafeRandomBytes(length);\n }\n}\n\nfunction processString(buf, initialString, chars, reqLen, maxByte) {\n var string = initialString;\n for (var i = 0; i < buf.length && string.length < reqLen; i++) {\n var randomByte = buf.readUInt8(i);\n if (randomByte < maxByte) {\n string += chars.charAt(randomByte % chars.length);\n }\n }\n return string;\n}\n\nfunction getAsyncString(string, chars, length, maxByte, cb) {\n randomBytes(length, function(err, buf) {\n if (err) {\n // Since it is waiting for entropy, errors are legit and we shouldn't just keep retrying\n cb(err);\n }\n var generatedString = processString(buf, string, chars, length, maxByte);\n if (generatedString.length < length) {\n getAsyncString(generatedString, chars, length, maxByte, cb);\n } else {\n cb(null, generatedString);\n }\n })\n}\n\nexports.generate = function(options, cb) {\n var charset = new Charset();\n\n var length, chars, capitalization, string = '';\n\n // Handle options\n if (typeof options === 'object') {\n length = typeof options.length === 'number' ? options.length : 32;\n\n if (options.charset) {\n charset.setType(options.charset);\n }\n else {\n charset.setType('alphanumeric');\n }\n\n if (options.capitalization) {\n charset.setcapitalization(options.capitalization);\n }\n\n if (options.readable) {\n charset.removeUnreadable();\n }\n\n charset.removeDuplicates();\n }\n else if (typeof options === 'number') {\n length = options;\n charset.setType('alphanumeric');\n }\n else {\n length = 32;\n charset.setType('alphanumeric');\n }\n\n // Generate the string\n var charsLen = charset.chars.length;\n var maxByte = 256 - (256 % charsLen);\n\n if (!cb) {\n while (string.length < length) {\n var buf = safeRandomBytes(Math.ceil(length * 256 / maxByte));\n string = processString(buf, string, charset.chars, length, maxByte);\n }\n\n return string;\n }\n\n getAsyncString(string, charset.chars, length, maxByte, cb);\n\n};\n","var arrayUniq = require('array-uniq');\n\nfunction Charset() {\n this.chars = '';\n}\n\nCharset.prototype.setType = function(type) {\n var chars;\n\n var numbers = '0123456789';\n var charsLower = 'abcdefghijklmnopqrstuvwxyz';\n var charsUpper = charsLower.toUpperCase();\n var hexChars = 'abcdef';\n var binaryChars = '01';\n var octalChars = '01234567';\n\n if (type === 'alphanumeric') {\n chars = numbers + charsLower + charsUpper;\n }\n else if (type === 'numeric') {\n chars = numbers;\n }\n else if (type === 'alphabetic') {\n chars = charsLower + charsUpper;\n }\n else if (type === 'hex') {\n chars = numbers + hexChars;\n }\n else if (type === 'binary') {\n chars = binaryChars;\n }\n else if (type === 'octal') {\n chars = octalChars;\n }\n else {\n chars = type;\n }\n\n this.chars = chars;\n}\n\nCharset.prototype.removeUnreadable = function() {\n var unreadableChars = /[0OIl]/g;\n this.chars = this.chars.replace(unreadableChars, '');\n}\n\nCharset.prototype.setcapitalization = function(capitalization) {\n if (capitalization === 'uppercase') {\n this.chars = this.chars.toUpperCase();\n }\n else if (capitalization === 'lowercase') {\n this.chars = this.chars.toLowerCase();\n }\n}\n\nCharset.prototype.removeDuplicates = function() {\n var charMap = this.chars.split('');\n charMap = arrayUniq(charMap);\n this.chars = charMap.join('');\n}\n\nmodule.exports = exports = Charset;\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserProfileSummary.vue?vue&type=style&index=0&id=6aa0beca&lang=scss&scoped=true&\"","module.exports = require(\"./lib/randomstring\");","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppSignatureBox.vue?vue&type=style&index=0&lang=scss&\"","import { options } from './Options'\n\nexport const SystemRoleOptions: options[] = [\n { label: 'Adviser', value: 'adviser' },\n { label: 'Supervisor', value: 'supervisor' },\n { label: 'Director', value: 'director' },\n { label: 'Ops-Staff', value: 'ops-staff' },\n { label: 'Product Admin', value: 'product-admin' },\n { label: 'BSC Reviewer', value: 'bsc-reviewer' }\n]\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"user-navi\",attrs:{\"id\":\"host\"}},[_c('div',{staticClass:\"user-profile\"},[_c('span',{staticClass:\"user-fullname\"},[_vm._v(_vm._s(_vm.user.fullname))]),_c('p',[_vm._v(_vm._s(_vm.user.email))]),_c('p',[_vm._v(_vm._s(_vm.user.systemrole))])]),(!_vm.isBscReviewer)?_vm._l((_vm.sections),function(section){return _c('router-link',{key:section.path,attrs:{\"to\":{ name: section.name, params: { userOid: _vm.user.oid } }},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar href = ref.href;\nvar isActive = ref.isActive;\nreturn [_c('div',{staticClass:\"navi-section\"},[_c('a',{attrs:{\"active\":isActive,\"href\":href}},[_vm._v(_vm._s(section.name))])])]}}],null,true)})}):_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { IProjectSettings } from '@master/config/IProjectSettings'\nimport { inject } from 'inversify-props'\nimport { Component, Prop, Vue } from 'vue-property-decorator'\nimport { getChildSections } from '../pages/userProfile/route/index'\n\ninterface User {\n oid: string;\n fullname: string;\n systemrole: string;\n email: string;\n}\n@Component\nexport default class TheUserNavi extends Vue {\n @inject()\n private projectSettings: IProjectSettings\n\n @Prop({ required: true }) readonly user!: User\n\n get isBscReviewer () {\n return this.$store.getters.currentUser.systemrole === 'bsc-reviewer'\n }\n\n get currentUser () {\n return this.$store.getters.currentUser\n }\n\n get sections () {\n // return this.$router.options.routes.find(route => route.name === 'User Profile Main')?.children || []\n return getChildSections(this.currentUser.systemrole, this.$router) || []\n }\n}\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TheUserNavi.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TheUserNavi.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TheUserNavi.vue?vue&type=template&id=15571f70&scoped=true&\"\nimport script from \"./TheUserNavi.vue?vue&type=script&lang=ts&\"\nexport * from \"./TheUserNavi.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./TheUserNavi.vue?vue&type=style&index=0&id=15571f70&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"15571f70\",\n null\n \n)\n\nexport default component.exports","module.exports = __webpack_public_path__ + \"img/myinfo-icon.28e75045.svg\";","'use strict'\n\nfunction oldBrowser () {\n throw new Error('secure random number generation not supported by this browser\\nuse chrome, FireFox or Internet Explorer 11')\n}\n\nvar crypto = global.crypto || global.msCrypto\n\nif (crypto && crypto.getRandomValues) {\n module.exports = randomBytes\n} else {\n module.exports = oldBrowser\n}\n\nfunction randomBytes (size, cb) {\n // phantomjs needs to throw\n if (size > 65536) throw new Error('requested too many random bytes')\n // in case browserify isn't using the Uint8Array version\n var rawBytes = new global.Uint8Array(size)\n\n // This will not work in older browsers.\n // See https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n if (size > 0) { // getRandomValues fails on IE if size == 0\n crypto.getRandomValues(rawBytes)\n }\n // phantomjs doesn't like a buffer being passed here\n var bytes = new Buffer(rawBytes.buffer)\n\n if (typeof cb === 'function') {\n return process.nextTick(function () {\n cb(null, bytes)\n })\n }\n\n return bytes\n}\n","import { options } from './Options'\n\nexport const IDDocOptions: options[] = [\n { label: '', value: '' },\n { label: 'Identity Card - Pink', value: 'ic-pink' },\n { label: 'Identity Card - Blue', value: 'ic-blue' },\n { label: 'Other', value: 'others' }\n]\n","'use strict';\nvar call = require('../internals/function-call');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar sameValue = require('../internals/same-value');\nvar toString = require('../internals/to-string');\nvar getMethod = require('../internals/get-method');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@search logic\nfixRegExpWellKnownSymbolLogic('search', function (SEARCH, nativeSearch, maybeCallNative) {\n return [\n // `String.prototype.search` method\n // https://tc39.es/ecma262/#sec-string.prototype.search\n function search(regexp) {\n var O = requireObjectCoercible(this);\n var searcher = regexp == undefined ? undefined : getMethod(regexp, SEARCH);\n return searcher ? call(searcher, regexp, O) : new RegExp(regexp)[SEARCH](toString(O));\n },\n // `RegExp.prototype[@@search]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@search\n function (string) {\n var rx = anObject(this);\n var S = toString(string);\n var res = maybeCallNative(nativeSearch, rx, S);\n\n if (res.done) return res.value;\n\n var previousLastIndex = rx.lastIndex;\n if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;\n var result = regExpExec(rx, S);\n if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n return result === null ? -1 : result.index;\n }\n ];\n});\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport type { AddMemberDTO } from '../models/AddMemberDTO';\nimport { request as __request } from '@openapi/request';\n\nexport class AccountStructureMemberService {\n\n /**\n * @param requestBody\n * @returns any\n * @throws ApiError\n */\n public static async addMember(\n requestBody: AddMemberDTO,\n ): Promise {\n const result = await __request({\n method: 'POST',\n path: `/live/api/account-structure/member`,\n body: requestBody,\n });\n return result.body;\n }\n\n /**\n * @param memberId\n * @returns any\n * @throws ApiError\n */\n public static async deleteMember(\n memberId: number,\n ): Promise {\n const result = await __request({\n method: 'DELETE',\n path: `/live/api/account-structure/member/${memberId}`,\n });\n return result.body;\n }\n\n /**\n * @param accountOid\n * @returns string\n * @throws ApiError\n */\n public static async findMemberInStructure(\n accountOid: string,\n ): Promise> {\n const result = await __request({\n method: 'GET',\n path: `/live/api/account-structure/member/find/${accountOid}`,\n });\n return result.body;\n }\n\n}","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppForm.vue?vue&type=style&index=0&id=11928856&lang=scss&scoped=true&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TheUserNavi.vue?vue&type=style&index=0&id=15571f70&lang=scss&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"datatable\",class:{'active': _vm.show, 'inactive': !_vm.show}},[_c('el-table',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],ref:\"appdatatable\",attrs:{\"data\":_vm.currentPageData,\"stripe\":_vm.hasNoError,\"size\":\"mini\",\"row-key\":_vm.selectionKey,\"row-class-name\":_vm.tableRowClassName,\"header-cell-class-name\":'cell-header'},on:{\"sort-change\":_vm.sortChange,\"row-click\":_vm.rowClick,\"selection-change\":_vm.handleSelection}},[(_vm.selectionKey)?_c('el-table-column',{attrs:{\"type\":\"selection\",\"reserve-selection\":true}}):_vm._e(),_vm._l((_vm.columns),function(column){return [(column.options)?_c('el-table-column',{key:column.field,attrs:{\"prop\":column.field,\"label\":column.label,\"align\":\"center\",\"sortable\":column.sortable === undefined ? true : column.sortable},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('select',{directives:[{name:\"model\",rawName:\"v-model.lazy\",value:(scope.row[column.field]),expression:\"scope.row[column.field]\",modifiers:{\"lazy\":true}}],on:{\"change\":[function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(scope.row, column.field, $event.target.multiple ? $$selectedVal : $$selectedVal[0])},function($event){return _vm.handleCustomEvent(scope.row)}]}},_vm._l((column.options),function(option,index){return _c('option',{key:index,domProps:{\"value\":option.value}},[_vm._v(_vm._s(option.label))])}),0)]}}],null,true)}):(column.type)?_c('el-table-column',{key:column.field,attrs:{\"prop\":column.field,\"label\":column.label,\"align\":\"center\",\"sortable\":column.sortable === undefined ? true : column.sortable},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(column.type==='number')?[_c('input',{directives:[{name:\"model\",rawName:\"v-model.number.lazy\",value:(scope.row[column.field]),expression:\"scope.row[column.field]\",modifiers:{\"number\":true,\"lazy\":true}}],attrs:{\"type\":column.type},domProps:{\"value\":(scope.row[column.field])},on:{\"change\":[function($event){_vm.$set(scope.row, column.field, _vm._n($event.target.value))},function($event){return _vm.handleCustomEvent(scope.row)}],\"blur\":function($event){return _vm.$forceUpdate()}}})]:(column.type === 'decimal-number')?[_c('AppDecimalNumber',{attrs:{\"decimal\":column.decimal,\"inputValue\":scope.row[column.field],\"disabled\":column.disabled}})]:(column.type === 'currency')?[_c('label',[_vm._v(_vm._s(_vm.convertToCurrency(scope.row[column.field])))])]:(column.type === 'action')?_vm._t(\"action\",function(){return _vm._l((column.buttons),function(button,index){return _c('button',{key:index,on:{\"click\":function($event){return _vm.$emit(button, scope.row)}}},[_vm._v(_vm._s(button))])})}):(column.type === 'actionWithFeatures')?_vm._t(\"action\",function(){return _vm._l((column.buttons),function(button,index){return _c('button',{key:index,attrs:{\"disabled\":button.shouldDisabled},on:{\"click\":function($event){return _vm.$emit(button.label, scope.row)}}},[_vm._v(_vm._s(button.label))])})}):_c('input',{directives:[{name:\"model\",rawName:\"v-model.lazy\",value:(scope.row[column.field]),expression:\"scope.row[column.field]\",modifiers:{\"lazy\":true}}],attrs:{\"type\":column.type},domProps:{\"value\":(scope.row[column.field])},on:{\"change\":[function($event){return _vm.$set(scope.row, column.field, $event.target.value)},function($event){return _vm.handleCustomEvent(scope.row)}]}})]}}],null,true)}):_c('el-table-column',{key:column.field,attrs:{\"prop\":column.field,\"label\":column.label,\"align\":\"center\",\"sortable\":column.sortable === undefined ? true : column.sortable,\"show-overflow-tooltip\":true},scopedSlots:_vm._u([{key:\"content\",fn:function(scope){return [_c('div',[_vm._v(_vm._s(scope.row[column.field]))])]}}],null,true)})]}),(_vm.redirect)?_c('el-table-column',{key:'redirect',attrs:{\"prop\":'redirect',\"align\":\"center\",\"sortable\":false},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('div',{on:{\"click\":function($event){$event.stopPropagation();return _vm.$emit('redirect', scope.row)}}},[_c('i',{staticClass:\"fas fa-external-link-alt\"})])]}}],null,false,2100746354)}):_vm._e()],2),_c('div',{staticClass:\"table-footer\"},[_c('div',{staticClass:\"table-info\"},[_vm._v(\"Show \"+_vm._s(_vm.infoFrom)+\" to \"+_vm._s(_vm.infoTo)+\" of \"+_vm._s(_vm.total)+\" entries\")]),_c('el-pagination',{attrs:{\"current-page\":_vm.currentPage,\"total\":_vm.total,\"hide-on-single-page\":false,\"page-sizes\":_vm.pageSizesDisplay,\"page-size\":_vm.pageSize,\"layout\":\"sizes, prev, pager, next, jumper\",\"background\":\"\"},on:{\"current-change\":_vm.pageChange,\"size-change\":_vm.handleSizeChange}})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Prop, Vue, Watch } from 'vue-property-decorator'\nimport { isUndefined } from 'lodash/fp'\nimport AppDecimalNumber from './AppDecimalNumber.vue'\n\nexport interface Column {\n label: string;\n field: string;\n sortable?: boolean;\n options: { label: string; value: string }[];\n}\n\ninterface Sort {\n prop: string;\n order: 'ascending' | 'decending';\n}\n\n@Component({\n components: {\n AppDecimalNumber\n }\n})\nexport default class TheDatatable extends Vue {\n @Prop() readonly loading!: boolean\n @Prop() readonly columns!: Array\n @Prop() readonly data!: Array\n @Prop() readonly filters: Array\n @Prop() readonly sort!: Sort\n @Prop() readonly search!: string\n @Prop({ default: true }) readonly show!: boolean\n @Prop({ default: false }) readonly redirect!: boolean\n @Prop() readonly selectionKey: string\n private pageSizes = [10, 50, 100, 500, 1000]\n private pageSize = 10\n private currentPage = 1\n private sortBy: Sort = {\n prop: this.data[0],\n order: 'ascending'\n }\n\n @Prop() clearSelection: boolean\n\n get pageSizesDisplay () {\n // return first size(10), if data total less than 10\n if (this.total < this.pageSizes[0]) return [this.pageSizes[0]]\n\n // get all the size that less than total\n const sizes = this.pageSizes.filter(size => size < this.total)\n\n // push last size\n const lastSize = (Math.round(this.total / 10) + 1) * 10\n sizes.push(lastSize)\n\n return sizes\n }\n\n get filteredData () {\n if (isUndefined(this.search)) return this.data\n\n const searchKeyword = this.search.trim().toLowerCase()\n const data = (this.filters && this.filters.length) ? this.filters : this.data\n return data.filter(value => {\n const result = JSON.stringify(value).toLowerCase().includes(searchKeyword)\n return result\n })\n }\n\n get sortedData () {\n const data = this.filteredData.sort((a, b) => {\n if (this.sortBy.order === 'ascending') {\n if (a[this.sortBy.prop] > b[this.sortBy.prop]) { return 1 }\n if (a[this.sortBy.prop] < b[this.sortBy.prop]) { return -1 }\n } else {\n if (a[this.sortBy.prop] > b[this.sortBy.prop]) { return -1 }\n if (a[this.sortBy.prop] < b[this.sortBy.prop]) { return 1 }\n }\n return 0\n })\n return data\n }\n\n get currentPageData () {\n return this.sortedData.slice((this.currentPage - 1) * this.pageSize, this.pageSize * this.currentPage)\n }\n\n get total () {\n return this.filteredData.length\n }\n\n get infoFrom () {\n if (this.currentPage !== 1) {\n return (this.currentPage - 1) * this.pageSize + 1\n } else {\n return this.filteredData.length ? 1 : 0\n }\n }\n\n get infoTo () {\n return this.currentPageData.length < this.pageSize\n ? this.pageSize * (this.currentPage - 1) + this.currentPageData.length\n : this.pageSize * this.currentPage\n }\n\n get hasNoError () {\n return this.data.every(e => e.error === undefined)\n }\n\n pageChange (currentPage: number): void {\n this.currentPage = currentPage\n this.$emit('pageChangeCustom', this.currentPage)\n }\n\n sortChange (sort: Sort): void {\n this.sortBy.prop = sort.prop\n this.sortBy.order = sort.order || 'ascending'\n }\n\n rowClick (row: any): void {\n if (row.emit) this.$emit('rowClickCustom', row)\n if (!row.redirect) return\n window.location.href = row.redirect\n }\n\n handleSelection (rows: any[]) {\n this.$emit('selectionChange', rows)\n }\n\n handleCustomEvent (row) {\n this.$emit('customEventSelect', row)\n }\n\n tableRowClassName ({ row }) {\n if (row.error) {\n return 'warning-row'\n } else {\n return ''\n }\n }\n\n clearCheckboxOnHeader () {\n const appdatatable = this.$refs.appdatatable as any\n if (this.selectionKey && appdatatable) {\n appdatatable.clearSelection()\n }\n }\n\n handleSizeChange (val) {\n this.pageSize = val\n }\n\n convertToCurrency (value, currencySymbol = '') {\n if (!value && value !== 0) return ''\n return currencySymbol + Number(value).toLocaleString(undefined, {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2\n })\n }\n\n mounted () {\n this.sortBy = this.sort\n this.clearCheckboxOnHeader()\n }\n\n @Watch('clearSelection')\n clearSelectionCheckbox () {\n if (this.clearSelection) {\n this.clearCheckboxOnHeader()\n }\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDatatable.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDatatable.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AppDatatable.vue?vue&type=template&id=4b557606&scoped=true&\"\nimport script from \"./AppDatatable.vue?vue&type=script&lang=ts&\"\nexport * from \"./AppDatatable.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AppDatatable.vue?vue&type=style&index=0&id=4b557606&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4b557606\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppCurrencyNA.vue?vue&type=style&index=0&id=423a3b72&lang=scss&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"user-profile-summary\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"User Details\")]),_c('div',{staticClass:\"errors\"},[(_vm.errors.length)?_c('p',[_c('b',[_vm._v(\"Please correct the following error(s):\")]),_c('ul',_vm._l((_vm.errors),function(error,index){return _c('li',{key:index},[_vm._v(_vm._s(error))])}),0)]):_vm._e()]),(_vm.isUserSignatureEnabled)?void 0:_vm._e(),_c('div',{staticClass:\"form-body\"},[(_vm.isCurrentUser && _vm.isUserSignatureEnabled)?_c('button',{staticClass:\"update-sign btn-default\",on:{\"click\":function($event){_vm.showSignPad=true}}},[_vm._v(\"Update My Signature\")]):_vm._e(),_c('AppForm',{attrs:{\"structures\":_vm.userStructure,\"model\":_vm.user}})],1),_c('div',{staticClass:\"title\"},[_vm._v(\"System Details\")]),_c('div',{staticClass:\"form-body\"},[_c('AppForm',{attrs:{\"structures\":_vm.systemStructure,\"model\":_vm.userSystem}})],1),_c('div',{staticClass:\"title\"},[_vm._v(\"Product Principal\")]),_c('AppDatatable',{attrs:{\"loading\":_vm.loading,\"columns\":_vm.productPrincipalColumns,\"data\":_vm.productPrincipalRows,\"sort\":{},\"show\":true},on:{\"rowClickCustom\":_vm.rowClick}}),_c('div',{staticClass:\"title\"},[_vm._v(\"User Groups\")]),_c('AppDatatable',{attrs:{\"loading\":_vm.loading,\"columns\":_vm.userGroupsColumns,\"data\":_vm.userGroupsRows,\"sort\":{},\"show\":true}}),(_vm.isModalVisible)?_c('AppDialog',{on:{\"close\":function($event){_vm.isModalVisible = false}}},[_c('template',{slot:\"header\"},[_vm._v(\"Add/ Edit Advisor Code\")]),_c('div',{attrs:{\"slot\":\"body\"},slot:\"body\"},[_c('AppForm',{attrs:{\"structures\":_vm.productPrincipalStructure,\"model\":_vm.productPrincipal}})],1),_c('template',{slot:\"footer\"},[_c('button',{staticClass:\"btn-default\",on:{\"click\":_vm.saveAdviserCode}},[_vm._v(\"Save\")])])],2):_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/* eslint-disable @typescript-eslint/camelcase */\nimport { Component, Vue } from 'vue-property-decorator'\nimport AppDatatable from '@core/components/AppDatatable.vue'\nimport TheUserNavi from '@core/components/TheUserNavi.vue'\nimport API from '@core/services/API'\nimport { inject } from 'inversify-props'\nimport AppForm from '@core/components/AppForm.vue'\nimport AppRadioSelection from '@core/components/AppRadioSelection.vue'\nimport AppSignatureBox from '@core/components/AppSignatureBox.vue'\nimport { FormStructure } from '@master/model/structure/FormStructure'\nimport { namespace } from 'vuex-class'\nimport { PrincipalMetaList } from '@core/model/common/PrincipalMetaList'\nimport { PrincipalMeta } from '@core/model/common/PrincipalMeta'\nimport { UserMeta } from '@core/model/common/UserMeta'\nimport { SharedVariable } from '@core/model/SharedVariable'\nimport { IProjectSettings } from '@master/config/IProjectSettings'\nimport { AccountStructureMemberService } from '@core/pages/userProfile/api'\nimport { UserAdviserDetailsMeta } from '@core/pages/userProfile/sections/user-adviser-details-components/model/UserAdviserDetailsMeta'\nimport AppDialog from '@core/components/AppDialog.vue'\nimport { YesNoOptions } from '@master/model/options/DefaultOptions'\nimport { AdviserMonitoringOptions } from '@master/model/options/AdviserMonitoringOptions'\nimport { SystemRoleOptions } from '@master/model/options/SystemRoleOptions'\nimport { MonitoringStatusTypeOptions } from '@master/model/options/MonitoringStatusTypeOptions'\nimport { PicodedAccount } from '@core/pages/account/model/PicodedAccountDTO'\nimport { isEmpty } from 'lodash/fp'\nimport { IDDocOptions } from '@master/model/options/IDDocTypeOptions'\n\nconst userStore = namespace('UserStore')\n\n@Component({\n components: {\n AppForm,\n AppRadioSelection,\n AppSignatureBox,\n AppDatatable,\n TheUserNavi,\n AppDialog\n }\n})\nexport default class UserProfileSummary extends Vue {\n @inject()\n private projectSettings: IProjectSettings\n\n @inject()\n private $api: API\n\n @inject()\n private sharedVariable: SharedVariable\n\n @userStore.State\n private loading: boolean\n\n @userStore.State\n private user: UserMeta\n\n @userStore.State\n userSystem: PicodedAccount\n\n @userStore.State\n originalUserName: string\n\n @userStore.State\n private userAdviserDetails: UserAdviserDetailsMeta\n\n @userStore.State\n private productPrincipals: PrincipalMetaList\n\n @userStore.Action\n private saveUser: () => Promise\n\n @userStore.Action\n private changeUserName: () => Promise\n\n @userStore.Action\n private savePassword: () => Promise\n\n @userStore.Action\n private fetchPrincipalList: () => Promise\n\n @userStore.Action\n private saveProductPrincipal: (principal: PrincipalMeta) => Promise\n\n private isModalVisible = false;\n private showSignPad = false;\n\n private productPrincipal: PrincipalMeta = new PrincipalMeta()\n\n private productPrincipalColumns: Array<{ label: string; field: keyof PrincipalMeta }> = [\n { label: 'Company Name', field: 'companyDetailsName' },\n { label: 'Company Code', field: 'companyDetailsCode' },\n { label: 'Representative Code', field: 'adviserCode' }\n ];\n\n private userGroupsColumns: Array = [\n { label: 'Group Name', field: 'names' },\n { label: 'Group Role', field: 'role' }\n ];\n\n private errors = [];\n\n private representativeBranch = ''\n\n get userOid (): string {\n return this.$route.params.userOid as string || this.$store.getters.currentUser.accountID\n }\n\n get isUserSignatureEnabled () {\n return this.sharedVariable.sysInfo?.user_signature\n }\n\n get uiService () {\n return this.sharedVariable.uiService\n }\n\n get isCurrentUser () {\n return this.$store.getters.currentUser._oid === this.$route.params.userOid\n }\n\n get isSuperUser () {\n return this.$store.getters.currentUser.isSuperUser\n }\n\n get productPrincipalRows () {\n return this.productPrincipals.getFullList().map(e => ({ ...e, emit: true }))\n }\n\n // isLockedField (key: string): boolean {\n // const listOfLockedFields = this.userAdviserDetails.myinfoLockedFieldsClient.map(e => camelCase(e))\n // return listOfLockedFields.includes(key)\n // }\n\n get userStructure (): FormStructure {\n return [\n {\n label: 'Full Name (as per NRIC)',\n key: 'fullname',\n disabled: !this.isSuperUser // || this.isLockedField('fullname')\n },\n {\n label: 'Preferred Name',\n key: 'preferredName',\n disabled: !this.isSuperUser // || this.isLockedField('fullname')\n },\n {\n label: 'Corporate Email',\n key: 'email',\n disabled: !this.isSuperUser // || this.isLockedField('email')\n },\n {\n label: 'Mobile No.',\n key: 'mobile',\n disabled: !this.isSuperUser // || this.isLockedField('mobile')\n },\n {\n label: 'Company Code',\n key: 'companyCode',\n disabled: !this.isSuperUser\n },\n {\n label: 'RNF Number',\n key: 'masRepno',\n disabled: !this.isSuperUser\n },\n {\n label: 'Representative Branch',\n model: {\n get: () => {\n if (this.projectSettings.useNewCommissionModule) {\n return this.representativeBranch\n }\n\n return this.user.adviserBranch\n },\n set: (val) => {\n this.user.adviserBranch = val\n }\n },\n disabled: !this.isSuperUser || this.projectSettings.useNewCommissionModule\n },\n {\n label: 'ID Doc. Type',\n key: 'idDocType',\n options: IDDocOptions,\n disabled: !this.isSuperUser\n },\n {\n label: 'ID No.',\n key: 'idNumber',\n disabled: !this.isSuperUser // || this.isLockedField('idNumber')\n },\n {\n label: 'With Experience',\n key: 'withExp',\n buttonName: 'withExp',\n type: 'radio',\n options: YesNoOptions,\n disabled: !this.isSuperUser\n },\n {\n label: 'Product Type',\n key: 'adviserProducts',\n classes: ['colspan'],\n type: 'checkbox',\n options: [\n { label: 'Life Insurance', value: 'lifeinsurance' },\n { label: 'Investment-Linked Plans', value: 'investmentlinkedplans' },\n {\n label: 'Collective Investment Schemes (i.e. Unit Trust)',\n value: 'unittrusts'\n },\n { label: 'Accident & Health Plans', value: 'accidentandhealthplans' },\n { label: 'General Insurance', value: 'generalinsurance' },\n { label: 'Securities', value: 'securities' },\n {\n label: 'Others',\n value: 'others',\n others: {\n key: 'otherAdviserProducts',\n disabled: this.user.adviserProducts && !this.user.adviserProducts.includes('others')\n }\n }\n ],\n disabled: !this.isSuperUser\n }\n ]\n }\n\n get systemStructure (): FormStructure {\n return [\n {\n label: 'Username',\n key: 'username',\n disabled: !this.isSuperUser,\n show: this.isSuperUser\n },\n {\n label: 'System Role',\n key: 'systemrole',\n options: SystemRoleOptions,\n disabled: !this.isSuperUser\n },\n {\n label: 'Account Status',\n key: 'status',\n options: [\n { label: '', value: '' },\n { label: 'Active', value: 'active' },\n { label: 'Inactive', value: 'inactive' }\n ],\n disabled: !this.isSuperUser\n },\n {\n label: 'Old Password',\n key: 'oldPassword',\n type: 'password'\n },\n {\n label: 'New Password',\n key: 'newPassword',\n type: 'password',\n tooltip: {\n placement: 'right',\n class: 'item tooltip',\n effect: 'light',\n style: 'font-size: 18px; margin-left: 0.25rem;',\n content: `Criteria for accepted password:
\n At least 8 characters
\n 1 special character
\n 1 number
\n 1 uppercase
\n 1 lowercase
`\n },\n icon: {\n class: 'el-icon-info'\n }\n },\n {\n label: 'Confirm New Password',\n key: 'confirmPassword',\n type: 'password'\n }\n ]\n }\n\n get productPrincipalStructure (): FormStructure {\n return [\n {\n label: 'Company Name',\n key: 'companyDetailsName',\n disabled: true\n },\n {\n label: 'Company Code',\n key: 'companyDetailsCode',\n disabled: true\n },\n {\n label: 'Representative Code',\n key: 'adviserCode'\n }\n ]\n }\n\n async saveAdviserCode () {\n await this.saveProductPrincipal(this.productPrincipal)\n this.isModalVisible = false\n }\n\n get userGroupsRows () {\n return this.user.groups.map((userGroup) => {\n return {\n accountId: userGroup.accountID,\n names: userGroup.names[0],\n role: userGroup.role,\n redirect: '/live/group-profile/' + userGroup.accountID\n }\n })\n }\n\n validatePassword (): void {\n this.errors = []\n if (\n !this.user.oldPassword &&\n this.user.newPassword &&\n this.user.systemrole !== 'ops-staff'\n ) {\n this.errors.push('Old Password cannot be blank')\n return\n }\n if (\n this.user.oldPassword &&\n this.user.newPassword &&\n !this.user.confirmPassword\n ) {\n this.errors.push('Confirm Password cannot be blank')\n return\n }\n if (\n this.user.oldPassword &&\n this.user.confirmPassword !== this.user.newPassword\n ) {\n this.errors.push('Both passwords do not match')\n }\n }\n\n rowClick (row: PrincipalMeta): void {\n if (this.isSuperUser) {\n this.isModalVisible = true\n this.productPrincipal = row\n }\n }\n\n saveSignature (sign) {\n this.$api.signature.upsert({\n signature: sign\n }).then(res => {\n if (res.error) return alert(res.error)\n this.showSignPad = false\n }).catch(err =>\n alert(err)\n )\n }\n\n async onSubmit () {\n this.validatePassword()\n if (!this.errors.length) {\n if (!this.userSystem.newPassword) {\n this.saveUser()\n // Change username\n if (!isEmpty(this.userSystem.username) && this.userSystem.username !== this.originalUserName) {\n try {\n await this.changeUserName()\n } catch (err) {\n this.uiService.alert.show({\n type: 'error',\n message: err.message\n })\n }\n }\n\n return\n }\n this.savePassword()\n }\n }\n\n async fetchRepresentativeBranch () {\n const res = await AccountStructureMemberService.findMemberInStructure(this.userOid)\n this.representativeBranch = res.length > 0 ? res[res.length - 1] : ''\n }\n\n async mounted () {\n await this.fetchPrincipalList()\n\n if (this.projectSettings.useNewCommissionModule) {\n await this.fetchRepresentativeBranch()\n }\n }\n\n beforeDestroy () {\n this.$parent.$off('save', this.onSubmit)\n }\n\n async created () {\n this.$parent.$on('save', this.onSubmit)\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserProfileSummary.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserProfileSummary.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./UserProfileSummary.vue?vue&type=template&id=6aa0beca&scoped=true&\"\nimport script from \"./UserProfileSummary.vue?vue&type=script&lang=ts&\"\nexport * from \"./UserProfileSummary.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./UserProfileSummary.vue?vue&type=style&index=0&id=6aa0beca&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6aa0beca\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"signaturePad\",class:{ show : _vm.showSignPad },on:{\"click\":function($event){return _vm.$emit('hide')}}},[_c('div',{staticClass:\"signatureBox\",class:{ show : _vm.showSignPad },on:{\"click\":function($event){$event.stopPropagation();}}},[_c('div',{staticClass:\"signatureModal signatureHeader\"},[_vm._t(\"header\",function(){return [_c('span',[_vm._v(\"Signature\")])]}),_c('button',{staticClass:\"btn-close\",on:{\"click\":function($event){return _vm.$emit('hide')}}},[_c('i',{staticClass:\"fas fa-times\"})])],2),_c('div',{staticClass:\"signatureModal signatureBody\"},[_vm._t(\"backdrop\"),_vm._m(0),_c('span',[_vm._v(\"Please Sign Within the Box\")])],2),_c('div',{staticClass:\"signatureModal signatureFooter\"},[_c('button',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.footerBtn.hasOwnProperty('clear')),expression:\"footerBtn.hasOwnProperty('clear')\"}],staticClass:\"signatureBtn clear\",on:{\"click\":_vm.clearSignature}},[_vm._v(\"Clear\")]),_c('button',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.footerBtn.hasOwnProperty('cancel')),expression:\"footerBtn.hasOwnProperty('cancel')\"}],staticClass:\"signatureBtn cancel\",on:{\"click\":function($event){return _vm.$emit('hide')}}},[_vm._v(\"Cancel\")]),_c('button',{staticClass:\"signatureBtn save\",on:{\"click\":_vm.triggerSave}},[_vm._v(\"Save\")])])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"signaturePadLine\"},[_c('canvas',{attrs:{\"width\":\"398\",\"height\":\"198\"}})])}]\n\nexport { render, staticRenderFns }","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport type { UpdateSignatureDto } from '../models/UpdateSignatureDto';\nimport { request as __request } from '@openapi/request';\n\nexport class SignaturesService {\n\n /**\n * @param requestBody\n * @returns any\n * @throws ApiError\n */\n public static async upsert(\n requestBody: UpdateSignatureDto,\n ): Promise {\n const result = await __request({\n method: 'POST',\n path: `/live/api/signatures/upsert`,\n body: requestBody,\n });\n return result.body;\n }\n\n /**\n * @returns any\n * @throws ApiError\n */\n public static async findOne(): Promise {\n const result = await __request({\n method: 'GET',\n path: `/live/api/signatures/retrieve`,\n });\n return result.body;\n }\n\n}","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Prop, Vue, Watch } from 'vue-property-decorator'\nimport SignaturePad from '@core/tools/CustomSignaturePad'\nimport { inject } from 'inversify-props'\nimport { UIService } from '@core/services/UIService'\nimport { SharedVariable } from '@core/model/SharedVariable'\nimport API from '@core/services/API'\n// @TODO: This import shouldnt be here but for the sake of time, i put here first\nimport { SignaturesService } from '@core/pages/signatures/api/services/SignaturesService'\n\n@Component({})\nexport default class AppSignatureBox extends Vue {\n @Prop({ default: {} }) readonly footerBtn!: object\n @Prop({ default: false }) readonly showSignPad!: boolean\n @Prop({ default: true }) readonly clearOnShow!: boolean\n @Prop({ default: true }) readonly fetchUserSignature!: boolean\n\n uiService: UIService\n\n @inject()\n private $api: API\n\n @inject()\n private sharedVariable: SharedVariable\n\n private signaturePad = null\n private userSignature = null\n\n clearSignature () {\n if (this.signaturePad) {\n this.userSignature = null\n this.signaturePad.clear()\n }\n }\n\n async triggerSave () {\n const noSigned = this.signaturePad.isEmpty()\n if (noSigned) {\n await this.uiService.alert.show({\n type: 'warning',\n message: 'No signature is detected! Please try again!'\n })\n return\n // NOTE : do not allow overwrite signature with blank canvas as this causes complication in checking whether signature is done\n // if (confirm('No signature is detected!\\nClick CANCEL to try again\\nClick OK to save ( remove existing signature if any ).')) {\n // this.saveSignature(noSigned)\n // }\n }\n if (this.userSignature) return this.$emit('save', this.userSignature)\n const signatureData = this.signaturePad.toDataURL('image/svg+xml')\n this.$emit('save', signatureData) // return the signature data for parent to handle\n }\n\n mounted () {\n // take injected UIService and set it to local\n this.uiService = this.sharedVariable.uiService\n\n const canvas = document.querySelector('.signaturePadLine canvas') as HTMLCanvasElement\n if (canvas) {\n this.signaturePad = new SignaturePad(canvas, {\n maxWidth: 3\n })\n // for automated testing (sign programatically)\n canvas.addEventListener('fromDataURL', (ev) => {\n const signature = (ev as CustomEvent).detail\n if (signature) this.setSignature(signature)\n })\n }\n }\n\n @Watch('showSignPad')\n async prepSignPad (show) {\n if (show) {\n this.clearSignature()\n if (this.fetchUserSignature) await this.retrieveUserSignature()\n }\n }\n\n setSignature (signData) {\n this.userSignature = signData\n this.signaturePad.fromDataURL(signData)\n }\n\n async retrieveUserSignature () {\n console.log(this.sharedVariable?.sysInfo?.user_signature)\n if (!this.sharedVariable?.sysInfo?.user_signature) return\n const signature = await SignaturesService.findOne()\n this.setSignature(signature)\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppSignatureBox.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppSignatureBox.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AppSignatureBox.vue?vue&type=template&id=fff0d5dc&\"\nimport script from \"./AppSignatureBox.vue?vue&type=script&lang=ts&\"\nexport * from \"./AppSignatureBox.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AppSignatureBox.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","'use strict';\n\n// there's 3 implementations written in increasing order of efficiency\n\n// 1 - no Set type is defined\nfunction uniqNoSet(arr) {\n\tvar ret = [];\n\n\tfor (var i = 0; i < arr.length; i++) {\n\t\tif (ret.indexOf(arr[i]) === -1) {\n\t\t\tret.push(arr[i]);\n\t\t}\n\t}\n\n\treturn ret;\n}\n\n// 2 - a simple Set type is defined\nfunction uniqSet(arr) {\n\tvar seen = new Set();\n\treturn arr.filter(function (el) {\n\t\tif (!seen.has(el)) {\n\t\t\tseen.add(el);\n\t\t\treturn true;\n\t\t}\n\t});\n}\n\n// 3 - a standard Set type is defined and it has a forEach method\nfunction uniqSetWithForEach(arr) {\n\tvar ret = [];\n\n\t(new Set(arr)).forEach(function (el) {\n\t\tret.push(el);\n\t});\n\n\treturn ret;\n}\n\n// V8 currently has a broken implementation\n// https://github.com/joyent/node/issues/8449\nfunction doesForEachActuallyWork() {\n\tvar ret = false;\n\n\t(new Set([true])).forEach(function (el) {\n\t\tret = el;\n\t});\n\n\treturn ret === true;\n}\n\nif ('Set' in global) {\n\tif (typeof Set.prototype.forEach === 'function' && doesForEachActuallyWork()) {\n\t\tmodule.exports = uniqSetWithForEach;\n\t} else {\n\t\tmodule.exports = uniqSet;\n\t}\n} else {\n\tmodule.exports = uniqNoSet;\n}\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDatatable.vue?vue&type=style&index=0&id=4b557606&lang=scss&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"column-group\",style:(_vm.gridStyle),attrs:{\"id\":\"app-form\"}},[_vm._l((_vm.structuresDetails),function(structure){return [(_vm.shouldShow(structure.show))?_c('div',{key:structure.key,staticClass:\"input-group-with-theme\",class:[{ 'input-disabled': _vm.shouldDisabled(structure.disabled)}, _vm.getCustomClass(structure)],attrs:{\"has-msg\":structure.hasErrors,\"focusing\":_vm.focusId == _vm.getId(structure.key),\"id\":(\"box-\" + (_vm.getId(structure.key)))},on:{\"click\":function($event){return _vm.focusInner(structure)}}},[[(structure.labelModel)?_c('input',{staticClass:\"label\",attrs:{\"type\":\"text\",\"placeholder\":structure.label,\"data-test\":(\"label-input:\" + (_vm.getTestId(structure.key)))},domProps:{\"value\":_vm.labelModelValue(structure.labelModel.get())},on:{\"input\":function($event){return structure.labelModel.set($event.target.value)}}}):(structure.labelKey)?_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model[structure.labelKey]),expression:\"model[structure.labelKey]\"}],staticClass:\"label\",attrs:{\"type\":\"text\",\"data-test\":(\"label-input:\" + (_vm.getTestId(structure.key)))},domProps:{\"value\":(_vm.model[structure.labelKey])},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.model, structure.labelKey, $event.target.value)}}}):_vm._e(),(structure.labelModel || structure.labelKey)?_c('i',{staticClass:\"fa fa-pencil-alt right-sided\"}):(structure.type === 'single-checkbox')?_c('span'):_c('label',{attrs:{\"for\":_vm.getId(structure.key),\"id\":_vm.getId(structure.key) + '_label'},domProps:{\"innerHTML\":_vm._s(structure.label)}}),(structure.tooltip)?_c('AppTooltip',{attrs:{\"tooltipConfig\":structure.tooltip}}):_vm._e(),(_vm.isModernTheme)?_vm._l((structure.errors),function(ref,eidx){\nvar msg = ref.msg;\nreturn _c('div',{key:((structure.key) + \"-error-\" + eidx),staticClass:\"form-msg\",class:{\n full:\n eidx === 0 || _vm.fullErr === ((structure.key) + \"-error-\" + eidx),\n },on:{\"click\":function($event){_vm.fullErr = (structure.key) + \"-error-\" + eidx}}},[_c('el-tooltip',[_c('span',{staticClass:\"el-icon-warning\"}),_c('span',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_vm._v(_vm._s(msg))])])],1)}):_vm._e()],(structure.options && structure.type === 'smart')?_c('AppSmartSelect',{attrs:{\"options\":structure.options,\"value\":_vm.model[structure.key],\"multiple\":structure.multiple,\"cols\":structure.optionCols,\"multiLimit\":structure.multiLimit,\"buttonName\":structure.buttonName,\"cycleMode\":structure.cycleMode,\"displayDirection\":structure.displayDirection,\"disabled\":_vm.shouldDisabled(structure.disabled)},on:{\"input\":function($event){return _vm.setValue(structure, $event)},\"blur\":function($event){return _vm.blurHandler()}}}):(structure.type === 'single-checkbox')?_c('el-checkbox',{attrs:{\"value\":_vm.getValue(structure),\"disabled\":_vm.shouldDisabled(structure.disabled)},on:{\"change\":function($event){return _vm.setValue(structure, $event)}}},[_vm._v(\" \"+_vm._s(structure.label)+\" \")]):(structure.options && structure.type === 'checkbox')?_c('AppCheckboxGroup',{attrs:{\"structure\":structure,\"model\":_vm.model,\"column\":structure.checkboxColumnNo,\"compact\":structure.compact},on:{\"change\":function($event){return _vm.setValue(structure, $event)},\"blur\":function($event){return _vm.blurHandler()}}}):(structure.options && structure.type === 'radio')?_c('AppRadioSelection',{attrs:{\"options\":structure.options,\"value\":_vm.model[structure.key],\"buttonName\":structure.buttonName,\"displayDirection\":structure.displayDirection,\"disabled\":_vm.shouldDisabled(structure.disabled)},on:{\"input\":function($event){return _vm.setValue(structure, $event)},\"blur\":function($event){return _vm.blurHandler()}}}):(structure.type === 'multi')?_c('el-select',{staticClass:\"form-multi-select\",attrs:{\"value\":_vm.getValue(structure),\"disabled\":_vm.shouldDisabled(structure.disabled),\"multiple\":\"\",\"collapse-tags\":\"\",\"size\":'small',\"popper-class\":'wen-popper-class'},on:{\"change\":function($event){return _vm.setValue(structure, $event)}}},_vm._l((structure.options),function(option,index){return _c('el-option',{key:index,attrs:{\"value\":option.value,\"label\":option.label}})}),1):(structure.options)?_c('select',{class:{ 'myinfo-disabled': structure.isMyInfo },attrs:{\"id\":_vm.getId(structure.key),\"data-test\":_vm.getTestId(structure.key),\"aria-labelledby\":_vm.getLabelId(structure.key),\"disabled\":_vm.shouldDisabled(structure.disabled)},domProps:{\"value\":_vm.getValue(structure)},on:{\"input\":function($event){return _vm.setSelectValue($event.target, structure)}}},_vm._l((structure.options),function(option,index){return _c('option',{key:index,domProps:{\"value\":option.value}},[_vm._v(\" \"+_vm._s(option.label)+\" \")])}),0):(structure.type === 'decimal-number')?[_c('AppDecimalNumber',{class:{ 'myinfo-disabled': structure.isMyInfo },attrs:{\"decimal\":structure.decimal,\"inputValue\":_vm.getValue(structure),\"disabled\":_vm.shouldDisabled(structure.disabled)},on:{\"input\":function($event){return _vm.setValue(structure, $event)}}})]:(structure.type === 'number' || structure.type === 'time' || structure.type === 'password')?_c('input',{class:{ 'myinfo-disabled': structure.isMyInfo },attrs:{\"id\":_vm.getId(structure.key),\"data-test\":_vm.getTestId(structure.key),\"aria-labelledby\":_vm.getLabelId(structure.key),\"type\":structure.type,\"disabled\":_vm.shouldDisabled(structure.disabled),\"maxlength\":structure.maxChar},domProps:{\"value\":_vm.getValue(structure)},on:{\"input\":function($event){return _vm.setValue(structure, $event.target.value)},\"blur\":function($event){return _vm.blurHandler()}}}):(structure.type === 'currency')?_c('currency-input',{class:{ 'myinfo-disabled': structure.isMyInfo },attrs:{\"id\":_vm.getId(structure.key),\"data-test\":_vm.getTestId(structure.key),\"currency\":structure.currencyFormat,\"aria-labelledby\":_vm.getLabelId(structure.key),\"value\":_vm.getValue(structure),\"disabled\":_vm.shouldDisabled(structure.disabled),\"precision\":structure.precision},on:{\"input\":function($event){return _vm.setValue(structure, $event)},\"blur\":function($event){return _vm.blurHandler()}}}):(structure.type === 'date' || structure.type === 'month')?_c('AppDateInput',{class:{ 'myinfo-disabled': structure.isMyInfo },attrs:{\"value\":_vm.getValue(structure),\"id\":_vm.getId(structure.key),\"input-type\":structure.type,\"data-test\":_vm.getTestId(structure.key),\"aria-label\":structure.label,\"disabled\":_vm.shouldDisabled(structure.disabled),\"futureDate\":structure.futureDate,\"disabledFutureDate\":structure.disabledFutureDate},on:{\"input\":function($event){return _vm.setValue(structure, $event)},\"blur\":function($event){return _vm.blurHandler()}}}):(structure.type === 'textarea')?_c('textarea',{class:{ 'myinfo-disabled': structure.isMyInfo },attrs:{\"id\":_vm.getId(structure.key),\"data-test\":_vm.getTestId(structure.key),\"aria-labelledby\":_vm.getLabelId(structure.key),\"disabled\":_vm.shouldDisabled(structure.disabled),\"maxlength\":structure.maxChar,\"rows\":structure.rows || 10},domProps:{\"value\":_vm.getValue(structure)},on:{\"input\":function($event){return _vm.setValue(structure, $event.target.value)},\"blur\":function($event){return _vm.blurHandler()}}}):(structure.type === 'table')?_c('AppFormTable',{staticClass:\"inner-table\",attrs:{\"innerTable\":true,\"vertical\":structure.isVertical,\"maxSize\":structure.maxSize,\"fields\":structure.columns,\"data\":_vm.getValueForTable(structure)},on:{\"add\":structure.add,\"remove\":structure.remove}}):(structure.type==='na-currency')?[_c('AppCurrencyNA',{attrs:{\"inputValue\":_vm.getValue(structure),\"disabled\":_vm.shouldDisabled(structure.disabled),\"maxlength\":structure.maxLength},on:{\"input\":function($event){return _vm.setValue(structure, $event)}}})]:_c('input',{class:{ 'myinfo-disabled': structure.isMyInfo },attrs:{\"id\":_vm.getId(structure.key),\"data-test\":_vm.getTestId(structure.key),\"aria-labelledby\":_vm.getLabelId(structure.key),\"type\":\"text\",\"disabled\":_vm.shouldDisabled(structure.disabled),\"maxlength\":structure.maxChar},domProps:{\"value\":_vm.getValue(structure)},on:{\"input\":function($event){return _vm.setValue(structure, $event.target.value)},\"blur\":function($event){return _vm.blurHandler(structure, $event.target.value)}}}),(structure.isMyInfo)?_c('img',{staticClass:\"input-hint logo\",attrs:{\"src\":require(\"@core/assets/myinfo-icon.svg\")}}):_vm._e(),(structure.counterMsg && _vm.isModernTheme)?_c('div',{staticClass:\"char-counter\"},[_vm._v(\" \"+_vm._s(structure.counterMsg)+\" \")]):_vm._e()],2):_vm._e()]})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.inputModal),expression:\"inputModal\"}],attrs:{\"maxlength\":_vm.maxlength,\"disabled\":_vm.disabled},domProps:{\"value\":(_vm.inputModal)},on:{\"keypress\":function($event){return _vm.numberAndNAOnly($event)},\"blur\":function($event){return _vm.onBlur()},\"focus\":function($event){return _vm.onFocus()},\"select\":function($event){return _vm.onSelect($event)},\"input\":function($event){if($event.target.composing){ return; }_vm.inputModal=$event.target.value}}}),(!_vm.disabled)?_c('div',{staticClass:\"char-counter\"},[_vm._v(\" \"+_vm._s(_vm.counterMsg)+\" \")]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Prop, Vue, Watch } from 'vue-property-decorator'\nimport { IProjectInfo } from '@master/config/IProjectInfo'\nimport { inject } from 'inversify-props'\n\n@Component\nexport default class AppCurrencyNA extends Vue {\n @Prop() inputValue\n @Prop({ default: true }) useCurrency!: boolean\n @Prop({ default: 10 }) maxlength?: number\n @Prop({ default: false }) disabled: boolean\n\n @inject()\n private projectInfo: IProjectInfo\n\n inputModal = ''\n textIsSelected = false\n\n get counterMsg () {\n if (typeof this.maxlength === 'undefined') return\n const number = this.convertCurrencyToNumber(this.inputModal)\n const remainingChar = this.maxlength - (number.toString().length || 0)\n return remainingChar > 0 ? `${remainingChar} letter(s) remaining` : 'Max character limit reached'\n }\n\n numberAndNAOnly (evt) {\n evt = (evt) || window.event\n const charCode = (evt.which) ? evt.which : evt.keyCode\n\n const currentValue = evt.target.value\n if (this.textIsSelected) {\n if (!this.isAlphabetN(charCode) && this.isNonNumber(charCode)) {\n evt.preventDefault()\n } else {\n this.textIsSelected = false\n }\n return true\n }\n\n // if current value is 'NA', cannot key in other character\n if (currentValue.toUpperCase() === 'NA') {\n evt.preventDefault()\n }\n\n // if current value is N, the followed char must be A\n if (this.isAlphabetN(currentValue.charCodeAt(0))) {\n if (this.isAlphabetA(charCode)) {\n return true\n }\n evt.preventDefault() // only can accept A\n }\n\n // if there is empty value, it can either key in char N or number only\n if (!currentValue) {\n if (this.isAlphabetN(charCode)) {\n return true\n }\n }\n\n // cannot key in non number value\n if (this.isNonNumber(charCode)) {\n evt.preventDefault()\n } else {\n return true\n }\n }\n\n isAlphabetN (charCode) {\n return charCode === 78 || charCode === 110\n }\n\n isAlphabetA (charCode) {\n return charCode === 65 || charCode === 97\n }\n\n isNonNumber (charCode) {\n return charCode > 31 && (charCode < 48 || charCode > 57)\n }\n\n onBlur () {\n if (!this.inputModal && this.inputModal !== '0') {\n this.inputModal = this.formatValue('')\n this.$emit('input', '')\n return\n }\n\n // format na to NA to display\n if (this.inputModal.toUpperCase() === 'NA') {\n this.inputModal = 'NA'\n this.$emit('input', 'NA')\n return\n }\n\n // in case only key in 'n' and on blur, format it to NA\n if (isNaN(Number(this.inputModal))) {\n this.inputModal = 'NA'\n this.$emit('input', 'NA')\n return\n }\n\n const number = this.convertCurrencyToNumber(this.inputModal)\n this.inputModal = this.formatValue(number)\n this.$emit('input', Number(number))\n }\n\n onFocus () {\n this.inputModal = this.convertCurrencyToNumber(this.inputModal)\n }\n\n onSelect () {\n this.textIsSelected = true\n }\n\n formatValue (source) {\n if (typeof source === 'string') {\n if (source.toUpperCase() === 'NA' || source === '') {\n return source\n }\n source = Number(source.replace('$', '').replace(',', ''))\n } else if (source === undefined || source == null) {\n source = ''\n }\n return this.useCurrency ? this.currencyPrefix + source?.toLocaleString('en-US') : source?.toLocaleString('en-US')\n }\n\n convertCurrencyToNumber (currency) {\n return currency.replaceAll(this.currencyPrefix, '').replaceAll(',', '')\n }\n\n get currencyPrefix () {\n return this.projectInfo.currency ?? 'SGD$'\n }\n\n @Watch('inputValue')\n inputValueOnChange () {\n if (this.inputValue || this.inputValue === '0' || Number(this.inputValue) === 0) {\n this.inputModal = this.formatValue(this.inputValue)\n } else {\n this.inputModal = this.formatValue('')\n }\n }\n\n mounted () {\n this.inputModal = this.formatValue(this.inputValue)\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppCurrencyNA.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppCurrencyNA.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AppCurrencyNA.vue?vue&type=template&id=423a3b72&scoped=true&\"\nimport script from \"./AppCurrencyNA.vue?vue&type=script&lang=ts&\"\nexport * from \"./AppCurrencyNA.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AppCurrencyNA.vue?vue&type=style&index=0&id=423a3b72&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"423a3b72\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Base } from '@master/model/Base'\nimport { FormStructure, Input, TableSetup } from '@master/model/structure/FormStructure'\nimport { Component, Prop, Vue, Watch } from 'vue-property-decorator'\nimport AppCheckboxGroup from '@core/components/AppCheckboxGroup.vue'\nimport AppFormTable from '@core/components/AppFormTable.vue'\nimport AppRadioSelection from '@core/components/AppRadioSelection.vue'\nimport AppSmartSelect from '@core/components/AppSmartSelect.vue'\nimport { inject } from 'inversify-props'\nimport { IDateService } from '@master/services/IDateService'\nimport AppDateInput from './AppDateInput.vue'\nimport { getMaxChar } from '@master/annotation/MaxChar'\nimport { IProjectSettings } from '@master/config/IProjectSettings'\nimport { isUndefined } from 'lodash/fp'\nimport randomstring from 'randomstring'\nimport AppCurrencyNA from './AppCurrencyNA.vue'\nimport AppDecimalNumber from './AppDecimalNumber.vue'\nimport AppTooltip from './AppTooltip.vue'\n\n@Component({\n components: {\n AppSmartSelect,\n AppCheckboxGroup,\n AppRadioSelection,\n AppDateInput,\n AppFormTable,\n AppCurrencyNA,\n AppDecimalNumber,\n AppTooltip\n }\n})\n\nexport default class AppForm extends Vue {\n @Prop() readonly structures!: FormStructure[];\n @Prop() readonly model!: T;\n @Prop({ default: 1 }) readonly columns: number;\n @Prop() readonly errors?: { key: string; msg: string }[];\n @Prop({ default: () => { return Date.now() } })\n readonly uniqueID: string;\n\n @Prop({ default: false }) readonly readOnly: boolean;\n\n @inject()\n private dateService: IDateService;\n\n @inject()\n private projectSettings: IProjectSettings;\n\n private minimal = true;\n // private renderCnt = 0;\n private focusId = null;\n private fullErr = null;\n\n get structuresDetails () {\n return this.structures.map((structure) => {\n const key = (structure as any).key\n const errors = this.errors?.filter((err) => err.key === key) || []\n const maxChar = getMaxChar(this.model, key)\n const charLeft = this.getCharLeft(key)\n const counterMsg = this.getCounterMsg(maxChar, charLeft)\n return {\n errors,\n hasErrors: errors?.length > 0,\n maxChar,\n counterMsg,\n ...structure\n }\n })\n }\n\n get gridStyle () {\n return {\n gridTemplateColumns: `repeat(${this.columns}, minmax(0, 1fr))`\n }\n }\n\n get isModernTheme () {\n return this.projectSettings.theme === 'Modern'\n }\n\n getCounterMsg (maxChar, charLeft) {\n if (!this.isModernTheme) return '' // counterMsg only used in Modern Theme\n return maxChar ? charLeft > 0 ? `${charLeft} letters remaining` : 'Max character limit reached' : ''\n }\n\n shouldDisabled (condition: boolean | Function = false) {\n if (this.readOnly) return true\n if (condition === undefined) {\n return false\n } else if (condition instanceof Function) {\n return condition(this.model)\n } else {\n return condition\n }\n }\n\n shouldShow (condition: boolean | Function = true) {\n if (condition === undefined) {\n return false\n } else if (condition instanceof Function) {\n return condition(this.model)\n } else {\n return condition\n }\n }\n\n getValue (input: Input) {\n if (input.type === 'currency') {\n const oriValue = this.model[input.key]\n if (typeof oriValue === 'string' || oriValue instanceof String) {\n return Number(this.model[input.key])\n }\n }\n if (input.key) {\n return this.model[input.key]\n } else if (input.model) {\n return input.model.get()\n } else {\n throw new Error(\n `Invalid config for label ${input.label}: key or model is required`\n )\n }\n }\n\n /**\n * Return null as the label if it is empty so\n * that the placeholder will appear\n */\n labelModelValue (labelValue: string) {\n return !labelValue ? null : labelValue\n }\n\n getValueForTable (input: TableSetup) {\n if (input.key) {\n return this.model[input.key]\n } else if (input.data) {\n return input.data\n } else {\n throw new Error(\n `Invalid config for label ${input.label}: key or model is required`\n )\n }\n }\n\n // this is to resolve the issue of event.target.value is always passed as string, but our use cases might need number\n setSelectValue (event, structure) {\n const selectedOption = structure.options[event.selectedIndex]\n this.setValue(structure, selectedOption.value)\n }\n\n setValue (input: Input, _value: T[keyof T]) {\n const value: any = input.type === 'number' ? +_value || 0 : _value\n\n if (input.key) {\n if (input.onChange) {\n input.onChange(this.model[input.key], value)\n }\n // when only has getter (for currency input), sidestep the error\n try {\n this.model[input.key] = value\n } catch (ex) {}\n } else if (input.model) {\n if (input.onChange) {\n input.onChange(this.model[input.key], value)\n }\n return input.model.set(value)\n } else {\n throw new Error(`Invalid config for label ${input.label}: key or model is required`)\n }\n }\n\n getId (key: string) {\n if (this.model && 'snakeCaseKey' in this.model) {\n return `${this.uniqueID}_${this.model.snakeCaseKey(key)}`\n }\n\n if (isUndefined(key)) {\n key = randomstring.generate(6)\n }\n\n if (this.uniqueID) {\n return `${this.uniqueID}_${key}`\n }\n\n return `${key}`\n }\n\n getTestId (key: string) {\n if (this.model && 'snakeCaseKey' in this.model) {\n return `${this.model.snakeCaseKey(key)}`\n }\n return undefined\n }\n\n getLabelId (key: string) {\n return this.getId(key) + '_label'\n }\n\n arrangeCols () {\n const curAppForm = this.$el\n const hasOverflow = curAppForm.scrollWidth > curAppForm.clientWidth\n if (hasOverflow) this.minimal = true\n }\n\n blurHandler (input: Input, _value: T[keyof T]) {\n if (this.isModernTheme) {\n this.focusId = null\n }\n\n if (input && input?.onBlur) {\n input.onBlur(_value)\n }\n }\n\n // use to handle Modern theme\n focusInner (structure: any) {\n // this means label is also editable, thus do not auto focus input\n if (structure.labelModel || structure.labelKey || structure.model) return\n const eleId = this.getId(structure.key)\n this.focusId = eleId\n const ele = document.getElementById(eleId)\n if (ele) ele.focus()\n }\n\n getCharLeft (key: string) {\n const mc = getMaxChar(this.model, key)\n return mc ? mc - (this.model[key]?.length || 0) : mc\n }\n\n getCustomClass (structure) {\n return structure.classes ? [...structure.classes] : []\n }\n\n // @Watch('structures')\n // structuresUpdated () {\n // // this is to allow view to be updated when structures change\n // this.renderCnt++\n // }\n\n @Watch('structuresDetails', { deep: true })\n focusError (swe) {\n if (!this.isModernTheme) return // this is used for Modern Theme\n\n const first = swe.find((s) => 'msg' in s)\n if (!first) return\n const ele = document.getElementById(`box-${this.getId(first.key)}`)\n if (!ele) return\n ele.scrollIntoView({ behavior: 'smooth', block: 'end' })\n }\n\n updated () {\n this.arrangeCols()\n }\n\n mounted () {\n this.arrangeCols()\n window.addEventListener('resize', () => this.arrangeCols())\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppForm.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppForm.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AppForm.vue?vue&type=template&id=11928856&scoped=true&\"\nimport script from \"./AppForm.vue?vue&type=script&lang=ts&\"\nexport * from \"./AppForm.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AppForm.vue?vue&type=style&index=0&id=11928856&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"11928856\",\n null\n \n)\n\nexport default component.exports","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n\n var F = function F() {};\n\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}","// Interface for point data structure used e.g. in SignaturePad#fromData method\nexport interface BasicPoint {\n x: number;\n y: number;\n time: number;\n}\n\nexport class Point implements BasicPoint {\n public time: number;\n\n constructor(public x: number, public y: number, time?: number) {\n this.time = time || Date.now();\n }\n\n public distanceTo(start: BasicPoint): number {\n return Math.sqrt(\n Math.pow(this.x - start.x, 2) + Math.pow(this.y - start.y, 2),\n );\n }\n\n public equals(other: BasicPoint): boolean {\n return this.x === other.x && this.y === other.y && this.time === other.time;\n }\n\n public velocityFrom(start: BasicPoint): number {\n return this.time !== start.time\n ? this.distanceTo(start) / (this.time - start.time)\n : 0;\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n// Slightly simplified version of http://stackoverflow.com/a/27078401/815507\n\nexport function throttle(\n fn: (...args: any[]) => any,\n wait = 250,\n): (this: any, ...args: any[]) => any {\n let previous = 0;\n let timeout: number | null = null;\n let result: any;\n let storedContext: any;\n let storedArgs: any[];\n\n const later = (): void => {\n previous = Date.now();\n timeout = null;\n result = fn.apply(storedContext, storedArgs);\n\n if (!timeout) {\n storedContext = null;\n storedArgs = [];\n }\n };\n\n return function wrapper(this: any, ...args: any[]): any {\n const now = Date.now();\n const remaining = wait - (now - previous);\n\n storedContext = this;\n storedArgs = args;\n\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n\n previous = now;\n result = fn.apply(storedContext, storedArgs);\n\n if (!timeout) {\n storedContext = null;\n storedArgs = [];\n }\n } else if (!timeout) {\n timeout = window.setTimeout(later, remaining);\n }\n\n return result;\n };\n}\n","import { BasicPoint, Point } from './point';\n\nexport class Bezier {\n public static fromPoints(\n points: Point[],\n widths: { start: number; end: number },\n ): Bezier {\n const c2 = this.calculateControlPoints(points[0], points[1], points[2]).c2;\n const c3 = this.calculateControlPoints(points[1], points[2], points[3]).c1;\n\n return new Bezier(points[1], c2, c3, points[2], widths.start, widths.end);\n }\n\n private static calculateControlPoints(\n s1: BasicPoint,\n s2: BasicPoint,\n s3: BasicPoint,\n ): {\n c1: BasicPoint;\n c2: BasicPoint;\n } {\n const dx1 = s1.x - s2.x;\n const dy1 = s1.y - s2.y;\n const dx2 = s2.x - s3.x;\n const dy2 = s2.y - s3.y;\n\n const m1 = { x: (s1.x + s2.x) / 2.0, y: (s1.y + s2.y) / 2.0 };\n const m2 = { x: (s2.x + s3.x) / 2.0, y: (s2.y + s3.y) / 2.0 };\n\n const l1 = Math.sqrt(dx1 * dx1 + dy1 * dy1);\n const l2 = Math.sqrt(dx2 * dx2 + dy2 * dy2);\n\n const dxm = m1.x - m2.x;\n const dym = m1.y - m2.y;\n\n const k = l2 / (l1 + l2);\n const cm = { x: m2.x + dxm * k, y: m2.y + dym * k };\n\n const tx = s2.x - cm.x;\n const ty = s2.y - cm.y;\n\n return {\n c1: new Point(m1.x + tx, m1.y + ty),\n c2: new Point(m2.x + tx, m2.y + ty),\n };\n }\n\n constructor(\n public startPoint: Point,\n public control2: BasicPoint,\n public control1: BasicPoint,\n public endPoint: Point,\n public startWidth: number,\n public endWidth: number,\n ) {}\n\n // Returns approximated length. Code taken from https://www.lemoda.net/maths/bezier-length/index.html.\n public length(): number {\n const steps = 10;\n let length = 0;\n let px;\n let py;\n\n for (let i = 0; i <= steps; i += 1) {\n const t = i / steps;\n const cx = this.point(\n t,\n this.startPoint.x,\n this.control1.x,\n this.control2.x,\n this.endPoint.x,\n );\n const cy = this.point(\n t,\n this.startPoint.y,\n this.control1.y,\n this.control2.y,\n this.endPoint.y,\n );\n\n if (i > 0) {\n const xdiff = cx - (px as number);\n const ydiff = cy - (py as number);\n\n length += Math.sqrt(xdiff * xdiff + ydiff * ydiff);\n }\n\n px = cx;\n py = cy;\n }\n\n return length;\n }\n\n // Calculate parametric value of x or y given t and the four point coordinates of a cubic bezier curve.\n private point(\n t: number,\n start: number,\n c1: number,\n c2: number,\n end: number,\n ): number {\n // prettier-ignore\n return ( start * (1.0 - t) * (1.0 - t) * (1.0 - t))\n + (3.0 * c1 * (1.0 - t) * (1.0 - t) * t)\n + (3.0 * c2 * (1.0 - t) * t * t)\n + ( end * t * t * t);\n }\n}\n","import { Point, BasicPoint } from 'signature_pad/src/point'\nimport { throttle } from 'signature_pad/src/throttle'\nimport { Bezier } from 'signature_pad/src/bezier'\n\ndeclare global {\n interface CSSStyleDeclaration {\n msTouchAction: string;\n }\n}\n\nexport interface Options {\n dotSize?: number | (() => number);\n minWidth?: number;\n maxWidth?: number;\n minDistance?: number;\n backgroundColor?: string;\n penColor?: string;\n throttle?: number;\n velocityFilterWeight?: number;\n onBegin?: (event: MouseEvent | Touch) => void;\n onEnd?: (event: MouseEvent | Touch) => void;\n}\n\nexport interface PointGroup {\n color: string;\n points: BasicPoint[];\n}\n\nexport default class SignaturePad {\n // Public stuff\n public dotSize: number | (() => number)\n public minWidth: number\n public maxWidth: number\n public minDistance: number\n public backgroundColor: string\n public penColor: string\n public throttle: number\n public velocityFilterWeight: number\n public onBegin?: (event: MouseEvent | Touch) => void\n public onEnd?: (event: MouseEvent | Touch) => void\n\n // Private stuff\n /* tslint:disable: variable-name */\n private _ctx: CanvasRenderingContext2D\n private _mouseButtonDown: boolean\n private _isEmpty: boolean\n private _lastPoints: Point[] // Stores up to 4 most recent points used to generate a new curve\n private _data: PointGroup[] // Stores all points in groups (one group per line or dot)\n private _lastVelocity: number\n private _lastWidth: number\n private _strokeMoveUpdate: (event: MouseEvent | Touch) => void\n /* tslint:enable: variable-name */\n\n constructor (\n private canvas: HTMLCanvasElement,\n private options: Options = {}\n ) {\n this.velocityFilterWeight = options.velocityFilterWeight || 0.7\n this.minWidth = options.minWidth || 0.5\n this.maxWidth = options.maxWidth || 2.5\n this.throttle = ('throttle' in options ? options.throttle : 16) as number // in milisecondss\n this.minDistance = ('minDistance' in options\n ? options.minDistance\n : 5) as number // in pixels\n this.dotSize =\n options.dotSize ||\n function dotSize (this: SignaturePad): number {\n return (this.minWidth + this.maxWidth) / 2\n }\n this.penColor = options.penColor || 'black'\n this.backgroundColor = options.backgroundColor || 'rgba(0,0,0,0)'\n this.onBegin = options.onBegin\n this.onEnd = options.onEnd\n\n this._strokeMoveUpdate = this.throttle\n ? throttle(SignaturePad.prototype._strokeUpdate, this.throttle)\n : SignaturePad.prototype._strokeUpdate\n this._ctx = canvas.getContext('2d') as CanvasRenderingContext2D\n\n this.clear()\n\n // Enable mouse and touch event handlers\n this.on()\n }\n\n public clear (): void {\n const { _ctx: ctx, canvas } = this\n\n // Clear canvas using background color\n ctx.fillStyle = this.backgroundColor\n ctx.clearRect(0, 0, canvas.width, canvas.height)\n ctx.fillRect(0, 0, canvas.width, canvas.height)\n\n this._data = []\n this._reset()\n this._isEmpty = true\n }\n\n public fromDataURL (\n dataUrl: string,\n options: { ratio?: number; width?: number; height?: number } = {},\n callback?: (error?: string | Event) => void\n ): void {\n const image = new Image()\n const ratio = options.ratio || window.devicePixelRatio || 1\n const width = options.width || this.canvas.width / ratio\n const height = options.height || this.canvas.height / ratio\n\n this._reset()\n\n image.onload = (): void => {\n this._ctx.drawImage(image, 0, 0, width, height)\n if (callback) {\n callback()\n }\n }\n image.onerror = (error): void => {\n if (callback) {\n callback(error)\n }\n }\n image.src = dataUrl\n\n this._isEmpty = false\n }\n\n public toDataURL (type = 'image/png', encoderOptions?: number): string {\n switch (type) {\n case 'image/svg+xml':\n return this._toSVG()\n default:\n return this.canvas.toDataURL(type, encoderOptions)\n }\n }\n\n public on (): void {\n // Disable panning/zooming when touching canvas element\n this.canvas.style.touchAction = 'none'\n this.canvas.style.msTouchAction = 'none'\n\n if (window.PointerEvent) {\n this._handlePointerEvents()\n } else {\n this._handleMouseEvents()\n\n if ('ontouchstart' in window) {\n this._handleTouchEvents()\n }\n }\n }\n\n public off (): void {\n // Enable panning/zooming when touching canvas element\n this.canvas.style.touchAction = 'auto'\n this.canvas.style.msTouchAction = 'auto'\n\n this.canvas.removeEventListener('pointerdown', this._handleMouseDown)\n this.canvas.removeEventListener('pointermove', this._handleMouseMove)\n document.removeEventListener('pointerup', this._handleMouseUp)\n\n this.canvas.removeEventListener('mousedown', this._handleMouseDown)\n this.canvas.removeEventListener('mousemove', this._handleMouseMove)\n document.removeEventListener('mouseup', this._handleMouseUp)\n\n this.canvas.removeEventListener('touchstart', this._handleTouchStart)\n this.canvas.removeEventListener('touchmove', this._handleTouchMove)\n this.canvas.removeEventListener('touchend', this._handleTouchEnd)\n }\n\n public isEmpty (): boolean {\n return this._isEmpty\n }\n\n public fromData (pointGroups: PointGroup[]): void {\n this.clear()\n\n this._fromData(\n pointGroups,\n ({ color, curve }) => this._drawCurve({ color, curve }),\n ({ color, point }) => this._drawDot({ color, point })\n )\n\n this._data = pointGroups\n }\n\n public toData (): PointGroup[] {\n return this._data\n }\n\n // Event handlers\n private _handleMouseDown = (event: MouseEvent): void => {\n if (event.which === 1) {\n this._mouseButtonDown = true\n this._strokeBegin(event)\n }\n }\n\n private _handleMouseMove = (event: MouseEvent): void => {\n if (this._mouseButtonDown) {\n this._strokeMoveUpdate(event)\n }\n }\n\n private _handleMouseUp = (event: MouseEvent): void => {\n if (event.which === 1 && this._mouseButtonDown) {\n this._mouseButtonDown = false\n this._strokeEnd(event)\n }\n }\n\n private _handleTouchStart = (event: TouchEvent): void => {\n // Prevent scrolling.\n event.preventDefault()\n\n if (event.targetTouches.length === 1) {\n const touch = event.changedTouches[0]\n this._strokeBegin(touch)\n }\n }\n\n private _handleTouchMove = (event: TouchEvent): void => {\n // Prevent scrolling.\n event.preventDefault()\n\n const touch = event.targetTouches[0]\n this._strokeMoveUpdate(touch)\n }\n\n private _handleTouchEnd = (event: TouchEvent): void => {\n const wasCanvasTouched = event.target === this.canvas\n if (wasCanvasTouched) {\n event.preventDefault()\n\n const touch = event.changedTouches[0]\n this._strokeEnd(touch)\n }\n }\n\n // Private methods\n private _strokeBegin (event: MouseEvent | Touch): void {\n const newPointGroup = {\n color: this.penColor,\n points: []\n }\n\n if (typeof this.onBegin === 'function') {\n this.onBegin(event)\n }\n\n this._data.push(newPointGroup)\n this._reset()\n this._strokeUpdate(event)\n }\n\n private _strokeUpdate (event: MouseEvent | Touch): void {\n if (this._data.length === 0) {\n // This can happen if clear() was called while a signature is still in progress,\n // or if there is a race condition between start/update events.\n this._strokeBegin(event)\n return\n }\n\n const x = event.clientX\n const y = event.clientY\n\n const point = this._createPoint(x, y)\n const lastPointGroup = this._data[this._data.length - 1]\n const lastPoints = lastPointGroup.points\n const lastPoint =\n lastPoints.length > 0 && lastPoints[lastPoints.length - 1]\n const isLastPointTooClose = lastPoint\n ? point.distanceTo(lastPoint) <= this.minDistance\n : false\n const color = lastPointGroup.color\n\n // Skip this point if it's too close to the previous one\n if (!lastPoint || !(lastPoint && isLastPointTooClose)) {\n const curve = this._addPoint(point)\n\n if (!lastPoint) {\n this._drawDot({ color, point })\n } else if (curve) {\n this._drawCurve({ color, curve })\n }\n\n lastPoints.push({\n time: point.time,\n x: point.x,\n y: point.y\n })\n }\n }\n\n private _strokeEnd (event: MouseEvent | Touch): void {\n this._strokeUpdate(event)\n\n if (typeof this.onEnd === 'function') {\n this.onEnd(event)\n }\n }\n\n private _handlePointerEvents (): void {\n this._mouseButtonDown = false\n\n this.canvas.addEventListener('pointerdown', this._handleMouseDown)\n this.canvas.addEventListener('pointermove', this._handleMouseMove)\n document.addEventListener('pointerup', this._handleMouseUp)\n }\n\n private _handleMouseEvents (): void {\n this._mouseButtonDown = false\n\n this.canvas.addEventListener('mousedown', this._handleMouseDown)\n this.canvas.addEventListener('mousemove', this._handleMouseMove)\n document.addEventListener('mouseup', this._handleMouseUp)\n }\n\n private _handleTouchEvents (): void {\n this.canvas.addEventListener('touchstart', this._handleTouchStart)\n this.canvas.addEventListener('touchmove', this._handleTouchMove)\n this.canvas.addEventListener('touchend', this._handleTouchEnd)\n }\n\n // Called when a new line is started\n private _reset (): void {\n this._lastPoints = []\n this._lastVelocity = 0\n this._lastWidth = (this.minWidth + this.maxWidth) / 2\n this._ctx.fillStyle = this.penColor\n }\n\n private _createPoint (x: number, y: number): Point {\n const rect = this.canvas.getBoundingClientRect()\n\n return new Point(x - rect.left, y - rect.top, new Date().getTime())\n }\n\n // Add point to _lastPoints array and generate a new curve if there are enough points (i.e. 3)\n private _addPoint (point: Point): Bezier | null {\n const { _lastPoints } = this\n\n _lastPoints.push(point)\n\n if (_lastPoints.length > 2) {\n // To reduce the initial lag make it work with 3 points\n // by copying the first point to the beginning.\n if (_lastPoints.length === 3) {\n _lastPoints.unshift(_lastPoints[0])\n }\n\n // _points array will always have 4 points here.\n const widths = this._calculateCurveWidths(_lastPoints[1], _lastPoints[2])\n const curve = Bezier.fromPoints(_lastPoints, widths)\n\n // Remove the first element from the list, so that there are no more than 4 points at any time.\n _lastPoints.shift()\n\n return curve\n }\n\n return null\n }\n\n private _calculateCurveWidths (\n startPoint: Point,\n endPoint: Point\n ): { start: number; end: number } {\n const velocity =\n this.velocityFilterWeight * endPoint.velocityFrom(startPoint) +\n (1 - this.velocityFilterWeight) * this._lastVelocity\n\n const newWidth = this._strokeWidth(velocity)\n\n const widths = {\n end: newWidth,\n start: this._lastWidth\n }\n\n this._lastVelocity = velocity\n this._lastWidth = newWidth\n\n return widths\n }\n\n private _strokeWidth (velocity: number): number {\n return Math.max(this.maxWidth / (velocity + 1), this.minWidth)\n }\n\n private _drawCurveSegment (x: number, y: number, width: number): void {\n const ctx = this._ctx\n\n ctx.moveTo(x, y)\n ctx.arc(x, y, width, 0, 2 * Math.PI, false)\n this._isEmpty = false\n }\n\n private _drawCurve ({ color, curve }: { color: string; curve: Bezier }): void {\n const ctx = this._ctx\n const widthDelta = curve.endWidth - curve.startWidth\n // '2' is just an arbitrary number here. If only lenght is used, then\n // there are gaps between curve segments :/\n const drawSteps = Math.floor(curve.length()) * 2\n\n ctx.beginPath()\n ctx.fillStyle = color\n\n for (let i = 0; i < drawSteps; i += 1) {\n // Calculate the Bezier (x, y) coordinate for this step.\n const t = i / drawSteps\n const tt = t * t\n const ttt = tt * t\n const u = 1 - t\n const uu = u * u\n const uuu = uu * u\n\n let x = uuu * curve.startPoint.x\n x += 3 * uu * t * curve.control1.x\n x += 3 * u * tt * curve.control2.x\n x += ttt * curve.endPoint.x\n\n let y = uuu * curve.startPoint.y\n y += 3 * uu * t * curve.control1.y\n y += 3 * u * tt * curve.control2.y\n y += ttt * curve.endPoint.y\n\n const width = Math.min(\n curve.startWidth + ttt * widthDelta,\n this.maxWidth\n )\n this._drawCurveSegment(x, y, width)\n }\n\n ctx.closePath()\n ctx.fill()\n }\n\n private _drawDot ({\n color,\n point\n }: {\n color: string;\n point: BasicPoint;\n }): void {\n const ctx = this._ctx\n const width =\n typeof this.dotSize === 'function' ? this.dotSize() : this.dotSize\n\n ctx.beginPath()\n this._drawCurveSegment(point.x, point.y, width)\n ctx.closePath()\n ctx.fillStyle = color\n ctx.fill()\n }\n\n private _fromData (\n pointGroups: PointGroup[],\n drawCurve: SignaturePad['_drawCurve'],\n drawDot: SignaturePad['_drawDot']\n ): void {\n for (const group of pointGroups) {\n const { color, points } = group\n\n if (points.length > 1) {\n for (let j = 0; j < points.length; j += 1) {\n const basicPoint = points[j]\n const point = new Point(basicPoint.x, basicPoint.y, basicPoint.time)\n\n // All points in the group have the same color, so it's enough to set\n // penColor just at the beginning.\n this.penColor = color\n\n if (j === 0) {\n this._reset()\n }\n\n const curve = this._addPoint(point)\n\n if (curve) {\n drawCurve({ color, curve })\n }\n }\n } else {\n this._reset()\n\n drawDot({\n color,\n point: points[0]\n })\n }\n }\n }\n\n private _toSVG (): string {\n const pointGroups = this._data\n // Custom devicePixelRatio as ipad has higher DPI than desktop\n // When that happens, the maxX and maxY will be reduced, hence\n // configure it to maximum of 1. To be monitored.\n // https://github.com/szimek/signature_pad/issues/428\n let devicePixelRatio = window.devicePixelRatio\n if (devicePixelRatio > 1) devicePixelRatio = 1\n const ratio = Math.max(devicePixelRatio || 1, 1)\n const minX = 0\n const minY = 0\n const maxX = this.canvas.width / ratio\n const maxY = this.canvas.height / ratio\n const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg')\n\n svg.setAttribute('width', this.canvas.width.toString())\n svg.setAttribute('height', this.canvas.height.toString())\n\n this._fromData(\n pointGroups,\n\n ({ color, curve }: { color: string; curve: Bezier }) => {\n const path = document.createElement('path')\n\n // Need to check curve for NaN values, these pop up when drawing\n // lines on the canvas that are not continuous. E.g. Sharp corners\n // or stopping mid-stroke and than continuing without lifting mouse.\n /* eslint-disable no-restricted-globals */\n if (\n !isNaN(curve.control1.x) &&\n !isNaN(curve.control1.y) &&\n !isNaN(curve.control2.x) &&\n !isNaN(curve.control2.y)\n ) {\n const attr =\n `M ${curve.startPoint.x.toFixed(3)},${curve.startPoint.y.toFixed(\n 3\n )} ` +\n `C ${curve.control1.x.toFixed(3)},${curve.control1.y.toFixed(3)} ` +\n `${curve.control2.x.toFixed(3)},${curve.control2.y.toFixed(3)} ` +\n `${curve.endPoint.x.toFixed(3)},${curve.endPoint.y.toFixed(3)}`\n path.setAttribute('d', attr)\n path.setAttribute('stroke-width', (curve.endWidth * 2.25).toFixed(3))\n path.setAttribute('stroke', color)\n path.setAttribute('fill', 'none')\n path.setAttribute('stroke-linecap', 'round')\n\n svg.appendChild(path)\n }\n /* eslint-enable no-restricted-globals */\n },\n\n ({ color, point }: { color: string; point: BasicPoint }) => {\n const circle = document.createElement('circle')\n const dotSize =\n typeof this.dotSize === 'function' ? this.dotSize() : this.dotSize\n circle.setAttribute('r', dotSize.toString())\n circle.setAttribute('cx', point.x.toString())\n circle.setAttribute('cy', point.y.toString())\n circle.setAttribute('fill', color)\n\n svg.appendChild(circle)\n }\n )\n\n const prefix = 'data:image/svg+xml;base64,'\n const header =\n ''\n let body = svg.innerHTML\n\n // IE hack for missing innerHTML property on SVGElement\n if (body === undefined) {\n const dummy = document.createElement('dummy')\n const nodes = svg.childNodes\n dummy.innerHTML = ''\n\n // tslint:disable-next-line: prefer-for-of\n for (let i = 0; i < nodes.length; i += 1) {\n dummy.appendChild(nodes[i].cloneNode(true))\n }\n\n body = dummy.innerHTML\n }\n\n const footer = ''\n const data = header + body + footer\n\n return prefix + btoa(data)\n }\n}\n"],"sourceRoot":""}