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/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.33rem;\n margin-right: 0.05rem;\n}";
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, _d = _a.masteryValue, masteryValue = _d === void 0 ? 0 : _d, _e = _a.masteryIsPercentage, masteryIsPercentage = _e === void 0 ? false : _e;
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, masteryValue, masteryIsPercentage);
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, masteryValue, masteryIsPercentage) {
8922
- if (masteryPoints == null || masteryPoints == 0 || masteryValue == null || masteryValue == 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
- masteryIsPercentage ?
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, _j = _a.masteryValue, masteryValue = _j === void 0 ? 0 : _j, _k = _a.masteryIsPercentage, masteryIsPercentage = _k === void 0 ? false : _k;
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 _l = React.useState(null), childRef = _l[0], setChildRef = _l[1];
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, masteryValue: masteryValue, masteryIsPercentage: masteryIsPercentage }), theme: "grade" + 4, reference: childRef })) : (React__default["default"].createElement("span", { "data-testid": "TooltipWrapper", ref: spanRef, style: { display: "none" } }))));
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;