mirror of
https://github.com/documenso/documenso
synced 2026-04-21 13:27:18 +00:00
154 lines
6.6 KiB
TypeScript
154 lines
6.6 KiB
TypeScript
import type { EnvelopeEditorConfig } from '../types/envelope-editor';
|
|
import { DEFAULT_EMBEDDED_EDITOR_CONFIG } from '../types/envelope-editor';
|
|
|
|
export const PRESIGNED_ENVELOPE_ITEM_ID_PREFIX = 'PRESIGNED_';
|
|
|
|
export type DeepPartial<T> = T extends object ? { [K in keyof T]?: DeepPartial<T[K]> } : T;
|
|
|
|
/**
|
|
* Takes parsed `features` from the embedding hash and an `embedded` config,
|
|
* and produces a complete `EnvelopeEditorConfig` with sensible embedded-mode defaults.
|
|
*
|
|
* Any explicitly provided feature flag overrides the embedded default.
|
|
*/
|
|
export function buildEmbeddedEditorOptions(
|
|
features: DeepPartial<EnvelopeEditorConfig>,
|
|
embedded: EnvelopeEditorConfig['embedded'],
|
|
): EnvelopeEditorConfig {
|
|
return {
|
|
embedded,
|
|
...buildEmbeddedFeatures(features),
|
|
};
|
|
}
|
|
|
|
export const buildEmbeddedFeatures = (
|
|
features: DeepPartial<EnvelopeEditorConfig>,
|
|
): EnvelopeEditorConfig => {
|
|
return {
|
|
general: {
|
|
allowConfigureEnvelopeTitle:
|
|
features.general?.allowConfigureEnvelopeTitle ??
|
|
DEFAULT_EMBEDDED_EDITOR_CONFIG.general.allowConfigureEnvelopeTitle,
|
|
allowUploadAndRecipientStep:
|
|
features.general?.allowUploadAndRecipientStep ??
|
|
DEFAULT_EMBEDDED_EDITOR_CONFIG.general.allowUploadAndRecipientStep,
|
|
allowAddFieldsStep:
|
|
features.general?.allowAddFieldsStep ??
|
|
DEFAULT_EMBEDDED_EDITOR_CONFIG.general.allowAddFieldsStep,
|
|
allowPreviewStep:
|
|
features.general?.allowPreviewStep ??
|
|
DEFAULT_EMBEDDED_EDITOR_CONFIG.general.allowPreviewStep,
|
|
minimizeLeftSidebar:
|
|
features.general?.minimizeLeftSidebar ??
|
|
DEFAULT_EMBEDDED_EDITOR_CONFIG.general.minimizeLeftSidebar,
|
|
},
|
|
|
|
settings:
|
|
features.settings !== null
|
|
? {
|
|
allowConfigureSignatureTypes:
|
|
features.settings?.allowConfigureSignatureTypes ??
|
|
DEFAULT_EMBEDDED_EDITOR_CONFIG.settings.allowConfigureSignatureTypes,
|
|
allowConfigureLanguage:
|
|
features.settings?.allowConfigureLanguage ??
|
|
DEFAULT_EMBEDDED_EDITOR_CONFIG.settings.allowConfigureLanguage,
|
|
allowConfigureDateFormat:
|
|
features.settings?.allowConfigureDateFormat ??
|
|
DEFAULT_EMBEDDED_EDITOR_CONFIG.settings.allowConfigureDateFormat,
|
|
allowConfigureTimezone:
|
|
features.settings?.allowConfigureTimezone ??
|
|
DEFAULT_EMBEDDED_EDITOR_CONFIG.settings.allowConfigureTimezone,
|
|
allowConfigureRedirectUrl:
|
|
features.settings?.allowConfigureRedirectUrl ??
|
|
DEFAULT_EMBEDDED_EDITOR_CONFIG.settings.allowConfigureRedirectUrl,
|
|
allowConfigureDistribution:
|
|
features.settings?.allowConfigureDistribution ??
|
|
DEFAULT_EMBEDDED_EDITOR_CONFIG.settings.allowConfigureDistribution,
|
|
allowConfigureExpirationPeriod:
|
|
features.settings?.allowConfigureExpirationPeriod ??
|
|
DEFAULT_EMBEDDED_EDITOR_CONFIG.settings.allowConfigureExpirationPeriod,
|
|
allowConfigureEmailSender:
|
|
features.settings?.allowConfigureEmailSender ??
|
|
DEFAULT_EMBEDDED_EDITOR_CONFIG.settings.allowConfigureEmailSender,
|
|
allowConfigureEmailReplyTo:
|
|
features.settings?.allowConfigureEmailReplyTo ??
|
|
DEFAULT_EMBEDDED_EDITOR_CONFIG.settings.allowConfigureEmailReplyTo,
|
|
}
|
|
: null,
|
|
|
|
actions: {
|
|
allowAttachments:
|
|
features.actions?.allowAttachments ??
|
|
DEFAULT_EMBEDDED_EDITOR_CONFIG.actions.allowAttachments,
|
|
allowDistributing:
|
|
features.actions?.allowDistributing ??
|
|
DEFAULT_EMBEDDED_EDITOR_CONFIG.actions.allowDistributing,
|
|
allowDirectLink:
|
|
features.actions?.allowDirectLink ?? DEFAULT_EMBEDDED_EDITOR_CONFIG.actions.allowDirectLink,
|
|
allowDuplication:
|
|
features.actions?.allowDuplication ??
|
|
DEFAULT_EMBEDDED_EDITOR_CONFIG.actions.allowDuplication,
|
|
allowSaveAsTemplate:
|
|
features.actions?.allowSaveAsTemplate ??
|
|
DEFAULT_EMBEDDED_EDITOR_CONFIG.actions.allowSaveAsTemplate,
|
|
allowDownloadPDF:
|
|
features.actions?.allowDownloadPDF ??
|
|
DEFAULT_EMBEDDED_EDITOR_CONFIG.actions.allowDownloadPDF,
|
|
allowDeletion:
|
|
features.actions?.allowDeletion ?? DEFAULT_EMBEDDED_EDITOR_CONFIG.actions.allowDeletion,
|
|
},
|
|
|
|
envelopeItems:
|
|
features.envelopeItems !== null
|
|
? {
|
|
allowConfigureTitle:
|
|
features.envelopeItems?.allowConfigureTitle ??
|
|
DEFAULT_EMBEDDED_EDITOR_CONFIG.envelopeItems.allowConfigureTitle,
|
|
allowConfigureOrder:
|
|
features.envelopeItems?.allowConfigureOrder ??
|
|
DEFAULT_EMBEDDED_EDITOR_CONFIG.envelopeItems.allowConfigureOrder,
|
|
allowUpload:
|
|
features.envelopeItems?.allowUpload ??
|
|
DEFAULT_EMBEDDED_EDITOR_CONFIG.envelopeItems.allowUpload,
|
|
allowDelete:
|
|
features.envelopeItems?.allowDelete ??
|
|
DEFAULT_EMBEDDED_EDITOR_CONFIG.envelopeItems.allowDelete,
|
|
allowReplace:
|
|
features.envelopeItems?.allowReplace ??
|
|
DEFAULT_EMBEDDED_EDITOR_CONFIG.envelopeItems.allowReplace,
|
|
}
|
|
: null,
|
|
|
|
recipients:
|
|
features.recipients !== null
|
|
? {
|
|
allowAIDetection:
|
|
features.recipients?.allowAIDetection ??
|
|
DEFAULT_EMBEDDED_EDITOR_CONFIG.recipients.allowAIDetection,
|
|
allowConfigureSigningOrder:
|
|
features.recipients?.allowConfigureSigningOrder ??
|
|
DEFAULT_EMBEDDED_EDITOR_CONFIG.recipients.allowConfigureSigningOrder,
|
|
allowConfigureDictateNextSigner:
|
|
features.recipients?.allowConfigureDictateNextSigner ??
|
|
DEFAULT_EMBEDDED_EDITOR_CONFIG.recipients.allowConfigureDictateNextSigner,
|
|
allowApproverRole:
|
|
features.recipients?.allowApproverRole ??
|
|
DEFAULT_EMBEDDED_EDITOR_CONFIG.recipients.allowApproverRole,
|
|
allowViewerRole:
|
|
features.recipients?.allowViewerRole ??
|
|
DEFAULT_EMBEDDED_EDITOR_CONFIG.recipients.allowViewerRole,
|
|
allowCCerRole:
|
|
features.recipients?.allowCCerRole ??
|
|
DEFAULT_EMBEDDED_EDITOR_CONFIG.recipients.allowCCerRole,
|
|
allowAssistantRole:
|
|
features.recipients?.allowAssistantRole ??
|
|
DEFAULT_EMBEDDED_EDITOR_CONFIG.recipients.allowAssistantRole,
|
|
}
|
|
: null,
|
|
|
|
fields: {
|
|
allowAIDetection:
|
|
features.fields?.allowAIDetection ?? DEFAULT_EMBEDDED_EDITOR_CONFIG.fields.allowAIDetection,
|
|
},
|
|
};
|
|
};
|