import { useOnAuthStateChange } from "/_nuxt/lib/auth/composables/auth.ts"; import __vite__cjsImport1__intercom_messengerJsSdk from "/_nuxt/node_modules/.cache/vite/client/deps/@intercom_messenger-js-sdk.js?v=e4f18c29"; const Intercom = __vite__cjsImport1__intercom_messengerJsSdk.__esModule ? __vite__cjsImport1__intercom_messengerJsSdk.default : __vite__cjsImport1__intercom_messengerJsSdk; const shutdown = __vite__cjsImport1__intercom_messengerJsSdk["shutdown"]; const show = __vite__cjsImport1__intercom_messengerJsSdk["show"]; const hide = __vite__cjsImport1__intercom_messengerJsSdk["hide"]; const update = __vite__cjsImport1__intercom_messengerJsSdk["update"]; const trackEvent = __vite__cjsImport1__intercom_messengerJsSdk["trackEvent"]; const onShow = __vite__cjsImport1__intercom_messengerJsSdk["onShow"] ; import { useIntercomEnabled } from "/_nuxt/lib/intercom/composables/enabled.ts"; import { useActiveWorkspaceSlug } from "/_nuxt/lib/user/composables/activeWorkspace.ts"; import { intercomActiveWorkspaceQuery } from "/_nuxt/lib/intercom/graphql/queries.ts"; import { useApolloClientFromNuxt } from "/_nuxt/lib/common/composables/graphql.ts"; import { useRuntimeConfig, defineNuxtPlugin } from "/_nuxt/node_modules/nuxt/dist/app/nuxt.js?v=e4f18c29"; import { useActiveUser } from "/_nuxt/composables/globals.ts"; import { useRoute } from "/_nuxt/node_modules/nuxt/dist/app/composables/router.js?v=e4f18c29"; import { ref, watch } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29"; export const useIntercom = () => { const { public: { intercomAppId } } = useRuntimeConfig(); if (!intercomAppId) { return { show: () => { }, hide: () => { }, shutdown: () => { }, track: () => { }, updateCompany: () => { } }; } const { activeUser: user } = useActiveUser(); const { isIntercomEnabled, isRouteBlacklisted } = useIntercomEnabled(); const route = useRoute(); const activeWorkspaceSlug = useActiveWorkspaceSlug(); const apolloClient = useApolloClientFromNuxt(); const isInitialized = ref(false); useOnAuthStateChange()( (_user, { isReset }) => { if (isReset) { shutdownIntercom(); } else if (user.value) { bootIntercom(); } }, { immediate: true } ); const bootIntercom = () => { if (!isIntercomEnabled.value || isRouteBlacklisted.value || !user.value || isInitialized.value) return; isInitialized.value = true; const isViewerRoute = route.path.includes("/models/"); const isPresentationRoute = route.path.includes("/presentations/"); const isDashboardRoute = route.path.includes("/dashboards/"); Intercom({ /* eslint-disable camelcase */ app_id: intercomAppId, user_id: user.value.id || "", created_at: Math.floor(new Date(user.value.createdAt || "").getTime() / 1e3), hide_default_launcher: isViewerRoute || isPresentationRoute || isDashboardRoute, /* eslint-enable camelcase */ name: user.value.name || "", email: user.value.email || "" }); onShow(async () => { try { const result = await apolloClient.query({ query: intercomActiveWorkspaceQuery, variables: { slug: activeWorkspaceSlug.value || "" } }); if (result.data) { const editorSeatCount = result.data.workspaceBySlug.seats?.editors.assigned || 0 + (result.data.workspaceBySlug.seats?.editors.available || 0); updateCompany({ id: result.data.workspaceBySlug.id, /* eslint-disable camelcase */ plan_name: result.data.workspaceBySlug.plan?.name, plan_status: result.data.workspaceBySlug.plan?.status, editor_seat_count: editorSeatCount /* eslint-enable camelcase */ }); } } catch { } }); }; const showIntercom = () => { if (!isInitialized.value) return; show(); }; const hideIntercom = () => { if (!isInitialized.value) return; hide(); }; const shutdownIntercom = () => { if (!isInitialized.value) return; shutdown(); isInitialized.value = false; }; const trackIntercom = (event, metadata) => { if (!isInitialized.value) return; trackEvent(event, metadata); }; const updateCompany = async (data = { id: "" }) => { update({ company: { ...data } }); }; const updateLauncherVisibility = () => { if (!isInitialized.value) return; const isViewerRoute = route.path.includes("/models/"); const isPresentationRoute = route.path.includes("/presentations/"); const isDashboardRoute = route.path.includes("/dashboards/"); update({ /* eslint-disable camelcase */ hide_default_launcher: isViewerRoute || isPresentationRoute || isDashboardRoute /* eslint-enable camelcase */ }); }; watch(route, () => { if (isRouteBlacklisted.value) { shutdownIntercom(); } else { bootIntercom(); updateLauncherVisibility(); } }); return { show: showIntercom, hide: hideIntercom, shutdown: shutdownIntercom, track: trackIntercom, updateCompany }; }; export default defineNuxtPlugin(() => { return { provide: { intercom: useIntercom() } }; }); //# sourceMappingURL=data:application/json;base64,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QyxTQUFPO0FBQUEsSUFDTCxTQUFTO0FBQUEsTUFDUCxVQUFVLFlBQVk7QUFBQSxJQUN4QjtBQUFBLEVBQ0Y7QUFDRixDQUFDIiwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlcyI6WyJpbnRlcmNvbS5jbGllbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlT25BdXRoU3RhdGVDaGFuZ2UgfSBmcm9tICd+L2xpYi9hdXRoL2NvbXBvc2FibGVzL2F1dGgnXHJcbmltcG9ydCBJbnRlcmNvbSwge1xyXG4gIHNodXRkb3duLFxyXG4gIHNob3csXHJcbiAgaGlkZSxcclxuICB1cGRhdGUsXHJcbiAgdHJhY2tFdmVudCxcclxuICBvblNob3dcclxufSBmcm9tICdAaW50ZXJjb20vbWVzc2VuZ2VyLWpzLXNkaydcclxuaW1wb3J0IHR5cGUgeyBNYXliZU51bGxPclVuZGVmaW5lZCB9IGZyb20gJ0BzcGVja2xlL3NoYXJlZCdcclxuaW1wb3J0IHsgdXNlSW50ZXJjb21FbmFibGVkIH0gZnJvbSAnfi9saWIvaW50ZXJjb20vY29tcG9zYWJsZXMvZW5hYmxlZCdcclxuaW1wb3J0IHsgdXNlQWN0aXZlV29ya3NwYWNlU2x1ZyB9IGZyb20gJ34vbGliL3VzZXIvY29tcG9zYWJsZXMvYWN0aXZlV29ya3NwYWNlJ1xyXG5pbXBvcnQgeyBpbnRlcmNvbUFjdGl2ZVdvcmtzcGFjZVF1ZXJ5IH0gZnJvbSAnfi9saWIvaW50ZXJjb20vZ3JhcGhxbC9xdWVyaWVzJ1xyXG5pbXBvcnQgeyB1c2VBcG9sbG9DbGllbnRGcm9tTnV4dCB9IGZyb20gJ34vbGliL2NvbW1vbi9jb21wb3NhYmxlcy9ncmFwaHFsJ1xyXG5cclxuZXhwb3J0IGNvbnN0IHVzZUludGVyY29tID0gKCkgPT4ge1xyXG4gIGNvbnN0IHtcclxuICAgIHB1YmxpYzogeyBpbnRlcmNvbUFwcElkIH1cclxuICB9ID0gdXNlUnVudGltZUNvbmZpZygpXHJcblxyXG4gIGlmICghaW50ZXJjb21BcHBJZCkge1xyXG4gICAgLy8gUmV0dXJuIGVtcHR5IGZ1bmN0aW9ucyBpZiBJbnRlcmNvbSBpcyBub3QgY29uZmlndXJlZFxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgc2hvdzogKCkgPT4ge30sXHJcbiAgICAgIGhpZGU6ICgpID0+IHt9LFxyXG4gICAgICBzaHV0ZG93bjogKCkgPT4ge30sXHJcbiAgICAgIHRyYWNrOiAoKSA9PiB7fSxcclxuICAgICAgdXBkYXRlQ29tcGFueTogKCkgPT4ge31cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnN0IHsgYWN0aXZlVXNlcjogdXNlciB9ID0gdXNlQWN0aXZlVXNlcigpXHJcbiAgY29uc3QgeyBpc0ludGVyY29tRW5hYmxlZCwgaXNSb3V0ZUJsYWNrbGlzdGVkIH0gPSB1c2VJbnRlcmNvbUVuYWJsZWQoKVxyXG4gIGNvbnN0IHJvdXRlID0gdXNlUm91dGUoKVxyXG4gIGNvbnN0IGFjdGl2ZVdvcmtzcGFjZVNsdWcgPSB1c2VBY3RpdmVXb3Jrc3BhY2VTbHVnKClcclxuICBjb25zdCBhcG9sbG9DbGllbnQgPSB1c2VBcG9sbG9DbGllbnRGcm9tTnV4dCgpXHJcblxyXG4gIGNvbnN0IGlzSW5pdGlhbGl6ZWQgPSByZWYoZmFsc2UpXHJcblxyXG4gIHVzZU9uQXV0aFN0YXRlQ2hhbmdlKCkoXHJcbiAgICAoX3VzZXIsIHsgaXNSZXNldCB9KSA9PiB7XHJcbiAgICAgIGlmIChpc1Jlc2V0KSB7XHJcbiAgICAgICAgc2h1dGRvd25JbnRlcmNvbSgpXHJcbiAgICAgIH0gZWxzZSBpZiAodXNlci52YWx1ZSkge1xyXG4gICAgICAgIGJvb3RJbnRlcmNvbSgpXHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICB7IGltbWVkaWF0ZTogdHJ1ZSB9XHJcbiAgKVxyXG5cclxuICBjb25zdCBib290SW50ZXJjb20gPSAoKSA9PiB7XHJcbiAgICBpZiAoXHJcbiAgICAgICFpc0ludGVyY29tRW5hYmxlZC52YWx1ZSB8fFxyXG4gICAgICBpc1JvdXRlQmxhY2tsaXN0ZWQudmFsdWUgfHxcclxuICAgICAgIXVzZXIudmFsdWUgfHxcclxuICAgICAgaXNJbml0aWFsaXplZC52YWx1ZVxyXG4gICAgKVxyXG4gICAgICByZXR1cm5cclxuICAgIGlzSW5pdGlhbGl6ZWQudmFsdWUgPSB0cnVlXHJcblxyXG4gICAgLy8gSGlkZSBkZWZhdWx0IGxhdW5jaGVyIG9uIHZpZXdlciByb3V0ZXMgKC9tb2RlbHMvKVxyXG4gICAgY29uc3QgaXNWaWV3ZXJSb3V0ZSA9IHJvdXRlLnBhdGguaW5jbHVkZXMoJy9tb2RlbHMvJylcclxuICAgIGNvbnN0IGlzUHJlc2VudGF0aW9uUm91dGUgPSByb3V0ZS5wYXRoLmluY2x1ZGVzKCcvcHJlc2VudGF0aW9ucy8nKVxyXG4gICAgY29uc3QgaXNEYXNoYm9hcmRSb3V0ZSA9IHJvdXRlLnBhdGguaW5jbHVkZXMoJy9kYXNoYm9hcmRzLycpXHJcblxyXG4gICAgSW50ZXJjb20oe1xyXG4gICAgICAvKiBlc2xpbnQtZGlzYWJsZSBjYW1lbGNhc2UgKi9cclxuICAgICAgYXBwX2lkOiBpbnRlcmNvbUFwcElkLFxyXG4gICAgICB1c2VyX2lkOiB1c2VyLnZhbHVlLmlkIHx8ICcnLFxyXG4gICAgICBjcmVhdGVkX2F0OiBNYXRoLmZsb29yKG5ldyBEYXRlKHVzZXIudmFsdWUuY3JlYXRlZEF0IHx8ICcnKS5nZXRUaW1lKCkgLyAxMDAwKSxcclxuICAgICAgaGlkZV9kZWZhdWx0X2xhdW5jaGVyOiBpc1ZpZXdlclJvdXRlIHx8IGlzUHJlc2VudGF0aW9uUm91dGUgfHwgaXNEYXNoYm9hcmRSb3V0ZSxcclxuICAgICAgLyogZXNsaW50LWVuYWJsZSBjYW1lbGNhc2UgKi9cclxuICAgICAgbmFtZTogdXNlci52YWx1ZS5uYW1lIHx8ICcnLFxyXG4gICAgICBlbWFpbDogdXNlci52YWx1ZS5lbWFpbCB8fCAnJ1xyXG4gICAgfSlcclxuXHJcbiAgICBvblNob3coYXN5bmMgKCkgPT4ge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGFwb2xsb0NsaWVudC5xdWVyeSh7XHJcbiAgICAgICAgICBxdWVyeTogaW50ZXJjb21BY3RpdmVXb3Jrc3BhY2VRdWVyeSxcclxuICAgICAgICAgIHZhcmlhYmxlczoge1xyXG4gICAgICAgICAgICBzbHVnOiBhY3RpdmVXb3Jrc3BhY2VTbHVnLnZhbHVlIHx8ICcnXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuXHJcbiAgICAgICAgaWYgKHJlc3VsdC5kYXRhKSB7XHJcbiAgICAgICAgICBjb25zdCBlZGl0b3JTZWF0Q291bnQgPVxyXG4gICAgICAgICAgICByZXN1bHQuZGF0YS53b3Jrc3BhY2VCeVNsdWcuc2VhdHM/LmVkaXRvcnMuYXNzaWduZWQgfHxcclxuICAgICAgICAgICAgMCArIChyZXN1bHQuZGF0YS53b3Jrc3BhY2VCeVNsdWcuc2VhdHM/LmVkaXRvcnMuYXZhaWxhYmxlIHx8IDApXHJcbiAgICAgICAgICB1cGRhdGVDb21wYW55KHtcclxuICAgICAgICAgICAgaWQ6IHJlc3VsdC5kYXRhLndvcmtzcGFjZUJ5U2x1Zy5pZCxcclxuICAgICAgICAgICAgLyogZXNsaW50LWRpc2FibGUgY2FtZWxjYXNlICovXHJcbiAgICAgICAgICAgIHBsYW5fbmFtZTogcmVzdWx0LmRhdGEud29ya3NwYWNlQnlTbHVnLnBsYW4/Lm5hbWUsXHJcbiAgICAgICAgICAgIHBsYW5fc3RhdHVzOiByZXN1bHQuZGF0YS53b3Jrc3BhY2VCeVNsdWcucGxhbj8uc3RhdHVzLFxyXG4gICAgICAgICAgICBlZGl0b3Jfc2VhdF9jb3VudDogZWRpdG9yU2VhdENvdW50XHJcbiAgICAgICAgICAgIC8qIGVzbGludC1lbmFibGUgY2FtZWxjYXNlICovXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgfSBjYXRjaCB7XHJcbiAgICAgICAgLy8gU2lsZW50bHkgZmFpbCAtIHdlIGRvbid0IHdhbnQgSW50ZXJjb20gaW5pdGlhbGl6YXRpb24gdG8gYnJlYWtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGNvbnN0IHNob3dJbnRlcmNvbSA9ICgpID0+IHtcclxuICAgIGlmICghaXNJbml0aWFsaXplZC52YWx1ZSkgcmV0dXJuXHJcbiAgICBzaG93KClcclxuICB9XHJcblxyXG4gIGNvbnN0IGhpZGVJbnRlcmNvbSA9ICgpID0+IHtcclxuICAgIGlmICghaXNJbml0aWFsaXplZC52YWx1ZSkgcmV0dXJuXHJcbiAgICBoaWRlKClcclxuICB9XHJcblxyXG4gIGNvbnN0IHNodXRkb3duSW50ZXJjb20gPSAoKSA9PiB7XHJcbiAgICBpZiAoIWlzSW5pdGlhbGl6ZWQudmFsdWUpIHJldHVyblxyXG4gICAgc2h1dGRvd24oKVxyXG4gICAgaXNJbml0aWFsaXplZC52YWx1ZSA9IGZhbHNlXHJcbiAgfVxyXG5cclxuICBjb25zdCB0cmFja0ludGVyY29tID0gKGV2ZW50OiBzdHJpbmcsIG1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IHtcclxuICAgIGlmICghaXNJbml0aWFsaXplZC52YWx1ZSkgcmV0dXJuXHJcbiAgICB0cmFja0V2ZW50KGV2ZW50LCBtZXRhZGF0YSlcclxuICB9XHJcblxyXG4gIC8vIFVwZGF0ZSB0aGUgJ2NvbXBhbnknICh3b3Jrc3BhY2UpIGluIEludGVyY29tIHdpdGggYWRkaXRpb25hbCBkYXRhXHJcbiAgY29uc3QgdXBkYXRlQ29tcGFueSA9IGFzeW5jIChcclxuICAgIGRhdGE6IHsgaWQ6IHN0cmluZyB9ICYgUmVjb3JkPHN0cmluZywgTWF5YmVOdWxsT3JVbmRlZmluZWQ8c3RyaW5nIHwgbnVtYmVyPj4gPSB7XHJcbiAgICAgIGlkOiAnJ1xyXG4gICAgfVxyXG4gICkgPT4ge1xyXG4gICAgdXBkYXRlKHtcclxuICAgICAgY29tcGFueToge1xyXG4gICAgICAgIC4uLmRhdGFcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIC8vIFVwZGF0ZSBsYXVuY2hlciB2aXNpYmlsaXR5IGJhc2VkIG9uIGN1cnJlbnQgcm91dGVcclxuICBjb25zdCB1cGRhdGVMYXVuY2hlclZpc2liaWxpdHkgPSAoKSA9PiB7XHJcbiAgICBpZiAoIWlzSW5pdGlhbGl6ZWQudmFsdWUpIHJldHVyblxyXG5cclxuICAgIGNvbnN0IGlzVmlld2VyUm91dGUgPSByb3V0ZS5wYXRoLmluY2x1ZGVzKCcvbW9kZWxzLycpXHJcbiAgICBjb25zdCBpc1ByZXNlbnRhdGlvblJvdXRlID0gcm91dGUucGF0aC5pbmNsdWRlcygnL3ByZXNlbnRhdGlvbnMvJylcclxuICAgIGNvbnN0IGlzRGFzaGJvYXJkUm91dGUgPSByb3V0ZS5wYXRoLmluY2x1ZGVzKCcvZGFzaGJvYXJkcy8nKVxyXG5cclxuICAgIHVwZGF0ZSh7XHJcbiAgICAgIC8qIGVzbGludC1kaXNhYmxlIGNhbWVsY2FzZSAqL1xyXG4gICAgICBoaWRlX2RlZmF1bHRfbGF1bmNoZXI6IGlzVmlld2VyUm91dGUgfHwgaXNQcmVzZW50YXRpb25Sb3V0ZSB8fCBpc0Rhc2hib2FyZFJvdXRlXHJcbiAgICAgIC8qIGVzbGludC1lbmFibGUgY2FtZWxjYXNlICovXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgLy8gT24gcm91dGUgY2hhbmdlLCBjaGVjayBpZiB3ZSBuZWVkIHRvIHNodXRkb3duIG9yIGJvb3QgSW50ZXJjb21cclxuICB3YXRjaChyb3V0ZSwgKCkgPT4ge1xyXG4gICAgaWYgKGlzUm91dGVCbGFja2xpc3RlZC52YWx1ZSkge1xyXG4gICAgICBzaHV0ZG93bkludGVyY29tKClcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGJvb3RJbnRlcmNvbSgpXHJcbiAgICAgIHVwZGF0ZUxhdW5jaGVyVmlzaWJpbGl0eSgpXHJcbiAgICB9XHJcbiAgfSlcclxuXHJcbiAgcmV0dXJuIHtcclxuICAgIHNob3c6IHNob3dJbnRlcmNvbSxcclxuICAgIGhpZGU6IGhpZGVJbnRlcmNvbSxcclxuICAgIHNodXRkb3duOiBzaHV0ZG93bkludGVyY29tLFxyXG4gICAgdHJhY2s6IHRyYWNrSW50ZXJjb20sXHJcbiAgICB1cGRhdGVDb21wYW55XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVOdXh0UGx1Z2luKCgpID0+IHtcclxuICByZXR1cm4ge1xyXG4gICAgcHJvdmlkZToge1xyXG4gICAgICBpbnRlcmNvbTogdXNlSW50ZXJjb20oKVxyXG4gICAgfVxyXG4gIH1cclxufSlcclxuIl0sImZpbGUiOiJEOi9zcGVja2xlLXNlcnZlci9wYWNrYWdlcy9mcm9udGVuZC0yL3BsdWdpbnMvaW50ZXJjb20uY2xpZW50LnRzIn0=