@arslankhan/doc-forge 0.1.2 → 0.1.4
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 +22 -6
- package/dist/binding-schema.d.ts +48 -0
- package/dist/binding-schema.d.ts.map +1 -0
- package/dist/binding-schema.js +200 -0
- package/dist/binding-schema.js.map +1 -0
- package/dist/binding.d.ts.map +1 -1
- package/dist/binding.js +2 -1
- package/dist/binding.js.map +1 -1
- package/dist/designer/DocumentDesigner.d.ts +9 -1
- package/dist/designer/DocumentDesigner.d.ts.map +1 -1
- package/dist/designer/DocumentDesigner.js +2 -2
- package/dist/designer/DocumentDesigner.js.map +1 -1
- package/dist/designer/ImageBindingFields.d.ts +3 -1
- package/dist/designer/ImageBindingFields.d.ts.map +1 -1
- package/dist/designer/ImageBindingFields.js +6 -6
- package/dist/designer/ImageBindingFields.js.map +1 -1
- package/dist/designer/InvoiceFields.d.ts +7 -2
- package/dist/designer/InvoiceFields.d.ts.map +1 -1
- package/dist/designer/InvoiceFields.js +19 -22
- package/dist/designer/InvoiceFields.js.map +1 -1
- package/dist/designer/PropertiesPanel.d.ts +4 -1
- package/dist/designer/PropertiesPanel.d.ts.map +1 -1
- package/dist/designer/PropertiesPanel.js +11 -8
- package/dist/designer/PropertiesPanel.js.map +1 -1
- package/dist/designer/ReportFields.d.ts +5 -1
- package/dist/designer/ReportFields.d.ts.map +1 -1
- package/dist/designer/ReportFields.js +20 -5
- package/dist/designer/ReportFields.js.map +1 -1
- package/dist/designer/SearchableBindingSelect.d.ts +27 -0
- package/dist/designer/SearchableBindingSelect.d.ts.map +1 -0
- package/dist/designer/SearchableBindingSelect.js +124 -0
- package/dist/designer/SearchableBindingSelect.js.map +1 -0
- package/dist/designer/TextBindingFields.d.ts +3 -1
- package/dist/designer/TextBindingFields.d.ts.map +1 -1
- package/dist/designer/TextBindingFields.js +6 -6
- package/dist/designer/TextBindingFields.js.map +1 -1
- package/dist/designer/index.d.ts +1 -0
- package/dist/designer/index.d.ts.map +1 -1
- package/dist/designer/index.js +1 -0
- package/dist/designer/index.js.map +1 -1
- package/dist/designer/styles.d.ts +1 -1
- package/dist/designer/styles.d.ts.map +1 -1
- package/dist/designer/styles.js +45 -0
- package/dist/designer/styles.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/render/binding-template.d.ts +9 -0
- package/dist/render/binding-template.d.ts.map +1 -1
- package/dist/render/binding-template.js +163 -10
- package/dist/render/binding-template.js.map +1 -1
- package/dist/report/process.d.ts.map +1 -1
- package/dist/report/process.js +16 -15
- package/dist/report/process.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type ReactElement } from "react";
|
|
2
|
+
import { type BindingField } from "../binding-schema.js";
|
|
3
|
+
interface SearchableBindingSelectProps {
|
|
4
|
+
label: string;
|
|
5
|
+
value: string;
|
|
6
|
+
options: readonly BindingField[];
|
|
7
|
+
onChange: (path: string) => void;
|
|
8
|
+
onBlur: () => void;
|
|
9
|
+
ariaLabel: string;
|
|
10
|
+
testId?: string;
|
|
11
|
+
placeholder?: string;
|
|
12
|
+
}
|
|
13
|
+
/** Searchable list of discovered binding paths. The stored value is the exact path. */
|
|
14
|
+
export declare function SearchableBindingSelect({ label, value, options, onChange, onBlur, ariaLabel, testId, placeholder, }: SearchableBindingSelectProps): ReactElement;
|
|
15
|
+
interface BindingPathControlProps {
|
|
16
|
+
label: string;
|
|
17
|
+
value: string;
|
|
18
|
+
options?: readonly BindingField[];
|
|
19
|
+
onChange: (path: string) => void;
|
|
20
|
+
onBlur: () => void;
|
|
21
|
+
ariaLabel: string;
|
|
22
|
+
testId?: string;
|
|
23
|
+
}
|
|
24
|
+
/** Uses the searchable list when a sample payload supplied options. Otherwise it keeps a path input. */
|
|
25
|
+
export declare function BindingPathControl({ label, value, options, onChange, onBlur, ariaLabel, testId, }: BindingPathControlProps): ReactElement;
|
|
26
|
+
export {};
|
|
27
|
+
//# sourceMappingURL=SearchableBindingSelect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SearchableBindingSelect.d.ts","sourceRoot":"","sources":["../../src/designer/SearchableBindingSelect.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAmE,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AAC3G,OAAO,EAAuB,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAG9E,UAAU,4BAA4B;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,SAAS,YAAY,EAAE,CAAC;IACjC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,uFAAuF;AACvF,wBAAgB,uBAAuB,CAAC,EACtC,KAAK,EACL,KAAK,EACL,OAAO,EACP,QAAQ,EACR,MAAM,EACN,SAAS,EACT,MAAM,EACN,WAA6B,GAC9B,EAAE,4BAA4B,GAAG,YAAY,CA6J7C;AAED,UAAU,uBAAuB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;IAClC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wGAAwG;AACxG,wBAAgB,kBAAkB,CAAC,EACjC,KAAK,EACL,KAAK,EACL,OAAO,EACP,QAAQ,EACR,MAAM,EACN,SAAS,EACT,MAAM,GACP,EAAE,uBAAuB,GAAG,YAAY,CAuCxC"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useId, useMemo, useRef, useState } from "react";
|
|
3
|
+
import { filterBindingFields } from "../binding-schema.js";
|
|
4
|
+
import { parseBindingPath } from "../binding-path.js";
|
|
5
|
+
/** Searchable list of discovered binding paths. The stored value is the exact path. */
|
|
6
|
+
export function SearchableBindingSelect({ label, value, options, onChange, onBlur, ariaLabel, testId, placeholder = "Search fields", }) {
|
|
7
|
+
const listId = useId();
|
|
8
|
+
const inputRef = useRef(null);
|
|
9
|
+
const [open, setOpen] = useState(false);
|
|
10
|
+
const [query, setQuery] = useState("");
|
|
11
|
+
const [activeIndex, setActiveIndex] = useState(0);
|
|
12
|
+
const [menuBox, setMenuBox] = useState(null);
|
|
13
|
+
const filtered = useMemo(() => filterBindingFields(options, open ? query : ""), [options, open, query]);
|
|
14
|
+
const groups = useMemo(() => groupFields(filtered), [filtered]);
|
|
15
|
+
const activeId = filtered[activeIndex] ? `${listId}-option-${activeIndex}` : undefined;
|
|
16
|
+
useEffect(() => {
|
|
17
|
+
setActiveIndex(0);
|
|
18
|
+
}, [query]);
|
|
19
|
+
useEffect(() => {
|
|
20
|
+
if (!open) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
function place() {
|
|
24
|
+
const input = inputRef.current;
|
|
25
|
+
if (!input) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
const rect = input.getBoundingClientRect();
|
|
29
|
+
const menuHeight = 220;
|
|
30
|
+
const below = window.innerHeight - rect.bottom;
|
|
31
|
+
const top = below < menuHeight && rect.top > below ? Math.max(8, rect.top - menuHeight - 4) : rect.bottom + 4;
|
|
32
|
+
setMenuBox({ top, left: rect.left, width: rect.width });
|
|
33
|
+
}
|
|
34
|
+
place();
|
|
35
|
+
window.addEventListener("scroll", place, true);
|
|
36
|
+
window.addEventListener("resize", place);
|
|
37
|
+
return () => {
|
|
38
|
+
window.removeEventListener("scroll", place, true);
|
|
39
|
+
window.removeEventListener("resize", place);
|
|
40
|
+
};
|
|
41
|
+
}, [open, query, filtered.length]);
|
|
42
|
+
function choose(path) {
|
|
43
|
+
onChange(path);
|
|
44
|
+
setQuery("");
|
|
45
|
+
setOpen(false);
|
|
46
|
+
}
|
|
47
|
+
function onKeyDown(event) {
|
|
48
|
+
if (event.key === "ArrowDown") {
|
|
49
|
+
event.preventDefault();
|
|
50
|
+
setOpen(true);
|
|
51
|
+
setActiveIndex((index) => Math.min(index + 1, Math.max(filtered.length - 1, 0)));
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
if (event.key === "ArrowUp") {
|
|
55
|
+
event.preventDefault();
|
|
56
|
+
setOpen(true);
|
|
57
|
+
setActiveIndex((index) => Math.max(index - 1, 0));
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
if (event.key === "Enter" && open) {
|
|
61
|
+
event.preventDefault();
|
|
62
|
+
const field = filtered[activeIndex];
|
|
63
|
+
if (field) {
|
|
64
|
+
choose(field.path);
|
|
65
|
+
}
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
if (event.key === "Escape") {
|
|
69
|
+
setOpen(false);
|
|
70
|
+
setQuery("");
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
let optionIndex = -1;
|
|
74
|
+
return (_jsxs("label", { className: "df-field", children: [_jsx("span", { children: label }), _jsxs("div", { className: "df-bind-select", children: [_jsx("input", { ref: inputRef, role: "combobox", "aria-label": ariaLabel, "aria-autocomplete": "list", "aria-expanded": open, "aria-controls": listId, "aria-activedescendant": open ? activeId : undefined, "data-testid": testId, spellCheck: false, placeholder: placeholder, value: open ? query : value, onFocus: () => {
|
|
75
|
+
setQuery("");
|
|
76
|
+
setOpen(true);
|
|
77
|
+
}, onClick: () => setOpen(true), onChange: (event) => {
|
|
78
|
+
setQuery(event.target.value);
|
|
79
|
+
setOpen(true);
|
|
80
|
+
}, onKeyDown: onKeyDown, onBlur: () => {
|
|
81
|
+
const typed = query.trim();
|
|
82
|
+
if (typed.length > 0 && typed !== value && parseBindingPath(typed).valid) {
|
|
83
|
+
onChange(typed);
|
|
84
|
+
}
|
|
85
|
+
setOpen(false);
|
|
86
|
+
setQuery("");
|
|
87
|
+
onBlur();
|
|
88
|
+
} }), open ? (_jsx("ul", { id: listId, role: "listbox", className: "df-bind-menu", "data-testid": testId ? `${testId}-options` : undefined, style: menuBox ? { top: menuBox.top, left: menuBox.left, width: menuBox.width } : undefined, children: filtered.length === 0 ? (_jsx("li", { className: "df-bind-empty", children: "No matching fields." })) : (groups.map((group) => (_jsxs("li", { role: "presentation", children: [_jsx("div", { className: "df-bind-group", children: group.name }), _jsx("ul", { role: "presentation", children: group.fields.map((field) => {
|
|
89
|
+
optionIndex += 1;
|
|
90
|
+
const index = optionIndex;
|
|
91
|
+
const selected = index === activeIndex;
|
|
92
|
+
return (_jsx("li", { role: "presentation", children: _jsxs("button", { type: "button", role: "option", id: `${listId}-option-${index}`, "aria-selected": selected, className: selected ? "df-bind-option df-bind-option--active" : "df-bind-option", onMouseDown: (event) => event.preventDefault(), onMouseEnter: () => setActiveIndex(index), onClick: () => choose(field.path), children: [_jsx("span", { children: field.label }), _jsx("span", { className: "df-bind-type", children: field.type }), _jsx("code", { className: "df-bind-path", children: field.path })] }) }, field.path));
|
|
93
|
+
}) })] }, group.name)))) })) : null] })] }));
|
|
94
|
+
}
|
|
95
|
+
/** Uses the searchable list when a sample payload supplied options. Otherwise it keeps a path input. */
|
|
96
|
+
export function BindingPathControl({ label, value, options, onChange, onBlur, ariaLabel, testId, }) {
|
|
97
|
+
const [draft, setDraft] = useState(value);
|
|
98
|
+
useEffect(() => {
|
|
99
|
+
setDraft(value);
|
|
100
|
+
}, [value]);
|
|
101
|
+
if (!options) {
|
|
102
|
+
return (_jsxs("label", { className: "df-field", children: [_jsx("span", { children: label }), _jsx("input", { "aria-label": ariaLabel, "data-testid": testId, value: draft, spellCheck: false, onChange: (event) => {
|
|
103
|
+
const next = event.target.value;
|
|
104
|
+
setDraft(next);
|
|
105
|
+
if (parseBindingPath(next).valid) {
|
|
106
|
+
onChange(next);
|
|
107
|
+
}
|
|
108
|
+
}, onBlur: onBlur })] }));
|
|
109
|
+
}
|
|
110
|
+
return (_jsx(SearchableBindingSelect, { label: label, value: value, options: options, onChange: onChange, onBlur: onBlur, ariaLabel: ariaLabel, testId: testId }));
|
|
111
|
+
}
|
|
112
|
+
function groupFields(fields) {
|
|
113
|
+
const groups = [];
|
|
114
|
+
for (const field of fields) {
|
|
115
|
+
const current = groups[groups.length - 1];
|
|
116
|
+
if (!current || current.name !== field.group) {
|
|
117
|
+
groups.push({ name: field.group, fields: [field] });
|
|
118
|
+
continue;
|
|
119
|
+
}
|
|
120
|
+
current.fields.push(field);
|
|
121
|
+
}
|
|
122
|
+
return groups;
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=SearchableBindingSelect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SearchableBindingSelect.js","sourceRoot":"","sources":["../../src/designer/SearchableBindingSelect.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { type ReactElement } from "react";
|
|
2
|
+
import type { BindingField } from "../binding-schema.js";
|
|
2
3
|
import type { TextElement } from "../types.js";
|
|
3
4
|
interface TextBindingFieldsProps {
|
|
4
5
|
element: TextElement;
|
|
5
6
|
previewData: unknown | null;
|
|
7
|
+
scalarFields?: readonly BindingField[];
|
|
6
8
|
onCommit: (element: TextElement, coalesce?: boolean) => void;
|
|
7
9
|
onBlur: () => void;
|
|
8
10
|
}
|
|
9
|
-
export declare function TextBindingFields({ element, previewData, onCommit, onBlur, }: TextBindingFieldsProps): ReactElement;
|
|
11
|
+
export declare function TextBindingFields({ element, previewData, scalarFields, onCommit, onBlur, }: TextBindingFieldsProps): ReactElement;
|
|
10
12
|
export {};
|
|
11
13
|
//# sourceMappingURL=TextBindingFields.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextBindingFields.d.ts","sourceRoot":"","sources":["../../src/designer/TextBindingFields.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"TextBindingFields.d.ts","sourceRoot":"","sources":["../../src/designer/TextBindingFields.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AAE/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD,OAAO,KAAK,EAAe,WAAW,EAAE,MAAM,aAAa,CAAC;AAG5D,UAAU,sBAAsB;IAC9B,OAAO,EAAE,WAAW,CAAC;IACrB,WAAW,EAAE,OAAO,GAAG,IAAI,CAAC;IAC5B,YAAY,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;IACvC,QAAQ,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7D,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,wBAAgB,iBAAiB,CAAC,EAChC,OAAO,EACP,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,MAAM,GACP,EAAE,sBAAsB,GAAG,YAAY,CAiIvC"}
|
|
@@ -2,7 +2,8 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
2
2
|
import { useEffect, useState } from "react";
|
|
3
3
|
import { resolveElementData } from "../binding.js";
|
|
4
4
|
import { parseBindingPath } from "../binding-path.js";
|
|
5
|
-
|
|
5
|
+
import { BindingPathControl } from "./SearchableBindingSelect.js";
|
|
6
|
+
export function TextBindingFields({ element, previewData, scalarFields, onCommit, onBlur, }) {
|
|
6
7
|
const savedKey = JSON.stringify(element.binding ?? null);
|
|
7
8
|
const [path, setPath] = useState(element.binding?.path ?? "");
|
|
8
9
|
const [fallback, setFallback] = useState(element.binding?.fallback ?? "");
|
|
@@ -39,11 +40,10 @@ export function TextBindingFields({ element, previewData, onCommit, onBlur, }) {
|
|
|
39
40
|
const sample = bound && parseBindingPath(path).valid && previewData !== null
|
|
40
41
|
? previewSample(element, toBinding(path, fallback, prefix, suffix), previewData)
|
|
41
42
|
: null;
|
|
42
|
-
return (_jsxs("fieldset", { className: "df-binding", children: [_jsx("legend", { children: "Data binding" }), _jsxs("div", { className: "df-choice", role: "radiogroup", "aria-label": "Text source", children: [_jsxs("label", { children: [_jsx("input", { type: "radio", name: `text-mode-${element.id}`, checked: !bound, onChange: chooseStatic }), "Static text"] }), _jsxs("label", { children: [_jsx("input", { type: "radio", name: `text-mode-${element.id}`, checked: bound, onChange: () => setBound(true) }), "Data binding"] })] }), bound ? (_jsxs(_Fragment, { children: [
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
}, onBlur: onBlur })] }), _jsx("p", { className: `df-path-note df-path-note--${message.tone}`, "data-testid": "path-validity", role: "status", children: message.text }), _jsxs("label", { className: "df-field", children: [_jsx("span", { children: "Fallback" }), _jsx("input", { "aria-label": "Fallback value", value: fallback, onChange: (event) => {
|
|
43
|
+
return (_jsxs("fieldset", { className: "df-binding", children: [_jsx("legend", { children: "Data binding" }), _jsxs("div", { className: "df-choice", role: "radiogroup", "aria-label": "Text source", children: [_jsxs("label", { children: [_jsx("input", { type: "radio", name: `text-mode-${element.id}`, checked: !bound, onChange: chooseStatic }), "Static text"] }), _jsxs("label", { children: [_jsx("input", { type: "radio", name: `text-mode-${element.id}`, checked: bound, onChange: () => setBound(true) }), "Data binding"] })] }), bound ? (_jsxs(_Fragment, { children: [_jsx(BindingPathControl, { label: "Binding path", value: path, options: scalarFields, ariaLabel: "Binding path", testId: "binding-path", onChange: (next) => {
|
|
44
|
+
setPath(next);
|
|
45
|
+
update(next, fallback, prefix, suffix);
|
|
46
|
+
}, onBlur: onBlur }), _jsx("p", { className: `df-path-note df-path-note--${message.tone}`, "data-testid": "path-validity", role: "status", children: message.text }), _jsxs("label", { className: "df-field", children: [_jsx("span", { children: "Fallback" }), _jsx("input", { "aria-label": "Fallback value", value: fallback, onChange: (event) => {
|
|
47
47
|
const next = event.target.value;
|
|
48
48
|
setFallback(next);
|
|
49
49
|
update(path, next, prefix, suffix);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextBindingFields.js","sourceRoot":"","sources":["../../src/designer/TextBindingFields.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAqB,MAAM,OAAO,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"TextBindingFields.js","sourceRoot":"","sources":["../../src/designer/TextBindingFields.tsx"],"names":[],"mappings":"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"}
|
package/dist/designer/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { DocumentDesigner } from "./DocumentDesigner.js";
|
|
2
2
|
export type { DocumentDesignerProps } from "./DocumentDesigner.js";
|
|
3
|
+
export { BindingPathControl, SearchableBindingSelect } from "./SearchableBindingSelect.js";
|
|
3
4
|
export { THEME_PREFERENCES, THEME_STORAGE_KEY, browserMatchMedia, browserThemeStorage, isThemePreference, readSystemPrefersDark, readThemePreference, resolveTheme, subscribeSystemTheme, writeThemePreference, } from "./theme.js";
|
|
4
5
|
export type { ResolvedTheme, ThemePreference, ThemeStorage } from "./theme.js";
|
|
5
6
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +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"}
|
|
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,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAC3F,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"}
|
package/dist/designer/index.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
export { DocumentDesigner } from "./DocumentDesigner.js";
|
|
2
|
+
export { BindingPathControl, SearchableBindingSelect } from "./SearchableBindingSelect.js";
|
|
2
3
|
export { THEME_PREFERENCES, THEME_STORAGE_KEY, browserMatchMedia, browserThemeStorage, isThemePreference, readSystemPrefersDark, readThemePreference, resolveTheme, subscribeSystemTheme, writeThemePreference, } from "./theme.js";
|
|
3
4
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/designer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAC3F,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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
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: flex;\n flex-direction: column;\n align-items: flex-start;\n padding: 24px;\n}\n/* Real spacers, not place-content. A centered item taller than the stage\n overflows outside the scrollable area, so the bottom of the page cannot be reached. */\n.df-viewport-stage:not(.df-viewport-stage--html)::before,\n.df-viewport-stage:not(.df-viewport-stage--html)::after {\n content: \"\";\n flex: 1 0 0px;\n align-self: stretch;\n min-height: 0;\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 align-items: stretch;\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 {\n position: relative;\n flex: 0 0 auto;\n margin-inline: auto;\n}\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";
|
|
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: flex;\n flex-direction: column;\n align-items: flex-start;\n padding: 24px;\n}\n/* Real spacers, not place-content. A centered item taller than the stage\n overflows outside the scrollable area, so the bottom of the page cannot be reached. */\n.df-viewport-stage:not(.df-viewport-stage--html)::before,\n.df-viewport-stage:not(.df-viewport-stage--html)::after {\n content: \"\";\n flex: 1 0 0px;\n align-self: stretch;\n min-height: 0;\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 align-items: stretch;\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 {\n position: relative;\n flex: 0 0 auto;\n margin-inline: auto;\n}\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.df-bind-select { position: relative; }\n.df-bind-menu {\n position: fixed;\n z-index: 30;\n max-height: 220px;\n overflow: auto;\n margin: 0;\n padding: 4px;\n list-style: none;\n background: var(--df-surface);\n border: 1px solid var(--df-border);\n border-radius: 8px;\n box-shadow: 0 8px 24px var(--df-shadow);\n}\n.df-bind-menu ul { list-style: none; margin: 0; padding: 0; }\n.df-bind-group {\n padding: 6px 8px 2px;\n color: var(--df-text-muted);\n font-size: 11px;\n font-weight: 650;\n text-transform: lowercase;\n}\n.df-bind-option {\n display: grid;\n grid-template-columns: 1fr auto;\n gap: 2px 8px;\n width: 100%;\n padding: 6px 8px;\n border: 0;\n border-radius: 6px;\n background: transparent;\n color: var(--df-text);\n text-align: left;\n cursor: pointer;\n}\n.df-bind-option--active,\n.df-bind-option:hover { background: var(--df-hover); }\n.df-bind-path {\n grid-column: 1 / -1;\n color: var(--df-text-muted);\n font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;\n font-size: 11px;\n}\n.df-bind-type { color: var(--df-text-muted); font-size: 11px; }\n.df-bind-empty { padding: 8px; color: var(--df-text-muted); }\n";
|
|
3
3
|
//# sourceMappingURL=styles.d.ts.map
|
|
@@ -1 +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,
|
|
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,g7bA2oBxB,CAAC"}
|
package/dist/designer/styles.js
CHANGED
|
@@ -605,5 +605,50 @@ export const DESIGNER_CSS = `
|
|
|
605
605
|
gap: 8px;
|
|
606
606
|
justify-content: flex-end;
|
|
607
607
|
}
|
|
608
|
+
.df-bind-select { position: relative; }
|
|
609
|
+
.df-bind-menu {
|
|
610
|
+
position: fixed;
|
|
611
|
+
z-index: 30;
|
|
612
|
+
max-height: 220px;
|
|
613
|
+
overflow: auto;
|
|
614
|
+
margin: 0;
|
|
615
|
+
padding: 4px;
|
|
616
|
+
list-style: none;
|
|
617
|
+
background: var(--df-surface);
|
|
618
|
+
border: 1px solid var(--df-border);
|
|
619
|
+
border-radius: 8px;
|
|
620
|
+
box-shadow: 0 8px 24px var(--df-shadow);
|
|
621
|
+
}
|
|
622
|
+
.df-bind-menu ul { list-style: none; margin: 0; padding: 0; }
|
|
623
|
+
.df-bind-group {
|
|
624
|
+
padding: 6px 8px 2px;
|
|
625
|
+
color: var(--df-text-muted);
|
|
626
|
+
font-size: 11px;
|
|
627
|
+
font-weight: 650;
|
|
628
|
+
text-transform: lowercase;
|
|
629
|
+
}
|
|
630
|
+
.df-bind-option {
|
|
631
|
+
display: grid;
|
|
632
|
+
grid-template-columns: 1fr auto;
|
|
633
|
+
gap: 2px 8px;
|
|
634
|
+
width: 100%;
|
|
635
|
+
padding: 6px 8px;
|
|
636
|
+
border: 0;
|
|
637
|
+
border-radius: 6px;
|
|
638
|
+
background: transparent;
|
|
639
|
+
color: var(--df-text);
|
|
640
|
+
text-align: left;
|
|
641
|
+
cursor: pointer;
|
|
642
|
+
}
|
|
643
|
+
.df-bind-option--active,
|
|
644
|
+
.df-bind-option:hover { background: var(--df-hover); }
|
|
645
|
+
.df-bind-path {
|
|
646
|
+
grid-column: 1 / -1;
|
|
647
|
+
color: var(--df-text-muted);
|
|
648
|
+
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
|
|
649
|
+
font-size: 11px;
|
|
650
|
+
}
|
|
651
|
+
.df-bind-type { color: var(--df-text-muted); font-size: 11px; }
|
|
652
|
+
.df-bind-empty { padding: 8px; color: var(--df-text-muted); }
|
|
608
653
|
`;
|
|
609
654
|
//# sourceMappingURL=styles.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../src/designer/styles.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,QAAQ,GAAG,2BAA2B,CAAC;AAEpD,MAAM,CAAC,MAAM,YAAY,GAAG
|
|
1
|
+
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../src/designer/styles.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,QAAQ,GAAG,2BAA2B,CAAC;AAEpD,MAAM,CAAC,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2oB3B,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -6,6 +6,8 @@ export { TemplateValidationError, validateTemplate } from "./validate.js";
|
|
|
6
6
|
export type { TemplateValidationIssue, TemplateValidationResult } from "./validate.js";
|
|
7
7
|
export { cloneTemplate, createTemplate, deserializeTemplate, serializeTemplate } from "./serialize.js";
|
|
8
8
|
export { isBindingPath, parseBindingPath } from "./binding-path.js";
|
|
9
|
+
export { collectionKey, discoverArrayBindings, discoverBindings, discoverRowBindings, filterBindingFields, rowBindingNote, rowRelativePath, } from "./binding-schema.js";
|
|
10
|
+
export type { BindingDiscoveryOptions, BindingField, BindingValueKind } from "./binding-schema.js";
|
|
9
11
|
export type { BindingPathResult } from "./binding-path.js";
|
|
10
12
|
export { formatBindingValue, parsePreviewData, resolveBinding, resolveElementData, resolveTemplateData, } from "./binding.js";
|
|
11
13
|
export type { BindingLookup, BindingMissReason, JsonPrimitive, JsonValue, PreviewDataResult, ImageResolutionSource, ResolvedDocument, ResolvedElement, ResolvedImageElement, ResolvedItemsElement, ResolvedTextElement, ResolvedTotalsElement, TextResolutionSource, } from "./binding.js";
|
|
@@ -19,7 +21,7 @@ export { RenderError } from "./render/errors.js";
|
|
|
19
21
|
export { renderToHTML } from "./render/render-html.js";
|
|
20
22
|
export type { RenderOptions } from "./render/render-html.js";
|
|
21
23
|
export type { ImageSourcePolicy } from "./render/image-policy.js";
|
|
22
|
-
export { BindingExpressionError, bindingTemplateExpression, createDocumentSaveResult, deserializeDocumentSaveResult, generateBindingHtml, interpolateBindingHtml, serializeDocumentSaveResult, } from "./render/binding-template.js";
|
|
24
|
+
export { BindingExpressionError, bindingTemplateExpression, createDocumentSaveResult, deserializeDocumentSaveResult, generateBindingHtml, generateHTML, interpolateBindingHtml, serializeDocumentSaveResult, } from "./render/binding-template.js";
|
|
23
25
|
export type { DocumentSaveResult } from "./render/binding-template.js";
|
|
24
26
|
export { exampleJobsReportTemplate } from "./examples/jobs-report.js";
|
|
25
27
|
export { exampleJobsReportData, exampleJobsReportDataAlternate, exampleJobsReportDataEmpty, exampleJobsReportDataLarge, } from "./examples/jobs-report-data.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -3,6 +3,7 @@ export { AGGREGATES, DATE_FORMAT_STYLES, ELEMENT_TYPES, BORDER_STYLES, FONT_STYL
|
|
|
3
3
|
export { TemplateValidationError, validateTemplate } from "./validate.js";
|
|
4
4
|
export { cloneTemplate, createTemplate, deserializeTemplate, serializeTemplate } from "./serialize.js";
|
|
5
5
|
export { isBindingPath, parseBindingPath } from "./binding-path.js";
|
|
6
|
+
export { collectionKey, discoverArrayBindings, discoverBindings, discoverRowBindings, filterBindingFields, rowBindingNote, rowRelativePath, } from "./binding-schema.js";
|
|
6
7
|
export { formatBindingValue, parsePreviewData, resolveBinding, resolveElementData, resolveTemplateData, } from "./binding.js";
|
|
7
8
|
export { InvoiceCalculationError, calculateInvoice } from "./invoice/calculate.js";
|
|
8
9
|
export { prepareInvoiceContext } from "./invoice/context.js";
|
|
@@ -10,7 +11,7 @@ export { formatScalar } from "./invoice/format.js";
|
|
|
10
11
|
export { BLANK_GROUP_LABEL, prepareReportTable, ReportProcessingError } from "./report/process.js";
|
|
11
12
|
export { RenderError } from "./render/errors.js";
|
|
12
13
|
export { renderToHTML } from "./render/render-html.js";
|
|
13
|
-
export { BindingExpressionError, bindingTemplateExpression, createDocumentSaveResult, deserializeDocumentSaveResult, generateBindingHtml, interpolateBindingHtml, serializeDocumentSaveResult, } from "./render/binding-template.js";
|
|
14
|
+
export { BindingExpressionError, bindingTemplateExpression, createDocumentSaveResult, deserializeDocumentSaveResult, generateBindingHtml, generateHTML, interpolateBindingHtml, serializeDocumentSaveResult, } from "./render/binding-template.js";
|
|
14
15
|
export { exampleJobsReportTemplate } from "./examples/jobs-report.js";
|
|
15
16
|
export { exampleJobsReportData, exampleJobsReportDataAlternate, exampleJobsReportDataEmpty, exampleJobsReportDataLarge, } from "./examples/jobs-report-data.js";
|
|
16
17
|
export { exampleFullInvoiceTemplate } from "./examples/full-invoice.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,cAAc,EACd,yBAAyB,GAC1B,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,sBAAsB,EACtB,WAAW,EACX,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAkDpB,OAAO,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAG1E,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEvG,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,cAAc,EACd,yBAAyB,GAC1B,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,sBAAsB,EACtB,WAAW,EACX,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAkDpB,OAAO,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAG1E,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEvG,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACd,eAAe,GAChB,MAAM,qBAAqB,CAAC;AAI7B,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,cAAc,CAAC;AAiBtB,OAAO,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAOnF,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAGnG,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAGvD,OAAO,EACL,sBAAsB,EACtB,yBAAyB,EACzB,wBAAwB,EACxB,6BAA6B,EAC7B,mBAAmB,EACnB,YAAY,EACZ,sBAAsB,EACtB,2BAA2B,GAC5B,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EACL,qBAAqB,EACrB,8BAA8B,EAC9B,0BAA0B,EAC1B,0BAA0B,GAC3B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,+BAA+B,EAAE,MAAM,iCAAiC,CAAC;AAC1G,OAAO,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AAC7F,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,yBAAyB,EACzB,yBAAyB,EACzB,mBAAmB,EACnB,wBAAwB,EACxB,yBAAyB,EACzB,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,UAAU,EACV,2BAA2B,EAC3B,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,YAAY,EACZ,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,oBAAoB,CAAC"}
|
|
@@ -33,8 +33,17 @@ export declare function serializeDocumentSaveResult(result: DocumentSaveResult):
|
|
|
33
33
|
* The HTML string is returned as it was stored. Bindings inside it are not resolved.
|
|
34
34
|
*/
|
|
35
35
|
export declare function deserializeDocumentSaveResult(json: string): DocumentSaveResult;
|
|
36
|
+
/**
|
|
37
|
+
* Fills a generated DocForge HTML template and returns the populated HTML string.
|
|
38
|
+
* `dataPayload` supplies the values. `generatedHTML` is the template with `${path}` placeholders.
|
|
39
|
+
* The result is a string. This function does not render, print, download, or create a PDF.
|
|
40
|
+
*/
|
|
41
|
+
export declare function generateHTML(dataPayload: unknown, generatedHTML: string): string;
|
|
36
42
|
/**
|
|
37
43
|
* Fills approved template expressions from `data`.
|
|
44
|
+
* Root expressions read the document. An items table repeats its first body row for `data-items-path`.
|
|
45
|
+
* Row expressions read the current item. A path prefixed with the collection name, such as `details.itemName` for `invoice.details`, reads `itemName` on that item.
|
|
46
|
+
* An unprefixed path that is absent on the item is read from the document root.
|
|
38
47
|
* Text is escaped. Image sources must pass the image URL policy. Missing values become empty text.
|
|
39
48
|
* Property lookup uses the binding parser. Data is never executed.
|
|
40
49
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"binding-template.d.ts","sourceRoot":"","sources":["../../src/render/binding-template.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"binding-template.d.ts","sourceRoot":"","sources":["../../src/render/binding-template.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAoDrD;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,2EAA2E;AAC3E,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,QAAQ,CAAC;gBAE1B,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,QAAQ;CAOvD;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAM9D;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM,CA0BtE;AAED,6FAA6F;AAC7F,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,kBAAkB,CAG3E;AAED,wEAAwE;AACxE,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,kBAAkB,GAAG,MAAM,CAQ9E;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAoB9E;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAEhF;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,CAwB1E"}
|