import { o, y as y2 } from "./chunk-SBZKLPXX.js"; import { i as i2 } from "./chunk-54V4THCX.js"; import { oe } from "./chunk-DTSCAH2R.js"; import "./chunk-B5WNDDCF.js"; import "./chunk-DXEPL3XQ.js"; import "./chunk-E5TKVDJT.js"; import "./chunk-XYIYXU3I.js"; import "./chunk-T6DJ6UAT.js"; import "./chunk-WOGDHLUJ.js"; import { a as a2 } from "./chunk-BFF4N4R7.js"; import { R, S, T } from "./chunk-O6KMIRUU.js"; import { c, n as n2 } from "./chunk-264YGWEE.js"; import { u, y as y3 } from "./chunk-KUAEOLV3.js"; import "./chunk-ZLQP3WDC.js"; import "./chunk-WCLXPK5D.js"; import "./chunk-JBMHQ5RK.js"; import { b, d, g } from "./chunk-5PPOX2P4.js"; import "./chunk-KHMWUB3W.js"; import "./chunk-LDMWL65U.js"; import { x } from "./chunk-WBWQJQK4.js"; import "./chunk-A22ACVMF.js"; import { $, C } from "./chunk-I623MZCZ.js"; import "./chunk-TDS6IBMU.js"; import "./chunk-DBT4KOKX.js"; import "./chunk-2GP5D74I.js"; import "./chunk-ZELEU5PN.js"; import "./chunk-O7E4VYJT.js"; import "./chunk-AIG57VB7.js"; import "./chunk-PHAKVYRM.js"; import "./chunk-IDINBHDV.js"; import "./chunk-6LE4RPMZ.js"; import "./chunk-67RFR4NT.js"; import "./chunk-WPDBODJM.js"; import "./chunk-5IVP3KUS.js"; import "./chunk-JXYBFGFY.js"; import "./chunk-EPMXCACW.js"; import "./chunk-UCPKJYXN.js"; import "./chunk-KFLNKWNF.js"; import "./chunk-R24MO4IV.js"; import "./chunk-YQBYWPBD.js"; import "./chunk-UWKVAZQ6.js"; import "./chunk-XBFCIW4K.js"; import "./chunk-T2SKWJGU.js"; import "./chunk-UO3LS2M5.js"; import { E } from "./chunk-H2VOWDMO.js"; import "./chunk-QISOH77W.js"; import "./chunk-4HL6BBWO.js"; import "./chunk-KUO7OCMN.js"; import "./chunk-XO5VJRK4.js"; import "./chunk-ST53DRNI.js"; import "./chunk-3WXSWAUV.js"; import "./chunk-27YO3FKC.js"; import "./chunk-EQNT4A7P.js"; import "./chunk-4OM3EX6P.js"; import { D, G, L as L2, P, V, Y, f as f2 } from "./chunk-3OFVLRSL.js"; import "./chunk-DMVKVC5I.js"; import "./chunk-VEJPYAE4.js"; import "./chunk-UMUHMVL4.js"; import "./chunk-FZSI6IGI.js"; import "./chunk-YFDOPEEZ.js"; import { i } from "./chunk-BVA3U6FJ.js"; import "./chunk-IQBIGNPU.js"; import "./chunk-K7B6OWCU.js"; import "./chunk-LXOC7SMQ.js"; import "./chunk-QU433TMZ.js"; import "./chunk-L5DZVCCW.js"; import "./chunk-WNPL3C7R.js"; import "./chunk-E7ZLMIQ7.js"; import "./chunk-JEA4MMTV.js"; import "./chunk-RG3AHHRL.js"; import "./chunk-XHRNCFJT.js"; import "./chunk-UDYHZLTE.js"; import "./chunk-QC7NCR5N.js"; import "./chunk-VQXMCZYH.js"; import "./chunk-JQUWFKNU.js"; import "./chunk-RWQH5X3O.js"; import "./chunk-6334AFGG.js"; import "./chunk-NLLFSKB2.js"; import "./chunk-CC74Y7ET.js"; import "./chunk-TFHLTN6F.js"; import "./chunk-O3JQY77G.js"; import "./chunk-E3G7BRZB.js"; import "./chunk-JKFWEHNK.js"; import "./chunk-IIAN3QNN.js"; import { rn, tn } from "./chunk-P24XEEHY.js"; import "./chunk-WOXHUQGM.js"; import { f } from "./chunk-FMPQIGFA.js"; import "./chunk-EDHROVWI.js"; import "./chunk-3IRT3YKJ.js"; import "./chunk-SAJAEMIJ.js"; import "./chunk-TU7WVKU4.js"; import "./chunk-JAUFBT5U.js"; import "./chunk-RHFU6KWO.js"; import "./chunk-3FNKD2EB.js"; import "./chunk-ZOO4I2U4.js"; import "./chunk-JPUFJK2B.js"; import "./chunk-HZ2WKB3G.js"; import "./chunk-3HCJD762.js"; import "./chunk-RVCE264D.js"; import "./chunk-HKJ7X3BD.js"; import "./chunk-Y74D3LKQ.js"; import "./chunk-PK4W65H4.js"; import "./chunk-7C23ILQ4.js"; import "./chunk-P6VVVEX6.js"; import "./chunk-3Z755LKF.js"; import "./chunk-LTZ5XXDV.js"; import "./chunk-IEU3AM37.js"; import "./chunk-SKKBVHTF.js"; import "./chunk-DLMAGHHC.js"; import "./chunk-JOYXMSKE.js"; import "./chunk-YZVAB3DF.js"; import "./chunk-JLYTER4T.js"; import "./chunk-CRHRHOXH.js"; import "./chunk-ZSW35JPD.js"; import "./chunk-JLSNMUQJ.js"; import "./chunk-ECY35CJI.js"; import "./chunk-PT62335L.js"; import "./chunk-JGBXYDGB.js"; import "./chunk-QEWF7QPH.js"; import "./chunk-PJNBFKPF.js"; import "./chunk-C7742RNZ.js"; import "./chunk-FNA5GLRW.js"; import "./chunk-MCWCB5IY.js"; import "./chunk-TV3CFJQR.js"; import { l } from "./chunk-TJV6ODRM.js"; import "./chunk-3LVSQLWJ.js"; import "./chunk-4ONPMX2F.js"; import "./chunk-CRGY2SDS.js"; import "./chunk-4T5ZGMEN.js"; import "./chunk-3WQOA5CB.js"; import "./chunk-FZQZIM7U.js"; import "./chunk-CZBRZ6SU.js"; import "./chunk-VGWC3IKZ.js"; import "./chunk-2H5MD622.js"; import "./chunk-3RSFVUKZ.js"; import "./chunk-UVVU4UUO.js"; import "./chunk-O6VYMEIX.js"; import "./chunk-X4SA4ELJ.js"; import "./chunk-5N7JLUJJ.js"; import "./chunk-ZAY3CMAZ.js"; import "./chunk-P3XKUGLS.js"; import "./chunk-LU5IJZB4.js"; import "./chunk-7IBV2TRE.js"; import "./chunk-ZLNEXZAN.js"; import "./chunk-5UVJ64RB.js"; import "./chunk-SFEFRQCL.js"; import "./chunk-3GZSQU56.js"; import "./chunk-ZYRIJWLX.js"; import "./chunk-RYY6632W.js"; import "./chunk-DW42UVIT.js"; import "./chunk-YAEIHDJH.js"; import "./chunk-TJNOJH33.js"; import "./chunk-OSHI574D.js"; import "./chunk-ETGAZ7LF.js"; import "./chunk-75U5LM2V.js"; import "./chunk-RMDDCMKS.js"; import "./chunk-VCH45Q2I.js"; import { j } from "./chunk-LBW34VZ2.js"; import "./chunk-GSSTTHIT.js"; import "./chunk-YFSLJIO4.js"; import "./chunk-IM3LVQXV.js"; import "./chunk-55RWC67C.js"; import "./chunk-HZRKBTHJ.js"; import { U } from "./chunk-DVUG3KID.js"; import { a } from "./chunk-FWSQEIAR.js"; import { I, L } from "./chunk-VEGAOVMY.js"; import { w, w2 } from "./chunk-6T6G6LCQ.js"; import "./chunk-YEJL5NEF.js"; import { k2 as k } from "./chunk-PQFTYGF5.js"; import { e, n5 as n, y3 as y } from "./chunk-2Z2TG5CU.js"; import "./chunk-6KZ2LTDA.js"; import "./chunk-U2XHEJM7.js"; import "./chunk-SQOPWYIT.js"; import "./chunk-V6P2MAQQ.js"; import "./chunk-E5O6P5I2.js"; import "./chunk-SPWQ3AWG.js"; import "./chunk-2TIUKVZN.js"; import { r, t } from "./chunk-YXWMMD76.js"; import "./chunk-S5KM4IGW.js"; // node_modules/@arcgis/core/views/support/imageReprojection.js var b2 = class { constructor(t2) { if (t2) this._ownsRctx = false, this._rctx = t2; else { if (b2._instance) return b2._instanceRefCount++, b2._instance; b2._instanceRefCount = 1, b2._instance = this, this._ownsRctx = true; const t3 = document.createElement("canvas").getContext("webgl"); t3.getExtension("OES_texture_float"), this._rctx = new y2(t3, {}); } const e2 = { applyProjection: true, bilinear: false, bicubic: false }, r2 = o("raster/reproject", "raster/reproject", /* @__PURE__ */ new Map([["a_position", 0]]), e2); this._program = this._rctx.programCache.acquire(r2.shaders.vertexShader, r2.shaders.fragmentShader, r2.attributes), this._rctx.useProgram(this._program), this._program.setUniform1f("u_opacity", 1), this._program.setUniform1i("u_image", 0), this._program.setUniform1i("u_flipY", 0), this._program.setUniform1i("u_transformGrid", 1), this._quad = new n2(this._rctx, [0, 0, 1, 0, 0, 1, 1, 1]); } reprojectTexture(t2, s, n3 = false) { const o2 = rn(t2.extent, s), m = new w({ x: (t2.extent.xmax - t2.extent.xmin) / t2.texture.descriptor.width, y: (t2.extent.ymax - t2.extent.ymin) / t2.texture.descriptor.height, spatialReference: t2.extent.spatialReference }), { x: l2, y: b3 } = C(m, s, t2.extent); let D2 = (l2 + b3) / 2; const T2 = Math.round((o2.xmax - o2.xmin) / D2), j3 = Math.round((o2.ymax - o2.ymin) / D2); D2 = (o2.width / T2 + o2.height / j3) / 2; const E2 = new w({ x: D2, y: D2, spatialReference: o2.spatialReference }), R2 = $({ projectedExtent: o2, srcBufferExtent: t2.extent, pixelSize: E2, hasWrapAround: true, spacing: [16, 16] }), C3 = c(this._rctx, R2), y4 = new E(this._rctx, { width: T2, height: j3, pixelFormat: P.RGBA, dataType: G.UNSIGNED_BYTE, wrapMode: D.CLAMP_TO_EDGE, samplingMode: L2.LINEAR, hasMipmap: false }), M = new x(this._rctx, { colorTarget: Y.TEXTURE, depthStencilTarget: V.NONE, width: T2, height: j3 }, y4); if (this._rctx.bindFramebuffer(M), this._rctx.setViewport(0, 0, T2, j3), this._rctx.useProgram(this._program), this._rctx.bindTexture(t2.texture, 0), this._rctx.bindTexture(C3, 1), this._quad.bind(), this._program.setUniform2f("u_srcImageSize", t2.texture.descriptor.width, t2.texture.descriptor.height), this._program.setUniform2fv("u_transformSpacing", R2.spacing), this._program.setUniform2fv("u_transformGridSize", R2.size), this._program.setUniform2f("u_targetImageSize", T2, j3), this._quad.draw(), this._quad.unbind(), this._rctx.useProgram(null), this._rctx.bindFramebuffer(null), C3.dispose(), n3) { const t3 = new ImageData(M.descriptor.width, M.descriptor.height); return M.readPixels(0, 0, M.descriptor.width, M.descriptor.height, P.RGBA, G.UNSIGNED_BYTE, t3.data), M.detachColorTexture(f2.COLOR_ATTACHMENT0), M.dispose(), { texture: y4, extent: o2, imageData: t3 }; } return M.detachColorTexture(f2.COLOR_ATTACHMENT0), M.dispose(), { texture: y4, extent: o2 }; } reprojectBitmapData(t2, e2) { const r2 = S(t2.bitmapData) ? T(t2.bitmapData) : t2.bitmapData, i3 = new E(this._rctx, { width: t2.bitmapData.width, height: t2.bitmapData.height, pixelFormat: P.RGBA, dataType: G.UNSIGNED_BYTE, wrapMode: D.CLAMP_TO_EDGE, samplingMode: L2.LINEAR, hasMipmap: false }, r2), a3 = this.reprojectTexture({ texture: i3, extent: t2.extent }, e2, true); a3.texture.dispose(); const o2 = document.createElement("canvas"); o2.width = a3.imageData.width, o2.height = a3.imageData.height; return o2.getContext("2d").putImageData(a3.imageData, 0, 0), { bitmapData: o2, extent: a3.extent }; } async loadAndReprojectBitmapData(e2, r2, i3) { const a3 = (await U(e2, { responseType: "image" })).data, s = document.createElement("canvas"); s.width = a3.width, s.height = a3.height; const n3 = s.getContext("2d"); n3.drawImage(a3, 0, 0); const o2 = n3.getImageData(0, 0, s.width, s.height); if (r2.spatialReference.equals(i3)) return { bitmapData: o2, extent: r2 }; const m = this.reprojectBitmapData({ bitmapData: o2, extent: r2 }, i3); return { bitmapData: m.bitmapData, extent: m.extent }; } destroy() { this._ownsRctx ? (b2._instanceRefCount--, 0 === b2._instanceRefCount && (this._quad.dispose(), this._program.dispose(), this._rctx.dispose(), b2._instance = null)) : (this._quad.dispose(), this._program.dispose()); } }; b2._instanceRefCount = 0; // node_modules/@arcgis/core/views/2d/layers/KMLLayerView2D.js var C2 = class { constructor() { this.allSublayers = /* @__PURE__ */ new Map(), this.allPoints = [], this.allPolylines = [], this.allPolygons = [], this.allMapImages = []; } }; var j2 = class extends y3(u) { constructor() { super(...arguments), this._bitmapIndex = /* @__PURE__ */ new Map(), this._mapImageContainer = new a2(), this._kmlVisualData = new C2(), this.allVisiblePoints = new i(), this.allVisiblePolylines = new i(), this.allVisiblePolygons = new i(), this.allVisibleMapImages = new j(); } async hitTest(e2, i3) { var _a, _b, _c; const t2 = this.layer; return [(_a = this._pointsView) == null ? void 0 : _a.hitTest(e2), (_b = this._polylinesView) == null ? void 0 : _b.hitTest(e2), (_c = this._polygonsView) == null ? void 0 : _c.hitTest(e2)].flat().filter(Boolean).map((i4) => (i4.layer = t2, i4.sourceLayer = t2, { type: "graphic", graphic: i4, layer: t2, mapPoint: e2 })); } update(e2) { this._polygonsView && this._polygonsView.processUpdate(e2), this._polylinesView && this._polylinesView.processUpdate(e2), this._pointsView && this._pointsView.processUpdate(e2); } attach() { this._fetchController = new AbortController(), this.container.addChild(this._mapImageContainer), this._polygonsView = new oe({ view: this.view, graphics: this.allVisiblePolygons, requestUpdateCallback: () => this.requestUpdate(), container: new i2(this.view.featuresTilingScheme) }), this.container.addChild(this._polygonsView.container), this._polylinesView = new oe({ view: this.view, graphics: this.allVisiblePolylines, requestUpdateCallback: () => this.requestUpdate(), container: new i2(this.view.featuresTilingScheme) }), this.container.addChild(this._polylinesView.container), this._pointsView = new oe({ view: this.view, graphics: this.allVisiblePoints, requestUpdateCallback: () => this.requestUpdate(), container: new i2(this.view.featuresTilingScheme) }), this.container.addChild(this._pointsView.container), this.handles.add([this.allVisibleMapImages.on("change", (e2) => { e2.added.forEach((e3) => this._addMapImage(e3)), e2.removed.forEach((e3) => this._removeMapImage(e3)); }), l(() => this.layer.visibleSublayers, (e2) => { for (const [i3, t2] of this._kmlVisualData.allSublayers) t2.visibility = 0; for (const i3 of e2) { const e3 = this._kmlVisualData.allSublayers.get(i3.id); e3 && (e3.visibility = 1); } this._refreshCollections(); })]), this.updatingHandles.addPromise(this._fetchService(this._fetchController.signal)), this._imageReprojector = new b2(); } detach() { this._fetchController.abort(), this._fetchController = null, this._mapImageContainer.removeAllChildren(), this.container.removeAllChildren(), this._bitmapIndex.clear(), this._polygonsView && (this._polygonsView.destroy(), this._polygonsView = null), this._polylinesView && (this._polylinesView.destroy(), this._polylinesView = null), this._pointsView && (this._pointsView.destroy(), this._pointsView = null), this._imageReprojector && (this._imageReprojector.destroy(), this._imageReprojector = null); } moveStart() { } viewChange() { this._polygonsView.viewChange(), this._polylinesView.viewChange(), this._pointsView.viewChange(); } moveEnd() { } isUpdating() { return this._pointsView.updating || this._polygonsView.updating || this._polylinesView.updating; } _addMapImage(e2) { (this.view.spatialReference.isWGS84 || this.view.spatialReference.isWebMercator) && this._imageReprojector.loadAndReprojectBitmapData(e2.href, w2.fromJSON(e2.extent), this.view.spatialReference).then((i3) => { const t2 = new R(i3.bitmapData, { immutable: false, requestRenderOnSourceChangedEnabled: true }); t2.x = i3.extent.xmin, t2.y = i3.extent.ymax, t2.resolution = i3.extent.width / i3.bitmapData.width, t2.rotation = e2.rotation, this._mapImageContainer.addChild(t2), this._bitmapIndex.set(e2, t2); }); } async _getViewDependentUrl(e2, t2) { const { viewFormat: o2, viewBoundScale: n3, httpQuery: h } = e2; if (r(o2)) { if (t(t2)) throw new Error("Loading this network link requires a view state."); let y4; if (await tn(), r(n3) && 1 !== n3) { const e3 = new w2(t2.extent); e3.expand(n3), y4 = e3; } else y4 = t2.extent; y4 = rn(y4, k.WGS84); const g2 = rn(y4, k.WebMercator), w3 = y4.xmin, _ = y4.xmax, b3 = y4.ymin, V2 = y4.ymax, f3 = t2.size[0] * t2.pixelRatio, v = t2.size[1] * t2.pixelRatio, S2 = Math.max(g2.width, g2.height), I2 = { "[bboxWest]": w3.toString(), "[bboxEast]": _.toString(), "[bboxSouth]": b3.toString(), "[bboxNorth]": V2.toString(), "[lookatLon]": y4.center.x.toString(), "[lookatLat]": y4.center.y.toString(), "[lookatRange]": S2.toString(), "[lookatTilt]": "0", "[lookatHeading]": t2.rotation.toString(), "[lookatTerrainLon]": y4.center.x.toString(), "[lookatTerrainLat]": y4.center.y.toString(), "[lookatTerrainAlt]": "0", "[cameraLon]": y4.center.x.toString(), "[cameraLat]": y4.center.y.toString(), "[cameraAlt]": S2.toString(), "[horizFov]": "60", "[vertFov]": "60", "[horizPixels]": f3.toString(), "[vertPixels]": v.toString(), "[terrainEnabled]": "0", "[clientVersion]": a, "[kmlVersion]": "2.2", "[clientName]": "ArcGIS API for JavaScript", "[language]": "en-US" }, x2 = (e3) => { for (const i3 in e3) for (const t3 in I2) e3[i3] = e3[i3].replace(t3, I2[t3]); }, C3 = L(o2); x2(C3); let j3 = {}; r(h) && (j3 = L(h), x2(j3)); const k3 = f(e2.href); k3.query = { ...k3.query, ...C3, ...j3 }; return `${k3.path}?${I(C3)}`; } return e2.href; } async _fetchService(e2) { const i3 = new C2(); await this._loadVisualData(this.layer.url, i3, e2), this._kmlVisualData = i3, this._refreshCollections(); } _refreshCollections() { this.allVisiblePoints.removeAll(), this.allVisiblePolylines.removeAll(), this.allVisiblePolygons.removeAll(), this.allVisibleMapImages.removeAll(), this.allVisiblePoints.addMany(this._kmlVisualData.allPoints.filter((e2) => this._isSublayerVisible(e2.sublayerId)).map(({ item: e2 }) => e2)), this.allVisiblePolylines.addMany(this._kmlVisualData.allPolylines.filter((e2) => this._isSublayerVisible(e2.sublayerId)).map(({ item: e2 }) => e2)), this.allVisiblePolygons.addMany(this._kmlVisualData.allPolygons.filter((e2) => this._isSublayerVisible(e2.sublayerId)).map(({ item: e2 }) => e2)), this.allVisibleMapImages.addMany(this._kmlVisualData.allMapImages.filter((e2) => this._isSublayerVisible(e2.sublayerId)).map(({ item: e2 }) => e2)); } _isSublayerVisible(e2) { const i3 = this._kmlVisualData.allSublayers.get(e2); return !!i3.visibility && (-1 === i3.parentFolderId || this._isSublayerVisible(i3.parentFolderId)); } _loadVisualData(e2, i3, t2) { return this._fetchParsedKML(e2, t2).then(async (e3) => { for (const s of e3.sublayers) { i3.allSublayers.set(s.id, s); const e4 = s.points ? await b(s.points) : [], a3 = s.polylines ? await b(s.polylines) : [], o2 = s.polygons ? await b(s.polygons) : [], l2 = s.mapImages || []; if (i3.allPoints.push(...e4.map((e5) => ({ item: e5, sublayerId: s.id }))), i3.allPolylines.push(...a3.map((e5) => ({ item: e5, sublayerId: s.id }))), i3.allPolygons.push(...o2.map((e5) => ({ item: e5, sublayerId: s.id }))), i3.allMapImages.push(...l2.map((e5) => ({ item: e5, sublayerId: s.id }))), s.networkLink) { const e5 = await this._getViewDependentUrl(s.networkLink, this.view.state); await this._loadVisualData(e5, i3, t2); } } }); } _fetchParsedKML(e2, i3) { return g(e2, this.layer.spatialReference, this.layer.refreshInterval, i3).then((e3) => d(e3.data)); } _removeMapImage(e2) { const i3 = this._bitmapIndex.get(e2); i3 && (this._mapImageContainer.removeChild(i3), this._bitmapIndex.delete(e2)); } }; e([y()], j2.prototype, "_pointsView", void 0), e([y()], j2.prototype, "_polylinesView", void 0), e([y()], j2.prototype, "_polygonsView", void 0), e([y()], j2.prototype, "updating", void 0), j2 = e([n("esri.views.2d.layers.KMLLayerView2D")], j2); var k2 = j2; export { k2 as default }; //# sourceMappingURL=KMLLayerView2D-I5FS4ELA.js.map