@open-mercato/core 0.5.1-develop.2953.6647bb2c43 → 0.5.1-develop.2964.d5ac4a6ebb

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (226) hide show
  1. package/dist/helpers/integration/salesUi.js +25 -23
  2. package/dist/helpers/integration/salesUi.js.map +2 -2
  3. package/dist/modules/api_docs/frontend/docs/api/Explorer.js +24 -24
  4. package/dist/modules/api_docs/frontend/docs/api/Explorer.js.map +2 -2
  5. package/dist/modules/attachments/components/AttachmentPartitionSettings.js +15 -7
  6. package/dist/modules/attachments/components/AttachmentPartitionSettings.js.map +2 -2
  7. package/dist/modules/attachments/fields/attachment.js +4 -6
  8. package/dist/modules/attachments/fields/attachment.js.map +2 -2
  9. package/dist/modules/auth/backend/users/create/page.js +26 -26
  10. package/dist/modules/auth/backend/users/create/page.js.map +2 -2
  11. package/dist/modules/business_rules/components/ActionRow.js +36 -25
  12. package/dist/modules/business_rules/components/ActionRow.js.map +2 -2
  13. package/dist/modules/business_rules/components/ConditionGroup.js +14 -5
  14. package/dist/modules/business_rules/components/ConditionGroup.js.map +2 -2
  15. package/dist/modules/business_rules/components/ConditionRow.js +19 -10
  16. package/dist/modules/business_rules/components/ConditionRow.js.map +2 -2
  17. package/dist/modules/business_rules/components/RuleSetMembers.js +16 -10
  18. package/dist/modules/business_rules/components/RuleSetMembers.js.map +2 -2
  19. package/dist/modules/catalog/backend/catalog/products/[id]/page.js +30 -34
  20. package/dist/modules/catalog/backend/catalog/products/[id]/page.js.map +2 -2
  21. package/dist/modules/catalog/backend/catalog/products/create/page.js +220 -223
  22. package/dist/modules/catalog/backend/catalog/products/create/page.js.map +2 -2
  23. package/dist/modules/catalog/components/PriceKindSettings.js +20 -19
  24. package/dist/modules/catalog/components/PriceKindSettings.js.map +2 -2
  25. package/dist/modules/catalog/components/products/ProductUomSection.js +42 -37
  26. package/dist/modules/catalog/components/products/ProductUomSection.js.map +2 -2
  27. package/dist/modules/catalog/components/products/VariantBuilder.js +22 -18
  28. package/dist/modules/catalog/components/products/VariantBuilder.js.map +2 -2
  29. package/dist/modules/customer_accounts/backend/customer_accounts/users/[id]/page.js +18 -26
  30. package/dist/modules/customer_accounts/backend/customer_accounts/users/[id]/page.js.map +2 -2
  31. package/dist/modules/customer_accounts/backend/customer_accounts/users/page.js +4 -6
  32. package/dist/modules/customer_accounts/backend/customer_accounts/users/page.js.map +2 -2
  33. package/dist/modules/customer_accounts/widgets/injection/account-status/widget.client.js +5 -4
  34. package/dist/modules/customer_accounts/widgets/injection/account-status/widget.client.js.map +2 -2
  35. package/dist/modules/customers/backend/config/customers/pipeline-stages/page.js +19 -7
  36. package/dist/modules/customers/backend/config/customers/pipeline-stages/page.js.map +2 -2
  37. package/dist/modules/customers/backend/customers/deals/pipeline/page.js +24 -21
  38. package/dist/modules/customers/backend/customers/deals/pipeline/page.js.map +2 -2
  39. package/dist/modules/customers/components/AddressEditor.js +24 -7
  40. package/dist/modules/customers/components/AddressEditor.js.map +2 -2
  41. package/dist/modules/customers/components/AddressFormatSettings.js +35 -25
  42. package/dist/modules/customers/components/AddressFormatSettings.js.map +2 -2
  43. package/dist/modules/customers/components/detail/ActivityForm.js +20 -12
  44. package/dist/modules/customers/components/detail/ActivityForm.js.map +2 -2
  45. package/dist/modules/customers/components/detail/AnnualRevenueField.js +2 -2
  46. package/dist/modules/customers/components/detail/AnnualRevenueField.js.map +2 -2
  47. package/dist/modules/customers/components/detail/DealForm.js +19 -14
  48. package/dist/modules/customers/components/detail/DealForm.js.map +2 -2
  49. package/dist/modules/customers/components/formConfig.js +16 -12
  50. package/dist/modules/customers/components/formConfig.js.map +2 -2
  51. package/dist/modules/customers/widgets/dashboard/customer-todos/widget.client.js +3 -2
  52. package/dist/modules/customers/widgets/dashboard/customer-todos/widget.client.js.map +2 -2
  53. package/dist/modules/customers/widgets/dashboard/new-customers/widget.client.js +18 -10
  54. package/dist/modules/customers/widgets/dashboard/new-customers/widget.client.js.map +2 -2
  55. package/dist/modules/customers/widgets/dashboard/new-deals/widget.client.js +3 -2
  56. package/dist/modules/customers/widgets/dashboard/new-deals/widget.client.js.map +2 -2
  57. package/dist/modules/customers/widgets/dashboard/next-interactions/widget.client.js +3 -2
  58. package/dist/modules/customers/widgets/dashboard/next-interactions/widget.client.js.map +2 -2
  59. package/dist/modules/dashboards/components/WidgetVisibilityEditor.js +27 -28
  60. package/dist/modules/dashboards/components/WidgetVisibilityEditor.js.map +2 -2
  61. package/dist/modules/dashboards/widgets/dashboard/orders-by-status/widget.client.js +14 -6
  62. package/dist/modules/dashboards/widgets/dashboard/orders-by-status/widget.client.js.map +2 -2
  63. package/dist/modules/dashboards/widgets/dashboard/revenue-trend/widget.client.js +14 -6
  64. package/dist/modules/dashboards/widgets/dashboard/revenue-trend/widget.client.js.map +2 -2
  65. package/dist/modules/dashboards/widgets/dashboard/sales-by-region/widget.client.js +3 -2
  66. package/dist/modules/dashboards/widgets/dashboard/sales-by-region/widget.client.js.map +2 -2
  67. package/dist/modules/dashboards/widgets/dashboard/top-customers/widget.client.js +3 -2
  68. package/dist/modules/dashboards/widgets/dashboard/top-customers/widget.client.js.map +2 -2
  69. package/dist/modules/dashboards/widgets/dashboard/top-products/widget.client.js +17 -8
  70. package/dist/modules/dashboards/widgets/dashboard/top-products/widget.client.js.map +2 -2
  71. package/dist/modules/data_sync/backend/data-sync/page.js +40 -23
  72. package/dist/modules/data_sync/backend/data-sync/page.js.map +2 -2
  73. package/dist/modules/data_sync/components/IntegrationScheduleTab.js +15 -6
  74. package/dist/modules/data_sync/components/IntegrationScheduleTab.js.map +2 -2
  75. package/dist/modules/dictionaries/components/AppearanceSelector.js +4 -4
  76. package/dist/modules/dictionaries/components/AppearanceSelector.js.map +2 -2
  77. package/dist/modules/dictionaries/components/DictionaryEntriesEditor.js +4 -5
  78. package/dist/modules/dictionaries/components/DictionaryEntriesEditor.js.map +2 -2
  79. package/dist/modules/dictionaries/components/DictionaryEntrySelect.js +22 -14
  80. package/dist/modules/dictionaries/components/DictionaryEntrySelect.js.map +2 -2
  81. package/dist/modules/dictionaries/fields/dictionary.js +18 -13
  82. package/dist/modules/dictionaries/fields/dictionary.js.map +2 -2
  83. package/dist/modules/entities/components/EncryptionManager.js +23 -19
  84. package/dist/modules/entities/components/EncryptionManager.js.map +2 -2
  85. package/dist/modules/feature_toggles/components/formConfig.js +17 -9
  86. package/dist/modules/feature_toggles/components/formConfig.js.map +2 -2
  87. package/dist/modules/feature_toggles/components/overrideFormConfig.js +17 -9
  88. package/dist/modules/feature_toggles/components/overrideFormConfig.js.map +2 -2
  89. package/dist/modules/inbox_ops/backend/inbox-ops/settings/page.js +15 -8
  90. package/dist/modules/inbox_ops/backend/inbox-ops/settings/page.js.map +2 -2
  91. package/dist/modules/inbox_ops/components/proposals/EditActionDialog.js +37 -22
  92. package/dist/modules/inbox_ops/components/proposals/EditActionDialog.js.map +2 -2
  93. package/dist/modules/integrations/backend/integrations/[id]/page.js +22 -17
  94. package/dist/modules/integrations/backend/integrations/[id]/page.js.map +2 -2
  95. package/dist/modules/integrations/backend/integrations/bundle/[id]/page.js +12 -6
  96. package/dist/modules/integrations/backend/integrations/bundle/[id]/page.js.map +2 -2
  97. package/dist/modules/planner/components/AvailabilityRulesEditor.js +19 -12
  98. package/dist/modules/planner/components/AvailabilityRulesEditor.js.map +2 -2
  99. package/dist/modules/resources/components/ResourceCrudForm.js +15 -10
  100. package/dist/modules/resources/components/ResourceCrudForm.js.map +3 -3
  101. package/dist/modules/sales/backend/sales/documents/[id]/page.js +15 -18
  102. package/dist/modules/sales/backend/sales/documents/[id]/page.js.map +2 -2
  103. package/dist/modules/sales/components/ProviderFieldInput.js +23 -20
  104. package/dist/modules/sales/components/ProviderFieldInput.js.map +2 -2
  105. package/dist/modules/sales/components/ShippingMethodsSettings.js +25 -17
  106. package/dist/modules/sales/components/ShippingMethodsSettings.js.map +3 -3
  107. package/dist/modules/sales/components/channels/ChannelOfferForm.js +35 -42
  108. package/dist/modules/sales/components/channels/ChannelOfferForm.js.map +2 -2
  109. package/dist/modules/sales/components/documents/AddressesSection.js +87 -90
  110. package/dist/modules/sales/components/documents/AddressesSection.js.map +2 -2
  111. package/dist/modules/sales/components/documents/AdjustmentDialog.js +17 -6
  112. package/dist/modules/sales/components/documents/AdjustmentDialog.js.map +3 -3
  113. package/dist/modules/sales/components/documents/LineItemDialog.js +42 -25
  114. package/dist/modules/sales/components/documents/LineItemDialog.js.map +2 -2
  115. package/dist/modules/sales/components/documents/SalesDocumentForm.js +96 -87
  116. package/dist/modules/sales/components/documents/SalesDocumentForm.js.map +2 -2
  117. package/dist/modules/sales/widgets/dashboard/new-orders/widget.client.js +20 -11
  118. package/dist/modules/sales/widgets/dashboard/new-orders/widget.client.js.map +2 -2
  119. package/dist/modules/sales/widgets/dashboard/new-quotes/widget.client.js +20 -11
  120. package/dist/modules/sales/widgets/dashboard/new-quotes/widget.client.js.map +2 -2
  121. package/dist/modules/shipping_carriers/lib/shipment-wizard/components/ConfigureStep.js +36 -22
  122. package/dist/modules/shipping_carriers/lib/shipment-wizard/components/ConfigureStep.js.map +2 -2
  123. package/dist/modules/staff/components/TeamMemberForm.js +14 -9
  124. package/dist/modules/staff/components/TeamMemberForm.js.map +3 -3
  125. package/dist/modules/workflows/backend/tasks/[id]/page.js +42 -21
  126. package/dist/modules/workflows/backend/tasks/[id]/page.js.map +2 -2
  127. package/dist/modules/workflows/components/ActivitiesEditor.js +14 -6
  128. package/dist/modules/workflows/components/ActivitiesEditor.js.map +3 -3
  129. package/dist/modules/workflows/components/DefinitionTriggersEditor.js +25 -17
  130. package/dist/modules/workflows/components/DefinitionTriggersEditor.js.map +3 -3
  131. package/dist/modules/workflows/components/EdgeEditDialog.js +48 -45
  132. package/dist/modules/workflows/components/EdgeEditDialog.js.map +2 -2
  133. package/dist/modules/workflows/components/NodeEditDialog.js +90 -90
  134. package/dist/modules/workflows/components/NodeEditDialog.js.map +2 -2
  135. package/dist/modules/workflows/components/StepsEditor.js +14 -6
  136. package/dist/modules/workflows/components/StepsEditor.js.map +3 -3
  137. package/dist/modules/workflows/components/TransitionsEditor.js +31 -26
  138. package/dist/modules/workflows/components/TransitionsEditor.js.map +3 -3
  139. package/dist/modules/workflows/components/fields/ActivityArrayEditor.js +19 -11
  140. package/dist/modules/workflows/components/fields/ActivityArrayEditor.js.map +3 -3
  141. package/dist/modules/workflows/components/fields/BusinessRuleConditionsEditor.js +12 -14
  142. package/dist/modules/workflows/components/fields/BusinessRuleConditionsEditor.js.map +2 -2
  143. package/dist/modules/workflows/components/fields/FormFieldArrayEditor.js +24 -16
  144. package/dist/modules/workflows/components/fields/FormFieldArrayEditor.js.map +3 -3
  145. package/dist/modules/workflows/components/fields/StartPreConditionsEditor.js +12 -13
  146. package/dist/modules/workflows/components/fields/StartPreConditionsEditor.js.map +2 -2
  147. package/dist/modules/workflows/components/mobile/MobileTaskForm.js +12 -8
  148. package/dist/modules/workflows/components/mobile/MobileTaskForm.js.map +2 -2
  149. package/dist/modules/workflows/frontend/checkout-demo/page.js +43 -46
  150. package/dist/modules/workflows/frontend/checkout-demo/page.js.map +2 -2
  151. package/package.json +3 -3
  152. package/src/helpers/integration/salesUi.ts +40 -30
  153. package/src/modules/api_docs/frontend/docs/api/Explorer.tsx +25 -19
  154. package/src/modules/attachments/components/AttachmentPartitionSettings.tsx +21 -11
  155. package/src/modules/attachments/fields/attachment.tsx +4 -6
  156. package/src/modules/auth/backend/users/create/page.tsx +16 -20
  157. package/src/modules/business_rules/components/ActionRow.tsx +51 -32
  158. package/src/modules/business_rules/components/ConditionGroup.tsx +20 -9
  159. package/src/modules/business_rules/components/ConditionRow.tsx +24 -15
  160. package/src/modules/business_rules/components/RuleSetMembers.tsx +23 -13
  161. package/src/modules/catalog/backend/catalog/products/[id]/page.tsx +47 -53
  162. package/src/modules/catalog/backend/catalog/products/create/page.tsx +84 -87
  163. package/src/modules/catalog/components/PriceKindSettings.tsx +9 -9
  164. package/src/modules/catalog/components/products/ProductUomSection.tsx +85 -83
  165. package/src/modules/catalog/components/products/VariantBuilder.tsx +49 -33
  166. package/src/modules/customer_accounts/backend/customer_accounts/users/[id]/page.tsx +12 -27
  167. package/src/modules/customer_accounts/backend/customer_accounts/users/page.tsx +4 -6
  168. package/src/modules/customer_accounts/widgets/injection/account-status/widget.client.tsx +5 -4
  169. package/src/modules/customers/backend/config/customers/pipeline-stages/page.tsx +28 -15
  170. package/src/modules/customers/backend/customers/deals/pipeline/page.tsx +37 -26
  171. package/src/modules/customers/components/AddressEditor.tsx +30 -16
  172. package/src/modules/customers/components/AddressFormatSettings.tsx +25 -19
  173. package/src/modules/customers/components/detail/ActivityForm.tsx +35 -23
  174. package/src/modules/customers/components/detail/AnnualRevenueField.tsx +2 -2
  175. package/src/modules/customers/components/detail/DealForm.tsx +33 -20
  176. package/src/modules/customers/components/formConfig.tsx +25 -17
  177. package/src/modules/customers/widgets/dashboard/customer-todos/widget.client.tsx +3 -2
  178. package/src/modules/customers/widgets/dashboard/new-customers/widget.client.tsx +21 -11
  179. package/src/modules/customers/widgets/dashboard/new-deals/widget.client.tsx +3 -2
  180. package/src/modules/customers/widgets/dashboard/next-interactions/widget.client.tsx +3 -2
  181. package/src/modules/dashboards/components/WidgetVisibilityEditor.tsx +17 -22
  182. package/src/modules/dashboards/widgets/dashboard/orders-by-status/widget.client.tsx +17 -7
  183. package/src/modules/dashboards/widgets/dashboard/revenue-trend/widget.client.tsx +20 -10
  184. package/src/modules/dashboards/widgets/dashboard/sales-by-region/widget.client.tsx +3 -2
  185. package/src/modules/dashboards/widgets/dashboard/top-customers/widget.client.tsx +3 -2
  186. package/src/modules/dashboards/widgets/dashboard/top-products/widget.client.tsx +20 -9
  187. package/src/modules/data_sync/backend/data-sync/page.tsx +64 -38
  188. package/src/modules/data_sync/components/IntegrationScheduleTab.tsx +18 -7
  189. package/src/modules/dictionaries/components/AppearanceSelector.tsx +4 -4
  190. package/src/modules/dictionaries/components/DictionaryEntriesEditor.tsx +3 -4
  191. package/src/modules/dictionaries/components/DictionaryEntrySelect.tsx +27 -21
  192. package/src/modules/dictionaries/fields/dictionary.tsx +36 -23
  193. package/src/modules/entities/components/EncryptionManager.tsx +49 -33
  194. package/src/modules/feature_toggles/components/formConfig.tsx +20 -10
  195. package/src/modules/feature_toggles/components/overrideFormConfig.tsx +20 -10
  196. package/src/modules/inbox_ops/backend/inbox-ops/settings/page.tsx +19 -10
  197. package/src/modules/inbox_ops/components/proposals/EditActionDialog.tsx +49 -26
  198. package/src/modules/integrations/backend/integrations/[id]/page.tsx +20 -11
  199. package/src/modules/integrations/backend/integrations/bundle/[id]/page.tsx +19 -9
  200. package/src/modules/planner/components/AvailabilityRulesEditor.tsx +34 -21
  201. package/src/modules/resources/components/ResourceCrudForm.tsx +24 -15
  202. package/src/modules/sales/backend/sales/documents/[id]/page.tsx +12 -15
  203. package/src/modules/sales/components/ProviderFieldInput.tsx +26 -17
  204. package/src/modules/sales/components/ShippingMethodsSettings.tsx +28 -20
  205. package/src/modules/sales/components/channels/ChannelOfferForm.tsx +51 -46
  206. package/src/modules/sales/components/documents/AddressesSection.tsx +78 -76
  207. package/src/modules/sales/components/documents/AdjustmentDialog.tsx +27 -15
  208. package/src/modules/sales/components/documents/LineItemDialog.tsx +69 -51
  209. package/src/modules/sales/components/documents/SalesDocumentForm.tsx +98 -87
  210. package/src/modules/sales/widgets/dashboard/new-orders/widget.client.tsx +23 -12
  211. package/src/modules/sales/widgets/dashboard/new-quotes/widget.client.tsx +23 -12
  212. package/src/modules/shipping_carriers/lib/shipment-wizard/components/ConfigureStep.tsx +35 -19
  213. package/src/modules/staff/components/TeamMemberForm.tsx +23 -14
  214. package/src/modules/workflows/backend/tasks/[id]/page.tsx +51 -23
  215. package/src/modules/workflows/components/ActivitiesEditor.tsx +20 -10
  216. package/src/modules/workflows/components/DefinitionTriggersEditor.tsx +28 -18
  217. package/src/modules/workflows/components/EdgeEditDialog.tsx +51 -40
  218. package/src/modules/workflows/components/NodeEditDialog.tsx +81 -77
  219. package/src/modules/workflows/components/StepsEditor.tsx +20 -10
  220. package/src/modules/workflows/components/TransitionsEditor.tsx +61 -44
  221. package/src/modules/workflows/components/fields/ActivityArrayEditor.tsx +22 -12
  222. package/src/modules/workflows/components/fields/BusinessRuleConditionsEditor.tsx +9 -13
  223. package/src/modules/workflows/components/fields/FormFieldArrayEditor.tsx +27 -17
  224. package/src/modules/workflows/components/fields/StartPreConditionsEditor.tsx +9 -12
  225. package/src/modules/workflows/components/mobile/MobileTaskForm.tsx +19 -11
  226. package/src/modules/workflows/frontend/checkout-demo/page.tsx +71 -60
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/modules/workflows/components/EdgeEditDialog.tsx"],
4
- "sourcesContent": ["'use client'\n\nimport {Edge} from '@xyflow/react'\nimport {useEffect, useState} from 'react'\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle\n} from '@open-mercato/ui/primitives/dialog'\nimport {Button} from '@open-mercato/ui/primitives/button'\nimport {Input} from '@open-mercato/ui/primitives/input'\nimport {Label} from '@open-mercato/ui/primitives/label'\nimport {Badge} from '@open-mercato/ui/primitives/badge'\nimport {Separator} from '@open-mercato/ui/primitives/separator'\nimport {Plus, Trash2} from 'lucide-react'\nimport {type BusinessRule, BusinessRulesSelector} from './BusinessRulesSelector'\nimport {JsonBuilder} from '@open-mercato/ui/backend/JsonBuilder'\nimport {useT} from '@open-mercato/shared/lib/i18n/context'\nimport {useConfirmDialog} from '@open-mercato/ui/backend/confirm-dialog'\n\nexport interface EdgeEditDialogProps {\n edge: Edge | null\n isOpen: boolean\n onClose: () => void\n onSave: (edgeId: string, updates: Partial<Edge['data']>) => void\n onDelete: (edgeId: string) => void\n}\n\ninterface TransitionCondition {\n ruleId: string\n required: boolean\n}\n\n/**\n * EdgeEditDialog - Modal dialog for editing transition properties\n *\n * Allows editing:\n * - Label\n * - Trigger type (auto, manual, signal, timer)\n * - Pre-conditions (guard rules)\n * - Post-conditions (validation rules)\n * - Activities\n * - Business rules integration\n */\nexport function EdgeEditDialog({ edge, isOpen, onClose, onSave, onDelete }: EdgeEditDialogProps) {\n const t = useT()\n const { confirm: confirmDialog, ConfirmDialogElement } = useConfirmDialog()\n const [transitionName, setTransitionName] = useState('')\n const [trigger, setTrigger] = useState('auto')\n const [priority, setPriority] = useState('100')\n const [continueOnActivityFailure, setContinueOnActivityFailure] = useState(false)\n const [preConditions, setPreConditions] = useState<TransitionCondition[]>([])\n const [postConditions, setPostConditions] = useState<TransitionCondition[]>([])\n const [showAdvanced, setShowAdvanced] = useState(false)\n const [advancedConfig, setAdvancedConfig] = useState<Record<string, any>>({})\n const [activities, setActivities] = useState<any[]>([])\n const [expandedActivities, setExpandedActivities] = useState<Set<number>>(new Set())\n const [expandedPreConditions, setExpandedPreConditions] = useState<Set<number>>(new Set())\n const [expandedPostConditions, setExpandedPostConditions] = useState<Set<number>>(new Set())\n const [showRuleSelector, setShowRuleSelector] = useState(false)\n const [ruleSelectorMode, setRuleSelectorMode] = useState<'pre' | 'post'>('pre')\n const [ruleDetailsCache, setRuleDetailsCache] = useState<Map<string, BusinessRule>>(new Map())\n\n // Generate a readable name from edge ID (e.g., \"start_to_cart\" -> \"Start to Cart\")\n const generateNameFromId = (edgeId: string): string => {\n return edgeId\n .split('_to_')\n .map(part => part.split('_').map(word =>\n word.charAt(0).toUpperCase() + word.slice(1)\n ).join(' '))\n .join(' \u2192 ')\n }\n\n // Load edge data when dialog opens\n useEffect(() => {\n if (edge && isOpen) {\n const edgeData = edge.data as any\n\n // Try to get transition name from various sources\n let loadedTransitionName = ''\n if (edgeData?.transitionName && edgeData.transitionName !== '') {\n loadedTransitionName = edgeData.transitionName\n } else if (edgeData?.label && edgeData.label !== '' && edgeData.label !== undefined) {\n loadedTransitionName = edgeData.label\n } else {\n // Generate a name from the edge ID as fallback\n loadedTransitionName = generateNameFromId(edge.id)\n }\n\n setTransitionName(loadedTransitionName)\n\n setTrigger(edgeData?.trigger || 'auto')\n setPriority((edgeData?.priority || 100).toString())\n setContinueOnActivityFailure(edgeData?.continueOnActivityFailure !== undefined ? edgeData.continueOnActivityFailure : false)\n\n // Handle pre/post conditions - convert from various formats\n const rawPreConditions = edgeData?.preConditions || []\n const rawPostConditions = edgeData?.postConditions || []\n\n // Convert to TransitionCondition format\n setPreConditions(Array.isArray(rawPreConditions)\n ? rawPreConditions.map((c: any) =>\n typeof c === 'string' ? { ruleId: c, required: true } : c\n )\n : []\n )\n setPostConditions(Array.isArray(rawPostConditions)\n ? rawPostConditions.map((c: any) =>\n typeof c === 'string' ? { ruleId: c, required: true } : c\n )\n : []\n )\n\n setActivities(edgeData?.activities || [])\n\n // Load advanced config (activities, etc.)\n const advancedFields: any = {}\n if (edgeData?.activities && edgeData.activities.length > 0) {\n advancedFields.activities = edgeData.activities\n }\n setAdvancedConfig(advancedFields)\n setExpandedActivities(new Set())\n setExpandedPreConditions(new Set())\n setExpandedPostConditions(new Set())\n }\n }, [edge, isOpen])\n\n const toggleActivity = (index: number) => {\n const newExpanded = new Set(expandedActivities)\n if (newExpanded.has(index)) {\n newExpanded.delete(index)\n } else {\n newExpanded.add(index)\n }\n setExpandedActivities(newExpanded)\n }\n\n const addActivity = () => {\n const newActivity = {\n activityId: `activity_${Date.now()}`,\n activityName: t('workflows.common.newActivity'),\n activityType: 'CALL_API',\n config: {},\n timeout: '',\n retryPolicy: {\n maxAttempts: 3,\n initialIntervalMs: 1000,\n backoffCoefficient: 2,\n maxIntervalMs: 10000,\n },\n }\n setActivities([...activities, newActivity])\n // Auto-expand the new activity\n const newExpanded = new Set(expandedActivities)\n newExpanded.add(activities.length)\n setExpandedActivities(newExpanded)\n }\n\n const removeActivity = async (index: number) => {\n const confirmed = await confirmDialog({\n title: t('workflows.edgeEditor.confirmRemoveActivity'),\n variant: 'destructive',\n })\n if (confirmed) {\n setActivities(activities.filter((_, i) => i !== index))\n // Remove from expanded set\n const newExpanded = new Set(expandedActivities)\n newExpanded.delete(index)\n setExpandedActivities(newExpanded)\n }\n }\n\n const updateActivity = (index: number, field: string, value: any) => {\n const updated = [...activities]\n updated[index] = { ...updated[index], [field]: value }\n setActivities(updated)\n }\n\n const updateActivityRetryPolicy = (index: number, field: string, value: any) => {\n const updated = [...activities]\n updated[index] = {\n ...updated[index],\n retryPolicy: {\n ...updated[index].retryPolicy,\n [field]: value,\n },\n }\n setActivities(updated)\n }\n\n // Business Rules Management\n const togglePreCondition = (index: number) => {\n const newExpanded = new Set(expandedPreConditions)\n if (newExpanded.has(index)) {\n newExpanded.delete(index)\n } else {\n newExpanded.add(index)\n }\n setExpandedPreConditions(newExpanded)\n }\n\n const togglePostCondition = (index: number) => {\n const newExpanded = new Set(expandedPostConditions)\n if (newExpanded.has(index)) {\n newExpanded.delete(index)\n } else {\n newExpanded.add(index)\n }\n setExpandedPostConditions(newExpanded)\n }\n\n const openRuleSelector = (mode: 'pre' | 'post') => {\n setRuleSelectorMode(mode)\n setShowRuleSelector(true)\n }\n\n const closeRuleSelector = () => {\n setShowRuleSelector(false)\n }\n\n const handleRuleSelected = (ruleId: string, rule: BusinessRule) => {\n // Cache the rule details for display\n setRuleDetailsCache(prev => new Map(prev).set(ruleId, rule))\n\n if (ruleSelectorMode === 'pre') {\n if (!preConditions.find(c => c.ruleId === ruleId)) {\n setPreConditions([...preConditions, { ruleId, required: true }])\n }\n } else {\n if (!postConditions.find(c => c.ruleId === ruleId)) {\n setPostConditions([...postConditions, { ruleId, required: true }])\n }\n }\n closeRuleSelector()\n }\n\n const removePreCondition = (index: number) => {\n setPreConditions(preConditions.filter((_, i) => i !== index))\n const newExpanded = new Set(expandedPreConditions)\n newExpanded.delete(index)\n setExpandedPreConditions(newExpanded)\n }\n\n const removePostCondition = (index: number) => {\n setPostConditions(postConditions.filter((_, i) => i !== index))\n const newExpanded = new Set(expandedPostConditions)\n newExpanded.delete(index)\n setExpandedPostConditions(newExpanded)\n }\n\n const updatePreCondition = (index: number, field: keyof TransitionCondition, value: any) => {\n const updated = [...preConditions]\n updated[index] = { ...updated[index], [field]: value }\n setPreConditions(updated)\n }\n\n const updatePostCondition = (index: number, field: keyof TransitionCondition, value: any) => {\n const updated = [...postConditions]\n updated[index] = { ...updated[index], [field]: value }\n setPostConditions(updated)\n }\n\n const getBusinessRuleDetails = (ruleId: string): BusinessRule | null => {\n return ruleDetailsCache.get(ruleId) || null\n }\n\n const handleSave = () => {\n if (!edge) return\n\n const updates: Partial<Edge['data']> = {\n transitionName,\n label: transitionName, // Keep label for backward compatibility\n trigger,\n priority: parseInt(priority) || 100,\n continueOnActivityFailure,\n preConditions: preConditions.length > 0 ? preConditions : undefined,\n postConditions: postConditions.length > 0 ? postConditions : undefined,\n activities: activities.length > 0 ? activities : undefined,\n }\n\n // Merge advanced config\n if (advancedConfig && Object.keys(advancedConfig).length > 0) {\n Object.assign(updates, advancedConfig)\n }\n\n onSave(edge.id, updates)\n onClose()\n }\n\n const handleDelete = () => {\n if (!edge) return\n onDelete(edge.id)\n }\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Enter' && (e.metaKey || e.ctrlKey)) {\n handleSave()\n }\n if (e.key === 'Escape') {\n onClose()\n }\n }\n\n if (!isOpen || !edge) return null\n\n const triggerVariant = trigger === 'auto' ? 'default' : trigger === 'manual' ? 'secondary' : 'outline'\n\n return (\n <Dialog open={isOpen} onOpenChange={onClose}>\n <DialogContent className=\"sm:max-w-4xl max-h-[90vh] overflow-y-auto\">\n <DialogHeader>\n <div className=\"flex items-center gap-2 mb-2\">\n <DialogTitle>{t('workflows.edgeEditor.title')}</DialogTitle>\n <Badge variant={triggerVariant} className=\"text-xs\">\n {t(`workflows.transitions.triggers.${trigger}`)}\n </Badge>\n </div>\n <div className=\"space-y-1\">\n <DialogDescription>\n {t('workflows.edgeEditor.description')}\n </DialogDescription>\n <div className=\"flex items-center gap-2 text-xs text-muted-foreground\">\n <span className=\"font-medium\">{t('workflows.edgeEditor.id')}:</span>\n <code className=\"px-1.5 py-0.5 rounded bg-muted font-mono\">{edge.id}</code>\n </div>\n <div className=\"flex items-center gap-2 text-xs text-muted-foreground\">\n <span className=\"font-medium\">{t('workflows.edgeEditor.flow')}:</span>\n <code className=\"px-1.5 py-0.5 rounded bg-muted font-mono\">{edge.source}</code>\n <span>\u2192</span>\n <code className=\"px-1.5 py-0.5 rounded bg-muted font-mono\">{edge.target}</code>\n </div>\n </div>\n </DialogHeader>\n\n <div className=\"space-y-4\">\n {/* Transition Name */}\n <div className=\"space-y-2\">\n <Label htmlFor=\"transitionName\">{t('workflows.edgeEditor.transitionName')}</Label>\n <Input\n id=\"transitionName\"\n type=\"text\"\n value={transitionName}\n onChange={(e) => setTransitionName(e.target.value)}\n placeholder={t('workflows.edgeEditor.transitionNamePlaceholder', { name: generateNameFromId(edge.id) })}\n autoFocus\n />\n <p className=\"text-xs text-muted-foreground\">\n {t('workflows.edgeEditor.transitionNameHint')}\n </p>\n </div>\n\n {/* Trigger Type */}\n <div className=\"space-y-2\">\n <Label htmlFor=\"trigger\">{t('workflows.edgeEditor.triggerType')}</Label>\n <select\n id=\"trigger\"\n value={trigger}\n onChange={(e) => setTrigger(e.target.value)}\n className=\"flex h-9 w-full rounded-md border border-input bg-background px-3 py-2 text-sm shadow-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n >\n <option value=\"auto\">{t('workflows.transitions.triggers.auto')}</option>\n <option value=\"manual\">{t('workflows.transitions.triggers.manual')}</option>\n <option value=\"signal\">{t('workflows.transitions.triggers.signal')}</option>\n <option value=\"timer\">{t('workflows.transitions.triggers.timer')}</option>\n </select>\n <p className=\"text-xs text-muted-foreground\">\n {t(`workflows.edgeEditor.triggerDescriptions.${trigger}`)}\n </p>\n </div>\n\n {/* Priority */}\n <div className=\"space-y-2\">\n <Label htmlFor=\"priority\">{t('workflows.edgeEditor.priority')}</Label>\n <Input\n id=\"priority\"\n type=\"number\"\n value={priority}\n onChange={(e) => setPriority(e.target.value)}\n placeholder=\"100\"\n min=\"0\"\n max=\"9999\"\n />\n <p className=\"text-xs text-muted-foreground\">\n {t('workflows.edgeEditor.priorityHint')}\n </p>\n </div>\n\n <div className=\"space-y-2\">\n <div className=\"flex items-center space-x-2\">\n <input\n type=\"checkbox\"\n id=\"continueOnActivityFailure\"\n checked={continueOnActivityFailure}\n onChange={(e) => setContinueOnActivityFailure(e.target.checked)}\n className=\"h-4 w-4 rounded border-gray-300\"\n />\n <Label htmlFor=\"continueOnActivityFailure\" className=\"font-normal cursor-pointer\">\n {t('workflows.edgeEditor.continueOnActivityFailure')}\n </Label>\n </div>\n <p className=\"text-xs text-muted-foreground ml-6\">\n {t('workflows.edgeEditor.continueOnActivityFailureHint')}\n </p>\n </div>\n\n <Separator />\n\n {/* Pre-conditions (Business Rules) */}\n <div className=\"space-y-3\">\n <div className=\"flex items-center justify-between\">\n <div>\n <h3 className=\"text-sm font-semibold\">\n {t('workflows.edgeEditor.preConditions')} ({preConditions.length})\n </h3>\n <p className=\"text-xs text-muted-foreground\">\n {t('workflows.edgeEditor.preConditionsHint')}\n </p>\n </div>\n <Button\n type=\"button\"\n size=\"sm\"\n onClick={() => openRuleSelector('pre')}\n >\n <Plus className=\"size-3\" />\n {t('workflows.edgeEditor.addRule')}\n </Button>\n </div>\n\n {preConditions.length === 0 && (\n <div className=\"p-4 text-center text-sm text-muted-foreground bg-muted rounded-lg border\">\n {t('workflows.edgeEditor.noPreConditions')}\n </div>\n )}\n\n <div className=\"space-y-2\">\n {preConditions.map((condition, index) => {\n const isExpanded = expandedPreConditions.has(index)\n const rule = getBusinessRuleDetails(condition.ruleId)\n return (\n <div key={index} className=\"border border-gray-200 rounded-lg bg-gray-50\">\n <button\n type=\"button\"\n onClick={() => togglePreCondition(index)}\n className=\"w-full px-4 py-3 text-left flex items-center justify-between hover:bg-gray-100 transition-colors rounded-t-lg\"\n >\n <div className=\"flex-1\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm font-semibold text-gray-900\">\n {rule?.ruleName || condition.ruleId}\n </span>\n {condition.required && (\n <span className=\"inline-flex items-center px-2 py-0.5 rounded text-xs font-medium bg-red-100 text-red-800\">\n {t('workflows.edgeEditor.required')}\n </span>\n )}\n {rule && (\n <span className=\"inline-flex items-center px-2 py-0.5 rounded text-xs font-medium bg-purple-100 text-purple-800\">\n {rule.ruleType}\n </span>\n )}\n </div>\n <p className=\"text-xs text-gray-600 mt-1\">\n {t('workflows.edgeEditor.ruleId')}: <code className=\"bg-white px-1 rounded\">{condition.ruleId}</code>\n </p>\n {rule?.description && (\n <p className=\"text-xs text-gray-500 mt-1 line-clamp-1\">{rule.description}</p>\n )}\n </div>\n <svg\n className={`w-5 h-5 text-gray-400 transition-transform ${isExpanded ? 'rotate-180' : ''}`}\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M19 9l-7 7-7-7\" />\n </svg>\n </button>\n\n {isExpanded && (\n <div className=\"px-4 pb-4 space-y-3 border-t border-gray-200 bg-white\">\n <div className=\"pt-3\">\n <label className=\"block text-xs font-medium text-gray-700 mb-1\">{t('workflows.edgeEditor.ruleId')}</label>\n <input\n type=\"text\"\n value={condition.ruleId}\n onChange={(e) => updatePreCondition(index, 'ruleId', e.target.value)}\n className=\"w-full px-2 py-1.5 border border-gray-300 rounded text-xs focus-visible:ring-1 focus-visible:ring-ring focus-visible:border-ring\"\n />\n </div>\n\n <div>\n <label className=\"flex items-center gap-2 text-xs font-medium text-gray-700\">\n <input\n type=\"checkbox\"\n checked={condition.required}\n onChange={(e) => updatePreCondition(index, 'required', e.target.checked)}\n className=\"rounded border-gray-300 text-blue-600 focus-visible:ring-ring\"\n />\n {t('workflows.edgeEditor.requiredCheckbox')}\n </label>\n </div>\n\n {rule && (\n <div className=\"border-t border-gray-200 pt-3\">\n <h4 className=\"text-xs font-semibold text-gray-900 mb-2\">{t('workflows.edgeEditor.businessRuleDetails')}</h4>\n <dl className=\"space-y-1 text-xs\">\n <div className=\"flex justify-between\">\n <dt className=\"font-medium text-gray-700\">Name:</dt>\n <dd className=\"text-gray-900\">{rule.ruleName}</dd>\n </div>\n <div className=\"flex justify-between\">\n <dt className=\"font-medium text-gray-700\">Type:</dt>\n <dd className=\"text-gray-900\">{rule.ruleType}</dd>\n </div>\n {rule.ruleCategory && (\n <div className=\"flex justify-between\">\n <dt className=\"font-medium text-gray-700\">Category:</dt>\n <dd className=\"text-gray-900\">{rule.ruleCategory}</dd>\n </div>\n )}\n <div className=\"flex justify-between\">\n <dt className=\"font-medium text-gray-700\">Entity Type:</dt>\n <dd className=\"text-gray-900 font-mono text-xs\">{rule.entityType}</dd>\n </div>\n {rule.eventType && (\n <div className=\"flex justify-between\">\n <dt className=\"font-medium text-gray-700\">Event Type:</dt>\n <dd className=\"text-gray-900\">{rule.eventType}</dd>\n </div>\n )}\n {rule.description && (\n <div className=\"mt-2 pt-2 border-t border-gray-200\">\n <dt className=\"font-medium text-gray-700 mb-1\">Description:</dt>\n <dd className=\"text-gray-600\">{rule.description}</dd>\n </div>\n )}\n </dl>\n </div>\n )}\n\n <div className=\"border-t border-gray-200 pt-3\">\n <Button\n type=\"button\"\n variant=\"destructive\"\n size=\"sm\"\n onClick={() => removePreCondition(index)}\n >\n <Trash2 className=\"size-4\" />\n {t('workflows.edgeEditor.removePreCondition')}\n </Button>\n </div>\n </div>\n )}\n </div>\n )\n })}\n </div>\n </div>\n\n {/* Post-conditions (Business Rules) */}\n <div className=\"space-y-3\">\n <div className=\"flex items-center justify-between\">\n <div>\n <h3 className=\"text-sm font-semibold\">\n {t('workflows.edgeEditor.postConditions')} ({postConditions.length})\n </h3>\n <p className=\"text-xs text-muted-foreground\">\n {t('workflows.edgeEditor.postConditionsHint')}\n </p>\n </div>\n <Button\n type=\"button\"\n size=\"sm\"\n onClick={() => openRuleSelector('post')}\n >\n <Plus className=\"size-3\" />\n {t('workflows.edgeEditor.addRule')}\n </Button>\n </div>\n\n {postConditions.length === 0 && (\n <div className=\"p-4 text-center text-sm text-muted-foreground bg-muted rounded-lg border\">\n {t('workflows.edgeEditor.noPostConditions')}\n </div>\n )}\n\n <div className=\"space-y-2\">\n {postConditions.map((condition, index) => {\n const isExpanded = expandedPostConditions.has(index)\n const rule = getBusinessRuleDetails(condition.ruleId)\n return (\n <div key={index} className=\"border border-gray-200 rounded-lg bg-gray-50\">\n <button\n type=\"button\"\n onClick={() => togglePostCondition(index)}\n className=\"w-full px-4 py-3 text-left flex items-center justify-between hover:bg-gray-100 transition-colors rounded-t-lg\"\n >\n <div className=\"flex-1\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm font-semibold text-gray-900\">\n {rule?.ruleName || condition.ruleId}\n </span>\n {condition.required && (\n <span className=\"inline-flex items-center px-2 py-0.5 rounded text-xs font-medium bg-red-100 text-red-800\">\n {t('workflows.edgeEditor.required')}\n </span>\n )}\n {rule && (\n <span className=\"inline-flex items-center px-2 py-0.5 rounded text-xs font-medium bg-purple-100 text-purple-800\">\n {rule.ruleType}\n </span>\n )}\n </div>\n <p className=\"text-xs text-gray-600 mt-1\">\n {t('workflows.edgeEditor.ruleId')}: <code className=\"bg-white px-1 rounded\">{condition.ruleId}</code>\n </p>\n {rule?.description && (\n <p className=\"text-xs text-gray-500 mt-1 line-clamp-1\">{rule.description}</p>\n )}\n </div>\n <svg\n className={`w-5 h-5 text-gray-400 transition-transform ${isExpanded ? 'rotate-180' : ''}`}\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M19 9l-7 7-7-7\" />\n </svg>\n </button>\n\n {isExpanded && (\n <div className=\"px-4 pb-4 space-y-3 border-t border-gray-200 bg-white\">\n <div className=\"pt-3\">\n <label className=\"block text-xs font-medium text-gray-700 mb-1\">{t('workflows.edgeEditor.ruleId')}</label>\n <input\n type=\"text\"\n value={condition.ruleId}\n onChange={(e) => updatePostCondition(index, 'ruleId', e.target.value)}\n className=\"w-full px-2 py-1.5 border border-gray-300 rounded text-xs focus-visible:ring-1 focus-visible:ring-ring focus-visible:border-ring\"\n />\n </div>\n\n <div>\n <label className=\"flex items-center gap-2 text-xs font-medium text-gray-700\">\n <input\n type=\"checkbox\"\n checked={condition.required}\n onChange={(e) => updatePostCondition(index, 'required', e.target.checked)}\n className=\"rounded border-gray-300 text-blue-600 focus-visible:ring-ring\"\n />\n {t('workflows.edgeEditor.requiredPostCheckbox')}\n </label>\n </div>\n\n {rule && (\n <div className=\"border-t border-gray-200 pt-3\">\n <h4 className=\"text-xs font-semibold text-gray-900 mb-2\">{t('workflows.edgeEditor.businessRuleDetails')}</h4>\n <dl className=\"space-y-1 text-xs\">\n <div className=\"flex justify-between\">\n <dt className=\"font-medium text-gray-700\">Name:</dt>\n <dd className=\"text-gray-900\">{rule.ruleName}</dd>\n </div>\n <div className=\"flex justify-between\">\n <dt className=\"font-medium text-gray-700\">Type:</dt>\n <dd className=\"text-gray-900\">{rule.ruleType}</dd>\n </div>\n {rule.ruleCategory && (\n <div className=\"flex justify-between\">\n <dt className=\"font-medium text-gray-700\">Category:</dt>\n <dd className=\"text-gray-900\">{rule.ruleCategory}</dd>\n </div>\n )}\n <div className=\"flex justify-between\">\n <dt className=\"font-medium text-gray-700\">Entity Type:</dt>\n <dd className=\"text-gray-900 font-mono text-xs\">{rule.entityType}</dd>\n </div>\n {rule.eventType && (\n <div className=\"flex justify-between\">\n <dt className=\"font-medium text-gray-700\">Event Type:</dt>\n <dd className=\"text-gray-900\">{rule.eventType}</dd>\n </div>\n )}\n {rule.description && (\n <div className=\"mt-2 pt-2 border-t border-gray-200\">\n <dt className=\"font-medium text-gray-700 mb-1\">Description:</dt>\n <dd className=\"text-gray-600\">{rule.description}</dd>\n </div>\n )}\n </dl>\n </div>\n )}\n\n <div className=\"border-t border-gray-200 pt-3\">\n <Button\n type=\"button\"\n variant=\"destructive\"\n size=\"sm\"\n onClick={() => removePostCondition(index)}\n >\n <Trash2 className=\"size-4\" />\n {t('workflows.edgeEditor.removePostCondition')}\n </Button>\n </div>\n </div>\n )}\n </div>\n )\n })}\n </div>\n </div>\n\n {/* Activities Section */}\n <div className=\"border-t border-gray-200 pt-4 mt-4\">\n <div className=\"flex items-center justify-between mb-3\">\n <h3 className=\"text-sm font-semibold text-gray-900\">\n {t('workflows.edgeEditor.activities')} ({activities.length})\n </h3>\n <Button\n type=\"button\"\n size=\"sm\"\n onClick={addActivity}\n >\n <Plus className=\"size-3\" />\n {t('workflows.edgeEditor.addActivity')}\n </Button>\n </div>\n\n {activities.length === 0 && (\n <div className=\"p-4 text-center text-sm text-gray-500 bg-gray-50 rounded-lg border border-gray-200\">\n {t('workflows.edgeEditor.noActivities')}\n </div>\n )}\n\n <div className=\"space-y-2\">\n {activities.map((activity, index) => {\n const isExpanded = expandedActivities.has(index)\n return (\n <div key={index} className=\"border border-gray-200 rounded-lg bg-gray-50\">\n <button\n type=\"button\"\n onClick={() => toggleActivity(index)}\n className=\"w-full px-4 py-3 text-left flex items-center justify-between hover:bg-gray-100 transition-colors rounded-t-lg\"\n >\n <div className=\"flex-1\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm font-semibold text-gray-900\">\n {activity.activityName || activity.label || activity.activityId || `Activity ${index + 1}`}\n </span>\n <Badge variant=\"secondary\" className=\"text-xs\">\n {activity.activityType}\n </Badge>\n </div>\n <p className=\"text-xs text-gray-600 mt-1\">\n {t('workflows.edgeEditor.activityId')}: <code className=\"bg-white px-1 rounded\">{activity.activityId}</code>\n </p>\n </div>\n <svg\n className={`w-5 h-5 text-gray-400 transition-transform ${isExpanded ? 'rotate-180' : ''}`}\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M19 9l-7 7-7-7\" />\n </svg>\n </button>\n\n {isExpanded && (\n <div className=\"px-4 pb-4 space-y-3 border-t border-gray-200 bg-white\">\n {/* Activity ID */}\n <div className=\"pt-3\">\n <label className=\"block text-xs font-medium text-gray-700 mb-1\">{t('workflows.edgeEditor.activityId')} *</label>\n <input\n type=\"text\"\n value={activity.activityId}\n onChange={(e) => updateActivity(index, 'activityId', e.target.value)}\n className=\"w-full px-2 py-1.5 border border-gray-300 rounded text-xs focus-visible:ring-1 focus-visible:ring-ring focus-visible:border-ring\"\n placeholder={t('workflows.edgeEditor.activityIdPlaceholder')}\n />\n </div>\n\n {/* Activity Name */}\n <div>\n <label className=\"block text-xs font-medium text-gray-700 mb-1\">{t('workflows.edgeEditor.activityName')} *</label>\n <input\n type=\"text\"\n value={activity.activityName || ''}\n onChange={(e) => updateActivity(index, 'activityName', e.target.value)}\n className=\"w-full px-2 py-1.5 border border-gray-300 rounded text-xs focus-visible:ring-1 focus-visible:ring-ring focus-visible:border-ring\"\n placeholder={t('workflows.edgeEditor.activityNamePlaceholder')}\n />\n </div>\n\n {/* Activity Type */}\n <div>\n <label className=\"block text-xs font-medium text-gray-700 mb-1\">{t('workflows.edgeEditor.activityType')} *</label>\n <select\n value={activity.activityType}\n onChange={(e) => updateActivity(index, 'activityType', e.target.value)}\n className=\"w-full px-2 py-1.5 border border-gray-300 rounded text-xs focus-visible:ring-1 focus-visible:ring-ring focus-visible:border-ring\"\n >\n <option value=\"SEND_EMAIL\">{t('workflows.activities.types.SEND_EMAIL')}</option>\n <option value=\"CALL_API\">{t('workflows.activities.types.CALL_API')}</option>\n <option value=\"UPDATE_ENTITY\">{t('workflows.activities.types.UPDATE_ENTITY')}</option>\n <option value=\"EMIT_EVENT\">{t('workflows.activities.types.EMIT_EVENT')}</option>\n <option value=\"CALL_WEBHOOK\">{t('workflows.activities.types.CALL_WEBHOOK')}</option>\n <option value=\"EXECUTE_FUNCTION\">{t('workflows.activities.types.EXECUTE_FUNCTION')}</option>\n <option value=\"WAIT\">{t('workflows.activities.types.WAIT')}</option>\n </select>\n </div>\n\n {/* Timeout */}\n <div>\n <label className=\"block text-xs font-medium text-gray-700 mb-1\">{t('workflows.edgeEditor.timeout')}</label>\n <input\n type=\"text\"\n value={activity.timeout || ''}\n onChange={(e) => updateActivity(index, 'timeout', e.target.value)}\n className=\"w-full px-2 py-1.5 border border-gray-300 rounded text-xs focus-visible:ring-1 focus-visible:ring-ring focus-visible:border-ring\"\n placeholder={t('workflows.edgeEditor.timeoutPlaceholder')}\n />\n <p className=\"text-xs text-gray-500 mt-0.5\">{t('workflows.edgeEditor.timeoutHint')}</p>\n </div>\n\n {/* Retry Policy */}\n <div className=\"border-t border-gray-200 pt-3\">\n <h4 className=\"text-xs font-semibold text-gray-900 mb-2\">{t('workflows.edgeEditor.retryPolicy')}</h4>\n <div className=\"grid grid-cols-1 sm:grid-cols-2 gap-2\">\n <div>\n <label className=\"block text-xs font-medium text-gray-700 mb-1\">{t('workflows.edgeEditor.maxAttempts')}</label>\n <input\n type=\"number\"\n value={activity.retryPolicy?.maxAttempts || ''}\n onChange={(e) => updateActivityRetryPolicy(index, 'maxAttempts', parseInt(e.target.value) || 0)}\n className=\"w-full px-2 py-1.5 border border-gray-300 rounded text-xs focus-visible:ring-1 focus-visible:ring-ring focus-visible:border-ring\"\n placeholder=\"3\"\n min=\"1\"\n max=\"10\"\n />\n </div>\n <div>\n <label className=\"block text-xs font-medium text-gray-700 mb-1\">{t('workflows.edgeEditor.initialInterval')}</label>\n <input\n type=\"number\"\n value={activity.retryPolicy?.initialIntervalMs || ''}\n onChange={(e) => updateActivityRetryPolicy(index, 'initialIntervalMs', parseInt(e.target.value) || 0)}\n className=\"w-full px-2 py-1.5 border border-gray-300 rounded text-xs focus-visible:ring-1 focus-visible:ring-ring focus-visible:border-ring\"\n placeholder=\"1000\"\n min=\"0\"\n />\n </div>\n <div>\n <label className=\"block text-xs font-medium text-gray-700 mb-1\">{t('workflows.edgeEditor.backoffCoefficient')}</label>\n <input\n type=\"number\"\n step=\"0.1\"\n value={activity.retryPolicy?.backoffCoefficient || ''}\n onChange={(e) => updateActivityRetryPolicy(index, 'backoffCoefficient', parseFloat(e.target.value) || 1)}\n className=\"w-full px-2 py-1.5 border border-gray-300 rounded text-xs focus-visible:ring-1 focus-visible:ring-ring focus-visible:border-ring\"\n placeholder=\"2\"\n min=\"1\"\n max=\"10\"\n />\n </div>\n <div>\n <label className=\"block text-xs font-medium text-gray-700 mb-1\">{t('workflows.edgeEditor.maxInterval')}</label>\n <input\n type=\"number\"\n value={activity.retryPolicy?.maxIntervalMs || ''}\n onChange={(e) => updateActivityRetryPolicy(index, 'maxIntervalMs', parseInt(e.target.value) || 0)}\n className=\"w-full px-2 py-1.5 border border-gray-300 rounded text-xs focus-visible:ring-1 focus-visible:ring-ring focus-visible:border-ring\"\n placeholder=\"10000\"\n min=\"0\"\n />\n </div>\n </div>\n </div>\n\n {/* Activity Flags */}\n <div className=\"border-t border-gray-200 pt-3\">\n <h4 className=\"text-xs font-semibold text-gray-900 mb-2\">{t('workflows.edgeEditor.activityOptions')}</h4>\n <div className=\"space-y-2\">\n <div className=\"flex items-center space-x-2\">\n <input\n type=\"checkbox\"\n id={`activity-async-${index}`}\n checked={activity.async || false}\n onChange={(e) => updateActivity(index, 'async', e.target.checked)}\n className=\"h-4 w-4 rounded border-gray-300\"\n />\n <label htmlFor={`activity-async-${index}`} className=\"text-xs text-gray-700 cursor-pointer\">\n {t('workflows.edgeEditor.asyncOption')}\n </label>\n </div>\n <div className=\"flex items-center space-x-2\">\n <input\n type=\"checkbox\"\n id={`activity-compensate-${index}`}\n checked={activity.compensate || false}\n onChange={(e) => updateActivity(index, 'compensate', e.target.checked)}\n className=\"h-4 w-4 rounded border-gray-300\"\n />\n <label htmlFor={`activity-compensate-${index}`} className=\"text-xs text-gray-700 cursor-pointer\">\n {t('workflows.edgeEditor.compensateOption')}\n </label>\n </div>\n </div>\n </div>\n\n {/* Configuration */}\n <div className=\"border-t border-gray-200 pt-3\">\n <label className=\"block text-xs font-medium text-gray-700 mb-1\">{t('workflows.edgeEditor.configurationJson')}</label>\n <JsonBuilder\n value={activity.config || {}}\n onChange={(config) => {\n const updated = [...activities]\n updated[index] = { ...updated[index], config }\n setActivities(updated)\n }}\n />\n <p className=\"text-xs text-gray-500 mt-0.5\">{t('workflows.edgeEditor.configurationHint')}</p>\n </div>\n\n {/* Delete Button */}\n <div className=\"border-t border-gray-200 pt-3\">\n <Button\n type=\"button\"\n variant=\"destructive\"\n size=\"sm\"\n onClick={() => removeActivity(index)}\n >\n <Trash2 className=\"size-4\" />\n {t('workflows.edgeEditor.removeActivity')}\n </Button>\n </div>\n </div>\n )}\n </div>\n )\n })}\n </div>\n </div>\n\n {/* Advanced Configuration */}\n <div className=\"border-t border-gray-200 pt-4 mt-4\">\n <button\n type=\"button\"\n onClick={() => setShowAdvanced(!showAdvanced)}\n className=\"flex items-center justify-between w-full text-left\"\n >\n <h3 className=\"text-sm font-semibold text-gray-900\">\n {t('workflows.edgeEditor.advancedConfiguration')}\n </h3>\n <svg\n className={`w-5 h-5 transition-transform ${showAdvanced ? 'rotate-180' : ''}`}\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M19 9l-7 7-7-7\" />\n </svg>\n </button>\n {showAdvanced && (\n <div className=\"mt-3\">\n <JsonBuilder\n value={advancedConfig}\n onChange={setAdvancedConfig}\n />\n <p className=\"text-xs text-gray-500 mt-1\">\n {t('workflows.edgeEditor.advancedConfigHint')}\n </p>\n </div>\n )}\n </div>\n </div>\n\n <DialogFooter className=\"flex justify-between\">\n <Button\n type=\"button\"\n variant=\"destructive\"\n onClick={handleDelete}\n >\n <Trash2 className=\"size-4\" />\n {t('workflows.edgeEditor.deleteTransition')}\n </Button>\n <div className=\"flex gap-2\">\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={onClose}\n >\n {t('workflows.edgeEditor.cancel')}\n </Button>\n <Button\n type=\"button\"\n onClick={handleSave}\n >\n {t('workflows.edgeEditor.saveChanges')}\n </Button>\n </div>\n </DialogFooter>\n </DialogContent>\n\n {/* Business Rule Selector - Using generic component */}\n <BusinessRulesSelector\n isOpen={showRuleSelector}\n onClose={closeRuleSelector}\n onSelect={handleRuleSelected}\n excludeRuleIds={\n ruleSelectorMode === 'pre'\n ? preConditions.map(c => c.ruleId)\n : postConditions.map(c => c.ruleId)\n }\n title={t('workflows.edgeEditor.selectBusinessRule')}\n description={t('workflows.edgeEditor.selectBusinessRuleDescription', {\n mode: ruleSelectorMode === 'pre'\n ? t('workflows.edgeEditor.preConditions').toLowerCase()\n : t('workflows.edgeEditor.postConditions').toLowerCase()\n })}\n />\n {ConfirmDialogElement}\n </Dialog>\n )\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["'use client'\n\nimport {Edge} from '@xyflow/react'\nimport {useEffect, useState} from 'react'\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle\n} from '@open-mercato/ui/primitives/dialog'\nimport {Button} from '@open-mercato/ui/primitives/button'\nimport {Input} from '@open-mercato/ui/primitives/input'\nimport {Label} from '@open-mercato/ui/primitives/label'\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '@open-mercato/ui/primitives/select'\nimport {Badge} from '@open-mercato/ui/primitives/badge'\nimport {Separator} from '@open-mercato/ui/primitives/separator'\nimport {Plus, Trash2} from 'lucide-react'\nimport {type BusinessRule, BusinessRulesSelector} from './BusinessRulesSelector'\nimport {JsonBuilder} from '@open-mercato/ui/backend/JsonBuilder'\nimport {useT} from '@open-mercato/shared/lib/i18n/context'\nimport {useConfirmDialog} from '@open-mercato/ui/backend/confirm-dialog'\n\nexport interface EdgeEditDialogProps {\n edge: Edge | null\n isOpen: boolean\n onClose: () => void\n onSave: (edgeId: string, updates: Partial<Edge['data']>) => void\n onDelete: (edgeId: string) => void\n}\n\ninterface TransitionCondition {\n ruleId: string\n required: boolean\n}\n\n/**\n * EdgeEditDialog - Modal dialog for editing transition properties\n *\n * Allows editing:\n * - Label\n * - Trigger type (auto, manual, signal, timer)\n * - Pre-conditions (guard rules)\n * - Post-conditions (validation rules)\n * - Activities\n * - Business rules integration\n */\nexport function EdgeEditDialog({ edge, isOpen, onClose, onSave, onDelete }: EdgeEditDialogProps) {\n const t = useT()\n const { confirm: confirmDialog, ConfirmDialogElement } = useConfirmDialog()\n const [transitionName, setTransitionName] = useState('')\n const [trigger, setTrigger] = useState('auto')\n const [priority, setPriority] = useState('100')\n const [continueOnActivityFailure, setContinueOnActivityFailure] = useState(false)\n const [preConditions, setPreConditions] = useState<TransitionCondition[]>([])\n const [postConditions, setPostConditions] = useState<TransitionCondition[]>([])\n const [showAdvanced, setShowAdvanced] = useState(false)\n const [advancedConfig, setAdvancedConfig] = useState<Record<string, any>>({})\n const [activities, setActivities] = useState<any[]>([])\n const [expandedActivities, setExpandedActivities] = useState<Set<number>>(new Set())\n const [expandedPreConditions, setExpandedPreConditions] = useState<Set<number>>(new Set())\n const [expandedPostConditions, setExpandedPostConditions] = useState<Set<number>>(new Set())\n const [showRuleSelector, setShowRuleSelector] = useState(false)\n const [ruleSelectorMode, setRuleSelectorMode] = useState<'pre' | 'post'>('pre')\n const [ruleDetailsCache, setRuleDetailsCache] = useState<Map<string, BusinessRule>>(new Map())\n\n // Generate a readable name from edge ID (e.g., \"start_to_cart\" -> \"Start to Cart\")\n const generateNameFromId = (edgeId: string): string => {\n return edgeId\n .split('_to_')\n .map(part => part.split('_').map(word =>\n word.charAt(0).toUpperCase() + word.slice(1)\n ).join(' '))\n .join(' \u2192 ')\n }\n\n // Load edge data when dialog opens\n useEffect(() => {\n if (edge && isOpen) {\n const edgeData = edge.data as any\n\n // Try to get transition name from various sources\n let loadedTransitionName = ''\n if (edgeData?.transitionName && edgeData.transitionName !== '') {\n loadedTransitionName = edgeData.transitionName\n } else if (edgeData?.label && edgeData.label !== '' && edgeData.label !== undefined) {\n loadedTransitionName = edgeData.label\n } else {\n // Generate a name from the edge ID as fallback\n loadedTransitionName = generateNameFromId(edge.id)\n }\n\n setTransitionName(loadedTransitionName)\n\n setTrigger(edgeData?.trigger || 'auto')\n setPriority((edgeData?.priority || 100).toString())\n setContinueOnActivityFailure(edgeData?.continueOnActivityFailure !== undefined ? edgeData.continueOnActivityFailure : false)\n\n // Handle pre/post conditions - convert from various formats\n const rawPreConditions = edgeData?.preConditions || []\n const rawPostConditions = edgeData?.postConditions || []\n\n // Convert to TransitionCondition format\n setPreConditions(Array.isArray(rawPreConditions)\n ? rawPreConditions.map((c: any) =>\n typeof c === 'string' ? { ruleId: c, required: true } : c\n )\n : []\n )\n setPostConditions(Array.isArray(rawPostConditions)\n ? rawPostConditions.map((c: any) =>\n typeof c === 'string' ? { ruleId: c, required: true } : c\n )\n : []\n )\n\n setActivities(edgeData?.activities || [])\n\n // Load advanced config (activities, etc.)\n const advancedFields: any = {}\n if (edgeData?.activities && edgeData.activities.length > 0) {\n advancedFields.activities = edgeData.activities\n }\n setAdvancedConfig(advancedFields)\n setExpandedActivities(new Set())\n setExpandedPreConditions(new Set())\n setExpandedPostConditions(new Set())\n }\n }, [edge, isOpen])\n\n const toggleActivity = (index: number) => {\n const newExpanded = new Set(expandedActivities)\n if (newExpanded.has(index)) {\n newExpanded.delete(index)\n } else {\n newExpanded.add(index)\n }\n setExpandedActivities(newExpanded)\n }\n\n const addActivity = () => {\n const newActivity = {\n activityId: `activity_${Date.now()}`,\n activityName: t('workflows.common.newActivity'),\n activityType: 'CALL_API',\n config: {},\n timeout: '',\n retryPolicy: {\n maxAttempts: 3,\n initialIntervalMs: 1000,\n backoffCoefficient: 2,\n maxIntervalMs: 10000,\n },\n }\n setActivities([...activities, newActivity])\n // Auto-expand the new activity\n const newExpanded = new Set(expandedActivities)\n newExpanded.add(activities.length)\n setExpandedActivities(newExpanded)\n }\n\n const removeActivity = async (index: number) => {\n const confirmed = await confirmDialog({\n title: t('workflows.edgeEditor.confirmRemoveActivity'),\n variant: 'destructive',\n })\n if (confirmed) {\n setActivities(activities.filter((_, i) => i !== index))\n // Remove from expanded set\n const newExpanded = new Set(expandedActivities)\n newExpanded.delete(index)\n setExpandedActivities(newExpanded)\n }\n }\n\n const updateActivity = (index: number, field: string, value: any) => {\n const updated = [...activities]\n updated[index] = { ...updated[index], [field]: value }\n setActivities(updated)\n }\n\n const updateActivityRetryPolicy = (index: number, field: string, value: any) => {\n const updated = [...activities]\n updated[index] = {\n ...updated[index],\n retryPolicy: {\n ...updated[index].retryPolicy,\n [field]: value,\n },\n }\n setActivities(updated)\n }\n\n // Business Rules Management\n const togglePreCondition = (index: number) => {\n const newExpanded = new Set(expandedPreConditions)\n if (newExpanded.has(index)) {\n newExpanded.delete(index)\n } else {\n newExpanded.add(index)\n }\n setExpandedPreConditions(newExpanded)\n }\n\n const togglePostCondition = (index: number) => {\n const newExpanded = new Set(expandedPostConditions)\n if (newExpanded.has(index)) {\n newExpanded.delete(index)\n } else {\n newExpanded.add(index)\n }\n setExpandedPostConditions(newExpanded)\n }\n\n const openRuleSelector = (mode: 'pre' | 'post') => {\n setRuleSelectorMode(mode)\n setShowRuleSelector(true)\n }\n\n const closeRuleSelector = () => {\n setShowRuleSelector(false)\n }\n\n const handleRuleSelected = (ruleId: string, rule: BusinessRule) => {\n // Cache the rule details for display\n setRuleDetailsCache(prev => new Map(prev).set(ruleId, rule))\n\n if (ruleSelectorMode === 'pre') {\n if (!preConditions.find(c => c.ruleId === ruleId)) {\n setPreConditions([...preConditions, { ruleId, required: true }])\n }\n } else {\n if (!postConditions.find(c => c.ruleId === ruleId)) {\n setPostConditions([...postConditions, { ruleId, required: true }])\n }\n }\n closeRuleSelector()\n }\n\n const removePreCondition = (index: number) => {\n setPreConditions(preConditions.filter((_, i) => i !== index))\n const newExpanded = new Set(expandedPreConditions)\n newExpanded.delete(index)\n setExpandedPreConditions(newExpanded)\n }\n\n const removePostCondition = (index: number) => {\n setPostConditions(postConditions.filter((_, i) => i !== index))\n const newExpanded = new Set(expandedPostConditions)\n newExpanded.delete(index)\n setExpandedPostConditions(newExpanded)\n }\n\n const updatePreCondition = (index: number, field: keyof TransitionCondition, value: any) => {\n const updated = [...preConditions]\n updated[index] = { ...updated[index], [field]: value }\n setPreConditions(updated)\n }\n\n const updatePostCondition = (index: number, field: keyof TransitionCondition, value: any) => {\n const updated = [...postConditions]\n updated[index] = { ...updated[index], [field]: value }\n setPostConditions(updated)\n }\n\n const getBusinessRuleDetails = (ruleId: string): BusinessRule | null => {\n return ruleDetailsCache.get(ruleId) || null\n }\n\n const handleSave = () => {\n if (!edge) return\n\n const updates: Partial<Edge['data']> = {\n transitionName,\n label: transitionName, // Keep label for backward compatibility\n trigger,\n priority: parseInt(priority) || 100,\n continueOnActivityFailure,\n preConditions: preConditions.length > 0 ? preConditions : undefined,\n postConditions: postConditions.length > 0 ? postConditions : undefined,\n activities: activities.length > 0 ? activities : undefined,\n }\n\n // Merge advanced config\n if (advancedConfig && Object.keys(advancedConfig).length > 0) {\n Object.assign(updates, advancedConfig)\n }\n\n onSave(edge.id, updates)\n onClose()\n }\n\n const handleDelete = () => {\n if (!edge) return\n onDelete(edge.id)\n }\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Enter' && (e.metaKey || e.ctrlKey)) {\n handleSave()\n }\n if (e.key === 'Escape') {\n onClose()\n }\n }\n\n if (!isOpen || !edge) return null\n\n const triggerVariant = trigger === 'auto' ? 'default' : trigger === 'manual' ? 'secondary' : 'outline'\n\n return (\n <Dialog open={isOpen} onOpenChange={onClose}>\n <DialogContent className=\"sm:max-w-4xl max-h-[90vh] overflow-y-auto\">\n <DialogHeader>\n <div className=\"flex items-center gap-2 mb-2\">\n <DialogTitle>{t('workflows.edgeEditor.title')}</DialogTitle>\n <Badge variant={triggerVariant} className=\"text-xs\">\n {t(`workflows.transitions.triggers.${trigger}`)}\n </Badge>\n </div>\n <div className=\"space-y-1\">\n <DialogDescription>\n {t('workflows.edgeEditor.description')}\n </DialogDescription>\n <div className=\"flex items-center gap-2 text-xs text-muted-foreground\">\n <span className=\"font-medium\">{t('workflows.edgeEditor.id')}:</span>\n <code className=\"px-1.5 py-0.5 rounded bg-muted font-mono\">{edge.id}</code>\n </div>\n <div className=\"flex items-center gap-2 text-xs text-muted-foreground\">\n <span className=\"font-medium\">{t('workflows.edgeEditor.flow')}:</span>\n <code className=\"px-1.5 py-0.5 rounded bg-muted font-mono\">{edge.source}</code>\n <span>\u2192</span>\n <code className=\"px-1.5 py-0.5 rounded bg-muted font-mono\">{edge.target}</code>\n </div>\n </div>\n </DialogHeader>\n\n <div className=\"space-y-4\">\n {/* Transition Name */}\n <div className=\"space-y-2\">\n <Label htmlFor=\"transitionName\">{t('workflows.edgeEditor.transitionName')}</Label>\n <Input\n id=\"transitionName\"\n type=\"text\"\n value={transitionName}\n onChange={(e) => setTransitionName(e.target.value)}\n placeholder={t('workflows.edgeEditor.transitionNamePlaceholder', { name: generateNameFromId(edge.id) })}\n autoFocus\n />\n <p className=\"text-xs text-muted-foreground\">\n {t('workflows.edgeEditor.transitionNameHint')}\n </p>\n </div>\n\n {/* Trigger Type */}\n <div className=\"space-y-2\">\n <Label htmlFor=\"trigger\">{t('workflows.edgeEditor.triggerType')}</Label>\n <Select value={trigger} onValueChange={(value) => setTrigger(value)}>\n <SelectTrigger id=\"trigger\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"auto\">{t('workflows.transitions.triggers.auto')}</SelectItem>\n <SelectItem value=\"manual\">{t('workflows.transitions.triggers.manual')}</SelectItem>\n <SelectItem value=\"signal\">{t('workflows.transitions.triggers.signal')}</SelectItem>\n <SelectItem value=\"timer\">{t('workflows.transitions.triggers.timer')}</SelectItem>\n </SelectContent>\n </Select>\n <p className=\"text-xs text-muted-foreground\">\n {t(`workflows.edgeEditor.triggerDescriptions.${trigger}`)}\n </p>\n </div>\n\n {/* Priority */}\n <div className=\"space-y-2\">\n <Label htmlFor=\"priority\">{t('workflows.edgeEditor.priority')}</Label>\n <Input\n id=\"priority\"\n type=\"number\"\n value={priority}\n onChange={(e) => setPriority(e.target.value)}\n placeholder=\"100\"\n min=\"0\"\n max=\"9999\"\n />\n <p className=\"text-xs text-muted-foreground\">\n {t('workflows.edgeEditor.priorityHint')}\n </p>\n </div>\n\n <div className=\"space-y-2\">\n <div className=\"flex items-center space-x-2\">\n <input\n type=\"checkbox\"\n id=\"continueOnActivityFailure\"\n checked={continueOnActivityFailure}\n onChange={(e) => setContinueOnActivityFailure(e.target.checked)}\n className=\"h-4 w-4 rounded border-gray-300\"\n />\n <Label htmlFor=\"continueOnActivityFailure\" className=\"font-normal cursor-pointer\">\n {t('workflows.edgeEditor.continueOnActivityFailure')}\n </Label>\n </div>\n <p className=\"text-xs text-muted-foreground ml-6\">\n {t('workflows.edgeEditor.continueOnActivityFailureHint')}\n </p>\n </div>\n\n <Separator />\n\n {/* Pre-conditions (Business Rules) */}\n <div className=\"space-y-3\">\n <div className=\"flex items-center justify-between\">\n <div>\n <h3 className=\"text-sm font-semibold\">\n {t('workflows.edgeEditor.preConditions')} ({preConditions.length})\n </h3>\n <p className=\"text-xs text-muted-foreground\">\n {t('workflows.edgeEditor.preConditionsHint')}\n </p>\n </div>\n <Button\n type=\"button\"\n size=\"sm\"\n onClick={() => openRuleSelector('pre')}\n >\n <Plus className=\"size-3\" />\n {t('workflows.edgeEditor.addRule')}\n </Button>\n </div>\n\n {preConditions.length === 0 && (\n <div className=\"p-4 text-center text-sm text-muted-foreground bg-muted rounded-lg border\">\n {t('workflows.edgeEditor.noPreConditions')}\n </div>\n )}\n\n <div className=\"space-y-2\">\n {preConditions.map((condition, index) => {\n const isExpanded = expandedPreConditions.has(index)\n const rule = getBusinessRuleDetails(condition.ruleId)\n return (\n <div key={index} className=\"border border-gray-200 rounded-lg bg-gray-50\">\n <button\n type=\"button\"\n onClick={() => togglePreCondition(index)}\n className=\"w-full px-4 py-3 text-left flex items-center justify-between hover:bg-gray-100 transition-colors rounded-t-lg\"\n >\n <div className=\"flex-1\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm font-semibold text-gray-900\">\n {rule?.ruleName || condition.ruleId}\n </span>\n {condition.required && (\n <span className=\"inline-flex items-center px-2 py-0.5 rounded text-xs font-medium bg-red-100 text-red-800\">\n {t('workflows.edgeEditor.required')}\n </span>\n )}\n {rule && (\n <span className=\"inline-flex items-center px-2 py-0.5 rounded text-xs font-medium bg-purple-100 text-purple-800\">\n {rule.ruleType}\n </span>\n )}\n </div>\n <p className=\"text-xs text-gray-600 mt-1\">\n {t('workflows.edgeEditor.ruleId')}: <code className=\"bg-white px-1 rounded\">{condition.ruleId}</code>\n </p>\n {rule?.description && (\n <p className=\"text-xs text-gray-500 mt-1 line-clamp-1\">{rule.description}</p>\n )}\n </div>\n <svg\n className={`w-5 h-5 text-gray-400 transition-transform ${isExpanded ? 'rotate-180' : ''}`}\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M19 9l-7 7-7-7\" />\n </svg>\n </button>\n\n {isExpanded && (\n <div className=\"px-4 pb-4 space-y-3 border-t border-gray-200 bg-white\">\n <div className=\"pt-3\">\n <label className=\"block text-xs font-medium text-gray-700 mb-1\">{t('workflows.edgeEditor.ruleId')}</label>\n <Input\n type=\"text\"\n size=\"sm\"\n value={condition.ruleId}\n onChange={(e) => updatePreCondition(index, 'ruleId', e.target.value)}\n />\n </div>\n\n <div>\n <label className=\"flex items-center gap-2 text-xs font-medium text-gray-700\">\n <input\n type=\"checkbox\"\n checked={condition.required}\n onChange={(e) => updatePreCondition(index, 'required', e.target.checked)}\n className=\"rounded border-gray-300 text-blue-600 focus-visible:ring-ring\"\n />\n {t('workflows.edgeEditor.requiredCheckbox')}\n </label>\n </div>\n\n {rule && (\n <div className=\"border-t border-gray-200 pt-3\">\n <h4 className=\"text-xs font-semibold text-gray-900 mb-2\">{t('workflows.edgeEditor.businessRuleDetails')}</h4>\n <dl className=\"space-y-1 text-xs\">\n <div className=\"flex justify-between\">\n <dt className=\"font-medium text-gray-700\">Name:</dt>\n <dd className=\"text-gray-900\">{rule.ruleName}</dd>\n </div>\n <div className=\"flex justify-between\">\n <dt className=\"font-medium text-gray-700\">Type:</dt>\n <dd className=\"text-gray-900\">{rule.ruleType}</dd>\n </div>\n {rule.ruleCategory && (\n <div className=\"flex justify-between\">\n <dt className=\"font-medium text-gray-700\">Category:</dt>\n <dd className=\"text-gray-900\">{rule.ruleCategory}</dd>\n </div>\n )}\n <div className=\"flex justify-between\">\n <dt className=\"font-medium text-gray-700\">Entity Type:</dt>\n <dd className=\"text-gray-900 font-mono text-xs\">{rule.entityType}</dd>\n </div>\n {rule.eventType && (\n <div className=\"flex justify-between\">\n <dt className=\"font-medium text-gray-700\">Event Type:</dt>\n <dd className=\"text-gray-900\">{rule.eventType}</dd>\n </div>\n )}\n {rule.description && (\n <div className=\"mt-2 pt-2 border-t border-gray-200\">\n <dt className=\"font-medium text-gray-700 mb-1\">Description:</dt>\n <dd className=\"text-gray-600\">{rule.description}</dd>\n </div>\n )}\n </dl>\n </div>\n )}\n\n <div className=\"border-t border-gray-200 pt-3\">\n <Button\n type=\"button\"\n variant=\"destructive\"\n size=\"sm\"\n onClick={() => removePreCondition(index)}\n >\n <Trash2 className=\"size-4\" />\n {t('workflows.edgeEditor.removePreCondition')}\n </Button>\n </div>\n </div>\n )}\n </div>\n )\n })}\n </div>\n </div>\n\n {/* Post-conditions (Business Rules) */}\n <div className=\"space-y-3\">\n <div className=\"flex items-center justify-between\">\n <div>\n <h3 className=\"text-sm font-semibold\">\n {t('workflows.edgeEditor.postConditions')} ({postConditions.length})\n </h3>\n <p className=\"text-xs text-muted-foreground\">\n {t('workflows.edgeEditor.postConditionsHint')}\n </p>\n </div>\n <Button\n type=\"button\"\n size=\"sm\"\n onClick={() => openRuleSelector('post')}\n >\n <Plus className=\"size-3\" />\n {t('workflows.edgeEditor.addRule')}\n </Button>\n </div>\n\n {postConditions.length === 0 && (\n <div className=\"p-4 text-center text-sm text-muted-foreground bg-muted rounded-lg border\">\n {t('workflows.edgeEditor.noPostConditions')}\n </div>\n )}\n\n <div className=\"space-y-2\">\n {postConditions.map((condition, index) => {\n const isExpanded = expandedPostConditions.has(index)\n const rule = getBusinessRuleDetails(condition.ruleId)\n return (\n <div key={index} className=\"border border-gray-200 rounded-lg bg-gray-50\">\n <button\n type=\"button\"\n onClick={() => togglePostCondition(index)}\n className=\"w-full px-4 py-3 text-left flex items-center justify-between hover:bg-gray-100 transition-colors rounded-t-lg\"\n >\n <div className=\"flex-1\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm font-semibold text-gray-900\">\n {rule?.ruleName || condition.ruleId}\n </span>\n {condition.required && (\n <span className=\"inline-flex items-center px-2 py-0.5 rounded text-xs font-medium bg-red-100 text-red-800\">\n {t('workflows.edgeEditor.required')}\n </span>\n )}\n {rule && (\n <span className=\"inline-flex items-center px-2 py-0.5 rounded text-xs font-medium bg-purple-100 text-purple-800\">\n {rule.ruleType}\n </span>\n )}\n </div>\n <p className=\"text-xs text-gray-600 mt-1\">\n {t('workflows.edgeEditor.ruleId')}: <code className=\"bg-white px-1 rounded\">{condition.ruleId}</code>\n </p>\n {rule?.description && (\n <p className=\"text-xs text-gray-500 mt-1 line-clamp-1\">{rule.description}</p>\n )}\n </div>\n <svg\n className={`w-5 h-5 text-gray-400 transition-transform ${isExpanded ? 'rotate-180' : ''}`}\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M19 9l-7 7-7-7\" />\n </svg>\n </button>\n\n {isExpanded && (\n <div className=\"px-4 pb-4 space-y-3 border-t border-gray-200 bg-white\">\n <div className=\"pt-3\">\n <label className=\"block text-xs font-medium text-gray-700 mb-1\">{t('workflows.edgeEditor.ruleId')}</label>\n <Input\n type=\"text\"\n size=\"sm\"\n value={condition.ruleId}\n onChange={(e) => updatePostCondition(index, 'ruleId', e.target.value)}\n />\n </div>\n\n <div>\n <label className=\"flex items-center gap-2 text-xs font-medium text-gray-700\">\n <input\n type=\"checkbox\"\n checked={condition.required}\n onChange={(e) => updatePostCondition(index, 'required', e.target.checked)}\n className=\"rounded border-gray-300 text-blue-600 focus-visible:ring-ring\"\n />\n {t('workflows.edgeEditor.requiredPostCheckbox')}\n </label>\n </div>\n\n {rule && (\n <div className=\"border-t border-gray-200 pt-3\">\n <h4 className=\"text-xs font-semibold text-gray-900 mb-2\">{t('workflows.edgeEditor.businessRuleDetails')}</h4>\n <dl className=\"space-y-1 text-xs\">\n <div className=\"flex justify-between\">\n <dt className=\"font-medium text-gray-700\">Name:</dt>\n <dd className=\"text-gray-900\">{rule.ruleName}</dd>\n </div>\n <div className=\"flex justify-between\">\n <dt className=\"font-medium text-gray-700\">Type:</dt>\n <dd className=\"text-gray-900\">{rule.ruleType}</dd>\n </div>\n {rule.ruleCategory && (\n <div className=\"flex justify-between\">\n <dt className=\"font-medium text-gray-700\">Category:</dt>\n <dd className=\"text-gray-900\">{rule.ruleCategory}</dd>\n </div>\n )}\n <div className=\"flex justify-between\">\n <dt className=\"font-medium text-gray-700\">Entity Type:</dt>\n <dd className=\"text-gray-900 font-mono text-xs\">{rule.entityType}</dd>\n </div>\n {rule.eventType && (\n <div className=\"flex justify-between\">\n <dt className=\"font-medium text-gray-700\">Event Type:</dt>\n <dd className=\"text-gray-900\">{rule.eventType}</dd>\n </div>\n )}\n {rule.description && (\n <div className=\"mt-2 pt-2 border-t border-gray-200\">\n <dt className=\"font-medium text-gray-700 mb-1\">Description:</dt>\n <dd className=\"text-gray-600\">{rule.description}</dd>\n </div>\n )}\n </dl>\n </div>\n )}\n\n <div className=\"border-t border-gray-200 pt-3\">\n <Button\n type=\"button\"\n variant=\"destructive\"\n size=\"sm\"\n onClick={() => removePostCondition(index)}\n >\n <Trash2 className=\"size-4\" />\n {t('workflows.edgeEditor.removePostCondition')}\n </Button>\n </div>\n </div>\n )}\n </div>\n )\n })}\n </div>\n </div>\n\n {/* Activities Section */}\n <div className=\"border-t border-gray-200 pt-4 mt-4\">\n <div className=\"flex items-center justify-between mb-3\">\n <h3 className=\"text-sm font-semibold text-gray-900\">\n {t('workflows.edgeEditor.activities')} ({activities.length})\n </h3>\n <Button\n type=\"button\"\n size=\"sm\"\n onClick={addActivity}\n >\n <Plus className=\"size-3\" />\n {t('workflows.edgeEditor.addActivity')}\n </Button>\n </div>\n\n {activities.length === 0 && (\n <div className=\"p-4 text-center text-sm text-gray-500 bg-gray-50 rounded-lg border border-gray-200\">\n {t('workflows.edgeEditor.noActivities')}\n </div>\n )}\n\n <div className=\"space-y-2\">\n {activities.map((activity, index) => {\n const isExpanded = expandedActivities.has(index)\n return (\n <div key={index} className=\"border border-gray-200 rounded-lg bg-gray-50\">\n <button\n type=\"button\"\n onClick={() => toggleActivity(index)}\n className=\"w-full px-4 py-3 text-left flex items-center justify-between hover:bg-gray-100 transition-colors rounded-t-lg\"\n >\n <div className=\"flex-1\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm font-semibold text-gray-900\">\n {activity.activityName || activity.label || activity.activityId || `Activity ${index + 1}`}\n </span>\n <Badge variant=\"secondary\" className=\"text-xs\">\n {activity.activityType}\n </Badge>\n </div>\n <p className=\"text-xs text-gray-600 mt-1\">\n {t('workflows.edgeEditor.activityId')}: <code className=\"bg-white px-1 rounded\">{activity.activityId}</code>\n </p>\n </div>\n <svg\n className={`w-5 h-5 text-gray-400 transition-transform ${isExpanded ? 'rotate-180' : ''}`}\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M19 9l-7 7-7-7\" />\n </svg>\n </button>\n\n {isExpanded && (\n <div className=\"px-4 pb-4 space-y-3 border-t border-gray-200 bg-white\">\n {/* Activity ID */}\n <div className=\"pt-3\">\n <label className=\"block text-xs font-medium text-gray-700 mb-1\">{t('workflows.edgeEditor.activityId')} *</label>\n <Input\n type=\"text\"\n size=\"sm\"\n value={activity.activityId}\n onChange={(e) => updateActivity(index, 'activityId', e.target.value)}\n placeholder={t('workflows.edgeEditor.activityIdPlaceholder')}\n />\n </div>\n\n {/* Activity Name */}\n <div>\n <label className=\"block text-xs font-medium text-gray-700 mb-1\">{t('workflows.edgeEditor.activityName')} *</label>\n <Input\n type=\"text\"\n size=\"sm\"\n value={activity.activityName || ''}\n onChange={(e) => updateActivity(index, 'activityName', e.target.value)}\n placeholder={t('workflows.edgeEditor.activityNamePlaceholder')}\n />\n </div>\n\n {/* Activity Type */}\n <div>\n <label className=\"block text-xs font-medium text-gray-700 mb-1\">{t('workflows.edgeEditor.activityType')} *</label>\n <Select\n value={activity.activityType}\n onValueChange={(value) => updateActivity(index, 'activityType', value)}\n >\n <SelectTrigger size=\"sm\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"SEND_EMAIL\">{t('workflows.activities.types.SEND_EMAIL')}</SelectItem>\n <SelectItem value=\"CALL_API\">{t('workflows.activities.types.CALL_API')}</SelectItem>\n <SelectItem value=\"UPDATE_ENTITY\">{t('workflows.activities.types.UPDATE_ENTITY')}</SelectItem>\n <SelectItem value=\"EMIT_EVENT\">{t('workflows.activities.types.EMIT_EVENT')}</SelectItem>\n <SelectItem value=\"CALL_WEBHOOK\">{t('workflows.activities.types.CALL_WEBHOOK')}</SelectItem>\n <SelectItem value=\"EXECUTE_FUNCTION\">{t('workflows.activities.types.EXECUTE_FUNCTION')}</SelectItem>\n <SelectItem value=\"WAIT\">{t('workflows.activities.types.WAIT')}</SelectItem>\n </SelectContent>\n </Select>\n </div>\n\n {/* Timeout */}\n <div>\n <label className=\"block text-xs font-medium text-gray-700 mb-1\">{t('workflows.edgeEditor.timeout')}</label>\n <Input\n type=\"text\"\n size=\"sm\"\n value={activity.timeout || ''}\n onChange={(e) => updateActivity(index, 'timeout', e.target.value)}\n placeholder={t('workflows.edgeEditor.timeoutPlaceholder')}\n />\n <p className=\"text-xs text-gray-500 mt-0.5\">{t('workflows.edgeEditor.timeoutHint')}</p>\n </div>\n\n {/* Retry Policy */}\n <div className=\"border-t border-gray-200 pt-3\">\n <h4 className=\"text-xs font-semibold text-gray-900 mb-2\">{t('workflows.edgeEditor.retryPolicy')}</h4>\n <div className=\"grid grid-cols-1 sm:grid-cols-2 gap-2\">\n <div>\n <label className=\"block text-xs font-medium text-gray-700 mb-1\">{t('workflows.edgeEditor.maxAttempts')}</label>\n <Input\n type=\"number\"\n size=\"sm\"\n value={activity.retryPolicy?.maxAttempts || ''}\n onChange={(e) => updateActivityRetryPolicy(index, 'maxAttempts', parseInt(e.target.value) || 0)}\n placeholder=\"3\"\n min=\"1\"\n max=\"10\"\n />\n </div>\n <div>\n <label className=\"block text-xs font-medium text-gray-700 mb-1\">{t('workflows.edgeEditor.initialInterval')}</label>\n <Input\n type=\"number\"\n size=\"sm\"\n value={activity.retryPolicy?.initialIntervalMs || ''}\n onChange={(e) => updateActivityRetryPolicy(index, 'initialIntervalMs', parseInt(e.target.value) || 0)}\n placeholder=\"1000\"\n min=\"0\"\n />\n </div>\n <div>\n <label className=\"block text-xs font-medium text-gray-700 mb-1\">{t('workflows.edgeEditor.backoffCoefficient')}</label>\n <Input\n type=\"number\"\n size=\"sm\"\n step=\"0.1\"\n value={activity.retryPolicy?.backoffCoefficient || ''}\n onChange={(e) => updateActivityRetryPolicy(index, 'backoffCoefficient', parseFloat(e.target.value) || 1)}\n placeholder=\"2\"\n min=\"1\"\n max=\"10\"\n />\n </div>\n <div>\n <label className=\"block text-xs font-medium text-gray-700 mb-1\">{t('workflows.edgeEditor.maxInterval')}</label>\n <Input\n type=\"number\"\n size=\"sm\"\n value={activity.retryPolicy?.maxIntervalMs || ''}\n onChange={(e) => updateActivityRetryPolicy(index, 'maxIntervalMs', parseInt(e.target.value) || 0)}\n placeholder=\"10000\"\n min=\"0\"\n />\n </div>\n </div>\n </div>\n\n {/* Activity Flags */}\n <div className=\"border-t border-gray-200 pt-3\">\n <h4 className=\"text-xs font-semibold text-gray-900 mb-2\">{t('workflows.edgeEditor.activityOptions')}</h4>\n <div className=\"space-y-2\">\n <div className=\"flex items-center space-x-2\">\n <input\n type=\"checkbox\"\n id={`activity-async-${index}`}\n checked={activity.async || false}\n onChange={(e) => updateActivity(index, 'async', e.target.checked)}\n className=\"h-4 w-4 rounded border-gray-300\"\n />\n <label htmlFor={`activity-async-${index}`} className=\"text-xs text-gray-700 cursor-pointer\">\n {t('workflows.edgeEditor.asyncOption')}\n </label>\n </div>\n <div className=\"flex items-center space-x-2\">\n <input\n type=\"checkbox\"\n id={`activity-compensate-${index}`}\n checked={activity.compensate || false}\n onChange={(e) => updateActivity(index, 'compensate', e.target.checked)}\n className=\"h-4 w-4 rounded border-gray-300\"\n />\n <label htmlFor={`activity-compensate-${index}`} className=\"text-xs text-gray-700 cursor-pointer\">\n {t('workflows.edgeEditor.compensateOption')}\n </label>\n </div>\n </div>\n </div>\n\n {/* Configuration */}\n <div className=\"border-t border-gray-200 pt-3\">\n <label className=\"block text-xs font-medium text-gray-700 mb-1\">{t('workflows.edgeEditor.configurationJson')}</label>\n <JsonBuilder\n value={activity.config || {}}\n onChange={(config) => {\n const updated = [...activities]\n updated[index] = { ...updated[index], config }\n setActivities(updated)\n }}\n />\n <p className=\"text-xs text-gray-500 mt-0.5\">{t('workflows.edgeEditor.configurationHint')}</p>\n </div>\n\n {/* Delete Button */}\n <div className=\"border-t border-gray-200 pt-3\">\n <Button\n type=\"button\"\n variant=\"destructive\"\n size=\"sm\"\n onClick={() => removeActivity(index)}\n >\n <Trash2 className=\"size-4\" />\n {t('workflows.edgeEditor.removeActivity')}\n </Button>\n </div>\n </div>\n )}\n </div>\n )\n })}\n </div>\n </div>\n\n {/* Advanced Configuration */}\n <div className=\"border-t border-gray-200 pt-4 mt-4\">\n <button\n type=\"button\"\n onClick={() => setShowAdvanced(!showAdvanced)}\n className=\"flex items-center justify-between w-full text-left\"\n >\n <h3 className=\"text-sm font-semibold text-gray-900\">\n {t('workflows.edgeEditor.advancedConfiguration')}\n </h3>\n <svg\n className={`w-5 h-5 transition-transform ${showAdvanced ? 'rotate-180' : ''}`}\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M19 9l-7 7-7-7\" />\n </svg>\n </button>\n {showAdvanced && (\n <div className=\"mt-3\">\n <JsonBuilder\n value={advancedConfig}\n onChange={setAdvancedConfig}\n />\n <p className=\"text-xs text-gray-500 mt-1\">\n {t('workflows.edgeEditor.advancedConfigHint')}\n </p>\n </div>\n )}\n </div>\n </div>\n\n <DialogFooter className=\"flex justify-between\">\n <Button\n type=\"button\"\n variant=\"destructive\"\n onClick={handleDelete}\n >\n <Trash2 className=\"size-4\" />\n {t('workflows.edgeEditor.deleteTransition')}\n </Button>\n <div className=\"flex gap-2\">\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={onClose}\n >\n {t('workflows.edgeEditor.cancel')}\n </Button>\n <Button\n type=\"button\"\n onClick={handleSave}\n >\n {t('workflows.edgeEditor.saveChanges')}\n </Button>\n </div>\n </DialogFooter>\n </DialogContent>\n\n {/* Business Rule Selector - Using generic component */}\n <BusinessRulesSelector\n isOpen={showRuleSelector}\n onClose={closeRuleSelector}\n onSelect={handleRuleSelected}\n excludeRuleIds={\n ruleSelectorMode === 'pre'\n ? preConditions.map(c => c.ruleId)\n : postConditions.map(c => c.ruleId)\n }\n title={t('workflows.edgeEditor.selectBusinessRule')}\n description={t('workflows.edgeEditor.selectBusinessRuleDescription', {\n mode: ruleSelectorMode === 'pre'\n ? t('workflows.edgeEditor.preConditions').toLowerCase()\n : t('workflows.edgeEditor.postConditions').toLowerCase()\n })}\n />\n {ConfirmDialogElement}\n </Dialog>\n )\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }