import { r as registerInstance, j as createEvent, h, g as getElement } from './index-07845439.js';
import { E as Error } from './index-38089f62.js';
import './index-cd3eb450.js';
import { C as Connection, a as Customer } from './index-e20749b7.js';
import { d as dist } from './index-63517df5.js';
import { N as Notice } from './index-f068b00b.js';
import './App-15d9fce3.js';
import './index-b6cf748e.js';
import './_commonjsHelpers-8fe71198.js';
import './index-265fba1f.js';

const sv = {
  "Create order": "Skapa order",
  Cancel: "Avbryt",
  "Retrying payment.": "Försöker betalning igen.",
  "Your payment was declined.": "Betalningen nekades.",
  "Payment succeeded.": "Betalning genomförd.",
  "Retry payment": "Försök betala",
  "Create subscription": "Skapa prenumeration",
  "Equalize balance to zero": "Justera saldot till noll",
  "Equalizing balance...": "Justerar saldo...",
  "$0 of $1 balances were equalized.": "$0 av $1 saldon har justerats.",
  "Balance was equalized.": "Saldot har justerats.",
  "Failed to equalize $0 of $1 balances.": "Kunde inte justera $0 av $1 saldon.",
  "Failed to equalize balance.": "Kunde inte justera saldo.",
};

function create(language) {
  return dist.create({
    sv,
  }, language);
}

const styleCss = ".sc-ig-customer-actions-h{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column}[hidden].sc-ig-customer-actions-h{display:none}div.sc-ig-customer-actions:first-of-type{z-index:3;padding:0.5em 0 0.5em 0.4em;overflow:hidden;position:fixed;top:8.5em;right:-3.3em;background-color:rgb(var(--smoothly-medium-tint));border-radius:.3em 0 0 .3em;-webkit-box-shadow:var(--smoothly-shadow);box-shadow:var(--smoothly-shadow);-webkit-transition:right ease-in-out .3s;transition:right ease-in-out .3s}.sc-ig-customer-actions-h>div.sc-ig-customer-actions>smoothly-trigger.sc-ig-customer-actions{border-radius:0;border:solid 1px rgb(var(--smoothly-color))}@-webkit-keyframes slide{0%{width:0}}@keyframes slide{0%{width:0}}.sc-ig-customer-actions-h>portal-create-order.sc-ig-customer-actions,.sc-ig-customer-actions-h>ig-subscription-create.sc-ig-customer-actions{background-color:rgb(var(--smoothly-medium-contrast));border:solid 1px rgb(var(--smoothly-medium-shade));-webkit-box-shadow:var(--smoothly-shadow);box-shadow:var(--smoothly-shadow);border-radius:.6em;position:fixed;z-index:3;right:5em;padding:1em}.sc-ig-customer-actions-h>portal-create-order.sc-ig-customer-actions{padding-bottom:.5em;top:6em}.sc-ig-customer-actions-h>ig-subscription-create.sc-ig-customer-actions{top:9em}.arrow.sc-ig-customer-actions{background-color:rgb(var(--smoothly-medium-contrast));border-color:rgb(var(--smoothly-medium-shade));width:30px;height:30px;border-top-style:solid;border-top-width:1px;border-right-style:solid;border-right-width:1px;position:fixed;z-index:3;right:4em;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.sc-ig-customer-actions-h>portal-create-order.sc-ig-customer-actions+.arrow.sc-ig-customer-actions{top:9.5em}.sc-ig-customer-actions-h>ig-subscription-create.sc-ig-customer-actions+.arrow.sc-ig-customer-actions{top:12em}.sc-ig-customer-actions-h .background.sc-ig-customer-actions{position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:2;background:rgba(var(--smoothly-warning-contrast), 0.5)}";

const IntergiroCustomerActions = class {
  constructor(hostRef) {
    registerInstance(this, hostRef);
    this.notice = createEvent(this, "notice", 7);
    this.selected = {};
  }
  componentWillLoad() {
    this.t = create(this.element);
  }
  retry() {
    this.notice.emit(Notice.execute(this.t("Retrying payment."), async () => {
      const response = await Connection.put("retry", {});
      return Error.is(response)
        ? [false, this.t("Your payment was declined.")]
        : [true, this.t("Payment succeeded.")];
    }));
  }
  equalize() {
    const idArray = Object.keys(this.selected);
    this.notice.emit(Notice.execute(this.t("Equalizing balance..."), async () => {
      let result;
      const response = await Promise.all(idArray.map(id => Connection.delete(`customer/${id}/balance`)));
      const [succeeded, failed] = response.reduce(([s, f], e) => (Error.is(e) ? [s, ++f] : [++s, f]), [0, 0]);
      if (succeeded > 0)
        result = [
          true,
          idArray.length > 1
            ? this.t("$0 of $1 balances were equalized.", succeeded, idArray.length)
            : this.t("Balance was equalized."),
        ];
      else
        result = [
          false,
          idArray.length > 1
            ? this.t("Failed to equalize $0 of $1 balances.", failed, idArray.length)
            : this.t("Failed to equalize balance."),
        ];
      return result;
    }));
  }
  toggle(action) {
    this.opened = action == this.opened ? "" : action;
  }
  render() {
    const customers = Object.values(this.selected).filter(Customer.is);
    const retry = customers.every(c => c.status == "suspended" || c.status == "pending");
    return [
      h("div", { style: customers.length > 0 ? { right: "0" } : {} }, h("smoothly-trigger", { color: "success", name: "cancel", onClick: () => this.toggle("order") }, h("smoothly-icon", { toolTip: this.opened == "order" ? this.t("Cancel") : this.t("Create order"), name: this.opened == "order" ? "close" : "add" })), h("smoothly-trigger", { hidden: !this.whitelist, slot: "icon", color: "success", onClick: () => this.toggle("subscription") }, h("smoothly-icon", { toolTip: this.t("Create subscription"), name: "calendar-outline" })), h("smoothly-trigger", { color: "warning", hidden: !this.whitelist, slot: "icon", onClick: () => this.equalize() }, h("smoothly-icon", { toolTip: this.t("Equalize balance to zero"), name: "cash-outline" })), h("smoothly-trigger", { color: "danger", disabled: !retry, name: "retry", onClick: () => this.retry() }, h("smoothly-icon", { toolTip: this.t("Retry payment"), name: "refresh" }))),
      (this.opened == "order" || this.opened == "subscription") && Object.entries(this.selected).length > 0
        ? [
          this.opened == "order" ? (h("portal-create-order", { type: "customer", selected: this.selected })) : (h("ig-subscription-create", { customers: this.selected })),
          h("div", { class: "arrow" }),
          h("div", { class: "background", onClick: () => this.toggle(this.opened) }),
        ]
        : "",
    ];
  }
  get element() { return getElement(this); }
};
IntergiroCustomerActions.style = styleCss;

export { IntergiroCustomerActions as ig_customer_actions };
