@rpg-engine/long-bow 0.8.218 → 0.8.220
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/Store/MetadataCollector.d.ts +2 -2
- package/dist/components/Store/Store.d.ts +10 -21
- package/dist/components/Store/StoreHeader.d.ts +14 -0
- package/dist/components/Store/hooks/useStoreCart.d.ts +2 -0
- package/dist/components/Store/hooks/useStoreMetadata.d.ts +4 -11
- package/dist/components/Store/hooks/useStoreTabs.d.ts +20 -0
- package/dist/components/Store/internal/packToBlueprint.d.ts +2 -0
- package/dist/components/Store/sections/StoreItemsSection.d.ts +5 -3
- package/dist/hooks/useStoreFiltering.d.ts +7 -4
- package/dist/long-bow.cjs.development.js +346 -375
- package/dist/long-bow.cjs.development.js.map +1 -1
- package/dist/long-bow.cjs.production.min.js +1 -1
- package/dist/long-bow.cjs.production.min.js.map +1 -1
- package/dist/long-bow.esm.js +348 -377
- package/dist/long-bow.esm.js.map +1 -1
- package/package.json +1 -1
- package/src/components/Store/CartView.tsx +7 -2
- package/src/components/Store/MetadataCollector.tsx +60 -40
- package/src/components/Store/Store.tsx +75 -270
- package/src/components/Store/StoreHeader.tsx +74 -0
- package/src/components/Store/__test__/MetadataCollector.spec.tsx +94 -164
- package/src/components/Store/__test__/Store.spec.tsx +4 -0
- package/src/components/Store/__test__/useStoreMetadata.spec.tsx +58 -156
- package/src/components/Store/__test__/useStoreTabs.spec.tsx +69 -0
- package/src/components/Store/hooks/useStoreCart.ts +5 -2
- package/src/components/Store/hooks/useStoreMetadata.ts +30 -48
- package/src/components/Store/hooks/useStoreTabs.ts +104 -0
- package/src/components/Store/internal/packToBlueprint.ts +21 -0
- package/src/components/Store/sections/StoreItemsSection.tsx +19 -60
- package/src/components/Store/sections/StorePacksSection.tsx +0 -1
- package/src/components/shared/ScrollableContent/ScrollableContent.tsx +3 -6
- package/src/hooks/useStoreFiltering.spec.tsx +79 -0
- package/src/hooks/useStoreFiltering.ts +27 -9
|
@@ -37712,11 +37712,11 @@ var CartView = function CartView(_ref2) {
|
|
|
37712
37712
|
var Container$M = /*#__PURE__*/styled__default.div.withConfig({
|
|
37713
37713
|
displayName: "CartView__Container",
|
|
37714
37714
|
componentId: "sc-ydtyl1-0"
|
|
37715
|
-
})(["display:flex;flex-direction:column;width:100%;
|
|
37715
|
+
})(["display:flex;flex-direction:column;width:100%;height:100%;padding:1rem;overflow:hidden;box-sizing:border-box;"]);
|
|
37716
37716
|
var Header$g = /*#__PURE__*/styled__default.div.withConfig({
|
|
37717
37717
|
displayName: "CartView__Header",
|
|
37718
37718
|
componentId: "sc-ydtyl1-1"
|
|
37719
|
-
})(["display:flex;justify-content:space-between;align-items:center;"]);
|
|
37719
|
+
})(["display:flex;justify-content:space-between;align-items:center;flex-shrink:0;"]);
|
|
37720
37720
|
var Title$n = /*#__PURE__*/styled__default.h2.withConfig({
|
|
37721
37721
|
displayName: "CartView__Title",
|
|
37722
37722
|
componentId: "sc-ydtyl1-2"
|
|
@@ -37728,7 +37728,7 @@ var CloseButton$h = /*#__PURE__*/styled__default.div.withConfig({
|
|
|
37728
37728
|
var CartItems = /*#__PURE__*/styled__default.div.withConfig({
|
|
37729
37729
|
displayName: "CartView__CartItems",
|
|
37730
37730
|
componentId: "sc-ydtyl1-4"
|
|
37731
|
-
})(["display:flex;flex-direction:column;gap:0.5rem;overflow-y:auto;
|
|
37731
|
+
})(["display:flex;flex-direction:column;gap:0.5rem;flex:1;min-height:0;overflow-y:auto;margin:1rem 0;padding-right:0.5rem;&::-webkit-scrollbar{width:6px;}&::-webkit-scrollbar-track{background:rgba(0,0,0,0.2);border-radius:4px;}&::-webkit-scrollbar-thumb{background:#f59e0b;border-radius:4px;&:hover{background:#fbbf24;}}"]);
|
|
37732
37732
|
var EmptyCart = /*#__PURE__*/styled__default.div.withConfig({
|
|
37733
37733
|
displayName: "CartView__EmptyCart",
|
|
37734
37734
|
componentId: "sc-ydtyl1-5"
|
|
@@ -38030,53 +38030,31 @@ var useStoreMetadata = function useStoreMetadata() {
|
|
|
38030
38030
|
var _useState = React.useState(false),
|
|
38031
38031
|
isCollectingMetadata = _useState[0],
|
|
38032
38032
|
setIsCollectingMetadata = _useState[1];
|
|
38033
|
-
var
|
|
38034
|
-
|
|
38035
|
-
|
|
38036
|
-
|
|
38037
|
-
|
|
38038
|
-
|
|
38039
|
-
|
|
38040
|
-
|
|
38041
|
-
|
|
38042
|
-
|
|
38043
|
-
|
|
38044
|
-
|
|
38045
|
-
|
|
38046
|
-
|
|
38047
|
-
|
|
38048
|
-
|
|
38049
|
-
|
|
38050
|
-
|
|
38051
|
-
|
|
38052
|
-
|
|
38053
|
-
},
|
|
38054
|
-
item: item
|
|
38055
|
-
};
|
|
38056
|
-
});
|
|
38057
|
-
case 6:
|
|
38058
|
-
return _context.abrupt("return", _context.sent);
|
|
38059
|
-
case 7:
|
|
38060
|
-
_context.prev = 7;
|
|
38061
|
-
setIsCollectingMetadata(false);
|
|
38062
|
-
// Clean up the resolvers
|
|
38063
|
-
if (window.__metadataResolvers) {
|
|
38064
|
-
delete window.__metadataResolvers;
|
|
38065
|
-
}
|
|
38066
|
-
return _context.finish(7);
|
|
38067
|
-
case 11:
|
|
38068
|
-
case "end":
|
|
38069
|
-
return _context.stop();
|
|
38070
|
-
}
|
|
38071
|
-
}, _callee, null, [[3,, 7, 11]]);
|
|
38072
|
-
}));
|
|
38073
|
-
return function collectMetadata(_x) {
|
|
38074
|
-
return _ref.apply(this, arguments);
|
|
38075
|
-
};
|
|
38076
|
-
}();
|
|
38033
|
+
var _useState2 = React.useState(null),
|
|
38034
|
+
currentMetadataItem = _useState2[0],
|
|
38035
|
+
setCurrentMetadataItem = _useState2[1];
|
|
38036
|
+
var resolverRef = React.useRef(null);
|
|
38037
|
+
var collectMetadata = function collectMetadata(item) {
|
|
38038
|
+
if (!item.metadataType || item.metadataType !== shared.MetadataType.CharacterSkin) {
|
|
38039
|
+
return Promise.resolve(null);
|
|
38040
|
+
}
|
|
38041
|
+
setIsCollectingMetadata(true);
|
|
38042
|
+
setCurrentMetadataItem(item);
|
|
38043
|
+
return new Promise(function (resolve) {
|
|
38044
|
+
resolverRef.current = resolve;
|
|
38045
|
+
});
|
|
38046
|
+
};
|
|
38047
|
+
var resolveMetadata = function resolveMetadata(metadata) {
|
|
38048
|
+
resolverRef.current == null ? void 0 : resolverRef.current(metadata);
|
|
38049
|
+
resolverRef.current = null;
|
|
38050
|
+
setIsCollectingMetadata(false);
|
|
38051
|
+
setCurrentMetadataItem(null);
|
|
38052
|
+
};
|
|
38077
38053
|
return {
|
|
38078
38054
|
collectMetadata: collectMetadata,
|
|
38079
|
-
|
|
38055
|
+
resolveMetadata: resolveMetadata,
|
|
38056
|
+
isCollectingMetadata: isCollectingMetadata,
|
|
38057
|
+
currentMetadataItem: currentMetadataItem
|
|
38080
38058
|
};
|
|
38081
38059
|
};
|
|
38082
38060
|
|
|
@@ -38095,7 +38073,9 @@ var useStoreCart = function useStoreCart() {
|
|
|
38095
38073
|
}, []);
|
|
38096
38074
|
var _useStoreMetadata = useStoreMetadata(),
|
|
38097
38075
|
collectMetadata = _useStoreMetadata.collectMetadata,
|
|
38098
|
-
|
|
38076
|
+
resolveMetadata = _useStoreMetadata.resolveMetadata,
|
|
38077
|
+
isCollectingMetadata = _useStoreMetadata.isCollectingMetadata,
|
|
38078
|
+
currentMetadataItem = _useStoreMetadata.currentMetadataItem;
|
|
38099
38079
|
var handleAddToCart = /*#__PURE__*/function () {
|
|
38100
38080
|
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(item, quantity, preselectedMetadata) {
|
|
38101
38081
|
var metadata;
|
|
@@ -38227,7 +38207,9 @@ var useStoreCart = function useStoreCart() {
|
|
|
38227
38207
|
closeCart: closeCart,
|
|
38228
38208
|
getTotalItems: getTotalItems,
|
|
38229
38209
|
getTotalPrice: getTotalPrice,
|
|
38230
|
-
isCollectingMetadata: isCollectingMetadata
|
|
38210
|
+
isCollectingMetadata: isCollectingMetadata,
|
|
38211
|
+
currentMetadataItem: currentMetadataItem,
|
|
38212
|
+
resolveMetadata: resolveMetadata
|
|
38231
38213
|
};
|
|
38232
38214
|
};
|
|
38233
38215
|
// Helper functions
|
|
@@ -38256,23 +38238,42 @@ var MetadataCollector = function MetadataCollector(_ref) {
|
|
|
38256
38238
|
config = _ref.config,
|
|
38257
38239
|
onCollect = _ref.onCollect,
|
|
38258
38240
|
onCancel = _ref.onCancel;
|
|
38259
|
-
|
|
38241
|
+
var isPendingRef = React.useRef(true);
|
|
38242
|
+
var finalize = React.useCallback(function (callback) {
|
|
38243
|
+
if (!isPendingRef.current) {
|
|
38244
|
+
return;
|
|
38245
|
+
}
|
|
38246
|
+
isPendingRef.current = false;
|
|
38247
|
+
callback();
|
|
38248
|
+
}, []);
|
|
38249
|
+
var handleCollect = React.useCallback(function (metadata) {
|
|
38250
|
+
finalize(function () {
|
|
38251
|
+
return onCollect(metadata);
|
|
38252
|
+
});
|
|
38253
|
+
}, [finalize, onCollect]);
|
|
38254
|
+
var handleCancel = React.useCallback(function () {
|
|
38255
|
+
finalize(onCancel);
|
|
38256
|
+
}, [finalize, onCancel]);
|
|
38260
38257
|
React.useEffect(function () {
|
|
38261
38258
|
return function () {
|
|
38262
|
-
|
|
38263
|
-
// make sure to call onCancel to prevent any hanging promises
|
|
38264
|
-
if (window.__metadataResolvers) {
|
|
38265
|
-
onCancel();
|
|
38266
|
-
}
|
|
38259
|
+
handleCancel();
|
|
38267
38260
|
};
|
|
38268
|
-
}, [
|
|
38269
|
-
|
|
38270
|
-
|
|
38261
|
+
}, [handleCancel]);
|
|
38262
|
+
React.useEffect(function () {
|
|
38263
|
+
if (metadataType === shared.MetadataType.CharacterSkin) {
|
|
38264
|
+
return undefined;
|
|
38265
|
+
}
|
|
38266
|
+
var timer = window.setTimeout(handleCancel, 0);
|
|
38267
|
+
return function () {
|
|
38268
|
+
return window.clearTimeout(timer);
|
|
38269
|
+
};
|
|
38270
|
+
}, [handleCancel, metadataType]);
|
|
38271
|
+
if (metadataType === shared.MetadataType.CharacterSkin) {
|
|
38271
38272
|
return React__default.createElement(CharacterSkinSelectionModal, {
|
|
38272
38273
|
isOpen: true,
|
|
38273
|
-
onClose:
|
|
38274
|
+
onClose: handleCancel,
|
|
38274
38275
|
onConfirm: function onConfirm(selectedSkin) {
|
|
38275
|
-
return
|
|
38276
|
+
return handleCollect({
|
|
38276
38277
|
selectedSkin: selectedSkin
|
|
38277
38278
|
});
|
|
38278
38279
|
},
|
|
@@ -38281,12 +38282,9 @@ var MetadataCollector = function MetadataCollector(_ref) {
|
|
|
38281
38282
|
atlasIMG: config.atlasIMG,
|
|
38282
38283
|
initialSelectedSkin: config.initialSelectedSkin
|
|
38283
38284
|
});
|
|
38284
|
-
} else {
|
|
38285
|
-
console.warn("No collector implemented for metadata type: " + metadataType);
|
|
38286
|
-
// Auto-cancel for unhandled types to prevent hanging promises
|
|
38287
|
-
setTimeout(onCancel, 0);
|
|
38288
|
-
return null;
|
|
38289
38285
|
}
|
|
38286
|
+
console.warn("No collector implemented for metadata type: " + metadataType);
|
|
38287
|
+
return null;
|
|
38290
38288
|
};
|
|
38291
38289
|
|
|
38292
38290
|
var PaymentMethodModal = function PaymentMethodModal(_ref) {
|
|
@@ -38436,6 +38434,159 @@ var ConfirmRow$1 = /*#__PURE__*/styled__default.div.withConfig({
|
|
|
38436
38434
|
componentId: "sc-1dxy6lr-12"
|
|
38437
38435
|
})(["display:flex;justify-content:center;margin-top:4px;"]);
|
|
38438
38436
|
|
|
38437
|
+
function packToBlueprint(pack) {
|
|
38438
|
+
return {
|
|
38439
|
+
key: pack.key,
|
|
38440
|
+
name: pack.title,
|
|
38441
|
+
description: pack.description || '',
|
|
38442
|
+
price: pack.priceUSD,
|
|
38443
|
+
currency: shared.PaymentCurrency.USD,
|
|
38444
|
+
texturePath: pack.image["default"] || pack.image.src,
|
|
38445
|
+
type: shared.PurchaseType.Pack,
|
|
38446
|
+
onPurchase: function () {
|
|
38447
|
+
var _onPurchase = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
38448
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
38449
|
+
while (1) switch (_context.prev = _context.next) {
|
|
38450
|
+
case 0:
|
|
38451
|
+
case "end":
|
|
38452
|
+
return _context.stop();
|
|
38453
|
+
}
|
|
38454
|
+
}, _callee);
|
|
38455
|
+
}));
|
|
38456
|
+
function onPurchase() {
|
|
38457
|
+
return _onPurchase.apply(this, arguments);
|
|
38458
|
+
}
|
|
38459
|
+
return onPurchase;
|
|
38460
|
+
}(),
|
|
38461
|
+
itemType: shared.ItemType.Consumable,
|
|
38462
|
+
itemSubType: shared.ItemSubType.Other,
|
|
38463
|
+
rarity: shared.ItemRarities.Common,
|
|
38464
|
+
weight: 0,
|
|
38465
|
+
isStackable: false,
|
|
38466
|
+
maxStackSize: 1,
|
|
38467
|
+
isUsable: false
|
|
38468
|
+
};
|
|
38469
|
+
}
|
|
38470
|
+
|
|
38471
|
+
var DEFAULT_TAB_ORDER = ['premium', 'packs', 'items'];
|
|
38472
|
+
function isTabAvailable(tabId, params) {
|
|
38473
|
+
var hidePremiumTab = params.hidePremiumTab,
|
|
38474
|
+
hasCharacters = params.hasCharacters,
|
|
38475
|
+
hasRedeem = params.hasRedeem,
|
|
38476
|
+
hasWallet = params.hasWallet,
|
|
38477
|
+
hasHistory = params.hasHistory;
|
|
38478
|
+
if (tabId === 'premium') return !hidePremiumTab;
|
|
38479
|
+
if (tabId === 'characters') return !!hasCharacters;
|
|
38480
|
+
if (tabId === 'redeem') return !!hasRedeem;
|
|
38481
|
+
if (tabId === 'wallet') return !!hasWallet;
|
|
38482
|
+
if (tabId === 'history') return !!hasHistory;
|
|
38483
|
+
return true;
|
|
38484
|
+
}
|
|
38485
|
+
function getInitialActiveTab(availableTabIds, defaultActiveTab) {
|
|
38486
|
+
var _availableTabIds$;
|
|
38487
|
+
if (defaultActiveTab && availableTabIds.includes(defaultActiveTab)) {
|
|
38488
|
+
return defaultActiveTab;
|
|
38489
|
+
}
|
|
38490
|
+
return (_availableTabIds$ = availableTabIds[0]) != null ? _availableTabIds$ : 'items';
|
|
38491
|
+
}
|
|
38492
|
+
function buildAvailableTabIds(params) {
|
|
38493
|
+
var tabOrder = params.tabOrder,
|
|
38494
|
+
hasCharacters = params.hasCharacters,
|
|
38495
|
+
hasRedeem = params.hasRedeem,
|
|
38496
|
+
hasWallet = params.hasWallet,
|
|
38497
|
+
hasHistory = params.hasHistory;
|
|
38498
|
+
var ids = [].concat(tabOrder != null ? tabOrder : DEFAULT_TAB_ORDER, hasCharacters ? ['characters'] : [], hasRedeem ? ['redeem'] : [], hasWallet ? ['wallet'] : [], hasHistory ? ['history'] : []);
|
|
38499
|
+
return Array.from(new Set(ids.filter(function (id) {
|
|
38500
|
+
return isTabAvailable(id, params);
|
|
38501
|
+
})));
|
|
38502
|
+
}
|
|
38503
|
+
function useStoreTabs(params) {
|
|
38504
|
+
var tabOrder = params.tabOrder,
|
|
38505
|
+
hidePremiumTab = params.hidePremiumTab,
|
|
38506
|
+
hasCharacters = params.hasCharacters,
|
|
38507
|
+
hasRedeem = params.hasRedeem,
|
|
38508
|
+
hasWallet = params.hasWallet,
|
|
38509
|
+
hasHistory = params.hasHistory,
|
|
38510
|
+
defaultActiveTab = params.defaultActiveTab,
|
|
38511
|
+
onTabChange = params.onTabChange,
|
|
38512
|
+
getItemCount = params.getItemCount;
|
|
38513
|
+
var availableTabIds = React.useMemo(function () {
|
|
38514
|
+
return buildAvailableTabIds({
|
|
38515
|
+
tabOrder: tabOrder,
|
|
38516
|
+
hidePremiumTab: hidePremiumTab,
|
|
38517
|
+
hasCharacters: hasCharacters,
|
|
38518
|
+
hasRedeem: hasRedeem,
|
|
38519
|
+
hasWallet: hasWallet,
|
|
38520
|
+
hasHistory: hasHistory
|
|
38521
|
+
});
|
|
38522
|
+
}, [tabOrder, hidePremiumTab, hasCharacters, hasRedeem, hasWallet, hasHistory]);
|
|
38523
|
+
var _useState = React.useState(function () {
|
|
38524
|
+
return getInitialActiveTab(availableTabIds, defaultActiveTab);
|
|
38525
|
+
}),
|
|
38526
|
+
activeTab = _useState[0],
|
|
38527
|
+
setActiveTab = _useState[1];
|
|
38528
|
+
var resolvedActiveTab = availableTabIds.includes(activeTab) ? activeTab : getInitialActiveTab(availableTabIds, defaultActiveTab);
|
|
38529
|
+
React.useEffect(function () {
|
|
38530
|
+
if (resolvedActiveTab === activeTab) {
|
|
38531
|
+
return;
|
|
38532
|
+
}
|
|
38533
|
+
setActiveTab(resolvedActiveTab);
|
|
38534
|
+
}, [activeTab, resolvedActiveTab]);
|
|
38535
|
+
var handleTabChange = function handleTabChange(tabId) {
|
|
38536
|
+
var _getItemCount;
|
|
38537
|
+
var nextTab = tabId;
|
|
38538
|
+
if (!availableTabIds.includes(nextTab) || nextTab === resolvedActiveTab) {
|
|
38539
|
+
return;
|
|
38540
|
+
}
|
|
38541
|
+
setActiveTab(nextTab);
|
|
38542
|
+
onTabChange == null ? void 0 : onTabChange(nextTab, (_getItemCount = getItemCount == null ? void 0 : getItemCount(nextTab)) != null ? _getItemCount : 0);
|
|
38543
|
+
};
|
|
38544
|
+
return {
|
|
38545
|
+
availableTabIds: availableTabIds,
|
|
38546
|
+
activeTab: resolvedActiveTab,
|
|
38547
|
+
setActiveTab: setActiveTab,
|
|
38548
|
+
handleTabChange: handleTabChange
|
|
38549
|
+
};
|
|
38550
|
+
}
|
|
38551
|
+
|
|
38552
|
+
var StoreHeader = function StoreHeader(_ref) {
|
|
38553
|
+
var tabs = _ref.tabs,
|
|
38554
|
+
activeTabId = _ref.activeTabId,
|
|
38555
|
+
onTabChange = _ref.onTabChange,
|
|
38556
|
+
cartItemCount = _ref.cartItemCount,
|
|
38557
|
+
onOpenCart = _ref.onOpenCart;
|
|
38558
|
+
return React__default.createElement(HeaderRow, null, React__default.createElement(TabsFlexWrapper, null, React__default.createElement(Tabs, {
|
|
38559
|
+
options: tabs.map(function (t) {
|
|
38560
|
+
return {
|
|
38561
|
+
id: t.id,
|
|
38562
|
+
label: t.label,
|
|
38563
|
+
icon: t.icon
|
|
38564
|
+
};
|
|
38565
|
+
}),
|
|
38566
|
+
activeTabId: activeTabId,
|
|
38567
|
+
onTabChange: onTabChange
|
|
38568
|
+
})), React__default.createElement(CartButtonWrapper, null, React__default.createElement(CTAButton, {
|
|
38569
|
+
icon: React__default.createElement(fa.FaShoppingCart, null),
|
|
38570
|
+
onClick: onOpenCart
|
|
38571
|
+
}), cartItemCount > 0 && React__default.createElement(CartBadge, null, cartItemCount)));
|
|
38572
|
+
};
|
|
38573
|
+
var HeaderRow = /*#__PURE__*/styled__default.div.withConfig({
|
|
38574
|
+
displayName: "StoreHeader__HeaderRow",
|
|
38575
|
+
componentId: "sc-1y26lw-0"
|
|
38576
|
+
})(["display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:0.25rem;padding-top:10px;padding-right:12px;"]);
|
|
38577
|
+
var TabsFlexWrapper = /*#__PURE__*/styled__default.div.withConfig({
|
|
38578
|
+
displayName: "StoreHeader__TabsFlexWrapper",
|
|
38579
|
+
componentId: "sc-1y26lw-1"
|
|
38580
|
+
})(["flex:1;min-width:0;"]);
|
|
38581
|
+
var CartButtonWrapper = /*#__PURE__*/styled__default.div.withConfig({
|
|
38582
|
+
displayName: "StoreHeader__CartButtonWrapper",
|
|
38583
|
+
componentId: "sc-1y26lw-2"
|
|
38584
|
+
})(["position:relative;flex-shrink:0;"]);
|
|
38585
|
+
var CartBadge = /*#__PURE__*/styled__default.div.withConfig({
|
|
38586
|
+
displayName: "StoreHeader__CartBadge",
|
|
38587
|
+
componentId: "sc-1y26lw-3"
|
|
38588
|
+
})(["position:absolute;top:-8px;right:-8px;background:#ef4444;color:white;font-family:'Press Start 2P',cursive;font-size:0.5rem;padding:4px;border-radius:50%;border:2px solid #000;display:flex;align-items:center;justify-content:center;min-width:16px;min-height:16px;box-sizing:content-box;"]);
|
|
38589
|
+
|
|
38439
38590
|
var ScrollableContent = function ScrollableContent(_ref) {
|
|
38440
38591
|
var items = _ref.items,
|
|
38441
38592
|
renderItem = _ref.renderItem,
|
|
@@ -38448,8 +38599,7 @@ var ScrollableContent = function ScrollableContent(_ref) {
|
|
|
38448
38599
|
layout = _ref$layout === void 0 ? 'list' : _ref$layout,
|
|
38449
38600
|
_ref$gridColumns = _ref.gridColumns,
|
|
38450
38601
|
gridColumns = _ref$gridColumns === void 0 ? 4 : _ref$gridColumns,
|
|
38451
|
-
|
|
38452
|
-
maxHeight = _ref$maxHeight === void 0 ? '500px' : _ref$maxHeight;
|
|
38602
|
+
maxHeight = _ref.maxHeight;
|
|
38453
38603
|
if (items.length === 0) {
|
|
38454
38604
|
return React__default.createElement(EmptyMessage$3, null, emptyMessage);
|
|
38455
38605
|
}
|
|
@@ -38505,8 +38655,8 @@ var StyledDropdown$7 = /*#__PURE__*/styled__default(Dropdown).withConfig({
|
|
|
38505
38655
|
var Content$4 = /*#__PURE__*/styled__default.div.withConfig({
|
|
38506
38656
|
displayName: "ScrollableContent__Content",
|
|
38507
38657
|
componentId: "sc-xhh2um-7"
|
|
38508
|
-
})(["display:flex;flex-direction:column;gap:0.5rem;flex:1;padding:1rem;
|
|
38509
|
-
return
|
|
38658
|
+
})(["display:flex;flex-direction:column;gap:0.5rem;flex:1;padding:1rem;", " &.grid{display:grid;grid-template-columns:repeat( ", ",minmax(0,1fr) );gap:1rem;align-items:start;.ScrollableContent-item{display:flex;align-items:flex-start;}}&.list{display:flex;flex-direction:column;gap:0.5rem;}"], function (p) {
|
|
38659
|
+
return p.$maxHeight ? "max-height: " + p.$maxHeight + "; overflow-y: auto; overflow-x: hidden; scrollbar-gutter: stable;" : '';
|
|
38510
38660
|
}, function (props) {
|
|
38511
38661
|
return props.$gridColumns;
|
|
38512
38662
|
});
|
|
@@ -39088,7 +39238,7 @@ var TextInput = /*#__PURE__*/styled__default.input.withConfig({
|
|
|
39088
39238
|
componentId: "sc-ptotuo-12"
|
|
39089
39239
|
})(["width:120px;text-align:center;margin:0 auto;font-size:0.875rem;background:rgba(0,0,0,0.2);color:#ffffff;border:none;padding:0.25rem;"]);
|
|
39090
39240
|
|
|
39091
|
-
var useStoreFiltering = function useStoreFiltering(items) {
|
|
39241
|
+
var useStoreFiltering = function useStoreFiltering(items, overrideCategoryOptions) {
|
|
39092
39242
|
var _useState = React.useState(''),
|
|
39093
39243
|
searchQuery = _useState[0],
|
|
39094
39244
|
setSearchQuery = _useState[1];
|
|
@@ -39096,6 +39246,21 @@ var useStoreFiltering = function useStoreFiltering(items) {
|
|
|
39096
39246
|
selectedCategory = _useState2[0],
|
|
39097
39247
|
setSelectedCategory = _useState2[1];
|
|
39098
39248
|
var categoryOptions = React.useMemo(function () {
|
|
39249
|
+
if (overrideCategoryOptions) {
|
|
39250
|
+
var normalizedOptions = overrideCategoryOptions.some(function (opt) {
|
|
39251
|
+
return opt.value === 'all';
|
|
39252
|
+
}) ? overrideCategoryOptions : [{
|
|
39253
|
+
value: 'all',
|
|
39254
|
+
label: 'All'
|
|
39255
|
+
}].concat(overrideCategoryOptions);
|
|
39256
|
+
return normalizedOptions.map(function (opt, index) {
|
|
39257
|
+
return {
|
|
39258
|
+
id: index,
|
|
39259
|
+
value: opt.value,
|
|
39260
|
+
option: opt.label
|
|
39261
|
+
};
|
|
39262
|
+
});
|
|
39263
|
+
}
|
|
39099
39264
|
var uniqueCategories = Array.from(new Set(items.map(function (item) {
|
|
39100
39265
|
return item.itemType;
|
|
39101
39266
|
})));
|
|
@@ -39107,7 +39272,16 @@ var useStoreFiltering = function useStoreFiltering(items) {
|
|
|
39107
39272
|
option: category === 'all' ? 'All' : category
|
|
39108
39273
|
};
|
|
39109
39274
|
});
|
|
39110
|
-
}, [items]);
|
|
39275
|
+
}, [items, overrideCategoryOptions]);
|
|
39276
|
+
React.useEffect(function () {
|
|
39277
|
+
var _categoryOptions$0$va, _categoryOptions$;
|
|
39278
|
+
if (categoryOptions.some(function (option) {
|
|
39279
|
+
return option.value === selectedCategory;
|
|
39280
|
+
})) {
|
|
39281
|
+
return;
|
|
39282
|
+
}
|
|
39283
|
+
setSelectedCategory((_categoryOptions$0$va = (_categoryOptions$ = categoryOptions[0]) == null ? void 0 : _categoryOptions$.value) != null ? _categoryOptions$0$va : 'all');
|
|
39284
|
+
}, [categoryOptions, selectedCategory]);
|
|
39111
39285
|
var filteredItems = React.useMemo(function () {
|
|
39112
39286
|
return items.filter(function (item) {
|
|
39113
39287
|
var matchesSearch = item.name.toLowerCase().includes(searchQuery.toLowerCase());
|
|
@@ -39146,22 +39320,21 @@ var StoreItemsSection = function StoreItemsSection(_ref) {
|
|
|
39146
39320
|
onItemView = _ref.onItemView,
|
|
39147
39321
|
onCategoryChange = _ref.onCategoryChange,
|
|
39148
39322
|
_ref$currencySymbol = _ref.currencySymbol,
|
|
39149
|
-
currencySymbol = _ref$currencySymbol === void 0 ? '$' : _ref$currencySymbol
|
|
39150
|
-
|
|
39323
|
+
currencySymbol = _ref$currencySymbol === void 0 ? '$' : _ref$currencySymbol,
|
|
39324
|
+
categoryOptionsProp = _ref.categoryOptions;
|
|
39325
|
+
var _useStoreFiltering = useStoreFiltering(items, categoryOptionsProp),
|
|
39151
39326
|
searchQuery = _useStoreFiltering.searchQuery,
|
|
39152
39327
|
setSearchQuery = _useStoreFiltering.setSearchQuery,
|
|
39153
39328
|
selectedCategory = _useStoreFiltering.selectedCategory,
|
|
39154
39329
|
setSelectedCategory = _useStoreFiltering.setSelectedCategory,
|
|
39155
39330
|
categoryOptions = _useStoreFiltering.categoryOptions,
|
|
39156
39331
|
filteredItems = _useStoreFiltering.filteredItems;
|
|
39157
|
-
// Fire category change event when the filter changes
|
|
39158
39332
|
React.useEffect(function () {
|
|
39159
39333
|
onCategoryChange == null ? void 0 : onCategoryChange(selectedCategory, filteredItems.length);
|
|
39160
39334
|
}, [selectedCategory, filteredItems.length]);
|
|
39161
39335
|
var renderStoreItem = function renderStoreItem(item) {
|
|
39162
39336
|
var meta = itemBadges[item.key];
|
|
39163
39337
|
var position = filteredItems.indexOf(item);
|
|
39164
|
-
// Prefer a specialized character skin row when needed
|
|
39165
39338
|
if (item.metadataType === shared.MetadataType.CharacterSkin) {
|
|
39166
39339
|
return React__default.createElement(StoreCharacterSkinRow, {
|
|
39167
39340
|
key: item.key,
|
|
@@ -39172,7 +39345,6 @@ var StoreItemsSection = function StoreItemsSection(_ref) {
|
|
|
39172
39345
|
userAccountType: userAccountType || shared.UserAccountTypes.Free
|
|
39173
39346
|
});
|
|
39174
39347
|
}
|
|
39175
|
-
// Render text input row when configured for this item key
|
|
39176
39348
|
if (textInputItemKeys.includes(item.key)) {
|
|
39177
39349
|
return React__default.createElement(StoreItemRow, Object.assign({
|
|
39178
39350
|
key: item.key,
|
|
@@ -39188,7 +39360,6 @@ var StoreItemsSection = function StoreItemsSection(_ref) {
|
|
|
39188
39360
|
currencySymbol: currencySymbol
|
|
39189
39361
|
}, meta));
|
|
39190
39362
|
}
|
|
39191
|
-
// Fallback to standard arrow-based row
|
|
39192
39363
|
return React__default.createElement(StoreItemRow, Object.assign({
|
|
39193
39364
|
key: item.key,
|
|
39194
39365
|
item: item,
|
|
@@ -39202,19 +39373,7 @@ var StoreItemsSection = function StoreItemsSection(_ref) {
|
|
|
39202
39373
|
currencySymbol: currencySymbol
|
|
39203
39374
|
}, meta));
|
|
39204
39375
|
};
|
|
39205
|
-
|
|
39206
|
-
showFilters = _useState[0],
|
|
39207
|
-
setShowFilters = _useState[1];
|
|
39208
|
-
return React__default.createElement(StoreContainer, null, React__default.createElement(FilterBar, null, React__default.createElement(FilterToggle, {
|
|
39209
|
-
"$active": showFilters,
|
|
39210
|
-
onClick: function onClick() {
|
|
39211
|
-
return setShowFilters(function (prev) {
|
|
39212
|
-
return !prev;
|
|
39213
|
-
});
|
|
39214
|
-
}
|
|
39215
|
-
}, React__default.createElement(fa.FaFilter, {
|
|
39216
|
-
size: 12
|
|
39217
|
-
}), React__default.createElement("span", null, "Filter"))), showFilters && React__default.createElement(SearchHeader$2, null, React__default.createElement(SearchBarContainer$1, null, React__default.createElement(SearchBar, {
|
|
39376
|
+
return React__default.createElement(StoreContainer, null, React__default.createElement(SearchHeader$2, null, React__default.createElement(SearchBarContainer$1, null, React__default.createElement(SearchBar, {
|
|
39218
39377
|
value: searchQuery,
|
|
39219
39378
|
onChange: setSearchQuery,
|
|
39220
39379
|
placeholder: "Search items..."
|
|
@@ -39226,15 +39385,12 @@ var StoreItemsSection = function StoreItemsSection(_ref) {
|
|
|
39226
39385
|
};
|
|
39227
39386
|
}),
|
|
39228
39387
|
activeId: selectedCategory,
|
|
39229
|
-
onChange:
|
|
39230
|
-
return setSelectedCategory(id);
|
|
39231
|
-
}
|
|
39388
|
+
onChange: setSelectedCategory
|
|
39232
39389
|
})), React__default.createElement(ScrollableContent, {
|
|
39233
39390
|
items: filteredItems,
|
|
39234
39391
|
renderItem: renderStoreItem,
|
|
39235
39392
|
emptyMessage: "No items match your filters.",
|
|
39236
|
-
layout: "list"
|
|
39237
|
-
maxHeight: "none"
|
|
39393
|
+
layout: "list"
|
|
39238
39394
|
}));
|
|
39239
39395
|
};
|
|
39240
39396
|
var StoreContainer = /*#__PURE__*/styled__default.div.withConfig({
|
|
@@ -39244,22 +39400,11 @@ var StoreContainer = /*#__PURE__*/styled__default.div.withConfig({
|
|
|
39244
39400
|
var SearchHeader$2 = /*#__PURE__*/styled__default.div.withConfig({
|
|
39245
39401
|
displayName: "StoreItemsSection__SearchHeader",
|
|
39246
39402
|
componentId: "sc-l6f466-1"
|
|
39247
|
-
})(["display:flex;gap:0.5rem;align-items:center;padding
|
|
39403
|
+
})(["display:flex;gap:0.5rem;align-items:center;padding:0.25rem 1rem 0;"]);
|
|
39248
39404
|
var SearchBarContainer$1 = /*#__PURE__*/styled__default.div.withConfig({
|
|
39249
39405
|
displayName: "StoreItemsSection__SearchBarContainer",
|
|
39250
39406
|
componentId: "sc-l6f466-2"
|
|
39251
39407
|
})(["flex:0.75;"]);
|
|
39252
|
-
var FilterBar = /*#__PURE__*/styled__default.div.withConfig({
|
|
39253
|
-
displayName: "StoreItemsSection__FilterBar",
|
|
39254
|
-
componentId: "sc-l6f466-3"
|
|
39255
|
-
})(["display:flex;padding-top:0.25rem;"]);
|
|
39256
|
-
var FilterToggle = /*#__PURE__*/styled__default.button.withConfig({
|
|
39257
|
-
displayName: "StoreItemsSection__FilterToggle",
|
|
39258
|
-
componentId: "sc-l6f466-4"
|
|
39259
|
-
})(["display:flex;align-items:center;gap:0.4rem;background:", ";border:1px solid rgba(255,255,255,0.3);color:#fff;padding:0.3rem 0.6rem;border-radius:4px;cursor:pointer;font-family:'Press Start 2P',cursive;font-size:0.55rem;&:hover{background:rgba(255,255,255,0.1);}"], function (_ref2) {
|
|
39260
|
-
var $active = _ref2.$active;
|
|
39261
|
-
return $active ? 'rgba(255,255,255,0.15)' : 'transparent';
|
|
39262
|
-
});
|
|
39263
39408
|
|
|
39264
39409
|
var usePackFiltering = function usePackFiltering(packs) {
|
|
39265
39410
|
var _useState = React.useState(''),
|
|
@@ -39407,8 +39552,7 @@ var StorePacksSection = function StorePacksSection(_ref2) {
|
|
|
39407
39552
|
onChange: setSearchQuery,
|
|
39408
39553
|
placeholder: 'Search packs...'
|
|
39409
39554
|
},
|
|
39410
|
-
layout: "list"
|
|
39411
|
-
maxHeight: "50vh"
|
|
39555
|
+
layout: "list"
|
|
39412
39556
|
});
|
|
39413
39557
|
};
|
|
39414
39558
|
var PackRow = /*#__PURE__*/styled__default(ItemRowWrapper).withConfig({
|
|
@@ -39712,7 +39856,7 @@ var Store = function Store(_ref) {
|
|
|
39712
39856
|
packs = _ref$packs === void 0 ? [] : _ref$packs,
|
|
39713
39857
|
atlasJSON = _ref.atlasJSON,
|
|
39714
39858
|
atlasIMG = _ref.atlasIMG,
|
|
39715
|
-
|
|
39859
|
+
_onPurchase = _ref.onPurchase,
|
|
39716
39860
|
onShowHistory = _ref.onShowHistory,
|
|
39717
39861
|
onShowWallet = _ref.onShowWallet,
|
|
39718
39862
|
walletLabel = _ref.walletLabel,
|
|
@@ -39733,8 +39877,6 @@ var Store = function Store(_ref) {
|
|
|
39733
39877
|
customHistoryContent = _ref.customHistoryContent,
|
|
39734
39878
|
_ref$fullScreen = _ref.fullScreen,
|
|
39735
39879
|
fullScreen = _ref$fullScreen === void 0 ? false : _ref$fullScreen,
|
|
39736
|
-
containerWidth = _ref.containerWidth,
|
|
39737
|
-
containerHeight = _ref.containerHeight,
|
|
39738
39880
|
_ref$packsTabLabel = _ref.packsTabLabel,
|
|
39739
39881
|
packsTabLabel = _ref$packsTabLabel === void 0 ? 'Packs' : _ref$packsTabLabel,
|
|
39740
39882
|
packsBadge = _ref.packsBadge,
|
|
@@ -39744,7 +39886,7 @@ var Store = function Store(_ref) {
|
|
|
39744
39886
|
packBadges = _ref.packBadges,
|
|
39745
39887
|
onItemView = _ref.onItemView,
|
|
39746
39888
|
onPackView = _ref.onPackView,
|
|
39747
|
-
|
|
39889
|
+
onTabChange = _ref.onTabChange,
|
|
39748
39890
|
onCategoryChange = _ref.onCategoryChange,
|
|
39749
39891
|
onCartOpen = _ref.onCartOpen,
|
|
39750
39892
|
onAddToCart = _ref.onAddToCart,
|
|
@@ -39757,24 +39899,15 @@ var Store = function Store(_ref) {
|
|
|
39757
39899
|
currencySymbol = _ref$currencySymbol === void 0 ? '$' : _ref$currencySymbol,
|
|
39758
39900
|
onRedeem = _ref.onRedeem,
|
|
39759
39901
|
onRedeemInputFocus = _ref.onRedeemInputFocus,
|
|
39760
|
-
onRedeemInputBlur = _ref.onRedeemInputBlur
|
|
39761
|
-
|
|
39902
|
+
onRedeemInputBlur = _ref.onRedeemInputBlur,
|
|
39903
|
+
_ref$width = _ref.width,
|
|
39904
|
+
width = _ref$width === void 0 ? '1000px' : _ref$width,
|
|
39905
|
+
_ref$height = _ref.height,
|
|
39906
|
+
height = _ref$height === void 0 ? 'min(85vh, 900px)' : _ref$height,
|
|
39907
|
+
itemCategoryOptions = _ref.itemCategoryOptions;
|
|
39762
39908
|
var _useState = React.useState(null),
|
|
39763
39909
|
selectedPack = _useState[0],
|
|
39764
39910
|
setSelectedPack = _useState[1];
|
|
39765
|
-
var _useState2 = React.useState(function () {
|
|
39766
|
-
var _validTabs$;
|
|
39767
|
-
var allTabIds = [].concat(tabOrder != null ? tabOrder : defaultTabOrder, customCharactersContent ? ['characters'] : [], onRedeem ? ['redeem'] : [], onShowWallet || customWalletContent ? ['wallet'] : [], onShowHistory || customHistoryContent ? ['history'] : []);
|
|
39768
|
-
var validTabs = Array.from(new Set(allTabIds.filter(function (id) {
|
|
39769
|
-
return !(hidePremiumTab && id === 'premium');
|
|
39770
|
-
})));
|
|
39771
|
-
if (defaultActiveTab && validTabs.includes(defaultActiveTab)) {
|
|
39772
|
-
return defaultActiveTab;
|
|
39773
|
-
}
|
|
39774
|
-
return (_validTabs$ = validTabs[0]) != null ? _validTabs$ : hidePremiumTab ? 'items' : 'premium';
|
|
39775
|
-
}),
|
|
39776
|
-
activeTab = _useState2[0],
|
|
39777
|
-
setActiveTab = _useState2[1];
|
|
39778
39911
|
var _useStoreCart = useStoreCart(),
|
|
39779
39912
|
cartItems = _useStoreCart.cartItems,
|
|
39780
39913
|
handleAddToCart = _useStoreCart.handleAddToCart,
|
|
@@ -39784,13 +39917,38 @@ var Store = function Store(_ref) {
|
|
|
39784
39917
|
closeCart = _useStoreCart.closeCart,
|
|
39785
39918
|
getTotalItems = _useStoreCart.getTotalItems,
|
|
39786
39919
|
getTotalPrice = _useStoreCart.getTotalPrice,
|
|
39787
|
-
isCartOpen = _useStoreCart.isCartOpen
|
|
39788
|
-
|
|
39789
|
-
|
|
39790
|
-
|
|
39791
|
-
var
|
|
39792
|
-
|
|
39793
|
-
|
|
39920
|
+
isCartOpen = _useStoreCart.isCartOpen,
|
|
39921
|
+
isCollectingMetadata = _useStoreCart.isCollectingMetadata,
|
|
39922
|
+
currentMetadataItem = _useStoreCart.currentMetadataItem,
|
|
39923
|
+
resolveMetadata = _useStoreCart.resolveMetadata;
|
|
39924
|
+
var filteredItems = React.useMemo(function () {
|
|
39925
|
+
return {
|
|
39926
|
+
items: items,
|
|
39927
|
+
premium: items.filter(function (item) {
|
|
39928
|
+
var _item$requiredAccount, _item$requiredAccount2;
|
|
39929
|
+
return ((_item$requiredAccount = (_item$requiredAccount2 = item.requiredAccountType) == null ? void 0 : _item$requiredAccount2.length) != null ? _item$requiredAccount : 0) > 0;
|
|
39930
|
+
})
|
|
39931
|
+
};
|
|
39932
|
+
}, [items]);
|
|
39933
|
+
var _useStoreTabs = useStoreTabs({
|
|
39934
|
+
tabOrder: tabOrder,
|
|
39935
|
+
defaultActiveTab: defaultActiveTab,
|
|
39936
|
+
hidePremiumTab: hidePremiumTab,
|
|
39937
|
+
hasCharacters: !!customCharactersContent,
|
|
39938
|
+
hasRedeem: !!onRedeem,
|
|
39939
|
+
hasWallet: !!(onShowWallet || customWalletContent),
|
|
39940
|
+
hasHistory: !!(onShowHistory || customHistoryContent),
|
|
39941
|
+
onTabChange: onTabChange,
|
|
39942
|
+
getItemCount: function getItemCount(tab) {
|
|
39943
|
+
if (tab === 'items') return filteredItems.items.length;
|
|
39944
|
+
if (tab === 'premium') return filteredItems.premium.length;
|
|
39945
|
+
if (tab === 'packs') return packs.length;
|
|
39946
|
+
return 0;
|
|
39947
|
+
}
|
|
39948
|
+
}),
|
|
39949
|
+
availableTabIds = _useStoreTabs.availableTabIds,
|
|
39950
|
+
activeTab = _useStoreTabs.activeTab,
|
|
39951
|
+
handleTabChange = _useStoreTabs.handleTabChange;
|
|
39794
39952
|
var handleOpenCart = function handleOpenCart() {
|
|
39795
39953
|
openCart();
|
|
39796
39954
|
onCartOpen == null ? void 0 : onCartOpen();
|
|
@@ -39807,85 +39965,13 @@ var Store = function Store(_ref) {
|
|
|
39807
39965
|
if (quantity === void 0) {
|
|
39808
39966
|
quantity = 1;
|
|
39809
39967
|
}
|
|
39810
|
-
var
|
|
39811
|
-
|
|
39812
|
-
|
|
39813
|
-
description: pack.description || '',
|
|
39814
|
-
price: pack.priceUSD,
|
|
39815
|
-
currency: shared.PaymentCurrency.USD,
|
|
39816
|
-
texturePath: pack.image["default"] || pack.image.src,
|
|
39817
|
-
type: shared.PurchaseType.Pack,
|
|
39818
|
-
onPurchase: function () {
|
|
39819
|
-
var _onPurchase = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
39820
|
-
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
39821
|
-
while (1) switch (_context.prev = _context.next) {
|
|
39822
|
-
case 0:
|
|
39823
|
-
case "end":
|
|
39824
|
-
return _context.stop();
|
|
39825
|
-
}
|
|
39826
|
-
}, _callee);
|
|
39827
|
-
}));
|
|
39828
|
-
function onPurchase() {
|
|
39829
|
-
return _onPurchase.apply(this, arguments);
|
|
39830
|
-
}
|
|
39831
|
-
return onPurchase;
|
|
39832
|
-
}(),
|
|
39833
|
-
itemType: shared.ItemType.Consumable,
|
|
39834
|
-
itemSubType: shared.ItemSubType.Other,
|
|
39835
|
-
rarity: shared.ItemRarities.Common,
|
|
39836
|
-
weight: 0,
|
|
39837
|
-
isStackable: false,
|
|
39838
|
-
maxStackSize: 1,
|
|
39839
|
-
isUsable: false
|
|
39840
|
-
};
|
|
39841
|
-
handleAddToCart(packItem, quantity);
|
|
39842
|
-
onAddToCart == null ? void 0 : onAddToCart(packItem, quantity);
|
|
39843
|
-
};
|
|
39844
|
-
var filterItems = function filterItems(itemsToFilter, type) {
|
|
39845
|
-
return itemsToFilter.filter(function (item) {
|
|
39846
|
-
if (type === 'premium') {
|
|
39847
|
-
var _item$requiredAccount, _item$requiredAccount2;
|
|
39848
|
-
return (_item$requiredAccount = (_item$requiredAccount2 = item.requiredAccountType) == null ? void 0 : _item$requiredAccount2.length) != null ? _item$requiredAccount : 0 > 0;
|
|
39849
|
-
}
|
|
39850
|
-
return true;
|
|
39851
|
-
});
|
|
39852
|
-
};
|
|
39853
|
-
var filteredItems = React.useMemo(function () {
|
|
39854
|
-
return {
|
|
39855
|
-
items: filterItems(items, 'items'),
|
|
39856
|
-
premium: filterItems(items, 'premium')
|
|
39857
|
-
};
|
|
39858
|
-
}, [items]);
|
|
39859
|
-
var handleMetadataCollected = function handleMetadataCollected(metadata) {
|
|
39860
|
-
if (currentMetadataItem && window.__metadataResolvers) {
|
|
39861
|
-
// Resolve the promise in the useStoreMetadata hook
|
|
39862
|
-
window.__metadataResolvers.resolve(metadata);
|
|
39863
|
-
// Reset the metadata collection state
|
|
39864
|
-
setCurrentMetadataItem(null);
|
|
39865
|
-
// Removed unused setPendingMetadataQuantity call
|
|
39866
|
-
}
|
|
39867
|
-
};
|
|
39868
|
-
var handleMetadataCancel = function handleMetadataCancel() {
|
|
39869
|
-
if (window.__metadataResolvers) {
|
|
39870
|
-
// Resolve with null to indicate cancellation
|
|
39871
|
-
window.__metadataResolvers.resolve(null);
|
|
39872
|
-
}
|
|
39873
|
-
// Reset the metadata collection state
|
|
39874
|
-
setCurrentMetadataItem(null);
|
|
39875
|
-
// Removed unused setPendingMetadataQuantity call
|
|
39876
|
-
setIsCollectingMetadata(false);
|
|
39968
|
+
var bp = packToBlueprint(pack);
|
|
39969
|
+
handleAddToCart(bp, quantity);
|
|
39970
|
+
onAddToCart == null ? void 0 : onAddToCart(bp, quantity);
|
|
39877
39971
|
};
|
|
39878
|
-
|
|
39879
|
-
return
|
|
39880
|
-
}
|
|
39881
|
-
if (error) {
|
|
39882
|
-
return React__default.createElement(ErrorMessage$3, null, error);
|
|
39883
|
-
}
|
|
39884
|
-
// Build tabs dynamically based on props
|
|
39885
|
-
var tabIds = [].concat(tabOrder != null ? tabOrder : defaultTabOrder, customCharactersContent ? ['characters'] : [], onRedeem ? ['redeem'] : [], onShowWallet || customWalletContent ? ['wallet'] : [], onShowHistory || customHistoryContent ? ['history'] : []);
|
|
39886
|
-
var availableTabIds = Array.from(new Set(tabIds.filter(function (id) {
|
|
39887
|
-
return !(hidePremiumTab && id === 'premium');
|
|
39888
|
-
})));
|
|
39972
|
+
var makePackQuickBuy = onQuickBuy ? function (pack, qty) {
|
|
39973
|
+
return onQuickBuy(packToBlueprint(pack), qty);
|
|
39974
|
+
} : undefined;
|
|
39889
39975
|
var tabsMap = {
|
|
39890
39976
|
premium: {
|
|
39891
39977
|
id: 'premium',
|
|
@@ -39899,40 +39985,7 @@ var Store = function Store(_ref) {
|
|
|
39899
39985
|
return pack.priceUSD >= 9.99;
|
|
39900
39986
|
}),
|
|
39901
39987
|
onAddToCart: handleAddPackToCart,
|
|
39902
|
-
onQuickBuy:
|
|
39903
|
-
var bp = {
|
|
39904
|
-
key: pack.key,
|
|
39905
|
-
name: pack.title,
|
|
39906
|
-
description: pack.description || '',
|
|
39907
|
-
price: pack.priceUSD,
|
|
39908
|
-
currency: shared.PaymentCurrency.USD,
|
|
39909
|
-
texturePath: pack.image["default"] || pack.image.src,
|
|
39910
|
-
type: shared.PurchaseType.Pack,
|
|
39911
|
-
onPurchase: function () {
|
|
39912
|
-
var _onPurchase2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
|
|
39913
|
-
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
39914
|
-
while (1) switch (_context2.prev = _context2.next) {
|
|
39915
|
-
case 0:
|
|
39916
|
-
case "end":
|
|
39917
|
-
return _context2.stop();
|
|
39918
|
-
}
|
|
39919
|
-
}, _callee2);
|
|
39920
|
-
}));
|
|
39921
|
-
function onPurchase() {
|
|
39922
|
-
return _onPurchase2.apply(this, arguments);
|
|
39923
|
-
}
|
|
39924
|
-
return onPurchase;
|
|
39925
|
-
}(),
|
|
39926
|
-
itemType: shared.ItemType.Consumable,
|
|
39927
|
-
itemSubType: shared.ItemSubType.Other,
|
|
39928
|
-
rarity: shared.ItemRarities.Common,
|
|
39929
|
-
weight: 0,
|
|
39930
|
-
isStackable: false,
|
|
39931
|
-
maxStackSize: 1,
|
|
39932
|
-
isUsable: false
|
|
39933
|
-
};
|
|
39934
|
-
onQuickBuy(bp, qty);
|
|
39935
|
-
} : undefined,
|
|
39988
|
+
onQuickBuy: makePackQuickBuy,
|
|
39936
39989
|
onSelectPack: setSelectedPack,
|
|
39937
39990
|
atlasJSON: atlasJSON,
|
|
39938
39991
|
atlasIMG: atlasIMG,
|
|
@@ -39957,40 +40010,7 @@ var Store = function Store(_ref) {
|
|
|
39957
40010
|
return pack.priceUSD < 9.99;
|
|
39958
40011
|
}),
|
|
39959
40012
|
onAddToCart: handleAddPackToCart,
|
|
39960
|
-
onQuickBuy:
|
|
39961
|
-
var bp = {
|
|
39962
|
-
key: pack.key,
|
|
39963
|
-
name: pack.title,
|
|
39964
|
-
description: pack.description || '',
|
|
39965
|
-
price: pack.priceUSD,
|
|
39966
|
-
currency: shared.PaymentCurrency.USD,
|
|
39967
|
-
texturePath: pack.image["default"] || pack.image.src,
|
|
39968
|
-
type: shared.PurchaseType.Pack,
|
|
39969
|
-
onPurchase: function () {
|
|
39970
|
-
var _onPurchase3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
|
|
39971
|
-
return _regeneratorRuntime().wrap(function _callee3$(_context3) {
|
|
39972
|
-
while (1) switch (_context3.prev = _context3.next) {
|
|
39973
|
-
case 0:
|
|
39974
|
-
case "end":
|
|
39975
|
-
return _context3.stop();
|
|
39976
|
-
}
|
|
39977
|
-
}, _callee3);
|
|
39978
|
-
}));
|
|
39979
|
-
function onPurchase() {
|
|
39980
|
-
return _onPurchase3.apply(this, arguments);
|
|
39981
|
-
}
|
|
39982
|
-
return onPurchase;
|
|
39983
|
-
}(),
|
|
39984
|
-
itemType: shared.ItemType.Consumable,
|
|
39985
|
-
itemSubType: shared.ItemSubType.Other,
|
|
39986
|
-
rarity: shared.ItemRarities.Common,
|
|
39987
|
-
weight: 0,
|
|
39988
|
-
isStackable: false,
|
|
39989
|
-
maxStackSize: 1,
|
|
39990
|
-
isUsable: false
|
|
39991
|
-
};
|
|
39992
|
-
onQuickBuy(bp, qty);
|
|
39993
|
-
} : undefined,
|
|
40013
|
+
onQuickBuy: makePackQuickBuy,
|
|
39994
40014
|
onSelectPack: setSelectedPack,
|
|
39995
40015
|
atlasJSON: atlasJSON,
|
|
39996
40016
|
atlasIMG: atlasIMG,
|
|
@@ -40009,7 +40029,7 @@ var Store = function Store(_ref) {
|
|
|
40009
40029
|
content: React__default.createElement(StoreItemsSection, {
|
|
40010
40030
|
items: filteredItems.items,
|
|
40011
40031
|
onAddToCart: handleAddToCartTracked,
|
|
40012
|
-
onQuickBuy: onQuickBuy ? function (item, qty
|
|
40032
|
+
onQuickBuy: onQuickBuy ? function (item, qty) {
|
|
40013
40033
|
return onQuickBuy(item, qty);
|
|
40014
40034
|
} : undefined,
|
|
40015
40035
|
atlasJSON: atlasJSON,
|
|
@@ -40019,7 +40039,8 @@ var Store = function Store(_ref) {
|
|
|
40019
40039
|
itemBadges: itemBadges,
|
|
40020
40040
|
onItemView: onItemView,
|
|
40021
40041
|
onCategoryChange: onCategoryChange,
|
|
40022
|
-
currencySymbol: currencySymbol
|
|
40042
|
+
currencySymbol: currencySymbol,
|
|
40043
|
+
categoryOptions: itemCategoryOptions
|
|
40023
40044
|
})
|
|
40024
40045
|
},
|
|
40025
40046
|
characters: {
|
|
@@ -40069,39 +40090,42 @@ var Store = function Store(_ref) {
|
|
|
40069
40090
|
}))
|
|
40070
40091
|
}
|
|
40071
40092
|
};
|
|
40093
|
+
if (loading) return React__default.createElement(LoadingMessage$1, null, "Loading...");
|
|
40094
|
+
if (error) return React__default.createElement(ErrorMessage$3, null, error);
|
|
40072
40095
|
return React__default.createElement(DraggableContainer, {
|
|
40073
|
-
title: "Store",
|
|
40074
40096
|
onCloseButton: onClose,
|
|
40075
|
-
width:
|
|
40097
|
+
width: width,
|
|
40076
40098
|
minWidth: "700px",
|
|
40077
|
-
height:
|
|
40099
|
+
height: height,
|
|
40078
40100
|
type: exports.RPGUIContainerTypes.Framed,
|
|
40079
|
-
cancelDrag: "
|
|
40101
|
+
cancelDrag: ".store-scroll-area, [class*='CartView'], [class*='StoreItemDetails'], .close-button",
|
|
40080
40102
|
isFullScreen: fullScreen
|
|
40081
|
-
}, isCollectingMetadata && currentMetadataItem && currentMetadataItem.metadataType ? React__default.createElement(MetadataCollector, {
|
|
40103
|
+
}, isCollectingMetadata && currentMetadataItem != null && currentMetadataItem.metadataType ? React__default.createElement(MetadataCollector, {
|
|
40082
40104
|
metadataType: currentMetadataItem.metadataType,
|
|
40083
40105
|
config: currentMetadataItem.metadataConfig || {},
|
|
40084
|
-
onCollect:
|
|
40085
|
-
onCancel:
|
|
40106
|
+
onCollect: resolveMetadata,
|
|
40107
|
+
onCancel: function onCancel() {
|
|
40108
|
+
return resolveMetadata(null);
|
|
40109
|
+
}
|
|
40086
40110
|
}) : isCartOpen ? React__default.createElement(CartView, {
|
|
40087
40111
|
cartItems: cartItems,
|
|
40088
40112
|
onRemoveFromCart: handleRemoveFromCartTracked,
|
|
40089
40113
|
onClose: closeCart,
|
|
40090
40114
|
onPurchase: function () {
|
|
40091
|
-
var
|
|
40092
|
-
return _regeneratorRuntime().wrap(function
|
|
40093
|
-
while (1) switch (
|
|
40115
|
+
var _onPurchase2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
40116
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
40117
|
+
while (1) switch (_context.prev = _context.next) {
|
|
40094
40118
|
case 0:
|
|
40095
|
-
handleCartPurchase(
|
|
40096
|
-
return
|
|
40119
|
+
handleCartPurchase(_onPurchase);
|
|
40120
|
+
return _context.abrupt("return", true);
|
|
40097
40121
|
case 2:
|
|
40098
40122
|
case "end":
|
|
40099
|
-
return
|
|
40123
|
+
return _context.stop();
|
|
40100
40124
|
}
|
|
40101
|
-
},
|
|
40125
|
+
}, _callee);
|
|
40102
40126
|
}));
|
|
40103
40127
|
function onPurchase() {
|
|
40104
|
-
return
|
|
40128
|
+
return _onPurchase2.apply(this, arguments);
|
|
40105
40129
|
}
|
|
40106
40130
|
return onPurchase;
|
|
40107
40131
|
}(),
|
|
@@ -40125,7 +40149,9 @@ var Store = function Store(_ref) {
|
|
|
40125
40149
|
return handleAddPackToCart(selectedPack);
|
|
40126
40150
|
},
|
|
40127
40151
|
currencySymbol: currencySymbol
|
|
40128
|
-
}) : React__default.createElement(Container$Q,
|
|
40152
|
+
}) : React__default.createElement(Container$Q, {
|
|
40153
|
+
className: "store-scroll-area"
|
|
40154
|
+
}, featuredItems && featuredItems.length > 0 && React__default.createElement(FeaturedBanner, {
|
|
40129
40155
|
items: featuredItems,
|
|
40130
40156
|
atlasJSON: atlasJSON,
|
|
40131
40157
|
atlasIMG: atlasIMG,
|
|
@@ -40139,48 +40165,17 @@ var Store = function Store(_ref) {
|
|
|
40139
40165
|
var blueprint = items.find(function (bp) {
|
|
40140
40166
|
return bp.key === item.key;
|
|
40141
40167
|
});
|
|
40142
|
-
if (blueprint)
|
|
40168
|
+
if (blueprint) {
|
|
40169
|
+
onQuickBuy(blueprint, 1);
|
|
40170
|
+
} else {
|
|
40143
40171
|
var pack = packs.find(function (p) {
|
|
40144
40172
|
return p.key === item.key;
|
|
40145
40173
|
});
|
|
40146
|
-
if (pack)
|
|
40147
|
-
var packBlueprint = {
|
|
40148
|
-
key: pack.key,
|
|
40149
|
-
name: pack.title,
|
|
40150
|
-
description: pack.description || '',
|
|
40151
|
-
price: pack.priceUSD,
|
|
40152
|
-
currency: shared.PaymentCurrency.USD,
|
|
40153
|
-
texturePath: pack.image["default"] || pack.image.src,
|
|
40154
|
-
type: shared.PurchaseType.Pack,
|
|
40155
|
-
onPurchase: function () {
|
|
40156
|
-
var _onPurchase6 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {
|
|
40157
|
-
return _regeneratorRuntime().wrap(function _callee5$(_context5) {
|
|
40158
|
-
while (1) switch (_context5.prev = _context5.next) {
|
|
40159
|
-
case 0:
|
|
40160
|
-
case "end":
|
|
40161
|
-
return _context5.stop();
|
|
40162
|
-
}
|
|
40163
|
-
}, _callee5);
|
|
40164
|
-
}));
|
|
40165
|
-
function onPurchase() {
|
|
40166
|
-
return _onPurchase6.apply(this, arguments);
|
|
40167
|
-
}
|
|
40168
|
-
return onPurchase;
|
|
40169
|
-
}(),
|
|
40170
|
-
itemType: shared.ItemType.Consumable,
|
|
40171
|
-
itemSubType: shared.ItemSubType.Other,
|
|
40172
|
-
rarity: shared.ItemRarities.Common,
|
|
40173
|
-
weight: 0,
|
|
40174
|
-
isStackable: false,
|
|
40175
|
-
maxStackSize: 1,
|
|
40176
|
-
isUsable: false
|
|
40177
|
-
};
|
|
40178
|
-
onQuickBuy(packBlueprint, 1);
|
|
40179
|
-
}
|
|
40174
|
+
if (pack) onQuickBuy(packToBlueprint(pack), 1);
|
|
40180
40175
|
}
|
|
40181
40176
|
} : undefined
|
|
40182
|
-
}), React__default.createElement(MainContent$1, null, React__default.createElement(
|
|
40183
|
-
|
|
40177
|
+
}), React__default.createElement(MainContent$1, null, React__default.createElement(StoreHeader, {
|
|
40178
|
+
tabs: availableTabIds.map(function (id) {
|
|
40184
40179
|
var _tabsMap$id, _tabsMap$id2;
|
|
40185
40180
|
return {
|
|
40186
40181
|
id: id,
|
|
@@ -40189,20 +40184,12 @@ var Store = function Store(_ref) {
|
|
|
40189
40184
|
};
|
|
40190
40185
|
}),
|
|
40191
40186
|
activeTabId: activeTab,
|
|
40192
|
-
onTabChange:
|
|
40193
|
-
|
|
40194
|
-
|
|
40195
|
-
|
|
40196
|
-
var itemCount = nextTab === 'items' ? filteredItems.items.length : nextTab === 'premium' ? filteredItems.premium.length : nextTab === 'packs' ? packs.length : 0;
|
|
40197
|
-
_onTabChange(nextTab, itemCount);
|
|
40198
|
-
}
|
|
40199
|
-
}
|
|
40200
|
-
})), React__default.createElement(CartButtonWrapper, null, React__default.createElement(CTAButton, {
|
|
40201
|
-
icon: React__default.createElement(fa.FaShoppingCart, null),
|
|
40202
|
-
onClick: handleOpenCart
|
|
40203
|
-
}), getTotalItems() > 0 && React__default.createElement(CartBadge, null, getTotalItems()))), React__default.createElement(TabContent, null, (_tabsMap$activeTab = tabsMap[activeTab]) == null ? void 0 : _tabsMap$activeTab.content)), cartItems.length > 0 && React__default.createElement(Footer$3, null, React__default.createElement(CTAButton, {
|
|
40187
|
+
onTabChange: handleTabChange,
|
|
40188
|
+
cartItemCount: getTotalItems(),
|
|
40189
|
+
onOpenCart: handleOpenCart
|
|
40190
|
+
}), React__default.createElement(TabContent, null, (_tabsMap$activeTab = tabsMap[activeTab]) == null ? void 0 : _tabsMap$activeTab.content)), cartItems.length > 0 && React__default.createElement(Footer$3, null, React__default.createElement(CTAButton, {
|
|
40204
40191
|
icon: React__default.createElement(fa.FaShoppingCart, null),
|
|
40205
|
-
label: "
|
|
40192
|
+
label: "Proceed to Checkout (" + currencySymbol + getTotalPrice().toFixed(2) + ")",
|
|
40206
40193
|
onClick: handleOpenCart,
|
|
40207
40194
|
fullWidth: true
|
|
40208
40195
|
}))));
|
|
@@ -40210,50 +40197,34 @@ var Store = function Store(_ref) {
|
|
|
40210
40197
|
var Container$Q = /*#__PURE__*/styled__default.div.withConfig({
|
|
40211
40198
|
displayName: "Store__Container",
|
|
40212
40199
|
componentId: "sc-64dj00-0"
|
|
40213
|
-
})(["display:flex;flex-direction:column;width:100%;height:
|
|
40214
|
-
var HeaderRow = /*#__PURE__*/styled__default.div.withConfig({
|
|
40215
|
-
displayName: "Store__HeaderRow",
|
|
40216
|
-
componentId: "sc-64dj00-1"
|
|
40217
|
-
})(["display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:0.25rem;padding-top:10px;padding-right:12px;"]);
|
|
40218
|
-
var TabsFlexWrapper = /*#__PURE__*/styled__default.div.withConfig({
|
|
40219
|
-
displayName: "Store__TabsFlexWrapper",
|
|
40220
|
-
componentId: "sc-64dj00-2"
|
|
40221
|
-
})(["flex:1;min-width:0;"]);
|
|
40222
|
-
var CartButtonWrapper = /*#__PURE__*/styled__default.div.withConfig({
|
|
40223
|
-
displayName: "Store__CartButtonWrapper",
|
|
40224
|
-
componentId: "sc-64dj00-3"
|
|
40225
|
-
})(["position:relative;flex-shrink:0;"]);
|
|
40226
|
-
var CartBadge = /*#__PURE__*/styled__default.div.withConfig({
|
|
40227
|
-
displayName: "Store__CartBadge",
|
|
40228
|
-
componentId: "sc-64dj00-4"
|
|
40229
|
-
})(["position:absolute;top:-8px;right:-8px;background:#ef4444;color:white;font-family:'Press Start 2P',cursive;font-size:0.5rem;padding:4px;border-radius:50%;border:2px solid #000;display:flex;align-items:center;justify-content:center;min-width:16px;min-height:16px;box-sizing:content-box;"]);
|
|
40200
|
+
})(["display:flex;flex-direction:column;width:100%;height:100%;gap:0.5rem;position:relative;overflow:hidden;"]);
|
|
40230
40201
|
var MainContent$1 = /*#__PURE__*/styled__default.div.withConfig({
|
|
40231
40202
|
displayName: "Store__MainContent",
|
|
40232
|
-
componentId: "sc-64dj00-
|
|
40203
|
+
componentId: "sc-64dj00-1"
|
|
40233
40204
|
})(["flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden;"]);
|
|
40234
40205
|
var TabContent = /*#__PURE__*/styled__default.div.withConfig({
|
|
40235
40206
|
displayName: "Store__TabContent",
|
|
40236
|
-
componentId: "sc-64dj00-
|
|
40207
|
+
componentId: "sc-64dj00-2"
|
|
40237
40208
|
})(["flex:1;overflow-y:auto;"]);
|
|
40238
40209
|
var Footer$3 = /*#__PURE__*/styled__default.div.withConfig({
|
|
40239
40210
|
displayName: "Store__Footer",
|
|
40240
|
-
componentId: "sc-64dj00-
|
|
40241
|
-
})(["padding:
|
|
40211
|
+
componentId: "sc-64dj00-3"
|
|
40212
|
+
})(["padding:1rem;border-top:2px solid #f59e0b;background:rgba(0,0,0,0.2);flex-shrink:0;"]);
|
|
40242
40213
|
var TabLabelWithBadge = /*#__PURE__*/styled__default.span.withConfig({
|
|
40243
40214
|
displayName: "Store__TabLabelWithBadge",
|
|
40244
|
-
componentId: "sc-64dj00-
|
|
40215
|
+
componentId: "sc-64dj00-4"
|
|
40245
40216
|
})(["display:inline-flex;align-items:center;gap:5px;"]);
|
|
40246
40217
|
var LoadingMessage$1 = /*#__PURE__*/styled__default.div.withConfig({
|
|
40247
40218
|
displayName: "Store__LoadingMessage",
|
|
40248
|
-
componentId: "sc-64dj00-
|
|
40219
|
+
componentId: "sc-64dj00-5"
|
|
40249
40220
|
})(["text-align:center;color:", ";padding:2rem;"], uiColors.white);
|
|
40250
40221
|
var ErrorMessage$3 = /*#__PURE__*/styled__default.div.withConfig({
|
|
40251
40222
|
displayName: "Store__ErrorMessage",
|
|
40252
|
-
componentId: "sc-64dj00-
|
|
40223
|
+
componentId: "sc-64dj00-6"
|
|
40253
40224
|
})(["text-align:center;color:", ";padding:2rem;"], uiColors.red);
|
|
40254
40225
|
var CenteredContent = /*#__PURE__*/styled__default.div.withConfig({
|
|
40255
40226
|
displayName: "Store__CenteredContent",
|
|
40256
|
-
componentId: "sc-64dj00-
|
|
40227
|
+
componentId: "sc-64dj00-7"
|
|
40257
40228
|
})(["display:flex;align-items:center;justify-content:center;height:100%;padding:2rem;"]);
|
|
40258
40229
|
|
|
40259
40230
|
var TextArea = function TextArea(_ref) {
|