@10x-media/form-builder 0.1.0-beta.6 → 0.1.0-beta.7

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 (167) hide show
  1. package/CHANGELOG.md +73 -0
  2. package/dist/actions/buildActionBlocks.js +12 -9
  3. package/dist/actions/buildActionBlocks.js.map +1 -1
  4. package/dist/actions/builtin/confirmation.js +13 -68
  5. package/dist/actions/builtin/confirmation.js.map +1 -1
  6. package/dist/actions/builtin/emailAction.d.ts +17 -0
  7. package/dist/actions/builtin/emailAction.js +83 -0
  8. package/dist/actions/builtin/emailAction.js.map +1 -0
  9. package/dist/actions/builtin/emailTeam.js +14 -74
  10. package/dist/actions/builtin/emailTeam.js.map +1 -1
  11. package/dist/actions/builtin/index.d.ts +9 -12
  12. package/dist/actions/builtin/index.js +11 -11
  13. package/dist/actions/builtin/index.js.map +1 -1
  14. package/dist/actions/defineAction.d.ts +2 -2
  15. package/dist/actions/defineAction.js.map +1 -1
  16. package/dist/actions/emailRecipients.js +75 -31
  17. package/dist/actions/emailRecipients.js.map +1 -1
  18. package/dist/actions/registry.d.ts +2 -1
  19. package/dist/actions/registry.js +2 -6
  20. package/dist/actions/registry.js.map +1 -1
  21. package/dist/actions/task.js +5 -3
  22. package/dist/actions/task.js.map +1 -1
  23. package/dist/calc/evaluate.js +1 -2
  24. package/dist/calc/evaluate.js.map +1 -1
  25. package/dist/calc/normalizeCalc.js +1 -2
  26. package/dist/calc/normalizeCalc.js.map +1 -1
  27. package/dist/calc/types.js.map +1 -1
  28. package/dist/collections/buttonFields.js +1 -1
  29. package/dist/collections/formSubmissions.js +2 -1
  30. package/dist/collections/formSubmissions.js.map +1 -1
  31. package/dist/collections/forms.js +30 -99
  32. package/dist/collections/forms.js.map +1 -1
  33. package/dist/collections/formsEndpoints.js +101 -0
  34. package/dist/collections/formsEndpoints.js.map +1 -0
  35. package/dist/conditions/evaluate.js +1 -1
  36. package/dist/conditions/evaluate.js.map +1 -1
  37. package/dist/conditions/fieldTypes.d.ts +3 -1
  38. package/dist/conditions/fieldTypes.js +4 -1
  39. package/dist/conditions/fieldTypes.js.map +1 -1
  40. package/dist/conditions/normalizeConditions.js +18 -5
  41. package/dist/conditions/normalizeConditions.js.map +1 -1
  42. package/dist/consent/captureConsent.d.ts +7 -0
  43. package/dist/consent/captureConsent.js +7 -0
  44. package/dist/consent/captureConsent.js.map +1 -1
  45. package/dist/consent/consentSourcesField.d.ts +4 -0
  46. package/dist/consent/consentSourcesField.js +5 -1
  47. package/dist/consent/consentSourcesField.js.map +1 -1
  48. package/dist/consent/resolveConsentEntries.d.ts +1 -1
  49. package/dist/consent/resolveConsentEntries.js +1 -4
  50. package/dist/consent/resolveConsentEntries.js.map +1 -1
  51. package/dist/consent/resolveConsentSourcesRequest.js +0 -1
  52. package/dist/consent/resolveConsentSourcesRequest.js.map +1 -1
  53. package/dist/consent/resolveConsentStatements.d.ts +1 -1
  54. package/dist/consent/resolveConsentStatements.js.map +1 -1
  55. package/dist/consent/types.d.ts +9 -1
  56. package/dist/email/departmentsField.js +1 -1
  57. package/dist/exports/react.d.ts +3 -2
  58. package/dist/exports/react.js +3 -2
  59. package/dist/exports/rsc.js +1 -1
  60. package/dist/exports/types.d.ts +1 -1
  61. package/dist/fields/builtin/email.js +1 -1
  62. package/dist/fields/builtin/email.js.map +1 -1
  63. package/dist/fields/builtin/message.js +1 -1
  64. package/dist/fields/builtin/repeater.js +1 -1
  65. package/dist/fields/builtin/select.js +1 -1
  66. package/dist/fields/registry.d.ts +2 -1
  67. package/dist/fields/registry.js +2 -6
  68. package/dist/fields/registry.js.map +1 -1
  69. package/dist/fields/sharedConfig.js +1 -1
  70. package/dist/flow/normalizeFlow.js +7 -3
  71. package/dist/flow/normalizeFlow.js.map +1 -1
  72. package/dist/index.d.ts +4 -201
  73. package/dist/index.js +11 -4
  74. package/dist/index.js.map +1 -1
  75. package/dist/options.d.ts +228 -0
  76. package/dist/plugin/applyRegistryConfig.d.ts +11 -0
  77. package/dist/plugin/applyRegistryConfig.js +20 -0
  78. package/dist/plugin/applyRegistryConfig.js.map +1 -0
  79. package/dist/plugin/registerCollections.js +2 -1
  80. package/dist/plugin/registerCollections.js.map +1 -1
  81. package/dist/poll/buildPollOptionSourceFields.js +2 -2
  82. package/dist/poll/buildPollOptionSourceFields.js.map +1 -1
  83. package/dist/poll/definePollOptionSource.d.ts +2 -2
  84. package/dist/poll/definePollOptionSource.js.map +1 -1
  85. package/dist/poll/pollTypeRegistry.js +2 -4
  86. package/dist/poll/pollTypeRegistry.js.map +1 -1
  87. package/dist/poll/registry.d.ts +2 -1
  88. package/dist/poll/registry.js +2 -6
  89. package/dist/poll/registry.js.map +1 -1
  90. package/dist/poll/resolvePollOptionsRequest.js +0 -1
  91. package/dist/poll/resolvePollOptionsRequest.js.map +1 -1
  92. package/dist/prefill/valuesFromSearchParams.js +2 -7
  93. package/dist/prefill/valuesFromSearchParams.js.map +1 -1
  94. package/dist/react/Form.d.ts +3 -1
  95. package/dist/react/Form.js +93 -155
  96. package/dist/react/Form.js.map +1 -1
  97. package/dist/react/FormContext.d.ts +5 -1
  98. package/dist/react/FormContext.js.map +1 -1
  99. package/dist/react/FormFields.d.ts +18 -0
  100. package/dist/react/FormFields.js +114 -0
  101. package/dist/react/FormFields.js.map +1 -0
  102. package/dist/react/FormLayout.d.ts +4 -2
  103. package/dist/react/FormLayout.js +3 -2
  104. package/dist/react/FormLayout.js.map +1 -1
  105. package/dist/react/Poll.js +13 -3
  106. package/dist/react/Poll.js.map +1 -1
  107. package/dist/react/presentation/DialogSurface.js +1 -4
  108. package/dist/react/presentation/DialogSurface.js.map +1 -1
  109. package/dist/react/renderers/calculation.js +1 -3
  110. package/dist/react/renderers/calculation.js.map +1 -1
  111. package/dist/react/renderers/checkbox.js +1 -3
  112. package/dist/react/renderers/checkbox.js.map +1 -1
  113. package/dist/react/renderers/consent.js +2 -3
  114. package/dist/react/renderers/consent.js.map +1 -1
  115. package/dist/react/renderers/date.js +1 -3
  116. package/dist/react/renderers/date.js.map +1 -1
  117. package/dist/react/renderers/email.js +1 -3
  118. package/dist/react/renderers/email.js.map +1 -1
  119. package/dist/react/renderers/file.js +6 -7
  120. package/dist/react/renderers/file.js.map +1 -1
  121. package/dist/react/renderers/number.js +1 -3
  122. package/dist/react/renderers/number.js.map +1 -1
  123. package/dist/react/renderers/region.js +1 -3
  124. package/dist/react/renderers/region.js.map +1 -1
  125. package/dist/react/renderers/repeater.js +20 -4
  126. package/dist/react/renderers/repeater.js.map +1 -1
  127. package/dist/react/renderers/select.js +1 -3
  128. package/dist/react/renderers/select.js.map +1 -1
  129. package/dist/react/renderers/text.js +1 -3
  130. package/dist/react/renderers/text.js.map +1 -1
  131. package/dist/react/renderers/textarea.js +1 -3
  132. package/dist/react/renderers/textarea.js.map +1 -1
  133. package/dist/spam/constants.js +7 -1
  134. package/dist/spam/constants.js.map +1 -1
  135. package/dist/spam/resolveSpam.js +2 -1
  136. package/dist/spam/resolveSpam.js.map +1 -1
  137. package/dist/spam/spamGuard.js +22 -6
  138. package/dist/spam/spamGuard.js.map +1 -1
  139. package/dist/spam/types.d.ts +17 -2
  140. package/dist/submissions/coerceBoolean.js +14 -0
  141. package/dist/submissions/coerceBoolean.js.map +1 -0
  142. package/dist/submissions/runSubmission.js +7 -7
  143. package/dist/submissions/runSubmission.js.map +1 -1
  144. package/dist/submissions/validateSubmission.js +3 -2
  145. package/dist/submissions/validateSubmission.js.map +1 -1
  146. package/dist/translations/de.js +10 -0
  147. package/dist/translations/de.js.map +1 -1
  148. package/dist/translations/en.js +10 -0
  149. package/dist/translations/en.js.map +1 -1
  150. package/dist/translations/keys.d.ts +10 -0
  151. package/dist/translations/keys.js +10 -0
  152. package/dist/translations/keys.js.map +1 -1
  153. package/dist/translations/server.js +8 -1
  154. package/dist/translations/server.js.map +1 -1
  155. package/dist/uploads/captureFileRef.d.ts +10 -3
  156. package/dist/uploads/captureFileRef.js +18 -9
  157. package/dist/uploads/captureFileRef.js.map +1 -1
  158. package/dist/validation/builtin/email.js +1 -1
  159. package/dist/validation/builtin/email.js.map +1 -1
  160. package/dist/validation/builtin/notAlreadySubmitted.js +1 -0
  161. package/dist/validation/builtin/notAlreadySubmitted.js.map +1 -1
  162. package/dist/validation/emailPattern.js +10 -0
  163. package/dist/validation/emailPattern.js.map +1 -0
  164. package/dist/validation/registry.d.ts +2 -1
  165. package/dist/validation/registry.js +2 -9
  166. package/dist/validation/registry.js.map +1 -1
  167. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"validateSubmission.js","names":[],"sources":["../../src/submissions/validateSubmission.ts"],"sourcesContent":["import { APIError, type CollectionBeforeValidateHook, ValidationError } from 'payload'\nimport { FORM_SUBMISSIONS_SLUG } from '../collections/formSubmissions'\nimport { FORMS_SLUG } from '../collections/forms'\nimport type { ConsentSnapshotMode } from '../consent/captureConsent'\nimport { resolveConsentEntries } from '../consent/resolveConsentEntries'\nimport type { ConsentSourceEntry, ConsentSourcesResolver } from '../consent/types'\nimport type { FieldTypeRegistry } from '../fields/registry'\nimport { isPollClosed, pollConfigOf } from '../form/pollState'\nimport { applyPollOptions } from '../poll/applyPollOptions'\nimport type { PollOption } from '../poll/definePollOptionSource'\nimport { resolveEffectivePollOptions } from '../poll/effectivePollOptions'\nimport type { PollOptionSourceRegistry } from '../poll/registry'\nimport { IDENTITY_CONTEXT_KEY } from '../spam/constants'\nimport { keys } from '../translations/keys'\nimport { asFieldTranslate, asTranslate } from '../translations/server'\nimport type { ValidationRuleRegistry } from '../validation/registry'\nimport { runSubmission } from './runSubmission'\nimport type { FormFieldInstance, SubmissionValue } from './types'\nimport { POLL_CONTEXT_KEY } from './votedCookie'\n\nexport type ValidateSubmissionArgs = {\n\tregistry: FieldTypeRegistry\n\truleRegistry: ValidationRuleRegistry\n\t/** The host's consent sources resolver (plugin option `consent.sources`); absent when no sources are configured. */\n\tconsentSources?: ConsentSourcesResolver\n\t/** What each consent proof snapshots of the agreed wording (plugin option `consent.snapshot`). */\n\tconsentSnapshot?: ConsentSnapshotMode\n\t/** The plugin-configured uploads collection slug; absent when uploads are disabled. */\n\tuploadSlug?: string\n\t/** Registered poll option sources; a form's configured `optionSource` resolves through this at validation time. */\n\tpollSourceRegistry?: PollOptionSourceRegistry\n}\n\n/**\n * Server-authoritative submission validation. On create it loads the referenced form, re-runs every\n * field's required check, intrinsic validator, and declarative rules through `runSubmission`, threading\n * `req`/`payload` so server-only async rules can hit the DB, and throws a Payload `ValidationError` with\n * per-field paths on any failure. The client is never trusted.\n * Consent fields are captured into `result.consent` (array of proofs, one per visible consent field),\n * built from the host's sources re-resolved here rather than from anything the form or client carries.\n */\nexport const validateSubmission =\n\t({\n\t\tregistry,\n\t\truleRegistry,\n\t\tconsentSources,\n\t\tconsentSnapshot,\n\t\tuploadSlug,\n\t\tpollSourceRegistry,\n\t}: ValidateSubmissionArgs): CollectionBeforeValidateHook =>\n\tasync ({ data, operation, req }) => {\n\t\tif (operation !== 'create' || !data) {\n\t\t\treturn data\n\t\t}\n\t\tconst formId = data.form\n\t\tif (formId == null) {\n\t\t\treturn data\n\t\t}\n\n\t\tconst form = await req.payload.findByID({\n\t\t\tcollection: FORMS_SLUG,\n\t\t\tid: formId as string | number,\n\t\t\tdepth: 0,\n\t\t\tlocale: req.locale,\n\t\t\treq,\n\t\t})\n\n\t\t// Stash whether the form is poll-enabled (its top-level `pollEnabled` flag) so the voted-cookie\n\t\t// afterChange hook can skip a second form fetch on the same request.\n\t\tconst poll = pollConfigOf(form.poll)\n\t\tconst pollEnabled = form.pollEnabled === true\n\t\treq.context[POLL_CONTEXT_KEY] = pollEnabled\n\n\t\t// Form-level lifecycle guard, before any field work: a closed poll accepts no submissions,\n\t\t// regardless of what the client rendered.\n\t\tif (pollEnabled && isPollClosed(poll)) {\n\t\t\tthrow new APIError(asTranslate(req.i18n.t)(keys.pollClosed), 403)\n\t\t}\n\n\t\tlet fields = ((form.fields as FormFieldInstance[] | undefined) ?? []) as FormFieldInstance[]\n\t\tconst incoming = ((data.values as SubmissionValue[] | undefined) ?? []) as SubmissionValue[]\n\t\tconst locale = req.locale ?? 'en'\n\t\tconst t = asFieldTranslate(req.i18n.t)\n\n\t\t// With a resolved choice set for the results field (a poll `optionSource`, or the field type's\n\t\t// own `resolveOptions`) the resolved values are the only accepted answers: options are injected\n\t\t// into the field instance (so the select's membership check and the stored option labels use\n\t\t// them) and membership is also enforced directly, so an empty resolution or a non-select results\n\t\t// field still fails closed. A resolve failure rejects the whole submission rather than skipping\n\t\t// the check. Static authored polls are unaffected: their field validates against its own options\n\t\t// through the normal field pipeline.\n\t\tconst resultsField =\n\t\t\tpollEnabled && typeof poll?.resultsField === 'string' && poll.resultsField.length > 0\n\t\t\t\t? poll.resultsField\n\t\t\t\t: undefined\n\t\tconst resultsInstance = resultsField\n\t\t\t? fields.find((instance) => instance.name === resultsField)\n\t\t\t: undefined\n\t\tconst usesResolver =\n\t\t\t(typeof poll?.optionSource === 'string' && poll.optionSource.length > 0) ||\n\t\t\tBoolean(resultsInstance && registry.get(resultsInstance.blockType)?.resolveOptions)\n\t\tif (resultsField && usesResolver) {\n\t\t\tlet resolved: PollOption[]\n\t\t\ttry {\n\t\t\t\tresolved = await resolveEffectivePollOptions({\n\t\t\t\t\tpayload: req.payload,\n\t\t\t\t\treq,\n\t\t\t\t\tform,\n\t\t\t\t\tsources: pollSourceRegistry ?? new Map(),\n\t\t\t\t\tfieldTypes: registry,\n\t\t\t\t})\n\t\t\t} catch {\n\t\t\t\tthrow new APIError(asTranslate(req.i18n.t)(keys.pollOptionsUnavailable), 503)\n\t\t\t}\n\t\t\tfields = applyPollOptions(fields, resultsField, resolved)\n\t\t\tconst answer = incoming.find((entry) => entry.field === resultsField)?.value\n\t\t\tconst isAnswered = answer != null && answer !== ''\n\t\t\tif (isAnswered && !resolved.some((option) => option.value === answer)) {\n\t\t\t\tthrow new ValidationError(\n\t\t\t\t\t{\n\t\t\t\t\t\tcollection: FORM_SUBMISSIONS_SLUG,\n\t\t\t\t\t\terrors: [\n\t\t\t\t\t\t\t{ path: resultsField, message: asTranslate(req.i18n.t)(keys.validationSelect) },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\treq.t\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\t\tconst expectedOwner =\n\t\t\ttypeof req.context?.[IDENTITY_CONTEXT_KEY] === 'string'\n\t\t\t\t? (req.context[IDENTITY_CONTEXT_KEY] as string)\n\t\t\t\t: undefined\n\n\t\t// Every consent proof is built from the source as it reads right now, not from anything the\n\t\t// form or the client carries, so a resolver failure rejects the submission rather than\n\t\t// recording an agreement to a statement the server cannot vouch for.\n\t\tlet consentEntries: ConsentSourceEntry[] = []\n\t\tif (consentSources && fields.some((field) => field.blockType === 'consent')) {\n\t\t\ttry {\n\t\t\t\tconsentEntries = await resolveConsentEntries({\n\t\t\t\t\tpayload: req.payload,\n\t\t\t\t\treq,\n\t\t\t\t\tform,\n\t\t\t\t\tsources: consentSources,\n\t\t\t\t})\n\t\t\t} catch {\n\t\t\t\tthrow new APIError(asTranslate(req.i18n.t)(keys.consentSourcesUnavailable), 503)\n\t\t\t}\n\t\t}\n\n\t\tconst result = await runSubmission({\n\t\t\tfields,\n\t\t\tvalues: incoming,\n\t\t\tregistry,\n\t\t\truleRegistry,\n\t\t\tconsentEntries,\n\t\t\tconsentSnapshot,\n\t\t\tlocale,\n\t\t\tt,\n\t\t\toperation: 'create',\n\t\t\treq,\n\t\t\tpayload: req.payload,\n\t\t\tformId: formId as number | string,\n\t\t\tuploadSlug,\n\t\t\texpectedOwner,\n\t\t})\n\n\t\tif (result.errors.length > 0) {\n\t\t\tthrow new ValidationError({ collection: FORM_SUBMISSIONS_SLUG, errors: result.errors }, req.t)\n\t\t}\n\n\t\tdata.values = result.values\n\t\tdata.descriptors = result.descriptors\n\t\tdata.consent = result.consent.length > 0 ? result.consent : undefined\n\t\tdata.locale = locale\n\t\t// Unauthenticated submits are always 'complete'. A client-supplied 'partial' would\n\t\t// silently skip all post-submit actions and events. Authenticated callers (e.g. an\n\t\t// admin draft-save flow) may set status themselves.\n\t\tif (!req.user) {\n\t\t\tdata.status = 'complete'\n\t\t}\n\t\treturn data\n\t}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAyCA,MAAa,sBACX,EACA,UACA,cACA,gBACA,iBACA,YACA,yBAED,OAAO,EAAE,MAAM,WAAW,UAAU;CACnC,IAAI,cAAc,YAAY,CAAC,MAC9B,OAAO;CAER,MAAM,SAAS,KAAK;CACpB,IAAI,UAAU,MACb,OAAO;CAGR,MAAM,OAAO,MAAM,IAAI,QAAQ,SAAS;EACvC,YAAY;EACZ,IAAI;EACJ,OAAO;EACP,QAAQ,IAAI;EACZ;CACD,CAAC;CAID,MAAM,OAAO,aAAa,KAAK,IAAI;CACnC,MAAM,cAAc,KAAK,gBAAgB;CACzC,IAAI,QAAQ,oBAAoB;CAIhC,IAAI,eAAe,aAAa,IAAI,GACnC,MAAM,IAAI,SAAS,YAAY,IAAI,KAAK,CAAC,EAAE,KAAK,UAAU,GAAG,GAAG;CAGjE,IAAI,SAAW,KAAK,UAA8C,CAAC;CACnE,MAAM,WAAa,KAAK,UAA4C,CAAC;CACrE,MAAM,SAAS,IAAI,UAAU;CAC7B,MAAM,IAAI,iBAAiB,IAAI,KAAK,CAAC;CASrC,MAAM,eACL,eAAe,OAAO,MAAM,iBAAiB,YAAY,KAAK,aAAa,SAAS,IACjF,KAAK,eACL,KAAA;CACJ,MAAM,kBAAkB,eACrB,OAAO,MAAM,aAAa,SAAS,SAAS,YAAY,IACxD,KAAA;CACH,MAAM,eACJ,OAAO,MAAM,iBAAiB,YAAY,KAAK,aAAa,SAAS,KACtE,QAAQ,mBAAmB,SAAS,IAAI,gBAAgB,SAAS,GAAG,cAAc;CACnF,IAAI,gBAAgB,cAAc;EACjC,IAAI;EACJ,IAAI;GACH,WAAW,MAAM,4BAA4B;IAC5C,SAAS,IAAI;IACb;IACA;IACA,SAAS,sCAAsB,IAAI,IAAI;IACvC,YAAY;GACb,CAAC;EACF,QAAQ;GACP,MAAM,IAAI,SAAS,YAAY,IAAI,KAAK,CAAC,EAAE,KAAK,sBAAsB,GAAG,GAAG;EAC7E;EACA,SAAS,iBAAiB,QAAQ,cAAc,QAAQ;EACxD,MAAM,SAAS,SAAS,MAAM,UAAU,MAAM,UAAU,YAAY,GAAG;EAEvE,IADmB,UAAU,QAAQ,WAAW,MAC9B,CAAC,SAAS,MAAM,WAAW,OAAO,UAAU,MAAM,GACnE,MAAM,IAAI,gBACT;GACC,YAAY;GACZ,QAAQ,CACP;IAAE,MAAM;IAAc,SAAS,YAAY,IAAI,KAAK,CAAC,EAAE,KAAK,gBAAgB;GAAE,CAC/E;EACD,GACA,IAAI,CACL;CAEF;CACA,MAAM,gBACL,OAAO,IAAI,UAAA,+BAAoC,WAC3C,IAAI,QAAQ,wBACb,KAAA;CAKJ,IAAI,iBAAuC,CAAC;CAC5C,IAAI,kBAAkB,OAAO,MAAM,UAAU,MAAM,cAAc,SAAS,GACzE,IAAI;EACH,iBAAiB,MAAM,sBAAsB;GAC5C,SAAS,IAAI;GACb;GACA;GACA,SAAS;EACV,CAAC;CACF,QAAQ;EACP,MAAM,IAAI,SAAS,YAAY,IAAI,KAAK,CAAC,EAAE,KAAK,yBAAyB,GAAG,GAAG;CAChF;CAGD,MAAM,SAAS,MAAM,cAAc;EAClC;EACA,QAAQ;EACR;EACA;EACA;EACA;EACA;EACA;EACA,WAAW;EACX;EACA,SAAS,IAAI;EACL;EACR;EACA;CACD,CAAC;CAED,IAAI,OAAO,OAAO,SAAS,GAC1B,MAAM,IAAI,gBAAgB;EAAE,YAAY;EAAuB,QAAQ,OAAO;CAAO,GAAG,IAAI,CAAC;CAG9F,KAAK,SAAS,OAAO;CACrB,KAAK,cAAc,OAAO;CAC1B,KAAK,UAAU,OAAO,QAAQ,SAAS,IAAI,OAAO,UAAU,KAAA;CAC5D,KAAK,SAAS;CAId,IAAI,CAAC,IAAI,MACR,KAAK,SAAS;CAEf,OAAO;AACR"}
