@signiphi/pdf-compose 0.1.0-beta.10 → 0.1.0-beta.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,11 @@
1
+ import type { NodeViewProps } from '@tiptap/react';
2
+ /**
3
+ * Editor view for an image node. When the node carries a directly renderable
4
+ * `src` (http(s) or data URL) we show the actual image so staff see exactly
5
+ * what the PDF will contain. When the image is deferred to a variable
6
+ * (`var:marinaLogoUrl` → empty `src` until generate time) we render a labeled
7
+ * dashed placeholder instead of a broken image. width/height are PDF points;
8
+ * we reuse them as px hints so the editor preview stays roughly proportional.
9
+ */
10
+ export declare function ImageNodeView({ node, selected }: NodeViewProps): import("react/jsx-runtime").JSX.Element;
11
+ //# sourceMappingURL=ImageNodeView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImageNodeView.d.ts","sourceRoot":"","sources":["../../src/components/ImageNodeView.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAInD;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,aAAa,2CA8C9D"}
@@ -0,0 +1,10 @@
1
+ import { Node } from '@tiptap/core';
2
+ /**
3
+ * Block-level image node. The markdown parser emits `imageNode` for both
4
+ * `{{image|...}}` tokens and standalone `![alt](src)` lines, and the writer +
5
+ * PDF generator both consume it — this extension registers the matching schema
6
+ * node so the editor can load and round-trip image content instead of
7
+ * rejecting the whole document as invalid.
8
+ */
9
+ export declare const ImageNode: Node<any, any>;
10
+ //# sourceMappingURL=image-node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-node.d.ts","sourceRoot":"","sources":["../../src/extensions/image-node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAmB,MAAM,cAAc,CAAC;AAIrD;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,gBA6BpB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useDocumentGenerator.d.ts","sourceRoot":"","sources":["../../src/hooks/useDocumentGenerator.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,KAAK,MAAM,EAAE,MAAM,eAAe,CAAC;AASvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAa,KAAK,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/E,OAAO,EAAgB,KAAK,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAMxF,OAAO,EAAE,aAAa,EAAE,KAAK,sBAAsB,EAAE,KAAK,yBAAyB,EAAE,KAAK,iBAAiB,EAAE,KAAK,kBAAkB,EAAE,KAAK,OAAO,EAAE,KAAK,6BAA6B,EAAE,KAAK,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAUjO,MAAM,WAAW,2BAA2B;IAC1C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,WAAW,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,WAAW,CAAC;QACrB,MAAM,EAAE,sBAAsB,EAAE,CAAC;QACjC,SAAS,EAAE,yBAAyB,EAAE,CAAC;KACxC,KAAK,IAAI,CAAC;CACZ;AAED,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,sBAAsB,EAAE,CAAC;IACjC,SAAS,EAAE,yBAAyB,EAAE,CAAC;IACvC,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC/C,gBAAgB,EAAE,kBAAkB,EAAE,CAAC;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,UAAU,GAAG,IAAI,CAAC;IAC5B,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,EAAE,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,KAAK,IAAI,CAAC;IACjF,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,mBAAmB,CAAC,KAAK,IAAI,CAAC;IAC5E,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,cAAc,EAAE,CAAC,KAAK,EAAE,sBAAsB,KAAK,IAAI,CAAC;IACxD,cAAc,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,sBAAsB,CAAC,KAAK,IAAI,CAAC;IAClF,cAAc,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,qBAAqB,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,OAAO,CAAC;QAAE,QAAQ,EAAE,UAAU,CAAC;QAAC,QAAQ,EAAE,OAAO,EAAE,CAAA;KAAE,CAAC,CAAC;IAClH,cAAc,EAAE,MAAM,OAAO,CAAC,6BAA6B,GAAG,IAAI,CAAC,CAAC;IACpE,cAAc,EAAE,MAAM,MAAM,CAAC;IAC7B,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,iBAAiB,CAAC;IAClD,YAAY,EAAE,CAAC,GAAG,EAAE,iBAAiB,KAAK,IAAI,CAAC;CAChD;AAED,wBAAgB,oBAAoB,CAClC,OAAO,GAAE,2BAAgC,GACxC,0BAA0B,CA4T5B"}
1
+ {"version":3,"file":"useDocumentGenerator.d.ts","sourceRoot":"","sources":["../../src/hooks/useDocumentGenerator.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,KAAK,MAAM,EAAE,MAAM,eAAe,CAAC;AASvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAa,KAAK,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/E,OAAO,EAAgB,KAAK,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAOxF,OAAO,EAAE,aAAa,EAAE,KAAK,sBAAsB,EAAE,KAAK,yBAAyB,EAAE,KAAK,iBAAiB,EAAE,KAAK,kBAAkB,EAAE,KAAK,OAAO,EAAE,KAAK,6BAA6B,EAAE,KAAK,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAUjO,MAAM,WAAW,2BAA2B;IAC1C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,WAAW,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,WAAW,CAAC;QACrB,MAAM,EAAE,sBAAsB,EAAE,CAAC;QACjC,SAAS,EAAE,yBAAyB,EAAE,CAAC;KACxC,KAAK,IAAI,CAAC;CACZ;AAED,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,sBAAsB,EAAE,CAAC;IACjC,SAAS,EAAE,yBAAyB,EAAE,CAAC;IACvC,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC/C,gBAAgB,EAAE,kBAAkB,EAAE,CAAC;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,UAAU,GAAG,IAAI,CAAC;IAC5B,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,EAAE,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,KAAK,IAAI,CAAC;IACjF,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,mBAAmB,CAAC,KAAK,IAAI,CAAC;IAC5E,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,cAAc,EAAE,CAAC,KAAK,EAAE,sBAAsB,KAAK,IAAI,CAAC;IACxD,cAAc,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,sBAAsB,CAAC,KAAK,IAAI,CAAC;IAClF,cAAc,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,qBAAqB,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,OAAO,CAAC;QAAE,QAAQ,EAAE,UAAU,CAAC;QAAC,QAAQ,EAAE,OAAO,EAAE,CAAA;KAAE,CAAC,CAAC;IAClH,cAAc,EAAE,MAAM,OAAO,CAAC,6BAA6B,GAAG,IAAI,CAAC,CAAC;IACpE,cAAc,EAAE,MAAM,MAAM,CAAC;IAC7B,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,iBAAiB,CAAC;IAClD,YAAY,EAAE,CAAC,GAAG,EAAE,iBAAiB,KAAK,IAAI,CAAC;CAChD;AAED,wBAAgB,oBAAoB,CAClC,OAAO,GAAE,2BAAgC,GACxC,0BAA0B,CA6T5B"}
package/dist/index.d.ts CHANGED
@@ -12,6 +12,7 @@ export { markdownToTiptap } from './utils/markdown-parser';
12
12
  export { tiptapToMarkdown } from './utils/markdown-writer';
13
13
  export { RepeatNode } from './extensions/repeat-node';
14
14
  export { SubtotalsNode } from './extensions/subtotals-node';
15
+ export { ImageNode } from './extensions/image-node';
15
16
  export { parseXmlTemplate } from './utils/xml-template-parser';
16
17
  export type { XmlTemplateParseResult } from './utils/xml-template-parser';
17
18
  export { ThemeProvider, useTheme } from './contexts/ThemeContext';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAGnE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAGpE,YAAY,EACV,eAAe,EACf,sBAAsB,EACtB,yBAAyB,EACzB,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,6BAA6B,EAC7B,kBAAkB,EAClB,sBAAsB,EACtB,kBAAkB,EAClB,SAAS,EACT,WAAW,EACX,OAAO,GACR,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAGxC,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AAGnJ,OAAO,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAC3F,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACvF,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAGpF,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAG3D,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAG5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,YAAY,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAG1E,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAClE,YAAY,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAGnE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAGpE,YAAY,EACV,eAAe,EACf,sBAAsB,EACtB,yBAAyB,EACzB,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,6BAA6B,EAC7B,kBAAkB,EAClB,sBAAsB,EACtB,kBAAkB,EAClB,SAAS,EACT,WAAW,EACX,OAAO,GACR,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAGxC,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AAGnJ,OAAO,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAC3F,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACvF,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAGpF,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAG3D,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAGpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,YAAY,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAG1E,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAClE,YAAY,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC"}
package/dist/index.js CHANGED
@@ -452,6 +452,72 @@ var WatermarkNode = core.Node.create({
452
452
  return react.ReactNodeViewRenderer(WatermarkNodeView);
453
453
  }
454
454
  });
