/* COPYRIGHT Esri - https://js.arcgis.com/1.2/LICENSE.txt */
import { c as b } from "../../chunks/runtime.js";
import { css as E, html as B } from "lit";
import { u as D } from "../../chunks/useT9n.js";
import { LitElement as z } from "@arcgis/lumina";
import { createRef as y, ref as k } from "lit-html/directives/ref.js";
import * as d from "gojs";
import { g as C } from "../../chunks/getItemIcon.js";
import { injectGlobal as A } from "@emotion/css";
import "../solution-item-accordion/customElement.js";
const $ = E`#filter-bar{background-color:#f4f4f4;position:absolute;top:16px;right:220px;z-index:100}#filteredViewButtonDiv{padding:16px 16px 4px}#graph-navigation-bar{background-color:#f4f4f4;position:absolute;top:16px;right:16px;z-index:100}#graph-navigation-controls{position:absolute;top:0;right:0}.z-index-1{z-index:1}#diagram-panel{--calcite-panel-space: 0px}#diagram-shell-panel{--calcite-color-background: var(--calcite-color-foreground-1);padding:16px}`, P = 15, H = 15, V = 10, p = new d.Size(220, 48), O = 1, _ = 8, w = new d.Size(48, 48), G = new d.Size(16, 16), I = new d.Size(153, 17), M = '400 0.75rem "Avenir Next", Avenir, "Helvetica Neue", sans-serif', F = '700 0.75rem "Avenir Next", Avenir, "Helvetica Neue", sans-serif', R = "#f4f4f4", K = "#cacaca", W = "#ffffff", S = "#4a4a4a", N = "#6a6a6a", j = "#ffffff", u = 1, x = 0.3, f = 1, T = 0.2, Z = 1;
function Y(a) {
  const t = document.createElement("div");
  t.style.width = "100%", t.style.height = "100%", a.appendChild(t);
  const e = new d.Diagram(
    t,
    // create a Diagram for the HTML Div element
    {
      click: ie,
      // handle diagram clicks
      contentAlignment: d.Spot.Center,
      // align document to the center of the viewport
      dragSelectingTool: null,
      // disable drag selection
      hoverDelay: 50,
      // milliseconds before mouse-hover displays information
      initialAutoScale: d.AutoScale.Uniform,
      // automatic zoom-to-fit
      layout: new d.LayeredDigraphLayout({
        columnSpacing: P,
        layerSpacing: H
      }),
      padding: V,
      scrollMode: d.ScrollMode.Infinite,
      // allow infinite scrolling--beyond document bounds
      "toolManager.hoverDelay": 50,
      // 50 milliseconds before tooltip appears
      "toolManager.mouseWheelBehavior": d.WheelMode.Zoom
      // mouse wheel zooms instead of scrolls vertically
    }
  );
  e.nodeTemplate = new d.Node("Auto", {
    click: ne,
    movable: !1,
    opacity: u,
    toolTip: new d.Adornment("Auto", {
      isShadowed: !0,
      margin: new d.Margin(12, 16, 6, 16),
      // top, right, bottom, left
      padding: 0,
      shadowBlur: 16,
      shadowColor: "rgba(0, 0, 0, 0.16)",
      shadowOffset: new d.Point(0, 0)
    }).add(new d.Panel("Vertical", { background: j, margin: 0 }).add(new d.TextBlock({ margin: 14 }).bind("text", "title")))
  }).bind("text", "title").add(
    new d.Shape({
      desiredSize: p,
      fill: W,
      geometryString: te(
        p.width,
        p.height,
        _,
        w.width,
        !0
      ),
      height: p.height,
      portId: "",
      stroke: K,
      strokeWidth: O,
      width: p.width
    })
  ).add(
    // Node content
    new d.Panel("Horizontal", {
      alignment: d.Spot.Left,
      stretch: d.Stretch.Horizontal
    }).add(
      // Icon panel
      new d.Panel("Horizontal", {
        alignment: d.Spot.Left,
        desiredSize: w,
        margin: 1
      }).add(
        new d.Panel("Horizontal", {
          alignment: d.Spot.Center,
          margin: 16
        }).add(
          new d.Picture({
            desiredSize: G
          }).bind("source", "", (n) => C(n.itemType, n.itemTypeKeywords))
        )
      ),
      // Label
      new d.Panel("Horizontal", {
        alignment: d.Spot.Right,
        margin: new d.Margin(4, 8, 0, 8)
        // top, right, bottom, left
      }).add(
        new d.Panel("Vertical", {}).add(
          // First line
          new d.TextBlock({
            alignment: d.Spot.Left,
            desiredSize: I,
            font: F,
            overflow: d.TextOverflow.Ellipsis,
            stroke: S,
            wrap: d.Wrap.None
          }).bind("text", "title"),
          // Second line
          new d.TextBlock({
            alignment: d.Spot.Left,
            desiredSize: I,
            font: M,
            overflow: d.TextOverflow.Ellipsis,
            stroke: S,
            wrap: d.Wrap.None
          }).bind("text", "itemTypeForDisplay")
        )
      )
    )
  ), e.commandHandler.zoomFactor = 1.05, e.setDivBackground(R);
  const r = e.toolManager.clickSelectingTool;
  r.standardMouseSelect = function() {
  };
  const s = e.toolManager.draggingTool;
  return s.isEnabled = !1, e.linkTemplate = new d.Link({
    corner: 5,
    movable: !1,
    routing: d.Routing.Orthogonal,
    selectable: !1
  }).add(
    new d.Shape({
      // the link path shape
      opacity: f,
      stroke: N
    }),
    new d.Shape({
      // the 'to' arrowhead
      fill: N,
      opacity: f,
      stroke: null,
      toArrow: "Standard"
    })
  ), e;
}
function m(a, t) {
  a.model = new d.GraphLinksModel(t.nodes, t.links, {
    linkFromPortIdProperty: "fromPort",
    linkToPortIdProperty: "toPort"
  });
}
function q(a, t, e, r = !0) {
  if (r) {
    const c = oe(a, e);
    c.addEventListener(
      "calciteSwitchChange",
      () => document.dispatchEvent(new CustomEvent("filteredViewChanged", { detail: c.checked }))
    );
  }
  const { resetButton: s, centerButton: n, zoomInButton: i, zoomOutButton: o } = ae(a, e);
  s.addEventListener("click", () => de(t)), n.addEventListener("click", () => t.zoomToFit()), i.addEventListener("click", () => t.commandHandler.increaseZoom()), o.addEventListener("click", () => t.commandHandler.decreaseZoom());
}
function J(a, t, e) {
  se();
  const r = Y(a);
  return m(r, t), q(a, r, e), r;
}
function L(a) {
  const t = /* @__PURE__ */ new Set(), e = /* @__PURE__ */ new Set();
  function r(n) {
    n.findLinksInto().each(
      (i) => {
        e.add(i);
        const o = i.fromNode;
        o && !t.has(o) && (t.add(o), r(o));
      }
    );
  }
  r(a);
  function s(n) {
    n.findLinksOutOf().each(
      (i) => {
        e.add(i);
        const o = i.toNode;
        o && !t.has(o) && (t.add(o), s(o));
      }
    );
  }
  return s(a), { connectedNodes: t, connectedLinks: e };
}
function Q(a, t = !1, e) {
  const r = [], s = a.map((i) => {
    if (i.type !== "Group") {
      const o = ee(i);
      return X(i, o, t, e);
    } else {
      r.push(i.id);
      return;
    }
  }).filter((i) => i !== void 0), n = [];
  return s.forEach((i) => {
    (a.find((c) => c.id === i.itemId)?.dependencies || []).forEach((c) => {
      const h = s.find((l) => l?.itemId === c);
      h && n.push({
        from: h.key,
        fromSpot: d.Spot.AllSides,
        to: i.key,
        toSpot: d.Spot.AllSides
      });
    });
  }), { nodes: s, links: n, groupPseudoNodes: r };
}
function U(a, t, e, r = !0) {
  const s = a.diagram;
  if (!s)
    return;
  const n = {};
  if (r) {
    for (const i of s.nodes)
      n[i.key] = i === a ? u : x;
    for (const i of s.links) {
      const o = `${i.fromNode?.key}-${i.toNode?.key}`;
      n[o] = T;
    }
    {
      const { connectedNodes: i, connectedLinks: o } = L(a);
      for (const c of i)
        n[c.key] = u;
      for (const c of o) {
        const h = `${c.fromNode?.key}-${c.toNode?.key}`;
        n[h] = Z;
      }
    }
  }
  if (e && (e.adornedObject = a), r) {
    const i = new d.Animation();
    i.duration = 1;
    for (const o of s.nodes)
      i.add(o, "opacity", o.opacity, n[o.key]);
    for (const o of s.links) {
      const c = `${o.fromNode?.key}-${o.toNode?.key}`;
      i.add(o, "opacity", o.opacity, n[c]);
    }
    i.start();
  }
}
function v(a, t, e, r, s = !0) {
  if (a.length === 0)
    return;
  const n = t[0].diagram;
  if (!n)
    return;
  const i = {};
  if (s) {
    for (const o of n.nodes) {
      const c = a.includes(o.key);
      i[o.key] = !e || c ? u : x;
    }
    for (const o of n.links) {
      const c = `${o.fromNode?.key}-${o.toNode?.key}`;
      i[c] = e ? T : f;
    }
  }
  if (Object.keys(r).forEach((o) => {
    r[o].adornedObject = null;
  }), s) {
    const o = new d.Animation();
    o.duration = 1;
    for (const c of n.nodes)
      o.add(c, "opacity", c.opacity, i[c.key]);
    for (const c of n.links) {
      const h = `${c.fromNode?.key}-${c.toNode?.key}`;
      o.add(c, "opacity", c.opacity, i[h]);
    }
    o.start();
  }
}
function X(a, t, e = !1, r) {
  return {
    key: t,
    title: a.title,
    itemId: a.id,
    itemType: a.type,
    itemTypeForDisplay: re(a.type, a.typeKeywords),
    itemTypeKeywords: a.typeKeywords,
    group: a.type,
    url: e ? `${r}?id=${a.id}` : void 0
  };
}
function ee(a) {
  return a.id;
}
function te(a, t, e, r = 0, s = !1) {
  let n = "";
  s && (n += "F");
  const i = a - 2 * e, o = t - 2 * e;
  return n += " M0 0", n += ` h${i}`, n += ` a${e} ${e} 0 0 1 ${e} ${e}`, n += ` v${o}`, n += ` a${e} ${e} 0 0 1 ${-e} ${e}`, n += ` h${-i}`, n += ` a${e} ${e} 0 0 1 ${-e} ${-e}`, n += ` v${-o}`, n += ` a${e} ${e} 0 0 1 ${e} ${-e}`, r > 0 && (n += ` M${r - e} 0 v${t}`), n;
}
function ie() {
  document.dispatchEvent(new CustomEvent("clickInDiagram"));
}
function ne(a, t) {
  const e = t.part;
  e instanceof d.Node && (e.selectionAdorned = !1, document.dispatchEvent(new CustomEvent("clickOnNode", { detail: e })));
}
function oe(a, t) {
  const e = document.createElement("calcite-switch");
  e.id = "filteredViewButton", e.label = t.filteredView;
  const r = document.createElement("calcite-label");
  r.id = "filteredViewButtonLabel", r.setAttribute("layout", "inline"), r.innerHTML = t.filteredView, r.appendChild(e);
  const s = document.createElement("div");
  s.id = "filteredViewButtonDiv", s.appendChild(r);
  const n = document.createElement("calcite-action-bar");
  n.id = "filter-bar-controls", n.layout = "horizontal", n.expandDisabled = !0, n.appendChild(s);
  const i = document.createElement("div");
  return i.id = "filter-bar", a.appendChild(i), i.appendChild(n), e;
}
function ae(a, t) {
  const e = document.createElement("calcite-action");
  e.appearance = "solid", e.icon = "reset", e.id = "showHideGrayedOutButton";
  const r = document.createElement("calcite-tooltip");
  r.id = "resetButtonTooltip", r.innerHTML = t.reset, r.overlayPositioning = "fixed", r.placement = "bottom", r.referenceElement = e.id;
  const s = document.createElement("calcite-action");
  s.appearance = "solid", s.icon = "zoom-to-object", s.id = "centerButton";
  const n = document.createElement("calcite-tooltip");
  n.id = "centerButtonTooltip", n.innerHTML = t.centerDiagram, n.overlayPositioning = "fixed", n.placement = "bottom", n.referenceElement = s.id;
  const i = document.createElement("calcite-action");
  i.appearance = "solid", i.icon = "plus", i.id = "zoomInButton";
  const o = document.createElement("calcite-tooltip");
  o.id = "zoomInButtonTooltip", o.innerHTML = t.zoomIn, o.overlayPositioning = "fixed", o.placement = "bottom", o.referenceElement = i.id;
  const c = document.createElement("calcite-action");
  c.appearance = "solid", c.icon = "minus", c.id = "zoomOutButton";
  const h = document.createElement("calcite-tooltip");
  h.id = "zoomOutButtonTooltip", h.innerHTML = t.zoomOut, h.overlayPositioning = "fixed", h.placement = "bottom", h.referenceElement = c.id;
  const l = document.createElement("calcite-action-bar");
  l.id = "graph-navigation-controls", l.layout = "horizontal", l.expandDisabled = !0, l.appendChild(e), l.appendChild(r), l.appendChild(s), l.appendChild(n), l.appendChild(i), l.appendChild(o), l.appendChild(c), l.appendChild(h);
  const g = document.createElement("div");
  return g.id = "graph-navigation-bar", a.appendChild(g), g.appendChild(l), { resetButton: e, centerButton: s, zoomInButton: i, zoomOutButton: c };
}
function re(a, t) {
  let e = a;
  if (a === "Feature Service") {
    const r = t.indexOf("View Service") > -1, s = t.indexOf("Table") > -1;
    e = r && s ? "Table (hosted, view)" : s ? "Table (hosted)" : r ? "Feature Layer (hosted, view)" : "Feature Layer (hosted)";
  }
  return a === "Web Mapping Application" && (e = t.indexOf("configurableApp") > -1 ? "Instant App" : e), e = a === "Geoprocessing Service" ? "Tool" : e, e = a === "Feed" ? "Feed (hosted)" : e, e = a === "Real Time Analytic" ? "Real Time Analytic (hosted)" : e, e = a === "Big Data Analytic" ? "Big Data Analytic (hosted)" : e, e = a === "Vector Tile Service" ? "Tile Layer" : e, e;
}
function de(a) {
  a.zoomToFit(), document.dispatchEvent(new CustomEvent("reset"));
}
function se() {
  A`
    #filter-bar {
      background-color: #f4f4f4;
      position: absolute;
      top: 16px;
      right: 220px;
      z-index: 100;
    }
    #filteredViewButtonDiv {
      padding: 16px 16px 4px 16px;
    }
    #graph-navigation-bar {
      background-color: #f4f4f4;
      position: absolute;
      top: 16px;
      right: 16px;
      z-index: 100;
    }
    #graph-navigation-controls {
      position: absolute;
      top: 0;
      right: 0;
    }
  `;
}
const ce = 8, le = 15, he = "#1e90ff", me = 4;
class pe {
  /**
   * Creates a new instance of the SolutionDisplay class.
   * @param indexPanel The Calcite panel element to use as the index panel.
   * @param diagramPanel The Calcite panel element to use as the diagram panel.
   * @param diagramTranslations Translation strings for the diagram.
   * @param diagramKey The license to use for the diagram.
   * @example &lt;caption>Expected environment&lt;/caption>
   *   &lt;calcite-shell>
   *     &lt;calcite-shell-panel id='indexPanel' slot='panel-start' width-scale='m'/>
   *     &lt;calcite-panel id='diagramPanel' style='display:flex;'/>
   *   &lt;/calcite-shell>
   */
  constructor(t, e, r, s) {
    this.indexPanel = t, this.diagramPanel = e, this.diagramTranslations = r, this.diagramKey = s, this.currentSelectedGroupId = "", this.currentSelectedItemId = "", this.diagramNeedsRedraw = !1, this.usefilteredView = !1, this.handle_clickInDiagram = (n) => {
      n.stopImmediatePropagation(), (this.currentSelectedGroupId || this.currentSelectedItemId) && (this.currentSelectedGroupId = "", this.currentSelectedItemId = "", this.diagramNeedsRedraw = this.usefilteredView, this.redraw());
    }, this.handle_clickOnNode = (n) => {
      n.stopImmediatePropagation();
      const i = n.detail.data.key;
      this.redraw(i, i === this.currentSelectedItemId);
    }, this.handle_filteredViewChanged = (n) => {
      this.usefilteredView = n.detail, this.diagramNeedsRedraw = !!this.currentSelectedGroupId || !!this.currentSelectedItemId, this.redraw(this.currentSelectedItemId || this.currentSelectedGroupId);
    }, this.handle_reset = (n) => {
      n.stopImmediatePropagation(), this.reset();
    }, this.handle_solutionItemSelect = (n) => {
      n.stopImmediatePropagation();
      const i = n.detail.itemId;
      this.redraw(i, i === this.currentSelectedItemId || i === this.currentSelectedGroupId, !1);
    }, d.Diagram.licenseKey === "" && (d.Diagram.licenseKey = s ?? "");
  }
  /**
   * Creates the index and diagram for the given collection of template info.
   * @param collection The collection of template info to display.
   * @param typeKeywords The collection type keywords for the solution.
   * @returns A promise that resolves when the index and diagram have been created.
   */
  create(t, e) {
    this.collection = t, this.index = document.createElement("solution-item-accordion"), this.index.linkType = "action", this.index.listSelectionMode = "single", this.index.typeKeywords = e, this.index.style.overflowY = "auto", this.indexPanel.appendChild(this.index), this.index.templateInfos = t, this.allNodesAndLinks = Q(t), this.diagram = J(
      this.diagramPanel,
      this.allNodesAndLinks,
      this.diagramTranslations
    ), this.diagram.addDiagramListener("LayoutCompleted", () => {
      setTimeout(() => {
        this.diagram.zoomToFit();
      }, 1e3);
    }), d.Link.setRoutingParameter(44, 600942), this.createNodeHighlighters(), document.addEventListener("clickInDiagram", this.handle_clickInDiagram), document.addEventListener("clickOnNode", this.handle_clickOnNode), document.addEventListener("filteredViewChanged", this.handle_filteredViewChanged), document.addEventListener("reset", this.handle_reset), this.index.addEventListener("solutionItemSelect", this.handle_solutionItemSelect);
  }
  /**
   * Destroys the index and diagram; removes all event listeners.
   */
  dispose() {
    document.removeEventListener("clickInDiagram", this.handle_clickInDiagram), document.removeEventListener("clickOnNode", this.handle_clickOnNode), document.removeEventListener("filteredViewChanged", this.handle_filteredViewChanged), document.removeEventListener("reset", this.handle_reset), this.index.removeEventListener("solutionItemSelect", this.handle_solutionItemSelect), this.indexPanel.innerHTML = "", this.diagramPanel.innerHTML = "";
  }
  // ---------------------------------------------------------------------------------------------------------------- //
  /**
   * Clears all selections in the index and diagram.
   * @param alsoCollapseAllAccordionItems Whether to collapse all accordion items in the index
   */
  clearSelections(t = !0) {
    this.index.deselectAll(), t && this.index.collapseAll();
    const e = this.getNodesFromDiagram(this.diagram), r = e.map((s) => s.data.key);
    v(r, e, !1, this.diagramNodeHighlighterIndex);
  }
  /**
   * Creates indicies into the diagram's nodes and node highlighters.
   * Rebuilds this.diagramNodeIndex and this.diagramNodeHighlighterIndex.
   */
  createNodeHighlighters() {
    this.diagramNodeIndex = {}, this.diagramNodeHighlighterIndex = {}, this.getNodesFromDiagram(this.diagram).forEach((e) => {
      this.diagramNodeIndex[e.data.key] = e;
      const r = new d.Adornment("Auto", {
        background: "transparent",
        margin: 2
      });
      r.add(new d.Shape("RoundedRectangle", {
        fill: "transparent",
        parameter1: ce,
        parameter2: le,
        stroke: he,
        strokeWidth: me
      })), r.add(new d.Placeholder({
        margin: 1
      })), this.diagramNodeHighlighterIndex[e.data.key] = r;
    });
  }
  /**
   * Retrieves a node from the diagram by its id.
   * @param diagram The diagram to search
   * @param id Id of node to find
   * @returns Node matching the given id, or undefined if not found
   */
  getNodeById(t) {
    return this.diagramNodeIndex[t];
  }
  /**
   * Retrieves all nodes from the diagram.
   * @param diagram The diagram to search
   * @returns Array of nodes in the diagram
   */
  getNodesFromDiagram(t) {
    const e = [], r = t.nodes.iterator;
    for (; r.next(); )
      e.push(r.value);
    return e;
  }
  /**
   * Selects an item to highlight or unhighlight.
   * @param id Id of selected item
   * @param toggleSelection Whether to toggle the selection state of the item
   * @param alsoCollapseAllAccordionItems Whether to collapse all accordion items in the index
   */
  redraw(t = "", e = !1, r = !0) {
    const s = this.allNodesAndLinks.groupPseudoNodes.includes(t);
    this.diagramNeedsRedraw && (m(this.diagram, this.allNodesAndLinks), this.createNodeHighlighters(), this.diagramNeedsRedraw = !1);
    let n = !1;
    if (this.clearSelections(r), !!t) {
      if (s) {
        if (this.currentSelectedItemId = "", this.currentSelectedGroupId !== t ? this.currentSelectedGroupId = t : e && (this.currentSelectedGroupId = this.currentSelectedGroupId ? "" : t, n = this.usefilteredView && !this.currentSelectedGroupId), this.currentSelectedGroupId) {
          this.usefilteredView && (m(this.diagram, this.allNodesAndLinks), this.createNodeHighlighters());
          const i = this.collection.filter((c) => c.id === t)[0], o = i.dependencies.map((c) => this.diagramNodeIndex[c]);
          if (this.usefilteredView) {
            const c = o.map((h) => h.data);
            m(this.diagram, { nodes: c, links: [] });
          } else
            v(i.dependencies, o, !0, this.diagramNodeHighlighterIndex);
          this.index.selectItem(this.currentSelectedGroupId);
        }
      } else {
        this.currentSelectedGroupId = "", this.currentSelectedItemId !== t ? this.currentSelectedItemId = t : e && (this.currentSelectedItemId = this.currentSelectedItemId ? "" : t, n = this.usefilteredView && !this.currentSelectedItemId);
        let i = this.getNodeById(t);
        if ((!i || this.usefilteredView) && (m(this.diagram, this.allNodesAndLinks), this.createNodeHighlighters(), i = this.getNodeById(t), !i))
          return;
        if (this.currentSelectedItemId) {
          if (this.usefilteredView) {
            const o = L(i);
            o.connectedNodes.add(i);
            const c = Array.from(o.connectedNodes).map((l) => l.data), h = Array.from(o.connectedLinks).map((l) => l.data);
            if (m(this.diagram, { nodes: c, links: h }), this.createNodeHighlighters(), i = this.getNodeById(t), !i)
              return;
          }
          i && setTimeout(() => U(i, !0, this.diagramNodeHighlighterIndex[t]), 1), this.index.selectItem(this.currentSelectedItemId);
        }
      }
      n && this.reset();
    }
  }
  /**
   * Clears all selections in the index and diagram.
   */
  reset() {
    this.diagramNeedsRedraw = !1, this.currentSelectedGroupId = "", this.currentSelectedItemId = "", m(this.diagram, this.allNodesAndLinks), this.createNodeHighlighters(), this.clearSelections();
  }
}
class ue extends z {
  constructor() {
    super(...arguments), this.diagramKey = "", this.templateInfoGraph = [], this.typeKeywords = [], this._diagramPanel = y(), this._diagramShell = y(), this._translations = D({ name: "solution-item-diagram", blocking: !0 });
  }
  static {
    this.properties = { diagramKey: 1, templateInfoGraph: 0, typeKeywords: 0, _diagramPanel: 16, _diagramShell: 16, _translations: 16 };
  }
  static {
    this.styles = $;
  }
  updated() {
    if (this.solutionDisplay && (this.solutionDisplay.dispose(), this.solutionDisplay = void 0), this.templateInfoGraph.length > 0) {
      const t = {
        centerDiagram: this._translations.graphTranslations.centerDiagram,
        filteredView: this._translations.graphTranslations.filteredView,
        reset: this._translations.graphTranslations.reset,
        zoomIn: this._translations.graphTranslations.zoomIn,
        zoomOut: this._translations.graphTranslations.zoomOut
      };
      this.solutionDisplay = new pe(this._diagramShell.value, this._diagramPanel.value, t, this.diagramKey), this.solutionDisplay.create(this.templateInfoGraph, this.typeKeywords);
    }
  }
  disconnectedCallback() {
    super.disconnectedCallback(), this.solutionDisplay && (this.solutionDisplay.dispose(), this.solutionDisplay = void 0);
  }
  render() {
    return B`<calcite-shell><calcite-shell-panel id=diagram-shell-panel slot=panel-start ${k(this._diagramShell)}></calcite-shell-panel><calcite-panel class="z-index-1" id=diagram-panel slot=panel-bottom ${k(this._diagramPanel)}></calcite-panel></calcite-shell>`;
  }
}
b("solution-item-diagram", ue);
export {
  ue as SolutionItemDiagram
};
