{"version":3,"sources":["webpack://leadz/./src/LeadzState.ts","webpack://leadz/./src/consts.ts","webpack://leadz/./src/formHandlers/LoginFormHandler.ts","webpack://leadz/./src/helpers.ts","webpack://leadz/./src/index.ts","webpack://leadz/./src/managers/ButtonManager.ts","webpack://leadz/./src/managers/CookieManager.ts","webpack://leadz/./src/managers/FormManager.ts","webpack://leadz/./src/managers/LastClickedExecutionManager.ts","webpack://leadz/./src/managers/LeadManager.ts","webpack://leadz/./src/managers/LeadzItemsManager.ts","webpack://leadz/./src/models/LeadzError.ts","webpack://leadz/./src/models/enums.ts","webpack://leadz/./src/models/smartRuleInterfaces.ts","webpack://leadz/webpack/bootstrap","webpack://leadz/webpack/startup"],"names":["initialLeadInfo","isLogged","globalScore","visitorIdentifier","scLists","properties","tags","callLastClickedAfterLogin","events","_initialized","debug","fetchScData","trackingEnabledCookieExpirationDays","refreshItemsOnDomChange","currentLeadInfo","this","_baseUrl","_campaignIdentifier","initialize","baseUrl","campaignIdentifier","Error","resetCurrentLeadInfo","LeadzState","API_SCRIPTS_PART","API_URL_PART","LEADZ_ITEM_TYPES","button","name","attributeName","path","form","handle","loginResult","tokenExpiresAt","Date","setSeconds","getSeconds","expireInSeconds","accessToken","setAccessTokenCookie","reloadLeadData","onLoggedIn","lastClickedButtonToExecute","tryGetLastClickedButton","executeButton","removeLastClickedButton","LoginFormHandler","message","result","FetchError","leadzFetch","input","init","body","trackingEnabled","headers","Headers","has","append","location","href","readAccessTokenCookie","method","readVisitorFromCookie","JSON","stringify","isGuid","fetch","console","error","Promise","reject","response","json","responseJson","status","__leadz","err","LeadzError","code","details","getParamValue","key","params","URLSearchParams","window","search","Array","from","find","p","toLowerCase","str","length","test","splitAttribute","element","getAttribute","split","isExecuting","lead","trackingEnabledCookie","readTrackingEnabledCookie","options","setOptions","log","tracingEnabledCookie","loadLeadzItems","applypropertiesToHtmlButtons","tryActivateLead","MutationObserver","mutations","observer","disconnect","observe","document","childList","subtree","onInitialized","undefined","sendForm","e","onError","preventDefault","warn","executeForm","currentTarget","executor","htmlElement","logout","removeAccessTokenCookie","onLoggedOut","enableTracking","setTrackingEnabledCookie","initialized","onTrackingStateChanged","disableTracking","LeadzClient","executeLeadzButton","executionButtonInfo","leadzButton","onTrackingDisabledUseAttempt","buttonHtmlElement","isFormButton","currentState","tag","ButtonTag","Normal","setLastClickedButtonIdentifier","identifier","executeButtonUrl","URL","parseButtonResult","getLeadzExecutionButtonInfo","resolve","buttonElements","querySelectorAll","i","executionInfo","setAttribute","buttonElement","buttonAttributeSplitted","submitButtonId","leadzButtons","n","smartButton","lookForSmartButton","Smart","type","buttonResult","buttonType","ButtonType","OpenUrl","validatedUrl","typeParameter","openInNewWindow","startsWith","substring","open","focus","ExecuteCallback","callback","Function","func","leadInfo","smartButtons","idx","smart","checkSmartButtonConditions","smartRuleGroups","smartRules","isSmartGroupTrue","j","checkSmartRule","smartRule","SmartRuleType","Language","leadLanguage","language","navigator","languages","ruleLanguage","ruleArgument","AuthStatus","parse","GlobalScore","isNumeric","ruleScore","parseInt","ruleComparator","LocalScore","ScSubscribe","some","isNaN","parseFloat","ButtonManager","COOKIE_VISITOR_NAME","COOKIE_ACCESS_TOKEN","COOKIE_LAST_CLICKED_BUTTON_IDENTIFIER","COOKIE_TRACKING_ENABLED","getCookie","expiration","setCookie","removeCookie","cookie","seVisitorLeadCookie","removeVisitorCookie","readLastClickedButtonIdentifier","removeLastClickedButtonIdentifier","state","setDate","getDate","removeTrackingEnabledCookie","ca","c","charAt","indexOf","value","d","toUTCString","CookieManager","htmlElem","leadzFormData","getLeadzFormData","leadzForm","sendFormUrl","formId","id","elements","formElements","parseFormResult","formResponse","handler","formType","FormType","Login","formResult","formElement","leadzAttributeSplitted","leadzForms","submitElement","querySelector","leadzButtonInfo","getRadioValue","getCheckboxValue","elems","filter","push","RepeatPassword","resetPasswordCode","leadzUserIdentifier","formHtmlElement","subElement","checked","FormManager","trySaveClieckedButton","lastClickedButtonIdentifier","lastClickedButtonElement","buttons","buttonElem","attributeSplitted","toLocaleLowerCase","LastClickedExecutionManager","clearLeadData","getLeadInfo","confirmationCode","leadIdentifier","activationUrl","leadzConfirmationCode","activationResponse","onActivated","leadInfoUrl","LeadManager","loadButtons","loadForms","buttonsUrl","then","formsUrl","LeadzItemsManager","__webpack_module_cache__","__webpack_exports__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__","call"],"mappings":"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","file":"leadz.js","sourcesContent":["import { IButton } from \"./models/buttonInterfaces\";\r\nimport { IForm } from \"./models/formInterfaces\";\r\nimport { ILeadInfo, ILeadzEvents } from \"./models/leadInterfaces\";\r\n\r\nconst initialLeadInfo = {\r\n isLogged: false,\r\n globalScore: 0,\r\n visitorIdentifier: \"00000000-0000-0000-0000-000000000000\",\r\n scLists: [],\r\n properties: {},\r\n tags: []\r\n};\r\n\r\n/** Stores actual Leadz state - need to be initialized before usage */\r\nclass LeadzState {\r\n callLastClickedAfterLogin: boolean = false;\r\n events: ILeadzEvents = {};\r\n\r\n private _baseUrl!: string;\r\n private _campaignIdentifier!: string;\r\n private _initialized: boolean = false;\r\n\r\n debug: boolean = false;\r\n fetchScData: boolean = false;\r\n trackingEnabledCookieExpirationDays: number = 7;\r\n refreshItemsOnDomChange: boolean = false;\r\n trackingEnabled!: boolean;\r\n currentLeadInfo: ILeadInfo = { ...initialLeadInfo };\r\n\r\n get baseUrl(): string {\r\n return this._baseUrl;\r\n }\r\n\r\n get campaignIdentifier(): string {\r\n return this._campaignIdentifier;\r\n }\r\n\r\n get initialized(): boolean {\r\n return this._initialized;\r\n }\r\n\r\n initialize(baseUrl: string, campaignIdentifier: string) {\r\n if (this._initialized) {\r\n throw Error(\"Leadz has been already initialized.\");\r\n }\r\n\r\n this._baseUrl = baseUrl;\r\n this._campaignIdentifier = campaignIdentifier;\r\n this._initialized = true;\r\n }\r\n\r\n resetCurrentLeadInfo(): void {\r\n this.currentLeadInfo = { ...initialLeadInfo };\r\n }\r\n}\r\n\r\nexport default new LeadzState();\r\n","export const API_SCRIPTS_PART = \"/api/PublicScripts\";\r\nexport const API_URL_PART = \"/api/V2External\";\r\nexport const LEADZ_ITEM_TYPES = {\r\n button: {\r\n name: \"button\",\r\n attributeName: \"data-leadz\",\r\n path: \"NtcButton.js\",\r\n },\r\n form: {\r\n name: \"form\",\r\n attributeName: \"data-leadz-form-id\",\r\n path: \"NtcForm.js\",\r\n },\r\n};\r\n","import LeadzState from \"../LeadzState\";\r\nimport CookieManager from \"../managers/CookieManager\";\r\nimport LeadManager from \"../managers/LeadManager\";\r\nimport IFormHandler from \"./IFormHandler\";\r\nimport LastClieckedExecutionManager from \"../managers/LastClickedExecutionManager\";\r\nimport ButtonManager from \"../managers/ButtonManager\";\r\n\r\nclass LoginFormHandler implements IFormHandler {\r\n async handle(loginResult: any): Promise {\r\n if (!loginResult) return;\r\n\r\n const tokenExpiresAt = new Date();\r\n tokenExpiresAt.setSeconds(\r\n tokenExpiresAt.getSeconds() + loginResult.expireInSeconds\r\n );\r\n\r\n const accessToken = loginResult.accessToken;\r\n\r\n CookieManager.setAccessTokenCookie(accessToken, tokenExpiresAt);\r\n\r\n await LeadManager.reloadLeadData();\r\n // applypropertiesToHtmlButtons();\r\n\r\n LeadzState.events.onLoggedIn?.();\r\n\r\n const lastClickedButtonToExecute =\r\n LastClieckedExecutionManager.tryGetLastClickedButton();\r\n if (lastClickedButtonToExecute) {\r\n ButtonManager.executeButton(lastClickedButtonToExecute);\r\n LastClieckedExecutionManager.removeLastClickedButton();\r\n }\r\n }\r\n}\r\n\r\nexport default new LoginFormHandler();\r\n","import LeadzState from \"./LeadzState\";\r\nimport CookieManager from \"./managers/CookieManager\";\r\nimport { LeadzError } from \"./models/LeadzError\";\r\n\r\nexport class FetchError extends Error {\r\n result: any;\r\n\r\n constructor(message: string, result: any) {\r\n super(message);\r\n this.result = result;\r\n }\r\n}\r\n\r\nexport const leadzFetch = async (\r\n input: RequestInfo,\r\n init?: RequestInit,\r\n body?: any\r\n): Promise => {\r\n if (!LeadzState.trackingEnabled) {\r\n if (LeadzState.debug)\r\n console.error(\r\n \"Trying to fetch despite the Leadz tracking is disabled.\"\r\n );\r\n return Promise.reject();\r\n }\r\n\r\n if (!init) init = {};\r\n\r\n const headers = new Headers(init?.headers);\r\n\r\n if (!headers.has(\"X-Referrer\")) headers.append(\"X-Referrer\", location.href);\r\n\r\n if (!headers.has(\"Authorization\")) {\r\n const accessToken = CookieManager.readAccessTokenCookie();\r\n if (accessToken)\r\n headers.append(\"Authorization\", `Bearer ${accessToken}`);\r\n }\r\n\r\n if (init.method === \"POST\") {\r\n if (!headers.has(\"Content-type\"))\r\n headers.append(\"Content-type\", \"application/json\");\r\n\r\n const visitorIdentifier = CookieManager.readVisitorFromCookie();\r\n\r\n init.body = JSON.stringify({\r\n ...body,\r\n campaignIdentifier: LeadzState.campaignIdentifier,\r\n visitorIdentifier: isGuid(visitorIdentifier)\r\n ? visitorIdentifier\r\n : null,\r\n });\r\n }\r\n\r\n init.headers = headers;\r\n\r\n const response = await fetch(input, init);\r\n const responseJson = await response.json();\r\n if (response.status !== 200) {\r\n if (responseJson.__leadz) {\r\n const err = responseJson.error;\r\n const leadzError = new LeadzError({\r\n code: err.code,\r\n details: err.details,\r\n message: err.message\r\n });\r\n\r\n throw leadzError;\r\n } else {\r\n throw responseJson;\r\n }\r\n }\r\n\r\n return responseJson.result;\r\n};\r\n\r\nexport const getParamValue = (key: string): string | null => {\r\n const params = new URLSearchParams(window.location.search);\r\n const paramsArray = Array.from(params as any);\r\n\r\n return (\r\n paramsArray.find(\r\n (p) => p[0].toLowerCase() === key.toLowerCase()\r\n )?.[1] ?? null\r\n );\r\n};\r\n\r\nconst isGuid = (str: string | null | undefined) => {\r\n if (str === null || str === undefined || str.length === 0) return false;\r\n\r\n var regex = /^[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}$/;\r\n return regex.test(str);\r\n};\r\n\r\nexport const splitAttribute = (\r\n attributeName: string,\r\n element: Element\r\n): Array => {\r\n return element.getAttribute(attributeName)!.toLowerCase().split(\"_\");\r\n};\r\n","import LeadzState from \"./LeadzState\";\r\nimport LeadManager from \"./managers/LeadManager\";\r\nimport LeadzItemsManager from \"./managers/LeadzItemsManager\";\r\nimport CookieManager from \"./managers/CookieManager\";\r\nimport ButtonManager from \"./managers/ButtonManager\";\r\nimport FormManager from \"./managers/FormManager\";\r\nimport { ILeadInfo, ILeadzEvents, ILeadzOptions, ILeadzState } from \"./models/leadInterfaces\";\r\nimport { ILeadzError, } from \"./models/LeadzError\";\r\n\r\n/** Executes public Leadz logic. */\r\nexport class LeadzClient {\r\n private isExecuting: boolean = false;\r\n\r\n /** Gets Leadz events. */\r\n get events() : ILeadzEvents {\r\n return LeadzState.events;\r\n }\r\n\r\n /** Gets current Leadz state. */\r\n get state() : ILeadzState {\r\n return {\r\n lead: LeadzState.currentLeadInfo,\r\n };\r\n }\r\n\r\n /** Returns if tracing is enabled or not. */\r\n get isTrackingEnabled(): boolean {\r\n const trackingEnabledCookie = CookieManager.readTrackingEnabledCookie();\r\n return (\r\n trackingEnabledCookie !== null && trackingEnabledCookie === true\r\n );\r\n }\r\n\r\n /** Returns opt-out state. */\r\n get isOptOut(): boolean {\r\n const trackingEnabledCookie = CookieManager.readTrackingEnabledCookie();\r\n return (\r\n trackingEnabledCookie !== null && trackingEnabledCookie === false\r\n );\r\n }\r\n\r\n /**\r\n * Initializes Leadz script.\r\n * @param baseUrl - Leadz API base url.\r\n * @param campaignIdentifier - Unique campaign identifier.\r\n * @param trackingEnabled - Definies if Leadz should track the user - if no, then no request with user data should be send to Leadz system.\r\n */\r\n async initialize(\r\n baseUrl: string,\r\n campaignIdentifier: string,\r\n options?: ILeadzOptions\r\n ): Promise {\r\n if (options) {\r\n this.setOptions(options);\r\n }\r\n\r\n if (LeadzState.debug) console.log(\"Leadz DEBUG mode enabled.\");\r\n\r\n // Give a tracking priority to cookie.\r\n LeadzState.trackingEnabled = false;\r\n const tracingEnabledCookie = CookieManager.readTrackingEnabledCookie();\r\n\r\n if (tracingEnabledCookie) {\r\n LeadzState.trackingEnabled = tracingEnabledCookie;\r\n }\r\n\r\n LeadzState.initialize(baseUrl, campaignIdentifier);\r\n await LeadManager.reloadLeadData();\r\n\r\n await LeadzItemsManager.loadLeadzItems();\r\n ButtonManager.applypropertiesToHtmlButtons();\r\n\r\n await LeadManager.tryActivateLead();\r\n\r\n if (LeadzState.refreshItemsOnDomChange) {\r\n const domObserver = new MutationObserver((mutations, observer) => {\r\n observer.disconnect();\r\n ButtonManager.applypropertiesToHtmlButtons();\r\n observer.observe(document.body, {\r\n childList: true,\r\n subtree: true,\r\n });\r\n });\r\n domObserver.observe(document.body, {\r\n childList: true,\r\n subtree: true,\r\n });\r\n }\r\n\r\n LeadzState.events.onInitialized?.();\r\n if (LeadzState.debug)\r\n console.log(\"Leadz - initialization finished.\", LeadzState);\r\n }\r\n /** Explicitly sets leadz options.\r\n * @param options - Leadz options.\r\n */\r\n setOptions(options: ILeadzOptions) {\r\n if (options.debug !== undefined) LeadzState.debug = options.debug;\r\n\r\n if (options.callLastClickedAfterLogin !== undefined)\r\n LeadzState.callLastClickedAfterLogin =\r\n options.callLastClickedAfterLogin;\r\n\r\n if (options.refreshItemsOnDomChange !== undefined)\r\n LeadzState.refreshItemsOnDomChange =\r\n options.refreshItemsOnDomChange;\r\n\r\n if (options.fetchScData !== undefined)\r\n LeadzState.fetchScData = options.fetchScData;\r\n\r\n if (options.trackingEnabledCookieExpirationDays !== undefined)\r\n LeadzState.trackingEnabledCookieExpirationDays =\r\n options.trackingEnabledCookieExpirationDays;\r\n }\r\n\r\n /** Executes Leadz Form logic.\r\n * \r\n * @param e \r\n * @param onError - Function called on error. *IMPORTANT* The function is called only in case of Leadz-related error.\r\n * In other cases, like eg. connection problems (server down?), error is logged to the console (only if DEBUG is enabled).\r\n * @returns \r\n */\r\n async sendForm(e: Event, onError?: (error: ILeadzError, sender: HTMLFormElement) => void) {\r\n e.preventDefault();\r\n if (this.isExecuting) {\r\n if (LeadzState.debug)\r\n console.warn(\r\n \"Exiting from SENDFORM action - Leadz is currently executing.\"\r\n );\r\n return;\r\n }\r\n\r\n this.isExecuting = true;\r\n try {\r\n await FormManager.executeForm(\r\n e.currentTarget as HTMLFormElement,\r\n onError\r\n );\r\n } finally {\r\n this.isExecuting = false;\r\n }\r\n }\r\n\r\n /** Executes Leadz Button / SmartButton logic. */\r\n async executor(htmlElement: Element) {\r\n if (this.isExecuting) {\r\n if (LeadzState.debug)\r\n console.warn(\r\n \"Exiting from EXECUTOR action - Leadz is currently executing.\"\r\n );\r\n return;\r\n }\r\n\r\n this.isExecuting = true;\r\n try {\r\n await ButtonManager.executeButton(htmlElement);\r\n } finally {\r\n this.isExecuting = false;\r\n }\r\n }\r\n\r\n /** Logging-out the Lead. */\r\n async logout(): Promise {\r\n CookieManager.removeAccessTokenCookie();\r\n await LeadManager.reloadLeadData();\r\n LeadzState.events.onLoggedOut?.();\r\n if (LeadzState.debug) console.log(\"Leadz - logged-out.\");\r\n }\r\n\r\n /** Enablind tracking (in case if it is disabled).\r\n * Raises event \"onTrackingStateChanged\"\r\n */\r\n async enableTracking(): Promise {\r\n CookieManager.setTrackingEnabledCookie(true);\r\n\r\n if (LeadzState.trackingEnabled) return;\r\n\r\n LeadzState.trackingEnabled = true;\r\n if (LeadzState.initialized) {\r\n await LeadManager.reloadLeadData();\r\n ButtonManager.applypropertiesToHtmlButtons();\r\n LeadzState.events.onTrackingStateChanged?.(true);\r\n }\r\n\r\n if (LeadzState.debug) console.log(\"Leadz - tracking enabled.\");\r\n }\r\n\r\n /** Opting OUT from the tracking.\r\n * The function disables Leadz tracking functionallity until its enabled agin using \"enableTracking()\" method or removing cookie.\r\n * Raises event \"onTrackingStateChanged\" */\r\n async disableTracking(): Promise {\r\n CookieManager.setTrackingEnabledCookie(false);\r\n if (!LeadzState.trackingEnabled) return;\r\n\r\n LeadzState.trackingEnabled = false;\r\n\r\n if (LeadzState.initialized) {\r\n await LeadManager.reloadLeadData();\r\n LeadzState.events.onTrackingStateChanged?.(false);\r\n }\r\n\r\n if (LeadzState.debug) console.log(\"Leadz - tracking disabled.\");\r\n }\r\n}\r\n\r\n// Exports are required by typedoc.\r\nexport { ILeadzEvents, ILeadzState, ILeadzOptions, ILeadInfo, ILeadzError };\r\n// Default module export.\r\nexport default new LeadzClient();\r\n","import { API_URL_PART, LEADZ_ITEM_TYPES } from \"../consts\";\r\nimport { leadzFetch, splitAttribute } from \"../helpers\";\r\nimport LeadzState from \"../LeadzState\";\r\nimport { IButton, IButtonInfo, ISmartButton } from \"../models/buttonInterfaces\";\r\nimport { ButtonTag, ButtonType } from \"../models/enums\";\r\nimport { ILeadInfo } from \"../models/leadInterfaces\";\r\nimport { ISmartRule, SmartRuleType } from \"../models/smartRuleInterfaces\";\r\nimport CookieManager from \"./CookieManager\";\r\nimport LeadzItemsManager from \"./LeadzItemsManager\";\r\n\r\nexport interface IExecutionButtonInfo {\r\n buttonHtmlElement: Element;\r\n leadzButton: IButton;\r\n currentState: IButtonInfo;\r\n isFormButton: boolean;\r\n}\r\n\r\nclass ButtonManager {\r\n executeButton(htmlElement: Element) {\r\n const leadzButton = this.getLeadzExecutionButtonInfo(htmlElement);\r\n\r\n if (!leadzButton) {\r\n if (LeadzState.debug) {\r\n console.error(\r\n \"ExecuteButton - Couldn't find Leadz (button) for the html element.\",\r\n htmlElement\r\n );\r\n }\r\n return Promise.resolve();\r\n }\r\n\r\n return this.executeLeadzButton(leadzButton);\r\n }\r\n\r\n applypropertiesToHtmlButtons() {\r\n const buttonElements = document.querySelectorAll(\r\n `[${LEADZ_ITEM_TYPES.button.attributeName}]`\r\n );\r\n\r\n for (let i = 0; i < buttonElements.length; i++) {\r\n const htmlElement = buttonElements[i];\r\n const executionInfo = this.getLeadzExecutionButtonInfo(htmlElement);\r\n\r\n if (!executionInfo){\r\n if (LeadzState.debug) {\r\n console.error(\r\n \"ApplyProperties - Couldn't find Leadz (button) for the html element.\",\r\n htmlElement\r\n );\r\n }\r\n continue;\r\n }\r\n\r\n if (!executionInfo.isFormButton) {\r\n buttonElements[i].setAttribute(\r\n \"onclick\",\r\n \"leadz.executor(this)\"\r\n );\r\n }\r\n }\r\n }\r\n\r\n getLeadzExecutionButtonInfo(buttonElement: Element): IExecutionButtonInfo | null {\r\n const buttonAttributeSplitted = splitAttribute(\r\n LEADZ_ITEM_TYPES.button.attributeName,\r\n buttonElement\r\n );\r\n\r\n const submitButtonId =\r\n buttonAttributeSplitted[buttonAttributeSplitted.length - 1];\r\n\r\n const leadzButton = LeadzItemsManager.leadzButtons.find(\r\n (n) => n.identifier.toLowerCase() === submitButtonId.toLowerCase()\r\n );\r\n\r\n if (!leadzButton) {\r\n return null;\r\n }\r\n\r\n const smartButton = this.lookForSmartButton(\r\n leadzButton,\r\n LeadzState.currentLeadInfo\r\n );\r\n\r\n let currentState: IButtonInfo;\r\n if (smartButton) {\r\n currentState = {\r\n tag: ButtonTag.Smart,\r\n type: smartButton.type,\r\n identifier: smartButton.identifier,\r\n };\r\n } else {\r\n currentState = {\r\n tag: ButtonTag.Normal,\r\n type: leadzButton.type,\r\n identifier: leadzButton.identifier,\r\n };\r\n }\r\n\r\n return {\r\n buttonHtmlElement: buttonElement,\r\n leadzButton: leadzButton,\r\n currentState: currentState,\r\n isFormButton: !!(buttonElement as any).form,\r\n };\r\n }\r\n\r\n private executeLeadzButton = async (\r\n executionButtonInfo: IExecutionButtonInfo\r\n ) => {\r\n if (!LeadzState.trackingEnabled) {\r\n if (LeadzState.debug)\r\n console.warn(\r\n \"Trying to use Leadz (button) despite tracking is disabled.\",\r\n executionButtonInfo.leadzButton\r\n );\r\n\r\n LeadzState.events.onTrackingDisabledUseAttempt?.(\r\n executionButtonInfo.leadzButton, executionButtonInfo.buttonHtmlElement\r\n );\r\n return;\r\n }\r\n\r\n if (\r\n LeadzState.callLastClickedAfterLogin &&\r\n !executionButtonInfo.isFormButton &&\r\n executionButtonInfo.currentState.tag === ButtonTag.Normal\r\n ) {\r\n CookieManager.setLastClickedButtonIdentifier(\r\n executionButtonInfo.currentState.identifier\r\n );\r\n }\r\n\r\n const executeButtonUrl = new URL(\r\n `${API_URL_PART}/ExecuteButton`,\r\n LeadzState.baseUrl\r\n );\r\n\r\n try {\r\n const result = await leadzFetch(\r\n executeButtonUrl.href,\r\n {\r\n method: \"POST\",\r\n },\r\n {\r\n ...executionButtonInfo.currentState,\r\n }\r\n );\r\n this.parseButtonResult(\r\n result,\r\n executionButtonInfo.buttonHtmlElement\r\n );\r\n } catch (error) {\r\n LeadzState.events.onError?.(error);\r\n if (LeadzState.debug) console.error(error);\r\n }\r\n };\r\n\r\n parseButtonResult(buttonResult: any, buttonElement: Element) {\r\n switch (buttonResult.buttonType) {\r\n case ButtonType.OpenUrl:\r\n let validatedUrl = buttonResult.typeParameter as string;\r\n let openInNewWindow = false;\r\n if (validatedUrl.startsWith(\"_blank:\")) {\r\n openInNewWindow = true;\r\n validatedUrl = validatedUrl.substring(7); // Remove \"_blank:\"\r\n }\r\n\r\n if (validatedUrl.substring(0, 4) === \"www.\")\r\n validatedUrl = \"http://\" + validatedUrl;\r\n if (openInNewWindow) {\r\n window.open(validatedUrl)?.focus();\r\n } else window.location.href = validatedUrl;\r\n\r\n break;\r\n case ButtonType.ExecuteCallback:\r\n const callback = buttonResult.typeParameter;\r\n const func = new Function(\"button\", \"arg\", callback);\r\n func(buttonElement, buttonElement.getAttribute(\"leadz-arg\"));\r\n break;\r\n }\r\n }\r\n\r\n private lookForSmartButton(\r\n leadzButton: IButton,\r\n leadInfo: ILeadInfo\r\n ): ISmartButton | null {\r\n if (leadzButton.smartButtons.length === 0) return null;\r\n\r\n for (let idx = 0; idx < leadzButton.smartButtons.length; idx++) {\r\n const smart = leadzButton.smartButtons[idx];\r\n if (this.checkSmartButtonConditions(smart, leadInfo)) {\r\n return smart;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n private checkSmartButtonConditions(\r\n smartButton: ISmartButton,\r\n leadInfo: ILeadInfo\r\n ): boolean {\r\n for (var i = 0; i < smartButton.smartRuleGroups.length; i++) {\r\n var smartRules = smartButton.smartRuleGroups[i].smartRules;\r\n var isSmartGroupTrue = true;\r\n for (var j = 0; j < smartRules.length; j++) {\r\n if (!this.checkSmartRule(smartRules[j], leadInfo)) {\r\n isSmartGroupTrue = false;\r\n break;\r\n }\r\n }\r\n if (isSmartGroupTrue) return true;\r\n }\r\n return false;\r\n }\r\n\r\n private checkSmartRule(\r\n smartRule: ISmartRule,\r\n leadInfo: ILeadInfo\r\n ): boolean {\r\n switch (smartRule.type) {\r\n case SmartRuleType.Language:\r\n let leadLanguage = leadInfo.language;\r\n if (!leadLanguage)\r\n leadLanguage = navigator.languages\r\n ? navigator.languages[0]\r\n : navigator.language;\r\n\r\n const ruleLanguage = smartRule.ruleArgument;\r\n if (ruleLanguage && leadLanguage)\r\n return (\r\n ruleLanguage.split(\"-\")[0] ===\r\n leadLanguage.split(\"-\")[0]\r\n );\r\n return false;\r\n case SmartRuleType.AuthStatus:\r\n const ruleArgumentBool = JSON.parse(\r\n smartRule.ruleArgument.toLowerCase()\r\n ) as boolean;\r\n return ruleArgumentBool === leadInfo.isLogged;\r\n case SmartRuleType.GlobalScore:\r\n if (!this.isNumeric(smartRule.ruleArgument)) return false;\r\n\r\n const ruleScore = parseInt(smartRule.ruleArgument);\r\n switch (smartRule.ruleComparator.toLowerCase()) {\r\n case \"equal\":\r\n return leadInfo.globalScore === ruleScore;\r\n case \"notequal\":\r\n return leadInfo.globalScore !== ruleScore;\r\n case \"greather\":\r\n return leadInfo.globalScore > ruleScore;\r\n case \"greatherequal\":\r\n return leadInfo.globalScore >= ruleScore;\r\n case \"smaller\":\r\n return leadInfo.globalScore < ruleScore;\r\n case \"smallerequal\":\r\n return leadInfo.globalScore <= ruleScore;\r\n }\r\n\r\n if (LeadzState.debug) {\r\n console.warn(\r\n \"GlobalScore rule comparator not handled.\",\r\n smartRule\r\n );\r\n }\r\n\r\n return false;\r\n case SmartRuleType.LocalScore:\r\n // not implemented\r\n if (LeadzState.debug) {\r\n console.warn(\r\n \"Attempt to use not implemented LocalScore.\",\r\n smartRule\r\n );\r\n }\r\n return true;\r\n case SmartRuleType.ScSubscribe:\r\n if (!this.isNumeric(smartRule.ruleArgument)) return false;\r\n\r\n const ruleScListId = parseInt(smartRule.ruleArgument);\r\n switch (smartRule.ruleComparator.toLowerCase()) {\r\n case \"contains\":\r\n return leadInfo.scLists.some((n) => n === ruleScListId);\r\n case \"notcontains\":\r\n return !leadInfo.scLists.some(\r\n (n) => n === ruleScListId\r\n );\r\n }\r\n\r\n if (LeadzState.debug) {\r\n console.warn(\r\n \"SalesCommunicator rule comparator not handled.\",\r\n smartRule\r\n );\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n private isNumeric(str: string) {\r\n return !isNaN(parseFloat(str));\r\n }\r\n}\r\n\r\nexport default new ButtonManager();\r\n","import LeadzState from \"../LeadzState\";\r\n\r\nconst COOKIE_VISITOR_NAME = \"leadzVisitorLead\";\r\nconst COOKIE_ACCESS_TOKEN = \"leadzLeadAccessToken\";\r\nconst COOKIE_LAST_CLICKED_BUTTON_IDENTIFIER = \"leadzLastButtonIdentifier\";\r\nconst COOKIE_TRACKING_ENABLED = \"leadzEnableTracking\";\r\n\r\nclass CookieManager {\r\n readAccessTokenCookie(): string | null {\r\n const cookie = this.getCookie(COOKIE_ACCESS_TOKEN);\r\n return cookie;\r\n }\r\n\r\n setAccessTokenCookie(accessToken: string, expiration: Date): void {\r\n this.setCookie(COOKIE_ACCESS_TOKEN, accessToken, expiration);\r\n }\r\n\r\n removeAccessTokenCookie(): void {\r\n this.removeCookie(COOKIE_ACCESS_TOKEN);\r\n }\r\n\r\n readVisitorFromCookie(): string | null {\r\n const cookie = this.getCookie(COOKIE_VISITOR_NAME);\r\n if (!cookie || cookie === \"\") return null;\r\n return cookie;\r\n }\r\n\r\n seVisitorLeadCookie(visitorIdentifier: string): void {\r\n this.setCookie(COOKIE_VISITOR_NAME, visitorIdentifier);\r\n }\r\n\r\n removeVisitorCookie(): void {\r\n this.removeCookie(COOKIE_VISITOR_NAME);\r\n }\r\n\r\n readLastClickedButtonIdentifier(): string | null {\r\n const cookie = this.getCookie(COOKIE_LAST_CLICKED_BUTTON_IDENTIFIER);\r\n return cookie;\r\n }\r\n\r\n setLastClickedButtonIdentifier(accessToken: string): void {\r\n this.setCookie(COOKIE_LAST_CLICKED_BUTTON_IDENTIFIER, accessToken);\r\n }\r\n\r\n removeLastClickedButtonIdentifier(): void {\r\n this.removeCookie(COOKIE_LAST_CLICKED_BUTTON_IDENTIFIER);\r\n }\r\n\r\n readTrackingEnabledCookie(): boolean | null {\r\n const cookie = this.getCookie(COOKIE_TRACKING_ENABLED);\r\n if (cookie === null) return null;\r\n\r\n return JSON.parse(cookie);\r\n }\r\n\r\n setTrackingEnabledCookie(state: boolean): void {\r\n const expiration = new Date();\r\n expiration.setDate(\r\n expiration.getDate() +\r\n LeadzState.trackingEnabledCookieExpirationDays\r\n );\r\n\r\n this.setCookie(\r\n COOKIE_TRACKING_ENABLED,\r\n JSON.stringify(state),\r\n expiration\r\n );\r\n }\r\n\r\n removeTrackingEnabledCookie(): void {\r\n this.removeCookie(COOKIE_TRACKING_ENABLED);\r\n }\r\n\r\n private getCookie(name: string): string | null {\r\n name = name + \"=\";\r\n var ca = document.cookie.split(\";\");\r\n for (var i = 0; i < ca.length; i++) {\r\n var c = ca[i];\r\n while (c.charAt(0) == \" \") {\r\n c = c.substring(1);\r\n }\r\n if (c.indexOf(name) == 0) {\r\n return c.substring(name.length, c.length);\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n private setCookie(name: string, value: string, expiration?: Date) {\r\n let d: Date | undefined = expiration;\r\n\r\n if (!d) {\r\n d = new Date();\r\n d.setDate(d.getDate() + 50);\r\n }\r\n\r\n document.cookie =\r\n name +\r\n \"=\" +\r\n value +\r\n \";\" +\r\n \"path=/;\" +\r\n \"expires=\" +\r\n d.toUTCString() +\r\n \";SameSite=Strict;\";\r\n }\r\n\r\n private removeCookie(name: string) {\r\n document.cookie =\r\n name + \"=;expires=Thu, 01 Jan 1970 00:00:01 GMT;path=/\";\r\n }\r\n}\r\n\r\nexport default new CookieManager();\r\n","import { API_URL_PART, LEADZ_ITEM_TYPES } from \"../consts\";\r\nimport IFormHandler from \"../formHandlers/IFormHandler\";\r\nimport LoginFormHandler from \"../formHandlers/LoginFormHandler\";\r\nimport { getParamValue, leadzFetch, splitAttribute } from \"../helpers\";\r\nimport LeadzState from \"../LeadzState\";\r\nimport { IButton, IButtonInfo } from \"../models/buttonInterfaces\";\r\nimport { FormType } from \"../models/enums\";\r\nimport { IForm } from \"../models/formInterfaces\";\r\nimport { ILeadzError, LeadzError } from \"../models/LeadzError\";\r\nimport ButtonManager from \"./ButtonManager\";\r\nimport LeadzItemsManager from \"./LeadzItemsManager\";\r\n\r\nexport interface IExecutionFormData {\r\n formHtmlElement: HTMLFormElement;\r\n leadzForm: IForm;\r\n leadzButton: {\r\n buttonHtmlElement: Element;\r\n leadzButton: IButton;\r\n currentState: IButtonInfo;\r\n };\r\n formElements: Array;\r\n}\r\n\r\nclass FormManager {\r\n async executeForm(\r\n htmlElem: HTMLFormElement,\r\n onError?: (error: ILeadzError, sender: HTMLFormElement) => void\r\n ) {\r\n const leadzFormData = this.getLeadzFormData(htmlElem);\r\n\r\n if (!leadzFormData){\r\n if (LeadzState.debug){\r\n console.error(\"Could not execute leadz form because form can not be initialized properly.\", htmlElem);\r\n }\r\n return;\r\n }\r\n\r\n if (!LeadzState.trackingEnabled) {\r\n if (LeadzState.debug)\r\n console.warn(\r\n \"Trying to use Leadz (form) despite tracking is disabled.\",\r\n leadzFormData.leadzForm\r\n );\r\n\r\n LeadzState.events.onTrackingDisabledUseAttempt?.(\r\n leadzFormData.leadzForm, htmlElem\r\n );\r\n return;\r\n }\r\n\r\n const sendFormUrl = new URL(\r\n `${API_URL_PART}/ExecuteForm`,\r\n LeadzState.baseUrl\r\n );\r\n\r\n try {\r\n const result = await leadzFetch(\r\n sendFormUrl.href,\r\n {\r\n method: \"POST\",\r\n },\r\n {\r\n formId: leadzFormData.leadzForm.id,\r\n elements: leadzFormData.formElements,\r\n button: leadzFormData.leadzButton.currentState,\r\n }\r\n );\r\n this.parseFormResult(result, leadzFormData);\r\n } catch (error) {\r\n if (error instanceof LeadzError)\r\n onError?.(error, htmlElem);\r\n\r\n if (LeadzState.debug) console.error(error);\r\n }\r\n }\r\n\r\n private async parseFormResult(\r\n formResponse: any,\r\n leadzFormData: IExecutionFormData\r\n ): Promise {\r\n let handler: IFormHandler | null = null;\r\n switch (leadzFormData.leadzForm.formType) {\r\n case FormType.Login:\r\n handler = LoginFormHandler;\r\n break;\r\n }\r\n await handler?.handle(formResponse.formResult);\r\n\r\n ButtonManager.parseButtonResult(\r\n formResponse.buttonResult,\r\n leadzFormData.leadzButton.buttonHtmlElement\r\n );\r\n }\r\n\r\n private getLeadzFormData(formElement: HTMLFormElement): IExecutionFormData | null {\r\n const leadzAttributeSplitted = splitAttribute(\r\n LEADZ_ITEM_TYPES.form.attributeName,\r\n formElement\r\n );\r\n\r\n const formId =\r\n leadzAttributeSplitted[leadzAttributeSplitted.length - 1]; // Id always at the end.\r\n\r\n const leadzForm = LeadzItemsManager.leadzForms.find(\r\n (n) => n.id.toLowerCase() === formId.toLowerCase()\r\n );\r\n\r\n if (!leadzForm) {\r\n console.error(\"Could not find proper Leadz form for the HTML element.\", formElement);\r\n return null;\r\n }\r\n \r\n\r\n const submitElement = formElement.querySelector(\r\n `input[type=submit][${LEADZ_ITEM_TYPES.button.attributeName}], button[type=submit][${LEADZ_ITEM_TYPES.button.attributeName}]`\r\n );\r\n\r\n if (!submitElement) {\r\n console.error(\"Could not find proper Leadz submit button for the form.\", formElement);\r\n return null;\r\n }\r\n \r\n\r\n const leadzButtonInfo =\r\n ButtonManager.getLeadzExecutionButtonInfo(submitElement);\r\n\r\n if (!leadzButtonInfo){\r\n if (LeadzState.debug){\r\n console.error(\r\n \"FormSubmitButton - Couldn't find Leadz (submit-button) for the html element.\",\r\n submitElement\r\n );\r\n }\r\n return null;\r\n }\r\n\r\n const formElements: Array = [];\r\n\r\n // Form inputs elements\r\n var elements = formElement.querySelectorAll(\"input, select, textarea\");\r\n\r\n for (var i = 0; i < elements.length; ++i) {\r\n var element = elements[i] as any;\r\n var name = element.name;\r\n var value = element.value;\r\n if (element.type == \"radio\") {\r\n value = this.getRadioValue(element, elements);\r\n } else if (element.type == \"checkbox\") {\r\n value = this.getCheckboxValue(element);\r\n }\r\n const elems = formElements.filter((n) => n.key === name);\r\n if (name && elems.length == 0) {\r\n formElements.push({ key: name, value: value });\r\n }\r\n }\r\n\r\n // Custom elements\r\n if (leadzForm.formType === FormType.RepeatPassword) {\r\n const resetPasswordCode = getParamValue(\"resetpasswordcode\");\r\n const leadzUserIdentifier = getParamValue(\"leadzuseridentifier\");\r\n\r\n if (!resetPasswordCode || !leadzUserIdentifier)\r\n throw new Error(\r\n \"Missing 'resetpasswordcode' or 'leadzuseridentifier' parameters.\"\r\n );\r\n\r\n formElements.push({\r\n key: \"resetCode\",\r\n value: resetPasswordCode,\r\n });\r\n formElements.push({\r\n key: \"userId\",\r\n value: leadzUserIdentifier,\r\n });\r\n }\r\n\r\n return {\r\n formHtmlElement: formElement,\r\n leadzForm: leadzForm,\r\n leadzButton: {\r\n ...leadzButtonInfo,\r\n buttonHtmlElement: submitElement,\r\n },\r\n formElements: formElements,\r\n };\r\n }\r\n\r\n private getRadioValue(element: any, elements: NodeListOf) {\r\n var name = element.name;\r\n for (var i = 0; i < elements.length; i++) {\r\n var subElement = elements[i];\r\n if (subElement.name == name && subElement.checked) {\r\n return subElement.value;\r\n }\r\n }\r\n return \"\";\r\n }\r\n\r\n private getCheckboxValue(element: any) {\r\n var checked = element.checked;\r\n return checked ? \"true\" : \"false\";\r\n }\r\n}\r\n\r\nexport default new FormManager();\r\n","import { LEADZ_ITEM_TYPES } from \"../consts\";\r\nimport { splitAttribute } from \"../helpers\";\r\nimport LeadzState from \"../LeadzState\";\r\nimport { IExecutionButtonInfo } from \"./ButtonManager\";\r\nimport CookieManager from \"./CookieManager\";\r\n\r\nclass LastClickedExecutionManager {\r\n trySaveClieckedButton(executionButtonInfo: IExecutionButtonInfo) {\r\n if (\r\n LeadzState.callLastClickedAfterLogin &&\r\n !LeadzState.currentLeadInfo.isLogged &&\r\n !executionButtonInfo.isFormButton\r\n ) {\r\n CookieManager.setLastClickedButtonIdentifier(\r\n executionButtonInfo.leadzButton.identifier\r\n );\r\n }\r\n }\r\n\r\n tryGetLastClickedButton() {\r\n if (!LeadzState.callLastClickedAfterLogin) return null;\r\n\r\n const lastClickedButtonIdentifier =\r\n CookieManager.readLastClickedButtonIdentifier();\r\n\r\n if (!lastClickedButtonIdentifier) return null;\r\n\r\n const buttons = document.querySelectorAll(\r\n `[${LEADZ_ITEM_TYPES.button.attributeName}]`\r\n );\r\n\r\n let lastClickedButtonElement: Element | undefined;\r\n for (let i = 0; i < buttons.length; i++) {\r\n const buttonElem = buttons[i];\r\n const attributeSplitted = splitAttribute(\r\n LEADZ_ITEM_TYPES.button.attributeName,\r\n buttonElem\r\n );\r\n const buttonId = attributeSplitted[attributeSplitted.length - 1];\r\n if (\r\n buttonId.toLocaleLowerCase() ===\r\n lastClickedButtonIdentifier.toLocaleLowerCase()\r\n ) {\r\n lastClickedButtonElement = buttonElem;\r\n break;\r\n }\r\n }\r\n\r\n if (lastClickedButtonElement) {\r\n return lastClickedButtonElement;\r\n } else {\r\n if (LeadzState.debug)\r\n console.warn(\r\n \"Can't find last clicked button to execute.\",\r\n lastClickedButtonIdentifier\r\n );\r\n return null;\r\n }\r\n }\r\n\r\n removeLastClickedButton() {\r\n CookieManager.removeLastClickedButtonIdentifier();\r\n }\r\n}\r\n\r\nexport default new LastClickedExecutionManager();\r\n","import { API_URL_PART } from \"../consts\";\r\nimport LoginFormHandler from \"../formHandlers/LoginFormHandler\";\r\nimport { getParamValue, leadzFetch } from \"../helpers\";\r\nimport LeadzState from \"../LeadzState\";\r\nimport { ILeadInfo } from \"../models/leadInterfaces\";\r\nimport CookieManager from \"./CookieManager\";\r\n\r\nclass LeadManager {\r\n async reloadLeadData(): Promise {\r\n if (!LeadzState.trackingEnabled) {\r\n if (LeadzState.debug) {\r\n console.log(\r\n \"Leadz tracing is disabled. Clearing leadz cookies.\"\r\n );\r\n }\r\n\r\n this.clearLeadData();\r\n return;\r\n }\r\n\r\n try {\r\n const leadInfo = await this.getLeadInfo();\r\n CookieManager.seVisitorLeadCookie(leadInfo.visitorIdentifier);\r\n LeadzState.currentLeadInfo = leadInfo;\r\n } catch (error) {\r\n LeadzState.events.onError?.(error);\r\n if (LeadzState.debug) {\r\n console.error(\r\n \"Couldn't fetch Lead data - clearing lead data.\",\r\n error\r\n );\r\n }\r\n this.clearLeadData();\r\n }\r\n }\r\n\r\n async tryActivateLead(): Promise {\r\n const confirmationCode = getParamValue(\"leadzconfirmationcode\");\r\n const leadIdentifier = getParamValue(\"leadzuseridentifier\");\r\n\r\n if (confirmationCode && leadIdentifier) {\r\n const activationUrl = new URL(\r\n `${API_URL_PART}/ActivateLead`,\r\n LeadzState.baseUrl\r\n );\r\n const activationResponse = await leadzFetch(\r\n activationUrl.href,\r\n {\r\n method: \"POST\",\r\n },\r\n {\r\n leadzConfirmationCode: confirmationCode,\r\n leadzUserIdentifier: leadIdentifier,\r\n }\r\n );\r\n\r\n if (activationResponse.loginResult) {\r\n await LoginFormHandler.handle(activationResponse.loginResult);\r\n }\r\n LeadzState.events.onActivated?.();\r\n }\r\n return Promise.resolve();\r\n }\r\n\r\n private async getLeadInfo(): Promise {\r\n const leadInfoUrl = new URL(\r\n `${API_URL_PART}/LeadInfo`,\r\n LeadzState.baseUrl\r\n );\r\n\r\n return leadzFetch(\r\n leadInfoUrl.href,\r\n {\r\n method: \"POST\",\r\n },\r\n {\r\n fetchScData: LeadzState.fetchScData,\r\n }\r\n );\r\n }\r\n\r\n private clearLeadData(): void {\r\n CookieManager.removeLastClickedButtonIdentifier();\r\n CookieManager.removeAccessTokenCookie();\r\n CookieManager.removeVisitorCookie();\r\n LeadzState.resetCurrentLeadInfo();\r\n }\r\n}\r\n\r\nexport default new LeadManager();\r\n","import { API_SCRIPTS_PART, LEADZ_ITEM_TYPES } from \"../consts\";\r\nimport LeadzState from \"../LeadzState\";\r\nimport { IButton } from \"../models/buttonInterfaces\";\r\nimport { IForm } from \"../models/formInterfaces\";\r\n\r\nclass LeadzItemsManager {\r\n leadzButtons: Array = [];\r\n leadzForms: Array = [];\r\n\r\n async loadLeadzItems(): Promise {\r\n this.leadzButtons = await this.loadButtons();\r\n this.leadzForms = await this.loadForms();\r\n }\r\n\r\n private async loadButtons(): Promise> {\r\n if (LeadzState.debug) console.log(\"Leadz - loading buttons.\");\r\n\r\n const buttonsUrl = new URL(\r\n `${API_SCRIPTS_PART}/${LeadzState.campaignIdentifier}/${LEADZ_ITEM_TYPES.button.path}`,\r\n LeadzState.baseUrl\r\n );\r\n const buttons = (await fetch(buttonsUrl.href).then((response) =>\r\n response.json()\r\n )) as Array;\r\n\r\n return buttons;\r\n }\r\n\r\n private async loadForms(): Promise> {\r\n if (LeadzState.debug) console.log(\"Leadz - loading forms.\");\r\n\r\n const formsUrl = new URL(\r\n `${API_SCRIPTS_PART}/${LeadzState.campaignIdentifier}/${LEADZ_ITEM_TYPES.form.path}`,\r\n LeadzState.baseUrl\r\n );\r\n const forms = (await fetch(formsUrl.href).then((response) =>\r\n response.json()\r\n )) as Array;\r\n\r\n return forms;\r\n }\r\n}\r\n\r\nexport default new LeadzItemsManager();\r\n","export interface ILeadzError {\r\n /** Error code. */\r\n code: number,\r\n /** Error message. */\r\n message: string,\r\n /** Error details. (Usually null) */\r\n details: string | null\r\n} \r\n\r\nexport class LeadzError implements ILeadzError {\r\n code: number;\r\n message: string;\r\n details: string | null;\r\n\r\n constructor(init: ILeadzError) {\r\n this.code = init.code;\r\n this.message = init.message;\r\n this.details = init.details;\r\n }\r\n}","export enum ButtonTag {\r\n Normal = 0,\r\n Smart = 1,\r\n}\r\n\r\nexport enum ButtonType {\r\n OpenUrl = 0,\r\n ExecuteCallback = 1,\r\n}\r\n\r\nexport enum FormType {\r\n Login = 0,\r\n Register = 1,\r\n ForgotPassword = 2,\r\n RepeatPassword = 3,\r\n Profile = 5,\r\n Custom = 7,\r\n}\r\n","export enum SmartRuleType {\r\n Language = 0,\r\n AuthStatus = 1,\r\n GlobalScore = 2,\r\n LocalScore = 3,\r\n ScSubscribe = 4,\r\n}\r\n\r\nexport interface ISmartRule {\r\n type: SmartRuleType;\r\n ruleComparator: string;\r\n ruleArgument: string;\r\n priority: number;\r\n}\r\n\r\nexport interface ISmartRuleGroup {\r\n priority: number;\r\n smartRules: Array;\r\n}\r\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(607);\n"],"sourceRoot":""}