@objectstack/console 17.1.0 → 17.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (301) hide show
  1. package/CHANGELOG.md +731 -0
  2. package/README.md +26 -10
  3. package/dist/.objectstack-injection.json +2 -2
  4. package/dist/.objectui-sha +1 -1
  5. package/dist/assets/ActionResultDialog-CQwenjVA.js +9 -0
  6. package/dist/assets/AiPendingActionsPage-7gZ8zlOy.js +1 -0
  7. package/dist/assets/ApiConsolePage-DUF0ysH7.js +1 -0
  8. package/dist/assets/{AppDocsIndex-DVrJTsbv.js → AppDocsIndex-CP_AVG4X.js} +1 -1
  9. package/dist/assets/AppManagementPage-BJktnoa5.js +1 -0
  10. package/dist/assets/ApprovalsInboxPage-DlnxY-uy.js +1 -0
  11. package/dist/assets/{AuditLogPage-B-2e1YhN.js → AuditLogPage-DIJPRjji.js} +1 -1
  12. package/dist/assets/{ComponentNavView-BVbkfJfE.js → ComponentNavView-C84QByT7.js} +1 -1
  13. package/dist/assets/CreateViewDialog-Zbd9Cagm.js +1 -0
  14. package/dist/assets/DashboardView-UyKHklBx.js +1 -0
  15. package/dist/assets/{DeveloperHubPage-CWq2uYpr.js → DeveloperHubPage-BRyNdrCJ.js} +1 -1
  16. package/dist/assets/DocPage-Bx8ZXCYt.js +1 -0
  17. package/dist/assets/{DocShell-UFsFTSr-.js → DocShell-Ipy_IDvh.js} +1 -1
  18. package/dist/assets/DocsIndex-CmY-7OQR.js +1 -0
  19. package/dist/assets/DocsLayout-BNsSvaz2.js +1 -0
  20. package/dist/assets/DocsSlug-Cb_NMM1k.js +1 -0
  21. package/dist/assets/ExpressionProvider-DqGWVuxV.js +1 -0
  22. package/dist/assets/FlowRunsPage-B6ustUgi.js +1 -0
  23. package/dist/assets/{IntegrationsPage-DdKbqwGE.js → IntegrationsPage-chOxmiyU.js} +2 -2
  24. package/dist/assets/InterfaceListPage-DVETnQm5.js +1 -0
  25. package/dist/assets/MarketplaceInstalledPage-DA5pjhAz.js +1 -0
  26. package/dist/assets/MarketplacePackagePage-dCIVHBFi.js +4 -0
  27. package/dist/assets/MarketplacePage-wJb6g1p7.js +1 -0
  28. package/dist/assets/MetadataInspector-Cu-n1FYz.js +1 -0
  29. package/dist/assets/ObjectDataPage-CP-YSZYQ.js +1 -0
  30. package/dist/assets/PageView-B1_ibRuM.js +1 -0
  31. package/dist/assets/ProfilePage-DEr5iZVB.js +1 -0
  32. package/dist/assets/PublicFormsPage-CBcKQbNl.js +1 -0
  33. package/dist/assets/RecordDetailView-A8bbPnkK.js +3 -0
  34. package/dist/assets/RecordFormPage-CGQlYWDk.js +1 -0
  35. package/dist/assets/ReportDefaultInspector-R_p6YStL.js +1 -0
  36. package/dist/assets/ReportView-BTMrtcGH.js +2 -0
  37. package/dist/assets/RuntimeDraftBar-agGU39FL.js +1 -0
  38. package/dist/assets/SchemaForm-DJbupOno.js +3 -0
  39. package/dist/assets/SearchResultsPage-CHhZUc6L.js +1 -0
  40. package/dist/assets/SettingsHub-BGLR_gS7.js +1 -0
  41. package/dist/assets/SettingsView-Bq-7Zkzs.js +1 -0
  42. package/dist/assets/SkeletonDetail-B4-UKxai.js +1 -0
  43. package/dist/assets/SystemHubPage-CVZVag1e.js +1 -0
  44. package/dist/assets/{abnfDiagram-N423BO3Z-DfpQlDUF.js → abnfDiagram-VCTEODGH-DUS5D5dU.js} +1 -1
  45. package/dist/assets/app-shell-eager-leaves-BB0oaPx6.js +1 -0
  46. package/dist/assets/{utils-CJ4UwXMF.js → appRoute-DEVGXLLH.js} +1 -1
  47. package/dist/assets/architecture-7GRP2DOG-kzM7RUjO.js +1 -0
  48. package/dist/assets/{architectureDiagram-T3A2C74G-Ej_4n3NG.js → architectureDiagram-5GKGNRK7-mGW8P1lC.js} +1 -1
  49. package/dist/assets/blockDiagram-OSKFZWR5-Bz2hnVmp.js +129 -0
  50. package/dist/assets/c4Diagram-7LVT6UL2-DU3u1Y6c.js +38 -0
  51. package/dist/assets/channel-FD4s9EIH.js +1 -0
  52. package/dist/assets/{chunk-U6XO7XAA-D-dXvZaW.js → chunk-2ZTRR5NV-DXmA5XXf.js} +1 -1
  53. package/dist/assets/chunk-3NF5O7KM-B8Q7HUio.js +168 -0
  54. package/dist/assets/{chunk-YOTPTUD7-CDtXQZ13.js → chunk-3Z5EZCMW-D3OlaP15.js} +1 -1
  55. package/dist/assets/chunk-4HAMMTFA-BPKwX4iB.js +62 -0
  56. package/dist/assets/{chunk-BIQX33UG-DMScvo0C.js → chunk-5V3GS4D5-sE73jHoi.js} +1 -1
  57. package/dist/assets/{chunk-MOZMSUNE-DG70Besp.js → chunk-6AZGARVD-dsTIs5yl.js} +1 -1
  58. package/dist/assets/{chunk-5JV3BV7I-BrKM6vC-.js → chunk-6EIED4P4-BB4xaK3K.js} +1 -1
  59. package/dist/assets/{chunk-R7FJI6CG-DsJHM8am.js → chunk-6K3QC6MW-DaG1LefG.js} +1 -1
  60. package/dist/assets/{chunk-OSBZ3O6U-Dch_xyhf.js → chunk-6TQVIW2G-DL8WEcT0.js} +1 -1
  61. package/dist/assets/{chunk-JG7HCLWE-lCTbN-f1.js → chunk-747NJXEK-Bdie6H1T.js} +1 -1
  62. package/dist/assets/chunk-75Z2AOVW-CkSdnmiC.js +2 -0
  63. package/dist/assets/chunk-CLGD4ZFX-BTkDISwp.js +1 -0
  64. package/dist/assets/chunk-DU6HZSFF-BkY4hAzc.js +127 -0
  65. package/dist/assets/{chunk-2GRJ4B5K-D1if-ThW.js → chunk-F27PBJKO-DUKg0YWV.js} +1 -1
  66. package/dist/assets/{chunk-KEIR6QF5-ydf36Hye.js → chunk-FOHPRMQF-C65HoZVt.js} +2 -2
  67. package/dist/assets/chunk-GMAD6QVW-DZo_NykZ.js +72 -0
  68. package/dist/assets/chunk-GVQU2GXP-9ELY9S6X.js +1 -0
  69. package/dist/assets/chunk-H2I77ZZE-vCr_buP7.js +1 -0
  70. package/dist/assets/{chunk-GF5L2VYU-Dgjjn2FR.js → chunk-HLEWEB6X-iPkY2ESt.js} +1 -1
  71. package/dist/assets/{chunk-QBLGF6JB-CzQYydMJ.js → chunk-I5DQTOEV-Cz6Y6T9y.js} +1 -1
  72. package/dist/assets/{chunk-5FCAYU7R-BuOxxvKk.js → chunk-ICYGCRZG-DdtFYQ2l.js} +1 -1
  73. package/dist/assets/{chunk-CQNSW5MT-CCth14ZS.js → chunk-IH6LHLGP-DybuHD8B.js} +1 -1
  74. package/dist/assets/{chunk-CYSBUYHQ-DIigEFGo.js → chunk-KI3K4JFJ-CB_CI00L.js} +1 -1
  75. package/dist/assets/chunk-L3NEJ4N5-Bzz35TZJ.js +1 -0
  76. package/dist/assets/chunk-LNGE3PJU-DWpGwHrW.js +34 -0
  77. package/dist/assets/chunk-LQGUR6SS-iVI0GACK.js +1 -0
  78. package/dist/assets/chunk-OSK3NFVY-DcRwXCQD.js +10 -0
  79. package/dist/assets/{chunk-5TONJI2A-Bdh0MHqz.js → chunk-OUJLGHUK-TbeyE6CA.js} +1 -1
  80. package/dist/assets/chunk-P2QGCYS3-nx2-dM5t.js +1 -0
  81. package/dist/assets/{chunk-KBJHAD2P-DI4-lUt-.js → chunk-POPQ4Y6H-BxLOacOG.js} +1 -1
  82. package/dist/assets/{chunk-4I5QYGJK-DlrWrdEa.js → chunk-PWAF6VOD-2mst9kZu.js} +1 -1
  83. package/dist/assets/{chunk-6Q2QTUOP-C2vvuHlO.js → chunk-SVP7TREG-C3BMpr4x.js} +1 -1
  84. package/dist/assets/{chunk-EMLP6XTP-B4CrDa5p.js → chunk-UY3FDG6J-CDAtW6MI.js} +1 -1
  85. package/dist/assets/{chunk-5HE753X5-T_shrJhj.js → chunk-XHIXRSVI-CqmtoxrP.js} +1 -1
  86. package/dist/assets/chunk-XXDRQBXY-iNC8aYmk.js +1 -0
  87. package/dist/assets/{chunk-5RXB4S5H-JwFhdddt.js → chunk-ZLD2IHE6-ZFqtFJbj.js} +2 -2
  88. package/dist/assets/classDiagram-CYGNFDIV-D5Pd2TCl.js +1 -0
  89. package/dist/assets/classDiagram-v2-TLXNO2FR-D5Pd2TCl.js +1 -0
  90. package/dist/assets/{cose-bilkent-JH36ORCC-XP-DnSP5.js → cose-bilkent-JH36ORCC-CPQv9aQH.js} +1 -1
  91. package/dist/assets/createDerive-Best2JCj.js +2 -0
  92. package/dist/assets/cynefin-OW5HDTMX-Dtvf1C60.js +1 -0
  93. package/dist/assets/{cynefinDiagram-MW4NZA55-B8MvpqXe.js → cynefinDiagram-5FMLGOSQ-Lnly8IJd.js} +1 -1
  94. package/dist/assets/cytoscape.esm-CGd-uY3x.js +321 -0
  95. package/dist/assets/dagre-OS7QT2EB-CdXLxmTK.js +4 -0
  96. package/dist/assets/dagre-PrKaheQc.js +1 -0
  97. package/dist/assets/data-adapter-DL25qpAe.js +5 -0
  98. package/dist/assets/default-inspector-registry-DeEG98bO.js +1 -0
  99. package/dist/assets/{diagram-7IWD3JNH-Xj62y5BF.js → diagram-S7CK7UJ4-DE8I3gxQ.js} +4 -4
  100. package/dist/assets/{diagram-UB23O5K3-bseKIzhv.js → diagram-UQ7AKVKN-D2xQpbEq.js} +1 -1
  101. package/dist/assets/{diagram-B4RE2ZJO-mI-iOCGl.js → diagram-VSXAHHWV-DnttDSlO.js} +1 -1
  102. package/dist/assets/{diagram-Q27KOJAE-B98Knrnh.js → diagram-VX7I27RA-BSEwkn7K.js} +1 -1
  103. package/dist/assets/{diagram-LBJQPF4R-BMTSoZch.js → diagram-Z3DM3KII-BgB9f0Nv.js} +1 -1
  104. package/dist/assets/dist-BpPy7hlB.js +5 -0
  105. package/dist/assets/{ebnfDiagram-BXEA7PRR-Bgo10FP1.js → ebnfDiagram-PWID7BFC-32WvKbS2.js} +1 -1
  106. package/dist/assets/erDiagram-2YWLMYGG-Dwf8uAdl.js +99 -0
  107. package/dist/assets/eventmodeling-NTZA5JFV-CSwP2CpK.js +1 -0
  108. package/dist/assets/expressionUser-CASszt1z.js +1 -0
  109. package/dist/assets/flowDiagram-T62WH6J4-CqVSNJ8T.js +1 -0
  110. package/dist/assets/framework-BfSv4Kb0.js +36 -0
  111. package/dist/assets/{ganttDiagram-PKOTCBZU-CrmKcYGt.js → ganttDiagram-EL5Y4UJY-DqYIE0Cu.js} +2 -2
  112. package/dist/assets/getIcon-CgyYxSEC.js +1 -0
  113. package/dist/assets/gitGraph-4MIJSDKK--Dc33TN5.js +1 -0
  114. package/dist/assets/{gitGraphDiagram-DS77QQ5N-COu0mOui.js → gitGraphDiagram-WWUBYQGX-D1dYmoGu.js} +1 -1
  115. package/dist/assets/{highlighted-body-OFNGDK62-DUQut-ZU.js → highlighted-body-OFNGDK62-BxO9mjPI.js} +1 -1
  116. package/dist/assets/i18n-Cfqor-xb.js +9 -0
  117. package/dist/assets/i18n-locales-Bz4c8KXc.js +31 -0
  118. package/dist/assets/index-BU-FzlQ6.js +20 -0
  119. package/dist/assets/index-_VyGO4ms.css +2 -0
  120. package/dist/assets/info-A6RAGUB7-DBa3mCQO.js +1 -0
  121. package/dist/assets/{infoDiagram-6WML65LV-BT0Q6MIs.js → infoDiagram-FKFFQAWI-Cr1-5_Am.js} +1 -1
  122. package/dist/assets/infrastructure-CIpDEFyQ.js +3 -0
  123. package/dist/assets/{ishikawaDiagram-WSZJBQD7-kvPjMvBP.js → ishikawaDiagram-5VMMS53U-Bsjx7BsE.js} +1 -1
  124. package/dist/assets/{journeyDiagram-NVQOT4AX-DhXy7wxt.js → journeyDiagram-EYS64GPL-1scn5Z5c.js} +2 -2
  125. package/dist/assets/{kanban-definition-27J2QSJJ-CFDavpZY.js → kanban-definition-UXKFOSKX-DjLQAv5U.js} +2 -2
  126. package/dist/assets/mermaid-GHXKKRXX-NzEcDxBh.js +1 -0
  127. package/dist/assets/{mermaid-parser.core-Dd2B8Ckv.js → mermaid-parser.core-DUt1FNlO.js} +1 -1
  128. package/dist/assets/mermaid.core-pW40dd4u.js +10 -0
  129. package/dist/assets/metadata-admin-pawEBYI9.js +9 -0
  130. package/dist/assets/{mindmap-definition-FAOFIHXS-ITGoV4nW.js → mindmap-definition-THT77NOG-CUcYMB9H.js} +1 -1
  131. package/dist/assets/nav-selection-Dzm_mA3C.js +1 -0
  132. package/dist/assets/packet-AYTQ26CC-CPP93DZD.js +1 -0
  133. package/dist/assets/{pegDiagram-VL7TDLO6-BoRu9yvl.js → pegDiagram-XKGWAZYB-CT1r3sRa.js} +1 -1
  134. package/dist/assets/pie-WAS4IAKB-B-zzBvuc.js +1 -0
  135. package/dist/assets/{pieDiagram-7S7Q4E2Y-DVsM9krU.js → pieDiagram-E7YTZNPT-CSi-V1LQ.js} +3 -3
  136. package/dist/assets/plugin-calendar-BwiiCIjv.js +1 -0
  137. package/dist/assets/plugin-charts-CDGkx7z5.js +7 -0
  138. package/dist/assets/plugin-chatbot-BGnkLzFS.js +122 -0
  139. package/dist/assets/plugin-dashboard-Bj4ldCX6.js +6 -0
  140. package/dist/assets/plugin-form-_fjHxKTV.js +1 -0
  141. package/dist/assets/plugin-gantt-zR8DkpEg.js +63 -0
  142. package/dist/assets/plugin-grid-kkbz4uec.js +9 -0
  143. package/dist/assets/plugin-kanban-DA0eW6yj.js +1 -0
  144. package/dist/assets/plugin-map-DukneTNg.js +1 -0
  145. package/dist/assets/{plugin-markdown-7fyNN0UM.js → plugin-markdown-B7zwZHmn.js} +1 -1
  146. package/dist/assets/plugin-report-DaPtlsJr.js +59 -0
  147. package/dist/assets/plugin-timeline-B6rsNNAK.js +1 -0
  148. package/dist/assets/plugin-tree-DauauLFc.js +1 -0
  149. package/dist/assets/plugin-view-5qxxRyZZ.js +1 -0
  150. package/dist/assets/plugins-views-iYcMmImr.js +4 -0
  151. package/dist/assets/{quadrantDiagram-CIZ2JOQS-C4VzXHnp.js → quadrantDiagram-AXDQQJYC-DUJ_94hm.js} +1 -1
  152. package/dist/assets/radar-RG4KPBEZ-DWmbpYEk.js +1 -0
  153. package/dist/assets/railroad-74A4TZTK-xJ7dMu2F.js +1 -0
  154. package/dist/assets/railroad-abnf-HS5TGJTU-Cw4KG_nE.js +1 -0
  155. package/dist/assets/railroad-ebnf-LZEXJU2U-C0cgrfTl.js +1 -0
  156. package/dist/assets/railroad-peg-WCYAUIDC-DOEGG9oQ.js +1 -0
  157. package/dist/assets/{railroadDiagram-AXF67PYL-DqZ3yKWv.js → railroadDiagram-O6MQD6OU-CEyfAhzM.js} +1 -1
  158. package/dist/assets/{requirementDiagram-LRYGKXZP-BeH0P3vD.js → requirementDiagram-IS5BZ75X-CAK7hvBg.js} +2 -2
  159. package/dist/assets/{runtime-metadata-persistence-DpS5GXuQ.js → runtime-metadata-persistence-DYPxFzHI.js} +1 -1
  160. package/dist/assets/{sankeyDiagram-W5VNT64P-Bu_tPh-A.js → sankeyDiagram-P5KCCOFB-DgYJh7uz.js} +2 -2
  161. package/dist/assets/{sequenceDiagram-SI44F4Z6-BWEuLn1a.js → sequenceDiagram-WJ2MYXX4-DsQerPtC.js} +1 -1
  162. package/dist/assets/{src-CY2xhbXR.js → src-CVJP2nIc.js} +1 -1
  163. package/dist/assets/src-JX1BkhmR.js +17 -0
  164. package/dist/assets/{src-ClOOPIkS.js → src-S6pzKItc.js} +1 -1
  165. package/dist/assets/src-_DxAIBqo.js +1 -0
  166. package/dist/assets/{stateDiagram-OKZ733FA-Cp7aDYsZ.js → stateDiagram-XQSTLZYL-BJndPKik.js} +1 -1
  167. package/dist/assets/stateDiagram-v2-IH3M54BS-Bi94bTLl.js +1 -0
  168. package/dist/assets/studioEntry-C6G8U-LG.js +1 -0
  169. package/dist/assets/submitRedirect-UXd9NsjL.js +1 -0
  170. package/dist/assets/swimlanes-V6O3JKXN-BiKyiEJr.js +1 -0
  171. package/dist/assets/swimlanesDiagram-JKAHXJPX-DKIR852g.js +8 -0
  172. package/dist/assets/{timeline-definition-Z64GVDOM-BcUiJfLU.js → timeline-definition-24CTP7MA-CW5rY3PX.js} +2 -2
  173. package/dist/assets/treeView-Q6P3EWNA-BcWCBGcU.js +1 -0
  174. package/dist/assets/treemap-WGGIJYW6-DMTEJzXV.js +1 -0
  175. package/dist/assets/ui-components-D2lrjG-t.js +43 -0
  176. package/dist/assets/ui-layout-UUTFXV6S.js +1 -0
  177. package/dist/assets/use-book-data-qUZAxIs0.js +1 -0
  178. package/dist/assets/useActionModal-CkM-zGdy.js +1 -0
  179. package/dist/assets/usePackageL10n-F9isJ9pn.js +1 -0
  180. package/dist/assets/useSettingsLabel-CSZBfUiw.js +1 -0
  181. package/dist/assets/utils-MjUhYVsx.js +1 -0
  182. package/dist/assets/{vendor-charts-BEGSmcjR.js → vendor-charts-CY9WhhzX.js} +1 -1
  183. package/dist/assets/vendor-i18n-C1AQDWux.js +1 -0
  184. package/dist/assets/{vendor-markdown-C_Ip9E_I.js → vendor-markdown-BW_XFZ_b.js} +25 -25
  185. package/dist/assets/vendor-objectstack-BeKUVjuj.js +270 -0
  186. package/dist/assets/{vennDiagram-T6HMQDX7-BKJsL5fS.js → vennDiagram-4TSXK5OY-C79cMc25.js} +1 -1
  187. package/dist/assets/wardley-WFR3VGLG-BRyRizpT.js +1 -0
  188. package/dist/assets/{wardleyDiagram-T6FBY63Y-CZ0aMbYX.js → wardleyDiagram-VM6X3IG4-BAO0_jUk.js} +1 -1
  189. package/dist/assets/{xychartDiagram-ELKLHX3M-BpK2RmQ_.js → xychartDiagram-S5SC5T6Z-BIRd7YRo.js} +3 -3
  190. package/dist/eager-closure.json +318 -0
  191. package/dist/index.html +271 -15
  192. package/package.json +2 -2
  193. package/dist/assets/AdapterProvider-3zTVoQKF.js +0 -3
  194. package/dist/assets/AiPendingActionsPage-DD5DLXIK.js +0 -1
  195. package/dist/assets/ApiConsolePage-CSQNdOPN.js +0 -1
  196. package/dist/assets/AppManagementPage-vRCBT69X.js +0 -1
  197. package/dist/assets/ApprovalsInboxPage-Bft5QF0I.js +0 -1
  198. package/dist/assets/CreateViewDialog-CW0w7Nxc.js +0 -1
  199. package/dist/assets/DashboardView-CTBV4_tx.js +0 -1
  200. package/dist/assets/ExpressionProvider-X1OAB_O-.js +0 -1
  201. package/dist/assets/FlowRunsPage-CUhBLwm-.js +0 -1
  202. package/dist/assets/InterfaceListPage-FCdy-_Q-.js +0 -1
  203. package/dist/assets/ManagedByBadge-Bap9_dqR.js +0 -1
  204. package/dist/assets/MarketplaceAccessDenied-CrK7hygV.js +0 -1
  205. package/dist/assets/MarketplaceInstalledPage-Cv-qDRNA.js +0 -1
  206. package/dist/assets/MarketplacePackagePage-CMS--SE2.js +0 -4
  207. package/dist/assets/MarketplacePage-njErv-tN.js +0 -1
  208. package/dist/assets/MetadataInspector-CNeJqkLQ.js +0 -1
  209. package/dist/assets/MetadataProvider-DwMR1SMR.js +0 -1
  210. package/dist/assets/ObjectDataPage-BVV4yksz.js +0 -1
  211. package/dist/assets/PageView-XUBdr6tb.js +0 -1
  212. package/dist/assets/ProfilePage-ClU0WVRr.js +0 -1
  213. package/dist/assets/PublicFormsPage-a_MNzdQw.js +0 -1
  214. package/dist/assets/RecordDetailView-uf81gH3J.js +0 -11
  215. package/dist/assets/RecordFormPage-CLZcT8Z0.js +0 -1
  216. package/dist/assets/ReportDefaultInspector-DU2azDYd.js +0 -3
  217. package/dist/assets/ReportView-oFhBKNBE.js +0 -2
  218. package/dist/assets/SearchResultsPage-lgNcs7l7.js +0 -1
  219. package/dist/assets/SettingsHub-TQOc7wH3.js +0 -1
  220. package/dist/assets/SettingsView-DAje5pDB.js +0 -1
  221. package/dist/assets/SystemHubPage-DUE-2-vc.js +0 -1
  222. package/dist/assets/architecture-TIHT7OUA-B8Ln-u1a.js +0 -1
  223. package/dist/assets/blockDiagram-VBNYF7ZC-l_P_W7_Y.js +0 -132
  224. package/dist/assets/c4Diagram-5PPSVZJV-CE82HAlO.js +0 -10
  225. package/dist/assets/channel-DowAYf9b.js +0 -1
  226. package/dist/assets/chunk-3NCLNEKW-Z5ckM4mG.js +0 -1
  227. package/dist/assets/chunk-7BUUIJ7U-Bb538aSH.js +0 -1
  228. package/dist/assets/chunk-7Z6QIM7H-m6s_oalL.js +0 -10
  229. package/dist/assets/chunk-I66GZJ75-BsY3mBMx.js +0 -127
  230. package/dist/assets/chunk-J7OUQ5F2-Cl4FNR_k.js +0 -1
  231. package/dist/assets/chunk-JQJVKLGR-BApWxqMA.js +0 -156
  232. package/dist/assets/chunk-NSK5VX7P-BBTxIP6Z.js +0 -2
  233. package/dist/assets/chunk-QR6OTTB3-DJcD7xr-.js +0 -62
  234. package/dist/assets/chunk-RYQCIY6F-CnMsR_qh.js +0 -1
  235. package/dist/assets/chunk-UBXNYLIW-B7z1tp3V.js +0 -1
  236. package/dist/assets/chunk-W5SLKNZC-BnMc5i0B.js +0 -1
  237. package/dist/assets/chunk-WRU74C26-MrzCPX2E.js +0 -70
  238. package/dist/assets/chunk-XXDRQBXY-NKBlW2Dm.js +0 -1
  239. package/dist/assets/chunk-ZIRB5QZD-O39ZBUk3.js +0 -32
  240. package/dist/assets/classDiagram-JCYQIIEL-C4ADaKBz.js +0 -1
  241. package/dist/assets/classDiagram-v2-OCEON4UE-C4ADaKBz.js +0 -1
  242. package/dist/assets/createDerive-xZXxMz1g.js +0 -1
  243. package/dist/assets/cynefin-VYW2F7L2-exAq6djZ.js +0 -1
  244. package/dist/assets/cytoscape.esm-B-NFISlW.js +0 -321
  245. package/dist/assets/dagre-Buvkdvvj.js +0 -1
  246. package/dist/assets/dagre-VZM6K2ZE-B5E8-xuM.js +0 -4
  247. package/dist/assets/dist-jor1XT9f.js +0 -5
  248. package/dist/assets/erDiagram-JOGREHBK-BU4b8mUv.js +0 -85
  249. package/dist/assets/eventmodeling-45OFAUF4-DVTVIsGT.js +0 -1
  250. package/dist/assets/flowDiagram-UKHOOZJN-BDHHPApJ.js +0 -1
  251. package/dist/assets/framework-LCCQTTcs.js +0 -47
  252. package/dist/assets/getIcon-Bnm_i39L.js +0 -1
  253. package/dist/assets/gitGraph-TEB2WS4Q-DizXBl0d.js +0 -1
  254. package/dist/assets/i18n-DGSduXFT.js +0 -9
  255. package/dist/assets/index-ZtYnn1PE.css +0 -2
  256. package/dist/assets/index-mpVXni3j.js +0 -2
  257. package/dist/assets/info-DKCQHKI2-CfAGND28.js +0 -1
  258. package/dist/assets/infrastructure-CerjT_c2.js +0 -3
  259. package/dist/assets/map-BaFkSB1l.js +0 -1
  260. package/dist/assets/mermaid-GHXKKRXX-DQTMu5TJ.js +0 -1
  261. package/dist/assets/mermaid.core-BwiBFu_S.js +0 -10
  262. package/dist/assets/metadata-admin-C_DEFfDE.js +0 -25
  263. package/dist/assets/packet-7NZHBO7P-DeymwuCa.js +0 -1
  264. package/dist/assets/pie-RZYD4A2V-C2S5u8nr.js +0 -1
  265. package/dist/assets/plugin-calendar-ClpbcK3u.js +0 -1
  266. package/dist/assets/plugin-charts-Cq0LpABN.js +0 -7
  267. package/dist/assets/plugin-chatbot-Cq7rZtnW.js +0 -120
  268. package/dist/assets/plugin-dashboard-C8Ohdrxi.js +0 -6
  269. package/dist/assets/plugin-form-B7CBtYvZ.js +0 -1
  270. package/dist/assets/plugin-gantt-ChkG9_UG.js +0 -64
  271. package/dist/assets/plugin-grid-D49BBhCX.js +0 -8
  272. package/dist/assets/plugin-kanban-BsTsRjoP.js +0 -1
  273. package/dist/assets/plugin-map-CQAe4Yh6.js +0 -1
  274. package/dist/assets/plugin-report-01bEGHuR.js +0 -59
  275. package/dist/assets/plugin-timeline-Dw4Lj2Rz.js +0 -1
  276. package/dist/assets/plugin-tree-DW0XC55y.js +0 -1
  277. package/dist/assets/plugin-view-B9yCVdSX.js +0 -1
  278. package/dist/assets/plugins-views-BaBStVok.js +0 -4
  279. package/dist/assets/radar-I7S5WNFK-DzcfTC8k.js +0 -1
  280. package/dist/assets/railroad-3IZDKUUU-DT2-gzup.js +0 -1
  281. package/dist/assets/railroad-abnf-AHOZXSZD-BvCkhVdg.js +0 -1
  282. package/dist/assets/railroad-ebnf-EBAXGLYW-rvjxEE4k.js +0 -1
  283. package/dist/assets/railroad-peg-LSFZ7HO6-BIzZt1tD.js +0 -1
  284. package/dist/assets/skeletons-DVwGbFUS.js +0 -1
  285. package/dist/assets/src-BA9h8a8o.js +0 -1
  286. package/dist/assets/src-Ctj_ivDh.js +0 -19
  287. package/dist/assets/stateDiagram-v2-UEYNNEHI-DaTg8C5m.js +0 -1
  288. package/dist/assets/swimlanes-SLNWSIFB-wrx1JN6o.js +0 -1
  289. package/dist/assets/swimlanesDiagram-ULZ7WXOC-Bqz9GVuM.js +0 -8
  290. package/dist/assets/treeView-QDETBFTQ-DKZwqlNb.js +0 -1
  291. package/dist/assets/treemap-6X3UGDF4-Bqsldamv.js +0 -1
  292. package/dist/assets/ui-components-3mb69z8L.js +0 -42
  293. package/dist/assets/ui-layout-DpuFph25.js +0 -1
  294. package/dist/assets/use-book-data-BZg_051K.js +0 -1
  295. package/dist/assets/useActionModal-Z2yDiihK.js +0 -1
  296. package/dist/assets/usePackageL10n-Cy-u65Zo.js +0 -1
  297. package/dist/assets/useSettingsLabel-CvZKl8CQ.js +0 -1
  298. package/dist/assets/vendor-i18n-Cpia2wlg.js +0 -1
  299. package/dist/assets/vendor-objectstack-DGpW4oR-.js +0 -158
  300. package/dist/assets/wardley-OPB4EBWU-C_U_bbc2.js +0 -1
  301. /package/dist/assets/{sizeCapture-X5ZJPWSS-B0uUizjq.js → sizeCapture-INFHLROL-B0uUizjq.js} +0 -0
