import { c as l } from "../../chunks/runtime.js";
import { usePropertyChange as o } from "@arcgis/lumina/controllers";
import { reEmitEvent as i } from "@arcgis/lumina/controllers/accessor";
import a from "@geoscene/core/layers/GraphicsLayer.js";
import n from "@geoscene/core/widgets/Sketch.js";
import { LitElement as h, createEvent as d, noShadowRoot as r } from "@arcgis/lumina";
import { m as g } from "../../chunks/useWidget.js";
import { css as p } from "@lit/reactive-element/css-tag.js";
import { watch as c } from "@geoscene/core/core/reactiveUtils.js";
/*! All material copyright GeoScene, All Rights Reserved, unless otherwise specified.
See https://js.geoscene.cn/4.33/geoscene/copyright.txt for details.
v4.33.18 */
const m = p`@layer{geoscene-sketch{display:block}}`, y = g(n);
class w extends h {
  constructor() {
    super(), this.widget = y(this), this.viewModel = this.widget.viewModel, this._defaultGraphicsLayer = null, this.activeTool = this.widget.activeTool, this.autoDestroyDisabled = !1, this.availableCreateTools = this.widget.availableCreateTools, this.createGraphic = this.widget.createGraphic, this.creationMode = this.widget.creationMode, this.defaultCreateOptions = this.widget.defaultCreateOptions, this.defaultGraphicsLayerDisabled = !1, this.defaultUpdateOptions = this.widget.defaultUpdateOptions, this.hideCreateToolsCircle = this.widget.visibleElements.createTools.circle, this.hideCreateToolsPoint = this.widget.visibleElements.createTools.point, this.hideCreateToolsPolygon = this.widget.visibleElements.createTools.polygon, this.hideCreateToolsPolyline = this.widget.visibleElements.createTools.polyline, this.hideCreateToolsRectangle = this.widget.visibleElements.createTools.rectangle, this.hideDuplicateButton = this.widget.visibleElements.duplicateButton, this.hideDeleteButton = this.widget.visibleElements.deleteButton, this.hideSelectionCountLabel = this.widget.visibleElements.selectionCountLabel, this.hideLabelsToggle = this.widget.visibleElements.labelsToggle, this.hideSelectionToolsLassoSelection = this.widget.visibleElements.selectionTools["lasso-selection"], this.hideSelectionToolsRectangleSelection = this.widget.visibleElements.selectionTools["rectangle-selection"], this.hideSettingsMenu = this.widget.visibleElements.settingsMenu, this.hideSnappingControls = this.widget.visibleElements.snappingControls, this.hideSnappingControlsElementsEnabledToggle = this.widget.visibleElements.snappingControlsElements.enabledToggle, this.hideSnappingControlsElementsFeatureEnabledToggle = this.widget.visibleElements.snappingControlsElements.featureEnabledToggle, this.hideSnappingControlsElementsLayerList = this.widget.visibleElements.snappingControlsElements.layerList, this.hideSnappingControlsElementsSelfEnabledToggle = this.widget.visibleElements.snappingControlsElements.selfEnabledToggle, this.hideTooltipsToggle = this.widget.visibleElements.tooltipsToggle, this.hideUndoRedoMenu = this.widget.visibleElements.undoRedoMenu, this.icon = this.widget.icon, this.label = this.widget.label, this.labelOptions = this.widget.labelOptions, this.layer = this.widget.layer, this.layout = this.widget.layout, this.pointSymbol = this.viewModel.pointSymbol, this.polygonSymbol = this.viewModel.polygonSymbol, this.polylineSymbol = this.viewModel.polylineSymbol, this.position = "bottom-left", this.scale = this.widget.scale, this.toolbarKind = this.widget.toolbarKind, this.showSnappingControlsElementsHeader = this.widget.visibleElements.snappingControlsElements.header, this.snappingOptions = this.widget.snappingOptions, this.state = this.widget.state, this.tooltipOptions = this.widget.tooltipOptions, this.updateGraphics = this.widget.updateGraphics, this.geosceneCreate = i(() => this.widget, "create"), this.geosceneDelete = i(() => this.widget, "delete"), this.geoscenePropertyChange = o()("state"), this.geosceneReady = d(), this.geosceneRedo = i(() => this.widget, "redo"), this.geosceneUndo = i(() => this.widget, "undo"), this.geosceneUpdate = i(() => this.widget, "update"), this.listen("geosceneReady", this._geosceneReadyHandler);
  }
  static {
    this.properties = { activeTool: 3, autoDestroyDisabled: 5, availableCreateTools: 0, createGraphic: 0, creationMode: 1, defaultCreateOptions: 0, defaultGraphicsLayerDisabled: 5, defaultUpdateOptions: 0, hideCreateToolsCircle: 5, hideCreateToolsPoint: 5, hideCreateToolsPolygon: 5, hideCreateToolsPolyline: 5, hideCreateToolsRectangle: 5, hideDuplicateButton: 5, hideDeleteButton: 5, hideSelectionCountLabel: 5, hideLabelsToggle: 5, hideSelectionToolsLassoSelection: 5, hideSelectionToolsRectangleSelection: 5, hideSettingsMenu: 5, hideSnappingControls: 5, hideSnappingControlsElementsEnabledToggle: 5, hideSnappingControlsElementsFeatureEnabledToggle: 5, hideSnappingControlsElementsLayerList: 5, hideSnappingControlsElementsSelfEnabledToggle: 5, hideTooltipsToggle: 5, hideUndoRedoMenu: 5, icon: 1, label: 1, labelOptions: 0, layer: 0, layout: 1, pointSymbol: 0, polygonSymbol: 0, polylineSymbol: 0, position: 1, referenceElement: 1, scale: 1, toolbarKind: 1, showSnappingControlsElementsHeader: 5, snappingOptions: 0, state: 3, tooltipOptions: 0, updateGraphics: 0 };
  }
  static {
    this.shadowRootOptions = r;
  }
  static {
    this.styles = m;
  }
  async cancel() {
    this.widget?.cancel();
  }
  async complete() {
    this.widget?.complete();
  }
  async create(t, e) {
    await this.widget?.create(t, e);
  }
  async delete() {
    this.widget?.delete();
  }
  async destroy() {
    await this.manager.destroy();
  }
  async duplicate() {
    this.widget?.duplicate();
  }
  async redo() {
    this.widget?.redo();
  }
  async triggerUpdate(t, e) {
    this.widget?.update(t, e);
  }
  async undo() {
    this.widget?.undo();
  }
  _geosceneReadyHandler() {
    this.defaultGraphicsLayerDisabled || (this._defaultGraphicsLayer = new a({ title: "Sketch Layer" }), this.widget.layer = this._defaultGraphicsLayer, this.el.view?.map?.add(this.widget.layer), this.manager.onLifecycle(() => c(() => this.el.view?.map, (t, e) => {
      if (this.widget.layer !== this._defaultGraphicsLayer)
        return;
      const s = this._defaultGraphicsLayer;
      e?.allLayers.includes(s) && e.allLayers.remove(s), t?.add(s);
    })), this.manager.onDestroy(() => {
      this._defaultGraphicsLayer && this.el.view?.map?.allLayers.includes(this._defaultGraphicsLayer) && this.el.view?.map?.remove(this._defaultGraphicsLayer), this._defaultGraphicsLayer?.destroy(), this._defaultGraphicsLayer = null;
    }));
  }
}
l("geoscene-sketch", w);
export {
  w as GeosceneSketch
};