likec4 1.10.0 → 1.11.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 (969) hide show
  1. package/dist/__app__/react/likec4.tsx +44 -17
  2. package/dist/__app__/src/chunks/{-index-overview-DZ3H7kDb.js → -index-overview-B8AbCuYt.js} +6 -6
  3. package/dist/__app__/src/chunks/{likec4-BqIZe8Y0.js → likec4-DOemzWvz.js} +167 -120
  4. package/dist/__app__/src/chunks/{main-KEhBGhZ8.js → main-OEl3ruxE.js} +6509 -5309
  5. package/dist/__app__/src/chunks/{mantine-BnwtT_Nz.js → mantine-BqgMLMPH.js} +64 -58
  6. package/dist/__app__/src/chunks/{tanstack-router-Bc_WYOzY.js → tanstack-router-Mzh8n5Lx.js} +1 -1
  7. package/dist/__app__/src/main.js +1 -1
  8. package/dist/__app__/src/style.css +1 -1
  9. package/dist/__app__/webcomponent/webcomponent.js +5218 -3791
  10. package/dist/chunks/prompt.mjs +45 -0
  11. package/dist/cli/index.d.ts +1 -0
  12. package/dist/cli/index.mjs +213 -161
  13. package/dist/index.d.mts +1205 -1748
  14. package/dist/index.d.ts +16953 -0
  15. package/dist/index.mjs +1 -1
  16. package/dist/shared/likec4.Cjx4es-x.mjs +1224 -0
  17. package/icons/all.js +1 -1
  18. package/icons/aws/activate.js +10 -10
  19. package/icons/aws/alexa-for-business.js +10 -10
  20. package/icons/aws/amplify.js +10 -10
  21. package/icons/aws/apache-mxnet-on-aws.js +10 -10
  22. package/icons/aws/api-gateway.js +10 -10
  23. package/icons/aws/app-config.js +10 -10
  24. package/icons/aws/app-flow.js +10 -10
  25. package/icons/aws/app-mesh.js +10 -10
  26. package/icons/aws/app-runner.js +10 -10
  27. package/icons/aws/app-stream.js +10 -10
  28. package/icons/aws/app-sync.js +10 -10
  29. package/icons/aws/application-auto-scaling.js +10 -10
  30. package/icons/aws/application-composer.js +10 -10
  31. package/icons/aws/application-cost-profiler.js +10 -10
  32. package/icons/aws/application-discovery-service.js +10 -10
  33. package/icons/aws/application-migration-service.js +10 -10
  34. package/icons/aws/artifact.js +10 -10
  35. package/icons/aws/athena.js +10 -10
  36. package/icons/aws/audit-manager.js +10 -10
  37. package/icons/aws/augmented-ai-a2i.js +10 -10
  38. package/icons/aws/aurora.js +10 -10
  39. package/icons/aws/auto-scaling.js +10 -10
  40. package/icons/aws/backint-agent.js +10 -10
  41. package/icons/aws/backup.js +10 -10
  42. package/icons/aws/batch.js +10 -10
  43. package/icons/aws/billing-conductor.js +10 -10
  44. package/icons/aws/bottlerocket.js +10 -10
  45. package/icons/aws/braket.js +10 -10
  46. package/icons/aws/budgets.js +10 -10
  47. package/icons/aws/certificate-manager.js +10 -10
  48. package/icons/aws/chatbot.js +10 -10
  49. package/icons/aws/chime-sdk.js +10 -10
  50. package/icons/aws/chime-voice-connector.js +10 -10
  51. package/icons/aws/chime.js +10 -10
  52. package/icons/aws/clean-rooms.js +10 -10
  53. package/icons/aws/client-vpn.js +10 -10
  54. package/icons/aws/cloud-control-api.js +10 -10
  55. package/icons/aws/cloud-development-kit.js +10 -10
  56. package/icons/aws/cloud-directory.js +10 -10
  57. package/icons/aws/cloud-formation.js +10 -10
  58. package/icons/aws/cloud-front.js +10 -10
  59. package/icons/aws/cloud-hsm.js +10 -10
  60. package/icons/aws/cloud-map.js +10 -10
  61. package/icons/aws/cloud-search.js +10 -10
  62. package/icons/aws/cloud-shell.js +10 -10
  63. package/icons/aws/cloud-trail.js +10 -10
  64. package/icons/aws/cloud-wan.js +10 -10
  65. package/icons/aws/cloud-watch.js +10 -10
  66. package/icons/aws/cloud9.js +10 -10
  67. package/icons/aws/code-artifact.js +10 -10
  68. package/icons/aws/code-build.js +10 -10
  69. package/icons/aws/code-catalyst.js +10 -10
  70. package/icons/aws/code-commit.js +10 -10
  71. package/icons/aws/code-deploy.js +10 -10
  72. package/icons/aws/code-guru.js +10 -10
  73. package/icons/aws/code-pipeline.js +10 -10
  74. package/icons/aws/code-star.js +10 -10
  75. package/icons/aws/code-whisperer.js +10 -10
  76. package/icons/aws/cognito.js +10 -10
  77. package/icons/aws/command-line-interface.js +10 -10
  78. package/icons/aws/comprehend-medical.js +10 -10
  79. package/icons/aws/comprehend.js +10 -10
  80. package/icons/aws/compute-optimizer.js +10 -10
  81. package/icons/aws/config.js +10 -10
  82. package/icons/aws/connect.js +10 -10
  83. package/icons/aws/console-mobile-application.js +10 -10
  84. package/icons/aws/control-tower.js +10 -10
  85. package/icons/aws/corretto.js +10 -10
  86. package/icons/aws/cost-and-usage-report.js +10 -10
  87. package/icons/aws/cost-explorer.js +10 -10
  88. package/icons/aws/data-exchange.js +10 -10
  89. package/icons/aws/data-pipeline.js +10 -10
  90. package/icons/aws/data-sync.js +10 -10
  91. package/icons/aws/data-zone.js +10 -10
  92. package/icons/aws/database-migration-service.js +10 -10
  93. package/icons/aws/deep-composer.js +10 -10
  94. package/icons/aws/deep-learning-amis.js +10 -10
  95. package/icons/aws/deep-learning-containers.js +10 -10
  96. package/icons/aws/deep-lens.js +10 -10
  97. package/icons/aws/deep-racer.js +10 -10
  98. package/icons/aws/detective.js +10 -10
  99. package/icons/aws/dev-ops-guru.js +10 -10
  100. package/icons/aws/device-farm.js +10 -10
  101. package/icons/aws/direct-connect.js +10 -10
  102. package/icons/aws/directory-service.js +10 -10
  103. package/icons/aws/distro-for-open-telemetry.js +10 -10
  104. package/icons/aws/document-db.js +10 -10
  105. package/icons/aws/dynamo-db.js +10 -10
  106. package/icons/aws/ec2-auto-scaling.js +10 -10
  107. package/icons/aws/ec2-image-builder.js +10 -10
  108. package/icons/aws/ec2.js +10 -10
  109. package/icons/aws/ecs-anywhere.js +10 -10
  110. package/icons/aws/efs.js +10 -10
  111. package/icons/aws/eks-anywhere.js +10 -10
  112. package/icons/aws/eks-cloud.js +10 -10
  113. package/icons/aws/eks-distro.js +10 -10
  114. package/icons/aws/elasti-cache.js +10 -10
  115. package/icons/aws/elastic-beanstalk.js +10 -10
  116. package/icons/aws/elastic-block-store.js +10 -10
  117. package/icons/aws/elastic-container-registry.js +10 -10
  118. package/icons/aws/elastic-container-service.js +10 -10
  119. package/icons/aws/elastic-disaster-recovery.js +10 -10
  120. package/icons/aws/elastic-fabric-adapter.js +10 -10
  121. package/icons/aws/elastic-inference.js +10 -10
  122. package/icons/aws/elastic-kubernetes-service.js +10 -10
  123. package/icons/aws/elastic-load-balancing.js +10 -10
  124. package/icons/aws/elastic-transcoder.js +10 -10
  125. package/icons/aws/elemental-appliances-software.js +10 -10
  126. package/icons/aws/elemental-conductor.js +10 -10
  127. package/icons/aws/elemental-delta.js +10 -10
  128. package/icons/aws/elemental-link.js +10 -10
  129. package/icons/aws/elemental-live.js +10 -10
  130. package/icons/aws/elemental-media-connect.js +10 -10
  131. package/icons/aws/elemental-media-convert.js +10 -10
  132. package/icons/aws/elemental-media-live.js +10 -10
  133. package/icons/aws/elemental-media-package.js +10 -10
  134. package/icons/aws/elemental-media-store.js +10 -10
  135. package/icons/aws/elemental-media-tailor.js +10 -10
  136. package/icons/aws/elemental-server.js +10 -10
  137. package/icons/aws/emr.js +10 -10
  138. package/icons/aws/event-bridge.js +10 -10
  139. package/icons/aws/express-workflows.js +10 -10
  140. package/icons/aws/fargate.js +10 -10
  141. package/icons/aws/fault-injection-simulator.js +10 -10
  142. package/icons/aws/file-cache.js +10 -10
  143. package/icons/aws/fin-space.js +10 -10
  144. package/icons/aws/firewall-manager.js +10 -10
  145. package/icons/aws/forecast.js +10 -10
  146. package/icons/aws/fraud-detector.js +10 -10
  147. package/icons/aws/free-rtos.js +10 -10
  148. package/icons/aws/fsx-for-lustre.js +10 -10
  149. package/icons/aws/fsx-for-net-app-ontap.js +10 -10
  150. package/icons/aws/fsx-for-open-zfs.js +10 -10
  151. package/icons/aws/fsx-for-wfs.js +10 -10
  152. package/icons/aws/fsx.js +10 -10
  153. package/icons/aws/game-kit.js +10 -10
  154. package/icons/aws/game-lift.js +10 -10
  155. package/icons/aws/game-sparks.js +10 -10
  156. package/icons/aws/genomics-cli.js +10 -10
  157. package/icons/aws/global-accelerator.js +10 -10
  158. package/icons/aws/glue-data-brew.js +10 -10
  159. package/icons/aws/glue-elastic-views.js +10 -10
  160. package/icons/aws/glue.js +10 -10
  161. package/icons/aws/ground-station.js +10 -10
  162. package/icons/aws/guard-duty.js +10 -10
  163. package/icons/aws/health-lake.js +10 -10
  164. package/icons/aws/honeycode.js +10 -10
  165. package/icons/aws/iam-identity-center.js +10 -10
  166. package/icons/aws/identity-and-access-management.js +10 -10
  167. package/icons/aws/inspector.js +10 -10
  168. package/icons/aws/interactive-video-service.js +10 -10
  169. package/icons/aws/io-t-1-click.js +10 -10
  170. package/icons/aws/io-t-analytics.js +10 -10
  171. package/icons/aws/io-t-button.js +10 -10
  172. package/icons/aws/io-t-core.js +10 -10
  173. package/icons/aws/io-t-device-defender.js +10 -10
  174. package/icons/aws/io-t-device-management.js +10 -10
  175. package/icons/aws/io-t-edu-kit.js +10 -10
  176. package/icons/aws/io-t-events.js +10 -10
  177. package/icons/aws/io-t-express-link.js +10 -10
  178. package/icons/aws/io-t-fleet-wise.js +10 -10
  179. package/icons/aws/io-t-greengrass.js +10 -10
  180. package/icons/aws/io-t-robo-runner.js +10 -10
  181. package/icons/aws/io-t-site-wise.js +10 -10
  182. package/icons/aws/io-t-things-graph.js +10 -10
  183. package/icons/aws/io-t-twin-maker.js +9 -9
  184. package/icons/aws/iq.js +10 -10
  185. package/icons/aws/kendra.js +10 -10
  186. package/icons/aws/key-management-service.js +10 -10
  187. package/icons/aws/keyspaces.js +10 -10
  188. package/icons/aws/kinesis-data-analytics.js +10 -10
  189. package/icons/aws/kinesis-data-streams.js +10 -10
  190. package/icons/aws/kinesis-firehose.js +10 -10
  191. package/icons/aws/kinesis-video-streams.js +10 -10
  192. package/icons/aws/kinesis.js +10 -10
  193. package/icons/aws/lake-formation.js +10 -10
  194. package/icons/aws/lambda.js +10 -10
  195. package/icons/aws/launch-wizard.js +10 -10
  196. package/icons/aws/lex.js +10 -10
  197. package/icons/aws/license-manager.js +10 -10
  198. package/icons/aws/lightsail.js +10 -10
  199. package/icons/aws/local-zones.js +10 -10
  200. package/icons/aws/location-service.js +10 -10
  201. package/icons/aws/lookout-for-equipment.js +10 -10
  202. package/icons/aws/lookout-for-metrics.js +10 -10
  203. package/icons/aws/lookout-for-vision.js +10 -10
  204. package/icons/aws/lumberyard.js +10 -10
  205. package/icons/aws/macie.js +10 -10
  206. package/icons/aws/mainframe-modernization.js +10 -10
  207. package/icons/aws/managed-blockchain.js +10 -10
  208. package/icons/aws/managed-grafana.js +10 -10
  209. package/icons/aws/managed-service-for-prometheus.js +10 -10
  210. package/icons/aws/managed-services.js +10 -10
  211. package/icons/aws/managed-streaming-for-apache-kafka.js +10 -10
  212. package/icons/aws/managed-workflows-for-apache-airflow.js +10 -10
  213. package/icons/aws/management-console.js +10 -10
  214. package/icons/aws/marketplace-dark.js +6 -6
  215. package/icons/aws/marketplace-light.js +6 -6
  216. package/icons/aws/memory-db-for-redis.js +10 -10
  217. package/icons/aws/migration-evaluator.js +10 -10
  218. package/icons/aws/migration-hub.js +10 -10
  219. package/icons/aws/monitron.js +10 -10
  220. package/icons/aws/mq.js +10 -10
  221. package/icons/aws/neptune.js +10 -10
  222. package/icons/aws/network-firewall.js +10 -10
  223. package/icons/aws/neuron.js +10 -10
  224. package/icons/aws/nice-dcv.js +10 -10
  225. package/icons/aws/nice-engin-frame.js +10 -10
  226. package/icons/aws/nimble-studio.js +10 -10
  227. package/icons/aws/nitro-enclaves.js +10 -10
  228. package/icons/aws/omics.js +10 -10
  229. package/icons/aws/open-3d-engine.js +10 -10
  230. package/icons/aws/open-search-service.js +10 -10
  231. package/icons/aws/ops-works.js +10 -10
  232. package/icons/aws/organizations.js +10 -10
  233. package/icons/aws/outposts-family.js +10 -10
  234. package/icons/aws/outposts-rack.js +10 -10
  235. package/icons/aws/outposts-servers.js +10 -10
  236. package/icons/aws/panorama.js +10 -10
  237. package/icons/aws/parallel-cluster.js +10 -10
  238. package/icons/aws/personal-health-dashboard.js +10 -10
  239. package/icons/aws/personalize.js +10 -10
  240. package/icons/aws/pinpoint-apis.js +10 -10
  241. package/icons/aws/pinpoint.js +10 -10
  242. package/icons/aws/polly.js +10 -10
  243. package/icons/aws/private-5g.js +10 -10
  244. package/icons/aws/private-certificate-authority.js +12 -12
  245. package/icons/aws/private-link.js +10 -10
  246. package/icons/aws/professional-services.js +10 -10
  247. package/icons/aws/proton.js +10 -10
  248. package/icons/aws/quantum-ledger-database.js +10 -10
  249. package/icons/aws/quick-sight.js +10 -10
  250. package/icons/aws/rds-on-vmware.js +10 -10
  251. package/icons/aws/rds.js +10 -10
  252. package/icons/aws/re-post.js +10 -10
  253. package/icons/aws/red-hat-open-shift-service-on-aws.js +10 -10
  254. package/icons/aws/redshift.js +10 -10
  255. package/icons/aws/rekognition.js +10 -10
  256. package/icons/aws/reserved-instance-reporting.js +10 -10
  257. package/icons/aws/resilience-hub.js +10 -10
  258. package/icons/aws/resource-access-manager.js +10 -10
  259. package/icons/aws/resource-explorer.js +10 -10
  260. package/icons/aws/robo-maker.js +10 -10
  261. package/icons/aws/route-53.js +10 -10
  262. package/icons/aws/s3-on-outposts.js +10 -10
  263. package/icons/aws/sage-maker-ground-truth.js +10 -10
  264. package/icons/aws/sage-maker-studio-lab.js +10 -10
  265. package/icons/aws/sage-maker.js +10 -10
  266. package/icons/aws/savings-plans.js +10 -10
  267. package/icons/aws/secrets-manager.js +10 -10
  268. package/icons/aws/security-hub.js +10 -10
  269. package/icons/aws/security-lake.js +10 -10
  270. package/icons/aws/server-migration-service.js +10 -10
  271. package/icons/aws/serverless-application-repository.js +10 -10
  272. package/icons/aws/service-catalog.js +10 -10
  273. package/icons/aws/service-management-connector.js +12 -12
  274. package/icons/aws/shield.js +10 -10
  275. package/icons/aws/signer.js +10 -10
  276. package/icons/aws/sim-space-weaver.js +10 -10
  277. package/icons/aws/simple-email-service.js +10 -10
  278. package/icons/aws/simple-notification-service.js +10 -10
  279. package/icons/aws/simple-queue-service.js +10 -10
  280. package/icons/aws/simple-storage-service-glacier.js +10 -10
  281. package/icons/aws/simple-storage-service.js +10 -10
  282. package/icons/aws/site-to-site-vpn.js +10 -10
  283. package/icons/aws/snowball-edge.js +10 -10
  284. package/icons/aws/snowball.js +10 -10
  285. package/icons/aws/snowcone.js +10 -10
  286. package/icons/aws/snowmobile.js +10 -10
  287. package/icons/aws/step-functions.js +10 -10
  288. package/icons/aws/storage-gateway.js +10 -10
  289. package/icons/aws/sumerian.js +10 -10
  290. package/icons/aws/supply-chain.js +10 -10
  291. package/icons/aws/support.js +10 -10
  292. package/icons/aws/systems-manager.js +10 -10
  293. package/icons/aws/tensor-flow-on-aws.js +10 -10
  294. package/icons/aws/textract.js +10 -10
  295. package/icons/aws/thinkbox-deadline.js +10 -10
  296. package/icons/aws/thinkbox-frost.js +10 -10
  297. package/icons/aws/thinkbox-krakatoa.js +10 -10
  298. package/icons/aws/thinkbox-sequoia.js +10 -10
  299. package/icons/aws/thinkbox-stoke.js +10 -10
  300. package/icons/aws/thinkbox-xmesh.js +10 -10
  301. package/icons/aws/timestream.js +10 -10
  302. package/icons/aws/tools-and-sdks.js +10 -10
  303. package/icons/aws/torch-serve.js +10 -10
  304. package/icons/aws/training-certification.js +10 -10
  305. package/icons/aws/transcribe.js +10 -10
  306. package/icons/aws/transfer-family.js +10 -10
  307. package/icons/aws/transit-gateway.js +10 -10
  308. package/icons/aws/translate.js +10 -10
  309. package/icons/aws/trusted-advisor.js +10 -10
  310. package/icons/aws/verified-access.js +10 -10
  311. package/icons/aws/verified-permissions.js +10 -10
  312. package/icons/aws/virtual-private-cloud.js +10 -10
  313. package/icons/aws/vmware-cloud-on-aws.js +10 -10
  314. package/icons/aws/vpc-lattice.js +10 -10
  315. package/icons/aws/waf.js +10 -10
  316. package/icons/aws/wavelength.js +10 -10
  317. package/icons/aws/well-architected-tool.js +10 -10
  318. package/icons/aws/wickr.js +10 -10
  319. package/icons/aws/work-docs-sdk.js +10 -10
  320. package/icons/aws/work-docs.js +10 -10
  321. package/icons/aws/work-link.js +10 -10
  322. package/icons/aws/work-mail.js +10 -10
  323. package/icons/aws/work-spaces-family.js +10 -10
  324. package/icons/aws/x-ray.js +10 -10
  325. package/icons/gcp/access-context-manager.js +7 -7
  326. package/icons/gcp/administration.js +14 -14
  327. package/icons/gcp/advanced-agent-modeling.js +9 -9
  328. package/icons/gcp/advanced-solutions-lab.js +32 -32
  329. package/icons/gcp/agent-assist.js +4 -4
  330. package/icons/gcp/ai-hub.js +13 -13
  331. package/icons/gcp/ai-platform-unified.js +11 -11
  332. package/icons/gcp/ai-platform.js +6 -6
  333. package/icons/gcp/analytics-hub.js +7 -7
  334. package/icons/gcp/anthos-config-management.js +7 -7
  335. package/icons/gcp/anthos-service-mesh.js +4 -4
  336. package/icons/gcp/anthos.js +8 -8
  337. package/icons/gcp/api-analytics.js +10 -10
  338. package/icons/gcp/api-monetization.js +13 -13
  339. package/icons/gcp/api.js +9 -9
  340. package/icons/gcp/apigee-api-platform.js +9 -9
  341. package/icons/gcp/apigee-sense.js +7 -7
  342. package/icons/gcp/app-engine.js +10 -10
  343. package/icons/gcp/artifact-registry.js +19 -19
  344. package/icons/gcp/asset-inventory.js +9 -9
  345. package/icons/gcp/assured-workloads.js +11 -11
  346. package/icons/gcp/auto-ml-natural-language.js +6 -6
  347. package/icons/gcp/auto-ml-tables.js +9 -9
  348. package/icons/gcp/auto-ml-translation.js +9 -9
  349. package/icons/gcp/auto-ml-video-intelligence.js +9 -9
  350. package/icons/gcp/auto-ml-vision.js +8 -8
  351. package/icons/gcp/auto-ml.js +10 -10
  352. package/icons/gcp/bare-metal-solutions.js +7 -7
  353. package/icons/gcp/batch.js +4 -4
  354. package/icons/gcp/beyondcorp.js +4 -4
  355. package/icons/gcp/big-query.js +11 -11
  356. package/icons/gcp/bigtable.js +22 -22
  357. package/icons/gcp/billing.js +14 -14
  358. package/icons/gcp/binary-authorization.js +7 -7
  359. package/icons/gcp/catalog.js +10 -10
  360. package/icons/gcp/certificate-authority-service.js +8 -8
  361. package/icons/gcp/certificate-manager.js +7 -7
  362. package/icons/gcp/cloud-api-gateway.js +4 -4
  363. package/icons/gcp/cloud-apis.js +14 -14
  364. package/icons/gcp/cloud-armor.js +11 -11
  365. package/icons/gcp/cloud-asset-inventory.js +7 -7
  366. package/icons/gcp/cloud-audit-logs.js +14 -14
  367. package/icons/gcp/cloud-build.js +9 -9
  368. package/icons/gcp/cloud-cdn.js +18 -18
  369. package/icons/gcp/cloud-code.js +12 -12
  370. package/icons/gcp/cloud-composer.js +9 -9
  371. package/icons/gcp/cloud-data-fusion.js +11 -11
  372. package/icons/gcp/cloud-deploy.js +7 -7
  373. package/icons/gcp/cloud-deployment-manager.js +14 -14
  374. package/icons/gcp/cloud-dns.js +16 -16
  375. package/icons/gcp/cloud-domains.js +9 -9
  376. package/icons/gcp/cloud-ekm.js +4 -4
  377. package/icons/gcp/cloud-endpoints.js +13 -13
  378. package/icons/gcp/cloud-external-ip-addresses.js +6 -6
  379. package/icons/gcp/cloud-firewall-rules.js +6 -6
  380. package/icons/gcp/cloud-for-marketing.js +4 -4
  381. package/icons/gcp/cloud-functions.js +19 -19
  382. package/icons/gcp/cloud-generic.js +4 -4
  383. package/icons/gcp/cloud-gpu.js +8 -8
  384. package/icons/gcp/cloud-healthcare-api.js +15 -15
  385. package/icons/gcp/cloud-healthcare-marketplace.js +7 -7
  386. package/icons/gcp/cloud-hsm.js +10 -10
  387. package/icons/gcp/cloud-ids.js +9 -9
  388. package/icons/gcp/cloud-inference-api.js +12 -12
  389. package/icons/gcp/cloud-interconnect.js +11 -11
  390. package/icons/gcp/cloud-jobs-api.js +12 -12
  391. package/icons/gcp/cloud-load-balancing.js +16 -16
  392. package/icons/gcp/cloud-logging.js +14 -14
  393. package/icons/gcp/cloud-media-edge.js +20 -20
  394. package/icons/gcp/cloud-monitoring.js +10 -10
  395. package/icons/gcp/cloud-nat.js +9 -9
  396. package/icons/gcp/cloud-natural-language-api.js +13 -13
  397. package/icons/gcp/cloud-network.js +13 -13
  398. package/icons/gcp/cloud-ops.js +12 -12
  399. package/icons/gcp/cloud-optimization-ai-fleet-routing-api.js +7 -7
  400. package/icons/gcp/cloud-optimization-ai.js +7 -7
  401. package/icons/gcp/cloud-router.js +4 -4
  402. package/icons/gcp/cloud-routes.js +8 -8
  403. package/icons/gcp/cloud-run-for-anthos.js +6 -6
  404. package/icons/gcp/cloud-run.js +9 -9
  405. package/icons/gcp/cloud-scheduler.js +13 -13
  406. package/icons/gcp/cloud-security-scanner.js +12 -12
  407. package/icons/gcp/cloud-shell.js +7 -7
  408. package/icons/gcp/cloud-spanner.js +11 -11
  409. package/icons/gcp/cloud-sql.js +12 -12
  410. package/icons/gcp/cloud-storage.js +18 -18
  411. package/icons/gcp/cloud-tasks.js +21 -21
  412. package/icons/gcp/cloud-test-lab.js +11 -11
  413. package/icons/gcp/cloud-tpu.js +22 -22
  414. package/icons/gcp/cloud-translation-api.js +6 -6
  415. package/icons/gcp/cloud-vision-api.js +12 -12
  416. package/icons/gcp/cloud-vpn.js +13 -13
  417. package/icons/gcp/compute-engine.js +13 -13
  418. package/icons/gcp/configuration-management.js +7 -7
  419. package/icons/gcp/connectivity-test.js +4 -4
  420. package/icons/gcp/connectors.js +10 -10
  421. package/icons/gcp/contact-center-ai.js +4 -4
  422. package/icons/gcp/container-optimized-os.js +4 -4
  423. package/icons/gcp/container-registry.js +23 -23
  424. package/icons/gcp/data-catalog.js +9 -9
  425. package/icons/gcp/data-labeling.js +15 -15
  426. package/icons/gcp/data-layers.js +8 -8
  427. package/icons/gcp/data-loss-prevention-api.js +14 -14
  428. package/icons/gcp/data-qn-a.js +9 -9
  429. package/icons/gcp/data-studio.js +12 -12
  430. package/icons/gcp/data-transfer.js +8 -8
  431. package/icons/gcp/database-migration-service.js +7 -7
  432. package/icons/gcp/dataflow.js +16 -16
  433. package/icons/gcp/datalab.js +4 -4
  434. package/icons/gcp/dataplex.js +6 -6
  435. package/icons/gcp/datapol.js +17 -17
  436. package/icons/gcp/dataprep.js +9 -9
  437. package/icons/gcp/dataproc-metastore.js +4 -4
  438. package/icons/gcp/dataproc.js +15 -15
  439. package/icons/gcp/datashare.js +9 -9
  440. package/icons/gcp/datastore.js +35 -35
  441. package/icons/gcp/datastream.js +13 -13
  442. package/icons/gcp/debugger.js +11 -11
  443. package/icons/gcp/developer-portal.js +8 -8
  444. package/icons/gcp/dialogflow-cx.js +7 -7
  445. package/icons/gcp/dialogflow-insights.js +11 -11
  446. package/icons/gcp/dialogflow.js +6 -6
  447. package/icons/gcp/document-ai.js +11 -11
  448. package/icons/gcp/early-access-center.js +4 -4
  449. package/icons/gcp/error-reporting.js +10 -10
  450. package/icons/gcp/eventarc.js +8 -8
  451. package/icons/gcp/filestore.js +10 -10
  452. package/icons/gcp/financial-services-marketplace.js +12 -12
  453. package/icons/gcp/firestore.js +10 -10
  454. package/icons/gcp/fleet-engine.js +7 -7
  455. package/icons/gcp/free-trial.js +12 -12
  456. package/icons/gcp/game-servers.js +17 -17
  457. package/icons/gcp/gce-systems-management.js +4 -4
  458. package/icons/gcp/genomics.js +19 -19
  459. package/icons/gcp/gke-on-prem.js +9 -9
  460. package/icons/gcp/google-cloud-marketplace.js +11 -11
  461. package/icons/gcp/google-kubernetes-engine.js +13 -13
  462. package/icons/gcp/google-maps-platform.js +9 -9
  463. package/icons/gcp/healthcare-nlp-api.js +4 -4
  464. package/icons/gcp/home.js +11 -11
  465. package/icons/gcp/identity-and-access-management.js +6 -6
  466. package/icons/gcp/identity-aware-proxy.js +10 -10
  467. package/icons/gcp/identity-platform.js +10 -10
  468. package/icons/gcp/iot-core.js +6 -6
  469. package/icons/gcp/iot-edge.js +38 -38
  470. package/icons/gcp/key-access-justifications.js +14 -14
  471. package/icons/gcp/key-management-service.js +6 -6
  472. package/icons/gcp/kuberun.js +8 -8
  473. package/icons/gcp/launcher.js +15 -15
  474. package/icons/gcp/local-ssd.js +4 -4
  475. package/icons/gcp/looker.js +9 -9
  476. package/icons/gcp/managed-service-for-microsoft-active-directory.js +12 -12
  477. package/icons/gcp/media-translation-api.js +7 -7
  478. package/icons/gcp/memorystore.js +10 -10
  479. package/icons/gcp/migrate-for-anthos.js +4 -4
  480. package/icons/gcp/migrate-for-compute-engine.js +4 -4
  481. package/icons/gcp/my-cloud.js +9 -9
  482. package/icons/gcp/network-connectivity-center.js +26 -26
  483. package/icons/gcp/network-intelligence-center.js +4 -4
  484. package/icons/gcp/network-security.js +10 -10
  485. package/icons/gcp/network-tiers.js +13 -13
  486. package/icons/gcp/network-topology.js +4 -4
  487. package/icons/gcp/onboarding.js +12 -12
  488. package/icons/gcp/os-configuration-management.js +4 -4
  489. package/icons/gcp/os-inventory-management.js +6 -6
  490. package/icons/gcp/os-patch-management.js +4 -4
  491. package/icons/gcp/partner-interconnect.js +11 -11
  492. package/icons/gcp/partner-portal.js +8 -8
  493. package/icons/gcp/performance-dashboard.js +4 -4
  494. package/icons/gcp/permissions.js +9 -9
  495. package/icons/gcp/persistent-disk.js +7 -7
  496. package/icons/gcp/phishing-protection.js +13 -13
  497. package/icons/gcp/policy-analyzer.js +4 -4
  498. package/icons/gcp/premium-network-tier.js +9 -9
  499. package/icons/gcp/private-connectivity.js +9 -9
  500. package/icons/gcp/private-service-connect.js +12 -12
  501. package/icons/gcp/producer-portal.js +9 -9
  502. package/icons/gcp/profiler.js +11 -11
  503. package/icons/gcp/project.js +15 -15
  504. package/icons/gcp/pub-sub.js +22 -22
  505. package/icons/gcp/quantum-engine.js +10 -10
  506. package/icons/gcp/quotas.js +15 -15
  507. package/icons/gcp/real-world-insights.js +9 -9
  508. package/icons/gcp/recommendations-ai.js +19 -19
  509. package/icons/gcp/release-notes.js +4 -4
  510. package/icons/gcp/retail-api.js +7 -7
  511. package/icons/gcp/risk-manager.js +4 -4
  512. package/icons/gcp/runtime-config.js +15 -15
  513. package/icons/gcp/secret-manager.js +4 -4
  514. package/icons/gcp/security-command-center.js +8 -8
  515. package/icons/gcp/security-health-advisor.js +14 -14
  516. package/icons/gcp/security-key-enforcement.js +6 -6
  517. package/icons/gcp/security.js +8 -8
  518. package/icons/gcp/service-discovery.js +16 -16
  519. package/icons/gcp/speech-to-text.js +17 -17
  520. package/icons/gcp/stackdriver.js +7 -7
  521. package/icons/gcp/standard-network-tier.js +4 -4
  522. package/icons/gcp/stream-suite.js +7 -7
  523. package/icons/gcp/support.js +9 -9
  524. package/icons/gcp/tensorflow-enterprise.js +4 -4
  525. package/icons/gcp/text-to-speech.js +8 -8
  526. package/icons/gcp/tools-for-powershell.js +13 -13
  527. package/icons/gcp/trace.js +12 -12
  528. package/icons/gcp/traffic-director.js +14 -14
  529. package/icons/gcp/transfer-appliance.js +10 -10
  530. package/icons/gcp/transfer.js +4 -4
  531. package/icons/gcp/user-preferences.js +9 -9
  532. package/icons/gcp/vertex-ai.js +27 -27
  533. package/icons/gcp/video-intelligence-api.js +6 -6
  534. package/icons/gcp/virtual-private-cloud.js +15 -15
  535. package/icons/gcp/visual-inspection.js +7 -7
  536. package/icons/gcp/vmware-engine.js +4 -4
  537. package/icons/gcp/web-risk.js +14 -14
  538. package/icons/gcp/web-security-scanner.js +11 -11
  539. package/icons/gcp/workflows.js +15 -15
  540. package/icons/gcp/workload-identity-pool.js +8 -8
  541. package/icons/tech/aarch64.js +10 -10
  542. package/icons/tech/adobe-illustrator.js +4 -4
  543. package/icons/tech/adobe-photoshop.js +4 -4
  544. package/icons/tech/adobe-premiere-pro.js +7 -7
  545. package/icons/tech/adobe-xd.js +4 -4
  546. package/icons/tech/adonis-js.js +4 -4
  547. package/icons/tech/after-effects.js +7 -7
  548. package/icons/tech/airflow.js +13 -13
  549. package/icons/tech/akka.js +6 -6
  550. package/icons/tech/algolia.js +4 -4
  551. package/icons/tech/alpine-js.js +6 -6
  552. package/icons/tech/amazon-web-services.js +6 -6
  553. package/icons/tech/anaconda.js +4 -4
  554. package/icons/tech/android-studio.js +11 -11
  555. package/icons/tech/android.js +8 -8
  556. package/icons/tech/angular-js.js +9 -9
  557. package/icons/tech/angular.js +7 -7
  558. package/icons/tech/ansible.js +6 -6
  559. package/icons/tech/ant-design.js +24 -24
  560. package/icons/tech/apache.js +74 -74
  561. package/icons/tech/apl.js +6 -6
  562. package/icons/tech/appcelerator.js +4 -4
  563. package/icons/tech/apple-safari.js +13 -13
  564. package/icons/tech/apple.js +4 -4
  565. package/icons/tech/appwrite.js +6 -6
  566. package/icons/tech/arch-linux.js +6 -6
  567. package/icons/tech/arduino.js +6 -6
  568. package/icons/tech/argo-cd.js +34 -34
  569. package/icons/tech/astro.js +14 -14
  570. package/icons/tech/atom.js +4 -4
  571. package/icons/tech/autodesk-maya.js +44 -44
  572. package/icons/tech/autodesk-shot-grid.js +6 -6
  573. package/icons/tech/awk.js +18 -18
  574. package/icons/tech/azios.js +4 -4
  575. package/icons/tech/azure-devops.js +11 -11
  576. package/icons/tech/azure-sql-database.js +22 -22
  577. package/icons/tech/azure.js +21 -21
  578. package/icons/tech/babel.js +6 -6
  579. package/icons/tech/backbone-js.js +7 -7
  580. package/icons/tech/ballerina.js +4 -4
  581. package/icons/tech/bamboo.js +14 -14
  582. package/icons/tech/bash.js +7 -7
  583. package/icons/tech/behance.js +9 -9
  584. package/icons/tech/bitbucket.js +9 -9
  585. package/icons/tech/blender.js +6 -6
  586. package/icons/tech/bootstrap.js +21 -21
  587. package/icons/tech/bower.js +18 -18
  588. package/icons/tech/browserstack.js +14 -14
  589. package/icons/tech/bulma.js +4 -4
  590. package/icons/tech/bun.js +17 -17
  591. package/icons/tech/c.js +7 -7
  592. package/icons/tech/cairo-graphics.js +6 -6
  593. package/icons/tech/cake-php.js +4 -4
  594. package/icons/tech/canva.js +6 -6
  595. package/icons/tech/capacitor.js +10 -10
  596. package/icons/tech/cassandra.js +17 -17
  597. package/icons/tech/cent-os.js +13 -13
  598. package/icons/tech/chrome.js +38 -38
  599. package/icons/tech/circle-ci.js +4 -4
  600. package/icons/tech/clarity.js +8 -8
  601. package/icons/tech/clion.js +30 -30
  602. package/icons/tech/clojure-script.js +8 -8
  603. package/icons/tech/clojure.js +9 -9
  604. package/icons/tech/cloudflare-workers.js +37 -37
  605. package/icons/tech/cloudflare.js +7 -7
  606. package/icons/tech/cmake.js +8 -8
  607. package/icons/tech/code-igniter.js +4 -4
  608. package/icons/tech/code-pen.js +4 -4
  609. package/icons/tech/codeac.js +4 -4
  610. package/icons/tech/codecov.js +4 -4
  611. package/icons/tech/coffee-script.js +4 -4
  612. package/icons/tech/composer.js +35 -35
  613. package/icons/tech/confluence.js +15 -15
  614. package/icons/tech/consul.js +4 -4
  615. package/icons/tech/contao.js +4 -4
  616. package/icons/tech/corejs.js +4 -4
  617. package/icons/tech/cosmosdb.js +9 -9
  618. package/icons/tech/couchdb.js +4 -4
  619. package/icons/tech/cplusplus.js +8 -8
  620. package/icons/tech/crystal.js +4 -4
  621. package/icons/tech/csharp.js +7 -7
  622. package/icons/tech/css3.js +10 -10
  623. package/icons/tech/cucumber.js +4 -4
  624. package/icons/tech/cypress.js +6 -6
  625. package/icons/tech/d3js.js +28 -28
  626. package/icons/tech/dart.js +9 -9
  627. package/icons/tech/data-grip.js +34 -34
  628. package/icons/tech/data-spell.js +27 -27
  629. package/icons/tech/dbeaver.js +11 -11
  630. package/icons/tech/debian.js +4 -4
  631. package/icons/tech/deno.js +4 -4
  632. package/icons/tech/devicon.js +10 -10
  633. package/icons/tech/digital-ocean.js +6 -6
  634. package/icons/tech/discord-js.js +11 -11
  635. package/icons/tech/django-rest.js +8 -8
  636. package/icons/tech/django.js +6 -6
  637. package/icons/tech/docker.js +20 -20
  638. package/icons/tech/doctrine.js +6 -6
  639. package/icons/tech/dropwizard.js +22 -22
  640. package/icons/tech/drupal.js +11 -11
  641. package/icons/tech/eclipse-ceylon.js +10 -10
  642. package/icons/tech/eclipse-ide.js +20 -20
  643. package/icons/tech/eclipse-vert-x.js +6 -6
  644. package/icons/tech/elasticbeats.js +7 -7
  645. package/icons/tech/elasticsearch.js +7 -7
  646. package/icons/tech/electron.js +8 -8
  647. package/icons/tech/eleventy-11ty.js +6 -6
  648. package/icons/tech/elixir.js +35 -35
  649. package/icons/tech/elm.js +10 -10
  650. package/icons/tech/embedded-c.js +30 -30
  651. package/icons/tech/ember-js.js +6 -6
  652. package/icons/tech/envoy.js +7 -7
  653. package/icons/tech/erlang.js +4 -4
  654. package/icons/tech/eslint.js +6 -6
  655. package/icons/tech/express.js +4 -4
  656. package/icons/tech/facebook.js +6 -6
  657. package/icons/tech/fast-api.js +4 -4
  658. package/icons/tech/fastify.js +6 -6
  659. package/icons/tech/fauna.js +4 -4
  660. package/icons/tech/feathers.js +4 -4
  661. package/icons/tech/fedora.js +10 -10
  662. package/icons/tech/figma.js +9 -9
  663. package/icons/tech/file-zilla.js +8 -8
  664. package/icons/tech/firebase.js +4 -4
  665. package/icons/tech/firefox.js +335 -335
  666. package/icons/tech/flask.js +4 -4
  667. package/icons/tech/flutter.js +12 -12
  668. package/icons/tech/fortran.js +4 -4
  669. package/icons/tech/foundation.js +37 -37
  670. package/icons/tech/fsharp.js +7 -7
  671. package/icons/tech/gatling.js +4 -4
  672. package/icons/tech/gatsby.js +4 -4
  673. package/icons/tech/gazebo.js +8 -8
  674. package/icons/tech/gcc.js +11 -11
  675. package/icons/tech/gentoo.js +4 -4
  676. package/icons/tech/ghost.js +6 -6
  677. package/icons/tech/gimp.js +68 -68
  678. package/icons/tech/git.js +4 -4
  679. package/icons/tech/gitbook.js +4 -4
  680. package/icons/tech/github-actions.js +6 -6
  681. package/icons/tech/github-codespaces.js +18 -18
  682. package/icons/tech/github.js +6 -6
  683. package/icons/tech/gitlab.js +8 -8
  684. package/icons/tech/gitpod.js +8 -8
  685. package/icons/tech/gitter.js +4 -4
  686. package/icons/tech/gnu-emacs.js +4 -4
  687. package/icons/tech/go-land.js +33 -33
  688. package/icons/tech/go.js +39 -39
  689. package/icons/tech/godot-engine.js +11 -11
  690. package/icons/tech/google-cloud.js +8 -8
  691. package/icons/tech/google.js +9 -9
  692. package/icons/tech/gradle.js +4 -4
  693. package/icons/tech/grafana.js +8 -8
  694. package/icons/tech/grails.js +6 -6
  695. package/icons/tech/graphql.js +12 -12
  696. package/icons/tech/groovy.js +102 -102
  697. package/icons/tech/grunt-js.js +33 -33
  698. package/icons/tech/gulp-js.js +4 -4
  699. package/icons/tech/hadoop.js +9 -9
  700. package/icons/tech/handlebars.js +6 -6
  701. package/icons/tech/hardhat.js +26 -26
  702. package/icons/tech/harvester.js +7 -7
  703. package/icons/tech/hashicorp-vault.js +4 -4
  704. package/icons/tech/haskell.js +7 -7
  705. package/icons/tech/haxe.js +14 -14
  706. package/icons/tech/helm.js +4 -4
  707. package/icons/tech/heroku.js +4 -4
  708. package/icons/tech/hibernate.js +6 -6
  709. package/icons/tech/homebrew.js +9 -9
  710. package/icons/tech/html5.js +8 -8
  711. package/icons/tech/hugo.js +7 -7
  712. package/icons/tech/ibm-spss-statistics.js +6 -6
  713. package/icons/tech/ie10.js +4 -4
  714. package/icons/tech/ifttt.js +4 -4
  715. package/icons/tech/influxdb.js +4 -4
  716. package/icons/tech/inkscape.js +115 -115
  717. package/icons/tech/insomnia.js +10 -10
  718. package/icons/tech/intellij-idea.js +37 -37
  719. package/icons/tech/ionic.js +6 -6
  720. package/icons/tech/jaeger.js +21 -21
  721. package/icons/tech/jamstack.js +4 -4
  722. package/icons/tech/jasmine.js +7 -7
  723. package/icons/tech/java.js +9 -9
  724. package/icons/tech/javascript.js +6 -6
  725. package/icons/tech/jeet.js +32 -32
  726. package/icons/tech/jekyll.js +43 -43
  727. package/icons/tech/jenkins.js +21 -21
  728. package/icons/tech/jest.js +4 -4
  729. package/icons/tech/jetbrains.js +26 -26
  730. package/icons/tech/jira-align.js +15 -15
  731. package/icons/tech/jira.js +14 -14
  732. package/icons/tech/jquery.js +4 -4
  733. package/icons/tech/json.js +12 -12
  734. package/icons/tech/jule.js +4 -4
  735. package/icons/tech/julia.js +10 -10
  736. package/icons/tech/junit.js +6 -6
  737. package/icons/tech/jupyter.js +8 -8
  738. package/icons/tech/k3os.js +4 -4
  739. package/icons/tech/k3s.js +4 -4
  740. package/icons/tech/kafka.js +4 -4
  741. package/icons/tech/kaggle.js +4 -4
  742. package/icons/tech/karate.js +6 -6
  743. package/icons/tech/karma.js +6 -6
  744. package/icons/tech/keras.js +6 -6
  745. package/icons/tech/kibana.js +7 -7
  746. package/icons/tech/knex-js.js +4 -4
  747. package/icons/tech/knockout.js +4 -4
  748. package/icons/tech/kotlin.js +9 -9
  749. package/icons/tech/krakenjs.js +4 -4
  750. package/icons/tech/ktor.js +18 -18
  751. package/icons/tech/kubernetes.js +7 -7
  752. package/icons/tech/labview.js +7 -7
  753. package/icons/tech/laravel.js +4 -4
  754. package/icons/tech/latex.js +9 -9
  755. package/icons/tech/less-js.js +4 -4
  756. package/icons/tech/linkedin.js +6 -6
  757. package/icons/tech/linux.js +803 -803
  758. package/icons/tech/liquibase.js +4 -4
  759. package/icons/tech/livewire.js +12 -12
  760. package/icons/tech/llvm.js +9 -9
  761. package/icons/tech/logstash.js +7 -7
  762. package/icons/tech/lua.js +7 -7
  763. package/icons/tech/lumen.js +4 -4
  764. package/icons/tech/magento.js +4 -4
  765. package/icons/tech/markdown.js +6 -6
  766. package/icons/tech/material-ui.js +8 -8
  767. package/icons/tech/materialize.js +6 -6
  768. package/icons/tech/matlab.js +25 -25
  769. package/icons/tech/matplotlib.js +26 -26
  770. package/icons/tech/maven.js +141 -141
  771. package/icons/tech/meteor-js.js +4 -4
  772. package/icons/tech/microsoft-sql-server.js +4 -4
  773. package/icons/tech/minitab.js +11 -11
  774. package/icons/tech/mob-x.js +9 -9
  775. package/icons/tech/mocha.js +6 -6
  776. package/icons/tech/modx.js +8 -8
  777. package/icons/tech/moleculer.js +4 -4
  778. package/icons/tech/mongodb.js +20 -20
  779. package/icons/tech/mongoose-js.js +6 -6
  780. package/icons/tech/moodle.js +41 -41
  781. package/icons/tech/ms-dos.js +15 -15
  782. package/icons/tech/mysql.js +4 -4
  783. package/icons/tech/nano.js +4 -4
  784. package/icons/tech/nerog.js +27 -27
  785. package/icons/tech/nestjs.js +4 -4
  786. package/icons/tech/net-core.js +6 -6
  787. package/icons/tech/net.js +120 -120
  788. package/icons/tech/network-x.js +13 -13
  789. package/icons/tech/new4j.js +6 -6
  790. package/icons/tech/nextjs.js +4 -4
  791. package/icons/tech/nginx.js +4 -4
  792. package/icons/tech/nhibernate.js +6 -6
  793. package/icons/tech/nim.js +6 -6
  794. package/icons/tech/nimble.js +11 -11
  795. package/icons/tech/nix.js +6 -6
  796. package/icons/tech/nodejs.js +4 -4
  797. package/icons/tech/nodemon.js +6 -6
  798. package/icons/tech/nodewebkit.js +9 -9
  799. package/icons/tech/npm.js +4 -4
  800. package/icons/tech/nuget.js +4 -4
  801. package/icons/tech/num-py.js +6 -6
  802. package/icons/tech/nuxt-js.js +7 -7
  803. package/icons/tech/objective-c.js +6 -6
  804. package/icons/tech/ocaml.js +22 -22
  805. package/icons/tech/oh-my-zsh.js +8 -8
  806. package/icons/tech/okta.js +6 -6
  807. package/icons/tech/open-al.js +6 -6
  808. package/icons/tech/open-api.js +16 -16
  809. package/icons/tech/open-cl.js +9 -9
  810. package/icons/tech/open-cv.js +7 -7
  811. package/icons/tech/open-gl.js +8 -8
  812. package/icons/tech/open-stack.js +4 -4
  813. package/icons/tech/open-suse.js +6 -6
  814. package/icons/tech/open-telemetry.js +6 -6
  815. package/icons/tech/opera.js +14 -14
  816. package/icons/tech/oracle.js +4 -4
  817. package/icons/tech/p5js.js +4 -4
  818. package/icons/tech/packer.js +6 -6
  819. package/icons/tech/pandas.js +9 -9
  820. package/icons/tech/perl.js +6 -6
  821. package/icons/tech/pf-sense.js +4 -4
  822. package/icons/tech/phalcon.js +29 -29
  823. package/icons/tech/phoenix-framework.js +4 -4
  824. package/icons/tech/photon-engine.js +12 -12
  825. package/icons/tech/php-storm.js +31 -31
  826. package/icons/tech/php.js +17 -17
  827. package/icons/tech/playwrite.js +11 -11
  828. package/icons/tech/ploty.js +7 -7
  829. package/icons/tech/podman.js +27 -27
  830. package/icons/tech/polygon.js +6 -6
  831. package/icons/tech/portainer.js +9 -9
  832. package/icons/tech/postcss.js +7 -7
  833. package/icons/tech/postgresql.js +8 -8
  834. package/icons/tech/postman.js +7 -7
  835. package/icons/tech/powershell.js +17 -17
  836. package/icons/tech/processing.js +98 -98
  837. package/icons/tech/prometheus.js +4 -4
  838. package/icons/tech/protractor.js +4 -4
  839. package/icons/tech/purescript.js +4 -4
  840. package/icons/tech/putty.js +47 -47
  841. package/icons/tech/pycharm.js +55 -55
  842. package/icons/tech/pyscript.js +6 -6
  843. package/icons/tech/pytest.js +12 -12
  844. package/icons/tech/python-poetry.js +37 -37
  845. package/icons/tech/python.js +16 -16
  846. package/icons/tech/pytorch.js +6 -6
  847. package/icons/tech/qodana.js +22 -22
  848. package/icons/tech/qt.js +4 -4
  849. package/icons/tech/quarkus.js +14 -14
  850. package/icons/tech/quasar.js +6 -6
  851. package/icons/tech/qwik.js +7 -7
  852. package/icons/tech/r.js +13 -13
  853. package/icons/tech/rabbitmq.js +4 -4
  854. package/icons/tech/rancher.js +4 -4
  855. package/icons/tech/raspberrypi.js +7 -7
  856. package/icons/tech/reach.js +6 -6
  857. package/icons/tech/react-bootstrap.js +4 -4
  858. package/icons/tech/react.js +6 -6
  859. package/icons/tech/realm.js +12 -12
  860. package/icons/tech/red-cube-s-epic-compiler-thingy-programming-re-ct.js +8 -8
  861. package/icons/tech/redhat.js +7 -7
  862. package/icons/tech/redis.js +14 -14
  863. package/icons/tech/redux.js +4 -4
  864. package/icons/tech/ren-py.js +164 -164
  865. package/icons/tech/rider.js +20 -20
  866. package/icons/tech/robot-operating-system-ros.js +4 -4
  867. package/icons/tech/rocksdb.js +6 -6
  868. package/icons/tech/rollup-js.js +37 -37
  869. package/icons/tech/rspec.js +8 -8
  870. package/icons/tech/rstudio.js +7 -7
  871. package/icons/tech/ruby-mine.js +28 -28
  872. package/icons/tech/ruby-on-rails.js +4 -4
  873. package/icons/tech/ruby.js +120 -120
  874. package/icons/tech/rust.js +4 -4
  875. package/icons/tech/salesforce.js +7 -7
  876. package/icons/tech/sanity.js +7 -7
  877. package/icons/tech/sass.js +4 -4
  878. package/icons/tech/scala.js +6 -6
  879. package/icons/tech/scalingo.js +6 -6
  880. package/icons/tech/sdl.js +11 -11
  881. package/icons/tech/selenium.js +6 -6
  882. package/icons/tech/sema-software.js +4 -4
  883. package/icons/tech/sequelize.js +31 -31
  884. package/icons/tech/shopware.js +6 -6
  885. package/icons/tech/sketch.js +11 -11
  886. package/icons/tech/slack.js +8 -8
  887. package/icons/tech/socket-io.js +6 -6
  888. package/icons/tech/solid-js.js +27 -27
  889. package/icons/tech/solidity.js +10 -10
  890. package/icons/tech/sonarqube.js +4 -4
  891. package/icons/tech/sourcetree.js +4 -4
  892. package/icons/tech/spark.js +4 -4
  893. package/icons/tech/splunk.js +4 -4
  894. package/icons/tech/spring.js +4 -4
  895. package/icons/tech/sql-developer.js +10 -10
  896. package/icons/tech/sqlalchemy.js +6 -6
  897. package/icons/tech/sqlite.js +11 -11
  898. package/icons/tech/ssh.js +4 -4
  899. package/icons/tech/stackoverflow.js +6 -6
  900. package/icons/tech/stata.js +4 -4
  901. package/icons/tech/storybook.js +4 -4
  902. package/icons/tech/streamlit.js +7 -7
  903. package/icons/tech/stylus.js +6 -6
  904. package/icons/tech/subversion.js +4 -4
  905. package/icons/tech/svelte.js +6 -6
  906. package/icons/tech/swagger.js +6 -6
  907. package/icons/tech/swift.js +6 -6
  908. package/icons/tech/symfony.js +4 -4
  909. package/icons/tech/tailwind-css.js +4 -4
  910. package/icons/tech/tauri.js +8 -8
  911. package/icons/tech/tensorflow.js +4 -4
  912. package/icons/tech/terraform.js +7 -7
  913. package/icons/tech/tex.js +4 -4
  914. package/icons/tech/the-algorithms.js +4 -4
  915. package/icons/tech/three-js.js +8 -8
  916. package/icons/tech/titanium-sdk.js +4 -4
  917. package/icons/tech/tomcat.js +11 -11
  918. package/icons/tech/tortoise-git.js +9 -9
  919. package/icons/tech/tower.js +139 -139
  920. package/icons/tech/traefik-mesh.js +4 -4
  921. package/icons/tech/traefik-proxy.js +4 -4
  922. package/icons/tech/travis-ci.js +4 -4
  923. package/icons/tech/trello.js +4 -4
  924. package/icons/tech/twitter.js +4 -4
  925. package/icons/tech/typescript.js +6 -6
  926. package/icons/tech/typo3.js +4 -4
  927. package/icons/tech/ubuntu.js +4 -4
  928. package/icons/tech/uml.js +8 -8
  929. package/icons/tech/unity.js +7 -7
  930. package/icons/tech/unix.js +4 -4
  931. package/icons/tech/unreal-engine.js +6 -6
  932. package/icons/tech/uwsgi.js +11 -11
  933. package/icons/tech/v8.js +33 -33
  934. package/icons/tech/vagrant.js +6 -6
  935. package/icons/tech/vala.js +18 -18
  936. package/icons/tech/vercel.js +4 -4
  937. package/icons/tech/veutify.js +8 -8
  938. package/icons/tech/vim.js +37 -37
  939. package/icons/tech/visualstudio.js +4 -4
  940. package/icons/tech/vite.js +4 -4
  941. package/icons/tech/vitejs.js +14 -14
  942. package/icons/tech/vscode.js +31 -31
  943. package/icons/tech/vsphere.js +9 -9
  944. package/icons/tech/vue-storefront.js +7 -7
  945. package/icons/tech/vue.js +7 -7
  946. package/icons/tech/vyper.js +8 -8
  947. package/icons/tech/webassembly.js +4 -4
  948. package/icons/tech/webflow.js +4 -4
  949. package/icons/tech/weblate.js +17 -17
  950. package/icons/tech/webpack.js +6 -6
  951. package/icons/tech/webstorm.js +19 -19
  952. package/icons/tech/windows11.js +4 -4
  953. package/icons/tech/windows8.js +4 -4
  954. package/icons/tech/woo-commerce.js +7 -7
  955. package/icons/tech/wordpress.js +11 -11
  956. package/icons/tech/xamarin.js +4 -4
  957. package/icons/tech/xcode.js +251 -251
  958. package/icons/tech/xml.js +8 -8
  959. package/icons/tech/yaml.js +7 -7
  960. package/icons/tech/yarn.js +6 -6
  961. package/icons/tech/yii-framework.js +8 -8
  962. package/icons/tech/yuno-host.js +6 -6
  963. package/icons/tech/zend-framework.js +4 -4
  964. package/icons/tech/zig.js +13 -13
  965. package/package.json +33 -32
  966. package/react/index.d.ts +1400 -747
  967. package/react/index.mjs +4382 -2784
  968. package/react/style.css +1 -1
  969. package/dist/shared/likec4.BaYahRry.mjs +0 -1221
