@betterinternship/core 2.12.2 → 2.14.1

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.
Files changed (43) hide show
  1. package/dist/lib/broker/base.process.d.ts +2 -2
  2. package/dist/lib/broker/base.process.js +2 -2
  3. package/dist/lib/broker/base.task.d.ts +40 -40
  4. package/dist/lib/broker/broker.d.ts +28 -28
  5. package/dist/lib/broker/broker.js +111 -111
  6. package/dist/lib/email/email.d.ts +22 -22
  7. package/dist/lib/email/email.js +170 -170
  8. package/dist/lib/forms/constants/index.js +2 -2
  9. package/dist/lib/pdf-viewer/BasePdfViewer.d.ts +21 -0
  10. package/dist/lib/pdf-viewer/BasePdfViewer.js +42 -0
  11. package/dist/lib/pdf-viewer/BasePdfViewer.js.map +1 -0
  12. package/dist/lib/pdf-viewer/FormFillPdfViewer.d.ts +31 -0
  13. package/dist/lib/pdf-viewer/FormFillPdfViewer.js +107 -0
  14. package/dist/lib/pdf-viewer/FormFillPdfViewer.js.map +1 -0
  15. package/dist/lib/pdf-viewer/PdfPageOverlay.d.ts +20 -0
  16. package/dist/lib/pdf-viewer/PdfPageOverlay.js +221 -0
  17. package/dist/lib/pdf-viewer/PdfPageOverlay.js.map +1 -0
  18. package/dist/lib/pdf-viewer/form-previewer-model.d.ts +52 -0
  19. package/dist/lib/pdf-viewer/form-previewer-model.js +331 -0
  20. package/dist/lib/pdf-viewer/form-previewer-model.js.map +1 -0
  21. package/dist/lib/pdf-viewer/form-previewer-rendering.d.ts +55 -0
  22. package/dist/lib/pdf-viewer/form-previewer-rendering.js +317 -0
  23. package/dist/lib/pdf-viewer/form-previewer-rendering.js.map +1 -0
  24. package/dist/lib/pdf-viewer/index.d.ts +10 -0
  25. package/dist/lib/pdf-viewer/index.js +11 -0
  26. package/dist/lib/pdf-viewer/index.js.map +1 -0
  27. package/dist/lib/pdf-viewer/loader.d.ts +3 -0
  28. package/dist/lib/pdf-viewer/loader.js +5 -0
  29. package/dist/lib/pdf-viewer/loader.js.map +1 -0
  30. package/dist/lib/pdf-viewer/party-colors.d.ts +22 -0
  31. package/dist/lib/pdf-viewer/party-colors.js +20 -0
  32. package/dist/lib/pdf-viewer/party-colors.js.map +1 -0
  33. package/dist/lib/pdf-viewer/pdfjs.d.ts +4 -0
  34. package/dist/lib/pdf-viewer/pdfjs.js +21 -0
  35. package/dist/lib/pdf-viewer/pdfjs.js.map +1 -0
  36. package/dist/lib/pdf-viewer/use-pdf-document.d.ts +10 -0
  37. package/dist/lib/pdf-viewer/use-pdf-document.js +97 -0
  38. package/dist/lib/pdf-viewer/use-pdf-document.js.map +1 -0
  39. package/dist/lib/pdf-viewer/use-pdf-page-renderer.d.ts +6 -0
  40. package/dist/lib/pdf-viewer/use-pdf-page-renderer.js +60 -0
  41. package/dist/lib/pdf-viewer/use-pdf-page-renderer.js.map +1 -0
  42. package/dist/tsconfig.tsbuildinfo +1 -1
  43. package/package.json +14 -1
