@diagrammo/dgmo 0.46.0 → 0.47.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 (232) hide show
  1. package/dist/advanced.d.cts +3 -855
  2. package/dist/advanced.d.ts +3 -855
  3. package/dist/advanced.js +541 -70107
  4. package/dist/analyzer-UYKBXAKR.js +15 -0
  5. package/dist/auto.cjs +1 -1
  6. package/dist/auto.js +1 -1
  7. package/dist/auto.mjs +1 -1
  8. package/dist/block.js +83 -69417
  9. package/dist/calculator-LDYQCDDY.js +11 -0
  10. package/dist/charts-d3-QOZHKTCT.js +25 -0
  11. package/dist/chunk-2DXMZRWJ.js +800 -0
  12. package/dist/chunk-2LACINWN.js +786 -0
  13. package/dist/chunk-33LCUH4H.js +893 -0
  14. package/dist/chunk-3CIOJ5YJ.js +35 -0
  15. package/dist/chunk-3HDBAXF5.js +86 -0
  16. package/dist/chunk-3JLKYGBQ.js +290 -0
  17. package/dist/chunk-3MQQNXPD.js +415 -0
  18. package/dist/chunk-3R5POCTZ.js +967 -0
  19. package/dist/chunk-3SMGIJDD.js +112 -0
  20. package/dist/chunk-44CM72SQ.js +409 -0
  21. package/dist/chunk-4GRI7MEB.js +1604 -0
  22. package/dist/chunk-4OHACBGX.js +606 -0
  23. package/dist/chunk-5DH3KYFH.js +21 -0
  24. package/dist/chunk-5MLYVTYM.js +76 -0
  25. package/dist/chunk-5QXL4NYS.js +553 -0
  26. package/dist/chunk-5WRI5ZAA.js +31 -0
  27. package/dist/chunk-6EK55ART.js +117 -0
  28. package/dist/chunk-6FZYCKXB.js +2065 -0
  29. package/dist/chunk-6HO5ZTXK.js +277 -0
  30. package/dist/chunk-6KFWC4CO.js +7 -0
  31. package/dist/chunk-6MTWIQVO.js +121 -0
  32. package/dist/chunk-6NYWYNBI.js +329 -0
  33. package/dist/chunk-6SM5NJQH.js +620 -0
  34. package/dist/chunk-725LDASD.js +422 -0
  35. package/dist/chunk-76OWZ3BA.js +130 -0
  36. package/dist/chunk-7JEGTRLD.js +338 -0
  37. package/dist/chunk-A44USUV7.js +923 -0
  38. package/dist/chunk-A4GOY3PE.js +25 -0
  39. package/dist/chunk-A4VFQH5G.js +251 -0
  40. package/dist/chunk-AELOBFW5.js +375 -0
  41. package/dist/chunk-AN2MOO5T.js +522 -0
  42. package/dist/chunk-BMR4CIEO.js +41 -0
  43. package/dist/chunk-BS7SV7C3.js +51 -0
  44. package/dist/chunk-BUPDIHML.js +613 -0
  45. package/dist/chunk-BUVJFRPY.js +887 -0
  46. package/dist/chunk-C3Z4DX3V.js +112 -0
  47. package/dist/chunk-CI2G3OEB.js +1818 -0
  48. package/dist/chunk-CKNVO24D.js +54 -0
  49. package/dist/chunk-CUVHQHZ7.js +391 -0
  50. package/dist/chunk-CXK4DZH3.js +114 -0
  51. package/dist/chunk-DKEPS5LH.js +315 -0
  52. package/dist/chunk-DU7W62N5.js +487 -0
  53. package/dist/chunk-DZAQBW35.js +751 -0
  54. package/dist/chunk-EB6FPQUP.js +316 -0
  55. package/dist/chunk-EMS2SK26.js +376 -0
  56. package/dist/chunk-ERLBPDGU.js +510 -0
  57. package/dist/chunk-EVCVDTXE.js +732 -0
  58. package/dist/chunk-FCIIHT24.js +384 -0
  59. package/dist/chunk-FFUN5D66.js +97 -0
  60. package/dist/chunk-FITOLXSX.js +714 -0
  61. package/dist/chunk-FMDSF3OV.js +68 -0
  62. package/dist/chunk-FNB3PNGF.js +410 -0
  63. package/dist/chunk-G2H74XJZ.js +2104 -0
  64. package/dist/chunk-GMR5MFHJ.js +339 -0
  65. package/dist/chunk-H6PI3KJT.js +305 -0
  66. package/dist/chunk-I46X5VUA.js +59 -0
  67. package/dist/chunk-I5IGB56C.js +255 -0
  68. package/dist/chunk-IH6ZMVQ5.js +3950 -0
  69. package/dist/chunk-IJZFN3HM.js +463 -0
  70. package/dist/chunk-IPWPWM6R.js +3079 -0
  71. package/dist/chunk-IYULMRBE.js +23 -0
  72. package/dist/chunk-IZMRON6C.js +167 -0
  73. package/dist/chunk-J5FIXQRT.js +813 -0
  74. package/dist/chunk-JED6ZDEE.js +73 -0
  75. package/dist/chunk-JEUJOX5X.js +136 -0
  76. package/dist/chunk-JM4LEPY3.js +436 -0
  77. package/dist/chunk-L3UHP6TD.js +101 -0
  78. package/dist/chunk-L66GEFB6.js +524 -0
  79. package/dist/chunk-LIOHW36Z.js +469 -0
  80. package/dist/chunk-LP7EC4MI.js +16 -0
  81. package/dist/chunk-MITI6NOL.js +548 -0
  82. package/dist/chunk-MO5YHHMQ.js +168 -0
  83. package/dist/chunk-MZSBFAPJ.js +885 -0
  84. package/dist/chunk-NNAAJVBU.js +9 -0
  85. package/dist/chunk-NOTA6TEI.js +47 -0
  86. package/dist/chunk-NURGB5Z4.js +335 -0
  87. package/dist/chunk-NX4EQS3U.js +1062 -0
  88. package/dist/chunk-NXMESY4J.js +1 -0
  89. package/dist/chunk-OJR3MQYV.js +1458 -0
  90. package/dist/chunk-OURHMODR.js +454 -0
  91. package/dist/chunk-P235SVAH.js +1057 -0
  92. package/dist/chunk-P4RH4OSP.js +1038 -0
  93. package/dist/chunk-P6T66CCZ.js +226 -0
  94. package/dist/chunk-PBAHEPLQ.js +223 -0
  95. package/dist/chunk-PBHE5UG6.js +1530 -0
  96. package/dist/chunk-PDKUANDZ.js +35 -0
  97. package/dist/chunk-PWIHZ6NJ.js +296 -0
  98. package/dist/chunk-QEBUY5NY.js +1685 -0
  99. package/dist/chunk-QLCCJEJI.js +253 -0
  100. package/dist/chunk-QOOUC2J5.js +52 -0
  101. package/dist/chunk-QYTPPDAO.js +402 -0
  102. package/dist/chunk-R3XI2VC7.js +801 -0
  103. package/dist/chunk-RCERWOJR.js +154 -0
  104. package/dist/chunk-RJE5JTVK.js +362 -0
  105. package/dist/chunk-RTLBSQ3G.js +1155 -0
  106. package/dist/chunk-RUNNI6VE.js +448 -0
  107. package/dist/chunk-RVMRZAPB.js +354 -0
  108. package/dist/chunk-RYEGFMUO.js +955 -0
  109. package/dist/chunk-RZCF2VVM.js +528 -0
  110. package/dist/chunk-SML67VPV.js +1025 -0
  111. package/dist/chunk-SQ7IY53Q.js +44 -0
  112. package/dist/chunk-SQAG3UXH.js +161 -0
  113. package/dist/chunk-SRTU6HMQ.js +1851 -0
  114. package/dist/chunk-T2OE3YQB.js +550 -0
  115. package/dist/chunk-T3UBLACL.js +299 -0
  116. package/dist/chunk-TLVIHFRO.js +296 -0
  117. package/dist/chunk-TYS6CSS5.js +52 -0
  118. package/dist/chunk-U6EQI3U6.js +130 -0
  119. package/dist/chunk-UJ4FJLBF.js +86 -0
  120. package/dist/chunk-ULOEATBZ.js +347 -0
  121. package/dist/chunk-UNCCZ3NU.js +127 -0
  122. package/dist/chunk-USZW2HHU.js +197 -0
  123. package/dist/chunk-UWN33VNX.js +1610 -0
  124. package/dist/chunk-UZ7EZW3B.js +40 -0
  125. package/dist/chunk-VOKGH627.js +37 -0
  126. package/dist/chunk-WBRZJOEC.js +204 -0
  127. package/dist/chunk-WCSOJFU3.js +380 -0
  128. package/dist/chunk-WCT3NYCV.js +160 -0
  129. package/dist/chunk-WVAJFAIA.js +529 -0
  130. package/dist/chunk-X5LCYCL5.js +394 -0
  131. package/dist/chunk-XAKEUMEJ.js +1256 -0
  132. package/dist/chunk-Y2ZE3MSG.js +590 -0
  133. package/dist/chunk-Y3J7VR52.js +646 -0
  134. package/dist/chunk-Y5QGVTVC.js +33 -0
  135. package/dist/chunk-YAA6IID3.js +548 -0
  136. package/dist/chunk-YGJTDXVR.js +692 -0
  137. package/dist/chunk-YRYKTYMQ.js +186 -0
  138. package/dist/chunk-YYVTBZZC.js +61 -0
  139. package/dist/chunk-Z5CGSFJB.js +647 -0
  140. package/dist/chunk-Z72XRXD4.js +787 -0
  141. package/dist/chunk-ZGR7ULFJ.js +978 -0
  142. package/dist/chunk-ZJEL4H2R.js +851 -0
  143. package/dist/chunk-ZO27FGJS.js +554 -0
  144. package/dist/collapse-CLPJD2RL.js +11 -0
  145. package/dist/collapse-SLINJQW6.js +9 -0
  146. package/dist/collapse-ZWUFFCK2.js +9 -0
  147. package/dist/compute-G55RG53N.js +8 -0
  148. package/dist/dgmo-router-DZCIDUO5.js +73 -0
  149. package/dist/dimensions-J3FHIMJ6.js +22 -0
  150. package/dist/element.cjs +1 -1
  151. package/dist/element.js +1 -1
  152. package/dist/element.mjs +1 -1
  153. package/dist/flowchart-parser-ZNSKIBVR.js +21 -0
  154. package/dist/flowchart-renderer-ZAEOL4DX.js +35 -0
  155. package/dist/index.cjs +3 -3
  156. package/dist/index.d.cts +3 -469
  157. package/dist/index.d.ts +3 -469
  158. package/dist/index.js +137 -69685
  159. package/dist/layout-46N4JJYK.js +17 -0
  160. package/dist/layout-5RA6QWR6.js +26 -0
  161. package/dist/layout-5T6RH5M6.js +14 -0
  162. package/dist/layout-7QXCNOVS.js +13 -0
  163. package/dist/layout-EE6GE46Y.js +17 -0
  164. package/dist/layout-G23F7LDH.js +9 -0
  165. package/dist/layout-HRBZPFCN.js +23 -0
  166. package/dist/layout-HWDSRX5E.js +20 -0
  167. package/dist/layout-HYZPWAK5.js +18 -0
  168. package/dist/layout-N76NR4ZO.js +19 -0
  169. package/dist/layout-OB3RI63S.js +14 -0
  170. package/dist/layout-S2QBYSK2.js +15 -0
  171. package/dist/layout-UM5F4DJB.js +15 -0
  172. package/dist/layout-search-OYV77HHS.js +1655 -0
  173. package/dist/load-data-EHDDZ5ZS.js +8 -0
  174. package/dist/palettes-PRJ2RI6D.js +56 -0
  175. package/dist/parser-2MFP2H2E.js +11 -0
  176. package/dist/parser-3STE62GB.js +21 -0
  177. package/dist/parser-4FL2CMDG.js +18 -0
  178. package/dist/parser-4OGOBJJ4.js +13 -0
  179. package/dist/parser-6BTRLKRZ.js +15 -0
  180. package/dist/parser-AQETEVRW.js +21 -0
  181. package/dist/parser-CFZD5IBL.js +12 -0
  182. package/dist/parser-FUSKFGZN.js +16 -0
  183. package/dist/parser-I6KXEYFK.js +13 -0
  184. package/dist/parser-IXSZZQHY.js +18 -0
  185. package/dist/parser-JAL2HD4I.js +13 -0
  186. package/dist/parser-KNSQSKQO.js +20 -0
  187. package/dist/parser-N5O4IHUN.js +13 -0
  188. package/dist/parser-NGU3ETO6.js +16 -0
  189. package/dist/parser-NRAI6O25.js +19 -0
  190. package/dist/parser-O5J4VBII.js +11 -0
  191. package/dist/parser-OV7NOBW6.js +21 -0
  192. package/dist/parser-PQ3POX45.js +23 -0
  193. package/dist/parser-TFZFBVWN.js +11 -0
  194. package/dist/parser-TRTHDFPP.js +18 -0
  195. package/dist/parser-VQP2UJ6W.js +11 -0
  196. package/dist/parser-XDVELHRK.js +13 -0
  197. package/dist/parser-XKRP7QKP.js +11 -0
  198. package/dist/parser-Y6WTBU76.js +14 -0
  199. package/dist/parser-ZSDPZYQP.js +12 -0
  200. package/dist/renderer-2XQQQ6QR.js +28 -0
  201. package/dist/renderer-5NDVNDAZ.js +26 -0
  202. package/dist/renderer-6EEZHMH4.js +26 -0
  203. package/dist/renderer-6W5462RB.js +43 -0
  204. package/dist/renderer-7MVLWWQD.js +22 -0
  205. package/dist/renderer-AWWAF6XD.js +33 -0
  206. package/dist/renderer-BYCNMBF7.js +34 -0
  207. package/dist/renderer-CLJHQPBJ.js +29 -0
  208. package/dist/renderer-GHPZMFU2.js +15 -0
  209. package/dist/renderer-JGBKUCZD.js +16 -0
  210. package/dist/renderer-KQB7UGDS.js +19 -0
  211. package/dist/renderer-PGX2TKVS.js +24 -0
  212. package/dist/renderer-QIWVHWZO.js +15 -0
  213. package/dist/renderer-RPOA5YPZ.js +35 -0
  214. package/dist/renderer-SMIBCRVB.js +24 -0
  215. package/dist/renderer-T7YKC5VP.js +28 -0
  216. package/dist/renderer-TOCOVLHS.js +37 -0
  217. package/dist/renderer-UWA5XS74.js +39 -0
  218. package/dist/renderer-VACVQYML.js +25 -0
  219. package/dist/renderer-W4M6QLIJ.js +37 -0
  220. package/dist/renderer-WZRREQ2P.js +23 -0
  221. package/dist/renderer-YY2OSF6E.js +27 -0
  222. package/dist/renderer-Z7I3W2PP.js +24 -0
  223. package/dist/renderer-ZGNTUWC4.js +22 -0
  224. package/dist/renderer-ZTR3DER3.js +19 -0
  225. package/dist/renderer-radial-C32GPJQ7.js +21 -0
  226. package/dist/resolver-NOAA7ID7.js +13 -0
  227. package/dist/state-collapse-HCGD6IVJ.js +8 -0
  228. package/dist/state-parser-Z2V23ATR.js +18 -0
  229. package/dist/state-renderer-RFYHSP4K.js +34 -0
  230. package/dist/themes-1-CuKpeH.d.cts +908 -0
  231. package/dist/themes-1-CuKpeH.d.ts +908 -0
  232. package/package.json +1 -1