455
+ function ImageNodeView({ node, selected }) {
456
+ const { src, varName, alt, width, height, align } = node.attrs;
457
+ const hasRenderableSrc = !!src && /^(https?:|data:)/i.test(src);
458
+ const wrapperJustify = align === "center" ? "justify-center" : align === "right" ? "justify-end" : "justify-start";
459
+ const toCssSize = (v) => /^\d+(\.\d+)?$/.test(v) ? `${v}px` : v;
460
+ const sizeStyle = {};
461
+ if (width) sizeStyle.width = toCssSize(width);
462
+ if (height) sizeStyle.height = toCssSize(height);
463
+ return /* @__PURE__ */ jsxRuntime.jsx(react.NodeViewWrapper, { children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex my-1", wrapperJustify), "data-image-node": "", children: hasRenderableSrc ? /* @__PURE__ */ jsxRuntime.jsx(
464
+ "img",
465
+ {
466
+ src,
467
+ alt: alt || varName || "",
468
+ style: sizeStyle,
469
+ className: cn(
470
+ "max-w-full rounded-sm object-contain",
471
+ selected && "ring-2 ring-primary ring-offset-1"
472
+ ),
473
+ draggable: false
474
+ }
475
+ ) : /* @__PURE__ */ jsxRuntime.jsxs(
476
+ "div",
477
+ {
478
+ "data-image-placeholder": "",
479
+ className: cn(
480
+ "inline-flex items-center gap-2 px-3 py-2 rounded-md border border-dashed text-sm",
481
+ "bg-slate-50 text-slate-500 border-slate-300",
482
+ selected && "ring-2 ring-primary ring-offset-1"
483
+ ),
484
+ style: height ? { minHeight: toCssSize(height) } : void 0,
485
+ title: varName ? `Image variable: ${varName}` : "Image",
486
+ children: [
487
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Image, { size: 16 }),
488
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: varName ? `Image: ${varName}` : alt || "Image" })
489
+ ]
490
+ }
491
+ ) }) });
492
+ }
493
+
494
+ // src/extensions/image-node.ts
495
+ var ImageNode = core.Node.create({
496
+ name: "imageNode",
497
+ group: "block",
498
+ atom: true,
499
+ selectable: true,
500
+ draggable: false,
501
+ addAttributes() {
502
+ return {
503
+ src: { default: "" },
504
+ varName: { default: "" },
505
+ alt: { default: "" },
506
+ width: { default: "" },
507
+ height: { default: "" },
508
+ align: { default: "" }
509
+ };
510
+ },
511
+ parseHTML() {
512
+ return [{ tag: "div[data-image-node]" }];
513
+ },
514
+ renderHTML({ HTMLAttributes }) {
515
+ return ["div", core.mergeAttributes({ "data-image-node": "" }, HTMLAttributes)];
516
+ },
517
+ addNodeView() {
518
+ return react.ReactNodeViewRenderer(ImageNodeView);
519
+ }
520
+ });
455
521
  var RepeatNode = core.Node.create({
456
522
  name: "repeatBlock",
457
523
  group: "block",
@@ -1096,11 +1162,23 @@ function parseBlocks(lines, startIdx, stopCondition) {
1096
1162
  continue;
1097
1163
  }
1098
1164
  const inlineNodes = parseInline(line);
1099
- const nonWhitespace = inlineNodes.filter(
1100
- (n) => !(n.type === "text" && !(n.text || "").trim())
1101
- );
1102
- if (nonWhitespace.length === 1 && nonWhitespace[0].type === "imageNode") {
1103
- content.push(nonWhitespace[0]);
1165
+ if (inlineNodes.some((n) => n.type === "imageNode")) {
1166
+ let run = [];
1167
+ const flushRun = () => {
1168
+ if (run.some((n) => !(n.type === "text" && !(n.text || "").trim()))) {
1169
+ content.push({ type: "paragraph", content: run });
1170
+ }
1171
+ run = [];
1172
+ };
1173
+ for (const n of inlineNodes) {
1174
+ if (n.type === "imageNode") {
1175
+ flushRun();
1176
+ content.push(n);
1177
+ } else {
1178
+ run.push(n);
1179
+ }
1180
+ }
1181
+ flushRun();
1104
1182
  } else {
1105
1183
  content.push({ type: "paragraph", content: inlineNodes });
1106
1184
  }
@@ -1425,13 +1503,13 @@ near: ${snippet}`;
1425
1503
 
1426
1504
  // src/utils/pdf-metadata.ts
1427
1505
  var PDFName;
1428
- var PDFString;
1506
+ var PDFHexString;
1429
1507
  function initPdfMetadata(pdfLibModule) {
1430
1508
  PDFName = pdfLibModule.PDFName;
1431
- PDFString = pdfLibModule.PDFString;
1509
+ PDFHexString = pdfLibModule.PDFHexString;
1432
1510
  }
1433
1511
  function setSigniphiMetadata(pdfDoc, metadata) {
1434
- if (!PDFName || !PDFString) {
1512
+ if (!PDFName || !PDFHexString) {
1435
1513
  throw new Error("PDF metadata classes not initialized \u2014 call initPdfMetadata before setSigniphiMetadata");
1436
1514
  }
1437
1515
  try {
@@ -1442,7 +1520,7 @@ function setSigniphiMetadata(pdfDoc, metadata) {
1442
1520
  }
1443
1521
  const infoDict = infoObj;
1444
1522
  const metadataString = JSON.stringify(metadata);
1445
- infoDict.set(PDFName.of("SigniphiMetadata"), PDFString.of(metadataString));
1523
+ infoDict.set(PDFName.of("SigniphiMetadata"), PDFHexString.fromText(metadataString));
1446
1524
  } catch (error) {
1447
1525
  throw new Error(`Failed to embed document metadata: ${getErrorMessage(error)}`);
1448
1526
  }
@@ -2760,7 +2838,7 @@ async function addFormFields(pdfDoc, fieldPositions, fields) {
2760
2838
  warnings.push(`Failed to create ${field.type} field "${field.name}": ${getErrorMessage(err)}`);
2761
2839
  }
2762
2840
  }
2763
- initPdfMetadata({ PDFName: pdfLib.PDFName, PDFString: pdfLib.PDFString });
2841
+ initPdfMetadata({ PDFName: pdfLib.PDFName, PDFHexString: pdfLib.PDFHexString });
2764
2842
  const metadata = buildMetadataObject(fields, actualFieldNames);
2765
2843
  setSigniphiMetadata(pdfDoc, metadata);
2766
2844
  return warnings;
@@ -3226,6 +3304,7 @@ function useDocumentGenerator(options = {}) {
3226
3304
  ColumnsNode,
3227
3305
  ColumnNode,
3228
3306
  WatermarkNode,
3307
+ ImageNode,
3229
3308
  RepeatNode,
3230
3309
  SubtotalsNode
3231
3310
  ],
@@ -7465,6 +7544,7 @@ function parseXmlTemplate(xmlString) {
7465
7544
  exports.DocumentGenerator = DocumentGenerator;
7466
7545
  exports.EditorPanel = EditorPanel;
7467
7546
  exports.FormFieldType = FormFieldType;
7547
+ exports.ImageNode = ImageNode;
7468
7548
  exports.PreviewPanel = PreviewPanel;
7469
7549
  exports.RepeatNode = RepeatNode;
7470
7550
  exports.SubtotalsNode = SubtotalsNode;