@@ -0,0 +1,55 @@
1
+ import type { PreviewFieldType } from "./form-previewer-model.js";
2
+ export type ResolvedPreviewFont = {
3
+ cssFamily: string;
4
+ canvasFamily: string;
5
+ fontWeight: "400";
6
+ };
7
+ type VerticalAlign = "top" | "middle" | "bottom";
8
+ export declare const resolvePreviewFont: (fieldType?: PreviewFieldType, fieldFont?: string | null) => ResolvedPreviewFont;
9
+ export declare const ensurePreviewFontsLoaded: () => void;
10
+ export declare function getPreviewFontMetrics({ fieldType, fieldFont, fontSize, }: {
11
+ fieldType?: PreviewFieldType;
12
+ fieldFont?: string | null;
13
+ fontSize: number;
14
+ }): {
15
+ ascent: number;
16
+ descent: number;
17
+ height: number;
18
+ };
19
+ export declare function computePreviewBaselineOffset({ fieldType, fieldFont, fontSize, fieldHeight, alignV, }: {
20
+ fieldType?: PreviewFieldType;
21
+ fieldFont?: string | null;
22
+ fontSize?: number;
23
+ fieldHeight: number;
24
+ alignV?: VerticalAlign;
25
+ }): number;
26
+ export declare function fitWrappedText({ text, fontFamily, maxWidth, maxHeight, startSize, lineHeightMult, zoom, }: {
27
+ text: string;
28
+ fontFamily: string;
29
+ maxWidth: number;
30
+ maxHeight: number;
31
+ startSize: number;
32
+ lineHeightMult?: number;
33
+ zoom?: number;
34
+ }): {
35
+ lines: string[];
36
+ ascent: number;
37
+ descent: number;
38
+ blockHeight: number;
39
+ fontSize: number;
40
+ lineHeight: number;
41
+ };
42
+ export declare function fitNoWrapText({ text, fontFamily, maxWidth, maxHeight, startSize, }: {
43
+ text: string;
44
+ fontFamily: string;
45
+ maxWidth: number;
46
+ maxHeight: number;
47
+ startSize: number;
48
+ }): {
49
+ fontSize: number;
50
+ line: string;
51
+ ascent: number;
52
+ descent: number;
53
+ height: number;
54
+ };
55
+ export {};
@@ -0,0 +1,317 @@
1
+ const DEFAULT_TEXT_FONT_FILE = "Roboto-Regular.ttf";
2
+ const DEFAULT_SIGNATURE_FONT_FILE = "megastina.regular.ttf";
3
+ const PREVIEW_FONT_STYLE_ID = "previewer-font-face-style";
4
+ const PREVIEW_GOOGLE_FONT_LINK_ID = "previewer-google-font-link";
5
+ const normalizeFontToken = (value) => String(value ?? "")
6
+ .trim()
7
+ .toLowerCase();
8
+ export const resolvePreviewFont = (fieldType, fieldFont) => {
9
+ const fallbackToken = fieldType === "signature" ? DEFAULT_SIGNATURE_FONT_FILE : DEFAULT_TEXT_FONT_FILE;
10
+ const token = normalizeFontToken(fieldFont || fallbackToken);
11
+ if (token.includes("megastina")) {
12
+ return {
13
+ cssFamily: "MegastinaPreview, cursive",
14
+ canvasFamily: "MegastinaPreview, cursive",
15
+ fontWeight: "400",
16
+ };
17
+ }
18
+ if (token.includes("italianno")) {
19
+ return {
20
+ cssFamily: "Italianno, cursive",
21
+ canvasFamily: "Italianno, cursive",
22
+ fontWeight: "400",
23
+ };
24
+ }
25
+ if (token.includes("roboto")) {
26
+ return {
27
+ cssFamily: "Roboto, sans-serif",
28
+ canvasFamily: "Roboto, sans-serif",
29
+ fontWeight: "400",
30
+ };
31
+ }
32
+ if (token.includes("arial")) {
33
+ return {
34
+ cssFamily: "Arial, sans-serif",
35
+ canvasFamily: "Arial, sans-serif",
36
+ fontWeight: "400",
37
+ };
38
+ }
39
+ if (token.includes("times")) {
40
+ return {
41
+ cssFamily: '"Times New Roman", serif',
42
+ canvasFamily: '"Times New Roman", serif',
43
+ fontWeight: "400",
44
+ };
45
+ }
46
+ if (token.includes("ubuntu mono")) {
47
+ return {
48
+ cssFamily: '"Ubuntu Mono", monospace',
49
+ canvasFamily: '"Ubuntu Mono", monospace',
50
+ fontWeight: "400",
51
+ };
52
+ }
53
+ if (fieldType === "signature") {
54
+ return {
55
+ cssFamily: "MegastinaPreview, cursive",
56
+ canvasFamily: "MegastinaPreview, cursive",
57
+ fontWeight: "400",
58
+ };
59
+ }
60
+ return {
61
+ cssFamily: "Roboto, sans-serif",
62
+ canvasFamily: "Roboto, sans-serif",
63
+ fontWeight: "400",
64
+ };
65
+ };
66
+ export const ensurePreviewFontsLoaded = () => {
67
+ if (typeof window === "undefined")
68
+ return;
69
+ if (!document.getElementById(PREVIEW_GOOGLE_FONT_LINK_ID)) {
70
+ const link = document.createElement("link");
71
+ link.id = PREVIEW_GOOGLE_FONT_LINK_ID;
72
+ link.href =
73
+ "https://fonts.googleapis.com/css2?family=Roboto:wght@400&family=Italianno&display=block";
74
+ link.rel = "stylesheet";
75
+ document.head.appendChild(link);
76
+ }
77
+ if (!document.getElementById(PREVIEW_FONT_STYLE_ID)) {
78
+ const style = document.createElement("style");
79
+ style.id = PREVIEW_FONT_STYLE_ID;
80
+ style.textContent = `
81
+ @font-face {
82
+ font-family: "MegastinaPreview";
83
+ src: url("/fonts/megastina.regular.ttf") format("truetype");
84
+ font-weight: 400;
85
+ font-style: normal;
86
+ font-display: block;
87
+ }`;
88
+ document.head.appendChild(style);
89
+ }
90
+ if ("fonts" in document) {
91
+ document.fonts.ready.catch(() => {
92
+ });
93
+ }
94
+ };
95
+ let sharedCanvas = null;
96
+ let sharedCtx = null;
97
+ const fitNoWrapCache = new Map();
98
+ function getSharedContext() {
99
+ if (typeof document === "undefined")
100
+ return null;
101
+ if (!sharedCanvas) {
102
+ sharedCanvas = document.createElement("canvas");
103
+ sharedCtx = sharedCanvas.getContext("2d");
104
+ }
105
+ return sharedCtx;
106
+ }
107
+ function measureTextWidth(text, fontSize, fontFamily) {
108
+ const ctx = getSharedContext();
109
+ if (!ctx)
110
+ return 0;
111
+ ctx.font = `${fontSize}px ${fontFamily}`;
112
+ return ctx.measureText(text).width;
113
+ }
114
+ function getFontMetricsAtSize(fontSize, fontFamily) {
115
+ const ctx = getSharedContext();
116
+ if (ctx) {
117
+ ctx.font = `${fontSize}px ${fontFamily}`;
118
+ const metrics = ctx.measureText("Ag");
119
+ if (Number.isFinite(metrics.actualBoundingBoxAscent) &&
120
+ Number.isFinite(metrics.actualBoundingBoxDescent)) {
121
+ const ascent = metrics.actualBoundingBoxAscent;
122
+ const descent = -metrics.actualBoundingBoxDescent;
123
+ return {
124
+ ascent,
125
+ descent,
126
+ height: ascent - descent,
127
+ };
128
+ }
129
+ }
130
+ const ascent = fontSize * 0.8;
131
+ const descent = -fontSize * 0.2;
132
+ return {
133
+ ascent,
134
+ descent,
135
+ height: ascent - descent,
136
+ };
137
+ }
138
+ export function getPreviewFontMetrics({ fieldType, fieldFont, fontSize, }) {
139
+ const resolvedFont = resolvePreviewFont(fieldType, fieldFont);
140
+ return getFontMetricsAtSize(fontSize, resolvedFont.canvasFamily);
141
+ }
142
+ export function computePreviewBaselineOffset({ fieldType, fieldFont, fontSize, fieldHeight, alignV = "top", }) {
143
+ const defaultSize = fieldType === "signature" ? 25 : 11;
144
+ const effectiveFontSize = Number.isFinite(fontSize) && (fontSize || 0) > 0 ? fontSize : defaultSize;
145
+ const safeFieldHeight = Number.isFinite(fieldHeight) && fieldHeight > 0 ? fieldHeight : 0;
146
+ const { ascent, descent } = getPreviewFontMetrics({
147
+ fieldType,
148
+ fieldFont,
149
+ fontSize: effectiveFontSize,
150
+ });
151
+ const textHeight = Math.max(0, ascent - descent);
152
+ const remainingHeight = Math.max(0, safeFieldHeight - textHeight);
153
+ const blockTop = alignV === "middle" ? remainingHeight / 2 : alignV === "bottom" ? remainingHeight : 0;
154
+ const baseline = blockTop + ascent;
155
+ if (!Number.isFinite(baseline))
156
+ return 0;
157
+ if (safeFieldHeight <= 0)
158
+ return 0;
159
+ return Math.min(Math.max(baseline, 0), safeFieldHeight);
160
+ }
161
+ function wrapText({ text, fontSize, fontFamily, maxWidth, zoom = 1, }) {
162
+ const paragraphs = String(text ?? "").split(/\r?\n/);
163
+ const lines = [];
164
+ const measure = (s) => measureTextWidth(s, fontSize, fontFamily) * zoom;
165
+ const breakLongWord = (word) => {
166
+ const parts = [];
167
+ let cur = "";
168
+ for (const ch of word) {
169
+ const next = cur + ch;
170
+ if (cur && measure(next) > maxWidth) {
171
+ parts.push(cur);
172
+ cur = ch;
173
+ }
174
+ else {
175
+ cur = next;
176
+ }
177
+ }
178
+ if (cur)
179
+ parts.push(cur);
180
+ return parts;
181
+ };
182
+ for (const para of paragraphs) {
183
+ const trimmed = para.trim();
184
+ if (!trimmed) {
185
+ lines.push("");
186
+ continue;
187
+ }
188
+ const words = trimmed.split(/\s+/);
189
+ let current = "";
190
+ for (const w of words) {
191
+ const candidate = current ? `${current} ${w}` : w;
192
+ if (measure(candidate) <= maxWidth) {
193
+ current = candidate;
194
+ continue;
195
+ }
196
+ if (current) {
197
+ lines.push(current);
198
+ current = "";
199
+ }
200
+ if (measure(w) <= maxWidth) {
201
+ current = w;
202
+ }
203
+ else {
204
+ const broken = breakLongWord(w);
205
+ for (let i = 0; i < broken.length; i++) {
206
+ if (i === broken.length - 1)
207
+ current = broken[i];
208
+ else
209
+ lines.push(broken[i]);
210
+ }
211
+ }
212
+ }
213
+ if (current)
214
+ lines.push(current);
215
+ }
216
+ return lines;
217
+ }
218
+ function layoutWrappedBlock({ text, fontSize, fontFamily, lineHeight, maxWidth, zoom = 1, }) {
219
+ const { ascent, descent } = getFontMetricsAtSize(fontSize, fontFamily);
220
+ const lines = wrapText({ text, fontSize, fontFamily, maxWidth, zoom });
221
+ const n = lines.length;
222
+ const blockHeight = (n > 0 ? (n - 1) * lineHeight : 0) + (ascent - descent);
223
+ return { lines, ascent, descent, blockHeight };
224
+ }
225
+ export function fitWrappedText({ text, fontFamily, maxWidth, maxHeight, startSize, lineHeightMult = 1.2, zoom = 1, }) {
226
+ const fits = (size) => {
227
+ const lh = size * lineHeightMult;
228
+ const { blockHeight } = layoutWrappedBlock({
229
+ text,
230
+ fontSize: size,
231
+ fontFamily,
232
+ lineHeight: lh,
233
+ maxWidth,
234
+ zoom,
235
+ });
236
+ return blockHeight <= maxHeight + 1e-6;
237
+ };
238
+ if (fits(startSize)) {
239
+ const lh = startSize * lineHeightMult;
240
+ const laid = layoutWrappedBlock({
241
+ text,
242
+ fontSize: startSize,
243
+ fontFamily,
244
+ lineHeight: lh,
245
+ maxWidth,
246
+ zoom,
247
+ });
248
+ return { fontSize: startSize, lineHeight: lh, ...laid };
249
+ }
250
+ let hi = startSize;
251
+ let lo = startSize;
252
+ while (!fits(lo)) {
253
+ lo /= 2;
254
+ if (lo < 0.1)
255
+ break;
256
+ }
257
+ for (let i = 0; i < 22; i++) {
258
+ const mid = (lo + hi) / 2;
259
+ if (fits(mid))
260
+ lo = mid;
261
+ else
262
+ hi = mid;
263
+ }
264
+ const bestSize = lo;
265
+ const bestLineHeight = bestSize * lineHeightMult;
266
+ const laid = layoutWrappedBlock({
267
+ text,
268
+ fontSize: bestSize,
269
+ fontFamily,
270
+ lineHeight: bestLineHeight,
271
+ maxWidth,
272
+ zoom,
273
+ });
274
+ return { fontSize: bestSize, lineHeight: bestLineHeight, ...laid };
275
+ }
276
+ export function fitNoWrapText({ text, fontFamily, maxWidth, maxHeight, startSize, }) {
277
+ const line = String(text ?? "").replace(/\r?\n/g, " ");
278
+ const cacheKey = `${line}|${fontFamily}|${maxWidth}|${maxHeight}|${startSize}`;
279
+ if (fitNoWrapCache.has(cacheKey)) {
280
+ return fitNoWrapCache.get(cacheKey);
281
+ }
282
+ const ctx = getSharedContext();
283
+ const fits = (size) => {
284
+ if (!ctx)
285
+ return false;
286
+ ctx.font = `${size}px ${fontFamily}`;
287
+ const w = ctx.measureText(line).width;
288
+ const { height } = getFontMetricsAtSize(size, fontFamily);
289
+ return w <= maxWidth + 1e-6 && height <= maxHeight + 1e-6;
290
+ };
291
+ if (fits(startSize)) {
292
+ const { ascent, descent, height } = getFontMetricsAtSize(startSize, fontFamily);
293
+ const result = { fontSize: startSize, line, ascent, descent, height };
294
+ fitNoWrapCache.set(cacheKey, result);
295
+ return result;
296
+ }
297
+ let hi = startSize;
298
+ let lo = startSize;
299
+ while (!fits(lo)) {
300
+ lo /= 2;
301
+ if (lo < 0.1)
302
+ break;
303
+ }
304
+ for (let i = 0; i < 22; i++) {
305
+ const mid = (lo + hi) / 2;
306
+ if (fits(mid))
307
+ lo = mid;
308
+ else
309
+ hi = mid;
310
+ }
311
+ const bestSize = lo;
312
+ const { ascent, descent, height } = getFontMetricsAtSize(bestSize, fontFamily);
313
+ const result = { fontSize: bestSize, line, ascent, descent, height };
314
+ fitNoWrapCache.set(cacheKey, result);
315
+ return result;
316
+ }
317
+ //# sourceMappingURL=form-previewer-rendering.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-previewer-rendering.js","sourceRoot":"","sources":["../../../lib/pdf-viewer/form-previewer-rendering.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export { setupPdfJsWorker, loadPdfFromFile, loadPdfFromUrl } from "./pdfjs.js";
2
+ export { usePdfDocumentFromFile, usePdfDocumentFromUrl } from "./use-pdf-document.js";
3
+ export { usePdfPageRenderer } from "./use-pdf-page-renderer.js";
4
+ export { BasePdfViewer } from "./BasePdfViewer.js";
5
+ export { FormFillPdfViewer } from "./FormFillPdfViewer.js";
6
+ export { PdfPageOverlay } from "./PdfPageOverlay.js";
7
+ export { Loader } from "./loader.js";
8
+ export { normalizePreviewFields, groupFieldsByPage, normalizePreviewFieldKey, resolveAutoPreviewValue, createPreviewDisplayValueResolver, isFieldRequired, resolveOwnerMeta, DEFAULT_PREVIEW_DUMMY_STUDENT_USER, type PreviewField, type PreviewFieldType, type PreviewFieldLike, type OwnerMeta, } from "./form-previewer-model.js";
9
+ export { resolvePreviewFont, ensurePreviewFontsLoaded, getPreviewFontMetrics, computePreviewBaselineOffset, fitWrappedText, fitNoWrapText, type ResolvedPreviewFont, } from "./form-previewer-rendering.js";
10
+ export { PARTY_COLORS, getPartyColorByIndex, getPartyColorByOrder, getPartyDisplayTitle, } from "./party-colors.js";
@@ -0,0 +1,11 @@
1
+ export { setupPdfJsWorker, loadPdfFromFile, loadPdfFromUrl } from "./pdfjs.js";
2
+ export { usePdfDocumentFromFile, usePdfDocumentFromUrl } from "./use-pdf-document.js";
3
+ export { usePdfPageRenderer } from "./use-pdf-page-renderer.js";
4
+ export { BasePdfViewer } from "./BasePdfViewer.js";
5
+ export { FormFillPdfViewer } from "./FormFillPdfViewer.js";
6
+ export { PdfPageOverlay } from "./PdfPageOverlay.js";
7
+ export { Loader } from "./loader.js";
8
+ export { normalizePreviewFields, groupFieldsByPage, normalizePreviewFieldKey, resolveAutoPreviewValue, createPreviewDisplayValueResolver, isFieldRequired, resolveOwnerMeta, DEFAULT_PREVIEW_DUMMY_STUDENT_USER, } from "./form-previewer-model.js";
9
+ export { resolvePreviewFont, ensurePreviewFontsLoaded, getPreviewFontMetrics, computePreviewBaselineOffset, fitWrappedText, fitNoWrapText, } from "./form-previewer-rendering.js";
10
+ export { PARTY_COLORS, getPartyColorByIndex, getPartyColorByOrder, getPartyDisplayTitle, } from "./party-colors.js";
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/pdf-viewer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC/E,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACtF,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,wBAAwB,EACxB,uBAAuB,EACvB,iCAAiC,EACjC,eAAe,EACf,gBAAgB,EAChB,kCAAkC,GAKnC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,qBAAqB,EACrB,4BAA4B,EAC5B,cAAc,EACd,aAAa,GAEd,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare const Loader: ({ children }: {
2
+ children?: React.ReactNode;
3
+ }) => import("react").JSX.Element;
@@ -0,0 +1,5 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ export const Loader = ({ children }) => {
3
+ return (_jsx("div", { className: "flex h-full w-full items-center justify-center py-16", children: _jsxs("div", { className: "animate-scale-in text-center", children: [_jsx("div", { className: "border-primary mx-auto h-10 w-10 animate-spin rounded-full border-b-2" }), children && _jsx("div", { className: "mt-4", children: children })] }) }));
4
+ };
5
+ //# sourceMappingURL=loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../lib/pdf-viewer/loader.tsx"],"names":[],"mappings":";AAAA,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,EAAE,QAAQ,EAAkC,EAAE,EAAE;IACrE,OAAO,CACL,cAAK,SAAS,EAAC,sDAAsD,YACnE,eAAK,SAAS,EAAC,8BAA8B,aAC3C,cACE,SAAS,EAAC,uEAAuE,GACjF,EACD,QAAQ,IAAI,cAAK,SAAS,EAAC,MAAM,YAAE,QAAQ,GAAO,IAC/C,GACF,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,22 @@
1
+ export declare const PARTY_COLORS: {
2
+ bg: string;
3
+ border: string;
4
+ text: string;
5
+ hex: string;
6
+ }[];
7
+ export declare const getPartyColorByIndex: (index: number) => {
8
+ bg: string;
9
+ border: string;
10
+ text: string;
11
+ hex: string;
12
+ };
13
+ export declare function getPartyColorByOrder(order: number): {
14
+ bg: string;
15
+ border: string;
16
+ text: string;
17
+ hex: string;
18
+ };
19
+ export declare function getPartyDisplayTitle(party: {
20
+ _id?: string;
21
+ signatory_title?: string;
22
+ } | null | undefined): string;
@@ -0,0 +1,20 @@
1
+ export const PARTY_COLORS = [
2
+ { bg: "bg-orange-100", border: "border-orange-300", text: "text-orange-900", hex: "#fb923c" },
3
+ { bg: "bg-rose-100", border: "border-rose-300", text: "text-rose-900", hex: "#f43f5e" },
4
+ { bg: "bg-emerald-100", border: "border-emerald-300", text: "text-emerald-900", hex: "#10b981" },
5
+ { bg: "bg-cyan-100", border: "border-cyan-300", text: "text-cyan-900", hex: "#06b6d4" },
6
+ { bg: "bg-amber-100", border: "border-amber-300", text: "text-amber-900", hex: "#f59e0b" },
7
+ { bg: "bg-violet-100", border: "border-violet-300", text: "text-violet-900", hex: "#a78bfa" },
8
+ ];
9
+ export const getPartyColorByIndex = (index) => {
10
+ return PARTY_COLORS[index % PARTY_COLORS.length];
11
+ };
12
+ export function getPartyColorByOrder(order) {
13
+ return getPartyColorByIndex(Math.max(0, order - 1));
14
+ }
15
+ export function getPartyDisplayTitle(party) {
16
+ if (!party)
17
+ return "";
18
+ return party._id === "initiator" ? "Student" : party.signatory_title || "Party";
19
+ }
20
+ //# sourceMappingURL=party-colors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"party-colors.js","sourceRoot":"","sources":["../../../lib/pdf-viewer/party-colors.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,EAAE,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE,mBAAmB,EAAE,IAAI,EAAE,iBAAiB,EAAE,GAAG,EAAE,SAAS,EAAE;IAC7F,EAAE,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,iBAAiB,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,SAAS,EAAE;IACvF,EAAE,EAAE,EAAE,gBAAgB,EAAE,MAAM,EAAE,oBAAoB,EAAE,IAAI,EAAE,kBAAkB,EAAE,GAAG,EAAE,SAAS,EAAE;IAChG,EAAE,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,iBAAiB,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,SAAS,EAAE;IACvF,EAAE,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,gBAAgB,EAAE,GAAG,EAAE,SAAS,EAAE;IAC1F,EAAE,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE,mBAAmB,EAAE,IAAI,EAAE,iBAAiB,EAAE,GAAG,EAAE,SAAS,EAAE;CAC9F,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,KAAa,EAAE,EAAE;IACpD,OAAO,YAAY,CAAC,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;AACnD,CAAC,CAAC;AAEF,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,OAAO,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,KAAoE;IAEpE,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,OAAO,KAAK,CAAC,GAAG,KAAK,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,IAAI,OAAO,CAAC;AAClF,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { PDFDocumentProxy } from "pdfjs-dist";
2
+ export declare function setupPdfJsWorker(): void;
3
+ export declare function loadPdfFromFile(file: File): Promise<PDFDocumentProxy>;
4
+ export declare function loadPdfFromUrl(url: string): Promise<PDFDocumentProxy>;
@@ -0,0 +1,21 @@
1
+ import { GlobalWorkerOptions, getDocument, version as pdfjsVersion } from "pdfjs-dist";
2
+ let workerInitialized = false;
3
+ export function setupPdfJsWorker() {
4
+ if (typeof window === "undefined" || workerInitialized)
5
+ return;
6
+ const workerFile = pdfjsVersion.startsWith("4") ? "pdf.worker.min.mjs" : "pdf.worker.min.js";
7
+ GlobalWorkerOptions.workerSrc = `https://cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjsVersion}/${workerFile}`;
8
+ workerInitialized = true;
9
+ }
10
+ export async function loadPdfFromFile(file) {
11
+ const arrayBuffer = await file.arrayBuffer();
12
+ const loadingTask = getDocument({ data: arrayBuffer });
13
+ const doc = await loadingTask.promise;
14
+ return doc;
15
+ }
16
+ export async function loadPdfFromUrl(url) {
17
+ const loadingTask = getDocument({ url });
18
+ const doc = await loadingTask.promise;
19
+ return doc;
20
+ }
21
+ //# sourceMappingURL=pdfjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pdfjs.js","sourceRoot":"","sources":["../../../lib/pdf-viewer/pdfjs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,YAAY,CAAC;AAGvF,IAAI,iBAAiB,GAAG,KAAK,CAAC;AAE9B,MAAM,UAAU,gBAAgB;IAC9B,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,iBAAiB;QAAE,OAAO;IAC/D,MAAM,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,mBAAmB,CAAC;IAC7F,mBAAmB,CAAC,SAAS,GAAG,iDAAiD,YAAY,IAAI,UAAU,EAAE,CAAC;IAC9G,iBAAiB,GAAG,IAAI,CAAC;AAC3B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAU;IAC9C,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;IAC7C,MAAM,WAAW,GAAG,WAAW,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;IACvD,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC;IACtC,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAW;IAC9C,MAAM,WAAW,GAAG,WAAW,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IACzC,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC;IACtC,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { PDFDocumentProxy } from "pdfjs-dist";
2
+ type UsePdfDocumentResult = {
3
+ pdfDoc: PDFDocumentProxy | null;
4
+ pageCount: number;
5
+ isLoading: boolean;
6
+ error: string | null;
7
+ };
8
+ export declare function usePdfDocumentFromFile(file: File | null | undefined): UsePdfDocumentResult;
9
+ export declare function usePdfDocumentFromUrl(url: string | null | undefined): UsePdfDocumentResult;
10
+ export {};
@@ -0,0 +1,97 @@
1
+ import { useState, useEffect, useRef } from "react";
2
+ import { setupPdfJsWorker, loadPdfFromFile, loadPdfFromUrl } from "./pdfjs.js";
3
+ export function usePdfDocumentFromFile(file) {
4
+ const [state, setState] = useState({
5
+ pdfDoc: null,
6
+ pageCount: 0,
7
+ isLoading: false,
8
+ error: null,
9
+ });
10
+ const loadedRef = useRef(null);
11
+ const destructorRef = useRef(null);
12
+ useEffect(() => {
13
+ setupPdfJsWorker();
14
+ if (!file) {
15
+ loadedRef.current = null;
16
+ setState({ pdfDoc: null, pageCount: 0, isLoading: false, error: null });
17
+ return;
18
+ }
19
+ if (loadedRef.current === file)
20
+ return;
21
+ loadedRef.current = file;
22
+ let cancelled = false;
23
+ setState({ pdfDoc: null, pageCount: 0, isLoading: true, error: null });
24
+ loadPdfFromFile(file)
25
+ .then((doc) => {
26
+ if (cancelled) {
27
+ void doc.destroy();
28
+ return;
29
+ }
30
+ destructorRef.current = { destroy: () => void doc.destroy() };
31
+ setState({ pdfDoc: doc, pageCount: doc.numPages, isLoading: false, error: null });
32
+ })
33
+ .catch((err) => {
34
+ if (cancelled)
35
+ return;
36
+ setState({
37
+ pdfDoc: null,
38
+ pageCount: 0,
39
+ isLoading: false,
40
+ error: err?.message ?? "Failed to load PDF",
41
+ });
42
+ });
43
+ return () => {
44
+ cancelled = true;
45
+ loadedRef.current = null;
46
+ destructorRef.current?.destroy();
47
+ destructorRef.current = null;
48
+ setState({ pdfDoc: null, pageCount: 0, isLoading: false, error: null });
49
+ };
50
+ }, [file]);
51
+ return state;
52
+ }
53
+ export function usePdfDocumentFromUrl(url) {
54
+ const [state, setState] = useState({
55
+ pdfDoc: null,
56
+ pageCount: 0,
57
+ isLoading: false,
58
+ error: null,
59
+ });
60
+ const destructorRef = useRef(null);
61
+ useEffect(() => {
62
+ setupPdfJsWorker();
63
+ if (!url) {
64
+ setState({ pdfDoc: null, pageCount: 0, isLoading: false, error: null });
65
+ return;
66
+ }
67
+ let cancelled = false;
68
+ setState({ pdfDoc: null, pageCount: 0, isLoading: true, error: null });
69
+ loadPdfFromUrl(url)
70
+ .then((doc) => {
71
+ if (cancelled) {
72
+ void doc.destroy();
73
+ return;
74
+ }
75
+ destructorRef.current = { destroy: () => void doc.destroy() };
76
+ setState({ pdfDoc: doc, pageCount: doc.numPages, isLoading: false, error: null });
77
+ })
78
+ .catch((err) => {
79
+ if (cancelled)
80
+ return;
81
+ setState({
82
+ pdfDoc: null,
83
+ pageCount: 0,
84
+ isLoading: false,
85
+ error: err?.message ?? "Failed to load PDF",
86
+ });
87
+ });
88
+ return () => {
89
+ cancelled = true;
90
+ destructorRef.current?.destroy();
91
+ destructorRef.current = null;
92
+ setState({ pdfDoc: null, pageCount: 0, isLoading: false, error: null });
93
+ };
94
+ }, [url]);
95
+ return state;
96
+ }
97
+ //# sourceMappingURL=use-pdf-document.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-pdf-document.js","sourceRoot":"","sources":["../../../lib/pdf-viewer/use-pdf-document.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { PDFDocumentProxy } from "pdfjs-dist";
2
+ export declare function usePdfPageRenderer(pdf: PDFDocumentProxy, pageNumber: number, scale: number): {
3
+ canvasRef: import("react").RefObject<HTMLCanvasElement | null>;
4
+ viewportRef: import("react").RefObject<import("pdfjs-dist/types/src/display/display_utils.js").PageViewport | null>;
5
+ pageReady: boolean;
6
+ };