@agile-team/mach-report 2.4.1 → 2.5.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 +31 -2
- package/dist/ReportPreview-CBKLI--k.js +2188 -0
- package/dist/ReportPreview-ClM8h0pM.cjs +6 -0
- package/dist/{plugin-CKnSVuVe.js → plugin-DDLcFWlk.js} +1 -1
- package/dist/{plugin-DwKr8oF6.cjs → plugin-DMPLDpBY.cjs} +1 -1
- package/dist/style.css +1 -1
- package/dist/vue/async.d.cts +95 -0
- package/dist/vue/async.d.ts +95 -0
- package/dist/vue/index.d.cts +139 -1
- package/dist/vue/index.d.ts +139 -1
- package/dist/vue-async.cjs +1 -1
- package/dist/vue-async.js +3 -3
- package/dist/vue.cjs +1 -1
- package/dist/vue.js +36 -34
- package/package.json +1 -1
- package/dist/ReportPreview-BVTpw9Tb.cjs +0 -6
- package/dist/ReportPreview-XF8iSUG1.js +0 -1910
package/dist/vue/index.d.ts
CHANGED
|
@@ -48,6 +48,19 @@ showPdfWindow: {
|
|
|
48
48
|
type: BooleanConstructor;
|
|
49
49
|
default: undefined;
|
|
50
50
|
};
|
|
51
|
+
showSettings: {
|
|
52
|
+
type: BooleanConstructor;
|
|
53
|
+
default: undefined;
|
|
54
|
+
};
|
|
55
|
+
toolbar: {
|
|
56
|
+
type: PropType<MachReportToolbarOptions>;
|
|
57
|
+
default: undefined;
|
|
58
|
+
};
|
|
59
|
+
/** 保留表头的零行业务结果;不改变计划和导出内容。 */
|
|
60
|
+
emptyState: {
|
|
61
|
+
type: PropType<boolean | ReportEmptyState>;
|
|
62
|
+
default: boolean;
|
|
63
|
+
};
|
|
51
64
|
/** 页间距(px);不传走配置中心 */
|
|
52
65
|
gapPx: {
|
|
53
66
|
type: NumberConstructor;
|
|
@@ -111,6 +124,7 @@ loaded: (pageCount: number) => any;
|
|
|
111
124
|
warning: (message: string) => any;
|
|
112
125
|
"cell-edit": (edit: ReportCellEdit_2) => any;
|
|
113
126
|
"template-import": (result: ExcelImportResult) => any;
|
|
127
|
+
"preferences-change": (preferences: Readonly<ReportPreviewPreferences>) => any;
|
|
114
128
|
}, string, PublicProps, Readonly<ExtractPropTypes< {
|
|
115
129
|
reportId: {
|
|
116
130
|
type: PropType<string | string[] | null>;
|
|
@@ -141,6 +155,19 @@ showPdfWindow: {
|
|
|
141
155
|
type: BooleanConstructor;
|
|
142
156
|
default: undefined;
|
|
143
157
|
};
|
|
158
|
+
showSettings: {
|
|
159
|
+
type: BooleanConstructor;
|
|
160
|
+
default: undefined;
|
|
161
|
+
};
|
|
162
|
+
toolbar: {
|
|
163
|
+
type: PropType<MachReportToolbarOptions>;
|
|
164
|
+
default: undefined;
|
|
165
|
+
};
|
|
166
|
+
/** 保留表头的零行业务结果;不改变计划和导出内容。 */
|
|
167
|
+
emptyState: {
|
|
168
|
+
type: PropType<boolean | ReportEmptyState>;
|
|
169
|
+
default: boolean;
|
|
170
|
+
};
|
|
144
171
|
/** 页间距(px);不传走配置中心 */
|
|
145
172
|
gapPx: {
|
|
146
173
|
type: NumberConstructor;
|
|
@@ -192,6 +219,7 @@ onLoaded?: ((pageCount: number) => any) | undefined;
|
|
|
192
219
|
onWarning?: ((message: string) => any) | undefined;
|
|
193
220
|
"onCell-edit"?: ((edit: ReportCellEdit_2) => any) | undefined;
|
|
194
221
|
"onTemplate-import"?: ((result: ExcelImportResult) => any) | undefined;
|
|
222
|
+
"onPreferences-change"?: ((preferences: Readonly<ReportPreviewPreferences>) => any) | undefined;
|
|
195
223
|
}>, {
|
|
196
224
|
editable: boolean | ReportEditingOptions;
|
|
197
225
|
height: string;
|
|
@@ -202,10 +230,13 @@ debug: boolean;
|
|
|
202
230
|
showExport: boolean;
|
|
203
231
|
showPrint: boolean;
|
|
204
232
|
showPdfWindow: boolean;
|
|
233
|
+
showSettings: boolean;
|
|
205
234
|
showParams: boolean;
|
|
235
|
+
toolbar: MachReportToolbarOptions;
|
|
206
236
|
messages: Partial<MachReportMessages>;
|
|
207
237
|
excelImport: boolean | ExcelImportOptions;
|
|
208
238
|
autoLoad: boolean;
|
|
239
|
+
emptyState: boolean | ReportEmptyState;
|
|
209
240
|
preset: string;
|
|
210
241
|
paramDefs: ReportParamDef[] | undefined;
|
|
211
242
|
fetcher: PlanFetcher | null;
|
|
@@ -234,6 +265,12 @@ declare type __VLS_Props = {
|
|
|
234
265
|
};
|
|
235
266
|
thumbsVisible: boolean;
|
|
236
267
|
showImport?: boolean;
|
|
268
|
+
showSearch?: boolean;
|
|
269
|
+
showThumbnails?: boolean;
|
|
270
|
+
showZoom?: boolean;
|
|
271
|
+
exportFormats?: readonly ReportExportFormat[];
|
|
272
|
+
showSettings?: boolean;
|
|
273
|
+
settingsOpen?: boolean;
|
|
237
274
|
busy?: boolean;
|
|
238
275
|
};
|
|
239
276
|
|
|
@@ -248,6 +285,7 @@ declare type __VLS_Props_2 = {
|
|
|
248
285
|
declare function __VLS_template(): {
|
|
249
286
|
attrs: Partial<{}>;
|
|
250
287
|
slots: {
|
|
288
|
+
settings?(_: {}): any;
|
|
251
289
|
default?(_: {}): any;
|
|
252
290
|
};
|
|
253
291
|
refs: {
|
|
@@ -944,6 +982,9 @@ export declare interface MachReportDefaults {
|
|
|
944
982
|
showExport?: boolean;
|
|
945
983
|
showPrint?: boolean;
|
|
946
984
|
showPdfWindow?: boolean;
|
|
985
|
+
/** 设置入口默认显示;可在其中按需启用阅读及输出工具。 */
|
|
986
|
+
showSettings?: boolean;
|
|
987
|
+
toolbar?: MachReportToolbarOptions;
|
|
947
988
|
/** 参数面板显隐(有参数定义且未显式关闭时显示;缺省 true) */
|
|
948
989
|
showParams?: boolean;
|
|
949
990
|
/** 页间距 px */
|
|
@@ -1054,6 +1095,20 @@ export declare interface MachReportMessages {
|
|
|
1054
1095
|
editInvalidNumber?: string;
|
|
1055
1096
|
editInvalidBoolean?: string;
|
|
1056
1097
|
editConflict?: string;
|
|
1098
|
+
settings?: string;
|
|
1099
|
+
settingsDisplay?: string;
|
|
1100
|
+
settingsExport?: string;
|
|
1101
|
+
settingsData?: string;
|
|
1102
|
+
settingsUnavailable?: string;
|
|
1103
|
+
settingsReset?: string;
|
|
1104
|
+
settingsClose?: string;
|
|
1105
|
+
search?: string;
|
|
1106
|
+
zoom?: string;
|
|
1107
|
+
settingsLocal?: string;
|
|
1108
|
+
editingLocal?: string;
|
|
1109
|
+
editingSaved?: string;
|
|
1110
|
+
importLocal?: string;
|
|
1111
|
+
emptyDescription?: string;
|
|
1057
1112
|
}
|
|
1058
1113
|
|
|
1059
1114
|
/**
|
|
@@ -1121,6 +1176,18 @@ export declare const MachReportPreview: {
|
|
|
1121
1176
|
type: BooleanConstructor;
|
|
1122
1177
|
default: undefined;
|
|
1123
1178
|
};
|
|
1179
|
+
showSettings: {
|
|
1180
|
+
type: BooleanConstructor;
|
|
1181
|
+
default: undefined;
|
|
1182
|
+
};
|
|
1183
|
+
toolbar: {
|
|
1184
|
+
type: PropType<MachReportToolbarOptions>;
|
|
1185
|
+
default: undefined;
|
|
1186
|
+
};
|
|
1187
|
+
emptyState: {
|
|
1188
|
+
type: PropType<boolean | ReportEmptyState>;
|
|
1189
|
+
default: boolean;
|
|
1190
|
+
};
|
|
1124
1191
|
gapPx: {
|
|
1125
1192
|
type: NumberConstructor;
|
|
1126
1193
|
default: undefined;
|
|
@@ -1166,6 +1233,7 @@ export declare const MachReportPreview: {
|
|
|
1166
1233
|
onWarning?: ((message: string) => any) | undefined;
|
|
1167
1234
|
"onCell-edit"?: ((edit: ReportCellEdit_2) => any) | undefined;
|
|
1168
1235
|
"onTemplate-import"?: ((result: ExcelImportResult_2) => any) | undefined;
|
|
1236
|
+
"onPreferences-change"?: ((preferences: Readonly<ReportPreviewPreferences>) => any) | undefined;
|
|
1169
1237
|
}>, {
|
|
1170
1238
|
reload: () => Promise<void>;
|
|
1171
1239
|
print: () => Promise<void>;
|
|
@@ -1189,6 +1257,7 @@ export declare const MachReportPreview: {
|
|
|
1189
1257
|
warning: (message: string) => any;
|
|
1190
1258
|
"cell-edit": (edit: ReportCellEdit_2) => any;
|
|
1191
1259
|
"template-import": (result: ExcelImportResult_2) => any;
|
|
1260
|
+
"preferences-change": (preferences: Readonly<ReportPreviewPreferences>) => any;
|
|
1192
1261
|
}, PublicProps, {
|
|
1193
1262
|
editable: boolean | ReportEditingOptions;
|
|
1194
1263
|
height: string;
|
|
@@ -1199,10 +1268,13 @@ export declare const MachReportPreview: {
|
|
|
1199
1268
|
showExport: boolean;
|
|
1200
1269
|
showPrint: boolean;
|
|
1201
1270
|
showPdfWindow: boolean;
|
|
1271
|
+
showSettings: boolean;
|
|
1202
1272
|
showParams: boolean;
|
|
1273
|
+
toolbar: MachReportToolbarOptions;
|
|
1203
1274
|
messages: Partial<MachReportMessages>;
|
|
1204
1275
|
excelImport: boolean | ExcelImportOptions_2;
|
|
1205
1276
|
autoLoad: boolean;
|
|
1277
|
+
emptyState: boolean | ReportEmptyState;
|
|
1206
1278
|
preset: string;
|
|
1207
1279
|
paramDefs: ReportParamDef[] | undefined;
|
|
1208
1280
|
fetcher: PlanFetcher | null;
|
|
@@ -1247,6 +1319,18 @@ export declare const MachReportPreview: {
|
|
|
1247
1319
|
type: BooleanConstructor;
|
|
1248
1320
|
default: undefined;
|
|
1249
1321
|
};
|
|
1322
|
+
showSettings: {
|
|
1323
|
+
type: BooleanConstructor;
|
|
1324
|
+
default: undefined;
|
|
1325
|
+
};
|
|
1326
|
+
toolbar: {
|
|
1327
|
+
type: PropType<MachReportToolbarOptions>;
|
|
1328
|
+
default: undefined;
|
|
1329
|
+
};
|
|
1330
|
+
emptyState: {
|
|
1331
|
+
type: PropType<boolean | ReportEmptyState>;
|
|
1332
|
+
default: boolean;
|
|
1333
|
+
};
|
|
1250
1334
|
gapPx: {
|
|
1251
1335
|
type: NumberConstructor;
|
|
1252
1336
|
default: undefined;
|
|
@@ -1292,6 +1376,7 @@ export declare const MachReportPreview: {
|
|
|
1292
1376
|
onWarning?: ((message: string) => any) | undefined;
|
|
1293
1377
|
"onCell-edit"?: ((edit: ReportCellEdit_2) => any) | undefined;
|
|
1294
1378
|
"onTemplate-import"?: ((result: ExcelImportResult_2) => any) | undefined;
|
|
1379
|
+
"onPreferences-change"?: ((preferences: Readonly<ReportPreviewPreferences>) => any) | undefined;
|
|
1295
1380
|
}>, {
|
|
1296
1381
|
reload: () => Promise<void>;
|
|
1297
1382
|
print: () => Promise<void>;
|
|
@@ -1316,10 +1401,13 @@ export declare const MachReportPreview: {
|
|
|
1316
1401
|
showExport: boolean;
|
|
1317
1402
|
showPrint: boolean;
|
|
1318
1403
|
showPdfWindow: boolean;
|
|
1404
|
+
showSettings: boolean;
|
|
1319
1405
|
showParams: boolean;
|
|
1406
|
+
toolbar: MachReportToolbarOptions;
|
|
1320
1407
|
messages: Partial<MachReportMessages>;
|
|
1321
1408
|
excelImport: boolean | ExcelImportOptions_2;
|
|
1322
1409
|
autoLoad: boolean;
|
|
1410
|
+
emptyState: boolean | ReportEmptyState;
|
|
1323
1411
|
preset: string;
|
|
1324
1412
|
paramDefs: ReportParamDef[] | undefined;
|
|
1325
1413
|
fetcher: PlanFetcher | null;
|
|
@@ -1356,6 +1444,18 @@ showPdfWindow: {
|
|
|
1356
1444
|
type: BooleanConstructor;
|
|
1357
1445
|
default: undefined;
|
|
1358
1446
|
};
|
|
1447
|
+
showSettings: {
|
|
1448
|
+
type: BooleanConstructor;
|
|
1449
|
+
default: undefined;
|
|
1450
|
+
};
|
|
1451
|
+
toolbar: {
|
|
1452
|
+
type: PropType<MachReportToolbarOptions>;
|
|
1453
|
+
default: undefined;
|
|
1454
|
+
};
|
|
1455
|
+
emptyState: {
|
|
1456
|
+
type: PropType<boolean | ReportEmptyState>;
|
|
1457
|
+
default: boolean;
|
|
1458
|
+
};
|
|
1359
1459
|
gapPx: {
|
|
1360
1460
|
type: NumberConstructor;
|
|
1361
1461
|
default: undefined;
|
|
@@ -1401,6 +1501,7 @@ onLoaded?: ((pageCount: number) => any) | undefined;
|
|
|
1401
1501
|
onWarning?: ((message: string) => any) | undefined;
|
|
1402
1502
|
"onCell-edit"?: ((edit: ReportCellEdit_2) => any) | undefined;
|
|
1403
1503
|
"onTemplate-import"?: ((result: ExcelImportResult_2) => any) | undefined;
|
|
1504
|
+
"onPreferences-change"?: ((preferences: Readonly<ReportPreviewPreferences>) => any) | undefined;
|
|
1404
1505
|
}>, {
|
|
1405
1506
|
reload: () => Promise<void>;
|
|
1406
1507
|
print: () => Promise<void>;
|
|
@@ -1424,6 +1525,7 @@ loaded: (pageCount: number) => any;
|
|
|
1424
1525
|
warning: (message: string) => any;
|
|
1425
1526
|
"cell-edit": (edit: ReportCellEdit_2) => any;
|
|
1426
1527
|
"template-import": (result: ExcelImportResult_2) => any;
|
|
1528
|
+
"preferences-change": (preferences: Readonly<ReportPreviewPreferences>) => any;
|
|
1427
1529
|
}, string, {
|
|
1428
1530
|
editable: boolean | ReportEditingOptions;
|
|
1429
1531
|
height: string;
|
|
@@ -1434,15 +1536,19 @@ debug: boolean;
|
|
|
1434
1536
|
showExport: boolean;
|
|
1435
1537
|
showPrint: boolean;
|
|
1436
1538
|
showPdfWindow: boolean;
|
|
1539
|
+
showSettings: boolean;
|
|
1437
1540
|
showParams: boolean;
|
|
1541
|
+
toolbar: MachReportToolbarOptions;
|
|
1438
1542
|
messages: Partial<MachReportMessages>;
|
|
1439
1543
|
excelImport: boolean | ExcelImportOptions_2;
|
|
1440
1544
|
autoLoad: boolean;
|
|
1545
|
+
emptyState: boolean | ReportEmptyState;
|
|
1441
1546
|
preset: string;
|
|
1442
1547
|
paramDefs: ReportParamDef[] | undefined;
|
|
1443
1548
|
fetcher: PlanFetcher | null;
|
|
1444
1549
|
}, {}, string, {}, { [K in keyof GlobalComponents]: GlobalComponents[K] }, { [K in keyof GlobalDirectives]: GlobalDirectives[K] }, string, ComponentProvideOptions> & VNodeProps & AllowedComponentProps & ComponentCustomProps & (new () => {
|
|
1445
1550
|
$slots: {
|
|
1551
|
+
settings?(_: {}): any;
|
|
1446
1552
|
default?(_: {}): any;
|
|
1447
1553
|
};
|
|
1448
1554
|
});
|
|
@@ -1494,6 +1600,18 @@ export declare interface MachReportTheme {
|
|
|
1494
1600
|
btnActiveBg: string;
|
|
1495
1601
|
}
|
|
1496
1602
|
|
|
1603
|
+
export declare interface MachReportToolbarOptions {
|
|
1604
|
+
search?: boolean;
|
|
1605
|
+
thumbnails?: boolean;
|
|
1606
|
+
zoom?: boolean;
|
|
1607
|
+
/** 编辑能力由 editable 授权;此项仅设置初始交互偏好,默认 true(兼容旧行为)。 */
|
|
1608
|
+
editing?: boolean;
|
|
1609
|
+
/** 导入能力由 excelImport 授权;此项仅设置初始交互偏好,默认 true。 */
|
|
1610
|
+
excelImport?: boolean;
|
|
1611
|
+
/** 未传时显示全部已有出口;空数组表示不提供导出工具。 */
|
|
1612
|
+
exportFormats?: ReportExportFormat[];
|
|
1613
|
+
}
|
|
1614
|
+
|
|
1497
1615
|
export declare function normalizeReportIds(reportId: ReportIdInput): string[];
|
|
1498
1616
|
|
|
1499
1617
|
declare function openPdfWindow(): void;
|
|
@@ -1712,6 +1830,10 @@ declare interface RenderPlan {
|
|
|
1712
1830
|
pages: PlanPage[];
|
|
1713
1831
|
}
|
|
1714
1832
|
|
|
1833
|
+
export declare const REPORT_EXPORT_FORMATS: readonly ReportExportFormat[];
|
|
1834
|
+
|
|
1835
|
+
export declare const REPORT_PREVIEW_TOOLS: readonly ["search", "thumbnails", "zoom", ...ReportExportFormat[], "print", "pdfWindow", "editing", "import"];
|
|
1836
|
+
|
|
1715
1837
|
/** 预览中的物理坐标;合并单元格使用左上角坐标。 */
|
|
1716
1838
|
declare interface ReportCellAddress {
|
|
1717
1839
|
pageIndex: number;
|
|
@@ -1806,6 +1928,15 @@ export declare interface ReportEditOperation {
|
|
|
1806
1928
|
signal: AbortSignal;
|
|
1807
1929
|
}
|
|
1808
1930
|
|
|
1931
|
+
/** 报表含表头但业务行为空时,由接入方明确声明;组件不推测业务数据。 */
|
|
1932
|
+
export declare interface ReportEmptyState {
|
|
1933
|
+
title?: string;
|
|
1934
|
+
description?: string;
|
|
1935
|
+
}
|
|
1936
|
+
|
|
1937
|
+
/** 输出能力仍由宿主授权;工具偏好只决定当前预览实例的可见与启用状态。 */
|
|
1938
|
+
export declare type ReportExportFormat = "html" | "pdf" | "xlsx" | "png" | "word";
|
|
1939
|
+
|
|
1809
1940
|
/** 保持 Promise<RenderPlan> 契约;元数据为可选,旧业务 fetcher 无需改造。 */
|
|
1810
1941
|
declare interface ReportFetcher {
|
|
1811
1942
|
(input: ReportFetchInput): Promise<RenderPlan>;
|
|
@@ -1889,6 +2020,10 @@ onQuery?: (() => any) | undefined;
|
|
|
1889
2020
|
|
|
1890
2021
|
export declare const ReportPreview: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
|
|
1891
2022
|
|
|
2023
|
+
export declare type ReportPreviewPreferences = Record<ReportPreviewTool, boolean>;
|
|
2024
|
+
|
|
2025
|
+
export declare type ReportPreviewTool = typeof REPORT_PREVIEW_TOOLS[number];
|
|
2026
|
+
|
|
1892
2027
|
declare type ReportRegistry = Record<string, ReportDefinition>;
|
|
1893
2028
|
|
|
1894
2029
|
declare interface ReportTemplate {
|
|
@@ -1925,6 +2060,7 @@ goto: (page: number) => any;
|
|
|
1925
2060
|
"search-toggle": () => any;
|
|
1926
2061
|
"thumbs-toggle": () => any;
|
|
1927
2062
|
"import-excel": () => any;
|
|
2063
|
+
"settings-toggle": () => any;
|
|
1928
2064
|
}, string, PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
1929
2065
|
onPrint?: (() => any) | undefined;
|
|
1930
2066
|
onExport?: ((format: "html" | "png" | "pdf" | "xlsx" | "word") => any) | undefined;
|
|
@@ -1936,13 +2072,14 @@ onGoto?: ((page: number) => any) | undefined;
|
|
|
1936
2072
|
"onSearch-toggle"?: (() => any) | undefined;
|
|
1937
2073
|
"onThumbs-toggle"?: (() => any) | undefined;
|
|
1938
2074
|
"onImport-excel"?: (() => any) | undefined;
|
|
2075
|
+
"onSettings-toggle"?: (() => any) | undefined;
|
|
1939
2076
|
}>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {
|
|
1940
2077
|
searchInputRef: HTMLInputElement;
|
|
1941
2078
|
}, HTMLDivElement>;
|
|
1942
2079
|
|
|
1943
2080
|
export declare function resolveConfig(config: MachReportConfig | null | undefined, presetName?: string): ResolvedConfig;
|
|
1944
2081
|
|
|
1945
|
-
export declare type ResolvedConfig = Required<Pick<MachReportDefaults, "showExport" | "showPrint" | "showPdfWindow" | "showParams" | "gapPx">> & {
|
|
2082
|
+
export declare type ResolvedConfig = Required<Pick<MachReportDefaults, "showExport" | "showPrint" | "showPdfWindow" | "showSettings" | "showParams" | "gapPx">> & {
|
|
1946
2083
|
pdfFontUrl: string;
|
|
1947
2084
|
theme: MachReportTheme;
|
|
1948
2085
|
messages: MachReportMessages;
|
|
@@ -1951,6 +2088,7 @@ export declare type ResolvedConfig = Required<Pick<MachReportDefaults, "showExpo
|
|
|
1951
2088
|
xlsx: XlsxRenderOptions;
|
|
1952
2089
|
editable: boolean | ReportEditingOptions;
|
|
1953
2090
|
excelImport: boolean | ExcelImportOptions;
|
|
2091
|
+
toolbar: MachReportToolbarOptions;
|
|
1954
2092
|
};
|
|
1955
2093
|
|
|
1956
2094
|
declare interface RichParagraph {
|
package/dist/vue-async.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const r=require("./plugin-
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const r=require("./plugin-DMPLDpBY.cjs");function i(){return Promise.resolve().then(()=>require("./ReportPreview-ClM8h0pM.cjs")).then(e=>e.ReportPreview$1)}const t={install(e,o={}){r.machReportPlugin.install(e,o)}};exports.MachReportPreview=r.MachReportPreview;exports.default=t;exports.machReportAsyncPlugin=t;exports.preloadMachReport=i;
|
package/dist/vue-async.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { m as o } from "./plugin-
|
|
2
|
-
import { M as l } from "./plugin-
|
|
1
|
+
import { m as o } from "./plugin-DDLcFWlk.js";
|
|
2
|
+
import { M as l } from "./plugin-DDLcFWlk.js";
|
|
3
3
|
function a() {
|
|
4
|
-
return import("./ReportPreview-
|
|
4
|
+
return import("./ReportPreview-CBKLI--k.js").then((t) => t.w);
|
|
5
5
|
}
|
|
6
6
|
const n = {
|
|
7
7
|
install(t, r = {}) {
|
package/dist/vue.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("@agile-team/mach-report"),e=require("./ReportPreview-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("@agile-team/mach-report"),e=require("./ReportPreview-ClM8h0pM.cjs"),c=require("./plugin-DMPLDpBY.cjs"),u=require("vue");function p(o){const r=s.createReportSource(o),i=async n=>{if(n.reportIds.length===0)throw new e.PlanLoadError("缺少报表 ID");for(const t of n.reportIds)if(!Object.prototype.hasOwnProperty.call(o,t)||!o[t])throw new e.PlanLoadError(`本地模板 ${t} 不存在`);return r(n)};return i.getParamDefs=r.getParamDefs,i}const R=Object.freeze({loading:!1,hasPlan:!1,pageCount:0,currentPage:1,exporting:null,printing:!1,canExport:!1,canPrint:!1,error:null,pdfFont:Object.freeze({status:"unchecked",fontUrl:""})});function P(){const o=u.shallowRef(null),r=()=>o.value?.state??R,i=Object.freeze({get loading(){return r().loading},get hasPlan(){return r().hasPlan},get pageCount(){return r().pageCount},get currentPage(){return r().currentPage},get exporting(){return r().exporting},get printing(){return r().printing},get canExport(){return r().canExport},get canPrint(){return r().canPrint},get error(){return r().error},get pdfFont(){return r().pdfFont},get editing(){return r().editing??!1},get saving(){return r().saving??!1},get importing(){return r().importing??!1},get dirty(){return r().dirty??!1}});function n(){if(!o.value)throw new e.MachReportError("config","报表预览尚未挂载,请在 ready 后调用控制器");return o.value}return{ref(t){const a=t;o.value=a&&typeof a.reload=="function"&&typeof a.print=="function"&&typeof a.exportAs=="function"&&typeof a.openPdfWindow=="function"&&typeof a.gotoPage=="function"&&typeof a.setParams=="function"?a:null},ready:u.computed(()=>o.value!==null),state:i,async checkPdfFont(){const t=n();return t.checkPdfFont?t.checkPdfFont():{status:"unverified",fontUrl:"",message:"旧自定义控制器未提供字体检查,请由宿主确认字体配置"}},async reload(){await n().reload()},async print(){await n().print()},async exportAs(t){await n().exportAs(t)},openPdfWindow(){n().openPdfWindow()},gotoPage(t){n().gotoPage(t)},async setParams(t,a){await n().setParams(t,a)},async importExcel(t,a){const l=n();if(!l.importExcel)throw new e.MachReportError("config","旧自定义控制器未提供 Excel 导入");return l.importExcel(t,a)},getPlan(){return n().getPlan?.()??null},getChanges(){return n().getChanges?.()??[]}}}function E(){return u.inject(c.MACH_REPORT_CONTROLLER_KEY,null)}exports.DEFAULT_MESSAGES=e.DEFAULT_MESSAGES;exports.DEFAULT_THEME=e.DEFAULT_THEME;exports.MachReportError=e.MachReportError;exports.PlanLoadError=e.PlanLoadError;exports.REPORT_EXPORT_FORMATS=e.REPORT_EXPORT_FORMATS;exports.REPORT_PREVIEW_TOOLS=e.REPORT_PREVIEW_TOOLS;exports.ReportParamPanel=e.ReportParamPanel;exports.ReportPreview=e.ReportPreview;exports.ReportToolbar=e.ReportToolbar;exports.SILENT_LOGGER=e.SILENT_LOGGER;exports.buildPrintDocument=e.buildPrintDocument;exports.buildWordHtml=e.buildWordHtml;exports.createDefaultPdfExporter=e.createDefaultPdfExporter;exports.createFetchRequest=e.createFetchRequest;exports.defineMachReportConfig=e.defineMachReportConfig;exports.defineMachReportPreset=e.defineMachReportPreset;exports.joinReportIds=e.joinReportIds;exports.normalizeReportIds=e.normalizeReportIds;exports.printPlans=e.printPlans;exports.provideMachReportConfig=e.provideMachReportConfig;exports.resolveConfig=e.resolveConfig;exports.themeToCssVars=e.themeToCssVars;exports.toErrorDetail=e.toErrorDetail;exports.useMachReportConfig=e.useMachReportConfig;exports.usePageWindow=e.usePageWindow;exports.usePrintExport=e.usePrintExport;exports.useZoom=e.useZoom;exports.MACH_REPORT_CONFIG_KEY=c.MACH_REPORT_CONFIG_KEY;exports.MACH_REPORT_CONTROLLER_KEY=c.MACH_REPORT_CONTROLLER_KEY;exports.MACH_REPORT_FETCHER_KEY=c.MACH_REPORT_FETCHER_KEY;exports.MACH_REPORT_PDF_EXPORTER_KEY=c.MACH_REPORT_PDF_EXPORTER_KEY;exports.MachReportPreview=c.MachReportPreview;exports.machReportPlugin=c.machReportPlugin;exports.createLocalFetcher=p;exports.useMachReport=P;exports.useReportPreview=E;Object.keys(s).forEach(o=>{o!=="default"&&!Object.prototype.hasOwnProperty.call(exports,o)&&Object.defineProperty(exports,o,{enumerable:!0,get:()=>s[o]})});
|
package/dist/vue.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { createReportSource as u } from "@agile-team/mach-report";
|
|
2
2
|
export * from "@agile-team/mach-report";
|
|
3
|
-
import { P as i, M as c } from "./ReportPreview-
|
|
4
|
-
import { D as
|
|
5
|
-
import { a as f } from "./plugin-
|
|
6
|
-
import { b as
|
|
3
|
+
import { P as i, M as c } from "./ReportPreview-CBKLI--k.js";
|
|
4
|
+
import { D as y, a as C, R as M, b as v, c as F, d as A, e as D, S, f as b, g as L, h as I, i as j, j as H, k as W, l as k, n as Y, p as z, m as G, r as K, t as U, o as N, u as q, q as V, s as X, v as Z } from "./ReportPreview-CBKLI--k.js";
|
|
5
|
+
import { a as f } from "./plugin-DDLcFWlk.js";
|
|
6
|
+
import { b as B, c as J, d as Q, M as ee, m as te } from "./plugin-DDLcFWlk.js";
|
|
7
7
|
import { shallowRef as l, computed as p, inject as g } from "vue";
|
|
8
8
|
function h(o) {
|
|
9
9
|
const e = u(o), a = async (r) => {
|
|
@@ -119,42 +119,44 @@ function w() {
|
|
|
119
119
|
}
|
|
120
120
|
};
|
|
121
121
|
}
|
|
122
|
-
function
|
|
122
|
+
function T() {
|
|
123
123
|
return g(f, null);
|
|
124
124
|
}
|
|
125
125
|
export {
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
126
|
+
y as DEFAULT_MESSAGES,
|
|
127
|
+
C as DEFAULT_THEME,
|
|
128
|
+
B as MACH_REPORT_CONFIG_KEY,
|
|
129
129
|
f as MACH_REPORT_CONTROLLER_KEY,
|
|
130
|
-
|
|
131
|
-
|
|
130
|
+
J as MACH_REPORT_FETCHER_KEY,
|
|
131
|
+
Q as MACH_REPORT_PDF_EXPORTER_KEY,
|
|
132
132
|
c as MachReportError,
|
|
133
|
-
|
|
133
|
+
ee as MachReportPreview,
|
|
134
134
|
i as PlanLoadError,
|
|
135
|
-
|
|
136
|
-
v as
|
|
137
|
-
F as
|
|
138
|
-
A as
|
|
139
|
-
D as
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
135
|
+
M as REPORT_EXPORT_FORMATS,
|
|
136
|
+
v as REPORT_PREVIEW_TOOLS,
|
|
137
|
+
F as ReportParamPanel,
|
|
138
|
+
A as ReportPreview,
|
|
139
|
+
D as ReportToolbar,
|
|
140
|
+
S as SILENT_LOGGER,
|
|
141
|
+
b as buildPrintDocument,
|
|
142
|
+
L as buildWordHtml,
|
|
143
|
+
I as createDefaultPdfExporter,
|
|
144
|
+
j as createFetchRequest,
|
|
143
145
|
h as createLocalFetcher,
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
146
|
+
H as defineMachReportConfig,
|
|
147
|
+
W as defineMachReportPreset,
|
|
148
|
+
k as joinReportIds,
|
|
149
|
+
te as machReportPlugin,
|
|
150
|
+
Y as normalizeReportIds,
|
|
151
|
+
z as printPlans,
|
|
152
|
+
G as provideMachReportConfig,
|
|
153
|
+
K as resolveConfig,
|
|
154
|
+
U as themeToCssVars,
|
|
155
|
+
N as toErrorDetail,
|
|
154
156
|
w as useMachReport,
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
157
|
+
q as useMachReportConfig,
|
|
158
|
+
V as usePageWindow,
|
|
159
|
+
X as usePrintExport,
|
|
160
|
+
T as useReportPreview,
|
|
161
|
+
Z as useZoom
|
|
160
162
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
"use strict";var Zt=Object.create;var pt=Object.defineProperty;var Xt=Object.getOwnPropertyDescriptor;var Qt=Object.getOwnPropertyNames;var _t=Object.getPrototypeOf,en=Object.prototype.hasOwnProperty;var tn=(t,n,l,o)=>{if(n&&typeof n=="object"||typeof n=="function")for(let r of Qt(n))!en.call(t,r)&&r!==l&&pt(t,r,{get:()=>n[r],enumerable:!(o=Xt(n,r))||o.enumerable});return t};var Ge=(t,n,l)=>(l=t!=null?Zt(_t(t)):{},tn(n||!t||!t.__esModule?pt(l,"default",{value:t,enumerable:!0}):l,t));const e=require("vue"),j=require("@agile-team/mach-report"),gt=require("./page-window-index-DEjnM6IB.cjs"),ht=require("./render-plan-CCTL4F9v.cjs"),fe=require("./plugin-DwKr8oF6.cjs");function Xe(t){return t==null?[]:Array.isArray(t)?t.map(String).filter(n=>n!==""):String(t).split(",").map(n=>n.trim()).filter(n=>n!=="")}function nn(t){return Xe(t).join(",")}class Be extends Error{constructor(n){super(n),this.name="PlanLoadError"}}function rn(t={}){const{baseUrl:n="",headers:l,credentials:o,timeoutMs:r=3e4}=t,a=n.replace(/\/+$/,"");return async({url:s,method:d,params:v,signal:y})=>{let p=`${a}${s}`;if(v&&Object.keys(v).length>0){const w=p.indexOf("#"),B=w>=0?p.slice(w):"",P=w>=0?p.slice(0,w):p,R=P.indexOf("?"),C=R>=0?P.slice(0,R):P,S=new URLSearchParams(R>=0?P.slice(R+1):"");for(const[N,L]of Object.entries(v))S.set(N,L);p=`${C}?${S}${B}`}const m=(w,B)=>{const P=new Be(w);return Object.defineProperty(P,"cause",{value:B,configurable:!0,writable:!0}),P};if(y?.aborted)throw m(`请求已取消: ${s}`,y.reason);const b=new AbortController;let u;const E=()=>{b.signal.aborted||(u="external",b.abort(y?.reason))};y?.addEventListener("abort",E,{once:!0});const k=setTimeout(()=>{b.signal.aborted||(u="timeout",b.abort())},r);try{const w=await fetch(p,{method:d.toUpperCase(),headers:{Accept:"application/json",...l},credentials:o,signal:b.signal});if(!w.ok)throw new Be(`HTTP ${w.status} ${s}`);return await w.json()}catch(w){throw u==="timeout"?m(`请求超时(${r}ms): ${s}`,w):u==="external"?m(`请求已取消: ${s}`,w):w instanceof Be?w:m(`请求失败(${s}): ${w instanceof Error?w.message:String(w)}`,w)}finally{clearTimeout(k),y?.removeEventListener("abort",E)}}}function bt(t,n,l={}){const o=l.pxPerMm??3.7795275590551185,r=e.computed(()=>Math.max(0,e.unref(l.gapPx)??18)),a=e.ref(0),s=e.ref(800),d=e.computed(()=>{const w=t.value?.pages??[];return gt.createPageWindowIndex(w.map(B=>B.pageHeightMm*o),r.value)}),v=e.computed(()=>{let w=0;for(const B of t.value?.pages??[])w=Math.max(w,B.pageWidthMm*o);return{w,h:d.value.totalHeightPx}}),y=e.computed(()=>d.value.window(s.value/n.value,a.value/n.value,e.unref(l.overscan)??1)),p=e.computed(()=>{const w=t.value;if(!w)return[];const{start:B,end:P}=y.value;return w.pages.slice(B,P+1).map((R,C)=>({page:R,index:B+C}))});let m=0,b=!1;function u(w){w&&(a.value=w.scrollTop,s.value=w.clientHeight||800)}function E(w,B){return P=>{m||b||(m=requestAnimationFrame(()=>{if(m=0,b||(u(P),B.value<=0))return;const R=Math.max(0,P.scrollTop+32)/n.value;w.value=Math.min(B.value,d.value.pageAt(R)+1)}))}}function k(){b=!0,m&&cancelAnimationFrame(m),m=0}return e.onScopeDispose(k),{contentSize:v,windowRange:y,visiblePages:p,makeScrollHandler:E,refreshViewport:u,pageOffsetPx:w=>d.value.offsetAt(w),destroy:k}}function yt(t){const n=e.ref(1),l=e.ref("fit");let o=0;function r(){o&&cancelAnimationFrame(o),o=0}function a(){r(),o=requestAnimationFrame(()=>{if(o=0,l.value!=="fit")return;const d=t();!d?.viewport||d.viewport.clientWidth<=48||!Number.isFinite(d.pageWidthPx)||(n.value=Math.min(1,(d.viewport.clientWidth-48)/Math.max(1,d.pageWidthPx)))})}function s(d){if(d==="fit")l.value="fit",a();else{if(!Number.isFinite(d))return;r(),l.value="raw",n.value=Math.min(3,Math.max(.3,d/100))}}return e.getCurrentScope()&&e.onScopeDispose(r),{zoom:n,zoomMode:l,applyFitZoom:a,setZoom:s}}const Me=8;function Fe(){return new Promise(t=>setTimeout(t,0))}function Se(t){return`p${t.pageWidthMm}x${t.pageHeightMm}`.replace(/[.+]/g,"_")}function Qe(t){const n=new Map;return t.pages.forEach(r=>{n.has(Se(r))||n.set(Se(r),r)}),`<!doctype html><html><head><meta charset="utf-8"><style>${`.mr-page{margin:0 auto;page-break-after:always;}
|
|
2
|
-
.mr-page tr{break-inside:avoid;page-break-inside:avoid;}
|
|
3
|
-
.mr-comp{break-inside:avoid;page-break-inside:avoid;}
|
|
4
|
-
${[...n.values()].map(r=>`@page ${Se(r)}{size:${r.pageWidthMm}mm ${r.pageHeightMm}mm;margin:0;}`).join(`
|
|
5
|
-
`)}
|
|
6
|
-
body{margin:0;background:#fff;}`}</style></head><body>`}function _e(t){const n=j.renderPage(t,96,{},document);return n.style.page=Se(t),n.outerHTML}function et(t){return{head:Qe(t),pageChunks:t.pages.map(_e)}}async function on(t,n={}){const l={schemaVersion:"mach-report-batch-print",pages:t.flatMap(s=>s.pages)};if(l.pages.length===0)return;const o=Qe(l),r=document.createElement("iframe");r.style.cssText="position:fixed;right:0;bottom:0;width:0;height:0;border:0;visibility:hidden;",document.body.appendChild(r);let a=!1;try{const s=r.contentDocument;s.open(),s.write(o);for(let d=0;d<l.pages.length;d++)s.write(_e(l.pages[d])),d%Me===Me-1&&(n.onProgress?.(d+1,l.pages.length),await Fe());s.write("</body></html>"),s.close(),await Fe(),n.onProgress?.(l.pages.length,l.pages.length),a=!0,r.contentWindow?.focus(),r.contentWindow?.print()}catch(s){n.onError?.(s instanceof Error?`批量打印失败: ${s.message}`:"批量打印失败")}finally{a?setTimeout(()=>r.remove(),6e4):r.remove()}}function wt(t){const{head:n,pageChunks:l}=et(t);return{html:`${`<!doctype html><html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns="http://www.w3.org/TR/REC-html40"><head><meta charset="utf-8"><!--[if gte mso 9]><xml><w:WordDocument><w:View>Print</w:View><w:Zoom>100</w:Zoom></w:WordDocument></xml><![endif]-->${n.replace(/^<!doctype html><html><head>/,"")}`}${l.join("")}</body></html>`,filename:"mach-report.doc"}}function xt(t,n){let l=null,o=!1,r=!1,a=0;const s=new Map,d=new Map;let v=null,y=null,p=null,m=null,b=null;function u(c,f){return!r&&t.value===c&&a===f}function E(){if(r)return;const c=[...s.values()].reverse().find(f=>u(f.plan,f.epoch))?.format??null;c!==v&&(v=c,n.onBusy?.(c))}function k(c,f,x){const $={};return s.set($,{plan:c,epoch:f,format:x}),E(),$}function w(c){s.delete(c),E()}function B(){for(const[c,f]of d)u(f.plan,f.epoch)||(c.close(),d.delete(c))}function P(){a++,C(),E(),B()}const R=e.watch(t,P,{flush:"sync"});function C(){l?.remove(),l=null}function S(){r=!0,a++,R(),C(),B(),s.clear(),n.onPrinting?.(!1)}function N(c,f){const x=URL.createObjectURL(c);setTimeout(()=>URL.revokeObjectURL(x),1e4);const $=document.createElement("a");$.href=x,$.download=f,$.click()}async function L(){if(o)return;const c=t.value;if(r||!c||c.pages.length===0)return;const f=a;o=!0,n.onPrinting?.(!0),C();const x=Qe(c);l=document.createElement("iframe"),l.style.cssText="position:fixed;right:0;bottom:0;width:0;height:0;border:0;visibility:hidden;",document.body.appendChild(l);const $=l;try{const M=$.contentDocument;M.open(),M.write(x);for(let z=0;z<c.pages.length;z++)if(M.write(_e(c.pages[z])),z%Me===Me-1&&await Fe(),$!==l)return;if(M.write("</body></html>"),M.close(),await Fe(),!u(c,f)||$!==l)return;$.contentWindow?.focus(),$.contentWindow?.print()}catch{$===l&&C(),u(c,f)&&n.onError("调用打印失败,请改用导出 PDF","print")}finally{o=!1,r||n.onPrinting?.(!1)}}function U(c,f){if(y?.plan===c&&y.epoch===f)return y.promise;const x=Promise.resolve().then(()=>{if(!u(c,f))throw new Error("报表已切换或卸载");return n.getPdfExporter()(c,$=>{u(c,f)&&n.onWarning?.($)})}).finally(()=>{y?.promise===x&&(y=null)});return y={plan:c,epoch:f,promise:x},x}async function K(){const c=t.value;if(r||!c||c.pages.length===0)return;const f=a;if(p?.plan===c&&p.epoch===f)return p.promise;const x=k(c,f,"PDF"),$=(async()=>{try{const M=await U(c,f);if(!u(c,f))return;N(new Blob([M],{type:"application/pdf"}),"mach-report.pdf")}catch(M){u(c,f)&&n.onError(M instanceof Error?`PDF 导出失败: ${M.message}`:"PDF 导出失败","pdf")}finally{w(x),p?.token===x&&(p=null)}})();return p={plan:c,epoch:f,promise:$,token:x},$}async function W(){const c=t.value;if(r||!c||c.pages.length===0)return;const f=a;if(m?.plan===c&&m.epoch===f)return m.promise;const x={...n.getXlsxOptions?.()},$=k(c,f,"Excel"),M=(async()=>{try{const{renderPlanToXlsx:z}=await import("@agile-team/mach-report/xlsx");if(!u(c,f))return;const{buffer:G,warnings:Q}=await z(c,x);if(!u(c,f)||(Q.length>0&&n.onWarning?.(`Excel 导出有 ${Q.length} 条提示:${Q.slice(0,2).join(";")}`),!u(c,f)))return;N(new Blob([G],{type:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}),"mach-report.xlsx")}catch(z){u(c,f)&&n.onError(z instanceof Error?`Excel 导出失败: ${z.message}`:"Excel 导出失败","export")}finally{w($),m?.token===$&&(m=null)}})();return m={plan:c,epoch:f,promise:M,token:$},M}async function ee(){const c=t.value;if(r||!c||c.pages.length===0)return;const f=a;if(b?.plan===c&&b.epoch===f)return b.promise;const x=k(c,f,"图片"),$=(async()=>{try{const{blobs:M}=await j.renderPlanToImages(c,{dpr:Math.min(2,typeof devicePixelRatio=="number"?devicePixelRatio:1)});if(!u(c,f))return;M.forEach((z,G)=>{N(z,M.length>1?`mach-report-page-${G+1}.png`:"mach-report.png")})}catch(M){u(c,f)&&n.onError(M instanceof Error?`图片导出失败: ${M.message}`:"图片导出失败","export")}finally{w(x),b?.token===x&&(b=null)}})();return b={plan:c,epoch:f,promise:$,token:x},$}function O(){const c=t.value;if(!(r||!c||c.pages.length===0))try{const{html:f,filename:x}=wt(c);N(new Blob([f],{type:"application/msword;charset=utf-8"}),x)}catch(f){n.onError(f instanceof Error?`Word 导出失败: ${f.message}`:"Word 导出失败","export")}}async function ae(c){const f=t.value;if(!(r||!f||f.pages.length===0)){if(c==="pdf"){await K();return}if(c==="xlsx"||c==="excel"){await W();return}if(c==="png"||c==="image"){await ee();return}if(c==="word"||c==="doc"){O();return}if(c!=="html"){n.onError(`不支持的导出格式:${c}`,"export");return}try{const{head:x,pageChunks:$}=et(f),M=`${x}${$.join("")}</body></html>`;N(new Blob([M],{type:"text/html;charset=utf-8"}),"mach-report.html")}catch(x){n.onError(x instanceof Error?`HTML 导出失败: ${x.message}`:"HTML 导出失败","export")}}}function H(){const c=t.value;if(r||!c||c.pages.length===0)return;const f=a,x=window.open("","_blank");if(!x){n.onError("浏览器拦截了弹窗,请允许弹窗后重试","pdf");return}d.set(x,{plan:c,epoch:f});const $=k(c,f,"PDF");U(c,f).then(M=>{if(!u(c,f)||x.closed){d.delete(x)&&x.close();return}const z=URL.createObjectURL(new Blob([M],{type:"application/pdf"}));setTimeout(()=>URL.revokeObjectURL(z),6e4);const G=x.document;G.title="PDF 预览",G.documentElement.style.height="100%",G.body.style.cssText="margin:0;height:100%;";const Q=G.createElement("iframe");Q.title="PDF 预览",Q.style.cssText="display:block;width:100%;height:100%;border:0;",Q.src=z,G.body.replaceChildren(Q),d.delete(x)}).catch(M=>{x.close(),d.delete(x),u(c,f)&&n.onError(M instanceof Error?`PDF 预览失败: ${M.message}`:"PDF 预览失败","pdf")}).finally(()=>w($))}return{print:L,exportAs:ae,exportImages:ee,exportWord:O,openPdfWindow:H,invalidatePending:P,releasePrintFrame:C,dispose:S}}const Et="mrp-hit";function an(t){t.querySelectorAll(`mark.${Et}`).forEach(l=>{const o=l.parentNode;if(o){for(;l.firstChild;)o.insertBefore(l.firstChild,l);l.remove(),o.normalize()}})}function ln(t,n){const l=n.trim();if(!l)return 0;const o=l.toLowerCase(),r=document.createTreeWalker(t,NodeFilter.SHOW_TEXT,{acceptNode(d){const v=d.parentElement;return!v||v.closest("mark")||/^(SCRIPT|STYLE)$/.test(v.tagName)?NodeFilter.FILTER_REJECT:(d.nodeValue??"").toLowerCase().includes(o)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_REJECT}}),a=[];for(let d=r.nextNode();d;d=r.nextNode())a.push(d);let s=0;for(const d of a){const v=d.nodeValue??"",y=v.toLowerCase(),p=d.parentElement;if(!p)continue;const m=document.createDocumentFragment();let b=0,u=y.indexOf(o);for(;u>=0;){u>b&&m.appendChild(document.createTextNode(v.slice(b,u)));const E=document.createElement("mark");E.className=Et,E.textContent=v.slice(u,u+l.length),m.appendChild(E),s++,b=u+l.length,u=y.indexOf(o,b)}b<v.length&&m.appendChild(document.createTextNode(v.slice(b))),p.replaceChild(m,d)}return s}const sn=new Set(["line","rect","ellipse","chart"]);function*un(t){for(const n of t.cells??[])for(const l of n??[])yield l?.text??"",yield*l?.children??[]}function*cn(t){if(ht.isRichText(t))for(const n of t.richParagraphs)for(const l of n.segments??[])yield(l.kind==="field"?l.field:l.text)??"";else t.lines?.length?yield*t.lines:yield t.text??""}function*dn(t){const n=[t.values()];for(;n.length>0;){const l=n[n.length-1].next();if(l.done){n.pop();continue}const o=l.value;if(typeof o=="string"){yield o;continue}yield"",!ht.isImageBackedComponent(o)&&(o.kind==="text"?n.push(cn(o)):o.grid?n.push(un(o.grid)):sn.has(o.kind)||(yield o.fallbackText??""))}}function*fn(t){for(let n=0;n<t.pages.length;n++){for(const l of dn(t.pages[n].components))yield{text:l,pageIndex:n};yield{text:"",pageIndex:n}}}function pn(t,n){const l=t.toLowerCase();let o=0;for(let r=l.indexOf(n);r>=0;r=l.indexOf(n,r+n.length))o++;return o}function mn(t){const{plan:n,gotoPage:l,highlight:o,clearHighlights:r}=t,a=e.ref(!1),s=e.ref(""),d=e.ref(0),v=e.ref(0),y=e.ref(!1);let p=[];const m=e.computed(()=>{if(v.value===0)return null;const C=d.value;let S=0,N=p.length-1;for(;S<N;){const U=S+N>>>1;p[U].cumulative<=C?S=U+1:N=U}const L=p[S];return L?{pageIndex:L.pageIndex,occurrence:C-(p[S-1]?.cumulative??0)}:null});let b=null,u=null,E=0;function k(){E++,b&&clearTimeout(b),u&&clearTimeout(u),b=u=null,y.value=!1}function w(C){s.value=C,d.value=0,v.value=0,p=[],y.value=!1;const S=C.trim().toLowerCase(),N=n.value;if(!S||!N)return;y.value=!0;const L=E,U=fn(N),K=[];let W=0;function ee(){if(u=null,L!==E||N!==n.value)return;const O=performance.now();let ae=0;for(;ae<5e3&&performance.now()-O<4;){const H=U.next();if(H.done){p=K,v.value=W,y.value=!1,p[0]&&l(p[0].pageIndex+1);return}const c=pn(H.value.text,S);if(c>0){W+=c;const f=K[K.length-1];f?.pageIndex===H.value.pageIndex?f.cumulative=W:K.push({pageIndex:H.value.pageIndex,cumulative:W})}ae++}u=setTimeout(ee,0)}ee()}function B(C){if(k(),s.value=C,d.value=v.value=0,p=[],!C.trim()){w("");return}y.value=!0,b=setTimeout(()=>{b=null,w(C)},Math.max(0,e.unref(t.debounceMs)??200))}function P(C){const S=v.value;if(S===0||y.value)return;d.value=(d.value+C+S)%S;const N=m.value;N&&l(N.pageIndex+1)}function R(){k(),s.value="",d.value=v.value=0,p=[]}return e.watch(n,R,{flush:"sync"}),e.onScopeDispose(R),{visible:a,query:s,matchIndex:d,matchCount:v,activeMatch:m,searching:y,toggle:()=>{a.value=!a.value},onInput:B,onNav:P,apply:C=>{s.value.trim()&&o(C,s.value.trim())},clear:C=>{r(C)},reset:R}}function vn(t,n){const l=e.computed(()=>{if(t.value)return!0;if(typeof location>"u")return!1;try{return new URLSearchParams(location.search).get("mrp-debug")==="1"}catch{return!1}}),o=e.computed(()=>!l.value||!n.plan.value?0:Math.round(JSON.stringify(n.plan.value).length/1024)),r=e.computed(()=>!l.value||!n.plan.value?null:{pages:n.pageCount.value,window:`${n.windowRange.value.start}-${n.windowRange.value.end}`,zoom:`${Math.round(n.zoom.value*100)}%`,loadMs:`${n.loadMs.value}ms`,planKB:o.value});return{enabled:l,debugStats:r}}function gn(t,n){const{thumbsRoot:l,visible:o,renderThumbCanvas:r}=n,a=e.ref(0),s=e.ref(800),d=e.computed(()=>(t.value?.pages??[]).map(P=>Math.round(P.pageHeightMm/P.pageWidthMm*116))),v=e.computed(()=>gt.createPageWindowIndex(d.value.map(P=>P+20),8)),y=e.computed(()=>v.value.window(s.value,a.value,1)),p=e.computed(()=>{if(!o.value)return[];const{start:P,end:R}=y.value;return d.value.slice(P,R+1).map((C,S)=>({index:P+S,height:C}))});let m=0,b=0,u=!1;function E(){const P=l.value;P&&(a.value=P.scrollTop,s.value=P.clientHeight||800)}function k(){u||b||(b=requestAnimationFrame(()=>{b=0,E()}))}function w(){if(p.value,m&&cancelAnimationFrame(m),m=0,u||!o.value||!t.value||!l.value)return;E();const P=p.value,R=t.value,C=l.value;let S=0;function N(){if(m=0,!(u||!o.value||t.value!==R||l.value!==C)){for(let L=0;S<P.length&&L<2;L++,S++){const U=P[S].index,K=C.querySelector(`[data-thumb="${U+1}"]`);if(!K||K.childElementCount>0)continue;const W=r(U);W&&(W.style.width="100%",W.style.height="100%",W.style.display="block",K.appendChild(W))}S<P.length&&(m=requestAnimationFrame(N))}}m=requestAnimationFrame(N)}function B(){u=!0,m&&cancelAnimationFrame(m),b&&cancelAnimationFrame(b),m=b=0}return e.onScopeDispose(B),{schedule:w,destroy:B,onScroll:k,windowRange:y,visibleThumbs:p}}function hn(){const t=e.shallowRef(0);return{loadMs:t,start(){return typeof performance<"u"?performance.now():0},end(n){t.value=n?Math.round(performance.now()-n):0}}}const bn={class:"mrp-toolbar"},yn={class:"mrp-title"},wn=["disabled"],xn={class:"mrp-pageinfo"},En=["disabled"],Pn=["disabled"],kn={key:2,class:"mrp-search"},Cn=["placeholder","value"],$n={key:0,class:"mrp-search-count",role:"status"},Bn=["disabled"],Sn=["disabled"],Rn=["disabled"],Mn=["disabled"],Fn=["disabled"],Dn=["disabled"],Tn=["disabled"],Nn=["disabled"],In=["disabled"],Vn=e.defineComponent({__name:"ReportToolbar",props:{pageCount:{},currentPage:{},zoomMode:{},zoom:{},showExport:{type:Boolean},showPrint:{type:Boolean},showPdfWindow:{type:Boolean},messages:{},search:{},thumbsVisible:{type:Boolean},showImport:{type:Boolean},busy:{type:Boolean}},emits:["goto","zoom","export","print","pdf-window","search-input","search-nav","search-toggle","thumbs-toggle","import-excel"],setup(t){const n=t,l=e.ref(null);e.watch(()=>n.search.visible,r=>{r&&e.nextTick(()=>l.value?.focus())});function o(r,a,s){return r.replace("{cur}",String(a)).replace("{total}",String(s))}return(r,a)=>(e.openBlock(),e.createElementBlock("div",bn,[e.createElementVNode("span",yn,e.toDisplayString(t.messages.title),1),t.pageCount>0?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("button",{class:"mrp-nav",type:"button",disabled:t.currentPage<=1,onClick:a[0]||(a[0]=s=>r.$emit("goto",t.currentPage-1))},e.toDisplayString(t.messages.prevPage),9,wn),e.createElementVNode("span",xn,e.toDisplayString(o(t.messages.pageInfo,t.currentPage,t.pageCount)),1),e.createElementVNode("button",{class:"mrp-nav",type:"button",disabled:t.currentPage>=t.pageCount,onClick:a[1]||(a[1]=s=>r.$emit("goto",t.currentPage+1))},e.toDisplayString(t.messages.nextPage),9,En)],64)):e.createCommentVNode("",!0),a[18]||(a[18]=e.createElementVNode("span",{class:"mrp-spacer"},null,-1)),t.showImport?(e.openBlock(),e.createElementBlock("button",{key:1,class:"mrp-nav mrp-import-excel",type:"button",disabled:t.busy,onClick:a[2]||(a[2]=s=>r.$emit("import-excel"))},e.toDisplayString(t.messages.importExcel??"导入 Excel 模板"),9,Pn)):e.createCommentVNode("",!0),t.search.visible?(e.openBlock(),e.createElementBlock("div",kn,[e.createElementVNode("input",{ref_key:"searchInputRef",ref:l,class:"mrp-search-input",type:"text",placeholder:t.messages.searchPlaceholder,value:t.search.query,onInput:a[3]||(a[3]=s=>r.$emit("search-input",s.target.value))},null,40,Cn),t.search.query?(e.openBlock(),e.createElementBlock("span",$n,e.toDisplayString(t.search.searching?t.messages.searching??"搜索中…":o(t.messages.matchInfo,t.search.matchCount>0?t.search.matchIndex+1:0,t.search.matchCount)),1)):e.createCommentVNode("",!0),e.createElementVNode("button",{class:"mrp-nav",type:"button",disabled:t.search.matchCount===0,onClick:a[4]||(a[4]=s=>r.$emit("search-nav",-1))},e.toDisplayString(t.messages.prevMatch),9,Bn),e.createElementVNode("button",{class:"mrp-nav",type:"button",disabled:t.search.matchCount===0,onClick:a[5]||(a[5]=s=>r.$emit("search-nav",1))},e.toDisplayString(t.messages.nextMatch),9,Sn)])):e.createCommentVNode("",!0),e.createElementVNode("button",{class:e.normalizeClass(["mrp-nav",{"mrp-active":t.search.visible}]),type:"button",title:"Ctrl+F",onClick:a[6]||(a[6]=s=>r.$emit("search-toggle"))}," 🔍 ",2),e.createElementVNode("button",{class:e.normalizeClass(["mrp-nav",{"mrp-active":t.thumbsVisible}]),type:"button",onClick:a[7]||(a[7]=s=>r.$emit("thumbs-toggle"))}," ▦ "+e.toDisplayString(t.messages.thumbnails),3),e.createElementVNode("button",{class:e.normalizeClass(["mrp-nav",{"mrp-active":t.zoomMode==="fit"}]),type:"button",onClick:a[8]||(a[8]=s=>r.$emit("zoom","fit"))},e.toDisplayString(t.messages.fitWidth),3),e.createElementVNode("button",{class:e.normalizeClass(["mrp-nav",{"mrp-active":t.zoomMode==="raw"&&Math.round(t.zoom*100)===100}]),type:"button",onClick:a[9]||(a[9]=s=>r.$emit("zoom",100))}," 100% ",2),e.createElementVNode("button",{class:e.normalizeClass(["mrp-nav",{"mrp-active":t.zoomMode==="raw"&&Math.round(t.zoom*100)===150}]),type:"button",onClick:a[10]||(a[10]=s=>r.$emit("zoom",150))}," 150% ",2),t.showExport?(e.openBlock(),e.createElementBlock("button",{key:3,class:"mrp-nav",type:"button",disabled:t.busy,onClick:a[11]||(a[11]=s=>r.$emit("export","html"))},e.toDisplayString(t.messages.exportHtml),9,Rn)):e.createCommentVNode("",!0),t.showExport?(e.openBlock(),e.createElementBlock("button",{key:4,class:"mrp-nav",type:"button",disabled:t.busy,onClick:a[12]||(a[12]=s=>r.$emit("export","pdf"))},e.toDisplayString(t.messages.exportPdf),9,Mn)):e.createCommentVNode("",!0),t.showExport?(e.openBlock(),e.createElementBlock("button",{key:5,class:"mrp-nav",type:"button",disabled:t.busy,onClick:a[13]||(a[13]=s=>r.$emit("export","xlsx"))},e.toDisplayString(t.messages.exportExcel),9,Fn)):e.createCommentVNode("",!0),t.showExport?(e.openBlock(),e.createElementBlock("button",{key:6,class:"mrp-nav",type:"button",disabled:t.busy,onClick:a[14]||(a[14]=s=>r.$emit("export","png"))},e.toDisplayString(t.messages.exportImage),9,Dn)):e.createCommentVNode("",!0),t.showExport?(e.openBlock(),e.createElementBlock("button",{key:7,class:"mrp-nav",type:"button",disabled:t.busy,onClick:a[15]||(a[15]=s=>r.$emit("export","word"))},e.toDisplayString(t.messages.exportWord),9,Tn)):e.createCommentVNode("",!0),t.showPrint?(e.openBlock(),e.createElementBlock("button",{key:8,class:"mrp-nav",type:"button",disabled:t.busy,onClick:a[16]||(a[16]=s=>r.$emit("print"))},e.toDisplayString(t.messages.print),9,Nn)):e.createCommentVNode("",!0),t.showPdfWindow?(e.openBlock(),e.createElementBlock("button",{key:9,class:"mrp-nav",type:"button",disabled:t.busy,onClick:a[17]||(a[17]=s=>r.$emit("pdf-window"))},e.toDisplayString(t.messages.pdfWindow),9,In)):e.createCommentVNode("",!0)]))}}),tt=(t,n)=>{const l=t.__vccOpts||t;for(const[o,r]of n)l[o]=r;return l},Pt=tt(Vn,[["__scopeId","data-v-1c2568a7"]]),On={class:"mrp-params"},zn={class:"mrp-params-title"},Ln={class:"mrp-params-grid"},Wn={class:"mrp-param-label"},An={key:0,class:"mrp-param-star"},Hn=["value","onChange"],qn={value:"",disabled:"",hidden:""},jn=["value"],Un=["type","placeholder","value","onInput"],Kn={class:"mrp-params-actions"},Gn=e.defineComponent({__name:"ReportParamPanel",props:{defs:{},modelValue:{},messages:{},attempted:{type:Boolean}},emits:["update:modelValue","query","reset"],setup(t,{emit:n}){const l=t,o=n,r=e.ref({...l.modelValue});e.watch(()=>l.modelValue,v=>{r.value={...v}});const a=e.computed(()=>l.defs.map(v=>({def:v,label:v.label??v.field,value:r.value[v.field]??""})));function s(v,y){r.value={...r.value,[v]:y},o("update:modelValue",{...r.value})}function d(v){const y=l.defs.find(p=>p.field===v);return l.attempted&&y?.required===!0&&!(r.value[v]??"").trim()}return(v,y)=>(e.openBlock(),e.createElementBlock("div",On,[e.createElementVNode("span",zn,e.toDisplayString(t.messages.paramsTitle),1),e.createElementVNode("div",Ln,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,p=>(e.openBlock(),e.createElementBlock("label",{key:p.def.field,class:e.normalizeClass(["mrp-param",{"mrp-param-missing":d(p.def.field)}])},[e.createElementVNode("span",Wn,[e.createTextVNode(e.toDisplayString(p.label),1),p.def.required?(e.openBlock(),e.createElementBlock("i",An,"*")):e.createCommentVNode("",!0)]),(p.def.type??"text")==="select"?(e.openBlock(),e.createElementBlock("select",{key:0,class:"mrp-param-input",value:p.value,onChange:m=>s(p.def.field,m.target.value),onKeydown:y[0]||(y[0]=e.withKeys(m=>v.$emit("query"),["enter"]))},[e.createElementVNode("option",qn,e.toDisplayString(p.def.placeholder??`请选择${p.label}`),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(p.def.options??[],m=>(e.openBlock(),e.createElementBlock("option",{key:m.value,value:m.value},e.toDisplayString(m.label),9,jn))),128))],40,Hn)):(e.openBlock(),e.createElementBlock("input",{key:1,class:"mrp-param-input",type:p.def.type==="number"?"number":p.def.type==="date"?"date":"text",placeholder:p.def.placeholder??`请输入${p.label}`,value:p.value,onInput:m=>s(p.def.field,m.target.value),onKeydown:y[1]||(y[1]=e.withKeys(m=>v.$emit("query"),["enter"]))},null,40,Un))],2))),128))]),e.createElementVNode("div",Kn,[e.createElementVNode("button",{class:"mrp-nav mrp-param-query",type:"button",onClick:y[2]||(y[2]=p=>v.$emit("query"))},e.toDisplayString(t.messages.query),1),e.createElementVNode("button",{class:"mrp-nav",type:"button",onClick:y[3]||(y[3]=p=>v.$emit("reset"))},e.toDisplayString(t.messages.reset),1)])]))}}),kt=tt(Gn,[["__scopeId","data-v-aafce92d"]]),Ct={title:"报表预览",prevPage:"‹ 上一页",nextPage:"下一页 ›",pageInfo:"{cur} / {total}",fitWidth:"适宽",exportHtml:"导出 HTML",exportPdf:"导出 PDF",exportExcel:"导出 Excel",exportImage:"导出图片",exportWord:"导出 Word",exporting:"正在生成 {format}…",print:"打印",pdfWindow:"PDF 窗口",loading:"报表渲染中…",empty:"暂无预览数据",errorPrefix:"",retry:"重试",pdfFontUnavailable:"PDF 字体尚未就绪,请联系管理员检查字体配置;预览及其它导出仍可使用。",searchPlaceholder:"搜索报表内容",matchInfo:"{cur}/{total}",prevMatch:"‹",nextMatch:"›",thumbnails:"缩略图",paramsTitle:"查询条件",query:"查 询",reset:"重 置",paramRequired:"请填写{label}",searching:"搜索中…",importExcel:"导入 Excel 模板",importing:"正在导入 Excel…",editCell:"编辑单元格",editingHint:"双击单元格编辑 · Enter 确认 · Esc 取消",saving:"正在保存修改…",editInvalidNumber:"请输入有效数字;清空表示无值",editInvalidBoolean:"请输入 true / false、是 / 否或 1 / 0",editConflict:"该单元格已变化,请重新打开编辑"},$t={shellBg:"#525659",shellFg:"#e8e8e8",toolbarBg:"#323639",toolbarBorder:"#22252a",toolbarFg:"#e8e8e8",btnFg:"#cfcfcf",btnBorder:"#4a4d52",btnHoverBg:"#414549",btnHoverFg:"#ffffff",btnActiveBg:"#2d5fb8"};function Bt(t={}){return{...t,defaults:t.defaults??{},presets:t.presets??{}}}function Yn(t){return t}const ie={showExport:!0,showPrint:!0,showPdfWindow:!0,showParams:!0,gapPx:18,pdfFontUrl:"/simhei.ttf",logger:console},Jn={warn:()=>{},info:()=>{}};function Re(t,n){return{...t,...n,theme:{...t?.theme,...n?.theme},messages:{...t?.messages,...n?.messages},preview:{...t?.preview,...n?.preview},xlsx:{...t?.xlsx,...n?.xlsx}}}function St(t,n){const l=n?t?.presets?.[n]:t?.defaultPreset?t?.presets?.[t.defaultPreset]:void 0,o=Re(t?.defaults,l);return{showExport:o.showExport??ie.showExport,showPrint:o.showPrint??ie.showPrint,showPdfWindow:o.showPdfWindow??ie.showPdfWindow,showParams:o.showParams??ie.showParams,gapPx:o.gapPx??ie.gapPx,pdfFontUrl:o.pdfFontUrl??ie.pdfFontUrl,theme:{...$t,...o.theme},messages:{...Ct,...o.messages},logger:o.logger??ie.logger,preview:{overscanPages:mt(o.preview?.overscanPages,1,10,!0),searchDebounceMs:mt(o.preview?.searchDebounceMs,200,2e3)},xlsx:{...o.xlsx},editable:o.editable??!1,excelImport:o.excelImport??!1}}function mt(t,n,l,o=!1){if(t==null||!Number.isFinite(t))return n;const r=Math.max(0,Math.min(l,t));return o?Math.floor(r):r}function Rt(t){const n={};return t.shellBg!=null&&(n["--mrp-shell-bg"]=t.shellBg),t.shellFg!=null&&(n["--mrp-shell-fg"]=t.shellFg),t.toolbarBg!=null&&(n["--mrp-toolbar-bg"]=t.toolbarBg),t.toolbarBorder!=null&&(n["--mrp-toolbar-border"]=t.toolbarBorder),t.toolbarFg!=null&&(n["--mrp-toolbar-fg"]=t.toolbarFg),t.btnFg!=null&&(n["--mrp-btn-fg"]=t.btnFg),t.btnBorder!=null&&(n["--mrp-btn-border"]=t.btnBorder),t.btnHoverBg!=null&&(n["--mrp-btn-hover-bg"]=t.btnHoverBg),t.btnHoverFg!=null&&(n["--mrp-btn-hover-fg"]=t.btnHoverFg),t.btnActiveBg!=null&&(n["--mrp-btn-active-bg"]=t.btnActiveBg),n}function Zn(t){const n=e.inject(fe.MACH_REPORT_CONFIG_KEY,null),l=e.computed(()=>{const o=n?.value??null,r="defaults"in t||"presets"in t||"defaultPreset"in t?Bt(t):{defaults:t,presets:{}};if(!o)return r;const a={...o.presets,...r.presets};for(const s of Object.keys(a))a[s]=Re(Re(o.presets[s],r.defaults),r.presets[s]);return{defaults:Re(o.defaults,r.defaults),presets:a,defaultPreset:r.defaultPreset??o.defaultPreset}});e.provide(fe.MACH_REPORT_CONFIG_KEY,l)}function Mt(){return e.inject(fe.MACH_REPORT_CONFIG_KEY,e.computed(()=>null))}const vt=new Map,ce=new Map,Xn=15e3;function Ze(t,n){return Object.assign(new Error(t),{cause:n})}function ye(t,n){return`PDF 字体 ${JSON.stringify(t)}:${n}。请部署支持报表文字的字体文件,并将 pdfFontUrl 配置为可访问的字体 URL;西文报表可设为空串`}function De(t){if(t?.reason instanceof Error&&t.reason.name==="AbortError")return t.reason;const n=Ze("PDF 字体检查已取消",t?.reason);return n.name="AbortError",n}async function Qn(t,n){let l=!1;const o=setTimeout(()=>{l=!0,n.abort()},Xn);try{const r=await fetch(t,{method:"HEAD",signal:n.signal});if(n.signal.aborted)throw De(n.signal);if(r.status===405||r.status===501||r.type==="opaque")return{status:"unverified",fontUrl:t,message:`PDF 字体 ${JSON.stringify(t)} 无法通过 HEAD 检查验证;仍可尝试导出,届时会加载并校验字体`};if(!r.ok){const s=new Error(`字体请求返回 HTTP ${r.status}`);return{status:"error",fontUrl:t,message:ye(t,s.message),cause:s}}const a=r.headers.get("content-type")??"";if(/text\/html|application\/xhtml\+xml/i.test(a)){const s=new Error("字体 URL 返回 HTML 页面(可能是 SPA 路由回退),不是字体文件");return{status:"error",fontUrl:t,message:ye(t,s.message),cause:s}}if(/^text\//i.test(a)||/(?:\/|\+)json(?:\s*;|$)/i.test(a)){const s=new Error(`字体 URL 返回 ${a} 文本响应,不是字体文件`);return{status:"error",fontUrl:t,message:ye(t,s.message),cause:s}}return{status:"available",fontUrl:t,message:"PDF 字体资源可达;文字覆盖范围将在实际导出时校验"}}catch(r){if(n.signal.aborted&&!l)throw De(n.signal);return{status:"error",fontUrl:t,message:ye(t,l?"字体检查超时,请检查网络或字体服务":"字体检查失败,请检查网络、字体服务或跨域访问配置"),cause:r}}finally{clearTimeout(o)}}function _n(t,n){if(n?.aborted)return Promise.reject(De(n));if(!t)return Promise.resolve({status:"disabled",fontUrl:t,message:"已停用自定义 PDF 字体;内置字体用于西文,其他文字会在导出时校验"});const l=vt.get(t);if(l)return Promise.resolve(l);let o=ce.get(t);if(!o){const a=new AbortController;o={controller:a,promise:Qn(t,a),subscribers:0};const s=o;ce.set(t,s),s.promise=s.promise.then(d=>(!a.signal.aborted&&d.status==="available"&&vt.set(t,d),d)).finally(()=>{ce.get(t)===s&&ce.delete(t)})}const r=o;return r.subscribers++,new Promise((a,s)=>{let d=!1;const v=()=>d?!1:(d=!0,r.subscribers--,n?.removeEventListener("abort",y),!0),y=()=>{v()&&(r.subscribers===0&&(ce.get(t)===r&&ce.delete(t),r.controller.abort()),s(De(n)))};n?.addEventListener("abort",y,{once:!0}),r.promise.then(p=>{v()&&a(p)},p=>{v()&&s(p)}),n?.aborted&&y()})}function Ft(t={fontUrl:"/simhei.ttf"}){let n=null;const l=async(o,r)=>{n||(n=await import("@agile-team/mach-report/pdf"));let a=null;if(t.fontUrl)try{if(a=await n.loadFontWithCache(t.fontUrl,{strict:!0}),!a?.byteLength)throw new Error("字体文件为空或加载失败")}catch(m){const b=m instanceof Error?m.message:String(m);throw Ze(ye(t.fontUrl,b),m)}let s;try{s=await n.renderPlanToPdf(o,a?{customFontBytes:a}:{})}catch(m){if(!a)throw m;const b=m instanceof Error?m.message:String(m);throw Ze(`PDF 生成失败:${b}。当前字体 URL 为 ${JSON.stringify(t.fontUrl)};请确认该文件是有效字体,或重新配置 pdfFontUrl`,m)}const{bytes:d,unsupportedTextCount:v,pageErrors:y,fidelityWarnings:p}=s;if(v>0)throw new Error(`PDF 中有 ${v} 行文字无法编码;请部署支持所用文字的字体并配置 pdfFontUrl`);if(y.length>0)throw new Error(`PDF 有 ${y.length} 页渲染失败:${y[0]}`);return p.length>0&&r?.(`PDF 有 ${p.length} 处版式降级:${p.slice(0,2).join(";")}`),d};return l.checkFont=o=>_n(t.fontUrl,o),l}class re extends Error{constructor(n,l,o){super(l),this.name="MachReportError",this.code=n,this.cause=o}}function Dt(t){return t instanceof re?{code:t.code,cause:t.cause}:{code:"render",cause:t}}function de(t){return JSON.parse(JSON.stringify(t))}function er(t){const n=t.closest(".mrp-page-holder"),l=t.closest("[data-mr-component-index]");if(!n||!l)return null;const o={pageIndex:Number(n.dataset.page)-1,componentIndex:Number(l.dataset.mrComponentIndex),rowIndex:Number(t.dataset.mrRowIndex),columnIndex:Number(t.dataset.mrColumnIndex)};return Object.values(o).every(r=>Number.isInteger(r)&&r>=0)?o:null}function tr(t,n,l){const o=t.ownerDocument.createElement("textarea");return o.className="mrp-cell-editor",o.setAttribute("aria-label",n),o.value=l==null?"":String(l),o.style.cssText="position:absolute;inset:0;width:100%;height:100%;min-height:20px;box-sizing:border-box;z-index:10;resize:none;margin:0;padding:2px 4px;border:2px solid #2563eb;outline:none;background:#fff;color:#111;font:inherit;line-height:1.25;white-space:pre-wrap;",t.appendChild(o),o}function nr(t){const n=e.shallowRef(null),l=e.ref(!1),o=e.shallowRef([]);let r=null;function a(){const u=n.value;n.value=null,l.value=!1,r=null,u?.controller.abort(),u?.input.remove()}function s(){a(),o.value=[]}function d(u){return n.value===u&&!u.controller.signal.aborted&&t.plan.value===u.plan}function v(u){const E=t.options.value,k=j.getReportCellContext(u.plan,u.address);if(!(typeof E=="object"?E===u.options:E===!0)||!k?.editable||u.options.canEdit?.(k)===!1)throw new j.ReportCellEditError("readonly")}async function y(u){try{v(u);const E=j.createReportCellEdit(u.plan,u.address,u.input.value);if(Object.is(E.value,E.previousValue))return a(),!0;const k={signal:u.controller.signal},w=await u.options.validate?.(de(E),k);if(!d(u))return!1;if(w)throw new Error(w);if(v(u),await u.options.save?.(de(E),k),!d(u))return!1;v(u);const B=j.applyReportCellEdit(u.plan,E);return a(),o.value=[...o.value,E],t.plan.value=B,t.onChange(de(E)),!0}catch(E){return d(u)&&(t.onError(t.errorMessage?.(E)??(E instanceof Error?E.message:"单元格保存失败"),E),u.input.disabled=!1,u.input.setAttribute("aria-invalid","true"),u.input.focus()),!1}finally{n.value===u&&(l.value=!1)}}async function p(){if(r)return r;const u=n.value;if(!u)return!0;if(!d(u))return a(),!1;l.value=!0,u.input.disabled=!0;const E=y(u);r=E;const k=await E;return r===E&&(r=null),k}function m(u){u.stopPropagation(),!u.isComposing&&(u.key==="Escape"&&(u.preventDefault(),a()),u.key==="Enter"&&!u.shiftKey&&(u.preventDefault(),p()))}async function b(u){if(!t.options.value||t.blocked())return;const E=u.target;if(!(E instanceof Element)||E.closest(".mrp-cell-editor"))return;const k=E.closest("td[data-mr-row-index]");if(!k||!await p()||!k.isConnected)return;const w=t.plan.value,B=er(k);if(!w||!B||!t.options.value||t.blocked())return;const P=typeof t.options.value=="object"?t.options.value:{};try{const R=j.getReportCellContext(w,B);if(!R?.editable||P.canEdit?.(R)===!1)return;const C=tr(k,t.label(),R.value);n.value={plan:w,address:B,input:C,controller:new AbortController,options:P},C.addEventListener("keydown",m),C.addEventListener("blur",()=>{l.value||p()}),C.focus(),C.select()}catch(R){t.onError(R instanceof Error?R.message:"无法编辑单元格",R)}}return e.watch(t.options,(u,E)=>{(!u||u!==E)&&a()},{flush:"sync"}),e.watch(t.plan,()=>{n.value&&t.plan.value!==n.value.plan&&a()},{flush:"sync"}),e.onScopeDispose(s),{active:n,saving:l,changes:o,cancel:a,reset:s,commit:p,onDoubleClick:b,getChanges:()=>de(o.value)}}const rr={key:2,class:"mrp-edit-hint",role:"status"},or={key:4,class:"mrp-export-notice mrp-export-warning",role:"status"},ar={class:"mrp-main"},lr={key:0,class:"mrp-state"},sr={key:1,class:"mrp-state mrp-error"},ir={key:2,class:"mrp-state"},ur=["data-page"],cr=["onClick"],dr=["data-thumb"],fr={class:"mrp-thumb-no"},pr={class:"mrp-overlay"},mr={key:5,class:"mrp-debug","aria-hidden":"true"},$e=96/25.4,Ye="mach-report:ui",Je="mach-report:ui:wide",vr=e.defineComponent({__name:"ReportPreview",props:{reportId:{type:[String,Array],default:null},params:{type:Object,default:()=>({})},height:{type:String,default:"100vh"},autoLoad:{type:Boolean,default:!0},showExport:{type:Boolean,default:void 0},showPrint:{type:Boolean,default:void 0},showPdfWindow:{type:Boolean,default:void 0},gapPx:{type:Number,default:void 0},messages:{type:Object,default:void 0},preset:{type:String,default:void 0},debug:{type:Boolean,default:!1},paramDefs:{type:Array,default:void 0},showParams:{type:Boolean,default:void 0},editable:{type:[Boolean,Object],default:void 0},excelImport:{type:[Boolean,Object],default:void 0},fetcher:{type:Function,default:null}},emits:["loaded","error","warning","cell-edit","template-import"],setup(t,{expose:n,emit:l}){e.useCssVars(i=>({a2d6c888:N.value+"px"}));const o=t,r=l,a=e.shallowRef(null),s=e.ref(!1),d=e.ref(""),v=e.shallowRef(null),y=e.ref(null),p=e.ref(!1),m=e.shallowRef(Object.freeze({status:"unchecked",fontUrl:""})),b=e.ref(null),u=e.ref(1),E=e.ref(null),k=e.ref(null),w=e.ref(null),B=e.ref(!1),P=e.ref(!1),R=e.ref(null),C=hn(),S=e.computed(()=>!!a.value?.pages.length&&a.value.pages.every(i=>i.layout==="wide")),N=e.computed(()=>Math.max(0,G.value));let L=Ye;const U=e.inject(fe.MACH_REPORT_FETCHER_KEY,null),K=e.inject(fe.MACH_REPORT_PDF_EXPORTER_KEY,null),W=e.computed(()=>Xe(o.reportId)),ee=e.computed(()=>o.fetcher??U),O=e.computed(()=>a.value?.pages.length??0),ae=e.computed(()=>Object.freeze({loading:s.value,hasPlan:O.value>0,pageCount:O.value,currentPage:u.value,exporting:y.value,printing:p.value,canExport:!s.value&&!P.value&&!V.saving.value&&O.value>0&&y.value===null,canPrint:!s.value&&!P.value&&!V.saving.value&&O.value>0&&!p.value,error:v.value,pdfFont:m.value,editing:V.active.value!==null,saving:V.saving.value,importing:P.value,dirty:V.changes.value.length>0}));function H(i,g,h){v.value=Object.freeze({message:i,code:g,cause:h}),r("error",i,{code:g,cause:h})}const c=Mt(),f=e.computed(()=>St(c.value,o.preset)),x=e.computed(()=>({...f.value.messages,...o.messages})),$=e.computed(()=>o.showExport??f.value.showExport),M=e.computed(()=>o.showPrint??f.value.showPrint),z=e.computed(()=>o.showPdfWindow??f.value.showPdfWindow),G=e.computed(()=>o.gapPx??(S.value?0:f.value.gapPx)),Q=e.computed(()=>o.showParams??f.value.showParams),nt=e.computed(()=>o.editable??f.value.editable),we=e.computed(()=>o.excelImport??f.value.excelImport);function Nt(i){return i instanceof j.ReportCellEditError?{number:x.value.editInvalidNumber,boolean:x.value.editInvalidBoolean,conflict:x.value.editConflict}[i.code]??i.message:i instanceof Error?i.message:"单元格保存失败"}const V=nr({plan:a,options:nt,blocked:()=>s.value||P.value||y.value!==null||p.value,label:()=>x.value.editCell??"编辑单元格",errorMessage:Nt,onChange:i=>{v.value=null,b.value=null,r("cell-edit",i)},onError:(i,g)=>{b.value={kind:"error",message:i},H(i,"edit",g)}});let rt=null,Te=null;function ot(){if(K)return K;const i=f.value.pdfFontUrl;return(!Te||rt!==i)&&(rt=i,Te=Ft({fontUrl:i})),Te}let xe=0,pe=null,Ee=null,te=!1;function Ne(){xe++,pe?.abort(),pe=null}async function Pe(){if(te)throw new re("config","报表预览已卸载");Ne();const i=xe,g=new AbortController;pe=g;const h=f.value.pdfFontUrl;m.value=Object.freeze({status:"checking",fontUrl:h});try{const T=ot(),D=T.checkFont?await T.checkFont(g.signal):{status:"unverified",fontUrl:"",message:"自定义 PDF 导出器未提供字体预检查;字体由宿主确认"};return!te&&i===xe&&!g.signal.aborted&&(m.value=Object.freeze({...D})),D}catch(T){if(g.signal.aborted)throw T;const D={status:"error",fontUrl:h,message:T instanceof Error?T.message:"PDF 字体检查失败",cause:T};return!te&&i===xe&&(m.value=Object.freeze(D)),D}finally{pe===g&&(pe=null)}}function It(){Pe().catch(()=>{})}e.watch([a,()=>f.value.pdfFontUrl,$,z],()=>{const i=m.value.fontUrl===f.value.pdfFontUrl;i&&m.value.status==="available"||(Ne(),(!i||m.value.status==="checking")&&(m.value=Object.freeze({status:"unchecked",fontUrl:f.value.pdfFontUrl})),!te&&O.value>0&&($.value||z.value)&&Pe().catch(()=>{}))},{immediate:!0});const oe=e.computed(()=>o.paramDefs??ee.value?.getParamDefs?.(W.value)??[]),le=e.ref({}),Ie=e.ref(!1);function me(i){const g={};for(const h of i)g[h.field]=o.params[h.field]??h.defaultValue??"";le.value=g,Ie.value=!1}me(oe.value),e.watch(oe,i=>me(i)),e.watch(W,()=>me(oe.value)),e.watch(()=>JSON.stringify(o.params),()=>me(oe.value));const Vt=e.computed(()=>{const i={...o.params};for(const[g,h]of Object.entries(le.value))h===""?delete i[g]:i[g]=h;return i});function Ot(){return oe.value.filter(i=>i.required===!0&&!(le.value[i.field]??"").trim())}function zt(){Ie.value=!0;const i=Ot();if(i.length>0){const g=i[0].label??i[0].field,h=x.value.paramRequired.replace("{label}",g);d.value=h,H(h,"param");return}se()}function Lt(){me(oe.value)}const Wt=e.computed(()=>({height:o.height,...Rt(f.value.theme)})),{zoom:Y,zoomMode:ve,applyFitZoom:at,setZoom:ge}=yt(()=>({viewport:k.value,pageWidthPx:Ve.contentSize.value.w||210*$e})),Ve=bt(a,Y,{pxPerMm:$e,gapPx:G,overscan:e.computed(()=>f.value.preview.overscanPages)}),{contentSize:Oe,windowRange:he,visiblePages:lt,makeScrollHandler:At,refreshViewport:ze}=Ve,Ht=At(u,O);function Le(i){ge(i*100)}function ke(){P.value=!1,V.reset(),st(),a.value=null,u.value=1,I.reset()}let A=0,Z=null;async function se(){if(te)return;const i=++A;P.value=!1,Z?.abort(),Z=null;const g=ee.value;if(s.value=!1,v.value=null,W.value.length===0){d.value="缺少报表 ID",ke(),H(d.value,"param");return}if(!g){d.value="未提供渲染数据源 fetcher",ke(),H(d.value,"config");return}s.value=!0,d.value="",b.value=null,ke();const h=C.start(),T=new AbortController;Z=T;const D=new Set;function X(F){i!==A||T.signal.aborted||D.has(F)||(D.add(F),f.value.logger.warn("[mach-report] 报表告警:",F),r("warning",F))}try{const F=await g({reportIds:W.value,params:{...Vt.value},signal:T.signal,onWarning:X});if(i!==A)return;const q=j.validateRenderPlan(F);if(!q.ok){const Ce=q.errors.slice(0,3).map(ft=>`${ft.path}: ${ft.message}`).join("; ");throw new re("validate",`渲染计划校验失败(${q.errors.length} 处): ${Ce}`)}if(q.warnings.forEach(Ce=>X(`${Ce.path}: ${Ce.message}`)),i!==A||T.signal.aborted)return;a.value=F,u.value=1,C.end(h),k.value&&(k.value.scrollTop=0,k.value.scrollLeft=0);const J=S.value?Je:Ye;J!==L&&(L=J,Ke()),ve.value==="fit"&&at(),r("loaded",F.pages.length)}catch(F){if(i!==A)return;const q=F instanceof re?F:F instanceof j.ReportSourceError?new re(F.code,F.message,F.cause):new re("fetch",F instanceof Error?F.message:"预览加载失败",F);d.value=q.message;const J=Dt(q);H(q.message,J.code,J.cause)}finally{i===A&&(s.value=!1),Z===T&&(Z=null)}}function ne(i){if(te||O.value<=0)return;const g=Math.max(1,Math.min(O.value,i));u.value=g;const h=k.value;h&&(h.scrollTop=Ve.pageOffsetPx(g-1)*Y.value,ze(h))}const be=xt(a,{getPdfExporter:ot,getXlsxOptions:()=>f.value.xlsx,onError:(i,g)=>{b.value={kind:"error",message:i},H(i,g??"print")},onWarning:i=>{b.value={kind:"warning",message:i},r("warning",i)},onBusy:i=>{y.value=i,i?b.value={kind:"progress",message:x.value.exporting.replace("{format}",i)}:b.value?.kind==="progress"&&(b.value=null)},onPrinting:i=>{p.value=i}}),{releasePrintFrame:st,dispose:qt}=be;async function We(){s.value||P.value||V.active.value&&!await V.commit()||(v.value=null,await be.print())}async function Ae(i){s.value||P.value||V.active.value&&!await V.commit()||(v.value=null,await be.exportAs(i))}function He(){if(s.value||P.value||V.active.value){b.value={kind:"warning",message:x.value.editingHint??"请先确认单元格修改"};return}v.value=null,be.openPdfWindow()}async function it(i,g={}){te||(le.value={...le.value,...i},g.reload!==!1&&await se())}const jt={reload:se,print:We,exportAs:Ae,openPdfWindow:He,gotoPage:ne,setParams:it,checkPdfFont:Pe,importExcel:qe,getPlan:ut,getChanges:V.getChanges,get state(){return ae.value}};e.provide(fe.MACH_REPORT_CONTROLLER_KEY,jt);function ut(){return a.value?de(a.value):null}async function qe(i,g){if(te)throw new re("config","报表预览已卸载");const h=++A;Z?.abort(),Z=null,s.value=!1,V.cancel(),be.invalidatePending(),P.value=!0,v.value=null,b.value={kind:"progress",message:x.value.importing??"正在导入 Excel…"};try{const{importExcelTemplate:T}=await import("@agile-team/mach-report/xlsx");if(h!==A)return null;const D=typeof we.value=="object"?we.value:{},X=await T(i,{...D,...g,limits:{...D.limits,...g?.limits}});if(h!==A)return null;const F=j.paginateTemplate(de(X.template),{}).plan,q=j.validateRenderPlan(F);if(!q.ok)throw new Error(q.errors.map(J=>J.message).slice(0,3).join("; "));for(const J of X.warnings){if(h!==A)return null;r("warning",J)}return h!==A?null:(V.reset(),st(),I.reset(),a.value=F,u.value=1,d.value="",b.value=X.warnings.length?{kind:"warning",message:X.warnings.join(";")}:null,k.value&&(k.value.scrollTop=0,k.value.scrollLeft=0),L=S.value?Je:Ye,Ke(),r("template-import",X),h===A&&r("loaded",F.pages.length),X)}catch(T){if(h!==A)return null;const D=new re("import",T instanceof Error?T.message:"Excel 模板导入失败",T);throw b.value={kind:"error",message:D.message},H(D.message,"import",T),D}finally{h===A&&(P.value=!1)}}function Ut(i){const g=i.target,h=g.files?.[0];g.value="",h&&qe(h).catch(()=>{})}const I=mn({plan:a,gotoPage:ne,debounceMs:e.computed(()=>f.value.preview.searchDebounceMs),highlight:ln,clearHighlights:an});function Kt(i){i.ctrlKey&&(i.preventDefault(),Le(Y.value*(i.deltaY<0?1.1:1/1.1)))}function Gt(i){if(!(i.target instanceof Element&&i.target.closest("input,textarea,select,[contenteditable='true']"))){if((i.ctrlKey||i.metaKey)&&i.key.toLowerCase()==="f"){i.preventDefault(),I.visible.value||I.toggle();return}switch(i.key){case"PageDown":i.preventDefault(),ne(u.value+1);break;case"PageUp":i.preventDefault(),ne(u.value-1);break;case"Home":i.preventDefault(),ne(1);break;case"End":i.preventDefault(),ne(O.value);break;case"+":case"=":i.preventDefault(),Le(Y.value*1.1);break;case"-":i.preventDefault(),Le(Y.value/1.1);break}}}function Yt(){try{localStorage.setItem(L,JSON.stringify({zoomMode:ve.value==="fit"?"fit":Math.round(Y.value*100)}))}catch{}}e.watch([ve,Y],Yt);let je="";const ct=new WeakMap;function dt(i=!1){const g=I.activeMatch.value;if(!S.value||!g)return;const h=`${I.query.value}:${I.matchIndex.value}:${g.pageIndex}`;if(!i&&h===je)return;const D=E.value?.querySelector(`[data-page="${g.pageIndex+1}"]`)?.querySelectorAll("mark.mrp-hit")[g.occurrence];D&&(D.scrollIntoView?.({block:"nearest",inline:"nearest"}),je=h)}e.watchEffect(()=>{const i=a.value;if(!i)return;const g=I.activeMatch.value;I.matchIndex.value,g||(je=""),lt.value;const h=E.value;if(!h)return;h.querySelectorAll(".mrp-page-holder").forEach(D=>{const X=Number(D.dataset.page??0)-1,F=i.pages[X];if(!F||D.childElementCount>0&&ct.get(D)===F){if(D.firstElementChild){const J=D.firstElementChild;I.clear(J),I.apply(J)}return}D.style.width=`${F.pageWidthMm*$e}px`;const q=j.renderPage(F,96,{},document);I.apply(q),D.replaceChildren(q),ct.set(D,F)}),dt()},{flush:"post"}),e.watch(()=>I.query.value,i=>{i||E.value?.querySelectorAll(".mrp-page-holder").forEach(g=>{I.clear(g)})});const _=gn(a,{thumbsRoot:w,visible:B,renderThumbCanvas:i=>{try{const g=a.value.pages[i],h=Math.min(.2,116/Math.max(1,g.pageWidthMm*$e)),{canvases:T}=j.renderPlanToCanvas(a.value,{start:i,end:i,dpr:h});return T[0]??null}catch{return null}}});e.watchEffect(()=>{_.schedule()},{flush:"post"});const Jt=e.computed(()=>o.debug),{debugStats:ue}=vn(Jt,{plan:a,pageCount:O,windowRange:he,zoom:Y,loadMs:C.loadMs});function Ue(){ze(k.value),_.schedule(),ve.value==="fit"&&at(),dt(!0)}function Ke(){ge(L===Je?100:"fit");try{const i=JSON.parse(localStorage.getItem(L)??"{}");i.zoomMode==="fit"?ge("fit"):typeof i.zoomMode=="number"&&ge(i.zoomMode)}catch{}}return e.onMounted(()=>{window.addEventListener("resize",Ue),typeof ResizeObserver<"u"&&k.value&&(Ee=new ResizeObserver(Ue),Ee.observe(k.value)),ze(k.value),Ke(),o.autoLoad&&se()}),e.onUnmounted(()=>{te=!0,V.reset(),P.value=!1,Ne(),A++,Z?.abort(),Z=null,window.removeEventListener("resize",Ue),Ee?.disconnect(),Ee=null,_.destroy(),I.reset(),qt()}),e.watch(()=>[JSON.stringify(W.value),JSON.stringify(o.params),ee.value],()=>{if(o.autoLoad){se();return}A++,Z?.abort(),Z=null,s.value=!1,d.value="",v.value=null,b.value=null,ke()}),n({reload:se,print:We,exportAs:Ae,openPdfWindow:He,gotoPage:ne,setParams:it,checkPdfFont:Pe,importExcel:qe,getPlan:ut,getChanges:V.getChanges,state:ae}),(i,g)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["mach-report-preview",{"mrp-wide-report":S.value}]),style:e.normalizeStyle(Wt.value)},[Q.value&&oe.value.length>0?(e.openBlock(),e.createBlock(kt,{key:0,defs:oe.value,modelValue:le.value,"onUpdate:modelValue":g[0]||(g[0]=h=>le.value=h),messages:x.value,attempted:Ie.value,onQuery:zt,onReset:Lt},null,8,["defs","modelValue","messages","attempted"])):e.createCommentVNode("",!0),e.createVNode(Pt,{"page-count":O.value,"current-page":u.value,"zoom-mode":e.unref(ve),zoom:e.unref(Y),"show-export":$.value,"show-print":M.value,"show-pdf-window":z.value,messages:x.value,search:{visible:e.unref(I).visible.value,query:e.unref(I).query.value,matchIndex:e.unref(I).matchIndex.value,matchCount:e.unref(I).matchCount.value,searching:e.unref(I).searching.value},"thumbs-visible":B.value,"show-import":!!we.value,busy:s.value||P.value||e.unref(V).saving.value,onGoto:ne,onZoom:e.unref(ge),onExport:g[1]||(g[1]=h=>Ae(h)),onPrint:We,onPdfWindow:He,onSearchInput:e.unref(I).onInput,onSearchNav:e.unref(I).onNav,onSearchToggle:e.unref(I).toggle,onThumbsToggle:g[2]||(g[2]=h=>B.value=!B.value),onImportExcel:g[3]||(g[3]=h=>R.value?.click())},null,8,["page-count","current-page","zoom-mode","zoom","show-export","show-print","show-pdf-window","messages","search","thumbs-visible","show-import","busy","onZoom","onSearchInput","onSearchNav","onSearchToggle"]),we.value?(e.openBlock(),e.createElementBlock("input",{key:1,ref_key:"importInputRef",ref:R,class:"mrp-import-input",type:"file",accept:".xlsx,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",hidden:"",onChange:Ut},null,544)):e.createCommentVNode("",!0),nt.value&&O.value>0?(e.openBlock(),e.createElementBlock("div",rr,e.toDisplayString(e.unref(V).saving.value?x.value.saving:x.value.editingHint),1)):e.createCommentVNode("",!0),b.value?(e.openBlock(),e.createElementBlock("div",{key:3,class:e.normalizeClass(["mrp-export-notice",`mrp-export-${b.value.kind}`]),role:"alert"},e.toDisplayString(b.value.message),3)):e.createCommentVNode("",!0),m.value.status==="error"&&($.value||z.value)?(e.openBlock(),e.createElementBlock("div",or,[e.createTextVNode(e.toDisplayString(x.value.pdfFontUnavailable)+" ",1),e.createElementVNode("button",{type:"button",onClick:It},e.toDisplayString(x.value.retry),1)])):e.createCommentVNode("",!0),e.createElementVNode("div",ar,[e.createElementVNode("div",{ref_key:"viewportRef",ref:k,class:"mrp-body",tabindex:"0",onWheel:Kt,onKeydown:Gt,onDblclick:g[4]||(g[4]=(...h)=>e.unref(V).onDoubleClick&&e.unref(V).onDoubleClick(...h)),onScrollPassive:g[5]||(g[5]=h=>e.unref(Ht)(h.target))},[s.value?(e.openBlock(),e.createElementBlock("div",lr,e.toDisplayString(x.value.loading),1)):d.value?(e.openBlock(),e.createElementBlock("div",sr,[e.createTextVNode(e.toDisplayString(d.value)+" ",1),e.createElementVNode("button",{class:"mrp-retry",type:"button",onClick:se},e.toDisplayString(x.value.retry),1)])):!a.value||O.value===0?(e.openBlock(),e.createElementBlock("div",ir,e.toDisplayString(x.value.empty),1)):(e.openBlock(),e.createElementBlock("div",{key:3,class:"mrp-scale",style:e.normalizeStyle({width:`${e.unref(Oe).w*e.unref(Y)}px`,height:`${e.unref(Oe).h*e.unref(Y)}px`})},[e.createElementVNode("div",{ref_key:"containerRef",ref:E,class:"mrp-scale-inner",style:e.normalizeStyle({transform:`scale(${e.unref(Y)})`,transformOrigin:"top left",width:`${e.unref(Oe).w}px`})},[e.unref(he).padTopPx>0?(e.openBlock(),e.createElementBlock("div",{key:0,class:"mrp-spacer-top",style:e.normalizeStyle({height:`${e.unref(he).padTopPx}px`}),"aria-hidden":"true"},null,4)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(lt),h=>(e.openBlock(),e.createElementBlock("div",{key:h.index,class:"mrp-page-holder","data-page":h.index+1},null,8,ur))),128)),e.unref(he).padBottomPx>0?(e.openBlock(),e.createElementBlock("div",{key:1,class:"mrp-spacer-bottom",style:e.normalizeStyle({height:`${e.unref(he).padBottomPx}px`}),"aria-hidden":"true"},null,4)):e.createCommentVNode("",!0)],4)],4))],544),B.value&&O.value>0?(e.openBlock(),e.createElementBlock("aside",{key:0,ref_key:"thumbsRef",ref:w,class:"mrp-thumbs",onScrollPassive:g[6]||(g[6]=(...h)=>e.unref(_).onScroll&&e.unref(_).onScroll(...h))},[e.unref(_).windowRange.value.padTopPx>0?(e.openBlock(),e.createElementBlock("div",{key:0,class:"mrp-thumb-spacer",style:e.normalizeStyle({height:`${e.unref(_).windowRange.value.padTopPx}px`}),"aria-hidden":"true"},null,4)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(_).visibleThumbs.value,h=>(e.openBlock(),e.createElementBlock("div",{key:h.index,class:e.normalizeClass(["mrp-thumb",{"mrp-thumb-active":h.index+1===u.value}]),style:e.normalizeStyle({height:`${h.height+20}px`}),onClick:T=>ne(h.index+1)},[e.createElementVNode("div",{class:"mrp-thumb-box","data-thumb":h.index+1,style:e.normalizeStyle({height:`${h.height}px`})},null,12,dr),e.createElementVNode("span",fr,e.toDisplayString(h.index+1),1)],14,cr))),128)),e.unref(_).windowRange.value.padBottomPx>0?(e.openBlock(),e.createElementBlock("div",{key:1,class:"mrp-thumb-spacer",style:e.normalizeStyle({height:`${e.unref(_).windowRange.value.padBottomPx}px`}),"aria-hidden":"true"},null,4)):e.createCommentVNode("",!0)],544)):e.createCommentVNode("",!0)]),e.createElementVNode("div",pr,[e.renderSlot(i.$slots,"default",{},void 0,!0)]),e.unref(ue)?(e.openBlock(),e.createElementBlock("div",mr,[g[7]||(g[7]=e.createElementVNode("div",null,"mach-report debug",-1)),e.createElementVNode("div",null,"pages: "+e.toDisplayString(e.unref(ue).pages)+" | window: ["+e.toDisplayString(e.unref(ue).window)+"]",1),e.createElementVNode("div",null,"zoom: "+e.toDisplayString(e.unref(ue).zoom)+" | load: "+e.toDisplayString(e.unref(ue).loadMs),1),e.createElementVNode("div",null,"plan: "+e.toDisplayString(e.unref(ue).planKB)+"KB",1)])):e.createCommentVNode("",!0)],6))}}),Tt=tt(vr,[["__scopeId","data-v-fa6fd3bb"]]),gr=Object.freeze(Object.defineProperty({__proto__:null,default:Tt},Symbol.toStringTag,{value:"Module"}));exports.DEFAULT_MESSAGES=Ct;exports.DEFAULT_THEME=$t;exports.MachReportError=re;exports.PlanLoadError=Be;exports.ReportParamPanel=kt;exports.ReportPreview=Tt;exports.ReportPreview$1=gr;exports.ReportToolbar=Pt;exports.SILENT_LOGGER=Jn;exports.buildPrintDocument=et;exports.buildWordHtml=wt;exports.createDefaultPdfExporter=Ft;exports.createFetchRequest=rn;exports.defineMachReportConfig=Bt;exports.defineMachReportPreset=Yn;exports.joinReportIds=nn;exports.normalizeReportIds=Xe;exports.printPlans=on;exports.provideMachReportConfig=Zn;exports.resolveConfig=St;exports.themeToCssVars=Rt;exports.toErrorDetail=Dt;exports.useMachReportConfig=Mt;exports.usePageWindow=bt;exports.usePrintExport=xt;exports.useZoom=yt;
|