@arcgis/map-components
Version:
ArcGIS Map Components
114 lines (113 loc) • 5.07 kB
JavaScript
import { c as f } from "../../chunks/runtime.js";
import { html as l } from "lit-html";
import { usePropertyChange as m } from "@arcgis/lumina/controllers";
import { LitElement as y, createEvent as v, noShadowRoot as _, safeClassMap as n } from "@arcgis/lumina";
import { css as w } from "@lit/reactive-element/css-tag.js";
import { g } from "../../chunks/globalCss.js";
import { u as $ } from "../../chunks/useT9n.js";
import { m as b } from "../../chunks/useViewModel.js";
import { A as M } from "../../chunks/AnalysisViewModel.js";
import x from "@arcgis/core/analysis/LineOfSightAnalysis.js";
import { property as O, subclass as A } from "/core/core/accessorSupport/decorators.js";
/*! All material copyright Esri, All Rights Reserved, unless otherwise specified.
See https://js.arcgis.com/4.33/esri/copyright.txt for details.
v4.33.13 */
const C = w`{arcgis-line-of-sight{display:block}.arcgis-line-of-sight__container{display:flex;position:relative;flex-flow:column;gap:var(--calcite-spacing-md);padding:var(--esri-widget-padding);overflow-y:auto}.arcgis-line-of-sight__error{color:var(--calcite-color-status-danger)}.arcgis-line-of-sight__hint{display:flex;flex-direction:column;gap:var(--calcite-spacing-md)}.arcgis-line-of-sight__error,.arcgis-line-of-sight__hint{overflow:hidden;animation:arcgis-line-of-sight-fade-in .25s ease-in-out;p{margin:0;padding:0}}.arcgis-line-of-sight__actions{display:flex;flex-flow:column;gap:var(--calcite-spacing-xxs);justify-content:center} arcgis-line-of-sight-fade-in{0%{opacity:0}25%{opacity:0}to{opacity:1}}}`, a = "arcgis-line-of-sight", r = {
base: a,
actions: `${a}__actions`,
container: `${a}__container`,
error: `${a}__error`,
hint: `${a}__hint`,
hintText: `${a}__hint-text`,
newAnalysisButton: `${a}__new-analysis-button`
};
var S = Object.defineProperty, D = Object.getOwnPropertyDescriptor, u = (t, e, i, o) => {
for (var s = o > 1 ? void 0 : o ? D(e, i) : e, d = t.length - 1, h; d >= 0; d--)
(h = t[d]) && (s = (o ? h(e, i, s) : h(s)) || s);
return o && s && S(e, i, s), s;
};
let c = class extends M {
constructor() {
super(...arguments), this.supportedViewType = "3d", this.unsupportedErrorMessage = "The Line Of Sight component is only supported in 3D views.";
}
get state() {
return this.disabled || !this.ready ? "disabled" : this.operationState === "active" ? "creating" : this.analysis.valid ? "created" : "ready";
}
constructAnalysis() {
return new x();
}
clearAnalysis() {
this.analysis.observer = null, this.analysis.targets.removeAll();
}
async place(t) {
await this.analysisView?.place(t);
}
};
u([
O({ readOnly: !0 })
], c.prototype, "state", 1);
c = u([
A("esri.components.LineOfSight.LineOfSightViewModel")
], c);
const L = b(c);
class V extends y {
constructor() {
super(...arguments), this.viewModel = L(this), this._messages = $({ blocking: !0 }), this.view = this.viewModel.view, this.analysis = this.viewModel.analysis, this.autoDestroyDisabled = !1, this.icon = "line-of-sight", this.position = "bottom-left", this.arcgisPropertyChange = m()("analysis", "state"), this.arcgisReady = v();
}
static {
this.properties = { analysis: 0, autoDestroyDisabled: 5, icon: 3, label: 1, messageOverrides: 0, position: 1, referenceElement: 1, state: 35, _supported: 16 };
}
static {
this.shadowRootOptions = _;
}
static {
this.styles = C;
}
get state() {
return this.viewModel.state;
}
get _supported() {
return this.view == null || this.view.type === "3d";
}
async clear() {
this.viewModel.clear();
}
async continue() {
this.viewModel.start();
}
async destroy() {
await this.manager.destroy();
}
async start() {
this.viewModel.startNewAnalysis();
}
async stop() {
this.viewModel.stop();
}
render() {
return l`<div class=${n({
[r.base]: !0,
[g.widget]: !0,
[g.panel]: !0
})} role=presentation>${this._renderContainerNode()}</div>`;
}
_renderContainerNode() {
if (!this._supported)
return l`<div class=${n(r.error)}><p>${this._messages.unsupported}</p></div>`;
const e = this.viewModel.state, i = e === "creating";
return l`<div class=${n(r.container)}>${i ? l`<div class=${n(r.hint)}><p class=${n(r.hintText)}>${this._messages.hint}</p></div>` : null}<div class=${n(r.actions)}>${e === "creating" ? p({ onClick: () => {
this.stop();
}, children: this._messages.done }) : null}${e === "created" ? p({ onClick: () => {
this.continue();
}, children: this._messages.continueAnalysis }) : null}${p({ className: r.newAnalysisButton, onClick: () => {
this.start();
}, primary: !0, disabled: e === "disabled", children: this._messages.newAnalysis })}</div></div>`;
}
}
function p({ className: t, onClick: e, primary: i, disabled: o, children: s }) {
return l`<calcite-button .appearance=${i ? "solid" : "outline-fill"} class=${n(t)} .disabled=${o} =${e}>${s}</calcite-button>`;
}
f("arcgis-line-of-sight", V);
export {
V as ArcgisLineOfSight
};