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.
package/dist/index.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
  export * from './types.ts';
package/dist/index.mjs 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
  var maplibreGl$1 = { exports: {} };
11
11
  /**
@@ -24263,6 +24263,124 @@ const createSpriteLayer = (options) => {
24263
24263
  }
24264
24264
  return updatedCount;
24265
24265
  };
24266
+ const mutateSprites = (sourceItems, mutator) => {
24267
+ if (sourceItems.length === 0) {
24268
+ return 0;
24269
+ }
24270
+ let changedCount = 0;
24271
+ let isRequiredRender = false;
24272
+ let currentSprite = void 0;
24273
+ let didMutateImages = false;
24274
+ const operationResult = {
24275
+ isUpdated: false
24276
+ };
24277
+ const updateObject = {
24278
+ getImageIndexMap: () => {
24279
+ const map2 = /* @__PURE__ */ new Map();
24280
+ currentSprite.images.forEach((inner, subLayer) => {
24281
+ map2.set(subLayer, new Set(inner.keys()));
24282
+ });
24283
+ return map2;
24284
+ },
24285
+ addImage: (subLayer, order, imageInit) => {
24286
+ const added = addSpriteImageInternal(
24287
+ currentSprite,
24288
+ subLayer,
24289
+ order,
24290
+ imageInit,
24291
+ operationResult
24292
+ );
24293
+ if (added) {
24294
+ didMutateImages = true;
24295
+ }
24296
+ return added;
24297
+ },
24298
+ updateImage: (subLayer, order, imageUpdate) => {
24299
+ const updated = updateSpriteImageInternal(
24300
+ currentSprite,
24301
+ subLayer,
24302
+ order,
24303
+ imageUpdate,
24304
+ operationResult
24305
+ );
24306
+ if (updated) {
24307
+ didMutateImages = true;
24308
+ }
24309
+ return updated;
24310
+ },
24311
+ removeImage: (subLayer, order) => {
24312
+ const removed = removeSpriteImageInternal(
24313
+ currentSprite,
24314
+ subLayer,
24315
+ order,
24316
+ operationResult
24317
+ );
24318
+ if (removed) {
24319
+ didMutateImages = true;
24320
+ }
24321
+ return removed;
24322
+ }
24323
+ };
24324
+ for (const sourceItem of sourceItems) {
24325
+ const spriteId = sourceItem.spriteId;
24326
+ const sprite = sprites.get(spriteId);
24327
+ if (!sprite) {
24328
+ const init = mutator.add(sourceItem);
24329
+ if (!init) {
24330
+ continue;
24331
+ }
24332
+ if (addSpriteInternal(spriteId, init)) {
24333
+ changedCount++;
24334
+ isRequiredRender = true;
24335
+ }
24336
+ continue;
24337
+ }
24338
+ currentSprite = sprite;
24339
+ operationResult.isUpdated = false;
24340
+ didMutateImages = false;
24341
+ const decision = mutator.modify(
24342
+ sourceItem,
24343
+ sprite,
24344
+ updateObject
24345
+ );
24346
+ if (decision === "remove") {
24347
+ if (removeSpriteInternal(spriteId)) {
24348
+ changedCount++;
24349
+ isRequiredRender = true;
24350
+ }
24351
+ } else {
24352
+ const updateResult = updateSpriteInternal(spriteId, updateObject);
24353
+ let spriteChanged = false;
24354
+ switch (updateResult) {
24355
+ case "updated":
24356
+ spriteChanged = true;
24357
+ break;
24358
+ case "isRequiredRender":
24359
+ spriteChanged = true;
24360
+ isRequiredRender = true;
24361
+ break;
24362
+ }
24363
+ if (didMutateImages) {
24364
+ spriteChanged = true;
24365
+ isRequiredRender = true;
24366
+ }
24367
+ if (spriteChanged) {
24368
+ changedCount++;
24369
+ }
24370
+ }
24371
+ updateObject.isEnabled = void 0;
24372
+ updateObject.location = void 0;
24373
+ updateObject.interpolation = void 0;
24374
+ updateObject.tag = void 0;
24375
+ operationResult.isUpdated = false;
24376
+ didMutateImages = false;
24377
+ }
24378
+ if (isRequiredRender) {
24379
+ ensureRenderTargetEntries();
24380
+ scheduleRender();
24381
+ }
24382
+ return changedCount;
24383
+ };
24266
24384
  const updateForEach = (updater) => {
24267
24385
  let updatedCount = 0;
24268
24386
  let isRequiredRender = false;
@@ -24351,6 +24469,7 @@ const createSpriteLayer = (options) => {
24351
24469
  removeSpriteImage,
24352
24470
  updateSprite,
24353
24471
  updateBulk,
24472
+ mutateSprites,
24354
24473
  updateForEach,
24355
24474
  on: addEventListener2,
24356
24475
  off: removeEventListener2