mousehunt-improved 0.99.10 → 0.99.12

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,4 +1,4 @@
1
- const mhImprovedVersion = '0.99.10';
1
+ const mhImprovedVersion = '0.99.12';
2
2
  const mhImprovedPlatform = 'userscript';
3
3
  var mhui = (() => {
4
4
  var __create = Object.create;
@@ -2634,7 +2634,7 @@ var mhui = (() => {
2634
2634
  });
2635
2635
 
2636
2636
  // src/utils/data.js
2637
- var validDataFiles, dataFilesToPreload, getSessionStorageKey, getLegacySessionStorageKey, isValidDataFile, getCacheExpiration, cacheSetExpiration, cacheExpire, isCacheExpired, fetchData, fetchMouseRip, hasValidData, fetchDataVersions, getCachedDataVersion, getData, clearCaches, updateCaches, checkForDataUpdates, markCachesAsExpired, getHeaders, sessionSet, sessionGet, sessionDelete, sessionsDelete, lsGet, lsSet, cacheSet, cacheSetNoExpiration, cacheSetAsync, cacheGetHelper, cacheGet, cacheGetNoExpiration, cacheDelete, dataSet, dataGet;
2637
+ var validDataFiles, dataFilesToPreload, getSessionStorageKey, getLegacySessionStorageKey, isValidDataFile, getCacheExpiration, cacheSetExpiration, cacheExpire, isCacheExpired, fetchData, fetchMouseRip, hasValidData, isCacheableValue, fetchDataVersions, getCachedDataVersion, getData, clearCaches, updateCaches, checkForDataUpdates, markCachesAsExpired, getHeaders, sessionSet, sessionGet, sessionDelete, sessionsDelete, lsGet, lsSet, cacheSet, cacheSetNoExpiration, cacheSetAsync, cacheGetHelper, cacheGet, cacheGetNoExpiration, cacheDelete, dataSet, dataGet;
2638
2638
  var init_data = __esm({
2639
2639
  "src/utils/data.js"() {
2640
2640
  init_db();
@@ -2652,7 +2652,6 @@ var mhui = (() => {
2652
2652
  "items-tradable",
2653
2653
  "items",
2654
2654
  "library-assignments",
2655
- "map-groups",
2656
2655
  "m400-locations",
2657
2656
  "marketplace-hidden-items",
2658
2657
  "mice-groups",
@@ -2668,22 +2667,10 @@ var mhui = (() => {
2668
2667
  "scrolls-to-maps",
2669
2668
  "titles",
2670
2669
  "trap-special-effects",
2671
- "ultimate-checkmark",
2672
2670
  "upscaled-images",
2673
2671
  "wisdom"
2674
2672
  ]);
2675
- dataFilesToPreload = [
2676
- "environments-events",
2677
- "environments",
2678
- "item-thumbnails",
2679
- "items",
2680
- "map-groups",
2681
- "mice-groups",
2682
- "mice-regions",
2683
- "mice-thumbnails",
2684
- "mice",
2685
- "upscaled-images"
2686
- ];
2673
+ dataFilesToPreload = ["environments-events", "environments", "item-thumbnails", "items", "mice-groups", "mice-regions", "mice-thumbnails", "mice", "upscaled-images"];
2687
2674
  getSessionStorageKey = (key) => {
2688
2675
  return key.startsWith("mh-improved-") ? key : "mh-improved-".concat(key);
2689
2676
  };
@@ -2760,6 +2747,15 @@ var mhui = (() => {
2760
2747
  }
2761
2748
  return Boolean(data && typeof data === "object" && Object.keys(data).length > 0);
2762
2749
  };
2750
+ isCacheableValue = (value) => {
2751
+ if (value === null || value === void 0) {
2752
+ return false;
2753
+ }
2754
+ if (typeof value === "object") {
2755
+ return hasValidData(value);
2756
+ }
2757
+ return true;
2758
+ };
2763
2759
  fetchDataVersions = () => __async(null, null, function* () {
2764
2760
  const versions = yield fetchMouseRip("versions");
2765
2761
  if (!versions || typeof versions !== "object" || Array.isArray(versions)) {
@@ -2947,6 +2943,10 @@ var mhui = (() => {
2947
2943
  localStorage.setItem(key, JSON.stringify(value));
2948
2944
  };
2949
2945
  cacheSet = (key, value, expiration = null, version = null) => __async(null, null, function* () {
2946
+ if (!isCacheableValue(value)) {
2947
+ debuglog("utils-data", "Refusing to cache empty value for ".concat(key));
2948
+ return value;
2949
+ }
2950
2950
  yield Promise.all([dbSet("cache", { id: key, value, version }), cacheSetExpiration(key, expiration)]);
2951
2951
  return value;
2952
2952
  });
@@ -5386,7 +5386,7 @@ var mhui = (() => {
5386
5386
  });
5387
5387
 
5388
5388
  // src/utils/styles.js
5389
- var addStylesDirect, addStyles, addModuleStyles, removeStyles, hudStylesModule, hudStylesId, addHudStyles, removeHudStyles, extensionBaseUrl, getExtensionBaseUrl, addExternalStyles;
5389
+ var addStylesDirect, addStyles, addModuleStyles, removeStyles, hudStylesModule, hudStylesId, addHudStyles, removeHudStyles, addExternalStyles;
5390
5390
  var init_styles = __esm({
5391
5391
  "src/utils/styles.js"() {
5392
5392
  init_event_registry();
@@ -5457,18 +5457,9 @@ var mhui = (() => {
5457
5457
  style.remove();
5458
5458
  });
5459
5459
  };
5460
- getExtensionBaseUrl = () => {
5461
- if (!extensionBaseUrl) {
5462
- const baseScript = document.querySelector("#mousehunt-improved-script");
5463
- if (baseScript && baseScript.getAttribute("data-baseurl")) {
5464
- extensionBaseUrl = baseScript.getAttribute("data-baseurl");
5465
- }
5466
- }
5467
- return extensionBaseUrl;
5468
- };
5469
5460
  addExternalStyles = (filename) => __async(null, null, function* () {
5470
5461
  const identifier = filename.split(".").shift();
5471
- filename = "".concat(filename, "?v=").concat(mhImprovedVersion);
5462
+ const cacheBuster = "?v=".concat(mhImprovedVersion, "-").concat((/* @__PURE__ */ new Date()).toISOString().slice(0, 10));
5472
5463
  const existingStyles = document.querySelector("#".concat(identifier, "-external"));
5473
5464
  if (existingStyles) {
5474
5465
  return existingStyles;
@@ -5476,10 +5467,7 @@ var mhui = (() => {
5476
5467
  const style = document.createElement("link");
5477
5468
  style.rel = "stylesheet";
5478
5469
  style.id = "".concat(identifier, "-external");
5479
- style.href = "https://api.mouse.rip/".concat(filename);
5480
- if ("userscript" !== mhImprovedPlatform) {
5481
- style.href = "".concat(getExtensionBaseUrl(), "static/").concat(filename);
5482
- }
5470
+ style.href = "https://api.mouse.rip/".concat(filename).concat(cacheBuster);
5483
5471
  document.head.append(style);
5484
5472
  return style;
5485
5473
  });
@@ -6640,12 +6628,27 @@ var mhui = (() => {
6640
6628
  }
6641
6629
  });
6642
6630
 
6643
- // src/updates/versions/0.99.4.js
6631
+ // src/updates/versions/0.99.12.js
6644
6632
  var __default5;
6645
6633
  var init__5 = __esm({
6646
- "src/updates/versions/0.99.4.js"() {
6634
+ "src/updates/versions/0.99.12.js"() {
6647
6635
  init_utils2();
6648
6636
  __default5 = {
6637
+ version: "0.99.12",
6638
+ update: () => __async(null, null, function* () {
6639
+ yield cacheDelete("map-groups");
6640
+ yield cacheDelete("ultimate-checkmark");
6641
+ })
6642
+ };
6643
+ }
6644
+ });
6645
+
6646
+ // src/updates/versions/0.99.4.js
6647
+ var __default6;
6648
+ var init__6 = __esm({
6649
+ "src/updates/versions/0.99.4.js"() {
6650
+ init_utils2();
6651
+ __default6 = {
6649
6652
  version: "0.99.4",
6650
6653
  update: () => __async(null, null, function* () {
6651
6654
  deleteSetting("better-journal.full-mice-images-no-border");
@@ -6665,7 +6668,8 @@ var mhui = (() => {
6665
6668
  init__3();
6666
6669
  init__4();
6667
6670
  init__5();
6668
- imported = [__default, __default2, __default3, __default4, __default5];
6671
+ init__6();
6672
+ imported = [__default, __default2, __default3, __default4, __default5, __default6];
6669
6673
  versionUpdates = imported;
6670
6674
  saveSettingsBackup = () => {
6671
6675
  const settings3 = localStorage.getItem("mousehunt-improved-settings");
@@ -8452,7 +8456,7 @@ var mhui = (() => {
8452
8456
  var styles_default6;
8453
8457
  var init_styles7 = __esm({
8454
8458
  "src/modules/better-item-view/styles.css"() {
8455
- styles_default6 = '/* src/modules/better-item-view/styles.css */\n.itemView-titleContainer {\n height: 26px;\n}\n.itemView-header-name {\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n.mh-item-links {\n display: flex;\n justify-content: flex-end;\n margin-right: -10px;\n}\n.mh-item-links a {\n margin-right: 5px;\n}\n.itemView-header-name .mh-item-links span {\n display: inline-block;\n font-size: 11px;\n font-weight: 400;\n}\n.mouseview-has-mhct .mouse-ar-wrapper {\n display: grid;\n grid-template-columns: 1fr 1fr 60px;\n gap: 10px;\n place-items: center stretch;\n width: auto;\n padding: 5px;\n font-size: 12px;\n}\n.itemViewPopup .mouseview-has-mhct .mouse-ar-wrapper {\n padding: 5px;\n}\n.mouseview-has-mhct .has-stages .mouse-ar-wrapper {\n grid-template-columns: 2fr 3fr 2fr 50px;\n}\n.mouseview-has-mhct .mouse-ar-wrapper div {\n padding: 0 2px;\n}\n.mouseview-has-mhct .mice-ar-wrapper {\n margin-right: 10px;\n}\n.mouse-ar-wrapper .stage {\n font-size: 10px;\n}\n.mouse-ar-wrapper .cheese {\n font-size: 11px;\n}\n.mouseview-has-mhct .ar-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n height: auto;\n margin-top: 10px;\n font-size: 12px;\n font-weight: 900;\n border-bottom: 1px solid #ccc;\n}\n.mh-dark .mouseview-has-mhct .ar-header {\n border-bottom-color: var(--d-bg-alt);\n}\n.mouseview-has-mhct .ar-link {\n font-size: 9px;\n}\n.mouseview-has-mhct .rate {\n text-align: right;\n}\n.mouseview-has-mhct .mouse-ar-wrapper:nth-child(odd) {\n background-color: #e7e7e7;\n}\n.mh-dark .mouseview-has-mhct .mouse-ar-wrapper:nth-child(odd) {\n background-color: var(--d-bg);\n}\n.itemView-action.crafting_item b {\n display: none;\n}\n.itemView-action.crafting_item::before {\n content: "This can be used to craft other items!";\n}\n.itemViewContainer.map_piece .itemView-action-text.map_piece,\n.itemViewContainer.base .itemView-action-text.base,\n.itemViewContainer.weapon .itemView-actio-textn.weapon,\n.itemViewContainer.bait .itemView-action-text.bait,\n.itemViewContainer.trinket .itemView-action-text.trinket,\n.itemViewContainer.potion .itemView-action-text.potion,\n.itemViewContainer.readiness_item .itemView-action-text.readiness_item,\n.itemViewContainer.convertible .itemView-action-text.convertible,\n.itemViewContainer.torn_page .itemView-action-text.torn_page,\n.itemViewContainer.crafting_item .itemView-action-text.crafting_item,\n.itemViewContainer.collectible .itemView-action-text.collectible,\n.itemViewContainer.message_item .itemView-action-text.message_item,\n.itemViewContainer.bonus_loot .itemView-action-text.bonus_loot,\n.itemViewContainer.stat .itemView-action-text.stat,\n.itemViewContainer.quest .itemView-action-text.quest,\n.itemViewContainer.skin .itemView-action-text.skin {\n display: none !important;\n}\n.itemViewContainer .shopCustomization .itemViewStatBlock-stat {\n display: flex;\n flex-direction: column;\n align-items: center;\n}\n.itemViewContainer .itemViewStatBlock-stat {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: flex-start;\n}\n.itemViewContainer .itemViewStatBlock-stat-value {\n flex: 1;\n text-align: left;\n}\n.itemViewContainer .itemViewStatBlock-stat.cheeseEffect {\n font-size: 9px;\n text-align: center;\n}\n.itemViewContainer .itemViewStatBlock.trinket .itemViewStatBlock-padding {\n display: flex;\n flex-direction: column;\n align-items: stretch;\n width: 100px;\n}\n.itemViewContainer .itemViewStatBlock.trinket {\n width: 100px;\n font-size: 13px;\n}\n#overlayPopup.itemViewPopup #jsDialogClose {\n right: 6px;\n z-index: 1;\n border-top-right-radius: 10px;\n}\n#overlayPopup.itemViewPopup .itemView-header-classification {\n right: 25px;\n}\n.itemView-actionContainer {\n display: flex;\n flex-wrap: wrap;\n gap: 10px;\n}\n.itemView-action {\n border-top: none;\n}\n.itemViewContainer.potion .inventoryPage-item-recipeOptions li {\n width: 365px;\n}\n.itemView-character-image {\n width: auto;\n height: 84px;\n margin-top: -15px;\n margin-left: -9px;\n}\n.itemView-character-name {\n left: -11px;\n width: 75px;\n font-size: 15px;\n}\n.itemView-padding {\n margin-left: 70px;\n}\n.itemView-thumbnail {\n width: 200px;\n height: 200px;\n margin-left: -15px;\n background-repeat: no-repeat;\n background-position: center;\n background-size: contain;\n}\n.itemView-thumbnail.large {\n background-size: 100%;\n}\ninput.itemView-action-convert-quantity {\n width: 50px;\n}\n.itemViewPopup .itemViewStatBlock-padding {\n flex-direction: column;\n}\n.itemView-character .itemView-character-image {\n transition: all 0.4s ease-out;\n transform-origin: bottom;\n}\n.itemView-character:hover .itemView-character-image {\n transform: scale(1.2) rotate(-10deg) translateX(5px);\n}\n.itemView-header-classification {\n visibility: hidden;\n}\n.itemView-header-classification span {\n visibility: visible;\n}\n.itemViewStatBlock-stat {\n display: flex;\n align-items: center;\n}\n.itemView-sidebar-checklistItem:not(.checked) {\n color: inherit;\n}\n.itemView-sidebar-checklistItem:nth-child(1),\n.itemView-sidebar-checklistItem:nth-child(2),\n.itemView-sidebar-checklistItem.checked {\n display: block;\n}\n.itemView-sidebar-checklistItem {\n background: url(https://www.mousehuntgame.com/images/icons/bad_idea.png) 1px 4px no-repeat;\n background-size: 14px;\n opacity: 0.8;\n}\n.itemView-partsContainer {\n display: flex;\n flex-direction: column;\n align-items: stretch;\n padding-top: 15px;\n padding-bottom: 10px;\n margin-top: 15px;\n border-top: 1px solid #666;\n}\n.convertibleOpenView-item-imageContainer {\n margin-right: auto;\n}\n.convertibleOpenView-itemContainer.num_items_1 .convertibleOpenView-item {\n gap: 20px;\n width: 100%;\n}\n.itemView-obtainHint {\n margin-left: 190px;\n}\n.itemViewContainer iframe.socialLink-facebookLike {\n margin-right: 5px;\n}\n.convertibleOpenView-itemContainer {\n padding-top: 10px;\n margin-top: 0;\n}\n.itemViewContainer.skin .itemView-thumbnail {\n background-size: cover;\n}\n.inventoryPage-item.trinket .itemViewStatBlock.trinket .itemViewStatBlock-padding {\n overflow: hidden;\n border-radius: 3px;\n}\n.inventoryPage-item.trinket .itemViewStatBlock.trinket {\n border-top: none;\n}\n.inventoryPage-item.trinket .itemViewStatBlock-stat {\n border-top: 1px solid #ccc;\n border-bottom: none;\n}\n.itemView-action-convertForm {\n position: relative;\n padding-bottom: 20px;\n}\n.mh-improved-convertible-contents-loading {\n padding: 5px;\n font-size: 10px;\n font-style: italic;\n color: #777;\n}\n.mh-improved-convertible-contents .item-ar-wrapper {\n max-height: 250px;\n overflow-y: auto;\n}\n.mh-improved-item-open-controls {\n position: absolute;\n top: 30px;\n right: 0;\n left: 0;\n display: flex;\n flex: 1 1 100%;\n flex-flow: row wrap;\n gap: 5px;\n align-items: center;\n justify-content: center;\n margin-top: 7px;\n}\n.mh-improved-airship-part-container {\n position: relative;\n background-image: none !important;\n}\n.mh-improved-airship-part {\n position: absolute;\n inset: 0;\n background-repeat: no-repeat;\n background-size: 100%;\n}\n.mh-improved-airship-part.balloon {\n background-image: url(https://www.mousehuntgame.com/images/ui/hud/floating_islands/airship/balloon/silhouette.png);\n}\n.mh-improved-airship-part.sail {\n background-image: url(https://www.mousehuntgame.com/images/ui/hud/floating_islands/airship/sail/silhouette.png);\n}\n.mh-improved-airship-part.hull {\n background-image: url(https://www.mousehuntgame.com/images/ui/hud/floating_islands/airship/hull/silhouette.png);\n}\n.mh-improved-airship-part-container .mh-improved-airship-part.silhouette {\n transition: opacity 0.3s;\n}\n.mh-improved-airship-part-container:hover .mh-improved-airship-part.silhouette {\n opacity: 0.1;\n}\n.mh-improved-scroll-to-map {\n margin-top: 10px;\n}\n.mh-improved-scroll-to-map strong {\n font-weight: 900;\n}\nul.mh-improved-scroll-to-map-multiple-list {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n padding-top: 10px;\n padding-bottom: 10px;\n padding-left: 20px;\n list-style-type: disc;\n background-color: #eee;\n border-bottom-right-radius: 5px;\n border-bottom-left-radius: 5px;\n}\n.mh-improved-scroll-to-map-multiple {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n padding-top: 5px;\n padding-bottom: 2px;\n padding-left: 5px;\n margin-top: 10px;\n background-color: #eee;\n border-top-left-radius: 5px;\n border-top-right-radius: 5px;\n}\n.mh-improved-scroll-to-map-title-text {\n font-size: 12px;\n border-bottom: 1px solid #ccc;\n}\n.mh-dark .mh-improved-scroll-to-map-title-text {\n border-bottom-color: var(--d-border);\n}\n.mh-improved-scroll-to-map .PreferencesPage__blackTooltip.mh-improved-tooltip {\n margin-right: 5px;\n}\n.mh-improved-scroll-to-map-multiple-list li {\n line-height: 1.5;\n}\n.inventoryPage-item-content-nameContainer .tooltip .description {\n overflow: scroll;\n}\n';
8459
+ styles_default6 = '/* src/modules/better-item-view/styles.css */\n.itemView-titleContainer {\n height: 26px;\n}\n.itemView-header-name {\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n.mh-item-links {\n display: flex;\n justify-content: flex-end;\n margin-right: -10px;\n}\n.mh-item-links a {\n margin-right: 5px;\n}\n.itemView-header-name .mh-item-links span {\n display: inline-block;\n font-size: 11px;\n font-weight: 400;\n}\n.mouseview-has-mhct .mouse-ar-wrapper {\n display: grid;\n grid-template-columns: 1fr 1fr 60px;\n gap: 10px;\n place-items: center stretch;\n width: auto;\n padding: 5px;\n font-size: 12px;\n}\n.itemViewPopup .mouseview-has-mhct .mouse-ar-wrapper {\n padding: 5px;\n}\n.mouseview-has-mhct .has-stages .mouse-ar-wrapper {\n grid-template-columns: 2fr 3fr 2fr 50px;\n}\n.mouseview-has-mhct .mouse-ar-wrapper div {\n padding: 0 2px;\n}\n.mouseview-has-mhct .mice-ar-wrapper {\n margin-right: 10px;\n}\n.mouse-ar-wrapper .stage {\n font-size: 10px;\n}\n.mouse-ar-wrapper .cheese {\n font-size: 11px;\n}\n.mouseview-has-mhct .ar-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n height: auto;\n margin-top: 10px;\n font-size: 12px;\n font-weight: 900;\n border-bottom: 1px solid #ccc;\n}\n.mh-dark .mouseview-has-mhct .ar-header {\n border-bottom-color: var(--d-bg-alt);\n}\n.ar-title {\n margin-left: 5px;\n}\n.mouseview-has-mhct .ar-link {\n font-size: 9px;\n}\n.mouseview-has-mhct .rate {\n text-align: right;\n}\n.mouseview-has-mhct .mouse-ar-wrapper:nth-child(odd) {\n background-color: #e7e7e7;\n}\n.mh-dark .mouseview-has-mhct .mouse-ar-wrapper:nth-child(odd) {\n background-color: var(--d-bg);\n}\n.itemView-action.crafting_item b {\n display: none;\n}\n.itemView-action.crafting_item::before {\n content: "This can be used to craft other items!";\n}\n.itemViewContainer.map_piece .itemView-action-text.map_piece,\n.itemViewContainer.base .itemView-action-text.base,\n.itemViewContainer.weapon .itemView-actio-textn.weapon,\n.itemViewContainer.bait .itemView-action-text.bait,\n.itemViewContainer.trinket .itemView-action-text.trinket,\n.itemViewContainer.potion .itemView-action-text.potion,\n.itemViewContainer.readiness_item .itemView-action-text.readiness_item,\n.itemViewContainer.convertible .itemView-action-text.convertible,\n.itemViewContainer.torn_page .itemView-action-text.torn_page,\n.itemViewContainer.crafting_item .itemView-action-text.crafting_item,\n.itemViewContainer.collectible .itemView-action-text.collectible,\n.itemViewContainer.message_item .itemView-action-text.message_item,\n.itemViewContainer.bonus_loot .itemView-action-text.bonus_loot,\n.itemViewContainer.stat .itemView-action-text.stat,\n.itemViewContainer.quest .itemView-action-text.quest,\n.itemViewContainer.skin .itemView-action-text.skin {\n display: none !important;\n}\n.itemViewContainer .shopCustomization .itemViewStatBlock-stat {\n display: flex;\n flex-direction: column;\n align-items: center;\n}\n.itemViewContainer .itemViewStatBlock-stat {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: flex-start;\n}\n.itemViewContainer .itemViewStatBlock-stat-value {\n flex: 1;\n text-align: left;\n}\n.itemViewContainer .itemViewStatBlock-stat.cheeseEffect {\n font-size: 9px;\n text-align: center;\n}\n.itemViewContainer .itemViewStatBlock.trinket .itemViewStatBlock-padding {\n display: flex;\n flex-direction: column;\n align-items: stretch;\n width: 100px;\n}\n.itemViewContainer .itemViewStatBlock.trinket {\n width: 100px;\n font-size: 13px;\n}\n#overlayPopup.itemViewPopup #jsDialogClose {\n right: 6px;\n z-index: 1;\n border-top-right-radius: 10px;\n}\n#overlayPopup.itemViewPopup .itemView-header-classification {\n right: 25px;\n}\n.itemView-actionContainer {\n display: flex;\n flex-wrap: wrap;\n gap: 10px;\n}\n.itemView-action {\n border-top: none;\n}\n.itemViewContainer.potion .inventoryPage-item-recipeOptions li {\n width: 365px;\n}\n.itemView-character-image {\n width: auto;\n height: 84px;\n margin-top: -15px;\n margin-left: -9px;\n}\n.itemView-character-name {\n left: -11px;\n width: 75px;\n font-size: 15px;\n}\n.itemView-padding {\n margin-left: 70px;\n}\n.itemView-thumbnail {\n width: 200px;\n height: 200px;\n margin-left: -15px;\n background-repeat: no-repeat;\n background-position: center;\n background-size: contain;\n}\n.itemView-thumbnail.large {\n background-size: 100%;\n}\ninput.itemView-action-convert-quantity {\n width: 50px;\n}\n.itemViewPopup .itemViewStatBlock-padding {\n flex-direction: column;\n}\n.itemView-character .itemView-character-image {\n transition: all 0.4s ease-out;\n transform-origin: bottom;\n}\n.itemView-character:hover .itemView-character-image {\n transform: scale(1.2) rotate(-10deg) translateX(5px);\n}\n.itemView-header-classification {\n visibility: hidden;\n}\n.itemView-header-classification span {\n visibility: visible;\n}\n.itemViewStatBlock-stat {\n display: flex;\n align-items: center;\n}\n.itemView-sidebar-checklistItem:not(.checked) {\n color: inherit;\n}\n.itemView-sidebar-checklistItem:nth-child(1),\n.itemView-sidebar-checklistItem:nth-child(2),\n.itemView-sidebar-checklistItem.checked {\n display: block;\n}\n.itemView-sidebar-checklistItem {\n background: url(https://www.mousehuntgame.com/images/icons/bad_idea.png) 1px 4px no-repeat;\n background-size: 14px;\n opacity: 0.8;\n}\n.itemView-partsContainer {\n display: flex;\n flex-direction: column;\n align-items: stretch;\n padding-top: 15px;\n padding-bottom: 10px;\n margin-top: 15px;\n border-top: 1px solid #666;\n}\n.convertibleOpenView-item-imageContainer {\n margin-right: auto;\n}\n.convertibleOpenView-itemContainer.num_items_1 .convertibleOpenView-item {\n gap: 20px;\n width: 100%;\n}\n.itemView-obtainHint {\n margin-left: 190px;\n}\n.itemViewContainer iframe.socialLink-facebookLike {\n margin-right: 5px;\n}\n.convertibleOpenView-itemContainer {\n padding-top: 10px;\n margin-top: 0;\n}\n.itemViewContainer.skin .itemView-thumbnail {\n background-size: cover;\n}\n.inventoryPage-item.trinket .itemViewStatBlock.trinket .itemViewStatBlock-padding {\n overflow: hidden;\n border-radius: 3px;\n}\n.inventoryPage-item.trinket .itemViewStatBlock.trinket {\n border-top: none;\n}\n.inventoryPage-item.trinket .itemViewStatBlock-stat {\n border-top: 1px solid #ccc;\n border-bottom: none;\n}\n.itemView-action-convertForm {\n position: relative;\n padding-bottom: 20px;\n}\n.mh-improved-convertible-contents-loading {\n padding: 5px;\n font-size: 10px;\n font-style: italic;\n color: #777;\n}\n.mh-improved-convertible-contents .item-ar-wrapper {\n max-height: 250px;\n overflow: hidden auto;\n}\n.mh-improved-item-open-controls {\n position: absolute;\n top: 30px;\n right: 0;\n left: 0;\n display: flex;\n flex: 1 1 100%;\n flex-flow: row wrap;\n gap: 5px;\n align-items: center;\n justify-content: center;\n margin-top: 7px;\n}\n.mh-improved-airship-part-container {\n position: relative;\n background-image: none !important;\n}\n.mh-improved-airship-part {\n position: absolute;\n inset: 0;\n background-repeat: no-repeat;\n background-size: 100%;\n}\n.mh-improved-airship-part.balloon {\n background-image: url(https://www.mousehuntgame.com/images/ui/hud/floating_islands/airship/balloon/silhouette.png);\n}\n.mh-improved-airship-part.sail {\n background-image: url(https://www.mousehuntgame.com/images/ui/hud/floating_islands/airship/sail/silhouette.png);\n}\n.mh-improved-airship-part.hull {\n background-image: url(https://www.mousehuntgame.com/images/ui/hud/floating_islands/airship/hull/silhouette.png);\n}\n.mh-improved-airship-part-container .mh-improved-airship-part.silhouette {\n transition: opacity 0.3s;\n}\n.mh-improved-airship-part-container:hover .mh-improved-airship-part.silhouette {\n opacity: 0.1;\n}\n.mh-improved-scroll-to-map {\n margin-top: 10px;\n}\n.mh-improved-scroll-to-map strong {\n font-weight: 900;\n}\nul.mh-improved-scroll-to-map-multiple-list {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n padding-top: 10px;\n padding-bottom: 10px;\n padding-left: 20px;\n list-style-type: disc;\n background-color: #eee;\n border-bottom-right-radius: 5px;\n border-bottom-left-radius: 5px;\n}\n.mh-improved-scroll-to-map-multiple {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n padding-top: 5px;\n padding-bottom: 2px;\n padding-left: 5px;\n margin-top: 10px;\n background-color: #eee;\n border-top-left-radius: 5px;\n border-top-right-radius: 5px;\n}\n.mh-improved-scroll-to-map-title-text {\n font-size: 12px;\n border-bottom: 1px solid #ccc;\n}\n.mh-dark .mh-improved-scroll-to-map-title-text {\n border-bottom-color: var(--d-border);\n}\n.mh-improved-scroll-to-map .PreferencesPage__blackTooltip.mh-improved-tooltip {\n margin-right: 5px;\n}\n.mh-improved-scroll-to-map-multiple-list li {\n line-height: 1.5;\n}\n.inventoryPage-item-content-nameContainer .tooltip .description {\n overflow: scroll;\n}\n';
8456
8460
  }
8457
8461
  });
8458
8462
 
@@ -8955,6 +8959,7 @@ var mhui = (() => {
8955
8959
  "src/modules/better-journal/modules/journal-full-mice-images/index.js"() {
8956
8960
  init_utils2();
8957
8961
  init_styles8();
8962
+ mice = [];
8958
8963
  silhouettes = /* @__PURE__ */ new Map();
8959
8964
  sheet = null;
8960
8965
  declared = /* @__PURE__ */ new Set();
@@ -9025,7 +9030,7 @@ var mhui = (() => {
9025
9030
  journal_full_mice_images_default = () => __async(null, null, function* () {
9026
9031
  addStyles(styles_default7, "better-journal-full-mice-images");
9027
9032
  const [miceData, silhouetteData] = yield Promise.all([getData("mice"), getData("mice-silhouettes")]);
9028
- mice = miceData;
9033
+ mice = Array.isArray(miceData) ? miceData : [];
9029
9034
  if (Array.isArray(silhouetteData)) {
9030
9035
  silhouettes = new Map(silhouetteData.map((mouse) => [mouse.type, mouse]));
9031
9036
  }
@@ -10606,7 +10611,7 @@ var mhui = (() => {
10606
10611
  var date_hiding_default;
10607
10612
  var init_date_hiding = __esm({
10608
10613
  "src/modules/better-journal/modules/journal-styles/styles/date-hiding.css"() {
10609
- date_hiding_default = "/* src/modules/better-journal/modules/journal-styles/styles/date-hiding.css */\n.journal .content .entry.minimalJournal.ancient-stealth .journalbody .journalenvdate,\n.journal .content .entry.refractorBaseEffect-empyrean_jewel_base .journalbody .journalenvdate,\n.journal .content .entry.refractorBaseEffect-royal_ruby_refractor_base .journalbody .journalenvdate,\n.journal .content .entry.refractorBaseEffect-sorcerers_sapphire_refractor_base .journalbody .journalenvdate,\n.journal .content .entry.refractorBaseEffect-dragons_breath_opal_refractor_base .journalbody .journalenvdate,\n.journal .content .entry.short.refine_pollutinum .journalbody .journalenvdate,\n.journal .content .entry.short.torch_charm_event .journalbody .journalenvdate,\n.journal .content .entry.short.unstable_charm_trigger .journalbody .journalenvdate,\n.journal .content .entry.short.tournamentpointswithloot .journalbody .journalenvdate,\n.journal .content .entry.short.tournamentpoints .journalbody .journalenvdate,\n.journal .content .entry.short.rift-bristlewoods-acolyteSandStolen .journalbody .journalenvdate,\n.journal .content .entry.short.rift-bristlewoods-lootBooster .journalbody .journalenvdate,\n.journal .content .entry.short.super_rift_vacuum_trigger .journalbody .journalenvdate,\n.journal .content .entry.short.queso_canyon_queso_pumped .journalbody .journalenvdate,\n.journal .content .entry.short.custom.chesla_trap_trigger .journalbody .journalenvdate,\n.journal .content .entry.short.wordCount.minimalJournal .journalbody .journalenvdate,\n.journal .content .entry.short.folkloreForest.folkloreForest-lootFuelBoost .journalbody .journalenvdate,\n.journal .content .entry.short.folkloreForest.folkloreForest-farmToTable .journalbody .journalenvdate,\n.journal .content .entry.short.labyrinth.labyrinth-chooseDoor .journalbody .journalenvdate,\n.journal .content .entry.short.labyrinth.labyrinth-intersection .journalbody .journalenvdate,\n.journal .content .entry.short.labyrinth.labyrinth-scrambleDoors .journalbody .journalenvdate,\n.journal .content .entry.short.misc.custom.chesla_trap_trigger .journalbody .journalenvdate,\n.journal .content .entry.short.misc.custom.birthday_factory.claim_package .journalenvdate,\n.journal .content .entry.folkloreForest-tableOfContents.mythweaverIncrease .journalenvdate,\n.journal .content .entry.iceberg_advance .journalbody .journalenvdate,\n.journal .content .entry.iceberg_defeated .journalbody .journalenvdate,\n.journal .content .entry.iceberg_phase_change .journalbody .journalenvdate,\n.journal .content .entry.iceberg_advance_prevented.general .journalbody .journalenvdate,\n.journal .content .entry.spring_hunt_charge_trinket_effect .journalbody .journalenvdate,\n.journal .content .entry.harbour .journalbody .journalenvdate,\n.journal .content .entry.iceberg_drill .journalbody .journalenvdate,\n.journal .content .entry.short.desertstreak .journalbody .journalenvdate,\n.journal .content .entry.schoolOfSorcery-wandUsed .journalbody .journalenvdate,\n.journal .content .entry.short.gift_wrapped_charm_trigger .journalbody .journalenvdate,\n.journal .content .entry.short.afterwordAcres-droidActivity .journalbody .journalenvdate,\n.journal .content .entry.ceruleanSkyport-shipmentStarted .journalbody .journalenvdate,\n.journal .content .entry.ceruleanSkyport-shipmentFinished .journalbody .journalenvdate,\n.journal .content .entry.ceruleanSkyport-cannonballLoot .journalbody .journalenvdate,\n.journal .content .entry.baitkeep_popped .journalbody .journalenvdate,\n.journal .content .entry.baitkeep_idle .journalbody .journalenvdate,\n.journal .content .entry.short.rift-whisker-woods-increase .journalbody .journalenvdate {\n display: none;\n}\n.journal .content .log_summary.stats .journalenvdate,\n.journal .entry.birthday2018-anniversary-trap-trigger .journalenvdate,\n.journal .birthday2015-trayComplete-special .journalenvdate,\n.journal .train_station.progress .journalenvdate,\n.journal .entry.furoma_base_trigger .journalenvdate,\n.journal .entry.living_grove_base_trigger .journalenvdate,\n.journal .entry.desert_heater_base_trigger .journalenvdate,\n.journal .entry.queso_cannonstorm_base_trigger .journalenvdate,\n.journal .entry.aurora_base_trigger .journalenvdate,\n.journal .entry.timepiece_trigger .journalenvdate,\n.journal .entry.vegetation_base_trigger .journalenvdate,\n.journal .entry.electromagnetic_base_trigger .journalenvdate,\n.journal .entry.pirate_sleigh_trigger .journalenvdate,\n.journal .entry.slac_in_a_box_trigger .journalenvdate,\n.journal .entry.regulator_base_trigger .journalenvdate,\n.journal .entry.rift_mist_diffuser_trigger .journalenvdate,\n.journal .entry.spring_hunt_relic_hunter_egg_drop .journalenvdate,\n.journal .entry.denture_base_saved_trigger .journalenvdate,\n.journal .entry.denture_base_decay_trigger .journalenvdate,\n.journal .entry.printing_press_base_journal_entry .journalenvdate,\n.journal .entry.lunar_lantern .journalenvdate,\n.journal .entry.mousoleum .journalenvdate,\n.journal .entry.labyrinth-lantern .journaldat,\n.journal .entry.labyrinth-base-burnClue .journalenvdate,\n.journal .entry.labyrinth-clue .journalenvdate,\n.journal .entry.bountifulBeanstalk-goldenHarpStrings .journalenvdate,\n.journal .entry.riftFuroma-energyLost .journalenvdate {\n display: none !important;\n}\n.journal .entry.minimalJournalImage .journalbody .journalenvdate {\n display: none;\n}\n";
10614
+ date_hiding_default = "/* src/modules/better-journal/modules/journal-styles/styles/date-hiding.css */\n.journal .content .entry.minimalJournal.ancient-stealth .journalbody .journalenvdate,\n.journal .content .entry.refractorBaseEffect-empyrean_jewel_base .journalbody .journalenvdate,\n.journal .content .entry.refractorBaseEffect-royal_ruby_refractor_base .journalbody .journalenvdate,\n.journal .content .entry.refractorBaseEffect-sorcerers_sapphire_refractor_base .journalbody .journalenvdate,\n.journal .content .entry.refractorBaseEffect-dragons_breath_opal_refractor_base .journalbody .journalenvdate,\n.journal .content .entry.short.refine_pollutinum .journalbody .journalenvdate,\n.journal .content .entry.short.torch_charm_event .journalbody .journalenvdate,\n.journal .content .entry.short.unstable_charm_trigger .journalbody .journalenvdate,\n.journal .content .entry.short.tournamentpointswithloot .journalbody .journalenvdate,\n.journal .content .entry.short.tournamentpoints .journalbody .journalenvdate,\n.journal .content .entry.short.rift-bristlewoods-acolyteSandStolen .journalbody .journalenvdate,\n.journal .content .entry.short.rift-bristlewoods-lootBooster .journalbody .journalenvdate,\n.journal .content .entry.short.super_rift_vacuum_trigger .journalbody .journalenvdate,\n.journal .content .entry.short.queso_canyon_queso_pumped .journalbody .journalenvdate,\n.journal .content .entry.short.custom.chesla_trap_trigger .journalbody .journalenvdate,\n.journal .content .entry.short.wordCount.minimalJournal .journalbody .journalenvdate,\n.journal .content .entry.short.folkloreForest.folkloreForest-lootFuelBoost .journalbody .journalenvdate,\n.journal .content .entry.short.folkloreForest.folkloreForest-farmToTable .journalbody .journalenvdate,\n.journal .content .entry.short.labyrinth.labyrinth-chooseDoor .journalbody .journalenvdate,\n.journal .content .entry.short.labyrinth.labyrinth-intersection .journalbody .journalenvdate,\n.journal .content .entry.short.labyrinth.labyrinth-scrambleDoors .journalbody .journalenvdate,\n.journal .content .entry.short.misc.custom.chesla_trap_trigger .journalbody .journalenvdate,\n.journal .content .entry.short.misc.custom.birthday_factory.claim_package .journalenvdate,\n.journal .content .entry.folkloreForest-tableOfContents.mythweaverIncrease .journalenvdate,\n.journal .content .entry.iceberg_advance .journalbody .journalenvdate,\n.journal .content .entry.iceberg_defeated .journalbody .journalenvdate,\n.journal .content .entry.iceberg_phase_change .journalbody .journalenvdate,\n.journal .content .entry.iceberg_advance_prevented.general .journalbody .journalenvdate,\n.journal .content .entry.spring_hunt_charge_trinket_effect .journalbody .journalenvdate,\n.journal .content .entry.harbour .journalbody .journalenvdate,\n.journal .content .entry.iceberg_drill .journalbody .journalenvdate,\n.journal .content .entry.short.desertstreak .journalbody .journalenvdate,\n.journal .content .entry.schoolOfSorcery-wandUsed .journalbody .journalenvdate,\n.journal .content .entry.short.gift_wrapped_charm_trigger .journalbody .journalenvdate,\n.journal .content .entry.short.afterwordAcres-droidActivity .journalbody .journalenvdate,\n.journal .content .entry.ceruleanSkyport-shipmentStarted .journalbody .journalenvdate,\n.journal .content .entry.ceruleanSkyport-shipmentFinished .journalbody .journalenvdate,\n.journal .content .entry.ceruleanSkyport-cannonballLoot .journalbody .journalenvdate,\n.journal .content .entry.baitkeep_popped .journalbody .journalenvdate,\n.journal .content .entry.baitkeep_idle .journalbody .journalenvdate,\n.journal .content .entry.short.rift-whisker-woods-increase .journalbody .journalenvdate {\n display: none;\n}\n.journal .content .log_summary.stats .journalenvdate,\n.journal .entry.birthday2018-anniversary-trap-trigger .journalenvdate,\n.journal .birthday2015-trayComplete-special .journalenvdate,\n.journal .train_station.progress .journalenvdate,\n.journal .entry.furoma_base_trigger .journalenvdate,\n.journal .entry.living_grove_base_trigger .journalenvdate,\n.journal .entry.desert_heater_base_trigger .journalenvdate,\n.journal .entry.queso_cannonstorm_base_trigger .journalenvdate,\n.journal .entry.aurora_base_trigger .journalenvdate,\n.journal .entry.timepiece_trigger .journalenvdate,\n.journal .entry.vegetation_base_trigger .journalenvdate,\n.journal .entry.electromagnetic_base_trigger .journalenvdate,\n.journal .entry.pirate_sleigh_trigger .journalenvdate,\n.journal .entry.slac_in_a_box_trigger .journalenvdate,\n.journal .entry.regulator_base_trigger .journalenvdate,\n.journal .entry.rift_mist_diffuser_trigger .journalenvdate,\n.journal .entry.spring_hunt_relic_hunter_egg_drop .journalenvdate,\n.journal .entry.denture_base_saved_trigger .journalenvdate,\n.journal .entry.denture_base_decay_trigger .journalenvdate,\n.journal .entry.printing_press_base_journal_entry .journalenvdate,\n.journal .entry.lunar_lantern .journalenvdate,\n.journal .entry.mousoleum .journalenvdate,\n.journal .entry.labyrinth-lantern .journaldat,\n.journal .entry.labyrinth-base-burnClue .journalenvdate,\n.journal .entry.labyrinth-clue .journalenvdate,\n.journal .entry.bountifulBeanstalk-goldenHarpStrings .journalenvdate,\n.journal .entry.cerulean_chrome_base_trigger .journalenvdate,\n.journal .entry.riftFuroma-energyLost .journalenvdate {\n display: none !important;\n}\n.journal .entry.minimalJournalImage .journalbody .journalenvdate {\n display: none;\n}\n";
10610
10615
  }
10611
10616
  });
10612
10617
 
@@ -10614,7 +10619,7 @@ var mhui = (() => {
10614
10619
  var fullstop_default;
10615
10620
  var init_fullstop = __esm({
10616
10621
  "src/modules/better-journal/modules/journal-styles/styles/fullstop.css"() {
10617
- fullstop_default = '/* src/modules/better-journal/modules/journal-styles/styles/fullstop.css */\n.entry.short.log_summary.stats .fullstop {\n display: none;\n}\n.journal .entry .journaltext br::after {\n content: " ";\n}\n.journal .entry .journaltext br:last-child,\n.journal .content .entry .journaltext > br:last-of-type,\n.journal .content .entry .journaltext > br:first-of-type {\n display: none;\n}\n.journal .content .entry .journaltext > br + br:last-of-type,\n.journal .content .entry.world_aspect_corrupted .journaltext br,\n.journal .content .entry.floatingIslands.fullyExplored .journaltext br,\n.journal .content .entry.floatingIslands.defeatedEnemy .journaltext br,\n.journal .content .entry.folkloreForest-plantClaimed .journaltext br,\n.journal .content .entry.folkloreForest-lootFuelBoost .journaltext br,\n.journal .content .entry.relicHunter_complete .journaltext br:first-of-type,\n.journal .content .entry.wanted_poster-complete .journaltext br:first-of-type,\n.journal .content .entry.draconicDepths-claimReplicartLoot .journaltext br:first-of-type,\n.journal .content .entry.draconicDepths-claimReplicartLoot .journaltext br:last-of-type,\n.journal .content .entry.ronza_chrome_voucher_claim .journaltext br:last-of-type,\n.journal .content .entry.folkloreForest-bookClaimed .journaltext br:first-of-type,\n.journal .content .entry.folkloreForest-bookClaimed .journaltext br:last-of-type {\n display: block;\n}\n.journal .content .entry.folkloreForest-bookClaimed .journaltext br + br {\n display: none;\n}\n.journal .content .entry.kings_giveaway_bonus_prize_entry .journaltext > br + br:last-of-type,\n.journal .content .entry.floatingIslands.discoveredMod .journaltext br:last-of-type,\n.journal .content .entry.wanted_poster-complete .journaltext br:last-of-type,\n.journal .content .entry.floatingIslands.fullyExplored .journaltext br:first-of-type,\n.journal .content .entry.harbour br {\n display: none;\n}\n.journal .content .entry.festiveSpiritLootBoost .journaltext > br,\n.journal .content .entry.workshopPartProduced .journaltext > br,\n.journal .content .entry.catchsuccessloot .journaltext > br:last-of-type,\n.journal .content .entry.luckycatchsuccess .journaltext > br:last-of-type {\n display: block;\n}\n.entry.queso_cannonstorm_base_trigger a:nth-of-type(2)::after,\n.entry.gift_wrapped_charm_trigger .journaltext a:last-of-type::after,\n.entry.socialGift-send .journaltext a:last-of-type::after,\n.entry.queso_geyser.eruption_started .journaltext b::after,\n.entry.torch_charm_event .journaltext a:last-of-type::after,\n.journaltext .loot:last-of-type::after,\n.journaltext .lucky:last-of-type::after,\n.journaltext .item:last-of-type::after,\n.entry.short.supplytransferitem .journaltext a::after,\n.entry.gloomyGreenwood-incense .journaltext::after,\n.journal .entry.relicHunter_complete .journaltext b:last-of-type::after,\n.journal .entry.wanted_poster-complete .journaltext b:last-of-type::after,\n.entry.halloween_boiling_cauldron.brew_finished a:first-of-type::after,\n.entry.halloween_boiling_cauldron.brew_removed a:last-of-type::after,\n.entry.folkloreForest-forewordFarm.folkloreForest-plantStarted .journaltext a::after,\n.entry.birthday_factory.enter_room b::after,\n.entry.potionuse .journaltext span:last-of-type::after,\n.entry.labyrinth-clue.labyrinth-clue-good .journaltext b:first-of-type::after,\n.entry.custom.printing_press_base_journal_entry a::after,\n.entry.folkloreForest-forewordFarm.folkloreForest-plantCancelled a:last-of-type::after,\n.entry.donationComplete .journaltext a:last-of-type::after {\n display: inline;\n content: ".";\n}\n.journaltext .better-journal-list a.lucky:last-of-type::after,\n.journaltext .better-journal-list a.item:last-of-type::after,\n.journaltext .better-journal-list a.loot:last-of-type::after,\n.entry.alchemists_cookbook_base_bonus .journaltext .loot:last-of-type::after,\n.entry.short.dailyreward a:last-of-type::after,\n.entry.short.log_summary.stats .journaltext .loot:last-of-type::after,\n.entry.convertible_open .journaltext .item:last-of-type::after,\n.entry.short.craft.convertible_open .journaltext .item:last-of-type::after,\n.entry.short.supplytransferitem .journaltext #friend-data-wrapper a::after,\n.entry.folkloreForest-plantClaimed .journaltext a:last-of-type::after,\n.entry.folkloreForest-farmToTable .journaltext .mhi-x-entry a:last-of-type::after,\n.entry.folkloreForest-forewordFarm.folkloreForest-plantStarted .journaltext a::after,\n.entry.mountain-boulderLooted a:last-of-type::after,\n.entry.short.craft.convertible_open a.item::after {\n display: none;\n content: "";\n}\n.entry.floatingIslands.fullyExplored .journaltext .item:last-of-type::after {\n content: "";\n}\n.journaltext .lucky:last-of-type::after,\n.journaltext .lucky::after {\n display: none;\n}\n';
10622
+ fullstop_default = '/* src/modules/better-journal/modules/journal-styles/styles/fullstop.css */\n.entry.short.log_summary.stats .fullstop {\n display: none;\n}\n.journal .entry .journaltext br::after {\n content: " ";\n}\n.journal .entry .journaltext br:last-child,\n.journal .content .entry .journaltext > br:last-of-type,\n.journal .content .entry .journaltext > br:first-of-type {\n display: none;\n}\n.journal .content .entry .journaltext > br + br:last-of-type,\n.journal .content .entry.world_aspect_corrupted .journaltext br,\n.journal .content .entry.floatingIslands.fullyExplored .journaltext br,\n.journal .content .entry.floatingIslands.defeatedEnemy .journaltext br,\n.journal .content .entry.folkloreForest-plantClaimed .journaltext br,\n.journal .content .entry.folkloreForest-lootFuelBoost .journaltext br,\n.journal .content .entry.relicHunter_complete .journaltext br:first-of-type,\n.journal .content .entry.wanted_poster-complete .journaltext br:first-of-type,\n.journal .content .entry.draconicDepths-claimReplicartLoot .journaltext br:first-of-type,\n.journal .content .entry.draconicDepths-claimReplicartLoot .journaltext br:last-of-type,\n.journal .content .entry.ronza_chrome_voucher_claim .journaltext br:last-of-type,\n.journal .content .entry.folkloreForest-bookClaimed .journaltext br:first-of-type,\n.journal .content .entry.folkloreForest-bookClaimed .journaltext br:last-of-type {\n display: block;\n}\n.journal .content .entry.folkloreForest-bookClaimed .journaltext br + br {\n display: none;\n}\n.journal .content .entry.kings_giveaway_bonus_prize_entry .journaltext > br + br:last-of-type,\n.journal .content .entry.floatingIslands.discoveredMod .journaltext br:last-of-type,\n.journal .content .entry.wanted_poster-complete .journaltext br:last-of-type,\n.journal .content .entry.floatingIslands.fullyExplored .journaltext br:first-of-type,\n.journal .content .entry.harbour br {\n display: none;\n}\n.journal .content .entry.festiveSpiritLootBoost .journaltext > br,\n.journal .content .entry.workshopPartProduced .journaltext > br,\n.journal .content .entry.catchsuccessloot .journaltext > br:last-of-type,\n.journal .content .entry.luckycatchsuccess .journaltext > br:last-of-type {\n display: block;\n}\n.entry.queso_cannonstorm_base_trigger a:nth-of-type(2)::after,\n.entry.gift_wrapped_charm_trigger .journaltext a:last-of-type::after,\n.entry.socialGift-send .journaltext a:last-of-type::after,\n.entry.queso_geyser.eruption_started .journaltext b::after,\n.entry.torch_charm_event .journaltext a:last-of-type::after,\n.journaltext .loot:last-of-type::after,\n.journaltext .lucky:last-of-type::after,\n.journaltext .item:last-of-type::after,\n.entry.short.supplytransferitem .journaltext a::after,\n.entry.gloomyGreenwood-incense .journaltext::after,\n.journal .entry.relicHunter_complete .journaltext b:last-of-type::after,\n.journal .entry.wanted_poster-complete .journaltext b:last-of-type::after,\n.entry.halloween_boiling_cauldron.brew_finished a:first-of-type::after,\n.entry.halloween_boiling_cauldron.brew_removed a:last-of-type::after,\n.entry.folkloreForest-forewordFarm.folkloreForest-plantStarted .journaltext a::after,\n.entry.birthday_factory.enter_room b::after,\n.entry.potionuse .journaltext span:last-of-type::after,\n.entry.labyrinth-clue.labyrinth-clue-good .journaltext b:first-of-type::after,\n.entry.custom.printing_press_base_journal_entry a::after,\n.entry.folkloreForest-forewordFarm.folkloreForest-plantCancelled a:last-of-type::after,\n.entry.donationComplete .journaltext a:last-of-type::after {\n display: inline;\n content: ".";\n}\n.journaltext .better-journal-list a.lucky:last-of-type::after,\n.journaltext .better-journal-list a.item:last-of-type::after,\n.journaltext .better-journal-list a.loot:last-of-type::after,\n.entry.alchemists_cookbook_base_bonus .journaltext .loot:last-of-type::after,\n.entry.short.dailyreward a:last-of-type::after,\n.entry.short.log_summary.stats .journaltext .loot:last-of-type::after,\n.entry.convertible_open .journaltext .item:last-of-type::after,\n.entry.short.craft.convertible_open .journaltext .item:last-of-type::after,\n.entry.short.supplytransferitem .journaltext #friend-data-wrapper a::after,\n.entry.folkloreForest-plantClaimed .journaltext a:last-of-type::after,\n.entry.folkloreForest-farmToTable .journaltext .mhi-x-entry a:last-of-type::after,\n.entry.folkloreForest-forewordFarm.folkloreForest-plantStarted .journaltext a::after,\n.entry.mountain-boulderLooted a:last-of-type::after,\n.entry.short.craft.convertible_open a.item::after {\n display: none;\n content: "";\n}\n.journal .content .entry .journaltext .lucky::after {\n display: inline-block;\n width: 12px;\n height: 12px;\n vertical-align: middle;\n filter: opacity(0.6);\n}\n.entry.floatingIslands.fullyExplored .journaltext .item:last-of-type::after {\n content: "";\n}\n.journaltext .lucky:last-of-type::after,\n.journaltext .lucky::after {\n display: block;\n}\n';
10618
10623
  }
10619
10624
  });
10620
10625
 
@@ -35145,51 +35150,59 @@ var mhui = (() => {
35145
35150
  });
35146
35151
 
35147
35152
  // src/modules/experiments/modules/sort-daily-draw-reverse/index.js
35148
- var reversedContainers, reverseDailyDrawElements, _originalTogglePopup, init39, sort_daily_draw_reverse_default;
35153
+ var reversedContainers, originalTogglePopup, init39, sort_daily_draw_reverse_default;
35149
35154
  var init_sort_daily_draw_reverse = __esm({
35150
35155
  "src/modules/experiments/modules/sort-daily-draw-reverse/index.js"() {
35151
35156
  reversedContainers = /* @__PURE__ */ new WeakMap();
35152
- reverseDailyDrawElements = () => {
35157
+ init39 = () => {
35153
35158
  var _a;
35154
- const container = (_a = document.querySelector(".daily_draw")) == null ? void 0 : _a.parentElement;
35155
- if (!container) {
35159
+ if (originalTogglePopup) {
35156
35160
  return;
35157
35161
  }
35158
- const dailyDrawDivs = [...container.querySelectorAll(".daily_draw")];
35159
- if (dailyDrawDivs.length < 2) {
35162
+ if (!((_a = messenger == null ? void 0 : messenger.UI) == null ? void 0 : _a.notification)) {
35160
35163
  return;
35161
35164
  }
35162
- const firstEntry = dailyDrawDivs[0];
35163
- const lastEntry = dailyDrawDivs.at(-1);
35164
- const reversedOrder = reversedContainers.get(container);
35165
- if ((reversedOrder == null ? void 0 : reversedOrder.first) === firstEntry && (reversedOrder == null ? void 0 : reversedOrder.last) === lastEntry) {
35166
- return;
35167
- }
35168
- const emptyDiv = container.querySelector(".empty");
35169
- dailyDrawDivs.reverse().forEach((div) => {
35170
- if (emptyDiv) {
35171
- emptyDiv.before(div);
35172
- } else {
35173
- container.append(div);
35174
- }
35175
- });
35176
- reversedContainers.set(container, {
35177
- first: lastEntry,
35178
- last: firstEntry
35179
- });
35180
- };
35181
- init39 = () => __async(null, null, function* () {
35182
- var _a;
35183
- if (_originalTogglePopup || !((_a = messenger == null ? void 0 : messenger.UI) == null ? void 0 : _a.notification)) {
35184
- return;
35185
- }
35186
- _originalTogglePopup = messenger.UI.notification.togglePopup;
35165
+ originalTogglePopup = messenger.UI.notification.togglePopup;
35187
35166
  messenger.UI.notification.togglePopup = function(...args) {
35188
- const result = _originalTogglePopup.apply(this, args);
35189
- setTimeout(reverseDailyDrawElements, 400);
35167
+ const result = originalTogglePopup.apply(this, args);
35168
+ const observer = new MutationObserver((_mutations, obs) => {
35169
+ const dailyDraw = document.querySelector(".daily_draw");
35170
+ if (dailyDraw) {
35171
+ const container = dailyDraw.parentElement;
35172
+ if (!container) {
35173
+ return;
35174
+ }
35175
+ const dailyDrawDivs = [...container.querySelectorAll(".daily_draw")];
35176
+ if (dailyDrawDivs.length === 0) {
35177
+ return;
35178
+ }
35179
+ const lastSorted = reversedContainers.get(container);
35180
+ if (lastSorted && lastSorted.length === dailyDrawDivs.length && lastSorted.every((el, index) => el === dailyDrawDivs[index])) {
35181
+ obs.disconnect();
35182
+ return;
35183
+ }
35184
+ const emptyDiv = container.querySelector(".empty");
35185
+ dailyDrawDivs.reverse().forEach((div) => {
35186
+ if (emptyDiv) {
35187
+ emptyDiv.before(div);
35188
+ } else {
35189
+ container.append(div);
35190
+ }
35191
+ });
35192
+ reversedContainers.set(container, [...container.querySelectorAll(".daily_draw")]);
35193
+ obs.disconnect();
35194
+ }
35195
+ });
35196
+ observer.observe(document.body, {
35197
+ childList: true,
35198
+ subtree: true
35199
+ });
35200
+ setTimeout(() => {
35201
+ observer.disconnect();
35202
+ }, 5e3);
35190
35203
  return result;
35191
35204
  };
35192
- });
35205
+ };
35193
35206
  sort_daily_draw_reverse_default = {
35194
35207
  id: "reverse-daily-draw-order",
35195
35208
  name: "Daily Draw: Reverse Order",
@@ -35552,7 +35565,7 @@ var mhui = (() => {
35552
35565
  var styles_default54;
35553
35566
  var init_styles55 = __esm({
35554
35567
  "src/modules/favorite-setups/styles.css"() {
35555
- styles_default54 = '/* src/modules/favorite-setups/styles.css */\n.mh-improved-favorite-setups-button {\n position: relative;\n display: block;\n padding: 5px 10px;\n margin: 5px 0;\n font-size: 12px;\n font-weight: 700;\n line-height: 31px;\n color: #4e300b;\n cursor: pointer;\n background: #f6f3eb;\n border: 1px solid #d3cecb;\n border-radius: 4px;\n box-shadow: -1px 1px 3px #d3cecb inset;\n}\n.mh-improved-favorite-setups-button-label {\n position: absolute;\n top: 0;\n right: 10px;\n bottom: 0;\n display: flex;\n align-items: center;\n font-size: 13px;\n font-weight: 100;\n color: #8e6642;\n vertical-align: bottom;\n}\n.mh-improved-favorite-setups-button:hover {\n text-decoration: none;\n}\n.mh-dark-mode .pageFrameView #mousehuntContainer.PageCamp .mh-improved-favorite-setups-button:hover {\n background-color: #494949;\n}\n.mh-improved-favorite-setups-blueprint-container {\n position: absolute;\n inset: 0;\n color: #4e300b;\n}\n.mh-improved-favorite-setups-blueprint-container .header {\n margin-top: 10px;\n font-size: 13px;\n color: #8e6642;\n text-align: center;\n}\n.mh-improved-favorite-setups-blueprint-container .content {\n position: absolute;\n inset: 35px 5px 10px;\n overflow-y: auto;\n}\n.mh-improved-favorite-setups-blueprint-container .row {\n display: grid;\n grid-template-columns: 1fr 30px repeat(4, 45px);\n align-items: center;\n height: auto;\n min-height: 50px;\n padding: 3px;\n margin-bottom: 7px;\n background: #fff;\n border: 1px solid #ceb7a6;\n border-radius: 5px;\n}\n.mh-improved-favorite-setups-blueprint-container .location-favorites {\n padding: 10px 0;\n margin: 10px 0;\n}\n.mh-improved-favorite-setups-blueprint-container .row.location-favorite {\n position: relative;\n background-color: #fdfacf;\n}\n.mh-improved-favorite-setups-blueprint-container .row.location-favorite:last-child {\n margin-bottom: 0;\n}\n.mh-improved-favorite-setups-blueprint-container .row .campPage-trap-itemBrowser-favorite-item-image {\n width: 100%;\n height: 45px;\n border-radius: 0;\n}\n.mh-improved-favorite-setups-blueprint-container .row.editing {\n grid-template-columns: 1fr repeat(4, 40px);\n align-items: start;\n}\n.mh-improved-favorite-setups-blueprint-container .controls {\n position: relative;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: space-around;\n height: 50px;\n}\n.mh-improved-favorite-setups-blueprint-container .button-wrapper {\n display: flex;\n gap: 5px;\n align-items: center;\n justify-content: center;\n}\n.mh-improved-favorite-setups-blueprint-container .campPage-trap-itemBrowser-favorite-item {\n width: 100%;\n}\n.mh-improved-favorite-setups-blueprint-container .controls .label {\n padding: 0;\n font-size: 12px;\n text-align: center;\n}\n.mh-improved-favorite-setups-blueprint-container .controls .action {\n padding: 4px 6px;\n font-size: 11px;\n font-weight: 400;\n line-height: inherit;\n}\n.mh-improved-favorite-setups-blueprint-container .controls .action.arm {\n padding: 4px 10px;\n}\n.mh-improved-favorite-setups-blueprint-container .edit {\n position: absolute;\n right: 10px;\n}\n.mh-improved-favorite-setups-blueprint-container .controls .delete,\n.mh-improved-favorite-setups-blueprint-container .editing .controls .delete,\n.mh-improved-favorite-setups-blueprint-container .editing .controls .edit-setup,\n.mh-improved-favorite-setups-blueprint-container.editing .controls .edit-setup,\n.mh-improved-favorite-setups-blueprint-container .controls .save-setup,\n.mh-improved-favorite-setups-blueprint-container .controls .cancel-setup,\n.mh-improved-favorite-setups-blueprint-container.editing .controls .arm,\n.mh-improved-favorite-setups-blueprint-container .editing .controls .arm {\n display: none;\n}\n.mh-improved-favorite-setups-blueprint-container .editing .controls .delete,\n.mh-improved-favorite-setups-blueprint-container .editing .controls .save-setup,\n.mh-improved-favorite-setups-blueprint-container .editing .controls .cancel-setup {\n display: block;\n}\n.mh-improved-favorite-setups-blueprint-container .row.flash {\n background-color: #b9ffb9;\n}\n.mh-dark .mh-improved-favorite-setups-blueprint-container .row.flash {\n background-color: var(--d-green-dark);\n}\n.mh-improved-favorite-setups-blueprint-container .controls input {\n width: 165px;\n padding: 3px;\n}\n.row.editing .campPage-trap-itemBrowser-favorite-item::after {\n position: absolute;\n right: 5px;\n bottom: -8px;\n left: 5px;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 2px 0;\n content: "edit";\n background-color: rgb(238 238 238 / 93%);\n border: 1px solid #585858;\n border-radius: 5px;\n}\n.mh-dark .row.editing .campPage-trap-itemBrowser-favorite-item::after {\n background-color: var(--d-action);\n border-color: var(--d-border);\n}\n.row.editing .campPage-trap-itemBrowser-favorite-item:hover::after {\n background-color: #ccc;\n}\n.mh-dark .row.editing .campPage-trap-itemBrowser-favorite-item:hover::after {\n background-color: var(--d-alt);\n}\n.mh-improved-favorite-setups-blueprint-container .editing .campPage-trap-itemBrowser-favorite-item:hover .campPage-trap-itemBrowser-favorite-item-image {\n opacity: 0.8;\n}\n.mh-improved-favorite-setups-component-picker-popup-body-items {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 10px;\n}\n.mh-improved-favorite-setups-component-picker .prefix,\n.mh-improved-favorite-setups-component-picker .content {\n background-color: #f6f3eb;\n}\n.mh-dark .mh-improved-favorite-setups-component-picker .prefix,\n.mh-dark .mh-improved-favorite-setups-component-picker .content {\n background-color: var(--d-bg);\n}\n.mh-improved-favorite-setups-component-picker .content .content {\n max-height: 90vh;\n overflow: auto;\n}\n.mh-improved-favorite-setups-component-picker .campPage-trap-itemBrowser-item {\n width: auto;\n max-width: 300px;\n}\n.mh-improved-favorite-setups-component-picker-popup-search {\n display: flex;\n align-items: center;\n justify-content: space-around;\n margin-bottom: 20px;\n}\n.mh-improved-favorite-setups-component-picker-popup-search input {\n width: 350px;\n padding: 10px;\n}\n.mh-improved-favorite-setups-component-picker .campPage-trap-itemBrowser-item-description {\n margin-left: 0;\n}\n.mh-improved-favorite-setups-component-picker .trinket .campPage-trap-itemBrowser-item-content {\n width: 80%;\n}\na.random-title::after {\n position: absolute;\n top: 3px;\n right: 3px;\n z-index: 1;\n box-sizing: border-box;\n display: block;\n width: 18px;\n height: 18px;\n content: "";\n background-color: #ccc;\n background-image: url(\'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" class="size-6"><path fill-rule="evenodd" d="M9 4.5a.75.75 0 0 1 .721.544l.813 2.846a3.75 3.75 0 0 0 2.576 2.576l2.846.813a.75.75 0 0 1 0 1.442l-2.846.813a3.75 3.75 0 0 0-2.576 2.576l-.813 2.846a.75.75 0 0 1-1.442 0l-.813-2.846a3.75 3.75 0 0 0-2.576-2.576l-2.846-.813a.75.75 0 0 1 0-1.442l2.846-.813A3.75 3.75 0 0 0 7.466 7.89l.813-2.846A.75.75 0 0 1 9 4.5ZM18 1.5a.75.75 0 0 1 .728.568l.258 1.036c.236.94.97 1.674 1.91 1.91l1.036.258a.75.75 0 0 1 0 1.456l-1.036.258c-.94.236-1.674.97-1.91 1.91l-.258 1.036a.75.75 0 0 1-1.456 0l-.258-1.036a2.625 2.625 0 0 0-1.91-1.91l-1.036-.258a.75.75 0 0 1 0-1.456l1.036-.258a2.625 2.625 0 0 0 1.91-1.91l.258-1.036A.75.75 0 0 1 18 1.5ZM16.5 15a.75.75 0 0 1 .712.513l.394 1.183c.15.447.5.799.948.948l1.183.395a.75.75 0 0 1 0 1.422l-1.183.395c-.447.15-.799.5-.948.948l-.395 1.183a.75.75 0 0 1-1.422 0l-.395-1.183a1.5 1.5 0 0 0-.948-.948l-1.183-.395a.75.75 0 0 1 0-1.422l1.183-.395c.447-.15.799-.5.948-.948l.395-1.183A.75.75 0 0 1 16.5 15Z" clip-rule="evenodd" /></svg>\');\n background-repeat: no-repeat;\n background-position: center;\n background-size: 15px;\n border-radius: 20%;\n}\n.mh-dark a.random-title::after {\n background-color: var(--d-action);\n}\na.random-title:hover::after {\n background-color: #ddd;\n}\n.mh-dark a.random-title:hover::after {\n background-color: var(--d-alt);\n}\na.random-title.loading::after {\n animation: mh-improved-glow 1s linear infinite;\n}\n@media (prefers-reduced-motion: reduce) {\n a.random-title.loading::after {\n animation: none;\n }\n}\n.mh-improved-favorite-setups-blueprint-container .editing .controls .label {\n position: relative;\n}\n.mh-improved-favorite-setups-blueprint-container .row .mh-improved-favorite-setups-power-type-wrapper .campPage-trap-itemBrowser-favorite-item-image {\n width: 25px;\n height: 25px;\n opacity: 0.8;\n}\n.mh-improved-favorite-setups-component-picker-popup .campPage-trap-itemBrowser-item-statContainer {\n width: 75%;\n margin-top: 5px;\n}\n.mh-improved-favorite-setups-component-picker-popup .campPage-trap-itemBrowser-item-content {\n width: 80%;\n}\n.mh-improved-favorite-setups-blueprint-container .editing .campPage-trap-itemBrowser-item-powerType {\n display: none;\n}\n.mh-improved-favorite-setups-blueprint-container .campPage-trap-itemBrowser-item-powerType {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n width: 25px;\n}\n.mh-improved-favorite-setups-blueprint-container .campPage-trap-itemBrowser-item-powerType.hidden {\n visibility: hidden;\n}\n.mh-improved-favorite-setups-blueprint-container .campPage-trap-itemBrowser-item-powerType::before {\n box-sizing: border-box;\n width: 20px;\n height: 20px;\n background-color: transparent;\n border: none;\n}\n.mh-improved-favorite-setups-blueprint-container .row:hover .controls .action.arm {\n outline: 2px solid #eab35d;\n}\n.mh-improved-favorite-setups-blueprint-container .row.editing .campPage-trap-itemBrowser-favorite-item-image {\n height: 40px;\n}\n.mh-improved-favorite-setups-blueprint-container .row.editing a.move-down::after,\n.mh-improved-favorite-setups-blueprint-container .row.editing a.move-up::after {\n position: absolute;\n top: 0;\n right: 0;\n width: 18px;\n height: 18px;\n content: "";\n background-repeat: no-repeat;\n background-size: contain;\n opacity: 0.4;\n}\n.mh-improved-favorite-setups-blueprint-container .row.editing a.move-up::after {\n position: absolute;\n right: 13px;\n background: url(\'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor"><path fill-rule="evenodd" d="M10 17a.75.75 0 0 1-.75-.75V5.612L5.29 9.77a.75.75 0 0 1-1.08-1.04l5.25-5.5a.75.75 0 0 1 1.08 0l5.25 5.5a.75.75 0 1 1-1.08 1.04l-3.96-4.158V16.25A.75.75 0 0 1 10 17Z" clip-rule="evenodd" /></svg>\');\n}\n.mh-improved-favorite-setups-blueprint-container .row.editing a.move-down::after {\n background: url(\'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor"><path fill-rule="evenodd" d="M10 3a.75.75 0 0 1 .75.75v10.638l3.96-4.158a.75.75 0 1 1 1.08 1.04l-5.25 5.5a.75.75 0 0 1-1.08 0l-5.25-5.5a.75.75 0 1 1 1.08-1.04l3.96 4.158V3.75A.75.75 0 0 1 10 3Z" clip-rule="evenodd" /></svg>\');\n}\n.mh-improved-favorite-setups-blueprint-container .row.editing a.move-down:hover::after,\n.mh-improved-favorite-setups-blueprint-container .row.editing a.move-up:hover::after {\n opacity: 1;\n}\n.mh-improved-favorite-setups-blueprint-container .row:last-child .move-down {\n display: none;\n}\n.mh-improved-favorite-setups-blueprint-container .row:nth-child(2) .move-up {\n display: none;\n}\n.pageFrameView #mousehuntContainer.PageCamp .mh-improved-favorite-setups-button:hover {\n background-color: #fdfaf2;\n}\n.mh-dark-mode .pageFrameView .mh-improved-favorite-setups-blueprint-container .campPage-trap-itemBrowser-item-powerType::after {\n color: #000;\n}\n.mh-dark-mode .mh-improved-favorite-setups-button-label {\n color: #e0d3b3;\n}\n.mh-dark-mode .mh-improved-favorite-setups-button-text {\n color: #ebebeb;\n}\n.mousehuntHeaderView .menuItem.mousehunt-improved-favorite-setups-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 25px;\n padding: 0;\n}\n.mousehunt-improved-favorite-setups-icon::before {\n display: block;\n width: 15px;\n height: 15px;\n content: "";\n background-image: url(\'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor"><path fill-rule="evenodd" d="M10.868 2.884c-.321-.772-1.415-.772-1.736 0l-1.83 4.401-4.753.381c-.833.067-1.171 1.107-.536 1.651l3.62 3.102-1.106 4.637c-.194.813.691 1.456 1.405 1.02L10 15.591l4.069 2.485c.713.436 1.598-.207 1.404-1.02l-1.106-4.637 3.62-3.102c.635-.544.297-1.584-.536-1.65l-4.752-.382-1.831-4.401Z" clip-rule="evenodd" /></svg>\');\n background-repeat: no-repeat;\n background-size: contain;\n opacity: 0.5;\n}\n.mousehunt-improved-favorite-setups-icon:hover::before {\n opacity: 1;\n}\n.mh-improved-favorite-setups-blueprint-container .editing .controls .action {\n padding: 2px 6px;\n}\n.mh-improved-favorite-setups-blueprint-container .location-favorite .controls .edit-setup {\n display: none;\n}\n.campPage-trap-itemBrowser-favorite-item.loading .campPage-trap-itemBrowser-favorite-item-image::after {\n position: absolute;\n inset: 0;\n content: "";\n background: center / 15px no-repeat url(https://www.mousehuntgame.com/images/ui/loaders/drip_spinner.gif), center / contain repeat url(https://www.mousehuntgame.com/images/ui/backgrounds/overlay.png);\n}\n.row .campPage-trap-itemBrowser-favorite-item {\n pointer-events: none;\n}\n.row.editing .campPage-trap-itemBrowser-favorite-item.clickable {\n pointer-events: auto;\n}\n.row.mobile-setup {\n background-color: #d1ebed;\n}\n.mh-dark .row.mobile-setup {\n background-color: var(--d-cyan-dark);\n}\n.row.mobile-setup .edit-setup {\n display: none;\n}\n.mh-improved-favorite-setups-blueprint-container .row.draggable {\n position: relative;\n cursor: move;\n}\n.mh-improved-favorite-setups-blueprint-container .campPage-trap-itemBrowser-item-powerType::after {\n font-size: 9px;\n}\n.mh-improved-favorite-setups-blueprint-container .row.dragging {\n opacity: 0.5;\n transform: scale(0.95);\n}\n.mh-improved-favorite-setups-blueprint-container .drag-handle {\n position: absolute;\n top: 50%;\n left: 0;\n padding: 5px;\n font-size: 14px;\n color: #666;\n cursor: grab;\n user-select: none;\n transform: translateY(-50%);\n}\n.mh-dark .mh-improved-favorite-setups-blueprint-container .drag-handle {\n color: var(--d-text-muted);\n}\n.mh-improved-favorite-setups-blueprint-container .row.editing .drag-handle {\n display: none;\n}\n.mh-improved-favorite-setups-blueprint-container .drag-handle:active {\n cursor: grabbing;\n}\n.mh-improved-favorite-setups-blueprint-container .placeholder {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 50px;\n margin: 5px 0;\n background:\n linear-gradient(\n 45deg,\n #f0f0f0 25%,\n transparent 25%) center,\n linear-gradient(\n -45deg,\n #f0f0f0 25%,\n transparent 25%),\n linear-gradient(\n 45deg,\n transparent 75%,\n #f0f0f0 75%),\n linear-gradient(\n -45deg,\n transparent 75%,\n #f0f0f0 75%);\n background-size: 10px 10px;\n border: 2px dashed #ccc;\n}\n.mh-dark .mh-improved-favorite-setups-blueprint-container .placeholder {\n background:\n linear-gradient(\n 45deg,\n var(--d-alt) 25%,\n transparent 25%) center,\n linear-gradient(\n -45deg,\n var(--d-alt) 25%,\n transparent 25%),\n linear-gradient(\n 45deg,\n transparent 75%,\n var(--d-alt) 75%),\n linear-gradient(\n -45deg,\n transparent 75%,\n var(--d-alt) 75%);\n background-size: 10px 10px;\n border-color: var(--d-action);\n}\n.mh-improved-favorite-setups-blueprint-container .placeholder-text {\n font-style: italic;\n color: #999;\n}\n';
35568
+ styles_default54 = '/* src/modules/favorite-setups/styles.css */\n.mh-improved-favorite-setups-button {\n position: relative;\n display: block;\n padding: 5px 10px;\n margin: 5px 0;\n font-size: 12px;\n font-weight: 700;\n line-height: 31px;\n color: #4e300b;\n cursor: pointer;\n background: #f6f3eb;\n border: 1px solid #d3cecb;\n border-radius: 4px;\n box-shadow: -1px 1px 3px #d3cecb inset;\n}\n.mh-improved-favorite-setups-button-label {\n position: absolute;\n top: 0;\n right: 10px;\n bottom: 0;\n display: flex;\n align-items: center;\n font-size: 13px;\n font-weight: 100;\n color: #8e6642;\n vertical-align: bottom;\n}\n.mh-improved-favorite-setups-button:hover {\n text-decoration: none;\n}\n.mh-dark-mode .pageFrameView #mousehuntContainer.PageCamp .mh-improved-favorite-setups-button:hover {\n background-color: #494949;\n}\n.mh-improved-favorite-setups-blueprint-container {\n position: absolute;\n inset: 0;\n color: #4e300b;\n}\n.mh-improved-favorite-setups-blueprint-container .header {\n margin-top: 10px;\n font-size: 13px;\n color: #8e6642;\n text-align: center;\n}\n.mh-improved-favorite-setups-blueprint-container .content {\n position: absolute;\n inset: 35px 5px 10px;\n overflow-y: auto;\n}\n.mh-improved-favorite-setups-blueprint-container .row {\n display: grid;\n grid-template-columns: 1fr 30px repeat(4, 45px);\n align-items: center;\n height: auto;\n min-height: 50px;\n padding: 3px;\n margin-bottom: 7px;\n background: #fff;\n border: 1px solid #ceb7a6;\n border-radius: 5px;\n}\n.mh-improved-favorite-setups-blueprint-container .location-favorites {\n padding: 10px 0;\n margin: 10px 0;\n}\n.mh-improved-favorite-setups-blueprint-container .row.location-favorite {\n position: relative;\n background-color: #fdfacf;\n}\n.mh-improved-favorite-setups-blueprint-container .row.location-favorite:last-child {\n margin-bottom: 0;\n}\n.mh-improved-favorite-setups-blueprint-container .row .campPage-trap-itemBrowser-favorite-item-image {\n width: 100%;\n height: 45px;\n border-radius: 0;\n}\n.mh-improved-favorite-setups-blueprint-container .row.editing {\n grid-template-columns: 1fr repeat(4, 40px);\n align-items: start;\n}\n.mh-improved-favorite-setups-blueprint-container .controls {\n position: relative;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: space-around;\n height: 50px;\n}\n.mh-improved-favorite-setups-blueprint-container .button-wrapper {\n display: flex;\n gap: 5px;\n align-items: center;\n justify-content: center;\n}\n.mh-improved-favorite-setups-blueprint-container .campPage-trap-itemBrowser-favorite-item {\n width: 100%;\n}\n.mh-improved-favorite-setups-blueprint-container .controls .label {\n padding: 0;\n font-size: 12px;\n text-align: center;\n}\n.mh-improved-favorite-setups-blueprint-container .controls .action {\n padding: 4px 6px;\n font-size: 11px;\n font-weight: 400;\n line-height: inherit;\n}\n.mh-improved-favorite-setups-blueprint-container .controls .action.arm {\n padding: 4px 10px;\n}\n.mh-improved-favorite-setups-blueprint-container .edit {\n position: absolute;\n right: 10px;\n}\n.mh-improved-favorite-setups-blueprint-container .controls .delete,\n.mh-improved-favorite-setups-blueprint-container .editing .controls .delete,\n.mh-improved-favorite-setups-blueprint-container .editing .controls .edit-setup,\n.mh-improved-favorite-setups-blueprint-container.editing .controls .edit-setup,\n.mh-improved-favorite-setups-blueprint-container .controls .save-setup,\n.mh-improved-favorite-setups-blueprint-container .controls .cancel-setup,\n.mh-improved-favorite-setups-blueprint-container.editing .controls .arm,\n.mh-improved-favorite-setups-blueprint-container .editing .controls .arm {\n display: none;\n}\n.mh-improved-favorite-setups-blueprint-container .editing .controls .delete,\n.mh-improved-favorite-setups-blueprint-container .editing .controls .save-setup,\n.mh-improved-favorite-setups-blueprint-container .editing .controls .cancel-setup {\n display: block;\n}\n.mh-improved-favorite-setups-blueprint-container .row.flash {\n background-color: #b9ffb9;\n}\n.mh-dark .mh-improved-favorite-setups-blueprint-container .row.flash {\n background-color: var(--d-green-dark);\n}\n.mh-improved-favorite-setups-blueprint-container .controls input {\n width: 165px;\n padding: 3px;\n}\n.row.editing .campPage-trap-itemBrowser-favorite-item::after {\n position: absolute;\n right: 5px;\n bottom: -8px;\n left: 5px;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 2px 0;\n content: "edit";\n background-color: rgb(238 238 238 / 93%);\n border: 1px solid #585858;\n border-radius: 5px;\n}\n.mh-dark .row.editing .campPage-trap-itemBrowser-favorite-item::after {\n background-color: var(--d-action);\n border-color: var(--d-border);\n}\n.row.editing .campPage-trap-itemBrowser-favorite-item:hover::after {\n background-color: #ccc;\n}\n.mh-dark .row.editing .campPage-trap-itemBrowser-favorite-item:hover::after {\n background-color: var(--d-alt);\n}\n.mh-improved-favorite-setups-blueprint-container .editing .campPage-trap-itemBrowser-favorite-item:hover .campPage-trap-itemBrowser-favorite-item-image {\n opacity: 0.8;\n}\n.mh-improved-favorite-setups-component-picker-popup-body-items {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(230px, 1fr));\n gap: 8px;\n}\n.mh-improved-favorite-setups-component-picker .prefix,\n.mh-improved-favorite-setups-component-picker .content {\n background-color: #f6f3eb;\n}\n.mh-dark .mh-improved-favorite-setups-component-picker .prefix,\n.mh-dark .mh-improved-favorite-setups-component-picker .content {\n background-color: var(--d-bg);\n}\n.mh-improved-favorite-setups-component-picker .content .content {\n max-height: 90vh;\n overflow: auto;\n}\n.mh-improved-favorite-setups-component-picker .campPage-trap-itemBrowser-item {\n display: flex;\n gap: 8px;\n width: auto;\n min-height: unset;\n padding: 5px;\n margin-bottom: 0;\n}\n.mh-improved-favorite-setups-component-picker .campPage-trap-itemBrowser-item-leftBar {\n flex: 0 0 55px;\n width: auto;\n}\n.mh-improved-favorite-setups-component-picker .campPage-trap-itemBrowser-item-powerType {\n width: auto;\n height: auto;\n}\n.mh-improved-favorite-setups-component-picker-popup-search {\n display: flex;\n align-items: center;\n justify-content: space-around;\n margin-bottom: 20px;\n}\n.mh-improved-favorite-setups-component-picker-popup-search input {\n width: 350px;\n padding: 10px;\n}\n.mh-improved-favorite-setups-component-picker .campPage-trap-itemBrowser-item-description {\n margin-left: 0;\n}\na.random-title::after {\n position: absolute;\n top: 3px;\n right: 3px;\n z-index: 1;\n box-sizing: border-box;\n display: block;\n width: 18px;\n height: 18px;\n content: "";\n background-color: #ccc;\n background-image: url(\'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" class="size-6"><path fill-rule="evenodd" d="M9 4.5a.75.75 0 0 1 .721.544l.813 2.846a3.75 3.75 0 0 0 2.576 2.576l2.846.813a.75.75 0 0 1 0 1.442l-2.846.813a3.75 3.75 0 0 0-2.576 2.576l-.813 2.846a.75.75 0 0 1-1.442 0l-.813-2.846a3.75 3.75 0 0 0-2.576-2.576l-2.846-.813a.75.75 0 0 1 0-1.442l2.846-.813A3.75 3.75 0 0 0 7.466 7.89l.813-2.846A.75.75 0 0 1 9 4.5ZM18 1.5a.75.75 0 0 1 .728.568l.258 1.036c.236.94.97 1.674 1.91 1.91l1.036.258a.75.75 0 0 1 0 1.456l-1.036.258c-.94.236-1.674.97-1.91 1.91l-.258 1.036a.75.75 0 0 1-1.456 0l-.258-1.036a2.625 2.625 0 0 0-1.91-1.91l-1.036-.258a.75.75 0 0 1 0-1.456l1.036-.258a2.625 2.625 0 0 0 1.91-1.91l.258-1.036A.75.75 0 0 1 18 1.5ZM16.5 15a.75.75 0 0 1 .712.513l.394 1.183c.15.447.5.799.948.948l1.183.395a.75.75 0 0 1 0 1.422l-1.183.395c-.447.15-.799.5-.948.948l-.395 1.183a.75.75 0 0 1-1.422 0l-.395-1.183a1.5 1.5 0 0 0-.948-.948l-1.183-.395a.75.75 0 0 1 0-1.422l1.183-.395c.447-.15.799-.5.948-.948l.395-1.183A.75.75 0 0 1 16.5 15Z" clip-rule="evenodd" /></svg>\');\n background-repeat: no-repeat;\n background-position: center;\n background-size: 15px;\n border-radius: 20%;\n}\n.mh-dark a.random-title::after {\n background-color: var(--d-action);\n}\na.random-title:hover::after {\n background-color: #ddd;\n}\n.mh-dark a.random-title:hover::after {\n background-color: var(--d-alt);\n}\na.random-title.loading::after {\n animation: mh-improved-glow 1s linear infinite;\n}\n@media (prefers-reduced-motion: reduce) {\n a.random-title.loading::after {\n animation: none;\n }\n}\n.mh-improved-favorite-setups-blueprint-container .editing .controls .label {\n position: relative;\n}\n.mh-improved-favorite-setups-blueprint-container .row .mh-improved-favorite-setups-power-type-wrapper .campPage-trap-itemBrowser-favorite-item-image {\n width: 25px;\n height: 25px;\n opacity: 0.8;\n}\n.mh-improved-favorite-setups-component-picker-popup .campPage-trap-itemBrowser-item-statContainer {\n width: 100%;\n margin-top: 5px;\n}\n.mh-improved-favorite-setups-component-picker-popup .campPage-trap-itemBrowser-item-content {\n flex: 1;\n width: auto;\n min-width: 0;\n}\n.mh-improved-favorite-setups-blueprint-container .editing .campPage-trap-itemBrowser-item-powerType {\n display: none;\n}\n.mh-improved-favorite-setups-blueprint-container .campPage-trap-itemBrowser-item-powerType {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n width: 25px;\n}\n.mh-improved-favorite-setups-blueprint-container .campPage-trap-itemBrowser-item-powerType.hidden {\n visibility: hidden;\n}\n.mh-improved-favorite-setups-blueprint-container .campPage-trap-itemBrowser-item-powerType::before {\n box-sizing: border-box;\n width: 20px;\n height: 20px;\n background-color: transparent;\n border: none;\n}\n.mh-improved-favorite-setups-blueprint-container .row:hover .controls .action.arm {\n outline: 2px solid #eab35d;\n}\n.mh-improved-favorite-setups-blueprint-container .row.editing .campPage-trap-itemBrowser-favorite-item-image {\n height: 40px;\n}\n.mh-improved-favorite-setups-blueprint-container .row.editing a.move-down::after,\n.mh-improved-favorite-setups-blueprint-container .row.editing a.move-up::after {\n position: absolute;\n top: 0;\n right: 0;\n width: 18px;\n height: 18px;\n content: "";\n background-repeat: no-repeat;\n background-size: contain;\n opacity: 0.4;\n}\n.mh-improved-favorite-setups-blueprint-container .row.editing a.move-up::after {\n position: absolute;\n right: 13px;\n background: url(\'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor"><path fill-rule="evenodd" d="M10 17a.75.75 0 0 1-.75-.75V5.612L5.29 9.77a.75.75 0 0 1-1.08-1.04l5.25-5.5a.75.75 0 0 1 1.08 0l5.25 5.5a.75.75 0 1 1-1.08 1.04l-3.96-4.158V16.25A.75.75 0 0 1 10 17Z" clip-rule="evenodd" /></svg>\');\n}\n.mh-improved-favorite-setups-blueprint-container .row.editing a.move-down::after {\n background: url(\'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor"><path fill-rule="evenodd" d="M10 3a.75.75 0 0 1 .75.75v10.638l3.96-4.158a.75.75 0 1 1 1.08 1.04l-5.25 5.5a.75.75 0 0 1-1.08 0l-5.25-5.5a.75.75 0 1 1 1.08-1.04l3.96 4.158V3.75A.75.75 0 0 1 10 3Z" clip-rule="evenodd" /></svg>\');\n}\n.mh-improved-favorite-setups-blueprint-container .row.editing a.move-down:hover::after,\n.mh-improved-favorite-setups-blueprint-container .row.editing a.move-up:hover::after {\n opacity: 1;\n}\n.mh-improved-favorite-setups-blueprint-container .row:last-child .move-down {\n display: none;\n}\n.mh-improved-favorite-setups-blueprint-container .row:nth-child(2) .move-up {\n display: none;\n}\n.pageFrameView #mousehuntContainer.PageCamp .mh-improved-favorite-setups-button:hover {\n background-color: #fdfaf2;\n}\n.mh-dark-mode .pageFrameView .mh-improved-favorite-setups-blueprint-container .campPage-trap-itemBrowser-item-powerType::after {\n color: #000;\n}\n.mh-dark-mode .mh-improved-favorite-setups-button-label {\n color: #e0d3b3;\n}\n.mh-dark-mode .mh-improved-favorite-setups-button-text {\n color: #ebebeb;\n}\n.mousehuntHeaderView .menuItem.mousehunt-improved-favorite-setups-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 25px;\n padding: 0;\n}\n.mousehunt-improved-favorite-setups-icon::before {\n display: block;\n width: 15px;\n height: 15px;\n content: "";\n background-image: url(\'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor"><path fill-rule="evenodd" d="M10.868 2.884c-.321-.772-1.415-.772-1.736 0l-1.83 4.401-4.753.381c-.833.067-1.171 1.107-.536 1.651l3.62 3.102-1.106 4.637c-.194.813.691 1.456 1.405 1.02L10 15.591l4.069 2.485c.713.436 1.598-.207 1.404-1.02l-1.106-4.637 3.62-3.102c.635-.544.297-1.584-.536-1.65l-4.752-.382-1.831-4.401Z" clip-rule="evenodd" /></svg>\');\n background-repeat: no-repeat;\n background-size: contain;\n opacity: 0.5;\n}\n.mousehunt-improved-favorite-setups-icon:hover::before {\n opacity: 1;\n}\n.mh-improved-favorite-setups-blueprint-container .editing .controls .action {\n padding: 2px 6px;\n}\n.mh-improved-favorite-setups-blueprint-container .location-favorite .controls .edit-setup {\n display: none;\n}\n.campPage-trap-itemBrowser-favorite-item.loading .campPage-trap-itemBrowser-favorite-item-image::after {\n position: absolute;\n inset: 0;\n content: "";\n background: center / 15px no-repeat url(https://www.mousehuntgame.com/images/ui/loaders/drip_spinner.gif), center / contain repeat url(https://www.mousehuntgame.com/images/ui/backgrounds/overlay.png);\n}\n.row .campPage-trap-itemBrowser-favorite-item {\n pointer-events: none;\n}\n.row.editing .campPage-trap-itemBrowser-favorite-item.clickable {\n pointer-events: auto;\n}\n.row.mobile-setup {\n background-color: #d1ebed;\n}\n.mh-dark .row.mobile-setup {\n background-color: var(--d-cyan-dark);\n}\n.row.mobile-setup .edit-setup {\n display: none;\n}\n.mh-improved-favorite-setups-blueprint-container .row.draggable {\n position: relative;\n cursor: move;\n}\n.mh-improved-favorite-setups-blueprint-container .campPage-trap-itemBrowser-item-powerType::after {\n font-size: 9px;\n}\n.mh-improved-favorite-setups-blueprint-container .row.dragging {\n opacity: 0.5;\n transform: scale(0.95);\n}\n.mh-improved-favorite-setups-blueprint-container .drag-handle {\n position: absolute;\n top: 50%;\n left: 0;\n padding: 5px;\n font-size: 14px;\n color: #666;\n cursor: grab;\n user-select: none;\n transform: translateY(-50%);\n}\n.mh-dark .mh-improved-favorite-setups-blueprint-container .drag-handle {\n color: var(--d-text-muted);\n}\n.mh-improved-favorite-setups-blueprint-container .row.editing .drag-handle {\n display: none;\n}\n.mh-improved-favorite-setups-blueprint-container .drag-handle:active {\n cursor: grabbing;\n}\n.mh-improved-favorite-setups-blueprint-container .placeholder {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 50px;\n margin: 5px 0;\n background:\n linear-gradient(\n 45deg,\n #f0f0f0 25%,\n transparent 25%) center,\n linear-gradient(\n -45deg,\n #f0f0f0 25%,\n transparent 25%),\n linear-gradient(\n 45deg,\n transparent 75%,\n #f0f0f0 75%),\n linear-gradient(\n -45deg,\n transparent 75%,\n #f0f0f0 75%);\n background-size: 10px 10px;\n border: 2px dashed #ccc;\n}\n.mh-dark .mh-improved-favorite-setups-blueprint-container .placeholder {\n background:\n linear-gradient(\n 45deg,\n var(--d-alt) 25%,\n transparent 25%) center,\n linear-gradient(\n -45deg,\n var(--d-alt) 25%,\n transparent 25%),\n linear-gradient(\n 45deg,\n transparent 75%,\n var(--d-alt) 75%),\n linear-gradient(\n -45deg,\n transparent 75%,\n var(--d-alt) 75%);\n background-size: 10px 10px;\n border-color: var(--d-action);\n}\n.mh-improved-favorite-setups-blueprint-container .placeholder-text {\n font-style: italic;\n color: #999;\n}\n.mh-improved-favorite-setups-blueprint-container .row.has-missing-items {\n border-color: #c14b4b;\n}\n.mh-dark .mh-improved-favorite-setups-blueprint-container .row.has-missing-items {\n border-color: var(--d-red-dark);\n}\n.mh-improved-favorite-setups-blueprint-container .campPage-trap-itemBrowser-favorite-item.missing-item .campPage-trap-itemBrowser-favorite-item-image {\n background-color: #ffdada;\n filter: grayscale(90%);\n border: 2px solid #c14b4b;\n border-radius: 3px;\n}\n.mh-dark .mh-improved-favorite-setups-blueprint-container .campPage-trap-itemBrowser-favorite-item.missing-item .campPage-trap-itemBrowser-favorite-item-image {\n background-color: var(--d-red-darker);\n border-color: var(--d-red-dark);\n}\n.mh-improved-favorite-setups-blueprint-container .row.flash-error {\n background-color: #ffdada;\n}\n.mh-dark .mh-improved-favorite-setups-blueprint-container .row.flash-error {\n background-color: var(--d-red-darker);\n}\n';
35556
35569
  }
35557
35570
  });
35558
35571
 
@@ -35584,7 +35597,7 @@ var mhui = (() => {
35584
35597
  });
35585
35598
 
35586
35599
  // src/modules/favorite-setups/index.js
35587
- var getFavoriteSetups, getGeneratedName, saveFavoriteSetup, removeMobileSetups, normalizeSetup, getCurrentSetup, itemThumbs2, addImage, getCheeseEffect, getPowerTypeId, makeImagePicker, armItem, makeSortable, updateSetupOrder, makeBlueprintRow, makeBlueprintContainer, getNameOfCurrentSetup, updateFavoriteSetupName, setMobileFavourite, deleteMobileFavourite, postMobileTrapAction, addFavoriteSetupsButton, toggleFavoriteSetups, addIcon, init42, favorite_setups_default2;
35600
+ var getFavoriteSetups, getGeneratedName, saveFavoriteSetup, removeMobileSetups, normalizeSetup, getCurrentSetup, itemThumbs2, addImage, getCheeseEffect, getPowerTypeId, componentsCacheKey, componentsRequest, getTrapComponents, clearTrapComponents, getArmableItemIds, getMissingItemTypes, highlightMissingItems, highlightMissingItemsInContainer, makeImagePicker, armItem, makeSortable, updateSetupOrder, makeBlueprintRow, makeBlueprintContainer, getNameOfCurrentSetup, updateFavoriteSetupName, setMobileFavourite, deleteMobileFavourite, postMobileTrapAction, addFavoriteSetupsButton, toggleFavoriteSetups, addIcon, init42, favorite_setups_default2;
35588
35601
  var init_favorite_setups2 = __esm({
35589
35602
  "src/modules/favorite-setups/index.js"() {
35590
35603
  init_utils2();
@@ -35747,7 +35760,7 @@ var mhui = (() => {
35747
35760
  addImage = (type, id, appendTo) => __async(null, null, function* () {
35748
35761
  var _a;
35749
35762
  const wrapper = makeElement("div", "campPage-trap-itemBrowser-favorite-item");
35750
- wrapper.setAttribute("data-item-id", id);
35763
+ wrapper.setAttribute("data-item-id", id || "");
35751
35764
  wrapper.setAttribute("data-item-type", type);
35752
35765
  wrapper.setAttribute("title", "Click to change ".concat(type));
35753
35766
  const item = makeElement("div", ["campPage-trap-itemBrowser-favorite-item-image"]);
@@ -35794,25 +35807,94 @@ var mhui = (() => {
35794
35807
  };
35795
35808
  return data[powerType] || powerType;
35796
35809
  };
35797
- makeImagePicker = (setupId, type, currentId, callback) => __async(null, null, function* () {
35798
- let components;
35799
- const cached = sessionGet("mh-improved-favorite-setups-components");
35810
+ componentsCacheKey = "mh-improved-favorite-setups-components";
35811
+ getTrapComponents = () => __async(null, null, function* () {
35812
+ const cached = sessionGet(componentsCacheKey);
35800
35813
  if (cached) {
35801
- components = cached;
35802
- } else {
35803
- const response = yield doRequest("managers/ajax/users/gettrapcomponents.php");
35804
- components = (response == null ? void 0 : response.components) || [];
35805
- components.sort((a, b) => {
35806
- if (a.name < b.name) {
35807
- return -1;
35808
- }
35809
- if (a.name > b.name) {
35810
- return 1;
35811
- }
35812
- return 0;
35814
+ return cached;
35815
+ }
35816
+ if (!componentsRequest) {
35817
+ componentsRequest = doRequest("managers/ajax/users/gettrapcomponents.php").then((response) => {
35818
+ const components = (response == null ? void 0 : response.components) || [];
35819
+ components.sort((a, b) => {
35820
+ if (a.name < b.name) {
35821
+ return -1;
35822
+ }
35823
+ if (a.name > b.name) {
35824
+ return 1;
35825
+ }
35826
+ return 0;
35827
+ });
35828
+ sessionSet(componentsCacheKey, components);
35829
+ componentsRequest = null;
35830
+ return components;
35831
+ }).catch(() => {
35832
+ componentsRequest = null;
35833
+ return [];
35813
35834
  });
35814
- sessionSet("mh-improved-favorite-setups-components", components);
35815
35835
  }
35836
+ return componentsRequest;
35837
+ });
35838
+ clearTrapComponents = () => {
35839
+ sessionDelete(componentsCacheKey);
35840
+ componentsRequest = null;
35841
+ };
35842
+ getArmableItemIds = () => __async(null, null, function* () {
35843
+ const components = yield getTrapComponents();
35844
+ const ids = /* @__PURE__ */ new Set();
35845
+ for (const item of components) {
35846
+ if (!(item == null ? void 0 : item.item_id)) {
35847
+ continue;
35848
+ }
35849
+ const isConsumable = "bait" === item.classification || "trinket" === item.classification;
35850
+ if (isConsumable && void 0 !== item.quantity && Number.parseInt(item.quantity, 10) <= 0) {
35851
+ continue;
35852
+ }
35853
+ ids.add(item.item_id.toString());
35854
+ }
35855
+ return ids;
35856
+ });
35857
+ getMissingItemTypes = (setup, armable) => {
35858
+ return ["bait", "base", "weapon", "trinket"].filter((type) => {
35859
+ const itemId = setup == null ? void 0 : setup["".concat(type, "_id")];
35860
+ return itemId && !armable.has(itemId.toString());
35861
+ });
35862
+ };
35863
+ highlightMissingItems = (rows) => __async(null, null, function* () {
35864
+ if (!rows.length) {
35865
+ return;
35866
+ }
35867
+ const armable = yield getArmableItemIds();
35868
+ if (!armable.size) {
35869
+ return;
35870
+ }
35871
+ rows.forEach((row) => {
35872
+ const missing = [];
35873
+ const images = row.querySelectorAll(".campPage-trap-itemBrowser-favorite-item");
35874
+ images.forEach((image) => {
35875
+ const itemId = image.getAttribute("data-item-id");
35876
+ const itemType = image.getAttribute("data-item-type");
35877
+ if (itemId && !armable.has(itemId.toString())) {
35878
+ missing.push(itemType);
35879
+ image.classList.add("missing-item");
35880
+ image.setAttribute("title", "You don't have this ".concat(itemType, " anymore. Click to change ").concat(itemType));
35881
+ } else {
35882
+ image.classList.remove("missing-item");
35883
+ image.setAttribute("title", "Click to change ".concat(itemType));
35884
+ }
35885
+ });
35886
+ row.classList.toggle("has-missing-items", missing.length > 0);
35887
+ const armButton = row.querySelector(".action.arm");
35888
+ if (armButton) {
35889
+ armButton.setAttribute("title", missing.length ? "You don't have the ".concat(missing.join(", "), " for this setup anymore.") : "");
35890
+ }
35891
+ });
35892
+ });
35893
+ highlightMissingItemsInContainer = (container) => __async(null, null, function* () {
35894
+ yield highlightMissingItems(container.querySelectorAll('.row[data-setup-id]:not([data-setup-id="current"])'));
35895
+ });
35896
+ makeImagePicker = (setupId, type, currentId, callback) => __async(null, null, function* () {
35897
+ const components = yield getTrapComponents();
35816
35898
  const items7 = components.filter((item) => item.classification === type);
35817
35899
  let content = '<div class="mh-improved-favorite-setups-component-picker-popup">';
35818
35900
  content += '<div class="mh-improved-favorite-setups-component-picker-popup-body">';
@@ -35820,7 +35902,7 @@ var mhui = (() => {
35820
35902
  content += '<input type="text" placeholder="Search" id="mh-improved-favorite-setups-component-picker-popup-search-input" />';
35821
35903
  content += '<div class="mh-improved-favorites-setups-component-picker-popup-use-current mousehuntActionButton" title="Use current item"><span>Use currently armed item</span></div>';
35822
35904
  content += "</div>";
35823
- content += '<div class="mh-improved-favorite-setups-component-picker-popup-body-items">';
35905
+ content += '<div class="mh-improved-favorite-setups-component-picker-popup-body-items '.concat(type, '">');
35824
35906
  for (const item of items7) {
35825
35907
  const getStatRow = (stat, title, formatted, compare) => {
35826
35908
  let compareStat = item[stat];
@@ -36117,6 +36199,17 @@ var mhui = (() => {
36117
36199
  if (!thisSetup) {
36118
36200
  return;
36119
36201
  }
36202
+ const armable = yield getArmableItemIds();
36203
+ if (armable.size) {
36204
+ const missing = getMissingItemTypes(thisSetup, armable);
36205
+ if (missing.length) {
36206
+ yield highlightMissingItems([setupContainer]);
36207
+ setupContainer.classList.add("flash-error");
36208
+ setTimeout(() => setupContainer.classList.remove("flash-error"), 1e3);
36209
+ armButton.classList.remove("loading");
36210
+ return;
36211
+ }
36212
+ }
36120
36213
  const toArm = [];
36121
36214
  if (thisSetup.base_id && thisSetup.base_id != user.base_item_id) {
36122
36215
  toArm.push({ id: thisSetup.base_id, type: "base" });
@@ -36131,7 +36224,16 @@ var mhui = (() => {
36131
36224
  toArm.push({ id: thisSetup.bait_id, type: "bait" });
36132
36225
  }
36133
36226
  if (toArm.length) {
36134
- yield armItem(toArm);
36227
+ try {
36228
+ yield armItem(toArm);
36229
+ } catch (e) {
36230
+ clearTrapComponents();
36231
+ yield highlightMissingItems([setupContainer]);
36232
+ setupContainer.classList.add("flash-error");
36233
+ setTimeout(() => setupContainer.classList.remove("flash-error"), 1e3);
36234
+ armButton.classList.remove("loading");
36235
+ return;
36236
+ }
36135
36237
  }
36136
36238
  const currentSetupRow = document.querySelector('.mh-improved-favorite-setups-blueprint-container .row[data-setup-id="current"]');
36137
36239
  if (currentSetupRow) {
@@ -36258,6 +36360,7 @@ var mhui = (() => {
36258
36360
  }
36259
36361
  const itemType = image.getAttribute("data-item-type");
36260
36362
  newSetup["".concat(itemType, "_id")] = newItemId;
36363
+ image.setAttribute("data-item-id", newItemId);
36261
36364
  image.removeAttribute("data-new-item-id");
36262
36365
  image.removeAttribute("data-new-item-image");
36263
36366
  image.removeAttribute("data-old-image-url");
@@ -36279,6 +36382,7 @@ var mhui = (() => {
36279
36382
  yield setMobileFavourite(mobileIndex, newSetup);
36280
36383
  }
36281
36384
  updateFavoriteSetupName();
36385
+ yield highlightMissingItems([setupContainer]);
36282
36386
  stopEditing();
36283
36387
  })
36284
36388
  })
@@ -36420,6 +36524,7 @@ var mhui = (() => {
36420
36524
  }
36421
36525
  container.append(body);
36422
36526
  makeSortable(body);
36527
+ highlightMissingItemsInContainer(body);
36423
36528
  return container;
36424
36529
  });
36425
36530
  getNameOfCurrentSetup = () => __async(null, null, function* () {
@@ -36523,6 +36628,8 @@ var mhui = (() => {
36523
36628
  }
36524
36629
  timeoutId = setTimeout(updateFavoriteSetupName, 500);
36525
36630
  });
36631
+ onRequest("users/gettrapcomponents.php", clearTrapComponents);
36632
+ onRequest("users/changetrap.php", clearTrapComponents);
36526
36633
  if (getSetting("experiments.favorite-setups-toggle", false)) {
36527
36634
  addIcon();
36528
36635
  }
@@ -37490,7 +37597,7 @@ var mhui = (() => {
37490
37597
  });
37491
37598
 
37492
37599
  // src/modules/gifts-in-inbox/index.js
37493
- var STATE_KEY, TAB_TYPE, TAB_NAME, NEW_GIFT_MAX_AGE, _togglePopup, didBindClicks, cachedLinks, cacheTime, getState, saveState, markState, isInState, isNewGift, isUnseenGift, escapeHtml, formatMessageDate, getGiftName, getFinderText, getExpiresText, parseGiftCredentials, normalizeLink, fetchRewardLinks, buildMessage, showClaimed, showClaimError, claimGiftInPlace, markGiftsSeen, showGiftTab, deactivateGiftTab, hasOtherUnreadMessages, refreshGiftTabState, renderGiftTab, bindClickTracking, hookInbox, init46, gifts_in_inbox_default;
37600
+ var STATE_KEY, TAB_TYPE, TAB_NAME, NEW_GIFT_MAX_AGE, _togglePopup, _renderTabs, didBindClicks, cachedLinks, cacheTime, getState, saveState, markState, isInState, isNewGift, isUnseenGift, escapeHtml, formatMessageDate, getGiftName, getFinderText, getExpiresText, parseGiftCredentials, normalizeLink, fetchRewardLinks, buildMessage, showClaimed, showClaimError, claimGiftInPlace, markGiftsSeen, showGiftTab, deactivateGiftTab, hasOtherUnreadMessages, refreshGiftTabState, renderGiftTab, bindClickTracking, hookInbox, init46, gifts_in_inbox_default;
37494
37601
  var init_gifts_in_inbox = __esm({
37495
37602
  "src/modules/gifts-in-inbox/index.js"() {
37496
37603
  init_utils2();
@@ -37501,6 +37608,7 @@ var mhui = (() => {
37501
37608
  TAB_NAME = "Gift Links";
37502
37609
  NEW_GIFT_MAX_AGE = 5 * 24 * 60 * 60 * 1e3;
37503
37610
  _togglePopup = null;
37611
+ _renderTabs = null;
37504
37612
  didBindClicks = false;
37505
37613
  cachedLinks = [];
37506
37614
  cacheTime = 0;
@@ -37939,6 +38047,19 @@ var mhui = (() => {
37939
38047
  })).catch((error2) => debug2("Unable to render gift links tab", error2));
37940
38048
  return result;
37941
38049
  };
38050
+ if (!_renderTabs) {
38051
+ _renderTabs = messenger.UI.notification.renderTabs;
38052
+ }
38053
+ messenger.UI.notification.renderTabs = function(...args) {
38054
+ const wasActive = Boolean(document.querySelector('#messengerUINotification .notificationMessageList .tab[data-tab="'.concat(TAB_TYPE, '"].active')));
38055
+ const result = _renderTabs.apply(this, args);
38056
+ renderGiftTab().then(() => {
38057
+ if (wasActive) {
38058
+ showGiftTab();
38059
+ }
38060
+ }).catch((error2) => debug2("Unable to re-render gift links tab", error2));
38061
+ return result;
38062
+ };
37942
38063
  };
37943
38064
  init46 = () => {
37944
38065
  addStyles(styles_default56, "gifts-in-inbox");
@@ -37948,13 +38069,17 @@ var mhui = (() => {
37948
38069
  }
37949
38070
  fetchRewardLinks();
37950
38071
  onDeactivation("gifts-in-inbox", () => {
37951
- var _a, _b, _c;
38072
+ var _a, _b, _c, _d;
37952
38073
  if (_togglePopup && ((_a = messenger == null ? void 0 : messenger.UI) == null ? void 0 : _a.notification)) {
37953
38074
  messenger.UI.notification.togglePopup = _togglePopup;
37954
38075
  _togglePopup = null;
37955
38076
  }
37956
- (_b = document.querySelector('#messengerUINotification .tabs a[data-tab="'.concat(TAB_TYPE, '"]'))) == null ? void 0 : _b.remove();
37957
- (_c = document.querySelector('#messengerUINotification .notificationMessageList .tab[data-tab="'.concat(TAB_TYPE, '"]'))) == null ? void 0 : _c.remove();
38077
+ if (_renderTabs && ((_b = messenger == null ? void 0 : messenger.UI) == null ? void 0 : _b.notification)) {
38078
+ messenger.UI.notification.renderTabs = _renderTabs;
38079
+ _renderTabs = null;
38080
+ }
38081
+ (_c = document.querySelector('#messengerUINotification .tabs a[data-tab="'.concat(TAB_TYPE, '"]'))) == null ? void 0 : _c.remove();
38082
+ (_d = document.querySelector('#messengerUINotification .notificationMessageList .tab[data-tab="'.concat(TAB_TYPE, '"]'))) == null ? void 0 : _d.remove();
37958
38083
  });
37959
38084
  };
37960
38085
  gifts_in_inbox_default = {
@@ -44165,7 +44290,7 @@ var mhui = (() => {
44165
44290
  var ledger_default;
44166
44291
  var init_ledger = __esm({
44167
44292
  "src/modules/location-huds/locations/cerulean-skyport/ledger.css"() {
44168
- ledger_default = "/* src/modules/location-huds/locations/cerulean-skyport/ledger.css */\n.mh-improved-skyport-ledger-button {\n display: block;\n width: fit-content;\n margin-top: 8px;\n}\n.headsUpDisplayCeruleanSkyportView__overlay.mh-improved-skyport-ledger-overlay.active {\n position: fixed;\n inset: 0;\n z-index: 95;\n display: flex;\n height: auto;\n overflow: auto;\n}\n.mh-improved-skyport-ledger-overlay .headsUpDisplayCeruleanSkyportView__dialogContainer.active {\n top: 20vh;\n margin: auto;\n}\n.mh-improved-skyport-ledger-overlay .headsUpDisplayCeruleanSkyportView__dialogPadding {\n padding: 20px 0 10px;\n}\n.mh-improved-skyport-ledger-overlay .headsUpDisplayCeruleanSkyportView__logDialogItemContainer .name {\n color: #fff;\n}\n.mh-dark .mh-improved-skyport-ledger-overlay .headsUpDisplayCeruleanSkyportView__logDialogItemContainer .name {\n color: var(--color-text-dark);\n}\n";
44293
+ ledger_default = "/* src/modules/location-huds/locations/cerulean-skyport/ledger.css */\n.mh-improved-skyport-ledger-button {\n display: block;\n width: fit-content;\n margin-top: 8px;\n}\n.headsUpDisplayCeruleanSkyportView__overlay.mh-improved-skyport-ledger-overlay.active {\n position: fixed;\n inset: 0;\n z-index: 95;\n display: flex;\n height: auto;\n overflow: auto;\n}\n.mh-improved-skyport-ledger-overlay .headsUpDisplayCeruleanSkyportView__dialogContainer.active {\n top: 20vh;\n margin: auto;\n}\n.mh-improved-skyport-ledger-overlay .headsUpDisplayCeruleanSkyportView__dialogPadding {\n padding: 20px 0 10px;\n}\n.mh-improved-skyport-ledger-overlay .headsUpDisplayCeruleanSkyportView__logDialogItemContainer .name {\n color: #fff;\n}\n.mh-dark .mh-improved-skyport-ledger-overlay .headsUpDisplayCeruleanSkyportView__logDialogItemContainer .name {\n color: var(--d-text);\n}\n.mh-dark .mh-improved-skyport-ledger-overlay .headsUpDisplayCeruleanSkyportView__logDialogItemContainer .special .name {\n color: var(--d-text-dark);\n}\n";
44169
44294
  }
44170
44295
  });
44171
44296
 
@@ -44497,12 +44622,12 @@ var mhui = (() => {
44497
44622
  var styles_default82;
44498
44623
  var init_styles83 = __esm({
44499
44624
  "src/modules/location-huds/locations/cerulean-skyport/styles.css"() {
44500
- styles_default82 = '/* src/modules/location-huds/locations/cerulean-skyport/styles.css */\n.headsUpDisplayCeruleanSkyportView__logDialogItemContainer .quantity {\n padding: 1px 0;\n}\n.headsUpDisplayCeruleanSkyportView .headsUpDisplayCeruleanSkyportView__frame {\n transition: 0.5s ease;\n}\n.ceruleanSkyportInventoryView__inventoryBlockImage {\n width: 33px;\n height: 34px;\n}\n.headsUpDisplayCeruleanSkyportView__basicBaitContainer .headsUpDisplayCeruleanSkyportView__basicBait,\n.headsUpDisplayCeruleanSkyportView__baitCraftableContainer {\n transform: scale(1.1);\n}\nbutton.headsUpDisplayCeruleanSkyportView__basicBaitButton {\n left: 98px;\n}\n.headsUpDisplayCeruleanSkyportView__upsellContainer .upsellItemActionView-cost-image {\n box-shadow: none;\n}\n.ceruleanSkyportRaidChoiceDialogView__raidCostContainer {\n right: 5px;\n}\n.ceruleanSkyportShippingView__huntsRemainingContainer:hover .ceruleanSkyportShippingView__hourglassIcon {\n animation: mh-improved-shake 0.5s infinite;\n}\n.headsUpDisplayCeruleanSkyportView__airship .floatingIslandsAirship.animate,\n.ceruleanSkyportShippingView__currentShipmentDirigible {\n animation: dirigibleFloat 7s ease-in-out infinite;\n}\n.ceruleanSkyportShippingView__currentShipmentDirigible {\n transition: filter 0.2s ease-out;\n animation-duration: 6s;\n}\n.headsUpDisplayCeruleanSkyportView__airship .floatingIslandsAirship.animate {\n animation-delay: 0.5s;\n}\n.headsUpDisplayCeruleanSkyportView__airship {\n transition: filter 0.2s ease-out;\n}\n.headsUpDisplayCeruleanSkyportView__airship:hover {\n filter: brightness(1.08) drop-shadow(0 2px 3px rgb(18 44 64 / 35%));\n}\n.headsUpDisplayCeruleanSkyportView__airship:active {\n filter: brightness(0.98) drop-shadow(0 1px 1px rgb(18 44 64 / 25%));\n}\n.headsUpDisplayCeruleanSkyportView:has(.headsUpDisplayCeruleanSkyportView__logButton:not(.disabled)) .ceruleanSkyportShippingView__currentShipmentDirigibleHull {\n cursor: pointer;\n}\n.headsUpDisplayCeruleanSkyportView:has(.headsUpDisplayCeruleanSkyportView__logButton:not(.disabled)) .ceruleanSkyportShippingView__currentShipmentDirigible:hover {\n filter: brightness(1.08) drop-shadow(0 2px 3px rgb(18 44 64 / 35%));\n}\n.headsUpDisplayCeruleanSkyportView:has(.headsUpDisplayCeruleanSkyportView__logButton:not(.disabled)) .ceruleanSkyportShippingView__currentShipmentDirigible:active {\n filter: brightness(0.98) drop-shadow(0 1px 1px rgb(18 44 64 / 25%));\n}\n.headsUpDisplayCeruleanSkyportView__childView .ceruleanSkyportShippingView__foreground {\n transition: transform 0.25s ease-out;\n}\n.headsUpDisplayCeruleanSkyportView__childView:hover .ceruleanSkyportShippingView__foreground {\n transform: translateY(2px);\n}\n.ceruleanSkyportShippingView__shipmentRewardItem,\n.ceruleanSkyportShippingView__shipmentQuantity {\n transition: filter 0.2s ease-out, transform 0.2s ease-out;\n}\n.ceruleanSkyportShippingView__shipmentSecuredContainer:hover .ceruleanSkyportShippingView__shipmentRewardItem {\n filter: brightness(1.12) drop-shadow(0 1px 2px rgb(27 44 62 / 35%));\n transform: translateY(-1px) rotate(-2deg) scale(1.04);\n}\n.ceruleanSkyportShippingView__shipmentSecuredContainer:hover .ceruleanSkyportShippingView__shipmentQuantity {\n transform: translateY(-1px);\n}\n.headsUpDisplayCeruleanSkyportView__logDialogHeaderDirigible {\n animation: dirigibleFloat 3s ease-in-out infinite;\n animation-delay: 0.5s;\n}\n.headsUpDisplayCeruleanSkyportView__logDialogHeaderColonelAirship {\n animation: dirigibleFloat 4s ease-in-out infinite;\n}\n.ceruleanSkyportRaidView {\n overflow: hidden;\n}\n.ceruleanSkyportRaidView__raidForeground {\n animation: mh-improved-skyport-raid-cabin 7s ease-in-out infinite;\n}\n.ceruleanSkyportRaidView__raidBackground {\n animation: mh-improved-skyport-raid-terrain 19s ease-in-out infinite;\n}\n.ceruleanSkyportRaidView__raidBackground::before,\n.ceruleanSkyportRaidView__raidBackground::after {\n position: absolute;\n top: 0;\n left: 0;\n width: 200%;\n height: 100%;\n content: "";\n background-repeat: repeat-x;\n background-size: 50% 100%;\n}\n.ceruleanSkyportRaidView__raidBackground::before {\n animation: mh-improved-skyport-raid-clouds 24s linear infinite;\n}\n.ceruleanSkyportRaidView__raidBackground::after {\n animation: mh-improved-skyport-raid-clouds 47s linear infinite;\n}\n.ceruleanSkyportRaidView__raidProgressBar {\n position: relative;\n overflow: hidden;\n}\n.ceruleanSkyportRaidView__raidProgressBar::after {\n position: absolute;\n inset: 0;\n pointer-events: none;\n content: "";\n background:\n linear-gradient(\n 90deg,\n transparent 30%,\n rgb(255 255 255 / 42%) 50%,\n transparent 70%);\n transform: translateX(-125%);\n animation: mh-improved-skyport-raid-progress-sheen 4.5s ease-in-out infinite;\n}\n.headsUpDisplayCeruleanSkyportView__fuelToggleButton {\n transition: filter 0.15s ease-out, transform 0.15s ease-out;\n}\n.headsUpDisplayCeruleanSkyportView__fuelContainer.active .headsUpDisplayCeruleanSkyportView__fuelToggleButton {\n animation: mh-improved-skyport-fuel-ready 2.8s ease-in-out infinite;\n}\n.headsUpDisplayCeruleanSkyportView__fuelToggleButton:active {\n transform: scale(0.96);\n}\n@keyframes mh-improved-skyport-raid-cabin {\n 0%, 100% {\n transform: scale(1.02) translate3d(0, 0, 0) rotate(-0.15deg);\n }\n 50% {\n transform: scale(1.02) translate3d(1px, 3px, 0) rotate(0.15deg);\n }\n}\n@keyframes mh-improved-skyport-raid-terrain {\n 0%, 100% {\n transform: scale(1.04) translate3d(-3px, -1px, 0);\n }\n 50% {\n transform: scale(1.06) translate3d(3px, 1px, 0);\n }\n}\n@keyframes mh-improved-skyport-raid-clouds {\n 0% {\n transform: translate3d(0, 0, 0);\n }\n 100% {\n transform: translate3d(-50%, 0, 0);\n }\n}\n@keyframes mh-improved-skyport-raid-progress-sheen {\n 0%, 20% {\n transform: translateX(-125%);\n }\n 55%, 100% {\n transform: translateX(125%);\n }\n}\n@keyframes mh-improved-skyport-fuel-ready {\n 0%, 100% {\n filter: brightness(1);\n }\n 50% {\n filter: brightness(1.12) drop-shadow(0 0 3px rgb(187 86 255 / 70%));\n }\n}\n@media (prefers-reduced-motion: reduce) {\n .ceruleanSkyportShippingView__huntsRemainingContainer:hover .ceruleanSkyportShippingView__hourglassIcon,\n .headsUpDisplayCeruleanSkyportView__logDialogHeaderColonelAirship,\n .headsUpDisplayCeruleanSkyportView__logDialogHeaderDirigible,\n .ceruleanSkyportShippingView__currentShipmentDirigible,\n .ceruleanSkyportRaidView__raidForeground,\n .ceruleanSkyportRaidView__raidBackground,\n .ceruleanSkyportRaidView__raidBackground::before,\n .ceruleanSkyportRaidView__raidBackground::after,\n .ceruleanSkyportRaidView__raidProgressBar::after,\n .headsUpDisplayCeruleanSkyportView__fuelContainer.active .headsUpDisplayCeruleanSkyportView__fuelToggleButton {\n animation: none;\n }\n .headsUpDisplayCeruleanSkyportView__childView:hover .ceruleanSkyportShippingView__foreground {\n transform: none;\n }\n}\n.headsUpDisplayCeruleanSkyportView__logDialogLootContainer {\n max-width: 115px;\n}\n.headsUpDisplayCeruleanSkyportView__logDialogLootName.name {\n width: auto;\n max-width: 115px;\n padding: 0 2px;\n white-space: break-spaces;\n}\n.headsUpDisplayCeruleanSkyportView__logDialogPointsImageThumbnail,\n.headsUpDisplayCeruleanSkyportView__logDialogGoldImageThumbnail,\n.headsUpDisplayCeruleanSkyportView__logDialogLootImageThumbnail {\n position: relative;\n}\n.headsUpDisplayCeruleanSkyportView__logDialogGoldContainer .quantity,\n.headsUpDisplayCeruleanSkyportView__logDialogPointsContainer .quantity,\n.headsUpDisplayCeruleanSkyportView__logDialogItemContainer .quantity {\n position: absolute;\n right: 0;\n bottom: 0;\n width: auto;\n min-width: 5px;\n padding: 3px;\n font-weight: 700;\n line-height: 11px;\n text-align: right;\n}\n.headsUpDisplayCeruleanSkyportView__raidInfoContainer .headsUpDisplayCeruleanSkyportView__currentRaidThumbnail {\n width: 40px;\n height: 40px;\n}\n.headsUpDisplayCeruleanSkyportView__header {\n top: 0;\n}\n.headsUpDisplayCeruleanSkyportView__headerTitle {\n top: 1px;\n left: 268px;\n width: 226px;\n border: 3px solid #717c8b;\n border-bottom: none;\n border-radius: 5% 5% 8px 12px;\n box-shadow: 0 -3px 1px -1px #323c47;\n}\n.headsUpDisplayCeruleanSkyportView__logButton:hover {\n filter: brightness(1.2);\n}\n.ceruleanSkyportInventoryView__inventoryBlockQuantity.quantity {\n height: 16px;\n}\n.headsUpDisplayCeruleanSkyportView__logDialogLootQuantity.quantity {\n position: absolute;\n right: 0;\n bottom: -4px;\n width: auto;\n min-width: 5px;\n padding: 3px;\n font-weight: 700;\n line-height: 11px;\n text-align: right;\n}\n.headsUpDisplayCeruleanSkyportView__overlay.mh-improved-skyport-ledger-overlay.active {\n background: none;\n}\n.headsUpDisplayCeruleanSkyportView__overlay.mh-improved-skyport-ledger-overlay.active::before {\n position: fixed;\n inset: 0;\n z-index: -1;\n content: "";\n background: url(https://www.mousehuntgame.com/images/ui/backgrounds/overlay.png) 0 0 repeat;\n}\n.headsUpDisplayCeruleanSkyportView__trapWarningContainer.active {\n top: 40%;\n}\n.ceruleanSkyportRaidView__raidHuntsRemainingText {\n top: 12px;\n left: 18px;\n}\n.ceruleanSkyportRaidChoiceDialogView__raidBlock button.ceruleanSkyportRaidChoiceDialogView__selectRaidButton {\n top: 70px;\n height: 35px;\n}\n';
44625
+ styles_default82 = '/* src/modules/location-huds/locations/cerulean-skyport/styles.css */\n.headsUpDisplayCeruleanSkyportView__logDialogItemContainer .quantity {\n padding: 1px 0;\n}\n.headsUpDisplayCeruleanSkyportView .headsUpDisplayCeruleanSkyportView__frame {\n transition: 0.5s ease;\n}\n.ceruleanSkyportInventoryView__inventoryBlockImage {\n width: 33px;\n height: 34px;\n}\n.headsUpDisplayCeruleanSkyportView__basicBaitContainer .headsUpDisplayCeruleanSkyportView__basicBait,\n.headsUpDisplayCeruleanSkyportView__baitCraftableContainer {\n transform: scale(1.1);\n}\nbutton.headsUpDisplayCeruleanSkyportView__basicBaitButton {\n left: 98px;\n}\n.headsUpDisplayCeruleanSkyportView__upsellContainer .upsellItemActionView-cost-image {\n box-shadow: none;\n}\n.ceruleanSkyportRaidChoiceDialogView__raidCostContainer {\n right: 5px;\n}\n.ceruleanSkyportShippingView__huntsRemainingContainer:hover .ceruleanSkyportShippingView__hourglassIcon {\n animation: mh-improved-shake 0.5s infinite;\n}\n.headsUpDisplayCeruleanSkyportView__airship .floatingIslandsAirship.animate,\n.ceruleanSkyportShippingView__currentShipmentDirigible {\n animation: dirigibleFloat 7s ease-in-out infinite;\n}\n.ceruleanSkyportShippingView__currentShipmentDirigible {\n transition: filter 0.2s ease-out;\n animation-duration: 6s;\n}\n.headsUpDisplayCeruleanSkyportView__airship .floatingIslandsAirship.animate {\n animation-delay: 0.5s;\n}\n.headsUpDisplayCeruleanSkyportView__airship {\n transition: filter 0.2s ease-out;\n}\n.headsUpDisplayCeruleanSkyportView__airship:hover {\n filter: brightness(1.08) drop-shadow(0 2px 3px rgb(18 44 64 / 35%));\n}\n.headsUpDisplayCeruleanSkyportView__airship:active {\n filter: brightness(0.98) drop-shadow(0 1px 1px rgb(18 44 64 / 25%));\n}\n.headsUpDisplayCeruleanSkyportView:has(.headsUpDisplayCeruleanSkyportView__logButton:not(.disabled)) .ceruleanSkyportShippingView__currentShipmentDirigibleHull {\n cursor: pointer;\n}\n.headsUpDisplayCeruleanSkyportView:has(.headsUpDisplayCeruleanSkyportView__logButton:not(.disabled)) .ceruleanSkyportShippingView__currentShipmentDirigible:hover {\n filter: brightness(1.08) drop-shadow(0 2px 3px rgb(18 44 64 / 35%));\n}\n.headsUpDisplayCeruleanSkyportView:has(.headsUpDisplayCeruleanSkyportView__logButton:not(.disabled)) .ceruleanSkyportShippingView__currentShipmentDirigible:active {\n filter: brightness(0.98) drop-shadow(0 1px 1px rgb(18 44 64 / 25%));\n}\n.headsUpDisplayCeruleanSkyportView__childView .ceruleanSkyportShippingView__foreground {\n transition: transform 0.25s ease-out;\n}\n.headsUpDisplayCeruleanSkyportView__childView:hover .ceruleanSkyportShippingView__foreground {\n transform: translateY(2px);\n}\n.ceruleanSkyportShippingView__shipmentRewardItem,\n.ceruleanSkyportShippingView__shipmentQuantity {\n transition: filter 0.2s ease-out, transform 0.2s ease-out;\n}\n.ceruleanSkyportShippingView__shipmentSecuredContainer:hover .ceruleanSkyportShippingView__shipmentRewardItem {\n filter: brightness(1.12) drop-shadow(0 1px 2px rgb(27 44 62 / 35%));\n transform: translateY(-1px) rotate(-2deg) scale(1.04);\n}\n.ceruleanSkyportShippingView__shipmentSecuredContainer:hover .ceruleanSkyportShippingView__shipmentQuantity {\n transform: translateY(-1px);\n}\n.headsUpDisplayCeruleanSkyportView__logDialogHeaderDirigible {\n animation: dirigibleFloat 3s ease-in-out infinite;\n animation-delay: 0.5s;\n}\n.headsUpDisplayCeruleanSkyportView__logDialogHeaderColonelAirship {\n animation: dirigibleFloat 4s ease-in-out infinite;\n}\n.ceruleanSkyportRaidView {\n overflow: hidden;\n}\n.ceruleanSkyportRaidView__raidForeground {\n animation: mh-improved-skyport-raid-cabin 7s ease-in-out infinite;\n}\n.ceruleanSkyportRaidView__raidBackground {\n animation: mh-improved-skyport-raid-terrain 19s ease-in-out infinite;\n}\n.ceruleanSkyportRaidView__raidBackground::before,\n.ceruleanSkyportRaidView__raidBackground::after {\n position: absolute;\n top: 0;\n left: 0;\n width: 200%;\n height: 100%;\n content: "";\n background-repeat: repeat-x;\n background-size: 50% 100%;\n}\n.ceruleanSkyportRaidView__raidBackground::before {\n animation: mh-improved-skyport-raid-clouds 24s linear infinite;\n}\n.ceruleanSkyportRaidView__raidBackground::after {\n animation: mh-improved-skyport-raid-clouds 47s linear infinite;\n}\n.ceruleanSkyportRaidView__raidProgressBar {\n position: relative;\n overflow: hidden;\n}\n.ceruleanSkyportRaidView__raidProgressBar::after {\n position: absolute;\n inset: 0;\n pointer-events: none;\n content: "";\n background:\n linear-gradient(\n 90deg,\n transparent 30%,\n rgb(255 255 255 / 42%) 50%,\n transparent 70%);\n transform: translateX(-125%);\n animation: mh-improved-skyport-raid-progress-sheen 4.5s ease-in-out infinite;\n}\n.headsUpDisplayCeruleanSkyportView__fuelToggleButton {\n transition: filter 0.15s ease-out, transform 0.15s ease-out;\n}\n.headsUpDisplayCeruleanSkyportView__fuelContainer.active .headsUpDisplayCeruleanSkyportView__fuelToggleButton {\n animation: mh-improved-skyport-fuel-ready 2.8s ease-in-out infinite;\n}\n.headsUpDisplayCeruleanSkyportView__fuelToggleButton:active {\n transform: scale(0.96);\n}\n@keyframes mh-improved-skyport-raid-cabin {\n 0%, 100% {\n transform: scale(1.02) translate3d(0, 0, 0) rotate(-0.15deg);\n }\n 50% {\n transform: scale(1.02) translate3d(1px, 3px, 0) rotate(0.15deg);\n }\n}\n@keyframes mh-improved-skyport-raid-terrain {\n 0%, 100% {\n transform: scale(1.04) translate3d(-3px, -1px, 0);\n }\n 50% {\n transform: scale(1.06) translate3d(3px, 1px, 0);\n }\n}\n@keyframes mh-improved-skyport-raid-clouds {\n 0% {\n transform: translate3d(0, 0, 0);\n }\n 100% {\n transform: translate3d(-50%, 0, 0);\n }\n}\n@keyframes mh-improved-skyport-raid-progress-sheen {\n 0%, 20% {\n transform: translateX(-125%);\n }\n 55%, 100% {\n transform: translateX(125%);\n }\n}\n@keyframes mh-improved-skyport-fuel-ready {\n 0%, 100% {\n filter: brightness(1);\n }\n 50% {\n filter: brightness(1.12) drop-shadow(0 0 3px rgb(187 86 255 / 70%));\n }\n}\n@media (prefers-reduced-motion: reduce) {\n .ceruleanSkyportShippingView__huntsRemainingContainer:hover .ceruleanSkyportShippingView__hourglassIcon,\n .headsUpDisplayCeruleanSkyportView__logDialogHeaderColonelAirship,\n .headsUpDisplayCeruleanSkyportView__logDialogHeaderDirigible,\n .ceruleanSkyportShippingView__currentShipmentDirigible,\n .ceruleanSkyportRaidView__raidForeground,\n .ceruleanSkyportRaidView__raidBackground,\n .ceruleanSkyportRaidView__raidBackground::before,\n .ceruleanSkyportRaidView__raidBackground::after,\n .ceruleanSkyportRaidView__raidProgressBar::after,\n .headsUpDisplayCeruleanSkyportView__fuelContainer.active .headsUpDisplayCeruleanSkyportView__fuelToggleButton {\n animation: none;\n }\n .headsUpDisplayCeruleanSkyportView__childView:hover .ceruleanSkyportShippingView__foreground {\n transform: none;\n }\n}\nbody.mh-improved-skyport-animations-disabled .ceruleanSkyportShippingView__huntsRemainingContainer:hover .ceruleanSkyportShippingView__hourglassIcon,\nbody.mh-improved-skyport-animations-disabled .headsUpDisplayCeruleanSkyportView__airship .floatingIslandsAirship.animate,\nbody.mh-improved-skyport-animations-disabled .headsUpDisplayCeruleanSkyportView__logDialogHeaderColonelAirship,\nbody.mh-improved-skyport-animations-disabled .headsUpDisplayCeruleanSkyportView__logDialogHeaderDirigible,\nbody.mh-improved-skyport-animations-disabled .ceruleanSkyportShippingView__currentShipmentDirigible,\nbody.mh-improved-skyport-animations-disabled .ceruleanSkyportRaidView__raidForeground,\nbody.mh-improved-skyport-animations-disabled .ceruleanSkyportRaidView__raidBackground,\nbody.mh-improved-skyport-animations-disabled .ceruleanSkyportRaidView__raidBackground::before,\nbody.mh-improved-skyport-animations-disabled .ceruleanSkyportRaidView__raidBackground::after,\nbody.mh-improved-skyport-animations-disabled .ceruleanSkyportRaidView__raidProgressBar::after,\nbody.mh-improved-skyport-animations-disabled .headsUpDisplayCeruleanSkyportView__fuelContainer.active .headsUpDisplayCeruleanSkyportView__fuelToggleButton {\n animation: none;\n}\nbody.mh-improved-skyport-animations-disabled .headsUpDisplayCeruleanSkyportView__childView:hover .ceruleanSkyportShippingView__foreground {\n transform: none;\n}\n.headsUpDisplayCeruleanSkyportView__logDialogLootContainer {\n max-width: 115px;\n}\n.headsUpDisplayCeruleanSkyportView__logDialogLootName.name {\n width: auto;\n max-width: 115px;\n padding: 0 2px;\n white-space: break-spaces;\n}\n.headsUpDisplayCeruleanSkyportView__logDialogPointsImageThumbnail,\n.headsUpDisplayCeruleanSkyportView__logDialogGoldImageThumbnail,\n.headsUpDisplayCeruleanSkyportView__logDialogLootImageThumbnail {\n position: relative;\n}\n.headsUpDisplayCeruleanSkyportView__logDialogGoldContainer .quantity,\n.headsUpDisplayCeruleanSkyportView__logDialogPointsContainer .quantity,\n.headsUpDisplayCeruleanSkyportView__logDialogItemContainer .quantity {\n position: absolute;\n right: 0;\n bottom: 0;\n width: auto;\n min-width: 5px;\n padding: 3px;\n font-weight: 700;\n line-height: 11px;\n text-align: right;\n}\n.headsUpDisplayCeruleanSkyportView__currentRaidThumbnail {\n filter: drop-shadow(1px 1px 3px #330448);\n}\n.headsUpDisplayCeruleanSkyportView__raidInfoContainer .headsUpDisplayCeruleanSkyportView__currentRaidFlavorText {\n text-shadow: 0 0 3px #240025;\n}\n.headsUpDisplayCeruleanSkyportView__header {\n top: 0;\n}\n.headsUpDisplayCeruleanSkyportView__headerTitle {\n top: 1px;\n left: 268px;\n width: 226px;\n border: 3px solid #717c8b;\n border-bottom: none;\n border-radius: 5% 5% 8px 12px;\n box-shadow: 0 -3px 1px -1px #323c47;\n}\n.headsUpDisplayCeruleanSkyportView__logButton:hover {\n filter: brightness(1.2);\n}\n.ceruleanSkyportInventoryView__inventoryBlockQuantity.quantity {\n height: 16px;\n}\n.headsUpDisplayCeruleanSkyportView__logDialogLootQuantity.quantity {\n position: absolute;\n right: 0;\n bottom: -4px;\n width: auto;\n min-width: 5px;\n padding: 3px;\n font-weight: 700;\n line-height: 11px;\n text-align: right;\n}\n.headsUpDisplayCeruleanSkyportView__overlay.mh-improved-skyport-ledger-overlay.active {\n background: none;\n}\n.headsUpDisplayCeruleanSkyportView__overlay.mh-improved-skyport-ledger-overlay.active::before {\n position: fixed;\n inset: 0;\n z-index: -1;\n content: "";\n background: url(https://www.mousehuntgame.com/images/ui/backgrounds/overlay.png) 0 0 repeat;\n}\n.headsUpDisplayCeruleanSkyportView__trapWarningContainer.active {\n top: 40%;\n}\n.ceruleanSkyportRaidView__raidHuntsRemainingText {\n top: 12px;\n left: 18px;\n}\n.ceruleanSkyportRaidChoiceDialogView__raidBlock button.ceruleanSkyportRaidChoiceDialogView__selectRaidButton {\n top: 70px;\n height: 35px;\n}\n';
44501
44626
  }
44502
44627
  });
44503
44628
 
44504
44629
  // src/modules/location-huds/locations/cerulean-skyport/index.js
44505
- var cerulean_skyport_default2;
44630
+ var updateAnimationState, cerulean_skyport_default2;
44506
44631
  var init_cerulean_skyport2 = __esm({
44507
44632
  "src/modules/location-huds/locations/cerulean-skyport/index.js"() {
44508
44633
  init_utils2();
@@ -44512,12 +44637,19 @@ var mhui = (() => {
44512
44637
  init_raid_favorites2();
44513
44638
  init_full_width_airship();
44514
44639
  init_styles83();
44640
+ updateAnimationState = () => {
44641
+ var _a, _b, _c, _d;
44642
+ const isDisabled = (_d = (_c = (_b = (_a = user == null ? void 0 : user.quests) == null ? void 0 : _a.QuestCeruleanSkyport) == null ? void 0 : _b.airship) == null ? void 0 : _c.is_animation_disabled) != null ? _d : false;
44643
+ document.body.classList.toggle("mh-improved-skyport-animations-disabled", Boolean(isDisabled));
44644
+ };
44515
44645
  cerulean_skyport_default2 = () => __async(null, null, function* () {
44516
44646
  addHudStyles([styles_default82, full_width_airship_default], "cerulean-skyport");
44517
44647
  addAirshipRandomizer();
44518
44648
  addHullClick();
44519
44649
  initRaidFavorites();
44520
44650
  initCurrentRaidIndicator();
44651
+ updateAnimationState();
44652
+ onRequest("*", updateAnimationState);
44521
44653
  });
44522
44654
  }
44523
44655
  });
@@ -54014,122 +54146,138 @@ var mhui = (() => {
54014
54146
  });
54015
54147
 
54016
54148
  // src/data/update-summaries/0.98.0.json
54017
- var __default6;
54018
- var init__6 = __esm({
54149
+ var __default7;
54150
+ var init__7 = __esm({
54019
54151
  "src/data/update-summaries/0.98.0.json"() {
54020
- __default6 = { version: "0.98.0", summary: "This update makes MouseHunt Improved easier to browse, configure, and use. The settings screen now organizes modules into clearer sections, several popular options have better defaults, and new features like Gifts in Inbox and Journal Progress Log Tracker are now available. It also includes broad fixes, performance improvements, and polish across maps, journals, HUDs, inventory, marketplace tools, and more. Please take a quick look through settings after updating in case a new default is not your preference. Happy hunting!", details: [{ title: "New Features", items: ["Gifts in Inbox will let you easily claim recent gifts directly from your inbox", "Journal Progress Log Tracker adds clear timing and history for progress log entries", "Rank-Up Forecaster is now available as a beta module for previewing your progress toward the next rank"] }, { title: "New Module Sections", items: ["The settings screen now groups modules by what they affect: Appearance, Hunting & Setup, Inventory & Economy, Location HUDs, Locations/Maps/Travel, Journal/Progress/Stats, Social & Profiles, Navigation & Utilities, Hide & Simplify, Beta & Experiments, and Advanced", "These sections replace the older broad categories so related features are easier to find"] }, { title: "Defaults and Settings", items: ["Several useful modules and settings are now enabled by default or promoted out of beta, including Better Journal loot display improvements, Better Tournaments localized times, Better Marketplace quick actions, Better Gifts gift selection, Better UI square profile pics, and Real Base Stats", "The new Base Item Counters module is enabled by default to show toothlet and printing paper counts for supported bases", 'Advanced Settings now includes an "Update Game Data" link for refreshing bundled game data when needed', "Custom preview pickers and several settings controls were cleaned up for a smoother configuration experience"] }, { title: "Better Marketplace", items: ["Added beta feature for integrated Markethunt price charts to marketplace item views", "Expanded marketplace browsing, pricing tools, quick actions, and item view polish", "Improved sorting, filtering, and quick buy/sell workflows"] }, { title: "Better Journal", items: ["Journal entries now support broader loot displays with more useful links and icons", "Several journal-related options were updated and improved"] }, { title: "Better Maps", items: ["Map groups, styling, and performance were updated", "Added support for more map organization and cleaner map displays"] }, { title: "Location HUDs - Floating Islands", items: ["Airship customization now has better preview, randomization, and workflow tools", "The Floating Islands HUD received usability, style, and beta feature updates"] }, { title: "Location HUDs - Fort Rox", items: ["Fort Rox timeline and trap setup tools were refined", "Hunt tracking and related interactions should be clearer and easier to use"] }, { title: "Location Dashboard", items: ["The dashboard now supports more locations", "Reliability and refresh behavior were improved across supported dashboards"] }, { title: "Better Inventory", items: ["Trap sorting, filtering, and inventory readability were reworked and improved"] }, { title: "Better Quests", items: ["Quest objective mice are easier to inspect with improved links and hover details"] }, { title: "Paste Hunter ID", items: ["Hunter lookup is more flexible and now handles full profile links more reliably"] }, { title: "Image Upscaling & Transparency", items: ["Upscaled images now recover more reliably when the game rerenders them"] }, { title: "General Improvements", items: ["Profile and scoreboard navigation, tooltip handling, number formatting, bundled assets, and overall UI polish all received fixes and improvements", "This release also includes many smaller style fixes, bug fixes, and performance updates across the extension"] }] };
54152
+ __default7 = { version: "0.98.0", summary: "This update makes MouseHunt Improved easier to browse, configure, and use. The settings screen now organizes modules into clearer sections, several popular options have better defaults, and new features like Gifts in Inbox and Journal Progress Log Tracker are now available. It also includes broad fixes, performance improvements, and polish across maps, journals, HUDs, inventory, marketplace tools, and more. Please take a quick look through settings after updating in case a new default is not your preference. Happy hunting!", details: [{ title: "New Features", items: ["Gifts in Inbox will let you easily claim recent gifts directly from your inbox", "Journal Progress Log Tracker adds clear timing and history for progress log entries", "Rank-Up Forecaster is now available as a beta module for previewing your progress toward the next rank"] }, { title: "New Module Sections", items: ["The settings screen now groups modules by what they affect: Appearance, Hunting & Setup, Inventory & Economy, Location HUDs, Locations/Maps/Travel, Journal/Progress/Stats, Social & Profiles, Navigation & Utilities, Hide & Simplify, Beta & Experiments, and Advanced", "These sections replace the older broad categories so related features are easier to find"] }, { title: "Defaults and Settings", items: ["Several useful modules and settings are now enabled by default or promoted out of beta, including Better Journal loot display improvements, Better Tournaments localized times, Better Marketplace quick actions, Better Gifts gift selection, Better UI square profile pics, and Real Base Stats", "The new Base Item Counters module is enabled by default to show toothlet and printing paper counts for supported bases", 'Advanced Settings now includes an "Update Game Data" link for refreshing bundled game data when needed', "Custom preview pickers and several settings controls were cleaned up for a smoother configuration experience"] }, { title: "Better Marketplace", items: ["Added beta feature for integrated Markethunt price charts to marketplace item views", "Expanded marketplace browsing, pricing tools, quick actions, and item view polish", "Improved sorting, filtering, and quick buy/sell workflows"] }, { title: "Better Journal", items: ["Journal entries now support broader loot displays with more useful links and icons", "Several journal-related options were updated and improved"] }, { title: "Better Maps", items: ["Map groups, styling, and performance were updated", "Added support for more map organization and cleaner map displays"] }, { title: "Location HUDs - Floating Islands", items: ["Airship customization now has better preview, randomization, and workflow tools", "The Floating Islands HUD received usability, style, and beta feature updates"] }, { title: "Location HUDs - Fort Rox", items: ["Fort Rox timeline and trap setup tools were refined", "Hunt tracking and related interactions should be clearer and easier to use"] }, { title: "Location Dashboard", items: ["The dashboard now supports more locations", "Reliability and refresh behavior were improved across supported dashboards"] }, { title: "Better Inventory", items: ["Trap sorting, filtering, and inventory readability were reworked and improved"] }, { title: "Better Quests", items: ["Quest objective mice are easier to inspect with improved links and hover details"] }, { title: "Paste Hunter ID", items: ["Hunter lookup is more flexible and now handles full profile links more reliably"] }, { title: "Image Upscaling & Transparency", items: ["Upscaled images now recover more reliably when the game rerenders them"] }, { title: "General Improvements", items: ["Profile and scoreboard navigation, tooltip handling, number formatting, bundled assets, and overall UI polish all received fixes and improvements", "This release also includes many smaller style fixes, bug fixes, and performance updates across the extension"] }] };
54021
54153
  }
54022
54154
  });
54023
54155
 
54024
54156
  // src/data/update-summaries/0.98.1.json
54025
- var __default7;
54026
- var init__7 = __esm({
54157
+ var __default8;
54158
+ var init__8 = __esm({
54027
54159
  "src/data/update-summaries/0.98.1.json"() {
54028
- __default7 = { version: "0.98.1", summary: "", details: [{ title: "", items: ["Better UI: Updated Inbox tab order", "Better Maps: Updated map sorting groups for Cerulean Skyport and Corsair maps", "Journal Progress Log Tracker: Progress logs are now tracked when on pages beyond the first page", "Gifts in Inbox: Gift links more than five days old no longer count toward the tab's unread badge", "Minor style tweaks"] }] };
54160
+ __default8 = { version: "0.98.1", summary: "", details: [{ title: "", items: ["Better UI: Updated Inbox tab order", "Better Maps: Updated map sorting groups for Cerulean Skyport and Corsair maps", "Journal Progress Log Tracker: Progress logs are now tracked when on pages beyond the first page", "Gifts in Inbox: Gift links more than five days old no longer count toward the tab's unread badge", "Minor style tweaks"] }] };
54029
54161
  }
54030
54162
  });
54031
54163
 
54032
54164
  // src/data/update-summaries/0.98.2.json
54033
- var __default8;
54034
- var init__8 = __esm({
54165
+ var __default9;
54166
+ var init__9 = __esm({
54035
54167
  "src/data/update-summaries/0.98.2.json"() {
54036
- __default8 = { version: "0.98.2", summary: "", details: [{ title: "", items: ["Better Journal: Added loot list and date styling support for the new Cerulean Skyport journal entries", "Redesigned the extension popup and made its settings button reuse an open MouseHunt tab"] }] };
54168
+ __default9 = { version: "0.98.2", summary: "", details: [{ title: "", items: ["Better Journal: Added loot list and date styling support for the new Cerulean Skyport journal entries", "Redesigned the extension popup and made its settings button reuse an open MouseHunt tab"] }] };
54037
54169
  }
54038
54170
  });
54039
54171
 
54040
54172
  // src/data/update-summaries/0.98.3.json
54041
- var __default9;
54042
- var init__9 = __esm({
54173
+ var __default10;
54174
+ var init__10 = __esm({
54043
54175
  "src/data/update-summaries/0.98.3.json"() {
54044
- __default9 = { version: "0.98.3", summary: "", details: [{ title: "", items: ["Fix Better Marketplace: Show Markethunt price history chart when viewing an item defaulting to enabled"] }] };
54176
+ __default10 = { version: "0.98.3", summary: "", details: [{ title: "", items: ["Fix Better Marketplace: Show Markethunt price history chart when viewing an item defaulting to enabled"] }] };
54045
54177
  }
54046
54178
  });
54047
54179
 
54048
54180
  // src/data/update-summaries/0.99.0.json
54049
- var __default10;
54050
- var init__10 = __esm({
54181
+ var __default11;
54182
+ var init__11 = __esm({
54051
54183
  "src/data/update-summaries/0.99.0.json"() {
54052
- __default10 = { version: "0.99.0", summary: "", details: [{ title: "New Beta Features", items: ['"Enhanced Search" adds fuzzy and abbreviated searching in inventory, marketplace, Send Supplies, and the Trap Selector', '"Timers" adds an item to the Camp menu dropdown with countdowns for different locations'] }, { title: "Better Maps", items: ["Added sorting for 20+ map types", "Updated sorting data for many existing map types", 'Added the "Default to Sorted tab (only if map is categorized)" setting', "Map enhancements now load and update more reliably"] }, { title: "Location HUDs and Catch Stats", items: ["Location Catch Stats has been redesigned with completion progress for each location, crown counts, and more.", 'Added a "Use simplified view" setting for Location Catch Stats to restore the previous version.', "Added a Cerulean Skyport Location Dashboard", "Updated HUD styling for Cerulean Skyport, Floating Islands, Valour Rift, and other locations", "Updated the Valour Rift simulator for the Hailstone Singularity Base"] }, { title: "More Improvements", items: ["Expanded Native Dark Mode coverage across nearly every module", "Extension updates now load faster and data is kept more up-to-date", "Fixed a variety of issues and improved performance across many modules"] }] };
54184
+ __default11 = { version: "0.99.0", summary: "", details: [{ title: "New Beta Features", items: ['"Enhanced Search" adds fuzzy and abbreviated searching in inventory, marketplace, Send Supplies, and the Trap Selector', '"Timers" adds an item to the Camp menu dropdown with countdowns for different locations'] }, { title: "Better Maps", items: ["Added sorting for 20+ map types", "Updated sorting data for many existing map types", 'Added the "Default to Sorted tab (only if map is categorized)" setting', "Map enhancements now load and update more reliably"] }, { title: "Location HUDs and Catch Stats", items: ["Location Catch Stats has been redesigned with completion progress for each location, crown counts, and more.", 'Added a "Use simplified view" setting for Location Catch Stats to restore the previous version.', "Added a Cerulean Skyport Location Dashboard", "Updated HUD styling for Cerulean Skyport, Floating Islands, Valour Rift, and other locations", "Updated the Valour Rift simulator for the Hailstone Singularity Base"] }, { title: "More Improvements", items: ["Expanded Native Dark Mode coverage across nearly every module", "Extension updates now load faster and data is kept more up-to-date", "Fixed a variety of issues and improved performance across many modules"] }] };
54053
54185
  }
54054
54186
  });
54055
54187
 
54056
54188
  // src/data/update-summaries/0.99.1.json
54057
- var __default11;
54058
- var init__11 = __esm({
54189
+ var __default12;
54190
+ var init__12 = __esm({
54059
54191
  "src/data/update-summaries/0.99.1.json"() {
54060
- __default11 = { version: "0.99.1", summary: "", details: [{ title: "Minor Style Updates", items: ["Updated Better Tournaments styling", "Updated Dark Mode tournament journal entry styling"] }] };
54192
+ __default12 = { version: "0.99.1", summary: "", details: [{ title: "Minor Style Updates", items: ["Updated Better Tournaments styling", "Updated Dark Mode tournament journal entry styling"] }] };
54061
54193
  }
54062
54194
  });
54063
54195
 
54064
54196
  // src/data/update-summaries/0.99.10.json
54065
- var __default12;
54066
- var init__12 = __esm({
54197
+ var __default13;
54198
+ var init__13 = __esm({
54067
54199
  "src/data/update-summaries/0.99.10.json"() {
54068
- __default12 = { version: "0.99.10", summary: "", details: [{ title: "", items: ["Cerulean Skyport: The raid intel dialog now highlights your current raid", "Better Tournaments: Fixed hovering over your rank to see your scoreboard page only working on tournament scoreboards"] }] };
54200
+ __default13 = { version: "0.99.10", summary: "", details: [{ title: "", items: ["Cerulean Skyport: The raid intel dialog now highlights your current raid", "Better Tournaments: Fixed hovering over your rank to see your scoreboard page only working on tournament scoreboards"] }] };
54201
+ }
54202
+ });
54203
+
54204
+ // src/data/update-summaries/0.99.11.json
54205
+ var __default14;
54206
+ var init__14 = __esm({
54207
+ "src/data/update-summaries/0.99.11.json"() {
54208
+ __default14 = { version: "0.99.11", summary: "", details: [{ title: "", items: ["Better Journal: Fixed an error that could break journal mouse images when mouse data failed to load", "Better Journal: Hid the date on Cerulean Skyport chrome trigger entries", "Fixed failed data fetches being cached as empty, which could cause errors until the next refresh"] }] };
54209
+ }
54210
+ });
54211
+
54212
+ // src/data/update-summaries/0.99.12.json
54213
+ var __default15;
54214
+ var init__15 = __esm({
54215
+ "src/data/update-summaries/0.99.12.json"() {
54216
+ __default15 = { version: "0.99.12", summary: "", details: [{ title: "", items: ["Cerulean Skyport: Animations now turn off when the Stabilize Airship option is checked", "Favorite Setups: Updated styles", "Gifts in Inbox: Fixed the Gift Links tab disappearing after sending a raffle ballot", "Journal icon and upscaled image styles can now update between releases without needing a new version", "Minor style tweaks"] }] };
54069
54217
  }
54070
54218
  });
54071
54219
 
54072
54220
  // src/data/update-summaries/0.99.2.json
54073
- var __default13;
54074
- var init__13 = __esm({
54221
+ var __default16;
54222
+ var init__16 = __esm({
54075
54223
  "src/data/update-summaries/0.99.2.json"() {
54076
- __default13 = { version: "0.99.2", summary: "", details: [{ title: "", items: ["Better Maps: Fixed several rendering issues, including duplicate attraction rate badges, the quick invite box duplicating, and the Goals tab reinitializing when map data reloaded", "Better Maps: Added a Reset Sort button to the Sorted tab", "Better Journal: Added loot list support for reward claim entries", "Dark Mode: Updated styles and applied masking to full-size mice images in journal entries", "Minor style tweaks"] }] };
54224
+ __default16 = { version: "0.99.2", summary: "", details: [{ title: "", items: ["Better Maps: Fixed several rendering issues, including duplicate attraction rate badges, the quick invite box duplicating, and the Goals tab reinitializing when map data reloaded", "Better Maps: Added a Reset Sort button to the Sorted tab", "Better Journal: Added loot list support for reward claim entries", "Dark Mode: Updated styles and applied masking to full-size mice images in journal entries", "Minor style tweaks"] }] };
54077
54225
  }
54078
54226
  });
54079
54227
 
54080
54228
  // src/data/update-summaries/0.99.3.json
54081
- var __default14;
54082
- var init__14 = __esm({
54229
+ var __default17;
54230
+ var init__17 = __esm({
54083
54231
  "src/data/update-summaries/0.99.3.json"() {
54084
- __default14 = { version: "0.99.3", summary: "", details: [{ title: "", items: ["Better Maps: Fixed mice missing from the Sorted tab on Draconic Depths, Folklore Forest Grand Tour, and Origin of Dragons maps"] }] };
54232
+ __default17 = { version: "0.99.3", summary: "", details: [{ title: "", items: ["Better Maps: Fixed mice missing from the Sorted tab on Draconic Depths, Folklore Forest Grand Tour, and Origin of Dragons maps"] }] };
54085
54233
  }
54086
54234
  });
54087
54235
 
54088
54236
  // src/data/update-summaries/0.99.4.json
54089
- var __default15;
54090
- var init__15 = __esm({
54237
+ var __default18;
54238
+ var init__18 = __esm({
54091
54239
  "src/data/update-summaries/0.99.4.json"() {
54092
- __default15 = { version: "0.99.4", summary: "", details: [{ title: "", items: ["Location HUDs - Cerulean Skyport: Added 'View Ledger button to journal entry", "Better Maps: Updated Cerulean Skyport map groups and added current area highlighting", "Better Maps: Fixed several Sorted tab issues", "Better Journal: Full mice images no longer have a border or white background", "Minor style tweaks"] }] };
54240
+ __default18 = { version: "0.99.4", summary: "", details: [{ title: "", items: ["Location HUDs - Cerulean Skyport: Added 'View Ledger button to journal entry", "Better Maps: Updated Cerulean Skyport map groups and added current area highlighting", "Better Maps: Fixed several Sorted tab issues", "Better Journal: Full mice images no longer have a border or white background", "Minor style tweaks"] }] };
54093
54241
  }
54094
54242
  });
54095
54243
 
54096
54244
  // src/data/update-summaries/0.99.5.json
54097
- var __default16;
54098
- var init__16 = __esm({
54245
+ var __default19;
54246
+ var init__19 = __esm({
54099
54247
  "src/data/update-summaries/0.99.5.json"() {
54100
- __default16 = { version: "0.99.5", summary: "", details: [{ title: "", items: ["Better Maps: Restored previous groups for Cerulean Skyport and Corsair Chaser maps", "Better Maps: Fixed the Relic Hunter hint travel button sometimes being added twice", "Dark Mode: Updated styles"] }] };
54248
+ __default19 = { version: "0.99.5", summary: "", details: [{ title: "", items: ["Better Maps: Restored previous groups for Cerulean Skyport and Corsair Chaser maps", "Better Maps: Fixed the Relic Hunter hint travel button sometimes being added twice", "Dark Mode: Updated styles"] }] };
54101
54249
  }
54102
54250
  });
54103
54251
 
54104
54252
  // src/data/update-summaries/0.99.6.json
54105
- var __default17;
54106
- var init__17 = __esm({
54253
+ var __default20;
54254
+ var init__20 = __esm({
54107
54255
  "src/data/update-summaries/0.99.6.json"() {
54108
- __default17 = { version: "0.99.6", summary: "", details: [{ title: "", items: ['Add "Skyport Star Tracker": a new module for tracking which mice you still need from each Cerulean Skyport raid', 'Location HUDs - Cerulean Skyport: Favorite raid locations to highlight their ships when choosing, updated "View Ledger" to raid completion journal entries', "Fixed FLRT Helper sometimes failing silently", "Fixed a few Cerulean Skyport, journal, and dark mode issues"] }] };
54256
+ __default20 = { version: "0.99.6", summary: "", details: [{ title: "", items: ['Add "Skyport Star Tracker": a new module for tracking which mice you still need from each Cerulean Skyport raid', 'Location HUDs - Cerulean Skyport: Favorite raid locations to highlight their ships when choosing, updated "View Ledger" to raid completion journal entries', "Fixed FLRT Helper sometimes failing silently", "Fixed a few Cerulean Skyport, journal, and dark mode issues"] }] };
54109
54257
  }
54110
54258
  });
54111
54259
 
54112
54260
  // src/data/update-summaries/0.99.7.json
54113
- var __default18;
54114
- var init__18 = __esm({
54261
+ var __default21;
54262
+ var init__21 = __esm({
54115
54263
  "src/data/update-summaries/0.99.7.json"() {
54116
- __default18 = { version: "0.99.7", summary: "", details: [{ title: "", items: ["Fixed the refresh button missing from the My Invites tab of the map popup"] }] };
54264
+ __default21 = { version: "0.99.7", summary: "", details: [{ title: "", items: ["Fixed the refresh button missing from the My Invites tab of the map popup"] }] };
54117
54265
  }
54118
54266
  });
54119
54267
 
54120
54268
  // src/data/update-summaries/0.99.8.json
54121
- var __default19;
54122
- var init__19 = __esm({
54269
+ var __default22;
54270
+ var init__22 = __esm({
54123
54271
  "src/data/update-summaries/0.99.8.json"() {
54124
- __default19 = { version: "0.99.8", summary: "", details: [{ title: "", items: ["Skyport Star Tracker: Corrected which raid mice require Aurora Bocconcini"] }] };
54272
+ __default22 = { version: "0.99.8", summary: "", details: [{ title: "", items: ["Skyport Star Tracker: Corrected which raid mice require Aurora Bocconcini"] }] };
54125
54273
  }
54126
54274
  });
54127
54275
 
54128
54276
  // src/data/update-summaries/0.99.9.json
54129
- var __default20;
54130
- var init__20 = __esm({
54277
+ var __default23;
54278
+ var init__23 = __esm({
54131
54279
  "src/data/update-summaries/0.99.9.json"() {
54132
- __default20 = { version: "0.99.9", summary: "", details: [{ title: "", items: ["FLRT Helper: Fixed the Return to Maptain button not appearing when opening a chest from the map screen", "Skyport Star Tracker: Added a refresh button to the tracker panel"] }] };
54280
+ __default23 = { version: "0.99.9", summary: "", details: [{ title: "", items: ["FLRT Helper: Fixed the Return to Maptain button not appearing when opening a chest from the map screen", "Skyport Star Tracker: Added a refresh button to the tracker panel"] }] };
54133
54281
  }
54134
54282
  });
54135
54283
 
@@ -54139,7 +54287,6 @@ var mhui = (() => {
54139
54287
  "src/modules/update-notifications/index.js"() {
54140
54288
  init_utils2();
54141
54289
  init_styles141();
54142
- init__6();
54143
54290
  init__7();
54144
54291
  init__8();
54145
54292
  init__9();
@@ -54154,7 +54301,10 @@ var mhui = (() => {
54154
54301
  init__18();
54155
54302
  init__19();
54156
54303
  init__20();
54157
- imported10 = [__default6, __default7, __default8, __default9, __default10, __default11, __default12, __default13, __default14, __default15, __default16, __default17, __default18, __default19, __default20];
54304
+ init__21();
54305
+ init__22();
54306
+ init__23();
54307
+ imported10 = [__default7, __default8, __default9, __default10, __default11, __default12, __default13, __default14, __default15, __default16, __default17, __default18, __default19, __default20, __default21, __default22, __default23];
54158
54308
  updateSummaries = imported10;
54159
54309
  compareVersions = (a, b) => {
54160
54310
  const aParts = "".concat(a).split(".");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mousehunt-improved",
3
- "version": "0.99.10",
3
+ "version": "0.99.12",
4
4
  "description": "Improve your MouseHunt experience.",
5
5
  "author": "Brad Parbs <brad@bradparbs.com> (https://bradparbs.com/)",
6
6
  "license": "MIT",