@unlev/exeq 0.5.1 → 0.5.2
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/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +54 -11
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +54 -11
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -344,6 +344,8 @@ function PdfViewer({
|
|
|
344
344
|
selectedIds: selectedFieldIds,
|
|
345
345
|
mode,
|
|
346
346
|
currentSigner,
|
|
347
|
+
pageWidthPt: page.pdfWidth,
|
|
348
|
+
pageHeightPt: page.pdfHeight,
|
|
347
349
|
renderContent: renderFieldContent
|
|
348
350
|
},
|
|
349
351
|
field.id
|
|
@@ -434,6 +436,8 @@ function FieldOverlayItem({
|
|
|
434
436
|
selectedIds,
|
|
435
437
|
mode,
|
|
436
438
|
currentSigner,
|
|
439
|
+
pageWidthPt,
|
|
440
|
+
pageHeightPt,
|
|
437
441
|
renderContent
|
|
438
442
|
}) {
|
|
439
443
|
const overlayRef = useRef(null);
|
|
@@ -560,7 +564,7 @@ function FieldOverlayItem({
|
|
|
560
564
|
onMouseDown: handleMouseDown,
|
|
561
565
|
children: [
|
|
562
566
|
mode === "designer" && !isRedact && /* @__PURE__ */ jsx("div", { className: "field-overlay-label", style: { backgroundColor: color }, children: field.label }),
|
|
563
|
-
renderContent ? renderContent(field) : /* @__PURE__ */ jsx("div", { className: "field-overlay-placeholder", children: field.value || field.placeholder }),
|
|
567
|
+
renderContent ? renderContent(field, pageWidthPt, pageHeightPt) : /* @__PURE__ */ jsx("div", { className: "field-overlay-placeholder", children: field.value || field.placeholder }),
|
|
564
568
|
mode === "designer" && isSelected && !field.locked && /* @__PURE__ */ jsx(
|
|
565
569
|
"div",
|
|
566
570
|
{
|
|
@@ -2210,6 +2214,30 @@ function resolveAllFormulas(fields, customTransforms, values) {
|
|
|
2210
2214
|
});
|
|
2211
2215
|
}
|
|
2212
2216
|
|
|
2217
|
+
// src/utils/fitText.ts
|
|
2218
|
+
function fitFontSize(o) {
|
|
2219
|
+
let size = o.autoShrink ? Math.min(o.fontSize, o.fieldHeightPt * 0.7) : o.fontSize;
|
|
2220
|
+
if (o.autoShrink && o.value) {
|
|
2221
|
+
const padding = 4;
|
|
2222
|
+
while (size > 4) {
|
|
2223
|
+
if (o.measure(o.value, size) <= o.fieldWidthPt - padding) break;
|
|
2224
|
+
size -= 0.5;
|
|
2225
|
+
}
|
|
2226
|
+
}
|
|
2227
|
+
return size;
|
|
2228
|
+
}
|
|
2229
|
+
var measureCtx = null;
|
|
2230
|
+
function measureTextWidth(text, size, opts) {
|
|
2231
|
+
if (typeof document === "undefined") return text.length * size * 0.5;
|
|
2232
|
+
if (!measureCtx) measureCtx = document.createElement("canvas").getContext("2d");
|
|
2233
|
+
if (!measureCtx) return text.length * size * 0.5;
|
|
2234
|
+
const family = getCssFontFamily(opts?.fontFamily) || "Helvetica, Arial, sans-serif";
|
|
2235
|
+
measureCtx.font = `${opts?.italic ? "italic " : ""}${opts?.bold ? "bold " : ""}${size}px ${family}`;
|
|
2236
|
+
const base = measureCtx.measureText(text).width;
|
|
2237
|
+
const spacing = opts?.letterSpacing ? opts.letterSpacing * Math.max(0, text.length - 1) : 0;
|
|
2238
|
+
return base + spacing;
|
|
2239
|
+
}
|
|
2240
|
+
|
|
2213
2241
|
// src/utils/pdfFiller.ts
|
|
2214
2242
|
var FONT_VARIANTS = {
|
|
2215
2243
|
Helvetica: [StandardFonts.Helvetica, StandardFonts.HelveticaBold, StandardFonts.HelveticaOblique, StandardFonts.HelveticaBoldOblique],
|
|
@@ -2301,14 +2329,14 @@ async function renderFieldsOnPages(pages, fields, getFont, getSignature) {
|
|
|
2301
2329
|
const font = await getFont(field.fontFamily || "Helvetica", field.bold, field.italic);
|
|
2302
2330
|
const spacing = field.letterSpacing || 0;
|
|
2303
2331
|
const textWidthAtSize = (text, size) => font.widthOfTextAtSize(text, size) + spacing * (text.length - 1);
|
|
2304
|
-
|
|
2305
|
-
|
|
2306
|
-
|
|
2307
|
-
|
|
2308
|
-
|
|
2309
|
-
|
|
2310
|
-
|
|
2311
|
-
}
|
|
2332
|
+
const fontSize = fitFontSize({
|
|
2333
|
+
value: field.value,
|
|
2334
|
+
fontSize: field.fontSize,
|
|
2335
|
+
autoShrink: field.autoShrink,
|
|
2336
|
+
fieldWidthPt: w,
|
|
2337
|
+
fieldHeightPt: h,
|
|
2338
|
+
measure: textWidthAtSize
|
|
2339
|
+
});
|
|
2312
2340
|
const textX = x + 2;
|
|
2313
2341
|
const baselineY = y + h * 0.3;
|
|
2314
2342
|
if (spacing > 0) {
|
|
@@ -2813,7 +2841,7 @@ ${row.join(",")}`, "csv");
|
|
|
2813
2841
|
setSubmitting(false);
|
|
2814
2842
|
}
|
|
2815
2843
|
}, [pdfSource, fields, callbackUrl, allRequiredFilled, onComplete, isLastSigner, signer, onSignerComplete, includeAuditTrail, exportFormat, onExport, getValues, transforms]);
|
|
2816
|
-
const renderFieldContent = useCallback5((field) => {
|
|
2844
|
+
const renderFieldContent = useCallback5((field, pageWidthPt, pageHeightPt) => {
|
|
2817
2845
|
if (isRedactField(field)) {
|
|
2818
2846
|
return null;
|
|
2819
2847
|
}
|
|
@@ -2852,8 +2880,23 @@ ${row.join(",")}`, "csv");
|
|
|
2852
2880
|
if (field.type === "signed-date") {
|
|
2853
2881
|
return /* @__PURE__ */ jsx6("div", { className: "field-overlay-value", children: field.value || (/* @__PURE__ */ new Date()).toLocaleDateString() });
|
|
2854
2882
|
}
|
|
2883
|
+
const fieldWidthPt = pageWidthPt ? field.width / 100 * pageWidthPt : Infinity;
|
|
2884
|
+
const fieldHeightPt = pageHeightPt ? field.height / 100 * pageHeightPt : 0;
|
|
2885
|
+
const effectiveFontSize = pageWidthPt ? fitFontSize({
|
|
2886
|
+
value: field.value || "",
|
|
2887
|
+
fontSize: field.fontSize,
|
|
2888
|
+
autoShrink: field.autoShrink,
|
|
2889
|
+
fieldWidthPt,
|
|
2890
|
+
fieldHeightPt,
|
|
2891
|
+
measure: (t, s) => measureTextWidth(t, s, {
|
|
2892
|
+
fontFamily: field.fontFamily,
|
|
2893
|
+
bold: field.bold,
|
|
2894
|
+
italic: field.italic,
|
|
2895
|
+
letterSpacing: field.letterSpacing
|
|
2896
|
+
})
|
|
2897
|
+
}) : field.fontSize;
|
|
2855
2898
|
const fontStyle = {
|
|
2856
|
-
fontSize: `${
|
|
2899
|
+
fontSize: `${effectiveFontSize}pt`,
|
|
2857
2900
|
letterSpacing: field.letterSpacing ? `${field.letterSpacing}pt` : void 0,
|
|
2858
2901
|
lineHeight: field.lineHeight ? `${field.lineHeight}` : void 0,
|
|
2859
2902
|
...getCssTextStyle(field)
|