{"version":3,"file":"Home-C2j-d1f3.js","sources":["../../../app/javascript/widget/components/GroupedAvatars.vue","../../../app/javascript/widget/components/AvailableAgents.vue","../../../app/javascript/widget/components/TeamAvailability.vue","../../../app/javascript/widget/components/ArticleListItem.vue","../../../app/javascript/widget/components/ArticleList.vue","../../../app/javascript/widget/components/ArticleCategoryCard.vue","../../../app/javascript/widget/components/ArticleHero.vue","../../../app/javascript/widget/components/ArticleCardSkeletonLoader.vue","../../../app/javascript/widget/views/Home.vue"],"sourcesContent":["<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\n<template>\n  <div class=\"flex\">\n    <span\n      v-for=\"(user, index) in users\"\n      :key=\"user.id\"\n      :class=\"`${\n        index ? '-ml-4' : ''\n      } inline-block rounded-full text-white shadow-solid`\"\n    >\n      <Thumbnail\n        size=\"36px\"\n        :username=\"user.name\"\n        :src=\"user.avatar\"\n        has-border\n      />\n    </span>\n  </div>\n</template>\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, 4).map(agent => ({\n        id: agent.id,\n        avatar: agent.avatar_url,\n        name: agent.name,\n      }));\n    },\n  },\n};\n</script>\n\n<template>\n  <GroupedAvatars :users=\"users\" />\n</template>\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 configMixin from 'widget/mixins/configMixin';\nimport availabilityMixin from 'widget/mixins/availability';\nimport FluentIcon from 'shared/components/FluentIcon/Index.vue';\nimport { IFrameHelper } from 'widget/helpers/utils';\nimport { CHATWOOT_ON_START_CONVERSATION } from '../constants/sdkEvents';\n\nexport default {\n  name: 'TeamAvailability',\n  components: {\n    AvailableAgents,\n    FluentIcon,\n  },\n  mixins: [configMixin, nextAvailabilityTime, availabilityMixin],\n  props: {\n    availableAgents: {\n      type: Array,\n      default: () => {},\n    },\n    hasConversation: {\n      type: Boolean,\n      default: false,\n    },\n  },\n  emits: ['startConversation'],\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('startConversation');\n      if (!this.hasConversation) {\n        IFrameHelper.sendMessage({\n          event: 'onEvent',\n          eventIdentifier: CHATWOOT_ON_START_CONVERSATION,\n          data: { hasConversation: false },\n        });\n      }\n    },\n  },\n};\n</script>\n\n<template>\n  <div class=\"p-4 bg-white rounded-md shadow-sm dark:bg-slate-700\">\n    <div class=\"flex items-center justify-between\">\n      <div class=\"\">\n        <div class=\"text-sm font-medium text-slate-700 dark:text-slate-50\">\n          {{\n            isOnline\n              ? $t('TEAM_AVAILABILITY.ONLINE')\n              : $t('TEAM_AVAILABILITY.OFFLINE')\n          }}\n        </div>\n        <div class=\"mt-1 text-sm text-slate-500 dark:text-slate-100\">\n          {{ replyWaitMessage }}\n        </div>\n      </div>\n      <AvailableAgents v-if=\"isOnline\" :agents=\"availableAgents\" />\n    </div>\n    <button\n      class=\"inline-flex items-center justify-between px-2 py-1 mt-2 -ml-2 text-sm font-medium leading-6 rounded-md text-slate-800 dark:text-slate-50 hover:bg-slate-25 dark:hover:bg-slate-800\"\n      :style=\"{ color: widgetColor }\"\n      @click=\"startConversation\"\n    >\n      <span class=\"pr-2 text-sm\">\n        {{\n          hasConversation\n            ? $t('CONTINUE_CONVERSATION')\n            : $t('START_CONVERSATION')\n        }}\n      </span>\n      <FluentIcon icon=\"arrow-right\" size=\"14\" />\n    </button>\n  </div>\n</template>\n","<script>\nimport FluentIcon from 'shared/components/FluentIcon/Index.vue';\n\nexport default {\n  components: { FluentIcon },\n  props: {\n    link: {\n      type: String,\n      default: '',\n    },\n    title: {\n      type: String,\n      default: '',\n    },\n  },\n  emits: ['selectArticle'],\n  data() {\n    return {};\n  },\n  methods: {\n    onClick() {\n      this.$emit('selectArticle', this.link);\n    },\n  },\n};\n</script>\n\n<template>\n  <li\n    class=\"py-1 flex items-center justify-between -mx-1 px-1 hover:bg-slate-25 dark:hover:bg-slate-600 rounded cursor-pointer text-slate-700 dark:text-slate-50 dark:hover:text-slate-25 hover:text-slate-900\"\n    role=\"button\"\n    @click=\"onClick\"\n  >\n    <button class=\"underline-offset-2 text-sm leading-6 text-left\">\n      {{ title }}\n    </button>\n    <span class=\"pl-1 arrow\">\n      <FluentIcon icon=\"arrow-right\" size=\"14\" />\n    </span>\n  </li>\n</template>\n","<script>\nimport ArticleListItem from './ArticleListItem.vue';\n\nexport default {\n  components: {\n    ArticleListItem,\n  },\n  props: {\n    articles: {\n      type: Array,\n      default: () => [],\n    },\n  },\n  emits: ['selectArticle'],\n  data() {\n    return {};\n  },\n  methods: {\n    onClick(link) {\n      this.$emit('selectArticle', link);\n    },\n  },\n};\n</script>\n\n<template>\n  <ul role=\"list\" class=\"py-2\">\n    <ArticleListItem\n      v-for=\"article in articles\"\n      :key=\"article.slug\"\n      :link=\"article.link\"\n      :title=\"article.title\"\n      @select-article=\"onClick\"\n    />\n  </ul>\n</template>\n","<script>\nimport { mapGetters } from 'vuex';\nimport ArticleList from './ArticleList.vue';\nimport FluentIcon from 'shared/components/FluentIcon/Index.vue';\n\nexport default {\n  components: { FluentIcon, ArticleList },\n  props: {\n    title: {\n      type: String,\n      default: '',\n    },\n    articles: {\n      type: Array,\n      default: () => [],\n    },\n  },\n  emits: ['view', 'viewAll'],\n  computed: {\n    ...mapGetters({ widgetColor: 'appConfig/getWidgetColor' }),\n  },\n  methods: {\n    onArticleClick(link) {\n      this.$emit('view', link);\n    },\n  },\n};\n</script>\n\n<template>\n  <div>\n    <h3 class=\"mb-0 text-sm font-medium text-slate-800 dark:text-slate-50\">\n      {{ title }}\n    </h3>\n    <ArticleList :articles=\"articles\" @select-article=\"onArticleClick\" />\n    <button\n      class=\"inline-flex items-center justify-between px-2 py-1 -ml-2 text-sm font-medium leading-6 rounded-md text-slate-800 dark:text-slate-50 hover:bg-slate-25 dark:hover:bg-slate-800 see-articles\"\n      :style=\"{ color: widgetColor }\"\n      @click=\"$emit('viewAll')\"\n    >\n      <span class=\"pr-2 text-sm\">{{ $t('PORTAL.VIEW_ALL_ARTICLES') }}</span>\n      <FluentIcon icon=\"arrow-right\" size=\"14\" />\n    </button>\n  </div>\n</template>\n\n<style lang=\"scss\" scoped>\n.see-articles {\n  color: var(--brand-textButtonClear);\n  svg {\n    color: var(--brand-textButtonClear);\n  }\n}\n</style>\n","<script>\nimport CategoryCard from './ArticleCategoryCard.vue';\nexport default {\n  components: { CategoryCard },\n  props: {\n    articles: {\n      type: Array,\n      default: () => [],\n    },\n  },\n  emits: ['view', 'viewAll'],\n  methods: {\n    onArticleClick(link) {\n      this.$emit('view', link);\n    },\n  },\n};\n</script>\n\n<template>\n  <CategoryCard\n    :title=\"$t('PORTAL.POPULAR_ARTICLES')\"\n    :articles=\"articles.slice(0, 6)\"\n    @view-all=\"$emit('viewAll')\"\n    @view=\"onArticleClick\"\n  />\n</template>\n","<template>\n  <div class=\"py-4 space-y-4 bg-white dark:bg-slate-700\">\n    <div class=\"space-y-2 animate-pulse\">\n      <div class=\"h-6 bg-slate-100 dark:bg-slate-500 rounded w-2/5\" />\n    </div>\n    <div class=\"space-y-2 animate-pulse\">\n      <div class=\"h-4 bg-slate-100 dark:bg-slate-500 rounded\" />\n      <div class=\"h-4 bg-slate-100 dark:bg-slate-500 rounded\" />\n      <div class=\"h-4 bg-slate-100 dark:bg-slate-500 rounded\" />\n    </div>\n    <div class=\"space-y-2 animate-pulse\">\n      <div class=\"h-4 bg-slate-100 dark:bg-slate-500 rounded w-1/5\" />\n    </div>\n  </div>\n</template>\n","<script>\nimport TeamAvailability from 'widget/components/TeamAvailability.vue';\nimport ArticleHero from 'widget/components/ArticleHero.vue';\nimport ArticleCardSkeletonLoader from 'widget/components/ArticleCardSkeletonLoader.vue';\n\nimport { mapGetters } from 'vuex';\nimport { useDarkMode } from 'widget/composables/useDarkMode';\nimport routerMixin from 'widget/mixins/routerMixin';\nimport configMixin from 'widget/mixins/configMixin';\n\nexport default {\n  name: 'Home',\n  components: {\n    ArticleHero,\n    TeamAvailability,\n    ArticleCardSkeletonLoader,\n  },\n  mixins: [configMixin, routerMixin],\n  setup() {\n    const { prefersDarkMode } = useDarkMode();\n    return { prefersDarkMode };\n  },\n  computed: {\n    ...mapGetters({\n      availableAgents: 'agent/availableAgents',\n      conversationSize: 'conversation/getConversationSize',\n      unreadMessageCount: 'conversation/getUnreadMessageCount',\n      popularArticles: 'article/popularArticles',\n      articleUiFlags: 'article/uiFlags',\n    }),\n    widgetLocale() {\n      return this.$i18n.locale || 'en';\n    },\n    portal() {\n      return window.chatwootWebChannel.portal;\n    },\n    showArticles() {\n      return (\n        this.portal &&\n        !this.articleUiFlags.isFetching &&\n        this.popularArticles.length\n      );\n    },\n    defaultLocale() {\n      const widgetLocale = this.widgetLocale;\n      const { allowed_locales: allowedLocales, default_locale: defaultLocale } =\n        this.portal.config;\n\n      // IMPORTANT: Variation strict locale matching, Follow iso_639_1_code\n      // If the exact match of a locale is available in the list of portal locales, return it\n      // Else return the default locale. Eg: `es` will not work if `es_ES` is available in the list\n      if (allowedLocales.includes(widgetLocale)) {\n        return widgetLocale;\n      }\n      return defaultLocale;\n    },\n  },\n  mounted() {\n    if (this.portal && this.popularArticles.length === 0) {\n      const locale = this.defaultLocale;\n      this.$store.dispatch('article/fetch', {\n        slug: this.portal.slug,\n        locale,\n      });\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    openArticleInArticleViewer(link) {\n      let linkToOpen = `${link}?show_plain_layout=true`;\n      const isDark = this.prefersDarkMode;\n      if (isDark) {\n        linkToOpen = `${linkToOpen}&theme=dark`;\n      }\n      this.$router.push({\n        name: 'article-viewer',\n        query: { link: linkToOpen },\n      });\n    },\n    viewAllArticles() {\n      const locale = this.defaultLocale;\n      const {\n        portal: { slug },\n      } = window.chatwootWebChannel;\n      this.openArticleInArticleViewer(`/hc/${slug}/${locale}`);\n    },\n  },\n};\n</script>\n\n<template>\n  <div\n    class=\"z-50 flex flex-col flex-1 w-full rounded-md\"\n    :class=\"{ 'pb-2': showArticles, 'justify-end': !showArticles }\"\n  >\n    <div class=\"w-full px-4 pt-4\">\n      <TeamAvailability\n        :available-agents=\"availableAgents\"\n        :has-conversation=\"!!conversationSize\"\n        :unread-count=\"unreadMessageCount\"\n        @start-conversation=\"startConversation\"\n      />\n    </div>\n    <div v-if=\"showArticles\" class=\"w-full px-4 py-2\">\n      <div class=\"w-full p-4 bg-white rounded-md shadow-sm dark:bg-slate-700\">\n        <ArticleHero\n          v-if=\"\n            !articleUiFlags.isFetching &&\n            !articleUiFlags.isError &&\n            popularArticles.length\n          \"\n          :articles=\"popularArticles\"\n          @view=\"openArticleInArticleViewer\"\n          @view-all=\"viewAllArticles\"\n        />\n      </div>\n    </div>\n    <div v-if=\"articleUiFlags.isFetching\" class=\"w-full px-4 py-2\">\n      <div class=\"w-full p-4 bg-white rounded-md shadow-sm dark:bg-slate-700\">\n        <ArticleCardSkeletonLoader />\n      </div>\n    </div>\n  </div>\n</template>\n"],"names":["_sfc_main","Thumbnail","_hoisted_1","_openBlock","_createElementBlock","_Fragment","_renderList","$props","user","index","_normalizeClass","_createVNode","_component_Thumbnail","GroupedAvatars","agent","_createBlock","_component_GroupedAvatars","$options","AvailableAgents","FluentIcon","configMixin","nextAvailabilityTime","availabilityMixin","mapGetters","getContrastingTextColor","workingHoursEnabled","anyAgentOnline","IFrameHelper","CHATWOOT_ON_START_CONVERSATION","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_createElementVNode","_toDisplayString","_ctx","_component_AvailableAgents","_createCommentVNode","_normalizeStyle","args","_component_FluentIcon","ArticleListItem","link","article","_component_ArticleListItem","ArticleList","_component_ArticleList","CategoryCard","_component_CategoryCard","_sfc_render","_cache","ArticleHero","TeamAvailability","ArticleCardSkeletonLoader","routerMixin","prefersDarkMode","useDarkMode","widgetLocale","allowedLocales","defaultLocale","locale","linkToOpen","slug","_component_TeamAvailability","_component_ArticleHero","_component_ArticleCardSkeletonLoader"],"mappings":"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"}