/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
import { c as _ } from "../../chunks/runtime.js";
import { css as w, html as g } from "lit";
import { LitElement as f, createEvent as v, nothing as b, safeClassMap as x } from "@arcgis/lumina";
import { usePropertyChange as y } from "@arcgis/lumina/controllers";
import { classes as z } from "@arcgis/toolkit/dom";
import { u as D } from "../../chunks/useT9n.js";
import { m as k } from "../../chunks/useViewModel.js";
import { b as M } from "../../chunks/async-utils.js";
import { g as p } from "../../chunks/globalCss.js";
import { V as u } from "../../chunks/visible-element.js";
import O from "@arcgis/core/analysis/DirectLineMeasurementAnalysis.js";
import { isAboveGeodesicDistanceThreshold as V } from "@arcgis/core/applications/Components/analysisUtils.js";
import { property as l, subclass as $ } from "@arcgis/core/core/accessorSupport/decorators.js";
import { watch as S } from "@arcgis/core/core/reactiveUtils.js";
import { A as U } from "../../chunks/AnalysisViewModel.js";
import { g as L, a as C, b as d, r as E, d as m, c as P } from "../../chunks/measurementUtils.js";
const A = w`.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}.esri-widget--panel{min-width:300px;min-height:32px;padding:var(--arcgis-internal-padding);transition:max-height .25s ease-in-out;overflow-y:auto}.esri-unit-select{width:100%}.esri-unit-select__label{--calcite-label-margin-bottom: 0;width:100%}:host{display:block}.esri-measurement-widget-content{padding:var(--arcgis-internal-padding);flex-direction:column;gap:var(--calcite-spacing-xxl);display:flex;position:relative;overflow-y:auto}.esri-measurement-widget-content__error{color:var(--calcite-color-status-danger)}.esri-measurement-widget-content__error,.esri-measurement-widget-content__hint{overflow:hidden}.esri-measurement-widget-content__error p,.esri-measurement-widget-content__hint p{margin:0;padding:0}.esri-measurement-widget-content__hint,.esri-measurement-widget-content__error,.esri-measurement-widget-content__measurement,.esri-measurement-widget-content__measurement-item{flex-direction:column;gap:var(--calcite-spacing-md);animation:.25s ease-in-out esri-fade-in;display:flex}.esri-measurement-widget-content__measurement-item--disabled{color:var(--calcite-color-border-ghost)}.esri-measurement-widget-content__measurement-item__value{font-weight:var(--calcite-font-weight-semibold)}.esri-measurement-widget-content__actions{flex-direction:column;justify-content:center;gap:var(--calcite-spacing-xs);display:flex}:host{width:var(--arcgis-internal-panel-width, 300px)}.root{min-width:var(--arcgis-internal-panel-min-width);overflow:var(--arcgis-internal-panel-overflow, visible);height:fit-content}`;
var j = Object.defineProperty, B = Object.getOwnPropertyDescriptor, a = (t, e, r, o) => {
  for (var i = o > 1 ? void 0 : o ? B(e, r) : e, s = t.length - 1, c; s >= 0; s--)
    (c = t[s]) && (i = (o ? c(e, r, i) : c(i)) || i);
  return o && i && j(e, r, i), i;
};
let n = class extends U {
  constructor() {
    super(...arguments), this.supportedViewType = "3d", this.unsupportedErrorMessage = "The Direct Line Measurement 3D component is only supported in 3D views.";
  }
  initialize() {
    this.addHandles(
      // Make sure the analysis and view model units are in sync.
      S(
        () => ({
          analysis: this.analysis,
          unit: this._userUnit
        }),
        ({ analysis: t, unit: e }) => {
          e && (t.unit = e);
        },
        { sync: !0, initial: !0 }
      )
    );
  }
  get state() {
    const { analysis: t, disabled: e, operationState: r, ready: o, supported: i } = this, { valid: s } = t;
    return L({ supported: i, disabled: e, ready: o, operationState: r, valid: s });
  }
  get displayState() {
    return C(this.state, !!this.analysis.startPoint);
  }
  get measurement() {
    const t = this.analysisView?.result, e = t?.mode ?? "euclidean";
    if (!this.analysis.valid)
      return {
        mode: e,
        directDistance: d(void 0),
        horizontalDistance: d(void 0),
        verticalDistance: d(void 0)
      };
    const r = t?.directDistance, o = r != null && V(r);
    return {
      mode: e,
      directDistance: d(o ? void 0 : r),
      horizontalDistance: d(t?.horizontalDistance),
      verticalDistance: d(t?.verticalDistance)
    };
  }
  get unitOptions() {
    return E(this._userUnitOptions, m, m);
  }
  set unitOptions(t) {
    this._userUnitOptions = t;
  }
  get unit() {
    return P(this._userUnit, this.analysis.unit, this.unitOptions, this.defaultMeasurementSystem);
  }
  set unit(t) {
    this._userUnit = t;
  }
  async place(t) {
    await this.analysisView?.place(t);
  }
  clearAnalysis() {
    this.analysis.startPoint = null, this.analysis.endPoint = null;
  }
  constructAnalysis() {
    return new O();
  }
};
a([
  l({ readOnly: !0 })
], n.prototype, "state", 1);
a([
  l({ readOnly: !0 })
], n.prototype, "displayState", 1);
a([
  l({ readOnly: !0 })
], n.prototype, "measurement", 1);
a([
  l()
], n.prototype, "unitOptions", 1);
a([
  l()
], n.prototype, "_userUnitOptions", 2);
a([
  l()
], n.prototype, "unit", 1);
a([
  l()
], n.prototype, "_userUnit", 2);
n = a([
  $("components.direct-line-measurement-3d.DirectLineMeasurement3dViewModel")
], n);
const T = k(n);
class Z extends f {
  constructor() {
    super(...arguments), this.viewModel = T(this), this.messages = D({ name: "directline-measurement-3d", blocking: !0 }), this.view = this.viewModel.view, this.analysis = this.viewModel.analysis, this.autoDestroyDisabled = !1, this.hideStartButton = !1, this.hideUnitSelect = !1, this.hideVisualization = this.viewModel.hideVisualization, this.icon = "measure-line", this.state = this.viewModel.state, this.unit = this.viewModel.unit, this.unitOptions = this.viewModel.unitOptions, this.arcgisPropertyChange = y()("analysis", "state"), this.arcgisReady = v();
  }
  static {
    this.properties = { view: 0, analysis: 0, autoDestroyDisabled: 5, hideStartButton: 5, hideUnitSelect: 5, hideVisualization: 5, icon: 3, label: 1, referenceElement: 1, state: 32, unit: 1, unitOptions: 0 };
  }
  static {
    this.styles = A;
  }
  async clear() {
    this.viewModel.clear();
  }
  async destroy() {
    await this.manager.destroy();
  }
  async start() {
    M(this.viewModel.start());
  }
  render() {
    const { messages: e, unit: r, unitOptions: o, viewModel: i } = this, { measurement: s, state: c } = i;
    return g`<div aria-label=${e.componentLabel ?? b} class=${x(z("root", p.widget, p.panel))} role=presentation><arcgis-measurement-content .state=${i.displayState} .hintLabel=${e.hint} .unsupportedLabel=${e.unsupported} .items=${[
      {
        title: e.direct,
        measurement: s.directDistance
      },
      {
        title: e.horizontal,
        measurement: s.horizontalDistance
      },
      {
        title: e.vertical,
        measurement: s.verticalDistance
      }
    ]}>${u({ hidden: this.hideUnitSelect, children: g`<arcgis-unit-select slot=settings .options=${o} .selectLabel=${e.unit} .value=${r} @arcgisUnitSelectChange=${(h) => {
      this.unit = h.detail;
    }}></arcgis-unit-select>` })}${u({ hidden: this.hideStartButton, children: g`<calcite-button slot=actions .disabled=${c === "disabled" || c === "unsupported"} @click=${this.start}>${e.newMeasurement}</calcite-button>` })}</arcgis-measurement-content></div>`;
  }
}
_("arcgis-direct-line-measurement-3d", Z);
export {
  Z as ArcgisDirectLineMeasurement3d
};
