@wcardinal/wcardinal-ui 0.308.0 → 0.310.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.
Files changed (128) hide show
  1. package/README.md +1 -1
  2. package/dist/types/wcardinal/ui/d-base-state-and-value.d.ts +4 -0
  3. package/dist/types/wcardinal/ui/d-base-state-matcher.d.ts +1 -0
  4. package/dist/types/wcardinal/ui/d-base-state-set-blinker-datum-impl.d.ts +5 -0
  5. package/dist/types/wcardinal/ui/d-base-state-set-blinker-impl.d.ts +8 -0
  6. package/dist/types/wcardinal/ui/d-base-state-set-blinker.d.ts +3 -0
  7. package/dist/types/wcardinal/ui/d-base-state-set-impl.d.ts +51 -18
  8. package/dist/types/wcardinal/ui/d-base-state-set-sub-datum-impl.d.ts +17 -0
  9. package/dist/types/wcardinal/ui/d-base-state-set-sub-datum.d.ts +6 -0
  10. package/dist/types/wcardinal/ui/d-base-state-set-sub-impl.d.ts +15 -0
  11. package/dist/types/wcardinal/ui/d-base-state-set-sub.d.ts +6 -0
  12. package/dist/types/wcardinal/ui/d-base-state-set-ticker-datum-impl.d.ts +5 -0
  13. package/dist/types/wcardinal/ui/d-base-state-set-ticker-impl.d.ts +8 -0
  14. package/dist/types/wcardinal/ui/d-base-state-set-ticker.d.ts +3 -0
  15. package/dist/types/wcardinal/ui/d-base-state-set.d.ts +38 -8
  16. package/dist/types/wcardinal/ui/d-base.d.ts +23 -1
  17. package/dist/types/wcardinal/ui/d-chart-axis-base-guide-container.d.ts +21 -0
  18. package/dist/types/wcardinal/ui/d-chart-axis-base-options-parser.d.ts +6 -0
  19. package/dist/types/wcardinal/ui/d-chart-axis-base-options.d.ts +5 -0
  20. package/dist/types/wcardinal/ui/d-chart-axis-base.d.ts +4 -0
  21. package/dist/types/wcardinal/ui/d-chart-axis-guide-container.d.ts +14 -0
  22. package/dist/types/wcardinal/ui/d-chart-axis-guide-simple-shape-impl.d.ts +41 -0
  23. package/dist/types/wcardinal/ui/d-chart-axis-guide-simple-shape.d.ts +80 -0
  24. package/dist/types/wcardinal/ui/d-chart-axis-guide-simple.d.ts +32 -0
  25. package/dist/types/wcardinal/ui/d-chart-axis-guide.d.ts +14 -0
  26. package/dist/types/wcardinal/ui/d-chart-axis.d.ts +2 -0
  27. package/dist/types/wcardinal/ui/d-chart-series-linear.d.ts +1 -3
  28. package/dist/types/wcardinal/ui/d-dynamic-text-geometry.d.ts +7 -4
  29. package/dist/types/wcardinal/ui/d-dynamic-text-measure-result.d.ts +3 -0
  30. package/dist/types/wcardinal/ui/d-dynamic-text-measure.d.ts +4 -3
  31. package/dist/types/wcardinal/ui/d-dynamic-text-style.d.ts +16 -1
  32. package/dist/types/wcardinal/ui/d-dynamic-text.d.ts +7 -6
  33. package/dist/types/wcardinal/ui/d-links.d.ts +2 -1
  34. package/dist/types/wcardinal/ui/d-text-base.d.ts +1 -0
  35. package/dist/types/wcardinal/ui/index.d.ts +18 -0
  36. package/dist/types/wcardinal/ui/theme/dark/d-theme-dark-text-base.d.ts +1 -0
  37. package/dist/types/wcardinal/ui/theme/white/d-theme-white-text-base.d.ts +1 -0
  38. package/dist/types/wcardinal/ui/util/util-font.d.ts +2 -0
  39. package/dist/wcardinal/ui/d-base-state-and-value.js +2 -0
  40. package/dist/wcardinal/ui/d-base-state-and-value.js.map +1 -0
  41. package/dist/wcardinal/ui/d-base-state-matcher.js +2 -0
  42. package/dist/wcardinal/ui/d-base-state-matcher.js.map +1 -0
  43. package/dist/wcardinal/ui/d-base-state-set-blinker-datum-impl.js +17 -0
  44. package/dist/wcardinal/ui/d-base-state-set-blinker-datum-impl.js.map +1 -0
  45. package/dist/wcardinal/ui/d-base-state-set-blinker-impl.js +16 -0
  46. package/dist/wcardinal/ui/d-base-state-set-blinker-impl.js.map +1 -0
  47. package/dist/wcardinal/ui/d-base-state-set-blinker.js +2 -0
  48. package/dist/wcardinal/ui/d-base-state-set-blinker.js.map +1 -0
  49. package/dist/wcardinal/ui/d-base-state-set-impl.js +298 -129
  50. package/dist/wcardinal/ui/d-base-state-set-impl.js.map +1 -1
  51. package/dist/wcardinal/ui/d-base-state-set-sub-datum-impl.js +75 -0
  52. package/dist/wcardinal/ui/d-base-state-set-sub-datum-impl.js.map +1 -0
  53. package/dist/wcardinal/ui/d-base-state-set-sub-datum.js +2 -0
  54. package/dist/wcardinal/ui/d-base-state-set-sub-datum.js.map +1 -0
  55. package/dist/wcardinal/ui/d-base-state-set-sub-impl.js +73 -0
  56. package/dist/wcardinal/ui/d-base-state-set-sub-impl.js.map +1 -0
  57. package/dist/wcardinal/ui/d-base-state-set-sub.js +2 -0
  58. package/dist/wcardinal/ui/d-base-state-set-sub.js.map +1 -0
  59. package/dist/wcardinal/ui/d-base-state-set-ticker-datum-impl.js +17 -0
  60. package/dist/wcardinal/ui/d-base-state-set-ticker-datum-impl.js.map +1 -0
  61. package/dist/wcardinal/ui/d-base-state-set-ticker-impl.js +16 -0
  62. package/dist/wcardinal/ui/d-base-state-set-ticker-impl.js.map +1 -0
  63. package/dist/wcardinal/ui/d-base-state-set-ticker.js +2 -0
  64. package/dist/wcardinal/ui/d-base-state-set-ticker.js.map +1 -0
  65. package/dist/wcardinal/ui/d-base-state-set.js.map +1 -1
  66. package/dist/wcardinal/ui/d-base.js +34 -2
  67. package/dist/wcardinal/ui/d-base.js.map +1 -1
  68. package/dist/wcardinal/ui/d-chart-axis-base-guide-container.js +75 -0
  69. package/dist/wcardinal/ui/d-chart-axis-base-guide-container.js.map +1 -0
  70. package/dist/wcardinal/ui/d-chart-axis-base-options-parser.js +7 -0
  71. package/dist/wcardinal/ui/d-chart-axis-base-options-parser.js.map +1 -1
  72. package/dist/wcardinal/ui/d-chart-axis-base-options.js.map +1 -1
  73. package/dist/wcardinal/ui/d-chart-axis-base.js +23 -1
  74. package/dist/wcardinal/ui/d-chart-axis-base.js.map +1 -1
  75. package/dist/wcardinal/ui/d-chart-axis-container-impl.js +0 -6
  76. package/dist/wcardinal/ui/d-chart-axis-container-impl.js.map +1 -1
  77. package/dist/wcardinal/ui/d-chart-axis-guide-container.js +2 -0
  78. package/dist/wcardinal/ui/d-chart-axis-guide-container.js.map +1 -0
  79. package/dist/wcardinal/ui/d-chart-axis-guide-simple-shape-impl.js +328 -0
  80. package/dist/wcardinal/ui/d-chart-axis-guide-simple-shape-impl.js.map +1 -0
  81. package/dist/wcardinal/ui/d-chart-axis-guide-simple-shape.js +2 -0
  82. package/dist/wcardinal/ui/d-chart-axis-guide-simple-shape.js.map +1 -0
  83. package/dist/wcardinal/ui/d-chart-axis-guide-simple.js +123 -0
  84. package/dist/wcardinal/ui/d-chart-axis-guide-simple.js.map +1 -0
  85. package/dist/wcardinal/ui/d-chart-axis-guide.js +2 -0
  86. package/dist/wcardinal/ui/d-chart-axis-guide.js.map +1 -0
  87. package/dist/wcardinal/ui/d-chart-axis.js.map +1 -1
  88. package/dist/wcardinal/ui/d-chart-plot-area-impl.js +39 -6
  89. package/dist/wcardinal/ui/d-chart-plot-area-impl.js.map +1 -1
  90. package/dist/wcardinal/ui/d-chart-series-container-impl.js +0 -10
  91. package/dist/wcardinal/ui/d-chart-series-container-impl.js.map +1 -1
  92. package/dist/wcardinal/ui/d-chart-series-linear.js +14 -35
  93. package/dist/wcardinal/ui/d-chart-series-linear.js.map +1 -1
  94. package/dist/wcardinal/ui/d-dynamic-text-geometry.js +17 -10
  95. package/dist/wcardinal/ui/d-dynamic-text-geometry.js.map +1 -1
  96. package/dist/wcardinal/ui/d-dynamic-text-measure-result.js +22 -0
  97. package/dist/wcardinal/ui/d-dynamic-text-measure-result.js.map +1 -1
  98. package/dist/wcardinal/ui/d-dynamic-text-measure.js +14 -10
  99. package/dist/wcardinal/ui/d-dynamic-text-measure.js.map +1 -1
  100. package/dist/wcardinal/ui/d-dynamic-text-style.js +107 -6
  101. package/dist/wcardinal/ui/d-dynamic-text-style.js.map +1 -1
  102. package/dist/wcardinal/ui/d-dynamic-text.js +52 -29
  103. package/dist/wcardinal/ui/d-dynamic-text.js.map +1 -1
  104. package/dist/wcardinal/ui/d-links.js +18 -1
  105. package/dist/wcardinal/ui/d-links.js.map +1 -1
  106. package/dist/wcardinal/ui/d-text-base.js +6 -3
  107. package/dist/wcardinal/ui/d-text-base.js.map +1 -1
  108. package/dist/wcardinal/ui/index.js +18 -0
  109. package/dist/wcardinal/ui/index.js.map +1 -1
  110. package/dist/wcardinal/ui/shape/e-shape-state-set-impl-observable.js +2 -2
  111. package/dist/wcardinal/ui/shape/e-shape-state-set-impl-observable.js.map +1 -1
  112. package/dist/wcardinal/ui/theme/dark/d-theme-dark-text-base.js +3 -0
  113. package/dist/wcardinal/ui/theme/dark/d-theme-dark-text-base.js.map +1 -1
  114. package/dist/wcardinal/ui/theme/white/d-theme-white-text-base.js +3 -0
  115. package/dist/wcardinal/ui/theme/white/d-theme-white-text-base.js.map +1 -1
  116. package/dist/wcardinal/ui/util/util-font.js +18 -11
  117. package/dist/wcardinal/ui/util/util-font.js.map +1 -1
  118. package/dist/wcardinal-ui-theme-dark.js +4 -1
  119. package/dist/wcardinal-ui-theme-dark.min.js +2 -2
  120. package/dist/wcardinal-ui-theme-dark.min.js.map +1 -1
  121. package/dist/wcardinal-ui-theme-white.js +4 -1
  122. package/dist/wcardinal-ui-theme-white.min.js +2 -2
  123. package/dist/wcardinal-ui-theme-white.min.js.map +1 -1
  124. package/dist/wcardinal-ui.cjs.js +1456 -332
  125. package/dist/wcardinal-ui.js +1450 -332
  126. package/dist/wcardinal-ui.min.js +2 -2
  127. package/dist/wcardinal-ui.min.js.map +1 -1
  128. package/package.json +1 -1
