@streamline-pulse/formkrafter-core 0.7.1 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../lib/utils/localized-text.ts", "../lib/validators/default-messages.ts", "../lib/utils/brick-spec.ts", "../lib/utils/brick-data.ts", "../lib/utils/options.ts", "../lib/brick/brick.ts", "../lib/brick/utils.ts", "../lib/services/js_runner_service.ts", "../lib/services/sandbox_interpreter.ts", "../lib/services/data_source_service.ts", "../lib/services/file_upload_service.ts", "../lib/services/spec_source_service.ts", "../lib/services/option_source_service.ts", "../lib/services/index.ts", "../lib/validators/validator.ts", "../lib/services/unsafe_js_runner_service.ts", "../lib/i18n.ts", "../lib/ops/pointer.ts", "../lib/utils/fast-json-patch.ts", "../lib/ops/ops.ts", "../lib/ops/history.ts", "../lib/compat/formio.ts", "../lib/utils/expand-spec.ts"],
3
+ "sources": ["../lib/utils/localized-text.ts", "../lib/validators/default-messages.ts", "../lib/utils/brick-spec.ts", "../lib/utils/brick-data.ts", "../lib/utils/options.ts", "../lib/i18n.ts", "../lib/brick/utils.ts", "../lib/services/js_runner_service.ts", "../lib/services/sandbox_interpreter.ts", "../lib/services/data_source_service.ts", "../lib/services/file_upload_service.ts", "../lib/services/spec_source_service.ts", "../lib/services/option_source_service.ts", "../lib/services/index.ts", "../lib/utils/recap.ts", "../lib/brick/brick.ts", "../lib/validators/validator.ts", "../lib/services/unsafe_js_runner_service.ts", "../lib/ops/pointer.ts", "../lib/utils/fast-json-patch.ts", "../lib/ops/ops.ts", "../lib/ops/history.ts", "../lib/compat/formio.ts", "../lib/utils/expand-spec.ts"],
4
4
  "sourcesContent": [
5
5
  "export type LocalizedText = string | Record<string, string>;\n\nexport function isLocalizedObject(\n value: unknown\n): value is Record<string, string> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n !Array.isArray(value) &&\n Object.keys(value).length > 0 &&\n Object.values(value).every((entry) => typeof entry === \"string\")\n );\n}\n\nexport function resolveLocalizedText(value: unknown, locale?: string): unknown {\n if (!isLocalizedObject(value)) return value;\n\n if (locale && value[locale] !== undefined) return value[locale];\n\n return Object.values(value)[0];\n}\n\nexport function resolveLocalizedRecord<T extends Record<string, unknown>>(\n record: T | undefined,\n locale?: string\n): T | undefined {\n if (!record) return record;\n\n const resolved: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(record)) {\n resolved[key] = resolveLocalizedText(value, locale);\n }\n\n return resolved as T;\n}\n",
6
6
  "const DEFAULT_MESSAGES: Record<string, Record<string, string>> = {\n en: {\n required: \"This field is required\",\n minLength: \"Must be at least {value} characters\",\n maxLength: \"Must be at most {value} characters\",\n min: \"Must be at least {value}\",\n max: \"Must be at most {value}\",\n pattern: \"Invalid format\",\n minItems: \"Select at least {value} item(s)\",\n maxItems: \"Select at most {value} item(s)\",\n email: \"Invalid email address\",\n url: \"Invalid URL\",\n type: \"Invalid value\",\n custom: \"Invalid value\",\n },\n fr: {\n required: \"Ce champ est obligatoire\",\n minLength: \"Minimum {value} caractères\",\n maxLength: \"Maximum {value} caractères\",\n min: \"Minimum {value}\",\n max: \"Maximum {value}\",\n pattern: \"Format invalide\",\n minItems: \"Sélectionnez au moins {value} élément(s)\",\n maxItems: \"Sélectionnez au plus {value} élément(s)\",\n email: \"Adresse email invalide\",\n url: \"URL invalide\",\n type: \"Valeur invalide\",\n custom: \"Valeur invalide\",\n },\n};\n\nexport function registerValidationMessages(\n locale: string,\n messages: Record<string, string>\n): void {\n DEFAULT_MESSAGES[locale] = { ...DEFAULT_MESSAGES[locale], ...messages };\n}\n\nexport function defaultValidationMessage(\n validator: string,\n locale?: string,\n value?: unknown\n): string {\n const pack = DEFAULT_MESSAGES[locale ?? \"en\"] ?? DEFAULT_MESSAGES.en;\n const template =\n pack[validator] ?? DEFAULT_MESSAGES.en[validator] ?? \"Invalid value\";\n\n return template.replace(\"{value}\", String(value ?? \"\"));\n}\n",
7
7
  "import type { JSONSchemaType } from \"../validators/json-schema-type\";\nimport { resolveLocalizedText } from \"./localized-text\";\nimport { defaultValidationMessage } from \"../validators/default-messages\";\nimport type { Validator } from \"../validators/validator\";\nimport type { Validation } from \"../validators/validation\";\nimport type { Rule } from \"../rules/rule\";\nimport type { BrickType } from \"./brick-type\";\nimport type { BrickBaseConfigs } from \"./common-brick-props\";\nimport type { BrickStyles } from \"../utils/brick-styles\";\n\nexport interface BrickSpec {\n type: BrickType;\n dataType?: JSONSchemaType;\n id: string;\n name: string;\n category?: string;\n editable?: boolean;\n unWrapData?: boolean;\n isPrivate?: boolean;\n\n validators?: Validator[];\n validations?: Validation[];\n\n rules?: Rule[];\n\n configsForm?: BrickSpec;\n\n configs?: BrickBaseConfigs & Record<string, unknown>;\n styles?: BrickStyles<string>;\n\n children?: BrickSpec[];\n}\n\nexport function* iterateBricks(\n spec?: BrickSpec,\n path = \"0\"\n): Generator<{ brick: BrickSpec; path: string }> {\n if (!spec) return;\n\n yield { brick: spec, path };\n\n for (const [index, child] of (spec.children ?? []).entries()) {\n yield* iterateBricks(child, `${path}.${index}`);\n }\n}\n\nexport function* iterateSchemaBricks(spec?: BrickSpec): Generator<BrickSpec> {\n if (!spec) return;\n\n yield spec;\n\n if (spec.type === \"collection\") return;\n\n for (const child of spec.children ?? []) {\n yield* iterateSchemaBricks(child);\n }\n}\n\nexport function buildValidationSchema(brickSpecs?: BrickSpec, locale?: string) {\n if (!brickSpecs) return;\n\n const properties: Record<string, unknown> = {};\n const required: string[] = [];\n const requiredErrorMessage: Record<string, string | undefined> = {};\n const messageOf = (raw: unknown): string | undefined => {\n const resolved = resolveLocalizedText(raw, locale);\n return typeof resolved === \"string\" ? resolved : undefined;\n };\n\n for (const brick of iterateSchemaBricks(brickSpecs)) {\n const key = brick.configs?.key;\n const dataType =\n brick.configs?.multiple === true && brick.dataType === \"object\"\n ? \"array\"\n : brick.dataType;\n\n if (!key || !dataType || dataType === \"void\") continue;\n\n const isRequired = brick.validations?.find(\n (validation) => validation.validator === \"required\"\n );\n\n const property: Record<string, unknown> = {\n type: dataType,\n nullable: !isRequired,\n };\n const messages: Record<string, string> = {\n type: defaultValidationMessage(\"type\", locale),\n };\n\n for (const validation of brick.validations ?? []) {\n const { validator, value } = validation;\n const message =\n messageOf(validation.message) ??\n defaultValidationMessage(validator, locale, value);\n\n if (validator === \"minLength\" && value != null) {\n property.minLength = Number(value);\n messages.minLength = message;\n } else if (validator === \"maxLength\" && value != null) {\n property.maxLength = Number(value);\n messages.maxLength = message;\n } else if (validator === \"min\" && value != null) {\n property.minimum = Number(value);\n messages.minimum = message;\n } else if (validator === \"max\" && value != null) {\n property.maximum = Number(value);\n messages.maximum = message;\n } else if (validator === \"pattern\" && typeof value === \"string\" && value) {\n property.pattern = value;\n messages.pattern = message;\n } else if (validator === \"minItems\" && value != null) {\n property.minItems = Number(value);\n messages.minItems = message;\n } else if (validator === \"maxItems\" && value != null) {\n property.maxItems = Number(value);\n messages.maxItems = message;\n } else if (validator === \"email\") {\n property.format = \"email\";\n messages.format = message;\n } else if (validator === \"url\") {\n property.format = \"uri\";\n messages.format = message;\n }\n }\n\n property.errorMessage = messages;\n\n properties[key] = property;\n\n if (isRequired) {\n required.push(key);\n requiredErrorMessage[key] =\n messageOf(isRequired.message) ??\n defaultValidationMessage(\"required\", locale);\n }\n }\n\n return {\n type: \"object\",\n properties,\n required,\n ...(Object.keys(requiredErrorMessage).length\n ? {\n errorMessage: {\n required: requiredErrorMessage,\n },\n }\n : {}),\n additionalProperties: false,\n };\n}\n",
8
8
  "import type { BrickSpec } from './brick-spec';\n\nexport function getBrickData(\n brickSpec: BrickSpec,\n data?: Record<string, unknown>\n): unknown {\n if (!brickSpec.configs?.key || !data) return undefined;\n\n if (brickSpec.unWrapData) return data;\n return data[brickSpec.configs.key];\n}\n\nexport function wrapBrickData(\n brickSpec: BrickSpec,\n value: unknown\n): Record<string, unknown> | undefined {\n if (!brickSpec.configs?.key) return undefined;\n\n if (brickSpec.unWrapData) return value as Record<string, unknown>;\n return { [brickSpec.configs.key]: value };\n}\n",
9
9
  "export interface SelectOption {\n label: string;\n value: string;\n}\n\nconst readPath = (record: Record<string, unknown>, path: string): unknown => {\n if (!path.includes('.')) return record[path];\n\n let current: unknown = record;\n for (const segment of path.split('.')) {\n if (typeof current !== 'object' || current === null) return undefined;\n current = (current as Record<string, unknown>)[segment];\n }\n return current;\n};\n\nexport function normalizeOptions(\n raw: unknown,\n labelKey = 'label',\n valueKey = 'value'\n): SelectOption[] {\n if (Array.isArray(raw)) {\n return raw\n .map((item) => {\n if (typeof item === 'object' && item !== null) {\n const record = item as Record<string, unknown>;\n const label = readPath(record, labelKey) ?? readPath(record, valueKey);\n const value = readPath(record, valueKey) ?? readPath(record, labelKey);\n return { label: String(label ?? ''), value: String(value ?? '') };\n }\n\n return { label: String(item), value: String(item) };\n })\n .filter((option) => option.label !== '');\n }\n\n return String(raw ?? '')\n .split('\\n')\n .map((line) => line.trim())\n .filter(Boolean)\n .map((line) => ({ label: line, value: line }));\n}\n",
10
- "import type { Validator } from \"../validators/validator\";\nimport type { Validation } from \"../validators/validation\";\nimport type { JSONSchemaType } from \"../validators/json-schema-type\";\nimport { type Utils } from \"./utils\";\nimport type { Rule } from \"../rules/rule\";\nimport type { BrickSpec } from \"../utils/brick-spec\";\nimport type { BrickType } from \"../utils/brick-type\";\nimport type { BrickBaseConfigs, CommonBrickProps } from \"../utils/common-brick-props\";\nimport type { BrickMoldDropType } from \"../utils/drop-type\";\n\nexport interface BrickProps<DataType, Configs extends BrickBaseConfigs, Styles>\n extends CommonBrickProps<Configs, Styles> {\n onConfigsChange?: (\n configs: BrickBaseConfigs & Record<string, unknown>,\n uid?: string\n ) => void;\n onStylesChange?: (\n styles: Record<string, unknown>,\n uid?: string\n ) => void;\n data?: DataType;\n dataMap?: Record<string, unknown>;\n rootSpec?: BrickSpec;\n onDataChange?: (value?: DataType) => void;\n onMove?: (from: string, to: string) => void;\n onDuplicate?: (path: string) => void;\n onDelete?: (path: string) => void;\n onAddBrick?: (brickMold: BrickMoldDropType, path: string) => void;\n path: string;\n error?: string;\n disabled?: boolean;\n locale?: string;\n children?: unknown;\n brickSpec?: BrickSpec;\n editable?: boolean;\n validations?: Validation[];\n onValidationsChange?: (validations: Validation[], uid?: string) => void;\n rules?: Rule[];\n onRulesChange?: (rules: Rule[], uid?: string) => void;\n utils: Utils;\n}\n\nexport abstract class Brick<\n DataType,\n Configs extends BrickBaseConfigs,\n Styles extends Record<string, unknown>> {\n readonly type: BrickType;\n readonly dataType: JSONSchemaType;\n readonly id: string;\n readonly name: string;\n readonly configsForm?: BrickSpec;\n readonly category?: string;\n readonly styles?: Styles;\n\n readonly unWrapData: boolean;\n readonly isPrivate: boolean;\n\n readonly validators: Validator[];\n readonly defaultConfigs?: Record<string, unknown>;\n\n constructor(params: {\n type: BrickType;\n dataType: JSONSchemaType;\n id: string;\n name: string;\n configsForm?: BrickSpec;\n category?: string;\n styles?: Styles;\n unWrapData?: boolean;\n isPrivate?: boolean;\n validators?: Validator[];\n defaultConfigs?: Record<string, unknown>;\n }) {\n this.type = params.type;\n this.dataType = params.dataType;\n this.id = params.id;\n this.name = params.name;\n this.configsForm = params.configsForm;\n this.category = params.category;\n this.styles = params.styles;\n this.unWrapData = params.unWrapData ?? false;\n this.isPrivate = params.isPrivate ?? false;\n this.validators = params.validators ?? [];\n this.defaultConfigs = params.defaultConfigs;\n }\n\n abstract render(props: BrickProps<DataType, Configs, Styles>): unknown;\n\n\n abstract renderBuilder(props: BrickProps<DataType, Configs, Styles>): unknown;\n\n abstract getComponent(props: BrickProps<DataType, Configs, Styles>): unknown;\n abstract getComponentWithActions(props: BrickProps<DataType, Configs, Styles>): unknown;\n\n getBrickEmptySpec(): BrickSpec {\n return {\n type: this.type,\n dataType: this.dataType,\n id: this.id,\n name: this.name,\n ...(this.category !== undefined ? { category: this.category } : {}),\n ...(this.configsForm !== undefined ? { configsForm: this.configsForm } : {}),\n ...(this.styles !== undefined ? { styles: this.styles } : {}),\n ...(this.defaultConfigs !== undefined\n ? { configs: { ...this.defaultConfigs } }\n : {}),\n validators: this.validators,\n };\n }\n}",
10
+ "export type FkTranslations = Record<string, string>;\n\nconst en: FkTranslations = {\n 'palette.search': 'Search bricks…',\n 'palette.empty': 'No brick matches “{query}”',\n 'builder.undo': 'Undo',\n 'builder.redo': 'Redo',\n 'builder.editLocale': 'Editing language',\n 'builder.copyJson': 'Copy JSON',\n 'builder.importJson': 'Import JSON',\n 'builder.importInvalid': 'Invalid form JSON',\n 'builder.pasteHint': 'Press Ctrl+V to paste a spec',\n 'builder.copied': 'Copied!',\n 'builder.downloadJson': 'Download .json',\n 'builder.hint': 'Select a brick to edit its properties',\n 'drop.hint': 'Drop a brick here',\n 'empty.title': 'Your form is empty',\n 'empty.hint': 'Drag a brick from the palette to get started',\n 'actions.move': 'Move',\n 'actions.duplicate': 'Duplicate',\n 'actions.delete': 'Delete',\n 'stepper.back': '← Back',\n 'stepper.next': 'Next →',\n 'stepper.submit': 'Submit',\n 'panel.cfg.validateSteps': 'Validate each step',\n 'panel.cfg.allowStepClick': 'Allow clicking steps to jump',\n 'panel.cfg.showSubmit': 'Submit button on last step',\n 'panel.cfg.validateTabs': 'Validate tab before leaving it',\n 'signature.clear': 'Clear',\n 'panel.tab.config': 'Config',\n 'panel.tab.validation': 'Validation',\n 'panel.tab.styles': 'Styles',\n 'panel.tab.rules': 'Rules',\n 'panel.key': 'Key',\n 'panel.label': 'Label',\n 'panel.placeholder': 'Placeholder',\n 'panel.prefix': 'Prefix',\n 'panel.suffix': 'Suffix',\n 'panel.accept': 'Accepted file types',\n 'panel.mask': 'Input mask (9=digit, a=letter, *=any)',\n 'panel.uploadUrl': 'Upload URL',\n 'panel.cfg.multiple': 'Allow multiple files',\n 'panel.optionsSource': 'Options source',\n 'panel.options': 'Options (one per line)',\n 'panel.content': 'Content',\n 'panel.dataKey': 'Data key',\n 'panel.url': 'URL',\n 'panel.headers': 'Headers ({token} reads form data)',\n 'panel.searchParam': 'Server search param',\n 'panel.labelKey': 'Label key',\n 'panel.valueKey': 'Value key',\n 'panel.errorMessage': 'Error message',\n 'panel.required': 'Required',\n 'panel.minLength': 'Min length',\n 'panel.maxLength': 'Max length',\n 'panel.min': 'Min',\n 'panel.max': 'Max',\n 'panel.pattern': 'Pattern (regex)',\n 'panel.minItems': 'Min items',\n 'panel.maxItems': 'Max items',\n 'panel.emailFormat': 'Email format',\n 'panel.urlFormat': 'URL format',\n 'panel.custom': 'Custom (JavaScript)',\n 'panel.fallbackMessage': 'Fallback message',\n 'panel.styleProperty': 'property',\n 'panel.styleValue': 'value',\n 'file.choose': 'Choose a file…',\n 'file.uploading': 'Uploading…',\n 'file.remove': 'Remove file',\n 'file.addAnother': '+ Add a file',\n 'address.street': 'Street',\n 'address.city': 'City',\n 'address.zip': 'Postal code',\n 'address.country': 'Country',\n 'grid.addRow': '+ Add row',\n 'grid.moveUp': 'Move row up',\n 'grid.moveDown': 'Move row down',\n 'grid.removeRow': 'Remove row',\n 'grid.empty': 'No rows yet',\n 'grid.columns': 'Row template',\n 'select.search': 'Search…',\n 'select.empty': 'No options',\n 'select.clear': 'Clear',\n 'rules.when': 'When',\n 'rules.then': 'Then',\n 'rules.addRule': '+ Add rule',\n 'rules.addEffect': '+ Effect',\n 'rules.removeRule': 'Remove rule',\n 'rules.removeEffect': 'Remove effect',\n 'rules.mode.simple': 'simple',\n 'rules.mode.json': 'json',\n 'rules.mode.js': 'JS',\n 'category.Inputs': 'Inputs',\n 'category.Layout': 'Layout',\n 'category.Data': 'Data',\n 'brick.text.name': 'Text',\n 'brick.email.name': 'Email',\n 'brick.password.name': 'Password',\n 'brick.url.name': 'URL',\n 'brick.phone.name': 'Phone',\n 'brick.textarea.name': 'Text area',\n 'brick.number.name': 'Number',\n 'brick.date.name': 'Date',\n 'brick.time.name': 'Time',\n 'brick.datetime.name': 'Date / Time',\n 'brick.select.name': 'Select',\n 'brick.multi-select.name': 'Multi select',\n 'brick.radio.name': 'Radio',\n 'brick.select-boxes.name': 'Select boxes',\n 'brick.checkbox.name': 'Checkbox',\n 'brick.tags.name': 'Tags',\n 'brick.signature.name': 'Signature',\n 'brick.data-grid.name': 'Data grid',\n 'brick.address.name': 'Address',\n 'brick.file.name': 'File',\n 'brick.hidden.name': 'Hidden',\n 'brick.content.name': 'Content',\n 'brick.recap.name': 'Recap',\n 'brick.nested-form.name': 'Nested form',\n 'brick.code.name': 'Code',\n 'nestedForm.ref': 'Referenced form',\n 'nestedForm.missing': 'Set the specRef config to reference a form.',\n 'nestedForm.loading': 'Loading nested forms…',\n 'panel.specRef': 'Referenced form (specRef)',\n 'panel.optionsRef': 'Options catalog (optionsRef)',\n 'recap.empty': 'Nothing to summarize yet.',\n 'recap.yes': 'Yes',\n 'recap.no': 'No',\n 'panel.cfg.showEmpty': 'Show empty fields',\n 'panel.cfg.groupBySections': 'Group by section',\n 'brick.group.name': 'Group',\n 'brick.row.name': 'Row',\n 'brick.column.name': 'Column',\n 'brick.stepper.name': 'Stepper',\n 'brick.tabs.name': 'Tabs',\n};\n\nexport const frFkTranslations: FkTranslations = {\n 'palette.search': 'Rechercher une brique…',\n 'palette.empty': 'Aucune brique ne correspond à « {query} »',\n 'builder.undo': 'Annuler',\n 'builder.editLocale': \"Langue d'édition\",\n 'builder.redo': 'Rétablir',\n 'builder.copyJson': 'Copier le JSON',\n 'builder.importJson': 'Importer le JSON',\n 'builder.importInvalid': 'JSON de formulaire invalide',\n 'builder.pasteHint': 'Collez avec Ctrl+V pour importer une spec',\n 'builder.copied': 'Copié !',\n 'builder.downloadJson': 'Télécharger le .json',\n 'builder.hint': 'Sélectionnez une brique pour éditer ses propriétés',\n 'drop.hint': 'Déposez une brique ici',\n 'empty.title': 'Votre formulaire est vide',\n 'empty.hint': 'Glissez une brique depuis la palette pour commencer',\n 'actions.move': 'Déplacer',\n 'actions.duplicate': 'Dupliquer',\n 'actions.delete': 'Supprimer',\n 'stepper.back': '← Précédent',\n 'stepper.next': 'Suivant →',\n 'stepper.submit': 'Envoyer',\n 'panel.cfg.validateSteps': 'Valider chaque étape',\n 'panel.cfg.allowStepClick': 'Autoriser le saut d’étapes au clic',\n 'panel.cfg.showSubmit': 'Bouton d’envoi à la dernière étape',\n 'panel.cfg.validateTabs': 'Valider l’onglet avant de le quitter',\n 'signature.clear': 'Effacer',\n 'panel.tab.config': 'Config',\n 'panel.tab.validation': 'Validation',\n 'panel.tab.styles': 'Styles',\n 'panel.tab.rules': 'Règles',\n 'panel.key': 'Clé',\n 'panel.label': 'Libellé',\n 'panel.placeholder': 'Placeholder',\n 'panel.prefix': 'Préfixe',\n 'panel.suffix': 'Suffixe',\n 'panel.accept': 'Types de fichiers acceptés',\n 'panel.mask': 'Masque de saisie (9=chiffre, a=lettre, *=tout)',\n 'panel.uploadUrl': \"URL d'upload\",\n 'panel.cfg.multiple': 'Autoriser plusieurs fichiers',\n 'panel.optionsSource': 'Source des options',\n 'panel.options': 'Options (une par ligne)',\n 'panel.content': 'Contenu',\n 'panel.dataKey': 'Clé de données',\n 'panel.url': 'URL',\n 'panel.headers': 'En-têtes ({token} lit les données du formulaire)',\n 'panel.searchParam': 'Paramètre de recherche serveur',\n 'panel.labelKey': 'Clé du libellé',\n 'panel.valueKey': 'Clé de la valeur',\n 'panel.errorMessage': \"Message d'erreur\",\n 'panel.required': 'Obligatoire',\n 'panel.minLength': 'Longueur min',\n 'panel.maxLength': 'Longueur max',\n 'panel.min': 'Min',\n 'panel.max': 'Max',\n 'panel.pattern': 'Motif (regex)',\n 'panel.minItems': 'Éléments min',\n 'panel.maxItems': 'Éléments max',\n 'panel.emailFormat': 'Format email',\n 'panel.urlFormat': 'Format URL',\n 'panel.custom': 'Personnalisé (JavaScript)',\n 'panel.fallbackMessage': 'Message par défaut',\n 'panel.styleProperty': 'propriété',\n 'panel.styleValue': 'valeur',\n 'file.choose': 'Choisir un fichier…',\n 'file.uploading': 'Envoi en cours…',\n 'file.remove': 'Retirer le fichier',\n 'file.addAnother': '+ Ajouter un fichier',\n 'address.street': 'Rue',\n 'address.city': 'Ville',\n 'address.zip': 'Code postal',\n 'address.country': 'Pays',\n 'grid.addRow': '+ Ajouter une ligne',\n 'grid.moveUp': 'Monter la ligne',\n 'grid.moveDown': 'Descendre la ligne',\n 'grid.removeRow': 'Supprimer la ligne',\n 'grid.empty': 'Aucune ligne',\n 'grid.columns': 'Modèle de ligne',\n 'select.search': 'Rechercher…',\n 'select.empty': 'Aucune option',\n 'select.clear': 'Effacer',\n 'rules.when': 'Quand',\n 'rules.then': 'Alors',\n 'rules.addRule': '+ Ajouter une règle',\n 'rules.addEffect': '+ Effet',\n 'rules.removeRule': 'Supprimer la règle',\n 'rules.removeEffect': \"Supprimer l'effet\",\n 'rules.mode.simple': 'simple',\n 'rules.mode.json': 'json',\n 'rules.mode.js': 'JS',\n 'category.Inputs': 'Champs',\n 'category.Layout': 'Mise en page',\n 'category.Data': 'Données',\n 'brick.text.name': 'Texte',\n 'brick.email.name': 'Email',\n 'brick.password.name': 'Mot de passe',\n 'brick.url.name': 'URL',\n 'brick.phone.name': 'Téléphone',\n 'brick.textarea.name': 'Zone de texte',\n 'brick.number.name': 'Nombre',\n 'brick.date.name': 'Date',\n 'brick.time.name': 'Heure',\n 'brick.datetime.name': 'Date / Heure',\n 'brick.select.name': 'Liste déroulante',\n 'brick.multi-select.name': 'Sélection multiple',\n 'brick.radio.name': 'Boutons radio',\n 'brick.select-boxes.name': 'Cases à cocher',\n 'brick.checkbox.name': 'Case à cocher',\n 'brick.tags.name': 'Étiquettes',\n 'brick.signature.name': 'Signature',\n 'brick.data-grid.name': 'Grille de données',\n 'brick.address.name': 'Adresse',\n 'brick.file.name': 'Fichier',\n 'brick.hidden.name': 'Caché',\n 'brick.content.name': 'Contenu',\n 'brick.recap.name': 'Récapitulatif',\n 'brick.nested-form.name': 'Formulaire imbriqué',\n 'brick.code.name': 'Code',\n 'nestedForm.ref': 'Formulaire référencé',\n 'nestedForm.missing': 'Renseignez la config specRef pour référencer un formulaire.',\n 'nestedForm.loading': 'Chargement des formulaires imbriqués…',\n 'panel.specRef': 'Formulaire référencé (specRef)',\n 'panel.optionsRef': \"Catalogue d'options (optionsRef)\",\n 'recap.empty': 'Rien à récapituler pour le moment.',\n 'recap.yes': 'Oui',\n 'recap.no': 'Non',\n 'panel.cfg.showEmpty': 'Afficher les champs vides',\n 'panel.cfg.groupBySections': 'Regrouper par section',\n 'brick.group.name': 'Groupe',\n 'brick.row.name': 'Ligne',\n 'brick.column.name': 'Colonne',\n 'brick.stepper.name': 'Étapes',\n 'brick.tabs.name': 'Onglets',\n};\n\nconst GLOBAL_KEY = Symbol.for('formkrafter.i18n');\nconst globalStore = globalThis as unknown as Record<\n symbol,\n { current: FkTranslations } | undefined\n>;\n\nconst state = (globalStore[GLOBAL_KEY] ??= { current: { ...en } });\n\nexport function setFkTranslations(overrides: FkTranslations = {}): void {\n state.current = { ...en, ...overrides };\n}\n\nexport function fkT(\n key: string,\n params?: Record<string, string | number>\n): string {\n let text = state.current[key] ?? key;\n\n for (const [name, value] of Object.entries(params ?? {})) {\n text = text.replace(`{${name}}`, String(value));\n }\n\n return text;\n}\n\nexport function fkTOr(key: string, fallback: string): string {\n return state.current[key] ?? fallback;\n}\n",
11
11
  "import jsonLogic from \"json-logic-js\";\nimport { services } from \"../services\";\nimport type { Rule } from \"../rules/rule\";\n\nexport type CommonUtils = object;\n\nexport type InputUtils = CommonUtils;\n\nexport type PanelUtils = CommonUtils;\n\nexport type CollectionUtils = CommonUtils;\n\nexport type ActionUtils = {\n validateForm: () => {\n isValid: boolean;\n };\n} & CommonUtils;\n\nexport type Utils = InputUtils & PanelUtils & CollectionUtils & ActionUtils;\n\nexport const evalBrickCode = (code: string, data?: Record<string, unknown>) => {\n try {\n return services.jsRunnerService.eval(code, { dataMap: data ?? {} });\n } catch (error) {\n return error instanceof Error ? error : new Error(String(error));\n }\n};\n\nconst evalRule = (rule: Rule, dataMap?: Record<string, unknown>): boolean => {\n if (rule.type === \"jsonLogic\") {\n if (rule.logic == null) return false;\n\n return jsonLogic.apply(rule.logic, dataMap) === true;\n }\n\n if (rule.type === \"javaScript\") {\n if (!rule.code) return false;\n\n return evalBrickCode(rule.code, dataMap) === true;\n }\n\n return false;\n};\n\ntype Properties = {\n value?: string;\n required?: boolean;\n hidden?: boolean;\n disabled?: boolean;\n};\n\nconst getActiveRules = (rules?: Rule[], dataMap?: Record<string, unknown>) =>\n rules?.filter((rule) => evalRule(rule, dataMap));\n\nconst getActiveEffect = (rules?: Rule[], dataMap?: Record<string, unknown>) =>\n getActiveRules(rules, dataMap)\n ?.map((rule) => rule.effects)\n .flat()\n .filter((effect) => effect != undefined);\n\nexport const getAffectedProperties = (\n rules?: Rule[],\n dataMap?: Record<string, unknown>\n): Properties => {\n return getActiveEffect(rules, dataMap)\n ?.map((effect) => {\n let value;\n if (effect.property) {\n if (effect.property.type === \"boolean\") value = effect.boolean;\n else if (effect.property.type === \"logic\" && effect.logic != null)\n value = jsonLogic.apply(effect.logic, dataMap);\n else if (effect.property.type === \"code\" && effect.code)\n value = evalBrickCode(effect.code, dataMap);\n else if (effect.property.type === \"string\") value = effect.string;\n\n return {\n [effect.property.target]: value,\n };\n }\n return {};\n })\n .flat()\n .reduce((acc, item) => ({ ...acc, ...item }), {}) ?? { hidden: false };\n};\n",
12
12
  "import { type Options, parse } from \"acorn\";\nimport { runSandboxed } from \"./sandbox_interpreter\";\n\nexport interface JsValidationResult {\n valid: boolean;\n error?: Error;\n}\n\nexport interface JsRunnerService {\n eval(js: string, scope?: Record<string, unknown>): unknown;\n validateJs(js: string, options?: Options): JsValidationResult;\n}\n\nexport class SandboxJsRunnerService implements JsRunnerService {\n validateJs(\n js: string,\n options: Options = { ecmaVersion: \"latest\", allowReturnOutsideFunction: true }\n ): JsValidationResult {\n try {\n parse(js, options);\n return { valid: true };\n } catch (error) {\n return {\n valid: false,\n error: error instanceof Error ? error : new Error(String(error)),\n };\n }\n }\n\n eval(js: string, scope: Record<string, unknown> = {}): unknown {\n return runSandboxed(js, scope);\n }\n}\n",
13
13
  "import { parse } from \"acorn\";\n\ninterface AstNode {\n type: string;\n [key: string]: unknown;\n}\n\nconst FORBIDDEN_PROPS = new Set([\"__proto__\", \"constructor\", \"prototype\"]);\nconst MAX_STEPS = 100_000;\n\nclass ReturnSignal {\n constructor(readonly value: unknown) {}\n}\n\ntype Scope = Map<string, unknown>;\n\ninterface Ctx {\n steps: number;\n scopes: Scope[];\n}\n\nconst lookup = (ctx: Ctx, name: string): unknown => {\n for (let i = ctx.scopes.length - 1; i >= 0; i--) {\n if (ctx.scopes[i].has(name)) return ctx.scopes[i].get(name);\n }\n\n throw new Error(`Unknown identifier \"${name}\"`);\n};\n\nconst declareVar = (ctx: Ctx, name: string, value: unknown): void => {\n ctx.scopes[ctx.scopes.length - 1].set(name, value);\n};\n\nconst assign = (ctx: Ctx, name: string, value: unknown): void => {\n for (let i = ctx.scopes.length - 1; i >= 0; i--) {\n if (ctx.scopes[i].has(name)) {\n ctx.scopes[i].set(name, value);\n return;\n }\n }\n\n throw new Error(`Cannot assign to unknown identifier \"${name}\"`);\n};\n\nconst guardProp = (prop: unknown): string | number => {\n if (typeof prop === \"number\") return prop;\n\n const name = String(prop);\n if (FORBIDDEN_PROPS.has(name)) {\n throw new Error(`Access to \"${name}\" is not allowed`);\n }\n\n return name;\n};\n\nconst memberTarget = (\n ctx: Ctx,\n node: AstNode\n): { object: unknown; prop: string | number; optional: boolean } => {\n const object = evalNode(ctx, node.object as AstNode);\n const prop = node.computed\n ? guardProp(evalNode(ctx, node.property as AstNode))\n : guardProp((node.property as AstNode).name);\n\n return { object, prop, optional: node.optional === true };\n};\n\nconst readMember = (ctx: Ctx, node: AstNode): unknown => {\n const { object, prop, optional } = memberTarget(ctx, node);\n\n if (object === null || object === undefined) {\n if (optional) return undefined;\n throw new Error(`Cannot read \"${String(prop)}\" of ${String(object)}`);\n }\n\n return (object as Record<string | number, unknown>)[prop];\n};\n\nconst evalNode = (ctx: Ctx, node: AstNode): unknown => {\n if (++ctx.steps > MAX_STEPS) {\n throw new Error(\"Sandbox execution budget exceeded\");\n }\n\n switch (node.type) {\n case \"Program\":\n case \"BlockStatement\": {\n for (const statement of node.body as AstNode[]) {\n const result = evalNode(ctx, statement);\n if (result instanceof ReturnSignal) return result;\n }\n return undefined;\n }\n case \"ReturnStatement\":\n return new ReturnSignal(\n node.argument ? evalNode(ctx, node.argument as AstNode) : undefined\n );\n case \"IfStatement\": {\n if (evalNode(ctx, node.test as AstNode)) {\n return evalNode(ctx, node.consequent as AstNode);\n }\n if (node.alternate) return evalNode(ctx, node.alternate as AstNode);\n return undefined;\n }\n case \"VariableDeclaration\": {\n for (const declaration of node.declarations as AstNode[]) {\n const id = declaration.id as AstNode;\n if (id.type !== \"Identifier\") {\n throw new Error(\"Only simple variable names are supported\");\n }\n declareVar(\n ctx,\n id.name as string,\n declaration.init ? evalNode(ctx, declaration.init as AstNode) : undefined\n );\n }\n return undefined;\n }\n case \"ExpressionStatement\":\n evalNode(ctx, node.expression as AstNode);\n return undefined;\n case \"Literal\":\n return node.value;\n case \"TemplateLiteral\": {\n const quasis = node.quasis as AstNode[];\n const expressions = node.expressions as AstNode[];\n let text = \"\";\n quasis.forEach((quasi, index) => {\n text += (quasi.value as { cooked?: string }).cooked ?? \"\";\n if (index < expressions.length) {\n text += String(evalNode(ctx, expressions[index]));\n }\n });\n return text;\n }\n case \"Identifier\":\n return lookup(ctx, node.name as string);\n case \"ThisExpression\":\n return undefined;\n case \"ChainExpression\":\n return evalNode(ctx, node.expression as AstNode);\n case \"MemberExpression\":\n return readMember(ctx, node);\n case \"CallExpression\": {\n const callee = node.callee as AstNode;\n const args: unknown[] = [];\n for (const argument of node.arguments as AstNode[]) {\n if (argument.type === \"SpreadElement\") {\n const spread = evalNode(ctx, argument.argument as AstNode);\n if (Array.isArray(spread)) args.push(...spread);\n } else {\n args.push(evalNode(ctx, argument));\n }\n }\n\n if (callee.type === \"MemberExpression\") {\n const { object, prop, optional } = memberTarget(ctx, callee);\n if (object === null || object === undefined) {\n if (optional || node.optional === true) return undefined;\n throw new Error(`Cannot call \"${String(prop)}\" of ${String(object)}`);\n }\n\n const fn = (object as Record<string | number, unknown>)[prop];\n if (typeof fn !== \"function\") {\n if (node.optional === true && fn == null) return undefined;\n throw new Error(`\"${String(prop)}\" is not a function`);\n }\n if (fn === Function || fn === eval) {\n throw new Error(\"This function is not allowed\");\n }\n\n return (fn as (...values: unknown[]) => unknown).apply(object, args);\n }\n\n const fn = evalNode(ctx, callee);\n if (typeof fn !== \"function\") {\n if (node.optional === true && fn == null) return undefined;\n throw new Error(\"Value is not a function\");\n }\n if (fn === Function || fn === eval) {\n throw new Error(\"This function is not allowed\");\n }\n\n return (fn as (...values: unknown[]) => unknown)(...args);\n }\n case \"ArrowFunctionExpression\": {\n const params = node.params as AstNode[];\n const body = node.body as AstNode;\n const capturedScopes = [...ctx.scopes];\n\n return (...args: unknown[]): unknown => {\n const callScope: Scope = new Map();\n params.forEach((param, index) => {\n if (param.type !== \"Identifier\") {\n throw new Error(\"Only simple parameters are supported\");\n }\n callScope.set(param.name as string, args[index]);\n });\n\n const callCtx: Ctx = {\n steps: ctx.steps,\n scopes: [...capturedScopes, callScope],\n };\n const result = evalNode(callCtx, body);\n ctx.steps = callCtx.steps;\n\n if (result instanceof ReturnSignal) return result.value;\n return node.expression === true ? result : undefined;\n };\n }\n case \"BinaryExpression\": {\n const left = evalNode(ctx, node.left as AstNode) as never;\n const right = evalNode(ctx, node.right as AstNode) as never;\n switch (node.operator) {\n case \"===\": return left === right;\n case \"!==\": return left !== right;\n case \"==\": return left == right;\n case \"!=\": return left != right;\n case \"<\": return left < right;\n case \"<=\": return left <= right;\n case \">\": return left > right;\n case \">=\": return left >= right;\n case \"+\": return (left as number) + (right as number);\n case \"-\": return (left as number) - (right as number);\n case \"*\": return (left as number) * (right as number);\n case \"/\": return (left as number) / (right as number);\n case \"%\": return (left as number) % (right as number);\n case \"**\": return (left as number) ** (right as number);\n default:\n throw new Error(`Unsupported operator \"${String(node.operator)}\"`);\n }\n }\n case \"LogicalExpression\": {\n const left = evalNode(ctx, node.left as AstNode);\n switch (node.operator) {\n case \"&&\": return left && evalNode(ctx, node.right as AstNode);\n case \"||\": return left || evalNode(ctx, node.right as AstNode);\n case \"??\": return left ?? evalNode(ctx, node.right as AstNode);\n default:\n throw new Error(`Unsupported operator \"${String(node.operator)}\"`);\n }\n }\n case \"UnaryExpression\": {\n const argument = evalNode(ctx, node.argument as AstNode);\n switch (node.operator) {\n case \"!\": return !argument;\n case \"-\": return -(argument as number);\n case \"+\": return +(argument as number);\n case \"typeof\": return typeof argument;\n default:\n throw new Error(`Unsupported operator \"${String(node.operator)}\"`);\n }\n }\n case \"ConditionalExpression\":\n return evalNode(ctx, node.test as AstNode)\n ? evalNode(ctx, node.consequent as AstNode)\n : evalNode(ctx, node.alternate as AstNode);\n case \"AssignmentExpression\": {\n const target = node.left as AstNode;\n if (target.type !== \"Identifier\" || node.operator !== \"=\") {\n throw new Error(\"Only simple assignments are supported\");\n }\n const value = evalNode(ctx, node.right as AstNode);\n assign(ctx, target.name as string, value);\n return value;\n }\n case \"ArrayExpression\": {\n const values: unknown[] = [];\n for (const element of node.elements as Array<AstNode | null>) {\n if (!element) continue;\n if (element.type === \"SpreadElement\") {\n const spread = evalNode(ctx, element.argument as AstNode);\n if (Array.isArray(spread)) values.push(...spread);\n } else {\n values.push(evalNode(ctx, element));\n }\n }\n return values;\n }\n case \"ObjectExpression\": {\n const result: Record<string, unknown> = {};\n for (const property of node.properties as AstNode[]) {\n if (property.type === \"SpreadElement\") {\n const spread = evalNode(ctx, property.argument as AstNode);\n if (spread && typeof spread === \"object\") {\n for (const [key, value] of Object.entries(spread)) {\n result[String(guardProp(key))] = value;\n }\n }\n continue;\n }\n\n const keyNode = property.key as AstNode;\n const key = property.computed\n ? guardProp(evalNode(ctx, keyNode))\n : guardProp(\n keyNode.type === \"Identifier\" ? keyNode.name : keyNode.value\n );\n result[String(key)] = evalNode(ctx, property.value as AstNode);\n }\n return result;\n }\n default:\n throw new Error(`Unsupported syntax: ${node.type}`);\n }\n};\n\nconst SAFE_BUILTINS: Record<string, unknown> = {\n undefined,\n NaN,\n Infinity,\n Math,\n JSON,\n Number,\n String,\n Boolean,\n Array,\n Object,\n Date,\n parseInt,\n parseFloat,\n isNaN,\n isFinite,\n};\n\nexport function runSandboxed(\n code: string,\n globals: Record<string, unknown> = {}\n): unknown {\n const ast = parse(code, {\n ecmaVersion: \"latest\",\n allowReturnOutsideFunction: true,\n }) as unknown as AstNode;\n\n const ctx: Ctx = {\n steps: 0,\n scopes: [\n new Map(Object.entries({ ...SAFE_BUILTINS, ...globals })),\n new Map(),\n ],\n };\n\n const result = evalNode(ctx, ast);\n return result instanceof ReturnSignal ? result.value : undefined;\n}\n",
@@ -16,9 +16,10 @@
16
16
  "import type { BrickSpec } from \"../utils/brick-spec\";\n\nexport interface SpecSourceService {\n fetchSpec(ref: string): Promise<BrickSpec>;\n}\n\nexport interface FetchSpecSourceDefaults {\n baseUrl?: string;\n headers?: Record<string, string>;\n credentials?: RequestCredentials;\n fetch?: typeof fetch;\n}\n\nexport class FetchSpecSourceService implements SpecSourceService {\n private cache = new Map<string, Promise<BrickSpec>>();\n\n constructor(private readonly defaults: FetchSpecSourceDefaults = {}) {}\n\n private resolveUrl(ref: string): string {\n if (/^https?:\\/\\//.test(ref) || !this.defaults.baseUrl) return ref;\n return `${this.defaults.baseUrl.replace(/\\/$/, \"\")}/${ref.replace(/^\\//, \"\")}`;\n }\n\n fetchSpec(ref: string): Promise<BrickSpec> {\n const url = this.resolveUrl(ref);\n\n let pending = this.cache.get(url);\n if (!pending) {\n const fetchImplementation =\n this.defaults.fetch ?? globalThis.fetch.bind(globalThis);\n\n pending = fetchImplementation(url, {\n headers: this.defaults.headers,\n credentials: this.defaults.credentials,\n }).then(async (response) => {\n if (!response.ok) {\n throw new Error(`Failed to load spec \"${ref}\" (${response.status})`);\n }\n return (await response.json()) as BrickSpec;\n });\n\n pending.catch(() => this.cache.delete(url));\n this.cache.set(url, pending);\n }\n\n return pending;\n }\n}\n",
17
17
  "export interface OptionSourceService {\n fetchOptions(ref: string): Promise<unknown>;\n}\n\nexport interface FetchOptionSourceDefaults {\n baseUrl?: string;\n headers?: Record<string, string>;\n credentials?: RequestCredentials;\n fetch?: typeof fetch;\n}\n\nexport class FetchOptionSourceService implements OptionSourceService {\n private cache = new Map<string, Promise<unknown>>();\n\n constructor(private readonly defaults: FetchOptionSourceDefaults = {}) {}\n\n private resolveUrl(ref: string): string {\n if (/^https?:\\/\\//.test(ref) || !this.defaults.baseUrl) return ref;\n return `${this.defaults.baseUrl.replace(/\\/$/, \"\")}/${ref.replace(/^\\//, \"\")}`;\n }\n\n fetchOptions(ref: string): Promise<unknown> {\n const url = this.resolveUrl(ref);\n\n let pending = this.cache.get(url);\n if (!pending) {\n const fetchImplementation =\n this.defaults.fetch ?? globalThis.fetch.bind(globalThis);\n\n pending = fetchImplementation(url, {\n headers: this.defaults.headers,\n credentials: this.defaults.credentials,\n }).then(async (response) => {\n if (!response.ok) {\n throw new Error(`Failed to load options \"${ref}\" (${response.status})`);\n }\n return (await response.json()) as unknown;\n });\n\n pending.catch(() => this.cache.delete(url));\n this.cache.set(url, pending);\n }\n\n return pending;\n }\n}\n",
18
18
  "import {\n SandboxJsRunnerService,\n type JsRunnerService,\n} from \"./js_runner_service\";\nimport {\n FetchDataSourceService,\n type DataSourceService,\n} from \"./data_source_service\";\nimport {\n Base64FileUploadService,\n type FileUploadService,\n} from \"./file_upload_service\";\nimport {\n FetchSpecSourceService,\n type SpecSourceService,\n} from \"./spec_source_service\";\nimport {\n FetchOptionSourceService,\n type OptionSourceService,\n} from \"./option_source_service\";\n\nexport interface Services {\n jsRunnerService: JsRunnerService;\n dataSourceService: DataSourceService;\n fileUploadService: FileUploadService;\n specSourceService: SpecSourceService;\n optionSourceService: OptionSourceService;\n}\n\nconst GLOBAL_KEY = Symbol.for(\"formkrafter.core.services\");\nconst globalStore = globalThis as unknown as Record<symbol, Services | undefined>;\n\nconst services: Services = (globalStore[GLOBAL_KEY] ??= {\n jsRunnerService: new SandboxJsRunnerService(),\n dataSourceService: new FetchDataSourceService(),\n fileUploadService: new Base64FileUploadService(),\n specSourceService: new FetchSpecSourceService(),\n optionSourceService: new FetchOptionSourceService(),\n});\n\nservices.specSourceService ??= new FetchSpecSourceService();\nservices.optionSourceService ??= new FetchOptionSourceService();\n\nexport { services };\n",
19
+ "import { fkTOr } from \"../i18n\";\nimport { getAffectedProperties } from \"../brick/utils\";\nimport { resolveLocalizedText } from \"./localized-text\";\nimport { normalizeOptions } from \"./options\";\nimport type { BrickSpec } from \"./brick-spec\";\n\nexport type RecapItem =\n | { kind: \"field\"; label: string; value: string }\n | { kind: \"section\"; label: string }\n | { kind: \"collection\"; label: string; columns: string[]; rows: string[][] };\n\nconst formatRecapValue = (brick: BrickSpec, value: unknown): string => {\n if (Array.isArray(value)) {\n return value\n .map((item) => formatRecapValue(brick, item))\n .filter(Boolean)\n .join(\", \");\n }\n if (value === true) return fkTOr(\"recap.yes\", \"Yes\");\n if (value === false) return fkTOr(\"recap.no\", \"No\");\n if (value && typeof value === \"object\") {\n const record = value as Record<string, unknown>;\n if (typeof record.name === \"string\" && \"url\" in record) return record.name;\n return Object.values(record)\n .filter((part) => typeof part === \"string\" && part)\n .join(\" \");\n }\n\n const raw = String(value ?? \"\");\n if (brick.configs?.options != null) {\n const labelKey =\n typeof brick.configs.labelKey === \"string\" ? brick.configs.labelKey : \"label\";\n const valueKey =\n typeof brick.configs.valueKey === \"string\" ? brick.configs.valueKey : \"value\";\n const match = normalizeOptions(brick.configs.options, labelKey, valueKey).find(\n (option) => option.value === raw\n );\n if (match) return match.label;\n }\n return raw;\n};\n\nconst isEmptyRecapValue = (raw: unknown): boolean =>\n raw === undefined ||\n raw === null ||\n raw === \"\" ||\n (Array.isArray(raw) && raw.length === 0);\n\nconst brickLabel = (brick: BrickSpec, locale?: string): string =>\n String(\n resolveLocalizedText(brick.configs?.label, locale) ??\n brick.name ??\n brick.configs?.key ??\n \"\"\n );\n\nconst collectionInputs = (spec: BrickSpec): BrickSpec[] => {\n const inputs: BrickSpec[] = [];\n for (const child of spec.children ?? []) {\n const key = child.configs?.key;\n if (child.type === \"input\" && key && !key.startsWith(\"_\")) {\n inputs.push(child);\n }\n }\n return inputs;\n};\n\n/**\n * Walks a spec and summarizes the present data as renderer-agnostic items:\n * plain fields, section headers and collection tables. Shared by the web and\n * native recap bricks.\n */\nexport const collectRecapItems = (\n spec: BrickSpec | undefined,\n dataMap: Record<string, unknown> | undefined,\n locale: string | undefined,\n showEmpty: boolean,\n groupBySections = false\n): RecapItem[] => {\n if (!spec) return [];\n const items: RecapItem[] = [];\n\n for (const child of spec.children ?? []) {\n if (child.id === \"recap\" || child.type === \"action\") continue;\n if (getAffectedProperties(child.rules, dataMap).hidden === true) continue;\n\n const key = child.configs?.key;\n const label = brickLabel(child, locale);\n\n if (child.type === \"collection\") {\n const rows =\n key && Array.isArray(dataMap?.[key])\n ? (dataMap[key] as Record<string, unknown>[])\n : [];\n if (!rows.length && !showEmpty) continue;\n\n const inputs = collectionInputs(child);\n items.push({\n kind: \"collection\",\n label,\n columns: inputs.map((input) => brickLabel(input, locale)),\n rows: rows.map((row) =>\n inputs.map((input) => {\n const raw = row?.[input.configs!.key!];\n return isEmptyRecapValue(raw) ? \"—\" : formatRecapValue(input, raw);\n })\n ),\n });\n continue;\n }\n\n if (child.type === \"panel\") {\n const sectionLabel = resolveLocalizedText(child.configs?.label, locale);\n if (\n groupBySections &&\n typeof sectionLabel === \"string\" &&\n sectionLabel.trim()\n ) {\n const sectionItems = collectRecapItems(child, dataMap, locale, showEmpty);\n if (sectionItems.length) {\n items.push({ kind: \"section\", label: sectionLabel });\n items.push(...sectionItems);\n }\n continue;\n }\n items.push(\n ...collectRecapItems(child, dataMap, locale, showEmpty, groupBySections)\n );\n continue;\n }\n\n if (child.type !== \"input\" || !key || key.startsWith(\"_\")) continue;\n\n const raw = dataMap?.[key];\n if (isEmptyRecapValue(raw) && !showEmpty) continue;\n\n items.push({\n kind: \"field\",\n label,\n value: isEmptyRecapValue(raw) ? \"—\" : formatRecapValue(child, raw),\n });\n }\n\n return items;\n};\n",
20
+ "import type { Validator } from \"../validators/validator\";\nimport type { Validation } from \"../validators/validation\";\nimport type { JSONSchemaType } from \"../validators/json-schema-type\";\nimport { type Utils } from \"./utils\";\nimport type { Rule } from \"../rules/rule\";\nimport type { BrickSpec } from \"../utils/brick-spec\";\nimport type { BrickType } from \"../utils/brick-type\";\nimport type { BrickBaseConfigs, CommonBrickProps } from \"../utils/common-brick-props\";\nimport type { BrickMoldDropType } from \"../utils/drop-type\";\n\nexport interface BrickProps<DataType, Configs extends BrickBaseConfigs, Styles>\n extends CommonBrickProps<Configs, Styles> {\n onConfigsChange?: (\n configs: BrickBaseConfigs & Record<string, unknown>,\n uid?: string\n ) => void;\n onStylesChange?: (\n styles: Record<string, unknown>,\n uid?: string\n ) => void;\n data?: DataType;\n dataMap?: Record<string, unknown>;\n rootSpec?: BrickSpec;\n onDataChange?: (value?: DataType) => void;\n onMove?: (from: string, to: string) => void;\n onDuplicate?: (path: string) => void;\n onDelete?: (path: string) => void;\n onAddBrick?: (brickMold: BrickMoldDropType, path: string) => void;\n path: string;\n error?: string;\n disabled?: boolean;\n locale?: string;\n children?: unknown;\n brickSpec?: BrickSpec;\n editable?: boolean;\n validations?: Validation[];\n onValidationsChange?: (validations: Validation[], uid?: string) => void;\n rules?: Rule[];\n onRulesChange?: (rules: Rule[], uid?: string) => void;\n utils: Utils;\n}\n\nexport abstract class Brick<\n DataType,\n Configs extends BrickBaseConfigs,\n Styles extends Record<string, unknown>> {\n readonly type: BrickType;\n readonly dataType: JSONSchemaType;\n readonly id: string;\n readonly name: string;\n readonly configsForm?: BrickSpec;\n readonly category?: string;\n readonly styles?: Styles;\n\n readonly unWrapData: boolean;\n readonly isPrivate: boolean;\n\n readonly validators: Validator[];\n readonly defaultConfigs?: Record<string, unknown>;\n\n constructor(params: {\n type: BrickType;\n dataType: JSONSchemaType;\n id: string;\n name: string;\n configsForm?: BrickSpec;\n category?: string;\n styles?: Styles;\n unWrapData?: boolean;\n isPrivate?: boolean;\n validators?: Validator[];\n defaultConfigs?: Record<string, unknown>;\n }) {\n this.type = params.type;\n this.dataType = params.dataType;\n this.id = params.id;\n this.name = params.name;\n this.configsForm = params.configsForm;\n this.category = params.category;\n this.styles = params.styles;\n this.unWrapData = params.unWrapData ?? false;\n this.isPrivate = params.isPrivate ?? false;\n this.validators = params.validators ?? [];\n this.defaultConfigs = params.defaultConfigs;\n }\n\n abstract render(props: BrickProps<DataType, Configs, Styles>): unknown;\n\n\n abstract renderBuilder(props: BrickProps<DataType, Configs, Styles>): unknown;\n\n abstract getComponent(props: BrickProps<DataType, Configs, Styles>): unknown;\n abstract getComponentWithActions(props: BrickProps<DataType, Configs, Styles>): unknown;\n\n getBrickEmptySpec(): BrickSpec {\n return {\n type: this.type,\n dataType: this.dataType,\n id: this.id,\n name: this.name,\n ...(this.category !== undefined ? { category: this.category } : {}),\n ...(this.configsForm !== undefined ? { configsForm: this.configsForm } : {}),\n ...(this.styles !== undefined ? { styles: this.styles } : {}),\n ...(this.defaultConfigs !== undefined\n ? { configs: { ...this.defaultConfigs } }\n : {}),\n validators: this.validators,\n };\n }\n}",
19
21
  "import { Ajv, type ErrorObject, type ValidateFunction } from \"ajv\";\nimport ajvErrors from \"ajv-errors\";\nimport addFormats from \"ajv-formats\";\nimport type { BrickSpec } from \"../utils/brick-spec\";\nimport { buildValidationSchema, iterateSchemaBricks } from \"../utils/brick-spec\";\nimport { resolveLocalizedText } from \"../utils/localized-text\";\nimport { defaultValidationMessage } from \"./default-messages\";\nimport { evalBrickCode, getAffectedProperties } from \"../brick/utils\";\n\nconst ajv = new Ajv({ allErrors: true });\naddFormats(ajv, [\"email\", \"uri\"]);\najvErrors(ajv);\n\nconst validatorCache = new WeakMap<BrickSpec, Map<string, ValidateFunction>>();\n\nexport type Validator =\n | \"required\"\n | \"minLength\"\n | \"maxLength\"\n | \"min\"\n | \"max\"\n | \"pattern\"\n | \"minItems\"\n | \"maxItems\"\n | \"email\"\n | \"url\"\n | \"custom\";\n\nexport type ValidationResult = {\n valid: boolean;\n errors: Record<string, string>;\n};\n\nconst compiledValidator = (\n brickSpec: BrickSpec,\n locale?: string\n): ValidateFunction | undefined => {\n let byLocale = validatorCache.get(brickSpec);\n if (!byLocale) {\n byLocale = new Map();\n validatorCache.set(brickSpec, byLocale);\n }\n\n const cacheKey = locale ?? \"\";\n let validate = byLocale.get(cacheKey);\n\n if (!validate) {\n const schema = buildValidationSchema(brickSpec, locale);\n if (!schema) return undefined;\n\n try {\n validate = ajv.compile(schema);\n } catch {\n return undefined;\n }\n byLocale.set(cacheKey, validate);\n }\n\n return validate;\n};\n\nconst customErrors = (\n brickSpec: BrickSpec,\n data: unknown,\n locale?: string\n): Record<string, string> => {\n const errors: Record<string, string> = {};\n const dataMap = (data ?? {}) as Record<string, unknown>;\n\n for (const brick of iterateSchemaBricks(brickSpec)) {\n const key = brick.configs?.key;\n if (!key) continue;\n\n for (const validation of brick.validations ?? []) {\n if (validation.validator !== \"custom\" || !validation.customValidator) {\n continue;\n }\n\n const result = evalBrickCode(\n `const value = dataMap?.[${JSON.stringify(key)}];\\n${validation.customValidator}`,\n dataMap\n );\n\n if (result === true || result === undefined || result === null) continue;\n if (key in errors) continue;\n\n if (typeof result === \"string\") errors[key] = result;\n else if (result instanceof Error) errors[key] = result.message;\n else {\n const resolved = resolveLocalizedText(validation.message, locale);\n errors[key] =\n typeof resolved === \"string\"\n ? resolved\n : defaultValidationMessage(\"custom\", locale);\n }\n }\n }\n\n return errors;\n};\n\nconst keyOfError = (error: ErrorObject): string | undefined => {\n if (error.keyword === \"required\") {\n return (error.params as { missingProperty?: string }).missingProperty;\n }\n\n if (error.keyword === \"errorMessage\") {\n const inner = (error.params as { errors?: ErrorObject[] }).errors?.[0];\n return inner ? keyOfError(inner) : undefined;\n }\n\n return error.instancePath.split(\"/\").filter(Boolean)[0];\n};\n\nconst hiddenKeys = (\n brickSpec: BrickSpec,\n dataMap: Record<string, unknown> | undefined\n): Set<string> => {\n const hidden = new Set<string>();\n\n const walk = (brick: BrickSpec, parentHidden: boolean) => {\n const isHidden =\n parentHidden ||\n (brick.rules?.length\n ? getAffectedProperties(brick.rules, dataMap).hidden === true\n : false);\n\n const key = brick.configs?.key;\n if (isHidden && key) hidden.add(key);\n\n if (brick.type === \"collection\") return;\n for (const child of brick.children ?? []) walk(child, isHidden);\n };\n\n walk(brickSpec, false);\n return hidden;\n};\n\nexport const validateBrickSpecDataDetailed = (\n brickSpec: BrickSpec,\n data: unknown,\n locale?: string\n): ValidationResult => {\n const errors: Record<string, string> = {};\n const validate = compiledValidator(brickSpec, locale);\n\n if (validate && !validate(data)) {\n for (const error of validate.errors ?? []) {\n const key = keyOfError(error);\n if (key && !(key in errors) && error.message) {\n errors[key] = error.message;\n }\n }\n }\n\n for (const [key, message] of Object.entries(customErrors(brickSpec, data, locale))) {\n if (!(key in errors)) errors[key] = message;\n }\n\n const dataMap =\n typeof data === \"object\" && data !== null\n ? (data as Record<string, unknown>)\n : undefined;\n for (const key of hiddenKeys(brickSpec, dataMap)) {\n delete errors[key];\n }\n\n return { valid: Object.keys(errors).length === 0, errors };\n};\n\nexport const validateBrickSpecData = (\n brickSpec: BrickSpec,\n data: unknown,\n locale?: string\n): boolean => validateBrickSpecDataDetailed(brickSpec, data, locale).valid;\n\nconst stripEmpty = (data: unknown): Record<string, unknown> => {\n if (typeof data !== \"object\" || data === null) return {};\n\n return Object.fromEntries(\n Object.entries(data as Record<string, unknown>).filter(\n ([, value]) => value !== \"\" && value !== null && value !== undefined\n )\n );\n};\n\nconst rowSpecCache = new WeakMap<BrickSpec, BrickSpec>();\n\nconst rowSpecOf = (collection: BrickSpec): BrickSpec => {\n let rowSpec = rowSpecCache.get(collection);\n\n if (!rowSpec) {\n rowSpec = {\n type: \"panel\",\n id: \"collection-row\",\n name: \"Row\",\n configs: { key: `${collection.configs?.key ?? \"collection\"}_row` },\n children: collection.children ?? [],\n };\n rowSpecCache.set(collection, rowSpec);\n }\n\n return rowSpec;\n};\n\nexport const validateFormData = (\n brickSpec: BrickSpec,\n data: unknown,\n locale?: string\n): ValidationResult => {\n const present = stripEmpty(data);\n const errors = {\n ...validateBrickSpecDataDetailed(brickSpec, present, locale).errors,\n };\n\n for (const brick of iterateSchemaBricks(brickSpec)) {\n if (brick.type !== \"collection\") continue;\n\n const key = brick.configs?.key;\n if (!key) continue;\n\n const rows = present[key];\n if (!Array.isArray(rows)) continue;\n\n const rowSpec = rowSpecOf(brick);\n rows.forEach((row, index) => {\n const rowResult = validateFormData(rowSpec, row, locale);\n for (const [field, message] of Object.entries(rowResult.errors)) {\n const prefixed = `${key}[${index}].${field}`;\n if (!(prefixed in errors)) errors[prefixed] = message;\n }\n });\n }\n\n return { valid: Object.keys(errors).length === 0, errors };\n};\n",
20
22
  "import { type Options, parse } from \"acorn\";\nimport type { JsRunnerService, JsValidationResult } from \"./js_runner_service\";\n\nexport class UnsafeEvalJsRunnerService implements JsRunnerService {\n validateJs(\n js: string,\n options: Options = { ecmaVersion: \"latest\", allowReturnOutsideFunction: true }\n ): JsValidationResult {\n try {\n parse(js, options);\n return { valid: true };\n } catch (error) {\n return {\n valid: false,\n error: error instanceof Error ? error : new Error(String(error)),\n };\n }\n }\n\n eval(js: string, scope: Record<string, unknown> = {}): unknown {\n const prelude = Object.entries(scope)\n .map(([name, value]) => `const ${name} = ${JSON.stringify(value)};`)\n .join(\"\\n\");\n const fn = `(() => {${prelude}\\n${js}})();`;\n\n const validation = this.validateJs(fn, { ecmaVersion: \"latest\" });\n if (!validation.valid) throw validation.error;\n\n return eval(fn);\n }\n}\n",
21
- "export type FkTranslations = Record<string, string>;\n\nconst en: FkTranslations = {\n 'palette.search': 'Search bricks…',\n 'palette.empty': 'No brick matches “{query}”',\n 'builder.undo': 'Undo',\n 'builder.redo': 'Redo',\n 'builder.editLocale': 'Editing language',\n 'builder.copyJson': 'Copy JSON',\n 'builder.importJson': 'Import JSON',\n 'builder.importInvalid': 'Invalid form JSON',\n 'builder.pasteHint': 'Press Ctrl+V to paste a spec',\n 'builder.copied': 'Copied!',\n 'builder.downloadJson': 'Download .json',\n 'builder.hint': 'Select a brick to edit its properties',\n 'drop.hint': 'Drop a brick here',\n 'empty.title': 'Your form is empty',\n 'empty.hint': 'Drag a brick from the palette to get started',\n 'actions.move': 'Move',\n 'actions.duplicate': 'Duplicate',\n 'actions.delete': 'Delete',\n 'stepper.back': '← Back',\n 'stepper.next': 'Next →',\n 'stepper.submit': 'Submit',\n 'panel.cfg.validateSteps': 'Validate each step',\n 'panel.cfg.allowStepClick': 'Allow clicking steps to jump',\n 'panel.cfg.showSubmit': 'Submit button on last step',\n 'panel.cfg.validateTabs': 'Validate tab before leaving it',\n 'signature.clear': 'Clear',\n 'panel.tab.config': 'Config',\n 'panel.tab.validation': 'Validation',\n 'panel.tab.styles': 'Styles',\n 'panel.tab.rules': 'Rules',\n 'panel.key': 'Key',\n 'panel.label': 'Label',\n 'panel.placeholder': 'Placeholder',\n 'panel.prefix': 'Prefix',\n 'panel.suffix': 'Suffix',\n 'panel.accept': 'Accepted file types',\n 'panel.mask': 'Input mask (9=digit, a=letter, *=any)',\n 'panel.uploadUrl': 'Upload URL',\n 'panel.cfg.multiple': 'Allow multiple files',\n 'panel.optionsSource': 'Options source',\n 'panel.options': 'Options (one per line)',\n 'panel.content': 'Content',\n 'panel.dataKey': 'Data key',\n 'panel.url': 'URL',\n 'panel.headers': 'Headers ({token} reads form data)',\n 'panel.searchParam': 'Server search param',\n 'panel.labelKey': 'Label key',\n 'panel.valueKey': 'Value key',\n 'panel.errorMessage': 'Error message',\n 'panel.required': 'Required',\n 'panel.minLength': 'Min length',\n 'panel.maxLength': 'Max length',\n 'panel.min': 'Min',\n 'panel.max': 'Max',\n 'panel.pattern': 'Pattern (regex)',\n 'panel.minItems': 'Min items',\n 'panel.maxItems': 'Max items',\n 'panel.emailFormat': 'Email format',\n 'panel.urlFormat': 'URL format',\n 'panel.custom': 'Custom (JavaScript)',\n 'panel.fallbackMessage': 'Fallback message',\n 'panel.styleProperty': 'property',\n 'panel.styleValue': 'value',\n 'file.choose': 'Choose a file…',\n 'file.uploading': 'Uploading…',\n 'file.remove': 'Remove file',\n 'file.addAnother': '+ Add a file',\n 'address.street': 'Street',\n 'address.city': 'City',\n 'address.zip': 'Postal code',\n 'address.country': 'Country',\n 'grid.addRow': '+ Add row',\n 'grid.moveUp': 'Move row up',\n 'grid.moveDown': 'Move row down',\n 'grid.removeRow': 'Remove row',\n 'grid.empty': 'No rows yet',\n 'grid.columns': 'Row template',\n 'select.search': 'Search…',\n 'select.empty': 'No options',\n 'select.clear': 'Clear',\n 'rules.when': 'When',\n 'rules.then': 'Then',\n 'rules.addRule': '+ Add rule',\n 'rules.addEffect': '+ Effect',\n 'rules.removeRule': 'Remove rule',\n 'rules.removeEffect': 'Remove effect',\n 'rules.mode.simple': 'simple',\n 'rules.mode.json': 'json',\n 'rules.mode.js': 'JS',\n 'category.Inputs': 'Inputs',\n 'category.Layout': 'Layout',\n 'category.Data': 'Data',\n 'brick.text.name': 'Text',\n 'brick.email.name': 'Email',\n 'brick.password.name': 'Password',\n 'brick.url.name': 'URL',\n 'brick.phone.name': 'Phone',\n 'brick.textarea.name': 'Text area',\n 'brick.number.name': 'Number',\n 'brick.date.name': 'Date',\n 'brick.time.name': 'Time',\n 'brick.datetime.name': 'Date / Time',\n 'brick.select.name': 'Select',\n 'brick.multi-select.name': 'Multi select',\n 'brick.radio.name': 'Radio',\n 'brick.select-boxes.name': 'Select boxes',\n 'brick.checkbox.name': 'Checkbox',\n 'brick.tags.name': 'Tags',\n 'brick.signature.name': 'Signature',\n 'brick.data-grid.name': 'Data grid',\n 'brick.address.name': 'Address',\n 'brick.file.name': 'File',\n 'brick.hidden.name': 'Hidden',\n 'brick.content.name': 'Content',\n 'brick.recap.name': 'Recap',\n 'brick.nested-form.name': 'Nested form',\n 'brick.code.name': 'Code',\n 'nestedForm.ref': 'Referenced form',\n 'nestedForm.missing': 'Set the specRef config to reference a form.',\n 'nestedForm.loading': 'Loading nested forms…',\n 'panel.specRef': 'Referenced form (specRef)',\n 'panel.optionsRef': 'Options catalog (optionsRef)',\n 'recap.empty': 'Nothing to summarize yet.',\n 'recap.yes': 'Yes',\n 'recap.no': 'No',\n 'panel.cfg.showEmpty': 'Show empty fields',\n 'panel.cfg.groupBySections': 'Group by section',\n 'brick.group.name': 'Group',\n 'brick.row.name': 'Row',\n 'brick.column.name': 'Column',\n 'brick.stepper.name': 'Stepper',\n 'brick.tabs.name': 'Tabs',\n};\n\nexport const frFkTranslations: FkTranslations = {\n 'palette.search': 'Rechercher une brique…',\n 'palette.empty': 'Aucune brique ne correspond à « {query} »',\n 'builder.undo': 'Annuler',\n 'builder.editLocale': \"Langue d'édition\",\n 'builder.redo': 'Rétablir',\n 'builder.copyJson': 'Copier le JSON',\n 'builder.importJson': 'Importer le JSON',\n 'builder.importInvalid': 'JSON de formulaire invalide',\n 'builder.pasteHint': 'Collez avec Ctrl+V pour importer une spec',\n 'builder.copied': 'Copié !',\n 'builder.downloadJson': 'Télécharger le .json',\n 'builder.hint': 'Sélectionnez une brique pour éditer ses propriétés',\n 'drop.hint': 'Déposez une brique ici',\n 'empty.title': 'Votre formulaire est vide',\n 'empty.hint': 'Glissez une brique depuis la palette pour commencer',\n 'actions.move': 'Déplacer',\n 'actions.duplicate': 'Dupliquer',\n 'actions.delete': 'Supprimer',\n 'stepper.back': '← Précédent',\n 'stepper.next': 'Suivant →',\n 'stepper.submit': 'Envoyer',\n 'panel.cfg.validateSteps': 'Valider chaque étape',\n 'panel.cfg.allowStepClick': 'Autoriser le saut d’étapes au clic',\n 'panel.cfg.showSubmit': 'Bouton d’envoi à la dernière étape',\n 'panel.cfg.validateTabs': 'Valider l’onglet avant de le quitter',\n 'signature.clear': 'Effacer',\n 'panel.tab.config': 'Config',\n 'panel.tab.validation': 'Validation',\n 'panel.tab.styles': 'Styles',\n 'panel.tab.rules': 'Règles',\n 'panel.key': 'Clé',\n 'panel.label': 'Libellé',\n 'panel.placeholder': 'Placeholder',\n 'panel.prefix': 'Préfixe',\n 'panel.suffix': 'Suffixe',\n 'panel.accept': 'Types de fichiers acceptés',\n 'panel.mask': 'Masque de saisie (9=chiffre, a=lettre, *=tout)',\n 'panel.uploadUrl': \"URL d'upload\",\n 'panel.cfg.multiple': 'Autoriser plusieurs fichiers',\n 'panel.optionsSource': 'Source des options',\n 'panel.options': 'Options (une par ligne)',\n 'panel.content': 'Contenu',\n 'panel.dataKey': 'Clé de données',\n 'panel.url': 'URL',\n 'panel.headers': 'En-têtes ({token} lit les données du formulaire)',\n 'panel.searchParam': 'Paramètre de recherche serveur',\n 'panel.labelKey': 'Clé du libellé',\n 'panel.valueKey': 'Clé de la valeur',\n 'panel.errorMessage': \"Message d'erreur\",\n 'panel.required': 'Obligatoire',\n 'panel.minLength': 'Longueur min',\n 'panel.maxLength': 'Longueur max',\n 'panel.min': 'Min',\n 'panel.max': 'Max',\n 'panel.pattern': 'Motif (regex)',\n 'panel.minItems': 'Éléments min',\n 'panel.maxItems': 'Éléments max',\n 'panel.emailFormat': 'Format email',\n 'panel.urlFormat': 'Format URL',\n 'panel.custom': 'Personnalisé (JavaScript)',\n 'panel.fallbackMessage': 'Message par défaut',\n 'panel.styleProperty': 'propriété',\n 'panel.styleValue': 'valeur',\n 'file.choose': 'Choisir un fichier…',\n 'file.uploading': 'Envoi en cours…',\n 'file.remove': 'Retirer le fichier',\n 'file.addAnother': '+ Ajouter un fichier',\n 'address.street': 'Rue',\n 'address.city': 'Ville',\n 'address.zip': 'Code postal',\n 'address.country': 'Pays',\n 'grid.addRow': '+ Ajouter une ligne',\n 'grid.moveUp': 'Monter la ligne',\n 'grid.moveDown': 'Descendre la ligne',\n 'grid.removeRow': 'Supprimer la ligne',\n 'grid.empty': 'Aucune ligne',\n 'grid.columns': 'Modèle de ligne',\n 'select.search': 'Rechercher…',\n 'select.empty': 'Aucune option',\n 'select.clear': 'Effacer',\n 'rules.when': 'Quand',\n 'rules.then': 'Alors',\n 'rules.addRule': '+ Ajouter une règle',\n 'rules.addEffect': '+ Effet',\n 'rules.removeRule': 'Supprimer la règle',\n 'rules.removeEffect': \"Supprimer l'effet\",\n 'rules.mode.simple': 'simple',\n 'rules.mode.json': 'json',\n 'rules.mode.js': 'JS',\n 'category.Inputs': 'Champs',\n 'category.Layout': 'Mise en page',\n 'category.Data': 'Données',\n 'brick.text.name': 'Texte',\n 'brick.email.name': 'Email',\n 'brick.password.name': 'Mot de passe',\n 'brick.url.name': 'URL',\n 'brick.phone.name': 'Téléphone',\n 'brick.textarea.name': 'Zone de texte',\n 'brick.number.name': 'Nombre',\n 'brick.date.name': 'Date',\n 'brick.time.name': 'Heure',\n 'brick.datetime.name': 'Date / Heure',\n 'brick.select.name': 'Liste déroulante',\n 'brick.multi-select.name': 'Sélection multiple',\n 'brick.radio.name': 'Boutons radio',\n 'brick.select-boxes.name': 'Cases à cocher',\n 'brick.checkbox.name': 'Case à cocher',\n 'brick.tags.name': 'Étiquettes',\n 'brick.signature.name': 'Signature',\n 'brick.data-grid.name': 'Grille de données',\n 'brick.address.name': 'Adresse',\n 'brick.file.name': 'Fichier',\n 'brick.hidden.name': 'Caché',\n 'brick.content.name': 'Contenu',\n 'brick.recap.name': 'Récapitulatif',\n 'brick.nested-form.name': 'Formulaire imbriqué',\n 'brick.code.name': 'Code',\n 'nestedForm.ref': 'Formulaire référencé',\n 'nestedForm.missing': 'Renseignez la config specRef pour référencer un formulaire.',\n 'nestedForm.loading': 'Chargement des formulaires imbriqués…',\n 'panel.specRef': 'Formulaire référencé (specRef)',\n 'panel.optionsRef': \"Catalogue d'options (optionsRef)\",\n 'recap.empty': 'Rien à récapituler pour le moment.',\n 'recap.yes': 'Oui',\n 'recap.no': 'Non',\n 'panel.cfg.showEmpty': 'Afficher les champs vides',\n 'panel.cfg.groupBySections': 'Regrouper par section',\n 'brick.group.name': 'Groupe',\n 'brick.row.name': 'Ligne',\n 'brick.column.name': 'Colonne',\n 'brick.stepper.name': 'Étapes',\n 'brick.tabs.name': 'Onglets',\n};\n\nconst GLOBAL_KEY = Symbol.for('formkrafter.i18n');\nconst globalStore = globalThis as unknown as Record<\n symbol,\n { current: FkTranslations } | undefined\n>;\n\nconst state = (globalStore[GLOBAL_KEY] ??= { current: { ...en } });\n\nexport function setFkTranslations(overrides: FkTranslations = {}): void {\n state.current = { ...en, ...overrides };\n}\n\nexport function fkT(\n key: string,\n params?: Record<string, string | number>\n): string {\n let text = state.current[key] ?? key;\n\n for (const [name, value] of Object.entries(params ?? {})) {\n text = text.replace(`{${name}}`, String(value));\n }\n\n return text;\n}\n\nexport function fkTOr(key: string, fallback: string): string {\n return state.current[key] ?? fallback;\n}\n",
22
23
  "import type { BrickSpec } from \"../utils/brick-spec\";\n\nexport function pointerFromPath(path: string): string {\n return path\n .split(\".\")\n .slice(1)\n .map((segment) => `/children/${segment}`)\n .join(\"\");\n}\n\nexport function pointerOfUid(spec: BrickSpec, uid: string): string | undefined {\n if (spec.configs?.uid === uid) return \"\";\n\n for (const [index, child] of (spec.children ?? []).entries()) {\n const childPointer = pointerOfUid(child, uid);\n if (childPointer !== undefined) return `/children/${index}${childPointer}`;\n }\n\n return undefined;\n}\n\nexport function getBrickAt(spec: BrickSpec, path: string): BrickSpec | undefined {\n let current: BrickSpec | undefined = spec;\n\n for (const segment of path.split(\".\").slice(1)) {\n current = current?.children?.[Number(segment)];\n }\n\n return current;\n}\n",
23
24
  "import * as fastJsonPatchModule from \"fast-json-patch\";\n\ntype FastJsonPatchApi = {\n applyPatch: typeof fastJsonPatchModule.applyPatch;\n};\n\nconst fastJsonPatch: FastJsonPatchApi =\n (fastJsonPatchModule as unknown as { default?: FastJsonPatchApi }).default ??\n fastJsonPatchModule;\n\nexport const applyPatch = fastJsonPatch.applyPatch;\nexport type { Operation } from \"fast-json-patch\";\n",
24
25
  "import { applyPatch, type Operation } from \"../utils/fast-json-patch\";\nimport type { BrickSpec } from \"../utils/brick-spec\";\nimport type { BrickBaseConfigs } from \"../utils/common-brick-props\";\nimport type { BrickStyles } from \"../utils/brick-styles\";\nimport type { Validation } from \"../validators/validation\";\nimport type { Rule } from \"../rules/rule\";\nimport { getBrickAt, pointerFromPath, pointerOfUid } from \"./pointer\";\n\nexport type SpecUpdate = {\n spec: BrickSpec;\n patches: Operation[];\n inverse: Operation[];\n};\n\nconst apply = (\n spec: BrickSpec,\n patches: Operation[],\n inverse: Operation[]\n): SpecUpdate => ({\n spec: applyPatch(spec, patches, true, false).newDocument,\n patches,\n inverse,\n});\n\nconst requireBrickAt = (spec: BrickSpec, path: string): BrickSpec => {\n const brick = getBrickAt(spec, path);\n if (!brick) throw new Error(`No brick at path \"${path}\"`);\n return brick;\n};\n\nconst requireBrickByUid = (\n spec: BrickSpec,\n uid: string\n): { pointer: string; brick: BrickSpec } => {\n const pointer = pointerOfUid(spec, uid);\n if (pointer === undefined) throw new Error(`No brick with uid \"${uid}\"`);\n\n let brick = spec;\n for (const segment of pointer.split(\"/children/\").slice(1)) {\n brick = brick.children![Number(segment)];\n }\n\n return { pointer, brick };\n};\n\nconst toJsonValue = <T>(value: T): T => JSON.parse(JSON.stringify(value));\n\nexport function addBrick(\n spec: BrickSpec,\n brick: BrickSpec,\n parentPath: string,\n index?: number\n): SpecUpdate {\n const parent = requireBrickAt(spec, parentPath);\n const parentPointer = pointerFromPath(parentPath);\n const value = toJsonValue(brick);\n\n if (!parent.children) {\n const pointer = `${parentPointer}/children`;\n return apply(\n spec,\n [{ op: \"add\", path: pointer, value: [value] }],\n [{ op: \"remove\", path: pointer }]\n );\n }\n\n const position = Math.min(index ?? parent.children.length, parent.children.length);\n const pointer = `${parentPointer}/children/${position}`;\n\n return apply(\n spec,\n [{ op: \"add\", path: pointer, value }],\n [{ op: \"remove\", path: pointer }]\n );\n}\n\nexport function removeBrick(spec: BrickSpec, path: string): SpecUpdate {\n if (path === \"0\") throw new Error(\"Cannot remove the root brick\");\n\n const brick = requireBrickAt(spec, path);\n const pointer = pointerFromPath(path);\n\n return apply(\n spec,\n [{ op: \"remove\", path: pointer }],\n [{ op: \"add\", path: pointer, value: brick }]\n );\n}\n\nexport function moveBrick(spec: BrickSpec, from: string, to: string): SpecUpdate {\n if (from === \"0\" || to === \"0\") throw new Error(\"Cannot move the root brick\");\n\n const brick = requireBrickAt(spec, from);\n\n const fromSegments = from.split(\".\").map(Number);\n const toSegments = to.split(\".\").map(Number);\n const parentLength = fromSegments.length - 1;\n const fromIndex = fromSegments[parentLength];\n\n const sharesFromParent =\n toSegments.length > parentLength &&\n fromSegments.slice(0, parentLength).every((segment, i) => segment === toSegments[i]);\n\n const adjusted = [...toSegments];\n if (sharesFromParent) {\n if (adjusted[parentLength] === fromIndex && adjusted.length > fromSegments.length) {\n throw new Error(`Cannot move a brick into its own subtree (\"${from}\" → \"${to}\")`);\n }\n if (adjusted[parentLength] > fromIndex) adjusted[parentLength] -= 1;\n }\n\n const fromPointer = pointerFromPath(from);\n const toPointer = pointerFromPath(adjusted.join(\".\"));\n\n return apply(\n spec,\n [\n { op: \"remove\", path: fromPointer },\n { op: \"add\", path: toPointer, value: brick },\n ],\n [\n { op: \"remove\", path: toPointer },\n { op: \"add\", path: fromPointer, value: brick },\n ]\n );\n}\n\nconst withFreshUids = (brick: BrickSpec): BrickSpec => ({\n ...brick,\n ...(brick.configs\n ? { configs: { ...brick.configs, uid: crypto.randomUUID() } }\n : {}),\n ...(brick.children ? { children: brick.children.map(withFreshUids) } : {}),\n});\n\nexport function duplicateBrick(spec: BrickSpec, path: string): SpecUpdate {\n if (path === \"0\") throw new Error(\"Cannot duplicate the root brick\");\n\n const brick = requireBrickAt(spec, path);\n const segments = path.split(\".\");\n const nextIndex = Number(segments[segments.length - 1]) + 1;\n const pointer = pointerFromPath(\n [...segments.slice(0, -1), String(nextIndex)].join(\".\")\n );\n\n const copy = withFreshUids(toJsonValue(brick));\n\n return apply(\n spec,\n [{ op: \"add\", path: pointer, value: copy }],\n [{ op: \"remove\", path: pointer }]\n );\n}\n\nconst setBrickSection = (\n spec: BrickSpec,\n brickPointer: string,\n section: \"configs\" | \"styles\" | \"validations\" | \"rules\",\n value: unknown,\n previous: unknown\n): SpecUpdate => {\n const pointer = `${brickPointer}/${section}`;\n\n if (previous === undefined) {\n return apply(\n spec,\n [{ op: \"add\", path: pointer, value }],\n [{ op: \"remove\", path: pointer }]\n );\n }\n\n return apply(\n spec,\n [{ op: \"replace\", path: pointer, value }],\n [{ op: \"replace\", path: pointer, value: previous }]\n );\n};\n\nexport function updateBrickConfigs(\n spec: BrickSpec,\n uid: string,\n configs: BrickBaseConfigs & Record<string, unknown>\n): SpecUpdate {\n const { pointer, brick } = requireBrickByUid(spec, uid);\n const merged = { ...brick.configs, ...configs };\n\n return setBrickSection(spec, pointer, \"configs\", merged, brick.configs);\n}\n\nexport function updateBrickStyles(\n spec: BrickSpec,\n uid: string,\n styles: BrickStyles<string>\n): SpecUpdate {\n const { pointer, brick } = requireBrickByUid(spec, uid);\n const merged = { ...brick.styles, ...styles };\n\n return setBrickSection(spec, pointer, \"styles\", merged, brick.styles);\n}\n\nexport function updateBrickValidations(\n spec: BrickSpec,\n uid: string,\n validations: Validation[]\n): SpecUpdate {\n const { pointer, brick } = requireBrickByUid(spec, uid);\n\n return setBrickSection(spec, pointer, \"validations\", validations, brick.validations);\n}\n\nexport function updateBrickRules(\n spec: BrickSpec,\n uid: string,\n rules: Rule[]\n): SpecUpdate {\n const { pointer, brick } = requireBrickByUid(spec, uid);\n\n return setBrickSection(spec, pointer, \"rules\", rules, brick.rules);\n}\n",
@@ -26,7 +27,7 @@
26
27
  "import type { BrickSpec } from \"../utils/brick-spec\";\nimport type { Validation } from \"../validators/validation\";\nimport type { Rule } from \"../rules/rule\";\n\nexport interface FormioComponent {\n type?: string;\n key?: string;\n label?: string;\n title?: string;\n placeholder?: string;\n description?: string;\n tooltip?: string;\n defaultValue?: unknown;\n disabled?: boolean;\n hidden?: boolean;\n multiple?: boolean;\n prefix?: string;\n suffix?: string;\n inputMask?: string;\n html?: string;\n content?: string;\n legend?: string;\n input?: boolean;\n tableView?: boolean;\n components?: FormioComponent[];\n columns?: Array<{ components?: FormioComponent[]; width?: number }>;\n values?: Array<{ label?: string; value?: string }>;\n data?: {\n values?: Array<{ label?: string; value?: string }>;\n json?: Array<Record<string, unknown>>;\n url?: string;\n };\n dataSrc?: string;\n valueProperty?: string;\n template?: string;\n searchField?: string;\n storage?: string;\n url?: string;\n filePattern?: string;\n logic?: Array<{\n name?: string;\n trigger?: { type?: string; javascript?: string; simple?: unknown };\n actions?: Array<{\n name?: string;\n type?: string;\n state?: boolean;\n property?: { value?: string; type?: string };\n }>;\n }>;\n validate?: {\n required?: boolean;\n minLength?: number;\n maxLength?: number;\n min?: number;\n max?: number;\n step?: number | string;\n pattern?: string;\n custom?: string;\n customMessage?: string;\n };\n conditional?: {\n show?: boolean | string;\n when?: string | null;\n eq?: unknown;\n };\n customConditional?: string;\n enableTime?: boolean;\n enableDate?: boolean;\n [extra: string]: unknown;\n}\n\nexport interface FormioForm {\n display?: string;\n title?: string;\n name?: string;\n components?: FormioComponent[];\n [extra: string]: unknown;\n}\n\nexport interface FormioConversionResult {\n spec: BrickSpec;\n warnings: string[];\n}\n\ntype Converter = {\n nextUid: () => string;\n warn: (message: string) => void;\n uploadUrls: Map<string, number>;\n};\n\nconst INPUT_TYPE_MAP: Record<\n string,\n { id: string; dataType: BrickSpec[\"dataType\"]; name: string }\n> = {\n textfield: { id: \"text\", dataType: \"string\", name: \"Text\" },\n textarea: { id: \"textarea\", dataType: \"string\", name: \"Text area\" },\n number: { id: \"number\", dataType: \"number\", name: \"Number\" },\n currency: { id: \"number\", dataType: \"number\", name: \"Currency\" },\n password: { id: \"password\", dataType: \"string\", name: \"Password\" },\n email: { id: \"email\", dataType: \"string\", name: \"Email\" },\n url: { id: \"url\", dataType: \"string\", name: \"URL\" },\n phoneNumber: { id: \"phone\", dataType: \"string\", name: \"Phone\" },\n day: { id: \"date\", dataType: \"string\", name: \"Date\" },\n time: { id: \"time\", dataType: \"string\", name: \"Time\" },\n checkbox: { id: \"checkbox\", dataType: \"boolean\", name: \"Checkbox\" },\n hidden: { id: \"hidden\", dataType: \"string\", name: \"Hidden\" },\n tags: { id: \"tags\", dataType: \"array\", name: \"Tags\" },\n radio: { id: \"radio\", dataType: \"string\", name: \"Radio\" },\n signature: { id: \"signature\", dataType: \"string\", name: \"Signature\" },\n address: { id: \"address\", dataType: \"string\", name: \"Address\" },\n};\n\nexport function convertFormioForm(form: FormioForm): FormioConversionResult {\n const warnings: string[] = [];\n let counter = 0;\n const ctx: Converter = {\n nextUid: () => `fio-${++counter}`,\n warn: (message) => warnings.push(message),\n uploadUrls: new Map(),\n };\n\n let children = convertComponents(form.components ?? [], ctx);\n\n if (form.display === \"wizard\") {\n children = [\n {\n type: \"panel\",\n id: \"stepper\",\n name: \"Wizard\",\n configs: {\n uid: ctx.nextUid(),\n key: \"steps\",\n validateSteps: true,\n allowStepClick: true,\n showSubmit: true,\n },\n children,\n },\n ];\n }\n\n const spec: BrickSpec = {\n type: \"panel\",\n id: \"column\",\n name: form.title ?? \"Form\",\n configs: { uid: ctx.nextUid(), key: form.name ?? \"form\" },\n children,\n };\n\n for (const [url, count] of ctx.uploadUrls) {\n warnings.push(\n `${count} file component(s) store uploads at \"${url}\" (kept as the uploadUrl config) — configure services.fileUploadService with UrlFileUploadService to upload there`\n );\n }\n\n return { spec, warnings };\n}\n\nfunction convertComponents(\n components: FormioComponent[],\n ctx: Converter\n): BrickSpec[] {\n const bricks: BrickSpec[] = [];\n for (const component of components) {\n bricks.push(...convertComponent(component, ctx));\n }\n return bricks;\n}\n\nfunction convertComponent(\n component: FormioComponent,\n ctx: Converter\n): BrickSpec[] {\n const type = component.type ?? \"textfield\";\n\n if (type === \"button\") {\n ctx.warn(\n `button \"${component.key ?? component.label ?? \"?\"}\" skipped — FormKrafter renders its own submit action`\n );\n return [];\n }\n\n if (type === \"content\" || type === \"htmlelement\") {\n return [\n withCommon(component, ctx, {\n type: \"output\",\n dataType: \"void\",\n id: \"content\",\n name: \"Content\",\n configs: {\n uid: ctx.nextUid(),\n key: component.key ?? ctx.nextUid(),\n content: String(component.html ?? component.content ?? \"\"),\n },\n }),\n ];\n }\n\n if (type === \"panel\" || type === \"fieldset\" || type === \"well\") {\n return [\n withCommon(component, ctx, {\n type: \"panel\",\n id: \"group\",\n name: component.title ?? component.legend ?? \"Group\",\n configs: {\n uid: ctx.nextUid(),\n key: component.key ?? ctx.nextUid(),\n label: component.title ?? component.legend ?? component.label,\n },\n children: convertComponents(component.components ?? [], ctx),\n }),\n ];\n }\n\n if (type === \"container\") {\n ctx.warn(\n `container \"${component.key ?? \"?\"}\" flattened — FormKrafter stores data flat outside collections`\n );\n return [\n {\n type: \"panel\",\n id: \"group\",\n name: \"Group\",\n configs: {\n uid: ctx.nextUid(),\n key: component.key ?? ctx.nextUid(),\n label: component.label,\n },\n children: convertComponents(component.components ?? [], ctx),\n },\n ];\n }\n\n if (type === \"columns\") {\n return [\n {\n type: \"panel\",\n id: \"row\",\n name: \"Row\",\n configs: { uid: ctx.nextUid(), key: component.key ?? ctx.nextUid() },\n children: (component.columns ?? []).map((column) => ({\n type: \"panel\" as const,\n id: \"column\",\n name: \"Column\",\n configs: { uid: ctx.nextUid(), key: ctx.nextUid() },\n children: convertComponents(column.components ?? [], ctx),\n })),\n },\n ];\n }\n\n if (type === \"tabs\") {\n return [\n {\n type: \"panel\",\n id: \"tabs\",\n name: \"Tabs\",\n configs: {\n uid: ctx.nextUid(),\n key: component.key ?? ctx.nextUid(),\n validateTabs: false,\n },\n children: (component.components ?? []).map((tab) => ({\n type: \"panel\" as const,\n id: \"group\",\n name: tab.label ?? \"Tab\",\n configs: {\n uid: ctx.nextUid(),\n key: tab.key ?? ctx.nextUid(),\n label: tab.label,\n },\n children: convertComponents(tab.components ?? [], ctx),\n })),\n },\n ];\n }\n\n if (type === \"datagrid\" || type === \"editgrid\") {\n if (type === \"editgrid\") {\n ctx.warn(\n `editgrid \"${component.key ?? \"?\"}\" converted to a data-grid — row templates are not preserved`\n );\n }\n return [\n withCommon(component, ctx, {\n type: \"collection\",\n dataType: \"array\",\n id: \"data-grid\",\n name: \"Data grid\",\n configs: {\n uid: ctx.nextUid(),\n key: component.key ?? ctx.nextUid(),\n label: component.label,\n },\n children: convertComponents(component.components ?? [], ctx),\n }),\n ];\n }\n\n if (type === \"datetime\") {\n const dateOnly = component.enableTime === false;\n return [\n withCommon(component, ctx, {\n type: \"input\",\n dataType: \"string\",\n id: dateOnly ? \"date\" : \"datetime\",\n name: dateOnly ? \"Date\" : \"Date & time\",\n configs: baseConfigs(component, ctx),\n }),\n ];\n }\n\n if (type === \"select\") {\n return [convertSelect(component, ctx)];\n }\n\n if (type === \"selectboxes\") {\n return [\n withCommon(component, ctx, {\n type: \"input\",\n dataType: \"array\",\n id: \"select-boxes\",\n name: \"Select boxes\",\n configs: {\n ...baseConfigs(component, ctx),\n optionsSource: \"static\",\n options: emitOptions(staticOptions(component.values), component, ctx),\n },\n }),\n ];\n }\n\n if (type === \"radio\") {\n return [\n withCommon(component, ctx, {\n type: \"input\",\n dataType: \"string\",\n id: \"radio\",\n name: \"Radio\",\n configs: {\n ...baseConfigs(component, ctx),\n optionsSource: \"static\",\n options: emitOptions(staticOptions(component.values), component, ctx),\n },\n }),\n ];\n }\n\n if (type === \"form\") {\n const ref = String(\n component.form ?? component.path ?? component.src ?? \"\"\n );\n ctx.warn(\n `nested form \"${component.key ?? \"?\"}\" references \"${ref}\" — configure services.specSourceService so it can be resolved`\n );\n return [\n withCommon(component, ctx, {\n type: \"panel\",\n id: \"nested-form\",\n name: \"Nested form\",\n configs: {\n uid: ctx.nextUid(),\n key: component.key ?? ctx.nextUid(),\n label: component.label,\n specRef: ref,\n },\n }),\n ];\n }\n\n if (type === \"file\") {\n const configs = baseConfigs(component, ctx);\n if (component.filePattern && component.filePattern !== \"*\") {\n configs.accept = component.filePattern;\n }\n configs.multiple = component.multiple === true;\n if (component.storage === \"url\" && component.url) {\n configs.uploadUrl = component.url;\n ctx.uploadUrls.set(\n component.url,\n (ctx.uploadUrls.get(component.url) ?? 0) + 1\n );\n }\n return [\n withCommon(component, ctx, {\n type: \"input\",\n dataType: component.multiple ? \"array\" : \"object\",\n id: \"file\",\n name: \"File\",\n configs,\n }),\n ];\n }\n\n const mapped = INPUT_TYPE_MAP[type];\n if (mapped) {\n if (type === \"day\") {\n ctx.warn(\n `day \"${component.key ?? \"?\"}\" approximated with a date input`\n );\n }\n if (type === \"currency\") {\n ctx.warn(\n `currency \"${component.key ?? \"?\"}\" converted to a number with a prefix`\n );\n }\n const configs = baseConfigs(component, ctx);\n if (type === \"currency\" && !configs.prefix) {\n configs.prefix = String(component.currency ?? \"$\");\n }\n return [\n withCommon(component, ctx, {\n type: \"input\",\n dataType: mapped.dataType,\n id: mapped.id,\n name: mapped.name,\n configs,\n }),\n ];\n }\n\n ctx.warn(\n `unsupported component type \"${type}\" (key \"${component.key ?? \"?\"}\") skipped`\n );\n return [];\n}\n\nfunction convertSelect(component: FormioComponent, ctx: Converter): BrickSpec {\n const multiple = component.multiple === true;\n const configs = baseConfigs(component, ctx);\n\n if (component.dataSrc === \"url\" && component.data?.url) {\n configs.optionsSource = \"remote\";\n configs.optionsUrl = component.data.url;\n if (component.valueProperty) configs.valueKey = component.valueProperty;\n const templateKey = labelKeyFromTemplate(component.template);\n if (templateKey) configs.labelKey = templateKey;\n if (component.searchField) configs.searchParam = component.searchField;\n } else if (component.dataSrc === \"json\" && Array.isArray(component.data?.json)) {\n configs.optionsSource = \"static\";\n configs.options = emitOptions(jsonOptions(component, ctx), component, ctx);\n } else {\n if (component.dataSrc && ![\"values\", \"json\", \"\"].includes(component.dataSrc)) {\n ctx.warn(\n `select \"${component.key ?? \"?\"}\" uses dataSrc \"${component.dataSrc}\" — converted to static options`\n );\n }\n configs.optionsSource = \"static\";\n configs.options = emitOptions(staticOptions(component.data?.values ?? component.values), component, ctx);\n }\n\n return withCommon(component, ctx, {\n type: \"input\",\n dataType: multiple ? \"array\" : \"string\",\n id: multiple ? \"multi-select\" : \"select\",\n name: multiple ? \"Multi select\" : \"Select\",\n configs,\n });\n}\n\nfunction jsonOptions(\n component: FormioComponent,\n ctx: Converter\n): Array<{ label: string; value: string }> {\n const items = component.data?.json ?? [];\n const labelKey = labelKeyFromTemplate(component.template) ?? \"label\";\n let valueKey = component.valueProperty;\n if (!valueKey) {\n const first = items[0] ?? {};\n valueKey = \"value\" in first ? \"value\" : labelKey;\n if (valueKey === labelKey) {\n ctx.warn(\n `select \"${component.key ?? \"?\"}\" has no valueProperty — option labels are used as values`\n );\n }\n }\n return items.map((item) => ({\n label: String(item[labelKey] ?? item[valueKey!] ?? \"\"),\n value: String(item[valueKey!] ?? item[labelKey] ?? \"\"),\n }));\n}\n\nfunction labelKeyFromTemplate(template?: string): string | undefined {\n if (!template) return undefined;\n const match = /item\\.([a-zA-Z0-9_.]+)/.exec(template);\n return match?.[1];\n}\n\nfunction staticOptions(\n values?: Array<{ label?: string; value?: string }>\n): Array<{ label: string; value: string }> {\n return (values ?? []).map((option) => ({\n label: String(option.label ?? option.value ?? \"\"),\n value: String(option.value ?? option.label ?? \"\"),\n }));\n}\n\nconst LARGE_OPTIONS_THRESHOLD = 100;\n\nfunction emitOptions(\n list: Array<{ label: string; value: string }>,\n component: FormioComponent,\n ctx: Converter\n): string | Array<{ label: string; value: string }> {\n if (list.length > LARGE_OPTIONS_THRESHOLD) {\n ctx.warn(\n `\"${component.key ?? \"?\"}\" embeds ${list.length} static options — consider optionsSource \"remote\" or a shared catalog (optionsSource \"catalog\" + optionsRef) to keep the spec small`\n );\n }\n\n const compactable =\n list.length > 0 &&\n list.every(\n (option) =>\n option.label === option.value &&\n option.value !== \"\" &&\n option.value === option.value.trim() &&\n !option.value.includes(\"\\n\")\n );\n\n return compactable ? list.map((option) => option.value).join(\"\\n\") : list;\n}\n\nfunction baseConfigs(\n component: FormioComponent,\n ctx: Converter\n): Record<string, unknown> & { uid: string; key: string } {\n const configs: Record<string, unknown> & { uid: string; key: string } = {\n uid: ctx.nextUid(),\n key: component.key ?? ctx.nextUid(),\n };\n if (component.label) configs.label = component.label;\n if (component.placeholder) configs.placeholder = component.placeholder;\n if (component.description) configs.description = component.description;\n if (component.defaultValue !== undefined && component.defaultValue !== \"\") {\n configs.defaultValue = component.defaultValue;\n }\n if (component.validate?.step != null && component.validate.step !== \"\") {\n configs.step = component.validate.step;\n }\n if (component.disabled) configs.disabled = true;\n if (component.prefix) configs.prefix = component.prefix;\n if (component.suffix) configs.suffix = component.suffix;\n if (typeof component.inputMask === \"string\" && component.inputMask) {\n configs.mask = component.inputMask;\n }\n return configs;\n}\n\nfunction withCommon(\n component: FormioComponent,\n ctx: Converter,\n brick: BrickSpec\n): BrickSpec {\n const validations = convertValidations(component, ctx);\n if (validations.length) brick.validations = validations;\n\n const conditionalRules = convertConditional(component, ctx);\n const rules = [...conditionalRules];\n\n if (component.hidden && conditionalRules.length === 0) {\n rules.push({\n name: \"always hidden\",\n type: \"jsonLogic\",\n logic: true,\n effects: [\n { property: { target: \"hidden\", type: \"boolean\" }, boolean: true },\n ],\n });\n }\n\n rules.push(...convertLogic(component, ctx));\n\n if (rules.length) brick.rules = rules;\n\n return brick;\n}\n\nfunction convertLogic(component: FormioComponent, ctx: Converter): Rule[] {\n const rules: Rule[] = [];\n\n for (const logic of component.logic ?? []) {\n const trigger = logic.trigger;\n if (trigger?.type !== \"javascript\" || !trigger.javascript) {\n ctx.warn(\n `logic \"${logic.name ?? \"?\"}\" on \"${component.key ?? \"?\"}\" skipped — only javascript triggers are converted`\n );\n continue;\n }\n\n const effects = [];\n for (const action of logic.actions ?? []) {\n if (action.type === \"property\" && action.property?.value) {\n effects.push({\n property: {\n target: action.property.value,\n type: \"boolean\" as const,\n },\n boolean: action.state === true,\n });\n } else {\n ctx.warn(\n `logic action \"${action.name ?? action.type ?? \"?\"}\" on \"${component.key ?? \"?\"}\" skipped — only property actions are converted`\n );\n }\n }\n if (!effects.length) continue;\n\n rules.push({\n name: logic.name ?? `formio logic (${component.key ?? \"?\"})`,\n type: \"javaScript\",\n code: [\n \"const data = dataMap;\",\n \"const row = dataMap;\",\n \"let result = false;\",\n trigger.javascript,\n \"return result === true;\",\n ].join(\"\\n\"),\n effects,\n });\n }\n\n return rules;\n}\n\nfunction convertValidations(\n component: FormioComponent,\n ctx: Converter\n): Validation[] {\n const source = component.validate ?? {};\n const validations: Validation[] = [];\n const message = source.customMessage;\n\n const push = (validation: Validation) => {\n if (message) validation.message = message;\n validations.push(validation);\n };\n\n const bound = (raw: unknown): number | undefined => {\n if (raw == null || raw === \"\" || raw === false) return undefined;\n const parsed = Number(raw);\n return Number.isFinite(parsed) ? parsed : undefined;\n };\n\n if (source.required) push({ validator: \"required\" });\n const minLength = bound(source.minLength);\n if (minLength !== undefined) push({ validator: \"minLength\", value: minLength });\n const maxLength = bound(source.maxLength);\n if (maxLength !== undefined) push({ validator: \"maxLength\", value: maxLength });\n const min = bound(source.min);\n if (min !== undefined) push({ validator: \"min\", value: min });\n const max = bound(source.max);\n if (max !== undefined) push({ validator: \"max\", value: max });\n if (source.pattern) push({ validator: \"pattern\", value: source.pattern });\n if (component.type === \"email\") push({ validator: \"email\" });\n if (component.type === \"url\") push({ validator: \"url\" });\n\n if (source.custom) {\n ctx.warn(\n `validate.custom on \"${component.key ?? \"?\"}\" converted automatically — review the generated custom validator`\n );\n validations.push({\n validator: \"custom\",\n customValidator: [\n \"const input = value;\",\n \"const data = dataMap;\",\n \"const row = dataMap;\",\n \"let valid = true;\",\n source.custom,\n \"return valid;\",\n ].join(\"\\n\"),\n });\n }\n\n return validations;\n}\n\nfunction convertConditional(\n component: FormioComponent,\n ctx: Converter\n): Rule[] {\n if (component.customConditional) {\n ctx.warn(\n `customConditional on \"${component.key ?? \"?\"}\" skipped — rewrite it as a FormKrafter rule`\n );\n }\n\n const conditional = component.conditional;\n if (!conditional || !conditional.when) return [];\n\n const show = conditional.show === true || conditional.show === \"true\";\n const comparison = {\n [show ? \"!=\" : \"==\"]: [{ var: conditional.when }, conditional.eq],\n };\n\n return [\n {\n name: `formio conditional (${conditional.when})`,\n type: \"jsonLogic\",\n logic: comparison as Rule[\"logic\"],\n effects: [\n { property: { target: \"hidden\", type: \"boolean\" }, boolean: true },\n ],\n },\n ];\n}\n",
27
28
  "import type { BrickSpec } from \"./brick-spec\";\nimport { iterateBricks } from \"./brick-spec\";\nimport { services } from \"../services\";\nimport type { SpecSourceService } from \"../services/spec_source_service\";\n\nexport interface ExpandSpecOptions {\n specSourceService?: SpecSourceService;\n maxDepth?: number;\n}\n\nconst isNestedForm = (brick: BrickSpec): boolean =>\n brick.id === \"nested-form\" && typeof brick.configs?.specRef === \"string\";\n\nexport const hasNestedForms = (spec?: BrickSpec): boolean => {\n if (!spec) return false;\n for (const { brick } of iterateBricks(spec)) {\n if (isNestedForm(brick) && brick.configs?.specRef) return true;\n }\n return false;\n};\n\nexport async function expandSpec(\n spec: BrickSpec,\n options: ExpandSpecOptions = {}\n): Promise<BrickSpec> {\n const source = options.specSourceService ?? services.specSourceService;\n const maxDepth = options.maxDepth ?? 5;\n\n const expandBrick = async (\n brick: BrickSpec,\n seenRefs: string[]\n ): Promise<BrickSpec> => {\n if (isNestedForm(brick) && brick.configs?.specRef) {\n const ref = String(brick.configs.specRef);\n\n if (seenRefs.includes(ref)) {\n throw new Error(\n `Circular nested form reference: ${[...seenRefs, ref].join(\" → \")}`\n );\n }\n if (seenRefs.length >= maxDepth) {\n throw new Error(\n `Nested forms exceed the maximum depth of ${maxDepth} (${ref})`\n );\n }\n\n const fetched = await source.fetchSpec(ref);\n const inlined = await expandBrick(structuredClone(fetched), [\n ...seenRefs,\n ref,\n ]);\n\n return {\n type: \"panel\",\n id: \"group\",\n name: brick.name,\n configs: {\n ...brick.configs,\n label: brick.configs.label ?? inlined.name,\n },\n styles: brick.styles,\n rules: brick.rules,\n children: inlined.children ?? [],\n };\n }\n\n if (!brick.children?.length) return brick;\n\n return {\n ...brick,\n children: await Promise.all(\n brick.children.map((child) => expandBrick(child, seenRefs))\n ),\n };\n };\n\n return expandBrick(structuredClone(spec), []);\n}\n"
28
29
  ],
