{"version":3,"sources":["webpack:///./app/javascript/shared/components/Button.vue?d9aa","webpack:///./app/javascript/shared/components/Button.vue?26c2","webpack:///app/javascript/shared/components/Button.vue","webpack:///./app/javascript/shared/components/Button.vue","webpack:///./app/javascript/widget/views/Home.vue?40ec","webpack:///./app/javascript/widget/components/GroupedAvatars.vue?4d56","webpack:///app/javascript/widget/components/GroupedAvatars.vue","webpack:///./app/javascript/widget/components/AvailableAgents.vue?df8c","webpack:///app/javascript/widget/components/AvailableAgents.vue","webpack:///./app/javascript/widget/components/GroupedAvatars.vue","webpack:///./app/javascript/widget/components/GroupedAvatars.vue?84ff","webpack:///./app/javascript/widget/components/AvailableAgents.vue","webpack:///./app/javascript/widget/components/AvailableAgents.vue?cfab","webpack:///app/javascript/widget/components/TeamAvailability.vue","webpack:///./app/javascript/widget/components/TeamAvailability.vue?b386","webpack:///./app/javascript/widget/components/TeamAvailability.vue","webpack:///./app/javascript/widget/components/TeamAvailability.vue?9f03","webpack:///app/javascript/widget/views/Home.vue","webpack:///./app/javascript/widget/views/Home.vue?129f","webpack:///./app/javascript/widget/views/Home.vue"],"names":["component","_vm","this","_h","$createElement","_self","_c","class","buttonClassName","style","attrs","disabled","on","onClick","_t","staticClass","_l","user","index","key","id","name","avatar","users","$dm","_v","_s","isOnline","$t","replyWaitMessage","availableAgents","_e","widgetColor","textColor","startConversation","hasConversation","conversationSize"],"mappings":"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","file":"js/52-b934f702fbe3b6360f2c.chunk.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('button',{class:_vm.buttonClassName,style:(_vm.buttonStyles),attrs:{\"disabled\":_vm.disabled},on:{\"click\":_vm.onClick}},[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--7-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Button.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--7-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Button.vue?vue&type=script&lang=js&\"","<template>\n  <button\n    :class=\"buttonClassName\"\n    :style=\"buttonStyles\"\n    :disabled=\"disabled\"\n    @click=\"onClick\"\n  >\n    <slot />\n  </button>\n</template>\n<script>\nexport default {\n  props: {\n    block: {\n      type: Boolean,\n      default: false,\n    },\n    type: {\n      type: String,\n      default: 'blue',\n    },\n    bgColor: {\n      type: String,\n      default: '',\n    },\n    textColor: {\n      type: String,\n      default: '',\n    },\n    disabled: {\n      type: Boolean,\n      default: false,\n    },\n  },\n  computed: {\n    buttonClassName() {\n      let className = 'text-white py-3 px-4 rounded shadow-sm leading-4';\n      if (this.type === 'clear') {\n        className = 'flex mx-auto mt-4 text-xs leading-3 w-auto text-black-600';\n      }\n\n      if (this.type === 'blue' && !Object.keys(this.buttonStyles).length) {\n        className = `${className} bg-woot-500 hover:bg-woot-700`;\n      }\n      if (this.block) {\n        className = `${className} w-full`;\n      }\n      return className;\n    },\n    buttonStyles() {\n      const styles = {};\n      if (this.bgColor) {\n        styles.backgroundColor = this.bgColor;\n      }\n      if (this.textColor) {\n        styles.color = this.textColor;\n      }\n      return styles;\n    },\n  },\n  methods: {\n    onClick(e) {\n      this.$emit('click', e);\n    },\n  },\n};\n</script>\n","import { render, staticRenderFns } from \"./Button.vue?vue&type=template&id=05075a0e&\"\nimport script from \"./Button.vue?vue&type=script&lang=js&\"\nexport * from \"./Button.vue?vue&type=script&lang=js&\"\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","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"flex flex-1 flex-col justify-end\"},[_c('div',{staticClass:\"flex flex-1 overflow-auto\"}),_vm._v(\" \"),_c('team-availability',{attrs:{\"available-agents\":_vm.availableAgents,\"has-conversation\":!!_vm.conversationSize},on:{\"start-conversation\":_vm.startConversation}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--7-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GroupedAvatars.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--7-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GroupedAvatars.vue?vue&type=script&lang=js&\"","<template>\n  <div class=\"flex\">\n    <span\n      v-for=\"(user, index) in users\"\n      :key=\"user.id\"\n      :class=\"\n        `${\n          index ? '-ml-4' : ''\n        } inline-block rounded-full text-white shadow-solid`\n      \"\n    >\n      <thumbnail\n        size=\"40px\"\n        :username=\"user.name\"\n        :src=\"user.avatar\"\n        has-border\n      />\n    </span>\n  </div>\n</template>\n\n<script>\nimport Thumbnail from 'dashboard/components/widgets/Thumbnail.vue';\n\nexport default {\n  name: 'GroupedAvatars',\n  components: { Thumbnail },\n  props: {\n    users: {\n      type: Array,\n      default: () => [],\n    },\n  },\n};\n</script>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--7-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AvailableAgents.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--7-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AvailableAgents.vue?vue&type=script&lang=js&\"","<template>\n  <grouped-avatars :users=\"users\" />\n</template>\n\n<script>\nimport GroupedAvatars from 'widget/components/GroupedAvatars.vue';\n\nexport default {\n  name: 'AvailableAgents',\n  components: { GroupedAvatars },\n  props: {\n    agents: {\n      type: Array,\n      default: () => [],\n    },\n  },\n  computed: {\n    users() {\n      return this.agents.slice(0, 5).map(agent => ({\n        id: agent.id,\n        avatar: agent.avatar_url,\n        name: agent.name,\n      }));\n    },\n  },\n};\n</script>\n","import { render, staticRenderFns } from \"./GroupedAvatars.vue?vue&type=template&id=1f2b141a&\"\nimport script from \"./GroupedAvatars.vue?vue&type=script&lang=js&\"\nexport * from \"./GroupedAvatars.vue?vue&type=script&lang=js&\"\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","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"flex\"},_vm._l((_vm.users),function(user,index){return _c('span',{key:user.id,class:((index ? '-ml-4' : '') + \" inline-block rounded-full text-white shadow-solid\")},[_c('thumbnail',{attrs:{\"size\":\"40px\",\"username\":user.name,\"src\":user.avatar,\"has-border\":\"\"}})],1)}),0)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./AvailableAgents.vue?vue&type=template&id=9765f988&\"\nimport script from \"./AvailableAgents.vue?vue&type=script&lang=js&\"\nexport * from \"./AvailableAgents.vue?vue&type=script&lang=js&\"\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","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('grouped-avatars',{attrs:{\"users\":_vm.users}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <div class=\"px-5\">\n    <div class=\"flex items-center justify-between mb-4\">\n      <div\n        class=\"max-w-xs\"\n        :class=\"$dm('text-black-700', 'dark:text-slate-50')\"\n      >\n        <div class=\"text-base leading-5 font-medium mb-1\">\n          {{\n            isOnline\n              ? $t('TEAM_AVAILABILITY.ONLINE')\n              : $t('TEAM_AVAILABILITY.OFFLINE')\n          }}\n        </div>\n        <div class=\"text-xs leading-3 mt-1\">\n          {{ replyWaitMessage }}\n        </div>\n      </div>\n      <available-agents v-if=\"isOnline\" :agents=\"availableAgents\" />\n    </div>\n    <custom-button\n      class=\"font-medium\"\n      block\n      :bg-color=\"widgetColor\"\n      :text-color=\"textColor\"\n      @click=\"startConversation\"\n    >\n      {{\n        hasConversation ? $t('CONTINUE_CONVERSATION') : $t('START_CONVERSATION')\n      }}\n    </custom-button>\n  </div>\n</template>\n\n<script>\nimport { mapGetters } from 'vuex';\nimport { getContrastingTextColor } from '@chatwoot/utils';\nimport nextAvailabilityTime from 'widget/mixins/nextAvailabilityTime';\nimport AvailableAgents from 'widget/components/AvailableAgents.vue';\nimport CustomButton from 'shared/components/Button';\nimport configMixin from 'widget/mixins/configMixin';\nimport availabilityMixin from 'widget/mixins/availability';\nimport darkMixin from 'widget/mixins/darkModeMixin.js';\n\nexport default {\n  name: 'TeamAvailability',\n  components: {\n    AvailableAgents,\n    CustomButton,\n  },\n  mixins: [configMixin, nextAvailabilityTime, availabilityMixin, darkMixin],\n  props: {\n    availableAgents: {\n      type: Array,\n      default: () => {},\n    },\n    hasConversation: {\n      type: Boolean,\n      default: false,\n    },\n  },\n\n  computed: {\n    ...mapGetters({\n      widgetColor: 'appConfig/getWidgetColor',\n    }),\n    textColor() {\n      return getContrastingTextColor(this.widgetColor);\n    },\n    isOnline() {\n      const { workingHoursEnabled } = this.channelConfig;\n      const anyAgentOnline = this.availableAgents.length > 0;\n\n      if (workingHoursEnabled) {\n        return this.isInBetweenTheWorkingHours;\n      }\n      return anyAgentOnline;\n    },\n  },\n  methods: {\n    startConversation() {\n      this.$emit('start-conversation');\n    },\n  },\n};\n</script>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--7-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TeamAvailability.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--7-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TeamAvailability.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TeamAvailability.vue?vue&type=template&id=5b86a948&\"\nimport script from \"./TeamAvailability.vue?vue&type=script&lang=js&\"\nexport * from \"./TeamAvailability.vue?vue&type=script&lang=js&\"\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","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"px-5\"},[_c('div',{staticClass:\"flex items-center justify-between mb-4\"},[_c('div',{staticClass:\"max-w-xs\",class:_vm.$dm('text-black-700', 'dark:text-slate-50')},[_c('div',{staticClass:\"text-base leading-5 font-medium mb-1\"},[_vm._v(\"\\n        \"+_vm._s(_vm.isOnline\n            ? _vm.$t('TEAM_AVAILABILITY.ONLINE')\n            : _vm.$t('TEAM_AVAILABILITY.OFFLINE'))+\"\\n      \")]),_vm._v(\" \"),_c('div',{staticClass:\"text-xs leading-3 mt-1\"},[_vm._v(\"\\n        \"+_vm._s(_vm.replyWaitMessage)+\"\\n      \")])]),_vm._v(\" \"),(_vm.isOnline)?_c('available-agents',{attrs:{\"agents\":_vm.availableAgents}}):_vm._e()],1),_vm._v(\" \"),_c('custom-button',{staticClass:\"font-medium\",attrs:{\"block\":\"\",\"bg-color\":_vm.widgetColor,\"text-color\":_vm.textColor},on:{\"click\":_vm.startConversation}},[_vm._v(\"\\n    \"+_vm._s(_vm.hasConversation ? _vm.$t('CONTINUE_CONVERSATION') : _vm.$t('START_CONVERSATION'))+\"\\n  \")])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <div class=\"flex flex-1 flex-col justify-end\">\n    <div class=\"flex flex-1 overflow-auto\">\n      <!-- Load Conversation List Components Here -->\n    </div>\n    <team-availability\n      :available-agents=\"availableAgents\"\n      :has-conversation=\"!!conversationSize\"\n      @start-conversation=\"startConversation\"\n    />\n  </div>\n</template>\n\n<script>\nimport configMixin from '../mixins/configMixin';\nimport TeamAvailability from 'widget/components/TeamAvailability';\nimport { mapGetters } from 'vuex';\nimport routerMixin from 'widget/mixins/routerMixin';\nexport default {\n  name: 'Home',\n  components: {\n    TeamAvailability,\n  },\n  mixins: [configMixin, routerMixin],\n  props: {\n    hasFetched: {\n      type: Boolean,\n      default: false,\n    },\n    isCampaignViewClicked: {\n      type: Boolean,\n      default: false,\n    },\n  },\n  data() {\n    return {};\n  },\n  computed: {\n    ...mapGetters({\n      availableAgents: 'agent/availableAgents',\n      activeCampaign: 'campaign/getActiveCampaign',\n      conversationSize: 'conversation/getConversationSize',\n    }),\n  },\n  methods: {\n    startConversation() {\n      if (this.preChatFormEnabled && !this.conversationSize) {\n        return this.replaceRoute('prechat-form');\n      }\n      return this.replaceRoute('messages');\n    },\n  },\n};\n</script>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--7-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--7-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Home.vue?vue&type=template&id=f2e40a68&\"\nimport script from \"./Home.vue?vue&type=script&lang=js&\"\nexport * from \"./Home.vue?vue&type=script&lang=js&\"\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"],"sourceRoot":""}