@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.
- package/dist/advanced.d.cts +3 -855
- package/dist/advanced.d.ts +3 -855
- package/dist/advanced.js +541 -70107
- package/dist/analyzer-UYKBXAKR.js +15 -0
- package/dist/auto.cjs +1 -1
- package/dist/auto.js +1 -1
- package/dist/auto.mjs +1 -1
- package/dist/block.js +83 -69417
- package/dist/calculator-LDYQCDDY.js +11 -0
- package/dist/charts-d3-QOZHKTCT.js +25 -0
- package/dist/chunk-2DXMZRWJ.js +800 -0
- package/dist/chunk-2LACINWN.js +786 -0
- package/dist/chunk-33LCUH4H.js +893 -0
- package/dist/chunk-3CIOJ5YJ.js +35 -0
- package/dist/chunk-3HDBAXF5.js +86 -0
- package/dist/chunk-3JLKYGBQ.js +290 -0
- package/dist/chunk-3MQQNXPD.js +415 -0
- package/dist/chunk-3R5POCTZ.js +967 -0
- package/dist/chunk-3SMGIJDD.js +112 -0
- package/dist/chunk-44CM72SQ.js +409 -0
- package/dist/chunk-4GRI7MEB.js +1604 -0
- package/dist/chunk-4OHACBGX.js +606 -0
- package/dist/chunk-5DH3KYFH.js +21 -0
- package/dist/chunk-5MLYVTYM.js +76 -0
- package/dist/chunk-5QXL4NYS.js +553 -0
- package/dist/chunk-5WRI5ZAA.js +31 -0
- package/dist/chunk-6EK55ART.js +117 -0
- package/dist/chunk-6FZYCKXB.js +2065 -0
- package/dist/chunk-6HO5ZTXK.js +277 -0
- package/dist/chunk-6KFWC4CO.js +7 -0
- package/dist/chunk-6MTWIQVO.js +121 -0
- package/dist/chunk-6NYWYNBI.js +329 -0
- package/dist/chunk-6SM5NJQH.js +620 -0
- package/dist/chunk-725LDASD.js +422 -0
- package/dist/chunk-76OWZ3BA.js +130 -0
- package/dist/chunk-7JEGTRLD.js +338 -0
- package/dist/chunk-A44USUV7.js +923 -0
- package/dist/chunk-A4GOY3PE.js +25 -0
- package/dist/chunk-A4VFQH5G.js +251 -0
- package/dist/chunk-AELOBFW5.js +375 -0
- package/dist/chunk-AN2MOO5T.js +522 -0
- package/dist/chunk-BMR4CIEO.js +41 -0
- package/dist/chunk-BS7SV7C3.js +51 -0
- package/dist/chunk-BUPDIHML.js +613 -0
- package/dist/chunk-BUVJFRPY.js +887 -0
- package/dist/chunk-C3Z4DX3V.js +112 -0
- package/dist/chunk-CI2G3OEB.js +1818 -0
- package/dist/chunk-CKNVO24D.js +54 -0
- package/dist/chunk-CUVHQHZ7.js +391 -0
- package/dist/chunk-CXK4DZH3.js +114 -0
- package/dist/chunk-DKEPS5LH.js +315 -0
- package/dist/chunk-DU7W62N5.js +487 -0
- package/dist/chunk-DZAQBW35.js +751 -0
- package/dist/chunk-EB6FPQUP.js +316 -0
- package/dist/chunk-EMS2SK26.js +376 -0
- package/dist/chunk-ERLBPDGU.js +510 -0
- package/dist/chunk-EVCVDTXE.js +732 -0
- package/dist/chunk-FCIIHT24.js +384 -0
- package/dist/chunk-FFUN5D66.js +97 -0
- package/dist/chunk-FITOLXSX.js +714 -0
- package/dist/chunk-FMDSF3OV.js +68 -0
- package/dist/chunk-FNB3PNGF.js +410 -0
- package/dist/chunk-G2H74XJZ.js +2104 -0
- package/dist/chunk-GMR5MFHJ.js +339 -0
- package/dist/chunk-H6PI3KJT.js +305 -0
- package/dist/chunk-I46X5VUA.js +59 -0
- package/dist/chunk-I5IGB56C.js +255 -0
- package/dist/chunk-IH6ZMVQ5.js +3950 -0
- package/dist/chunk-IJZFN3HM.js +463 -0
- package/dist/chunk-IPWPWM6R.js +3079 -0
- package/dist/chunk-IYULMRBE.js +23 -0
- package/dist/chunk-IZMRON6C.js +167 -0
- package/dist/chunk-J5FIXQRT.js +813 -0
- package/dist/chunk-JED6ZDEE.js +73 -0
- package/dist/chunk-JEUJOX5X.js +136 -0
- package/dist/chunk-JM4LEPY3.js +436 -0
- package/dist/chunk-L3UHP6TD.js +101 -0
- package/dist/chunk-L66GEFB6.js +524 -0
- package/dist/chunk-LIOHW36Z.js +469 -0
- package/dist/chunk-LP7EC4MI.js +16 -0
- package/dist/chunk-MITI6NOL.js +548 -0
- package/dist/chunk-MO5YHHMQ.js +168 -0
- package/dist/chunk-MZSBFAPJ.js +885 -0
- package/dist/chunk-NNAAJVBU.js +9 -0
- package/dist/chunk-NOTA6TEI.js +47 -0
- package/dist/chunk-NURGB5Z4.js +335 -0
- package/dist/chunk-NX4EQS3U.js +1062 -0
- package/dist/chunk-NXMESY4J.js +1 -0
- package/dist/chunk-OJR3MQYV.js +1458 -0
- package/dist/chunk-OURHMODR.js +454 -0
- package/dist/chunk-P235SVAH.js +1057 -0
- package/dist/chunk-P4RH4OSP.js +1038 -0
- package/dist/chunk-P6T66CCZ.js +226 -0
- package/dist/chunk-PBAHEPLQ.js +223 -0
- package/dist/chunk-PBHE5UG6.js +1530 -0
- package/dist/chunk-PDKUANDZ.js +35 -0
- package/dist/chunk-PWIHZ6NJ.js +296 -0
- package/dist/chunk-QEBUY5NY.js +1685 -0
- package/dist/chunk-QLCCJEJI.js +253 -0
- package/dist/chunk-QOOUC2J5.js +52 -0
- package/dist/chunk-QYTPPDAO.js +402 -0
- package/dist/chunk-R3XI2VC7.js +801 -0
- package/dist/chunk-RCERWOJR.js +154 -0
- package/dist/chunk-RJE5JTVK.js +362 -0
- package/dist/chunk-RTLBSQ3G.js +1155 -0
- package/dist/chunk-RUNNI6VE.js +448 -0
- package/dist/chunk-RVMRZAPB.js +354 -0
- package/dist/chunk-RYEGFMUO.js +955 -0
- package/dist/chunk-RZCF2VVM.js +528 -0
- package/dist/chunk-SML67VPV.js +1025 -0
- package/dist/chunk-SQ7IY53Q.js +44 -0
- package/dist/chunk-SQAG3UXH.js +161 -0
- package/dist/chunk-SRTU6HMQ.js +1851 -0
- package/dist/chunk-T2OE3YQB.js +550 -0
- package/dist/chunk-T3UBLACL.js +299 -0
- package/dist/chunk-TLVIHFRO.js +296 -0
- package/dist/chunk-TYS6CSS5.js +52 -0
- package/dist/chunk-U6EQI3U6.js +130 -0
- package/dist/chunk-UJ4FJLBF.js +86 -0
- package/dist/chunk-ULOEATBZ.js +347 -0
- package/dist/chunk-UNCCZ3NU.js +127 -0
- package/dist/chunk-USZW2HHU.js +197 -0
- package/dist/chunk-UWN33VNX.js +1610 -0
- package/dist/chunk-UZ7EZW3B.js +40 -0
- package/dist/chunk-VOKGH627.js +37 -0
- package/dist/chunk-WBRZJOEC.js +204 -0
- package/dist/chunk-WCSOJFU3.js +380 -0
- package/dist/chunk-WCT3NYCV.js +160 -0
- package/dist/chunk-WVAJFAIA.js +529 -0
- package/dist/chunk-X5LCYCL5.js +394 -0
- package/dist/chunk-XAKEUMEJ.js +1256 -0
- package/dist/chunk-Y2ZE3MSG.js +590 -0
- package/dist/chunk-Y3J7VR52.js +646 -0
- package/dist/chunk-Y5QGVTVC.js +33 -0
- package/dist/chunk-YAA6IID3.js +548 -0
- package/dist/chunk-YGJTDXVR.js +692 -0
- package/dist/chunk-YRYKTYMQ.js +186 -0
- package/dist/chunk-YYVTBZZC.js +61 -0
- package/dist/chunk-Z5CGSFJB.js +647 -0
- package/dist/chunk-Z72XRXD4.js +787 -0
- package/dist/chunk-ZGR7ULFJ.js +978 -0
- package/dist/chunk-ZJEL4H2R.js +851 -0
- package/dist/chunk-ZO27FGJS.js +554 -0
- package/dist/collapse-CLPJD2RL.js +11 -0
- package/dist/collapse-SLINJQW6.js +9 -0
- package/dist/collapse-ZWUFFCK2.js +9 -0
- package/dist/compute-G55RG53N.js +8 -0
- package/dist/dgmo-router-DZCIDUO5.js +73 -0
- package/dist/dimensions-J3FHIMJ6.js +22 -0
- package/dist/element.cjs +1 -1
- package/dist/element.js +1 -1
- package/dist/element.mjs +1 -1
- package/dist/flowchart-parser-ZNSKIBVR.js +21 -0
- package/dist/flowchart-renderer-ZAEOL4DX.js +35 -0
- package/dist/index.cjs +3 -3
- package/dist/index.d.cts +3 -469
- package/dist/index.d.ts +3 -469
- package/dist/index.js +137 -69685
- package/dist/layout-46N4JJYK.js +17 -0
- package/dist/layout-5RA6QWR6.js +26 -0
- package/dist/layout-5T6RH5M6.js +14 -0
- package/dist/layout-7QXCNOVS.js +13 -0
- package/dist/layout-EE6GE46Y.js +17 -0
- package/dist/layout-G23F7LDH.js +9 -0
- package/dist/layout-HRBZPFCN.js +23 -0
- package/dist/layout-HWDSRX5E.js +20 -0
- package/dist/layout-HYZPWAK5.js +18 -0
- package/dist/layout-N76NR4ZO.js +19 -0
- package/dist/layout-OB3RI63S.js +14 -0
- package/dist/layout-S2QBYSK2.js +15 -0
- package/dist/layout-UM5F4DJB.js +15 -0
- package/dist/layout-search-OYV77HHS.js +1655 -0
- package/dist/load-data-EHDDZ5ZS.js +8 -0
- package/dist/palettes-PRJ2RI6D.js +56 -0
- package/dist/parser-2MFP2H2E.js +11 -0
- package/dist/parser-3STE62GB.js +21 -0
- package/dist/parser-4FL2CMDG.js +18 -0
- package/dist/parser-4OGOBJJ4.js +13 -0
- package/dist/parser-6BTRLKRZ.js +15 -0
- package/dist/parser-AQETEVRW.js +21 -0
- package/dist/parser-CFZD5IBL.js +12 -0
- package/dist/parser-FUSKFGZN.js +16 -0
- package/dist/parser-I6KXEYFK.js +13 -0
- package/dist/parser-IXSZZQHY.js +18 -0
- package/dist/parser-JAL2HD4I.js +13 -0
- package/dist/parser-KNSQSKQO.js +20 -0
- package/dist/parser-N5O4IHUN.js +13 -0
- package/dist/parser-NGU3ETO6.js +16 -0
- package/dist/parser-NRAI6O25.js +19 -0
- package/dist/parser-O5J4VBII.js +11 -0
- package/dist/parser-OV7NOBW6.js +21 -0
- package/dist/parser-PQ3POX45.js +23 -0
- package/dist/parser-TFZFBVWN.js +11 -0
- package/dist/parser-TRTHDFPP.js +18 -0
- package/dist/parser-VQP2UJ6W.js +11 -0
- package/dist/parser-XDVELHRK.js +13 -0
- package/dist/parser-XKRP7QKP.js +11 -0
- package/dist/parser-Y6WTBU76.js +14 -0
- package/dist/parser-ZSDPZYQP.js +12 -0
- package/dist/renderer-2XQQQ6QR.js +28 -0
- package/dist/renderer-5NDVNDAZ.js +26 -0
- package/dist/renderer-6EEZHMH4.js +26 -0
- package/dist/renderer-6W5462RB.js +43 -0
- package/dist/renderer-7MVLWWQD.js +22 -0
- package/dist/renderer-AWWAF6XD.js +33 -0
- package/dist/renderer-BYCNMBF7.js +34 -0
- package/dist/renderer-CLJHQPBJ.js +29 -0
- package/dist/renderer-GHPZMFU2.js +15 -0
- package/dist/renderer-JGBKUCZD.js +16 -0
- package/dist/renderer-KQB7UGDS.js +19 -0
- package/dist/renderer-PGX2TKVS.js +24 -0
- package/dist/renderer-QIWVHWZO.js +15 -0
- package/dist/renderer-RPOA5YPZ.js +35 -0
- package/dist/renderer-SMIBCRVB.js +24 -0
- package/dist/renderer-T7YKC5VP.js +28 -0
- package/dist/renderer-TOCOVLHS.js +37 -0
- package/dist/renderer-UWA5XS74.js +39 -0
- package/dist/renderer-VACVQYML.js +25 -0
- package/dist/renderer-W4M6QLIJ.js +37 -0
- package/dist/renderer-WZRREQ2P.js +23 -0
- package/dist/renderer-YY2OSF6E.js +27 -0
- package/dist/renderer-Z7I3W2PP.js +24 -0
- package/dist/renderer-ZGNTUWC4.js +22 -0
- package/dist/renderer-ZTR3DER3.js +19 -0
- package/dist/renderer-radial-C32GPJQ7.js +21 -0
- package/dist/resolver-NOAA7ID7.js +13 -0
- package/dist/state-collapse-HCGD6IVJ.js +8 -0
- package/dist/state-parser-Z2V23ATR.js +18 -0
- package/dist/state-renderer-RFYHSP4K.js +34 -0
- package/dist/themes-1-CuKpeH.d.cts +908 -0
- package/dist/themes-1-CuKpeH.d.ts +908 -0
- 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
|