{"version":3,"sources":["webpack:///./cartridges/app_designholding/cartridge/client/default/js/components/chat/chat.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/components/chat/index.js"],"names":["HOOK_CONFIG","HOOK_TRIGGER_BUTTON","HOOK_TRIGGER_BUTTON_EXT","HOOK_COOKIE_WARNING","HIDDEN_CLASS","Chat","constructor","element","configEl","querySelector","buttons","document","querySelectorAll","buttonsExt","invalidCookies","Cookies","cookieIsValid","cookieName","advertising","length","bindButtonEventsEXT","config","language","html","lang","buttonName","dataset","buttonId","eswLiveAgentDevName","agentName","extraPrechatFormDetails","country","userCountry","region","userRegion","userLanguage","load","addScript","bindEvents","bindButtonEvents","openChat","button","click","showCookieWarning","originButton","parentElement","classList","remove","Events","$on","reinitButtons","forEach","addEventListener","isLoaded","buttonExt","jsFile","createElement","type","src","setAttribute","onload","initChat","getElementsByTagName","appendChild","initESW","gslbBaseURL","embedded_svc","settings","displayHelpButton","enabledFeatures","entryFeature","extraPrechatInfo","init","baseLiveAgentContentURL","deploymentId","baseLiveAgentURL","isOfflineSupportEnabled","window","setTimeout","console","error"],"mappings":"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","file":"js/Chat.js","sourcesContent":["/* global embedded_svc */\nimport { html } from '@utilities/dom-elements';\nimport Cookies from '@components/cookies';\nimport Events from \"@utilities/events\";\n\nconst HOOK_CONFIG = '[js-hook-chat-config]';\nconst HOOK_TRIGGER_BUTTON = '[js-hook-open-chat]';\nconst HOOK_TRIGGER_BUTTON_EXT ='[js-hook-open-chat-ext]';\nconst HOOK_COOKIE_WARNING = '[js-hook-chat-cookie-warning]';\nconst HIDDEN_CLASS = 'u-hidden';\n\nclass Chat {\n  constructor(element) {\n    this.element = element;\n    this.configEl = this.element.querySelector(HOOK_CONFIG);\n    this.buttons = [...document.querySelectorAll(HOOK_TRIGGER_BUTTON)];\n    this.buttonsExt = [...document.querySelectorAll(HOOK_TRIGGER_BUTTON_EXT)];\n    this.invalidCookies = !Cookies.cookieIsValid(Cookies.cookieName.advertising);\n\n    if(this.buttonsExt.length > 0){\n      this.bindButtonEventsEXT();\n    }\n\n    if(!this.configEl){\n      return;\n    }\n\n    this.config = {\n      language: html.lang,\n      buttonName: this.configEl.dataset.buttonName,\n      buttonId: this.configEl.dataset.buttonId,\n      eswLiveAgentDevName: this.configEl.dataset.agentName,\n      extraPrechatFormDetails: {\n        country: this.element.dataset.userCountry,\n        region: this.element.dataset.userRegion,\n        language: this.element.dataset.userLanguage,\n      }\n    }\n\n    if (!this.invalidCookies && this.element.dataset.load === 'true') this.addScript();\n\n    this.bindEvents();\n    this.bindButtonEvents();\n  }\n\n  static openChat() {\n    const button = document.querySelector('.embeddedServiceHelpButton button');\n    if (button) button.click();\n  }\n\n  static showCookieWarning(originButton) {\n    originButton.parentElement.querySelector(HOOK_COOKIE_WARNING).classList.remove(HIDDEN_CLASS);\n  }\n\n  bindEvents() {\n    Events.$on('chat::reinit-buttons', () => this.reinitButtons());\n  }\n\n  bindButtonEvents() {\n    this.buttons.forEach(button => {\n      button.addEventListener('click', () => {\n        if (this.isLoaded) {\n          Chat.openChat();\n        } else {\n          this.addScript(true, button);\n        }\n      });\n    });\n  }\n\n  bindButtonEventsEXT() {\n    this.buttonsExt.forEach(buttonExt => {\n      buttonExt.addEventListener('click', () => {\n          Chat.openChat();\n      });\n    });\n  }\n\n  addScript(openChat) {\n    this.isLoaded = true;\n\n    const jsFile = document.createElement('script');\n    jsFile.type = 'text/javascript';\n    jsFile.src = 'https://service.force.com/embeddedservice/5.0/esw.min.js';\n    jsFile.setAttribute('async', '');\n    jsFile.setAttribute('defer', '');\n    jsFile.onload = () => {\n      this.initChat(openChat);\n    };\n\n    document.getElementsByTagName('head')[0].appendChild(jsFile);\n  }\n\n  initChat(openChat) {\n    /**\n     * Chat config based on what we received from the customer\n     * Keep commented out code for future reference\n     */\n    const initESW = (gslbBaseURL) => {\n      embedded_svc.settings.displayHelpButton = true;\n      embedded_svc.settings.language = this.config.language;\n\n      // embedded_svc.settings.defaultMinimizedText = 'Chat'; // (Defaults to Chat with an Expert)\n      // embedded_svc.settings.disabledMinimizedText = ''; // (Defaults to Agent Offline)\n\n      // embedded_svc.settings.loadingText = ''; // (Defaults to Loading)\n      // embedded_svc.settings.storageDomain = 'yourdomain.com'; //(Sets the domain for your deployment so that visitors can navigate subdomains during a chat session)\n\n      // Settings for Chat\n      // embedded_svc.settings.directToButtonRouting = function(prechatFormData) {\n      // Dynamically changes the button ID based on what the visitor enters in the pre-chat form.\n      // Returns a valid button ID.\n      // };\n      // Sets the auto-population of pre-chat form fields\n      // embedded_svc.settings.prepopulatedPrechatFields = {\n\n      // };\n      // embedded_svc.settings.fallbackRouting = []; //An array of button IDs, user IDs, or userId_buttonId\n      // embedded_svc.settings.offlineSupportMinimizedText = 'Chat'; // (Defaults to Contact Us)\n\n      embedded_svc.settings.enabledFeatures = ['LiveAgent'];\n      embedded_svc.settings.entryFeature = 'LiveAgent';\n\n      embedded_svc.settings.extraPrechatInfo = [{\n        'entityFieldMaps': [{\n          'doCreate': true,\n          'doFind': true,\n          'fieldName': 'LastName',\n          'isExactMatch': true,\n          'label': 'Last Name'\n        }, {\n          'doCreate': true,\n          'doFind': true,\n          'fieldName': 'FirstName',\n          'isExactMatch': true,\n          'label': 'First Name'\n        }, {\n          'doCreate': true,\n          'doFind': true,\n          'fieldName': 'Email',\n          'isExactMatch': true,\n          'label': 'Email'\n        }],\n        'entityName': 'Contact',\n        'showOnCreate': false\n      }];\n\n      embedded_svc.settings.extraPrechatFormDetails = [{\n        'label': 'Country',\n        'value': this.config.extraPrechatFormDetails.country,\n        'transcriptFields': ['Country__c'],\n        'displayToAgent': true\n      }, {\n        'label': 'Region',\n        'value': this.config.extraPrechatFormDetails.region,\n        'transcriptFields': ['Region__c'],\n        'displayToAgent': true\n      }, {\n        'label': 'Language',\n        'value': this.config.extraPrechatFormDetails.language,\n        'transcriptFields': ['Language__c'],\n        'displayToAgent': true\n      }];\n\n      embedded_svc.init(\n        'https://tfour.my.salesforce.com',\n        'https://tfour.force.com',\n        gslbBaseURL,\n        '00D2p000000P6Rt',\n        this.config.buttonName,\n        {\n          baseLiveAgentContentURL: 'https://c.la1-c2-fra.salesforceliveagent.com/content',\n          deploymentId: '5722p000000HCUY',\n          buttonId: this.config.buttonId,\n          baseLiveAgentURL: 'https://d.la1-c2-fra.salesforceliveagent.com/chat',\n          eswLiveAgentDevName: this.config.eswLiveAgentDevName,\n          isOfflineSupportEnabled: false\n        }\n      );\n    };\n\n\n    if (window.embedded_svc) {\n      initESW('https://service.force.com');\n\n      if (openChat) {\n        setTimeout(() => {\n          Chat.openChat();\n        }, 1000);\n      }\n    } else {\n      console.error('Failed to load chat script');\n    }\n  }\n\n  reinitButtons() {\n    this.buttons = [...document.querySelectorAll(HOOK_TRIGGER_BUTTON)];\n\n    this.bindButtonEvents();\n  }\n}\n\nexport default Chat;\n","import Chat from './chat'\n\nexport default Chat\n"],"sourceRoot":""}