@worm-vue3-print/core 1.2.2 → 1.3.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.
@@ -0,0 +1,6 @@
1
+ import { Z as ExecutorBundle } from '../driver-CsWkGK4a.cjs';
2
+
3
+ /** 读取 core 自带的 DOM 执行器 IIFE 产物;宿主把它注入页面后即可调用 __wormDom */
4
+ declare function loadExecutorBundle(): ExecutorBundle;
5
+
6
+ export { loadExecutorBundle };
@@ -0,0 +1,6 @@
1
+ import { Z as ExecutorBundle } from '../driver-CsWkGK4a.js';
2
+
3
+ /** 读取 core 自带的 DOM 执行器 IIFE 产物;宿主把它注入页面后即可调用 __wormDom */
4
+ declare function loadExecutorBundle(): ExecutorBundle;
5
+
6
+ export { loadExecutorBundle };
@@ -0,0 +1,10 @@
1
+ // src/node/index.ts
2
+ import { readFileSync } from "fs";
3
+ import { fileURLToPath } from "url";
4
+ var EXECUTOR_FILE = new URL("../dom-executor.iife.global.js", import.meta.url);
5
+ function loadExecutorBundle() {
6
+ return { source: readFileSync(fileURLToPath(EXECUTOR_FILE), "utf8"), version: "2" };
7
+ }
8
+ export {
9
+ loadExecutorBundle
10
+ };
@@ -0,0 +1,102 @@
1
+ import { G as TextFit, a as CodeSpec, L as ViewportPx, R as RawMeasurement, Q as PdfTargetSpec, X as ScreenshotTargetSpec } from './driver-CsWkGK4a.js';
2
+
3
+ /** 自动缩小的默认下限字号(pt) */
4
+ declare const DEFAULT_SHRINK_MIN_FONT_SIZE_PT = 6;
5
+ /** 自动缩小的绝对下限(pt):低于此值已不可读,直接退化为截断 */
6
+ declare const MIN_SHRINK_FONT_SIZE_PT = 1;
7
+ /** 元素级显示形式:未配置时按元素类型取默认(text=截断、longText=自适应行高) */
8
+ declare function resolveElementTextFit(type: string, opts?: {
9
+ textFit?: TextFit;
10
+ } | undefined): TextFit;
11
+ /** 单元格级显示形式:未配置时「不换行→截断,否则自适应行高」(与既有行为一致) */
12
+ declare function resolveCellTextFit(cell?: {
13
+ textFit?: string;
14
+ wordWrap?: boolean;
15
+ } | undefined): TextFit;
16
+ /** 自动缩小的下限字号(pt);非法值或缺省回落到默认值 */
17
+ declare function resolveShrinkMinFontSize(pt?: number | undefined): number;
18
+ /** 字号保留两位小数(渲染与回写统一口径,避免长浮点写进模板) */
19
+ declare function roundFontSize(pt: number): number;
20
+ /**
21
+ * 字号向下取到两位小数:自动缩小只能取「已确认放得下」的字号,
22
+ * 四舍五入可能把字号放大到溢出,故一律向下取整。
23
+ */
24
+ declare function floorFontSize(pt: number): number;
25
+ /** 自动缩小结果:key = 元素 id,或 `元素id#行类别#行:列` */
26
+ interface FitFontSize {
27
+ key: string;
28
+ fontSizePt: number;
29
+ }
30
+ /** 单元格自动缩小的行类别:b=正文渲染行 / st=当前页小计行 / sm=整表汇总行 */
31
+ type CellFitRowKind = 'b' | 'st' | 'sm';
32
+ /** 单元格自动缩小结果的 key(元素级 key 不含 '#') */
33
+ declare function cellFitKey(elementId: string, kind: CellFitRowKind, rowIndex: number, colIndex: number): string;
34
+ /** 解析单元格自动缩小结果的 key;元素级 key 返回 undefined */
35
+ declare function parseCellFitKey(key: string): {
36
+ elementId: string;
37
+ kind: CellFitRowKind;
38
+ rowIndex: number;
39
+ colIndex: number;
40
+ } | undefined;
41
+ /** 边框宽度(pt,可缺省);结构上兼容 RenderCellBorders 与 TableCellBorders */
42
+ type BorderLike = {
43
+ width?: number;
44
+ } | undefined;
45
+ interface FitCellLike {
46
+ rowspan?: number;
47
+ colspan?: number;
48
+ padding?: number;
49
+ borders?: {
50
+ top?: BorderLike;
51
+ right?: BorderLike;
52
+ bottom?: BorderLike;
53
+ left?: BorderLike;
54
+ } | undefined;
55
+ }
56
+ /**
57
+ * 单元格「可用内容宽度」(mm):所跨列宽之和,扣除左右内边距与塌陷边框占位。
58
+ * 与 `cellFitCapMm`(高度)同一口径:table-layout:fixed + border-collapse:collapse。
59
+ * 条形码点对齐需要单元格的真实可用宽度,设计器画布复用同一函数。
60
+ * 列宽缺失(表格未配置 tableColWidths)时返回 0,调用方据此不启用点对齐。
61
+ */
62
+ declare function cellFitWidthMm(colWidths: number[], colIndex: number, cell: FitCellLike | undefined, defaultPadding?: number): number;
63
+ /**
64
+ * 单元格「可用内容高度」(mm):所跨行高之和,扣除上下内边距与塌陷边框占位。
65
+ * 截断形式据此设 max-height,自动缩小据此判定是否放得下。
66
+ * 与渲染端(tbody 行高)保持同一口径,设计器画布复用同一函数。
67
+ */
68
+ declare function cellFitCapMm(rows: Array<{
69
+ height?: number;
70
+ }>, rowIndex: number, cell: FitCellLike | undefined, defaultPadding?: number): number;
71
+
72
+ /** 会话预算:PrintJob 天然满足本结构;print.submitHtml 这类无模板直出图场景也可直接传入 */
73
+ interface SessionBudget {
74
+ timeoutMs?: number;
75
+ readinessMs?: number;
76
+ }
77
+ /** 测量结果:原始几何 + 自动缩小算出的最终字号(需回写模板后再出最终 HTML) */
78
+ interface MeasureResult {
79
+ measurements: RawMeasurement[];
80
+ fits: FitFontSize[];
81
+ }
82
+ /** 一次任务内的文档槽位会话;方法内部已完成超时与错误归一化 */
83
+ interface PrintSession {
84
+ /** 码值 → SVG 映射;specs 为空时直接返回空 Map,不触碰宿主 */
85
+ renderCodes(specs: CodeSpec[]): Promise<Map<string, string>>;
86
+ /**
87
+ * 测量:载入测量趟 HTML → 自动缩小(data-fit="shrink")→ 读取元素/行高。
88
+ * 自动缩小结果随测量一并返回,供调用方回写模板使最终趟与测量同口径。
89
+ */
90
+ measure(html: string, viewport: ViewportPx): Promise<MeasureResult>;
91
+ probeContentBottom(html: string, viewport: ViewportPx): Promise<number>;
92
+ toPdf(html: string, spec: PdfTargetSpec, viewport: ViewportPx): Promise<Uint8Array>;
93
+ toScreenshot(html: string, spec: ScreenshotTargetSpec, viewport: ViewportPx): Promise<Uint8Array>;
94
+ }
95
+ interface PrintRuntime {
96
+ /** 借用一个槽位跑完整个任务;退出时无论成败都释放 */
97
+ withSession<T>(budget: SessionBudget, fn: (session: PrintSession) => Promise<T>): Promise<T>;
98
+ }
99
+ declare const DEFAULT_TIMEOUT_MS = 30000;
100
+ declare const DEFAULT_READINESS_MS = 5000;
101
+
102
+ export { type CellFitRowKind as C, DEFAULT_SHRINK_MIN_FONT_SIZE_PT as D, type FitFontSize as F, MIN_SHRINK_FONT_SIZE_PT as M, type PrintRuntime as P, type SessionBudget as S, cellFitKey as a, cellFitWidthMm as b, cellFitCapMm as c, resolveElementTextFit as d, resolveShrinkMinFontSize as e, floorFontSize as f, roundFontSize as g, DEFAULT_READINESS_MS as h, DEFAULT_TIMEOUT_MS as i, type MeasureResult as j, type PrintSession as k, parseCellFitKey as p, resolveCellTextFit as r };
@@ -0,0 +1,102 @@
1
+ import { G as TextFit, a as CodeSpec, L as ViewportPx, R as RawMeasurement, Q as PdfTargetSpec, X as ScreenshotTargetSpec } from './driver-CsWkGK4a.cjs';
2
+
3
+ /** 自动缩小的默认下限字号(pt) */
4
+ declare const DEFAULT_SHRINK_MIN_FONT_SIZE_PT = 6;
5
+ /** 自动缩小的绝对下限(pt):低于此值已不可读,直接退化为截断 */
6
+ declare const MIN_SHRINK_FONT_SIZE_PT = 1;
7
+ /** 元素级显示形式:未配置时按元素类型取默认(text=截断、longText=自适应行高) */
8
+ declare function resolveElementTextFit(type: string, opts?: {
9
+ textFit?: TextFit;
10
+ } | undefined): TextFit;
11
+ /** 单元格级显示形式:未配置时「不换行→截断,否则自适应行高」(与既有行为一致) */
12
+ declare function resolveCellTextFit(cell?: {
13
+ textFit?: string;
14
+ wordWrap?: boolean;
15
+ } | undefined): TextFit;
16
+ /** 自动缩小的下限字号(pt);非法值或缺省回落到默认值 */
17
+ declare function resolveShrinkMinFontSize(pt?: number | undefined): number;
18
+ /** 字号保留两位小数(渲染与回写统一口径,避免长浮点写进模板) */
19
+ declare function roundFontSize(pt: number): number;
20
+ /**
21
+ * 字号向下取到两位小数:自动缩小只能取「已确认放得下」的字号,
22
+ * 四舍五入可能把字号放大到溢出,故一律向下取整。
23
+ */
24
+ declare function floorFontSize(pt: number): number;
25
+ /** 自动缩小结果:key = 元素 id,或 `元素id#行类别#行:列` */
26
+ interface FitFontSize {
27
+ key: string;
28
+ fontSizePt: number;
29
+ }
30
+ /** 单元格自动缩小的行类别:b=正文渲染行 / st=当前页小计行 / sm=整表汇总行 */
31
+ type CellFitRowKind = 'b' | 'st' | 'sm';
32
+ /** 单元格自动缩小结果的 key(元素级 key 不含 '#') */
33
+ declare function cellFitKey(elementId: string, kind: CellFitRowKind, rowIndex: number, colIndex: number): string;
34
+ /** 解析单元格自动缩小结果的 key;元素级 key 返回 undefined */
35
+ declare function parseCellFitKey(key: string): {
36
+ elementId: string;
37
+ kind: CellFitRowKind;
38
+ rowIndex: number;
39
+ colIndex: number;
40
+ } | undefined;
41
+ /** 边框宽度(pt,可缺省);结构上兼容 RenderCellBorders 与 TableCellBorders */
42
+ type BorderLike = {
43
+ width?: number;
44
+ } | undefined;
45
+ interface FitCellLike {
46
+ rowspan?: number;
47
+ colspan?: number;
48
+ padding?: number;
49
+ borders?: {
50
+ top?: BorderLike;
51
+ right?: BorderLike;
52
+ bottom?: BorderLike;
53
+ left?: BorderLike;
54
+ } | undefined;
55
+ }
56
+ /**
57
+ * 单元格「可用内容宽度」(mm):所跨列宽之和,扣除左右内边距与塌陷边框占位。
58
+ * 与 `cellFitCapMm`(高度)同一口径:table-layout:fixed + border-collapse:collapse。
59
+ * 条形码点对齐需要单元格的真实可用宽度,设计器画布复用同一函数。
60
+ * 列宽缺失(表格未配置 tableColWidths)时返回 0,调用方据此不启用点对齐。
61
+ */
62
+ declare function cellFitWidthMm(colWidths: number[], colIndex: number, cell: FitCellLike | undefined, defaultPadding?: number): number;
63
+ /**
64
+ * 单元格「可用内容高度」(mm):所跨行高之和,扣除上下内边距与塌陷边框占位。
65
+ * 截断形式据此设 max-height,自动缩小据此判定是否放得下。
66
+ * 与渲染端(tbody 行高)保持同一口径,设计器画布复用同一函数。
67
+ */
68
+ declare function cellFitCapMm(rows: Array<{
69
+ height?: number;
70
+ }>, rowIndex: number, cell: FitCellLike | undefined, defaultPadding?: number): number;
71
+
72
+ /** 会话预算:PrintJob 天然满足本结构;print.submitHtml 这类无模板直出图场景也可直接传入 */
73
+ interface SessionBudget {
74
+ timeoutMs?: number;
75
+ readinessMs?: number;
76
+ }
77
+ /** 测量结果:原始几何 + 自动缩小算出的最终字号(需回写模板后再出最终 HTML) */
78
+ interface MeasureResult {
79
+ measurements: RawMeasurement[];
80
+ fits: FitFontSize[];
81
+ }
82
+ /** 一次任务内的文档槽位会话;方法内部已完成超时与错误归一化 */
83
+ interface PrintSession {
84
+ /** 码值 → SVG 映射;specs 为空时直接返回空 Map,不触碰宿主 */
85
+ renderCodes(specs: CodeSpec[]): Promise<Map<string, string>>;
86
+ /**
87
+ * 测量:载入测量趟 HTML → 自动缩小(data-fit="shrink")→ 读取元素/行高。
88
+ * 自动缩小结果随测量一并返回,供调用方回写模板使最终趟与测量同口径。
89
+ */
90
+ measure(html: string, viewport: ViewportPx): Promise<MeasureResult>;
91
+ probeContentBottom(html: string, viewport: ViewportPx): Promise<number>;
92
+ toPdf(html: string, spec: PdfTargetSpec, viewport: ViewportPx): Promise<Uint8Array>;
93
+ toScreenshot(html: string, spec: ScreenshotTargetSpec, viewport: ViewportPx): Promise<Uint8Array>;
94
+ }
95
+ interface PrintRuntime {
96
+ /** 借用一个槽位跑完整个任务;退出时无论成败都释放 */
97
+ withSession<T>(budget: SessionBudget, fn: (session: PrintSession) => Promise<T>): Promise<T>;
98
+ }
99
+ declare const DEFAULT_TIMEOUT_MS = 30000;
100
+ declare const DEFAULT_READINESS_MS = 5000;
101
+
102
+ export { type CellFitRowKind as C, DEFAULT_SHRINK_MIN_FONT_SIZE_PT as D, type FitFontSize as F, MIN_SHRINK_FONT_SIZE_PT as M, type PrintRuntime as P, type SessionBudget as S, cellFitKey as a, cellFitWidthMm as b, cellFitCapMm as c, resolveElementTextFit as d, resolveShrinkMinFontSize as e, floorFontSize as f, roundFontSize as g, DEFAULT_READINESS_MS as h, DEFAULT_TIMEOUT_MS as i, type MeasureResult as j, type PrintSession as k, parseCellFitKey as p, resolveCellTextFit as r };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@worm-vue3-print/core",
3
- "version": "1.2.2",
3
+ "version": "1.3.0",
4
4
  "type": "module",
5
5
  "description": "打印模板表达式引擎、同构渲染管线与框架无关的设计器内核(HTML 生成/分页/数据绑定/设计器模型与工具),无 Vue/React 依赖",
6
6
  "main": "dist/index.cjs",
@@ -21,6 +21,12 @@
21
21
  "types": "./dist/browser/index.d.ts",
22
22
  "import": "./dist/browser/index.js",
23
23
  "require": "./dist/browser/index.cjs"
24
+ },
25
+ "./browser/dom-executor.iife": "./dist/dom-executor.iife.global.js",
26
+ "./node": {
27
+ "types": "./dist/node/index.d.ts",
28
+ "import": "./dist/node/index.js",
29
+ "require": "./dist/node/index.cjs"
24
30
  }
25
31
  },
26
32
  "files": [
@@ -51,4 +57,4 @@
51
57
  "jsbarcode": "^3.12.3",
52
58
  "qrcode": "^1.5.4"
53
59
  }
54
- }
60
+ }