bnstooltips 1.19.1 → 1.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/SkillTooltip/SkillTooltip.d.ts +1 -1
- package/build/SkillTooltip/SkillTooltip.types.d.ts +0 -2
- package/build/SkillTooltipWrapper/SkillTooltipWrapper.types.d.ts +0 -2
- package/build/Utilities/Helpers.d.ts +2 -1
- package/build/Utilities/ISkill.d.ts +10 -0
- package/build/index.es.js +69 -9
- package/build/index.es.js.map +1 -1
- package/build/index.js +69 -9
- package/build/index.js.map +1 -1
- package/package.json +1 -1
package/build/index.js
CHANGED
|
@@ -324,6 +324,63 @@ function getMoneyObj(money) {
|
|
|
324
324
|
Gold: gold,
|
|
325
325
|
Silver: silver
|
|
326
326
|
};
|
|
327
|
+
}
|
|
328
|
+
function GetSkillMasteryValue(points, arcaneInfo) {
|
|
329
|
+
if (points <= 0)
|
|
330
|
+
return 0;
|
|
331
|
+
return arcaneInfo.IsCooldown ? GetSkillMasteryCdValueForPoints(points, arcaneInfo.CooldownBreakpoints) : GetSkillMasteryValueForPoints(points, arcaneInfo.DamageSections);
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* Calculates the cooldown reduction value based on skill mastery points and defined breakpoints.
|
|
335
|
+
*
|
|
336
|
+
* @param mastery - The total skill mastery points.
|
|
337
|
+
* @param cooldownBreakpoints - An object mapping breakpoints to their corresponding cooldown reduction values.
|
|
338
|
+
* @returns The total cooldown reduction value.
|
|
339
|
+
*/
|
|
340
|
+
function GetSkillMasteryCdValueForPoints(mastery, cooldownBreakpoints) {
|
|
341
|
+
var value = 0; // Accumulator for the total cooldown reduction value
|
|
342
|
+
// Convert the object keys (breakpoints) to an array of numbers and sort them in ascending order
|
|
343
|
+
var sortedBreakpoints = Object.keys(cooldownBreakpoints)
|
|
344
|
+
.map(Number) // Convert string keys to numbers
|
|
345
|
+
.sort(function (a, b) { return a - b; }); // Sort breakpoints in ascending order
|
|
346
|
+
// Iterate over the sorted breakpoints
|
|
347
|
+
for (var _i = 0, sortedBreakpoints_1 = sortedBreakpoints; _i < sortedBreakpoints_1.length; _i++) {
|
|
348
|
+
var breakpoint = sortedBreakpoints_1[_i];
|
|
349
|
+
if (mastery >= breakpoint) {
|
|
350
|
+
// Add the cooldown reduction value for this breakpoint (converted from milliseconds to seconds)
|
|
351
|
+
value += cooldownBreakpoints[breakpoint] / 1000;
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
return value; // Return the total cooldown reduction value
|
|
355
|
+
}
|
|
356
|
+
/**
|
|
357
|
+
* Calculates the total skill bonus based on mastery points and the given damage sections.
|
|
358
|
+
*
|
|
359
|
+
* @param mastery - The total mastery points.
|
|
360
|
+
* @param damageSections - An object defining breakpoints and corresponding multipliers.
|
|
361
|
+
* @returns The total bonus percentage.
|
|
362
|
+
*/
|
|
363
|
+
function GetSkillMasteryValueForPoints(mastery, damageSections) {
|
|
364
|
+
var bonus = 0; // Stores the accumulated bonus percentage
|
|
365
|
+
var previousLimit = 0; // Keeps track of the previous breakpoint
|
|
366
|
+
// Iterate over the damageSections object, sorted by its keys (breakpoints)
|
|
367
|
+
for (var _i = 0, _a = Object.entries(damageSections); _i < _a.length; _i++) {
|
|
368
|
+
var _b = _a[_i], limitStr = _b[0], multiplier = _b[1];
|
|
369
|
+
var limit = parseInt(limitStr, 10); // Convert the key (string) to a number
|
|
370
|
+
if (mastery > previousLimit) {
|
|
371
|
+
// Calculate how many points fall within this range
|
|
372
|
+
var pointsInRange = Math.min(mastery - previousLimit, limit - previousLimit);
|
|
373
|
+
// Multiply points by the corresponding multiplier (converted to percentage)
|
|
374
|
+
bonus += pointsInRange * (multiplier / 10);
|
|
375
|
+
}
|
|
376
|
+
// Update the previous limit for the next iteration
|
|
377
|
+
previousLimit = limit;
|
|
378
|
+
// Stop iterating if mastery has been fully allocated
|
|
379
|
+
if (mastery <= limit) {
|
|
380
|
+
break;
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
return bonus;
|
|
327
384
|
}
|
|
328
385
|
|
|
329
386
|
//----------------------
|
|
@@ -8680,7 +8737,7 @@ function JsonArrayToJsxArray(stringArray) {
|
|
|
8680
8737
|
return jsxArray;
|
|
8681
8738
|
}
|
|
8682
8739
|
|
|
8683
|
-
var css_248z$6 = ".TooltipBase_bns_upgradeRed_color {\n color: #FF2818;\n}\n\n.TooltipBase_bns_downgradeBlue_color {\n color: #28A9F0;\n}\n\n.SkillTooltip_skillIconContainer {\n width: 60px;\n height: 60px;\n padding: 0;\n float: left;\n position: relative;\n}\n.SkillTooltip_skillIcon {\n width: 60px;\n height: 60px;\n position: relative;\n}\n.SkillTooltip_skillIconCanvas {\n width: 60px;\n height: 60px;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n filter: blur(30px);\n opacity: 0.5;\n}\n.SkillTooltip_buttonIcon {\n position: absolute;\n right: 1px;\n bottom: 1px;\n height: 18px;\n opacity: 0.9;\n}\n.SkillTooltip_buttonIconMouse {\n background-color: rgba(0, 0, 0, 0.8);\n}\n.SkillTooltip_mainText {\n font-weight: 500;\n}\n.SkillTooltip_smallText {\n font-size: 12px;\n}\n.SkillTooltip_subTextMargin {\n margin-bottom: 0.3rem;\n}\n.SkillTooltip_boundaryContainer {\n display: flex;\n width: 100%;\n margin-bottom: 0.5rem;\n line-height: 17px;\n}\n.SkillTooltip_boundary {\n flex: 1;\n flex-basis: 0px;\n min-width: 0;\n display: flex;\n flex-direction: column;\n color: black;\n margin: 0.15rem;\n}\n.SkillTooltip_boundary:first-of-type > .SkillTooltip_boundaryHead {\n border-radius: 3px 0 0 0;\n}\n.SkillTooltip_boundary:last-of-type > .SkillTooltip_boundaryHead {\n border-radius: 0 3px 0 0;\n}\n.SkillTooltip_boundary:first-of-type > .SkillTooltip_boundaryBody {\n border-radius: 0 0 0 3px;\n}\n.SkillTooltip_boundary:last-of-type > .SkillTooltip_boundaryBody {\n border-radius: 0 0 3px 0;\n}\n.SkillTooltip_boundaryHead {\n color: white;\n font-weight: 500;\n font-size: 12px;\n text-overflow: ellipsis;\n overflow: hidden;\n padding: 0.3rem;\n text-align: center;\n flex: 1;\n min-height: 26px;\n background-color: rgba(127, 127, 127, 0.4);\n}\n.SkillTooltip_boundaryBody {\n color: white;\n padding: 0.5rem 0.3rem;\n margin-top: 0.15rem;\n text-align: center;\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 40px;\n flex: 2;\n background-color: rgba(127, 127, 127, 0.4);\n}\n.SkillTooltip_boundaryBodyModifier {\n min-height: 33px !important;\n}\n.SkillTooltip_boundaryHasIcon {\n min-height: 50px !important;\n}\n.SkillTooltip_conditionRow {\n display: flex;\n align-items: center;\n font-size: 12px;\n}\n.SkillTooltip_conditionRow:not(:last-of-type) {\n margin-bottom: 0.1rem;\n}\n.SkillTooltip_conditionIcon {\n width: 20px;\n height: 20px;\n margin-right: 0.33rem;\n}\n.SkillTooltip_conditionIconSmall {\n width: 12px;\n height: 12px;\n margin-right: 0.22rem;\n}\n\n.tooltipArg {\n color: #00D9FF;\n font-weight: 600;\n}\n\n.wordbreakall {\n word-break: break-all;\n}\n\n.wordbreakword {\n word-break: break-word;\n}\n\n.target-360 {\n background-image: url(\"./360.png\");\n background-repeat: no-repeat;\n background-position: 50% 60%;\n background-size: auto 64px;\n}\n\n.target-front-180 {\n background-image: url(\"./180.png\");\n background-repeat: no-repeat;\n background-position: 50% 70%;\n background-size: auto 64px;\n}\n\n.laser {\n background-image: url(\"./laser.png\");\n background-repeat: no-repeat;\n background-position: 50% 50%;\n background-size: auto 64px;\n}\n\n.arcanemark {\n background-image: url(\"./arcanemark.png\");\n width: 24px;\n height: 24px;\n background-position: 50% 50%;\n background-size: auto 24px;\n margin-left: 0.
|
|
8740
|
+
var css_248z$6 = ".TooltipBase_bns_upgradeRed_color {\n color: #FF2818;\n}\n\n.TooltipBase_bns_downgradeBlue_color {\n color: #28A9F0;\n}\n\n.SkillTooltip_skillIconContainer {\n width: 60px;\n height: 60px;\n padding: 0;\n float: left;\n position: relative;\n}\n.SkillTooltip_skillIcon {\n width: 60px;\n height: 60px;\n position: relative;\n}\n.SkillTooltip_skillIconCanvas {\n width: 60px;\n height: 60px;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n filter: blur(30px);\n opacity: 0.5;\n}\n.SkillTooltip_buttonIcon {\n position: absolute;\n right: 1px;\n bottom: 1px;\n height: 18px;\n opacity: 0.9;\n}\n.SkillTooltip_buttonIconMouse {\n background-color: rgba(0, 0, 0, 0.8);\n}\n.SkillTooltip_mainText {\n font-weight: 500;\n}\n.SkillTooltip_smallText {\n font-size: 12px;\n}\n.SkillTooltip_subTextMargin {\n margin-bottom: 0.3rem;\n}\n.SkillTooltip_boundaryContainer {\n display: flex;\n width: 100%;\n margin-bottom: 0.5rem;\n line-height: 17px;\n}\n.SkillTooltip_boundary {\n flex: 1;\n flex-basis: 0px;\n min-width: 0;\n display: flex;\n flex-direction: column;\n color: black;\n margin: 0.15rem;\n}\n.SkillTooltip_boundary:first-of-type > .SkillTooltip_boundaryHead {\n border-radius: 3px 0 0 0;\n}\n.SkillTooltip_boundary:last-of-type > .SkillTooltip_boundaryHead {\n border-radius: 0 3px 0 0;\n}\n.SkillTooltip_boundary:first-of-type > .SkillTooltip_boundaryBody {\n border-radius: 0 0 0 3px;\n}\n.SkillTooltip_boundary:last-of-type > .SkillTooltip_boundaryBody {\n border-radius: 0 0 3px 0;\n}\n.SkillTooltip_boundaryHead {\n color: white;\n font-weight: 500;\n font-size: 12px;\n text-overflow: ellipsis;\n overflow: hidden;\n padding: 0.3rem;\n text-align: center;\n flex: 1;\n min-height: 26px;\n background-color: rgba(127, 127, 127, 0.4);\n}\n.SkillTooltip_boundaryBody {\n color: white;\n padding: 0.5rem 0.3rem;\n margin-top: 0.15rem;\n text-align: center;\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 40px;\n flex: 2;\n background-color: rgba(127, 127, 127, 0.4);\n}\n.SkillTooltip_boundaryBodyModifier {\n min-height: 33px !important;\n}\n.SkillTooltip_boundaryHasIcon {\n min-height: 50px !important;\n}\n.SkillTooltip_conditionRow {\n display: flex;\n align-items: center;\n font-size: 12px;\n}\n.SkillTooltip_conditionRow:not(:last-of-type) {\n margin-bottom: 0.1rem;\n}\n.SkillTooltip_conditionIcon {\n width: 20px;\n height: 20px;\n margin-right: 0.33rem;\n}\n.SkillTooltip_conditionIconSmall {\n width: 12px;\n height: 12px;\n margin-right: 0.22rem;\n}\n\n.tooltipArg {\n color: #00D9FF;\n font-weight: 600;\n}\n\n.wordbreakall {\n word-break: break-all;\n}\n\n.wordbreakword {\n word-break: break-word;\n}\n\n.target-360 {\n background-image: url(\"./360.png\");\n background-repeat: no-repeat;\n background-position: 50% 60%;\n background-size: auto 64px;\n}\n\n.target-front-180 {\n background-image: url(\"./180.png\");\n background-repeat: no-repeat;\n background-position: 50% 70%;\n background-size: auto 64px;\n}\n\n.laser {\n background-image: url(\"./laser.png\");\n background-repeat: no-repeat;\n background-position: 50% 50%;\n background-size: auto 64px;\n}\n\n.arcanemark {\n background-image: url(\"./arcanemark.png\");\n width: 24px;\n height: 24px;\n background-position: 50% 50%;\n background-size: auto 24px;\n margin-left: 0.25rem;\n}";
|
|
8684
8741
|
styleInject(css_248z$6);
|
|
8685
8742
|
|
|
8686
8743
|
function getButtonIconPath(button) {
|
|
@@ -8846,7 +8903,7 @@ function SkillConditions(_a) {
|
|
|
8846
8903
|
}
|
|
8847
8904
|
|
|
8848
8905
|
function SkillTooltip(_a) {
|
|
8849
|
-
var data = _a.data, _b = _a.debug, debug = _b === void 0 ? false : _b, _c = _a.masteryPoints, masteryPoints = _c === void 0 ? 0 : _c
|
|
8906
|
+
var data = _a.data, _b = _a.debug, debug = _b === void 0 ? false : _b, _c = _a.masteryPoints, masteryPoints = _c === void 0 ? 0 : _c;
|
|
8850
8907
|
var skill = data;
|
|
8851
8908
|
var tooltipBaseProps = {
|
|
8852
8909
|
title: skill.Name,
|
|
@@ -8866,7 +8923,7 @@ function SkillTooltip(_a) {
|
|
|
8866
8923
|
//bottomPart
|
|
8867
8924
|
AddSubTexts(tooltipBaseProps.subInfoGroups, skill);
|
|
8868
8925
|
AddBreakValue(tooltipBaseProps.subInfoGroups, skill);
|
|
8869
|
-
AddSkillMastery(tooltipBaseProps.subInfoGroups, masteryPoints,
|
|
8926
|
+
AddSkillMastery(tooltipBaseProps.subInfoGroups, masteryPoints, skill.ArcaneInfo);
|
|
8870
8927
|
AddPvpModifiers(tooltipBaseProps.subInfoGroups, skill);
|
|
8871
8928
|
AddBoundaries(tooltipBaseProps.subInfoGroups, skill);
|
|
8872
8929
|
AddConditions(tooltipBaseProps.subInfoGroups, skill);
|
|
@@ -8918,8 +8975,11 @@ function AddBreakValue(subInfoGroups, skill) {
|
|
|
8918
8975
|
});
|
|
8919
8976
|
}
|
|
8920
8977
|
}
|
|
8921
|
-
function AddSkillMastery(subInfoGroups, masteryPoints,
|
|
8922
|
-
if (masteryPoints == null || masteryPoints == 0 ||
|
|
8978
|
+
function AddSkillMastery(subInfoGroups, masteryPoints, arcaneInfo) {
|
|
8979
|
+
if (masteryPoints == null || masteryPoints == 0 || arcaneInfo == null)
|
|
8980
|
+
return;
|
|
8981
|
+
var masteryValue = GetSkillMasteryValue(masteryPoints, arcaneInfo);
|
|
8982
|
+
if (masteryValue == null || masteryValue == 0)
|
|
8923
8983
|
return;
|
|
8924
8984
|
var formattedMasteryValue = Number.isInteger(masteryValue) ? masteryValue.toString() : masteryValue.toFixed(2).replace(',', '.');
|
|
8925
8985
|
subInfoGroups.push({
|
|
@@ -8930,7 +8990,7 @@ function AddSkillMastery(subInfoGroups, masteryPoints, masteryValue, masteryIsPe
|
|
|
8930
8990
|
React__default["default"].createElement("span", { className: "tooltipArg", style: { fontSize: "14px" } }, "Skill Grandmaster"),
|
|
8931
8991
|
React__default["default"].createElement("div", { className: "arcanemark" }),
|
|
8932
8992
|
React__default["default"].createElement("span", { className: "tooltipArg", style: { fontSize: "14px" } }, masteryPoints)),
|
|
8933
|
-
|
|
8993
|
+
!arcaneInfo.IsCooldown ?
|
|
8934
8994
|
React__default["default"].createElement("div", null,
|
|
8935
8995
|
"Damage increase:\u00A0",
|
|
8936
8996
|
React__default["default"].createElement("span", { className: "tooltipArg" },
|
|
@@ -9153,9 +9213,9 @@ var css_248z$5 = ".TooltipBase_bns_upgradeRed_color {\n color: #FF2818;\n}\n\n.
|
|
|
9153
9213
|
styleInject(css_248z$5);
|
|
9154
9214
|
|
|
9155
9215
|
var SkillTooltipWrapper = function (_a) {
|
|
9156
|
-
var data = _a.data, children = _a.children, _b = _a.interactive, interactive = _b === void 0 ? false : _b, _c = _a.placement, placement = _c === void 0 ? "right" : _c, _d = _a.followCursor, followCursor$1 = _d === void 0 ? false : _d, _e = _a.trigger, trigger = _e === void 0 ? "mouseenter focus" : _e, _f = _a.showArrow, showArrow = _f === void 0 ? true : _f, _g = _a.debug, debug = _g === void 0 ? false : _g, _h = _a.masteryPoints, masteryPoints = _h === void 0 ? 0 : _h
|
|
9216
|
+
var data = _a.data, children = _a.children, _b = _a.interactive, interactive = _b === void 0 ? false : _b, _c = _a.placement, placement = _c === void 0 ? "right" : _c, _d = _a.followCursor, followCursor$1 = _d === void 0 ? false : _d, _e = _a.trigger, trigger = _e === void 0 ? "mouseenter focus" : _e, _f = _a.showArrow, showArrow = _f === void 0 ? true : _f, _g = _a.debug, debug = _g === void 0 ? false : _g, _h = _a.masteryPoints, masteryPoints = _h === void 0 ? 0 : _h;
|
|
9157
9217
|
var spanRef = React.useRef(null);
|
|
9158
|
-
var
|
|
9218
|
+
var _j = React.useState(null), childRef = _j[0], setChildRef = _j[1];
|
|
9159
9219
|
/**
|
|
9160
9220
|
* Mount the temporary span element.
|
|
9161
9221
|
* retrieve and store the target element's reference.
|
|
@@ -9168,7 +9228,7 @@ var SkillTooltipWrapper = function (_a) {
|
|
|
9168
9228
|
}, []);
|
|
9169
9229
|
return (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
9170
9230
|
children,
|
|
9171
|
-
childRef ? (React__default["default"].createElement(Tippy, { arrow: showArrow, trigger: trigger, plugins: [followCursor], followCursor: followCursor$1 && (!interactive && !debug), appendTo: document.body, placement: placement, animation: "fade", interactive: interactive || debug, content: React__default["default"].createElement(SkillTooltip, { data: data, debug: debug, masteryPoints: masteryPoints
|
|
9231
|
+
childRef ? (React__default["default"].createElement(Tippy, { arrow: showArrow, trigger: trigger, plugins: [followCursor], followCursor: followCursor$1 && (!interactive && !debug), appendTo: document.body, placement: placement, animation: "fade", interactive: interactive || debug, content: React__default["default"].createElement(SkillTooltip, { data: data, debug: debug, masteryPoints: masteryPoints }), theme: "grade" + 4, reference: childRef })) : (React__default["default"].createElement("span", { "data-testid": "TooltipWrapper", ref: spanRef, style: { display: "none" } }))));
|
|
9172
9232
|
};
|
|
9173
9233
|
|
|
9174
9234
|
exports.ServerRegion = void 0;
|