@@ -6,21 +6,22 @@ var NEW_LINE = "\n";
6
6
  var DDynamicTextMeasure = /** @class */ (function () {
7
7
  function DDynamicTextMeasure() {
8
8
  }
9
- DDynamicTextMeasure.measure = function (text, atlas, clipping) {
9
+ DDynamicTextMeasure.measure = function (text, atlas, modifier) {
10
10
  var result = DDynamicTextMeasure.RESULT || new DDynamicTextMeasureResult();
11
11
  DDynamicTextMeasure.RESULT = result;
12
12
  if (atlas != null) {
13
13
  var itr = UtilCharacterIterator.from(text);
14
14
  var fh = atlas.font.height;
15
- var lh = clipping.lineHeight;
16
- var ce = clipping.enable;
17
- var cw = clipping.width;
18
- var ch = clipping.height;
19
- var cp = clipping.wordWrap;
15
+ var lh = modifier.lineHeight;
16
+ var cf = modifier.fitting;
17
+ var cc = !cf && modifier.clipping;
18
+ var cw = modifier.width;
19
+ var ch = modifier.height;
20
+ var cp = !cf && modifier.wordWrap;
20
21
  result.start(lh, fh);
21
22
  switch (cp) {
22
23
  case DDynamicTextStyleWordWrap.BREAK_ALL:
23
- if (ce) {
24
+ if (cc) {
24
25
  this.measure1(itr, cw, ch, fh, lh, atlas, result);
25
26
  }
26
27
  else {
@@ -30,7 +31,7 @@ var DDynamicTextMeasure = /** @class */ (function () {
30
31
  case DDynamicTextStyleWordWrap.NORMAL:
31
32
  var lb = this.newLineBreaker(text);
32
33
  if (lb) {
33
- if (ce) {
34
+ if (cc) {
34
35
  this.measure1a(lb, itr, cw, ch, fh, lh, atlas, result);
35
36
  }
36
37
  else {
@@ -38,7 +39,7 @@ var DDynamicTextMeasure = /** @class */ (function () {
38
39
  }
39
40
  }
40
41
  else {
41
- if (ce) {
42
+ if (cc) {
42
43
  this.measure1b(itr, cw, ch, fh, lh, atlas, result);
43
44
  }
44
45
  else {
@@ -47,7 +48,7 @@ var DDynamicTextMeasure = /** @class */ (function () {
47
48
  }
48
49
  break;
49
50
  default:
50
- if (ce) {
51
+ if (cc) {
51
52
  this.measure3(itr, cw, lh, atlas, result);
52
53
  }
53
54
  else {
@@ -56,6 +57,9 @@ var DDynamicTextMeasure = /** @class */ (function () {
56
57
  break;
57
58
  }
58
59
  result.end(lh, fh);
60
+ if (cf) {
61
+ result.fit(cw, ch);
62
+ }
59
63
  }
60
64
  else {
61
65
  result.start(0, 0);
@@ -1 +1 @@
1
- {"version":3,"file":"d-dynamic-text-measure.js","sourceRoot":"","sources":["../../../src/main/typescript/wcardinal/ui/d-dynamic-text-measure.ts"],"names":[],"mappings":"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","sourcesContent":["import { DDynamicTextMeasureResult } from \"./d-dynamic-text-measure-result\";\nimport { DynamicFontAtlas } from \"./util/dynamic-font-atlas\";\nimport { UtilCharacterIterator } from \"./util/util-character-iterator\";\nimport type { LineBreaker } from \"css-line-break\";\nimport { LineBreak } from \"css-line-break/dist/types/LineBreak\";\nimport { DDynamicTextStyleWordWrap } from \"./d-dynamic-text-style-word-wrap\";\nimport { DynamicFontAtlasCharacter } from \"./util/dynamic-font-atlas-character\";\nimport { DynamicFontAtlasCharacterType } from \"./util/dynamic-font-atlas-character-type\";\n\nexport interface DDynamicTextMeasureClipping {\n\tenable: boolean;\n\twordWrap: DDynamicTextStyleWordWrap;\n\twidth: number;\n\theight: number;\n\tlineHeight: number;\n}\n\nconst NEW_LINE = \"\\n\";\n\nexport class DDynamicTextMeasure {\n\tprotected static RESULT: DDynamicTextMeasureResult | null = null;\n\n\tstatic measure(\n\t\ttext: string,\n\t\tatlas: DynamicFontAtlas | null,\n\t\tclipping: DDynamicTextMeasureClipping\n\t): DDynamicTextMeasureResult {\n\t\tconst result = DDynamicTextMeasure.RESULT || new DDynamicTextMeasureResult();\n\t\tDDynamicTextMeasure.RESULT = result;\n\t\tif (atlas != null) {\n\t\t\tconst itr = UtilCharacterIterator.from(text);\n\t\t\tconst fh = atlas.font.height;\n\t\t\tconst lh = clipping.lineHeight;\n\t\t\tconst ce = clipping.enable;\n\t\t\tconst cw = clipping.width;\n\t\t\tconst ch = clipping.height;\n\t\t\tconst cp = clipping.wordWrap;\n\t\t\tresult.start(lh, fh);\n\t\t\tswitch (cp) {\n\t\t\t\tcase DDynamicTextStyleWordWrap.BREAK_ALL:\n\t\t\t\t\tif (ce) {\n\t\t\t\t\t\tthis.measure1(itr, cw, ch, fh, lh, atlas, result);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.measure2(itr, cw, lh, atlas, result);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase DDynamicTextStyleWordWrap.NORMAL:\n\t\t\t\t\tconst lb = this.newLineBreaker(text);\n\t\t\t\t\tif (lb) {\n\t\t\t\t\t\tif (ce) {\n\t\t\t\t\t\t\tthis.measure1a(lb, itr, cw, ch, fh, lh, atlas, result);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.measure2a(lb, itr, cw, lh, atlas, result);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (ce) {\n\t\t\t\t\t\t\tthis.measure1b(itr, cw, ch, fh, lh, atlas, result);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.measure2b(itr, cw, lh, atlas, result);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tif (ce) {\n\t\t\t\t\t\tthis.measure3(itr, cw, lh, atlas, result);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.measure4(itr, lh, atlas, result);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tresult.end(lh, fh);\n\t\t} else {\n\t\t\tresult.start(0, 0);\n\t\t\tresult.end(0, 0);\n\t\t}\n\t\treturn result;\n\t}\n\n\tprivate static measure1a(\n\t\tlineBreaker: ReturnType<typeof LineBreaker>,\n\t\titerator: UtilCharacterIterator,\n\t\tclippingWidth: number,\n\t\tclippingHeight: number,\n\t\tfontHeight: number,\n\t\tlineHeight: number,\n\t\tatlas: DynamicFontAtlas,\n\t\tresult: DDynamicTextMeasureResult\n\t): void {\n\t\tlet lineBreak = lineBreaker.next();\n\t\twhile (iterator.hasNext()) {\n\t\t\tconst characterPosition = iterator.position;\n\t\t\tconst character = iterator.next();\n\t\t\tif (character === NEW_LINE) {\n\t\t\t\tresult.newLine(lineHeight);\n\t\t\t} else {\n\t\t\t\tconst a = atlas.get(character);\n\t\t\t\tif (a == null) continue;\n\n\t\t\t\tlineBreak = this.advance(characterPosition, lineBreak, lineBreaker);\n\t\t\t\tconst isWrappable = this.isWrappable1(characterPosition, lineBreak);\n\n\t\t\t\tif (result.isPushable(clippingWidth, a)) {\n\t\t\t\t\tresult.push(a, isWrappable);\n\t\t\t\t} else {\n\t\t\t\t\tif (result.isPushableAtNewLine(clippingHeight, lineHeight, fontHeight)) {\n\t\t\t\t\t\tresult.push(a, isWrappable);\n\t\t\t\t\t\tresult.wordWrap(lineHeight);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.measure5(iterator, clippingWidth, lineHeight, atlas, result, true);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static measure1b(\n\t\titerator: UtilCharacterIterator,\n\t\tclippingWidth: number,\n\t\tclippingHeight: number,\n\t\tfontHeight: number,\n\t\tlineHeight: number,\n\t\tatlas: DynamicFontAtlas,\n\t\tresult: DDynamicTextMeasureResult\n\t): void {\n\t\twhile (iterator.hasNext()) {\n\t\t\tconst character = iterator.next();\n\t\t\tif (character === NEW_LINE) {\n\t\t\t\tresult.newLine(lineHeight);\n\t\t\t} else {\n\t\t\t\tconst a = atlas.get(character);\n\t\t\t\tif (a == null) continue;\n\n\t\t\t\tconst isWrappable = this.isWrappable2(result, a);\n\t\t\t\tif (result.isPushable(clippingWidth, a)) {\n\t\t\t\t\tresult.push(a, isWrappable);\n\t\t\t\t} else {\n\t\t\t\t\tif (result.isPushableAtNewLine(clippingHeight, lineHeight, fontHeight)) {\n\t\t\t\t\t\tresult.push(a, isWrappable);\n\t\t\t\t\t\tresult.wordWrap(lineHeight);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.measure5(iterator, clippingWidth, lineHeight, atlas, result, true);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static measure1(\n\t\titerator: UtilCharacterIterator,\n\t\tclippingWidth: number,\n\t\tclippingHeight: number,\n\t\tfontHeight: number,\n\t\tlineHeight: number,\n\t\tatlas: DynamicFontAtlas,\n\t\tresult: DDynamicTextMeasureResult\n\t): void {\n\t\twhile (iterator.hasNext()) {\n\t\t\tconst character = iterator.next();\n\t\t\tif (character === NEW_LINE) {\n\t\t\t\tresult.newLine(lineHeight);\n\t\t\t} else {\n\t\t\t\tconst a = atlas.get(character);\n\t\t\t\tif (a == null) continue;\n\n\t\t\t\tif (result.isPushable(clippingWidth, a)) {\n\t\t\t\t\tresult.push(a, true);\n\t\t\t\t} else {\n\t\t\t\t\tif (result.isPushableAtNewLine(clippingHeight, lineHeight, fontHeight)) {\n\t\t\t\t\t\tresult.newLine(lineHeight);\n\t\t\t\t\t\tresult.push(a, true);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.measure5(iterator, clippingWidth, lineHeight, atlas, result, true);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static measure2a(\n\t\tlineBreaker: ReturnType<typeof LineBreaker>,\n\t\titerator: UtilCharacterIterator,\n\t\tclippingWidth: number,\n\t\tlineHeight: number,\n\t\tatlas: DynamicFontAtlas,\n\t\tresult: DDynamicTextMeasureResult\n\t): void {\n\t\tlet lineBreak = lineBreaker.next();\n\t\twhile (iterator.hasNext()) {\n\t\t\tconst characterPosition = iterator.position;\n\t\t\tconst character = iterator.next();\n\t\t\tif (character === NEW_LINE) {\n\t\t\t\tresult.newLine(lineHeight);\n\t\t\t} else {\n\t\t\t\tconst a = atlas.get(character);\n\t\t\t\tif (a == null) continue;\n\n\t\t\t\tlineBreak = this.advance(characterPosition, lineBreak, lineBreaker);\n\t\t\t\tconst isWrappable = this.isWrappable1(characterPosition, lineBreak);\n\n\t\t\t\tif (result.isPushable(clippingWidth, a)) {\n\t\t\t\t\tresult.push(a, isWrappable);\n\t\t\t\t} else {\n\t\t\t\t\tresult.push(a, isWrappable);\n\t\t\t\t\tresult.wordWrap(lineHeight);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static measure2b(\n\t\titerator: UtilCharacterIterator,\n\t\tclippingWidth: number,\n\t\tlineHeight: number,\n\t\tatlas: DynamicFontAtlas,\n\t\tresult: DDynamicTextMeasureResult\n\t): void {\n\t\twhile (iterator.hasNext()) {\n\t\t\tconst character = iterator.next();\n\t\t\tif (character === NEW_LINE) {\n\t\t\t\tresult.newLine(lineHeight);\n\t\t\t} else {\n\t\t\t\tconst a = atlas.get(character);\n\t\t\t\tif (a == null) continue;\n\n\t\t\t\tconst isWrappable = this.isWrappable2(result, a);\n\n\t\t\t\tif (result.isPushable(clippingWidth, a)) {\n\t\t\t\t\tresult.push(a, isWrappable);\n\t\t\t\t} else {\n\t\t\t\t\tresult.push(a, isWrappable);\n\t\t\t\t\tresult.wordWrap(lineHeight);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static measure2(\n\t\titerator: UtilCharacterIterator,\n\t\tclippingWidth: number,\n\t\tlineHeight: number,\n\t\tatlas: DynamicFontAtlas,\n\t\tresult: DDynamicTextMeasureResult\n\t): void {\n\t\twhile (iterator.hasNext()) {\n\t\t\tconst character = iterator.next();\n\t\t\tif (character === NEW_LINE) {\n\t\t\t\tresult.newLine(lineHeight);\n\t\t\t} else {\n\t\t\t\tconst a = atlas.get(character);\n\t\t\t\tif (a == null) continue;\n\n\t\t\t\tif (result.isPushable(clippingWidth, a)) {\n\t\t\t\t\tresult.push(a, false);\n\t\t\t\t} else {\n\t\t\t\t\tresult.newLine(lineHeight);\n\t\t\t\t\tresult.push(a, false);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static measure3(\n\t\titerator: UtilCharacterIterator,\n\t\tclippingWidth: number,\n\t\tlineHeight: number,\n\t\tatlas: DynamicFontAtlas,\n\t\tresult: DDynamicTextMeasureResult\n\t): void {\n\t\twhile (iterator.hasNext()) {\n\t\t\tconst character = iterator.next();\n\t\t\tif (character === NEW_LINE) {\n\t\t\t\tresult.newLine(lineHeight);\n\t\t\t} else {\n\t\t\t\tconst a = atlas.get(character);\n\t\t\t\tif (a == null) continue;\n\n\t\t\t\tif (result.isPushable(clippingWidth, a)) {\n\t\t\t\t\tresult.push(a, false);\n\t\t\t\t} else {\n\t\t\t\t\tthis.measure5(iterator, clippingWidth, lineHeight, atlas, result, false);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static measure4(\n\t\titerator: UtilCharacterIterator,\n\t\tlineHeight: number,\n\t\tatlas: DynamicFontAtlas,\n\t\tresult: DDynamicTextMeasureResult\n\t): void {\n\t\twhile (iterator.hasNext()) {\n\t\t\tconst character = iterator.next();\n\t\t\tif (character === NEW_LINE) {\n\t\t\t\tresult.newLine(lineHeight);\n\t\t\t} else {\n\t\t\t\tconst a = atlas.get(character);\n\t\t\t\tif (a == null) continue;\n\t\t\t\tresult.push(a, false);\n\t\t\t}\n\t\t}\n\t}\n\n\tstatic measure5(\n\t\titerator: UtilCharacterIterator,\n\t\tclippingWidth: number,\n\t\tlineHeight: number,\n\t\tatlas: DynamicFontAtlas,\n\t\tresult: DDynamicTextMeasureResult,\n\t\tclose: boolean\n\t): void {\n\t\tresult.clipped = true;\n\t\tconst dots = atlas.get(\"...\");\n\t\tif (dots != null) {\n\t\t\twhile (!result.isPushable(clippingWidth, dots)) {\n\t\t\t\tif (!result.pop()) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (result.isPushable(clippingWidth, dots)) {\n\t\t\t\tresult.push(dots, false);\n\t\t\t}\n\t\t}\n\t\tif (close) {\n\t\t\titerator.close();\n\t\t} else {\n\t\t\twhile (iterator.hasNext()) {\n\t\t\t\tif (iterator.next() === NEW_LINE) {\n\t\t\t\t\tresult.newLine(lineHeight);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static isWrappable2(\n\t\tresult: DDynamicTextMeasureResult,\n\t\tcharacter: DynamicFontAtlasCharacter\n\t): boolean {\n\t\tif (result.countPerLine <= 0) {\n\t\t\treturn false;\n\t\t}\n\t\tconst last = result.characters[result.count - 1];\n\t\tconst lastType = last.character.type;\n\t\tconst type = character.type;\n\t\tif (lastType & DynamicFontAtlasCharacterType.SPACE) {\n\t\t\tif (type & DynamicFontAtlasCharacterType.SPACE) {\n\t\t\t\treturn false;\n\t\t\t} else {\n\t\t\t\tif (lastType & DynamicFontAtlasCharacterType.NON_BREAKING) {\n\t\t\t\t\treturn false;\n\t\t\t\t} else {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (type & DynamicFontAtlasCharacterType.SPACE) {\n\t\t\t\treturn false;\n\t\t\t} else {\n\t\t\t\tif (lastType & DynamicFontAtlasCharacterType.NON_BREAKING) {\n\t\t\t\t\tif (type & DynamicFontAtlasCharacterType.NON_BREAKING) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static advance(\n\t\tposition: number,\n\t\tlineBreak: LineBreak,\n\t\tlineBreaker: ReturnType<typeof LineBreaker>\n\t): LineBreak {\n\t\tif (lineBreak.done) {\n\t\t\treturn lineBreak;\n\t\t}\n\t\tif (position <= lineBreak.value.end) {\n\t\t\treturn lineBreak;\n\t\t}\n\t\tlineBreak = lineBreaker.next();\n\t\treturn lineBreak;\n\t}\n\n\tprivate static isWrappable1(position: number, lineBreak: LineBreak): boolean {\n\t\tif (lineBreak.done) {\n\t\t\treturn false;\n\t\t}\n\t\tconst value = lineBreak.value;\n\t\treturn value.start === position || value.end === position;\n\t}\n\n\tprivate static newLineBreaker(target: string): ReturnType<typeof LineBreaker> | null {\n\t\tif (\"css-line-break\" in window) {\n\t\t\tconst cssLineBreak = (window as any)[\"css-line-break\"] as {\n\t\t\t\tLineBreaker: typeof LineBreaker;\n\t\t\t};\n\t\t\treturn cssLineBreak.LineBreaker(target, {\n\t\t\t\tlineBreak: \"strict\",\n\t\t\t\twordBreak: \"normal\"\n\t\t\t});\n\t\t}\n\t\treturn null;\n\t}\n}\n"]}
1
+ {"version":3,"file":"d-dynamic-text-measure.js","sourceRoot":"","sources":["../../../src/main/typescript/wcardinal/ui/d-dynamic-text-measure.ts"],"names":[],"mappings":"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","sourcesContent":["import { DDynamicTextMeasureResult } from \"./d-dynamic-text-measure-result\";\nimport { DynamicFontAtlas } from \"./util/dynamic-font-atlas\";\nimport { UtilCharacterIterator } from \"./util/util-character-iterator\";\nimport type { LineBreaker } from \"css-line-break\";\nimport { LineBreak } from \"css-line-break/dist/types/LineBreak\";\nimport { DDynamicTextStyleWordWrap } from \"./d-dynamic-text-style-word-wrap\";\nimport { DynamicFontAtlasCharacter } from \"./util/dynamic-font-atlas-character\";\nimport { DynamicFontAtlasCharacterType } from \"./util/dynamic-font-atlas-character-type\";\n\nexport interface DDynamicTextMeasureModifier {\n\tclipping: boolean;\n\tfitting: boolean;\n\twordWrap: DDynamicTextStyleWordWrap;\n\twidth: number;\n\theight: number;\n\tlineHeight: number;\n}\n\nconst NEW_LINE = \"\\n\";\n\nexport class DDynamicTextMeasure {\n\tprotected static RESULT: DDynamicTextMeasureResult | null = null;\n\n\tstatic measure(\n\t\ttext: string,\n\t\tatlas: DynamicFontAtlas | null,\n\t\tmodifier: DDynamicTextMeasureModifier\n\t): DDynamicTextMeasureResult {\n\t\tconst result = DDynamicTextMeasure.RESULT || new DDynamicTextMeasureResult();\n\t\tDDynamicTextMeasure.RESULT = result;\n\t\tif (atlas != null) {\n\t\t\tconst itr = UtilCharacterIterator.from(text);\n\t\t\tconst fh = atlas.font.height;\n\t\t\tconst lh = modifier.lineHeight;\n\t\t\tconst cf = modifier.fitting;\n\t\t\tconst cc = !cf && modifier.clipping;\n\t\t\tconst cw = modifier.width;\n\t\t\tconst ch = modifier.height;\n\t\t\tconst cp = !cf && modifier.wordWrap;\n\t\t\tresult.start(lh, fh);\n\t\t\tswitch (cp) {\n\t\t\t\tcase DDynamicTextStyleWordWrap.BREAK_ALL:\n\t\t\t\t\tif (cc) {\n\t\t\t\t\t\tthis.measure1(itr, cw, ch, fh, lh, atlas, result);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.measure2(itr, cw, lh, atlas, result);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase DDynamicTextStyleWordWrap.NORMAL:\n\t\t\t\t\tconst lb = this.newLineBreaker(text);\n\t\t\t\t\tif (lb) {\n\t\t\t\t\t\tif (cc) {\n\t\t\t\t\t\t\tthis.measure1a(lb, itr, cw, ch, fh, lh, atlas, result);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.measure2a(lb, itr, cw, lh, atlas, result);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (cc) {\n\t\t\t\t\t\t\tthis.measure1b(itr, cw, ch, fh, lh, atlas, result);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.measure2b(itr, cw, lh, atlas, result);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tif (cc) {\n\t\t\t\t\t\tthis.measure3(itr, cw, lh, atlas, result);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.measure4(itr, lh, atlas, result);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tresult.end(lh, fh);\n\t\t\tif (cf) {\n\t\t\t\tresult.fit(cw, ch);\n\t\t\t}\n\t\t} else {\n\t\t\tresult.start(0, 0);\n\t\t\tresult.end(0, 0);\n\t\t}\n\t\treturn result;\n\t}\n\n\tprivate static measure1a(\n\t\tlineBreaker: ReturnType<typeof LineBreaker>,\n\t\titerator: UtilCharacterIterator,\n\t\tclippingWidth: number,\n\t\tclippingHeight: number,\n\t\tfontHeight: number,\n\t\tlineHeight: number,\n\t\tatlas: DynamicFontAtlas,\n\t\tresult: DDynamicTextMeasureResult\n\t): void {\n\t\tlet lineBreak = lineBreaker.next();\n\t\twhile (iterator.hasNext()) {\n\t\t\tconst characterPosition = iterator.position;\n\t\t\tconst character = iterator.next();\n\t\t\tif (character === NEW_LINE) {\n\t\t\t\tresult.newLine(lineHeight);\n\t\t\t} else {\n\t\t\t\tconst a = atlas.get(character);\n\t\t\t\tif (a == null) continue;\n\n\t\t\t\tlineBreak = this.advance(characterPosition, lineBreak, lineBreaker);\n\t\t\t\tconst isWrappable = this.isWrappable1(characterPosition, lineBreak);\n\n\t\t\t\tif (result.isPushable(clippingWidth, a)) {\n\t\t\t\t\tresult.push(a, isWrappable);\n\t\t\t\t} else {\n\t\t\t\t\tif (result.isPushableAtNewLine(clippingHeight, lineHeight, fontHeight)) {\n\t\t\t\t\t\tresult.push(a, isWrappable);\n\t\t\t\t\t\tresult.wordWrap(lineHeight);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.measure5(iterator, clippingWidth, lineHeight, atlas, result, true);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static measure1b(\n\t\titerator: UtilCharacterIterator,\n\t\tclippingWidth: number,\n\t\tclippingHeight: number,\n\t\tfontHeight: number,\n\t\tlineHeight: number,\n\t\tatlas: DynamicFontAtlas,\n\t\tresult: DDynamicTextMeasureResult\n\t): void {\n\t\twhile (iterator.hasNext()) {\n\t\t\tconst character = iterator.next();\n\t\t\tif (character === NEW_LINE) {\n\t\t\t\tresult.newLine(lineHeight);\n\t\t\t} else {\n\t\t\t\tconst a = atlas.get(character);\n\t\t\t\tif (a == null) continue;\n\n\t\t\t\tconst isWrappable = this.isWrappable2(result, a);\n\t\t\t\tif (result.isPushable(clippingWidth, a)) {\n\t\t\t\t\tresult.push(a, isWrappable);\n\t\t\t\t} else {\n\t\t\t\t\tif (result.isPushableAtNewLine(clippingHeight, lineHeight, fontHeight)) {\n\t\t\t\t\t\tresult.push(a, isWrappable);\n\t\t\t\t\t\tresult.wordWrap(lineHeight);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.measure5(iterator, clippingWidth, lineHeight, atlas, result, true);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static measure1(\n\t\titerator: UtilCharacterIterator,\n\t\tclippingWidth: number,\n\t\tclippingHeight: number,\n\t\tfontHeight: number,\n\t\tlineHeight: number,\n\t\tatlas: DynamicFontAtlas,\n\t\tresult: DDynamicTextMeasureResult\n\t): void {\n\t\twhile (iterator.hasNext()) {\n\t\t\tconst character = iterator.next();\n\t\t\tif (character === NEW_LINE) {\n\t\t\t\tresult.newLine(lineHeight);\n\t\t\t} else {\n\t\t\t\tconst a = atlas.get(character);\n\t\t\t\tif (a == null) continue;\n\n\t\t\t\tif (result.isPushable(clippingWidth, a)) {\n\t\t\t\t\tresult.push(a, true);\n\t\t\t\t} else {\n\t\t\t\t\tif (result.isPushableAtNewLine(clippingHeight, lineHeight, fontHeight)) {\n\t\t\t\t\t\tresult.newLine(lineHeight);\n\t\t\t\t\t\tresult.push(a, true);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.measure5(iterator, clippingWidth, lineHeight, atlas, result, true);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static measure2a(\n\t\tlineBreaker: ReturnType<typeof LineBreaker>,\n\t\titerator: UtilCharacterIterator,\n\t\tclippingWidth: number,\n\t\tlineHeight: number,\n\t\tatlas: DynamicFontAtlas,\n\t\tresult: DDynamicTextMeasureResult\n\t): void {\n\t\tlet lineBreak = lineBreaker.next();\n\t\twhile (iterator.hasNext()) {\n\t\t\tconst characterPosition = iterator.position;\n\t\t\tconst character = iterator.next();\n\t\t\tif (character === NEW_LINE) {\n\t\t\t\tresult.newLine(lineHeight);\n\t\t\t} else {\n\t\t\t\tconst a = atlas.get(character);\n\t\t\t\tif (a == null) continue;\n\n\t\t\t\tlineBreak = this.advance(characterPosition, lineBreak, lineBreaker);\n\t\t\t\tconst isWrappable = this.isWrappable1(characterPosition, lineBreak);\n\n\t\t\t\tif (result.isPushable(clippingWidth, a)) {\n\t\t\t\t\tresult.push(a, isWrappable);\n\t\t\t\t} else {\n\t\t\t\t\tresult.push(a, isWrappable);\n\t\t\t\t\tresult.wordWrap(lineHeight);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static measure2b(\n\t\titerator: UtilCharacterIterator,\n\t\tclippingWidth: number,\n\t\tlineHeight: number,\n\t\tatlas: DynamicFontAtlas,\n\t\tresult: DDynamicTextMeasureResult\n\t): void {\n\t\twhile (iterator.hasNext()) {\n\t\t\tconst character = iterator.next();\n\t\t\tif (character === NEW_LINE) {\n\t\t\t\tresult.newLine(lineHeight);\n\t\t\t} else {\n\t\t\t\tconst a = atlas.get(character);\n\t\t\t\tif (a == null) continue;\n\n\t\t\t\tconst isWrappable = this.isWrappable2(result, a);\n\n\t\t\t\tif (result.isPushable(clippingWidth, a)) {\n\t\t\t\t\tresult.push(a, isWrappable);\n\t\t\t\t} else {\n\t\t\t\t\tresult.push(a, isWrappable);\n\t\t\t\t\tresult.wordWrap(lineHeight);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static measure2(\n\t\titerator: UtilCharacterIterator,\n\t\tclippingWidth: number,\n\t\tlineHeight: number,\n\t\tatlas: DynamicFontAtlas,\n\t\tresult: DDynamicTextMeasureResult\n\t): void {\n\t\twhile (iterator.hasNext()) {\n\t\t\tconst character = iterator.next();\n\t\t\tif (character === NEW_LINE) {\n\t\t\t\tresult.newLine(lineHeight);\n\t\t\t} else {\n\t\t\t\tconst a = atlas.get(character);\n\t\t\t\tif (a == null) continue;\n\n\t\t\t\tif (result.isPushable(clippingWidth, a)) {\n\t\t\t\t\tresult.push(a, false);\n\t\t\t\t} else {\n\t\t\t\t\tresult.newLine(lineHeight);\n\t\t\t\t\tresult.push(a, false);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static measure3(\n\t\titerator: UtilCharacterIterator,\n\t\tclippingWidth: number,\n\t\tlineHeight: number,\n\t\tatlas: DynamicFontAtlas,\n\t\tresult: DDynamicTextMeasureResult\n\t): void {\n\t\twhile (iterator.hasNext()) {\n\t\t\tconst character = iterator.next();\n\t\t\tif (character === NEW_LINE) {\n\t\t\t\tresult.newLine(lineHeight);\n\t\t\t} else {\n\t\t\t\tconst a = atlas.get(character);\n\t\t\t\tif (a == null) continue;\n\n\t\t\t\tif (result.isPushable(clippingWidth, a)) {\n\t\t\t\t\tresult.push(a, false);\n\t\t\t\t} else {\n\t\t\t\t\tthis.measure5(iterator, clippingWidth, lineHeight, atlas, result, false);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static measure4(\n\t\titerator: UtilCharacterIterator,\n\t\tlineHeight: number,\n\t\tatlas: DynamicFontAtlas,\n\t\tresult: DDynamicTextMeasureResult\n\t): void {\n\t\twhile (iterator.hasNext()) {\n\t\t\tconst character = iterator.next();\n\t\t\tif (character === NEW_LINE) {\n\t\t\t\tresult.newLine(lineHeight);\n\t\t\t} else {\n\t\t\t\tconst a = atlas.get(character);\n\t\t\t\tif (a == null) continue;\n\t\t\t\tresult.push(a, false);\n\t\t\t}\n\t\t}\n\t}\n\n\tstatic measure5(\n\t\titerator: UtilCharacterIterator,\n\t\tclippingWidth: number,\n\t\tlineHeight: number,\n\t\tatlas: DynamicFontAtlas,\n\t\tresult: DDynamicTextMeasureResult,\n\t\tclose: boolean\n\t): void {\n\t\tresult.clipped = true;\n\t\tconst dots = atlas.get(\"...\");\n\t\tif (dots != null) {\n\t\t\twhile (!result.isPushable(clippingWidth, dots)) {\n\t\t\t\tif (!result.pop()) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (result.isPushable(clippingWidth, dots)) {\n\t\t\t\tresult.push(dots, false);\n\t\t\t}\n\t\t}\n\t\tif (close) {\n\t\t\titerator.close();\n\t\t} else {\n\t\t\twhile (iterator.hasNext()) {\n\t\t\t\tif (iterator.next() === NEW_LINE) {\n\t\t\t\t\tresult.newLine(lineHeight);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static isWrappable2(\n\t\tresult: DDynamicTextMeasureResult,\n\t\tcharacter: DynamicFontAtlasCharacter\n\t): boolean {\n\t\tif (result.countPerLine <= 0) {\n\t\t\treturn false;\n\t\t}\n\t\tconst last = result.characters[result.count - 1];\n\t\tconst lastType = last.character.type;\n\t\tconst type = character.type;\n\t\tif (lastType & DynamicFontAtlasCharacterType.SPACE) {\n\t\t\tif (type & DynamicFontAtlasCharacterType.SPACE) {\n\t\t\t\treturn false;\n\t\t\t} else {\n\t\t\t\tif (lastType & DynamicFontAtlasCharacterType.NON_BREAKING) {\n\t\t\t\t\treturn false;\n\t\t\t\t} else {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (type & DynamicFontAtlasCharacterType.SPACE) {\n\t\t\t\treturn false;\n\t\t\t} else {\n\t\t\t\tif (lastType & DynamicFontAtlasCharacterType.NON_BREAKING) {\n\t\t\t\t\tif (type & DynamicFontAtlasCharacterType.NON_BREAKING) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static advance(\n\t\tposition: number,\n\t\tlineBreak: LineBreak,\n\t\tlineBreaker: ReturnType<typeof LineBreaker>\n\t): LineBreak {\n\t\tif (lineBreak.done) {\n\t\t\treturn lineBreak;\n\t\t}\n\t\tif (position <= lineBreak.value.end) {\n\t\t\treturn lineBreak;\n\t\t}\n\t\tlineBreak = lineBreaker.next();\n\t\treturn lineBreak;\n\t}\n\n\tprivate static isWrappable1(position: number, lineBreak: LineBreak): boolean {\n\t\tif (lineBreak.done) {\n\t\t\treturn false;\n\t\t}\n\t\tconst value = lineBreak.value;\n\t\treturn value.start === position || value.end === position;\n\t}\n\n\tprivate static newLineBreaker(target: string): ReturnType<typeof LineBreaker> | null {\n\t\tif (\"css-line-break\" in window) {\n\t\t\tconst cssLineBreak = (window as any)[\"css-line-break\"] as {\n\t\t\t\tLineBreaker: typeof LineBreaker;\n\t\t\t};\n\t\t\treturn cssLineBreak.LineBreaker(target, {\n\t\t\t\tlineBreak: \"strict\",\n\t\t\t\twordBreak: \"normal\"\n\t\t\t});\n\t\t}\n\t\treturn null;\n\t}\n}\n"]}
@@ -8,7 +8,7 @@ import { DThemes } from "./theme/d-themes";
8
8
  import { toEnum } from "./util/to-enum";
9
9
  var DDynamicTextStyle = /** @class */ (function () {
10
10
  function DDynamicTextStyle(options, onChange) {
11
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
11
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
12
12
  this._id = 0;
13
13
  this._idApproved = -1;
14
14
  var defaultOptions = this.getDefaultOptions();
@@ -21,8 +21,9 @@ var DDynamicTextStyle = /** @class */ (function () {
21
21
  this._fontWeight = (_f = options.fontWeight) !== null && _f !== void 0 ? _f : defaultOptions.fontWeight;
22
22
  this._fill = (_g = options.fill) !== null && _g !== void 0 ? _g : defaultOptions.fill;
23
23
  this._clipping = (_h = options.clipping) !== null && _h !== void 0 ? _h : defaultOptions.clipping;
24
- this._wordWrap = toEnum((_j = options.wordWrap) !== null && _j !== void 0 ? _j : defaultOptions.wordWrap, DDynamicTextStyleWordWrap);
25
- this._lineHeight = (_k = options.lineHeight) !== null && _k !== void 0 ? _k : defaultOptions.lineHeight;
24
+ this._fitting = (_j = options.fitting) !== null && _j !== void 0 ? _j : defaultOptions.fitting;
25
+ this._wordWrap = toEnum((_k = options.wordWrap) !== null && _k !== void 0 ? _k : defaultOptions.wordWrap, DDynamicTextStyleWordWrap);
26
+ this._lineHeight = (_l = options.lineHeight) !== null && _l !== void 0 ? _l : defaultOptions.lineHeight;
26
27
  }
27
28
  else {
28
29
  this._align = defaultOptions.align;
@@ -33,9 +34,14 @@ var DDynamicTextStyle = /** @class */ (function () {
33
34
  this._fontWeight = defaultOptions.fontWeight;
34
35
  this._fill = defaultOptions.fill;
35
36
  this._clipping = defaultOptions.clipping;
37
+ this._fitting = defaultOptions.fitting;
36
38
  this._wordWrap = toEnum(defaultOptions.wordWrap, DDynamicTextStyleWordWrap);
37
39
  this._lineHeight = defaultOptions.lineHeight;
38
40
  }
41
+ this._fontSizeFitted = this._fontSize;
42
+ this._lineHeightFitted = this._lineHeight;
43
+ this._isFontFitted = false;
44
+ this._fontIdFontSize = this._fontSize;
39
45
  this._fontIdId = -1;
40
46
  this._fontId = "";
41
47
  this._fontIdApproved = "";
@@ -61,6 +67,7 @@ var DDynamicTextStyle = /** @class */ (function () {
61
67
  fontWeight: "normal",
62
68
  fill: theme.getColor(new DBaseStateSetImpl()),
63
69
  clipping: true,
70
+ fitting: false,
64
71
  wordWrap: DDynamicTextStyleWordWrap.NONE,
65
72
  lineHeight: theme.getLineHeight()
66
73
  };
@@ -87,6 +94,14 @@ var DDynamicTextStyle = /** @class */ (function () {
87
94
  enumerable: false,
88
95
  configurable: true
89
96
  });
97
+ Object.defineProperty(DDynamicTextStyle.prototype, "fontIdFontSize", {
98
+ get: function () {
99
+ this.update();
100
+ return this._fontSizeFitted;
101
+ },
102
+ enumerable: false,
103
+ configurable: true
104
+ });
90
105
  Object.defineProperty(DDynamicTextStyle.prototype, "fontIdApproved", {
91
106
  get: function () {
92
107
  return this._fontIdApproved;
@@ -144,12 +159,29 @@ var DDynamicTextStyle = /** @class */ (function () {
144
159
  set: function (fontSize) {
145
160
  if (this._fontSize !== fontSize) {
146
161
  this._fontSize = fontSize;
162
+ this._fontSizeFitted = fontSize;
163
+ this._lineHeightFitted = this._lineHeight;
164
+ this._isFontFitted = false;
147
165
  this.onChange();
148
166
  }
149
167
  },
150
168
  enumerable: false,
151
169
  configurable: true
152
170
  });
171
+ Object.defineProperty(DDynamicTextStyle.prototype, "fontSizeFitted", {
172
+ get: function () {
173
+ return this._fontSizeFitted;
174
+ },
175
+ enumerable: false,
176
+ configurable: true
177
+ });
178
+ Object.defineProperty(DDynamicTextStyle.prototype, "isFontFitted", {
179
+ get: function () {
180
+ return this._isFontFitted;
181
+ },
182
+ enumerable: false,
183
+ configurable: true
184
+ });
153
185
  Object.defineProperty(DDynamicTextStyle.prototype, "fontStyle", {
154
186
  get: function () {
155
187
  return this._fontStyle;
@@ -192,11 +224,13 @@ var DDynamicTextStyle = /** @class */ (function () {
192
224
  DDynamicTextStyle.prototype.update = function () {
193
225
  if (this._fontIdId !== this._id) {
194
226
  this._fontIdId = this._id;
195
- this._fontId = this.newFontId();
227
+ var fontIdFontSize = this._fitting ? this._fontSizeFitted : this._fontSize;
228
+ this._fontIdFontSize = fontIdFontSize;
229
+ this._fontId = this.toFontId(fontIdFontSize);
196
230
  }
197
231
  };
198
- DDynamicTextStyle.prototype.newFontId = function () {
199
- return "".concat(this._fontStyle, " ").concat(this._fontVariant, " ").concat(this._fontWeight, " ").concat(this._fontSize, "px ").concat(this._fontFamily);
232
+ DDynamicTextStyle.prototype.toFontId = function (fontSize) {
233
+ return "".concat(this._fontStyle, " ").concat(this._fontVariant, " ").concat(this._fontWeight, " ").concat(fontSize, "px ").concat(this._fontFamily);
200
234
  };
201
235
  Object.defineProperty(DDynamicTextStyle.prototype, "clipping", {
202
236
  get: function () {
@@ -211,6 +245,19 @@ var DDynamicTextStyle = /** @class */ (function () {
211
245
  enumerable: false,
212
246
  configurable: true
213
247
  });
248
+ Object.defineProperty(DDynamicTextStyle.prototype, "fitting", {
249
+ get: function () {
250
+ return this._fitting;
251
+ },
252
+ set: function (fitting) {
253
+ if (this._fitting !== fitting) {
254
+ this._fitting = fitting;
255
+ this.onChange();
256
+ }
257
+ },
258
+ enumerable: false,
259
+ configurable: true
260
+ });
214
261
  Object.defineProperty(DDynamicTextStyle.prototype, "wordWrap", {
215
262
  get: function () {
216
263
  return this._wordWrap;
@@ -231,12 +278,66 @@ var DDynamicTextStyle = /** @class */ (function () {
231
278
  set: function (lineHeight) {
232
279
  if (this._lineHeight !== lineHeight) {
233
280
  this._lineHeight = lineHeight;
281
+ this._fontSizeFitted = this._fontSize;
282
+ this._lineHeightFitted = lineHeight;
283
+ this._isFontFitted = false;
284
+ this.onChange();
285
+ }
286
+ },
287
+ enumerable: false,
288
+ configurable: true
289
+ });
290
+ Object.defineProperty(DDynamicTextStyle.prototype, "lineHeightFitted", {
291
+ get: function () {
292
+ return this._lineHeightFitted;
293
+ },
294
+ set: function (lineHeightFitted) {
295
+ if (this._lineHeightFitted !== lineHeightFitted) {
296
+ this._lineHeightFitted = lineHeightFitted;
234
297
  this.onChange();
235
298
  }
236
299
  },
237
300
  enumerable: false,
238
301
  configurable: true
239
302
  });
303
+ DDynamicTextStyle.prototype.fit = function (fontSize, lineHeight) {
304
+ var isChanged = false;
305
+ if (fontSize < this._fontSizeFitted) {
306
+ this._fontSizeFitted = fontSize;
307
+ isChanged = true;
308
+ }
309
+ if (this._lineHeightFitted !== lineHeight) {
310
+ this._lineHeightFitted = lineHeight;
311
+ isChanged = true;
312
+ }
313
+ if (this._isFontFitted !== true) {
314
+ this._isFontFitted = true;
315
+ isChanged = true;
316
+ }
317
+ if (isChanged) {
318
+ this.onChange();
319
+ }
320
+ return isChanged;
321
+ };
322
+ DDynamicTextStyle.prototype.unfit = function () {
323
+ var isChanged = false;
324
+ if (this._isFontFitted !== false) {
325
+ this._isFontFitted = false;
326
+ isChanged = true;
327
+ }
328
+ if (this._fontSizeFitted !== this._fontSize) {
329
+ this._fontSizeFitted = this._fontSize;
330
+ isChanged = true;
331
+ }
332
+ if (this._lineHeightFitted !== this._lineHeight) {
333
+ this._lineHeightFitted = this._lineHeight;
334
+ isChanged = true;
335
+ }
336
+ if (isChanged) {
337
+ this.onChange();
338
+ }
339
+ return isChanged;
340
+ };
240
341
  return DDynamicTextStyle;
241
342
  }());
242
343
  export { DDynamicTextStyle };
@@ -1 +1 @@
1
- {"version":3,"file":"d-dynamic-text-style.js","sourceRoot":"","sources":["../../../src/main/typescript/wcardinal/ui/d-dynamic-text-style.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DBaseStateSetImpl } from \"./d-base-state-set-impl\";\nimport { DDynamicTextStyleWordWrap } from \"./d-dynamic-text-style-word-wrap\";\nimport { DFontStyle, DFontVariant, DFontWeight, DThemeFont } from \"./d-font\";\nimport { DThemes } from \"./theme/d-themes\";\nimport { toEnum } from \"./util/to-enum\";\n\nexport type DDynamicTextAlign = \"left\" | \"center\" | \"right\";\n\nexport interface DDynamicTextStyleOptions {\n\talign?: DDynamicTextAlign;\n\tfontFamily?: string;\n\tfontSize?: number;\n\tfontStyle?: DFontStyle;\n\tfontVariant?: DFontVariant;\n\tfontWeight?: DFontWeight;\n\tfill?: number;\n\tclipping?: boolean;\n\twordWrap?: DDynamicTextStyleWordWrap | keyof typeof DDynamicTextStyleWordWrap;\n\tlineHeight?: number;\n}\n\nexport class DDynamicTextStyle {\n\tprotected static DEFAULT_OPTIONS?: Required<DDynamicTextStyleOptions>;\n\n\tprotected _id: number;\n\tprotected _idApproved: number;\n\tprotected _fontIdId: number;\n\tprotected _fontId: string;\n\tprotected _fontIdApproved: string;\n\tprotected _align: DDynamicTextAlign;\n\tprotected _fontFamily: string;\n\tprotected _fontSize: number;\n\tprotected _fontStyle: DFontStyle;\n\tprotected _fontVariant: DFontVariant;\n\tprotected _fontWeight: DFontWeight;\n\tprotected _fill: number;\n\tprotected _fillApproved: number;\n\tprotected _clipping: boolean;\n\tprotected _wordWrap: DDynamicTextStyleWordWrap;\n\tprotected _lineHeight: number;\n\tprotected _onChange: () => void;\n\n\tconstructor(options: DDynamicTextStyleOptions | undefined, onChange: () => void) {\n\t\tthis._id = 0;\n\t\tthis._idApproved = -1;\n\n\t\tconst defaultOptions = this.getDefaultOptions();\n\t\tif (options) {\n\t\t\tthis._align = options.align ?? defaultOptions.align;\n\t\t\tthis._fontFamily = options.fontFamily ?? defaultOptions.fontFamily;\n\t\t\tthis._fontSize = options.fontSize ?? defaultOptions.fontSize;\n\t\t\tthis._fontStyle = options.fontStyle ?? defaultOptions.fontStyle;\n\t\t\tthis._fontVariant = options.fontVariant ?? defaultOptions.fontVariant;\n\t\t\tthis._fontWeight = options.fontWeight ?? defaultOptions.fontWeight;\n\t\t\tthis._fill = options.fill ?? defaultOptions.fill;\n\t\t\tthis._clipping = options.clipping ?? defaultOptions.clipping;\n\t\t\tthis._wordWrap = toEnum(\n\t\t\t\toptions.wordWrap ?? defaultOptions.wordWrap,\n\t\t\t\tDDynamicTextStyleWordWrap\n\t\t\t);\n\t\t\tthis._lineHeight = options.lineHeight ?? defaultOptions.lineHeight;\n\t\t} else {\n\t\t\tthis._align = defaultOptions.align;\n\t\t\tthis._fontFamily = defaultOptions.fontFamily;\n\t\t\tthis._fontSize = defaultOptions.fontSize;\n\t\t\tthis._fontStyle = defaultOptions.fontStyle;\n\t\t\tthis._fontVariant = defaultOptions.fontVariant;\n\t\t\tthis._fontWeight = defaultOptions.fontWeight;\n\t\t\tthis._fill = defaultOptions.fill;\n\t\t\tthis._clipping = defaultOptions.clipping;\n\t\t\tthis._wordWrap = toEnum(defaultOptions.wordWrap, DDynamicTextStyleWordWrap);\n\t\t\tthis._lineHeight = defaultOptions.lineHeight;\n\t\t}\n\n\t\tthis._fontIdId = -1;\n\t\tthis._fontId = \"\";\n\t\tthis._fontIdApproved = \"\";\n\t\tthis._fillApproved = 0x000000;\n\n\t\tthis._onChange = onChange;\n\t}\n\n\tprotected getDefaultOptions(): Required<DDynamicTextStyleOptions> {\n\t\tlet result = DDynamicTextStyle.DEFAULT_OPTIONS;\n\t\tif (result == null) {\n\t\t\tresult = this.newDefaultOptions();\n\t\t\tDDynamicTextStyle.DEFAULT_OPTIONS = result;\n\t\t}\n\t\treturn result;\n\t}\n\n\tprotected newDefaultOptions(): Required<DDynamicTextStyleOptions> {\n\t\tconst theme = DThemes.getInstance().get(\"DBase\") as DThemeFont;\n\t\treturn {\n\t\t\talign: \"left\",\n\t\t\tfontFamily: theme.getFontFamilly(),\n\t\t\tfontSize: theme.getFontSize(),\n\t\t\tfontStyle: \"normal\",\n\t\t\tfontVariant: \"normal\",\n\t\t\tfontWeight: \"normal\",\n\t\t\tfill: theme.getColor(new DBaseStateSetImpl()),\n\t\t\tclipping: true,\n\t\t\twordWrap: DDynamicTextStyleWordWrap.NONE,\n\t\t\tlineHeight: theme.getLineHeight()\n\t\t};\n\t}\n\n\tget id(): number {\n\t\treturn this._id;\n\t}\n\n\tget idApproved(): number {\n\t\treturn this._idApproved;\n\t}\n\n\tget fontId(): string {\n\t\tthis.update();\n\t\treturn this._fontId;\n\t}\n\n\tget fontIdApproved(): string {\n\t\treturn this._fontIdApproved;\n\t}\n\n\tget fill(): number {\n\t\treturn this._fill;\n\t}\n\n\tset fill(fill: number) {\n\t\tif (this._fill !== fill) {\n\t\t\tthis._fill = fill;\n\t\t\tthis.onChange();\n\t\t}\n\t}\n\n\tprotected onChange(): void {\n\t\tthis._id += 1;\n\t\tthis._onChange();\n\t}\n\n\tget fillApproved(): number {\n\t\treturn this._fillApproved;\n\t}\n\n\tapprove(): void {\n\t\tthis.update();\n\t\tthis._idApproved = this._id;\n\t\tthis._fontIdApproved = this._fontId;\n\t\tthis._fillApproved = this._fill;\n\t}\n\n\tget fontFamily(): string {\n\t\treturn this._fontFamily;\n\t}\n\n\tset fontFamily(fontFamily: string) {\n\t\tif (this._fontFamily !== fontFamily) {\n\t\t\tthis._fontFamily = fontFamily;\n\t\t\tthis.onChange();\n\t\t}\n\t}\n\n\tget fontSize(): number {\n\t\treturn this._fontSize;\n\t}\n\n\tset fontSize(fontSize: number) {\n\t\tif (this._fontSize !== fontSize) {\n\t\t\tthis._fontSize = fontSize;\n\t\t\tthis.onChange();\n\t\t}\n\t}\n\n\tget fontStyle(): DFontStyle {\n\t\treturn this._fontStyle;\n\t}\n\n\tset fontStyle(fontStyle: DFontStyle) {\n\t\tif (this._fontStyle !== fontStyle) {\n\t\t\tthis._fontStyle = fontStyle;\n\t\t\tthis.onChange();\n\t\t}\n\t}\n\n\tget fontVariant(): DFontVariant {\n\t\treturn this._fontVariant;\n\t}\n\n\tset fontVariant(fontVariant: DFontVariant) {\n\t\tif (this._fontVariant !== fontVariant) {\n\t\t\tthis._fontVariant = fontVariant;\n\t\t\tthis.onChange();\n\t\t}\n\t}\n\n\tget fontWeight(): DFontWeight {\n\t\treturn this._fontWeight;\n\t}\n\n\tset fontWeight(fontWeight: DFontWeight) {\n\t\tif (this._fontWeight !== fontWeight) {\n\t\t\tthis._fontWeight = fontWeight;\n\t\t\tthis.onChange();\n\t\t}\n\t}\n\n\tprotected update(): void {\n\t\tif (this._fontIdId !== this._id) {\n\t\t\tthis._fontIdId = this._id;\n\t\t\tthis._fontId = this.newFontId();\n\t\t}\n\t}\n\n\tprotected newFontId(): string {\n\t\treturn `${this._fontStyle} ${this._fontVariant} ${this._fontWeight} ${this._fontSize}px ${this._fontFamily}`;\n\t}\n\n\tget clipping(): boolean {\n\t\treturn this._clipping;\n\t}\n\n\tset clipping(clipping: boolean) {\n\t\tif (this._clipping !== clipping) {\n\t\t\tthis._clipping = clipping;\n\t\t\tthis.onChange();\n\t\t}\n\t}\n\n\tget wordWrap(): DDynamicTextStyleWordWrap {\n\t\treturn this._wordWrap;\n\t}\n\n\tset wordWrap(wordWrap: DDynamicTextStyleWordWrap) {\n\t\tif (this._wordWrap !== wordWrap) {\n\t\t\tthis._wordWrap = wordWrap;\n\t\t\tthis.onChange();\n\t\t}\n\t}\n\n\tget lineHeight(): number {\n\t\treturn this._lineHeight;\n\t}\n\n\tset lineHeight(lineHeight: number) {\n\t\tif (this._lineHeight !== lineHeight) {\n\t\t\tthis._lineHeight = lineHeight;\n\t\t\tthis.onChange();\n\t\t}\n\t}\n}\n"]}
1
+ {"version":3,"file":"d-dynamic-text-style.js","sourceRoot":"","sources":["../../../src/main/typescript/wcardinal/ui/d-dynamic-text-style.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DBaseStateSetImpl } from \"./d-base-state-set-impl\";\nimport { DDynamicTextStyleWordWrap } from \"./d-dynamic-text-style-word-wrap\";\nimport { DFontStyle, DFontVariant, DFontWeight, DThemeFont } from \"./d-font\";\nimport { DThemes } from \"./theme/d-themes\";\nimport { toEnum } from \"./util/to-enum\";\n\nexport type DDynamicTextAlign = \"left\" | \"center\" | \"right\";\n\nexport interface DDynamicTextStyleOptions {\n\talign?: DDynamicTextAlign;\n\tfontFamily?: string;\n\tfontSize?: number;\n\tfontStyle?: DFontStyle;\n\tfontVariant?: DFontVariant;\n\tfontWeight?: DFontWeight;\n\tfill?: number;\n\tclipping?: boolean;\n\tfitting?: boolean;\n\twordWrap?: DDynamicTextStyleWordWrap | keyof typeof DDynamicTextStyleWordWrap;\n\tlineHeight?: number;\n}\n\nexport class DDynamicTextStyle {\n\tprotected static DEFAULT_OPTIONS?: Required<DDynamicTextStyleOptions>;\n\n\tprotected _id: number;\n\tprotected _idApproved: number;\n\tprotected _fontIdId: number;\n\tprotected _fontId: string;\n\tprotected _fontIdApproved: string;\n\tprotected _fontIdFontSize: number;\n\tprotected _align: DDynamicTextAlign;\n\tprotected _fontFamily: string;\n\tprotected _fontSize: number;\n\tprotected _fontSizeFitted: number;\n\tprotected _isFontFitted: boolean;\n\tprotected _fontStyle: DFontStyle;\n\tprotected _fontVariant: DFontVariant;\n\tprotected _fontWeight: DFontWeight;\n\tprotected _fill: number;\n\tprotected _fillApproved: number;\n\tprotected _clipping: boolean;\n\tprotected _fitting: boolean;\n\tprotected _wordWrap: DDynamicTextStyleWordWrap;\n\tprotected _lineHeight: number;\n\tprotected _lineHeightFitted: number;\n\tprotected _onChange: () => void;\n\n\tconstructor(options: DDynamicTextStyleOptions | undefined, onChange: () => void) {\n\t\tthis._id = 0;\n\t\tthis._idApproved = -1;\n\n\t\tconst defaultOptions = this.getDefaultOptions();\n\t\tif (options) {\n\t\t\tthis._align = options.align ?? defaultOptions.align;\n\t\t\tthis._fontFamily = options.fontFamily ?? defaultOptions.fontFamily;\n\t\t\tthis._fontSize = options.fontSize ?? defaultOptions.fontSize;\n\t\t\tthis._fontStyle = options.fontStyle ?? defaultOptions.fontStyle;\n\t\t\tthis._fontVariant = options.fontVariant ?? defaultOptions.fontVariant;\n\t\t\tthis._fontWeight = options.fontWeight ?? defaultOptions.fontWeight;\n\t\t\tthis._fill = options.fill ?? defaultOptions.fill;\n\t\t\tthis._clipping = options.clipping ?? defaultOptions.clipping;\n\t\t\tthis._fitting = options.fitting ?? defaultOptions.fitting;\n\t\t\tthis._wordWrap = toEnum(\n\t\t\t\toptions.wordWrap ?? defaultOptions.wordWrap,\n\t\t\t\tDDynamicTextStyleWordWrap\n\t\t\t);\n\t\t\tthis._lineHeight = options.lineHeight ?? defaultOptions.lineHeight;\n\t\t} else {\n\t\t\tthis._align = defaultOptions.align;\n\t\t\tthis._fontFamily = defaultOptions.fontFamily;\n\t\t\tthis._fontSize = defaultOptions.fontSize;\n\t\t\tthis._fontStyle = defaultOptions.fontStyle;\n\t\t\tthis._fontVariant = defaultOptions.fontVariant;\n\t\t\tthis._fontWeight = defaultOptions.fontWeight;\n\t\t\tthis._fill = defaultOptions.fill;\n\t\t\tthis._clipping = defaultOptions.clipping;\n\t\t\tthis._fitting = defaultOptions.fitting;\n\t\t\tthis._wordWrap = toEnum(defaultOptions.wordWrap, DDynamicTextStyleWordWrap);\n\t\t\tthis._lineHeight = defaultOptions.lineHeight;\n\t\t}\n\n\t\tthis._fontSizeFitted = this._fontSize;\n\t\tthis._lineHeightFitted = this._lineHeight;\n\t\tthis._isFontFitted = false;\n\t\tthis._fontIdFontSize = this._fontSize;\n\t\tthis._fontIdId = -1;\n\t\tthis._fontId = \"\";\n\t\tthis._fontIdApproved = \"\";\n\t\tthis._fillApproved = 0x000000;\n\n\t\tthis._onChange = onChange;\n\t}\n\n\tprotected getDefaultOptions(): Required<DDynamicTextStyleOptions> {\n\t\tlet result = DDynamicTextStyle.DEFAULT_OPTIONS;\n\t\tif (result == null) {\n\t\t\tresult = this.newDefaultOptions();\n\t\t\tDDynamicTextStyle.DEFAULT_OPTIONS = result;\n\t\t}\n\t\treturn result;\n\t}\n\n\tprotected newDefaultOptions(): Required<DDynamicTextStyleOptions> {\n\t\tconst theme = DThemes.getInstance().get(\"DBase\") as DThemeFont;\n\t\treturn {\n\t\t\talign: \"left\",\n\t\t\tfontFamily: theme.getFontFamilly(),\n\t\t\tfontSize: theme.getFontSize(),\n\t\t\tfontStyle: \"normal\",\n\t\t\tfontVariant: \"normal\",\n\t\t\tfontWeight: \"normal\",\n\t\t\tfill: theme.getColor(new DBaseStateSetImpl()),\n\t\t\tclipping: true,\n\t\t\tfitting: false,\n\t\t\twordWrap: DDynamicTextStyleWordWrap.NONE,\n\t\t\tlineHeight: theme.getLineHeight()\n\t\t};\n\t}\n\n\tget id(): number {\n\t\treturn this._id;\n\t}\n\n\tget idApproved(): number {\n\t\treturn this._idApproved;\n\t}\n\n\tget fontId(): string {\n\t\tthis.update();\n\t\treturn this._fontId;\n\t}\n\n\tget fontIdFontSize(): number {\n\t\tthis.update();\n\t\treturn this._fontSizeFitted;\n\t}\n\n\tget fontIdApproved(): string {\n\t\treturn this._fontIdApproved;\n\t}\n\n\tget fill(): number {\n\t\treturn this._fill;\n\t}\n\n\tset fill(fill: number) {\n\t\tif (this._fill !== fill) {\n\t\t\tthis._fill = fill;\n\t\t\tthis.onChange();\n\t\t}\n\t}\n\n\tprotected onChange(): void {\n\t\tthis._id += 1;\n\t\tthis._onChange();\n\t}\n\n\tget fillApproved(): number {\n\t\treturn this._fillApproved;\n\t}\n\n\tapprove(): void {\n\t\tthis.update();\n\t\tthis._idApproved = this._id;\n\t\tthis._fontIdApproved = this._fontId;\n\t\tthis._fillApproved = this._fill;\n\t}\n\n\tget fontFamily(): string {\n\t\treturn this._fontFamily;\n\t}\n\n\tset fontFamily(fontFamily: string) {\n\t\tif (this._fontFamily !== fontFamily) {\n\t\t\tthis._fontFamily = fontFamily;\n\t\t\tthis.onChange();\n\t\t}\n\t}\n\n\tget fontSize(): number {\n\t\treturn this._fontSize;\n\t}\n\n\tset fontSize(fontSize: number) {\n\t\tif (this._fontSize !== fontSize) {\n\t\t\tthis._fontSize = fontSize;\n\t\t\tthis._fontSizeFitted = fontSize;\n\t\t\tthis._lineHeightFitted = this._lineHeight;\n\t\t\tthis._isFontFitted = false;\n\t\t\tthis.onChange();\n\t\t}\n\t}\n\n\tget fontSizeFitted(): number {\n\t\treturn this._fontSizeFitted;\n\t}\n\n\tget isFontFitted(): boolean {\n\t\treturn this._isFontFitted;\n\t}\n\n\tget fontStyle(): DFontStyle {\n\t\treturn this._fontStyle;\n\t}\n\n\tset fontStyle(fontStyle: DFontStyle) {\n\t\tif (this._fontStyle !== fontStyle) {\n\t\t\tthis._fontStyle = fontStyle;\n\t\t\tthis.onChange();\n\t\t}\n\t}\n\n\tget fontVariant(): DFontVariant {\n\t\treturn this._fontVariant;\n\t}\n\n\tset fontVariant(fontVariant: DFontVariant) {\n\t\tif (this._fontVariant !== fontVariant) {\n\t\t\tthis._fontVariant = fontVariant;\n\t\t\tthis.onChange();\n\t\t}\n\t}\n\n\tget fontWeight(): DFontWeight {\n\t\treturn this._fontWeight;\n\t}\n\n\tset fontWeight(fontWeight: DFontWeight) {\n\t\tif (this._fontWeight !== fontWeight) {\n\t\t\tthis._fontWeight = fontWeight;\n\t\t\tthis.onChange();\n\t\t}\n\t}\n\n\tprotected update(): void {\n\t\tif (this._fontIdId !== this._id) {\n\t\t\tthis._fontIdId = this._id;\n\t\t\tconst fontIdFontSize = this._fitting ? this._fontSizeFitted : this._fontSize;\n\t\t\tthis._fontIdFontSize = fontIdFontSize;\n\t\t\tthis._fontId = this.toFontId(fontIdFontSize);\n\t\t}\n\t}\n\n\ttoFontId(fontSize: number): string {\n\t\treturn `${this._fontStyle} ${this._fontVariant} ${this._fontWeight} ${fontSize}px ${this._fontFamily}`;\n\t}\n\n\tget clipping(): boolean {\n\t\treturn this._clipping;\n\t}\n\n\tset clipping(clipping: boolean) {\n\t\tif (this._clipping !== clipping) {\n\t\t\tthis._clipping = clipping;\n\t\t\tthis.onChange();\n\t\t}\n\t}\n\n\tget fitting(): boolean {\n\t\treturn this._fitting;\n\t}\n\n\tset fitting(fitting: boolean) {\n\t\tif (this._fitting !== fitting) {\n\t\t\tthis._fitting = fitting;\n\t\t\tthis.onChange();\n\t\t}\n\t}\n\n\tget wordWrap(): DDynamicTextStyleWordWrap {\n\t\treturn this._wordWrap;\n\t}\n\n\tset wordWrap(wordWrap: DDynamicTextStyleWordWrap) {\n\t\tif (this._wordWrap !== wordWrap) {\n\t\t\tthis._wordWrap = wordWrap;\n\t\t\tthis.onChange();\n\t\t}\n\t}\n\n\tget lineHeight(): number {\n\t\treturn this._lineHeight;\n\t}\n\n\tset lineHeight(lineHeight: number) {\n\t\tif (this._lineHeight !== lineHeight) {\n\t\t\tthis._lineHeight = lineHeight;\n\t\t\tthis._fontSizeFitted = this._fontSize;\n\t\t\tthis._lineHeightFitted = lineHeight;\n\t\t\tthis._isFontFitted = false;\n\t\t\tthis.onChange();\n\t\t}\n\t}\n\n\tget lineHeightFitted(): number {\n\t\treturn this._lineHeightFitted;\n\t}\n\n\tset lineHeightFitted(lineHeightFitted: number) {\n\t\tif (this._lineHeightFitted !== lineHeightFitted) {\n\t\t\tthis._lineHeightFitted = lineHeightFitted;\n\t\t\tthis.onChange();\n\t\t}\n\t}\n\n\tfit(fontSize: number, lineHeight: number): boolean {\n\t\tlet isChanged = false;\n\t\tif (fontSize < this._fontSizeFitted) {\n\t\t\tthis._fontSizeFitted = fontSize;\n\t\t\tisChanged = true;\n\t\t}\n\t\tif (this._lineHeightFitted !== lineHeight) {\n\t\t\tthis._lineHeightFitted = lineHeight;\n\t\t\tisChanged = true;\n\t\t}\n\t\tif (this._isFontFitted !== true) {\n\t\t\tthis._isFontFitted = true;\n\t\t\tisChanged = true;\n\t\t}\n\t\tif (isChanged) {\n\t\t\tthis.onChange();\n\t\t}\n\t\treturn isChanged;\n\t}\n\n\tunfit(): boolean {\n\t\tlet isChanged = false;\n\t\tif (this._isFontFitted !== false) {\n\t\t\tthis._isFontFitted = false;\n\t\t\tisChanged = true;\n\t\t}\n\t\tif (this._fontSizeFitted !== this._fontSize) {\n\t\t\tthis._fontSizeFitted = this._fontSize;\n\t\t\tisChanged = true;\n\t\t}\n\t\tif (this._lineHeightFitted !== this._lineHeight) {\n\t\t\tthis._lineHeightFitted = this._lineHeight;\n\t\t\tisChanged = true;\n\t\t}\n\t\tif (isChanged) {\n\t\t\tthis.onChange();\n\t\t}\n\t\treturn isChanged;\n\t}\n}\n"]}
@@ -9,6 +9,7 @@ import { DBase } from "./d-base";
9
9
  import { DDynamicTextGeometry } from "./d-dynamic-text-geometry";
10
10
  import { DDynamicTextStyle } from "./d-dynamic-text-style";
11
11
  import { DDynamicTextStyleWordWrap } from "./d-dynamic-text-style-word-wrap";
12
+ import { UtilFont } from "./util/util-font";
12
13
  var DDynamicText = /** @class */ (function (_super) {
13
14
  __extends(DDynamicText, _super);
14
15
  function DDynamicText(text, options) {
@@ -27,8 +28,9 @@ var DDynamicText = /** @class */ (function (_super) {
27
28
  _this._atlasRevisionUpdated = 0;
28
29
  _this._width = 0;
29
30
  _this._height = 0;
30
- _this._clipping = {
31
- enable: false,
31
+ _this._modifier = {
32
+ clipping: false,
33
+ fitting: false,
32
34
  wordWrap: DDynamicTextStyleWordWrap.NONE,
33
35
  width: 0,
34
36
  height: 0,
@@ -52,13 +54,13 @@ var DDynamicText = /** @class */ (function (_super) {
52
54
  this._textApproved = text;
53
55
  var fontId = style.fontId;
54
56
  var fontIdApproved = style.fontIdApproved;
55
- var fontSize = style.fontSize;
57
+ var fontIdFontSize = style.fontIdFontSize;
56
58
  var fill = style.fill;
57
59
  var fillApproved = style.fillApproved;
58
60
  style.approve();
59
61
  var atlases = layer.getDynamicFontAtlases();
60
62
  if (text !== textApproved || fontId !== fontIdApproved || fill !== fillApproved) {
61
- atlases.add(fontId, fontSize, fill, text);
63
+ atlases.add(fontId, fontIdFontSize, fill, text);
62
64
  atlases.remove(fontIdApproved, fillApproved, textApproved);
63
65
  }
64
66
  }
@@ -71,9 +73,11 @@ var DDynamicText = /** @class */ (function (_super) {
71
73
  set: function (text) {
72
74
  if (this._text !== text) {
73
75
  this._text = text;
74
- this._isDirty = true;
75
- this._isGeometryDirty = true;
76
- this.update_();
76
+ if (!this._style.unfit()) {
77
+ this._isDirty = true;
78
+ this._isGeometryDirty = true;
79
+ this.update_();
80
+ }
77
81
  }
78
82
  },
79
83
  enumerable: false,
@@ -128,13 +132,14 @@ var DDynamicText = /** @class */ (function (_super) {
128
132
  configurable: true
129
133
  });
130
134
  DDynamicText.prototype.update = function () {
135
+ var _this = this;
131
136
  this.update_();
137
+ var style = this._style;
132
138
  var atlas = this._atlas;
133
139
  if (atlas == null) {
134
140
  var layer = DApplications.getLayer(this);
135
141
  if (layer) {
136
- var style_1 = this._style;
137
- atlas = layer.getDynamicFontAtlases().get(style_1.fontId, style_1.fill);
142
+ atlas = layer.getDynamicFontAtlases().get(style.fontId, style.fill);
138
143
  if (atlas != null) {
139
144
  this._atlasRevisionUpdated = atlas.getRevisionUpdate();
140
145
  this._atlas = atlas;
@@ -150,50 +155,68 @@ var DDynamicText = /** @class */ (function (_super) {
150
155
  this._isGeometryDirty = true;
151
156
  }
152
157
  }
153
- var style = this._style;
154
- var clipping = this._clipping;
155
- if (this.updateClipping(style, clipping)) {
158
+ var modifier = this._modifier;
159
+ if (this.updateClipping(style, modifier)) {
156
160
  this._isGeometryDirty = true;
157
161
  }
158
162
  if (this._isGeometryDirty) {
159
163
  this._isGeometryDirty = false;
160
- this.geometry.update(this._text, atlas, clipping);
164
+ var geometry = this.geometry;
165
+ geometry.update(this._text, atlas, modifier);
166
+ if (modifier.fitting && !style.isFontFitted && geometry.scaled) {
167
+ var oldScale = geometry.scale;
168
+ var oldFontSize = style.fontSize;
169
+ var newFontId = style.toFontId(Math.ceil(oldFontSize * oldScale * 1000) / 1000);
170
+ var newFontSize = UtilFont.toSize(newFontId);
171
+ var newScale = newFontSize / oldFontSize;
172
+ var newLineHeight = style.lineHeight * newScale;
173
+ if (style.fit(newFontSize, newLineHeight)) {
174
+ setTimeout(function () {
175
+ DApplications.update(_this);
176
+ }, 0);
177
+ }
178
+ }
161
179
  }
162
180
  };
163
- DDynamicText.prototype.updateClipping = function (style, clipping) {
181
+ DDynamicText.prototype.updateClipping = function (style, modifier) {
164
182
  var isChanged = false;
165
183
  var styleClipping = style.clipping;
166
- if (clipping.enable !== styleClipping) {
167
- clipping.enable = styleClipping;
184
+ if (modifier.clipping !== styleClipping) {
185
+ modifier.clipping = styleClipping;
186
+ isChanged = true;
187
+ }
188
+ var styleFitting = style.fitting;
189
+ if (modifier.fitting !== styleFitting) {
190
+ modifier.fitting = styleFitting;
168
191
  isChanged = true;
169
192
  }
170
193
  var styleWordWrap = style.wordWrap;
171
- if (clipping.wordWrap !== styleWordWrap) {
172
- clipping.wordWrap = styleWordWrap;
194
+ if (modifier.wordWrap !== styleWordWrap) {
195
+ modifier.wordWrap = styleWordWrap;
173
196
  isChanged = true;
174
197
  }
175
- var styleLineHeight = style.lineHeight;
176
- if (clipping.lineHeight !== styleLineHeight) {
177
- clipping.lineHeight = styleLineHeight;
198
+ var styleLineHeight = styleFitting ? style.lineHeightFitted : style.lineHeight;
199
+ if (modifier.lineHeight !== styleLineHeight) {
200
+ modifier.lineHeight = styleLineHeight;
178
201
  isChanged = true;
179
202
  }
180
- if (styleClipping || styleWordWrap) {
203
+ if (styleClipping || styleFitting || styleWordWrap) {
181
204
  var parent_1 = this.parent;
182
205
  if (parent_1 instanceof DBase) {
183
206
  var width = parent_1.width -
184
207
  parent_1.padding.getLeft() -
185
208
  parent_1.padding.getRight() -
186
- clipping.delta.width;
187
- if (clipping.width !== width) {
188
- clipping.width = width;
209
+ modifier.delta.width;
210
+ if (modifier.width !== width) {
211
+ modifier.width = width;
189
212
  isChanged = true;
190
213
  }
191
214
  var height = parent_1.height -
192
215
  parent_1.padding.getTop() -
193
216
  parent_1.padding.getBottom() -
194
- clipping.delta.height;
195
- if (clipping.height !== height) {
196
- clipping.height = height;
217
+ modifier.delta.height;
218
+ if (modifier.height !== height) {
219
+ modifier.height = height;
197
220
  isChanged = true;
198
221
  }
199
222
  }
@@ -201,7 +224,7 @@ var DDynamicText = /** @class */ (function (_super) {
201
224
  return isChanged;
202
225
  };
203
226
  DDynamicText.prototype.setClippingDelta = function (width, height) {
204
- var delta = this._clipping.delta;
227
+ var delta = this._modifier.delta;
205
228
  delta.width = width;
206
229
  delta.height = height;
207
230
  };