auto-wrap.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.wrapLabels = void 0;
  4. var util_1 = require("@antv/util");
  5. var text_1 = require("../../util/text");
  6. var WRAP_CODE = '\n';
  7. function wrapLabel(label, limitLength) {
  8. var text = label.attr('text');
  9. var labelLength = label.getBBox().width;
  10. var codeLength = text_1.strLen(text);
  11. var ellipsised = false;
  12. if (limitLength < labelLength) {
  13. var reseveLength = Math.floor((limitLength / labelLength) * codeLength);
  14. var newText = wrapText(text, reseveLength);
  15. label.attr('text', newText);
  16. ellipsised = true;
  17. }
  18. return ellipsised;
  19. }
  20. function wrapText(str, reseveLength) {
  21. var breakIndex = 0;
  22. var rst = '';
  23. for (var i = 0, index = 0; i < reseveLength;) {
  24. var charLength = text_1.charAtLength(str, index);
  25. if (i + charLength <= reseveLength) {
  26. rst += str[index];
  27. i += text_1.charAtLength(str, index);
  28. index++;
  29. breakIndex = index;
  30. }
  31. else {
  32. break;
  33. }
  34. }
  35. // 根据设计标准,文本折行不能超过两行
  36. var wrappedText = rst + WRAP_CODE + str.substring(breakIndex, str.length);
  37. return wrappedText;
  38. }
  39. function wrapLabels(labelGroup, limitLength) {
  40. var children = labelGroup.getChildren();
  41. var wrapped = false;
  42. util_1.each(children, function (label) {
  43. var rst = wrapLabel(label, limitLength);
  44. wrapped = wrapped || rst;
  45. });
  46. return wrapped;
  47. }
  48. exports.wrapLabels = wrapLabels;
  49. //# sourceMappingURL=auto-wrap.js.map