treege 3.0.0-beta.45 → 3.0.0-beta.46
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/DefaultInputs-7fXlu0uL.js +1734 -0
- package/dist/{ThemeContext-O482h1XZ.js → ThemeContext-CNsS53ku.js} +274 -217
- package/dist/editor/constants/nodeTypes.d.ts +1 -1
- package/dist/editor/features/TreegeEditor/nodes/components/NodeGroupBadge.d.ts +5 -0
- package/dist/editor/features/TreegeEditor/nodes/layout/NodeWrapper.d.ts +1 -2
- package/dist/editor/utils/dagreLayout.d.ts +5 -2
- package/dist/editor/utils/groupColor.d.ts +14 -0
- package/dist/{editor-DBCMmZtt.js → editor-DLKg7ri7.js} +1550 -1488
- package/dist/editor.js +2 -2
- package/dist/main.js +4 -4
- package/dist/renderer/features/TreegeRenderer/native/components/DefaultStep.d.ts +3 -0
- package/dist/renderer/features/TreegeRenderer/useTreegeRenderer.d.ts +12 -4
- package/dist/renderer/features/TreegeRenderer/web/components/DefaultStep.d.ts +3 -0
- package/dist/renderer/hooks/useRenderNode.d.ts +1 -3
- package/dist/renderer/index.d.ts +1 -1
- package/dist/renderer/index.native.d.ts +1 -1
- package/dist/renderer/types/renderer.d.ts +43 -5
- package/dist/renderer/utils/step.d.ts +27 -0
- package/dist/renderer-native.js +757 -685
- package/dist/renderer.js +3 -3
- package/dist/shared/locales/ar.json.d.ts +6 -1
- package/dist/shared/locales/de.json.d.ts +6 -1
- package/dist/shared/locales/en.json.d.ts +6 -1
- package/dist/shared/locales/es.json.d.ts +6 -1
- package/dist/shared/locales/fr.json.d.ts +6 -1
- package/dist/shared/locales/it.json.d.ts +6 -1
- package/dist/shared/locales/pt.json.d.ts +6 -1
- package/package.json +1 -1
- package/dist/DefaultInputs-DYKtphqY.js +0 -1701
- package/dist/editor/features/TreegeEditor/nodes/GroupNode.d.ts +0 -6
- package/dist/renderer/features/TreegeRenderer/native/components/DefaultGroup.d.ts +0 -7
- package/dist/renderer/features/TreegeRenderer/web/components/DefaultGroup.d.ts +0 -6
|
@@ -16,7 +16,7 @@ var u = (e) => e?.type === "input", d = (e) => e?.type === "ui", f = (e) => e?.t
|
|
|
16
16
|
submit: "إرسال",
|
|
17
17
|
toggle: "تبديل"
|
|
18
18
|
},
|
|
19
|
-
editor: /* @__PURE__ */ JSON.parse("{\"actionsPanel\":{\"addNode\":\"إضافة عنصر\",\"authorize\":\"Authorize\",\"clear\":\"مسح التدفق\",\"clearSuccess\":\"تم مسح التدفق!\",\"clearSuccessDesc\":\"تم إزالة جميع العقد والحواف.\",\"copyFailed\":\"فشل نسخ معرف التدفق\",\"downloadSuccess\":\"تم التنزيل بنجاح.\",\"downloadSuccessDesc\":\"تم تصدير التدفق بنجاح.\",\"exportJson\":\"تصدير JSON\",\"globalHeaders\":\"Global headers\",\"idCopied\":\"تم نسخ معرف التدفق!\",\"importJson\":\"استيراد JSON\",\"importSuccess\":\"تم الاستيراد بنجاح!\",\"importSuccessDesc\":\"تم استيراد التدفق بنجاح.\",\"invalidJson\":\"ملف JSON غير صالح.\",\"invalidJsonDesc\":\"يجب أن يحتوي الملف على مصفوفات من العقد والحواف.\",\"openApi\":\"OpenAPI\",\"parseError\":\"خطأ في تحليل ملف JSON.\",\"parseErrorDesc\":\"حاول إصلاح الملف واستيراده مرة أخرى.\"},\"aiGenerator\":{\"aiNotConfigured\":\"الذكاء الاصطناعي غير مُهيأ\",\"aiNotConfiguredDesc\":\"أضف خاصية {code} إلى TreegeEditorProvider\",\"buttonLabel\":\"إنشاء باستخدام الذكاء الاصطناعي\",\"cancel\":\"إلغاء\",\"description\":\"الوصف\",\"descriptionPlaceholder\":\"مثال: إنشاء نموذج اتصال مع الاسم والبريد الإلكتروني ورقم الهاتف والرسالة\",\"enterDescription\":\"الرجاء إدخال وصف\",\"failedToGenerate\":\"فشل في إنشاء الشجرة\",\"generate\":\"إنشاء\",\"generating\":\"جارٍ الإنشاء...\",\"keyboardShortcut\":\"اضغط {cmdEnter} أو {ctrlEnter} للإنشاء\",\"missingApiKey\":\"تكوين الذكاء الاصطناعي مفقود\",\"missingApiKeyDesc\":\"الرجاء تكوين مفتاح API الخاص بالذكاء الاصطناعي في TreegeEditorProvider\",\"successDescription\":\"تم إنشاء {nodes} عقدة و {edges} حافة\",\"successTitle\":\"تم إنشاء الشجرة بنجاح!\",\"title\":\"إنشاء تدفق باستخدام الذكاء الاصطناعي\",\"titleDescription\":\"صف النموذج أو شجرة القرار التي تريد إنشاءها، وسيقوم الذكاء الاصطناعي بإنشائها لك.\",\"unknownError\":\"حدث خطأ غير معروف\"},\"apiUrlCombobox\":{\"browseRoutes\":\"Browse OpenAPI routes\",\"noRoutes\":\"No matching route\",\"searchRoutes\":\"Search by method, path, or summary\"},\"authorizeDialog\":{\"apiKeyLabel\":\"API key\",\"apply\":\"Apply\",\"bearerLabel\":\"Bearer token\",\"clear\":\"Clear\",\"description\":\"Authenticate against the API to forward credentials to every request issued by the form.\",\"exchangeFailed\":\"Failed to fetch access token\",\"noSchemes\":\"No supported security schemes are declared in this OpenAPI document.\",\"oauth2PasswordLabel\":\"OAuth2 password\",\"passwordPlaceholder\":\"Password\",\"title\":\"Authorize\",\"usernamePlaceholder\":\"Username\"},\"changeNodeTypeDialog\":{\"description\":\"يحتوي هذا العنصر على عدة فروع صادرة. النوع الجديد يدعم فرعاً واحداً فقط. اختر الفرع الذي تريد الاحتفاظ به؛ سيتم حذف الفروع الأخرى.\",\"keepBranch\":\"الاحتفاظ بهذا الفرع\",\"noConditions\":\"لا توجد شروط\",\"title\":\"تغيير نوع العنصر\"},\"comboboxPattern\":{\"custom\":\"مخصص: {value}\",\"search\":\"البحث عن أنماط...\",\"selectOrCreate\":\"اختر أو أنشئ نمطاً\",\"usePattern\":\"استخدم النمط: {query}\"},\"comboboxWithCreate\":{\"clearSelection\":\"مسح التحديد\",\"noResults\":\"لم يتم العثور على نتائج\"},\"conditionalEdge\":{\"addCondition\":\"إضافة شرط\",\"and\":\"و\",\"condition\":\"شرط\",\"conditions\":\"الشروط\",\"conditionsAnd\":\"شروط (و)\",\"conditionsMixed\":\"شروط (مختلطة)\",\"conditionsOr\":\"شروط (أو)\",\"defineCondition\":\"تعريف شرط\",\"displayConditions\":\"عرض الشروط\",\"displayConditionsDesc\":\"سيتم عرض هذا الحقل إذا تم استيفاء الشروط التالية.\",\"fallback\":\"افتراضي\",\"fallbackPath\":\"المسار الافتراضي / الاحتياطي\",\"fallbackPathDesc\":\"سيتم اتباع هذا المسار عندما لا تتطابق أي شروط أخرى\",\"field\":\"حقل\",\"labelDesc\":\"تسمية مخصصة لزر الشرط\",\"labelOptional\":\"التسمية (اختياري)\",\"labelPlaceholder\":\"مثال: إذا كان مؤهلاً\",\"noFieldsAvailable\":\"لا توجد حقول متاحة\",\"operator\":\"عامل التشغيل\",\"or\":\"أو\",\"removeCondition\":\"إزالة الشرط\",\"selectField\":\"اختر حقلاً\",\"value\":\"قيمة\",\"valuePlaceholder\":\"مثال: 18\"},\"flowNodeForm\":{\"label\":\"التسمية\",\"targetId\":\"معرف الوجهة\",\"targetIdDesc\":\"المعرف الفريد للتدفق المستهدف.\"},\"groupNodeForm\":{\"label\":\"التسمية\"},\"headersDialog\":{\"addHeader\":\"Add header\",\"description\":\"These headers are forwarded to every HTTP request issued by the form (HTTP inputs, submit, options sources). Field-level headers with the same key override these.\",\"empty\":\"No headers yet.\",\"keyPlaceholder\":\"Authorization\",\"removeHeader\":\"Remove header\",\"title\":\"Global headers\",\"valuePlaceholder\":\"Bearer ...\"},\"httpConfigForm\":{\"addHeader\":\"إضافة رأس\",\"apiUrl\":\"رابط API\",\"apiUrlDesc\":\"استخدم متغيرات القالب مثل {{fieldId}} للإشارة إلى الحقول الأخرى\",\"apiUrlPlaceholder\":\"https://api.example.com/data\",\"behavior\":\"السلوك\",\"fetchOnMount\":\"جلب عند التحميل\",\"headerName\":\"اسم الرأس\",\"headers\":\"رؤوس\",\"headerValue\":\"قيمة الرأس\",\"httpMethod\":\"طريقة HTTP\",\"insertVariable\":\"إدراج متغير\",\"labelField\":\"حقل التسمية\",\"labelFieldDesc\":\"الحقل المستخدم كتسمية خيار (مثال: الاسم)\",\"labelFieldPlaceholder\":\"الاسم\",\"mapToOptions\":\"تعيين إلى الخيارات\",\"methodDelete\":\"DELETE\",\"methodGet\":\"GET\",\"methodPatch\":\"PATCH\",\"methodPost\":\"POST\",\"methodPut\":\"PUT\",\"noFieldsAvailable\":\"لا توجد حقول متاحة\",\"requestBody\":\"جسم الطلب (JSON)\",\"requestBodyDesc\":\"استخدم {{fieldId}} للإشارة إلى حقول أخرى. تأكد من تنسيق JSON الصحيح بما في ذلك علامات الاقتباس حول القيم النصية.\",\"requestBodyPlaceholder\":\"{\\\"name\\\": \\\"{{userName}}\\\", \\\"age\\\": {{userAge}}}\",\"responseConfiguration\":\"تكوين الاستجابة\",\"responsePath\":\"مسار الاستجابة\",\"responsePathDesc\":\"استخراج البيانات من الاستجابة باستخدام نقطة التدوين أو فهرسة المصفوفة\",\"responsePathPlaceholder\":\"data.users أو results[0]\",\"searchParameter\":\"معامل البحث (اختياري)\",\"searchParameterDesc\":\"إذا تم تعيينه، يتم تمكين مربع بحث يضيف هذا المعامل إلى استدعاءات API (مثال: ?q=باريس)\",\"searchParameterPlaceholder\":\"q، بحث، استعلام...\",\"selectMethod\":\"اختر الطريقة\",\"sendAllFormValues\":\"إرسال جميع بيانات النموذج\",\"sendAllFormValuesDesc\":\"إرسال جميع قيم النموذج تلقائياً كمحتوى JSON\",\"showLoadingState\":\"إظهار حالة التحميل\",\"valueField\":\"حقل القيمة\",\"valueFieldDesc\":\"الحقل المستخدم كقيمة خيار (مثال: id)\",\"valueFieldPlaceholder\":\"id\"},\"inputNodeForm\":{\"addInputFieldsBeforeReference\":\"أضف حقول إدخال قبل هذه العقدة للإشارة إليها\",\"addMapping\":\"إضافة تعيين\",\"addOption\":\"+ إضافة خيار\",\"advancedConfiguration\":\"تكوين متقدم\",\"defaultChecked\":\"محدد افتراضياً\",\"defaultValuesCommaSeparated\":\"القيم الافتراضية (مفصولة بفواصل)\",\"defaultValuesPlaceholder\":\"قيمة1، قيمة2، قيمة3\",\"defaultValueType\":\"نوع القيمة الافتراضية\",\"defaultValueTypeNone\":\"لا شيء\",\"defaultValueTypeReference\":\"حقل مرجعي\",\"defaultValueTypeStatic\":\"قيمة ثابتة\",\"deleteOption\":\"حذف الخيار\",\"disablePast\":\"تعطيل التواريخ الماضية\",\"editOption\":\"تعديل الخيار\",\"errorMessage\":\"رسالة خطأ\",\"helperText\":\"نص مساعد\",\"httpConfiguration\":\"تكوين HTTP\",\"label\":\"التسمية\",\"multipleFiles\":\"ملفات متعددة\",\"multipleSelection\":\"اختيار متعدد\",\"name\":\"الاسم\",\"nameDescription\":\"اسم حقل مخصص اختياري لتصدير النموذج. إذا كان فارغاً، سيتم استخدام التسمية كمفتاح.\",\"noParentFieldsAvailable\":\"لا توجد حقول أصلية متاحة\",\"objectMapping\":\"تعيين الكائن\",\"objectMappingDesc\":\"تعيين خصائص الكائن المصدر إلى بنية جديدة\",\"optional\":\"اختياري\",\"optionDescription\":\"الوصف\",\"optionImageAdd\":\"إضافة صورة\",\"optionImageError\":\"تعذر معالجة الصورة.\",\"optionImageInvalid\":\"تنسيق صورة غير مدعوم.\",\"optionImageRemove\":\"إزالة الصورة\",\"optionImageReplace\":\"استبدال الصورة\",\"optionImageTooLarge\":\"الصورة كبيرة جدًا (الحد الأقصى 5 ميجابايت).\",\"optionImageUpload\":\"تحميل ملف\",\"optionImageUrlPlaceholder\":\"https://...\",\"optionLabel\":\"التسمية\",\"options\":\"خيارات\",\"optionValue\":\"القيمة\",\"pattern\":\"نمط\",\"placeholder\":\"نص توضيحي\",\"referenceField\":\"حقل مرجعي\",\"required\":\"مطلوب\",\"selectReferenceField\":\"اختر حقلاً\",\"selectTransformation\":\"اختر التحويل\",\"selectType\":\"اختر النوع\",\"sourceKey\":\"مفتاح المصدر\",\"staticValue\":\"قيمة ثابتة\",\"staticValuePlaceholder\":\"أدخل القيمة الافتراضية\",\"submitConfiguration\":\"إعداد الإرسال\",\"targetKey\":\"مفتاح الوجهة\",\"transformArray\":\"تحويل إلى مصفوفة\",\"transformBoolean\":\"تحويل إلى منطقي\",\"transformDesc\":\"تحويل القيمة المرجعية لتتطابق مع نوع هذا الحقل\",\"transformMapToObject\":\"تعيين إلى كائن\",\"transformNone\":\"بدون تحويل\",\"transformNumber\":\"تحويل إلى رقم\",\"transformString\":\"تحويل إلى نص\",\"transformType\":\"نوع التحويل\",\"validation\":\"التحقق\",\"variant\":\"متغير\",\"variantCard\":\"بطاقة\",\"variantDefault\":\"افتراضي\"},\"nodeActionsSheet\":{\"deleteNode\":\"حذف العقدة\",\"deleteNodeConfirm\":\"هل أنت متأكد من أنك تريد حذف هذه العقدة؟\",\"deleteNodeSuccess\":\"تم حذف العقدة بنجاح\",\"editNode\":\"تعديل العقدة\"},\"openApiDialog\":{\"baseUrlHint\":\"Optional. Overrides the document's first server URL — useful when the spec points at a different environment.\",\"baseUrlLabel\":\"Base URL override\",\"clear\":\"Clear\",\"cleared\":\"OpenAPI cleared.\",\"description\":\"Provide an OpenAPI 3.x document to power URL suggestions and Authorize.\",\"emptyInput\":\"Please provide a URL or paste a JSON document.\",\"jsonLabel\":\"Paste your OpenAPI JSON\",\"load\":\"Load\",\"loadFailed\":\"Failed to load OpenAPI document\",\"loadSuccess\":\"OpenAPI loaded.\",\"modeJson\":\"Paste JSON\",\"modeUrl\":\"From URL\",\"title\":\"OpenAPI source\",\"urlLabel\":\"OpenAPI document URL\"},\"optionsSourceForm\":{\"descriptionField\":\"Description\",\"descriptionFieldPlaceholder\":\"Path to description (optional)\",\"detect\":\"Detect fields\",\"detectFailed\":\"Failed to fetch the API.\",\"detectSuccess\":\"Fields detected.\",\"disable\":\"Use static options\",\"dynamicHint\":\"Options are fetched from this API at runtime.\",\"enable\":\"Fetch from API\",\"imageField\":\"Image\",\"imageFieldPlaceholder\":\"Path to image URL (optional)\",\"labelField\":\"Label\",\"labelFieldPlaceholder\":\"Path to label (e.g., name)\",\"noFieldsDetected\":\"No fields detected — check the URL or response path.\",\"none\":\"— None —\",\"previewCount\":\"{count} options detected\",\"responsePath\":\"Response path\",\"responsePathHint\":\"Optional. Use a path like \\\"data.users\\\" if the array is nested.\",\"responsePathPlaceholder\":\"e.g., data.users\",\"staticOptions\":\"Static options\",\"staticOptionsHint\":\"Options are defined manually in the editor.\",\"title\":\"Options source\",\"urlRequired\":\"URL is required.\",\"valueField\":\"Value\",\"valueFieldPlaceholder\":\"Path to value (e.g., id)\"},\"selectInputType\":{\"type\":\"النوع\"},\"selectNodeGroup\":{\"createNewGroup\":\"إنشاء مجموعة جديدة\",\"group\":\"مجموعة\",\"groupAlreadyExists\":\"هذه المجموعة موجودة بالفعل\",\"groupAlreadyExistsDesc\":\"استخدم المحدد لإضافة العقدة إلى مجموعة موجودة.\",\"groupCreated\":\"تم إنشاء المجموعة\",\"groupCreatedDesc\":\"تم إنشاء المجموعة \\\"{groupName}\\\" بنجاح.\",\"groupName\":\"اسم المجموعة\",\"groupNamePlaceholder\":\"مثال: الخطوة 1 - معلومات شخصية\",\"newGroup\":\"مجموعة جديدة\",\"newGroupDescription\":\"سيتم إنشاء المجموعة حول العقدة المحددة.\",\"noGroup\":\"بدون مجموعة\"},\"selectNodeType\":{\"nodeType\":\"نوع العقدة\",\"options\":{\"flow\":\"تدفق خارجي\",\"group\":\"مجموعة\",\"input\":\"سؤال\",\"ui\":\"عنصر تصميم\"}},\"submitConfigForm\":{\"addHeader\":\"إضافة رأس\",\"apiUrl\":\"رابط API\",\"apiUrlDesc\":\"استخدم {{fieldId}} للإشارة إلى حقول أخرى\",\"apiUrlPlaceholder\":\"https://api.example.com/submit\",\"behavior\":\"السلوك\",\"errorMessage\":\"رسالة الخطأ\",\"errorMessageDesc\":\"الرسالة المعروضة عند فشل الإرسال\",\"errorMessagePlaceholder\":\"حدث خطأ. يرجى المحاولة مرة أخرى.\",\"headerName\":\"اسم الرأس\",\"headers\":\"الرؤوس\",\"headerValue\":\"قيمة الرأس\",\"httpMethod\":\"طريقة HTTP\",\"insertVariable\":\"إدراج متغير\",\"methodDelete\":\"DELETE\",\"methodPatch\":\"PATCH\",\"methodPost\":\"POST\",\"methodPut\":\"PUT\",\"noFieldsAvailable\":\"لا توجد حقول متاحة\",\"postSubmission\":\"بعد الإرسال\",\"redirectUrl\":\"رابط إعادة التوجيه\",\"redirectUrlDesc\":\"الرابط الذي سيتم التوجيه إليه بعد نجاح الإرسال\",\"redirectUrlPlaceholder\":\"/success أو https://example.com/thank-you\",\"requestBody\":\"محتوى الطلب (JSON)\",\"requestBodyDesc\":\"استخدم {{fieldId}} للإشارة إلى حقول أخرى. تأكد من تنسيق JSON الصحيح بما في ذلك علامات الاقتباس حول القيم النصية.\",\"requestBodyPlaceholder\":\"{\\\"name\\\": \\\"{{userName}}\\\", \\\"email\\\": \\\"{{userEmail}}\\\"}\",\"selectMethod\":\"اختر الطريقة\",\"sendAllFormValues\":\"إرسال جميع بيانات النموذج\",\"sendAllFormValuesDesc\":\"إرسال جميع قيم النموذج تلقائياً كمحتوى JSON\",\"showLoadingState\":\"إظهار حالة التحميل\",\"successMessage\":\"رسالة النجاح\",\"successMessageDesc\":\"الرسالة المعروضة عند نجاح الإرسال\",\"successMessagePlaceholder\":\"تم إرسال النموذج بنجاح!\"},\"treegeNode\":{\"labelPlaceholder\":\"تسمية...\"},\"uiNodeForm\":{\"label\":\"التسمية\",\"type\":\"النوع\",\"typeDivider\":\"فاصل\",\"typeTitle\":\"عنوان\"}}"),
|
|
19
|
+
editor: /* @__PURE__ */ JSON.parse("{\"actionsPanel\":{\"addNode\":\"إضافة عنصر\",\"authorize\":\"Authorize\",\"clear\":\"مسح التدفق\",\"clearSuccess\":\"تم مسح التدفق!\",\"clearSuccessDesc\":\"تم إزالة جميع العقد والحواف.\",\"copyFailed\":\"فشل نسخ معرف التدفق\",\"downloadSuccess\":\"تم التنزيل بنجاح.\",\"downloadSuccessDesc\":\"تم تصدير التدفق بنجاح.\",\"exportJson\":\"تصدير JSON\",\"globalHeaders\":\"Global headers\",\"idCopied\":\"تم نسخ معرف التدفق!\",\"importJson\":\"استيراد JSON\",\"importSuccess\":\"تم الاستيراد بنجاح!\",\"importSuccessDesc\":\"تم استيراد التدفق بنجاح.\",\"invalidJson\":\"ملف JSON غير صالح.\",\"invalidJsonDesc\":\"يجب أن يحتوي الملف على مصفوفات من العقد والحواف.\",\"openApi\":\"OpenAPI\",\"parseError\":\"خطأ في تحليل ملف JSON.\",\"parseErrorDesc\":\"حاول إصلاح الملف واستيراده مرة أخرى.\"},\"aiGenerator\":{\"aiNotConfigured\":\"الذكاء الاصطناعي غير مُهيأ\",\"aiNotConfiguredDesc\":\"أضف خاصية {code} إلى TreegeEditorProvider\",\"buttonLabel\":\"إنشاء باستخدام الذكاء الاصطناعي\",\"cancel\":\"إلغاء\",\"description\":\"الوصف\",\"descriptionPlaceholder\":\"مثال: إنشاء نموذج اتصال مع الاسم والبريد الإلكتروني ورقم الهاتف والرسالة\",\"enterDescription\":\"الرجاء إدخال وصف\",\"failedToGenerate\":\"فشل في إنشاء الشجرة\",\"generate\":\"إنشاء\",\"generating\":\"جارٍ الإنشاء...\",\"keyboardShortcut\":\"اضغط {cmdEnter} أو {ctrlEnter} للإنشاء\",\"missingApiKey\":\"تكوين الذكاء الاصطناعي مفقود\",\"missingApiKeyDesc\":\"الرجاء تكوين مفتاح API الخاص بالذكاء الاصطناعي في TreegeEditorProvider\",\"successDescription\":\"تم إنشاء {nodes} عقدة و {edges} حافة\",\"successTitle\":\"تم إنشاء الشجرة بنجاح!\",\"title\":\"إنشاء تدفق باستخدام الذكاء الاصطناعي\",\"titleDescription\":\"صف النموذج أو شجرة القرار التي تريد إنشاءها، وسيقوم الذكاء الاصطناعي بإنشائها لك.\",\"unknownError\":\"حدث خطأ غير معروف\"},\"apiUrlCombobox\":{\"browseRoutes\":\"Browse OpenAPI routes\",\"noRoutes\":\"No matching route\",\"searchRoutes\":\"Search by method, path, or summary\"},\"authorizeDialog\":{\"apiKeyLabel\":\"API key\",\"apply\":\"Apply\",\"bearerLabel\":\"Bearer token\",\"clear\":\"Clear\",\"description\":\"Authenticate against the API to forward credentials to every request issued by the form.\",\"exchangeFailed\":\"Failed to fetch access token\",\"noSchemes\":\"No supported security schemes are declared in this OpenAPI document.\",\"oauth2PasswordLabel\":\"OAuth2 password\",\"passwordPlaceholder\":\"Password\",\"title\":\"Authorize\",\"usernamePlaceholder\":\"Username\"},\"changeNodeTypeDialog\":{\"description\":\"يحتوي هذا العنصر على عدة فروع صادرة. النوع الجديد يدعم فرعاً واحداً فقط. اختر الفرع الذي تريد الاحتفاظ به؛ سيتم حذف الفروع الأخرى.\",\"keepBranch\":\"الاحتفاظ بهذا الفرع\",\"noConditions\":\"لا توجد شروط\",\"title\":\"تغيير نوع العنصر\"},\"comboboxPattern\":{\"custom\":\"مخصص: {value}\",\"search\":\"البحث عن أنماط...\",\"selectOrCreate\":\"اختر أو أنشئ نمطاً\",\"usePattern\":\"استخدم النمط: {query}\"},\"comboboxWithCreate\":{\"clearSelection\":\"مسح التحديد\",\"noResults\":\"لم يتم العثور على نتائج\"},\"conditionalEdge\":{\"addCondition\":\"إضافة شرط\",\"and\":\"و\",\"condition\":\"شرط\",\"conditions\":\"الشروط\",\"conditionsAnd\":\"شروط (و)\",\"conditionsMixed\":\"شروط (مختلطة)\",\"conditionsOr\":\"شروط (أو)\",\"defineCondition\":\"تعريف شرط\",\"displayConditions\":\"عرض الشروط\",\"displayConditionsDesc\":\"سيتم عرض هذا الحقل إذا تم استيفاء الشروط التالية.\",\"fallback\":\"افتراضي\",\"fallbackPath\":\"المسار الافتراضي / الاحتياطي\",\"fallbackPathDesc\":\"سيتم اتباع هذا المسار عندما لا تتطابق أي شروط أخرى\",\"field\":\"حقل\",\"labelDesc\":\"تسمية مخصصة لزر الشرط\",\"labelOptional\":\"التسمية (اختياري)\",\"labelPlaceholder\":\"مثال: إذا كان مؤهلاً\",\"noFieldsAvailable\":\"لا توجد حقول متاحة\",\"operator\":\"عامل التشغيل\",\"or\":\"أو\",\"removeCondition\":\"إزالة الشرط\",\"selectField\":\"اختر حقلاً\",\"value\":\"قيمة\",\"valuePlaceholder\":\"مثال: 18\"},\"flowNodeForm\":{\"label\":\"التسمية\",\"targetId\":\"معرف الوجهة\",\"targetIdDesc\":\"المعرف الفريد للتدفق المستهدف.\"},\"groupNodeForm\":{\"label\":\"التسمية\"},\"headersDialog\":{\"addHeader\":\"Add header\",\"description\":\"These headers are forwarded to every HTTP request issued by the form (HTTP inputs, submit, options sources). Field-level headers with the same key override these.\",\"empty\":\"No headers yet.\",\"keyPlaceholder\":\"Authorization\",\"removeHeader\":\"Remove header\",\"title\":\"Global headers\",\"valuePlaceholder\":\"Bearer ...\"},\"httpConfigForm\":{\"addHeader\":\"إضافة رأس\",\"apiUrl\":\"رابط API\",\"apiUrlDesc\":\"استخدم متغيرات القالب مثل {{fieldId}} للإشارة إلى الحقول الأخرى\",\"apiUrlPlaceholder\":\"https://api.example.com/data\",\"behavior\":\"السلوك\",\"fetchOnMount\":\"جلب عند التحميل\",\"headerName\":\"اسم الرأس\",\"headers\":\"رؤوس\",\"headerValue\":\"قيمة الرأس\",\"httpMethod\":\"طريقة HTTP\",\"insertVariable\":\"إدراج متغير\",\"labelField\":\"حقل التسمية\",\"labelFieldDesc\":\"الحقل المستخدم كتسمية خيار (مثال: الاسم)\",\"labelFieldPlaceholder\":\"الاسم\",\"mapToOptions\":\"تعيين إلى الخيارات\",\"methodDelete\":\"DELETE\",\"methodGet\":\"GET\",\"methodPatch\":\"PATCH\",\"methodPost\":\"POST\",\"methodPut\":\"PUT\",\"noFieldsAvailable\":\"لا توجد حقول متاحة\",\"requestBody\":\"جسم الطلب (JSON)\",\"requestBodyDesc\":\"استخدم {{fieldId}} للإشارة إلى حقول أخرى. تأكد من تنسيق JSON الصحيح بما في ذلك علامات الاقتباس حول القيم النصية.\",\"requestBodyPlaceholder\":\"{\\\"name\\\": \\\"{{userName}}\\\", \\\"age\\\": {{userAge}}}\",\"responseConfiguration\":\"تكوين الاستجابة\",\"responsePath\":\"مسار الاستجابة\",\"responsePathDesc\":\"استخراج البيانات من الاستجابة باستخدام نقطة التدوين أو فهرسة المصفوفة\",\"responsePathPlaceholder\":\"data.users أو results[0]\",\"searchParameter\":\"معامل البحث (اختياري)\",\"searchParameterDesc\":\"إذا تم تعيينه، يتم تمكين مربع بحث يضيف هذا المعامل إلى استدعاءات API (مثال: ?q=باريس)\",\"searchParameterPlaceholder\":\"q، بحث، استعلام...\",\"selectMethod\":\"اختر الطريقة\",\"sendAllFormValues\":\"إرسال جميع بيانات النموذج\",\"sendAllFormValuesDesc\":\"إرسال جميع قيم النموذج تلقائياً كمحتوى JSON\",\"showLoadingState\":\"إظهار حالة التحميل\",\"valueField\":\"حقل القيمة\",\"valueFieldDesc\":\"الحقل المستخدم كقيمة خيار (مثال: id)\",\"valueFieldPlaceholder\":\"id\"},\"inputNodeForm\":{\"addInputFieldsBeforeReference\":\"أضف حقول إدخال قبل هذه العقدة للإشارة إليها\",\"addMapping\":\"إضافة تعيين\",\"addOption\":\"+ إضافة خيار\",\"advancedConfiguration\":\"تكوين متقدم\",\"defaultChecked\":\"محدد افتراضياً\",\"defaultValuesCommaSeparated\":\"القيم الافتراضية (مفصولة بفواصل)\",\"defaultValuesPlaceholder\":\"قيمة1، قيمة2، قيمة3\",\"defaultValueType\":\"نوع القيمة الافتراضية\",\"defaultValueTypeNone\":\"لا شيء\",\"defaultValueTypeReference\":\"حقل مرجعي\",\"defaultValueTypeStatic\":\"قيمة ثابتة\",\"deleteOption\":\"حذف الخيار\",\"disablePast\":\"تعطيل التواريخ الماضية\",\"editOption\":\"تعديل الخيار\",\"errorMessage\":\"رسالة خطأ\",\"helperText\":\"نص مساعد\",\"httpConfiguration\":\"تكوين HTTP\",\"label\":\"التسمية\",\"multipleFiles\":\"ملفات متعددة\",\"multipleSelection\":\"اختيار متعدد\",\"name\":\"الاسم\",\"nameDescription\":\"اسم حقل مخصص اختياري لتصدير النموذج. إذا كان فارغاً، سيتم استخدام التسمية كمفتاح.\",\"noParentFieldsAvailable\":\"لا توجد حقول أصلية متاحة\",\"objectMapping\":\"تعيين الكائن\",\"objectMappingDesc\":\"تعيين خصائص الكائن المصدر إلى بنية جديدة\",\"optional\":\"اختياري\",\"optionDescription\":\"الوصف\",\"optionImageAdd\":\"إضافة صورة\",\"optionImageError\":\"تعذر معالجة الصورة.\",\"optionImageInvalid\":\"تنسيق صورة غير مدعوم.\",\"optionImageRemove\":\"إزالة الصورة\",\"optionImageReplace\":\"استبدال الصورة\",\"optionImageTooLarge\":\"الصورة كبيرة جدًا (الحد الأقصى 5 ميجابايت).\",\"optionImageUpload\":\"تحميل ملف\",\"optionImageUrlPlaceholder\":\"https://...\",\"optionLabel\":\"التسمية\",\"options\":\"خيارات\",\"optionValue\":\"القيمة\",\"pattern\":\"نمط\",\"placeholder\":\"نص توضيحي\",\"referenceField\":\"حقل مرجعي\",\"required\":\"مطلوب\",\"selectReferenceField\":\"اختر حقلاً\",\"selectTransformation\":\"اختر التحويل\",\"selectType\":\"اختر النوع\",\"sourceKey\":\"مفتاح المصدر\",\"staticValue\":\"قيمة ثابتة\",\"staticValuePlaceholder\":\"أدخل القيمة الافتراضية\",\"submitConfiguration\":\"إعداد الإرسال\",\"targetKey\":\"مفتاح الوجهة\",\"transformArray\":\"تحويل إلى مصفوفة\",\"transformBoolean\":\"تحويل إلى منطقي\",\"transformDesc\":\"تحويل القيمة المرجعية لتتطابق مع نوع هذا الحقل\",\"transformMapToObject\":\"تعيين إلى كائن\",\"transformNone\":\"بدون تحويل\",\"transformNumber\":\"تحويل إلى رقم\",\"transformString\":\"تحويل إلى نص\",\"transformType\":\"نوع التحويل\",\"validation\":\"التحقق\",\"variant\":\"متغير\",\"variantCard\":\"بطاقة\",\"variantDefault\":\"افتراضي\"},\"nodeActionsSheet\":{\"deleteNode\":\"حذف العقدة\",\"deleteNodeConfirm\":\"هل أنت متأكد من أنك تريد حذف هذه العقدة؟\",\"deleteNodeSuccess\":\"تم حذف العقدة بنجاح\",\"editNode\":\"تعديل العقدة\"},\"openApiDialog\":{\"baseUrlHint\":\"Optional. Overrides the document's first server URL — useful when the spec points at a different environment.\",\"baseUrlLabel\":\"Base URL override\",\"clear\":\"Clear\",\"cleared\":\"OpenAPI cleared.\",\"description\":\"Provide an OpenAPI 3.x document to power URL suggestions and Authorize.\",\"emptyInput\":\"Please provide a URL or paste a JSON document.\",\"jsonLabel\":\"Paste your OpenAPI JSON\",\"load\":\"Load\",\"loadFailed\":\"Failed to load OpenAPI document\",\"loadSuccess\":\"OpenAPI loaded.\",\"modeJson\":\"Paste JSON\",\"modeUrl\":\"From URL\",\"title\":\"OpenAPI source\",\"urlLabel\":\"OpenAPI document URL\"},\"optionsSourceForm\":{\"descriptionField\":\"Description\",\"descriptionFieldPlaceholder\":\"Path to description (optional)\",\"detect\":\"Detect fields\",\"detectFailed\":\"Failed to fetch the API.\",\"detectSuccess\":\"Fields detected.\",\"disable\":\"Use static options\",\"dynamicHint\":\"Options are fetched from this API at runtime.\",\"enable\":\"Fetch from API\",\"imageField\":\"Image\",\"imageFieldPlaceholder\":\"Path to image URL (optional)\",\"labelField\":\"Label\",\"labelFieldPlaceholder\":\"Path to label (e.g., name)\",\"noFieldsDetected\":\"No fields detected — check the URL or response path.\",\"none\":\"— None —\",\"previewCount\":\"{count} options detected\",\"responsePath\":\"Response path\",\"responsePathHint\":\"Optional. Use a path like \\\"data.users\\\" if the array is nested.\",\"responsePathPlaceholder\":\"e.g., data.users\",\"staticOptions\":\"Static options\",\"staticOptionsHint\":\"Options are defined manually in the editor.\",\"title\":\"Options source\",\"urlRequired\":\"URL is required.\",\"valueField\":\"Value\",\"valueFieldPlaceholder\":\"Path to value (e.g., id)\"},\"selectInputType\":{\"type\":\"النوع\"},\"selectNodeGroup\":{\"createNewGroup\":\"إنشاء مجموعة جديدة\",\"group\":\"مجموعة\",\"groupAlreadyExists\":\"هذه المجموعة موجودة بالفعل\",\"groupAlreadyExistsDesc\":\"استخدم المحدد لإضافة العقدة إلى مجموعة موجودة.\",\"groupCreated\":\"تم إنشاء المجموعة\",\"groupCreatedDesc\":\"تم إنشاء المجموعة \\\"{groupName}\\\" بنجاح.\",\"groupName\":\"اسم المجموعة\",\"groupNamePlaceholder\":\"مثال: الخطوة 1 - معلومات شخصية\",\"newGroup\":\"مجموعة جديدة\",\"newGroupDescription\":\"سيتم إنشاء المجموعة حول العقدة المحددة.\",\"noGroup\":\"بدون مجموعة\",\"renameGroup\":\"إعادة تسمية المجموعة\"},\"selectNodeType\":{\"nodeType\":\"نوع العقدة\",\"options\":{\"flow\":\"تدفق خارجي\",\"group\":\"مجموعة\",\"input\":\"سؤال\",\"ui\":\"عنصر تصميم\"}},\"submitConfigForm\":{\"addHeader\":\"إضافة رأس\",\"apiUrl\":\"رابط API\",\"apiUrlDesc\":\"استخدم {{fieldId}} للإشارة إلى حقول أخرى\",\"apiUrlPlaceholder\":\"https://api.example.com/submit\",\"behavior\":\"السلوك\",\"errorMessage\":\"رسالة الخطأ\",\"errorMessageDesc\":\"الرسالة المعروضة عند فشل الإرسال\",\"errorMessagePlaceholder\":\"حدث خطأ. يرجى المحاولة مرة أخرى.\",\"headerName\":\"اسم الرأس\",\"headers\":\"الرؤوس\",\"headerValue\":\"قيمة الرأس\",\"httpMethod\":\"طريقة HTTP\",\"insertVariable\":\"إدراج متغير\",\"methodDelete\":\"DELETE\",\"methodPatch\":\"PATCH\",\"methodPost\":\"POST\",\"methodPut\":\"PUT\",\"noFieldsAvailable\":\"لا توجد حقول متاحة\",\"postSubmission\":\"بعد الإرسال\",\"redirectUrl\":\"رابط إعادة التوجيه\",\"redirectUrlDesc\":\"الرابط الذي سيتم التوجيه إليه بعد نجاح الإرسال\",\"redirectUrlPlaceholder\":\"/success أو https://example.com/thank-you\",\"requestBody\":\"محتوى الطلب (JSON)\",\"requestBodyDesc\":\"استخدم {{fieldId}} للإشارة إلى حقول أخرى. تأكد من تنسيق JSON الصحيح بما في ذلك علامات الاقتباس حول القيم النصية.\",\"requestBodyPlaceholder\":\"{\\\"name\\\": \\\"{{userName}}\\\", \\\"email\\\": \\\"{{userEmail}}\\\"}\",\"selectMethod\":\"اختر الطريقة\",\"sendAllFormValues\":\"إرسال جميع بيانات النموذج\",\"sendAllFormValuesDesc\":\"إرسال جميع قيم النموذج تلقائياً كمحتوى JSON\",\"showLoadingState\":\"إظهار حالة التحميل\",\"successMessage\":\"رسالة النجاح\",\"successMessageDesc\":\"الرسالة المعروضة عند نجاح الإرسال\",\"successMessagePlaceholder\":\"تم إرسال النموذج بنجاح!\"},\"treegeNode\":{\"labelPlaceholder\":\"تسمية...\"},\"uiNodeForm\":{\"label\":\"التسمية\",\"type\":\"النوع\",\"typeDivider\":\"فاصل\",\"typeTitle\":\"عنوان\"}}"),
|
|
20
20
|
renderer: {
|
|
21
21
|
defaultAddressInput: {
|
|
22
22
|
enterAddress: "أدخل عنواناً...",
|
|
@@ -63,6 +63,10 @@ var u = (e) => e?.type === "input", d = (e) => e?.type === "ui", f = (e) => e?.t
|
|
|
63
63
|
defaultSubmitButton: {
|
|
64
64
|
requiredFieldsMissing: "حقول مطلوبة مفقودة:",
|
|
65
65
|
submit: "إرسال"
|
|
66
|
+
},
|
|
67
|
+
step: {
|
|
68
|
+
back: "رجوع",
|
|
69
|
+
continue: "متابعة"
|
|
66
70
|
}
|
|
67
71
|
},
|
|
68
72
|
validation: {
|
|
@@ -83,7 +87,7 @@ var u = (e) => e?.type === "input", d = (e) => e?.type === "ui", f = (e) => e?.t
|
|
|
83
87
|
submit: "Senden",
|
|
84
88
|
toggle: "Umschalten"
|
|
85
89
|
},
|
|
86
|
-
editor: /* @__PURE__ */ JSON.parse("{\"actionsPanel\":{\"addNode\":\"Element hinzufügen\",\"authorize\":\"Authorize\",\"clear\":\"Löschen\",\"clearSuccess\":\"Fluss geleert!\",\"clearSuccessDesc\":\"Alle Knoten und Kanten wurden entfernt.\",\"copyFailed\":\"Kopieren der Flow‑ID fehlgeschlagen\",\"downloadSuccess\":\"Download erfolgreich.\",\"downloadSuccessDesc\":\"Der Ablauf wurde erfolgreich exportiert.\",\"exportJson\":\"JSON exportieren\",\"globalHeaders\":\"Global headers\",\"idCopied\":\"Flow‑ID kopiert!\",\"importJson\":\"JSON importieren\",\"importSuccess\":\"Import erfolgreich!\",\"importSuccessDesc\":\"Der Ablauf wurde erfolgreich importiert.\",\"invalidJson\":\"Ungültige JSON-Datei.\",\"invalidJsonDesc\":\"Die Datei muss Knoten- und Kanten-Arrays enthalten.\",\"openApi\":\"OpenAPI\",\"parseError\":\"Fehler beim Parsen der JSON-Datei.\",\"parseErrorDesc\":\"Versuchen Sie, die Datei zu korrigieren und erneut zu importieren.\"},\"aiGenerator\":{\"aiNotConfigured\":\"KI nicht konfiguriert\",\"aiNotConfiguredDesc\":\"Fügen Sie {code} Prop zu TreegeEditorProvider hinzu\",\"buttonLabel\":\"Mit KI generieren\",\"cancel\":\"Abbrechen\",\"description\":\"Beschreibung\",\"descriptionPlaceholder\":\"Beispiel: Erstellen Sie ein Kontaktformular mit Name, E-Mail, Telefonnummer und Nachricht\",\"enterDescription\":\"Bitte geben Sie eine Beschreibung ein\",\"failedToGenerate\":\"Fehler beim Generieren des Baums\",\"generate\":\"Generieren\",\"generating\":\"Wird generiert...\",\"keyboardShortcut\":\"Drücken Sie {cmdEnter} oder {ctrlEnter} zum Generieren\",\"missingApiKey\":\"KI-Konfiguration fehlt\",\"missingApiKeyDesc\":\"Bitte konfigurieren Sie Ihren KI-API-Schlüssel in TreegeEditorProvider\",\"successDescription\":\"{nodes} Knoten und {edges} Kanten erstellt\",\"successTitle\":\"Baum erfolgreich generiert!\",\"title\":\"Flow mit KI generieren\",\"titleDescription\":\"Beschreiben Sie das Formular oder den Entscheidungsbaum, den Sie erstellen möchten, und die KI wird ihn für Sie generieren.\",\"unknownError\":\"Unbekannter Fehler aufgetreten\"},\"apiUrlCombobox\":{\"browseRoutes\":\"Browse OpenAPI routes\",\"noRoutes\":\"No matching route\",\"searchRoutes\":\"Search by method, path, or summary\"},\"authorizeDialog\":{\"apiKeyLabel\":\"API key\",\"apply\":\"Apply\",\"bearerLabel\":\"Bearer token\",\"clear\":\"Clear\",\"description\":\"Authenticate against the API to forward credentials to every request issued by the form.\",\"exchangeFailed\":\"Failed to fetch access token\",\"noSchemes\":\"No supported security schemes are declared in this OpenAPI document.\",\"oauth2PasswordLabel\":\"OAuth2 password\",\"passwordPlaceholder\":\"Password\",\"title\":\"Authorize\",\"usernamePlaceholder\":\"Username\"},\"changeNodeTypeDialog\":{\"description\":\"Dieser Knoten hat mehrere ausgehende Verzweigungen. Der neue Typ unterstützt nur eine. Wählen Sie, welche Verzweigung beibehalten werden soll; die anderen werden entfernt.\",\"keepBranch\":\"Diese Verzweigung behalten\",\"noConditions\":\"Keine Bedingungen\",\"title\":\"Knotentyp ändern\"},\"comboboxPattern\":{\"custom\":\"Benutzerdefiniert: {value}\",\"search\":\"Muster suchen...\",\"selectOrCreate\":\"Muster auswählen oder erstellen\",\"usePattern\":\"Muster verwenden: {query}\"},\"comboboxWithCreate\":{\"clearSelection\":\"Auswahl löschen\",\"noResults\":\"Keine Ergebnisse gefunden\"},\"conditionalEdge\":{\"addCondition\":\"Bedingung hinzufügen\",\"and\":\"UND\",\"condition\":\"Bedingung\",\"conditions\":\"Bedingungen\",\"conditionsAnd\":\"Bedingungen (UND)\",\"conditionsMixed\":\"Bedingungen (gemischt)\",\"conditionsOr\":\"Bedingungen (ODER)\",\"defineCondition\":\"Bedingung definieren\",\"displayConditions\":\"Bedingungen anzeigen\",\"displayConditionsDesc\":\"Dieses Feld wird angezeigt, wenn die folgenden Bedingungen erfüllt sind.\",\"fallback\":\"Standard\",\"fallbackPath\":\"Standard- / Fallback-Pfad\",\"fallbackPathDesc\":\"Dieser Pfad wird befolgt, wenn keine andere Bedingung zutrifft\",\"field\":\"Feld\",\"labelDesc\":\"Benutzerdefinierte Bezeichnung für die Bedingungsschaltfläche\",\"labelOptional\":\"Bezeichnung (optional)\",\"labelPlaceholder\":\"z.B.: Wenn berechtigt\",\"noFieldsAvailable\":\"Keine Felder verfügbar\",\"operator\":\"Operator\",\"or\":\"ODER\",\"removeCondition\":\"Bedingung entfernen\",\"selectField\":\"Feld auswählen\",\"value\":\"Wert\",\"valuePlaceholder\":\"z.B.: 18\"},\"flowNodeForm\":{\"label\":\"Bezeichnung\",\"targetId\":\"Ziel-ID\",\"targetIdDesc\":\"Eindeutige Kennung des Zielablaufs.\"},\"groupNodeForm\":{\"label\":\"Bezeichnung\"},\"headersDialog\":{\"addHeader\":\"Add header\",\"description\":\"These headers are forwarded to every HTTP request issued by the form (HTTP inputs, submit, options sources). Field-level headers with the same key override these.\",\"empty\":\"No headers yet.\",\"keyPlaceholder\":\"Authorization\",\"removeHeader\":\"Remove header\",\"title\":\"Global headers\",\"valuePlaceholder\":\"Bearer ...\"},\"httpConfigForm\":{\"addHeader\":\"Header hinzufügen\",\"apiUrl\":\"API-URL\",\"apiUrlDesc\":\"Verwenden Sie Vorlagenvariablen wie {{fieldId}}, um andere Felder zu referenzieren\",\"apiUrlPlaceholder\":\"https://api.beispiel.com/data\",\"behavior\":\"Verhalten\",\"fetchOnMount\":\"Beim Laden abrufen\",\"headerName\":\"Header-Name\",\"headers\":\"Header\",\"headerValue\":\"Header-Wert\",\"httpMethod\":\"HTTP-Methode\",\"insertVariable\":\"Variable einfügen\",\"labelField\":\"Bezeichnungsfeld\",\"labelFieldDesc\":\"Feld, das als Optionsbezeichnung verwendet werden soll (z.B. name)\",\"labelFieldPlaceholder\":\"name\",\"mapToOptions\":\"Auf Optionen abbilden\",\"methodDelete\":\"DELETE\",\"methodGet\":\"GET\",\"methodPatch\":\"PATCH\",\"methodPost\":\"POST\",\"methodPut\":\"PUT\",\"noFieldsAvailable\":\"Keine Felder verfügbar\",\"requestBody\":\"Anfrage-Body (JSON)\",\"requestBodyDesc\":\"Verwenden Sie {{fieldId}}, um andere Felder zu referenzieren. Stellen Sie sicher, dass die JSON-Formatierung korrekt ist, einschließlich Anführungszeichen um Zeichenkettenwerte.\",\"requestBodyPlaceholder\":\"{\\\"name\\\": \\\"{{benutzername}}\\\", \\\"alter\\\": {{benutzeralter}}}\",\"responseConfiguration\":\"Antwort-Konfiguration\",\"responsePath\":\"Antwortpfad\",\"responsePathDesc\":\"Daten aus der Antwort mit Punktnotation oder Array-Indizierung extrahieren\",\"responsePathPlaceholder\":\"data.users oder results[0]\",\"searchParameter\":\"Suchparameter (optional)\",\"searchParameterDesc\":\"Wenn festgelegt, aktiviert eine Suchbox, die diesen Parameter zu API-Aufrufen hinzufügt (z.B. ?q=Paris)\",\"searchParameterPlaceholder\":\"q, suche, abfrage...\",\"selectMethod\":\"Methode auswählen\",\"sendAllFormValues\":\"Alle Formulardaten senden\",\"sendAllFormValuesDesc\":\"Alle Formularwerte automatisch als JSON-Body senden\",\"showLoadingState\":\"Ladezustand anzeigen\",\"valueField\":\"Wertfeld\",\"valueFieldDesc\":\"Feld, das als Optionswert verwendet werden soll (z.B. id)\",\"valueFieldPlaceholder\":\"id\"},\"inputNodeForm\":{\"addInputFieldsBeforeReference\":\"Fügen Sie Eingabefelder vor diesem Knoten hinzu, um sie zu referenzieren\",\"addMapping\":\"Zuordnung hinzufügen\",\"addOption\":\"Option hinzufügen\",\"advancedConfiguration\":\"Erweiterte Konfiguration\",\"defaultChecked\":\"Standardmäßig aktiviert\",\"defaultValuesCommaSeparated\":\"Standardwerte (durch Kommas getrennt)\",\"defaultValuesPlaceholder\":\"wert1, wert2, wert3\",\"defaultValueType\":\"Standardwerttyp\",\"defaultValueTypeNone\":\"Keiner\",\"defaultValueTypeReference\":\"Referenzfeld\",\"defaultValueTypeStatic\":\"Statischer Wert\",\"deleteOption\":\"Option löschen\",\"disablePast\":\"Vergangene Daten deaktivieren\",\"editOption\":\"Option bearbeiten\",\"errorMessage\":\"Fehlermeldung\",\"helperText\":\"Hilfetext\",\"httpConfiguration\":\"HTTP-Konfiguration\",\"label\":\"Bezeichnung\",\"multipleFiles\":\"Mehrere Dateien\",\"multipleSelection\":\"Mehrfachauswahl\",\"name\":\"Name\",\"nameDescription\":\"Optionaler benutzerdefinierter Feldname für den Formularexport. Falls leer, wird die Bezeichnung als Schlüssel verwendet.\",\"noParentFieldsAvailable\":\"Keine übergeordneten Felder verfügbar\",\"objectMapping\":\"Objektzuordnung\",\"objectMappingDesc\":\"Eigenschaften des Quellobjekts auf eine neue Struktur abbilden\",\"optional\":\"Optional\",\"optionDescription\":\"Beschreibung\",\"optionImageAdd\":\"Bild hinzufügen\",\"optionImageError\":\"Bild konnte nicht verarbeitet werden.\",\"optionImageInvalid\":\"Nicht unterstütztes Bildformat.\",\"optionImageRemove\":\"Bild entfernen\",\"optionImageReplace\":\"Bild ersetzen\",\"optionImageTooLarge\":\"Bild zu groß (max. 5 MB).\",\"optionImageUpload\":\"Datei hochladen\",\"optionImageUrlPlaceholder\":\"https://...\",\"optionLabel\":\"Bezeichnung\",\"options\":\"Optionen\",\"optionValue\":\"Wert\",\"pattern\":\"Muster\",\"placeholder\":\"Platzhalter\",\"referenceField\":\"Referenzfeld\",\"required\":\"Erforderlich\",\"selectReferenceField\":\"Feld auswählen\",\"selectTransformation\":\"Transformation auswählen\",\"selectType\":\"Typ auswählen\",\"sourceKey\":\"Quellschlüssel\",\"staticValue\":\"Statischer Wert\",\"staticValuePlaceholder\":\"Standardwert eingeben\",\"submitConfiguration\":\"Übermittlungskonfiguration\",\"targetKey\":\"Zielschlüssel\",\"transformArray\":\"In Array konvertieren\",\"transformBoolean\":\"In Boolean konvertieren\",\"transformDesc\":\"Den referenzierten Wert transformieren, um dem Typ dieses Feldes zu entsprechen\",\"transformMapToObject\":\"Auf Objekt abbilden\",\"transformNone\":\"Keine Transformation\",\"transformNumber\":\"In Zahl konvertieren\",\"transformString\":\"In String konvertieren\",\"transformType\":\"Transformationstyp\",\"validation\":\"Validierung\",\"variant\":\"Variante\",\"variantCard\":\"Karte\",\"variantDefault\":\"Standard\"},\"nodeActionsSheet\":{\"deleteNode\":\"Knoten löschen\",\"deleteNodeConfirm\":\"Sind Sie sicher, dass Sie diesen Knoten löschen möchten?\",\"deleteNodeSuccess\":\"Knoten erfolgreich gelöscht\",\"editNode\":\"Knoten bearbeiten\"},\"openApiDialog\":{\"baseUrlHint\":\"Optional. Overrides the document's first server URL — useful when the spec points at a different environment.\",\"baseUrlLabel\":\"Base URL override\",\"clear\":\"Clear\",\"cleared\":\"OpenAPI cleared.\",\"description\":\"Provide an OpenAPI 3.x document to power URL suggestions and Authorize.\",\"emptyInput\":\"Please provide a URL or paste a JSON document.\",\"jsonLabel\":\"Paste your OpenAPI JSON\",\"load\":\"Load\",\"loadFailed\":\"Failed to load OpenAPI document\",\"loadSuccess\":\"OpenAPI loaded.\",\"modeJson\":\"Paste JSON\",\"modeUrl\":\"From URL\",\"title\":\"OpenAPI source\",\"urlLabel\":\"OpenAPI document URL\"},\"optionsSourceForm\":{\"descriptionField\":\"Description\",\"descriptionFieldPlaceholder\":\"Path to description (optional)\",\"detect\":\"Detect fields\",\"detectFailed\":\"Failed to fetch the API.\",\"detectSuccess\":\"Fields detected.\",\"disable\":\"Use static options\",\"dynamicHint\":\"Options are fetched from this API at runtime.\",\"enable\":\"Fetch from API\",\"imageField\":\"Image\",\"imageFieldPlaceholder\":\"Path to image URL (optional)\",\"labelField\":\"Label\",\"labelFieldPlaceholder\":\"Path to label (e.g., name)\",\"noFieldsDetected\":\"No fields detected — check the URL or response path.\",\"none\":\"— None —\",\"previewCount\":\"{count} options detected\",\"responsePath\":\"Response path\",\"responsePathHint\":\"Optional. Use a path like \\\"data.users\\\" if the array is nested.\",\"responsePathPlaceholder\":\"e.g., data.users\",\"staticOptions\":\"Static options\",\"staticOptionsHint\":\"Options are defined manually in the editor.\",\"title\":\"Options source\",\"urlRequired\":\"URL is required.\",\"valueField\":\"Value\",\"valueFieldPlaceholder\":\"Path to value (e.g., id)\"},\"selectInputType\":{\"type\":\"Typ\"},\"selectNodeGroup\":{\"createNewGroup\":\"Neue Gruppe erstellen\",\"group\":\"Gruppe\",\"groupAlreadyExists\":\"Diese Gruppe existiert bereits\",\"groupAlreadyExistsDesc\":\"Verwenden Sie den Selektor, um den Knoten zu einer vorhandenen Gruppe hinzuzufügen.\",\"groupCreated\":\"Gruppe erstellt\",\"groupCreatedDesc\":\"Die Gruppe \\\"{groupName}\\\" wurde erfolgreich erstellt.\",\"groupName\":\"Gruppenname\",\"groupNamePlaceholder\":\"z.B.: Schritt 1 - Persönliche Informationen\",\"newGroup\":\"Neue Gruppe\",\"newGroupDescription\":\"Die Gruppe wird um den ausgewählten Knoten herum erstellt.\",\"noGroup\":\"Keine Gruppe\"},\"selectNodeType\":{\"nodeType\":\"Knotentyp\",\"options\":{\"flow\":\"Externer Ablauf\",\"group\":\"Gruppe\",\"input\":\"Frage\",\"ui\":\"Designelement\"}},\"submitConfigForm\":{\"addHeader\":\"Header hinzufügen\",\"apiUrl\":\"API-URL\",\"apiUrlDesc\":\"Verwenden Sie {{fieldId}}, um andere Felder zu referenzieren\",\"apiUrlPlaceholder\":\"https://api.beispiel.de/submit\",\"behavior\":\"Verhalten\",\"errorMessage\":\"Fehlermeldung\",\"errorMessageDesc\":\"Nachricht, die bei fehlgeschlagener Übermittlung angezeigt wird\",\"errorMessagePlaceholder\":\"Ein Fehler ist aufgetreten. Bitte versuchen Sie es erneut.\",\"headerName\":\"Header-Name\",\"headers\":\"Header\",\"headerValue\":\"Header-Wert\",\"httpMethod\":\"HTTP-Methode\",\"insertVariable\":\"Variable einfügen\",\"methodDelete\":\"DELETE\",\"methodPatch\":\"PATCH\",\"methodPost\":\"POST\",\"methodPut\":\"PUT\",\"noFieldsAvailable\":\"Keine Felder verfügbar\",\"postSubmission\":\"Nach dem Absenden\",\"redirectUrl\":\"Weiterleitungs-URL\",\"redirectUrlDesc\":\"URL, zu der nach erfolgreicher Übermittlung weitergeleitet wird\",\"redirectUrlPlaceholder\":\"/success oder https://beispiel.de/danke\",\"requestBody\":\"Anfragekörper (JSON)\",\"requestBodyDesc\":\"Verwenden Sie {{fieldId}}, um andere Felder zu referenzieren. Stellen Sie sicher, dass die JSON-Formatierung korrekt ist, einschließlich Anführungszeichen um Zeichenkettenwerte.\",\"requestBodyPlaceholder\":\"{\\\"name\\\": \\\"{{benutzername}}\\\", \\\"email\\\": \\\"{{benutzeremail}}\\\"}\",\"selectMethod\":\"Methode auswählen\",\"sendAllFormValues\":\"Alle Formulardaten senden\",\"sendAllFormValuesDesc\":\"Alle Formularwerte automatisch als JSON-Body senden\",\"showLoadingState\":\"Ladezustand anzeigen\",\"successMessage\":\"Erfolgsmeldung\",\"successMessageDesc\":\"Nachricht, die bei erfolgreicher Übermittlung angezeigt wird\",\"successMessagePlaceholder\":\"Formular erfolgreich übermittelt!\"},\"treegeNode\":{\"labelPlaceholder\":\"Bezeichnung...\"},\"uiNodeForm\":{\"label\":\"Bezeichnung\",\"type\":\"Typ\",\"typeDivider\":\"Trennlinie\",\"typeTitle\":\"Titel\"}}"),
|
|
90
|
+
editor: /* @__PURE__ */ JSON.parse("{\"actionsPanel\":{\"addNode\":\"Element hinzufügen\",\"authorize\":\"Authorize\",\"clear\":\"Löschen\",\"clearSuccess\":\"Fluss geleert!\",\"clearSuccessDesc\":\"Alle Knoten und Kanten wurden entfernt.\",\"copyFailed\":\"Kopieren der Flow‑ID fehlgeschlagen\",\"downloadSuccess\":\"Download erfolgreich.\",\"downloadSuccessDesc\":\"Der Ablauf wurde erfolgreich exportiert.\",\"exportJson\":\"JSON exportieren\",\"globalHeaders\":\"Global headers\",\"idCopied\":\"Flow‑ID kopiert!\",\"importJson\":\"JSON importieren\",\"importSuccess\":\"Import erfolgreich!\",\"importSuccessDesc\":\"Der Ablauf wurde erfolgreich importiert.\",\"invalidJson\":\"Ungültige JSON-Datei.\",\"invalidJsonDesc\":\"Die Datei muss Knoten- und Kanten-Arrays enthalten.\",\"openApi\":\"OpenAPI\",\"parseError\":\"Fehler beim Parsen der JSON-Datei.\",\"parseErrorDesc\":\"Versuchen Sie, die Datei zu korrigieren und erneut zu importieren.\"},\"aiGenerator\":{\"aiNotConfigured\":\"KI nicht konfiguriert\",\"aiNotConfiguredDesc\":\"Fügen Sie {code} Prop zu TreegeEditorProvider hinzu\",\"buttonLabel\":\"Mit KI generieren\",\"cancel\":\"Abbrechen\",\"description\":\"Beschreibung\",\"descriptionPlaceholder\":\"Beispiel: Erstellen Sie ein Kontaktformular mit Name, E-Mail, Telefonnummer und Nachricht\",\"enterDescription\":\"Bitte geben Sie eine Beschreibung ein\",\"failedToGenerate\":\"Fehler beim Generieren des Baums\",\"generate\":\"Generieren\",\"generating\":\"Wird generiert...\",\"keyboardShortcut\":\"Drücken Sie {cmdEnter} oder {ctrlEnter} zum Generieren\",\"missingApiKey\":\"KI-Konfiguration fehlt\",\"missingApiKeyDesc\":\"Bitte konfigurieren Sie Ihren KI-API-Schlüssel in TreegeEditorProvider\",\"successDescription\":\"{nodes} Knoten und {edges} Kanten erstellt\",\"successTitle\":\"Baum erfolgreich generiert!\",\"title\":\"Flow mit KI generieren\",\"titleDescription\":\"Beschreiben Sie das Formular oder den Entscheidungsbaum, den Sie erstellen möchten, und die KI wird ihn für Sie generieren.\",\"unknownError\":\"Unbekannter Fehler aufgetreten\"},\"apiUrlCombobox\":{\"browseRoutes\":\"Browse OpenAPI routes\",\"noRoutes\":\"No matching route\",\"searchRoutes\":\"Search by method, path, or summary\"},\"authorizeDialog\":{\"apiKeyLabel\":\"API key\",\"apply\":\"Apply\",\"bearerLabel\":\"Bearer token\",\"clear\":\"Clear\",\"description\":\"Authenticate against the API to forward credentials to every request issued by the form.\",\"exchangeFailed\":\"Failed to fetch access token\",\"noSchemes\":\"No supported security schemes are declared in this OpenAPI document.\",\"oauth2PasswordLabel\":\"OAuth2 password\",\"passwordPlaceholder\":\"Password\",\"title\":\"Authorize\",\"usernamePlaceholder\":\"Username\"},\"changeNodeTypeDialog\":{\"description\":\"Dieser Knoten hat mehrere ausgehende Verzweigungen. Der neue Typ unterstützt nur eine. Wählen Sie, welche Verzweigung beibehalten werden soll; die anderen werden entfernt.\",\"keepBranch\":\"Diese Verzweigung behalten\",\"noConditions\":\"Keine Bedingungen\",\"title\":\"Knotentyp ändern\"},\"comboboxPattern\":{\"custom\":\"Benutzerdefiniert: {value}\",\"search\":\"Muster suchen...\",\"selectOrCreate\":\"Muster auswählen oder erstellen\",\"usePattern\":\"Muster verwenden: {query}\"},\"comboboxWithCreate\":{\"clearSelection\":\"Auswahl löschen\",\"noResults\":\"Keine Ergebnisse gefunden\"},\"conditionalEdge\":{\"addCondition\":\"Bedingung hinzufügen\",\"and\":\"UND\",\"condition\":\"Bedingung\",\"conditions\":\"Bedingungen\",\"conditionsAnd\":\"Bedingungen (UND)\",\"conditionsMixed\":\"Bedingungen (gemischt)\",\"conditionsOr\":\"Bedingungen (ODER)\",\"defineCondition\":\"Bedingung definieren\",\"displayConditions\":\"Bedingungen anzeigen\",\"displayConditionsDesc\":\"Dieses Feld wird angezeigt, wenn die folgenden Bedingungen erfüllt sind.\",\"fallback\":\"Standard\",\"fallbackPath\":\"Standard- / Fallback-Pfad\",\"fallbackPathDesc\":\"Dieser Pfad wird befolgt, wenn keine andere Bedingung zutrifft\",\"field\":\"Feld\",\"labelDesc\":\"Benutzerdefinierte Bezeichnung für die Bedingungsschaltfläche\",\"labelOptional\":\"Bezeichnung (optional)\",\"labelPlaceholder\":\"z.B.: Wenn berechtigt\",\"noFieldsAvailable\":\"Keine Felder verfügbar\",\"operator\":\"Operator\",\"or\":\"ODER\",\"removeCondition\":\"Bedingung entfernen\",\"selectField\":\"Feld auswählen\",\"value\":\"Wert\",\"valuePlaceholder\":\"z.B.: 18\"},\"flowNodeForm\":{\"label\":\"Bezeichnung\",\"targetId\":\"Ziel-ID\",\"targetIdDesc\":\"Eindeutige Kennung des Zielablaufs.\"},\"groupNodeForm\":{\"label\":\"Bezeichnung\"},\"headersDialog\":{\"addHeader\":\"Add header\",\"description\":\"These headers are forwarded to every HTTP request issued by the form (HTTP inputs, submit, options sources). Field-level headers with the same key override these.\",\"empty\":\"No headers yet.\",\"keyPlaceholder\":\"Authorization\",\"removeHeader\":\"Remove header\",\"title\":\"Global headers\",\"valuePlaceholder\":\"Bearer ...\"},\"httpConfigForm\":{\"addHeader\":\"Header hinzufügen\",\"apiUrl\":\"API-URL\",\"apiUrlDesc\":\"Verwenden Sie Vorlagenvariablen wie {{fieldId}}, um andere Felder zu referenzieren\",\"apiUrlPlaceholder\":\"https://api.beispiel.com/data\",\"behavior\":\"Verhalten\",\"fetchOnMount\":\"Beim Laden abrufen\",\"headerName\":\"Header-Name\",\"headers\":\"Header\",\"headerValue\":\"Header-Wert\",\"httpMethod\":\"HTTP-Methode\",\"insertVariable\":\"Variable einfügen\",\"labelField\":\"Bezeichnungsfeld\",\"labelFieldDesc\":\"Feld, das als Optionsbezeichnung verwendet werden soll (z.B. name)\",\"labelFieldPlaceholder\":\"name\",\"mapToOptions\":\"Auf Optionen abbilden\",\"methodDelete\":\"DELETE\",\"methodGet\":\"GET\",\"methodPatch\":\"PATCH\",\"methodPost\":\"POST\",\"methodPut\":\"PUT\",\"noFieldsAvailable\":\"Keine Felder verfügbar\",\"requestBody\":\"Anfrage-Body (JSON)\",\"requestBodyDesc\":\"Verwenden Sie {{fieldId}}, um andere Felder zu referenzieren. Stellen Sie sicher, dass die JSON-Formatierung korrekt ist, einschließlich Anführungszeichen um Zeichenkettenwerte.\",\"requestBodyPlaceholder\":\"{\\\"name\\\": \\\"{{benutzername}}\\\", \\\"alter\\\": {{benutzeralter}}}\",\"responseConfiguration\":\"Antwort-Konfiguration\",\"responsePath\":\"Antwortpfad\",\"responsePathDesc\":\"Daten aus der Antwort mit Punktnotation oder Array-Indizierung extrahieren\",\"responsePathPlaceholder\":\"data.users oder results[0]\",\"searchParameter\":\"Suchparameter (optional)\",\"searchParameterDesc\":\"Wenn festgelegt, aktiviert eine Suchbox, die diesen Parameter zu API-Aufrufen hinzufügt (z.B. ?q=Paris)\",\"searchParameterPlaceholder\":\"q, suche, abfrage...\",\"selectMethod\":\"Methode auswählen\",\"sendAllFormValues\":\"Alle Formulardaten senden\",\"sendAllFormValuesDesc\":\"Alle Formularwerte automatisch als JSON-Body senden\",\"showLoadingState\":\"Ladezustand anzeigen\",\"valueField\":\"Wertfeld\",\"valueFieldDesc\":\"Feld, das als Optionswert verwendet werden soll (z.B. id)\",\"valueFieldPlaceholder\":\"id\"},\"inputNodeForm\":{\"addInputFieldsBeforeReference\":\"Fügen Sie Eingabefelder vor diesem Knoten hinzu, um sie zu referenzieren\",\"addMapping\":\"Zuordnung hinzufügen\",\"addOption\":\"Option hinzufügen\",\"advancedConfiguration\":\"Erweiterte Konfiguration\",\"defaultChecked\":\"Standardmäßig aktiviert\",\"defaultValuesCommaSeparated\":\"Standardwerte (durch Kommas getrennt)\",\"defaultValuesPlaceholder\":\"wert1, wert2, wert3\",\"defaultValueType\":\"Standardwerttyp\",\"defaultValueTypeNone\":\"Keiner\",\"defaultValueTypeReference\":\"Referenzfeld\",\"defaultValueTypeStatic\":\"Statischer Wert\",\"deleteOption\":\"Option löschen\",\"disablePast\":\"Vergangene Daten deaktivieren\",\"editOption\":\"Option bearbeiten\",\"errorMessage\":\"Fehlermeldung\",\"helperText\":\"Hilfetext\",\"httpConfiguration\":\"HTTP-Konfiguration\",\"label\":\"Bezeichnung\",\"multipleFiles\":\"Mehrere Dateien\",\"multipleSelection\":\"Mehrfachauswahl\",\"name\":\"Name\",\"nameDescription\":\"Optionaler benutzerdefinierter Feldname für den Formularexport. Falls leer, wird die Bezeichnung als Schlüssel verwendet.\",\"noParentFieldsAvailable\":\"Keine übergeordneten Felder verfügbar\",\"objectMapping\":\"Objektzuordnung\",\"objectMappingDesc\":\"Eigenschaften des Quellobjekts auf eine neue Struktur abbilden\",\"optional\":\"Optional\",\"optionDescription\":\"Beschreibung\",\"optionImageAdd\":\"Bild hinzufügen\",\"optionImageError\":\"Bild konnte nicht verarbeitet werden.\",\"optionImageInvalid\":\"Nicht unterstütztes Bildformat.\",\"optionImageRemove\":\"Bild entfernen\",\"optionImageReplace\":\"Bild ersetzen\",\"optionImageTooLarge\":\"Bild zu groß (max. 5 MB).\",\"optionImageUpload\":\"Datei hochladen\",\"optionImageUrlPlaceholder\":\"https://...\",\"optionLabel\":\"Bezeichnung\",\"options\":\"Optionen\",\"optionValue\":\"Wert\",\"pattern\":\"Muster\",\"placeholder\":\"Platzhalter\",\"referenceField\":\"Referenzfeld\",\"required\":\"Erforderlich\",\"selectReferenceField\":\"Feld auswählen\",\"selectTransformation\":\"Transformation auswählen\",\"selectType\":\"Typ auswählen\",\"sourceKey\":\"Quellschlüssel\",\"staticValue\":\"Statischer Wert\",\"staticValuePlaceholder\":\"Standardwert eingeben\",\"submitConfiguration\":\"Übermittlungskonfiguration\",\"targetKey\":\"Zielschlüssel\",\"transformArray\":\"In Array konvertieren\",\"transformBoolean\":\"In Boolean konvertieren\",\"transformDesc\":\"Den referenzierten Wert transformieren, um dem Typ dieses Feldes zu entsprechen\",\"transformMapToObject\":\"Auf Objekt abbilden\",\"transformNone\":\"Keine Transformation\",\"transformNumber\":\"In Zahl konvertieren\",\"transformString\":\"In String konvertieren\",\"transformType\":\"Transformationstyp\",\"validation\":\"Validierung\",\"variant\":\"Variante\",\"variantCard\":\"Karte\",\"variantDefault\":\"Standard\"},\"nodeActionsSheet\":{\"deleteNode\":\"Knoten löschen\",\"deleteNodeConfirm\":\"Sind Sie sicher, dass Sie diesen Knoten löschen möchten?\",\"deleteNodeSuccess\":\"Knoten erfolgreich gelöscht\",\"editNode\":\"Knoten bearbeiten\"},\"openApiDialog\":{\"baseUrlHint\":\"Optional. Overrides the document's first server URL — useful when the spec points at a different environment.\",\"baseUrlLabel\":\"Base URL override\",\"clear\":\"Clear\",\"cleared\":\"OpenAPI cleared.\",\"description\":\"Provide an OpenAPI 3.x document to power URL suggestions and Authorize.\",\"emptyInput\":\"Please provide a URL or paste a JSON document.\",\"jsonLabel\":\"Paste your OpenAPI JSON\",\"load\":\"Load\",\"loadFailed\":\"Failed to load OpenAPI document\",\"loadSuccess\":\"OpenAPI loaded.\",\"modeJson\":\"Paste JSON\",\"modeUrl\":\"From URL\",\"title\":\"OpenAPI source\",\"urlLabel\":\"OpenAPI document URL\"},\"optionsSourceForm\":{\"descriptionField\":\"Description\",\"descriptionFieldPlaceholder\":\"Path to description (optional)\",\"detect\":\"Detect fields\",\"detectFailed\":\"Failed to fetch the API.\",\"detectSuccess\":\"Fields detected.\",\"disable\":\"Use static options\",\"dynamicHint\":\"Options are fetched from this API at runtime.\",\"enable\":\"Fetch from API\",\"imageField\":\"Image\",\"imageFieldPlaceholder\":\"Path to image URL (optional)\",\"labelField\":\"Label\",\"labelFieldPlaceholder\":\"Path to label (e.g., name)\",\"noFieldsDetected\":\"No fields detected — check the URL or response path.\",\"none\":\"— None —\",\"previewCount\":\"{count} options detected\",\"responsePath\":\"Response path\",\"responsePathHint\":\"Optional. Use a path like \\\"data.users\\\" if the array is nested.\",\"responsePathPlaceholder\":\"e.g., data.users\",\"staticOptions\":\"Static options\",\"staticOptionsHint\":\"Options are defined manually in the editor.\",\"title\":\"Options source\",\"urlRequired\":\"URL is required.\",\"valueField\":\"Value\",\"valueFieldPlaceholder\":\"Path to value (e.g., id)\"},\"selectInputType\":{\"type\":\"Typ\"},\"selectNodeGroup\":{\"createNewGroup\":\"Neue Gruppe erstellen\",\"group\":\"Gruppe\",\"groupAlreadyExists\":\"Diese Gruppe existiert bereits\",\"groupAlreadyExistsDesc\":\"Verwenden Sie den Selektor, um den Knoten zu einer vorhandenen Gruppe hinzuzufügen.\",\"groupCreated\":\"Gruppe erstellt\",\"groupCreatedDesc\":\"Die Gruppe \\\"{groupName}\\\" wurde erfolgreich erstellt.\",\"groupName\":\"Gruppenname\",\"groupNamePlaceholder\":\"z.B.: Schritt 1 - Persönliche Informationen\",\"newGroup\":\"Neue Gruppe\",\"newGroupDescription\":\"Die Gruppe wird um den ausgewählten Knoten herum erstellt.\",\"noGroup\":\"Keine Gruppe\",\"renameGroup\":\"Gruppe umbenennen\"},\"selectNodeType\":{\"nodeType\":\"Knotentyp\",\"options\":{\"flow\":\"Externer Ablauf\",\"group\":\"Gruppe\",\"input\":\"Frage\",\"ui\":\"Designelement\"}},\"submitConfigForm\":{\"addHeader\":\"Header hinzufügen\",\"apiUrl\":\"API-URL\",\"apiUrlDesc\":\"Verwenden Sie {{fieldId}}, um andere Felder zu referenzieren\",\"apiUrlPlaceholder\":\"https://api.beispiel.de/submit\",\"behavior\":\"Verhalten\",\"errorMessage\":\"Fehlermeldung\",\"errorMessageDesc\":\"Nachricht, die bei fehlgeschlagener Übermittlung angezeigt wird\",\"errorMessagePlaceholder\":\"Ein Fehler ist aufgetreten. Bitte versuchen Sie es erneut.\",\"headerName\":\"Header-Name\",\"headers\":\"Header\",\"headerValue\":\"Header-Wert\",\"httpMethod\":\"HTTP-Methode\",\"insertVariable\":\"Variable einfügen\",\"methodDelete\":\"DELETE\",\"methodPatch\":\"PATCH\",\"methodPost\":\"POST\",\"methodPut\":\"PUT\",\"noFieldsAvailable\":\"Keine Felder verfügbar\",\"postSubmission\":\"Nach dem Absenden\",\"redirectUrl\":\"Weiterleitungs-URL\",\"redirectUrlDesc\":\"URL, zu der nach erfolgreicher Übermittlung weitergeleitet wird\",\"redirectUrlPlaceholder\":\"/success oder https://beispiel.de/danke\",\"requestBody\":\"Anfragekörper (JSON)\",\"requestBodyDesc\":\"Verwenden Sie {{fieldId}}, um andere Felder zu referenzieren. Stellen Sie sicher, dass die JSON-Formatierung korrekt ist, einschließlich Anführungszeichen um Zeichenkettenwerte.\",\"requestBodyPlaceholder\":\"{\\\"name\\\": \\\"{{benutzername}}\\\", \\\"email\\\": \\\"{{benutzeremail}}\\\"}\",\"selectMethod\":\"Methode auswählen\",\"sendAllFormValues\":\"Alle Formulardaten senden\",\"sendAllFormValuesDesc\":\"Alle Formularwerte automatisch als JSON-Body senden\",\"showLoadingState\":\"Ladezustand anzeigen\",\"successMessage\":\"Erfolgsmeldung\",\"successMessageDesc\":\"Nachricht, die bei erfolgreicher Übermittlung angezeigt wird\",\"successMessagePlaceholder\":\"Formular erfolgreich übermittelt!\"},\"treegeNode\":{\"labelPlaceholder\":\"Bezeichnung...\"},\"uiNodeForm\":{\"label\":\"Bezeichnung\",\"type\":\"Typ\",\"typeDivider\":\"Trennlinie\",\"typeTitle\":\"Titel\"}}"),
|
|
87
91
|
renderer: {
|
|
88
92
|
defaultAddressInput: {
|
|
89
93
|
enterAddress: "Geben Sie eine Adresse ein...",
|
|
@@ -130,6 +134,10 @@ var u = (e) => e?.type === "input", d = (e) => e?.type === "ui", f = (e) => e?.t
|
|
|
130
134
|
defaultSubmitButton: {
|
|
131
135
|
requiredFieldsMissing: "Erforderliche Felder fehlen",
|
|
132
136
|
submit: "Senden"
|
|
137
|
+
},
|
|
138
|
+
step: {
|
|
139
|
+
back: "Zurück",
|
|
140
|
+
continue: "Weiter"
|
|
133
141
|
}
|
|
134
142
|
},
|
|
135
143
|
validation: {
|
|
@@ -150,7 +158,7 @@ var u = (e) => e?.type === "input", d = (e) => e?.type === "ui", f = (e) => e?.t
|
|
|
150
158
|
submit: "Submit",
|
|
151
159
|
toggle: "Toggle"
|
|
152
160
|
},
|
|
153
|
-
editor: /* @__PURE__ */ JSON.parse("{\"actionsPanel\":{\"addNode\":\"Add Element\",\"authorize\":\"Authorize\",\"clear\":\"Clear\",\"clearSuccess\":\"Flow cleared!\",\"clearSuccessDesc\":\"All nodes and edges have been removed.\",\"copyFailed\":\"Failed to copy Flow ID\",\"downloadSuccess\":\"Download successfully.\",\"downloadSuccessDesc\":\"The flow has been exported successfully.\",\"exportJson\":\"Export JSON\",\"globalHeaders\":\"Global headers\",\"idCopied\":\"Flow ID copied!\",\"importJson\":\"Import JSON\",\"importSuccess\":\"Import successful!\",\"importSuccessDesc\":\"The flow has been imported successfully.\",\"invalidJson\":\"Invalid JSON file.\",\"invalidJsonDesc\":\"The file must contain nodes and edges arrays.\",\"openApi\":\"OpenAPI\",\"parseError\":\"Error parsing JSON file.\",\"parseErrorDesc\":\"Try to fix the file and import it again.\"},\"aiGenerator\":{\"aiNotConfigured\":\"AI not configured\",\"aiNotConfiguredDesc\":\"Add {code} prop to TreegeEditorProvider\",\"buttonLabel\":\"Generate with AI\",\"cancel\":\"Cancel\",\"description\":\"Description\",\"descriptionPlaceholder\":\"Example: Create a contact form with name, email, phone number, and message fields\",\"enterDescription\":\"Please enter a description\",\"failedToGenerate\":\"Failed to generate tree\",\"generate\":\"Generate\",\"generating\":\"Generating...\",\"keyboardShortcut\":\"Press {cmdEnter} or {ctrlEnter} to generate\",\"missingApiKey\":\"AI configuration missing\",\"missingApiKeyDesc\":\"Please configure your AI API key in TreegeEditorProvider\",\"successDescription\":\"Created {nodes} nodes and {edges} edges\",\"successTitle\":\"Tree generated successfully!\",\"title\":\"Generate Flow with AI\",\"titleDescription\":\"Describe the form or decision tree you want to create, and AI will generate it for you.\",\"unknownError\":\"Unknown error occurred\"},\"apiUrlCombobox\":{\"browseRoutes\":\"Browse OpenAPI routes\",\"noRoutes\":\"No matching route\",\"searchRoutes\":\"Search by method, path, or summary\"},\"authorizeDialog\":{\"apiKeyLabel\":\"API key\",\"apply\":\"Apply\",\"bearerLabel\":\"Bearer token\",\"clear\":\"Clear\",\"description\":\"Authenticate against the API to forward credentials to every request issued by the form.\",\"exchangeFailed\":\"Failed to fetch access token\",\"noSchemes\":\"No supported security schemes are declared in this OpenAPI document.\",\"oauth2PasswordLabel\":\"OAuth2 password\",\"passwordPlaceholder\":\"Password\",\"title\":\"Authorize\",\"usernamePlaceholder\":\"Username\"},\"changeNodeTypeDialog\":{\"description\":\"This node has several outgoing branches. The new type only supports one. Choose which branch to keep; the others will be removed.\",\"keepBranch\":\"Keep this branch\",\"noConditions\":\"No conditions\",\"title\":\"Change node type\"},\"comboboxPattern\":{\"custom\":\"Custom: {value}\",\"search\":\"Search patterns...\",\"selectOrCreate\":\"Select or create a pattern\",\"usePattern\":\"Use pattern: {query}\"},\"comboboxWithCreate\":{\"clearSelection\":\"Clear selection\",\"noResults\":\"No results found\"},\"conditionalEdge\":{\"addCondition\":\"Add condition\",\"and\":\"AND\",\"condition\":\"Condition\",\"conditions\":\"Conditions\",\"conditionsAnd\":\"conditions (AND)\",\"conditionsMixed\":\"conditions (mixed)\",\"conditionsOr\":\"conditions (OR)\",\"defineCondition\":\"Define a condition\",\"displayConditions\":\"Display conditions\",\"displayConditionsDesc\":\"This field will be shown if the following conditions are met.\",\"fallback\":\"Fallback\",\"fallbackPath\":\"Fallback / Default path\",\"fallbackPathDesc\":\"This path will be followed when no other conditions match\",\"field\":\"Field\",\"labelDesc\":\"Custom label for the condition button\",\"labelOptional\":\"Label (optional)\",\"labelPlaceholder\":\"Ex: If eligible\",\"noFieldsAvailable\":\"No fields available\",\"operator\":\"Operator\",\"or\":\"OR\",\"removeCondition\":\"Remove condition\",\"selectField\":\"Select a field\",\"value\":\"Value\",\"valuePlaceholder\":\"Ex: 18\"},\"flowNodeForm\":{\"label\":\"Label\",\"targetId\":\"Target id\",\"targetIdDesc\":\"Unique identifier of the target flow.\"},\"groupNodeForm\":{\"label\":\"Label\"},\"headersDialog\":{\"addHeader\":\"Add header\",\"description\":\"These headers are forwarded to every HTTP request issued by the form (HTTP inputs, submit, options sources). Field-level headers with the same key override these.\",\"empty\":\"No headers yet.\",\"keyPlaceholder\":\"Authorization\",\"removeHeader\":\"Remove header\",\"title\":\"Global headers\",\"valuePlaceholder\":\"Bearer ...\"},\"httpConfigForm\":{\"addHeader\":\"Add header\",\"apiUrl\":\"API URL\",\"apiUrlDesc\":\"Use template variables like {{fieldId}} to reference form fields\",\"apiUrlPlaceholder\":\"https://api.example.com/data\",\"behavior\":\"Behavior\",\"fetchOnMount\":\"Fetch on mount\",\"headerName\":\"Header name\",\"headers\":\"Headers\",\"headerValue\":\"Header value\",\"httpMethod\":\"HTTP Method\",\"insertVariable\":\"Insert variable\",\"labelField\":\"Label Field\",\"labelFieldDesc\":\"Field to use as option label (e.g., name)\",\"labelFieldPlaceholder\":\"name\",\"mapToOptions\":\"Map to Options\",\"methodDelete\":\"DELETE\",\"methodGet\":\"GET\",\"methodPatch\":\"PATCH\",\"methodPost\":\"POST\",\"methodPut\":\"PUT\",\"noFieldsAvailable\":\"No fields available\",\"requestBody\":\"Request Body (JSON)\",\"requestBodyDesc\":\"Use {{fieldId}} to reference form fields. Ensure proper JSON formatting including quotes around string values.\",\"requestBodyPlaceholder\":\"{\\\"name\\\": \\\"{{userName}}\\\", \\\"age\\\": {{userAge}}}\",\"responseConfiguration\":\"Response Configuration\",\"responsePath\":\"Response Path\",\"responsePathDesc\":\"Extract data from response using dot notation or array indexing\",\"responsePathPlaceholder\":\"data.users or results[0]\",\"searchParameter\":\"Search Parameter (optional)\",\"searchParameterDesc\":\"If set, enables combobox with search that adds this param to API calls (e.g., ?q=Paris)\",\"searchParameterPlaceholder\":\"q, search, query...\",\"selectMethod\":\"Select method\",\"sendAllFormValues\":\"Send all form data\",\"sendAllFormValuesDesc\":\"Automatically send all form values as JSON body\",\"showLoadingState\":\"Show loading state\",\"valueField\":\"Value Field\",\"valueFieldDesc\":\"Field to use as option value (e.g., id)\",\"valueFieldPlaceholder\":\"id\"},\"inputNodeForm\":{\"addInputFieldsBeforeReference\":\"Add input fields before this node to reference them\",\"addMapping\":\"Add Mapping\",\"addOption\":\"Add option\",\"advancedConfiguration\":\"Advanced Configuration\",\"defaultChecked\":\"Default Checked\",\"defaultValuesCommaSeparated\":\"Default Values (comma-separated)\",\"defaultValuesPlaceholder\":\"value1, value2, value3\",\"defaultValueType\":\"Default Value Type\",\"defaultValueTypeNone\":\"None\",\"defaultValueTypeReference\":\"Reference Field\",\"defaultValueTypeStatic\":\"Static Value\",\"deleteOption\":\"Delete option\",\"disablePast\":\"Disable past dates\",\"editOption\":\"Edit option\",\"errorMessage\":\"Error message\",\"helperText\":\"Helper text\",\"httpConfiguration\":\"HTTP Configuration\",\"label\":\"Label\",\"multipleFiles\":\"Multiple files\",\"multipleSelection\":\"Multiple selection\",\"name\":\"Name\",\"nameDescription\":\"Optional custom field name for form export. If empty, the label will be used as the key.\",\"noParentFieldsAvailable\":\"No parent fields available\",\"objectMapping\":\"Object Mapping\",\"objectMappingDesc\":\"Map properties from the source object to a new structure\",\"optional\":\"Optional\",\"optionDescription\":\"Description\",\"optionImageAdd\":\"Add image\",\"optionImageError\":\"Unable to process image.\",\"optionImageInvalid\":\"Unsupported image format.\",\"optionImageRemove\":\"Remove image\",\"optionImageReplace\":\"Replace image\",\"optionImageTooLarge\":\"Image too large (max 5 MB).\",\"optionImageUpload\":\"Upload file\",\"optionImageUrlPlaceholder\":\"https://...\",\"optionLabel\":\"Label\",\"options\":\"Options\",\"optionValue\":\"Value\",\"pattern\":\"Pattern\",\"placeholder\":\"Placeholder\",\"referenceField\":\"Reference Field\",\"required\":\"Required\",\"selectReferenceField\":\"Select a field\",\"selectTransformation\":\"Select transformation\",\"selectType\":\"Select type\",\"sourceKey\":\"Source key\",\"staticValue\":\"Static Value\",\"staticValuePlaceholder\":\"Enter default value\",\"submitConfiguration\":\"Submit Configuration\",\"targetKey\":\"Target key\",\"transformArray\":\"Convert to Array\",\"transformBoolean\":\"Convert to Boolean\",\"transformDesc\":\"Transform the referenced value to match this field's type\",\"transformMapToObject\":\"Map to Object\",\"transformNone\":\"No transformation\",\"transformNumber\":\"Convert to Number\",\"transformString\":\"Convert to String\",\"transformType\":\"Transform Type\",\"validation\":\"Validation\",\"variant\":\"Variant\",\"variantCard\":\"Card\",\"variantDefault\":\"Default\"},\"nodeActionsSheet\":{\"deleteNode\":\"Delete node\",\"deleteNodeConfirm\":\"Are you sure you want to delete this node?\",\"deleteNodeSuccess\":\"Node deleted successfully\",\"editNode\":\"Edit node\"},\"openApiDialog\":{\"baseUrlHint\":\"Optional. Overrides the document's first server URL — useful when the spec points at a different environment.\",\"baseUrlLabel\":\"Base URL override\",\"clear\":\"Clear\",\"cleared\":\"OpenAPI cleared.\",\"description\":\"Provide an OpenAPI 3.x document to power URL suggestions and Authorize.\",\"emptyInput\":\"Please provide a URL or paste a JSON document.\",\"jsonLabel\":\"Paste your OpenAPI JSON\",\"load\":\"Load\",\"loadFailed\":\"Failed to load OpenAPI document\",\"loadSuccess\":\"OpenAPI loaded.\",\"modeJson\":\"Paste JSON\",\"modeUrl\":\"From URL\",\"title\":\"OpenAPI source\",\"urlLabel\":\"OpenAPI document URL\"},\"optionsSourceForm\":{\"descriptionField\":\"Description\",\"descriptionFieldPlaceholder\":\"Path to description (optional)\",\"detect\":\"Detect fields\",\"detectFailed\":\"Failed to fetch the API.\",\"detectSuccess\":\"Fields detected.\",\"disable\":\"Use static options\",\"dynamicHint\":\"Options are fetched from this API at runtime.\",\"enable\":\"Fetch from API\",\"imageField\":\"Image\",\"imageFieldPlaceholder\":\"Path to image URL (optional)\",\"labelField\":\"Label\",\"labelFieldPlaceholder\":\"Path to label (e.g., name)\",\"noFieldsDetected\":\"No fields detected — check the URL or response path.\",\"none\":\"— None —\",\"previewCount\":\"{count} options detected\",\"responsePath\":\"Response path\",\"responsePathHint\":\"Optional. Use a path like \\\"data.users\\\" if the array is nested.\",\"responsePathPlaceholder\":\"e.g., data.users\",\"staticOptions\":\"Static options\",\"staticOptionsHint\":\"Options are defined manually in the editor.\",\"title\":\"Options source\",\"urlRequired\":\"URL is required.\",\"valueField\":\"Value\",\"valueFieldPlaceholder\":\"Path to value (e.g., id)\"},\"selectInputType\":{\"type\":\"Type\"},\"selectNodeGroup\":{\"createNewGroup\":\"Create a new group\",\"group\":\"Group\",\"groupAlreadyExists\":\"This group already exists\",\"groupAlreadyExistsDesc\":\"Use the selector to add the node to an existing group.\",\"groupCreated\":\"Group created\",\"groupCreatedDesc\":\"The group \\\"{groupName}\\\" has been created successfully.\",\"groupName\":\"Group name\",\"groupNamePlaceholder\":\"Ex: Step 1 - Personal info\",\"newGroup\":\"New group\",\"newGroupDescription\":\"The group will be created around the selected node.\",\"noGroup\":\"No group\"},\"selectNodeType\":{\"nodeType\":\"Node Type\",\"options\":{\"flow\":\"External Flow\",\"group\":\"Group\",\"input\":\"Question\",\"ui\":\"Design Element\"}},\"submitConfigForm\":{\"addHeader\":\"Add header\",\"apiUrl\":\"API URL\",\"apiUrlDesc\":\"Use {{fieldId}} to reference form fields\",\"apiUrlPlaceholder\":\"https://api.example.com/submit\",\"behavior\":\"Behavior\",\"errorMessage\":\"Error Message\",\"errorMessageDesc\":\"Message displayed when submission fails\",\"errorMessagePlaceholder\":\"An error occurred. Please try again.\",\"headerName\":\"Header name\",\"headers\":\"Headers\",\"headerValue\":\"Header value\",\"httpMethod\":\"HTTP Method\",\"insertVariable\":\"Insert variable\",\"methodDelete\":\"DELETE\",\"methodPatch\":\"PATCH\",\"methodPost\":\"POST\",\"methodPut\":\"PUT\",\"noFieldsAvailable\":\"No fields available\",\"postSubmission\":\"Post Submission\",\"redirectUrl\":\"Redirect URL\",\"redirectUrlDesc\":\"URL to redirect to after successful submission\",\"redirectUrlPlaceholder\":\"/success or https://example.com/thank-you\",\"requestBody\":\"Request Body (JSON)\",\"requestBodyDesc\":\"Use {{fieldId}} to reference form fields. Ensure proper JSON formatting including quotes around string values.\",\"requestBodyPlaceholder\":\"{\\\"name\\\": \\\"{{userName}}\\\", \\\"email\\\": \\\"{{userEmail}}\\\"}\",\"selectMethod\":\"Select method\",\"sendAllFormValues\":\"Send all form data\",\"sendAllFormValuesDesc\":\"Automatically send all form values as JSON body\",\"showLoadingState\":\"Show loading state\",\"successMessage\":\"Success Message\",\"successMessageDesc\":\"Message displayed when submission succeeds\",\"successMessagePlaceholder\":\"Form submitted successfully!\"},\"treegeNode\":{\"labelPlaceholder\":\"Label...\"},\"uiNodeForm\":{\"label\":\"Label\",\"type\":\"Type\",\"typeDivider\":\"Divider\",\"typeTitle\":\"Title\"}}"),
|
|
161
|
+
editor: /* @__PURE__ */ JSON.parse("{\"actionsPanel\":{\"addNode\":\"Add Element\",\"authorize\":\"Authorize\",\"clear\":\"Clear\",\"clearSuccess\":\"Flow cleared!\",\"clearSuccessDesc\":\"All nodes and edges have been removed.\",\"copyFailed\":\"Failed to copy Flow ID\",\"downloadSuccess\":\"Download successfully.\",\"downloadSuccessDesc\":\"The flow has been exported successfully.\",\"exportJson\":\"Export JSON\",\"globalHeaders\":\"Global headers\",\"idCopied\":\"Flow ID copied!\",\"importJson\":\"Import JSON\",\"importSuccess\":\"Import successful!\",\"importSuccessDesc\":\"The flow has been imported successfully.\",\"invalidJson\":\"Invalid JSON file.\",\"invalidJsonDesc\":\"The file must contain nodes and edges arrays.\",\"openApi\":\"OpenAPI\",\"parseError\":\"Error parsing JSON file.\",\"parseErrorDesc\":\"Try to fix the file and import it again.\"},\"aiGenerator\":{\"aiNotConfigured\":\"AI not configured\",\"aiNotConfiguredDesc\":\"Add {code} prop to TreegeEditorProvider\",\"buttonLabel\":\"Generate with AI\",\"cancel\":\"Cancel\",\"description\":\"Description\",\"descriptionPlaceholder\":\"Example: Create a contact form with name, email, phone number, and message fields\",\"enterDescription\":\"Please enter a description\",\"failedToGenerate\":\"Failed to generate tree\",\"generate\":\"Generate\",\"generating\":\"Generating...\",\"keyboardShortcut\":\"Press {cmdEnter} or {ctrlEnter} to generate\",\"missingApiKey\":\"AI configuration missing\",\"missingApiKeyDesc\":\"Please configure your AI API key in TreegeEditorProvider\",\"successDescription\":\"Created {nodes} nodes and {edges} edges\",\"successTitle\":\"Tree generated successfully!\",\"title\":\"Generate Flow with AI\",\"titleDescription\":\"Describe the form or decision tree you want to create, and AI will generate it for you.\",\"unknownError\":\"Unknown error occurred\"},\"apiUrlCombobox\":{\"browseRoutes\":\"Browse OpenAPI routes\",\"noRoutes\":\"No matching route\",\"searchRoutes\":\"Search by method, path, or summary\"},\"authorizeDialog\":{\"apiKeyLabel\":\"API key\",\"apply\":\"Apply\",\"bearerLabel\":\"Bearer token\",\"clear\":\"Clear\",\"description\":\"Authenticate against the API to forward credentials to every request issued by the form.\",\"exchangeFailed\":\"Failed to fetch access token\",\"noSchemes\":\"No supported security schemes are declared in this OpenAPI document.\",\"oauth2PasswordLabel\":\"OAuth2 password\",\"passwordPlaceholder\":\"Password\",\"title\":\"Authorize\",\"usernamePlaceholder\":\"Username\"},\"changeNodeTypeDialog\":{\"description\":\"This node has several outgoing branches. The new type only supports one. Choose which branch to keep; the others will be removed.\",\"keepBranch\":\"Keep this branch\",\"noConditions\":\"No conditions\",\"title\":\"Change node type\"},\"comboboxPattern\":{\"custom\":\"Custom: {value}\",\"search\":\"Search patterns...\",\"selectOrCreate\":\"Select or create a pattern\",\"usePattern\":\"Use pattern: {query}\"},\"comboboxWithCreate\":{\"clearSelection\":\"Clear selection\",\"noResults\":\"No results found\"},\"conditionalEdge\":{\"addCondition\":\"Add condition\",\"and\":\"AND\",\"condition\":\"Condition\",\"conditions\":\"Conditions\",\"conditionsAnd\":\"conditions (AND)\",\"conditionsMixed\":\"conditions (mixed)\",\"conditionsOr\":\"conditions (OR)\",\"defineCondition\":\"Define a condition\",\"displayConditions\":\"Display conditions\",\"displayConditionsDesc\":\"This field will be shown if the following conditions are met.\",\"fallback\":\"Fallback\",\"fallbackPath\":\"Fallback / Default path\",\"fallbackPathDesc\":\"This path will be followed when no other conditions match\",\"field\":\"Field\",\"labelDesc\":\"Custom label for the condition button\",\"labelOptional\":\"Label (optional)\",\"labelPlaceholder\":\"Ex: If eligible\",\"noFieldsAvailable\":\"No fields available\",\"operator\":\"Operator\",\"or\":\"OR\",\"removeCondition\":\"Remove condition\",\"selectField\":\"Select a field\",\"value\":\"Value\",\"valuePlaceholder\":\"Ex: 18\"},\"flowNodeForm\":{\"label\":\"Label\",\"targetId\":\"Target id\",\"targetIdDesc\":\"Unique identifier of the target flow.\"},\"groupNodeForm\":{\"label\":\"Label\"},\"headersDialog\":{\"addHeader\":\"Add header\",\"description\":\"These headers are forwarded to every HTTP request issued by the form (HTTP inputs, submit, options sources). Field-level headers with the same key override these.\",\"empty\":\"No headers yet.\",\"keyPlaceholder\":\"Authorization\",\"removeHeader\":\"Remove header\",\"title\":\"Global headers\",\"valuePlaceholder\":\"Bearer ...\"},\"httpConfigForm\":{\"addHeader\":\"Add header\",\"apiUrl\":\"API URL\",\"apiUrlDesc\":\"Use template variables like {{fieldId}} to reference form fields\",\"apiUrlPlaceholder\":\"https://api.example.com/data\",\"behavior\":\"Behavior\",\"fetchOnMount\":\"Fetch on mount\",\"headerName\":\"Header name\",\"headers\":\"Headers\",\"headerValue\":\"Header value\",\"httpMethod\":\"HTTP Method\",\"insertVariable\":\"Insert variable\",\"labelField\":\"Label Field\",\"labelFieldDesc\":\"Field to use as option label (e.g., name)\",\"labelFieldPlaceholder\":\"name\",\"mapToOptions\":\"Map to Options\",\"methodDelete\":\"DELETE\",\"methodGet\":\"GET\",\"methodPatch\":\"PATCH\",\"methodPost\":\"POST\",\"methodPut\":\"PUT\",\"noFieldsAvailable\":\"No fields available\",\"requestBody\":\"Request Body (JSON)\",\"requestBodyDesc\":\"Use {{fieldId}} to reference form fields. Ensure proper JSON formatting including quotes around string values.\",\"requestBodyPlaceholder\":\"{\\\"name\\\": \\\"{{userName}}\\\", \\\"age\\\": {{userAge}}}\",\"responseConfiguration\":\"Response Configuration\",\"responsePath\":\"Response Path\",\"responsePathDesc\":\"Extract data from response using dot notation or array indexing\",\"responsePathPlaceholder\":\"data.users or results[0]\",\"searchParameter\":\"Search Parameter (optional)\",\"searchParameterDesc\":\"If set, enables combobox with search that adds this param to API calls (e.g., ?q=Paris)\",\"searchParameterPlaceholder\":\"q, search, query...\",\"selectMethod\":\"Select method\",\"sendAllFormValues\":\"Send all form data\",\"sendAllFormValuesDesc\":\"Automatically send all form values as JSON body\",\"showLoadingState\":\"Show loading state\",\"valueField\":\"Value Field\",\"valueFieldDesc\":\"Field to use as option value (e.g., id)\",\"valueFieldPlaceholder\":\"id\"},\"inputNodeForm\":{\"addInputFieldsBeforeReference\":\"Add input fields before this node to reference them\",\"addMapping\":\"Add Mapping\",\"addOption\":\"Add option\",\"advancedConfiguration\":\"Advanced Configuration\",\"defaultChecked\":\"Default Checked\",\"defaultValuesCommaSeparated\":\"Default Values (comma-separated)\",\"defaultValuesPlaceholder\":\"value1, value2, value3\",\"defaultValueType\":\"Default Value Type\",\"defaultValueTypeNone\":\"None\",\"defaultValueTypeReference\":\"Reference Field\",\"defaultValueTypeStatic\":\"Static Value\",\"deleteOption\":\"Delete option\",\"disablePast\":\"Disable past dates\",\"editOption\":\"Edit option\",\"errorMessage\":\"Error message\",\"helperText\":\"Helper text\",\"httpConfiguration\":\"HTTP Configuration\",\"label\":\"Label\",\"multipleFiles\":\"Multiple files\",\"multipleSelection\":\"Multiple selection\",\"name\":\"Name\",\"nameDescription\":\"Optional custom field name for form export. If empty, the label will be used as the key.\",\"noParentFieldsAvailable\":\"No parent fields available\",\"objectMapping\":\"Object Mapping\",\"objectMappingDesc\":\"Map properties from the source object to a new structure\",\"optional\":\"Optional\",\"optionDescription\":\"Description\",\"optionImageAdd\":\"Add image\",\"optionImageError\":\"Unable to process image.\",\"optionImageInvalid\":\"Unsupported image format.\",\"optionImageRemove\":\"Remove image\",\"optionImageReplace\":\"Replace image\",\"optionImageTooLarge\":\"Image too large (max 5 MB).\",\"optionImageUpload\":\"Upload file\",\"optionImageUrlPlaceholder\":\"https://...\",\"optionLabel\":\"Label\",\"options\":\"Options\",\"optionValue\":\"Value\",\"pattern\":\"Pattern\",\"placeholder\":\"Placeholder\",\"referenceField\":\"Reference Field\",\"required\":\"Required\",\"selectReferenceField\":\"Select a field\",\"selectTransformation\":\"Select transformation\",\"selectType\":\"Select type\",\"sourceKey\":\"Source key\",\"staticValue\":\"Static Value\",\"staticValuePlaceholder\":\"Enter default value\",\"submitConfiguration\":\"Submit Configuration\",\"targetKey\":\"Target key\",\"transformArray\":\"Convert to Array\",\"transformBoolean\":\"Convert to Boolean\",\"transformDesc\":\"Transform the referenced value to match this field's type\",\"transformMapToObject\":\"Map to Object\",\"transformNone\":\"No transformation\",\"transformNumber\":\"Convert to Number\",\"transformString\":\"Convert to String\",\"transformType\":\"Transform Type\",\"validation\":\"Validation\",\"variant\":\"Variant\",\"variantCard\":\"Card\",\"variantDefault\":\"Default\"},\"nodeActionsSheet\":{\"deleteNode\":\"Delete node\",\"deleteNodeConfirm\":\"Are you sure you want to delete this node?\",\"deleteNodeSuccess\":\"Node deleted successfully\",\"editNode\":\"Edit node\"},\"openApiDialog\":{\"baseUrlHint\":\"Optional. Overrides the document's first server URL — useful when the spec points at a different environment.\",\"baseUrlLabel\":\"Base URL override\",\"clear\":\"Clear\",\"cleared\":\"OpenAPI cleared.\",\"description\":\"Provide an OpenAPI 3.x document to power URL suggestions and Authorize.\",\"emptyInput\":\"Please provide a URL or paste a JSON document.\",\"jsonLabel\":\"Paste your OpenAPI JSON\",\"load\":\"Load\",\"loadFailed\":\"Failed to load OpenAPI document\",\"loadSuccess\":\"OpenAPI loaded.\",\"modeJson\":\"Paste JSON\",\"modeUrl\":\"From URL\",\"title\":\"OpenAPI source\",\"urlLabel\":\"OpenAPI document URL\"},\"optionsSourceForm\":{\"descriptionField\":\"Description\",\"descriptionFieldPlaceholder\":\"Path to description (optional)\",\"detect\":\"Detect fields\",\"detectFailed\":\"Failed to fetch the API.\",\"detectSuccess\":\"Fields detected.\",\"disable\":\"Use static options\",\"dynamicHint\":\"Options are fetched from this API at runtime.\",\"enable\":\"Fetch from API\",\"imageField\":\"Image\",\"imageFieldPlaceholder\":\"Path to image URL (optional)\",\"labelField\":\"Label\",\"labelFieldPlaceholder\":\"Path to label (e.g., name)\",\"noFieldsDetected\":\"No fields detected — check the URL or response path.\",\"none\":\"— None —\",\"previewCount\":\"{count} options detected\",\"responsePath\":\"Response path\",\"responsePathHint\":\"Optional. Use a path like \\\"data.users\\\" if the array is nested.\",\"responsePathPlaceholder\":\"e.g., data.users\",\"staticOptions\":\"Static options\",\"staticOptionsHint\":\"Options are defined manually in the editor.\",\"title\":\"Options source\",\"urlRequired\":\"URL is required.\",\"valueField\":\"Value\",\"valueFieldPlaceholder\":\"Path to value (e.g., id)\"},\"selectInputType\":{\"type\":\"Type\"},\"selectNodeGroup\":{\"createNewGroup\":\"Create a new group\",\"group\":\"Group\",\"groupAlreadyExists\":\"This group already exists\",\"groupAlreadyExistsDesc\":\"Use the selector to add the node to an existing group.\",\"groupCreated\":\"Group created\",\"groupCreatedDesc\":\"The group \\\"{groupName}\\\" has been created successfully.\",\"groupName\":\"Group name\",\"groupNamePlaceholder\":\"Ex: Step 1 - Personal info\",\"newGroup\":\"New group\",\"newGroupDescription\":\"The group will be created around the selected node.\",\"noGroup\":\"No group\",\"renameGroup\":\"Rename group\"},\"selectNodeType\":{\"nodeType\":\"Node Type\",\"options\":{\"flow\":\"External Flow\",\"group\":\"Group\",\"input\":\"Question\",\"ui\":\"Design Element\"}},\"submitConfigForm\":{\"addHeader\":\"Add header\",\"apiUrl\":\"API URL\",\"apiUrlDesc\":\"Use {{fieldId}} to reference form fields\",\"apiUrlPlaceholder\":\"https://api.example.com/submit\",\"behavior\":\"Behavior\",\"errorMessage\":\"Error Message\",\"errorMessageDesc\":\"Message displayed when submission fails\",\"errorMessagePlaceholder\":\"An error occurred. Please try again.\",\"headerName\":\"Header name\",\"headers\":\"Headers\",\"headerValue\":\"Header value\",\"httpMethod\":\"HTTP Method\",\"insertVariable\":\"Insert variable\",\"methodDelete\":\"DELETE\",\"methodPatch\":\"PATCH\",\"methodPost\":\"POST\",\"methodPut\":\"PUT\",\"noFieldsAvailable\":\"No fields available\",\"postSubmission\":\"Post Submission\",\"redirectUrl\":\"Redirect URL\",\"redirectUrlDesc\":\"URL to redirect to after successful submission\",\"redirectUrlPlaceholder\":\"/success or https://example.com/thank-you\",\"requestBody\":\"Request Body (JSON)\",\"requestBodyDesc\":\"Use {{fieldId}} to reference form fields. Ensure proper JSON formatting including quotes around string values.\",\"requestBodyPlaceholder\":\"{\\\"name\\\": \\\"{{userName}}\\\", \\\"email\\\": \\\"{{userEmail}}\\\"}\",\"selectMethod\":\"Select method\",\"sendAllFormValues\":\"Send all form data\",\"sendAllFormValuesDesc\":\"Automatically send all form values as JSON body\",\"showLoadingState\":\"Show loading state\",\"successMessage\":\"Success Message\",\"successMessageDesc\":\"Message displayed when submission succeeds\",\"successMessagePlaceholder\":\"Form submitted successfully!\"},\"treegeNode\":{\"labelPlaceholder\":\"Label...\"},\"uiNodeForm\":{\"label\":\"Label\",\"type\":\"Type\",\"typeDivider\":\"Divider\",\"typeTitle\":\"Title\"}}"),
|
|
154
162
|
renderer: {
|
|
155
163
|
defaultAddressInput: {
|
|
156
164
|
enterAddress: "Enter an address...",
|
|
@@ -197,6 +205,10 @@ var u = (e) => e?.type === "input", d = (e) => e?.type === "ui", f = (e) => e?.t
|
|
|
197
205
|
defaultSubmitButton: {
|
|
198
206
|
requiredFieldsMissing: "Required fields missing",
|
|
199
207
|
submit: "Submit"
|
|
208
|
+
},
|
|
209
|
+
step: {
|
|
210
|
+
back: "Back",
|
|
211
|
+
continue: "Continue"
|
|
200
212
|
}
|
|
201
213
|
},
|
|
202
214
|
validation: {
|
|
@@ -217,7 +229,7 @@ var u = (e) => e?.type === "input", d = (e) => e?.type === "ui", f = (e) => e?.t
|
|
|
217
229
|
submit: "Enviar",
|
|
218
230
|
toggle: "Alternar"
|
|
219
231
|
},
|
|
220
|
-
editor: /* @__PURE__ */ JSON.parse("{\"actionsPanel\":{\"addNode\":\"Agregar elemento\",\"authorize\":\"Authorize\",\"clear\":\"Limpiar\",\"clearSuccess\":\"¡Flujo limpiado!\",\"clearSuccessDesc\":\"Todos los nodos y aristas han sido eliminados.\",\"copyFailed\":\"No se pudo copiar el ID del flujo\",\"downloadSuccess\":\"Descarga exitosa.\",\"downloadSuccessDesc\":\"El flujo se ha exportado correctamente.\",\"exportJson\":\"Exportar JSON\",\"globalHeaders\":\"Global headers\",\"idCopied\":\"ID del flujo copiado!\",\"importJson\":\"Importar JSON\",\"importSuccess\":\"¡Importación exitosa!\",\"importSuccessDesc\":\"El flujo se ha importado correctamente.\",\"invalidJson\":\"Archivo JSON inválido.\",\"invalidJsonDesc\":\"El archivo debe contener matrices de nodos y aristas.\",\"openApi\":\"OpenAPI\",\"parseError\":\"Error al analizar el archivo JSON.\",\"parseErrorDesc\":\"Intenta corregir el archivo e importarlo nuevamente.\"},\"aiGenerator\":{\"aiNotConfigured\":\"IA no configurada\",\"aiNotConfiguredDesc\":\"Agregue la prop {code} a TreegeEditorProvider\",\"buttonLabel\":\"Generar con IA\",\"cancel\":\"Cancelar\",\"description\":\"Descripción\",\"descriptionPlaceholder\":\"Ejemplo: Crear un formulario de contacto con nombre, correo electrónico, teléfono y mensaje\",\"enterDescription\":\"Por favor ingrese una descripción\",\"failedToGenerate\":\"Error al generar el árbol\",\"generate\":\"Generar\",\"generating\":\"Generando...\",\"keyboardShortcut\":\"Presione {cmdEnter} o {ctrlEnter} para generar\",\"missingApiKey\":\"Falta configuración de IA\",\"missingApiKeyDesc\":\"Por favor configure su clave API de IA en TreegeEditorProvider\",\"successDescription\":\"{nodes} nodos y {edges} aristas creados\",\"successTitle\":\"¡Árbol generado exitosamente!\",\"title\":\"Generar flujo con IA\",\"titleDescription\":\"Describa el formulario o árbol de decisión que desea crear, y la IA lo generará por usted.\",\"unknownError\":\"Error desconocido\"},\"apiUrlCombobox\":{\"browseRoutes\":\"Browse OpenAPI routes\",\"noRoutes\":\"No matching route\",\"searchRoutes\":\"Search by method, path, or summary\"},\"authorizeDialog\":{\"apiKeyLabel\":\"API key\",\"apply\":\"Apply\",\"bearerLabel\":\"Bearer token\",\"clear\":\"Clear\",\"description\":\"Authenticate against the API to forward credentials to every request issued by the form.\",\"exchangeFailed\":\"Failed to fetch access token\",\"noSchemes\":\"No supported security schemes are declared in this OpenAPI document.\",\"oauth2PasswordLabel\":\"OAuth2 password\",\"passwordPlaceholder\":\"Password\",\"title\":\"Authorize\",\"usernamePlaceholder\":\"Username\"},\"changeNodeTypeDialog\":{\"description\":\"Este nodo tiene varias ramas salientes. El nuevo tipo solo admite una. Elige qué rama conservar; las demás serán eliminadas.\",\"keepBranch\":\"Conservar esta rama\",\"noConditions\":\"Sin condiciones\",\"title\":\"Cambiar tipo de nodo\"},\"comboboxPattern\":{\"custom\":\"Personalizado: {value}\",\"search\":\"Buscar patrones...\",\"selectOrCreate\":\"Seleccionar o crear un patrón\",\"usePattern\":\"Usar patrón: {query}\"},\"comboboxWithCreate\":{\"clearSelection\":\"Limpiar selección\",\"noResults\":\"No se encontraron resultados\"},\"conditionalEdge\":{\"addCondition\":\"Agregar condición\",\"and\":\"Y\",\"condition\":\"Condición\",\"conditions\":\"Condiciones\",\"conditionsAnd\":\"condiciones (Y)\",\"conditionsMixed\":\"condiciones (mixtas)\",\"conditionsOr\":\"condiciones (O)\",\"defineCondition\":\"Definir una condición\",\"displayConditions\":\"Mostrar condiciones\",\"displayConditionsDesc\":\"Este campo se mostrará si se cumplen las siguientes condiciones.\",\"fallback\":\"Predeterminado\",\"fallbackPath\":\"Ruta predeterminada / de respaldo\",\"fallbackPathDesc\":\"Esta ruta se seguirá cuando ninguna otra condición coincida\",\"field\":\"Campo\",\"labelDesc\":\"Etiqueta personalizada para el botón de condición\",\"labelOptional\":\"Etiqueta (opcional)\",\"labelPlaceholder\":\"Ej: Si es elegible\",\"noFieldsAvailable\":\"No hay campos disponibles\",\"operator\":\"Operador\",\"or\":\"O\",\"removeCondition\":\"Eliminar condición\",\"selectField\":\"Seleccionar un campo\",\"value\":\"Valor\",\"valuePlaceholder\":\"Ej: 18\"},\"flowNodeForm\":{\"label\":\"Etiqueta\",\"targetId\":\"ID de destino\",\"targetIdDesc\":\"Identificador único del flujo de destino.\"},\"groupNodeForm\":{\"label\":\"Etiqueta\"},\"headersDialog\":{\"addHeader\":\"Add header\",\"description\":\"These headers are forwarded to every HTTP request issued by the form (HTTP inputs, submit, options sources). Field-level headers with the same key override these.\",\"empty\":\"No headers yet.\",\"keyPlaceholder\":\"Authorization\",\"removeHeader\":\"Remove header\",\"title\":\"Global headers\",\"valuePlaceholder\":\"Bearer ...\"},\"httpConfigForm\":{\"addHeader\":\"Agregar encabezado\",\"apiUrl\":\"URL de la API\",\"apiUrlDesc\":\"Use variables de plantilla como {{fieldId}} para referenciar otros campos\",\"apiUrlPlaceholder\":\"https://api.ejemplo.com/data\",\"behavior\":\"Comportamiento\",\"fetchOnMount\":\"Cargar al montar\",\"headerName\":\"Nombre del encabezado\",\"headers\":\"Encabezados\",\"headerValue\":\"Valor del encabezado\",\"httpMethod\":\"Método HTTP\",\"insertVariable\":\"Insertar variable\",\"labelField\":\"Campo de etiqueta\",\"labelFieldDesc\":\"Campo a usar como etiqueta de opción (ej: nombre)\",\"labelFieldPlaceholder\":\"nombre\",\"mapToOptions\":\"Mapear a opciones\",\"methodDelete\":\"DELETE\",\"methodGet\":\"GET\",\"methodPatch\":\"PATCH\",\"methodPost\":\"POST\",\"methodPut\":\"PUT\",\"noFieldsAvailable\":\"No hay campos disponibles\",\"requestBody\":\"Cuerpo de la solicitud (JSON)\",\"requestBodyDesc\":\"Use {{fieldId}} para referenciar otros campos. Asegúrese de un formato JSON adecuado, incluyendo comillas alrededor de los valores de cadena.\",\"requestBodyPlaceholder\":\"{\\\"nombre\\\": \\\"{{nombreUsuario}}\\\", \\\"edad\\\": {{edadUsuario}}}\",\"responseConfiguration\":\"Configuración de respuesta\",\"responsePath\":\"Ruta de respuesta\",\"responsePathDesc\":\"Extraer datos de la respuesta usando notación de puntos o indexación de matriz\",\"responsePathPlaceholder\":\"data.users o results[0]\",\"searchParameter\":\"Parámetro de búsqueda (opcional)\",\"searchParameterDesc\":\"Si se configura, habilita un cuadro de búsqueda que agrega este parámetro a las llamadas API (ej: ?q=París)\",\"searchParameterPlaceholder\":\"q, buscar, consulta...\",\"selectMethod\":\"Seleccionar método\",\"sendAllFormValues\":\"Enviar todos los datos del formulario\",\"sendAllFormValuesDesc\":\"Enviar automáticamente todos los valores del formulario como cuerpo JSON\",\"showLoadingState\":\"Mostrar estado de carga\",\"valueField\":\"Campo de valor\",\"valueFieldDesc\":\"Campo a usar como valor de opción (ej: id)\",\"valueFieldPlaceholder\":\"id\"},\"inputNodeForm\":{\"addInputFieldsBeforeReference\":\"Agregue campos de entrada antes de este nodo para referenciarlos\",\"addMapping\":\"Agregar mapeo\",\"addOption\":\"Agregar opción\",\"advancedConfiguration\":\"Configuración avanzada\",\"defaultChecked\":\"Marcado por defecto\",\"defaultValuesCommaSeparated\":\"Valores predeterminados (separados por comas)\",\"defaultValuesPlaceholder\":\"valor1, valor2, valor3\",\"defaultValueType\":\"Tipo de valor predeterminado\",\"defaultValueTypeNone\":\"Ninguno\",\"defaultValueTypeReference\":\"Campo de referencia\",\"defaultValueTypeStatic\":\"Valor estático\",\"deleteOption\":\"Eliminar opción\",\"disablePast\":\"Desactivar fechas pasadas\",\"editOption\":\"Editar opción\",\"errorMessage\":\"Mensaje de error\",\"helperText\":\"Texto de ayuda\",\"httpConfiguration\":\"Configuración HTTP\",\"label\":\"Etiqueta\",\"multipleFiles\":\"Archivos múltiples\",\"multipleSelection\":\"Selección múltiple\",\"name\":\"Nombre\",\"nameDescription\":\"Nombre de campo personalizado opcional para la exportación del formulario. Si está vacío, la etiqueta se usará como clave.\",\"noParentFieldsAvailable\":\"No hay campos principales disponibles\",\"objectMapping\":\"Mapeo de objetos\",\"objectMappingDesc\":\"Mapear las propiedades del objeto de origen a una nueva estructura\",\"optional\":\"Opcional\",\"optionDescription\":\"Descripción\",\"optionImageAdd\":\"Agregar imagen\",\"optionImageError\":\"No se pudo procesar la imagen.\",\"optionImageInvalid\":\"Formato de imagen no compatible.\",\"optionImageRemove\":\"Quitar imagen\",\"optionImageReplace\":\"Reemplazar imagen\",\"optionImageTooLarge\":\"Imagen demasiado grande (máx. 5 MB).\",\"optionImageUpload\":\"Subir archivo\",\"optionImageUrlPlaceholder\":\"https://...\",\"optionLabel\":\"Etiqueta\",\"options\":\"Opciones\",\"optionValue\":\"Valor\",\"pattern\":\"Patrón\",\"placeholder\":\"Marcador de posición\",\"referenceField\":\"Campo de referencia\",\"required\":\"Obligatorio\",\"selectReferenceField\":\"Seleccionar un campo\",\"selectTransformation\":\"Seleccionar transformación\",\"selectType\":\"Seleccionar tipo\",\"sourceKey\":\"Clave de origen\",\"staticValue\":\"Valor estático\",\"staticValuePlaceholder\":\"Ingrese el valor predeterminado\",\"submitConfiguration\":\"Configuración de envío\",\"targetKey\":\"Clave de destino\",\"transformArray\":\"Convertir a matriz\",\"transformBoolean\":\"Convertir a booleano\",\"transformDesc\":\"Transformar el valor referenciado para que coincida con el tipo de este campo\",\"transformMapToObject\":\"Mapear a objeto\",\"transformNone\":\"Sin transformación\",\"transformNumber\":\"Convertir a número\",\"transformString\":\"Convertir a texto\",\"transformType\":\"Tipo de transformación\",\"validation\":\"Validación\",\"variant\":\"Variante\",\"variantCard\":\"Tarjeta\",\"variantDefault\":\"Predeterminado\"},\"nodeActionsSheet\":{\"deleteNode\":\"Eliminar nodo\",\"deleteNodeConfirm\":\"¿Estás seguro de que quieres eliminar este nodo?\",\"deleteNodeSuccess\":\"Nodo eliminado exitosamente\",\"editNode\":\"Editar nodo\"},\"openApiDialog\":{\"baseUrlHint\":\"Optional. Overrides the document's first server URL — useful when the spec points at a different environment.\",\"baseUrlLabel\":\"Base URL override\",\"clear\":\"Clear\",\"cleared\":\"OpenAPI cleared.\",\"description\":\"Provide an OpenAPI 3.x document to power URL suggestions and Authorize.\",\"emptyInput\":\"Please provide a URL or paste a JSON document.\",\"jsonLabel\":\"Paste your OpenAPI JSON\",\"load\":\"Load\",\"loadFailed\":\"Failed to load OpenAPI document\",\"loadSuccess\":\"OpenAPI loaded.\",\"modeJson\":\"Paste JSON\",\"modeUrl\":\"From URL\",\"title\":\"OpenAPI source\",\"urlLabel\":\"OpenAPI document URL\"},\"optionsSourceForm\":{\"descriptionField\":\"Description\",\"descriptionFieldPlaceholder\":\"Path to description (optional)\",\"detect\":\"Detect fields\",\"detectFailed\":\"Failed to fetch the API.\",\"detectSuccess\":\"Fields detected.\",\"disable\":\"Use static options\",\"dynamicHint\":\"Options are fetched from this API at runtime.\",\"enable\":\"Fetch from API\",\"imageField\":\"Image\",\"imageFieldPlaceholder\":\"Path to image URL (optional)\",\"labelField\":\"Label\",\"labelFieldPlaceholder\":\"Path to label (e.g., name)\",\"noFieldsDetected\":\"No fields detected — check the URL or response path.\",\"none\":\"— None —\",\"previewCount\":\"{count} options detected\",\"responsePath\":\"Response path\",\"responsePathHint\":\"Optional. Use a path like \\\"data.users\\\" if the array is nested.\",\"responsePathPlaceholder\":\"e.g., data.users\",\"staticOptions\":\"Static options\",\"staticOptionsHint\":\"Options are defined manually in the editor.\",\"title\":\"Options source\",\"urlRequired\":\"URL is required.\",\"valueField\":\"Value\",\"valueFieldPlaceholder\":\"Path to value (e.g., id)\"},\"selectInputType\":{\"type\":\"Tipo\"},\"selectNodeGroup\":{\"createNewGroup\":\"Crear un nuevo grupo\",\"group\":\"Grupo\",\"groupAlreadyExists\":\"Este grupo ya existe\",\"groupAlreadyExistsDesc\":\"Use el selector para agregar el nodo a un grupo existente.\",\"groupCreated\":\"Grupo creado\",\"groupCreatedDesc\":\"El grupo \\\"{groupName}\\\" se ha creado correctamente.\",\"groupName\":\"Nombre del grupo\",\"groupNamePlaceholder\":\"Ej: Paso 1 - Información personal\",\"newGroup\":\"Nuevo grupo\",\"newGroupDescription\":\"El grupo se creará alrededor del nodo seleccionado.\",\"noGroup\":\"Sin grupo\"},\"selectNodeType\":{\"nodeType\":\"Tipo de nodo\",\"options\":{\"flow\":\"Flujo externo\",\"group\":\"Grupo\",\"input\":\"Pregunta\",\"ui\":\"Elemento de diseño\"}},\"submitConfigForm\":{\"addHeader\":\"Agregar encabezado\",\"apiUrl\":\"URL de la API\",\"apiUrlDesc\":\"Use {{fieldId}} para referenciar otros campos\",\"apiUrlPlaceholder\":\"https://api.ejemplo.com/submit\",\"behavior\":\"Comportamiento\",\"errorMessage\":\"Mensaje de error\",\"errorMessageDesc\":\"Mensaje mostrado cuando falla el envío\",\"errorMessagePlaceholder\":\"Ocurrió un error. Por favor, intente nuevamente.\",\"headerName\":\"Nombre del encabezado\",\"headers\":\"Encabezados\",\"headerValue\":\"Valor del encabezado\",\"httpMethod\":\"Método HTTP\",\"insertVariable\":\"Insertar variable\",\"methodDelete\":\"DELETE\",\"methodPatch\":\"PATCH\",\"methodPost\":\"POST\",\"methodPut\":\"PUT\",\"noFieldsAvailable\":\"No hay campos disponibles\",\"postSubmission\":\"Después del envío\",\"redirectUrl\":\"URL de redirección\",\"redirectUrlDesc\":\"URL a la que redirigir después de un envío exitoso\",\"redirectUrlPlaceholder\":\"/success o https://ejemplo.com/gracias\",\"requestBody\":\"Cuerpo de la solicitud (JSON)\",\"requestBodyDesc\":\"Use {{fieldId}} para referenciar otros campos. Asegúrese de un formato JSON adecuado, incluyendo comillas alrededor de los valores de cadena.\",\"requestBodyPlaceholder\":\"{\\\"nombre\\\": \\\"{{nombreUsuario}}\\\", \\\"email\\\": \\\"{{emailUsuario}}\\\"}\",\"selectMethod\":\"Seleccionar método\",\"sendAllFormValues\":\"Enviar todos los datos del formulario\",\"sendAllFormValuesDesc\":\"Enviar automáticamente todos los valores del formulario como cuerpo JSON\",\"showLoadingState\":\"Mostrar estado de carga\",\"successMessage\":\"Mensaje de éxito\",\"successMessageDesc\":\"Mensaje mostrado cuando el envío es exitoso\",\"successMessagePlaceholder\":\"¡Formulario enviado exitosamente!\"},\"treegeNode\":{\"labelPlaceholder\":\"Etiqueta...\"},\"uiNodeForm\":{\"label\":\"Etiqueta\",\"type\":\"Tipo\",\"typeDivider\":\"Divisor\",\"typeTitle\":\"Título\"}}"),
|
|
232
|
+
editor: /* @__PURE__ */ JSON.parse("{\"actionsPanel\":{\"addNode\":\"Agregar elemento\",\"authorize\":\"Authorize\",\"clear\":\"Limpiar\",\"clearSuccess\":\"¡Flujo limpiado!\",\"clearSuccessDesc\":\"Todos los nodos y aristas han sido eliminados.\",\"copyFailed\":\"No se pudo copiar el ID del flujo\",\"downloadSuccess\":\"Descarga exitosa.\",\"downloadSuccessDesc\":\"El flujo se ha exportado correctamente.\",\"exportJson\":\"Exportar JSON\",\"globalHeaders\":\"Global headers\",\"idCopied\":\"ID del flujo copiado!\",\"importJson\":\"Importar JSON\",\"importSuccess\":\"¡Importación exitosa!\",\"importSuccessDesc\":\"El flujo se ha importado correctamente.\",\"invalidJson\":\"Archivo JSON inválido.\",\"invalidJsonDesc\":\"El archivo debe contener matrices de nodos y aristas.\",\"openApi\":\"OpenAPI\",\"parseError\":\"Error al analizar el archivo JSON.\",\"parseErrorDesc\":\"Intenta corregir el archivo e importarlo nuevamente.\"},\"aiGenerator\":{\"aiNotConfigured\":\"IA no configurada\",\"aiNotConfiguredDesc\":\"Agregue la prop {code} a TreegeEditorProvider\",\"buttonLabel\":\"Generar con IA\",\"cancel\":\"Cancelar\",\"description\":\"Descripción\",\"descriptionPlaceholder\":\"Ejemplo: Crear un formulario de contacto con nombre, correo electrónico, teléfono y mensaje\",\"enterDescription\":\"Por favor ingrese una descripción\",\"failedToGenerate\":\"Error al generar el árbol\",\"generate\":\"Generar\",\"generating\":\"Generando...\",\"keyboardShortcut\":\"Presione {cmdEnter} o {ctrlEnter} para generar\",\"missingApiKey\":\"Falta configuración de IA\",\"missingApiKeyDesc\":\"Por favor configure su clave API de IA en TreegeEditorProvider\",\"successDescription\":\"{nodes} nodos y {edges} aristas creados\",\"successTitle\":\"¡Árbol generado exitosamente!\",\"title\":\"Generar flujo con IA\",\"titleDescription\":\"Describa el formulario o árbol de decisión que desea crear, y la IA lo generará por usted.\",\"unknownError\":\"Error desconocido\"},\"apiUrlCombobox\":{\"browseRoutes\":\"Browse OpenAPI routes\",\"noRoutes\":\"No matching route\",\"searchRoutes\":\"Search by method, path, or summary\"},\"authorizeDialog\":{\"apiKeyLabel\":\"API key\",\"apply\":\"Apply\",\"bearerLabel\":\"Bearer token\",\"clear\":\"Clear\",\"description\":\"Authenticate against the API to forward credentials to every request issued by the form.\",\"exchangeFailed\":\"Failed to fetch access token\",\"noSchemes\":\"No supported security schemes are declared in this OpenAPI document.\",\"oauth2PasswordLabel\":\"OAuth2 password\",\"passwordPlaceholder\":\"Password\",\"title\":\"Authorize\",\"usernamePlaceholder\":\"Username\"},\"changeNodeTypeDialog\":{\"description\":\"Este nodo tiene varias ramas salientes. El nuevo tipo solo admite una. Elige qué rama conservar; las demás serán eliminadas.\",\"keepBranch\":\"Conservar esta rama\",\"noConditions\":\"Sin condiciones\",\"title\":\"Cambiar tipo de nodo\"},\"comboboxPattern\":{\"custom\":\"Personalizado: {value}\",\"search\":\"Buscar patrones...\",\"selectOrCreate\":\"Seleccionar o crear un patrón\",\"usePattern\":\"Usar patrón: {query}\"},\"comboboxWithCreate\":{\"clearSelection\":\"Limpiar selección\",\"noResults\":\"No se encontraron resultados\"},\"conditionalEdge\":{\"addCondition\":\"Agregar condición\",\"and\":\"Y\",\"condition\":\"Condición\",\"conditions\":\"Condiciones\",\"conditionsAnd\":\"condiciones (Y)\",\"conditionsMixed\":\"condiciones (mixtas)\",\"conditionsOr\":\"condiciones (O)\",\"defineCondition\":\"Definir una condición\",\"displayConditions\":\"Mostrar condiciones\",\"displayConditionsDesc\":\"Este campo se mostrará si se cumplen las siguientes condiciones.\",\"fallback\":\"Predeterminado\",\"fallbackPath\":\"Ruta predeterminada / de respaldo\",\"fallbackPathDesc\":\"Esta ruta se seguirá cuando ninguna otra condición coincida\",\"field\":\"Campo\",\"labelDesc\":\"Etiqueta personalizada para el botón de condición\",\"labelOptional\":\"Etiqueta (opcional)\",\"labelPlaceholder\":\"Ej: Si es elegible\",\"noFieldsAvailable\":\"No hay campos disponibles\",\"operator\":\"Operador\",\"or\":\"O\",\"removeCondition\":\"Eliminar condición\",\"selectField\":\"Seleccionar un campo\",\"value\":\"Valor\",\"valuePlaceholder\":\"Ej: 18\"},\"flowNodeForm\":{\"label\":\"Etiqueta\",\"targetId\":\"ID de destino\",\"targetIdDesc\":\"Identificador único del flujo de destino.\"},\"groupNodeForm\":{\"label\":\"Etiqueta\"},\"headersDialog\":{\"addHeader\":\"Add header\",\"description\":\"These headers are forwarded to every HTTP request issued by the form (HTTP inputs, submit, options sources). Field-level headers with the same key override these.\",\"empty\":\"No headers yet.\",\"keyPlaceholder\":\"Authorization\",\"removeHeader\":\"Remove header\",\"title\":\"Global headers\",\"valuePlaceholder\":\"Bearer ...\"},\"httpConfigForm\":{\"addHeader\":\"Agregar encabezado\",\"apiUrl\":\"URL de la API\",\"apiUrlDesc\":\"Use variables de plantilla como {{fieldId}} para referenciar otros campos\",\"apiUrlPlaceholder\":\"https://api.ejemplo.com/data\",\"behavior\":\"Comportamiento\",\"fetchOnMount\":\"Cargar al montar\",\"headerName\":\"Nombre del encabezado\",\"headers\":\"Encabezados\",\"headerValue\":\"Valor del encabezado\",\"httpMethod\":\"Método HTTP\",\"insertVariable\":\"Insertar variable\",\"labelField\":\"Campo de etiqueta\",\"labelFieldDesc\":\"Campo a usar como etiqueta de opción (ej: nombre)\",\"labelFieldPlaceholder\":\"nombre\",\"mapToOptions\":\"Mapear a opciones\",\"methodDelete\":\"DELETE\",\"methodGet\":\"GET\",\"methodPatch\":\"PATCH\",\"methodPost\":\"POST\",\"methodPut\":\"PUT\",\"noFieldsAvailable\":\"No hay campos disponibles\",\"requestBody\":\"Cuerpo de la solicitud (JSON)\",\"requestBodyDesc\":\"Use {{fieldId}} para referenciar otros campos. Asegúrese de un formato JSON adecuado, incluyendo comillas alrededor de los valores de cadena.\",\"requestBodyPlaceholder\":\"{\\\"nombre\\\": \\\"{{nombreUsuario}}\\\", \\\"edad\\\": {{edadUsuario}}}\",\"responseConfiguration\":\"Configuración de respuesta\",\"responsePath\":\"Ruta de respuesta\",\"responsePathDesc\":\"Extraer datos de la respuesta usando notación de puntos o indexación de matriz\",\"responsePathPlaceholder\":\"data.users o results[0]\",\"searchParameter\":\"Parámetro de búsqueda (opcional)\",\"searchParameterDesc\":\"Si se configura, habilita un cuadro de búsqueda que agrega este parámetro a las llamadas API (ej: ?q=París)\",\"searchParameterPlaceholder\":\"q, buscar, consulta...\",\"selectMethod\":\"Seleccionar método\",\"sendAllFormValues\":\"Enviar todos los datos del formulario\",\"sendAllFormValuesDesc\":\"Enviar automáticamente todos los valores del formulario como cuerpo JSON\",\"showLoadingState\":\"Mostrar estado de carga\",\"valueField\":\"Campo de valor\",\"valueFieldDesc\":\"Campo a usar como valor de opción (ej: id)\",\"valueFieldPlaceholder\":\"id\"},\"inputNodeForm\":{\"addInputFieldsBeforeReference\":\"Agregue campos de entrada antes de este nodo para referenciarlos\",\"addMapping\":\"Agregar mapeo\",\"addOption\":\"Agregar opción\",\"advancedConfiguration\":\"Configuración avanzada\",\"defaultChecked\":\"Marcado por defecto\",\"defaultValuesCommaSeparated\":\"Valores predeterminados (separados por comas)\",\"defaultValuesPlaceholder\":\"valor1, valor2, valor3\",\"defaultValueType\":\"Tipo de valor predeterminado\",\"defaultValueTypeNone\":\"Ninguno\",\"defaultValueTypeReference\":\"Campo de referencia\",\"defaultValueTypeStatic\":\"Valor estático\",\"deleteOption\":\"Eliminar opción\",\"disablePast\":\"Desactivar fechas pasadas\",\"editOption\":\"Editar opción\",\"errorMessage\":\"Mensaje de error\",\"helperText\":\"Texto de ayuda\",\"httpConfiguration\":\"Configuración HTTP\",\"label\":\"Etiqueta\",\"multipleFiles\":\"Archivos múltiples\",\"multipleSelection\":\"Selección múltiple\",\"name\":\"Nombre\",\"nameDescription\":\"Nombre de campo personalizado opcional para la exportación del formulario. Si está vacío, la etiqueta se usará como clave.\",\"noParentFieldsAvailable\":\"No hay campos principales disponibles\",\"objectMapping\":\"Mapeo de objetos\",\"objectMappingDesc\":\"Mapear las propiedades del objeto de origen a una nueva estructura\",\"optional\":\"Opcional\",\"optionDescription\":\"Descripción\",\"optionImageAdd\":\"Agregar imagen\",\"optionImageError\":\"No se pudo procesar la imagen.\",\"optionImageInvalid\":\"Formato de imagen no compatible.\",\"optionImageRemove\":\"Quitar imagen\",\"optionImageReplace\":\"Reemplazar imagen\",\"optionImageTooLarge\":\"Imagen demasiado grande (máx. 5 MB).\",\"optionImageUpload\":\"Subir archivo\",\"optionImageUrlPlaceholder\":\"https://...\",\"optionLabel\":\"Etiqueta\",\"options\":\"Opciones\",\"optionValue\":\"Valor\",\"pattern\":\"Patrón\",\"placeholder\":\"Marcador de posición\",\"referenceField\":\"Campo de referencia\",\"required\":\"Obligatorio\",\"selectReferenceField\":\"Seleccionar un campo\",\"selectTransformation\":\"Seleccionar transformación\",\"selectType\":\"Seleccionar tipo\",\"sourceKey\":\"Clave de origen\",\"staticValue\":\"Valor estático\",\"staticValuePlaceholder\":\"Ingrese el valor predeterminado\",\"submitConfiguration\":\"Configuración de envío\",\"targetKey\":\"Clave de destino\",\"transformArray\":\"Convertir a matriz\",\"transformBoolean\":\"Convertir a booleano\",\"transformDesc\":\"Transformar el valor referenciado para que coincida con el tipo de este campo\",\"transformMapToObject\":\"Mapear a objeto\",\"transformNone\":\"Sin transformación\",\"transformNumber\":\"Convertir a número\",\"transformString\":\"Convertir a texto\",\"transformType\":\"Tipo de transformación\",\"validation\":\"Validación\",\"variant\":\"Variante\",\"variantCard\":\"Tarjeta\",\"variantDefault\":\"Predeterminado\"},\"nodeActionsSheet\":{\"deleteNode\":\"Eliminar nodo\",\"deleteNodeConfirm\":\"¿Estás seguro de que quieres eliminar este nodo?\",\"deleteNodeSuccess\":\"Nodo eliminado exitosamente\",\"editNode\":\"Editar nodo\"},\"openApiDialog\":{\"baseUrlHint\":\"Optional. Overrides the document's first server URL — useful when the spec points at a different environment.\",\"baseUrlLabel\":\"Base URL override\",\"clear\":\"Clear\",\"cleared\":\"OpenAPI cleared.\",\"description\":\"Provide an OpenAPI 3.x document to power URL suggestions and Authorize.\",\"emptyInput\":\"Please provide a URL or paste a JSON document.\",\"jsonLabel\":\"Paste your OpenAPI JSON\",\"load\":\"Load\",\"loadFailed\":\"Failed to load OpenAPI document\",\"loadSuccess\":\"OpenAPI loaded.\",\"modeJson\":\"Paste JSON\",\"modeUrl\":\"From URL\",\"title\":\"OpenAPI source\",\"urlLabel\":\"OpenAPI document URL\"},\"optionsSourceForm\":{\"descriptionField\":\"Description\",\"descriptionFieldPlaceholder\":\"Path to description (optional)\",\"detect\":\"Detect fields\",\"detectFailed\":\"Failed to fetch the API.\",\"detectSuccess\":\"Fields detected.\",\"disable\":\"Use static options\",\"dynamicHint\":\"Options are fetched from this API at runtime.\",\"enable\":\"Fetch from API\",\"imageField\":\"Image\",\"imageFieldPlaceholder\":\"Path to image URL (optional)\",\"labelField\":\"Label\",\"labelFieldPlaceholder\":\"Path to label (e.g., name)\",\"noFieldsDetected\":\"No fields detected — check the URL or response path.\",\"none\":\"— None —\",\"previewCount\":\"{count} options detected\",\"responsePath\":\"Response path\",\"responsePathHint\":\"Optional. Use a path like \\\"data.users\\\" if the array is nested.\",\"responsePathPlaceholder\":\"e.g., data.users\",\"staticOptions\":\"Static options\",\"staticOptionsHint\":\"Options are defined manually in the editor.\",\"title\":\"Options source\",\"urlRequired\":\"URL is required.\",\"valueField\":\"Value\",\"valueFieldPlaceholder\":\"Path to value (e.g., id)\"},\"selectInputType\":{\"type\":\"Tipo\"},\"selectNodeGroup\":{\"createNewGroup\":\"Crear un nuevo grupo\",\"group\":\"Grupo\",\"groupAlreadyExists\":\"Este grupo ya existe\",\"groupAlreadyExistsDesc\":\"Use el selector para agregar el nodo a un grupo existente.\",\"groupCreated\":\"Grupo creado\",\"groupCreatedDesc\":\"El grupo \\\"{groupName}\\\" se ha creado correctamente.\",\"groupName\":\"Nombre del grupo\",\"groupNamePlaceholder\":\"Ej: Paso 1 - Información personal\",\"newGroup\":\"Nuevo grupo\",\"newGroupDescription\":\"El grupo se creará alrededor del nodo seleccionado.\",\"noGroup\":\"Sin grupo\",\"renameGroup\":\"Renombrar grupo\"},\"selectNodeType\":{\"nodeType\":\"Tipo de nodo\",\"options\":{\"flow\":\"Flujo externo\",\"group\":\"Grupo\",\"input\":\"Pregunta\",\"ui\":\"Elemento de diseño\"}},\"submitConfigForm\":{\"addHeader\":\"Agregar encabezado\",\"apiUrl\":\"URL de la API\",\"apiUrlDesc\":\"Use {{fieldId}} para referenciar otros campos\",\"apiUrlPlaceholder\":\"https://api.ejemplo.com/submit\",\"behavior\":\"Comportamiento\",\"errorMessage\":\"Mensaje de error\",\"errorMessageDesc\":\"Mensaje mostrado cuando falla el envío\",\"errorMessagePlaceholder\":\"Ocurrió un error. Por favor, intente nuevamente.\",\"headerName\":\"Nombre del encabezado\",\"headers\":\"Encabezados\",\"headerValue\":\"Valor del encabezado\",\"httpMethod\":\"Método HTTP\",\"insertVariable\":\"Insertar variable\",\"methodDelete\":\"DELETE\",\"methodPatch\":\"PATCH\",\"methodPost\":\"POST\",\"methodPut\":\"PUT\",\"noFieldsAvailable\":\"No hay campos disponibles\",\"postSubmission\":\"Después del envío\",\"redirectUrl\":\"URL de redirección\",\"redirectUrlDesc\":\"URL a la que redirigir después de un envío exitoso\",\"redirectUrlPlaceholder\":\"/success o https://ejemplo.com/gracias\",\"requestBody\":\"Cuerpo de la solicitud (JSON)\",\"requestBodyDesc\":\"Use {{fieldId}} para referenciar otros campos. Asegúrese de un formato JSON adecuado, incluyendo comillas alrededor de los valores de cadena.\",\"requestBodyPlaceholder\":\"{\\\"nombre\\\": \\\"{{nombreUsuario}}\\\", \\\"email\\\": \\\"{{emailUsuario}}\\\"}\",\"selectMethod\":\"Seleccionar método\",\"sendAllFormValues\":\"Enviar todos los datos del formulario\",\"sendAllFormValuesDesc\":\"Enviar automáticamente todos los valores del formulario como cuerpo JSON\",\"showLoadingState\":\"Mostrar estado de carga\",\"successMessage\":\"Mensaje de éxito\",\"successMessageDesc\":\"Mensaje mostrado cuando el envío es exitoso\",\"successMessagePlaceholder\":\"¡Formulario enviado exitosamente!\"},\"treegeNode\":{\"labelPlaceholder\":\"Etiqueta...\"},\"uiNodeForm\":{\"label\":\"Etiqueta\",\"type\":\"Tipo\",\"typeDivider\":\"Divisor\",\"typeTitle\":\"Título\"}}"),
|
|
221
233
|
renderer: {
|
|
222
234
|
defaultAddressInput: {
|
|
223
235
|
enterAddress: "Ingrese una dirección...",
|
|
@@ -264,6 +276,10 @@ var u = (e) => e?.type === "input", d = (e) => e?.type === "ui", f = (e) => e?.t
|
|
|
264
276
|
defaultSubmitButton: {
|
|
265
277
|
requiredFieldsMissing: "Faltan campos obligatorios",
|
|
266
278
|
submit: "Enviar"
|
|
279
|
+
},
|
|
280
|
+
step: {
|
|
281
|
+
back: "Atrás",
|
|
282
|
+
continue: "Continuar"
|
|
267
283
|
}
|
|
268
284
|
},
|
|
269
285
|
validation: {
|
|
@@ -284,7 +300,7 @@ var u = (e) => e?.type === "input", d = (e) => e?.type === "ui", f = (e) => e?.t
|
|
|
284
300
|
submit: "Soumettre",
|
|
285
301
|
toggle: "Basculer"
|
|
286
302
|
},
|
|
287
|
-
editor: /* @__PURE__ */ JSON.parse("{\"actionsPanel\":{\"addNode\":\"Ajouter un élément\",\"authorize\":\"Autoriser\",\"clear\":\"Supprimer\",\"clearSuccess\":\"Flux vidé !\",\"clearSuccessDesc\":\"Tous les nœuds et arêtes ont été supprimés.\",\"copyFailed\":\"Échec de la copie de l'ID du flux\",\"downloadSuccess\":\"Téléchargement réussi.\",\"downloadSuccessDesc\":\"Le flux a été exporté avec succès.\",\"exportJson\":\"Exporter JSON\",\"globalHeaders\":\"Headers globaux\",\"idCopied\":\"ID du flux copié !\",\"importJson\":\"Importer JSON\",\"importSuccess\":\"Importation réussie !\",\"importSuccessDesc\":\"Le flux a été importé avec succès.\",\"invalidJson\":\"Fichier JSON invalide.\",\"invalidJsonDesc\":\"Le fichier doit contenir des tableaux de nœuds et d'arêtes.\",\"openApi\":\"OpenAPI\",\"parseError\":\"Erreur d'analyse du fichier JSON.\",\"parseErrorDesc\":\"Essayez de corriger le fichier et de l'importer à nouveau.\"},\"aiGenerator\":{\"aiNotConfigured\":\"IA non configurée\",\"aiNotConfiguredDesc\":\"Ajoutez la prop {code} à TreegeEditorProvider\",\"buttonLabel\":\"Générer avec l'IA\",\"cancel\":\"Annuler\",\"description\":\"Description\",\"descriptionPlaceholder\":\"Exemple : Créer un formulaire de contact avec nom, email, téléphone et message\",\"enterDescription\":\"Veuillez entrer une description\",\"failedToGenerate\":\"Échec de la génération de l'arbre\",\"generate\":\"Générer\",\"generating\":\"Génération...\",\"keyboardShortcut\":\"Appuyez sur {cmdEnter} ou {ctrlEnter} pour générer\",\"missingApiKey\":\"Configuration IA manquante\",\"missingApiKeyDesc\":\"Veuillez configurer votre clé API IA dans TreegeEditorProvider\",\"successDescription\":\"{nodes} nœuds et {edges} arêtes créés\",\"successTitle\":\"Arbre généré avec succès !\",\"title\":\"Générer un flux avec l'IA\",\"titleDescription\":\"Décrivez le formulaire ou l'arbre de décision que vous souhaitez créer, et l'IA le générera pour vous.\",\"unknownError\":\"Erreur inconnue\"},\"apiUrlCombobox\":{\"browseRoutes\":\"Parcourir les routes OpenAPI\",\"noRoutes\":\"Aucune route correspondante\",\"searchRoutes\":\"Rechercher par méthode, chemin ou résumé\"},\"authorizeDialog\":{\"apiKeyLabel\":\"Clé d'API\",\"apply\":\"Appliquer\",\"bearerLabel\":\"Jeton Bearer\",\"clear\":\"Effacer\",\"description\":\"Authentifiez-vous auprès de l'API pour transmettre les identifiants à chaque requête émise par le formulaire.\",\"exchangeFailed\":\"Échec de l'obtention du token d'accès\",\"noSchemes\":\"Aucun schéma de sécurité supporté n'est déclaré dans ce document OpenAPI.\",\"oauth2PasswordLabel\":\"OAuth2 mot de passe\",\"passwordPlaceholder\":\"Mot de passe\",\"title\":\"Autoriser\",\"usernamePlaceholder\":\"Nom d'utilisateur\"},\"changeNodeTypeDialog\":{\"description\":\"Ce nœud possède plusieurs branches sortantes. Le nouveau type n'en supporte qu'une seule. Choisissez la branche à conserver ; les autres seront supprimées.\",\"keepBranch\":\"Conserver cette branche\",\"noConditions\":\"Aucune condition\",\"title\":\"Changer le type de nœud\"},\"comboboxPattern\":{\"custom\":\"Personnalisé : {value}\",\"search\":\"Rechercher des motifs...\",\"selectOrCreate\":\"Sélectionner ou créer un motif\",\"usePattern\":\"Utiliser le motif : {query}\"},\"comboboxWithCreate\":{\"clearSelection\":\"Effacer la sélection\",\"noResults\":\"Aucun résultat trouvé\"},\"conditionalEdge\":{\"addCondition\":\"Ajouter une condition\",\"and\":\"ET\",\"condition\":\"Condition\",\"conditions\":\"Conditions\",\"conditionsAnd\":\"conditions (ET)\",\"conditionsMixed\":\"conditions (mixtes)\",\"conditionsOr\":\"conditions (OU)\",\"defineCondition\":\"Définir une condition\",\"displayConditions\":\"Afficher les conditions\",\"displayConditionsDesc\":\"Ce champ sera affiché si les conditions suivantes sont remplies.\",\"fallback\":\"Par défaut\",\"fallbackPath\":\"Chemin par défaut / de secours\",\"fallbackPathDesc\":\"Ce chemin sera suivi lorsqu'aucune autre condition ne correspond\",\"field\":\"Champ\",\"labelDesc\":\"Libellé personnalisé pour le bouton de condition\",\"labelOptional\":\"Libellé (optionnel)\",\"labelPlaceholder\":\"Ex : Si éligible\",\"noFieldsAvailable\":\"Aucun champ disponible\",\"operator\":\"Opérateur\",\"or\":\"OU\",\"removeCondition\":\"Supprimer la condition\",\"selectField\":\"Sélectionner un champ\",\"value\":\"Valeur\",\"valuePlaceholder\":\"Ex : 18\"},\"flowNodeForm\":{\"label\":\"Libellé\",\"targetId\":\"ID cible\",\"targetIdDesc\":\"Identifiant unique du flux cible.\"},\"groupNodeForm\":{\"label\":\"Libellé\"},\"headersDialog\":{\"addHeader\":\"Ajouter un header\",\"description\":\"Ces headers sont transmis à chaque requête HTTP émise par le formulaire (inputs HTTP, submit, sources d'options). Les headers field-level avec la même clé prennent le dessus.\",\"empty\":\"Aucun header pour l'instant.\",\"keyPlaceholder\":\"Authorization\",\"removeHeader\":\"Supprimer le header\",\"title\":\"Headers globaux\",\"valuePlaceholder\":\"Bearer ...\"},\"httpConfigForm\":{\"addHeader\":\"Ajouter un en-tête\",\"apiUrl\":\"URL de l'API\",\"apiUrlDesc\":\"Utilisez des variables de modèle comme {{fieldId}} pour référencer d'autres champs\",\"apiUrlPlaceholder\":\"https://api.exemple.com/data\",\"behavior\":\"Comportement\",\"fetchOnMount\":\"Charger au montage\",\"headerName\":\"Nom de l'en-tête\",\"headers\":\"En-têtes\",\"headerValue\":\"Valeur de l'en-tête\",\"httpMethod\":\"Méthode HTTP\",\"insertVariable\":\"Insérer une variable\",\"labelField\":\"Champ de libellé\",\"labelFieldDesc\":\"Champ à utiliser comme libellé d'option (ex : nom)\",\"labelFieldPlaceholder\":\"nom\",\"mapToOptions\":\"Mapper vers les options\",\"methodDelete\":\"DELETE\",\"methodGet\":\"GET\",\"methodPatch\":\"PATCH\",\"methodPost\":\"POST\",\"methodPut\":\"PUT\",\"noFieldsAvailable\":\"Aucun champ disponible\",\"requestBody\":\"Corps de la requête (JSON)\",\"requestBodyDesc\":\"Utilisez {{fieldId}} pour référencer d'autres champs. Assurez-vous d'un formatage JSON approprié, incluant les guillemets autour des valeurs de chaîne.\",\"requestBodyPlaceholder\":\"{\\\"nom\\\": \\\"{{nomUtilisateur}}\\\", \\\"age\\\": {{ageUtilisateur}}}\",\"responseConfiguration\":\"Configuration de la réponse\",\"responsePath\":\"Chemin de la réponse\",\"responsePathDesc\":\"Extraire les données de la réponse en utilisant la notation par points ou l'indexation de tableau\",\"responsePathPlaceholder\":\"data.users ou results[0]\",\"searchParameter\":\"Paramètre de recherche (optionnel)\",\"searchParameterDesc\":\"Si défini, active une zone de recherche qui ajoute ce paramètre aux appels API (ex : ?q=Paris)\",\"searchParameterPlaceholder\":\"q, recherche, requête...\",\"selectMethod\":\"Sélectionner une méthode\",\"sendAllFormValues\":\"Envoyer toutes les données du formulaire\",\"sendAllFormValuesDesc\":\"Envoyer automatiquement toutes les valeurs du formulaire en tant que corps JSON\",\"showLoadingState\":\"Afficher l'état de chargement\",\"valueField\":\"Champ de valeur\",\"valueFieldDesc\":\"Champ à utiliser comme valeur d'option (ex : id)\",\"valueFieldPlaceholder\":\"id\"},\"inputNodeForm\":{\"addInputFieldsBeforeReference\":\"Ajoutez des champs de saisie avant ce nœud pour les référencer\",\"addMapping\":\"Ajouter un mappage\",\"addOption\":\"Ajouter une option\",\"advancedConfiguration\":\"Configuration avancée\",\"defaultChecked\":\"Coché par défaut\",\"defaultValuesCommaSeparated\":\"Valeurs par défaut (séparées par des virgules)\",\"defaultValuesPlaceholder\":\"valeur1, valeur2, valeur3\",\"defaultValueType\":\"Type de valeur par défaut\",\"defaultValueTypeNone\":\"Aucun\",\"defaultValueTypeReference\":\"Champ de référence\",\"defaultValueTypeStatic\":\"Valeur statique\",\"deleteOption\":\"Supprimer l'option\",\"disablePast\":\"Désactiver les dates passées\",\"editOption\":\"Modifier l'option\",\"errorMessage\":\"Message d'erreur\",\"helperText\":\"Texte d'aide\",\"httpConfiguration\":\"Configuration HTTP\",\"label\":\"Libellé\",\"multipleFiles\":\"Fichiers multiples\",\"multipleSelection\":\"Sélection multiple\",\"name\":\"Nom\",\"nameDescription\":\"Nom de champ personnalisé optionnel pour l'export du formulaire. Si vide, le libellé sera utilisé comme clé.\",\"noParentFieldsAvailable\":\"Aucun champ parent disponible\",\"objectMapping\":\"Mappage d'objet\",\"objectMappingDesc\":\"Mapper les propriétés de l'objet source vers une nouvelle structure\",\"optional\":\"Optionnel\",\"optionDescription\":\"Description\",\"optionImageAdd\":\"Ajouter une image\",\"optionImageError\":\"Impossible de traiter l'image.\",\"optionImageInvalid\":\"Format d'image non pris en charge.\",\"optionImageRemove\":\"Retirer l'image\",\"optionImageReplace\":\"Remplacer l'image\",\"optionImageTooLarge\":\"Image trop volumineuse (max 5 Mo).\",\"optionImageUpload\":\"Importer un fichier\",\"optionImageUrlPlaceholder\":\"https://...\",\"optionLabel\":\"Libellé\",\"options\":\"Options\",\"optionValue\":\"Valeur\",\"pattern\":\"Motif\",\"placeholder\":\"Texte indicatif\",\"referenceField\":\"Champ de référence\",\"required\":\"Requis\",\"selectReferenceField\":\"Sélectionner un champ\",\"selectTransformation\":\"Sélectionner une transformation\",\"selectType\":\"Sélectionner un type\",\"sourceKey\":\"Clé source\",\"staticValue\":\"Valeur statique\",\"staticValuePlaceholder\":\"Entrer une valeur par défaut\",\"submitConfiguration\":\"Configuration de soumission\",\"targetKey\":\"Clé cible\",\"transformArray\":\"Convertir en tableau\",\"transformBoolean\":\"Convertir en booléen\",\"transformDesc\":\"Transformer la valeur référencée pour correspondre au type de ce champ\",\"transformMapToObject\":\"Mapper vers un objet\",\"transformNone\":\"Aucune transformation\",\"transformNumber\":\"Convertir en nombre\",\"transformString\":\"Convertir en chaîne\",\"transformType\":\"Type de transformation\",\"validation\":\"Validation\",\"variant\":\"Variante\",\"variantCard\":\"Carte\",\"variantDefault\":\"Par défaut\"},\"nodeActionsSheet\":{\"deleteNode\":\"Supprimer le nœud\",\"deleteNodeConfirm\":\"Êtes-vous sûr de vouloir supprimer ce nœud ?\",\"deleteNodeSuccess\":\"Nœud supprimé avec succès\",\"editNode\":\"Modifier le nœud\"},\"openApiDialog\":{\"baseUrlHint\":\"Optionnel. Remplace l'URL du premier serveur du document — utile quand la spec pointe vers un autre environnement.\",\"baseUrlLabel\":\"Override de l'URL de base\",\"clear\":\"Effacer\",\"cleared\":\"OpenAPI effacé.\",\"description\":\"Fournissez un document OpenAPI 3.x pour activer les suggestions d'URL et l'autorisation.\",\"emptyInput\":\"Veuillez fournir une URL ou coller un document JSON.\",\"jsonLabel\":\"Collez votre OpenAPI JSON\",\"load\":\"Charger\",\"loadFailed\":\"Échec du chargement du document OpenAPI\",\"loadSuccess\":\"OpenAPI chargé.\",\"modeJson\":\"Coller JSON\",\"modeUrl\":\"Depuis URL\",\"title\":\"Source OpenAPI\",\"urlLabel\":\"URL du document OpenAPI\"},\"optionsSourceForm\":{\"descriptionField\":\"Description\",\"descriptionFieldPlaceholder\":\"Chemin vers la description (optionnel)\",\"detect\":\"Détecter les champs\",\"detectFailed\":\"Échec de la requête.\",\"detectSuccess\":\"Champs détectés.\",\"disable\":\"Utiliser des options statiques\",\"dynamicHint\":\"Les options sont récupérées depuis cette API au runtime.\",\"enable\":\"Récupérer depuis une API\",\"imageField\":\"Image\",\"imageFieldPlaceholder\":\"Chemin vers l'URL de l'image (optionnel)\",\"labelField\":\"Label\",\"labelFieldPlaceholder\":\"Chemin vers le label (ex. name)\",\"noFieldsDetected\":\"Aucun champ détecté — vérifiez l'URL ou le chemin de réponse.\",\"none\":\"— Aucun —\",\"previewCount\":\"{count} options détectées\",\"responsePath\":\"Chemin de réponse\",\"responsePathHint\":\"Optionnel. Utilisez un chemin comme \\\"data.users\\\" si le tableau est imbriqué.\",\"responsePathPlaceholder\":\"ex. data.users\",\"staticOptions\":\"Options statiques\",\"staticOptionsHint\":\"Les options sont définies manuellement dans l'éditeur.\",\"title\":\"Source des options\",\"urlRequired\":\"L'URL est requise.\",\"valueField\":\"Valeur\",\"valueFieldPlaceholder\":\"Chemin vers la valeur (ex. id)\"},\"selectInputType\":{\"type\":\"Type\"},\"selectNodeGroup\":{\"createNewGroup\":\"Créer un nouveau groupe\",\"group\":\"Groupe\",\"groupAlreadyExists\":\"Ce groupe existe déjà\",\"groupAlreadyExistsDesc\":\"Utilisez le sélecteur pour ajouter le nœud à un groupe existant.\",\"groupCreated\":\"Groupe créé\",\"groupCreatedDesc\":\"Le groupe \\\"{groupName}\\\" a été créé avec succès.\",\"groupName\":\"Nom du groupe\",\"groupNamePlaceholder\":\"Ex : Étape 1 - Informations personnelles\",\"newGroup\":\"Nouveau groupe\",\"newGroupDescription\":\"Le groupe sera créé autour du nœud sélectionné.\",\"noGroup\":\"Aucun groupe\"},\"selectNodeType\":{\"nodeType\":\"Type de nœud\",\"options\":{\"flow\":\"Flux externe\",\"group\":\"Groupe\",\"input\":\"Question\",\"ui\":\"Élément de design\"}},\"submitConfigForm\":{\"addHeader\":\"Ajouter un en-tête\",\"apiUrl\":\"URL de l'API\",\"apiUrlDesc\":\"Utilisez {{fieldId}} pour référencer d'autres champs\",\"apiUrlPlaceholder\":\"https://api.exemple.com/submit\",\"behavior\":\"Comportement\",\"errorMessage\":\"Message d'erreur\",\"errorMessageDesc\":\"Message affiché en cas d'échec de la soumission\",\"errorMessagePlaceholder\":\"Une erreur s'est produite. Veuillez réessayer.\",\"headerName\":\"Nom de l'en-tête\",\"headers\":\"En-têtes\",\"headerValue\":\"Valeur de l'en-tête\",\"httpMethod\":\"Méthode HTTP\",\"insertVariable\":\"Insérer une variable\",\"methodDelete\":\"DELETE\",\"methodPatch\":\"PATCH\",\"methodPost\":\"POST\",\"methodPut\":\"PUT\",\"noFieldsAvailable\":\"Aucun champ disponible\",\"postSubmission\":\"Après soumission\",\"redirectUrl\":\"URL de redirection\",\"redirectUrlDesc\":\"URL vers laquelle rediriger après une soumission réussie\",\"redirectUrlPlaceholder\":\"/success ou https://exemple.com/merci\",\"requestBody\":\"Corps de la requête (JSON)\",\"requestBodyDesc\":\"Utilisez {{fieldId}} pour référencer d'autres champs. Assurez-vous d'un formatage JSON approprié, incluant les guillemets autour des valeurs de chaîne.\",\"requestBodyPlaceholder\":\"{\\\"nom\\\": \\\"{{nomUtilisateur}}\\\", \\\"email\\\": \\\"{{emailUtilisateur}}\\\"}\",\"selectMethod\":\"Sélectionner une méthode\",\"sendAllFormValues\":\"Envoyer toutes les données du formulaire\",\"sendAllFormValuesDesc\":\"Envoyer automatiquement toutes les valeurs du formulaire en tant que corps JSON\",\"showLoadingState\":\"Afficher l'état de chargement\",\"successMessage\":\"Message de succès\",\"successMessageDesc\":\"Message affiché en cas de soumission réussie\",\"successMessagePlaceholder\":\"Formulaire soumis avec succès !\"},\"treegeNode\":{\"labelPlaceholder\":\"Libellé...\"},\"uiNodeForm\":{\"label\":\"Libellé\",\"type\":\"Type\",\"typeDivider\":\"Séparateur\",\"typeTitle\":\"Titre\"}}"),
|
|
303
|
+
editor: /* @__PURE__ */ JSON.parse("{\"actionsPanel\":{\"addNode\":\"Ajouter un élément\",\"authorize\":\"Autoriser\",\"clear\":\"Supprimer\",\"clearSuccess\":\"Flux vidé !\",\"clearSuccessDesc\":\"Tous les nœuds et arêtes ont été supprimés.\",\"copyFailed\":\"Échec de la copie de l'ID du flux\",\"downloadSuccess\":\"Téléchargement réussi.\",\"downloadSuccessDesc\":\"Le flux a été exporté avec succès.\",\"exportJson\":\"Exporter JSON\",\"globalHeaders\":\"Headers globaux\",\"idCopied\":\"ID du flux copié !\",\"importJson\":\"Importer JSON\",\"importSuccess\":\"Importation réussie !\",\"importSuccessDesc\":\"Le flux a été importé avec succès.\",\"invalidJson\":\"Fichier JSON invalide.\",\"invalidJsonDesc\":\"Le fichier doit contenir des tableaux de nœuds et d'arêtes.\",\"openApi\":\"OpenAPI\",\"parseError\":\"Erreur d'analyse du fichier JSON.\",\"parseErrorDesc\":\"Essayez de corriger le fichier et de l'importer à nouveau.\"},\"aiGenerator\":{\"aiNotConfigured\":\"IA non configurée\",\"aiNotConfiguredDesc\":\"Ajoutez la prop {code} à TreegeEditorProvider\",\"buttonLabel\":\"Générer avec l'IA\",\"cancel\":\"Annuler\",\"description\":\"Description\",\"descriptionPlaceholder\":\"Exemple : Créer un formulaire de contact avec nom, email, téléphone et message\",\"enterDescription\":\"Veuillez entrer une description\",\"failedToGenerate\":\"Échec de la génération de l'arbre\",\"generate\":\"Générer\",\"generating\":\"Génération...\",\"keyboardShortcut\":\"Appuyez sur {cmdEnter} ou {ctrlEnter} pour générer\",\"missingApiKey\":\"Configuration IA manquante\",\"missingApiKeyDesc\":\"Veuillez configurer votre clé API IA dans TreegeEditorProvider\",\"successDescription\":\"{nodes} nœuds et {edges} arêtes créés\",\"successTitle\":\"Arbre généré avec succès !\",\"title\":\"Générer un flux avec l'IA\",\"titleDescription\":\"Décrivez le formulaire ou l'arbre de décision que vous souhaitez créer, et l'IA le générera pour vous.\",\"unknownError\":\"Erreur inconnue\"},\"apiUrlCombobox\":{\"browseRoutes\":\"Parcourir les routes OpenAPI\",\"noRoutes\":\"Aucune route correspondante\",\"searchRoutes\":\"Rechercher par méthode, chemin ou résumé\"},\"authorizeDialog\":{\"apiKeyLabel\":\"Clé d'API\",\"apply\":\"Appliquer\",\"bearerLabel\":\"Jeton Bearer\",\"clear\":\"Effacer\",\"description\":\"Authentifiez-vous auprès de l'API pour transmettre les identifiants à chaque requête émise par le formulaire.\",\"exchangeFailed\":\"Échec de l'obtention du token d'accès\",\"noSchemes\":\"Aucun schéma de sécurité supporté n'est déclaré dans ce document OpenAPI.\",\"oauth2PasswordLabel\":\"OAuth2 mot de passe\",\"passwordPlaceholder\":\"Mot de passe\",\"title\":\"Autoriser\",\"usernamePlaceholder\":\"Nom d'utilisateur\"},\"changeNodeTypeDialog\":{\"description\":\"Ce nœud possède plusieurs branches sortantes. Le nouveau type n'en supporte qu'une seule. Choisissez la branche à conserver ; les autres seront supprimées.\",\"keepBranch\":\"Conserver cette branche\",\"noConditions\":\"Aucune condition\",\"title\":\"Changer le type de nœud\"},\"comboboxPattern\":{\"custom\":\"Personnalisé : {value}\",\"search\":\"Rechercher des motifs...\",\"selectOrCreate\":\"Sélectionner ou créer un motif\",\"usePattern\":\"Utiliser le motif : {query}\"},\"comboboxWithCreate\":{\"clearSelection\":\"Effacer la sélection\",\"noResults\":\"Aucun résultat trouvé\"},\"conditionalEdge\":{\"addCondition\":\"Ajouter une condition\",\"and\":\"ET\",\"condition\":\"Condition\",\"conditions\":\"Conditions\",\"conditionsAnd\":\"conditions (ET)\",\"conditionsMixed\":\"conditions (mixtes)\",\"conditionsOr\":\"conditions (OU)\",\"defineCondition\":\"Définir une condition\",\"displayConditions\":\"Afficher les conditions\",\"displayConditionsDesc\":\"Ce champ sera affiché si les conditions suivantes sont remplies.\",\"fallback\":\"Par défaut\",\"fallbackPath\":\"Chemin par défaut / de secours\",\"fallbackPathDesc\":\"Ce chemin sera suivi lorsqu'aucune autre condition ne correspond\",\"field\":\"Champ\",\"labelDesc\":\"Libellé personnalisé pour le bouton de condition\",\"labelOptional\":\"Libellé (optionnel)\",\"labelPlaceholder\":\"Ex : Si éligible\",\"noFieldsAvailable\":\"Aucun champ disponible\",\"operator\":\"Opérateur\",\"or\":\"OU\",\"removeCondition\":\"Supprimer la condition\",\"selectField\":\"Sélectionner un champ\",\"value\":\"Valeur\",\"valuePlaceholder\":\"Ex : 18\"},\"flowNodeForm\":{\"label\":\"Libellé\",\"targetId\":\"ID cible\",\"targetIdDesc\":\"Identifiant unique du flux cible.\"},\"groupNodeForm\":{\"label\":\"Libellé\"},\"headersDialog\":{\"addHeader\":\"Ajouter un header\",\"description\":\"Ces headers sont transmis à chaque requête HTTP émise par le formulaire (inputs HTTP, submit, sources d'options). Les headers field-level avec la même clé prennent le dessus.\",\"empty\":\"Aucun header pour l'instant.\",\"keyPlaceholder\":\"Authorization\",\"removeHeader\":\"Supprimer le header\",\"title\":\"Headers globaux\",\"valuePlaceholder\":\"Bearer ...\"},\"httpConfigForm\":{\"addHeader\":\"Ajouter un en-tête\",\"apiUrl\":\"URL de l'API\",\"apiUrlDesc\":\"Utilisez des variables de modèle comme {{fieldId}} pour référencer d'autres champs\",\"apiUrlPlaceholder\":\"https://api.exemple.com/data\",\"behavior\":\"Comportement\",\"fetchOnMount\":\"Charger au montage\",\"headerName\":\"Nom de l'en-tête\",\"headers\":\"En-têtes\",\"headerValue\":\"Valeur de l'en-tête\",\"httpMethod\":\"Méthode HTTP\",\"insertVariable\":\"Insérer une variable\",\"labelField\":\"Champ de libellé\",\"labelFieldDesc\":\"Champ à utiliser comme libellé d'option (ex : nom)\",\"labelFieldPlaceholder\":\"nom\",\"mapToOptions\":\"Mapper vers les options\",\"methodDelete\":\"DELETE\",\"methodGet\":\"GET\",\"methodPatch\":\"PATCH\",\"methodPost\":\"POST\",\"methodPut\":\"PUT\",\"noFieldsAvailable\":\"Aucun champ disponible\",\"requestBody\":\"Corps de la requête (JSON)\",\"requestBodyDesc\":\"Utilisez {{fieldId}} pour référencer d'autres champs. Assurez-vous d'un formatage JSON approprié, incluant les guillemets autour des valeurs de chaîne.\",\"requestBodyPlaceholder\":\"{\\\"nom\\\": \\\"{{nomUtilisateur}}\\\", \\\"age\\\": {{ageUtilisateur}}}\",\"responseConfiguration\":\"Configuration de la réponse\",\"responsePath\":\"Chemin de la réponse\",\"responsePathDesc\":\"Extraire les données de la réponse en utilisant la notation par points ou l'indexation de tableau\",\"responsePathPlaceholder\":\"data.users ou results[0]\",\"searchParameter\":\"Paramètre de recherche (optionnel)\",\"searchParameterDesc\":\"Si défini, active une zone de recherche qui ajoute ce paramètre aux appels API (ex : ?q=Paris)\",\"searchParameterPlaceholder\":\"q, recherche, requête...\",\"selectMethod\":\"Sélectionner une méthode\",\"sendAllFormValues\":\"Envoyer toutes les données du formulaire\",\"sendAllFormValuesDesc\":\"Envoyer automatiquement toutes les valeurs du formulaire en tant que corps JSON\",\"showLoadingState\":\"Afficher l'état de chargement\",\"valueField\":\"Champ de valeur\",\"valueFieldDesc\":\"Champ à utiliser comme valeur d'option (ex : id)\",\"valueFieldPlaceholder\":\"id\"},\"inputNodeForm\":{\"addInputFieldsBeforeReference\":\"Ajoutez des champs de saisie avant ce nœud pour les référencer\",\"addMapping\":\"Ajouter un mappage\",\"addOption\":\"Ajouter une option\",\"advancedConfiguration\":\"Configuration avancée\",\"defaultChecked\":\"Coché par défaut\",\"defaultValuesCommaSeparated\":\"Valeurs par défaut (séparées par des virgules)\",\"defaultValuesPlaceholder\":\"valeur1, valeur2, valeur3\",\"defaultValueType\":\"Type de valeur par défaut\",\"defaultValueTypeNone\":\"Aucun\",\"defaultValueTypeReference\":\"Champ de référence\",\"defaultValueTypeStatic\":\"Valeur statique\",\"deleteOption\":\"Supprimer l'option\",\"disablePast\":\"Désactiver les dates passées\",\"editOption\":\"Modifier l'option\",\"errorMessage\":\"Message d'erreur\",\"helperText\":\"Texte d'aide\",\"httpConfiguration\":\"Configuration HTTP\",\"label\":\"Libellé\",\"multipleFiles\":\"Fichiers multiples\",\"multipleSelection\":\"Sélection multiple\",\"name\":\"Nom\",\"nameDescription\":\"Nom de champ personnalisé optionnel pour l'export du formulaire. Si vide, le libellé sera utilisé comme clé.\",\"noParentFieldsAvailable\":\"Aucun champ parent disponible\",\"objectMapping\":\"Mappage d'objet\",\"objectMappingDesc\":\"Mapper les propriétés de l'objet source vers une nouvelle structure\",\"optional\":\"Optionnel\",\"optionDescription\":\"Description\",\"optionImageAdd\":\"Ajouter une image\",\"optionImageError\":\"Impossible de traiter l'image.\",\"optionImageInvalid\":\"Format d'image non pris en charge.\",\"optionImageRemove\":\"Retirer l'image\",\"optionImageReplace\":\"Remplacer l'image\",\"optionImageTooLarge\":\"Image trop volumineuse (max 5 Mo).\",\"optionImageUpload\":\"Importer un fichier\",\"optionImageUrlPlaceholder\":\"https://...\",\"optionLabel\":\"Libellé\",\"options\":\"Options\",\"optionValue\":\"Valeur\",\"pattern\":\"Motif\",\"placeholder\":\"Texte indicatif\",\"referenceField\":\"Champ de référence\",\"required\":\"Requis\",\"selectReferenceField\":\"Sélectionner un champ\",\"selectTransformation\":\"Sélectionner une transformation\",\"selectType\":\"Sélectionner un type\",\"sourceKey\":\"Clé source\",\"staticValue\":\"Valeur statique\",\"staticValuePlaceholder\":\"Entrer une valeur par défaut\",\"submitConfiguration\":\"Configuration de soumission\",\"targetKey\":\"Clé cible\",\"transformArray\":\"Convertir en tableau\",\"transformBoolean\":\"Convertir en booléen\",\"transformDesc\":\"Transformer la valeur référencée pour correspondre au type de ce champ\",\"transformMapToObject\":\"Mapper vers un objet\",\"transformNone\":\"Aucune transformation\",\"transformNumber\":\"Convertir en nombre\",\"transformString\":\"Convertir en chaîne\",\"transformType\":\"Type de transformation\",\"validation\":\"Validation\",\"variant\":\"Variante\",\"variantCard\":\"Carte\",\"variantDefault\":\"Par défaut\"},\"nodeActionsSheet\":{\"deleteNode\":\"Supprimer le nœud\",\"deleteNodeConfirm\":\"Êtes-vous sûr de vouloir supprimer ce nœud ?\",\"deleteNodeSuccess\":\"Nœud supprimé avec succès\",\"editNode\":\"Modifier le nœud\"},\"openApiDialog\":{\"baseUrlHint\":\"Optionnel. Remplace l'URL du premier serveur du document — utile quand la spec pointe vers un autre environnement.\",\"baseUrlLabel\":\"Override de l'URL de base\",\"clear\":\"Effacer\",\"cleared\":\"OpenAPI effacé.\",\"description\":\"Fournissez un document OpenAPI 3.x pour activer les suggestions d'URL et l'autorisation.\",\"emptyInput\":\"Veuillez fournir une URL ou coller un document JSON.\",\"jsonLabel\":\"Collez votre OpenAPI JSON\",\"load\":\"Charger\",\"loadFailed\":\"Échec du chargement du document OpenAPI\",\"loadSuccess\":\"OpenAPI chargé.\",\"modeJson\":\"Coller JSON\",\"modeUrl\":\"Depuis URL\",\"title\":\"Source OpenAPI\",\"urlLabel\":\"URL du document OpenAPI\"},\"optionsSourceForm\":{\"descriptionField\":\"Description\",\"descriptionFieldPlaceholder\":\"Chemin vers la description (optionnel)\",\"detect\":\"Détecter les champs\",\"detectFailed\":\"Échec de la requête.\",\"detectSuccess\":\"Champs détectés.\",\"disable\":\"Utiliser des options statiques\",\"dynamicHint\":\"Les options sont récupérées depuis cette API au runtime.\",\"enable\":\"Récupérer depuis une API\",\"imageField\":\"Image\",\"imageFieldPlaceholder\":\"Chemin vers l'URL de l'image (optionnel)\",\"labelField\":\"Label\",\"labelFieldPlaceholder\":\"Chemin vers le label (ex. name)\",\"noFieldsDetected\":\"Aucun champ détecté — vérifiez l'URL ou le chemin de réponse.\",\"none\":\"— Aucun —\",\"previewCount\":\"{count} options détectées\",\"responsePath\":\"Chemin de réponse\",\"responsePathHint\":\"Optionnel. Utilisez un chemin comme \\\"data.users\\\" si le tableau est imbriqué.\",\"responsePathPlaceholder\":\"ex. data.users\",\"staticOptions\":\"Options statiques\",\"staticOptionsHint\":\"Les options sont définies manuellement dans l'éditeur.\",\"title\":\"Source des options\",\"urlRequired\":\"L'URL est requise.\",\"valueField\":\"Valeur\",\"valueFieldPlaceholder\":\"Chemin vers la valeur (ex. id)\"},\"selectInputType\":{\"type\":\"Type\"},\"selectNodeGroup\":{\"createNewGroup\":\"Créer un nouveau groupe\",\"group\":\"Groupe\",\"groupAlreadyExists\":\"Ce groupe existe déjà\",\"groupAlreadyExistsDesc\":\"Utilisez le sélecteur pour ajouter le nœud à un groupe existant.\",\"groupCreated\":\"Groupe créé\",\"groupCreatedDesc\":\"Le groupe \\\"{groupName}\\\" a été créé avec succès.\",\"groupName\":\"Nom du groupe\",\"groupNamePlaceholder\":\"Ex : Étape 1 - Informations personnelles\",\"newGroup\":\"Nouveau groupe\",\"newGroupDescription\":\"Le groupe sera créé autour du nœud sélectionné.\",\"noGroup\":\"Aucun groupe\",\"renameGroup\":\"Renommer le groupe\"},\"selectNodeType\":{\"nodeType\":\"Type de nœud\",\"options\":{\"flow\":\"Flux externe\",\"group\":\"Groupe\",\"input\":\"Question\",\"ui\":\"Élément de design\"}},\"submitConfigForm\":{\"addHeader\":\"Ajouter un en-tête\",\"apiUrl\":\"URL de l'API\",\"apiUrlDesc\":\"Utilisez {{fieldId}} pour référencer d'autres champs\",\"apiUrlPlaceholder\":\"https://api.exemple.com/submit\",\"behavior\":\"Comportement\",\"errorMessage\":\"Message d'erreur\",\"errorMessageDesc\":\"Message affiché en cas d'échec de la soumission\",\"errorMessagePlaceholder\":\"Une erreur s'est produite. Veuillez réessayer.\",\"headerName\":\"Nom de l'en-tête\",\"headers\":\"En-têtes\",\"headerValue\":\"Valeur de l'en-tête\",\"httpMethod\":\"Méthode HTTP\",\"insertVariable\":\"Insérer une variable\",\"methodDelete\":\"DELETE\",\"methodPatch\":\"PATCH\",\"methodPost\":\"POST\",\"methodPut\":\"PUT\",\"noFieldsAvailable\":\"Aucun champ disponible\",\"postSubmission\":\"Après soumission\",\"redirectUrl\":\"URL de redirection\",\"redirectUrlDesc\":\"URL vers laquelle rediriger après une soumission réussie\",\"redirectUrlPlaceholder\":\"/success ou https://exemple.com/merci\",\"requestBody\":\"Corps de la requête (JSON)\",\"requestBodyDesc\":\"Utilisez {{fieldId}} pour référencer d'autres champs. Assurez-vous d'un formatage JSON approprié, incluant les guillemets autour des valeurs de chaîne.\",\"requestBodyPlaceholder\":\"{\\\"nom\\\": \\\"{{nomUtilisateur}}\\\", \\\"email\\\": \\\"{{emailUtilisateur}}\\\"}\",\"selectMethod\":\"Sélectionner une méthode\",\"sendAllFormValues\":\"Envoyer toutes les données du formulaire\",\"sendAllFormValuesDesc\":\"Envoyer automatiquement toutes les valeurs du formulaire en tant que corps JSON\",\"showLoadingState\":\"Afficher l'état de chargement\",\"successMessage\":\"Message de succès\",\"successMessageDesc\":\"Message affiché en cas de soumission réussie\",\"successMessagePlaceholder\":\"Formulaire soumis avec succès !\"},\"treegeNode\":{\"labelPlaceholder\":\"Libellé...\"},\"uiNodeForm\":{\"label\":\"Libellé\",\"type\":\"Type\",\"typeDivider\":\"Séparateur\",\"typeTitle\":\"Titre\"}}"),
|
|
288
304
|
renderer: {
|
|
289
305
|
defaultAddressInput: {
|
|
290
306
|
enterAddress: "Entrez une adresse...",
|
|
@@ -331,6 +347,10 @@ var u = (e) => e?.type === "input", d = (e) => e?.type === "ui", f = (e) => e?.t
|
|
|
331
347
|
defaultSubmitButton: {
|
|
332
348
|
requiredFieldsMissing: "Champs requis manquants",
|
|
333
349
|
submit: "Envoyer"
|
|
350
|
+
},
|
|
351
|
+
step: {
|
|
352
|
+
back: "Retour",
|
|
353
|
+
continue: "Continuer"
|
|
334
354
|
}
|
|
335
355
|
},
|
|
336
356
|
validation: {
|
|
@@ -351,7 +371,7 @@ var u = (e) => e?.type === "input", d = (e) => e?.type === "ui", f = (e) => e?.t
|
|
|
351
371
|
submit: "Invia",
|
|
352
372
|
toggle: "Attiva/Disattiva"
|
|
353
373
|
},
|
|
354
|
-
editor: /* @__PURE__ */ JSON.parse("{\"actionsPanel\":{\"addNode\":\"Aggiungi elemento\",\"authorize\":\"Authorize\",\"clear\":\"Pulisci\",\"clearSuccess\":\"Flusso pulito!\",\"clearSuccessDesc\":\"Tutti i nodi e gli archi sono stati rimossi.\",\"copyFailed\":\"Impossibile copiare l'ID del flusso\",\"downloadSuccess\":\"Download riuscito.\",\"downloadSuccessDesc\":\"Il flusso è stato esportato con successo.\",\"exportJson\":\"Esporta JSON\",\"globalHeaders\":\"Global headers\",\"idCopied\":\"ID del flusso copiato!\",\"importJson\":\"Importa JSON\",\"importSuccess\":\"Importazione riuscita!\",\"importSuccessDesc\":\"Il flusso è stato importato con successo.\",\"invalidJson\":\"File JSON non valido.\",\"invalidJsonDesc\":\"Il file deve contenere array di nodi e archi.\",\"openApi\":\"OpenAPI\",\"parseError\":\"Errore nell'analisi del file JSON.\",\"parseErrorDesc\":\"Prova a correggere il file e importarlo di nuovo.\"},\"aiGenerator\":{\"aiNotConfigured\":\"IA non configurata\",\"aiNotConfiguredDesc\":\"Aggiungi la prop {code} a TreegeEditorProvider\",\"buttonLabel\":\"Genera con IA\",\"cancel\":\"Annulla\",\"description\":\"Descrizione\",\"descriptionPlaceholder\":\"Esempio: Crea un modulo di contatto con nome, email, telefono e messaggio\",\"enterDescription\":\"Inserisci una descrizione\",\"failedToGenerate\":\"Errore nella generazione dell'albero\",\"generate\":\"Genera\",\"generating\":\"Generazione...\",\"keyboardShortcut\":\"Premi {cmdEnter} o {ctrlEnter} per generare\",\"missingApiKey\":\"Configurazione IA mancante\",\"missingApiKeyDesc\":\"Configura la tua chiave API IA in TreegeEditorProvider\",\"successDescription\":\"{nodes} nodi e {edges} archi creati\",\"successTitle\":\"Albero generato con successo!\",\"title\":\"Genera flusso con IA\",\"titleDescription\":\"Descrivi il modulo o l'albero decisionale che vuoi creare, e l'IA lo genererà per te.\",\"unknownError\":\"Errore sconosciuto\"},\"apiUrlCombobox\":{\"browseRoutes\":\"Browse OpenAPI routes\",\"noRoutes\":\"No matching route\",\"searchRoutes\":\"Search by method, path, or summary\"},\"authorizeDialog\":{\"apiKeyLabel\":\"API key\",\"apply\":\"Apply\",\"bearerLabel\":\"Bearer token\",\"clear\":\"Clear\",\"description\":\"Authenticate against the API to forward credentials to every request issued by the form.\",\"exchangeFailed\":\"Failed to fetch access token\",\"noSchemes\":\"No supported security schemes are declared in this OpenAPI document.\",\"oauth2PasswordLabel\":\"OAuth2 password\",\"passwordPlaceholder\":\"Password\",\"title\":\"Authorize\",\"usernamePlaceholder\":\"Username\"},\"changeNodeTypeDialog\":{\"description\":\"Questo nodo ha più rami in uscita. Il nuovo tipo ne supporta solo uno. Scegli quale ramo mantenere; gli altri verranno rimossi.\",\"keepBranch\":\"Mantieni questo ramo\",\"noConditions\":\"Nessuna condizione\",\"title\":\"Cambia tipo di nodo\"},\"comboboxPattern\":{\"custom\":\"Personalizzato: {value}\",\"search\":\"Cerca schemi...\",\"selectOrCreate\":\"Seleziona o crea uno schema\",\"usePattern\":\"Usa schema: {query}\"},\"comboboxWithCreate\":{\"clearSelection\":\"Cancella selezione\",\"noResults\":\"Nessun risultato trovato\"},\"conditionalEdge\":{\"addCondition\":\"Aggiungi condizione\",\"and\":\"E\",\"condition\":\"Condizione\",\"conditions\":\"Condizioni\",\"conditionsAnd\":\"condizioni (E)\",\"conditionsMixed\":\"condizioni (miste)\",\"conditionsOr\":\"condizioni (O)\",\"defineCondition\":\"Definisci una condizione\",\"displayConditions\":\"Mostra condizioni\",\"displayConditionsDesc\":\"Questo campo verrà mostrato se vengono soddisfatte le seguenti condizioni.\",\"fallback\":\"Predefinito\",\"fallbackPath\":\"Percorso predefinito / di fallback\",\"fallbackPathDesc\":\"Questo percorso verrà seguito quando nessun'altra condizione corrisponde\",\"field\":\"Campo\",\"labelDesc\":\"Etichetta personalizzata per il pulsante della condizione\",\"labelOptional\":\"Etichetta (opzionale)\",\"labelPlaceholder\":\"Es: Se idoneo\",\"noFieldsAvailable\":\"Nessun campo disponibile\",\"operator\":\"Operatore\",\"or\":\"O\",\"removeCondition\":\"Rimuovi condizione\",\"selectField\":\"Seleziona un campo\",\"value\":\"Valore\",\"valuePlaceholder\":\"Es: 18\"},\"flowNodeForm\":{\"label\":\"Etichetta\",\"targetId\":\"ID di destinazione\",\"targetIdDesc\":\"Identificatore univoco del flusso di destinazione.\"},\"groupNodeForm\":{\"label\":\"Etichetta\"},\"headersDialog\":{\"addHeader\":\"Add header\",\"description\":\"These headers are forwarded to every HTTP request issued by the form (HTTP inputs, submit, options sources). Field-level headers with the same key override these.\",\"empty\":\"No headers yet.\",\"keyPlaceholder\":\"Authorization\",\"removeHeader\":\"Remove header\",\"title\":\"Global headers\",\"valuePlaceholder\":\"Bearer ...\"},\"httpConfigForm\":{\"addHeader\":\"Aggiungi intestazione\",\"apiUrl\":\"URL API\",\"apiUrlDesc\":\"Usa variabili template come {{fieldId}} per riferire altri campi\",\"apiUrlPlaceholder\":\"https://api.esempio.com/data\",\"behavior\":\"Comportamento\",\"fetchOnMount\":\"Carica al montaggio\",\"headerName\":\"Nome intestazione\",\"headers\":\"Intestazioni\",\"headerValue\":\"Valore intestazione\",\"httpMethod\":\"Metodo HTTP\",\"insertVariable\":\"Inserisci variabile\",\"labelField\":\"Campo etichetta\",\"labelFieldDesc\":\"Campo da usare come etichetta dell'opzione (es: nome)\",\"labelFieldPlaceholder\":\"nome\",\"mapToOptions\":\"Mappa su opzioni\",\"methodDelete\":\"DELETE\",\"methodGet\":\"GET\",\"methodPatch\":\"PATCH\",\"methodPost\":\"POST\",\"methodPut\":\"PUT\",\"noFieldsAvailable\":\"Nessun campo disponibile\",\"requestBody\":\"Corpo della richiesta (JSON)\",\"requestBodyDesc\":\"Usa {{fieldId}} per riferire altri campi. Assicurati che la formattazione JSON sia corretta, comprese le virgolette attorno ai valori stringa.\",\"requestBodyPlaceholder\":\"{\\\"nome\\\": \\\"{{nomeUtente}}\\\", \\\"eta\\\": {{etaUtente}}}\",\"responseConfiguration\":\"Configurazione della risposta\",\"responsePath\":\"Percorso della risposta\",\"responsePathDesc\":\"Estrai dati dalla risposta usando la notazione a punti o l'indicizzazione dell'array\",\"responsePathPlaceholder\":\"data.users o results[0]\",\"searchParameter\":\"Parametro di ricerca (opzionale)\",\"searchParameterDesc\":\"Se impostato, abilita una casella di ricerca che aggiunge questo parametro alle chiamate API (es: ?q=Parigi)\",\"searchParameterPlaceholder\":\"q, ricerca, query...\",\"selectMethod\":\"Seleziona metodo\",\"sendAllFormValues\":\"Invia tutti i dati del modulo\",\"sendAllFormValuesDesc\":\"Invia automaticamente tutti i valori del modulo come corpo JSON\",\"showLoadingState\":\"Mostra stato di caricamento\",\"valueField\":\"Campo valore\",\"valueFieldDesc\":\"Campo da usare come valore dell'opzione (es: id)\",\"valueFieldPlaceholder\":\"id\"},\"inputNodeForm\":{\"addInputFieldsBeforeReference\":\"Aggiungi campi di input prima di questo nodo per riferirli\",\"addMapping\":\"Aggiungi mappatura\",\"addOption\":\"Aggiungi opzione\",\"advancedConfiguration\":\"Configurazione avanzata\",\"defaultChecked\":\"Selezionato per impostazione predefinita\",\"defaultValuesCommaSeparated\":\"Valori predefiniti (separati da virgole)\",\"defaultValuesPlaceholder\":\"valore1, valore2, valore3\",\"defaultValueType\":\"Tipo di valore predefinito\",\"defaultValueTypeNone\":\"Nessuno\",\"defaultValueTypeReference\":\"Campo di riferimento\",\"defaultValueTypeStatic\":\"Valore statico\",\"deleteOption\":\"Elimina opzione\",\"disablePast\":\"Disabilita date passate\",\"editOption\":\"Modifica opzione\",\"errorMessage\":\"Messaggio di errore\",\"helperText\":\"Testo di aiuto\",\"httpConfiguration\":\"Configurazione HTTP\",\"label\":\"Etichetta\",\"multipleFiles\":\"File multipli\",\"multipleSelection\":\"Selezione multipla\",\"name\":\"Nome\",\"nameDescription\":\"Nome campo personalizzato opzionale per l'esportazione del modulo. Se vuoto, l'etichetta verrà utilizzata come chiave.\",\"noParentFieldsAvailable\":\"Nessun campo genitore disponibile\",\"objectMapping\":\"Mappatura oggetto\",\"objectMappingDesc\":\"Mappa le proprietà dell'oggetto sorgente su una nuova struttura\",\"optional\":\"Opzionale\",\"optionDescription\":\"Descrizione\",\"optionImageAdd\":\"Aggiungi immagine\",\"optionImageError\":\"Impossibile elaborare l'immagine.\",\"optionImageInvalid\":\"Formato immagine non supportato.\",\"optionImageRemove\":\"Rimuovi immagine\",\"optionImageReplace\":\"Sostituisci immagine\",\"optionImageTooLarge\":\"Immagine troppo grande (max 5 MB).\",\"optionImageUpload\":\"Carica file\",\"optionImageUrlPlaceholder\":\"https://...\",\"optionLabel\":\"Etichetta\",\"options\":\"Opzioni\",\"optionValue\":\"Valore\",\"pattern\":\"Schema\",\"placeholder\":\"Segnaposto\",\"referenceField\":\"Campo di riferimento\",\"required\":\"Obbligatorio\",\"selectReferenceField\":\"Seleziona un campo\",\"selectTransformation\":\"Seleziona trasformazione\",\"selectType\":\"Seleziona tipo\",\"sourceKey\":\"Chiave sorgente\",\"staticValue\":\"Valore statico\",\"staticValuePlaceholder\":\"Inserisci valore predefinito\",\"submitConfiguration\":\"Configurazione di invio\",\"targetKey\":\"Chiave destinazione\",\"transformArray\":\"Converti in array\",\"transformBoolean\":\"Converti in booleano\",\"transformDesc\":\"Trasforma il valore riferito per corrispondere al tipo di questo campo\",\"transformMapToObject\":\"Mappa su oggetto\",\"transformNone\":\"Nessuna trasformazione\",\"transformNumber\":\"Converti in numero\",\"transformString\":\"Converti in stringa\",\"transformType\":\"Tipo di trasformazione\",\"validation\":\"Validazione\",\"variant\":\"Variante\",\"variantCard\":\"Scheda\",\"variantDefault\":\"Predefinito\"},\"nodeActionsSheet\":{\"deleteNode\":\"Elimina nodo\",\"deleteNodeConfirm\":\"Sei sicuro di voler eliminare questo nodo?\",\"deleteNodeSuccess\":\"Nodo eliminato con successo\",\"editNode\":\"Modifica nodo\"},\"openApiDialog\":{\"baseUrlHint\":\"Optional. Overrides the document's first server URL — useful when the spec points at a different environment.\",\"baseUrlLabel\":\"Base URL override\",\"clear\":\"Clear\",\"cleared\":\"OpenAPI cleared.\",\"description\":\"Provide an OpenAPI 3.x document to power URL suggestions and Authorize.\",\"emptyInput\":\"Please provide a URL or paste a JSON document.\",\"jsonLabel\":\"Paste your OpenAPI JSON\",\"load\":\"Load\",\"loadFailed\":\"Failed to load OpenAPI document\",\"loadSuccess\":\"OpenAPI loaded.\",\"modeJson\":\"Paste JSON\",\"modeUrl\":\"From URL\",\"title\":\"OpenAPI source\",\"urlLabel\":\"OpenAPI document URL\"},\"optionsSourceForm\":{\"descriptionField\":\"Description\",\"descriptionFieldPlaceholder\":\"Path to description (optional)\",\"detect\":\"Detect fields\",\"detectFailed\":\"Failed to fetch the API.\",\"detectSuccess\":\"Fields detected.\",\"disable\":\"Use static options\",\"dynamicHint\":\"Options are fetched from this API at runtime.\",\"enable\":\"Fetch from API\",\"imageField\":\"Image\",\"imageFieldPlaceholder\":\"Path to image URL (optional)\",\"labelField\":\"Label\",\"labelFieldPlaceholder\":\"Path to label (e.g., name)\",\"noFieldsDetected\":\"No fields detected — check the URL or response path.\",\"none\":\"— None —\",\"previewCount\":\"{count} options detected\",\"responsePath\":\"Response path\",\"responsePathHint\":\"Optional. Use a path like \\\"data.users\\\" if the array is nested.\",\"responsePathPlaceholder\":\"e.g., data.users\",\"staticOptions\":\"Static options\",\"staticOptionsHint\":\"Options are defined manually in the editor.\",\"title\":\"Options source\",\"urlRequired\":\"URL is required.\",\"valueField\":\"Value\",\"valueFieldPlaceholder\":\"Path to value (e.g., id)\"},\"selectInputType\":{\"type\":\"Tipo\"},\"selectNodeGroup\":{\"createNewGroup\":\"Crea un nuovo gruppo\",\"group\":\"Gruppo\",\"groupAlreadyExists\":\"Questo gruppo esiste già\",\"groupAlreadyExistsDesc\":\"Usa il selettore per aggiungere il nodo a un gruppo esistente.\",\"groupCreated\":\"Gruppo creato\",\"groupCreatedDesc\":\"Il gruppo \\\"{groupName}\\\" è stato creato con successo.\",\"groupName\":\"Nome del gruppo\",\"groupNamePlaceholder\":\"Es: Passo 1 - Informazioni personali\",\"newGroup\":\"Nuovo gruppo\",\"newGroupDescription\":\"Il gruppo verrà creato attorno al nodo selezionato.\",\"noGroup\":\"Nessun gruppo\"},\"selectNodeType\":{\"nodeType\":\"Tipo di nodo\",\"options\":{\"flow\":\"Flusso esterno\",\"group\":\"Gruppo\",\"input\":\"Domanda\",\"ui\":\"Elemento di design\"}},\"submitConfigForm\":{\"addHeader\":\"Aggiungi intestazione\",\"apiUrl\":\"URL dell'API\",\"apiUrlDesc\":\"Usa {{fieldId}} per riferire altri campi\",\"apiUrlPlaceholder\":\"https://api.esempio.it/submit\",\"behavior\":\"Comportamento\",\"errorMessage\":\"Messaggio di errore\",\"errorMessageDesc\":\"Messaggio visualizzato quando l'invio fallisce\",\"errorMessagePlaceholder\":\"Si è verificato un errore. Riprova.\",\"headerName\":\"Nome intestazione\",\"headers\":\"Intestazioni\",\"headerValue\":\"Valore intestazione\",\"httpMethod\":\"Metodo HTTP\",\"insertVariable\":\"Inserisci variabile\",\"methodDelete\":\"DELETE\",\"methodPatch\":\"PATCH\",\"methodPost\":\"POST\",\"methodPut\":\"PUT\",\"noFieldsAvailable\":\"Nessun campo disponibile\",\"postSubmission\":\"Dopo l'invio\",\"redirectUrl\":\"URL di reindirizzamento\",\"redirectUrlDesc\":\"URL a cui reindirizzare dopo un invio riuscito\",\"redirectUrlPlaceholder\":\"/success o https://esempio.it/grazie\",\"requestBody\":\"Corpo della richiesta (JSON)\",\"requestBodyDesc\":\"Usa {{fieldId}} per riferire altri campi. Assicurati che la formattazione JSON sia corretta, comprese le virgolette attorno ai valori stringa.\",\"requestBodyPlaceholder\":\"{\\\"nome\\\": \\\"{{nomeUtente}}\\\", \\\"email\\\": \\\"{{emailUtente}}\\\"}\",\"selectMethod\":\"Seleziona metodo\",\"sendAllFormValues\":\"Invia tutti i dati del modulo\",\"sendAllFormValuesDesc\":\"Invia automaticamente tutti i valori del modulo come corpo JSON\",\"showLoadingState\":\"Mostra stato di caricamento\",\"successMessage\":\"Messaggio di successo\",\"successMessageDesc\":\"Messaggio visualizzato quando l'invio ha successo\",\"successMessagePlaceholder\":\"Modulo inviato con successo!\"},\"treegeNode\":{\"labelPlaceholder\":\"Etichetta...\"},\"uiNodeForm\":{\"label\":\"Etichetta\",\"type\":\"Tipo\",\"typeDivider\":\"Divisore\",\"typeTitle\":\"Titolo\"}}"),
|
|
374
|
+
editor: /* @__PURE__ */ JSON.parse("{\"actionsPanel\":{\"addNode\":\"Aggiungi elemento\",\"authorize\":\"Authorize\",\"clear\":\"Pulisci\",\"clearSuccess\":\"Flusso pulito!\",\"clearSuccessDesc\":\"Tutti i nodi e gli archi sono stati rimossi.\",\"copyFailed\":\"Impossibile copiare l'ID del flusso\",\"downloadSuccess\":\"Download riuscito.\",\"downloadSuccessDesc\":\"Il flusso è stato esportato con successo.\",\"exportJson\":\"Esporta JSON\",\"globalHeaders\":\"Global headers\",\"idCopied\":\"ID del flusso copiato!\",\"importJson\":\"Importa JSON\",\"importSuccess\":\"Importazione riuscita!\",\"importSuccessDesc\":\"Il flusso è stato importato con successo.\",\"invalidJson\":\"File JSON non valido.\",\"invalidJsonDesc\":\"Il file deve contenere array di nodi e archi.\",\"openApi\":\"OpenAPI\",\"parseError\":\"Errore nell'analisi del file JSON.\",\"parseErrorDesc\":\"Prova a correggere il file e importarlo di nuovo.\"},\"aiGenerator\":{\"aiNotConfigured\":\"IA non configurata\",\"aiNotConfiguredDesc\":\"Aggiungi la prop {code} a TreegeEditorProvider\",\"buttonLabel\":\"Genera con IA\",\"cancel\":\"Annulla\",\"description\":\"Descrizione\",\"descriptionPlaceholder\":\"Esempio: Crea un modulo di contatto con nome, email, telefono e messaggio\",\"enterDescription\":\"Inserisci una descrizione\",\"failedToGenerate\":\"Errore nella generazione dell'albero\",\"generate\":\"Genera\",\"generating\":\"Generazione...\",\"keyboardShortcut\":\"Premi {cmdEnter} o {ctrlEnter} per generare\",\"missingApiKey\":\"Configurazione IA mancante\",\"missingApiKeyDesc\":\"Configura la tua chiave API IA in TreegeEditorProvider\",\"successDescription\":\"{nodes} nodi e {edges} archi creati\",\"successTitle\":\"Albero generato con successo!\",\"title\":\"Genera flusso con IA\",\"titleDescription\":\"Descrivi il modulo o l'albero decisionale che vuoi creare, e l'IA lo genererà per te.\",\"unknownError\":\"Errore sconosciuto\"},\"apiUrlCombobox\":{\"browseRoutes\":\"Browse OpenAPI routes\",\"noRoutes\":\"No matching route\",\"searchRoutes\":\"Search by method, path, or summary\"},\"authorizeDialog\":{\"apiKeyLabel\":\"API key\",\"apply\":\"Apply\",\"bearerLabel\":\"Bearer token\",\"clear\":\"Clear\",\"description\":\"Authenticate against the API to forward credentials to every request issued by the form.\",\"exchangeFailed\":\"Failed to fetch access token\",\"noSchemes\":\"No supported security schemes are declared in this OpenAPI document.\",\"oauth2PasswordLabel\":\"OAuth2 password\",\"passwordPlaceholder\":\"Password\",\"title\":\"Authorize\",\"usernamePlaceholder\":\"Username\"},\"changeNodeTypeDialog\":{\"description\":\"Questo nodo ha più rami in uscita. Il nuovo tipo ne supporta solo uno. Scegli quale ramo mantenere; gli altri verranno rimossi.\",\"keepBranch\":\"Mantieni questo ramo\",\"noConditions\":\"Nessuna condizione\",\"title\":\"Cambia tipo di nodo\"},\"comboboxPattern\":{\"custom\":\"Personalizzato: {value}\",\"search\":\"Cerca schemi...\",\"selectOrCreate\":\"Seleziona o crea uno schema\",\"usePattern\":\"Usa schema: {query}\"},\"comboboxWithCreate\":{\"clearSelection\":\"Cancella selezione\",\"noResults\":\"Nessun risultato trovato\"},\"conditionalEdge\":{\"addCondition\":\"Aggiungi condizione\",\"and\":\"E\",\"condition\":\"Condizione\",\"conditions\":\"Condizioni\",\"conditionsAnd\":\"condizioni (E)\",\"conditionsMixed\":\"condizioni (miste)\",\"conditionsOr\":\"condizioni (O)\",\"defineCondition\":\"Definisci una condizione\",\"displayConditions\":\"Mostra condizioni\",\"displayConditionsDesc\":\"Questo campo verrà mostrato se vengono soddisfatte le seguenti condizioni.\",\"fallback\":\"Predefinito\",\"fallbackPath\":\"Percorso predefinito / di fallback\",\"fallbackPathDesc\":\"Questo percorso verrà seguito quando nessun'altra condizione corrisponde\",\"field\":\"Campo\",\"labelDesc\":\"Etichetta personalizzata per il pulsante della condizione\",\"labelOptional\":\"Etichetta (opzionale)\",\"labelPlaceholder\":\"Es: Se idoneo\",\"noFieldsAvailable\":\"Nessun campo disponibile\",\"operator\":\"Operatore\",\"or\":\"O\",\"removeCondition\":\"Rimuovi condizione\",\"selectField\":\"Seleziona un campo\",\"value\":\"Valore\",\"valuePlaceholder\":\"Es: 18\"},\"flowNodeForm\":{\"label\":\"Etichetta\",\"targetId\":\"ID di destinazione\",\"targetIdDesc\":\"Identificatore univoco del flusso di destinazione.\"},\"groupNodeForm\":{\"label\":\"Etichetta\"},\"headersDialog\":{\"addHeader\":\"Add header\",\"description\":\"These headers are forwarded to every HTTP request issued by the form (HTTP inputs, submit, options sources). Field-level headers with the same key override these.\",\"empty\":\"No headers yet.\",\"keyPlaceholder\":\"Authorization\",\"removeHeader\":\"Remove header\",\"title\":\"Global headers\",\"valuePlaceholder\":\"Bearer ...\"},\"httpConfigForm\":{\"addHeader\":\"Aggiungi intestazione\",\"apiUrl\":\"URL API\",\"apiUrlDesc\":\"Usa variabili template come {{fieldId}} per riferire altri campi\",\"apiUrlPlaceholder\":\"https://api.esempio.com/data\",\"behavior\":\"Comportamento\",\"fetchOnMount\":\"Carica al montaggio\",\"headerName\":\"Nome intestazione\",\"headers\":\"Intestazioni\",\"headerValue\":\"Valore intestazione\",\"httpMethod\":\"Metodo HTTP\",\"insertVariable\":\"Inserisci variabile\",\"labelField\":\"Campo etichetta\",\"labelFieldDesc\":\"Campo da usare come etichetta dell'opzione (es: nome)\",\"labelFieldPlaceholder\":\"nome\",\"mapToOptions\":\"Mappa su opzioni\",\"methodDelete\":\"DELETE\",\"methodGet\":\"GET\",\"methodPatch\":\"PATCH\",\"methodPost\":\"POST\",\"methodPut\":\"PUT\",\"noFieldsAvailable\":\"Nessun campo disponibile\",\"requestBody\":\"Corpo della richiesta (JSON)\",\"requestBodyDesc\":\"Usa {{fieldId}} per riferire altri campi. Assicurati che la formattazione JSON sia corretta, comprese le virgolette attorno ai valori stringa.\",\"requestBodyPlaceholder\":\"{\\\"nome\\\": \\\"{{nomeUtente}}\\\", \\\"eta\\\": {{etaUtente}}}\",\"responseConfiguration\":\"Configurazione della risposta\",\"responsePath\":\"Percorso della risposta\",\"responsePathDesc\":\"Estrai dati dalla risposta usando la notazione a punti o l'indicizzazione dell'array\",\"responsePathPlaceholder\":\"data.users o results[0]\",\"searchParameter\":\"Parametro di ricerca (opzionale)\",\"searchParameterDesc\":\"Se impostato, abilita una casella di ricerca che aggiunge questo parametro alle chiamate API (es: ?q=Parigi)\",\"searchParameterPlaceholder\":\"q, ricerca, query...\",\"selectMethod\":\"Seleziona metodo\",\"sendAllFormValues\":\"Invia tutti i dati del modulo\",\"sendAllFormValuesDesc\":\"Invia automaticamente tutti i valori del modulo come corpo JSON\",\"showLoadingState\":\"Mostra stato di caricamento\",\"valueField\":\"Campo valore\",\"valueFieldDesc\":\"Campo da usare come valore dell'opzione (es: id)\",\"valueFieldPlaceholder\":\"id\"},\"inputNodeForm\":{\"addInputFieldsBeforeReference\":\"Aggiungi campi di input prima di questo nodo per riferirli\",\"addMapping\":\"Aggiungi mappatura\",\"addOption\":\"Aggiungi opzione\",\"advancedConfiguration\":\"Configurazione avanzata\",\"defaultChecked\":\"Selezionato per impostazione predefinita\",\"defaultValuesCommaSeparated\":\"Valori predefiniti (separati da virgole)\",\"defaultValuesPlaceholder\":\"valore1, valore2, valore3\",\"defaultValueType\":\"Tipo di valore predefinito\",\"defaultValueTypeNone\":\"Nessuno\",\"defaultValueTypeReference\":\"Campo di riferimento\",\"defaultValueTypeStatic\":\"Valore statico\",\"deleteOption\":\"Elimina opzione\",\"disablePast\":\"Disabilita date passate\",\"editOption\":\"Modifica opzione\",\"errorMessage\":\"Messaggio di errore\",\"helperText\":\"Testo di aiuto\",\"httpConfiguration\":\"Configurazione HTTP\",\"label\":\"Etichetta\",\"multipleFiles\":\"File multipli\",\"multipleSelection\":\"Selezione multipla\",\"name\":\"Nome\",\"nameDescription\":\"Nome campo personalizzato opzionale per l'esportazione del modulo. Se vuoto, l'etichetta verrà utilizzata come chiave.\",\"noParentFieldsAvailable\":\"Nessun campo genitore disponibile\",\"objectMapping\":\"Mappatura oggetto\",\"objectMappingDesc\":\"Mappa le proprietà dell'oggetto sorgente su una nuova struttura\",\"optional\":\"Opzionale\",\"optionDescription\":\"Descrizione\",\"optionImageAdd\":\"Aggiungi immagine\",\"optionImageError\":\"Impossibile elaborare l'immagine.\",\"optionImageInvalid\":\"Formato immagine non supportato.\",\"optionImageRemove\":\"Rimuovi immagine\",\"optionImageReplace\":\"Sostituisci immagine\",\"optionImageTooLarge\":\"Immagine troppo grande (max 5 MB).\",\"optionImageUpload\":\"Carica file\",\"optionImageUrlPlaceholder\":\"https://...\",\"optionLabel\":\"Etichetta\",\"options\":\"Opzioni\",\"optionValue\":\"Valore\",\"pattern\":\"Schema\",\"placeholder\":\"Segnaposto\",\"referenceField\":\"Campo di riferimento\",\"required\":\"Obbligatorio\",\"selectReferenceField\":\"Seleziona un campo\",\"selectTransformation\":\"Seleziona trasformazione\",\"selectType\":\"Seleziona tipo\",\"sourceKey\":\"Chiave sorgente\",\"staticValue\":\"Valore statico\",\"staticValuePlaceholder\":\"Inserisci valore predefinito\",\"submitConfiguration\":\"Configurazione di invio\",\"targetKey\":\"Chiave destinazione\",\"transformArray\":\"Converti in array\",\"transformBoolean\":\"Converti in booleano\",\"transformDesc\":\"Trasforma il valore riferito per corrispondere al tipo di questo campo\",\"transformMapToObject\":\"Mappa su oggetto\",\"transformNone\":\"Nessuna trasformazione\",\"transformNumber\":\"Converti in numero\",\"transformString\":\"Converti in stringa\",\"transformType\":\"Tipo di trasformazione\",\"validation\":\"Validazione\",\"variant\":\"Variante\",\"variantCard\":\"Scheda\",\"variantDefault\":\"Predefinito\"},\"nodeActionsSheet\":{\"deleteNode\":\"Elimina nodo\",\"deleteNodeConfirm\":\"Sei sicuro di voler eliminare questo nodo?\",\"deleteNodeSuccess\":\"Nodo eliminato con successo\",\"editNode\":\"Modifica nodo\"},\"openApiDialog\":{\"baseUrlHint\":\"Optional. Overrides the document's first server URL — useful when the spec points at a different environment.\",\"baseUrlLabel\":\"Base URL override\",\"clear\":\"Clear\",\"cleared\":\"OpenAPI cleared.\",\"description\":\"Provide an OpenAPI 3.x document to power URL suggestions and Authorize.\",\"emptyInput\":\"Please provide a URL or paste a JSON document.\",\"jsonLabel\":\"Paste your OpenAPI JSON\",\"load\":\"Load\",\"loadFailed\":\"Failed to load OpenAPI document\",\"loadSuccess\":\"OpenAPI loaded.\",\"modeJson\":\"Paste JSON\",\"modeUrl\":\"From URL\",\"title\":\"OpenAPI source\",\"urlLabel\":\"OpenAPI document URL\"},\"optionsSourceForm\":{\"descriptionField\":\"Description\",\"descriptionFieldPlaceholder\":\"Path to description (optional)\",\"detect\":\"Detect fields\",\"detectFailed\":\"Failed to fetch the API.\",\"detectSuccess\":\"Fields detected.\",\"disable\":\"Use static options\",\"dynamicHint\":\"Options are fetched from this API at runtime.\",\"enable\":\"Fetch from API\",\"imageField\":\"Image\",\"imageFieldPlaceholder\":\"Path to image URL (optional)\",\"labelField\":\"Label\",\"labelFieldPlaceholder\":\"Path to label (e.g., name)\",\"noFieldsDetected\":\"No fields detected — check the URL or response path.\",\"none\":\"— None —\",\"previewCount\":\"{count} options detected\",\"responsePath\":\"Response path\",\"responsePathHint\":\"Optional. Use a path like \\\"data.users\\\" if the array is nested.\",\"responsePathPlaceholder\":\"e.g., data.users\",\"staticOptions\":\"Static options\",\"staticOptionsHint\":\"Options are defined manually in the editor.\",\"title\":\"Options source\",\"urlRequired\":\"URL is required.\",\"valueField\":\"Value\",\"valueFieldPlaceholder\":\"Path to value (e.g., id)\"},\"selectInputType\":{\"type\":\"Tipo\"},\"selectNodeGroup\":{\"createNewGroup\":\"Crea un nuovo gruppo\",\"group\":\"Gruppo\",\"groupAlreadyExists\":\"Questo gruppo esiste già\",\"groupAlreadyExistsDesc\":\"Usa il selettore per aggiungere il nodo a un gruppo esistente.\",\"groupCreated\":\"Gruppo creato\",\"groupCreatedDesc\":\"Il gruppo \\\"{groupName}\\\" è stato creato con successo.\",\"groupName\":\"Nome del gruppo\",\"groupNamePlaceholder\":\"Es: Passo 1 - Informazioni personali\",\"newGroup\":\"Nuovo gruppo\",\"newGroupDescription\":\"Il gruppo verrà creato attorno al nodo selezionato.\",\"noGroup\":\"Nessun gruppo\",\"renameGroup\":\"Rinomina gruppo\"},\"selectNodeType\":{\"nodeType\":\"Tipo di nodo\",\"options\":{\"flow\":\"Flusso esterno\",\"group\":\"Gruppo\",\"input\":\"Domanda\",\"ui\":\"Elemento di design\"}},\"submitConfigForm\":{\"addHeader\":\"Aggiungi intestazione\",\"apiUrl\":\"URL dell'API\",\"apiUrlDesc\":\"Usa {{fieldId}} per riferire altri campi\",\"apiUrlPlaceholder\":\"https://api.esempio.it/submit\",\"behavior\":\"Comportamento\",\"errorMessage\":\"Messaggio di errore\",\"errorMessageDesc\":\"Messaggio visualizzato quando l'invio fallisce\",\"errorMessagePlaceholder\":\"Si è verificato un errore. Riprova.\",\"headerName\":\"Nome intestazione\",\"headers\":\"Intestazioni\",\"headerValue\":\"Valore intestazione\",\"httpMethod\":\"Metodo HTTP\",\"insertVariable\":\"Inserisci variabile\",\"methodDelete\":\"DELETE\",\"methodPatch\":\"PATCH\",\"methodPost\":\"POST\",\"methodPut\":\"PUT\",\"noFieldsAvailable\":\"Nessun campo disponibile\",\"postSubmission\":\"Dopo l'invio\",\"redirectUrl\":\"URL di reindirizzamento\",\"redirectUrlDesc\":\"URL a cui reindirizzare dopo un invio riuscito\",\"redirectUrlPlaceholder\":\"/success o https://esempio.it/grazie\",\"requestBody\":\"Corpo della richiesta (JSON)\",\"requestBodyDesc\":\"Usa {{fieldId}} per riferire altri campi. Assicurati che la formattazione JSON sia corretta, comprese le virgolette attorno ai valori stringa.\",\"requestBodyPlaceholder\":\"{\\\"nome\\\": \\\"{{nomeUtente}}\\\", \\\"email\\\": \\\"{{emailUtente}}\\\"}\",\"selectMethod\":\"Seleziona metodo\",\"sendAllFormValues\":\"Invia tutti i dati del modulo\",\"sendAllFormValuesDesc\":\"Invia automaticamente tutti i valori del modulo come corpo JSON\",\"showLoadingState\":\"Mostra stato di caricamento\",\"successMessage\":\"Messaggio di successo\",\"successMessageDesc\":\"Messaggio visualizzato quando l'invio ha successo\",\"successMessagePlaceholder\":\"Modulo inviato con successo!\"},\"treegeNode\":{\"labelPlaceholder\":\"Etichetta...\"},\"uiNodeForm\":{\"label\":\"Etichetta\",\"type\":\"Tipo\",\"typeDivider\":\"Divisore\",\"typeTitle\":\"Titolo\"}}"),
|
|
355
375
|
renderer: {
|
|
356
376
|
defaultAddressInput: {
|
|
357
377
|
enterAddress: "Inserisci un indirizzo...",
|
|
@@ -398,6 +418,10 @@ var u = (e) => e?.type === "input", d = (e) => e?.type === "ui", f = (e) => e?.t
|
|
|
398
418
|
defaultSubmitButton: {
|
|
399
419
|
requiredFieldsMissing: "Campi obbligatori mancanti",
|
|
400
420
|
submit: "Invia"
|
|
421
|
+
},
|
|
422
|
+
step: {
|
|
423
|
+
back: "Indietro",
|
|
424
|
+
continue: "Continua"
|
|
401
425
|
}
|
|
402
426
|
},
|
|
403
427
|
validation: {
|
|
@@ -418,7 +442,7 @@ var u = (e) => e?.type === "input", d = (e) => e?.type === "ui", f = (e) => e?.t
|
|
|
418
442
|
submit: "Enviar",
|
|
419
443
|
toggle: "Alternar"
|
|
420
444
|
},
|
|
421
|
-
editor: /* @__PURE__ */ JSON.parse("{\"actionsPanel\":{\"addNode\":\"Adicionar elemento\",\"authorize\":\"Authorize\",\"clear\":\"Limpar\",\"clearSuccess\":\"Fluxo limpo!\",\"clearSuccessDesc\":\"Todos os nós e arestas foram removidos.\",\"copyFailed\":\"Falha ao copiar o ID do fluxo\",\"downloadSuccess\":\"Download bem-sucedido.\",\"downloadSuccessDesc\":\"O fluxo foi exportado com sucesso.\",\"exportJson\":\"Exportar JSON\",\"globalHeaders\":\"Global headers\",\"idCopied\":\"ID do fluxo copiado!\",\"importJson\":\"Importar JSON\",\"importSuccess\":\"Importação bem-sucedida!\",\"importSuccessDesc\":\"O fluxo foi importado com sucesso.\",\"invalidJson\":\"Arquivo JSON inválido.\",\"invalidJsonDesc\":\"O arquivo deve conter arrays de nós e arestas.\",\"openApi\":\"OpenAPI\",\"parseError\":\"Erro ao analisar o arquivo JSON.\",\"parseErrorDesc\":\"Tente corrigir o arquivo e importá-lo novamente.\"},\"aiGenerator\":{\"aiNotConfigured\":\"IA não configurada\",\"aiNotConfiguredDesc\":\"Adicione a prop {code} ao TreegeEditorProvider\",\"buttonLabel\":\"Gerar com IA\",\"cancel\":\"Cancelar\",\"description\":\"Descrição\",\"descriptionPlaceholder\":\"Exemplo: Criar um formulário de contato com nome, email, telefone e mensagem\",\"enterDescription\":\"Por favor insira uma descrição\",\"failedToGenerate\":\"Falha ao gerar árvore\",\"generate\":\"Gerar\",\"generating\":\"Gerando...\",\"keyboardShortcut\":\"Pressione {cmdEnter} ou {ctrlEnter} para gerar\",\"missingApiKey\":\"Configuração de IA ausente\",\"missingApiKeyDesc\":\"Por favor configure sua chave API de IA no TreegeEditorProvider\",\"successDescription\":\"{nodes} nós e {edges} arestas criados\",\"successTitle\":\"Árvore gerada com sucesso!\",\"title\":\"Gerar fluxo com IA\",\"titleDescription\":\"Descreva o formulário ou árvore de decisão que deseja criar, e a IA irá gerá-lo para você.\",\"unknownError\":\"Erro desconhecido\"},\"apiUrlCombobox\":{\"browseRoutes\":\"Browse OpenAPI routes\",\"noRoutes\":\"No matching route\",\"searchRoutes\":\"Search by method, path, or summary\"},\"authorizeDialog\":{\"apiKeyLabel\":\"API key\",\"apply\":\"Apply\",\"bearerLabel\":\"Bearer token\",\"clear\":\"Clear\",\"description\":\"Authenticate against the API to forward credentials to every request issued by the form.\",\"exchangeFailed\":\"Failed to fetch access token\",\"noSchemes\":\"No supported security schemes are declared in this OpenAPI document.\",\"oauth2PasswordLabel\":\"OAuth2 password\",\"passwordPlaceholder\":\"Password\",\"title\":\"Authorize\",\"usernamePlaceholder\":\"Username\"},\"changeNodeTypeDialog\":{\"description\":\"Este nó possui várias ramificações de saída. O novo tipo suporta apenas uma. Escolha qual ramificação manter; as outras serão removidas.\",\"keepBranch\":\"Manter esta ramificação\",\"noConditions\":\"Sem condições\",\"title\":\"Alterar tipo de nó\"},\"comboboxPattern\":{\"custom\":\"Personalizado: {value}\",\"search\":\"Pesquisar padrões...\",\"selectOrCreate\":\"Selecionar ou criar um padrão\",\"usePattern\":\"Usar padrão: {query}\"},\"comboboxWithCreate\":{\"clearSelection\":\"Limpar seleção\",\"noResults\":\"Nenhum resultado encontrado\"},\"conditionalEdge\":{\"addCondition\":\"Adicionar condição\",\"and\":\"E\",\"condition\":\"Condição\",\"conditions\":\"Condições\",\"conditionsAnd\":\"condições (E)\",\"conditionsMixed\":\"condições (mistas)\",\"conditionsOr\":\"condições (OU)\",\"defineCondition\":\"Definir uma condição\",\"displayConditions\":\"Exibir condições\",\"displayConditionsDesc\":\"Este campo será exibido se as seguintes condições forem atendidas.\",\"fallback\":\"Padrão\",\"fallbackPath\":\"Caminho padrão / de fallback\",\"fallbackPathDesc\":\"Este caminho será seguido quando nenhuma outra condição corresponder\",\"field\":\"Campo\",\"labelDesc\":\"Rótulo personalizado para o botão de condição\",\"labelOptional\":\"Rótulo (opcional)\",\"labelPlaceholder\":\"Ex: Se elegível\",\"noFieldsAvailable\":\"Nenhum campo disponível\",\"operator\":\"Operador\",\"or\":\"OU\",\"removeCondition\":\"Remover condição\",\"selectField\":\"Selecione um campo\",\"value\":\"Valor\",\"valuePlaceholder\":\"Ex: 18\"},\"flowNodeForm\":{\"label\":\"Rótulo\",\"targetId\":\"ID de destino\",\"targetIdDesc\":\"Identificador único do fluxo de destino.\"},\"groupNodeForm\":{\"label\":\"Rótulo\"},\"headersDialog\":{\"addHeader\":\"Add header\",\"description\":\"These headers are forwarded to every HTTP request issued by the form (HTTP inputs, submit, options sources). Field-level headers with the same key override these.\",\"empty\":\"No headers yet.\",\"keyPlaceholder\":\"Authorization\",\"removeHeader\":\"Remove header\",\"title\":\"Global headers\",\"valuePlaceholder\":\"Bearer ...\"},\"httpConfigForm\":{\"addHeader\":\"Adicionar cabeçalho\",\"apiUrl\":\"URL da API\",\"apiUrlDesc\":\"Use variáveis de modelo como {{fieldId}} para referenciar outros campos\",\"apiUrlPlaceholder\":\"https://api.exemplo.com/data\",\"behavior\":\"Comportamento\",\"fetchOnMount\":\"Buscar na montagem\",\"headerName\":\"Nome do cabeçalho\",\"headers\":\"Cabeçalhos\",\"headerValue\":\"Valor do cabeçalho\",\"httpMethod\":\"Método HTTP\",\"insertVariable\":\"Inserir variável\",\"labelField\":\"Campo de rótulo\",\"labelFieldDesc\":\"Campo a ser usado como rótulo da opção (ex: nome)\",\"labelFieldPlaceholder\":\"nome\",\"mapToOptions\":\"Mapear para opções\",\"methodDelete\":\"DELETE\",\"methodGet\":\"GET\",\"methodPatch\":\"PATCH\",\"methodPost\":\"POST\",\"methodPut\":\"PUT\",\"noFieldsAvailable\":\"Nenhum campo disponível\",\"requestBody\":\"Corpo da requisição (JSON)\",\"requestBodyDesc\":\"Use {{fieldId}} para referenciar outros campos. Certifique-se de que a formatação JSON está correta, incluindo aspas ao redor de valores de string.\",\"requestBodyPlaceholder\":\"{\\\"nome\\\": \\\"{{nomeUsuario}}\\\", \\\"idade\\\": {{idadeUsuario}}}\",\"responseConfiguration\":\"Configuração da resposta\",\"responsePath\":\"Caminho da resposta\",\"responsePathDesc\":\"Extrair dados da resposta usando notação de ponto ou indexação de array\",\"responsePathPlaceholder\":\"data.users ou results[0]\",\"searchParameter\":\"Parâmetro de pesquisa (opcional)\",\"searchParameterDesc\":\"Se definido, habilita uma caixa de pesquisa que adiciona este parâmetro às chamadas de API (ex: ?q=Paris)\",\"searchParameterPlaceholder\":\"q, pesquisa, consulta...\",\"selectMethod\":\"Selecionar método\",\"sendAllFormValues\":\"Enviar todos os dados do formulário\",\"sendAllFormValuesDesc\":\"Enviar automaticamente todos os valores do formulário como corpo JSON\",\"showLoadingState\":\"Mostrar estado de carregamento\",\"valueField\":\"Campo de valor\",\"valueFieldDesc\":\"Campo a ser usado como valor da opção (ex: id)\",\"valueFieldPlaceholder\":\"id\"},\"inputNodeForm\":{\"addInputFieldsBeforeReference\":\"Adicione campos de entrada antes deste nó para referenciá-los\",\"addMapping\":\"Adicionar mapeamento\",\"addOption\":\"Adicionar opção\",\"advancedConfiguration\":\"Configuração avançada\",\"defaultChecked\":\"Marcado por padrão\",\"defaultValuesCommaSeparated\":\"Valores padrão (separados por vírgulas)\",\"defaultValuesPlaceholder\":\"valor1, valor2, valor3\",\"defaultValueType\":\"Tipo de valor padrão\",\"defaultValueTypeNone\":\"Nenhum\",\"defaultValueTypeReference\":\"Campo de referência\",\"defaultValueTypeStatic\":\"Valor estático\",\"deleteOption\":\"Excluir opção\",\"disablePast\":\"Desativar datas passadas\",\"editOption\":\"Editar opção\",\"errorMessage\":\"Mensagem de erro\",\"helperText\":\"Texto de ajuda\",\"httpConfiguration\":\"Configuração HTTP\",\"label\":\"Rótulo\",\"multipleFiles\":\"Arquivos múltiplos\",\"multipleSelection\":\"Seleção múltipla\",\"name\":\"Nome\",\"nameDescription\":\"Nome de campo personalizado opcional para exportação de formulário. Se vazio, o rótulo será usado como chave.\",\"noParentFieldsAvailable\":\"Nenhum campo pai disponível\",\"objectMapping\":\"Mapeamento de objeto\",\"objectMappingDesc\":\"Mapear as propriedades do objeto de origem para uma nova estrutura\",\"optional\":\"Opcional\",\"optionDescription\":\"Descrição\",\"optionImageAdd\":\"Adicionar imagem\",\"optionImageError\":\"Não foi possível processar a imagem.\",\"optionImageInvalid\":\"Formato de imagem não suportado.\",\"optionImageRemove\":\"Remover imagem\",\"optionImageReplace\":\"Substituir imagem\",\"optionImageTooLarge\":\"Imagem muito grande (máx. 5 MB).\",\"optionImageUpload\":\"Enviar arquivo\",\"optionImageUrlPlaceholder\":\"https://...\",\"optionLabel\":\"Rótulo\",\"options\":\"Opções\",\"optionValue\":\"Valor\",\"pattern\":\"Padrão\",\"placeholder\":\"Espaço reservado\",\"referenceField\":\"Campo de referência\",\"required\":\"Obrigatório\",\"selectReferenceField\":\"Selecione um campo\",\"selectTransformation\":\"Selecionar transformação\",\"selectType\":\"Selecionar tipo\",\"sourceKey\":\"Chave de origem\",\"staticValue\":\"Valor estático\",\"staticValuePlaceholder\":\"Digite o valor padrão\",\"submitConfiguration\":\"Configuração de envio\",\"targetKey\":\"Chave de destino\",\"transformArray\":\"Converter para array\",\"transformBoolean\":\"Converter para booleano\",\"transformDesc\":\"Transformar o valor referenciado para corresponder ao tipo deste campo\",\"transformMapToObject\":\"Mapear para objeto\",\"transformNone\":\"Sem transformação\",\"transformNumber\":\"Converter para número\",\"transformString\":\"Converter para string\",\"transformType\":\"Tipo de transformação\",\"validation\":\"Validação\",\"variant\":\"Variante\",\"variantCard\":\"Cartão\",\"variantDefault\":\"Padrão\"},\"nodeActionsSheet\":{\"deleteNode\":\"Excluir nó\",\"deleteNodeConfirm\":\"Tem certeza de que deseja excluir este nó?\",\"deleteNodeSuccess\":\"Nó excluído com sucesso\",\"editNode\":\"Editar nó\"},\"openApiDialog\":{\"baseUrlHint\":\"Optional. Overrides the document's first server URL — useful when the spec points at a different environment.\",\"baseUrlLabel\":\"Base URL override\",\"clear\":\"Clear\",\"cleared\":\"OpenAPI cleared.\",\"description\":\"Provide an OpenAPI 3.x document to power URL suggestions and Authorize.\",\"emptyInput\":\"Please provide a URL or paste a JSON document.\",\"jsonLabel\":\"Paste your OpenAPI JSON\",\"load\":\"Load\",\"loadFailed\":\"Failed to load OpenAPI document\",\"loadSuccess\":\"OpenAPI loaded.\",\"modeJson\":\"Paste JSON\",\"modeUrl\":\"From URL\",\"title\":\"OpenAPI source\",\"urlLabel\":\"OpenAPI document URL\"},\"optionsSourceForm\":{\"descriptionField\":\"Description\",\"descriptionFieldPlaceholder\":\"Path to description (optional)\",\"detect\":\"Detect fields\",\"detectFailed\":\"Failed to fetch the API.\",\"detectSuccess\":\"Fields detected.\",\"disable\":\"Use static options\",\"dynamicHint\":\"Options are fetched from this API at runtime.\",\"enable\":\"Fetch from API\",\"imageField\":\"Image\",\"imageFieldPlaceholder\":\"Path to image URL (optional)\",\"labelField\":\"Label\",\"labelFieldPlaceholder\":\"Path to label (e.g., name)\",\"noFieldsDetected\":\"No fields detected — check the URL or response path.\",\"none\":\"— None —\",\"previewCount\":\"{count} options detected\",\"responsePath\":\"Response path\",\"responsePathHint\":\"Optional. Use a path like \\\"data.users\\\" if the array is nested.\",\"responsePathPlaceholder\":\"e.g., data.users\",\"staticOptions\":\"Static options\",\"staticOptionsHint\":\"Options are defined manually in the editor.\",\"title\":\"Options source\",\"urlRequired\":\"URL is required.\",\"valueField\":\"Value\",\"valueFieldPlaceholder\":\"Path to value (e.g., id)\"},\"selectInputType\":{\"type\":\"Tipo\"},\"selectNodeGroup\":{\"createNewGroup\":\"Criar um novo grupo\",\"group\":\"Grupo\",\"groupAlreadyExists\":\"Este grupo já existe\",\"groupAlreadyExistsDesc\":\"Use o seletor para adicionar o nó a um grupo existente.\",\"groupCreated\":\"Grupo criado\",\"groupCreatedDesc\":\"O grupo \\\"{groupName}\\\" foi criado com sucesso.\",\"groupName\":\"Nome do grupo\",\"groupNamePlaceholder\":\"Ex: Passo 1 - Informações pessoais\",\"newGroup\":\"Novo grupo\",\"newGroupDescription\":\"O grupo será criado em torno do nó selecionado.\",\"noGroup\":\"Sem grupo\"},\"selectNodeType\":{\"nodeType\":\"Tipo de nó\",\"options\":{\"flow\":\"Fluxo externo\",\"group\":\"Grupo\",\"input\":\"Pergunta\",\"ui\":\"Elemento de design\"}},\"submitConfigForm\":{\"addHeader\":\"Adicionar cabeçalho\",\"apiUrl\":\"URL da API\",\"apiUrlDesc\":\"Use {{fieldId}} para referenciar outros campos\",\"apiUrlPlaceholder\":\"https://api.exemplo.com/submit\",\"behavior\":\"Comportamento\",\"errorMessage\":\"Mensagem de erro\",\"errorMessageDesc\":\"Mensagem exibida quando o envio falha\",\"errorMessagePlaceholder\":\"Ocorreu um erro. Por favor, tente novamente.\",\"headerName\":\"Nome do cabeçalho\",\"headers\":\"Cabeçalhos\",\"headerValue\":\"Valor do cabeçalho\",\"httpMethod\":\"Método HTTP\",\"insertVariable\":\"Inserir variável\",\"methodDelete\":\"DELETE\",\"methodPatch\":\"PATCH\",\"methodPost\":\"POST\",\"methodPut\":\"PUT\",\"noFieldsAvailable\":\"Nenhum campo disponível\",\"postSubmission\":\"Após o envio\",\"redirectUrl\":\"URL de redirecionamento\",\"redirectUrlDesc\":\"URL para redirecionar após envio bem-sucedido\",\"redirectUrlPlaceholder\":\"/success ou https://exemplo.com/obrigado\",\"requestBody\":\"Corpo da requisição (JSON)\",\"requestBodyDesc\":\"Use {{fieldId}} para referenciar outros campos. Certifique-se de que a formatação JSON está correta, incluindo aspas ao redor de valores de string.\",\"requestBodyPlaceholder\":\"{\\\"nome\\\": \\\"{{nomeUsuario}}\\\", \\\"email\\\": \\\"{{emailUsuario}}\\\"}\",\"selectMethod\":\"Selecionar método\",\"sendAllFormValues\":\"Enviar todos os dados do formulário\",\"sendAllFormValuesDesc\":\"Enviar automaticamente todos os valores do formulário como corpo JSON\",\"showLoadingState\":\"Mostrar estado de carregamento\",\"successMessage\":\"Mensagem de sucesso\",\"successMessageDesc\":\"Mensagem exibida quando o envio é bem-sucedido\",\"successMessagePlaceholder\":\"Formulário enviado com sucesso!\"},\"treegeNode\":{\"labelPlaceholder\":\"Rótulo...\"},\"uiNodeForm\":{\"label\":\"Rótulo\",\"type\":\"Tipo\",\"typeDivider\":\"Divisor\",\"typeTitle\":\"Título\"}}"),
|
|
445
|
+
editor: /* @__PURE__ */ JSON.parse("{\"actionsPanel\":{\"addNode\":\"Adicionar elemento\",\"authorize\":\"Authorize\",\"clear\":\"Limpar\",\"clearSuccess\":\"Fluxo limpo!\",\"clearSuccessDesc\":\"Todos os nós e arestas foram removidos.\",\"copyFailed\":\"Falha ao copiar o ID do fluxo\",\"downloadSuccess\":\"Download bem-sucedido.\",\"downloadSuccessDesc\":\"O fluxo foi exportado com sucesso.\",\"exportJson\":\"Exportar JSON\",\"globalHeaders\":\"Global headers\",\"idCopied\":\"ID do fluxo copiado!\",\"importJson\":\"Importar JSON\",\"importSuccess\":\"Importação bem-sucedida!\",\"importSuccessDesc\":\"O fluxo foi importado com sucesso.\",\"invalidJson\":\"Arquivo JSON inválido.\",\"invalidJsonDesc\":\"O arquivo deve conter arrays de nós e arestas.\",\"openApi\":\"OpenAPI\",\"parseError\":\"Erro ao analisar o arquivo JSON.\",\"parseErrorDesc\":\"Tente corrigir o arquivo e importá-lo novamente.\"},\"aiGenerator\":{\"aiNotConfigured\":\"IA não configurada\",\"aiNotConfiguredDesc\":\"Adicione a prop {code} ao TreegeEditorProvider\",\"buttonLabel\":\"Gerar com IA\",\"cancel\":\"Cancelar\",\"description\":\"Descrição\",\"descriptionPlaceholder\":\"Exemplo: Criar um formulário de contato com nome, email, telefone e mensagem\",\"enterDescription\":\"Por favor insira uma descrição\",\"failedToGenerate\":\"Falha ao gerar árvore\",\"generate\":\"Gerar\",\"generating\":\"Gerando...\",\"keyboardShortcut\":\"Pressione {cmdEnter} ou {ctrlEnter} para gerar\",\"missingApiKey\":\"Configuração de IA ausente\",\"missingApiKeyDesc\":\"Por favor configure sua chave API de IA no TreegeEditorProvider\",\"successDescription\":\"{nodes} nós e {edges} arestas criados\",\"successTitle\":\"Árvore gerada com sucesso!\",\"title\":\"Gerar fluxo com IA\",\"titleDescription\":\"Descreva o formulário ou árvore de decisão que deseja criar, e a IA irá gerá-lo para você.\",\"unknownError\":\"Erro desconhecido\"},\"apiUrlCombobox\":{\"browseRoutes\":\"Browse OpenAPI routes\",\"noRoutes\":\"No matching route\",\"searchRoutes\":\"Search by method, path, or summary\"},\"authorizeDialog\":{\"apiKeyLabel\":\"API key\",\"apply\":\"Apply\",\"bearerLabel\":\"Bearer token\",\"clear\":\"Clear\",\"description\":\"Authenticate against the API to forward credentials to every request issued by the form.\",\"exchangeFailed\":\"Failed to fetch access token\",\"noSchemes\":\"No supported security schemes are declared in this OpenAPI document.\",\"oauth2PasswordLabel\":\"OAuth2 password\",\"passwordPlaceholder\":\"Password\",\"title\":\"Authorize\",\"usernamePlaceholder\":\"Username\"},\"changeNodeTypeDialog\":{\"description\":\"Este nó possui várias ramificações de saída. O novo tipo suporta apenas uma. Escolha qual ramificação manter; as outras serão removidas.\",\"keepBranch\":\"Manter esta ramificação\",\"noConditions\":\"Sem condições\",\"title\":\"Alterar tipo de nó\"},\"comboboxPattern\":{\"custom\":\"Personalizado: {value}\",\"search\":\"Pesquisar padrões...\",\"selectOrCreate\":\"Selecionar ou criar um padrão\",\"usePattern\":\"Usar padrão: {query}\"},\"comboboxWithCreate\":{\"clearSelection\":\"Limpar seleção\",\"noResults\":\"Nenhum resultado encontrado\"},\"conditionalEdge\":{\"addCondition\":\"Adicionar condição\",\"and\":\"E\",\"condition\":\"Condição\",\"conditions\":\"Condições\",\"conditionsAnd\":\"condições (E)\",\"conditionsMixed\":\"condições (mistas)\",\"conditionsOr\":\"condições (OU)\",\"defineCondition\":\"Definir uma condição\",\"displayConditions\":\"Exibir condições\",\"displayConditionsDesc\":\"Este campo será exibido se as seguintes condições forem atendidas.\",\"fallback\":\"Padrão\",\"fallbackPath\":\"Caminho padrão / de fallback\",\"fallbackPathDesc\":\"Este caminho será seguido quando nenhuma outra condição corresponder\",\"field\":\"Campo\",\"labelDesc\":\"Rótulo personalizado para o botão de condição\",\"labelOptional\":\"Rótulo (opcional)\",\"labelPlaceholder\":\"Ex: Se elegível\",\"noFieldsAvailable\":\"Nenhum campo disponível\",\"operator\":\"Operador\",\"or\":\"OU\",\"removeCondition\":\"Remover condição\",\"selectField\":\"Selecione um campo\",\"value\":\"Valor\",\"valuePlaceholder\":\"Ex: 18\"},\"flowNodeForm\":{\"label\":\"Rótulo\",\"targetId\":\"ID de destino\",\"targetIdDesc\":\"Identificador único do fluxo de destino.\"},\"groupNodeForm\":{\"label\":\"Rótulo\"},\"headersDialog\":{\"addHeader\":\"Add header\",\"description\":\"These headers are forwarded to every HTTP request issued by the form (HTTP inputs, submit, options sources). Field-level headers with the same key override these.\",\"empty\":\"No headers yet.\",\"keyPlaceholder\":\"Authorization\",\"removeHeader\":\"Remove header\",\"title\":\"Global headers\",\"valuePlaceholder\":\"Bearer ...\"},\"httpConfigForm\":{\"addHeader\":\"Adicionar cabeçalho\",\"apiUrl\":\"URL da API\",\"apiUrlDesc\":\"Use variáveis de modelo como {{fieldId}} para referenciar outros campos\",\"apiUrlPlaceholder\":\"https://api.exemplo.com/data\",\"behavior\":\"Comportamento\",\"fetchOnMount\":\"Buscar na montagem\",\"headerName\":\"Nome do cabeçalho\",\"headers\":\"Cabeçalhos\",\"headerValue\":\"Valor do cabeçalho\",\"httpMethod\":\"Método HTTP\",\"insertVariable\":\"Inserir variável\",\"labelField\":\"Campo de rótulo\",\"labelFieldDesc\":\"Campo a ser usado como rótulo da opção (ex: nome)\",\"labelFieldPlaceholder\":\"nome\",\"mapToOptions\":\"Mapear para opções\",\"methodDelete\":\"DELETE\",\"methodGet\":\"GET\",\"methodPatch\":\"PATCH\",\"methodPost\":\"POST\",\"methodPut\":\"PUT\",\"noFieldsAvailable\":\"Nenhum campo disponível\",\"requestBody\":\"Corpo da requisição (JSON)\",\"requestBodyDesc\":\"Use {{fieldId}} para referenciar outros campos. Certifique-se de que a formatação JSON está correta, incluindo aspas ao redor de valores de string.\",\"requestBodyPlaceholder\":\"{\\\"nome\\\": \\\"{{nomeUsuario}}\\\", \\\"idade\\\": {{idadeUsuario}}}\",\"responseConfiguration\":\"Configuração da resposta\",\"responsePath\":\"Caminho da resposta\",\"responsePathDesc\":\"Extrair dados da resposta usando notação de ponto ou indexação de array\",\"responsePathPlaceholder\":\"data.users ou results[0]\",\"searchParameter\":\"Parâmetro de pesquisa (opcional)\",\"searchParameterDesc\":\"Se definido, habilita uma caixa de pesquisa que adiciona este parâmetro às chamadas de API (ex: ?q=Paris)\",\"searchParameterPlaceholder\":\"q, pesquisa, consulta...\",\"selectMethod\":\"Selecionar método\",\"sendAllFormValues\":\"Enviar todos os dados do formulário\",\"sendAllFormValuesDesc\":\"Enviar automaticamente todos os valores do formulário como corpo JSON\",\"showLoadingState\":\"Mostrar estado de carregamento\",\"valueField\":\"Campo de valor\",\"valueFieldDesc\":\"Campo a ser usado como valor da opção (ex: id)\",\"valueFieldPlaceholder\":\"id\"},\"inputNodeForm\":{\"addInputFieldsBeforeReference\":\"Adicione campos de entrada antes deste nó para referenciá-los\",\"addMapping\":\"Adicionar mapeamento\",\"addOption\":\"Adicionar opção\",\"advancedConfiguration\":\"Configuração avançada\",\"defaultChecked\":\"Marcado por padrão\",\"defaultValuesCommaSeparated\":\"Valores padrão (separados por vírgulas)\",\"defaultValuesPlaceholder\":\"valor1, valor2, valor3\",\"defaultValueType\":\"Tipo de valor padrão\",\"defaultValueTypeNone\":\"Nenhum\",\"defaultValueTypeReference\":\"Campo de referência\",\"defaultValueTypeStatic\":\"Valor estático\",\"deleteOption\":\"Excluir opção\",\"disablePast\":\"Desativar datas passadas\",\"editOption\":\"Editar opção\",\"errorMessage\":\"Mensagem de erro\",\"helperText\":\"Texto de ajuda\",\"httpConfiguration\":\"Configuração HTTP\",\"label\":\"Rótulo\",\"multipleFiles\":\"Arquivos múltiplos\",\"multipleSelection\":\"Seleção múltipla\",\"name\":\"Nome\",\"nameDescription\":\"Nome de campo personalizado opcional para exportação de formulário. Se vazio, o rótulo será usado como chave.\",\"noParentFieldsAvailable\":\"Nenhum campo pai disponível\",\"objectMapping\":\"Mapeamento de objeto\",\"objectMappingDesc\":\"Mapear as propriedades do objeto de origem para uma nova estrutura\",\"optional\":\"Opcional\",\"optionDescription\":\"Descrição\",\"optionImageAdd\":\"Adicionar imagem\",\"optionImageError\":\"Não foi possível processar a imagem.\",\"optionImageInvalid\":\"Formato de imagem não suportado.\",\"optionImageRemove\":\"Remover imagem\",\"optionImageReplace\":\"Substituir imagem\",\"optionImageTooLarge\":\"Imagem muito grande (máx. 5 MB).\",\"optionImageUpload\":\"Enviar arquivo\",\"optionImageUrlPlaceholder\":\"https://...\",\"optionLabel\":\"Rótulo\",\"options\":\"Opções\",\"optionValue\":\"Valor\",\"pattern\":\"Padrão\",\"placeholder\":\"Espaço reservado\",\"referenceField\":\"Campo de referência\",\"required\":\"Obrigatório\",\"selectReferenceField\":\"Selecione um campo\",\"selectTransformation\":\"Selecionar transformação\",\"selectType\":\"Selecionar tipo\",\"sourceKey\":\"Chave de origem\",\"staticValue\":\"Valor estático\",\"staticValuePlaceholder\":\"Digite o valor padrão\",\"submitConfiguration\":\"Configuração de envio\",\"targetKey\":\"Chave de destino\",\"transformArray\":\"Converter para array\",\"transformBoolean\":\"Converter para booleano\",\"transformDesc\":\"Transformar o valor referenciado para corresponder ao tipo deste campo\",\"transformMapToObject\":\"Mapear para objeto\",\"transformNone\":\"Sem transformação\",\"transformNumber\":\"Converter para número\",\"transformString\":\"Converter para string\",\"transformType\":\"Tipo de transformação\",\"validation\":\"Validação\",\"variant\":\"Variante\",\"variantCard\":\"Cartão\",\"variantDefault\":\"Padrão\"},\"nodeActionsSheet\":{\"deleteNode\":\"Excluir nó\",\"deleteNodeConfirm\":\"Tem certeza de que deseja excluir este nó?\",\"deleteNodeSuccess\":\"Nó excluído com sucesso\",\"editNode\":\"Editar nó\"},\"openApiDialog\":{\"baseUrlHint\":\"Optional. Overrides the document's first server URL — useful when the spec points at a different environment.\",\"baseUrlLabel\":\"Base URL override\",\"clear\":\"Clear\",\"cleared\":\"OpenAPI cleared.\",\"description\":\"Provide an OpenAPI 3.x document to power URL suggestions and Authorize.\",\"emptyInput\":\"Please provide a URL or paste a JSON document.\",\"jsonLabel\":\"Paste your OpenAPI JSON\",\"load\":\"Load\",\"loadFailed\":\"Failed to load OpenAPI document\",\"loadSuccess\":\"OpenAPI loaded.\",\"modeJson\":\"Paste JSON\",\"modeUrl\":\"From URL\",\"title\":\"OpenAPI source\",\"urlLabel\":\"OpenAPI document URL\"},\"optionsSourceForm\":{\"descriptionField\":\"Description\",\"descriptionFieldPlaceholder\":\"Path to description (optional)\",\"detect\":\"Detect fields\",\"detectFailed\":\"Failed to fetch the API.\",\"detectSuccess\":\"Fields detected.\",\"disable\":\"Use static options\",\"dynamicHint\":\"Options are fetched from this API at runtime.\",\"enable\":\"Fetch from API\",\"imageField\":\"Image\",\"imageFieldPlaceholder\":\"Path to image URL (optional)\",\"labelField\":\"Label\",\"labelFieldPlaceholder\":\"Path to label (e.g., name)\",\"noFieldsDetected\":\"No fields detected — check the URL or response path.\",\"none\":\"— None —\",\"previewCount\":\"{count} options detected\",\"responsePath\":\"Response path\",\"responsePathHint\":\"Optional. Use a path like \\\"data.users\\\" if the array is nested.\",\"responsePathPlaceholder\":\"e.g., data.users\",\"staticOptions\":\"Static options\",\"staticOptionsHint\":\"Options are defined manually in the editor.\",\"title\":\"Options source\",\"urlRequired\":\"URL is required.\",\"valueField\":\"Value\",\"valueFieldPlaceholder\":\"Path to value (e.g., id)\"},\"selectInputType\":{\"type\":\"Tipo\"},\"selectNodeGroup\":{\"createNewGroup\":\"Criar um novo grupo\",\"group\":\"Grupo\",\"groupAlreadyExists\":\"Este grupo já existe\",\"groupAlreadyExistsDesc\":\"Use o seletor para adicionar o nó a um grupo existente.\",\"groupCreated\":\"Grupo criado\",\"groupCreatedDesc\":\"O grupo \\\"{groupName}\\\" foi criado com sucesso.\",\"groupName\":\"Nome do grupo\",\"groupNamePlaceholder\":\"Ex: Passo 1 - Informações pessoais\",\"newGroup\":\"Novo grupo\",\"newGroupDescription\":\"O grupo será criado em torno do nó selecionado.\",\"noGroup\":\"Sem grupo\",\"renameGroup\":\"Renomear grupo\"},\"selectNodeType\":{\"nodeType\":\"Tipo de nó\",\"options\":{\"flow\":\"Fluxo externo\",\"group\":\"Grupo\",\"input\":\"Pergunta\",\"ui\":\"Elemento de design\"}},\"submitConfigForm\":{\"addHeader\":\"Adicionar cabeçalho\",\"apiUrl\":\"URL da API\",\"apiUrlDesc\":\"Use {{fieldId}} para referenciar outros campos\",\"apiUrlPlaceholder\":\"https://api.exemplo.com/submit\",\"behavior\":\"Comportamento\",\"errorMessage\":\"Mensagem de erro\",\"errorMessageDesc\":\"Mensagem exibida quando o envio falha\",\"errorMessagePlaceholder\":\"Ocorreu um erro. Por favor, tente novamente.\",\"headerName\":\"Nome do cabeçalho\",\"headers\":\"Cabeçalhos\",\"headerValue\":\"Valor do cabeçalho\",\"httpMethod\":\"Método HTTP\",\"insertVariable\":\"Inserir variável\",\"methodDelete\":\"DELETE\",\"methodPatch\":\"PATCH\",\"methodPost\":\"POST\",\"methodPut\":\"PUT\",\"noFieldsAvailable\":\"Nenhum campo disponível\",\"postSubmission\":\"Após o envio\",\"redirectUrl\":\"URL de redirecionamento\",\"redirectUrlDesc\":\"URL para redirecionar após envio bem-sucedido\",\"redirectUrlPlaceholder\":\"/success ou https://exemplo.com/obrigado\",\"requestBody\":\"Corpo da requisição (JSON)\",\"requestBodyDesc\":\"Use {{fieldId}} para referenciar outros campos. Certifique-se de que a formatação JSON está correta, incluindo aspas ao redor de valores de string.\",\"requestBodyPlaceholder\":\"{\\\"nome\\\": \\\"{{nomeUsuario}}\\\", \\\"email\\\": \\\"{{emailUsuario}}\\\"}\",\"selectMethod\":\"Selecionar método\",\"sendAllFormValues\":\"Enviar todos os dados do formulário\",\"sendAllFormValuesDesc\":\"Enviar automaticamente todos os valores do formulário como corpo JSON\",\"showLoadingState\":\"Mostrar estado de carregamento\",\"successMessage\":\"Mensagem de sucesso\",\"successMessageDesc\":\"Mensagem exibida quando o envio é bem-sucedido\",\"successMessagePlaceholder\":\"Formulário enviado com sucesso!\"},\"treegeNode\":{\"labelPlaceholder\":\"Rótulo...\"},\"uiNodeForm\":{\"label\":\"Rótulo\",\"type\":\"Tipo\",\"typeDivider\":\"Divisor\",\"typeTitle\":\"Título\"}}"),
|
|
422
446
|
renderer: {
|
|
423
447
|
defaultAddressInput: {
|
|
424
448
|
enterAddress: "Digite um endereço...",
|
|
@@ -465,6 +489,10 @@ var u = (e) => e?.type === "input", d = (e) => e?.type === "ui", f = (e) => e?.t
|
|
|
465
489
|
defaultSubmitButton: {
|
|
466
490
|
requiredFieldsMissing: "Campos obrigatórios ausentes",
|
|
467
491
|
submit: "Enviar"
|
|
492
|
+
},
|
|
493
|
+
step: {
|
|
494
|
+
back: "Voltar",
|
|
495
|
+
continue: "Continuar"
|
|
468
496
|
}
|
|
469
497
|
},
|
|
470
498
|
validation: {
|
|
@@ -493,7 +521,7 @@ var u = (e) => e?.type === "input", d = (e) => e?.type === "ui", f = (e) => e?.t
|
|
|
493
521
|
group: "group",
|
|
494
522
|
input: "input",
|
|
495
523
|
ui: "ui"
|
|
496
|
-
}, O = (e) => e == null ? null : typeof e == "boolean" || typeof e == "number" ? e : typeof e == "string" ? e === "" ? null : e : typeof e == "object" ? JSON.stringify(e) : String(e),
|
|
524
|
+
}, O = (e) => e == null ? null : typeof e == "boolean" || typeof e == "number" ? e : typeof e == "string" ? e === "" ? null : e : typeof e == "object" ? JSON.stringify(e) : String(e), k = (e, t, n) => {
|
|
497
525
|
let r = O(e), i = O(t);
|
|
498
526
|
if (r === null || i === null) switch (n) {
|
|
499
527
|
case "===": return r === i;
|
|
@@ -527,7 +555,7 @@ var u = (e) => e?.type === "input", d = (e) => e?.type === "ui", f = (e) => e?.t
|
|
|
527
555
|
}
|
|
528
556
|
default: return !1;
|
|
529
557
|
}
|
|
530
|
-
},
|
|
558
|
+
}, A = (e, t, n) => {
|
|
531
559
|
let { field: r, operator: i, value: a } = e;
|
|
532
560
|
if (!(r && i) || a === void 0) return !0;
|
|
533
561
|
let o = t[r];
|
|
@@ -535,25 +563,25 @@ var u = (e) => e?.type === "input", d = (e) => e?.type === "ui", f = (e) => e?.t
|
|
|
535
563
|
let e = n.get(r);
|
|
536
564
|
e && u(e) && (o = t[e.id]);
|
|
537
565
|
}
|
|
538
|
-
return
|
|
539
|
-
},
|
|
566
|
+
return k(o, a, i);
|
|
567
|
+
}, j = (e, t, n) => {
|
|
540
568
|
if (!e || e.length === 0) return !0;
|
|
541
|
-
if (e.length === 1) return
|
|
542
|
-
let r =
|
|
569
|
+
if (e.length === 1) return A(e[0], t, n);
|
|
570
|
+
let r = A(e[0], t, n);
|
|
543
571
|
for (let i = 1; i < e.length; i += 1) {
|
|
544
|
-
let a = e[i], o =
|
|
572
|
+
let a = e[i], o = A(a, t, n), s = e[i - 1].logicalOperator || E.AND;
|
|
545
573
|
if (s === E.AND) {
|
|
546
574
|
if (r &&= o, !r) return !1;
|
|
547
575
|
} else if (s === E.OR && (r ||= o, r)) return !0;
|
|
548
576
|
}
|
|
549
577
|
return r;
|
|
550
|
-
},
|
|
578
|
+
}, ee = new Set([
|
|
551
579
|
"text",
|
|
552
580
|
"number",
|
|
553
581
|
"password",
|
|
554
582
|
"textarea",
|
|
555
583
|
"time"
|
|
556
|
-
]),
|
|
584
|
+
]), te = (e) => e.filter(u), M = (e) => {
|
|
557
585
|
if (e.data.name) return e.data.name;
|
|
558
586
|
if (e.data.label) {
|
|
559
587
|
if (e.data.label.en) return e.data.label.en;
|
|
@@ -561,19 +589,19 @@ var u = (e) => e?.type === "input", d = (e) => e?.type === "ui", f = (e) => e?.t
|
|
|
561
589
|
if (t) return t;
|
|
562
590
|
}
|
|
563
591
|
return e.id;
|
|
564
|
-
},
|
|
592
|
+
}, N = (e, t) => {
|
|
565
593
|
let n = e.type ?? "text";
|
|
566
|
-
return !e.placeholder?.[t] &&
|
|
567
|
-
},
|
|
594
|
+
return !e.placeholder?.[t] && ee.has(n) ? w(t)["renderer.defaultInputs.newAnswer"] ?? "" : x(e.placeholder, t);
|
|
595
|
+
}, P = (e, t) => {
|
|
568
596
|
let n = t.find((t) => t.id === e);
|
|
569
|
-
return n ?
|
|
570
|
-
},
|
|
597
|
+
return n ? M(n) : void 0;
|
|
598
|
+
}, F = (e) => e == null || typeof e == "string" && e.trim() === "" ? !0 : Array.isArray(e) && e.length === 0, I = (e, t) => e ? t[e] != null : !1, L = (e, t) => {
|
|
571
599
|
let n = {};
|
|
572
600
|
return t.forEach((t) => {
|
|
573
|
-
let r = t.id, i =
|
|
601
|
+
let r = t.id, i = M(t);
|
|
574
602
|
e[r] !== void 0 && (n[i] = e[r]);
|
|
575
603
|
}), n;
|
|
576
|
-
},
|
|
604
|
+
}, R = (e, t, n) => {
|
|
577
605
|
if (!t) return e;
|
|
578
606
|
switch (t) {
|
|
579
607
|
case "toString": return String(e);
|
|
@@ -608,7 +636,7 @@ var u = (e) => e?.type === "input", d = (e) => e?.type === "ui", f = (e) => e?.t
|
|
|
608
636
|
return e;
|
|
609
637
|
default: return e;
|
|
610
638
|
}
|
|
611
|
-
},
|
|
639
|
+
}, z = (e, t) => {
|
|
612
640
|
if (Object.is(e, t)) return !0;
|
|
613
641
|
if (!(e && t) || typeof e != "object" || typeof t != "object") return !1;
|
|
614
642
|
try {
|
|
@@ -616,17 +644,17 @@ var u = (e) => e?.type === "input", d = (e) => e?.type === "ui", f = (e) => e?.t
|
|
|
616
644
|
} catch {
|
|
617
645
|
return !1;
|
|
618
646
|
}
|
|
619
|
-
},
|
|
647
|
+
}, ne = (e, t, n) => {
|
|
620
648
|
let r = {};
|
|
621
649
|
return e.forEach((e) => {
|
|
622
650
|
let { defaultValue: i } = e.data;
|
|
623
651
|
if (!i || i.type !== "reference" || !i.referenceField) return;
|
|
624
652
|
let a = e.id, { referenceField: o, transformFunction: s, objectMapping: c } = i, l = t[o], u = n[o];
|
|
625
653
|
if (l === u || l == null) return;
|
|
626
|
-
let d =
|
|
654
|
+
let d = R(l, s, c), f = R(u, s, c), p = t[a], m = z(p, f), h = z(p, d);
|
|
627
655
|
!m || h || (r[a] = d);
|
|
628
656
|
}), r;
|
|
629
|
-
},
|
|
657
|
+
}, re = (e) => {
|
|
630
658
|
let t = /* @__PURE__ */ new Map();
|
|
631
659
|
return e.forEach((e) => {
|
|
632
660
|
let n = t.get(e.source);
|
|
@@ -648,13 +676,13 @@ var u = (e) => e?.type === "input", d = (e) => e?.type === "ui", f = (e) => e?.t
|
|
|
648
676
|
return r ? r.every((e) => {
|
|
649
677
|
if (!e.field) return !0;
|
|
650
678
|
let r = n.get(e.field);
|
|
651
|
-
return
|
|
679
|
+
return I(u(r) ? r.id : e.field, t);
|
|
652
680
|
}) : !1;
|
|
653
681
|
})) return a.length > 0 && o.push(...a), {
|
|
654
682
|
edgesToFollow: o,
|
|
655
683
|
waitingForInput: o.length === 0
|
|
656
684
|
};
|
|
657
|
-
let s = i.filter((e) =>
|
|
685
|
+
let s = i.filter((e) => j(e.data?.conditions, t, n));
|
|
658
686
|
return s.length > 0 ? (o.push(...s), {
|
|
659
687
|
edgesToFollow: o,
|
|
660
688
|
waitingForInput: !1
|
|
@@ -662,10 +690,10 @@ var u = (e) => e?.type === "input", d = (e) => e?.type === "ui", f = (e) => e?.t
|
|
|
662
690
|
edgesToFollow: o,
|
|
663
691
|
waitingForInput: !1
|
|
664
692
|
});
|
|
665
|
-
},
|
|
666
|
-
let n = e.filter((e) =>
|
|
693
|
+
}, ae = (e, t) => !t.some((t) => t.target === e), oe = (e, t) => {
|
|
694
|
+
let n = e.filter((e) => ae(e.id, t));
|
|
667
695
|
return n.find(u) || n[0];
|
|
668
|
-
},
|
|
696
|
+
}, B = (e, t, n, r) => {
|
|
669
697
|
e.forEach((e) => {
|
|
670
698
|
let i = r.get(e);
|
|
671
699
|
if (!i) return;
|
|
@@ -678,15 +706,15 @@ var u = (e) => e?.type === "input", d = (e) => e?.type === "ui", f = (e) => e?.t
|
|
|
678
706
|
a = r.get(a)?.parentId;
|
|
679
707
|
}
|
|
680
708
|
});
|
|
681
|
-
},
|
|
682
|
-
let r =
|
|
709
|
+
}, se = (e, t, n) => {
|
|
710
|
+
let r = oe(e, t);
|
|
683
711
|
if (!r) return {
|
|
684
712
|
endOfPathReached: !0,
|
|
685
713
|
visibleNodeIds: /* @__PURE__ */ new Set(),
|
|
686
714
|
visibleNodes: [],
|
|
687
715
|
visibleRootNodes: []
|
|
688
716
|
};
|
|
689
|
-
let i = new Map(e.map((e) => [e.id, e])), a =
|
|
717
|
+
let i = new Map(e.map((e) => [e.id, e])), a = re(t), o = [], s = /* @__PURE__ */ new Set(), c = /* @__PURE__ */ new Set(), l = !1, u = (e) => {
|
|
690
718
|
if (c.has(e)) return;
|
|
691
719
|
c.add(e);
|
|
692
720
|
let t = i.get(e);
|
|
@@ -703,7 +731,7 @@ var u = (e) => e?.type === "input", d = (e) => e?.type === "ui", f = (e) => e?.t
|
|
|
703
731
|
};
|
|
704
732
|
u(r.id);
|
|
705
733
|
let d = new Map(o.map((e, t) => [e.id, t])), f = new Set(s);
|
|
706
|
-
|
|
734
|
+
B(s, f, d, i);
|
|
707
735
|
let p = e.filter((e) => f.has(e.id)).sort((e, t) => (d.get(e.id) ?? 2 ** 53 - 1) - (d.get(t.id) ?? 2 ** 53 - 1)), m = p.filter((e) => !(e.parentId && f.has(e.parentId)));
|
|
708
736
|
return {
|
|
709
737
|
endOfPathReached: !l,
|
|
@@ -711,7 +739,7 @@ var u = (e) => e?.type === "input", d = (e) => e?.type === "ui", f = (e) => e?.t
|
|
|
711
739
|
visibleNodes: p,
|
|
712
740
|
visibleRootNodes: m
|
|
713
741
|
};
|
|
714
|
-
},
|
|
742
|
+
}, V = (e) => {
|
|
715
743
|
if (e.length === 1) return e[0];
|
|
716
744
|
let t = new Set(e.map((e) => e.id)), n = /* @__PURE__ */ new Set();
|
|
717
745
|
return e.forEach((e) => {
|
|
@@ -734,12 +762,12 @@ var u = (e) => e?.type === "input", d = (e) => e?.type === "ui", f = (e) => e?.t
|
|
|
734
762
|
}
|
|
735
763
|
} else a.add(o);
|
|
736
764
|
return a;
|
|
737
|
-
},
|
|
765
|
+
}, ce = (e, t) => {
|
|
738
766
|
let n = /* @__PURE__ */ new Set();
|
|
739
767
|
return t.forEach((t) => {
|
|
740
768
|
e.has(t.source) && e.has(t.target) && n.add(t.source);
|
|
741
769
|
}), Array.from(e).filter((e) => !n.has(e));
|
|
742
|
-
},
|
|
770
|
+
}, U = (e) => {
|
|
743
771
|
if (!e) return {
|
|
744
772
|
edges: [],
|
|
745
773
|
id: "empty",
|
|
@@ -751,7 +779,7 @@ var u = (e) => e?.type === "input", d = (e) => e?.type === "ui", f = (e) => e?.t
|
|
|
751
779
|
id: "empty",
|
|
752
780
|
nodes: []
|
|
753
781
|
};
|
|
754
|
-
let n =
|
|
782
|
+
let n = V(t);
|
|
755
783
|
if (t.length === 1) return n;
|
|
756
784
|
let r = new Map(t.map((e) => [e.id, e])), i = [], a = [...n.edges], o = new Set([n.id]), s = /* @__PURE__ */ new Map(), c = /* @__PURE__ */ new Map(), l = /* @__PURE__ */ new Map(), u = (e) => {
|
|
757
785
|
let t = [];
|
|
@@ -793,7 +821,7 @@ var u = (e) => e?.type === "input", d = (e) => e?.type === "ui", f = (e) => e?.t
|
|
|
793
821
|
let n = l.get(t);
|
|
794
822
|
if (!n?.length) return;
|
|
795
823
|
let i = c.get(t), a = i ? r.get(i) : void 0;
|
|
796
|
-
a &&
|
|
824
|
+
a && ce(H(new Set(a.nodes.map((e) => e.id)), r, s, c, new Set(i ? [i] : [])), d).forEach((e) => {
|
|
797
825
|
n.forEach((n) => {
|
|
798
826
|
let r = s.get(n.target) ?? n.target, i = n.id ?? `${t}__${n.target}`;
|
|
799
827
|
d.push({
|
|
@@ -809,7 +837,7 @@ var u = (e) => e?.type === "input", d = (e) => e?.type === "ui", f = (e) => e?.t
|
|
|
809
837
|
id: n.id,
|
|
810
838
|
nodes: i
|
|
811
839
|
};
|
|
812
|
-
},
|
|
840
|
+
}, W = {
|
|
813
841
|
flows: null,
|
|
814
842
|
formErrors: {},
|
|
815
843
|
formValues: {},
|
|
@@ -819,22 +847,22 @@ var u = (e) => e?.type === "input", d = (e) => e?.type === "ui", f = (e) => e?.t
|
|
|
819
847
|
language: "",
|
|
820
848
|
optionsDisplayLimit: void 0,
|
|
821
849
|
setFieldValue: () => {}
|
|
822
|
-
},
|
|
850
|
+
}, G = t(null), K = ({ children: e, value: t }) => {
|
|
823
851
|
let n = a(() => ({
|
|
824
|
-
...
|
|
852
|
+
...W,
|
|
825
853
|
...t
|
|
826
854
|
}), [t]);
|
|
827
|
-
return /* @__PURE__ */ c(
|
|
855
|
+
return /* @__PURE__ */ c(G.Provider, {
|
|
828
856
|
value: n,
|
|
829
857
|
children: e
|
|
830
858
|
});
|
|
831
859
|
}, le = () => {
|
|
832
|
-
let e = r(
|
|
860
|
+
let e = r(G) ?? W, t = a(() => e.flows ? U(e.flows).edges : [], [e.flows]);
|
|
833
861
|
return {
|
|
834
862
|
...e,
|
|
835
863
|
edges: t
|
|
836
864
|
};
|
|
837
|
-
},
|
|
865
|
+
}, q = [
|
|
838
866
|
"b",
|
|
839
867
|
"i",
|
|
840
868
|
"em",
|
|
@@ -843,14 +871,14 @@ var u = (e) => e?.type === "input", d = (e) => e?.type === "ui", f = (e) => e?.t
|
|
|
843
871
|
"br",
|
|
844
872
|
"p",
|
|
845
873
|
"span"
|
|
846
|
-
],
|
|
874
|
+
], J = ["class"], Y = (e, t = {}) => {
|
|
847
875
|
if (e == null || e === "") return "";
|
|
848
876
|
let n = String(e), { plainTextOnly: r = !0, allowedTags: i, allowedAttributes: a } = t;
|
|
849
877
|
if (r) return l.sanitize(n, {
|
|
850
878
|
ALLOWED_ATTR: [],
|
|
851
879
|
ALLOWED_TAGS: []
|
|
852
880
|
});
|
|
853
|
-
let o = i ??
|
|
881
|
+
let o = i ?? q, s = a ?? J;
|
|
854
882
|
return l.sanitize(n, {
|
|
855
883
|
ALLOW_DATA_ATTR: !1,
|
|
856
884
|
ALLOW_UNKNOWN_PROTOCOLS: !1,
|
|
@@ -862,40 +890,40 @@ var u = (e) => e?.type === "input", d = (e) => e?.type === "ui", f = (e) => e?.t
|
|
|
862
890
|
RETURN_DOM: !1,
|
|
863
891
|
RETURN_DOM_FRAGMENT: !1
|
|
864
892
|
});
|
|
865
|
-
},
|
|
866
|
-
if (n >
|
|
893
|
+
}, ue = 100, X = (e, t = {}, n = 0, r = /* @__PURE__ */ new WeakSet()) => {
|
|
894
|
+
if (n > ue) return console.warn(`sanitizeHttpResponse: Maximum depth (${ue}) exceeded.`), typeof e == "string" ? Y(e, t) : "[Max Depth Exceeded]";
|
|
867
895
|
if (e == null) return e;
|
|
868
|
-
if (typeof e == "string") return
|
|
869
|
-
if (Array.isArray(e)) return e.map((e) =>
|
|
896
|
+
if (typeof e == "string") return Y(e, t);
|
|
897
|
+
if (Array.isArray(e)) return e.map((e) => X(e, t, n + 1, r));
|
|
870
898
|
if (typeof e == "object") {
|
|
871
899
|
if (r.has(e)) return console.warn("sanitizeHttpResponse: Circular reference detected. Breaking cycle to prevent infinite recursion."), "[Circular Reference]";
|
|
872
900
|
r.add(e);
|
|
873
901
|
let i = {};
|
|
874
|
-
for (let [a, o] of Object.entries(e)) i[a] =
|
|
902
|
+
for (let [a, o] of Object.entries(e)) i[a] = X(o, t, n + 1, r);
|
|
875
903
|
return r.delete(e), i;
|
|
876
904
|
}
|
|
877
905
|
return e;
|
|
878
|
-
},
|
|
906
|
+
}, de = (e) => {
|
|
879
907
|
let t = le(), n = T(e ?? t.language);
|
|
880
908
|
return a(() => (e) => {
|
|
881
909
|
let t = n(e);
|
|
882
|
-
return typeof e == "object" && e ?
|
|
910
|
+
return typeof e == "object" && e ? Y(t) : t;
|
|
883
911
|
}, [n]);
|
|
884
|
-
},
|
|
912
|
+
}, Z = (...e) => {
|
|
885
913
|
let t = /* @__PURE__ */ new Map();
|
|
886
914
|
return e.forEach((e) => {
|
|
887
915
|
e?.forEach((e) => {
|
|
888
916
|
e.key && t.set(e.key.toLowerCase(), e);
|
|
889
917
|
});
|
|
890
918
|
}), Array.from(t.values());
|
|
891
|
-
},
|
|
919
|
+
}, fe = async (e) => {
|
|
892
920
|
try {
|
|
893
921
|
let { url: t, method: n = "GET", headers: r = [], body: i, signal: a } = e;
|
|
894
922
|
if (!t || t.trim() === "") return {
|
|
895
923
|
error: "No URL provided",
|
|
896
924
|
success: !1
|
|
897
925
|
};
|
|
898
|
-
let o =
|
|
926
|
+
let o = Z([{
|
|
899
927
|
key: "Content-Type",
|
|
900
928
|
value: "application/json"
|
|
901
929
|
}], r), s = {
|
|
@@ -927,13 +955,13 @@ var u = (e) => e?.type === "input", d = (e) => e?.type === "ui", f = (e) => e?.t
|
|
|
927
955
|
success: !1
|
|
928
956
|
};
|
|
929
957
|
}
|
|
930
|
-
},
|
|
958
|
+
}, Q = (e, t, n = {}) => {
|
|
931
959
|
if (!e) return "";
|
|
932
960
|
let { encode: r = !1, json: i = !1 } = n;
|
|
933
961
|
return e.replace(/\{\{([\w-]+)}}/g, (e, n) => {
|
|
934
962
|
let a = t[n.trim()];
|
|
935
963
|
if (a == null) return i ? "null" : "";
|
|
936
|
-
let o = typeof a == "string" ?
|
|
964
|
+
let o = typeof a == "string" ? Y(a) : a;
|
|
937
965
|
if (r) return encodeURIComponent(String(o));
|
|
938
966
|
if (i) {
|
|
939
967
|
if (typeof o == "string") return `"${o.replace(/\\/g, "\\\\").replace(/"/g, "\\\"")}"`;
|
|
@@ -942,14 +970,14 @@ var u = (e) => e?.type === "input", d = (e) => e?.type === "ui", f = (e) => e?.t
|
|
|
942
970
|
}
|
|
943
971
|
return String(o);
|
|
944
972
|
});
|
|
945
|
-
},
|
|
946
|
-
let r =
|
|
973
|
+
}, pe = (e, t) => e ? e.replace(/\{\{response\.([\w.-]+)}}/g, (e, n) => {
|
|
974
|
+
let r = me(t, n.trim());
|
|
947
975
|
return r == null ? "" : String(r);
|
|
948
|
-
}) : "",
|
|
976
|
+
}) : "", me = (e, t) => {
|
|
949
977
|
if (!(!e || typeof e != "object")) return t.split(".").reduce((e, t) => {
|
|
950
978
|
if (!(typeof e != "object" || !e)) return e[t];
|
|
951
979
|
}, e);
|
|
952
|
-
},
|
|
980
|
+
}, $ = (e, t) => t ? t.split(".").reduce((e, t) => {
|
|
953
981
|
if (e == null) return;
|
|
954
982
|
let n = t.match(/^(\w+)\[(\d+)]$/);
|
|
955
983
|
if (n) {
|
|
@@ -957,26 +985,26 @@ var u = (e) => e?.type === "input", d = (e) => e?.type === "ui", f = (e) => e?.t
|
|
|
957
985
|
return Array.isArray(i) ? i[Number.parseInt(r, 10)] : i;
|
|
958
986
|
}
|
|
959
987
|
return e[t];
|
|
960
|
-
}, e) : e,
|
|
961
|
-
let r =
|
|
988
|
+
}, e) : e, he = (e, t, n) => {
|
|
989
|
+
let r = $(e, t ?? "");
|
|
962
990
|
return Array.isArray(r) ? r.map((e) => {
|
|
963
|
-
let t =
|
|
991
|
+
let t = $(e, n.valueField), r = $(e, n.labelField);
|
|
964
992
|
if (t == null) return null;
|
|
965
993
|
let i = {
|
|
966
994
|
label: { en: String(r ?? t) },
|
|
967
995
|
value: String(t)
|
|
968
996
|
};
|
|
969
997
|
if (n.descriptionField) {
|
|
970
|
-
let t =
|
|
998
|
+
let t = $(e, n.descriptionField);
|
|
971
999
|
t != null && t !== "" && (i.description = { en: String(t) });
|
|
972
1000
|
}
|
|
973
1001
|
if (n.imageField) {
|
|
974
|
-
let t =
|
|
1002
|
+
let t = $(e, n.imageField);
|
|
975
1003
|
typeof t == "string" && t !== "" && (i.image = t);
|
|
976
1004
|
}
|
|
977
1005
|
return i;
|
|
978
1006
|
}).filter((e) => e !== null) : [];
|
|
979
|
-
},
|
|
1007
|
+
}, ge = (e) => new Promise((t, n) => {
|
|
980
1008
|
let r = new FileReader();
|
|
981
1009
|
r.onload = () => {
|
|
982
1010
|
let n = r.result;
|
|
@@ -990,7 +1018,7 @@ var u = (e) => e?.type === "input", d = (e) => e?.type === "ui", f = (e) => e?.t
|
|
|
990
1018
|
}, r.onerror = () => {
|
|
991
1019
|
n(/* @__PURE__ */ Error(`Failed to read file: ${e.name}`));
|
|
992
1020
|
}, r.readAsDataURL(e);
|
|
993
|
-
}),
|
|
1021
|
+
}), _e = (e) => {
|
|
994
1022
|
let t = e.data.split(",")[1], n = atob(t), r = new ArrayBuffer(n.length), i = new Uint8Array(r);
|
|
995
1023
|
for (let e = 0; e < n.length; e++) i[e] = n.charCodeAt(e);
|
|
996
1024
|
let a = new Blob([r], { type: e.type });
|
|
@@ -998,25 +1026,25 @@ var u = (e) => e?.type === "input", d = (e) => e?.type === "ui", f = (e) => e?.t
|
|
|
998
1026
|
lastModified: e.lastModified,
|
|
999
1027
|
type: e.type
|
|
1000
1028
|
});
|
|
1001
|
-
},
|
|
1029
|
+
}, ve = (e) => Promise.all(e.map((e) => ge(e))), ye = t(void 0), be = () => r(ye), xe = ({ children: e, ...t }) => /* @__PURE__ */ c(ye.Provider, {
|
|
1002
1030
|
value: t,
|
|
1003
1031
|
children: e
|
|
1004
|
-
}),
|
|
1032
|
+
}), Se = async (e, t, n, r) => {
|
|
1005
1033
|
if (!e.url || e.url.trim() === "") return {
|
|
1006
1034
|
error: "No URL configured for submission",
|
|
1007
1035
|
success: !1
|
|
1008
1036
|
};
|
|
1009
|
-
let i =
|
|
1037
|
+
let i = Q(e.url, t, { encode: !0 });
|
|
1010
1038
|
if (!i || i.trim() === "") return {
|
|
1011
1039
|
error: "Invalid URL after template replacement",
|
|
1012
1040
|
success: !1
|
|
1013
1041
|
};
|
|
1014
1042
|
let a = (e) => ({
|
|
1015
1043
|
key: e.key,
|
|
1016
|
-
value:
|
|
1017
|
-
}), o = await
|
|
1018
|
-
body: e.sendAllFormValues ? JSON.stringify(
|
|
1019
|
-
headers:
|
|
1044
|
+
value: Q(e.value, t)
|
|
1045
|
+
}), o = await fe({
|
|
1046
|
+
body: e.sendAllFormValues ? JSON.stringify(L(t, n)) : e.body ? Q(e.body, t, { json: !0 }) : void 0,
|
|
1047
|
+
headers: Z(r?.map(a), e.headers?.map(a)),
|
|
1020
1048
|
method: e.method || "POST",
|
|
1021
1049
|
url: i
|
|
1022
1050
|
});
|
|
@@ -1026,7 +1054,7 @@ var u = (e) => e?.type === "input", d = (e) => e?.type === "ui", f = (e) => e?.t
|
|
|
1026
1054
|
success: !1
|
|
1027
1055
|
};
|
|
1028
1056
|
let s = e.redirectUrl ? (() => {
|
|
1029
|
-
let t =
|
|
1057
|
+
let t = pe(e.redirectUrl, o.data);
|
|
1030
1058
|
return t && t.trim() !== "" ? t : void 0;
|
|
1031
1059
|
})() : void 0;
|
|
1032
1060
|
return {
|
|
@@ -1034,9 +1062,9 @@ var u = (e) => e?.type === "input", d = (e) => e?.type === "ui", f = (e) => e?.t
|
|
|
1034
1062
|
redirectUrl: s,
|
|
1035
1063
|
success: !0
|
|
1036
1064
|
};
|
|
1037
|
-
},
|
|
1065
|
+
}, Ce = (e) => {
|
|
1038
1066
|
e && (e.startsWith("http://") || e.startsWith("https://") ? window.location.href = e : window.history?.pushState ? (window.history.pushState({}, "", e), window.dispatchEvent(new PopStateEvent("popstate"))) : window.location.href = e);
|
|
1039
|
-
},
|
|
1067
|
+
}, we = (e, t, r, i, o) => {
|
|
1040
1068
|
let [c, l] = s(!1), [d, f] = s(null), p = a(() => {
|
|
1041
1069
|
let t = e.find((e) => u(e) && e.data?.type === "submit");
|
|
1042
1070
|
return t && u(t) ? t : null;
|
|
@@ -1046,7 +1074,7 @@ var u = (e) => e?.type === "input", d = (e) => e?.type === "ui", f = (e) => e?.t
|
|
|
1046
1074
|
if (!n.url || n.url.trim() === "") return null;
|
|
1047
1075
|
f(null), n.showLoading !== !1 && l(!0);
|
|
1048
1076
|
try {
|
|
1049
|
-
let a = await
|
|
1077
|
+
let a = await Se(n, t, i, o);
|
|
1050
1078
|
if (a.success) {
|
|
1051
1079
|
let t = x(n.successMessage, r);
|
|
1052
1080
|
if (t && f({
|
|
@@ -1054,7 +1082,7 @@ var u = (e) => e?.type === "input", d = (e) => e?.type === "ui", f = (e) => e?.t
|
|
|
1054
1082
|
type: "success"
|
|
1055
1083
|
}), e && e(a.data), a.redirectUrl) {
|
|
1056
1084
|
let e = a.redirectUrl;
|
|
1057
|
-
setTimeout(() =>
|
|
1085
|
+
setTimeout(() => Ce(e), 1e3);
|
|
1058
1086
|
}
|
|
1059
1087
|
} else f({
|
|
1060
1088
|
message: x(n.errorMessage, r) || a.error || "An error occurred during submission",
|
|
@@ -1090,38 +1118,47 @@ var u = (e) => e?.type === "input", d = (e) => e?.type === "ui", f = (e) => e?.t
|
|
|
1090
1118
|
submitButtonNode: p,
|
|
1091
1119
|
submitMessage: d
|
|
1092
1120
|
};
|
|
1093
|
-
},
|
|
1094
|
-
let
|
|
1121
|
+
}, Te = (e) => e.filter((e) => !(p(e) || f(e))).reduce((e, t) => {
|
|
1122
|
+
let n = t.parentId ?? null, r = e.at(-1);
|
|
1123
|
+
return r && r.groupId === n ? [...e.slice(0, -1), {
|
|
1124
|
+
...r,
|
|
1125
|
+
nodes: [...r.nodes, t]
|
|
1126
|
+
}] : [...e, {
|
|
1127
|
+
groupId: n,
|
|
1128
|
+
nodes: [t]
|
|
1129
|
+
}];
|
|
1130
|
+
}, []), Ee = ({ components: e, flows: t, googleApiKey: r, headers: c, initialValues: l = {}, language: d, onChange: f, onSubmit: m, theme: h, validate: g, validationMode: _ }) => {
|
|
1131
|
+
let v = be(), y = a(() => ({
|
|
1095
1132
|
components: {
|
|
1096
|
-
form: e?.form ??
|
|
1097
|
-
group: e?.group ?? _?.components?.group,
|
|
1133
|
+
form: e?.form ?? v?.components?.form,
|
|
1098
1134
|
inputs: {
|
|
1099
|
-
...
|
|
1135
|
+
...v?.components?.inputs,
|
|
1100
1136
|
...e?.inputs
|
|
1101
1137
|
},
|
|
1102
|
-
|
|
1103
|
-
|
|
1138
|
+
step: e?.step ?? v?.components?.step,
|
|
1139
|
+
submitButton: e?.submitButton ?? v?.components?.submitButton,
|
|
1140
|
+
submitButtonWrapper: e?.submitButtonWrapper ?? v?.components?.submitButtonWrapper,
|
|
1104
1141
|
ui: {
|
|
1105
|
-
...
|
|
1142
|
+
...v?.components?.ui,
|
|
1106
1143
|
...e?.ui
|
|
1107
1144
|
}
|
|
1108
1145
|
},
|
|
1109
|
-
googleApiKey: r ??
|
|
1110
|
-
headers:
|
|
1111
|
-
language: d ??
|
|
1112
|
-
theme:
|
|
1113
|
-
validationMode:
|
|
1146
|
+
googleApiKey: r ?? v?.googleApiKey,
|
|
1147
|
+
headers: Z(v?.headers, c),
|
|
1148
|
+
language: d ?? v?.language ?? "en",
|
|
1149
|
+
theme: h ?? v?.theme ?? "dark",
|
|
1150
|
+
validationMode: _ ?? v?.validationMode ?? "onSubmit"
|
|
1114
1151
|
}), [
|
|
1115
1152
|
e,
|
|
1116
|
-
|
|
1153
|
+
v,
|
|
1117
1154
|
r,
|
|
1118
1155
|
c,
|
|
1119
1156
|
d,
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
]),
|
|
1157
|
+
h,
|
|
1158
|
+
_
|
|
1159
|
+
]), b = a(() => U(t), [t]), { nodes: x, edges: S } = b, C = a(() => te(x), [x]), w = de(y.language), T = o({}), [E, D] = s({}), [O, k] = s(() => {
|
|
1123
1160
|
let e = { ...l };
|
|
1124
|
-
return
|
|
1161
|
+
return x.forEach((t) => {
|
|
1125
1162
|
if (u(t)) {
|
|
1126
1163
|
let n = t.id;
|
|
1127
1164
|
if (e[n] !== void 0) return;
|
|
@@ -1133,181 +1170,201 @@ var u = (e) => e?.type === "input", d = (e) => e?.type === "ui", f = (e) => e?.t
|
|
|
1133
1170
|
}
|
|
1134
1171
|
}
|
|
1135
1172
|
}), e;
|
|
1136
|
-
}), { endOfPathReached:
|
|
1137
|
-
b,
|
|
1173
|
+
}), { endOfPathReached: A, visibleNodes: j, visibleRootNodes: ee } = a(() => se(x, S, O), [
|
|
1138
1174
|
x,
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1175
|
+
S,
|
|
1176
|
+
O
|
|
1177
|
+
]), M = a(() => Te(j), [j]), N = a(() => {
|
|
1178
|
+
let e = /* @__PURE__ */ new Map();
|
|
1179
|
+
return x.forEach((t) => {
|
|
1180
|
+
p(t) && e.set(t.id, t);
|
|
1181
|
+
}), e;
|
|
1182
|
+
}, [x]), [P, I] = s(0), R = M.length === 0 ? 0 : Math.min(P, M.length - 1), z = M[R], re = z?.groupId ? N.get(z.groupId) : void 0, ie = R === 0, ae = M.length === 0 || R >= M.length - 1, { clearSubmitMessage: oe, handleSubmitWithConfig: B, hasSubmitConfig: V, isSubmitting: H, submitMessage: ce } = we(j, O, y.language, C, y.headers), W = o(f), G = o(g), K = a(() => L(O, C), [O, C]), le = n((e, t) => {
|
|
1183
|
+
k((n) => ({
|
|
1142
1184
|
...n,
|
|
1143
1185
|
[e]: t
|
|
1144
|
-
})),
|
|
1186
|
+
})), D((t) => {
|
|
1145
1187
|
let n = { ...t };
|
|
1146
1188
|
return delete n[e], n;
|
|
1147
1189
|
});
|
|
1148
|
-
}, []),
|
|
1149
|
-
Object.keys(e).length !== 0 && (
|
|
1190
|
+
}, []), q = n((e) => {
|
|
1191
|
+
Object.keys(e).length !== 0 && (k((t) => ({
|
|
1150
1192
|
...t,
|
|
1151
1193
|
...e
|
|
1152
|
-
})),
|
|
1194
|
+
})), D((t) => {
|
|
1153
1195
|
let n = { ...t };
|
|
1154
1196
|
return Object.keys(e).forEach((e) => {
|
|
1155
1197
|
delete n[e];
|
|
1156
1198
|
}), n;
|
|
1157
1199
|
}));
|
|
1158
|
-
}, []),
|
|
1200
|
+
}, []), J = n((e) => {
|
|
1159
1201
|
let t = {};
|
|
1160
|
-
|
|
1202
|
+
j.forEach((e) => {
|
|
1161
1203
|
if (u(e)) {
|
|
1162
|
-
let n = e.id, r =
|
|
1163
|
-
if (e.data.required &&
|
|
1164
|
-
t[n] =
|
|
1204
|
+
let n = e.id, r = O[n];
|
|
1205
|
+
if (e.data.required && F(r)) {
|
|
1206
|
+
t[n] = w(e.data.errorMessage) || w("validation.required");
|
|
1165
1207
|
return;
|
|
1166
1208
|
}
|
|
1167
|
-
if (!
|
|
1168
|
-
new RegExp(e.data.pattern).test(String(r)) || (t[n] =
|
|
1209
|
+
if (!F(r) && e.data.pattern) try {
|
|
1210
|
+
new RegExp(e.data.pattern).test(String(r)) || (t[n] = w(e.data.errorMessage) || w("validation.invalidFormat"));
|
|
1169
1211
|
} catch (e) {
|
|
1170
1212
|
console.error(`Invalid pattern for field ${n}:`, e);
|
|
1171
1213
|
}
|
|
1172
1214
|
}
|
|
1173
1215
|
});
|
|
1174
|
-
let n = e ? e(
|
|
1216
|
+
let n = e ? e(O, j) : {}, r = {
|
|
1175
1217
|
...t,
|
|
1176
1218
|
...n
|
|
1177
1219
|
};
|
|
1178
|
-
return
|
|
1220
|
+
return D(r), {
|
|
1179
1221
|
errors: r,
|
|
1180
1222
|
hasCustomErrors: Object.keys(n).length > 0,
|
|
1181
1223
|
isValid: Object.keys(r).length === 0
|
|
1182
1224
|
};
|
|
1183
1225
|
}, [
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
]),
|
|
1188
|
-
|
|
1226
|
+
j,
|
|
1227
|
+
O,
|
|
1228
|
+
w
|
|
1229
|
+
]), Y = n(() => {
|
|
1230
|
+
I((e) => e >= M.length - 1 ? e : e + 1);
|
|
1231
|
+
}, [M.length]), ue = n(() => {
|
|
1232
|
+
I((e) => Math.max(0, e - 1));
|
|
1233
|
+
}, []), X = n(async () => {
|
|
1234
|
+
let { isValid: e } = J(G.current);
|
|
1189
1235
|
if (!e) return !1;
|
|
1190
|
-
if (
|
|
1191
|
-
let e = await
|
|
1192
|
-
|
|
1236
|
+
if (V) {
|
|
1237
|
+
let e = await B((e) => {
|
|
1238
|
+
m && m(K, { httpResponse: e });
|
|
1193
1239
|
});
|
|
1194
|
-
if (e === null) return
|
|
1240
|
+
if (e === null) return m?.(K), !0;
|
|
1195
1241
|
if (!e.success) return !0;
|
|
1196
|
-
} else
|
|
1242
|
+
} else m && m(K);
|
|
1197
1243
|
return !0;
|
|
1198
1244
|
}, [
|
|
1245
|
+
J,
|
|
1199
1246
|
V,
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
]), se = a(() => {
|
|
1247
|
+
B,
|
|
1248
|
+
m,
|
|
1249
|
+
K
|
|
1250
|
+
]), fe = a(() => {
|
|
1205
1251
|
let e = [];
|
|
1206
|
-
return
|
|
1252
|
+
return j.forEach((t) => {
|
|
1207
1253
|
if (!u(t)) return;
|
|
1208
|
-
let n = t.id, r =
|
|
1209
|
-
if (t.data.required &&
|
|
1210
|
-
let r =
|
|
1254
|
+
let n = t.id, r = O[n];
|
|
1255
|
+
if (t.data.required && F(r)) {
|
|
1256
|
+
let r = w(t.data.label) || n;
|
|
1211
1257
|
e.push(r);
|
|
1212
1258
|
}
|
|
1213
1259
|
}), e;
|
|
1214
1260
|
}, [
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
]),
|
|
1219
|
-
let e = Object.keys(
|
|
1261
|
+
j,
|
|
1262
|
+
O,
|
|
1263
|
+
w
|
|
1264
|
+
]), Q = a(() => j.some((e) => u(e) && e.data.type === "submit"), [j]), pe = a(() => z ? z.nodes.every((e) => !u(e) || !e.data.required || e.data.type === "submit" ? !0 : !F(O[e.id])) : !1, [z, O]), me = a(() => {
|
|
1265
|
+
let e = Object.keys(E);
|
|
1220
1266
|
return e.length > 0 ? e[0] : void 0;
|
|
1221
|
-
}, [
|
|
1267
|
+
}, [E]);
|
|
1222
1268
|
return i(() => {
|
|
1223
|
-
|
|
1269
|
+
if (M.length === 0) {
|
|
1270
|
+
P !== 0 && I(0);
|
|
1271
|
+
return;
|
|
1272
|
+
}
|
|
1273
|
+
P > M.length - 1 && I(M.length - 1);
|
|
1274
|
+
}, [M.length, P]), i(() => {
|
|
1275
|
+
W.current = f;
|
|
1224
1276
|
}, [f]), i(() => {
|
|
1225
|
-
|
|
1226
|
-
}, [
|
|
1227
|
-
|
|
1228
|
-
}, [
|
|
1229
|
-
|
|
1230
|
-
}, [
|
|
1231
|
-
let e =
|
|
1232
|
-
Object.keys(e).length > 0 &&
|
|
1277
|
+
G.current = g;
|
|
1278
|
+
}, [g]), i(() => {
|
|
1279
|
+
W.current?.(K);
|
|
1280
|
+
}, [K]), i(() => {
|
|
1281
|
+
y.validationMode === "onChange" && J(G.current);
|
|
1282
|
+
}, [y.validationMode, J]), i(() => {
|
|
1283
|
+
let e = ne(C, O, T.current);
|
|
1284
|
+
Object.keys(e).length > 0 && q(e), T.current = O;
|
|
1233
1285
|
}, [
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
|
|
1286
|
+
O,
|
|
1287
|
+
C,
|
|
1288
|
+
q
|
|
1237
1289
|
]), {
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1290
|
+
canContinueStep: pe,
|
|
1291
|
+
canSubmit: !Q && A && x.length > 0,
|
|
1292
|
+
clearSubmitMessage: oe,
|
|
1293
|
+
config: y,
|
|
1294
|
+
currentStep: z,
|
|
1295
|
+
currentStepGroupNode: re,
|
|
1296
|
+
currentStepIndex: R,
|
|
1297
|
+
firstErrorFieldId: me,
|
|
1298
|
+
formErrors: E,
|
|
1299
|
+
formValues: O,
|
|
1300
|
+
goToNextStep: Y,
|
|
1301
|
+
goToPreviousStep: ue,
|
|
1302
|
+
handleSubmit: X,
|
|
1303
|
+
hasSubmitInput: Q,
|
|
1304
|
+
inputNodes: C,
|
|
1305
|
+
isFirstStep: ie,
|
|
1306
|
+
isLastStep: ae,
|
|
1307
|
+
isSubmitting: H,
|
|
1308
|
+
mergedFlow: b,
|
|
1309
|
+
missingRequiredFields: fe,
|
|
1310
|
+
prevFormValuesRef: T,
|
|
1311
|
+
setFieldErrors: D,
|
|
1312
|
+
setFieldValue: le,
|
|
1313
|
+
setMultipleFieldValues: q,
|
|
1314
|
+
steps: M,
|
|
1315
|
+
submitMessage: ce,
|
|
1316
|
+
t: w,
|
|
1317
|
+
validateForm: J,
|
|
1318
|
+
visibleNodes: j,
|
|
1319
|
+
visibleRootNodes: ee
|
|
1258
1320
|
};
|
|
1259
|
-
}, De = ({ DefaultFormWrapper: t,
|
|
1260
|
-
let
|
|
1321
|
+
}, De = ({ DefaultFormWrapper: t, DefaultInputWrapper: r, DefaultSubmitButton: i, DefaultSubmitButtonWrapper: o, config: s, defaultInputRenderers: l, defaultUI: f, formErrors: p, formValues: m, missingRequiredFields: h, setFieldValue: g }) => {
|
|
1322
|
+
let _ = a(() => s.components.form || t, [s.components.form, t]), v = a(() => s.components.submitButton || i, [s.components.submitButton, i]), y = a(() => s.components.submitButtonWrapper || o || e, [s.components.submitButtonWrapper, o]);
|
|
1261
1323
|
return {
|
|
1262
|
-
FormWrapper:
|
|
1263
|
-
renderNode: n(function
|
|
1264
|
-
let { type:
|
|
1265
|
-
switch (
|
|
1324
|
+
FormWrapper: _,
|
|
1325
|
+
renderNode: n(function(e) {
|
|
1326
|
+
let { type: t } = e;
|
|
1327
|
+
switch (t) {
|
|
1266
1328
|
case D.input: {
|
|
1267
|
-
if (!u(
|
|
1268
|
-
let
|
|
1269
|
-
return o ? /* @__PURE__ */ c(
|
|
1270
|
-
node:
|
|
1329
|
+
if (!u(e)) return null;
|
|
1330
|
+
let t = e.data, n = t.type || "text", i = s.components.inputs?.[n], a = l[n], o = i || a, d = e.id, f = (e) => g(d, e), _ = m[d], v = p[d], y = x(t.label, s.language), b = N(t, s.language), S = x(t.helperText, s.language), C = M(e), w = Y(y), T = Y(b), E = Y(S);
|
|
1331
|
+
return o ? /* @__PURE__ */ c(r, {
|
|
1332
|
+
node: e,
|
|
1271
1333
|
children: /* @__PURE__ */ c(o, {
|
|
1272
|
-
id:
|
|
1273
|
-
node:
|
|
1274
|
-
value:
|
|
1275
|
-
error:
|
|
1334
|
+
id: e.id,
|
|
1335
|
+
node: e,
|
|
1336
|
+
value: _,
|
|
1337
|
+
error: v,
|
|
1276
1338
|
label: w,
|
|
1277
1339
|
placeholder: T,
|
|
1278
1340
|
helperText: E,
|
|
1279
1341
|
name: C,
|
|
1280
|
-
setValue:
|
|
1281
|
-
missingRequiredFields:
|
|
1342
|
+
setValue: f,
|
|
1343
|
+
missingRequiredFields: h
|
|
1282
1344
|
})
|
|
1283
|
-
},
|
|
1345
|
+
}, e.id) : (console.warn("No renderer found for input type:", n), null);
|
|
1284
1346
|
}
|
|
1285
|
-
case D.group: return
|
|
1286
|
-
node: t,
|
|
1287
|
-
children: y.filter((e) => e.parentId === t.id).map((t) => e(t))
|
|
1288
|
-
}, t.id) : null;
|
|
1347
|
+
case D.group: return null;
|
|
1289
1348
|
case D.ui: {
|
|
1290
|
-
if (!d(
|
|
1291
|
-
let
|
|
1292
|
-
return i ? /* @__PURE__ */ c(i, { node:
|
|
1349
|
+
if (!d(e)) return null;
|
|
1350
|
+
let t = e.data.type || "title", n = s.components.ui?.[t], r = f[t], i = n || r;
|
|
1351
|
+
return i ? /* @__PURE__ */ c(i, { node: e }, e.id) : null;
|
|
1293
1352
|
}
|
|
1294
1353
|
case D.flow: return null;
|
|
1295
|
-
default: return console.warn("Unknown node type:",
|
|
1354
|
+
default: return console.warn("Unknown node type:", t), null;
|
|
1296
1355
|
}
|
|
1297
1356
|
}, [
|
|
1298
|
-
|
|
1299
|
-
|
|
1357
|
+
s,
|
|
1358
|
+
m,
|
|
1359
|
+
p,
|
|
1300
1360
|
g,
|
|
1301
1361
|
h,
|
|
1302
|
-
|
|
1303
|
-
_,
|
|
1362
|
+
l,
|
|
1304
1363
|
f,
|
|
1305
|
-
|
|
1306
|
-
r,
|
|
1307
|
-
i
|
|
1364
|
+
r
|
|
1308
1365
|
]),
|
|
1309
|
-
SubmitButton:
|
|
1310
|
-
SubmitButtonWrapper:
|
|
1366
|
+
SubmitButton: v,
|
|
1367
|
+
SubmitButtonWrapper: y
|
|
1311
1368
|
};
|
|
1312
1369
|
}, Oe = {
|
|
1313
1370
|
dark: {
|
|
@@ -1352,11 +1409,11 @@ var u = (e) => e?.type === "input", d = (e) => e?.type === "ui", f = (e) => e?.t
|
|
|
1352
1409
|
textMuted: "#737373",
|
|
1353
1410
|
textSecondary: "#525252"
|
|
1354
1411
|
}
|
|
1355
|
-
},
|
|
1412
|
+
}, ke = t({
|
|
1356
1413
|
colors: Oe.light,
|
|
1357
1414
|
setTheme: () => null,
|
|
1358
1415
|
theme: "system"
|
|
1359
|
-
}),
|
|
1416
|
+
}), Ae = ({ children: e, defaultTheme: t = "system", storageKey: n = "treege-theme", theme: r, ...o }) => {
|
|
1360
1417
|
let [l, u] = s(() => r || typeof window < "u" && localStorage.getItem(n) || t), d = r ?? l, f = Oe[d === "system" ? typeof window < "u" && window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light" : d], p = a(() => ({
|
|
1361
1418
|
colors: f,
|
|
1362
1419
|
setTheme: (e) => {
|
|
@@ -1383,15 +1440,15 @@ var u = (e) => e?.type === "input", d = (e) => e?.type === "ui", f = (e) => e?.t
|
|
|
1383
1440
|
return t.addEventListener("change", r), () => t.removeEventListener("change", r);
|
|
1384
1441
|
}
|
|
1385
1442
|
e.classList.add(d);
|
|
1386
|
-
}, [d]), /* @__PURE__ */ c(
|
|
1443
|
+
}, [d]), /* @__PURE__ */ c(ke.Provider, {
|
|
1387
1444
|
...o,
|
|
1388
1445
|
value: p,
|
|
1389
1446
|
children: e
|
|
1390
1447
|
});
|
|
1391
|
-
},
|
|
1392
|
-
let e = r(
|
|
1448
|
+
}, je = () => {
|
|
1449
|
+
let e = r(ke);
|
|
1393
1450
|
if (e === void 0) throw Error("useTheme must be used within a ThemeProvider");
|
|
1394
1451
|
return e;
|
|
1395
1452
|
};
|
|
1396
1453
|
//#endregion
|
|
1397
|
-
export {
|
|
1454
|
+
export { N as A, p as B, U as C, L as D, I as E, E as F, d as H, T as I, w as L, A as M, j as N, F as O, D as P, x as R, ae as S, ne as T, u as V, X as _, xe as a, oe as b, ve as c, $ as d, fe as f, Y as g, de as h, Ee as i, M as j, P as k, _e as l, Q as m, je as n, be as o, Z as p, De as r, ge as s, Ae as t, he as u, K as v, R as w, se as x, le as y, f as z };
|