@msbci/form-editor 1.3.7 → 1.3.9
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/README.md +15 -0
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.mts +4 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var zr=require('react'),zustand=require('zustand'),formCore=require('@msbci/form-core'),jsxRuntime=require('react/jsx-runtime'),core=require('@dnd-kit/core'),sortable=require('@dnd-kit/sortable'),utilities=require('@dnd-kit/utilities');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var zr__default=/*#__PURE__*/_interopDefault(zr);function Vo(e,a){return {itemType:"variable",id:formCore.generateId(),code:e.code,name:e.name,type:e.variableType,order:a,isRequired:e.isRequired??false,isReadonly:e.isReadonly??false,isHidden:e.isHidden??false,description:e.description,placeholder:e.placeholder,options:e.options,validationRules:e.validationRules,conditions:e.conditions,expression:e.expression,dataSourceId:e.dataSourceId,dataSourceDependencies:e.dataSourceDependencies,style:e.style,metadata:e.metadata,templateId:e.id,templateOverrides:{}}}function Mo(e,a,r){return a==="variableType"?{...e,type:r}:{...e,[a]:r}}function _t(e,a){return a==="variableType"?e.variableType:e[a]}var Wt=50;function qt(){return {id:"",code:"",name:"New Form",version:"1.0.0",isPublished:false,pages:[]}}function J(e,a){let r=Array.isArray(e.items)?e.items:[...formCore.getPageVariables(e),...formCore.getPageRosters(e)],{variables:n,rosters:o,...t}=e;return {...t,items:a(r)}}var k=zustand.create((e,a)=>{function r(o){let t=a(),i={form:formCore.deepClone(t.form),description:o,timestamp:Date.now()},l=t.history.slice(0,t.historyIndex+1);l.push(i),l.length>Wt&&l.shift(),e({history:l,historyIndex:l.length-1});}function n(o,t){r(o);let i=a(),l=t(formCore.deepClone(i.form));e({form:l,isDirty:true});}return {form:qt(),formTypes:[],selection:{type:"form"},view:"canvas",isDirty:false,isSaving:false,history:[],historyIndex:-1,adapter:null,availableTemplates:[],availableScopes:[],availableDataSources:[],setForm:o=>{e({form:formCore.migrateFormToItems(formCore.deepClone(o)),isDirty:false,history:[],historyIndex:-1,selection:{type:"form"}});},updateFormMeta:o=>{n("Update form metadata",t=>({...t,...o}));},addPage:o=>{let t=Array.isArray(o.items)?o:{...o,items:[...o.variables??[],...o.rosters??[]]};n(`Add page "${t.name}"`,i=>({...i,pages:[...i.pages,t]}));},updatePage:(o,t)=>{n(`Update page "${o}"`,i=>({...i,pages:i.pages.map(l=>l.code===o?{...l,...t}:l)}));},removePage:o=>{n(`Remove page "${o}"`,i=>({...i,pages:i.pages.filter(l=>l.code!==o)}));let t=a();t.selection.type==="page"&&t.selection.pageCode===o&&e({selection:{type:"form"}});},reorderPages:o=>{n("Reorder pages",t=>{let i=new Map(t.pages.map(d=>[d.code,d])),l=o.map((d,s)=>{let f=i.get(d);return f?{...f,order:s}:void 0}).filter(d=>d!==void 0);return {...t,pages:l}});},addRoster:(o,t)=>{n(`Add roster "${t.name}" to page "${o}"`,i=>({...i,pages:i.pages.map(l=>l.code!==o?l:J(l,d=>[...d,{...t,itemType:"roster",order:d.length}]))}));},updateRoster:(o,t,i)=>{n(`Update roster "${t}"`,l=>({...l,pages:l.pages.map(d=>d.code!==o?d:J(d,s=>s.map(f=>formCore.isPageRoster(f)&&f.code===t?{...f,...i,itemType:"roster"}:f)))}));},removeRoster:(o,t)=>{n(`Remove roster "${t}"`,i=>({...i,pages:i.pages.map(l=>l.code!==o?l:J(l,d=>d.filter(s=>!(formCore.isPageRoster(s)&&s.code===t))))}));},addVariable:(o,t,i)=>{n(`Add variable "${t.name}"`,l=>({...l,pages:l.pages.map(d=>d.code!==o?d:i?J(d,s=>s.map(f=>formCore.isPageRoster(f)&&f.code===i?{...f,variables:[...f.variables,t]}:f)):J(d,s=>[...s,{...t,itemType:"variable",order:s.length}]))}));},updateVariable:(o,t,i,l)=>{n(`Update variable "${t}"`,d=>({...d,pages:d.pages.map(s=>s.code!==o?s:l?J(s,f=>f.map(v=>formCore.isPageRoster(v)&&v.code===l?{...v,variables:v.variables.map(y=>y.code===t?{...y,...i}:y)}:v)):J(s,f=>f.map(v=>formCore.isPageVariable(v)&&v.code===t?{...v,...i,itemType:"variable"}:v)))}));},removeVariable:(o,t,i)=>{n(`Remove variable "${t}"`,l=>({...l,pages:l.pages.map(d=>d.code!==o?d:i?J(d,s=>s.map(f=>formCore.isPageRoster(f)&&f.code===i?{...f,variables:f.variables.filter(v=>v.code!==t)}:f)):J(d,s=>s.filter(f=>!(formCore.isPageVariable(f)&&f.code===t))))}));},addVariableFromTemplate:(o,t,i)=>{n(`Add variable from template "${t.code}"`,l=>({...l,pages:l.pages.map(d=>d.code!==o?d:i?J(d,s=>s.map(f=>{if(!(formCore.isPageRoster(f)&&f.code===i))return f;let v=Vo(t,f.variables.length);return {...f,variables:[...f.variables,v]}})):J(d,s=>[...s,Vo(t,s.length)]))}));},setVariableOverride:(o,t,i,l,d)=>{n(`Override "${String(i)}" on "${t}"`,s=>({...s,pages:s.pages.map(f=>{if(f.code!==o)return f;let v=y=>{let p={...y.templateOverrides??{},[i]:l};return {...Mo(y,i,l),templateOverrides:p}};return d?J(f,y=>y.map(p=>formCore.isPageRoster(p)&&p.code===d?{...p,variables:p.variables.map(g=>g.code===t?v(g):g)}:p)):J(f,y=>y.map(p=>formCore.isPageVariable(p)&&p.code===t?v(p):p))})}));},resetVariableOverride:(o,t,i,l)=>{let d=a().availableTemplates;n(`Reset override "${String(i)}" on "${t}"`,s=>({...s,pages:s.pages.map(f=>{if(f.code!==o)return f;let v=y=>{let p={...y.templateOverrides??{}};delete p[i];let g=y.templateId?d.find(b=>b.id===y.templateId):void 0,c=g?_t(g,i):void 0;return {...Mo(y,i,c),templateOverrides:p}};return l?J(f,y=>y.map(p=>formCore.isPageRoster(p)&&p.code===l?{...p,variables:p.variables.map(g=>g.code===t?v(g):g)}:p)):J(f,y=>y.map(p=>formCore.isPageVariable(p)&&p.code===t?v(p):p))})}));},moveVariable:(o,t,i,l,d,s)=>{n(`Move variable "${i}"`,f=>{let v,y=f.pages.map(g=>g.code!==o?g:d?J(g,c=>c.map(u=>{if(!(formCore.isPageRoster(u)&&u.code===d))return u;let b=u.variables.find(x=>x.code===i);return b&&(v={...b}),{...u,variables:u.variables.filter(x=>x.code!==i)}})):J(g,c=>c.filter(u=>formCore.isPageVariable(u)&&u.code===i?(v={...u},false):true)));if(!v)return f;v={...v,order:l,itemType:"variable"};let p=y.map(g=>g.code!==t?g:s?J(g,c=>c.map(u=>formCore.isPageRoster(u)&&u.code===s?{...u,variables:[...u.variables,v].sort((b,x)=>b.order-x.order)}:u)):J(g,c=>[...c,v].sort((u,b)=>u.order-b.order)));return {...f,pages:p}});},moveItem:(o,t,i)=>{n(`Reorder page items in "${o}"`,l=>({...l,pages:l.pages.map(d=>d.code!==o?d:J(d,s=>{if(t<0||t>=s.length||i<0||i>=s.length||t===i)return s;let f=s.slice(),[v]=f.splice(t,1);return f.splice(i,0,v),f.map((y,p)=>({...y,order:p}))}))}));},select:o=>e({selection:o}),clearSelection:()=>e({selection:{type:"form"}}),setView:o=>e({view:o}),undo:()=>{let{history:o,historyIndex:t,form:i}=a();if(!(t<0))if(t===o.length-1){let l={form:formCore.deepClone(i),description:"Current state",timestamp:Date.now()};e({form:formCore.deepClone(o[t].form),historyIndex:t-1,isDirty:true,history:[...o,l]});}else e({form:formCore.deepClone(o[t].form),historyIndex:t-1,isDirty:true});},redo:()=>{let{history:o,historyIndex:t}=a();if(t>=o.length-2)return;let i=t+2;i<o.length&&e({form:formCore.deepClone(o[i].form),historyIndex:i-1,isDirty:true});},canUndo:()=>a().historyIndex>=0,canRedo:()=>{let{history:o,historyIndex:t}=a();return t<o.length-2},addFormType:o=>{let t={...o,id:formCore.generateId()};e(i=>({formTypes:[...i.formTypes,t]}));},updateFormType:(o,t)=>{e(i=>({formTypes:i.formTypes.map(l=>l.id===o?{...l,...t}:l)}));},removeFormType:o=>{let t=a();if(t.form.formTypeId===o){let{formTypeId:i,...l}=t.form;e({form:{...l}});}e(i=>({formTypes:i.formTypes.filter(l=>l.id!==o)}));},setAvailableTemplates:o=>{e({availableTemplates:o});},setAvailableScopes:o=>{e({availableScopes:o});},setAvailableDataSources:o=>{e({availableDataSources:o});},setAdapter:o=>e({adapter:o}),save:async()=>{let{adapter:o,form:t}=a();if(o?.saveForm){e({isSaving:true});try{await o.saveForm(t),e({isDirty:!1});}finally{e({isSaving:false});}}},load:async o=>{let{adapter:t}=a();if(!t?.loadForm)return;let i=await t.loadForm(o);a().setForm(i);},exportJson:()=>formCore.serializeForm(a().form),importJson:o=>{let t=formCore.deserializeForm(o);a().setForm(t);}}});var xe={toolbar:{formNamePlaceholder:"Nom du formulaire",unsaved:"Non sauvegard\xE9",addPage:"+ Page",formProperties:"Propri\xE9t\xE9s du formulaire",types:"Types",manageFormTypesTitle:"G\xE9rer les types de formulaire",dataSources:"Sources",manageDataSourcesTitle:"G\xE9rer les sources de donn\xE9es",scopes:"Scopes",manageScopesTitle:"G\xE9rer les scopes et les variables du r\xE9f\xE9rentiel",undo:"Annuler",redo:"R\xE9tablir",save:"Enregistrer",saving:"Enregistrement...",export:"Exporter",import:"Importer",viewEditor:"\xC9diteur",viewPreview:"Aper\xE7u",viewJson:"JSON"},toolbox:{searchPlaceholder:"Rechercher...",addPageFirst:"Ajoutez d\u2019abord une page",tabFields:"Champs",tabVariables:"Variables",noTemplates:"Aucune variable dans ce scope",noScope:"Configurez un scope pour acc\xE9der au r\xE9f\xE9rentiel",groupText:"Texte",groupSelection:"S\xE9lection",groupDateTime:"Date et heure",groupMedia:"M\xE9dias",groupAdvanced:"Avanc\xE9",groupRoster:"Roster",typeRosterCheck:"Cases \xE0 cocher",typeRosterList:"Liste",typeRosterCollection:"Collection",typeRosterCollectionExtend:"Collection \xE9tendue",types:{text:"Texte court",textarea:"Zone de texte",number:"Nombre",email:"Email",select:"Liste d\xE9roulante",multiselect:"Multi-s\xE9lection",radio:"Boutons radio",checkbox:"Cases \xE0 cocher",date:"Date",datetime:"Date et heure",time:"Heure",file:"Fichier",image:"Image",gps:"GPS",rating:"Note (\xE9toiles)",calculated:"Calcul\xE9",hidden:"Masqu\xE9",label:"\xC9tiquette"}},canvas:{emptyStateNoPage:"Cliquez sur \xAB + Page \xBB dans la barre d\u2019outils pour commencer",emptyStateNoPageDnd:"Glissez un champ depuis la bo\xEEte \xE0 outils ou ajoutez une page pour commencer",emptyStatePage:"Cliquez sur un type de champ dans la bo\xEEte \xE0 outils pour l\u2019ajouter ici",unnamedPage:"Page sans nom",repeatable:"R\xE9p\xE9table",fieldsRostersCount:(e,a)=>`${e} champ${e>1?"s":""} \xB7 ${a} roster${a>1?"s":""}`,fieldsCount:e=>`${e} champ${e>1?"s":""}`,rosterVarsCount:e=>`${e} variable${e>1?"s":""}`,addRoster:"+ Ajouter un roster",addFieldToRoster:"+ Ajouter un champ au roster",pilotPrefix:"pilote :",newRosterName:"Nouveau roster",newFieldName:"Nouveau champ",newVariableName:e=>`Nouveau ${e.toLowerCase()}`,hasConditionsTitle:"Contient des conditions",dataSourceConnectedTitle:"Source de donn\xE9es connect\xE9e"},properties:{title:"Propri\xE9t\xE9s",name:"Nom",code:"Code",description:"Description",placeholder:"Placeholder",version:"Version",formType:"Type de formulaire",noType:"\u2014 Aucun type \u2014",formSummary:(e,a)=>`${e} page${e>1?"s":""} \xB7 ${a} variable${a>1?"s":""}`,pageSummary:(e,a)=>`${e} variable${e>1?"s":""} \xB7 ${a} roster${a>1?"s":""}`,rosterSummary:(e,a)=>`${e} variable${e>1?"s":""} \xB7 ${a} option${a>1?"s":""}`,repeatablePage:"Page r\xE9p\xE9table",minInstances:"Minimum d\u2019instances",maxInstances:"Maximum d\u2019instances",controlVariableCode:"Code de la variable de contr\xF4le",instanceLabel:"Mod\xE8le de libell\xE9 d\u2019instance",rosterType:"Type de roster",pilotVariableCode:"Code de la variable pilote",rosterTypes:{check:"Cases \xE0 cocher (s\xE9lection multiple)",list:"Liste (dropdown par ligne)",collection:"Collection (ajout/suppression de lignes)",collection_extend:"Collection \xE9tendue (vue tableau)"},linkedTemplate:"Variable li\xE9e au r\xE9f\xE9rentiel",templateCode:"Code (non modifiable)",templateName:"Nom (non modifiable)",resetOverride:"R\xE9initialiser",type:"Type",ratingStyle:"Style de notation",ratingStyles:{star:"\u2605 \xC9toiles",number:"123 Nombres",color:"\u25CF Points de couleur"},layout:"Mise en page",startNewRow:"Nouvelle ligne",columnSpan:"Largeur (colonnes, 1-12)",columnSpanAuto:"Auto (part \xE9gale)",columnSpanHalf:" (moiti\xE9)",columnSpanThird:" (tiers)",columnSpanFull:" (pleine largeur)",required:"Obligatoire",readonly:"Lecture seule",hidden:"Masqu\xE9 par d\xE9faut",expression:"Expression",fileConfig:"Configuration fichier",fileConfigMax:"Nombre max de fichiers",fileConfigMin:"Nombre min obligatoire",fileConfigAccept:"Types accept\xE9s",fileConfigAcceptPlaceholder:".pdf,.doc,.xlsx",fileConfigUnlimited:"Illimit\xE9",imageConfig:"Configuration image",imageConfigMax:"Nombre max d\u2019images",imageConfigMin:"Nombre min obligatoire",imageConfigCamera:"Autoriser la cam\xE9ra",scopes:"Scopes (r\xE9f\xE9rentiel de variables)",scopesHint:"L\u2019ordre d\xE9finit la priorit\xE9 : le premier scope gagne en cas de conflit sur un code.",noScopesAvailable:"Aucun scope disponible \u2014 configurez-en un via l\u2019API ou le seed.",moveScopeUp:"Monter",moveScopeDown:"Descendre",removeScope:"Retirer",langConfigSection:"Langues",langConfigAvailable:"Langues disponibles",langConfigDefault:"Langue par d\xE9faut",langConfigStrategy:"Strat\xE9gie de d\xE9tection",langConfigStrategies:{prop:"Propri\xE9t\xE9 (prop)",browser:"Navigateur",selector:"S\xE9lecteur dans le formulaire",auto:"Auto (navigateur puis d\xE9faut)"},langConfigSelectorPosition:"Position du s\xE9lecteur",langConfigPositions:{top:"Haut",bottom:"Bas"},langConfigConfirmRemove:e=>`Supprimer la langue \xAB ${e.toUpperCase()} \xBB supprimera toutes les traductions ${e.toUpperCase()}. Confirmer ?`,langConfigConfirmYes:"Supprimer",langConfigConfirmNo:"Annuler"},optionsEditor:{optionsCount:e=>`Options (${e})`,noOptions:"Aucune option. Ajoutez-en une pour peupler les choix.",optionLabelPlaceholder:"Libell\xE9",optionValuePlaceholder:"valeur",addOption:"+ Ajouter une option",optionLabelAria:e=>`Libell\xE9 de l\u2019option ${e+1}`,optionValueAria:e=>`Valeur de l\u2019option ${e+1}`,removeOptionAria:e=>`Supprimer l\u2019option ${e+1}`},conditionBuilder:{conditionsCount:e=>`Conditions (${e})`,addCondition:"+ Ajouter une condition",rulesCount:e=>` (${e} r\xE8gle${e>1?"s":""})`,addRule:"+ Ajouter une r\xE8gle",action:"Action",match:"Correspondance",all:"TOUT (ET)",any:"AU MOINS UN (OU)",actions:{show:"Afficher si",hide:"Masquer si",validate:"Valider que",require:"Obligatoire si",readonly:"Lecture seule si",setValue:"D\xE9finir la valeur si"},operators:{equals:"est \xE9gal \xE0",not_equals:"est diff\xE9rent de",greater_than:"est sup\xE9rieur \xE0",less_than:"est inf\xE9rieur \xE0",greater_than_or_equal:"est sup\xE9rieur ou \xE9gal \xE0",less_than_or_equal:"est inf\xE9rieur ou \xE9gal \xE0",contains:"contient",not_contains:"ne contient pas",is_empty:"est vide",is_not_empty:"n\u2019est pas vide",starts_with:"commence par",ends_with:"se termine par",in:"est dans la liste",not_in:"n\u2019est pas dans la liste",between:"est entre",regex:"correspond au pattern"},variablePlaceholder:"Variable...",valuePlaceholder:"Valeur",errorMessage:"Message d\u2019erreur",errorMessagePlaceholder:"Message d\u2019erreur de validation",targetVariableCode:"Code de la variable cible",targetVariablePlaceholder:"VAR_CIBLE",valueToSet:"Valeur \xE0 d\xE9finir",valueToSetPlaceholder:"Valeur",modalTitle:e=>`Conditions (${e})`,configureButton:e=>e===0?"Configurer les conditions":`Configurer les conditions (${e})`,applyButton:"Appliquer",cancelButton:"Annuler",closeButton:"Fermer",formulasSummary:"Formules configur\xE9es",noConditions:"Aucune condition configur\xE9e",modeVisual:"Constructeur visuel",modeManual:"Saisie manuelle",manualWarning:"Expression complexe \u2014 le constructeur visuel ne peut pas la repr\xE9senter. Restez en mode manuel pour la modifier.",manualPlaceholder:"Ex : show(${AGE} >= 18)",manualHelp:"Fonctions : show / hide / setValue / validate / require / readonly / ConditionEval. Variables : ${CODE}.",validationExpression:"Expression de validation",validationExpressionPlaceholder:'Ex : ${CHAMP} != ""'},dataSource:{title:"Source de donn\xE9es",connector:"Connecteur",none:"Aucune (options statiques)",connectedTo:"Connect\xE9 \xE0 :",dependencies:e=>`D\xE9pendances (${e})`,selectVariable:"S\xE9lectionner une variable...",dependencyKeyPlaceholder:"Cl\xE9 de d\xE9pendance (ex : parentId)",addDependency:"+ Ajouter"},scopeManager:{dialogAriaLabel:"Gestion des scopes",title:"Gestion des scopes",closeAriaLabel:"Fermer",addScope:"+ Ajouter un scope",newScopeName:"Nom du scope",newScopeCodePlaceholder:"CODE (auto)",manageVariables:"G\xE9rer les variables \u2192",confirmDelete:"Ce scope contient des \xE9l\xE9ments. Confirmer la suppression ?",deleteConfirm:"Supprimer",deleteCancel:"Annuler",noScopes:"Aucun scope d\xE9fini. Ajoutez-en un ci-dessous.",saveButton:"Enregistrer",cancelButton:"Annuler",deleteError:"Impossible de supprimer le scope",editScopeAria:e=>`Modifier le scope ${e}`,removeScopeAria:e=>`Supprimer le scope ${e}`,manageVariablesAria:e=>`G\xE9rer les variables du scope ${e}`},variableTemplateManager:{dialogAriaLabel:"Variables du r\xE9f\xE9rentiel",title:e=>`Variables \u2014 ${e}`,closeAriaLabel:"Fermer",addTemplate:"+ Ajouter une variable",code:"Code",name:"Nom",type:"Type",description:"Description",placeholder:"Texte d\u2019aide",required:"Obligatoire",readonly:"Lecture seule",hidden:"Masqu\xE9e",options:"Options",expression:"Expression",dataSourceId:"Source de donn\xE9es",advancedSection:"Avanc\xE9",validationRules:"R\xE8gles de validation",conditions:"Conditions",style:"Style",confirmDelete:"Supprimer cette variable du r\xE9f\xE9rentiel ?",deleteConfirm:"Supprimer",deleteCancel:"Annuler",noTemplates:"Aucune variable dans ce scope.",saveButton:"Enregistrer",cancelButton:"Annuler",duplicateCodeError:"Ce code existe d\xE9j\xE0 dans ce scope.",readonlyCode:"Code (immuable)",readonlyName:"Nom (immuable)",editTemplateAria:e=>`Modifier la variable ${e}`,removeTemplateAria:e=>`Supprimer la variable ${e}`,backToScopes:"\u2190 Retour aux scopes"},dataSourceManager:{dialogAriaLabel:"Sources de donn\xE9es",title:"Sources de donn\xE9es",closeAriaLabel:"Fermer",addButton:"+ Ajouter une source",noSources:"Aucune source dans ce scope. Ajoutez-en une ci-dessous.",noScope:"Le formulaire n\u2019a aucun scope \u2014 ajoutez-en un dans les propri\xE9t\xE9s du formulaire.",scopeFilterLabel:"Scope",fieldCode:"Code",fieldName:"Nom",fieldUrl:"URL",fieldMethod:"M\xE9thode",fieldQueryParam:"Param\xE8tre de recherche",fieldValueField:"Champ valeur",fieldLabelField:"Champ libell\xE9",fieldHeaders:"Headers (chiffr\xE9s)",headerKeyPlaceholder:"Cl\xE9 (ex : Authorization)",headerValuePlaceholder:"Valeur",addHeader:"+ Ajouter un header",fieldDependencies:"D\xE9pendances",dependencyParamPlaceholder:"Param\xE8tre URL",dependencyVarPlaceholder:"Code variable",addDependency:"+ Ajouter une d\xE9pendance",save:"Enregistrer",cancel:"Annuler",editAria:e=>`Modifier la source ${e}`,deleteAria:e=>`Supprimer la source ${e}`,scopeBadge:e=>`Scope : ${e}`,confirmDelete:e=>`Supprimer la source "${e}" ?`},formTypesDialog:{dialogAriaLabel:"Types de formulaires",title:"Types de formulaires",closeAriaLabel:"Fermer",noTypes:"Aucun type d\xE9fini. Ajoutez-en un ci-dessous.",confirmDelete:"Ce type est utilis\xE9 par le formulaire courant. Confirmer la suppression ?",deleteConfirm:"Supprimer",deleteCancel:"Annuler",removeTypeAria:e=>`Supprimer ${e}`,newTypeNamePlaceholder:"Nom du nouveau type",newTypeCodePlaceholder:"CODE (auto)",addButton:"+ Ajouter"},formEditor:{previewMissing:"Passer la prop PreviewComponent pour activer l\u2019aper\xE7u"}};var Oo={toolbar:{formNamePlaceholder:"Form name",unsaved:"Unsaved",addPage:"+ Page",formProperties:"Form properties",types:"Types",manageFormTypesTitle:"Manage form types",dataSources:"Sources",manageDataSourcesTitle:"Manage data sources",scopes:"Scopes",manageScopesTitle:"Manage scopes and library variables",undo:"Undo",redo:"Redo",save:"Save",saving:"Saving...",export:"Export",import:"Import",viewEditor:"Editor",viewPreview:"Preview",viewJson:"JSON"},toolbox:{searchPlaceholder:"Search fields...",addPageFirst:"Add a page first",tabFields:"Fields",tabVariables:"Variables",noTemplates:"No variables in this scope",noScope:"Configure a scope to access the variable library",groupText:"Text",groupSelection:"Selection",groupDateTime:"Date & Time",groupMedia:"Media",groupAdvanced:"Advanced",groupRoster:"Roster",typeRosterCheck:"Checks",typeRosterList:"List",typeRosterCollection:"Collection",typeRosterCollectionExtend:"Collection extended",types:{text:"Text",textarea:"Text Area",number:"Number",email:"Email",select:"Dropdown",multiselect:"Multi Select",radio:"Radio",checkbox:"Checkbox",date:"Date",datetime:"DateTime",time:"Time",file:"File",image:"Image",gps:"GPS",rating:"Rating (stars)",calculated:"Calculated",hidden:"Hidden",label:"Label"}},canvas:{emptyStateNoPage:'Click "+ Page" in the toolbar to get started',emptyStateNoPageDnd:"Drag a field from the toolbox or add a page to get started",emptyStatePage:"Click a field type in the toolbox to add it here",unnamedPage:"Unnamed Page",repeatable:"Repeatable",fieldsRostersCount:(e,a)=>`${e} field${e===1?"":"s"} \xB7 ${a} roster${a===1?"":"s"}`,fieldsCount:e=>`${e} field${e===1?"":"s"}`,rosterVarsCount:e=>`${e} var${e===1?"":"s"}`,addRoster:"+ Add Roster",addFieldToRoster:"+ Add field to roster",pilotPrefix:"pilot:",newRosterName:"New Roster",newFieldName:"New field",newVariableName:e=>`New ${e}`,hasConditionsTitle:"Has conditions",dataSourceConnectedTitle:"Data source connected"},properties:{title:"Properties",name:"Name",code:"Code",description:"Description",placeholder:"Placeholder",version:"Version",formType:"Form type",noType:"\u2014 No type \u2014",formSummary:(e,a)=>`${e} page${e===1?"":"s"} \xB7 ${a} variable${a===1?"":"s"}`,pageSummary:(e,a)=>`${e} variable${e===1?"":"s"} \xB7 ${a} roster${a===1?"":"s"}`,rosterSummary:(e,a)=>`${e} variable${e===1?"":"s"} \xB7 ${a} option${a===1?"":"s"}`,repeatablePage:"Repeatable page",minInstances:"Min instances",maxInstances:"Max instances",controlVariableCode:"Control variable code",instanceLabel:"Instance label template",rosterType:"Roster Type",pilotVariableCode:"Pilot variable code",rosterTypes:{check:"Check (multi-select checkboxes)",list:"List (dropdown per row)",collection:"Collection (add/remove rows)",collection_extend:"Collection Extended (table view)"},linkedTemplate:"Linked to variable library",templateCode:"Code (read-only)",templateName:"Name (read-only)",resetOverride:"Reset",type:"Type",ratingStyle:"Rating style",ratingStyles:{star:"\u2605 Stars",number:"123 Numbers",color:"\u25CF Color dots"},layout:"Layout",startNewRow:"Start new row",columnSpan:"Column span (1-12)",columnSpanAuto:"Auto (equal share)",columnSpanHalf:" (half)",columnSpanThird:" (third)",columnSpanFull:" (full)",required:"Required",readonly:"Read only",hidden:"Hidden by default",expression:"Expression",fileConfig:"File configuration",fileConfigMax:"Max number of files",fileConfigMin:"Min number required",fileConfigAccept:"Accepted types",fileConfigAcceptPlaceholder:".pdf,.doc,.xlsx",fileConfigUnlimited:"Unlimited",imageConfig:"Image configuration",imageConfigMax:"Max number of images",imageConfigMin:"Min number required",imageConfigCamera:"Allow camera",scopes:"Scopes (variable library)",scopesHint:"Order defines priority: the first scope wins on code conflicts.",noScopesAvailable:"No scope available \u2014 create one via the API or seed.",moveScopeUp:"Move up",moveScopeDown:"Move down",removeScope:"Remove",langConfigSection:"Languages",langConfigAvailable:"Available languages",langConfigDefault:"Default language",langConfigStrategy:"Detection strategy",langConfigStrategies:{prop:"Prop (host-controlled)",browser:"Browser",selector:"In-form selector",auto:"Auto (browser then default)"},langConfigSelectorPosition:"Selector position",langConfigPositions:{top:"Top",bottom:"Bottom"},langConfigConfirmRemove:e=>`Removing "${e.toUpperCase()}" will delete every ${e.toUpperCase()} translation. Confirm?`,langConfigConfirmYes:"Delete",langConfigConfirmNo:"Cancel"},optionsEditor:{optionsCount:e=>`Options (${e})`,noOptions:"No options yet \u2014 add one to populate the choices.",optionLabelPlaceholder:"Label",optionValuePlaceholder:"value",addOption:"+ Add option",optionLabelAria:e=>`Option ${e+1} label`,optionValueAria:e=>`Option ${e+1} value`,removeOptionAria:e=>`Remove option ${e+1}`},conditionBuilder:{conditionsCount:e=>`Conditions (${e})`,addCondition:"+ Add condition",rulesCount:e=>` (${e} rule${e===1?"":"s"})`,addRule:"+ Add rule",action:"Action",match:"Match",all:"ALL (AND)",any:"ANY (OR)",actions:{show:"Show when",hide:"Hide when",validate:"Validate that",require:"Require when",readonly:"Read-only when",setValue:"Set value when"},operators:{equals:"equals",not_equals:"not equals",greater_than:"greater than",less_than:"less than",greater_than_or_equal:"greater than or equal",less_than_or_equal:"less than or equal",contains:"contains",not_contains:"not contains",is_empty:"is empty",is_not_empty:"is not empty",starts_with:"starts with",ends_with:"ends with",in:"in",not_in:"not in",between:"between",regex:"matches regex"},variablePlaceholder:"Variable...",valuePlaceholder:"Value",errorMessage:"Error message",errorMessagePlaceholder:"Validation error message",targetVariableCode:"Target variable code",targetVariablePlaceholder:"TARGET_VAR",valueToSet:"Value to set",valueToSetPlaceholder:"Value",modalTitle:e=>`Conditions (${e})`,configureButton:e=>e===0?"Configure conditions":`Configure conditions (${e})`,applyButton:"Apply",cancelButton:"Cancel",closeButton:"Close",formulasSummary:"Configured formulas",noConditions:"No condition configured",modeVisual:"Visual builder",modeManual:"Manual input",manualWarning:"Complex expression \u2014 the visual builder cannot represent it. Stay in manual mode to edit it.",manualPlaceholder:"e.g. show(${AGE} >= 18)",manualHelp:"Functions: show / hide / setValue / validate / require / readonly / ConditionEval. Variables: ${CODE}.",validationExpression:"Validation expression",validationExpressionPlaceholder:'e.g. ${FIELD} != ""'},dataSource:{title:"Data Source Connector",connector:"Connector",none:"None (static options)",connectedTo:"Connected to:",dependencies:e=>`Dependencies (${e})`,selectVariable:"Select variable...",dependencyKeyPlaceholder:"Dependency key (e.g. parentId)",addDependency:"+ Add"},scopeManager:{dialogAriaLabel:"Scope management",title:"Scope management",closeAriaLabel:"Close",addScope:"+ Add a scope",newScopeName:"Scope name",newScopeCodePlaceholder:"CODE (auto)",manageVariables:"Manage variables \u2192",confirmDelete:"This scope is in use. Confirm deletion?",deleteConfirm:"Delete",deleteCancel:"Cancel",noScopes:"No scope defined yet. Add one below.",saveButton:"Save",cancelButton:"Cancel",deleteError:"Cannot delete scope",editScopeAria:e=>`Edit scope ${e}`,removeScopeAria:e=>`Delete scope ${e}`,manageVariablesAria:e=>`Manage variables in scope ${e}`},variableTemplateManager:{dialogAriaLabel:"Library variables",title:e=>`Variables \u2014 ${e}`,closeAriaLabel:"Close",addTemplate:"+ Add variable",code:"Code",name:"Name",type:"Type",description:"Description",placeholder:"Help text",required:"Required",readonly:"Read-only",hidden:"Hidden",options:"Options",expression:"Expression",dataSourceId:"Data source",advancedSection:"Advanced",validationRules:"Validation rules",conditions:"Conditions",style:"Style",confirmDelete:"Delete this library variable?",deleteConfirm:"Delete",deleteCancel:"Cancel",noTemplates:"No variable in this scope.",saveButton:"Save",cancelButton:"Cancel",duplicateCodeError:"This code already exists in the scope.",readonlyCode:"Code (immutable)",readonlyName:"Name (immutable)",editTemplateAria:e=>`Edit variable ${e}`,removeTemplateAria:e=>`Delete variable ${e}`,backToScopes:"\u2190 Back to scopes"},dataSourceManager:{dialogAriaLabel:"Data sources",title:"Data sources",closeAriaLabel:"Close",addButton:"+ Add a source",noSources:"No source in this scope yet. Add one below.",noScope:"This form has no scope \u2014 link one in the form properties.",scopeFilterLabel:"Scope",fieldCode:"Code",fieldName:"Name",fieldUrl:"URL",fieldMethod:"Method",fieldQueryParam:"Search param",fieldValueField:"Value field",fieldLabelField:"Label field",fieldHeaders:"Headers (encrypted)",headerKeyPlaceholder:"Key (e.g. Authorization)",headerValuePlaceholder:"Value",addHeader:"+ Add header",fieldDependencies:"Dependencies",dependencyParamPlaceholder:"URL param",dependencyVarPlaceholder:"Variable code",addDependency:"+ Add dependency",save:"Save",cancel:"Cancel",editAria:e=>`Edit source ${e}`,deleteAria:e=>`Delete source ${e}`,scopeBadge:e=>`Scope: ${e}`,confirmDelete:e=>`Delete source "${e}"?`},formTypesDialog:{dialogAriaLabel:"Form types",title:"Form types",closeAriaLabel:"Close",noTypes:"No form types yet. Add one below.",confirmDelete:"This type is used by the current form. Confirm deletion?",deleteConfirm:"Delete",deleteCancel:"Cancel",removeTypeAria:e=>`Remove ${e}`,newTypeNamePlaceholder:"New type name",newTypeCodePlaceholder:"CODE (auto)",addButton:"+ Add"},formEditor:{previewMissing:"Pass PreviewComponent prop to enable preview"}};var No=zr.createContext(xe);function We({labels:e,children:a}){return jsxRuntime.jsx(No.Provider,{value:e,children:a})}function w(){return zr.useContext(No)}function _e(e){if(e===null||typeof e!="object")return false;let a=Object.getPrototypeOf(e);return a===Object.prototype||a===null}function qe(e,a){return a?Bo(e,a):e}function Bo(e,a){if(!_e(e)||!_e(a))return a===void 0?e:a;let r={...e};for(let n of Object.keys(a)){let o=e[n],t=a[n];_e(o)&&_e(t)?r[n]=Bo(o,t):t!==void 0&&(r[n]=t);}return r}function _o({open:e,onClose:a}){let{formTypes:r,form:n,addFormType:o,updateFormType:t,removeFormType:i}=k(),l=w(),[d,s]=zr.useState(""),[f,v]=zr.useState(""),[y,p]=zr.useState(null),[g,c]=zr.useState(""),[u,b]=zr.useState(null);if(!e)return null;let x=()=>{d.trim()&&(o({name:d.trim(),code:f.trim()||d.trim().toUpperCase().replace(/\s+/g,"_")}),s(""),v(""));},h=(R,_)=>{p(R),c(_);},I=()=>{y&&g.trim()&&t(y,{name:g.trim()}),p(null),c("");},C=R=>{n.formTypeId===R?b(R):i(R);},A=()=>{u&&i(u),b(null);};return jsxRuntime.jsx("div",{role:"dialog","aria-modal":"true","aria-label":l.formTypesDialog.dialogAriaLabel,"data-testid":"form-types-dialog",onClick:a,style:{position:"fixed",inset:0,backgroundColor:"rgba(0, 0, 0, 0.3)",zIndex:50,display:"flex",alignItems:"center",justifyContent:"center",padding:"16px"},children:jsxRuntime.jsxs("div",{onClick:R=>R.stopPropagation(),style:{backgroundColor:"#fff",borderRadius:"8px",maxWidth:"32rem",width:"100%",maxHeight:"80vh",overflow:"auto",boxShadow:"0 10px 25px rgba(0,0,0,0.2)",fontFamily:"system-ui, -apple-system, sans-serif",color:"#1e293b"},children:[jsxRuntime.jsxs("header",{style:{padding:"16px",borderBottom:"1px solid #e2e8f0",display:"flex",justifyContent:"space-between",alignItems:"center"},children:[jsxRuntime.jsx("h3",{style:{fontSize:"16px",fontWeight:600,margin:0},children:l.formTypesDialog.title}),jsxRuntime.jsx("button",{type:"button",onClick:a,"aria-label":l.formTypesDialog.closeAriaLabel,"data-testid":"form-types-dialog-close-x",style:{background:"transparent",border:"none",fontSize:"18px",cursor:"pointer",color:"#64748b",padding:"4px 8px"},children:"\xD7"})]}),jsxRuntime.jsxs("section",{style:{padding:"16px"},children:[r.length===0&&jsxRuntime.jsx("div",{"data-testid":"form-types-empty",style:{fontSize:"13px",color:"#94a3b8",marginBottom:"12px"},children:l.formTypesDialog.noTypes}),jsxRuntime.jsx("ul",{style:{listStyle:"none",padding:0,margin:0,display:"flex",flexDirection:"column",gap:"6px"},children:r.map(R=>{let _=y===R.id,K=n.formTypeId===R.id,$=u===R.id;return jsxRuntime.jsxs("li",{"data-testid":`form-type-row-${R.id}`,style:{display:"flex",alignItems:"center",gap:"8px",padding:"8px",border:"1px solid #e2e8f0",borderRadius:"6px",backgroundColor:K?"#f1f5f9":"#fff"},children:[_?jsxRuntime.jsx("input",{type:"text",value:g,autoFocus:true,"data-testid":`form-type-name-edit-${R.id}`,onChange:Y=>c(Y.target.value),onBlur:I,onKeyDown:Y=>{Y.key==="Enter"&&I(),Y.key==="Escape"&&(p(null),c(""));},style:{flex:1,padding:"4px 8px",border:"1px solid #cbd5e1",borderRadius:"4px",fontSize:"13px",color:"#000",outline:"none"}}):jsxRuntime.jsx("span",{"data-testid":`form-type-name-${R.id}`,onClick:()=>h(R.id,R.name),style:{flex:1,fontSize:"13px",cursor:"pointer",padding:"4px 8px"},children:R.name}),jsxRuntime.jsx("span",{style:{fontSize:"11px",color:"#94a3b8",fontFamily:"monospace"},children:R.code}),jsxRuntime.jsx("button",{type:"button","aria-label":l.formTypesDialog.removeTypeAria(R.name),"data-testid":`form-type-remove-${R.id}`,onClick:()=>C(R.id),style:{width:"24px",height:"24px",border:"1px solid #e2e8f0",borderRadius:"4px",backgroundColor:"#fff",color:"#64748b",cursor:"pointer",fontSize:"14px",lineHeight:1},children:"\xD7"}),$&&jsxRuntime.jsxs("div",{"data-testid":`form-type-confirm-${R.id}`,style:{flexBasis:"100%",fontSize:"12px",color:"#b91c1c",backgroundColor:"#fef2f2",padding:"6px 8px",borderRadius:"4px",display:"flex",alignItems:"center",gap:"8px"},children:[jsxRuntime.jsx("span",{style:{flex:1},children:l.formTypesDialog.confirmDelete}),jsxRuntime.jsx("button",{type:"button","data-testid":`form-type-confirm-yes-${R.id}`,onClick:A,style:{padding:"4px 8px",border:"none",borderRadius:"4px",backgroundColor:"#ef4444",color:"#fff",fontSize:"12px",cursor:"pointer"},children:l.formTypesDialog.deleteConfirm}),jsxRuntime.jsx("button",{type:"button","data-testid":`form-type-confirm-no-${R.id}`,onClick:()=>b(null),style:{padding:"4px 8px",border:"1px solid #e2e8f0",borderRadius:"4px",backgroundColor:"#fff",color:"#334155",fontSize:"12px",cursor:"pointer"},children:l.formTypesDialog.deleteCancel})]})]},R.id)})})]}),jsxRuntime.jsxs("section",{style:{padding:"12px 16px",borderTop:"1px solid #e2e8f0",display:"flex",alignItems:"center",gap:"8px",backgroundColor:"#f8fafc"},children:[jsxRuntime.jsx("input",{type:"text",value:d,"data-testid":"form-types-new-name",placeholder:l.formTypesDialog.newTypeNamePlaceholder,onChange:R=>s(R.target.value),onKeyDown:R=>{R.key==="Enter"&&x();},style:{flex:1,padding:"6px 8px",border:"1px solid #cbd5e1",borderRadius:"4px",fontSize:"13px",color:"#000",outline:"none"}}),jsxRuntime.jsx("input",{type:"text",value:f,"data-testid":"form-types-new-code",placeholder:l.formTypesDialog.newTypeCodePlaceholder,onChange:R=>v(R.target.value),style:{width:"120px",padding:"6px 8px",border:"1px solid #cbd5e1",borderRadius:"4px",fontSize:"13px",color:"#000",outline:"none",fontFamily:"monospace"}}),jsxRuntime.jsx("button",{type:"button","data-testid":"form-types-add",onClick:x,disabled:d.trim()==="",style:{padding:"6px 12px",border:"none",borderRadius:"4px",backgroundColor:d.trim()===""?"#cbd5e1":"#2563eb",color:"#fff",fontSize:"13px",cursor:d.trim()===""?"not-allowed":"pointer"},children:l.formTypesDialog.addButton})]})]})})}function eo(){return {code:"",name:"",url:"",method:"GET",queryParam:"q",valueField:"",labelField:"",headers:[],dependencies:[]}}function Kt(e,a){return {code:e.code,name:typeof e.name=="string"?e.name:formCore.resolveLabel(e.name,a,a),url:e.url,method:e.method,queryParam:e.queryParam??"q",valueField:e.valueField,labelField:e.labelField,headers:Object.entries(e.headersOverride??{}).map(([r,n])=>({key:r,value:n})),dependencies:Object.entries(e.dependencies??{}).map(([r,n])=>({param:r,varCode:n}))}}function Yt(e){let a={};for(let{key:n,value:o}of e.headers)n.trim()&&(a[n.trim()]=o);let r={};for(let{param:n,varCode:o}of e.dependencies)n.trim()&&o.trim()&&(r[n.trim()]=o.trim());return {code:e.code.trim(),name:e.name,url:e.url.trim(),method:e.method,queryParam:e.queryParam.trim()||"q",valueField:e.valueField.trim(),labelField:e.labelField.trim(),...Object.keys(a).length>0?{headersOverride:a}:{},...Object.keys(r).length>0?{dependencies:r}:{}}}function oo({open:e,onClose:a}){let r=w(),{form:n,availableDataSources:o,availableScopes:t,adapter:i,setAvailableDataSources:l}=k(),d=n.langConfig?.defaultLang??formCore.DEFAULT_LANG_CONFIG.defaultLang,s=n.scopeIds??[],[f,v]=zr.useState(s[0]),[y,p]=zr.useState(null),[g,c]=zr.useState(eo()),[u,b]=zr.useState(false),[x,h]=zr.useState(false),I=zr.useMemo(()=>{let S=new Map;for(let E of t)S.set(E.id,E.code);return S},[t]),C=zr.useMemo(()=>f?o.filter(S=>S.scopeId===f):o,[o,f]);if(!e)return null;let A=()=>{b(true),p(null),c(eo());},R=S=>{b(false),p(S.id),c(Kt(S,d)),S.scopeId!==f&&v(S.scopeId);},_=()=>{p(null),b(false),c(eo());},K=S=>{l(S(o));},$=async()=>{if(!i)return;let S=f??s[0];if(S){h(true);try{let E=Yt(g);if(y&&i.updateDataSource){let N=await i.updateDataSource(y,E);K(z=>z.map(m=>m.id===y?N:m));}else if(!y&&i.createDataSource){let N=await i.createDataSource(S,E);K(z=>[...z,N]);}_();}finally{h(false);}}},Y=async S=>{if(i?.deleteDataSource&&!(typeof window<"u"&&!window.confirm(r.dataSourceManager.confirmDelete(S.code)))){h(true);try{await i.deleteDataSource(S.id),K(E=>E.filter(N=>N.id!==S.id)),y===S.id&&_();}finally{h(false);}}};return jsxRuntime.jsx("div",{role:"dialog","aria-modal":"true","aria-label":r.dataSourceManager.dialogAriaLabel,"data-testid":"datasource-manager-dialog",onClick:a,style:{position:"fixed",inset:0,backgroundColor:"rgba(0, 0, 0, 0.3)",zIndex:50,display:"flex",alignItems:"center",justifyContent:"center",padding:"16px"},children:jsxRuntime.jsxs("div",{onClick:S=>S.stopPropagation(),style:{backgroundColor:"#fff",borderRadius:"8px",maxWidth:"40rem",width:"100%",maxHeight:"90vh",display:"flex",flexDirection:"column"},children:[jsxRuntime.jsxs("div",{style:{padding:"14px 16px",borderBottom:"1px solid #e2e8f0",display:"flex",alignItems:"center",justifyContent:"space-between"},children:[jsxRuntime.jsx("h2",{style:{margin:0,fontSize:"16px",fontWeight:600,color:"#0f172a"},children:r.dataSourceManager.title}),jsxRuntime.jsx("button",{type:"button",onClick:a,"aria-label":r.dataSourceManager.closeAriaLabel,style:{border:"none",background:"transparent",fontSize:"20px",cursor:"pointer",color:"#64748b"},children:"\u2715"})]}),jsxRuntime.jsxs("div",{style:{flex:1,overflowY:"auto",padding:"12px 16px"},children:[s.length===0&&jsxRuntime.jsx("div",{"data-testid":"datasource-manager-no-scope",style:Ho,children:r.dataSourceManager.noScope}),s.length>1&&jsxRuntime.jsxs("div",{style:{marginBottom:"12px"},children:[jsxRuntime.jsx("label",{style:Ge,children:r.dataSourceManager.scopeFilterLabel}),jsxRuntime.jsx("select",{"data-testid":"datasource-manager-scope-filter",value:f??"",onChange:S=>v(S.target.value||void 0),style:qo,children:s.map(S=>jsxRuntime.jsx("option",{value:S,children:I.get(S)??S},S))})]}),s.length>0&&C.length===0&&!u&&jsxRuntime.jsx("div",{"data-testid":"datasource-manager-empty",style:Ho,children:r.dataSourceManager.noSources}),jsxRuntime.jsx("ul",{style:{listStyle:"none",margin:0,padding:0,display:"flex",flexDirection:"column",gap:"6px"},children:C.map(S=>jsxRuntime.jsxs("li",{"data-testid":`datasource-item-${S.code}`,style:{border:"1px solid #e2e8f0",borderRadius:"6px",padding:"8px 10px",display:"flex",alignItems:"center",gap:"8px",backgroundColor:y===S.id?"#f0fdf4":"#fff"},children:[jsxRuntime.jsx("span",{style:{fontSize:"13px",fontWeight:600,color:"#0f172a"},children:S.code}),jsxRuntime.jsx("span",{style:{fontSize:"11px",color:"#64748b"},children:S.method}),jsxRuntime.jsx("span",{style:{flex:1,fontSize:"11px",color:"#475569",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:S.url}),I.has(S.scopeId)&&jsxRuntime.jsx("span",{style:{fontSize:"10px",color:"#0891b2",backgroundColor:"#ecfeff",padding:"2px 6px",borderRadius:"4px"},children:r.dataSourceManager.scopeBadge(I.get(S.scopeId))}),jsxRuntime.jsx("button",{type:"button","data-testid":`datasource-edit-${S.code}`,"aria-label":r.dataSourceManager.editAria(S.code),onClick:()=>R(S),disabled:x,style:He,children:"\u270F"}),jsxRuntime.jsx("button",{type:"button","data-testid":`datasource-delete-${S.code}`,"aria-label":r.dataSourceManager.deleteAria(S.code),onClick:()=>Y(S),disabled:x,style:{...He,color:"#ef4444"},children:"\xD7"})]},S.id))}),s.length>0&&!u&&!y&&jsxRuntime.jsx("button",{type:"button","data-testid":"datasource-add-button",onClick:A,style:{marginTop:"12px",padding:"6px 12px",border:"1px solid #2563eb",borderRadius:"6px",color:"#2563eb",backgroundColor:"#fff",fontSize:"13px",fontWeight:500,cursor:"pointer"},children:r.dataSourceManager.addButton}),(u||y)&&jsxRuntime.jsxs("form",{"data-testid":"datasource-form",onSubmit:S=>{S.preventDefault(),$();},style:{marginTop:"12px",padding:"12px",border:"1px solid #cbd5e1",borderRadius:"6px",backgroundColor:"#f8fafc",display:"flex",flexDirection:"column",gap:"8px"},children:[jsxRuntime.jsx(Re,{label:r.dataSourceManager.fieldCode,children:jsxRuntime.jsx("input",{required:true,"data-testid":"datasource-form-code",value:g.code,onChange:S=>c({...g,code:S.target.value}),style:de})}),jsxRuntime.jsx(Re,{label:r.dataSourceManager.fieldName,children:jsxRuntime.jsx("input",{"data-testid":"datasource-form-name",value:g.name,onChange:S=>c({...g,name:S.target.value}),style:de})}),jsxRuntime.jsx(Re,{label:r.dataSourceManager.fieldUrl,children:jsxRuntime.jsx("input",{required:true,type:"url","data-testid":"datasource-form-url",value:g.url,onChange:S=>c({...g,url:S.target.value}),style:de})}),jsxRuntime.jsxs("div",{style:{display:"flex",gap:"8px"},children:[jsxRuntime.jsx(Re,{label:r.dataSourceManager.fieldMethod,style:{flex:1},children:jsxRuntime.jsxs("select",{"data-testid":"datasource-form-method",value:g.method,onChange:S=>c({...g,method:S.target.value}),style:qo,children:[jsxRuntime.jsx("option",{value:"GET",children:"GET"}),jsxRuntime.jsx("option",{value:"POST",children:"POST"})]})}),jsxRuntime.jsx(Re,{label:r.dataSourceManager.fieldQueryParam,style:{flex:1},children:jsxRuntime.jsx("input",{"data-testid":"datasource-form-queryparam",value:g.queryParam,onChange:S=>c({...g,queryParam:S.target.value}),style:de})})]}),jsxRuntime.jsxs("div",{style:{display:"flex",gap:"8px"},children:[jsxRuntime.jsx(Re,{label:r.dataSourceManager.fieldValueField,style:{flex:1},children:jsxRuntime.jsx("input",{required:true,"data-testid":"datasource-form-valuefield",value:g.valueField,onChange:S=>c({...g,valueField:S.target.value}),style:de})}),jsxRuntime.jsx(Re,{label:r.dataSourceManager.fieldLabelField,style:{flex:1},children:jsxRuntime.jsx("input",{required:true,"data-testid":"datasource-form-labelfield",value:g.labelField,onChange:S=>c({...g,labelField:S.target.value}),style:de})})]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{style:Ge,children:r.dataSourceManager.fieldHeaders}),g.headers.map((S,E)=>jsxRuntime.jsxs("div",{style:{display:"flex",gap:"4px",marginBottom:"4px"},children:[jsxRuntime.jsx("input",{placeholder:r.dataSourceManager.headerKeyPlaceholder,value:S.key,onChange:N=>{let z=[...g.headers];z[E]={...z[E],key:N.target.value},c({...g,headers:z});},style:{...de,flex:1}}),jsxRuntime.jsx("input",{type:"password",placeholder:r.dataSourceManager.headerValuePlaceholder,value:S.value,onChange:N=>{let z=[...g.headers];z[E]={...z[E],value:N.target.value},c({...g,headers:z});},style:{...de,flex:1}}),jsxRuntime.jsx("button",{type:"button",onClick:()=>c({...g,headers:g.headers.filter((N,z)=>z!==E)}),style:{...He,color:"#ef4444"},children:"\xD7"})]},E)),jsxRuntime.jsx("button",{type:"button","data-testid":"datasource-form-add-header",onClick:()=>c({...g,headers:[...g.headers,{key:"",value:""}]}),style:Ue,children:r.dataSourceManager.addHeader})]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{style:Ge,children:r.dataSourceManager.fieldDependencies}),g.dependencies.map((S,E)=>jsxRuntime.jsxs("div",{style:{display:"flex",gap:"4px",marginBottom:"4px"},children:[jsxRuntime.jsx("input",{placeholder:r.dataSourceManager.dependencyParamPlaceholder,value:S.param,onChange:N=>{let z=[...g.dependencies];z[E]={...z[E],param:N.target.value},c({...g,dependencies:z});},style:{...de,flex:1}}),jsxRuntime.jsx("span",{style:{alignSelf:"center",color:"#94a3b8"},children:"\u2192"}),jsxRuntime.jsx("input",{placeholder:r.dataSourceManager.dependencyVarPlaceholder,value:S.varCode,onChange:N=>{let z=[...g.dependencies];z[E]={...z[E],varCode:N.target.value},c({...g,dependencies:z});},style:{...de,flex:1}}),jsxRuntime.jsx("button",{type:"button",onClick:()=>c({...g,dependencies:g.dependencies.filter((N,z)=>z!==E)}),style:{...He,color:"#ef4444"},children:"\xD7"})]},E)),jsxRuntime.jsx("button",{type:"button","data-testid":"datasource-form-add-dependency",onClick:()=>c({...g,dependencies:[...g.dependencies,{param:"",varCode:""}]}),style:Ue,children:r.dataSourceManager.addDependency})]}),jsxRuntime.jsxs("div",{style:{display:"flex",justifyContent:"flex-end",gap:"8px",marginTop:"8px"},children:[jsxRuntime.jsx("button",{type:"button","data-testid":"datasource-form-cancel",onClick:_,disabled:x,style:Ue,children:r.dataSourceManager.cancel}),jsxRuntime.jsx("button",{type:"submit","data-testid":"datasource-form-save",disabled:x,style:{...Ue,backgroundColor:"#2563eb",color:"#fff",border:"none"},children:r.dataSourceManager.save})]})]})]})]})})}function Re({label:e,children:a,style:r}){return jsxRuntime.jsxs("div",{style:r,children:[jsxRuntime.jsx("label",{style:Ge,children:e}),a]})}var Ge={display:"block",fontSize:"11px",fontWeight:500,color:"#475569",marginBottom:"2px"},de={width:"100%",boxSizing:"border-box",padding:"4px 6px",border:"1px solid #cbd5e1",borderRadius:"4px",fontSize:"12px",color:"#0f172a",outline:"none",backgroundColor:"#fff"},qo={...de},He={border:"none",background:"transparent",cursor:"pointer",fontSize:"14px",color:"#64748b",padding:"2px 4px"},Ue={padding:"4px 10px",border:"1px solid #cbd5e1",borderRadius:"4px",fontSize:"12px",color:"#334155",backgroundColor:"#fff",cursor:"pointer"},Ho={fontSize:"12px",color:"#94a3b8",textAlign:"center",padding:"16px 0"};function Go(e,a,r="fr"){if(e==null)return "";if(typeof e=="string")return e;let n=e[a];if(typeof n=="string"&&n!=="")return n;let o=e[r];if(typeof o=="string"&&o!=="")return o;for(let t of Object.values(e))if(typeof t=="string"&&t!=="")return t;return ""}var je={width:"100%",padding:"6px 8px",border:"1px solid #e2e8f0",borderRadius:"4px",fontSize:"13px",color:"#334155",outline:"none",boxSizing:"border-box"},Zt={padding:"4px 10px",border:"1px solid #e2e8f0",borderBottom:"none",borderTopLeftRadius:"4px",borderTopRightRadius:"4px",fontSize:"11px",fontWeight:600,cursor:"pointer",textTransform:"uppercase",letterSpacing:"0.5px",minWidth:"38px"};function Uo(e,a,r){if(e==null)return "";if(typeof e=="string")return a===r?e:"";let n=e[a];return typeof n=="string"?n:""}function Oe({value:e,onChange:a,availableLangs:r,defaultLang:n="fr",placeholder:o,multiline:t,testIdPrefix:i,disabled:l}){let d=r.length>0?r:[n],s=d.length>1,[f,v]=zr.useState(d[0]),y=w();d.includes(f)||v(d[0]);let p=(c,u)=>{if(!s){a(u);return}let b=typeof e=="string"?{[n]:e}:{...e??{}};b[c]=u,a(b);};if(!s){let c=d[0],u=Uo(e,c,n);return t?jsxRuntime.jsx("textarea",{value:u,rows:3,placeholder:o,disabled:l,"data-testid":i?`${i}-${c}`:void 0,onChange:b=>p(c,b.target.value),style:je}):jsxRuntime.jsx("input",{type:"text",value:u,placeholder:o,disabled:l,"data-testid":i?`${i}-${c}`:void 0,onChange:b=>p(c,b.target.value),style:je})}let g=Uo(e,f,n);return jsxRuntime.jsxs("div",{"data-testid":i,style:{display:"flex",flexDirection:"column"},children:[jsxRuntime.jsx("div",{role:"tablist","aria-label":y.properties.title,style:{display:"flex",gap:"2px"},children:d.map(c=>{let u=c===f;return jsxRuntime.jsx("button",{type:"button",role:"tab","aria-selected":u,"data-testid":i?`${i}-tab-${c}`:void 0,onClick:()=>v(c),style:{...Zt,backgroundColor:u?"#fff":"#f1f5f9",color:u?"#2563eb":"#64748b",borderColor:"#e2e8f0"},children:c},c)})}),t?jsxRuntime.jsx("textarea",{value:g,rows:3,placeholder:o,disabled:l,"data-testid":i?`${i}-${f}`:void 0,onChange:c=>p(f,c.target.value),style:{...je,borderTopLeftRadius:0}}):jsxRuntime.jsx("input",{type:"text",value:g,placeholder:o,disabled:l,"data-testid":i?`${i}-${f}`:void 0,onChange:c=>p(f,c.target.value),style:{...je,borderTopLeftRadius:0}})]})}function Z({label:e,value:a,onChange:r,placeholder:n,multiline:o,testIdPrefix:t,disabled:i}){let d=k(s=>s.form).langConfig??formCore.DEFAULT_LANG_CONFIG;return jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{style:{display:"block",fontSize:"12px",fontWeight:500,color:"#64748b",marginBottom:"4px"},children:e}),jsxRuntime.jsx(Oe,{value:a,onChange:r,availableLangs:d.availableLangs,defaultLang:d.defaultLang,placeholder:n,multiline:o,testIdPrefix:t,disabled:i})]})}function oa(e){return e.normalize("NFD").replace(/[̀-ͯ]/g,"").toLowerCase().trim().replace(/\s+/g,"_").replace(/[^a-z0-9_-]/g,"")}function Jo(e){return typeof e=="string"?e:e==null?"":String(e)}function to(e,a){if(e==null)return "";if(typeof e=="string")return e;let r=e[a];if(typeof r=="string"&&r!=="")return r;for(let n of Object.values(e))if(typeof n=="string"&&n!=="")return n;return ""}function Je({options:e,onChange:a,disabled:r}){let n=w(),t=k(c=>c.form).langConfig??formCore.DEFAULT_LANG_CONFIG,i=(c,u)=>{let b=e.map((x,h)=>h===c?{...x,...u}:x);a(b);},l=(c,u)=>{let b=e[c],x=Jo(b.value),h=to(b.label,t.defaultLang),I=to(u,t.defaultLang);x===""&&h===""&&I!==""?i(c,{label:u,value:oa(I)}):i(c,{label:u});},d=(c,u)=>{i(c,{value:u});},s=()=>{a([...e,{label:"",value:""}]);},f=c=>{a(e.filter((u,b)=>b!==c));},v={display:"block",fontSize:"12px",fontWeight:500,color:"#64748b",marginBottom:"4px"},y={flex:1,padding:"6px 8px",borderRadius:"4px",fontSize:"13px",color:"#000",outline:"none"},p="1px solid #e2e8f0",g="1px solid #ef4444";return jsxRuntime.jsxs("div",{"data-testid":"options-editor",children:[jsxRuntime.jsx("label",{style:v,children:n.optionsEditor.optionsCount(e.length)}),e.length===0&&jsxRuntime.jsx("div",{"data-testid":"options-editor-empty",style:{fontSize:"12px",color:"#94a3b8",marginBottom:"8px"},children:n.optionsEditor.noOptions}),jsxRuntime.jsx("div",{style:{display:"flex",flexDirection:"column",gap:"6px"},children:e.map((c,u)=>{let b=to(c.label,t.defaultLang),x=Jo(c.value),h=b.trim()==="",I=x.trim()==="";return jsxRuntime.jsxs("div",{"data-testid":`option-row-${u}`,style:{display:"flex",alignItems:"flex-start",gap:"6px"},children:[jsxRuntime.jsx("div",{"aria-label":n.optionsEditor.optionLabelAria(u),"data-testid":`option-label-${u}`,style:{flex:1,border:h?g:p,borderRadius:"4px"},children:jsxRuntime.jsx(Oe,{value:c.label,onChange:C=>l(u,C),availableLangs:t.availableLangs,defaultLang:t.defaultLang,placeholder:n.optionsEditor.optionLabelPlaceholder,disabled:r,testIdPrefix:`option-label-input-${u}`})}),jsxRuntime.jsx("input",{type:"text","aria-label":n.optionsEditor.optionValueAria(u),"data-testid":`option-value-${u}`,value:x,placeholder:n.optionsEditor.optionValuePlaceholder,disabled:r,onChange:C=>d(u,C.target.value),style:{...y,border:I?g:p,maxWidth:"40%"}}),jsxRuntime.jsx("button",{type:"button","aria-label":n.optionsEditor.removeOptionAria(u),"data-testid":`option-remove-${u}`,onClick:()=>f(u),disabled:r,style:{width:"24px",height:"24px",border:"1px solid #e2e8f0",borderRadius:"4px",backgroundColor:"#fff",color:"#64748b",cursor:r?"not-allowed":"pointer",lineHeight:1,fontSize:"14px"},children:"\xD7"})]},u)})}),jsxRuntime.jsx("button",{type:"button","data-testid":"options-editor-add",onClick:s,disabled:r,style:{marginTop:"8px",padding:"6px 10px",border:"1px dashed #94a3b8",borderRadius:"4px",backgroundColor:"transparent",color:"#2563eb",fontSize:"12px",cursor:r?"not-allowed":"pointer"},children:n.optionsEditor.addOption})]})}var ia=["text","textarea","number","date","datetime","time","select","multiselect","checkbox","radio","listradio","file","image","photo","gps","rating","email","calculated","hidden","label","panel","richtext"],Yo=["select","multiselect","radio","checkbox","listradio"],Xo=["select","multiselect"];function ro(){return {code:"",name:"",variableType:"text",description:void 0,placeholder:void 0,isRequired:false,isReadonly:false,isHidden:false,options:[],expression:"",dataSourceId:"",validationRulesJson:"",conditionsJson:"",styleJson:""}}function no(e){if(e==null)return "";try{return JSON.stringify(e,null,2)}catch{return ""}}function io(e){let a=e.trim();if(!a)return {ok:true,value:void 0};try{return {ok:!0,value:JSON.parse(a)}}catch{return {ok:false,value:void 0}}}function la(e){return {code:e.code,name:e.name,variableType:e.variableType,description:e.description,placeholder:e.placeholder,isRequired:e.isRequired??false,isReadonly:e.isReadonly??false,isHidden:e.isHidden??false,options:e.options??[],expression:e.expression??"",dataSourceId:e.dataSourceId??"",validationRulesJson:no(e.validationRules),conditionsJson:no(e.conditions),styleJson:no(e.style)}}function co({open:e,onClose:a,scopeId:r,scopeName:n}){let o=w(),t=k(m=>m.adapter),i=k(m=>m.availableDataSources),d=k(m=>m.form).langConfig?.defaultLang??formCore.DEFAULT_LANG_CONFIG.defaultLang,[s,f]=zr.useState([]),[v,y]=zr.useState(null),[p,g]=zr.useState(false),[c,u]=zr.useState(ro()),[b,x]=zr.useState(null),[h,I]=zr.useState(false),[C,A]=zr.useState(null),[R,_]=zr.useState(false);zr.useEffect(()=>{if(!e)return;if(!t?.loadTemplates){f([]);return}let m=false;return t.loadTemplates(r).then(D=>{m||f(D);}).catch(()=>{m||f([]);}),()=>{m=true;}},[e,r,t]);let K=zr.useMemo(()=>i.map(m=>({id:m.code,label:typeof m.name=="string"?m.name:formCore.resolveLabel(m.name,d,d)})),[i,d]),$=zr.useCallback(()=>{y(null),g(false),u(ro()),A(null),_(false);},[]);if(!e)return null;let Y=()=>{g(true),y(null),u(ro()),A(null),_(false);},S=m=>{g(false),y(m.id),u(la(m)),A(null),_(false);},E=()=>{let m=c.code.trim();if(!m)return {error:"code"};let D=c.expression.trim(),V=c.dataSourceId.trim(),X=io(c.validationRulesJson);if(!X.ok)return {error:"validationRules"};let j=io(c.conditionsJson);if(!j.ok)return {error:"conditions"};let ye=io(c.styleJson);return ye.ok?{code:m,name:c.name,variableType:c.variableType,description:c.description,placeholder:c.placeholder,isRequired:c.isRequired,isReadonly:c.isReadonly,isHidden:c.isHidden,...Yo.includes(c.variableType)?{options:c.options}:{},...c.variableType==="calculated"&&D?{expression:D}:{},...Xo.includes(c.variableType)&&V?{dataSourceId:V}:{},...X.value!==void 0?{validationRules:X.value}:{},...j.value!==void 0?{conditions:j.value}:{},...ye.value!==void 0?{style:ye.value}:{}}:{error:"style"}},N=async()=>{if(!t)return;let m=E();if("error"in m){A(m.error);return}I(true),A(null);try{if(v&&t.updateTemplate){let{code:D,name:V,...X}=m,j=await t.updateTemplate(v,X);f(ye=>ye.map(zo=>zo.id===v?j:zo)),$();}else if(!v&&t.createTemplate){if(s.some(V=>V.code===m.code)){A("duplicate-code");return}let D=await t.createTemplate(r,m);f(V=>[...V,D]),$();}}catch(D){let V=D instanceof Error?D.message:String(D);/already exists/i.test(V)?A("duplicate-code"):A(V);}finally{I(false);}},z=async()=>{if(!b||!t?.deleteTemplate)return;let m=b;I(true);try{await t.deleteTemplate(m),f(D=>D.filter(V=>V.id!==m)),v===m&&$(),x(null);}finally{I(false);}};return jsxRuntime.jsx("div",{role:"dialog","aria-modal":"true","aria-label":o.variableTemplateManager.dialogAriaLabel,"data-testid":"template-manager-dialog",onClick:a,style:{position:"fixed",inset:0,backgroundColor:"rgba(0, 0, 0, 0.4)",zIndex:60,display:"flex",alignItems:"center",justifyContent:"center",padding:"16px"},children:jsxRuntime.jsxs("div",{onClick:m=>m.stopPropagation(),style:{backgroundColor:"#fff",borderRadius:"8px",maxWidth:"44rem",width:"100%",maxHeight:"90vh",display:"flex",flexDirection:"column",boxShadow:"0 10px 25px rgba(0,0,0,0.2)",fontFamily:"system-ui, -apple-system, sans-serif",color:"#1e293b"},children:[jsxRuntime.jsxs("header",{style:{padding:"14px 16px",borderBottom:"1px solid #e2e8f0",display:"flex",alignItems:"center",gap:"8px"},children:[jsxRuntime.jsx("button",{type:"button",onClick:a,"data-testid":"template-manager-back",style:{padding:"4px 8px",border:"1px solid #e2e8f0",borderRadius:"4px",background:"#fff",fontSize:"12px",cursor:"pointer",color:"#334155"},children:o.variableTemplateManager.backToScopes}),jsxRuntime.jsx("h3",{style:{flex:1,fontSize:"16px",fontWeight:600,margin:0},children:o.variableTemplateManager.title(n)}),jsxRuntime.jsx("button",{type:"button",onClick:a,"aria-label":o.variableTemplateManager.closeAriaLabel,"data-testid":"template-manager-close-x",style:{background:"transparent",border:"none",fontSize:"18px",cursor:"pointer",color:"#64748b",padding:"4px 8px"},children:"\xD7"})]}),jsxRuntime.jsxs("section",{style:{flex:1,overflowY:"auto",padding:"12px 16px"},children:[s.length===0&&!p&&jsxRuntime.jsx("div",{"data-testid":"template-manager-empty",style:{fontSize:"13px",color:"#94a3b8",padding:"12px 0"},children:o.variableTemplateManager.noTemplates}),jsxRuntime.jsx("ul",{style:{listStyle:"none",padding:0,margin:0,display:"flex",flexDirection:"column",gap:"6px"},children:s.map(m=>{let D=typeof m.name=="string"?m.name:formCore.resolveLabel(m.name,d,d),V=b===m.id;return jsxRuntime.jsxs("li",{"data-testid":`template-row-${m.code}`,style:{display:"flex",alignItems:"center",gap:"8px",padding:"8px",border:"1px solid #e2e8f0",borderRadius:"6px",backgroundColor:v===m.id?"#f0fdf4":"#fff",flexWrap:"wrap"},children:[jsxRuntime.jsx("span",{style:{fontSize:"13px",fontWeight:600,color:"#0f172a"},children:m.code}),jsxRuntime.jsx("span",{style:{fontSize:"12px",color:"#475569",flex:1},children:D}),jsxRuntime.jsx("span",{style:{fontSize:"11px",color:"#64748b",fontFamily:"monospace"},children:m.variableType}),jsxRuntime.jsx("button",{type:"button","data-testid":`template-edit-${m.code}`,"aria-label":o.variableTemplateManager.editTemplateAria(m.code),onClick:()=>S(m),disabled:h,style:Ke,children:"\u270F"}),jsxRuntime.jsx("button",{type:"button","data-testid":`template-remove-${m.code}`,"aria-label":o.variableTemplateManager.removeTemplateAria(m.code),onClick:()=>x(m.id),disabled:h,style:{...Ke,color:"#ef4444"},children:"\xD7"}),V&&jsxRuntime.jsxs("div",{"data-testid":`template-confirm-${m.code}`,style:{flexBasis:"100%",fontSize:"12px",color:"#b91c1c",backgroundColor:"#fef2f2",padding:"6px 8px",borderRadius:"4px",display:"flex",alignItems:"center",gap:"8px"},children:[jsxRuntime.jsx("span",{style:{flex:1},children:o.variableTemplateManager.confirmDelete}),jsxRuntime.jsx("button",{type:"button","data-testid":`template-confirm-yes-${m.code}`,onClick:z,disabled:h,style:{...Ke,backgroundColor:"#ef4444",color:"#fff",border:"none",padding:"4px 8px"},children:o.variableTemplateManager.deleteConfirm}),jsxRuntime.jsx("button",{type:"button","data-testid":`template-confirm-no-${m.code}`,onClick:()=>x(null),disabled:h,style:{...Ke,padding:"4px 8px"},children:o.variableTemplateManager.deleteCancel})]})]},m.id)})}),!p&&!v&&jsxRuntime.jsx("button",{type:"button","data-testid":"template-add-button",onClick:Y,disabled:h,style:{marginTop:"12px",padding:"6px 12px",border:"1px solid #2563eb",borderRadius:"6px",color:"#2563eb",backgroundColor:"#fff",fontSize:"13px",fontWeight:500,cursor:"pointer"},children:o.variableTemplateManager.addTemplate}),(p||v)&&jsxRuntime.jsxs("form",{"data-testid":"template-form",onSubmit:m=>{m.preventDefault(),N();},style:{marginTop:"12px",padding:"12px",border:"1px solid #cbd5e1",borderRadius:"6px",backgroundColor:"#f8fafc",display:"flex",flexDirection:"column",gap:"8px"},children:[jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{style:ke,children:v?o.variableTemplateManager.readonlyCode:o.variableTemplateManager.code}),jsxRuntime.jsx("input",{type:"text","data-testid":"template-form-code",value:c.code,onChange:m=>u({...c,code:m.target.value}),readOnly:!!v,disabled:!!v||h,required:true,style:{...Ae,fontFamily:"monospace"}}),C==="duplicate-code"&&jsxRuntime.jsx("div",{"data-testid":"template-error-duplicate-code",style:po,children:o.variableTemplateManager.duplicateCodeError})]}),v?jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{style:ke,children:o.variableTemplateManager.readonlyName}),jsxRuntime.jsx("div",{"data-testid":"template-form-name-readonly",style:{...Ae,backgroundColor:"#f1f5f9",color:"#475569"},children:typeof c.name=="string"?c.name:formCore.resolveLabel(c.name,d,d)})]}):jsxRuntime.jsx(Z,{label:o.variableTemplateManager.name,value:c.name,onChange:m=>u({...c,name:m}),testIdPrefix:"template-form-name",disabled:h}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{style:ke,children:o.variableTemplateManager.type}),jsxRuntime.jsx("select",{"data-testid":"template-form-type",value:c.variableType,onChange:m=>u({...c,variableType:m.target.value}),disabled:h,style:Ae,children:ia.map(m=>jsxRuntime.jsx("option",{value:m,children:m},m))})]}),jsxRuntime.jsx(Z,{label:o.variableTemplateManager.description,value:c.description,onChange:m=>u({...c,description:m}),testIdPrefix:"template-form-description",disabled:h}),jsxRuntime.jsx(Z,{label:o.variableTemplateManager.placeholder,value:c.placeholder,onChange:m=>u({...c,placeholder:m}),testIdPrefix:"template-form-placeholder",disabled:h}),jsxRuntime.jsxs("div",{style:{display:"flex",gap:"12px",flexWrap:"wrap"},children:[jsxRuntime.jsxs("label",{style:so,children:[jsxRuntime.jsx("input",{type:"checkbox","data-testid":"template-form-required",checked:c.isRequired,onChange:m=>u({...c,isRequired:m.target.checked}),disabled:h}),o.variableTemplateManager.required]}),jsxRuntime.jsxs("label",{style:so,children:[jsxRuntime.jsx("input",{type:"checkbox","data-testid":"template-form-readonly",checked:c.isReadonly,onChange:m=>u({...c,isReadonly:m.target.checked}),disabled:h}),o.variableTemplateManager.readonly]}),jsxRuntime.jsxs("label",{style:so,children:[jsxRuntime.jsx("input",{type:"checkbox","data-testid":"template-form-hidden",checked:c.isHidden,onChange:m=>u({...c,isHidden:m.target.checked}),disabled:h}),o.variableTemplateManager.hidden]})]}),Yo.includes(c.variableType)&&jsxRuntime.jsxs("div",{"data-testid":"template-form-options",children:[jsxRuntime.jsx("label",{style:ke,children:o.variableTemplateManager.options}),jsxRuntime.jsx(Je,{options:c.options,onChange:m=>u({...c,options:m}),disabled:h})]}),c.variableType==="calculated"&&jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{style:ke,children:o.variableTemplateManager.expression}),jsxRuntime.jsx("input",{type:"text","data-testid":"template-form-expression",value:c.expression,onChange:m=>u({...c,expression:m.target.value}),disabled:h,style:{...Ae,fontFamily:"monospace"}})]}),Xo.includes(c.variableType)&&jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{style:ke,children:o.variableTemplateManager.dataSourceId}),jsxRuntime.jsxs("select",{"data-testid":"template-form-datasource",value:c.dataSourceId,onChange:m=>u({...c,dataSourceId:m.target.value}),disabled:h,style:Ae,children:[jsxRuntime.jsx("option",{value:"",children:"\u2014"}),K.map(m=>jsxRuntime.jsxs("option",{value:m.id,children:[m.label," (",m.id,")"]},m.id))]})]}),jsxRuntime.jsxs("div",{style:{borderTop:"1px solid #e2e8f0",paddingTop:"8px"},children:[jsxRuntime.jsxs("button",{type:"button","data-testid":"template-form-advanced-toggle",onClick:()=>_(m=>!m),style:{border:"none",background:"transparent",cursor:"pointer",color:"#475569",fontSize:"12px",fontWeight:600,padding:0},children:[R?"\u25BC":"\u25B6"," ",o.variableTemplateManager.advancedSection]}),R&&jsxRuntime.jsxs("div",{"data-testid":"template-form-advanced",style:{display:"flex",flexDirection:"column",gap:"6px",marginTop:"6px"},children:[jsxRuntime.jsx(lo,{label:o.variableTemplateManager.validationRules,testId:"template-form-validation-rules",value:c.validationRulesJson,onChange:m=>u({...c,validationRulesJson:m}),error:C==="validationRules",disabled:h}),jsxRuntime.jsx(lo,{label:o.variableTemplateManager.conditions,testId:"template-form-conditions",value:c.conditionsJson,onChange:m=>u({...c,conditionsJson:m}),error:C==="conditions",disabled:h}),jsxRuntime.jsx(lo,{label:o.variableTemplateManager.style,testId:"template-form-style",value:c.styleJson,onChange:m=>u({...c,styleJson:m}),error:C==="style",disabled:h})]})]}),C&&!["duplicate-code","validationRules","conditions","style"].includes(C)&&jsxRuntime.jsx("div",{"data-testid":"template-form-error",style:po,children:C}),jsxRuntime.jsxs("div",{style:{display:"flex",justifyContent:"flex-end",gap:"8px",marginTop:"8px"},children:[jsxRuntime.jsx("button",{type:"button","data-testid":"template-form-cancel",onClick:$,disabled:h,style:Qo,children:o.variableTemplateManager.cancelButton}),jsxRuntime.jsx("button",{type:"submit","data-testid":"template-form-save",disabled:h||!c.code.trim(),style:{...Qo,backgroundColor:"#2563eb",color:"#fff",border:"none"},children:o.variableTemplateManager.saveButton})]})]})]})]})})}function lo({label:e,testId:a,value:r,onChange:n,error:o,disabled:t}){return jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{style:ke,children:e}),jsxRuntime.jsx("textarea",{"data-testid":a,value:r,onChange:i=>n(i.target.value),disabled:t,rows:3,style:{...Ae,fontFamily:"monospace",fontSize:"12px",resize:"vertical",borderColor:o?"#ef4444":"#cbd5e1"}}),o&&jsxRuntime.jsx("div",{"data-testid":`${a}-error`,style:po,children:"JSON"})]})}var ke={display:"block",fontSize:"11px",fontWeight:500,color:"#475569",marginBottom:"2px"},so={display:"inline-flex",alignItems:"center",gap:"4px",fontSize:"12px",color:"#334155"},Ae={width:"100%",boxSizing:"border-box",padding:"4px 6px",border:"1px solid #cbd5e1",borderRadius:"4px",fontSize:"12px",color:"#0f172a",outline:"none",backgroundColor:"#fff"},Ke={border:"1px solid #e2e8f0",background:"#fff",cursor:"pointer",fontSize:"13px",color:"#64748b",padding:"2px 6px",borderRadius:"4px"},Qo={padding:"4px 10px",border:"1px solid #cbd5e1",borderRadius:"4px",fontSize:"12px",color:"#334155",backgroundColor:"#fff",cursor:"pointer"},po={fontSize:"11px",color:"#b91c1c",marginTop:"2px"};function fo({open:e,onClose:a}){let r=w(),n=k(m=>m.adapter),o=k(m=>m.availableScopes),t=k(m=>m.setAvailableScopes),l=k(m=>m.form).langConfig?.defaultLang??formCore.DEFAULT_LANG_CONFIG.defaultLang,[d,s]=zr.useState(""),[f,v]=zr.useState(""),[y,p]=zr.useState(null),[g,c]=zr.useState(""),[u,b]=zr.useState(null),[x,h]=zr.useState({}),[I,C]=zr.useState(false),[A,R]=zr.useState(null);if(!e)return null;let _=m=>{t(m(o));},K=async()=>{if(!d.trim()||!n?.createScope)return;let m=f.trim()||d.trim().toUpperCase().replace(/\s+/g,"_");C(true);try{let D=await n.createScope({code:m,name:d.trim(),tenantId:"default"});_(V=>[...V,D]),s(""),v("");}finally{C(false);}},$=m=>{let D=typeof m.name=="string"?m.name:formCore.resolveLabel(m.name,l,l);p(m.id),c(D);},Y=()=>{p(null),c("");},S=async()=>{if(!y||!n?.updateScope){Y();return}let m=g.trim();if(!m){Y();return}let D=o.find(X=>X.id===y),V=D&&typeof D.name=="object"?{...D.name,[l]:m}:m;C(true);try{let X=await n.updateScope(y,{name:V});_(j=>j.map(ye=>ye.id===y?X:ye)),Y();}finally{C(false);}},E=m=>{b(m),h(D=>{let V={...D};return delete V[m],V});},N=async()=>{if(!u||!n?.deleteScope)return;let m=u;C(true);try{await n.deleteScope(m),_(D=>D.filter(V=>V.id!==m)),b(null);}catch(D){let V=D instanceof Error?D.message:String(D);h(X=>({...X,[m]:V}));}finally{C(false);}},z=m=>{let D=typeof m.name=="string"?m.name:formCore.resolveLabel(m.name,l,l);R({id:m.id,name:D});};return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("div",{role:"dialog","aria-modal":"true","aria-label":r.scopeManager.dialogAriaLabel,"data-testid":"scope-manager-dialog",onClick:a,style:{position:"fixed",inset:0,backgroundColor:"rgba(0, 0, 0, 0.3)",zIndex:50,display:"flex",alignItems:"center",justifyContent:"center",padding:"16px"},children:jsxRuntime.jsxs("div",{onClick:m=>m.stopPropagation(),style:{backgroundColor:"#fff",borderRadius:"8px",maxWidth:"36rem",width:"100%",maxHeight:"80vh",overflow:"auto",boxShadow:"0 10px 25px rgba(0,0,0,0.2)",fontFamily:"system-ui, -apple-system, sans-serif",color:"#1e293b"},children:[jsxRuntime.jsxs("header",{style:{padding:"16px",borderBottom:"1px solid #e2e8f0",display:"flex",justifyContent:"space-between",alignItems:"center"},children:[jsxRuntime.jsx("h3",{style:{fontSize:"16px",fontWeight:600,margin:0},children:r.scopeManager.title}),jsxRuntime.jsx("button",{type:"button",onClick:a,"aria-label":r.scopeManager.closeAriaLabel,"data-testid":"scope-manager-close-x",style:{background:"transparent",border:"none",fontSize:"18px",cursor:"pointer",color:"#64748b",padding:"4px 8px"},children:"\xD7"})]}),jsxRuntime.jsxs("section",{style:{padding:"16px"},children:[o.length===0&&jsxRuntime.jsx("div",{"data-testid":"scope-manager-empty",style:{fontSize:"13px",color:"#94a3b8",marginBottom:"12px"},children:r.scopeManager.noScopes}),jsxRuntime.jsx("ul",{style:{listStyle:"none",padding:0,margin:0,display:"flex",flexDirection:"column",gap:"6px"},children:o.map(m=>{let D=y===m.id,V=u===m.id,X=typeof m.name=="string"?m.name:formCore.resolveLabel(m.name,l,l);return jsxRuntime.jsxs("li",{"data-testid":`scope-row-${m.code}`,style:{display:"flex",alignItems:"center",gap:"8px",padding:"8px",border:"1px solid #e2e8f0",borderRadius:"6px",backgroundColor:"#fff",flexWrap:"wrap"},children:[D?jsxRuntime.jsx("input",{type:"text",value:g,autoFocus:true,"data-testid":`scope-name-edit-${m.code}`,onChange:j=>c(j.target.value),onBlur:S,onKeyDown:j=>{j.key==="Enter"&&S(),j.key==="Escape"&&Y();},disabled:I,style:{flex:1,padding:"4px 8px",border:"1px solid #cbd5e1",borderRadius:"4px",fontSize:"13px",color:"#000",outline:"none"}}):jsxRuntime.jsx("span",{"data-testid":`scope-name-${m.code}`,onClick:()=>$(m),"aria-label":r.scopeManager.editScopeAria(m.code),style:{flex:1,fontSize:"13px",cursor:"pointer",padding:"4px 8px"},children:X}),jsxRuntime.jsx("span",{style:{fontSize:"11px",color:"#94a3b8",fontFamily:"monospace"},children:m.code}),jsxRuntime.jsx("button",{type:"button","data-testid":`scope-manage-variables-${m.code}`,"aria-label":r.scopeManager.manageVariablesAria(m.code),onClick:()=>z(m),disabled:I,style:{padding:"4px 10px",border:"1px solid #2563eb",borderRadius:"4px",backgroundColor:"#fff",color:"#2563eb",fontSize:"12px",cursor:"pointer"},children:r.scopeManager.manageVariables}),jsxRuntime.jsx("button",{type:"button","aria-label":r.scopeManager.removeScopeAria(m.code),"data-testid":`scope-remove-${m.code}`,onClick:()=>E(m.id),disabled:I,style:{width:"24px",height:"24px",border:"1px solid #e2e8f0",borderRadius:"4px",backgroundColor:"#fff",color:"#64748b",cursor:"pointer",fontSize:"14px",lineHeight:1},children:"\xD7"}),V&&jsxRuntime.jsxs("div",{"data-testid":`scope-confirm-${m.code}`,style:{flexBasis:"100%",fontSize:"12px",color:"#b91c1c",backgroundColor:"#fef2f2",padding:"6px 8px",borderRadius:"4px",display:"flex",flexDirection:"column",gap:"6px"},children:[jsxRuntime.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[jsxRuntime.jsx("span",{style:{flex:1},children:r.scopeManager.confirmDelete}),jsxRuntime.jsx("button",{type:"button","data-testid":`scope-confirm-yes-${m.code}`,onClick:N,disabled:I,style:{padding:"4px 8px",border:"none",borderRadius:"4px",backgroundColor:"#ef4444",color:"#fff",fontSize:"12px",cursor:"pointer"},children:r.scopeManager.deleteConfirm}),jsxRuntime.jsx("button",{type:"button","data-testid":`scope-confirm-no-${m.code}`,onClick:()=>b(null),disabled:I,style:{padding:"4px 8px",border:"1px solid #e2e8f0",borderRadius:"4px",backgroundColor:"#fff",color:"#334155",fontSize:"12px",cursor:"pointer"},children:r.scopeManager.deleteCancel})]}),x[m.id]&&jsxRuntime.jsxs("div",{"data-testid":`scope-delete-error-${m.code}`,style:{color:"#7f1d1d",fontWeight:500},children:[r.scopeManager.deleteError," \u2014 ",x[m.id]]})]})]},m.id)})})]}),jsxRuntime.jsxs("section",{style:{padding:"12px 16px",borderTop:"1px solid #e2e8f0",display:"flex",alignItems:"center",gap:"8px",backgroundColor:"#f8fafc"},children:[jsxRuntime.jsx("input",{type:"text",value:d,"data-testid":"scope-new-name",placeholder:r.scopeManager.newScopeName,onChange:m=>s(m.target.value),onKeyDown:m=>{m.key==="Enter"&&K();},disabled:I,style:{flex:1,padding:"6px 8px",border:"1px solid #cbd5e1",borderRadius:"4px",fontSize:"13px",color:"#000",outline:"none"}}),jsxRuntime.jsx("input",{type:"text",value:f,"data-testid":"scope-new-code",placeholder:r.scopeManager.newScopeCodePlaceholder,onChange:m=>v(m.target.value),disabled:I,style:{width:"140px",padding:"6px 8px",border:"1px solid #cbd5e1",borderRadius:"4px",fontSize:"13px",color:"#000",outline:"none",fontFamily:"monospace"}}),jsxRuntime.jsx("button",{type:"button","data-testid":"scope-add",onClick:K,disabled:I||d.trim()===""||!n?.createScope,style:{padding:"6px 12px",border:"none",borderRadius:"4px",backgroundColor:d.trim()===""?"#cbd5e1":"#2563eb",color:"#fff",fontSize:"13px",cursor:d.trim()===""?"not-allowed":"pointer"},children:r.scopeManager.addScope})]})]})}),A&&jsxRuntime.jsx(co,{open:true,onClose:()=>R(null),scopeId:A.id,scopeName:A.name})]})}function bo({onSave:e,onExport:a,onImport:r}){let{form:n,updateFormMeta:o,view:t,setView:i,isDirty:l,isSaving:d,canUndo:s,canRedo:f,undo:v,redo:y,save:p,addPage:g,select:c}=k(),u=w(),[b,x]=zr.useState(false),[h,I]=zr.useState(false),[C,A]=zr.useState(false),R=async()=>{await p(),e?.();},_=()=>{let $=n.pages.length;g({id:`page-${Date.now()}`,code:`PAGE_${$+1}`,name:`Page ${$+1}`,order:$,isRepeatable:false,items:[]});},K=[{view:"canvas",label:u.toolbar.viewEditor},{view:"preview",label:u.toolbar.viewPreview},{view:"json",label:u.toolbar.viewJson}];return jsxRuntime.jsxs("div",{style:{display:"flex",alignItems:"center",padding:"8px 16px",borderBottom:"1px solid #e2e8f0",backgroundColor:"#fff",gap:"8px"},children:[jsxRuntime.jsx("input",{type:"text",value:formCore.resolveLabel(n.name,n.langConfig?.defaultLang??formCore.DEFAULT_LANG_CONFIG.defaultLang,n.langConfig?.defaultLang??formCore.DEFAULT_LANG_CONFIG.defaultLang),onChange:$=>{let Y=n.langConfig?.defaultLang??formCore.DEFAULT_LANG_CONFIG.defaultLang,S;typeof n.name=="string"?S=$.target.value:S={...n.name??{},[Y]:$.target.value},o({name:S});},style:{border:"none",fontSize:"16px",fontWeight:600,color:"#1e293b",padding:"4px 8px",borderRadius:"4px",outline:"none",minWidth:"200px",backgroundColor:"transparent"},placeholder:u.toolbar.formNamePlaceholder}),l&&jsxRuntime.jsx("span",{style:{fontSize:"11px",color:"#f59e0b",fontWeight:500},children:u.toolbar.unsaved}),jsxRuntime.jsx("div",{style:{flex:1}}),jsxRuntime.jsx("button",{type:"button",onClick:()=>c({type:"form"}),title:u.toolbar.formProperties,"data-testid":"toolbar-form-properties","aria-label":u.toolbar.formProperties,style:{padding:"6px 10px",borderRadius:"6px",border:"1px solid #e2e8f0",backgroundColor:"#fff",color:"#334155",fontSize:"14px",cursor:"pointer"},children:"\u2699"}),jsxRuntime.jsx("button",{type:"button",onClick:()=>A(true),title:u.toolbar.manageScopesTitle,"data-testid":"toolbar-scopes","aria-label":u.toolbar.manageScopesTitle,style:{padding:"6px 12px",borderRadius:"6px",border:"1px solid #e2e8f0",backgroundColor:"#fff",color:"#334155",fontSize:"13px",fontWeight:500,cursor:"pointer"},children:u.toolbar.scopes}),jsxRuntime.jsx(Ie,{onClick:_,label:u.toolbar.addPage}),jsxRuntime.jsx(Ie,{onClick:()=>x(true),label:u.toolbar.types,title:u.toolbar.manageFormTypesTitle}),jsxRuntime.jsx("button",{type:"button",onClick:()=>I(true),title:u.toolbar.manageDataSourcesTitle,"data-testid":"toolbar-datasources","aria-label":u.toolbar.manageDataSourcesTitle,style:{padding:"6px 12px",borderRadius:"6px",border:"1px solid #e2e8f0",backgroundColor:"#fff",color:"#334155",fontSize:"13px",fontWeight:500,cursor:"pointer"},children:u.toolbar.dataSources}),jsxRuntime.jsx("div",{style:{width:"1px",height:"24px",backgroundColor:"#e2e8f0"}}),jsxRuntime.jsx(Ie,{onClick:v,label:"\u21A9",disabled:!s(),title:u.toolbar.undo}),jsxRuntime.jsx(Ie,{onClick:y,label:"\u21AA",disabled:!f(),title:u.toolbar.redo}),jsxRuntime.jsx("div",{style:{width:"1px",height:"24px",backgroundColor:"#e2e8f0"}}),jsxRuntime.jsx("div",{style:{display:"flex",borderRadius:"6px",overflow:"hidden",border:"1px solid #e2e8f0"},children:K.map($=>jsxRuntime.jsx("button",{type:"button",onClick:()=>i($.view),style:{padding:"4px 12px",fontSize:"12px",fontWeight:500,border:"none",cursor:"pointer",backgroundColor:t===$.view?"#2563eb":"#fff",color:t===$.view?"#fff":"#64748b"},children:$.label},$.view))}),jsxRuntime.jsx("div",{style:{width:"1px",height:"24px",backgroundColor:"#e2e8f0"}}),jsxRuntime.jsx(Ie,{onClick:R,label:d?u.toolbar.saving:u.toolbar.save,primary:true,disabled:d||!l}),a&&jsxRuntime.jsx(Ie,{onClick:a,label:u.toolbar.export}),r&&jsxRuntime.jsx(Ie,{onClick:r,label:u.toolbar.import}),jsxRuntime.jsx(_o,{open:b,onClose:()=>x(false)}),jsxRuntime.jsx(oo,{open:h,onClose:()=>I(false)}),jsxRuntime.jsx(fo,{open:C,onClose:()=>A(false)})]})}function Ie({onClick:e,label:a,primary:r,disabled:n,title:o}){return jsxRuntime.jsx("button",{type:"button",onClick:e,disabled:n,title:o,style:{padding:"6px 12px",borderRadius:"6px",border:r?"none":"1px solid #e2e8f0",backgroundColor:r?"#2563eb":"#fff",color:r?"#fff":"#334155",fontSize:"13px",fontWeight:500,cursor:n?"default":"pointer",opacity:n?.5:1},children:a})}function Ye(){let e=w(),[a,r]=zr.useState("fields"),[n,o]=zr.useState(""),{form:t,availableTemplates:i}=k(),l=t.langConfig?.defaultLang??formCore.DEFAULT_LANG_CONFIG.defaultLang,s=zr.useMemo(()=>[{label:e.toolbox.groupText,items:[{kind:"variable",type:"text",label:e.toolbox.types.text,icon:"T"},{kind:"variable",type:"textarea",label:e.toolbox.types.textarea,icon:"\xB6"},{kind:"variable",type:"number",label:e.toolbox.types.number,icon:"#"}]},{label:e.toolbox.groupSelection,items:[{kind:"variable",type:"select",label:e.toolbox.types.select,icon:"\u25BC"},{kind:"variable",type:"multiselect",label:e.toolbox.types.multiselect,icon:"\u2611"},{kind:"variable",type:"radio",label:e.toolbox.types.radio,icon:"\u25C9"},{kind:"variable",type:"checkbox",label:e.toolbox.types.checkbox,icon:"\u2610"}]},{label:e.toolbox.groupDateTime,items:[{kind:"variable",type:"date",label:e.toolbox.types.date,icon:"\u{1F4C5}"},{kind:"variable",type:"datetime",label:e.toolbox.types.datetime,icon:"\u{1F550}"},{kind:"variable",type:"time",label:e.toolbox.types.time,icon:"\u23F0"}]},{label:e.toolbox.groupMedia,items:[{kind:"variable",type:"file",label:e.toolbox.types.file,icon:"\u{1F4CE}"},{kind:"variable",type:"image",label:e.toolbox.types.image,icon:"\u{1F5BC}"},{kind:"variable",type:"gps",label:e.toolbox.types.gps,icon:"\u{1F4CD}"}]},{label:e.toolbox.groupAdvanced,items:[{kind:"variable",type:"calculated",label:e.toolbox.types.calculated,icon:"fx"},{kind:"variable",type:"hidden",label:e.toolbox.types.hidden,icon:"\u{1F441}"},{kind:"variable",type:"label",label:e.toolbox.types.label,icon:"Aa"}]},{label:e.toolbox.groupRoster,items:[{kind:"roster",rosterType:"check",label:e.toolbox.typeRosterCheck,icon:"\u25A4"},{kind:"roster",rosterType:"list",label:e.toolbox.typeRosterList,icon:"\u25A6"},{kind:"roster",rosterType:"collection",label:e.toolbox.typeRosterCollection,icon:"\u25A5"},{kind:"roster",rosterType:"collection_extend",label:e.toolbox.typeRosterCollectionExtend,icon:"\u25A9"}]}],[e]).map(f=>({...f,items:f.items.filter(v=>v.label.toLowerCase().includes(n.toLowerCase()))})).filter(f=>f.items.length>0);return jsxRuntime.jsxs("div",{style:{width:"220px",borderRight:"1px solid #e2e8f0",display:"flex",flexDirection:"column",backgroundColor:"#f8fafc",overflow:"hidden"},children:[jsxRuntime.jsx(ga,{tab:a,setTab:r,labels:e}),jsxRuntime.jsx("div",{style:{padding:"12px",borderBottom:"1px solid #e2e8f0"},children:jsxRuntime.jsx("input",{type:"text",placeholder:e.toolbox.searchPlaceholder,value:n,onChange:f=>o(f.target.value),style:{width:"100%",padding:"6px 10px",border:"1px solid #e2e8f0",borderRadius:"6px",fontSize:"13px",outline:"none",boxSizing:"border-box"}})}),jsxRuntime.jsxs("div",{style:{flex:1,overflowY:"auto",padding:"8px"},children:[a==="fields"&&s.map(f=>jsxRuntime.jsxs("div",{style:{marginBottom:"16px"},children:[jsxRuntime.jsx("div",{style:{fontSize:"11px",fontWeight:600,color:"#94a3b8",textTransform:"uppercase",letterSpacing:"0.5px",marginBottom:"6px",padding:"0 4px"},children:f.label}),f.items.map(v=>jsxRuntime.jsx(ba,{entry:v},`${v.kind}-${v.kind==="roster"?v.rosterType:v.type}`))]},f.label)),a==="variables"&&jsxRuntime.jsx(ya,{templates:i,scopeIds:t.scopeIds,search:n,defaultLang:l,labels:e})]})]})}function ga({tab:e,setTab:a,labels:r}){let n={flex:1,padding:"8px 0",fontSize:"12px",fontWeight:500,textAlign:"center",cursor:"pointer",userSelect:"none",color:"#64748b",borderBottomWidth:"2px",borderBottomStyle:"solid",borderBottomColor:"transparent"},o={...n,color:"#2563eb",fontWeight:600,borderBottomColor:"#2563eb"};return jsxRuntime.jsxs("div",{style:{display:"flex",borderBottom:"1px solid #e2e8f0",backgroundColor:"#fff"},children:[jsxRuntime.jsx("div",{role:"tab","aria-selected":e==="fields","data-testid":"toolbox-tab-fields",onClick:()=>a("fields"),style:e==="fields"?o:n,children:r.toolbox.tabFields}),jsxRuntime.jsx("div",{role:"tab","aria-selected":e==="variables","data-testid":"toolbox-tab-variables",onClick:()=>a("variables"),style:e==="variables"?o:n,children:r.toolbox.tabVariables})]})}function ba({entry:e}){let a=e.kind==="roster"?`toolbox-roster-${e.rosterType}`:`toolbox-variable-${e.type}`,r=e.kind==="roster"?{type:"new-roster",rosterType:e.rosterType}:{type:"new-variable",variableType:e.type},{attributes:n,listeners:o,setNodeRef:t,isDragging:i}=core.useDraggable({id:a,data:r});return jsxRuntime.jsxs("div",{ref:t,"data-testid":a,...o,...n,style:{display:"flex",alignItems:"center",gap:"8px",padding:"6px 8px",marginBottom:"2px",borderRadius:"6px",cursor:"grab",fontSize:"13px",color:"#334155",backgroundColor:i?"#e2e8f0":"transparent",userSelect:"none"},children:[jsxRuntime.jsx("span",{style:{width:"20px",textAlign:"center",fontSize:"14px"},children:e.icon}),jsxRuntime.jsx("span",{children:e.label})]})}function ya({templates:e,scopeIds:a,search:r,defaultLang:n,labels:o}){let t=d=>jsxRuntime.jsx("div",{"data-testid":"toolbox-variables-empty",style:{padding:"14px",color:"#94a3b8",fontSize:"12px",textAlign:"center",fontStyle:"italic"},children:d});if(!a||a.length===0)return t(o.toolbox.noScope);if(e.length===0)return t(o.toolbox.noTemplates);let i=r.toLowerCase(),l=e.filter(d=>{if(!i)return true;let s=d.code.toLowerCase().includes(i),f=ot(d.name,n).toLowerCase().includes(i);return s||f}).slice().sort((d,s)=>d.code.localeCompare(s.code));return l.length===0?t(o.toolbox.noTemplates):jsxRuntime.jsx("div",{style:{display:"flex",flexDirection:"column",gap:"4px"},children:l.map(d=>jsxRuntime.jsx(xa,{template:d,defaultLang:n},d.id))})}function xa({template:e,defaultLang:a}){let r=`toolbox-template-${e.code}`,{attributes:n,listeners:o,setNodeRef:t,isDragging:i}=core.useDraggable({id:r,data:{type:"new-variable-from-template",template:e}});return jsxRuntime.jsxs("div",{ref:t,"data-testid":r,...o,...n,style:{display:"flex",alignItems:"center",gap:"8px",padding:"6px 8px",borderRadius:"6px",cursor:"grab",fontSize:"13px",color:"#334155",backgroundColor:i?"#e2e8f0":"transparent",userSelect:"none"},children:[jsxRuntime.jsx("span",{style:{fontSize:"10px",fontWeight:600,padding:"2px 6px",borderRadius:"4px",backgroundColor:"#e0e7ff",color:"#3730a3",textTransform:"uppercase",letterSpacing:"0.3px",minWidth:"42px",textAlign:"center"},children:e.variableType}),jsxRuntime.jsxs("div",{style:{display:"flex",flexDirection:"column",minWidth:0,flex:1},children:[jsxRuntime.jsx("span",{style:{fontFamily:"monospace",fontSize:"11px",color:"#475569",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:e.code}),jsxRuntime.jsx("span",{style:{fontSize:"12px",color:"#1e293b",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:ot(e.name,a)})]})]})}function ot(e,a){return formCore.resolveLabel(e,a,a)}function vo(){let a=k(r=>r.form).langConfig?.defaultLang??formCore.DEFAULT_LANG_CONFIG.defaultLang;return r=>formCore.resolveLabel(r,a,a)}function Xe(){let{form:e,select:a}=k(),r=w(),n=i=>{i.target===i.currentTarget&&a({type:"form"});};if(e.pages.length===0)return jsxRuntime.jsx("div",{"data-testid":"canvas-empty",onClick:n,style:{flex:1,display:"flex",alignItems:"center",justifyContent:"center",color:"#94a3b8",fontSize:"14px",cursor:"pointer"},children:r.canvas.emptyStateNoPageDnd});let o=e.pages.slice().sort((i,l)=>i.order-l.order),t=o.map(i=>`page-${i.code}`);return jsxRuntime.jsx("div",{"data-testid":"canvas-root",onClick:n,style:{flex:1,overflowY:"auto",padding:"16px",backgroundColor:"#fff"},children:jsxRuntime.jsx(sortable.SortableContext,{items:t,strategy:sortable.verticalListSortingStrategy,children:o.map(i=>jsxRuntime.jsx(Ta,{page:i},i.code))})})}function Ta({page:e}){let{selection:a,select:r}=k(),n=w(),o=vo(),t=a.type==="page"&&a.pageCode===e.code,{attributes:i,listeners:l,setNodeRef:d,transform:s,transition:f,isDragging:v,isOver:y}=sortable.useSortable({id:`page-${e.code}`,data:{type:"page",pageCode:e.code}}),p=(e.items??[...formCore.getPageVariables(e),...e.rosters??[]]).slice().sort((c,u)=>c.order-u.order),g=p.filter(c=>!formCore.isPageRoster(c)).length;return jsxRuntime.jsxs("div",{ref:d,style:{marginBottom:"16px",border:`2px solid ${t?"#2563eb":y?"#93c5fd":"#e2e8f0"}`,borderRadius:"8px",overflow:"hidden",transform:utilities.CSS.Transform.toString(s),transition:f,opacity:v?.6:1},children:[jsxRuntime.jsxs("div",{onClick:()=>r({type:"page",pageCode:e.code}),style:{padding:"10px 14px",backgroundColor:t?"#eff6ff":"#f8fafc",borderBottom:"1px solid #e2e8f0",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"space-between"},children:[jsxRuntime.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[jsxRuntime.jsx("span",{...i,...l,"data-testid":`canvas-page-drag-handle-${e.code}`,"aria-label":`Reorder page ${e.code}`,title:"Drag to reorder",onClick:c=>c.stopPropagation(),style:{color:"#94a3b8",fontSize:"14px",cursor:"grab",padding:"2px 6px",borderRadius:"4px",userSelect:"none",touchAction:"none"},children:"\u283F"}),jsxRuntime.jsx("span",{style:{fontSize:"14px",fontWeight:600,color:"#1e293b"},children:o(e.name)||n.canvas.unnamedPage}),e.isRepeatable&&jsxRuntime.jsx("span",{style:{fontSize:"10px",padding:"1px 6px",borderRadius:"4px",backgroundColor:"#dbeafe",color:"#2563eb",fontWeight:500},children:n.canvas.repeatable})]}),jsxRuntime.jsx("span",{style:{fontSize:"12px",color:"#94a3b8"},children:n.canvas.fieldsCount(g)})]}),jsxRuntime.jsx(sortable.SortableContext,{items:p.map(c=>c.code),strategy:sortable.verticalListSortingStrategy,children:jsxRuntime.jsx("div",{style:{padding:"4px 0"},children:p.map(c=>formCore.isPageRoster(c)?jsxRuntime.jsx(Ra,{roster:c,pageCode:e.code},c.code):jsxRuntime.jsx(nt,{variable:c,pageCode:e.code},c.code))})})]})}function nt({variable:e,pageCode:a,rosterCode:r}){let{selection:n,select:o}=k(),t=w(),i=vo(),l=n.type==="variable"&&n.pageCode===a&&n.variableCode===e.code,{attributes:d,listeners:s,setNodeRef:f,transform:v,transition:y,isDragging:p}=sortable.useSortable({id:e.code,data:{type:"variable",pageCode:a,variableCode:e.code,rosterCode:r}});return jsxRuntime.jsxs("div",{ref:f,...d,...s,onClick:g=>{g.stopPropagation(),o({type:"variable",pageCode:a,variableCode:e.code,rosterCode:r});},style:{display:"flex",alignItems:"center",gap:"8px",padding:"6px 14px",margin:"1px 0",cursor:"pointer",backgroundColor:l?"#eff6ff":p?"#f1f5f9":"transparent",borderLeft:l?"3px solid #2563eb":"3px solid transparent",transform:utilities.CSS.Transform.toString(v),transition:y,opacity:p?.5:1,fontSize:"13px"},children:[jsxRuntime.jsx("span",{style:{color:"#94a3b8",fontSize:"11px",width:"60px",flexShrink:0},children:e.type}),jsxRuntime.jsx("span",{style:{color:"#334155",flex:1},children:i(e.name)||e.code}),e.isRequired&&jsxRuntime.jsx("span",{style:{color:"#ef4444",fontSize:"11px"},children:"*"}),e.conditions&&e.conditions.length>0&&jsxRuntime.jsx("span",{style:{color:"#f59e0b",fontSize:"11px"},title:t.canvas.hasConditionsTitle,children:"\u26A1"}),e.dataSourceId&&jsxRuntime.jsx("span",{style:{color:"#22c55e",fontSize:"11px"},title:t.canvas.dataSourceConnectedTitle,children:"\u27F3"})]})}function Ra({roster:e,pageCode:a}){let{selection:r,select:n,addVariable:o}=k(),t=w(),i=vo(),l=r.type==="roster"&&r.pageCode===a&&r.rosterCode===e.code,{attributes:d,listeners:s,setNodeRef:f,transform:v,transition:y,isDragging:p}=sortable.useSortable({id:e.code,data:{type:"roster",pageCode:a,rosterCode:e.code}}),{setNodeRef:g,isOver:c}=core.useDroppable({id:`roster-drop-${e.code}`,data:{type:"roster-drop",pageCode:a,rosterCode:e.code}}),u=b=>{b.stopPropagation();let x=`RV_${Date.now().toString(36).slice(-4).toUpperCase()}`;o(a,{id:`var-${Date.now()}`,code:x,name:t.canvas.newFieldName,type:"text",order:e.variables.length,isRequired:false,isReadonly:false,isHidden:false},e.code);};return jsxRuntime.jsxs("div",{ref:f,style:{margin:"4px 8px",border:`1px solid ${l?"#2563eb":c?"#f59e0b":"#e2e8f0"}`,borderRadius:"6px",overflow:"hidden",backgroundColor:c?"#fefce8":void 0,transform:utilities.CSS.Transform.toString(v),transition:y,opacity:p?.5:1},children:[jsxRuntime.jsxs("div",{...d,...s,onClick:b=>{b.stopPropagation(),n({type:"roster",pageCode:a,rosterCode:e.code});},style:{padding:"6px 10px",backgroundColor:l?"#fef3c7":"#fffbeb",fontSize:"12px",fontWeight:600,color:"#92400e",cursor:"grab",display:"flex",alignItems:"center",gap:"6px"},children:[jsxRuntime.jsx("span",{style:{fontSize:"10px"},children:"\u25A4"}),i(e.name)||e.code," (",e.rosterType,")"]}),jsxRuntime.jsxs("div",{ref:g,children:[e.variables.slice().sort((b,x)=>b.order-x.order).map(b=>jsxRuntime.jsx(nt,{variable:b,pageCode:a,rosterCode:e.code},b.code)),jsxRuntime.jsx("div",{style:{padding:"4px 10px",borderTop:"1px solid #fde68a"},children:jsxRuntime.jsx("button",{type:"button",onClick:u,"data-testid":`canvas-add-field-to-roster-${e.code}`,style:{padding:"2px 8px",borderRadius:"3px",border:"1px dashed #d4a843",backgroundColor:"transparent",color:"#92400e",fontSize:"10px",cursor:"pointer"},children:t.canvas.addFieldToRoster})})]})]})}function $a(e,a){let r=e.pages.find(n=>n.code===a);return r?Array.isArray(r.items)?r.items.slice().sort((n,o)=>n.order-o.order):[...formCore.getPageVariables(r),...formCore.getPageRosters(r)].sort((n,o)=>n.order-o.order):null}function lt(e){return `${e}_${Date.now().toString(36).slice(-4).toUpperCase()}`}function dt(e,a){return r=>{let{active:n,over:o}=r;if(!n||!o)return;let t=n.data.current;if(!t?.type)return;let i=a(),l=()=>{let d=o.data.current;return d?d.type==="page"&&d.pageCode?{pageCode:d.pageCode}:d.type==="variable"&&d.pageCode?{pageCode:d.pageCode,rosterCode:d.rosterCode}:d.type==="roster"&&d.pageCode?{pageCode:d.pageCode,rosterCode:d.rosterCode}:d.type==="roster-drop"&&d.pageCode?{pageCode:d.pageCode,rosterCode:d.rosterCode}:null:null};if(t.type==="new-variable"){let d=l()??{pageCode:i.pages[0]?.code??""};if(!d.pageCode)return;let s=t.variableType??"text";e.addVariable(d.pageCode,{id:`var-${Date.now()}`,code:lt(s.toUpperCase()),name:`New ${s}`,type:s,order:0,isRequired:false,isReadonly:false,isHidden:false},d.rosterCode);return}if(t.type==="new-roster"){let d=l()??{pageCode:i.pages[0]?.code??""};if(!d.pageCode)return;let s=t.rosterType??"collection";e.addRoster(d.pageCode,{id:`roster-${Date.now()}`,code:lt("ROSTER"),name:"New Roster",rosterType:s,order:0,variables:[]});return}if(t.type==="new-variable-from-template"&&t.template){let d=l()??{pageCode:i.pages[0]?.code??""};if(!d.pageCode)return;e.addVariableFromTemplate(d.pageCode,t.template,d.rosterCode);return}if(t.type==="page"){let d=o.data.current;if(d?.type!=="page"||!d.pageCode||!t.pageCode||t.pageCode===d.pageCode)return;let s=i.pages.slice().sort((p,g)=>p.order-g.order),f=s.findIndex(p=>p.code===t.pageCode),v=s.findIndex(p=>p.code===d.pageCode);if(f===-1||v===-1||f===v)return;let y=sortable.arrayMove(s,f,v).map(p=>p.code);e.reorderPages(y);return}if(t.type==="variable"||t.type==="roster"){let d=o.data.current,s=t.pageCode;if(!s||!d)return;let f=p=>p.type==="roster"||p.type==="variable"&&!p.rosterCode,v=f(t),y=f(d);if(d.pageCode===s&&d.type!=="page"&&v&&y){let p=$a(i,s);if(!p)return;let g=String(n.id),c=String(o.id);if(g===c)return;let u=p.findIndex(x=>x.code===g),b=p.findIndex(x=>x.code===c);if(u===-1||b===-1)return;e.moveItem(s,u,b);return}if(t.type==="variable"&&t.variableCode){let p=d.pageCode??s,g=d.type==="page"?void 0:d.rosterCode;if(p===s&&(t.rosterCode??void 0)===(g??void 0))return;e.moveVariable(s,p,t.variableCode,0,t.rosterCode,g);return}}}}function Co({children:e}){let a=k(),[r,n]=zr.useState(null),o=core.useSensors(core.useSensor(core.PointerSensor,{activationConstraint:{distance:8}}),core.useSensor(core.KeyboardSensor,{coordinateGetter:sortable.sortableKeyboardCoordinates})),t=zr.useMemo(()=>dt({addVariable:a.addVariable,addRoster:a.addRoster,addVariableFromTemplate:a.addVariableFromTemplate,moveItem:a.moveItem,moveVariable:a.moveVariable,reorderPages:a.reorderPages},()=>k.getState().form),[a.addVariable,a.addRoster,a.addVariableFromTemplate,a.moveItem,a.moveVariable,a.reorderPages]);return jsxRuntime.jsxs(core.DndContext,{sensors:o,collisionDetection:core.closestCenter,onDragStart:l=>{let d=l.active.data.current;d&&(d.type==="new-variable"?n(d.variableType??"variable"):d.type==="new-roster"?n(`roster:${d.rosterType??""}`):d.type==="new-variable-from-template"?n(`tpl:${d.template?.code??""}`):d.type==="variable"?n(d.variableCode??""):d.type==="roster"?n(`\u25A4 ${String(l.active.id)}`):d.type==="page"&&n(`\u{1F4C4} ${d.pageCode??""}`));},onDragEnd:l=>{n(null),t(l);},children:[e,jsxRuntime.jsx(core.DragOverlay,{children:r&&jsxRuntime.jsx("div",{style:{padding:"6px 12px",borderRadius:"6px",backgroundColor:"#2563eb",color:"#fff",fontSize:"13px",fontWeight:500,boxShadow:"0 4px 12px rgba(0,0,0,0.15)"},children:r})})]})}var Wa=["fr","en"];function Ee(){let{form:e,formTypes:a,updateFormMeta:r,availableScopes:n}=k(),o=w(),t=e.langConfig??formCore.DEFAULT_LANG_CONFIG,i=e.pages.reduce((l,d)=>l+formCore.getPageVariables(d).length+formCore.getPageRosters(d).reduce((s,f)=>s+f.variables.length,0),0);return jsxRuntime.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"12px"},children:[jsxRuntime.jsx(Z,{label:o.properties.name,value:e.name,onChange:l=>r({name:l}),testIdPrefix:"form-name"}),jsxRuntime.jsx(ne,{label:o.properties.code,value:e.code,onChange:l=>r({code:l})}),jsxRuntime.jsx(Z,{label:o.properties.description,value:e.description,onChange:l=>r({description:l}),multiline:true,testIdPrefix:"form-description"}),jsxRuntime.jsx(ne,{label:o.properties.version,value:e.version,onChange:l=>r({version:l})}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{style:{display:"block",fontSize:"12px",fontWeight:500,color:"#64748b",marginBottom:"4px"},children:o.properties.formType}),jsxRuntime.jsxs("select",{"data-testid":"form-properties-type-select",value:e.formTypeId??"",onChange:l=>r({formTypeId:l.target.value||void 0}),style:{width:"100%",padding:"6px 8px",border:"1px solid #e2e8f0",borderRadius:"4px",fontSize:"13px",color:"#334155",outline:"none",boxSizing:"border-box"},children:[jsxRuntime.jsx("option",{value:"",children:o.properties.noType}),a.map(l=>jsxRuntime.jsx("option",{value:l.id,children:l.name},l.id))]})]}),jsxRuntime.jsx(qa,{value:e.scopeIds??[],availableScopes:n,onChange:l=>r({scopeIds:l}),defaultLang:t.defaultLang,labels:o}),jsxRuntime.jsx(Ua,{langConfig:t}),jsxRuntime.jsx("div",{style:{fontSize:"12px",color:"#94a3b8",marginTop:"8px"},children:o.properties.formSummary(e.pages.length,i)})]})}function qa({value:e,availableScopes:a,onChange:r,defaultLang:n,labels:o}){let i={padding:"8px",backgroundColor:"#f8fafc",borderRadius:"6px",display:"flex",flexDirection:"column",gap:"8px",marginTop:"4px"},l=e.map(y=>a.find(p=>p.id===y)??a.find(p=>p.code===y)).filter(y=>!!y),d=a.filter(y=>!e.includes(y.id)&&!e.includes(y.code)),s=y=>{y&&r([...e,y]);},f=y=>{let p=e.slice();p.splice(y,1),r(p);},v=(y,p)=>{let g=y+p;if(g<0||g>=e.length)return;let c=e.slice(),[u]=c.splice(y,1);c.splice(g,0,u),r(c);};return jsxRuntime.jsxs("div",{"data-testid":"form-scopes-selector",style:i,children:[jsxRuntime.jsx("div",{style:{fontSize:"11px",fontWeight:600,color:"#64748b",textTransform:"uppercase",letterSpacing:"0.5px"},children:o.properties.scopes}),jsxRuntime.jsx("p",{style:{margin:0,fontSize:"11px",color:"#94a3b8"},children:o.properties.scopesHint}),l.length===0?jsxRuntime.jsx("div",{style:{fontSize:"12px",color:"#94a3b8",fontStyle:"italic"},children:"\u2014"}):jsxRuntime.jsx("ol",{"data-testid":"form-scopes-selected",style:{margin:0,padding:0,listStyle:"none",display:"flex",flexDirection:"column",gap:"4px"},children:l.map((y,p)=>jsxRuntime.jsxs("li",{"data-testid":`form-scope-${y.code}`,style:{display:"flex",alignItems:"center",gap:"6px",padding:"6px 8px",borderRadius:"4px",backgroundColor:"#fff",border:"1px solid #e2e8f0",fontSize:"12px"},children:[jsxRuntime.jsxs("span",{style:{fontSize:"10px",color:"#64748b",minWidth:"14px"},children:[p+1,"."]}),jsxRuntime.jsx("span",{style:{fontFamily:"monospace",color:"#475569"},children:y.code}),jsxRuntime.jsx("span",{style:{color:"#1e293b",flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:formCore.resolveLabel(y.name,n,n)}),jsxRuntime.jsx("button",{type:"button","aria-label":o.properties.moveScopeUp,"data-testid":`form-scope-up-${y.code}`,onClick:()=>v(p,-1),disabled:p===0,style:ho(p===0),children:"\u25B2"}),jsxRuntime.jsx("button",{type:"button","aria-label":o.properties.moveScopeDown,"data-testid":`form-scope-down-${y.code}`,onClick:()=>v(p,1),disabled:p===l.length-1,style:ho(p===l.length-1),children:"\u25BC"}),jsxRuntime.jsx("button",{type:"button","aria-label":o.properties.removeScope,"data-testid":`form-scope-remove-${y.code}`,onClick:()=>f(p),style:{...ho(false),color:"#ef4444"},children:"\xD7"})]},y.id))}),d.length>0?jsxRuntime.jsxs("select",{value:"","data-testid":"form-scopes-add",onChange:y=>{let p=y.target.value;p&&s(p),y.target.value="";},style:Ha,children:[jsxRuntime.jsxs("option",{value:"",children:["+ ",o.properties.scopes,"\u2026"]}),d.map(y=>jsxRuntime.jsxs("option",{value:y.id,children:[y.code," \u2014 ",formCore.resolveLabel(y.name,n,n)]},y.id))]}):a.length===0?jsxRuntime.jsx("div",{style:{fontSize:"11px",color:"#94a3b8",fontStyle:"italic"},"data-testid":"form-scopes-empty",children:o.properties.noScopesAvailable}):null]})}function ho(e){return {border:"1px solid #e2e8f0",backgroundColor:"#fff",color:e?"#cbd5e1":"#64748b",fontSize:"10px",padding:"2px 6px",borderRadius:"4px",cursor:e?"default":"pointer"}}var Ha={width:"100%",padding:"6px 8px",border:"1px solid #e2e8f0",borderRadius:"4px",fontSize:"12px",color:"#334155",outline:"none",boxSizing:"border-box"};function Ua({langConfig:e}){let{form:a,updateFormMeta:r,setForm:n}=k(),o=w(),[t,i]=zr.useState(null),l={display:"block",fontSize:"12px",fontWeight:500,color:"#64748b",marginBottom:"4px"},d={width:"100%",padding:"6px 8px",border:"1px solid #e2e8f0",borderRadius:"4px",fontSize:"13px",color:"#334155",outline:"none",boxSizing:"border-box"},s=g=>{r({langConfig:g});},f=g=>{e.availableLangs.includes(g)||s({...e,availableLangs:[...e.availableLangs,g]});},v=g=>{e.availableLangs.length<=1||g!==e.defaultLang&&i(g);},y=g=>{let c=e.availableLangs.filter(h=>h!==g),u=c.includes(e.defaultLang)?e.defaultLang:c[0]??"fr",b=Ga(a,g,u,c.length===1),x={...e,defaultLang:u,availableLangs:c};n({...b,langConfig:x}),i(null);},p=()=>i(null);return jsxRuntime.jsxs("div",{"data-testid":"form-lang-config",style:{padding:"8px",backgroundColor:"#f8fafc",borderRadius:"6px",display:"flex",flexDirection:"column",gap:"8px",marginTop:"4px"},children:[jsxRuntime.jsx("div",{style:{fontSize:"11px",fontWeight:600,color:"#64748b",textTransform:"uppercase",letterSpacing:"0.5px"},children:o.properties.langConfigSection}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{style:l,children:o.properties.langConfigAvailable}),jsxRuntime.jsx("div",{style:{display:"flex",gap:"8px",flexWrap:"wrap"},children:Wa.map(g=>{let c=e.availableLangs.includes(g),u=g===e.defaultLang,b=e.availableLangs.length<=1,x=c&&(u||b);return jsxRuntime.jsxs("label",{style:{display:"flex",alignItems:"center",gap:"6px",fontSize:"13px",color:"#334155",cursor:x?"default":"pointer",opacity:x?.6:1},children:[jsxRuntime.jsx("input",{type:"checkbox","data-testid":`lang-toggle-${g}`,checked:c,disabled:x,onChange:h=>{h.target.checked?f(g):v(g);}}),jsxRuntime.jsx("span",{children:g.toUpperCase()}),u&&jsxRuntime.jsxs("span",{style:{fontSize:"10px",color:"#94a3b8",fontStyle:"italic"},children:["(",o.properties.langConfigDefault,")"]})]},g)})})]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{style:l,children:o.properties.langConfigDefault}),jsxRuntime.jsx("select",{"data-testid":"lang-default-select",value:e.defaultLang,onChange:g=>s({...e,defaultLang:g.target.value}),style:d,children:e.availableLangs.map(g=>jsxRuntime.jsx("option",{value:g,children:g.toUpperCase()},g))})]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{style:l,children:o.properties.langConfigStrategy}),jsxRuntime.jsxs("select",{"data-testid":"lang-strategy-select",value:e.strategy,onChange:g=>s({...e,strategy:g.target.value}),style:d,children:[jsxRuntime.jsx("option",{value:"prop",children:o.properties.langConfigStrategies.prop}),jsxRuntime.jsx("option",{value:"browser",children:o.properties.langConfigStrategies.browser}),jsxRuntime.jsx("option",{value:"selector",children:o.properties.langConfigStrategies.selector}),jsxRuntime.jsx("option",{value:"auto",children:o.properties.langConfigStrategies.auto})]})]}),e.strategy==="selector"&&jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{style:l,children:o.properties.langConfigSelectorPosition}),jsxRuntime.jsxs("select",{"data-testid":"lang-selector-position-select",value:e.selectorPosition??"top",onChange:g=>s({...e,selectorPosition:g.target.value}),style:d,children:[jsxRuntime.jsx("option",{value:"top",children:o.properties.langConfigPositions.top}),jsxRuntime.jsx("option",{value:"bottom",children:o.properties.langConfigPositions.bottom})]})]}),t&&jsxRuntime.jsxs("div",{"data-testid":"lang-remove-confirm",style:{padding:"8px",backgroundColor:"#fef2f2",border:"1px solid #fecaca",borderRadius:"6px",fontSize:"12px",color:"#b91c1c",display:"flex",flexDirection:"column",gap:"8px"},children:[jsxRuntime.jsx("span",{children:o.properties.langConfigConfirmRemove(t)}),jsxRuntime.jsxs("div",{style:{display:"flex",gap:"8px"},children:[jsxRuntime.jsx("button",{type:"button","data-testid":"lang-remove-confirm-yes",onClick:()=>y(t),style:{padding:"4px 10px",border:"none",borderRadius:"4px",backgroundColor:"#ef4444",color:"#fff",fontSize:"12px",cursor:"pointer"},children:o.properties.langConfigConfirmYes}),jsxRuntime.jsx("button",{type:"button","data-testid":"lang-remove-confirm-no",onClick:p,style:{padding:"4px 10px",border:"1px solid #e2e8f0",borderRadius:"4px",backgroundColor:"#fff",color:"#334155",fontSize:"12px",cursor:"pointer"},children:o.properties.langConfigConfirmNo})]})]})]})}function Ga(e,a,r,n){let o=p=>{if(p===void 0)return;if(typeof p=="string")return p;let g={...p};return delete g[a],n?Go(g,r,"fr"):g},t=p=>({...p,label:o(p.label)??""}),i=p=>({...p,message:o(p.message)??""}),l=p=>({...p,errorMessage:o(p.errorMessage)}),d=p=>({...p,name:o(p.name)??"",description:o(p.description),placeholder:o(p.placeholder),options:p.options?p.options.map(t):p.options,validationRules:p.validationRules?p.validationRules.map(i):p.validationRules,conditions:p.conditions?p.conditions.map(l):p.conditions}),s=p=>({...p,name:o(p.name)??"",options:p.options?p.options.map(t):p.options,variables:p.variables.map(d),conditions:p.conditions?p.conditions.map(l):p.conditions}),f=p=>({...p,instanceLabel:o(p.instanceLabel)}),v=p=>formCore.isPageRoster(p)?s(p):d(p),y=p=>{let g=Array.isArray(p.items)?p.items.map(v):[...formCore.getPageVariables(p).map(d),...formCore.getPageRosters(p).map(s)],{variables:c,rosters:u,...b}=p;return {...b,name:o(p.name)??"",repeatConfig:p.repeatConfig?f(p.repeatConfig):p.repeatConfig,items:g,conditions:p.conditions?p.conditions.map(l):p.conditions}};return {...e,name:o(e.name)??"",description:o(e.description),pages:e.pages.map(y)}}function ne({label:e,value:a,onChange:r,multiline:n,type:o="text",readOnly:t}){let i={width:"100%",padding:"6px 8px",border:"1px solid #e2e8f0",borderRadius:"4px",fontSize:"13px",color:t?"#64748b":"#334155",backgroundColor:t?"#f1f5f9":"#fff",outline:"none",boxSizing:"border-box",cursor:t?"not-allowed":"text"};return jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{style:{display:"block",fontSize:"12px",fontWeight:500,color:"#64748b",marginBottom:"4px"},children:e}),n?jsxRuntime.jsx("textarea",{value:a,onChange:l=>r(l.target.value),rows:3,style:i,readOnly:t}):jsxRuntime.jsx("input",{type:o,value:a,onChange:l=>r(l.target.value),style:i,readOnly:t})]})}function ft({page:e}){let{updatePage:a}=k(),r=w();return jsxRuntime.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"12px"},children:[jsxRuntime.jsx(Z,{label:r.properties.name,value:e.name,onChange:n=>a(e.code,{name:n}),testIdPrefix:"page-name"}),jsxRuntime.jsx(ne,{label:r.properties.code,value:e.code,onChange:()=>{}}),jsxRuntime.jsx("div",{children:jsxRuntime.jsxs("label",{style:{display:"flex",alignItems:"center",gap:"8px",fontSize:"13px",color:"#334155",cursor:"pointer"},children:[jsxRuntime.jsx("input",{type:"checkbox",checked:e.isRepeatable,onChange:n=>a(e.code,{isRepeatable:n.target.checked,repeatConfig:n.target.checked?{min:1,max:10}:void 0})}),r.properties.repeatablePage]})}),e.isRepeatable&&e.repeatConfig&&jsxRuntime.jsxs("div",{style:{padding:"8px",backgroundColor:"#f8fafc",borderRadius:"6px",display:"flex",flexDirection:"column",gap:"8px"},children:[jsxRuntime.jsx(ne,{label:r.properties.minInstances,value:String(e.repeatConfig.min??1),type:"number",onChange:n=>a(e.code,{repeatConfig:{...e.repeatConfig,min:parseInt(n)||1}})}),jsxRuntime.jsx(ne,{label:r.properties.maxInstances,value:String(e.repeatConfig.max??10),type:"number",onChange:n=>a(e.code,{repeatConfig:{...e.repeatConfig,max:parseInt(n)||10}})}),jsxRuntime.jsx(ne,{label:r.properties.controlVariableCode,value:e.repeatConfig.controlVariableCode??"",onChange:n=>a(e.code,{repeatConfig:{...e.repeatConfig,controlVariableCode:n||void 0}})}),jsxRuntime.jsx(Z,{label:r.properties.instanceLabel,value:e.repeatConfig.instanceLabel,onChange:n=>a(e.code,{repeatConfig:{...e.repeatConfig,instanceLabel:n}}),testIdPrefix:"page-instance-label"})]}),jsxRuntime.jsx("div",{style:{fontSize:"12px",color:"#94a3b8"},children:r.properties.pageSummary(formCore.getPageVariables(e).length,formCore.getPageRosters(e).length)})]})}var Xa=["equals","not_equals","greater_than","less_than","greater_than_or_equal","less_than_or_equal","contains","not_contains","is_empty","is_not_empty","starts_with","ends_with","in","regex"],Qa=["show","hide","validate","require","readonly","setValue"],Za=["is_empty","is_not_empty"];function ko({conditions:e,onChange:a,availableVariables:r,rosterContext:n}){let o=w(),[t,i]=zr.useState(null),l=()=>{let f={id:formCore.generateId(),action:"show",expression:""};a([...e,f]),i(f.id);},d=f=>{a(e.filter(v=>v.id!==f)),t===f&&i(null);},s=(f,v)=>{a(e.map(y=>y.id===f?{...y,...v}:y));};return jsxRuntime.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"8px"},children:[jsxRuntime.jsx("div",{style:{fontSize:"11px",fontWeight:600,color:"#64748b",textTransform:"uppercase",letterSpacing:"0.5px"},children:o.conditionBuilder.conditionsCount(e.length)}),e.map(f=>jsxRuntime.jsx(er,{condition:f,isExpanded:t===f.id,onToggle:()=>i(t===f.id?null:f.id),onUpdate:v=>s(f.id,v),onRemove:()=>d(f.id),availableVariables:r,rosterContext:n},f.id)),jsxRuntime.jsx("button",{type:"button",onClick:l,style:{padding:"6px 12px",border:"1px dashed #cbd5e1",borderRadius:"6px",backgroundColor:"transparent",color:"#2563eb",fontSize:"12px",cursor:"pointer"},children:o.conditionBuilder.addCondition})]})}function er({condition:e,isExpanded:a,onToggle:r,onUpdate:n,onRemove:o,availableVariables:t,rosterContext:i}){let l=w(),[d,s]=zr.useState(()=>ar(e.expression)),f=(b,x)=>{s(b);let h=mt(b,x);n({expression:h});},v=b=>{n({action:b});let x=mt(d,b);n({action:b,expression:x});},y=()=>{let b={id:formCore.generateId(),variableCode:"",operator:"equals",value:""},x={...d,rules:[...d.rules,b]};f(x,e.action);},p=b=>{let x={...d,rules:d.rules.filter(h=>h.id!==b)};f(x,e.action);},g=(b,x)=>{let h={...d,rules:d.rules.map(I=>I.id===b?{...I,...x}:I)};f(h,e.action);},c=b=>{let x={...d,logic:b};f(x,e.action);},u=l.conditionBuilder.actions[e.action]??e.action;return jsxRuntime.jsxs("div",{style:{border:"1px solid #e2e8f0",borderRadius:"6px",overflow:"hidden"},children:[jsxRuntime.jsxs("div",{onClick:r,style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"6px 10px",backgroundColor:"#f8fafc",cursor:"pointer",fontSize:"12px",color:"#334155"},children:[jsxRuntime.jsxs("span",{style:{fontWeight:500},children:[u,d.rules.length>0?l.conditionBuilder.rulesCount(d.rules.length):""]}),jsxRuntime.jsxs("div",{style:{display:"flex",gap:"4px"},children:[jsxRuntime.jsx("span",{style:{color:"#94a3b8"},children:a?"\u25B2":"\u25BC"}),jsxRuntime.jsx("span",{onClick:b=>{b.stopPropagation(),o();},style:{color:"#ef4444",cursor:"pointer",padding:"0 4px"},role:"button",children:"\xD7"})]})]}),a&&jsxRuntime.jsxs("div",{style:{padding:"10px",display:"flex",flexDirection:"column",gap:"8px"},children:[jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{style:{fontSize:"11px",fontWeight:500,color:"#64748b",display:"block",marginBottom:"2px"},children:l.conditionBuilder.action}),jsxRuntime.jsx("select",{value:e.action,onChange:b=>v(b.target.value),style:To,children:Qa.map(b=>jsxRuntime.jsx("option",{value:b,children:l.conditionBuilder.actions[b]},b))})]}),d.rules.length>1&&jsxRuntime.jsxs("div",{style:{display:"flex",gap:"4px",alignItems:"center"},children:[jsxRuntime.jsx("span",{style:{fontSize:"11px",color:"#64748b"},children:l.conditionBuilder.match}),jsxRuntime.jsx("button",{type:"button",onClick:()=>c("and"),style:{...gt,backgroundColor:d.logic==="and"?"#2563eb":"#f1f5f9",color:d.logic==="and"?"#fff":"#64748b"},children:l.conditionBuilder.all}),jsxRuntime.jsx("button",{type:"button",onClick:()=>c("or"),style:{...gt,backgroundColor:d.logic==="or"?"#2563eb":"#f1f5f9",color:d.logic==="or"?"#fff":"#64748b"},children:l.conditionBuilder.any})]}),d.rules.map(b=>jsxRuntime.jsxs("div",{style:{display:"flex",gap:"4px",alignItems:"center"},children:[jsxRuntime.jsxs("select",{value:b.variableCode,onChange:x=>g(b.id,{variableCode:x.target.value}),style:{...To,flex:1},children:[jsxRuntime.jsx("option",{value:"",children:l.conditionBuilder.variablePlaceholder}),t.map(x=>jsxRuntime.jsxs("option",{value:x.code,children:[x.name," (",x.code,")"]},x.code))]}),jsxRuntime.jsx("select",{value:b.operator,onChange:x=>g(b.id,{operator:x.target.value}),style:{...To,width:"130px"},children:Xa.map(x=>jsxRuntime.jsx("option",{value:x,children:l.conditionBuilder.operators[x]},x))}),!Za.includes(b.operator)&&jsxRuntime.jsx("input",{type:"text",value:b.value,onChange:x=>g(b.id,{value:x.target.value}),placeholder:l.conditionBuilder.valuePlaceholder,style:{...Ro,flex:1}}),jsxRuntime.jsx("button",{type:"button",onClick:()=>p(b.id),style:{border:"none",background:"none",color:"#ef4444",cursor:"pointer",fontSize:"14px",padding:"2px"},children:"\xD7"})]},b.id)),jsxRuntime.jsx("button",{type:"button",onClick:y,style:{padding:"4px 8px",border:"1px dashed #cbd5e1",borderRadius:"4px",backgroundColor:"transparent",color:"#64748b",fontSize:"11px",cursor:"pointer"},children:l.conditionBuilder.addRule}),e.expression&&jsxRuntime.jsx("div",{style:{padding:"6px 8px",backgroundColor:"#f0fdf4",borderRadius:"4px",fontSize:"11px",fontFamily:"monospace",color:"#166534",wordBreak:"break-all"},children:e.expression}),i&&e.expression&&(()=>{let b=formCore.RosterConditionEngine.validateCondition(e.expression,i.variables,i.currentVariableCode,i.currentVariableOrder);return b.isValid?null:jsxRuntime.jsx("div",{"data-testid":"condition-builder-roster-errors",style:{padding:"6px 8px",backgroundColor:"#fef2f2",border:"1px solid #fecaca",borderRadius:"4px",fontSize:"11px",color:"#b91c1c",display:"flex",flexDirection:"column",gap:"4px"},children:b.errors.map((x,h)=>jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("strong",{children:x.type}),x.variableCode?`: \${${x.variableCode}}`:""," \u2014 ",x.message]},h))})})(),e.action==="validate"&&jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{style:{fontSize:"11px",fontWeight:500,color:"#64748b",display:"block",marginBottom:"2px"},children:l.conditionBuilder.errorMessage}),jsxRuntime.jsx(or,{value:e.errorMessage,onChange:b=>n({errorMessage:b}),placeholder:l.conditionBuilder.errorMessagePlaceholder})]}),e.action==="setValue"&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{style:{fontSize:"11px",fontWeight:500,color:"#64748b",display:"block",marginBottom:"2px"},children:l.conditionBuilder.targetVariableCode}),jsxRuntime.jsx("input",{type:"text",value:e.targetVariableCode??"",onChange:b=>n({targetVariableCode:b.target.value||void 0}),placeholder:l.conditionBuilder.targetVariablePlaceholder,style:Ro})]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{style:{fontSize:"11px",fontWeight:500,color:"#64748b",display:"block",marginBottom:"2px"},children:l.conditionBuilder.valueToSet}),jsxRuntime.jsx("input",{type:"text",value:e.setValue!==void 0?String(e.setValue):"",onChange:b=>n({setValue:b.target.value}),placeholder:l.conditionBuilder.valueToSetPlaceholder,style:Ro})]})]})]})]})}function or({value:e,onChange:a,placeholder:r}){let o=k(t=>t.form).langConfig??formCore.DEFAULT_LANG_CONFIG;return jsxRuntime.jsx(Oe,{value:e,onChange:t=>a(t),availableLangs:o.availableLangs,defaultLang:o.defaultLang,placeholder:r,testIdPrefix:"condition-error-message"})}function tr(e){return {equals:"==",not_equals:"!=",contains:"contains",not_contains:"!contains",starts_with:"startsWith",ends_with:"endsWith",greater_than:">",less_than:"<",greater_than_or_equal:">=",less_than_or_equal:"<=",is_empty:"isEmpty",is_not_empty:"isNotEmpty",in:"in",not_in:"!in",between:"between",regex:"regex"}[e]??"=="}function mt(e,a){if(e.rules.length===0)return "";let r=e.rules.filter(o=>o.variableCode).map(o=>{let t=`\${${o.variableCode}}`,i=tr(o.operator);if(o.operator==="is_empty")return `isEmpty(${t})`;if(o.operator==="is_not_empty")return `isNotEmpty(${t})`;if(o.operator==="contains")return `contains(${t}, "${o.value}")`;if(o.operator==="starts_with")return `startsWith(${t}, "${o.value}")`;if(o.operator==="ends_with")return `endsWith(${t}, "${o.value}")`;let l=/^\d+(\.\d+)?$/.test(o.value)?o.value:`"${o.value}"`;return `${t} ${i} ${l}`});if(r.length===0)return "";let n=r.join(e.logic==="and"?" && ":" || ");return a==="show"?`show(${n})`:a==="hide"?`hide(${n})`:a==="validate"?`ConditionEval(${n})`:n}function ar(e){return {logic:"and",rules:[]}}var To={padding:"4px 6px",border:"1px solid #e2e8f0",borderRadius:"4px",fontSize:"12px",color:"#334155",outline:"none"},Ro={width:"100%",padding:"4px 6px",border:"1px solid #e2e8f0",borderRadius:"4px",fontSize:"12px",color:"#334155",outline:"none",boxSizing:"border-box"},gt={padding:"2px 8px",borderRadius:"10px",border:"none",fontSize:"10px",fontWeight:600,cursor:"pointer"};function ht({open:e,onClose:a,conditions:r,onApply:n,availableVariables:o,rosterContext:t}){let i=w(),l=zr.useRef(null),d=zr.useRef(null),[s,f]=zr.useState(r),[v,y]=zr.useState("visual");zr.useEffect(()=>{e&&(f(r),y("visual"));},[e,r]),zr.useEffect(()=>{if(!e)return;d.current=document.activeElement;let g=setTimeout(()=>{l.current?.querySelector('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])')?.focus();},0),c=u=>{if(u.key==="Escape"){u.stopPropagation(),a();return}if(u.key!=="Tab"||!l.current)return;let b=Array.from(l.current.querySelectorAll('button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])')).filter(C=>C.offsetParent!==null);if(b.length===0)return;let x=b[0],h=b[b.length-1],I=document.activeElement;u.shiftKey&&I===x?(u.preventDefault(),h.focus()):!u.shiftKey&&I===h&&(u.preventDefault(),x.focus());};return window.addEventListener("keydown",c),()=>{clearTimeout(g),window.removeEventListener("keydown",c),d.current?.focus?.();}},[e,a]);let p=zr.useCallback(()=>{n(s),a();},[s,n,a]);return e?jsxRuntime.jsx("div",{"data-testid":"conditions-modal-overlay","aria-hidden":"false",style:{position:"fixed",inset:0,zIndex:1e3,backgroundColor:"rgba(15, 23, 42, 0.55)",display:"flex",alignItems:"center",justifyContent:"center",padding:"24px"},children:jsxRuntime.jsxs("div",{ref:l,role:"dialog","aria-modal":"true","aria-labelledby":"conditions-modal-title","data-testid":"conditions-modal",style:{backgroundColor:"#fff",borderRadius:"12px",boxShadow:"0 24px 48px rgba(0,0,0,0.25)",width:"100%",maxWidth:"720px",maxHeight:"calc(100vh - 48px)",display:"flex",flexDirection:"column",overflow:"hidden",fontFamily:"system-ui, -apple-system, sans-serif"},children:[jsxRuntime.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"14px 20px",borderBottom:"1px solid #e2e8f0"},children:[jsxRuntime.jsx("h2",{id:"conditions-modal-title",style:{margin:0,fontSize:"16px",fontWeight:600,color:"#0f172a"},children:i.conditionBuilder.modalTitle(s.length)}),jsxRuntime.jsx("button",{type:"button",onClick:a,"data-testid":"conditions-modal-close","aria-label":i.conditionBuilder.closeButton,style:{border:"none",background:"none",cursor:"pointer",fontSize:"20px",color:"#64748b",padding:"4px 8px",borderRadius:"6px"},children:"\u2715"})]}),jsxRuntime.jsxs("div",{style:{display:"flex",gap:"4px",padding:"12px 20px 0",borderBottom:"1px solid #f1f5f9"},children:[jsxRuntime.jsx(Ct,{active:v==="visual",label:i.conditionBuilder.modeVisual,testId:"conditions-modal-mode-visual",onClick:()=>y("visual")}),jsxRuntime.jsx(Ct,{active:v==="manual",label:i.conditionBuilder.modeManual,testId:"conditions-modal-mode-manual",onClick:()=>y("manual")})]}),jsxRuntime.jsxs("div",{style:{flex:1,overflowY:"auto",padding:"16px 20px"},children:[v==="visual"?jsxRuntime.jsx(ko,{conditions:s,onChange:f,availableVariables:o,rosterContext:t}):jsxRuntime.jsx(lr,{conditions:s,onChange:f}),jsxRuntime.jsx(ur,{conditions:s,title:i.conditionBuilder.formulasSummary,empty:i.conditionBuilder.noConditions})]}),jsxRuntime.jsxs("div",{style:{display:"flex",justifyContent:"flex-end",gap:"8px",padding:"12px 20px",borderTop:"1px solid #e2e8f0"},children:[jsxRuntime.jsx("button",{type:"button",onClick:a,"data-testid":"conditions-modal-cancel",style:{padding:"8px 16px",border:"1px solid #cbd5e1",borderRadius:"6px",backgroundColor:"#fff",color:"#334155",fontSize:"13px",fontWeight:500,cursor:"pointer"},children:i.conditionBuilder.cancelButton}),jsxRuntime.jsx("button",{type:"button",onClick:p,"data-testid":"conditions-modal-apply",style:{padding:"8px 16px",border:"none",borderRadius:"6px",backgroundColor:"#2563eb",color:"#fff",fontSize:"13px",fontWeight:600,cursor:"pointer"},children:i.conditionBuilder.applyButton})]})]})}):null}function Ct({active:e,label:a,testId:r,onClick:n}){return jsxRuntime.jsx("button",{type:"button",onClick:n,"data-testid":r,"aria-pressed":e,style:{padding:"8px 14px",border:"none",backgroundColor:"transparent",color:e?"#2563eb":"#64748b",fontWeight:e?600:500,fontSize:"13px",cursor:"pointer",borderBottomWidth:"2px",borderBottomStyle:"solid",borderBottomColor:e?"#2563eb":"transparent",marginBottom:"-1px"},children:a})}function lr({conditions:e,onChange:a}){let r=w();if(e.length===0)return jsxRuntime.jsx("div",{style:{padding:"12px",color:"#94a3b8",fontSize:"13px",textAlign:"center",fontStyle:"italic"},children:r.conditionBuilder.noConditions});let n=(t,i)=>{a(e.map(l=>l.id===t?{...l,expression:i}:l));},o=t=>t.includes("ConditionEval(")||t.includes("||")||/show\(|hide\(|setValue\(/.test(t)===false||t.split("&&").length>2;return jsxRuntime.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"14px"},children:[jsxRuntime.jsx("p",{style:{margin:0,fontSize:"11px",color:"#64748b"},children:r.conditionBuilder.manualHelp}),e.map((t,i)=>jsxRuntime.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"6px"},children:[jsxRuntime.jsxs("label",{style:{fontSize:"11px",fontWeight:600,color:"#64748b"},children:["#",i+1," \u2014 ",r.conditionBuilder.actions[t.action]??t.action]}),jsxRuntime.jsx(cr,{value:t.expression,onChange:l=>n(t.id,l),placeholder:r.conditionBuilder.manualPlaceholder,testId:`conditions-modal-manual-${t.id}`}),o(t.expression)&&jsxRuntime.jsxs("p",{"data-testid":`conditions-modal-manual-warning-${t.id}`,style:{margin:0,fontSize:"11px",color:"#92400e",backgroundColor:"#fffbeb",border:"1px solid #fde68a",padding:"6px 8px",borderRadius:"4px"},children:["\u26A0 ",r.conditionBuilder.manualWarning]})]},t.id))]})}var sr={function:"#2563eb",variable:"#ea580c",operator:"#9333ea",string:"#16a34a",number:"#0891b2",plain:"inherit",identifier:"inherit"},dr=new Set(["show","hide","setValue","validate","require","readonly","ConditionEval","jump","contains","startsWith","endsWith","isEmpty","isNotEmpty","not_contains","in","between","regex"]);function pr(e){let a=[],r=0;for(;r<e.length;){let n=e[r];if(n==='"'||n==="'"){let o=r+1;for(;o<e.length&&e[o]!==n;)e[o]==="\\"&&o++,o++;a.push({type:"string",text:e.slice(r,Math.min(o+1,e.length))}),r=o+1;continue}if(n==="$"&&e[r+1]==="{"){let o=r+2;for(;o<e.length&&e[o]!=="}";)o++;a.push({type:"variable",text:e.slice(r,Math.min(o+1,e.length))}),r=o+1;continue}if(/[a-zA-Z_]/.test(n)){let o=r;for(;o<e.length&&/[a-zA-Z0-9_]/.test(e[o]);)o++;let t=e.slice(r,o);a.push({type:dr.has(t)?"function":"identifier",text:t}),r=o;continue}if(/\d/.test(n)){let o=r;for(;o<e.length&&/[\d.]/.test(e[o]);)o++;a.push({type:"number",text:e.slice(r,o)}),r=o;continue}if("=!<>&|".includes(n)){let o=e.slice(r,r+2);if(["==","!=","<=",">=","&&","||"].includes(o)){a.push({type:"operator",text:o}),r+=2;continue}a.push({type:"operator",text:n}),r++;continue}a.push({type:"plain",text:n}),r++;}return a}function cr({value:e,onChange:a,placeholder:r,testId:n}){let o=zr.useRef(null),t=zr.useRef(null),i=zr.useMemo(()=>pr(e),[e]),l=()=>{!o.current||!t.current||(t.current.scrollTop=o.current.scrollTop,t.current.scrollLeft=o.current.scrollLeft);},d={position:"absolute",top:0,left:0,width:"100%",height:"100%",margin:0,padding:"8px 10px",border:"none",fontFamily:'ui-monospace, "SF Mono", Menlo, Consolas, monospace',fontSize:"12.5px",lineHeight:"20px",whiteSpace:"pre-wrap",wordBreak:"break-word",boxSizing:"border-box"};return jsxRuntime.jsxs("div",{style:{position:"relative",minHeight:"60px",border:"1px solid #cbd5e1",borderRadius:"6px",backgroundColor:"#f8fafc",overflow:"hidden"},children:[jsxRuntime.jsx("div",{ref:t,"aria-hidden":"true",style:{...d,color:"#0f172a",overflow:"auto",pointerEvents:"none"},children:i.length===0?jsxRuntime.jsx("span",{style:{color:"#94a3b8"},children:r}):jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[i.map((s,f)=>jsxRuntime.jsx("span",{style:{color:sr[s.type]},children:s.text},f)),jsxRuntime.jsx("span",{children:"\u200B"})]})}),jsxRuntime.jsx("textarea",{ref:o,value:e,onChange:s=>a(s.target.value),onScroll:l,placeholder:r,"data-testid":n,spellCheck:false,style:{...d,color:"transparent",caretColor:"#0f172a",backgroundColor:"transparent",resize:"vertical",outline:"none",overflow:"auto"}})]})}function ur({conditions:e,title:a,empty:r}){return jsxRuntime.jsxs("div",{style:{marginTop:"16px",borderTop:"1px solid #e2e8f0",paddingTop:"12px"},children:[jsxRuntime.jsx("h3",{style:{margin:"0 0 8px",fontSize:"11px",fontWeight:600,color:"#64748b",textTransform:"uppercase",letterSpacing:"0.5px"},children:a}),e.length===0?jsxRuntime.jsx("p",{style:{margin:0,fontSize:"12px",color:"#94a3b8",fontStyle:"italic"},children:r}):jsxRuntime.jsx("ul",{"data-testid":"conditions-modal-summary",style:{margin:0,padding:0,listStyle:"none",display:"flex",flexDirection:"column",gap:"4px"},children:e.map(n=>jsxRuntime.jsx("li",{style:{fontFamily:'ui-monospace, "SF Mono", Menlo, Consolas, monospace',fontSize:"11.5px",color:"#0f172a",backgroundColor:"#f1f5f9",padding:"4px 8px",borderRadius:"4px",wordBreak:"break-all"},children:n.expression||"\u2205"},n.id))})]})}function Io({dataSourceId:e,dependencies:a={},availableConnectors:r,availableVariables:n,onConnectorChange:o,onDependenciesChange:t}){let i=w(),[l,d]=zr.useState(""),s=k(x=>x.availableDataSources),v=k(x=>x.form).langConfig?.defaultLang??formCore.DEFAULT_LANG_CONFIG.defaultLang,y=zr.useMemo(()=>{let x=new Map;for(let h of r)x.set(h.id,{id:h.id,name:h.name});for(let h of s){let I=typeof h.name=="string"?h.name:formCore.resolveLabel(h.name,v,v);x.set(h.code,{id:h.code,name:I});}return Array.from(x.values())},[r,s,v]),p=y.find(x=>x.id===e),g=Object.entries(a),c=()=>{l.trim()&&(t({...a,[l.trim()]:""}),d(""));},u=x=>{let h={...a};delete h[x],t(h);},b=(x,h)=>{t({...a,[x]:h});};return jsxRuntime.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"10px",padding:"8px",backgroundColor:"#f0fdf4",borderRadius:"6px"},children:[jsxRuntime.jsx("div",{style:{fontSize:"11px",fontWeight:600,color:"#166534",textTransform:"uppercase",letterSpacing:"0.5px"},children:i.dataSource.title}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{style:xr,children:i.dataSource.connector}),jsxRuntime.jsxs("select",{value:e??"",onChange:x=>{let h=x.target.value||void 0;o(h),h||t({});},style:St,children:[jsxRuntime.jsx("option",{value:"",children:i.dataSource.none}),y.map(x=>jsxRuntime.jsxs("option",{value:x.id,children:[x.name," (",x.id,")"]},x.id))]})]}),p&&jsxRuntime.jsxs("div",{style:{fontSize:"11px",color:"#166534",padding:"4px 6px",backgroundColor:"#dcfce7",borderRadius:"4px"},children:[i.dataSource.connectedTo," ",jsxRuntime.jsx("strong",{children:p.name})]}),e&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("div",{style:{fontSize:"11px",fontWeight:500,color:"#166534"},children:i.dataSource.dependencies(g.length)}),g.map(([x,h])=>jsxRuntime.jsxs("div",{style:{display:"flex",gap:"4px",alignItems:"center"},children:[jsxRuntime.jsx("span",{style:{fontSize:"11px",color:"#334155",minWidth:"60px",fontFamily:"monospace"},children:x}),jsxRuntime.jsx("span",{style:{fontSize:"11px",color:"#94a3b8"},children:"\u2192"}),jsxRuntime.jsxs("select",{value:h,onChange:I=>b(x,I.target.value),style:{...St,flex:1},children:[jsxRuntime.jsx("option",{value:"",children:i.dataSource.selectVariable}),n.map(I=>jsxRuntime.jsxs("option",{value:I.code,children:[I.name," (",I.code,")"]},I.code))]}),jsxRuntime.jsx("button",{type:"button",onClick:()=>u(x),style:{border:"none",background:"none",color:"#ef4444",cursor:"pointer",fontSize:"14px"},children:"\xD7"})]},x)),jsxRuntime.jsxs("div",{style:{display:"flex",gap:"4px"},children:[jsxRuntime.jsx("input",{type:"text",value:l,onChange:x=>d(x.target.value),placeholder:i.dataSource.dependencyKeyPlaceholder,style:{...vr,flex:1},onKeyDown:x=>x.key==="Enter"&&c()}),jsxRuntime.jsx("button",{type:"button",onClick:c,disabled:!l.trim(),style:{padding:"4px 8px",border:"1px solid #cbd5e1",borderRadius:"4px",backgroundColor:"#fff",color:"#2563eb",fontSize:"11px",cursor:"pointer",opacity:l.trim()?1:.5},children:i.dataSource.addDependency})]})]})]})}var xr={fontSize:"11px",fontWeight:500,color:"#166534",display:"block",marginBottom:"2px"},St={width:"100%",padding:"4px 6px",border:"1px solid #bbf7d0",borderRadius:"4px",fontSize:"12px",color:"#334155",outline:"none",backgroundColor:"#fff"},vr={padding:"4px 6px",border:"1px solid #bbf7d0",borderRadius:"4px",fontSize:"12px",color:"#334155",outline:"none",boxSizing:"border-box"};var kr=new Set(["type","description","placeholder","isRequired","isReadonly","isHidden","options","validationRules","conditions","expression","dataSourceId","dataSourceDependencies","style","metadata"]);function wo(e){return e==="type"?"variableType":e}function Rt({variable:e,pageCode:a,rosterCode:r,availableConnectors:n=[]}){let {form:o,updateVariable:t,setVariableOverride:i,resetVariableOverride:l,availableTemplates:d}=k(),s=w(),[f,v]=zr.useState(false),y=zr.useMemo(()=>[{value:"text",label:s.toolbox.types.text},{value:"textarea",label:s.toolbox.types.textarea},{value:"number",label:s.toolbox.types.number},{value:"date",label:s.toolbox.types.date},{value:"datetime",label:s.toolbox.types.datetime},{value:"time",label:s.toolbox.types.time},{value:"select",label:s.toolbox.types.select},{value:"multiselect",label:s.toolbox.types.multiselect},{value:"radio",label:s.toolbox.types.radio},{value:"checkbox",label:s.toolbox.types.checkbox},{value:"file",label:s.toolbox.types.file},{value:"gps",label:s.toolbox.types.gps},{value:"rating",label:s.toolbox.types.rating},{value:"calculated",label:s.toolbox.types.calculated},{value:"hidden",label:s.toolbox.types.hidden},{value:"label",label:s.toolbox.types.label}],[s]),p=!!e.templateId;p?d.find(C=>C.id===e.templateId):void 0;let c=o.langConfig?.defaultLang??formCore.DEFAULT_LANG_CONFIG.defaultLang,u=C=>{if(!p){t(a,e.code,C,r);return}let A={},R=false;for(let[_,K]of Object.entries(C))if(kr.has(_)){let $=wo(_);i(a,e.code,$,K,r);}else A[_]=K,R=true;R&&t(a,e.code,A,r);},b=C=>{if(!p)return false;let A=wo(C);return Object.prototype.hasOwnProperty.call(e.templateOverrides??{},A)},x=C=>{p&&l(a,e.code,wo(C),r);},h=C=>formCore.resolveLabel(C,c,c),I=o.pages.flatMap(C=>[...formCore.getPageVariables(C).map(A=>({code:A.code,name:h(A.name)})),...formCore.getPageRosters(C).flatMap(A=>A.variables.map(R=>({code:R.code,name:h(R.name)})))]);return jsxRuntime.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"12px"},children:[p&&jsxRuntime.jsx(Ir,{variable:e,templateCodeLabel:s.properties.templateCode,templateNameLabel:s.properties.templateName,bannerTitle:s.properties.linkedTemplate,defaultLang:c}),p?jsxRuntime.jsx(wr,{label:s.properties.templateName,value:e.name,defaultLang:c,testId:"variable-name-readonly"}):jsxRuntime.jsx(Z,{label:s.properties.name,value:e.name,onChange:C=>u({name:C}),testIdPrefix:"variable-name"}),jsxRuntime.jsx(ne,{label:p?s.properties.templateCode:s.properties.code,value:e.code,onChange:()=>{},readOnly:true}),jsxRuntime.jsx(be,{isOverridden:b("description"),onReset:()=>x("description"),resetLabel:s.properties.resetOverride,children:jsxRuntime.jsx(Z,{label:s.properties.description,value:e.description,onChange:C=>u({description:C}),testIdPrefix:"variable-description"})}),jsxRuntime.jsx(be,{isOverridden:b("placeholder"),onReset:()=>x("placeholder"),resetLabel:s.properties.resetOverride,children:jsxRuntime.jsx(Z,{label:s.properties.placeholder,value:e.placeholder,onChange:C=>u({placeholder:C}),testIdPrefix:"variable-placeholder"})}),jsxRuntime.jsx(be,{isOverridden:b("type"),onReset:()=>x("type"),resetLabel:s.properties.resetOverride,children:jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{style:{display:"block",fontSize:"12px",fontWeight:500,color:"#64748b",marginBottom:"4px"},children:s.properties.type}),jsxRuntime.jsx("select",{value:e.type,onChange:C=>u({type:C.target.value}),style:{width:"100%",padding:"6px 8px",border:"1px solid #e2e8f0",borderRadius:"4px",fontSize:"13px"},children:y.map(C=>jsxRuntime.jsx("option",{value:C.value,children:C.label},C.value))})]})}),e.type==="file"&&jsxRuntime.jsx(Pr,{value:e.fileConfig,onChange:C=>u({fileConfig:C}),labels:{title:s.properties.fileConfig,max:s.properties.fileConfigMax,min:s.properties.fileConfigMin,accept:s.properties.fileConfigAccept,acceptPlaceholder:s.properties.fileConfigAcceptPlaceholder,unlimited:s.properties.fileConfigUnlimited}}),e.type==="image"&&jsxRuntime.jsx(Lr,{value:e.imageConfig,onChange:C=>u({imageConfig:C}),labels:{title:s.properties.imageConfig,max:s.properties.imageConfigMax,min:s.properties.imageConfigMin,camera:s.properties.imageConfigCamera,unlimited:s.properties.fileConfigUnlimited}}),e.type==="rating"&&jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{style:{display:"block",fontSize:"12px",fontWeight:500,color:"#64748b",marginBottom:"4px"},children:s.properties.ratingStyle}),jsxRuntime.jsxs("select",{value:e.metadata?.ratingStyle??"star",onChange:C=>u({metadata:{...e.metadata,ratingStyle:C.target.value}}),style:{width:"100%",padding:"6px 8px",border:"1px solid #e2e8f0",borderRadius:"4px",fontSize:"13px"},children:[jsxRuntime.jsx("option",{value:"star",children:s.properties.ratingStyles.star}),jsxRuntime.jsx("option",{value:"number",children:s.properties.ratingStyles.number}),jsxRuntime.jsx("option",{value:"color",children:s.properties.ratingStyles.color})]})]}),jsxRuntime.jsxs("div",{style:{padding:"8px",backgroundColor:"#f8fafc",borderRadius:"6px",display:"flex",flexDirection:"column",gap:"6px"},children:[jsxRuntime.jsx("div",{style:{fontSize:"11px",fontWeight:600,color:"#64748b",textTransform:"uppercase"},children:s.properties.layout}),jsxRuntime.jsx(Ze,{label:s.properties.startNewRow,checked:e.startWithNewLine!==false,onChange:C=>u({startWithNewLine:C?void 0:false})}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{style:{display:"block",fontSize:"12px",fontWeight:500,color:"#64748b",marginBottom:"2px"},children:s.properties.columnSpan}),jsxRuntime.jsxs("select",{value:e.colSpan??"auto",onChange:C=>u({colSpan:C.target.value==="auto"?void 0:parseInt(C.target.value)}),style:{width:"100%",padding:"4px 8px",border:"1px solid #e2e8f0",borderRadius:"4px",fontSize:"13px"},children:[jsxRuntime.jsx("option",{value:"auto",children:s.properties.columnSpanAuto}),[1,2,3,4,5,6,7,8,9,10,11,12].map(C=>jsxRuntime.jsxs("option",{value:C,children:[C,"/12",C===6?s.properties.columnSpanHalf:C===4?s.properties.columnSpanThird:C===12?s.properties.columnSpanFull:""]},C))]})]})]}),jsxRuntime.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"6px"},children:[jsxRuntime.jsx(be,{isOverridden:b("isRequired"),onReset:()=>x("isRequired"),resetLabel:s.properties.resetOverride,inline:true,children:jsxRuntime.jsx(Ze,{label:s.properties.required,checked:e.isRequired,onChange:C=>u({isRequired:C})})}),jsxRuntime.jsx(be,{isOverridden:b("isReadonly"),onReset:()=>x("isReadonly"),resetLabel:s.properties.resetOverride,inline:true,children:jsxRuntime.jsx(Ze,{label:s.properties.readonly,checked:e.isReadonly,onChange:C=>u({isReadonly:C})})}),jsxRuntime.jsx(be,{isOverridden:b("isHidden"),onReset:()=>x("isHidden"),resetLabel:s.properties.resetOverride,inline:true,children:jsxRuntime.jsx(Ze,{label:s.properties.hidden,checked:e.isHidden,onChange:C=>u({isHidden:C})})})]}),e.type==="calculated"&&jsxRuntime.jsx(be,{isOverridden:b("expression"),onReset:()=>x("expression"),resetLabel:s.properties.resetOverride,children:jsxRuntime.jsx(ne,{label:s.properties.expression,value:e.expression??"",onChange:C=>u({expression:C||void 0}),multiline:true})}),["select","multiselect","radio"].includes(e.type)&&jsxRuntime.jsx(Io,{dataSourceId:e.dataSourceId,dependencies:e.dataSourceDependencies,availableConnectors:n,availableVariables:I,onConnectorChange:C=>u({dataSourceId:C}),onDependenciesChange:C=>u({dataSourceDependencies:Object.keys(C).length>0?C:void 0})}),["select","multiselect","radio","checkbox"].includes(e.type)&&!e.dataSourceId&&jsxRuntime.jsx(be,{isOverridden:b("options"),onReset:()=>x("options"),resetLabel:s.properties.resetOverride,children:jsxRuntime.jsx(Je,{options:e.options??[],onChange:C=>u({options:C})})}),jsxRuntime.jsx(be,{isOverridden:b("conditions"),onReset:()=>x("conditions"),resetLabel:s.properties.resetOverride,children:jsxRuntime.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"6px"},children:[jsxRuntime.jsx("label",{style:{fontSize:"11px",fontWeight:600,color:"#64748b",textTransform:"uppercase",letterSpacing:"0.5px"},children:s.conditionBuilder.conditionsCount((e.conditions??[]).length)}),jsxRuntime.jsxs("button",{type:"button","data-testid":"conditions-modal-open",onClick:()=>v(true),style:{padding:"8px 14px",border:"1px solid #cbd5e1",borderRadius:"6px",backgroundColor:"#fff",color:"#1e293b",fontSize:"13px",fontWeight:500,cursor:"pointer",textAlign:"left"},children:["\u2699 ",s.conditionBuilder.configureButton((e.conditions??[]).length)]}),(e.conditions??[]).length>0&&jsxRuntime.jsx("ul",{"data-testid":"conditions-preview",style:{margin:0,padding:0,listStyle:"none",display:"flex",flexDirection:"column",gap:"3px"},children:(e.conditions??[]).map(C=>jsxRuntime.jsx("li",{style:{fontFamily:'ui-monospace, "SF Mono", Menlo, Consolas, monospace',fontSize:"11.5px",color:"#0f172a",backgroundColor:"#f1f5f9",padding:"4px 8px",borderRadius:"4px",wordBreak:"break-all"},children:C.expression||"\u2205"},C.id))})]})}),jsxRuntime.jsx(ht,{open:f,onClose:()=>v(false),conditions:e.conditions??[],onApply:C=>u({conditions:C}),availableVariables:I,rosterContext:(()=>{if(!r)return;let C=o.pages.find(R=>R.code===a),A=C?formCore.getPageRosters(C).find(R=>R.code===r):void 0;if(A)return {variables:A.variables.map(R=>({code:R.code,order:R.order})),currentVariableCode:e.code,currentVariableOrder:e.order}})()})]})}function Ir({variable:e,templateCodeLabel:a,templateNameLabel:r,bannerTitle:n,defaultLang:o}){return jsxRuntime.jsxs("div",{"data-testid":"variable-linked-banner",style:{padding:"10px 12px",backgroundColor:"#eff6ff",border:"1px solid #bfdbfe",borderRadius:"6px",fontSize:"12px",color:"#1e40af",display:"flex",flexDirection:"column",gap:"4px"},children:[jsxRuntime.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"6px",fontWeight:600},children:[jsxRuntime.jsx("span",{children:"\u{1F517}"}),jsxRuntime.jsx("span",{children:n})]}),jsxRuntime.jsxs("div",{style:{fontSize:"11px",color:"#1e3a8a"},children:[a," : ",jsxRuntime.jsx("span",{style:{fontFamily:"monospace"},children:e.code})]}),jsxRuntime.jsxs("div",{style:{fontSize:"11px",color:"#1e3a8a"},children:[r," : ",formCore.resolveLabel(e.name,o,o)]})]})}function wr({label:e,value:a,defaultLang:r,testId:n}){return jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{style:{display:"block",fontSize:"12px",fontWeight:500,color:"#64748b",marginBottom:"4px"},children:e}),jsxRuntime.jsx("div",{"data-testid":n,style:{padding:"6px 8px",backgroundColor:"#f1f5f9",color:"#64748b",border:"1px solid #e2e8f0",borderRadius:"4px",fontSize:"13px",cursor:"not-allowed",userSelect:"text"},children:formCore.resolveLabel(a,r,r)})]})}function be({isOverridden:e,onReset:a,resetLabel:r,children:n,inline:o=false}){if(!e)return jsxRuntime.jsx(jsxRuntime.Fragment,{children:n});let t=jsxRuntime.jsxs("button",{type:"button","data-testid":"reset-override",onClick:a,style:{padding:"2px 8px",border:"1px solid #fde68a",borderRadius:"4px",backgroundColor:"#fffbeb",color:"#92400e",fontSize:"10px",cursor:"pointer",fontWeight:500},children:["\u21BA ",r]});return o?jsxRuntime.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[jsxRuntime.jsx("div",{style:{flex:1},children:n}),t]}):jsxRuntime.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"4px"},children:[n,jsxRuntime.jsx("div",{style:{display:"flex",justifyContent:"flex-end"},children:t})]})}function Ze({label:e,checked:a,onChange:r}){return jsxRuntime.jsxs("label",{style:{display:"flex",alignItems:"center",gap:"8px",fontSize:"13px",color:"#334155",cursor:"pointer"},children:[jsxRuntime.jsx("input",{type:"checkbox",checked:a,onChange:n=>r(n.target.checked)}),e]})}var kt=[1,2,3,5,10],It=[0,1,2,3];function Pr({value:e,onChange:a,labels:r}){let n=e??{},o=n.maxFiles===void 0?"unlimited":String(n.maxFiles),t=i=>{let l={};i.maxFiles!==void 0&&(l.maxFiles=i.maxFiles),i.minFiles!==void 0&&i.minFiles>0&&(l.minFiles=i.minFiles),i.accept&&(l.accept=i.accept),a(Object.keys(l).length>0?l:void 0);};return jsxRuntime.jsxs("div",{"data-testid":"file-config-section",style:wt,children:[jsxRuntime.jsx("div",{style:Pt,children:r.title}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{style:Ne,children:r.max}),jsxRuntime.jsxs("select",{"data-testid":"file-config-max",value:o,onChange:i=>{let l=i.target.value;t({...n,maxFiles:l==="unlimited"?void 0:Number(l)});},style:Be,children:[kt.map(i=>jsxRuntime.jsx("option",{value:String(i),children:i},i)),jsxRuntime.jsx("option",{value:"unlimited",children:r.unlimited})]})]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{style:Ne,children:r.min}),jsxRuntime.jsx("select",{"data-testid":"file-config-min",value:String(n.minFiles??0),onChange:i=>t({...n,minFiles:Number(i.target.value)}),style:Be,children:It.map(i=>jsxRuntime.jsx("option",{value:String(i),children:i},i))})]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{style:Ne,children:r.accept}),jsxRuntime.jsx("input",{"data-testid":"file-config-accept",type:"text",value:n.accept??"",onChange:i=>t({...n,accept:i.target.value||void 0}),placeholder:r.acceptPlaceholder,style:{...Be,fontFamily:"monospace"}})]})]})}function Lr({value:e,onChange:a,labels:r}){let n=e??{},o=n.maxImages===void 0?"unlimited":String(n.maxImages),t=i=>{let l={};i.maxImages!==void 0&&(l.maxImages=i.maxImages),i.minImages!==void 0&&i.minImages>0&&(l.minImages=i.minImages),i.allowCamera&&(l.allowCamera=true),a(Object.keys(l).length>0?l:void 0);};return jsxRuntime.jsxs("div",{"data-testid":"image-config-section",style:wt,children:[jsxRuntime.jsx("div",{style:Pt,children:r.title}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{style:Ne,children:r.max}),jsxRuntime.jsxs("select",{"data-testid":"image-config-max",value:o,onChange:i=>{let l=i.target.value;t({...n,maxImages:l==="unlimited"?void 0:Number(l)});},style:Be,children:[kt.map(i=>jsxRuntime.jsx("option",{value:String(i),children:i},i)),jsxRuntime.jsx("option",{value:"unlimited",children:r.unlimited})]})]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{style:Ne,children:r.min}),jsxRuntime.jsx("select",{"data-testid":"image-config-min",value:String(n.minImages??0),onChange:i=>t({...n,minImages:Number(i.target.value)}),style:Be,children:It.map(i=>jsxRuntime.jsx("option",{value:String(i),children:i},i))})]}),jsxRuntime.jsxs("label",{"data-testid":"image-config-camera-label",style:{display:"flex",alignItems:"center",gap:"8px",fontSize:"13px",color:"#334155",cursor:"pointer"},children:[jsxRuntime.jsx("input",{type:"checkbox","data-testid":"image-config-camera",checked:!!n.allowCamera,onChange:i=>t({...n,allowCamera:i.target.checked})}),r.camera]})]})}var wt={padding:"8px",backgroundColor:"#f0f9ff",borderRadius:"6px",display:"flex",flexDirection:"column",gap:"8px",border:"1px solid #bae6fd"},Pt={fontSize:"11px",fontWeight:600,color:"#0369a1",textTransform:"uppercase",letterSpacing:"0.5px"},Ne={display:"block",fontSize:"12px",fontWeight:500,color:"#0c4a6e",marginBottom:"2px"},Be={width:"100%",padding:"6px 8px",border:"1px solid #bae6fd",borderRadius:"4px",fontSize:"13px",color:"#0f172a",outline:"none",backgroundColor:"#fff"};function Dt({roster:e,pageCode:a}){let{updateRoster:r}=k(),n=w(),o=zr.useMemo(()=>[{value:"check",label:n.properties.rosterTypes.check},{value:"list",label:n.properties.rosterTypes.list},{value:"collection",label:n.properties.rosterTypes.collection},{value:"collection_extend",label:n.properties.rosterTypes.collection_extend}],[n]);return jsxRuntime.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"12px"},children:[jsxRuntime.jsx(Z,{label:n.properties.name,value:e.name,onChange:t=>r(a,e.code,{name:t}),testIdPrefix:"roster-name"}),jsxRuntime.jsx(ne,{label:n.properties.code,value:e.code,onChange:()=>{}}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{style:{display:"block",fontSize:"12px",fontWeight:500,color:"#64748b",marginBottom:"4px"},children:n.properties.rosterType}),jsxRuntime.jsx("select",{value:e.rosterType,onChange:t=>r(a,e.code,{rosterType:t.target.value}),style:{width:"100%",padding:"6px 8px",border:"1px solid #e2e8f0",borderRadius:"4px",fontSize:"13px"},children:o.map(t=>jsxRuntime.jsx("option",{value:t.value,children:t.label},t.value))})]}),jsxRuntime.jsx(ne,{label:n.properties.pilotVariableCode,value:e.pilotVariableCode??"",onChange:t=>r(a,e.code,{pilotVariableCode:t||void 0})}),jsxRuntime.jsx("div",{style:{fontSize:"12px",color:"#94a3b8"},children:n.properties.rosterSummary(e.variables.length,e.options?.length??0)})]})}function Lo({availableConnectors:e=[]}){let{selection:a,form:r}=k(),n=w(),o=(()=>{switch(a.type){case "form":return jsxRuntime.jsx(Ee,{});case "page":{let t=r.pages.find(i=>i.code===a.pageCode);return t?jsxRuntime.jsx(ft,{page:t}):jsxRuntime.jsx(Ee,{})}case "roster":{let t=r.pages.find(l=>l.code===a.pageCode),i=t?formCore.getPageRosters(t).find(l=>l.code===a.rosterCode):void 0;return !t||!i?jsxRuntime.jsx(Ee,{}):jsxRuntime.jsx(Dt,{roster:i,pageCode:t.code})}case "variable":{let t=r.pages.find(s=>s.code===a.pageCode);if(!t)return jsxRuntime.jsx(Ee,{});let i=a.rosterCode?formCore.getPageRosters(t).find(s=>s.code===a.rosterCode):void 0,d=(i?i.variables:formCore.getPageVariables(t)).find(s=>s.code===a.variableCode);return d?jsxRuntime.jsx(Rt,{variable:d,pageCode:t.code,rosterCode:a.rosterCode,availableConnectors:e}):jsxRuntime.jsx(Ee,{})}}})();return jsxRuntime.jsxs("div",{style:{width:"300px",borderLeft:"1px solid #e2e8f0",backgroundColor:"#fff",overflowY:"auto"},children:[jsxRuntime.jsx("div",{style:{padding:"12px 16px",borderBottom:"1px solid #e2e8f0",fontSize:"12px",fontWeight:600,color:"#64748b",textTransform:"uppercase",letterSpacing:"0.5px"},children:n.properties.title}),jsxRuntime.jsx("div",{style:{padding:"16px"},children:o})]})}function Mr({theme:e,dataSources:a,adapter:r,initialForm:n,formId:o,onChange:t,onSave:i,labels:l,PreviewComponent:d,ToolboxComponent:s,CanvasComponent:f,Wrapper:v}){let{form:y,view:p,setForm:g,setAdapter:c,load:u,setAvailableTemplates:b,setAvailableScopes:x,setAvailableDataSources:h}=k(),I=zr.useMemo(()=>qe(xe,l),[l]);zr.useEffect(()=>{r&&c(r);},[r,c]),zr.useEffect(()=>{n?g(n):o&&r?.loadForm&&u(o);},[n,o]);let C=(y.scopeIds??[]).join("|");zr.useEffect(()=>{let E=y.scopeIds??[];if(E.length===0||!r?.loadTemplates){b([]);return}let N=r.loadTemplates,z=false;return Promise.all(E.map(m=>N(m).catch(()=>[]))).then(m=>{if(z)return;let D=new Set,V=[];for(let X of m)for(let j of X)D.has(j.code)||(D.add(j.code),V.push(j));b(V);}).catch(()=>{z||b([]);}),()=>{z=true;}},[C,r,b]),zr.useEffect(()=>{if(!r?.loadScopes){x([]);return}let E=false;return r.loadScopes().then(N=>{E||x(N);}).catch(()=>{E||x([]);}),()=>{E=true;}},[r,x]),zr.useEffect(()=>{let E=y.scopeIds??[];if(E.length===0||!r?.loadDataSources){h([]);return}let N=r.loadDataSources,z=false;return Promise.all(E.map(m=>N(m).catch(()=>[]))).then(m=>{if(z)return;let D=new Set,V=[];for(let X of m)for(let j of X)D.has(j.code)||(D.add(j.code),V.push(j));h(V);}).catch(()=>{z||h([]);}),()=>{z=true;}},[C,r,h]);let A=zr.useRef(t),R=zr.useRef(true);A.current=t,zr.useEffect(()=>{if(R.current){R.current=false;return}A.current?.(y);},[y]);let _=s??Ye,K=f??Xe,$=zr.useRef(false);v&&!$.current&&typeof console<"u"&&($.current=true,console.warn("[@msbci/form-editor] FormEditor.Wrapper is deprecated \u2014 drag & drop is now provided by the internal DndManager. The custom Wrapper will still be applied AROUND DndManager, but you should remove it."));let Y=v??zr__default.default.Fragment,S=jsxRuntime.jsxs("div",{style:{display:"flex",flexDirection:"column",height:"100%",fontFamily:"system-ui, -apple-system, sans-serif"},children:[jsxRuntime.jsx(bo,{onSave:i}),jsxRuntime.jsxs("div",{style:{display:"flex",flex:1,overflow:"hidden"},children:[p==="canvas"&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(_,{}),jsxRuntime.jsx(K,{}),jsxRuntime.jsx(Lo,{availableConnectors:a?Object.values(a):[]})]}),p==="preview"&&d&&jsxRuntime.jsx("div",{style:{flex:1,overflow:"auto"},children:jsxRuntime.jsx(d,{formSchema:y,theme:e,dataSources:a,mode:"fill"})}),p==="preview"&&!d&&jsxRuntime.jsx("div",{style:{flex:1,display:"flex",alignItems:"center",justifyContent:"center",color:"#94a3b8",fontSize:"14px"},children:I.formEditor.previewMissing}),p==="json"&&jsxRuntime.jsx("div",{style:{flex:1,overflow:"auto",padding:"16px"},children:jsxRuntime.jsx("pre",{style:{fontFamily:"monospace",fontSize:"12px",color:"#334155",backgroundColor:"#f8fafc",padding:"16px",borderRadius:"8px",border:"1px solid #e2e8f0",whiteSpace:"pre-wrap",wordBreak:"break-all"},children:JSON.stringify(y,null,2)})})]})]});return jsxRuntime.jsx(We,{labels:I,children:jsxRuntime.jsx(Y,{children:jsxRuntime.jsx(Co,{children:S})})})}function _r(){let e=w(),[a,r]=zr.useState("fields"),[n,o]=zr.useState(""),{form:t,selection:i,addVariable:l,addRoster:d,addVariableFromTemplate:s,availableTemplates:f}=k(),v=zr.useMemo(()=>[{label:e.toolbox.groupText,items:[{kind:"variable",type:"text",label:e.toolbox.types.text,icon:"T"},{kind:"variable",type:"textarea",label:e.toolbox.types.textarea,icon:"\xB6"},{kind:"variable",type:"number",label:e.toolbox.types.number,icon:"#"},{kind:"variable",type:"email",label:e.toolbox.types.email,icon:"@"}]},{label:e.toolbox.groupSelection,items:[{kind:"variable",type:"select",label:e.toolbox.types.select,icon:"\u25BC"},{kind:"variable",type:"multiselect",label:e.toolbox.types.multiselect,icon:"\u2611"},{kind:"variable",type:"radio",label:e.toolbox.types.radio,icon:"\u25C9"},{kind:"variable",type:"checkbox",label:e.toolbox.types.checkbox,icon:"\u2610"}]},{label:e.toolbox.groupDateTime,items:[{kind:"variable",type:"date",label:e.toolbox.types.date,icon:"\u{1F4C5}"},{kind:"variable",type:"datetime",label:e.toolbox.types.datetime,icon:"\u{1F550}"},{kind:"variable",type:"time",label:e.toolbox.types.time,icon:"\u23F0"}]},{label:e.toolbox.groupMedia,items:[{kind:"variable",type:"file",label:e.toolbox.types.file,icon:"\u{1F4CE}"},{kind:"variable",type:"image",label:e.toolbox.types.image,icon:"\u{1F5BC}"},{kind:"variable",type:"gps",label:e.toolbox.types.gps,icon:"\u{1F4CD}"}]},{label:e.toolbox.groupAdvanced,items:[{kind:"variable",type:"rating",label:e.toolbox.types.rating,icon:"\u2605"},{kind:"variable",type:"calculated",label:e.toolbox.types.calculated,icon:"fx"},{kind:"variable",type:"hidden",label:e.toolbox.types.hidden,icon:"\u{1F441}"},{kind:"variable",type:"label",label:e.toolbox.types.label,icon:"Aa"}]},{label:e.toolbox.groupRoster,items:[{kind:"roster",rosterType:"check",label:e.toolbox.typeRosterCheck,icon:"\u25A4"},{kind:"roster",rosterType:"list",label:e.toolbox.typeRosterList,icon:"\u25A6"},{kind:"roster",rosterType:"collection",label:e.toolbox.typeRosterCollection,icon:"\u25A5"},{kind:"roster",rosterType:"collection_extend",label:e.toolbox.typeRosterCollectionExtend,icon:"\u25A9"}]}],[e]),y=i.type==="page"||i.type==="variable"||i.type==="roster"?i.pageCode:t.pages[0]?.code,p=u=>{if(!y||!t.pages.find(h=>h.code===y))return;if(u.kind==="roster"){let h=`ROSTER_${Date.now().toString(36).slice(-4).toUpperCase()}`;d(y,{id:`roster-${Date.now()}`,code:h,name:e.canvas.newRosterName,rosterType:u.rosterType,order:0,variables:[]});return}let x=`${u.type.toUpperCase()}_${Date.now().toString(36).slice(-4).toUpperCase()}`;l(y,{id:`var-${Date.now()}`,code:x,name:e.canvas.newVariableName(u.label),type:u.type,order:0,isRequired:false,isReadonly:false,isHidden:false});},g=u=>{y&&s(y,u);},c=v.map(u=>({...u,items:u.items.filter(b=>b.label.toLowerCase().includes(n.toLowerCase()))})).filter(u=>u.items.length>0);return jsxRuntime.jsxs("div",{style:{width:"220px",borderRight:"1px solid #e2e8f0",display:"flex",flexDirection:"column",backgroundColor:"#f8fafc",overflow:"hidden"},children:[jsxRuntime.jsx(Wr,{tab:a,setTab:r,labels:e}),jsxRuntime.jsx("div",{style:{padding:"12px",borderBottom:"1px solid #e2e8f0"},children:jsxRuntime.jsx("input",{type:"text",placeholder:e.toolbox.searchPlaceholder,value:n,onChange:u=>o(u.target.value),style:{width:"100%",padding:"6px 10px",border:"1px solid #e2e8f0",borderRadius:"6px",fontSize:"13px",outline:"none",boxSizing:"border-box"}})}),jsxRuntime.jsxs("div",{style:{flex:1,overflowY:"auto",padding:"8px"},children:[!y&&jsxRuntime.jsx("div",{style:{padding:"12px",color:"#94a3b8",fontSize:"12px",textAlign:"center"},children:e.toolbox.addPageFirst}),a==="fields"&&c.map(u=>jsxRuntime.jsxs("div",{style:{marginBottom:"16px"},children:[jsxRuntime.jsx("div",{style:{fontSize:"11px",fontWeight:600,color:"#94a3b8",textTransform:"uppercase",letterSpacing:"0.5px",marginBottom:"6px",padding:"0 4px"},children:u.label}),u.items.map(b=>{let x=b.kind==="roster"?`roster-${b.rosterType}`:`var-${b.type}`,h=b.kind==="roster"?`toolbox-roster-${b.rosterType}`:`toolbox-variable-${b.type}`;return jsxRuntime.jsxs("div",{"data-testid":h,onClick:()=>p(b),style:{display:"flex",alignItems:"center",gap:"8px",padding:"6px 8px",marginBottom:"2px",borderRadius:"6px",cursor:"pointer",fontSize:"13px",color:"#334155",userSelect:"none"},onMouseEnter:I=>{I.currentTarget.style.backgroundColor="#e2e8f0";},onMouseLeave:I=>{I.currentTarget.style.backgroundColor="transparent";},children:[jsxRuntime.jsx("span",{style:{width:"20px",textAlign:"center",fontSize:"14px"},children:b.icon}),jsxRuntime.jsx("span",{children:b.label})]},x)})]},u.label)),a==="variables"&&jsxRuntime.jsx(qr,{templates:f,scopeIds:t.scopeIds,search:n,onAdd:g,defaultLang:t.langConfig?.defaultLang??formCore.DEFAULT_LANG_CONFIG.defaultLang,labels:e})]})]})}function Wr({tab:e,setTab:a,labels:r}){let n={flex:1,padding:"8px 0",fontSize:"12px",fontWeight:500,textAlign:"center",cursor:"pointer",userSelect:"none",color:"#64748b",borderBottomWidth:"2px",borderBottomStyle:"solid",borderBottomColor:"transparent"},o={...n,color:"#2563eb",fontWeight:600,borderBottomColor:"#2563eb"};return jsxRuntime.jsxs("div",{style:{display:"flex",borderBottom:"1px solid #e2e8f0",backgroundColor:"#fff"},children:[jsxRuntime.jsx("div",{role:"tab","aria-selected":e==="fields","data-testid":"toolbox-tab-fields",onClick:()=>a("fields"),style:e==="fields"?o:n,children:r.toolbox.tabFields}),jsxRuntime.jsx("div",{role:"tab","aria-selected":e==="variables","data-testid":"toolbox-tab-variables",onClick:()=>a("variables"),style:e==="variables"?o:n,children:r.toolbox.tabVariables})]})}function qr({templates:e,scopeIds:a,search:r,onAdd:n,defaultLang:o,labels:t}){let i=s=>jsxRuntime.jsx("div",{"data-testid":"toolbox-variables-empty",style:{padding:"14px",color:"#94a3b8",fontSize:"12px",textAlign:"center",fontStyle:"italic"},children:s});if(!a||a.length===0)return i(t.toolbox.noScope);if(e.length===0)return i(t.toolbox.noTemplates);let l=r.toLowerCase(),d=e.filter(s=>{if(!l)return true;let f=s.code.toLowerCase().includes(l),v=Et(s.name,o).toLowerCase().includes(l);return f||v}).slice().sort((s,f)=>s.code.localeCompare(f.code));return d.length===0?i(t.toolbox.noTemplates):jsxRuntime.jsx("div",{style:{display:"flex",flexDirection:"column",gap:"4px"},children:d.map(s=>jsxRuntime.jsxs("div",{"data-testid":`toolbox-template-${s.code}`,onClick:()=>n(s),style:{display:"flex",alignItems:"center",gap:"8px",padding:"6px 8px",borderRadius:"6px",cursor:"pointer",fontSize:"13px",color:"#334155",userSelect:"none"},onMouseEnter:f=>{f.currentTarget.style.backgroundColor="#e2e8f0";},onMouseLeave:f=>{f.currentTarget.style.backgroundColor="transparent";},children:[jsxRuntime.jsx("span",{style:{fontSize:"10px",fontWeight:600,padding:"2px 6px",borderRadius:"4px",backgroundColor:"#e0e7ff",color:"#3730a3",textTransform:"uppercase",letterSpacing:"0.3px",minWidth:"42px",textAlign:"center"},children:s.variableType}),jsxRuntime.jsxs("div",{style:{display:"flex",flexDirection:"column",minWidth:0,flex:1},children:[jsxRuntime.jsx("span",{style:{fontFamily:"monospace",fontSize:"11px",color:"#475569",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:s.code}),jsxRuntime.jsx("span",{style:{fontSize:"12px",color:"#1e293b",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:Et(s.name,o)})]})]},s.id))})}function Et(e,a){return formCore.resolveLabel(e,a,a)}function Eo(){let a=k(r=>r.form).langConfig?.defaultLang??formCore.DEFAULT_LANG_CONFIG.defaultLang;return r=>formCore.resolveLabel(r,a,a)}function Jr(e){let a=e.slice().sort((o,t)=>o.order-t.order),r=[],n=null;for(let o of a){if(formCore.isPageRoster(o)){n&&(r.push({kind:"variables",variables:n}),n=null),r.push({kind:"roster",roster:o});continue}let t=o;t.startWithNewLine===false&&n&&n.length>0?n.push(t):(n&&r.push({kind:"variables",variables:n}),n=[t]);}return n&&r.push({kind:"variables",variables:n}),r}function Kr(){let{form:e,select:a}=k(),r=w(),n=o=>{o.target===o.currentTarget&&a({type:"form"});};return e.pages.length===0?jsxRuntime.jsx("div",{"data-testid":"canvas-empty",onClick:n,style:{flex:1,display:"flex",alignItems:"center",justifyContent:"center",color:"#94a3b8",fontSize:"14px",cursor:"pointer"},children:r.canvas.emptyStateNoPage}):jsxRuntime.jsx("div",{"data-testid":"canvas-root",onClick:n,style:{flex:1,overflowY:"auto",padding:"16px",backgroundColor:"#fff"},children:e.pages.slice().sort((o,t)=>o.order-t.order).map(o=>jsxRuntime.jsx(Yr,{page:o},o.code))})}function Yr({page:e}){let{selection:a,select:r,removePage:n}=k(),o=w(),t=Eo(),i=a.type==="page"&&a.pageCode===e.code,l=e.items??[...formCore.getPageVariables(e),...e.rosters??[]],d=l.filter(formCore.isPageVariable).length,s=l.filter(formCore.isPageRoster).length,f=Jr(l);return jsxRuntime.jsxs("div",{style:{marginBottom:"16px",border:`2px solid ${i?"#2563eb":"#e2e8f0"}`,borderRadius:"8px",overflow:"hidden"},children:[jsxRuntime.jsxs("div",{onClick:()=>r({type:"page",pageCode:e.code}),style:{padding:"10px 14px",backgroundColor:i?"#eff6ff":"#f8fafc",borderBottom:"1px solid #e2e8f0",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"space-between"},children:[jsxRuntime.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[jsxRuntime.jsx("span",{style:{fontSize:"14px",fontWeight:600,color:"#1e293b"},children:t(e.name)||o.canvas.unnamedPage}),e.isRepeatable&&jsxRuntime.jsx("span",{style:{fontSize:"10px",padding:"1px 6px",borderRadius:"4px",backgroundColor:"#dbeafe",color:"#2563eb",fontWeight:500},children:o.canvas.repeatable})]}),jsxRuntime.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[jsxRuntime.jsx("span",{style:{fontSize:"12px",color:"#94a3b8"},children:o.canvas.fieldsRostersCount(d,s)}),jsxRuntime.jsx("button",{onClick:v=>{v.stopPropagation(),n(e.code);},style:{border:"none",background:"none",color:"#ef4444",cursor:"pointer",fontSize:"14px",padding:"2px 4px"},children:"\xD7"})]})]}),jsxRuntime.jsxs("div",{style:{padding:"4px 0"},children:[f.map((v,y)=>v.kind==="roster"?jsxRuntime.jsx(Xr,{roster:v.roster,pageCode:e.code},`r-${v.roster.code}`):v.variables.length===1?jsxRuntime.jsx(Ao,{variable:v.variables[0],pageCode:e.code},v.variables[0].code):jsxRuntime.jsx("div",{style:{display:"flex",gap:"2px",backgroundColor:"#f0f4ff",borderLeft:"2px solid #c7d2fe",margin:"1px 0"},children:v.variables.map(p=>jsxRuntime.jsx("div",{style:{flex:p.colSpan?`0 0 ${p.colSpan/12*100}%`:"1 1 0%",minWidth:0},children:jsxRuntime.jsx(Ao,{variable:p,pageCode:e.code})},p.code))},`row-${y}`)),l.length===0&&jsxRuntime.jsx("div",{style:{padding:"12px 14px",color:"#94a3b8",fontSize:"12px",fontStyle:"italic"},children:o.canvas.emptyStatePage})]})]})}function Ao({variable:e,pageCode:a,rosterCode:r}){let{selection:n,select:o,removeVariable:t}=k(),i=w(),l=Eo(),d=n.type==="variable"&&n.variableCode===e.code;return jsxRuntime.jsxs("div",{onClick:s=>{s.stopPropagation(),o({type:"variable",pageCode:a,variableCode:e.code,rosterCode:r});},style:{display:"flex",alignItems:"center",gap:"8px",padding:"6px 14px",cursor:"pointer",backgroundColor:d?"#eff6ff":"transparent",borderLeft:d?"3px solid #2563eb":"3px solid transparent",fontSize:"13px"},children:[jsxRuntime.jsx("span",{style:{color:"#94a3b8",fontSize:"11px",width:"60px",flexShrink:0},children:e.type}),jsxRuntime.jsx("span",{style:{color:"#334155",flex:1},children:l(e.name)||e.code}),e.isRequired&&jsxRuntime.jsx("span",{style:{color:"#ef4444",fontSize:"11px"},children:"*"}),e.conditions&&e.conditions.length>0&&jsxRuntime.jsx("span",{style:{color:"#f59e0b",fontSize:"11px"},title:i.canvas.hasConditionsTitle,children:"\u26A1"}),e.dataSourceId&&jsxRuntime.jsx("span",{style:{color:"#22c55e",fontSize:"11px"},title:i.canvas.dataSourceConnectedTitle,children:"\u27F3"}),jsxRuntime.jsx("button",{onClick:s=>{s.stopPropagation(),t(a,e.code,r);},style:{border:"none",background:"none",color:"#ef4444",cursor:"pointer",fontSize:"12px",padding:"0 2px",opacity:.5},children:"\xD7"})]})}function Xr({roster:e,pageCode:a}){let{selection:r,select:n,removeRoster:o,addVariable:t}=k(),i=w(),l=Eo(),d=r.type==="roster"&&r.rosterCode===e.code,s=f=>{f.stopPropagation();let v=`RV_${Date.now().toString(36).slice(-4).toUpperCase()}`;t(a,{id:`var-${Date.now()}`,code:v,name:i.canvas.newFieldName,type:"text",order:e.variables.length,isRequired:false,isReadonly:false,isHidden:false},e.code);};return jsxRuntime.jsxs("div",{style:{margin:"4px 8px",border:`1px solid ${d?"#2563eb":"#e2e8f0"}`,borderRadius:"6px",overflow:"hidden"},children:[jsxRuntime.jsxs("div",{onClick:f=>{f.stopPropagation(),n({type:"roster",pageCode:a,rosterCode:e.code});},style:{padding:"6px 10px",backgroundColor:d?"#fef3c7":"#fffbeb",fontSize:"12px",fontWeight:600,color:"#92400e",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"space-between"},children:[jsxRuntime.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"6px"},children:[jsxRuntime.jsxs("span",{children:["\u25A4 ",l(e.name)||e.code]}),jsxRuntime.jsx("span",{style:{fontSize:"10px",padding:"1px 4px",borderRadius:"3px",backgroundColor:"#fde68a",color:"#78350f"},children:e.rosterType}),e.pilotVariableCode&&jsxRuntime.jsxs("span",{style:{fontSize:"10px",color:"#92400e",fontWeight:400},children:[i.canvas.pilotPrefix," ",e.pilotVariableCode]})]}),jsxRuntime.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"4px"},children:[jsxRuntime.jsx("span",{style:{fontSize:"11px",color:"#b45309"},children:i.canvas.rosterVarsCount(e.variables.length)}),jsxRuntime.jsx("button",{onClick:f=>{f.stopPropagation(),o(a,e.code);},style:{border:"none",background:"none",color:"#ef4444",cursor:"pointer",fontSize:"12px"},children:"\xD7"})]})]}),e.variables.slice().sort((f,v)=>f.order-v.order).map(f=>jsxRuntime.jsx(Ao,{variable:f,pageCode:a,rosterCode:e.code},f.code)),jsxRuntime.jsx("div",{style:{padding:"4px 10px",borderTop:"1px solid #fde68a"},children:jsxRuntime.jsx("button",{onClick:s,style:{padding:"2px 8px",borderRadius:"3px",border:"1px dashed #d4a843",backgroundColor:"transparent",color:"#92400e",fontSize:"10px",cursor:"pointer"},children:i.canvas.addFieldToRoster})})]})}exports.Canvas=Xe;exports.CanvasDnd=Xe;exports.CanvasSimple=Kr;exports.ConditionBuilder=ko;exports.DataSourceConfigManager=oo;exports.DataSourceSelector=Io;exports.DndManager=Co;exports.EditorLabelsProvider=We;exports.EditorToolbar=bo;exports.FormEditor=Mr;exports.PropertiesPanel=Lo;exports.ScopeManagerDialog=fo;exports.Toolbox=Ye;exports.ToolboxDnd=Ye;exports.ToolboxSimple=_r;exports.VariableTemplateManager=co;exports.createDragEndHandler=dt;exports.defaultLabels=xe;exports.enLabels=Oo;exports.frLabels=xe;exports.mergeLabels=qe;exports.useEditorStore=k;exports.useLabels=w;//# sourceMappingURL=index.cjs.map
|
|
1
|
+
'use strict';var zr=require('react'),zustand=require('zustand'),formCore=require('@msbci/form-core'),jsxRuntime=require('react/jsx-runtime'),core=require('@dnd-kit/core'),sortable=require('@dnd-kit/sortable'),utilities=require('@dnd-kit/utilities');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var zr__default=/*#__PURE__*/_interopDefault(zr);function Vo(e,a){return {itemType:"variable",id:formCore.generateId(),code:e.code,name:e.name,type:e.variableType,order:a,isRequired:e.isRequired??false,isReadonly:e.isReadonly??false,isHidden:e.isHidden??false,description:e.description,placeholder:e.placeholder,options:e.options,validationRules:e.validationRules,conditions:e.conditions,expression:e.expression,dataSourceId:e.dataSourceId,dataSourceDependencies:e.dataSourceDependencies,style:e.style,metadata:e.metadata,templateId:e.id,templateOverrides:{}}}function Mo(e,a,r){return a==="variableType"?{...e,type:r}:{...e,[a]:r}}function _t(e,a){return a==="variableType"?e.variableType:e[a]}var Wt=50;function qt(){return {id:"",code:"",name:"New Form",version:"1.0.0",isPublished:false,pages:[]}}function J(e,a){let r=Array.isArray(e.items)?e.items:[...formCore.getPageVariables(e),...formCore.getPageRosters(e)],{variables:n,rosters:o,...t}=e;return {...t,items:a(r)}}var k=zustand.create((e,a)=>{function r(o){let t=a(),i={form:formCore.deepClone(t.form),description:o,timestamp:Date.now()},l=t.history.slice(0,t.historyIndex+1);l.push(i),l.length>Wt&&l.shift(),e({history:l,historyIndex:l.length-1});}function n(o,t){r(o);let i=a(),l=t(formCore.deepClone(i.form));e({form:l,isDirty:true});}return {form:qt(),formTypes:[],selection:{type:"form"},view:"canvas",isDirty:false,isSaving:false,history:[],historyIndex:-1,adapter:null,availableTemplates:[],availableScopes:[],availableDataSources:[],setForm:o=>{e({form:formCore.migrateFormToItems(formCore.deepClone(o)),isDirty:false,history:[],historyIndex:-1,selection:{type:"form"}});},updateFormMeta:o=>{n("Update form metadata",t=>({...t,...o}));},addPage:o=>{let t=Array.isArray(o.items)?o:{...o,items:[...o.variables??[],...o.rosters??[]]};n(`Add page "${t.name}"`,i=>({...i,pages:[...i.pages,t]}));},updatePage:(o,t)=>{n(`Update page "${o}"`,i=>({...i,pages:i.pages.map(l=>l.code===o?{...l,...t}:l)}));},removePage:o=>{n(`Remove page "${o}"`,i=>({...i,pages:i.pages.filter(l=>l.code!==o)}));let t=a();t.selection.type==="page"&&t.selection.pageCode===o&&e({selection:{type:"form"}});},reorderPages:o=>{n("Reorder pages",t=>{let i=new Map(t.pages.map(d=>[d.code,d])),l=o.map((d,s)=>{let f=i.get(d);return f?{...f,order:s}:void 0}).filter(d=>d!==void 0);return {...t,pages:l}});},addRoster:(o,t)=>{n(`Add roster "${t.name}" to page "${o}"`,i=>({...i,pages:i.pages.map(l=>l.code!==o?l:J(l,d=>[...d,{...t,itemType:"roster",order:d.length}]))}));},updateRoster:(o,t,i)=>{n(`Update roster "${t}"`,l=>({...l,pages:l.pages.map(d=>d.code!==o?d:J(d,s=>s.map(f=>formCore.isPageRoster(f)&&f.code===t?{...f,...i,itemType:"roster"}:f)))}));},removeRoster:(o,t)=>{n(`Remove roster "${t}"`,i=>({...i,pages:i.pages.map(l=>l.code!==o?l:J(l,d=>d.filter(s=>!(formCore.isPageRoster(s)&&s.code===t))))}));},addVariable:(o,t,i)=>{n(`Add variable "${t.name}"`,l=>({...l,pages:l.pages.map(d=>d.code!==o?d:i?J(d,s=>s.map(f=>formCore.isPageRoster(f)&&f.code===i?{...f,variables:[...f.variables,t]}:f)):J(d,s=>[...s,{...t,itemType:"variable",order:s.length}]))}));},updateVariable:(o,t,i,l)=>{n(`Update variable "${t}"`,d=>({...d,pages:d.pages.map(s=>s.code!==o?s:l?J(s,f=>f.map(v=>formCore.isPageRoster(v)&&v.code===l?{...v,variables:v.variables.map(y=>y.code===t?{...y,...i}:y)}:v)):J(s,f=>f.map(v=>formCore.isPageVariable(v)&&v.code===t?{...v,...i,itemType:"variable"}:v)))}));},removeVariable:(o,t,i)=>{n(`Remove variable "${t}"`,l=>({...l,pages:l.pages.map(d=>d.code!==o?d:i?J(d,s=>s.map(f=>formCore.isPageRoster(f)&&f.code===i?{...f,variables:f.variables.filter(v=>v.code!==t)}:f)):J(d,s=>s.filter(f=>!(formCore.isPageVariable(f)&&f.code===t))))}));},addVariableFromTemplate:(o,t,i)=>{n(`Add variable from template "${t.code}"`,l=>({...l,pages:l.pages.map(d=>d.code!==o?d:i?J(d,s=>s.map(f=>{if(!(formCore.isPageRoster(f)&&f.code===i))return f;let v=Vo(t,f.variables.length);return {...f,variables:[...f.variables,v]}})):J(d,s=>[...s,Vo(t,s.length)]))}));},setVariableOverride:(o,t,i,l,d)=>{n(`Override "${String(i)}" on "${t}"`,s=>({...s,pages:s.pages.map(f=>{if(f.code!==o)return f;let v=y=>{let p={...y.templateOverrides??{},[i]:l};return {...Mo(y,i,l),templateOverrides:p}};return d?J(f,y=>y.map(p=>formCore.isPageRoster(p)&&p.code===d?{...p,variables:p.variables.map(b=>b.code===t?v(b):b)}:p)):J(f,y=>y.map(p=>formCore.isPageVariable(p)&&p.code===t?v(p):p))})}));},resetVariableOverride:(o,t,i,l)=>{let d=a().availableTemplates;n(`Reset override "${String(i)}" on "${t}"`,s=>({...s,pages:s.pages.map(f=>{if(f.code!==o)return f;let v=y=>{let p={...y.templateOverrides??{}};delete p[i];let b=y.templateId?d.find(g=>g.id===y.templateId):void 0,c=b?_t(b,i):void 0;return {...Mo(y,i,c),templateOverrides:p}};return l?J(f,y=>y.map(p=>formCore.isPageRoster(p)&&p.code===l?{...p,variables:p.variables.map(b=>b.code===t?v(b):b)}:p)):J(f,y=>y.map(p=>formCore.isPageVariable(p)&&p.code===t?v(p):p))})}));},moveVariable:(o,t,i,l,d,s)=>{n(`Move variable "${i}"`,f=>{let v,y=f.pages.map(b=>b.code!==o?b:d?J(b,c=>c.map(u=>{if(!(formCore.isPageRoster(u)&&u.code===d))return u;let g=u.variables.find(x=>x.code===i);return g&&(v={...g}),{...u,variables:u.variables.filter(x=>x.code!==i)}})):J(b,c=>c.filter(u=>formCore.isPageVariable(u)&&u.code===i?(v={...u},false):true)));if(!v)return f;v={...v,order:l,itemType:"variable"};let p=y.map(b=>b.code!==t?b:s?J(b,c=>c.map(u=>formCore.isPageRoster(u)&&u.code===s?{...u,variables:[...u.variables,v].sort((g,x)=>g.order-x.order)}:u)):J(b,c=>[...c,v].sort((u,g)=>u.order-g.order)));return {...f,pages:p}});},moveItem:(o,t,i)=>{n(`Reorder page items in "${o}"`,l=>({...l,pages:l.pages.map(d=>d.code!==o?d:J(d,s=>{if(t<0||t>=s.length||i<0||i>=s.length||t===i)return s;let f=s.slice(),[v]=f.splice(t,1);return f.splice(i,0,v),f.map((y,p)=>({...y,order:p}))}))}));},select:o=>e({selection:o}),clearSelection:()=>e({selection:{type:"form"}}),setView:o=>e({view:o}),undo:()=>{let{history:o,historyIndex:t,form:i}=a();if(!(t<0))if(t===o.length-1){let l={form:formCore.deepClone(i),description:"Current state",timestamp:Date.now()};e({form:formCore.deepClone(o[t].form),historyIndex:t-1,isDirty:true,history:[...o,l]});}else e({form:formCore.deepClone(o[t].form),historyIndex:t-1,isDirty:true});},redo:()=>{let{history:o,historyIndex:t}=a();if(t>=o.length-2)return;let i=t+2;i<o.length&&e({form:formCore.deepClone(o[i].form),historyIndex:i-1,isDirty:true});},canUndo:()=>a().historyIndex>=0,canRedo:()=>{let{history:o,historyIndex:t}=a();return t<o.length-2},addFormType:o=>{let t={...o,id:formCore.generateId()};e(i=>({formTypes:[...i.formTypes,t]}));},updateFormType:(o,t)=>{e(i=>({formTypes:i.formTypes.map(l=>l.id===o?{...l,...t}:l)}));},removeFormType:o=>{let t=a();if(t.form.formTypeId===o){let{formTypeId:i,...l}=t.form;e({form:{...l}});}e(i=>({formTypes:i.formTypes.filter(l=>l.id!==o)}));},setAvailableTemplates:o=>{e({availableTemplates:o});},setAvailableScopes:o=>{e({availableScopes:o});},setAvailableDataSources:o=>{e({availableDataSources:o});},setAdapter:o=>e({adapter:o}),save:async()=>{let{adapter:o,form:t}=a();if(o?.saveForm){e({isSaving:true});try{await o.saveForm(t),e({isDirty:!1});}finally{e({isSaving:false});}}},load:async o=>{let{adapter:t}=a();if(!t?.loadForm)return;let i=await t.loadForm(o);a().setForm(i);},exportJson:()=>formCore.serializeForm(a().form),importJson:o=>{let t=formCore.deserializeForm(o);a().setForm(t);}}});var xe={toolbar:{formNamePlaceholder:"Nom du formulaire",unsaved:"Non sauvegard\xE9",addPage:"+ Page",formProperties:"Propri\xE9t\xE9s du formulaire",types:"Types",manageFormTypesTitle:"G\xE9rer les types de formulaire",dataSources:"Sources",manageDataSourcesTitle:"G\xE9rer les sources de donn\xE9es",scopes:"Scopes",manageScopesTitle:"G\xE9rer les scopes et les variables du r\xE9f\xE9rentiel",undo:"Annuler",redo:"R\xE9tablir",save:"Enregistrer",saving:"Enregistrement...",export:"Exporter",import:"Importer",viewEditor:"\xC9diteur",viewPreview:"Aper\xE7u",viewJson:"JSON"},toolbox:{searchPlaceholder:"Rechercher...",addPageFirst:"Ajoutez d\u2019abord une page",tabFields:"Champs",tabVariables:"Variables",noTemplates:"Aucune variable dans ce scope",noScope:"Configurez un scope pour acc\xE9der au r\xE9f\xE9rentiel",groupText:"Texte",groupSelection:"S\xE9lection",groupDateTime:"Date et heure",groupMedia:"M\xE9dias",groupAdvanced:"Avanc\xE9",groupRoster:"Roster",typeRosterCheck:"Cases \xE0 cocher",typeRosterList:"Liste",typeRosterCollection:"Collection",typeRosterCollectionExtend:"Collection \xE9tendue",types:{text:"Texte court",textarea:"Zone de texte",number:"Nombre",email:"Email",select:"Liste d\xE9roulante",multiselect:"Multi-s\xE9lection",radio:"Boutons radio",checkbox:"Cases \xE0 cocher",listradio:"Liste radio",date:"Date",datetime:"Date et heure",time:"Heure",file:"Fichier",image:"Image",photo:"Photo",gps:"GPS",rating:"Note (\xE9toiles)",calculated:"Calcul\xE9",hidden:"Masqu\xE9",label:"\xC9tiquette",panel:"Panneau",richtext:"Texte enrichi"}},canvas:{emptyStateNoPage:"Cliquez sur \xAB + Page \xBB dans la barre d\u2019outils pour commencer",emptyStateNoPageDnd:"Glissez un champ depuis la bo\xEEte \xE0 outils ou ajoutez une page pour commencer",emptyStatePage:"Cliquez sur un type de champ dans la bo\xEEte \xE0 outils pour l\u2019ajouter ici",unnamedPage:"Page sans nom",repeatable:"R\xE9p\xE9table",fieldsRostersCount:(e,a)=>`${e} champ${e>1?"s":""} \xB7 ${a} roster${a>1?"s":""}`,fieldsCount:e=>`${e} champ${e>1?"s":""}`,rosterVarsCount:e=>`${e} variable${e>1?"s":""}`,addRoster:"+ Ajouter un roster",addFieldToRoster:"+ Ajouter un champ au roster",pilotPrefix:"pilote :",newRosterName:"Nouveau roster",newFieldName:"Nouveau champ",newVariableName:e=>`Nouveau ${e.toLowerCase()}`,hasConditionsTitle:"Contient des conditions",dataSourceConnectedTitle:"Source de donn\xE9es connect\xE9e"},properties:{title:"Propri\xE9t\xE9s",name:"Nom",code:"Code",description:"Description",placeholder:"Placeholder",version:"Version",formType:"Type de formulaire",noType:"\u2014 Aucun type \u2014",formSummary:(e,a)=>`${e} page${e>1?"s":""} \xB7 ${a} variable${a>1?"s":""}`,pageSummary:(e,a)=>`${e} variable${e>1?"s":""} \xB7 ${a} roster${a>1?"s":""}`,rosterSummary:(e,a)=>`${e} variable${e>1?"s":""} \xB7 ${a} option${a>1?"s":""}`,repeatablePage:"Page r\xE9p\xE9table",minInstances:"Minimum d\u2019instances",maxInstances:"Maximum d\u2019instances",controlVariableCode:"Code de la variable de contr\xF4le",instanceLabel:"Mod\xE8le de libell\xE9 d\u2019instance",rosterType:"Type de roster",pilotVariableCode:"Code de la variable pilote",rosterTypes:{check:"Cases \xE0 cocher (s\xE9lection multiple)",list:"Liste (dropdown par ligne)",collection:"Collection (ajout/suppression de lignes)",collection_extend:"Collection \xE9tendue (vue tableau)"},linkedTemplate:"Variable li\xE9e au r\xE9f\xE9rentiel",templateCode:"Code (non modifiable)",templateName:"Nom (non modifiable)",resetOverride:"R\xE9initialiser",type:"Type",ratingStyle:"Style de notation",ratingStyles:{star:"\u2605 \xC9toiles",number:"123 Nombres",color:"\u25CF Points de couleur"},layout:"Mise en page",startNewRow:"Nouvelle ligne",columnSpan:"Largeur (colonnes, 1-12)",columnSpanAuto:"Auto (part \xE9gale)",columnSpanHalf:" (moiti\xE9)",columnSpanThird:" (tiers)",columnSpanFull:" (pleine largeur)",required:"Obligatoire",readonly:"Lecture seule",hidden:"Masqu\xE9 par d\xE9faut",expression:"Expression",fileConfig:"Configuration fichier",fileConfigMax:"Nombre max de fichiers",fileConfigMin:"Nombre min obligatoire",fileConfigAccept:"Types accept\xE9s",fileConfigAcceptPlaceholder:".pdf,.doc,.xlsx",fileConfigUnlimited:"Illimit\xE9",imageConfig:"Configuration image",imageConfigMax:"Nombre max d\u2019images",imageConfigMin:"Nombre min obligatoire",imageConfigCamera:"Autoriser la cam\xE9ra",scopes:"Scopes (r\xE9f\xE9rentiel de variables)",scopesHint:"L\u2019ordre d\xE9finit la priorit\xE9 : le premier scope gagne en cas de conflit sur un code.",noScopesAvailable:"Aucun scope disponible \u2014 configurez-en un via l\u2019API ou le seed.",moveScopeUp:"Monter",moveScopeDown:"Descendre",removeScope:"Retirer",langConfigSection:"Langues",langConfigAvailable:"Langues disponibles",langConfigDefault:"Langue par d\xE9faut",langConfigStrategy:"Strat\xE9gie de d\xE9tection",langConfigStrategies:{prop:"Propri\xE9t\xE9 (prop)",browser:"Navigateur",selector:"S\xE9lecteur dans le formulaire",auto:"Auto (navigateur puis d\xE9faut)"},langConfigSelectorPosition:"Position du s\xE9lecteur",langConfigPositions:{top:"Haut",bottom:"Bas"},langConfigConfirmRemove:e=>`Supprimer la langue \xAB ${e.toUpperCase()} \xBB supprimera toutes les traductions ${e.toUpperCase()}. Confirmer ?`,langConfigConfirmYes:"Supprimer",langConfigConfirmNo:"Annuler"},optionsEditor:{optionsCount:e=>`Options (${e})`,noOptions:"Aucune option. Ajoutez-en une pour peupler les choix.",optionLabelPlaceholder:"Libell\xE9",optionValuePlaceholder:"valeur",addOption:"+ Ajouter une option",optionLabelAria:e=>`Libell\xE9 de l\u2019option ${e+1}`,optionValueAria:e=>`Valeur de l\u2019option ${e+1}`,removeOptionAria:e=>`Supprimer l\u2019option ${e+1}`},conditionBuilder:{conditionsCount:e=>`Conditions (${e})`,addCondition:"+ Ajouter une condition",rulesCount:e=>` (${e} r\xE8gle${e>1?"s":""})`,addRule:"+ Ajouter une r\xE8gle",action:"Action",match:"Correspondance",all:"TOUT (ET)",any:"AU MOINS UN (OU)",actions:{show:"Afficher si",hide:"Masquer si",validate:"Valider que",require:"Obligatoire si",readonly:"Lecture seule si",setValue:"D\xE9finir la valeur si"},operators:{equals:"est \xE9gal \xE0",not_equals:"est diff\xE9rent de",greater_than:"est sup\xE9rieur \xE0",less_than:"est inf\xE9rieur \xE0",greater_than_or_equal:"est sup\xE9rieur ou \xE9gal \xE0",less_than_or_equal:"est inf\xE9rieur ou \xE9gal \xE0",contains:"contient",not_contains:"ne contient pas",is_empty:"est vide",is_not_empty:"n\u2019est pas vide",starts_with:"commence par",ends_with:"se termine par",in:"est dans la liste",not_in:"n\u2019est pas dans la liste",between:"est entre",regex:"correspond au pattern"},variablePlaceholder:"Variable...",valuePlaceholder:"Valeur",errorMessage:"Message d\u2019erreur",errorMessagePlaceholder:"Message d\u2019erreur de validation",targetVariableCode:"Code de la variable cible",targetVariablePlaceholder:"VAR_CIBLE",valueToSet:"Valeur \xE0 d\xE9finir",valueToSetPlaceholder:"Valeur",modalTitle:e=>`Conditions (${e})`,configureButton:e=>e===0?"Configurer les conditions":`Configurer les conditions (${e})`,applyButton:"Appliquer",cancelButton:"Annuler",closeButton:"Fermer",formulasSummary:"Formules configur\xE9es",noConditions:"Aucune condition configur\xE9e",modeVisual:"Constructeur visuel",modeManual:"Saisie manuelle",manualWarning:"Expression complexe \u2014 le constructeur visuel ne peut pas la repr\xE9senter. Restez en mode manuel pour la modifier.",manualPlaceholder:"Ex : show(${AGE} >= 18)",manualHelp:"Fonctions : show / hide / setValue / validate / require / readonly / ConditionEval. Variables : ${CODE}.",validationExpression:"Expression de validation",validationExpressionPlaceholder:'Ex : ${CHAMP} != ""'},dataSource:{title:"Source de donn\xE9es",connector:"Connecteur",none:"Aucune (options statiques)",connectedTo:"Connect\xE9 \xE0 :",dependencies:e=>`D\xE9pendances (${e})`,selectVariable:"S\xE9lectionner une variable...",dependencyKeyPlaceholder:"Cl\xE9 de d\xE9pendance (ex : parentId)",addDependency:"+ Ajouter"},scopeManager:{dialogAriaLabel:"Gestion des scopes",title:"Gestion des scopes",closeAriaLabel:"Fermer",addScope:"+ Ajouter un scope",newScopeName:"Nom du scope",newScopeCodePlaceholder:"CODE (auto)",manageVariables:"G\xE9rer les variables \u2192",confirmDelete:"Ce scope contient des \xE9l\xE9ments. Confirmer la suppression ?",deleteConfirm:"Supprimer",deleteCancel:"Annuler",noScopes:"Aucun scope d\xE9fini. Ajoutez-en un ci-dessous.",saveButton:"Enregistrer",cancelButton:"Annuler",deleteError:"Impossible de supprimer le scope",editScopeAria:e=>`Modifier le scope ${e}`,removeScopeAria:e=>`Supprimer le scope ${e}`,manageVariablesAria:e=>`G\xE9rer les variables du scope ${e}`},variableTemplateManager:{dialogAriaLabel:"Variables du r\xE9f\xE9rentiel",title:e=>`Variables \u2014 ${e}`,closeAriaLabel:"Fermer",addTemplate:"+ Ajouter une variable",code:"Code",name:"Nom",type:"Type",description:"Description",placeholder:"Texte d\u2019aide",required:"Obligatoire",readonly:"Lecture seule",hidden:"Masqu\xE9e",options:"Options",expression:"Expression",dataSourceId:"Source de donn\xE9es",advancedSection:"Avanc\xE9",validationRules:"R\xE8gles de validation",conditions:"Conditions",style:"Style",confirmDelete:"Supprimer cette variable du r\xE9f\xE9rentiel ?",deleteConfirm:"Supprimer",deleteCancel:"Annuler",noTemplates:"Aucune variable dans ce scope.",saveButton:"Enregistrer",cancelButton:"Annuler",duplicateCodeError:"Ce code existe d\xE9j\xE0 dans ce scope.",readonlyCode:"Code (immuable)",readonlyName:"Nom (immuable)",editTemplateAria:e=>`Modifier la variable ${e}`,removeTemplateAria:e=>`Supprimer la variable ${e}`,backToScopes:"\u2190 Retour aux scopes"},dataSourceManager:{dialogAriaLabel:"Sources de donn\xE9es",title:"Sources de donn\xE9es",closeAriaLabel:"Fermer",addButton:"+ Ajouter une source",noSources:"Aucune source dans ce scope. Ajoutez-en une ci-dessous.",noScope:"Le formulaire n\u2019a aucun scope \u2014 ajoutez-en un dans les propri\xE9t\xE9s du formulaire.",scopeFilterLabel:"Scope",fieldCode:"Code",fieldName:"Nom",fieldUrl:"URL",fieldMethod:"M\xE9thode",fieldQueryParam:"Param\xE8tre de recherche",fieldValueField:"Champ valeur",fieldLabelField:"Champ libell\xE9",fieldHeaders:"Headers (chiffr\xE9s)",headerKeyPlaceholder:"Cl\xE9 (ex : Authorization)",headerValuePlaceholder:"Valeur",addHeader:"+ Ajouter un header",fieldDependencies:"D\xE9pendances",dependencyParamPlaceholder:"Param\xE8tre URL",dependencyVarPlaceholder:"Code variable",addDependency:"+ Ajouter une d\xE9pendance",save:"Enregistrer",cancel:"Annuler",editAria:e=>`Modifier la source ${e}`,deleteAria:e=>`Supprimer la source ${e}`,scopeBadge:e=>`Scope : ${e}`,confirmDelete:e=>`Supprimer la source "${e}" ?`},formTypesDialog:{dialogAriaLabel:"Types de formulaires",title:"Types de formulaires",closeAriaLabel:"Fermer",noTypes:"Aucun type d\xE9fini. Ajoutez-en un ci-dessous.",confirmDelete:"Ce type est utilis\xE9 par le formulaire courant. Confirmer la suppression ?",deleteConfirm:"Supprimer",deleteCancel:"Annuler",removeTypeAria:e=>`Supprimer ${e}`,newTypeNamePlaceholder:"Nom du nouveau type",newTypeCodePlaceholder:"CODE (auto)",addButton:"+ Ajouter"},formEditor:{previewMissing:"Passer la prop PreviewComponent pour activer l\u2019aper\xE7u"}};var Oo={toolbar:{formNamePlaceholder:"Form name",unsaved:"Unsaved",addPage:"+ Page",formProperties:"Form properties",types:"Types",manageFormTypesTitle:"Manage form types",dataSources:"Sources",manageDataSourcesTitle:"Manage data sources",scopes:"Scopes",manageScopesTitle:"Manage scopes and library variables",undo:"Undo",redo:"Redo",save:"Save",saving:"Saving...",export:"Export",import:"Import",viewEditor:"Editor",viewPreview:"Preview",viewJson:"JSON"},toolbox:{searchPlaceholder:"Search fields...",addPageFirst:"Add a page first",tabFields:"Fields",tabVariables:"Variables",noTemplates:"No variables in this scope",noScope:"Configure a scope to access the variable library",groupText:"Text",groupSelection:"Selection",groupDateTime:"Date & Time",groupMedia:"Media",groupAdvanced:"Advanced",groupRoster:"Roster",typeRosterCheck:"Checks",typeRosterList:"List",typeRosterCollection:"Collection",typeRosterCollectionExtend:"Collection extended",types:{text:"Text",textarea:"Text Area",number:"Number",email:"Email",select:"Dropdown",multiselect:"Multi Select",radio:"Radio",checkbox:"Checkbox",listradio:"List Radio",date:"Date",datetime:"DateTime",time:"Time",file:"File",image:"Image",photo:"Photo",gps:"GPS",rating:"Rating (stars)",calculated:"Calculated",hidden:"Hidden",label:"Label",panel:"Panel",richtext:"Rich Text"}},canvas:{emptyStateNoPage:'Click "+ Page" in the toolbar to get started',emptyStateNoPageDnd:"Drag a field from the toolbox or add a page to get started",emptyStatePage:"Click a field type in the toolbox to add it here",unnamedPage:"Unnamed Page",repeatable:"Repeatable",fieldsRostersCount:(e,a)=>`${e} field${e===1?"":"s"} \xB7 ${a} roster${a===1?"":"s"}`,fieldsCount:e=>`${e} field${e===1?"":"s"}`,rosterVarsCount:e=>`${e} var${e===1?"":"s"}`,addRoster:"+ Add Roster",addFieldToRoster:"+ Add field to roster",pilotPrefix:"pilot:",newRosterName:"New Roster",newFieldName:"New field",newVariableName:e=>`New ${e}`,hasConditionsTitle:"Has conditions",dataSourceConnectedTitle:"Data source connected"},properties:{title:"Properties",name:"Name",code:"Code",description:"Description",placeholder:"Placeholder",version:"Version",formType:"Form type",noType:"\u2014 No type \u2014",formSummary:(e,a)=>`${e} page${e===1?"":"s"} \xB7 ${a} variable${a===1?"":"s"}`,pageSummary:(e,a)=>`${e} variable${e===1?"":"s"} \xB7 ${a} roster${a===1?"":"s"}`,rosterSummary:(e,a)=>`${e} variable${e===1?"":"s"} \xB7 ${a} option${a===1?"":"s"}`,repeatablePage:"Repeatable page",minInstances:"Min instances",maxInstances:"Max instances",controlVariableCode:"Control variable code",instanceLabel:"Instance label template",rosterType:"Roster Type",pilotVariableCode:"Pilot variable code",rosterTypes:{check:"Check (multi-select checkboxes)",list:"List (dropdown per row)",collection:"Collection (add/remove rows)",collection_extend:"Collection Extended (table view)"},linkedTemplate:"Linked to variable library",templateCode:"Code (read-only)",templateName:"Name (read-only)",resetOverride:"Reset",type:"Type",ratingStyle:"Rating style",ratingStyles:{star:"\u2605 Stars",number:"123 Numbers",color:"\u25CF Color dots"},layout:"Layout",startNewRow:"Start new row",columnSpan:"Column span (1-12)",columnSpanAuto:"Auto (equal share)",columnSpanHalf:" (half)",columnSpanThird:" (third)",columnSpanFull:" (full)",required:"Required",readonly:"Read only",hidden:"Hidden by default",expression:"Expression",fileConfig:"File configuration",fileConfigMax:"Max number of files",fileConfigMin:"Min number required",fileConfigAccept:"Accepted types",fileConfigAcceptPlaceholder:".pdf,.doc,.xlsx",fileConfigUnlimited:"Unlimited",imageConfig:"Image configuration",imageConfigMax:"Max number of images",imageConfigMin:"Min number required",imageConfigCamera:"Allow camera",scopes:"Scopes (variable library)",scopesHint:"Order defines priority: the first scope wins on code conflicts.",noScopesAvailable:"No scope available \u2014 create one via the API or seed.",moveScopeUp:"Move up",moveScopeDown:"Move down",removeScope:"Remove",langConfigSection:"Languages",langConfigAvailable:"Available languages",langConfigDefault:"Default language",langConfigStrategy:"Detection strategy",langConfigStrategies:{prop:"Prop (host-controlled)",browser:"Browser",selector:"In-form selector",auto:"Auto (browser then default)"},langConfigSelectorPosition:"Selector position",langConfigPositions:{top:"Top",bottom:"Bottom"},langConfigConfirmRemove:e=>`Removing "${e.toUpperCase()}" will delete every ${e.toUpperCase()} translation. Confirm?`,langConfigConfirmYes:"Delete",langConfigConfirmNo:"Cancel"},optionsEditor:{optionsCount:e=>`Options (${e})`,noOptions:"No options yet \u2014 add one to populate the choices.",optionLabelPlaceholder:"Label",optionValuePlaceholder:"value",addOption:"+ Add option",optionLabelAria:e=>`Option ${e+1} label`,optionValueAria:e=>`Option ${e+1} value`,removeOptionAria:e=>`Remove option ${e+1}`},conditionBuilder:{conditionsCount:e=>`Conditions (${e})`,addCondition:"+ Add condition",rulesCount:e=>` (${e} rule${e===1?"":"s"})`,addRule:"+ Add rule",action:"Action",match:"Match",all:"ALL (AND)",any:"ANY (OR)",actions:{show:"Show when",hide:"Hide when",validate:"Validate that",require:"Require when",readonly:"Read-only when",setValue:"Set value when"},operators:{equals:"equals",not_equals:"not equals",greater_than:"greater than",less_than:"less than",greater_than_or_equal:"greater than or equal",less_than_or_equal:"less than or equal",contains:"contains",not_contains:"not contains",is_empty:"is empty",is_not_empty:"is not empty",starts_with:"starts with",ends_with:"ends with",in:"in",not_in:"not in",between:"between",regex:"matches regex"},variablePlaceholder:"Variable...",valuePlaceholder:"Value",errorMessage:"Error message",errorMessagePlaceholder:"Validation error message",targetVariableCode:"Target variable code",targetVariablePlaceholder:"TARGET_VAR",valueToSet:"Value to set",valueToSetPlaceholder:"Value",modalTitle:e=>`Conditions (${e})`,configureButton:e=>e===0?"Configure conditions":`Configure conditions (${e})`,applyButton:"Apply",cancelButton:"Cancel",closeButton:"Close",formulasSummary:"Configured formulas",noConditions:"No condition configured",modeVisual:"Visual builder",modeManual:"Manual input",manualWarning:"Complex expression \u2014 the visual builder cannot represent it. Stay in manual mode to edit it.",manualPlaceholder:"e.g. show(${AGE} >= 18)",manualHelp:"Functions: show / hide / setValue / validate / require / readonly / ConditionEval. Variables: ${CODE}.",validationExpression:"Validation expression",validationExpressionPlaceholder:'e.g. ${FIELD} != ""'},dataSource:{title:"Data Source Connector",connector:"Connector",none:"None (static options)",connectedTo:"Connected to:",dependencies:e=>`Dependencies (${e})`,selectVariable:"Select variable...",dependencyKeyPlaceholder:"Dependency key (e.g. parentId)",addDependency:"+ Add"},scopeManager:{dialogAriaLabel:"Scope management",title:"Scope management",closeAriaLabel:"Close",addScope:"+ Add a scope",newScopeName:"Scope name",newScopeCodePlaceholder:"CODE (auto)",manageVariables:"Manage variables \u2192",confirmDelete:"This scope is in use. Confirm deletion?",deleteConfirm:"Delete",deleteCancel:"Cancel",noScopes:"No scope defined yet. Add one below.",saveButton:"Save",cancelButton:"Cancel",deleteError:"Cannot delete scope",editScopeAria:e=>`Edit scope ${e}`,removeScopeAria:e=>`Delete scope ${e}`,manageVariablesAria:e=>`Manage variables in scope ${e}`},variableTemplateManager:{dialogAriaLabel:"Library variables",title:e=>`Variables \u2014 ${e}`,closeAriaLabel:"Close",addTemplate:"+ Add variable",code:"Code",name:"Name",type:"Type",description:"Description",placeholder:"Help text",required:"Required",readonly:"Read-only",hidden:"Hidden",options:"Options",expression:"Expression",dataSourceId:"Data source",advancedSection:"Advanced",validationRules:"Validation rules",conditions:"Conditions",style:"Style",confirmDelete:"Delete this library variable?",deleteConfirm:"Delete",deleteCancel:"Cancel",noTemplates:"No variable in this scope.",saveButton:"Save",cancelButton:"Cancel",duplicateCodeError:"This code already exists in the scope.",readonlyCode:"Code (immutable)",readonlyName:"Name (immutable)",editTemplateAria:e=>`Edit variable ${e}`,removeTemplateAria:e=>`Delete variable ${e}`,backToScopes:"\u2190 Back to scopes"},dataSourceManager:{dialogAriaLabel:"Data sources",title:"Data sources",closeAriaLabel:"Close",addButton:"+ Add a source",noSources:"No source in this scope yet. Add one below.",noScope:"This form has no scope \u2014 link one in the form properties.",scopeFilterLabel:"Scope",fieldCode:"Code",fieldName:"Name",fieldUrl:"URL",fieldMethod:"Method",fieldQueryParam:"Search param",fieldValueField:"Value field",fieldLabelField:"Label field",fieldHeaders:"Headers (encrypted)",headerKeyPlaceholder:"Key (e.g. Authorization)",headerValuePlaceholder:"Value",addHeader:"+ Add header",fieldDependencies:"Dependencies",dependencyParamPlaceholder:"URL param",dependencyVarPlaceholder:"Variable code",addDependency:"+ Add dependency",save:"Save",cancel:"Cancel",editAria:e=>`Edit source ${e}`,deleteAria:e=>`Delete source ${e}`,scopeBadge:e=>`Scope: ${e}`,confirmDelete:e=>`Delete source "${e}"?`},formTypesDialog:{dialogAriaLabel:"Form types",title:"Form types",closeAriaLabel:"Close",noTypes:"No form types yet. Add one below.",confirmDelete:"This type is used by the current form. Confirm deletion?",deleteConfirm:"Delete",deleteCancel:"Cancel",removeTypeAria:e=>`Remove ${e}`,newTypeNamePlaceholder:"New type name",newTypeCodePlaceholder:"CODE (auto)",addButton:"+ Add"},formEditor:{previewMissing:"Pass PreviewComponent prop to enable preview"}};var No=zr.createContext(xe);function We({labels:e,children:a}){return jsxRuntime.jsx(No.Provider,{value:e,children:a})}function w(){return zr.useContext(No)}function _e(e){if(e===null||typeof e!="object")return false;let a=Object.getPrototypeOf(e);return a===Object.prototype||a===null}function qe(e,a){return a?Bo(e,a):e}function Bo(e,a){if(!_e(e)||!_e(a))return a===void 0?e:a;let r={...e};for(let n of Object.keys(a)){let o=e[n],t=a[n];_e(o)&&_e(t)?r[n]=Bo(o,t):t!==void 0&&(r[n]=t);}return r}function _o({open:e,onClose:a}){let{formTypes:r,form:n,addFormType:o,updateFormType:t,removeFormType:i}=k(),l=w(),[d,s]=zr.useState(""),[f,v]=zr.useState(""),[y,p]=zr.useState(null),[b,c]=zr.useState(""),[u,g]=zr.useState(null);if(!e)return null;let x=()=>{d.trim()&&(o({name:d.trim(),code:f.trim()||d.trim().toUpperCase().replace(/\s+/g,"_")}),s(""),v(""));},h=(R,_)=>{p(R),c(_);},I=()=>{y&&b.trim()&&t(y,{name:b.trim()}),p(null),c("");},C=R=>{n.formTypeId===R?g(R):i(R);},A=()=>{u&&i(u),g(null);};return jsxRuntime.jsx("div",{role:"dialog","aria-modal":"true","aria-label":l.formTypesDialog.dialogAriaLabel,"data-testid":"form-types-dialog",onClick:a,style:{position:"fixed",inset:0,backgroundColor:"rgba(0, 0, 0, 0.3)",zIndex:50,display:"flex",alignItems:"center",justifyContent:"center",padding:"16px"},children:jsxRuntime.jsxs("div",{onClick:R=>R.stopPropagation(),style:{backgroundColor:"#fff",borderRadius:"8px",maxWidth:"32rem",width:"100%",maxHeight:"80vh",overflow:"auto",boxShadow:"0 10px 25px rgba(0,0,0,0.2)",fontFamily:"system-ui, -apple-system, sans-serif",color:"#1e293b"},children:[jsxRuntime.jsxs("header",{style:{padding:"16px",borderBottom:"1px solid #e2e8f0",display:"flex",justifyContent:"space-between",alignItems:"center"},children:[jsxRuntime.jsx("h3",{style:{fontSize:"16px",fontWeight:600,margin:0},children:l.formTypesDialog.title}),jsxRuntime.jsx("button",{type:"button",onClick:a,"aria-label":l.formTypesDialog.closeAriaLabel,"data-testid":"form-types-dialog-close-x",style:{background:"transparent",border:"none",fontSize:"18px",cursor:"pointer",color:"#64748b",padding:"4px 8px"},children:"\xD7"})]}),jsxRuntime.jsxs("section",{style:{padding:"16px"},children:[r.length===0&&jsxRuntime.jsx("div",{"data-testid":"form-types-empty",style:{fontSize:"13px",color:"#94a3b8",marginBottom:"12px"},children:l.formTypesDialog.noTypes}),jsxRuntime.jsx("ul",{style:{listStyle:"none",padding:0,margin:0,display:"flex",flexDirection:"column",gap:"6px"},children:r.map(R=>{let _=y===R.id,K=n.formTypeId===R.id,$=u===R.id;return jsxRuntime.jsxs("li",{"data-testid":`form-type-row-${R.id}`,style:{display:"flex",alignItems:"center",gap:"8px",padding:"8px",border:"1px solid #e2e8f0",borderRadius:"6px",backgroundColor:K?"#f1f5f9":"#fff"},children:[_?jsxRuntime.jsx("input",{type:"text",value:b,autoFocus:true,"data-testid":`form-type-name-edit-${R.id}`,onChange:Y=>c(Y.target.value),onBlur:I,onKeyDown:Y=>{Y.key==="Enter"&&I(),Y.key==="Escape"&&(p(null),c(""));},style:{flex:1,padding:"4px 8px",border:"1px solid #cbd5e1",borderRadius:"4px",fontSize:"13px",color:"#000",outline:"none"}}):jsxRuntime.jsx("span",{"data-testid":`form-type-name-${R.id}`,onClick:()=>h(R.id,R.name),style:{flex:1,fontSize:"13px",cursor:"pointer",padding:"4px 8px"},children:R.name}),jsxRuntime.jsx("span",{style:{fontSize:"11px",color:"#94a3b8",fontFamily:"monospace"},children:R.code}),jsxRuntime.jsx("button",{type:"button","aria-label":l.formTypesDialog.removeTypeAria(R.name),"data-testid":`form-type-remove-${R.id}`,onClick:()=>C(R.id),style:{width:"24px",height:"24px",border:"1px solid #e2e8f0",borderRadius:"4px",backgroundColor:"#fff",color:"#64748b",cursor:"pointer",fontSize:"14px",lineHeight:1},children:"\xD7"}),$&&jsxRuntime.jsxs("div",{"data-testid":`form-type-confirm-${R.id}`,style:{flexBasis:"100%",fontSize:"12px",color:"#b91c1c",backgroundColor:"#fef2f2",padding:"6px 8px",borderRadius:"4px",display:"flex",alignItems:"center",gap:"8px"},children:[jsxRuntime.jsx("span",{style:{flex:1},children:l.formTypesDialog.confirmDelete}),jsxRuntime.jsx("button",{type:"button","data-testid":`form-type-confirm-yes-${R.id}`,onClick:A,style:{padding:"4px 8px",border:"none",borderRadius:"4px",backgroundColor:"#ef4444",color:"#fff",fontSize:"12px",cursor:"pointer"},children:l.formTypesDialog.deleteConfirm}),jsxRuntime.jsx("button",{type:"button","data-testid":`form-type-confirm-no-${R.id}`,onClick:()=>g(null),style:{padding:"4px 8px",border:"1px solid #e2e8f0",borderRadius:"4px",backgroundColor:"#fff",color:"#334155",fontSize:"12px",cursor:"pointer"},children:l.formTypesDialog.deleteCancel})]})]},R.id)})})]}),jsxRuntime.jsxs("section",{style:{padding:"12px 16px",borderTop:"1px solid #e2e8f0",display:"flex",alignItems:"center",gap:"8px",backgroundColor:"#f8fafc"},children:[jsxRuntime.jsx("input",{type:"text",value:d,"data-testid":"form-types-new-name",placeholder:l.formTypesDialog.newTypeNamePlaceholder,onChange:R=>s(R.target.value),onKeyDown:R=>{R.key==="Enter"&&x();},style:{flex:1,padding:"6px 8px",border:"1px solid #cbd5e1",borderRadius:"4px",fontSize:"13px",color:"#000",outline:"none"}}),jsxRuntime.jsx("input",{type:"text",value:f,"data-testid":"form-types-new-code",placeholder:l.formTypesDialog.newTypeCodePlaceholder,onChange:R=>v(R.target.value),style:{width:"120px",padding:"6px 8px",border:"1px solid #cbd5e1",borderRadius:"4px",fontSize:"13px",color:"#000",outline:"none",fontFamily:"monospace"}}),jsxRuntime.jsx("button",{type:"button","data-testid":"form-types-add",onClick:x,disabled:d.trim()==="",style:{padding:"6px 12px",border:"none",borderRadius:"4px",backgroundColor:d.trim()===""?"#cbd5e1":"#2563eb",color:"#fff",fontSize:"13px",cursor:d.trim()===""?"not-allowed":"pointer"},children:l.formTypesDialog.addButton})]})]})})}function eo(){return {code:"",name:"",url:"",method:"GET",queryParam:"q",valueField:"",labelField:"",headers:[],dependencies:[]}}function Kt(e,a){return {code:e.code,name:typeof e.name=="string"?e.name:formCore.resolveLabel(e.name,a,a),url:e.url,method:e.method,queryParam:e.queryParam??"q",valueField:e.valueField,labelField:e.labelField,headers:Object.entries(e.headersOverride??{}).map(([r,n])=>({key:r,value:n})),dependencies:Object.entries(e.dependencies??{}).map(([r,n])=>({param:r,varCode:n}))}}function Yt(e){let a={};for(let{key:n,value:o}of e.headers)n.trim()&&(a[n.trim()]=o);let r={};for(let{param:n,varCode:o}of e.dependencies)n.trim()&&o.trim()&&(r[n.trim()]=o.trim());return {code:e.code.trim(),name:e.name,url:e.url.trim(),method:e.method,queryParam:e.queryParam.trim()||"q",valueField:e.valueField.trim(),labelField:e.labelField.trim(),...Object.keys(a).length>0?{headersOverride:a}:{},...Object.keys(r).length>0?{dependencies:r}:{}}}function oo({open:e,onClose:a}){let r=w(),{form:n,availableDataSources:o,availableScopes:t,adapter:i,setAvailableDataSources:l}=k(),d=n.langConfig?.defaultLang??formCore.DEFAULT_LANG_CONFIG.defaultLang,s=n.scopeIds??[],[f,v]=zr.useState(s[0]),[y,p]=zr.useState(null),[b,c]=zr.useState(eo()),[u,g]=zr.useState(false),[x,h]=zr.useState(false),I=zr.useMemo(()=>{let S=new Map;for(let E of t)S.set(E.id,E.code);return S},[t]),C=zr.useMemo(()=>f?o.filter(S=>S.scopeId===f):o,[o,f]);if(!e)return null;let A=()=>{g(true),p(null),c(eo());},R=S=>{g(false),p(S.id),c(Kt(S,d)),S.scopeId!==f&&v(S.scopeId);},_=()=>{p(null),g(false),c(eo());},K=S=>{l(S(o));},$=async()=>{if(!i)return;let S=f??s[0];if(S){h(true);try{let E=Yt(b);if(y&&i.updateDataSource){let N=await i.updateDataSource(y,E);K(z=>z.map(m=>m.id===y?N:m));}else if(!y&&i.createDataSource){let N=await i.createDataSource(S,E);K(z=>[...z,N]);}_();}finally{h(false);}}},Y=async S=>{if(i?.deleteDataSource&&!(typeof window<"u"&&!window.confirm(r.dataSourceManager.confirmDelete(S.code)))){h(true);try{await i.deleteDataSource(S.id),K(E=>E.filter(N=>N.id!==S.id)),y===S.id&&_();}finally{h(false);}}};return jsxRuntime.jsx("div",{role:"dialog","aria-modal":"true","aria-label":r.dataSourceManager.dialogAriaLabel,"data-testid":"datasource-manager-dialog",onClick:a,style:{position:"fixed",inset:0,backgroundColor:"rgba(0, 0, 0, 0.3)",zIndex:50,display:"flex",alignItems:"center",justifyContent:"center",padding:"16px"},children:jsxRuntime.jsxs("div",{onClick:S=>S.stopPropagation(),style:{backgroundColor:"#fff",borderRadius:"8px",maxWidth:"40rem",width:"100%",maxHeight:"90vh",display:"flex",flexDirection:"column"},children:[jsxRuntime.jsxs("div",{style:{padding:"14px 16px",borderBottom:"1px solid #e2e8f0",display:"flex",alignItems:"center",justifyContent:"space-between"},children:[jsxRuntime.jsx("h2",{style:{margin:0,fontSize:"16px",fontWeight:600,color:"#0f172a"},children:r.dataSourceManager.title}),jsxRuntime.jsx("button",{type:"button",onClick:a,"aria-label":r.dataSourceManager.closeAriaLabel,style:{border:"none",background:"transparent",fontSize:"20px",cursor:"pointer",color:"#64748b"},children:"\u2715"})]}),jsxRuntime.jsxs("div",{style:{flex:1,overflowY:"auto",padding:"12px 16px"},children:[s.length===0&&jsxRuntime.jsx("div",{"data-testid":"datasource-manager-no-scope",style:Ho,children:r.dataSourceManager.noScope}),s.length>1&&jsxRuntime.jsxs("div",{style:{marginBottom:"12px"},children:[jsxRuntime.jsx("label",{style:Ge,children:r.dataSourceManager.scopeFilterLabel}),jsxRuntime.jsx("select",{"data-testid":"datasource-manager-scope-filter",value:f??"",onChange:S=>v(S.target.value||void 0),style:qo,children:s.map(S=>jsxRuntime.jsx("option",{value:S,children:I.get(S)??S},S))})]}),s.length>0&&C.length===0&&!u&&jsxRuntime.jsx("div",{"data-testid":"datasource-manager-empty",style:Ho,children:r.dataSourceManager.noSources}),jsxRuntime.jsx("ul",{style:{listStyle:"none",margin:0,padding:0,display:"flex",flexDirection:"column",gap:"6px"},children:C.map(S=>jsxRuntime.jsxs("li",{"data-testid":`datasource-item-${S.code}`,style:{border:"1px solid #e2e8f0",borderRadius:"6px",padding:"8px 10px",display:"flex",alignItems:"center",gap:"8px",backgroundColor:y===S.id?"#f0fdf4":"#fff"},children:[jsxRuntime.jsx("span",{style:{fontSize:"13px",fontWeight:600,color:"#0f172a"},children:S.code}),jsxRuntime.jsx("span",{style:{fontSize:"11px",color:"#64748b"},children:S.method}),jsxRuntime.jsx("span",{style:{flex:1,fontSize:"11px",color:"#475569",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:S.url}),I.has(S.scopeId)&&jsxRuntime.jsx("span",{style:{fontSize:"10px",color:"#0891b2",backgroundColor:"#ecfeff",padding:"2px 6px",borderRadius:"4px"},children:r.dataSourceManager.scopeBadge(I.get(S.scopeId))}),jsxRuntime.jsx("button",{type:"button","data-testid":`datasource-edit-${S.code}`,"aria-label":r.dataSourceManager.editAria(S.code),onClick:()=>R(S),disabled:x,style:He,children:"\u270F"}),jsxRuntime.jsx("button",{type:"button","data-testid":`datasource-delete-${S.code}`,"aria-label":r.dataSourceManager.deleteAria(S.code),onClick:()=>Y(S),disabled:x,style:{...He,color:"#ef4444"},children:"\xD7"})]},S.id))}),s.length>0&&!u&&!y&&jsxRuntime.jsx("button",{type:"button","data-testid":"datasource-add-button",onClick:A,style:{marginTop:"12px",padding:"6px 12px",border:"1px solid #2563eb",borderRadius:"6px",color:"#2563eb",backgroundColor:"#fff",fontSize:"13px",fontWeight:500,cursor:"pointer"},children:r.dataSourceManager.addButton}),(u||y)&&jsxRuntime.jsxs("form",{"data-testid":"datasource-form",onSubmit:S=>{S.preventDefault(),$();},style:{marginTop:"12px",padding:"12px",border:"1px solid #cbd5e1",borderRadius:"6px",backgroundColor:"#f8fafc",display:"flex",flexDirection:"column",gap:"8px"},children:[jsxRuntime.jsx(Re,{label:r.dataSourceManager.fieldCode,children:jsxRuntime.jsx("input",{required:true,"data-testid":"datasource-form-code",value:b.code,onChange:S=>c({...b,code:S.target.value}),style:de})}),jsxRuntime.jsx(Re,{label:r.dataSourceManager.fieldName,children:jsxRuntime.jsx("input",{"data-testid":"datasource-form-name",value:b.name,onChange:S=>c({...b,name:S.target.value}),style:de})}),jsxRuntime.jsx(Re,{label:r.dataSourceManager.fieldUrl,children:jsxRuntime.jsx("input",{required:true,type:"url","data-testid":"datasource-form-url",value:b.url,onChange:S=>c({...b,url:S.target.value}),style:de})}),jsxRuntime.jsxs("div",{style:{display:"flex",gap:"8px"},children:[jsxRuntime.jsx(Re,{label:r.dataSourceManager.fieldMethod,style:{flex:1},children:jsxRuntime.jsxs("select",{"data-testid":"datasource-form-method",value:b.method,onChange:S=>c({...b,method:S.target.value}),style:qo,children:[jsxRuntime.jsx("option",{value:"GET",children:"GET"}),jsxRuntime.jsx("option",{value:"POST",children:"POST"})]})}),jsxRuntime.jsx(Re,{label:r.dataSourceManager.fieldQueryParam,style:{flex:1},children:jsxRuntime.jsx("input",{"data-testid":"datasource-form-queryparam",value:b.queryParam,onChange:S=>c({...b,queryParam:S.target.value}),style:de})})]}),jsxRuntime.jsxs("div",{style:{display:"flex",gap:"8px"},children:[jsxRuntime.jsx(Re,{label:r.dataSourceManager.fieldValueField,style:{flex:1},children:jsxRuntime.jsx("input",{required:true,"data-testid":"datasource-form-valuefield",value:b.valueField,onChange:S=>c({...b,valueField:S.target.value}),style:de})}),jsxRuntime.jsx(Re,{label:r.dataSourceManager.fieldLabelField,style:{flex:1},children:jsxRuntime.jsx("input",{required:true,"data-testid":"datasource-form-labelfield",value:b.labelField,onChange:S=>c({...b,labelField:S.target.value}),style:de})})]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{style:Ge,children:r.dataSourceManager.fieldHeaders}),b.headers.map((S,E)=>jsxRuntime.jsxs("div",{style:{display:"flex",gap:"4px",marginBottom:"4px"},children:[jsxRuntime.jsx("input",{placeholder:r.dataSourceManager.headerKeyPlaceholder,value:S.key,onChange:N=>{let z=[...b.headers];z[E]={...z[E],key:N.target.value},c({...b,headers:z});},style:{...de,flex:1}}),jsxRuntime.jsx("input",{type:"password",placeholder:r.dataSourceManager.headerValuePlaceholder,value:S.value,onChange:N=>{let z=[...b.headers];z[E]={...z[E],value:N.target.value},c({...b,headers:z});},style:{...de,flex:1}}),jsxRuntime.jsx("button",{type:"button",onClick:()=>c({...b,headers:b.headers.filter((N,z)=>z!==E)}),style:{...He,color:"#ef4444"},children:"\xD7"})]},E)),jsxRuntime.jsx("button",{type:"button","data-testid":"datasource-form-add-header",onClick:()=>c({...b,headers:[...b.headers,{key:"",value:""}]}),style:Ue,children:r.dataSourceManager.addHeader})]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{style:Ge,children:r.dataSourceManager.fieldDependencies}),b.dependencies.map((S,E)=>jsxRuntime.jsxs("div",{style:{display:"flex",gap:"4px",marginBottom:"4px"},children:[jsxRuntime.jsx("input",{placeholder:r.dataSourceManager.dependencyParamPlaceholder,value:S.param,onChange:N=>{let z=[...b.dependencies];z[E]={...z[E],param:N.target.value},c({...b,dependencies:z});},style:{...de,flex:1}}),jsxRuntime.jsx("span",{style:{alignSelf:"center",color:"#94a3b8"},children:"\u2192"}),jsxRuntime.jsx("input",{placeholder:r.dataSourceManager.dependencyVarPlaceholder,value:S.varCode,onChange:N=>{let z=[...b.dependencies];z[E]={...z[E],varCode:N.target.value},c({...b,dependencies:z});},style:{...de,flex:1}}),jsxRuntime.jsx("button",{type:"button",onClick:()=>c({...b,dependencies:b.dependencies.filter((N,z)=>z!==E)}),style:{...He,color:"#ef4444"},children:"\xD7"})]},E)),jsxRuntime.jsx("button",{type:"button","data-testid":"datasource-form-add-dependency",onClick:()=>c({...b,dependencies:[...b.dependencies,{param:"",varCode:""}]}),style:Ue,children:r.dataSourceManager.addDependency})]}),jsxRuntime.jsxs("div",{style:{display:"flex",justifyContent:"flex-end",gap:"8px",marginTop:"8px"},children:[jsxRuntime.jsx("button",{type:"button","data-testid":"datasource-form-cancel",onClick:_,disabled:x,style:Ue,children:r.dataSourceManager.cancel}),jsxRuntime.jsx("button",{type:"submit","data-testid":"datasource-form-save",disabled:x,style:{...Ue,backgroundColor:"#2563eb",color:"#fff",border:"none"},children:r.dataSourceManager.save})]})]})]})]})})}function Re({label:e,children:a,style:r}){return jsxRuntime.jsxs("div",{style:r,children:[jsxRuntime.jsx("label",{style:Ge,children:e}),a]})}var Ge={display:"block",fontSize:"11px",fontWeight:500,color:"#475569",marginBottom:"2px"},de={width:"100%",boxSizing:"border-box",padding:"4px 6px",border:"1px solid #cbd5e1",borderRadius:"4px",fontSize:"12px",color:"#0f172a",outline:"none",backgroundColor:"#fff"},qo={...de},He={border:"none",background:"transparent",cursor:"pointer",fontSize:"14px",color:"#64748b",padding:"2px 4px"},Ue={padding:"4px 10px",border:"1px solid #cbd5e1",borderRadius:"4px",fontSize:"12px",color:"#334155",backgroundColor:"#fff",cursor:"pointer"},Ho={fontSize:"12px",color:"#94a3b8",textAlign:"center",padding:"16px 0"};function Go(e,a,r="fr"){if(e==null)return "";if(typeof e=="string")return e;let n=e[a];if(typeof n=="string"&&n!=="")return n;let o=e[r];if(typeof o=="string"&&o!=="")return o;for(let t of Object.values(e))if(typeof t=="string"&&t!=="")return t;return ""}var je={width:"100%",padding:"6px 8px",border:"1px solid #e2e8f0",borderRadius:"4px",fontSize:"13px",color:"#334155",outline:"none",boxSizing:"border-box"},Zt={padding:"4px 10px",border:"1px solid #e2e8f0",borderBottom:"none",borderTopLeftRadius:"4px",borderTopRightRadius:"4px",fontSize:"11px",fontWeight:600,cursor:"pointer",textTransform:"uppercase",letterSpacing:"0.5px",minWidth:"38px"};function Uo(e,a,r){if(e==null)return "";if(typeof e=="string")return a===r?e:"";let n=e[a];return typeof n=="string"?n:""}function Oe({value:e,onChange:a,availableLangs:r,defaultLang:n="fr",placeholder:o,multiline:t,testIdPrefix:i,disabled:l}){let d=r.length>0?r:[n],s=d.length>1,[f,v]=zr.useState(d[0]),y=w();d.includes(f)||v(d[0]);let p=(c,u)=>{if(!s){a(u);return}let g=typeof e=="string"?{[n]:e}:{...e??{}};g[c]=u,a(g);};if(!s){let c=d[0],u=Uo(e,c,n);return t?jsxRuntime.jsx("textarea",{value:u,rows:3,placeholder:o,disabled:l,"data-testid":i?`${i}-${c}`:void 0,onChange:g=>p(c,g.target.value),style:je}):jsxRuntime.jsx("input",{type:"text",value:u,placeholder:o,disabled:l,"data-testid":i?`${i}-${c}`:void 0,onChange:g=>p(c,g.target.value),style:je})}let b=Uo(e,f,n);return jsxRuntime.jsxs("div",{"data-testid":i,style:{display:"flex",flexDirection:"column"},children:[jsxRuntime.jsx("div",{role:"tablist","aria-label":y.properties.title,style:{display:"flex",gap:"2px"},children:d.map(c=>{let u=c===f;return jsxRuntime.jsx("button",{type:"button",role:"tab","aria-selected":u,"data-testid":i?`${i}-tab-${c}`:void 0,onClick:()=>v(c),style:{...Zt,backgroundColor:u?"#fff":"#f1f5f9",color:u?"#2563eb":"#64748b",borderColor:"#e2e8f0"},children:c},c)})}),t?jsxRuntime.jsx("textarea",{value:b,rows:3,placeholder:o,disabled:l,"data-testid":i?`${i}-${f}`:void 0,onChange:c=>p(f,c.target.value),style:{...je,borderTopLeftRadius:0}}):jsxRuntime.jsx("input",{type:"text",value:b,placeholder:o,disabled:l,"data-testid":i?`${i}-${f}`:void 0,onChange:c=>p(f,c.target.value),style:{...je,borderTopLeftRadius:0}})]})}function Z({label:e,value:a,onChange:r,placeholder:n,multiline:o,testIdPrefix:t,disabled:i}){let d=k(s=>s.form).langConfig??formCore.DEFAULT_LANG_CONFIG;return jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{style:{display:"block",fontSize:"12px",fontWeight:500,color:"#64748b",marginBottom:"4px"},children:e}),jsxRuntime.jsx(Oe,{value:a,onChange:r,availableLangs:d.availableLangs,defaultLang:d.defaultLang,placeholder:n,multiline:o,testIdPrefix:t,disabled:i})]})}function oa(e){return e.normalize("NFD").replace(/[̀-ͯ]/g,"").toLowerCase().trim().replace(/\s+/g,"_").replace(/[^a-z0-9_-]/g,"")}function Jo(e){return typeof e=="string"?e:e==null?"":String(e)}function to(e,a){if(e==null)return "";if(typeof e=="string")return e;let r=e[a];if(typeof r=="string"&&r!=="")return r;for(let n of Object.values(e))if(typeof n=="string"&&n!=="")return n;return ""}function Je({options:e,onChange:a,disabled:r}){let n=w(),t=k(c=>c.form).langConfig??formCore.DEFAULT_LANG_CONFIG,i=(c,u)=>{let g=e.map((x,h)=>h===c?{...x,...u}:x);a(g);},l=(c,u)=>{let g=e[c],x=Jo(g.value),h=to(g.label,t.defaultLang),I=to(u,t.defaultLang);x===""&&h===""&&I!==""?i(c,{label:u,value:oa(I)}):i(c,{label:u});},d=(c,u)=>{i(c,{value:u});},s=()=>{a([...e,{label:"",value:""}]);},f=c=>{a(e.filter((u,g)=>g!==c));},v={display:"block",fontSize:"12px",fontWeight:500,color:"#64748b",marginBottom:"4px"},y={flex:1,padding:"6px 8px",borderRadius:"4px",fontSize:"13px",color:"#000",outline:"none"},p="1px solid #e2e8f0",b="1px solid #ef4444";return jsxRuntime.jsxs("div",{"data-testid":"options-editor",children:[jsxRuntime.jsx("label",{style:v,children:n.optionsEditor.optionsCount(e.length)}),e.length===0&&jsxRuntime.jsx("div",{"data-testid":"options-editor-empty",style:{fontSize:"12px",color:"#94a3b8",marginBottom:"8px"},children:n.optionsEditor.noOptions}),jsxRuntime.jsx("div",{style:{display:"flex",flexDirection:"column",gap:"6px"},children:e.map((c,u)=>{let g=to(c.label,t.defaultLang),x=Jo(c.value),h=g.trim()==="",I=x.trim()==="";return jsxRuntime.jsxs("div",{"data-testid":`option-row-${u}`,style:{display:"flex",alignItems:"flex-start",gap:"6px"},children:[jsxRuntime.jsx("div",{"aria-label":n.optionsEditor.optionLabelAria(u),"data-testid":`option-label-${u}`,style:{flex:1,border:h?b:p,borderRadius:"4px"},children:jsxRuntime.jsx(Oe,{value:c.label,onChange:C=>l(u,C),availableLangs:t.availableLangs,defaultLang:t.defaultLang,placeholder:n.optionsEditor.optionLabelPlaceholder,disabled:r,testIdPrefix:`option-label-input-${u}`})}),jsxRuntime.jsx("input",{type:"text","aria-label":n.optionsEditor.optionValueAria(u),"data-testid":`option-value-${u}`,value:x,placeholder:n.optionsEditor.optionValuePlaceholder,disabled:r,onChange:C=>d(u,C.target.value),style:{...y,border:I?b:p,maxWidth:"40%"}}),jsxRuntime.jsx("button",{type:"button","aria-label":n.optionsEditor.removeOptionAria(u),"data-testid":`option-remove-${u}`,onClick:()=>f(u),disabled:r,style:{width:"24px",height:"24px",border:"1px solid #e2e8f0",borderRadius:"4px",backgroundColor:"#fff",color:"#64748b",cursor:r?"not-allowed":"pointer",lineHeight:1,fontSize:"14px"},children:"\xD7"})]},u)})}),jsxRuntime.jsx("button",{type:"button","data-testid":"options-editor-add",onClick:s,disabled:r,style:{marginTop:"8px",padding:"6px 10px",border:"1px dashed #94a3b8",borderRadius:"4px",backgroundColor:"transparent",color:"#2563eb",fontSize:"12px",cursor:r?"not-allowed":"pointer"},children:n.optionsEditor.addOption})]})}var ia=["text","textarea","number","date","datetime","time","select","multiselect","checkbox","radio","listradio","file","image","photo","gps","rating","email","calculated","hidden","label","panel","richtext"],Yo=["select","multiselect","radio","checkbox","listradio"],Xo=["select","multiselect"];function ro(){return {code:"",name:"",variableType:"text",description:void 0,placeholder:void 0,isRequired:false,isReadonly:false,isHidden:false,options:[],expression:"",dataSourceId:"",validationRulesJson:"",conditionsJson:"",styleJson:""}}function no(e){if(e==null)return "";try{return JSON.stringify(e,null,2)}catch{return ""}}function io(e){let a=e.trim();if(!a)return {ok:true,value:void 0};try{return {ok:!0,value:JSON.parse(a)}}catch{return {ok:false,value:void 0}}}function la(e){return {code:e.code,name:e.name,variableType:e.variableType,description:e.description,placeholder:e.placeholder,isRequired:e.isRequired??false,isReadonly:e.isReadonly??false,isHidden:e.isHidden??false,options:e.options??[],expression:e.expression??"",dataSourceId:e.dataSourceId??"",validationRulesJson:no(e.validationRules),conditionsJson:no(e.conditions),styleJson:no(e.style)}}function co({open:e,onClose:a,scopeId:r,scopeName:n}){let o=w(),t=k(m=>m.adapter),i=k(m=>m.availableDataSources),d=k(m=>m.form).langConfig?.defaultLang??formCore.DEFAULT_LANG_CONFIG.defaultLang,[s,f]=zr.useState([]),[v,y]=zr.useState(null),[p,b]=zr.useState(false),[c,u]=zr.useState(ro()),[g,x]=zr.useState(null),[h,I]=zr.useState(false),[C,A]=zr.useState(null),[R,_]=zr.useState(false);zr.useEffect(()=>{if(!e)return;if(!t?.loadTemplates){f([]);return}let m=false;return t.loadTemplates(r).then(D=>{m||f(D);}).catch(()=>{m||f([]);}),()=>{m=true;}},[e,r,t]);let K=zr.useMemo(()=>i.map(m=>({id:m.code,label:typeof m.name=="string"?m.name:formCore.resolveLabel(m.name,d,d)})),[i,d]),$=zr.useCallback(()=>{y(null),b(false),u(ro()),A(null),_(false);},[]);if(!e)return null;let Y=()=>{b(true),y(null),u(ro()),A(null),_(false);},S=m=>{b(false),y(m.id),u(la(m)),A(null),_(false);},E=()=>{let m=c.code.trim();if(!m)return {error:"code"};let D=c.expression.trim(),V=c.dataSourceId.trim(),X=io(c.validationRulesJson);if(!X.ok)return {error:"validationRules"};let j=io(c.conditionsJson);if(!j.ok)return {error:"conditions"};let ye=io(c.styleJson);return ye.ok?{code:m,name:c.name,variableType:c.variableType,description:c.description,placeholder:c.placeholder,isRequired:c.isRequired,isReadonly:c.isReadonly,isHidden:c.isHidden,...Yo.includes(c.variableType)?{options:c.options}:{},...c.variableType==="calculated"&&D?{expression:D}:{},...Xo.includes(c.variableType)&&V?{dataSourceId:V}:{},...X.value!==void 0?{validationRules:X.value}:{},...j.value!==void 0?{conditions:j.value}:{},...ye.value!==void 0?{style:ye.value}:{}}:{error:"style"}},N=async()=>{if(!t)return;let m=E();if("error"in m){A(m.error);return}I(true),A(null);try{if(v&&t.updateTemplate){let{code:D,name:V,...X}=m,j=await t.updateTemplate(v,X);f(ye=>ye.map(zo=>zo.id===v?j:zo)),$();}else if(!v&&t.createTemplate){if(s.some(V=>V.code===m.code)){A("duplicate-code");return}let D=await t.createTemplate(r,m);f(V=>[...V,D]),$();}}catch(D){let V=D instanceof Error?D.message:String(D);/already exists/i.test(V)?A("duplicate-code"):A(V);}finally{I(false);}},z=async()=>{if(!g||!t?.deleteTemplate)return;let m=g;I(true);try{await t.deleteTemplate(m),f(D=>D.filter(V=>V.id!==m)),v===m&&$(),x(null);}finally{I(false);}};return jsxRuntime.jsx("div",{role:"dialog","aria-modal":"true","aria-label":o.variableTemplateManager.dialogAriaLabel,"data-testid":"template-manager-dialog",onClick:a,style:{position:"fixed",inset:0,backgroundColor:"rgba(0, 0, 0, 0.4)",zIndex:60,display:"flex",alignItems:"center",justifyContent:"center",padding:"16px"},children:jsxRuntime.jsxs("div",{onClick:m=>m.stopPropagation(),style:{backgroundColor:"#fff",borderRadius:"8px",maxWidth:"44rem",width:"100%",maxHeight:"90vh",display:"flex",flexDirection:"column",boxShadow:"0 10px 25px rgba(0,0,0,0.2)",fontFamily:"system-ui, -apple-system, sans-serif",color:"#1e293b"},children:[jsxRuntime.jsxs("header",{style:{padding:"14px 16px",borderBottom:"1px solid #e2e8f0",display:"flex",alignItems:"center",gap:"8px"},children:[jsxRuntime.jsx("button",{type:"button",onClick:a,"data-testid":"template-manager-back",style:{padding:"4px 8px",border:"1px solid #e2e8f0",borderRadius:"4px",background:"#fff",fontSize:"12px",cursor:"pointer",color:"#334155"},children:o.variableTemplateManager.backToScopes}),jsxRuntime.jsx("h3",{style:{flex:1,fontSize:"16px",fontWeight:600,margin:0},children:o.variableTemplateManager.title(n)}),jsxRuntime.jsx("button",{type:"button",onClick:a,"aria-label":o.variableTemplateManager.closeAriaLabel,"data-testid":"template-manager-close-x",style:{background:"transparent",border:"none",fontSize:"18px",cursor:"pointer",color:"#64748b",padding:"4px 8px"},children:"\xD7"})]}),jsxRuntime.jsxs("section",{style:{flex:1,overflowY:"auto",padding:"12px 16px"},children:[s.length===0&&!p&&jsxRuntime.jsx("div",{"data-testid":"template-manager-empty",style:{fontSize:"13px",color:"#94a3b8",padding:"12px 0"},children:o.variableTemplateManager.noTemplates}),jsxRuntime.jsx("ul",{style:{listStyle:"none",padding:0,margin:0,display:"flex",flexDirection:"column",gap:"6px"},children:s.map(m=>{let D=typeof m.name=="string"?m.name:formCore.resolveLabel(m.name,d,d),V=g===m.id;return jsxRuntime.jsxs("li",{"data-testid":`template-row-${m.code}`,style:{display:"flex",alignItems:"center",gap:"8px",padding:"8px",border:"1px solid #e2e8f0",borderRadius:"6px",backgroundColor:v===m.id?"#f0fdf4":"#fff",flexWrap:"wrap"},children:[jsxRuntime.jsx("span",{style:{fontSize:"13px",fontWeight:600,color:"#0f172a"},children:m.code}),jsxRuntime.jsx("span",{style:{fontSize:"12px",color:"#475569",flex:1},children:D}),jsxRuntime.jsx("span",{style:{fontSize:"11px",color:"#64748b",fontFamily:"monospace"},children:m.variableType}),jsxRuntime.jsx("button",{type:"button","data-testid":`template-edit-${m.code}`,"aria-label":o.variableTemplateManager.editTemplateAria(m.code),onClick:()=>S(m),disabled:h,style:Ke,children:"\u270F"}),jsxRuntime.jsx("button",{type:"button","data-testid":`template-remove-${m.code}`,"aria-label":o.variableTemplateManager.removeTemplateAria(m.code),onClick:()=>x(m.id),disabled:h,style:{...Ke,color:"#ef4444"},children:"\xD7"}),V&&jsxRuntime.jsxs("div",{"data-testid":`template-confirm-${m.code}`,style:{flexBasis:"100%",fontSize:"12px",color:"#b91c1c",backgroundColor:"#fef2f2",padding:"6px 8px",borderRadius:"4px",display:"flex",alignItems:"center",gap:"8px"},children:[jsxRuntime.jsx("span",{style:{flex:1},children:o.variableTemplateManager.confirmDelete}),jsxRuntime.jsx("button",{type:"button","data-testid":`template-confirm-yes-${m.code}`,onClick:z,disabled:h,style:{...Ke,backgroundColor:"#ef4444",color:"#fff",border:"none",padding:"4px 8px"},children:o.variableTemplateManager.deleteConfirm}),jsxRuntime.jsx("button",{type:"button","data-testid":`template-confirm-no-${m.code}`,onClick:()=>x(null),disabled:h,style:{...Ke,padding:"4px 8px"},children:o.variableTemplateManager.deleteCancel})]})]},m.id)})}),!p&&!v&&jsxRuntime.jsx("button",{type:"button","data-testid":"template-add-button",onClick:Y,disabled:h,style:{marginTop:"12px",padding:"6px 12px",border:"1px solid #2563eb",borderRadius:"6px",color:"#2563eb",backgroundColor:"#fff",fontSize:"13px",fontWeight:500,cursor:"pointer"},children:o.variableTemplateManager.addTemplate}),(p||v)&&jsxRuntime.jsxs("form",{"data-testid":"template-form",onSubmit:m=>{m.preventDefault(),N();},style:{marginTop:"12px",padding:"12px",border:"1px solid #cbd5e1",borderRadius:"6px",backgroundColor:"#f8fafc",display:"flex",flexDirection:"column",gap:"8px"},children:[jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{style:ke,children:v?o.variableTemplateManager.readonlyCode:o.variableTemplateManager.code}),jsxRuntime.jsx("input",{type:"text","data-testid":"template-form-code",value:c.code,onChange:m=>u({...c,code:m.target.value}),readOnly:!!v,disabled:!!v||h,required:true,style:{...Ae,fontFamily:"monospace"}}),C==="duplicate-code"&&jsxRuntime.jsx("div",{"data-testid":"template-error-duplicate-code",style:po,children:o.variableTemplateManager.duplicateCodeError})]}),v?jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{style:ke,children:o.variableTemplateManager.readonlyName}),jsxRuntime.jsx("div",{"data-testid":"template-form-name-readonly",style:{...Ae,backgroundColor:"#f1f5f9",color:"#475569"},children:typeof c.name=="string"?c.name:formCore.resolveLabel(c.name,d,d)})]}):jsxRuntime.jsx(Z,{label:o.variableTemplateManager.name,value:c.name,onChange:m=>u({...c,name:m}),testIdPrefix:"template-form-name",disabled:h}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{style:ke,children:o.variableTemplateManager.type}),jsxRuntime.jsx("select",{"data-testid":"template-form-type",value:c.variableType,onChange:m=>u({...c,variableType:m.target.value}),disabled:h,style:Ae,children:ia.map(m=>jsxRuntime.jsx("option",{value:m,children:m},m))})]}),jsxRuntime.jsx(Z,{label:o.variableTemplateManager.description,value:c.description,onChange:m=>u({...c,description:m}),testIdPrefix:"template-form-description",disabled:h}),jsxRuntime.jsx(Z,{label:o.variableTemplateManager.placeholder,value:c.placeholder,onChange:m=>u({...c,placeholder:m}),testIdPrefix:"template-form-placeholder",disabled:h}),jsxRuntime.jsxs("div",{style:{display:"flex",gap:"12px",flexWrap:"wrap"},children:[jsxRuntime.jsxs("label",{style:so,children:[jsxRuntime.jsx("input",{type:"checkbox","data-testid":"template-form-required",checked:c.isRequired,onChange:m=>u({...c,isRequired:m.target.checked}),disabled:h}),o.variableTemplateManager.required]}),jsxRuntime.jsxs("label",{style:so,children:[jsxRuntime.jsx("input",{type:"checkbox","data-testid":"template-form-readonly",checked:c.isReadonly,onChange:m=>u({...c,isReadonly:m.target.checked}),disabled:h}),o.variableTemplateManager.readonly]}),jsxRuntime.jsxs("label",{style:so,children:[jsxRuntime.jsx("input",{type:"checkbox","data-testid":"template-form-hidden",checked:c.isHidden,onChange:m=>u({...c,isHidden:m.target.checked}),disabled:h}),o.variableTemplateManager.hidden]})]}),Yo.includes(c.variableType)&&jsxRuntime.jsxs("div",{"data-testid":"template-form-options",children:[jsxRuntime.jsx("label",{style:ke,children:o.variableTemplateManager.options}),jsxRuntime.jsx(Je,{options:c.options,onChange:m=>u({...c,options:m}),disabled:h})]}),c.variableType==="calculated"&&jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{style:ke,children:o.variableTemplateManager.expression}),jsxRuntime.jsx("input",{type:"text","data-testid":"template-form-expression",value:c.expression,onChange:m=>u({...c,expression:m.target.value}),disabled:h,style:{...Ae,fontFamily:"monospace"}})]}),Xo.includes(c.variableType)&&jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{style:ke,children:o.variableTemplateManager.dataSourceId}),jsxRuntime.jsxs("select",{"data-testid":"template-form-datasource",value:c.dataSourceId,onChange:m=>u({...c,dataSourceId:m.target.value}),disabled:h,style:Ae,children:[jsxRuntime.jsx("option",{value:"",children:"\u2014"}),K.map(m=>jsxRuntime.jsxs("option",{value:m.id,children:[m.label," (",m.id,")"]},m.id))]})]}),jsxRuntime.jsxs("div",{style:{borderTop:"1px solid #e2e8f0",paddingTop:"8px"},children:[jsxRuntime.jsxs("button",{type:"button","data-testid":"template-form-advanced-toggle",onClick:()=>_(m=>!m),style:{border:"none",background:"transparent",cursor:"pointer",color:"#475569",fontSize:"12px",fontWeight:600,padding:0},children:[R?"\u25BC":"\u25B6"," ",o.variableTemplateManager.advancedSection]}),R&&jsxRuntime.jsxs("div",{"data-testid":"template-form-advanced",style:{display:"flex",flexDirection:"column",gap:"6px",marginTop:"6px"},children:[jsxRuntime.jsx(lo,{label:o.variableTemplateManager.validationRules,testId:"template-form-validation-rules",value:c.validationRulesJson,onChange:m=>u({...c,validationRulesJson:m}),error:C==="validationRules",disabled:h}),jsxRuntime.jsx(lo,{label:o.variableTemplateManager.conditions,testId:"template-form-conditions",value:c.conditionsJson,onChange:m=>u({...c,conditionsJson:m}),error:C==="conditions",disabled:h}),jsxRuntime.jsx(lo,{label:o.variableTemplateManager.style,testId:"template-form-style",value:c.styleJson,onChange:m=>u({...c,styleJson:m}),error:C==="style",disabled:h})]})]}),C&&!["duplicate-code","validationRules","conditions","style"].includes(C)&&jsxRuntime.jsx("div",{"data-testid":"template-form-error",style:po,children:C}),jsxRuntime.jsxs("div",{style:{display:"flex",justifyContent:"flex-end",gap:"8px",marginTop:"8px"},children:[jsxRuntime.jsx("button",{type:"button","data-testid":"template-form-cancel",onClick:$,disabled:h,style:Qo,children:o.variableTemplateManager.cancelButton}),jsxRuntime.jsx("button",{type:"submit","data-testid":"template-form-save",disabled:h||!c.code.trim(),style:{...Qo,backgroundColor:"#2563eb",color:"#fff",border:"none"},children:o.variableTemplateManager.saveButton})]})]})]})]})})}function lo({label:e,testId:a,value:r,onChange:n,error:o,disabled:t}){return jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{style:ke,children:e}),jsxRuntime.jsx("textarea",{"data-testid":a,value:r,onChange:i=>n(i.target.value),disabled:t,rows:3,style:{...Ae,fontFamily:"monospace",fontSize:"12px",resize:"vertical",borderColor:o?"#ef4444":"#cbd5e1"}}),o&&jsxRuntime.jsx("div",{"data-testid":`${a}-error`,style:po,children:"JSON"})]})}var ke={display:"block",fontSize:"11px",fontWeight:500,color:"#475569",marginBottom:"2px"},so={display:"inline-flex",alignItems:"center",gap:"4px",fontSize:"12px",color:"#334155"},Ae={width:"100%",boxSizing:"border-box",padding:"4px 6px",border:"1px solid #cbd5e1",borderRadius:"4px",fontSize:"12px",color:"#0f172a",outline:"none",backgroundColor:"#fff"},Ke={border:"1px solid #e2e8f0",background:"#fff",cursor:"pointer",fontSize:"13px",color:"#64748b",padding:"2px 6px",borderRadius:"4px"},Qo={padding:"4px 10px",border:"1px solid #cbd5e1",borderRadius:"4px",fontSize:"12px",color:"#334155",backgroundColor:"#fff",cursor:"pointer"},po={fontSize:"11px",color:"#b91c1c",marginTop:"2px"};function fo({open:e,onClose:a}){let r=w(),n=k(m=>m.adapter),o=k(m=>m.availableScopes),t=k(m=>m.setAvailableScopes),l=k(m=>m.form).langConfig?.defaultLang??formCore.DEFAULT_LANG_CONFIG.defaultLang,[d,s]=zr.useState(""),[f,v]=zr.useState(""),[y,p]=zr.useState(null),[b,c]=zr.useState(""),[u,g]=zr.useState(null),[x,h]=zr.useState({}),[I,C]=zr.useState(false),[A,R]=zr.useState(null);if(!e)return null;let _=m=>{t(m(o));},K=async()=>{if(!d.trim()||!n?.createScope)return;let m=f.trim()||d.trim().toUpperCase().replace(/\s+/g,"_");C(true);try{let D=await n.createScope({code:m,name:d.trim(),tenantId:"default"});_(V=>[...V,D]),s(""),v("");}finally{C(false);}},$=m=>{let D=typeof m.name=="string"?m.name:formCore.resolveLabel(m.name,l,l);p(m.id),c(D);},Y=()=>{p(null),c("");},S=async()=>{if(!y||!n?.updateScope){Y();return}let m=b.trim();if(!m){Y();return}let D=o.find(X=>X.id===y),V=D&&typeof D.name=="object"?{...D.name,[l]:m}:m;C(true);try{let X=await n.updateScope(y,{name:V});_(j=>j.map(ye=>ye.id===y?X:ye)),Y();}finally{C(false);}},E=m=>{g(m),h(D=>{let V={...D};return delete V[m],V});},N=async()=>{if(!u||!n?.deleteScope)return;let m=u;C(true);try{await n.deleteScope(m),_(D=>D.filter(V=>V.id!==m)),g(null);}catch(D){let V=D instanceof Error?D.message:String(D);h(X=>({...X,[m]:V}));}finally{C(false);}},z=m=>{let D=typeof m.name=="string"?m.name:formCore.resolveLabel(m.name,l,l);R({id:m.id,name:D});};return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("div",{role:"dialog","aria-modal":"true","aria-label":r.scopeManager.dialogAriaLabel,"data-testid":"scope-manager-dialog",onClick:a,style:{position:"fixed",inset:0,backgroundColor:"rgba(0, 0, 0, 0.3)",zIndex:50,display:"flex",alignItems:"center",justifyContent:"center",padding:"16px"},children:jsxRuntime.jsxs("div",{onClick:m=>m.stopPropagation(),style:{backgroundColor:"#fff",borderRadius:"8px",maxWidth:"36rem",width:"100%",maxHeight:"80vh",overflow:"auto",boxShadow:"0 10px 25px rgba(0,0,0,0.2)",fontFamily:"system-ui, -apple-system, sans-serif",color:"#1e293b"},children:[jsxRuntime.jsxs("header",{style:{padding:"16px",borderBottom:"1px solid #e2e8f0",display:"flex",justifyContent:"space-between",alignItems:"center"},children:[jsxRuntime.jsx("h3",{style:{fontSize:"16px",fontWeight:600,margin:0},children:r.scopeManager.title}),jsxRuntime.jsx("button",{type:"button",onClick:a,"aria-label":r.scopeManager.closeAriaLabel,"data-testid":"scope-manager-close-x",style:{background:"transparent",border:"none",fontSize:"18px",cursor:"pointer",color:"#64748b",padding:"4px 8px"},children:"\xD7"})]}),jsxRuntime.jsxs("section",{style:{padding:"16px"},children:[o.length===0&&jsxRuntime.jsx("div",{"data-testid":"scope-manager-empty",style:{fontSize:"13px",color:"#94a3b8",marginBottom:"12px"},children:r.scopeManager.noScopes}),jsxRuntime.jsx("ul",{style:{listStyle:"none",padding:0,margin:0,display:"flex",flexDirection:"column",gap:"6px"},children:o.map(m=>{let D=y===m.id,V=u===m.id,X=typeof m.name=="string"?m.name:formCore.resolveLabel(m.name,l,l);return jsxRuntime.jsxs("li",{"data-testid":`scope-row-${m.code}`,style:{display:"flex",alignItems:"center",gap:"8px",padding:"8px",border:"1px solid #e2e8f0",borderRadius:"6px",backgroundColor:"#fff",flexWrap:"wrap"},children:[D?jsxRuntime.jsx("input",{type:"text",value:b,autoFocus:true,"data-testid":`scope-name-edit-${m.code}`,onChange:j=>c(j.target.value),onBlur:S,onKeyDown:j=>{j.key==="Enter"&&S(),j.key==="Escape"&&Y();},disabled:I,style:{flex:1,padding:"4px 8px",border:"1px solid #cbd5e1",borderRadius:"4px",fontSize:"13px",color:"#000",outline:"none"}}):jsxRuntime.jsx("span",{"data-testid":`scope-name-${m.code}`,onClick:()=>$(m),"aria-label":r.scopeManager.editScopeAria(m.code),style:{flex:1,fontSize:"13px",cursor:"pointer",padding:"4px 8px"},children:X}),jsxRuntime.jsx("span",{style:{fontSize:"11px",color:"#94a3b8",fontFamily:"monospace"},children:m.code}),jsxRuntime.jsx("button",{type:"button","data-testid":`scope-manage-variables-${m.code}`,"aria-label":r.scopeManager.manageVariablesAria(m.code),onClick:()=>z(m),disabled:I,style:{padding:"4px 10px",border:"1px solid #2563eb",borderRadius:"4px",backgroundColor:"#fff",color:"#2563eb",fontSize:"12px",cursor:"pointer"},children:r.scopeManager.manageVariables}),jsxRuntime.jsx("button",{type:"button","aria-label":r.scopeManager.removeScopeAria(m.code),"data-testid":`scope-remove-${m.code}`,onClick:()=>E(m.id),disabled:I,style:{width:"24px",height:"24px",border:"1px solid #e2e8f0",borderRadius:"4px",backgroundColor:"#fff",color:"#64748b",cursor:"pointer",fontSize:"14px",lineHeight:1},children:"\xD7"}),V&&jsxRuntime.jsxs("div",{"data-testid":`scope-confirm-${m.code}`,style:{flexBasis:"100%",fontSize:"12px",color:"#b91c1c",backgroundColor:"#fef2f2",padding:"6px 8px",borderRadius:"4px",display:"flex",flexDirection:"column",gap:"6px"},children:[jsxRuntime.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[jsxRuntime.jsx("span",{style:{flex:1},children:r.scopeManager.confirmDelete}),jsxRuntime.jsx("button",{type:"button","data-testid":`scope-confirm-yes-${m.code}`,onClick:N,disabled:I,style:{padding:"4px 8px",border:"none",borderRadius:"4px",backgroundColor:"#ef4444",color:"#fff",fontSize:"12px",cursor:"pointer"},children:r.scopeManager.deleteConfirm}),jsxRuntime.jsx("button",{type:"button","data-testid":`scope-confirm-no-${m.code}`,onClick:()=>g(null),disabled:I,style:{padding:"4px 8px",border:"1px solid #e2e8f0",borderRadius:"4px",backgroundColor:"#fff",color:"#334155",fontSize:"12px",cursor:"pointer"},children:r.scopeManager.deleteCancel})]}),x[m.id]&&jsxRuntime.jsxs("div",{"data-testid":`scope-delete-error-${m.code}`,style:{color:"#7f1d1d",fontWeight:500},children:[r.scopeManager.deleteError," \u2014 ",x[m.id]]})]})]},m.id)})})]}),jsxRuntime.jsxs("section",{style:{padding:"12px 16px",borderTop:"1px solid #e2e8f0",display:"flex",alignItems:"center",gap:"8px",backgroundColor:"#f8fafc"},children:[jsxRuntime.jsx("input",{type:"text",value:d,"data-testid":"scope-new-name",placeholder:r.scopeManager.newScopeName,onChange:m=>s(m.target.value),onKeyDown:m=>{m.key==="Enter"&&K();},disabled:I,style:{flex:1,padding:"6px 8px",border:"1px solid #cbd5e1",borderRadius:"4px",fontSize:"13px",color:"#000",outline:"none"}}),jsxRuntime.jsx("input",{type:"text",value:f,"data-testid":"scope-new-code",placeholder:r.scopeManager.newScopeCodePlaceholder,onChange:m=>v(m.target.value),disabled:I,style:{width:"140px",padding:"6px 8px",border:"1px solid #cbd5e1",borderRadius:"4px",fontSize:"13px",color:"#000",outline:"none",fontFamily:"monospace"}}),jsxRuntime.jsx("button",{type:"button","data-testid":"scope-add",onClick:K,disabled:I||d.trim()===""||!n?.createScope,style:{padding:"6px 12px",border:"none",borderRadius:"4px",backgroundColor:d.trim()===""?"#cbd5e1":"#2563eb",color:"#fff",fontSize:"13px",cursor:d.trim()===""?"not-allowed":"pointer"},children:r.scopeManager.addScope})]})]})}),A&&jsxRuntime.jsx(co,{open:true,onClose:()=>R(null),scopeId:A.id,scopeName:A.name})]})}function go({onSave:e,onExport:a,onImport:r}){let{form:n,updateFormMeta:o,view:t,setView:i,isDirty:l,isSaving:d,canUndo:s,canRedo:f,undo:v,redo:y,save:p,addPage:b,select:c}=k(),u=w(),[g,x]=zr.useState(false),[h,I]=zr.useState(false),[C,A]=zr.useState(false),R=async()=>{await p(),e?.();},_=()=>{let $=n.pages.length;b({id:`page-${Date.now()}`,code:`PAGE_${$+1}`,name:`Page ${$+1}`,order:$,isRepeatable:false,items:[]});},K=[{view:"canvas",label:u.toolbar.viewEditor},{view:"preview",label:u.toolbar.viewPreview},{view:"json",label:u.toolbar.viewJson}];return jsxRuntime.jsxs("div",{style:{display:"flex",alignItems:"center",padding:"8px 16px",borderBottom:"1px solid #e2e8f0",backgroundColor:"#fff",gap:"8px"},children:[jsxRuntime.jsx("input",{type:"text",value:formCore.resolveLabel(n.name,n.langConfig?.defaultLang??formCore.DEFAULT_LANG_CONFIG.defaultLang,n.langConfig?.defaultLang??formCore.DEFAULT_LANG_CONFIG.defaultLang),onChange:$=>{let Y=n.langConfig?.defaultLang??formCore.DEFAULT_LANG_CONFIG.defaultLang,S;typeof n.name=="string"?S=$.target.value:S={...n.name??{},[Y]:$.target.value},o({name:S});},style:{border:"none",fontSize:"16px",fontWeight:600,color:"#1e293b",padding:"4px 8px",borderRadius:"4px",outline:"none",minWidth:"200px",backgroundColor:"transparent"},placeholder:u.toolbar.formNamePlaceholder}),l&&jsxRuntime.jsx("span",{style:{fontSize:"11px",color:"#f59e0b",fontWeight:500},children:u.toolbar.unsaved}),jsxRuntime.jsx("div",{style:{flex:1}}),jsxRuntime.jsx("button",{type:"button",onClick:()=>c({type:"form"}),title:u.toolbar.formProperties,"data-testid":"toolbar-form-properties","aria-label":u.toolbar.formProperties,style:{padding:"6px 10px",borderRadius:"6px",border:"1px solid #e2e8f0",backgroundColor:"#fff",color:"#334155",fontSize:"14px",cursor:"pointer"},children:"\u2699"}),jsxRuntime.jsx("button",{type:"button",onClick:()=>A(true),title:u.toolbar.manageScopesTitle,"data-testid":"toolbar-scopes","aria-label":u.toolbar.manageScopesTitle,style:{padding:"6px 12px",borderRadius:"6px",border:"1px solid #e2e8f0",backgroundColor:"#fff",color:"#334155",fontSize:"13px",fontWeight:500,cursor:"pointer"},children:u.toolbar.scopes}),jsxRuntime.jsx(Ie,{onClick:_,label:u.toolbar.addPage}),jsxRuntime.jsx(Ie,{onClick:()=>x(true),label:u.toolbar.types,title:u.toolbar.manageFormTypesTitle}),jsxRuntime.jsx("button",{type:"button",onClick:()=>I(true),title:u.toolbar.manageDataSourcesTitle,"data-testid":"toolbar-datasources","aria-label":u.toolbar.manageDataSourcesTitle,style:{padding:"6px 12px",borderRadius:"6px",border:"1px solid #e2e8f0",backgroundColor:"#fff",color:"#334155",fontSize:"13px",fontWeight:500,cursor:"pointer"},children:u.toolbar.dataSources}),jsxRuntime.jsx("div",{style:{width:"1px",height:"24px",backgroundColor:"#e2e8f0"}}),jsxRuntime.jsx(Ie,{onClick:v,label:"\u21A9",disabled:!s(),title:u.toolbar.undo}),jsxRuntime.jsx(Ie,{onClick:y,label:"\u21AA",disabled:!f(),title:u.toolbar.redo}),jsxRuntime.jsx("div",{style:{width:"1px",height:"24px",backgroundColor:"#e2e8f0"}}),jsxRuntime.jsx("div",{style:{display:"flex",borderRadius:"6px",overflow:"hidden",border:"1px solid #e2e8f0"},children:K.map($=>jsxRuntime.jsx("button",{type:"button",onClick:()=>i($.view),style:{padding:"4px 12px",fontSize:"12px",fontWeight:500,border:"none",cursor:"pointer",backgroundColor:t===$.view?"#2563eb":"#fff",color:t===$.view?"#fff":"#64748b"},children:$.label},$.view))}),jsxRuntime.jsx("div",{style:{width:"1px",height:"24px",backgroundColor:"#e2e8f0"}}),jsxRuntime.jsx(Ie,{onClick:R,label:d?u.toolbar.saving:u.toolbar.save,primary:true,disabled:d||!l}),a&&jsxRuntime.jsx(Ie,{onClick:a,label:u.toolbar.export}),r&&jsxRuntime.jsx(Ie,{onClick:r,label:u.toolbar.import}),jsxRuntime.jsx(_o,{open:g,onClose:()=>x(false)}),jsxRuntime.jsx(oo,{open:h,onClose:()=>I(false)}),jsxRuntime.jsx(fo,{open:C,onClose:()=>A(false)})]})}function Ie({onClick:e,label:a,primary:r,disabled:n,title:o}){return jsxRuntime.jsx("button",{type:"button",onClick:e,disabled:n,title:o,style:{padding:"6px 12px",borderRadius:"6px",border:r?"none":"1px solid #e2e8f0",backgroundColor:r?"#2563eb":"#fff",color:r?"#fff":"#334155",fontSize:"13px",fontWeight:500,cursor:n?"default":"pointer",opacity:n?.5:1},children:a})}function Ye(){let e=w(),[a,r]=zr.useState("fields"),[n,o]=zr.useState(""),{form:t,availableTemplates:i}=k(),l=t.langConfig?.defaultLang??formCore.DEFAULT_LANG_CONFIG.defaultLang,s=zr.useMemo(()=>[{label:e.toolbox.groupText,items:[{kind:"variable",type:"text",label:e.toolbox.types.text,icon:"T"},{kind:"variable",type:"textarea",label:e.toolbox.types.textarea,icon:"\xB6"},{kind:"variable",type:"number",label:e.toolbox.types.number,icon:"#"},{kind:"variable",type:"email",label:e.toolbox.types.email,icon:"@"}]},{label:e.toolbox.groupSelection,items:[{kind:"variable",type:"select",label:e.toolbox.types.select,icon:"\u25BC"},{kind:"variable",type:"multiselect",label:e.toolbox.types.multiselect,icon:"\u2611"},{kind:"variable",type:"radio",label:e.toolbox.types.radio,icon:"\u25C9"},{kind:"variable",type:"checkbox",label:e.toolbox.types.checkbox,icon:"\u2610"},{kind:"variable",type:"listradio",label:e.toolbox.types.listradio,icon:"\u2261"}]},{label:e.toolbox.groupDateTime,items:[{kind:"variable",type:"date",label:e.toolbox.types.date,icon:"\u{1F4C5}"},{kind:"variable",type:"datetime",label:e.toolbox.types.datetime,icon:"\u{1F550}"},{kind:"variable",type:"time",label:e.toolbox.types.time,icon:"\u23F0"}]},{label:e.toolbox.groupMedia,items:[{kind:"variable",type:"file",label:e.toolbox.types.file,icon:"\u{1F4CE}"},{kind:"variable",type:"image",label:e.toolbox.types.image,icon:"\u{1F5BC}"},{kind:"variable",type:"photo",label:e.toolbox.types.photo,icon:"\u{1F4F7}"},{kind:"variable",type:"gps",label:e.toolbox.types.gps,icon:"\u{1F4CD}"}]},{label:e.toolbox.groupAdvanced,items:[{kind:"variable",type:"rating",label:e.toolbox.types.rating,icon:"\u2605"},{kind:"variable",type:"calculated",label:e.toolbox.types.calculated,icon:"fx"},{kind:"variable",type:"hidden",label:e.toolbox.types.hidden,icon:"\u{1F441}"},{kind:"variable",type:"label",label:e.toolbox.types.label,icon:"Aa"},{kind:"variable",type:"panel",label:e.toolbox.types.panel,icon:"\u25AD"},{kind:"variable",type:"richtext",label:e.toolbox.types.richtext,icon:"\u{1F4DD}"}]},{label:e.toolbox.groupRoster,items:[{kind:"roster",rosterType:"check",label:e.toolbox.typeRosterCheck,icon:"\u25A4"},{kind:"roster",rosterType:"list",label:e.toolbox.typeRosterList,icon:"\u25A6"},{kind:"roster",rosterType:"collection",label:e.toolbox.typeRosterCollection,icon:"\u25A5"},{kind:"roster",rosterType:"collection_extend",label:e.toolbox.typeRosterCollectionExtend,icon:"\u25A9"}]}],[e]).map(f=>({...f,items:f.items.filter(v=>v.label.toLowerCase().includes(n.toLowerCase()))})).filter(f=>f.items.length>0);return jsxRuntime.jsxs("div",{style:{width:"220px",borderRight:"1px solid #e2e8f0",display:"flex",flexDirection:"column",backgroundColor:"#f8fafc",overflow:"hidden"},children:[jsxRuntime.jsx(ba,{tab:a,setTab:r,labels:e}),jsxRuntime.jsx("div",{style:{padding:"12px",borderBottom:"1px solid #e2e8f0"},children:jsxRuntime.jsx("input",{type:"text",placeholder:e.toolbox.searchPlaceholder,value:n,onChange:f=>o(f.target.value),style:{width:"100%",padding:"6px 10px",border:"1px solid #e2e8f0",borderRadius:"6px",fontSize:"13px",outline:"none",boxSizing:"border-box"}})}),jsxRuntime.jsxs("div",{style:{flex:1,overflowY:"auto",padding:"8px"},children:[a==="fields"&&s.map(f=>jsxRuntime.jsxs("div",{style:{marginBottom:"16px"},children:[jsxRuntime.jsx("div",{style:{fontSize:"11px",fontWeight:600,color:"#94a3b8",textTransform:"uppercase",letterSpacing:"0.5px",marginBottom:"6px",padding:"0 4px"},children:f.label}),f.items.map(v=>jsxRuntime.jsx(ga,{entry:v},`${v.kind}-${v.kind==="roster"?v.rosterType:v.type}`))]},f.label)),a==="variables"&&jsxRuntime.jsx(ya,{templates:i,scopeIds:t.scopeIds,search:n,defaultLang:l,labels:e})]})]})}function ba({tab:e,setTab:a,labels:r}){let n={flex:1,padding:"8px 0",fontSize:"12px",fontWeight:500,textAlign:"center",cursor:"pointer",userSelect:"none",color:"#64748b",borderBottomWidth:"2px",borderBottomStyle:"solid",borderBottomColor:"transparent"},o={...n,color:"#2563eb",fontWeight:600,borderBottomColor:"#2563eb"};return jsxRuntime.jsxs("div",{style:{display:"flex",borderBottom:"1px solid #e2e8f0",backgroundColor:"#fff"},children:[jsxRuntime.jsx("div",{role:"tab","aria-selected":e==="fields","data-testid":"toolbox-tab-fields",onClick:()=>a("fields"),style:e==="fields"?o:n,children:r.toolbox.tabFields}),jsxRuntime.jsx("div",{role:"tab","aria-selected":e==="variables","data-testid":"toolbox-tab-variables",onClick:()=>a("variables"),style:e==="variables"?o:n,children:r.toolbox.tabVariables})]})}function ga({entry:e}){let a=e.kind==="roster"?`toolbox-roster-${e.rosterType}`:`toolbox-variable-${e.type}`,r=e.kind==="roster"?{type:"new-roster",rosterType:e.rosterType}:{type:"new-variable",variableType:e.type},{attributes:n,listeners:o,setNodeRef:t,isDragging:i}=core.useDraggable({id:a,data:r});return jsxRuntime.jsxs("div",{ref:t,"data-testid":a,...o,...n,style:{display:"flex",alignItems:"center",gap:"8px",padding:"6px 8px",marginBottom:"2px",borderRadius:"6px",cursor:"grab",fontSize:"13px",color:"#334155",backgroundColor:i?"#e2e8f0":"transparent",userSelect:"none"},children:[jsxRuntime.jsx("span",{style:{width:"20px",textAlign:"center",fontSize:"14px"},children:e.icon}),jsxRuntime.jsx("span",{children:e.label})]})}function ya({templates:e,scopeIds:a,search:r,defaultLang:n,labels:o}){let t=d=>jsxRuntime.jsx("div",{"data-testid":"toolbox-variables-empty",style:{padding:"14px",color:"#94a3b8",fontSize:"12px",textAlign:"center",fontStyle:"italic"},children:d});if(!a||a.length===0)return t(o.toolbox.noScope);if(e.length===0)return t(o.toolbox.noTemplates);let i=r.toLowerCase(),l=e.filter(d=>{if(!i)return true;let s=d.code.toLowerCase().includes(i),f=ot(d.name,n).toLowerCase().includes(i);return s||f}).slice().sort((d,s)=>d.code.localeCompare(s.code));return l.length===0?t(o.toolbox.noTemplates):jsxRuntime.jsx("div",{style:{display:"flex",flexDirection:"column",gap:"4px"},children:l.map(d=>jsxRuntime.jsx(xa,{template:d,defaultLang:n},d.id))})}function xa({template:e,defaultLang:a}){let r=`toolbox-template-${e.code}`,{attributes:n,listeners:o,setNodeRef:t,isDragging:i}=core.useDraggable({id:r,data:{type:"new-variable-from-template",template:e}});return jsxRuntime.jsxs("div",{ref:t,"data-testid":r,...o,...n,style:{display:"flex",alignItems:"center",gap:"8px",padding:"6px 8px",borderRadius:"6px",cursor:"grab",fontSize:"13px",color:"#334155",backgroundColor:i?"#e2e8f0":"transparent",userSelect:"none"},children:[jsxRuntime.jsx("span",{style:{fontSize:"10px",fontWeight:600,padding:"2px 6px",borderRadius:"4px",backgroundColor:"#e0e7ff",color:"#3730a3",textTransform:"uppercase",letterSpacing:"0.3px",minWidth:"42px",textAlign:"center"},children:e.variableType}),jsxRuntime.jsxs("div",{style:{display:"flex",flexDirection:"column",minWidth:0,flex:1},children:[jsxRuntime.jsx("span",{style:{fontFamily:"monospace",fontSize:"11px",color:"#475569",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:e.code}),jsxRuntime.jsx("span",{style:{fontSize:"12px",color:"#1e293b",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:ot(e.name,a)})]})]})}function ot(e,a){return formCore.resolveLabel(e,a,a)}function vo(){let a=k(r=>r.form).langConfig?.defaultLang??formCore.DEFAULT_LANG_CONFIG.defaultLang;return r=>formCore.resolveLabel(r,a,a)}function Xe(){let{form:e,select:a}=k(),r=w(),n=i=>{i.target===i.currentTarget&&a({type:"form"});};if(e.pages.length===0)return jsxRuntime.jsx("div",{"data-testid":"canvas-empty",onClick:n,style:{flex:1,display:"flex",alignItems:"center",justifyContent:"center",color:"#94a3b8",fontSize:"14px",cursor:"pointer"},children:r.canvas.emptyStateNoPageDnd});let o=e.pages.slice().sort((i,l)=>i.order-l.order),t=o.map(i=>`page-${i.code}`);return jsxRuntime.jsx("div",{"data-testid":"canvas-root",onClick:n,style:{flex:1,overflowY:"auto",padding:"16px",backgroundColor:"#fff"},children:jsxRuntime.jsx(sortable.SortableContext,{items:t,strategy:sortable.verticalListSortingStrategy,children:o.map(i=>jsxRuntime.jsx(Ta,{page:i},i.code))})})}function Ta({page:e}){let{selection:a,select:r}=k(),n=w(),o=vo(),t=a.type==="page"&&a.pageCode===e.code,{attributes:i,listeners:l,setNodeRef:d,transform:s,transition:f,isDragging:v,isOver:y}=sortable.useSortable({id:`page-${e.code}`,data:{type:"page",pageCode:e.code}}),p=(e.items??[...formCore.getPageVariables(e),...e.rosters??[]]).slice().sort((c,u)=>c.order-u.order),b=p.filter(c=>!formCore.isPageRoster(c)).length;return jsxRuntime.jsxs("div",{ref:d,style:{marginBottom:"16px",border:`2px solid ${t?"#2563eb":y?"#93c5fd":"#e2e8f0"}`,borderRadius:"8px",overflow:"hidden",transform:utilities.CSS.Transform.toString(s),transition:f,opacity:v?.6:1},children:[jsxRuntime.jsxs("div",{onClick:()=>r({type:"page",pageCode:e.code}),style:{padding:"10px 14px",backgroundColor:t?"#eff6ff":"#f8fafc",borderBottom:"1px solid #e2e8f0",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"space-between"},children:[jsxRuntime.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[jsxRuntime.jsx("span",{...i,...l,"data-testid":`canvas-page-drag-handle-${e.code}`,"aria-label":`Reorder page ${e.code}`,title:"Drag to reorder",onClick:c=>c.stopPropagation(),style:{color:"#94a3b8",fontSize:"14px",cursor:"grab",padding:"2px 6px",borderRadius:"4px",userSelect:"none",touchAction:"none"},children:"\u283F"}),jsxRuntime.jsx("span",{style:{fontSize:"14px",fontWeight:600,color:"#1e293b"},children:o(e.name)||n.canvas.unnamedPage}),e.isRepeatable&&jsxRuntime.jsx("span",{style:{fontSize:"10px",padding:"1px 6px",borderRadius:"4px",backgroundColor:"#dbeafe",color:"#2563eb",fontWeight:500},children:n.canvas.repeatable})]}),jsxRuntime.jsx("span",{style:{fontSize:"12px",color:"#94a3b8"},children:n.canvas.fieldsCount(b)})]}),jsxRuntime.jsx(sortable.SortableContext,{items:p.map(c=>c.code),strategy:sortable.verticalListSortingStrategy,children:jsxRuntime.jsx("div",{style:{padding:"4px 0"},children:p.map(c=>formCore.isPageRoster(c)?jsxRuntime.jsx(Ra,{roster:c,pageCode:e.code},c.code):jsxRuntime.jsx(nt,{variable:c,pageCode:e.code},c.code))})})]})}function nt({variable:e,pageCode:a,rosterCode:r}){let{selection:n,select:o}=k(),t=w(),i=vo(),l=n.type==="variable"&&n.pageCode===a&&n.variableCode===e.code,{attributes:d,listeners:s,setNodeRef:f,transform:v,transition:y,isDragging:p}=sortable.useSortable({id:e.code,data:{type:"variable",pageCode:a,variableCode:e.code,rosterCode:r}});return jsxRuntime.jsxs("div",{ref:f,...d,...s,onClick:b=>{b.stopPropagation(),o({type:"variable",pageCode:a,variableCode:e.code,rosterCode:r});},style:{display:"flex",alignItems:"center",gap:"8px",padding:"6px 14px",margin:"1px 0",cursor:"pointer",backgroundColor:l?"#eff6ff":p?"#f1f5f9":"transparent",borderLeft:l?"3px solid #2563eb":"3px solid transparent",transform:utilities.CSS.Transform.toString(v),transition:y,opacity:p?.5:1,fontSize:"13px"},children:[jsxRuntime.jsx("span",{style:{color:"#94a3b8",fontSize:"11px",width:"60px",flexShrink:0},children:e.type}),jsxRuntime.jsx("span",{style:{color:"#334155",flex:1},children:i(e.name)||e.code}),e.isRequired&&jsxRuntime.jsx("span",{style:{color:"#ef4444",fontSize:"11px"},children:"*"}),e.conditions&&e.conditions.length>0&&jsxRuntime.jsx("span",{style:{color:"#f59e0b",fontSize:"11px"},title:t.canvas.hasConditionsTitle,children:"\u26A1"}),e.dataSourceId&&jsxRuntime.jsx("span",{style:{color:"#22c55e",fontSize:"11px"},title:t.canvas.dataSourceConnectedTitle,children:"\u27F3"})]})}function Ra({roster:e,pageCode:a}){let{selection:r,select:n,addVariable:o}=k(),t=w(),i=vo(),l=r.type==="roster"&&r.pageCode===a&&r.rosterCode===e.code,{attributes:d,listeners:s,setNodeRef:f,transform:v,transition:y,isDragging:p}=sortable.useSortable({id:e.code,data:{type:"roster",pageCode:a,rosterCode:e.code}}),{setNodeRef:b,isOver:c}=core.useDroppable({id:`roster-drop-${e.code}`,data:{type:"roster-drop",pageCode:a,rosterCode:e.code}}),u=g=>{g.stopPropagation();let x=`RV_${Date.now().toString(36).slice(-4).toUpperCase()}`;o(a,{id:`var-${Date.now()}`,code:x,name:t.canvas.newFieldName,type:"text",order:e.variables.length,isRequired:false,isReadonly:false,isHidden:false},e.code);};return jsxRuntime.jsxs("div",{ref:f,style:{margin:"4px 8px",border:`1px solid ${l?"#2563eb":c?"#f59e0b":"#e2e8f0"}`,borderRadius:"6px",overflow:"hidden",backgroundColor:c?"#fefce8":void 0,transform:utilities.CSS.Transform.toString(v),transition:y,opacity:p?.5:1},children:[jsxRuntime.jsxs("div",{...d,...s,onClick:g=>{g.stopPropagation(),n({type:"roster",pageCode:a,rosterCode:e.code});},style:{padding:"6px 10px",backgroundColor:l?"#fef3c7":"#fffbeb",fontSize:"12px",fontWeight:600,color:"#92400e",cursor:"grab",display:"flex",alignItems:"center",gap:"6px"},children:[jsxRuntime.jsx("span",{style:{fontSize:"10px"},children:"\u25A4"}),i(e.name)||e.code," (",e.rosterType,")"]}),jsxRuntime.jsxs("div",{ref:b,children:[e.variables.slice().sort((g,x)=>g.order-x.order).map(g=>jsxRuntime.jsx(nt,{variable:g,pageCode:a,rosterCode:e.code},g.code)),jsxRuntime.jsx("div",{style:{padding:"4px 10px",borderTop:"1px solid #fde68a"},children:jsxRuntime.jsx("button",{type:"button",onClick:u,"data-testid":`canvas-add-field-to-roster-${e.code}`,style:{padding:"2px 8px",borderRadius:"3px",border:"1px dashed #d4a843",backgroundColor:"transparent",color:"#92400e",fontSize:"10px",cursor:"pointer"},children:t.canvas.addFieldToRoster})})]})]})}function $a(e,a){let r=e.pages.find(n=>n.code===a);return r?Array.isArray(r.items)?r.items.slice().sort((n,o)=>n.order-o.order):[...formCore.getPageVariables(r),...formCore.getPageRosters(r)].sort((n,o)=>n.order-o.order):null}function lt(e){return `${e}_${Date.now().toString(36).slice(-4).toUpperCase()}`}function dt(e,a){return r=>{let{active:n,over:o}=r;if(!n||!o)return;let t=n.data.current;if(!t?.type)return;let i=a(),l=()=>{let d=o.data.current;return d?d.type==="page"&&d.pageCode?{pageCode:d.pageCode}:d.type==="variable"&&d.pageCode?{pageCode:d.pageCode,rosterCode:d.rosterCode}:d.type==="roster"&&d.pageCode?{pageCode:d.pageCode,rosterCode:d.rosterCode}:d.type==="roster-drop"&&d.pageCode?{pageCode:d.pageCode,rosterCode:d.rosterCode}:null:null};if(t.type==="new-variable"){let d=l()??{pageCode:i.pages[0]?.code??""};if(!d.pageCode)return;let s=t.variableType??"text";e.addVariable(d.pageCode,{id:`var-${Date.now()}`,code:lt(s.toUpperCase()),name:`New ${s}`,type:s,order:0,isRequired:false,isReadonly:false,isHidden:false},d.rosterCode);return}if(t.type==="new-roster"){let d=l()??{pageCode:i.pages[0]?.code??""};if(!d.pageCode)return;let s=t.rosterType??"collection";e.addRoster(d.pageCode,{id:`roster-${Date.now()}`,code:lt("ROSTER"),name:"New Roster",rosterType:s,order:0,variables:[]});return}if(t.type==="new-variable-from-template"&&t.template){let d=l()??{pageCode:i.pages[0]?.code??""};if(!d.pageCode)return;e.addVariableFromTemplate(d.pageCode,t.template,d.rosterCode);return}if(t.type==="page"){let d=o.data.current;if(d?.type!=="page"||!d.pageCode||!t.pageCode||t.pageCode===d.pageCode)return;let s=i.pages.slice().sort((p,b)=>p.order-b.order),f=s.findIndex(p=>p.code===t.pageCode),v=s.findIndex(p=>p.code===d.pageCode);if(f===-1||v===-1||f===v)return;let y=sortable.arrayMove(s,f,v).map(p=>p.code);e.reorderPages(y);return}if(t.type==="variable"||t.type==="roster"){let d=o.data.current,s=t.pageCode;if(!s||!d)return;let f=p=>p.type==="roster"||p.type==="variable"&&!p.rosterCode,v=f(t),y=f(d);if(d.pageCode===s&&d.type!=="page"&&v&&y){let p=$a(i,s);if(!p)return;let b=String(n.id),c=String(o.id);if(b===c)return;let u=p.findIndex(x=>x.code===b),g=p.findIndex(x=>x.code===c);if(u===-1||g===-1)return;e.moveItem(s,u,g);return}if(t.type==="variable"&&t.variableCode){let p=d.pageCode??s,b=d.type==="page"?void 0:d.rosterCode;if(p===s&&(t.rosterCode??void 0)===(b??void 0))return;e.moveVariable(s,p,t.variableCode,0,t.rosterCode,b);return}}}}function Co({children:e}){let a=k(),[r,n]=zr.useState(null),o=core.useSensors(core.useSensor(core.PointerSensor,{activationConstraint:{distance:8}}),core.useSensor(core.KeyboardSensor,{coordinateGetter:sortable.sortableKeyboardCoordinates})),t=zr.useMemo(()=>dt({addVariable:a.addVariable,addRoster:a.addRoster,addVariableFromTemplate:a.addVariableFromTemplate,moveItem:a.moveItem,moveVariable:a.moveVariable,reorderPages:a.reorderPages},()=>k.getState().form),[a.addVariable,a.addRoster,a.addVariableFromTemplate,a.moveItem,a.moveVariable,a.reorderPages]);return jsxRuntime.jsxs(core.DndContext,{sensors:o,collisionDetection:core.closestCenter,onDragStart:l=>{let d=l.active.data.current;d&&(d.type==="new-variable"?n(d.variableType??"variable"):d.type==="new-roster"?n(`roster:${d.rosterType??""}`):d.type==="new-variable-from-template"?n(`tpl:${d.template?.code??""}`):d.type==="variable"?n(d.variableCode??""):d.type==="roster"?n(`\u25A4 ${String(l.active.id)}`):d.type==="page"&&n(`\u{1F4C4} ${d.pageCode??""}`));},onDragEnd:l=>{n(null),t(l);},children:[e,jsxRuntime.jsx(core.DragOverlay,{children:r&&jsxRuntime.jsx("div",{style:{padding:"6px 12px",borderRadius:"6px",backgroundColor:"#2563eb",color:"#fff",fontSize:"13px",fontWeight:500,boxShadow:"0 4px 12px rgba(0,0,0,0.15)"},children:r})})]})}var Wa=["fr","en"];function Ee(){let{form:e,formTypes:a,updateFormMeta:r,availableScopes:n}=k(),o=w(),t=e.langConfig??formCore.DEFAULT_LANG_CONFIG,i=e.pages.reduce((l,d)=>l+formCore.getPageVariables(d).length+formCore.getPageRosters(d).reduce((s,f)=>s+f.variables.length,0),0);return jsxRuntime.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"12px"},children:[jsxRuntime.jsx(Z,{label:o.properties.name,value:e.name,onChange:l=>r({name:l}),testIdPrefix:"form-name"}),jsxRuntime.jsx(ne,{label:o.properties.code,value:e.code,onChange:l=>r({code:l})}),jsxRuntime.jsx(Z,{label:o.properties.description,value:e.description,onChange:l=>r({description:l}),multiline:true,testIdPrefix:"form-description"}),jsxRuntime.jsx(ne,{label:o.properties.version,value:e.version,onChange:l=>r({version:l})}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{style:{display:"block",fontSize:"12px",fontWeight:500,color:"#64748b",marginBottom:"4px"},children:o.properties.formType}),jsxRuntime.jsxs("select",{"data-testid":"form-properties-type-select",value:e.formTypeId??"",onChange:l=>r({formTypeId:l.target.value||void 0}),style:{width:"100%",padding:"6px 8px",border:"1px solid #e2e8f0",borderRadius:"4px",fontSize:"13px",color:"#334155",outline:"none",boxSizing:"border-box"},children:[jsxRuntime.jsx("option",{value:"",children:o.properties.noType}),a.map(l=>jsxRuntime.jsx("option",{value:l.id,children:l.name},l.id))]})]}),jsxRuntime.jsx(qa,{value:e.scopeIds??[],availableScopes:n,onChange:l=>r({scopeIds:l}),defaultLang:t.defaultLang,labels:o}),jsxRuntime.jsx(Ua,{langConfig:t}),jsxRuntime.jsx("div",{style:{fontSize:"12px",color:"#94a3b8",marginTop:"8px"},children:o.properties.formSummary(e.pages.length,i)})]})}function qa({value:e,availableScopes:a,onChange:r,defaultLang:n,labels:o}){let i={padding:"8px",backgroundColor:"#f8fafc",borderRadius:"6px",display:"flex",flexDirection:"column",gap:"8px",marginTop:"4px"},l=e.map(y=>a.find(p=>p.id===y)??a.find(p=>p.code===y)).filter(y=>!!y),d=a.filter(y=>!e.includes(y.id)&&!e.includes(y.code)),s=y=>{y&&r([...e,y]);},f=y=>{let p=e.slice();p.splice(y,1),r(p);},v=(y,p)=>{let b=y+p;if(b<0||b>=e.length)return;let c=e.slice(),[u]=c.splice(y,1);c.splice(b,0,u),r(c);};return jsxRuntime.jsxs("div",{"data-testid":"form-scopes-selector",style:i,children:[jsxRuntime.jsx("div",{style:{fontSize:"11px",fontWeight:600,color:"#64748b",textTransform:"uppercase",letterSpacing:"0.5px"},children:o.properties.scopes}),jsxRuntime.jsx("p",{style:{margin:0,fontSize:"11px",color:"#94a3b8"},children:o.properties.scopesHint}),l.length===0?jsxRuntime.jsx("div",{style:{fontSize:"12px",color:"#94a3b8",fontStyle:"italic"},children:"\u2014"}):jsxRuntime.jsx("ol",{"data-testid":"form-scopes-selected",style:{margin:0,padding:0,listStyle:"none",display:"flex",flexDirection:"column",gap:"4px"},children:l.map((y,p)=>jsxRuntime.jsxs("li",{"data-testid":`form-scope-${y.code}`,style:{display:"flex",alignItems:"center",gap:"6px",padding:"6px 8px",borderRadius:"4px",backgroundColor:"#fff",border:"1px solid #e2e8f0",fontSize:"12px"},children:[jsxRuntime.jsxs("span",{style:{fontSize:"10px",color:"#64748b",minWidth:"14px"},children:[p+1,"."]}),jsxRuntime.jsx("span",{style:{fontFamily:"monospace",color:"#475569"},children:y.code}),jsxRuntime.jsx("span",{style:{color:"#1e293b",flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:formCore.resolveLabel(y.name,n,n)}),jsxRuntime.jsx("button",{type:"button","aria-label":o.properties.moveScopeUp,"data-testid":`form-scope-up-${y.code}`,onClick:()=>v(p,-1),disabled:p===0,style:ho(p===0),children:"\u25B2"}),jsxRuntime.jsx("button",{type:"button","aria-label":o.properties.moveScopeDown,"data-testid":`form-scope-down-${y.code}`,onClick:()=>v(p,1),disabled:p===l.length-1,style:ho(p===l.length-1),children:"\u25BC"}),jsxRuntime.jsx("button",{type:"button","aria-label":o.properties.removeScope,"data-testid":`form-scope-remove-${y.code}`,onClick:()=>f(p),style:{...ho(false),color:"#ef4444"},children:"\xD7"})]},y.id))}),d.length>0?jsxRuntime.jsxs("select",{value:"","data-testid":"form-scopes-add",onChange:y=>{let p=y.target.value;p&&s(p),y.target.value="";},style:Ha,children:[jsxRuntime.jsxs("option",{value:"",children:["+ ",o.properties.scopes,"\u2026"]}),d.map(y=>jsxRuntime.jsxs("option",{value:y.id,children:[y.code," \u2014 ",formCore.resolveLabel(y.name,n,n)]},y.id))]}):a.length===0?jsxRuntime.jsx("div",{style:{fontSize:"11px",color:"#94a3b8",fontStyle:"italic"},"data-testid":"form-scopes-empty",children:o.properties.noScopesAvailable}):null]})}function ho(e){return {border:"1px solid #e2e8f0",backgroundColor:"#fff",color:e?"#cbd5e1":"#64748b",fontSize:"10px",padding:"2px 6px",borderRadius:"4px",cursor:e?"default":"pointer"}}var Ha={width:"100%",padding:"6px 8px",border:"1px solid #e2e8f0",borderRadius:"4px",fontSize:"12px",color:"#334155",outline:"none",boxSizing:"border-box"};function Ua({langConfig:e}){let{form:a,updateFormMeta:r,setForm:n}=k(),o=w(),[t,i]=zr.useState(null),l={display:"block",fontSize:"12px",fontWeight:500,color:"#64748b",marginBottom:"4px"},d={width:"100%",padding:"6px 8px",border:"1px solid #e2e8f0",borderRadius:"4px",fontSize:"13px",color:"#334155",outline:"none",boxSizing:"border-box"},s=b=>{r({langConfig:b});},f=b=>{e.availableLangs.includes(b)||s({...e,availableLangs:[...e.availableLangs,b]});},v=b=>{e.availableLangs.length<=1||b!==e.defaultLang&&i(b);},y=b=>{let c=e.availableLangs.filter(h=>h!==b),u=c.includes(e.defaultLang)?e.defaultLang:c[0]??"fr",g=Ga(a,b,u,c.length===1),x={...e,defaultLang:u,availableLangs:c};n({...g,langConfig:x}),i(null);},p=()=>i(null);return jsxRuntime.jsxs("div",{"data-testid":"form-lang-config",style:{padding:"8px",backgroundColor:"#f8fafc",borderRadius:"6px",display:"flex",flexDirection:"column",gap:"8px",marginTop:"4px"},children:[jsxRuntime.jsx("div",{style:{fontSize:"11px",fontWeight:600,color:"#64748b",textTransform:"uppercase",letterSpacing:"0.5px"},children:o.properties.langConfigSection}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{style:l,children:o.properties.langConfigAvailable}),jsxRuntime.jsx("div",{style:{display:"flex",gap:"8px",flexWrap:"wrap"},children:Wa.map(b=>{let c=e.availableLangs.includes(b),u=b===e.defaultLang,g=e.availableLangs.length<=1,x=c&&(u||g);return jsxRuntime.jsxs("label",{style:{display:"flex",alignItems:"center",gap:"6px",fontSize:"13px",color:"#334155",cursor:x?"default":"pointer",opacity:x?.6:1},children:[jsxRuntime.jsx("input",{type:"checkbox","data-testid":`lang-toggle-${b}`,checked:c,disabled:x,onChange:h=>{h.target.checked?f(b):v(b);}}),jsxRuntime.jsx("span",{children:b.toUpperCase()}),u&&jsxRuntime.jsxs("span",{style:{fontSize:"10px",color:"#94a3b8",fontStyle:"italic"},children:["(",o.properties.langConfigDefault,")"]})]},b)})})]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{style:l,children:o.properties.langConfigDefault}),jsxRuntime.jsx("select",{"data-testid":"lang-default-select",value:e.defaultLang,onChange:b=>s({...e,defaultLang:b.target.value}),style:d,children:e.availableLangs.map(b=>jsxRuntime.jsx("option",{value:b,children:b.toUpperCase()},b))})]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{style:l,children:o.properties.langConfigStrategy}),jsxRuntime.jsxs("select",{"data-testid":"lang-strategy-select",value:e.strategy,onChange:b=>s({...e,strategy:b.target.value}),style:d,children:[jsxRuntime.jsx("option",{value:"prop",children:o.properties.langConfigStrategies.prop}),jsxRuntime.jsx("option",{value:"browser",children:o.properties.langConfigStrategies.browser}),jsxRuntime.jsx("option",{value:"selector",children:o.properties.langConfigStrategies.selector}),jsxRuntime.jsx("option",{value:"auto",children:o.properties.langConfigStrategies.auto})]})]}),e.strategy==="selector"&&jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{style:l,children:o.properties.langConfigSelectorPosition}),jsxRuntime.jsxs("select",{"data-testid":"lang-selector-position-select",value:e.selectorPosition??"top",onChange:b=>s({...e,selectorPosition:b.target.value}),style:d,children:[jsxRuntime.jsx("option",{value:"top",children:o.properties.langConfigPositions.top}),jsxRuntime.jsx("option",{value:"bottom",children:o.properties.langConfigPositions.bottom})]})]}),t&&jsxRuntime.jsxs("div",{"data-testid":"lang-remove-confirm",style:{padding:"8px",backgroundColor:"#fef2f2",border:"1px solid #fecaca",borderRadius:"6px",fontSize:"12px",color:"#b91c1c",display:"flex",flexDirection:"column",gap:"8px"},children:[jsxRuntime.jsx("span",{children:o.properties.langConfigConfirmRemove(t)}),jsxRuntime.jsxs("div",{style:{display:"flex",gap:"8px"},children:[jsxRuntime.jsx("button",{type:"button","data-testid":"lang-remove-confirm-yes",onClick:()=>y(t),style:{padding:"4px 10px",border:"none",borderRadius:"4px",backgroundColor:"#ef4444",color:"#fff",fontSize:"12px",cursor:"pointer"},children:o.properties.langConfigConfirmYes}),jsxRuntime.jsx("button",{type:"button","data-testid":"lang-remove-confirm-no",onClick:p,style:{padding:"4px 10px",border:"1px solid #e2e8f0",borderRadius:"4px",backgroundColor:"#fff",color:"#334155",fontSize:"12px",cursor:"pointer"},children:o.properties.langConfigConfirmNo})]})]})]})}function Ga(e,a,r,n){let o=p=>{if(p===void 0)return;if(typeof p=="string")return p;let b={...p};return delete b[a],n?Go(b,r,"fr"):b},t=p=>({...p,label:o(p.label)??""}),i=p=>({...p,message:o(p.message)??""}),l=p=>({...p,errorMessage:o(p.errorMessage)}),d=p=>({...p,name:o(p.name)??"",description:o(p.description),placeholder:o(p.placeholder),options:p.options?p.options.map(t):p.options,validationRules:p.validationRules?p.validationRules.map(i):p.validationRules,conditions:p.conditions?p.conditions.map(l):p.conditions}),s=p=>({...p,name:o(p.name)??"",options:p.options?p.options.map(t):p.options,variables:p.variables.map(d),conditions:p.conditions?p.conditions.map(l):p.conditions}),f=p=>({...p,instanceLabel:o(p.instanceLabel)}),v=p=>formCore.isPageRoster(p)?s(p):d(p),y=p=>{let b=Array.isArray(p.items)?p.items.map(v):[...formCore.getPageVariables(p).map(d),...formCore.getPageRosters(p).map(s)],{variables:c,rosters:u,...g}=p;return {...g,name:o(p.name)??"",repeatConfig:p.repeatConfig?f(p.repeatConfig):p.repeatConfig,items:b,conditions:p.conditions?p.conditions.map(l):p.conditions}};return {...e,name:o(e.name)??"",description:o(e.description),pages:e.pages.map(y)}}function ne({label:e,value:a,onChange:r,multiline:n,type:o="text",readOnly:t}){let i={width:"100%",padding:"6px 8px",border:"1px solid #e2e8f0",borderRadius:"4px",fontSize:"13px",color:t?"#64748b":"#334155",backgroundColor:t?"#f1f5f9":"#fff",outline:"none",boxSizing:"border-box",cursor:t?"not-allowed":"text"};return jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{style:{display:"block",fontSize:"12px",fontWeight:500,color:"#64748b",marginBottom:"4px"},children:e}),n?jsxRuntime.jsx("textarea",{value:a,onChange:l=>r(l.target.value),rows:3,style:i,readOnly:t}):jsxRuntime.jsx("input",{type:o,value:a,onChange:l=>r(l.target.value),style:i,readOnly:t})]})}function ft({page:e}){let{updatePage:a}=k(),r=w();return jsxRuntime.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"12px"},children:[jsxRuntime.jsx(Z,{label:r.properties.name,value:e.name,onChange:n=>a(e.code,{name:n}),testIdPrefix:"page-name"}),jsxRuntime.jsx(ne,{label:r.properties.code,value:e.code,onChange:()=>{}}),jsxRuntime.jsx("div",{children:jsxRuntime.jsxs("label",{style:{display:"flex",alignItems:"center",gap:"8px",fontSize:"13px",color:"#334155",cursor:"pointer"},children:[jsxRuntime.jsx("input",{type:"checkbox",checked:e.isRepeatable,onChange:n=>a(e.code,{isRepeatable:n.target.checked,repeatConfig:n.target.checked?{min:1,max:10}:void 0})}),r.properties.repeatablePage]})}),e.isRepeatable&&e.repeatConfig&&jsxRuntime.jsxs("div",{style:{padding:"8px",backgroundColor:"#f8fafc",borderRadius:"6px",display:"flex",flexDirection:"column",gap:"8px"},children:[jsxRuntime.jsx(ne,{label:r.properties.minInstances,value:String(e.repeatConfig.min??1),type:"number",onChange:n=>a(e.code,{repeatConfig:{...e.repeatConfig,min:parseInt(n)||1}})}),jsxRuntime.jsx(ne,{label:r.properties.maxInstances,value:String(e.repeatConfig.max??10),type:"number",onChange:n=>a(e.code,{repeatConfig:{...e.repeatConfig,max:parseInt(n)||10}})}),jsxRuntime.jsx(ne,{label:r.properties.controlVariableCode,value:e.repeatConfig.controlVariableCode??"",onChange:n=>a(e.code,{repeatConfig:{...e.repeatConfig,controlVariableCode:n||void 0}})}),jsxRuntime.jsx(Z,{label:r.properties.instanceLabel,value:e.repeatConfig.instanceLabel,onChange:n=>a(e.code,{repeatConfig:{...e.repeatConfig,instanceLabel:n}}),testIdPrefix:"page-instance-label"})]}),jsxRuntime.jsx("div",{style:{fontSize:"12px",color:"#94a3b8"},children:r.properties.pageSummary(formCore.getPageVariables(e).length,formCore.getPageRosters(e).length)})]})}var Xa=["equals","not_equals","greater_than","less_than","greater_than_or_equal","less_than_or_equal","contains","not_contains","is_empty","is_not_empty","starts_with","ends_with","in","regex"],Qa=["show","hide","validate","require","readonly","setValue"],Za=["is_empty","is_not_empty"];function ko({conditions:e,onChange:a,availableVariables:r,rosterContext:n}){let o=w(),[t,i]=zr.useState(null),l=()=>{let f={id:formCore.generateId(),action:"show",expression:""};a([...e,f]),i(f.id);},d=f=>{a(e.filter(v=>v.id!==f)),t===f&&i(null);},s=(f,v)=>{a(e.map(y=>y.id===f?{...y,...v}:y));};return jsxRuntime.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"8px"},children:[jsxRuntime.jsx("div",{style:{fontSize:"11px",fontWeight:600,color:"#64748b",textTransform:"uppercase",letterSpacing:"0.5px"},children:o.conditionBuilder.conditionsCount(e.length)}),e.map(f=>jsxRuntime.jsx(er,{condition:f,isExpanded:t===f.id,onToggle:()=>i(t===f.id?null:f.id),onUpdate:v=>s(f.id,v),onRemove:()=>d(f.id),availableVariables:r,rosterContext:n},f.id)),jsxRuntime.jsx("button",{type:"button",onClick:l,style:{padding:"6px 12px",border:"1px dashed #cbd5e1",borderRadius:"6px",backgroundColor:"transparent",color:"#2563eb",fontSize:"12px",cursor:"pointer"},children:o.conditionBuilder.addCondition})]})}function er({condition:e,isExpanded:a,onToggle:r,onUpdate:n,onRemove:o,availableVariables:t,rosterContext:i}){let l=w(),[d,s]=zr.useState(()=>ar(e.expression)),f=(g,x)=>{s(g);let h=mt(g,x);n({expression:h});},v=g=>{n({action:g});let x=mt(d,g);n({action:g,expression:x});},y=()=>{let g={id:formCore.generateId(),variableCode:"",operator:"equals",value:""},x={...d,rules:[...d.rules,g]};f(x,e.action);},p=g=>{let x={...d,rules:d.rules.filter(h=>h.id!==g)};f(x,e.action);},b=(g,x)=>{let h={...d,rules:d.rules.map(I=>I.id===g?{...I,...x}:I)};f(h,e.action);},c=g=>{let x={...d,logic:g};f(x,e.action);},u=l.conditionBuilder.actions[e.action]??e.action;return jsxRuntime.jsxs("div",{style:{border:"1px solid #e2e8f0",borderRadius:"6px",overflow:"hidden"},children:[jsxRuntime.jsxs("div",{onClick:r,style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"6px 10px",backgroundColor:"#f8fafc",cursor:"pointer",fontSize:"12px",color:"#334155"},children:[jsxRuntime.jsxs("span",{style:{fontWeight:500},children:[u,d.rules.length>0?l.conditionBuilder.rulesCount(d.rules.length):""]}),jsxRuntime.jsxs("div",{style:{display:"flex",gap:"4px"},children:[jsxRuntime.jsx("span",{style:{color:"#94a3b8"},children:a?"\u25B2":"\u25BC"}),jsxRuntime.jsx("span",{onClick:g=>{g.stopPropagation(),o();},style:{color:"#ef4444",cursor:"pointer",padding:"0 4px"},role:"button",children:"\xD7"})]})]}),a&&jsxRuntime.jsxs("div",{style:{padding:"10px",display:"flex",flexDirection:"column",gap:"8px"},children:[jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{style:{fontSize:"11px",fontWeight:500,color:"#64748b",display:"block",marginBottom:"2px"},children:l.conditionBuilder.action}),jsxRuntime.jsx("select",{value:e.action,onChange:g=>v(g.target.value),style:To,children:Qa.map(g=>jsxRuntime.jsx("option",{value:g,children:l.conditionBuilder.actions[g]},g))})]}),d.rules.length>1&&jsxRuntime.jsxs("div",{style:{display:"flex",gap:"4px",alignItems:"center"},children:[jsxRuntime.jsx("span",{style:{fontSize:"11px",color:"#64748b"},children:l.conditionBuilder.match}),jsxRuntime.jsx("button",{type:"button",onClick:()=>c("and"),style:{...bt,backgroundColor:d.logic==="and"?"#2563eb":"#f1f5f9",color:d.logic==="and"?"#fff":"#64748b"},children:l.conditionBuilder.all}),jsxRuntime.jsx("button",{type:"button",onClick:()=>c("or"),style:{...bt,backgroundColor:d.logic==="or"?"#2563eb":"#f1f5f9",color:d.logic==="or"?"#fff":"#64748b"},children:l.conditionBuilder.any})]}),d.rules.map(g=>jsxRuntime.jsxs("div",{style:{display:"flex",gap:"4px",alignItems:"center"},children:[jsxRuntime.jsxs("select",{value:g.variableCode,onChange:x=>b(g.id,{variableCode:x.target.value}),style:{...To,flex:1},children:[jsxRuntime.jsx("option",{value:"",children:l.conditionBuilder.variablePlaceholder}),t.map(x=>jsxRuntime.jsxs("option",{value:x.code,children:[x.name," (",x.code,")"]},x.code))]}),jsxRuntime.jsx("select",{value:g.operator,onChange:x=>b(g.id,{operator:x.target.value}),style:{...To,width:"130px"},children:Xa.map(x=>jsxRuntime.jsx("option",{value:x,children:l.conditionBuilder.operators[x]},x))}),!Za.includes(g.operator)&&jsxRuntime.jsx("input",{type:"text",value:g.value,onChange:x=>b(g.id,{value:x.target.value}),placeholder:l.conditionBuilder.valuePlaceholder,style:{...Ro,flex:1}}),jsxRuntime.jsx("button",{type:"button",onClick:()=>p(g.id),style:{border:"none",background:"none",color:"#ef4444",cursor:"pointer",fontSize:"14px",padding:"2px"},children:"\xD7"})]},g.id)),jsxRuntime.jsx("button",{type:"button",onClick:y,style:{padding:"4px 8px",border:"1px dashed #cbd5e1",borderRadius:"4px",backgroundColor:"transparent",color:"#64748b",fontSize:"11px",cursor:"pointer"},children:l.conditionBuilder.addRule}),e.expression&&jsxRuntime.jsx("div",{style:{padding:"6px 8px",backgroundColor:"#f0fdf4",borderRadius:"4px",fontSize:"11px",fontFamily:"monospace",color:"#166534",wordBreak:"break-all"},children:e.expression}),i&&e.expression&&(()=>{let g=formCore.RosterConditionEngine.validateCondition(e.expression,i.variables,i.currentVariableCode,i.currentVariableOrder);return g.isValid?null:jsxRuntime.jsx("div",{"data-testid":"condition-builder-roster-errors",style:{padding:"6px 8px",backgroundColor:"#fef2f2",border:"1px solid #fecaca",borderRadius:"4px",fontSize:"11px",color:"#b91c1c",display:"flex",flexDirection:"column",gap:"4px"},children:g.errors.map((x,h)=>jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("strong",{children:x.type}),x.variableCode?`: \${${x.variableCode}}`:""," \u2014 ",x.message]},h))})})(),e.action==="validate"&&jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{style:{fontSize:"11px",fontWeight:500,color:"#64748b",display:"block",marginBottom:"2px"},children:l.conditionBuilder.errorMessage}),jsxRuntime.jsx(or,{value:e.errorMessage,onChange:g=>n({errorMessage:g}),placeholder:l.conditionBuilder.errorMessagePlaceholder})]}),e.action==="setValue"&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{style:{fontSize:"11px",fontWeight:500,color:"#64748b",display:"block",marginBottom:"2px"},children:l.conditionBuilder.targetVariableCode}),jsxRuntime.jsx("input",{type:"text",value:e.targetVariableCode??"",onChange:g=>n({targetVariableCode:g.target.value||void 0}),placeholder:l.conditionBuilder.targetVariablePlaceholder,style:Ro})]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{style:{fontSize:"11px",fontWeight:500,color:"#64748b",display:"block",marginBottom:"2px"},children:l.conditionBuilder.valueToSet}),jsxRuntime.jsx("input",{type:"text",value:e.setValue!==void 0?String(e.setValue):"",onChange:g=>n({setValue:g.target.value}),placeholder:l.conditionBuilder.valueToSetPlaceholder,style:Ro})]})]})]})]})}function or({value:e,onChange:a,placeholder:r}){let o=k(t=>t.form).langConfig??formCore.DEFAULT_LANG_CONFIG;return jsxRuntime.jsx(Oe,{value:e,onChange:t=>a(t),availableLangs:o.availableLangs,defaultLang:o.defaultLang,placeholder:r,testIdPrefix:"condition-error-message"})}function tr(e){return {equals:"==",not_equals:"!=",contains:"contains",not_contains:"!contains",starts_with:"startsWith",ends_with:"endsWith",greater_than:">",less_than:"<",greater_than_or_equal:">=",less_than_or_equal:"<=",is_empty:"isEmpty",is_not_empty:"isNotEmpty",in:"in",not_in:"!in",between:"between",regex:"regex"}[e]??"=="}function mt(e,a){if(e.rules.length===0)return "";let r=e.rules.filter(o=>o.variableCode).map(o=>{let t=`\${${o.variableCode}}`,i=tr(o.operator);if(o.operator==="is_empty")return `isEmpty(${t})`;if(o.operator==="is_not_empty")return `isNotEmpty(${t})`;if(o.operator==="contains")return `contains(${t}, "${o.value}")`;if(o.operator==="starts_with")return `startsWith(${t}, "${o.value}")`;if(o.operator==="ends_with")return `endsWith(${t}, "${o.value}")`;let l=/^\d+(\.\d+)?$/.test(o.value)?o.value:`"${o.value}"`;return `${t} ${i} ${l}`});if(r.length===0)return "";let n=r.join(e.logic==="and"?" && ":" || ");return a==="show"?`show(${n})`:a==="hide"?`hide(${n})`:a==="validate"?`ConditionEval(${n})`:n}function ar(e){return {logic:"and",rules:[]}}var To={padding:"4px 6px",border:"1px solid #e2e8f0",borderRadius:"4px",fontSize:"12px",color:"#334155",outline:"none"},Ro={width:"100%",padding:"4px 6px",border:"1px solid #e2e8f0",borderRadius:"4px",fontSize:"12px",color:"#334155",outline:"none",boxSizing:"border-box"},bt={padding:"2px 8px",borderRadius:"10px",border:"none",fontSize:"10px",fontWeight:600,cursor:"pointer"};function ht({open:e,onClose:a,conditions:r,onApply:n,availableVariables:o,rosterContext:t}){let i=w(),l=zr.useRef(null),d=zr.useRef(null),[s,f]=zr.useState(r),[v,y]=zr.useState("visual");zr.useEffect(()=>{e&&(f(r),y("visual"));},[e,r]),zr.useEffect(()=>{if(!e)return;d.current=document.activeElement;let b=setTimeout(()=>{l.current?.querySelector('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])')?.focus();},0),c=u=>{if(u.key==="Escape"){u.stopPropagation(),a();return}if(u.key!=="Tab"||!l.current)return;let g=Array.from(l.current.querySelectorAll('button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])')).filter(C=>C.offsetParent!==null);if(g.length===0)return;let x=g[0],h=g[g.length-1],I=document.activeElement;u.shiftKey&&I===x?(u.preventDefault(),h.focus()):!u.shiftKey&&I===h&&(u.preventDefault(),x.focus());};return window.addEventListener("keydown",c),()=>{clearTimeout(b),window.removeEventListener("keydown",c),d.current?.focus?.();}},[e,a]);let p=zr.useCallback(()=>{n(s),a();},[s,n,a]);return e?jsxRuntime.jsx("div",{"data-testid":"conditions-modal-overlay","aria-hidden":"false",style:{position:"fixed",inset:0,zIndex:1e3,backgroundColor:"rgba(15, 23, 42, 0.55)",display:"flex",alignItems:"center",justifyContent:"center",padding:"24px"},children:jsxRuntime.jsxs("div",{ref:l,role:"dialog","aria-modal":"true","aria-labelledby":"conditions-modal-title","data-testid":"conditions-modal",style:{backgroundColor:"#fff",borderRadius:"12px",boxShadow:"0 24px 48px rgba(0,0,0,0.25)",width:"100%",maxWidth:"720px",maxHeight:"calc(100vh - 48px)",display:"flex",flexDirection:"column",overflow:"hidden",fontFamily:"system-ui, -apple-system, sans-serif"},children:[jsxRuntime.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"14px 20px",borderBottom:"1px solid #e2e8f0"},children:[jsxRuntime.jsx("h2",{id:"conditions-modal-title",style:{margin:0,fontSize:"16px",fontWeight:600,color:"#0f172a"},children:i.conditionBuilder.modalTitle(s.length)}),jsxRuntime.jsx("button",{type:"button",onClick:a,"data-testid":"conditions-modal-close","aria-label":i.conditionBuilder.closeButton,style:{border:"none",background:"none",cursor:"pointer",fontSize:"20px",color:"#64748b",padding:"4px 8px",borderRadius:"6px"},children:"\u2715"})]}),jsxRuntime.jsxs("div",{style:{display:"flex",gap:"4px",padding:"12px 20px 0",borderBottom:"1px solid #f1f5f9"},children:[jsxRuntime.jsx(Ct,{active:v==="visual",label:i.conditionBuilder.modeVisual,testId:"conditions-modal-mode-visual",onClick:()=>y("visual")}),jsxRuntime.jsx(Ct,{active:v==="manual",label:i.conditionBuilder.modeManual,testId:"conditions-modal-mode-manual",onClick:()=>y("manual")})]}),jsxRuntime.jsxs("div",{style:{flex:1,overflowY:"auto",padding:"16px 20px"},children:[v==="visual"?jsxRuntime.jsx(ko,{conditions:s,onChange:f,availableVariables:o,rosterContext:t}):jsxRuntime.jsx(lr,{conditions:s,onChange:f}),jsxRuntime.jsx(ur,{conditions:s,title:i.conditionBuilder.formulasSummary,empty:i.conditionBuilder.noConditions})]}),jsxRuntime.jsxs("div",{style:{display:"flex",justifyContent:"flex-end",gap:"8px",padding:"12px 20px",borderTop:"1px solid #e2e8f0"},children:[jsxRuntime.jsx("button",{type:"button",onClick:a,"data-testid":"conditions-modal-cancel",style:{padding:"8px 16px",border:"1px solid #cbd5e1",borderRadius:"6px",backgroundColor:"#fff",color:"#334155",fontSize:"13px",fontWeight:500,cursor:"pointer"},children:i.conditionBuilder.cancelButton}),jsxRuntime.jsx("button",{type:"button",onClick:p,"data-testid":"conditions-modal-apply",style:{padding:"8px 16px",border:"none",borderRadius:"6px",backgroundColor:"#2563eb",color:"#fff",fontSize:"13px",fontWeight:600,cursor:"pointer"},children:i.conditionBuilder.applyButton})]})]})}):null}function Ct({active:e,label:a,testId:r,onClick:n}){return jsxRuntime.jsx("button",{type:"button",onClick:n,"data-testid":r,"aria-pressed":e,style:{padding:"8px 14px",border:"none",backgroundColor:"transparent",color:e?"#2563eb":"#64748b",fontWeight:e?600:500,fontSize:"13px",cursor:"pointer",borderBottomWidth:"2px",borderBottomStyle:"solid",borderBottomColor:e?"#2563eb":"transparent",marginBottom:"-1px"},children:a})}function lr({conditions:e,onChange:a}){let r=w();if(e.length===0)return jsxRuntime.jsx("div",{style:{padding:"12px",color:"#94a3b8",fontSize:"13px",textAlign:"center",fontStyle:"italic"},children:r.conditionBuilder.noConditions});let n=(t,i)=>{a(e.map(l=>l.id===t?{...l,expression:i}:l));},o=t=>t.includes("ConditionEval(")||t.includes("||")||/show\(|hide\(|setValue\(/.test(t)===false||t.split("&&").length>2;return jsxRuntime.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"14px"},children:[jsxRuntime.jsx("p",{style:{margin:0,fontSize:"11px",color:"#64748b"},children:r.conditionBuilder.manualHelp}),e.map((t,i)=>jsxRuntime.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"6px"},children:[jsxRuntime.jsxs("label",{style:{fontSize:"11px",fontWeight:600,color:"#64748b"},children:["#",i+1," \u2014 ",r.conditionBuilder.actions[t.action]??t.action]}),jsxRuntime.jsx(cr,{value:t.expression,onChange:l=>n(t.id,l),placeholder:r.conditionBuilder.manualPlaceholder,testId:`conditions-modal-manual-${t.id}`}),o(t.expression)&&jsxRuntime.jsxs("p",{"data-testid":`conditions-modal-manual-warning-${t.id}`,style:{margin:0,fontSize:"11px",color:"#92400e",backgroundColor:"#fffbeb",border:"1px solid #fde68a",padding:"6px 8px",borderRadius:"4px"},children:["\u26A0 ",r.conditionBuilder.manualWarning]})]},t.id))]})}var sr={function:"#2563eb",variable:"#ea580c",operator:"#9333ea",string:"#16a34a",number:"#0891b2",plain:"inherit",identifier:"inherit"},dr=new Set(["show","hide","setValue","validate","require","readonly","ConditionEval","jump","contains","startsWith","endsWith","isEmpty","isNotEmpty","not_contains","in","between","regex"]);function pr(e){let a=[],r=0;for(;r<e.length;){let n=e[r];if(n==='"'||n==="'"){let o=r+1;for(;o<e.length&&e[o]!==n;)e[o]==="\\"&&o++,o++;a.push({type:"string",text:e.slice(r,Math.min(o+1,e.length))}),r=o+1;continue}if(n==="$"&&e[r+1]==="{"){let o=r+2;for(;o<e.length&&e[o]!=="}";)o++;a.push({type:"variable",text:e.slice(r,Math.min(o+1,e.length))}),r=o+1;continue}if(/[a-zA-Z_]/.test(n)){let o=r;for(;o<e.length&&/[a-zA-Z0-9_]/.test(e[o]);)o++;let t=e.slice(r,o);a.push({type:dr.has(t)?"function":"identifier",text:t}),r=o;continue}if(/\d/.test(n)){let o=r;for(;o<e.length&&/[\d.]/.test(e[o]);)o++;a.push({type:"number",text:e.slice(r,o)}),r=o;continue}if("=!<>&|".includes(n)){let o=e.slice(r,r+2);if(["==","!=","<=",">=","&&","||"].includes(o)){a.push({type:"operator",text:o}),r+=2;continue}a.push({type:"operator",text:n}),r++;continue}a.push({type:"plain",text:n}),r++;}return a}function cr({value:e,onChange:a,placeholder:r,testId:n}){let o=zr.useRef(null),t=zr.useRef(null),i=zr.useMemo(()=>pr(e),[e]),l=()=>{!o.current||!t.current||(t.current.scrollTop=o.current.scrollTop,t.current.scrollLeft=o.current.scrollLeft);},d={position:"absolute",top:0,left:0,width:"100%",height:"100%",margin:0,padding:"8px 10px",border:"none",fontFamily:'ui-monospace, "SF Mono", Menlo, Consolas, monospace',fontSize:"12.5px",lineHeight:"20px",whiteSpace:"pre-wrap",wordBreak:"break-word",boxSizing:"border-box"};return jsxRuntime.jsxs("div",{style:{position:"relative",minHeight:"60px",border:"1px solid #cbd5e1",borderRadius:"6px",backgroundColor:"#f8fafc",overflow:"hidden"},children:[jsxRuntime.jsx("div",{ref:t,"aria-hidden":"true",style:{...d,color:"#0f172a",overflow:"auto",pointerEvents:"none"},children:i.length===0?jsxRuntime.jsx("span",{style:{color:"#94a3b8"},children:r}):jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[i.map((s,f)=>jsxRuntime.jsx("span",{style:{color:sr[s.type]},children:s.text},f)),jsxRuntime.jsx("span",{children:"\u200B"})]})}),jsxRuntime.jsx("textarea",{ref:o,value:e,onChange:s=>a(s.target.value),onScroll:l,placeholder:r,"data-testid":n,spellCheck:false,style:{...d,color:"transparent",caretColor:"#0f172a",backgroundColor:"transparent",resize:"vertical",outline:"none",overflow:"auto"}})]})}function ur({conditions:e,title:a,empty:r}){return jsxRuntime.jsxs("div",{style:{marginTop:"16px",borderTop:"1px solid #e2e8f0",paddingTop:"12px"},children:[jsxRuntime.jsx("h3",{style:{margin:"0 0 8px",fontSize:"11px",fontWeight:600,color:"#64748b",textTransform:"uppercase",letterSpacing:"0.5px"},children:a}),e.length===0?jsxRuntime.jsx("p",{style:{margin:0,fontSize:"12px",color:"#94a3b8",fontStyle:"italic"},children:r}):jsxRuntime.jsx("ul",{"data-testid":"conditions-modal-summary",style:{margin:0,padding:0,listStyle:"none",display:"flex",flexDirection:"column",gap:"4px"},children:e.map(n=>jsxRuntime.jsx("li",{style:{fontFamily:'ui-monospace, "SF Mono", Menlo, Consolas, monospace',fontSize:"11.5px",color:"#0f172a",backgroundColor:"#f1f5f9",padding:"4px 8px",borderRadius:"4px",wordBreak:"break-all"},children:n.expression||"\u2205"},n.id))})]})}function Io({dataSourceId:e,dependencies:a={},availableConnectors:r,availableVariables:n,onConnectorChange:o,onDependenciesChange:t}){let i=w(),[l,d]=zr.useState(""),s=k(x=>x.availableDataSources),v=k(x=>x.form).langConfig?.defaultLang??formCore.DEFAULT_LANG_CONFIG.defaultLang,y=zr.useMemo(()=>{let x=new Map;for(let h of r)x.set(h.id,{id:h.id,name:h.name});for(let h of s){let I=typeof h.name=="string"?h.name:formCore.resolveLabel(h.name,v,v);x.set(h.code,{id:h.code,name:I});}return Array.from(x.values())},[r,s,v]),p=y.find(x=>x.id===e),b=Object.entries(a),c=()=>{l.trim()&&(t({...a,[l.trim()]:""}),d(""));},u=x=>{let h={...a};delete h[x],t(h);},g=(x,h)=>{t({...a,[x]:h});};return jsxRuntime.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"10px",padding:"8px",backgroundColor:"#f0fdf4",borderRadius:"6px"},children:[jsxRuntime.jsx("div",{style:{fontSize:"11px",fontWeight:600,color:"#166534",textTransform:"uppercase",letterSpacing:"0.5px"},children:i.dataSource.title}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{style:xr,children:i.dataSource.connector}),jsxRuntime.jsxs("select",{value:e??"",onChange:x=>{let h=x.target.value||void 0;o(h),h||t({});},style:St,children:[jsxRuntime.jsx("option",{value:"",children:i.dataSource.none}),y.map(x=>jsxRuntime.jsxs("option",{value:x.id,children:[x.name," (",x.id,")"]},x.id))]})]}),p&&jsxRuntime.jsxs("div",{style:{fontSize:"11px",color:"#166534",padding:"4px 6px",backgroundColor:"#dcfce7",borderRadius:"4px"},children:[i.dataSource.connectedTo," ",jsxRuntime.jsx("strong",{children:p.name})]}),e&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("div",{style:{fontSize:"11px",fontWeight:500,color:"#166534"},children:i.dataSource.dependencies(b.length)}),b.map(([x,h])=>jsxRuntime.jsxs("div",{style:{display:"flex",gap:"4px",alignItems:"center"},children:[jsxRuntime.jsx("span",{style:{fontSize:"11px",color:"#334155",minWidth:"60px",fontFamily:"monospace"},children:x}),jsxRuntime.jsx("span",{style:{fontSize:"11px",color:"#94a3b8"},children:"\u2192"}),jsxRuntime.jsxs("select",{value:h,onChange:I=>g(x,I.target.value),style:{...St,flex:1},children:[jsxRuntime.jsx("option",{value:"",children:i.dataSource.selectVariable}),n.map(I=>jsxRuntime.jsxs("option",{value:I.code,children:[I.name," (",I.code,")"]},I.code))]}),jsxRuntime.jsx("button",{type:"button",onClick:()=>u(x),style:{border:"none",background:"none",color:"#ef4444",cursor:"pointer",fontSize:"14px"},children:"\xD7"})]},x)),jsxRuntime.jsxs("div",{style:{display:"flex",gap:"4px"},children:[jsxRuntime.jsx("input",{type:"text",value:l,onChange:x=>d(x.target.value),placeholder:i.dataSource.dependencyKeyPlaceholder,style:{...vr,flex:1},onKeyDown:x=>x.key==="Enter"&&c()}),jsxRuntime.jsx("button",{type:"button",onClick:c,disabled:!l.trim(),style:{padding:"4px 8px",border:"1px solid #cbd5e1",borderRadius:"4px",backgroundColor:"#fff",color:"#2563eb",fontSize:"11px",cursor:"pointer",opacity:l.trim()?1:.5},children:i.dataSource.addDependency})]})]})]})}var xr={fontSize:"11px",fontWeight:500,color:"#166534",display:"block",marginBottom:"2px"},St={width:"100%",padding:"4px 6px",border:"1px solid #bbf7d0",borderRadius:"4px",fontSize:"12px",color:"#334155",outline:"none",backgroundColor:"#fff"},vr={padding:"4px 6px",border:"1px solid #bbf7d0",borderRadius:"4px",fontSize:"12px",color:"#334155",outline:"none",boxSizing:"border-box"};var kr=new Set(["type","description","placeholder","isRequired","isReadonly","isHidden","options","validationRules","conditions","expression","dataSourceId","dataSourceDependencies","style","metadata"]);function wo(e){return e==="type"?"variableType":e}function Rt({variable:e,pageCode:a,rosterCode:r,availableConnectors:n=[]}){let {form:o,updateVariable:t,setVariableOverride:i,resetVariableOverride:l,availableTemplates:d}=k(),s=w(),[f,v]=zr.useState(false),y=zr.useMemo(()=>[{value:"text",label:s.toolbox.types.text},{value:"textarea",label:s.toolbox.types.textarea},{value:"number",label:s.toolbox.types.number},{value:"email",label:s.toolbox.types.email},{value:"select",label:s.toolbox.types.select},{value:"multiselect",label:s.toolbox.types.multiselect},{value:"radio",label:s.toolbox.types.radio},{value:"checkbox",label:s.toolbox.types.checkbox},{value:"listradio",label:s.toolbox.types.listradio},{value:"date",label:s.toolbox.types.date},{value:"datetime",label:s.toolbox.types.datetime},{value:"time",label:s.toolbox.types.time},{value:"file",label:s.toolbox.types.file},{value:"image",label:s.toolbox.types.image},{value:"photo",label:s.toolbox.types.photo},{value:"gps",label:s.toolbox.types.gps},{value:"rating",label:s.toolbox.types.rating},{value:"calculated",label:s.toolbox.types.calculated},{value:"hidden",label:s.toolbox.types.hidden},{value:"label",label:s.toolbox.types.label},{value:"panel",label:s.toolbox.types.panel},{value:"richtext",label:s.toolbox.types.richtext}],[s]),p=!!e.templateId;p?d.find(C=>C.id===e.templateId):void 0;let c=o.langConfig?.defaultLang??formCore.DEFAULT_LANG_CONFIG.defaultLang,u=C=>{if(!p){t(a,e.code,C,r);return}let A={},R=false;for(let[_,K]of Object.entries(C))if(kr.has(_)){let $=wo(_);i(a,e.code,$,K,r);}else A[_]=K,R=true;R&&t(a,e.code,A,r);},g=C=>{if(!p)return false;let A=wo(C);return Object.prototype.hasOwnProperty.call(e.templateOverrides??{},A)},x=C=>{p&&l(a,e.code,wo(C),r);},h=C=>formCore.resolveLabel(C,c,c),I=o.pages.flatMap(C=>[...formCore.getPageVariables(C).map(A=>({code:A.code,name:h(A.name)})),...formCore.getPageRosters(C).flatMap(A=>A.variables.map(R=>({code:R.code,name:h(R.name)})))]);return jsxRuntime.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"12px"},children:[p&&jsxRuntime.jsx(Ir,{variable:e,templateCodeLabel:s.properties.templateCode,templateNameLabel:s.properties.templateName,bannerTitle:s.properties.linkedTemplate,defaultLang:c}),p?jsxRuntime.jsx(wr,{label:s.properties.templateName,value:e.name,defaultLang:c,testId:"variable-name-readonly"}):jsxRuntime.jsx(Z,{label:s.properties.name,value:e.name,onChange:C=>u({name:C}),testIdPrefix:"variable-name"}),jsxRuntime.jsx(ne,{label:p?s.properties.templateCode:s.properties.code,value:e.code,onChange:()=>{},readOnly:true}),jsxRuntime.jsx(ge,{isOverridden:g("description"),onReset:()=>x("description"),resetLabel:s.properties.resetOverride,children:jsxRuntime.jsx(Z,{label:s.properties.description,value:e.description,onChange:C=>u({description:C}),testIdPrefix:"variable-description"})}),jsxRuntime.jsx(ge,{isOverridden:g("placeholder"),onReset:()=>x("placeholder"),resetLabel:s.properties.resetOverride,children:jsxRuntime.jsx(Z,{label:s.properties.placeholder,value:e.placeholder,onChange:C=>u({placeholder:C}),testIdPrefix:"variable-placeholder"})}),jsxRuntime.jsx(ge,{isOverridden:g("type"),onReset:()=>x("type"),resetLabel:s.properties.resetOverride,children:jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{style:{display:"block",fontSize:"12px",fontWeight:500,color:"#64748b",marginBottom:"4px"},children:s.properties.type}),jsxRuntime.jsx("select",{value:e.type,onChange:C=>u({type:C.target.value}),style:{width:"100%",padding:"6px 8px",border:"1px solid #e2e8f0",borderRadius:"4px",fontSize:"13px"},children:y.map(C=>jsxRuntime.jsx("option",{value:C.value,children:C.label},C.value))})]})}),e.type==="file"&&jsxRuntime.jsx(Pr,{value:e.fileConfig,onChange:C=>u({fileConfig:C}),labels:{title:s.properties.fileConfig,max:s.properties.fileConfigMax,min:s.properties.fileConfigMin,accept:s.properties.fileConfigAccept,acceptPlaceholder:s.properties.fileConfigAcceptPlaceholder,unlimited:s.properties.fileConfigUnlimited}}),e.type==="image"&&jsxRuntime.jsx(Lr,{value:e.imageConfig,onChange:C=>u({imageConfig:C}),labels:{title:s.properties.imageConfig,max:s.properties.imageConfigMax,min:s.properties.imageConfigMin,camera:s.properties.imageConfigCamera,unlimited:s.properties.fileConfigUnlimited}}),e.type==="rating"&&jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{style:{display:"block",fontSize:"12px",fontWeight:500,color:"#64748b",marginBottom:"4px"},children:s.properties.ratingStyle}),jsxRuntime.jsxs("select",{value:e.metadata?.ratingStyle??"star",onChange:C=>u({metadata:{...e.metadata,ratingStyle:C.target.value}}),style:{width:"100%",padding:"6px 8px",border:"1px solid #e2e8f0",borderRadius:"4px",fontSize:"13px"},children:[jsxRuntime.jsx("option",{value:"star",children:s.properties.ratingStyles.star}),jsxRuntime.jsx("option",{value:"number",children:s.properties.ratingStyles.number}),jsxRuntime.jsx("option",{value:"color",children:s.properties.ratingStyles.color})]})]}),jsxRuntime.jsxs("div",{style:{padding:"8px",backgroundColor:"#f8fafc",borderRadius:"6px",display:"flex",flexDirection:"column",gap:"6px"},children:[jsxRuntime.jsx("div",{style:{fontSize:"11px",fontWeight:600,color:"#64748b",textTransform:"uppercase"},children:s.properties.layout}),jsxRuntime.jsx(Ze,{label:s.properties.startNewRow,checked:e.startWithNewLine!==false,onChange:C=>u({startWithNewLine:C?void 0:false})}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{style:{display:"block",fontSize:"12px",fontWeight:500,color:"#64748b",marginBottom:"2px"},children:s.properties.columnSpan}),jsxRuntime.jsxs("select",{value:e.colSpan??"auto",onChange:C=>u({colSpan:C.target.value==="auto"?void 0:parseInt(C.target.value)}),style:{width:"100%",padding:"4px 8px",border:"1px solid #e2e8f0",borderRadius:"4px",fontSize:"13px"},children:[jsxRuntime.jsx("option",{value:"auto",children:s.properties.columnSpanAuto}),[1,2,3,4,5,6,7,8,9,10,11,12].map(C=>jsxRuntime.jsxs("option",{value:C,children:[C,"/12",C===6?s.properties.columnSpanHalf:C===4?s.properties.columnSpanThird:C===12?s.properties.columnSpanFull:""]},C))]})]})]}),jsxRuntime.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"6px"},children:[jsxRuntime.jsx(ge,{isOverridden:g("isRequired"),onReset:()=>x("isRequired"),resetLabel:s.properties.resetOverride,inline:true,children:jsxRuntime.jsx(Ze,{label:s.properties.required,checked:e.isRequired,onChange:C=>u({isRequired:C})})}),jsxRuntime.jsx(ge,{isOverridden:g("isReadonly"),onReset:()=>x("isReadonly"),resetLabel:s.properties.resetOverride,inline:true,children:jsxRuntime.jsx(Ze,{label:s.properties.readonly,checked:e.isReadonly,onChange:C=>u({isReadonly:C})})}),jsxRuntime.jsx(ge,{isOverridden:g("isHidden"),onReset:()=>x("isHidden"),resetLabel:s.properties.resetOverride,inline:true,children:jsxRuntime.jsx(Ze,{label:s.properties.hidden,checked:e.isHidden,onChange:C=>u({isHidden:C})})})]}),e.type==="calculated"&&jsxRuntime.jsx(ge,{isOverridden:g("expression"),onReset:()=>x("expression"),resetLabel:s.properties.resetOverride,children:jsxRuntime.jsx(ne,{label:s.properties.expression,value:e.expression??"",onChange:C=>u({expression:C||void 0}),multiline:true})}),["select","multiselect","radio"].includes(e.type)&&jsxRuntime.jsx(Io,{dataSourceId:e.dataSourceId,dependencies:e.dataSourceDependencies,availableConnectors:n,availableVariables:I,onConnectorChange:C=>u({dataSourceId:C}),onDependenciesChange:C=>u({dataSourceDependencies:Object.keys(C).length>0?C:void 0})}),["select","multiselect","radio","checkbox"].includes(e.type)&&!e.dataSourceId&&jsxRuntime.jsx(ge,{isOverridden:g("options"),onReset:()=>x("options"),resetLabel:s.properties.resetOverride,children:jsxRuntime.jsx(Je,{options:e.options??[],onChange:C=>u({options:C})})}),jsxRuntime.jsx(ge,{isOverridden:g("conditions"),onReset:()=>x("conditions"),resetLabel:s.properties.resetOverride,children:jsxRuntime.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"6px"},children:[jsxRuntime.jsx("label",{style:{fontSize:"11px",fontWeight:600,color:"#64748b",textTransform:"uppercase",letterSpacing:"0.5px"},children:s.conditionBuilder.conditionsCount((e.conditions??[]).length)}),jsxRuntime.jsxs("button",{type:"button","data-testid":"conditions-modal-open",onClick:()=>v(true),style:{padding:"8px 14px",border:"1px solid #cbd5e1",borderRadius:"6px",backgroundColor:"#fff",color:"#1e293b",fontSize:"13px",fontWeight:500,cursor:"pointer",textAlign:"left"},children:["\u2699 ",s.conditionBuilder.configureButton((e.conditions??[]).length)]}),(e.conditions??[]).length>0&&jsxRuntime.jsx("ul",{"data-testid":"conditions-preview",style:{margin:0,padding:0,listStyle:"none",display:"flex",flexDirection:"column",gap:"3px"},children:(e.conditions??[]).map(C=>jsxRuntime.jsx("li",{style:{fontFamily:'ui-monospace, "SF Mono", Menlo, Consolas, monospace',fontSize:"11.5px",color:"#0f172a",backgroundColor:"#f1f5f9",padding:"4px 8px",borderRadius:"4px",wordBreak:"break-all"},children:C.expression||"\u2205"},C.id))})]})}),jsxRuntime.jsx(ht,{open:f,onClose:()=>v(false),conditions:e.conditions??[],onApply:C=>u({conditions:C}),availableVariables:I,rosterContext:(()=>{if(!r)return;let C=o.pages.find(R=>R.code===a),A=C?formCore.getPageRosters(C).find(R=>R.code===r):void 0;if(A)return {variables:A.variables.map(R=>({code:R.code,order:R.order})),currentVariableCode:e.code,currentVariableOrder:e.order}})()})]})}function Ir({variable:e,templateCodeLabel:a,templateNameLabel:r,bannerTitle:n,defaultLang:o}){return jsxRuntime.jsxs("div",{"data-testid":"variable-linked-banner",style:{padding:"10px 12px",backgroundColor:"#eff6ff",border:"1px solid #bfdbfe",borderRadius:"6px",fontSize:"12px",color:"#1e40af",display:"flex",flexDirection:"column",gap:"4px"},children:[jsxRuntime.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"6px",fontWeight:600},children:[jsxRuntime.jsx("span",{children:"\u{1F517}"}),jsxRuntime.jsx("span",{children:n})]}),jsxRuntime.jsxs("div",{style:{fontSize:"11px",color:"#1e3a8a"},children:[a," : ",jsxRuntime.jsx("span",{style:{fontFamily:"monospace"},children:e.code})]}),jsxRuntime.jsxs("div",{style:{fontSize:"11px",color:"#1e3a8a"},children:[r," : ",formCore.resolveLabel(e.name,o,o)]})]})}function wr({label:e,value:a,defaultLang:r,testId:n}){return jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{style:{display:"block",fontSize:"12px",fontWeight:500,color:"#64748b",marginBottom:"4px"},children:e}),jsxRuntime.jsx("div",{"data-testid":n,style:{padding:"6px 8px",backgroundColor:"#f1f5f9",color:"#64748b",border:"1px solid #e2e8f0",borderRadius:"4px",fontSize:"13px",cursor:"not-allowed",userSelect:"text"},children:formCore.resolveLabel(a,r,r)})]})}function ge({isOverridden:e,onReset:a,resetLabel:r,children:n,inline:o=false}){if(!e)return jsxRuntime.jsx(jsxRuntime.Fragment,{children:n});let t=jsxRuntime.jsxs("button",{type:"button","data-testid":"reset-override",onClick:a,style:{padding:"2px 8px",border:"1px solid #fde68a",borderRadius:"4px",backgroundColor:"#fffbeb",color:"#92400e",fontSize:"10px",cursor:"pointer",fontWeight:500},children:["\u21BA ",r]});return o?jsxRuntime.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[jsxRuntime.jsx("div",{style:{flex:1},children:n}),t]}):jsxRuntime.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"4px"},children:[n,jsxRuntime.jsx("div",{style:{display:"flex",justifyContent:"flex-end"},children:t})]})}function Ze({label:e,checked:a,onChange:r}){return jsxRuntime.jsxs("label",{style:{display:"flex",alignItems:"center",gap:"8px",fontSize:"13px",color:"#334155",cursor:"pointer"},children:[jsxRuntime.jsx("input",{type:"checkbox",checked:a,onChange:n=>r(n.target.checked)}),e]})}var kt=[1,2,3,5,10],It=[0,1,2,3];function Pr({value:e,onChange:a,labels:r}){let n=e??{},o=n.maxFiles===void 0?"unlimited":String(n.maxFiles),t=i=>{let l={};i.maxFiles!==void 0&&(l.maxFiles=i.maxFiles),i.minFiles!==void 0&&i.minFiles>0&&(l.minFiles=i.minFiles),i.accept&&(l.accept=i.accept),a(Object.keys(l).length>0?l:void 0);};return jsxRuntime.jsxs("div",{"data-testid":"file-config-section",style:wt,children:[jsxRuntime.jsx("div",{style:Pt,children:r.title}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{style:Ne,children:r.max}),jsxRuntime.jsxs("select",{"data-testid":"file-config-max",value:o,onChange:i=>{let l=i.target.value;t({...n,maxFiles:l==="unlimited"?void 0:Number(l)});},style:Be,children:[kt.map(i=>jsxRuntime.jsx("option",{value:String(i),children:i},i)),jsxRuntime.jsx("option",{value:"unlimited",children:r.unlimited})]})]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{style:Ne,children:r.min}),jsxRuntime.jsx("select",{"data-testid":"file-config-min",value:String(n.minFiles??0),onChange:i=>t({...n,minFiles:Number(i.target.value)}),style:Be,children:It.map(i=>jsxRuntime.jsx("option",{value:String(i),children:i},i))})]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{style:Ne,children:r.accept}),jsxRuntime.jsx("input",{"data-testid":"file-config-accept",type:"text",value:n.accept??"",onChange:i=>t({...n,accept:i.target.value||void 0}),placeholder:r.acceptPlaceholder,style:{...Be,fontFamily:"monospace"}})]})]})}function Lr({value:e,onChange:a,labels:r}){let n=e??{},o=n.maxImages===void 0?"unlimited":String(n.maxImages),t=i=>{let l={};i.maxImages!==void 0&&(l.maxImages=i.maxImages),i.minImages!==void 0&&i.minImages>0&&(l.minImages=i.minImages),i.allowCamera&&(l.allowCamera=true),a(Object.keys(l).length>0?l:void 0);};return jsxRuntime.jsxs("div",{"data-testid":"image-config-section",style:wt,children:[jsxRuntime.jsx("div",{style:Pt,children:r.title}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{style:Ne,children:r.max}),jsxRuntime.jsxs("select",{"data-testid":"image-config-max",value:o,onChange:i=>{let l=i.target.value;t({...n,maxImages:l==="unlimited"?void 0:Number(l)});},style:Be,children:[kt.map(i=>jsxRuntime.jsx("option",{value:String(i),children:i},i)),jsxRuntime.jsx("option",{value:"unlimited",children:r.unlimited})]})]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{style:Ne,children:r.min}),jsxRuntime.jsx("select",{"data-testid":"image-config-min",value:String(n.minImages??0),onChange:i=>t({...n,minImages:Number(i.target.value)}),style:Be,children:It.map(i=>jsxRuntime.jsx("option",{value:String(i),children:i},i))})]}),jsxRuntime.jsxs("label",{"data-testid":"image-config-camera-label",style:{display:"flex",alignItems:"center",gap:"8px",fontSize:"13px",color:"#334155",cursor:"pointer"},children:[jsxRuntime.jsx("input",{type:"checkbox","data-testid":"image-config-camera",checked:!!n.allowCamera,onChange:i=>t({...n,allowCamera:i.target.checked})}),r.camera]})]})}var wt={padding:"8px",backgroundColor:"#f0f9ff",borderRadius:"6px",display:"flex",flexDirection:"column",gap:"8px",border:"1px solid #bae6fd"},Pt={fontSize:"11px",fontWeight:600,color:"#0369a1",textTransform:"uppercase",letterSpacing:"0.5px"},Ne={display:"block",fontSize:"12px",fontWeight:500,color:"#0c4a6e",marginBottom:"2px"},Be={width:"100%",padding:"6px 8px",border:"1px solid #bae6fd",borderRadius:"4px",fontSize:"13px",color:"#0f172a",outline:"none",backgroundColor:"#fff"};function Dt({roster:e,pageCode:a}){let{updateRoster:r}=k(),n=w(),o=zr.useMemo(()=>[{value:"check",label:n.properties.rosterTypes.check},{value:"list",label:n.properties.rosterTypes.list},{value:"collection",label:n.properties.rosterTypes.collection},{value:"collection_extend",label:n.properties.rosterTypes.collection_extend}],[n]);return jsxRuntime.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"12px"},children:[jsxRuntime.jsx(Z,{label:n.properties.name,value:e.name,onChange:t=>r(a,e.code,{name:t}),testIdPrefix:"roster-name"}),jsxRuntime.jsx(ne,{label:n.properties.code,value:e.code,onChange:()=>{}}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{style:{display:"block",fontSize:"12px",fontWeight:500,color:"#64748b",marginBottom:"4px"},children:n.properties.rosterType}),jsxRuntime.jsx("select",{value:e.rosterType,onChange:t=>r(a,e.code,{rosterType:t.target.value}),style:{width:"100%",padding:"6px 8px",border:"1px solid #e2e8f0",borderRadius:"4px",fontSize:"13px"},children:o.map(t=>jsxRuntime.jsx("option",{value:t.value,children:t.label},t.value))})]}),jsxRuntime.jsx(ne,{label:n.properties.pilotVariableCode,value:e.pilotVariableCode??"",onChange:t=>r(a,e.code,{pilotVariableCode:t||void 0})}),jsxRuntime.jsx("div",{style:{fontSize:"12px",color:"#94a3b8"},children:n.properties.rosterSummary(e.variables.length,e.options?.length??0)})]})}function Lo({availableConnectors:e=[]}){let{selection:a,form:r}=k(),n=w(),o=(()=>{switch(a.type){case "form":return jsxRuntime.jsx(Ee,{});case "page":{let t=r.pages.find(i=>i.code===a.pageCode);return t?jsxRuntime.jsx(ft,{page:t}):jsxRuntime.jsx(Ee,{})}case "roster":{let t=r.pages.find(l=>l.code===a.pageCode),i=t?formCore.getPageRosters(t).find(l=>l.code===a.rosterCode):void 0;return !t||!i?jsxRuntime.jsx(Ee,{}):jsxRuntime.jsx(Dt,{roster:i,pageCode:t.code})}case "variable":{let t=r.pages.find(s=>s.code===a.pageCode);if(!t)return jsxRuntime.jsx(Ee,{});let i=a.rosterCode?formCore.getPageRosters(t).find(s=>s.code===a.rosterCode):void 0,d=(i?i.variables:formCore.getPageVariables(t)).find(s=>s.code===a.variableCode);return d?jsxRuntime.jsx(Rt,{variable:d,pageCode:t.code,rosterCode:a.rosterCode,availableConnectors:e}):jsxRuntime.jsx(Ee,{})}}})();return jsxRuntime.jsxs("div",{style:{width:"300px",borderLeft:"1px solid #e2e8f0",backgroundColor:"#fff",overflowY:"auto"},children:[jsxRuntime.jsx("div",{style:{padding:"12px 16px",borderBottom:"1px solid #e2e8f0",fontSize:"12px",fontWeight:600,color:"#64748b",textTransform:"uppercase",letterSpacing:"0.5px"},children:n.properties.title}),jsxRuntime.jsx("div",{style:{padding:"16px"},children:o})]})}function Mr({theme:e,dataSources:a,adapter:r,initialForm:n,formId:o,onChange:t,onSave:i,labels:l,PreviewComponent:d,ToolboxComponent:s,CanvasComponent:f,Wrapper:v}){let{form:y,view:p,setForm:b,setAdapter:c,load:u,setAvailableTemplates:g,setAvailableScopes:x,setAvailableDataSources:h}=k(),I=zr.useMemo(()=>qe(xe,l),[l]);zr.useEffect(()=>{r&&c(r);},[r,c]),zr.useEffect(()=>{n?b(n):o&&r?.loadForm&&u(o);},[n,o]);let C=(y.scopeIds??[]).join("|");zr.useEffect(()=>{let E=y.scopeIds??[];if(E.length===0||!r?.loadTemplates){g([]);return}let N=r.loadTemplates,z=false;return Promise.all(E.map(m=>N(m).catch(()=>[]))).then(m=>{if(z)return;let D=new Set,V=[];for(let X of m)for(let j of X)D.has(j.code)||(D.add(j.code),V.push(j));g(V);}).catch(()=>{z||g([]);}),()=>{z=true;}},[C,r,g]),zr.useEffect(()=>{if(!r?.loadScopes){x([]);return}let E=false;return r.loadScopes().then(N=>{E||x(N);}).catch(()=>{E||x([]);}),()=>{E=true;}},[r,x]),zr.useEffect(()=>{let E=y.scopeIds??[];if(E.length===0||!r?.loadDataSources){h([]);return}let N=r.loadDataSources,z=false;return Promise.all(E.map(m=>N(m).catch(()=>[]))).then(m=>{if(z)return;let D=new Set,V=[];for(let X of m)for(let j of X)D.has(j.code)||(D.add(j.code),V.push(j));h(V);}).catch(()=>{z||h([]);}),()=>{z=true;}},[C,r,h]);let A=zr.useRef(t),R=zr.useRef(true);A.current=t,zr.useEffect(()=>{if(R.current){R.current=false;return}A.current?.(y);},[y]);let _=s??Ye,K=f??Xe,$=zr.useRef(false);v&&!$.current&&typeof console<"u"&&($.current=true,console.warn("[@msbci/form-editor] FormEditor.Wrapper is deprecated \u2014 drag & drop is now provided by the internal DndManager. The custom Wrapper will still be applied AROUND DndManager, but you should remove it."));let Y=v??zr__default.default.Fragment,S=jsxRuntime.jsxs("div",{style:{display:"flex",flexDirection:"column",height:"100%",fontFamily:"system-ui, -apple-system, sans-serif"},children:[jsxRuntime.jsx(go,{onSave:i}),jsxRuntime.jsxs("div",{style:{display:"flex",flex:1,overflow:"hidden"},children:[p==="canvas"&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(_,{}),jsxRuntime.jsx(K,{}),jsxRuntime.jsx(Lo,{availableConnectors:a?Object.values(a):[]})]}),p==="preview"&&d&&jsxRuntime.jsx("div",{style:{flex:1,overflow:"auto"},children:jsxRuntime.jsx(d,{formSchema:y,theme:e,dataSources:a,mode:"fill"})}),p==="preview"&&!d&&jsxRuntime.jsx("div",{style:{flex:1,display:"flex",alignItems:"center",justifyContent:"center",color:"#94a3b8",fontSize:"14px"},children:I.formEditor.previewMissing}),p==="json"&&jsxRuntime.jsx("div",{style:{flex:1,overflow:"auto",padding:"16px"},children:jsxRuntime.jsx("pre",{style:{fontFamily:"monospace",fontSize:"12px",color:"#334155",backgroundColor:"#f8fafc",padding:"16px",borderRadius:"8px",border:"1px solid #e2e8f0",whiteSpace:"pre-wrap",wordBreak:"break-all"},children:JSON.stringify(y,null,2)})})]})]});return jsxRuntime.jsx(We,{labels:I,children:jsxRuntime.jsx(Y,{children:jsxRuntime.jsx(Co,{children:S})})})}function _r(){let e=w(),[a,r]=zr.useState("fields"),[n,o]=zr.useState(""),{form:t,selection:i,addVariable:l,addRoster:d,addVariableFromTemplate:s,availableTemplates:f}=k(),v=zr.useMemo(()=>[{label:e.toolbox.groupText,items:[{kind:"variable",type:"text",label:e.toolbox.types.text,icon:"T"},{kind:"variable",type:"textarea",label:e.toolbox.types.textarea,icon:"\xB6"},{kind:"variable",type:"number",label:e.toolbox.types.number,icon:"#"},{kind:"variable",type:"email",label:e.toolbox.types.email,icon:"@"}]},{label:e.toolbox.groupSelection,items:[{kind:"variable",type:"select",label:e.toolbox.types.select,icon:"\u25BC"},{kind:"variable",type:"multiselect",label:e.toolbox.types.multiselect,icon:"\u2611"},{kind:"variable",type:"radio",label:e.toolbox.types.radio,icon:"\u25C9"},{kind:"variable",type:"checkbox",label:e.toolbox.types.checkbox,icon:"\u2610"},{kind:"variable",type:"listradio",label:e.toolbox.types.listradio,icon:"\u2261"}]},{label:e.toolbox.groupDateTime,items:[{kind:"variable",type:"date",label:e.toolbox.types.date,icon:"\u{1F4C5}"},{kind:"variable",type:"datetime",label:e.toolbox.types.datetime,icon:"\u{1F550}"},{kind:"variable",type:"time",label:e.toolbox.types.time,icon:"\u23F0"}]},{label:e.toolbox.groupMedia,items:[{kind:"variable",type:"file",label:e.toolbox.types.file,icon:"\u{1F4CE}"},{kind:"variable",type:"image",label:e.toolbox.types.image,icon:"\u{1F5BC}"},{kind:"variable",type:"photo",label:e.toolbox.types.photo,icon:"\u{1F4F7}"},{kind:"variable",type:"gps",label:e.toolbox.types.gps,icon:"\u{1F4CD}"}]},{label:e.toolbox.groupAdvanced,items:[{kind:"variable",type:"rating",label:e.toolbox.types.rating,icon:"\u2605"},{kind:"variable",type:"calculated",label:e.toolbox.types.calculated,icon:"fx"},{kind:"variable",type:"hidden",label:e.toolbox.types.hidden,icon:"\u{1F441}"},{kind:"variable",type:"label",label:e.toolbox.types.label,icon:"Aa"},{kind:"variable",type:"panel",label:e.toolbox.types.panel,icon:"\u25AD"},{kind:"variable",type:"richtext",label:e.toolbox.types.richtext,icon:"\u{1F4DD}"}]},{label:e.toolbox.groupRoster,items:[{kind:"roster",rosterType:"check",label:e.toolbox.typeRosterCheck,icon:"\u25A4"},{kind:"roster",rosterType:"list",label:e.toolbox.typeRosterList,icon:"\u25A6"},{kind:"roster",rosterType:"collection",label:e.toolbox.typeRosterCollection,icon:"\u25A5"},{kind:"roster",rosterType:"collection_extend",label:e.toolbox.typeRosterCollectionExtend,icon:"\u25A9"}]}],[e]),y=i.type==="page"||i.type==="variable"||i.type==="roster"?i.pageCode:t.pages[0]?.code,p=u=>{if(!y||!t.pages.find(h=>h.code===y))return;if(u.kind==="roster"){let h=`ROSTER_${Date.now().toString(36).slice(-4).toUpperCase()}`;d(y,{id:`roster-${Date.now()}`,code:h,name:e.canvas.newRosterName,rosterType:u.rosterType,order:0,variables:[]});return}let x=`${u.type.toUpperCase()}_${Date.now().toString(36).slice(-4).toUpperCase()}`;l(y,{id:`var-${Date.now()}`,code:x,name:e.canvas.newVariableName(u.label),type:u.type,order:0,isRequired:false,isReadonly:false,isHidden:false});},b=u=>{y&&s(y,u);},c=v.map(u=>({...u,items:u.items.filter(g=>g.label.toLowerCase().includes(n.toLowerCase()))})).filter(u=>u.items.length>0);return jsxRuntime.jsxs("div",{style:{width:"220px",borderRight:"1px solid #e2e8f0",display:"flex",flexDirection:"column",backgroundColor:"#f8fafc",overflow:"hidden"},children:[jsxRuntime.jsx(Wr,{tab:a,setTab:r,labels:e}),jsxRuntime.jsx("div",{style:{padding:"12px",borderBottom:"1px solid #e2e8f0"},children:jsxRuntime.jsx("input",{type:"text",placeholder:e.toolbox.searchPlaceholder,value:n,onChange:u=>o(u.target.value),style:{width:"100%",padding:"6px 10px",border:"1px solid #e2e8f0",borderRadius:"6px",fontSize:"13px",outline:"none",boxSizing:"border-box"}})}),jsxRuntime.jsxs("div",{style:{flex:1,overflowY:"auto",padding:"8px"},children:[!y&&jsxRuntime.jsx("div",{style:{padding:"12px",color:"#94a3b8",fontSize:"12px",textAlign:"center"},children:e.toolbox.addPageFirst}),a==="fields"&&c.map(u=>jsxRuntime.jsxs("div",{style:{marginBottom:"16px"},children:[jsxRuntime.jsx("div",{style:{fontSize:"11px",fontWeight:600,color:"#94a3b8",textTransform:"uppercase",letterSpacing:"0.5px",marginBottom:"6px",padding:"0 4px"},children:u.label}),u.items.map(g=>{let x=g.kind==="roster"?`roster-${g.rosterType}`:`var-${g.type}`,h=g.kind==="roster"?`toolbox-roster-${g.rosterType}`:`toolbox-variable-${g.type}`;return jsxRuntime.jsxs("div",{"data-testid":h,onClick:()=>p(g),style:{display:"flex",alignItems:"center",gap:"8px",padding:"6px 8px",marginBottom:"2px",borderRadius:"6px",cursor:"pointer",fontSize:"13px",color:"#334155",userSelect:"none"},onMouseEnter:I=>{I.currentTarget.style.backgroundColor="#e2e8f0";},onMouseLeave:I=>{I.currentTarget.style.backgroundColor="transparent";},children:[jsxRuntime.jsx("span",{style:{width:"20px",textAlign:"center",fontSize:"14px"},children:g.icon}),jsxRuntime.jsx("span",{children:g.label})]},x)})]},u.label)),a==="variables"&&jsxRuntime.jsx(qr,{templates:f,scopeIds:t.scopeIds,search:n,onAdd:b,defaultLang:t.langConfig?.defaultLang??formCore.DEFAULT_LANG_CONFIG.defaultLang,labels:e})]})]})}function Wr({tab:e,setTab:a,labels:r}){let n={flex:1,padding:"8px 0",fontSize:"12px",fontWeight:500,textAlign:"center",cursor:"pointer",userSelect:"none",color:"#64748b",borderBottomWidth:"2px",borderBottomStyle:"solid",borderBottomColor:"transparent"},o={...n,color:"#2563eb",fontWeight:600,borderBottomColor:"#2563eb"};return jsxRuntime.jsxs("div",{style:{display:"flex",borderBottom:"1px solid #e2e8f0",backgroundColor:"#fff"},children:[jsxRuntime.jsx("div",{role:"tab","aria-selected":e==="fields","data-testid":"toolbox-tab-fields",onClick:()=>a("fields"),style:e==="fields"?o:n,children:r.toolbox.tabFields}),jsxRuntime.jsx("div",{role:"tab","aria-selected":e==="variables","data-testid":"toolbox-tab-variables",onClick:()=>a("variables"),style:e==="variables"?o:n,children:r.toolbox.tabVariables})]})}function qr({templates:e,scopeIds:a,search:r,onAdd:n,defaultLang:o,labels:t}){let i=s=>jsxRuntime.jsx("div",{"data-testid":"toolbox-variables-empty",style:{padding:"14px",color:"#94a3b8",fontSize:"12px",textAlign:"center",fontStyle:"italic"},children:s});if(!a||a.length===0)return i(t.toolbox.noScope);if(e.length===0)return i(t.toolbox.noTemplates);let l=r.toLowerCase(),d=e.filter(s=>{if(!l)return true;let f=s.code.toLowerCase().includes(l),v=Et(s.name,o).toLowerCase().includes(l);return f||v}).slice().sort((s,f)=>s.code.localeCompare(f.code));return d.length===0?i(t.toolbox.noTemplates):jsxRuntime.jsx("div",{style:{display:"flex",flexDirection:"column",gap:"4px"},children:d.map(s=>jsxRuntime.jsxs("div",{"data-testid":`toolbox-template-${s.code}`,onClick:()=>n(s),style:{display:"flex",alignItems:"center",gap:"8px",padding:"6px 8px",borderRadius:"6px",cursor:"pointer",fontSize:"13px",color:"#334155",userSelect:"none"},onMouseEnter:f=>{f.currentTarget.style.backgroundColor="#e2e8f0";},onMouseLeave:f=>{f.currentTarget.style.backgroundColor="transparent";},children:[jsxRuntime.jsx("span",{style:{fontSize:"10px",fontWeight:600,padding:"2px 6px",borderRadius:"4px",backgroundColor:"#e0e7ff",color:"#3730a3",textTransform:"uppercase",letterSpacing:"0.3px",minWidth:"42px",textAlign:"center"},children:s.variableType}),jsxRuntime.jsxs("div",{style:{display:"flex",flexDirection:"column",minWidth:0,flex:1},children:[jsxRuntime.jsx("span",{style:{fontFamily:"monospace",fontSize:"11px",color:"#475569",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:s.code}),jsxRuntime.jsx("span",{style:{fontSize:"12px",color:"#1e293b",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:Et(s.name,o)})]})]},s.id))})}function Et(e,a){return formCore.resolveLabel(e,a,a)}function Eo(){let a=k(r=>r.form).langConfig?.defaultLang??formCore.DEFAULT_LANG_CONFIG.defaultLang;return r=>formCore.resolveLabel(r,a,a)}function Jr(e){let a=e.slice().sort((o,t)=>o.order-t.order),r=[],n=null;for(let o of a){if(formCore.isPageRoster(o)){n&&(r.push({kind:"variables",variables:n}),n=null),r.push({kind:"roster",roster:o});continue}let t=o;t.startWithNewLine===false&&n&&n.length>0?n.push(t):(n&&r.push({kind:"variables",variables:n}),n=[t]);}return n&&r.push({kind:"variables",variables:n}),r}function Kr(){let{form:e,select:a}=k(),r=w(),n=o=>{o.target===o.currentTarget&&a({type:"form"});};return e.pages.length===0?jsxRuntime.jsx("div",{"data-testid":"canvas-empty",onClick:n,style:{flex:1,display:"flex",alignItems:"center",justifyContent:"center",color:"#94a3b8",fontSize:"14px",cursor:"pointer"},children:r.canvas.emptyStateNoPage}):jsxRuntime.jsx("div",{"data-testid":"canvas-root",onClick:n,style:{flex:1,overflowY:"auto",padding:"16px",backgroundColor:"#fff"},children:e.pages.slice().sort((o,t)=>o.order-t.order).map(o=>jsxRuntime.jsx(Yr,{page:o},o.code))})}function Yr({page:e}){let{selection:a,select:r,removePage:n}=k(),o=w(),t=Eo(),i=a.type==="page"&&a.pageCode===e.code,l=e.items??[...formCore.getPageVariables(e),...e.rosters??[]],d=l.filter(formCore.isPageVariable).length,s=l.filter(formCore.isPageRoster).length,f=Jr(l);return jsxRuntime.jsxs("div",{style:{marginBottom:"16px",border:`2px solid ${i?"#2563eb":"#e2e8f0"}`,borderRadius:"8px",overflow:"hidden"},children:[jsxRuntime.jsxs("div",{onClick:()=>r({type:"page",pageCode:e.code}),style:{padding:"10px 14px",backgroundColor:i?"#eff6ff":"#f8fafc",borderBottom:"1px solid #e2e8f0",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"space-between"},children:[jsxRuntime.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[jsxRuntime.jsx("span",{style:{fontSize:"14px",fontWeight:600,color:"#1e293b"},children:t(e.name)||o.canvas.unnamedPage}),e.isRepeatable&&jsxRuntime.jsx("span",{style:{fontSize:"10px",padding:"1px 6px",borderRadius:"4px",backgroundColor:"#dbeafe",color:"#2563eb",fontWeight:500},children:o.canvas.repeatable})]}),jsxRuntime.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[jsxRuntime.jsx("span",{style:{fontSize:"12px",color:"#94a3b8"},children:o.canvas.fieldsRostersCount(d,s)}),jsxRuntime.jsx("button",{onClick:v=>{v.stopPropagation(),n(e.code);},style:{border:"none",background:"none",color:"#ef4444",cursor:"pointer",fontSize:"14px",padding:"2px 4px"},children:"\xD7"})]})]}),jsxRuntime.jsxs("div",{style:{padding:"4px 0"},children:[f.map((v,y)=>v.kind==="roster"?jsxRuntime.jsx(Xr,{roster:v.roster,pageCode:e.code},`r-${v.roster.code}`):v.variables.length===1?jsxRuntime.jsx(Ao,{variable:v.variables[0],pageCode:e.code},v.variables[0].code):jsxRuntime.jsx("div",{style:{display:"flex",gap:"2px",backgroundColor:"#f0f4ff",borderLeft:"2px solid #c7d2fe",margin:"1px 0"},children:v.variables.map(p=>jsxRuntime.jsx("div",{style:{flex:p.colSpan?`0 0 ${p.colSpan/12*100}%`:"1 1 0%",minWidth:0},children:jsxRuntime.jsx(Ao,{variable:p,pageCode:e.code})},p.code))},`row-${y}`)),l.length===0&&jsxRuntime.jsx("div",{style:{padding:"12px 14px",color:"#94a3b8",fontSize:"12px",fontStyle:"italic"},children:o.canvas.emptyStatePage})]})]})}function Ao({variable:e,pageCode:a,rosterCode:r}){let{selection:n,select:o,removeVariable:t}=k(),i=w(),l=Eo(),d=n.type==="variable"&&n.variableCode===e.code;return jsxRuntime.jsxs("div",{onClick:s=>{s.stopPropagation(),o({type:"variable",pageCode:a,variableCode:e.code,rosterCode:r});},style:{display:"flex",alignItems:"center",gap:"8px",padding:"6px 14px",cursor:"pointer",backgroundColor:d?"#eff6ff":"transparent",borderLeft:d?"3px solid #2563eb":"3px solid transparent",fontSize:"13px"},children:[jsxRuntime.jsx("span",{style:{color:"#94a3b8",fontSize:"11px",width:"60px",flexShrink:0},children:e.type}),jsxRuntime.jsx("span",{style:{color:"#334155",flex:1},children:l(e.name)||e.code}),e.isRequired&&jsxRuntime.jsx("span",{style:{color:"#ef4444",fontSize:"11px"},children:"*"}),e.conditions&&e.conditions.length>0&&jsxRuntime.jsx("span",{style:{color:"#f59e0b",fontSize:"11px"},title:i.canvas.hasConditionsTitle,children:"\u26A1"}),e.dataSourceId&&jsxRuntime.jsx("span",{style:{color:"#22c55e",fontSize:"11px"},title:i.canvas.dataSourceConnectedTitle,children:"\u27F3"}),jsxRuntime.jsx("button",{onClick:s=>{s.stopPropagation(),t(a,e.code,r);},style:{border:"none",background:"none",color:"#ef4444",cursor:"pointer",fontSize:"12px",padding:"0 2px",opacity:.5},children:"\xD7"})]})}function Xr({roster:e,pageCode:a}){let{selection:r,select:n,removeRoster:o,addVariable:t}=k(),i=w(),l=Eo(),d=r.type==="roster"&&r.rosterCode===e.code,s=f=>{f.stopPropagation();let v=`RV_${Date.now().toString(36).slice(-4).toUpperCase()}`;t(a,{id:`var-${Date.now()}`,code:v,name:i.canvas.newFieldName,type:"text",order:e.variables.length,isRequired:false,isReadonly:false,isHidden:false},e.code);};return jsxRuntime.jsxs("div",{style:{margin:"4px 8px",border:`1px solid ${d?"#2563eb":"#e2e8f0"}`,borderRadius:"6px",overflow:"hidden"},children:[jsxRuntime.jsxs("div",{onClick:f=>{f.stopPropagation(),n({type:"roster",pageCode:a,rosterCode:e.code});},style:{padding:"6px 10px",backgroundColor:d?"#fef3c7":"#fffbeb",fontSize:"12px",fontWeight:600,color:"#92400e",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"space-between"},children:[jsxRuntime.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"6px"},children:[jsxRuntime.jsxs("span",{children:["\u25A4 ",l(e.name)||e.code]}),jsxRuntime.jsx("span",{style:{fontSize:"10px",padding:"1px 4px",borderRadius:"3px",backgroundColor:"#fde68a",color:"#78350f"},children:e.rosterType}),e.pilotVariableCode&&jsxRuntime.jsxs("span",{style:{fontSize:"10px",color:"#92400e",fontWeight:400},children:[i.canvas.pilotPrefix," ",e.pilotVariableCode]})]}),jsxRuntime.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"4px"},children:[jsxRuntime.jsx("span",{style:{fontSize:"11px",color:"#b45309"},children:i.canvas.rosterVarsCount(e.variables.length)}),jsxRuntime.jsx("button",{onClick:f=>{f.stopPropagation(),o(a,e.code);},style:{border:"none",background:"none",color:"#ef4444",cursor:"pointer",fontSize:"12px"},children:"\xD7"})]})]}),e.variables.slice().sort((f,v)=>f.order-v.order).map(f=>jsxRuntime.jsx(Ao,{variable:f,pageCode:a,rosterCode:e.code},f.code)),jsxRuntime.jsx("div",{style:{padding:"4px 10px",borderTop:"1px solid #fde68a"},children:jsxRuntime.jsx("button",{onClick:s,style:{padding:"2px 8px",borderRadius:"3px",border:"1px dashed #d4a843",backgroundColor:"transparent",color:"#92400e",fontSize:"10px",cursor:"pointer"},children:i.canvas.addFieldToRoster})})]})}exports.Canvas=Xe;exports.CanvasDnd=Xe;exports.CanvasSimple=Kr;exports.ConditionBuilder=ko;exports.DataSourceConfigManager=oo;exports.DataSourceSelector=Io;exports.DndManager=Co;exports.EditorLabelsProvider=We;exports.EditorToolbar=go;exports.FormEditor=Mr;exports.PropertiesPanel=Lo;exports.ScopeManagerDialog=fo;exports.Toolbox=Ye;exports.ToolboxDnd=Ye;exports.ToolboxSimple=_r;exports.VariableTemplateManager=co;exports.createDragEndHandler=dt;exports.defaultLabels=xe;exports.enLabels=Oo;exports.frLabels=xe;exports.mergeLabels=qe;exports.useEditorStore=k;exports.useLabels=w;//# sourceMappingURL=index.cjs.map
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|