courier-vue-embedded
Version:
Vue 3 wrapper for trycourier
265 lines (264 loc) • 8.2 kB
JavaScript
var R = Object.defineProperty;
var k = (s, e, t) => e in s ? R(s, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : s[e] = t;
var n = (s, e, t) => k(s, typeof e != "symbol" ? e + "" : e, t);
import { defineComponent as u, watch as w, openBlock as f, createElementBlock as l, createElementVNode as p, normalizeProps as C, guardReactiveProps as m } from "vue";
const o = (s) => {
let e, t;
const r = new Promise((c, d) => {
e = c, t = d;
});
return r.resolve = e, r.reject = t, r;
}, y = (s) => {
const e = {};
return Object.entries(s).forEach(([t, i]) => {
i !== void 0 && (e[t] = i);
}), e;
};
class b {
constructor() {
n(this, "onceReady", o());
n(this, "_fetchMessagesDefered", o());
n(this, "_fetchUnreadMessageCountDefered", o());
}
get sdk() {
return window.courier;
}
init() {
this.sdk.on("inbox/init", () => {
this.onceReady.resolve();
}), this.sdk.on("inbox/FETCH_MESSAGES/DONE", (e) => {
this._fetchMessagesDefered.resolve(e.payload);
}), this.sdk.on("inbox/FETCH_UNREAD_MESSAGE_COUNT/DONE", (e) => {
this._fetchUnreadMessageCountDefered.resolve(e.payload);
});
}
async fetchMessages(e) {
return await this.onceReady, this._fetchMessagesDefered = o(), this.sdk.inbox.fetchMessages(e), await this._fetchMessagesDefered;
}
async getUnreadMessageCount(e) {
return await this.onceReady, this._fetchUnreadMessageCountDefered = o(), this.sdk.inbox.getUnreadMessageCount(e), await this._fetchUnreadMessageCountDefered;
}
async markAllAsRead(e) {
await this.onceReady, this.sdk.inbox.markAllAsRead(e);
}
async markMessageArchived(e, t) {
await this.onceReady, await this.sdk.inbox.markMessageArchived(e, t);
}
async markMessageOpened(e, t) {
await this.onceReady, await this.sdk.inbox.markMessageOpened(e, t);
}
async markMessageRead(e, t) {
var i;
await this.onceReady, await ((i = this.sdk.inbox) == null ? void 0 : i.markMessageRead(e, t));
}
async addMessage(e) {
await this.onceReady, this.sdk.inbox.newMessage(e);
}
async resetLastFetched() {
await this.onceReady, this.sdk.inbox.resetLastFetched();
}
async setView(e) {
await this.onceReady, this.sdk.inbox.setView(e);
}
async toggleVisibility() {
await this.onceReady, this.sdk.inbox.toggleInbox();
}
async open() {
await this.onceReady, this.sdk.inbox.toggleInbox(!0);
}
async close() {
await this.onceReady, this.sdk.inbox.toggleInbox(!1);
}
async unpinMessage(e, t) {
await this.onceReady, await this.sdk.inbox.unpinMessage(e, t);
}
async trackClick(e, t) {
await this.onceReady, await this.sdk.inbox.trackClick(e, t);
}
async setConfig(e) {
await this.onceReady, this.sdk.inbox.setConfig(y(e));
}
async mergeConfig(e) {
await this.onceReady, this.sdk.inbox.mergeConfig(y(e));
}
}
class E {
constructor() {
n(this, "_fetchRecipientPreferences", o());
n(this, "_fetchPreferencePage", o());
}
get sdk() {
return window.courier;
}
init() {
this.sdk.on("preferences/FETCH_RECIPIENT_PREFERENCES/DONE", (e) => {
this._fetchRecipientPreferences.resolve(e.payload);
}), this.sdk.on("preferences/FETCH_DRAFT_RECIPIENT_PREFERENCES/DONE", (e) => {
this._fetchRecipientPreferences.resolve(e.payload);
}), this.sdk.on("preferences/FETCH_PREFERENCE_PAGE/DONE", (e) => {
this._fetchPreferencePage.resolve(e.payload);
}), this.sdk.on("preferences/FETCH_DRAFT_PREFERENCE_PAGE/DONE", (e) => {
this._fetchPreferencePage.resolve(e.payload);
});
}
async fetchRecipientPreferences(e, t) {
return this._fetchRecipientPreferences = o(), this.sdk.preferences.fetchRecipientPreferences(e, t), await this._fetchRecipientPreferences;
}
async fetchPreferencePage(e, t) {
return this._fetchPreferencePage = o(), this.sdk.preferences.fetchPreferencePage(e, t), await this._fetchPreferencePage;
}
async updateRecipientPreferences(e) {
this.sdk.preferences.updateRecipientPreferences(e);
}
}
class x {
constructor() {
n(this, "onceReady", o());
}
get sdk() {
return window.courier;
}
init() {
this.sdk.on("inbox/init", () => {
this.onceReady.resolve();
});
}
async create(e) {
await this.onceReady, this.sdk.toast.toast(e);
}
async getConfig() {
return await this.onceReady, this.sdk.toast.config;
}
async setConfig(e) {
await this.onceReady, this.sdk.toast.setConfig(e);
}
async mergeConfig(e) {
await this.onceReady, this.sdk.toast.mergeConfig(e);
}
}
const g = "courier-script", P = "https://components.courier.com/v6.2.1.js", v = async () => {
const s = document.body.querySelector(`#${g}`);
s && s.remove();
const e = document.createElement("script");
e.id = g, e.async = !0, e.setAttribute("src", P), document.body.appendChild(e);
};
window.courierConfig = {
initOnLoad: !1
};
class M {
constructor() {
n(this, "onceLoaded", o());
n(this, "onceReady", o());
n(this, "inbox", new b());
n(this, "preferences", new E());
n(this, "toast", new x());
n(this, "isReady", !1);
window.courierAsyncInit = () => {
this.onceLoaded.resolve();
}, v();
}
get sdk() {
return window.courier;
}
async init(e) {
await this.onceLoaded, this.sdk.on("root/init", () => {
this.onceReady.resolve(), this.isReady = !0, this.inbox.init(), this.preferences.init(), this.toast.init();
}), this.sdk.init(e);
}
async whenReady(e) {
await this.onceReady, e();
}
onAny(e) {
return this.on("*", e);
}
on(e, t) {
return this.sdk.on(e, t), this;
}
async renewSession(e) {
await this.isReady, this.sdk.renewSession(e);
}
}
const a = new M(), _ = () => ({
init: (s) => a.init(s),
renewSession: (s) => a.renewSession(s),
on: (s, e) => a.on(s, e),
onAny: (s) => a.onAny(s),
whenReady: (s) => a.whenReady(s),
inbox: D(),
toast: I(),
preferences: N()
}), D = () => a.inbox, I = () => a.toast, N = () => a.preferences, O = { class: "courier-inbox-vue" }, T = /* @__PURE__ */ p("courier-inbox", null, null, -1), A = [
T
], G = /* @__PURE__ */ u({
__name: "CourierInboxVue",
props: {
brand: {},
className: {},
defaultIcon: { type: [Boolean, String] },
from: {},
isOpen: { type: Boolean, default: void 0 },
markdownOptions: {},
tenantId: {},
views: { default: () => [] },
formatDate: {},
appendTo: {},
labels: {},
onEvent: {},
openLinksInNewTab: { type: Boolean, default: void 0 },
placement: {},
showUnreadMessageCount: { type: Boolean, default: void 0 },
theme: {},
title: {},
trigger: {}
},
emits: ["update:isOpen"],
setup(s, { emit: e }) {
const { on: t, whenReady: i, inbox: r } = _(), c = s, d = e;
return i(() => {
t("inbox/TOGGLE_INBOX", (h) => {
d("update:isOpen", !c.isOpen);
});
}), w(c, (h) => r.mergeConfig({ ...h }), { immediate: !0, flush: "pre" }), (h, U) => (f(), l("div", O, A));
}
}), S = { class: "courier-toast-vue" }, F = /* @__PURE__ */ p("courier-toast", null, null, -1), B = [
F
], H = /* @__PURE__ */ u({
__name: "CourierToastVue",
props: {
autoClose: { type: [Boolean, Number], default: void 0 },
brand: {},
defaultIcon: { type: [String, Boolean], default: void 0 },
hideProgressBar: { type: Boolean, default: void 0 },
onClick: {},
openLinksInNewTab: { type: Boolean, default: void 0 },
position: {},
role: {},
theme: {},
transition: {}
},
setup(s) {
const e = s, { toast: t } = _();
return w(e, (i) => t.mergeConfig(i), { immediate: !0, flush: "pre" }), (i, r) => (f(), l("div", S, B));
}
}), V = { class: "courier-preferences-vue" }, j = /* @__PURE__ */ u({
__name: "CourierPreferencesVue",
props: {
tenantId: {},
draft: { type: Boolean }
},
setup(s) {
const e = s;
return (t, i) => (f(), l("div", V, [
p("courier-preferences", C(m(e)), null, 16)
]));
}
});
export {
G as CourierInboxVue,
j as CourierPreferencesVue,
H as CourierToastVue,
_ as useCourier,
D as useCourierInbox,
N as useCourierPreferences,
I as useCourierToast
};