text: import { createWidget } from "discourse/widgets/widget";
  import { iconNode } from "discourse-common/lib/icon-library";
  import { h } from "virtual-dom";
  import { escapeExpression } from "discourse/lib/utilities";
  
  function renderIcon(name, key, canAct) {
    const iconArgs = key === "unpinned" ? { class: "unpinned" } : null,
      icon = iconNode(name, iconArgs);
  
    const attributes = {
      title: escapeExpression(I18n.t(`topic_statuses.${key}.help`))
    };
    return h(`${canAct ? "a" : "span"}.topic-status`, attributes, icon);
  }
  
  export default createWidget("topic-status", {
    tagName: "div.topic-statuses",
  
    html(attrs) {
      const topic = attrs.topic;
      const canAct = this.currentUser && !attrs.disableActions;
  
      const result = [];
      const renderIconIf = (conditionProp, name, key) => {
        if (!topic.get(conditionProp)) {
          return;
        }
        result.push(renderIcon(name, key, canAct));
      };
  
      renderIconIf("is_warning", "envelope", "warning");
  
      if (topic.get("closed") && topic.get("archived")) {
        renderIcon("lock", "locked_and_archived");
      } else {
        renderIconIf("closed", "lock", "locked");
        renderIconIf("archived", "lock", "archived");
      }
  
      renderIconIf("pinned", "thumb-tack", "pinned");
      renderIconIf("unpinned", "thumb-tack", "unpinned");
      renderIconIf("invisible", "eye-slash", "invisible");
  
      return result;
    }
  });
  