maplibre-gl-layers 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,11 +1,11 @@
1
1
  /*!
2
2
  * name: maplibre-gl-layers
3
- * version: 0.2.0
3
+ * version: 0.3.0
4
4
  * description: MapLibre's layer extension library enabling the display, movement, and modification of large numbers of dynamic sprite images
5
5
  * author: Kouji Matsui (@kekyo@mi.kekyo.net)
6
6
  * license: MIT
7
7
  * repository.url: https://github.com/kekyo/maplibre-gl-layers.git
8
- * git.commit.hash: 4fe3389ad068a5950d4f01e01ec9d3b34c049fb2
8
+ * git.commit.hash: fd90d1fd66e4ca9c0defa49e68ecaeb9c14fbd06
9
9
  */
10
10
 
11
11
  import { Map as MapLibreMap } from 'maplibre-gl';
package/dist/easing.d.ts CHANGED
@@ -1,11 +1,11 @@
1
1
  /*!
2
2
  * name: maplibre-gl-layers
3
- * version: 0.2.0
3
+ * version: 0.3.0
4
4
  * description: MapLibre's layer extension library enabling the display, movement, and modification of large numbers of dynamic sprite images
5
5
  * author: Kouji Matsui (@kekyo@mi.kekyo.net)
6
6
  * license: MIT
7
7
  * repository.url: https://github.com/kekyo/maplibre-gl-layers.git
8
- * git.commit.hash: 4fe3389ad068a5950d4f01e01ec9d3b34c049fb2
8
+ * git.commit.hash: fd90d1fd66e4ca9c0defa49e68ecaeb9c14fbd06
9
9
  */
10
10
 
11
11
  import { EasingFunction } from './types';
package/dist/index.cjs CHANGED
@@ -1,12 +1,12 @@
1
1
  "use strict";
2
2
  /*!
3
3
  * name: maplibre-gl-layers
4
- * version: 0.2.0
4
+ * version: 0.3.0
5
5
  * description: MapLibre's layer extension library enabling the display, movement, and modification of large numbers of dynamic sprite images
6
6
  * author: Kouji Matsui (@kekyo@mi.kekyo.net)
7
7
  * license: MIT
8
8
  * repository.url: https://github.com/kekyo/maplibre-gl-layers.git
9
- * git.commit.hash: 4fe3389ad068a5950d4f01e01ec9d3b34c049fb2
9
+ * git.commit.hash: fd90d1fd66e4ca9c0defa49e68ecaeb9c14fbd06
10
10
  */
11
11
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
12
12
  var maplibreGl$1 = { exports: {} };
@@ -24265,6 +24265,124 @@ const createSpriteLayer = (options) => {
24265
24265
  }
24266
24266
  return updatedCount;
24267
24267
  };
24268
+ const mutateSprites = (sourceItems, mutator) => {
24269
+ if (sourceItems.length === 0) {
24270
+ return 0;
24271
+ }
24272
+ let changedCount = 0;
24273
+ let isRequiredRender = false;
24274
+ let currentSprite = void 0;
24275
+ let didMutateImages = false;
24276
+ const operationResult = {
24277
+ isUpdated: false
24278
+ };
24279
+ const updateObject = {
24280
+ getImageIndexMap: () => {
24281
+ const map2 = /* @__PURE__ */ new Map();
24282
+ currentSprite.images.forEach((inner, subLayer) => {
24283
+ map2.set(subLayer, new Set(inner.keys()));
24284
+ });
24285
+ return map2;
24286
+ },
24287
+ addImage: (subLayer, order, imageInit) => {
24288
+ const added = addSpriteImageInternal(
24289
+ currentSprite,
24290
+ subLayer,
24291
+ order,
24292
+ imageInit,
24293
+ operationResult
24294
+ );
24295
+ if (added) {
24296
+ didMutateImages = true;
24297
+ }
24298
+ return added;
24299
+ },
24300
+ updateImage: (subLayer, order, imageUpdate) => {
24301
+ const updated = updateSpriteImageInternal(
24302
+ currentSprite,
24303
+ subLayer,
24304
+ order,
24305
+ imageUpdate,
24306
+ operationResult
24307
+ );
24308
+ if (updated) {
24309
+ didMutateImages = true;
24310
+ }
24311
+ return updated;
24312
+ },
24313
+ removeImage: (subLayer, order) => {
24314
+ const removed = removeSpriteImageInternal(
24315
+ currentSprite,
24316
+ subLayer,
24317
+ order,
24318
+ operationResult
24319
+ );
24320
+ if (removed) {
24321
+ didMutateImages = true;
24322
+ }
24323
+ return removed;
24324
+ }
24325
+ };
24326
+ for (const sourceItem of sourceItems) {
24327
+ const spriteId = sourceItem.spriteId;
24328
+ const sprite = sprites.get(spriteId);
24329
+ if (!sprite) {
24330
+ const init = mutator.add(sourceItem);
24331
+ if (!init) {
24332
+ continue;
24333
+ }
24334
+ if (addSpriteInternal(spriteId, init)) {
24335
+ changedCount++;
24336
+ isRequiredRender = true;
24337
+ }
24338
+ continue;
24339
+ }
24340
+ currentSprite = sprite;
24341
+ operationResult.isUpdated = false;
24342
+ didMutateImages = false;
24343
+ const decision = mutator.modify(
24344
+ sourceItem,
24345
+ sprite,
24346
+ updateObject
24347
+ );
24348
+ if (decision === "remove") {
24349
+ if (removeSpriteInternal(spriteId)) {
24350
+ changedCount++;
24351
+ isRequiredRender = true;
24352
+ }
24353
+ } else {
24354
+ const updateResult = updateSpriteInternal(spriteId, updateObject);
24355
+ let spriteChanged = false;
24356
+ switch (updateResult) {
24357
+ case "updated":
24358
+ spriteChanged = true;
24359
+ break;
24360
+ case "isRequiredRender":
24361
+ spriteChanged = true;
24362
+ isRequiredRender = true;
24363
+ break;
24364
+ }
24365
+ if (didMutateImages) {
24366
+ spriteChanged = true;
24367
+ isRequiredRender = true;
24368
+ }
24369
+ if (spriteChanged) {
24370
+ changedCount++;
24371
+ }
24372
+ }
24373
+ updateObject.isEnabled = void 0;
24374
+ updateObject.location = void 0;
24375
+ updateObject.interpolation = void 0;
24376
+ updateObject.tag = void 0;
24377
+ operationResult.isUpdated = false;
24378
+ didMutateImages = false;
24379
+ }
24380
+ if (isRequiredRender) {
24381
+ ensureRenderTargetEntries();
24382
+ scheduleRender();
24383
+ }
24384
+ return changedCount;
24385
+ };
24268
24386
  const updateForEach = (updater) => {
24269
24387
  let updatedCount = 0;
24270
24388
  let isRequiredRender = false;
@@ -24353,6 +24471,7 @@ const createSpriteLayer = (options) => {
24353
24471
  removeSpriteImage,
24354
24472
  updateSprite,
24355
24473
  updateBulk,
24474
+ mutateSprites,
24356
24475
  updateForEach,
24357
24476
  on: addEventListener2,
24358
24477
  off: removeEventListener2