{"version":3,"file":"js/groupFormat.87cbc1843cb0905ceabd.js","mappings":"kHAAAA,OAAOC,GAAKD,OAAOC,IAAM,CAAC,EAE1BD,OAAOC,GAAGC,YAAc,IAAI,WAuExB,SAASC,EAAWC,EAAMC,EAAWC,GAMjC,IAHA,IAAIC,EAAQF,EACRG,EAAQ,GAEHC,EAAI,EAAGC,GALhBN,EAYJ,SAAgCA,GAC5B,OAAOA,EAAKO,QAAQ,gBAAiB,GACzC,CAdWC,CAAuBR,IAKHS,OAAQJ,EAAIC,EAAKD,GAAKF,EAC7CC,EAAMM,KAAKV,EAAKW,OAAON,EAAGF,IAG9B,OAAOC,EAAMQ,KAAKV,EACtB,CAWA,SAASW,EAAiBC,GAEtB,IAAIC,EAAY,EAGhB,GAAIC,SAASC,UAAW,CAGpBH,EAAOI,QAGP,IAAIC,EAAOH,SAASC,UAAUG,cAG9BD,EAAKE,UAAU,aAAcP,EAAOQ,MAAMb,QAG1CM,EAAYI,EAAKnB,KAAKS,MAC1B,MACSK,EAAOS,gBAA2C,KAAzBT,EAAOS,kBACrCR,EAAYD,EAAOS,gBAGvB,OAAOR,CACX,CAGA,SAASS,EAAiBC,EAAMC,GAC5B,GAAY,MAARD,EACA,GAAIA,EAAKE,gBAAiB,CACtB,IAAIC,EAAQH,EAAKE,kBACjBC,EAAMC,KAAK,YAAaH,GACxBE,EAAME,QACV,MACQL,EAAKF,gBACLE,EAAKP,QACLO,EAAKM,kBAAkBL,EAAUA,IAGjCD,EAAKP,OAIrB,CAtIWc,KAENC,KAAO,WACR,IAAIC,EAAelB,SAASmB,iBAAiB,uBAE7C,GAAoB,MAAhBD,GAA+C,GAAvBA,EAAazB,OAIzC,IAAK,IAAIJ,EAAI,EAAGA,EAAI6B,EAAazB,OAAQJ,IAAK,CAE1C,IAAI+B,EAAcF,EAAa7B,GAE/B,IAAIJ,EAAYmC,EAAYC,aAAa,mBAExB,MAAbpC,GAAkC,IAAbA,IACrBA,EAAY,GAGhB,IAAIC,EAAYkC,EAAYC,aAAa,mBAExB,MAAbnC,GAAkC,IAAbA,IACrBA,EAAY,KAGhB,IAAIoC,EAAYF,EAAYC,aAAa,mBAExB,MAAbC,GAAkC,IAAbA,IAErBA,EAAY,GAGZF,EAAYd,MAAMb,OAAS,IAC3B2B,EAAYd,MAAQvB,EAAWqC,EAAYd,MAAOrB,EAAWC,IAGjEkC,EAAYG,iBAAiB,SAAS,SAAUC,GAE5C,IAAIC,EAAWT,KAAKV,MAEpB,GAAIgB,EAAY,EAChB,CACI,IAAII,EAAyBD,EAASlC,QAAQ,IAAIoC,OAAOzC,EAAW,KAAM,IAE1E,GAAIwC,EAAuBjC,OAAS6B,EACpC,CACI,IAAIM,EAAaF,EAAuBjC,OAAS6B,EAGjD,YAFAN,KAAKV,MAAQmB,EAAS9B,OAAO,EAAGqB,KAAKV,MAAMb,OAASmC,GAGxD,CACJ,CAEA,IAAIC,EAAiBhC,EAAiBmB,MAClCc,EAAiB/C,EAAW0C,EAAUxC,EAAWC,GACrD8B,KAAKV,MAAQwB,EACIA,EAAerC,OAASgC,EAAShC,QAItB,MAAV+B,EAAEO,MAChBF,IAGJrB,EAAiBQ,KAAMa,EAC3B,GACJ,CACJ,CAoEJ,EAEAjD,OAAOC,GAAGC,YAAYmC,M","sources":["webpack://netzkern.am/./src/Foundation/Common/code/Scripts/Common/groupFormat.js"],"sourcesContent":["window.am = window.am || {};\r\n\r\nwindow.am.groupFormat = new function () {\r\n\r\n var that = this;\r\n\r\n that.init = function () {\r\n var targetFields = document.querySelectorAll('[data-group-format]');\r\n\r\n if (targetFields == null || targetFields.length == 0) {\r\n return;\r\n }\r\n\r\n for (let i = 0; i < targetFields.length; i++) {\r\n\r\n let targetField = targetFields[i];\r\n\r\n var groupData = targetField.getAttribute('data-group-data');\r\n\r\n if (groupData == null || groupData == '') {\r\n groupData = 3;\r\n }\r\n\r\n var splitChar = targetField.getAttribute('data-split-char');\r\n\r\n if (splitChar == null || splitChar == '') {\r\n splitChar = ' ';\r\n }\r\n\r\n var maxLength = targetField.getAttribute('data-max-length');\r\n\r\n if (maxLength == null || maxLength == '')\r\n {\r\n maxLength = 0;\r\n }\r\n\r\n if (targetField.value.length > 0) {\r\n targetField.value = splitValue(targetField.value, groupData, splitChar);\r\n }\r\n\r\n targetField.addEventListener('input', function (e)\r\n {\r\n var oldValue = this.value;\r\n\r\n if (maxLength > 0)\r\n {\r\n var valueWithoutSplitchars = oldValue.replace(new RegExp(splitChar, 'g'), '');\r\n\r\n if (valueWithoutSplitchars.length > maxLength)\r\n {\r\n var difference = valueWithoutSplitchars.length - maxLength; \r\n this.value = oldValue.substr(0, this.value.length - difference);\r\n\r\n return;\r\n }\r\n }\r\n\r\n var cursorPosition = getCaretPosition(this);\r\n var formattedValue = splitValue(oldValue, groupData, splitChar);\r\n this.value = formattedValue;\r\n var spaceAdded = formattedValue.length > oldValue.length;\r\n\r\n /* data is null if backspace is pressed. this prevents that the cursor stays right next to the space.\r\n * Workaround because its not possible in input event to get the pressed key for special characters like \"Backspace\" */\r\n if (spaceAdded && e.data != null) {\r\n cursorPosition++;\r\n }\r\n\r\n setCaretPosition(this, cursorPosition);\r\n });\r\n }\r\n }\r\n\r\n function splitValue(text, groupData, splitChar) {\r\n text = getStringWithoutSpaces(text);\r\n\r\n var split = groupData;\r\n var chunk = [];\r\n\r\n for (var i = 0, len = text.length; i < len; i += split) {\r\n chunk.push(text.substr(i, split));\r\n }\r\n\r\n return chunk.join(splitChar);\r\n }\r\n\r\n function getStringWithoutSpaces(text) {\r\n return text.replace(/[\\W\\s\\._\\-]+/g, '');\r\n }\r\n\r\n /*\r\n ** Returns the caret (cursor) position of the specified text field.\r\n ** Return value range is 0-oField.value.length.\r\n ** From: http://stackoverflow.com/a/2897229/496992\r\n */\r\n function getCaretPosition(oField) {\r\n // Initialize\r\n var iCaretPos = 0;\r\n\r\n // IE Support\r\n if (document.selection) {\r\n\r\n // Set focus on the element\r\n oField.focus();\r\n\r\n // To get cursor position, get empty selection range\r\n var oSel = document.selection.createRange();\r\n\r\n // Move selection start to 0 position\r\n oSel.moveStart('character', -oField.value.length);\r\n\r\n // The caret position is selection length\r\n iCaretPos = oSel.text.length;\r\n } // Firefox support\r\n else if (oField.selectionStart || oField.selectionStart == '0')\r\n iCaretPos = oField.selectionStart;\r\n\r\n // Return results\r\n return iCaretPos;\r\n }\r\n\r\n /* From: http://stackoverflow.com/a/512542/496992 */\r\n function setCaretPosition(elem, caretPos) {\r\n if (elem != null) {\r\n if (elem.createTextRange) {\r\n var range = elem.createTextRange();\r\n range.move('character', caretPos);\r\n range.select();\r\n } else {\r\n if (elem.selectionStart) {\r\n elem.focus();\r\n elem.setSelectionRange(caretPos, caretPos);\r\n }\r\n else {\r\n elem.focus();\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\nwindow.am.groupFormat.init();"],"names":["window","am","groupFormat","splitValue","text","groupData","splitChar","split","chunk","i","len","replace","getStringWithoutSpaces","length","push","substr","join","getCaretPosition","oField","iCaretPos","document","selection","focus","oSel","createRange","moveStart","value","selectionStart","setCaretPosition","elem","caretPos","createTextRange","range","move","select","setSelectionRange","this","init","targetFields","querySelectorAll","targetField","getAttribute","maxLength","addEventListener","e","oldValue","valueWithoutSplitchars","RegExp","difference","cursorPosition","formattedValue","data"],"sourceRoot":""}