likec4 1.27.3 → 1.28.1

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 (1550) hide show
  1. package/__app__/src/main.js +996 -1021
  2. package/__app__/src/style.css +1 -1
  3. package/dist/cli/index.mjs +690 -676
  4. package/dist/index.d.mts +1 -1
  5. package/dist/index.mjs +1 -1
  6. package/dist/shared/{likec4.sbYSTpRI.mjs → likec4.CYGgfB-B.mjs} +1 -1
  7. package/dist/shared/likec4.DRjStDbg.mjs +2209 -0
  8. package/dist/shared/{likec4.QmEWuoHf.d.mts → likec4.DwrogUe0.d.mts} +22 -22
  9. package/dist/vite-plugin/index.d.mts +1 -1
  10. package/dist/vite-plugin/index.mjs +1 -1
  11. package/icons/aws/activate.js +21 -1
  12. package/icons/aws/alexa-for-business.js +21 -1
  13. package/icons/aws/amplify.js +21 -1
  14. package/icons/aws/apache-mxnet-on-aws.js +21 -1
  15. package/icons/aws/api-gateway.js +21 -1
  16. package/icons/aws/app-config.js +21 -1
  17. package/icons/aws/app-flow.js +21 -1
  18. package/icons/aws/app-mesh.js +21 -1
  19. package/icons/aws/app-runner.js +21 -1
  20. package/icons/aws/app-stream.js +21 -1
  21. package/icons/aws/app-sync.js +21 -1
  22. package/icons/aws/application-auto-scaling.js +21 -1
  23. package/icons/aws/application-composer.js +21 -1
  24. package/icons/aws/application-cost-profiler.js +21 -1
  25. package/icons/aws/application-discovery-service.js +21 -1
  26. package/icons/aws/application-migration-service.js +21 -1
  27. package/icons/aws/artifact.js +21 -1
  28. package/icons/aws/athena.js +21 -1
  29. package/icons/aws/audit-manager.js +21 -1
  30. package/icons/aws/augmented-ai-a2i.js +21 -1
  31. package/icons/aws/aurora.js +21 -1
  32. package/icons/aws/auto-scaling.js +21 -1
  33. package/icons/aws/backint-agent.js +21 -1
  34. package/icons/aws/backup.js +21 -1
  35. package/icons/aws/batch.js +21 -1
  36. package/icons/aws/billing-conductor.js +21 -1
  37. package/icons/aws/bottlerocket.js +21 -1
  38. package/icons/aws/braket.js +21 -1
  39. package/icons/aws/budgets.js +21 -1
  40. package/icons/aws/certificate-manager.js +21 -1
  41. package/icons/aws/chatbot.js +21 -1
  42. package/icons/aws/chime-sdk.js +21 -1
  43. package/icons/aws/chime-voice-connector.js +21 -1
  44. package/icons/aws/chime.js +21 -1
  45. package/icons/aws/clean-rooms.js +21 -1
  46. package/icons/aws/client-vpn.js +21 -1
  47. package/icons/aws/cloud-control-api.js +21 -1
  48. package/icons/aws/cloud-development-kit.js +21 -1
  49. package/icons/aws/cloud-directory.js +21 -1
  50. package/icons/aws/cloud-formation.js +21 -1
  51. package/icons/aws/cloud-front.js +21 -1
  52. package/icons/aws/cloud-hsm.js +21 -1
  53. package/icons/aws/cloud-map.js +21 -1
  54. package/icons/aws/cloud-search.js +21 -1
  55. package/icons/aws/cloud-shell.js +21 -1
  56. package/icons/aws/cloud-trail.js +21 -1
  57. package/icons/aws/cloud-wan.js +21 -1
  58. package/icons/aws/cloud-watch.js +21 -1
  59. package/icons/aws/cloud9.js +21 -1
  60. package/icons/aws/code-artifact.js +21 -1
  61. package/icons/aws/code-build.js +21 -1
  62. package/icons/aws/code-catalyst.js +21 -1
  63. package/icons/aws/code-commit.js +21 -1
  64. package/icons/aws/code-deploy.js +21 -1
  65. package/icons/aws/code-guru.js +21 -1
  66. package/icons/aws/code-pipeline.js +21 -1
  67. package/icons/aws/code-star.js +21 -1
  68. package/icons/aws/code-whisperer.js +21 -1
  69. package/icons/aws/cognito.js +21 -1
  70. package/icons/aws/command-line-interface.js +21 -1
  71. package/icons/aws/comprehend-medical.js +21 -1
  72. package/icons/aws/comprehend.js +21 -1
  73. package/icons/aws/compute-optimizer.js +21 -1
  74. package/icons/aws/config.js +21 -1
  75. package/icons/aws/connect.js +21 -1
  76. package/icons/aws/console-mobile-application.js +21 -1
  77. package/icons/aws/control-tower.js +21 -1
  78. package/icons/aws/corretto.js +21 -1
  79. package/icons/aws/cost-and-usage-report.js +21 -1
  80. package/icons/aws/cost-explorer.js +21 -1
  81. package/icons/aws/data-exchange.js +21 -1
  82. package/icons/aws/data-pipeline.js +21 -1
  83. package/icons/aws/data-sync.js +21 -1
  84. package/icons/aws/data-zone.js +21 -1
  85. package/icons/aws/database-migration-service.js +21 -1
  86. package/icons/aws/deep-composer.js +21 -1
  87. package/icons/aws/deep-learning-amis.js +21 -1
  88. package/icons/aws/deep-learning-containers.js +21 -1
  89. package/icons/aws/deep-lens.js +21 -1
  90. package/icons/aws/deep-racer.js +21 -1
  91. package/icons/aws/detective.js +21 -1
  92. package/icons/aws/dev-ops-guru.js +21 -1
  93. package/icons/aws/device-farm.js +21 -1
  94. package/icons/aws/direct-connect.js +21 -1
  95. package/icons/aws/directory-service.js +21 -1
  96. package/icons/aws/distro-for-open-telemetry.js +21 -1
  97. package/icons/aws/document-db.js +21 -1
  98. package/icons/aws/dynamo-db.js +21 -1
  99. package/icons/aws/ec2-auto-scaling.js +21 -1
  100. package/icons/aws/ec2-image-builder.js +21 -1
  101. package/icons/aws/ec2.js +21 -1
  102. package/icons/aws/ecs-anywhere.js +21 -1
  103. package/icons/aws/efs.js +21 -1
  104. package/icons/aws/eks-anywhere.js +21 -1
  105. package/icons/aws/eks-cloud.js +21 -1
  106. package/icons/aws/eks-distro.js +21 -1
  107. package/icons/aws/elasti-cache.js +21 -1
  108. package/icons/aws/elastic-beanstalk.js +21 -1
  109. package/icons/aws/elastic-block-store.js +21 -1
  110. package/icons/aws/elastic-container-registry.js +21 -1
  111. package/icons/aws/elastic-container-service.js +21 -1
  112. package/icons/aws/elastic-disaster-recovery.js +21 -1
  113. package/icons/aws/elastic-fabric-adapter.js +21 -1
  114. package/icons/aws/elastic-inference.js +21 -1
  115. package/icons/aws/elastic-kubernetes-service.js +21 -1
  116. package/icons/aws/elastic-load-balancing.js +21 -1
  117. package/icons/aws/elastic-transcoder.js +21 -1
  118. package/icons/aws/elemental-appliances-software.js +21 -1
  119. package/icons/aws/elemental-conductor.js +21 -1
  120. package/icons/aws/elemental-delta.js +21 -1
  121. package/icons/aws/elemental-link.js +21 -1
  122. package/icons/aws/elemental-live.js +21 -1
  123. package/icons/aws/elemental-media-connect.js +21 -1
  124. package/icons/aws/elemental-media-convert.js +21 -1
  125. package/icons/aws/elemental-media-live.js +21 -1
  126. package/icons/aws/elemental-media-package.js +21 -1
  127. package/icons/aws/elemental-media-store.js +21 -1
  128. package/icons/aws/elemental-media-tailor.js +21 -1
  129. package/icons/aws/elemental-server.js +21 -1
  130. package/icons/aws/emr.js +21 -1
  131. package/icons/aws/event-bridge.js +21 -1
  132. package/icons/aws/express-workflows.js +21 -1
  133. package/icons/aws/fargate.js +21 -1
  134. package/icons/aws/fault-injection-simulator.js +21 -1
  135. package/icons/aws/file-cache.js +21 -1
  136. package/icons/aws/fin-space.js +21 -1
  137. package/icons/aws/firewall-manager.js +21 -1
  138. package/icons/aws/forecast.js +21 -1
  139. package/icons/aws/fraud-detector.js +21 -1
  140. package/icons/aws/free-rtos.js +21 -1
  141. package/icons/aws/fsx-for-lustre.js +21 -1
  142. package/icons/aws/fsx-for-net-app-ontap.js +21 -1
  143. package/icons/aws/fsx-for-open-zfs.js +21 -1
  144. package/icons/aws/fsx-for-wfs.js +21 -1
  145. package/icons/aws/fsx.js +21 -1
  146. package/icons/aws/game-kit.js +21 -1
  147. package/icons/aws/game-lift.js +21 -1
  148. package/icons/aws/game-sparks.js +21 -1
  149. package/icons/aws/genomics-cli.js +21 -1
  150. package/icons/aws/global-accelerator.js +21 -1
  151. package/icons/aws/glue-data-brew.js +21 -1
  152. package/icons/aws/glue-elastic-views.js +21 -1
  153. package/icons/aws/glue.js +21 -1
  154. package/icons/aws/ground-station.js +21 -1
  155. package/icons/aws/guard-duty.js +21 -1
  156. package/icons/aws/health-lake.js +21 -1
  157. package/icons/aws/honeycode.js +21 -1
  158. package/icons/aws/iam-identity-center.js +21 -1
  159. package/icons/aws/identity-and-access-management.js +21 -1
  160. package/icons/aws/inspector.js +21 -1
  161. package/icons/aws/interactive-video-service.js +21 -1
  162. package/icons/aws/io-t-1-click.js +21 -1
  163. package/icons/aws/io-t-analytics.js +21 -1
  164. package/icons/aws/io-t-button.js +21 -1
  165. package/icons/aws/io-t-core.js +21 -1
  166. package/icons/aws/io-t-device-defender.js +21 -1
  167. package/icons/aws/io-t-device-management.js +21 -1
  168. package/icons/aws/io-t-edu-kit.js +21 -1
  169. package/icons/aws/io-t-events.js +21 -1
  170. package/icons/aws/io-t-express-link.js +21 -1
  171. package/icons/aws/io-t-fleet-wise.js +21 -1
  172. package/icons/aws/io-t-greengrass.js +21 -1
  173. package/icons/aws/io-t-robo-runner.js +21 -1
  174. package/icons/aws/io-t-site-wise.js +21 -1
  175. package/icons/aws/io-t-things-graph.js +21 -1
  176. package/icons/aws/io-t-twin-maker.js +37 -1
  177. package/icons/aws/iq.js +21 -1
  178. package/icons/aws/kendra.js +21 -1
  179. package/icons/aws/key-management-service.js +21 -1
  180. package/icons/aws/keyspaces.js +21 -1
  181. package/icons/aws/kinesis-data-analytics.js +21 -1
  182. package/icons/aws/kinesis-data-streams.js +21 -1
  183. package/icons/aws/kinesis-firehose.js +21 -1
  184. package/icons/aws/kinesis-video-streams.js +21 -1
  185. package/icons/aws/kinesis.js +21 -1
  186. package/icons/aws/lake-formation.js +21 -1
  187. package/icons/aws/lambda.js +21 -1
  188. package/icons/aws/launch-wizard.js +21 -1
  189. package/icons/aws/lex.js +21 -1
  190. package/icons/aws/license-manager.js +21 -1
  191. package/icons/aws/lightsail.js +21 -1
  192. package/icons/aws/local-zones.js +21 -1
  193. package/icons/aws/location-service.js +21 -1
  194. package/icons/aws/lookout-for-equipment.js +21 -1
  195. package/icons/aws/lookout-for-metrics.js +21 -1
  196. package/icons/aws/lookout-for-vision.js +21 -1
  197. package/icons/aws/lumberyard.js +21 -1
  198. package/icons/aws/macie.js +21 -1
  199. package/icons/aws/mainframe-modernization.js +21 -1
  200. package/icons/aws/managed-blockchain.js +21 -1
  201. package/icons/aws/managed-grafana.js +21 -1
  202. package/icons/aws/managed-service-for-prometheus.js +21 -1
  203. package/icons/aws/managed-services.js +21 -1
  204. package/icons/aws/managed-streaming-for-apache-kafka.js +21 -1
  205. package/icons/aws/managed-workflows-for-apache-airflow.js +21 -1
  206. package/icons/aws/management-console.js +21 -1
  207. package/icons/aws/marketplace-dark.js +15 -1
  208. package/icons/aws/marketplace-light.js +15 -1
  209. package/icons/aws/memory-db-for-redis.js +21 -1
  210. package/icons/aws/migration-evaluator.js +21 -1
  211. package/icons/aws/migration-hub.js +21 -1
  212. package/icons/aws/monitron.js +21 -1
  213. package/icons/aws/mq.js +21 -1
  214. package/icons/aws/neptune.js +21 -1
  215. package/icons/aws/network-firewall.js +21 -1
  216. package/icons/aws/neuron.js +21 -1
  217. package/icons/aws/nice-dcv.js +21 -1
  218. package/icons/aws/nice-engin-frame.js +21 -1
  219. package/icons/aws/nimble-studio.js +21 -1
  220. package/icons/aws/nitro-enclaves.js +21 -1
  221. package/icons/aws/omics.js +21 -1
  222. package/icons/aws/open-3d-engine.js +21 -1
  223. package/icons/aws/open-search-service.js +21 -1
  224. package/icons/aws/ops-works.js +21 -1
  225. package/icons/aws/organizations.js +21 -1
  226. package/icons/aws/outposts-family.js +21 -1
  227. package/icons/aws/outposts-rack.js +21 -1
  228. package/icons/aws/outposts-servers.js +21 -1
  229. package/icons/aws/panorama.js +21 -1
  230. package/icons/aws/parallel-cluster.js +21 -1
  231. package/icons/aws/personal-health-dashboard.js +21 -1
  232. package/icons/aws/personalize.js +21 -1
  233. package/icons/aws/pinpoint-apis.js +21 -1
  234. package/icons/aws/pinpoint.js +21 -1
  235. package/icons/aws/polly.js +21 -1
  236. package/icons/aws/private-5g.js +21 -1
  237. package/icons/aws/private-certificate-authority.js +28 -1
  238. package/icons/aws/private-link.js +21 -1
  239. package/icons/aws/professional-services.js +21 -1
  240. package/icons/aws/proton.js +21 -1
  241. package/icons/aws/quantum-ledger-database.js +21 -1
  242. package/icons/aws/quick-sight.js +21 -1
  243. package/icons/aws/rds-on-vmware.js +21 -1
  244. package/icons/aws/rds.js +21 -1
  245. package/icons/aws/re-post.js +21 -1
  246. package/icons/aws/red-hat-open-shift-service-on-aws.js +21 -1
  247. package/icons/aws/redshift.js +21 -1
  248. package/icons/aws/rekognition.js +21 -1
  249. package/icons/aws/reserved-instance-reporting.js +21 -1
  250. package/icons/aws/resilience-hub.js +21 -1
  251. package/icons/aws/resource-access-manager.js +21 -1
  252. package/icons/aws/resource-explorer.js +21 -1
  253. package/icons/aws/robo-maker.js +21 -1
  254. package/icons/aws/route-53.js +21 -1
  255. package/icons/aws/s3-on-outposts.js +21 -1
  256. package/icons/aws/sage-maker-ground-truth.js +21 -1
  257. package/icons/aws/sage-maker-studio-lab.js +21 -1
  258. package/icons/aws/sage-maker.js +21 -1
  259. package/icons/aws/savings-plans.js +21 -1
  260. package/icons/aws/secrets-manager.js +21 -1
  261. package/icons/aws/security-hub.js +21 -1
  262. package/icons/aws/security-lake.js +21 -1
  263. package/icons/aws/server-migration-service.js +21 -1
  264. package/icons/aws/serverless-application-repository.js +21 -1
  265. package/icons/aws/service-catalog.js +21 -1
  266. package/icons/aws/service-management-connector.js +28 -1
  267. package/icons/aws/shield.js +21 -1
  268. package/icons/aws/signer.js +21 -1
  269. package/icons/aws/sim-space-weaver.js +21 -1
  270. package/icons/aws/simple-email-service.js +21 -1
  271. package/icons/aws/simple-notification-service.js +21 -1
  272. package/icons/aws/simple-queue-service.js +21 -1
  273. package/icons/aws/simple-storage-service-glacier.js +21 -1
  274. package/icons/aws/simple-storage-service.js +21 -1
  275. package/icons/aws/site-to-site-vpn.js +21 -1
  276. package/icons/aws/snowball-edge.js +21 -1
  277. package/icons/aws/snowball.js +21 -1
  278. package/icons/aws/snowcone.js +21 -1
  279. package/icons/aws/snowmobile.js +21 -1
  280. package/icons/aws/step-functions.js +21 -1
  281. package/icons/aws/storage-gateway.js +21 -1
  282. package/icons/aws/sumerian.js +21 -1
  283. package/icons/aws/supply-chain.js +21 -1
  284. package/icons/aws/support.js +21 -1
  285. package/icons/aws/systems-manager.js +21 -1
  286. package/icons/aws/tensor-flow-on-aws.js +21 -1
  287. package/icons/aws/textract.js +21 -1
  288. package/icons/aws/thinkbox-deadline.js +21 -1
  289. package/icons/aws/thinkbox-frost.js +21 -1
  290. package/icons/aws/thinkbox-krakatoa.js +21 -1
  291. package/icons/aws/thinkbox-sequoia.js +21 -1
  292. package/icons/aws/thinkbox-stoke.js +21 -1
  293. package/icons/aws/thinkbox-xmesh.js +21 -1
  294. package/icons/aws/timestream.js +21 -1
  295. package/icons/aws/tools-and-sdks.js +21 -1
  296. package/icons/aws/torch-serve.js +21 -1
  297. package/icons/aws/training-certification.js +21 -1
  298. package/icons/aws/transcribe.js +21 -1
  299. package/icons/aws/transfer-family.js +21 -1
  300. package/icons/aws/transit-gateway.js +21 -1
  301. package/icons/aws/translate.js +21 -1
  302. package/icons/aws/trusted-advisor.js +21 -1
  303. package/icons/aws/verified-access.js +21 -1
  304. package/icons/aws/verified-permissions.js +21 -1
  305. package/icons/aws/virtual-private-cloud.js +21 -1
  306. package/icons/aws/vmware-cloud-on-aws.js +21 -1
  307. package/icons/aws/vpc-lattice.js +21 -1
  308. package/icons/aws/waf.js +21 -1
  309. package/icons/aws/wavelength.js +21 -1
  310. package/icons/aws/well-architected-tool.js +21 -1
  311. package/icons/aws/wickr.js +21 -1
  312. package/icons/aws/work-docs-sdk.js +21 -1
  313. package/icons/aws/work-docs.js +21 -1
  314. package/icons/aws/work-link.js +21 -1
  315. package/icons/aws/work-mail.js +21 -1
  316. package/icons/aws/work-spaces-family.js +21 -1
  317. package/icons/aws/x-ray.js +21 -1
  318. package/icons/azure/abs-member.js +32 -1
  319. package/icons/azure/active-directory-connect-health.js +132 -1
  320. package/icons/azure/activity-log.js +33 -1
  321. package/icons/azure/administrative-units.js +102 -1
  322. package/icons/azure/advisor.js +44 -1
  323. package/icons/azure/ai-studio.js +105 -1
  324. package/icons/azure/aks-automatic.js +105 -1
  325. package/icons/azure/aks-istio.js +96 -1
  326. package/icons/azure/alerts.js +29 -1
  327. package/icons/azure/all-resources.js +21 -1
  328. package/icons/azure/analysis-services.js +67 -1
  329. package/icons/azure/anomaly-detector.js +44 -1
  330. package/icons/azure/api-center.js +42 -1
  331. package/icons/azure/api-connections.js +66 -1
  332. package/icons/azure/api-management-services.js +51 -1
  333. package/icons/azure/api-proxy.js +32 -1
  334. package/icons/azure/app-compliance-automation.js +82 -1
  335. package/icons/azure/app-configuration.js +56 -1
  336. package/icons/azure/app-registrations.js +39 -1
  337. package/icons/azure/app-service-certificates.js +42 -1
  338. package/icons/azure/app-service-domains.js +23 -1
  339. package/icons/azure/app-service-environments.js +36 -1
  340. package/icons/azure/app-service-plans.js +66 -1
  341. package/icons/azure/app-services.js +104 -1
  342. package/icons/azure/app-space-component.js +39 -1
  343. package/icons/azure/app-space.js +37 -1
  344. package/icons/azure/applens.js +45 -1
  345. package/icons/azure/application-gateway-containers.js +134 -1
  346. package/icons/azure/application-gateways.js +92 -1
  347. package/icons/azure/application-group.js +21 -1
  348. package/icons/azure/application-insights.js +57 -1
  349. package/icons/azure/application-security-groups.js +54 -1
  350. package/icons/azure/aquila.js +95 -1
  351. package/icons/azure/arc-data-services.js +60 -1
  352. package/icons/azure/arc-kubernetes.js +139 -1
  353. package/icons/azure/arc-machines.js +40 -1
  354. package/icons/azure/arc-postgre-sql.js +73 -1
  355. package/icons/azure/arc-sql-managed-instance.js +75 -1
  356. package/icons/azure/arc-sql-server.js +40 -1
  357. package/icons/azure/atm-multistack.js +59 -1
  358. package/icons/azure/auto-scale.js +43 -1
  359. package/icons/azure/automanaged-vm.js +65 -1
  360. package/icons/azure/automation-accounts.js +62 -1
  361. package/icons/azure/availability-sets.js +70 -1
  362. package/icons/azure/avs-vm.js +32 -1
  363. package/icons/azure/azure-a.js +46 -1
  364. package/icons/azure/azure-ad-b2c.js +129 -1
  365. package/icons/azure/azure-api-for-fhir.js +33 -1
  366. package/icons/azure/azure-applied-ai-services.js +81 -1
  367. package/icons/azure/azure-arc.js +75 -1
  368. package/icons/azure/azure-attestation.js +35 -1
  369. package/icons/azure/azure-backup-center.js +63 -1
  370. package/icons/azure/azure-blockchain-service.js +51 -1
  371. package/icons/azure/azure-center-for-sap.js +37 -1
  372. package/icons/azure/azure-chaos-studio.js +75 -1
  373. package/icons/azure/azure-cloud-shell.js +39 -1
  374. package/icons/azure/azure-communication-services.js +63 -1
  375. package/icons/azure/azure-communications-gateway.js +43 -1
  376. package/icons/azure/azure-compute-galleries.js +35 -1
  377. package/icons/azure/azure-cosmos-db.js +47 -1
  378. package/icons/azure/azure-data-catalog.js +91 -1
  379. package/icons/azure/azure-data-explorer-clusters.js +126 -1
  380. package/icons/azure/azure-database-maria-db-server.js +56 -1
  381. package/icons/azure/azure-database-migration-services.js +83 -1
  382. package/icons/azure/azure-database-my-sql-server.js +56 -1
  383. package/icons/azure/azure-database-postgre-sql-server-group.js +65 -1
  384. package/icons/azure/azure-database-postgre-sql-server.js +57 -1
  385. package/icons/azure/azure-databox-gateway.js +39 -1
  386. package/icons/azure/azure-databricks.js +12 -1
  387. package/icons/azure/azure-deployment-environments.js +65 -1
  388. package/icons/azure/azure-dev-ops.js +21 -1
  389. package/icons/azure/azure-dev-tunnels.js +48 -1
  390. package/icons/azure/azure-edge-hardware-center.js +69 -1
  391. package/icons/azure/azure-experimentation-studio.js +88 -1
  392. package/icons/azure/azure-fileshares.js +46 -1
  393. package/icons/azure/azure-firewall-manager.js +60 -1
  394. package/icons/azure/azure-firewall-policy.js +37 -1
  395. package/icons/azure/azure-hcp-cache.js +23 -1
  396. package/icons/azure/azure-hpc-workbenches.js +112 -1
  397. package/icons/azure/azure-hybrid-center.js +33 -1
  398. package/icons/azure/azure-information-protection.js +95 -1
  399. package/icons/azure/azure-io-t-operations.js +57 -1
  400. package/icons/azure/azure-lighthouse.js +35 -1
  401. package/icons/azure/azure-load-testing.js +78 -1
  402. package/icons/azure/azure-managed-grafana.js +19 -1
  403. package/icons/azure/azure-maps-accounts.js +16 -1
  404. package/icons/azure/azure-media-service.js +107 -1
  405. package/icons/azure/azure-migrate.js +57 -1
  406. package/icons/azure/azure-monitor-dashboard.js +58 -1
  407. package/icons/azure/azure-monitor-pipeline.js +101 -1
  408. package/icons/azure/azure-monitors-for-sap-solutions.js +71 -1
  409. package/icons/azure/azure-net-app-files.js +36 -1
  410. package/icons/azure/azure-network-function-manager-functions.js +94 -1
  411. package/icons/azure/azure-network-function-manager.js +98 -1
  412. package/icons/azure/azure-object-understanding.js +50 -1
  413. package/icons/azure/azure-open-ai.js +29 -1
  414. package/icons/azure/azure-operator-5g-core.js +86 -1
  415. package/icons/azure/azure-operator-insights.js +42 -1
  416. package/icons/azure/azure-operator-nexus.js +87 -1
  417. package/icons/azure/azure-operator-service-manager.js +41 -1
  418. package/icons/azure/azure-orbital.js +115 -1
  419. package/icons/azure/azure-programmable-connectivity.js +168 -1
  420. package/icons/azure/azure-purview-accounts.js +100 -1
  421. package/icons/azure/azure-quotas.js +54 -1
  422. package/icons/azure/azure-red-hat-open-shift.js +44 -1
  423. package/icons/azure/azure-sentinel.js +37 -1
  424. package/icons/azure/azure-service-bus.js +77 -1
  425. package/icons/azure/azure-sphere.js +68 -1
  426. package/icons/azure/azure-spring-apps.js +111 -1
  427. package/icons/azure/azure-sql-edge.js +157 -1
  428. package/icons/azure/azure-sql-server-stretch-databases.js +82 -1
  429. package/icons/azure/azure-sql-vm.js +37 -1
  430. package/icons/azure/azure-sql.js +27 -1
  431. package/icons/azure/azure-stack-edge.js +44 -1
  432. package/icons/azure/azure-stack-hci-sizer.js +90 -1
  433. package/icons/azure/azure-stack.js +54 -1
  434. package/icons/azure/azure-storage-mover.js +120 -1
  435. package/icons/azure/azure-support-center-blue.js +53 -1
  436. package/icons/azure/azure-sustainability.js +75 -1
  437. package/icons/azure/azure-synapse-analytics.js +60 -1
  438. package/icons/azure/azure-token-service.js +46 -1
  439. package/icons/azure/azure-video-indexer.js +82 -1
  440. package/icons/azure/azure-virtual-desktop.js +19 -1
  441. package/icons/azure/azure-vmware-solution.js +57 -1
  442. package/icons/azure/azure-workbooks.js +78 -1
  443. package/icons/azure/azurite.js +34 -1
  444. package/icons/azure/backlog.js +48 -1
  445. package/icons/azure/backup-vault.js +71 -1
  446. package/icons/azure/bare-metal-infrastructure.js +63 -1
  447. package/icons/azure/bastions.js +71 -1
  448. package/icons/azure/batch-accounts.js +52 -1
  449. package/icons/azure/batch-ai.js +56 -1
  450. package/icons/azure/biz-talk.js +39 -1
  451. package/icons/azure/blob-block.js +17 -1
  452. package/icons/azure/blob-page.js +43 -1
  453. package/icons/azure/blockchain-applications.js +43 -1
  454. package/icons/azure/blueprints.js +56 -1
  455. package/icons/azure/bonsai.js +63 -1
  456. package/icons/azure/bot-services.js +43 -1
  457. package/icons/azure/branch.js +43 -1
  458. package/icons/azure/browser.js +16 -1
  459. package/icons/azure/bug.js +26 -1
  460. package/icons/azure/builds.js +48 -1
  461. package/icons/azure/business-process-tracking.js +28 -1
  462. package/icons/azure/cache-redis.js +72 -1
  463. package/icons/azure/cache.js +113 -1
  464. package/icons/azure/capacity-reservation-groups.js +47 -1
  465. package/icons/azure/capacity.js +74 -1
  466. package/icons/azure/cdn-profiles.js +32 -1
  467. package/icons/azure/central-service-instance-for-sap.js +55 -1
  468. package/icons/azure/ceres.js +58 -1
  469. package/icons/azure/change-analysis.js +93 -1
  470. package/icons/azure/client-apps.js +21 -1
  471. package/icons/azure/cloud-services-classic.js +48 -1
  472. package/icons/azure/cloud-services-extended-support.js +78 -1
  473. package/icons/azure/cloud-test.js +58 -1
  474. package/icons/azure/code-optimization.js +146 -1
  475. package/icons/azure/code.js +94 -1
  476. package/icons/azure/cognitive-search.js +26 -1
  477. package/icons/azure/cognitive-services-decisions.js +139 -1
  478. package/icons/azure/cognitive-services.js +42 -1
  479. package/icons/azure/collaborative-service.js +91 -1
  480. package/icons/azure/commit.js +30 -1
  481. package/icons/azure/community-images.js +68 -1
  482. package/icons/azure/compliance-center.js +70 -1
  483. package/icons/azure/compliance.js +35 -1
  484. package/icons/azure/compute-fleet.js +102 -1
  485. package/icons/azure/computer-vision.js +35 -1
  486. package/icons/azure/conditional-access.js +45 -1
  487. package/icons/azure/confidential-ledgers.js +96 -1
  488. package/icons/azure/connected-cache.js +99 -1
  489. package/icons/azure/connected-vehicle-platform.js +111 -1
  490. package/icons/azure/connections.js +54 -1
  491. package/icons/azure/consortium.js +63 -1
  492. package/icons/azure/container-apps-environments.js +66 -1
  493. package/icons/azure/container-instances.js +37 -1
  494. package/icons/azure/container-registries.js +68 -1
  495. package/icons/azure/container-services-deprecated.js +142 -1
  496. package/icons/azure/content-moderators.js +63 -1
  497. package/icons/azure/content-safety.js +88 -1
  498. package/icons/azure/controls-horizontal.js +135 -1
  499. package/icons/azure/controls.js +33 -1
  500. package/icons/azure/cost-alerts.js +28 -1
  501. package/icons/azure/cost-analysis.js +35 -1
  502. package/icons/azure/cost-budgets.js +30 -1
  503. package/icons/azure/cost-export.js +36 -1
  504. package/icons/azure/cost-management-and-billing.js +41 -1
  505. package/icons/azure/cost-management.js +46 -1
  506. package/icons/azure/counter.js +33 -1
  507. package/icons/azure/cubes.js +16 -1
  508. package/icons/azure/custom-ip-prefix.js +51 -1
  509. package/icons/azure/custom-vision.js +59 -1
  510. package/icons/azure/customer-lockbox-for-microsoft-azure.js +64 -1
  511. package/icons/azure/dashboard-hub.js +94 -1
  512. package/icons/azure/dashboard.js +42 -1
  513. package/icons/azure/data-box.js +33 -1
  514. package/icons/azure/data-collection-rules.js +64 -1
  515. package/icons/azure/data-factories.js +42 -1
  516. package/icons/azure/data-lake-analytics.js +43 -1
  517. package/icons/azure/data-lake-storage-gen1.js +49 -1
  518. package/icons/azure/data-lake-store-gen1.js +49 -1
  519. package/icons/azure/data-share-invitations.js +34 -1
  520. package/icons/azure/data-shares.js +67 -1
  521. package/icons/azure/database-instance-for-sap.js +80 -1
  522. package/icons/azure/ddo-s-protection-plans.js +47 -1
  523. package/icons/azure/dedicated-hsm.js +49 -1
  524. package/icons/azure/defender-cm-local-manager.js +175 -1
  525. package/icons/azure/defender-dcs-controller.js +99 -1
  526. package/icons/azure/defender-distributer-control-system.js +67 -1
  527. package/icons/azure/defender-engineering-station.js +115 -1
  528. package/icons/azure/defender-external-management.js +132 -1
  529. package/icons/azure/defender-freezer-monitor.js +217 -1
  530. package/icons/azure/defender-historian.js +53 -1
  531. package/icons/azure/defender-hmi.js +54 -1
  532. package/icons/azure/defender-industrial-packaging-system.js +97 -1
  533. package/icons/azure/defender-industrial-printer.js +51 -1
  534. package/icons/azure/defender-industrial-robot.js +165 -1
  535. package/icons/azure/defender-industrial-scale-system.js +80 -1
  536. package/icons/azure/defender-marquee.js +68 -1
  537. package/icons/azure/defender-meter.js +156 -1
  538. package/icons/azure/defender-plc.js +66 -1
  539. package/icons/azure/defender-pneumatic-device.js +72 -1
  540. package/icons/azure/defender-programable-board.js +126 -1
  541. package/icons/azure/defender-relay.js +67 -1
  542. package/icons/azure/defender-robot-controller.js +123 -1
  543. package/icons/azure/defender-rtu.js +23 -1
  544. package/icons/azure/defender-sensor.js +55 -1
  545. package/icons/azure/defender-slot.js +31 -1
  546. package/icons/azure/defender-web-guiding-system.js +266 -1
  547. package/icons/azure/detonation.js +41 -1
  548. package/icons/azure/dev-console.js +30 -1
  549. package/icons/azure/dev-ops-starter.js +102 -1
  550. package/icons/azure/dev-test-labs.js +46 -1
  551. package/icons/azure/device-compliance.js +62 -1
  552. package/icons/azure/device-configuration.js +66 -1
  553. package/icons/azure/device-enrollment.js +69 -1
  554. package/icons/azure/device-provisioning-services.js +54 -1
  555. package/icons/azure/device-security-apple.js +54 -1
  556. package/icons/azure/device-security-google.js +54 -1
  557. package/icons/azure/device-security-windows.js +54 -1
  558. package/icons/azure/device-update-io-t-hub.js +46 -1
  559. package/icons/azure/devices.js +29 -1
  560. package/icons/azure/diagnostics-settings.js +51 -1
  561. package/icons/azure/digital-twins.js +73 -1
  562. package/icons/azure/disk-encryption-sets.js +63 -1
  563. package/icons/azure/disk-pool.js +92 -1
  564. package/icons/azure/disks-classic.js +74 -1
  565. package/icons/azure/disks-snapshots.js +71 -1
  566. package/icons/azure/disks.js +63 -1
  567. package/icons/azure/dns-multistack.js +49 -1
  568. package/icons/azure/dns-private-resolver.js +50 -1
  569. package/icons/azure/dns-security-policy.js +90 -1
  570. package/icons/azure/dns-zones.js +37 -1
  571. package/icons/azure/download.js +60 -1
  572. package/icons/azure/e-books.js +42 -1
  573. package/icons/azure/edge-management.js +64 -1
  574. package/icons/azure/education.js +42 -1
  575. package/icons/azure/elastic-job-agents.js +61 -1
  576. package/icons/azure/elastic-san.js +65 -1
  577. package/icons/azure/endpoint-analytics.js +83 -1
  578. package/icons/azure/enterprise-applications.js +66 -1
  579. package/icons/azure/entra-connect-health.js +132 -1
  580. package/icons/azure/entra-connect-sync.js +86 -1
  581. package/icons/azure/entra-connect.js +123 -1
  582. package/icons/azure/entra-domain-services.js +105 -1
  583. package/icons/azure/entra-global-secure-access.js +76 -1
  584. package/icons/azure/entra-id-protection.js +74 -1
  585. package/icons/azure/entra-identity-custom-roles.js +62 -1
  586. package/icons/azure/entra-identity-licenses.js +85 -1
  587. package/icons/azure/entra-identity-risky-signins.js +28 -1
  588. package/icons/azure/entra-identity-risky-users.js +28 -1
  589. package/icons/azure/entra-identity-roles-and-administrators.js +53 -1
  590. package/icons/azure/entra-internet-access.js +105 -1
  591. package/icons/azure/entra-managed-identities.js +120 -1
  592. package/icons/azure/entra-private-access.js +104 -1
  593. package/icons/azure/entra-privleged-identity-management.js +120 -1
  594. package/icons/azure/entra-verified-id.js +75 -1
  595. package/icons/azure/error.js +30 -1
  596. package/icons/azure/event-grid-domains.js +75 -1
  597. package/icons/azure/event-grid-subscriptions.js +75 -1
  598. package/icons/azure/event-grid-topics.js +90 -1
  599. package/icons/azure/event-hub-clusters.js +77 -1
  600. package/icons/azure/event-hubs.js +64 -1
  601. package/icons/azure/exchange-access.js +45 -1
  602. package/icons/azure/exchange-on-premises-access.js +39 -1
  603. package/icons/azure/express-route-circuits.js +60 -1
  604. package/icons/azure/express-route-direct.js +61 -1
  605. package/icons/azure/express-route-traffic-collector.js +97 -1
  606. package/icons/azure/extended-security-updates.js +44 -1
  607. package/icons/azure/extensions.js +28 -1
  608. package/icons/azure/external-identities.js +42 -1
  609. package/icons/azure/face-apis.js +19 -1
  610. package/icons/azure/feature-previews.js +21 -1
  611. package/icons/azure/fhir-service.js +60 -1
  612. package/icons/azure/fiji.js +42 -1
  613. package/icons/azure/file.js +29 -1
  614. package/icons/azure/files.js +45 -1
  615. package/icons/azure/firewalls.js +32 -1
  616. package/icons/azure/folder-blank.js +39 -1
  617. package/icons/azure/folder-website.js +123 -1
  618. package/icons/azure/form-recognizers.js +48 -1
  619. package/icons/azure/free-services.js +43 -1
  620. package/icons/azure/front-door-and-cdn-profiles.js +37 -1
  621. package/icons/azure/ftp.js +17 -1
  622. package/icons/azure/function-apps.js +61 -1
  623. package/icons/azure/gear.js +37 -1
  624. package/icons/azure/genomics-accounts.js +68 -1
  625. package/icons/azure/genomics.js +57 -1
  626. package/icons/azure/globe-error.js +42 -1
  627. package/icons/azure/globe-success.js +52 -1
  628. package/icons/azure/globe-warning.js +53 -1
  629. package/icons/azure/groups.js +42 -1
  630. package/icons/azure/guide.js +17 -1
  631. package/icons/azure/hd-insight-clusters.js +71 -1
  632. package/icons/azure/hdi-aks-cluster.js +60 -1
  633. package/icons/azure/heart.js +31 -1
  634. package/icons/azure/help-and-support.js +55 -1
  635. package/icons/azure/host-groups.js +48 -1
  636. package/icons/azure/host-pools.js +19 -1
  637. package/icons/azure/hosts.js +46 -1
  638. package/icons/azure/ic-m-troubleshooting.js +60 -1
  639. package/icons/azure/identity-governance.js +52 -1
  640. package/icons/azure/identity-multi-factor-authentication.js +117 -1
  641. package/icons/azure/identity-secure-score.js +55 -1
  642. package/icons/azure/image-definitions.js +38 -1
  643. package/icons/azure/image-templates.js +43 -1
  644. package/icons/azure/image-versions.js +38 -1
  645. package/icons/azure/image.js +31 -1
  646. package/icons/azure/images.js +37 -1
  647. package/icons/azure/immersive-readers.js +82 -1
  648. package/icons/azure/import-export-jobs.js +25 -1
  649. package/icons/azure/industrial-io-t.js +97 -1
  650. package/icons/azure/information.js +21 -1
  651. package/icons/azure/infrastructure-backup.js +89 -1
  652. package/icons/azure/input-output.js +97 -1
  653. package/icons/azure/instance-pools.js +87 -1
  654. package/icons/azure/integration-accounts.js +52 -1
  655. package/icons/azure/integration-environments.js +94 -1
  656. package/icons/azure/integration-service-environments.js +90 -1
  657. package/icons/azure/internet-analyzer-profiles.js +59 -1
  658. package/icons/azure/intune-app-protection.js +79 -1
  659. package/icons/azure/intune-for-education.js +79 -1
  660. package/icons/azure/intune-trends.js +40 -1
  661. package/icons/azure/intune.js +46 -1
  662. package/icons/azure/io-t-central-applications.js +20 -1
  663. package/icons/azure/io-t-edge.js +25 -1
  664. package/icons/azure/io-t-hub.js +36 -1
  665. package/icons/azure/ip-address-manager.js +63 -1
  666. package/icons/azure/ip-groups.js +45 -1
  667. package/icons/azure/journey-hub.js +30 -1
  668. package/icons/azure/key-vaults.js +61 -1
  669. package/icons/azure/keys.js +97 -1
  670. package/icons/azure/kubernetes-fleet-manager.js +73 -1
  671. package/icons/azure/kubernetes-services.js +142 -1
  672. package/icons/azure/lab-accounts.js +69 -1
  673. package/icons/azure/lab-services.js +46 -1
  674. package/icons/azure/language-understanding.js +25 -1
  675. package/icons/azure/language.js +71 -1
  676. package/icons/azure/launch-portal.js +36 -1
  677. package/icons/azure/learn.js +61 -1
  678. package/icons/azure/load-balancer-hub.js +101 -1
  679. package/icons/azure/load-balancers.js +28 -1
  680. package/icons/azure/load-test.js +61 -1
  681. package/icons/azure/load-testing.js +71 -1
  682. package/icons/azure/local-network-gateways.js +44 -1
  683. package/icons/azure/location.js +34 -1
  684. package/icons/azure/log-analytics-query-pack.js +68 -1
  685. package/icons/azure/log-analytics-workspaces.js +58 -1
  686. package/icons/azure/log-streaming.js +57 -1
  687. package/icons/azure/logic-apps-custom-connector.js +76 -1
  688. package/icons/azure/logic-apps.js +65 -1
  689. package/icons/azure/machine-learning-studio-classic-web-services.js +49 -1
  690. package/icons/azure/machine-learning-studio-web-service-plans.js +84 -1
  691. package/icons/azure/machine-learning-studio-workspaces.js +55 -1
  692. package/icons/azure/machine-learning.js +29 -1
  693. package/icons/azure/machines-azure-arc.js +27 -1
  694. package/icons/azure/maintenance-configuration.js +62 -1
  695. package/icons/azure/managed-applications-center.js +55 -1
  696. package/icons/azure/managed-database.js +79 -1
  697. package/icons/azure/managed-desktop.js +40 -1
  698. package/icons/azure/managed-dev-ops-pools.js +59 -1
  699. package/icons/azure/managed-file-shares.js +59 -1
  700. package/icons/azure/managed-identities.js +66 -1
  701. package/icons/azure/managed-instance-apache-cassandra.js +100 -1
  702. package/icons/azure/managed-service-fabric.js +109 -1
  703. package/icons/azure/management-groups.js +77 -1
  704. package/icons/azure/management-portal.js +23 -1
  705. package/icons/azure/marketplace-management.js +47 -1
  706. package/icons/azure/marketplace.js +38 -1
  707. package/icons/azure/med-tech-service.js +87 -1
  708. package/icons/azure/media-file.js +36 -1
  709. package/icons/azure/media.js +108 -1
  710. package/icons/azure/mesh-applications.js +47 -1
  711. package/icons/azure/metrics-advisor.js +58 -1
  712. package/icons/azure/metrics.js +34 -1
  713. package/icons/azure/microsoft-defender-easm.js +69 -1
  714. package/icons/azure/microsoft-defender-for-cloud.js +61 -1
  715. package/icons/azure/microsoft-defender-for-io-t.js +54 -1
  716. package/icons/azure/microsoft-dev-box.js +143 -1
  717. package/icons/azure/mindaro.js +47 -1
  718. package/icons/azure/mission-landing-zone.js +48 -1
  719. package/icons/azure/mobile-engagement.js +46 -1
  720. package/icons/azure/mobile-networks.js +86 -1
  721. package/icons/azure/mobile.js +28 -1
  722. package/icons/azure/modular-data-center.js +83 -1
  723. package/icons/azure/module.js +25 -1
  724. package/icons/azure/monitor-health-models.js +110 -1
  725. package/icons/azure/monitor.js +61 -1
  726. package/icons/azure/multi-tenancy.js +80 -1
  727. package/icons/azure/multifactor-authentication.js +84 -1
  728. package/icons/azure/my-customers.js +42 -1
  729. package/icons/azure/nat.js +56 -1
  730. package/icons/azure/network-interfaces.js +52 -1
  731. package/icons/azure/network-managers.js +55 -1
  732. package/icons/azure/network-security-groups.js +53 -1
  733. package/icons/azure/network-security-perimeters.js +113 -1
  734. package/icons/azure/network-watcher.js +55 -1
  735. package/icons/azure/notification-hub-namespaces.js +33 -1
  736. package/icons/azure/notification-hubs.js +22 -1
  737. package/icons/azure/offers.js +35 -1
  738. package/icons/azure/on-premises-data-gateways.js +44 -1
  739. package/icons/azure/open-supply-chain-platform.js +111 -1
  740. package/icons/azure/operation-log-classic.js +44 -1
  741. package/icons/azure/oracle-database.js +55 -1
  742. package/icons/azure/os-images-classic.js +60 -1
  743. package/icons/azure/osconfig.js +82 -1
  744. package/icons/azure/outbound-connection.js +24 -1
  745. package/icons/azure/partner-namespace.js +97 -1
  746. package/icons/azure/partner-registration.js +117 -1
  747. package/icons/azure/partner-topic.js +93 -1
  748. package/icons/azure/peering-service.js +27 -1
  749. package/icons/azure/peerings.js +44 -1
  750. package/icons/azure/personalizers.js +99 -1
  751. package/icons/azure/plans.js +40 -1
  752. package/icons/azure/policy.js +34 -1
  753. package/icons/azure/power-bi-embedded.js +69 -1
  754. package/icons/azure/power-platform.js +163 -1
  755. package/icons/azure/power-up.js +42 -1
  756. package/icons/azure/power.js +31 -1
  757. package/icons/azure/powershell.js +30 -1
  758. package/icons/azure/preview-features.js +72 -1
  759. package/icons/azure/private-endpoints.js +80 -1
  760. package/icons/azure/private-link-service.js +83 -1
  761. package/icons/azure/private-link-services.js +72 -1
  762. package/icons/azure/private-link.js +94 -1
  763. package/icons/azure/process-explorer.js +23 -1
  764. package/icons/azure/production-ready-database.js +70 -1
  765. package/icons/azure/proximity-placement-groups.js +71 -1
  766. package/icons/azure/public-ip-addresses-classic.js +36 -1
  767. package/icons/azure/public-ip-addresses.js +19 -1
  768. package/icons/azure/public-ip-prefixes.js +85 -1
  769. package/icons/azure/qn-a-makers.js +61 -1
  770. package/icons/azure/quickstart-center.js +76 -1
  771. package/icons/azure/recent.js +57 -1
  772. package/icons/azure/recovery-services-vaults.js +67 -1
  773. package/icons/azure/region-management.js +42 -1
  774. package/icons/azure/relays.js +45 -1
  775. package/icons/azure/remote-rendering.js +71 -1
  776. package/icons/azure/reservations.js +37 -1
  777. package/icons/azure/reserved-capacity.js +45 -1
  778. package/icons/azure/reserved-ip-addresses-classic.js +38 -1
  779. package/icons/azure/resource-explorer.js +33 -1
  780. package/icons/azure/resource-graph-explorer.js +58 -1
  781. package/icons/azure/resource-group-list.js +48 -1
  782. package/icons/azure/resource-groups.js +40 -1
  783. package/icons/azure/resource-guard.js +46 -1
  784. package/icons/azure/resource-linked.js +51 -1
  785. package/icons/azure/resource-management-private-link.js +61 -1
  786. package/icons/azure/resource-mover.js +20 -1
  787. package/icons/azure/resources-provider.js +27 -1
  788. package/icons/azure/restore-points-collections.js +73 -1
  789. package/icons/azure/restore-points.js +72 -1
  790. package/icons/azure/route-filters.js +39 -1
  791. package/icons/azure/route-tables.js +62 -1
  792. package/icons/azure/rtos.js +64 -1
  793. package/icons/azure/savings-plans.js +75 -1
  794. package/icons/azure/scheduler-job-collections.js +73 -1
  795. package/icons/azure/scheduler.js +75 -1
  796. package/icons/azure/scvmm-management-servers.js +79 -1
  797. package/icons/azure/search-grid.js +48 -1
  798. package/icons/azure/search.js +28 -1
  799. package/icons/azure/security-baselines.js +55 -1
  800. package/icons/azure/security.js +22 -1
  801. package/icons/azure/send-grid-accounts.js +42 -1
  802. package/icons/azure/server-farm.js +65 -1
  803. package/icons/azure/serverless-search.js +65 -1
  804. package/icons/azure/service-catalog-mad.js +65 -1
  805. package/icons/azure/service-endpoint-policies.js +75 -1
  806. package/icons/azure/service-fabric-clusters.js +97 -1
  807. package/icons/azure/service-health.js +45 -1
  808. package/icons/azure/service-providers.js +71 -1
  809. package/icons/azure/shared-image-galleries.js +32 -1
  810. package/icons/azure/signal-r.js +22 -1
  811. package/icons/azure/software-as-a-service.js +65 -1
  812. package/icons/azure/software-updates.js +22 -1
  813. package/icons/azure/solutions.js +58 -1
  814. package/icons/azure/sonic-dash.js +95 -1
  815. package/icons/azure/spatial-anchor-accounts.js +88 -1
  816. package/icons/azure/speech-services.js +43 -1
  817. package/icons/azure/spot-vm.js +40 -1
  818. package/icons/azure/spot-vmss.js +77 -1
  819. package/icons/azure/sql-data-warehouses.js +82 -1
  820. package/icons/azure/sql-database.js +63 -1
  821. package/icons/azure/sql-elastic-pools.js +89 -1
  822. package/icons/azure/sql-managed-instance.js +73 -1
  823. package/icons/azure/sql-server-registries.js +75 -1
  824. package/icons/azure/sql-server.js +46 -1
  825. package/icons/azure/ssd.js +36 -1
  826. package/icons/azure/ssh-keys.js +42 -1
  827. package/icons/azure/ssis-lift-and-shift-ir.js +72 -1
  828. package/icons/azure/stack-hci-premium.js +144 -1
  829. package/icons/azure/static-apps.js +29 -1
  830. package/icons/azure/stor-simple-data-managers.js +57 -1
  831. package/icons/azure/stor-simple-device-managers.js +38 -1
  832. package/icons/azure/storage-accounts-classic.js +53 -1
  833. package/icons/azure/storage-accounts.js +35 -1
  834. package/icons/azure/storage-actions.js +88 -1
  835. package/icons/azure/storage-azure-files.js +47 -1
  836. package/icons/azure/storage-container.js +35 -1
  837. package/icons/azure/storage-explorer.js +38 -1
  838. package/icons/azure/storage-functions.js +57 -1
  839. package/icons/azure/storage-queue.js +24 -1
  840. package/icons/azure/storage-sync-services.js +74 -1
  841. package/icons/azure/stream-analytics-jobs.js +53 -1
  842. package/icons/azure/subnet.js +43 -1
  843. package/icons/azure/subscriptions.js +41 -1
  844. package/icons/azure/system-topic.js +182 -1
  845. package/icons/azure/table.js +23 -1
  846. package/icons/azure/tag.js +28 -1
  847. package/icons/azure/tags.js +46 -1
  848. package/icons/azure/targets-management.js +54 -1
  849. package/icons/azure/template-specs.js +67 -1
  850. package/icons/azure/templates.js +33 -1
  851. package/icons/azure/tenant-properties.js +90 -1
  852. package/icons/azure/tenant-status.js +40 -1
  853. package/icons/azure/test-base.js +56 -1
  854. package/icons/azure/tfs-vc-repository.js +97 -1
  855. package/icons/azure/time-series-data-sets.js +63 -1
  856. package/icons/azure/time-series-insights-access-policies.js +42 -1
  857. package/icons/azure/time-series-insights-environments.js +39 -1
  858. package/icons/azure/time-series-insights-event-sources.js +57 -1
  859. package/icons/azure/toolbox.js +26 -1
  860. package/icons/azure/traffic-manager-profiles.js +47 -1
  861. package/icons/azure/translator-text.js +75 -1
  862. package/icons/azure/troubleshoot.js +38 -1
  863. package/icons/azure/universal-print.js +74 -1
  864. package/icons/azure/update-management-center.js +135 -1
  865. package/icons/azure/updates.js +47 -1
  866. package/icons/azure/user-privacy.js +55 -1
  867. package/icons/azure/user-settings.js +68 -1
  868. package/icons/azure/user-subscriptions.js +104 -1
  869. package/icons/azure/users.js +26 -1
  870. package/icons/azure/verifiable-credentials.js +99 -1
  871. package/icons/azure/verification-as-a-service.js +84 -1
  872. package/icons/azure/versions.js +24 -1
  873. package/icons/azure/video-analyzers.js +42 -1
  874. package/icons/azure/virtual-clusters.js +99 -1
  875. package/icons/azure/virtual-enclaves.js +40 -1
  876. package/icons/azure/virtual-instance-for-sap.js +81 -1
  877. package/icons/azure/virtual-machine.js +52 -1
  878. package/icons/azure/virtual-machines-classic.js +53 -1
  879. package/icons/azure/virtual-network-gateways.js +56 -1
  880. package/icons/azure/virtual-networks-classic.js +86 -1
  881. package/icons/azure/virtual-networks.js +86 -1
  882. package/icons/azure/virtual-router.js +29 -1
  883. package/icons/azure/virtual-visits-builder.js +81 -1
  884. package/icons/azure/virtual-wan-hub.js +72 -1
  885. package/icons/azure/virtual-wans.js +60 -1
  886. package/icons/azure/vm-app-definitions.js +66 -1
  887. package/icons/azure/vm-app-versions.js +91 -1
  888. package/icons/azure/vm-image-version.js +103 -1
  889. package/icons/azure/vm-images-classic.js +60 -1
  890. package/icons/azure/vm-scale-sets.js +60 -1
  891. package/icons/azure/wac-installer.js +121 -1
  892. package/icons/azure/wac.js +56 -1
  893. package/icons/azure/web-app-database.js +177 -1
  894. package/icons/azure/web-application-firewall-policies-waf.js +97 -1
  895. package/icons/azure/web-jobs.js +119 -1
  896. package/icons/azure/web-slots.js +30 -1
  897. package/icons/azure/web-test.js +122 -1
  898. package/icons/azure/website-power.js +90 -1
  899. package/icons/azure/website-staging.js +24 -1
  900. package/icons/azure/windows-notification-services.js +78 -1
  901. package/icons/azure/windows10-core-services.js +61 -1
  902. package/icons/azure/workbooks.js +38 -1
  903. package/icons/azure/worker-container-app.js +91 -1
  904. package/icons/azure/workflow.js +47 -1
  905. package/icons/azure/workspace-gateway.js +86 -1
  906. package/icons/azure/workspaces.js +58 -1
  907. package/icons/gcp/access-context-manager.js +17 -1
  908. package/icons/gcp/administration.js +46 -1
  909. package/icons/gcp/advanced-agent-modeling.js +31 -1
  910. package/icons/gcp/advanced-solutions-lab.js +84 -1
  911. package/icons/gcp/agent-assist.js +12 -1
  912. package/icons/gcp/ai-hub.js +23 -1
  913. package/icons/gcp/ai-platform-unified.js +40 -1
  914. package/icons/gcp/ai-platform.js +23 -1
  915. package/icons/gcp/analytics-hub.js +28 -1
  916. package/icons/gcp/anthos-config-management.js +28 -1
  917. package/icons/gcp/anthos-service-mesh.js +13 -1
  918. package/icons/gcp/anthos.js +11 -1
  919. package/icons/gcp/api-analytics.js +26 -1
  920. package/icons/gcp/api-monetization.js +23 -1
  921. package/icons/gcp/api.js +29 -1
  922. package/icons/gcp/apigee-api-platform.js +35 -1
  923. package/icons/gcp/apigee-sense.js +28 -1
  924. package/icons/gcp/app-engine.js +39 -1
  925. package/icons/gcp/artifact-registry.js +33 -1
  926. package/icons/gcp/asset-inventory.js +19 -1
  927. package/icons/gcp/assured-workloads.js +38 -1
  928. package/icons/gcp/auto-ml-natural-language.js +9 -1
  929. package/icons/gcp/auto-ml-tables.js +19 -1
  930. package/icons/gcp/auto-ml-translation.js +25 -1
  931. package/icons/gcp/auto-ml-video-intelligence.js +25 -1
  932. package/icons/gcp/auto-ml-vision.js +18 -1
  933. package/icons/gcp/auto-ml.js +14 -1
  934. package/icons/gcp/bare-metal-solutions.js +10 -1
  935. package/icons/gcp/batch.js +12 -1
  936. package/icons/gcp/beyondcorp.js +13 -1
  937. package/icons/gcp/big-query.js +28 -1
  938. package/icons/gcp/bigtable.js +116 -1
  939. package/icons/gcp/billing.js +34 -1
  940. package/icons/gcp/binary-authorization.js +22 -1
  941. package/icons/gcp/catalog.js +29 -1
  942. package/icons/gcp/certificate-authority-service.js +33 -1
  943. package/icons/gcp/certificate-manager.js +24 -1
  944. package/icons/gcp/cloud-api-gateway.js +13 -1
  945. package/icons/gcp/cloud-apis.js +18 -1
  946. package/icons/gcp/cloud-armor.js +27 -1
  947. package/icons/gcp/cloud-asset-inventory.js +10 -1
  948. package/icons/gcp/cloud-audit-logs.js +60 -1
  949. package/icons/gcp/cloud-build.js +19 -1
  950. package/icons/gcp/cloud-cdn.js +22 -1
  951. package/icons/gcp/cloud-code.js +16 -1
  952. package/icons/gcp/cloud-composer.js +19 -1
  953. package/icons/gcp/cloud-data-fusion.js +15 -1
  954. package/icons/gcp/cloud-deploy.js +10 -1
  955. package/icons/gcp/cloud-deployment-manager.js +24 -1
  956. package/icons/gcp/cloud-dns.js +21 -1
  957. package/icons/gcp/cloud-domains.js +26 -1
  958. package/icons/gcp/cloud-ekm.js +13 -1
  959. package/icons/gcp/cloud-endpoints.js +26 -1
  960. package/icons/gcp/cloud-external-ip-addresses.js +21 -1
  961. package/icons/gcp/cloud-firewall-rules.js +15 -1
  962. package/icons/gcp/cloud-for-marketing.js +13 -1
  963. package/icons/gcp/cloud-functions.js +45 -1
  964. package/icons/gcp/cloud-generic.js +13 -1
  965. package/icons/gcp/cloud-gpu.js +18 -1
  966. package/icons/gcp/cloud-healthcare-api.js +65 -1
  967. package/icons/gcp/cloud-healthcare-marketplace.js +10 -1
  968. package/icons/gcp/cloud-hsm.js +43 -1
  969. package/icons/gcp/cloud-ids.js +42 -1
  970. package/icons/gcp/cloud-inference-api.js +27 -1
  971. package/icons/gcp/cloud-interconnect.js +15 -1
  972. package/icons/gcp/cloud-jobs-api.js +37 -1
  973. package/icons/gcp/cloud-load-balancing.js +20 -1
  974. package/icons/gcp/cloud-logging.js +35 -1
  975. package/icons/gcp/cloud-media-edge.js +23 -1
  976. package/icons/gcp/cloud-monitoring.js +26 -1
  977. package/icons/gcp/cloud-nat.js +31 -1
  978. package/icons/gcp/cloud-natural-language-api.js +40 -1
  979. package/icons/gcp/cloud-network.js +23 -1
  980. package/icons/gcp/cloud-ops.js +32 -1
  981. package/icons/gcp/cloud-optimization-ai-fleet-routing-api.js +34 -1
  982. package/icons/gcp/cloud-optimization-ai.js +28 -1
  983. package/icons/gcp/cloud-router.js +13 -1
  984. package/icons/gcp/cloud-routes.js +18 -1
  985. package/icons/gcp/cloud-run-for-anthos.js +21 -1
  986. package/icons/gcp/cloud-run.js +13 -1
  987. package/icons/gcp/cloud-scheduler.js +49 -1
  988. package/icons/gcp/cloud-security-scanner.js +21 -1
  989. package/icons/gcp/cloud-shell.js +16 -1
  990. package/icons/gcp/cloud-spanner.js +42 -1
  991. package/icons/gcp/cloud-sql.js +16 -1
  992. package/icons/gcp/cloud-storage.js +22 -1
  993. package/icons/gcp/cloud-tasks.js +101 -1
  994. package/icons/gcp/cloud-test-lab.js +39 -1
  995. package/icons/gcp/cloud-tpu.js +141 -1
  996. package/icons/gcp/cloud-translation-api.js +16 -1
  997. package/icons/gcp/cloud-vision-api.js +40 -1
  998. package/icons/gcp/cloud-vpn.js +23 -1
  999. package/icons/gcp/compute-engine.js +23 -1
  1000. package/icons/gcp/configuration-management.js +22 -1
  1001. package/icons/gcp/connectivity-test.js +6 -1
  1002. package/icons/gcp/connectors.js +13 -1
  1003. package/icons/gcp/contact-center-ai.js +6 -1
  1004. package/icons/gcp/container-optimized-os.js +13 -1
  1005. package/icons/gcp/container-registry.js +118 -1
  1006. package/icons/gcp/data-catalog.js +25 -1
  1007. package/icons/gcp/data-labeling.js +31 -1
  1008. package/icons/gcp/data-layers.js +11 -1
  1009. package/icons/gcp/data-loss-prevention-api.js +60 -1
  1010. package/icons/gcp/data-qn-a.js +24 -1
  1011. package/icons/gcp/data-studio.js +28 -1
  1012. package/icons/gcp/data-transfer.js +17 -1
  1013. package/icons/gcp/database-migration-service.js +24 -1
  1014. package/icons/gcp/dataflow.js +50 -1
  1015. package/icons/gcp/datalab.js +13 -1
  1016. package/icons/gcp/dataplex.js +15 -1
  1017. package/icons/gcp/datapol.js +70 -1
  1018. package/icons/gcp/dataprep.js +25 -1
  1019. package/icons/gcp/dataproc-metastore.js +12 -1
  1020. package/icons/gcp/dataproc.js +43 -1
  1021. package/icons/gcp/datashare.js +37 -1
  1022. package/icons/gcp/datastore.js +39 -1
  1023. package/icons/gcp/datastream.js +35 -1
  1024. package/icons/gcp/debugger.js +31 -1
  1025. package/icons/gcp/developer-portal.js +24 -1
  1026. package/icons/gcp/dialogflow-cx.js +28 -1
  1027. package/icons/gcp/dialogflow-insights.js +33 -1
  1028. package/icons/gcp/dialogflow.js +16 -1
  1029. package/icons/gcp/document-ai.js +27 -1
  1030. package/icons/gcp/early-access-center.js +12 -1
  1031. package/icons/gcp/error-reporting.js +42 -1
  1032. package/icons/gcp/eventarc.js +24 -1
  1033. package/icons/gcp/filestore.js +22 -1
  1034. package/icons/gcp/financial-services-marketplace.js +21 -1
  1035. package/icons/gcp/firestore.js +30 -1
  1036. package/icons/gcp/fleet-engine.js +10 -1
  1037. package/icons/gcp/free-trial.js +36 -1
  1038. package/icons/gcp/game-servers.js +32 -1
  1039. package/icons/gcp/gce-systems-management.js +13 -1
  1040. package/icons/gcp/genomics.js +23 -1
  1041. package/icons/gcp/gke-on-prem.js +31 -1
  1042. package/icons/gcp/google-cloud-marketplace.js +29 -1
  1043. package/icons/gcp/google-kubernetes-engine.js +23 -1
  1044. package/icons/gcp/google-maps-platform.js +47 -1
  1045. package/icons/gcp/healthcare-nlp-api.js +13 -1
  1046. package/icons/gcp/home.js +25 -1
  1047. package/icons/gcp/identity-and-access-management.js +23 -1
  1048. package/icons/gcp/identity-aware-proxy.js +32 -1
  1049. package/icons/gcp/identity-platform.js +26 -1
  1050. package/icons/gcp/iot-core.js +23 -1
  1051. package/icons/gcp/iot-edge.js +86 -1
  1052. package/icons/gcp/key-access-justifications.js +46 -1
  1053. package/icons/gcp/key-management-service.js +23 -1
  1054. package/icons/gcp/kuberun.js +26 -1
  1055. package/icons/gcp/launcher.js +35 -1
  1056. package/icons/gcp/local-ssd.js +13 -1
  1057. package/icons/gcp/looker.js +46 -1
  1058. package/icons/gcp/managed-service-for-microsoft-active-directory.js +59 -1
  1059. package/icons/gcp/media-translation-api.js +28 -1
  1060. package/icons/gcp/memorystore.js +26 -1
  1061. package/icons/gcp/migrate-for-anthos.js +13 -1
  1062. package/icons/gcp/migrate-for-compute-engine.js +13 -1
  1063. package/icons/gcp/my-cloud.js +21 -1
  1064. package/icons/gcp/network-connectivity-center.js +84 -1
  1065. package/icons/gcp/network-intelligence-center.js +13 -1
  1066. package/icons/gcp/network-security.js +38 -1
  1067. package/icons/gcp/network-tiers.js +53 -1
  1068. package/icons/gcp/network-topology.js +13 -1
  1069. package/icons/gcp/onboarding.js +25 -1
  1070. package/icons/gcp/os-configuration-management.js +13 -1
  1071. package/icons/gcp/os-inventory-management.js +15 -1
  1072. package/icons/gcp/os-patch-management.js +13 -1
  1073. package/icons/gcp/partner-interconnect.js +21 -1
  1074. package/icons/gcp/partner-portal.js +35 -1
  1075. package/icons/gcp/performance-dashboard.js +13 -1
  1076. package/icons/gcp/permissions.js +35 -1
  1077. package/icons/gcp/persistent-disk.js +10 -1
  1078. package/icons/gcp/phishing-protection.js +48 -1
  1079. package/icons/gcp/policy-analyzer.js +13 -1
  1080. package/icons/gcp/premium-network-tier.js +19 -1
  1081. package/icons/gcp/private-connectivity.js +18 -1
  1082. package/icons/gcp/private-service-connect.js +27 -1
  1083. package/icons/gcp/producer-portal.js +21 -1
  1084. package/icons/gcp/profiler.js +29 -1
  1085. package/icons/gcp/project.js +28 -1
  1086. package/icons/gcp/pub-sub.js +41 -1
  1087. package/icons/gcp/quantum-engine.js +27 -1
  1088. package/icons/gcp/quotas.js +42 -1
  1089. package/icons/gcp/real-world-insights.js +19 -1
  1090. package/icons/gcp/recommendations-ai.js +56 -1
  1091. package/icons/gcp/release-notes.js +12 -1
  1092. package/icons/gcp/retail-api.js +22 -1
  1093. package/icons/gcp/risk-manager.js +12 -1
  1094. package/icons/gcp/runtime-config.js +35 -1
  1095. package/icons/gcp/secret-manager.js +13 -1
  1096. package/icons/gcp/security-command-center.js +18 -1
  1097. package/icons/gcp/security-health-advisor.js +61 -1
  1098. package/icons/gcp/security-key-enforcement.js +21 -1
  1099. package/icons/gcp/security.js +27 -1
  1100. package/icons/gcp/service-discovery.js +36 -1
  1101. package/icons/gcp/speech-to-text.js +93 -1
  1102. package/icons/gcp/stackdriver.js +10 -1
  1103. package/icons/gcp/standard-network-tier.js +13 -1
  1104. package/icons/gcp/stream-suite.js +16 -1
  1105. package/icons/gcp/support.js +29 -1
  1106. package/icons/gcp/tensorflow-enterprise.js +13 -1
  1107. package/icons/gcp/text-to-speech.js +24 -1
  1108. package/icons/gcp/tools-for-powershell.js +29 -1
  1109. package/icons/gcp/trace.js +17 -1
  1110. package/icons/gcp/traffic-director.js +44 -1
  1111. package/icons/gcp/transfer-appliance.js +32 -1
  1112. package/icons/gcp/transfer.js +13 -1
  1113. package/icons/gcp/user-preferences.js +35 -1
  1114. package/icons/gcp/vertex-ai.js +48 -1
  1115. package/icons/gcp/video-intelligence-api.js +15 -1
  1116. package/icons/gcp/virtual-private-cloud.js +25 -1
  1117. package/icons/gcp/visual-inspection.js +24 -1
  1118. package/icons/gcp/vmware-engine.js +13 -1
  1119. package/icons/gcp/web-risk.js +55 -1
  1120. package/icons/gcp/web-security-scanner.js +27 -1
  1121. package/icons/gcp/workflows.js +82 -1
  1122. package/icons/gcp/workload-identity-pool.js +24 -1
  1123. package/icons/tech/aarch64.js +48 -1
  1124. package/icons/tech/adobe-illustrator.js +14 -1
  1125. package/icons/tech/adobe-photoshop.js +14 -1
  1126. package/icons/tech/adobe-premiere-pro.js +16 -1
  1127. package/icons/tech/adobe-xd.js +12 -1
  1128. package/icons/tech/adonis-js.js +14 -1
  1129. package/icons/tech/after-effects.js +16 -1
  1130. package/icons/tech/airflow.js +64 -1
  1131. package/icons/tech/akka.js +21 -1
  1132. package/icons/tech/algolia.js +12 -1
  1133. package/icons/tech/alpine-js.js +17 -1
  1134. package/icons/tech/amazon-web-services.js +21 -1
  1135. package/icons/tech/anaconda.js +12 -1
  1136. package/icons/tech/android-studio.js +44 -1
  1137. package/icons/tech/android.js +35 -1
  1138. package/icons/tech/angular-js.js +24 -1
  1139. package/icons/tech/angular.js +37 -1
  1140. package/icons/tech/ansible.js +15 -1
  1141. package/icons/tech/ant-design.js +112 -1
  1142. package/icons/tech/apache.js +222 -1
  1143. package/icons/tech/apl.js +21 -1
  1144. package/icons/tech/appcelerator.js +12 -1
  1145. package/icons/tech/apple-safari.js +39 -1
  1146. package/icons/tech/apple.js +6 -1
  1147. package/icons/tech/appwrite.js +21 -1
  1148. package/icons/tech/arch-linux.js +29 -1
  1149. package/icons/tech/arduino.js +9 -1
  1150. package/icons/tech/argo-cd.js +134 -1
  1151. package/icons/tech/astro.js +62 -1
  1152. package/icons/tech/atom.js +14 -1
  1153. package/icons/tech/autodesk-maya.js +144 -1
  1154. package/icons/tech/autodesk-shot-grid.js +15 -1
  1155. package/icons/tech/awk.js +34 -1
  1156. package/icons/tech/azios.js +12 -1
  1157. package/icons/tech/azure-devops.js +33 -1
  1158. package/icons/tech/azure-sql-database.js +95 -1
  1159. package/icons/tech/azure.js +55 -1
  1160. package/icons/tech/babel.js +15 -1
  1161. package/icons/tech/backbone-js.js +16 -1
  1162. package/icons/tech/ballerina.js +12 -1
  1163. package/icons/tech/bamboo.js +62 -1
  1164. package/icons/tech/bash.js +22 -1
  1165. package/icons/tech/behance.js +19 -1
  1166. package/icons/tech/bitbucket.js +37 -1
  1167. package/icons/tech/blender.js +21 -1
  1168. package/icons/tech/bootstrap.js +78 -1
  1169. package/icons/tech/bower.js +123 -1
  1170. package/icons/tech/browserstack.js +77 -1
  1171. package/icons/tech/bulma.js +6 -1
  1172. package/icons/tech/bun.js +68 -1
  1173. package/icons/tech/c.js +28 -1
  1174. package/icons/tech/cairo-graphics.js +21 -1
  1175. package/icons/tech/cake-php.js +12 -1
  1176. package/icons/tech/canva.js +9 -1
  1177. package/icons/tech/capacitor.js +25 -1
  1178. package/icons/tech/cassandra.js +101 -1
  1179. package/icons/tech/cent-os.js +22 -1
  1180. package/icons/tech/chrome.js +156 -1
  1181. package/icons/tech/circle-ci.js +12 -1
  1182. package/icons/tech/clarity.js +35 -1
  1183. package/icons/tech/clion.js +98 -1
  1184. package/icons/tech/clojure-script.js +39 -1
  1185. package/icons/tech/clojure.js +42 -1
  1186. package/icons/tech/cloudflare-workers.js +196 -1
  1187. package/icons/tech/cloudflare.js +22 -1
  1188. package/icons/tech/cmake.js +11 -1
  1189. package/icons/tech/code-igniter.js +12 -1
  1190. package/icons/tech/code-pen.js +12 -1
  1191. package/icons/tech/codeac.js +12 -1
  1192. package/icons/tech/codecov.js +12 -1
  1193. package/icons/tech/coffee-script.js +12 -1
  1194. package/icons/tech/composer.js +59 -1
  1195. package/icons/tech/confluence.js +57 -1
  1196. package/icons/tech/consul.js +12 -1
  1197. package/icons/tech/contao.js +15 -1
  1198. package/icons/tech/corejs.js +6 -1
  1199. package/icons/tech/cosmosdb.js +52 -1
  1200. package/icons/tech/couchdb.js +12 -1
  1201. package/icons/tech/cplusplus.js +35 -1
  1202. package/icons/tech/crystal.js +12 -1
  1203. package/icons/tech/csharp.js +28 -1
  1204. package/icons/tech/css3.js +25 -1
  1205. package/icons/tech/cucumber.js +12 -1
  1206. package/icons/tech/cypress.js +34 -1
  1207. package/icons/tech/d3js.js +145 -1
  1208. package/icons/tech/dart.js +24 -1
  1209. package/icons/tech/data-grip.js +109 -1
  1210. package/icons/tech/data-spell.js +102 -1
  1211. package/icons/tech/dbeaver.js +56 -1
  1212. package/icons/tech/debian.js +12 -1
  1213. package/icons/tech/deno.js +6 -1
  1214. package/icons/tech/devicon.js +25 -1
  1215. package/icons/tech/digital-ocean.js +9 -1
  1216. package/icons/tech/discord-js.js +56 -1
  1217. package/icons/tech/django-rest.js +35 -1
  1218. package/icons/tech/django.js +9 -1
  1219. package/icons/tech/docker.js +133 -1
  1220. package/icons/tech/doctrine.js +21 -1
  1221. package/icons/tech/dropwizard.js +70 -1
  1222. package/icons/tech/drupal.js +56 -1
  1223. package/icons/tech/eclipse-ceylon.js +44 -1
  1224. package/icons/tech/eclipse-ide.js +99 -1
  1225. package/icons/tech/eclipse-vert-x.js +29 -1
  1226. package/icons/tech/elasticbeats.js +22 -1
  1227. package/icons/tech/elasticsearch.js +28 -1
  1228. package/icons/tech/electron.js +11 -1
  1229. package/icons/tech/eleventy-11ty.js +15 -1
  1230. package/icons/tech/elixir.js +211 -1
  1231. package/icons/tech/elm.js +19 -1
  1232. package/icons/tech/embedded-c.js +42 -1
  1233. package/icons/tech/ember-js.js +16 -1
  1234. package/icons/tech/envoy.js +28 -1
  1235. package/icons/tech/erlang.js +12 -1
  1236. package/icons/tech/eslint.js +21 -1
  1237. package/icons/tech/express.js +6 -1
  1238. package/icons/tech/facebook.js +15 -1
  1239. package/icons/tech/fast-api.js +12 -1
  1240. package/icons/tech/fastify.js +15 -1
  1241. package/icons/tech/fauna.js +12 -1
  1242. package/icons/tech/feathers.js +6 -1
  1243. package/icons/tech/fedora.js +53 -1
  1244. package/icons/tech/figma.js +24 -1
  1245. package/icons/tech/file-zilla.js +29 -1
  1246. package/icons/tech/firebase.js +12 -1
  1247. package/icons/tech/firefox.js +1405 -1
  1248. package/icons/tech/flask.js +12 -1
  1249. package/icons/tech/flutter.js +16 -1
  1250. package/icons/tech/fortran.js +15 -1
  1251. package/icons/tech/foundation.js +240 -1
  1252. package/icons/tech/fsharp.js +10 -1
  1253. package/icons/tech/gatling.js +12 -1
  1254. package/icons/tech/gatsby.js +12 -1
  1255. package/icons/tech/gazebo.js +23 -1
  1256. package/icons/tech/gcc.js +44 -1
  1257. package/icons/tech/gentoo.js +14 -1
  1258. package/icons/tech/ghost.js +27 -1
  1259. package/icons/tech/gimp.js +382 -1
  1260. package/icons/tech/git.js +12 -1
  1261. package/icons/tech/gitbook.js +13 -1
  1262. package/icons/tech/github-actions.js +21 -1
  1263. package/icons/tech/github-codespaces.js +85 -1
  1264. package/icons/tech/github.js +16 -1
  1265. package/icons/tech/gitlab.js +35 -1
  1266. package/icons/tech/gitpod.js +32 -1
  1267. package/icons/tech/gitter.js +6 -1
  1268. package/icons/tech/gnu-emacs.js +15 -1
  1269. package/icons/tech/go-land.js +88 -1
  1270. package/icons/tech/go.js +294 -1
  1271. package/icons/tech/godot-engine.js +56 -1
  1272. package/icons/tech/google-cloud.js +29 -1
  1273. package/icons/tech/google.js +42 -1
  1274. package/icons/tech/gradle.js +12 -1
  1275. package/icons/tech/grafana.js +30 -1
  1276. package/icons/tech/grails.js +21 -1
  1277. package/icons/tech/graphql.js +15 -1
  1278. package/icons/tech/groovy.js +715 -1
  1279. package/icons/tech/grunt-js.js +260 -1
  1280. package/icons/tech/gulp-js.js +14 -1
  1281. package/icons/tech/hadoop.js +36 -1
  1282. package/icons/tech/handlebars.js +9 -1
  1283. package/icons/tech/hardhat.js +98 -1
  1284. package/icons/tech/harvester.js +10 -1
  1285. package/icons/tech/hashicorp-vault.js +12 -1
  1286. package/icons/tech/haskell.js +10 -1
  1287. package/icons/tech/haxe.js +17 -1
  1288. package/icons/tech/helm.js +12 -1
  1289. package/icons/tech/heroku.js +12 -1
  1290. package/icons/tech/hibernate.js +15 -1
  1291. package/icons/tech/homebrew.js +36 -1
  1292. package/icons/tech/html5.js +23 -1
  1293. package/icons/tech/hugo.js +22 -1
  1294. package/icons/tech/ibm-spss-statistics.js +21 -1
  1295. package/icons/tech/ie10.js +12 -1
  1296. package/icons/tech/ifttt.js +6 -1
  1297. package/icons/tech/influxdb.js +14 -1
  1298. package/icons/tech/inkscape.js +573 -1
  1299. package/icons/tech/insomnia.js +44 -1
  1300. package/icons/tech/intellij-idea.js +92 -1
  1301. package/icons/tech/ionic.js +9 -1
  1302. package/icons/tech/jaeger.js +102 -1
  1303. package/icons/tech/jamstack.js +12 -1
  1304. package/icons/tech/jasmine.js +10 -1
  1305. package/icons/tech/java.js +42 -1
  1306. package/icons/tech/javascript.js +15 -1
  1307. package/icons/tech/jeet.js +163 -1
  1308. package/icons/tech/jekyll.js +232 -1
  1309. package/icons/tech/jenkins.js +126 -1
  1310. package/icons/tech/jest.js +12 -1
  1311. package/icons/tech/jetbrains.js +118 -1
  1312. package/icons/tech/jira-align.js +57 -1
  1313. package/icons/tech/jira.js +62 -1
  1314. package/icons/tech/jquery.js +12 -1
  1315. package/icons/tech/json.js +57 -1
  1316. package/icons/tech/jule.js +12 -1
  1317. package/icons/tech/julia.js +49 -1
  1318. package/icons/tech/junit.js +30 -1
  1319. package/icons/tech/jupyter.js +35 -1
  1320. package/icons/tech/k3os.js +6 -1
  1321. package/icons/tech/k3s.js +12 -1
  1322. package/icons/tech/kafka.js +12 -1
  1323. package/icons/tech/kaggle.js +12 -1
  1324. package/icons/tech/karate.js +15 -1
  1325. package/icons/tech/karma.js +21 -1
  1326. package/icons/tech/keras.js +15 -1
  1327. package/icons/tech/kibana.js +10 -1
  1328. package/icons/tech/knex-js.js +12 -1
  1329. package/icons/tech/knockout.js +13 -1
  1330. package/icons/tech/kotlin.js +25 -1
  1331. package/icons/tech/krakenjs.js +14 -1
  1332. package/icons/tech/ktor.js +48 -1
  1333. package/icons/tech/kubernetes.js +10 -1
  1334. package/icons/tech/labview.js +69 -1
  1335. package/icons/tech/laravel.js +15 -1
  1336. package/icons/tech/latex.js +12 -1
  1337. package/icons/tech/less-js.js +14 -1
  1338. package/icons/tech/linkedin.js +21 -1
  1339. package/icons/tech/linux.js +5267 -1
  1340. package/icons/tech/liquibase.js +12 -1
  1341. package/icons/tech/livewire.js +79 -1
  1342. package/icons/tech/llvm.js +36 -1
  1343. package/icons/tech/logstash.js +10 -1
  1344. package/icons/tech/lua.js +28 -1
  1345. package/icons/tech/lumen.js +12 -1
  1346. package/icons/tech/magento.js +12 -1
  1347. package/icons/tech/markdown.js +44 -1
  1348. package/icons/tech/material-ui.js +11 -1
  1349. package/icons/tech/materialize.js +21 -1
  1350. package/icons/tech/matlab.js +73 -1
  1351. package/icons/tech/matplotlib.js +182 -1
  1352. package/icons/tech/maven.js +620 -1
  1353. package/icons/tech/meteor-js.js +12 -1
  1354. package/icons/tech/microsoft-sql-server.js +6 -1
  1355. package/icons/tech/minitab.js +45 -1
  1356. package/icons/tech/mob-x.js +57 -1
  1357. package/icons/tech/mocha.js +21 -1
  1358. package/icons/tech/modx.js +18 -1
  1359. package/icons/tech/moleculer.js +12 -1
  1360. package/icons/tech/mongodb.js +135 -1
  1361. package/icons/tech/mongoose-js.js +29 -1
  1362. package/icons/tech/moodle.js +145 -1
  1363. package/icons/tech/ms-dos.js +78 -1
  1364. package/icons/tech/mysql.js +12 -1
  1365. package/icons/tech/nano.js +12 -1
  1366. package/icons/tech/nerog.js +136 -1
  1367. package/icons/tech/nestjs.js +12 -1
  1368. package/icons/tech/net-core.js +9 -1
  1369. package/icons/tech/net.js +551 -1
  1370. package/icons/tech/network-x.js +58 -1
  1371. package/icons/tech/new4j.js +21 -1
  1372. package/icons/tech/nextjs.js +6 -1
  1373. package/icons/tech/nginx.js +12 -1
  1374. package/icons/tech/nhibernate.js +21 -1
  1375. package/icons/tech/nim.js +29 -1
  1376. package/icons/tech/nimble.js +84 -1
  1377. package/icons/tech/nix.js +25 -1
  1378. package/icons/tech/nodejs.js +12 -1
  1379. package/icons/tech/nodemon.js +21 -1
  1380. package/icons/tech/nodewebkit.js +42 -1
  1381. package/icons/tech/npm.js +12 -1
  1382. package/icons/tech/nuget.js +12 -1
  1383. package/icons/tech/num-py.js +29 -1
  1384. package/icons/tech/nuxt-js.js +28 -1
  1385. package/icons/tech/objective-c.js +9 -1
  1386. package/icons/tech/ocaml.js +96 -1
  1387. package/icons/tech/oh-my-zsh.js +38 -1
  1388. package/icons/tech/okta.js +21 -1
  1389. package/icons/tech/open-al.js +22 -1
  1390. package/icons/tech/open-api.js +139 -1
  1391. package/icons/tech/open-cl.js +42 -1
  1392. package/icons/tech/open-cv.js +28 -1
  1393. package/icons/tech/open-gl.js +35 -1
  1394. package/icons/tech/open-stack.js +12 -1
  1395. package/icons/tech/open-suse.js +15 -1
  1396. package/icons/tech/open-telemetry.js +21 -1
  1397. package/icons/tech/opera.js +32 -1
  1398. package/icons/tech/oracle.js +12 -1
  1399. package/icons/tech/p5js.js +12 -1
  1400. package/icons/tech/packer.js +15 -1
  1401. package/icons/tech/pandas.js +62 -1
  1402. package/icons/tech/perl.js +21 -1
  1403. package/icons/tech/pf-sense.js +6 -1
  1404. package/icons/tech/phalcon.js +32 -1
  1405. package/icons/tech/phoenix-framework.js +12 -1
  1406. package/icons/tech/photon-engine.js +41 -1
  1407. package/icons/tech/php-storm.js +105 -1
  1408. package/icons/tech/php.js +62 -1
  1409. package/icons/tech/playwrite.js +56 -1
  1410. package/icons/tech/ploty.js +28 -1
  1411. package/icons/tech/podman.js +150 -1
  1412. package/icons/tech/polygon.js +15 -1
  1413. package/icons/tech/portainer.js +12 -1
  1414. package/icons/tech/postcss.js +28 -1
  1415. package/icons/tech/postgresql.js +23 -1
  1416. package/icons/tech/postman.js +28 -1
  1417. package/icons/tech/powershell.js +79 -1
  1418. package/icons/tech/processing.js +201 -1
  1419. package/icons/tech/prometheus.js +12 -1
  1420. package/icons/tech/protractor.js +12 -1
  1421. package/icons/tech/purescript.js +16 -1
  1422. package/icons/tech/putty.js +56 -1
  1423. package/icons/tech/pycharm.js +81 -1
  1424. package/icons/tech/pyscript.js +15 -1
  1425. package/icons/tech/pytest.js +21 -1
  1426. package/icons/tech/python-poetry.js +155 -1
  1427. package/icons/tech/python.js +78 -1
  1428. package/icons/tech/pytorch.js +15 -1
  1429. package/icons/tech/qodana.js +52 -1
  1430. package/icons/tech/qt.js +12 -1
  1431. package/icons/tech/quarkus.js +23 -1
  1432. package/icons/tech/quasar.js +15 -1
  1433. package/icons/tech/qwik.js +37 -1
  1434. package/icons/tech/r.js +57 -1
  1435. package/icons/tech/rabbitmq.js +12 -1
  1436. package/icons/tech/rancher.js +6 -1
  1437. package/icons/tech/raspberrypi.js +28 -1
  1438. package/icons/tech/reach.js +27 -1
  1439. package/icons/tech/react-bootstrap.js +12 -1
  1440. package/icons/tech/react.js +9 -1
  1441. package/icons/tech/realm.js +63 -1
  1442. package/icons/tech/red-cube-s-epic-compiler-thingy-programming-re-ct.js +17 -1
  1443. package/icons/tech/redhat.js +22 -1
  1444. package/icons/tech/redis.js +59 -1
  1445. package/icons/tech/redux.js +12 -1
  1446. package/icons/tech/ren-py.js +547 -1
  1447. package/icons/tech/rider.js +38 -1
  1448. package/icons/tech/robot-operating-system-ros.js +15 -1
  1449. package/icons/tech/rocksdb.js +9 -1
  1450. package/icons/tech/rollup-js.js +155 -1
  1451. package/icons/tech/rspec.js +35 -1
  1452. package/icons/tech/rstudio.js +30 -1
  1453. package/icons/tech/ruby-mine.js +52 -1
  1454. package/icons/tech/ruby-on-rails.js +14 -1
  1455. package/icons/tech/ruby.js +359 -1
  1456. package/icons/tech/rust.js +6 -1
  1457. package/icons/tech/salesforce.js +28 -1
  1458. package/icons/tech/sanity.js +22 -1
  1459. package/icons/tech/sass.js +14 -1
  1460. package/icons/tech/scala.js +21 -1
  1461. package/icons/tech/scalingo.js +29 -1
  1462. package/icons/tech/sdl.js +42 -1
  1463. package/icons/tech/selenium.js +15 -1
  1464. package/icons/tech/sema-software.js +15 -1
  1465. package/icons/tech/sequelize.js +34 -1
  1466. package/icons/tech/shopware.js +9 -1
  1467. package/icons/tech/sketch.js +14 -1
  1468. package/icons/tech/slack.js +35 -1
  1469. package/icons/tech/socket-io.js +45 -1
  1470. package/icons/tech/solid-js.js +121 -1
  1471. package/icons/tech/solidity.js +13 -1
  1472. package/icons/tech/sonarqube.js +12 -1
  1473. package/icons/tech/sourcetree.js +12 -1
  1474. package/icons/tech/spark.js +12 -1
  1475. package/icons/tech/splunk.js +12 -1
  1476. package/icons/tech/spring.js +12 -1
  1477. package/icons/tech/sql-developer.js +43 -1
  1478. package/icons/tech/sqlalchemy.js +21 -1
  1479. package/icons/tech/sqlite.js +45 -1
  1480. package/icons/tech/ssh.js +12 -1
  1481. package/icons/tech/stackoverflow.js +15 -1
  1482. package/icons/tech/stata.js +12 -1
  1483. package/icons/tech/storybook.js +12 -1
  1484. package/icons/tech/streamlit.js +31 -1
  1485. package/icons/tech/stylus.js +9 -1
  1486. package/icons/tech/subversion.js +12 -1
  1487. package/icons/tech/svelte.js +23 -1
  1488. package/icons/tech/swagger.js +21 -1
  1489. package/icons/tech/swift.js +21 -1
  1490. package/icons/tech/symfony.js +12 -1
  1491. package/icons/tech/tailwind-css.js +12 -1
  1492. package/icons/tech/tauri.js +35 -1
  1493. package/icons/tech/tensorflow.js +12 -1
  1494. package/icons/tech/terraform.js +16 -1
  1495. package/icons/tech/tex.js +6 -1
  1496. package/icons/tech/the-algorithms.js +12 -1
  1497. package/icons/tech/three-js.js +139 -1
  1498. package/icons/tech/titanium-sdk.js +12 -1
  1499. package/icons/tech/tomcat.js +26 -1
  1500. package/icons/tech/tortoise-git.js +37 -1
  1501. package/icons/tech/tower.js +369 -1
  1502. package/icons/tech/traefik-mesh.js +12 -1
  1503. package/icons/tech/traefik-proxy.js +12 -1
  1504. package/icons/tech/travis-ci.js +12 -1
  1505. package/icons/tech/trello.js +12 -1
  1506. package/icons/tech/twitter.js +12 -1
  1507. package/icons/tech/typescript.js +16 -1
  1508. package/icons/tech/typo3.js +12 -1
  1509. package/icons/tech/ubuntu.js +12 -1
  1510. package/icons/tech/uml.js +29 -1
  1511. package/icons/tech/unity.js +22 -1
  1512. package/icons/tech/unix.js +12 -1
  1513. package/icons/tech/unreal-engine.js +9 -1
  1514. package/icons/tech/uwsgi.js +38 -1
  1515. package/icons/tech/v8.js +109 -1
  1516. package/icons/tech/vagrant.js +21 -1
  1517. package/icons/tech/vala.js +57 -1
  1518. package/icons/tech/vercel.js +6 -1
  1519. package/icons/tech/veutify.js +11 -1
  1520. package/icons/tech/vim.js +82 -1
  1521. package/icons/tech/visualstudio.js +12 -1
  1522. package/icons/tech/vite.js +6 -1
  1523. package/icons/tech/vitejs.js +56 -1
  1524. package/icons/tech/vscode.js +114 -1
  1525. package/icons/tech/vsphere.js +25 -1
  1526. package/icons/tech/vue-storefront.js +22 -1
  1527. package/icons/tech/vue.js +16 -1
  1528. package/icons/tech/vyper.js +17 -1
  1529. package/icons/tech/webassembly.js +12 -1
  1530. package/icons/tech/webflow.js +12 -1
  1531. package/icons/tech/weblate.js +80 -1
  1532. package/icons/tech/webpack.js +21 -1
  1533. package/icons/tech/webstorm.js +80 -1
  1534. package/icons/tech/windows11.js +12 -1
  1535. package/icons/tech/windows8.js +12 -1
  1536. package/icons/tech/woo-commerce.js +22 -1
  1537. package/icons/tech/wordpress.js +70 -1
  1538. package/icons/tech/xamarin.js +12 -1
  1539. package/icons/tech/xcode.js +623 -1
  1540. package/icons/tech/xml.js +51 -1
  1541. package/icons/tech/yaml.js +16 -1
  1542. package/icons/tech/yarn.js +9 -1
  1543. package/icons/tech/yii-framework.js +35 -1
  1544. package/icons/tech/yuno-host.js +15 -1
  1545. package/icons/tech/zend-framework.js +14 -1
  1546. package/icons/tech/zig.js +28 -1
  1547. package/package.json +42 -38
  1548. package/react/index.d.mts +704 -308
  1549. package/react/index.mjs +25 -25
  1550. package/dist/shared/likec4.CY1x3B5z.mjs +0 -2199
