@arslankhan/doc-forge 0.0.0-stage → 0.1.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/CHANGELOG.md +11 -0
- package/LICENSE +13 -0
- package/LICENSING.md +80 -0
- package/README.md +547 -2
- package/RELEASE.md +50 -0
- package/dist/binding-path.d.ts +15 -0
- package/dist/binding-path.d.ts.map +1 -0
- package/dist/binding-path.js +37 -0
- package/dist/binding-path.js.map +1 -0
- package/dist/binding.d.ts +91 -0
- package/dist/binding.d.ts.map +1 -0
- package/dist/binding.js +229 -0
- package/dist/binding.js.map +1 -0
- package/dist/designer/Canvas.d.ts +51 -0
- package/dist/designer/Canvas.d.ts.map +1 -0
- package/dist/designer/Canvas.js +188 -0
- package/dist/designer/Canvas.js.map +1 -0
- package/dist/designer/DocumentDesigner.d.ts +14 -0
- package/dist/designer/DocumentDesigner.d.ts.map +1 -0
- package/dist/designer/DocumentDesigner.js +351 -0
- package/dist/designer/DocumentDesigner.js.map +1 -0
- package/dist/designer/HtmlPreview.d.ts +9 -0
- package/dist/designer/HtmlPreview.d.ts.map +1 -0
- package/dist/designer/HtmlPreview.js +20 -0
- package/dist/designer/HtmlPreview.js.map +1 -0
- package/dist/designer/ImageBindingFields.d.ts +11 -0
- package/dist/designer/ImageBindingFields.d.ts.map +1 -0
- package/dist/designer/ImageBindingFields.js +106 -0
- package/dist/designer/ImageBindingFields.js.map +1 -0
- package/dist/designer/InvoiceFields.d.ts +13 -0
- package/dist/designer/InvoiceFields.d.ts.map +1 -0
- package/dist/designer/InvoiceFields.js +85 -0
- package/dist/designer/InvoiceFields.js.map +1 -0
- package/dist/designer/PreviewDataDialog.d.ts +13 -0
- package/dist/designer/PreviewDataDialog.d.ts.map +1 -0
- package/dist/designer/PreviewDataDialog.js +16 -0
- package/dist/designer/PreviewDataDialog.js.map +1 -0
- package/dist/designer/PropertiesPanel.d.ts +15 -0
- package/dist/designer/PropertiesPanel.d.ts.map +1 -0
- package/dist/designer/PropertiesPanel.js +63 -0
- package/dist/designer/PropertiesPanel.js.map +1 -0
- package/dist/designer/ReportFields.d.ts +14 -0
- package/dist/designer/ReportFields.d.ts.map +1 -0
- package/dist/designer/ReportFields.js +257 -0
- package/dist/designer/ReportFields.js.map +1 -0
- package/dist/designer/StyleFields.d.ts +16 -0
- package/dist/designer/StyleFields.d.ts.map +1 -0
- package/dist/designer/StyleFields.js +138 -0
- package/dist/designer/StyleFields.js.map +1 -0
- package/dist/designer/TextBindingFields.d.ts +11 -0
- package/dist/designer/TextBindingFields.d.ts.map +1 -0
- package/dist/designer/TextBindingFields.js +105 -0
- package/dist/designer/TextBindingFields.js.map +1 -0
- package/dist/designer/Toolbar.d.ts +52 -0
- package/dist/designer/Toolbar.d.ts.map +1 -0
- package/dist/designer/Toolbar.js +62 -0
- package/dist/designer/Toolbar.js.map +1 -0
- package/dist/designer/Toolbox.d.ts +8 -0
- package/dist/designer/Toolbox.d.ts.map +1 -0
- package/dist/designer/Toolbox.js +43 -0
- package/dist/designer/Toolbox.js.map +1 -0
- package/dist/designer/border-preview.d.ts +15 -0
- package/dist/designer/border-preview.d.ts.map +1 -0
- package/dist/designer/border-preview.js +34 -0
- package/dist/designer/border-preview.js.map +1 -0
- package/dist/designer/history.d.ts +13 -0
- package/dist/designer/history.d.ts.map +1 -0
- package/dist/designer/history.js +51 -0
- package/dist/designer/history.js.map +1 -0
- package/dist/designer/index.d.ts +5 -0
- package/dist/designer/index.d.ts.map +1 -0
- package/dist/designer/index.js +3 -0
- package/dist/designer/index.js.map +1 -0
- package/dist/designer/page-geometry.d.ts +35 -0
- package/dist/designer/page-geometry.d.ts.map +1 -0
- package/dist/designer/page-geometry.js +123 -0
- package/dist/designer/page-geometry.js.map +1 -0
- package/dist/designer/styles.d.ts +3 -0
- package/dist/designer/styles.d.ts.map +1 -0
- package/dist/designer/styles.js +594 -0
- package/dist/designer/styles.js.map +1 -0
- package/dist/designer/template-edits.d.ts +26 -0
- package/dist/designer/template-edits.d.ts.map +1 -0
- package/dist/designer/template-edits.js +323 -0
- package/dist/designer/template-edits.js.map +1 -0
- package/dist/designer/theme.d.ts +31 -0
- package/dist/designer/theme.d.ts.map +1 -0
- package/dist/designer/theme.js +92 -0
- package/dist/designer/theme.js.map +1 -0
- package/dist/examples/bound-invoice.d.ts +143 -0
- package/dist/examples/bound-invoice.d.ts.map +1 -0
- package/dist/examples/bound-invoice.js +99 -0
- package/dist/examples/bound-invoice.js.map +1 -0
- package/dist/examples/full-invoice-data.d.ts +81 -0
- package/dist/examples/full-invoice-data.d.ts.map +1 -0
- package/dist/examples/full-invoice-data.js +86 -0
- package/dist/examples/full-invoice-data.js.map +1 -0
- package/dist/examples/full-invoice.d.ts +402 -0
- package/dist/examples/full-invoice.d.ts.map +1 -0
- package/dist/examples/full-invoice.js +199 -0
- package/dist/examples/full-invoice.js.map +1 -0
- package/dist/examples/invoice-data.d.ts +51 -0
- package/dist/examples/invoice-data.d.ts.map +1 -0
- package/dist/examples/invoice-data.js +51 -0
- package/dist/examples/invoice-data.js.map +1 -0
- package/dist/examples/invoice.d.ts +90 -0
- package/dist/examples/invoice.d.ts.map +1 -0
- package/dist/examples/invoice.js +62 -0
- package/dist/examples/invoice.js.map +1 -0
- package/dist/examples/jobs-report-data.d.ts +84 -0
- package/dist/examples/jobs-report-data.d.ts.map +1 -0
- package/dist/examples/jobs-report-data.js +79 -0
- package/dist/examples/jobs-report-data.js.map +1 -0
- package/dist/examples/jobs-report.d.ts +182 -0
- package/dist/examples/jobs-report.d.ts.map +1 -0
- package/dist/examples/jobs-report.js +96 -0
- package/dist/examples/jobs-report.js.map +1 -0
- package/dist/index.d.ts +31 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -0
- package/dist/invoice/calculate.d.ts +59 -0
- package/dist/invoice/calculate.d.ts.map +1 -0
- package/dist/invoice/calculate.js +270 -0
- package/dist/invoice/calculate.js.map +1 -0
- package/dist/invoice/context.d.ts +15 -0
- package/dist/invoice/context.d.ts.map +1 -0
- package/dist/invoice/context.js +79 -0
- package/dist/invoice/context.js.map +1 -0
- package/dist/invoice/format.d.ts +10 -0
- package/dist/invoice/format.d.ts.map +1 -0
- package/dist/invoice/format.js +95 -0
- package/dist/invoice/format.js.map +1 -0
- package/dist/license/capabilities.d.ts +17 -0
- package/dist/license/capabilities.d.ts.map +1 -0
- package/dist/license/capabilities.js +46 -0
- package/dist/license/capabilities.js.map +1 -0
- package/dist/license/client.d.ts +109 -0
- package/dist/license/client.d.ts.map +1 -0
- package/dist/license/client.js +346 -0
- package/dist/license/client.js.map +1 -0
- package/dist/license/codec.d.ts +5 -0
- package/dist/license/codec.d.ts.map +1 -0
- package/dist/license/codec.js +26 -0
- package/dist/license/codec.js.map +1 -0
- package/dist/license/errors.d.ts +11 -0
- package/dist/license/errors.d.ts.map +1 -0
- package/dist/license/errors.js +19 -0
- package/dist/license/errors.js.map +1 -0
- package/dist/license/features.d.ts +20 -0
- package/dist/license/features.d.ts.map +1 -0
- package/dist/license/features.js +28 -0
- package/dist/license/features.js.map +1 -0
- package/dist/license/index.d.ts +16 -0
- package/dist/license/index.d.ts.map +1 -0
- package/dist/license/index.js +9 -0
- package/dist/license/index.js.map +1 -0
- package/dist/license/provider.d.ts +59 -0
- package/dist/license/provider.d.ts.map +1 -0
- package/dist/license/provider.js +150 -0
- package/dist/license/provider.js.map +1 -0
- package/dist/license/redact.d.ts +4 -0
- package/dist/license/redact.d.ts.map +1 -0
- package/dist/license/redact.js +15 -0
- package/dist/license/redact.js.map +1 -0
- package/dist/license/store.d.ts +26 -0
- package/dist/license/store.d.ts.map +1 -0
- package/dist/license/store.js +90 -0
- package/dist/license/store.js.map +1 -0
- package/dist/license/token.d.ts +45 -0
- package/dist/license/token.d.ts.map +1 -0
- package/dist/license/token.js +195 -0
- package/dist/license/token.js.map +1 -0
- package/dist/pdf/browser-blocked.d.ts +12 -0
- package/dist/pdf/browser-blocked.d.ts.map +1 -0
- package/dist/pdf/browser-blocked.js +25 -0
- package/dist/pdf/browser-blocked.js.map +1 -0
- package/dist/pdf/browser.d.ts +12 -0
- package/dist/pdf/browser.d.ts.map +1 -0
- package/dist/pdf/browser.js +69 -0
- package/dist/pdf/browser.js.map +1 -0
- package/dist/pdf/errors.d.ts +6 -0
- package/dist/pdf/errors.d.ts.map +1 -0
- package/dist/pdf/errors.js +11 -0
- package/dist/pdf/errors.js.map +1 -0
- package/dist/pdf/index.d.ts +10 -0
- package/dist/pdf/index.d.ts.map +1 -0
- package/dist/pdf/index.js +9 -0
- package/dist/pdf/index.js.map +1 -0
- package/dist/pdf/options.d.ts +143 -0
- package/dist/pdf/options.d.ts.map +1 -0
- package/dist/pdf/options.js +322 -0
- package/dist/pdf/options.js.map +1 -0
- package/dist/pdf/render-pdf.d.ts +13 -0
- package/dist/pdf/render-pdf.d.ts.map +1 -0
- package/dist/pdf/render-pdf.js +195 -0
- package/dist/pdf/render-pdf.js.map +1 -0
- package/dist/render/appearance.d.ts +25 -0
- package/dist/render/appearance.d.ts.map +1 -0
- package/dist/render/appearance.js +149 -0
- package/dist/render/appearance.js.map +1 -0
- package/dist/render/css.d.ts +17 -0
- package/dist/render/css.d.ts.map +1 -0
- package/dist/render/css.js +170 -0
- package/dist/render/css.js.map +1 -0
- package/dist/render/errors.d.ts +6 -0
- package/dist/render/errors.d.ts.map +1 -0
- package/dist/render/errors.js +11 -0
- package/dist/render/errors.js.map +1 -0
- package/dist/render/escape.d.ts +7 -0
- package/dist/render/escape.d.ts.map +1 -0
- package/dist/render/escape.js +27 -0
- package/dist/render/escape.js.map +1 -0
- package/dist/render/image-policy.d.ts +21 -0
- package/dist/render/image-policy.d.ts.map +1 -0
- package/dist/render/image-policy.js +62 -0
- package/dist/render/image-policy.js.map +1 -0
- package/dist/render/render-html.d.ts +28 -0
- package/dist/render/render-html.d.ts.map +1 -0
- package/dist/render/render-html.js +364 -0
- package/dist/render/render-html.js.map +1 -0
- package/dist/render/render-report.d.ts +23 -0
- package/dist/render/render-report.d.ts.map +1 -0
- package/dist/render/render-report.js +313 -0
- package/dist/render/render-report.js.map +1 -0
- package/dist/report/process.d.ts +48 -0
- package/dist/report/process.d.ts.map +1 -0
- package/dist/report/process.js +347 -0
- package/dist/report/process.js.map +1 -0
- package/dist/schema.d.ts +30 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +8 -0
- package/dist/schema.js.map +1 -0
- package/dist/serialize.d.ts +13 -0
- package/dist/serialize.d.ts.map +1 -0
- package/dist/serialize.js +42 -0
- package/dist/serialize.js.map +1 -0
- package/dist/types.d.ts +335 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +40 -0
- package/dist/types.js.map +1 -0
- package/dist/validate.d.ts +15 -0
- package/dist/validate.d.ts.map +1 -0
- package/dist/validate.js +977 -0
- package/dist/validate.js.map +1 -0
- package/package.json +97 -4
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
const TOOLS = [
|
|
3
|
+
{ type: "text", label: "Text", detail: "A text block" },
|
|
4
|
+
{ type: "image", label: "Image", detail: "Image placeholder" },
|
|
5
|
+
{ type: "line", label: "Line", detail: "Horizontal or diagonal" },
|
|
6
|
+
{ type: "rectangle", label: "Rectangle", detail: "Box or frame" },
|
|
7
|
+
{ type: "items", label: "Items", detail: "Repeating invoice rows" },
|
|
8
|
+
{ type: "totals", label: "Totals", detail: "Subtotal, tax, and total" },
|
|
9
|
+
{ type: "reportTable", label: "Report table", detail: "Repeating rows and totals" },
|
|
10
|
+
];
|
|
11
|
+
export function Toolbox({ onAdd }) {
|
|
12
|
+
return (_jsxs("aside", { className: "df-side df-side--left", "aria-label": "Element toolbox", children: [_jsx("h2", { className: "df-side-title", children: "Elements" }), _jsx("p", { className: "df-side-note", children: "Add an element to the page. It is selected immediately." }), TOOLS.map((tool) => (_jsxs("button", { type: "button", className: "df-tool", "data-element-type": tool.type, onClick: () => onAdd(tool.type), children: [_jsx("span", { className: "df-tool-icon", "aria-hidden": "true", children: _jsx(ToolIcon, { type: tool.type }) }), _jsxs("span", { children: [_jsx("strong", { children: tool.label }), _jsx("span", { children: tool.detail })] })] }, tool.type)))] }));
|
|
13
|
+
}
|
|
14
|
+
function ToolIcon({ type }) {
|
|
15
|
+
const common = {
|
|
16
|
+
width: 18,
|
|
17
|
+
height: 18,
|
|
18
|
+
viewBox: "0 0 18 18",
|
|
19
|
+
fill: "none",
|
|
20
|
+
stroke: "currentColor",
|
|
21
|
+
strokeWidth: 1.4,
|
|
22
|
+
};
|
|
23
|
+
if (type === "text") {
|
|
24
|
+
return (_jsx("svg", { ...common, children: _jsx("path", { d: "M3 4h12M9 4v10M6 14h6" }) }));
|
|
25
|
+
}
|
|
26
|
+
if (type === "image") {
|
|
27
|
+
return (_jsxs("svg", { ...common, children: [_jsx("rect", { x: "2.5", y: "3.5", width: "13", height: "11", rx: "1" }), _jsx("path", { d: "M4 12l3-3 2 2 2-2 3 3" }), _jsx("circle", { cx: "6.5", cy: "7", r: "0.8", fill: "currentColor", stroke: "none" })] }));
|
|
28
|
+
}
|
|
29
|
+
if (type === "line") {
|
|
30
|
+
return (_jsx("svg", { ...common, children: _jsx("path", { d: "M3 14L15 4" }) }));
|
|
31
|
+
}
|
|
32
|
+
if (type === "items") {
|
|
33
|
+
return (_jsxs("svg", { ...common, children: [_jsx("rect", { x: "2.5", y: "3", width: "13", height: "12" }), _jsx("path", { d: "M2.5 7h13M2.5 11h13M7 3v12" })] }));
|
|
34
|
+
}
|
|
35
|
+
if (type === "totals") {
|
|
36
|
+
return (_jsx("svg", { ...common, children: _jsx("path", { d: "M3 5h12M3 9h8M3 13h12" }) }));
|
|
37
|
+
}
|
|
38
|
+
if (type === "reportTable") {
|
|
39
|
+
return (_jsxs("svg", { ...common, children: [_jsx("rect", { x: "2.5", y: "3", width: "13", height: "12" }), _jsx("path", { d: "M2.5 6.5h13M6 6.5V15M11 6.5V15" })] }));
|
|
40
|
+
}
|
|
41
|
+
return (_jsx("svg", { ...common, children: _jsx("rect", { x: "3", y: "3.5", width: "12", height: "11", rx: "1" }) }));
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=Toolbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Toolbox.js","sourceRoot":"","sources":["../../src/designer/Toolbox.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ElementStyle } from "../types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Canvas border for one element or table cell.
|
|
4
|
+
* Lengths are page pixels. Missing or zero width draws no border, so a stylesheet cannot supply a different color.
|
|
5
|
+
*/
|
|
6
|
+
export declare function previewBorderCss(style: ElementStyle | undefined, pxPerUnit: number): {
|
|
7
|
+
borderTop?: string;
|
|
8
|
+
borderRight?: string;
|
|
9
|
+
borderBottom?: string;
|
|
10
|
+
borderLeft?: string;
|
|
11
|
+
borderStyle?: string;
|
|
12
|
+
borderWidth?: number;
|
|
13
|
+
borderColor?: string;
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=border-preview.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"border-preview.d.ts","sourceRoot":"","sources":["../../src/designer/border-preview.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,YAAY,GAAG,SAAS,EAC/B,SAAS,EAAE,MAAM,GAChB;IACD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAmBA"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canvas border for one element or table cell.
|
|
3
|
+
* Lengths are page pixels. Missing or zero width draws no border, so a stylesheet cannot supply a different color.
|
|
4
|
+
*/
|
|
5
|
+
export function previewBorderCss(style, pxPerUnit) {
|
|
6
|
+
const line = style?.borderStyle ?? "solid";
|
|
7
|
+
const width = style?.borderWidth ?? 0;
|
|
8
|
+
const color = style?.borderColor ?? "#1c2430";
|
|
9
|
+
const shared = line !== "none" && width > 0 ? Math.max(width * pxPerUnit, 1) : 0;
|
|
10
|
+
const individual = style?.borderTop || style?.borderRight || style?.borderBottom || style?.borderLeft;
|
|
11
|
+
if (individual) {
|
|
12
|
+
return {
|
|
13
|
+
borderTop: sideLine(style?.borderTop, line, width, color, pxPerUnit),
|
|
14
|
+
borderRight: sideLine(style?.borderRight, line, width, color, pxPerUnit),
|
|
15
|
+
borderBottom: sideLine(style?.borderBottom, line, width, color, pxPerUnit),
|
|
16
|
+
borderLeft: sideLine(style?.borderLeft, line, width, color, pxPerUnit),
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
return {
|
|
20
|
+
borderStyle: shared > 0 ? line : "none",
|
|
21
|
+
borderWidth: shared,
|
|
22
|
+
borderColor: color,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
function sideLine(edge, line, width, color, pxPerUnit) {
|
|
26
|
+
const edgeLine = edge?.style ?? line;
|
|
27
|
+
const edgeWidth = edge?.width ?? width;
|
|
28
|
+
const edgeColor = edge?.color ?? color;
|
|
29
|
+
if (edgeLine === "none" || edgeWidth <= 0) {
|
|
30
|
+
return "none";
|
|
31
|
+
}
|
|
32
|
+
return `${Math.max(edgeWidth * pxPerUnit, 1)}px ${edgeLine} ${edgeColor}`;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=border-preview.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"border-preview.js","sourceRoot":"","sources":["../../src/designer/border-preview.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAA+B,EAC/B,SAAiB;IAUjB,MAAM,IAAI,GAAG,KAAK,EAAE,WAAW,IAAI,OAAO,CAAC;IAC3C,MAAM,KAAK,GAAG,KAAK,EAAE,WAAW,IAAI,CAAC,CAAC;IACtC,MAAM,KAAK,GAAG,KAAK,EAAE,WAAW,IAAI,SAAS,CAAC;IAC9C,MAAM,MAAM,GAAG,IAAI,KAAK,MAAM,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjF,MAAM,UAAU,GAAG,KAAK,EAAE,SAAS,IAAI,KAAK,EAAE,WAAW,IAAI,KAAK,EAAE,YAAY,IAAI,KAAK,EAAE,UAAU,CAAC;IACtG,IAAI,UAAU,EAAE,CAAC;QACf,OAAO;YACL,SAAS,EAAE,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC;YACpE,WAAW,EAAE,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC;YACxE,YAAY,EAAE,QAAQ,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC;YAC1E,UAAU,EAAE,QAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC;SACvE,CAAC;IACJ,CAAC;IACD,OAAO;QACL,WAAW,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM;QACvC,WAAW,EAAE,MAAM;QACnB,WAAW,EAAE,KAAK;KACnB,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CACf,IAA+B,EAC/B,IAAY,EACZ,KAAa,EACb,KAAa,EACb,SAAiB;IAEjB,MAAM,QAAQ,GAAG,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC;IACrC,MAAM,SAAS,GAAG,IAAI,EAAE,KAAK,IAAI,KAAK,CAAC;IACvC,MAAM,SAAS,GAAG,IAAI,EAAE,KAAK,IAAI,KAAK,CAAC;IACvC,IAAI,QAAQ,KAAK,MAAM,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;QAC1C,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,SAAS,EAAE,CAAC,CAAC,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;AAC5E,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface History<T> {
|
|
2
|
+
past: T[];
|
|
3
|
+
present: T;
|
|
4
|
+
future: T[];
|
|
5
|
+
coalescing: boolean;
|
|
6
|
+
}
|
|
7
|
+
export declare function createHistory<T>(present: T): History<T>;
|
|
8
|
+
export declare function sameJson<T>(left: T, right: T): boolean;
|
|
9
|
+
export declare function historyApply<T>(history: History<T>, next: T, coalesce: boolean, equals: (left: T, right: T) => boolean): History<T>;
|
|
10
|
+
export declare function historyUndo<T>(history: History<T>): History<T>;
|
|
11
|
+
export declare function historyRedo<T>(history: History<T>): History<T>;
|
|
12
|
+
export declare function historyEndGesture<T>(history: History<T>): History<T>;
|
|
13
|
+
//# sourceMappingURL=history.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/designer/history.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,OAAO,CAAC,CAAC;IACxB,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,OAAO,EAAE,CAAC,CAAC;IACX,MAAM,EAAE,CAAC,EAAE,CAAC;IACZ,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAEvD;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAEtD;AAED,wBAAgB,YAAY,CAAC,CAAC,EAC5B,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EACnB,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,OAAO,EACjB,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,OAAO,GACrC,OAAO,CAAC,CAAC,CAAC,CAeZ;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAY9D;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAY9D;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAKpE"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
export function createHistory(present) {
|
|
2
|
+
return { past: [], present, future: [], coalescing: false };
|
|
3
|
+
}
|
|
4
|
+
export function sameJson(left, right) {
|
|
5
|
+
return JSON.stringify(left) === JSON.stringify(right);
|
|
6
|
+
}
|
|
7
|
+
export function historyApply(history, next, coalesce, equals) {
|
|
8
|
+
if (equals(history.present, next)) {
|
|
9
|
+
return history;
|
|
10
|
+
}
|
|
11
|
+
if (coalesce && history.coalescing) {
|
|
12
|
+
return { ...history, present: next, future: [] };
|
|
13
|
+
}
|
|
14
|
+
return {
|
|
15
|
+
past: [...history.past, history.present].slice(-100),
|
|
16
|
+
present: next,
|
|
17
|
+
future: [],
|
|
18
|
+
coalescing: coalesce,
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
export function historyUndo(history) {
|
|
22
|
+
const previous = history.past[history.past.length - 1];
|
|
23
|
+
if (previous === undefined) {
|
|
24
|
+
return history;
|
|
25
|
+
}
|
|
26
|
+
return {
|
|
27
|
+
past: history.past.slice(0, -1),
|
|
28
|
+
present: previous,
|
|
29
|
+
future: [history.present, ...history.future],
|
|
30
|
+
coalescing: false,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
export function historyRedo(history) {
|
|
34
|
+
const next = history.future[0];
|
|
35
|
+
if (next === undefined) {
|
|
36
|
+
return history;
|
|
37
|
+
}
|
|
38
|
+
return {
|
|
39
|
+
past: [...history.past, history.present],
|
|
40
|
+
present: next,
|
|
41
|
+
future: history.future.slice(1),
|
|
42
|
+
coalescing: false,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
export function historyEndGesture(history) {
|
|
46
|
+
if (!history.coalescing) {
|
|
47
|
+
return history;
|
|
48
|
+
}
|
|
49
|
+
return { ...history, coalescing: false };
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=history.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history.js","sourceRoot":"","sources":["../../src/designer/history.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,aAAa,CAAI,OAAU;IACzC,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,QAAQ,CAAI,IAAO,EAAE,KAAQ;IAC3C,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,OAAmB,EACnB,IAAO,EACP,QAAiB,EACjB,MAAsC;IAEtC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;QAClC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,IAAI,QAAQ,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACnC,OAAO,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IACnD,CAAC;IAED,OAAO;QACL,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC;QACpD,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,EAAE;QACV,UAAU,EAAE,QAAQ;KACrB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CAAI,OAAmB;IAChD,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACvD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/B,OAAO,EAAE,QAAQ;QACjB,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;QAC5C,UAAU,EAAE,KAAK;KAClB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CAAI,OAAmB;IAChD,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC/B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,OAAO;QACL,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC;QACxC,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/B,UAAU,EAAE,KAAK;KAClB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAI,OAAmB;IACtD,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QACxB,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,OAAO,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;AAC3C,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { DocumentDesigner } from "./DocumentDesigner.js";
|
|
2
|
+
export type { DocumentDesignerProps } from "./DocumentDesigner.js";
|
|
3
|
+
export { THEME_PREFERENCES, THEME_STORAGE_KEY, browserMatchMedia, browserThemeStorage, isThemePreference, readSystemPrefersDark, readThemePreference, resolveTheme, subscribeSystemTheme, writeThemePreference, } from "./theme.js";
|
|
4
|
+
export type { ResolvedTheme, ThemePreference, ThemeStorage } from "./theme.js";
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/designer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,YAAY,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EACnB,YAAY,EACZ,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { DocumentDesigner } from "./DocumentDesigner.js";
|
|
2
|
+
export { THEME_PREFERENCES, THEME_STORAGE_KEY, browserMatchMedia, browserThemeStorage, isThemePreference, readSystemPrefersDark, readThemePreference, resolveTheme, subscribeSystemTheme, writeThemePreference, } from "./theme.js";
|
|
3
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/designer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EACnB,YAAY,EACZ,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { ElementDimensions, ElementPosition, ElementType, LengthUnit, PageConfiguration, PageMargins } from "../types.js";
|
|
2
|
+
export declare const GRID_SIZE = 5;
|
|
3
|
+
export declare const MIN_ZOOM = 0.25;
|
|
4
|
+
export declare const MAX_ZOOM = 2;
|
|
5
|
+
export declare const ZOOM_STEP = 0.1;
|
|
6
|
+
export declare const PAGE_FIT_PADDING = 48;
|
|
7
|
+
export interface ResolvedPage {
|
|
8
|
+
width: number;
|
|
9
|
+
height: number;
|
|
10
|
+
unit: LengthUnit;
|
|
11
|
+
margins: PageMargins;
|
|
12
|
+
}
|
|
13
|
+
export interface ContentBox {
|
|
14
|
+
x: number;
|
|
15
|
+
y: number;
|
|
16
|
+
width: number;
|
|
17
|
+
height: number;
|
|
18
|
+
}
|
|
19
|
+
export declare function roundUnit(value: number): number;
|
|
20
|
+
export declare function resolvePage(page: PageConfiguration): ResolvedPage;
|
|
21
|
+
export declare function pixelsPerUnit(unit: LengthUnit): number;
|
|
22
|
+
export declare function pagePixelSize(page: ResolvedPage): {
|
|
23
|
+
width: number;
|
|
24
|
+
height: number;
|
|
25
|
+
pxPerUnit: number;
|
|
26
|
+
};
|
|
27
|
+
export declare function marginBox(page: ResolvedPage): ContentBox;
|
|
28
|
+
/** Content area inside the margins, or the full page when the margins leave no room. */
|
|
29
|
+
export declare function contentBox(page: ResolvedPage): ContentBox;
|
|
30
|
+
export declare function snapToGrid(value: number, grid: number): number;
|
|
31
|
+
export declare function clampPosition(page: ResolvedPage, dimensions: ElementDimensions, position: ElementPosition): ElementPosition;
|
|
32
|
+
export declare function normalizeDimensions(type: ElementType, width: number, height: number, snap: boolean): ElementDimensions | null;
|
|
33
|
+
export declare function nextZoom(current: number, direction: -1 | 1): number;
|
|
34
|
+
export declare function fitZoom(viewportWidth: number, viewportHeight: number, pageWidth: number, pageHeight: number, padding: number): number;
|
|
35
|
+
//# sourceMappingURL=page-geometry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page-geometry.d.ts","sourceRoot":"","sources":["../../src/designer/page-geometry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/H,eAAO,MAAM,SAAS,IAAI,CAAC;AAC3B,eAAO,MAAM,QAAQ,OAAO,CAAC;AAC7B,eAAO,MAAM,QAAQ,IAAI,CAAC;AAC1B,eAAO,MAAM,SAAS,MAAM,CAAC;AAC7B,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAInC,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,iBAAiB,GAAG,YAAY,CA2BjE;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAWtD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,YAAY,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAOtG;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,YAAY,GAAG,UAAU,CAWxD;AAED,wFAAwF;AACxF,wBAAgB,UAAU,CAAC,IAAI,EAAE,YAAY,GAAG,UAAU,CAMzD;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAK9D;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,YAAY,EAClB,UAAU,EAAE,iBAAiB,EAC7B,QAAQ,EAAE,eAAe,GACxB,eAAe,CAOjB;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,WAAW,EACjB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,OAAO,GACZ,iBAAiB,GAAG,IAAI,CAsB1B;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAGnE;AAED,wBAAgB,OAAO,CACrB,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GACd,MAAM,CAQR"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { standardPageDimensions } from "../types.js";
|
|
2
|
+
export const GRID_SIZE = 5;
|
|
3
|
+
export const MIN_ZOOM = 0.25;
|
|
4
|
+
export const MAX_ZOOM = 2;
|
|
5
|
+
export const ZOOM_STEP = 0.1;
|
|
6
|
+
export const PAGE_FIT_PADDING = 48;
|
|
7
|
+
const PIXELS_PER_INCH = 96;
|
|
8
|
+
export function roundUnit(value) {
|
|
9
|
+
return Math.round(value * 100) / 100;
|
|
10
|
+
}
|
|
11
|
+
export function resolvePage(page) {
|
|
12
|
+
if (page.paperSize === "custom") {
|
|
13
|
+
const dimensions = page.dimensions ?? { width: 210, height: 297, unit: "mm" };
|
|
14
|
+
return {
|
|
15
|
+
width: dimensions.width,
|
|
16
|
+
height: dimensions.height,
|
|
17
|
+
unit: dimensions.unit,
|
|
18
|
+
margins: page.margins,
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
if (page.dimensions) {
|
|
22
|
+
return {
|
|
23
|
+
width: page.dimensions.width,
|
|
24
|
+
height: page.dimensions.height,
|
|
25
|
+
unit: page.dimensions.unit,
|
|
26
|
+
margins: page.margins,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
const dimensions = standardPageDimensions(page.paperSize, page.orientation);
|
|
30
|
+
return {
|
|
31
|
+
width: dimensions.width,
|
|
32
|
+
height: dimensions.height,
|
|
33
|
+
unit: dimensions.unit,
|
|
34
|
+
margins: page.margins,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
export function pixelsPerUnit(unit) {
|
|
38
|
+
switch (unit) {
|
|
39
|
+
case "mm":
|
|
40
|
+
return PIXELS_PER_INCH / 25.4;
|
|
41
|
+
case "pt":
|
|
42
|
+
return PIXELS_PER_INCH / 72;
|
|
43
|
+
case "in":
|
|
44
|
+
return PIXELS_PER_INCH;
|
|
45
|
+
case "px":
|
|
46
|
+
return 1;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
export function pagePixelSize(page) {
|
|
50
|
+
const pxPerUnit = pixelsPerUnit(page.unit);
|
|
51
|
+
return {
|
|
52
|
+
width: page.width * pxPerUnit,
|
|
53
|
+
height: page.height * pxPerUnit,
|
|
54
|
+
pxPerUnit,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
export function marginBox(page) {
|
|
58
|
+
const left = Math.min(Math.max(page.margins.left, 0), page.width);
|
|
59
|
+
const top = Math.min(Math.max(page.margins.top, 0), page.height);
|
|
60
|
+
const right = Math.min(Math.max(page.margins.right, 0), Math.max(page.width - left, 0));
|
|
61
|
+
const bottom = Math.min(Math.max(page.margins.bottom, 0), Math.max(page.height - top, 0));
|
|
62
|
+
return {
|
|
63
|
+
x: left,
|
|
64
|
+
y: top,
|
|
65
|
+
width: Math.max(page.width - left - right, 0),
|
|
66
|
+
height: Math.max(page.height - top - bottom, 0),
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
/** Content area inside the margins, or the full page when the margins leave no room. */
|
|
70
|
+
export function contentBox(page) {
|
|
71
|
+
const box = marginBox(page);
|
|
72
|
+
if (box.width >= 10 && box.height >= 10) {
|
|
73
|
+
return box;
|
|
74
|
+
}
|
|
75
|
+
return { x: 0, y: 0, width: page.width, height: page.height };
|
|
76
|
+
}
|
|
77
|
+
export function snapToGrid(value, grid) {
|
|
78
|
+
if (grid <= 0) {
|
|
79
|
+
return roundUnit(value);
|
|
80
|
+
}
|
|
81
|
+
return roundUnit(Math.round(value / grid) * grid);
|
|
82
|
+
}
|
|
83
|
+
export function clampPosition(page, dimensions, position) {
|
|
84
|
+
const maxX = Math.max(roundUnit(page.width - Math.max(dimensions.width, 0)), 0);
|
|
85
|
+
const maxY = Math.max(roundUnit(page.height - Math.max(dimensions.height, 0)), 0);
|
|
86
|
+
return {
|
|
87
|
+
x: roundUnit(Math.min(Math.max(position.x, 0), maxX)),
|
|
88
|
+
y: roundUnit(Math.min(Math.max(position.y, 0), maxY)),
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
export function normalizeDimensions(type, width, height, snap) {
|
|
92
|
+
if (!Number.isFinite(width) || !Number.isFinite(height)) {
|
|
93
|
+
return null;
|
|
94
|
+
}
|
|
95
|
+
let nextWidth = snap ? snapToGrid(width, GRID_SIZE) : roundUnit(width);
|
|
96
|
+
let nextHeight = snap ? snapToGrid(height, GRID_SIZE) : roundUnit(height);
|
|
97
|
+
if (type === "line") {
|
|
98
|
+
nextWidth = Math.max(nextWidth, 0);
|
|
99
|
+
nextHeight = Math.max(nextHeight, 0);
|
|
100
|
+
if (nextWidth === 0 && nextHeight === 0) {
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
return { width: nextWidth, height: nextHeight };
|
|
104
|
+
}
|
|
105
|
+
if (nextWidth <= 0 || nextHeight <= 0) {
|
|
106
|
+
return null;
|
|
107
|
+
}
|
|
108
|
+
return { width: nextWidth, height: nextHeight };
|
|
109
|
+
}
|
|
110
|
+
export function nextZoom(current, direction) {
|
|
111
|
+
const stepped = roundUnit(current + direction * ZOOM_STEP);
|
|
112
|
+
return Math.min(MAX_ZOOM, Math.max(MIN_ZOOM, stepped));
|
|
113
|
+
}
|
|
114
|
+
export function fitZoom(viewportWidth, viewportHeight, pageWidth, pageHeight, padding) {
|
|
115
|
+
const availableWidth = Math.max(viewportWidth - padding, 1);
|
|
116
|
+
const availableHeight = Math.max(viewportHeight - padding, 1);
|
|
117
|
+
if (pageWidth <= 0 || pageHeight <= 0) {
|
|
118
|
+
return 1;
|
|
119
|
+
}
|
|
120
|
+
const scale = Math.min(availableWidth / pageWidth, availableHeight / pageHeight);
|
|
121
|
+
return Math.min(MAX_ZOOM, Math.max(MIN_ZOOM, scale));
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=page-geometry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page-geometry.js","sourceRoot":"","sources":["../../src/designer/page-geometry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export declare const STYLE_ID = "doc-forge-designer-styles";
|
|
2
|
+
export declare const DESIGNER_CSS = "\n.df-shell {\n --df-app: #e7ebf0;\n --df-surface: #ffffff;\n --df-surface-muted: #f7f8fa;\n --df-text: #1c2430;\n --df-text-secondary: #3d4858;\n --df-text-muted: #5c6778;\n --df-border: #d5dbe3;\n --df-input-bg: #ffffff;\n --df-input-border: #c5ceda;\n --df-hover: #e8eef6;\n --df-selected: #e5eefc;\n --df-selected-border: #c5d7f5;\n --df-selected-text: #174f9e;\n --df-primary: #1b5fbf;\n --df-primary-hover: #174f9e;\n --df-primary-text: #ffffff;\n --df-focus: #1b5fbf;\n --df-workspace: #c5cad3;\n --df-shadow: rgba(20, 28, 40, 0.18);\n --df-overlay: rgba(20, 28, 40, 0.45);\n --df-danger: #9f1d1d;\n --df-danger-border: #e4b4b4;\n --df-warning: #8a5a00;\n --df-success: #0f7b4c;\n color-scheme: light;\n height: 100%;\n min-height: 560px;\n display: flex;\n flex-direction: column;\n background: var(--df-app);\n color: var(--df-text);\n font-family: \"Segoe UI\", \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-size: 13px;\n line-height: 1.4;\n}\n.df-shell[data-theme=\"dark\"] {\n --df-app: #12161c;\n --df-surface: #1c232d;\n --df-surface-muted: #171d26;\n --df-text: #e8eef6;\n --df-text-secondary: #c5d0de;\n --df-text-muted: #a8b3c2;\n --df-border: #313a48;\n --df-input-bg: #121820;\n --df-input-border: #465266;\n --df-hover: #283140;\n --df-selected: #1d3a5f;\n --df-selected-border: #3d6eab;\n --df-selected-text: #d6e6ff;\n --df-primary: #3d8bfd;\n --df-primary-hover: #69a6ff;\n --df-primary-text: #061018;\n --df-focus: #9ec1ff;\n --df-workspace: #0c1016;\n --df-shadow: rgba(0, 0, 0, 0.45);\n --df-overlay: rgba(0, 0, 0, 0.62);\n --df-danger: #ffb4b4;\n --df-danger-border: #8a3d3d;\n --df-warning: #f0c674;\n --df-success: #7dcea0;\n color-scheme: dark;\n}\n@media (prefers-reduced-motion: reduce) {\n .df-shell,\n .df-shell * {\n transition: none !important;\n }\n}\n.df-shell *,\n.df-shell *::before,\n.df-shell *::after {\n box-sizing: border-box;\n}\n.df-shell button,\n.df-shell input,\n.df-shell select,\n.df-shell textarea {\n font: inherit;\n}\n.df-shell input,\n.df-shell select,\n.df-shell textarea {\n color: var(--df-text);\n}\n.df-shell button:focus-visible,\n.df-shell input:focus-visible,\n.df-shell select:focus-visible,\n.df-shell textarea:focus-visible {\n outline: 2px solid var(--df-focus);\n outline-offset: 1px;\n}\n.df-toolbar {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n background: var(--df-surface);\n border-bottom: 1px solid var(--df-border);\n}\n.df-toolbar-group {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n.df-name {\n flex: 1 1 180px;\n min-width: 160px;\n}\n.df-name input,\n.df-select,\n.df-custom input,\n.df-field input,\n.df-field select,\n.df-field textarea {\n width: 100%;\n border: 1px solid var(--df-input-border);\n border-radius: 6px;\n background: var(--df-input-bg);\n color: var(--df-text);\n}\n.df-name input,\n.df-select,\n.df-custom input,\n.df-field input,\n.df-field select {\n height: 32px;\n padding: 0 8px;\n}\n.df-select {\n width: auto;\n}\n.df-custom {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.df-custom label {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n.df-custom input {\n width: 72px;\n}\n.df-button {\n height: 32px;\n padding: 0 10px;\n border: 1px solid var(--df-input-border);\n border-radius: 6px;\n background: var(--df-surface);\n color: var(--df-text);\n cursor: pointer;\n}\n.df-button:hover:not(:disabled) {\n background: var(--df-hover);\n}\n.df-button:disabled {\n opacity: 0.45;\n cursor: default;\n}\n.df-button--primary {\n background: var(--df-primary);\n border-color: var(--df-primary-hover);\n color: var(--df-primary-text);\n}\n.df-button--primary:hover:not(:disabled) {\n background: var(--df-primary-hover);\n}\n.df-button--pressed {\n background: var(--df-selected);\n border-color: var(--df-primary);\n color: var(--df-selected-text);\n}\n.df-button--danger {\n width: 100%;\n color: var(--df-danger);\n border-color: var(--df-danger-border);\n background: var(--df-surface);\n}\n.df-theme {\n display: flex;\n align-items: center;\n gap: 2px;\n}\n.df-theme-button {\n width: 32px;\n height: 32px;\n display: grid;\n place-items: center;\n padding: 0;\n}\n.df-theme-button svg {\n display: block;\n}\n.df-zoom {\n min-width: 52px;\n text-align: center;\n font-variant-numeric: tabular-nums;\n color: var(--df-text-secondary);\n}\n.df-status {\n flex: 1 1 160px;\n min-height: 1.2em;\n font-size: 12px;\n}\n.df-status--ok { color: var(--df-success); }\n.df-status--error { color: var(--df-danger); }\n.df-body {\n flex: 1;\n min-height: 0;\n display: flex;\n}\n.df-side {\n width: 240px;\n flex: 0 0 240px;\n background: var(--df-surface-muted);\n overflow: auto;\n padding: 12px;\n}\n.df-side--left { border-right: 1px solid var(--df-border); }\n.df-side--right { border-left: 1px solid var(--df-border); }\n.df-side-title {\n margin: 0 0 4px;\n font-size: 12px;\n font-weight: 650;\n letter-spacing: 0.04em;\n text-transform: uppercase;\n color: var(--df-text-muted);\n}\n.df-side-note {\n margin: 0 0 12px;\n color: var(--df-text-muted);\n font-size: 12px;\n}\n.df-tool {\n display: flex;\n align-items: center;\n gap: 10px;\n width: 100%;\n margin-bottom: 6px;\n padding: 8px;\n border: 1px solid transparent;\n border-radius: 8px;\n background: transparent;\n text-align: left;\n cursor: pointer;\n}\n.df-tool:hover { background: var(--df-hover); }\n.df-tool-icon {\n width: 32px;\n height: 32px;\n display: grid;\n place-items: center;\n border: 1px solid var(--df-border);\n border-radius: 6px;\n background: var(--df-surface);\n color: var(--df-text);\n flex: 0 0 auto;\n}\n.df-tool strong { display: block; font-weight: 600; color: var(--df-text); }\n.df-tool span { display: block; color: var(--df-text-muted); font-size: 12px; }\n.df-viewport {\n flex: 1;\n min-width: 0;\n min-height: 0;\n display: flex;\n flex-direction: column;\n background: var(--df-workspace);\n}\n.df-viewport-stage {\n flex: 1;\n min-height: 0;\n overflow: auto;\n display: grid;\n place-content: safe center;\n padding: 24px;\n}\n.df-preview-banner {\n flex: 0 0 auto;\n padding: 8px 12px;\n background: var(--df-selected);\n color: var(--df-selected-text);\n border-bottom: 1px solid var(--df-selected-border);\n text-align: center;\n}\n.df-viewport-stage--html {\n display: flex;\n flex-direction: column;\n padding: 0;\n}\n.df-html-note {\n flex: 0 0 auto;\n margin: 0;\n padding: 8px 12px;\n background: var(--df-surface);\n color: var(--df-text-muted);\n border-bottom: 1px solid var(--df-border);\n}\n.df-html-frame {\n flex: 1;\n width: 100%;\n min-height: 0;\n border: 0;\n background: var(--df-workspace);\n}\n.df-page-slot { position: relative; }\n/* Document surface. These colors stay with the template and do not follow the editor theme. */\n.df-page {\n position: absolute;\n top: 0;\n left: 0;\n background: #fff;\n color: #1c2430;\n box-shadow: 0 12px 40px var(--df-shadow);\n transform-origin: top left;\n}\n.df-grid,\n.df-margins,\n.df-empty {\n position: absolute;\n pointer-events: none;\n}\n.df-grid {\n inset: 0;\n background-image:\n linear-gradient(to right, rgba(28, 36, 48, 0.12) 1px, transparent 1px),\n linear-gradient(to bottom, rgba(28, 36, 48, 0.12) 1px, transparent 1px);\n}\n.df-margins {\n border: 1px dashed rgba(27, 95, 191, 0.7);\n}\n.df-empty {\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n color: #8b95a5;\n font-size: 14px;\n white-space: nowrap;\n}\n.df-element {\n position: absolute;\n touch-action: none;\n cursor: move;\n user-select: none;\n}\n.df-element--selected {\n box-shadow: 0 0 0 2px #1b5fbf;\n z-index: 2;\n}\n.df-text {\n overflow: hidden;\n white-space: pre-wrap;\n word-break: break-word;\n}\n.df-image {\n display: flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n padding: 4px;\n text-align: center;\n color: #5c6778;\n font-size: 11px;\n background:\n repeating-linear-gradient(-45deg, #f7f8fa, #f7f8fa 6px, #eef1f5 6px, #eef1f5 12px);\n border: 1px dashed #9aa3b2;\n}\n.df-items,\n.df-report,\n.df-totals {\n width: 100%;\n height: 100%;\n overflow: hidden;\n background: #ffffff;\n color: #1c2430;\n font-size: 10px;\n pointer-events: none;\n}\n.df-items table,\n.df-report table,\n.df-totals table {\n width: 100%;\n border-collapse: collapse;\n}\n.df-items th,\n.df-items td,\n.df-report th,\n.df-report td,\n.df-totals td {\n padding: 2px 4px;\n text-align: left;\n}\n.df-totals td:last-child { text-align: right; }\n.df-report tr[data-kind=\"group\"],\n.df-report tr[data-kind=\"subtotal\"],\n.df-report tr[data-kind=\"grand\"] { font-weight: 700; }\n.df-column {\n margin: 0 0 8px;\n padding: 8px;\n border: 1px solid var(--df-border);\n border-radius: 6px;\n}\n.df-column legend { padding: 0 4px; font-size: 12px; }\n.df-image-photo {\n width: 100%;\n height: 100%;\n object-fit: contain;\n pointer-events: none;\n}\n.df-rect { overflow: hidden; }\n.df-line { overflow: visible; }\n.df-handle {\n position: absolute;\n width: 10px;\n height: 10px;\n right: -5px;\n bottom: -5px;\n padding: 0;\n border: 1px solid #1b5fbf;\n border-radius: 2px;\n background: #fff;\n cursor: nwse-resize;\n z-index: 3;\n}\n.df-style {\n border: 1px solid var(--df-border);\n border-radius: 8px;\n background: var(--df-surface);\n}\n.df-style > summary {\n cursor: pointer;\n padding: 8px 10px;\n font-size: 12px;\n font-weight: 650;\n}\n.df-style-body {\n display: grid;\n gap: 8px;\n padding: 0 10px 10px;\n}\n.df-reset { justify-self: start; font-size: 11px; }\n.df-props {\n display: grid;\n gap: 12px;\n align-content: start;\n}\n.df-props-head {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 8px;\n}\n.df-props-head h3 {\n margin: 0;\n font-size: 14px;\n}\n.df-link {\n border: 0;\n background: transparent;\n color: var(--df-primary);\n cursor: pointer;\n padding: 0;\n}\n.df-link:hover { color: var(--df-primary-hover); }\n.df-field {\n display: grid;\n gap: 4px;\n}\n.df-check {\n display: flex;\n align-items: center;\n gap: 6px;\n margin: 6px 0;\n font-size: 12px;\n}\n.df-field > span,\n.df-custom span {\n font-size: 11px;\n font-weight: 650;\n color: var(--df-text-muted);\n}\n.df-field-row {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 8px;\n}\n.df-field textarea {\n min-height: 72px;\n padding: 8px;\n resize: vertical;\n}\n.df-color {\n display: flex;\n gap: 6px;\n align-items: center;\n}\n.df-color input[type=\"color\"] {\n width: 32px;\n height: 32px;\n padding: 2px;\n flex: 0 0 auto;\n}\n.df-meta {\n margin: 0;\n color: var(--df-text-muted);\n font-size: 12px;\n}\n.df-error {\n margin: 24px;\n padding: 16px;\n border: 1px solid var(--df-danger-border);\n border-radius: 8px;\n background: var(--df-surface);\n color: var(--df-danger);\n}\n.df-error ul { margin: 8px 0 0; padding-left: 18px; }\n.df-binding {\n margin: 0;\n padding: 8px;\n border: 1px solid var(--df-border);\n border-radius: 8px;\n display: grid;\n gap: 8px;\n}\n.df-binding legend {\n padding: 0 4px;\n font-size: 11px;\n font-weight: 650;\n color: var(--df-text-muted);\n}\n.df-choice {\n display: grid;\n gap: 4px;\n}\n.df-choice label {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n.df-path-note {\n margin: 0;\n font-size: 12px;\n}\n.df-path-note--ok { color: var(--df-success); }\n.df-path-note--error { color: var(--df-danger); }\n.df-path-note--muted { color: var(--df-text-muted); }\n.df-dialog-backdrop {\n position: fixed;\n inset: 0;\n z-index: 30;\n background: var(--df-overlay);\n display: grid;\n place-items: center;\n padding: 16px;\n}\n.df-dialog {\n width: min(520px, 100%);\n max-height: min(640px, 100%);\n overflow: auto;\n background: var(--df-surface);\n color: var(--df-text);\n border-radius: 10px;\n padding: 16px;\n display: grid;\n gap: 10px;\n box-shadow: 0 16px 48px var(--df-shadow);\n}\n.df-dialog h3 {\n margin: 0;\n font-size: 16px;\n}\n.df-dialog textarea {\n min-height: 240px;\n padding: 8px;\n border: 1px solid var(--df-input-border);\n border-radius: 6px;\n background: var(--df-input-bg);\n color: var(--df-text);\n font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;\n font-size: 12px;\n resize: vertical;\n}\n.df-dialog-actions {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n justify-content: flex-end;\n}\n";
|
|
3
|
+
//# sourceMappingURL=styles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../src/designer/styles.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ,8BAA8B,CAAC;AAEpD,eAAO,MAAM,YAAY,m0YA+kBxB,CAAC"}
|