@@ -1,2 +1,2 @@
1
- import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{_ as t,b as n,r}from"./vendor-react-CsWFRkED.js";import{Gr as i}from"./framework-LCCQTTcs.js";import{vn as a}from"./ui-components-3mb69z8L.js";var o=e(n(),1),s=r(),c=o.lazy(()=>t(()=>import(`./MonacoImpl-Cu_-ISwm.js`),[],import.meta.url)),l=({schema:e,value:t,onChange:n})=>(0,s.jsx)(o.Suspense,{fallback:(0,s.jsx)(a,{className:`w-full h-[400px]`}),children:(0,s.jsx)(c,{value:t??e.value,language:e.language,theme:e.theme,height:e.height,onChange:n??e.onChange,readOnly:e.readOnly,className:e.className})});i.register(`code-editor`,l,{namespace:`plugin-editor`,label:`Code Editor`,category:`plugin`,inputs:[{name:`value`,type:`string`,label:`Code`,defaultValue:``},{name:`language`,type:`enum`,label:`Language`,enum:[`javascript`,`typescript`,`python`,`json`,`html`,`css`],defaultValue:`javascript`},{name:`theme`,type:`enum`,label:`Theme`,enum:[`vs-dark`,`light`],defaultValue:`vs-dark`},{name:`height`,type:`string`,label:`Height`,defaultValue:`400px`},{name:`readOnly`,type:`boolean`,label:`Read Only`,defaultValue:!1}],defaultProps:{value:`// Write your code here
1
+ import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{_ as t,b as n,r}from"./vendor-react-CsWFRkED.js";import{Qr as i}from"./framework-BfSv4Kb0.js";import{gn as a}from"./ui-components-D2lrjG-t.js";var o=e(n(),1),s=r(),c=o.lazy(()=>t(()=>import(`./MonacoImpl-Cu_-ISwm.js`),[],import.meta.url)),l=({schema:e,value:t,onChange:n})=>(0,s.jsx)(o.Suspense,{fallback:(0,s.jsx)(a,{className:`w-full h-[400px]`}),children:(0,s.jsx)(c,{value:t??e.value,language:e.language,theme:e.theme,height:e.height,onChange:n??e.onChange,readOnly:e.readOnly,className:e.className})});i.register(`code-editor`,l,{namespace:`plugin-editor`,label:`Code Editor`,category:`plugin`,inputs:[{name:`value`,type:`string`,label:`Code`,defaultValue:``},{name:`language`,type:`enum`,label:`Language`,enum:[`javascript`,`typescript`,`python`,`json`,`html`,`css`],defaultValue:`javascript`},{name:`theme`,type:`enum`,label:`Theme`,enum:[`vs-dark`,`light`],defaultValue:`vs-dark`},{name:`height`,type:`string`,label:`Height`,defaultValue:`400px`},{name:`readOnly`,type:`boolean`,label:`Read Only`,defaultValue:!1}],defaultProps:{value:`// Write your code here
2
2
  console.log("Hello, World!");`,language:`javascript`,theme:`vs-dark`,height:`400px`,readOnly:!1}});export{l as CodeEditorRenderer};
@@ -0,0 +1 @@
1
+ import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{b as t,n,r,t as i}from"./vendor-react-CsWFRkED.js";import"./data-adapter-DL25qpAe.js";import{Dr as a,Fn as o,J as s,Qr as c,Tr as l,kr as u,n as d,q as f,vt as p,yr as m}from"./framework-BfSv4Kb0.js";import{a as h,o as g,p as _}from"./i18n-locales-Bz4c8KXc.js";import{$a as v,$r as y,Ba as b,Ca as x,Cc as S,Cs as C,Da as w,Dc as T,Eo as E,Fs as D,Gc as O,Gs as k,Ha as A,Ho as j,Jo as M,Ka as N,Ko as P,La as F,Ls as ee,Ma as I,Ms as te,Ni as L,Oo as ne,Os as R,Pa as z,Pi as re,Qc as ie,Qr as ae,Ri as oe,Rs as se,Si as B,Ss as ce,Tc as V,To as le,Va as ue,Vi as de,Wa as fe,Zo as pe,_i as me,_o as he,aa as H,ba as ge,bi as U,do as _e,fa as ve,fc as ye,fo as be,gc as xe,hc as Se,hi as Ce,io as we,is as Te,js as Ee,ka as De,ko as Oe,mc as ke,ni as Ae,pc as je,po as Me,qi as Ne,qo as Pe,to as Fe,ui as Ie,us as Le,vi as Re,wi as ze,wo as Be,xo as Ve,yc as He,yi as Ue,zo as We}from"./ui-components-D2lrjG-t.js";import{a as W,o as G,r as K}from"./vendor-ui-utils-BFw4cGI6.js";import{n as Ge,r as Ke}from"./plugin-form-_fjHxKTV.js";import{i as qe}from"./plugin-grid-kkbz4uec.js";var q=e(t(),1);function Je(e){return e||(typeof window<`u`&&window.sessionStorage?window.sessionStorage:null)}function Ye(e,t={}){let{maxHistory:n=50,persistKey:r,storage:i}=t,a=Je(i),o=(()=>{if(!r||!a)return null;try{let e=a.getItem(r);if(!e)return null;let t=JSON.parse(e);if(t&&t.v===1&&Array.isArray(t.past)&&Array.isArray(t.future))return t}catch{}return null})(),[s,c]=(0,q.useState)(o?.current??e),l=(0,q.useRef)(o?.past??[]),u=(0,q.useRef)(o?.future??[]),[,d]=(0,q.useState)(0),f=(0,q.useCallback)(()=>d(e=>e+1),[]);(0,q.useEffect)(()=>{if(!(!r||!a))try{let e={v:1,past:l.current,current:s,future:u.current};a.setItem(r,JSON.stringify(e))}catch{}},[s,r,a]);let p=(0,q.useCallback)(e=>{c(t=>(l.current=[...l.current.slice(-(n-1)),t],u.current=[],e)),f()},[n,f]),m=(0,q.useCallback)(()=>{l.current.length!==0&&(c(e=>{let t=[...l.current],n=t.pop();return l.current=t,u.current=[e,...u.current],n}),f())},[f]),h=(0,q.useCallback)(()=>{u.current.length!==0&&(c(e=>{let t=[...u.current],n=t.shift();return u.current=t,l.current=[...l.current,e],n}),f())},[f]),g=(0,q.useCallback)(e=>{l.current=[],u.current=[],c(e),f()},[f]),_=(0,q.useCallback)(()=>{if(!(!r||!a))try{a.removeItem(r)}catch{}},[r,a]),v=(0,q.useCallback)(e=>{let t=l.current.length+1+u.current.length;e<0||e>=t||e!==l.current.length&&(c(t=>{let n=[...l.current,t,...u.current],r=n[e];return l.current=n.slice(0,e),u.current=n.slice(e+1),r}),f())},[f]);return{current:s,canUndo:l.current.length>0,canRedo:u.current.length>0,undoCount:l.current.length,redoCount:u.current.length,timeline:[...l.current,s,...u.current],currentIndex:l.current.length,push:p,undo:m,redo:h,reset:g,jumpTo:v,clearPersisted:_}}function Xe(){let[e,t]=(0,q.useState)(!1),[n,r]=(0,q.useState)(``),[i,a]=(0,q.useState)(``),o=(0,q.useRef)(null);return{isOpen:e,title:n,message:i,confirm:(0,q.useCallback)((e,n)=>(r(e),a(n),t(!0),new Promise(e=>{o.current=e})),[]),onConfirm:(0,q.useCallback)(()=>{t(!1),o.current?.(!0),o.current=null},[]),onCancel:(0,q.useCallback)(()=>{t(!1),o.current?.(!1),o.current=null},[])}}function Ze(){let[e,t]=(0,q.useState)(new Set);return{selectedIds:e,toggle:(0,q.useCallback)((e,n=!1)=>{t(t=>{let r=new Set(n?t:[]);return t.has(e)&&n?r.delete(e):r.add(e),r})},[]),selectOne:(0,q.useCallback)(e=>{t(new Set([e]))},[]),selectMany:(0,q.useCallback)(e=>{t(new Set(e))},[]),clearSelection:(0,q.useCallback)(()=>{t(new Set)},[]),isSelected:(0,q.useCallback)(t=>e.has(t),[e]),count:e.size}}function Qe(){let[e,t]=(0,q.useState)(null);return{clipboard:e,copy:(0,q.useCallback)(e=>{t(structuredClone(e))},[]),paste:(0,q.useCallback)(()=>e?structuredClone(e):null,[e]),hasContent:e!==null}}function $e(e={}){let{minZoom:t=.25,maxZoom:n=3,zoomStep:r=.1,initialZoom:i=1}=e,[a,o]=(0,q.useState)(i),[s,c]=(0,q.useState)({x:0,y:0}),l=(0,q.useRef)(!1),u=(0,q.useRef)({x:0,y:0}),d=(0,q.useCallback)(e=>Math.min(n,Math.max(t,+e.toFixed(2))),[t,n]);return{zoom:a,panOffset:s,zoomIn:(0,q.useCallback)(()=>o(e=>d(e+r)),[d,r]),zoomOut:(0,q.useCallback)(()=>o(e=>d(e-r)),[d,r]),resetZoom:(0,q.useCallback)(()=>{o(1),c({x:0,y:0})},[]),setZoom:(0,q.useCallback)(e=>o(d(e)),[d]),handleWheel:(0,q.useCallback)(e=>{if(e.ctrlKey||e.metaKey){e.preventDefault();let t=e.deltaY>0?-r:r;o(e=>d(e+t))}},[d,r]),startPan:(0,q.useCallback)(e=>{if(e.button===1||e.button===0&&e.altKey){e.preventDefault(),l.current=!0,u.current={x:e.clientX,y:e.clientY};let t=e=>{if(!l.current)return;let t=e.clientX-u.current.x,n=e.clientY-u.current.y;u.current={x:e.clientX,y:e.clientY},c(e=>({x:e.x+t,y:e.y+n}))},n=()=>{l.current=!1,document.removeEventListener(`mousemove`,t),document.removeEventListener(`mouseup`,n)};document.addEventListener(`mousemove`,t),document.addEventListener(`mouseup`,n)}},[]),transformStyle:{transform:`translate(${s.x}px, ${s.y}px) scale(${a})`,transformOrigin:`0 0`}}}var J=r();function et(...e){return W(G(e))}function tt({isOpen:e,title:t,message:n,confirmLabel:r=`Delete`,cancelLabel:i=`Cancel`,destructive:a=!0,onConfirm:o,onCancel:s}){let c=(0,q.useRef)(null);return(0,q.useEffect)(()=>{let t=c.current;t&&(e&&!t.open?t.showModal():!e&&t.open&&t.close())},[e]),e?(0,J.jsx)(`dialog`,{ref:c,className:`fixed inset-0 z-50 m-auto rounded-lg border bg-background p-0 shadow-lg backdrop:bg-black/50`,onClose:s,"aria-labelledby":`confirm-title`,"aria-describedby":`confirm-message`,children:(0,J.jsxs)(`div`,{className:`w-80 p-6`,children:[(0,J.jsxs)(`div`,{className:`flex items-center gap-3 mb-4`,children:[a&&(0,J.jsx)(`div`,{className:`flex h-10 w-10 items-center justify-center rounded-full bg-destructive/10`,children:(0,J.jsx)(Ue,{className:`h-5 w-5 text-destructive`})}),(0,J.jsx)(`h2`,{id:`confirm-title`,className:`text-lg font-semibold`,children:t})]}),(0,J.jsx)(`p`,{id:`confirm-message`,className:`text-sm text-muted-foreground mb-6`,children:n}),(0,J.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,J.jsx)(`button`,{type:`button`,onClick:s,className:`px-4 py-2 text-sm rounded-md border hover:bg-accent`,children:i}),(0,J.jsx)(`button`,{type:`button`,onClick:o,className:et(`px-4 py-2 text-sm rounded-md font-medium`,a?`bg-destructive text-destructive-foreground hover:bg-destructive/90`:`bg-primary text-primary-foreground hover:bg-primary/90`),autoFocus:!0,children:r})]})]})}):null}function nt(...e){return W(G(e))}function rt({title:e=`Properties`,fields:t,onChange:n,className:r}){let[i,a]=(0,q.useState)(new Set),o=(0,q.useCallback)(e=>{a(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),s=t.reduce((e,t)=>{let n=t.group??`General`;return e[n]||(e[n]=[]),e[n].push(t),e},{});return(0,J.jsxs)(`div`,{className:nt(`flex flex-col`,r),role:`region`,"aria-label":e,children:[(0,J.jsx)(`div`,{className:`p-3 border-b font-medium text-sm`,children:e}),(0,J.jsxs)(`div`,{className:`flex-1 overflow-y-auto`,children:[Object.entries(s).map(([e,t])=>(0,J.jsxs)(`div`,{className:`border-b last:border-b-0`,children:[(0,J.jsxs)(`button`,{type:`button`,onClick:()=>o(e),className:`w-full flex items-center gap-1 px-3 py-2 text-xs font-medium text-muted-foreground hover:bg-accent/50`,children:[i.has(e)?(0,J.jsx)(je,{className:`h-3 w-3`}):(0,J.jsx)(Se,{className:`h-3 w-3`}),e]}),!i.has(e)&&(0,J.jsx)(`div`,{className:`px-3 pb-2 space-y-2`,children:t.map(e=>(0,J.jsx)(it,{field:e,onChange:n},e.name))})]},e)),t.length===0&&(0,J.jsx)(`div`,{className:`p-3 text-xs text-muted-foreground text-center`,children:`Select an element to edit its properties`})]})]})}function it({field:e,onChange:t}){let n=n=>{t(e.name,n)};return(0,J.jsxs)(`div`,{className:`space-y-1`,children:[(0,J.jsx)(`label`,{className:`text-xs text-muted-foreground`,children:e.label}),e.type===`text`&&(0,J.jsx)(`input`,{type:`text`,value:String(e.value??``),onChange:e=>n(e.target.value),className:`w-full px-2 py-1 text-xs border rounded bg-background`}),e.type===`number`&&(0,J.jsx)(`input`,{type:`number`,value:Number(e.value??0),onChange:e=>n(Number(e.target.value)),className:`w-full px-2 py-1 text-xs border rounded bg-background`}),e.type===`boolean`&&(0,J.jsxs)(`label`,{className:`flex items-center gap-2`,children:[(0,J.jsx)(`input`,{type:`checkbox`,checked:!!e.value,onChange:e=>n(e.target.checked),className:`rounded`}),(0,J.jsx)(`span`,{className:`text-xs`,children:e.value?`Yes`:`No`})]}),e.type===`select`&&(0,J.jsx)(`select`,{value:String(e.value??``),onChange:e=>n(e.target.value),className:`w-full px-2 py-1 text-xs border rounded bg-background`,children:e.options?.map(e=>(0,J.jsx)(`option`,{value:e.value,children:e.label},e.value))}),e.type===`color`&&(0,J.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,J.jsx)(`input`,{type:`color`,value:String(e.value??`#000000`),onChange:e=>n(e.target.value),className:`h-6 w-6 rounded border cursor-pointer`}),(0,J.jsx)(`span`,{className:`text-xs font-mono`,children:String(e.value??`#000000`)})]}),e.type===`textarea`&&(0,J.jsx)(`textarea`,{value:String(e.value??``),onChange:e=>n(e.target.value),className:`w-full px-2 py-1 text-xs border rounded bg-background resize-y`,rows:3}),e.description&&(0,J.jsx)(`p`,{className:`text-[0.65rem] text-muted-foreground/70`,children:e.description})]})}function at(...e){return W(G(e))}function ot({items:e,canvasWidth:t,canvasHeight:n,position:r=`bottom-right`,size:i=150,className:a}){let o=Math.min(i/t,i/n),s=t*o,c=n*o;return(0,J.jsx)(`div`,{className:at(`absolute border rounded bg-background/90 shadow-sm overflow-hidden`,{"top-left":`top-2 left-2`,"top-right":`top-2 right-2`,"bottom-left":`bottom-2 left-2`,"bottom-right":`bottom-2 right-2`}[r],a),role:`img`,"aria-label":`Canvas minimap`,children:(0,J.jsxs)(`svg`,{width:s,height:c,viewBox:`0 0 ${t} ${n}`,children:[(0,J.jsx)(`rect`,{width:t,height:n,fill:`hsl(var(--muted))`,opacity:`0.3`}),e.map(e=>(0,J.jsx)(`rect`,{x:e.x,y:e.y,width:e.width,height:e.height,fill:e.selected?`hsl(var(--primary))`:e.color??`hsl(var(--foreground) / 0.3)`,rx:`2`},e.id))]})})}var st=(0,q.createContext)(null);st.displayName=`CollaborationContext`;function ct(){return(0,q.useContext)(st)}function Y(...e){return W(G(e))}function lt({canvas:e={width:1200,height:800,gridSize:8,showGrid:!0,snapToGrid:!0},components:t=[],palette:n=ut,showComponentTree:r=!0,undoRedo:i=!0,propertyEditor:a=!0,readOnly:o=!1,showMinimap:s=!1,onChange:c,className:l}){let u=Ye(t),d=u.current,f=(0,q.useCallback)(e=>{u.push(e),c?.(e)},[u,c]),p=$e({initialZoom:e.zoom??1}),{zoom:m}=p,h=Ze(),g=(0,q.useMemo)(()=>{let e=Array.from(h.selectedIds);return e.length>0?e[0]:null},[h.selectedIds]),_=(0,q.useMemo)(()=>d.find(e=>e.id===g),[d,g]),v=Qe(),y=Xe(),b=ct(),x=(0,q.useCallback)(e=>{b&&b.sendOperation({...e,userId:b.currentUserId??``})},[b]),[S,C]=(0,q.useState)(!0),[T,E]=(0,q.useState)(!0),[O,A]=(0,q.useState)(s),j=(0,q.useRef)(null),M=(0,q.useRef)(null),N=(0,q.useCallback)(t=>!e.snapToGrid||!e.gridSize?t:Math.round(t/e.gridSize)*e.gridSize,[e.snapToGrid,e.gridSize]),F=(0,q.useCallback)((e,t)=>{if(o)return;let r=n.flatMap(e=>e.items).find(t=>t.type===e),i=r?.defaultSize,a={id:`comp-${Date.now()}`,type:e,label:t,position:{x:100,y:100,width:i?.width??200,height:i?.height??100},props:r?.defaultProps??{}},s=[...d,a];f(s),h.selectOne(a.id),x({type:`insert`,elementId:a.id,data:{component:a}})},[d,o,n,f,h,x]),ee=(0,q.useCallback)(e=>{if(o)return;let t=d.filter(t=>t.id!==e);f(t),h.isSelected(e)&&h.clearSelection(),x({type:`delete`,elementId:e,data:{}})},[d,o,f,h,x]),I=(0,q.useCallback)(async()=>{if(o||h.count===0||!await y.confirm(`Delete components`,`Are you sure you want to delete ${h.count} component${h.count>1?`s`:``}?`))return;let e=h.selectedIds,t=d.filter(t=>!e.has(t.id));f(t),h.clearSelection(),e.forEach(e=>{x({type:`delete`,elementId:e,data:{}})})},[o,h,y,d,f,x]),te=(0,q.useCallback)((e,t)=>{if(o||!g)return;let n=d.map(n=>n.id===g?e===`label`?{...n,label:String(t)}:e===`x`?{...n,position:{...n.position,x:Number(t)}}:e===`y`?{...n,position:{...n.position,y:Number(t)}}:e===`width`?{...n,position:{...n.position,width:Number(t)}}:e===`height`?{...n,position:{...n.position,height:Number(t)}}:{...n,props:{...n.props,[e]:t}}:n);f(n),x({type:`update`,elementId:g,data:{[e]:t}})},[o,g,d,f,x]),L=(0,q.useCallback)(()=>{let e=h.selectedIds;if(e.size===0)return;let t=d.filter(t=>e.has(t.id));v.copy(t)},[h,d,v]),ne=(0,q.useCallback)(()=>{if(o)return;let e=v.paste();if(!e||e.length===0)return;let t=0,n=e.map(e=>({...e,id:`comp-${Date.now()}-${++t}-${Math.random().toString(36).slice(2,7)}`,position:{...e.position,x:e.position.x+20,y:e.position.y+20}})),r=[...d,...n];f(r),h.selectMany(n.map(e=>e.id)),n.forEach(e=>{x({type:`insert`,elementId:e.id,data:{component:e}})})},[o,v,d,f,h,x]),R=(0,q.useCallback)((e,t)=>{o||(j.current={id:t.id,startX:e.clientX,startY:e.clientY},e.dataTransfer.effectAllowed=`move`,e.dataTransfer.setData(`text/plain`,t.id))},[o]),z=(0,q.useCallback)(e=>{e.preventDefault(),e.dataTransfer.dropEffect=`move`},[]),re=(0,q.useCallback)(e=>{e.preventDefault();let t=j.current;if(!t||o)return;let n=(e.clientX-t.startX)/m,r=(e.clientY-t.startY)/m,i=d.map(e=>e.id===t.id?{...e,position:{...e.position,x:N(e.position.x+n),y:N(e.position.y+r)}}:e);f(i),x({type:`move`,elementId:t.id,data:{}}),j.current=null},[o,m,d,f,N,x]),ie=(0,q.useMemo)(()=>_?[{name:`label`,label:`Label`,type:`text`,value:_.label??``,group:`General`},{name:`x`,label:`X`,type:`number`,value:_.position.x,group:`Position`},{name:`y`,label:`Y`,type:`number`,value:_.position.y,group:`Position`},{name:`width`,label:`Width`,type:`number`,value:_.position.width,group:`Size`},{name:`height`,label:`Height`,type:`number`,value:_.position.height,group:`Size`}]:[],[_]),ae=(0,q.useMemo)(()=>d.map(e=>({id:e.id,x:e.position.x,y:e.position.y,width:typeof e.position.width==`number`?e.position.width:100,height:typeof e.position.height==`number`?e.position.height:50,selected:h.isSelected(e.id)})),[d,h]);return(0,q.useEffect)(()=>{let e=M.current;if(!e)return;let t=e=>{let t=[`INPUT`,`TEXTAREA`,`SELECT`].includes(e.target.tagName),n=e.ctrlKey||e.metaKey;if((e.key===`Delete`||e.key===`Backspace`)&&h.count>0&&!t){e.preventDefault(),I();return}if(e.key===`Escape`){h.clearSelection();return}if(!t){if(n&&e.key===`z`&&!e.shiftKey&&i&&!o){e.preventDefault(),u.undo();return}if(n&&(e.key===`z`&&e.shiftKey||e.key===`y`)&&i&&!o){e.preventDefault(),u.redo();return}if(n&&e.key===`c`){e.preventDefault(),L();return}if(n&&e.key===`v`&&!o){e.preventDefault(),ne();return}if(n&&e.key===`a`){e.preventDefault(),h.selectMany(d.map(e=>e.id));return}}};return e.addEventListener(`keydown`,t),()=>e.removeEventListener(`keydown`,t)},[h,I,i,o,u,L,ne,d]),(0,J.jsxs)(`div`,{ref:M,tabIndex:0,className:Y(`flex h-full w-full border rounded-lg overflow-hidden bg-background`,l),children:[!o&&(0,J.jsx)(`div`,{className:Y(`border-r bg-muted/30 flex flex-col transition-[width] duration-200`,S?`w-60`:`w-0 overflow-hidden`),role:`region`,"aria-label":`Component palette`,children:S&&(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(`div`,{className:`p-3 border-b font-medium text-sm`,children:`Components`}),(0,J.jsx)(`div`,{className:`flex-1 overflow-y-auto p-2`,children:n.map(e=>(0,J.jsxs)(`div`,{className:`mb-3`,children:[(0,J.jsx)(`div`,{className:`text-xs font-medium text-muted-foreground px-2 py-1 uppercase`,children:e.label}),e.items.map(e=>(0,J.jsxs)(`button`,{type:`button`,onClick:()=>F(e.type,e.label),className:`w-full flex items-center gap-2 px-2 py-1.5 text-sm rounded hover:bg-accent text-left`,children:[(0,J.jsx)(w,{className:`h-3 w-3`}),e.label]},e.type))]},e.name))})]})}),(0,J.jsxs)(`div`,{className:`flex-1 flex flex-col min-w-0`,children:[(0,J.jsxs)(`div`,{className:`flex items-center gap-2 p-2 border-b bg-muted/20`,role:`toolbar`,"aria-label":`Designer toolbar`,children:[!o&&(0,J.jsx)(`button`,{type:`button`,className:`p-1.5 rounded hover:bg-accent`,title:S?`Collapse palette`:`Expand palette`,"aria-label":S?`Collapse palette`:`Expand palette`,onClick:()=>C(e=>!e),children:(0,J.jsx)(fe,{className:Y(`h-4 w-4`,!S&&`rotate-180`)})}),i&&!o&&(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(`div`,{className:`w-px h-5 bg-border mx-1`}),(0,J.jsx)(`button`,{type:`button`,className:Y(`p-1.5 rounded hover:bg-accent`,!u.canUndo&&`opacity-40 pointer-events-none`),title:`Undo (Ctrl+Z)`,"aria-label":`Undo`,disabled:!u.canUndo,onClick:()=>u.undo(),children:(0,J.jsx)(me,{className:`h-4 w-4`})}),(0,J.jsx)(`button`,{type:`button`,className:Y(`p-1.5 rounded hover:bg-accent`,!u.canRedo&&`opacity-40 pointer-events-none`),title:`Redo (Ctrl+Shift+Z)`,"aria-label":`Redo`,disabled:!u.canRedo,onClick:()=>u.redo(),children:(0,J.jsx)(ge,{className:`h-4 w-4`})}),(0,J.jsx)(`div`,{className:`w-px h-5 bg-border mx-1`})]}),!o&&(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(`button`,{type:`button`,className:Y(`p-1.5 rounded hover:bg-accent`,h.count===0&&`opacity-40 pointer-events-none`),title:`Copy (Ctrl+C)`,"aria-label":`Copy`,disabled:h.count===0,onClick:L,children:(0,J.jsx)(D,{className:`h-4 w-4`})}),(0,J.jsx)(`button`,{type:`button`,className:Y(`p-1.5 rounded hover:bg-accent`,!v.hasContent&&`opacity-40 pointer-events-none`),title:`Paste (Ctrl+V)`,"aria-label":`Paste`,disabled:!v.hasContent,onClick:ne,children:(0,J.jsx)(k,{className:`h-4 w-4`})}),(0,J.jsx)(`div`,{className:`w-px h-5 bg-border mx-1`})]}),!o&&(0,J.jsx)(`button`,{type:`button`,className:Y(`p-1.5 rounded hover:bg-accent`,h.count===0&&`opacity-40 pointer-events-none`),title:`Delete selected`,"aria-label":`Delete selected`,disabled:h.count===0,onClick:I,children:(0,J.jsx)(B,{className:`h-4 w-4`})}),(0,J.jsx)(`button`,{type:`button`,className:`p-1.5 rounded hover:bg-accent`,title:`Preview`,"aria-label":`Preview`,children:(0,J.jsx)(ce,{className:`h-4 w-4`})}),(0,J.jsx)(`button`,{type:`button`,className:Y(`p-1.5 rounded hover:bg-accent`,O&&`bg-accent`),title:`Toggle minimap`,"aria-label":`Toggle minimap`,onClick:()=>A(e=>!e),children:(0,J.jsx)(be,{className:`h-4 w-4`})}),(0,J.jsx)(`div`,{className:`flex-1`}),(0,J.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,J.jsx)(`button`,{type:`button`,className:`p-1 rounded hover:bg-accent text-xs`,"aria-label":`Zoom out`,onClick:p.zoomOut,children:(0,J.jsx)(we,{className:`h-3 w-3`})}),(0,J.jsxs)(`span`,{className:`text-xs text-muted-foreground w-10 text-center`,children:[Math.round(m*100),`%`]}),(0,J.jsx)(`button`,{type:`button`,className:`p-1 rounded hover:bg-accent text-xs`,"aria-label":`Zoom in`,onClick:p.zoomIn,children:(0,J.jsx)(w,{className:`h-3 w-3`})}),(0,J.jsx)(`button`,{type:`button`,className:`p-1 rounded hover:bg-accent text-xs`,"aria-label":`Reset zoom`,onClick:p.resetZoom,children:(0,J.jsx)(_e,{className:`h-3 w-3`})})]}),r&&(0,J.jsx)(`button`,{type:`button`,className:`p-1.5 rounded hover:bg-accent`,title:T?`Collapse panel`:`Expand panel`,"aria-label":T?`Collapse panel`:`Expand panel`,onClick:()=>E(e=>!e),children:(0,J.jsx)(ue,{className:Y(`h-4 w-4`,!T&&`rotate-180`)})})]}),(0,J.jsx)(`div`,{className:`flex-1 overflow-auto bg-muted/10 p-4 relative`,role:`region`,"aria-label":`Design canvas`,onWheel:p.handleWheel,onMouseDown:p.startPan,onDragOver:z,onDrop:re,children:(0,J.jsxs)(`div`,{className:`relative bg-background border rounded shadow-sm mx-auto`,style:{width:e.width*m,height:e.height*m,transform:`translate(${p.panOffset.x}px, ${p.panOffset.y}px)`,backgroundImage:e.showGrid?`radial-gradient(circle, hsl(var(--border)) 1px, transparent 1px)`:void 0,backgroundSize:e.showGrid&&e.gridSize?`${e.gridSize*m}px ${e.gridSize*m}px`:void 0},children:[d.map(e=>{let t=h.isSelected(e.id);return(0,J.jsxs)(`div`,{draggable:!o,onDragStart:t=>R(t,e),className:Y(`absolute border rounded cursor-move select-none transition-shadow`,t?`border-primary ring-2 ring-primary/20 shadow-md`:`border-border hover:border-primary/50`),style:{left:e.position.x*m,top:e.position.y*m,width:typeof e.position.width==`number`?e.position.width*m:e.position.width,height:typeof e.position.height==`number`?e.position.height*m:e.position.height},onClick:t=>h.toggle(e.id,t.shiftKey),children:[(0,J.jsxs)(`div`,{className:`flex items-center gap-1 px-2 py-1 bg-muted/50 text-xs border-b`,children:[(0,J.jsx)(P,{className:`h-3 w-3 text-muted-foreground`}),(0,J.jsx)(`span`,{className:`truncate`,children:e.label??e.type}),!o&&(0,J.jsx)(`button`,{type:`button`,onClick:t=>{t.stopPropagation(),ee(e.id)},className:`ml-auto p-0.5 rounded hover:bg-destructive/10`,"aria-label":`Delete ${e.label??e.type}`,children:(0,J.jsx)(B,{className:`h-3 w-3 text-destructive`})})]}),(0,J.jsx)(`div`,{className:`p-2 text-xs text-muted-foreground`,children:e.type})]},e.id)}),O&&(0,J.jsx)(ot,{items:ae,canvasWidth:e.width,canvasHeight:e.height})]})})]}),r&&(0,J.jsx)(`div`,{className:Y(`border-l bg-muted/30 flex flex-col transition-[width] duration-200`,T?`w-60`:`w-0 overflow-hidden`),role:`region`,"aria-label":`Component tree`,children:T&&(0,J.jsxs)(J.Fragment,{children:[(0,J.jsxs)(`div`,{className:`p-3 border-b font-medium text-sm flex items-center gap-2`,children:[(0,J.jsx)(Oe,{className:`h-4 w-4`}),`Component Tree`]}),(0,J.jsx)(`div`,{className:`flex-1 overflow-y-auto p-2`,children:d.length===0?(0,J.jsx)(`div`,{className:`text-xs text-muted-foreground text-center py-4`,children:`No components added yet. Click a component in the palette to add it to the canvas.`}):d.map(e=>(0,J.jsx)(`button`,{type:`button`,onClick:t=>h.toggle(e.id,t.shiftKey),className:Y(`w-full flex items-center gap-2 px-2 py-1.5 text-sm rounded text-left`,h.isSelected(e.id)?`bg-accent`:`hover:bg-accent/50`),children:(0,J.jsx)(`span`,{className:`truncate`,children:e.label??e.type})},e.id))}),a&&_?(0,J.jsx)(`div`,{className:`border-t`,children:(0,J.jsx)(rt,{title:`Properties – ${_.label??_.type}`,fields:ie,onChange:te})}):_&&(0,J.jsxs)(`div`,{className:`border-t p-3`,children:[(0,J.jsx)(`div`,{className:`text-xs font-medium mb-2`,children:`Properties`}),(0,J.jsxs)(`div`,{className:`text-xs text-muted-foreground space-y-1`,children:[(0,J.jsxs)(`div`,{children:[`Type: `,_.type]}),(0,J.jsxs)(`div`,{children:[`ID: `,_.id]}),(0,J.jsxs)(`div`,{children:[`Position: `,_.position.x,`,`,` `,_.position.y]}),(0,J.jsxs)(`div`,{children:[`Size: `,_.position.width,` ×`,` `,_.position.height]})]})]})]})}),(0,J.jsx)(tt,{isOpen:y.isOpen,title:y.title,message:y.message,onConfirm:y.onConfirm,onCancel:y.onCancel})]})}var ut=[{name:`layout`,label:`Layout`,items:[{type:`container`,label:`Container`,defaultSize:{width:400,height:300}},{type:`flex`,label:`Flex`,defaultSize:{width:400,height:200}},{type:`grid`,label:`Grid`,defaultSize:{width:400,height:300}},{type:`card`,label:`Card`,defaultSize:{width:300,height:200}},{type:`tabs`,label:`Tabs`,defaultSize:{width:400,height:300}}]},{name:`form`,label:`Form`,items:[{type:`input`,label:`Input`,defaultSize:{width:300,height:60}},{type:`textarea`,label:`Textarea`,defaultSize:{width:300,height:120}},{type:`select`,label:`Select`,defaultSize:{width:300,height:60}},{type:`checkbox`,label:`Checkbox`,defaultSize:{width:200,height:40}},{type:`button`,label:`Button`,defaultSize:{width:120,height:40}}]},{name:`data`,label:`Data`,items:[{type:`table`,label:`Table`,defaultSize:{width:600,height:400}},{type:`chart`,label:`Chart`,defaultSize:{width:400,height:300}},{type:`list`,label:`List`,defaultSize:{width:300,height:400}},{type:`statistic`,label:`Statistic`,defaultSize:{width:200,height:100}}]}];function dt(e,t={}){return Ye(e,t)}function ft(...e){return W(G(e))}var pt=[`text`,`number`,`boolean`,`date`,`datetime`,`uuid`,`email`,`url`,`phone`,`json`,`integer`,`float`,`decimal`,`currency`,`percent`,`textarea`,`select`,`multiselect`,`lookup`,`attachment`,`formula`,`autonumber`];function mt(e,t=4,n=280,r=250,i=50,a=50){return e.map((e,o)=>({...e,position:{x:i+o%t*n,y:a+Math.floor(o/t)*r}}))}function ht({entities:e=[],relationships:t=[],canvas:n={width:1200,height:800,showGrid:!0},showRelationshipLabels:r=!0,readOnly:i=!1,onEntitiesChange:a,onRelationshipsChange:o,className:s}){let c=(0,q.useRef)(null),l=dt({entities:e,relationships:t},{maxHistory:50}),{entities:u,relationships:d}=l.current,f=(0,q.useCallback)(e=>{l.push(e),a?.(e.entities),o?.(e.relationships)},[l,a,o]),p=Xe(),m=Ze(),h=m.count>0?Array.from(m.selectedIds)[0]:null,g=Qe(),_=$e({minZoom:.25,maxZoom:3,zoomStep:.1}),v=ct(),[b,x]=(0,q.useState)(!0),[S,C]=(0,q.useState)(!0),[T,E]=(0,q.useState)(null),[O,A]=(0,q.useState)(``),[j,M]=(0,q.useState)(null),[N,P]=(0,q.useState)(``),F=(0,q.useRef)(null),ee=(0,q.useCallback)(()=>{if(i)return;let e=l.current,t={id:`entity-${Date.now()}`,name:`new_entity_${e.entities.length+1}`,label:`New Entity ${e.entities.length+1}`,fields:[{name:`id`,type:`uuid`,primaryKey:!0,required:!0},{name:`created_at`,type:`datetime`,required:!0},{name:`updated_at`,type:`datetime`,required:!0}],position:{x:50+e.entities.length%4*280,y:50+Math.floor(e.entities.length/4)*250}},n={entities:[...e.entities,t],relationships:e.relationships};f(n),m.selectOne(t.id),v?.sendOperation({type:`insert`,userId:v?.currentUserId??``,elementId:t.id,data:{name:t.name,label:t.label}})},[i,l,f,m,v]),I=(0,q.useCallback)(async e=>{if(i)return;let t=u.find(t=>t.id===e);if(!await p.confirm(`Delete Entity`,`Are you sure you want to delete "${t?.label??e}"? This action cannot be undone.`))return;let n=l.current,r={entities:n.entities.filter(t=>t.id!==e),relationships:n.relationships.filter(t=>t.sourceEntity!==e&&t.targetEntity!==e)};f(r),m.isSelected(e)&&m.clearSelection(),v?.sendOperation({type:`delete`,userId:v?.currentUserId??``,elementId:e,data:{}})},[i,u,p,l,f,m,v]),L=(0,q.useCallback)(async()=>{if(i||m.count===0)return;let e=Array.from(m.selectedIds);if(!await p.confirm(`Delete Entities`,`Are you sure you want to delete ${e.length} selected entity(s)? This action cannot be undone.`))return;let t=l.current,n=new Set(e),r={entities:t.entities.filter(e=>!n.has(e.id)),relationships:t.relationships.filter(e=>!n.has(e.sourceEntity)&&!n.has(e.targetEntity))};f(r),m.clearSelection()},[i,m,p,l,f]),ne=(0,q.useCallback)(()=>{if(i)return;let e=l.current,t={entities:mt(e.entities),relationships:e.relationships};f(t)},[i,l,f]),R=(0,q.useCallback)(()=>{let e=u.filter(e=>m.isSelected(e.id));e.length>0&&g.copy(e)},[u,m,g]),z=(0,q.useCallback)(()=>{if(i)return;let e=g.paste();if(!e||e.length===0)return;let t=l.current,n=e.map((e,t)=>({...e,id:`entity-${Date.now()}-${t}`,name:`${e.name}_copy`,label:`${e.label} (Copy)`,position:{x:e.position.x+30,y:e.position.y+30}})),r={entities:[...t.entities,...n],relationships:t.relationships};f(r),m.selectMany(n.map(e=>e.id))},[i,g,l,f,m]),re=(0,q.useCallback)(e=>{if(i)return;let t=l.current,n={entities:t.entities.map(t=>{if(t.id!==e)return t;let n={name:`field_${t.fields.length+1}`,type:`text`,required:!1};return{...t,fields:[...t.fields,n]}}),relationships:t.relationships};f(n)},[i,l,f]),ie=(0,q.useCallback)((e,t,n)=>{i||(E({entityId:e,fieldIndex:t}),A(n))},[i]),oe=(0,q.useCallback)(()=>{if(!T)return;let e=O.trim();if(e===``){E(null);return}let t=l.current,n={entities:t.entities.map(t=>{if(t.id!==T.entityId)return t;let n=t.fields.map((t,n)=>n===T.fieldIndex?{...t,name:e}:t);return{...t,fields:n}}),relationships:t.relationships};f(n),E(null)},[T,O,l,f]),se=(0,q.useCallback)(()=>{E(null)},[]),ce=(0,q.useCallback)((e,t)=>{i||(M(e),P(t))},[i]),V=(0,q.useCallback)(()=>{if(!j)return;let e=N.trim();if(e===``){M(null);return}let t=l.current,n={entities:t.entities.map(t=>t.id===j?{...t,label:e}:t),relationships:t.relationships};f(n),M(null)},[j,N,l,f]),ue=(0,q.useCallback)(()=>{M(null)},[]),de=(0,q.useCallback)((e,t,n)=>{if(i)return;let r=l.current,a={entities:r.entities.map(r=>{if(r.id!==e)return r;let i=r.fields.map((e,r)=>r===t?{...e,type:n}:e);return{...r,fields:i}}),relationships:r.relationships};f(a)},[i,l,f]),fe=(0,q.useCallback)((e,t)=>{if(i||!u.find(e=>e.id===t))return;let n=e.target.getBoundingClientRect();F.current={entityId:t,offsetX:e.clientX-n.left,offsetY:e.clientY-n.top},e.dataTransfer.effectAllowed=`move`,e.dataTransfer.setData(`text/plain`,t)},[i,u]),pe=(0,q.useCallback)(e=>{e.preventDefault(),e.dataTransfer.dropEffect=`move`},[]),he=(0,q.useCallback)(e=>{if(e.preventDefault(),!F.current)return;let t=e.currentTarget.getBoundingClientRect(),n=_.zoom,r=(e.clientX-t.left-_.panOffset.x)/n-F.current.offsetX,i=(e.clientY-t.top-_.panOffset.y)/n-F.current.offsetY,a=l.current,o={entities:a.entities.map(e=>e.id===F.current.entityId?{...e,position:{x:Math.max(0,Math.round(r)),y:Math.max(0,Math.round(i))}}:e),relationships:a.relationships};f(o),F.current=null},[_.zoom,_.panOffset,l,f]),H=h?u.find(e=>e.id===h):null,U=H?[{name:`name`,label:`Name`,type:`text`,value:H.name,group:`General`},{name:`label`,label:`Label`,type:`text`,value:H.label,group:`General`},{name:`description`,label:`Description`,type:`textarea`,value:H.description??``,group:`General`},{name:`color`,label:`Color`,type:`color`,value:H.color??`#3b82f6`,group:`Appearance`},{name:`position.x`,label:`X Position`,type:`number`,value:H.position.x,group:`Position`},{name:`position.y`,label:`Y Position`,type:`number`,value:H.position.y,group:`Position`}]:[],_e=(0,q.useCallback)((e,t)=>{if(!h)return;let n=l.current,r={entities:n.entities.map(n=>n.id===h?e===`position.x`?{...n,position:{...n.position,x:Number(t)}}:e===`position.y`?{...n,position:{...n.position,y:Number(t)}}:{...n,[e]:t}:n),relationships:n.relationships};f(r)},[h,l,f]);(0,q.useEffect)(()=>{let e=c.current;if(!e)return;let t=e=>{let t=e.target.tagName;if(t===`INPUT`||t===`TEXTAREA`||t===`SELECT`)return;let n=e.ctrlKey||e.metaKey;n&&e.key===`z`?(e.preventDefault(),l.undo()):n&&(e.key===`y`||e.shiftKey&&e.key===`Z`)?(e.preventDefault(),l.redo()):n&&e.key===`c`?(e.preventDefault(),R()):n&&e.key===`v`?(e.preventDefault(),z()):(e.key===`Delete`||e.key===`Backspace`)&&m.count>0?(e.preventDefault(),L()):e.key===`Escape`&&(m.clearSelection(),E(null),M(null))};return e.addEventListener(`keydown`,t),()=>e.removeEventListener(`keydown`,t)},[l,R,z,L,m]);let ye=u.map(e=>({id:e.id,x:e.position.x,y:e.position.y,width:240,height:40+e.fields.length*24,color:e.color,selected:m.isSelected(e.id)}));return(0,J.jsxs)(`div`,{ref:c,tabIndex:0,className:ft(`flex h-full w-full border rounded-lg overflow-hidden bg-background`,s),children:[(0,J.jsxs)(`div`,{className:`flex flex-col flex-1 min-w-0`,children:[(0,J.jsxs)(`div`,{role:`toolbar`,"aria-label":`Designer toolbar`,className:`flex items-center gap-2 p-2 border-b bg-muted/20 flex-wrap`,children:[(0,J.jsx)(te,{className:`h-4 w-4`}),(0,J.jsx)(`span`,{className:`font-medium text-sm`,children:`Data Model Designer`}),(0,J.jsxs)(`div`,{className:`flex items-center gap-1 ml-2 border-l pl-2`,children:[(0,J.jsx)(`button`,{type:`button`,onClick:()=>l.undo(),disabled:!l.canUndo,"aria-label":`Undo`,title:`Undo (Ctrl+Z)`,className:`p-1 rounded hover:bg-accent disabled:opacity-40`,children:(0,J.jsx)(me,{className:`h-3.5 w-3.5`})}),(0,J.jsx)(`button`,{type:`button`,onClick:()=>l.redo(),disabled:!l.canRedo,"aria-label":`Redo`,title:`Redo (Ctrl+Y)`,className:`p-1 rounded hover:bg-accent disabled:opacity-40`,children:(0,J.jsx)(ge,{className:`h-3.5 w-3.5`})})]}),(0,J.jsxs)(`div`,{className:`flex items-center gap-1 border-l pl-2`,children:[(0,J.jsx)(`button`,{type:`button`,onClick:_.zoomOut,"aria-label":`Zoom Out`,title:`Zoom Out`,className:`p-1 rounded hover:bg-accent`,children:(0,J.jsx)(ae,{className:`h-3.5 w-3.5`})}),(0,J.jsxs)(`span`,{className:`text-xs tabular-nums w-10 text-center`,children:[Math.round(_.zoom*100),`%`]}),(0,J.jsx)(`button`,{type:`button`,onClick:_.zoomIn,"aria-label":`Zoom In`,title:`Zoom In`,className:`p-1 rounded hover:bg-accent`,children:(0,J.jsx)(y,{className:`h-3.5 w-3.5`})}),(0,J.jsx)(`button`,{type:`button`,onClick:_.resetZoom,"aria-label":`Reset Zoom`,title:`Reset Zoom`,className:`p-1 rounded hover:bg-accent`,children:(0,J.jsx)(ve,{className:`h-3 w-3`})})]}),!i&&(0,J.jsxs)(`div`,{className:`flex items-center gap-1 border-l pl-2`,children:[(0,J.jsx)(`button`,{type:`button`,onClick:R,disabled:m.count===0,"aria-label":`Copy`,title:`Copy (Ctrl+C)`,className:`p-1 rounded hover:bg-accent disabled:opacity-40`,children:(0,J.jsx)(D,{className:`h-3.5 w-3.5`})}),(0,J.jsx)(`button`,{type:`button`,onClick:z,disabled:!g.hasContent,"aria-label":`Paste`,title:`Paste (Ctrl+V)`,className:`p-1 rounded hover:bg-accent disabled:opacity-40`,children:(0,J.jsx)(k,{className:`h-3.5 w-3.5`})})]}),!i&&(0,J.jsxs)(`button`,{type:`button`,onClick:ne,"aria-label":`Auto Layout`,title:`Auto Layout`,className:`flex items-center gap-1 px-2 py-1 text-xs rounded border hover:bg-accent`,children:[(0,J.jsx)(Pe,{className:`h-3 w-3`}),` Auto Layout`]}),(0,J.jsx)(`div`,{className:`flex-1`}),v?.isConnected&&(0,J.jsxs)(`div`,{className:`flex items-center gap-1 text-xs text-muted-foreground`,role:`status`,"aria-label":`Collaboration active`,children:[(0,J.jsx)(Ie,{className:`h-3 w-3`}),(0,J.jsxs)(`span`,{children:[v.users.length,` user`,v.users.length===1?``:`s`]})]}),m.count>1&&(0,J.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[m.count,` selected`]}),!i&&(0,J.jsxs)(J.Fragment,{children:[(0,J.jsxs)(`button`,{type:`button`,onClick:ee,"aria-label":`Add Entity`,className:`flex items-center gap-1 px-2 py-1 text-xs rounded bg-primary text-primary-foreground hover:bg-primary/90`,children:[(0,J.jsx)(w,{className:`h-3 w-3`}),` Add Entity`]}),(0,J.jsxs)(`button`,{type:`button`,"aria-label":`Add Relationship`,title:`Add Relationship (coming soon)`,className:`flex items-center gap-1 px-2 py-1 text-xs rounded bg-secondary text-secondary-foreground hover:bg-secondary/80`,children:[(0,J.jsx)(le,{className:`h-3 w-3`}),` Add Relationship`]})]})]}),(0,J.jsxs)(`div`,{role:`region`,"aria-label":`Canvas`,className:`flex-1 overflow-auto bg-muted/10 p-4 relative`,onWheel:_.handleWheel,onMouseDown:_.startPan,onDragOver:pe,onDrop:he,children:[(0,J.jsxs)(`div`,{className:`relative`,style:{width:n.width,minHeight:n.height,..._.transformStyle,backgroundImage:n.showGrid?`radial-gradient(circle, hsl(var(--border)) 1px, transparent 1px)`:void 0,backgroundSize:n.showGrid?`20px 20px`:void 0},children:[(0,J.jsx)(`svg`,{className:`absolute inset-0 pointer-events-none`,width:n.width,height:n.height,children:d.map(e=>{let t=u.find(t=>t.id===e.sourceEntity),n=u.find(t=>t.id===e.targetEntity);return!t||!n?null:(0,J.jsxs)(`g`,{children:[(0,J.jsx)(`line`,{x1:t.position.x+120,y1:t.position.y+50,x2:n.position.x+120,y2:n.position.y+50,stroke:`hsl(var(--primary))`,strokeWidth:`2`,strokeDasharray:e.type===`many-to-many`?`5,5`:void 0}),r&&e.label&&(0,J.jsx)(`text`,{x:(t.position.x+n.position.x)/2+120,y:(t.position.y+n.position.y)/2+50-8,textAnchor:`middle`,className:`text-xs fill-muted-foreground`,children:e.label})]},e.id)})}),u.length===0&&(0,J.jsx)(`div`,{className:`absolute inset-0 flex items-center justify-center text-muted-foreground text-sm`,children:`No entities in the model. Click 'Add Entity' to create your first entity.`}),u.map(e=>(0,J.jsxs)(`div`,{role:`group`,"aria-label":e.label,draggable:!i,onDragStart:t=>fe(t,e.id),className:ft(`absolute rounded-lg border-2 bg-background shadow-sm w-60 select-none cursor-grab active:cursor-grabbing`,m.isSelected(e.id)?`border-primary ring-2 ring-primary/20`:`border-border hover:border-primary/50`),style:{left:e.position.x,top:e.position.y},onClick:t=>m.toggle(e.id,t.shiftKey),children:[(0,J.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-2 rounded-t-lg font-medium text-sm`,style:{backgroundColor:e.color??`hsl(var(--primary) / 0.1)`},children:[(0,J.jsx)(te,{className:`h-3.5 w-3.5`}),j===e.id?(0,J.jsx)(`input`,{type:`text`,value:N,onChange:e=>P(e.target.value),onBlur:V,onKeyDown:e=>{e.key===`Enter`&&V(),e.key===`Escape`&&ue()},className:`text-sm font-medium px-1 py-0 border rounded bg-background w-32 focus:outline-none focus:ring-1 focus:ring-primary`,autoFocus:!0,onClick:e=>e.stopPropagation(),"data-testid":`entity-label-input-${e.id}`}):(0,J.jsx)(`span`,{className:`truncate cursor-text`,onDoubleClick:t=>{t.stopPropagation(),ce(e.id,e.label)},title:`Double-click to edit label`,"data-testid":`entity-label-${e.id}`,children:e.label}),!i&&(0,J.jsx)(`button`,{type:`button`,onClick:t=>{t.stopPropagation(),I(e.id)},"aria-label":`Delete ${e.label}`,className:`ml-auto p-0.5 rounded hover:bg-destructive/20`,children:(0,J.jsx)(B,{className:`h-3 w-3 text-destructive`})})]}),(0,J.jsx)(`div`,{className:`px-3 py-1 divide-y`,children:e.fields.map((t,n)=>(0,J.jsxs)(`div`,{className:`flex items-center gap-2 py-1 text-xs`,children:[T&&T.entityId===e.id&&T.fieldIndex===n?(0,J.jsx)(`input`,{type:`text`,value:O,onChange:e=>A(e.target.value),onBlur:oe,onKeyDown:e=>{e.key===`Enter`&&oe(),e.key===`Escape`&&se()},className:`font-mono text-xs px-1 py-0 border rounded bg-background w-24 focus:outline-none focus:ring-1 focus:ring-primary`,autoFocus:!0,onClick:e=>e.stopPropagation()}):(0,J.jsxs)(`span`,{className:ft(`font-mono cursor-text`,t.primaryKey&&`font-bold text-primary`),onClick:r=>{r.stopPropagation(),ie(e.id,n,t.name)},title:`Click to edit field name`,children:[t.primaryKey&&(0,J.jsx)(`span`,{className:`text-[0.65rem] font-semibold text-primary mr-0.5`,children:`PK`}),t.name]}),i?(0,J.jsx)(`span`,{className:`text-muted-foreground ml-auto`,children:t.type}):(0,J.jsx)(`select`,{value:t.type,onChange:t=>{t.stopPropagation(),de(e.id,n,t.target.value)},onClick:e=>e.stopPropagation(),className:`text-xs text-muted-foreground ml-auto bg-transparent border-none focus:ring-1 focus:ring-primary rounded cursor-pointer p-0`,"data-testid":`field-type-${e.id}-${n}`,children:pt.map(e=>(0,J.jsx)(`option`,{value:e,children:e},e))}),t.required&&(0,J.jsx)(`span`,{className:`text-destructive`,children:`*`})]},`${t.name}-${n}`))}),!i&&(0,J.jsx)(`div`,{className:`px-3 py-1 border-t`,children:(0,J.jsxs)(`button`,{type:`button`,onClick:t=>{t.stopPropagation(),re(e.id)},"aria-label":`Add field to ${e.label}`,className:`flex items-center gap-1 text-xs text-muted-foreground hover:text-foreground w-full py-0.5`,children:[(0,J.jsx)(w,{className:`h-3 w-3`}),` Add Field`]})})]},e.id))]}),S&&u.length>0&&(0,J.jsx)(ot,{items:ye,canvasWidth:n.width,canvasHeight:n.height,position:`bottom-right`,size:150})]})]}),(0,J.jsxs)(`div`,{className:`w-64 border-l flex flex-col bg-background shrink-0`,children:[(0,J.jsxs)(`div`,{className:`flex flex-col flex-1 min-h-0`,children:[(0,J.jsxs)(`button`,{type:`button`,onClick:()=>x(e=>!e),className:`flex items-center gap-1 px-3 py-2 text-xs font-medium text-muted-foreground hover:bg-accent/50 border-b`,"aria-expanded":b,"aria-controls":`property-editor-panel`,children:[b?(0,J.jsx)(Se,{className:`h-3 w-3`}):(0,J.jsx)(je,{className:`h-3 w-3`}),`Properties`]}),b&&(0,J.jsx)(`div`,{id:`property-editor-panel`,className:`flex-1 overflow-y-auto`,children:(0,J.jsx)(rt,{title:H?H.label:`Properties`,fields:U,onChange:_e})})]}),(0,J.jsx)(`div`,{className:`border-t`,children:(0,J.jsxs)(`button`,{type:`button`,onClick:()=>C(e=>!e),className:`flex items-center gap-1 px-3 py-2 text-xs font-medium text-muted-foreground hover:bg-accent/50 w-full`,"aria-expanded":S,children:[S?(0,J.jsx)(Se,{className:`h-3 w-3`}):(0,J.jsx)(je,{className:`h-3 w-3`}),`Minimap`]})})]}),(0,J.jsx)(tt,{isOpen:p.isOpen,title:p.title,message:p.message,onConfirm:p.onConfirm,onCancel:p.onCancel,destructive:!0})]})}function gt(...e){return W(G(e))}var _t=120,vt=50;function yt(e,t){if(e.length===0)return e;let n=new Map,r=new Map;for(let t of e)n.set(t.id,0),r.set(t.id,[]);for(let e of t)n.set(e.target,(n.get(e.target)??0)+1),r.get(e.source)?.push(e.target);let i=[],a=new Set,o=e.filter(e=>(n.get(e.id)??0)===0).map(e=>e.id);for(o.length===0&&(o=[e[0].id]);o.length>0;){i.push(o);for(let e of o)a.add(e);let e=new Set;for(let t of o)for(let n of r.get(t)??[])a.has(n)||e.add(n);o=Array.from(e)}let s=e.filter(e=>!a.has(e.id)).map(e=>e.id);s.length>0&&i.push(s);let c=new Map;for(let e=0;e<i.length;e++){let t=i[e];for(let n=0;n<t.length;n++)c.set(t[n],{x:80+e*200,y:80+n*100})}return e.map(e=>({...e,position:c.get(e.id)??e.position}))}function bt({processName:e=`New Process`,nodes:t=[],edges:n=[],lanes:r,canvas:i={width:1400,height:800,showGrid:!0},showMinimap:a=!0,showToolbar:o=!0,readOnly:s=!1,onNodesChange:c,onEdgesChange:l,className:u}){let d=Ye({nodes:t,edges:n},{maxHistory:50}),f=d.current.nodes,p=d.current.edges,m=(0,q.useCallback)((e,t)=>{d.push({nodes:e,edges:t}),c?.(e),l?.(t)},[d,c,l]),h=Xe(),g=Ze(),_=Qe(),v=$e({initialZoom:1}),x=ct(),[S,C]=(0,q.useState)(null),[w,T]=(0,q.useState)(!1),[E,O]=(0,q.useState)(null),[A,j]=(0,q.useState)(null),[M,N]=(0,q.useState)(!0),[P,ee]=(0,q.useState)(null),[I,te]=(0,q.useState)({x:0,y:0}),L=(0,q.useRef)(null),ne=(0,q.useRef)(c),R=(0,q.useRef)(l);ne.current=c,R.current=l,(0,q.useEffect)(()=>{ne.current?.(f),R.current?.(p)},[d.current]);let z=(0,q.useCallback)((e,t)=>{if(s)return;let n={id:`node-${Date.now()}`,type:e,label:t,position:{x:200+f.length*160,y:200}},r=[...f,n];m(r,p),C(n.id),g.selectOne(n.id),x?.sendOperation({type:`insert`,elementId:n.id,data:{label:t},userId:x.currentUserId??``})},[f,p,s,m,g,x]),re=(0,q.useCallback)(async e=>{if(s)return;let t=f.find(t=>t.id===e);if(!await h.confirm(`Delete Node`,`Are you sure you want to delete "${t?.label??e}"? This will also remove all connected edges.`))return;let n=f.filter(t=>t.id!==e),r=p.filter(t=>t.source!==e&&t.target!==e);m(n,r),S===e&&C(null),g.clearSelection(),x?.sendOperation({type:`delete`,elementId:e,data:{},userId:x.currentUserId??``})},[f,p,S,s,m,h,g,x]),ie=(0,q.useCallback)(async()=>{if(s||g.count===0||!await h.confirm(`Delete Selected Nodes`,`Are you sure you want to delete ${g.count} selected node(s) and their connected edges?`))return;let e=g.selectedIds,t=f.filter(t=>!e.has(t.id)),n=p.filter(t=>!e.has(t.source)&&!e.has(t.target));m(t,n),C(null),g.clearSelection()},[f,p,s,m,h,g]),oe=(0,q.useCallback)(()=>{let e=g.count>0?g.selectedIds:S?new Set([S]):new Set;if(e.size===0)return;let t=f.filter(t=>e.has(t.id));_.copy(t)},[f,S,g,_]),se=(0,q.useCallback)(()=>{if(s)return;let e=_.paste();if(!e||e.length===0)return;let t=e.map(e=>({...e,id:`node-${Date.now()}-${Math.random().toString(36).slice(2,7)}`,position:{x:e.position.x+40,y:e.position.y+40}})),n=[...f,...t];m(n,p),g.selectMany(t.map(e=>e.id)),C(t[0].id)},[s,f,p,_,m,g]),ce=(0,q.useCallback)(()=>{T(e=>!e||(O(null),!1))},[]),V=(0,q.useCallback)(e=>{if(!w)return!1;if(!E)return O(e),!0;if(E===e)return!0;let t={id:`edge-${Date.now()}`,source:E,target:e},n=[...p,t];return m(f,n),O(null),T(!1),x?.sendOperation({type:`insert`,elementId:t.id,data:{source:E,target:e},userId:x.currentUserId??``}),!0},[w,E,f,p,m,x]),le=(0,q.useCallback)(()=>{if(s||f.length===0)return;let e=yt(f,p);m(e,p)},[f,p,s,m]),fe=(0,q.useCallback)((e,t)=>{if(s||!f.find(e=>e.id===t))return;ee(t);let n=e.target.getBoundingClientRect();te({x:e.clientX-n.left,y:e.clientY-n.top}),e.dataTransfer.effectAllowed=`move`,e.dataTransfer.setData(`text/plain`,t)},[s,f]),he=(0,q.useCallback)(e=>{if(e.preventDefault(),s||!P)return;let t=e.currentTarget.getBoundingClientRect(),n=v.zoom,r=(e.clientX-t.left-v.panOffset.x)/n-I.x,i=(e.clientY-t.top-v.panOffset.y)/n-I.y,a=Math.max(0,Math.round(r/20)*20),o=Math.max(0,Math.round(i/20)*20),c=f.map(e=>e.id===P?{...e,position:{x:a,y:o}}:e);m(c,p),ee(null)},[s,P,I,f,p,v.zoom,v.panOffset,m]),H=(0,q.useCallback)(e=>{e.preventDefault(),e.dataTransfer.dropEffect=`move`},[]),U=(0,q.useMemo)(()=>f.find(e=>e.id===S)??null,[f,S]),_e=(0,q.useMemo)(()=>U?[{name:`label`,label:`Name`,type:`text`,value:U.label,group:`General`},{name:`type`,label:`Type`,type:`select`,value:U.type,options:[{label:`Start Event`,value:`start-event`},{label:`End Event`,value:`end-event`},{label:`User Task`,value:`user-task`},{label:`Service Task`,value:`service-task`},{label:`Script Task`,value:`script-task`},{label:`Exclusive Gateway`,value:`exclusive-gateway`},{label:`Parallel Gateway`,value:`parallel-gateway`},{label:`Inclusive Gateway`,value:`inclusive-gateway`}],group:`General`},{name:`description`,label:`Description`,type:`textarea`,value:U.description??``,group:`General`}]:[],[U]),ye=(0,q.useCallback)((e,t)=>{if(s||!S)return;let n=f.map(n=>n.id===S?{...n,[e]:t}:n);m(n,p)},[s,S,f,p,m]),be=e=>{switch(e){case`start-event`:return`rounded-full bg-green-100 border-green-500 text-green-700`;case`end-event`:return`rounded-full bg-red-100 border-red-500 text-red-700`;case`exclusive-gateway`:case`parallel-gateway`:case`inclusive-gateway`:case`event-based-gateway`:return`rotate-45 bg-yellow-100 border-yellow-500 text-yellow-700`;case`user-task`:return`rounded bg-blue-100 border-blue-500 text-blue-700`;case`service-task`:case`script-task`:return`rounded bg-purple-100 border-purple-500 text-purple-700`;default:return`rounded bg-gray-100 border-gray-500 text-gray-700`}},xe=(0,q.useMemo)(()=>f.map(e=>({id:e.id,x:e.position.x,y:e.position.y,width:_t,height:vt,selected:g.isSelected(e.id)||e.id===S})),[f,g,S]);(0,q.useEffect)(()=>{let e=L.current;if(!e)return;let t=e=>{let t=e.target?.tagName;if(t===`INPUT`||t===`TEXTAREA`||t===`SELECT`)return;let n=e.ctrlKey||e.metaKey;if(n&&e.key===`z`&&!e.shiftKey){e.preventDefault(),d.undo();return}if(n&&e.key===`y`||n&&e.key===`z`&&e.shiftKey){e.preventDefault(),d.redo();return}if(n&&e.key===`c`){e.preventDefault(),oe();return}if(n&&e.key===`v`){e.preventDefault(),se();return}if(e.key===`Delete`||e.key===`Backspace`){g.count>0?(e.preventDefault(),ie()):S&&(e.preventDefault(),re(S));return}if(e.key===`Escape`){w?(T(!1),O(null)):(C(null),g.clearSelection());return}};return e.addEventListener(`keydown`,t),()=>e.removeEventListener(`keydown`,t)},[S,w,g,d,oe,se,re,ie]);let Se=(0,q.useCallback)(e=>{e.target===e.currentTarget&&(C(null),g.clearSelection(),w&&(T(!1),O(null)))},[w,g]);return(0,J.jsxs)(`div`,{ref:L,tabIndex:0,className:gt(`flex flex-col h-full w-full border rounded-lg overflow-hidden bg-background`,u),children:[(0,J.jsx)(tt,{isOpen:h.isOpen,title:h.title,message:h.message,onConfirm:h.onConfirm,onCancel:h.onCancel,destructive:!0}),o&&(0,J.jsxs)(`div`,{className:`flex items-center gap-2 p-2 border-b bg-muted/20`,role:`toolbar`,"aria-label":`Process toolbar`,children:[(0,J.jsx)(pe,{className:`h-4 w-4`}),(0,J.jsx)(`span`,{className:`font-medium text-sm`,"aria-label":`Process name`,children:e}),x?.isConnected&&(0,J.jsxs)(`div`,{className:`flex items-center gap-1 text-xs text-muted-foreground`,role:`status`,"aria-label":`Collaboration active`,children:[(0,J.jsx)(`span`,{className:`inline-block h-2 w-2 rounded-full bg-green-500`}),x.users.length,` user`,x.users.length===1?``:`s`]}),(0,J.jsx)(`div`,{className:`flex-1`}),!s&&(0,J.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,J.jsx)(`button`,{type:`button`,onClick:()=>d.undo(),disabled:!d.canUndo,className:`flex items-center gap-1 px-2 py-1 text-xs rounded hover:bg-accent disabled:opacity-40`,title:`Undo (Ctrl+Z)`,"aria-label":`Undo`,children:(0,J.jsx)(me,{className:`h-3 w-3`})}),(0,J.jsx)(`button`,{type:`button`,onClick:()=>d.redo(),disabled:!d.canRedo,className:`flex items-center gap-1 px-2 py-1 text-xs rounded hover:bg-accent disabled:opacity-40`,title:`Redo (Ctrl+Y)`,"aria-label":`Redo`,children:(0,J.jsx)(ge,{className:`h-3 w-3`})}),(0,J.jsx)(`div`,{className:`w-px h-4 bg-border mx-1`}),(0,J.jsx)(`button`,{type:`button`,onClick:oe,disabled:g.count===0&&!S,className:`flex items-center gap-1 px-2 py-1 text-xs rounded hover:bg-accent disabled:opacity-40`,title:`Copy (Ctrl+C)`,"aria-label":`Copy`,children:(0,J.jsx)(D,{className:`h-3 w-3`})}),(0,J.jsx)(`button`,{type:`button`,onClick:se,disabled:!_.hasContent,className:`flex items-center gap-1 px-2 py-1 text-xs rounded hover:bg-accent disabled:opacity-40`,title:`Paste (Ctrl+V)`,"aria-label":`Paste`,children:(0,J.jsx)(k,{className:`h-3 w-3`})}),(0,J.jsx)(`div`,{className:`w-px h-4 bg-border mx-1`}),(0,J.jsxs)(`button`,{type:`button`,onClick:ce,className:gt(`flex items-center gap-1 px-2 py-1 text-xs rounded hover:bg-accent`,w&&`bg-primary text-primary-foreground`),title:`Connect nodes`,"aria-label":`Connect nodes`,"aria-pressed":w,children:[(0,J.jsx)(Be,{className:`h-3 w-3`}),` Connect`]}),(0,J.jsxs)(`button`,{type:`button`,onClick:le,className:`flex items-center gap-1 px-2 py-1 text-xs rounded hover:bg-accent`,title:`Auto layout`,"aria-label":`Auto layout`,children:[(0,J.jsx)(F,{className:`h-3 w-3`}),` Layout`]}),(0,J.jsx)(`div`,{className:`w-px h-4 bg-border mx-1`}),(0,J.jsx)(`button`,{type:`button`,onClick:v.zoomIn,className:`flex items-center gap-1 px-2 py-1 text-xs rounded hover:bg-accent`,title:`Zoom in`,"aria-label":`Zoom in`,children:(0,J.jsx)(y,{className:`h-3 w-3`})}),(0,J.jsxs)(`span`,{className:`text-xs tabular-nums min-w-[3ch] text-center`,"aria-label":`Zoom level`,children:[Math.round(v.zoom*100),`%`]}),(0,J.jsx)(`button`,{type:`button`,onClick:v.zoomOut,className:`flex items-center gap-1 px-2 py-1 text-xs rounded hover:bg-accent`,title:`Zoom out`,"aria-label":`Zoom out`,children:(0,J.jsx)(ae,{className:`h-3 w-3`})}),(0,J.jsx)(`button`,{type:`button`,onClick:v.resetZoom,className:`flex items-center gap-1 px-2 py-1 text-xs rounded hover:bg-accent`,title:`Reset zoom`,"aria-label":`Reset zoom`,children:(0,J.jsx)(ve,{className:`h-3 w-3`})}),(0,J.jsx)(`div`,{className:`w-px h-4 bg-border mx-1`}),(0,J.jsxs)(`button`,{type:`button`,onClick:()=>z(`start-event`,`Start`),className:`flex items-center gap-1 px-2 py-1 text-xs rounded hover:bg-accent`,title:`Add Start Event`,"aria-label":`Add Start Event`,children:[(0,J.jsx)(De,{className:`h-3 w-3 text-green-600`}),` Start`]}),(0,J.jsxs)(`button`,{type:`button`,onClick:()=>z(`user-task`,`User Task`),className:`flex items-center gap-1 px-2 py-1 text-xs rounded hover:bg-accent`,title:`Add User Task`,"aria-label":`Add User Task`,children:[(0,J.jsx)(de,{className:`h-3 w-3 text-blue-600`}),` Task`]}),(0,J.jsxs)(`button`,{type:`button`,onClick:()=>z(`exclusive-gateway`,`Decision`),className:`flex items-center gap-1 px-2 py-1 text-xs rounded hover:bg-accent`,title:`Add Gateway`,"aria-label":`Add Gateway`,children:[(0,J.jsx)(Ee,{className:`h-3 w-3 text-yellow-600`}),` Gateway`]}),(0,J.jsxs)(`button`,{type:`button`,onClick:()=>z(`end-event`,`End`),className:`flex items-center gap-1 px-2 py-1 text-xs rounded hover:bg-accent`,title:`Add End Event`,"aria-label":`Add End Event`,children:[(0,J.jsx)(de,{className:`h-3 w-3 text-red-600`}),` End`]}),(0,J.jsx)(`div`,{className:`w-px h-4 bg-border mx-1`}),(0,J.jsx)(`button`,{type:`button`,onClick:()=>N(e=>!e),className:`flex items-center gap-1 px-2 py-1 text-xs rounded hover:bg-accent`,title:M?`Hide properties`:`Show properties`,"aria-label":M?`Hide property panel`:`Show property panel`,"aria-expanded":M,children:M?(0,J.jsx)(ue,{className:`h-3 w-3`}):(0,J.jsx)(b,{className:`h-3 w-3`})})]})]}),(0,J.jsxs)(`div`,{className:`flex flex-1 overflow-hidden`,children:[(0,J.jsx)(`div`,{className:`flex-1 overflow-auto bg-muted/10 p-4`,role:`region`,"aria-label":`Process canvas`,onWheel:v.handleWheel,onMouseDown:v.startPan,children:(0,J.jsxs)(`div`,{className:`relative`,style:{...v.transformStyle,width:i.width,minHeight:i.height,backgroundImage:i.showGrid?`radial-gradient(circle, hsl(var(--border)) 1px, transparent 1px)`:void 0,backgroundSize:i.showGrid?`20px 20px`:void 0},onClick:Se,onDrop:he,onDragOver:H,children:[(0,J.jsxs)(`svg`,{className:`absolute inset-0 pointer-events-none`,width:i.width,height:i.height,children:[(0,J.jsx)(`defs`,{children:(0,J.jsx)(`marker`,{id:`arrowhead`,markerWidth:`10`,markerHeight:`7`,refX:`10`,refY:`3.5`,orient:`auto`,children:(0,J.jsx)(`polygon`,{points:`0 0, 10 3.5, 0 7`,fill:`hsl(var(--foreground))`})})}),p.map(e=>{let t=f.find(t=>t.id===e.source),n=f.find(t=>t.id===e.target);if(!t||!n)return null;t.position.x+_t/2;let r=t.position.y+vt/2;n.position.x+_t/2;let i=n.position.y+vt/2,a=t.position.x+_t,o=r,s=n.position.x,c=i,l=`M ${a} ${o} Q ${(a+s)/2} ${o}, ${(a+s)/2} ${(o+c)/2} T ${s} ${c}`;return(0,J.jsxs)(`g`,{children:[(0,J.jsx)(`path`,{d:l,fill:`none`,stroke:`hsl(var(--foreground) / 0.5)`,strokeWidth:`2`,markerEnd:`url(#arrowhead)`}),e.label&&(0,J.jsx)(`text`,{x:(a+s)/2,y:(o+c)/2-8,textAnchor:`middle`,className:`text-[10px] fill-muted-foreground`,children:e.label})]},e.id)})]}),f.length===0&&(0,J.jsx)(`div`,{className:`flex items-center justify-center h-full min-h-[200px] text-muted-foreground text-sm`,children:`No nodes in the process. Use the toolbar buttons to add start events, tasks, gateways, and end events.`}),f.map(e=>{let t=g.isSelected(e.id)||S===e.id,n=E===e.id,r=A===e.id,i=w||r;return(0,J.jsxs)(`div`,{className:`absolute select-none`,style:{left:e.position.x,top:e.position.y},role:`group`,"aria-label":e.label,draggable:!s&&!w,onDragStart:t=>fe(t,e.id),onMouseEnter:()=>j(e.id),onMouseLeave:()=>j(null),onClick:t=>{V(e.id)||(t.shiftKey?g.toggle(e.id,!0):(C(e.id),g.selectOne(e.id)))},children:[(0,J.jsx)(`div`,{className:gt(`flex items-center justify-center border-2 min-w-[120px] min-h-[50px] px-3 py-2 transition-shadow`,be(e.type),t&&`ring-2 ring-primary shadow-md`,n&&`ring-2 ring-blue-400 shadow-lg`,w&&!n&&`cursor-crosshair`),children:(0,J.jsx)(`span`,{className:gt(`text-xs font-medium`,(e.type===`exclusive-gateway`||e.type===`parallel-gateway`||e.type===`inclusive-gateway`||e.type===`event-based-gateway`)&&`-rotate-45`),children:e.label})}),i&&!s&&(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(`div`,{className:`absolute w-3 h-3 rounded-full bg-blue-500 border-2 border-white shadow cursor-crosshair`,style:{left:-6,top:vt/2-6},title:`Input port`,onClick:t=>{t.stopPropagation(),V(e.id)}}),(0,J.jsx)(`div`,{className:`absolute w-3 h-3 rounded-full bg-blue-500 border-2 border-white shadow cursor-crosshair`,style:{right:-6,top:vt/2-6},title:`Output port`,onClick:t=>{t.stopPropagation(),w?V(e.id):(T(!0),O(e.id))}}),(0,J.jsx)(`div`,{className:`absolute w-3 h-3 rounded-full bg-blue-400 border-2 border-white shadow cursor-crosshair`,style:{left:_t/2-6,top:-6},title:`Port`,onClick:t=>{t.stopPropagation(),V(e.id)}}),(0,J.jsx)(`div`,{className:`absolute w-3 h-3 rounded-full bg-blue-400 border-2 border-white shadow cursor-crosshair`,style:{left:_t/2-6,bottom:-6},title:`Port`,onClick:t=>{t.stopPropagation(),V(e.id)}})]}),!s&&t&&!w&&(0,J.jsx)(`button`,{type:`button`,onClick:t=>{t.stopPropagation(),re(e.id)},className:`absolute -top-2 -right-2 p-0.5 rounded-full bg-destructive text-destructive-foreground shadow`,"aria-label":`Delete node`,children:(0,J.jsx)(B,{className:`h-3 w-3`})})]},e.id)}),a&&f.length>0&&(0,J.jsx)(ot,{items:xe,canvasWidth:i.width??1400,canvasHeight:i.height??800,position:`bottom-right`})]})}),M&&!s&&(0,J.jsx)(`div`,{className:`w-64 border-l bg-background overflow-y-auto shrink-0`,role:`complementary`,"aria-label":`Property panel`,children:(0,J.jsx)(rt,{title:U?`Properties: ${U.label}`:`Properties`,fields:_e,onChange:ye})})]})]})}function X(...e){return W(G(e))}var Z={untitledReport:`Untitled Report`,reportCanvas:`Report canvas`,properties:`Properties`,propertiesPanel:`Properties panel`,designerToolbar:`Report designer toolbar`,selectElementPrompt:`Select an element to edit its properties`,addElementsPrompt:`Add elements using the buttons above`,addText:`Add Text`,addField:`Add Field`,addImage:`Add Image`,addChart:`Add Chart`,addTable:`Add Table`,undo:`Undo`,undoShortcut:`Undo (Ctrl+Z)`,redo:`Redo`,redoShortcut:`Redo (Ctrl+Shift+Z)`,copy:`Copy`,copyShortcut:`Copy (Ctrl+C)`,paste:`Paste`,pasteShortcut:`Paste (Ctrl+V)`,deleteSelected:`Delete selected`,deleteElement:`Delete element`,deleteElementsTitle:`Delete elements`,deleteElementMessage:e=>`Are you sure you want to delete ${e} element${e>1?`s`:``}?`,collapsePanel:`Collapse panel`,expandPanel:`Expand panel`,collaborationConnected:`Connected`,sectionHeader:`Report Header`,sectionPageHeader:`Page Header`,sectionGroupHeader:`Group Header`,sectionDetail:`Detail`,sectionGroupFooter:`Group Footer`,sectionPageFooter:`Page Footer`,sectionFooter:`Report Footer`,elementText:`Text`,elementImage:`🖼 Image`,elementChart:`📊 Chart`,elementTable:`📋 Table`,propLabel:`Label`,propX:`X`,propY:`Y`,propWidth:`Width`,propHeight:`Height`,propText:`Text`,propField:`Field`,groupPosition:`Position`,groupSize:`Size`,groupContent:`Content`,groupGeneral:`General`},xt={A4:{width:595,height:842},A3:{width:842,height:1191},Letter:{width:612,height:792},Legal:{width:612,height:1008},Tabloid:{width:792,height:1224}},St=[{type:`header`,height:80,elements:[]},{type:`detail`,height:400,elements:[],repeat:!0},{type:`footer`,height:60,elements:[]}];function Ct({reportName:e=Z.untitledReport,objectName:t,pageSize:n=`A4`,orientation:r=`portrait`,margins:i={top:40,right:40,bottom:40,left:40},sections:a=[],showToolbar:o=!0,showPropertyPanel:s=!0,readOnly:c=!1,onSectionsChange:l,className:u}){let d=Ye(a.length>0?a:St),f=d.current,p=(0,q.useCallback)(e=>{d.push(e),l?.(e)},[d,l]),m=Ze(),h=(0,q.useMemo)(()=>{let e=Array.from(m.selectedIds);return e.length>0?e[0]:null},[m.selectedIds]),g=Qe(),_=Xe(),v=ct(),y=(0,q.useCallback)(e=>{v&&v.sendOperation({...e,userId:v.currentUserId??``})},[v]),[b,x]=(0,q.useState)(!0),S=(0,q.useRef)(null),C=(0,q.useRef)(null),T=xt[n],E=r===`landscape`?T.height:T.width,O=r===`landscape`?T.width:T.height,A=e=>{switch(e){case`header`:return Z.sectionHeader;case`page-header`:return Z.sectionPageHeader;case`group-header`:return Z.sectionGroupHeader;case`detail`:return Z.sectionDetail;case`group-footer`:return Z.sectionGroupFooter;case`page-footer`:return Z.sectionPageFooter;case`footer`:return Z.sectionFooter;default:return e}},j=(0,q.useMemo)(()=>h?f.flatMap(e=>e.elements).find(e=>e.id===h):null,[h,f]),M=(0,q.useCallback)((e,t)=>{if(c)return;let n={id:`elem-${Date.now()}`,type:t,position:{x:i.left,y:10,width:200,height:30},properties:{text:t===`text`?`New Text`:void 0,field:t===`field`?`field_name`:void 0}},r=f.map((t,r)=>r===e?{...t,elements:[...t.elements,n]}:t);p(r),m.selectOne(n.id),y({type:`insert`,elementId:n.id,data:{element:n}})},[f,i.left,c,p,m,y]),N=(0,q.useCallback)(e=>{if(c)return;let t=f.map(t=>({...t,elements:t.elements.filter(t=>t.id!==e)}));p(t),m.isSelected(e)&&m.clearSelection(),y({type:`delete`,elementId:e,data:{}})},[f,c,p,m,y]),P=(0,q.useCallback)(async()=>{if(c||m.count===0||!await _.confirm(Z.deleteElementsTitle,Z.deleteElementMessage(m.count)))return;let e=m.selectedIds,t=f.map(t=>({...t,elements:t.elements.filter(t=>!e.has(t.id))}));p(t),m.clearSelection(),e.forEach(e=>{y({type:`delete`,elementId:e,data:{}})})},[c,m,_,f,p,y]),F=(0,q.useCallback)((e,t)=>{if(c||!h)return;let n=f.map(n=>({...n,elements:n.elements.map(n=>n.id===h?e===`x`?{...n,position:{...n.position,x:Number(t)}}:e===`y`?{...n,position:{...n.position,y:Number(t)}}:e===`width`?{...n,position:{...n.position,width:Number(t)}}:e===`height`?{...n,position:{...n.position,height:Number(t)}}:{...n,properties:{...n.properties,[e]:t}}:n)}));p(n),y({type:`update`,elementId:h,data:{[e]:t}})},[c,h,f,p,y]),ee=(0,q.useCallback)(()=>{let e=m.selectedIds;if(e.size===0)return;let t=f.flatMap(e=>e.elements).filter(t=>e.has(t.id));g.copy(t)},[m,f,g]),I=(0,q.useCallback)(()=>{if(c)return;let e=g.paste();if(!e||e.length===0)return;let t=0,n=e.map(e=>({...e,id:`elem-${Date.now()}-${++t}-${Math.random().toString(36).slice(2,7)}`,position:{...e.position,x:e.position.x+20,y:e.position.y+20}})),r=f.findIndex(e=>e.type===`detail`),i=r>=0?r:0,a=f.map((e,t)=>t===i?{...e,elements:[...e.elements,...n]}:e);p(a),m.selectMany(n.map(e=>e.id)),n.forEach(e=>{y({type:`insert`,elementId:e.id,data:{element:e}})})},[c,g,f,p,m,y]),te=(0,q.useCallback)((e,t,n)=>{c||(S.current={id:t.id,sectionIndex:n,startX:e.clientX,startY:e.clientY},e.dataTransfer.effectAllowed=`move`,e.dataTransfer.setData(`text/plain`,t.id))},[c]),ne=(0,q.useCallback)(e=>{e.preventDefault(),e.dataTransfer.dropEffect=`move`},[]),R=(0,q.useCallback)((e,t)=>{e.preventDefault();let n=S.current;if(!n||c)return;let r=e.clientX-n.startX,i=e.clientY-n.startY;if(n.sectionIndex===t){let e=f.map((e,a)=>a===t?{...e,elements:e.elements.map(e=>e.id===n.id?{...e,position:{...e.position,x:Math.max(0,e.position.x+r),y:Math.max(0,(typeof e.position.y==`number`?e.position.y:0)+i)}}:e)}:e);p(e)}else{let e=null,i=f.map((t,i)=>{if(i!==n.sectionIndex)return t;let a=t.elements.find(e=>e.id===n.id);return a&&(e={...a,position:{...a.position,x:Math.max(0,a.position.x+r),y:10}}),{...t,elements:t.elements.filter(e=>e.id!==n.id)}});if(e){let n=i.map((n,r)=>r===t?{...n,elements:[...n.elements,e]}:n);p(n)}}y({type:`move`,elementId:n.id,data:{}}),S.current=null},[c,f,p,y]),z=(0,q.useMemo)(()=>{if(!j)return[];let e=[{name:`x`,label:Z.propX,type:`number`,value:j.position.x,group:Z.groupPosition},{name:`y`,label:Z.propY,type:`number`,value:j.position.y,group:Z.groupPosition},{name:`width`,label:Z.propWidth,type:`number`,value:j.position.width,group:Z.groupSize},{name:`height`,label:Z.propHeight,type:`number`,value:j.position.height,group:Z.groupSize}];return j.type===`text`&&e.push({name:`text`,label:Z.propText,type:`text`,value:j.properties.text??``,group:Z.groupContent}),j.type===`field`&&e.push({name:`field`,label:Z.propField,type:`text`,value:j.properties.field??``,group:Z.groupContent}),e},[j]);return(0,q.useEffect)(()=>{let e=C.current;if(!e)return;let t=e=>{let t=[`INPUT`,`TEXTAREA`,`SELECT`].includes(e.target.tagName),n=e.ctrlKey||e.metaKey;if((e.key===`Delete`||e.key===`Backspace`)&&m.count>0&&!t){e.preventDefault(),P();return}if(e.key===`Escape`){m.clearSelection();return}if(!t){if(n&&e.key===`z`&&!e.shiftKey&&!c){e.preventDefault(),d.undo();return}if(n&&(e.key===`z`&&e.shiftKey||e.key===`y`)&&!c){e.preventDefault(),d.redo();return}if(n&&e.key===`c`){e.preventDefault(),ee();return}if(n&&e.key===`v`&&!c){e.preventDefault(),I();return}if(n&&e.key===`a`){e.preventDefault();let t=f.flatMap(e=>e.elements).map(e=>e.id);m.selectMany(t);return}}};return e.addEventListener(`keydown`,t),()=>e.removeEventListener(`keydown`,t)},[m,P,c,d,ee,I,f]),(0,J.jsxs)(`div`,{ref:C,tabIndex:0,className:X(`flex h-full w-full border rounded-lg overflow-hidden bg-background`,u),children:[(0,J.jsxs)(`div`,{className:`flex-1 flex flex-col min-w-0`,children:[o&&(0,J.jsxs)(`div`,{role:`toolbar`,"aria-label":Z.designerToolbar,className:`flex items-center gap-2 p-2 border-b bg-muted/20`,children:[(0,J.jsx)(Le,{className:`h-4 w-4`}),(0,J.jsx)(`span`,{className:`font-medium text-sm`,children:e}),t&&(0,J.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[`(`,t,`)`]}),!c&&(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(`div`,{className:`w-px h-5 bg-border mx-1`}),(0,J.jsx)(`button`,{type:`button`,className:X(`p-1.5 rounded hover:bg-accent`,!d.canUndo&&`opacity-40 pointer-events-none`),title:Z.undoShortcut,"aria-label":Z.undo,disabled:!d.canUndo,onClick:()=>d.undo(),children:(0,J.jsx)(me,{className:`h-4 w-4`})}),(0,J.jsx)(`button`,{type:`button`,className:X(`p-1.5 rounded hover:bg-accent`,!d.canRedo&&`opacity-40 pointer-events-none`),title:Z.redoShortcut,"aria-label":Z.redo,disabled:!d.canRedo,onClick:()=>d.redo(),children:(0,J.jsx)(ge,{className:`h-4 w-4`})}),(0,J.jsx)(`div`,{className:`w-px h-5 bg-border mx-1`})]}),!c&&(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(`button`,{type:`button`,className:X(`p-1.5 rounded hover:bg-accent`,m.count===0&&`opacity-40 pointer-events-none`),title:Z.copyShortcut,"aria-label":Z.copy,disabled:m.count===0,onClick:ee,children:(0,J.jsx)(D,{className:`h-4 w-4`})}),(0,J.jsx)(`button`,{type:`button`,className:X(`p-1.5 rounded hover:bg-accent`,!g.hasContent&&`opacity-40 pointer-events-none`),title:Z.pasteShortcut,"aria-label":Z.paste,disabled:!g.hasContent,onClick:I,children:(0,J.jsx)(k,{className:`h-4 w-4`})}),(0,J.jsx)(`div`,{className:`w-px h-5 bg-border mx-1`})]}),!c&&(0,J.jsx)(`button`,{type:`button`,className:X(`p-1.5 rounded hover:bg-accent`,m.count===0&&`opacity-40 pointer-events-none`),title:Z.deleteSelected,"aria-label":Z.deleteSelected,disabled:m.count===0,onClick:P,children:(0,J.jsx)(B,{className:`h-4 w-4`})}),(0,J.jsx)(`div`,{className:`flex-1`}),v?.isConnected&&(0,J.jsxs)(`span`,{className:`flex items-center gap-1 text-xs text-muted-foreground`,children:[(0,J.jsx)(`span`,{className:`inline-block h-2 w-2 rounded-full bg-green-500`}),Z.collaborationConnected,v.users.length>1&&` (${v.users.length})`]}),(0,J.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[n,` `,r]}),s&&(0,J.jsx)(`button`,{type:`button`,className:`p-1.5 rounded hover:bg-accent`,title:b?Z.collapsePanel:Z.expandPanel,"aria-label":b?Z.collapsePanel:Z.expandPanel,onClick:()=>x(e=>!e),children:(0,J.jsx)(ue,{className:X(`h-4 w-4`,!b&&`rotate-180`)})})]}),(0,J.jsx)(`div`,{role:`region`,"aria-label":Z.reportCanvas,className:`flex-1 overflow-auto bg-muted/10 p-4 flex justify-center`,children:(0,J.jsx)(`div`,{className:`bg-white shadow-lg border`,style:{width:E,minHeight:O},children:f.map((e,t)=>(0,J.jsxs)(`div`,{className:`relative border-b border-dashed border-gray-300`,style:{minHeight:e.height},onDragOver:ne,onDrop:e=>R(e,t),children:[(0,J.jsxs)(`div`,{className:`absolute left-0 top-0 px-2 py-0.5 bg-muted text-xs text-muted-foreground border-r border-b rounded-br`,children:[A(e.type),e.repeat&&` ↻`]}),!c&&(0,J.jsxs)(`div`,{className:`absolute right-1 top-0 flex items-center gap-0.5`,children:[(0,J.jsx)(`button`,{type:`button`,onClick:()=>M(t,`text`),className:`p-0.5 rounded hover:bg-accent`,title:Z.addText,"aria-label":Z.addText,children:(0,J.jsx)(Re,{className:`h-3 w-3`})}),(0,J.jsx)(`button`,{type:`button`,onClick:()=>M(t,`field`),className:`p-0.5 rounded hover:bg-accent`,title:Z.addField,"aria-label":Z.addField,children:(0,J.jsx)(w,{className:`h-3 w-3`})}),(0,J.jsx)(`button`,{type:`button`,onClick:()=>M(t,`image`),className:`p-0.5 rounded hover:bg-accent`,title:Z.addImage,"aria-label":Z.addImage,children:(0,J.jsx)(We,{className:`h-3 w-3`})}),(0,J.jsx)(`button`,{type:`button`,onClick:()=>M(t,`chart`),className:`p-0.5 rounded hover:bg-accent`,title:Z.addChart,"aria-label":Z.addChart,children:(0,J.jsx)(V,{className:`h-3 w-3`})}),(0,J.jsx)(`button`,{type:`button`,onClick:()=>M(t,`table`),className:`p-0.5 rounded hover:bg-accent`,title:Z.addTable,"aria-label":Z.addTable,children:(0,J.jsx)(L,{className:`h-3 w-3`})})]}),(0,J.jsxs)(`div`,{className:`relative`,style:{minHeight:e.height,paddingTop:24},children:[e.elements.length===0&&(0,J.jsx)(`div`,{className:`text-xs text-muted-foreground text-center pt-4`,children:Z.addElementsPrompt}),e.elements.map(e=>{let n=m.isSelected(e.id);return(0,J.jsxs)(`div`,{draggable:!c,onDragStart:n=>te(n,e,t),className:X(`absolute border rounded px-2 py-1 text-xs cursor-pointer`,n?`border-primary ring-1 ring-primary/30 bg-primary/5`:`border-dashed border-gray-400 hover:border-primary/50`),style:{left:e.position.x,top:(typeof e.position.y==`number`?e.position.y:0)+24,width:e.position.width,height:e.position.height},onClick:t=>m.toggle(e.id,t.shiftKey),children:[(0,J.jsxs)(`span`,{className:`text-muted-foreground`,children:[e.type===`text`&&(e.properties.text??Z.elementText),e.type===`field`&&`{${e.properties.field??`field`}}`,e.type===`image`&&Z.elementImage,e.type===`chart`&&Z.elementChart,e.type===`table`&&Z.elementTable]}),!c&&n&&(0,J.jsx)(`button`,{type:`button`,onClick:t=>{t.stopPropagation(),N(e.id)},className:`absolute -top-2 -right-2 p-0.5 rounded-full bg-destructive text-destructive-foreground shadow`,"aria-label":Z.deleteElement,children:(0,J.jsx)(B,{className:`h-2.5 w-2.5`})})]},e.id)})]})]},`${e.type}-${t}`))})})]}),s&&(0,J.jsx)(`div`,{role:`region`,"aria-label":Z.propertiesPanel,className:X(`border-l bg-muted/30 flex flex-col transition-[width] duration-200`,b?`w-56`:`w-0 overflow-hidden`),children:b&&(h&&j?(0,J.jsx)(rt,{title:`${Z.properties} – ${j.type}`,fields:z,onChange:F}):(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(`div`,{className:`p-3 border-b font-medium text-sm`,children:Z.properties}),(0,J.jsx)(`div`,{className:`flex-1 overflow-y-auto p-3`,children:(0,J.jsx)(`div`,{className:`text-xs text-muted-foreground text-center py-4`,children:Z.selectElementPrompt})})]}))}),(0,J.jsx)(tt,{isOpen:_.isOpen,title:_.title,message:_.message,onConfirm:_.onConfirm,onCancel:_.onCancel})]})}var wt=_({"appDesigner.basicInfo":`Basic Info`,"appDesigner.objects":`Objects`,"appDesigner.navigation":`Navigation`,"appDesigner.branding":`Branding`,"appDesigner.stepBasicDesc":`Name, title, and layout`,"appDesigner.stepObjectsDesc":`Select business objects`,"appDesigner.stepNavigationDesc":`Build navigation tree`,"appDesigner.stepBrandingDesc":`Logo, colors, and favicon`,"appDesigner.appName":`App Name`,"appDesigner.appTitle":`Title`,"appDesigner.appDescription":`Description`,"appDesigner.appIcon":`Icon`,"appDesigner.template":`Template`,"appDesigner.layout":`Layout`,"appDesigner.layoutSidebar":`Sidebar`,"appDesigner.layoutHeader":`Header`,"appDesigner.layoutEmpty":`Empty`,"appDesigner.snakeCaseHint":`Must be snake_case (e.g. my_app)`,"appDesigner.searchObjects":`Search objects…`,"appDesigner.selectAll":`Select All`,"appDesigner.deselectAll":`Deselect All`,"appDesigner.noObjectsFound":`No objects found.`,"appDesigner.addGroup":`Add Group`,"appDesigner.addUrl":`Add URL`,"appDesigner.addSeparator":`Add Separator`,"appDesigner.noNavItemsHint":`No navigation items yet. Select objects in the previous step or add items manually.`,"appDesigner.separatorLabel":`— Separator —`,"appDesigner.newGroup":`New Group`,"appDesigner.newLink":`New Link`,"appDesigner.logoUrl":`Logo URL`,"appDesigner.primaryColor":`Primary Color`,"appDesigner.faviconUrl":`Favicon URL`,"appDesigner.preview":`Preview`,"common.cancel":`Cancel`,"common.back":`Back`,"common.next":`Next`,"common.close":`Close`,"appDesigner.complete":`Complete`,"appDesigner.saveDraft":`Save Draft`,"appDesigner.cancelConfirmTitle":`Discard changes?`,"appDesigner.cancelConfirmMessage":`You have unsaved changes. Are you sure you want to cancel?`,"appDesigner.confirmDiscard":`Discard`,"appDesigner.keepEditing":`Keep Editing`,"appDesigner.navNoItems":`No navigation items. Click buttons above to add items.`,"appDesigner.navNoPreviewItems":`No items`,"appDesigner.navLivePreview":`Live Preview`,"appDesigner.navCollapseGroup":`Collapse group`,"appDesigner.navExpandGroup":`Expand group`,"appDesigner.navAddChild":`Add child`,"appDesigner.navMoveUp":`Move up`,"appDesigner.navMoveDown":`Move down`,"appDesigner.navRemove":`Remove`,"appDesigner.navObjectPage":`Object Page`,"appDesigner.navDashboard":`Dashboard`,"appDesigner.navPage":`Page`,"appDesigner.navReport":`Report`,"appDesigner.navGroup":`Group`,"appDesigner.navUrl":`URL`,"appDesigner.navSeparator":`Separator`,"appDesigner.navTypeObject":`Object`,"appDesigner.navTypeDashboard":`Dashboard`,"appDesigner.navTypePage":`Page`,"appDesigner.navTypeReport":`Report`,"appDesigner.navTypeUrl":`URL`,"appDesigner.navTypeGroup":`Group`,"appDesigner.navTypeSeparator":`Separator`,"appDesigner.navTypeAction":`Action`,"appDesigner.navTypeComponent":`Component`,"appDesigner.navEditIcon":`Edit icon`,"appDesigner.navToggleVisible":`Toggle visibility`,"appDesigner.navHidden":`Hidden`,"appDesigner.navExportSchema":`Export JSON`,"appDesigner.navImportSchema":`Import JSON`,"appDesigner.navExportSuccess":`Navigation schema exported`,"appDesigner.navImportSuccess":`Navigation schema imported`,"appDesigner.navImportError":`Invalid navigation JSON`,"appDesigner.navIconPlaceholder":`Icon name (e.g. Users)`,"appDesigner.dashboardEditor":`Dashboard Editor`,"appDesigner.noWidgets":`No widgets. Click a button above to add one.`,"appDesigner.widgetLayoutSize":`Layout Size`,"appDesigner.widgetWidth":`Width`,"appDesigner.widgetHeight":`Height`,"appDesigner.dashboardPreview":`Dashboard Preview`,"appDesigner.noWidgetsPreview":`No widgets to preview`,"appDesigner.widgetProperties":`Widget Properties`,"appDesigner.addWidget":`Add Widget`,"appDesigner.modeEdit":`Edit`,"appDesigner.pageCanvasEditor":`Page Canvas Editor`,"appDesigner.emptyPage":`Empty page. Click a button above to add a component.`,"appDesigner.pagePreview":`Page Preview`,"appDesigner.noComponentsPreview":`No components to preview`,"appDesigner.modePage":`Page`,"appDesigner.modeDashboard":`Dashboard`,"appDesigner.undo":`Undo`,"appDesigner.redo":`Redo`,"appDesigner.brandingEditor":`Branding Editor`,"appDesigner.brandingExport":`Export JSON`,"appDesigner.brandingImport":`Import JSON`,"appDesigner.brandingPreview":`Preview`,"appDesigner.brandingSampleButton":`Sample Button`,"appDesigner.brandingSampleText":`This is how your brand theme will look.`,"appDesigner.colorPalette":`Color Palette`,"appDesigner.fontFamily":`Font Family`,"appDesigner.fontDefault":`Default (System)`,"appDesigner.modeLight":`Light`,"appDesigner.modeDark":`Dark`,"appDesigner.mobilePreview":`Mobile Preview`,"appDesigner.objectManager.title":`Object Manager`,"appDesigner.objectManager.addObject":`New Object`,"appDesigner.objectManager.searchPlaceholder":`Search objects…`,"appDesigner.objectManager.noObjects":`No objects found.`,"appDesigner.objectManager.objectName":`API Name`,"appDesigner.objectManager.objectLabel":`Label`,"appDesigner.objectManager.pluralLabel":`Plural Label`,"appDesigner.objectManager.icon":`Icon`,"appDesigner.objectManager.selectIcon":`Select icon…`,"appDesigner.objectManager.group":`Group`,"appDesigner.objectManager.noGroup":`No Group`,"appDesigner.objectManager.sortOrder":`Sort Order`,"appDesigner.objectManager.relationships":`Relationships`,"appDesigner.objectManager.systemBadge":`System`,"appDesigner.objectManager.fieldCount":`{{count}} fields`,"appDesigner.objectManager.ungrouped":`Ungrouped`,"appDesigner.objectManager.deleteConfirmTitle":`Delete Object?`,"appDesigner.objectManager.deleteConfirmMessage":`This will permanently delete the object and all its fields. This action cannot be undone.`,"appDesigner.fieldDesigner.title":`Field Designer`,"appDesigner.fieldDesigner.addField":`New Field`,"appDesigner.fieldDesigner.searchPlaceholder":`Search fields…`,"appDesigner.fieldDesigner.allTypes":`All Types`,"appDesigner.fieldDesigner.noFields":`No fields found.`,"appDesigner.fieldDesigner.fieldName":`API Name`,"appDesigner.fieldDesigner.fieldLabel":`Label`,"appDesigner.fieldDesigner.fieldType":`Type`,"appDesigner.fieldDesigner.fieldGroup":`Group`,"appDesigner.fieldDesigner.description":`Description`,"appDesigner.fieldDesigner.required":`Required`,"appDesigner.fieldDesigner.unique":`Unique`,"appDesigner.fieldDesigner.readOnly":`Read Only`,"appDesigner.fieldDesigner.hidden":`Hidden`,"appDesigner.fieldDesigner.externalId":`External ID`,"appDesigner.fieldDesigner.trackHistory":`Track History`,"appDesigner.fieldDesigner.defaultValue":`Default Value`,"appDesigner.fieldDesigner.placeholder":`Placeholder`,"appDesigner.fieldDesigner.referenceTo":`Reference To`,"appDesigner.fieldDesigner.options":`Options`,"appDesigner.fieldDesigner.addOption":`Add Option`,"appDesigner.fieldDesigner.validationRules":`Validation Rules`,"appDesigner.fieldDesigner.addRule":`Add Rule`,"appDesigner.fieldDesigner.systemBadge":`System`,"appDesigner.fieldDesigner.ungrouped":`General`,"appDesigner.fieldDesigner.deleteConfirmTitle":`Delete Field?`,"appDesigner.fieldDesigner.deleteConfirmMessage":`This will permanently delete the field. Existing data in this field will be lost.`,"appDesigner.fieldDesigner.basicSection":`Basic`,"appDesigner.fieldDesigner.typeSpecificSection":`Type Settings`,"appDesigner.fieldDesigner.advancedSection":`Advanced`,"appDesigner.fieldDesigner.typeCategory.text":`Text`,"appDesigner.fieldDesigner.typeCategory.number":`Number`,"appDesigner.fieldDesigner.typeCategory.date":`Date & Time`,"appDesigner.fieldDesigner.typeCategory.choice":`Choice`,"appDesigner.fieldDesigner.typeCategory.relation":`Relation`,"appDesigner.fieldDesigner.typeCategory.advanced":`Advanced`,"common.edit":`Edit`,"common.delete":`Delete`},`appDesigner.basicInfo`);function Q(...e){return W(G(e))}var Tt={name:``,title:``,description:``,icon:``,template:``,layout:`sidebar`,objects:[],navigation:[],branding:{logo:``,primaryColor:`#3b82f6`,favicon:``}};function Et(e){return e.filter(e=>e.selected).map(e=>({id:e.name,type:`object`,label:e.pluralLabel||e.label,icon:e.icon,objectName:e.name}))}var Dt=0;function Ot(e){return Dt+=1,`${e}_${Date.now()}_${Dt}`}function kt({steps:e,currentIndex:t,onStepClick:n}){return(0,J.jsx)(`nav`,{className:`flex items-center justify-center gap-0 px-4 py-6`,children:e.map((e,r)=>{let i=r<t,a=r===t;return(0,J.jsxs)(q.Fragment,{children:[r>0&&(0,J.jsx)(`div`,{className:Q(`h-0.5 w-12 sm:w-20`,i?`bg-blue-500`:`bg-gray-200`)}),(0,J.jsxs)(`button`,{type:`button`,"data-testid":`wizard-step-${e.id}`,onClick:()=>n(r),className:Q(`flex flex-col items-center gap-1 outline-none focus-visible:ring-2 focus-visible:ring-blue-400 rounded-lg px-2 py-1`,a&&`cursor-default`,!a&&`cursor-pointer`),children:[(0,J.jsx)(`div`,{className:Q(`flex h-8 w-8 items-center justify-center rounded-full text-sm font-semibold transition-colors`,i&&`bg-blue-500 text-white`,a&&`bg-blue-600 text-white ring-2 ring-blue-300`,!i&&!a&&`bg-gray-200 text-gray-500`),children:i?(0,J.jsx)(xe,{className:`h-4 w-4`}):r+1}),(0,J.jsx)(`span`,{className:Q(`text-xs font-medium`,a?`text-blue-600`:`text-gray-500`),children:e.label})]})]},e.id)})})}function At({draft:e,templates:t,readOnly:n,onChange:r,t:i}){let o=e.name.length>0&&!a(e.name);return(0,J.jsxs)(`div`,{"data-testid":`wizard-step-basic-content`,className:`mx-auto max-w-lg space-y-5`,children:[(0,J.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,J.jsxs)(`label`,{htmlFor:`app-name`,className:`block text-sm font-medium text-gray-700`,children:[i(`appDesigner.appName`),` `,(0,J.jsx)(`span`,{className:`text-red-500`,children:`*`})]}),(0,J.jsx)(`input`,{id:`app-name`,"data-testid":`app-name-input`,type:`text`,value:e.name,onChange:e=>r({name:e.target.value}),placeholder:`my_app`,disabled:n,className:Q(`block w-full rounded-md border px-3 py-2 text-sm shadow-sm outline-none transition-colors`,`focus:border-blue-500 focus:ring-1 focus:ring-blue-500`,`disabled:cursor-not-allowed disabled:bg-gray-50`,o?`border-red-400`:`border-gray-300`)}),o&&(0,J.jsx)(`p`,{className:`text-xs text-red-500`,children:i(`appDesigner.snakeCaseHint`)})]}),(0,J.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,J.jsxs)(`label`,{htmlFor:`app-title`,className:`block text-sm font-medium text-gray-700`,children:[i(`appDesigner.appTitle`),` `,(0,J.jsx)(`span`,{className:`text-red-500`,children:`*`})]}),(0,J.jsx)(`input`,{id:`app-title`,"data-testid":`app-title-input`,type:`text`,value:e.title,onChange:e=>r({title:e.target.value}),placeholder:`My Application`,disabled:n,className:`block w-full rounded-md border border-gray-300 px-3 py-2 text-sm shadow-sm outline-none transition-colors focus:border-blue-500 focus:ring-1 focus:ring-blue-500 disabled:cursor-not-allowed disabled:bg-gray-50`})]}),(0,J.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,J.jsx)(`label`,{htmlFor:`app-description`,className:`block text-sm font-medium text-gray-700`,children:i(`appDesigner.appDescription`)}),(0,J.jsx)(`textarea`,{id:`app-description`,"data-testid":`app-description-input`,value:e.description??``,onChange:e=>r({description:e.target.value}),rows:3,disabled:n,className:`block w-full rounded-md border border-gray-300 px-3 py-2 text-sm shadow-sm outline-none transition-colors focus:border-blue-500 focus:ring-1 focus:ring-blue-500 disabled:cursor-not-allowed disabled:bg-gray-50 resize-none`})]}),(0,J.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,J.jsx)(`label`,{htmlFor:`app-icon`,className:`block text-sm font-medium text-gray-700`,children:i(`appDesigner.appIcon`)}),(0,J.jsx)(`input`,{id:`app-icon`,type:`text`,value:e.icon??``,onChange:e=>r({icon:e.target.value}),placeholder:`LayoutDashboard`,disabled:n,className:`block w-full rounded-md border border-gray-300 px-3 py-2 text-sm shadow-sm outline-none transition-colors focus:border-blue-500 focus:ring-1 focus:ring-blue-500 disabled:cursor-not-allowed disabled:bg-gray-50`})]}),t.length>0&&(0,J.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,J.jsx)(`label`,{htmlFor:`app-template`,className:`block text-sm font-medium text-gray-700`,children:i(`appDesigner.template`)}),(0,J.jsxs)(`select`,{id:`app-template`,value:e.template??``,onChange:e=>r({template:e.target.value}),disabled:n,className:`block w-full rounded-md border border-gray-300 px-3 py-2 text-sm shadow-sm outline-none transition-colors focus:border-blue-500 focus:ring-1 focus:ring-blue-500 disabled:cursor-not-allowed disabled:bg-gray-50`,children:[(0,J.jsx)(`option`,{value:``,children:`None`}),t.map(e=>(0,J.jsx)(`option`,{value:e.id,children:e.label},e.id))]})]}),(0,J.jsxs)(`fieldset`,{className:`space-y-2`,children:[(0,J.jsx)(`legend`,{className:`text-sm font-medium text-gray-700`,children:i(`appDesigner.layout`)}),(0,J.jsx)(`div`,{className:`flex gap-3`,children:[{value:`sidebar`,labelKey:`appDesigner.layoutSidebar`,Icon:A},{value:`header`,labelKey:`appDesigner.layoutHeader`,Icon:F},{value:`empty`,labelKey:`appDesigner.layoutEmpty`,Icon:E}].map(({value:t,labelKey:a,Icon:o})=>(0,J.jsxs)(`label`,{"data-testid":`app-layout-${t}`,className:Q(`flex flex-1 cursor-pointer flex-col items-center gap-1.5 rounded-lg border-2 p-3 transition-colors`,e.layout===t?`border-blue-500 bg-blue-50`:`border-gray-200 hover:border-gray-300`,n&&`pointer-events-none opacity-60`),children:[(0,J.jsx)(o,{className:`h-5 w-5 text-gray-600`}),(0,J.jsx)(`span`,{className:`text-xs font-medium text-gray-700`,children:i(a)}),(0,J.jsx)(`input`,{type:`radio`,name:`layout`,value:t,checked:e.layout===t,onChange:()=>r({layout:t}),disabled:n,className:`sr-only`})]},t))})]})]})}function jt({objects:e,readOnly:t,onToggle:n,onToggleAll:r,search:i,onSearchChange:a,t:o}){let s=(0,q.useMemo)(()=>{if(!i)return e;let t=i.toLowerCase();return e.filter(e=>e.name.toLowerCase().includes(t)||e.label.toLowerCase().includes(t))},[e,i]),c=e.length>0&&e.every(e=>e.selected);return e.every(e=>!e.selected),(0,J.jsxs)(`div`,{"data-testid":`wizard-step-objects-content`,className:`mx-auto max-w-2xl space-y-4`,children:[(0,J.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,J.jsxs)(`div`,{className:`relative flex-1`,children:[(0,J.jsx)(H,{className:`absolute left-2.5 top-2.5 h-4 w-4 text-gray-400`}),(0,J.jsx)(`input`,{"data-testid":`object-search`,type:`text`,value:i,onChange:e=>a(e.target.value),placeholder:o(`appDesigner.searchObjects`),className:`block w-full rounded-md border border-gray-300 py-2 pl-9 pr-3 text-sm shadow-sm outline-none transition-colors focus:border-blue-500 focus:ring-1 focus:ring-blue-500`})]}),(0,J.jsx)(`button`,{type:`button`,onClick:()=>r(!c),disabled:t,className:`rounded-md border border-gray-300 px-3 py-2 text-xs font-medium text-gray-600 transition-colors hover:bg-gray-50 disabled:cursor-not-allowed disabled:opacity-50`,children:o(c?`appDesigner.deselectAll`:`appDesigner.selectAll`)})]}),s.length===0?(0,J.jsx)(`p`,{className:`py-8 text-center text-sm text-gray-400`,children:o(`appDesigner.noObjectsFound`)}):(0,J.jsx)(`div`,{className:`grid grid-cols-2 gap-3 sm:grid-cols-3`,children:s.map(e=>(0,J.jsxs)(`button`,{type:`button`,"data-testid":`object-card-${e.name}`,disabled:t,onClick:()=>n(e.name),className:Q(`flex flex-col items-start gap-1 rounded-lg border-2 p-3 text-left transition-colors`,e.selected?`border-blue-500 bg-blue-50`:`border-gray-200 hover:border-gray-300`,t&&`pointer-events-none opacity-60`),children:[(0,J.jsxs)(`div`,{className:`flex w-full items-center justify-between`,children:[(0,J.jsx)(`span`,{className:`text-sm font-medium text-gray-800`,children:e.label}),(0,J.jsx)(`div`,{className:Q(`flex h-5 w-5 items-center justify-center rounded border transition-colors`,e.selected?`border-blue-500 bg-blue-500 text-white`:`border-gray-300`),children:e.selected&&(0,J.jsx)(xe,{className:`h-3 w-3`})})]}),(0,J.jsx)(`span`,{className:`text-xs text-gray-500`,children:e.name}),e.icon&&(0,J.jsx)(`span`,{className:`text-xs text-gray-400`,children:e.icon})]},e.name))})]})}var Mt={object:`bg-green-100 text-green-700`,group:`bg-purple-100 text-purple-700`,url:`bg-sky-100 text-sky-700`,separator:`bg-gray-100 text-gray-600`,dashboard:`bg-amber-100 text-amber-700`,page:`bg-teal-100 text-teal-700`,report:`bg-rose-100 text-rose-700`,action:`bg-orange-100 text-orange-700`};function Nt({items:e,readOnly:t,onAdd:n,onRemove:r,onReorder:i,t:a}){return(0,J.jsxs)(`div`,{"data-testid":`wizard-step-navigation-content`,className:`mx-auto max-w-lg space-y-4`,children:[(0,J.jsxs)(`div`,{className:`flex gap-2`,children:[(0,J.jsxs)(`button`,{type:`button`,"data-testid":`add-group-btn`,onClick:()=>n(`group`),disabled:t,className:`inline-flex items-center gap-1.5 rounded-md border border-gray-300 px-3 py-1.5 text-xs font-medium text-gray-600 transition-colors hover:bg-gray-50 disabled:cursor-not-allowed disabled:opacity-50`,children:[(0,J.jsx)(Te,{className:`h-3.5 w-3.5`}),a(`appDesigner.addGroup`)]}),(0,J.jsxs)(`button`,{type:`button`,"data-testid":`add-url-btn`,onClick:()=>n(`url`),disabled:t,className:`inline-flex items-center gap-1.5 rounded-md border border-gray-300 px-3 py-1.5 text-xs font-medium text-gray-600 transition-colors hover:bg-gray-50 disabled:cursor-not-allowed disabled:opacity-50`,children:[(0,J.jsx)(Be,{className:`h-3.5 w-3.5`}),a(`appDesigner.addUrl`)]}),(0,J.jsxs)(`button`,{type:`button`,"data-testid":`add-separator-btn`,onClick:()=>n(`separator`),disabled:t,className:`inline-flex items-center gap-1.5 rounded-md border border-gray-300 px-3 py-1.5 text-xs font-medium text-gray-600 transition-colors hover:bg-gray-50 disabled:cursor-not-allowed disabled:opacity-50`,children:[(0,J.jsx)(we,{className:`h-3.5 w-3.5`}),a(`appDesigner.addSeparator`)]})]}),e.length===0?(0,J.jsx)(`p`,{className:`py-8 text-center text-sm text-gray-400`,children:a(`appDesigner.noNavItemsHint`)}):(0,J.jsx)(`ul`,{className:`space-y-1.5`,children:e.map((n,o)=>(0,J.jsxs)(`li`,{"data-testid":`nav-item-${n.id}`,className:`flex items-center gap-2 rounded-md border border-gray-200 bg-white px-3 py-2`,children:[n.icon&&(0,J.jsx)(`span`,{className:`text-xs text-gray-400`,children:n.icon}),(0,J.jsx)(`span`,{className:`flex-1 truncate text-sm text-gray-800`,children:n.type===`separator`?a(`appDesigner.separatorLabel`):p(n.label)}),(0,J.jsx)(`span`,{className:Q(`rounded-full px-2 py-0.5 text-[10px] font-medium`,Mt[n.type]??`bg-gray-100 text-gray-600`),children:n.type}),(0,J.jsxs)(`div`,{className:`flex items-center gap-0.5`,children:[(0,J.jsx)(`button`,{type:`button`,onClick:()=>i(n.id,`up`),disabled:t||o===0,className:`rounded p-0.5 text-gray-400 transition-colors hover:text-gray-700 disabled:opacity-30`,"aria-label":`Move up`,children:(0,J.jsx)(ye,{className:`h-3.5 w-3.5`})}),(0,J.jsx)(`button`,{type:`button`,onClick:()=>i(n.id,`down`),disabled:t||o===e.length-1,className:`rounded p-0.5 text-gray-400 transition-colors hover:text-gray-700 disabled:opacity-30`,"aria-label":`Move down`,children:(0,J.jsx)(Se,{className:`h-3.5 w-3.5`})}),(0,J.jsx)(`button`,{type:`button`,onClick:()=>r(n.id),disabled:t,className:`rounded p-0.5 text-gray-400 transition-colors hover:text-red-500 disabled:opacity-30`,"aria-label":`Remove`,children:(0,J.jsx)(B,{className:`h-3.5 w-3.5`})})]})]},n.id))})]})}function Pt({branding:e,title:t,readOnly:n,onChange:r,t:i}){return(0,J.jsxs)(`div`,{"data-testid":`wizard-step-branding-content`,className:`mx-auto max-w-lg space-y-5`,children:[(0,J.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,J.jsx)(`label`,{htmlFor:`branding-logo`,className:`block text-sm font-medium text-gray-700`,children:i(`appDesigner.logoUrl`)}),(0,J.jsxs)(`div`,{className:`relative`,children:[(0,J.jsx)(We,{className:`absolute left-2.5 top-2.5 h-4 w-4 text-gray-400`}),(0,J.jsx)(`input`,{id:`branding-logo`,"data-testid":`branding-logo-input`,type:`text`,value:e.logo??``,onChange:e=>r({logo:e.target.value}),placeholder:`https://example.com/logo.svg`,disabled:n,className:`block w-full rounded-md border border-gray-300 py-2 pl-9 pr-3 text-sm shadow-sm outline-none transition-colors focus:border-blue-500 focus:ring-1 focus:ring-blue-500 disabled:cursor-not-allowed disabled:bg-gray-50`})]})]}),(0,J.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,J.jsx)(`label`,{htmlFor:`branding-color`,className:`block text-sm font-medium text-gray-700`,children:i(`appDesigner.primaryColor`)}),(0,J.jsxs)(`div`,{className:`relative`,children:[(0,J.jsx)(N,{className:`absolute left-2.5 top-2.5 h-4 w-4 text-gray-400`}),(0,J.jsx)(`input`,{id:`branding-color`,"data-testid":`branding-color-input`,type:`text`,value:e.primaryColor??`#3b82f6`,onChange:e=>r({primaryColor:e.target.value}),placeholder:`#3b82f6`,disabled:n,className:`block w-full rounded-md border border-gray-300 py-2 pl-9 pr-3 text-sm shadow-sm outline-none transition-colors focus:border-blue-500 focus:ring-1 focus:ring-blue-500 disabled:cursor-not-allowed disabled:bg-gray-50`})]})]}),(0,J.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,J.jsx)(`label`,{htmlFor:`branding-favicon`,className:`block text-sm font-medium text-gray-700`,children:i(`appDesigner.faviconUrl`)}),(0,J.jsxs)(`div`,{className:`relative`,children:[(0,J.jsx)(M,{className:`absolute left-2.5 top-2.5 h-4 w-4 text-gray-400`}),(0,J.jsx)(`input`,{id:`branding-favicon`,"data-testid":`branding-favicon-input`,type:`text`,value:e.favicon??``,onChange:e=>r({favicon:e.target.value}),placeholder:`https://example.com/favicon.ico`,disabled:n,className:`block w-full rounded-md border border-gray-300 py-2 pl-9 pr-3 text-sm shadow-sm outline-none transition-colors focus:border-blue-500 focus:ring-1 focus:ring-blue-500 disabled:cursor-not-allowed disabled:bg-gray-50`})]})]}),(0,J.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,J.jsx)(`span`,{className:`block text-sm font-medium text-gray-700`,children:i(`appDesigner.preview`)}),(0,J.jsxs)(`div`,{className:`rounded-lg border border-gray-200 bg-white p-4`,children:[(0,J.jsxs)(`div`,{className:`flex items-center gap-3`,children:[e.logo?(0,J.jsx)(`img`,{src:e.logo,alt:`App logo`,className:`h-8 w-8 rounded object-contain`}):(0,J.jsx)(`div`,{className:`flex h-8 w-8 items-center justify-center rounded bg-gray-100 text-xs text-gray-400`,children:`Logo`}),(0,J.jsx)(`span`,{className:`text-sm font-semibold text-gray-800`,children:t||i(`appDesigner.appTitle`)})]}),(0,J.jsxs)(`div`,{className:`mt-3 flex items-center gap-2`,children:[(0,J.jsx)(`div`,{className:`h-4 w-4 rounded-full border border-gray-200`,style:{backgroundColor:e.primaryColor||`#3b82f6`}}),(0,J.jsx)(`span`,{className:`text-xs text-gray-500`,children:e.primaryColor||`#3b82f6`})]}),e.favicon&&(0,J.jsxs)(`div`,{className:`mt-2 flex items-center gap-2`,children:[(0,J.jsx)(`img`,{src:e.favicon,alt:`Favicon`,className:`h-4 w-4 rounded object-contain`}),(0,J.jsx)(`span`,{className:`text-xs text-gray-500`,children:`Favicon`})]})]})]})]})}function Ft({availableObjects:e=[],templates:t=[],initialDraft:n,onComplete:r,onCancel:i,onSaveDraft:o,readOnly:s=!1,className:c}){let{t:l}=wt(),u=Xe(),[d,f]=(0,q.useState)(0),[p,m]=(0,q.useState)(``),[h,g]=(0,q.useState)(()=>({...Tt,objects:e.map(e=>({...e})),...n})),_=(0,q.useMemo)(()=>[{id:`basic`,label:l(`appDesigner.basicInfo`),description:l(`appDesigner.stepBasicDesc`),icon:`Settings`},{id:`objects`,label:l(`appDesigner.objects`),description:l(`appDesigner.stepObjectsDesc`),icon:`Database`},{id:`navigation`,label:l(`appDesigner.navigation`),description:l(`appDesigner.stepNavigationDesc`),icon:`Menu`},{id:`branding`,label:l(`appDesigner.branding`),description:l(`appDesigner.stepBrandingDesc`),icon:`Palette`}],[l]),v=d===0,y=d===_.length-1,b=(0,q.useMemo)(()=>h.name.length>0&&a(h.name)&&h.title.trim().length>0,[h.name,h.title]),x=(0,q.useMemo)(()=>d!==0||b,[d,b]),S=(0,q.useCallback)(e=>{g(t=>({...t,...e}))},[]),C=(0,q.useCallback)(e=>{g(t=>({...t,branding:{...t.branding,...e}}))},[]),w=(0,q.useCallback)(e=>{g(t=>({...t,objects:t.objects.map(t=>t.name===e?{...t,selected:!t.selected}:t)}))},[]),T=(0,q.useCallback)(e=>{g(t=>({...t,objects:t.objects.map(t=>({...t,selected:e}))}))},[]),E=(0,q.useCallback)(e=>{let t={id:Ot(e),type:e,label:e===`separator`?``:e===`group`?`New Group`:`New Link`,...e===`group`?{children:[]}:{},...e===`url`?{url:``}:{}};g(e=>({...e,navigation:[...e.navigation,t]}))},[]),D=(0,q.useCallback)(e=>{g(t=>({...t,navigation:t.navigation.filter(t=>t.id!==e)}))},[]),O=(0,q.useCallback)((e,t)=>{g(n=>{let r=[...n.navigation],i=r.findIndex(t=>t.id===e);if(i<0)return n;let a=t===`up`?i-1:i+1;return a<0||a>=r.length?n:([r[i],r[a]]=[r[a],r[i]],{...n,navigation:r})})},[]),k=(0,q.useCallback)(()=>{y||(d===1&&g(e=>({...e,navigation:Et(e.objects)})),f(e=>e+1))},[d,y]),A=(0,q.useCallback)(()=>{v||f(e=>e-1)},[v]),j=(0,q.useCallback)(()=>{r?.(h)},[h,r]),M=(0,q.useCallback)(async()=>{(h.name.length>0||h.title.length>0)&&i?await u.confirm(l(`appDesigner.cancelConfirmTitle`),l(`appDesigner.cancelConfirmMessage`))&&i():i?.()},[h.name,h.title,i,u,l]),N=(0,q.useCallback)(()=>{o?.(h)},[h,o]),P=(0,q.useCallback)(e=>{e<=d?f(e):e===d+1&&x&&(d===1&&e===2&&g(e=>({...e,navigation:Et(e.objects)})),f(e))},[d,x]);return(0,J.jsxs)(`div`,{className:Q(`flex h-full flex-col rounded-xl border border-gray-200 bg-white shadow-sm`,c),children:[u.isOpen&&(0,J.jsx)(`div`,{"data-testid":`cancel-confirm-dialog`,className:`fixed inset-0 z-50 flex items-center justify-center bg-black/40`,role:`dialog`,"aria-modal":`true`,children:(0,J.jsxs)(`div`,{className:`mx-4 w-full max-w-sm rounded-lg bg-white p-6 shadow-xl`,children:[(0,J.jsxs)(`div`,{className:`flex items-start justify-between`,children:[(0,J.jsx)(`h3`,{className:`text-base font-semibold text-gray-900`,children:u.title}),(0,J.jsx)(`button`,{type:`button`,onClick:u.onCancel,className:`rounded p-1 text-gray-400 hover:text-gray-600`,"aria-label":l(`common.close`),children:(0,J.jsx)(Ae,{className:`h-4 w-4`})})]}),(0,J.jsx)(`p`,{className:`mt-2 text-sm text-gray-600`,children:u.message}),(0,J.jsxs)(`div`,{className:`mt-4 flex justify-end gap-2`,children:[(0,J.jsx)(`button`,{type:`button`,"data-testid":`cancel-confirm-keep`,onClick:u.onCancel,className:`rounded-md border border-gray-300 px-3 py-1.5 text-sm font-medium text-gray-700 transition-colors hover:bg-gray-50`,children:l(`appDesigner.keepEditing`)}),(0,J.jsx)(`button`,{type:`button`,"data-testid":`cancel-confirm-discard`,onClick:u.onConfirm,className:`rounded-md bg-red-600 px-3 py-1.5 text-sm font-medium text-white transition-colors hover:bg-red-700`,children:l(`appDesigner.confirmDiscard`)})]})]})}),(0,J.jsx)(`div`,{className:`border-b border-gray-100`,children:(0,J.jsx)(kt,{steps:_,currentIndex:d,onStepClick:P})}),(0,J.jsxs)(`div`,{className:`flex-1 overflow-y-auto p-6`,children:[d===0&&(0,J.jsx)(At,{draft:h,templates:t,readOnly:s,onChange:S,t:l}),d===1&&(0,J.jsx)(jt,{objects:h.objects,readOnly:s,onToggle:w,onToggleAll:T,search:p,onSearchChange:m,t:l}),d===2&&(0,J.jsx)(Nt,{items:h.navigation,readOnly:s,onAdd:E,onRemove:D,onReorder:O,t:l}),d===3&&(0,J.jsx)(Pt,{branding:h.branding,title:h.title,readOnly:s,onChange:C,t:l})]}),(0,J.jsxs)(`div`,{className:`flex items-center justify-between border-t border-gray-100 px-6 py-4`,children:[(0,J.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,J.jsx)(`button`,{type:`button`,"data-testid":`wizard-cancel`,onClick:M,disabled:s,className:`rounded-md px-4 py-2 text-sm font-medium text-gray-600 transition-colors hover:bg-gray-100 disabled:cursor-not-allowed disabled:opacity-50`,children:l(`common.cancel`)}),o&&(0,J.jsx)(`button`,{type:`button`,"data-testid":`wizard-save-draft`,onClick:N,disabled:s,className:`rounded-md border border-gray-300 px-4 py-2 text-sm font-medium text-gray-600 transition-colors hover:bg-gray-50 disabled:cursor-not-allowed disabled:opacity-50`,children:l(`appDesigner.saveDraft`)})]}),(0,J.jsxs)(`div`,{className:`flex items-center gap-2`,children:[!v&&(0,J.jsxs)(`button`,{type:`button`,"data-testid":`wizard-back`,onClick:A,disabled:s,className:`inline-flex items-center gap-1 rounded-md border border-gray-300 px-4 py-2 text-sm font-medium text-gray-700 transition-colors hover:bg-gray-50 disabled:cursor-not-allowed disabled:opacity-50`,children:[(0,J.jsx)(ke,{className:`h-4 w-4`}),l(`common.back`)]}),y?(0,J.jsxs)(`button`,{type:`button`,"data-testid":`wizard-complete`,onClick:j,disabled:s||!x,className:`inline-flex items-center gap-1 rounded-md bg-blue-600 px-4 py-2 text-sm font-medium text-white transition-colors hover:bg-blue-700 disabled:cursor-not-allowed disabled:opacity-50`,children:[(0,J.jsx)(xe,{className:`h-4 w-4`}),l(`appDesigner.complete`)]}):(0,J.jsxs)(`button`,{type:`button`,"data-testid":`wizard-next`,onClick:k,disabled:s||!x,className:`inline-flex items-center gap-1 rounded-md bg-blue-600 px-4 py-2 text-sm font-medium text-white transition-colors hover:bg-blue-700 disabled:cursor-not-allowed disabled:opacity-50`,children:[l(`common.next`),(0,J.jsx)(je,{className:`h-4 w-4`})]})]})]})]})}function It(...e){return W(G(e))}var Lt=0;function Rt(e){return Lt+=1,`${e}_${Date.now()}_${Lt}`}var zt={object:{labelKey:`appDesigner.navTypeObject`,color:`bg-green-100 text-green-700`,Icon:te},dashboard:{labelKey:`appDesigner.navTypeDashboard`,color:`bg-amber-100 text-amber-700`,Icon:ne},page:{labelKey:`appDesigner.navTypePage`,color:`bg-teal-100 text-teal-700`,Icon:Le},report:{labelKey:`appDesigner.navTypeReport`,color:`bg-rose-100 text-rose-700`,Icon:V},url:{labelKey:`appDesigner.navTypeUrl`,color:`bg-sky-100 text-sky-700`,Icon:Be},component:{labelKey:`appDesigner.navTypeComponent`,color:`bg-indigo-100 text-indigo-700`,Icon:x},group:{labelKey:`appDesigner.navTypeGroup`,color:`bg-purple-100 text-purple-700`,Icon:Te},separator:{labelKey:`appDesigner.navTypeSeparator`,color:`bg-gray-100 text-gray-600`,Icon:we},action:{labelKey:`appDesigner.navTypeAction`,color:`bg-orange-100 text-orange-700`,Icon:v}},Bt=[{type:`object`,labelKey:`appDesigner.navObjectPage`},{type:`dashboard`,labelKey:`appDesigner.navDashboard`},{type:`page`,labelKey:`appDesigner.navPage`},{type:`report`,labelKey:`appDesigner.navReport`},{type:`group`,labelKey:`appDesigner.navGroup`},{type:`url`,labelKey:`appDesigner.navUrl`},{type:`separator`,labelKey:`appDesigner.navSeparator`}];function Vt({item:e,depth:t,index:n,total:r,readOnly:i,onRemove:a,onMoveUp:o,onMoveDown:s,onToggleExpand:c,onUpdateLabel:l,onUpdateIcon:u,onToggleVisible:d,onAddChild:f,expandedIds:m,t:h}){let[g,_]=(0,q.useState)(!1),[v,y]=(0,q.useState)(p(e.label)??``),[b,x]=(0,q.useState)(!1),[S,T]=(0,q.useState)(e.icon||``),E=zt[e.type];e.type===`group`&&e.children&&e.children.length;let D=m.has(e.id),O=e.visible===!1,k=()=>{v.trim()?l(e.id,v.trim()):y(p(e.label)??``),_(!1)},A=()=>{u(e.id,S.trim()),x(!1)};return(0,J.jsxs)(J.Fragment,{children:[(0,J.jsxs)(`li`,{"data-testid":`nav-designer-item-${e.id}`,className:It(`flex items-center gap-2 rounded-md border border-gray-200 bg-white px-2 py-1.5 transition-colors hover:bg-gray-50`,O&&`opacity-50`),style:{marginLeft:t*20},children:[(0,J.jsx)(P,{className:`h-3.5 w-3.5 shrink-0 cursor-grab text-gray-300`}),e.type===`group`?(0,J.jsx)(`button`,{type:`button`,onClick:()=>c(e.id),className:`rounded p-0.5 text-gray-400 hover:text-gray-600`,"aria-label":h(D?`appDesigner.navCollapseGroup`:`appDesigner.navExpandGroup`),children:D?(0,J.jsx)(Se,{className:`h-3.5 w-3.5`}):(0,J.jsx)(je,{className:`h-3.5 w-3.5`})}):(0,J.jsx)(`span`,{className:`w-5`}),b&&!i?(0,J.jsx)(`input`,{type:`text`,value:S,onChange:e=>T(e.target.value),onBlur:A,onKeyDown:t=>{t.key===`Enter`&&A(),t.key===`Escape`&&(T(e.icon||``),x(!1))},autoFocus:!0,placeholder:h(`appDesigner.navIconPlaceholder`),"data-testid":`nav-designer-icon-input-${e.id}`,className:`w-24 rounded border border-blue-300 px-1 py-0.5 text-xs outline-none focus:ring-1 focus:ring-blue-400`}):(0,J.jsxs)(`span`,{className:`flex items-center gap-0.5`,children:[(0,J.jsx)(E.Icon,{className:`h-3.5 w-3.5 shrink-0 text-gray-500`}),!i&&e.type!==`separator`&&(0,J.jsx)(`button`,{type:`button`,onClick:()=>{T(e.icon||``),x(!0)},className:`rounded p-0.5 text-gray-300 hover:text-blue-500`,"aria-label":h(`appDesigner.navEditIcon`),"data-testid":`nav-designer-edit-icon-${e.id}`,children:(0,J.jsx)(z,{className:`h-2.5 w-2.5`})})]}),e.type===`separator`?(0,J.jsx)(`span`,{className:`flex-1 text-xs italic text-gray-400`,children:h(`appDesigner.separatorLabel`)}):g&&!i?(0,J.jsx)(`input`,{type:`text`,value:v,onChange:e=>y(e.target.value),onBlur:k,onKeyDown:t=>{t.key===`Enter`&&k(),t.key===`Escape`&&(y(p(e.label)??``),_(!1))},autoFocus:!0,className:`flex-1 rounded border border-blue-300 px-1.5 py-0.5 text-sm outline-none focus:ring-1 focus:ring-blue-400`}):(0,J.jsx)(`span`,{className:It(`flex-1 truncate text-sm text-gray-800`,!i&&`cursor-text`),onDoubleClick:()=>{!i&&e.type!==`separator`&&(y(p(e.label)??``),_(!0))},children:p(e.label)}),(0,J.jsx)(`span`,{className:It(`rounded-full px-2 py-0.5 text-[10px] font-medium`,E.color),children:h(E.labelKey)}),O&&(0,J.jsx)(`span`,{className:`rounded-full bg-gray-200 px-1.5 py-0.5 text-[10px] font-medium text-gray-500`,"data-testid":`nav-designer-hidden-badge-${e.id}`,children:h(`appDesigner.navHidden`)}),!i&&e.type!==`separator`&&(0,J.jsx)(`button`,{type:`button`,onClick:()=>d(e.id),className:`rounded p-0.5 text-gray-400 hover:text-gray-700`,"aria-label":h(`appDesigner.navToggleVisible`),"data-testid":`nav-designer-toggle-visible-${e.id}`,children:O?(0,J.jsx)(C,{className:`h-3.5 w-3.5`}):(0,J.jsx)(ce,{className:`h-3.5 w-3.5`})}),e.type===`group`&&!i&&(0,J.jsx)(`button`,{type:`button`,onClick:()=>f(e.id,`page`),className:`rounded p-0.5 text-gray-400 hover:text-blue-500`,"aria-label":h(`appDesigner.navAddChild`),"data-testid":`nav-designer-add-child-${e.id}`,children:(0,J.jsx)(w,{className:`h-3.5 w-3.5`})}),(0,J.jsx)(`button`,{type:`button`,onClick:()=>o(e.id),disabled:i||n===0,className:`rounded p-0.5 text-gray-400 hover:text-gray-700 disabled:opacity-30`,"aria-label":h(`appDesigner.navMoveUp`),children:(0,J.jsx)(ye,{className:`h-3.5 w-3.5`})}),(0,J.jsx)(`button`,{type:`button`,onClick:()=>s(e.id),disabled:i||n===r-1,className:`rounded p-0.5 text-gray-400 hover:text-gray-700 disabled:opacity-30`,"aria-label":h(`appDesigner.navMoveDown`),children:(0,J.jsx)(Se,{className:`h-3.5 w-3.5`})}),(0,J.jsx)(`button`,{type:`button`,onClick:()=>a(e.id),disabled:i,className:`rounded p-0.5 text-gray-400 hover:text-red-500 disabled:opacity-30`,"aria-label":h(`appDesigner.navRemove`),"data-testid":`nav-designer-remove-${e.id}`,children:(0,J.jsx)(B,{className:`h-3.5 w-3.5`})})]}),e.type===`group`&&D&&e.children&&(0,J.jsx)(J.Fragment,{children:e.children.map((n,r)=>(0,J.jsx)(Vt,{item:n,depth:t+1,index:r,total:e.children.length,readOnly:i,onRemove:a,onMoveUp:o,onMoveDown:s,onToggleExpand:c,onUpdateLabel:l,onUpdateIcon:u,onToggleVisible:d,onAddChild:f,expandedIds:m,t:h},n.id))})]})}function Ht({items:e,t}){return(0,J.jsxs)(`div`,{"data-testid":`nav-designer-preview`,className:`w-56 shrink-0 rounded-lg border border-gray-200 bg-gray-50 p-3`,children:[(0,J.jsx)(`h4`,{className:`mb-2 text-xs font-semibold uppercase text-gray-500`,children:t(`appDesigner.navLivePreview`)}),e.length===0?(0,J.jsx)(`p`,{className:`text-xs text-gray-400`,children:t(`appDesigner.navNoPreviewItems`)}):(0,J.jsx)(`ul`,{className:`space-y-0.5`,children:e.map(e=>(0,J.jsx)(Ut,{item:e,depth:0},e.id))})]})}function Ut({item:e,depth:t}){let n=zt[e.type];return e.type===`separator`?(0,J.jsx)(`li`,{className:`my-1 border-t border-gray-200`,style:{marginLeft:t*12}}):(0,J.jsxs)(J.Fragment,{children:[(0,J.jsxs)(`li`,{className:`flex items-center gap-1.5 rounded px-2 py-1 text-xs text-gray-700 hover:bg-gray-100`,style:{marginLeft:t*12},children:[(0,J.jsx)(n.Icon,{className:`h-3 w-3 text-gray-400`}),(0,J.jsx)(`span`,{className:`truncate`,children:p(e.label)})]}),e.type===`group`&&e.children?.map(e=>(0,J.jsx)(Ut,{item:e,depth:t+1},e.id))]})}function Wt({items:e,onChange:t,readOnly:n=!1,showPreview:r=!0,className:i,onExport:a,onImport:o}){let{t:s}=wt(),c=(0,q.useRef)(null),[l,u]=(0,q.useState)(()=>new Set(e.filter(e=>e.type===`group`).map(e=>e.id))),d=(0,q.useCallback)(n=>{function r(e){return e.filter(e=>e.id!==n).map(e=>e.children?{...e,children:r(e.children)}:e)}t(r(e))},[e,t]),f=(0,q.useCallback)((n,r)=>{function i(e){let t=e.findIndex(e=>e.id===n);if(t>=0){let n=r===`up`?t-1:t+1;if(n>=0&&n<e.length){let r=[...e];return[r[t],r[n]]=[r[n],r[t]],r}return e}return e.map(e=>e.children?{...e,children:i(e.children)}:e)}t(i(e))},[e,t]),p=(0,q.useCallback)((n,r)=>{function i(e){return e.map(e=>e.id===n?{...e,label:r}:e.children?{...e,children:i(e.children)}:e)}t(i(e))},[e,t]),m=(0,q.useCallback)((n,r)=>{function i(e){return e.map(e=>e.id===n?{...e,icon:r||void 0}:e.children?{...e,children:i(e.children)}:e)}t(i(e))},[e,t]),h=(0,q.useCallback)(n=>{function r(e){return e.map(e=>e.id===n?{...e,visible:e.visible===!1}:e.children?{...e,children:r(e.children)}:e)}t(r(e))},[e,t]),g=(0,q.useCallback)((n,r)=>{let i={id:Rt(r),type:r,label:r===`separator`?``:`New ${s(zt[r].labelKey)}`,...r===`group`?{children:[]}:{},...r===`url`?{url:``}:{}};function a(e){return e.map(e=>e.id===n&&e.type===`group`?{...e,children:[...e.children||[],i]}:e.children?{...e,children:a(e.children)}:e)}t(a(e)),u(e=>new Set(e).add(n))},[e,t]),_=(0,q.useCallback)(n=>{let r={id:Rt(n),type:n,label:n===`separator`?``:`New ${s(zt[n].labelKey)}`,...n===`group`?{children:[]}:{},...n===`url`?{url:``}:{}};t([...e,r])},[e,t,s]),v=(0,q.useCallback)(e=>{u(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),y=(0,q.useCallback)(()=>{if(a)a(e);else{let t=JSON.stringify(e,null,2),n=new Blob([t],{type:`application/json`}),r=URL.createObjectURL(n),i=document.createElement(`a`);i.href=r,i.download=`navigation-schema.json`,i.click(),URL.revokeObjectURL(r)}},[e,a]),b=(0,q.useCallback)(e=>{let n=e.target.files?.[0];if(!n)return;let r=new FileReader;r.onload=e=>{try{let n=JSON.parse(e.target?.result);Array.isArray(n)&&(o?o(n):t(n))}catch{}},r.readAsText(n),c.current&&(c.current.value=``)},[t,o]);return(0,J.jsxs)(`div`,{"data-testid":`navigation-designer`,className:It(`flex flex-col gap-4 sm:flex-row`,i),children:[(0,J.jsxs)(`div`,{className:`flex-1 space-y-3`,children:[(0,J.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[Bt.map(({type:e,labelKey:t})=>{let{Icon:r,color:i}=zt[e];return(0,J.jsxs)(`button`,{type:`button`,"data-testid":`nav-designer-add-${e}`,onClick:()=>_(e),disabled:n,className:It(`inline-flex items-center gap-1 rounded-md border border-gray-200 px-2.5 py-1 text-xs font-medium transition-colors hover:bg-gray-50 disabled:cursor-not-allowed disabled:opacity-50`),children:[(0,J.jsx)(w,{className:`h-3 w-3`}),s(t)]},e)}),(0,J.jsx)(`span`,{className:`mx-1 hidden h-4 w-px bg-gray-200 sm:block`}),(0,J.jsxs)(`button`,{type:`button`,"data-testid":`nav-designer-export`,onClick:y,className:`inline-flex items-center gap-1 rounded-md border border-gray-200 px-2.5 py-1 text-xs font-medium transition-colors hover:bg-gray-50`,children:[(0,J.jsx)(R,{className:`h-3 w-3`}),s(`appDesigner.navExportSchema`)]}),(0,J.jsxs)(`label`,{"data-testid":`nav-designer-import`,className:It(`inline-flex cursor-pointer items-center gap-1 rounded-md border border-gray-200 px-2.5 py-1 text-xs font-medium transition-colors hover:bg-gray-50`,n&&`cursor-not-allowed opacity-50`),children:[(0,J.jsx)(Ce,{className:`h-3 w-3`}),s(`appDesigner.navImportSchema`),(0,J.jsx)(`input`,{ref:c,type:`file`,accept:`.json`,className:`hidden`,onChange:b,disabled:n,"data-testid":`nav-designer-import-input`})]})]}),e.length===0?(0,J.jsx)(`div`,{className:`py-8 text-center text-sm text-gray-400`,children:s(`appDesigner.navNoItems`)}):(0,J.jsx)(`ul`,{className:`space-y-1`,"data-testid":`nav-designer-tree`,children:e.map((t,r)=>(0,J.jsx)(Vt,{item:t,depth:0,index:r,total:e.length,readOnly:n,onRemove:d,onMoveUp:e=>f(e,`up`),onMoveDown:e=>f(e,`down`),onToggleExpand:v,onUpdateLabel:p,onUpdateIcon:m,onToggleVisible:h,onAddChild:g,expandedIds:l,t:s},t.id))})]}),r&&(0,J.jsx)(Ht,{items:e,t:s})]})}function Gt(...e){return W(G(e))}var Kt=[{type:`metric`,label:`KPI Metric`,Icon:U},{type:`bar`,label:`Bar Chart`,Icon:V},{type:`line`,label:`Line Chart`,Icon:S},{type:`pie`,label:`Pie Chart`,Icon:He},{type:`table`,label:`Table`,Icon:L}],qt=0;function Jt(){return qt+=1,`widget_${Date.now()}_${qt}`}function Yt(e,t){return h(e,t)}function Xt(e,t,n){return g(e,t,n)}function Zt({widget:e,index:t,total:n,selected:r,readOnly:i,onSelect:a,onRemove:o,onMoveUp:s,onMoveDown:c}){let l=e.type||`metric`,u=Kt.find(e=>e.type===l)||Kt[0],{language:d}=wt(),f=Yt(e.title,d);return(0,J.jsxs)(`div`,{"data-testid":`dashboard-widget-${e.id}`,onClick:a,className:Gt(`group cursor-pointer rounded-lg border-2 p-3 transition-colors`,r?`border-blue-500 bg-blue-50`:`border-gray-200 hover:border-gray-300`),children:[(0,J.jsxs)(`div`,{className:`flex items-start justify-between`,children:[(0,J.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,J.jsx)(P,{className:`h-4 w-4 text-gray-300`}),(0,J.jsx)(u.Icon,{className:`h-4 w-4 text-gray-500`}),(0,J.jsx)(`span`,{className:`text-sm font-medium text-gray-800`,children:f||`Widget ${t+1}`})]}),!i&&(0,J.jsxs)(`div`,{className:`flex items-center gap-0.5 opacity-0 transition-opacity group-hover:opacity-100`,children:[(0,J.jsx)(`button`,{type:`button`,onClick:e=>{e.stopPropagation(),s()},disabled:t===0,className:`rounded p-0.5 text-gray-400 hover:text-gray-700 disabled:opacity-30`,"aria-label":`Move up`,children:(0,J.jsx)(ye,{className:`h-3.5 w-3.5`})}),(0,J.jsx)(`button`,{type:`button`,onClick:e=>{e.stopPropagation(),c()},disabled:t===n-1,className:`rounded p-0.5 text-gray-400 hover:text-gray-700 disabled:opacity-30`,"aria-label":`Move down`,children:(0,J.jsx)(Se,{className:`h-3.5 w-3.5`})}),(0,J.jsx)(`button`,{type:`button`,onClick:e=>{e.stopPropagation(),o()},className:`rounded p-0.5 text-gray-400 hover:text-red-500`,"aria-label":`Remove widget`,"data-testid":`dashboard-widget-remove-${e.id}`,children:(0,J.jsx)(B,{className:`h-3.5 w-3.5`})})]})]}),(0,J.jsx)(`div`,{className:`mt-1.5 flex items-center gap-2`,children:(0,J.jsx)(`span`,{className:`rounded-full bg-gray-100 px-2 py-0.5 text-[10px] font-medium text-gray-600`,children:u.label})})]})}function Qt({widget:e,readOnly:t,onChange:n,onClose:r}){let{t:i,language:a}=wt(),o=Yt(e.title,a);return(0,J.jsxs)(`div`,{"data-testid":`widget-property-panel`,className:`shrink-0 space-y-4 rounded-lg border border-gray-200 bg-white p-4`,children:[(0,J.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,J.jsx)(`h4`,{className:`text-sm font-semibold text-gray-800`,children:i(`appDesigner.widgetProperties`)}),(0,J.jsx)(`button`,{type:`button`,onClick:r,className:`rounded p-0.5 text-gray-400 hover:text-gray-600`,"aria-label":`Close`,children:(0,J.jsx)(Ae,{className:`h-4 w-4`})})]}),(0,J.jsxs)(`div`,{className:`space-y-1`,children:[(0,J.jsx)(`label`,{htmlFor:`widget-title`,className:`text-xs font-medium text-gray-600`,children:`Title`}),(0,J.jsx)(`input`,{id:`widget-title`,"data-testid":`widget-prop-title`,type:`text`,value:o,onChange:t=>{n({title:Xt(e.title,a,t.target.value)})},disabled:t,className:`block w-full rounded-md border border-gray-300 px-2.5 py-1.5 text-sm outline-none focus:border-blue-500 focus:ring-1 focus:ring-blue-500 disabled:bg-gray-50`})]}),(0,J.jsxs)(`div`,{className:`space-y-1`,children:[(0,J.jsx)(`label`,{htmlFor:`widget-type`,className:`text-xs font-medium text-gray-600`,children:`Type`}),(0,J.jsx)(`select`,{id:`widget-type`,"data-testid":`widget-prop-type`,value:e.type??`metric`,onChange:e=>{let t=Kt.find(t=>t.type===e.target.value);t&&n({type:t.type})},disabled:t,className:`block w-full rounded-md border border-gray-300 px-2.5 py-1.5 text-sm outline-none focus:border-blue-500 focus:ring-1 focus:ring-blue-500 disabled:bg-gray-50`,children:Kt.map(e=>(0,J.jsx)(`option`,{value:e.type,children:e.label},e.type))})]}),(0,J.jsxs)(`div`,{className:`space-y-1`,children:[(0,J.jsx)(`label`,{htmlFor:`widget-color`,className:`text-xs font-medium text-gray-600`,children:`Color Variant`}),(0,J.jsxs)(`select`,{id:`widget-color`,"data-testid":`widget-prop-color`,value:e.colorVariant??`default`,onChange:e=>n({colorVariant:e.target.value}),disabled:t,className:`block w-full rounded-md border border-gray-300 px-2.5 py-1.5 text-sm outline-none focus:border-blue-500 focus:ring-1 focus:ring-blue-500 disabled:bg-gray-50`,children:[(0,J.jsx)(`option`,{value:`default`,children:`Default`}),(0,J.jsx)(`option`,{value:`blue`,children:`Blue`}),(0,J.jsx)(`option`,{value:`teal`,children:`Teal`}),(0,J.jsx)(`option`,{value:`orange`,children:`Orange`}),(0,J.jsx)(`option`,{value:`purple`,children:`Purple`}),(0,J.jsx)(`option`,{value:`success`,children:`Success`}),(0,J.jsx)(`option`,{value:`warning`,children:`Warning`}),(0,J.jsx)(`option`,{value:`danger`,children:`Danger`})]})]}),(0,J.jsxs)(`div`,{className:`space-y-1`,children:[(0,J.jsx)(`label`,{className:`text-xs font-medium text-gray-600`,children:i(`appDesigner.widgetLayoutSize`)}),(0,J.jsxs)(`div`,{className:`flex gap-2`,children:[(0,J.jsxs)(`div`,{className:`flex-1`,children:[(0,J.jsx)(`label`,{htmlFor:`widget-width`,className:`text-[10px] text-gray-400`,children:i(`appDesigner.widgetWidth`)}),(0,J.jsx)(`input`,{id:`widget-width`,"data-testid":`widget-prop-width`,type:`number`,min:1,value:e.layout?.w??1,onChange:t=>n({layout:{...e.layout,w:Number(t.target.value)||1}}),disabled:t,className:`block w-full rounded-md border border-gray-300 px-2 py-1 text-sm outline-none focus:border-blue-500 focus:ring-1 focus:ring-blue-500 disabled:bg-gray-50`})]}),(0,J.jsxs)(`div`,{className:`flex-1`,children:[(0,J.jsx)(`label`,{htmlFor:`widget-height`,className:`text-[10px] text-gray-400`,children:i(`appDesigner.widgetHeight`)}),(0,J.jsx)(`input`,{id:`widget-height`,"data-testid":`widget-prop-height`,type:`number`,min:1,value:e.layout?.h??1,onChange:t=>n({layout:{...e.layout,h:Number(t.target.value)||1}}),disabled:t,className:`block w-full rounded-md border border-gray-300 px-2 py-1 text-sm outline-none focus:border-blue-500 focus:ring-1 focus:ring-blue-500 disabled:bg-gray-50`})]})]})]})]})}function $t({schema:e}){let{t,language:n}=wt(),r=e.widgets||[];return(0,J.jsxs)(`div`,{"data-testid":`dashboard-preview`,className:`rounded-lg border border-gray-200 bg-gray-50 p-4`,children:[(0,J.jsx)(`h4`,{className:`mb-3 text-sm font-semibold text-gray-700`,children:e.title||t(`appDesigner.dashboardPreview`)}),r.length===0?(0,J.jsx)(`div`,{className:`text-xs text-gray-400`,children:t(`appDesigner.noWidgetsPreview`)}):(0,J.jsx)(`div`,{className:`grid gap-2`,style:{gridTemplateColumns:`repeat(${e.columns??2}, 1fr)`},children:r.map(e=>{let t=Kt.find(t=>t.type===(e.type||`metric`))||Kt[0];return(0,J.jsxs)(`div`,{className:`rounded-md border border-gray-200 bg-white p-2`,children:[(0,J.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,J.jsx)(t.Icon,{className:`h-3 w-3 text-gray-400`}),(0,J.jsx)(`span`,{className:`text-xs font-medium text-gray-600`,children:Yt(e.title,n)||`Untitled`})]}),(0,J.jsx)(`div`,{className:`mt-1 text-[10px] text-gray-400`,children:t.label})]},e.id)})})]})}function en({schema:e,onChange:t,readOnly:n=!1,className:r,onExport:i,onImport:a,selectedWidgetId:o,onWidgetSelect:s}){let{t:c}=wt(),[l,u]=(0,q.useState)(null),[d,f]=(0,q.useState)(!1),p=(0,q.useRef)(null),m=(0,q.useRef)(null),h=o!==void 0,g=h?o:l,_=(0,q.useCallback)(e=>{s&&s(e),h||u(e)},[h,s,u]),{current:v,canUndo:y,canRedo:b,push:x,undo:S,redo:w}=Ye(e),T=(0,q.useCallback)(e=>{x(e),t(e)},[x,t]),E=v.widgets||[],D=E.find(e=>e.id===g),O=(0,q.useCallback)(e=>{let t=Jt(),n={id:t,title:``,type:e,layout:{x:0,y:E.length,w:v.columns??2,h:1}};T({...v,widgets:[...E,n]}),_(t)},[v,E,T,_]),k=(0,q.useCallback)(e=>{T({...v,widgets:E.filter(t=>t.id!==e)}),g===e&&_(null)},[v,E,g,T,_]),A=(0,q.useCallback)((e,t)=>{let n=E.findIndex(t=>t.id===e);if(n<0)return;let r=t===`up`?n-1:n+1;if(r<0||r>=E.length)return;let i=[...E];[i[n],i[r]]=[i[r],i[n]],T({...v,widgets:i})},[v,E,T]),j=(0,q.useCallback)(e=>{g&&T({...v,widgets:E.map(t=>t.id===g?{...t,...e}:t)})},[v,E,g,T]);(0,q.useEffect)(()=>{let e=p.current;if(!e)return;let t=e=>{if(!n){if((e.ctrlKey||e.metaKey)&&e.key===`z`&&!e.shiftKey){e.preventDefault(),S();return}if((e.ctrlKey||e.metaKey)&&(e.key===`y`||e.key===`z`&&e.shiftKey)){e.preventDefault(),w();return}if((e.key===`Delete`||e.key===`Backspace`)&&g){let t=e.target;if(t.tagName===`INPUT`||t.tagName===`SELECT`||t.tagName===`TEXTAREA`)return;e.preventDefault(),k(g)}}};return e.addEventListener(`keydown`,t),()=>e.removeEventListener(`keydown`,t)},[n,S,w,g,k]);let M=(0,q.useCallback)(()=>{i&&i(v)},[v,i]),N=(0,q.useCallback)(()=>{m.current?.click()},[]),P=(0,q.useCallback)(e=>{let t=e.target.files?.[0];if(!t)return;let n=new FileReader;n.onload=()=>{try{let e=JSON.parse(n.result);e&&e.type===`dashboard`&&(T(e),a?.(e))}catch{}},n.readAsText(t),e.target.value=``},[T,a]);return(0,J.jsxs)(`div`,{ref:p,tabIndex:0,"data-testid":`dashboard-editor`,className:Gt(`flex flex-col gap-4 outline-none`,r),children:[(0,J.jsx)(`input`,{ref:m,type:`file`,accept:`.json`,className:`hidden`,"data-testid":`dashboard-import-input`,onChange:P}),D&&!d&&(0,J.jsx)(Qt,{widget:D,readOnly:n,onChange:j,onClose:()=>_(null)}),(0,J.jsxs)(`div`,{className:`flex-1 space-y-4`,children:[(0,J.jsxs)(`div`,{className:`flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between`,children:[(0,J.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,J.jsxs)(`span`,{className:`text-sm font-medium text-gray-700`,children:[c(`appDesigner.addWidget`),`:`]}),Kt.map(({type:e,label:t,Icon:r})=>(0,J.jsxs)(`button`,{type:`button`,"data-testid":`dashboard-add-${e}`,onClick:()=>O(e),disabled:n||d,className:`inline-flex items-center gap-1.5 rounded-md border border-gray-200 px-2.5 py-1.5 text-xs font-medium text-gray-600 transition-colors hover:bg-gray-50 disabled:cursor-not-allowed disabled:opacity-50`,children:[(0,J.jsx)(r,{className:`h-3.5 w-3.5`}),t]},e))]}),(0,J.jsxs)(`div`,{className:`flex items-center gap-1`,children:[!n&&(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(`button`,{type:`button`,"data-testid":`dashboard-undo`,onClick:S,disabled:!y,className:`rounded p-1.5 text-gray-400 hover:text-gray-700 disabled:opacity-30`,"aria-label":c(`appDesigner.undo`),children:(0,J.jsx)(me,{className:`h-4 w-4`})}),(0,J.jsx)(`button`,{type:`button`,"data-testid":`dashboard-redo`,onClick:w,disabled:!b,className:`rounded p-1.5 text-gray-400 hover:text-gray-700 disabled:opacity-30`,"aria-label":c(`appDesigner.redo`),children:(0,J.jsx)(ge,{className:`h-4 w-4`})})]}),(0,J.jsx)(`button`,{type:`button`,"data-testid":`dashboard-export`,onClick:M,className:`rounded p-1.5 text-gray-400 hover:text-gray-700`,"aria-label":c(`appDesigner.navExportSchema`),children:(0,J.jsx)(R,{className:`h-4 w-4`})}),!n&&(0,J.jsx)(`button`,{type:`button`,"data-testid":`dashboard-import`,onClick:N,className:`rounded p-1.5 text-gray-400 hover:text-gray-700`,"aria-label":c(`appDesigner.navImportSchema`),children:(0,J.jsx)(Ce,{className:`h-4 w-4`})}),(0,J.jsx)(`button`,{type:`button`,"data-testid":`dashboard-preview-toggle`,onClick:()=>f(e=>!e),className:Gt(`rounded p-1.5 transition-colors`,d?`bg-blue-100 text-blue-600`:`text-gray-400 hover:text-gray-700`),"aria-label":c(d?`appDesigner.modeEdit`:`appDesigner.preview`),children:d?(0,J.jsx)(C,{className:`h-4 w-4`}):(0,J.jsx)(ce,{className:`h-4 w-4`})})]})]}),d?(0,J.jsx)($t,{schema:v}):E.length===0?(0,J.jsx)(`div`,{className:`flex h-48 items-center justify-center rounded-lg border-2 border-dashed border-gray-200 text-sm text-gray-400`,children:c(`appDesigner.noWidgets`)}):(0,J.jsx)(`div`,{className:`grid gap-3`,style:{gridTemplateColumns:`repeat(${v.columns??2}, 1fr)`},children:E.map((e,t)=>(0,J.jsx)(Zt,{widget:e,index:t,total:E.length,selected:e.id===g,readOnly:n,onSelect:()=>_(e.id??null),onRemove:()=>k(e.id),onMoveUp:()=>A(e.id,`up`),onMoveDown:()=>A(e.id,`down`)},e.id))})]})]})}function $(...e){return W(G(e))}var tn=[{hex:`#3b82f6`,name:`Blue`},{hex:`#6366f1`,name:`Indigo`},{hex:`#8b5cf6`,name:`Violet`},{hex:`#a855f7`,name:`Purple`},{hex:`#ec4899`,name:`Pink`},{hex:`#ef4444`,name:`Red`},{hex:`#f97316`,name:`Orange`},{hex:`#f59e0b`,name:`Amber`},{hex:`#eab308`,name:`Yellow`},{hex:`#22c55e`,name:`Green`},{hex:`#14b8a6`,name:`Teal`},{hex:`#06b6d4`,name:`Cyan`},{hex:`#0ea5e9`,name:`Sky`},{hex:`#64748b`,name:`Slate`},{hex:`#1e293b`,name:`Dark`},{hex:`#0f172a`,name:`Navy`}],nn=[`Inter`,`Roboto`,`Open Sans`,`Lato`,`Montserrat`,`Poppins`,`Source Sans Pro`,`Noto Sans`,`system-ui`];function rn({branding:e,onChange:t,appTitle:n=`My App`,readOnly:r=!1,className:i,onExport:a,onImport:o}){let{t:s}=wt(),[c,l]=(0,q.useState)(`light`),{current:u,push:d,canUndo:f,canRedo:p,undo:m,redo:h}=Ye(e),g=(0,q.useRef)(!0);(0,q.useEffect)(()=>{if(g.current){g.current=!1;return}t(u)},[u]);let _=(0,q.useCallback)(e=>{let n={...u,...e};g.current=!0,d(n),t(n)},[u,d,t]),v=(0,q.useCallback)(()=>{if(a){a(u);return}let e=new Blob([JSON.stringify(u,null,2)],{type:`application/json`}),t=URL.createObjectURL(e),n=document.createElement(`a`);n.href=t,n.download=`branding.json`,n.click(),URL.revokeObjectURL(t)},[u,a]),y=(0,q.useCallback)(()=>{if(o){o(u);return}let e=document.createElement(`input`);e.type=`file`,e.accept=`.json`,e.onchange=e=>{let n=e.target.files?.[0];if(!n)return;let r=new FileReader;r.onload=e=>{try{let n=JSON.parse(e.target?.result);if(typeof n==`object`&&n){let e={...u,...n};d(e),t(e)}}catch{}},r.readAsText(n)},e.click()},[u,d,t,o]),b=(0,q.useCallback)(e=>{r||((e.ctrlKey||e.metaKey)&&e.key===`z`&&(e.preventDefault(),e.shiftKey?h():m()),(e.ctrlKey||e.metaKey)&&e.key===`y`&&(e.preventDefault(),h()))},[r,m,h]),x=u.primaryColor||`#3b82f6`,S=c===`dark`;return(0,J.jsxs)(`div`,{"data-testid":`branding-editor`,className:$(`flex flex-col gap-4 sm:gap-6`,i),onKeyDown:b,tabIndex:0,children:[(0,J.jsxs)(`div`,{"data-testid":`branding-editor-toolbar`,className:`flex flex-wrap items-center gap-2`,children:[(0,J.jsx)(`h2`,{className:`text-lg font-semibold text-gray-800 mr-auto`,children:s(`appDesigner.brandingEditor`)}),(0,J.jsxs)(`button`,{"data-testid":`branding-undo`,type:`button`,onClick:m,disabled:!f||r,className:$(`inline-flex items-center gap-1 rounded-md border px-2.5 py-1.5 text-xs font-medium shadow-sm transition-colors`,f&&!r?`border-gray-300 bg-white text-gray-700 hover:bg-gray-50`:`border-gray-200 bg-gray-50 text-gray-400 cursor-not-allowed`),title:s(`appDesigner.undo`),children:[(0,J.jsx)(me,{className:`h-3.5 w-3.5`}),s(`appDesigner.undo`)]}),(0,J.jsxs)(`button`,{"data-testid":`branding-redo`,type:`button`,onClick:h,disabled:!p||r,className:$(`inline-flex items-center gap-1 rounded-md border px-2.5 py-1.5 text-xs font-medium shadow-sm transition-colors`,p&&!r?`border-gray-300 bg-white text-gray-700 hover:bg-gray-50`:`border-gray-200 bg-gray-50 text-gray-400 cursor-not-allowed`),title:s(`appDesigner.redo`),children:[(0,J.jsx)(ge,{className:`h-3.5 w-3.5`}),s(`appDesigner.redo`)]}),(0,J.jsxs)(`button`,{"data-testid":`branding-export`,type:`button`,onClick:v,className:`inline-flex items-center gap-1 rounded-md border border-gray-300 bg-white px-2.5 py-1.5 text-xs font-medium text-gray-700 shadow-sm transition-colors hover:bg-gray-50`,title:s(`appDesigner.brandingExport`),children:[(0,J.jsx)(R,{className:`h-3.5 w-3.5`}),s(`appDesigner.brandingExport`)]}),(0,J.jsxs)(`button`,{"data-testid":`branding-import`,type:`button`,onClick:y,disabled:r,className:$(`inline-flex items-center gap-1 rounded-md border px-2.5 py-1.5 text-xs font-medium shadow-sm transition-colors`,r?`border-gray-200 bg-gray-50 text-gray-400 cursor-not-allowed`:`border-gray-300 bg-white text-gray-700 hover:bg-gray-50`),title:s(`appDesigner.brandingImport`),children:[(0,J.jsx)(Ce,{className:`h-3.5 w-3.5`}),s(`appDesigner.brandingImport`)]})]}),(0,J.jsxs)(`div`,{className:`flex flex-col gap-4 sm:flex-row sm:gap-6`,children:[(0,J.jsxs)(`div`,{className:`flex-1 space-y-5`,children:[(0,J.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,J.jsx)(`label`,{htmlFor:`be-logo`,className:`block text-sm font-medium text-gray-700`,children:s(`appDesigner.logoUrl`)}),(0,J.jsxs)(`div`,{className:`relative`,children:[(0,J.jsx)(We,{className:`absolute left-2.5 top-2.5 h-4 w-4 text-gray-400`}),(0,J.jsx)(`input`,{id:`be-logo`,"data-testid":`branding-logo-input`,type:`text`,value:u.logo??``,onChange:e=>_({logo:e.target.value}),placeholder:`https://example.com/logo.svg`,disabled:r,className:`block w-full rounded-md border border-gray-300 py-2 pl-9 pr-3 text-sm shadow-sm outline-none transition-colors focus:border-blue-500 focus:ring-1 focus:ring-blue-500 disabled:cursor-not-allowed disabled:bg-gray-50`})]})]}),(0,J.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,J.jsx)(`label`,{htmlFor:`be-color`,className:`block text-sm font-medium text-gray-700`,children:s(`appDesigner.primaryColor`)}),(0,J.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,J.jsxs)(`div`,{className:`relative flex-1`,children:[(0,J.jsx)(N,{className:`absolute left-2.5 top-2.5 h-4 w-4 text-gray-400`}),(0,J.jsx)(`input`,{id:`be-color`,"data-testid":`branding-color-input`,type:`text`,value:u.primaryColor??`#3b82f6`,onChange:e=>_({primaryColor:e.target.value}),placeholder:`#3b82f6`,disabled:r,className:`block w-full rounded-md border border-gray-300 py-2 pl-9 pr-3 text-sm shadow-sm outline-none transition-colors focus:border-blue-500 focus:ring-1 focus:ring-blue-500 disabled:cursor-not-allowed disabled:bg-gray-50`})]}),(0,J.jsx)(`input`,{"data-testid":`branding-color-picker`,type:`color`,value:x,onChange:e=>_({primaryColor:e.target.value}),disabled:r,className:`h-9 w-9 cursor-pointer rounded-md border border-gray-300 p-0.5 disabled:cursor-not-allowed`})]}),(0,J.jsxs)(`div`,{className:`space-y-1`,children:[(0,J.jsx)(`span`,{className:`text-xs text-gray-500`,children:s(`appDesigner.colorPalette`)}),(0,J.jsx)(`div`,{"data-testid":`branding-color-palette`,className:`flex flex-wrap gap-1.5`,children:tn.map(e=>(0,J.jsx)(`button`,{"data-testid":`branding-swatch-${e.hex.slice(1)}`,type:`button`,onClick:()=>!r&&_({primaryColor:e.hex}),disabled:r,className:$(`h-6 w-6 rounded-full border-2 transition-transform hover:scale-110 disabled:cursor-not-allowed`,x===e.hex?`border-gray-800 ring-2 ring-offset-1 ring-gray-400`:`border-transparent`),style:{backgroundColor:e.hex},title:e.name},e.hex))})]})]}),(0,J.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,J.jsx)(`label`,{htmlFor:`be-favicon`,className:`block text-sm font-medium text-gray-700`,children:s(`appDesigner.faviconUrl`)}),(0,J.jsxs)(`div`,{className:`relative`,children:[(0,J.jsx)(M,{className:`absolute left-2.5 top-2.5 h-4 w-4 text-gray-400`}),(0,J.jsx)(`input`,{id:`be-favicon`,"data-testid":`branding-favicon-input`,type:`text`,value:u.favicon??``,onChange:e=>_({favicon:e.target.value}),placeholder:`https://example.com/favicon.ico`,disabled:r,className:`block w-full rounded-md border border-gray-300 py-2 pl-9 pr-3 text-sm shadow-sm outline-none transition-colors focus:border-blue-500 focus:ring-1 focus:ring-blue-500 disabled:cursor-not-allowed disabled:bg-gray-50`})]})]}),(0,J.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,J.jsx)(`label`,{htmlFor:`be-font`,className:`block text-sm font-medium text-gray-700`,children:s(`appDesigner.fontFamily`)}),(0,J.jsxs)(`div`,{className:`relative`,children:[(0,J.jsx)(Re,{className:`absolute left-2.5 top-2.5 h-4 w-4 text-gray-400`}),(0,J.jsxs)(`select`,{id:`be-font`,"data-testid":`branding-font-select`,value:u.fontFamily??``,onChange:e=>_({fontFamily:e.target.value||void 0}),disabled:r,className:`block w-full rounded-md border border-gray-300 py-2 pl-9 pr-3 text-sm shadow-sm outline-none transition-colors focus:border-blue-500 focus:ring-1 focus:ring-blue-500 disabled:cursor-not-allowed disabled:bg-gray-50 appearance-none`,children:[(0,J.jsx)(`option`,{value:``,children:s(`appDesigner.fontDefault`)}),nn.map(e=>(0,J.jsx)(`option`,{value:e,children:e},e))]})]})]})]}),(0,J.jsxs)(`div`,{className:`flex-1 space-y-3`,children:[(0,J.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,J.jsx)(`span`,{className:`text-sm font-medium text-gray-700`,children:s(`appDesigner.brandingPreview`)}),(0,J.jsxs)(`div`,{"data-testid":`branding-mode-toggle`,className:`flex rounded-md border border-gray-300 overflow-hidden`,children:[(0,J.jsxs)(`button`,{"data-testid":`branding-mode-light`,type:`button`,onClick:()=>l(`light`),className:$(`inline-flex items-center gap-1 px-2.5 py-1 text-xs font-medium transition-colors`,c===`light`?`bg-blue-50 text-blue-700`:`bg-white text-gray-600 hover:bg-gray-50`),children:[(0,J.jsx)(re,{className:`h-3.5 w-3.5`}),s(`appDesigner.modeLight`)]}),(0,J.jsxs)(`button`,{"data-testid":`branding-mode-dark`,type:`button`,onClick:()=>l(`dark`),className:$(`inline-flex items-center gap-1 px-2.5 py-1 text-xs font-medium transition-colors`,c===`dark`?`bg-gray-800 text-gray-100`:`bg-white text-gray-600 hover:bg-gray-50`),children:[(0,J.jsx)(Fe,{className:`h-3.5 w-3.5`}),s(`appDesigner.modeDark`)]})]})]}),(0,J.jsxs)(`div`,{"data-testid":`branding-preview`,className:$(`rounded-lg border p-4 transition-colors`,S?`border-gray-700 bg-gray-900 text-gray-100`:`border-gray-200 bg-white text-gray-800`),style:{fontFamily:u.fontFamily||`inherit`},children:[(0,J.jsx)(`div`,{className:`rounded-md p-3 mb-3`,style:{backgroundColor:x},children:(0,J.jsxs)(`div`,{className:`flex items-center gap-3`,children:[u.logo?(0,J.jsx)(`img`,{src:u.logo,alt:`Logo`,className:`h-8 w-8 rounded object-contain bg-white/20`}):(0,J.jsx)(`div`,{className:`flex h-8 w-8 items-center justify-center rounded bg-white/20 text-xs text-white`,children:`Logo`}),(0,J.jsx)(`span`,{className:`text-sm font-semibold text-white`,children:n})]})}),(0,J.jsxs)(`div`,{className:`space-y-2`,children:[(0,J.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,J.jsx)(`div`,{className:`h-4 w-4 rounded-full border border-gray-200`,style:{backgroundColor:x}}),(0,J.jsx)(`span`,{className:$(`text-xs`,S?`text-gray-400`:`text-gray-500`),children:x})]}),(0,J.jsx)(`button`,{type:`button`,className:`rounded-md px-3 py-1.5 text-xs font-medium text-white transition-colors`,style:{backgroundColor:x},tabIndex:-1,children:s(`appDesigner.brandingSampleButton`)}),(0,J.jsx)(`p`,{className:$(`text-xs`,S?`text-gray-400`:`text-gray-500`),children:s(`appDesigner.brandingSampleText`)}),u.favicon&&(0,J.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,J.jsx)(`img`,{src:u.favicon,alt:`Favicon`,className:`h-4 w-4 rounded object-contain`}),(0,J.jsx)(`span`,{className:$(`text-xs`,S?`text-gray-400`:`text-gray-500`),children:`Favicon`})]}),u.fontFamily&&(0,J.jsxs)(`div`,{className:$(`text-xs`,S?`text-gray-400`:`text-gray-500`),children:[s(`appDesigner.fontFamily`),`: `,u.fontFamily]})]})]}),(0,J.jsxs)(`div`,{"data-testid":`branding-preview-mobile`,className:$(`mx-auto w-48 rounded-xl border-2 p-2 transition-colors`,S?`border-gray-700 bg-gray-900`:`border-gray-300 bg-white`),style:{fontFamily:u.fontFamily||`inherit`},children:[(0,J.jsx)(`div`,{className:`text-center text-[10px] font-medium text-gray-400 mb-1`,children:s(`appDesigner.mobilePreview`)}),(0,J.jsx)(`div`,{className:`rounded-md p-2 mb-1`,style:{backgroundColor:x},children:(0,J.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[u.logo?(0,J.jsx)(`img`,{src:u.logo,alt:`Logo`,className:`h-4 w-4 rounded object-contain bg-white/20`}):(0,J.jsx)(`div`,{className:`flex h-4 w-4 items-center justify-center rounded bg-white/20 text-[6px] text-white`,children:`L`}),(0,J.jsx)(`span`,{className:`text-[9px] font-semibold text-white truncate`,children:n})]})}),(0,J.jsxs)(`div`,{className:`space-y-1 px-1`,children:[(0,J.jsx)(`div`,{className:$(`h-2 w-3/4 rounded`,S?`bg-gray-700`:`bg-gray-200`)}),(0,J.jsx)(`div`,{className:$(`h-2 w-1/2 rounded`,S?`bg-gray-700`:`bg-gray-200`)}),(0,J.jsx)(`div`,{className:$(`h-2 w-2/3 rounded`,S?`bg-gray-700`:`bg-gray-200`)})]})]})]})]})]})}function an(...e){return W(G(e))}var on=[`Custom Objects`,`System Objects`,`Integration`,`Analytics`],sn=[`Box`,`Database`,`Users`,`FileText`,`Settings`,`ShoppingCart`,`Calendar`,`Mail`,`Briefcase`,`Building`,`Globe`,`Heart`,`Star`,`Tag`,`Bookmark`,`Folder`,`Archive`,`Package`,`Truck`,`CreditCard`];function cn({objects:e,onObjectsChange:t,onSelectObject:n,showSystemObjects:r=!0,readOnly:i=!1,className:a}){let{t:s}=wt(),c=Xe(),[l,u]=(0,q.useState)(!1),[d,f]=(0,q.useState)(null),p=(0,q.useMemo)(()=>r?e:e.filter(e=>!e.isSystem),[e,r]),m=(0,q.useMemo)(()=>new o({items:p}),[p]),h=(0,q.useMemo)(()=>[{field:`name`,label:s(`appDesigner.objectManager.objectName`),width:160},{field:`label`,label:s(`appDesigner.objectManager.objectLabel`),width:160},{field:`group`,label:s(`appDesigner.objectManager.group`),width:130},{field:`fieldCount`,label:`Fields`,width:80}],[s]),g=(0,q.useMemo)(()=>({type:`object-grid`,objectName:`object_definition`,columns:h,searchableFields:[`name`,`label`,`description`],showSearch:!0,operations:i?void 0:{create:!0,update:!0,delete:!0}}),[h,i]),_=(0,q.useCallback)(t=>{let r=e.find(e=>e.name===t.name);r&&n?.(r)},[e,n]),v=(0,q.useCallback)(t=>{let n=e.find(e=>e.name===t.name);n&&(f(n),u(!0))},[e]),y=(0,q.useCallback)(async n=>{let r=e.find(e=>e.name===n.name);!r||r.isSystem||await c.confirm(s(`appDesigner.objectManager.deleteConfirmTitle`),s(`appDesigner.objectManager.deleteConfirmMessage`))&&t?.(e.filter(e=>e.id!==r.id))},[e,t,c,s]),b=(0,q.useCallback)(()=>{f(null),u(!0)},[]),x=(0,q.useCallback)(n=>{if(d){let r={...d,name:String(n.name||d.name),label:String(n.label||d.label),pluralLabel:n.pluralLabel?String(n.pluralLabel):void 0,description:n.description?String(n.description):void 0,icon:n.icon?String(n.icon):void 0,group:n.group?String(n.group):void 0,sortOrder:typeof n.sortOrder==`number`?n.sortOrder:void 0};t?.(e.map(e=>e.id===d.id?r:e))}else{let r={id:`obj_${Date.now()}`,name:String(n.name||`new_object_${e.length+1}`),label:String(n.label||`New Object ${e.length+1}`),pluralLabel:n.pluralLabel?String(n.pluralLabel):void 0,description:n.description?String(n.description):void 0,icon:n.icon?String(n.icon):void 0,group:n.group?String(n.group):void 0,sortOrder:typeof n.sortOrder==`number`?n.sortOrder:void 0,isSystem:!1,fieldCount:0};t?.([...e,r])}u(!1),f(null)},[d,e,t]),S=(0,q.useCallback)(e=>{e||(u(!1),f(null))},[]),C=(0,q.useMemo)(()=>({type:`object-form`,formType:`modal`,objectName:`object_definition`,mode:d?`edit`:`create`,title:d?`${s(`common.edit`)} — ${d.label}`:s(`appDesigner.objectManager.addObject`),open:l,onOpenChange:S,modalSize:`lg`,customFields:[{name:`name`,label:s(`appDesigner.objectManager.objectName`),type:`text`,required:!0,placeholder:`api_name`,disabled:i||(d?.isSystem??!1)},{name:`label`,label:s(`appDesigner.objectManager.objectLabel`),type:`text`,required:!0,placeholder:`Display Name`,disabled:i},{name:`pluralLabel`,label:s(`appDesigner.objectManager.pluralLabel`),type:`text`,placeholder:`Display Names`,disabled:i},{name:`description`,label:s(`appDesigner.appDescription`),type:`textarea`,disabled:i},{name:`icon`,label:s(`appDesigner.objectManager.icon`),type:`select`,options:sn.map(e=>({label:e,value:e})),disabled:i},{name:`group`,label:s(`appDesigner.objectManager.group`),type:`select`,options:on.map(e=>({label:e,value:e})),disabled:i},{name:`sortOrder`,label:s(`appDesigner.objectManager.sortOrder`),type:`number`,disabled:i}],initialValues:d?{name:d.name,label:d.label,pluralLabel:d.pluralLabel||``,description:d.description||``,icon:d.icon||``,group:d.group||``,sortOrder:d.sortOrder??0}:{},onSuccess:x,onCancel:()=>S(!1),readOnly:i}),[d,l,S,x,i,s]);return(0,J.jsxs)(`div`,{"data-testid":`object-manager`,className:an(`w-full space-y-3`,a),children:[(0,J.jsx)(`div`,{className:`flex items-center justify-between`,children:(0,J.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,J.jsx)(te,{className:`h-4 w-4 text-primary`}),(0,J.jsx)(`h2`,{className:`text-sm font-semibold`,children:s(`appDesigner.objectManager.title`)}),(0,J.jsx)(`span`,{className:`rounded-full bg-muted px-1.5 py-0.5 text-[10px] text-muted-foreground`,children:p.length})]})}),(0,J.jsx)(qe,{schema:g,dataSource:m,onRowClick:_,onEdit:i?void 0:v,onDelete:i?void 0:y,onAddRecord:i?void 0:b}),l&&(0,J.jsx)(Ge,{schema:C}),(0,J.jsx)(tt,{isOpen:c.isOpen,title:c.title,message:c.message,confirmLabel:s(`common.delete`),cancelLabel:s(`common.cancel`),onConfirm:c.onConfirm,onCancel:c.onCancel,destructive:!0})]})}function ln(...e){return W(G(e))}var un={text:{label:`Text`,Icon:Re},textarea:{label:`Text Area`,Icon:Le},number:{label:`Number`,Icon:j},boolean:{label:`Checkbox`,Icon:ze},date:{label:`Date`,Icon:T},datetime:{label:`Date/Time`,Icon:T},time:{label:`Time`,Icon:T},select:{label:`Picklist`,Icon:Ve},email:{label:`Email`,Icon:O},phone:{label:`Phone`,Icon:I},url:{label:`URL`,Icon:M},password:{label:`Password`,Icon:he},currency:{label:`Currency`,Icon:j},percent:{label:`Percent`,Icon:j},lookup:{label:`Lookup`,Icon:le},formula:{label:`Formula`,Icon:se},autonumber:{label:`Auto Number`,Icon:j},file:{label:`File`,Icon:Le},image:{label:`Image`,Icon:We},markdown:{label:`Markdown`,Icon:Le},html:{label:`Rich Text`,Icon:Le},color:{label:`Color`,Icon:N},code:{label:`Code`,Icon:se},location:{label:`Location`,Icon:Me},address:{label:`Address`,Icon:Me},rating:{label:`Rating`,Icon:oe},slider:{label:`Slider`,Icon:Ne}},dn={text:[`text`,`textarea`,`email`,`phone`,`url`,`password`,`markdown`,`html`],number:[`number`,`currency`,`percent`,`autonumber`,`rating`,`slider`],date:[`date`,`datetime`,`time`],choice:[`boolean`,`select`],relation:[`lookup`],advanced:[`formula`,`file`,`image`,`color`,`code`,`location`,`address`]},fn=[`text`,`number`,`date`,`choice`,`relation`,`advanced`];function pn({objectName:e,fields:t,onFieldsChange:n,readOnly:r=!1,className:i}){let{t:a}=wt(),s=Xe(),[c,l]=(0,q.useState)(!1),[u,d]=(0,q.useState)(null),[f,p]=(0,q.useState)(``),m=(0,q.useMemo)(()=>f?t.filter(e=>e.type===f):t,[t,f]),h=(0,q.useMemo)(()=>new o({items:m}),[m]),g=(0,q.useMemo)(()=>[{field:`name`,label:a(`appDesigner.fieldDesigner.fieldName`),width:140},{field:`label`,label:a(`appDesigner.fieldDesigner.fieldLabel`),width:160},{field:`type`,label:a(`appDesigner.fieldDesigner.fieldType`),width:100},{field:`required`,label:a(`appDesigner.fieldDesigner.required`),width:80},{field:`unique`,label:a(`appDesigner.fieldDesigner.unique`),width:80},{field:`group`,label:a(`appDesigner.fieldDesigner.fieldGroup`),width:120}],[a]),_=(0,q.useMemo)(()=>({type:`object-grid`,objectName:`field_definition`,columns:g,searchableFields:[`name`,`label`,`description`],showSearch:!0,operations:r?void 0:{create:!0,update:!0,delete:!0}}),[g,r]),v=(0,q.useCallback)(e=>{let n=t.find(t=>t.name===e.name);n&&(d(n),l(!0))},[t]),y=(0,q.useCallback)(async e=>{let r=t.find(t=>t.name===e.name);!r||r.isSystem||await s.confirm(a(`appDesigner.fieldDesigner.deleteConfirmTitle`),a(`appDesigner.fieldDesigner.deleteConfirmMessage`))&&n?.(t.filter(e=>e.id!==r.id))},[t,n,s,a]),b=(0,q.useCallback)(()=>{d(null),l(!0)},[]),x=(0,q.useCallback)(e=>{if(u){let r={...u,name:String(e.name||u.name),label:String(e.label||u.label),type:e.type||u.type,group:e.group?String(e.group):void 0,description:e.description?String(e.description):void 0,required:e.required===!0,unique:e.unique===!0,readonly:e.readonly===!0,hidden:e.hidden===!0,externalId:e.externalId===!0,trackHistory:e.trackHistory===!0,defaultValue:e.defaultValue?String(e.defaultValue):void 0,placeholder:e.placeholder?String(e.placeholder):void 0,referenceTo:e.referenceTo?String(e.referenceTo):void 0};n?.(t.map(e=>e.id===u.id?r:e))}else{let r={id:`fld_${Date.now()}`,name:String(e.name||`new_field_${t.length+1}`),label:String(e.label||`New Field ${t.length+1}`),type:e.type||`text`,group:e.group?String(e.group):void 0,description:e.description?String(e.description):void 0,required:e.required===!0,unique:e.unique===!0,readonly:e.readonly===!0,hidden:e.hidden===!0,externalId:e.externalId===!0,trackHistory:e.trackHistory===!0,defaultValue:e.defaultValue?String(e.defaultValue):void 0,placeholder:e.placeholder?String(e.placeholder):void 0,referenceTo:e.referenceTo?String(e.referenceTo):void 0,isSystem:!1};n?.([...t,r])}l(!1),d(null)},[u,t,n]),S=(0,q.useCallback)(e=>{e||(l(!1),d(null))},[]),C=(0,q.useMemo)(()=>fn.map(e=>({category:e,label:a(`appDesigner.fieldDesigner.typeCategory.${e}`),options:dn[e].map(e=>({label:un[e].label,value:e}))})),[a]),w=(0,q.useMemo)(()=>C.flatMap(e=>e.options),[C]),T=(0,q.useMemo)(()=>({type:`object-form`,formType:`drawer`,objectName:`field_definition`,mode:u?`edit`:`create`,title:u?`${a(`common.edit`)} — ${u.label}`:a(`appDesigner.fieldDesigner.addField`),open:c,onOpenChange:S,drawerSide:`right`,drawerWidth:`480px`,sections:[{name:`basic`,label:a(`appDesigner.fieldDesigner.basicSection`),fields:[{name:`name`,label:a(`appDesigner.fieldDesigner.fieldName`),type:`text`,required:!0,placeholder:`api_name`,disabled:r||(u?.isSystem??!1)},{name:`label`,label:a(`appDesigner.fieldDesigner.fieldLabel`),type:`text`,required:!0,placeholder:`Display Label`,disabled:r},{name:`type`,label:a(`appDesigner.fieldDesigner.fieldType`),type:`select`,required:!0,options:w,disabled:r||(u?.isSystem??!1)},{name:`required`,label:a(`appDesigner.fieldDesigner.required`),type:`boolean`,disabled:r},{name:`unique`,label:a(`appDesigner.fieldDesigner.unique`),type:`boolean`,disabled:r},{name:`description`,label:a(`appDesigner.fieldDesigner.description`),type:`textarea`,disabled:r}]},{name:`typeSpecific`,label:a(`appDesigner.fieldDesigner.typeSpecificSection`),fields:[{name:`referenceTo`,label:a(`appDesigner.fieldDesigner.referenceTo`),type:`text`,placeholder:`Referenced object`,disabled:r,visibleWhen:`record.type == 'lookup'`},{name:`defaultValue`,label:a(`appDesigner.fieldDesigner.defaultValue`),type:`text`,placeholder:`Default value`,disabled:r},{name:`placeholder`,label:a(`appDesigner.fieldDesigner.placeholder`),type:`text`,placeholder:`Placeholder text`,disabled:r},{name:`group`,label:a(`appDesigner.fieldDesigner.fieldGroup`),type:`text`,placeholder:`Field Group`,disabled:r}]},{name:`advanced`,label:a(`appDesigner.fieldDesigner.advancedSection`),collapsible:!0,collapsed:!0,fields:[{name:`externalId`,label:a(`appDesigner.fieldDesigner.externalId`),type:`boolean`,disabled:r},{name:`trackHistory`,label:a(`appDesigner.fieldDesigner.trackHistory`),type:`boolean`,disabled:r},{name:`readonly`,label:a(`appDesigner.fieldDesigner.readOnly`),type:`boolean`,disabled:r},{name:`hidden`,label:a(`appDesigner.fieldDesigner.hidden`),type:`boolean`,disabled:r}]}],initialValues:u?{name:u.name,label:u.label,type:u.type,group:u.group||``,description:u.description||``,required:u.required||!1,unique:u.unique||!1,readonly:u.readonly||!1,hidden:u.hidden||!1,externalId:u.externalId||!1,trackHistory:u.trackHistory||!1,defaultValue:u.defaultValue==null?``:String(u.defaultValue),placeholder:u.placeholder||``,referenceTo:u.referenceTo||``}:{type:`text`,required:!1,unique:!1},onSuccess:x,onCancel:()=>S(!1),readOnly:r}),[u,c,S,x,w,r,a]);return(0,J.jsxs)(`div`,{"data-testid":`field-designer`,className:ln(`w-full space-y-3`,i),children:[(0,J.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,J.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,J.jsx)(ee,{className:`h-4 w-4 text-primary`}),(0,J.jsx)(`h2`,{className:`text-sm font-semibold`,children:a(`appDesigner.fieldDesigner.title`)}),e&&(0,J.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[`— `,e]}),(0,J.jsx)(`span`,{className:`rounded-full bg-muted px-1.5 py-0.5 text-[10px] text-muted-foreground`,children:m.length})]}),(0,J.jsxs)(`select`,{value:f,onChange:e=>p(e.target.value),"data-testid":`field-designer-type-filter`,className:`rounded-md border border-input bg-background px-2 py-1 text-xs outline-none transition-colors focus:border-primary focus:ring-1 focus:ring-primary`,children:[(0,J.jsx)(`option`,{value:``,children:a(`appDesigner.fieldDesigner.allTypes`)}),C.map(e=>(0,J.jsx)(`optgroup`,{label:e.label,children:e.options.map(e=>(0,J.jsx)(`option`,{value:e.value,children:e.label},e.value))},e.category))]})]}),(0,J.jsx)(qe,{schema:_,dataSource:h,onEdit:r?void 0:v,onDelete:r?void 0:y,onAddRecord:r?void 0:b}),c&&(0,J.jsx)(Ke,{schema:T}),(0,J.jsx)(tt,{isOpen:s.isOpen,title:s.title,message:s.message,confirmLabel:a(`common.delete`),cancelLabel:a(`common.cancel`),onConfirm:s.onConfirm,onCancel:s.onCancel,destructive:!0})]})}var mn=`objectui-app-wizard-draft`;function hn(){let e=i(),{appName:t}=n(),{objects:r,refresh:a}=s(),o=f(),c=(r||[]).map(e=>({name:e.name,label:e.label||e.name,pluralLabel:e.pluralLabel,icon:e.icon,selected:!1})),l=(0,q.useCallback)(()=>{try{let e=localStorage.getItem(mn);if(e)return JSON.parse(e)}catch{}},[]),d=(0,q.useCallback)(async t=>{try{let n=u(t),r=o?.getClient();r&&await r.meta.saveItem(`app`,t.name,n),localStorage.removeItem(mn),K.success(`Application "${t.title}" created successfully`),await a?.(),e(`/apps/${t.name}`)}catch(e){K.error(e?.message||`Failed to create application`)}},[e,a,o]),p=(0,q.useCallback)(()=>{e(t?`/apps/${t}`:`/`)},[e,t]),m=(0,q.useCallback)(e=>{try{localStorage.setItem(mn,JSON.stringify(e)),K.info(`Draft saved`)}catch{}},[]);return(0,J.jsx)(`div`,{className:`mx-auto max-w-4xl py-8 px-4`,"data-testid":`create-app-page`,children:(0,J.jsx)(Ft,{availableObjects:c,initialDraft:l(),onComplete:d,onCancel:p,onSaveDraft:m})})}function gn(){let e=i(),{appName:t,editAppName:r}=n(),{apps:a,objects:o,refresh:c}=s(),l=f(),d=r||t,p=a.find(e=>e.name===d),m=(o||[]).map(e=>({name:e.name,label:e.label||e.name,pluralLabel:e.pluralLabel,icon:e.icon,selected:p?.navigation?.some(t=>t.type===`object`&&t.objectName===e.name)??!1})),h=(0,q.useMemo)(()=>{if(p)return{name:p.name,title:p.title||p.label||``,description:p.description||``,icon:p.icon||``,layout:p.layout||`sidebar`,navigation:p.navigation||[],branding:{logo:p.branding?.logo||p.logo||``,primaryColor:p.branding?.primaryColor||`#3b82f6`,favicon:p.branding?.favicon||p.favicon||``}}},[p]),g=(0,q.useCallback)(async t=>{try{let n=u(t),r={...p,...n},i=l?.getClient();i&&await i.meta.saveItem(`app`,t.name,r),K.success(`Application "${t.title}" updated successfully`),await c?.(),e(`/apps/${t.name}`)}catch(e){K.error(e?.message||`Failed to update application`)}},[e,c,l,p]),_=(0,q.useCallback)(()=>{e(t?`/apps/${t}`:`/`)},[e,t]),v=(0,q.useCallback)(e=>{try{localStorage.setItem(`objectui-edit-draft-${d}`,JSON.stringify(e)),K.info(`Draft saved`)}catch{}},[d]);return p?(0,J.jsx)(`div`,{className:`mx-auto max-w-4xl py-8 px-4`,"data-testid":`edit-app-page`,children:(0,J.jsx)(Ft,{availableObjects:m,initialDraft:h,onComplete:g,onCancel:_,onSaveDraft:v})}):(0,J.jsx)(`div`,{className:`mx-auto max-w-4xl py-8 px-4 text-center`,"data-testid":`edit-app-not-found`,children:(0,J.jsxs)(`p`,{className:`text-muted-foreground`,children:[`Application "`,d,`" not found.`]})})}function _n(){let e=i(),{dashboardName:t}=n(),r=f(),{dashboards:a,refresh:o}=s(),c=a?.find(e=>e.name===t),[u,d]=(0,q.useState)(()=>l(c)||{type:`dashboard`,name:t??``,title:t??``,columns:2,widgets:[]}),p=(0,q.useRef)(u);p.current=u;let m=(0,q.useCallback)(async e=>{try{if(r)return await r.update(`sys_dashboard`,t,e),o().catch(()=>{}),!0}catch{}return!1},[r,t,o]),h=(0,q.useCallback)(async e=>{let t=l(e);d(t),await m(t)},[m]);(0,q.useEffect)(()=>{let e=e=>{(e.ctrlKey||e.metaKey)&&e.key===`s`&&(e.preventDefault(),m(p.current).then(e=>{e&&K.success(`Dashboard saved`)}))};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[m]);let g=(0,q.useCallback)(e=>{let n=new Blob([JSON.stringify(e,null,2)],{type:`application/json`}),r=URL.createObjectURL(n),i=document.createElement(`a`);i.href=r,i.download=`${t||`dashboard`}.json`,i.click(),URL.revokeObjectURL(r),K.success(`Dashboard schema exported`)},[t]),_=(0,q.useCallback)(e=>{K.success(`Dashboard schema imported`),h(e)},[h]);return c?(0,J.jsxs)(`div`,{className:`h-full flex flex-col`,"data-testid":`dashboard-design-page`,children:[(0,J.jsxs)(`div`,{className:`flex items-center gap-3 border-b px-4 py-3 sm:px-6`,children:[(0,J.jsx)(`button`,{type:`button`,onClick:()=>e(-1),className:`rounded p-1.5 text-muted-foreground hover:text-foreground`,"aria-label":`Go back`,"data-testid":`dashboard-design-back`,children:(0,J.jsx)(ie,{className:`h-4 w-4`})}),(0,J.jsxs)(`h1`,{className:`text-lg font-semibold tracking-tight truncate`,children:[`Edit Dashboard: `,c.label||c.title||t]})]}),(0,J.jsx)(`div`,{className:`flex-1 overflow-auto p-4 sm:p-6`,children:(0,J.jsx)(en,{schema:u,onChange:h,onExport:g,onImport:_})})]}):(0,J.jsxs)(`div`,{className:`h-full flex items-center justify-center text-muted-foreground`,children:[`Dashboard "`,t,`" not found`]})}new Set(m),d(`metadataFieldsPageCarryOver`),c.register(`page-designer`,lt,{namespace:`plugin-designer`,label:`Page Designer`,category:`Designer`,inputs:[{name:`canvas`,type:`code`,label:`Canvas Configuration`},{name:`components`,type:`code`,label:`Components`},{name:`showComponentTree`,type:`boolean`,label:`Show Component Tree`,defaultValue:!0},{name:`undoRedo`,type:`boolean`,label:`Undo/Redo`,defaultValue:!0},{name:`readOnly`,type:`boolean`,label:`Read Only`,defaultValue:!1}]}),c.register(`data-model-designer`,ht,{namespace:`plugin-designer`,label:`Data Model Designer`,category:`Designer`,inputs:[{name:`entities`,type:`code`,label:`Entities`},{name:`relationships`,type:`code`,label:`Relationships`},{name:`autoLayout`,type:`boolean`,label:`Auto Layout`,defaultValue:!1},{name:`readOnly`,type:`boolean`,label:`Read Only`,defaultValue:!1}]}),c.register(`process-designer`,bt,{namespace:`plugin-designer`,label:`Process Designer (BPMN)`,category:`Designer`,inputs:[{name:`processName`,type:`string`,label:`Process Name`},{name:`nodes`,type:`code`,label:`Nodes`},{name:`edges`,type:`code`,label:`Edges`},{name:`showMinimap`,type:`boolean`,label:`Show Minimap`,defaultValue:!1},{name:`showToolbar`,type:`boolean`,label:`Show Toolbar`,defaultValue:!0},{name:`readOnly`,type:`boolean`,label:`Read Only`,defaultValue:!1}]}),c.register(`report-designer`,Ct,{namespace:`plugin-designer`,label:`Report Designer`,category:`Designer`,inputs:[{name:`reportName`,type:`string`,label:`Report Name`},{name:`objectName`,type:`string`,label:`Data Source Object`},{name:`sections`,type:`code`,label:`Sections`},{name:`showToolbar`,type:`boolean`,label:`Show Toolbar`,defaultValue:!0},{name:`showPropertyPanel`,type:`boolean`,label:`Show Property Panel`,defaultValue:!0},{name:`readOnly`,type:`boolean`,label:`Read Only`,defaultValue:!1}]}),c.register(`app-creation-wizard`,Ft,{namespace:`plugin-designer`,label:`App Creation Wizard`,category:`Designer`,inputs:[{name:`availableObjects`,type:`code`,label:`Available Objects`},{name:`templates`,type:`code`,label:`Templates`},{name:`readOnly`,type:`boolean`,label:`Read Only`,defaultValue:!1}]}),c.register(`navigation-designer`,Wt,{namespace:`plugin-designer`,label:`Navigation Designer`,category:`Designer`,inputs:[{name:`items`,type:`code`,label:`Navigation Items`},{name:`showPreview`,type:`boolean`,label:`Show Preview`,defaultValue:!0},{name:`readOnly`,type:`boolean`,label:`Read Only`,defaultValue:!1}]}),c.register(`dashboard-editor`,en,{namespace:`plugin-designer`,label:`Dashboard Editor`,category:`Designer`,inputs:[{name:`schema`,type:`code`,label:`Dashboard Schema`},{name:`readOnly`,type:`boolean`,label:`Read Only`,defaultValue:!1}]}),c.register(`branding-editor`,rn,{namespace:`plugin-designer`,label:`Branding Editor`,category:`Designer`,inputs:[{name:`branding`,type:`code`,label:`Branding Config`},{name:`appTitle`,type:`string`,label:`App Title`},{name:`readOnly`,type:`boolean`,label:`Read Only`,defaultValue:!1}]}),c.register(`object-manager`,cn,{namespace:`plugin-designer`,label:`Object Manager`,category:`Designer`,inputs:[{name:`objects`,type:`code`,label:`Object Definitions`},{name:`showSystemObjects`,type:`boolean`,label:`Show System Objects`,defaultValue:!0},{name:`readOnly`,type:`boolean`,label:`Read Only`,defaultValue:!1}]}),c.register(`field-designer`,pn,{namespace:`plugin-designer`,label:`Field Designer`,category:`Designer`,inputs:[{name:`objectName`,type:`string`,label:`Object Name`},{name:`fields`,type:`code`,label:`Field Definitions`},{name:`readOnly`,type:`boolean`,label:`Read Only`,defaultValue:!1}]});export{hn as CreateAppPage,_n as DashboardDesignPage,gn as EditAppPage};
@@ -1 +1 @@
1
- import{fn as e,gn as t,u as n}from"./vendor-charts-BEGSmcjR.js";import{n as r}from"./chunk-Y2CYZVJY-DsF7k-Jl.js";import{t as i}from"./src-CY2xhbXR.js";import{O as a,c as o,s,x as c}from"./chunk-I66GZJ75-BsY3mBMx.js";import"./chunk-4I5QYGJK-DlrWrdEa.js";import{g as l}from"./chunk-NSK5VX7P-BBTxIP6Z.js";import"./chunk-WRU74C26-MrzCPX2E.js";import"./chunk-7BUUIJ7U-Bb538aSH.js";import"./chunk-UBXNYLIW-B7z1tp3V.js";import{t as u}from"./graphlib-DS17s2tU.js";import{t as d}from"./dagre-Buvkdvvj.js";import"./chunk-2GRJ4B5K-D1if-ThW.js";import"./chunk-XXDRQBXY-NKBlW2Dm.js";import"./chunk-KBJHAD2P-DI4-lUt-.js";import"./chunk-W5SLKNZC-BnMc5i0B.js";import"./chunk-QR6OTTB3-DJcD7xr-.js";import"./chunk-7Z6QIM7H-m6s_oalL.js";import"./chunk-J7OUQ5F2-Cl4FNR_k.js";import{i as f,n as p,t as m}from"./chunk-5RXB4S5H-JwFhdddt.js";var h=r(e=>e.append(`circle`).attr(`class`,`start-state`).attr(`r`,c().state.sizeUnit).attr(`cx`,c().state.padding+c().state.sizeUnit).attr(`cy`,c().state.padding+c().state.sizeUnit),`drawStartState`),g=r(e=>e.append(`line`).style(`stroke`,`grey`).style(`stroke-dasharray`,`3`).attr(`x1`,c().state.textHeight).attr(`class`,`divider`).attr(`x2`,c().state.textHeight*2).attr(`y1`,0).attr(`y2`,0),`drawDivider`),_=r((e,t)=>{let n=e.append(`text`).attr(`x`,2*c().state.padding).attr(`y`,c().state.textHeight+2*c().state.padding).attr(`font-size`,c().state.fontSize).attr(`class`,`state-title`).text(t.id),r=n.node().getBBox();return e.insert(`rect`,`:first-child`).attr(`x`,c().state.padding).attr(`y`,c().state.padding).attr(`width`,r.width+2*c().state.padding).attr(`height`,r.height+2*c().state.padding).attr(`rx`,c().state.radius),n},`drawSimpleState`),v=r((e,t)=>{let n=r(function(e,t,n){let r=e.append(`tspan`).attr(`x`,2*c().state.padding).text(t);n||r.attr(`dy`,c().state.textHeight)},`addTspan`),i=e.append(`text`).attr(`x`,2*c().state.padding).attr(`y`,c().state.textHeight+1.3*c().state.padding).attr(`font-size`,c().state.fontSize).attr(`class`,`state-title`).text(t.descriptions[0]).node().getBBox(),a=i.height,o=e.append(`text`).attr(`x`,c().state.padding).attr(`y`,a+c().state.padding*.4+c().state.dividerMargin+c().state.textHeight).attr(`class`,`state-description`),s=!0,l=!0;t.descriptions.forEach(function(e){s||(n(o,e,l),l=!1),s=!1});let u=e.append(`line`).attr(`x1`,c().state.padding).attr(`y1`,c().state.padding+a+c().state.dividerMargin/2).attr(`y2`,c().state.padding+a+c().state.dividerMargin/2).attr(`class`,`descr-divider`),d=o.node().getBBox(),f=Math.max(d.width,i.width);return u.attr(`x2`,f+3*c().state.padding),e.insert(`rect`,`:first-child`).attr(`x`,c().state.padding).attr(`y`,c().state.padding).attr(`width`,f+2*c().state.padding).attr(`height`,d.height+a+2*c().state.padding).attr(`rx`,c().state.radius),e},`drawDescrState`),y=r((e,t,n)=>{let r=c().state.padding,i=2*c().state.padding,a=e.node().getBBox(),o=a.width,s=a.x,l=e.append(`text`).attr(`x`,0).attr(`y`,c().state.titleShift).attr(`font-size`,c().state.fontSize).attr(`class`,`state-title`).text(t.id),u=l.node().getBBox().width+i,d=Math.max(u,o);d===o&&(d+=i);let f,p=e.node().getBBox();t.doc,f=s-r,u>o&&(f=(o-d)/2+r),Math.abs(s-p.x)<r&&u>o&&(f=s-(u-o)/2);let m=1-c().state.textHeight;return e.insert(`rect`,`:first-child`).attr(`x`,f).attr(`y`,m).attr(`class`,n?`alt-composit`:`composit`).attr(`width`,d).attr(`height`,p.height+c().state.textHeight+c().state.titleShift+1).attr(`rx`,`0`),l.attr(`x`,f+r),u<=o&&l.attr(`x`,s+(d-i)/2-u/2+r),e.insert(`rect`,`:first-child`).attr(`x`,f).attr(`y`,c().state.titleShift-c().state.textHeight-c().state.padding).attr(`width`,d).attr(`height`,c().state.textHeight*3).attr(`rx`,c().state.radius),e.insert(`rect`,`:first-child`).attr(`x`,f).attr(`y`,c().state.titleShift-c().state.textHeight-c().state.padding).attr(`width`,d).attr(`height`,p.height+3+2*c().state.textHeight).attr(`rx`,c().state.radius),e},`addTitleAndBox`),b=r(e=>(e.append(`circle`).attr(`class`,`end-state-outer`).attr(`r`,c().state.sizeUnit+c().state.miniPadding).attr(`cx`,c().state.padding+c().state.sizeUnit+c().state.miniPadding).attr(`cy`,c().state.padding+c().state.sizeUnit+c().state.miniPadding),e.append(`circle`).attr(`class`,`end-state-inner`).attr(`r`,c().state.sizeUnit).attr(`cx`,c().state.padding+c().state.sizeUnit+2).attr(`cy`,c().state.padding+c().state.sizeUnit+2)),`drawEndState`),x=r((e,t)=>{let n=c().state.forkWidth,r=c().state.forkHeight;if(t.parentId){let e=n;n=r,r=e}return e.append(`rect`).style(`stroke`,`black`).style(`fill`,`black`).attr(`width`,n).attr(`height`,r).attr(`x`,c().state.padding).attr(`y`,c().state.padding)},`drawForkJoinState`),S=r((e,t,n,r)=>{let i=0,a=r.append(`text`);a.style(`text-anchor`,`start`),a.attr(`class`,`noteText`);let o=e.replace(/\r\n/g,`<br/>`);o=o.replace(/\n/g,`<br/>`);let l=o.split(s.lineBreakRegex),u=1.25*c().state.noteMargin;for(let e of l){let r=e.trim();if(r.length>0){let e=a.append(`tspan`);if(e.text(r),u===0){let t=e.node().getBBox();u+=t.height}i+=u,e.attr(`x`,t+c().state.noteMargin),e.attr(`y`,n+i+1.25*c().state.noteMargin)}}return{textWidth:a.node().getBBox().width,textHeight:i}},`_drawLongText`),C=r((e,t)=>{t.attr(`class`,`state-note`);let n=t.append(`rect`).attr(`x`,0).attr(`y`,c().state.padding),{textWidth:r,textHeight:i}=S(e,0,0,t.append(`g`));return n.attr(`height`,i+2*c().state.noteMargin),n.attr(`width`,r+c().state.noteMargin*2),n},`drawNote`),w=r(function(e,t){let n=t.id,r={id:n,label:t.id,width:0,height:0},i=e.append(`g`).attr(`id`,n).attr(`class`,`stateGroup`);t.type===`start`&&h(i),t.type===`end`&&b(i),(t.type===`fork`||t.type===`join`)&&x(i,t),t.type===`note`&&C(t.note.text,i),t.type===`divider`&&g(i),t.type==="default"&&t.descriptions.length===0&&_(i,t),t.type==="default"&&t.descriptions.length>0&&v(i,t);let a=i.node().getBBox();return r.width=a.width+2*c().state.padding,r.height=a.height+2*c().state.padding,r},`drawState`),T=0,E=r(function(n,o,u){let d=r(function(e){switch(e){case m.relationType.AGGREGATION:return`aggregation`;case m.relationType.EXTENSION:return`extension`;case m.relationType.COMPOSITION:return`composition`;case m.relationType.DEPENDENCY:return`dependency`}},`getRelationType`);o.points=o.points.filter(e=>!Number.isNaN(e.y));let f=o.points,p=t().x(function(e){return e.x}).y(function(e){return e.y}).curve(e),h=n.append(`path`).attr(`d`,p(f)).attr(`id`,`edge`+T).attr(`class`,`transition`),g=``;if(c().state.arrowMarkerAbsolute&&(g=a(!0)),h.attr(`marker-end`,`url(`+g+`#`+d(m.relationType.DEPENDENCY)+`End)`),u.title!==void 0){let e=n.append(`g`).attr(`class`,`stateLabel`),{x:t,y:r}=l.calcLabelPosition(o.points),a=s.getRows(u.title),d=0,f=[],p=0,m=0;for(let n=0;n<=a.length;n++){let o=e.append(`text`).attr(`text-anchor`,`middle`).text(a[n]).attr(`x`,t).attr(`y`,r+d),s=o.node().getBBox();p=Math.max(p,s.width),m=Math.min(m,s.x),i.info(s.x,t,r+d),d===0&&(d=o.node().getBBox().height,i.info(`Title height`,d,r)),f.push(o)}let h=d*a.length;if(a.length>1){let e=(a.length-1)*d*.5;f.forEach((t,n)=>t.attr(`y`,r+n*d-e)),h=d*a.length}let g=e.node().getBBox();e.insert(`rect`,`:first-child`).attr(`class`,`box`).attr(`x`,t-p/2-c().state.padding/2).attr(`y`,r-h/2-c().state.padding/2-3.5).attr(`width`,p+c().state.padding).attr(`height`,h+c().state.padding),i.info(g)}T++},`drawEdge`),D,O={},k=r(function(){},`setConf`),A=r(function(e){e.append(`defs`).append(`marker`).attr(`id`,`dependencyEnd`).attr(`refX`,19).attr(`refY`,7).attr(`markerWidth`,20).attr(`markerHeight`,28).attr(`orient`,`auto`).append(`path`).attr(`d`,`M 19,7 L9,13 L14,7 L9,1 Z`)},`insertMarkers`),j=r(function(e,t,r,a){D=c().state;let s=c().securityLevel,l;s===`sandbox`&&(l=n(`#i`+t));let u=n(s===`sandbox`?l.nodes()[0].contentDocument.body:`body`),d=s===`sandbox`?l.nodes()[0].contentDocument:document;i.debug(`Rendering diagram `+e);let f=u.select(`[id='${t}']`);A(f),N(a.db.getRootDoc(),f.append(`g`).attr(`id`,t+`-root`),void 0,!1,u,d,a);let p=D.padding,m=f.node().getBBox(),h=m.width+p*2,g=m.height+p*2,_=h*1.75;o(f,g,_,D.useMaxWidth),f.attr(`viewBox`,`${m.x-D.padding} ${m.y-D.padding} `+h+` `+g)},`draw`),M=r(e=>e?e.length*D.fontSizeFactor:1,`getLabelWidth`),N=r((e,t,n,r,a,o,c)=>{let l=new u({compound:!0,multigraph:!0}),f,p=!0;for(f=0;f<e.length;f++)if(e[f].stmt===`relation`){p=!1;break}n?l.setGraph({rankdir:`LR`,multigraph:!0,compound:!0,ranker:`tight-tree`,ranksep:p?1:D.edgeLengthFactor,nodeSep:p?1:50,isMultiGraph:!0}):l.setGraph({rankdir:`TB`,multigraph:!0,compound:!0,ranksep:p?1:D.edgeLengthFactor,nodeSep:p?1:50,ranker:`tight-tree`,isMultiGraph:!0}),l.setDefaultEdgeLabel(function(){return{}});let m=c.db.getStates(),h=c.db.getRelations(),g=Object.keys(m);for(let e of g){let i=m[e];n&&(i.parentId=n);let s;if(i.doc){let e=t.append(`g`).attr(`id`,i.id).attr(`class`,`stateGroup`);s=N(i.doc,e,i.id,!r,a,o,c);{e=y(e,i,r);let t=e.node().getBBox();s.width=t.width,s.height=t.height+D.padding/2,O[i.id]={y:D.compositTitleSize}}}else s=w(t,i,l);if(i.note){let e=w(t,{descriptions:[],id:i.id+`-note`,note:i.note,type:`note`},l);i.note.position===`left of`?(l.setNode(s.id+`-note`,e),l.setNode(s.id,s)):(l.setNode(s.id,s),l.setNode(s.id+`-note`,e)),l.setParent(s.id,s.id+`-group`),l.setParent(s.id+`-note`,s.id+`-group`)}else l.setNode(s.id,s)}i.debug(`Count=`,l.nodeCount(),l);let _=0;h.forEach(function(e){_++,i.debug(`Setting edge`,e),l.setEdge(e.id1,e.id2,{relation:e,width:M(e.title),height:D.labelHeight*s.getRows(e.title).length,labelpos:`c`},`id`+_)}),d(l),i.debug(`Graph after layout`,l.nodes());let v=t.node();l.nodes().forEach(function(e){e!==void 0&&l.node(e)!==void 0?(i.warn(`Node `+e+`: `+JSON.stringify(l.node(e))),a.select(`#`+v.id+` #`+e).attr(`transform`,`translate(`+(l.node(e).x-l.node(e).width/2)+`,`+(l.node(e).y+(O[e]?O[e].y:0)-l.node(e).height/2)+` )`),a.select(`#`+v.id+` #`+e).attr(`data-x-shift`,l.node(e).x-l.node(e).width/2),o.querySelectorAll(`#`+v.id+` #`+e+` .divider`).forEach(e=>{let t=e.parentElement,n=0,r=0;t&&(t.parentElement&&(n=t.parentElement.getBBox().width),r=parseInt(t.getAttribute(`data-x-shift`),10),Number.isNaN(r)&&(r=0)),e.setAttribute(`x1`,0-r+8),e.setAttribute(`x2`,n-r-8)})):i.debug(`No Node `+e+`: `+JSON.stringify(l.node(e)))});let b=v.getBBox();l.edges().forEach(function(e){e!==void 0&&l.edge(e)!==void 0&&(i.debug(`Edge `+e.v+` -> `+e.w+`: `+JSON.stringify(l.edge(e))),E(t,l.edge(e),l.edge(e).relation))}),b=v.getBBox();let x={id:n||`root`,label:n||`root`,width:0,height:0};return x.width=b.width+2*D.padding,x.height=b.height+2*D.padding,i.debug(`Doc rendered`,x,l),x},`renderDoc`),P={parser:p,get db(){return new m(1)},renderer:{setConf:k,draw:j},styles:f,init:r(e=>{e.state||={},e.state.arrowMarkerAbsolute=e.arrowMarkerAbsolute},`init`)};export{P as diagram};
1
+ import{Nt as e,kt as t,u as n}from"./vendor-charts-CY9WhhzX.js";import{n as r}from"./chunk-Y2CYZVJY-DsF7k-Jl.js";import{t as i}from"./src-CVJP2nIc.js";import{O as a,c as o,s,x as c}from"./chunk-DU6HZSFF-BkY4hAzc.js";import"./chunk-PWAF6VOD-2mst9kZu.js";import{g as l}from"./chunk-75Z2AOVW-CkSdnmiC.js";import"./chunk-GMAD6QVW-DZo_NykZ.js";import"./chunk-P2QGCYS3-nx2-dM5t.js";import"./chunk-4HAMMTFA-BPKwX4iB.js";import"./chunk-GVQU2GXP-9ELY9S6X.js";import"./chunk-OSK3NFVY-DcRwXCQD.js";import{t as u}from"./graphlib-DS17s2tU.js";import{t as d}from"./dagre-PrKaheQc.js";import"./chunk-F27PBJKO-DUKg0YWV.js";import"./chunk-XXDRQBXY-iNC8aYmk.js";import"./chunk-POPQ4Y6H-BxLOacOG.js";import"./chunk-L3NEJ4N5-Bzz35TZJ.js";import"./chunk-LQGUR6SS-iVI0GACK.js";import{i as f,n as p,t as m}from"./chunk-ZLD2IHE6-ZFqtFJbj.js";var h=r(e=>e.append(`circle`).attr(`class`,`start-state`).attr(`r`,c().state.sizeUnit).attr(`cx`,c().state.padding+c().state.sizeUnit).attr(`cy`,c().state.padding+c().state.sizeUnit),`drawStartState`),g=r(e=>e.append(`line`).style(`stroke`,`grey`).style(`stroke-dasharray`,`3`).attr(`x1`,c().state.textHeight).attr(`class`,`divider`).attr(`x2`,c().state.textHeight*2).attr(`y1`,0).attr(`y2`,0),`drawDivider`),_=r((e,t)=>{let n=e.append(`text`).attr(`x`,2*c().state.padding).attr(`y`,c().state.textHeight+2*c().state.padding).attr(`font-size`,c().state.fontSize).attr(`class`,`state-title`).text(t.id),r=n.node().getBBox();return e.insert(`rect`,`:first-child`).attr(`x`,c().state.padding).attr(`y`,c().state.padding).attr(`width`,r.width+2*c().state.padding).attr(`height`,r.height+2*c().state.padding).attr(`rx`,c().state.radius),n},`drawSimpleState`),v=r((e,t)=>{let n=r(function(e,t,n){let r=e.append(`tspan`).attr(`x`,2*c().state.padding).text(t);n||r.attr(`dy`,c().state.textHeight)},`addTspan`),i=e.append(`text`).attr(`x`,2*c().state.padding).attr(`y`,c().state.textHeight+1.3*c().state.padding).attr(`font-size`,c().state.fontSize).attr(`class`,`state-title`).text(t.descriptions[0]).node().getBBox(),a=i.height,o=e.append(`text`).attr(`x`,c().state.padding).attr(`y`,a+c().state.padding*.4+c().state.dividerMargin+c().state.textHeight).attr(`class`,`state-description`),s=!0,l=!0;t.descriptions.forEach(function(e){s||(n(o,e,l),l=!1),s=!1});let u=e.append(`line`).attr(`x1`,c().state.padding).attr(`y1`,c().state.padding+a+c().state.dividerMargin/2).attr(`y2`,c().state.padding+a+c().state.dividerMargin/2).attr(`class`,`descr-divider`),d=o.node().getBBox(),f=Math.max(d.width,i.width);return u.attr(`x2`,f+3*c().state.padding),e.insert(`rect`,`:first-child`).attr(`x`,c().state.padding).attr(`y`,c().state.padding).attr(`width`,f+2*c().state.padding).attr(`height`,d.height+a+2*c().state.padding).attr(`rx`,c().state.radius),e},`drawDescrState`),y=r((e,t,n)=>{let r=c().state.padding,i=2*c().state.padding,a=e.node().getBBox(),o=a.width,s=a.x,l=e.append(`text`).attr(`x`,0).attr(`y`,c().state.titleShift).attr(`font-size`,c().state.fontSize).attr(`class`,`state-title`).text(t.id),u=l.node().getBBox().width+i,d=Math.max(u,o);d===o&&(d+=i);let f,p=e.node().getBBox();t.doc,f=s-r,u>o&&(f=(o-d)/2+r),Math.abs(s-p.x)<r&&u>o&&(f=s-(u-o)/2);let m=1-c().state.textHeight;return e.insert(`rect`,`:first-child`).attr(`x`,f).attr(`y`,m).attr(`class`,n?`alt-composit`:`composit`).attr(`width`,d).attr(`height`,p.height+c().state.textHeight+c().state.titleShift+1).attr(`rx`,`0`),l.attr(`x`,f+r),u<=o&&l.attr(`x`,s+(d-i)/2-u/2+r),e.insert(`rect`,`:first-child`).attr(`x`,f).attr(`y`,c().state.titleShift-c().state.textHeight-c().state.padding).attr(`width`,d).attr(`height`,c().state.textHeight*3).attr(`rx`,c().state.radius),e.insert(`rect`,`:first-child`).attr(`x`,f).attr(`y`,c().state.titleShift-c().state.textHeight-c().state.padding).attr(`width`,d).attr(`height`,p.height+3+2*c().state.textHeight).attr(`rx`,c().state.radius),e},`addTitleAndBox`),b=r(e=>(e.append(`circle`).attr(`class`,`end-state-outer`).attr(`r`,c().state.sizeUnit+c().state.miniPadding).attr(`cx`,c().state.padding+c().state.sizeUnit+c().state.miniPadding).attr(`cy`,c().state.padding+c().state.sizeUnit+c().state.miniPadding),e.append(`circle`).attr(`class`,`end-state-inner`).attr(`r`,c().state.sizeUnit).attr(`cx`,c().state.padding+c().state.sizeUnit+2).attr(`cy`,c().state.padding+c().state.sizeUnit+2)),`drawEndState`),x=r((e,t)=>{let n=c().state.forkWidth,r=c().state.forkHeight;if(t.parentId){let e=n;n=r,r=e}return e.append(`rect`).style(`stroke`,`black`).style(`fill`,`black`).attr(`width`,n).attr(`height`,r).attr(`x`,c().state.padding).attr(`y`,c().state.padding)},`drawForkJoinState`),S=r((e,t,n,r)=>{let i=0,a=r.append(`text`);a.style(`text-anchor`,`start`),a.attr(`class`,`noteText`);let o=e.replace(/\r\n/g,`<br/>`);o=o.replace(/\n/g,`<br/>`);let l=o.split(s.lineBreakRegex),u=1.25*c().state.noteMargin;for(let e of l){let r=e.trim();if(r.length>0){let e=a.append(`tspan`);if(e.text(r),u===0){let t=e.node().getBBox();u+=t.height}i+=u,e.attr(`x`,t+c().state.noteMargin),e.attr(`y`,n+i+1.25*c().state.noteMargin)}}return{textWidth:a.node().getBBox().width,textHeight:i}},`_drawLongText`),C=r((e,t)=>{t.attr(`class`,`state-note`);let n=t.append(`rect`).attr(`x`,0).attr(`y`,c().state.padding),{textWidth:r,textHeight:i}=S(e,0,0,t.append(`g`));return n.attr(`height`,i+2*c().state.noteMargin),n.attr(`width`,r+c().state.noteMargin*2),n},`drawNote`),w=r(function(e,t){let n=t.id,r={id:n,label:t.id,width:0,height:0},i=e.append(`g`).attr(`id`,n).attr(`class`,`stateGroup`);t.type===`start`&&h(i),t.type===`end`&&b(i),(t.type===`fork`||t.type===`join`)&&x(i,t),t.type===`note`&&C(t.note.text,i),t.type===`divider`&&g(i),t.type==="default"&&t.descriptions.length===0&&_(i,t),t.type==="default"&&t.descriptions.length>0&&v(i,t);let a=i.node().getBBox();return r.width=a.width+2*c().state.padding,r.height=a.height+2*c().state.padding,r},`drawState`),T=0,E=r(function(n,o,u){let d=r(function(e){switch(e){case m.relationType.AGGREGATION:return`aggregation`;case m.relationType.EXTENSION:return`extension`;case m.relationType.COMPOSITION:return`composition`;case m.relationType.DEPENDENCY:return`dependency`}},`getRelationType`);o.points=o.points.filter(e=>!Number.isNaN(e.y));let f=o.points,p=e().x(function(e){return e.x}).y(function(e){return e.y}).curve(t),h=n.append(`path`).attr(`d`,p(f)).attr(`id`,`edge`+T).attr(`class`,`transition`),g=``;if(c().state.arrowMarkerAbsolute&&(g=a(!0)),h.attr(`marker-end`,`url(`+g+`#`+d(m.relationType.DEPENDENCY)+`End)`),u.title!==void 0){let e=n.append(`g`).attr(`class`,`stateLabel`),{x:t,y:r}=l.calcLabelPosition(o.points),a=s.getRows(u.title),d=0,f=[],p=0,m=0;for(let n=0;n<=a.length;n++){let o=e.append(`text`).attr(`text-anchor`,`middle`).text(a[n]).attr(`x`,t).attr(`y`,r+d),s=o.node().getBBox();p=Math.max(p,s.width),m=Math.min(m,s.x),i.info(s.x,t,r+d),d===0&&(d=o.node().getBBox().height,i.info(`Title height`,d,r)),f.push(o)}let h=d*a.length;if(a.length>1){let e=(a.length-1)*d*.5;f.forEach((t,n)=>t.attr(`y`,r+n*d-e)),h=d*a.length}let g=e.node().getBBox();e.insert(`rect`,`:first-child`).attr(`class`,`box`).attr(`x`,t-p/2-c().state.padding/2).attr(`y`,r-h/2-c().state.padding/2-3.5).attr(`width`,p+c().state.padding).attr(`height`,h+c().state.padding),i.info(g)}T++},`drawEdge`),D,O={},k=r(function(){},`setConf`),A=r(function(e){e.append(`defs`).append(`marker`).attr(`id`,`dependencyEnd`).attr(`refX`,19).attr(`refY`,7).attr(`markerWidth`,20).attr(`markerHeight`,28).attr(`orient`,`auto`).append(`path`).attr(`d`,`M 19,7 L9,13 L14,7 L9,1 Z`)},`insertMarkers`),j=r(function(e,t,r,a){D=c().state;let s=c().securityLevel,l;s===`sandbox`&&(l=n(`#i`+t));let u=n(s===`sandbox`?l.nodes()[0].contentDocument.body:`body`),d=s===`sandbox`?l.nodes()[0].contentDocument:document;i.debug(`Rendering diagram `+e);let f=u.select(`[id='${t}']`);A(f),N(a.db.getRootDoc(),f.append(`g`).attr(`id`,t+`-root`),void 0,!1,u,d,a);let p=D.padding,m=f.node().getBBox(),h=m.width+p*2,g=m.height+p*2,_=h*1.75;o(f,g,_,D.useMaxWidth),f.attr(`viewBox`,`${m.x-D.padding} ${m.y-D.padding} `+h+` `+g)},`draw`),M=r(e=>e?e.length*D.fontSizeFactor:1,`getLabelWidth`),N=r((e,t,n,r,a,o,c)=>{let l=new u({compound:!0,multigraph:!0}),f,p=!0;for(f=0;f<e.length;f++)if(e[f].stmt===`relation`){p=!1;break}n?l.setGraph({rankdir:`LR`,multigraph:!0,compound:!0,ranker:`tight-tree`,ranksep:p?1:D.edgeLengthFactor,nodeSep:p?1:50,isMultiGraph:!0}):l.setGraph({rankdir:`TB`,multigraph:!0,compound:!0,ranksep:p?1:D.edgeLengthFactor,nodeSep:p?1:50,ranker:`tight-tree`,isMultiGraph:!0}),l.setDefaultEdgeLabel(function(){return{}});let m=c.db.getStates(),h=c.db.getRelations(),g=Object.keys(m);for(let e of g){let i=m[e];n&&(i.parentId=n);let s;if(i.doc){let e=t.append(`g`).attr(`id`,i.id).attr(`class`,`stateGroup`);s=N(i.doc,e,i.id,!r,a,o,c);{e=y(e,i,r);let t=e.node().getBBox();s.width=t.width,s.height=t.height+D.padding/2,O[i.id]={y:D.compositTitleSize}}}else s=w(t,i,l);if(i.note){let e=w(t,{descriptions:[],id:i.id+`-note`,note:i.note,type:`note`},l);i.note.position===`left of`?(l.setNode(s.id+`-note`,e),l.setNode(s.id,s)):(l.setNode(s.id,s),l.setNode(s.id+`-note`,e)),l.setParent(s.id,s.id+`-group`),l.setParent(s.id+`-note`,s.id+`-group`)}else l.setNode(s.id,s)}i.debug(`Count=`,l.nodeCount(),l);let _=0;h.forEach(function(e){_++,i.debug(`Setting edge`,e),l.setEdge(e.id1,e.id2,{relation:e,width:M(e.title),height:D.labelHeight*s.getRows(e.title).length,labelpos:`c`},`id`+_)}),d(l),i.debug(`Graph after layout`,l.nodes());let v=t.node();l.nodes().forEach(function(e){e!==void 0&&l.node(e)!==void 0?(i.warn(`Node `+e+`: `+JSON.stringify(l.node(e))),a.select(`#`+v.id+` #`+e).attr(`transform`,`translate(`+(l.node(e).x-l.node(e).width/2)+`,`+(l.node(e).y+(O[e]?O[e].y:0)-l.node(e).height/2)+` )`),a.select(`#`+v.id+` #`+e).attr(`data-x-shift`,l.node(e).x-l.node(e).width/2),o.querySelectorAll(`#`+v.id+` #`+e+` .divider`).forEach(e=>{let t=e.parentElement,n=0,r=0;t&&(t.parentElement&&(n=t.parentElement.getBBox().width),r=parseInt(t.getAttribute(`data-x-shift`),10),Number.isNaN(r)&&(r=0)),e.setAttribute(`x1`,0-r+8),e.setAttribute(`x2`,n-r-8)})):i.debug(`No Node `+e+`: `+JSON.stringify(l.node(e)))});let b=v.getBBox();l.edges().forEach(function(e){e!==void 0&&l.edge(e)!==void 0&&(i.debug(`Edge `+e.v+` -> `+e.w+`: `+JSON.stringify(l.edge(e))),E(t,l.edge(e),l.edge(e).relation))}),b=v.getBBox();let x={id:n||`root`,label:n||`root`,width:0,height:0};return x.width=b.width+2*D.padding,x.height=b.height+2*D.padding,i.debug(`Doc rendered`,x,l),x},`renderDoc`),P={parser:p,get db(){return new m(1)},renderer:{setConf:k,draw:j},styles:f,init:r(e=>{e.state||={},e.state.arrowMarkerAbsolute=e.arrowMarkerAbsolute},`init`)};export{P as diagram};
@@ -0,0 +1 @@
1
+ import{n as e}from"./chunk-Y2CYZVJY-DsF7k-Jl.js";import"./src-CVJP2nIc.js";import"./chunk-DU6HZSFF-BkY4hAzc.js";import"./chunk-PWAF6VOD-2mst9kZu.js";import"./chunk-75Z2AOVW-CkSdnmiC.js";import"./chunk-GMAD6QVW-DZo_NykZ.js";import"./chunk-P2QGCYS3-nx2-dM5t.js";import"./chunk-4HAMMTFA-BPKwX4iB.js";import"./chunk-GVQU2GXP-9ELY9S6X.js";import"./chunk-OSK3NFVY-DcRwXCQD.js";import"./chunk-F27PBJKO-DUKg0YWV.js";import"./chunk-XXDRQBXY-iNC8aYmk.js";import"./chunk-POPQ4Y6H-BxLOacOG.js";import"./chunk-L3NEJ4N5-Bzz35TZJ.js";import"./chunk-LQGUR6SS-iVI0GACK.js";import{i as t,n,r,t as i}from"./chunk-ZLD2IHE6-ZFqtFJbj.js";var a={parser:n,get db(){return new i(2)},renderer:r,styles:t,init:e(e=>{e.state||={},e.state.arrowMarkerAbsolute=e.arrowMarkerAbsolute},`init`)};export{a as diagram};
@@ -0,0 +1 @@
1
+ import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{b as t}from"./vendor-react-CsWFRkED.js";import{c as n}from"./infrastructure-CIpDEFyQ.js";import{cr as r,dr as i,fr as a,lr as o,ur as s}from"./framework-BfSv4Kb0.js";var c=e(t(),1),l=`studio.access`,u=3,d=500;function f(e){return Array.isArray(e)?e.includes(l):!1}function p(){return`/api/v1/auth/me/permissions`}function m(e){let t=e?.endpoint??p(),l=e?.fetcher,f=(0,c.useMemo)(()=>l??n(),[l]),[m,h]=(0,c.useState)({status:`pending`}),[g,_]=(0,c.useState)(0),v=(0,c.useCallback)(()=>{h({status:`pending`}),_(e=>e+1)},[]);return(0,c.useEffect)(()=>{let e=!1;return(async()=>{for(let n=0;n<=u;n++)try{let n=await f(t,{credentials:`include`,headers:{Accept:`application/json`}});if(!n.ok)throw new r(n.status,i(n),`Permissions endpoint returned ${n.status}`);let a=await n.json();if(e)return;let o=a?.systemPermissions;h({status:`loaded`,systemPermissions:Array.isArray(o)?o:void 0});return}catch(t){let i=t instanceof Error?t:Error(String(t));if(!s(i)||n===u){if(e)return;h({status:`failed`,error:i,retry:v});return}let c=i instanceof r?i.retryAfterMs:void 0;if(await a(o(n,d,c)),e)return}})(),()=>{e=!0}},[t,f,g,v]),m}export{m as n,f as t};
@@ -0,0 +1 @@
1
+ import{tn as e}from"./vendor-objectstack-BeKUVjuj.js";var t=/\{\{record\.([a-z_][a-z0-9_]*)\}\}/g;function n(t){let n=e.safeParse({submitBehavior:{kind:`redirect`,url:t}});if(!n.success)return{ok:!1,refusal:n.error.issues.find(e=>e.path[0]===`submitBehavior`&&e.path[1]===`url`)?.message??n.error.issues[0]?.message??`\`submitBehavior.url\` is not a value this contract accepts: ${JSON.stringify(t)}.`};let r=n.data.submitBehavior;return{ok:!0,url:r?.kind===`redirect`?r.url:t}}function r(e){return e==null?``:typeof e==`string`?e:typeof e==`boolean`||typeof e==`number`&&Number.isFinite(e)?String(e):``}function i(e,i){let a=n(e);if(!a.ok)return a;let o=a.url.replace(t,(e,t)=>encodeURIComponent(r(i[t])));return o.includes(`{`)||o.includes(`}`)?{ok:!1,refusal:`\`submitBehavior.url\` carries an interpolation this renderer could not resolve (${JSON.stringify(e)}). A token names one declared record field, spelled \`{{record.field_name}}\`, and the redirect is refused rather than followed with the token left in it.`}:{ok:!0,path:o}}export{i as n,n as t};