@@ -5945,7 +5945,7 @@ const defaultProps$1y = {
5945
5945
  {
5946
5946
  ...getStyles2("scrollbar"),
5947
5947
  orientation: "horizontal",
5948
- "data-hidden": type === "never" || !horizontalThumbVisible || void 0,
5948
+ "data-hidden": type === "never" || offsetScrollbars === "present" && !horizontalThumbVisible ? !0 : void 0,
5949
5949
  forceMount: !0,
5950
5950
  onMouseEnter: () => setScrollbarHovered(!0),
5951
5951
  onMouseLeave: () => setScrollbarHovered(!1),
@@ -5957,7 +5957,7 @@ const defaultProps$1y = {
5957
5957
  {
5958
5958
  ...getStyles2("scrollbar"),
5959
5959
  orientation: "vertical",
5960
- "data-hidden": type === "never" || !verticalThumbVisible || void 0,
5960
+ "data-hidden": type === "never" || offsetScrollbars === "present" && !verticalThumbVisible ? !0 : void 0,
5961
5961
  forceMount: !0,
5962
5962
  onMouseEnter: () => setScrollbarHovered(!0),
5963
5963
  onMouseLeave: () => setScrollbarHovered(!1),
@@ -10433,6 +10433,14 @@ var commonjsGlobal = typeof globalThis < "u" ? globalThis : typeof window < "u"
10433
10433
  function getDefaultExportFromCjs(x2) {
10434
10434
  return x2 && x2.__esModule && Object.prototype.hasOwnProperty.call(x2, "default") ? x2.default : x2;
10435
10435
  }
10436
+ var useIsomorphicLayoutEffect_cjs = {}, hasRequiredUseIsomorphicLayoutEffect_cjs;
10437
+ function requireUseIsomorphicLayoutEffect_cjs() {
10438
+ return hasRequiredUseIsomorphicLayoutEffect_cjs || (hasRequiredUseIsomorphicLayoutEffect_cjs = 1, function(exports) {
10439
+ Object.defineProperty(exports, "__esModule", { value: !0 });
10440
+ var react = React__default, isClient = typeof document < "u", index2 = isClient ? react.useLayoutEffect : react.useEffect;
10441
+ exports.default = index2;
10442
+ }(useIsomorphicLayoutEffect_cjs)), useIsomorphicLayoutEffect_cjs;
10443
+ }
10436
10444
  var classes$f = { root: "m_6e45937b", loader: "m_e8eb006c", overlay: "m_df587f17" };
10437
10445
  const defaultProps$u = {
10438
10446
  transitionProps: { transition: "fade", duration: 0 },
@@ -11705,7 +11713,7 @@ const defaultProps$c = {
11705
11713
  });
11706
11714
  useEffect(() => {
11707
11715
  selectFirstOptionOnChange && combobox.selectFirstOption();
11708
- }, [selectFirstOptionOnChange, _value]), useEffect(() => {
11716
+ }, [selectFirstOptionOnChange, search]), useEffect(() => {
11709
11717
  value === null && handleSearchChange(""), typeof value == "string" && selectedOption && (previousSelectedOption?.value !== selectedOption.value || previousSelectedOption?.label !== selectedOption.label) && handleSearchChange(selectedOption.label);
11710
11718
  }, [value, selectedOption]);
11711
11719
  const clearButton = /* @__PURE__ */ jsx(
@@ -12161,7 +12169,11 @@ const defaultProps$a = {
12161
12169
  defaultValue: typeof defaultValue == "number" ? clamp$4(defaultValue, min2, max2) : defaultValue,
12162
12170
  finalValue: clamp$4(0, min2, max2),
12163
12171
  onChange
12164
- }), valueRef = useRef(_value), root2 = useRef(null), thumb = useRef(null), position = getPosition({ value: _value, min: min2, max: max2 }), scaledValue = scale2(_value), _label = typeof label2 == "function" ? label2(scaledValue) : label2, precision = _precision ?? getPrecision(step), handleChange = useCallback(
12172
+ }), valueRef = useRef(_value), onChangeEndRef = useRef(onChangeEnd);
12173
+ useEffect(() => {
12174
+ onChangeEndRef.current = onChangeEnd;
12175
+ }, [onChangeEnd]);
12176
+ const root2 = useRef(null), thumb = useRef(null), position = getPosition({ value: _value, min: min2, max: max2 }), scaledValue = scale2(_value), _label = typeof label2 == "function" ? label2(scaledValue) : label2, precision = _precision ?? getPrecision(step), handleChange = useCallback(
12165
12177
  ({ x: x2 }) => {
12166
12178
  if (!disabled) {
12167
12179
  const nextValue = getChangeValue({
@@ -12180,86 +12192,88 @@ const defaultProps$a = {
12180
12192
  }
12181
12193
  },
12182
12194
  [disabled, min2, max2, step, precision, setValue, marks, restrictToMarks]
12183
- ), { ref: container2, active } = useMove(
12184
- handleChange,
12185
- {
12186
- onScrubEnd: () => !disabled && onChangeEnd?.(
12187
- restrictToMarks && marks?.length ? findClosestNumber(
12188
- valueRef.current,
12189
- marks.map((mark) => mark.value)
12190
- ) : valueRef.current
12191
- )
12192
- },
12193
- dir
12195
+ ), handleScrubEnd = useCallback(() => {
12196
+ if (!disabled && onChangeEndRef.current) {
12197
+ const finalValue = restrictToMarks && marks?.length ? findClosestNumber(
12198
+ valueRef.current,
12199
+ marks.map((mark) => mark.value)
12200
+ ) : valueRef.current;
12201
+ onChangeEndRef.current(finalValue);
12202
+ }
12203
+ }, [disabled, marks, restrictToMarks]), { ref: container2, active } = useMove(handleChange, { onScrubEnd: handleScrubEnd }, dir), callOnChangeEnd = useCallback(
12204
+ (value2) => {
12205
+ !disabled && onChangeEndRef.current && onChangeEndRef.current(value2);
12206
+ },
12207
+ [disabled]
12194
12208
  ), handleTrackKeydownCapture = (event) => {
12195
12209
  if (!disabled)
12196
12210
  switch (event.key) {
12197
12211
  case "ArrowUp": {
12198
12212
  if (event.preventDefault(), thumb.current?.focus(), restrictToMarks && marks) {
12199
12213
  const nextValue2 = getNextMarkValue(_value, marks);
12200
- setValue(nextValue2), onChangeEnd?.(nextValue2);
12214
+ setValue(nextValue2), callOnChangeEnd(nextValue2);
12201
12215
  break;
12202
12216
  }
12203
12217
  const nextValue = getFloatingValue(
12204
12218
  Math.min(Math.max(_value + step, min2), max2),
12205
12219
  precision
12206
12220
  );
12207
- setValue(nextValue), onChangeEnd?.(nextValue);
12221
+ setValue(nextValue), callOnChangeEnd(nextValue);
12208
12222
  break;
12209
12223
  }
12210
12224
  case "ArrowRight": {
12211
12225
  if (event.preventDefault(), thumb.current?.focus(), restrictToMarks && marks) {
12212
12226
  const nextValue2 = dir === "rtl" ? getPreviousMarkValue(_value, marks) : getNextMarkValue(_value, marks);
12213
- setValue(nextValue2), onChangeEnd?.(nextValue2);
12227
+ setValue(nextValue2), callOnChangeEnd(nextValue2);
12214
12228
  break;
12215
12229
  }
12216
12230
  const nextValue = getFloatingValue(
12217
12231
  Math.min(Math.max(dir === "rtl" ? _value - step : _value + step, min2), max2),
12218
12232
  precision
12219
12233
  );
12220
- setValue(nextValue), onChangeEnd?.(nextValue);
12234
+ setValue(nextValue), callOnChangeEnd(nextValue);
12221
12235
  break;
12222
12236
  }
12223
12237
  case "ArrowDown": {
12224
12238
  if (event.preventDefault(), thumb.current?.focus(), restrictToMarks && marks) {
12225
12239
  const nextValue2 = getPreviousMarkValue(_value, marks);
12226
- setValue(nextValue2), onChangeEnd?.(nextValue2);
12240
+ setValue(nextValue2), callOnChangeEnd(nextValue2);
12227
12241
  break;
12228
12242
  }
12229
12243
  const nextValue = getFloatingValue(
12230
12244
  Math.min(Math.max(_value - step, min2), max2),
12231
12245
  precision
12232
12246
  );
12233
- setValue(nextValue), onChangeEnd?.(nextValue);
12247
+ setValue(nextValue), callOnChangeEnd(nextValue);
12234
12248
  break;
12235
12249
  }
12236
12250
  case "ArrowLeft": {
12237
12251
  if (event.preventDefault(), thumb.current?.focus(), restrictToMarks && marks) {
12238
12252
  const nextValue2 = dir === "rtl" ? getNextMarkValue(_value, marks) : getPreviousMarkValue(_value, marks);
12239
- setValue(nextValue2), onChangeEnd?.(nextValue2);
12253
+ setValue(nextValue2), callOnChangeEnd(nextValue2);
12240
12254
  break;
12241
12255
  }
12242
12256
  const nextValue = getFloatingValue(
12243
12257
  Math.min(Math.max(dir === "rtl" ? _value + step : _value - step, min2), max2),
12244
12258
  precision
12245
12259
  );
12246
- setValue(nextValue), onChangeEnd?.(nextValue);
12260
+ setValue(nextValue), callOnChangeEnd(nextValue);
12247
12261
  break;
12248
12262
  }
12249
12263
  case "Home": {
12250
12264
  if (event.preventDefault(), thumb.current?.focus(), restrictToMarks && marks) {
12251
- setValue(getFirstMarkValue(marks)), onChangeEnd?.(getFirstMarkValue(marks));
12265
+ setValue(getFirstMarkValue(marks)), callOnChangeEnd(getFirstMarkValue(marks));
12252
12266
  break;
12253
12267
  }
12254
- setValue(min2), onChangeEnd?.(min2);
12268
+ setValue(min2), callOnChangeEnd(min2);
12255
12269
  break;
12256
12270
  }
12257
12271
  case "End": {
12258
12272
  if (event.preventDefault(), thumb.current?.focus(), restrictToMarks && marks) {
12259
- setValue(getLastMarkValue(marks)), onChangeEnd?.(getLastMarkValue(marks));
12273
+ setValue(getLastMarkValue(marks)), callOnChangeEnd(getLastMarkValue(marks));
12260
12274
  break;
12261
12275
  }
12262
- setValue(max2), onChangeEnd?.(max2);
12276
+ setValue(max2), callOnChangeEnd(max2);
12263
12277
  break;
12264
12278
  }
12265
12279
  }
@@ -12969,7 +12983,7 @@ function useTree({
12969
12983
  onNodeCollapse,
12970
12984
  onNodeExpand
12971
12985
  } = {}) {
12972
- const [data, setData] = useState([]), [expandedState, setExpandedState] = useState(initialExpandedState), [selectedState, setSelectedState] = useState(initialSelectedState), [checkedState, setCheckedState] = useState(initialCheckedState), [anchorNode, setAnchorNode] = useState(null), [hoveredNode, setHoveredNode] = useState(null), initialize = useCallback(
12986
+ const [data, setData] = useState([]), [expandedState, setExpandedState] = useState(initialExpandedState), [selectedState, setSelectedState] = useState(initialSelectedState), [checkedState, setCheckedState] = useState(initialCheckedState), [anchorNode, setAnchorNode] = useState(null), [hoveredNode, setHoveredNode2] = useState(null), initialize = useCallback(
12973
12987
  (_data) => {
12974
12988
  setExpandedState((current) => getInitialTreeExpandedState(current, _data, selectedState)), setCheckedState((current) => getInitialCheckedState(current, _data)), setData(_data);
12975
12989
  },
@@ -13058,7 +13072,7 @@ function useTree({
13058
13072
  clearSelected,
13059
13073
  setSelectedState,
13060
13074
  hoveredNode,
13061
- setHoveredNode,
13075
+ setHoveredNode: setHoveredNode2,
13062
13076
  getCheckedNodes: () => getAllCheckedNodes(data, checkedState).result,
13063
13077
  isNodeChecked: (value) => memoizedIsNodeChecked(value, data, checkedState),
13064
13078
  isNodeIndeterminate: (value) => memoizedIsNodeIndeterminate(value, data, checkedState)
@@ -17001,201 +17015,11 @@ const AnimatePresence = ({ children: children2, custom: custom5, initial = !0, o
17001
17015
  return jsx(PresenceChild, { isPresent, initial: !isInitialRender.current || initial ? void 0 : !1, custom: custom5, presenceAffectsLayout, mode, onExitComplete: isPresent ? void 0 : onExit, anchorX, children: child }, key2);
17002
17016
  }) });
17003
17017
  }, DeprecatedLayoutGroupContext = createContext(null);
17004
- function addUniqueItem(arr, item) {
17005
- arr.indexOf(item) === -1 && arr.push(item);
17006
- }
17007
- function removeItem(arr, item) {
17008
- const index2 = arr.indexOf(item);
17009
- index2 > -1 && arr.splice(index2, 1);
17010
- }
17011
- const noop$3 = /* @__NO_SIDE_EFFECTS__ */ (any) => any;
17012
- let invariant = noop$3;
17013
- const MotionGlobalConfig = {
17014
- useManualTiming: !1
17015
- };
17016
- // @__NO_SIDE_EFFECTS__
17017
- function memo(callback) {
17018
- let result;
17019
- return () => (result === void 0 && (result = callback()), result);
17020
- }
17021
- const progress = /* @__NO_SIDE_EFFECTS__ */ (from, to, value) => {
17022
- const toFromDifference = to - from;
17023
- return toFromDifference === 0 ? 1 : (value - from) / toFromDifference;
17024
- };
17025
- class SubscriptionManager {
17026
- constructor() {
17027
- this.subscriptions = [];
17028
- }
17029
- add(handler) {
17030
- return addUniqueItem(this.subscriptions, handler), () => removeItem(this.subscriptions, handler);
17031
- }
17032
- notify(a2, b2, c2) {
17033
- const numSubscriptions = this.subscriptions.length;
17034
- if (numSubscriptions)
17035
- if (numSubscriptions === 1)
17036
- this.subscriptions[0](a2, b2, c2);
17037
- else
17038
- for (let i2 = 0; i2 < numSubscriptions; i2++) {
17039
- const handler = this.subscriptions[i2];
17040
- handler && handler(a2, b2, c2);
17041
- }
17042
- }
17043
- getSize() {
17044
- return this.subscriptions.length;
17045
- }
17046
- clear() {
17047
- this.subscriptions.length = 0;
17048
- }
17049
- }
17050
- const secondsToMilliseconds = /* @__NO_SIDE_EFFECTS__ */ (seconds) => seconds * 1e3, millisecondsToSeconds = /* @__NO_SIDE_EFFECTS__ */ (milliseconds) => milliseconds / 1e3;
17051
- function velocityPerSecond(velocity, frameDuration) {
17052
- return frameDuration ? velocity * (1e3 / frameDuration) : 0;
17053
- }
17054
- const supportsScrollTimeline = /* @__PURE__ */ memo(() => window.ScrollTimeline !== void 0);
17055
- class BaseGroupPlaybackControls {
17056
- constructor(animations2) {
17057
- this.stop = () => this.runAll("stop"), this.animations = animations2.filter(Boolean);
17058
- }
17059
- get finished() {
17060
- return Promise.all(this.animations.map((animation) => "finished" in animation ? animation.finished : animation));
17061
- }
17062
- /**
17063
- * TODO: Filter out cancelled or stopped animations before returning
17064
- */
17065
- getAll(propName) {
17066
- return this.animations[0][propName];
17067
- }
17068
- setAll(propName, newValue) {
17069
- for (let i2 = 0; i2 < this.animations.length; i2++)
17070
- this.animations[i2][propName] = newValue;
17071
- }
17072
- attachTimeline(timeline, fallback) {
17073
- const subscriptions = this.animations.map((animation) => {
17074
- if (supportsScrollTimeline() && animation.attachTimeline)
17075
- return animation.attachTimeline(timeline);
17076
- if (typeof fallback == "function")
17077
- return fallback(animation);
17078
- });
17079
- return () => {
17080
- subscriptions.forEach((cancel, i2) => {
17081
- cancel && cancel(), this.animations[i2].stop();
17082
- });
17083
- };
17084
- }
17085
- get time() {
17086
- return this.getAll("time");
17087
- }
17088
- set time(time2) {
17089
- this.setAll("time", time2);
17090
- }
17091
- get speed() {
17092
- return this.getAll("speed");
17093
- }
17094
- set speed(speed) {
17095
- this.setAll("speed", speed);
17096
- }
17097
- get startTime() {
17098
- return this.getAll("startTime");
17099
- }
17100
- get duration() {
17101
- let max2 = 0;
17102
- for (let i2 = 0; i2 < this.animations.length; i2++)
17103
- max2 = Math.max(max2, this.animations[i2].duration);
17104
- return max2;
17105
- }
17106
- runAll(methodName) {
17107
- this.animations.forEach((controls) => controls[methodName]());
17108
- }
17109
- flatten() {
17110
- this.runAll("flatten");
17111
- }
17112
- play() {
17113
- this.runAll("play");
17114
- }
17115
- pause() {
17116
- this.runAll("pause");
17117
- }
17118
- cancel() {
17119
- this.runAll("cancel");
17120
- }
17121
- complete() {
17122
- this.runAll("complete");
17123
- }
17124
- }
17125
- class GroupPlaybackControls extends BaseGroupPlaybackControls {
17126
- then(onResolve, onReject) {
17127
- return Promise.all(this.animations).then(onResolve).catch(onReject);
17128
- }
17129
- }
17130
- function getValueTransition$1(transition, key2) {
17131
- return transition ? transition[key2] || transition.default || transition : void 0;
17132
- }
17133
- const maxGeneratorDuration = 2e4;
17134
- function calcGeneratorDuration(generator) {
17135
- let duration = 0;
17136
- const timeStep = 50;
17137
- let state = generator.next(duration);
17138
- for (; !state.done && duration < maxGeneratorDuration; )
17139
- duration += timeStep, state = generator.next(duration);
17140
- return duration >= maxGeneratorDuration ? 1 / 0 : duration;
17141
- }
17142
- function createGeneratorEasing(options, scale2 = 100, createGenerator) {
17143
- const generator = createGenerator({ ...options, keyframes: [0, scale2] }), duration = Math.min(calcGeneratorDuration(generator), maxGeneratorDuration);
17144
- return {
17145
- type: "keyframes",
17146
- ease: (progress2) => generator.next(duration * progress2).value / scale2,
17147
- duration: /* @__PURE__ */ millisecondsToSeconds(duration)
17148
- };
17149
- }
17150
- function isGenerator(type) {
17151
- return typeof type == "function";
17152
- }
17153
- function attachTimeline(animation, timeline) {
17154
- animation.timeline = timeline, animation.onfinish = null;
17155
- }
17156
- const isBezierDefinition = (easing) => Array.isArray(easing) && typeof easing[0] == "number", supportsFlags = {
17157
- linearEasing: void 0
17158
- };
17159
- function memoSupports(callback, supportsFlag) {
17160
- const memoized = /* @__PURE__ */ memo(callback);
17161
- return () => {
17162
- var _a;
17163
- return (_a = supportsFlags[supportsFlag]) !== null && _a !== void 0 ? _a : memoized();
17164
- };
17165
- }
17166
- const supportsLinearEasing = /* @__PURE__ */ memoSupports(() => {
17167
- try {
17168
- document.createElement("div").animate({ opacity: 0 }, { easing: "linear(0, 1)" });
17169
- } catch {
17170
- return !1;
17171
- }
17172
- return !0;
17173
- }, "linearEasing"), generateLinearEasing = (easing, duration, resolution = 10) => {
17174
- let points = "";
17175
- const numPoints = Math.max(Math.round(duration / resolution), 2);
17176
- for (let i2 = 0; i2 < numPoints; i2++)
17177
- points += easing(/* @__PURE__ */ progress(0, numPoints - 1, i2)) + ", ";
17178
- return `linear(${points.substring(0, points.length - 2)})`;
17179
- };
17180
- function isWaapiSupportedEasing(easing) {
17181
- return !!(typeof easing == "function" && supportsLinearEasing() || !easing || typeof easing == "string" && (easing in supportedWaapiEasing || supportsLinearEasing()) || isBezierDefinition(easing) || Array.isArray(easing) && easing.every(isWaapiSupportedEasing));
17182
- }
17183
- const cubicBezierAsString = ([a2, b2, c2, d2]) => `cubic-bezier(${a2}, ${b2}, ${c2}, ${d2})`, supportedWaapiEasing = {
17184
- linear: "linear",
17185
- ease: "ease",
17186
- easeIn: "ease-in",
17187
- easeOut: "ease-out",
17188
- easeInOut: "ease-in-out",
17189
- circIn: /* @__PURE__ */ cubicBezierAsString([0, 0.65, 0.55, 1]),
17190
- circOut: /* @__PURE__ */ cubicBezierAsString([0.55, 0, 1, 0.45]),
17191
- backIn: /* @__PURE__ */ cubicBezierAsString([0.31, 0.01, 0.66, -0.59]),
17192
- backOut: /* @__PURE__ */ cubicBezierAsString([0.33, 1.53, 0.69, 0.99])
17018
+ let invariant = () => {
17193
17019
  };
17194
- function mapEasingToNativeEasing(easing, duration) {
17195
- if (easing)
17196
- return typeof easing == "function" && supportsLinearEasing() ? generateLinearEasing(easing, duration) : isBezierDefinition(easing) ? cubicBezierAsString(easing) : Array.isArray(easing) ? easing.map((segmentEasing) => mapEasingToNativeEasing(segmentEasing, duration) || supportedWaapiEasing.easeOut) : supportedWaapiEasing[easing];
17197
- }
17198
- const stepsOrder = [
17020
+ const noop$3 = /* @__NO_SIDE_EFFECTS__ */ (any) => any, MotionGlobalConfig = {
17021
+ useManualTiming: !1
17022
+ }, stepsOrder = [
17199
17023
  "read",
17200
17024
  // Read
17201
17025
  "resolveKeyframes",
@@ -17268,316 +17092,7 @@ function createRenderBatcher(scheduleNextBatch, allowKeepAlive) {
17268
17092
  steps[stepsOrder[i2]].cancel(process2);
17269
17093
  }, state, steps };
17270
17094
  }
17271
- const { schedule: frame$1, cancel: cancelFrame, state: frameData, steps: frameSteps } = /* @__PURE__ */ createRenderBatcher(typeof requestAnimationFrame < "u" ? requestAnimationFrame : noop$3, !0), { schedule: microtask } = /* @__PURE__ */ createRenderBatcher(queueMicrotask, !1);
17272
- let now$1;
17273
- function clearTime() {
17274
- now$1 = void 0;
17275
- }
17276
- const time = {
17277
- now: () => (now$1 === void 0 && time.set(frameData.isProcessing || MotionGlobalConfig.useManualTiming ? frameData.timestamp : performance.now()), now$1),
17278
- set: (newTime) => {
17279
- now$1 = newTime, queueMicrotask(clearTime);
17280
- }
17281
- }, isDragging = {
17282
- x: !1,
17283
- y: !1
17284
- };
17285
- function isDragActive() {
17286
- return isDragging.x || isDragging.y;
17287
- }
17288
- function setDragLock(axis) {
17289
- return axis === "x" || axis === "y" ? isDragging[axis] ? null : (isDragging[axis] = !0, () => {
17290
- isDragging[axis] = !1;
17291
- }) : isDragging.x || isDragging.y ? null : (isDragging.x = isDragging.y = !0, () => {
17292
- isDragging.x = isDragging.y = !1;
17293
- });
17294
- }
17295
- function resolveElements(elementOrSelector, scope, selectorCache) {
17296
- var _a;
17297
- if (elementOrSelector instanceof EventTarget)
17298
- return [elementOrSelector];
17299
- if (typeof elementOrSelector == "string") {
17300
- let root2 = document;
17301
- const elements = (_a = selectorCache?.[elementOrSelector]) !== null && _a !== void 0 ? _a : root2.querySelectorAll(elementOrSelector);
17302
- return elements ? Array.from(elements) : [];
17303
- }
17304
- return Array.from(elementOrSelector);
17305
- }
17306
- function setupGesture(elementOrSelector, options) {
17307
- const elements = resolveElements(elementOrSelector), gestureAbortController = new AbortController(), eventOptions = {
17308
- passive: !0,
17309
- ...options,
17310
- signal: gestureAbortController.signal
17311
- };
17312
- return [elements, eventOptions, () => gestureAbortController.abort()];
17313
- }
17314
- function isValidHover(event) {
17315
- return !(event.pointerType === "touch" || isDragActive());
17316
- }
17317
- function hover(elementOrSelector, onHoverStart, options = {}) {
17318
- const [elements, eventOptions, cancel] = setupGesture(elementOrSelector, options), onPointerEnter = (enterEvent) => {
17319
- if (!isValidHover(enterEvent))
17320
- return;
17321
- const { target } = enterEvent, onHoverEnd = onHoverStart(target, enterEvent);
17322
- if (typeof onHoverEnd != "function" || !target)
17323
- return;
17324
- const onPointerLeave = (leaveEvent) => {
17325
- isValidHover(leaveEvent) && (onHoverEnd(leaveEvent), target.removeEventListener("pointerleave", onPointerLeave));
17326
- };
17327
- target.addEventListener("pointerleave", onPointerLeave, eventOptions);
17328
- };
17329
- return elements.forEach((element) => {
17330
- element.addEventListener("pointerenter", onPointerEnter, eventOptions);
17331
- }), cancel;
17332
- }
17333
- const isNodeOrChild = (parent, child) => child ? parent === child ? !0 : isNodeOrChild(parent, child.parentElement) : !1, isPrimaryPointer = (event) => event.pointerType === "mouse" ? typeof event.button != "number" || event.button <= 0 : event.isPrimary !== !1, focusableElements = /* @__PURE__ */ new Set([
17334
- "BUTTON",
17335
- "INPUT",
17336
- "SELECT",
17337
- "TEXTAREA",
17338
- "A"
17339
- ]);
17340
- function isElementKeyboardAccessible(element) {
17341
- return focusableElements.has(element.tagName) || element.tabIndex !== -1;
17342
- }
17343
- const isPressing = /* @__PURE__ */ new WeakSet();
17344
- function filterEvents(callback) {
17345
- return (event) => {
17346
- event.key === "Enter" && callback(event);
17347
- };
17348
- }
17349
- function firePointerEvent(target, type) {
17350
- target.dispatchEvent(new PointerEvent("pointer" + type, { isPrimary: !0, bubbles: !0 }));
17351
- }
17352
- const enableKeyboardPress = (focusEvent, eventOptions) => {
17353
- const element = focusEvent.currentTarget;
17354
- if (!element)
17355
- return;
17356
- const handleKeydown = filterEvents(() => {
17357
- if (isPressing.has(element))
17358
- return;
17359
- firePointerEvent(element, "down");
17360
- const handleKeyup = filterEvents(() => {
17361
- firePointerEvent(element, "up");
17362
- }), handleBlur = () => firePointerEvent(element, "cancel");
17363
- element.addEventListener("keyup", handleKeyup, eventOptions), element.addEventListener("blur", handleBlur, eventOptions);
17364
- });
17365
- element.addEventListener("keydown", handleKeydown, eventOptions), element.addEventListener("blur", () => element.removeEventListener("keydown", handleKeydown), eventOptions);
17366
- };
17367
- function isValidPressEvent(event) {
17368
- return isPrimaryPointer(event) && !isDragActive();
17369
- }
17370
- function press(targetOrSelector, onPressStart, options = {}) {
17371
- const [targets, eventOptions, cancelEvents] = setupGesture(targetOrSelector, options), startPress = (startEvent) => {
17372
- const target = startEvent.currentTarget;
17373
- if (!isValidPressEvent(startEvent) || isPressing.has(target))
17374
- return;
17375
- isPressing.add(target);
17376
- const onPressEnd = onPressStart(target, startEvent), onPointerEnd = (endEvent, success) => {
17377
- window.removeEventListener("pointerup", onPointerUp), window.removeEventListener("pointercancel", onPointerCancel), !(!isValidPressEvent(endEvent) || !isPressing.has(target)) && (isPressing.delete(target), typeof onPressEnd == "function" && onPressEnd(endEvent, { success }));
17378
- }, onPointerUp = (upEvent) => {
17379
- onPointerEnd(upEvent, target === window || target === document || options.useGlobalTarget || isNodeOrChild(target, upEvent.target));
17380
- }, onPointerCancel = (cancelEvent) => {
17381
- onPointerEnd(cancelEvent, !1);
17382
- };
17383
- window.addEventListener("pointerup", onPointerUp, eventOptions), window.addEventListener("pointercancel", onPointerCancel, eventOptions);
17384
- };
17385
- return targets.forEach((target) => {
17386
- (options.useGlobalTarget ? window : target).addEventListener("pointerdown", startPress, eventOptions), target instanceof HTMLElement && (target.addEventListener("focus", (event) => enableKeyboardPress(event, eventOptions)), !isElementKeyboardAccessible(target) && target.tabIndex === null && (target.tabIndex = 0));
17387
- }), cancelEvents;
17388
- }
17389
- const MAX_VELOCITY_DELTA = 30, isFloat = (value) => !isNaN(parseFloat(value));
17390
- class MotionValue {
17391
- /**
17392
- * @param init - The initiating value
17393
- * @param config - Optional configuration options
17394
- *
17395
- * - `transformer`: A function to transform incoming values with.
17396
- */
17397
- constructor(init2, options = {}) {
17398
- this.version = "12.6.1", this.canTrackVelocity = null, this.events = {}, this.updateAndNotify = (v, render = !0) => {
17399
- const currentTime = time.now();
17400
- this.updatedAt !== currentTime && this.setPrevFrameValue(), this.prev = this.current, this.setCurrent(v), this.current !== this.prev && this.events.change && this.events.change.notify(this.current), render && this.events.renderRequest && this.events.renderRequest.notify(this.current);
17401
- }, this.hasAnimated = !1, this.setCurrent(init2), this.owner = options.owner;
17402
- }
17403
- setCurrent(current) {
17404
- this.current = current, this.updatedAt = time.now(), this.canTrackVelocity === null && current !== void 0 && (this.canTrackVelocity = isFloat(this.current));
17405
- }
17406
- setPrevFrameValue(prevFrameValue = this.current) {
17407
- this.prevFrameValue = prevFrameValue, this.prevUpdatedAt = this.updatedAt;
17408
- }
17409
- /**
17410
- * Adds a function that will be notified when the `MotionValue` is updated.
17411
- *
17412
- * It returns a function that, when called, will cancel the subscription.
17413
- *
17414
- * When calling `onChange` inside a React component, it should be wrapped with the
17415
- * `useEffect` hook. As it returns an unsubscribe function, this should be returned
17416
- * from the `useEffect` function to ensure you don't add duplicate subscribers..
17417
- *
17418
- * ```jsx
17419
- * export const MyComponent = () => {
17420
- * const x = useMotionValue(0)
17421
- * const y = useMotionValue(0)
17422
- * const opacity = useMotionValue(1)
17423
- *
17424
- * useEffect(() => {
17425
- * function updateOpacity() {
17426
- * const maxXY = Math.max(x.get(), y.get())
17427
- * const newOpacity = transform(maxXY, [0, 100], [1, 0])
17428
- * opacity.set(newOpacity)
17429
- * }
17430
- *
17431
- * const unsubscribeX = x.on("change", updateOpacity)
17432
- * const unsubscribeY = y.on("change", updateOpacity)
17433
- *
17434
- * return () => {
17435
- * unsubscribeX()
17436
- * unsubscribeY()
17437
- * }
17438
- * }, [])
17439
- *
17440
- * return <motion.div style={{ x }} />
17441
- * }
17442
- * ```
17443
- *
17444
- * @param subscriber - A function that receives the latest value.
17445
- * @returns A function that, when called, will cancel this subscription.
17446
- *
17447
- * @deprecated
17448
- */
17449
- onChange(subscription) {
17450
- return this.on("change", subscription);
17451
- }
17452
- on(eventName, callback) {
17453
- this.events[eventName] || (this.events[eventName] = new SubscriptionManager());
17454
- const unsubscribe = this.events[eventName].add(callback);
17455
- return eventName === "change" ? () => {
17456
- unsubscribe(), frame$1.read(() => {
17457
- this.events.change.getSize() || this.stop();
17458
- });
17459
- } : unsubscribe;
17460
- }
17461
- clearListeners() {
17462
- for (const eventManagers in this.events)
17463
- this.events[eventManagers].clear();
17464
- }
17465
- /**
17466
- * Attaches a passive effect to the `MotionValue`.
17467
- */
17468
- attach(passiveEffect, stopPassiveEffect) {
17469
- this.passiveEffect = passiveEffect, this.stopPassiveEffect = stopPassiveEffect;
17470
- }
17471
- /**
17472
- * Sets the state of the `MotionValue`.
17473
- *
17474
- * @remarks
17475
- *
17476
- * ```jsx
17477
- * const x = useMotionValue(0)
17478
- * x.set(10)
17479
- * ```
17480
- *
17481
- * @param latest - Latest value to set.
17482
- * @param render - Whether to notify render subscribers. Defaults to `true`
17483
- *
17484
- * @public
17485
- */
17486
- set(v, render = !0) {
17487
- !render || !this.passiveEffect ? this.updateAndNotify(v, render) : this.passiveEffect(v, this.updateAndNotify);
17488
- }
17489
- setWithVelocity(prev, current, delta) {
17490
- this.set(current), this.prev = void 0, this.prevFrameValue = prev, this.prevUpdatedAt = this.updatedAt - delta;
17491
- }
17492
- /**
17493
- * Set the state of the `MotionValue`, stopping any active animations,
17494
- * effects, and resets velocity to `0`.
17495
- */
17496
- jump(v, endAnimation = !0) {
17497
- this.updateAndNotify(v), this.prev = v, this.prevUpdatedAt = this.prevFrameValue = void 0, endAnimation && this.stop(), this.stopPassiveEffect && this.stopPassiveEffect();
17498
- }
17499
- /**
17500
- * Returns the latest state of `MotionValue`
17501
- *
17502
- * @returns - The latest state of `MotionValue`
17503
- *
17504
- * @public
17505
- */
17506
- get() {
17507
- return this.current;
17508
- }
17509
- /**
17510
- * @public
17511
- */
17512
- getPrevious() {
17513
- return this.prev;
17514
- }
17515
- /**
17516
- * Returns the latest velocity of `MotionValue`
17517
- *
17518
- * @returns - The latest velocity of `MotionValue`. Returns `0` if the state is non-numerical.
17519
- *
17520
- * @public
17521
- */
17522
- getVelocity() {
17523
- const currentTime = time.now();
17524
- if (!this.canTrackVelocity || this.prevFrameValue === void 0 || currentTime - this.updatedAt > MAX_VELOCITY_DELTA)
17525
- return 0;
17526
- const delta = Math.min(this.updatedAt - this.prevUpdatedAt, MAX_VELOCITY_DELTA);
17527
- return velocityPerSecond(parseFloat(this.current) - parseFloat(this.prevFrameValue), delta);
17528
- }
17529
- /**
17530
- * Registers a new animation to control this `MotionValue`. Only one
17531
- * animation can drive a `MotionValue` at one time.
17532
- *
17533
- * ```jsx
17534
- * value.start()
17535
- * ```
17536
- *
17537
- * @param animation - A function that starts the provided animation
17538
- */
17539
- start(startAnimation) {
17540
- return this.stop(), new Promise((resolve) => {
17541
- this.hasAnimated = !0, this.animation = startAnimation(resolve), this.events.animationStart && this.events.animationStart.notify();
17542
- }).then(() => {
17543
- this.events.animationComplete && this.events.animationComplete.notify(), this.clearAnimation();
17544
- });
17545
- }
17546
- /**
17547
- * Stop the currently active animation.
17548
- *
17549
- * @public
17550
- */
17551
- stop() {
17552
- this.animation && (this.animation.stop(), this.events.animationCancel && this.events.animationCancel.notify()), this.clearAnimation();
17553
- }
17554
- /**
17555
- * Returns `true` if this value is currently animating.
17556
- *
17557
- * @public
17558
- */
17559
- isAnimating() {
17560
- return !!this.animation;
17561
- }
17562
- clearAnimation() {
17563
- delete this.animation;
17564
- }
17565
- /**
17566
- * Destroy and clean up subscribers to this `MotionValue`.
17567
- *
17568
- * The `MotionValue` hooks like `useMotionValue` and `useTransform` automatically
17569
- * handle the lifecycle of the returned `MotionValue`, so this method is only necessary if you've manually
17570
- * created a `MotionValue` via the `motionValue` function.
17571
- *
17572
- * @public
17573
- */
17574
- destroy() {
17575
- this.clearListeners(), this.stop(), this.stopPassiveEffect && this.stopPassiveEffect();
17576
- }
17577
- }
17578
- function motionValue(init2, options) {
17579
- return new MotionValue(init2, options);
17580
- }
17095
+ const { schedule: frame$1, cancel: cancelFrame, state: frameData, steps: frameSteps } = /* @__PURE__ */ createRenderBatcher(typeof requestAnimationFrame < "u" ? requestAnimationFrame : noop$3, !0);
17581
17096
  function useIsMounted() {
17582
17097
  const isMounted = useRef(!1);
17583
17098
  return useIsomorphicLayoutEffect$2(() => (isMounted.current = !0, () => {
@@ -17787,9 +17302,8 @@ function useMotionRef(visualState, visualElement, externalRef) {
17787
17302
  [visualElement]
17788
17303
  );
17789
17304
  }
17790
- const camelToDash = (str) => str.replace(/([a-z])([A-Z])/gu, "$1-$2").toLowerCase(), optimizedAppearDataId = "framerAppearId", optimizedAppearDataAttribute = "data-" + camelToDash(optimizedAppearDataId), SwitchLayoutGroupContext = createContext({});
17305
+ const { schedule: microtask } = /* @__PURE__ */ createRenderBatcher(queueMicrotask, !1), camelToDash = (str) => str.replace(/([a-z])([A-Z])/gu, "$1-$2").toLowerCase(), optimizedAppearDataId = "framerAppearId", optimizedAppearDataAttribute = "data-" + camelToDash(optimizedAppearDataId), SwitchLayoutGroupContext = createContext({});
17791
17306
  function useVisualElement(Component2, visualState, props, createVisualElement, ProjectionNodeConstructor) {
17792
- var _a, _b;
17793
17307
  const { visualElement: parent } = useContext(MotionContext), lazyContext = useContext(LazyContext), presenceContext = useContext(PresenceContext), reducedMotionConfig = useContext(MotionConfigContext).reducedMotion, visualElementRef = useRef(null);
17794
17308
  createVisualElement = createVisualElement || lazyContext.renderer, !visualElementRef.current && createVisualElement && (visualElementRef.current = createVisualElement(Component2, {
17795
17309
  visualState,
@@ -17805,13 +17319,12 @@ function useVisualElement(Component2, visualState, props, createVisualElement, P
17805
17319
  useInsertionEffect$1(() => {
17806
17320
  visualElement && isMounted.current && visualElement.update(props, presenceContext);
17807
17321
  });
17808
- const optimisedAppearId = props[optimizedAppearDataAttribute], wantsHandoff = useRef(!!optimisedAppearId && !(!((_a = window.MotionHandoffIsComplete) === null || _a === void 0) && _a.call(window, optimisedAppearId)) && ((_b = window.MotionHasOptimisedAnimation) === null || _b === void 0 ? void 0 : _b.call(window, optimisedAppearId)));
17322
+ const optimisedAppearId = props[optimizedAppearDataAttribute], wantsHandoff = useRef(!!optimisedAppearId && !window.MotionHandoffIsComplete?.(optimisedAppearId) && window.MotionHasOptimisedAnimation?.(optimisedAppearId));
17809
17323
  return useIsomorphicLayoutEffect$2(() => {
17810
17324
  visualElement && (isMounted.current = !0, window.MotionIsMounted = !0, visualElement.updateFeatures(), microtask.render(visualElement.render), wantsHandoff.current && visualElement.animationState && visualElement.animationState.animateChanges());
17811
17325
  }), useEffect(() => {
17812
17326
  visualElement && (!wantsHandoff.current && visualElement.animationState && visualElement.animationState.animateChanges(), wantsHandoff.current && (queueMicrotask(() => {
17813
- var _a2;
17814
- (_a2 = window.MotionHandoffMarkAsComplete) === null || _a2 === void 0 || _a2.call(window, optimisedAppearId);
17327
+ window.MotionHandoffMarkAsComplete?.(optimisedAppearId);
17815
17328
  }), wantsHandoff.current = !1));
17816
17329
  }), visualElement;
17817
17330
  }
@@ -17840,7 +17353,6 @@ function getClosestProjectingNode(visualElement) {
17840
17353
  return visualElement.options.allowProjection !== !1 ? visualElement.projection : getClosestProjectingNode(visualElement.parent);
17841
17354
  }
17842
17355
  function createRendererMotionComponent({ preloadedFeatures, createVisualElement, useRender, useVisualState, Component: Component2 }) {
17843
- var _a, _b;
17844
17356
  function MotionComponent(props, externalRef) {
17845
17357
  let MeasureLayout2;
17846
17358
  const configAndProps = {
@@ -17855,7 +17367,7 @@ function createRendererMotionComponent({ preloadedFeatures, createVisualElement,
17855
17367
  }
17856
17368
  return jsxs(MotionContext.Provider, { value: context2, children: [MeasureLayout2 && context2.visualElement ? jsx(MeasureLayout2, { visualElement: context2.visualElement, ...configAndProps }) : null, useRender(Component2, props, useMotionRef(visualState, context2.visualElement, externalRef), visualState, isStatic, context2.visualElement)] });
17857
17369
  }
17858
- MotionComponent.displayName = `motion.${typeof Component2 == "string" ? Component2 : `create(${(_b = (_a = Component2.displayName) !== null && _a !== void 0 ? _a : Component2.name) !== null && _b !== void 0 ? _b : ""})`}`;
17370
+ MotionComponent.displayName = `motion.${typeof Component2 == "string" ? Component2 : `create(${Component2.displayName ?? Component2.name ?? ""})`}`;
17859
17371
  const ForwardRefMotionComponent = forwardRef(MotionComponent);
17860
17372
  return ForwardRefMotionComponent[motionComponentSymbol] = Component2, ForwardRefMotionComponent;
17861
17373
  }
@@ -18244,10 +17756,9 @@ function makeLatestValues(props, context2, presenceContext, scrapeMotionValues)
18244
17756
  return values2;
18245
17757
  }
18246
17758
  function scrapeMotionValuesFromProps$1(props, prevProps, visualElement) {
18247
- var _a;
18248
17759
  const { style: style2 } = props, newValues = {};
18249
17760
  for (const key2 in style2)
18250
- (isMotionValue(style2[key2]) || prevProps.style && isMotionValue(prevProps.style[key2]) || isForcedMotionValue(key2, props) || ((_a = visualElement?.getValue(key2)) === null || _a === void 0 ? void 0 : _a.liveStyle) !== void 0) && (newValues[key2] = style2[key2]);
17761
+ (isMotionValue(style2[key2]) || prevProps.style && isMotionValue(prevProps.style[key2]) || isForcedMotionValue(key2, props) || visualElement?.getValue(key2)?.liveStyle !== void 0) && (newValues[key2] = style2[key2]);
18251
17762
  return newValues;
18252
17763
  }
18253
17764
  const htmlMotionConfig = {
@@ -18360,6 +17871,9 @@ function resolveVariant(visualElement, definition, custom5) {
18360
17871
  const props = visualElement.getProps();
18361
17872
  return resolveVariantFromProps(props, definition, custom5 !== void 0 ? custom5 : props.custom, visualElement);
18362
17873
  }
17874
+ function getValueTransition$1(transition, key2) {
17875
+ return transition?.[key2] ?? transition?.default ?? transition;
17876
+ }
18363
17877
  const positionalKeys = /* @__PURE__ */ new Set([
18364
17878
  "width",
18365
17879
  "height",
@@ -18369,6 +17883,242 @@ const positionalKeys = /* @__PURE__ */ new Set([
18369
17883
  "bottom",
18370
17884
  ...transformPropOrder
18371
17885
  ]);
17886
+ function addUniqueItem(arr, item) {
17887
+ arr.indexOf(item) === -1 && arr.push(item);
17888
+ }
17889
+ function removeItem(arr, item) {
17890
+ const index2 = arr.indexOf(item);
17891
+ index2 > -1 && arr.splice(index2, 1);
17892
+ }
17893
+ class SubscriptionManager {
17894
+ constructor() {
17895
+ this.subscriptions = [];
17896
+ }
17897
+ add(handler) {
17898
+ return addUniqueItem(this.subscriptions, handler), () => removeItem(this.subscriptions, handler);
17899
+ }
17900
+ notify(a2, b2, c2) {
17901
+ const numSubscriptions = this.subscriptions.length;
17902
+ if (numSubscriptions)
17903
+ if (numSubscriptions === 1)
17904
+ this.subscriptions[0](a2, b2, c2);
17905
+ else
17906
+ for (let i2 = 0; i2 < numSubscriptions; i2++) {
17907
+ const handler = this.subscriptions[i2];
17908
+ handler && handler(a2, b2, c2);
17909
+ }
17910
+ }
17911
+ getSize() {
17912
+ return this.subscriptions.length;
17913
+ }
17914
+ clear() {
17915
+ this.subscriptions.length = 0;
17916
+ }
17917
+ }
17918
+ function velocityPerSecond(velocity, frameDuration) {
17919
+ return frameDuration ? velocity * (1e3 / frameDuration) : 0;
17920
+ }
17921
+ let now$1;
17922
+ function clearTime() {
17923
+ now$1 = void 0;
17924
+ }
17925
+ const time = {
17926
+ now: () => (now$1 === void 0 && time.set(frameData.isProcessing || MotionGlobalConfig.useManualTiming ? frameData.timestamp : performance.now()), now$1),
17927
+ set: (newTime) => {
17928
+ now$1 = newTime, queueMicrotask(clearTime);
17929
+ }
17930
+ }, MAX_VELOCITY_DELTA = 30, isFloat = (value) => !isNaN(parseFloat(value));
17931
+ class MotionValue {
17932
+ /**
17933
+ * @param init - The initiating value
17934
+ * @param config - Optional configuration options
17935
+ *
17936
+ * - `transformer`: A function to transform incoming values with.
17937
+ */
17938
+ constructor(init2, options = {}) {
17939
+ this.version = "12.6.3", this.canTrackVelocity = null, this.events = {}, this.updateAndNotify = (v, render = !0) => {
17940
+ const currentTime = time.now();
17941
+ this.updatedAt !== currentTime && this.setPrevFrameValue(), this.prev = this.current, this.setCurrent(v), this.current !== this.prev && this.events.change && this.events.change.notify(this.current), render && this.events.renderRequest && this.events.renderRequest.notify(this.current);
17942
+ }, this.hasAnimated = !1, this.setCurrent(init2), this.owner = options.owner;
17943
+ }
17944
+ setCurrent(current) {
17945
+ this.current = current, this.updatedAt = time.now(), this.canTrackVelocity === null && current !== void 0 && (this.canTrackVelocity = isFloat(this.current));
17946
+ }
17947
+ setPrevFrameValue(prevFrameValue = this.current) {
17948
+ this.prevFrameValue = prevFrameValue, this.prevUpdatedAt = this.updatedAt;
17949
+ }
17950
+ /**
17951
+ * Adds a function that will be notified when the `MotionValue` is updated.
17952
+ *
17953
+ * It returns a function that, when called, will cancel the subscription.
17954
+ *
17955
+ * When calling `onChange` inside a React component, it should be wrapped with the
17956
+ * `useEffect` hook. As it returns an unsubscribe function, this should be returned
17957
+ * from the `useEffect` function to ensure you don't add duplicate subscribers..
17958
+ *
17959
+ * ```jsx
17960
+ * export const MyComponent = () => {
17961
+ * const x = useMotionValue(0)
17962
+ * const y = useMotionValue(0)
17963
+ * const opacity = useMotionValue(1)
17964
+ *
17965
+ * useEffect(() => {
17966
+ * function updateOpacity() {
17967
+ * const maxXY = Math.max(x.get(), y.get())
17968
+ * const newOpacity = transform(maxXY, [0, 100], [1, 0])
17969
+ * opacity.set(newOpacity)
17970
+ * }
17971
+ *
17972
+ * const unsubscribeX = x.on("change", updateOpacity)
17973
+ * const unsubscribeY = y.on("change", updateOpacity)
17974
+ *
17975
+ * return () => {
17976
+ * unsubscribeX()
17977
+ * unsubscribeY()
17978
+ * }
17979
+ * }, [])
17980
+ *
17981
+ * return <motion.div style={{ x }} />
17982
+ * }
17983
+ * ```
17984
+ *
17985
+ * @param subscriber - A function that receives the latest value.
17986
+ * @returns A function that, when called, will cancel this subscription.
17987
+ *
17988
+ * @deprecated
17989
+ */
17990
+ onChange(subscription) {
17991
+ return this.on("change", subscription);
17992
+ }
17993
+ on(eventName, callback) {
17994
+ this.events[eventName] || (this.events[eventName] = new SubscriptionManager());
17995
+ const unsubscribe = this.events[eventName].add(callback);
17996
+ return eventName === "change" ? () => {
17997
+ unsubscribe(), frame$1.read(() => {
17998
+ this.events.change.getSize() || this.stop();
17999
+ });
18000
+ } : unsubscribe;
18001
+ }
18002
+ clearListeners() {
18003
+ for (const eventManagers in this.events)
18004
+ this.events[eventManagers].clear();
18005
+ }
18006
+ /**
18007
+ * Attaches a passive effect to the `MotionValue`.
18008
+ */
18009
+ attach(passiveEffect, stopPassiveEffect) {
18010
+ this.passiveEffect = passiveEffect, this.stopPassiveEffect = stopPassiveEffect;
18011
+ }
18012
+ /**
18013
+ * Sets the state of the `MotionValue`.
18014
+ *
18015
+ * @remarks
18016
+ *
18017
+ * ```jsx
18018
+ * const x = useMotionValue(0)
18019
+ * x.set(10)
18020
+ * ```
18021
+ *
18022
+ * @param latest - Latest value to set.
18023
+ * @param render - Whether to notify render subscribers. Defaults to `true`
18024
+ *
18025
+ * @public
18026
+ */
18027
+ set(v, render = !0) {
18028
+ !render || !this.passiveEffect ? this.updateAndNotify(v, render) : this.passiveEffect(v, this.updateAndNotify);
18029
+ }
18030
+ setWithVelocity(prev, current, delta) {
18031
+ this.set(current), this.prev = void 0, this.prevFrameValue = prev, this.prevUpdatedAt = this.updatedAt - delta;
18032
+ }
18033
+ /**
18034
+ * Set the state of the `MotionValue`, stopping any active animations,
18035
+ * effects, and resets velocity to `0`.
18036
+ */
18037
+ jump(v, endAnimation = !0) {
18038
+ this.updateAndNotify(v), this.prev = v, this.prevUpdatedAt = this.prevFrameValue = void 0, endAnimation && this.stop(), this.stopPassiveEffect && this.stopPassiveEffect();
18039
+ }
18040
+ /**
18041
+ * Returns the latest state of `MotionValue`
18042
+ *
18043
+ * @returns - The latest state of `MotionValue`
18044
+ *
18045
+ * @public
18046
+ */
18047
+ get() {
18048
+ return this.current;
18049
+ }
18050
+ /**
18051
+ * @public
18052
+ */
18053
+ getPrevious() {
18054
+ return this.prev;
18055
+ }
18056
+ /**
18057
+ * Returns the latest velocity of `MotionValue`
18058
+ *
18059
+ * @returns - The latest velocity of `MotionValue`. Returns `0` if the state is non-numerical.
18060
+ *
18061
+ * @public
18062
+ */
18063
+ getVelocity() {
18064
+ const currentTime = time.now();
18065
+ if (!this.canTrackVelocity || this.prevFrameValue === void 0 || currentTime - this.updatedAt > MAX_VELOCITY_DELTA)
18066
+ return 0;
18067
+ const delta = Math.min(this.updatedAt - this.prevUpdatedAt, MAX_VELOCITY_DELTA);
18068
+ return velocityPerSecond(parseFloat(this.current) - parseFloat(this.prevFrameValue), delta);
18069
+ }
18070
+ /**
18071
+ * Registers a new animation to control this `MotionValue`. Only one
18072
+ * animation can drive a `MotionValue` at one time.
18073
+ *
18074
+ * ```jsx
18075
+ * value.start()
18076
+ * ```
18077
+ *
18078
+ * @param animation - A function that starts the provided animation
18079
+ */
18080
+ start(startAnimation) {
18081
+ return this.stop(), new Promise((resolve) => {
18082
+ this.hasAnimated = !0, this.animation = startAnimation(resolve), this.events.animationStart && this.events.animationStart.notify();
18083
+ }).then(() => {
18084
+ this.events.animationComplete && this.events.animationComplete.notify(), this.clearAnimation();
18085
+ });
18086
+ }
18087
+ /**
18088
+ * Stop the currently active animation.
18089
+ *
18090
+ * @public
18091
+ */
18092
+ stop() {
18093
+ this.animation && (this.animation.stop(), this.events.animationCancel && this.events.animationCancel.notify()), this.clearAnimation();
18094
+ }
18095
+ /**
18096
+ * Returns `true` if this value is currently animating.
18097
+ *
18098
+ * @public
18099
+ */
18100
+ isAnimating() {
18101
+ return !!this.animation;
18102
+ }
18103
+ clearAnimation() {
18104
+ delete this.animation;
18105
+ }
18106
+ /**
18107
+ * Destroy and clean up subscribers to this `MotionValue`.
18108
+ *
18109
+ * The `MotionValue` hooks like `useMotionValue` and `useTransform` automatically
18110
+ * handle the lifecycle of the returned `MotionValue`, so this method is only necessary if you've manually
18111
+ * created a `MotionValue` via the `motionValue` function.
18112
+ *
18113
+ * @public
18114
+ */
18115
+ destroy() {
18116
+ this.clearListeners(), this.stop(), this.stopPassiveEffect && this.stopPassiveEffect();
18117
+ }
18118
+ }
18119
+ function motionValue(init2, options) {
18120
+ return new MotionValue(init2, options);
18121
+ }
18372
18122
  function setMotionValue(visualElement, key2, value) {
18373
18123
  visualElement.hasValue(key2) ? visualElement.getValue(key2).set(value) : visualElement.addValue(key2, motionValue(value));
18374
18124
  }
@@ -18392,6 +18142,147 @@ function addValueToWillChange(visualElement, key2) {
18392
18142
  function getOptimisedAppearId(visualElement) {
18393
18143
  return visualElement.props[optimizedAppearDataAttribute];
18394
18144
  }
18145
+ const secondsToMilliseconds = /* @__NO_SIDE_EFFECTS__ */ (seconds) => seconds * 1e3, millisecondsToSeconds = /* @__NO_SIDE_EFFECTS__ */ (milliseconds) => milliseconds / 1e3;
18146
+ // @__NO_SIDE_EFFECTS__
18147
+ function memo(callback) {
18148
+ let result;
18149
+ return () => (result === void 0 && (result = callback()), result);
18150
+ }
18151
+ const supportsScrollTimeline = /* @__PURE__ */ memo(() => window.ScrollTimeline !== void 0);
18152
+ class GroupAnimation {
18153
+ constructor(animations2) {
18154
+ this.stop = () => this.runAll("stop"), this.animations = animations2.filter(Boolean);
18155
+ }
18156
+ get finished() {
18157
+ return Promise.all(this.animations.map((animation) => animation.finished));
18158
+ }
18159
+ /**
18160
+ * TODO: Filter out cancelled or stopped animations before returning
18161
+ */
18162
+ getAll(propName) {
18163
+ return this.animations[0][propName];
18164
+ }
18165
+ setAll(propName, newValue) {
18166
+ for (let i2 = 0; i2 < this.animations.length; i2++)
18167
+ this.animations[i2][propName] = newValue;
18168
+ }
18169
+ attachTimeline(timeline, fallback) {
18170
+ const subscriptions = this.animations.map((animation) => {
18171
+ if (supportsScrollTimeline() && animation.attachTimeline)
18172
+ return animation.attachTimeline(timeline);
18173
+ if (typeof fallback == "function")
18174
+ return fallback(animation);
18175
+ });
18176
+ return () => {
18177
+ subscriptions.forEach((cancel, i2) => {
18178
+ cancel && cancel(), this.animations[i2].stop();
18179
+ });
18180
+ };
18181
+ }
18182
+ get time() {
18183
+ return this.getAll("time");
18184
+ }
18185
+ set time(time2) {
18186
+ this.setAll("time", time2);
18187
+ }
18188
+ get speed() {
18189
+ return this.getAll("speed");
18190
+ }
18191
+ set speed(speed) {
18192
+ this.setAll("speed", speed);
18193
+ }
18194
+ get startTime() {
18195
+ return this.getAll("startTime");
18196
+ }
18197
+ get duration() {
18198
+ let max2 = 0;
18199
+ for (let i2 = 0; i2 < this.animations.length; i2++)
18200
+ max2 = Math.max(max2, this.animations[i2].duration);
18201
+ return max2;
18202
+ }
18203
+ runAll(methodName) {
18204
+ this.animations.forEach((controls) => controls[methodName]());
18205
+ }
18206
+ flatten() {
18207
+ this.runAll("flatten");
18208
+ }
18209
+ play() {
18210
+ this.runAll("play");
18211
+ }
18212
+ pause() {
18213
+ this.runAll("pause");
18214
+ }
18215
+ cancel() {
18216
+ this.runAll("cancel");
18217
+ }
18218
+ complete() {
18219
+ this.runAll("complete");
18220
+ }
18221
+ }
18222
+ class GroupAnimationWithThen extends GroupAnimation {
18223
+ then(onResolve, _onReject) {
18224
+ return this.finished.finally(onResolve).then(() => {
18225
+ });
18226
+ }
18227
+ }
18228
+ const isBezierDefinition = (easing) => Array.isArray(easing) && typeof easing[0] == "number", supportsFlags = {};
18229
+ function memoSupports(callback, supportsFlag) {
18230
+ const memoized = /* @__PURE__ */ memo(callback);
18231
+ return () => supportsFlags[supportsFlag] ?? memoized();
18232
+ }
18233
+ const supportsLinearEasing = /* @__PURE__ */ memoSupports(() => {
18234
+ try {
18235
+ document.createElement("div").animate({ opacity: 0 }, { easing: "linear(0, 1)" });
18236
+ } catch {
18237
+ return !1;
18238
+ }
18239
+ return !0;
18240
+ }, "linearEasing"), generateLinearEasing = (easing, duration, resolution = 10) => {
18241
+ let points = "";
18242
+ const numPoints = Math.max(Math.round(duration / resolution), 2);
18243
+ for (let i2 = 0; i2 < numPoints; i2++)
18244
+ points += easing(i2 / (numPoints - 1)) + ", ";
18245
+ return `linear(${points.substring(0, points.length - 2)})`;
18246
+ }, cubicBezierAsString = ([a2, b2, c2, d2]) => `cubic-bezier(${a2}, ${b2}, ${c2}, ${d2})`, supportedWaapiEasing = {
18247
+ linear: "linear",
18248
+ ease: "ease",
18249
+ easeIn: "ease-in",
18250
+ easeOut: "ease-out",
18251
+ easeInOut: "ease-in-out",
18252
+ circIn: /* @__PURE__ */ cubicBezierAsString([0, 0.65, 0.55, 1]),
18253
+ circOut: /* @__PURE__ */ cubicBezierAsString([0.55, 0, 1, 0.45]),
18254
+ backIn: /* @__PURE__ */ cubicBezierAsString([0.31, 0.01, 0.66, -0.59]),
18255
+ backOut: /* @__PURE__ */ cubicBezierAsString([0.33, 1.53, 0.69, 0.99])
18256
+ };
18257
+ function mapEasingToNativeEasing(easing, duration) {
18258
+ if (easing)
18259
+ return typeof easing == "function" && supportsLinearEasing() ? generateLinearEasing(easing, duration) : isBezierDefinition(easing) ? cubicBezierAsString(easing) : Array.isArray(easing) ? easing.map((segmentEasing) => mapEasingToNativeEasing(segmentEasing, duration) || supportedWaapiEasing.easeOut) : supportedWaapiEasing[easing];
18260
+ }
18261
+ function startWaapiAnimation(element, valueName, keyframes2, { delay: delay2 = 0, duration = 300, repeat = 0, repeatType = "loop", ease: ease2 = "easeInOut", times } = {}, pseudoElement = void 0) {
18262
+ const keyframeOptions = {
18263
+ [valueName]: keyframes2
18264
+ };
18265
+ times && (keyframeOptions.offset = times);
18266
+ const easing = mapEasingToNativeEasing(ease2, duration);
18267
+ return Array.isArray(easing) && (keyframeOptions.easing = easing), element.animate(keyframeOptions, {
18268
+ delay: delay2,
18269
+ duration,
18270
+ easing: Array.isArray(easing) ? "linear" : easing,
18271
+ fill: "both",
18272
+ iterations: repeat + 1,
18273
+ direction: repeatType === "reverse" ? "alternate" : "normal",
18274
+ pseudoElement
18275
+ });
18276
+ }
18277
+ function isGenerator(type) {
18278
+ return typeof type == "function" && "applyToOptions" in type;
18279
+ }
18280
+ function isWaapiSupportedEasing(easing) {
18281
+ return !!(typeof easing == "function" && supportsLinearEasing() || !easing || typeof easing == "string" && (easing in supportedWaapiEasing || supportsLinearEasing()) || isBezierDefinition(easing) || Array.isArray(easing) && easing.every(isWaapiSupportedEasing));
18282
+ }
18283
+ function attachTimeline(animation, timeline) {
18284
+ animation.timeline = timeline, animation.onfinish = null;
18285
+ }
18395
18286
  const calcBezier = (t2, a1, a2) => (((1 - 3 * a2 + 3 * a1) * t2 + (3 * a2 - 6 * a1)) * t2 + 3 * a1) * t2, subdivisionPrecision = 1e-7, subdivisionMaxIterations = 12;
18396
18287
  function binarySubdivide(x2, lowerBound, upperBound, mX1, mX2) {
18397
18288
  let currentX, currentT, i2 = 0;
@@ -18455,8 +18346,7 @@ const hex$1 = {
18455
18346
  transform: (v) => typeof v == "string" ? v : v.hasOwnProperty("red") ? rgba$1.transform(v) : hsla$1.transform(v)
18456
18347
  }, colorRegex = /(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))/giu;
18457
18348
  function test(v) {
18458
- var _a, _b;
18459
- return isNaN(v) && typeof v == "string" && (((_a = v.match(floatRegex)) === null || _a === void 0 ? void 0 : _a.length) || 0) + (((_b = v.match(colorRegex)) === null || _b === void 0 ? void 0 : _b.length) || 0) > 0;
18349
+ return isNaN(v) && typeof v == "string" && (v.match(floatRegex)?.length || 0) + (v.match(colorRegex)?.length || 0) > 0;
18460
18350
  }
18461
18351
  const NUMBER_TOKEN = "number", COLOR_TOKEN = "color", VAR_TOKEN = "var", VAR_FUNCTION_TOKEN = "var(", SPLIT_TOKEN = "${}", complexRegex = /var\s*\(\s*--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)|#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\)|-?(?:\d+(?:\.\d+)?|\.\d+)/giu;
18462
18352
  function analyseComplexValue(value) {
@@ -18638,8 +18528,7 @@ function measureAllKeyframes() {
18638
18528
  element.render();
18639
18529
  const restore = transformsToRestore.get(element);
18640
18530
  restore && restore.forEach(([key2, value]) => {
18641
- var _a;
18642
- (_a = element.getValue(key2)) === null || _a === void 0 || _a.set(value);
18531
+ element.getValue(key2)?.set(value);
18643
18532
  });
18644
18533
  }), resolversToMeasure.forEach((resolver) => resolver.measureEndState()), resolversToMeasure.forEach((resolver) => {
18645
18534
  resolver.suspendedScrollY !== void 0 && window.scrollTo(0, resolver.suspendedScrollY);
@@ -18765,14 +18654,13 @@ class DOMKeyframesResolver extends KeyframeResolver {
18765
18654
  measureKeyframe !== void 0 && element.getValue(name, measureKeyframe).jump(measureKeyframe, !1);
18766
18655
  }
18767
18656
  measureEndState() {
18768
- var _a;
18769
18657
  const { element, name, unresolvedKeyframes } = this;
18770
18658
  if (!element || !element.current)
18771
18659
  return;
18772
18660
  const value = element.getValue(name);
18773
18661
  value && value.jump(this.measuredOrigin, !1);
18774
18662
  const finalKeyframeIndex = unresolvedKeyframes.length - 1, finalKeyframe = unresolvedKeyframes[finalKeyframeIndex];
18775
- unresolvedKeyframes[finalKeyframeIndex] = positionalValues[name](element.measureViewportBox(), window.getComputedStyle(element.current)), finalKeyframe !== null && this.finalKeyframe === void 0 && (this.finalKeyframe = finalKeyframe), !((_a = this.removedTransforms) === null || _a === void 0) && _a.length && this.removedTransforms.forEach(([unsetTransformName, unsetTransformValue]) => {
18663
+ unresolvedKeyframes[finalKeyframeIndex] = positionalValues[name](element.measureViewportBox(), window.getComputedStyle(element.current)), finalKeyframe !== null && this.finalKeyframe === void 0 && (this.finalKeyframe = finalKeyframe), this.removedTransforms?.length && this.removedTransforms.forEach(([unsetTransformName, unsetTransformValue]) => {
18776
18664
  element.getValue(unsetTransformName).set(unsetTransformValue);
18777
18665
  }), this.resolveNoneKeyframes();
18778
18666
  }
@@ -18877,6 +18765,15 @@ class BaseAnimation {
18877
18765
  });
18878
18766
  }
18879
18767
  }
18768
+ const maxGeneratorDuration = 2e4;
18769
+ function calcGeneratorDuration(generator) {
18770
+ let duration = 0;
18771
+ const timeStep = 50;
18772
+ let state = generator.next(duration);
18773
+ for (; !state.done && duration < maxGeneratorDuration; )
18774
+ duration += timeStep, state = generator.next(duration);
18775
+ return duration >= maxGeneratorDuration ? 1 / 0 : duration;
18776
+ }
18880
18777
  const mixNumber$1 = (from, to, progress2) => from + (to - from) * progress2;
18881
18778
  function hueToRgb(p2, q, t2) {
18882
18779
  return t2 < 0 && (t2 += 1), t2 > 1 && (t2 -= 1), t2 < 1 / 6 ? p2 + (q - p2) * 6 * t2 : t2 < 1 / 2 ? q : t2 < 2 / 3 ? p2 + (q - p2) * (2 / 3 - t2) * 6 : p2;
@@ -18946,10 +18843,9 @@ function mixObject(a2, b2) {
18946
18843
  };
18947
18844
  }
18948
18845
  function matchOrder(origin, target) {
18949
- var _a;
18950
18846
  const orderedOrigin = [], pointers = { color: 0, var: 0, number: 0 };
18951
18847
  for (let i2 = 0; i2 < target.values.length; i2++) {
18952
- const type = target.types[i2], originIndex = origin.indexes[type][pointers[type]], originValue = (_a = origin.values[originIndex]) !== null && _a !== void 0 ? _a : 0;
18848
+ const type = target.types[i2], originIndex = origin.indexes[type][pointers[type]], originValue = origin.values[originIndex] ?? 0;
18953
18849
  orderedOrigin[i2] = originValue, pointers[type]++;
18954
18850
  }
18955
18851
  return orderedOrigin;
@@ -18961,6 +18857,14 @@ const mixComplex = (origin, target) => {
18961
18857
  function mix(from, to, p2) {
18962
18858
  return typeof from == "number" && typeof to == "number" && typeof p2 == "number" ? mixNumber$1(from, to, p2) : getMixer(from)(from, to);
18963
18859
  }
18860
+ function createGeneratorEasing(options, scale2 = 100, createGenerator) {
18861
+ const generator = createGenerator({ ...options, keyframes: [0, scale2] }), duration = Math.min(calcGeneratorDuration(generator), maxGeneratorDuration);
18862
+ return {
18863
+ type: "keyframes",
18864
+ ease: (progress2) => generator.next(duration * progress2).value / scale2,
18865
+ duration: /* @__PURE__ */ millisecondsToSeconds(duration)
18866
+ };
18867
+ }
18964
18868
  const velocitySampleDuration = 5;
18965
18869
  function calcGeneratorVelocity(resolveValue, t2, current) {
18966
18870
  const prevT = Math.max(t2 - velocitySampleDuration, 0);
@@ -19113,10 +19017,16 @@ function spring(optionsOrVisualDuration = springDefaults.visualDuration, bounce
19113
19017
  toString: () => {
19114
19018
  const calculatedDuration = Math.min(calcGeneratorDuration(generator), maxGeneratorDuration), easing = generateLinearEasing((progress2) => generator.next(calculatedDuration * progress2).value, calculatedDuration, 30);
19115
19019
  return calculatedDuration + "ms " + easing;
19020
+ },
19021
+ toTransition: () => {
19116
19022
  }
19117
19023
  };
19118
19024
  return generator;
19119
19025
  }
19026
+ spring.applyToOptions = (options) => {
19027
+ const generatorOptions = createGeneratorEasing(options, 100, spring);
19028
+ return options.ease = supportsLinearEasing() ? generatorOptions.ease : "easeOut", options.duration = /* @__PURE__ */ secondsToMilliseconds(generatorOptions.duration), options.type = "keyframes", options;
19029
+ };
19120
19030
  function inertia({ keyframes: keyframes2, velocity = 0, power = 0.8, timeConstant = 325, bounceDamping = 10, bounceStiffness = 500, modifyTarget, min: min2, max: max2, restDelta = 0.5, restSpeed }) {
19121
19031
  const origin = keyframes2[0], state = {
19122
19032
  done: !1,
@@ -19169,6 +19079,9 @@ const easeIn = /* @__PURE__ */ cubicBezier(0.42, 0, 1, 1), easeOut = /* @__PURE_
19169
19079
  } else if (typeof definition == "string")
19170
19080
  return easingLookup[definition];
19171
19081
  return definition;
19082
+ }, progress = /* @__NO_SIDE_EFFECTS__ */ (from, to, value) => {
19083
+ const toFromDifference = to - from;
19084
+ return toFromDifference === 0 ? 1 : (value - from) / toFromDifference;
19172
19085
  };
19173
19086
  function createMixers(output, ease2, customMixer) {
19174
19087
  const mixers = [], mixerFactory = customMixer || mix, numMixers = output.length - 1;
@@ -19349,12 +19262,11 @@ class MainThreadAnimation extends BaseAnimation {
19349
19262
  this.holdTime !== null ? this.startTime = now2 - this.holdTime : this.startTime ? this.state === "finished" && (this.startTime = now2) : this.startTime = startTime ?? this.calcStartTime(), this.state === "finished" && this.updateFinishedPromise(), this.cancelTime = this.startTime, this.holdTime = null, this.state = "running", this.driver.start();
19350
19263
  }
19351
19264
  pause() {
19352
- var _a;
19353
19265
  if (!this._resolved) {
19354
19266
  this.pendingPlayState = "paused";
19355
19267
  return;
19356
19268
  }
19357
- this.state = "paused", this.holdTime = (_a = this.currentTime) !== null && _a !== void 0 ? _a : 0;
19269
+ this.state = "paused", this.holdTime = this.currentTime ?? 0;
19358
19270
  }
19359
19271
  complete() {
19360
19272
  this.state !== "running" && this.play(), this.pendingPlayState = this.state = "finished", this.holdTime = null;
@@ -19376,6 +19288,9 @@ class MainThreadAnimation extends BaseAnimation {
19376
19288
  sample(time2) {
19377
19289
  return this.startTime = 0, this.tick(time2, !0);
19378
19290
  }
19291
+ get finished() {
19292
+ return this.currentFinishedPromise;
19293
+ }
19379
19294
  }
19380
19295
  const acceleratedValues = /* @__PURE__ */ new Set([
19381
19296
  "opacity",
@@ -19385,21 +19300,7 @@ const acceleratedValues = /* @__PURE__ */ new Set([
19385
19300
  // TODO: Can be accelerated but currently disabled until https://issues.chromium.org/issues/41491098 is resolved
19386
19301
  // or until we implement support for linear() easing.
19387
19302
  // "background-color"
19388
- ]);
19389
- function startWaapiAnimation(element, valueName, keyframes2, { delay: delay2 = 0, duration = 300, repeat = 0, repeatType = "loop", ease: ease2 = "easeInOut", times } = {}) {
19390
- const keyframeOptions = { [valueName]: keyframes2 };
19391
- times && (keyframeOptions.offset = times);
19392
- const easing = mapEasingToNativeEasing(ease2, duration);
19393
- return Array.isArray(easing) && (keyframeOptions.easing = easing), element.animate(keyframeOptions, {
19394
- delay: delay2,
19395
- duration,
19396
- easing: Array.isArray(easing) ? "linear" : easing,
19397
- fill: "both",
19398
- iterations: repeat + 1,
19399
- direction: repeatType === "reverse" ? "alternate" : "normal"
19400
- });
19401
- }
19402
- const supportsWaapi = /* @__PURE__ */ memo(() => Object.hasOwnProperty.call(Element.prototype, "animate")), sampleDelta = 10, maxDuration = 2e4;
19303
+ ]), supportsWaapi = /* @__PURE__ */ memo(() => Object.hasOwnProperty.call(Element.prototype, "animate")), sampleDelta = 10, maxDuration = 2e4;
19403
19304
  function requiresPregeneratedKeyframes(options) {
19404
19305
  return isGenerator(options.type) || options.type === "spring" || !isWaapiSupportedEasing(options.ease);
19405
19306
  }
@@ -19486,6 +19387,9 @@ class AcceleratedAnimation extends BaseAnimation {
19486
19387
  const { animation } = resolved;
19487
19388
  return animation.playbackRate;
19488
19389
  }
19390
+ get finished() {
19391
+ return this.resolved.animation.finished;
19392
+ }
19489
19393
  set speed(newSpeed) {
19490
19394
  const { resolved } = this;
19491
19395
  if (!resolved)
@@ -19635,7 +19539,7 @@ const animateMotionValue = (name, value, target, transition = {}, element, isHan
19635
19539
  if (finalKeyframe !== void 0)
19636
19540
  return frame$1.update(() => {
19637
19541
  options.onUpdate(finalKeyframe), options.onComplete();
19638
- }), new GroupPlaybackControls([]);
19542
+ }), new GroupAnimationWithThen([]);
19639
19543
  }
19640
19544
  return !isHandoff && AcceleratedAnimation.supports(options) ? new AcceleratedAnimation(options) : new MainThreadAnimation(options);
19641
19545
  };
@@ -19644,12 +19548,11 @@ function shouldBlockAnimation({ protectedKeys, needsAnimating }, key2) {
19644
19548
  return needsAnimating[key2] = !1, shouldBlock;
19645
19549
  }
19646
19550
  function animateTarget(visualElement, targetAndTransition, { delay: delay2 = 0, transitionOverride, type } = {}) {
19647
- var _a;
19648
19551
  let { transition = visualElement.getDefaultTransition(), transitionEnd, ...target } = targetAndTransition;
19649
19552
  transitionOverride && (transition = transitionOverride);
19650
19553
  const animations2 = [], animationTypeState = type && visualElement.animationState && visualElement.animationState.getState()[type];
19651
19554
  for (const key2 in target) {
19652
- const value = visualElement.getValue(key2, (_a = visualElement.latestValues[key2]) !== null && _a !== void 0 ? _a : null), valueTarget = target[key2];
19555
+ const value = visualElement.getValue(key2, visualElement.latestValues[key2] ?? null), valueTarget = target[key2];
19653
19556
  if (valueTarget === void 0 || animationTypeState && shouldBlockAnimation(animationTypeState, key2))
19654
19557
  continue;
19655
19558
  const valueTransition = {
@@ -19675,8 +19578,7 @@ function animateTarget(visualElement, targetAndTransition, { delay: delay2 = 0,
19675
19578
  }), animations2;
19676
19579
  }
19677
19580
  function animateVariant(visualElement, variant, options = {}) {
19678
- var _a;
19679
- const resolved = resolveVariant(visualElement, variant, options.type === "exit" ? (_a = visualElement.presenceContext) === null || _a === void 0 ? void 0 : _a.custom : void 0);
19581
+ const resolved = resolveVariant(visualElement, variant, options.type === "exit" ? visualElement.presenceContext?.custom : void 0);
19680
19582
  let { transition = visualElement.getDefaultTransition() || {} } = resolved || {};
19681
19583
  options.transitionOverride && (transition = options.transitionOverride);
19682
19584
  const getAnimation = resolved ? () => Promise.all(animateTarget(visualElement, resolved, options)) : () => Promise.resolve(), getChildAnimations = visualElement.variantChildren && visualElement.variantChildren.size ? (forwardDelay = 0) => {
@@ -19750,8 +19652,7 @@ function animateList(visualElement) {
19750
19652
  function createAnimationState(visualElement) {
19751
19653
  let animate2 = animateList(visualElement), state = createState(), isInitialRender = !0;
19752
19654
  const buildResolvedTypeValues = (type) => (acc, definition) => {
19753
- var _a;
19754
- const resolved = resolveVariant(visualElement, definition, type === "exit" ? (_a = visualElement.presenceContext) === null || _a === void 0 ? void 0 : _a.custom : void 0);
19655
+ const resolved = resolveVariant(visualElement, definition, type === "exit" ? visualElement.presenceContext?.custom : void 0);
19755
19656
  if (resolved) {
19756
19657
  const { transition, transitionEnd, ...target } = resolved;
19757
19658
  acc = { ...acc, ...target, ...transitionEnd };
@@ -19815,13 +19716,9 @@ function createAnimationState(visualElement) {
19815
19716
  return isInitialRender && (props.initial === !1 || props.initial === props.animate) && !visualElement.manuallyAnimateOnMount && (shouldAnimate = !1), isInitialRender = !1, shouldAnimate ? animate2(animations2) : Promise.resolve();
19816
19717
  }
19817
19718
  function setActive(type, isActive) {
19818
- var _a;
19819
19719
  if (state[type].isActive === isActive)
19820
19720
  return Promise.resolve();
19821
- (_a = visualElement.variantChildren) === null || _a === void 0 || _a.forEach((child) => {
19822
- var _a2;
19823
- return (_a2 = child.animationState) === null || _a2 === void 0 ? void 0 : _a2.setActive(type, isActive);
19824
- }), state[type].isActive = isActive;
19721
+ visualElement.variantChildren?.forEach((child) => child.animationState?.setActive(type, isActive)), state[type].isActive = isActive;
19825
19722
  const animations2 = animateChanges(type);
19826
19723
  for (const key2 in state)
19827
19724
  state[key2].protectedKeys = {};
@@ -19890,8 +19787,7 @@ class AnimationFeature extends Feature {
19890
19787
  animate2 !== prevAnimate && this.updateAnimationControlsSubscription();
19891
19788
  }
19892
19789
  unmount() {
19893
- var _a;
19894
- this.node.animationState.reset(), (_a = this.unmountControls) === null || _a === void 0 || _a.call(this);
19790
+ this.node.animationState.reset(), this.unmountControls?.();
19895
19791
  }
19896
19792
  }
19897
19793
  let id$2 = 0;
@@ -19924,10 +19820,24 @@ const animations = {
19924
19820
  exit: {
19925
19821
  Feature: ExitAnimationFeature
19926
19822
  }
19823
+ }, isDragging = {
19824
+ x: !1,
19825
+ y: !1
19927
19826
  };
19827
+ function isDragActive() {
19828
+ return isDragging.x || isDragging.y;
19829
+ }
19830
+ function setDragLock(axis) {
19831
+ return axis === "x" || axis === "y" ? isDragging[axis] ? null : (isDragging[axis] = !0, () => {
19832
+ isDragging[axis] = !1;
19833
+ }) : isDragging.x || isDragging.y ? null : (isDragging.x = isDragging.y = !0, () => {
19834
+ isDragging.x = isDragging.y = !1;
19835
+ });
19836
+ }
19928
19837
  function addDomEvent(target, eventName, handler, options = { passive: !0 }) {
19929
19838
  return target.addEventListener(eventName, handler, options), () => target.removeEventListener(eventName, handler);
19930
19839
  }
19840
+ const isPrimaryPointer = (event) => event.pointerType === "mouse" ? typeof event.button != "number" || event.button <= 0 : event.isPrimary !== !1;
19931
19841
  function extractEventInfo(event) {
19932
19842
  return {
19933
19843
  point: {
@@ -20230,10 +20140,7 @@ class VisualElementDragControls {
20230
20140
  return;
20231
20141
  }
20232
20142
  this.updateAxis("x", info.point, offset2), this.updateAxis("y", info.point, offset2), this.visualElement.render(), onDrag && onDrag(event, info);
20233
- }, onSessionEnd = (event, info) => this.stop(event, info), resumeAnimation = () => eachAxis((axis) => {
20234
- var _a;
20235
- return this.getAnimationState(axis) === "paused" && ((_a = this.getAxisMotionValue(axis).animation) === null || _a === void 0 ? void 0 : _a.play());
20236
- }), { dragSnapToOrigin } = this.getProps();
20143
+ }, onSessionEnd = (event, info) => this.stop(event, info), resumeAnimation = () => eachAxis((axis) => this.getAnimationState(axis) === "paused" && this.getAxisMotionValue(axis).animation?.play()), { dragSnapToOrigin } = this.getProps();
20237
20144
  this.panSession = new PanSession(originEvent, {
20238
20145
  onSessionStart,
20239
20146
  onStart,
@@ -20271,8 +20178,7 @@ class VisualElementDragControls {
20271
20178
  this.constraints && this.constraints[axis] && (next = applyConstraints(next, this.constraints[axis], this.elastic[axis])), axisValue.set(next);
20272
20179
  }
20273
20180
  resolveConstraints() {
20274
- var _a;
20275
- const { dragConstraints, dragElastic } = this.getProps(), layout2 = this.visualElement.projection && !this.visualElement.projection.layout ? this.visualElement.projection.measure(!1) : (_a = this.visualElement.projection) === null || _a === void 0 ? void 0 : _a.layout, prevConstraints = this.constraints;
20181
+ const { dragConstraints, dragElastic } = this.getProps(), layout2 = this.visualElement.projection && !this.visualElement.projection.layout ? this.visualElement.projection.measure(!1) : this.visualElement.projection?.layout, prevConstraints = this.constraints;
20276
20182
  dragConstraints && isRefObject(dragConstraints) ? this.constraints || (this.constraints = this.resolveRefConstraints()) : dragConstraints && layout2 ? this.constraints = calcRelativeConstraints(layout2.layoutBox, dragConstraints) : this.constraints = !1, this.elastic = resolveDragElastic(dragElastic), prevConstraints !== this.constraints && layout2 && this.constraints && !this.hasMutatedConstraints && eachAxis((axis) => {
20277
20183
  this.constraints !== !1 && this.getAxisMotionValue(axis) && (this.constraints[axis] = rebaseAxisConstraints(layout2.layoutBox[axis], this.constraints[axis]));
20278
20184
  });
@@ -20321,14 +20227,10 @@ class VisualElementDragControls {
20321
20227
  eachAxis((axis) => this.getAxisMotionValue(axis).stop());
20322
20228
  }
20323
20229
  pauseAnimation() {
20324
- eachAxis((axis) => {
20325
- var _a;
20326
- return (_a = this.getAxisMotionValue(axis).animation) === null || _a === void 0 ? void 0 : _a.pause();
20327
- });
20230
+ eachAxis((axis) => this.getAxisMotionValue(axis).animation?.pause());
20328
20231
  }
20329
20232
  getAnimationState(axis) {
20330
- var _a;
20331
- return (_a = this.getAxisMotionValue(axis).animation) === null || _a === void 0 ? void 0 : _a.state;
20233
+ return this.getAxisMotionValue(axis).animation?.state;
20332
20234
  }
20333
20235
  /**
20334
20236
  * Drag works differently depending on which props are provided.
@@ -20923,21 +20825,19 @@ function createProjectionNode({ attachResizeListener, defaultParent, measureScro
20923
20825
  };
20924
20826
  }
20925
20827
  measurePageBox() {
20926
- var _a;
20927
20828
  const { visualElement } = this.options;
20928
20829
  if (!visualElement)
20929
20830
  return createBox();
20930
20831
  const box = visualElement.measureViewportBox();
20931
- if (!(((_a = this.scroll) === null || _a === void 0 ? void 0 : _a.wasRoot) || this.path.some(checkNodeWasScrollRoot))) {
20832
+ if (!(this.scroll?.wasRoot || this.path.some(checkNodeWasScrollRoot))) {
20932
20833
  const { scroll } = this.root;
20933
20834
  scroll && (translateAxis(box.x, scroll.offset.x), translateAxis(box.y, scroll.offset.y));
20934
20835
  }
20935
20836
  return box;
20936
20837
  }
20937
20838
  removeElementScroll(box) {
20938
- var _a;
20939
20839
  const boxWithoutScroll = createBox();
20940
- if (copyBoxInto(boxWithoutScroll, box), !((_a = this.scroll) === null || _a === void 0) && _a.wasRoot)
20840
+ if (copyBoxInto(boxWithoutScroll, box), this.scroll?.wasRoot)
20941
20841
  return boxWithoutScroll;
20942
20842
  for (let i2 = 0; i2 < this.path.length; i2++) {
20943
20843
  const node2 = this.path[i2], { scroll, options } = node2;
@@ -20987,11 +20887,10 @@ function createProjectionNode({ attachResizeListener, defaultParent, measureScro
20987
20887
  this.relativeParent && this.relativeParent.resolvedRelativeTargetAt !== frameData.timestamp && this.relativeParent.resolveTargetDelta(!0);
20988
20888
  }
20989
20889
  resolveTargetDelta(forceRecalculation = !1) {
20990
- var _a;
20991
20890
  const lead = this.getLead();
20992
20891
  this.isProjectionDirty || (this.isProjectionDirty = lead.isProjectionDirty), this.isTransformDirty || (this.isTransformDirty = lead.isTransformDirty), this.isSharedProjectionDirty || (this.isSharedProjectionDirty = lead.isSharedProjectionDirty);
20993
20892
  const isShared = !!this.resumingFrom || this !== lead;
20994
- if (!(forceRecalculation || isShared && this.isSharedProjectionDirty || this.isProjectionDirty || !((_a = this.parent) === null || _a === void 0) && _a.isProjectionDirty || this.attemptToResolveRelativeTarget || this.root.updateBlockedByResize))
20893
+ if (!(forceRecalculation || isShared && this.isSharedProjectionDirty || this.isProjectionDirty || this.parent?.isProjectionDirty || this.attemptToResolveRelativeTarget || this.root.updateBlockedByResize))
20995
20894
  return;
20996
20895
  const { layout: layout2, layoutId } = this.options;
20997
20896
  if (!(!this.layout || !(layout2 || layoutId))) {
@@ -21014,10 +20913,9 @@ function createProjectionNode({ attachResizeListener, defaultParent, measureScro
21014
20913
  return !!((this.relativeTarget || this.targetDelta || this.options.layoutRoot) && this.layout);
21015
20914
  }
21016
20915
  calcProjection() {
21017
- var _a;
21018
20916
  const lead = this.getLead(), isShared = !!this.resumingFrom || this !== lead;
21019
20917
  let canSkip = !0;
21020
- if ((this.isProjectionDirty || !((_a = this.parent) === null || _a === void 0) && _a.isProjectionDirty) && (canSkip = !1), isShared && (this.isSharedProjectionDirty || this.isTransformDirty) && (canSkip = !1), this.resolvedRelativeTargetAt === frameData.timestamp && (canSkip = !1), canSkip)
20918
+ if ((this.isProjectionDirty || this.parent?.isProjectionDirty) && (canSkip = !1), isShared && (this.isSharedProjectionDirty || this.isTransformDirty) && (canSkip = !1), this.resolvedRelativeTargetAt === frameData.timestamp && (canSkip = !1), canSkip)
21021
20919
  return;
21022
20920
  const { layout: layout2, layoutId } = this.options;
21023
20921
  if (this.isTreeAnimating = !!(this.parent && this.parent.isTreeAnimating || this.currentAnimation || this.pendingAnimation), this.isTreeAnimating || (this.targetDelta = this.relativeTarget = void 0), !this.layout || !(layout2 || layoutId))
@@ -21039,8 +20937,7 @@ function createProjectionNode({ attachResizeListener, defaultParent, measureScro
21039
20937
  this.isVisible = !0;
21040
20938
  }
21041
20939
  scheduleRender(notifyAll = !0) {
21042
- var _a;
21043
- if ((_a = this.options.visualElement) === null || _a === void 0 || _a.scheduleRender(), notifyAll) {
20940
+ if (this.options.visualElement?.scheduleRender(), notifyAll) {
21044
20941
  const stack = this.getStack();
21045
20942
  stack && stack.scheduleRender();
21046
20943
  }
@@ -21110,14 +21007,12 @@ function createProjectionNode({ attachResizeListener, defaultParent, measureScro
21110
21007
  return stack ? stack.lead === this : !0;
21111
21008
  }
21112
21009
  getLead() {
21113
- var _a;
21114
21010
  const { layoutId } = this.options;
21115
- return layoutId ? ((_a = this.getStack()) === null || _a === void 0 ? void 0 : _a.lead) || this : this;
21011
+ return layoutId ? this.getStack()?.lead || this : this;
21116
21012
  }
21117
21013
  getPrevLead() {
21118
- var _a;
21119
21014
  const { layoutId } = this.options;
21120
- return layoutId ? (_a = this.getStack()) === null || _a === void 0 ? void 0 : _a.prevLead : void 0;
21015
+ return layoutId ? this.getStack()?.prevLead : void 0;
21121
21016
  }
21122
21017
  getStack() {
21123
21018
  const { layoutId } = this.options;
@@ -21150,7 +21045,6 @@ function createProjectionNode({ attachResizeListener, defaultParent, measureScro
21150
21045
  visualElement.scheduleRender();
21151
21046
  }
21152
21047
  getProjectionStyles(styleProp) {
21153
- var _a, _b;
21154
21048
  if (!this.instance || this.isSVG)
21155
21049
  return;
21156
21050
  if (!this.isVisible)
@@ -21168,7 +21062,7 @@ function createProjectionNode({ attachResizeListener, defaultParent, measureScro
21168
21062
  const valuesToRender = lead.animationValues || lead.latestValues;
21169
21063
  this.applyTransformsToTarget(), styles.transform = buildProjectionTransform(this.projectionDeltaWithTransform, this.treeScale, valuesToRender), transformTemplate && (styles.transform = transformTemplate(valuesToRender, styles.transform));
21170
21064
  const { x: x2, y: y2 } = this.projectionDelta;
21171
- styles.transformOrigin = `${x2.origin * 100}% ${y2.origin * 100}% 0`, lead.animationValues ? styles.opacity = lead === this ? (_b = (_a = valuesToRender.opacity) !== null && _a !== void 0 ? _a : this.latestValues.opacity) !== null && _b !== void 0 ? _b : 1 : this.preserveOpacity ? this.latestValues.opacity : valuesToRender.opacityExit : styles.opacity = lead === this ? valuesToRender.opacity !== void 0 ? valuesToRender.opacity : "" : valuesToRender.opacityExit !== void 0 ? valuesToRender.opacityExit : 0;
21065
+ styles.transformOrigin = `${x2.origin * 100}% ${y2.origin * 100}% 0`, lead.animationValues ? styles.opacity = lead === this ? valuesToRender.opacity ?? this.latestValues.opacity ?? 1 : this.preserveOpacity ? this.latestValues.opacity : valuesToRender.opacityExit : styles.opacity = lead === this ? valuesToRender.opacity !== void 0 ? valuesToRender.opacity : "" : valuesToRender.opacityExit !== void 0 ? valuesToRender.opacityExit : 0;
21172
21066
  for (const key2 in scaleCorrectors) {
21173
21067
  if (valuesToRender[key2] === void 0)
21174
21068
  continue;
@@ -21187,10 +21081,7 @@ function createProjectionNode({ attachResizeListener, defaultParent, measureScro
21187
21081
  }
21188
21082
  // Only run on root
21189
21083
  resetTree() {
21190
- this.root.nodes.forEach((node2) => {
21191
- var _a;
21192
- return (_a = node2.currentAnimation) === null || _a === void 0 ? void 0 : _a.stop();
21193
- }), this.root.nodes.forEach(clearMeasurements), this.root.sharedNodes.clear();
21084
+ this.root.nodes.forEach((node2) => node2.currentAnimation?.stop()), this.root.nodes.forEach(clearMeasurements), this.root.sharedNodes.clear();
21194
21085
  }
21195
21086
  };
21196
21087
  }
@@ -21198,8 +21089,7 @@ function updateLayout(node2) {
21198
21089
  node2.updateLayout();
21199
21090
  }
21200
21091
  function notifyLayoutUpdate(node2) {
21201
- var _a;
21202
- const snapshot = ((_a = node2.resumeFrom) === null || _a === void 0 ? void 0 : _a.snapshot) || node2.snapshot;
21092
+ const snapshot = node2.resumeFrom?.snapshot || node2.snapshot;
21203
21093
  if (node2.isLead() && node2.layout && snapshot && node2.hasListeners("didUpdate")) {
21204
21094
  const { layoutBox: layout2, measuredBox: measuredLayout } = node2.layout, { animationType } = node2.options, isShared = snapshot.source !== node2.layout.source;
21205
21095
  animationType === "size" ? eachAxis((axis) => {
@@ -21301,8 +21191,7 @@ function shouldAnimatePositionOnly(animationType, snapshot, layout2) {
21301
21191
  return animationType === "position" || animationType === "preserve-aspect" && !isNear(aspectRatio(snapshot), aspectRatio(layout2), 0.2);
21302
21192
  }
21303
21193
  function checkNodeWasScrollRoot(node2) {
21304
- var _a;
21305
- return node2 !== node2.root && ((_a = node2.scroll) === null || _a === void 0 ? void 0 : _a.wasRoot);
21194
+ return node2 !== node2.root && node2.scroll?.wasRoot;
21306
21195
  }
21307
21196
  const DocumentProjectionNode = createProjectionNode({
21308
21197
  attachResizeListener: (ref, notify2) => addDomEvent(ref, "resize", notify2),
@@ -21339,6 +21228,43 @@ const DocumentProjectionNode = createProjectionNode({
21339
21228
  MeasureLayout
21340
21229
  }
21341
21230
  };
21231
+ function resolveElements(elementOrSelector, scope, selectorCache) {
21232
+ if (elementOrSelector instanceof EventTarget)
21233
+ return [elementOrSelector];
21234
+ if (typeof elementOrSelector == "string") {
21235
+ let root2 = document;
21236
+ const elements = selectorCache?.[elementOrSelector] ?? root2.querySelectorAll(elementOrSelector);
21237
+ return elements ? Array.from(elements) : [];
21238
+ }
21239
+ return Array.from(elementOrSelector);
21240
+ }
21241
+ function setupGesture(elementOrSelector, options) {
21242
+ const elements = resolveElements(elementOrSelector), gestureAbortController = new AbortController(), eventOptions = {
21243
+ passive: !0,
21244
+ ...options,
21245
+ signal: gestureAbortController.signal
21246
+ };
21247
+ return [elements, eventOptions, () => gestureAbortController.abort()];
21248
+ }
21249
+ function isValidHover(event) {
21250
+ return !(event.pointerType === "touch" || isDragActive());
21251
+ }
21252
+ function hover(elementOrSelector, onHoverStart, options = {}) {
21253
+ const [elements, eventOptions, cancel] = setupGesture(elementOrSelector, options), onPointerEnter = (enterEvent) => {
21254
+ if (!isValidHover(enterEvent))
21255
+ return;
21256
+ const { target } = enterEvent, onHoverEnd = onHoverStart(target, enterEvent);
21257
+ if (typeof onHoverEnd != "function" || !target)
21258
+ return;
21259
+ const onPointerLeave = (leaveEvent) => {
21260
+ isValidHover(leaveEvent) && (onHoverEnd(leaveEvent), target.removeEventListener("pointerleave", onPointerLeave));
21261
+ };
21262
+ target.addEventListener("pointerleave", onPointerLeave, eventOptions);
21263
+ };
21264
+ return elements.forEach((element) => {
21265
+ element.addEventListener("pointerenter", onPointerEnter, eventOptions);
21266
+ }), cancel;
21267
+ }
21342
21268
  function handleHoverEvent(node2, event, lifecycle) {
21343
21269
  const { props } = node2;
21344
21270
  node2.animationState && props.whileHover && node2.animationState.setActive("whileHover", lifecycle === "Start");
@@ -21375,6 +21301,62 @@ class FocusGesture extends Feature {
21375
21301
  unmount() {
21376
21302
  }
21377
21303
  }
21304
+ const isNodeOrChild = (parent, child) => child ? parent === child ? !0 : isNodeOrChild(parent, child.parentElement) : !1, focusableElements = /* @__PURE__ */ new Set([
21305
+ "BUTTON",
21306
+ "INPUT",
21307
+ "SELECT",
21308
+ "TEXTAREA",
21309
+ "A"
21310
+ ]);
21311
+ function isElementKeyboardAccessible(element) {
21312
+ return focusableElements.has(element.tagName) || element.tabIndex !== -1;
21313
+ }
21314
+ const isPressing = /* @__PURE__ */ new WeakSet();
21315
+ function filterEvents(callback) {
21316
+ return (event) => {
21317
+ event.key === "Enter" && callback(event);
21318
+ };
21319
+ }
21320
+ function firePointerEvent(target, type) {
21321
+ target.dispatchEvent(new PointerEvent("pointer" + type, { isPrimary: !0, bubbles: !0 }));
21322
+ }
21323
+ const enableKeyboardPress = (focusEvent, eventOptions) => {
21324
+ const element = focusEvent.currentTarget;
21325
+ if (!element)
21326
+ return;
21327
+ const handleKeydown = filterEvents(() => {
21328
+ if (isPressing.has(element))
21329
+ return;
21330
+ firePointerEvent(element, "down");
21331
+ const handleKeyup = filterEvents(() => {
21332
+ firePointerEvent(element, "up");
21333
+ }), handleBlur = () => firePointerEvent(element, "cancel");
21334
+ element.addEventListener("keyup", handleKeyup, eventOptions), element.addEventListener("blur", handleBlur, eventOptions);
21335
+ });
21336
+ element.addEventListener("keydown", handleKeydown, eventOptions), element.addEventListener("blur", () => element.removeEventListener("keydown", handleKeydown), eventOptions);
21337
+ };
21338
+ function isValidPressEvent(event) {
21339
+ return isPrimaryPointer(event) && !isDragActive();
21340
+ }
21341
+ function press(targetOrSelector, onPressStart, options = {}) {
21342
+ const [targets, eventOptions, cancelEvents] = setupGesture(targetOrSelector, options), startPress = (startEvent) => {
21343
+ const target = startEvent.currentTarget;
21344
+ if (!isValidPressEvent(startEvent) || isPressing.has(target))
21345
+ return;
21346
+ isPressing.add(target);
21347
+ const onPressEnd = onPressStart(target, startEvent), onPointerEnd = (endEvent, success) => {
21348
+ window.removeEventListener("pointerup", onPointerUp), window.removeEventListener("pointercancel", onPointerCancel), !(!isValidPressEvent(endEvent) || !isPressing.has(target)) && (isPressing.delete(target), typeof onPressEnd == "function" && onPressEnd(endEvent, { success }));
21349
+ }, onPointerUp = (upEvent) => {
21350
+ onPointerEnd(upEvent, target === window || target === document || options.useGlobalTarget || isNodeOrChild(target, upEvent.target));
21351
+ }, onPointerCancel = (cancelEvent) => {
21352
+ onPointerEnd(cancelEvent, !1);
21353
+ };
21354
+ window.addEventListener("pointerup", onPointerUp, eventOptions), window.addEventListener("pointercancel", onPointerCancel, eventOptions);
21355
+ };
21356
+ return targets.forEach((target) => {
21357
+ (options.useGlobalTarget ? window : target).addEventListener("pointerdown", startPress, eventOptions), target instanceof HTMLElement && (target.addEventListener("focus", (event) => enableKeyboardPress(event, eventOptions)), !isElementKeyboardAccessible(target) && !target.hasAttribute("tabindex") && (target.tabIndex = 0));
21358
+ }), cancelEvents;
21359
+ }
21378
21360
  function handlePressEvent(node2, event, lifecycle) {
21379
21361
  const { props } = node2;
21380
21362
  if (node2.current instanceof HTMLButtonElement && node2.current.disabled)
@@ -21665,8 +21647,7 @@ class VisualElement {
21665
21647
  * directly from the instance (which might have performance implications).
21666
21648
  */
21667
21649
  readValue(key2, target) {
21668
- var _a;
21669
- let value = this.latestValues[key2] !== void 0 || !this.current ? this.latestValues[key2] : (_a = this.getBaseTargetFromProps(this.props, key2)) !== null && _a !== void 0 ? _a : this.readValueFromInstance(this.current, key2, this.options);
21650
+ let value = this.latestValues[key2] !== void 0 || !this.current ? this.latestValues[key2] : this.getBaseTargetFromProps(this.props, key2) ?? this.readValueFromInstance(this.current, key2, this.options);
21670
21651
  return value != null && (typeof value == "string" && (isNumericalString(value) || isZeroValueString(value)) ? value = parseFloat(value) : !findValueType(value) && complex.test(target) && (value = getAnimatableNone(key2, target)), this.setBaseTarget(key2, isMotionValue(value) ? value.get() : value)), isMotionValue(value) ? value.get() : value;
21671
21652
  }
21672
21653
  /**
@@ -21681,11 +21662,10 @@ class VisualElement {
21681
21662
  * props.
21682
21663
  */
21683
21664
  getBaseTarget(key2) {
21684
- var _a;
21685
21665
  const { initial } = this.props;
21686
21666
  let valueFromInitial;
21687
21667
  if (typeof initial == "string" || typeof initial == "object") {
21688
- const variant = resolveVariantFromProps(this.props, initial, (_a = this.presenceContext) === null || _a === void 0 ? void 0 : _a.custom);
21668
+ const variant = resolveVariantFromProps(this.props, initial, this.presenceContext?.custom);
21689
21669
  variant && (valueFromInitial = variant[key2]);
21690
21670
  }
21691
21671
  if (initial && valueFromInitial !== void 0)
@@ -21823,8 +21803,7 @@ function calculateRepeatDuration(duration, repeat, _repeatDelay) {
21823
21803
  return duration * (repeat + 1);
21824
21804
  }
21825
21805
  function calcNextTime(current, next, prev, labels) {
21826
- var _a;
21827
- return typeof next == "number" ? next : next.startsWith("-") || next.startsWith("+") ? Math.max(0, current + parseFloat(next)) : next === "<" ? prev : (_a = labels.get(next)) !== null && _a !== void 0 ? _a : current;
21806
+ return typeof next == "number" ? next : next.startsWith("-") || next.startsWith("+") ? Math.max(0, current + parseFloat(next)) : next === "<" ? prev : labels.get(next) ?? current;
21828
21807
  }
21829
21808
  function eraseKeyframes(sequence, startTime, endTime) {
21830
21809
  for (let i2 = 0; i2 < sequence.length; i2++) {
@@ -22044,7 +22023,7 @@ function isSequence(value) {
22044
22023
  function createScopedAnimate(scope) {
22045
22024
  function scopedAnimate(subjectOrSequence, optionsOrKeyframes, options) {
22046
22025
  let animations2 = [];
22047
- return isSequence(subjectOrSequence) ? animations2 = animateSequence(subjectOrSequence, optionsOrKeyframes, scope) : animations2 = animateSubject(subjectOrSequence, optionsOrKeyframes, options, scope), new GroupPlaybackControls(animations2);
22026
+ return isSequence(subjectOrSequence) ? animations2 = animateSequence(subjectOrSequence, optionsOrKeyframes, scope) : animations2 = animateSubject(subjectOrSequence, optionsOrKeyframes, options, scope), new GroupAnimationWithThen(animations2);
22048
22027
  }
22049
22028
  return scopedAnimate;
22050
22029
  }
@@ -24795,7 +24774,7 @@ const isEdgeBase = (element) => "id" in element && "source" in element && "targe
24795
24774
  x: node2.position.x - offsetX,
24796
24775
  y: node2.position.y - offsetY
24797
24776
  };
24798
- }, getNodesBounds = (nodes, params = { nodeOrigin: [0, 0], nodeLookup: void 0 }) => {
24777
+ }, getNodesBounds = (nodes, params = { nodeOrigin: [0, 0] }) => {
24799
24778
  if (nodes.length === 0)
24800
24779
  return { x: 0, y: 0, width: 0, height: 0 };
24801
24780
  const box = nodes.reduce((currBox, nodeOrId) => {
@@ -25975,7 +25954,8 @@ function createPanOnScrollHandler({ zoomPanValues, noWheelClassName, d3Selection
25975
25954
  }
25976
25955
  function createZoomOnScrollHandler({ noWheelClassName, preventScrolling, d3ZoomHandler }) {
25977
25956
  return function(event, d2) {
25978
- if (!preventScrolling && event.type === "wheel" && !event.ctrlKey || isWrappedWithClass(event, noWheelClassName))
25957
+ const isWheel = event.type === "wheel", preventZoom = !preventScrolling && isWheel && !event.ctrlKey, hasNoWheelClass = isWrappedWithClass(event, noWheelClassName);
25958
+ if (event.ctrlKey && isWheel && hasNoWheelClass && event.preventDefault(), preventZoom || hasNoWheelClass)
25979
25959
  return null;
25980
25960
  event.preventDefault(), d3ZoomHandler.call(this, event, d2);
25981
25961
  };
@@ -26331,7 +26311,7 @@ function XYResizer({ domNode, nodeId, getStoreItems, onChange, onEnd }) {
26331
26311
  }), nextValues = { ...prevValues, direction };
26332
26312
  shouldResize?.(event, nextValues) !== !1 && (onResize?.(event, nextValues), onChange(change, childChanges));
26333
26313
  }).on("end", (event) => {
26334
- onResizeEnd?.(event, { ...prevValues }), onEnd?.();
26314
+ onResizeEnd?.(event, { ...prevValues }), onEnd?.({ ...prevValues });
26335
26315
  });
26336
26316
  selection2.call(dragHandler);
26337
26317
  }
@@ -26804,12 +26784,12 @@ function BatchProvider({ children: children2 }) {
26804
26784
  next = typeof payload == "function" ? payload(next) : payload;
26805
26785
  if (hasDefaultNodes)
26806
26786
  setNodes(next);
26807
- else if (onNodesChange) {
26787
+ else {
26808
26788
  const changes = getElementsDiffChanges({
26809
26789
  items: next,
26810
26790
  lookup: nodeLookup
26811
26791
  });
26812
- changes.length > 0 ? onNodesChange(changes) : fitViewQueued && window.requestAnimationFrame(() => {
26792
+ changes.length > 0 ? onNodesChange?.(changes) : fitViewQueued && window.requestAnimationFrame(() => {
26813
26793
  const { fitViewQueued: fitViewQueued2, nodes: nodes2, setNodes: setNodes2 } = store.getState();
26814
26794
  fitViewQueued2 && setNodes2(nodes2);
26815
26795
  });
@@ -27678,7 +27658,7 @@ function getSimpleBezierPath({ sourceX, sourceY, sourcePosition = Position.Botto
27678
27658
  ];
27679
27659
  }
27680
27660
  function createSimpleBezierEdge(params) {
27681
- return memo$2(({ id: id2, sourceX, sourceY, targetX, targetY, sourcePosition = Position.Bottom, targetPosition = Position.Top, label: label2, labelStyle, labelShowBg, labelBgStyle, labelBgPadding, labelBgBorderRadius, style: style2, markerEnd, markerStart, interactionWidth }) => {
27661
+ return memo$2(({ id: id2, sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition, label: label2, labelStyle, labelShowBg, labelBgStyle, labelBgPadding, labelBgBorderRadius, style: style2, markerEnd, markerStart, interactionWidth }) => {
27682
27662
  const [path, labelX, labelY] = getSimpleBezierPath({
27683
27663
  sourceX,
27684
27664
  sourceY,
@@ -28359,7 +28339,7 @@ function MiniMapNodes({
28359
28339
  }
28360
28340
  function NodeComponentWrapperInner({ id: id2, nodeColorFunc, nodeStrokeColorFunc, nodeClassNameFunc, nodeBorderRadius, nodeStrokeWidth, shapeRendering, NodeComponent, onClick }) {
28361
28341
  const { node: node2, x: x2, y: y2, width, height } = useStore$1((s2) => {
28362
- const node22 = s2.nodeLookup.get(id2), { x: x22, y: y22 } = node22.internals.positionAbsolute, { width: width2, height: height2 } = getNodeDimensions(node22);
28342
+ const { internals } = s2.nodeLookup.get(id2), node22 = internals.userNode, { x: x22, y: y22 } = internals.positionAbsolute, { width: width2, height: height2 } = getNodeDimensions(node22);
28363
28343
  return {
28364
28344
  node: node22,
28365
28345
  x: x22,
@@ -28442,7 +28422,7 @@ function MiniMapComponent({
28442
28422
  const [x22, y22] = minimapInstance.current?.pointer(event) || [0, 0];
28443
28423
  onClick(event, { x: x22, y: y22 });
28444
28424
  } : void 0, onSvgNodeClick = onNodeClick ? useCallback((event, nodeId) => {
28445
- const node2 = store.getState().nodeLookup.get(nodeId);
28425
+ const node2 = store.getState().nodeLookup.get(nodeId).internals.userNode;
28446
28426
  onNodeClick(event, node2);
28447
28427
  }, []) : void 0;
28448
28428
  return jsx(Panel, { position, style: {
@@ -28453,7 +28433,7 @@ function MiniMapComponent({
28453
28433
  "--xy-minimap-mask-stroke-width-props": typeof maskStrokeWidth == "number" ? maskStrokeWidth * viewScale : void 0,
28454
28434
  "--xy-minimap-node-background-color-props": typeof nodeColor == "string" ? nodeColor : void 0,
28455
28435
  "--xy-minimap-node-stroke-color-props": typeof nodeStrokeColor == "string" ? nodeStrokeColor : void 0,
28456
- "--xy-minimap-node-stroke-width-props": typeof nodeStrokeWidth == "string" ? nodeStrokeWidth : void 0
28436
+ "--xy-minimap-node-stroke-width-props": typeof nodeStrokeWidth == "number" ? nodeStrokeWidth : void 0
28457
28437
  }, className: cc(["react-flow__minimap", className]), "data-testid": "rf__minimap", children: jsxs("svg", { width: elementWidth, height: elementHeight, viewBox: `${x2} ${y2} ${width} ${height}`, className: "react-flow__minimap-svg", role: "img", "aria-labelledby": labelledBy, ref: svg, onClick: onSvgClick, children: [ariaLabel && jsx("title", { id: labelledBy, children: ariaLabel }), jsx(MiniMapNodes$1, { onClick: onSvgNodeClick, nodeColor, nodeStrokeColor, nodeBorderRadius, nodeClassName, nodeStrokeWidth, nodeComponent }), jsx("path", { className: "react-flow__minimap-mask", d: `M${x2 - offset2},${y2 - offset2}h${width + offset2 * 2}v${height + offset2 * 2}h${-width - offset2 * 2}z
28458
28438
  M${viewBB.x},${viewBB.y}h${viewBB.width}v${viewBB.height}h${-viewBB.width}z`, fillRule: "evenodd", pointerEvents: "none" })] }) });
28459
28439
  }
@@ -28524,11 +28504,15 @@ function ResizeControl({ nodeId, position, variant = ResizeControlVariant.Handle
28524
28504
  }
28525
28505
  triggerNodeChanges(changes);
28526
28506
  },
28527
- onEnd: () => {
28507
+ onEnd: ({ width, height }) => {
28528
28508
  const dimensionChange = {
28529
28509
  id: id2,
28530
28510
  type: "dimensions",
28531
- resizing: !1
28511
+ resizing: !1,
28512
+ dimensions: {
28513
+ width,
28514
+ height
28515
+ }
28532
28516
  };
28533
28517
  store.getState().triggerNodeChanges([dimensionChange]);
28534
28518
  }
@@ -28599,7 +28583,7 @@ function NodeToolbar({ nodeId, children: children2, className, style: style2, is
28599
28583
  }
28600
28584
  var s$2 = { done: !1, hasNext: !1 };
28601
28585
  function C(t2, ...o2) {
28602
- let n2 = t2, u2 = o2.map((e2) => "lazy" in e2 ? y$5(e2) : void 0), p2 = 0;
28586
+ let n2 = t2, u2 = o2.map((e2) => "lazy" in e2 ? y$4(e2) : void 0), p2 = 0;
28603
28587
  for (; p2 < o2.length; ) {
28604
28588
  if (u2[p2] === void 0 || !B(n2)) {
28605
28589
  let i2 = o2[p2];
@@ -28635,14 +28619,14 @@ function f$2(t2, o2, n2) {
28635
28619
  }
28636
28620
  return p2.hasNext && o2.push(u2), e2;
28637
28621
  }
28638
- function y$5(t2) {
28622
+ function y$4(t2) {
28639
28623
  let { lazy: o2, lazyArgs: n2 } = t2, u2 = o2(...n2);
28640
28624
  return Object.assign(u2, { isSingle: o2.single ?? !1, index: 0, items: [] });
28641
28625
  }
28642
28626
  function B(t2) {
28643
28627
  return typeof t2 == "string" || typeof t2 == "object" && t2 !== null && Symbol.iterator in t2;
28644
28628
  }
28645
- function y$4(t2, i2) {
28629
+ function y$3(t2, i2) {
28646
28630
  let a2 = i2.length - t2.length;
28647
28631
  if (a2 === 1) {
28648
28632
  let [n2, ...r2] = i2;
@@ -28668,7 +28652,7 @@ function r$6(...t2) {
28668
28652
  return u$7(Object.values, t2);
28669
28653
  }
28670
28654
  function i$8(...e2) {
28671
- return y$4(a$6, e2);
28655
+ return y$3(a$6, e2);
28672
28656
  }
28673
28657
  function a$6() {
28674
28658
  let e2 = /* @__PURE__ */ new Set();
@@ -28761,7 +28745,7 @@ function i$4(e2, o2) {
28761
28745
  for (let [r2, n2] of Object.entries(e2)) o2(n2, r2, e2) && (t2[r2] = n2);
28762
28746
  return t2;
28763
28747
  }
28764
- function y$3(...t2) {
28748
+ function y$2(...t2) {
28765
28749
  return u$7(f$1, t2);
28766
28750
  }
28767
28751
  function f$1(t2, e2) {
@@ -28874,7 +28858,7 @@ function u$3(n2, e2) {
28874
28858
  if (typeof n2 != "object" || typeof e2 != "object" || n2 === null || e2 === null || Object.getPrototypeOf(n2) !== Object.getPrototypeOf(e2)) return !1;
28875
28859
  if (Array.isArray(n2)) return l$1(n2, e2);
28876
28860
  if (n2 instanceof Map) return a$3(n2, e2);
28877
- if (n2 instanceof Set) return c$2(n2, e2);
28861
+ if (n2 instanceof Set) return c$1(n2, e2);
28878
28862
  if (n2 instanceof Date) return n2.getTime() === e2.getTime();
28879
28863
  if (n2 instanceof RegExp) return n2.toString() === e2.toString();
28880
28864
  if (Object.keys(n2).length !== Object.keys(e2).length) return !1;
@@ -28891,7 +28875,7 @@ function a$3(n2, e2) {
28891
28875
  for (let [r2, t2] of n2.entries()) if (!e2.has(r2) || !u$3(t2, e2.get(r2))) return !1;
28892
28876
  return !0;
28893
28877
  }
28894
- function c$2(n2, e2) {
28878
+ function c$1(n2, e2) {
28895
28879
  if (n2.size !== e2.size) return !1;
28896
28880
  let r2 = [...e2];
28897
28881
  for (let t2 of n2) {
@@ -28905,23 +28889,12 @@ function c$2(n2, e2) {
28905
28889
  return !0;
28906
28890
  }
28907
28891
  function j(...e2) {
28908
- return u$7(c$1, e2);
28892
+ return u$7(c, e2);
28909
28893
  }
28910
- function c$1(e2, u2) {
28894
+ function c(e2, u2) {
28911
28895
  for (let [t2, y2] of Object.entries(u2)) if (!Object.hasOwn(e2, t2) || !k(y2, e2[t2])) return !1;
28912
28896
  return !0;
28913
28897
  }
28914
- function c(...e2) {
28915
- return u$7(y$2, e2);
28916
- }
28917
- function y$2(e2, o2) {
28918
- let r2 = {};
28919
- for (let [a2, n2] of e2.entries()) {
28920
- let d2 = o2(n2, a2, e2);
28921
- r2[d2] = n2;
28922
- }
28923
- return r2;
28924
- }
28925
28898
  function i$2(...e2) {
28926
28899
  return u$7(a$2, e2);
28927
28900
  }
@@ -29013,70 +28986,64 @@ function useDebouncedEffect(callback, deps, delay2, maxWait = 0) {
29013
28986
  useEffect(useDebouncedCallback(callback, deps, delay2, maxWait), deps);
29014
28987
  }
29015
28988
  const { valueOf, toString: toString$1 } = Object.prototype, isEqual = (a2, b2) => {
29016
- if (a2 === b2)
29017
- return !0;
29018
- if (typeof a2 == "object" && typeof b2 == "object" && a2 && b2) {
29019
- if (a2.constructor !== b2.constructor)
28989
+ const visited = /* @__PURE__ */ new WeakMap(), inner2 = (a3, b3) => {
28990
+ if (a3 === b3)
28991
+ return !0;
28992
+ if (typeof a3 != "object" || typeof b3 != "object" || !a3 || !b3)
28993
+ return a3 !== a3 && b3 !== b3;
28994
+ if (Object.getPrototypeOf(a3) !== Object.getPrototypeOf(b3))
29020
28995
  return !1;
29021
- if (Array.isArray(a2)) {
29022
- const { length } = a2;
29023
- if (length !== b2.length)
28996
+ const { constructor } = a3;
28997
+ if (constructor === Date)
28998
+ return a3.getTime() === b3.getTime();
28999
+ if (constructor === RegExp)
29000
+ return a3.source === b3.source && a3.flags === b3.flags;
29001
+ if (constructor === Set) {
29002
+ if (a3.size !== b3.size)
29024
29003
  return !1;
29025
- for (let i2 = length; i2-- !== 0; )
29026
- if (!isEqual(a2[i2], b2[i2]))
29004
+ for (const value of a3)
29005
+ if (!b3.has(value))
29027
29006
  return !1;
29028
29007
  return !0;
29029
29008
  }
29030
- if (a2 instanceof RegExp)
29031
- return a2.source === b2.source && a2.flags === b2.flags;
29032
- if (a2 instanceof Date)
29033
- return a2.getTime() === b2.getTime();
29034
- if (a2 instanceof Map && b2 instanceof Map) {
29035
- if (a2.size !== b2.size)
29009
+ if (constructor === ArrayBuffer && (a3 = new DataView(a3), b3 = new DataView(b3)), constructor === DataView || ArrayBuffer.isView(a3)) {
29010
+ if (constructor !== DataView && (a3 = new DataView(a3.buffer), b3 = new DataView(b3.buffer)), a3.byteLength !== b3.byteLength)
29036
29011
  return !1;
29037
- for (const entry of a2)
29038
- if (!b2.has(entry[0]) || !isEqual(entry[1], b2.get(entry[0])))
29012
+ for (let i2 = a3.byteLength; i2-- !== 0; )
29013
+ if (a3.getUint8(i2) !== b3.getUint8(i2))
29039
29014
  return !1;
29040
29015
  return !0;
29041
29016
  }
29042
- if (a2 instanceof Set && b2 instanceof Set) {
29043
- if (a2.size !== b2.size)
29044
- return !1;
29045
- for (const value of a2)
29046
- if (!b2.has(value))
29047
- return !1;
29017
+ if (visited.has(a3) && visited.get(a3) === b3)
29048
29018
  return !0;
29049
- }
29050
- if (a2 instanceof DataView && b2 instanceof DataView) {
29051
- const { byteLength } = a2;
29052
- if (byteLength !== b2.byteLength)
29019
+ if (visited.set(a3, b3), constructor === Array) {
29020
+ if (a3.length !== b3.length)
29053
29021
  return !1;
29054
- for (let i2 = byteLength; i2-- !== 0; )
29055
- if (a2.getUint8(i2) !== b2.getUint8(i2))
29022
+ for (let i2 = a3.length; i2-- !== 0; )
29023
+ if (!inner2(a3[i2], b3[i2]))
29056
29024
  return !1;
29057
29025
  return !0;
29058
29026
  }
29059
- if (a2 instanceof ArrayBuffer && b2 instanceof ArrayBuffer && (a2 = new Uint8Array(a2), b2 = new Uint8Array(b2)), ArrayBuffer.isView(a2) && ArrayBuffer.isView(b2)) {
29060
- const { length } = a2;
29061
- if (length !== b2.length)
29027
+ if (constructor === Map) {
29028
+ if (a3.size !== b3.size)
29062
29029
  return !1;
29063
- for (let i2 = length; i2-- !== 0; )
29064
- if (a2[i2] !== b2[i2])
29030
+ for (const entry of a3)
29031
+ if (!b3.has(entry[0]) || !inner2(entry[1], b3.get(entry[0])))
29065
29032
  return !1;
29066
29033
  return !0;
29067
29034
  }
29068
- if (a2.valueOf !== valueOf && typeof a2.valueOf == "function" && typeof b2.valueOf == "function")
29069
- return a2.valueOf() === b2.valueOf();
29070
- if (a2.toString !== toString$1 && typeof a2.toString == "function" && typeof b2.toString == "function")
29071
- return a2.toString() === b2.toString();
29072
- const aKeys = Object.keys(a2);
29035
+ if (a3.valueOf !== valueOf && typeof a3.valueOf == "function" && typeof b3.valueOf == "function")
29036
+ return a3.valueOf() === b3.valueOf();
29037
+ if (a3.toString !== toString$1 && typeof a3.toString == "function" && typeof b3.toString == "function")
29038
+ return a3.toString() === b3.toString();
29039
+ const aKeys = Object.keys(a3);
29073
29040
  let key2;
29074
29041
  for (let l2 = aKeys.length; l2-- !== 0; )
29075
- if (key2 = aKeys[l2], !((key2 === "_owner" || key2 === "__v" || key2 === "__o") && Object.hasOwn(a2, "$$typeof")) && (!Object.hasOwn(b2, key2) || !isEqual(a2[key2], b2[key2])))
29042
+ if (key2 = aKeys[l2], !Object.hasOwn(b3, key2) || !inner2(a3[key2], b3[key2]))
29076
29043
  return !1;
29077
- return Object.keys(b2).length === aKeys.length;
29078
- }
29079
- return a2 !== a2 && b2 !== b2;
29044
+ return Object.keys(b3).length === aKeys.length;
29045
+ };
29046
+ return inner2(a2, b2);
29080
29047
  };
29081
29048
  function useDeepCompareEffect(callback, deps, effectHook = useEffect, ...effectHookRestArgs) {
29082
29049
  useCustomCompareEffect(callback, deps, isEqual, effectHook, ...effectHookRestArgs);
@@ -29775,10 +29742,6 @@ function RootContainer({
29775
29742
  Box,
29776
29743
  {
29777
29744
  className: cx("likec4-root", className),
29778
- css: {
29779
- // '--likec4-background-color': 'mantine.colors.body',
29780
- // '--colors-likec4-background': 'var(--mantine-color-body)',
29781
- },
29782
29745
  ref,
29783
29746
  ...reduceGraphics && {
29784
29747
  "data-likec4-reduced-graphics": !0
@@ -30977,8 +30940,8 @@ const cssTransparentBg = css({
30977
30940
  edgesFocusable: !1,
30978
30941
  nodesDraggable,
30979
30942
  nodeDragThreshold: 4,
30980
- nodeClickDistance: 1.9,
30981
- paneClickDistance: 1.9,
30943
+ nodeClickDistance: 3,
30944
+ paneClickDistance: 3,
30982
30945
  elevateNodesOnSelect: !1,
30983
30946
  selectNodesOnDrag: !1,
30984
30947
  onNodesChange,
@@ -31033,15 +30996,7 @@ const cssTransparentBg = css({
31033
30996
  const square = useStore$1(selectDimensions);
31034
30997
  return useUpdateEffect(onViewportResize, [square]), null;
31035
30998
  };
31036
- var xstateReact_cjs = {}, useIsomorphicLayoutEffect_cjs = {}, hasRequiredUseIsomorphicLayoutEffect_cjs;
31037
- function requireUseIsomorphicLayoutEffect_cjs() {
31038
- return hasRequiredUseIsomorphicLayoutEffect_cjs || (hasRequiredUseIsomorphicLayoutEffect_cjs = 1, function(exports) {
31039
- Object.defineProperty(exports, "__esModule", { value: !0 });
31040
- var react = React__default, isClient = typeof document < "u", index2 = isClient ? react.useLayoutEffect : react.useEffect;
31041
- exports.default = index2;
31042
- }(useIsomorphicLayoutEffect_cjs)), useIsomorphicLayoutEffect_cjs;
31043
- }
31044
- var xstate_cjs = {}, xstateActors_cjs = {}, raise60cebf03_cjs = {}, xstateDev_cjs = {}, hasRequiredXstateDev_cjs;
30999
+ var xstateReact_cjs = {}, xstate_cjs = {}, xstateActors_cjs = {}, raise60cebf03_cjs = {}, xstateDev_cjs = {}, hasRequiredXstateDev_cjs;
31045
31000
  function requireXstateDev_cjs() {
31046
31001
  if (hasRequiredXstateDev_cjs) return xstateDev_cjs;
31047
31002
  hasRequiredXstateDev_cjs = 1, Object.defineProperty(xstateDev_cjs, "__esModule", { value: !0 });
@@ -34571,7 +34526,7 @@ const curveCatmullRomOpen = function custom4(alpha2) {
34571
34526
  return splitProps(props, actionBtnVariantKeys);
34572
34527
  },
34573
34528
  getVariantProps: actionBtnFn.getVariantProps
34574
- }), compoundActionBtn = cva({
34529
+ }), MotionButton = /* @__PURE__ */ createMinimalMotionComponent("button"), MotionDiv = /* @__PURE__ */ createMinimalMotionComponent("div"), compoundActionBtn = cva({
34575
34530
  base: {
34576
34531
  transitionDuration: "normal",
34577
34532
  "[data-compound-title-inverse] &": {
@@ -34622,7 +34577,7 @@ function CompoundActionButton({
34622
34577
  "compound-action"
34623
34578
  ),
34624
34579
  children: /* @__PURE__ */ jsx(
34625
- m$2.div,
34580
+ MotionDiv,
34626
34581
  {
34627
34582
  initial: !1,
34628
34583
  animate: {
@@ -34680,7 +34635,7 @@ function CompoundDetailsButton({
34680
34635
  ),
34681
34636
  onClick: stopPropagation$1,
34682
34637
  children: /* @__PURE__ */ jsx(
34683
- m$2.div,
34638
+ MotionDiv,
34684
34639
  {
34685
34640
  initial: !1,
34686
34641
  animate: {
@@ -35066,7 +35021,7 @@ const isSelected$1 = ".react-flow__edge.selected", edgeStroke = "--xy-edge-strok
35066
35021
  fill: "[var(--xy-edge-stroke)]",
35067
35022
  stroke: "[var(--xy-edge-stroke)]"
35068
35023
  }), cssEdgePath = css({
35069
- fill: "[none]",
35024
+ fill: "[none!]",
35070
35025
  strokeDashoffset: 10,
35071
35026
  _noReduceGraphics: {
35072
35027
  transition: "stroke 130ms ease-out,stroke-width 130ms ease-out"
@@ -35601,18 +35556,20 @@ function arrowTypeToMarker(arrowType) {
35601
35556
  }
35602
35557
  }
35603
35558
  const EdgePath = forwardRef(({
35604
- id: id2,
35605
- data: {
35606
- line,
35607
- dir,
35608
- tail,
35609
- head
35559
+ edgeProps: {
35560
+ id: id2,
35561
+ data: {
35562
+ line,
35563
+ dir,
35564
+ tail,
35565
+ head
35566
+ },
35567
+ style: style2,
35568
+ interactionWidth
35610
35569
  },
35570
+ onEdgePointerDown,
35611
35571
  strokeWidth,
35612
- svgPath,
35613
- style: style2,
35614
- interactionWidth,
35615
- onEdgePointerDown
35572
+ svgPath
35616
35573
  }, svgPathRef) => {
35617
35574
  let markerStartName = arrowTypeToMarker(tail), markerEndName = arrowTypeToMarker(head ?? "normal");
35618
35575
  dir === "back" && ([markerStartName, markerEndName] = [markerEndName, markerStartName]);
@@ -35622,10 +35579,15 @@ const EdgePath = forwardRef(({
35622
35579
  /* @__PURE__ */ jsx(
35623
35580
  "path",
35624
35581
  {
35625
- className: cx("react-flow__edge-interaction", hideOnReducedGraphics),
35582
+ className: cx(
35583
+ "react-flow__edge-interaction",
35584
+ hideOnReducedGraphics,
35585
+ css({
35586
+ fill: "[none]",
35587
+ strokeOpacity: 0
35588
+ })
35589
+ ),
35626
35590
  d: svgPath,
35627
- fill: "none",
35628
- stroke: "transparent",
35629
35591
  strokeWidth: interactionWidth ?? 10
35630
35592
  }
35631
35593
  ),
@@ -35683,18 +35645,17 @@ const EdgePath = forwardRef(({
35683
35645
  alignItems: "center"
35684
35646
  });
35685
35647
  function ElementActionButtons({
35686
- id: id2,
35687
35648
  selected: selected2 = !1,
35688
35649
  data: {
35689
35650
  hovered: isHovered = !1
35690
35651
  },
35691
35652
  buttons: buttons2
35692
35653
  }) {
35693
- const zoomTooSmall = useIsZoomTooSmall();
35654
+ const id2 = useId$1(), zoomTooSmall = useIsZoomTooSmall();
35694
35655
  return !buttons2.length || zoomTooSmall ? null : /* @__PURE__ */ jsx(Box$1, { className: container$4, children: /* @__PURE__ */ jsx(
35695
35656
  Box$1,
35696
35657
  {
35697
- component: m$2.div,
35658
+ component: MotionDiv,
35698
35659
  layoutRoot: !0,
35699
35660
  initial: !1,
35700
35661
  style: {
@@ -35711,8 +35672,7 @@ function ElementActionButtons({
35711
35672
  children: buttons2.map((button2, index2) => /* @__PURE__ */ jsx(
35712
35673
  ActionIcon$1,
35713
35674
  {
35714
- component: m$2.button,
35715
- layout: !0,
35675
+ component: MotionButton,
35716
35676
  className: actionBtn$1({}),
35717
35677
  initial: !1,
35718
35678
  whileTap: { scale: 1 },
@@ -35723,9 +35683,10 @@ function ElementActionButtons({
35723
35683
  onDoubleClick: stopPropagation$1,
35724
35684
  children: button2.icon
35725
35685
  },
35726
- `action-button-${id2}-${button2.key ?? index2}`
35686
+ `${id2}-${button2.key ?? index2}`
35727
35687
  ))
35728
- }
35688
+ },
35689
+ `${id2}-action-buttons`
35729
35690
  ) });
35730
35691
  }
35731
35692
  const container$3 = css({
@@ -35757,11 +35718,12 @@ function ElementDetailsButton({
35757
35718
  icon: icon2,
35758
35719
  onClick
35759
35720
  }) {
35721
+ const id2 = useId$1();
35760
35722
  return /* @__PURE__ */ jsx(Box$1, { className: cx(container$3, "details-button"), children: /* @__PURE__ */ jsx(
35761
35723
  ActionIcon$1,
35762
35724
  {
35763
35725
  className: cx("nodrag nopan", actionBtn$1({ variant: "transparent" })),
35764
- component: m$2.button,
35726
+ component: MotionButton,
35765
35727
  initial: !1,
35766
35728
  style: {
35767
35729
  originX: 0.45,
@@ -35782,7 +35744,8 @@ function ElementDetailsButton({
35782
35744
  onClick,
35783
35745
  onDoubleClick: stopPropagation$1,
35784
35746
  children: icon2 ?? /* @__PURE__ */ jsx(IconId, { stroke: 1.8, style: { width: "75%" } })
35785
- }
35747
+ },
35748
+ id2
35786
35749
  ) });
35787
35750
  }
35788
35751
  const container$2 = css({
@@ -35874,7 +35837,7 @@ const ElementNodeContainer = forwardRef(({
35874
35837
  return /* @__PURE__ */ jsx(
35875
35838
  Box$1,
35876
35839
  {
35877
- component: m$2.div,
35840
+ component: MotionDiv,
35878
35841
  ref,
35879
35842
  className: cx(
35880
35843
  css({
@@ -36784,7 +36747,7 @@ const stopPropagation = (e2) => e2.stopPropagation(), Tooltip$4 = Tooltip$5.with
36784
36747
  diagramEdge.relations,
36785
36748
  m((id2) => {
36786
36749
  try {
36787
- return likec4model.relationship(id2);
36750
+ return likec4model.findRelationship(id2);
36788
36751
  } catch (e2) {
36789
36752
  return console.error(
36790
36753
  `View is cached and likec4model missing relationship ${id2} from ${sourceNode.id} -> ${targetNode.id}`,
@@ -37104,7 +37067,17 @@ const curve = d3line().curve(curveCatmullRomOpen).x((d2) => d2.x).y((d2) => d2.y
37104
37067
  }
37105
37068
  return /* @__PURE__ */ jsxs(Fragment$1, { children: [
37106
37069
  /* @__PURE__ */ jsxs(EdgeContainer, { ...props, className: clsx(isControlPointDragging && controlDragging), children: [
37107
- /* @__PURE__ */ jsx(EdgePath, { ...props, svgPath: edgePath, ref: svgPathRef, onEdgePointerDown }),
37070
+ /* @__PURE__ */ jsx(
37071
+ EdgePath,
37072
+ {
37073
+ edgeProps: props,
37074
+ svgPath: edgePath,
37075
+ ref: svgPathRef,
37076
+ ...enableEdgeEditing && {
37077
+ onEdgePointerDown
37078
+ }
37079
+ }
37080
+ ),
37108
37081
  /* @__PURE__ */ jsx(
37109
37082
  EdgeLabelContainer,
37110
37083
  {
@@ -37143,7 +37116,7 @@ const curve = d3line().curve(curveCatmullRomOpen).x((d2) => d2.x).y((d2) => d2.y
37143
37116
  cy: Math.round(p2.y),
37144
37117
  r: 3
37145
37118
  },
37146
- i2
37119
+ "controlPoints" + edgeId + "#" + i2
37147
37120
  ))
37148
37121
  }
37149
37122
  )
@@ -38258,10 +38231,13 @@ const useElementDetailsActorRef = () => {
38258
38231
  )
38259
38232
  ] })
38260
38233
  ] });
38234
+ }, setHoveredNode$3 = () => {
38261
38235
  }, TabPanelDeployments = memo$2(({ elementFqn }) => {
38262
38236
  const element = useLikeC4Model$1(!0).element(elementFqn), deployments = [...element.deployments()], tree = useTree({
38263
38237
  multiple: !1
38264
- }), data = useMemo(() => {
38238
+ });
38239
+ tree.setHoveredNode = setHoveredNode$3;
38240
+ const data = useMemo(() => {
38265
38241
  let roots = [], treeItems = /* @__PURE__ */ new Map();
38266
38242
  for (const instance of element.deployments()) {
38267
38243
  let instanceNode = {
@@ -38342,7 +38318,7 @@ const useElementDetailsActorRef = () => {
38342
38318
  }
38343
38319
  )
38344
38320
  );
38345
- }), ViewPadding = 0.1, RelationshipsBrowserActorContext = createContext(null);
38321
+ }), RelationshipsBrowserActorContext = createContext(null);
38346
38322
  function useRelationshipsBrowserActor() {
38347
38323
  return nonNullable(useContext(RelationshipsBrowserActorContext), "No RelationshipsBrowserActorContext");
38348
38324
  }
@@ -38436,13 +38412,12 @@ const RelationshipEdge$1 = customEdge((props) => {
38436
38412
  /* @__PURE__ */ jsx(
38437
38413
  EdgePath,
38438
38414
  {
38439
- ...edgeProps,
38415
+ edgeProps,
38440
38416
  svgPath,
38441
38417
  ...markOrange && {
38442
38418
  strokeWidth: 5
38443
38419
  }
38444
- },
38445
- id2
38420
+ }
38446
38421
  ),
38447
38422
  /* @__PURE__ */ jsx(
38448
38423
  EdgeLabelContainer,
@@ -38459,7 +38434,7 @@ const RelationshipEdge$1 = customEdge((props) => {
38459
38434
  children: label2
38460
38435
  }
38461
38436
  )
38462
- ] }, id2);
38437
+ ] });
38463
38438
  }), selectViewId = (s2) => s2.context.view.id;
38464
38439
  function useCurrentViewId() {
38465
38440
  const actorRef = useDiagramActorRef();
@@ -38523,9 +38498,9 @@ const ElementDetailsButtonWithHandler$1 = (props) => {
38523
38498
  }
38524
38499
  }
38525
38500
  );
38526
- }, ElementNode$1 = customNode((props) => /* @__PURE__ */ jsxs(ElementNodeContainer, { component: m$2.div, layoutId: props.id, nodeProps: props, children: [
38501
+ }, ElementNode$1 = customNode((props) => /* @__PURE__ */ jsxs(ElementNodeContainer, { component: MotionDiv, layoutId: props.id, nodeProps: props, children: [
38527
38502
  /* @__PURE__ */ jsx(ElementShape, { ...props }),
38528
- /* @__PURE__ */ jsx(ElementTitle, { ...props, iconSize: 40 }),
38503
+ /* @__PURE__ */ jsx(ElementTitle, { ...props }),
38529
38504
  /* @__PURE__ */ jsx(ElementDetailsButtonWithHandler$1, { ...props }),
38530
38505
  /* @__PURE__ */ jsx(ElementActions$1, { ...props }),
38531
38506
  /* @__PURE__ */ jsx(ElementPorts$1, { ...props })
@@ -41288,6 +41263,7 @@ const node = css({
41288
41263
  enableSelectSubject: state.context.enableSelectSubject,
41289
41264
  enableChangeScope: state.context.enableChangeScope
41290
41265
  };
41266
+ }, setHoveredNode$2 = () => {
41291
41267
  }, SelectElement = memo$2(() => {
41292
41268
  const browser = useRelationshipsBrowser(), {
41293
41269
  subjectId,
@@ -41299,7 +41275,7 @@ const node = css({
41299
41275
  } = useRelationshipsBrowserState(selector2$1), root2 = useRef(null), viewport = useRef(null), subject = useLikeC4Model$1(!0).findElement(subjectId), data = useLikeC4ElementsTree(scope === "view" && viewId ? viewId : void 0), tree = useTree({
41300
41276
  multiple: !1
41301
41277
  });
41302
- return useEffect(() => {
41278
+ return tree.setHoveredNode = setHoveredNode$2, useEffect(() => {
41303
41279
  ancestorsFqn(subjectId).reverse().forEach((id2) => {
41304
41280
  tree.expand(id2);
41305
41281
  }), tree.select(subjectId);
@@ -41507,7 +41483,6 @@ const selector$4 = (state) => ({
41507
41483
  nodeTypes: nodeTypes$1,
41508
41484
  edgeTypes: edgeTypes$1,
41509
41485
  fitView: !1,
41510
- fitViewPadding: ViewPadding,
41511
41486
  onNodeClick: useCallbackRef((e2, node2) => {
41512
41487
  browser.send({ type: "xyflow.nodeClick", node: node2 });
41513
41488
  }),
@@ -41889,13 +41864,16 @@ const treeNodeLabel = css({
41889
41864
  }
41890
41865
  }), ElementLabel = ({
41891
41866
  element
41892
- }) => /* @__PURE__ */ jsx(Box$1, { className: elementLabel, children: /* @__PURE__ */ jsx(Text, { component: "div", fz: "sm", fw: "500", children: element.title }) });
41867
+ }) => /* @__PURE__ */ jsx(Box$1, { className: elementLabel, children: /* @__PURE__ */ jsx(Text, { component: "div", fz: "sm", fw: "500", children: element.title }) }), setHoveredNode$1 = () => {
41868
+ };
41893
41869
  function TabPanelStructure({
41894
41870
  element
41895
41871
  }) {
41896
41872
  const tree = useTree({
41897
41873
  multiple: !1
41898
- }), data = useMemo(() => {
41874
+ });
41875
+ tree.setHoveredNode = setHoveredNode$1;
41876
+ const data = useMemo(() => {
41899
41877
  let seq = 1;
41900
41878
  const messageNode = (label2) => ({
41901
41879
  label: label2,
@@ -42426,22 +42404,6 @@ const backdropBlur = "--_blur", backdropOpacity = "--_opacity", level = "--_leve
42426
42404
  xl: {
42427
42405
  [offset]: "4rem"
42428
42406
  }
42429
- // inset: '[calc(2rem + var(--_level, 0) * 1rem), 2rem, 2rem, 2rem]',
42430
- // width: 'calc(100vw - 4rem)',
42431
- // height: 'calc(100vh - 4rem - var(--_level, 0) * 1rem)',
42432
- // },
42433
- // lg: {
42434
- // inset: '[calc(4rem + var(--_level, 0) * 1rem), 4rem, 4rem, 4rem]',
42435
- // width: 'calc(100vw - 8rem)',
42436
- // height: 'calc(100vh - 8rem)',
42437
- // },
42438
- // xl: {
42439
- // [borderRadius]: '8px',
42440
- // padding: '8px',
42441
- // inset: '[calc(5rem + var(--_level, 0) * 1rem), 5rem, 5rem, 5rem]',
42442
- // width: 'calc(100vw - 10rem)',
42443
- // height: 'calc(100vh - 10rem - var(--_level, 0) * 1rem)',
42444
- // },
42445
42407
  }), body = css.raw({
42446
42408
  position: "relative",
42447
42409
  containerName: "overlay-dialog",
@@ -42459,112 +42421,101 @@ const backdropBlur = "--_blur", backdropOpacity = "--_opacity", level = "--_leve
42459
42421
  base: {
42460
42422
  dialog,
42461
42423
  body
42462
- },
42463
- variants: {
42464
- level: {
42465
- 0: {
42466
- dialog: {
42467
- [level]: "0"
42468
- }
42424
+ }
42425
+ }), Overlay = forwardRef(({
42426
+ onClose,
42427
+ className,
42428
+ classes: classes2,
42429
+ overlayLevel = 0,
42430
+ children: children2,
42431
+ ...rest
42432
+ }, ref) => {
42433
+ const [opened, setOpened] = useState(!1), dialogRef = useRef(null), isClosingRef = useRef(!1), motionNotReduced = useReducedMotionConfig() !== !0, onCloseRef = useSyncedRef(onClose), close = useDebouncedCallback(
42434
+ () => {
42435
+ isClosingRef.current || (isClosingRef.current = !0, onCloseRef.current());
42436
+ },
42437
+ [],
42438
+ 50
42439
+ );
42440
+ useEffect(() => {
42441
+ const cancel = (e2) => {
42442
+ e2.preventDefault(), e2.stopPropagation(), close();
42443
+ };
42444
+ return dialogRef.current?.addEventListener("cancel", cancel, { capture: !0 }), () => {
42445
+ dialogRef.current?.removeEventListener("cancel", cancel, { capture: !0 });
42446
+ };
42447
+ }, []), useTimeoutEffect(() => {
42448
+ dialogRef.current?.open || dialogRef.current?.showModal();
42449
+ }, 30), useTimeoutEffect(() => {
42450
+ setOpened(!0);
42451
+ }, 120);
42452
+ const styles = overlay({
42453
+ level: overlayLevel
42454
+ });
42455
+ return /* @__PURE__ */ jsx(
42456
+ m$2.dialog,
42457
+ {
42458
+ ref: useMergedRef(dialogRef, ref),
42459
+ className: cx(RemoveScroll.classNames.fullWidth, styles.dialog, classes2?.dialog, className),
42460
+ layout: !0,
42461
+ style: {
42462
+ // @ts-ignore
42463
+ [level]: overlayLevel
42469
42464
  },
42470
- 1: {
42471
- dialog: {
42472
- [level]: "1"
42465
+ ...motionNotReduced ? {
42466
+ initial: {
42467
+ [backdropBlur]: "0px",
42468
+ [backdropOpacity]: "0%",
42469
+ scale: overlayLevel > 0 ? 0.9 : 1.075,
42470
+ opacity: 0
42471
+ },
42472
+ animate: {
42473
+ [backdropBlur]: overlayLevel > 0 ? "4px" : "8px",
42474
+ [backdropOpacity]: overlayLevel > 0 ? "50%" : "60%",
42475
+ scale: 1,
42476
+ opacity: 1,
42477
+ transition: {
42478
+ delay: 0.075
42479
+ }
42480
+ },
42481
+ exit: {
42482
+ scale: 1.2,
42483
+ opacity: 0,
42484
+ [backdropBlur]: "0px",
42485
+ [backdropOpacity]: "0%"
42473
42486
  }
42474
- },
42475
- 2: {
42476
- dialog: {
42477
- [level]: "2"
42487
+ } : {
42488
+ initial: {
42489
+ [backdropBlur]: "8px",
42490
+ [backdropOpacity]: "60%"
42478
42491
  }
42479
42492
  },
42480
- 3: {
42481
- dialog: {
42482
- [level]: "3"
42493
+ onClick: (e2) => {
42494
+ if (e2.stopPropagation(), e2.target?.nodeName?.toUpperCase() === "DIALOG") {
42495
+ dialogRef.current?.close();
42496
+ return;
42483
42497
  }
42484
- }
42485
- }
42486
- }
42487
- }), Overlay = forwardRef(
42488
- ({ children: children2, onClose, className, classes: classes2, overlayLevel = 0, ...rest }, ref) => {
42489
- const [opened, setOpened] = useState(!1), dialogRef = useRef(null), isClosingRef = useRef(!1), motionNotReduced = useReducedMotionConfig() !== !0, onCloseRef = useSyncedRef(onClose), close = useDebouncedCallback(
42490
- () => {
42491
- isClosingRef.current || (isClosingRef.current = !0, onCloseRef.current());
42492
42498
  },
42493
- [],
42494
- 50
42495
- );
42496
- useLayoutEffect$1(() => {
42497
- const cancel = (e2) => {
42498
- e2.preventDefault(), close();
42499
- };
42500
- return dialogRef.current?.addEventListener("cancel", cancel, { capture: !0 }), () => {
42501
- dialogRef.current?.removeEventListener("cancel", cancel, { capture: !0 });
42502
- };
42503
- }, []), useTimeoutEffect(() => {
42504
- dialogRef.current?.open || dialogRef.current?.showModal();
42505
- }, 20), useTimeoutEffect(() => {
42506
- setOpened(!0);
42507
- }, 120);
42508
- const styles = overlay({
42509
- level: overlayLevel
42510
- });
42511
- return /* @__PURE__ */ jsx(
42512
- m$2.dialog,
42513
- {
42514
- ref: useMergedRef(dialogRef, ref),
42515
- className: cx(RemoveScroll.classNames.fullWidth, styles.dialog, classes2?.dialog, className),
42516
- layout: !0,
42517
- ...motionNotReduced ? {
42518
- initial: {
42519
- [backdropBlur]: "0px",
42520
- [backdropOpacity]: "0%",
42521
- scale: overlayLevel > 0 ? 0.9 : 1.075,
42522
- opacity: 0
42523
- },
42524
- animate: {
42525
- [backdropBlur]: overlayLevel > 0 ? "4px" : "8px",
42526
- [backdropOpacity]: overlayLevel > 0 ? "50%" : "60%",
42527
- scale: 1,
42528
- opacity: 1,
42529
- transition: {
42530
- delay: 0.075
42531
- }
42532
- },
42533
- exit: {
42534
- scale: 1.2,
42535
- opacity: 0,
42536
- [backdropBlur]: "0px",
42537
- [backdropOpacity]: "0%"
42538
- }
42539
- } : {
42540
- initial: {
42541
- [backdropBlur]: "8px",
42542
- [backdropOpacity]: "60%"
42543
- }
42544
- },
42545
- onClick: (e2) => {
42546
- if (e2.stopPropagation(), e2.target?.nodeName?.toUpperCase() === "DIALOG") {
42547
- dialogRef.current?.close();
42548
- return;
42549
- }
42550
- },
42551
- onDoubleClick: stopPropagation$1,
42552
- onPointerDown: stopPropagation$1,
42553
- onClose: (e2) => {
42554
- e2.stopPropagation(), close();
42555
- },
42556
- ...rest,
42557
- children: /* @__PURE__ */ jsx(RemoveScroll, { forwardProps: !0, removeScrollBar: !1, children: /* @__PURE__ */ jsx(Box$1, { className: cx(styles.body, "overlay-body", classes2?.body), children: opened && /* @__PURE__ */ jsx(Fragment$1, { children: children2 }) }) })
42558
- }
42559
- );
42560
- }
42561
- );
42499
+ onDoubleClick: stopPropagation$1,
42500
+ onPointerDown: stopPropagation$1,
42501
+ onClose: (e2) => {
42502
+ e2.stopPropagation(), close();
42503
+ },
42504
+ ...rest,
42505
+ children: /* @__PURE__ */ jsx(RemoveScroll, { forwardProps: !0, removeScrollBar: !1, children: /* @__PURE__ */ jsx(Box$1, { className: cx(styles.body, "overlay-body", classes2?.body), children: opened && /* @__PURE__ */ jsx(Fragment$1, { children: children2 }) }) })
42506
+ }
42507
+ );
42508
+ });
42562
42509
  Overlay.displayName = "Overlay";
42563
42510
  var xstate_cjsExports = /* @__PURE__ */ requireXstate_cjs();
42564
42511
  function _update$1(current, update) {
42565
42512
  return update.map((next) => {
42566
42513
  const existing = current.find((n2) => n2.id === next.id);
42567
- return existing && existing.type === next.type && deepEqual(existing.hidden ?? !1, next.hidden ?? !1) && deepEqual(existing.source, next.source) && deepEqual(existing.sourceHandle ?? null, next.sourceHandle ?? null) && deepEqual(existing.target, next.target) && deepEqual(existing.targetHandle ?? null, next.targetHandle ?? null) && deepEqual(existing.zIndex ?? 0, next.zIndex ?? 0) && deepEqual(existing.data, next.data) ? existing : next;
42514
+ return existing && deepEqual(existing.type, next.type) ? deepEqual(existing.hidden ?? !1, next.hidden ?? !1) && deepEqual(existing.source, next.source) && deepEqual(existing.sourceHandle ?? null, next.sourceHandle ?? null) && deepEqual(existing.target, next.target) && deepEqual(existing.targetHandle ?? null, next.targetHandle ?? null) && deepEqual(existing.zIndex ?? 0, next.zIndex ?? 0) && deepEqual(existing.data, next.data) ? existing : {
42515
+ ...y$2(existing, ["hidden", "zIndex"]),
42516
+ ...next,
42517
+ data: next.data
42518
+ } : next;
42568
42519
  });
42569
42520
  }
42570
42521
  function updateEdges(current, update) {
@@ -42573,10 +42524,16 @@ function updateEdges(current, update) {
42573
42524
  function _update(current, updated) {
42574
42525
  return updated.map((update) => {
42575
42526
  const existing = current.find((n2) => n2.id === update.id);
42576
- if (existing) {
42527
+ if (existing && deepEqual(existing.type, update.type)) {
42577
42528
  const { width: existingWidth, height: existingHeight } = getNodeDimensions(existing);
42578
- if (deepEqual(existing.type, update.type) && deepEqual(existingWidth, update.initialWidth) && deepEqual(existingHeight, update.initialHeight) && deepEqual(existing.parentId ?? null, update.parentId ?? null) && deepEqual(existing.hidden ?? !1, update.hidden ?? !1) && deepEqual(existing.zIndex ?? 0, update.zIndex ?? 0) && deepEqual(existing.position, update.position) && deepEqual(existing.data, update.data))
42579
- return existing;
42529
+ return deepEqual(existingWidth, update.initialWidth) && deepEqual(existingHeight, update.initialHeight) && deepEqual(existing.parentId ?? null, update.parentId ?? null) && deepEqual(existing.hidden ?? !1, update.hidden ?? !1) && deepEqual(existing.zIndex ?? 0, update.zIndex ?? 0) && deepEqual(existing.position, update.position) && deepEqual(existing.data, update.data) ? existing : {
42530
+ ...y$2(existing, ["measured", "parentId", "hidden", "zIndex"]),
42531
+ ...update,
42532
+ // Force dimensions from update
42533
+ width: update.initialWidth,
42534
+ height: update.initialHeight,
42535
+ data: update.data
42536
+ };
42580
42537
  }
42581
42538
  return update;
42582
42539
  });
@@ -42584,6 +42541,12 @@ function _update(current, updated) {
42584
42541
  function updateNodes(current, update) {
42585
42542
  return n(update) ? _update(current, update) : (update = current, (current2) => _update(current2, update));
42586
42543
  }
42544
+ const ViewPadding = {
42545
+ top: "40px",
42546
+ bottom: "16px",
42547
+ left: "16px",
42548
+ right: "16px"
42549
+ };
42587
42550
  function viewToNodesEdge$1(view) {
42588
42551
  const xynodes = [], xyedges = [], nodeLookup = /* @__PURE__ */ new Map(), queue = Queue.from(view.nodes.reduce(
42589
42552
  (acc, node2) => (nodeLookup.set(node2.id, node2), node2.parent || acc.push({ node: node2, parent: null }), acc),
@@ -42605,7 +42568,6 @@ function viewToNodesEdge$1(view) {
42605
42568
  draggable: !1,
42606
42569
  selectable: !0,
42607
42570
  focusable: !0,
42608
- deletable: !1,
42609
42571
  position,
42610
42572
  zIndex: isCompound ? ZIndexes.Compound : ZIndexes.Element,
42611
42573
  style: {
@@ -42698,7 +42660,7 @@ function viewToNodesEdge$1(view) {
42698
42660
  zIndex: ZIndexes.Edge,
42699
42661
  // selectable: selectable,
42700
42662
  // hidden: !visiblePredicate(edge),
42701
- deletable: !1,
42663
+ // deletable: false,
42702
42664
  data: {
42703
42665
  sourceFqn: edge.sourceFqn,
42704
42666
  targetFqn: edge.targetFqn,
@@ -42748,7 +42710,7 @@ const findRootSubject = (nodes) => nodes.find(
42748
42710
  const nextSubjectCenter = {
42749
42711
  x: nextSubjectNode.position.x + (nextSubjectNode.initialWidth ?? 0) / 2,
42750
42712
  y: nextSubjectNode.position.y + (nextSubjectNode.initialHeight ?? 0) / 2
42751
- }, currentSubjectInternalNode = xyflow2.getInternalNode(currentSubjectNode.id), currentSubjectCenter = centerXYInternalNode(currentSubjectInternalNode), existingInternalNode = xyflow2.getInternalNode(existingNode.id), existingDimensions = getNodeDimensions(existingInternalNode), nested = /* @__PURE__ */ new Set();
42713
+ }, currentSubjectInternalNode = xyflow2.getInternalNode(currentSubjectNode.id), currentSubjectCenter = centerXYInternalNode(currentSubjectInternalNode), nested = /* @__PURE__ */ new Set();
42752
42714
  return currentNodes.forEach((n2) => {
42753
42715
  if (n2.id !== existingNode.id) {
42754
42716
  if (n2.data.column === "subjects") {
@@ -42766,10 +42728,10 @@ const findRootSubject = (nodes) => nodes.find(
42766
42728
  dimmed: n2.data.column === "subjects" ? "immediate" : !0
42767
42729
  }
42768
42730
  } : {
42769
- ...y$3(n2, ["parentId"]),
42731
+ ...y$2(n2, ["parentId"]),
42770
42732
  position: {
42771
- x: currentSubjectCenter.x - existingDimensions.width / 2,
42772
- y: currentSubjectCenter.y - existingDimensions.height / 2
42733
+ x: currentSubjectCenter.x - n2.initialWidth / 2,
42734
+ y: currentSubjectCenter.y - n2.initialHeight / 2
42773
42735
  },
42774
42736
  zIndex: ZIndexes.Max,
42775
42737
  hidden: !1,
@@ -42782,10 +42744,7 @@ const findRootSubject = (nodes) => nodes.find(
42782
42744
  type: "update.xydata",
42783
42745
  xynodes: currentNodes,
42784
42746
  xyedges: []
42785
- }), zoom2 = Math.min(
42786
- zoom2,
42787
- nextviewport.zoom
42788
- ), await delay$1(175), next.xynodes = next.xynodes.map(Base.setDimmed(!1)), signal.aborted || (await xyflow2.setCenter(currentSubjectCenter.x, currentSubjectCenter.y, { zoom: zoom2, duration: 350 }), await xyflow2.setCenter(nextSubjectCenter.x, nextSubjectCenter.y, { zoom: zoom2 })), updateXYData();
42747
+ }), await delay$1(120), next.xynodes = next.xynodes.map(Base.setDimmed(!1)), signal.aborted || (await xyflow2.setCenter(currentSubjectCenter.x, currentSubjectCenter.y, { zoom: zoom2, duration: 300 }), await xyflow2.setCenter(nextSubjectCenter.x, nextSubjectCenter.y, { zoom: zoom2 })), updateXYData();
42789
42748
  }), relationshipsBrowserLogic = xstate_cjsExports.setup({
42790
42749
  types: {
42791
42750
  context: {},
@@ -43035,7 +42994,7 @@ const findRootSubject = (nodes) => nodes.find(
43035
42994
  xynodes: event.output.xynodes,
43036
42995
  xyedges: event.output.xyedges,
43037
42996
  navigateFromNode: null
43038
- }), enqueue.raise({ type: "fitDiagram" }, { id: "fitDiagram", delay: 50 });
42997
+ }), enqueue.raise({ type: "fitDiagram", duration: 200 }, { id: "fitDiagram", delay: 50 });
43039
42998
  for (let i2 = 0; i2 < 6; i2++)
43040
42999
  enqueue.raise({ type: "xyflow.updateNodeInternals" }, { delay: 100 + i2 * 100 });
43041
43000
  })
@@ -43733,7 +43692,9 @@ const relationshipDetailsLogic = xstate_cjsExports.setup({
43733
43692
  }
43734
43693
  }), hotkeyLogic = xstate_cjsExports.fromCallback(({ sendBack }) => {
43735
43694
  const handler = getHotkeyHandler([
43736
- ["Escape", () => sendBack({ type: "close" }), {
43695
+ ["Escape", (event) => {
43696
+ event.stopPropagation(), sendBack({ type: "close" });
43697
+ }, {
43737
43698
  preventDefault: !0
43738
43699
  }]
43739
43700
  ]);
@@ -44018,7 +43979,7 @@ const RelationshipEdge = customEdge((props) => {
44018
43979
  data: { navigateTo }
44019
43980
  } = props, [svgPath, labelX, labelY] = getBezierPath(props), diagram = useDiagram();
44020
43981
  return /* @__PURE__ */ jsxs(EdgeContainer, { ...props, children: [
44021
- /* @__PURE__ */ jsx(EdgePath, { ...props, svgPath }),
43982
+ /* @__PURE__ */ jsx(EdgePath, { edgeProps: props, svgPath }),
44022
43983
  /* @__PURE__ */ jsx(
44023
43984
  EdgeLabelContainer,
44024
43985
  {
@@ -44083,7 +44044,7 @@ const RelationshipEdge = customEdge((props) => {
44083
44044
  );
44084
44045
  }, ElementNode = customNode((props) => /* @__PURE__ */ jsxs(ElementNodeContainer, { nodeProps: props, children: [
44085
44046
  /* @__PURE__ */ jsx(ElementShape, { ...props }),
44086
- /* @__PURE__ */ jsx(ElementTitle, { ...props, iconSize: 40 }),
44047
+ /* @__PURE__ */ jsx(ElementTitle, { ...props }),
44087
44048
  /* @__PURE__ */ jsx(ElementDetailsButtonWithHandler, { ...props }),
44088
44049
  /* @__PURE__ */ jsx(ElementActions, { ...props }),
44089
44050
  /* @__PURE__ */ jsx(ElementPorts, { ...props })
@@ -44247,9 +44208,7 @@ const scrollArea$1 = css({
44247
44208
  edge,
44248
44209
  view
44249
44210
  }) => {
44250
- const browser = useRelationshipDetails(), viewport = useRef(null);
44251
- useMantinePortalProps(), useComputedColorScheme();
44252
- const edgeSource$1 = view.nodes.find((n2) => n2.id === edge.source), edgeTarget$1 = view.nodes.find((n2) => n2.id === edge.target), edges = view.edges.flatMap((edge2) => {
44211
+ const browser = useRelationshipDetails(), viewport = useRef(null), edgeSource$1 = view.nodes.find((n2) => n2.id === edge.source), edgeTarget$1 = view.nodes.find((n2) => n2.id === edge.target), edges = view.edges.flatMap((edge2) => {
44253
44212
  const source = view.nodes.find((n2) => n2.id === edge2.source), target = view.nodes.find((n2) => n2.id === edge2.target);
44254
44213
  return source && target ? {
44255
44214
  id: edge2.id,
@@ -44360,27 +44319,28 @@ function RelationshipDetails({ actorRef }) {
44360
44319
  return initialRef.current == null && (initialRef.current = {
44361
44320
  defaultNodes: [],
44362
44321
  defaultEdges: []
44363
- }), /* @__PURE__ */ jsx(RelationshipDetailsActorContext.Provider, { value: actorRef, children: /* @__PURE__ */ jsxs(ReactFlowProvider, { ...initialRef.current, children: [
44364
- /* @__PURE__ */ jsx(LayoutGroup, { id: actorRef.sessionId, inherit: !1, children: /* @__PURE__ */ jsx(AnimatePresence, { children: /* @__PURE__ */ jsx(RelationshipDetailsInner, {}) }) }),
44365
- /* @__PURE__ */ jsx(SyncRelationshipDetailsXYFlow, {})
44366
- ] }) });
44322
+ }), /* @__PURE__ */ jsx(RelationshipDetailsActorContext.Provider, { value: actorRef, children: /* @__PURE__ */ jsx(ReactFlowProvider, { ...initialRef.current, children: /* @__PURE__ */ jsx(LayoutGroup, { id: actorRef.sessionId, inherit: !1, children: /* @__PURE__ */ jsxs(AnimatePresence, { children: [
44323
+ /* @__PURE__ */ jsx(RelationshipDetailsInner, {}, "xyflow"),
44324
+ /* @__PURE__ */ jsx(SyncRelationshipDetailsXYFlow, {}, "sync")
44325
+ ] }) }) }) });
44367
44326
  }
44368
44327
  const selectSubject = (state) => ({
44369
44328
  ...state.context.subject,
44370
44329
  viewId: state.context.viewId
44371
- });
44372
- function SyncRelationshipDetailsXYFlow() {
44330
+ }), SyncRelationshipDetailsXYFlow = memo$2(() => {
44373
44331
  const actor = useRelationshipDetailsActor(), subject = xstateReact_cjsExports.useSelector(actor, selectSubject, deepEqual), likec4model = useLikeC4Model$1(!0), view = likec4model.findView(subject.viewId) ?? null, data = useMemo(() => {
44374
44332
  let data2;
44375
- if ("edgeId" in subject) {
44333
+ if ("edgeId" in subject && n$5(subject.edgeId)) {
44376
44334
  invariant$2(view, `view ${subject.viewId} not found`);
44377
44335
  const edge = nonNullable(view.findEdge(subject.edgeId), `edge ${subject.edgeId} not found in ${subject.viewId}`);
44378
44336
  data2 = computeEdgeDetailsViewData([edge.id], view);
44379
- } else
44337
+ } else if (subject.source && subject.target)
44380
44338
  data2 = computeRelationshipDetailsViewData({
44381
44339
  source: likec4model.element(subject.source),
44382
44340
  target: likec4model.element(subject.target)
44383
44341
  });
44342
+ else
44343
+ return null;
44384
44344
  return layoutRelationshipDetails(data2, view);
44385
44345
  }, [
44386
44346
  subject,
@@ -44390,10 +44350,9 @@ function SyncRelationshipDetailsXYFlow() {
44390
44350
  return useEffect(() => {
44391
44351
  instance.viewportInitialized && actor.send({ type: "xyflow.init", instance, store });
44392
44352
  }, [store, instance.viewportInitialized, actor]), useEffect(() => {
44393
- actor.send({ type: "update.layoutData", data });
44353
+ data !== null && actor.send({ type: "update.layoutData", data });
44394
44354
  }, [data, actor]), null;
44395
- }
44396
- const selector$3 = ({ context: context2 }) => ({
44355
+ }), selector$3 = ({ context: context2 }) => ({
44397
44356
  // subject: context.subject,
44398
44357
  // view: state.context.view,
44399
44358
  initialized: context2.initialized.xydata && context2.initialized.xyflow,
@@ -44472,7 +44431,8 @@ const selector$3 = ({ context: context2 }) => ({
44472
44431
  const { subject, viewId } = useRelationshipDetailsState(topLeftPanelselector, deepEqual), view = useLikeC4Model$1(!0).findView(viewId);
44473
44432
  if (!view || !view.isDiagram())
44474
44433
  return null;
44475
- let edge = "edgeId" in subject ? view.findEdge(subject.edgeId) : ifind(view.edges(), (e2) => e2.source.element?.id === subject.source && e2.target.element?.id === subject.target) ?? ifind(view.edges(), (e2) => (e2.source.element?.id === subject.source || isAncestor(e2.source.element?.id ?? "--", subject.source)) && (e2.target.element?.id === subject.target || isAncestor(e2.target.element?.id ?? "", subject.target)));
44434
+ const edges = [...view.edges()];
44435
+ let edge = "edgeId" in subject && n$5(subject.edgeId) ? edges.find((e2) => e2.id === subject.edgeId) : f(edges, (e2) => e2.source.element?.id === subject.source && e2.target.element?.id === subject.target) || f(edges, (e2) => (e2.source.element?.id === subject.source || isAncestor(e2.source.element?.id ?? "--", subject.source ?? "__")) && (e2.target.element?.id === subject.target || isAncestor(e2.target.element?.id ?? "", subject.target ?? "__")));
44476
44436
  return edge ? /* @__PURE__ */ jsx(TopLeftPanelInner, { edge: edge.$edge, view: view.$view }) : null;
44477
44437
  }), TopLeftPanelInner = ({ edge, view }) => {
44478
44438
  const browser = useRelationshipDetails(), edgeId = edge.id, [historyEdgeId, historyOps, { history, current }] = useStateHistory(edge.id);
@@ -44597,7 +44557,7 @@ const selectOverlays = (s2) => s2.context.overlays.map((overlay2) => {
44597
44557
  return /* @__PURE__ */ jsx(
44598
44558
  Overlay,
44599
44559
  {
44600
- overlayLevel: Math.min(index2, 3),
44560
+ overlayLevel: index2,
44601
44561
  onClose: () => close(overlay2.actorRef),
44602
44562
  children: /* @__PURE__ */ jsx(RelationshipsBrowser, { actorRef: overlay2.actorRef })
44603
44563
  },
@@ -44607,7 +44567,7 @@ const selectOverlays = (s2) => s2.context.overlays.map((overlay2) => {
44607
44567
  return /* @__PURE__ */ jsx(
44608
44568
  Overlay,
44609
44569
  {
44610
- overlayLevel: Math.min(index2, 3),
44570
+ overlayLevel: index2,
44611
44571
  onClose: () => close(overlay2.actorRef),
44612
44572
  children: /* @__PURE__ */ jsx(RelationshipDetails, { actorRef: overlay2.actorRef })
44613
44573
  },
@@ -44948,17 +44908,17 @@ function useIsPickViewActive() {
44948
44908
  }
44949
44909
  function useCloseSearchAndNavigateTo() {
44950
44910
  const diagram = useDiagram(), close = useCloseSearch();
44951
- return useCallbackRef((viewId, fromElementFqn) => {
44911
+ return useCallback((viewId, fromElementFqn) => {
44952
44912
  close(() => {
44953
44913
  fromElementFqn ??= $pickView.get()?.elementFqn, setPickView(null);
44954
44914
  const fromNode = fromElementFqn ? diagram.getContext().view.nodes.find((n2) => DiagramNode.modelRef(n2) === fromElementFqn)?.id : void 0;
44955
- if (diagram.currentView.id === viewId && fromNode) {
44956
- diagram.focusNode(fromNode);
44915
+ if (diagram.currentView.id !== viewId) {
44916
+ diagram.navigateTo(viewId, fromNode);
44957
44917
  return;
44958
44918
  }
44959
- diagram.navigateTo(viewId, fromNode);
44919
+ fromNode && diagram.focusNode(fromNode);
44960
44920
  });
44961
- });
44921
+ }, [close, diagram]);
44962
44922
  }
44963
44923
  function stopAndPrevent(e2) {
44964
44924
  e2.stopPropagation(), e2.preventDefault();
@@ -44998,14 +44958,14 @@ css({
44998
44958
  opacity: 0.85
44999
44959
  }
45000
44960
  });
45001
- const NothingFound = () => /* @__PURE__ */ jsx(Box$1, { className: emptyBoX, children: "Nothing found" });
44961
+ const NothingFound = () => /* @__PURE__ */ jsx(Box, { className: emptyBoX, children: "Nothing found" });
45002
44962
  function ViewsColumn() {
45003
44963
  const search = useNormalizedSearch();
45004
44964
  let views = [...useLikeC4Model$1(!0).views()];
45005
44965
  return search && (search.startsWith("kind:") ? views = [] : views = views.filter((view) => search.startsWith("#") ? view.tags.some((tag) => tag.toLocaleLowerCase().includes(search.slice(1))) : (view.title ?? "" + view.$view.description ?? "").toLocaleLowerCase().includes(search))), /* @__PURE__ */ jsxs(
45006
44966
  Stack,
45007
44967
  {
45008
- renderRoot: (props) => /* @__PURE__ */ jsx(m$2.div, { layout: !0, ...props }),
44968
+ renderRoot: (props) => /* @__PURE__ */ jsx(MotionDiv, { layout: !0, ...props }),
45009
44969
  gap: 8,
45010
44970
  "data-likec4-search-views": !0,
45011
44971
  onKeyDown: (e2) => {
@@ -45030,7 +44990,7 @@ function ViewsColumn() {
45030
44990
  }
45031
44991
  }
45032
44992
  ) }),
45033
- views.map((view, i2) => /* @__PURE__ */ jsx(m$2.div, { layoutId: `@view${view.id}`, children: /* @__PURE__ */ jsx(
44993
+ views.map((view, i2) => /* @__PURE__ */ jsx(MotionDiv, { layoutId: `@view${view.id}`, children: /* @__PURE__ */ jsx(
45034
44994
  ViewButton,
45035
44995
  {
45036
44996
  view,
@@ -45067,7 +45027,7 @@ function ViewButton({ className, view, loop = !1, search, ...props }) {
45067
45027
  }),
45068
45028
  children: [
45069
45029
  /* @__PURE__ */ jsx(ThemeIcon, { variant: "transparent", className: btn$2.icon, children: isDeploymentView(view) ? /* @__PURE__ */ jsx(IconStack2, { stroke: 1.8 }) : /* @__PURE__ */ jsx(IconZoomScan, { stroke: 1.8 }) }),
45070
- /* @__PURE__ */ jsxs(Box$1, { style: { flexGrow: 1 }, children: [
45030
+ /* @__PURE__ */ jsxs(Box, { style: { flexGrow: 1 }, children: [
45071
45031
  /* @__PURE__ */ jsxs(Group, { gap: "xs", wrap: "nowrap", align: "center", children: [
45072
45032
  /* @__PURE__ */ jsx(Highlight, { component: "div", highlight: search, className: btn$2.title, children: view.title || "untitled" }),
45073
45033
  isCurrentView && /* @__PURE__ */ jsx(Badge, { size: "xs", fz: 9, radius: "sm", children: "current" })
@@ -45089,17 +45049,12 @@ function ViewButton({ className, view, loop = !1, search, ...props }) {
45089
45049
  }
45090
45050
  const btn$1 = buttonsva();
45091
45051
  function ElementsColumn() {
45092
- const search = useNormalizedSearch(), model = useLikeC4Model$1(!0), {
45093
- all,
45094
- byid,
45095
- roots: data
45096
- } = useMemo(() => {
45052
+ const search = useNormalizedSearch(), model = useLikeC4Model$1(!0), data = useMemo(() => {
45097
45053
  const searchTerms = search.split(".");
45098
45054
  let elements;
45099
45055
  n$3(search) || search === "kind:" ? elements = model.elements() : elements = ifilter(model.elements(), (element) => search.startsWith("kind:") ? element.kind.toLocaleLowerCase().startsWith(search.slice(5)) : search.startsWith("#") ? element.tags.some((tag) => tag.toLocaleLowerCase().includes(search.slice(1))) : (element.title + " " + element.id + " " + (element.description ?? "")).toLocaleLowerCase().includes(search));
45100
- const { all: all2, roots } = C(
45101
- elements,
45102
- toArray(),
45056
+ const byid = {}, { all, roots } = C(
45057
+ [...elements],
45103
45058
  sortParentsFirst,
45104
45059
  l$4((acc, element) => {
45105
45060
  const treeItem = {
@@ -45108,7 +45063,9 @@ function ElementsColumn() {
45108
45063
  element,
45109
45064
  searchTerms,
45110
45065
  children: []
45111
- }, parent = acc.all.findLast((root2) => isAncestor(root2.value, treeItem.value));
45066
+ };
45067
+ byid[treeItem.value] = treeItem;
45068
+ const parent = acc.all.findLast((root2) => isAncestor(root2.value, treeItem.value));
45112
45069
  return parent ? (parent.children.push(treeItem), parent.children.length > 1 && parent.children.sort(sortByLabel)) : acc.roots.push(treeItem), acc.all.push(treeItem), acc;
45113
45070
  }, {
45114
45071
  all: [],
@@ -45116,64 +45073,74 @@ function ElementsColumn() {
45116
45073
  })
45117
45074
  );
45118
45075
  return {
45119
- all: all2,
45120
- byid: c(all2, p$2("value")),
45076
+ all,
45077
+ byid,
45121
45078
  roots: roots.sort(sortByLabel)
45122
45079
  };
45123
- }, [model, search]), tree = useTree({
45080
+ }, [model, search]), handleClick = useHandleElementSelection();
45081
+ return data.all.length === 0 ? /* @__PURE__ */ jsx(NothingFound, {}) : /* @__PURE__ */ jsx(ElementsTree, { data, handleClick });
45082
+ }
45083
+ const setHoveredNode = () => {
45084
+ };
45085
+ function ElementsTree({
45086
+ data: {
45087
+ all,
45088
+ byid,
45089
+ roots
45090
+ },
45091
+ handleClick
45092
+ }) {
45093
+ const tree = useTree({
45124
45094
  multiple: !1
45125
45095
  });
45126
- useEffect(() => {
45096
+ tree.setHoveredNode = setHoveredNode, useEffect(() => {
45127
45097
  tree.collapseAllNodes();
45128
45098
  for (const nd of all)
45129
45099
  nd.children.length > 0 && tree.expand(nd.value);
45130
45100
  }, [all]);
45131
- const handleClick = useHandleElementSelection();
45132
- return /* @__PURE__ */ jsxs(Fragment$1, { children: [
45133
- data.length === 0 && /* @__PURE__ */ jsx(NothingFound, {}),
45134
- /* @__PURE__ */ jsx(
45135
- Tree,
45136
- {
45137
- "data-likec4-search-elements": !0,
45138
- allowRangeSelection: !1,
45139
- clearSelectionOnOutsideClick: !0,
45140
- selectOnClick: !1,
45141
- tree,
45142
- data,
45143
- levelOffset: "lg",
45144
- classNames: {
45145
- root: treeRoot,
45146
- node: cx(focusable, treeNode),
45147
- label: treeLabel,
45148
- subtree: treeSubtree
45149
- },
45150
- onKeyDownCapture: (e2) => {
45151
- const target = e2.target, id2 = target.getAttribute("data-value"), node2 = !!id2 && byid[id2];
45152
- if (node2) {
45153
- if (e2.key === "ArrowUp") {
45154
- id2 === data[0]?.value && (stopAndPrevent(e2), moveFocusToSearchInput());
45155
- return;
45156
- }
45157
- if (e2.key === "ArrowRight") {
45158
- if (node2.children.length > 0 && tree.expandedState[id2] === !1)
45159
- return;
45160
- const maxY = (e2.target.querySelector(".mantine-Tree-label") ?? target).getBoundingClientRect().y, viewButtons = [...document.querySelectorAll(
45161
- `[data-likec4-search-views] .${focusable}`
45162
- )];
45163
- let view = viewButtons.length > 1 ? viewButtons.find((el, i2, all2) => centerY(el) > maxY || i2 === all2.length - 1) : null;
45164
- view ??= d(viewButtons), view && (stopAndPrevent(e2), view.focus());
45165
- return;
45166
- }
45167
- if (e2.key === " " || e2.key === "Enter") {
45168
- stopAndPrevent(e2), handleClick(node2.element);
45169
- return;
45170
- }
45171
- }
45172
- },
45173
- renderNode: ElementTreeNode
45101
+ const onKeyDownCapture = useCallbackRef((e2) => {
45102
+ const target = e2.target, id2 = target.getAttribute("data-value"), node2 = !!id2 && byid[id2];
45103
+ if (node2) {
45104
+ if (e2.key === "ArrowUp") {
45105
+ id2 === roots[0]?.value && (stopAndPrevent(e2), moveFocusToSearchInput());
45106
+ return;
45174
45107
  }
45175
- )
45176
- ] });
45108
+ if (e2.key === "ArrowRight") {
45109
+ if (node2.children.length > 0 && tree.expandedState[id2] === !1)
45110
+ return;
45111
+ const maxY = (e2.target.querySelector(".mantine-Tree-label") ?? target).getBoundingClientRect().y, viewButtons = [...document.querySelectorAll(
45112
+ `[data-likec4-search-views] .${focusable}`
45113
+ )];
45114
+ let view = viewButtons.length > 1 ? viewButtons.find((el, i2, all2) => centerY(el) > maxY || i2 === all2.length - 1) : null;
45115
+ view ??= d(viewButtons), view && (stopAndPrevent(e2), view.focus());
45116
+ return;
45117
+ }
45118
+ if (e2.key === " " || e2.key === "Enter") {
45119
+ stopAndPrevent(e2), handleClick(node2.element);
45120
+ return;
45121
+ }
45122
+ }
45123
+ });
45124
+ return /* @__PURE__ */ jsx(
45125
+ Tree,
45126
+ {
45127
+ "data-likec4-search-elements": !0,
45128
+ allowRangeSelection: !1,
45129
+ clearSelectionOnOutsideClick: !0,
45130
+ selectOnClick: !1,
45131
+ tree,
45132
+ data: roots,
45133
+ levelOffset: "lg",
45134
+ classNames: {
45135
+ root: treeRoot,
45136
+ node: cx(focusable, treeNode),
45137
+ label: treeLabel,
45138
+ subtree: treeSubtree
45139
+ },
45140
+ onKeyDownCapture,
45141
+ renderNode: ElementTreeNode
45142
+ }
45143
+ );
45177
45144
  }
45178
45145
  function ElementTreeNode({ node: node2, elementProps, hasChildren, expanded }) {
45179
45146
  const { element, searchTerms } = node2, elementIcon$12 = IconOrShapeRenderer({
@@ -45185,7 +45152,7 @@ function ElementTreeNode({ node: node2, elementProps, hasChildren, expanded }) {
45185
45152
  },
45186
45153
  className: cx(btn$1.icon, elementIcon)
45187
45154
  }), views = [...element.views()], handleClick = useHandleElementSelection(), key2 = `@tree.${node2.value}`;
45188
- return /* @__PURE__ */ jsxs(m$2.div, { layoutId: key2, ...elementProps, children: [
45155
+ return /* @__PURE__ */ jsxs(MotionDiv, { layoutId: key2, ...elementProps, children: [
45189
45156
  /* @__PURE__ */ jsx(
45190
45157
  ActionIcon$1,
45191
45158
  {
@@ -45212,7 +45179,7 @@ function ElementTreeNode({ node: node2, elementProps, hasChildren, expanded }) {
45212
45179
  /* @__PURE__ */ jsxs(
45213
45180
  UnstyledButton,
45214
45181
  {
45215
- component: m$2.button,
45182
+ component: MotionButton,
45216
45183
  layout: !0,
45217
45184
  tabIndex: -1,
45218
45185
  className: clsx(btn$1.root, "group", "likec4-element-button"),
@@ -45246,11 +45213,11 @@ function ElementTreeNode({ node: node2, elementProps, hasChildren, expanded }) {
45246
45213
  ]
45247
45214
  }
45248
45215
  )
45249
- ] }, key2);
45216
+ ] });
45250
45217
  }
45251
45218
  function useHandleElementSelection() {
45252
45219
  const navigateTo = useCloseSearchAndNavigateTo();
45253
- return useCallbackRef((element) => {
45220
+ return useCallback((element) => {
45254
45221
  const views = [...element.views()];
45255
45222
  if (views.length === 0)
45256
45223
  return;
@@ -45265,7 +45232,7 @@ function useHandleElementSelection() {
45265
45232
  scoped,
45266
45233
  others
45267
45234
  });
45268
- });
45235
+ }, [setPickView, navigateTo]);
45269
45236
  }
45270
45237
  const backdrop = css({
45271
45238
  position: "fixed",
@@ -45470,7 +45437,7 @@ function LikeC4SearchInput() {
45470
45437
  }
45471
45438
  );
45472
45439
  }
45473
- function LikeC4Search() {
45440
+ const LikeC4Search = memo$2(() => {
45474
45441
  const [searchOpened, searchOps] = useDisclosure(!1);
45475
45442
  useHotkeys([
45476
45443
  ["mod+k", () => searchOps.toggle(), {
@@ -45494,8 +45461,8 @@ function LikeC4Search() {
45494
45461
  }
45495
45462
  }
45496
45463
  ),
45497
- /* @__PURE__ */ jsx(Portal, { ...portalProps, children: /* @__PURE__ */ jsx(RemoveScroll, { enabled: searchOpened, children: /* @__PURE__ */ jsx(AnimatePresence, { onExitComplete, children: searchOpened && /* @__PURE__ */ jsxs(Fragment$1, { children: [
45498
- /* @__PURE__ */ jsx(
45464
+ /* @__PURE__ */ jsx(Portal, { ...portalProps, reuseTargetNode: !0, children: /* @__PURE__ */ jsxs(AnimatePresence, { onExitComplete, children: [
45465
+ searchOpened && /* @__PURE__ */ jsx(
45499
45466
  m$2.div,
45500
45467
  {
45501
45468
  className: backdrop,
@@ -45503,24 +45470,25 @@ function LikeC4Search() {
45503
45470
  animate: {
45504
45471
  opacity: 1,
45505
45472
  transition: {
45506
- duration: 0.1
45473
+ duration: 0.13
45507
45474
  }
45508
45475
  },
45509
45476
  exit: {
45510
45477
  opacity: 0,
45511
45478
  transition: {
45512
- duration: 0.075
45479
+ duration: 0.13
45513
45480
  }
45514
45481
  }
45515
45482
  },
45516
45483
  "backdrop"
45517
45484
  ),
45518
- /* @__PURE__ */ jsx(LikeC4SearchOverlay, {}, "overlay")
45519
- ] }) }) }) })
45485
+ searchOpened && /* @__PURE__ */ jsx(LikeC4SearchOverlay, {}, "overlay")
45486
+ ] }) })
45520
45487
  ] });
45521
- }
45522
- function LikeC4SearchOverlay() {
45523
- const close = useCloseSearch(), ref = useFocusTrap();
45488
+ });
45489
+ LikeC4Search.displayName = "LikeC4Search";
45490
+ const LikeC4SearchOverlay = () => {
45491
+ const close = useCloseSearch(), pickViewActive = useIsPickViewActive();
45524
45492
  return useWindowEvent(
45525
45493
  "keydown",
45526
45494
  (event) => {
@@ -45532,9 +45500,9 @@ function LikeC4SearchOverlay() {
45532
45500
  ), /* @__PURE__ */ jsxs(
45533
45501
  m$2.div,
45534
45502
  {
45535
- ref,
45536
45503
  className: root,
45537
- "data-likec4-search": !0,
45504
+ "data-likec4-search": "true",
45505
+ initial: !1,
45538
45506
  animate: {
45539
45507
  opacity: 1,
45540
45508
  scale: 1,
@@ -45543,14 +45511,15 @@ function LikeC4SearchOverlay() {
45543
45511
  exit: {
45544
45512
  opacity: 0,
45545
45513
  scale: 0.9,
45514
+ translateY: -30,
45546
45515
  transition: {
45547
- duration: 0.1
45516
+ duration: 0.13
45548
45517
  }
45549
45518
  },
45550
45519
  children: [
45551
45520
  /* @__PURE__ */ jsxs(Group, { wrap: "nowrap", children: [
45552
- /* @__PURE__ */ jsx(Box$1, { flex: 1, px: "sm", children: /* @__PURE__ */ jsx(LikeC4SearchInput, {}) }),
45553
- /* @__PURE__ */ jsx(Box$1, { flex: "0 0 auto", children: /* @__PURE__ */ jsx(
45521
+ /* @__PURE__ */ jsx(Box, { flex: 1, px: "sm", children: /* @__PURE__ */ jsx(LikeC4SearchInput, {}) }),
45522
+ /* @__PURE__ */ jsx(Box, { flex: "0 0 auto", children: /* @__PURE__ */ jsx(
45554
45523
  ActionIcon$1,
45555
45524
  {
45556
45525
  size: "lg",
@@ -45569,12 +45538,12 @@ function LikeC4SearchOverlay() {
45569
45538
  /* @__PURE__ */ jsxs(
45570
45539
  Grid,
45571
45540
  {
45572
- style: {
45541
+ className: css({
45573
45542
  containerName: "likec4-search-elements",
45574
45543
  containerType: "size",
45575
45544
  overflow: "hidden",
45576
45545
  flexGrow: 1
45577
- },
45546
+ }),
45578
45547
  children: [
45579
45548
  /* @__PURE__ */ jsx(GridCol, { span: 6, children: /* @__PURE__ */ jsx(
45580
45549
  ScrollArea,
@@ -45599,12 +45568,11 @@ function LikeC4SearchOverlay() {
45599
45568
  ]
45600
45569
  }
45601
45570
  ),
45602
- /* @__PURE__ */ jsx(Box$1, {}),
45603
- /* @__PURE__ */ jsx(PickView, {})
45571
+ pickViewActive && /* @__PURE__ */ jsx(PickView, {})
45604
45572
  ]
45605
45573
  }
45606
45574
  );
45607
- }
45575
+ };
45608
45576
  function PickView() {
45609
45577
  const pickview$1 = usePickView(), focusTrapRef = useFocusTrap(!!pickview$1);
45610
45578
  return useFocusReturn({
@@ -46190,7 +46158,7 @@ const autolayoutButton = css({
46190
46158
  enableReadOnly,
46191
46159
  enableVscode
46192
46160
  } = useEnabledFeatures(), notReadOnly = !enableReadOnly, portalProps = useMantinePortalProps(), ControlsLayout = useControlsCustomLayout() ?? ControlsDefaultLayout;
46193
- return /* @__PURE__ */ jsx(LayoutGroup, { inherit: !1, children: /* @__PURE__ */ jsx(AnimatePresence, { initial: !1, mode: "wait", children: isNotActiveWalkthrough && /* @__PURE__ */ jsx(
46161
+ return /* @__PURE__ */ jsx(Fragment$1, { children: isNotActiveWalkthrough && /* @__PURE__ */ jsx(
46194
46162
  ControlsLayout,
46195
46163
  {
46196
46164
  burgerMenu: onBurgerMenuClick && /* @__PURE__ */ jsx(
@@ -46232,7 +46200,7 @@ const autolayoutButton = css({
46232
46200
  ) })
46233
46201
  ] })
46234
46202
  }
46235
- ) }) });
46203
+ ) });
46236
46204
  }), SyncLayoutBadge = () => useDiagramSyncLayoutState((s2) => s2.hasTag("pending")) ? /* @__PURE__ */ jsx(Badge, { color: "pink", radius: "xs", size: "xs", variant: "light", leftSection: /* @__PURE__ */ jsx(Loader, { color: "orange", size: 8 }), children: "Pending..." }) : null, card$1 = css({
46237
46205
  cursor: "default",
46238
46206
  minWidth: 200,
@@ -47708,7 +47676,7 @@ function mergeXYNodesEdges({ context: context2, event }) {
47708
47676
  if (existing) {
47709
47677
  const { width: existingWidth, height: existingHeight } = getNodeDimensions(existing);
47710
47678
  return deepEqual(existing.type, update.type) && deepEqual(existingWidth, update.initialWidth) && deepEqual(existingHeight, update.initialHeight) && deepEqual(existing.hidden ?? !1, update.hidden ?? !1) && deepEqual(existing.position, update.position) && deepEqual(existing.data, update.data) && deepEqual(existing.parentId ?? null, update.parentId ?? null) ? existing : {
47711
- ...y$3(existing, ["measured", "parentId"]),
47679
+ ...y$2(existing, ["measured", "parentId"]),
47712
47680
  ...update,
47713
47681
  // Force dimensions from update
47714
47682
  width: update.initialWidth,
@@ -47973,14 +47941,20 @@ function updateActiveWalkthrough({ context: context2 }) {
47973
47941
  }
47974
47942
  const hotkeyActorLogic = xstate_cjsExports.fromCallback(({ sendBack }) => {
47975
47943
  const escHandler = getHotkeyHandler([
47976
- ["Escape", () => sendBack({ type: "key.esc" }), {
47944
+ ["Escape", (event) => {
47945
+ event.stopPropagation(), sendBack({ type: "key.esc" });
47946
+ }, {
47977
47947
  preventDefault: !0
47978
47948
  }]
47979
47949
  ]), arrowshandler = getHotkeyHandler([
47980
- ["ArrowLeft", () => sendBack({ type: "key.arrow.left" }), {
47950
+ ["ArrowLeft", (event) => {
47951
+ event.stopPropagation(), sendBack({ type: "key.arrow.left" });
47952
+ }, {
47981
47953
  preventDefault: !0
47982
47954
  }],
47983
- ["ArrowRight", () => sendBack({ type: "key.arrow.right" }), {
47955
+ ["ArrowRight", (event) => {
47956
+ event.stopPropagation(), sendBack({ type: "key.arrow.right" });
47957
+ }, {
47984
47958
  preventDefault: !0
47985
47959
  }]
47986
47960
  ]);
@@ -48376,7 +48350,6 @@ const diagramMachine = xstate_cjsExports.setup({
48376
48350
  type: "xyflow:fitDiagram",
48377
48351
  params: { duration: 0 }
48378
48352
  },
48379
- "startSyncLayout",
48380
48353
  xstate_cjsExports.assign(({ context: context2 }) => ({
48381
48354
  navigationHistory: {
48382
48355
  currentIndex: 0,
@@ -48386,7 +48359,8 @@ const diagramMachine = xstate_cjsExports.setup({
48386
48359
  viewport: { ...context2.xyflow.getViewport() }
48387
48360
  }]
48388
48361
  }
48389
- }))
48362
+ })),
48363
+ "startSyncLayout"
48390
48364
  ],
48391
48365
  target: "ready"
48392
48366
  }, {
@@ -48752,7 +48726,7 @@ const diagramMachine = xstate_cjsExports.setup({
48752
48726
  "update.view": {
48753
48727
  actions: xstate_cjsExports.enqueueActions(({ enqueue, context: context2, event }) => {
48754
48728
  const { fromNode, toNode } = findCorrespondingNode(context2, event);
48755
- fromNode && toNode ? (enqueue({
48729
+ enqueue(fromNode && toNode ? {
48756
48730
  type: "xyflow:alignNodeFromToAfterNavigate",
48757
48731
  params: {
48758
48732
  fromNode: fromNode.id,
@@ -48761,13 +48735,13 @@ const diagramMachine = xstate_cjsExports.setup({
48761
48735
  y: toNode.position[1]
48762
48736
  }
48763
48737
  }
48764
- }), enqueue.raise({ type: "fitDiagram" }, { id: "fitDiagram", delay: 80 })) : (enqueue({
48738
+ } : {
48765
48739
  type: "xyflow:setViewportCenter",
48766
48740
  params: getBBoxCenter(event.view.bounds)
48767
- }), enqueue.raise({ type: "fitDiagram", duration: 200 }, { id: "fitDiagram", delay: 25 })), enqueue.assign(updateNavigationHistory), enqueue.assign({
48741
+ }), enqueue.assign(updateNavigationHistory), enqueue.assign({
48768
48742
  ...mergeXYNodesEdges({ context: context2, event }),
48769
48743
  lastOnNavigate: null
48770
- }), enqueue("startSyncLayout");
48744
+ }), enqueue("startSyncLayout"), enqueue.raise({ type: "fitDiagram" }, { id: "fitDiagram", delay: 25 });
48771
48745
  }),
48772
48746
  target: "#idle"
48773
48747
  }
@@ -48876,7 +48850,9 @@ function DiagramActorProvider({
48876
48850
  diagramMachine.provide({
48877
48851
  actions: {
48878
48852
  "trigger:NavigateTo": (_, { viewId }) => {
48879
- handlersRef.current.onNavigateTo?.(viewId);
48853
+ setTimeout(() => {
48854
+ handlersRef.current.onNavigateTo?.(viewId);
48855
+ }, 30);
48880
48856
  },
48881
48857
  "trigger:OnChange": (_, params) => {
48882
48858
  handlersRef.current.onChange?.(params);
@@ -50421,15 +50397,10 @@ async function downloadAsPng({
50421
50397
  pngFilename,
50422
50398
  viewport
50423
50399
  }) {
50424
- const { toBlob } = await import("./index-iX7kahqQ.js"), {
50425
- width,
50426
- height
50427
- } = viewport.getBoundingClientRect();
50400
+ const { toBlob } = await import("./index-iX7kahqQ.js");
50428
50401
  try {
50429
50402
  const blob = await toBlob(viewport, {
50430
50403
  backgroundColor: "transparent",
50431
- width,
50432
- height,
50433
50404
  cacheBust: !0,
50434
50405
  imagePlaceholder: "data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="
50435
50406
  });
@@ -50447,19 +50418,23 @@ function ExportPage() {
50447
50418
  download = !1
50448
50419
  } = useSearch$1({
50449
50420
  strict: !1
50450
- }), { viewId } = useParams({ strict: !1 }), diagram = useCurrentDiagram(), viewportRef = useRef(null), loadingOverlayRef = useRef(null), downloadedRef = useRef(!1);
50451
- if (useTransparentBackground(), useEffect(() => {
50452
- document.querySelectorAll(".react-flow__viewport").forEach((el) => {
50453
- el.style.transform = "";
50454
- });
50455
- }), useDebouncedEffect(
50421
+ }), diagram = useCurrentDiagram(), viewportRef = useRef(null), loadingOverlayRef = useRef(null), downloadedRef = useRef(!1);
50422
+ if (useTransparentBackground(), useEffect(
50423
+ () => {
50424
+ if (!viewportRef.current)
50425
+ return;
50426
+ [...viewportRef.current.querySelectorAll(".react-flow__viewport")].forEach((el) => {
50427
+ el.style.transform = "";
50428
+ });
50429
+ }
50430
+ ), useDebouncedEffect(
50456
50431
  () => {
50457
50432
  const viewport = viewportRef.current;
50458
50433
  if (!download || !viewport || !diagram)
50459
50434
  return;
50460
50435
  const loadingOverlay = loadingOverlayRef.current;
50461
50436
  loadingOverlay && (loadingOverlay.style.display = "none"), !downloadedRef.current && (downloadedRef.current = !0, downloadAsPng({
50462
- pngFilename: viewId,
50437
+ pngFilename: diagram.id,
50463
50438
  viewport
50464
50439
  }));
50465
50440
  },
@@ -50469,11 +50444,11 @@ function ExportPage() {
50469
50444
  throw notFound();
50470
50445
  const width = diagram.bounds.width + padding * 2, height = diagram.bounds.height + padding * 2;
50471
50446
  return /* @__PURE__ */ jsxs(
50472
- Box$1,
50447
+ Box,
50473
50448
  {
50474
50449
  ref: viewportRef,
50475
- className: cssExportView,
50476
- role: "presentation",
50450
+ "data-testid": "export-page",
50451
+ className: cx(cssExportView),
50477
50452
  style: {
50478
50453
  padding,
50479
50454
  minWidth: width,