import discourseComputed from "discourse-common/utils/decorators";
import { notEmpty } from "@ember/object/computed";
import { userProperties } from "../lib/wizard";
import { scheduleOnce } from "@ember/runloop";
import Component from "@ember/component";
import I18n from "I18n";

const excludedUserProperties = [
  "avatar",
  "profile_background",
  "card_background",
];

export default Component.extend({
  classNames: "wizard-text-editor",
  barEnabled: true,
  previewEnabled: true,
  fieldsEnabled: true,
  hasWizardFields: notEmpty("wizardFieldList"),
  hasWizardActions: notEmpty("wizardActionList"),

  didReceiveAttrs() {
    this._super(...arguments);

    if (!this.barEnabled) {
      scheduleOnce("afterRender", () => {
        $(this.element).find(".d-editor-button-bar").addClass("hidden");
      });
    }
  },

  @discourseComputed("forcePreview")
  previewLabel(forcePreview) {
    return I18n.t("admin.wizard.editor.preview", {
      action: I18n.t(`admin.wizard.editor.${forcePreview ? "hide" : "show"}`),
    });
  },

  @discourseComputed("showPopover")
  popoverLabel(showPopover) {
    return I18n.t("admin.wizard.editor.popover", {
      action: I18n.t(`admin.wizard.editor.${showPopover ? "hide" : "show"}`),
    });
  },

  @discourseComputed()
  userPropertyList() {
    return userProperties
      .filter((f) => !excludedUserProperties.includes(f))
      .map((f) => ` u{${f}}`);
  },

  @discourseComputed("wizardFields")
  wizardFieldList(wizardFields) {
    return wizardFields.map((f) => ` w{${f.id}}`);
  },

  @discourseComputed("wizardActions")
  wizardActionList(wizardActions) {
    return wizardActions.map((a) => ` w{${a.id}}`);
  },

  actions: {
    togglePreview() {
      this.toggleProperty("forcePreview");
    },

    togglePopover() {
      this.toggleProperty("showPopover");
    },
  },
});
