{"version":3,"sources":["node_modules/browser-pack/_prelude.js","src/app/client/client.ts","src/app/client/receiver-registry.ts","src/app/client/sender-registry.ts","src/app/client/service-registry.ts","src/app/client/service.ts","src/app/environment.ts","src/app/message-queue-service.ts","src/app/server/service.ts","src/app/server/services/krypton.service.ts","src/app/server/services/swipe-key-helper.ts"],"names":["r","e","n","t","o","i","f","c","require","u","a","Error","code","p","exports","call","length","1","module","receiver_registry_1","sender_registry_1","service_registry_1","environment_1","krypton_service_1","iframeSrc","Environment","instance","urlRoot","isSwipe","fieldKeys","window","MessageChannel","paysimpleJs","options","auth","preventAutocomplete","shrinkFields","isLoggedIn","autoRefresh","enableCaptcha","enableCaptchaInteraction","recaptchaSiteKey","undefined","listeners","services","ServiceRegistry","swipeKeyHelper","messageQueue","iframe","messageHandler","callback","container","document","createElement","setAttribute","style","width","src","onload","streamChannel","iframeContents","this","contentWindow","port1","onmessage","event","message","data","debug","console","log","type","sendMessage","body","skin","styles","rawStyles","bodyStyles","cardTypeStyles","cardType","toStyleString","processStylesByKey","label","field","validation","processStyles","cvvMode","bypassPostalCodeValidation","text","labels","required","placeholder","processText","showPlaceholder","hasOwnProperty","companyNameMode","businessCheckingEnabled","channel","postMessage","port2","appendChild","styleString","Object","keys","forEach","key","validKey","replace","toLowerCase","isMergeableObject","value","valueAsString","prototype","toString","styleType","result","merged","merge","base","byKey","focus","hover","connect","receiver","receivers","eventType","getListeners","listener","mode","addEventListener","onPaste","onKeyDown","onKeyUp","destroyEventListeners","warn","connection","setConnection","origin","location","startsWith","add","log_level","LogLevel","Info","senders","SenderRegistry","ReceiverRegistry","send","destroy","parentElement","removeChild","on","push","preventDefault","cancelBubble","ctrlKey","sendSwipeData","getKeyData","getPasteData","removeEventListener","_super","service_1","Service","__extends","heightChanged","_iframe","height","newValue","_this","setMode","setSwiperFocus","retrieveAccount","customerInfo","matchOrCreateAccount","customerToken","dedupeAccount","createAccount","createAccountContext","retrievePaymentOptions","retrievePaymentToken","retrievePaymentTokenInfo","setSubmitted","focusFirst","focusLast","authUpdated","disableForm","enableForm","verifyAccount","existingCustomerAccountId","customerId","message_queue_service_1","swipe_key_helper_1","defineProperty","_messageQueue","MessageQueueService","_swipeKeyHelper","SwipeKeyHelper","_urlRoot","_connection","processQueue","_queue","splice","KryptonService","http","post","char","charUpper","toUpperCase","_altKeys","altKey","pastedValue","clipboardData","getData"],"mappings":"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","file":"client.js","sourcesContent":["(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i({\r\n type: \"log\",\r\n body: {\r\n log_level: LogLevel.Info,\r\n message: `PSJS: Window origin is '${origin}'`\r\n }\r\n });\r\n }\r\n });\r\n\r\n let senders = new SenderRegistry(services);\r\n let receivers: any = new ReceiverRegistry(services, iframe);\r\n\r\n return {\r\n iframe: iframe,\r\n send: senders,\r\n destroy: destroy,\r\n on: on,\r\n };\r\n\r\n function onKeyUp(e: KeyboardEvent){\r\n if (!isSwipe)\r\n return;\r\n\r\n e.preventDefault();\r\n e.cancelBubble = true;\r\n }\r\n\r\n function onKeyDown(e: KeyboardEvent){\r\n if (!isSwipe){\r\n return;\r\n }\r\n if((e.key === 'v' || e.key === 'c') && e.ctrlKey)\r\n return;\r\n\r\n e.preventDefault();\r\n e.cancelBubble = true;\r\n\r\n let data = swipeKeyHelper.getKeyData(e);\r\n sendSwipeData(data);\r\n }\r\n\r\n function onPaste(e: UIEvent){\r\n if (!isSwipe){\r\n return;\r\n }\r\n e.preventDefault();\r\n e.cancelBubble = true;\r\n\r\n let data = swipeKeyHelper.getPasteData(e);\r\n sendSwipeData(data);\r\n }\r\n\r\n function sendSwipeData(data: string){\r\n services.messageQueue.add({\r\n type: 'swipeData',\r\n body: {\r\n data: data\r\n }\r\n });\r\n }\r\n\r\n function destroy() {\r\n if (iframe && iframe.parentElement) {\r\n iframe.parentElement.removeChild(iframe);\r\n }\r\n destroyEventListeners();\r\n iframe = null;\r\n listeners = {};\r\n }\r\n\r\n function destroyEventListeners(){\r\n window.document.removeEventListener('paste', (onPaste as EventListener));\r\n window.document.removeEventListener('keydown', onKeyDown);\r\n window.document.removeEventListener('keyup', onKeyUp);\r\n }\r\n\r\n function createEventListeners(){\r\n window.document.addEventListener('paste', (onPaste as EventListener));\r\n window.document.addEventListener('keydown', onKeyDown);\r\n window.document.addEventListener('keyup', onKeyUp);\r\n }\r\n\r\n function handleMessage(event: MessageEvent) {\r\n let message: IMessage = event.data;\r\n\r\n if (options.debug) {\r\n console.log(\"client:\", message);\r\n }\r\n\r\n if (!message) {\r\n throw new Error(\"No message was sent from server.\");\r\n }\r\n\r\n // if no message type was passed in, short-circuit out of function. Can't throw error because other things outside of our control can interact with iframe (e.g. no idea where {LPMessage:\"gotFrameIdentity\",frameIdentity:\"0:1\",requestID:1485809576513} is coming from but it's not our code)\r\n if (!message.type) {\r\n return;\r\n }\r\n\r\n let receiver = receivers[message.type];\r\n\r\n let listeners = getListeners(message.type);\r\n\r\n listeners.forEach(listener => {\r\n listener.call(null, message.body);\r\n });\r\n\r\n if (receiver) {\r\n receiver.call(receivers, message.body);\r\n }\r\n else if (message.type === 'modeChanged' && message.body.mode === 'cc-swipe'){\r\n createEventListeners();\r\n isSwipe = true;\r\n }\r\n else if (message.type === 'modeChanged' && message.body.mode !== 'cc-swipe'){\r\n isSwipe = false;\r\n destroyEventListeners();\r\n }\r\n else if (message.type === 'cardSwiped'){\r\n isSwipe = false;\r\n destroyEventListeners();\r\n }\r\n else {\r\n if (options.debug && !listeners.length) {\r\n console.warn(\"Server sent unrecognized message type (\\\"\" + message.type + \"\\\").\");\r\n }\r\n }\r\n }\r\n\r\n function on(eventType: string, callback: Function) {\r\n if (!listeners[eventType]) {\r\n listeners[eventType] = [];\r\n }\r\n\r\n listeners[eventType].push(callback);\r\n }\r\n\r\n function getListeners(eventType: string) {\r\n return listeners[eventType] || [];\r\n }\r\n};\r\n\r\nfunction connect(options: IClientOptionsWithContainerRaw, messageHandler: (event: MessageEvent) => void, callback: (connection: IConnection) => void) {\r\n if (!options.container) {\r\n throw new Error(\"container has not been defined.\");\r\n }\r\n\r\n let iframe = document.createElement(\"iframe\");\r\n iframe.setAttribute(\"frameBorder\", \"0\");\r\n iframe.setAttribute(\"scrolling\", \"no\");\r\n iframe.setAttribute(\"allowTransparency\", \"true\");\r\n iframe.style.width = \"100%\";\r\n iframe.src = iframeSrc;\r\n iframe.onload = onload;\r\n\r\n options.container.appendChild(iframe);\r\n return iframe;\r\n\r\n function onload() {\r\n // set up channel that will stream messages back from server\r\n let streamChannel = new (window as PsWindow).MessageChannel();\r\n let iframeContents = this.contentWindow;\r\n\r\n streamChannel.port1.onmessage = handleInitMessage;\r\n\r\n let message: IMessage = {\r\n type: \"init\",\r\n body: {\r\n debug: options.debug || false,\r\n auth: options.auth,\r\n skin: options.skin || \"default\",\r\n styles: processStyles(options.styles),\r\n cvvMode: options.cvvMode || \"required\",\r\n shrinkFields: options.shrinkFields,\r\n bypassPostalCodeValidation: options.bypassPostalCodeValidation,\r\n text: processText(options.text),\r\n showPlaceholder: options.hasOwnProperty(\"showPlaceholder\") ? !!options.showPlaceholder : true,\r\n preventAutocomplete: options.preventAutocomplete,\r\n companyNameMode: options.companyNameMode || \"hidden\",\r\n businessCheckingEnabled: options.businessCheckingEnabled || false,\r\n enableCaptcha: options.enableCaptcha || false,\r\n enableCaptchaInteraction: options.enableCaptchaInteraction || false,\r\n recaptchaSiteKey: options.recaptchaSiteKey || undefined,\r\n }\r\n };\r\n\r\n iframeContents.postMessage(message, targetOrigin, [streamChannel.port2]);\r\n\r\n function sendMessage(message: IMessage) {\r\n let channel = new (window as PsWindow).MessageChannel();\r\n\r\n iframeContents.postMessage(message, targetOrigin, [channel.port2]);\r\n }\r\n\r\n function handleInitMessage(event: MessageEvent) {\r\n let message: IMessage = event.data;\r\n\r\n if (!message) {\r\n throw new Error(\"No message was sent from server.\");\r\n }\r\n\r\n if (options.debug) {\r\n console.log(\"client:\", message);\r\n }\r\n\r\n if (message.type !== \"init\") {\r\n throw new Error(\"Expected message of type \\\"init\\\" but received message of type \\\"\" + message.type + \"\\\".\");\r\n }\r\n\r\n streamChannel.port1.onmessage = messageHandler;\r\n\r\n callback({\r\n sendMessage: sendMessage\r\n });\r\n }\r\n }\r\n\r\n function toStyleString(style: IStyleDictionary): string {\r\n if (!style) {\r\n return \"\";\r\n }\r\n\r\n let styleString: string = \"\";\r\n\r\n Object.keys(style).forEach(key => {\r\n let validKey = key.replace(/([a-z])([A-Z])/g, \"$1-$2\").toLowerCase(); // convert to valid css property(e.g \"backgroundColor\" to \"background-color\")\r\n if (isMergeableObject(style[key])) {\r\n return;\r\n }\r\n let value: string = style[key] as string;\r\n styleString += `${validKey}:${value};`;\r\n });\r\n\r\n return styleString;\r\n }\r\n\r\n function merge(base: IStyleDictionary, byKey: IStyleDictionary): IStyleDictionary {\r\n let result: IStyleDictionary = {};\r\n\r\n if (base) {\r\n Object.keys(base).forEach(key => {\r\n result[key] = base[key];\r\n });\r\n }\r\n\r\n if (byKey) {\r\n Object.keys(byKey).forEach(key => {\r\n let byKeyIsMergeable = isMergeableObject(byKey[key]);\r\n if (isMergeableObject(byKey[key])) {\r\n result[key] = merge(result[key] as IStyleDictionary, byKey[key] as IStyleDictionary);\r\n } else {\r\n result[key] = byKey[key];\r\n }\r\n });\r\n }\r\n return result;\r\n }\r\n\r\n function isMergeableObject(value: any) {\r\n let valueAsString = Object.prototype.toString.call(value);\r\n return !!value\r\n && typeof value === \"object\"\r\n && valueAsString !== \"[object RegExp]\"\r\n && valueAsString !== \"[object Date]\";\r\n }\r\n\r\n function processStylesByKey(styleType: StyleType, rawStyles: IClientOptionsStylesRaw): IClientOptionsStylesByKey {\r\n let result: any = {};\r\n\r\n fieldKeys.forEach(key => {\r\n let styleByType = rawStyles ? rawStyles[styleType] : {};\r\n let styleByKey = rawStyles ? rawStyles[`${styleType}.${key}`] : {};\r\n let merged = merge(styleByType, styleByKey);\r\n\r\n result[key] = {\r\n base: toStyleString(merged),\r\n focus: toStyleString(merged.focus),\r\n hover: toStyleString(merged.hover),\r\n placeholder: toStyleString(merged.placeholder),\r\n };\r\n });\r\n\r\n return result;\r\n }\r\n\r\n function processStyles(rawStyles: IClientOptionsStylesRaw): IClientOptionsStyles {\r\n let bodyStyles = rawStyles ? rawStyles.body : {};\r\n let cardTypeStyles = rawStyles ? rawStyles.cardType : {};\r\n return {\r\n body: toStyleString(bodyStyles || {}),\r\n container: processStylesByKey(\"container\", rawStyles),\r\n label: processStylesByKey(\"label\", rawStyles),\r\n field: processStylesByKey(\"field\", rawStyles),\r\n validation: processStylesByKey(\"validation\", rawStyles),\r\n cardType: toStyleString(cardTypeStyles || {}),\r\n };\r\n }\r\n\r\n function processText(text: IClientOptionsText | undefined): IClientOptionsText {\r\n if (!text) {\r\n text = {};\r\n }\r\n\r\n if (!text.labels) {\r\n text.labels = {};\r\n }\r\n\r\n if (!text.validation) {\r\n text.validation = {};\r\n }\r\n\r\n if (!text.validation.required) {\r\n text.validation.required = {};\r\n }\r\n\r\n if (!text.placeholder) {\r\n text.placeholder = {};\r\n }\r\n\r\n return text;\r\n }\r\n\r\n}\r\ninterface IClientOptionsWithContainerRaw extends IClientOptionsRaw {\r\n container: HTMLElement;\r\n}\r\n\r\ninterface IClientOptionsRaw {\r\n debug: boolean;\r\n skin: Skin;\r\n styles: IClientOptionsStylesRaw;\r\n auth: IAuth;\r\n cvvMode: CvvMode;\r\n companyNameMode: CompanyNameMode;\r\n businessCheckingEnabled: boolean;\r\n shrinkFields: boolean;\r\n bypassPostalCodeValidation?: boolean;\r\n text: IClientOptionsText;\r\n showPlaceholder: boolean;\r\n preventAutocomplete: boolean;\r\n enableCaptcha?: boolean;\r\n enableCaptchaInteraction?: boolean;\r\n recaptchaSiteKey?: string;\r\n}\r\n\r\ninterface IClientOptionsStylesRaw {\r\n [key: string]: IStyleDictionary;\r\n body?: IStyleDictionary;\r\n container?: IStyleDictionary;\r\n label?: IStyleDictionary;\r\n field?: IStyleDictionary;\r\n validation?: IStyleDictionary;\r\n cardType?: IStyleDictionary;\r\n\r\n \"container.cardNumber\"?: IStyleDictionary;\r\n \"container.expiration\"?: IStyleDictionary;\r\n \"container.cvv\"?: IStyleDictionary;\r\n \"container.postalCode\"?: IStyleDictionary;\r\n \"container.routingNumber\"?: IStyleDictionary;\r\n \"container.accountNumber\"?: IStyleDictionary;\r\n \"container.accountType\"?: IStyleDictionary;\r\n \"container.bankName\"?: IStyleDictionary;\r\n \"container.companyname\"?: IStyleDictionary;\r\n\r\n \"label.cardNumber\"?: IStyleDictionary;\r\n \"label.expiration\"?: IStyleDictionary;\r\n \"label.cvv\"?: IStyleDictionary;\r\n \"label.postalCode\"?: IStyleDictionary;\r\n \"label.routingNumber\"?: IStyleDictionary;\r\n \"label.accountNumber\"?: IStyleDictionary;\r\n \"label.accountType\"?: IStyleDictionary;\r\n \"label.bankName\"?: IStyleDictionary;\r\n \"label.companyName\"?: IStyleDictionary;\r\n\r\n \"field.cardNumber\"?: IStyleDictionary;\r\n \"field.expiration\"?: IStyleDictionary;\r\n \"field.cvv\"?: IStyleDictionary;\r\n \"field.postalCode\"?: IStyleDictionary;\r\n \"field.routingNumber\"?: IStyleDictionary;\r\n \"field.accountNumber\"?: IStyleDictionary;\r\n \"field.accountType\"?: IStyleDictionary;\r\n \"field.bankName\"?: IStyleDictionary;\r\n \"field.companyName\"?: IStyleDictionary;\r\n\r\n \"validation.cardNumber\"?: IStyleDictionary;\r\n \"validation.expiration\"?: IStyleDictionary;\r\n \"validation.cvv\"?: IStyleDictionary;\r\n \"validation.postalCode\"?: IStyleDictionary;\r\n \"validation.routingNumber\"?: IStyleDictionary;\r\n \"validation.accountNumber\"?: IStyleDictionary;\r\n \"validation.accountType\"?: IStyleDictionary;\r\n \"validation.bankName\"?: IStyleDictionary;\r\n \"validation.companyName\"?: IStyleDictionary;\r\n}\r\n\r\ninterface IListenerDictionary {\r\n [eventType: string]: Function[];\r\n}\r\n","import {IHeightChanged} from '../sender-contracts';\r\nimport {Service} from './service';\r\nimport {ServiceRegistry} from './service-registry';\r\n\r\nexport class ReceiverRegistry extends Service {\r\n private _iframe: HTMLIFrameElement;\r\n\r\n constructor(services: ServiceRegistry, iframe: HTMLIFrameElement) {\r\n super(services);\r\n\r\n this._iframe = iframe;\r\n }\r\n\r\n public heightChanged(body: IHeightChanged) {\r\n this._iframe.style.height = body.newValue + 'px';\r\n }\r\n}\r\n","import {ISetMode, ISwipeData, IRetrievePaymentTokenInfo} from '../receiver-contracts';\r\nimport {Service} from './service';\r\nimport {ServiceRegistry} from './service-registry';\r\nimport {ICustomerInfo} from '../server/services/api4';\r\nimport {ICreateAccountContext, ICustomerToken} from '../sender-contracts';\r\nimport {IAuth} from '../client-options';\r\n\r\nexport class SenderRegistry extends Service {\r\n constructor(services: ServiceRegistry) {\r\n super(services);\r\n }\r\n\r\n //noinspection JSUnusedGlobalSymbols\r\n public setMode(mode: string) {\r\n this.services.messageQueue.add({\r\n type: 'setMode',\r\n body: {\r\n mode: mode\r\n }\r\n });\r\n }\r\n\r\n //noinspection JSUnusedGlobalSymbols\r\n public setSwiperFocus() {\r\n this.services.messageQueue.add({\r\n type: 'setSwiperFocus'\r\n });\r\n }\r\n\r\n //noinspection JSUnusedGlobalSymbols\r\n public retrieveAccount(customerInfo: ICustomerInfo) {\r\n this.services.messageQueue.add({\r\n type: 'retrieveAccount',\r\n body: customerInfo\r\n });\r\n }\r\n\r\n //noinspection JSUnusedGlobalSymbols\r\n public matchOrCreateAccount(customerToken: ICustomerToken) {\r\n this.services.messageQueue.add({\r\n type: 'matchOrCreateAccount',\r\n body: customerToken\r\n });\r\n }\r\n\r\n //noinspection JSUnusedGlobalSymbols\r\n public dedupeAccount() {\r\n this.services.messageQueue.add({\r\n type: 'dedupeAccount'\r\n });\r\n }\r\n\r\n //noinspection JSUnusedGlobalSymbols\r\n public createAccount(createAccountContext: ICreateAccountContext) {\r\n this.services.messageQueue.add({\r\n type: 'createAccount',\r\n body: createAccountContext\r\n });\r\n }\r\n\r\n //noinspection JSUnusedGlobalSymbols\r\n public retrievePaymentOptions() {\r\n this.services.messageQueue.add({\r\n type: 'retrievePaymentOptions'\r\n });\r\n }\r\n\r\n //noinspection JSUnusedGlobalSymbols\r\n public retrievePaymentToken(retrievePaymentTokenInfo: IRetrievePaymentTokenInfo) {\r\n this.services.messageQueue.add({\r\n type: 'retrievePaymentToken',\r\n body: retrievePaymentTokenInfo\r\n });\r\n }\r\n\r\n //noinspection JSUnusedGlobalSymbols\r\n public setSubmitted() {\r\n this.services.messageQueue.add({\r\n type: 'setSubmitted'\r\n });\r\n }\r\n\r\n //noinspection JSUnusedGlobalSymbols\r\n public focusFirst() {\r\n this.services.messageQueue.add({\r\n type: 'focusFirst'\r\n });\r\n }\r\n\r\n //noinspection JSUnusedGlobalSymbols\r\n public focusLast() {\r\n this.services.messageQueue.add({\r\n type: 'focusLast'\r\n });\r\n }\r\n\r\n //noinspection JSUnusedGlobalSymbols\r\n public authUpdated(auth: IAuth) {\r\n if (auth) {\r\n auth.isLoggedIn = auth.isLoggedIn || false;\r\n }\r\n\r\n this.services.messageQueue.add({\r\n type: 'authUpdated',\r\n body: auth\r\n });\r\n }\r\n\r\n //noinspection JSUnusedGlobalSymbols\r\n public disableForm() {\r\n this.services.messageQueue.add({\r\n type: 'disableForm'\r\n });\r\n }\r\n\r\n //noinspection JSUnusedGlobalSymbols\r\n public enableForm() {\r\n this.services.messageQueue.add({\r\n type: 'enableForm'\r\n });\r\n }\r\n\r\n public verifyAccount(customerToken: ICustomerToken, existingCustomerAccountId: number, customerId: number){\r\n this.services.messageQueue.add({\r\n type: 'verifyAccount',\r\n body: {\r\n existingCustomerAccountId: existingCustomerAccountId,\r\n customerToken: customerToken,\r\n customerId: customerId\r\n }\r\n })\r\n }\r\n \r\n}\r\n","import {MessageQueueService} from '../message-queue-service';\r\nimport { SwipeKeyHelper } from '../server/services/swipe-key-helper';\r\n\r\nexport class ServiceRegistry {\r\n private _messageQueue: MessageQueueService;\r\n private _swipeKeyHelper: SwipeKeyHelper;\r\n\r\n public get messageQueue(): MessageQueueService {\r\n return this._messageQueue || (this._messageQueue = new MessageQueueService());\r\n }\r\n\r\n public get swipeKeyHelper(): SwipeKeyHelper {\r\n return this._swipeKeyHelper || (this._swipeKeyHelper = new SwipeKeyHelper());\r\n }\r\n}\r\n","import {ServiceRegistry} from './service-registry';\r\n\r\nexport abstract class Service {\r\n protected services: ServiceRegistry;\r\n\r\n constructor(services: ServiceRegistry) {\r\n this.services = services;\r\n }\r\n}\r\n","export class Environment {\r\n public static instance: Environment = new Environment();\r\n private _urlRoot: string;\r\n\r\n constructor() {\r\n this._urlRoot = '%http_protocol%://%api_prefix%.%paysimple_domain%';\r\n }\r\n\r\n get urlRoot(): string {\r\n return this._urlRoot;\r\n }\r\n}\r\n","export class MessageQueueService {\r\n private _connection: IConnection;\r\n private _queue: any[];\r\n\r\n constructor() {\r\n this._connection = null;\r\n this._queue = [];\r\n }\r\n\r\n public setConnection(connection: IConnection) {\r\n this._connection = connection;\r\n this.processQueue();\r\n }\r\n\r\n public add(message: IMessage) {\r\n this._queue.push(message);\r\n this.processQueue();\r\n };\r\n\r\n private processQueue() {\r\n if (!this._connection || !this._queue.length) {\r\n return;\r\n }\r\n\r\n var message = this._queue.splice(0, 1)[0];\r\n\r\n this._connection.sendMessage(message);\r\n\r\n this.processQueue();\r\n }\r\n}\r\n\r\nexport interface IConnection {\r\n sendMessage(message: IMessage): void;\r\n}\r\n\r\nexport interface IMessage {\r\n type: string;\r\n body?: TBody;\r\n}\r\n","import {ServiceRegistry} from './service-registry';\r\n\r\nexport abstract class Service {\r\n protected services: ServiceRegistry;\r\n\r\n constructor(services: ServiceRegistry) {\r\n this.services = services;\r\n }\r\n}\r\n","import {ISuccessCallback, IFailureCallback} from './http';\r\nimport {Service} from '../service';\r\nimport {ServiceRegistry} from '../service-registry';\r\n\r\nexport class KryptonService extends Service {\r\n constructor(services: ServiceRegistry) {\r\n super(services);\r\n }\r\n\r\n public log(message: ILogMessage) {\r\n try {\r\n this.services.http.post(`web/front_end_logger/${LogLevel[message.log_level]}`, message, () => {}, () => {});\r\n }\r\n catch(e) {\r\n }\r\n\r\n }\r\n}\r\n\r\nexport enum LogLevel {\r\n Debug = 0,\r\n Info = 1,\r\n Warn = 2,\r\n Error = 3\r\n}\r\n\r\nexport interface ILogMessage {\r\n log_level: LogLevel;\r\n message: string;\r\n}\r\n","\r\nexport class SwipeKeyHelper {\r\n private _altKeys = '';\r\n \r\n getKeyData(event: KeyboardEvent): string | null {\r\n let char = event.key;\r\n const charUpper = char.toUpperCase();\r\n \r\n // idtech sends the alt code ALT+013 for a newline instead of enter.\r\n if (charUpper === 'ALT' && this._altKeys === '013') return '\\n';\r\n \r\n if (char.length > 1) {\r\n if (charUpper === 'ENTER') char = '\\n';\r\n // IE sets the space key as 'Spacebar' instead of ' '\r\n else if (charUpper === 'SPACEBAR') char = ' ';\r\n else return null;\r\n }\r\n if (event.altKey) {\r\n this._altKeys += char;\r\n return null;\r\n } else this._altKeys = '';\r\n \r\n return char;\r\n }\r\n \r\n // have to use UIEvent since ClipboardEvent doesn't work with IE\r\n getPasteData(event: UIEvent): string | null {\r\n let pastedValue = '';\r\n const e = event as any;\r\n \r\n if (e.clipboardData && e.clipboardData.getData) {\r\n pastedValue = e.clipboardData.getData('text/plain');\r\n } else {\r\n // IE does things differently\r\n const clipboardData = (window as any).clipboardData;\r\n \r\n if (clipboardData && clipboardData.getData) {\r\n pastedValue = clipboardData.getData('Text');\r\n }\r\n }\r\n \r\n return pastedValue || '';\r\n }\r\n }\r\n"],"sourceRoot":"src/"}