import discourseComputed from "discourse-common/utils/decorators"; import { debounce } from "@ember/runloop"; import Component from "@ember/component"; import { observes } from "discourse-common/utils/decorators"; import { escapeExpression } from "discourse/lib/utilities"; import { convertIconClass } from "discourse-common/lib/icon-library"; import { ajax } from "discourse/lib/ajax"; import { htmlSafe } from "@ember/template"; export default Component.extend({ classNames: ["group-flair-inputs"], @discourseComputed demoAvatarUrl() { return Discourse.getURL("/images/avatar.png"); }, @discourseComputed("model.flair_url") flairPreviewIcon(flairURL) { return flairURL && /fa(r|b?)-/.test(flairURL); }, @discourseComputed("model.flair_url", "flairPreviewIcon") flairPreviewIconUrl(flairURL, flairPreviewIcon) { return flairPreviewIcon ? convertIconClass(flairURL) : ""; }, @observes("model.flair_url") _loadSVGIcon() { debounce(this, this._loadIcon, 1000); }, _loadIcon() { const icon = convertIconClass(this.get("model.flair_url")), c = "#svg-sprites", h = "ajax-icon-holder", singleIconEl = `${c} .${h}`; if (!icon) return; if (!$(`${c} symbol#${icon}`).length) { ajax(`/svg-sprite/search/${icon}`).then(function(data) { if ($(singleIconEl).length === 0) $(c).append(`