1
+ {"version":3,"file":"validateSubmission.js","names":[],"sources":["../../src/submissions/validateSubmission.ts"],"sourcesContent":["import { APIError, type CollectionBeforeValidateHook, ValidationError } from 'payload'\nimport { FORM_SUBMISSIONS_SLUG } from '../collections/formSubmissions'\nimport { FORMS_SLUG } from '../collections/forms'\nimport type { ConsentSnapshotMode } from '../consent/captureConsent'\nimport { resolveConsentEntries } from '../consent/resolveConsentEntries'\nimport type { ConsentSourceEntry, ConsentSourcesResolver } from '../consent/types'\nimport type { FieldTypeRegistry } from '../fields/registry'\nimport { isPollClosed, pollConfigOf } from '../form/pollState'\nimport { applyPollOptions } from '../poll/applyPollOptions'\nimport type { PollOption } from '../poll/definePollOptionSource'\nimport { resolveEffectivePollOptions } from '../poll/effectivePollOptions'\nimport type { PollOptionSourceRegistry } from '../poll/registry'\nimport { IDENTITY_CONTEXT_KEY } from '../spam/constants'\nimport { keys } from '../translations/keys'\nimport { asFieldTranslate, asTranslate } from '../translations/server'\nimport type { ValidationRuleRegistry } from '../validation/registry'\nimport { runSubmission } from './runSubmission'\nimport type { FormFieldInstance, SubmissionValue } from './types'\nimport { POLL_CONTEXT_KEY } from './votedCookie'\n\nexport type ValidateSubmissionArgs = {\n\tregistry: FieldTypeRegistry\n\truleRegistry: ValidationRuleRegistry\n\t/** The host's consent sources resolver (plugin option `consent.sources`); absent when no sources are configured. */\n\tconsentSources?: ConsentSourcesResolver\n\t/** What each consent proof snapshots of the agreed wording (plugin option `consent.snapshot`). */\n\tconsentSnapshot?: ConsentSnapshotMode\n\t/** The plugin-configured uploads collection slug; absent when uploads are disabled. */\n\tuploadSlug?: string\n\t/** Registered poll option sources; a form's configured `optionSource` resolves through this at validation time. */\n\tpollSourceRegistry?: PollOptionSourceRegistry\n\t/** Plugin `spam.uploadOwnership: 'strict'`: reject an owned upload when the submitter is unidentifiable. */\n\tstrictUploadOwnership?: boolean\n}\n\n/**\n * Server-authoritative submission validation. On create it loads the referenced form, re-runs every\n * field's required check, intrinsic validator, and declarative rules through `runSubmission`, threading\n * `req`/`payload` so server-only async rules can hit the DB, and throws a Payload `ValidationError` with\n * per-field paths on any failure. The client is never trusted.\n * Consent fields are captured into `result.consent` (array of proofs, one per visible consent field),\n * built from the host's sources re-resolved here rather than from anything the form or client carries.\n */\nexport const validateSubmission =\n\t({\n\t\tregistry,\n\t\truleRegistry,\n\t\tconsentSources,\n\t\tconsentSnapshot,\n\t\tuploadSlug,\n\t\tpollSourceRegistry,\n\t\tstrictUploadOwnership,\n\t}: ValidateSubmissionArgs): CollectionBeforeValidateHook =>\n\tasync ({ data, operation, req }) => {\n\t\tif (operation !== 'create' || !data) {\n\t\t\treturn data\n\t\t}\n\t\tconst formId = data.form\n\t\tif (formId == null) {\n\t\t\treturn data\n\t\t}\n\n\t\tconst form = await req.payload.findByID({\n\t\t\tcollection: FORMS_SLUG,\n\t\t\tid: formId as string | number,\n\t\t\tdepth: 0,\n\t\t\tlocale: req.locale,\n\t\t\treq,\n\t\t})\n\n\t\t// Stash whether the form is poll-enabled (its top-level `pollEnabled` flag) so the voted-cookie\n\t\t// afterChange hook can skip a second form fetch on the same request.\n\t\tconst poll = pollConfigOf(form.poll)\n\t\tconst pollEnabled = form.pollEnabled === true\n\t\treq.context[POLL_CONTEXT_KEY] = pollEnabled\n\n\t\t// Form-level lifecycle guard, before any field work: a closed poll accepts no submissions,\n\t\t// regardless of what the client rendered.\n\t\tif (pollEnabled && isPollClosed(poll)) {\n\t\t\tthrow new APIError(asTranslate(req.i18n.t)(keys.pollClosed), 403)\n\t\t}\n\n\t\tlet fields = ((form.fields as FormFieldInstance[] | undefined) ?? []) as FormFieldInstance[]\n\t\tconst incoming = ((data.values as SubmissionValue[] | undefined) ?? []) as SubmissionValue[]\n\t\tconst locale = req.locale ?? 'en'\n\t\tconst t = asFieldTranslate(req.i18n.t)\n\n\t\t// With a resolved choice set for the results field (a poll `optionSource`, or the field type's\n\t\t// own `resolveOptions`) the resolved values are the only accepted answers: options are injected\n\t\t// into the field instance (so the select's membership check and the stored option labels use\n\t\t// them) and membership is also enforced directly, so an empty resolution or a non-select results\n\t\t// field still fails closed. A resolve failure rejects the whole submission rather than skipping\n\t\t// the check. Static authored polls are unaffected: their field validates against its own options\n\t\t// through the normal field pipeline.\n\t\tconst resultsField =\n\t\t\tpollEnabled && typeof poll?.resultsField === 'string' && poll.resultsField.length > 0\n\t\t\t\t? poll.resultsField\n\t\t\t\t: undefined\n\t\tconst resultsInstance = resultsField\n\t\t\t? fields.find((instance) => instance.name === resultsField)\n\t\t\t: undefined\n\t\tconst usesResolver =\n\t\t\t(typeof poll?.optionSource === 'string' && poll.optionSource.length > 0) ||\n\t\t\tBoolean(resultsInstance && registry.get(resultsInstance.blockType)?.resolveOptions)\n\t\tif (resultsField && usesResolver) {\n\t\t\tlet resolved: PollOption[]\n\t\t\ttry {\n\t\t\t\tresolved = await resolveEffectivePollOptions({\n\t\t\t\t\tpayload: req.payload,\n\t\t\t\t\treq,\n\t\t\t\t\tform,\n\t\t\t\t\tsources: pollSourceRegistry ?? new Map(),\n\t\t\t\t\tfieldTypes: registry,\n\t\t\t\t})\n\t\t\t} catch {\n\t\t\t\tthrow new APIError(asTranslate(req.i18n.t)(keys.pollOptionsUnavailable), 503)\n\t\t\t}\n\t\t\tfields = applyPollOptions(fields, resultsField, resolved)\n\t\t\tconst answer = incoming.find((entry) => entry.field === resultsField)?.value\n\t\t\tconst isAnswered = answer != null && answer !== ''\n\t\t\tif (isAnswered && !resolved.some((option) => option.value === answer)) {\n\t\t\t\tthrow new ValidationError(\n\t\t\t\t\t{\n\t\t\t\t\t\tcollection: FORM_SUBMISSIONS_SLUG,\n\t\t\t\t\t\terrors: [\n\t\t\t\t\t\t\t{ path: resultsField, message: asTranslate(req.i18n.t)(keys.validationSelect) },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\treq.t\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\t\tconst expectedOwner =\n\t\t\ttypeof req.context?.[IDENTITY_CONTEXT_KEY] === 'string'\n\t\t\t\t? (req.context[IDENTITY_CONTEXT_KEY] as string)\n\t\t\t\t: undefined\n\n\t\t// Every consent proof is built from the source as it reads right now, not from anything the\n\t\t// form or the client carries, so a resolver failure rejects the submission rather than\n\t\t// recording an agreement to a statement the server cannot vouch for.\n\t\tlet consentEntries: ConsentSourceEntry[] = []\n\t\tif (consentSources && fields.some((field) => field.blockType === 'consent')) {\n\t\t\ttry {\n\t\t\t\tconsentEntries = await resolveConsentEntries({\n\t\t\t\t\tpayload: req.payload,\n\t\t\t\t\treq,\n\t\t\t\t\tform,\n\t\t\t\t\tsources: consentSources,\n\t\t\t\t})\n\t\t\t} catch {\n\t\t\t\tthrow new APIError(asTranslate(req.i18n.t)(keys.consentSourcesUnavailable), 503)\n\t\t\t}\n\t\t}\n\n\t\tconst result = await runSubmission({\n\t\t\tfields,\n\t\t\tvalues: incoming,\n\t\t\tregistry,\n\t\t\truleRegistry,\n\t\t\tconsentEntries,\n\t\t\tconsentSnapshot,\n\t\t\tlocale,\n\t\t\tt,\n\t\t\toperation: 'create',\n\t\t\treq,\n\t\t\tpayload: req.payload,\n\t\t\tformId: formId as number | string,\n\t\t\tuploadSlug,\n\t\t\texpectedOwner,\n\t\t\tstrictUploadOwnership,\n\t\t})\n\n\t\tif (result.errors.length > 0) {\n\t\t\tthrow new ValidationError({ collection: FORM_SUBMISSIONS_SLUG, errors: result.errors }, req.t)\n\t\t}\n\n\t\tdata.values = result.values\n\t\tdata.descriptors = result.descriptors\n\t\tdata.consent = result.consent.length > 0 ? result.consent : undefined\n\t\tdata.locale = locale\n\t\t// Unauthenticated submits are always 'complete'. A client-supplied 'partial' would\n\t\t// silently skip all post-submit actions and events. Authenticated callers (e.g. an\n\t\t// admin draft-save flow) may set status themselves.\n\t\tif (!req.user) {\n\t\t\tdata.status = 'complete'\n\t\t}\n\t\treturn data\n\t}\n"],"mappings":"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"}
@@ -134,6 +134,8 @@ const de = {
134
134
  [keys.recipientsGroupFields]: "Formularfelder",
135
135
  [keys.validationRecipientInvalid]: "Gib eine gültige E-Mail-Adresse ein.",
136
136
  [keys.validationRecipientUnknownField]: "Verweist auf ein nicht mehr vorhandenes Feld.",
137
+ [keys.validationRecipientNotAllowed]: "Dieser Empfänger steht nicht auf der zulässigen Liste.",
138
+ [keys.validationRecipientOptionsUnavailable]: "Empfängeroptionen sind derzeit nicht verfügbar. Bitte versuche es später erneut.",
137
139
  [keys.validationFromUnknown]: "Wähle eine der konfigurierten Absenderadressen",
138
140
  [keys.validationFromUnavailable]: "Absenderadressen sind derzeit nicht verfügbar. Bitte versuche es später erneut.",
139
141
  [keys.actionConfigUrl]: "URL",
@@ -194,6 +196,7 @@ const de = {
194
196
  [keys.endpointOptionsError]: "Optionen konnten nicht geladen werden.",
195
197
  [keys.pollOptionsUnavailable]: "Umfrageoptionen sind derzeit nicht verfügbar. Bitte versuche es später erneut.",
196
198
  [keys.pollFinalResult]: "Endergebnis",
199
+ [keys.pollResultsError]: "Ergebnisse konnten nicht geladen werden.",
197
200
  [keys.resultsWinner]: "Gewinner",
198
201
  [keys.validationFileMissing]: "Datei hochladen",
199
202
  [keys.validationFileMimeType]: "Dateityp nicht erlaubt",
@@ -206,6 +209,10 @@ const de = {
206
209
  [keys.fileUploadMisconfigured]: "Datei-Uploads sind für dieses Formular nicht konfiguriert",
207
210
  [keys.fileHintAccepted]: "Akzeptiert: {types}",
208
211
  [keys.fileHintMaxSize]: "Max. Größe: {max}",
212
+ [keys.fileUploaded]: "Hochgeladene Datei",
213
+ [keys.fileUploading]: "Wird hochgeladen",
214
+ [keys.fileUploadFailed]: "Upload fehlgeschlagen",
215
+ [keys.fileRemove]: "Entfernen",
209
216
  [keys.spamRateLimited]: "Du hast zu viele Anfragen gesendet. Bitte versuche es später erneut.",
210
217
  [keys.spamRejected]: "Deine Übermittlung konnte nicht verarbeitet werden.",
211
218
  [keys.spamCaptchaFailed]: "Captcha-Überprüfung fehlgeschlagen. Bitte versuche es erneut.",
@@ -278,6 +285,9 @@ const de = {
278
285
  [keys.formSubmit]: "Absenden",
279
286
  [keys.formMultistep]: "Mehrstufig",
280
287
  [keys.formPollEnabled]: "Umfrage",
288
+ [keys.formClose]: "Schließen",
289
+ [keys.formSuccess]: "Vielen Dank.",
290
+ [keys.formSubmitFailed]: "Übermittlung fehlgeschlagen",
281
291
  [keys.cellStepCountOne]: "{{count}} Schritt",
282
292
  [keys.cellStepCountOther]: "{{count}} Schritte",
283
293
  [keys.cellFieldCountOne]: "{{count}} Feld",
@@ -1 +1 @@
1
- {"version":3,"file":"de.js","names":[],"sources":["../../src/translations/de.ts"],"sourcesContent":["import { keys, type TranslationKey } from './keys'\n\n/**\n * German values, keyed by the typed constants in `keys.ts` so the two stay in\n * lockstep. The `Record<TranslationKey, string>` annotation makes a missing or\n * unknown key a type error. `translations/index.ts` nests these for Payload.\n */\nexport const de: Record<TranslationKey, string> = {\n\t[keys.fieldTitle]: 'Titel',\n\t[keys.fieldTypeText]: 'Text',\n\t[keys.fieldTypeTextarea]: 'Textarea',\n\t[keys.fieldTypeEmail]: 'E-Mail',\n\t[keys.fieldTypeNumber]: 'Zahl',\n\t[keys.fieldTypeSelect]: 'Auswahl',\n\t[keys.fieldTypeCountry]: 'Land',\n\t[keys.fieldTypeState]: 'Bundesstaat',\n\t[keys.fieldTypeCheckbox]: 'Checkbox',\n\t[keys.fieldTypeDate]: 'Datum',\n\t[keys.configOptions]: 'Optionen',\n\t[keys.configOption]: 'Option',\n\t[keys.configOptionLabel]: 'Bezeichnung',\n\t[keys.configOptionValue]: 'Wert',\n\t[keys.validationRequired]: 'Dieses Feld ist erforderlich',\n\t[keys.validationEmail]: 'Gib eine gültige E-Mail-Adresse ein',\n\t[keys.validationNumber]: 'Gib eine gültige Zahl ein',\n\t[keys.validationDate]: 'Gib ein gültiges Datum ein',\n\t[keys.validationSelect]: 'Wähle eine gültige Option',\n\t[keys.validationCountry]: 'Wähle ein gültiges Land',\n\t[keys.validationState]: 'Wähle einen gültigen Bundesstaat',\n\t[keys.validationRegexPattern]: 'Gib einen gültigen regulären Ausdruck ein',\n\t[keys.validationRegexFlags]:\n\t\t'Gib gültige Flags für reguläre Ausdrücke ein, zum Beispiel i oder gi',\n\t[keys.validationEmailFieldUnknown]: 'Wähle ein bestehendes E-Mail-Feld dieses Formulars',\n\t[keys.validationResultsFieldUnknown]: 'Wähle ein geeignetes Auswahlfeld dieses Formulars',\n\t[keys.formatYes]: 'Ja',\n\t[keys.formatNo]: 'Nein',\n\t[keys.configName]: 'Name',\n\t[keys.configLabel]: 'Bezeichnung',\n\t[keys.configRequired]: 'Erforderlich',\n\t[keys.configWidth]: 'Breite',\n\t[keys.configPlaceholder]: 'Platzhalter',\n\t[keys.configDescription]: 'Beschreibung',\n\t[keys.configVisibleWhen]: 'Dieses Feld anzeigen, wenn',\n\t[keys.configValidateWhen]: 'Dieses Feld nur validieren, wenn',\n\t[keys.submissionAnswers]: 'Antworten',\n\t[keys.submissionNoAnswers]: 'Keine Antworten',\n\t[keys.ruleMinLength]: 'Minimale Länge',\n\t[keys.ruleMaxLength]: 'Maximale Länge',\n\t[keys.ruleMin]: 'Minimum',\n\t[keys.ruleMax]: 'Maximum',\n\t[keys.ruleMinDate]: 'Frühestes Datum',\n\t[keys.ruleMaxDate]: 'Spätestes Datum',\n\t[keys.rulePattern]: 'Muster',\n\t[keys.ruleEmail]: 'E-Mail',\n\t[keys.ruleUrl]: 'URL',\n\t[keys.ruleOneOf]: 'Wert aus Liste',\n\t[keys.ruleMatchesField]: 'Stimmt mit Feld überein',\n\t[keys.ruleNotAlreadySubmitted]: 'Noch nicht übermittelt',\n\t[keys.ruleMinLengthMessage]: 'Muss mindestens {min} Zeichen lang sein',\n\t[keys.ruleMaxLengthMessage]: 'Darf höchstens {max} Zeichen lang sein',\n\t[keys.ruleMinMessage]: 'Muss mindestens {min} betragen',\n\t[keys.ruleMaxMessage]: 'Darf höchstens {max} betragen',\n\t[keys.ruleMinDateMessage]: 'Muss am oder nach dem {min} liegen',\n\t[keys.ruleMaxDateMessage]: 'Muss am oder vor dem {max} liegen',\n\t[keys.rulePatternMessage]: 'Ungültiges Format',\n\t[keys.ruleEmailMessage]: 'Gib eine gültige E-Mail-Adresse ein',\n\t[keys.ruleUrlMessage]: 'Gib eine gültige URL ein',\n\t[keys.ruleOneOfMessage]: 'Wähle einen zulässigen Wert',\n\t[keys.ruleMatchesFieldMessage]: 'Stimmt nicht überein',\n\t[keys.ruleNotAlreadySubmittedMessage]: 'Dieser Wert wurde bereits übermittelt',\n\t[keys.ruleMinLengthDescription]:\n\t\t'Schlägt fehl, wenn der eingegebene Text kürzer als die Mindestanzahl an Zeichen ist.',\n\t[keys.ruleMaxLengthDescription]:\n\t\t'Schlägt fehl, wenn der eingegebene Text länger als die maximale Anzahl an Zeichen ist.',\n\t[keys.ruleMinDescription]: 'Schlägt fehl, wenn die eingegebene Zahl unter dem Minimum liegt.',\n\t[keys.ruleMaxDescription]: 'Schlägt fehl, wenn die eingegebene Zahl über dem Maximum liegt.',\n\t[keys.ruleMinDateDescription]:\n\t\t'Schlägt fehl, wenn das gewählte Datum vor dem frühesten Datum liegt.',\n\t[keys.ruleMaxDateDescription]:\n\t\t'Schlägt fehl, wenn das gewählte Datum nach dem spätesten Datum liegt.',\n\t[keys.rulePatternDescription]:\n\t\t'Schlägt fehl, wenn der eingegebene Text nicht zum regulären Ausdruck passt.',\n\t[keys.ruleEmailDescription]:\n\t\t'Schlägt fehl, wenn der eingegebene Wert keine gültige E-Mail-Adresse ist.',\n\t[keys.ruleUrlDescription]:\n\t\t'Schlägt fehl, wenn der eingegebene Wert keine gültige http- oder https-URL ist.',\n\t[keys.ruleOneOfDescription]:\n\t\t'Schlägt fehl, wenn der eingegebene Wert keiner der von dir angegebenen zulässigen Werte ist.',\n\t[keys.ruleMatchesFieldDescription]:\n\t\t'Schlägt fehl, wenn der Wert dieses Feldes nicht dem gewählten Feld entspricht. Nutze es für E-Mail- oder Passwort-Bestätigung.',\n\t[keys.ruleNotAlreadySubmittedDescription]:\n\t\t'Schlägt fehl, wenn genau dieser Wert bereits an dieses Formular übermittelt wurde (serverseitig geprüft).',\n\t[keys.ruleFieldTargetInvalid]:\n\t\t'Das ausgewählte Feld existiert nicht mehr. Wähle ein gültiges Feld.',\n\t[keys.ruleParamMin]: 'Minimum',\n\t[keys.ruleParamMax]: 'Maximum',\n\t[keys.ruleParamMinDate]: 'Frühestes Datum (JJJJ-MM-TT)',\n\t[keys.ruleParamMaxDate]: 'Spätestes Datum (JJJJ-MM-TT)',\n\t[keys.ruleParamPattern]: 'Muster',\n\t[keys.ruleParamFlags]: 'Flags',\n\t[keys.ruleParamValues]: 'Zulässige Werte',\n\t[keys.ruleParamField]: 'Feldname',\n\t[keys.validationsLabel]: 'Validierungsregeln',\n\t[keys.validationMessageLabel]: 'Benutzerdefinierte Nachricht',\n\t[keys.conditionAddCondition]: 'Bedingung hinzufügen',\n\t[keys.conditionAddOr]: '\"Oder\"-Gruppe hinzufügen',\n\t[keys.conditionAnd]: 'Und',\n\t[keys.conditionOr]: 'Oder',\n\t[keys.conditionRemove]: 'Entfernen',\n\t[keys.conditionNoFields]:\n\t\t'Füge diesem Formular benannte Felder hinzu, um eine Bedingung zu erstellen.',\n\t[keys.conditionEmpty]: 'Keine Bedingungen. Dieses Feld wird immer angezeigt.',\n\t[keys.conditionSelectField]: 'Feld auswählen',\n\t[keys.conditionTrue]: 'Wahr',\n\t[keys.conditionFalse]: 'Falsch',\n\t[keys.configHidden]: 'Ausgeblendet (wird erfasst, aber nicht angezeigt)',\n\t[keys.tabFields]: 'Felder',\n\t[keys.tabFlow]: 'Ablauf',\n\t[keys.tabActions]: 'Aktionen',\n\t[keys.tabField]: 'Feld',\n\t[keys.tabValidation]: 'Validierung',\n\t[keys.tabAdvanced]: 'Erweitert',\n\t[keys.fieldTypeCalculation]: 'Berechnung',\n\t[keys.configExpression]: 'Ausdruck (JSON)',\n\t[keys.configExpressionDescription]:\n\t\t'Ausdrucksbaum aus Knoten {\"type\":\"lit\"|\"ref\"|\"op\"|\"neg\"|\"fn\"|\"weight\"}. Beispiel: {\"type\":\"op\",\"op\":\"+\",\"left\":{\"type\":\"ref\",\"field\":\"qty\"},\"right\":{\"type\":\"lit\",\"value\":10}}',\n\t[keys.configCalcDisplay]: 'Berechneten Wert anzeigen',\n\t[keys.validationCalcExpressionInvalid]: 'Gib einen gültigen Berechnungsausdruck ein',\n\t[keys.presentationPage]: 'Seite',\n\t[keys.presentationModal]: 'Modal',\n\t[keys.presentationDrawer]: 'Seitenpanel',\n\t[keys.presentationInline]: 'Inline',\n\t[keys.actionEmailTeam]: 'E-Mail ans Team',\n\t[keys.actionConfirmation]: 'Bestätigungs-E-Mail',\n\t[keys.actionSignedWebhook]: 'Signierter Webhook',\n\t[keys.actionConfigTo]: 'An',\n\t[keys.actionConfigSubject]: 'Betreff',\n\t[keys.actionConfigBody]: 'Nachrichtentext',\n\t[keys.actionConfigBodyDescription]:\n\t\t'Unterstützt {{ fieldName|fallback }}-Platzhalter, {{*}} für alle Antworten als Zeilen und {{*:table}} für alle Antworten als Tabelle.',\n\t[keys.actionConfigToField]: 'Name des E-Mail-Feldes',\n\t[keys.actionConfigToFieldDescription]:\n\t\t'Das E-Mail-Feld dieses Formulars, an das die Bestätigung gesendet wird.',\n\t[keys.actionConfigFrom]: 'Von',\n\t[keys.actionConfigFromDescription]:\n\t\t'Absenderadresse für diese Aktion. Leer lassen, um den Standard des E-Mail-Adapters zu verwenden.',\n\t[keys.actionConfigCc]: 'CC',\n\t[keys.actionConfigBcc]: 'BCC',\n\t[keys.actionConfigReplyTo]: 'Antwort an',\n\t[keys.recipientsGroupDepartments]: 'Abteilungen',\n\t[keys.recipientsGroupFields]: 'Formularfelder',\n\t[keys.validationRecipientInvalid]: 'Gib eine gültige E-Mail-Adresse ein.',\n\t[keys.validationRecipientUnknownField]: 'Verweist auf ein nicht mehr vorhandenes Feld.',\n\t[keys.validationFromUnknown]: 'Wähle eine der konfigurierten Absenderadressen',\n\t[keys.validationFromUnavailable]:\n\t\t'Absenderadressen sind derzeit nicht verfügbar. Bitte versuche es später erneut.',\n\t[keys.actionConfigUrl]: 'URL',\n\t[keys.actionConfigUrlDescription]:\n\t\t'Der Endpunkt, der für jede Übermittlung einen signierten JSON-POST erhält.',\n\t[keys.actionConfigSecret]: 'Geheimer Schlüssel',\n\t[keys.actionConfigSecretDescription]:\n\t\t'HMAC-Schlüssel für den X-Form-Signature-Header, der mit dem Empfänger geteilt wird.',\n\t[keys.validationUrlInvalid]: 'Gib eine gültige http- oder https-URL ein',\n\t[keys.configActions]: 'Aktionen',\n\t[keys.fieldTypeConsent]: 'Einwilligung',\n\t[keys.consentConfigSource]: 'Quelle',\n\t[keys.consentConfigSourceDescription]:\n\t\t'Die Erklärung, der Besucher zustimmen. Wortlaut und Rechtsseite gehören zur Quelle: eine Änderung dort gilt für jedes Formular, das sie nutzt.',\n\t[keys.consentSourcesField]: 'Einwilligungsquellen',\n\t[keys.consentSourcesFieldDescription]:\n\t\t'Erklärungen, die Formulare in Einwilligungsfeldern verwenden können',\n\t[keys.consentSourceSingular]: 'Einwilligungsquelle',\n\t[keys.consentSourcePlural]: 'Einwilligungsquellen',\n\t[keys.consentSourceLabel]: 'Name',\n\t[keys.consentSourceStatement]: 'Erklärung',\n\t[keys.consentSourcePage]: 'Erklärungsquelle',\n\t[keys.consentSourcePageDescription]:\n\t\t'Muss gesetzt sein, wenn Formulareinsendungen einen Verweis auf deine Richtlinie speichern sollen.',\n\t[keys.consentSourcesUnavailable]:\n\t\t'Einwilligungsquellen sind nicht verfügbar. Versuche es gleich noch einmal.',\n\t[keys.resultsResponses]: 'Antworten',\n\t[keys.resultsNoResponses]: 'Noch keine Antworten',\n\t[keys.resultsTruncated]: 'Zeigt eine Stichprobe der Antworten',\n\t[keys.pollGroup]: 'Umfrage',\n\t[keys.pollResultsField]: 'Abstimmungsfeld',\n\t[keys.pollResultsFieldDescription]:\n\t\t'Das Auswahlfeld, dessen Antworten als Stimmen gezählt werden. Wird automatisch gewählt, wenn dein Formular genau ein Auswahlfeld hat. Verwende ein Auswahlfeld, niemals ein Freitext- oder personenbezogenes Feld.',\n\t[keys.pollVoteFieldChoose]: 'Wähle das Feld, dessen Antworten als Stimmen zählen.',\n\t[keys.pollVoteFieldMissing]: 'Füge ein Auswahlfeld als Abstimmungsfrage hinzu.',\n\t[keys.pollResultsVisibility]: 'Sichtbarkeit der Ergebnisse',\n\t[keys.pollVisibilityAfterVote]: 'Nach der Abstimmung',\n\t[keys.pollVisibilityAfterClose]: 'Nach Ende der Umfrage',\n\t[keys.pollClosesAt]: 'Endet am',\n\t[keys.pollClosed]: 'Diese Umfrage ist beendet.',\n\t[keys.pollResultsAfterClose]: 'Die Ergebnisse werden nach Ende der Umfrage angezeigt.',\n\t[keys.pollOptionSource]: 'Optionsquelle',\n\t[keys.pollOptionSourceDescription]:\n\t\t'Befüllt die Auswahlmöglichkeiten des Ergebnisfeldes mit App-Daten anstelle manuell erstellter Optionen.',\n\t[keys.pollSourceConfig]: 'Quelleinstellungen',\n\t[keys.pollOutcome]: 'Ergebnis',\n\t[keys.pollType]: 'Ergebnistyp',\n\t[keys.pollTypeDescription]: 'Wie die Gewinneroption bestimmt wird, sobald die Umfrage endet.',\n\t[keys.pollTypeManual]: 'Gewinner manuell festlegen',\n\t[keys.pollTypeMostVoted]: 'Meistgewählte Option gewinnt',\n\t[keys.pollTypeSource]: 'Gewinner aus der Optionsquelle',\n\t[keys.pollCloseButton]: 'Umfrage jetzt beenden',\n\t[keys.pollReopenButton]: 'Umfrage wieder öffnen',\n\t[keys.pollCloseHintManual]: 'Beim Beenden wird der ausgewählte Gewinner als Ergebnis erfasst.',\n\t[keys.pollCloseHintMostVoted]: 'Beim Beenden wird die meistgewählte Option zum Gewinner.',\n\t[keys.pollCloseHintSource]: 'Beim Beenden wird der Gewinner aus der Optionsquelle ermittelt.',\n\t[keys.pollReopenHint]:\n\t\t'Beim Wiederöffnen wird der erfasste Gewinner entfernt und es kann erneut abgestimmt werden.',\n\t[keys.pollCloseNeedsWinner]: 'Wähle zuerst einen Siegerwert.',\n\t[keys.pollCloseManualNoWinner]: 'Lege einen Gewinner fest, bevor du die Umfrage beendest.',\n\t[keys.pollWinningValue]: 'Siegerwert',\n\t[keys.pollWinningValueDescription]:\n\t\t'Wähle die Gewinneroption, sobald das Ergebnis feststeht. Beim Speichern wird der Entscheidungszeitpunkt erfasst; leeren öffnet das Ergebnis wieder.',\n\t[keys.pollResolvedAt]: 'Entschieden am',\n\t[keys.validationWinningValueUnknown]: 'Der Siegerwert muss eine der Umfrageoptionen sein.',\n\t[keys.validationWinningValueDisabled]: 'Aktiviere die Umfrage, bevor ein Ergebnis erfasst wird.',\n\t[keys.endpointOptionsLoading]: 'Optionen werden geladen...',\n\t[keys.endpointOptionsError]: 'Optionen konnten nicht geladen werden.',\n\t[keys.pollOptionsUnavailable]:\n\t\t'Umfrageoptionen sind derzeit nicht verfügbar. Bitte versuche es später erneut.',\n\t[keys.pollFinalResult]: 'Endergebnis',\n\t[keys.resultsWinner]: 'Gewinner',\n\t[keys.validationFileMissing]: 'Datei hochladen',\n\t[keys.validationFileMimeType]: 'Dateityp nicht erlaubt',\n\t[keys.validationFileTooLarge]: 'Datei ist zu groß',\n\t[keys.fieldTypeFile]: 'Datei-Upload',\n\t[keys.fileConfigMimeTypes]: 'Erlaubte Dateitypen',\n\t[keys.fileConfigMaxSize]: 'Maximale Größe (Bytes)',\n\t[keys.fileConfigMaxSizeDescription]: 'Dateien, die größer sind, werden abgelehnt.',\n\t[keys.fileTooLarge]: 'Datei ist zu groß (max. {max})',\n\t[keys.fileUploadMisconfigured]: 'Datei-Uploads sind für dieses Formular nicht konfiguriert',\n\t[keys.fileHintAccepted]: 'Akzeptiert: {types}',\n\t[keys.fileHintMaxSize]: 'Max. Größe: {max}',\n\t[keys.spamRateLimited]: 'Du hast zu viele Anfragen gesendet. Bitte versuche es später erneut.',\n\t[keys.spamRejected]: 'Deine Übermittlung konnte nicht verarbeitet werden.',\n\t[keys.spamCaptchaFailed]: 'Captcha-Überprüfung fehlgeschlagen. Bitte versuche es erneut.',\n\t[keys.collectionFormSingular]: 'Formular',\n\t[keys.collectionFormPlural]: 'Formulare',\n\t[keys.collectionSubmissionSingular]: 'Übermittlung',\n\t[keys.collectionSubmissionPlural]: 'Übermittlungen',\n\t[keys.statusComplete]: 'Vollständig',\n\t[keys.statusPartial]: 'Unvollständig',\n\t[keys.fieldTypeRepeater]: 'Wiederholungsfeld',\n\t[keys.configMinRows]: 'Minimale Zeilenanzahl',\n\t[keys.configMaxRows]: 'Maximale Zeilenanzahl',\n\t[keys.configAddLabel]: 'Beschriftung der Schaltfläche zum Hinzufügen',\n\t[keys.configSubFields]: 'Unterfelder',\n\t[keys.validationRepeaterMin]: 'Füge mindestens {min} Zeile(n) hinzu',\n\t[keys.validationRepeaterMax]: 'Entferne Zeilen, um {max} nicht zu überschreiten',\n\t[keys.repeaterAddRow]: 'Zeile hinzufügen',\n\t[keys.repeaterRemoveRow]: 'Entfernen',\n\t[keys.repeaterRow]: 'Zeile {n}',\n\t[keys.repeaterRowCount]: '{count} Zeile(n)',\n\t[keys.submissionConsent]: 'Einwilligung',\n\t[keys.submissionDetails]: 'Details zur Übermittlung',\n\t[keys.submissionConsentAgreed]: 'Zugestimmt',\n\t[keys.submissionConsentDeclined]: 'Abgelehnt',\n\t[keys.submissionMetaLocale]: 'Sprache',\n\t[keys.submissionMetaReceivedAt]: 'Empfangen am',\n\t[keys.submissionMetaIp]: 'IP-Adresse',\n\t[keys.submissionMetaUserAgent]: 'User-Agent',\n\t[keys.submissionMetaCaptcha]: 'Captcha',\n\t[keys.flowDescription]:\n\t\t'Nur für mehrstufige Formulare nötig: Felder zu Schritten gruppieren und den Ablauf dazwischen festlegen. Leer lassen, um das Formular als einzelne Seite anzuzeigen.',\n\t[keys.flowStepFallbackTitle]: 'Schritt {n}',\n\t[keys.flowFieldInStep]: 'in {step}',\n\t[keys.flowUnassigned]: 'In keinem Schritt',\n\t[keys.flowAssignToStep]: 'Zu Schritt hinzufügen',\n\t[keys.flowNextSequential]: 'Nächster Schritt in der Reihenfolge',\n\t[keys.flowNextTerminal]: 'Ende des Formulars',\n\t[keys.flowFields]: 'Felder',\n\t[keys.flowDefaultNext]: 'Standardmäßig weiter zu',\n\t[keys.flowConditionalTransitions]: 'Bedingte Übergänge',\n\t[keys.flowStepTitleLabel]: 'Titel',\n\t[keys.flowSelectStepPlaceholder]: 'Schritt auswählen…',\n\t[keys.flowMoveTransitionUp]: 'Übergang nach oben verschieben',\n\t[keys.flowMoveTransitionDown]: 'Übergang nach unten verschieben',\n\t[keys.flowRemoveTransition]: 'Übergang entfernen',\n\t[keys.flowAddAbove]: 'Oberhalb hinzufügen',\n\t[keys.flowAddBelow]: 'Unterhalb hinzufügen',\n\t[keys.flowGoTo]: 'gehe zu',\n\t[keys.flowWhen]: 'wenn',\n\t[keys.flowNoFields]: 'Noch keine Felder im Formular definiert.',\n\t[keys.flowFirstMatchWins]: '(erste Übereinstimmung gewinnt)',\n\t[keys.flowAddTransition]: 'Übergang hinzufügen',\n\t[keys.flowNoSteps]:\n\t\t'Keine Schritte definiert. Füge mindestens zwei Schritte hinzu, um die mehrseitige Ablaufsteuerung zu aktivieren.',\n\t[keys.flowFallbackTitle]: 'Ablauf',\n\t[keys.fieldTypeMessage]: 'Nachricht',\n\t[keys.configContent]: 'Inhalt',\n\t[keys.tabResponse]: 'Antwort',\n\t[keys.responseType]: 'Nach dem Absenden',\n\t[keys.responseTypeMessage]: 'Eine Nachricht anzeigen',\n\t[keys.responseTypeRedirect]: 'Zu einer URL weiterleiten',\n\t[keys.responseMessage]: 'Nachricht',\n\t[keys.responseRedirect]: 'Weiterleitung',\n\t[keys.responseUrl]: 'URL',\n\t[keys.responseRedirectReference]: 'Dokument',\n\t[keys.responseRedirectReferenceDescription]:\n\t\t'Zu einem internen Dokument statt zu einer URL weiterleiten',\n\t[keys.buttonsSubmitLabel]: 'Beschriftung der Absenden-Schaltfläche',\n\t[keys.buttonsNextLabel]: 'Beschriftung der Weiter-Schaltfläche',\n\t[keys.buttonsPrevLabel]: 'Beschriftung der Zurück-Schaltfläche',\n\t[keys.formBack]: 'Zurück',\n\t[keys.formNext]: 'Weiter',\n\t[keys.formSubmit]: 'Absenden',\n\t[keys.formMultistep]: 'Mehrstufig',\n\t[keys.formPollEnabled]: 'Umfrage',\n\t[keys.cellStepCountOne]: '{{count}} Schritt',\n\t[keys.cellStepCountOther]: '{{count}} Schritte',\n\t[keys.cellFieldCountOne]: '{{count}} Feld',\n\t[keys.cellFieldCountOther]: '{{count}} Felder',\n\t[keys.departmentsField]: 'Abteilungs-E-Mails',\n\t[keys.departmentsFieldDescription]:\n\t\t'Adressen, an die ein Formular Einsendungen weiterleiten kann, jeweils mit Bezeichnung.',\n\t[keys.departmentSingular]: 'Abteilungs-E-Mail',\n\t[keys.departmentPlural]: 'Abteilungs-E-Mails',\n\t[keys.departmentLabel]: 'Bezeichnung',\n\t[keys.departmentEmail]: 'E-Mail',\n\t[keys.departmentAddRow]: 'E-Mail hinzufügen',\n\t[keys.departmentRemoveRow]: 'E-Mail entfernen',\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"de.js","names":[],"sources":["../../src/translations/de.ts"],"sourcesContent":["import { keys, type TranslationKey } from './keys'\n\n/**\n * German values, keyed by the typed constants in `keys.ts` so the two stay in\n * lockstep. The `Record<TranslationKey, string>` annotation makes a missing or\n * unknown key a type error. `translations/index.ts` nests these for Payload.\n */\nexport const de: Record<TranslationKey, string> = {\n\t[keys.fieldTitle]: 'Titel',\n\t[keys.fieldTypeText]: 'Text',\n\t[keys.fieldTypeTextarea]: 'Textarea',\n\t[keys.fieldTypeEmail]: 'E-Mail',\n\t[keys.fieldTypeNumber]: 'Zahl',\n\t[keys.fieldTypeSelect]: 'Auswahl',\n\t[keys.fieldTypeCountry]: 'Land',\n\t[keys.fieldTypeState]: 'Bundesstaat',\n\t[keys.fieldTypeCheckbox]: 'Checkbox',\n\t[keys.fieldTypeDate]: 'Datum',\n\t[keys.configOptions]: 'Optionen',\n\t[keys.configOption]: 'Option',\n\t[keys.configOptionLabel]: 'Bezeichnung',\n\t[keys.configOptionValue]: 'Wert',\n\t[keys.validationRequired]: 'Dieses Feld ist erforderlich',\n\t[keys.validationEmail]: 'Gib eine gültige E-Mail-Adresse ein',\n\t[keys.validationNumber]: 'Gib eine gültige Zahl ein',\n\t[keys.validationDate]: 'Gib ein gültiges Datum ein',\n\t[keys.validationSelect]: 'Wähle eine gültige Option',\n\t[keys.validationCountry]: 'Wähle ein gültiges Land',\n\t[keys.validationState]: 'Wähle einen gültigen Bundesstaat',\n\t[keys.validationRegexPattern]: 'Gib einen gültigen regulären Ausdruck ein',\n\t[keys.validationRegexFlags]:\n\t\t'Gib gültige Flags für reguläre Ausdrücke ein, zum Beispiel i oder gi',\n\t[keys.validationEmailFieldUnknown]: 'Wähle ein bestehendes E-Mail-Feld dieses Formulars',\n\t[keys.validationResultsFieldUnknown]: 'Wähle ein geeignetes Auswahlfeld dieses Formulars',\n\t[keys.formatYes]: 'Ja',\n\t[keys.formatNo]: 'Nein',\n\t[keys.configName]: 'Name',\n\t[keys.configLabel]: 'Bezeichnung',\n\t[keys.configRequired]: 'Erforderlich',\n\t[keys.configWidth]: 'Breite',\n\t[keys.configPlaceholder]: 'Platzhalter',\n\t[keys.configDescription]: 'Beschreibung',\n\t[keys.configVisibleWhen]: 'Dieses Feld anzeigen, wenn',\n\t[keys.configValidateWhen]: 'Dieses Feld nur validieren, wenn',\n\t[keys.submissionAnswers]: 'Antworten',\n\t[keys.submissionNoAnswers]: 'Keine Antworten',\n\t[keys.ruleMinLength]: 'Minimale Länge',\n\t[keys.ruleMaxLength]: 'Maximale Länge',\n\t[keys.ruleMin]: 'Minimum',\n\t[keys.ruleMax]: 'Maximum',\n\t[keys.ruleMinDate]: 'Frühestes Datum',\n\t[keys.ruleMaxDate]: 'Spätestes Datum',\n\t[keys.rulePattern]: 'Muster',\n\t[keys.ruleEmail]: 'E-Mail',\n\t[keys.ruleUrl]: 'URL',\n\t[keys.ruleOneOf]: 'Wert aus Liste',\n\t[keys.ruleMatchesField]: 'Stimmt mit Feld überein',\n\t[keys.ruleNotAlreadySubmitted]: 'Noch nicht übermittelt',\n\t[keys.ruleMinLengthMessage]: 'Muss mindestens {min} Zeichen lang sein',\n\t[keys.ruleMaxLengthMessage]: 'Darf höchstens {max} Zeichen lang sein',\n\t[keys.ruleMinMessage]: 'Muss mindestens {min} betragen',\n\t[keys.ruleMaxMessage]: 'Darf höchstens {max} betragen',\n\t[keys.ruleMinDateMessage]: 'Muss am oder nach dem {min} liegen',\n\t[keys.ruleMaxDateMessage]: 'Muss am oder vor dem {max} liegen',\n\t[keys.rulePatternMessage]: 'Ungültiges Format',\n\t[keys.ruleEmailMessage]: 'Gib eine gültige E-Mail-Adresse ein',\n\t[keys.ruleUrlMessage]: 'Gib eine gültige URL ein',\n\t[keys.ruleOneOfMessage]: 'Wähle einen zulässigen Wert',\n\t[keys.ruleMatchesFieldMessage]: 'Stimmt nicht überein',\n\t[keys.ruleNotAlreadySubmittedMessage]: 'Dieser Wert wurde bereits übermittelt',\n\t[keys.ruleMinLengthDescription]:\n\t\t'Schlägt fehl, wenn der eingegebene Text kürzer als die Mindestanzahl an Zeichen ist.',\n\t[keys.ruleMaxLengthDescription]:\n\t\t'Schlägt fehl, wenn der eingegebene Text länger als die maximale Anzahl an Zeichen ist.',\n\t[keys.ruleMinDescription]: 'Schlägt fehl, wenn die eingegebene Zahl unter dem Minimum liegt.',\n\t[keys.ruleMaxDescription]: 'Schlägt fehl, wenn die eingegebene Zahl über dem Maximum liegt.',\n\t[keys.ruleMinDateDescription]:\n\t\t'Schlägt fehl, wenn das gewählte Datum vor dem frühesten Datum liegt.',\n\t[keys.ruleMaxDateDescription]:\n\t\t'Schlägt fehl, wenn das gewählte Datum nach dem spätesten Datum liegt.',\n\t[keys.rulePatternDescription]:\n\t\t'Schlägt fehl, wenn der eingegebene Text nicht zum regulären Ausdruck passt.',\n\t[keys.ruleEmailDescription]:\n\t\t'Schlägt fehl, wenn der eingegebene Wert keine gültige E-Mail-Adresse ist.',\n\t[keys.ruleUrlDescription]:\n\t\t'Schlägt fehl, wenn der eingegebene Wert keine gültige http- oder https-URL ist.',\n\t[keys.ruleOneOfDescription]:\n\t\t'Schlägt fehl, wenn der eingegebene Wert keiner der von dir angegebenen zulässigen Werte ist.',\n\t[keys.ruleMatchesFieldDescription]:\n\t\t'Schlägt fehl, wenn der Wert dieses Feldes nicht dem gewählten Feld entspricht. Nutze es für E-Mail- oder Passwort-Bestätigung.',\n\t[keys.ruleNotAlreadySubmittedDescription]:\n\t\t'Schlägt fehl, wenn genau dieser Wert bereits an dieses Formular übermittelt wurde (serverseitig geprüft).',\n\t[keys.ruleFieldTargetInvalid]:\n\t\t'Das ausgewählte Feld existiert nicht mehr. Wähle ein gültiges Feld.',\n\t[keys.ruleParamMin]: 'Minimum',\n\t[keys.ruleParamMax]: 'Maximum',\n\t[keys.ruleParamMinDate]: 'Frühestes Datum (JJJJ-MM-TT)',\n\t[keys.ruleParamMaxDate]: 'Spätestes Datum (JJJJ-MM-TT)',\n\t[keys.ruleParamPattern]: 'Muster',\n\t[keys.ruleParamFlags]: 'Flags',\n\t[keys.ruleParamValues]: 'Zulässige Werte',\n\t[keys.ruleParamField]: 'Feldname',\n\t[keys.validationsLabel]: 'Validierungsregeln',\n\t[keys.validationMessageLabel]: 'Benutzerdefinierte Nachricht',\n\t[keys.conditionAddCondition]: 'Bedingung hinzufügen',\n\t[keys.conditionAddOr]: '\"Oder\"-Gruppe hinzufügen',\n\t[keys.conditionAnd]: 'Und',\n\t[keys.conditionOr]: 'Oder',\n\t[keys.conditionRemove]: 'Entfernen',\n\t[keys.conditionNoFields]:\n\t\t'Füge diesem Formular benannte Felder hinzu, um eine Bedingung zu erstellen.',\n\t[keys.conditionEmpty]: 'Keine Bedingungen. Dieses Feld wird immer angezeigt.',\n\t[keys.conditionSelectField]: 'Feld auswählen',\n\t[keys.conditionTrue]: 'Wahr',\n\t[keys.conditionFalse]: 'Falsch',\n\t[keys.configHidden]: 'Ausgeblendet (wird erfasst, aber nicht angezeigt)',\n\t[keys.tabFields]: 'Felder',\n\t[keys.tabFlow]: 'Ablauf',\n\t[keys.tabActions]: 'Aktionen',\n\t[keys.tabField]: 'Feld',\n\t[keys.tabValidation]: 'Validierung',\n\t[keys.tabAdvanced]: 'Erweitert',\n\t[keys.fieldTypeCalculation]: 'Berechnung',\n\t[keys.configExpression]: 'Ausdruck (JSON)',\n\t[keys.configExpressionDescription]:\n\t\t'Ausdrucksbaum aus Knoten {\"type\":\"lit\"|\"ref\"|\"op\"|\"neg\"|\"fn\"|\"weight\"}. Beispiel: {\"type\":\"op\",\"op\":\"+\",\"left\":{\"type\":\"ref\",\"field\":\"qty\"},\"right\":{\"type\":\"lit\",\"value\":10}}',\n\t[keys.configCalcDisplay]: 'Berechneten Wert anzeigen',\n\t[keys.validationCalcExpressionInvalid]: 'Gib einen gültigen Berechnungsausdruck ein',\n\t[keys.presentationPage]: 'Seite',\n\t[keys.presentationModal]: 'Modal',\n\t[keys.presentationDrawer]: 'Seitenpanel',\n\t[keys.presentationInline]: 'Inline',\n\t[keys.actionEmailTeam]: 'E-Mail ans Team',\n\t[keys.actionConfirmation]: 'Bestätigungs-E-Mail',\n\t[keys.actionSignedWebhook]: 'Signierter Webhook',\n\t[keys.actionConfigTo]: 'An',\n\t[keys.actionConfigSubject]: 'Betreff',\n\t[keys.actionConfigBody]: 'Nachrichtentext',\n\t[keys.actionConfigBodyDescription]:\n\t\t'Unterstützt {{ fieldName|fallback }}-Platzhalter, {{*}} für alle Antworten als Zeilen und {{*:table}} für alle Antworten als Tabelle.',\n\t[keys.actionConfigToField]: 'Name des E-Mail-Feldes',\n\t[keys.actionConfigToFieldDescription]:\n\t\t'Das E-Mail-Feld dieses Formulars, an das die Bestätigung gesendet wird.',\n\t[keys.actionConfigFrom]: 'Von',\n\t[keys.actionConfigFromDescription]:\n\t\t'Absenderadresse für diese Aktion. Leer lassen, um den Standard des E-Mail-Adapters zu verwenden.',\n\t[keys.actionConfigCc]: 'CC',\n\t[keys.actionConfigBcc]: 'BCC',\n\t[keys.actionConfigReplyTo]: 'Antwort an',\n\t[keys.recipientsGroupDepartments]: 'Abteilungen',\n\t[keys.recipientsGroupFields]: 'Formularfelder',\n\t[keys.validationRecipientInvalid]: 'Gib eine gültige E-Mail-Adresse ein.',\n\t[keys.validationRecipientUnknownField]: 'Verweist auf ein nicht mehr vorhandenes Feld.',\n\t[keys.validationRecipientNotAllowed]: 'Dieser Empfänger steht nicht auf der zulässigen Liste.',\n\t[keys.validationRecipientOptionsUnavailable]:\n\t\t'Empfängeroptionen sind derzeit nicht verfügbar. Bitte versuche es später erneut.',\n\t[keys.validationFromUnknown]: 'Wähle eine der konfigurierten Absenderadressen',\n\t[keys.validationFromUnavailable]:\n\t\t'Absenderadressen sind derzeit nicht verfügbar. Bitte versuche es später erneut.',\n\t[keys.actionConfigUrl]: 'URL',\n\t[keys.actionConfigUrlDescription]:\n\t\t'Der Endpunkt, der für jede Übermittlung einen signierten JSON-POST erhält.',\n\t[keys.actionConfigSecret]: 'Geheimer Schlüssel',\n\t[keys.actionConfigSecretDescription]:\n\t\t'HMAC-Schlüssel für den X-Form-Signature-Header, der mit dem Empfänger geteilt wird.',\n\t[keys.validationUrlInvalid]: 'Gib eine gültige http- oder https-URL ein',\n\t[keys.configActions]: 'Aktionen',\n\t[keys.fieldTypeConsent]: 'Einwilligung',\n\t[keys.consentConfigSource]: 'Quelle',\n\t[keys.consentConfigSourceDescription]:\n\t\t'Die Erklärung, der Besucher zustimmen. Wortlaut und Rechtsseite gehören zur Quelle: eine Änderung dort gilt für jedes Formular, das sie nutzt.',\n\t[keys.consentSourcesField]: 'Einwilligungsquellen',\n\t[keys.consentSourcesFieldDescription]:\n\t\t'Erklärungen, die Formulare in Einwilligungsfeldern verwenden können',\n\t[keys.consentSourceSingular]: 'Einwilligungsquelle',\n\t[keys.consentSourcePlural]: 'Einwilligungsquellen',\n\t[keys.consentSourceLabel]: 'Name',\n\t[keys.consentSourceStatement]: 'Erklärung',\n\t[keys.consentSourcePage]: 'Erklärungsquelle',\n\t[keys.consentSourcePageDescription]:\n\t\t'Muss gesetzt sein, wenn Formulareinsendungen einen Verweis auf deine Richtlinie speichern sollen.',\n\t[keys.consentSourcesUnavailable]:\n\t\t'Einwilligungsquellen sind nicht verfügbar. Versuche es gleich noch einmal.',\n\t[keys.resultsResponses]: 'Antworten',\n\t[keys.resultsNoResponses]: 'Noch keine Antworten',\n\t[keys.resultsTruncated]: 'Zeigt eine Stichprobe der Antworten',\n\t[keys.pollGroup]: 'Umfrage',\n\t[keys.pollResultsField]: 'Abstimmungsfeld',\n\t[keys.pollResultsFieldDescription]:\n\t\t'Das Auswahlfeld, dessen Antworten als Stimmen gezählt werden. Wird automatisch gewählt, wenn dein Formular genau ein Auswahlfeld hat. Verwende ein Auswahlfeld, niemals ein Freitext- oder personenbezogenes Feld.',\n\t[keys.pollVoteFieldChoose]: 'Wähle das Feld, dessen Antworten als Stimmen zählen.',\n\t[keys.pollVoteFieldMissing]: 'Füge ein Auswahlfeld als Abstimmungsfrage hinzu.',\n\t[keys.pollResultsVisibility]: 'Sichtbarkeit der Ergebnisse',\n\t[keys.pollVisibilityAfterVote]: 'Nach der Abstimmung',\n\t[keys.pollVisibilityAfterClose]: 'Nach Ende der Umfrage',\n\t[keys.pollClosesAt]: 'Endet am',\n\t[keys.pollClosed]: 'Diese Umfrage ist beendet.',\n\t[keys.pollResultsAfterClose]: 'Die Ergebnisse werden nach Ende der Umfrage angezeigt.',\n\t[keys.pollOptionSource]: 'Optionsquelle',\n\t[keys.pollOptionSourceDescription]:\n\t\t'Befüllt die Auswahlmöglichkeiten des Ergebnisfeldes mit App-Daten anstelle manuell erstellter Optionen.',\n\t[keys.pollSourceConfig]: 'Quelleinstellungen',\n\t[keys.pollOutcome]: 'Ergebnis',\n\t[keys.pollType]: 'Ergebnistyp',\n\t[keys.pollTypeDescription]: 'Wie die Gewinneroption bestimmt wird, sobald die Umfrage endet.',\n\t[keys.pollTypeManual]: 'Gewinner manuell festlegen',\n\t[keys.pollTypeMostVoted]: 'Meistgewählte Option gewinnt',\n\t[keys.pollTypeSource]: 'Gewinner aus der Optionsquelle',\n\t[keys.pollCloseButton]: 'Umfrage jetzt beenden',\n\t[keys.pollReopenButton]: 'Umfrage wieder öffnen',\n\t[keys.pollCloseHintManual]: 'Beim Beenden wird der ausgewählte Gewinner als Ergebnis erfasst.',\n\t[keys.pollCloseHintMostVoted]: 'Beim Beenden wird die meistgewählte Option zum Gewinner.',\n\t[keys.pollCloseHintSource]: 'Beim Beenden wird der Gewinner aus der Optionsquelle ermittelt.',\n\t[keys.pollReopenHint]:\n\t\t'Beim Wiederöffnen wird der erfasste Gewinner entfernt und es kann erneut abgestimmt werden.',\n\t[keys.pollCloseNeedsWinner]: 'Wähle zuerst einen Siegerwert.',\n\t[keys.pollCloseManualNoWinner]: 'Lege einen Gewinner fest, bevor du die Umfrage beendest.',\n\t[keys.pollWinningValue]: 'Siegerwert',\n\t[keys.pollWinningValueDescription]:\n\t\t'Wähle die Gewinneroption, sobald das Ergebnis feststeht. Beim Speichern wird der Entscheidungszeitpunkt erfasst; leeren öffnet das Ergebnis wieder.',\n\t[keys.pollResolvedAt]: 'Entschieden am',\n\t[keys.validationWinningValueUnknown]: 'Der Siegerwert muss eine der Umfrageoptionen sein.',\n\t[keys.validationWinningValueDisabled]: 'Aktiviere die Umfrage, bevor ein Ergebnis erfasst wird.',\n\t[keys.endpointOptionsLoading]: 'Optionen werden geladen...',\n\t[keys.endpointOptionsError]: 'Optionen konnten nicht geladen werden.',\n\t[keys.pollOptionsUnavailable]:\n\t\t'Umfrageoptionen sind derzeit nicht verfügbar. Bitte versuche es später erneut.',\n\t[keys.pollFinalResult]: 'Endergebnis',\n\t[keys.pollResultsError]: 'Ergebnisse konnten nicht geladen werden.',\n\t[keys.resultsWinner]: 'Gewinner',\n\t[keys.validationFileMissing]: 'Datei hochladen',\n\t[keys.validationFileMimeType]: 'Dateityp nicht erlaubt',\n\t[keys.validationFileTooLarge]: 'Datei ist zu groß',\n\t[keys.fieldTypeFile]: 'Datei-Upload',\n\t[keys.fileConfigMimeTypes]: 'Erlaubte Dateitypen',\n\t[keys.fileConfigMaxSize]: 'Maximale Größe (Bytes)',\n\t[keys.fileConfigMaxSizeDescription]: 'Dateien, die größer sind, werden abgelehnt.',\n\t[keys.fileTooLarge]: 'Datei ist zu groß (max. {max})',\n\t[keys.fileUploadMisconfigured]: 'Datei-Uploads sind für dieses Formular nicht konfiguriert',\n\t[keys.fileHintAccepted]: 'Akzeptiert: {types}',\n\t[keys.fileHintMaxSize]: 'Max. Größe: {max}',\n\t[keys.fileUploaded]: 'Hochgeladene Datei',\n\t[keys.fileUploading]: 'Wird hochgeladen',\n\t[keys.fileUploadFailed]: 'Upload fehlgeschlagen',\n\t[keys.fileRemove]: 'Entfernen',\n\t[keys.spamRateLimited]: 'Du hast zu viele Anfragen gesendet. Bitte versuche es später erneut.',\n\t[keys.spamRejected]: 'Deine Übermittlung konnte nicht verarbeitet werden.',\n\t[keys.spamCaptchaFailed]: 'Captcha-Überprüfung fehlgeschlagen. Bitte versuche es erneut.',\n\t[keys.collectionFormSingular]: 'Formular',\n\t[keys.collectionFormPlural]: 'Formulare',\n\t[keys.collectionSubmissionSingular]: 'Übermittlung',\n\t[keys.collectionSubmissionPlural]: 'Übermittlungen',\n\t[keys.statusComplete]: 'Vollständig',\n\t[keys.statusPartial]: 'Unvollständig',\n\t[keys.fieldTypeRepeater]: 'Wiederholungsfeld',\n\t[keys.configMinRows]: 'Minimale Zeilenanzahl',\n\t[keys.configMaxRows]: 'Maximale Zeilenanzahl',\n\t[keys.configAddLabel]: 'Beschriftung der Schaltfläche zum Hinzufügen',\n\t[keys.configSubFields]: 'Unterfelder',\n\t[keys.validationRepeaterMin]: 'Füge mindestens {min} Zeile(n) hinzu',\n\t[keys.validationRepeaterMax]: 'Entferne Zeilen, um {max} nicht zu überschreiten',\n\t[keys.repeaterAddRow]: 'Zeile hinzufügen',\n\t[keys.repeaterRemoveRow]: 'Entfernen',\n\t[keys.repeaterRow]: 'Zeile {n}',\n\t[keys.repeaterRowCount]: '{count} Zeile(n)',\n\t[keys.submissionConsent]: 'Einwilligung',\n\t[keys.submissionDetails]: 'Details zur Übermittlung',\n\t[keys.submissionConsentAgreed]: 'Zugestimmt',\n\t[keys.submissionConsentDeclined]: 'Abgelehnt',\n\t[keys.submissionMetaLocale]: 'Sprache',\n\t[keys.submissionMetaReceivedAt]: 'Empfangen am',\n\t[keys.submissionMetaIp]: 'IP-Adresse',\n\t[keys.submissionMetaUserAgent]: 'User-Agent',\n\t[keys.submissionMetaCaptcha]: 'Captcha',\n\t[keys.flowDescription]:\n\t\t'Nur für mehrstufige Formulare nötig: Felder zu Schritten gruppieren und den Ablauf dazwischen festlegen. Leer lassen, um das Formular als einzelne Seite anzuzeigen.',\n\t[keys.flowStepFallbackTitle]: 'Schritt {n}',\n\t[keys.flowFieldInStep]: 'in {step}',\n\t[keys.flowUnassigned]: 'In keinem Schritt',\n\t[keys.flowAssignToStep]: 'Zu Schritt hinzufügen',\n\t[keys.flowNextSequential]: 'Nächster Schritt in der Reihenfolge',\n\t[keys.flowNextTerminal]: 'Ende des Formulars',\n\t[keys.flowFields]: 'Felder',\n\t[keys.flowDefaultNext]: 'Standardmäßig weiter zu',\n\t[keys.flowConditionalTransitions]: 'Bedingte Übergänge',\n\t[keys.flowStepTitleLabel]: 'Titel',\n\t[keys.flowSelectStepPlaceholder]: 'Schritt auswählen…',\n\t[keys.flowMoveTransitionUp]: 'Übergang nach oben verschieben',\n\t[keys.flowMoveTransitionDown]: 'Übergang nach unten verschieben',\n\t[keys.flowRemoveTransition]: 'Übergang entfernen',\n\t[keys.flowAddAbove]: 'Oberhalb hinzufügen',\n\t[keys.flowAddBelow]: 'Unterhalb hinzufügen',\n\t[keys.flowGoTo]: 'gehe zu',\n\t[keys.flowWhen]: 'wenn',\n\t[keys.flowNoFields]: 'Noch keine Felder im Formular definiert.',\n\t[keys.flowFirstMatchWins]: '(erste Übereinstimmung gewinnt)',\n\t[keys.flowAddTransition]: 'Übergang hinzufügen',\n\t[keys.flowNoSteps]:\n\t\t'Keine Schritte definiert. Füge mindestens zwei Schritte hinzu, um die mehrseitige Ablaufsteuerung zu aktivieren.',\n\t[keys.flowFallbackTitle]: 'Ablauf',\n\t[keys.fieldTypeMessage]: 'Nachricht',\n\t[keys.configContent]: 'Inhalt',\n\t[keys.tabResponse]: 'Antwort',\n\t[keys.responseType]: 'Nach dem Absenden',\n\t[keys.responseTypeMessage]: 'Eine Nachricht anzeigen',\n\t[keys.responseTypeRedirect]: 'Zu einer URL weiterleiten',\n\t[keys.responseMessage]: 'Nachricht',\n\t[keys.responseRedirect]: 'Weiterleitung',\n\t[keys.responseUrl]: 'URL',\n\t[keys.responseRedirectReference]: 'Dokument',\n\t[keys.responseRedirectReferenceDescription]:\n\t\t'Zu einem internen Dokument statt zu einer URL weiterleiten',\n\t[keys.buttonsSubmitLabel]: 'Beschriftung der Absenden-Schaltfläche',\n\t[keys.buttonsNextLabel]: 'Beschriftung der Weiter-Schaltfläche',\n\t[keys.buttonsPrevLabel]: 'Beschriftung der Zurück-Schaltfläche',\n\t[keys.formBack]: 'Zurück',\n\t[keys.formNext]: 'Weiter',\n\t[keys.formSubmit]: 'Absenden',\n\t[keys.formMultistep]: 'Mehrstufig',\n\t[keys.formPollEnabled]: 'Umfrage',\n\t[keys.formClose]: 'Schließen',\n\t[keys.formSuccess]: 'Vielen Dank.',\n\t[keys.formSubmitFailed]: 'Übermittlung fehlgeschlagen',\n\t[keys.cellStepCountOne]: '{{count}} Schritt',\n\t[keys.cellStepCountOther]: '{{count}} Schritte',\n\t[keys.cellFieldCountOne]: '{{count}} Feld',\n\t[keys.cellFieldCountOther]: '{{count}} Felder',\n\t[keys.departmentsField]: 'Abteilungs-E-Mails',\n\t[keys.departmentsFieldDescription]:\n\t\t'Adressen, an die ein Formular Einsendungen weiterleiten kann, jeweils mit Bezeichnung.',\n\t[keys.departmentSingular]: 'Abteilungs-E-Mail',\n\t[keys.departmentPlural]: 'Abteilungs-E-Mails',\n\t[keys.departmentLabel]: 'Bezeichnung',\n\t[keys.departmentEmail]: 'E-Mail',\n\t[keys.departmentAddRow]: 'E-Mail hinzufügen',\n\t[keys.departmentRemoveRow]: 'E-Mail entfernen',\n}\n"],"mappings":"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"}
@@ -134,6 +134,8 @@ const en = {
134
134
  [keys.recipientsGroupFields]: "Form fields",
135
135
  [keys.validationRecipientInvalid]: "Enter a valid email address.",
136
136
  [keys.validationRecipientUnknownField]: "References a field that no longer exists.",
137
+ [keys.validationRecipientNotAllowed]: "This recipient is not in the allowed list.",
138
+ [keys.validationRecipientOptionsUnavailable]: "Recipient options are currently unavailable. Please try again later.",
137
139
  [keys.validationFromUnknown]: "Choose one of the configured from addresses",
138
140
  [keys.validationFromUnavailable]: "From addresses are currently unavailable. Please try again later.",
139
141
  [keys.actionConfigUrl]: "URL",
@@ -194,6 +196,7 @@ const en = {
194
196
  [keys.endpointOptionsError]: "Options could not be loaded.",
195
197
  [keys.pollOptionsUnavailable]: "Poll options are currently unavailable. Please try again later.",
196
198
  [keys.pollFinalResult]: "Final result",
199
+ [keys.pollResultsError]: "Results could not be loaded.",
197
200
  [keys.resultsWinner]: "Winner",
198
201
  [keys.validationFileMissing]: "Upload a file",
199
202
  [keys.validationFileMimeType]: "File type not allowed",
@@ -206,6 +209,10 @@ const en = {
206
209
  [keys.fileUploadMisconfigured]: "File uploads are not configured for this form",
207
210
  [keys.fileHintAccepted]: "Accepted: {types}",
208
211
  [keys.fileHintMaxSize]: "Max size: {max}",
212
+ [keys.fileUploaded]: "Uploaded file",
213
+ [keys.fileUploading]: "Uploading",
214
+ [keys.fileUploadFailed]: "Upload failed",
215
+ [keys.fileRemove]: "Remove",
209
216
  [keys.spamRateLimited]: "You have sent too many requests. Please try again later.",
210
217
  [keys.spamRejected]: "Your submission could not be processed.",
211
218
  [keys.spamCaptchaFailed]: "Captcha verification failed. Please try again.",
@@ -278,6 +285,9 @@ const en = {
278
285
  [keys.formSubmit]: "Submit",
279
286
  [keys.formMultistep]: "Multi-step",
280
287
  [keys.formPollEnabled]: "Poll",
288
+ [keys.formClose]: "Close",
289
+ [keys.formSuccess]: "Thank you.",
290
+ [keys.formSubmitFailed]: "Submission failed",
281
291
  [keys.cellStepCountOne]: "{{count}} step",
282
292
  [keys.cellStepCountOther]: "{{count}} steps",
283
293
  [keys.cellFieldCountOne]: "{{count}} Field",
@@ -1 +1 @@
1
- {"version":3,"file":"en.js","names":[],"sources":["../../src/translations/en.ts"],"sourcesContent":["import { keys, type TranslationKey } from './keys'\n\n/**\n * English values, keyed by the typed constants in `keys.ts` so the two stay in\n * lockstep. The `Record<TranslationKey, string>` annotation makes a missing or\n * unknown key a type error. `translations/index.ts` nests these for Payload.\n */\nexport const en: Record<TranslationKey, string> = {\n\t[keys.fieldTitle]: 'Title',\n\t[keys.fieldTypeText]: 'Text',\n\t[keys.fieldTypeTextarea]: 'Textarea',\n\t[keys.fieldTypeEmail]: 'Email',\n\t[keys.fieldTypeNumber]: 'Number',\n\t[keys.fieldTypeSelect]: 'Select',\n\t[keys.fieldTypeCountry]: 'Country',\n\t[keys.fieldTypeState]: 'State',\n\t[keys.fieldTypeCheckbox]: 'Checkbox',\n\t[keys.fieldTypeDate]: 'Date',\n\t[keys.configOptions]: 'Options',\n\t[keys.configOption]: 'Option',\n\t[keys.configOptionLabel]: 'Label',\n\t[keys.configOptionValue]: 'Value',\n\t[keys.validationRequired]: 'This field is required',\n\t[keys.validationEmail]: 'Enter a valid email address',\n\t[keys.validationNumber]: 'Enter a valid number',\n\t[keys.validationDate]: 'Enter a valid date',\n\t[keys.validationSelect]: 'Choose a valid option',\n\t[keys.validationCountry]: 'Choose a valid country',\n\t[keys.validationState]: 'Choose a valid state',\n\t[keys.validationRegexPattern]: 'Enter a valid regular expression',\n\t[keys.validationRegexFlags]: 'Enter valid regular expression flags, for example i or gi',\n\t[keys.validationEmailFieldUnknown]: 'Choose an existing email field on this form',\n\t[keys.validationResultsFieldUnknown]: 'Choose an eligible choice field on this form',\n\t[keys.formatYes]: 'Yes',\n\t[keys.formatNo]: 'No',\n\t[keys.configName]: 'Name',\n\t[keys.configLabel]: 'Label',\n\t[keys.configRequired]: 'Required',\n\t[keys.configWidth]: 'Width',\n\t[keys.configPlaceholder]: 'Placeholder',\n\t[keys.configDescription]: 'Description',\n\t[keys.configVisibleWhen]: 'Show this field when',\n\t[keys.configValidateWhen]: 'Validate this field only when',\n\t[keys.submissionAnswers]: 'Answers',\n\t[keys.submissionNoAnswers]: 'No answers',\n\t[keys.ruleMinLength]: 'Minimum length',\n\t[keys.ruleMaxLength]: 'Maximum length',\n\t[keys.ruleMin]: 'Minimum',\n\t[keys.ruleMax]: 'Maximum',\n\t[keys.ruleMinDate]: 'Earliest date',\n\t[keys.ruleMaxDate]: 'Latest date',\n\t[keys.rulePattern]: 'Pattern',\n\t[keys.ruleEmail]: 'Email',\n\t[keys.ruleUrl]: 'URL',\n\t[keys.ruleOneOf]: 'One of',\n\t[keys.ruleMatchesField]: 'Matches field',\n\t[keys.ruleNotAlreadySubmitted]: 'Not already submitted',\n\t[keys.ruleMinLengthMessage]: 'Must be at least {min} characters',\n\t[keys.ruleMaxLengthMessage]: 'Must be at most {max} characters',\n\t[keys.ruleMinMessage]: 'Must be at least {min}',\n\t[keys.ruleMaxMessage]: 'Must be at most {max}',\n\t[keys.ruleMinDateMessage]: 'Must be on or after {min}',\n\t[keys.ruleMaxDateMessage]: 'Must be on or before {max}',\n\t[keys.rulePatternMessage]: 'Invalid format',\n\t[keys.ruleEmailMessage]: 'Enter a valid email address',\n\t[keys.ruleUrlMessage]: 'Enter a valid URL',\n\t[keys.ruleOneOfMessage]: 'Choose an allowed value',\n\t[keys.ruleMatchesFieldMessage]: 'Does not match',\n\t[keys.ruleNotAlreadySubmittedMessage]: 'This value was already submitted',\n\t[keys.ruleMinLengthDescription]:\n\t\t'Fails when the entered text is shorter than the minimum number of characters.',\n\t[keys.ruleMaxLengthDescription]:\n\t\t'Fails when the entered text is longer than the maximum number of characters.',\n\t[keys.ruleMinDescription]: 'Fails when the entered number is below the minimum.',\n\t[keys.ruleMaxDescription]: 'Fails when the entered number is above the maximum.',\n\t[keys.ruleMinDateDescription]: 'Fails when the chosen date is earlier than the minimum date.',\n\t[keys.ruleMaxDateDescription]: 'Fails when the chosen date is later than the maximum date.',\n\t[keys.rulePatternDescription]:\n\t\t'Fails when the entered text does not match the regular expression.',\n\t[keys.ruleEmailDescription]: 'Fails when the entered value is not a valid email address.',\n\t[keys.ruleUrlDescription]: 'Fails when the entered value is not a valid http or https URL.',\n\t[keys.ruleOneOfDescription]:\n\t\t'Fails when the entered value is not one of the allowed values you list.',\n\t[keys.ruleMatchesFieldDescription]:\n\t\t\"Fails when this field's value does not equal the chosen field. Use it for confirm-email or confirm-password.\",\n\t[keys.ruleNotAlreadySubmittedDescription]:\n\t\t'Fails when this same value was already submitted to this form (checked on the server).',\n\t[keys.ruleFieldTargetInvalid]: 'The selected field no longer exists. Choose a valid field.',\n\t[keys.ruleParamMin]: 'Minimum',\n\t[keys.ruleParamMax]: 'Maximum',\n\t[keys.ruleParamMinDate]: 'Earliest date (YYYY-MM-DD)',\n\t[keys.ruleParamMaxDate]: 'Latest date (YYYY-MM-DD)',\n\t[keys.ruleParamPattern]: 'Pattern',\n\t[keys.ruleParamFlags]: 'Flags',\n\t[keys.ruleParamValues]: 'Allowed values',\n\t[keys.ruleParamField]: 'Field name',\n\t[keys.validationsLabel]: 'Validation rules',\n\t[keys.validationMessageLabel]: 'Custom message',\n\t[keys.conditionAddCondition]: 'Add condition',\n\t[keys.conditionAddOr]: 'Add \"or\" group',\n\t[keys.conditionAnd]: 'And',\n\t[keys.conditionOr]: 'Or',\n\t[keys.conditionRemove]: 'Remove',\n\t[keys.conditionNoFields]: 'Add named fields to this form to build a condition.',\n\t[keys.conditionEmpty]: 'No conditions. This field is always shown.',\n\t[keys.conditionSelectField]: 'Select a field',\n\t[keys.conditionTrue]: 'True',\n\t[keys.conditionFalse]: 'False',\n\t[keys.configHidden]: 'Hidden (capture without showing)',\n\t[keys.tabFields]: 'Fields',\n\t[keys.tabFlow]: 'Flow',\n\t[keys.tabActions]: 'Actions',\n\t[keys.tabField]: 'Field',\n\t[keys.tabValidation]: 'Validation',\n\t[keys.tabAdvanced]: 'Advanced',\n\t[keys.fieldTypeCalculation]: 'Calculation',\n\t[keys.configExpression]: 'Expression (JSON)',\n\t[keys.configExpressionDescription]:\n\t\t'Expression tree of nodes {\"type\":\"lit\"|\"ref\"|\"op\"|\"neg\"|\"fn\"|\"weight\"}. Example: {\"type\":\"op\",\"op\":\"+\",\"left\":{\"type\":\"ref\",\"field\":\"qty\"},\"right\":{\"type\":\"lit\",\"value\":10}}',\n\t[keys.configCalcDisplay]: 'Show computed value',\n\t[keys.validationCalcExpressionInvalid]: 'Enter a valid calculation expression',\n\t[keys.presentationPage]: 'Page',\n\t[keys.presentationModal]: 'Modal',\n\t[keys.presentationDrawer]: 'Drawer',\n\t[keys.presentationInline]: 'Inline',\n\t[keys.actionEmailTeam]: 'Email team',\n\t[keys.actionConfirmation]: 'Confirmation email',\n\t[keys.actionSignedWebhook]: 'Signed webhook',\n\t[keys.actionConfigTo]: 'To',\n\t[keys.actionConfigSubject]: 'Subject',\n\t[keys.actionConfigBody]: 'Body',\n\t[keys.actionConfigBodyDescription]:\n\t\t'Supports {{ fieldName|fallback }} tokens, {{*}} for all answers as lines, and {{*:table}} for all answers as a table.',\n\t[keys.actionConfigToField]: 'Email field name',\n\t[keys.actionConfigToFieldDescription]:\n\t\t'The email field on this form the confirmation is sent to.',\n\t[keys.actionConfigFrom]: 'From',\n\t[keys.actionConfigFromDescription]:\n\t\t'Sender address for this action. Leave empty to use the email adapter default.',\n\t[keys.actionConfigCc]: 'CC',\n\t[keys.actionConfigBcc]: 'BCC',\n\t[keys.actionConfigReplyTo]: 'Reply-to',\n\t[keys.recipientsGroupDepartments]: 'Departments',\n\t[keys.recipientsGroupFields]: 'Form fields',\n\t[keys.validationRecipientInvalid]: 'Enter a valid email address.',\n\t[keys.validationRecipientUnknownField]: 'References a field that no longer exists.',\n\t[keys.validationFromUnknown]: 'Choose one of the configured from addresses',\n\t[keys.validationFromUnavailable]:\n\t\t'From addresses are currently unavailable. Please try again later.',\n\t[keys.actionConfigUrl]: 'URL',\n\t[keys.actionConfigUrlDescription]:\n\t\t'The endpoint that receives a signed JSON POST for each submission.',\n\t[keys.actionConfigSecret]: 'Secret',\n\t[keys.actionConfigSecretDescription]:\n\t\t'HMAC key used for the X-Form-Signature header, shared with the receiver.',\n\t[keys.validationUrlInvalid]: 'Enter a valid http or https URL',\n\t[keys.configActions]: 'Actions',\n\t[keys.fieldTypeConsent]: 'Consent',\n\t[keys.consentConfigSource]: 'Source',\n\t[keys.consentConfigSourceDescription]:\n\t\t'The statement the visitor agrees to. Its wording and policy page live with the source, so an edit there applies to every form using it.',\n\t[keys.consentSourcesField]: 'Consent sources',\n\t[keys.consentSourcesFieldDescription]: 'Statements forms can utilize in consent fields',\n\t[keys.consentSourceSingular]: 'Consent source',\n\t[keys.consentSourcePlural]: 'Consent sources',\n\t[keys.consentSourceLabel]: 'Name',\n\t[keys.consentSourceStatement]: 'Statement',\n\t[keys.consentSourcePage]: 'Statement source',\n\t[keys.consentSourcePageDescription]:\n\t\t'Must be set if you want form submissions to save a reference to your policy.',\n\t[keys.consentSourcesUnavailable]: 'Consent sources are unavailable. Try again shortly.',\n\t[keys.resultsResponses]: 'responses',\n\t[keys.resultsNoResponses]: 'No responses yet',\n\t[keys.resultsTruncated]: 'Showing a sample of responses',\n\t[keys.pollGroup]: 'Poll',\n\t[keys.pollResultsField]: 'Vote field',\n\t[keys.pollResultsFieldDescription]:\n\t\t'The choice field whose answers are counted as votes. Auto-selected when your form has one choice field. Use a choice field, never a free-text or PII field.',\n\t[keys.pollVoteFieldChoose]: \"Choose which field's answers count as votes.\",\n\t[keys.pollVoteFieldMissing]: 'Add a choice field to use as the poll question.',\n\t[keys.pollResultsVisibility]: 'Results visibility',\n\t[keys.pollVisibilityAfterVote]: 'After voting',\n\t[keys.pollVisibilityAfterClose]: 'After the poll closes',\n\t[keys.pollClosesAt]: 'Closes at',\n\t[keys.pollClosed]: 'This poll is closed.',\n\t[keys.pollResultsAfterClose]: 'Results will be shown after the poll closes.',\n\t[keys.pollOptionSource]: 'Option source',\n\t[keys.pollOptionSourceDescription]:\n\t\t'Populate the results field choices from app data instead of hand-authored options.',\n\t[keys.pollSourceConfig]: 'Source settings',\n\t[keys.pollOutcome]: 'Outcome',\n\t[keys.pollType]: 'Outcome type',\n\t[keys.pollTypeDescription]: 'How the winning option is decided when the poll closes.',\n\t[keys.pollTypeManual]: 'Set the winner manually',\n\t[keys.pollTypeMostVoted]: 'Most-voted option wins',\n\t[keys.pollTypeSource]: 'Winner from the option source',\n\t[keys.pollCloseButton]: 'Close poll now',\n\t[keys.pollReopenButton]: 'Reopen poll',\n\t[keys.pollCloseHintManual]: 'Closing records the selected winner as the result.',\n\t[keys.pollCloseHintMostVoted]: 'Closing now picks the most-voted option as the winner.',\n\t[keys.pollCloseHintSource]: 'Closing now resolves the winner from the option source.',\n\t[keys.pollReopenHint]: 'Reopening clears the recorded winner and lets people vote again.',\n\t[keys.pollCloseNeedsWinner]: 'Select a winning value first.',\n\t[keys.pollCloseManualNoWinner]: 'Set a winner before closing the poll.',\n\t[keys.pollWinningValue]: 'Winning values',\n\t[keys.pollWinningValueDescription]:\n\t\t'Pick the winning option once the outcome is decided, or several on a tie. Saving records the resolution time; clear them to reopen the outcome.',\n\t[keys.pollResolvedAt]: 'Resolved at',\n\t[keys.validationWinningValueUnknown]: 'The winning value must be one of the poll options.',\n\t[keys.validationWinningValueDisabled]: 'Enable the poll before recording an outcome.',\n\t[keys.endpointOptionsLoading]: 'Loading options...',\n\t[keys.endpointOptionsError]: 'Options could not be loaded.',\n\t[keys.pollOptionsUnavailable]: 'Poll options are currently unavailable. Please try again later.',\n\t[keys.pollFinalResult]: 'Final result',\n\t[keys.resultsWinner]: 'Winner',\n\t[keys.validationFileMissing]: 'Upload a file',\n\t[keys.validationFileMimeType]: 'File type not allowed',\n\t[keys.validationFileTooLarge]: 'File is too large',\n\t[keys.fieldTypeFile]: 'File upload',\n\t[keys.fileConfigMimeTypes]: 'Allowed file types',\n\t[keys.fileConfigMaxSize]: 'Maximum size (bytes)',\n\t[keys.fileConfigMaxSizeDescription]: 'Files larger than this are rejected.',\n\t[keys.fileTooLarge]: 'File is too large (max {max})',\n\t[keys.fileUploadMisconfigured]: 'File uploads are not configured for this form',\n\t[keys.fileHintAccepted]: 'Accepted: {types}',\n\t[keys.fileHintMaxSize]: 'Max size: {max}',\n\t[keys.spamRateLimited]: 'You have sent too many requests. Please try again later.',\n\t[keys.spamRejected]: 'Your submission could not be processed.',\n\t[keys.spamCaptchaFailed]: 'Captcha verification failed. Please try again.',\n\t[keys.collectionFormSingular]: 'Form',\n\t[keys.collectionFormPlural]: 'Forms',\n\t[keys.collectionSubmissionSingular]: 'Submission',\n\t[keys.collectionSubmissionPlural]: 'Submissions',\n\t[keys.statusComplete]: 'Complete',\n\t[keys.statusPartial]: 'Partial',\n\t[keys.fieldTypeRepeater]: 'Repeater',\n\t[keys.configMinRows]: 'Minimum rows',\n\t[keys.configMaxRows]: 'Maximum rows',\n\t[keys.configAddLabel]: 'Add button label',\n\t[keys.configSubFields]: 'Sub-fields',\n\t[keys.validationRepeaterMin]: 'Add at least {min} row(s)',\n\t[keys.validationRepeaterMax]: 'Remove rows to stay within {max}',\n\t[keys.repeaterAddRow]: 'Add row',\n\t[keys.repeaterRemoveRow]: 'Remove',\n\t[keys.repeaterRow]: 'Row {n}',\n\t[keys.repeaterRowCount]: '{count} row(s)',\n\t[keys.submissionConsent]: 'Consent',\n\t[keys.submissionDetails]: 'Submission details',\n\t[keys.submissionConsentAgreed]: 'Agreed',\n\t[keys.submissionConsentDeclined]: 'Declined',\n\t[keys.submissionMetaLocale]: 'Locale',\n\t[keys.submissionMetaReceivedAt]: 'Received at',\n\t[keys.submissionMetaIp]: 'IP address',\n\t[keys.submissionMetaUserAgent]: 'User agent',\n\t[keys.submissionMetaCaptcha]: 'Captcha',\n\t[keys.flowDescription]:\n\t\t'Only needed for multi-step forms: group fields into steps and route between them. Leave empty to show the form as a single page.',\n\t[keys.flowStepFallbackTitle]: 'Step {n}',\n\t[keys.flowFieldInStep]: 'in {step}',\n\t[keys.flowUnassigned]: 'Not in any step',\n\t[keys.flowAssignToStep]: 'Add to step',\n\t[keys.flowNextSequential]: 'Next step in order',\n\t[keys.flowNextTerminal]: 'End of form',\n\t[keys.flowFields]: 'Fields',\n\t[keys.flowDefaultNext]: 'Default next',\n\t[keys.flowConditionalTransitions]: 'Conditional transitions',\n\t[keys.flowStepTitleLabel]: 'Title',\n\t[keys.flowSelectStepPlaceholder]: 'Select step…',\n\t[keys.flowMoveTransitionUp]: 'Move transition up',\n\t[keys.flowMoveTransitionDown]: 'Move transition down',\n\t[keys.flowRemoveTransition]: 'Remove transition',\n\t[keys.flowAddAbove]: 'Add above',\n\t[keys.flowAddBelow]: 'Add below',\n\t[keys.flowGoTo]: 'go to',\n\t[keys.flowWhen]: 'when',\n\t[keys.flowNoFields]: 'No fields defined on the form yet.',\n\t[keys.flowFirstMatchWins]: '(first match wins)',\n\t[keys.flowAddTransition]: 'Add transition',\n\t[keys.flowNoSteps]: 'No steps defined. Add at least two steps to enable multi-page flow routing.',\n\t[keys.flowFallbackTitle]: 'Flow',\n\t[keys.fieldTypeMessage]: 'Message',\n\t[keys.configContent]: 'Content',\n\t[keys.tabResponse]: 'Response',\n\t[keys.responseType]: 'After submit',\n\t[keys.responseTypeMessage]: 'Show a message',\n\t[keys.responseTypeRedirect]: 'Redirect to a URL',\n\t[keys.responseMessage]: 'Message',\n\t[keys.responseRedirect]: 'Redirect',\n\t[keys.responseUrl]: 'URL',\n\t[keys.responseRedirectReference]: 'Document',\n\t[keys.responseRedirectReferenceDescription]: 'Redirect to an internal document instead of a URL',\n\t[keys.buttonsSubmitLabel]: 'Submit button label',\n\t[keys.buttonsNextLabel]: 'Next button label',\n\t[keys.buttonsPrevLabel]: 'Previous button label',\n\t[keys.formBack]: 'Back',\n\t[keys.formNext]: 'Next',\n\t[keys.formSubmit]: 'Submit',\n\t[keys.formMultistep]: 'Multi-step',\n\t[keys.formPollEnabled]: 'Poll',\n\t[keys.cellStepCountOne]: '{{count}} step',\n\t[keys.cellStepCountOther]: '{{count}} steps',\n\t[keys.cellFieldCountOne]: '{{count}} Field',\n\t[keys.cellFieldCountOther]: '{{count}} Fields',\n\t[keys.departmentsField]: 'Department emails',\n\t[keys.departmentsFieldDescription]:\n\t\t'Addresses a form can route submissions to, each shown by its label.',\n\t[keys.departmentSingular]: 'Department email',\n\t[keys.departmentPlural]: 'Department emails',\n\t[keys.departmentLabel]: 'Label',\n\t[keys.departmentEmail]: 'Email',\n\t[keys.departmentAddRow]: 'Add email',\n\t[keys.departmentRemoveRow]: 'Remove email',\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"en.js","names":[],"sources":["../../src/translations/en.ts"],"sourcesContent":["import { keys, type TranslationKey } from './keys'\n\n/**\n * English values, keyed by the typed constants in `keys.ts` so the two stay in\n * lockstep. The `Record<TranslationKey, string>` annotation makes a missing or\n * unknown key a type error. `translations/index.ts` nests these for Payload.\n */\nexport const en: Record<TranslationKey, string> = {\n\t[keys.fieldTitle]: 'Title',\n\t[keys.fieldTypeText]: 'Text',\n\t[keys.fieldTypeTextarea]: 'Textarea',\n\t[keys.fieldTypeEmail]: 'Email',\n\t[keys.fieldTypeNumber]: 'Number',\n\t[keys.fieldTypeSelect]: 'Select',\n\t[keys.fieldTypeCountry]: 'Country',\n\t[keys.fieldTypeState]: 'State',\n\t[keys.fieldTypeCheckbox]: 'Checkbox',\n\t[keys.fieldTypeDate]: 'Date',\n\t[keys.configOptions]: 'Options',\n\t[keys.configOption]: 'Option',\n\t[keys.configOptionLabel]: 'Label',\n\t[keys.configOptionValue]: 'Value',\n\t[keys.validationRequired]: 'This field is required',\n\t[keys.validationEmail]: 'Enter a valid email address',\n\t[keys.validationNumber]: 'Enter a valid number',\n\t[keys.validationDate]: 'Enter a valid date',\n\t[keys.validationSelect]: 'Choose a valid option',\n\t[keys.validationCountry]: 'Choose a valid country',\n\t[keys.validationState]: 'Choose a valid state',\n\t[keys.validationRegexPattern]: 'Enter a valid regular expression',\n\t[keys.validationRegexFlags]: 'Enter valid regular expression flags, for example i or gi',\n\t[keys.validationEmailFieldUnknown]: 'Choose an existing email field on this form',\n\t[keys.validationResultsFieldUnknown]: 'Choose an eligible choice field on this form',\n\t[keys.formatYes]: 'Yes',\n\t[keys.formatNo]: 'No',\n\t[keys.configName]: 'Name',\n\t[keys.configLabel]: 'Label',\n\t[keys.configRequired]: 'Required',\n\t[keys.configWidth]: 'Width',\n\t[keys.configPlaceholder]: 'Placeholder',\n\t[keys.configDescription]: 'Description',\n\t[keys.configVisibleWhen]: 'Show this field when',\n\t[keys.configValidateWhen]: 'Validate this field only when',\n\t[keys.submissionAnswers]: 'Answers',\n\t[keys.submissionNoAnswers]: 'No answers',\n\t[keys.ruleMinLength]: 'Minimum length',\n\t[keys.ruleMaxLength]: 'Maximum length',\n\t[keys.ruleMin]: 'Minimum',\n\t[keys.ruleMax]: 'Maximum',\n\t[keys.ruleMinDate]: 'Earliest date',\n\t[keys.ruleMaxDate]: 'Latest date',\n\t[keys.rulePattern]: 'Pattern',\n\t[keys.ruleEmail]: 'Email',\n\t[keys.ruleUrl]: 'URL',\n\t[keys.ruleOneOf]: 'One of',\n\t[keys.ruleMatchesField]: 'Matches field',\n\t[keys.ruleNotAlreadySubmitted]: 'Not already submitted',\n\t[keys.ruleMinLengthMessage]: 'Must be at least {min} characters',\n\t[keys.ruleMaxLengthMessage]: 'Must be at most {max} characters',\n\t[keys.ruleMinMessage]: 'Must be at least {min}',\n\t[keys.ruleMaxMessage]: 'Must be at most {max}',\n\t[keys.ruleMinDateMessage]: 'Must be on or after {min}',\n\t[keys.ruleMaxDateMessage]: 'Must be on or before {max}',\n\t[keys.rulePatternMessage]: 'Invalid format',\n\t[keys.ruleEmailMessage]: 'Enter a valid email address',\n\t[keys.ruleUrlMessage]: 'Enter a valid URL',\n\t[keys.ruleOneOfMessage]: 'Choose an allowed value',\n\t[keys.ruleMatchesFieldMessage]: 'Does not match',\n\t[keys.ruleNotAlreadySubmittedMessage]: 'This value was already submitted',\n\t[keys.ruleMinLengthDescription]:\n\t\t'Fails when the entered text is shorter than the minimum number of characters.',\n\t[keys.ruleMaxLengthDescription]:\n\t\t'Fails when the entered text is longer than the maximum number of characters.',\n\t[keys.ruleMinDescription]: 'Fails when the entered number is below the minimum.',\n\t[keys.ruleMaxDescription]: 'Fails when the entered number is above the maximum.',\n\t[keys.ruleMinDateDescription]: 'Fails when the chosen date is earlier than the minimum date.',\n\t[keys.ruleMaxDateDescription]: 'Fails when the chosen date is later than the maximum date.',\n\t[keys.rulePatternDescription]:\n\t\t'Fails when the entered text does not match the regular expression.',\n\t[keys.ruleEmailDescription]: 'Fails when the entered value is not a valid email address.',\n\t[keys.ruleUrlDescription]: 'Fails when the entered value is not a valid http or https URL.',\n\t[keys.ruleOneOfDescription]:\n\t\t'Fails when the entered value is not one of the allowed values you list.',\n\t[keys.ruleMatchesFieldDescription]:\n\t\t\"Fails when this field's value does not equal the chosen field. Use it for confirm-email or confirm-password.\",\n\t[keys.ruleNotAlreadySubmittedDescription]:\n\t\t'Fails when this same value was already submitted to this form (checked on the server).',\n\t[keys.ruleFieldTargetInvalid]: 'The selected field no longer exists. Choose a valid field.',\n\t[keys.ruleParamMin]: 'Minimum',\n\t[keys.ruleParamMax]: 'Maximum',\n\t[keys.ruleParamMinDate]: 'Earliest date (YYYY-MM-DD)',\n\t[keys.ruleParamMaxDate]: 'Latest date (YYYY-MM-DD)',\n\t[keys.ruleParamPattern]: 'Pattern',\n\t[keys.ruleParamFlags]: 'Flags',\n\t[keys.ruleParamValues]: 'Allowed values',\n\t[keys.ruleParamField]: 'Field name',\n\t[keys.validationsLabel]: 'Validation rules',\n\t[keys.validationMessageLabel]: 'Custom message',\n\t[keys.conditionAddCondition]: 'Add condition',\n\t[keys.conditionAddOr]: 'Add \"or\" group',\n\t[keys.conditionAnd]: 'And',\n\t[keys.conditionOr]: 'Or',\n\t[keys.conditionRemove]: 'Remove',\n\t[keys.conditionNoFields]: 'Add named fields to this form to build a condition.',\n\t[keys.conditionEmpty]: 'No conditions. This field is always shown.',\n\t[keys.conditionSelectField]: 'Select a field',\n\t[keys.conditionTrue]: 'True',\n\t[keys.conditionFalse]: 'False',\n\t[keys.configHidden]: 'Hidden (capture without showing)',\n\t[keys.tabFields]: 'Fields',\n\t[keys.tabFlow]: 'Flow',\n\t[keys.tabActions]: 'Actions',\n\t[keys.tabField]: 'Field',\n\t[keys.tabValidation]: 'Validation',\n\t[keys.tabAdvanced]: 'Advanced',\n\t[keys.fieldTypeCalculation]: 'Calculation',\n\t[keys.configExpression]: 'Expression (JSON)',\n\t[keys.configExpressionDescription]:\n\t\t'Expression tree of nodes {\"type\":\"lit\"|\"ref\"|\"op\"|\"neg\"|\"fn\"|\"weight\"}. Example: {\"type\":\"op\",\"op\":\"+\",\"left\":{\"type\":\"ref\",\"field\":\"qty\"},\"right\":{\"type\":\"lit\",\"value\":10}}',\n\t[keys.configCalcDisplay]: 'Show computed value',\n\t[keys.validationCalcExpressionInvalid]: 'Enter a valid calculation expression',\n\t[keys.presentationPage]: 'Page',\n\t[keys.presentationModal]: 'Modal',\n\t[keys.presentationDrawer]: 'Drawer',\n\t[keys.presentationInline]: 'Inline',\n\t[keys.actionEmailTeam]: 'Email team',\n\t[keys.actionConfirmation]: 'Confirmation email',\n\t[keys.actionSignedWebhook]: 'Signed webhook',\n\t[keys.actionConfigTo]: 'To',\n\t[keys.actionConfigSubject]: 'Subject',\n\t[keys.actionConfigBody]: 'Body',\n\t[keys.actionConfigBodyDescription]:\n\t\t'Supports {{ fieldName|fallback }} tokens, {{*}} for all answers as lines, and {{*:table}} for all answers as a table.',\n\t[keys.actionConfigToField]: 'Email field name',\n\t[keys.actionConfigToFieldDescription]:\n\t\t'The email field on this form the confirmation is sent to.',\n\t[keys.actionConfigFrom]: 'From',\n\t[keys.actionConfigFromDescription]:\n\t\t'Sender address for this action. Leave empty to use the email adapter default.',\n\t[keys.actionConfigCc]: 'CC',\n\t[keys.actionConfigBcc]: 'BCC',\n\t[keys.actionConfigReplyTo]: 'Reply-to',\n\t[keys.recipientsGroupDepartments]: 'Departments',\n\t[keys.recipientsGroupFields]: 'Form fields',\n\t[keys.validationRecipientInvalid]: 'Enter a valid email address.',\n\t[keys.validationRecipientUnknownField]: 'References a field that no longer exists.',\n\t[keys.validationRecipientNotAllowed]: 'This recipient is not in the allowed list.',\n\t[keys.validationRecipientOptionsUnavailable]:\n\t\t'Recipient options are currently unavailable. Please try again later.',\n\t[keys.validationFromUnknown]: 'Choose one of the configured from addresses',\n\t[keys.validationFromUnavailable]:\n\t\t'From addresses are currently unavailable. Please try again later.',\n\t[keys.actionConfigUrl]: 'URL',\n\t[keys.actionConfigUrlDescription]:\n\t\t'The endpoint that receives a signed JSON POST for each submission.',\n\t[keys.actionConfigSecret]: 'Secret',\n\t[keys.actionConfigSecretDescription]:\n\t\t'HMAC key used for the X-Form-Signature header, shared with the receiver.',\n\t[keys.validationUrlInvalid]: 'Enter a valid http or https URL',\n\t[keys.configActions]: 'Actions',\n\t[keys.fieldTypeConsent]: 'Consent',\n\t[keys.consentConfigSource]: 'Source',\n\t[keys.consentConfigSourceDescription]:\n\t\t'The statement the visitor agrees to. Its wording and policy page live with the source, so an edit there applies to every form using it.',\n\t[keys.consentSourcesField]: 'Consent sources',\n\t[keys.consentSourcesFieldDescription]: 'Statements forms can utilize in consent fields',\n\t[keys.consentSourceSingular]: 'Consent source',\n\t[keys.consentSourcePlural]: 'Consent sources',\n\t[keys.consentSourceLabel]: 'Name',\n\t[keys.consentSourceStatement]: 'Statement',\n\t[keys.consentSourcePage]: 'Statement source',\n\t[keys.consentSourcePageDescription]:\n\t\t'Must be set if you want form submissions to save a reference to your policy.',\n\t[keys.consentSourcesUnavailable]: 'Consent sources are unavailable. Try again shortly.',\n\t[keys.resultsResponses]: 'responses',\n\t[keys.resultsNoResponses]: 'No responses yet',\n\t[keys.resultsTruncated]: 'Showing a sample of responses',\n\t[keys.pollGroup]: 'Poll',\n\t[keys.pollResultsField]: 'Vote field',\n\t[keys.pollResultsFieldDescription]:\n\t\t'The choice field whose answers are counted as votes. Auto-selected when your form has one choice field. Use a choice field, never a free-text or PII field.',\n\t[keys.pollVoteFieldChoose]: \"Choose which field's answers count as votes.\",\n\t[keys.pollVoteFieldMissing]: 'Add a choice field to use as the poll question.',\n\t[keys.pollResultsVisibility]: 'Results visibility',\n\t[keys.pollVisibilityAfterVote]: 'After voting',\n\t[keys.pollVisibilityAfterClose]: 'After the poll closes',\n\t[keys.pollClosesAt]: 'Closes at',\n\t[keys.pollClosed]: 'This poll is closed.',\n\t[keys.pollResultsAfterClose]: 'Results will be shown after the poll closes.',\n\t[keys.pollOptionSource]: 'Option source',\n\t[keys.pollOptionSourceDescription]:\n\t\t'Populate the results field choices from app data instead of hand-authored options.',\n\t[keys.pollSourceConfig]: 'Source settings',\n\t[keys.pollOutcome]: 'Outcome',\n\t[keys.pollType]: 'Outcome type',\n\t[keys.pollTypeDescription]: 'How the winning option is decided when the poll closes.',\n\t[keys.pollTypeManual]: 'Set the winner manually',\n\t[keys.pollTypeMostVoted]: 'Most-voted option wins',\n\t[keys.pollTypeSource]: 'Winner from the option source',\n\t[keys.pollCloseButton]: 'Close poll now',\n\t[keys.pollReopenButton]: 'Reopen poll',\n\t[keys.pollCloseHintManual]: 'Closing records the selected winner as the result.',\n\t[keys.pollCloseHintMostVoted]: 'Closing now picks the most-voted option as the winner.',\n\t[keys.pollCloseHintSource]: 'Closing now resolves the winner from the option source.',\n\t[keys.pollReopenHint]: 'Reopening clears the recorded winner and lets people vote again.',\n\t[keys.pollCloseNeedsWinner]: 'Select a winning value first.',\n\t[keys.pollCloseManualNoWinner]: 'Set a winner before closing the poll.',\n\t[keys.pollWinningValue]: 'Winning values',\n\t[keys.pollWinningValueDescription]:\n\t\t'Pick the winning option once the outcome is decided, or several on a tie. Saving records the resolution time; clear them to reopen the outcome.',\n\t[keys.pollResolvedAt]: 'Resolved at',\n\t[keys.validationWinningValueUnknown]: 'The winning value must be one of the poll options.',\n\t[keys.validationWinningValueDisabled]: 'Enable the poll before recording an outcome.',\n\t[keys.endpointOptionsLoading]: 'Loading options...',\n\t[keys.endpointOptionsError]: 'Options could not be loaded.',\n\t[keys.pollOptionsUnavailable]: 'Poll options are currently unavailable. Please try again later.',\n\t[keys.pollFinalResult]: 'Final result',\n\t[keys.pollResultsError]: 'Results could not be loaded.',\n\t[keys.resultsWinner]: 'Winner',\n\t[keys.validationFileMissing]: 'Upload a file',\n\t[keys.validationFileMimeType]: 'File type not allowed',\n\t[keys.validationFileTooLarge]: 'File is too large',\n\t[keys.fieldTypeFile]: 'File upload',\n\t[keys.fileConfigMimeTypes]: 'Allowed file types',\n\t[keys.fileConfigMaxSize]: 'Maximum size (bytes)',\n\t[keys.fileConfigMaxSizeDescription]: 'Files larger than this are rejected.',\n\t[keys.fileTooLarge]: 'File is too large (max {max})',\n\t[keys.fileUploadMisconfigured]: 'File uploads are not configured for this form',\n\t[keys.fileHintAccepted]: 'Accepted: {types}',\n\t[keys.fileHintMaxSize]: 'Max size: {max}',\n\t[keys.fileUploaded]: 'Uploaded file',\n\t[keys.fileUploading]: 'Uploading',\n\t[keys.fileUploadFailed]: 'Upload failed',\n\t[keys.fileRemove]: 'Remove',\n\t[keys.spamRateLimited]: 'You have sent too many requests. Please try again later.',\n\t[keys.spamRejected]: 'Your submission could not be processed.',\n\t[keys.spamCaptchaFailed]: 'Captcha verification failed. Please try again.',\n\t[keys.collectionFormSingular]: 'Form',\n\t[keys.collectionFormPlural]: 'Forms',\n\t[keys.collectionSubmissionSingular]: 'Submission',\n\t[keys.collectionSubmissionPlural]: 'Submissions',\n\t[keys.statusComplete]: 'Complete',\n\t[keys.statusPartial]: 'Partial',\n\t[keys.fieldTypeRepeater]: 'Repeater',\n\t[keys.configMinRows]: 'Minimum rows',\n\t[keys.configMaxRows]: 'Maximum rows',\n\t[keys.configAddLabel]: 'Add button label',\n\t[keys.configSubFields]: 'Sub-fields',\n\t[keys.validationRepeaterMin]: 'Add at least {min} row(s)',\n\t[keys.validationRepeaterMax]: 'Remove rows to stay within {max}',\n\t[keys.repeaterAddRow]: 'Add row',\n\t[keys.repeaterRemoveRow]: 'Remove',\n\t[keys.repeaterRow]: 'Row {n}',\n\t[keys.repeaterRowCount]: '{count} row(s)',\n\t[keys.submissionConsent]: 'Consent',\n\t[keys.submissionDetails]: 'Submission details',\n\t[keys.submissionConsentAgreed]: 'Agreed',\n\t[keys.submissionConsentDeclined]: 'Declined',\n\t[keys.submissionMetaLocale]: 'Locale',\n\t[keys.submissionMetaReceivedAt]: 'Received at',\n\t[keys.submissionMetaIp]: 'IP address',\n\t[keys.submissionMetaUserAgent]: 'User agent',\n\t[keys.submissionMetaCaptcha]: 'Captcha',\n\t[keys.flowDescription]:\n\t\t'Only needed for multi-step forms: group fields into steps and route between them. Leave empty to show the form as a single page.',\n\t[keys.flowStepFallbackTitle]: 'Step {n}',\n\t[keys.flowFieldInStep]: 'in {step}',\n\t[keys.flowUnassigned]: 'Not in any step',\n\t[keys.flowAssignToStep]: 'Add to step',\n\t[keys.flowNextSequential]: 'Next step in order',\n\t[keys.flowNextTerminal]: 'End of form',\n\t[keys.flowFields]: 'Fields',\n\t[keys.flowDefaultNext]: 'Default next',\n\t[keys.flowConditionalTransitions]: 'Conditional transitions',\n\t[keys.flowStepTitleLabel]: 'Title',\n\t[keys.flowSelectStepPlaceholder]: 'Select step…',\n\t[keys.flowMoveTransitionUp]: 'Move transition up',\n\t[keys.flowMoveTransitionDown]: 'Move transition down',\n\t[keys.flowRemoveTransition]: 'Remove transition',\n\t[keys.flowAddAbove]: 'Add above',\n\t[keys.flowAddBelow]: 'Add below',\n\t[keys.flowGoTo]: 'go to',\n\t[keys.flowWhen]: 'when',\n\t[keys.flowNoFields]: 'No fields defined on the form yet.',\n\t[keys.flowFirstMatchWins]: '(first match wins)',\n\t[keys.flowAddTransition]: 'Add transition',\n\t[keys.flowNoSteps]: 'No steps defined. Add at least two steps to enable multi-page flow routing.',\n\t[keys.flowFallbackTitle]: 'Flow',\n\t[keys.fieldTypeMessage]: 'Message',\n\t[keys.configContent]: 'Content',\n\t[keys.tabResponse]: 'Response',\n\t[keys.responseType]: 'After submit',\n\t[keys.responseTypeMessage]: 'Show a message',\n\t[keys.responseTypeRedirect]: 'Redirect to a URL',\n\t[keys.responseMessage]: 'Message',\n\t[keys.responseRedirect]: 'Redirect',\n\t[keys.responseUrl]: 'URL',\n\t[keys.responseRedirectReference]: 'Document',\n\t[keys.responseRedirectReferenceDescription]: 'Redirect to an internal document instead of a URL',\n\t[keys.buttonsSubmitLabel]: 'Submit button label',\n\t[keys.buttonsNextLabel]: 'Next button label',\n\t[keys.buttonsPrevLabel]: 'Previous button label',\n\t[keys.formBack]: 'Back',\n\t[keys.formNext]: 'Next',\n\t[keys.formSubmit]: 'Submit',\n\t[keys.formMultistep]: 'Multi-step',\n\t[keys.formPollEnabled]: 'Poll',\n\t[keys.formClose]: 'Close',\n\t[keys.formSuccess]: 'Thank you.',\n\t[keys.formSubmitFailed]: 'Submission failed',\n\t[keys.cellStepCountOne]: '{{count}} step',\n\t[keys.cellStepCountOther]: '{{count}} steps',\n\t[keys.cellFieldCountOne]: '{{count}} Field',\n\t[keys.cellFieldCountOther]: '{{count}} Fields',\n\t[keys.departmentsField]: 'Department emails',\n\t[keys.departmentsFieldDescription]:\n\t\t'Addresses a form can route submissions to, each shown by its label.',\n\t[keys.departmentSingular]: 'Department email',\n\t[keys.departmentPlural]: 'Department emails',\n\t[keys.departmentLabel]: 'Label',\n\t[keys.departmentEmail]: 'Email',\n\t[keys.departmentAddRow]: 'Add email',\n\t[keys.departmentRemoveRow]: 'Remove email',\n}\n"],"mappings":"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"}
@@ -133,6 +133,8 @@ declare const keys: {
133
133
  readonly recipientsGroupFields: "formBuilder:recipients.group.fields";
134
134
  readonly validationRecipientInvalid: "formBuilder:validation.recipient.invalid";
135
135
  readonly validationRecipientUnknownField: "formBuilder:validation.recipient.unknownField";
136
+ readonly validationRecipientNotAllowed: "formBuilder:validation.recipient.notAllowed";
137
+ readonly validationRecipientOptionsUnavailable: "formBuilder:validation.recipient.optionsUnavailable";
136
138
  readonly validationFromUnknown: "formBuilder:validation.fromUnknown";
137
139
  readonly validationFromUnavailable: "formBuilder:validation.fromUnavailable";
138
140
  readonly actionConfigUrl: "formBuilder:action.config.url";
@@ -193,6 +195,7 @@ declare const keys: {
193
195
  readonly endpointOptionsError: "formBuilder:endpointOptions.error";
194
196
  readonly pollOptionsUnavailable: "formBuilder:poll.optionsUnavailable";
195
197
  readonly pollFinalResult: "formBuilder:poll.finalResult";
198
+ readonly pollResultsError: "formBuilder:poll.resultsError";
196
199
  readonly resultsWinner: "formBuilder:results.winner";
197
200
  readonly validationFileMissing: "formBuilder:validation.file.missing";
198
201
  readonly validationFileMimeType: "formBuilder:validation.file.mimeType";
@@ -205,6 +208,10 @@ declare const keys: {
205
208
  readonly fileUploadMisconfigured: "formBuilder:file.uploadMisconfigured";
206
209
  readonly fileHintAccepted: "formBuilder:file.hint.accepted";
207
210
  readonly fileHintMaxSize: "formBuilder:file.hint.maxSize";
211
+ readonly fileUploaded: "formBuilder:file.uploaded";
212
+ readonly fileUploading: "formBuilder:file.uploading";
213
+ readonly fileUploadFailed: "formBuilder:file.uploadFailed";
214
+ readonly fileRemove: "formBuilder:file.remove";
208
215
  readonly spamRateLimited: "formBuilder:spam.rateLimited";
209
216
  readonly spamRejected: "formBuilder:spam.rejected";
210
217
  readonly spamCaptchaFailed: "formBuilder:spam.captchaFailed";
@@ -277,6 +284,9 @@ declare const keys: {
277
284
  readonly formSubmit: "formBuilder:form.submit";
278
285
  readonly formMultistep: "formBuilder:form.multistep";
279
286
  readonly formPollEnabled: "formBuilder:form.pollEnabled";
287
+ readonly formClose: "formBuilder:form.close";
288
+ readonly formSuccess: "formBuilder:form.success";
289
+ readonly formSubmitFailed: "formBuilder:form.submitFailed";
280
290
  readonly cellStepCountOne: "formBuilder:cell.stepCount.one";
281
291
  readonly cellStepCountOther: "formBuilder:cell.stepCount.other";
282
292
  readonly cellFieldCountOne: "formBuilder:cell.fieldCount.one";
@@ -133,6 +133,8 @@ const keys = {
133
133
  recipientsGroupFields: "formBuilder:recipients.group.fields",
134
134
  validationRecipientInvalid: "formBuilder:validation.recipient.invalid",
135
135
  validationRecipientUnknownField: "formBuilder:validation.recipient.unknownField",
136
+ validationRecipientNotAllowed: "formBuilder:validation.recipient.notAllowed",
137
+ validationRecipientOptionsUnavailable: "formBuilder:validation.recipient.optionsUnavailable",
136
138
  validationFromUnknown: "formBuilder:validation.fromUnknown",
137
139
  validationFromUnavailable: "formBuilder:validation.fromUnavailable",
138
140
  actionConfigUrl: "formBuilder:action.config.url",
@@ -193,6 +195,7 @@ const keys = {
193
195
  endpointOptionsError: "formBuilder:endpointOptions.error",
194
196
  pollOptionsUnavailable: "formBuilder:poll.optionsUnavailable",
195
197
  pollFinalResult: "formBuilder:poll.finalResult",
198
+ pollResultsError: "formBuilder:poll.resultsError",
196
199
  resultsWinner: "formBuilder:results.winner",
197
200
  validationFileMissing: "formBuilder:validation.file.missing",
198
201
  validationFileMimeType: "formBuilder:validation.file.mimeType",
@@ -205,6 +208,10 @@ const keys = {
205
208
  fileUploadMisconfigured: "formBuilder:file.uploadMisconfigured",
206
209
  fileHintAccepted: "formBuilder:file.hint.accepted",
207
210
  fileHintMaxSize: "formBuilder:file.hint.maxSize",
211
+ fileUploaded: "formBuilder:file.uploaded",
212
+ fileUploading: "formBuilder:file.uploading",
213
+ fileUploadFailed: "formBuilder:file.uploadFailed",
214
+ fileRemove: "formBuilder:file.remove",
208
215
  spamRateLimited: "formBuilder:spam.rateLimited",
209
216
  spamRejected: "formBuilder:spam.rejected",
210
217
  spamCaptchaFailed: "formBuilder:spam.captchaFailed",
@@ -277,6 +284,9 @@ const keys = {
277
284
  formSubmit: "formBuilder:form.submit",
278
285
  formMultistep: "formBuilder:form.multistep",
279
286
  formPollEnabled: "formBuilder:form.pollEnabled",
287
+ formClose: "formBuilder:form.close",
288
+ formSuccess: "formBuilder:form.success",
289
+ formSubmitFailed: "formBuilder:form.submitFailed",
280
290
  cellStepCountOne: "formBuilder:cell.stepCount.one",
281
291
  cellStepCountOther: "formBuilder:cell.stepCount.other",
282
292
  cellFieldCountOne: "formBuilder:cell.fieldCount.one",
@@ -1 +1 @@
1
- {"version":3,"file":"keys.js","names":[],"sources":["../../src/translations/keys.ts"],"sourcesContent":["/**\n * Typed translation keys. Lookups must go through these constants, not string\n * literals (enforced by requireI18nKeysTyped.grit). Every key here must have a\n * value in every locale (`en.ts`), or it is a type error.\n */\nexport const keys = {\n\tfieldTitle: 'formBuilder:fieldTitle',\n\tfieldTypeText: 'formBuilder:fieldType.text',\n\tfieldTypeTextarea: 'formBuilder:fieldType.textarea',\n\tfieldTypeEmail: 'formBuilder:fieldType.email',\n\tfieldTypeNumber: 'formBuilder:fieldType.number',\n\tfieldTypeSelect: 'formBuilder:fieldType.select',\n\tfieldTypeCountry: 'formBuilder:fieldType.country',\n\tfieldTypeState: 'formBuilder:fieldType.state',\n\tfieldTypeCheckbox: 'formBuilder:fieldType.checkbox',\n\tfieldTypeDate: 'formBuilder:fieldType.date',\n\tconfigOptions: 'formBuilder:config.options',\n\tconfigOption: 'formBuilder:config.option',\n\tconfigOptionLabel: 'formBuilder:config.optionLabel',\n\tconfigOptionValue: 'formBuilder:config.optionValue',\n\tvalidationRequired: 'formBuilder:validation.required',\n\tvalidationEmail: 'formBuilder:validation.email',\n\tvalidationNumber: 'formBuilder:validation.number',\n\tvalidationDate: 'formBuilder:validation.date',\n\tvalidationSelect: 'formBuilder:validation.select',\n\tvalidationCountry: 'formBuilder:validation.country',\n\tvalidationState: 'formBuilder:validation.state',\n\tvalidationRegexPattern: 'formBuilder:validation.regexPattern',\n\tvalidationRegexFlags: 'formBuilder:validation.regexFlags',\n\tvalidationEmailFieldUnknown: 'formBuilder:validation.emailFieldUnknown',\n\tvalidationResultsFieldUnknown: 'formBuilder:validation.resultsFieldUnknown',\n\tformatYes: 'formBuilder:format.yes',\n\tformatNo: 'formBuilder:format.no',\n\tconfigName: 'formBuilder:config.name',\n\tconfigLabel: 'formBuilder:config.label',\n\tconfigRequired: 'formBuilder:config.required',\n\tconfigWidth: 'formBuilder:config.width',\n\tconfigPlaceholder: 'formBuilder:config.placeholder',\n\tconfigDescription: 'formBuilder:config.description',\n\tconfigVisibleWhen: 'formBuilder:config.visibleWhen',\n\tconfigValidateWhen: 'formBuilder:config.validateWhen',\n\tsubmissionAnswers: 'formBuilder:submission.answers',\n\tsubmissionNoAnswers: 'formBuilder:submission.noAnswers',\n\truleMinLength: 'formBuilder:rule.minLength.label',\n\truleMaxLength: 'formBuilder:rule.maxLength.label',\n\truleMin: 'formBuilder:rule.min.label',\n\truleMax: 'formBuilder:rule.max.label',\n\truleMinDate: 'formBuilder:rule.minDate.label',\n\truleMaxDate: 'formBuilder:rule.maxDate.label',\n\trulePattern: 'formBuilder:rule.pattern.label',\n\truleEmail: 'formBuilder:rule.email.label',\n\truleUrl: 'formBuilder:rule.url.label',\n\truleOneOf: 'formBuilder:rule.oneOf.label',\n\truleMatchesField: 'formBuilder:rule.matchesField.label',\n\truleNotAlreadySubmitted: 'formBuilder:rule.notAlreadySubmitted.label',\n\truleMinLengthMessage: 'formBuilder:rule.minLength.message',\n\truleMaxLengthMessage: 'formBuilder:rule.maxLength.message',\n\truleMinMessage: 'formBuilder:rule.min.message',\n\truleMaxMessage: 'formBuilder:rule.max.message',\n\truleMinDateMessage: 'formBuilder:rule.minDate.message',\n\truleMaxDateMessage: 'formBuilder:rule.maxDate.message',\n\trulePatternMessage: 'formBuilder:rule.pattern.message',\n\truleEmailMessage: 'formBuilder:rule.email.message',\n\truleUrlMessage: 'formBuilder:rule.url.message',\n\truleOneOfMessage: 'formBuilder:rule.oneOf.message',\n\truleMatchesFieldMessage: 'formBuilder:rule.matchesField.message',\n\truleNotAlreadySubmittedMessage: 'formBuilder:rule.notAlreadySubmitted.message',\n\truleMinLengthDescription: 'formBuilder:rule.minLength.description',\n\truleMaxLengthDescription: 'formBuilder:rule.maxLength.description',\n\truleMinDescription: 'formBuilder:rule.min.description',\n\truleMaxDescription: 'formBuilder:rule.max.description',\n\truleMinDateDescription: 'formBuilder:rule.minDate.description',\n\truleMaxDateDescription: 'formBuilder:rule.maxDate.description',\n\trulePatternDescription: 'formBuilder:rule.pattern.description',\n\truleEmailDescription: 'formBuilder:rule.email.description',\n\truleUrlDescription: 'formBuilder:rule.url.description',\n\truleOneOfDescription: 'formBuilder:rule.oneOf.description',\n\truleMatchesFieldDescription: 'formBuilder:rule.matchesField.description',\n\truleNotAlreadySubmittedDescription: 'formBuilder:rule.notAlreadySubmitted.description',\n\truleFieldTargetInvalid: 'formBuilder:rule.fieldTargetInvalid',\n\truleParamMin: 'formBuilder:rule.param.min',\n\truleParamMax: 'formBuilder:rule.param.max',\n\truleParamMinDate: 'formBuilder:rule.param.minDate',\n\truleParamMaxDate: 'formBuilder:rule.param.maxDate',\n\truleParamPattern: 'formBuilder:rule.param.pattern',\n\truleParamFlags: 'formBuilder:rule.param.flags',\n\truleParamValues: 'formBuilder:rule.param.values',\n\truleParamField: 'formBuilder:rule.param.field',\n\tvalidationsLabel: 'formBuilder:validations.label',\n\tvalidationMessageLabel: 'formBuilder:validations.message',\n\tconditionAddCondition: 'formBuilder:condition.addCondition',\n\tconditionAddOr: 'formBuilder:condition.addOr',\n\tconditionAnd: 'formBuilder:condition.and',\n\tconditionOr: 'formBuilder:condition.or',\n\tconditionRemove: 'formBuilder:condition.remove',\n\tconditionNoFields: 'formBuilder:condition.noFields',\n\tconditionEmpty: 'formBuilder:condition.empty',\n\tconditionSelectField: 'formBuilder:condition.selectField',\n\tconditionTrue: 'formBuilder:condition.true',\n\tconditionFalse: 'formBuilder:condition.false',\n\tconfigHidden: 'formBuilder:config.hidden',\n\ttabFields: 'formBuilder:tab.fields',\n\ttabFlow: 'formBuilder:tab.flow',\n\ttabActions: 'formBuilder:tab.actions',\n\ttabField: 'formBuilder:tab.field',\n\ttabValidation: 'formBuilder:tab.validation',\n\ttabAdvanced: 'formBuilder:tab.advanced',\n\tfieldTypeCalculation: 'formBuilder:fieldType.calculation',\n\tconfigExpression: 'formBuilder:config.expression',\n\tconfigExpressionDescription: 'formBuilder:config.expressionDescription',\n\tconfigCalcDisplay: 'formBuilder:config.calcDisplay',\n\tvalidationCalcExpressionInvalid: 'formBuilder:validation.calcExpressionInvalid',\n\tpresentationPage: 'formBuilder:presentation.page',\n\tpresentationModal: 'formBuilder:presentation.modal',\n\tpresentationDrawer: 'formBuilder:presentation.drawer',\n\tpresentationInline: 'formBuilder:presentation.inline',\n\tactionEmailTeam: 'formBuilder:action.emailTeam',\n\tactionConfirmation: 'formBuilder:action.confirmation',\n\tactionSignedWebhook: 'formBuilder:action.signedWebhook',\n\tactionConfigTo: 'formBuilder:action.config.to',\n\tactionConfigSubject: 'formBuilder:action.config.subject',\n\tactionConfigBody: 'formBuilder:action.config.body',\n\tactionConfigBodyDescription: 'formBuilder:action.config.bodyDescription',\n\tactionConfigToField: 'formBuilder:action.config.toField',\n\tactionConfigToFieldDescription: 'formBuilder:action.config.toFieldDescription',\n\tactionConfigFrom: 'formBuilder:action.config.from',\n\tactionConfigFromDescription: 'formBuilder:action.config.fromDescription',\n\tactionConfigCc: 'formBuilder:action.config.cc',\n\tactionConfigBcc: 'formBuilder:action.config.bcc',\n\tactionConfigReplyTo: 'formBuilder:action.config.replyTo',\n\trecipientsGroupDepartments: 'formBuilder:recipients.group.departments',\n\trecipientsGroupFields: 'formBuilder:recipients.group.fields',\n\tvalidationRecipientInvalid: 'formBuilder:validation.recipient.invalid',\n\tvalidationRecipientUnknownField: 'formBuilder:validation.recipient.unknownField',\n\tvalidationFromUnknown: 'formBuilder:validation.fromUnknown',\n\tvalidationFromUnavailable: 'formBuilder:validation.fromUnavailable',\n\tactionConfigUrl: 'formBuilder:action.config.url',\n\tactionConfigUrlDescription: 'formBuilder:action.config.urlDescription',\n\tactionConfigSecret: 'formBuilder:action.config.secret',\n\tactionConfigSecretDescription: 'formBuilder:action.config.secretDescription',\n\tvalidationUrlInvalid: 'formBuilder:validation.urlInvalid',\n\tconfigActions: 'formBuilder:config.actions',\n\tfieldTypeConsent: 'formBuilder:fieldType.consent',\n\tconsentConfigSource: 'formBuilder:consent.config.source',\n\tconsentConfigSourceDescription: 'formBuilder:consent.config.sourceDescription',\n\tconsentSourcesField: 'formBuilder:consentSources.field',\n\tconsentSourcesFieldDescription: 'formBuilder:consentSources.fieldDescription',\n\tconsentSourceSingular: 'formBuilder:consentSources.singular',\n\tconsentSourcePlural: 'formBuilder:consentSources.plural',\n\tconsentSourceLabel: 'formBuilder:consentSources.label',\n\tconsentSourceStatement: 'formBuilder:consentSources.statement',\n\tconsentSourcePage: 'formBuilder:consentSources.page',\n\tconsentSourcePageDescription: 'formBuilder:consentSources.pageDescription',\n\tconsentSourcesUnavailable: 'formBuilder:consent.sourcesUnavailable',\n\tresultsResponses: 'formBuilder:results.responses',\n\tresultsNoResponses: 'formBuilder:results.noResponses',\n\tresultsTruncated: 'formBuilder:results.truncated',\n\tpollGroup: 'formBuilder:poll.group',\n\tpollResultsField: 'formBuilder:poll.resultsField',\n\tpollResultsFieldDescription: 'formBuilder:poll.resultsFieldDescription',\n\tpollVoteFieldChoose: 'formBuilder:poll.voteFieldChoose',\n\tpollVoteFieldMissing: 'formBuilder:poll.voteFieldMissing',\n\tpollResultsVisibility: 'formBuilder:poll.resultsVisibility',\n\tpollVisibilityAfterVote: 'formBuilder:poll.visibility.afterVote',\n\tpollVisibilityAfterClose: 'formBuilder:poll.visibility.afterClose',\n\tpollClosesAt: 'formBuilder:poll.closesAt',\n\tpollClosed: 'formBuilder:poll.closed',\n\tpollResultsAfterClose: 'formBuilder:poll.resultsAfterClose',\n\tpollOptionSource: 'formBuilder:poll.optionSource',\n\tpollOptionSourceDescription: 'formBuilder:poll.optionSourceDescription',\n\tpollSourceConfig: 'formBuilder:poll.sourceConfig',\n\tpollOutcome: 'formBuilder:poll.outcome',\n\tpollType: 'formBuilder:poll.type',\n\tpollTypeDescription: 'formBuilder:poll.typeDescription',\n\tpollTypeManual: 'formBuilder:poll.type.manual',\n\tpollTypeMostVoted: 'formBuilder:poll.type.mostVoted',\n\tpollTypeSource: 'formBuilder:poll.type.source',\n\tpollCloseButton: 'formBuilder:poll.close.button',\n\tpollReopenButton: 'formBuilder:poll.reopen.button',\n\tpollCloseHintManual: 'formBuilder:poll.close.hintManual',\n\tpollCloseHintMostVoted: 'formBuilder:poll.close.hintMostVoted',\n\tpollCloseHintSource: 'formBuilder:poll.close.hintSource',\n\tpollReopenHint: 'formBuilder:poll.reopen.hint',\n\tpollCloseNeedsWinner: 'formBuilder:poll.close.needsWinner',\n\tpollCloseManualNoWinner: 'formBuilder:poll.close.manualNoWinner',\n\tpollWinningValue: 'formBuilder:poll.winningValue',\n\tpollWinningValueDescription: 'formBuilder:poll.winningValueDescription',\n\tpollResolvedAt: 'formBuilder:poll.resolvedAt',\n\tvalidationWinningValueUnknown: 'formBuilder:validation.winningValueUnknown',\n\tvalidationWinningValueDisabled: 'formBuilder:validation.winningValueDisabled',\n\tendpointOptionsLoading: 'formBuilder:endpointOptions.loading',\n\tendpointOptionsError: 'formBuilder:endpointOptions.error',\n\tpollOptionsUnavailable: 'formBuilder:poll.optionsUnavailable',\n\tpollFinalResult: 'formBuilder:poll.finalResult',\n\tresultsWinner: 'formBuilder:results.winner',\n\tvalidationFileMissing: 'formBuilder:validation.file.missing',\n\tvalidationFileMimeType: 'formBuilder:validation.file.mimeType',\n\tvalidationFileTooLarge: 'formBuilder:validation.file.tooLarge',\n\tfieldTypeFile: 'formBuilder:fieldType.file',\n\tfileConfigMimeTypes: 'formBuilder:file.config.mimeTypes',\n\tfileConfigMaxSize: 'formBuilder:file.config.maxSize',\n\tfileConfigMaxSizeDescription: 'formBuilder:file.config.maxSizeDescription',\n\tfileTooLarge: 'formBuilder:file.tooLarge',\n\tfileUploadMisconfigured: 'formBuilder:file.uploadMisconfigured',\n\tfileHintAccepted: 'formBuilder:file.hint.accepted',\n\tfileHintMaxSize: 'formBuilder:file.hint.maxSize',\n\tspamRateLimited: 'formBuilder:spam.rateLimited',\n\tspamRejected: 'formBuilder:spam.rejected',\n\tspamCaptchaFailed: 'formBuilder:spam.captchaFailed',\n\tcollectionFormSingular: 'formBuilder:collection.form.singular',\n\tcollectionFormPlural: 'formBuilder:collection.form.plural',\n\tcollectionSubmissionSingular: 'formBuilder:collection.submission.singular',\n\tcollectionSubmissionPlural: 'formBuilder:collection.submission.plural',\n\tstatusComplete: 'formBuilder:status.complete',\n\tstatusPartial: 'formBuilder:status.partial',\n\tfieldTypeRepeater: 'formBuilder:fieldType.repeater',\n\tconfigMinRows: 'formBuilder:config.minRows',\n\tconfigMaxRows: 'formBuilder:config.maxRows',\n\tconfigAddLabel: 'formBuilder:config.addLabel',\n\tconfigSubFields: 'formBuilder:config.subFields',\n\tvalidationRepeaterMin: 'formBuilder:validation.repeaterMin',\n\tvalidationRepeaterMax: 'formBuilder:validation.repeaterMax',\n\trepeaterAddRow: 'formBuilder:repeater.addRow',\n\trepeaterRemoveRow: 'formBuilder:repeater.removeRow',\n\trepeaterRow: 'formBuilder:repeater.row',\n\trepeaterRowCount: 'formBuilder:repeater.rowCount',\n\tsubmissionConsent: 'formBuilder:submission.consent',\n\tsubmissionDetails: 'formBuilder:submission.details',\n\tsubmissionConsentAgreed: 'formBuilder:submission.consentAgreed',\n\tsubmissionConsentDeclined: 'formBuilder:submission.consentDeclined',\n\tsubmissionMetaLocale: 'formBuilder:submission.meta.locale',\n\tsubmissionMetaReceivedAt: 'formBuilder:submission.meta.receivedAt',\n\tsubmissionMetaIp: 'formBuilder:submission.meta.ip',\n\tsubmissionMetaUserAgent: 'formBuilder:submission.meta.userAgent',\n\tsubmissionMetaCaptcha: 'formBuilder:submission.meta.captcha',\n\tflowDescription: 'formBuilder:flow.description',\n\tflowStepFallbackTitle: 'formBuilder:flow.stepFallbackTitle',\n\tflowFieldInStep: 'formBuilder:flow.fieldInStep',\n\tflowUnassigned: 'formBuilder:flow.unassigned',\n\tflowAssignToStep: 'formBuilder:flow.assignToStep',\n\tflowNextSequential: 'formBuilder:flow.nextSequential',\n\tflowNextTerminal: 'formBuilder:flow.nextTerminal',\n\tflowFields: 'formBuilder:flow.fields',\n\tflowDefaultNext: 'formBuilder:flow.defaultNext',\n\tflowConditionalTransitions: 'formBuilder:flow.conditionalTransitions',\n\tflowStepTitleLabel: 'formBuilder:flow.stepTitleLabel',\n\tflowSelectStepPlaceholder: 'formBuilder:flow.selectStepPlaceholder',\n\tflowMoveTransitionUp: 'formBuilder:flow.moveTransitionUp',\n\tflowMoveTransitionDown: 'formBuilder:flow.moveTransitionDown',\n\tflowRemoveTransition: 'formBuilder:flow.removeTransition',\n\tflowAddAbove: 'formBuilder:flow.addAbove',\n\tflowAddBelow: 'formBuilder:flow.addBelow',\n\tflowGoTo: 'formBuilder:flow.goTo',\n\tflowWhen: 'formBuilder:flow.when',\n\tflowNoFields: 'formBuilder:flow.noFields',\n\tflowFirstMatchWins: 'formBuilder:flow.firstMatchWins',\n\tflowAddTransition: 'formBuilder:flow.addTransition',\n\tflowNoSteps: 'formBuilder:flow.noSteps',\n\tflowFallbackTitle: 'formBuilder:flow.fallbackTitle',\n\tfieldTypeMessage: 'formBuilder:fieldType.message',\n\tconfigContent: 'formBuilder:config.content',\n\ttabResponse: 'formBuilder:tab.response',\n\tresponseType: 'formBuilder:response.type',\n\tresponseTypeMessage: 'formBuilder:response.type.message',\n\tresponseTypeRedirect: 'formBuilder:response.type.redirect',\n\tresponseMessage: 'formBuilder:response.message',\n\tresponseRedirect: 'formBuilder:response.redirect',\n\tresponseUrl: 'formBuilder:response.url',\n\tresponseRedirectReference: 'formBuilder:response.redirect.reference',\n\tresponseRedirectReferenceDescription: 'formBuilder:response.redirect.referenceDescription',\n\tbuttonsSubmitLabel: 'formBuilder:buttons.submitLabel',\n\tbuttonsNextLabel: 'formBuilder:buttons.nextLabel',\n\tbuttonsPrevLabel: 'formBuilder:buttons.prevLabel',\n\tformBack: 'formBuilder:form.back',\n\tformNext: 'formBuilder:form.next',\n\tformSubmit: 'formBuilder:form.submit',\n\tformMultistep: 'formBuilder:form.multistep',\n\tformPollEnabled: 'formBuilder:form.pollEnabled',\n\tcellStepCountOne: 'formBuilder:cell.stepCount.one',\n\tcellStepCountOther: 'formBuilder:cell.stepCount.other',\n\tcellFieldCountOne: 'formBuilder:cell.fieldCount.one',\n\tcellFieldCountOther: 'formBuilder:cell.fieldCount.other',\n\tdepartmentsField: 'formBuilder:departments.field',\n\tdepartmentsFieldDescription: 'formBuilder:departments.fieldDescription',\n\tdepartmentSingular: 'formBuilder:departments.singular',\n\tdepartmentPlural: 'formBuilder:departments.plural',\n\tdepartmentLabel: 'formBuilder:departments.label',\n\tdepartmentEmail: 'formBuilder:departments.email',\n\tdepartmentAddRow: 'formBuilder:departments.addRow',\n\tdepartmentRemoveRow: 'formBuilder:departments.removeRow',\n} as const\n\nexport type TranslationKey = (typeof keys)[keyof typeof keys]\n"],"mappings":"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"}
1
+ {"version":3,"file":"keys.js","names":[],"sources":["../../src/translations/keys.ts"],"sourcesContent":["/**\n * Typed translation keys. Lookups must go through these constants, not string\n * literals (enforced by requireI18nKeysTyped.grit). Every key here must have a\n * value in every locale (`en.ts`), or it is a type error.\n */\nexport const keys = {\n\tfieldTitle: 'formBuilder:fieldTitle',\n\tfieldTypeText: 'formBuilder:fieldType.text',\n\tfieldTypeTextarea: 'formBuilder:fieldType.textarea',\n\tfieldTypeEmail: 'formBuilder:fieldType.email',\n\tfieldTypeNumber: 'formBuilder:fieldType.number',\n\tfieldTypeSelect: 'formBuilder:fieldType.select',\n\tfieldTypeCountry: 'formBuilder:fieldType.country',\n\tfieldTypeState: 'formBuilder:fieldType.state',\n\tfieldTypeCheckbox: 'formBuilder:fieldType.checkbox',\n\tfieldTypeDate: 'formBuilder:fieldType.date',\n\tconfigOptions: 'formBuilder:config.options',\n\tconfigOption: 'formBuilder:config.option',\n\tconfigOptionLabel: 'formBuilder:config.optionLabel',\n\tconfigOptionValue: 'formBuilder:config.optionValue',\n\tvalidationRequired: 'formBuilder:validation.required',\n\tvalidationEmail: 'formBuilder:validation.email',\n\tvalidationNumber: 'formBuilder:validation.number',\n\tvalidationDate: 'formBuilder:validation.date',\n\tvalidationSelect: 'formBuilder:validation.select',\n\tvalidationCountry: 'formBuilder:validation.country',\n\tvalidationState: 'formBuilder:validation.state',\n\tvalidationRegexPattern: 'formBuilder:validation.regexPattern',\n\tvalidationRegexFlags: 'formBuilder:validation.regexFlags',\n\tvalidationEmailFieldUnknown: 'formBuilder:validation.emailFieldUnknown',\n\tvalidationResultsFieldUnknown: 'formBuilder:validation.resultsFieldUnknown',\n\tformatYes: 'formBuilder:format.yes',\n\tformatNo: 'formBuilder:format.no',\n\tconfigName: 'formBuilder:config.name',\n\tconfigLabel: 'formBuilder:config.label',\n\tconfigRequired: 'formBuilder:config.required',\n\tconfigWidth: 'formBuilder:config.width',\n\tconfigPlaceholder: 'formBuilder:config.placeholder',\n\tconfigDescription: 'formBuilder:config.description',\n\tconfigVisibleWhen: 'formBuilder:config.visibleWhen',\n\tconfigValidateWhen: 'formBuilder:config.validateWhen',\n\tsubmissionAnswers: 'formBuilder:submission.answers',\n\tsubmissionNoAnswers: 'formBuilder:submission.noAnswers',\n\truleMinLength: 'formBuilder:rule.minLength.label',\n\truleMaxLength: 'formBuilder:rule.maxLength.label',\n\truleMin: 'formBuilder:rule.min.label',\n\truleMax: 'formBuilder:rule.max.label',\n\truleMinDate: 'formBuilder:rule.minDate.label',\n\truleMaxDate: 'formBuilder:rule.maxDate.label',\n\trulePattern: 'formBuilder:rule.pattern.label',\n\truleEmail: 'formBuilder:rule.email.label',\n\truleUrl: 'formBuilder:rule.url.label',\n\truleOneOf: 'formBuilder:rule.oneOf.label',\n\truleMatchesField: 'formBuilder:rule.matchesField.label',\n\truleNotAlreadySubmitted: 'formBuilder:rule.notAlreadySubmitted.label',\n\truleMinLengthMessage: 'formBuilder:rule.minLength.message',\n\truleMaxLengthMessage: 'formBuilder:rule.maxLength.message',\n\truleMinMessage: 'formBuilder:rule.min.message',\n\truleMaxMessage: 'formBuilder:rule.max.message',\n\truleMinDateMessage: 'formBuilder:rule.minDate.message',\n\truleMaxDateMessage: 'formBuilder:rule.maxDate.message',\n\trulePatternMessage: 'formBuilder:rule.pattern.message',\n\truleEmailMessage: 'formBuilder:rule.email.message',\n\truleUrlMessage: 'formBuilder:rule.url.message',\n\truleOneOfMessage: 'formBuilder:rule.oneOf.message',\n\truleMatchesFieldMessage: 'formBuilder:rule.matchesField.message',\n\truleNotAlreadySubmittedMessage: 'formBuilder:rule.notAlreadySubmitted.message',\n\truleMinLengthDescription: 'formBuilder:rule.minLength.description',\n\truleMaxLengthDescription: 'formBuilder:rule.maxLength.description',\n\truleMinDescription: 'formBuilder:rule.min.description',\n\truleMaxDescription: 'formBuilder:rule.max.description',\n\truleMinDateDescription: 'formBuilder:rule.minDate.description',\n\truleMaxDateDescription: 'formBuilder:rule.maxDate.description',\n\trulePatternDescription: 'formBuilder:rule.pattern.description',\n\truleEmailDescription: 'formBuilder:rule.email.description',\n\truleUrlDescription: 'formBuilder:rule.url.description',\n\truleOneOfDescription: 'formBuilder:rule.oneOf.description',\n\truleMatchesFieldDescription: 'formBuilder:rule.matchesField.description',\n\truleNotAlreadySubmittedDescription: 'formBuilder:rule.notAlreadySubmitted.description',\n\truleFieldTargetInvalid: 'formBuilder:rule.fieldTargetInvalid',\n\truleParamMin: 'formBuilder:rule.param.min',\n\truleParamMax: 'formBuilder:rule.param.max',\n\truleParamMinDate: 'formBuilder:rule.param.minDate',\n\truleParamMaxDate: 'formBuilder:rule.param.maxDate',\n\truleParamPattern: 'formBuilder:rule.param.pattern',\n\truleParamFlags: 'formBuilder:rule.param.flags',\n\truleParamValues: 'formBuilder:rule.param.values',\n\truleParamField: 'formBuilder:rule.param.field',\n\tvalidationsLabel: 'formBuilder:validations.label',\n\tvalidationMessageLabel: 'formBuilder:validations.message',\n\tconditionAddCondition: 'formBuilder:condition.addCondition',\n\tconditionAddOr: 'formBuilder:condition.addOr',\n\tconditionAnd: 'formBuilder:condition.and',\n\tconditionOr: 'formBuilder:condition.or',\n\tconditionRemove: 'formBuilder:condition.remove',\n\tconditionNoFields: 'formBuilder:condition.noFields',\n\tconditionEmpty: 'formBuilder:condition.empty',\n\tconditionSelectField: 'formBuilder:condition.selectField',\n\tconditionTrue: 'formBuilder:condition.true',\n\tconditionFalse: 'formBuilder:condition.false',\n\tconfigHidden: 'formBuilder:config.hidden',\n\ttabFields: 'formBuilder:tab.fields',\n\ttabFlow: 'formBuilder:tab.flow',\n\ttabActions: 'formBuilder:tab.actions',\n\ttabField: 'formBuilder:tab.field',\n\ttabValidation: 'formBuilder:tab.validation',\n\ttabAdvanced: 'formBuilder:tab.advanced',\n\tfieldTypeCalculation: 'formBuilder:fieldType.calculation',\n\tconfigExpression: 'formBuilder:config.expression',\n\tconfigExpressionDescription: 'formBuilder:config.expressionDescription',\n\tconfigCalcDisplay: 'formBuilder:config.calcDisplay',\n\tvalidationCalcExpressionInvalid: 'formBuilder:validation.calcExpressionInvalid',\n\tpresentationPage: 'formBuilder:presentation.page',\n\tpresentationModal: 'formBuilder:presentation.modal',\n\tpresentationDrawer: 'formBuilder:presentation.drawer',\n\tpresentationInline: 'formBuilder:presentation.inline',\n\tactionEmailTeam: 'formBuilder:action.emailTeam',\n\tactionConfirmation: 'formBuilder:action.confirmation',\n\tactionSignedWebhook: 'formBuilder:action.signedWebhook',\n\tactionConfigTo: 'formBuilder:action.config.to',\n\tactionConfigSubject: 'formBuilder:action.config.subject',\n\tactionConfigBody: 'formBuilder:action.config.body',\n\tactionConfigBodyDescription: 'formBuilder:action.config.bodyDescription',\n\tactionConfigToField: 'formBuilder:action.config.toField',\n\tactionConfigToFieldDescription: 'formBuilder:action.config.toFieldDescription',\n\tactionConfigFrom: 'formBuilder:action.config.from',\n\tactionConfigFromDescription: 'formBuilder:action.config.fromDescription',\n\tactionConfigCc: 'formBuilder:action.config.cc',\n\tactionConfigBcc: 'formBuilder:action.config.bcc',\n\tactionConfigReplyTo: 'formBuilder:action.config.replyTo',\n\trecipientsGroupDepartments: 'formBuilder:recipients.group.departments',\n\trecipientsGroupFields: 'formBuilder:recipients.group.fields',\n\tvalidationRecipientInvalid: 'formBuilder:validation.recipient.invalid',\n\tvalidationRecipientUnknownField: 'formBuilder:validation.recipient.unknownField',\n\tvalidationRecipientNotAllowed: 'formBuilder:validation.recipient.notAllowed',\n\tvalidationRecipientOptionsUnavailable: 'formBuilder:validation.recipient.optionsUnavailable',\n\tvalidationFromUnknown: 'formBuilder:validation.fromUnknown',\n\tvalidationFromUnavailable: 'formBuilder:validation.fromUnavailable',\n\tactionConfigUrl: 'formBuilder:action.config.url',\n\tactionConfigUrlDescription: 'formBuilder:action.config.urlDescription',\n\tactionConfigSecret: 'formBuilder:action.config.secret',\n\tactionConfigSecretDescription: 'formBuilder:action.config.secretDescription',\n\tvalidationUrlInvalid: 'formBuilder:validation.urlInvalid',\n\tconfigActions: 'formBuilder:config.actions',\n\tfieldTypeConsent: 'formBuilder:fieldType.consent',\n\tconsentConfigSource: 'formBuilder:consent.config.source',\n\tconsentConfigSourceDescription: 'formBuilder:consent.config.sourceDescription',\n\tconsentSourcesField: 'formBuilder:consentSources.field',\n\tconsentSourcesFieldDescription: 'formBuilder:consentSources.fieldDescription',\n\tconsentSourceSingular: 'formBuilder:consentSources.singular',\n\tconsentSourcePlural: 'formBuilder:consentSources.plural',\n\tconsentSourceLabel: 'formBuilder:consentSources.label',\n\tconsentSourceStatement: 'formBuilder:consentSources.statement',\n\tconsentSourcePage: 'formBuilder:consentSources.page',\n\tconsentSourcePageDescription: 'formBuilder:consentSources.pageDescription',\n\tconsentSourcesUnavailable: 'formBuilder:consent.sourcesUnavailable',\n\tresultsResponses: 'formBuilder:results.responses',\n\tresultsNoResponses: 'formBuilder:results.noResponses',\n\tresultsTruncated: 'formBuilder:results.truncated',\n\tpollGroup: 'formBuilder:poll.group',\n\tpollResultsField: 'formBuilder:poll.resultsField',\n\tpollResultsFieldDescription: 'formBuilder:poll.resultsFieldDescription',\n\tpollVoteFieldChoose: 'formBuilder:poll.voteFieldChoose',\n\tpollVoteFieldMissing: 'formBuilder:poll.voteFieldMissing',\n\tpollResultsVisibility: 'formBuilder:poll.resultsVisibility',\n\tpollVisibilityAfterVote: 'formBuilder:poll.visibility.afterVote',\n\tpollVisibilityAfterClose: 'formBuilder:poll.visibility.afterClose',\n\tpollClosesAt: 'formBuilder:poll.closesAt',\n\tpollClosed: 'formBuilder:poll.closed',\n\tpollResultsAfterClose: 'formBuilder:poll.resultsAfterClose',\n\tpollOptionSource: 'formBuilder:poll.optionSource',\n\tpollOptionSourceDescription: 'formBuilder:poll.optionSourceDescription',\n\tpollSourceConfig: 'formBuilder:poll.sourceConfig',\n\tpollOutcome: 'formBuilder:poll.outcome',\n\tpollType: 'formBuilder:poll.type',\n\tpollTypeDescription: 'formBuilder:poll.typeDescription',\n\tpollTypeManual: 'formBuilder:poll.type.manual',\n\tpollTypeMostVoted: 'formBuilder:poll.type.mostVoted',\n\tpollTypeSource: 'formBuilder:poll.type.source',\n\tpollCloseButton: 'formBuilder:poll.close.button',\n\tpollReopenButton: 'formBuilder:poll.reopen.button',\n\tpollCloseHintManual: 'formBuilder:poll.close.hintManual',\n\tpollCloseHintMostVoted: 'formBuilder:poll.close.hintMostVoted',\n\tpollCloseHintSource: 'formBuilder:poll.close.hintSource',\n\tpollReopenHint: 'formBuilder:poll.reopen.hint',\n\tpollCloseNeedsWinner: 'formBuilder:poll.close.needsWinner',\n\tpollCloseManualNoWinner: 'formBuilder:poll.close.manualNoWinner',\n\tpollWinningValue: 'formBuilder:poll.winningValue',\n\tpollWinningValueDescription: 'formBuilder:poll.winningValueDescription',\n\tpollResolvedAt: 'formBuilder:poll.resolvedAt',\n\tvalidationWinningValueUnknown: 'formBuilder:validation.winningValueUnknown',\n\tvalidationWinningValueDisabled: 'formBuilder:validation.winningValueDisabled',\n\tendpointOptionsLoading: 'formBuilder:endpointOptions.loading',\n\tendpointOptionsError: 'formBuilder:endpointOptions.error',\n\tpollOptionsUnavailable: 'formBuilder:poll.optionsUnavailable',\n\tpollFinalResult: 'formBuilder:poll.finalResult',\n\tpollResultsError: 'formBuilder:poll.resultsError',\n\tresultsWinner: 'formBuilder:results.winner',\n\tvalidationFileMissing: 'formBuilder:validation.file.missing',\n\tvalidationFileMimeType: 'formBuilder:validation.file.mimeType',\n\tvalidationFileTooLarge: 'formBuilder:validation.file.tooLarge',\n\tfieldTypeFile: 'formBuilder:fieldType.file',\n\tfileConfigMimeTypes: 'formBuilder:file.config.mimeTypes',\n\tfileConfigMaxSize: 'formBuilder:file.config.maxSize',\n\tfileConfigMaxSizeDescription: 'formBuilder:file.config.maxSizeDescription',\n\tfileTooLarge: 'formBuilder:file.tooLarge',\n\tfileUploadMisconfigured: 'formBuilder:file.uploadMisconfigured',\n\tfileHintAccepted: 'formBuilder:file.hint.accepted',\n\tfileHintMaxSize: 'formBuilder:file.hint.maxSize',\n\tfileUploaded: 'formBuilder:file.uploaded',\n\tfileUploading: 'formBuilder:file.uploading',\n\tfileUploadFailed: 'formBuilder:file.uploadFailed',\n\tfileRemove: 'formBuilder:file.remove',\n\tspamRateLimited: 'formBuilder:spam.rateLimited',\n\tspamRejected: 'formBuilder:spam.rejected',\n\tspamCaptchaFailed: 'formBuilder:spam.captchaFailed',\n\tcollectionFormSingular: 'formBuilder:collection.form.singular',\n\tcollectionFormPlural: 'formBuilder:collection.form.plural',\n\tcollectionSubmissionSingular: 'formBuilder:collection.submission.singular',\n\tcollectionSubmissionPlural: 'formBuilder:collection.submission.plural',\n\tstatusComplete: 'formBuilder:status.complete',\n\tstatusPartial: 'formBuilder:status.partial',\n\tfieldTypeRepeater: 'formBuilder:fieldType.repeater',\n\tconfigMinRows: 'formBuilder:config.minRows',\n\tconfigMaxRows: 'formBuilder:config.maxRows',\n\tconfigAddLabel: 'formBuilder:config.addLabel',\n\tconfigSubFields: 'formBuilder:config.subFields',\n\tvalidationRepeaterMin: 'formBuilder:validation.repeaterMin',\n\tvalidationRepeaterMax: 'formBuilder:validation.repeaterMax',\n\trepeaterAddRow: 'formBuilder:repeater.addRow',\n\trepeaterRemoveRow: 'formBuilder:repeater.removeRow',\n\trepeaterRow: 'formBuilder:repeater.row',\n\trepeaterRowCount: 'formBuilder:repeater.rowCount',\n\tsubmissionConsent: 'formBuilder:submission.consent',\n\tsubmissionDetails: 'formBuilder:submission.details',\n\tsubmissionConsentAgreed: 'formBuilder:submission.consentAgreed',\n\tsubmissionConsentDeclined: 'formBuilder:submission.consentDeclined',\n\tsubmissionMetaLocale: 'formBuilder:submission.meta.locale',\n\tsubmissionMetaReceivedAt: 'formBuilder:submission.meta.receivedAt',\n\tsubmissionMetaIp: 'formBuilder:submission.meta.ip',\n\tsubmissionMetaUserAgent: 'formBuilder:submission.meta.userAgent',\n\tsubmissionMetaCaptcha: 'formBuilder:submission.meta.captcha',\n\tflowDescription: 'formBuilder:flow.description',\n\tflowStepFallbackTitle: 'formBuilder:flow.stepFallbackTitle',\n\tflowFieldInStep: 'formBuilder:flow.fieldInStep',\n\tflowUnassigned: 'formBuilder:flow.unassigned',\n\tflowAssignToStep: 'formBuilder:flow.assignToStep',\n\tflowNextSequential: 'formBuilder:flow.nextSequential',\n\tflowNextTerminal: 'formBuilder:flow.nextTerminal',\n\tflowFields: 'formBuilder:flow.fields',\n\tflowDefaultNext: 'formBuilder:flow.defaultNext',\n\tflowConditionalTransitions: 'formBuilder:flow.conditionalTransitions',\n\tflowStepTitleLabel: 'formBuilder:flow.stepTitleLabel',\n\tflowSelectStepPlaceholder: 'formBuilder:flow.selectStepPlaceholder',\n\tflowMoveTransitionUp: 'formBuilder:flow.moveTransitionUp',\n\tflowMoveTransitionDown: 'formBuilder:flow.moveTransitionDown',\n\tflowRemoveTransition: 'formBuilder:flow.removeTransition',\n\tflowAddAbove: 'formBuilder:flow.addAbove',\n\tflowAddBelow: 'formBuilder:flow.addBelow',\n\tflowGoTo: 'formBuilder:flow.goTo',\n\tflowWhen: 'formBuilder:flow.when',\n\tflowNoFields: 'formBuilder:flow.noFields',\n\tflowFirstMatchWins: 'formBuilder:flow.firstMatchWins',\n\tflowAddTransition: 'formBuilder:flow.addTransition',\n\tflowNoSteps: 'formBuilder:flow.noSteps',\n\tflowFallbackTitle: 'formBuilder:flow.fallbackTitle',\n\tfieldTypeMessage: 'formBuilder:fieldType.message',\n\tconfigContent: 'formBuilder:config.content',\n\ttabResponse: 'formBuilder:tab.response',\n\tresponseType: 'formBuilder:response.type',\n\tresponseTypeMessage: 'formBuilder:response.type.message',\n\tresponseTypeRedirect: 'formBuilder:response.type.redirect',\n\tresponseMessage: 'formBuilder:response.message',\n\tresponseRedirect: 'formBuilder:response.redirect',\n\tresponseUrl: 'formBuilder:response.url',\n\tresponseRedirectReference: 'formBuilder:response.redirect.reference',\n\tresponseRedirectReferenceDescription: 'formBuilder:response.redirect.referenceDescription',\n\tbuttonsSubmitLabel: 'formBuilder:buttons.submitLabel',\n\tbuttonsNextLabel: 'formBuilder:buttons.nextLabel',\n\tbuttonsPrevLabel: 'formBuilder:buttons.prevLabel',\n\tformBack: 'formBuilder:form.back',\n\tformNext: 'formBuilder:form.next',\n\tformSubmit: 'formBuilder:form.submit',\n\tformMultistep: 'formBuilder:form.multistep',\n\tformPollEnabled: 'formBuilder:form.pollEnabled',\n\tformClose: 'formBuilder:form.close',\n\tformSuccess: 'formBuilder:form.success',\n\tformSubmitFailed: 'formBuilder:form.submitFailed',\n\tcellStepCountOne: 'formBuilder:cell.stepCount.one',\n\tcellStepCountOther: 'formBuilder:cell.stepCount.other',\n\tcellFieldCountOne: 'formBuilder:cell.fieldCount.one',\n\tcellFieldCountOther: 'formBuilder:cell.fieldCount.other',\n\tdepartmentsField: 'formBuilder:departments.field',\n\tdepartmentsFieldDescription: 'formBuilder:departments.fieldDescription',\n\tdepartmentSingular: 'formBuilder:departments.singular',\n\tdepartmentPlural: 'formBuilder:departments.plural',\n\tdepartmentLabel: 'formBuilder:departments.label',\n\tdepartmentEmail: 'formBuilder:departments.email',\n\tdepartmentAddRow: 'formBuilder:departments.addRow',\n\tdepartmentRemoveRow: 'formBuilder:departments.removeRow',\n} as const\n\nexport type TranslationKey = (typeof keys)[keyof typeof keys]\n"],"mappings":";;;;;;AAKA,MAAa,OAAO;CACnB,YAAY;CACZ,eAAe;CACf,mBAAmB;CACnB,gBAAgB;CAChB,iBAAiB;CACjB,iBAAiB;CACjB,kBAAkB;CAClB,gBAAgB;CAChB,mBAAmB;CACnB,eAAe;CACf,eAAe;CACf,cAAc;CACd,mBAAmB;CACnB,mBAAmB;CACnB,oBAAoB;CACpB,iBAAiB;CACjB,kBAAkB;CAClB,gBAAgB;CAChB,kBAAkB;CAClB,mBAAmB;CACnB,iBAAiB;CACjB,wBAAwB;CACxB,sBAAsB;CACtB,6BAA6B;CAC7B,+BAA+B;CAC/B,WAAW;CACX,UAAU;CACV,YAAY;CACZ,aAAa;CACb,gBAAgB;CAChB,aAAa;CACb,mBAAmB;CACnB,mBAAmB;CACnB,mBAAmB;CACnB,oBAAoB;CACpB,mBAAmB;CACnB,qBAAqB;CACrB,eAAe;CACf,eAAe;CACf,SAAS;CACT,SAAS;CACT,aAAa;CACb,aAAa;CACb,aAAa;CACb,WAAW;CACX,SAAS;CACT,WAAW;CACX,kBAAkB;CAClB,yBAAyB;CACzB,sBAAsB;CACtB,sBAAsB;CACtB,gBAAgB;CAChB,gBAAgB;CAChB,oBAAoB;CACpB,oBAAoB;CACpB,oBAAoB;CACpB,kBAAkB;CAClB,gBAAgB;CAChB,kBAAkB;CAClB,yBAAyB;CACzB,gCAAgC;CAChC,0BAA0B;CAC1B,0BAA0B;CAC1B,oBAAoB;CACpB,oBAAoB;CACpB,wBAAwB;CACxB,wBAAwB;CACxB,wBAAwB;CACxB,sBAAsB;CACtB,oBAAoB;CACpB,sBAAsB;CACtB,6BAA6B;CAC7B,oCAAoC;CACpC,wBAAwB;CACxB,cAAc;CACd,cAAc;CACd,kBAAkB;CAClB,kBAAkB;CAClB,kBAAkB;CAClB,gBAAgB;CAChB,iBAAiB;CACjB,gBAAgB;CAChB,kBAAkB;CAClB,wBAAwB;CACxB,uBAAuB;CACvB,gBAAgB;CAChB,cAAc;CACd,aAAa;CACb,iBAAiB;CACjB,mBAAmB;CACnB,gBAAgB;CAChB,sBAAsB;CACtB,eAAe;CACf,gBAAgB;CAChB,cAAc;CACd,WAAW;CACX,SAAS;CACT,YAAY;CACZ,UAAU;CACV,eAAe;CACf,aAAa;CACb,sBAAsB;CACtB,kBAAkB;CAClB,6BAA6B;CAC7B,mBAAmB;CACnB,iCAAiC;CACjC,kBAAkB;CAClB,mBAAmB;CACnB,oBAAoB;CACpB,oBAAoB;CACpB,iBAAiB;CACjB,oBAAoB;CACpB,qBAAqB;CACrB,gBAAgB;CAChB,qBAAqB;CACrB,kBAAkB;CAClB,6BAA6B;CAC7B,qBAAqB;CACrB,gCAAgC;CAChC,kBAAkB;CAClB,6BAA6B;CAC7B,gBAAgB;CAChB,iBAAiB;CACjB,qBAAqB;CACrB,4BAA4B;CAC5B,uBAAuB;CACvB,4BAA4B;CAC5B,iCAAiC;CACjC,+BAA+B;CAC/B,uCAAuC;CACvC,uBAAuB;CACvB,2BAA2B;CAC3B,iBAAiB;CACjB,4BAA4B;CAC5B,oBAAoB;CACpB,+BAA+B;CAC/B,sBAAsB;CACtB,eAAe;CACf,kBAAkB;CAClB,qBAAqB;CACrB,gCAAgC;CAChC,qBAAqB;CACrB,gCAAgC;CAChC,uBAAuB;CACvB,qBAAqB;CACrB,oBAAoB;CACpB,wBAAwB;CACxB,mBAAmB;CACnB,8BAA8B;CAC9B,2BAA2B;CAC3B,kBAAkB;CAClB,oBAAoB;CACpB,kBAAkB;CAClB,WAAW;CACX,kBAAkB;CAClB,6BAA6B;CAC7B,qBAAqB;CACrB,sBAAsB;CACtB,uBAAuB;CACvB,yBAAyB;CACzB,0BAA0B;CAC1B,cAAc;CACd,YAAY;CACZ,uBAAuB;CACvB,kBAAkB;CAClB,6BAA6B;CAC7B,kBAAkB;CAClB,aAAa;CACb,UAAU;CACV,qBAAqB;CACrB,gBAAgB;CAChB,mBAAmB;CACnB,gBAAgB;CAChB,iBAAiB;CACjB,kBAAkB;CAClB,qBAAqB;CACrB,wBAAwB;CACxB,qBAAqB;CACrB,gBAAgB;CAChB,sBAAsB;CACtB,yBAAyB;CACzB,kBAAkB;CAClB,6BAA6B;CAC7B,gBAAgB;CAChB,+BAA+B;CAC/B,gCAAgC;CAChC,wBAAwB;CACxB,sBAAsB;CACtB,wBAAwB;CACxB,iBAAiB;CACjB,kBAAkB;CAClB,eAAe;CACf,uBAAuB;CACvB,wBAAwB;CACxB,wBAAwB;CACxB,eAAe;CACf,qBAAqB;CACrB,mBAAmB;CACnB,8BAA8B;CAC9B,cAAc;CACd,yBAAyB;CACzB,kBAAkB;CAClB,iBAAiB;CACjB,cAAc;CACd,eAAe;CACf,kBAAkB;CAClB,YAAY;CACZ,iBAAiB;CACjB,cAAc;CACd,mBAAmB;CACnB,wBAAwB;CACxB,sBAAsB;CACtB,8BAA8B;CAC9B,4BAA4B;CAC5B,gBAAgB;CAChB,eAAe;CACf,mBAAmB;CACnB,eAAe;CACf,eAAe;CACf,gBAAgB;CAChB,iBAAiB;CACjB,uBAAuB;CACvB,uBAAuB;CACvB,gBAAgB;CAChB,mBAAmB;CACnB,aAAa;CACb,kBAAkB;CAClB,mBAAmB;CACnB,mBAAmB;CACnB,yBAAyB;CACzB,2BAA2B;CAC3B,sBAAsB;CACtB,0BAA0B;CAC1B,kBAAkB;CAClB,yBAAyB;CACzB,uBAAuB;CACvB,iBAAiB;CACjB,uBAAuB;CACvB,iBAAiB;CACjB,gBAAgB;CAChB,kBAAkB;CAClB,oBAAoB;CACpB,kBAAkB;CAClB,YAAY;CACZ,iBAAiB;CACjB,4BAA4B;CAC5B,oBAAoB;CACpB,2BAA2B;CAC3B,sBAAsB;CACtB,wBAAwB;CACxB,sBAAsB;CACtB,cAAc;CACd,cAAc;CACd,UAAU;CACV,UAAU;CACV,cAAc;CACd,oBAAoB;CACpB,mBAAmB;CACnB,aAAa;CACb,mBAAmB;CACnB,kBAAkB;CAClB,eAAe;CACf,aAAa;CACb,cAAc;CACd,qBAAqB;CACrB,sBAAsB;CACtB,iBAAiB;CACjB,kBAAkB;CAClB,aAAa;CACb,2BAA2B;CAC3B,sCAAsC;CACtC,oBAAoB;CACpB,kBAAkB;CAClB,kBAAkB;CAClB,UAAU;CACV,UAAU;CACV,YAAY;CACZ,eAAe;CACf,iBAAiB;CACjB,WAAW;CACX,aAAa;CACb,kBAAkB;CAClB,kBAAkB;CAClB,oBAAoB;CACpB,mBAAmB;CACnB,qBAAqB;CACrB,kBAAkB;CAClB,6BAA6B;CAC7B,oBAAoB;CACpB,kBAAkB;CAClB,iBAAiB;CACjB,iBAAiB;CACjB,kBAAkB;CAClB,qBAAqB;AACtB"}
@@ -19,7 +19,14 @@ const labelForKey = (key) => ({ t }) => asTranslate(t)(key);
19
19
  * from `labelForKey`, which constrains to this plugin's typed keys.
20
20
  */
21
21
  const labelFor = (key) => ({ t }) => asTranslate(t)(key);
22
+ /**
23
+ * Turn a registry definition's `label` into a value Payload accepts for a field/block `label`. A
24
+ * string resolves per request like a field label (an i18n key or a literal) via `labelFor`; a
25
+ * per-locale record passes through unchanged. Shared by the action, poll-source, and poll-type
26
+ * registries so every definition label honors one contract.
27
+ */
28
+ const resolveDefinitionLabel = (label) => typeof label === "string" ? labelFor(label) : label;
22
29
  //#endregion
23
- export { asFieldTranslate, asTranslate, labelFor, labelForKey };
30
+ export { asFieldTranslate, asTranslate, labelFor, labelForKey, resolveDefinitionLabel };
24
31
 
25
32
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","names":[],"sources":["../../src/translations/server.ts"],"sourcesContent":["import type { LabelFunction } from 'payload'\n\nimport type { Translate as FieldTranslate } from '../fields/types'\nimport type { TranslationKey } from './keys'\n\n/** A `t`-like function narrowed to this plugin's typed keys. */\ntype Translate = (key: TranslationKey) => string\n\n/**\n * Adapt a Payload request `t` (typed to core keys only) so it also accepts this\n * plugin's keys. They are registered at config time and resolve at runtime; the\n * cast only widens the compile-time key domain.\n */\nexport const asTranslate = (t: unknown): Translate => t as Translate\n\n/**\n * Adapt a Payload request `t` to the engine-facing `Translate` the submission core and field-type\n * `format`/`validate` speak (any key string). Same runtime function as `asTranslate`; this widening\n * accepts arbitrary keys because the engine resolves both this plugin's and a host's registered keys.\n */\nexport const asFieldTranslate = (t: unknown): FieldTranslate => t as FieldTranslate\n\n/** A field `label`/`description` backed by a typed key, resolved per request. */\nexport const labelForKey =\n\t(key: TranslationKey): LabelFunction =>\n\t({ t }) =>\n\t\tasTranslate(t)(key)\n\n/**\n * A `label`/`description` from an arbitrary key string (a field-type-supplied label, which may be a\n * host-registered key or a literal; Payload's `t` returns the input unchanged when unknown). Distinct\n * from `labelForKey`, which constrains to this plugin's typed keys.\n */\nexport const labelFor =\n\t(key: string): LabelFunction =>\n\t({ t }) =>\n\t\tasTranslate(t)(key as TranslationKey)\n"],"mappings":";;;;;;AAaA,MAAa,eAAe,MAA0B;;;;;;AAOtD,MAAa,oBAAoB,MAA+B;;AAGhE,MAAa,eACX,SACA,EAAE,QACF,YAAY,CAAC,EAAE,GAAG;;;;;;AAOpB,MAAa,YACX,SACA,EAAE,QACF,YAAY,CAAC,EAAE,GAAqB"}
1
+ {"version":3,"file":"server.js","names":[],"sources":["../../src/translations/server.ts"],"sourcesContent":["import type { LabelFunction } from 'payload'\n\nimport type { Translate as FieldTranslate } from '../fields/types'\nimport type { TranslationKey } from './keys'\n\n/** A `t`-like function narrowed to this plugin's typed keys. */\ntype Translate = (key: TranslationKey) => string\n\n/**\n * Adapt a Payload request `t` (typed to core keys only) so it also accepts this\n * plugin's keys. They are registered at config time and resolve at runtime; the\n * cast only widens the compile-time key domain.\n */\nexport const asTranslate = (t: unknown): Translate => t as Translate\n\n/**\n * Adapt a Payload request `t` to the engine-facing `Translate` the submission core and field-type\n * `format`/`validate` speak (any key string). Same runtime function as `asTranslate`; this widening\n * accepts arbitrary keys because the engine resolves both this plugin's and a host's registered keys.\n */\nexport const asFieldTranslate = (t: unknown): FieldTranslate => t as FieldTranslate\n\n/** A field `label`/`description` backed by a typed key, resolved per request. */\nexport const labelForKey =\n\t(key: TranslationKey): LabelFunction =>\n\t({ t }) =>\n\t\tasTranslate(t)(key)\n\n/**\n * A `label`/`description` from an arbitrary key string (a field-type-supplied label, which may be a\n * host-registered key or a literal; Payload's `t` returns the input unchanged when unknown). Distinct\n * from `labelForKey`, which constrains to this plugin's typed keys.\n */\nexport const labelFor =\n\t(key: string): LabelFunction =>\n\t({ t }) =>\n\t\tasTranslate(t)(key as TranslationKey)\n\n/**\n * Turn a registry definition's `label` into a value Payload accepts for a field/block `label`. A\n * string resolves per request like a field label (an i18n key or a literal) via `labelFor`; a\n * per-locale record passes through unchanged. Shared by the action, poll-source, and poll-type\n * registries so every definition label honors one contract.\n */\nexport const resolveDefinitionLabel = (\n\tlabel: string | Record<string, string>\n): LabelFunction | Record<string, string> => (typeof label === 'string' ? labelFor(label) : label)\n"],"mappings":";;;;;;AAaA,MAAa,eAAe,MAA0B;;;;;;AAOtD,MAAa,oBAAoB,MAA+B;;AAGhE,MAAa,eACX,SACA,EAAE,QACF,YAAY,CAAC,EAAE,GAAG;;;;;;AAOpB,MAAa,YACX,SACA,EAAE,QACF,YAAY,CAAC,EAAE,GAAqB;;;;;;;AAQtC,MAAa,0BACZ,UAC6C,OAAO,UAAU,WAAW,SAAS,KAAK,IAAI"}