@doegis/core
Version:
DOE GIS API
3 lines (1 loc) • 857 B
JavaScript
import{makeHandle as e}from"../../../core/handleUtils.js";import{nextTick as n}from"../../../core/nextTick.js";import{makeAllLayerSnappingOptions as r}from"./allLayerSnapping.js";import{FeatureSnappingEngine as o}from"./FeatureSnappingEngine.js";import{SnappingManager as t}from"./SnappingManager.js";const i=new Map;function a(n){if(!i.has(n)){const e=r(n,{distance:10}),o=s(n,e.options);i.set(n,{referenceCount:0,snappingManager:o,remove:()=>{e.remove(),o.destroy()}})}const o=i.get(n);o.referenceCount++;const t=e((()=>p(n,o)));return{snappingManager:o.snappingManager,...t}}function p(e,r){r.referenceCount--,r.referenceCount>0||n((()=>{0===r.referenceCount&&(r.remove(),i.delete(e))}))}function s(e,n){return new t({view:e,options:n,snappingEnginesFactory:(n,r)=>[new o({view:e,spatialReference:e.spatialReference,options:r})]})}export{a as acquire};