mirror of
https://github.com/documenso/documenso.git
synced 2026-07-02 17:20:44 +10:00
133 lines
6.5 KiB
TypeScript
133 lines
6.5 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,
|
|
allowConfigureReminders:
|
|
features.settings?.allowConfigureReminders ??
|
|
DEFAULT_EMBEDDED_EDITOR_CONFIG.settings.allowConfigureReminders,
|
|
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,
|
|
},
|
|
};
|
|
};
|