UNPKG

@doegis/core

Version:

DOE GIS API

3 lines (1 loc) 1.09 kB
import{isSome as e}from"../../core/maybe.js";import{createResolver as r}from"../../core/promiseUtils.js";import{whenOnce as i}from"../../core/reactiveUtils.js";import{debug as t}from"../../core/scheduling.js";import{dispatch as n}from"../../core/accessorSupport/watch.js";function o(e){switch(e.type){case"2d":return a(e);case"3d":if(e)return n(),t.dispatch(),i((()=>!e.updating))}return Promise.resolve()}function a(i){const o=r();let a=performance.now();const s=()=>{if(n(),t.dispatch(),!i.ready||i.updating||!i.stationary||i.rendering||!0===i.layerViewManager?.updating||!0===i.labelManager?.updating||!0===i.graphicsView?.updating||!0===i.magnifier?.visible&&e(i.magnifier?.position)&&(!i._magnifierView?.mask||!i._magnifierView?.overlay)||i.allLayerViews.some((e=>!0===e.updating)))return!0;return!!i.allLayerViews.find((e=>{const r=!e.isFulfilled(),i=e.updating&&!e.suspended;return r||i}))};function m(){if(!i.destroyed&&s())a=null,setTimeout(m,16);else{a||(a=performance.now());performance.now()-a>=200?o():setTimeout(m,16)}}return setTimeout(m,16),o.promise}export{o as default};