SourceTermAnalysisSystem_vue/node_modules/.vite/deps/chunk-FPVJKBJO.js
2026-05-15 10:22:44 +08:00

378 lines
8.7 KiB
JavaScript

import {
Tile_default
} from "./chunk-MESSQWK4.js";
import {
TileState_default
} from "./chunk-5D2XPBR2.js";
import {
createCanvasContext2D
} from "./chunk-YWIWRQT2.js";
import {
assert
} from "./chunk-QFCIXVZ3.js";
import {
Disposable_default
} from "./chunk-KJXIHBKT.js";
// node_modules/ol/structs/LRUCache.js
var LRUCache = class {
/**
* @param {number} [highWaterMark] High water mark.
*/
constructor(highWaterMark) {
this.highWaterMark = highWaterMark !== void 0 ? highWaterMark : 2048;
this.count_ = 0;
this.entries_ = {};
this.oldest_ = null;
this.newest_ = null;
}
deleteOldest() {
const entry = this.pop();
if (entry instanceof Disposable_default) {
entry.dispose();
}
}
/**
* @return {boolean} Can expire cache.
*/
canExpireCache() {
return this.highWaterMark > 0 && this.getCount() > this.highWaterMark;
}
/**
* Expire the cache. When the cache entry is a {@link module:ol/Disposable~Disposable},
* the entry will be disposed.
* @param {!Object<string, boolean>} [keep] Keys to keep. To be implemented by subclasses.
*/
expireCache(keep) {
while (this.canExpireCache()) {
this.deleteOldest();
}
}
/**
* FIXME empty description for jsdoc
*/
clear() {
while (this.oldest_) {
this.deleteOldest();
}
}
/**
* @param {string} key Key.
* @return {boolean} Contains key.
*/
containsKey(key) {
return this.entries_.hasOwnProperty(key);
}
/**
* @param {function(T, string, LRUCache<T>): ?} f The function
* to call for every entry from the oldest to the newer. This function takes
* 3 arguments (the entry value, the entry key and the LRUCache object).
* The return value is ignored.
*/
forEach(f) {
let entry = this.oldest_;
while (entry) {
f(entry.value_, entry.key_, this);
entry = entry.newer;
}
}
/**
* @param {string} key Key.
* @param {*} [options] Options (reserved for subclasses).
* @return {T} Value.
*/
get(key, options) {
const entry = this.entries_[key];
assert(
entry !== void 0,
"Tried to get a value for a key that does not exist in the cache"
);
if (entry === this.newest_) {
return entry.value_;
}
if (entry === this.oldest_) {
this.oldest_ = /** @type {Entry} */
this.oldest_.newer;
this.oldest_.older = null;
} else {
entry.newer.older = entry.older;
entry.older.newer = entry.newer;
}
entry.newer = null;
entry.older = this.newest_;
this.newest_.newer = entry;
this.newest_ = entry;
return entry.value_;
}
/**
* Remove an entry from the cache.
* @param {string} key The entry key.
* @return {T} The removed entry.
*/
remove(key) {
const entry = this.entries_[key];
assert(
entry !== void 0,
"Tried to get a value for a key that does not exist in the cache"
);
if (entry === this.newest_) {
this.newest_ = /** @type {Entry} */
entry.older;
if (this.newest_) {
this.newest_.newer = null;
}
} else if (entry === this.oldest_) {
this.oldest_ = /** @type {Entry} */
entry.newer;
if (this.oldest_) {
this.oldest_.older = null;
}
} else {
entry.newer.older = entry.older;
entry.older.newer = entry.newer;
}
delete this.entries_[key];
--this.count_;
return entry.value_;
}
/**
* @return {number} Count.
*/
getCount() {
return this.count_;
}
/**
* @return {Array<string>} Keys.
*/
getKeys() {
const keys = new Array(this.count_);
let i = 0;
let entry;
for (entry = this.newest_; entry; entry = entry.older) {
keys[i++] = entry.key_;
}
return keys;
}
/**
* @return {Array<T>} Values.
*/
getValues() {
const values = new Array(this.count_);
let i = 0;
let entry;
for (entry = this.newest_; entry; entry = entry.older) {
values[i++] = entry.value_;
}
return values;
}
/**
* @return {T} Last value.
*/
peekLast() {
return this.oldest_.value_;
}
/**
* @return {string} Last key.
*/
peekLastKey() {
return this.oldest_.key_;
}
/**
* Get the key of the newest item in the cache. Throws if the cache is empty.
* @return {string} The newest key.
*/
peekFirstKey() {
return this.newest_.key_;
}
/**
* Return an entry without updating least recently used time.
* @param {string} key Key.
* @return {T|undefined} Value.
*/
peek(key) {
var _a;
return (_a = this.entries_[key]) == null ? void 0 : _a.value_;
}
/**
* @return {T} value Value.
*/
pop() {
const entry = this.oldest_;
delete this.entries_[entry.key_];
if (entry.newer) {
entry.newer.older = null;
}
this.oldest_ = /** @type {Entry} */
entry.newer;
if (!this.oldest_) {
this.newest_ = null;
}
--this.count_;
return entry.value_;
}
/**
* @param {string} key Key.
* @param {T} value Value.
*/
replace(key, value) {
this.get(key);
this.entries_[key].value_ = value;
}
/**
* @param {string} key Key.
* @param {T} value Value.
*/
set(key, value) {
assert(
!(key in this.entries_),
"Tried to set a value for a key that is used already"
);
const entry = {
key_: key,
newer: null,
older: this.newest_,
value_: value
};
if (!this.newest_) {
this.oldest_ = entry;
} else {
this.newest_.newer = entry;
}
this.newest_ = entry;
this.entries_[key] = entry;
++this.count_;
}
/**
* Set a maximum number of entries for the cache.
* @param {number} size Cache size.
* @api
*/
setSize(size) {
this.highWaterMark = size;
}
};
var LRUCache_default = LRUCache;
// node_modules/ol/DataTile.js
function asImageLike(data) {
return data instanceof Image || data instanceof HTMLCanvasElement || data instanceof HTMLVideoElement || data instanceof ImageBitmap ? data : null;
}
function asArrayLike(data) {
return data instanceof Uint8Array || data instanceof Uint8ClampedArray || data instanceof Float32Array || data instanceof DataView ? data : null;
}
var disposedError = new Error("disposed");
var sharedContext = null;
function toArray(image) {
if (!sharedContext) {
sharedContext = createCanvasContext2D(
image.width,
image.height,
void 0,
{ willReadFrequently: true }
);
}
const canvas = sharedContext.canvas;
const width = image.width;
if (canvas.width !== width) {
canvas.width = width;
}
const height = image.height;
if (canvas.height !== height) {
canvas.height = height;
}
sharedContext.clearRect(0, 0, width, height);
sharedContext.drawImage(image, 0, 0);
return sharedContext.getImageData(0, 0, width, height).data;
}
var defaultSize = [256, 256];
var DataTile = class extends Tile_default {
/**
* @param {Options} options Tile options.
*/
constructor(options) {
const state = TileState_default.IDLE;
super(options.tileCoord, state, {
transition: options.transition,
interpolate: options.interpolate
});
this.loader_ = options.loader;
this.data_ = null;
this.error_ = null;
this.size_ = options.size || null;
this.controller_ = options.controller || null;
}
/**
* Get the tile size.
* @return {import('./size.js').Size} Tile size.
*/
getSize() {
if (this.size_) {
return this.size_;
}
const imageData = asImageLike(this.data_);
if (imageData) {
return [imageData.width, imageData.height];
}
return defaultSize;
}
/**
* Get the data for the tile.
* @return {Data} Tile data.
* @api
*/
getData() {
return this.data_;
}
/**
* Get any loading error.
* @return {Error} Loading error.
* @api
*/
getError() {
return this.error_;
}
/**
* Load the tile data.
* @api
* @override
*/
load() {
if (this.state !== TileState_default.IDLE && this.state !== TileState_default.ERROR) {
return;
}
this.state = TileState_default.LOADING;
this.changed();
const self = this;
this.loader_().then(function(data) {
self.data_ = data;
self.state = TileState_default.LOADED;
self.changed();
}).catch(function(error) {
self.error_ = error;
self.state = TileState_default.ERROR;
self.changed();
});
}
/**
* Clean up.
* @override
*/
disposeInternal() {
if (this.controller_) {
this.controller_.abort(disposedError);
this.controller_ = null;
}
super.disposeInternal();
}
};
var DataTile_default = DataTile;
export {
asImageLike,
asArrayLike,
toArray,
DataTile_default,
LRUCache_default
};
//# sourceMappingURL=chunk-FPVJKBJO.js.map