'use strict';

Object.defineProperty(exports, '__esModule', { value: true });

const index$1 = require('./index-0b1e2673.js');
require('./_commonjsHelpers-937cd5b3.js');
const index$2 = require('./index-ab186017.js');
const index = require('./index-36cf3884.js');

const sv = {
  Add: "Lägg till",
};

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

const styleCss = ".sc-payfunc-email-addresses-h{display:block}smoothly-icon.sc-payfunc-email-addresses{cursor:pointer;float:right;margin-top:-1.5em;padding-bottom:.5em;visibility:hidden}payfunc-email-address.sc-payfunc-email-addresses{clear:both}.sc-payfunc-email-addresses-h:hover smoothly-icon.sc-payfunc-email-addresses{visibility:visible}";

const PayfuncEmailAddresses = class {
  constructor(hostRef) {
    index$1.registerInstance(this, hostRef);
    this.changed = index$1.createEvent(this, "changed", 7);
    this.editable = true;
    this.adding = false;
  }
  get types() {
    return index$2.EmailAddresses.types.filter(type => index$2.EmailAddresses.is(this.value) ? !this.value[type] : this.value ? type != "primary" : type);
  }
  get emailAddresses() {
    return index$2.EmailAddresses.is(this.value) ? Object.assign({}, this.value) : { primary: this.value };
  }
  componentWillLoad() {
    this.t = create(this.element);
  }
  onEdit(e) {
    const type = e.detail.type;
    delete e.detail.type;
    let result;
    if (!index$2.EmailAddresses.is(this.value))
      result = e.detail.value;
    else {
      result = Object.assign({}, this.value);
      result[type] = e.detail.value;
    }
    this.changed.emit((this.value = result));
  }
  onDelete(e) {
    const type = e.detail;
    const result = Object.assign({}, this.emailAddresses);
    delete result[type];
    this.changed.emit((this.value = result));
  }
  onAdd(e) {
    const type = e.detail.type;
    const value = e.detail.value;
    const result = this.emailAddresses;
    result[type] = value;
    this.changed.emit((this.value = result));
    this.adding = false;
  }
  render() {
    return [
      this.adding ? (index$1.h("payfunc-email-input", { onEdit: () => (this.adding = false), types: this.types, mode: "add", onAdd: (e) => this.onAdd(e) })) : ([]),
      this.editable && this.types.length > 0 ? (index$1.h("smoothly-icon", { name: "add-circle", toolTip: this.t("Add"), fill: "clear", size: "medium", color: "success", style: this.adding ? { display: "none" } : {}, onClick: () => (this.adding = true) })) : ([]),
      index$2.EmailAddresses.is(this.value) ? (index$2.EmailAddresses.map(this.value, (type, value) => [
        index$1.h("payfunc-email-address", { value: value, type: type, editable: this.editable, onEdit: (e) => this.onEdit(e), onDelete: (e) => this.onDelete(e) }),
      ])) : this.value ? (index$1.h("payfunc-email-address", { value: this.value, editable: this.editable, onEdit: (e) => this.onEdit(e), onDelete: (e) => this.onDelete(e) })) : ([]),
    ];
  }
  get element() { return index$1.getElement(this); }
};
PayfuncEmailAddresses.style = styleCss;

exports.payfunc_email_addresses = PayfuncEmailAddresses;
