@silurus/ooxml 0.78.0 → 0.79.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/README.md +39 -1
- package/THIRD_PARTY_NOTICES.md +13 -0
- package/dist/{canvas-viewer-mechanics-ChxLdOJg.js → canvas-viewer-mechanics-D9tsuHnG.js} +1 -1
- package/dist/chart-number-format-tjYUR9eS.js +435 -0
- package/dist/dash-Cyc-sevN.js +786 -0
- package/dist/{document-pull-client-xsdVDuVD.js → document-pull-client-YiU8M4LO.js} +3283 -3156
- package/dist/{docx-CZC3j4s4.js → docx-a1UpmRf8.js} +65 -56
- package/dist/docx.mjs +4 -4
- package/dist/docx_parser_bg.wasm +0 -0
- package/dist/index.mjs +3 -3
- package/dist/{line-distribute-HuZyTARz.js → line-distribute-pDqovJpT.js} +1 -1
- package/dist/{line-metrics-z9AdgPaZ.js → line-metrics-DjKxiIUD.js} +4097 -3184
- package/dist/math.mjs +1 -1
- package/dist/node.mjs +322 -322
- package/dist/{pptx-c3UgGKIs.js → pptx-t5ABdzfd.js} +192 -183
- package/dist/pptx.mjs +5 -5
- package/dist/pptx_parser_bg.wasm +0 -0
- package/dist/region-map.mjs +12708 -0
- package/dist/{render-yhFUeiYl.js → render-BjIEuFIG.js} +1 -1
- package/dist/render-worker-host-BB320snY.js +27 -0
- package/dist/render-worker-host-BjEPZBwf.js +27 -0
- package/dist/render-worker-host-hZ0o4OD7.js +27 -0
- package/dist/{resource-measurement-5g27Av6n.js → resource-measurement-D8EiTm_E.js} +1 -1
- package/dist/{session-BOuXp10X.js → session-Bhe_eY-s.js} +10 -10
- package/dist/{slide-pull-client-DKckZrLx.js → slide-pull-client-BQ8gJPTq.js} +626 -563
- package/dist/three-d.mjs +2158 -0
- package/dist/types/docx.d.ts +189 -16
- package/dist/types/index.d.ts +205 -20
- package/dist/types/math.d.ts +1 -1
- package/dist/types/node.d.ts +166 -1
- package/dist/types/pptx.d.ts +191 -16
- package/dist/types/region-map.d.ts +520 -0
- package/dist/types/three-d.d.ts +520 -0
- package/dist/types/xlsx.d.ts +195 -16
- package/dist/{worksheet-pull-client-CMDRPZ5E.js → worksheet-pull-client-T0EzdEEQ.js} +13 -13
- package/dist/{xlsx-BAScjxlC.js → xlsx-CsDDMJIK.js} +833 -770
- package/dist/xlsx.mjs +5 -5
- package/dist/xlsx_parser_bg.wasm +0 -0
- package/package.json +13 -1
- package/dist/render-worker-host-BzxTAscX.js +0 -27
- package/dist/render-worker-host-CBjWHxMb.js +0 -27
- package/dist/render-worker-host-Ivhx3KII.js +0 -27
- /package/dist/{highlight-rect-CAkCWJ37.js → highlight-rect-cCvVU-MW.js} +0 -0
- /package/dist/{mathjax-CMjda8Ip.js → mathjax-Dqo857oC.js} +0 -0
- /package/dist/{transfer-DCu4c2BL.js → transfer-3QEJrsJa.js} +0 -0
- /package/dist/{visible-index-CgyJLAS_.js → visible-index-CKvgpUrf.js} +0 -0
package/README.md
CHANGED
|
@@ -79,7 +79,7 @@ pnpm add @silurus/ooxml
|
|
|
79
79
|
> **Bundle size note**: the package is ESM-only (`.mjs`). npm's *Unpacked
|
|
80
80
|
> Size* sums every entry bundle **and** the standalone MathJax + STIX Two Math
|
|
81
81
|
> asset, so the reported figure is much larger than any single app build. For
|
|
82
|
-
> v0.
|
|
82
|
+
> v0.79.0, the complete npm package is approximately 13.0 MB unpacked (4.3 MB
|
|
83
83
|
> as the downloaded tarball), while a format-specific application graph is
|
|
84
84
|
> approximately:
|
|
85
85
|
>
|
|
@@ -89,6 +89,8 @@ pnpm add @silurus/ooxml
|
|
|
89
89
|
> | `@silurus/ooxml/xlsx` | 2.6 MB | 0.82 MB | XLSX renderer, parser WASM, and lazy worker |
|
|
90
90
|
> | `@silurus/ooxml/pptx` | 2.5 MB | 0.78 MB | PPTX renderer, parser WASM, and lazy worker |
|
|
91
91
|
> | `@silurus/ooxml/math` | 3.1 MB | 1.1 MB | Optional MathJax + STIX Two Math engine |
|
|
92
|
+
> | `@silurus/ooxml/three-d` | 81 KB | 23 KB | Optional model-space 3-D chart mesh and camera |
|
|
93
|
+
> | `@silurus/ooxml/region-map` | 236 KB | 66 KB | Optional offline Region Map renderer and fixed country geometry |
|
|
92
94
|
>
|
|
93
95
|
> These are production-artifact estimates, not initial-load figures: each row
|
|
94
96
|
> sums all assets reachable from that entry, including parser WASM and worker
|
|
@@ -101,6 +103,11 @@ pnpm add @silurus/ooxml
|
|
|
101
103
|
> `@silurus/ooxml/math` and passed it to a viewer (see
|
|
102
104
|
> [Rendering equations](#rendering-equations)). Never import the `math` entry
|
|
103
105
|
> and the loader chunk never enters your graph at all.
|
|
106
|
+
>
|
|
107
|
+
> The 3-D chart and Region Map renderers follow the same dependency-injection
|
|
108
|
+
> boundary: import and pass only the addons an application needs. Ordinary
|
|
109
|
+
> format entries do not reach either optional implementation, so bundlers can
|
|
110
|
+
> tree-shake their mesh code and fixed geographic asset completely.
|
|
104
111
|
|
|
105
112
|
---
|
|
106
113
|
|
|
@@ -199,6 +206,37 @@ per-render argument. (Excel stores "Insert > Equation" as OMML inside the shared
|
|
|
199
206
|
DrawingML `<xdr:txBody>` grammar, so `XlsxViewer` renders equations embedded in
|
|
200
207
|
shapes / text boxes the same way.)
|
|
201
208
|
|
|
209
|
+
### Optional chart renderers
|
|
210
|
+
|
|
211
|
+
Model-space 3-D charts and offline country-level Region Maps are separate
|
|
212
|
+
entries. Inject them once in the same load options object as `math`; omitting an
|
|
213
|
+
addon keeps it out of the application graph. They currently render on the main
|
|
214
|
+
thread, so use `mode: 'main'` (the default). Without `threeD`, 3-D chart groups
|
|
215
|
+
fall back to their canonical 2-D family. Without `regionMap`, Region Maps show
|
|
216
|
+
the standard unsupported-chart placeholder.
|
|
217
|
+
|
|
218
|
+
```typescript
|
|
219
|
+
import { XlsxViewer } from '@silurus/ooxml/xlsx';
|
|
220
|
+
import { threeD } from '@silurus/ooxml/three-d';
|
|
221
|
+
import { regionMap } from '@silurus/ooxml/region-map';
|
|
222
|
+
|
|
223
|
+
const container = document.getElementById('xlsx-container') as HTMLElement;
|
|
224
|
+
const workbookViewer = new XlsxViewer(container, {
|
|
225
|
+
threeD,
|
|
226
|
+
regionMap,
|
|
227
|
+
mode: 'main',
|
|
228
|
+
});
|
|
229
|
+
await workbookViewer.load('/workbook-with-advanced-charts.xlsx');
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
The Region Map addon is deterministic and network-free. It uses a pinned
|
|
233
|
+
Natural Earth country dataset, supports authored world projections and
|
|
234
|
+
two/three-stop value ramps, and fails closed for cached identities or
|
|
235
|
+
sub-country/view-specific layouts that the bounded offline model cannot yet
|
|
236
|
+
represent safely. The specification/Office evidence boundary for automatic
|
|
237
|
+
chart behavior is documented in
|
|
238
|
+
[Chart compatibility evidence and scope](docs/chart-compatibility-evidence.md).
|
|
239
|
+
|
|
202
240
|
### Off-main-thread rendering
|
|
203
241
|
|
|
204
242
|
By default the headless engines parse in a worker but render on the main thread.
|
package/THIRD_PARTY_NOTICES.md
CHANGED
|
@@ -6,6 +6,19 @@ is included in the npm tarball so it travels with every install.
|
|
|
6
6
|
|
|
7
7
|
## JavaScript / bundled asset
|
|
8
8
|
|
|
9
|
+
### Natural Earth Admin 0 Countries, 1:110m
|
|
10
|
+
|
|
11
|
+
The optional Region Map renderer contains a coordinate-quantized derivative of
|
|
12
|
+
Natural Earth's Admin 0 Countries 1:110m vector dataset. Natural Earth states
|
|
13
|
+
that all versions of its raster and vector data are in the public domain. The
|
|
14
|
+
generated source records the exact upstream SHA-256 and fixed feature/vertex
|
|
15
|
+
bounds. The boundaries are illustrative, show Natural Earth's default de-facto
|
|
16
|
+
point of view, and do not imply this project's endorsement of any territorial
|
|
17
|
+
claim.
|
|
18
|
+
|
|
19
|
+
- Source: <https://github.com/nvkelso/natural-earth-vector/blob/master/geojson/ne_110m_admin_0_countries.geojson>
|
|
20
|
+
- Terms: <https://www.naturalearthdata.com/about/terms-of-use/>
|
|
21
|
+
|
|
9
22
|
### MathJax + STIX Two Math (`mathjax-stix2.js`)
|
|
10
23
|
|
|
11
24
|
The optional equation-rendering engine (`@silurus/ooxml/math`, opt-in —
|
|
@@ -0,0 +1,435 @@
|
|
|
1
|
+
//#region packages/core/src/chart/layout.ts
|
|
2
|
+
function e(e, t, n) {
|
|
3
|
+
let r = Math.max(1, t), i = [], a = [], o = 0;
|
|
4
|
+
for (let t = 0; t < e.length; t++) {
|
|
5
|
+
let s = Math.min(r, Math.max(0, e[t])), c = a.length === 0 ? s : o + n + s;
|
|
6
|
+
a.length > 0 && c > r ? (i.push(a), a = [t], o = s) : (a.push(t), o = c);
|
|
7
|
+
}
|
|
8
|
+
return a.length > 0 && i.push(a), i;
|
|
9
|
+
}
|
|
10
|
+
var t = 14;
|
|
11
|
+
function n(e, t) {
|
|
12
|
+
return typeof e == "number" && Number.isFinite(e) && e >= 100 && e <= 4e5 ? e / 100 * t : null;
|
|
13
|
+
}
|
|
14
|
+
function r(e, r, i) {
|
|
15
|
+
return n(e.titleFontSizeHpt, i) ?? t * i;
|
|
16
|
+
}
|
|
17
|
+
var i = .62;
|
|
18
|
+
function a(e, t, n, a, o) {
|
|
19
|
+
if (!e.title && !e.titlePresent) return {
|
|
20
|
+
fontPx: 0,
|
|
21
|
+
topPad: 0,
|
|
22
|
+
bottomPad: 0,
|
|
23
|
+
bandH: 0
|
|
24
|
+
};
|
|
25
|
+
let s = r(e, t, n), c = s + t * a + t * o, l = Math.min(Math.max(0, c - s), s * i);
|
|
26
|
+
return {
|
|
27
|
+
fontPx: s,
|
|
28
|
+
topPad: l,
|
|
29
|
+
bottomPad: c - s - l,
|
|
30
|
+
bandH: c
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
function o(t, n, r, i, a) {
|
|
34
|
+
if (!t.showLegend) return null;
|
|
35
|
+
let o = t.legendPos ?? "r", s = o === "l" ? "l" : o === "t" ? "t" : o === "b" ? "b" : "r";
|
|
36
|
+
if (s === "r" || s === "l") {
|
|
37
|
+
if (a) {
|
|
38
|
+
let e = Math.min(80, n * .3), t = n * .3, r = Math.max(0, ...a.itemWidths) + a.horizontalPadding;
|
|
39
|
+
return {
|
|
40
|
+
side: s,
|
|
41
|
+
reserveW: Math.min(t, Math.max(e, r)),
|
|
42
|
+
reserveH: 0
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
side: s,
|
|
47
|
+
reserveW: Math.max(80, n * i),
|
|
48
|
+
reserveH: 0
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
if (a) {
|
|
52
|
+
let t = Math.max(1, n - a.horizontalPadding), i = e(a.itemWidths, t, a.itemGap).length * a.rowHeight + a.verticalPadding;
|
|
53
|
+
return {
|
|
54
|
+
side: s,
|
|
55
|
+
reserveW: 0,
|
|
56
|
+
reserveH: Math.min(r * .3, i)
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
return {
|
|
60
|
+
side: s,
|
|
61
|
+
reserveW: 0,
|
|
62
|
+
reserveH: Math.max(18, r * .08)
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
function s(e) {
|
|
66
|
+
return {
|
|
67
|
+
legRightW: e?.side === "r" ? e.reserveW : 0,
|
|
68
|
+
legLeftW: e?.side === "l" ? e.reserveW : 0,
|
|
69
|
+
legTopH: e?.side === "t" ? e.reserveH : 0,
|
|
70
|
+
legBottomH: e?.side === "b" ? e.reserveH : 0
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
function c(e, t) {
|
|
74
|
+
return n(e, t) ?? 10 * t;
|
|
75
|
+
}
|
|
76
|
+
function l(e, t, n) {
|
|
77
|
+
let r = 0, i = !1;
|
|
78
|
+
if (n != null) switch (i = !0, n) {
|
|
79
|
+
case "horz": break;
|
|
80
|
+
case "vert270":
|
|
81
|
+
r -= 90;
|
|
82
|
+
break;
|
|
83
|
+
case "vert":
|
|
84
|
+
case "wordArtVert":
|
|
85
|
+
case "eaVert":
|
|
86
|
+
case "mongolianVert":
|
|
87
|
+
case "wordArtVertRtl":
|
|
88
|
+
r += 90;
|
|
89
|
+
break;
|
|
90
|
+
}
|
|
91
|
+
return t != null && Number.isFinite(t) && (r += t / 6e4, i = !0), i ? r * Math.PI / 180 : e === "left" ? -Math.PI / 2 : e === "right" ? Math.PI / 2 : 0;
|
|
92
|
+
}
|
|
93
|
+
function u(e) {
|
|
94
|
+
return Math.max(8, e * .02);
|
|
95
|
+
}
|
|
96
|
+
function d(e, t, n, r) {
|
|
97
|
+
let i = c(e.catAxisTitleFontSizeHpt, r), a = c(e.valAxisTitleFontSizeHpt, r);
|
|
98
|
+
return {
|
|
99
|
+
catFontPx: i,
|
|
100
|
+
valFontPx: a,
|
|
101
|
+
catBandH: e.catAxisTitle ? i + u(n) + 4 : 0,
|
|
102
|
+
valBandW: e.valAxisTitle ? a + u(t) + 4 : 0
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
var f = 2.25, p = 2.75;
|
|
106
|
+
function m(e, t, n) {
|
|
107
|
+
if (!e.title && !e.titlePresent) return {
|
|
108
|
+
fontPx: 0,
|
|
109
|
+
topPad: 0,
|
|
110
|
+
bottomPad: 0,
|
|
111
|
+
bandH: 0
|
|
112
|
+
};
|
|
113
|
+
let a = r(e, t, n), o = a * f, s = Math.min(Math.max(0, o - a), a * i);
|
|
114
|
+
return {
|
|
115
|
+
fontPx: a,
|
|
116
|
+
topPad: s,
|
|
117
|
+
bottomPad: o - a - s,
|
|
118
|
+
bandH: o
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
function h(e) {
|
|
122
|
+
return e * p;
|
|
123
|
+
}
|
|
124
|
+
function g(e) {
|
|
125
|
+
return 5 / 6 * e;
|
|
126
|
+
}
|
|
127
|
+
function _(e) {
|
|
128
|
+
return e;
|
|
129
|
+
}
|
|
130
|
+
var v = 1.5;
|
|
131
|
+
function y(e) {
|
|
132
|
+
let t = e.outerTextMarginPx ?? 0;
|
|
133
|
+
return {
|
|
134
|
+
t: e.valAxisHidden ? 0 : e.valLabelFontPx / 2 + t,
|
|
135
|
+
r: (e.secondaryBandW ?? 0) > 0 ? (e.secondaryBandW ?? 0) + t : 0,
|
|
136
|
+
b: e.catAxisHidden ? 0 : e.catLabelFontPx + (e.catLabelGapPx ?? g(e.catLabelFontPx)) + e.catTitleBandH + t,
|
|
137
|
+
l: e.valAxisHidden ? 0 : e.valLabelWidth + (e.valLabelGapPx ?? _(e.valLabelFontPx)) + e.valTitleBandW + t
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
function b(e, t, n) {
|
|
141
|
+
let r = e.xMode || "factor", i = e.yMode || "factor", a = e.wMode || "factor", o = e.hMode || "factor", s = r === "edge" ? t.x + e.x * t.w : n.x + e.x * t.w, c = i === "edge" ? t.y + e.y * t.h : n.y + e.y * t.h, l = e.w == null ? n.w : a === "edge" ? t.x + e.w * t.w - s : e.w * t.w, u = e.h == null ? n.h : o === "edge" ? t.y + e.h * t.h - c : e.h * t.h;
|
|
142
|
+
return ![
|
|
143
|
+
s,
|
|
144
|
+
c,
|
|
145
|
+
l,
|
|
146
|
+
u
|
|
147
|
+
].every(Number.isFinite) || l <= 0 || u <= 0 ? null : {
|
|
148
|
+
x: s,
|
|
149
|
+
y: c,
|
|
150
|
+
w: l,
|
|
151
|
+
h: u
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
function x(e, t, n, r, i, c, l) {
|
|
155
|
+
let u = l.titleBand ?? a(e, i, c, l.titleTopPadFrac ?? 0, l.titleBottomPadFrac ?? 0), f = l.legendReserve === void 0 ? o(e, r, i, l.legendSideReserveFrac) : l.legendReserve, p = s(f), m = d(e, r, i, c), h, g, _, v;
|
|
156
|
+
if (l.radialGapFrac != null) {
|
|
157
|
+
let e = i * l.radialGapFrac;
|
|
158
|
+
_ = r - p.legRightW - p.legLeftW, v = i - u.bandH - p.legTopH - p.legBottomH - e, h = t + p.legLeftW, g = n + u.bandH + p.legTopH + e;
|
|
159
|
+
} else {
|
|
160
|
+
let e = l.pad;
|
|
161
|
+
if (!e) throw Error("computeChartFrame: cartesian frame requires params.pad");
|
|
162
|
+
h = t + e.l, g = n + e.t, _ = r - e.l - e.r, v = i - e.t - e.b;
|
|
163
|
+
}
|
|
164
|
+
let y = l.honorPlotAreaManualLayout ? e.plotAreaManualLayout : null;
|
|
165
|
+
if (y) {
|
|
166
|
+
let e = y.layoutTarget === "inner" ? {
|
|
167
|
+
t: 0,
|
|
168
|
+
r: 0,
|
|
169
|
+
b: 0,
|
|
170
|
+
l: 0
|
|
171
|
+
} : l.manualOuterInsets ?? {
|
|
172
|
+
t: 0,
|
|
173
|
+
r: 0,
|
|
174
|
+
b: 0,
|
|
175
|
+
l: 0
|
|
176
|
+
}, a = y.layoutTarget === "inner" ? {
|
|
177
|
+
x: h,
|
|
178
|
+
y: g,
|
|
179
|
+
w: _,
|
|
180
|
+
h: v
|
|
181
|
+
} : {
|
|
182
|
+
x: h - e.l,
|
|
183
|
+
y: g - e.t,
|
|
184
|
+
w: _ + e.l + e.r,
|
|
185
|
+
h: v + e.t + e.b
|
|
186
|
+
}, o = b(y, {
|
|
187
|
+
x: t,
|
|
188
|
+
y: n,
|
|
189
|
+
w: r,
|
|
190
|
+
h: i
|
|
191
|
+
}, a);
|
|
192
|
+
o && o.w > e.l + e.r && o.h > e.t + e.b && (h = o.x + e.l, g = o.y + e.t, _ = o.w - e.l - e.r, v = o.h - e.t - e.b);
|
|
193
|
+
}
|
|
194
|
+
return {
|
|
195
|
+
title: u,
|
|
196
|
+
legend: f,
|
|
197
|
+
legendBands: p,
|
|
198
|
+
axisTitles: m,
|
|
199
|
+
plotRect: {
|
|
200
|
+
px0: h,
|
|
201
|
+
py0: g,
|
|
202
|
+
pw: _,
|
|
203
|
+
ph: v
|
|
204
|
+
},
|
|
205
|
+
center: {
|
|
206
|
+
cx: h + _ / 2,
|
|
207
|
+
cy: g + v / 2
|
|
208
|
+
}
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
//#endregion
|
|
212
|
+
//#region packages/core/src/excel-date.ts
|
|
213
|
+
var S = 864e5, C = Date.UTC(1899, 11, 30), w = Date.UTC(1904, 0, 1);
|
|
214
|
+
function T(e, t = !1) {
|
|
215
|
+
if (t) return new Date(w + e * S);
|
|
216
|
+
let n = e < 60 ? e + 1 : e;
|
|
217
|
+
return new Date(C + n * S);
|
|
218
|
+
}
|
|
219
|
+
function E(e, t = !1) {
|
|
220
|
+
if (t) return (e.getTime() - w) / S;
|
|
221
|
+
let n = (e.getTime() - C) / S;
|
|
222
|
+
return n <= 60 ? n - 1 : n;
|
|
223
|
+
}
|
|
224
|
+
//#endregion
|
|
225
|
+
//#region packages/core/src/text/round-decimal.ts
|
|
226
|
+
function D(e, t) {
|
|
227
|
+
if (!Number.isFinite(e)) return String(e);
|
|
228
|
+
let n = Math.max(0, Math.trunc(t)), r = e < 0, [i, a = ""] = O(Math.abs(e).toString()).split("."), o = a.padEnd(n + 1, "0"), s = o.slice(0, n), c = o.charCodeAt(n) - 48, l = (i + s).split("").map((e) => e.charCodeAt(0) - 48);
|
|
229
|
+
if (c >= 5) {
|
|
230
|
+
let e = l.length - 1;
|
|
231
|
+
for (; e >= 0; e--) if (l[e] === 9) l[e] = 0;
|
|
232
|
+
else {
|
|
233
|
+
l[e] += 1;
|
|
234
|
+
break;
|
|
235
|
+
}
|
|
236
|
+
e < 0 && l.unshift(1);
|
|
237
|
+
}
|
|
238
|
+
let u = l.map((e) => String(e)).join(""), d = n, f = (d > 0 ? u.slice(0, u.length - d) : u) || "0", p = d > 0 ? u.slice(u.length - d) : "", m = f.replace(/^0+(?=\d)/, ""), h = p.length > 0 ? `${m}.${p}` : m, g = /^[0.]*$/.test(h) && !/[1-9]/.test(h);
|
|
239
|
+
return r && !g ? `-${h}` : h;
|
|
240
|
+
}
|
|
241
|
+
function O(e) {
|
|
242
|
+
let t = /^(\d+)(?:\.(\d+))?[eE]([+-]?\d+)$/.exec(e);
|
|
243
|
+
if (!t) return e;
|
|
244
|
+
let [, n, r = "", i] = t, a = parseInt(i, 10), o = n + r, s = n.length + a;
|
|
245
|
+
return s <= 0 ? "0." + "0".repeat(-s) + o : s >= o.length ? o + "0".repeat(s - o.length) : o.slice(0, s) + "." + o.slice(s);
|
|
246
|
+
}
|
|
247
|
+
//#endregion
|
|
248
|
+
//#region packages/core/src/chart/chart-number-format.ts
|
|
249
|
+
function k(e) {
|
|
250
|
+
return Number.isInteger(e) ? String(e) : D(e, 6).replace(/\.?0+$/, "");
|
|
251
|
+
}
|
|
252
|
+
function A(e, t, n = !1) {
|
|
253
|
+
if (!t || t.trim().toLowerCase() === "general") return k(e);
|
|
254
|
+
if (M(t)) return N(e, t, n);
|
|
255
|
+
let r = P(t), i;
|
|
256
|
+
return i = e > 0 ? r[0] ?? t : e < 0 ? r[1] ?? r[0] ?? t : r[2] ?? r[0] ?? t, i === "" ? "" : (e < 0 && r.length < 2 ? "-" : "") + F(Math.abs(e), i);
|
|
257
|
+
}
|
|
258
|
+
function j(e, t, n = !1) {
|
|
259
|
+
if (!t || e.trim() === "") return e;
|
|
260
|
+
let r = Number(e);
|
|
261
|
+
return Number.isFinite(r) ? A(r, t, n) : e;
|
|
262
|
+
}
|
|
263
|
+
function M(e) {
|
|
264
|
+
let t = !1;
|
|
265
|
+
for (let n = 0; n < e.length; n++) {
|
|
266
|
+
let r = e[n];
|
|
267
|
+
if (r === "\"") {
|
|
268
|
+
t = !t;
|
|
269
|
+
continue;
|
|
270
|
+
}
|
|
271
|
+
if (!t) {
|
|
272
|
+
if (r === "\\") {
|
|
273
|
+
n++;
|
|
274
|
+
continue;
|
|
275
|
+
}
|
|
276
|
+
if (r === "[") {
|
|
277
|
+
for (; n < e.length && e[n] !== "]";) n++;
|
|
278
|
+
continue;
|
|
279
|
+
}
|
|
280
|
+
if (r === "y" || r === "Y" || r === "d" || r === "D" || r === "m" || r === "M" || r === "h" || r === "H" || r === "s" || r === "S") return !0;
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
return !1;
|
|
284
|
+
}
|
|
285
|
+
function N(e, t, n = !1) {
|
|
286
|
+
let r = T(Math.floor(e), n), i = r.getUTCFullYear(), a = r.getUTCMonth() + 1, o = r.getUTCDate(), s = (e - Math.floor(e)) * 86400, c = Math.floor(s / 3600), l = Math.floor(s % 3600 / 60), u = Math.floor(s % 60), d = "", f = !1, p = 0;
|
|
287
|
+
for (; p < t.length;) {
|
|
288
|
+
let e = t[p];
|
|
289
|
+
if (e === "\"") {
|
|
290
|
+
f = !f, p++;
|
|
291
|
+
continue;
|
|
292
|
+
}
|
|
293
|
+
if (f) {
|
|
294
|
+
d += e, p++;
|
|
295
|
+
continue;
|
|
296
|
+
}
|
|
297
|
+
if (e === "\\" && p + 1 < t.length) {
|
|
298
|
+
d += t[p + 1], p += 2;
|
|
299
|
+
continue;
|
|
300
|
+
}
|
|
301
|
+
if (e === "[") {
|
|
302
|
+
for (; p < t.length && t[p] !== "]";) p++;
|
|
303
|
+
p < t.length && p++;
|
|
304
|
+
continue;
|
|
305
|
+
}
|
|
306
|
+
if (e === "y" || e === "Y") {
|
|
307
|
+
let e = 0;
|
|
308
|
+
for (; p < t.length && (t[p] === "y" || t[p] === "Y");) e++, p++;
|
|
309
|
+
d += e >= 3 ? String(i) : String(i % 100).padStart(2, "0");
|
|
310
|
+
continue;
|
|
311
|
+
}
|
|
312
|
+
if (e === "m" || e === "M") {
|
|
313
|
+
let e = 0;
|
|
314
|
+
for (; p < t.length && (t[p] === "m" || t[p] === "M");) e++, p++;
|
|
315
|
+
d.match(/[Hh]+\W*$/) ? d += e >= 2 ? String(l).padStart(2, "0") : String(l) : d += e >= 2 ? String(a).padStart(2, "0") : String(a);
|
|
316
|
+
continue;
|
|
317
|
+
}
|
|
318
|
+
if (e === "d" || e === "D") {
|
|
319
|
+
let e = 0;
|
|
320
|
+
for (; p < t.length && (t[p] === "d" || t[p] === "D");) e++, p++;
|
|
321
|
+
d += e >= 2 ? String(o).padStart(2, "0") : String(o);
|
|
322
|
+
continue;
|
|
323
|
+
}
|
|
324
|
+
if (e === "h" || e === "H") {
|
|
325
|
+
let e = 0;
|
|
326
|
+
for (; p < t.length && (t[p] === "h" || t[p] === "H");) e++, p++;
|
|
327
|
+
d += e >= 2 ? String(c).padStart(2, "0") : String(c);
|
|
328
|
+
continue;
|
|
329
|
+
}
|
|
330
|
+
if (e === "s" || e === "S") {
|
|
331
|
+
let e = 0;
|
|
332
|
+
for (; p < t.length && (t[p] === "s" || t[p] === "S");) e++, p++;
|
|
333
|
+
d += e >= 2 ? String(u).padStart(2, "0") : String(u);
|
|
334
|
+
continue;
|
|
335
|
+
}
|
|
336
|
+
d += e, p++;
|
|
337
|
+
}
|
|
338
|
+
return d;
|
|
339
|
+
}
|
|
340
|
+
function P(e) {
|
|
341
|
+
let t = [], n = "";
|
|
342
|
+
for (let r = 0; r < e.length; r++) {
|
|
343
|
+
let i = e[r];
|
|
344
|
+
if (i === "\\" && r + 1 < e.length) {
|
|
345
|
+
n += i + e[r + 1], r++;
|
|
346
|
+
continue;
|
|
347
|
+
}
|
|
348
|
+
if (i === "\"") {
|
|
349
|
+
for (n += i, r++; r < e.length && e[r] !== "\"";) n += e[r], r++;
|
|
350
|
+
r < e.length && (n += e[r]);
|
|
351
|
+
continue;
|
|
352
|
+
}
|
|
353
|
+
if (i === "[") {
|
|
354
|
+
for (n += i, r++; r < e.length && e[r] !== "]";) n += e[r], r++;
|
|
355
|
+
r < e.length && (n += e[r]);
|
|
356
|
+
continue;
|
|
357
|
+
}
|
|
358
|
+
if (i === ";") {
|
|
359
|
+
t.push(n), n = "";
|
|
360
|
+
continue;
|
|
361
|
+
}
|
|
362
|
+
n += i;
|
|
363
|
+
}
|
|
364
|
+
return t.push(n), t;
|
|
365
|
+
}
|
|
366
|
+
function F(e, t) {
|
|
367
|
+
let n = [], r = 0, i = !1, a = !1;
|
|
368
|
+
for (; r < t.length;) {
|
|
369
|
+
let e = t[r];
|
|
370
|
+
if (e === "\"") {
|
|
371
|
+
r++;
|
|
372
|
+
let e = "";
|
|
373
|
+
for (; r < t.length && t[r] !== "\"";) e += t[r], r++;
|
|
374
|
+
r < t.length && r++, n.push({
|
|
375
|
+
kind: "lit",
|
|
376
|
+
text: e
|
|
377
|
+
});
|
|
378
|
+
continue;
|
|
379
|
+
}
|
|
380
|
+
if (e === "\\" && r + 1 < t.length) {
|
|
381
|
+
n.push({
|
|
382
|
+
kind: "lit",
|
|
383
|
+
text: t[r + 1]
|
|
384
|
+
}), r += 2;
|
|
385
|
+
continue;
|
|
386
|
+
}
|
|
387
|
+
if (e === "_" && r + 1 < t.length) {
|
|
388
|
+
n.push({
|
|
389
|
+
kind: "lit",
|
|
390
|
+
text: " "
|
|
391
|
+
}), r += 2;
|
|
392
|
+
continue;
|
|
393
|
+
}
|
|
394
|
+
if (e === "*" && r + 1 < t.length) {
|
|
395
|
+
r += 2;
|
|
396
|
+
continue;
|
|
397
|
+
}
|
|
398
|
+
if (e === "[") {
|
|
399
|
+
for (r++; r < t.length && t[r] !== "]";) r++;
|
|
400
|
+
r < t.length && r++;
|
|
401
|
+
continue;
|
|
402
|
+
}
|
|
403
|
+
if (e === "%") {
|
|
404
|
+
a = !0, n.push({
|
|
405
|
+
kind: "lit",
|
|
406
|
+
text: "%"
|
|
407
|
+
}), r++;
|
|
408
|
+
continue;
|
|
409
|
+
}
|
|
410
|
+
if (e === "#" || e === "0" || e === "." || e === "," || e === "?") {
|
|
411
|
+
let e = "";
|
|
412
|
+
for (; r < t.length && (t[r] === "#" || t[r] === "0" || t[r] === "." || t[r] === "," || t[r] === "?");) e += t[r], r++;
|
|
413
|
+
n.push({
|
|
414
|
+
kind: "num",
|
|
415
|
+
text: e
|
|
416
|
+
}), i = !0;
|
|
417
|
+
continue;
|
|
418
|
+
}
|
|
419
|
+
n.push({
|
|
420
|
+
kind: "lit",
|
|
421
|
+
text: e
|
|
422
|
+
}), r++;
|
|
423
|
+
}
|
|
424
|
+
if (!i) return n.map((e) => e.text).join("");
|
|
425
|
+
let o = a ? e * 100 : e, s = "";
|
|
426
|
+
for (let e of n) e.kind === "num" && (s += e.text);
|
|
427
|
+
let c = I(o, s), l = !1;
|
|
428
|
+
return n.map((e) => e.kind === "lit" ? e.text : l ? "" : (l = !0, c)).join("");
|
|
429
|
+
}
|
|
430
|
+
function I(e, t) {
|
|
431
|
+
let n = t.indexOf("."), r = n >= 0 ? t.slice(0, n) : t, i = n >= 0 ? t.slice(n + 1) : "", a = /,/.test(r), o = (i.match(/[#0?]/g) ?? []).length, s = (r.replace(/,/g, "").match(/0/g) ?? []).length, [c, l = ""] = D(e, o).split("."), u = c.padStart(s, "0"), d = a ? u.replace(/\B(?=(\d{3})+(?!\d))/g, ",") : u;
|
|
432
|
+
return o === 0 ? d : `${d}.${l.padEnd(o, "0")}`;
|
|
433
|
+
}
|
|
434
|
+
//#endregion
|
|
435
|
+
export { _ as C, b as S, y as _, T as a, x as b, c, m as d, h as f, o as g, s as h, D as i, u as l, d as m, k as n, E as o, g as p, A as r, v as s, j as t, l as u, n as v, e as x, a as y };
|