@betterinternship/core 2.12.1 → 2.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/broker/base.process.d.ts +2 -2
- package/dist/lib/broker/base.process.js +2 -2
- package/dist/lib/broker/base.task.d.ts +40 -40
- package/dist/lib/broker/broker.d.ts +28 -28
- package/dist/lib/broker/broker.js +111 -111
- package/dist/lib/email/email.d.ts +22 -22
- package/dist/lib/email/email.js +170 -170
- package/dist/lib/forms/constants/index.js +2 -2
- package/dist/lib/forms/form-metadata.d.ts +2 -0
- package/dist/lib/forms/form-metadata.js +2 -0
- package/dist/lib/forms/form-metadata.js.map +1 -1
- package/dist/lib/pdf-viewer/BasePdfViewer.d.ts +21 -0
- package/dist/lib/pdf-viewer/BasePdfViewer.js +42 -0
- package/dist/lib/pdf-viewer/BasePdfViewer.js.map +1 -0
- package/dist/lib/pdf-viewer/FormFillPdfViewer.d.ts +31 -0
- package/dist/lib/pdf-viewer/FormFillPdfViewer.js +107 -0
- package/dist/lib/pdf-viewer/FormFillPdfViewer.js.map +1 -0
- package/dist/lib/pdf-viewer/PdfPageOverlay.d.ts +20 -0
- package/dist/lib/pdf-viewer/PdfPageOverlay.js +221 -0
- package/dist/lib/pdf-viewer/PdfPageOverlay.js.map +1 -0
- package/dist/lib/pdf-viewer/form-previewer-model.d.ts +52 -0
- package/dist/lib/pdf-viewer/form-previewer-model.js +329 -0
- package/dist/lib/pdf-viewer/form-previewer-model.js.map +1 -0
- package/dist/lib/pdf-viewer/form-previewer-rendering.d.ts +55 -0
- package/dist/lib/pdf-viewer/form-previewer-rendering.js +317 -0
- package/dist/lib/pdf-viewer/form-previewer-rendering.js.map +1 -0
- package/dist/lib/pdf-viewer/index.d.ts +10 -0
- package/dist/lib/pdf-viewer/index.js +11 -0
- package/dist/lib/pdf-viewer/index.js.map +1 -0
- package/dist/lib/pdf-viewer/loader.d.ts +3 -0
- package/dist/lib/pdf-viewer/loader.js +5 -0
- package/dist/lib/pdf-viewer/loader.js.map +1 -0
- package/dist/lib/pdf-viewer/party-colors.d.ts +22 -0
- package/dist/lib/pdf-viewer/party-colors.js +20 -0
- package/dist/lib/pdf-viewer/party-colors.js.map +1 -0
- package/dist/lib/pdf-viewer/pdfjs.d.ts +4 -0
- package/dist/lib/pdf-viewer/pdfjs.js +21 -0
- package/dist/lib/pdf-viewer/pdfjs.js.map +1 -0
- package/dist/lib/pdf-viewer/use-pdf-document.d.ts +10 -0
- package/dist/lib/pdf-viewer/use-pdf-document.js +97 -0
- package/dist/lib/pdf-viewer/use-pdf-document.js.map +1 -0
- package/dist/lib/pdf-viewer/use-pdf-page-renderer.d.ts +6 -0
- package/dist/lib/pdf-viewer/use-pdf-page-renderer.js +60 -0
- package/dist/lib/pdf-viewer/use-pdf-page-renderer.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +14 -1
package/dist/lib/email/email.js
CHANGED
|
@@ -1,171 +1,171 @@
|
|
|
1
|
-
import { SendEmailCommand } from '@aws-sdk/client-ses';
|
|
2
|
-
import { SESClient } from '@aws-sdk/client-ses';
|
|
3
|
-
import * as nodemailer from 'nodemailer';
|
|
4
|
-
import { v4 } from 'uuid';
|
|
5
|
-
import { ENV } from '../env.js';
|
|
6
|
-
const SMTP_EMAIL = ENV.SMTP_EMAIL;
|
|
7
|
-
const SMTP_PASSWORD = ENV.SMTP_PASSWORD;
|
|
8
|
-
if (!SMTP_EMAIL || !SMTP_PASSWORD)
|
|
9
|
-
throw Error('[ERROR:ENV]: Missing SMTP setup.');
|
|
10
|
-
const AWS_ACCESS_KEY_ID = ENV.AWS_ACCESS_KEY_ID;
|
|
11
|
-
const AWS_SECRET_ACCESS_KEY = ENV.AWS_SECRET_ACCESS_KEY;
|
|
12
|
-
const AWS_REGION = ENV.AWS_REGION;
|
|
13
|
-
const AWS_DISABLED = !AWS_ACCESS_KEY_ID || !AWS_SECRET_ACCESS_KEY || !AWS_REGION;
|
|
14
|
-
if (AWS_DISABLED)
|
|
15
|
-
console.error('[ERROR:ENV]: Missing Amazon setup.');
|
|
16
|
-
export const sesClient = new SESClient({
|
|
17
|
-
region: ENV.AWS_REGION,
|
|
18
|
-
});
|
|
19
|
-
const transporter = nodemailer.createTransport({
|
|
20
|
-
service: 'Gmail',
|
|
21
|
-
host: 'smtp.gmail.com',
|
|
22
|
-
port: 465,
|
|
23
|
-
secure: true,
|
|
24
|
-
auth: {
|
|
25
|
-
user: SMTP_EMAIL,
|
|
26
|
-
pass: SMTP_PASSWORD,
|
|
27
|
-
},
|
|
28
|
-
messageId: `${v4()}${SMTP_EMAIL}`,
|
|
29
|
-
});
|
|
30
|
-
const onEmailError = (recipient, resolve) => (error, info) => {
|
|
31
|
-
if (error) {
|
|
32
|
-
console.error('[ERROR:EMAIL] Could not send email.');
|
|
33
|
-
console.error('[-----] ' + error.message);
|
|
34
|
-
}
|
|
35
|
-
else {
|
|
36
|
-
resolve({
|
|
37
|
-
messageId: info.messageId,
|
|
38
|
-
response: info.response,
|
|
39
|
-
});
|
|
40
|
-
console.warn('[EMAIL] Email sent to ' + recipient);
|
|
41
|
-
}
|
|
42
|
-
};
|
|
43
|
-
const normalizeRecipients = (value) => {
|
|
44
|
-
if (!value)
|
|
45
|
-
return [];
|
|
46
|
-
const list = Array.isArray(value) ? value : [value];
|
|
47
|
-
return [
|
|
48
|
-
...new Set(list.map((recipient) => recipient.trim()).filter(Boolean)),
|
|
49
|
-
];
|
|
50
|
-
};
|
|
51
|
-
const traditionalEmailRoute = async ({ sender, subject, recipient, content, alias = 'hello', }) => {
|
|
52
|
-
return new Promise((resolve) => {
|
|
53
|
-
transporter.sendMail({
|
|
54
|
-
from: `"${sender ?? 'BetterInternship'}" <${alias}@betterinternship.com>`,
|
|
55
|
-
to: recipient,
|
|
56
|
-
subject,
|
|
57
|
-
html: content,
|
|
58
|
-
}, onEmailError(recipient, resolve));
|
|
59
|
-
});
|
|
60
|
-
};
|
|
61
|
-
const traditionalMultiEmailRoute = async ({ sender, subject, to, cc, bcc, content, alias = 'hello', }) => {
|
|
62
|
-
const toRecipients = normalizeRecipients(to);
|
|
63
|
-
if (!toRecipients.length)
|
|
64
|
-
throw Error('[ERROR:EMAIL] No recipients provided for email.');
|
|
65
|
-
const ccRecipients = normalizeRecipients(cc);
|
|
66
|
-
const bccRecipients = normalizeRecipients(bcc);
|
|
67
|
-
const logRecipients = [...toRecipients, ...ccRecipients, ...bccRecipients];
|
|
68
|
-
return new Promise((resolve) => {
|
|
69
|
-
transporter.sendMail({
|
|
70
|
-
from: `"${sender ?? 'BetterInternship'}" <${alias}@betterinternship.com>`,
|
|
71
|
-
to: toRecipients,
|
|
72
|
-
cc: ccRecipients.length ? ccRecipients : undefined,
|
|
73
|
-
bcc: bccRecipients.length ? bccRecipients : undefined,
|
|
74
|
-
subject,
|
|
75
|
-
html: content,
|
|
76
|
-
}, onEmailError(logRecipients.join(', '), resolve));
|
|
77
|
-
});
|
|
78
|
-
};
|
|
79
|
-
const amazonEmailRoute = async ({ sender, subject, recipient, content, alias = 'hello', }) => {
|
|
80
|
-
const params = {
|
|
81
|
-
Destination: {
|
|
82
|
-
ToAddresses: [recipient],
|
|
83
|
-
},
|
|
84
|
-
Message: {
|
|
85
|
-
Subject: { Data: subject },
|
|
86
|
-
Body: {
|
|
87
|
-
Html: { Data: content },
|
|
88
|
-
},
|
|
89
|
-
},
|
|
90
|
-
Source: `"${sender ?? 'BetterInternship'}" <${alias}@betterinternship.com>`,
|
|
91
|
-
};
|
|
92
|
-
try {
|
|
93
|
-
const command = new SendEmailCommand(params);
|
|
94
|
-
const result = await sesClient.send(command);
|
|
95
|
-
console.warn('[AWSSES] Email sent to ' + recipient);
|
|
96
|
-
return {
|
|
97
|
-
messageId: result.MessageId,
|
|
98
|
-
response: 'Successfully sent via Amazon SES.',
|
|
99
|
-
};
|
|
100
|
-
}
|
|
101
|
-
catch (error) {
|
|
102
|
-
console.error('[ERROR:AWSSES] Could not send email.');
|
|
103
|
-
console.error('[-----] ' + error);
|
|
104
|
-
}
|
|
105
|
-
};
|
|
106
|
-
const amazonMultiEmailRoute = async ({ sender, subject, to, cc, bcc, content, alias = 'hello', }) => {
|
|
107
|
-
const toRecipients = normalizeRecipients(to);
|
|
108
|
-
if (!toRecipients.length)
|
|
109
|
-
throw Error('[ERROR:EMAIL] No recipients provided for email.');
|
|
110
|
-
const ccRecipients = normalizeRecipients(cc);
|
|
111
|
-
const bccRecipients = normalizeRecipients(bcc);
|
|
112
|
-
const logRecipients = [...toRecipients, ...ccRecipients, ...bccRecipients];
|
|
113
|
-
const params = {
|
|
114
|
-
Destination: {
|
|
115
|
-
ToAddresses: toRecipients,
|
|
116
|
-
CcAddresses: ccRecipients.length ? ccRecipients : undefined,
|
|
117
|
-
BccAddresses: bccRecipients.length ? bccRecipients : undefined,
|
|
118
|
-
},
|
|
119
|
-
Message: {
|
|
120
|
-
Subject: { Data: subject },
|
|
121
|
-
Body: {
|
|
122
|
-
Html: { Data: content },
|
|
123
|
-
},
|
|
124
|
-
},
|
|
125
|
-
Source: `"${sender ?? 'BetterInternship'}" <${alias}@betterinternship.com>`,
|
|
126
|
-
};
|
|
127
|
-
try {
|
|
128
|
-
const command = new SendEmailCommand(params);
|
|
129
|
-
const result = await sesClient.send(command);
|
|
130
|
-
console.warn('[AWSSES] Email sent to ' + logRecipients.join(', '));
|
|
131
|
-
return {
|
|
132
|
-
messageId: result.MessageId,
|
|
133
|
-
response: 'Successfully sent via Amazon SES.',
|
|
134
|
-
};
|
|
135
|
-
}
|
|
136
|
-
catch (error) {
|
|
137
|
-
console.error('[ERROR:AWSSES] Could not send email.');
|
|
138
|
-
console.error('[-----] ' + error);
|
|
139
|
-
}
|
|
140
|
-
};
|
|
141
|
-
export const sendSingleEmail = async (params) => {
|
|
142
|
-
if (AWS_DISABLED) {
|
|
143
|
-
return await traditionalEmailRoute(params);
|
|
144
|
-
}
|
|
145
|
-
else {
|
|
146
|
-
const dice = Math.random();
|
|
147
|
-
const threshold = 0;
|
|
148
|
-
if (dice < threshold) {
|
|
149
|
-
return await traditionalEmailRoute(params);
|
|
150
|
-
}
|
|
151
|
-
else {
|
|
152
|
-
return await amazonEmailRoute(params);
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
};
|
|
156
|
-
export const sendMultiEmail = async (params) => {
|
|
157
|
-
if (AWS_DISABLED) {
|
|
158
|
-
return await traditionalMultiEmailRoute(params);
|
|
159
|
-
}
|
|
160
|
-
else {
|
|
161
|
-
const dice = Math.random();
|
|
162
|
-
const threshold = 0;
|
|
163
|
-
if (dice < threshold) {
|
|
164
|
-
return await traditionalMultiEmailRoute(params);
|
|
165
|
-
}
|
|
166
|
-
else {
|
|
167
|
-
return await amazonMultiEmailRoute(params);
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
};
|
|
1
|
+
import { SendEmailCommand } from '@aws-sdk/client-ses';
|
|
2
|
+
import { SESClient } from '@aws-sdk/client-ses';
|
|
3
|
+
import * as nodemailer from 'nodemailer';
|
|
4
|
+
import { v4 } from 'uuid';
|
|
5
|
+
import { ENV } from '../env.js';
|
|
6
|
+
const SMTP_EMAIL = ENV.SMTP_EMAIL;
|
|
7
|
+
const SMTP_PASSWORD = ENV.SMTP_PASSWORD;
|
|
8
|
+
if (!SMTP_EMAIL || !SMTP_PASSWORD)
|
|
9
|
+
throw Error('[ERROR:ENV]: Missing SMTP setup.');
|
|
10
|
+
const AWS_ACCESS_KEY_ID = ENV.AWS_ACCESS_KEY_ID;
|
|
11
|
+
const AWS_SECRET_ACCESS_KEY = ENV.AWS_SECRET_ACCESS_KEY;
|
|
12
|
+
const AWS_REGION = ENV.AWS_REGION;
|
|
13
|
+
const AWS_DISABLED = !AWS_ACCESS_KEY_ID || !AWS_SECRET_ACCESS_KEY || !AWS_REGION;
|
|
14
|
+
if (AWS_DISABLED)
|
|
15
|
+
console.error('[ERROR:ENV]: Missing Amazon setup.');
|
|
16
|
+
export const sesClient = new SESClient({
|
|
17
|
+
region: ENV.AWS_REGION,
|
|
18
|
+
});
|
|
19
|
+
const transporter = nodemailer.createTransport({
|
|
20
|
+
service: 'Gmail',
|
|
21
|
+
host: 'smtp.gmail.com',
|
|
22
|
+
port: 465,
|
|
23
|
+
secure: true,
|
|
24
|
+
auth: {
|
|
25
|
+
user: SMTP_EMAIL,
|
|
26
|
+
pass: SMTP_PASSWORD,
|
|
27
|
+
},
|
|
28
|
+
messageId: `${v4()}${SMTP_EMAIL}`,
|
|
29
|
+
});
|
|
30
|
+
const onEmailError = (recipient, resolve) => (error, info) => {
|
|
31
|
+
if (error) {
|
|
32
|
+
console.error('[ERROR:EMAIL] Could not send email.');
|
|
33
|
+
console.error('[-----] ' + error.message);
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
resolve({
|
|
37
|
+
messageId: info.messageId,
|
|
38
|
+
response: info.response,
|
|
39
|
+
});
|
|
40
|
+
console.warn('[EMAIL] Email sent to ' + recipient);
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
const normalizeRecipients = (value) => {
|
|
44
|
+
if (!value)
|
|
45
|
+
return [];
|
|
46
|
+
const list = Array.isArray(value) ? value : [value];
|
|
47
|
+
return [
|
|
48
|
+
...new Set(list.map((recipient) => recipient.trim()).filter(Boolean)),
|
|
49
|
+
];
|
|
50
|
+
};
|
|
51
|
+
const traditionalEmailRoute = async ({ sender, subject, recipient, content, alias = 'hello', }) => {
|
|
52
|
+
return new Promise((resolve) => {
|
|
53
|
+
transporter.sendMail({
|
|
54
|
+
from: `"${sender ?? 'BetterInternship'}" <${alias}@betterinternship.com>`,
|
|
55
|
+
to: recipient,
|
|
56
|
+
subject,
|
|
57
|
+
html: content,
|
|
58
|
+
}, onEmailError(recipient, resolve));
|
|
59
|
+
});
|
|
60
|
+
};
|
|
61
|
+
const traditionalMultiEmailRoute = async ({ sender, subject, to, cc, bcc, content, alias = 'hello', }) => {
|
|
62
|
+
const toRecipients = normalizeRecipients(to);
|
|
63
|
+
if (!toRecipients.length)
|
|
64
|
+
throw Error('[ERROR:EMAIL] No recipients provided for email.');
|
|
65
|
+
const ccRecipients = normalizeRecipients(cc);
|
|
66
|
+
const bccRecipients = normalizeRecipients(bcc);
|
|
67
|
+
const logRecipients = [...toRecipients, ...ccRecipients, ...bccRecipients];
|
|
68
|
+
return new Promise((resolve) => {
|
|
69
|
+
transporter.sendMail({
|
|
70
|
+
from: `"${sender ?? 'BetterInternship'}" <${alias}@betterinternship.com>`,
|
|
71
|
+
to: toRecipients,
|
|
72
|
+
cc: ccRecipients.length ? ccRecipients : undefined,
|
|
73
|
+
bcc: bccRecipients.length ? bccRecipients : undefined,
|
|
74
|
+
subject,
|
|
75
|
+
html: content,
|
|
76
|
+
}, onEmailError(logRecipients.join(', '), resolve));
|
|
77
|
+
});
|
|
78
|
+
};
|
|
79
|
+
const amazonEmailRoute = async ({ sender, subject, recipient, content, alias = 'hello', }) => {
|
|
80
|
+
const params = {
|
|
81
|
+
Destination: {
|
|
82
|
+
ToAddresses: [recipient],
|
|
83
|
+
},
|
|
84
|
+
Message: {
|
|
85
|
+
Subject: { Data: subject },
|
|
86
|
+
Body: {
|
|
87
|
+
Html: { Data: content },
|
|
88
|
+
},
|
|
89
|
+
},
|
|
90
|
+
Source: `"${sender ?? 'BetterInternship'}" <${alias}@betterinternship.com>`,
|
|
91
|
+
};
|
|
92
|
+
try {
|
|
93
|
+
const command = new SendEmailCommand(params);
|
|
94
|
+
const result = await sesClient.send(command);
|
|
95
|
+
console.warn('[AWSSES] Email sent to ' + recipient);
|
|
96
|
+
return {
|
|
97
|
+
messageId: result.MessageId,
|
|
98
|
+
response: 'Successfully sent via Amazon SES.',
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
console.error('[ERROR:AWSSES] Could not send email.');
|
|
103
|
+
console.error('[-----] ' + error);
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
const amazonMultiEmailRoute = async ({ sender, subject, to, cc, bcc, content, alias = 'hello', }) => {
|
|
107
|
+
const toRecipients = normalizeRecipients(to);
|
|
108
|
+
if (!toRecipients.length)
|
|
109
|
+
throw Error('[ERROR:EMAIL] No recipients provided for email.');
|
|
110
|
+
const ccRecipients = normalizeRecipients(cc);
|
|
111
|
+
const bccRecipients = normalizeRecipients(bcc);
|
|
112
|
+
const logRecipients = [...toRecipients, ...ccRecipients, ...bccRecipients];
|
|
113
|
+
const params = {
|
|
114
|
+
Destination: {
|
|
115
|
+
ToAddresses: toRecipients,
|
|
116
|
+
CcAddresses: ccRecipients.length ? ccRecipients : undefined,
|
|
117
|
+
BccAddresses: bccRecipients.length ? bccRecipients : undefined,
|
|
118
|
+
},
|
|
119
|
+
Message: {
|
|
120
|
+
Subject: { Data: subject },
|
|
121
|
+
Body: {
|
|
122
|
+
Html: { Data: content },
|
|
123
|
+
},
|
|
124
|
+
},
|
|
125
|
+
Source: `"${sender ?? 'BetterInternship'}" <${alias}@betterinternship.com>`,
|
|
126
|
+
};
|
|
127
|
+
try {
|
|
128
|
+
const command = new SendEmailCommand(params);
|
|
129
|
+
const result = await sesClient.send(command);
|
|
130
|
+
console.warn('[AWSSES] Email sent to ' + logRecipients.join(', '));
|
|
131
|
+
return {
|
|
132
|
+
messageId: result.MessageId,
|
|
133
|
+
response: 'Successfully sent via Amazon SES.',
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
catch (error) {
|
|
137
|
+
console.error('[ERROR:AWSSES] Could not send email.');
|
|
138
|
+
console.error('[-----] ' + error);
|
|
139
|
+
}
|
|
140
|
+
};
|
|
141
|
+
export const sendSingleEmail = async (params) => {
|
|
142
|
+
if (AWS_DISABLED) {
|
|
143
|
+
return await traditionalEmailRoute(params);
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
const dice = Math.random();
|
|
147
|
+
const threshold = 0;
|
|
148
|
+
if (dice < threshold) {
|
|
149
|
+
return await traditionalEmailRoute(params);
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
return await amazonEmailRoute(params);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
};
|
|
156
|
+
export const sendMultiEmail = async (params) => {
|
|
157
|
+
if (AWS_DISABLED) {
|
|
158
|
+
return await traditionalMultiEmailRoute(params);
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
const dice = Math.random();
|
|
162
|
+
const threshold = 0;
|
|
163
|
+
if (dice < threshold) {
|
|
164
|
+
return await traditionalMultiEmailRoute(params);
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
return await amazonMultiEmailRoute(params);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
};
|
|
171
171
|
//# sourceMappingURL=email.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export * from './fonts.js';
|
|
2
|
-
export * from './form.js';
|
|
1
|
+
export * from './fonts.js';
|
|
2
|
+
export * from './form.js';
|
|
3
3
|
//# sourceMappingURL=index.js.map
|
|
@@ -93,6 +93,8 @@ export interface IFormPhantomField {
|
|
|
93
93
|
prefiller?: string;
|
|
94
94
|
validator?: string;
|
|
95
95
|
validator_ir?: ValidatorIRv0 | null;
|
|
96
|
+
radio_group_id?: string;
|
|
97
|
+
radio_option_label?: string;
|
|
96
98
|
}
|
|
97
99
|
export interface IFormParameters {
|
|
98
100
|
[key: string]: string | ZodType;
|
|
@@ -181,6 +181,8 @@ export class FormMetadata {
|
|
|
181
181
|
source: field.source,
|
|
182
182
|
tooltip_label: field.tooltip_label,
|
|
183
183
|
signing_party_id: field.signing_party_id,
|
|
184
|
+
radio_group_id: field.radio_group_id,
|
|
185
|
+
radio_option_label: field.radio_option_label,
|
|
184
186
|
coerce,
|
|
185
187
|
type,
|
|
186
188
|
validator,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-metadata.js","sourceRoot":"","sources":["../../../lib/forms/form-metadata.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"form-metadata.js","sourceRoot":"","sources":["../../../lib/forms/form-metadata.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { PDFDocumentProxy } from "pdfjs-dist";
|
|
2
|
+
type BasePdfViewerProps = {
|
|
3
|
+
pdfDoc: PDFDocumentProxy;
|
|
4
|
+
pageCount: number;
|
|
5
|
+
scale: number;
|
|
6
|
+
onScaleChange: (scale: number) => void;
|
|
7
|
+
visiblePage: number;
|
|
8
|
+
onVisiblePageChange: (page: number) => void;
|
|
9
|
+
showToolbar?: boolean;
|
|
10
|
+
squareFrame?: boolean;
|
|
11
|
+
children?: React.ReactNode;
|
|
12
|
+
renderPage: (pageNumber: number) => React.ReactNode;
|
|
13
|
+
pageRefs?: React.MutableRefObject<Map<number, HTMLDivElement | null>>;
|
|
14
|
+
registerScrollContainer?: (el: HTMLElement | null) => void;
|
|
15
|
+
onFileChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;
|
|
16
|
+
onDragOver?: (e: React.DragEvent<HTMLDivElement>) => void;
|
|
17
|
+
onDragLeave?: (e: React.DragEvent<HTMLDivElement>) => void;
|
|
18
|
+
onDrop?: (e: React.DragEvent<HTMLDivElement>) => void;
|
|
19
|
+
};
|
|
20
|
+
export declare function BasePdfViewer({ pdfDoc, pageCount, scale, onScaleChange, visiblePage, onVisiblePageChange, showToolbar, squareFrame, children, renderPage, registerScrollContainer, onFileChange, pageRefs: externalPageRefs, onDragOver, onDragLeave, onDrop, }: BasePdfViewerProps): import("react").JSX.Element;
|
|
21
|
+
export {};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useCallback, useMemo, useRef } from "react";
|
|
4
|
+
import { FileUp, ZoomIn, ZoomOut } from "lucide-react";
|
|
5
|
+
const clamp = (value, min, max) => Math.min(max, Math.max(min, value));
|
|
6
|
+
export function BasePdfViewer({ pdfDoc, pageCount, scale, onScaleChange, visiblePage, onVisiblePageChange, showToolbar = true, squareFrame = false, children, renderPage, registerScrollContainer, onFileChange, pageRefs: externalPageRefs, onDragOver, onDragLeave, onDrop, }) {
|
|
7
|
+
const internalPageRefs = useRef(new Map());
|
|
8
|
+
const pageRefs = externalPageRefs ?? internalPageRefs;
|
|
9
|
+
const registerPageRef = useCallback((page, node) => {
|
|
10
|
+
pageRefs.current.set(page, node);
|
|
11
|
+
}, []);
|
|
12
|
+
const handleZoom = (direction) => {
|
|
13
|
+
const delta = direction === "in" ? 0.1 : -0.1;
|
|
14
|
+
onScaleChange(clamp(parseFloat((scale + delta).toFixed(2)), 0.5, 3));
|
|
15
|
+
};
|
|
16
|
+
const pagesArray = useMemo(() => Array.from({ length: pageCount }, (_, idx) => idx + 1), [pageCount]);
|
|
17
|
+
const handleScroll = useCallback((e) => {
|
|
18
|
+
const containerRect = e.currentTarget.getBoundingClientRect();
|
|
19
|
+
const anchorY = containerRect.top + 24;
|
|
20
|
+
let closestPage = visiblePage;
|
|
21
|
+
let closestDistance = Number.POSITIVE_INFINITY;
|
|
22
|
+
for (const page of pagesArray) {
|
|
23
|
+
const node = pageRefs.current.get(page);
|
|
24
|
+
if (!node)
|
|
25
|
+
continue;
|
|
26
|
+
const rect = node.getBoundingClientRect();
|
|
27
|
+
const distance = Math.abs(rect.top - anchorY);
|
|
28
|
+
if (distance < closestDistance) {
|
|
29
|
+
closestDistance = distance;
|
|
30
|
+
closestPage = page;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
if (closestPage !== visiblePage) {
|
|
34
|
+
onVisiblePageChange(closestPage);
|
|
35
|
+
}
|
|
36
|
+
}, [pagesArray, onVisiblePageChange, visiblePage]);
|
|
37
|
+
const containerClass = squareFrame
|
|
38
|
+
? "relative flex h-full flex-col overflow-hidden bg-slate-50"
|
|
39
|
+
: "relative flex h-full flex-col overflow-hidden rounded-[0.33em] bg-slate-50";
|
|
40
|
+
return (_jsxs("div", { className: containerClass, children: [showToolbar && (_jsx("div", { className: "relative flex h-12 flex-shrink-0 items-center border-b border-slate-300 bg-white px-3", children: _jsxs("div", { className: "flex w-full items-center justify-between gap-3", children: [_jsx("div", { className: "flex items-center gap-1", children: children }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsxs("span", { className: "text-xs font-medium text-slate-700", children: [visiblePage, "/", pageCount || 1] }), _jsxs("div", { className: "ml-1 inline-flex items-center gap-1", children: [_jsx("button", { type: "button", onClick: () => handleZoom("out"), disabled: scale <= 0.5, className: "rounded p-1.5 hover:bg-slate-100 disabled:cursor-not-allowed disabled:opacity-30", title: "Zoom out", "aria-label": "Zoom out", children: _jsx(ZoomOut, { className: "h-3.5 w-3.5" }) }), _jsx("button", { type: "button", onClick: () => handleZoom("in"), disabled: scale >= 3, className: "rounded p-1.5 hover:bg-slate-100 disabled:cursor-not-allowed disabled:opacity-30", title: "Zoom in", "aria-label": "Zoom in", children: _jsx(ZoomIn, { className: "h-3.5 w-3.5" }) })] }), _jsxs("span", { className: "w-10 text-center text-[11px] font-medium text-slate-700", children: [Math.round(scale * 100), "%"] }), onFileChange && (_jsxs("label", { className: "flex cursor-pointer items-center rounded p-1.5 text-sm transition-colors hover:bg-slate-100", title: "Upload PDF", "aria-label": "Upload PDF", children: [_jsx(FileUp, { className: "h-4 w-4" }), _jsx("input", { type: "file", accept: "application/pdf", className: "hidden", onChange: onFileChange })] }))] })] }) })), _jsx("div", { className: "relative flex-1 overflow-hidden bg-white", children: _jsx("div", { className: "flex h-full min-w-0", children: _jsx("div", { ref: registerScrollContainer, className: "relative min-w-0 flex-1 overflow-auto p-4", onScroll: handleScroll, onDragOver: onDragOver, onDragLeave: onDragLeave, onDrop: onDrop, children: _jsx("div", { className: "flex w-full flex-col items-center gap-4", children: pagesArray.map((page) => (_jsx("div", { ref: (node) => registerPageRef(page, node), children: renderPage(page) }, page))) }) }) }) })] }));
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=BasePdfViewer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BasePdfViewer.js","sourceRoot":"","sources":["../../../lib/pdf-viewer/BasePdfViewer.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
import { type IFormSigningParty } from "@betterinternship/core/forms";
|
|
3
|
+
import { type PreviewFieldLike } from "./form-previewer-model.js";
|
|
4
|
+
type PreviewPrefillMode = "live" | "dummy" | "none";
|
|
5
|
+
type DefaultFieldVisibility = "all" | "mine";
|
|
6
|
+
interface FormFillPdfViewerProps {
|
|
7
|
+
documentUrl: string;
|
|
8
|
+
values: Record<string, string>;
|
|
9
|
+
fields?: PreviewFieldLike[];
|
|
10
|
+
blocks?: PreviewFieldLike[];
|
|
11
|
+
headerLeft?: ReactNode;
|
|
12
|
+
scale?: number;
|
|
13
|
+
showToolbar?: boolean;
|
|
14
|
+
onFieldClick?: (fieldName: string) => void;
|
|
15
|
+
selectedFieldId?: string;
|
|
16
|
+
selectionTick?: number;
|
|
17
|
+
autoScrollToSelectedField?: boolean;
|
|
18
|
+
signingParties?: IFormSigningParty[];
|
|
19
|
+
currentSigningPartyId?: string;
|
|
20
|
+
showOwnership?: boolean;
|
|
21
|
+
fieldVisibility?: DefaultFieldVisibility;
|
|
22
|
+
defaultFieldVisibility?: DefaultFieldVisibility;
|
|
23
|
+
fieldErrors?: Record<string, string>;
|
|
24
|
+
prefillMode?: PreviewPrefillMode;
|
|
25
|
+
prefillUser?: Record<string, unknown> | null;
|
|
26
|
+
squareFrame?: boolean;
|
|
27
|
+
registerScrollContainer?: (el: HTMLElement | null) => void;
|
|
28
|
+
onScaleChange?: (scale: number) => void;
|
|
29
|
+
}
|
|
30
|
+
export declare const FormFillPdfViewer: ({ documentUrl, values, fields, blocks, headerLeft, scale: initialScale, showToolbar, onFieldClick, selectedFieldId, selectionTick, autoScrollToSelectedField, signingParties, currentSigningPartyId, showOwnership, fieldVisibility, defaultFieldVisibility, fieldErrors, prefillMode, prefillUser, squareFrame, registerScrollContainer, onScaleChange, }: FormFillPdfViewerProps) => import("react").JSX.Element;
|
|
31
|
+
export {};
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useEffect, useMemo, useRef, useState } from "react";
|
|
4
|
+
import { Loader } from "./loader.js";
|
|
5
|
+
import { createPreviewDisplayValueResolver, groupFieldsByPage, isFieldRequired, normalizePreviewFieldKey, normalizePreviewFields, resolveOwnerMeta, } from "./form-previewer-model.js";
|
|
6
|
+
import { ensurePreviewFontsLoaded, } from "./form-previewer-rendering.js";
|
|
7
|
+
import { usePdfDocumentFromUrl } from "./use-pdf-document.js";
|
|
8
|
+
import { BasePdfViewer } from "./BasePdfViewer.js";
|
|
9
|
+
import { PdfPageOverlay } from "./PdfPageOverlay.js";
|
|
10
|
+
const getPreviewRawValue = (values, fieldKey) => {
|
|
11
|
+
const normalizedFieldName = normalizePreviewFieldKey(fieldKey);
|
|
12
|
+
return (values[fieldKey] ?? values[`${normalizedFieldName}:default`] ?? values[normalizedFieldName]);
|
|
13
|
+
};
|
|
14
|
+
const getFieldStatus = (fieldType, value) => {
|
|
15
|
+
if (!value.trim())
|
|
16
|
+
return "empty";
|
|
17
|
+
if (fieldType === "signature")
|
|
18
|
+
return "signed";
|
|
19
|
+
return "filled";
|
|
20
|
+
};
|
|
21
|
+
export const FormFillPdfViewer = ({ documentUrl, values, fields, blocks, headerLeft, scale: initialScale = 1.0, showToolbar = true, onFieldClick, selectedFieldId, selectionTick = 0, autoScrollToSelectedField = true, signingParties = [], currentSigningPartyId, showOwnership = false, fieldVisibility, defaultFieldVisibility = "mine", fieldErrors = {}, prefillMode = "live", prefillUser = null, squareFrame = false, registerScrollContainer, onScaleChange, }) => {
|
|
22
|
+
const { pdfDoc, pageCount, isLoading: isLoadingDoc, error } = usePdfDocumentFromUrl(documentUrl);
|
|
23
|
+
const [scale, setScale] = useState(initialScale);
|
|
24
|
+
const [visiblePage, setVisiblePage] = useState(1);
|
|
25
|
+
const [animatingFieldId, setAnimatingFieldId] = useState(null);
|
|
26
|
+
const pageRefs = useRef(new Map());
|
|
27
|
+
const didAutoFocusOwnedTaskRef = useRef(false);
|
|
28
|
+
const normalizedFields = useMemo(() => normalizePreviewFields(fields?.length ? fields : (blocks ?? [])), [fields, blocks]);
|
|
29
|
+
const resolveDisplayValue = useMemo(() => createPreviewDisplayValueResolver({
|
|
30
|
+
user: prefillUser,
|
|
31
|
+
prefillMode,
|
|
32
|
+
}), [prefillMode, prefillUser]);
|
|
33
|
+
const effectiveFieldVisibility = fieldVisibility ?? defaultFieldVisibility;
|
|
34
|
+
const ownerMetaByFieldId = useMemo(() => {
|
|
35
|
+
const ownerMetaMap = new Map();
|
|
36
|
+
normalizedFields.forEach((field) => {
|
|
37
|
+
ownerMetaMap.set(field.id, resolveOwnerMeta(field, signingParties, currentSigningPartyId));
|
|
38
|
+
});
|
|
39
|
+
return ownerMetaMap;
|
|
40
|
+
}, [normalizedFields, signingParties, currentSigningPartyId]);
|
|
41
|
+
const ownedFields = useMemo(() => normalizedFields.filter((field) => ownerMetaByFieldId.get(field.id)?.isMine), [normalizedFields, ownerMetaByFieldId]);
|
|
42
|
+
const visibleFields = useMemo(() => {
|
|
43
|
+
if (effectiveFieldVisibility !== "mine")
|
|
44
|
+
return normalizedFields;
|
|
45
|
+
if (!currentSigningPartyId)
|
|
46
|
+
return normalizedFields;
|
|
47
|
+
return normalizedFields.filter((field) => ownerMetaByFieldId.get(field.id)?.isMine);
|
|
48
|
+
}, [normalizedFields, effectiveFieldVisibility, currentSigningPartyId, ownerMetaByFieldId]);
|
|
49
|
+
const fieldsByPage = useMemo(() => groupFieldsByPage(visibleFields), [visibleFields]);
|
|
50
|
+
useEffect(() => {
|
|
51
|
+
setScale(initialScale);
|
|
52
|
+
}, [initialScale]);
|
|
53
|
+
useEffect(() => {
|
|
54
|
+
onScaleChange?.(scale);
|
|
55
|
+
}, [scale, onScaleChange]);
|
|
56
|
+
useEffect(() => {
|
|
57
|
+
didAutoFocusOwnedTaskRef.current = false;
|
|
58
|
+
}, [documentUrl]);
|
|
59
|
+
useEffect(() => {
|
|
60
|
+
if (!showOwnership)
|
|
61
|
+
return;
|
|
62
|
+
if (ownedFields.length === 0)
|
|
63
|
+
return;
|
|
64
|
+
if (didAutoFocusOwnedTaskRef.current)
|
|
65
|
+
return;
|
|
66
|
+
const firstEmptyRequiredOwnedField = ownedFields.find((field) => {
|
|
67
|
+
if (!isFieldRequired(field))
|
|
68
|
+
return false;
|
|
69
|
+
const rawValue = getPreviewRawValue(values, field.field);
|
|
70
|
+
const value = resolveDisplayValue(field, rawValue);
|
|
71
|
+
return getFieldStatus(field.type, value) === "empty";
|
|
72
|
+
});
|
|
73
|
+
if (firstEmptyRequiredOwnedField) {
|
|
74
|
+
const pageNode = pageRefs.current.get(firstEmptyRequiredOwnedField.page);
|
|
75
|
+
pageNode?.scrollIntoView({ behavior: "smooth", block: "center" });
|
|
76
|
+
setAnimatingFieldId(firstEmptyRequiredOwnedField.field);
|
|
77
|
+
setTimeout(() => setAnimatingFieldId(null), 700);
|
|
78
|
+
}
|
|
79
|
+
didAutoFocusOwnedTaskRef.current = true;
|
|
80
|
+
}, [showOwnership, ownedFields, resolveDisplayValue, values]);
|
|
81
|
+
useEffect(() => {
|
|
82
|
+
if (!selectedFieldId)
|
|
83
|
+
return;
|
|
84
|
+
if (autoScrollToSelectedField) {
|
|
85
|
+
const selectedField = normalizedFields.find((field) => field.field === selectedFieldId);
|
|
86
|
+
if (selectedField && selectedField.page) {
|
|
87
|
+
const fieldPage = selectedField.page;
|
|
88
|
+
const pageNode = pageRefs.current.get(fieldPage);
|
|
89
|
+
pageNode?.scrollIntoView({ behavior: "smooth", block: "center" });
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
setAnimatingFieldId(selectedFieldId);
|
|
93
|
+
const timeout = setTimeout(() => setAnimatingFieldId(null), 600);
|
|
94
|
+
return () => clearTimeout(timeout);
|
|
95
|
+
}, [selectedFieldId, selectionTick, normalizedFields, autoScrollToSelectedField]);
|
|
96
|
+
useEffect(() => {
|
|
97
|
+
ensurePreviewFontsLoaded();
|
|
98
|
+
}, []);
|
|
99
|
+
if (error) {
|
|
100
|
+
return (_jsx("div", { className: "flex h-full w-full items-center justify-center bg-slate-100", children: _jsxs("div", { className: "text-center", children: [_jsx("p", { className: "text-sm text-red-500", children: "Failed to load PDF" }), _jsx("p", { className: "mt-1 text-xs text-slate-400", children: error })] }) }));
|
|
101
|
+
}
|
|
102
|
+
if (isLoadingDoc || !pdfDoc) {
|
|
103
|
+
return (_jsx("div", { className: "flex h-full w-full items-center justify-center bg-slate-100", children: _jsx(Loader, {}) }));
|
|
104
|
+
}
|
|
105
|
+
return (_jsx(BasePdfViewer, { pdfDoc: pdfDoc, pageCount: pageCount, scale: scale, visiblePage: visiblePage, onVisiblePageChange: setVisiblePage, onScaleChange: (s) => { setScale(s); onScaleChange?.(s); }, showToolbar: showToolbar, squareFrame: squareFrame, registerScrollContainer: registerScrollContainer, pageRefs: pageRefs, renderPage: (pageNumber) => (_jsx(PdfPageOverlay, { pdf: pdfDoc, pageNumber: pageNumber, scale: scale, fields: fieldsByPage.get(pageNumber) || [], values: values, onFieldClick: onFieldClick, animatingFieldId: animatingFieldId, selectedFieldId: selectedFieldId, ownerMetaByFieldId: ownerMetaByFieldId, showOwnership: showOwnership, fieldVisibility: effectiveFieldVisibility, fieldErrors: fieldErrors, resolveDisplayValue: resolveDisplayValue }, pageNumber)), children: headerLeft }));
|
|
106
|
+
};
|
|
107
|
+
//# sourceMappingURL=FormFillPdfViewer.js.map
|