UNPKG

@arcgis/map-components

Version:
1,924 lines • 93.8 kB
/* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
import { c as de } from "../../chunks/runtime.js";
import { css as pe, html as d, svg as X } from "lit";
import { keyed as w } from "lit/directives/keyed.js";
import { LitElement as he, createEvent as T, safeStyleMap as Z, nothing as ue, safeClassMap as me } from "@arcgis/lumina";
import { u as ge } from "../../chunks/useT9n.js";
import { m as ve } from "../../chunks/useViewModel.js";
import { property as o, subclass as C } from "@arcgis/core/core/accessorSupport/decorators.js";
import U from "@arcgis/core/core/Accessor.js";
import B from "@arcgis/core/Graphic.js";
import { getApplicationClipboard as fe } from "@arcgis/core/applications/Components/clipboard.js";
import we from "@arcgis/core/layers/GraphicsLayer.js";
import { g as be, a as ye } from "../../chunks/clipoardSymbolHelper.js";
import j from "@arcgis/core/core/Collection.js";
import { getFullTemplate as J, isSharedTemplate as Q, getCreationAttributes as Me, isSharedTemplateOrMetadata as ie } from "@arcgis/core/applications/Components/templateUtils.js";
import { createApplySetModifyItem as W, createApplySet as q, createFeatureStateProvider as K, createApplySetAddItem as R, writeApplySetToService as Ce } from "@arcgis/core/applications/Components/applySetUtils.js";
import { whenOnce as ae, watch as N } from "@arcgis/core/core/reactiveUtils.js";
import { getRendererFields as Y, getFeatureEditFields as Fe } from "@arcgis/core/layers/support/fieldUtils.js";
import _e from "@arcgis/core/widgets/BatchAttributeForm/BatchAttributeFormViewModel.js";
import { c as xe, f as ee } from "../../chunks/layer-utils.js";
import { substitute as b } from "@arcgis/core/intl.js";
import { usePropertyChange as Pe } from "@arcgis/lumina/controllers";
import { createRef as V, ref as D } from "lit/directives/ref.js";
import "../arcgis-multi-feature-form/customElement.js";
import { createGraphicsMover as $e } from "@arcgis/core/applications/Components/editUtils.js";
const Ae = pe`.esri-widget__heading{color:var(--calcite-color-text-2);margin:0 0 .5rem;font-weight:var(--calcite-font-weight-semibold)}h1.esri-widget__heading{font-size:var(--calcite-font-size-xl)}h2.esri-widget__heading{font-size:var(--calcite-font-size-md)}h3.esri-widget__heading,h4.esri-widget__heading,h5.esri-widget__heading,h6.esri-widget__heading{font-size:var(--calcite-font-size)}.esri-widget{box-sizing:border-box;color:var(--calcite-color-text-2);background-color:var(--calcite-color-foreground-1);font-size:var(--calcite-font-size);line-height:var(--calcite-font-line-height-relative-tight)}.esri-widget *,.esri-widget :before,.esri-widget :after{box-sizing:inherit}.esri-widget.esri-widget--disabled>*{opacity:.4;pointer-events:none}.esri-widget.esri-widget--compact{--esri-widget-padding-y: 0;--esri-widget-padding-x: 0}.esri-widget__anchor{color:var(--calcite-color-text-2)}.esri-widget__anchor:hover{color:var(--calcite-color-text-3)}.esri-widget__anchor:hover,.esri-widget__anchor:focus{text-decoration:underline}.esri-widget__anchor--disabled{opacity:.4;pointer-events:none}.esri-widget__header{background-color:var(--calcite-color-foreground-1);flex:1 0 100%;justify-content:space-between;align-items:center;width:100%;min-height:48px;padding:12px 0 12px 15px;display:flex}.esri-widget__heading{word-break:break-word}.esri-widget__header .esri-widget__heading{width:calc(100% - 48px);text-align:initial;color:var(--calcite-color-text-1);align-items:center;margin:0;padding:0;display:flex}.esri-widget__header-button{appearance:none;cursor:pointer;color:var(--calcite-color-text-2);background-color:var(--calcite-color-foreground-1);border:none;flex:0 0 48px;justify-content:center;align-self:stretch;align-items:center;width:48px;padding:0;display:flex}.esri-widget__footer{background-color:var(--calcite-color-foreground-1);justify-content:center;align-items:center;width:100%;min-height:48px;display:flex}.esri-widget__footer-pagination{color:var(--calcite-color-text-2);justify-content:space-between;align-items:center;display:flex}.esri-widget__footer-pagination-previous-button,.esri-widget__footer-pagination-next-button{cursor:pointer;background-color:var(--calcite-color-foreground-1);border:0;margin:0 7px;padding:12px 15px;transition:background-color .125s ease-in-out}.esri-widget__footer-pagination-previous-button:hover,.esri-widget__footer-pagination-previous-button:focus,.esri-widget__footer-pagination-next-button:hover,.esri-widget__footer-pagination-next-button:focus{color:var(--calcite-color-text-1);background-color:var(--calcite-color-foreground-1)}.esri-menu{visibility:hidden;z-index:1;background-clip:padding;background-color:var(--calcite-color-foreground-1);background-clip:padding-box;width:100%;max-height:0;margin:2px 0 0;padding:0;font-size:var(--calcite-font-size);line-height:var(--calcite-spacing-xl);position:absolute;top:100%;left:0;overflow:hidden;box-shadow:0 1px 2px #0000004d}.esri-menu .esri-menu__header{color:var(--calcite-color-text-inverse);background-color:var(--calcite-color-inverse);padding:6px 12px}.esri-menu__list{margin:0;padding:0;list-style:none}.esri-menu__list-item{cursor:pointer;border-top:1px solid #adadad4d;border-left:3px solid #0000;padding:.8em 1em}.esri-menu__list-item [class^=esri-icon-],.esri-menu__list-item [class*=" esri-icon-"]{padding-right:2.8px}.esri-menu__list-item:first-child{border-top:none}.esri-menu__list-item--focus,.esri-menu__list-item:hover,.esri-menu__list-item:focus{background-color:var(--calcite-color-foreground-1)}.esri-menu__list-item:active{background-color:var(--calcite-color-foreground-current)}.esri-menu__list-item--active,.esri-menu__list-item--active:hover,.esri-menu__list-item--active:focus{background-color:var(--calcite-color-foreground-1);border-left-color:var(--calcite-color-brand)}.esri-widget__table{border-collapse:collapse;color:var(--calcite-color-text-1);border:none;width:100%;line-height:var(--calcite-font-line-height-relative-tight)}.esri-widget__table tr:nth-child(odd){background-color:var(--calcite-color-transparent)}.esri-widget__table tr:nth-child(2n){background-color:var(--calcite-color-transparent-press)}.esri-widget__table tr a{color:var(--calcite-color-text-2)}.esri-widget__table tr a:hover,.esri-widget__table tr a:focus{color:var(--calcite-color-text-1)}.esri-widget__table tr td,.esri-widget__table tr th{vertical-align:top;word-break:break-word;padding:.5em .7em;font-size:var(--calcite-font-size-sm);font-weight:var(--calcite-font-weight-regular)}.esri-widget__table tr th{text-align:left;border-right:3px solid #0000000d;width:50%}.esri-widget__table tr td{width:50%}.esri-input{color:var(--calcite-color-text-1);background-color:var(--calcite-color-foreground-1);border:1px solid #959595;font-size:var(--calcite-font-size)}.esri-input::-ms-clear{display:none}.esri-input::placeholder{opacity:1;color:var(--calcite-color-text-2)}.esri-input:placeholder-shown{text-overflow:ellipsis}.esri-input[type=text],.esri-input[type=password],.esri-input[type=number]{height:32px;padding:0 .5em}calcite-combobox.esri-input{border:none}.esri-widget__content--empty{text-align:center;color:var(--calcite-color-border-input);flex-flow:column wrap;align-items:center;padding:18px 22px;display:flex}.esri-widget__content--empty h1.esri-widget__heading,.esri-widget__content--empty h2.esri-widget__heading,.esri-widget__content--empty h3.esri-widget__heading,.esri-widget__content--empty h4.esri-widget__heading,.esri-widget__content--empty h5.esri-widget__heading{font-weight:var(--calcite-font-weight-regular)}.esri-widget__content-illustration--empty{width:128px;padding:1rem 0}.esri-widget__content-icon--empty{width:32px;padding:.5rem 0}.esri-select{appearance:none;cursor:pointer;color:var(--calcite-color-text-2);background:var(--calcite-color-foreground-1) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-8 -8 32 32' width='32' height='32'%3E%3Cpath d='M8 11.207l-4-4V5.793l4 4 4-4v1.414z' fill='%23adadad' fillrule='nonzero'/%3E%3C/svg%3E") 100% no-repeat;border:1px solid #959595;border-radius:0;width:100%;height:32px;margin:0;padding:0 .5em;font-family:inherit;font-size:.85em;display:block}.esri-select[disabled]{cursor:auto}.esri-select::-ms-expand{display:none}.esri-disabled a,.esri-disabled [role=menu],.esri-disabled [role=checkbox],.esri-disabled [class^=esri-icon-],.esri-disabled [class*=" esri-icon-"]{color:var(--calcite-color-text-3)}.keynav-mode .esri-widget:focus,.keynav-mode .esri-widget :focus{z-index:1;outline-offset:2px;outline:2px solid #adadad}.esri-widget__loader-animation{border:.15em solid #adadad4d;border-top-color:var(--calcite-color-border-input);border-radius:100%;width:1em;height:1em;font-size:var(--calcite-font-size-md);animation:1.25s linear infinite esri-rotate;display:block;transform:translateZ(0)}:dir(rtl) .esri-widget__table th{text-align:right;border-left:3px solid #0000000d;border-right:none}:dir(rtl) .esri-select{background-position:0}:dir(rtl) .esri-menu__list-item{border-left:none;border-right:3px solid #0000}:dir(rtl) .esri-menu__list-item [class^=esri-icon-],:dir(rtl) .esri-menu__list-item [class*=" esri-icon-"]{padding-left:2px;padding-right:0}:dir(rtl) .esri-menu__list-item--active{border-right-color:var(--calcite-color-brand)}.esri-icon-font-fallback-text{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}.esri-rotating{animation:1.25s linear infinite esri-rotate;transform:translateZ(0)}.esri-clearfix:before,.esri-clearfix:after{content:" ";display:table}.esri-clearfix:after{clear:both}.esri-interactive{cursor:pointer}.esri-hidden{display:none!important}.esri-invisible{visibility:hidden!important}.esri-offscreen{position:absolute;top:-999em;left:-999em}.esri-match-height{flex-direction:column;flex:auto;display:flex;overflow:hidden}:host{display:flex}.arcgis-paste{height:var(--arcgis-paste-height, 300px);width:var(--arcgis-paste-width, 300px);flex:1}.hidden{display:none}.flex-row{flex-direction:row}.justify-center{justify-content:center}.h-full{height:100%}.w-full{width:100%}.flex{display:flex}.text-center{text-align:center}.pad-contents{padding:var(--arcgis-paste-blocks-padding, var(--calcite-spacing-md))}.merge-feature-form{padding-left:var(--arcgis-paste-blocks-padding, var(--calcite-spacing-md));padding-right:var(--arcgis-paste-blocks-padding, var(--calcite-spacing-md));padding-bottom:var(--arcgis-paste-blocks-padding, var(--calcite-spacing-md))}.pad-start-end{padding-left:var(--arcgis-paste-blocks-padding, var(--calcite-spacing-md));padding-right:var(--arcgis-paste-blocks-padding, var(--calcite-spacing-md))}.gallery-content{padding-top:var(--arcgis-paste-blocks-padding, var(--calcite-spacing-md));padding-bottom:var(--arcgis-paste-blocks-padding, var(--calcite-spacing-md));display:flex;row-gap:var(--arcgis-paste-blocks-padding, var(--calcite-spacing-md));flex-direction:column}.chip-indent{margin-left:5px;margin-right:5px}.merge-split-view-container{display:flex;flex-direction:column;height:100%}.merge-split-view-items{flex:0 1 auto;max-height:50%;overflow-y:scroll}.merge-split-view-attributes{flex:1;overflow-y:scroll}.choose-feature{position:absolute;width:100%;max-height:100%;z-index:2;overflow-y:auto}.bau-pick{display:flex;flex-direction:row;align-items:center;gap:4px}.danger-icon-warning{--calcite-icon-color: var(--calcite-color-status-danger)}.paste-feature-templates{--arcgis-feature-templates-max-list-height: 100%}`;
async function Ee(e, t = {}) {
  if (e?.type === "subtype-group") {
    if (!e.subtypeField)
      return [];
    const a = t[e.subtypeField];
    if (!le(a))
      return [];
    const s = e.findSublayerForSubtypeCode(a);
    return s ? s.renderer && s.fieldsIndex ? await Y(s.renderer, e.fieldsIndex) : [] : [];
  }
  return e ? e.renderer && e.fieldsIndex ? await Y(e.renderer, e.fieldsIndex) : [] : [];
}
function Ie(e, t, i, a, s, r) {
  const l = { ...a }, h = Se(r), p = Te(r);
  let u = "";
  (r.type === "subtype-group" || r.type === "subtype-sublayer") && (u = r.subtypeField ?? "");
  const g = r.objectIdField ?? "";
  return e.forEach((m) => {
    if (m.name !== g && !h.includes(m.name) && !p.includes(m.name) && !s.includes(m.name) && m.type !== "global-id" && (u === "" || u !== m.name)) {
      const f = Oe(m, t);
      f.match && f.targetField && (l[f.targetField?.name] = i[m.name]);
    }
  }), l;
}
function Se(e) {
  return e && "relationships" in e ? (e.relationships ?? []).filter((i) => i.role === "origin").map((i) => i.keyField) : [];
}
function Te(e) {
  return e?.type === "subtype-sublayer" && (e = e.parent), e ? Fe(e) : [];
}
function Ge(e, t) {
  if (e.type === t.type)
    return t.type === "string" ? e.length <= t.length : !0;
  switch (e.type) {
    case "small-integer":
      return ["integer", "big-integer"].includes(t.type);
    case "integer":
      return t.type === "big-integer";
    case "single":
      return t.type === "double";
    default:
      return !1;
  }
}
function Oe(e, t) {
  const i = { match: !1, sourceField: null, targetField: null };
  for (const a of t)
    if (Ge(e, a)) {
      const s = e.name.replace(/\s/gu, "").toLowerCase();
      if (a.name.replace(/\s/gu, "").toLowerCase() === s)
        return i.match = !0, i.sourceField = e, i.targetField = a, i;
    }
  return i;
}
async function se(e, t, i, a) {
  let s = !0;
  const r = { hasAsyncArcadeExpressions: !1 }, l = e.items.filter((h) => h.type === "add");
  for (const h of l) {
    const p = h.graphic.clone(), u = ke(
      h.graphic,
      h.layer
    );
    if (!u) {
      s = !1;
      continue;
    }
    const g = !await He(
      t,
      h.graphic,
      u,
      i,
      r
    );
    if (r.hasAsyncArcadeExpressions && l.length > a)
      return !1;
    const m = W({
      graphic: h.graphic,
      layer: h.layer,
      originalGraphic: p
    });
    if (e.push(m), !g)
      return !1;
  }
  return s;
}
function ke(e, t) {
  if (t.type === "feature" || t.type === "subtype-sublayer")
    return t;
  const i = t.findSublayerForFeature(e);
  return i || null;
}
async function He(e, t, i, a, s) {
  const r = i.formTemplate, l = i.fields.filter((f) => {
    const z = t.attributes[f.name], ce = z === null || z === "" || z === void 0;
    return f.editable && !f.nullable && ce;
  });
  if (!r)
    return l.length !== 0;
  const h = /* @__PURE__ */ new Set();
  oe(r.elements ?? [], h);
  const p = /* @__PURE__ */ new Set();
  if (re(r.elements ?? [], p), h.size === 0 && p.size === 0)
    return l.length > 0;
  const u = t.clone();
  u.layer = i, delete u.attributes[i.objectIdField], a.has(i) || a.set(
    i,
    new _e({
      map: e.map,
      editType: "INSERT"
    })
  );
  const g = a.get(i);
  if (g.features = new j([u]), await ae(
    () => (g.status === "loaded" || g.status === "failed") && !g.updating
  ), g.hasAsyncArcadeExpressions && (s.hasAsyncArcadeExpressions = !0), g.status === "failed")
    return !0;
  let m = g.getValues(u) ?? {};
  if (i.objectIdField && m[i.objectIdField] !== void 0) {
    const { [i.objectIdField]: f, ...z } = m;
    m = z;
  }
  return Object.keys(m).forEach((f) => {
    i.fieldsIndex.has(f) && (t.attributes[f] = ze(
      m[f],
      f,
      i.fieldsIndex
    ));
  }), g.invalidFeatures.length > 0;
}
function re(e, t) {
  for (const i of e)
    i.type === "group" ? re(i.elements, t) : i.type === "field" && i.valueExpression && t.add(i.fieldName);
}
function oe(e, t) {
  for (const i of e)
    i.type === "group" ? oe(i.elements, t) : i.type === "field" && i.requiredExpression && t.add(i.fieldName);
}
function le(e) {
  return typeof e == "number";
}
function Le(e) {
  return typeof e == "number" && window.isFinite(e) && Math.floor(e) === e;
}
function ze(e, t, i) {
  if (e === null || e === void 0)
    return null;
  switch (i.get(t).type) {
    case "big-integer":
    case "long":
    case "oid":
    case "integer":
    case "small-integer":
      return Le(e) ? e : window.parseInt(e);
    case "single":
    case "double":
      return le(e) ? e : window.parseFloat(e);
    case "global-id":
    case "guid":
      return e === "" ? null : e;
    case "date":
      break;
    case "date-only":
    case "time-only":
    case "timestamp-offset":
      return e === "" ? null : e;
    case "string":
      return e === "" ? null : e;
  }
  return e;
}
function Ve(e) {
  return e && "layer" in e ? e.layer : void 0;
}
function E(e) {
  if (!e)
    return null;
  const t = Ve(e.origin) ?? e.layer ?? e?.sourceLayer ?? null;
  if (t && t.type === "subtype-sublayer")
    return t.parent;
  switch (t?.type) {
    case "csv":
    case "feature":
    case "geojson":
    case "ogc-feature":
    case "subtype-group":
    case "wfs":
      return t;
    default:
      return null;
  }
}
var De = Object.defineProperty, Be = Object.getOwnPropertyDescriptor, A = (e, t, i, a) => {
  for (var s = a > 1 ? void 0 : a ? Be(t, i) : t, r = e.length - 1, l; r >= 0; r--)
    (l = e[r]) && (s = (a ? l(t, i, s) : l(s)) || s);
  return a && s && De(t, i, s), s;
};
const ne = {
  noChangeError: "Operation has not made any changes",
  noSelectedError: "Operation requires a selected feature",
  deletesGeometryError: "Operation would result in a null geometry",
  noGeometryError: "The selected feature has not geometry"
};
let v = class extends U {
  //#region Lifecycle
  constructor(e) {
    super(e);
  }
  get mustShowOnCommandPage() {
    return !0;
  }
  get icon() {
  }
  get id() {
    return "";
  }
  /**
   * A label for the command
   */
  label(e, t) {
    return "";
  }
  /**
   * A description for the command
   */
  description(e, t) {
    return "";
  }
  get commandEnabled() {
    return !1;
  }
  commandDisabledReason(e, t) {
    return "";
  }
  get immediate() {
    return !1;
  }
  /**
   * Initiate the paste command
   */
  async initiate(e, t) {
  }
  /**
   * Execute the command silently. Performs the logic of the paste command
   */
  async execute() {
    throw new Error("arcgis-paste: Paste command does not support execute");
  }
  /**
   * The logic for the paste, paste-as and paste-merge command
   */
  async runPasteCommand(e, t, i) {
    try {
      this.viewModel.applying = !0;
      const a = await this.prepareCopy(t);
      if (!a || a.items.length === 0) {
        this.viewModel.lastPasteError = {
          errorCode: "noPasteItems",
          errorMessage: "No items to paste",
          localizedErrorMessage: "noPasteItemsError"
        }, e.onPasteError(this.viewModel.lastPasteError);
        return;
      }
      const s = (
        // If too many features, dont run anything
        a.items.length > this.viewModel.maximumFeatureCount || // If going to show feature form, then do not do all the analysis!
        this.viewModel.alwaysShowFeatureForm || i?.showFeatureForm === !0 || // Otherwise, need to see what is mandatory or not.
        !await se(
          a,
          this.viewModel.view,
          this.viewModel.formViewModelMap,
          this.viewModel.maximumFeatureCountWithComplexForms
        )
      );
      if (this.viewModel.alwaysShowFeatureForm || s || i?.showFeatureForm === !0)
        this.viewModel.bauActiveFeatureIndex = 0, this.viewModel.bauApplySet = a, this.viewModel.activeCommand = t, this.viewModel.bauOriginalGraphics = a.items.map((r) => r.type === "add" ? { layer: r.layer, graphic: r.graphic } : null).filter((r) => r !== null), this.viewModel.bauFeatures = new j(), this.viewModel.activeFlowPage = "form-page", await new Promise((r) => {
          setTimeout(r, 100);
        }), this.viewModel.bauFeatures = new j(
          this.viewModel.bauOriginalGraphics.map((r) => {
            if (xe(r.layer)) {
              const l = r.layer.findSublayerForFeature(r.graphic);
              if (l)
                return r.graphic.layer = l, r.graphic;
            }
            return r.graphic.layer = r.layer, r.graphic;
          })
        ), this.viewModel.updateIndividualMultiFeatureFormHighlight();
      else
        try {
          const r = await e.onApply({
            command: "paste",
            applySet: a
          });
          if (r.success) {
            this.viewModel.resetHome(), this.viewModel.closeOnApply && e.closeAfterApply();
            return;
          }
          this.viewModel.handleApplyError(r, e.onPasteError);
        } catch (r) {
          this.viewModel.lastPasteError = {
            errorCode: "unexpectedError",
            errorMessage: r.message,
            localizedErrorMessage: "unexpectedError"
          }, e.onPasteError(this.viewModel.lastPasteError);
          return;
        } finally {
          a?.featureState?.clearAll();
        }
    } finally {
      this.viewModel.applying = !1;
    }
  }
  /**
   * Builds an ApplySet for the Paste, Paste-as and Paste-merge command
   */
  async prepareCopy(e) {
    const t = e === "paste" || e === "paste-as" && this.viewModel.pasteWithAttributes || e === "paste-merge" && this.viewModel.pasteWithAttributes, i = t && e === "paste-merge" ? this.viewModel.clipboard.items.getItemAt(this.viewModel.selectedClipboardItemIndex) : null, a = q();
    if (a.featureState = K(this.viewModel.view), e === "paste-merge") {
      const s = this.viewModel.pasteTemplate?.template ? await J(this.viewModel.view, this.viewModel.pasteTemplate.template) : null;
      if (!s)
        return null;
      const r = Q(this.viewModel.pasteTemplate.template) ? s.layer : this.viewModel.pasteTemplate.layer, l = await this.createMergedClipboardGeom(), h = await this.constructFeatureAttributesCopy(s, r, i), p = new B({
        geometry: l,
        attributes: h
      });
      this.removeGraphicIdentifierFields(p, r), a.push(R({ graphic: p, layer: r }));
    } else if (e === "paste")
      for (const s of this.viewModel.clipboardFeatures) {
        const r = s.graphic.clone();
        this.removeGraphicIdentifierFields(r, s.layer), a.push(R({ graphic: r, layer: s.layer }));
      }
    else if (e === "paste-as") {
      const s = this.viewModel.pasteTemplate?.template ? await J(this.viewModel.view, this.viewModel.pasteTemplate.template) : null;
      if (!s)
        return null;
      const r = Q(s) ? s.layer : this.viewModel.pasteTemplate.layer;
      for (const l of this.viewModel.clipboardFeatures) {
        const h = await this.constructFeatureAttributesCopy(
          s,
          r,
          t ? l : null
        ), p = new B({
          geometry: l.graphic?.geometry?.clone() ?? null,
          attributes: h
        });
        this.removeGraphicIdentifierFields(p, r), a.push(R({ graphic: p, layer: r }));
      }
    }
    return a;
  }
  async constructFeatureAttributesCopy(e, t, i) {
    let a = Me(e, {});
    if (i) {
      const s = i.layer?.fields;
      if (s) {
        const r = t.fields, l = i.graphic.attributes ?? {}, h = await Ee(t, a);
        a = Ie(
          s,
          r,
          l,
          a,
          h,
          t
        );
      }
    }
    return a;
  }
  async createMergedClipboardGeom() {
    const e = this.viewModel.clipboardFeatures.map((i) => i.graphic?.geometry).filter((i) => i != null).toArray();
    return e.length === 0 ? null : e.length === 1 ? e[0].clone() : (await import("@arcgis/core/geometry/operators/unionOperator.js")).executeMany(e) ?? null;
  }
  removeGraphicIdentifierFields(e, t) {
    t.objectIdField && delete e.attributes[t.objectIdField], t.globalIdField && delete e.attributes[t.globalIdField];
  }
};
A([
  o()
], v.prototype, "viewModel", 2);
A([
  o()
], v.prototype, "mustShowOnCommandPage", 1);
A([
  o()
], v.prototype, "icon", 1);
A([
  o()
], v.prototype, "id", 1);
A([
  o()
], v.prototype, "commandEnabled", 1);
A([
  o()
], v.prototype, "commandDisabledReason", 1);
A([
  o()
], v.prototype, "immediate", 1);
v = A([
  C("components.paste.commands.PasteCommand")
], v);
var je = Object.defineProperty, We = Object.getOwnPropertyDescriptor, G = (e, t, i, a) => {
  for (var s = a > 1 ? void 0 : a ? We(t, i) : t, r = e.length - 1, l; r >= 0; r--)
    (l = e[r]) && (s = (a ? l(t, i, s) : l(s)) || s);
  return a && s && je(t, i, s), s;
};
let F = class extends v {
  get id() {
    return "paste-append";
  }
  get icon() {
    return "reshape-add-geometry";
  }
  get immediate() {
    return !0;
  }
  get mustShowOnCommandPage() {
    return !0;
  }
  get commandEnabled() {
    return this.viewModel.clipboardFeatures.length > 0 && this.viewModel.selectedFeature !== void 0 && this.viewModel.layerPermissionsCheck.canUpdate(
      E(this.viewModel.selectedFeature)
    ) && this.viewModel.selectedFeature?.geometry !== null && // Need a geometry to append to
    (this.viewModel.selectedFeature?.geometry?.type === "multipoint" || this.viewModel.selectedFeature?.geometry?.type === "polyline" || this.viewModel.selectedFeature?.geometry?.type === "polygon") && // Cannot append to a point
    this.viewModel.clipboard.singleGeometryType === this.viewModel.selectedFeature?.geometry?.type;
  }
  /*
   * Initiate the paste command
   */
  async initiate(e) {
    let t = null;
    try {
      this.viewModel.applying = !0;
      const i = await this.prepareAppend();
      if (i.applySet && (t = i.applySet), !i.success) {
        this.viewModel.lastPasteError = {
          errorCode: i.failReason,
          errorMessage: ne[i.failReason],
          localizedErrorMessage: i.failReason
        }, e.onPasteError(this.viewModel.lastPasteError);
        return;
      }
      const a = await e.onApply({
        command: "paste-append",
        applySet: i.applySet
      });
      if (a.success) {
        this.viewModel.resetHome(), this.viewModel.closeOnApply && e.closeAfterApply();
        return;
      }
      this.viewModel.handleApplyError(a, e.onPasteError);
    } catch (i) {
      this.viewModel.lastPasteError = {
        errorCode: "unexpectedError",
        errorMessage: i.message,
        localizedErrorMessage: "unexpectedError"
      }, e.onPasteError(this.viewModel.lastPasteError);
      return;
    } finally {
      this.viewModel.applying = !1, t && (t.featureState?.clearAll(), t.featureState = null);
    }
  }
  /*
   * Execute the command silently. Performs the logic of the paste command
   */
  async execute() {
    const e = await this.prepareAppend();
    if (!e.success)
      throw new Error(`arcgis-paste: Paste append failed. ${e.failReason}`);
    return { success: !0, userInputRequired: !1, applySet: e.applySet };
  }
  /*
   * Builds an ApplySet for the Append command
   */
  async prepareAppend() {
    const e = q();
    if (e.featureState = K(this.viewModel.view), !this.viewModel.selectedFeature)
      return { success: !1, failReason: "noSelectedError" };
    const [t, i] = await Promise.all([
      import("@arcgis/core/geometry/operators/unionOperator.js"),
      import("@arcgis/core/geometry/operators/equalsOperator.js")
    ]);
    let a = this.viewModel.selectedFeature.geometry, s = !1;
    for (const l of this.viewModel.clipboardFeatures) {
      const h = l?.graphic?.geometry ?? null;
      if (!h)
        continue;
      if (a === null) {
        a = l?.graphic?.geometry ?? null, a && (a = a.clone(), s = !0);
        continue;
      }
      const p = t.execute(a, h);
      i.execute(a, p) || (a = p, s = !0);
    }
    if (!s)
      return { success: !1, failReason: "noChangeError" };
    const r = this.viewModel.selectedFeature.clone();
    return r.geometry = a, e.push(
      W({
        graphic: r,
        layer: E(this.viewModel.selectedFeature),
        originalGraphic: this.viewModel.selectedFeature
      })
    ), { success: !0, applySet: e };
  }
  /*
   * A description for the command
   */
  description(e, t) {
    return e.pasteAppendDesc;
  }
  /*
   * A label for the command
   */
  label(e, t) {
    return e.pasteAppendTitle;
  }
};
G([
  o()
], F.prototype, "id", 1);
G([
  o()
], F.prototype, "icon", 1);
G([
  o()
], F.prototype, "immediate", 1);
G([
  o()
], F.prototype, "mustShowOnCommandPage", 1);
G([
  o()
], F.prototype, "commandEnabled", 1);
F = G([
  C("components.paste.commands.PasteAppendCommand")
], F);
var Re = Object.defineProperty, Ne = Object.getOwnPropertyDescriptor, O = (e, t, i, a) => {
  for (var s = a > 1 ? void 0 : a ? Ne(t, i) : t, r = e.length - 1, l; r >= 0; r--)
    (l = e[r]) && (s = (a ? l(t, i, s) : l(s)) || s);
  return a && s && Re(t, i, s), s;
};
let _ = class extends v {
  get id() {
    return "paste-subtract";
  }
  get icon() {
    return "reshape-subtract-geometry";
  }
  get immediate() {
    return !0;
  }
  get mustShowOnCommandPage() {
    return !0;
  }
  get commandEnabled() {
    return this.viewModel.clipboardFeatures.length > 0 && this.viewModel.selectedFeature !== void 0 && this.viewModel.layerPermissionsCheck.canUpdate(
      E(this.viewModel.selectedFeature)
    ) && this.viewModel.selectedFeature?.geometry !== null && // Need a geometry to append to
    (this.viewModel.selectedFeature?.geometry?.type === "multipoint" || this.viewModel.selectedFeature?.geometry?.type === "polyline" || this.viewModel.selectedFeature?.geometry?.type === "polygon") && // Cannot append to a point
    (this.viewModel.clipboard.singleGeometryType === this.viewModel.selectedFeature?.geometry?.type || this.viewModel.clipboard.singleGeometryType === "polygon");
  }
  /*
   * Builds an ApplySet for the Subtract command
   */
  async prepareSubtract() {
    const e = q();
    if (e.featureState = K(this.viewModel.view), !this.viewModel.selectedFeature)
      return { success: !1, failReason: "noSelectedError", applySet: e };
    const [t, i] = await Promise.all([
      import("@arcgis/core/geometry/operators/differenceOperator.js"),
      import("@arcgis/core/geometry/operators/equalsOperator.js")
    ]);
    let a = this.viewModel.selectedFeature.geometry;
    if (!a)
      return { success: !1, failReason: "noGeometryError", applySet: e };
    let s = !1;
    for (const l of this.viewModel.clipboardFeatures) {
      const h = l?.graphic?.geometry;
      if (!h)
        continue;
      const p = t.execute(a, h);
      if (!p)
        return { success: !1, failReason: "deletesGeometryError", applySet: e };
      i.execute(a, p) || (a = p, s = !0);
    }
    if (!s)
      return { success: !1, failReason: "noChangeError", applySet: e };
    const r = this.viewModel.selectedFeature.clone();
    return r.geometry = a, e.push(
      W({
        graphic: r,
        layer: E(this.viewModel.selectedFeature),
        originalGraphic: this.viewModel.selectedFeature
      })
    ), { success: !0, applySet: e };
  }
  /*
   * Execute the command silently. Performs the logic of the paste command
   */
  async execute() {
    const e = await this.prepareSubtract();
    if (!e.success)
      throw new Error(`arcgis-paste: Paste subtract failed. ${e.failReason}`);
    return { success: !0, userInputRequired: !1, applySet: e.applySet };
  }
  /*
   * Initiate the paste command
   */
  async initiate(e) {
    let t = null;
    try {
      this.viewModel.applying = !0;
      const i = await this.prepareSubtract();
      if (i.applySet && (t = i.applySet), !i.success) {
        this.viewModel.lastPasteError = {
          errorCode: i.failReason,
          errorMessage: ne[i.failReason],
          localizedErrorMessage: i.failReason
        }, e.onPasteError(this.viewModel.lastPasteError);
        return;
      }
      const a = await e.onApply({
        command: "paste-subtract",
        applySet: i.applySet
      });
      if (a.success) {
        this.viewModel.resetHome(), this.viewModel.closeOnApply && e.closeAfterApply();
        return;
      }
      this.viewModel.handleApplyError(a, e.onPasteError);
    } catch (i) {
      this.viewModel.lastPasteError = {
        errorCode: "unexpectedError",
        errorMessage: i.message,
        localizedErrorMessage: "unexpectedError"
      }, e.onPasteError(this.viewModel.lastPasteError);
      return;
    } finally {
      this.viewModel.applying = !1, t && (t.featureState?.clearAll(), t.featureState = null);
    }
  }
  /*
   * A description for the command
   */
  description(e, t) {
    return e.pasteSubtractDesc;
  }
  /*
   * A label for the command
   */
  label(e, t) {
    return e.pasteSubtractTitle;
  }
};
O([
  o()
], _.prototype, "id", 1);
O([
  o()
], _.prototype, "icon", 1);
O([
  o()
], _.prototype, "immediate", 1);
O([
  o()
], _.prototype, "mustShowOnCommandPage", 1);
O([
  o()
], _.prototype, "commandEnabled", 1);
_ = O([
  C("components.paste.commands.PasteSubtractCommand")
], _);
var Ue = Object.defineProperty, qe = Object.getOwnPropertyDescriptor, k = (e, t, i, a) => {
  for (var s = a > 1 ? void 0 : a ? qe(t, i) : t, r = e.length - 1, l; r >= 0; r--)
    (l = e[r]) && (s = (a ? l(t, i, s) : l(s)) || s);
  return a && s && Ue(t, i, s), s;
};
let x = class extends v {
  get id() {
    return "paste-as";
  }
  get icon() {
    return "templates";
  }
  get immediate() {
    return !1;
  }
  get mustShowOnCommandPage() {
    return !1;
  }
  get commandEnabled() {
    return (this.viewModel.clipboardFeatures.length === 1 || this.viewModel.clipboardFeatures.length > 0 && this.viewModel.pasteWithMultipleFeaturesEnabled) && this.viewModel.clipboard.singleGeometryType !== void 0;
  }
  /*
   * Initiate the paste command
   */
  async initiate(e) {
    this.viewModel.activeFlowPage = "gallery-page", this.viewModel.activeCommand = "paste-as";
  }
  /*
   * A description for the command
   */
  description(e, t) {
    return e.pasteAsDesc;
  }
  /*
   * A label for the command
   */
  label(e, t) {
    return e.pasteAsTitle;
  }
};
k([
  o()
], x.prototype, "id", 1);
k([
  o()
], x.prototype, "icon", 1);
k([
  o()
], x.prototype, "immediate", 1);
k([
  o()
], x.prototype, "mustShowOnCommandPage", 1);
k([
  o()
], x.prototype, "commandEnabled", 1);
x = k([
  C("components.paste.commands.PasteAsCommand")
], x);
var Ke = Object.defineProperty, Xe = Object.getOwnPropertyDescriptor, H = (e, t, i, a) => {
  for (var s = a > 1 ? void 0 : a ? Xe(t, i) : t, r = e.length - 1, l; r >= 0; r--)
    (l = e[r]) && (s = (a ? l(t, i, s) : l(s)) || s);
  return a && s && Ke(t, i, s), s;
};
let P = class extends v {
  get id() {
    return "paste";
  }
  get icon() {
    return "duplicate";
  }
  get immediate() {
    return !0;
  }
  get mustShowOnCommandPage() {
    return !0;
  }
  get commandEnabled() {
    const e = this.viewModel.clipboardFeatures.length === 1, t = this.viewModel.clipboardFeatures.length > 0 && this.viewModel.clipboardItemLayers.length === 1 && this.viewModel.pasteWithMultipleFeaturesEnabled, i = this.viewModel.clipboardFeatures.length > 0 && this.viewModel.pasteWithMultipleFeaturesEnabled && this.viewModel.pasteWithMultipleLayersEnabled;
    return this.viewModel.clipboardFeatures.length > 0 && this.viewModel.canCreateOnAllLayers && (e || t || i);
  }
  /*
   * Initiate the paste command
   */
  async initiate(e, t) {
    await this.runPasteCommand(e, "paste", t);
  }
  async execute() {
    const e = await this.prepareCopy("paste");
    if (!e || e.items.length === 0)
      throw new Error("arcgis-paste: No items to paste");
    return e.items.length > this.viewModel.maximumFeatureCount || !await se(
      e,
      this.viewModel.view,
      this.viewModel.formViewModelMap,
      this.viewModel.maximumFeatureCountWithComplexForms
    ) ? { success: !1, userInputRequired: !0 } : { success: !0, userInputRequired: !1, applySet: e };
  }
  /*
   * A description for the command
   */
  description(e, t) {
    return e.pasteDesc;
  }
  /*
   * A label for the command
   */
  label(e, t) {
    return e.pasteTitle;
  }
};
H([
  o()
], P.prototype, "id", 1);
H([
  o()
], P.prototype, "icon", 1);
H([
  o()
], P.prototype, "immediate", 1);
H([
  o()
], P.prototype, "mustShowOnCommandPage", 1);
H([
  o()
], P.prototype, "commandEnabled", 1);
P = H([
  C("components.paste.commands.PasteSetCommand")
], P);
var Ze = Object.defineProperty, Je = Object.getOwnPropertyDescriptor, L = (e, t, i, a) => {
  for (var s = a > 1 ? void 0 : a ? Je(t, i) : t, r = e.length - 1, l; r >= 0; r--)
    (l = e[r]) && (s = (a ? l(t, i, s) : l(s)) || s);
  return a && s && Ze(t, i, s), s;
};
let $ = class extends v {
  get id() {
    return "paste-merge";
  }
  get icon() {
    return "merge";
  }
  get immediate() {
    return !1;
  }
  get mustShowOnCommandPage() {
    return !0;
  }
  get commandEnabled() {
    return this.viewModel.clipboardFeatures.length > 1 && this.viewModel.clipboard.singleGeometryType !== void 0;
  }
  /*
   * Initiate the paste command
   */
  async initiate(e) {
    this.viewModel.activeFlowPage = "gallery-page", this.viewModel.activeCommand = "paste-merge";
    for (let t = 0; t < this.viewModel.clipboard.items.length; t++)
      if (this.viewModel.clipboard.items.getItemAt(t).type === "feature") {
        this.viewModel.selectedClipboardItemIndex = t;
        break;
      }
  }
  /*
   * A description for the command
   */
  description(e, t) {
    return e.pasteMergeDesc;
  }
  /*
   * A label for the command
   */
  label(e, t) {
    return e.pasteMergeTitle;
  }
};
L([
  o()
], $.prototype, "id", 1);
L([
  o()
], $.prototype, "icon", 1);
L([
  o()
], $.prototype, "immediate", 1);
L([
  o()
], $.prototype, "mustShowOnCommandPage", 1);
L([
  o()
], $.prototype, "commandEnabled", 1);
$ = L([
  C("components.paste.commands.PasteMergeCommand")
], $);
var Qe = Object.defineProperty, Ye = Object.getOwnPropertyDescriptor, I = (e, t, i, a) => {
  for (var s = a > 1 ? void 0 : a ? Ye(t, i) : t, r = e.length - 1, l; r >= 0; r--)
    (l = e[r]) && (s = (a ? l(t, i, s) : l(s)) || s);
  return a && s && Qe(t, i, s), s;
};
let y = class extends v {
  //#region Lifecycle
  constructor(e) {
    super(e);
  }
  get id() {
    return this.customCommand.id;
  }
  get icon() {
    return this.customCommand.icon;
  }
  get immediate() {
    return !0;
  }
  get mustShowOnCommandPage() {
    return !0;
  }
  get commandEnabled() {
    return this.customCommand.commandEnabled(this.viewModel.clipboard, this.viewModel.selectedFeature);
  }
  /*
   * Initiate the paste command
   */
  async initiate(e) {
    try {
      this.viewModel.applying = !0;
      const t = await e.onApply({
        command: this.id
      });
      if (t.success) {
        this.viewModel.resetHome(), this.viewModel.closeOnApply && e.closeAfterApply();
        return;
      }
      this.viewModel.handleApplyError(t, e.onPasteError);
    } catch (t) {
      this.viewModel.lastPasteError = {
        errorCode: "unexpectedError",
        errorMessage: t.message,
        localizedErrorMessage: "unexpectedError"
      }, e.onPasteError(this.viewModel.lastPasteError);
      return;
    } finally {
      this.viewModel.applying = !1;
    }
  }
  /*
   * A description for the command
   */
  description(e, t) {
    return this.customCommand.description(e, t);
  }
  /*
   * A label for the command
   */
  label(e, t) {
    return this.customCommand.label(e, t);
  }
};
I([
  o()
], y.prototype, "customCommand", 2);
I([
  o()
], y.prototype, "id", 1);
I([
  o()
], y.prototype, "icon", 1);
I([
  o()
], y.prototype, "immediate", 1);
I([
  o()
], y.prototype, "mustShowOnCommandPage", 1);
I([
  o()
], y.prototype, "commandEnabled", 1);
y = I([
  C("components.paste.commands.PasteCustomCommand")
], y);
var et = Object.defineProperty, tt = Object.getOwnPropertyDescriptor, c = (e, t, i, a) => {
  for (var s = a > 1 ? void 0 : a ? tt(t, i) : t, r = e.length - 1, l; r >= 0; r--)
    (l = e[r]) && (s = (a ? l(t, i, s) : l(s)) || s);
  return a && s && et(t, i, s), s;
};
function te(e) {
  return !ie(e) || e.type === "feature";
}
let n = class extends U {
  //#region Lifecycle
  constructor(e) {
    super(e), this.customPasteCommands = new j(), this.bauInvalidFeatures = [], this.bauFormValid = !0, this.bauFormUpdating = !1, this.bauActiveFeatureIndex = -1, this.bauHasTooManyFeatures = !1, this.bauHasTooManyComplexFeatures = !1, this.bauOriginalGraphics = [], this.formViewModelMap = /* @__PURE__ */ new Map(), this.supportedCommands = ["paste-append", "paste-as", "paste-subtract", "paste", "paste-merge"], this.pasteWithMultipleLayersEnabled = !1, this.pasteWithMultipleFeaturesEnabled = !1, this.alwaysShowFeatureForm = !1, this.selectedClipboardItemIndex = -1, this.pasteWithAttributes = !0, this.closeOnApply = !1, this.currentPasteOperation = "", this.disableTemplatesMode = "never", this._activeFlowPage = "commands-page", this.showClipboardItems = !1, this.hideTooltips = !1, this.hideFooter = !1, this.hideFooterCancelButton = !1, this.hideHeaderCloseButton = !1, this.hideViewClipboard = !1, this.hideErrorNotice = !1, this.highlightGroup = "temporary", this._hoverHighlightHandle = null, this.maximumFeatureCount = 200, this.maximumFeatureCountWithComplexForms = 50, this.layerPermissionsCheck = {
      canCreate: (t) => t ? !!t.effectiveCapabilities?.operations.supportsAdd : !1,
      canUpdate: (t) => {
        if (!t)
          return !1;
        const i = t.effectiveCapabilities, a = !!i?.operations.supportsUpdate, s = !!i?.editing.supportsGeometryUpdate && a;
        return !t.isTable && !s ? !1 : a;
      }
    }, this.applying = !1;
  }
  get bauActiveGraphic() {
    return this.bauActiveFeatureIndex === -1 ? void 0 : this.bauFeatures?.getItemAt(this.bauActiveFeatureIndex);
  }
  get hasTooManyPasteCreateFeatures() {
    return this.clipboardFeatures.length > this.maximumFeatureCount && ["paste", "paste-as"].includes(this.activeCommand ?? "");
  }
  get bauActiveLayer() {
    if (this.bauActiveFeatureIndex !== -1 && this.bauFeatures)
      return E(this.bauFeatures.getItemAt(this.bauActiveFeatureIndex)) ?? void 0;
  }
  get pasteTemplateIsValid() {
    return this.pasteTemplate ? this.pasteTemplate.layer ? !!this.workingLayers.includes(
      this.pasteTemplate.layer.type === "subtype-sublayer" ? this.pasteTemplate.layer.parent : this.pasteTemplate.layer
    ) : !1 : !0;
  }
  get clipboardAndTemplateSupportAttributes() {
    if (this.clipboardFeatures.length === 0 || !this.pasteTemplate?.layer)
      return !1;
    const e = this.pasteTemplate.template;
    if (!te(e))
      return !1;
    for (const t of this.clipboardFeatures) {
      const i = t.layer;
      if (!i)
        return !1;
      const a = i.type === "subtype-sublayer" ? i.parent : i;
      if (a.type === "subtype-group") {
        const s = a.fieldsIndex.get(a.subtypeField).name, r = e.prototype?.[s];
        if (r == null || r !== t.graphic.attributes[s])
          return !1;
      }
    }
    return !0;
  }
  get hasClipboardItemMatchingTemplate() {
    const e = this.pasteTemplate?.layer;
    if (!e || this.clipboardFeatures.length === 0)
      return !1;
    const t = this.pasteTemplate.template;
    if (!te(t))
      return !1;
    for (const i of this.clipboardFeatures) {
      const a = i.layer;
      if (!a)
        return !1;
      const s = a.type === "subtype-sublayer" ? a.parent : a;
      if (e === a) {
        if (s.type === "subtype-group") {
          const r = s.fieldsIndex.get(s.subtypeField).name, l = t.prototype?.[r];
          if (l == null || l !== i.graphic.attributes[r])
            continue;
        }
        return !0;
      }
    }
    return !1;
  }
  get activeFlowPage() {
    return this._activeFlowPage;
  }
  // When setting the active flow page
  // need to remember the before Page (when using clipboard or paste-form flow items)
  set activeFlowPage(e) {
    e === "clipboard" && this.beforeClipboard === void 0 ? this.beforeClipboard = this.activeFlowPage : e !== "clipboard" && (this.beforeClipboard = void 0), e === "form-page" && this.beforeForm === void 0 ? this.beforeForm = this.activeFlowPage : e !== "form-page" && (this.beforeForm = void 0), this._activeFlowPage = e, this.checkAndSuspendMove();
  }
  get updating() {
    return this.applying;
  }
  // Update ApplySet after user changes feature on the BAU form.
  formFeatureValuesChanged(e, t) {
    if (!t)
      return;
    const i = e.graphic.clone();
    for (const s of Object.keys(t))
      i.attributes[s] = t[s];
    const a = W({
      graphic: i,
      originalGraphic: e.graphic.clone(),
      layer: e.layer
    });
    this.bauApplySet?.push(a);
  }
  // Highlight the selected clipboard item on the map
  highlightSelectedGraphicOnMap(e) {
    if (this.clearHighlightSelectedGraphic(), !e.graphic?.geometry || !this.view)
      return;
    const t = new B({
      geometry: e.graphic.geometry,
      symbol: be(e.graphic.geometry.type)
    });
    this.view.graphics.add(t), this._hoverHighlightHandle = {
      remove: () => {
        this.view.graphics.remove(t);
      }
    };
  }
  // Clear the highlights from the highlighted clipboard items
  clearHighlightSelectedGraphic() {
    this._hoverHighlightHandle?.remove(), this._hoverHighlightHandle = null;
  }
  updateIndividualMultiFeatureFormHighlight() {
    if (this.activeFlowPage !== "form-page") {
      this.clearIndividualFeatureFormHighlight();
      return;
    }
    if (this.view)
      if (this.bauActiveGraphic && this.bauActiveLayer) {
        if (this.bauIndividualHighlight?.graphic !== this.bauActiveGraphic && this.clearIndividualFeatureFormHighlight(), !this.bauIndividualHighlight) {
          const e = ee(this.view, this.bauActiveLayer);
          if (!e)
            return;
          this.bauIndividualHighlight = {
            graphic: this.bauActiveGraphic,
            handle: e.highlight(this.bauActiveGraphic, { name: this.highlightGroup })
          };
        }
      } else
        this.clearIndividualFeatureFormHighlight();
  }
  // Clear the multi feature form highlights
  clearIndividualFeatureFormHighlight() {
    this.bauIndividualHighlight?.handle?.remove(), this.bauIndividualHighlight = void 0;
  }
  // When using the Multi Feature Form, it is helpful to see the graphic
  // highlighted on the map
  highlightMultiFeatureFormFeature(e, t) {
    this.bauHighlight && this.clearMultiFeatureFormHighlights();
    const i = this.view ? ee(this.view, e.layer) : void 0;
    i && (this.bauHighlight = i.highlight(e, { name: this.highlightGroup }));
  }
  // Clear the multi feature form highlights
  clearMultiFeatureFormHighlights() {
    this.bauHighlight?.remove(), this.bauHighlight = void 0;
  }
  // When the clipboard contents change and/or
  // the show clipboard graphics is set to true or false
  // Need to renew the generated graphics on the map
  updateClipboardGraphicsLayer() {
    if (!this.showClipboardItems) {
      if (this.clipboardMover?.cancel(), this.clipboardMover = void 0, this.clipboardGraphicsLayer && this.view)
        try {
          this.view.map?.remove(this.clipboardGraphicsLayer), this.clipboardGraphicsLayer = void 0;
        } catch {
        }
      return;
    }
    if (this.showClipboardItems && this.view) {
      this.clipboardGraphicsLayer || (this.clipboardGraphicsLayer = new we({
        listMode: "hide"
      }), this.view.map?.layers.add(this.clipboardGraphicsLayer));
      const e = this.clipboard.items;
      this.clipboardGraphicsLayer.removeAll();
      let t = -1;
      for (const i of e) {
        if (t++, i.type !== "feature" || !i.graphic.geometry)
          continue;
        const a = new B({
          geometry: i.graphic.geometry.clone(),
          attributes: {
            clipboardIdx: t
          },
          symbol: ye(i.graphic.geometry.type)
        });
        this.clipboardGraphicsLayer.add(a);
      }
    } else if (!this.showClipboardItems && this.view && this.clipboardGraphicsLayer)
      try {
        this.view.map?.remove(this.clipboardGraphicsLayer), this.clipboardGraphicsLayer = void 0;
      } catch {
      }
    this.checkAndSuspendMove();
  }
  checkAndSuspendMove() {
    const e = this.activeFlowPage === "form-page";
    this.clipboardGraphicsLayer && (this.clipboardGraphicsLayer.visible = !e), this.clipboardMover && (this.clipboardMover.suspended = e);
  }
  get clipboard() {
    return fe();
  }
  get clipboardFeatures() {
    return this.clipboard.items.filter((e) => e.type === "feature");
  }
  get hasPasteCommandsPage() {
    return this.availableCommands.length > 1 || !!this.availableCommands.at(0)?.mustShowOnCommandPage;
  }
  _clearActiveCommand() {
    this.activeCommand = void 0, this.lastPasteError = void 0;
  }
  // Reset to the landing flow item
  // The landing flow item will depend on the configuration
  // of the component and/or the contents of the clipboard
  resetHome() {
    let e = this.activeFlowPage;
    this.hasPasteCommandsPage ? (e = "commands-page", this._clearActiveCommand(), this.selectedClipboardItemIndex = -1) : this.clipboard.items.length === 0 ? (e = "clipboard-empty-page", this._clearActiveCommand(), this.selectedClipboardItemIndex = -1) : this.availableCommands.length === 0 ? (e = "no-command-page", this._clearActiveCommand()) : this.availableCommands[0].commandEnabled ? (e = "gallery-page", this.activeCommand = this.availableCommands[0].id, this.lastPasteError = void 0) : (e = "no-command-page", this._clearActiveCommand(), this.selectedClipboardItemIndex = -1), this.activeFlowPage === "clipboard" && this.hideViewClipboard ? (this.activeFlowPage = e, this.beforeClipboard = void 0) : this.activeFlowPage === "clipboard" && !this.hideViewClipboard ? this.beforeClipboard = e : (this.activeFlowPage = e, this.beforeClipboard = void 0), this.resetFormPage();
  }
  get workingLayers() {
    return (this.view?.map?.allLayers?.toArray() ?? []).filter(
      (e) => e.type === "feature" || e.type === "subtype-group"
    ).filter((e) => {
      let t = this.clipboard.singleGeometryType;
      return this.activeCommand === "paste-merge" && this.clipboard.singleGeometryType === "point" && (t = "multipoint"), !(e.geometryType !== t || !this.layerPermissionsCheck.canCreate(e));
    }).slice(0).reverse();
  }
  get clipboardItemLayers() {
    const e = /* @__PURE__ */ new Set();
    for (const t of this.clipboard.items)
      t.layer && e.add(t.layer.type === "subtype-sublayer" ? t.layer.parent : t.layer);
    return [...e];
  }
  get canCreateOnAllLayers() {
    if (this.clipboardItemLayers.length === 0)
      return !1;
    for (const e of this.clipboardItemLayers)
      if (!e || !this.layerPermissionsCheck.canCreate(e))
        return !1;
    return !0;
  }
  get availableCommands() {
    const e = new Set(this.supportedCommands);
    return this.allCommands.filter((t) => e.has(t.id));
  }
  get allCommands() {
    const e = [];
    e.push(
      ...[P, x, $, F, _].map(
        (t) => new t({ viewModel: this })
      )
    );
    for (const t of this.customPasteCommands)
      e.push(new y({ viewModel: this, customCommand: t }));
    return e;
  }
  get pasteCommandsState() {
    return this.allCommands.map((e) => ({
      id: e.id,
      disabled: !e.commandEnabled,
      available: this.supportedCommands.includes(e.id)
    }));
  }
  //#endregion
  //#region Public Methods
  nextActiveFeature() {
    this.bauActiveFeatureIndex++, this.updateIndividualMultiFeatureFormHighlight();
  }
  previousActiveFeature() {
    this.bauActiveFeatureIndex--, this.updateIndividualMultiFeatureFormHighlight();
  }
  // Ensure the form is removed.
  resetFormPage() {
    this.bauApplySet?.featureState?.clearAll(), this.bauApplySet = void 0, this.clearIndividualFeatureFormHighlight(), this.clearMultiFeatureFormHighlights(), this.bauFeatures = void 0, this.bauOriginalGraphics = [];
  }
  /*
   * Finds a paste command by its id.
   */
  getPasteCommandById(e) {
    return this.allCommands.find((t) => t.id === e);
  }
  /*
   * The logic for the paste subtract command
   */
  async runPasteFormCommand(e) {
    try {
      this.applying = !0;
      const t = this.bauApplySet, i = await e.onApply({
        command: this.activeCommand,
        applySet: t
      });
      if (i.success) {
        this.resetHome(), this.closeOnApply && e.closeAfterApply();
        return;
      }
      this.handleApplyError(i, e.onPasteError);
    } catch (t) {
      this.lastPasteError = {
        errorCode: "unexpectedError",
        errorMessage: t.message,
        localizedErrorMessage: "unexpectedError"
      }, e.onPasteError(this.lastPasteError);
      return;
    } finally {
      this.applying = !1;
    }
  }
  /*
   * Handle a failed apply command.
   */
  handleApplyError(e, t) {
    e.success || e.errorCode !== "cancelled" && (this.lastPasteError = {
      errorCode: e.errorCode ?? "unexpectedError",
      errorMessage: e.errorMessage ?? "",
      localizedErrorMessage: e.errorMessage ? void 0 : "unexpectedError"
    }, t(this.lastPasteError));
  }
  /*
   * Write changes to the feature services
   */
  async writeChanges(e) {
    return await Ce(e, this.view);
  }
  //#endregion
};
c([
  o()
], n.prototype, "customPasteCommands", 2);
c([
  o()
], n.prototype, "bauInvalidFeatures", 2);
c([
  o()
], n.prototype, "bauFormValid", 2);
c([
  o()
], n.prototype, "bauFormUpdating", 2);
c([
  o()
], n.prototype, "bauActiveFeatureIndex", 2);
c([
  o()
], n.prototype, "bauHasTooManyFeatures", 2);
c([
  o()
], n.prototype, "bauHasTooManyComplexFeatures", 2);
c([
  o()
], n.prototype, "bauActiveGraphic", 1);
c([
  o()
], n.prototype, "hasTooManyPasteCreateFeatures", 1);
c([
  o()
], n.prototype, "bauActiveLayer", 1);
c([
  o()
], n.prototype, "bauFeatures", 2);
c([
  o()
], n.prototype, "bauApplySet", 2);
c([
  o()
], n.prototype, "bauOriginalGraphics", 2);
c([
  o()
], n.prototype, "formViewModelMap", 2);
c([
  o()
], n.prototype, "bauHighlight", 2);
c([
  o()
], n.prototype, "bauIndividualHighlight", 2);
c([
  o()
], n.prototype, "view", 2);
c([
  o()
], n.prototype, "supportedCommands", 2);
c([
  o()
], n.prototype, "selectedFeature", 2);
c([
  o()
], n.prototype, "pasteWithMultipleLayersEnabled", 2);
c([
  o()
], n.prototype, "pasteWithMultipleFeaturesEnabled", 2);
c([
  o()
], n.prototype, "alwaysShowFeatureForm", 2);
c([
  o()
], n.prototype, "pasteTemplate", 2);
c([
  o()
], n.prototype, "pasteTemplateIsValid", 1);
c([
  o()
], n.prototype, "selectedClipboardItemIndex", 2);
c([
  o()
], n.prototype, "clipboardAndTemplateSupportAttributes", 1);
c([
  o()
], n.prototype, "hasClipboardItemMatchingTemplate", 1);
c([
  o()
], n.prototype, "pasteWithAttributes", 2);
c([
  o()
], n.prototype, "closeOnApply", 2);
c([
  o()
], n.prototype, "currentPasteOperation", 2);
c([
  o()
], n.prototype, "disableTemplatesMode", 2);
c([
  o()
], n.prototype, "activeFlowPage", 1);
c([
  o()
], n.prototype, "_activeFlowPage", 2);
c([
  o()
], n.prototype, "beforeClipboard", 2);
c([
  o()
], n.prototype, "beforeForm", 2);
c([
  o()
], n.prototype, "showClipboardItems", 2);
c([
  o()
], n.prototype, "updating", 1);
c([
  o()
], n.prototype, "hideTooltips", 2);
c([
  o()
], n.prototype, "hideFooter", 2);
c([
  o()
], n.prototype, "hideFooterCancelButton", 2);
c([
  o()
], n.prototype, "hideHeaderCloseButton", 2);
c([
  o()
], n.prototype, "hideViewClipboard", 2);
c([
  o()
], n.prototype, "hideErrorNotice", 2);
c([
  o()
], n.prototype, "clipboardGraphicsLayer", 2);
c([
  o()
], n.prototype, "clipboardMover", 2);
c([
  o()
], n.prototype, "highlightGroup", 2);
c([
  o()
], n.prototype, "clipboard", 1);
c([
  o()
], n.prototype, "clipboardFeatures", 1);
c([
  o()
], n.prototype, "hasPasteCommandsPage", 1);
c([
  o()
], n.prototype, "activeCommand", 2);
c([
  o()
], n.prototype, "maximumFeatureCount", 2);
c([
  o()
], n.prototype, "maximumFeatureCountWithComplexForms", 2);
c([
  o()
], n.prototype, "workingLayers", 1);
c([
  o()
], n.prototype, "layerPermissionsCheck", 2);
c([
  o()
], n.prototype, "clipboardItemLayers", 1);
c([
  o()
], n.prototype, "canCreateOnAllLayers", 1);
c([
  o()
], n.prototype, "applying", 2);
c([
  o()
], n.prototype, "lastPasteError", 2);
c([
  o()
], n.prototype, "availableCommands", 1);
c([
  o()
], n.prototype, "allCommands", 1);
c([
  o()
], n.prototype, "pasteCommandsState", 1);
n = c([
  C("components.paste.PasteViewModel")
], n);
var it = Object.defineProperty, at = Object.getOwnPropertyDescriptor, S = (e, t, i, a) => {
  for (var s = a > 1 ? void 0 : a ? at(t, i) : t, r = e.length - 1, l; r >= 0; r--)
    (l = e[r]) && (s = (a ? l(t, i, s) : l(s)) || s);
  return a && s && it(t, i, s), s;
};
let M = class extends U {
  constructor() {
    super(...arguments), this.continuous = !1, this._mover = null, this.stateChanged = null, this._suspended = !1;
  }
  clipboardContentsChanged() {
    this._destroyMover(), this.stateChanged?.("clipboard-contents-changed"), this.continuous && this.start();
  }
  start() {
    this._destroyMover(), this._mover = $e({
      view: this.view,
      graphics: this.graphicsLayer.graphics.toArray(),
      indicatorsEnabled: !0,
      highlightsEnabled: !0,
      enableMoveAllGraphics: !0,
      callbacks: {
        onGraphicPointerOver: () => {
          "cursor" in this.view && (this.view.cursor = "move");
        },
        onGraphicPointerOut: () => {
          "cursor" in this.view && (this.view.cursor = "default");
        },
        onGraphicMoveStop: async () => {
          "cursor" in this.view && (this.view.cursor = "default");
          for (const e of this.graphicsLayer.graphics)
            this.clipboard.items.getItemAt(e.attributes.clipboardIdx).graphic.geometry = e.geometry;
          this._destroyMover(), this.stateChanged?.("contents-moved"), this.continuous && setTimeout(() => {
            this.start();
          }, 100);
        }
      }
    });
  }
  cancel() {
    this.continuous = !1, this._destroyMover(), this.stateChanged?.("completed");
  }
  get suspended() {
    return this._suspended;
  }
  set suspended(e) {
    e !== this._suspended && (e ? (this._destroyMover(), this.stateChanged?.("suspended")) : (this.start(), this.stateChanged?.("suspended")), this._suspended = e);
  }
  _destroyMover() {
    this._mover?.destroy(), this._mover = null;
  }
};
S([
  o()
], M.prototype, "view", 2);
S([
  o()
], M.prototype, "continuous", 2);
S([
  o()
], M.prototype, "clipboard", 2);
S([
  o()
], M.prototype, "graphicsLayer", 2);
S([
  o()
], M.prototype, "suspended", 1);
S([
  o()
], M.prototype, "_suspended", 2);
M = S([
  C("components.paste.ClipboardMove")
], M);
const st = ve(n);
class rt extends he {
  constructor() {
    super(), this._featureFormElement = V(), this._floatingChoiceContainer = V(), this._bauForm = V(), this._templateGallery = V(), this._messages = ge(), this.viewModel = st(this), this.hasPasteCommandsPage = this.viewModel.hasPasteCommandsPage, this.activeCommand = this.viewModel.activeCommand, this.availableCommands = this.viewModel.availableCommands, this._showFloatingChoice = !1, this.activeFlowPage = this.viewModel.activeFlowPage, this.autoDestroyDisabled = !1, this.view = this.viewModel.view, this.selectedFeature = this.viewModel.selectedFeature, this.closed = !1, this.highlightGroup = this.viewModel.highlightGroup, this.pasteWithMultipleLayersEnabled = this.viewModel.pasteWithMultipleLayersEnabled, this.pasteWithMultipleFeaturesEnabled = this.viewModel.pasteWithMultipleFeaturesEnabled, this.alwaysShowFeatureForm = this.viewModel.alwaysShowFeatureForm, this.closeOnApply = this.viewModel.closeOnApply, this.hideErrorNotice = this.viewModel.hideErrorNotice, this.hideFooterCancelButton = this.viewModel.hideFooterCancelButton, this.hideFooter = this.viewModel.hideFooter, this.hideHeaderCloseButton = this.viewModel.hideHeaderCloseButton, this.hideTooltips = this.viewModel.hideTooltips, this.hideViewClipboard = this.viewModel.hideViewClipboard, this.maximumFeatureCount = this.viewModel.maximumFeatureCount, this.maximumFeatureCountWithComplexForms = this.viewModel.maximumFeatureCountWithComplexForms, this.layerPermissionsCheck = this.viewModel.layerPermissionsCheck, this.pasteCommandsState = this.viewModel.pasteCommandsState, this.disableTemplatesMode = this.viewModel.disableTemplatesMode, this.arcgisApplyPasteCommand = T(), this.arcgisApplyPasteError = T(), this.arcgisBeforeClipboardMove = T(), this.arcgisClipboardMoveStateChanged = T(), this.arcgisClose = T(), this.arcgisPropertyChange = Pe()("pasteCommandsState", "activeFlowPage"), this.arcgisReady = T(), this.listenOn(window, "click", this._handleClickAway), this.listenOn(window, "keydown", this._handleKeyDown);
  }
  static {
    this.properties = { hasPasteCommandsPage: 16, activeCommand: 16, availableCommands: 16, _showFloatingChoice: 16, activeFlowPage: 32, autoDestroyDisabled: 5, referenceElement: 1, view: 0, selectedFeature: 0, closed: 7, highlightGroup: 1, supportedCommands: 1, pasteWithMultipleLayersEnabled: 5, pasteWithMultipleFeaturesEnabled: 5, alwaysShowFeatureForm: 5, beforeApply: 0, clipboard: 32, closeOnApply: 5, hideErrorNotice: 5, hideFooterCancelButton: 5, hideFooter: 5, hideHeaderCloseButton: 5, hideTooltips: 5, hideViewClipboard: 5, maximumFeatureCount: 9, maximumFeatureCountWithComplexForms: 9, layerPermissionsCheck: 0, pasteCommandsState: 0, disableTemplatesMode: 1 };
  }
  static {
    this.styles = Ae;
  }
  get supportedCommands() {
    return this.viewModel.supportedCommands;
  }
  set supportedCommands(t) {
    if (!Array.isArray(t)) {
      this.viewModel.supportedCommands = t.split(",");
      return;
    }
    this.viewModel.supportedCommands = t.slice(0);
  }
  get clipboard() {
    return this.viewModel.clipboard;
  }
  async cancelMoveClipboard() {
    this.viewModel.clipboardMover?.cancel(), this.viewModel.clipboardMover = void 0;
  }
  async destroy() {
    await this.manager.destroy();
  }
  async executePasteCommand(t, i) {
    const a = this.viewModel.getPasteCommandById(t);
    if (!a)
      throw new Error("arcgis-paste: Paste command not found");
    if (!a.commandEnabled)
      throw new Error("arcgis-paste: Paste command is not enabled");
    if (!i?.silent) {
      if (!this.availableCommands.includes(a))
        throw new Error("arcgis-paste: Paste command is not available");
      return this.viewModel.resetHome(), await this._runPasteCommand(a, i), { userInputRequired: !1, success: !0 };
    }
    return await a.execute();
  }
  async registerPasteCommand(t) {
    this.viewModel.customPasteCommands.add(t);
  }
  async reset() {
    this.viewModel.activeFlowPage === "clipboard" && (this.viewModel.activeFlowPage = this.viewModel.beforeClipboard), this.viewModel.resetHome();
  }
  async showClipboardItems(t) {
    this.viewModel.showClipboardItems = t, this.viewModel.updateClipboardGraphicsLayer();
  }
  async startMoveClipboard(t) {
    if (!this.viewModel.showClipboardItems)
      throw new Error("arcgis-paste: Cannot move clipboard. Clipboard items must be visible first.");
    this.arcgisBeforeClipboardMove.emit().defaultPrevented || (this.viewModel.clipboardMover && (this.viewModel.clipboardMover.stateChanged = null, this.viewModel.clipboardMover.cancel(), this.viewModel.clipboardMover = void 0), this.viewModel.clipboardMover = new M({
      view: this.view,
      continuous: t,
      clipboard: this.clipboard,
      graphicsLayer: this.viewModel.clipboardGraphicsLayer,
      stateChanged: (a) => {
        a === "contents-moved" && this.viewModel.updateClipboardGraphicsLayer(), this.arcgisClipboardMoveStateChanged.emit({ change: a });
      }
    }), this.viewModel.clipboardMover.start());
  }
  async writeChanges(t) {
    return await this.viewModel.writeChanges(t);
  }
  updated() {
    this._featureFormElement.value && (this._featureFormElement.value.hideReadOnlyNotice = !0, this._featureFormElement.value.disabled = !0), this._checkAndUpdateInitialPasteTemplate();
  }
  loaded() {
    this.manager.onLifecycle(() => [
      this.viewModel.clipboard.items.on("change", () => {
        this.viewModel.updateClipboardGraphicsLayer(), this.activeFlowPage === "form-page" && this.viewModel.resetHome();
      }),
      N(() => this.clipboard.version, () => {
        this.viewModel.resetHome(), this.viewModel.updateClipboardGraphicsLayer(), this.viewModel.clipboardMover?.clipboardContentsChanged();
      }),
      N(() => this.closed, () => {
        this.closed && this.viewModel.formViewModelMap.clear(), this.viewModel.updateClipboardGraphicsLayer();
      }),
      N(() => [
        this.viewModel?.supportedCommands.join(","),
        this.pasteWithMultipleFeaturesEnabled,
        this.viewModel?.hideViewClipboard,
        this.pasteWithMultipleLayersEnabled
      ].join(","), () => {
        this.viewModel.resetHome();
      }, { initial: !0 })
    ]);
  }
  _handleCloseAfterApply() {
    this.closed = !0, this.arcgisClose.emit();
  }
  _updateBauViewModelFields(t) {
    this.viewModel.bauActiveFeatureIndex = t.activeFeatureIndex, this.viewModel.bauInvalidFeatures = t.invalidFeatures, this.viewModel.bauFormValid = t.valid, this.viewModel.bauFormUpdating = t.updating, this.viewModel.bauHasTooManyComplexFeatures = t.hasTooManyComplexFeatures, this.viewModel.bauHasTooManyFeatures = t.hasTooManyFeatures;
  }
  _copyAcrossValidMultiFormFieldValues() {
    try {
      if (this._bauForm.value?.status !== "loaded")
        return;
      const t = this._bauForm.value;
      let i = 0;
      for (const a of this.viewModel.bauFeatures?.toArray() ?? []) {
        const s = this.viewModel.bauOriginalGraphics[i];
        this.viewModel.formFeatureValuesChanged(s, t.getValues(a)), i++;
      }
    } catch {
    }
  }
  _handleClickAway(t) {
    if (!this._showFloatingChoice || !this._floatingChoiceContainer.value)
      return;
    t.composedPath().find((s) => s === this._floatingChoiceContainer.value) || (this._showFloatingChoice = !1);
  }
  _handleKeyDown(t) {
    if (!this._showFloatingChoice || !this._floatingChoiceContainer.value)
      return;
    t.composedPath().find((s) => s === this._floatingChoiceContainer.value) || (this._showFloatingChoice = !1);
  }
  async _runPasteCommand(t, i) {
    try {
      this.viewModel.lastPasteError = void 0, await t.initiate({
        closeAfterApply: () => {
          this._handleCloseAfterApply();
        },
        onPasteError: (a) => {
          this.arcgisApplyPasteError.emit({
            command: t.id,
            errorMessage: a.errorMessage,
            errorCode: a.errorCode
          });
        },
        onApply: async (a) => {
          try {
            await this.beforeApply?.();
            const s = { ...a };
            return this.arcgisApplyPasteCommand.emit(s).defaultPrevented ? { success: !1, errorCode: "cancelled" } : s.completionCallback ? await s.completionCallback ?? { success: !0 } : { success: !0 };
          } catch {
            return { success: !1 };
          }
        }
      }, i);
    } catch {
    }
  }
  _checkAndUpdateInitialPasteTemplate() {
    requestAnimationFrame(() => {
      if (!this._templateGallery.value || this.viewModel.activeFlowPage !== "gallery-page")
        return;
      const t = this._templateGallery.value;
      if (this.viewModel.pasteTemplateIsValid || (this.viewModel.pasteTemplate = void 0), this.viewModel.pasteTemplate !== void 0) {
        t.selectedTemplateId !== this.viewModel.pasteTemplate.id && (t.selectedTemplateId = this.viewModel.pasteTemplate.id);
        return;
      }
      if (t.effectiveTemplates?.length === 0)
        return;
      const i = t.effectiveTemplates?.[0].templates[0];
      i && (this.viewModel.pasteTemplate = i, t.selectedTemplateId = i.id);
    });
  }
  _renderFlowCommandStart(t) {
    return t ? d`<slot name=home-header-actions-start slot=header-actions-start></slot>` : null;
  }
  _renderCloseCommand(t) {
    return d`${this.hideHeaderCloseButton ? null : d`<calcite-action slot=header-actions-end icon=x .text=${this._messages.close ?? ""} @click=${() => {
      this.reset(), this.closed = !0, this.arcgisClose.emit();
    }}></calcite-action>`}${t ? d`<slot name=header-actions-end slot=header-actions-end></slot>` : null}`;
  }
  _renderClipboardCommand(t) {
    return d`<calcite-action slot=header-actions-end icon=clipboard .hidden=${this.viewModel.hideViewClipboard} .text=${this._messages.clipboardTooltip ?? ""} .id=${`arcgis-clipboard-show-${t}`} .disabled=${this.viewModel.updating} @click=${() => {
      this.viewModel.activeFlowPage = "clipboard";
    }}>${this.hideTooltips ? null : d`<calcite-tooltip .referenceElement=${`arcgis-clipboard-show-${t}`} placement=bottom><span>${this._messages.clipboardTooltip}</span></calcite-tooltip>`}</calcite-action>`;
  }
  _renderNoClipboardData(t) {
    return w("no-data", d`<calcite-flow-item .selected=${t} .heading=${this._messages.componentLabel} @calciteFlowItemBack=${(i) => {
      i.preventDefault();
    }}>${this._renderClipboardCommand("no-data")}${this._renderCloseCommand(t)}<calcite-panel><div class="pad-contents"><div class="flex flex-row justify-center"><svg xmlns=http://www.w3.org/2000/svg height=92 width=92 style=${Z({ strokeWidth: "0.1px", fill: "var(--calcite-color-text-2)" })} viewBox="0 0 64 64">${X`<path d="M21 18h-1v-3h1zm24-3h-1v3h1zm0 5h-1v3h1zm-24 0h-1v3h1zm9.84 13.71l.3.954 3.02-.954-.3-.953zm-6.04 1.908l.3.953 3.02-.953-.3-.953zm-3.8 1.2V35h-1v3.182l2.08-.657-.3-.953zM21 30h-1v3h1zm0-5h-1v3h1zm27.816 5.896l-4.746.015 2.294 4.575-3.071 1.535-2.358-4.668-2.835 3.886V23.036zm-6.04-.78l3.607-.012-7.483-5.49v9.17l2.16-2.96 2.587 5.126 1.643-.821zM60.9 10.874v41.25a1.777 1.777 0 0 1-1.775 1.775H4.875A1.777 1.777 0 0 1 3.1 52.125v-41.25A1.777 1.777 0 0 1 4.875 9.1h54.25a1.777 1.777 0 0 1 1.775 1.775zm-.8 24.54l-24.2 7.641V53.1h23.225a.976.976 0 0 0 .975-.975zm0-24.54a.976.976 0 0 0-.975-.975H45V13h-1V9.9H21V13h-1V9.9H4.875a.976.976 0 0 0-.975.975V32.1H18v.8H3.9v19.225a.976.976 0 0 0 .975.975H35.1V35.51l.8-.252v6.96l24.2-7.643z" />`}</svg></div><p class="text-center">${this._messages.noClipboardData}</p></div></calcite-panel></calcite-flow-item>`);
  }
  _renderNoCommandPage(t) {
    let i = this._messages.noPasteCommandsAvailable;
    const a = this.availableCommands.at(0);
    return a?.commandDisabledReason && (i = a.commandDisabledReason(this._messages, this._messages._lang), i || (i = this._messages.noPasteCommandsAvailable)), w("no-command", d`<calcite-flow-item .selected=${t} .heading=${this._messages.componentLabel} @calciteFlowItemBack=${(s) => {
      s.preventDefault();
    }}>${this._renderClipboardCommand("no-command")}${this._renderCloseCommand(t)}<calcite-panel><div class="pad-contents"><div class="flex flex-row justify-center"><svg xmlns=http://www.w3.org/2000/svg height=92 width=92 style=${Z({ strokeWidth: "0.1px", fill: "var(--calcite-color-text-2)" })} viewBox="0 0 64 64">${X`<path d="M21 18h-1v-3h1zm24-3h-1v3h1zm0 5h-1v3h1zm-24 0h-1v3h1zm9.84 13.71l.3.954 3.02-.954-.3-.953zm-6.04 1.908l.3.953 3.02-.953-.3-.953zm-3.8 1.2V35h-1v3.182l2.08-.657-.3-.953zM21 30h-1v3h1zm0-5h-1v3h1zm27.816 5.896l-4.746.015 2.294 4.575-3.071 1.535-2.358-4.668-2.835 3.886V23.036zm-6.04-.78l3.607-.012-7.483-5.49v9.17l2.16-2.96 2.587 5.126 1.643-.821zM60.9 10.874v41.25a1.777 1.777 0 0 1-1.775 1.775H4.875A1.777 1.777 0 0 1 3.1 52.125v-41.25A1.777 1.777 0 0 1 4.875 9.1h54.25a1.777 1.777 0 0 1 1.775 1.775zm-.8 24.54l-24.2 7.641V53.1h23.225a.976.976 0 0 0 .975-.975zm0-24.54a.976.976 0 0 0-.975-.975H45V13h-1V9.9H21V13h-1V9.9H4.875a.976.976 0 0 0-.975.975V32.1H18v.8H3.9v19.225a.976.976 0 0 0 .975.975H35.1V35.51l.8-.252v6.96l24.2-7.643z" />`}</svg></div><p class="text-center">${i}</p></div></calcite-panel></calcite-flow-item>`);
  }
  _renderAttributeCheckbox(t) {
    return d`<calcite-label class="bold">${this._messages.attributesSubtitle}</calcite-label><calcite-label layout=inline><calcite-checkbox .disabled=${t} .checked=${this.viewModel.pasteWithAttributes} @calciteCheckboxChange=${(i) => {
      this.viewModel.pasteWithAttributes = i.target.checked;
    }}></calcite-checkbox>${this._messages.pasteWithAttributesLabel}</calcite-label>`;
  }
  _renderFlowPasteAs(t) {
    return t ? w("paste-gallery", d`<calcite-flow-item .selected=${t} .heading=${this._messages.componentLabel} @calciteFlowItemBack=${(i) => {
      i.preventDefault(), this.viewModel.hasPasteCommandsPage && (this.viewModel.activeFlowPage = "commands-page");
    }}>${this._renderFlowCommandStart(!this.viewModel.hasPasteCommandsPage)}${this._renderClipboardCommand("paste-as")}${this._renderCloseCommand(t)}<calcite-panel>${this.hideFooter ? null : d`<div class="w-full" slot=footer><div class="w-full flex"><calcite-button .disabled=${this.viewModel.updating} width=half .hidden=${this.viewModel.hideFooterCancelButton} kind=brand appearance=outline @click=${() => {
      this.viewModel.resetHome(), this.closed = !0, this.arcgisClose.emit();
    }}>${this._messages.cancel}</calcite-button><calcite-button .disabled=${this.viewModel.updating || !this.viewModel.pasteTemplate || this.viewModel.hasTooManyPasteCreateFeatures} kind=brand appearance=solid .width=${this.viewModel.hideFooterCancelButton ? "full" : "half"} @click=${() => {
      try {
        this.viewModel.lastPasteError = void 0, this.viewModel.getPasteCommandById(this.viewModel.activeCommand).runPasteCommand({
          closeAfterApply: () => {
            this._handleCloseAfterApply();
          },
          onPasteError: (i) => {
            this.arcgisApplyPasteError.emit({
              command: this.activeCommand ?? "paste-as",
              errorMessage: i.errorMessage,
              errorCode: i.errorCode
            });
          },
          onApply: async (i) => {
            try {
              await this.beforeApply?.();
              const a = { ...i };
              return this.arcgisApplyPasteCommand.emit(a).defaultPrevented ? { success: !1, errorCode: "cancelled" } : a.completionCallback ? await a.completionCallback ?? { success: !0 } : { success: !0 };
            } catch {
              return { success: !1 };
            }
          }
        }, this.viewModel.activeCommand ?? "paste-as");
      } catch {
      }
    }}>${this.viewModel.alwaysShowFeatureForm ? this._messages.next : (this.viewModel.clipboardFeatures.length ?? 0) > 1 && this.activeCommand !== "paste-merge" ? b(this._messages.pasteMany ?? "", { num: this.viewModel.clipboardFeatures.length }) : this._messages.paste}</calcite-button></div></div>`}${this.viewModel.hasTooManyPasteCreateFeatures ? d`<div class="pad-start-end gallery-content"><calcite-notice open icon=exclamation-point kind=warning><div slot=message>${b(this._messages.tooManyCreateFeatures ?? "", { num: this.maximumFeatureCount })}</div></calcite-notice></div>` : null}<slot name=gallery-page-message></slot><div class="pad-start-end gallery-content"><div>${!this.viewModel.clipboardAndTemplateSupportAttributes && this.viewModel.pasteTemplate ? d`<div class="pad-contents"><calcite-notice open icon=exclamation-point kind=info><div slot=message>${this._messages.attributesNotCopied}</div>${this.activeCommand === "paste-merge" && this.viewModel.hasClipboardItemMatchingTemplate ? d`<calcite-link slot=link @click=${() => {
      this.viewModel.activeFlowPage = "merge-page";
    }} title=${this._messages.seeMergeOptions ?? ue}>${this._messages.seeMergeOptions}</calcite-link>` : null}</calcite-notice></div>` : null}${this.viewModel.clipboardAndTemplateSupportAttributes && this.viewModel.pasteTemplate ? this._renderAttributeCheckbox(!this.viewModel.clipboardAndTemplateSupportAttributes) : null}${this.viewModel.clipboardAndTemplateSupportAttributes ? null : this._renderAttributeCheckbox(!1)}</div><calcite-list .hidden=${this.viewModel.activeCommand !== "paste-merge"} .label=${this._messages.pasteCommandChoices ?? ""} selection-mode=none selection-appearance=border><calcite-list-item .label=${this._messages.mergeOptionsTitle} .description=${this._messages.mergeOptionsDesc} .disabled=${this.viewModel.updating} @click=${() => {
      this.viewModel.activeFlowPage = "merge-page";
    }}><calcite-icon slot=content-start icon=configure></calcite-icon><calcite-icon slot=content-end icon=chevron-right></calcite-icon></calcite-list-item></calcite-list><div>${this.viewModel.workingLayers.length > 0 ? d`<arcgis-feature-templates show-filter template-sort-by=system .disableTemplatesMode=${this.disableTemplatesMode} .applicationDisabledFunction=${(i) => !!(i.template && ie(i.template) && i.template.type !== "feature")} class="paste-feature-templates" .layers=${this.viewModel.workingLayers} @arcgisTemplatesChanged=${() => {
      this._checkAndUpdateInitialPasteTemplate();
    }} @arcgisSelectTemplate=${(i) => {
      this.viewModel.pasteTemplate = i.detail.template;
    }} .view=${this.viewModel.view} .referenceElement=${this.referenceElement} ${D(this._templateGallery)}></arcgis-feature-templates>` : d`<calcite-notice open icon=exclamation-point kind=warning><div slot=message>${b(this._messages.noMatchingEditableLayers ?? "", { num: this.maximumFeatureCount })}</div></calcite-notice>`}</div></div></calcite-panel>${this._renderApplying()}</calcite-flow-item>`) : w("paste-gallery", d`<calcite-flow-item .selected=${t} .heading=${this._messages.componentLabel} @calciteFlowItemBack=${(i) => {
      i.preventDefault(), this.viewModel.hasPasteCommandsPage && (this.viewModel.activeFlowPage = "commands-page");
    }}>${this._renderFlowCommandStart(!this.viewModel.hasPasteCommandsPage)}</calcite-flow-item>`);
  }
  _renderFlowPasteMerge(t) {
    if (!t)
      return w("paste-merge", d`<calcite-flow-item .selected=${t} .heading=${this._messages.componentLabel} @calciteFlowItemBack=${(a) => {
        a.preventDefault(), this.viewModel.activeFlowPage = "gallery-page";
      }}></calcite-flow-item>`);
    const i = this.viewModel.selectedClipboardItemIndex === -1 ? null : this.viewModel.clipboard.items.getItemAt(this.viewModel.selectedClipboardItemIndex);
    return w("paste-merge", d`<calcite-flow-item .selected=${t} .heading=${this._messages.componentLabel} @calciteFlowItemBack=${(a) => {
      a.preventDefault(), this.viewModel.activeFlowPage = "gallery-page";
    }}>${this._renderClipboardCommand("merge")}${this._renderCloseCommand(t)}<calcite-panel><div class="merge-split-view-container"><div class="pad-contents merge-split-view-items"><calcite-label>${this._messages.selectionLabel}<calcite-list .label=${this._messages.features ?? ""} selection-mode=single selection-appearance=border>${this.clipboard.items.toArray().map((a, s) => ({ id: s, item: a })).filter((a) => a.item.type === "feature" && a.item.layer && a.item.graphic).map((a) => d`<calcite-list-item .disabled=${this.viewModel.updating} .selected=${a.id === this.viewModel.selectedClipboardItemIndex} @calciteListItemSelect=${() => {
      this.viewModel.selectedClipboardItemIndex = a.id;
    }} @pointerenter=${(s) => {
      this.viewModel.highlightSelectedGraphicOnMap(a.item), s.target.classList.add("hovering");
    }} @pointerleave=${(s) => {
      s.target.classList.remove("hovering"), this.viewModel.clearHighlightSelectedGraphic();
    }} .value=${a.id}><arcgis-feature-title slot=content .graphic=${a.item.graphic} .layer=${a.item.layer}></arcgis-feature-title><arcgis-feature-image width-in-pixels=16 height-in-pixels=16 use-true-shape slot=content-start .graphic=${a.item.graphic} .layer=${a.item.layer}></arcgis-feature-image>${this.viewModel.selectedClipboardItemIndex !== a.id ? d`<calcite-chip slot=content-end .label=${this._messages.preservethis ?? ""} class="chip-indent only-on-hover item-candidate" scale=s .value=${a.id}>${this._messages.preservethis ?? ""}</calcite-chip>` : ""}${this.viewModel.selectedClipboardItemIndex === a.id ? d`<calcite-chip icon=check .label=${this._messages.preserved ?? ""} class="item-preserved chip-indent" scale=s slot=content-end .value=${a.id}>${this._messages.preserved}</calcite-chip>` : ""}</calcite-list-item>`)}</calcite-list></calcite-label></div><div class="merge-split-view-attributes">${this.viewModel.selectedClipboardItemIndex === -1 ? d`<div></div>` : d`<div class="merge-feature-form"><arcgis-feature-form heading-level=5 .feature=${i.graphic} .formTemplate=${i.layer.formTemplate ? i.layer.formTemplate : null} .layer=${i.layer} ${D(this._featureFormElement)}></arcgis-feature-form></div>`}</div></div></calcite-panel>${this._renderApplying()}</calcite-flow-item>`);
  }
  _renderFlowPasteForm(t) {
    if (!t)
      return w("paste-form", d`<calcite-flow-item .selected=${t} .heading=${this._messages.componentLabel} @calciteFlowItemBack=${(p) => {
        p.preventDefault(), this.viewModel.activeFlowPage = this.viewModel.beforeForm, this.viewModel.resetFormPage();
      }}></calcite-flow-item>`);
    const i = (this.viewModel.bauFeatures?.length ?? 0) > 1 && !this.viewModel.bauHasTooManyFeatures && !this.viewModel.bauHasTooManyComplexFeatures, a = this.viewModel.updating, s = this.viewModel.bauActiveFeatureIndex > 0, r = this.viewModel.bauActiveFeatureIndex !== -1 && this.viewModel.bauActiveFeatureIndex < (this.viewModel.bauFeatures?.length ?? 0) - 1, l = this.viewModel.bauActiveFeatureIndex === -1 ? b(this._messages.multipleFeaturesX ?? "", {
      total: this.viewModel.bauFeatures?.length ?? 0
    }) : b(this._messages.range ?? "", {
      current: this.viewModel.bauActiveFeatureIndex + 1,
      total: this.viewModel.bauFeatures?.length ?? 0
    }), h = (this.viewModel.bauInvalidFeatures?.length ?? 0) > 0;
    return w("paste-form", d`<calcite-flow-item .selected=${t} .heading=${this._messages.componentLabel} @calciteFlowItemBack=${(p) => {
      p.preventDefault(), this.viewModel.activeFlowPage = this.viewModel.beforeForm, this.viewModel.resetFormPage();
    }}>${this._renderCloseCommand(t)}<calcite-panel>${this.hideFooter ? null : d`<div class="w-full" slot=footer><div class="w-full flex"><calcite-button .disabled=${this.viewModel.updating} width=half .hidden=${this.viewModel.hideFooterCancelButton} kind=brand appearance=outline @click=${() => {
      this.viewModel.resetHome(), this.closed = !0, this.arcgisClose.emit();
    }}>${this._messages.cancel}</calcite-button><calcite-button .disabled=${this.viewModel.updating || this.viewModel.bauFormUpdating || this.viewModel.bauHasTooManyFeatures || this.viewModel.bauHasTooManyComplexFeatures} kind=brand appearance=solid .width=${this.viewModel.hideFooterCancelButton ? "full" : "half"} @click=${async () => {
      try {
        if (await ae(() => !this.viewModel.bauFormUpdating), !this.viewModel.bauFormValid) {
          this._bauForm.value?.goToFirstError();
          return;
        }
        this._copyAcrossValidMultiFormFieldValues(), this.viewModel.lastPasteError = void 0, this.viewModel.runPasteFormCommand({
          closeAfterApply: () => {
            this._handleCloseAfterApply();
          },
          onPasteError: (p) => {
            this.arcgisApplyPasteError.emit({
              command: this.activeCommand ?? "paste-as",
              errorMessage: p.errorMessage,
              errorCode: p.errorCode
            });
          },
          onApply: async (p) => {
            try {
              await this.beforeApply?.();
              const u = { ...p };
              return this.arcgisApplyPasteCommand.emit(u).defaultPrevented ? { success: !1, errorCode: "cancelled" } : u.completionCallback ? await u.completionCallback ?? { success: !0 } : { success: !0 };
            } catch {
              return { success: !1 };
            }
          }
        });
      } catch {
      }
    }}>${(this.viewModel.bauFeatures?.length ?? 0) > 1 ? b(this._messages.pasteMany ?? "", { num: this.viewModel.bauFeatures.length }) : this._messages.paste}</calcite-button></div></div>`}${i ? d`<calcite-action-bar overflow-actions-disabled slot=action-bar layout=horizontal scale=s expand-disabled class="carousel-bar"><calcite-button .disabled=${this.viewModel.updating} @click=${(p) => {
      this._showFloatingChoice = !this._showFloatingChoice, p.stopPropagation();
    }} scale=s appearance=transparent icon-start=legend icon-end=chevron-down kind=neutral><span class="bau-pick">${l}${h ? d`<calcite-icon scale=s icon=exclamation-mark-triangle class="danger-icon-warning"></calcite-icon>` : ""}</span></calcite-button><calcite-action slot=actions-end icon=chevron-left icon-flip-rtl scale=s .text=${this._messages.back ?? ""} .disabled=${!s || a || !i} @click=${() => {
      this.viewModel.previousActiveFeature();
    }}></calcite-action><calcite-action slot=actions-end icon=chevron-right icon-flip-rtl scale=s .text=${this._messages.next ?? ""} .disabled=${!r || a || !i} @click=${() => {
      this.viewModel.nextActiveFeature();
    }}></calcite-action></calcite-action-bar>${this._renderFloatingUIChoice(i)}` : ""}<div class=${me(this.viewModel.bauHasTooManyComplexFeatures || this.viewModel.bauHasTooManyFeatures ? "hidden" : void 0)}>${this._renderPasteFormBreadcrumb()}<arcgis-multi-feature-form edit-type=INSERT submit-has-been-attempted .view=${this.view} .referenceElement=${this.referenceElement} .hidden=${this.viewModel.bauHasTooManyComplexFeatures || this.viewModel.bauHasTooManyFeatures} .disabled=${this.viewModel.updating} .maximumFeatureCount=${this.maximumFeatureCount} .maximumFeatureCountWithComplexForms=${this.maximumFeatureCountWithComplexForms} .features=${this.viewModel.bauFeatures} .activeFeatureIndex=${this.viewModel.bauActiveFeatureIndex} @arcgisPropertyChange=${(p) => {
      this._updateBauViewModelFields(p.target), p.detail.name === "status" && p.target.status === "loaded" && this._copyAcrossValidMultiFormFieldValues();
    }} @arcgisValueChange=${(p) => {
      let u = 0;
      for (const g of this.viewModel.bauFeatures?.toArray() ?? []) {
        const m = this.viewModel.bauOriginalGraphics[u];
        this.viewModel.formFeatureValuesChanged(m, p.target.getValues(g)), u++;
      }
    }} ${D(this._bauForm)}></arcgis-multi-feature-form></div>${this.viewModel.bauHasTooManyComplexFeatures || this.viewModel.bauHasTooManyFeatures ? d`<div class="pad-start-end gallery-content"><calcite-notice open icon=exclamation-point kind=warning><div slot=message>${this.viewModel.bauHasTooManyFeatures ? b(this._messages.tooManyCreateFeatures ?? "", { num: this.maximumFeatureCount }) : b(this._messages.tooManyCreateComplexFeatures ?? "", {
      num: this.maximumFeatureCountWithComplexForms
    })}</div></calcite-notice></div>` : null}</calcite-panel>${this.renderPasteErrorFooter()}${this._renderApplying()}</calcite-flow-item>`);
  }
  _renderPasteFormBreadcrumb() {
    return d`<calcite-list .label=${this._messages.breadcrumb ?? ""} selection-appearance=border scale=s selection-mode=none><calcite-list-item>${this.viewModel.bauActiveFeatureIndex === -1 ? d`<calcite-icon scale=s slot=content-start icon=group-form></calcite-icon>` : E(this.viewModel.bauActiveGraphic)?.isTable ? d`<calcite-icon scale=s slot=content-start icon=table></calcite-icon>` : d`<arcgis-feature-image width-in-pixels=16 height-in-pixels=16 use-true-shape slot=content-start .graphic=${this.viewModel.bauActiveGraphic} .layer=${this.viewModel.bauActiveLayer}></arcgis-feature-image>`}${this.viewModel.bauActiveFeatureIndex === -1 ? d`<span slot=content>${b(this._messages.multipleFeaturesX ?? "", {
      total: this.viewModel.bauFeatures?.length ?? 0
    })}</span>` : d`<arcgis-feature-title is-new-feature slot=content .graphic=${this.viewModel.bauActiveGraphic} .layer=${this.viewModel.bauActiveLayer}></arcgis-feature-title>`}</calcite-list-item></calcite-list>`;
  }
  _renderFloatingUIChoice(t) {
    if (!this._showFloatingChoice || !t)
      return d`<div></div>`;
    let i = !1;
    this.viewModel.bauInvalidFeatures.length > 0 && (i = !0);
    const a = new Set(this.viewModel.bauInvalidFeatures);
    return d`<div class="choose-feature" slot=action-bar ${D(this._floatingChoiceContainer)}><calcite-list .label=${this._messages.choosefeature ?? ""} selection-mode=single selection-appearance=border><calcite-list-item .disabled=${this.viewModel.updating} @calciteListItemSelect=${(s) => {
      this.viewModel.bauActiveFeatureIndex !== -1 && (this.viewModel.bauActiveFeatureIndex = -1, this.viewModel.updateIndividualMultiFeatureFormHighlight()), this.viewModel.clearMultiFeatureFormHighlights(), this._showFloatingChoice = !1;
    }} .label=${b(this._messages.multipleFeaturesX ?? "", {
      total: this.viewModel.bauFeatures.length
    })} .selected=${this.viewModel.bauActiveFeatureIndex === -1} value=shared><calcite-icon scale=s icon=group-form class="feature-choose-listitem" slot=content-start></calcite-icon></calcite-list-item>${this.viewModel.bauFeatures.map((s, r) => d`<calcite-list-item .disabled=${this.viewModel.updating} @pointerenter=${(l) => {
      this.viewModel.highlightMultiFeatureFormFeature(s, r);
    }} @pointerleave=${(l) => {
      this.viewModel.clearMultiFeatureFormHighlights();
    }} .selected=${this.viewModel.bauActiveFeatureIndex === r} @calciteListItemSelect=${(l) => {
      const h = window.parseInt(l.currentTarget.value);
      this.viewModel.bauActiveFeatureIndex = h, this.viewModel.updateIndividualMultiFeatureFormHighlight(), this.viewModel.clearMultiFeatureFormHighlights(), this._showFloatingChoice = !1;
    }} .value=${r}><arcgis-feature-title is-new-feature slot=content .graphic=${s} .layer=${s.layer}></arcgis-feature-title>${E(s)?.isTable ? d`<calcite-icon scale=s icon=table slot=content-start class="feature-choose-listitem"></calcite-icon>` : d`<arcgis-feature-image slot=content-start class="feature-choose-listitem" .graphic=${s} width-in-pixels=16 height-in-pixels=16 use-true-shape .layer=${s.layer}></arcgis-feature-image>`}${a.has(s) && i ? d`<calcite-icon slot=content-end icon=exclamation-mark-triangle scale=s class="danger-icon-warning"></calcite-icon>` : ""}</calcite-list-item>`)}</calcite-list></div>`;
  }
  _renderClipboard(t) {
    return t ? w("paste-form", d`<calcite-flow-item .selected=${t} .heading=${this._messages.clipboardContents} @calciteFlowItemBack=${(i) => {
      i.preventDefault(), this.viewModel.activeFlowPage = this.viewModel.beforeClipboard;
    }}>${this._renderCloseCommand(t)}<calcite-panel><arcgis-clipboard .view=${this.view} .referenceElement=${this.referenceElement} .hideTooltips=${this.hideTooltips}></arcgis-clipboard></calcite-panel></calcite-flow-item>`) : w("paste-form", d`<calcite-flow-item .selected=${t} .heading=${this._messages.clipboardContents} @calciteFlowItemBack=${(i) => {
      i.preventDefault(), this.viewModel.activeFlowPage = this.viewModel.beforeClipboard;
    }}></calcite-flow-item>`);
  }
  _renderPasteCommands(t) {
    if (!t)
      return w("paste-commands", d`<calcite-flow-item .selected=${t} .heading=${this._messages.componentLabel} @calciteFlowItemBack=${(a) => {
        a.preventDefault(), this.viewModel.activeFlowPage = "commands-page";
      }}>${this._renderFlowCommandStart(this.viewModel.hasPasteCommandsPage)}</calcite-flow-item>`);
    const i = this.viewModel.clipboard.items.length === 0 ? this._messages.clipboardEmpty ?? "" : this.viewModel.clipboard.items.length > 1 ? b(this._messages.clipboardContentsMany ?? "", {
      num: this.viewModel.clipboard.items.length
    }) : this._messages.clipboardContentsSingle ?? "";
    return w("paste-commands", d`<calcite-flow-item .selected=${t} .heading=${this._messages.componentLabel} @calciteFlowItemBack=${(a) => {
      a.preventDefault(), this.viewModel.activeFlowPage = "commands-page";
    }}>${this._renderFlowCommandStart(this.viewModel.hasPasteCommandsPage)}${this._renderClipboardCommand("commands")}${this._renderCloseCommand(t)}<calcite-panel><calcite-list .label=${this._messages.clipboardContents ?? ""} selection-mode=none selection-appearance=border><calcite-list-item .description=${i}></calcite-list-item></calcite-list><slot name=commands-page-message></slot><div class="pad-contents"><calcite-list .label=${this._messages.pasteCommandChoices ?? ""} selection-mode=none selection-appearance=border>${this.availableCommands.map((a) => d`<calcite-list-item .label=${a.label(this._messages, this._messages._lang)} .description=${a.description(this._messages, this._messages._lang)} .value=${a.id} .disabled=${!a.commandEnabled || this.viewModel.updating} @click=${async () => {
      await this._runPasteCommand(a);
    }}><calcite-icon slot=content-start .icon=${a.icon}></calcite-icon>${a.immediate ? "" : d`<calcite-icon slot=content-end icon=chevron-right flip-rtl></calcite-icon>`}</calcite-list-item>`)}</calcite-list></div></calcite-panel>${this.renderPasteErrorFooter()}${this._renderApplying()}</calcite-flow-item>`);
  }
  renderPasteErrorFooter() {
    return !this.viewModel.lastPasteError || this.viewModel.hideErrorNotice ? null : d`<calcite-notice slot=footer open kind=danger icon=exclamation-mark-triangle closable @calciteNoticeClose=${() => {
      this.viewModel.lastPasteError = void 0;
    }}><div slot=title>${this._messages.errorNoticeTitle ?? ""}</div><div slot=message>${this.viewModel.lastPasteError.localizedErrorMessage ? this._messages[this.viewModel.lastPasteError.localizedErrorMessage] : this._messages.errorNoticeMessage ?? ""}</div></calcite-notice>`;
  }
  _renderApplying() {
    return this.viewModel.applying ? d`<calcite-scrim><calcite-loader scale=s .label=${this._messages.updating ?? ""}></calcite-loader></calcite-scrim>` : "";
  }
  render() {
    return this.activeFlowPage === "clipboard-empty-page" ? d`<calcite-flow class="arcgis-paste" .hidden=${this.closed}>${this._renderNoClipboardData(this.activeFlowPage === "clipboard-empty-page")}</calcite-flow>` : this.activeFlowPage === "no-command-page" ? d`<calcite-flow class="arcgis-paste" .hidden=${this.closed}>${this._renderNoCommandPage(this.activeFlowPage === "no-command-page")}</calcite-flow>` : d`<calcite-flow class="arcgis-paste" .hidden=${this.closed}>${this.hasPasteCommandsPage && this._renderPasteCommands(this.activeFlowPage === "commands-page") || ""}${this._renderFlowPasteAs(this.activeFlowPage === "gallery-page")}${this._renderFlowPasteMerge(this.activeFlowPage === "merge-page")}${this._renderFlowPasteForm(this.activeFlowPage === "form-page")}${this._renderClipboard(this.activeFlowPage === "clipboard")}</calcite-flow>`;
  }
}
de("arcgis-paste", rt);
export {
  rt as ArcgisPaste
};