@@ -2307,6 +2307,17 @@ const isEdgeBase = (element) => "id" in element && "source" in element && "targe
2307
2307
  x: node.position.x - offsetX,
2308
2308
  y: node.position.y - offsetY
2309
2309
  };
2310
+ }, getNodesBounds = (nodes, params = { nodeOrigin: [0, 0], nodeLookup: void 0 }) => {
2311
+ if (nodes.length === 0)
2312
+ return { x: 0, y: 0, width: 0, height: 0 };
2313
+ const box = nodes.reduce((currBox, nodeOrId) => {
2314
+ const isId = typeof nodeOrId == "string";
2315
+ let currentNode = !params.nodeLookup && !isId ? nodeOrId : void 0;
2316
+ params.nodeLookup && (currentNode = isId ? params.nodeLookup.get(nodeOrId) : isInternalNodeBase(nodeOrId) ? nodeOrId : params.nodeLookup.get(nodeOrId.id));
2317
+ const nodeBox = currentNode ? nodeToBox(currentNode, params.nodeOrigin) : { x: 0, y: 0, x2: 0, y2: 0 };
2318
+ return getBoundsOfBoxes(currBox, nodeBox);
2319
+ }, { x: 1 / 0, y: 1 / 0, x2: -1 / 0, y2: -1 / 0 });
2320
+ return boxToRect(box);
2310
2321
  }, getInternalNodesBounds = (nodeLookup, params = {}) => {
2311
2322
  if (nodeLookup.size === 0)
2312
2323
  return { x: 0, y: 0, width: 0, height: 0 };
@@ -2349,30 +2360,26 @@ async function fitView({ nodes, width, height, panZoom, minZoom, maxZoom }, opti
2349
2360
  const bounds = getInternalNodesBounds(nodes), viewport = getViewportForBounds(bounds, width, height, options?.minZoom ?? minZoom, options?.maxZoom ?? maxZoom, options?.padding ?? 0.1);
2350
2361
  return await panZoom.setViewport(viewport, { duration: options?.duration }), Promise.resolve(!0);
2351
2362
  }
2352
- function clampNodeExtent(node, extent) {
2353
- return !extent || extent === "parent" ? extent : [extent[0], [extent[1][0] - (node.measured?.width ?? 0), extent[1][1] - (node.measured?.height ?? 0)]];
2354
- }
2355
2363
  function calculateNodePosition({ nodeId, nextPosition, nodeLookup, nodeOrigin = [0, 0], nodeExtent, onError }) {
2356
2364
  const node = nodeLookup.get(nodeId), parentNode = node.parentId ? nodeLookup.get(node.parentId) : void 0, { x: parentX, y: parentY } = parentNode ? parentNode.internals.positionAbsolute : { x: 0, y: 0 }, origin = node.origin ?? nodeOrigin;
2357
- let currentExtent = clampNodeExtent(node, node.extent || nodeExtent);
2365
+ let extent = nodeExtent;
2358
2366
  if (node.extent === "parent" && !node.expandParent)
2359
2367
  if (!parentNode)
2360
2368
  onError?.("005", errorMessages.error005());
2361
2369
  else {
2362
- const nodeWidth = node.measured.width, nodeHeight = node.measured.height, parentWidth = parentNode.measured.width, parentHeight = parentNode.measured.height;
2363
- nodeWidth && nodeHeight && parentWidth && parentHeight && (currentExtent = [
2370
+ const parentWidth = parentNode.measured.width, parentHeight = parentNode.measured.height;
2371
+ parentWidth && parentHeight && (extent = [
2364
2372
  [parentX, parentY],
2365
- [parentX + parentWidth - nodeWidth, parentY + parentHeight - nodeHeight]
2373
+ [parentX + parentWidth, parentY + parentHeight]
2366
2374
  ]);
2367
2375
  }
2368
- else parentNode && isCoordinateExtent(node.extent) && (currentExtent = [
2376
+ else parentNode && isCoordinateExtent(node.extent) && (extent = [
2369
2377
  [node.extent[0][0] + parentX, node.extent[0][1] + parentY],
2370
2378
  [node.extent[1][0] + parentX, node.extent[1][1] + parentY]
2371
2379
  ]);
2372
- const positionAbsolute = isCoordinateExtent(currentExtent) ? clampPosition(nextPosition, currentExtent) : nextPosition;
2380
+ const positionAbsolute = isCoordinateExtent(extent) ? clampPosition(nextPosition, extent, node.measured) : nextPosition;
2373
2381
  return {
2374
2382
  position: {
2375
- // TODO: is there a better way to do this?
2376
2383
  x: positionAbsolute.x - parentX + node.measured.width * origin[0],
2377
2384
  y: positionAbsolute.y - parentY + node.measured.height * origin[1]
2378
2385
  },
@@ -2401,10 +2408,18 @@ async function getElementsToRemove({ nodesToRemove = [], edgesToRemove = [], nod
2401
2408
  });
2402
2409
  return typeof onBeforeDeleteResult == "boolean" ? onBeforeDeleteResult ? { edges: matchingEdges, nodes: matchingNodes } : { edges: [], nodes: [] } : onBeforeDeleteResult;
2403
2410
  }
2404
- const clamp = (val, min = 0, max = 1) => Math.min(Math.max(val, min), max), clampPosition = (position = { x: 0, y: 0 }, extent) => ({
2405
- x: clamp(position.x, extent[0][0], extent[1][0]),
2406
- y: clamp(position.y, extent[0][1], extent[1][1])
2407
- }), calcAutoPanVelocity = (value, min, max) => value < min ? clamp(Math.abs(value - min), 1, min) / min : value > max ? -clamp(Math.abs(value - max), 1, min) / min : 0, calcAutoPan = (pos, bounds, speed = 15, distance2 = 40) => {
2411
+ const clamp = (val, min = 0, max = 1) => Math.min(Math.max(val, min), max), clampPosition = (position = { x: 0, y: 0 }, extent, dimensions) => ({
2412
+ x: clamp(position.x, extent[0][0], extent[1][0] - (dimensions?.width ?? 0)),
2413
+ y: clamp(position.y, extent[0][1], extent[1][1] - (dimensions?.height ?? 0))
2414
+ });
2415
+ function clampPositionToParent(childPosition, childDimensions, parent) {
2416
+ const { width: parentWidth, height: parentHeight } = getNodeDimensions(parent), { x: parentX, y: parentY } = parent.internals.positionAbsolute;
2417
+ return clampPosition(childPosition, [
2418
+ [parentX, parentY],
2419
+ [parentX + parentWidth, parentY + parentHeight]
2420
+ ], childDimensions);
2421
+ }
2422
+ const calcAutoPanVelocity = (value, min, max) => value < min ? clamp(Math.abs(value - min), 1, min) / min : value > max ? -clamp(Math.abs(value - max), 1, min) / min : 0, calcAutoPan = (pos, bounds, speed = 15, distance2 = 40) => {
2408
2423
  const xMovement = calcAutoPanVelocity(pos.x, distance2, bounds.width - distance2) * speed, yMovement = calcAutoPanVelocity(pos.y, distance2, bounds.height - distance2) * speed;
2409
2424
  return [xMovement, yMovement];
2410
2425
  }, getBoundsOfBoxes = (box1, box2) => ({
@@ -2759,63 +2774,83 @@ function createMarkerIds(edges, { id: id2, defaultColor, defaultMarkerStart, def
2759
2774
  }
2760
2775
  const defaultOptions = {
2761
2776
  nodeOrigin: [0, 0],
2777
+ nodeExtent: infiniteExtent,
2762
2778
  elevateNodesOnSelect: !0,
2763
2779
  defaults: {}
2764
2780
  }, adoptUserNodesDefaultOptions = {
2765
2781
  ...defaultOptions,
2766
2782
  checkEquality: !0
2767
2783
  };
2784
+ function mergeObjects(base, incoming) {
2785
+ const result = { ...base };
2786
+ for (const key in incoming)
2787
+ incoming[key] !== void 0 && (result[key] = incoming[key]);
2788
+ return result;
2789
+ }
2768
2790
  function updateAbsolutePositions(nodeLookup, parentLookup, options) {
2769
- const _options = { ...defaultOptions, ...options };
2791
+ const _options = mergeObjects(defaultOptions, options);
2770
2792
  for (const node of nodeLookup.values())
2771
- node.parentId && updateChildPosition(node, nodeLookup, parentLookup, _options);
2793
+ node.parentId && updateChildNode(node, nodeLookup, parentLookup, _options);
2772
2794
  }
2773
2795
  function adoptUserNodes(nodes, nodeLookup, parentLookup, options) {
2774
- const _options = { ...adoptUserNodesDefaultOptions, ...options }, tmpLookup = new Map(nodeLookup);
2796
+ const _options = mergeObjects(adoptUserNodesDefaultOptions, options), tmpLookup = new Map(nodeLookup), selectedNodeZ = _options?.elevateNodesOnSelect ? 1e3 : 0;
2775
2797
  nodeLookup.clear(), parentLookup.clear();
2776
- const selectedNodeZ = options?.elevateNodesOnSelect ? 1e3 : 0;
2777
2798
  for (const userNode of nodes) {
2778
2799
  let internalNode = tmpLookup.get(userNode.id);
2779
- _options.checkEquality && userNode === internalNode?.internals.userNode || (internalNode = {
2780
- ..._options.defaults,
2781
- ...userNode,
2782
- measured: {
2783
- width: userNode.measured?.width,
2784
- height: userNode.measured?.height
2785
- },
2786
- internals: {
2787
- positionAbsolute: getNodePositionWithOrigin(userNode, _options.nodeOrigin),
2788
- // if user re-initializes the node or removes `measured` for whatever reason, we reset the handleBounds so that the node gets re-measured
2789
- handleBounds: userNode.measured ? internalNode?.internals.handleBounds : void 0,
2790
- z: calculateZ(userNode, selectedNodeZ),
2791
- userNode
2792
- }
2793
- }), nodeLookup.set(userNode.id, internalNode), userNode.parentId && updateChildPosition(internalNode, nodeLookup, parentLookup, options);
2800
+ if (_options.checkEquality && userNode === internalNode?.internals.userNode)
2801
+ nodeLookup.set(userNode.id, internalNode);
2802
+ else {
2803
+ const positionWithOrigin = getNodePositionWithOrigin(userNode, _options.nodeOrigin), extent = isCoordinateExtent(userNode.extent) ? userNode.extent : _options.nodeExtent, clampedPosition = clampPosition(positionWithOrigin, extent, getNodeDimensions(userNode));
2804
+ internalNode = {
2805
+ ..._options.defaults,
2806
+ ...userNode,
2807
+ measured: {
2808
+ width: userNode.measured?.width,
2809
+ height: userNode.measured?.height
2810
+ },
2811
+ internals: {
2812
+ positionAbsolute: clampedPosition,
2813
+ // if user re-initializes the node or removes `measured` for whatever reason, we reset the handleBounds so that the node gets re-measured
2814
+ handleBounds: userNode.measured ? internalNode?.internals.handleBounds : void 0,
2815
+ z: calculateZ(userNode, selectedNodeZ),
2816
+ userNode
2817
+ }
2818
+ }, nodeLookup.set(userNode.id, internalNode);
2819
+ }
2820
+ userNode.parentId && updateChildNode(internalNode, nodeLookup, parentLookup, options);
2794
2821
  }
2795
2822
  }
2796
- function updateChildPosition(node, nodeLookup, parentLookup, options) {
2797
- const _options = { ...defaultOptions, ...options }, parentId = node.parentId, parentNode = nodeLookup.get(parentId);
2823
+ function updateParentLookup(node, parentLookup) {
2824
+ if (!node.parentId)
2825
+ return;
2826
+ const childNodes = parentLookup.get(node.parentId);
2827
+ childNodes ? childNodes.set(node.id, node) : parentLookup.set(node.parentId, /* @__PURE__ */ new Map([[node.id, node]]));
2828
+ }
2829
+ function updateChildNode(node, nodeLookup, parentLookup, options) {
2830
+ const { elevateNodesOnSelect, nodeOrigin, nodeExtent } = mergeObjects(defaultOptions, options), parentId = node.parentId, parentNode = nodeLookup.get(parentId);
2798
2831
  if (!parentNode) {
2799
2832
  console.warn(`Parent node ${parentId} not found. Please make sure that parent nodes are in front of their child nodes in the nodes array.`);
2800
2833
  return;
2801
2834
  }
2802
- const childNodes = parentLookup.get(parentId);
2803
- childNodes ? childNodes.set(node.id, node) : parentLookup.set(parentId, /* @__PURE__ */ new Map([[node.id, node]]));
2804
- const selectedNodeZ = options?.elevateNodesOnSelect ? 1e3 : 0, { x, y, z } = calculateChildXYZ(node, parentNode, _options.nodeOrigin, selectedNodeZ), currPosition = node.internals.positionAbsolute, positionChanged = x !== currPosition.x || y !== currPosition.y;
2835
+ updateParentLookup(node, parentLookup);
2836
+ const selectedNodeZ = elevateNodesOnSelect ? 1e3 : 0, { x, y, z } = calculateChildXYZ(node, parentNode, nodeOrigin, nodeExtent, selectedNodeZ), { positionAbsolute } = node.internals, positionChanged = x !== positionAbsolute.x || y !== positionAbsolute.y;
2805
2837
  (positionChanged || z !== node.internals.z) && (node.internals = {
2806
2838
  ...node.internals,
2807
- positionAbsolute: positionChanged ? { x, y } : currPosition,
2839
+ positionAbsolute: positionChanged ? { x, y } : positionAbsolute,
2808
2840
  z
2809
2841
  });
2810
2842
  }
2811
2843
  function calculateZ(node, selectedNodeZ) {
2812
2844
  return (isNumeric(node.zIndex) ? node.zIndex : 0) + (node.selected ? selectedNodeZ : 0);
2813
2845
  }
2814
- function calculateChildXYZ(childNode, parentNode, nodeOrigin, selectedNodeZ) {
2815
- const position = getNodePositionWithOrigin(childNode, nodeOrigin), childZ = calculateZ(childNode, selectedNodeZ), parentZ = parentNode.internals.z ?? 0;
2846
+ function calculateChildXYZ(childNode, parentNode, nodeOrigin, nodeExtent, selectedNodeZ) {
2847
+ const { x: parentX, y: parentY } = parentNode.internals.positionAbsolute, childDimensions = getNodeDimensions(childNode), positionWithOrigin = getNodePositionWithOrigin(childNode, nodeOrigin), clampedPosition = isCoordinateExtent(childNode.extent) ? clampPosition(positionWithOrigin, childNode.extent, childDimensions) : positionWithOrigin;
2848
+ let absolutePosition = clampPosition({ x: parentX + clampedPosition.x, y: parentY + clampedPosition.y }, nodeExtent, childDimensions);
2849
+ childNode.extent === "parent" && (absolutePosition = clampPositionToParent(absolutePosition, childDimensions, parentNode));
2850
+ const childZ = calculateZ(childNode, selectedNodeZ), parentZ = parentNode.internals.z ?? 0;
2816
2851
  return {
2817
- x: parentNode.internals.positionAbsolute.x + position.x,
2818
- y: parentNode.internals.positionAbsolute.y + position.y,
2852
+ x: absolutePosition.x,
2853
+ y: absolutePosition.y,
2819
2854
  z: parentZ > childZ ? parentZ : childZ
2820
2855
  };
2821
2856
  }
@@ -2857,7 +2892,7 @@ function handleExpandParent(children2, nodeLookup, parentLookup, nodeOrigin = [0
2857
2892
  });
2858
2893
  }), changes;
2859
2894
  }
2860
- function updateNodeInternals(updates, nodeLookup, parentLookup, domNode, nodeOrigin) {
2895
+ function updateNodeInternals(updates, nodeLookup, parentLookup, domNode, nodeOrigin, nodeExtent) {
2861
2896
  const viewportNode = domNode?.querySelector(".xyflow__viewport");
2862
2897
  let updatedInternals = !1;
2863
2898
  if (!viewportNode)
@@ -2874,15 +2909,16 @@ function updateNodeInternals(updates, nodeLookup, parentLookup, domNode, nodeOri
2874
2909
  else {
2875
2910
  const dimensions = getDimensions(update.nodeElement), dimensionChanged = node.measured.width !== dimensions.width || node.measured.height !== dimensions.height;
2876
2911
  if (!!(dimensions.width && dimensions.height && (dimensionChanged || !node.internals.handleBounds || update.force))) {
2877
- const nodeBounds = update.nodeElement.getBoundingClientRect();
2878
- node.measured = dimensions, node.internals = {
2912
+ const nodeBounds = update.nodeElement.getBoundingClientRect(), extent = isCoordinateExtent(node.extent) ? node.extent : nodeExtent;
2913
+ let { positionAbsolute } = node.internals;
2914
+ node.parentId && node.extent === "parent" ? positionAbsolute = clampPositionToParent(positionAbsolute, dimensions, nodeLookup.get(node.parentId)) : extent && (positionAbsolute = clampPosition(positionAbsolute, extent, dimensions)), node.measured = dimensions, node.internals = {
2879
2915
  ...node.internals,
2880
- positionAbsolute: getNodePositionWithOrigin(node, nodeOrigin),
2916
+ positionAbsolute,
2881
2917
  handleBounds: {
2882
2918
  source: getHandleBounds("source", update.nodeElement, nodeBounds, zoom2, node.id),
2883
2919
  target: getHandleBounds("target", update.nodeElement, nodeBounds, zoom2, node.id)
2884
2920
  }
2885
- }, node.parentId && updateChildPosition(node, nodeLookup, parentLookup, { nodeOrigin }), updatedInternals = !0, dimensionChanged && (changes.push({
2921
+ }, node.parentId && updateChildNode(node, nodeLookup, parentLookup, { nodeOrigin }), updatedInternals = !0, dimensionChanged && (changes.push({
2886
2922
  id: node.id,
2887
2923
  type: "dimensions",
2888
2924
  dimensions
@@ -3132,11 +3168,11 @@ function getClosestHandle(position, connectionRadius, nodeLookup, fromHandle) {
3132
3168
  }
3133
3169
  return closestHandles[0];
3134
3170
  }
3135
- function getHandle(nodeId, handleType, handleId, nodeLookup, withAbsolutePosition = !1) {
3171
+ function getHandle(nodeId, handleType, handleId, nodeLookup, connectionMode, withAbsolutePosition = !1) {
3136
3172
  const node = nodeLookup.get(nodeId);
3137
3173
  if (!node)
3138
3174
  return null;
3139
- const handles = node.internals.handleBounds?.[handleType], handle = (handleId ? handles?.find((h2) => h2.id === handleId) : handles?.[0]) ?? null;
3175
+ const handles = connectionMode === "strict" ? node.internals.handleBounds?.[handleType] : [...node.internals.handleBounds?.source ?? [], ...node.internals.handleBounds?.target ?? []], handle = (handleId ? handles?.find((h2) => h2.id === handleId) : handles?.[0]) ?? null;
3140
3176
  return handle && withAbsolutePosition ? { ...handle, ...getHandlePosition(node, handle, handle.position, !0) } : handle;
3141
3177
  }
3142
3178
  function getHandleType(edgeUpdaterType, handleDomNode) {
@@ -3153,7 +3189,7 @@ function onPointerDown(event, { connectionMode, connectionRadius, handleId, node
3153
3189
  const { x, y } = getEventPosition(event), clickedHandle = doc?.elementFromPoint(x, y), handleType = getHandleType(edgeUpdaterType, clickedHandle), containerBounds = domNode?.getBoundingClientRect();
3154
3190
  if (!containerBounds || !handleType)
3155
3191
  return;
3156
- const fromHandleInternal = getHandle(nodeId, handleType, handleId, nodeLookup);
3192
+ const fromHandleInternal = getHandle(nodeId, handleType, handleId, nodeLookup, connectionMode);
3157
3193
  if (!fromHandleInternal)
3158
3194
  return;
3159
3195
  let position = getEventPosition(event, containerBounds), autoPanStarted = !1, connection = null, isValid = !1, handleDomNode = null;
@@ -3243,7 +3279,7 @@ function isValidHandle(event, { handle, connectionMode, fromNodeId, fromHandleId
3243
3279
  };
3244
3280
  result.connection = connection;
3245
3281
  const isValid = connectable && connectableEnd && (connectionMode === ConnectionMode.Strict ? isTarget && handleType === "source" || !isTarget && handleType === "target" : handleNodeId !== fromNodeId || handleId !== fromHandleId);
3246
- result.isValid = isValid && isValidConnection(connection), result.toHandle = getHandle(handleNodeId, handleType, handleId, nodeLookup, !1);
3282
+ result.isValid = isValid && isValidConnection(connection), result.toHandle = getHandle(handleNodeId, handleType, handleId, nodeLookup, connectionMode, !1);
3247
3283
  }
3248
3284
  return result;
3249
3285
  }
@@ -3387,7 +3423,7 @@ function createFilter({ zoomActivationKeyPressed, zoomOnScroll, zoomOnPinch, pan
3387
3423
  return (!event.ctrlKey || event.type === "wheel") && buttonAllowed;
3388
3424
  };
3389
3425
  }
3390
- function XYPanZoom({ domNode, minZoom, maxZoom, paneClickDistance, translateExtent, viewport, onPanZoom, onPanZoomStart, onPanZoomEnd, onTransformChange, onDraggingChange }) {
3426
+ function XYPanZoom({ domNode, minZoom, maxZoom, paneClickDistance, translateExtent, viewport, onPanZoom, onPanZoomStart, onPanZoomEnd, onDraggingChange }) {
3391
3427
  const zoomPanValues = {
3392
3428
  isZoomingOrPanning: !1,
3393
3429
  usedRightMouseButton: !1,
@@ -3412,7 +3448,7 @@ function XYPanZoom({ domNode, minZoom, maxZoom, paneClickDistance, translateExte
3412
3448
  d3ZoomInstance?.transform(getD3Transition(d3Selection, options?.duration, () => resolve(!0)), transform2);
3413
3449
  }) : Promise.resolve(!1);
3414
3450
  }
3415
- function update({ noWheelClassName, noPanClassName, onPaneContextMenu, userSelectionActive, panOnScroll, panOnDrag, panOnScrollMode, panOnScrollSpeed, preventScrolling, zoomOnPinch, zoomOnScroll, zoomOnDoubleClick, zoomActivationKeyPressed, lib }) {
3451
+ function update({ noWheelClassName, noPanClassName, onPaneContextMenu, userSelectionActive, panOnScroll, panOnDrag, panOnScrollMode, panOnScrollSpeed, preventScrolling, zoomOnPinch, zoomOnScroll, zoomOnDoubleClick, zoomActivationKeyPressed, lib, onTransformChange }) {
3416
3452
  userSelectionActive && !zoomPanValues.isZoomingOrPanning && destroy();
3417
3453
  const wheelHandler = panOnScroll && !zoomActivationKeyPressed && !userSelectionActive ? createPanOnScrollHandler({
3418
3454
  zoomPanValues,
@@ -3697,8 +3733,7 @@ function XYResizer({ domNode, nodeId, getStoreItems, onChange, onEnd }) {
3697
3733
  destroy
3698
3734
  };
3699
3735
  }
3700
- var define_import_meta_env_default = { BASE_URL: "/", MODE: "production", DEV: !1, PROD: !0, SSR: !1 };
3701
- const createStoreImpl = (createState) => {
3736
+ const __vite_import_meta_env__ = { BASE_URL: "/", DEV: !1, MODE: "production", PROD: !0, SSR: !1 }, createStoreImpl = (createState) => {
3702
3737
  let state;
3703
3738
  const listeners = /* @__PURE__ */ new Set(), setState = (partial, replace) => {
3704
3739
  const nextState = typeof partial == "function" ? partial(state) : partial;
@@ -3707,7 +3742,7 @@ const createStoreImpl = (createState) => {
3707
3742
  state = replace ?? (typeof nextState != "object" || nextState === null) ? nextState : Object.assign({}, state, nextState), listeners.forEach((listener) => listener(state, previousState));
3708
3743
  }
3709
3744
  }, getState = () => state, api = { setState, getState, getInitialState: () => initialState, subscribe: (listener) => (listeners.add(listener), () => listeners.delete(listener)), destroy: () => {
3710
- (define_import_meta_env_default ? "production" : void 0) !== "production" && console.warn(
3745
+ (__vite_import_meta_env__ ? "production" : void 0) !== "production" && console.warn(
3711
3746
  "[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected."
3712
3747
  ), listeners.clear();
3713
3748
  } }, initialState = state = createState(setState, getState, api);
@@ -4044,10 +4079,10 @@ const useViewportHelper = () => {
4044
4079
  }), []);
4045
4080
  };
4046
4081
  function applyChanges(changes, elements) {
4047
- const updatedElements = [], changesMap = /* @__PURE__ */ new Map();
4082
+ const updatedElements = [], changesMap = /* @__PURE__ */ new Map(), addItemChanges = [];
4048
4083
  for (const change of changes)
4049
4084
  if (change.type === "add") {
4050
- updatedElements.push(change.item);
4085
+ addItemChanges.push(change);
4051
4086
  continue;
4052
4087
  } else if (change.type === "remove" || change.type === "replace")
4053
4088
  changesMap.set(change.id, [change]);
@@ -4072,7 +4107,9 @@ function applyChanges(changes, elements) {
4072
4107
  applyChange(change, updatedElement);
4073
4108
  updatedElements.push(updatedElement);
4074
4109
  }
4075
- return updatedElements;
4110
+ return addItemChanges.length && addItemChanges.forEach((change) => {
4111
+ change.index !== void 0 ? updatedElements.splice(change.index, 0, { ...change.item }) : updatedElements.push({ ...change.item });
4112
+ }), updatedElements;
4076
4113
  }
4077
4114
  function applyChange(change, element) {
4078
4115
  switch (change.type) {
@@ -4113,9 +4150,9 @@ function getSelectionChanges(items, selectedIds = /* @__PURE__ */ new Set(), mut
4113
4150
  }
4114
4151
  function getElementsDiffChanges({ items = [], lookup }) {
4115
4152
  const changes = [], itemsLookup = new Map(items.map((item) => [item.id, item]));
4116
- for (const item of items) {
4153
+ for (const [index2, item] of items.entries()) {
4117
4154
  const lookupItem = lookup.get(item.id), storeItem = lookupItem?.internals?.userNode ?? lookupItem;
4118
- storeItem !== void 0 && storeItem !== item && changes.push({ id: item.id, item, type: "replace" }), storeItem === void 0 && changes.push({ item, type: "add" });
4155
+ storeItem !== void 0 && storeItem !== item && changes.push({ id: item.id, item, type: "replace" }), storeItem === void 0 && changes.push({ item, type: "add", index: index2 });
4119
4156
  }
4120
4157
  for (const [id2] of lookup)
4121
4158
  itemsLookup.get(id2) === void 0 && changes.push({ id: id2, type: "remove" });
@@ -4296,7 +4333,12 @@ function useReactFlow() {
4296
4333
  const nextData = typeof dataUpdate == "function" ? dataUpdate(edge) : dataUpdate;
4297
4334
  return options.replace ? { ...edge, data: nextData } : { ...edge, data: { ...edge.data, ...nextData } };
4298
4335
  }, options);
4299
- }
4336
+ },
4337
+ getNodesBounds: (nodes) => {
4338
+ const { nodeLookup, nodeOrigin } = store.getState();
4339
+ return getNodesBounds(nodes, { nodeLookup, nodeOrigin });
4340
+ },
4341
+ getHandleConnections: ({ type, id: id2, nodeId }) => Array.from(store.getState().connectionLookup.get(`${nodeId}-${type}-${id2 ?? null}`)?.values() ?? [])
4300
4342
  };
4301
4343
  }, []);
4302
4344
  return useMemo(() => ({
@@ -4347,7 +4389,11 @@ const containerStyle = {
4347
4389
  });
4348
4390
  function ZoomPane({ onPaneContextMenu, zoomOnScroll = !0, zoomOnPinch = !0, panOnScroll = !1, panOnScrollSpeed = 0.5, panOnScrollMode = PanOnScrollMode.Free, zoomOnDoubleClick = !0, panOnDrag = !0, defaultViewport: defaultViewport2, translateExtent, minZoom, maxZoom, zoomActivationKeyCode, preventScrolling = !0, children: children2, noWheelClassName, noPanClassName, onViewportChange, isControlledViewport, paneClickDistance }) {
4349
4391
  const store = useStoreApi(), zoomPane = useRef(null), { userSelectionActive, lib } = useStore(selector$j, shallow$1), zoomActivationKeyPressed = useKeyPress(zoomActivationKeyCode), panZoom = useRef();
4350
- return useResizeHandler(zoomPane), useEffect(() => {
4392
+ useResizeHandler(zoomPane);
4393
+ const onTransformChange = useCallback((transform2) => {
4394
+ onViewportChange?.({ x: transform2[0], y: transform2[1], zoom: transform2[2] }), isControlledViewport || store.setState({ transform: transform2 });
4395
+ }, [onViewportChange, isControlledViewport]);
4396
+ return useEffect(() => {
4351
4397
  if (zoomPane.current) {
4352
4398
  panZoom.current = XYPanZoom({
4353
4399
  domNode: zoomPane.current,
@@ -4356,9 +4402,6 @@ function ZoomPane({ onPaneContextMenu, zoomOnScroll = !0, zoomOnPinch = !0, panO
4356
4402
  translateExtent,
4357
4403
  viewport: defaultViewport2,
4358
4404
  paneClickDistance,
4359
- onTransformChange: (transform2) => {
4360
- onViewportChange?.({ x: transform2[0], y: transform2[1], zoom: transform2[2] }), isControlledViewport || store.setState({ transform: transform2 });
4361
- },
4362
4405
  onDraggingChange: (paneDragging) => store.setState({ paneDragging }),
4363
4406
  onPanZoomStart: (event, vp) => {
4364
4407
  const { onViewportChangeStart, onMoveStart } = store.getState();
@@ -4397,7 +4440,8 @@ function ZoomPane({ onPaneContextMenu, zoomOnScroll = !0, zoomOnPinch = !0, panO
4397
4440
  noPanClassName,
4398
4441
  userSelectionActive,
4399
4442
  noWheelClassName,
4400
- lib
4443
+ lib,
4444
+ onTransformChange
4401
4445
  });
4402
4446
  }, [
4403
4447
  onPaneContextMenu,
@@ -4413,7 +4457,8 @@ function ZoomPane({ onPaneContextMenu, zoomOnScroll = !0, zoomOnPinch = !0, panO
4413
4457
  noPanClassName,
4414
4458
  userSelectionActive,
4415
4459
  noWheelClassName,
4416
- lib
4460
+ lib,
4461
+ onTransformChange
4417
4462
  ]), jsx("div", { className: "react-flow__renderer", ref: zoomPane, style: containerStyle, children: children2 });
4418
4463
  }
4419
4464
  const selector$i = (s) => ({
@@ -4823,7 +4868,7 @@ function NodeWrapper({ id: id2, onClick, onMouseEnter, onMouseMove, onMouseLeave
4823
4868
  }), moveSelectedNodes = useMoveSelectedNodes();
4824
4869
  if (node.hidden)
4825
4870
  return null;
4826
- const nodeDimensions = getNodeDimensions(node), inlineDimensions = getNodeInlineStyleDimensions(node), clampedPosition = nodeExtent ? clampPosition(internals.positionAbsolute, nodeExtent) : internals.positionAbsolute, hasPointerEvents = isSelectable || isDraggable || onClick || onMouseEnter || onMouseMove || onMouseLeave, onMouseEnterHandler = onMouseEnter ? (event) => onMouseEnter(event, { ...internals.userNode }) : void 0, onMouseMoveHandler = onMouseMove ? (event) => onMouseMove(event, { ...internals.userNode }) : void 0, onMouseLeaveHandler = onMouseLeave ? (event) => onMouseLeave(event, { ...internals.userNode }) : void 0, onContextMenuHandler = onContextMenu ? (event) => onContextMenu(event, { ...internals.userNode }) : void 0, onDoubleClickHandler = onDoubleClick ? (event) => onDoubleClick(event, { ...internals.userNode }) : void 0, onSelectNodeHandler = (event) => {
4871
+ const nodeDimensions = getNodeDimensions(node), inlineDimensions = getNodeInlineStyleDimensions(node), hasPointerEvents = isSelectable || isDraggable || onClick || onMouseEnter || onMouseMove || onMouseLeave, onMouseEnterHandler = onMouseEnter ? (event) => onMouseEnter(event, { ...internals.userNode }) : void 0, onMouseMoveHandler = onMouseMove ? (event) => onMouseMove(event, { ...internals.userNode }) : void 0, onMouseLeaveHandler = onMouseLeave ? (event) => onMouseLeave(event, { ...internals.userNode }) : void 0, onContextMenuHandler = onContextMenu ? (event) => onContextMenu(event, { ...internals.userNode }) : void 0, onDoubleClickHandler = onDoubleClick ? (event) => onDoubleClick(event, { ...internals.userNode }) : void 0, onSelectNodeHandler = (event) => {
4827
4872
  const { selectNodesOnDrag, nodeDragThreshold } = store.getState();
4828
4873
  isSelectable && (!selectNodesOnDrag || !isDraggable || nodeDragThreshold > 0) && handleNodeClick({
4829
4874
  id: id2,
@@ -4841,7 +4886,7 @@ function NodeWrapper({ id: id2, onClick, onMouseEnter, onMouseMove, onMouseLeave
4841
4886
  nodeRef
4842
4887
  });
4843
4888
  } else isDraggable && node.selected && Object.prototype.hasOwnProperty.call(arrowKeyDiffs, event.key) && (store.setState({
4844
- ariaLiveMessage: `Moved selected node ${event.key.replace("Arrow", "").toLowerCase()}. New position, x: ${~~clampedPosition.x}, y: ${~~clampedPosition.y}`
4889
+ ariaLiveMessage: `Moved selected node ${event.key.replace("Arrow", "").toLowerCase()}. New position, x: ${~~internals.positionAbsolute.x}, y: ${~~internals.positionAbsolute.y}`
4845
4890
  }), moveSelectedNodes({
4846
4891
  direction: arrowKeyDiffs[event.key],
4847
4892
  factor: event.shiftKey ? 4 : 1
@@ -4864,12 +4909,12 @@ function NodeWrapper({ id: id2, onClick, onMouseEnter, onMouseMove, onMouseLeave
4864
4909
  }
4865
4910
  ]), ref: nodeRef, style: {
4866
4911
  zIndex: internals.z,
4867
- transform: `translate(${clampedPosition.x}px,${clampedPosition.y}px)`,
4912
+ transform: `translate(${internals.positionAbsolute.x}px,${internals.positionAbsolute.y}px)`,
4868
4913
  pointerEvents: hasPointerEvents ? "all" : "none",
4869
4914
  visibility: hasDimensions ? "visible" : "hidden",
4870
4915
  ...node.style,
4871
4916
  ...inlineDimensions
4872
- }, "data-id": id2, "data-testid": `rf__node-${id2}`, onMouseEnter: onMouseEnterHandler, onMouseMove: onMouseMoveHandler, onMouseLeave: onMouseLeaveHandler, onContextMenu: onContextMenuHandler, onClick: onSelectNodeHandler, onDoubleClick: onDoubleClickHandler, onKeyDown: isFocusable ? onKeyDown : void 0, tabIndex: isFocusable ? 0 : void 0, role: isFocusable ? "button" : void 0, "aria-describedby": disableKeyboardA11y ? void 0 : `${ARIA_NODE_DESC_KEY}-${rfId}`, "aria-label": node.ariaLabel, children: jsx(Provider, { value: id2, children: jsx(NodeComponent, { id: id2, data: node.data, type: nodeType, positionAbsoluteX: clampedPosition.x, positionAbsoluteY: clampedPosition.y, selected: node.selected, selectable: isSelectable, draggable: isDraggable, deletable: node.deletable ?? !0, isConnectable, sourcePosition: node.sourcePosition, targetPosition: node.targetPosition, dragging, dragHandle: node.dragHandle, zIndex: internals.z, parentId: node.parentId, ...nodeDimensions }) }) });
4917
+ }, "data-id": id2, "data-testid": `rf__node-${id2}`, onMouseEnter: onMouseEnterHandler, onMouseMove: onMouseMoveHandler, onMouseLeave: onMouseLeaveHandler, onContextMenu: onContextMenuHandler, onClick: onSelectNodeHandler, onDoubleClick: onDoubleClickHandler, onKeyDown: isFocusable ? onKeyDown : void 0, tabIndex: isFocusable ? 0 : void 0, role: isFocusable ? "button" : void 0, "aria-describedby": disableKeyboardA11y ? void 0 : `${ARIA_NODE_DESC_KEY}-${rfId}`, "aria-label": node.ariaLabel, children: jsx(Provider, { value: id2, children: jsx(NodeComponent, { id: id2, data: node.data, type: nodeType, positionAbsoluteX: internals.positionAbsolute.x, positionAbsoluteY: internals.positionAbsolute.y, selected: node.selected, selectable: isSelectable, draggable: isDraggable, deletable: node.deletable ?? !0, isConnectable, sourcePosition: node.sourcePosition, targetPosition: node.targetPosition, dragging, dragHandle: node.dragHandle, zIndex: internals.z, parentId: node.parentId, ...nodeDimensions }) }) });
4873
4918
  }
4874
4919
  const selector$b = (s) => ({
4875
4920
  nodesDraggable: s.nodesDraggable,
@@ -5096,25 +5141,25 @@ const builtinEdgeTypes = {
5096
5141
  function EdgeAnchor({ position, centerX, centerY, radius = 10, onMouseDown, onMouseEnter, onMouseOut, type }) {
5097
5142
  return jsx("circle", { onMouseDown, onMouseEnter, onMouseOut, className: cc([EdgeUpdaterClassName, `${EdgeUpdaterClassName}-${type}`]), cx: shiftX(centerX, radius, position), cy: shiftY(centerY, radius, position), r: radius, stroke: "transparent", fill: "transparent" });
5098
5143
  }
5099
- function EdgeUpdateAnchors({ isReconnectable, reconnectRadius, edge, targetHandleId, sourceHandleId, sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition, onReconnect, onReconnectStart, onReconnectEnd, setReconnecting, setUpdateHover }) {
5100
- const store = useStoreApi(), handleEdgeUpdater = (event, isSourceHandle) => {
5144
+ function EdgeUpdateAnchors({ isReconnectable, reconnectRadius, edge, sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition, onReconnect, onReconnectStart, onReconnectEnd, setReconnecting, setUpdateHover }) {
5145
+ const store = useStoreApi(), handleEdgeUpdater = (event, oppositeHandle) => {
5101
5146
  if (event.button !== 0)
5102
5147
  return;
5103
- const { autoPanOnConnect, domNode, isValidConnection, connectionMode, connectionRadius, lib, onConnectStart, onConnectEnd, cancelConnection, nodeLookup, rfId: flowId, panBy: panBy2, updateConnection } = store.getState(), nodeId = isSourceHandle ? edge.target : edge.source, handleId = (isSourceHandle ? targetHandleId : sourceHandleId) || null, handleType = isSourceHandle ? "target" : "source", isTarget = isSourceHandle;
5104
- setReconnecting(!0), onReconnectStart?.(event, edge, handleType);
5148
+ const { autoPanOnConnect, domNode, isValidConnection, connectionMode, connectionRadius, lib, onConnectStart, onConnectEnd, cancelConnection, nodeLookup, rfId: flowId, panBy: panBy2, updateConnection } = store.getState(), isTarget = oppositeHandle.type === "target";
5149
+ setReconnecting(!0), onReconnectStart?.(event, edge, oppositeHandle.type);
5105
5150
  const _onReconnectEnd = (evt, connectionState) => {
5106
- setReconnecting(!1), onReconnectEnd?.(evt, edge, handleType, connectionState);
5151
+ setReconnecting(!1), onReconnectEnd?.(evt, edge, oppositeHandle.type, connectionState);
5107
5152
  }, onConnectEdge = (connection) => onReconnect?.(edge, connection);
5108
5153
  XYHandle.onPointerDown(event.nativeEvent, {
5109
5154
  autoPanOnConnect,
5110
5155
  connectionMode,
5111
5156
  connectionRadius,
5112
5157
  domNode,
5113
- handleId,
5114
- nodeId,
5158
+ handleId: oppositeHandle.id,
5159
+ nodeId: oppositeHandle.nodeId,
5115
5160
  nodeLookup,
5116
5161
  isTarget,
5117
- edgeUpdaterType: handleType,
5162
+ edgeUpdaterType: oppositeHandle.type,
5118
5163
  lib,
5119
5164
  flowId,
5120
5165
  cancelConnection,
@@ -5128,8 +5173,8 @@ function EdgeUpdateAnchors({ isReconnectable, reconnectRadius, edge, targetHandl
5128
5173
  getTransform: () => store.getState().transform,
5129
5174
  getFromHandle: () => store.getState().connection.fromHandle
5130
5175
  });
5131
- }, onReconnectSourceMouseDown = (event) => handleEdgeUpdater(event, !0), onReconnectTargetMouseDown = (event) => handleEdgeUpdater(event, !1), onReconnectMouseEnter = () => setUpdateHover(!0), onReconnectMouseOut = () => setUpdateHover(!1);
5132
- return jsxs(Fragment, { children: [(isReconnectable === "source" || isReconnectable === !0) && jsx(EdgeAnchor, { position: sourcePosition, centerX: sourceX, centerY: sourceY, radius: reconnectRadius, onMouseDown: onReconnectSourceMouseDown, onMouseEnter: onReconnectMouseEnter, onMouseOut: onReconnectMouseOut, type: "source" }), (isReconnectable === "target" || isReconnectable === !0) && jsx(EdgeAnchor, { position: targetPosition, centerX: targetX, centerY: targetY, radius: reconnectRadius, onMouseDown: onReconnectTargetMouseDown, onMouseEnter: onReconnectMouseEnter, onMouseOut: onReconnectMouseOut, type: "target" })] });
5176
+ }, onReconnectSourceMouseDown = (event) => handleEdgeUpdater(event, { nodeId: edge.target, id: edge.targetHandle ?? null, type: "target" }), onReconnectTargetMouseDown = (event) => handleEdgeUpdater(event, { nodeId: edge.source, id: edge.sourceHandle ?? null, type: "source" }), onReconnectMouseEnter = () => setUpdateHover(!0), onReconnectMouseOut = () => setUpdateHover(!1);
5177
+ return jsxs(Fragment, { children: [(isReconnectable === !0 || isReconnectable === "source") && jsx(EdgeAnchor, { position: sourcePosition, centerX: sourceX, centerY: sourceY, radius: reconnectRadius, onMouseDown: onReconnectSourceMouseDown, onMouseEnter: onReconnectMouseEnter, onMouseOut: onReconnectMouseOut, type: "source" }), (isReconnectable === !0 || isReconnectable === "target") && jsx(EdgeAnchor, { position: targetPosition, centerX: targetX, centerY: targetY, radius: reconnectRadius, onMouseDown: onReconnectTargetMouseDown, onMouseEnter: onReconnectMouseEnter, onMouseOut: onReconnectMouseOut, type: "target" })] });
5133
5178
  }
5134
5179
  function EdgeWrapper({ id: id2, edgesFocusable, edgesReconnectable, elementsSelectable, onClick, onDoubleClick, onContextMenu, onMouseEnter, onMouseMove, onMouseLeave, reconnectRadius, onReconnect, onReconnectStart, onReconnectEnd, rfId, edgeTypes, noPanClassName, onError, disableKeyboardA11y }) {
5135
5180
  let edge = useStore((s) => s.edgeLookup.get(id2));
@@ -5197,7 +5242,7 @@ function EdgeWrapper({ id: id2, edgesFocusable, edgesReconnectable, elementsSele
5197
5242
  updating: updateHover,
5198
5243
  selectable: isSelectable
5199
5244
  }
5200
- ]), onClick: onEdgeClick, onDoubleClick: onEdgeDoubleClick, onContextMenu: onEdgeContextMenu, onMouseEnter: onEdgeMouseEnter, onMouseMove: onEdgeMouseMove, onMouseLeave: onEdgeMouseLeave, onKeyDown: isFocusable ? onKeyDown : void 0, tabIndex: isFocusable ? 0 : void 0, role: isFocusable ? "button" : "img", "data-id": id2, "data-testid": `rf__edge-${id2}`, "aria-label": edge.ariaLabel === null ? void 0 : edge.ariaLabel || `Edge from ${edge.source} to ${edge.target}`, "aria-describedby": isFocusable ? `${ARIA_EDGE_DESC_KEY}-${rfId}` : void 0, ref: edgeRef, children: [!reconnecting && jsx(EdgeComponent, { id: id2, source: edge.source, target: edge.target, type: edge.type, selected: edge.selected, animated: edge.animated, selectable: isSelectable, deletable: edge.deletable ?? !0, label: edge.label, labelStyle: edge.labelStyle, labelShowBg: edge.labelShowBg, labelBgStyle: edge.labelBgStyle, labelBgPadding: edge.labelBgPadding, labelBgBorderRadius: edge.labelBgBorderRadius, sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition, data: edge.data, style: edge.style, sourceHandleId: edge.sourceHandle, targetHandleId: edge.targetHandle, markerStart: markerStartUrl, markerEnd: markerEndUrl, pathOptions: "pathOptions" in edge ? edge.pathOptions : void 0, interactionWidth: edge.interactionWidth }), isReconnectable && jsx(EdgeUpdateAnchors, { edge, isReconnectable, reconnectRadius, onReconnect, onReconnectStart, onReconnectEnd, sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition, setUpdateHover, setReconnecting, sourceHandleId: edge.sourceHandle, targetHandleId: edge.targetHandle })] }) });
5245
+ ]), onClick: onEdgeClick, onDoubleClick: onEdgeDoubleClick, onContextMenu: onEdgeContextMenu, onMouseEnter: onEdgeMouseEnter, onMouseMove: onEdgeMouseMove, onMouseLeave: onEdgeMouseLeave, onKeyDown: isFocusable ? onKeyDown : void 0, tabIndex: isFocusable ? 0 : void 0, role: isFocusable ? "button" : "img", "data-id": id2, "data-testid": `rf__edge-${id2}`, "aria-label": edge.ariaLabel === null ? void 0 : edge.ariaLabel || `Edge from ${edge.source} to ${edge.target}`, "aria-describedby": isFocusable ? `${ARIA_EDGE_DESC_KEY}-${rfId}` : void 0, ref: edgeRef, children: [!reconnecting && jsx(EdgeComponent, { id: id2, source: edge.source, target: edge.target, type: edge.type, selected: edge.selected, animated: edge.animated, selectable: isSelectable, deletable: edge.deletable ?? !0, label: edge.label, labelStyle: edge.labelStyle, labelShowBg: edge.labelShowBg, labelBgStyle: edge.labelBgStyle, labelBgPadding: edge.labelBgPadding, labelBgBorderRadius: edge.labelBgBorderRadius, sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition, data: edge.data, style: edge.style, sourceHandleId: edge.sourceHandle, targetHandleId: edge.targetHandle, markerStart: markerStartUrl, markerEnd: markerEndUrl, pathOptions: "pathOptions" in edge ? edge.pathOptions : void 0, interactionWidth: edge.interactionWidth }), isReconnectable && jsx(EdgeUpdateAnchors, { edge, isReconnectable, reconnectRadius, onReconnect, onReconnectStart, onReconnectEnd, sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition, setUpdateHover, setReconnecting })] }) });
5201
5246
  }
5202
5247
  const selector$a = (s) => ({
5203
5248
  width: s.width,
@@ -5302,10 +5347,11 @@ function GraphViewComponent({ nodeTypes, edgeTypes, onInit, onNodeClick, onEdgeC
5302
5347
  return useNodeOrEdgeTypesWarning(nodeTypes), useNodeOrEdgeTypesWarning(edgeTypes), useStylesLoadedWarning(), useOnInitHandler(onInit), useViewportSync(viewport), jsx(FlowRenderer, { onPaneClick, onPaneMouseEnter, onPaneMouseMove, onPaneMouseLeave, onPaneContextMenu, onPaneScroll, paneClickDistance, deleteKeyCode, selectionKeyCode, selectionOnDrag, selectionMode, onSelectionStart, onSelectionEnd, multiSelectionKeyCode, panActivationKeyCode, zoomActivationKeyCode, elementsSelectable, zoomOnScroll, zoomOnPinch, zoomOnDoubleClick, panOnScroll, panOnScrollSpeed, panOnScrollMode, panOnDrag, defaultViewport: defaultViewport2, translateExtent, minZoom, maxZoom, onSelectionContextMenu, preventScrolling, noDragClassName, noWheelClassName, noPanClassName, disableKeyboardA11y, onViewportChange, isControlledViewport: !!viewport, children: jsxs(Viewport, { children: [jsx(EdgeRenderer, { edgeTypes, onEdgeClick, onEdgeDoubleClick, onReconnect, onReconnectStart, onReconnectEnd, onlyRenderVisibleElements, onEdgeContextMenu, onEdgeMouseEnter, onEdgeMouseMove, onEdgeMouseLeave, reconnectRadius, defaultMarkerColor, noPanClassName, disableKeyboardA11y, rfId }), jsx(ConnectionLineWrapper, { style: connectionLineStyle, type: connectionLineType, component: connectionLineComponent, containerStyle: connectionLineContainerStyle }), jsx("div", { className: "react-flow__edgelabel-renderer" }), jsx(NodeRenderer, { nodeTypes, onNodeClick, onNodeDoubleClick, onNodeMouseEnter, onNodeMouseMove, onNodeMouseLeave, onNodeContextMenu, nodeClickDistance, onlyRenderVisibleElements, noPanClassName, noDragClassName, disableKeyboardA11y, nodeExtent, rfId }), jsx("div", { className: "react-flow__viewport-portal" })] }) });
5303
5348
  }
5304
5349
  GraphViewComponent.displayName = "GraphView";
5305
- const GraphView = memo(GraphViewComponent), getInitialState = ({ nodes, edges, defaultNodes, defaultEdges, width, height, fitView: fitView2, nodeOrigin } = {}) => {
5306
- const nodeLookup = /* @__PURE__ */ new Map(), parentLookup = /* @__PURE__ */ new Map(), connectionLookup = /* @__PURE__ */ new Map(), edgeLookup = /* @__PURE__ */ new Map(), storeEdges = defaultEdges ?? edges ?? [], storeNodes = defaultNodes ?? nodes ?? [], storeNodeOrigin = nodeOrigin ?? [0, 0];
5350
+ const GraphView = memo(GraphViewComponent), getInitialState = ({ nodes, edges, defaultNodes, defaultEdges, width, height, fitView: fitView2, nodeOrigin, nodeExtent } = {}) => {
5351
+ const nodeLookup = /* @__PURE__ */ new Map(), parentLookup = /* @__PURE__ */ new Map(), connectionLookup = /* @__PURE__ */ new Map(), edgeLookup = /* @__PURE__ */ new Map(), storeEdges = defaultEdges ?? edges ?? [], storeNodes = defaultNodes ?? nodes ?? [], storeNodeOrigin = nodeOrigin ?? [0, 0], storeNodeExtent = nodeExtent ?? infiniteExtent;
5307
5352
  updateConnectionLookup(connectionLookup, edgeLookup, storeEdges), adoptUserNodes(storeNodes, nodeLookup, parentLookup, {
5308
5353
  nodeOrigin: storeNodeOrigin,
5354
+ nodeExtent: storeNodeExtent,
5309
5355
  elevateNodesOnSelect: !1
5310
5356
  });
5311
5357
  let transform2 = [0, 0, 1];
@@ -5334,7 +5380,7 @@ const GraphView = memo(GraphViewComponent), getInitialState = ({ nodes, edges, d
5334
5380
  minZoom: 0.5,
5335
5381
  maxZoom: 2,
5336
5382
  translateExtent: infiniteExtent,
5337
- nodeExtent: infiniteExtent,
5383
+ nodeExtent: storeNodeExtent,
5338
5384
  nodesSelectionActive: !1,
5339
5385
  userSelectionActive: !1,
5340
5386
  userSelectionRect: null,
@@ -5373,11 +5419,16 @@ const GraphView = memo(GraphViewComponent), getInitialState = ({ nodes, edges, d
5373
5419
  lib: "react",
5374
5420
  debug: !1
5375
5421
  };
5376
- }, createStore = ({ nodes, edges, defaultNodes, defaultEdges, width, height, fitView: fitView$1, nodeOrigin }) => createWithEqualityFn((set2, get2) => ({
5377
- ...getInitialState({ nodes, edges, width, height, fitView: fitView$1, nodeOrigin, defaultNodes, defaultEdges }),
5422
+ }, createStore = ({ nodes, edges, defaultNodes, defaultEdges, width, height, fitView: fitView$1, nodeOrigin, nodeExtent }) => createWithEqualityFn((set2, get2) => ({
5423
+ ...getInitialState({ nodes, edges, width, height, fitView: fitView$1, nodeOrigin, nodeExtent, defaultNodes, defaultEdges }),
5378
5424
  setNodes: (nodes2) => {
5379
5425
  const { nodeLookup, parentLookup, nodeOrigin: nodeOrigin2, elevateNodesOnSelect } = get2();
5380
- adoptUserNodes(nodes2, nodeLookup, parentLookup, { nodeOrigin: nodeOrigin2, elevateNodesOnSelect, checkEquality: !0 }), set2({ nodes: nodes2 });
5426
+ adoptUserNodes(nodes2, nodeLookup, parentLookup, {
5427
+ nodeOrigin: nodeOrigin2,
5428
+ nodeExtent,
5429
+ elevateNodesOnSelect,
5430
+ checkEquality: !0
5431
+ }), set2({ nodes: nodes2 });
5381
5432
  },
5382
5433
  setEdges: (edges2) => {
5383
5434
  const { connectionLookup, edgeLookup } = get2();
@@ -5397,9 +5448,9 @@ const GraphView = memo(GraphViewComponent), getInitialState = ({ nodes, edges, d
5397
5448
  // changes its dimensions, this function is called to measure the
5398
5449
  // new dimensions and update the nodes.
5399
5450
  updateNodeInternals: (updates, params = { triggerFitView: !0 }) => {
5400
- const { triggerNodeChanges, nodeLookup, parentLookup, fitViewOnInit, fitViewDone, fitViewOnInitOptions, domNode, nodeOrigin: nodeOrigin2, debug, fitViewSync } = get2(), { changes, updatedInternals } = updateNodeInternals(updates, nodeLookup, parentLookup, domNode, nodeOrigin2);
5451
+ const { triggerNodeChanges, nodeLookup, parentLookup, fitViewOnInit, fitViewDone, fitViewOnInitOptions, domNode, nodeOrigin: nodeOrigin2, nodeExtent: nodeExtent2, debug, fitViewSync } = get2(), { changes, updatedInternals } = updateNodeInternals(updates, nodeLookup, parentLookup, domNode, nodeOrigin2, nodeExtent2);
5401
5452
  if (updatedInternals) {
5402
- if (updateAbsolutePositions(nodeLookup, parentLookup, { nodeOrigin: nodeOrigin2 }), params.triggerFitView) {
5453
+ if (updateAbsolutePositions(nodeLookup, parentLookup, { nodeOrigin: nodeOrigin2, nodeExtent: nodeExtent2 }), params.triggerFitView) {
5403
5454
  let nextFitViewDone = fitViewDone;
5404
5455
  !fitViewDone && fitViewOnInit && (nextFitViewDone = fitViewSync({
5405
5456
  ...fitViewOnInitOptions,
@@ -5495,21 +5546,14 @@ const GraphView = memo(GraphViewComponent), getInitialState = ({ nodes, edges, d
5495
5546
  const { edges: edges2, nodes: nodes2, triggerNodeChanges, triggerEdgeChanges } = get2(), nodeChanges = nodes2.reduce((res, node) => node.selected ? [...res, createSelectionChange(node.id, !1)] : res, []), edgeChanges = edges2.reduce((res, edge) => edge.selected ? [...res, createSelectionChange(edge.id, !1)] : res, []);
5496
5547
  triggerNodeChanges(nodeChanges), triggerEdgeChanges(edgeChanges);
5497
5548
  },
5498
- setNodeExtent: (nodeExtent) => {
5499
- const { nodeLookup } = get2();
5500
- for (const [, node] of nodeLookup) {
5501
- const positionAbsolute = clampPosition(node.internals.positionAbsolute, nodeExtent);
5502
- nodeLookup.set(node.id, {
5503
- ...node,
5504
- internals: {
5505
- ...node.internals,
5506
- positionAbsolute
5507
- }
5508
- });
5509
- }
5510
- set2({
5511
- nodeExtent
5512
- });
5549
+ setNodeExtent: (nextNodeExtent) => {
5550
+ const { nodes: nodes2, nodeLookup, parentLookup, nodeOrigin: nodeOrigin2, elevateNodesOnSelect, nodeExtent: nodeExtent2 } = get2();
5551
+ nextNodeExtent[0][0] === nodeExtent2[0][0] && nextNodeExtent[0][1] === nodeExtent2[0][1] && nextNodeExtent[1][0] === nodeExtent2[1][0] && nextNodeExtent[1][1] === nodeExtent2[1][1] || (adoptUserNodes(nodes2, nodeLookup, parentLookup, {
5552
+ nodeOrigin: nodeOrigin2,
5553
+ nodeExtent: nextNodeExtent,
5554
+ elevateNodesOnSelect,
5555
+ checkEquality: !1
5556
+ }), set2({ nodeExtent: nextNodeExtent }));
5513
5557
  },
5514
5558
  panBy: (delta) => {
5515
5559
  const { transform: transform2, width: width2, height: height2, panZoom, translateExtent } = get2();
@@ -5555,7 +5599,7 @@ const GraphView = memo(GraphViewComponent), getInitialState = ({ nodes, edges, d
5555
5599
  },
5556
5600
  reset: () => set2({ ...getInitialState() })
5557
5601
  }), Object.is);
5558
- function ReactFlowProvider({ initialNodes: nodes, initialEdges: edges, defaultNodes, defaultEdges, initialWidth: width, initialHeight: height, fitView: fitView2, nodeOrigin, children: children2 }) {
5602
+ function ReactFlowProvider({ initialNodes: nodes, initialEdges: edges, defaultNodes, defaultEdges, initialWidth: width, initialHeight: height, fitView: fitView2, nodeOrigin, nodeExtent, children: children2 }) {
5559
5603
  const [store] = useState(() => createStore({
5560
5604
  nodes,
5561
5605
  edges,
@@ -5564,12 +5608,13 @@ function ReactFlowProvider({ initialNodes: nodes, initialEdges: edges, defaultNo
5564
5608
  width,
5565
5609
  height,
5566
5610
  fitView: fitView2,
5567
- nodeOrigin
5611
+ nodeOrigin,
5612
+ nodeExtent
5568
5613
  }));
5569
5614
  return jsx(Provider$1, { value: store, children: jsx(BatchProvider, { children: children2 }) });
5570
5615
  }
5571
- function Wrapper({ children: children2, nodes, edges, defaultNodes, defaultEdges, width, height, fitView: fitView2, nodeOrigin }) {
5572
- return useContext(StoreContext) ? jsx(Fragment, { children: children2 }) : jsx(ReactFlowProvider, { initialNodes: nodes, initialEdges: edges, defaultNodes, defaultEdges, initialWidth: width, initialHeight: height, fitView: fitView2, nodeOrigin, children: children2 });
5616
+ function Wrapper({ children: children2, nodes, edges, defaultNodes, defaultEdges, width, height, fitView: fitView2, nodeOrigin, nodeExtent }) {
5617
+ return useContext(StoreContext) ? jsx(Fragment, { children: children2 }) : jsx(ReactFlowProvider, { initialNodes: nodes, initialEdges: edges, defaultNodes, defaultEdges, initialWidth: width, initialHeight: height, fitView: fitView2, nodeOrigin, nodeExtent, children: children2 });
5573
5618
  }
5574
5619
  const wrapperStyle = {
5575
5620
  width: "100%",
@@ -5580,7 +5625,7 @@ const wrapperStyle = {
5580
5625
  };
5581
5626
  function ReactFlow({ nodes, edges, defaultNodes, defaultEdges, className, nodeTypes, edgeTypes, onNodeClick, onEdgeClick, onInit, onMove, onMoveStart, onMoveEnd, onConnect, onConnectStart, onConnectEnd, onClickConnectStart, onClickConnectEnd, onNodeMouseEnter, onNodeMouseMove, onNodeMouseLeave, onNodeContextMenu, onNodeDoubleClick, onNodeDragStart, onNodeDrag, onNodeDragStop, onNodesDelete, onEdgesDelete, onDelete, onSelectionChange, onSelectionDragStart, onSelectionDrag, onSelectionDragStop, onSelectionContextMenu, onSelectionStart, onSelectionEnd, onBeforeDelete, connectionMode, connectionLineType = ConnectionLineType.Bezier, connectionLineStyle, connectionLineComponent, connectionLineContainerStyle, deleteKeyCode = "Backspace", selectionKeyCode = "Shift", selectionOnDrag = !1, selectionMode = SelectionMode.Full, panActivationKeyCode = "Space", multiSelectionKeyCode = isMacOs() ? "Meta" : "Control", zoomActivationKeyCode = isMacOs() ? "Meta" : "Control", snapToGrid, snapGrid, onlyRenderVisibleElements = !1, selectNodesOnDrag, nodesDraggable, nodesConnectable, nodesFocusable, nodeOrigin = defaultNodeOrigin, edgesFocusable, edgesReconnectable, elementsSelectable = !0, defaultViewport: defaultViewport$1 = defaultViewport, minZoom = 0.5, maxZoom = 2, translateExtent = infiniteExtent, preventScrolling = !0, nodeExtent, defaultMarkerColor = "#b1b1b7", zoomOnScroll = !0, zoomOnPinch = !0, panOnScroll = !1, panOnScrollSpeed = 0.5, panOnScrollMode = PanOnScrollMode.Free, zoomOnDoubleClick = !0, panOnDrag = !0, onPaneClick, onPaneMouseEnter, onPaneMouseMove, onPaneMouseLeave, onPaneScroll, onPaneContextMenu, paneClickDistance = 0, nodeClickDistance = 0, children: children2, onReconnect, onReconnectStart, onReconnectEnd, onEdgeContextMenu, onEdgeDoubleClick, onEdgeMouseEnter, onEdgeMouseMove, onEdgeMouseLeave, reconnectRadius = 10, onNodesChange, onEdgesChange, noDragClassName = "nodrag", noWheelClassName = "nowheel", noPanClassName = "nopan", fitView: fitView2, fitViewOptions, connectOnClick, attributionPosition, proOptions, defaultEdgeOptions, elevateNodesOnSelect, elevateEdgesOnSelect, disableKeyboardA11y = !1, autoPanOnConnect, autoPanOnNodeDrag, autoPanSpeed, connectionRadius, isValidConnection, onError, style: style2, id: id2, nodeDragThreshold, viewport, onViewportChange, width, height, colorMode = "light", debug, ...rest }, ref) {
5582
5627
  const rfId = id2 || "1", colorModeClassName = useColorModeClass(colorMode);
5583
- return jsx("div", { ...rest, style: { ...style2, ...wrapperStyle }, ref, className: cc(["react-flow", className, colorModeClassName]), "data-testid": "rf__wrapper", id: id2, children: jsxs(Wrapper, { nodes, edges, width, height, fitView: fitView2, nodeOrigin, children: [jsx(GraphView, { onInit, onNodeClick, onEdgeClick, onNodeMouseEnter, onNodeMouseMove, onNodeMouseLeave, onNodeContextMenu, onNodeDoubleClick, nodeTypes, edgeTypes, connectionLineType, connectionLineStyle, connectionLineComponent, connectionLineContainerStyle, selectionKeyCode, selectionOnDrag, selectionMode, deleteKeyCode, multiSelectionKeyCode, panActivationKeyCode, zoomActivationKeyCode, onlyRenderVisibleElements, defaultViewport: defaultViewport$1, translateExtent, minZoom, maxZoom, preventScrolling, zoomOnScroll, zoomOnPinch, zoomOnDoubleClick, panOnScroll, panOnScrollSpeed, panOnScrollMode, panOnDrag, onPaneClick, onPaneMouseEnter, onPaneMouseMove, onPaneMouseLeave, onPaneScroll, onPaneContextMenu, paneClickDistance, nodeClickDistance, onSelectionContextMenu, onSelectionStart, onSelectionEnd, onReconnect, onReconnectStart, onReconnectEnd, onEdgeContextMenu, onEdgeDoubleClick, onEdgeMouseEnter, onEdgeMouseMove, onEdgeMouseLeave, reconnectRadius, defaultMarkerColor, noDragClassName, noWheelClassName, noPanClassName, rfId, disableKeyboardA11y, nodeExtent, viewport, onViewportChange }), jsx(StoreUpdater, { nodes, edges, defaultNodes, defaultEdges, onConnect, onConnectStart, onConnectEnd, onClickConnectStart, onClickConnectEnd, nodesDraggable, nodesConnectable, nodesFocusable, edgesFocusable, edgesReconnectable, elementsSelectable, elevateNodesOnSelect, elevateEdgesOnSelect, minZoom, maxZoom, nodeExtent, onNodesChange, onEdgesChange, snapToGrid, snapGrid, connectionMode, translateExtent, connectOnClick, defaultEdgeOptions, fitView: fitView2, fitViewOptions, onNodesDelete, onEdgesDelete, onDelete, onNodeDragStart, onNodeDrag, onNodeDragStop, onSelectionDrag, onSelectionDragStart, onSelectionDragStop, onMove, onMoveStart, onMoveEnd, noPanClassName, nodeOrigin, rfId, autoPanOnConnect, autoPanOnNodeDrag, autoPanSpeed, onError, connectionRadius, isValidConnection, selectNodesOnDrag, nodeDragThreshold, onBeforeDelete, paneClickDistance, debug }), jsx(SelectionListener, { onSelectionChange }), children2, jsx(Attribution, { proOptions, position: attributionPosition }), jsx(A11yDescriptions, { rfId, disableKeyboardA11y })] }) });
5628
+ return jsx("div", { ...rest, style: { ...style2, ...wrapperStyle }, ref, className: cc(["react-flow", className, colorModeClassName]), "data-testid": "rf__wrapper", id: id2, children: jsxs(Wrapper, { nodes, edges, width, height, fitView: fitView2, nodeOrigin, nodeExtent, children: [jsx(GraphView, { onInit, onNodeClick, onEdgeClick, onNodeMouseEnter, onNodeMouseMove, onNodeMouseLeave, onNodeContextMenu, onNodeDoubleClick, nodeTypes, edgeTypes, connectionLineType, connectionLineStyle, connectionLineComponent, connectionLineContainerStyle, selectionKeyCode, selectionOnDrag, selectionMode, deleteKeyCode, multiSelectionKeyCode, panActivationKeyCode, zoomActivationKeyCode, onlyRenderVisibleElements, defaultViewport: defaultViewport$1, translateExtent, minZoom, maxZoom, preventScrolling, zoomOnScroll, zoomOnPinch, zoomOnDoubleClick, panOnScroll, panOnScrollSpeed, panOnScrollMode, panOnDrag, onPaneClick, onPaneMouseEnter, onPaneMouseMove, onPaneMouseLeave, onPaneScroll, onPaneContextMenu, paneClickDistance, nodeClickDistance, onSelectionContextMenu, onSelectionStart, onSelectionEnd, onReconnect, onReconnectStart, onReconnectEnd, onEdgeContextMenu, onEdgeDoubleClick, onEdgeMouseEnter, onEdgeMouseMove, onEdgeMouseLeave, reconnectRadius, defaultMarkerColor, noDragClassName, noWheelClassName, noPanClassName, rfId, disableKeyboardA11y, nodeExtent, viewport, onViewportChange }), jsx(StoreUpdater, { nodes, edges, defaultNodes, defaultEdges, onConnect, onConnectStart, onConnectEnd, onClickConnectStart, onClickConnectEnd, nodesDraggable, nodesConnectable, nodesFocusable, edgesFocusable, edgesReconnectable, elementsSelectable, elevateNodesOnSelect, elevateEdgesOnSelect, minZoom, maxZoom, nodeExtent, onNodesChange, onEdgesChange, snapToGrid, snapGrid, connectionMode, translateExtent, connectOnClick, defaultEdgeOptions, fitView: fitView2, fitViewOptions, onNodesDelete, onEdgesDelete, onDelete, onNodeDragStart, onNodeDrag, onNodeDragStop, onSelectionDrag, onSelectionDragStart, onSelectionDragStop, onMove, onMoveStart, onMoveEnd, noPanClassName, nodeOrigin, rfId, autoPanOnConnect, autoPanOnNodeDrag, autoPanSpeed, onError, connectionRadius, isValidConnection, selectNodesOnDrag, nodeDragThreshold, onBeforeDelete, paneClickDistance, debug }), jsx(SelectionListener, { onSelectionChange }), children2, jsx(Attribution, { proOptions, position: attributionPosition }), jsx(A11yDescriptions, { rfId, disableKeyboardA11y })] }) });
5584
5629
  }
5585
5630
  var index = fixedForwardRef(ReactFlow);
5586
5631
  const selector$6 = (s) => s.domNode?.querySelector(".react-flow__edgelabel-renderer");
@@ -5660,7 +5705,10 @@ function BackgroundComponent({
5660
5705
  className,
5661
5706
  patternClassName
5662
5707
  }) {
5663
- const ref = useRef(null), { transform: transform2, patternId } = useStore(selector$3, shallow$1), patternSize = size || defaultSize[variant], isDots = variant === BackgroundVariant.Dots, isCross = variant === BackgroundVariant.Cross, gapXY = Array.isArray(gap) ? gap : [gap, gap], scaledGap = [gapXY[0] * transform2[2] || 1, gapXY[1] * transform2[2] || 1], scaledSize = patternSize * transform2[2], offsetXY = Array.isArray(offset) ? offset : [offset, offset], scaledOffset = [offsetXY[0] * transform2[2] || 1, offsetXY[1] * transform2[2] || 1], patternDimensions = isCross ? [scaledSize, scaledSize] : scaledGap, _patternId = `${patternId}${id2 || ""}`;
5708
+ const ref = useRef(null), { transform: transform2, patternId } = useStore(selector$3, shallow$1), patternSize = size || defaultSize[variant], isDots = variant === BackgroundVariant.Dots, isCross = variant === BackgroundVariant.Cross, gapXY = Array.isArray(gap) ? gap : [gap, gap], scaledGap = [gapXY[0] * transform2[2] || 1, gapXY[1] * transform2[2] || 1], scaledSize = patternSize * transform2[2], offsetXY = Array.isArray(offset) ? offset : [offset, offset], patternDimensions = isCross ? [scaledSize, scaledSize] : scaledGap, scaledOffset = [
5709
+ offsetXY[0] * transform2[2] || 1 + patternDimensions[0] / 2,
5710
+ offsetXY[1] * transform2[2] || 1 + patternDimensions[1] / 2
5711
+ ], _patternId = `${patternId}${id2 || ""}`;
5664
5712
  return jsxs("svg", { className: cc(["react-flow__background", className]), style: {
5665
5713
  ...style2,
5666
5714
  ...containerStyle,
@@ -5742,18 +5790,17 @@ function MiniMapNodes({
5742
5790
  )) });
5743
5791
  }
5744
5792
  function NodeComponentWrapperInner({ id: id2, nodeColorFunc, nodeStrokeColorFunc, nodeClassNameFunc, nodeBorderRadius, nodeStrokeWidth, shapeRendering, NodeComponent, onClick }) {
5745
- const { node, x, y } = useStore((s) => {
5746
- const node2 = s.nodeLookup.get(id2), { x: x2, y: y2 } = node2.internals.positionAbsolute;
5793
+ const { node, x, y, width, height } = useStore((s) => {
5794
+ const node2 = s.nodeLookup.get(id2), { x: x2, y: y2 } = node2.internals.positionAbsolute, { width: width2, height: height2 } = getNodeDimensions(node2);
5747
5795
  return {
5748
5796
  node: node2,
5749
5797
  x: x2,
5750
- y: y2
5798
+ y: y2,
5799
+ width: width2,
5800
+ height: height2
5751
5801
  };
5752
5802
  }, shallow$1);
5753
- if (!node || node.hidden || !nodeHasDimensions(node))
5754
- return null;
5755
- const { width, height } = getNodeDimensions(node);
5756
- return jsx(NodeComponent, { x, y, width, height, style: node.style, selected: !!node.selected, className: nodeClassNameFunc(node), color: nodeColorFunc(node), borderRadius: nodeBorderRadius, strokeColor: nodeStrokeColorFunc(node), strokeWidth: nodeStrokeWidth, shapeRendering, onClick, id: node.id });
5803
+ return !node || node.hidden || !nodeHasDimensions(node) ? null : jsx(NodeComponent, { x, y, width, height, style: node.style, selected: !!node.selected, className: nodeClassNameFunc(node), color: nodeColorFunc(node), borderRadius: nodeBorderRadius, strokeColor: nodeStrokeColorFunc(node), strokeWidth: nodeStrokeWidth, shapeRendering, onClick, id: node.id });
5757
5804
  }
5758
5805
  const NodeComponentWrapper = memo(NodeComponentWrapperInner);
5759
5806
  var MiniMapNodes$1 = memo(MiniMapNodes);