autoRotate.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. var tslib_1 = require("tslib");
  4. var test_1 = require("../utils/test");
  5. function rotateLabels(labels, overlapCfg, attr, utils) {
  6. var e_1, _a;
  7. var _b = overlapCfg.optionalAngles, optionalAngles = _b === void 0 ? [0, 45, 90] : _b, margin = overlapCfg.margin, _c = overlapCfg.recoverWhenFailed, recoverWhenFailed = _c === void 0 ? true : _c;
  8. var defaultAngles = labels.map(function (label) { return label.getLocalEulerAngles(); });
  9. var runAndPassed = function () { return (0, test_1.boundTest)(labels, attr, margin).length < 1; };
  10. var setLabelsRotate = function (angle) {
  11. return labels.forEach(function (label, index) {
  12. var rotate = Array.isArray(angle) ? angle[index] : angle;
  13. utils.rotate(label, +rotate);
  14. });
  15. };
  16. try {
  17. for (var optionalAngles_1 = tslib_1.__values(optionalAngles), optionalAngles_1_1 = optionalAngles_1.next(); !optionalAngles_1_1.done; optionalAngles_1_1 = optionalAngles_1.next()) {
  18. var angle = optionalAngles_1_1.value;
  19. setLabelsRotate(angle);
  20. if (runAndPassed())
  21. return;
  22. }
  23. }
  24. catch (e_1_1) { e_1 = { error: e_1_1 }; }
  25. finally {
  26. try {
  27. if (optionalAngles_1_1 && !optionalAngles_1_1.done && (_a = optionalAngles_1.return)) _a.call(optionalAngles_1);
  28. }
  29. finally { if (e_1) throw e_1.error; }
  30. }
  31. if (recoverWhenFailed) {
  32. setLabelsRotate(defaultAngles);
  33. }
  34. }
  35. exports.default = rotateLabels;
  36. //# sourceMappingURL=autoRotate.js.map