@@ -0,0 +1,186 @@
1
+ // src/utils/time-ticks.ts
2
+ var MONTH_ABBR = [
3
+ "Jan",
4
+ "Feb",
5
+ "Mar",
6
+ "Apr",
7
+ "May",
8
+ "Jun",
9
+ "Jul",
10
+ "Aug",
11
+ "Sep",
12
+ "Oct",
13
+ "Nov",
14
+ "Dec"
15
+ ];
16
+ function fractionalYearToDate(frac) {
17
+ const year = Math.floor(frac);
18
+ const remainder = frac - year;
19
+ const monthFrac = remainder * 12;
20
+ const month = Math.floor(monthFrac);
21
+ const monthRemainder = remainder - month / 12;
22
+ const dayFrac = monthRemainder * 365;
23
+ const day = Math.floor(dayFrac) + 1;
24
+ const dayRemainder = dayFrac - Math.floor(dayFrac);
25
+ const hourFrac = dayRemainder * 24;
26
+ const hour = Math.floor(hourFrac);
27
+ const minuteFrac = (hourFrac - hour) * 60;
28
+ const minute = Math.floor(minuteFrac);
29
+ const second = Math.round((minuteFrac - minute) * 60);
30
+ return new Date(year, month, day, hour, minute, second);
31
+ }
32
+ function dateToFractionalYear(d) {
33
+ return d.getFullYear() + d.getMonth() / 12 + (d.getDate() - 1) / 365 + d.getHours() / 8760 + d.getMinutes() / 525600 + d.getSeconds() / 31536e3;
34
+ }
35
+ function formatYearTick(y) {
36
+ return y < 0 ? `${-y} BCE` : String(y);
37
+ }
38
+ function computeTimeTicks(domainMin, domainMax, scale, boundaryStart, boundaryEnd, boundaryStartLabel, boundaryEndLabel) {
39
+ const minYear = Math.floor(domainMin);
40
+ const maxYear = Math.floor(domainMax);
41
+ const span = domainMax - domainMin;
42
+ let ticks = [];
43
+ const firstYear = Math.ceil(domainMin);
44
+ const lastYear = Math.floor(domainMax);
45
+ if (lastYear >= firstYear + 1) {
46
+ const yearSpan = lastYear - firstYear;
47
+ let step = 1;
48
+ if (yearSpan > 800) step = 200;
49
+ else if (yearSpan > 400) step = 100;
50
+ else if (yearSpan > 160) step = 50;
51
+ else if (yearSpan > 80) step = 20;
52
+ else if (yearSpan > 40) step = 10;
53
+ else if (yearSpan > 20) step = 5;
54
+ else if (yearSpan > 10) step = 2;
55
+ const alignedFirst = Math.ceil(firstYear / step) * step;
56
+ for (let y = alignedFirst; y <= lastYear; y += step) {
57
+ ticks.push({ pos: scale(y), label: formatYearTick(y) });
58
+ }
59
+ } else if (span > 0.25) {
60
+ const crossesYear = maxYear > minYear;
61
+ for (let y = minYear; y <= maxYear + 1; y++) {
62
+ for (let m = 1; m <= 12; m++) {
63
+ const val = y + (m - 1) / 12;
64
+ if (val > domainMax) break;
65
+ if (val >= domainMin) {
66
+ const abbr = MONTH_ABBR[m - 1];
67
+ ticks.push({
68
+ pos: scale(val),
69
+ label: crossesYear ? `${abbr} '${String(y).slice(-2)}` : abbr
70
+ });
71
+ }
72
+ }
73
+ }
74
+ } else if (span <= 114e-7) {
75
+ let stepSec = 5;
76
+ const spanSec = span * 31536e3;
77
+ if (spanSec > 180) stepSec = 30;
78
+ else if (spanSec > 60) stepSec = 15;
79
+ else if (spanSec > 30) stepSec = 10;
80
+ const startDate = fractionalYearToDate(domainMin);
81
+ startDate.setSeconds(
82
+ Math.floor(startDate.getSeconds() / stepSec) * stepSec,
83
+ 0
84
+ );
85
+ while (true) {
86
+ const val = dateToFractionalYear(startDate);
87
+ if (val > domainMax) break;
88
+ if (val >= domainMin) {
89
+ const hh = String(startDate.getHours()).padStart(2, "0");
90
+ const mm = String(startDate.getMinutes()).padStart(2, "0");
91
+ const ss = String(startDate.getSeconds()).padStart(2, "0");
92
+ ticks.push({ pos: scale(val), label: `${hh}:${mm}:${ss}` });
93
+ }
94
+ startDate.setSeconds(startDate.getSeconds() + stepSec);
95
+ }
96
+ } else if (span <= 685e-6) {
97
+ let stepMin = 5;
98
+ const spanHours = span * 8760;
99
+ if (spanHours > 3) stepMin = 30;
100
+ else if (spanHours > 1) stepMin = 15;
101
+ else if (spanHours > 0.5) stepMin = 10;
102
+ const startDate = fractionalYearToDate(domainMin);
103
+ startDate.setMinutes(
104
+ Math.floor(startDate.getMinutes() / stepMin) * stepMin,
105
+ 0,
106
+ 0
107
+ );
108
+ while (true) {
109
+ const val = dateToFractionalYear(startDate);
110
+ if (val > domainMax) break;
111
+ if (val >= domainMin) {
112
+ const hh = String(startDate.getHours()).padStart(2, "0");
113
+ const mm = String(startDate.getMinutes()).padStart(2, "0");
114
+ ticks.push({ pos: scale(val), label: `${hh}:${mm}` });
115
+ }
116
+ startDate.setMinutes(startDate.getMinutes() + stepMin);
117
+ }
118
+ } else if (span <= 822e-5) {
119
+ let stepHour = 1;
120
+ const spanHours = span * 8760;
121
+ if (spanHours > 48) stepHour = 6;
122
+ else if (spanHours > 24) stepHour = 3;
123
+ else if (spanHours > 12) stepHour = 2;
124
+ const singleDay = spanHours <= 24;
125
+ const startDate = fractionalYearToDate(domainMin);
126
+ startDate.setHours(
127
+ Math.floor(startDate.getHours() / stepHour) * stepHour,
128
+ 0,
129
+ 0,
130
+ 0
131
+ );
132
+ while (true) {
133
+ const val = dateToFractionalYear(startDate);
134
+ if (val > domainMax) break;
135
+ if (val >= domainMin) {
136
+ const hh = String(startDate.getHours()).padStart(2, "0");
137
+ const mm = String(startDate.getMinutes()).padStart(2, "0");
138
+ if (singleDay) {
139
+ ticks.push({ pos: scale(val), label: `${hh}:${mm}` });
140
+ } else {
141
+ const mon = MONTH_ABBR[startDate.getMonth()];
142
+ const d = startDate.getDate();
143
+ ticks.push({ pos: scale(val), label: `${mon} ${d} ${hh}:${mm}` });
144
+ }
145
+ }
146
+ startDate.setHours(startDate.getHours() + stepHour);
147
+ }
148
+ } else {
149
+ for (let y = minYear; y <= maxYear + 1; y++) {
150
+ for (let m = 1; m <= 12; m++) {
151
+ for (const d of [1, 8, 15, 22]) {
152
+ const val = y + (m - 1) / 12 + (d - 1) / 365;
153
+ if (val > domainMax) break;
154
+ if (val >= domainMin) {
155
+ ticks.push({
156
+ pos: scale(val),
157
+ label: `${MONTH_ABBR[m - 1]} ${d}`
158
+ });
159
+ }
160
+ }
161
+ }
162
+ }
163
+ }
164
+ const collisionThreshold = 40;
165
+ if (boundaryStart !== void 0 && boundaryStartLabel) {
166
+ const boundaryPos = scale(boundaryStart);
167
+ ticks = ticks.filter(
168
+ (t) => Math.abs(t.pos - boundaryPos) >= collisionThreshold
169
+ );
170
+ ticks.unshift({ pos: boundaryPos, label: boundaryStartLabel });
171
+ }
172
+ if (boundaryEnd !== void 0 && boundaryEndLabel) {
173
+ const boundaryPos = scale(boundaryEnd);
174
+ ticks = ticks.filter(
175
+ (t) => Math.abs(t.pos - boundaryPos) >= collisionThreshold
176
+ );
177
+ ticks.push({ pos: boundaryPos, label: boundaryEndLabel });
178
+ }
179
+ return ticks;
180
+ }
181
+
182
+ export {
183
+ MONTH_ABBR,
184
+ computeTimeTicks
185
+ };
186
+ //# sourceMappingURL=chunk-YRYKTYMQ.js.map
@@ -0,0 +1,61 @@
1
+ // src/utils/scaling.ts
2
+ var DEFAULT_MIN_SCALE_FACTOR = 0.5;
3
+ var TEXT_FLOOR = 9;
4
+ var ScaleContext = class _ScaleContext {
5
+ factor;
6
+ isBelowFloor;
7
+ constructor(factor, minScaleFactor) {
8
+ this.factor = factor;
9
+ this.isBelowFloor = factor <= minScaleFactor;
10
+ }
11
+ static from(containerSize, idealSize, minScaleFactor = DEFAULT_MIN_SCALE_FACTOR) {
12
+ if (idealSize <= 0) return _ScaleContext.identity();
13
+ const raw = containerSize / idealSize;
14
+ const clamped = Math.max(Math.min(raw, 1), minScaleFactor);
15
+ return new _ScaleContext(clamped, minScaleFactor);
16
+ }
17
+ /**
18
+ * Fit content into a bounding box, scaling by whichever dimension is more
19
+ * constraining (the smaller of the width- and height-fit ratios) so the
20
+ * diagram never overflows the canvas in either axis. Like {@link from}, the
21
+ * factor is clamped to `[minScaleFactor, 1]` (content is never enlarged, and
22
+ * never shrunk past the readability floor).
23
+ */
24
+ static fromBox(containerWidth, idealWidth, containerHeight, idealHeight, minScaleFactor = DEFAULT_MIN_SCALE_FACTOR) {
25
+ const wRaw = idealWidth > 0 ? containerWidth / idealWidth : 1;
26
+ const hRaw = idealHeight > 0 ? containerHeight / idealHeight : 1;
27
+ const raw = Math.min(wRaw, hRaw);
28
+ const clamped = Math.max(Math.min(raw, 1), minScaleFactor);
29
+ return new _ScaleContext(clamped, minScaleFactor);
30
+ }
31
+ /**
32
+ * Build a context from an explicit raw factor (clamped to
33
+ * `[minScaleFactor, 1]`). Used to refine a fit iteratively: layout scaling is
34
+ * non-linear (gaps shrink faster than floored text), so the first-pass factor
35
+ * can still overflow — re-measure the laid-out result and tighten.
36
+ */
37
+ static fromFactor(rawFactor, minScaleFactor = DEFAULT_MIN_SCALE_FACTOR) {
38
+ const clamped = Math.max(Math.min(rawFactor, 1), minScaleFactor);
39
+ return new _ScaleContext(clamped, minScaleFactor);
40
+ }
41
+ static identity() {
42
+ return new _ScaleContext(1, DEFAULT_MIN_SCALE_FACTOR);
43
+ }
44
+ aesthetic(value) {
45
+ if (this.factor >= 1) return value;
46
+ return value * this.factor ** 1.5;
47
+ }
48
+ structural(value) {
49
+ if (this.factor >= 1) return value;
50
+ return value * this.factor;
51
+ }
52
+ text(fontSize, floor = TEXT_FLOOR) {
53
+ if (this.factor >= 1) return fontSize;
54
+ return Math.max(fontSize * this.factor, floor);
55
+ }
56
+ };
57
+
58
+ export {
59
+ ScaleContext
60
+ };
61
+ //# sourceMappingURL=chunk-YYVTBZZC.js.map