29
- "mappings": "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",
30
- "debugId": "288836AF5D54AAA664756E2164756E21",
30
+ "mappings": "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",
31
+ "debugId": "1A947A5546F0B22764756E2164756E21",
31
32
  "names": []
32
33
  }
@@ -0,0 +1,20 @@
1
+ import type { BrickSpec } from "./brick-spec";
2
+ export type RecapItem = {
3
+ kind: "field";
4
+ label: string;
5
+ value: string;
6
+ } | {
7
+ kind: "section";
8
+ label: string;
9
+ } | {
10
+ kind: "collection";
11
+ label: string;
12
+ columns: string[];
13
+ rows: string[][];
14
+ };
15
+ /**
16
+ * Walks a spec and summarizes the present data as renderer-agnostic items:
17
+ * plain fields, section headers and collection tables. Shared by the web and
18
+ * native recap bricks.
19
+ */
20
+ export declare const collectRecapItems: (spec: BrickSpec | undefined, dataMap: Record<string, unknown> | undefined, locale: string | undefined, showEmpty: boolean, groupBySections?: boolean) => RecapItem[];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@streamline-pulse/formkrafter-core",
3
- "version": "0.7.1",
3
+ "version": "0.9.0",
4
4
  "description": "Framework-agnostic core for FormKrafter: form specs, RFC 6902 ops with undo/redo, Ajv validation, sandboxed rules engine and injectable services",
5
5
  "license": "MIT",
6
6
  "type": "module",