UNPKG

@braze/web-sdk

Version:

Braze SDK for web sites and other JS platforms.

210 lines (209 loc) 5.55 kB
import { convertMsToSeconds as X, dateFromUnixTimestamp as Y, } from "../../util/date-utils.js"; import { FEED_ANIMATION_DURATION as Z } from "../../common/constants.js"; import f from "../../managers/subscription-manager.js"; import E from "../../../shared-lib/logger.js"; export default class Card { constructor(t, i, s, h, l, n, e, r, u, E, T, o, a, I, N, A) { (this.id = t), (this.viewed = i), (this.title = s), (this.imageUrl = h), (this.description = l), (this.updated = n), (this.expiresAt = e), (this.url = r), (this.linkText = u), (this.aspectRatio = E), (this.extras = T), (this.pinned = o), (this.dismissible = a), (this.clicked = I), (this.language = N), (this.altImageText = A), (this.id = t), (this.viewed = i || !1), (this.title = s || ""), (this.imageUrl = h), (this.description = l || ""), (this.updated = n || null), (this.expiresAt = e || null), (this.url = r), (this.linkText = u), null == E ? (this.aspectRatio = null) : ((E = parseFloat(E.toString())), (this.aspectRatio = isNaN(E) ? null : E)), (this.extras = T || {}), (this.pinned = o || !1), (this.dismissible = a || !1), (this.dismissed = !1), (this.clicked = I || !1), (this.isControl = !1), (this.language = N || null), (this.altImageText = A || null), (this.test = !1), (this.ti = null), (this.ii = null), (this.si = null); } subscribeToClickedEvent(t) { return this.hi().Kt(t); } subscribeToDismissedEvent(t) { return this.li().Kt(t); } removeSubscription(t) { this.hi().removeSubscription(t), this.li().removeSubscription(t); } removeAllSubscriptions() { this.hi().removeAllSubscriptions(), this.li().removeAllSubscriptions(); } dismissCard() { if (!this.dismissible || this.dismissed) return; "function" == typeof this.logCardDismissal && this.logCardDismissal(); let t = this.te; !t && this.id && (t = document.getElementById(this.id)), t && ((t.style.height = t.offsetHeight + "px"), (t.className = t.className + " ab-hide"), setTimeout(function () { t && t.parentNode && ((t.style.height = "0"), (t.style.margin = "0"), setTimeout(function () { t && t.parentNode && t.parentNode.removeChild(t); }, Card.ni)); }, Z)); } hi() { return null == this.ti && (this.ti = new f()), this.ti; } li() { return null == this.ii && (this.ii = new f()), this.ii; } gs() { const t = new Date().valueOf(); return ( !(null != this.si && t - this.si < Card.ei) && ((this.si = t), (this.viewed = !0), !0) ); } ss() { (this.viewed = !0), (this.clicked = !0), this.hi().A(); } ls() { return ( !(!this.dismissible || this.dismissed) && ((this.dismissed = !0), this.li().A(), !0) ); } ri(t) { if (null == t || t[Card.ui.qs] !== this.id) return !0; if (t[Card.ui.Ei]) return !1; if ( null != t[Card.ui.Bs] && null != this.updated && parseInt(t[Card.ui.Bs]) < X(this.updated.valueOf()) ) return !0; if ( (t[Card.ui.vs] && !this.viewed && (this.viewed = !0), t[Card.ui.Is] && !this.clicked && (this.clicked = t[Card.ui.Is]), null != t[Card.ui.ws] && (this.title = t[Card.ui.ws]), null != t[Card.ui.ys] && (this.imageUrl = t[Card.ui.ys]), null != t[Card.ui.As] && (this.description = t[Card.ui.As]), null != t[Card.ui.Bs]) ) { const i = Y(t[Card.ui.Bs]); null != i && (this.updated = i); } if (null != t[Card.ui.Cs]) { let i; (i = t[Card.ui.Cs] === Card.Ti ? null : Y(t[Card.ui.Cs])), (this.expiresAt = i); } if ( (null != t[Card.ui.URL] && (this.url = t[Card.ui.URL]), null != t[Card.ui.Ds] && (this.linkText = t[Card.ui.Ds]), null != t[Card.ui.Es]) ) { const i = parseFloat(t[Card.ui.Es].toString()); this.aspectRatio = isNaN(i) ? null : i; } return ( null != t[Card.ui.Fs] && (this.extras = t[Card.ui.Fs]), null != t[Card.ui.Gs] && (this.pinned = t[Card.ui.Gs]), null != t[Card.ui.Hs] && (this.dismissible = t[Card.ui.Hs]), null != t[Card.ui.Js] && (this.language = t[Card.ui.Js]), null != t[Card.ui.Ks] && (this.altImageText = t[Card.ui.Ks]), null != t[Card.ui.Ls] && (this.test = t[Card.ui.Ls]), !0 ); } qt() { E.error("Must be implemented in a subclass"); } } (Card.Ti = -1), (Card.ui = { qs: "id", vs: "v", Hs: "db", Ei: "r", Bs: "ca", Gs: "p", Cs: "ea", Fs: "e", xs: "tp", ys: "i", ws: "tt", As: "ds", URL: "u", Ds: "dm", Es: "ar", Is: "cl", Ls: "t", Js: "language", Ks: "image_alt", }), (Card.ks = { zs: "captioned_image", oi: "text_announcement", ai: "short_news", Ii: "banner_image", Ni: "control", }), (Card.bs = { qs: "id", vs: "v", Hs: "db", Ai: "cr", Bs: "ca", Gs: "p", ci: "t", Cs: "ea", Fs: "e", xs: "tp", ys: "i", ws: "tt", As: "ds", URL: "u", Ds: "dm", Es: "ar", Is: "cl", Ls: "s", Js: "l", Ks: "ia", }), (Card.mi = { Si: "ADVERTISING", Di: "ANNOUNCEMENTS", pi: "NEWS", di: "SOCIAL", }), (Card.ni = 400), (Card.ei = 1e4);