likec4 1.6.1 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1003) hide show
  1. package/dist/__app__/index.html +1 -1
  2. package/dist/__app__/react/likec4.tsx +6 -2
  3. package/dist/__app__/src/chunks/IconCopy-BoSoNPZ_.js +21 -0
  4. package/dist/__app__/src/chunks/LikeC4Diagram-DytrE8GE.js +9769 -0
  5. package/dist/__app__/src/chunks/StaticLikeC4Diagram-DdbjVDqf.js +32 -0
  6. package/dist/__app__/src/chunks/chunk-RAAYCPUM-CpeCcSnm.js +13 -0
  7. package/dist/__app__/src/chunks/chunk-SGAFZVQH-F2W_It6h.js +8 -0
  8. package/dist/__app__/src/chunks/const-DiwrD95Q.js +6 -0
  9. package/dist/__app__/src/chunks/createReactComponent-BWheWDGL.js +64 -0
  10. package/dist/__app__/src/chunks/index-BxglQLE6.js +10 -0
  11. package/dist/__app__/src/chunks/index-fBIC0lf6.js +12 -0
  12. package/dist/__app__/src/{index-Wk755r9n.js → chunks/index-nxRBtTOQ.js} +1 -2
  13. package/dist/__app__/src/chunks/likec4-DiOy4PZ9.js +6451 -0
  14. package/dist/__app__/src/chunks/mantine-u17mT9KZ.js +12251 -0
  15. package/dist/__app__/src/chunks/react-resizable-panels.browser.esm-BaxT8im_.js +1528 -0
  16. package/dist/__app__/src/chunks/tanstack-router-Cg36mbgZ.js +2484 -0
  17. package/dist/__app__/src/components/ColorSchemeToggle.js +38 -0
  18. package/dist/__app__/src/components/CopyToClipboard.js +17 -0
  19. package/dist/__app__/src/components/NotFound.js +40 -0
  20. package/dist/__app__/src/components/RenderIcon.js +9 -0
  21. package/dist/__app__/src/components/sidebar/Drawer.js +186 -0
  22. package/dist/__app__/src/components/view-page/Header.js +416 -0
  23. package/dist/__app__/src/hooks.js +16 -0
  24. package/dist/__app__/src/main.js +5 -33875
  25. package/dist/__app__/src/routeTree.gen.js +57 -0
  26. package/dist/__app__/src/router.js +26 -0
  27. package/dist/__app__/src/routes/__root.js +42 -0
  28. package/dist/__app__/src/routes/embed._viewId.js +45 -0
  29. package/dist/__app__/src/routes/export._viewId.js +60 -0
  30. package/dist/__app__/src/routes/index.css.js +7 -0
  31. package/dist/__app__/src/routes/index.js +89 -0
  32. package/dist/__app__/src/routes/view._viewId.d2.js +53 -0
  33. package/dist/__app__/src/routes/view._viewId.dot.js +58 -0
  34. package/dist/__app__/src/routes/view._viewId.editor.js +43 -0
  35. package/dist/__app__/src/routes/view._viewId.index.js +39 -0
  36. package/dist/__app__/src/routes/view._viewId.js +173 -0
  37. package/dist/__app__/src/routes/view._viewId.mmd.js +102 -0
  38. package/dist/__app__/src/routes/view.css.js +12 -0
  39. package/dist/__app__/src/routes/view_viewId_.css.js +7 -0
  40. package/dist/__app__/src/routes/webcomponent._.js +61 -0
  41. package/dist/__app__/src/style.css +1 -1
  42. package/dist/__app__/src/theme.js +21 -0
  43. package/dist/__app__/tsconfig.tsbuildinfo +1 -1
  44. package/dist/__app__/webcomponent/webcomponent.js +831 -846
  45. package/dist/cli/index.mjs +296 -354
  46. package/icons/all.d.ts +957 -0
  47. package/icons/all.js +1902 -0
  48. package/icons/aws/activate.js +21 -8
  49. package/icons/aws/alexa-for-business.js +21 -8
  50. package/icons/aws/amplify.js +21 -8
  51. package/icons/aws/apache-mxnet-on-aws.js +21 -8
  52. package/icons/aws/api-gateway.js +21 -8
  53. package/icons/aws/app-config.js +21 -8
  54. package/icons/aws/app-flow.js +21 -8
  55. package/icons/aws/app-mesh.js +21 -8
  56. package/icons/aws/app-runner.js +21 -8
  57. package/icons/aws/app-stream.js +21 -8
  58. package/icons/aws/app-sync.js +21 -8
  59. package/icons/aws/application-auto-scaling.js +21 -8
  60. package/icons/aws/application-composer.js +21 -8
  61. package/icons/aws/application-cost-profiler.js +21 -8
  62. package/icons/aws/application-discovery-service.js +21 -8
  63. package/icons/aws/application-migration-service.js +21 -8
  64. package/icons/aws/artifact.js +21 -8
  65. package/icons/aws/athena.js +21 -8
  66. package/icons/aws/audit-manager.js +21 -8
  67. package/icons/aws/augmented-ai-a2i.js +21 -8
  68. package/icons/aws/aurora.js +21 -8
  69. package/icons/aws/auto-scaling.js +21 -8
  70. package/icons/aws/backint-agent.js +21 -8
  71. package/icons/aws/backup.js +21 -8
  72. package/icons/aws/batch.js +21 -8
  73. package/icons/aws/billing-conductor.js +21 -8
  74. package/icons/aws/bottlerocket.js +21 -8
  75. package/icons/aws/braket.js +21 -8
  76. package/icons/aws/budgets.js +21 -8
  77. package/icons/aws/certificate-manager.js +21 -8
  78. package/icons/aws/chatbot.js +21 -8
  79. package/icons/aws/chime-sdk.js +21 -8
  80. package/icons/aws/chime-voice-connector.js +21 -8
  81. package/icons/aws/chime.js +21 -8
  82. package/icons/aws/clean-rooms.js +21 -8
  83. package/icons/aws/client-vpn.js +21 -8
  84. package/icons/aws/cloud-control-api.js +21 -8
  85. package/icons/aws/cloud-development-kit.js +21 -8
  86. package/icons/aws/cloud-directory.js +21 -8
  87. package/icons/aws/cloud-formation.js +21 -8
  88. package/icons/aws/cloud-front.js +21 -8
  89. package/icons/aws/cloud-hsm.js +21 -8
  90. package/icons/aws/cloud-map.js +21 -8
  91. package/icons/aws/cloud-search.js +21 -8
  92. package/icons/aws/cloud-shell.js +21 -8
  93. package/icons/aws/cloud-trail.js +21 -8
  94. package/icons/aws/cloud-wan.js +21 -8
  95. package/icons/aws/cloud-watch.js +21 -8
  96. package/icons/aws/cloud9.js +21 -8
  97. package/icons/aws/code-artifact.js +21 -8
  98. package/icons/aws/code-build.js +21 -8
  99. package/icons/aws/code-catalyst.js +21 -8
  100. package/icons/aws/code-commit.js +21 -8
  101. package/icons/aws/code-deploy.js +21 -8
  102. package/icons/aws/code-guru.js +21 -8
  103. package/icons/aws/code-pipeline.js +21 -8
  104. package/icons/aws/code-star.js +21 -8
  105. package/icons/aws/code-whisperer.js +21 -8
  106. package/icons/aws/cognito.js +21 -8
  107. package/icons/aws/command-line-interface.js +21 -8
  108. package/icons/aws/comprehend-medical.js +21 -8
  109. package/icons/aws/comprehend.js +21 -8
  110. package/icons/aws/compute-optimizer.js +21 -8
  111. package/icons/aws/config.js +21 -8
  112. package/icons/aws/connect.js +21 -8
  113. package/icons/aws/console-mobile-application.js +21 -8
  114. package/icons/aws/control-tower.js +21 -8
  115. package/icons/aws/corretto.js +21 -8
  116. package/icons/aws/cost-and-usage-report.js +21 -8
  117. package/icons/aws/cost-explorer.js +21 -8
  118. package/icons/aws/data-exchange.js +21 -8
  119. package/icons/aws/data-pipeline.js +21 -8
  120. package/icons/aws/data-sync.js +21 -8
  121. package/icons/aws/data-zone.js +21 -8
  122. package/icons/aws/database-migration-service.js +21 -8
  123. package/icons/aws/deep-composer.js +21 -8
  124. package/icons/aws/deep-learning-amis.js +21 -8
  125. package/icons/aws/deep-learning-containers.js +21 -8
  126. package/icons/aws/deep-lens.js +21 -8
  127. package/icons/aws/deep-racer.js +21 -8
  128. package/icons/aws/detective.js +21 -8
  129. package/icons/aws/dev-ops-guru.js +21 -8
  130. package/icons/aws/device-farm.js +21 -8
  131. package/icons/aws/direct-connect.js +21 -8
  132. package/icons/aws/directory-service.js +21 -8
  133. package/icons/aws/distro-for-open-telemetry.js +21 -8
  134. package/icons/aws/document-db.js +21 -8
  135. package/icons/aws/dynamo-db.js +21 -8
  136. package/icons/aws/ec2-auto-scaling.js +21 -8
  137. package/icons/aws/ec2-image-builder.js +21 -8
  138. package/icons/aws/ec2.js +21 -8
  139. package/icons/aws/ecs-anywhere.js +21 -8
  140. package/icons/aws/efs.js +21 -8
  141. package/icons/aws/eks-anywhere.js +21 -8
  142. package/icons/aws/eks-cloud.js +21 -8
  143. package/icons/aws/eks-distro.js +21 -8
  144. package/icons/aws/elasti-cache.js +21 -8
  145. package/icons/aws/elastic-beanstalk.js +21 -8
  146. package/icons/aws/elastic-block-store.js +21 -8
  147. package/icons/aws/elastic-container-registry.js +21 -8
  148. package/icons/aws/elastic-container-service.js +21 -8
  149. package/icons/aws/elastic-disaster-recovery.js +21 -8
  150. package/icons/aws/elastic-fabric-adapter.js +21 -8
  151. package/icons/aws/elastic-inference.js +21 -8
  152. package/icons/aws/elastic-kubernetes-service.js +21 -8
  153. package/icons/aws/elastic-load-balancing.js +21 -8
  154. package/icons/aws/elastic-transcoder.js +21 -8
  155. package/icons/aws/elemental-appliances-software.js +21 -8
  156. package/icons/aws/elemental-conductor.js +21 -8
  157. package/icons/aws/elemental-delta.js +21 -8
  158. package/icons/aws/elemental-link.js +21 -8
  159. package/icons/aws/elemental-live.js +21 -8
  160. package/icons/aws/elemental-media-connect.js +21 -8
  161. package/icons/aws/elemental-media-convert.js +21 -8
  162. package/icons/aws/elemental-media-live.js +21 -8
  163. package/icons/aws/elemental-media-package.js +21 -8
  164. package/icons/aws/elemental-media-store.js +21 -8
  165. package/icons/aws/elemental-media-tailor.js +21 -8
  166. package/icons/aws/elemental-server.js +21 -8
  167. package/icons/aws/emr.js +21 -8
  168. package/icons/aws/event-bridge.js +21 -8
  169. package/icons/aws/express-workflows.js +21 -8
  170. package/icons/aws/fargate.js +21 -8
  171. package/icons/aws/fault-injection-simulator.js +21 -8
  172. package/icons/aws/file-cache.js +21 -8
  173. package/icons/aws/fin-space.js +21 -8
  174. package/icons/aws/firewall-manager.js +21 -8
  175. package/icons/aws/forecast.js +21 -8
  176. package/icons/aws/fraud-detector.js +21 -8
  177. package/icons/aws/free-rtos.js +21 -8
  178. package/icons/aws/fsx-for-lustre.js +21 -8
  179. package/icons/aws/fsx-for-net-app-ontap.js +21 -8
  180. package/icons/aws/fsx-for-open-zfs.js +21 -8
  181. package/icons/aws/fsx-for-wfs.js +21 -8
  182. package/icons/aws/fsx.js +21 -8
  183. package/icons/aws/game-kit.js +21 -8
  184. package/icons/aws/game-lift.js +21 -8
  185. package/icons/aws/game-sparks.js +21 -8
  186. package/icons/aws/genomics-cli.js +21 -8
  187. package/icons/aws/global-accelerator.js +21 -8
  188. package/icons/aws/glue-data-brew.js +21 -8
  189. package/icons/aws/glue-elastic-views.js +21 -8
  190. package/icons/aws/glue.js +21 -8
  191. package/icons/aws/ground-station.js +21 -8
  192. package/icons/aws/guard-duty.js +21 -8
  193. package/icons/aws/health-lake.js +21 -8
  194. package/icons/aws/honeycode.js +21 -8
  195. package/icons/aws/iam-identity-center.js +21 -8
  196. package/icons/aws/identity-and-access-management.js +21 -8
  197. package/icons/aws/inspector.js +21 -8
  198. package/icons/aws/interactive-video-service.js +21 -8
  199. package/icons/aws/io-t-1-click.js +21 -8
  200. package/icons/aws/io-t-analytics.js +21 -8
  201. package/icons/aws/io-t-button.js +21 -8
  202. package/icons/aws/io-t-core.js +21 -8
  203. package/icons/aws/io-t-device-defender.js +21 -8
  204. package/icons/aws/io-t-device-management.js +21 -8
  205. package/icons/aws/io-t-edu-kit.js +21 -8
  206. package/icons/aws/io-t-events.js +21 -8
  207. package/icons/aws/io-t-express-link.js +21 -8
  208. package/icons/aws/io-t-fleet-wise.js +21 -8
  209. package/icons/aws/io-t-greengrass.js +21 -8
  210. package/icons/aws/io-t-robo-runner.js +21 -8
  211. package/icons/aws/io-t-site-wise.js +21 -8
  212. package/icons/aws/io-t-things-graph.js +21 -8
  213. package/icons/aws/io-t-twin-maker.js +30 -8
  214. package/icons/aws/iq.js +21 -8
  215. package/icons/aws/kendra.js +21 -8
  216. package/icons/aws/key-management-service.js +21 -8
  217. package/icons/aws/keyspaces.js +21 -8
  218. package/icons/aws/kinesis-data-analytics.js +21 -8
  219. package/icons/aws/kinesis-data-streams.js +21 -8
  220. package/icons/aws/kinesis-firehose.js +21 -8
  221. package/icons/aws/kinesis-video-streams.js +21 -8
  222. package/icons/aws/kinesis.js +21 -8
  223. package/icons/aws/lake-formation.js +21 -8
  224. package/icons/aws/lambda.js +21 -8
  225. package/icons/aws/launch-wizard.js +21 -8
  226. package/icons/aws/lex.js +21 -8
  227. package/icons/aws/license-manager.js +21 -8
  228. package/icons/aws/lightsail.js +21 -8
  229. package/icons/aws/local-zones.js +21 -8
  230. package/icons/aws/location-service.js +21 -8
  231. package/icons/aws/lookout-for-equipment.js +21 -8
  232. package/icons/aws/lookout-for-metrics.js +21 -8
  233. package/icons/aws/lookout-for-vision.js +21 -8
  234. package/icons/aws/lumberyard.js +21 -8
  235. package/icons/aws/macie.js +21 -8
  236. package/icons/aws/mainframe-modernization.js +21 -8
  237. package/icons/aws/managed-blockchain.js +21 -8
  238. package/icons/aws/managed-grafana.js +21 -8
  239. package/icons/aws/managed-service-for-prometheus.js +21 -8
  240. package/icons/aws/managed-services.js +21 -8
  241. package/icons/aws/managed-streaming-for-apache-kafka.js +21 -8
  242. package/icons/aws/managed-workflows-for-apache-airflow.js +21 -8
  243. package/icons/aws/management-console.js +21 -8
  244. package/icons/aws/marketplace-dark.js +15 -8
  245. package/icons/aws/marketplace-light.js +15 -8
  246. package/icons/aws/memory-db-for-redis.js +21 -8
  247. package/icons/aws/migration-evaluator.js +21 -8
  248. package/icons/aws/migration-hub.js +21 -8
  249. package/icons/aws/monitron.js +21 -8
  250. package/icons/aws/mq.js +21 -8
  251. package/icons/aws/neptune.js +21 -8
  252. package/icons/aws/network-firewall.js +21 -8
  253. package/icons/aws/neuron.js +21 -8
  254. package/icons/aws/nice-dcv.js +21 -8
  255. package/icons/aws/nice-engin-frame.js +21 -8
  256. package/icons/aws/nimble-studio.js +21 -8
  257. package/icons/aws/nitro-enclaves.js +21 -8
  258. package/icons/aws/omics.js +21 -8
  259. package/icons/aws/open-3d-engine.js +21 -8
  260. package/icons/aws/open-search-service.js +21 -8
  261. package/icons/aws/ops-works.js +21 -8
  262. package/icons/aws/organizations.js +21 -8
  263. package/icons/aws/outposts-family.js +21 -8
  264. package/icons/aws/outposts-rack.js +21 -8
  265. package/icons/aws/outposts-servers.js +21 -8
  266. package/icons/aws/panorama.js +21 -8
  267. package/icons/aws/parallel-cluster.js +21 -8
  268. package/icons/aws/personal-health-dashboard.js +21 -8
  269. package/icons/aws/personalize.js +21 -8
  270. package/icons/aws/pinpoint-apis.js +21 -8
  271. package/icons/aws/pinpoint.js +21 -8
  272. package/icons/aws/polly.js +21 -8
  273. package/icons/aws/private-5g.js +21 -8
  274. package/icons/aws/private-certificate-authority.js +17 -8
  275. package/icons/aws/private-link.js +21 -8
  276. package/icons/aws/professional-services.js +21 -8
  277. package/icons/aws/proton.js +21 -8
  278. package/icons/aws/quantum-ledger-database.js +21 -8
  279. package/icons/aws/quick-sight.js +21 -8
  280. package/icons/aws/rds-on-vmware.js +21 -8
  281. package/icons/aws/rds.js +21 -8
  282. package/icons/aws/re-post.js +21 -8
  283. package/icons/aws/red-hat-open-shift-service-on-aws.js +21 -8
  284. package/icons/aws/redshift.js +21 -8
  285. package/icons/aws/rekognition.js +21 -8
  286. package/icons/aws/reserved-instance-reporting.js +21 -8
  287. package/icons/aws/resilience-hub.js +21 -8
  288. package/icons/aws/resource-access-manager.js +21 -8
  289. package/icons/aws/resource-explorer.js +21 -8
  290. package/icons/aws/robo-maker.js +21 -8
  291. package/icons/aws/route-53.js +21 -8
  292. package/icons/aws/s3-on-outposts.js +21 -8
  293. package/icons/aws/sage-maker-ground-truth.js +21 -8
  294. package/icons/aws/sage-maker-studio-lab.js +21 -8
  295. package/icons/aws/sage-maker.js +21 -8
  296. package/icons/aws/savings-plans.js +21 -8
  297. package/icons/aws/secrets-manager.js +21 -8
  298. package/icons/aws/security-hub.js +21 -8
  299. package/icons/aws/security-lake.js +21 -8
  300. package/icons/aws/server-migration-service.js +21 -8
  301. package/icons/aws/serverless-application-repository.js +21 -8
  302. package/icons/aws/service-catalog.js +21 -8
  303. package/icons/aws/service-management-connector.js +17 -8
  304. package/icons/aws/shield.js +21 -8
  305. package/icons/aws/signer.js +21 -8
  306. package/icons/aws/sim-space-weaver.js +21 -8
  307. package/icons/aws/simple-email-service.js +21 -8
  308. package/icons/aws/simple-notification-service.js +21 -8
  309. package/icons/aws/simple-queue-service.js +21 -8
  310. package/icons/aws/simple-storage-service-glacier.js +21 -8
  311. package/icons/aws/simple-storage-service.js +21 -8
  312. package/icons/aws/site-to-site-vpn.js +21 -8
  313. package/icons/aws/snowball-edge.js +21 -8
  314. package/icons/aws/snowball.js +21 -8
  315. package/icons/aws/snowcone.js +21 -8
  316. package/icons/aws/snowmobile.js +21 -8
  317. package/icons/aws/step-functions.js +21 -8
  318. package/icons/aws/storage-gateway.js +21 -8
  319. package/icons/aws/sumerian.js +21 -8
  320. package/icons/aws/supply-chain.js +21 -8
  321. package/icons/aws/support.js +21 -8
  322. package/icons/aws/systems-manager.js +21 -8
  323. package/icons/aws/tensor-flow-on-aws.js +21 -8
  324. package/icons/aws/textract.js +21 -8
  325. package/icons/aws/thinkbox-deadline.js +21 -8
  326. package/icons/aws/thinkbox-frost.js +21 -8
  327. package/icons/aws/thinkbox-krakatoa.js +21 -8
  328. package/icons/aws/thinkbox-sequoia.js +21 -8
  329. package/icons/aws/thinkbox-stoke.js +21 -8
  330. package/icons/aws/thinkbox-xmesh.js +21 -8
  331. package/icons/aws/timestream.js +21 -8
  332. package/icons/aws/tools-and-sdks.js +21 -8
  333. package/icons/aws/torch-serve.js +21 -8
  334. package/icons/aws/training-certification.js +21 -8
  335. package/icons/aws/transcribe.js +21 -8
  336. package/icons/aws/transfer-family.js +21 -8
  337. package/icons/aws/transit-gateway.js +21 -8
  338. package/icons/aws/translate.js +21 -8
  339. package/icons/aws/trusted-advisor.js +21 -8
  340. package/icons/aws/verified-access.js +21 -8
  341. package/icons/aws/verified-permissions.js +21 -8
  342. package/icons/aws/virtual-private-cloud.js +21 -8
  343. package/icons/aws/vmware-cloud-on-aws.js +21 -8
  344. package/icons/aws/vpc-lattice.js +21 -8
  345. package/icons/aws/waf.js +21 -8
  346. package/icons/aws/wavelength.js +21 -8
  347. package/icons/aws/well-architected-tool.js +21 -8
  348. package/icons/aws/wickr.js +21 -8
  349. package/icons/aws/work-docs-sdk.js +21 -8
  350. package/icons/aws/work-docs.js +21 -8
  351. package/icons/aws/work-link.js +21 -8
  352. package/icons/aws/work-mail.js +21 -8
  353. package/icons/aws/work-spaces-family.js +21 -8
  354. package/icons/aws/x-ray.js +21 -8
  355. package/icons/gcp/access-context-manager.js +17 -8
  356. package/icons/gcp/administration.js +46 -8
  357. package/icons/gcp/advanced-agent-modeling.js +31 -8
  358. package/icons/gcp/advanced-solutions-lab.js +48 -8
  359. package/icons/gcp/agent-assist.js +12 -8
  360. package/icons/gcp/ai-hub.js +23 -8
  361. package/icons/gcp/ai-platform-unified.js +40 -8
  362. package/icons/gcp/ai-platform.js +23 -8
  363. package/icons/gcp/analytics-hub.js +28 -8
  364. package/icons/gcp/anthos-config-management.js +28 -8
  365. package/icons/gcp/anthos-service-mesh.js +13 -8
  366. package/icons/gcp/anthos.js +11 -8
  367. package/icons/gcp/api-analytics.js +26 -8
  368. package/icons/gcp/api-monetization.js +23 -8
  369. package/icons/gcp/api.js +29 -8
  370. package/icons/gcp/apigee-api-platform.js +35 -8
  371. package/icons/gcp/apigee-sense.js +28 -8
  372. package/icons/gcp/app-engine.js +39 -8
  373. package/icons/gcp/artifact-registry.js +33 -8
  374. package/icons/gcp/asset-inventory.js +19 -8
  375. package/icons/gcp/assured-workloads.js +32 -8
  376. package/icons/gcp/auto-ml-natural-language.js +9 -8
  377. package/icons/gcp/auto-ml-tables.js +19 -8
  378. package/icons/gcp/auto-ml-translation.js +25 -8
  379. package/icons/gcp/auto-ml-video-intelligence.js +25 -8
  380. package/icons/gcp/auto-ml-vision.js +18 -8
  381. package/icons/gcp/auto-ml.js +14 -8
  382. package/icons/gcp/bare-metal-solutions.js +10 -8
  383. package/icons/gcp/batch.js +12 -8
  384. package/icons/gcp/beyondcorp.js +13 -8
  385. package/icons/gcp/big-query.js +28 -8
  386. package/icons/gcp/bigtable.js +116 -8
  387. package/icons/gcp/billing.js +34 -8
  388. package/icons/gcp/binary-authorization.js +22 -8
  389. package/icons/gcp/catalog.js +29 -8
  390. package/icons/gcp/certificate-authority-service.js +33 -8
  391. package/icons/gcp/certificate-manager.js +24 -8
  392. package/icons/gcp/cloud-api-gateway.js +13 -8
  393. package/icons/gcp/cloud-apis.js +18 -8
  394. package/icons/gcp/cloud-armor.js +27 -8
  395. package/icons/gcp/cloud-asset-inventory.js +10 -8
  396. package/icons/gcp/cloud-audit-logs.js +45 -8
  397. package/icons/gcp/cloud-build.js +19 -8
  398. package/icons/gcp/cloud-cdn.js +22 -8
  399. package/icons/gcp/cloud-code.js +16 -8
  400. package/icons/gcp/cloud-composer.js +13 -8
  401. package/icons/gcp/cloud-data-fusion.js +15 -8
  402. package/icons/gcp/cloud-deploy.js +10 -8
  403. package/icons/gcp/cloud-deployment-manager.js +24 -8
  404. package/icons/gcp/cloud-dns.js +21 -8
  405. package/icons/gcp/cloud-domains.js +26 -8
  406. package/icons/gcp/cloud-ekm.js +13 -8
  407. package/icons/gcp/cloud-endpoints.js +18 -8
  408. package/icons/gcp/cloud-external-ip-addresses.js +21 -8
  409. package/icons/gcp/cloud-firewall-rules.js +15 -8
  410. package/icons/gcp/cloud-for-marketing.js +13 -8
  411. package/icons/gcp/cloud-functions.js +25 -8
  412. package/icons/gcp/cloud-generic.js +13 -8
  413. package/icons/gcp/cloud-gpu.js +18 -8
  414. package/icons/gcp/cloud-healthcare-api.js +32 -8
  415. package/icons/gcp/cloud-healthcare-marketplace.js +10 -8
  416. package/icons/gcp/cloud-hsm.js +37 -8
  417. package/icons/gcp/cloud-ids.js +42 -8
  418. package/icons/gcp/cloud-inference-api.js +27 -8
  419. package/icons/gcp/cloud-interconnect.js +15 -8
  420. package/icons/gcp/cloud-jobs-api.js +37 -8
  421. package/icons/gcp/cloud-load-balancing.js +20 -8
  422. package/icons/gcp/cloud-logging.js +19 -8
  423. package/icons/gcp/cloud-media-edge.js +23 -8
  424. package/icons/gcp/cloud-monitoring.js +26 -8
  425. package/icons/gcp/cloud-nat.js +31 -8
  426. package/icons/gcp/cloud-natural-language-api.js +17 -8
  427. package/icons/gcp/cloud-network.js +17 -8
  428. package/icons/gcp/cloud-ops.js +32 -8
  429. package/icons/gcp/cloud-optimization-ai-fleet-routing-api.js +22 -8
  430. package/icons/gcp/cloud-optimization-ai.js +28 -8
  431. package/icons/gcp/cloud-router.js +13 -8
  432. package/icons/gcp/cloud-routes.js +18 -8
  433. package/icons/gcp/cloud-run-for-anthos.js +21 -8
  434. package/icons/gcp/cloud-run.js +13 -8
  435. package/icons/gcp/cloud-scheduler.js +36 -8
  436. package/icons/gcp/cloud-security-scanner.js +21 -8
  437. package/icons/gcp/cloud-shell.js +16 -8
  438. package/icons/gcp/cloud-spanner.js +42 -8
  439. package/icons/gcp/cloud-sql.js +16 -8
  440. package/icons/gcp/cloud-storage.js +22 -8
  441. package/icons/gcp/cloud-tasks.js +29 -8
  442. package/icons/gcp/cloud-test-lab.js +39 -8
  443. package/icons/gcp/cloud-tpu.js +103 -8
  444. package/icons/gcp/cloud-translation-api.js +16 -8
  445. package/icons/gcp/cloud-vision-api.js +16 -8
  446. package/icons/gcp/cloud-vpn.js +23 -8
  447. package/icons/gcp/compute-engine.js +17 -8
  448. package/icons/gcp/configuration-management.js +22 -8
  449. package/icons/gcp/connectivity-test.js +6 -8
  450. package/icons/gcp/connectors.js +13 -8
  451. package/icons/gcp/contact-center-ai.js +6 -8
  452. package/icons/gcp/container-optimized-os.js +13 -8
  453. package/icons/gcp/container-registry.js +27 -8
  454. package/icons/gcp/data-catalog.js +25 -8
  455. package/icons/gcp/data-labeling.js +19 -8
  456. package/icons/gcp/data-layers.js +11 -8
  457. package/icons/gcp/data-loss-prevention-api.js +54 -8
  458. package/icons/gcp/data-qn-a.js +24 -8
  459. package/icons/gcp/data-studio.js +16 -8
  460. package/icons/gcp/data-transfer.js +17 -8
  461. package/icons/gcp/database-migration-service.js +24 -8
  462. package/icons/gcp/dataflow.js +44 -8
  463. package/icons/gcp/datalab.js +13 -8
  464. package/icons/gcp/dataplex.js +15 -8
  465. package/icons/gcp/datapol.js +49 -8
  466. package/icons/gcp/dataprep.js +25 -8
  467. package/icons/gcp/dataproc-metastore.js +12 -8
  468. package/icons/gcp/dataproc.js +43 -8
  469. package/icons/gcp/datashare.js +37 -8
  470. package/icons/gcp/datastore.js +39 -8
  471. package/icons/gcp/datastream.js +35 -8
  472. package/icons/gcp/debugger.js +31 -8
  473. package/icons/gcp/developer-portal.js +24 -8
  474. package/icons/gcp/dialogflow-cx.js +28 -8
  475. package/icons/gcp/dialogflow-insights.js +33 -8
  476. package/icons/gcp/dialogflow.js +16 -8
  477. package/icons/gcp/document-ai.js +27 -8
  478. package/icons/gcp/early-access-center.js +12 -8
  479. package/icons/gcp/error-reporting.js +14 -8
  480. package/icons/gcp/eventarc.js +24 -8
  481. package/icons/gcp/filestore.js +14 -8
  482. package/icons/gcp/financial-services-marketplace.js +21 -8
  483. package/icons/gcp/firestore.js +14 -8
  484. package/icons/gcp/fleet-engine.js +10 -8
  485. package/icons/gcp/free-trial.js +36 -8
  486. package/icons/gcp/game-servers.js +32 -8
  487. package/icons/gcp/gce-systems-management.js +13 -8
  488. package/icons/gcp/genomics.js +23 -8
  489. package/icons/gcp/gke-on-prem.js +31 -8
  490. package/icons/gcp/google-cloud-marketplace.js +29 -8
  491. package/icons/gcp/google-kubernetes-engine.js +23 -8
  492. package/icons/gcp/google-maps-platform.js +47 -8
  493. package/icons/gcp/healthcare-nlp-api.js +13 -8
  494. package/icons/gcp/home.js +25 -8
  495. package/icons/gcp/identity-and-access-management.js +23 -8
  496. package/icons/gcp/identity-aware-proxy.js +32 -8
  497. package/icons/gcp/identity-platform.js +26 -8
  498. package/icons/gcp/iot-core.js +23 -8
  499. package/icons/gcp/iot-edge.js +86 -8
  500. package/icons/gcp/key-access-justifications.js +46 -8
  501. package/icons/gcp/key-management-service.js +23 -8
  502. package/icons/gcp/kuberun.js +26 -8
  503. package/icons/gcp/launcher.js +35 -8
  504. package/icons/gcp/local-ssd.js +13 -8
  505. package/icons/gcp/looker.js +46 -8
  506. package/icons/gcp/managed-service-for-microsoft-active-directory.js +24 -8
  507. package/icons/gcp/media-translation-api.js +28 -8
  508. package/icons/gcp/memorystore.js +26 -8
  509. package/icons/gcp/migrate-for-anthos.js +13 -8
  510. package/icons/gcp/migrate-for-compute-engine.js +13 -8
  511. package/icons/gcp/my-cloud.js +21 -8
  512. package/icons/gcp/network-connectivity-center.js +84 -8
  513. package/icons/gcp/network-intelligence-center.js +13 -8
  514. package/icons/gcp/network-security.js +32 -8
  515. package/icons/gcp/network-tiers.js +23 -8
  516. package/icons/gcp/network-topology.js +13 -8
  517. package/icons/gcp/onboarding.js +25 -8
  518. package/icons/gcp/os-configuration-management.js +13 -8
  519. package/icons/gcp/os-inventory-management.js +15 -8
  520. package/icons/gcp/os-patch-management.js +13 -8
  521. package/icons/gcp/partner-interconnect.js +21 -8
  522. package/icons/gcp/partner-portal.js +35 -8
  523. package/icons/gcp/performance-dashboard.js +13 -8
  524. package/icons/gcp/permissions.js +35 -8
  525. package/icons/gcp/persistent-disk.js +10 -8
  526. package/icons/gcp/phishing-protection.js +36 -8
  527. package/icons/gcp/policy-analyzer.js +13 -8
  528. package/icons/gcp/premium-network-tier.js +19 -8
  529. package/icons/gcp/private-connectivity.js +18 -8
  530. package/icons/gcp/private-service-connect.js +27 -8
  531. package/icons/gcp/producer-portal.js +21 -8
  532. package/icons/gcp/profiler.js +21 -8
  533. package/icons/gcp/project.js +28 -8
  534. package/icons/gcp/pub-sub.js +41 -8
  535. package/icons/gcp/quantum-engine.js +27 -8
  536. package/icons/gcp/quotas.js +26 -8
  537. package/icons/gcp/real-world-insights.js +19 -8
  538. package/icons/gcp/recommendations-ai.js +24 -8
  539. package/icons/gcp/release-notes.js +12 -8
  540. package/icons/gcp/retail-api.js +22 -8
  541. package/icons/gcp/risk-manager.js +12 -8
  542. package/icons/gcp/runtime-config.js +19 -8
  543. package/icons/gcp/secret-manager.js +13 -8
  544. package/icons/gcp/security-command-center.js +18 -8
  545. package/icons/gcp/security-health-advisor.js +43 -8
  546. package/icons/gcp/security-key-enforcement.js +21 -8
  547. package/icons/gcp/security.js +27 -8
  548. package/icons/gcp/service-discovery.js +26 -8
  549. package/icons/gcp/speech-to-text.js +21 -8
  550. package/icons/gcp/stackdriver.js +10 -8
  551. package/icons/gcp/standard-network-tier.js +13 -8
  552. package/icons/gcp/stream-suite.js +16 -8
  553. package/icons/gcp/support.js +29 -8
  554. package/icons/gcp/tensorflow-enterprise.js +13 -8
  555. package/icons/gcp/text-to-speech.js +24 -8
  556. package/icons/gcp/tools-for-powershell.js +29 -8
  557. package/icons/gcp/trace.js +17 -8
  558. package/icons/gcp/traffic-director.js +20 -8
  559. package/icons/gcp/transfer-appliance.js +20 -8
  560. package/icons/gcp/transfer.js +13 -8
  561. package/icons/gcp/user-preferences.js +35 -8
  562. package/icons/gcp/vertex-ai.js +48 -8
  563. package/icons/gcp/video-intelligence-api.js +15 -8
  564. package/icons/gcp/virtual-private-cloud.js +19 -8
  565. package/icons/gcp/visual-inspection.js +24 -8
  566. package/icons/gcp/vmware-engine.js +13 -8
  567. package/icons/gcp/web-risk.js +27 -8
  568. package/icons/gcp/web-security-scanner.js +27 -8
  569. package/icons/gcp/workflows.js +82 -8
  570. package/icons/gcp/workload-identity-pool.js +24 -8
  571. package/icons/tech/aarch64.js +48 -8
  572. package/icons/tech/adobe-illustrator.js +14 -8
  573. package/icons/tech/adobe-photoshop.js +14 -8
  574. package/icons/tech/adobe-premiere-pro.js +16 -8
  575. package/icons/tech/adobe-xd.js +12 -8
  576. package/icons/tech/adonis-js.js +14 -8
  577. package/icons/tech/after-effects.js +16 -8
  578. package/icons/tech/airflow.js +64 -8
  579. package/icons/tech/akka.js +21 -8
  580. package/icons/tech/algolia.js +12 -8
  581. package/icons/tech/alpine-js.js +17 -8
  582. package/icons/tech/amazon-web-services.js +21 -8
  583. package/icons/tech/anaconda.js +12 -8
  584. package/icons/tech/android-studio.js +44 -8
  585. package/icons/tech/android.js +35 -8
  586. package/icons/tech/angular-js.js +24 -8
  587. package/icons/tech/angular.js +37 -8
  588. package/icons/tech/ansible.js +15 -8
  589. package/icons/tech/ant-design.js +112 -8
  590. package/icons/tech/apache.js +156 -8
  591. package/icons/tech/apl.js +21 -8
  592. package/icons/tech/appcelerator.js +12 -8
  593. package/icons/tech/apple-safari.js +39 -10
  594. package/icons/tech/apple.js +6 -8
  595. package/icons/tech/appwrite.js +21 -8
  596. package/icons/tech/arch-linux.js +29 -8
  597. package/icons/tech/arduino.js +9 -8
  598. package/icons/tech/argo-cd.js +134 -8
  599. package/icons/tech/astro.js +62 -8
  600. package/icons/tech/atom.js +14 -8
  601. package/icons/tech/autodesk-maya.js +55 -8
  602. package/icons/tech/autodesk-shot-grid.js +15 -8
  603. package/icons/tech/awk.js +34 -8
  604. package/icons/tech/azios.js +12 -8
  605. package/icons/tech/azure-devops.js +33 -8
  606. package/icons/tech/azure-sql-database.js +95 -8
  607. package/icons/tech/azure.js +55 -8
  608. package/icons/tech/babel.js +15 -8
  609. package/icons/tech/backbone-js.js +16 -8
  610. package/icons/tech/ballerina.js +12 -8
  611. package/icons/tech/bamboo.js +62 -8
  612. package/icons/tech/bash.js +22 -8
  613. package/icons/tech/behance.js +19 -8
  614. package/icons/tech/bitbucket.js +37 -8
  615. package/icons/tech/blender.js +21 -8
  616. package/icons/tech/bootstrap.js +78 -8
  617. package/icons/tech/bower.js +123 -8
  618. package/icons/tech/browserstack.js +77 -8
  619. package/icons/tech/bulma.js +6 -8
  620. package/icons/tech/bun.js +68 -8
  621. package/icons/tech/c.js +28 -8
  622. package/icons/tech/cairo-graphics.js +21 -8
  623. package/icons/tech/cake-php.js +12 -8
  624. package/icons/tech/canva.js +9 -8
  625. package/icons/tech/capacitor.js +25 -8
  626. package/icons/tech/cassandra.js +101 -8
  627. package/icons/tech/cent-os.js +22 -8
  628. package/icons/tech/chrome.js +156 -8
  629. package/icons/tech/circle-ci.js +12 -8
  630. package/icons/tech/clarity.js +35 -8
  631. package/icons/tech/clion.js +98 -8
  632. package/icons/tech/clojure-script.js +39 -8
  633. package/icons/tech/clojure.js +42 -8
  634. package/icons/tech/cloudflare-workers.js +196 -8
  635. package/icons/tech/cloudflare.js +22 -8
  636. package/icons/tech/cmake.js +11 -8
  637. package/icons/tech/code-igniter.js +12 -8
  638. package/icons/tech/code-pen.js +12 -8
  639. package/icons/tech/codeac.js +12 -8
  640. package/icons/tech/codecov.js +12 -8
  641. package/icons/tech/coffee-script.js +12 -8
  642. package/icons/tech/composer.js +59 -8
  643. package/icons/tech/confluence.js +57 -8
  644. package/icons/tech/consul.js +12 -8
  645. package/icons/tech/contao.js +15 -8
  646. package/icons/tech/corejs.js +6 -8
  647. package/icons/tech/cosmosdb.js +52 -8
  648. package/icons/tech/couchdb.js +12 -8
  649. package/icons/tech/cplusplus.js +35 -8
  650. package/icons/tech/crystal.js +12 -8
  651. package/icons/tech/csharp.js +28 -8
  652. package/icons/tech/css3.js +25 -8
  653. package/icons/tech/cucumber.js +12 -8
  654. package/icons/tech/cypress.js +34 -12
  655. package/icons/tech/d3js.js +145 -8
  656. package/icons/tech/dart.js +24 -8
  657. package/icons/tech/data-grip.js +109 -8
  658. package/icons/tech/data-spell.js +102 -8
  659. package/icons/tech/dbeaver.js +56 -8
  660. package/icons/tech/debian.js +12 -8
  661. package/icons/tech/deno.js +6 -8
  662. package/icons/tech/devicon.js +25 -8
  663. package/icons/tech/digital-ocean.js +9 -8
  664. package/icons/tech/discord-js.js +56 -8
  665. package/icons/tech/django-rest.js +35 -8
  666. package/icons/tech/django.js +9 -8
  667. package/icons/tech/docker.js +133 -8
  668. package/icons/tech/doctrine.js +21 -8
  669. package/icons/tech/dropwizard.js +70 -8
  670. package/icons/tech/drupal.js +56 -8
  671. package/icons/tech/eclipse-ceylon.js +44 -8
  672. package/icons/tech/eclipse-ide.js +93 -8
  673. package/icons/tech/eclipse-vert-x.js +29 -8
  674. package/icons/tech/elasticbeats.js +22 -8
  675. package/icons/tech/elasticsearch.js +28 -8
  676. package/icons/tech/electron.js +11 -8
  677. package/icons/tech/eleventy-11ty.js +15 -8
  678. package/icons/tech/elixir.js +211 -8
  679. package/icons/tech/elm.js +19 -8
  680. package/icons/tech/embedded-c.js +42 -8
  681. package/icons/tech/ember-js.js +16 -8
  682. package/icons/tech/envoy.js +28 -8
  683. package/icons/tech/erlang.js +12 -8
  684. package/icons/tech/eslint.js +21 -8
  685. package/icons/tech/express.js +6 -8
  686. package/icons/tech/facebook.js +15 -8
  687. package/icons/tech/fast-api.js +12 -8
  688. package/icons/tech/fastify.js +15 -8
  689. package/icons/tech/fauna.js +12 -8
  690. package/icons/tech/feathers.js +6 -8
  691. package/icons/tech/fedora.js +53 -8
  692. package/icons/tech/figma.js +24 -8
  693. package/icons/tech/file-zilla.js +18 -8
  694. package/icons/tech/firebase.js +12 -8
  695. package/icons/tech/firefox.js +1381 -8
  696. package/icons/tech/flask.js +12 -8
  697. package/icons/tech/flutter.js +16 -8
  698. package/icons/tech/fortran.js +15 -8
  699. package/icons/tech/foundation.js +240 -8
  700. package/icons/tech/fsharp.js +10 -8
  701. package/icons/tech/gatling.js +12 -8
  702. package/icons/tech/gatsby.js +12 -8
  703. package/icons/tech/gazebo.js +23 -8
  704. package/icons/tech/gcc.js +44 -8
  705. package/icons/tech/gentoo.js +14 -8
  706. package/icons/tech/ghost.js +27 -8
  707. package/icons/tech/gimp.js +370 -8
  708. package/icons/tech/git.js +12 -8
  709. package/icons/tech/gitbook.js +13 -8
  710. package/icons/tech/github-actions.js +21 -8
  711. package/icons/tech/github-codespaces.js +85 -8
  712. package/icons/tech/github.js +16 -8
  713. package/icons/tech/gitlab.js +35 -8
  714. package/icons/tech/gitpod.js +32 -8
  715. package/icons/tech/gitter.js +6 -8
  716. package/icons/tech/gnu-emacs.js +15 -8
  717. package/icons/tech/go-land.js +82 -8
  718. package/icons/tech/go.js +285 -8
  719. package/icons/tech/godot-engine.js +56 -8
  720. package/icons/tech/google-cloud.js +29 -8
  721. package/icons/tech/google.js +42 -8
  722. package/icons/tech/gradle.js +12 -8
  723. package/icons/tech/grafana.js +30 -8
  724. package/icons/tech/grails.js +21 -8
  725. package/icons/tech/graphql.js +15 -8
  726. package/icons/tech/groovy.js +715 -8
  727. package/icons/tech/grunt-js.js +260 -8
  728. package/icons/tech/gulp-js.js +14 -8
  729. package/icons/tech/hadoop.js +36 -8
  730. package/icons/tech/handlebars.js +9 -8
  731. package/icons/tech/hardhat.js +98 -8
  732. package/icons/tech/harvester.js +10 -8
  733. package/icons/tech/hashicorp-vault.js +12 -8
  734. package/icons/tech/haskell.js +10 -8
  735. package/icons/tech/haxe.js +17 -8
  736. package/icons/tech/helm.js +12 -8
  737. package/icons/tech/heroku.js +12 -8
  738. package/icons/tech/hibernate.js +15 -8
  739. package/icons/tech/homebrew.js +36 -8
  740. package/icons/tech/html5.js +23 -8
  741. package/icons/tech/hugo.js +22 -8
  742. package/icons/tech/ibm-spss-statistics.js +21 -8
  743. package/icons/tech/ie10.js +12 -8
  744. package/icons/tech/ifttt.js +6 -8
  745. package/icons/tech/influxdb.js +14 -8
  746. package/icons/tech/inkscape.js +534 -8
  747. package/icons/tech/insomnia.js +44 -8
  748. package/icons/tech/intellij-idea.js +92 -8
  749. package/icons/tech/ionic.js +9 -8
  750. package/icons/tech/jaeger.js +102 -8
  751. package/icons/tech/jamstack.js +12 -8
  752. package/icons/tech/jasmine.js +10 -8
  753. package/icons/tech/java.js +42 -8
  754. package/icons/tech/javascript.js +15 -8
  755. package/icons/tech/jeet.js +135 -8
  756. package/icons/tech/jekyll.js +187 -8
  757. package/icons/tech/jenkins.js +126 -8
  758. package/icons/tech/jest.js +12 -8
  759. package/icons/tech/jetbrains.js +118 -8
  760. package/icons/tech/jira-align.js +57 -8
  761. package/icons/tech/jira.js +62 -8
  762. package/icons/tech/jquery.js +12 -8
  763. package/icons/tech/json.js +57 -8
  764. package/icons/tech/jule.js +12 -8
  765. package/icons/tech/julia.js +49 -8
  766. package/icons/tech/junit.js +30 -8
  767. package/icons/tech/jupyter.js +35 -8
  768. package/icons/tech/k3os.js +6 -8
  769. package/icons/tech/k3s.js +12 -8
  770. package/icons/tech/kafka.js +12 -8
  771. package/icons/tech/kaggle.js +12 -8
  772. package/icons/tech/karate.js +15 -8
  773. package/icons/tech/karma.js +21 -8
  774. package/icons/tech/keras.js +15 -8
  775. package/icons/tech/kibana.js +10 -8
  776. package/icons/tech/knex-js.js +12 -8
  777. package/icons/tech/knockout.js +13 -8
  778. package/icons/tech/kotlin.js +25 -8
  779. package/icons/tech/krakenjs.js +14 -8
  780. package/icons/tech/ktor.js +48 -8
  781. package/icons/tech/kubernetes.js +10 -8
  782. package/icons/tech/labview.js +69 -44
  783. package/icons/tech/laravel.js +15 -8
  784. package/icons/tech/latex.js +12 -8
  785. package/icons/tech/less-js.js +14 -8
  786. package/icons/tech/linkedin.js +21 -8
  787. package/icons/tech/linux.js +5267 -8
  788. package/icons/tech/liquibase.js +12 -8
  789. package/icons/tech/livewire.js +79 -8
  790. package/icons/tech/llvm.js +36 -8
  791. package/icons/tech/logstash.js +10 -8
  792. package/icons/tech/lua.js +28 -8
  793. package/icons/tech/lumen.js +12 -8
  794. package/icons/tech/magento.js +12 -8
  795. package/icons/tech/markdown.js +44 -33
  796. package/icons/tech/material-ui.js +11 -8
  797. package/icons/tech/materialize.js +21 -8
  798. package/icons/tech/matlab.js +73 -8
  799. package/icons/tech/matplotlib.js +182 -8
  800. package/icons/tech/maven.js +620 -8
  801. package/icons/tech/meteor-js.js +12 -8
  802. package/icons/tech/microsoft-sql-server.js +6 -8
  803. package/icons/tech/minitab.js +45 -8
  804. package/icons/tech/mob-x.js +57 -8
  805. package/icons/tech/mocha.js +21 -8
  806. package/icons/tech/modx.js +11 -8
  807. package/icons/tech/moleculer.js +12 -8
  808. package/icons/tech/mongodb.js +135 -8
  809. package/icons/tech/mongoose-js.js +29 -8
  810. package/icons/tech/moodle.js +139 -8
  811. package/icons/tech/ms-dos.js +78 -8
  812. package/icons/tech/mysql.js +12 -8
  813. package/icons/tech/nano.js +12 -8
  814. package/icons/tech/nerog.js +136 -8
  815. package/icons/tech/nestjs.js +12 -8
  816. package/icons/tech/net-core.js +9 -8
  817. package/icons/tech/net.js +551 -8
  818. package/icons/tech/network-x.js +58 -8
  819. package/icons/tech/new4j.js +21 -8
  820. package/icons/tech/nextjs.js +6 -8
  821. package/icons/tech/nginx.js +12 -8
  822. package/icons/tech/nhibernate.js +21 -8
  823. package/icons/tech/nim.js +29 -8
  824. package/icons/tech/nimble.js +84 -8
  825. package/icons/tech/nix.js +25 -8
  826. package/icons/tech/nodejs.js +12 -8
  827. package/icons/tech/nodemon.js +21 -8
  828. package/icons/tech/nodewebkit.js +42 -8
  829. package/icons/tech/npm.js +12 -8
  830. package/icons/tech/nuget.js +12 -8
  831. package/icons/tech/num-py.js +29 -12
  832. package/icons/tech/nuxt-js.js +28 -8
  833. package/icons/tech/objective-c.js +9 -8
  834. package/icons/tech/ocaml.js +96 -8
  835. package/icons/tech/oh-my-zsh.js +38 -8
  836. package/icons/tech/okta.js +21 -8
  837. package/icons/tech/open-al.js +22 -8
  838. package/icons/tech/open-api.js +139 -8
  839. package/icons/tech/open-cl.js +42 -8
  840. package/icons/tech/open-cv.js +28 -8
  841. package/icons/tech/open-gl.js +35 -8
  842. package/icons/tech/open-stack.js +12 -8
  843. package/icons/tech/open-suse.js +15 -8
  844. package/icons/tech/open-telemetry.js +21 -8
  845. package/icons/tech/opera.js +32 -8
  846. package/icons/tech/oracle.js +12 -8
  847. package/icons/tech/p5js.js +12 -8
  848. package/icons/tech/packer.js +15 -8
  849. package/icons/tech/pandas.js +62 -18
  850. package/icons/tech/perl.js +21 -8
  851. package/icons/tech/pf-sense.js +6 -8
  852. package/icons/tech/phalcon.js +32 -8
  853. package/icons/tech/phoenix-framework.js +12 -8
  854. package/icons/tech/photon-engine.js +41 -8
  855. package/icons/tech/php-storm.js +93 -8
  856. package/icons/tech/php.js +62 -8
  857. package/icons/tech/playwrite.js +56 -8
  858. package/icons/tech/ploty.js +28 -8
  859. package/icons/tech/podman.js +150 -8
  860. package/icons/tech/polygon.js +15 -8
  861. package/icons/tech/portainer.js +12 -8
  862. package/icons/tech/postcss.js +28 -8
  863. package/icons/tech/postgresql.js +23 -8
  864. package/icons/tech/postman.js +28 -8
  865. package/icons/tech/powershell.js +79 -8
  866. package/icons/tech/processing.js +201 -22
  867. package/icons/tech/prometheus.js +12 -8
  868. package/icons/tech/protractor.js +12 -8
  869. package/icons/tech/purescript.js +16 -8
  870. package/icons/tech/putty.js +56 -8
  871. package/icons/tech/pycharm.js +81 -8
  872. package/icons/tech/pyscript.js +15 -8
  873. package/icons/tech/pytest.js +21 -8
  874. package/icons/tech/python-poetry.js +155 -16
  875. package/icons/tech/python.js +78 -8
  876. package/icons/tech/pytorch.js +15 -8
  877. package/icons/tech/qodana.js +52 -8
  878. package/icons/tech/qt.js +12 -8
  879. package/icons/tech/quarkus.js +23 -8
  880. package/icons/tech/quasar.js +15 -8
  881. package/icons/tech/qwik.js +37 -8
  882. package/icons/tech/r.js +57 -8
  883. package/icons/tech/rabbitmq.js +12 -8
  884. package/icons/tech/rancher.js +6 -8
  885. package/icons/tech/raspberrypi.js +28 -8
  886. package/icons/tech/reach.js +27 -8
  887. package/icons/tech/react-bootstrap.js +12 -8
  888. package/icons/tech/react.js +9 -8
  889. package/icons/tech/realm.js +63 -8
  890. package/icons/tech/red-cube-s-epic-compiler-thingy-programming-re-ct.js +17 -8
  891. package/icons/tech/redhat.js +22 -8
  892. package/icons/tech/redis.js +59 -8
  893. package/icons/tech/redux.js +12 -8
  894. package/icons/tech/ren-py.js +541 -8
  895. package/icons/tech/rider.js +32 -8
  896. package/icons/tech/robot-operating-system-ros.js +15 -8
  897. package/icons/tech/rocksdb.js +9 -8
  898. package/icons/tech/rollup-js.js +155 -8
  899. package/icons/tech/rspec.js +35 -8
  900. package/icons/tech/rstudio.js +30 -8
  901. package/icons/tech/ruby-mine.js +52 -8
  902. package/icons/tech/ruby-on-rails.js +14 -8
  903. package/icons/tech/ruby.js +353 -8
  904. package/icons/tech/rust.js +6 -8
  905. package/icons/tech/salesforce.js +28 -8
  906. package/icons/tech/sanity.js +22 -8
  907. package/icons/tech/sass.js +14 -8
  908. package/icons/tech/scala.js +21 -8
  909. package/icons/tech/scalingo.js +29 -8
  910. package/icons/tech/sdl.js +42 -8
  911. package/icons/tech/selenium.js +15 -8
  912. package/icons/tech/sema-software.js +15 -8
  913. package/icons/tech/sequelize.js +34 -8
  914. package/icons/tech/shopware.js +9 -8
  915. package/icons/tech/sketch.js +14 -8
  916. package/icons/tech/slack.js +35 -8
  917. package/icons/tech/socket-io.js +45 -33
  918. package/icons/tech/solid-js.js +121 -8
  919. package/icons/tech/solidity.js +13 -8
  920. package/icons/tech/sonarqube.js +12 -8
  921. package/icons/tech/sourcetree.js +12 -8
  922. package/icons/tech/spark.js +12 -8
  923. package/icons/tech/splunk.js +12 -8
  924. package/icons/tech/spring.js +12 -8
  925. package/icons/tech/sql-developer.js +43 -8
  926. package/icons/tech/sqlalchemy.js +21 -8
  927. package/icons/tech/sqlite.js +45 -8
  928. package/icons/tech/ssh.js +12 -8
  929. package/icons/tech/stackoverflow.js +15 -8
  930. package/icons/tech/stata.js +12 -8
  931. package/icons/tech/storybook.js +12 -8
  932. package/icons/tech/streamlit.js +31 -8
  933. package/icons/tech/stylus.js +9 -8
  934. package/icons/tech/subversion.js +12 -8
  935. package/icons/tech/svelte.js +23 -8
  936. package/icons/tech/swagger.js +21 -8
  937. package/icons/tech/swift.js +21 -8
  938. package/icons/tech/symfony.js +12 -8
  939. package/icons/tech/tailwind-css.js +12 -8
  940. package/icons/tech/tauri.js +35 -8
  941. package/icons/tech/tensorflow.js +12 -8
  942. package/icons/tech/terraform.js +16 -8
  943. package/icons/tech/tex.js +6 -8
  944. package/icons/tech/the-algorithms.js +12 -8
  945. package/icons/tech/three-js.js +139 -108
  946. package/icons/tech/titanium-sdk.js +12 -8
  947. package/icons/tech/tomcat.js +26 -8
  948. package/icons/tech/tortoise-git.js +37 -8
  949. package/icons/tech/tower.js +357 -8
  950. package/icons/tech/traefik-mesh.js +12 -8
  951. package/icons/tech/traefik-proxy.js +12 -8
  952. package/icons/tech/travis-ci.js +12 -8
  953. package/icons/tech/trello.js +12 -8
  954. package/icons/tech/twitter.js +12 -8
  955. package/icons/tech/typescript.js +16 -8
  956. package/icons/tech/typo3.js +12 -8
  957. package/icons/tech/ubuntu.js +12 -8
  958. package/icons/tech/uml.js +29 -8
  959. package/icons/tech/unity.js +22 -8
  960. package/icons/tech/unix.js +12 -8
  961. package/icons/tech/unreal-engine.js +9 -8
  962. package/icons/tech/uwsgi.js +38 -8
  963. package/icons/tech/v8.js +109 -8
  964. package/icons/tech/vagrant.js +21 -8
  965. package/icons/tech/vala.js +57 -8
  966. package/icons/tech/vercel.js +6 -8
  967. package/icons/tech/veutify.js +11 -8
  968. package/icons/tech/vim.js +82 -8
  969. package/icons/tech/visualstudio.js +12 -8
  970. package/icons/tech/vite.js +6 -8
  971. package/icons/tech/vitejs.js +56 -8
  972. package/icons/tech/vscode.js +114 -12
  973. package/icons/tech/vsphere.js +25 -8
  974. package/icons/tech/vue-storefront.js +22 -8
  975. package/icons/tech/vue.js +16 -8
  976. package/icons/tech/vyper.js +17 -8
  977. package/icons/tech/webassembly.js +12 -8
  978. package/icons/tech/webflow.js +12 -8
  979. package/icons/tech/weblate.js +80 -8
  980. package/icons/tech/webpack.js +21 -8
  981. package/icons/tech/webstorm.js +80 -8
  982. package/icons/tech/windows11.js +12 -8
  983. package/icons/tech/windows8.js +12 -8
  984. package/icons/tech/woo-commerce.js +22 -8
  985. package/icons/tech/wordpress.js +70 -8
  986. package/icons/tech/xamarin.js +12 -8
  987. package/icons/tech/xcode.js +575 -8
  988. package/icons/tech/xml.js +51 -8
  989. package/icons/tech/yaml.js +16 -8
  990. package/icons/tech/yarn.js +9 -8
  991. package/icons/tech/yii-framework.js +35 -8
  992. package/icons/tech/yuno-host.js +15 -8
  993. package/icons/tech/zend-framework.js +14 -8
  994. package/icons/tech/zig.js +28 -8
  995. package/package.json +35 -26
  996. package/react/LikeC4Browser.d.ts +1 -1
  997. package/react/LikeC4ViewElement.d.ts +4 -2
  998. package/react/index.d.ts +1 -0
  999. package/react/index.mjs +1452 -1312
  1000. package/react/styles.d.ts +2 -2
  1001. package/react/types.d.ts +4 -2
  1002. package/dist/__app__/react/components.mjs +0 -25397
  1003. /package/dist/__app__/src/{-view-lazy-data-WZmbIsHq.js → routes/-view-lazy-data.js} +0 -0
@@ -0,0 +1,1528 @@
1
+ import * as React from "react";
2
+ const {
3
+ createElement,
4
+ createContext,
5
+ createRef,
6
+ forwardRef,
7
+ useCallback,
8
+ useContext,
9
+ useEffect,
10
+ useImperativeHandle,
11
+ useLayoutEffect,
12
+ useMemo,
13
+ useRef,
14
+ useState
15
+ } = React, useId = React.useId, useLayoutEffect_do_not_use_directly = useLayoutEffect, PanelGroupContext = createContext(null);
16
+ PanelGroupContext.displayName = "PanelGroupContext";
17
+ const useIsomorphicLayoutEffect = useLayoutEffect_do_not_use_directly, wrappedUseId = typeof useId == "function" ? useId : () => null;
18
+ let counter = 0;
19
+ function useUniqueId(idFromParams = null) {
20
+ const idFromUseId = wrappedUseId(), idRef = useRef(idFromParams || idFromUseId || null);
21
+ return idRef.current === null && (idRef.current = "" + counter++), idFromParams ?? idRef.current;
22
+ }
23
+ function PanelWithForwardedRef({
24
+ children,
25
+ className: classNameFromProps = "",
26
+ collapsedSize,
27
+ collapsible,
28
+ defaultSize,
29
+ forwardedRef,
30
+ id: idFromProps,
31
+ maxSize,
32
+ minSize,
33
+ onCollapse,
34
+ onExpand,
35
+ onResize,
36
+ order,
37
+ style: styleFromProps,
38
+ tagName: Type = "div",
39
+ ...rest
40
+ }) {
41
+ const context = useContext(PanelGroupContext);
42
+ if (context === null)
43
+ throw Error("Panel components must be rendered within a PanelGroup container");
44
+ const {
45
+ collapsePanel,
46
+ expandPanel,
47
+ getPanelSize,
48
+ getPanelStyle,
49
+ groupId,
50
+ isPanelCollapsed,
51
+ reevaluatePanelConstraints,
52
+ registerPanel,
53
+ resizePanel: resizePanel2,
54
+ unregisterPanel
55
+ } = context, panelId = useUniqueId(idFromProps), panelDataRef = useRef({
56
+ callbacks: {
57
+ onCollapse,
58
+ onExpand,
59
+ onResize
60
+ },
61
+ constraints: {
62
+ collapsedSize,
63
+ collapsible,
64
+ defaultSize,
65
+ maxSize,
66
+ minSize
67
+ },
68
+ id: panelId,
69
+ idIsFromProps: idFromProps !== void 0,
70
+ order
71
+ });
72
+ useRef({
73
+ didLogMissingDefaultSizeWarning: !1
74
+ }), useIsomorphicLayoutEffect(() => {
75
+ const {
76
+ callbacks,
77
+ constraints
78
+ } = panelDataRef.current, prevConstraints = {
79
+ ...constraints
80
+ };
81
+ panelDataRef.current.id = panelId, panelDataRef.current.idIsFromProps = idFromProps !== void 0, panelDataRef.current.order = order, callbacks.onCollapse =
82
+ onCollapse, callbacks.onExpand = onExpand, callbacks.onResize = onResize, constraints.collapsedSize = collapsedSize, constraints.collapsible = collapsible,
83
+ constraints.defaultSize = defaultSize, constraints.maxSize = maxSize, constraints.minSize = minSize, (prevConstraints.collapsedSize !== constraints.
84
+ collapsedSize || prevConstraints.collapsible !== constraints.collapsible || prevConstraints.maxSize !== constraints.maxSize || prevConstraints.minSize !==
85
+ constraints.minSize) && reevaluatePanelConstraints(panelDataRef.current, prevConstraints);
86
+ }), useIsomorphicLayoutEffect(() => {
87
+ const panelData = panelDataRef.current;
88
+ return registerPanel(panelData), () => {
89
+ unregisterPanel(panelData);
90
+ };
91
+ }, [order, panelId, registerPanel, unregisterPanel]), useImperativeHandle(forwardedRef, () => ({
92
+ collapse: () => {
93
+ collapsePanel(panelDataRef.current);
94
+ },
95
+ expand: (minSize2) => {
96
+ expandPanel(panelDataRef.current, minSize2);
97
+ },
98
+ getId() {
99
+ return panelId;
100
+ },
101
+ getSize() {
102
+ return getPanelSize(panelDataRef.current);
103
+ },
104
+ isCollapsed() {
105
+ return isPanelCollapsed(panelDataRef.current);
106
+ },
107
+ isExpanded() {
108
+ return !isPanelCollapsed(panelDataRef.current);
109
+ },
110
+ resize: (size) => {
111
+ resizePanel2(panelDataRef.current, size);
112
+ }
113
+ }), [collapsePanel, expandPanel, getPanelSize, isPanelCollapsed, panelId, resizePanel2]);
114
+ const style = getPanelStyle(panelDataRef.current, defaultSize);
115
+ return createElement(Type, {
116
+ ...rest,
117
+ children,
118
+ className: classNameFromProps,
119
+ id: idFromProps,
120
+ style: {
121
+ ...style,
122
+ ...styleFromProps
123
+ },
124
+ // CSS selectors
125
+ "data-panel": "",
126
+ "data-panel-collapsible": collapsible || void 0,
127
+ "data-panel-group-id": groupId,
128
+ "data-panel-id": panelId,
129
+ "data-panel-size": parseFloat("" + style.flexGrow).toFixed(1)
130
+ });
131
+ }
132
+ const Panel = forwardRef((props2, ref) => createElement(PanelWithForwardedRef, {
133
+ ...props2,
134
+ forwardedRef: ref
135
+ }));
136
+ PanelWithForwardedRef.displayName = "Panel";
137
+ Panel.displayName = "forwardRef(Panel)";
138
+ let currentCursorStyle = null, styleElement = null;
139
+ function getCursorStyle(state, constraintFlags) {
140
+ if (constraintFlags) {
141
+ const horizontalMin = (constraintFlags & EXCEEDED_HORIZONTAL_MIN) !== 0, horizontalMax = (constraintFlags & EXCEEDED_HORIZONTAL_MAX) !== 0, verticalMin = (constraintFlags &
142
+ EXCEEDED_VERTICAL_MIN) !== 0, verticalMax = (constraintFlags & EXCEEDED_VERTICAL_MAX) !== 0;
143
+ if (horizontalMin)
144
+ return verticalMin ? "se-resize" : verticalMax ? "ne-resize" : "e-resize";
145
+ if (horizontalMax)
146
+ return verticalMin ? "sw-resize" : verticalMax ? "nw-resize" : "w-resize";
147
+ if (verticalMin)
148
+ return "s-resize";
149
+ if (verticalMax)
150
+ return "n-resize";
151
+ }
152
+ switch (state) {
153
+ case "horizontal":
154
+ return "ew-resize";
155
+ case "intersection":
156
+ return "move";
157
+ case "vertical":
158
+ return "ns-resize";
159
+ }
160
+ }
161
+ function resetGlobalCursorStyle() {
162
+ styleElement !== null && (document.head.removeChild(styleElement), currentCursorStyle = null, styleElement = null);
163
+ }
164
+ function setGlobalCursorStyle(state, constraintFlags) {
165
+ const style = getCursorStyle(state, constraintFlags);
166
+ currentCursorStyle !== style && (currentCursorStyle = style, styleElement === null && (styleElement = document.createElement("style"), document.head.
167
+ appendChild(styleElement)), styleElement.innerHTML = `*{cursor: ${style}!important;}`);
168
+ }
169
+ function isKeyDown(event) {
170
+ return event.type === "keydown";
171
+ }
172
+ function isPointerEvent(event) {
173
+ return event.type.startsWith("pointer");
174
+ }
175
+ function isMouseEvent(event) {
176
+ return event.type.startsWith("mouse");
177
+ }
178
+ function getResizeEventCoordinates(event) {
179
+ if (isPointerEvent(event)) {
180
+ if (event.isPrimary)
181
+ return {
182
+ x: event.clientX,
183
+ y: event.clientY
184
+ };
185
+ } else if (isMouseEvent(event))
186
+ return {
187
+ x: event.clientX,
188
+ y: event.clientY
189
+ };
190
+ return {
191
+ x: 1 / 0,
192
+ y: 1 / 0
193
+ };
194
+ }
195
+ function getInputType() {
196
+ if (typeof matchMedia == "function")
197
+ return matchMedia("(pointer:coarse)").matches ? "coarse" : "fine";
198
+ }
199
+ function intersects(rectOne, rectTwo, strict) {
200
+ return rectOne.x < rectTwo.x + rectTwo.width && rectOne.x + rectOne.width > rectTwo.x && rectOne.y < rectTwo.y + rectTwo.height && rectOne.y + rectOne.
201
+ height > rectTwo.y;
202
+ }
203
+ function compare(a, b) {
204
+ if (a === b) throw new Error("Cannot compare node with itself");
205
+ const ancestors = {
206
+ a: get_ancestors(a),
207
+ b: get_ancestors(b)
208
+ };
209
+ let common_ancestor;
210
+ for (; ancestors.a.at(-1) === ancestors.b.at(-1); )
211
+ a = ancestors.a.pop(), b = ancestors.b.pop(), common_ancestor = a;
212
+ assert(common_ancestor, "Stacking order can only be calculated for elements with a common ancestor");
213
+ const z_indexes = {
214
+ a: get_z_index(find_stacking_context(ancestors.a)),
215
+ b: get_z_index(find_stacking_context(ancestors.b))
216
+ };
217
+ if (z_indexes.a === z_indexes.b) {
218
+ const children = common_ancestor.childNodes, furthest_ancestors = {
219
+ a: ancestors.a.at(-1),
220
+ b: ancestors.b.at(-1)
221
+ };
222
+ let i = children.length;
223
+ for (; i--; ) {
224
+ const child = children[i];
225
+ if (child === furthest_ancestors.a) return 1;
226
+ if (child === furthest_ancestors.b) return -1;
227
+ }
228
+ }
229
+ return Math.sign(z_indexes.a - z_indexes.b);
230
+ }
231
+ const props = /\b(?:position|zIndex|opacity|transform|webkitTransform|mixBlendMode|filter|webkitFilter|isolation)\b/;
232
+ function is_flex_item(node) {
233
+ var _get_parent;
234
+ const display = getComputedStyle((_get_parent = get_parent(node)) !== null && _get_parent !== void 0 ? _get_parent : node).display;
235
+ return display === "flex" || display === "inline-flex";
236
+ }
237
+ function creates_stacking_context(node) {
238
+ const style = getComputedStyle(node);
239
+ return !!(style.position === "fixed" || style.zIndex !== "auto" && (style.position !== "static" || is_flex_item(node)) || +style.opacity < 1 || "tra\
240
+ nsform" in style && style.transform !== "none" || "webkitTransform" in style && style.webkitTransform !== "none" || "mixBlendMode" in style && style.mixBlendMode !==
241
+ "normal" || "filter" in style && style.filter !== "none" || "webkitFilter" in style && style.webkitFilter !== "none" || "isolation" in style && style.
242
+ isolation === "isolate" || props.test(style.willChange) || style.webkitOverflowScrolling === "touch");
243
+ }
244
+ function find_stacking_context(nodes) {
245
+ let i = nodes.length;
246
+ for (; i--; ) {
247
+ const node = nodes[i];
248
+ if (assert(node, "Missing node"), creates_stacking_context(node)) return node;
249
+ }
250
+ return null;
251
+ }
252
+ function get_z_index(node) {
253
+ return node && Number(getComputedStyle(node).zIndex) || 0;
254
+ }
255
+ function get_ancestors(node) {
256
+ const ancestors = [];
257
+ for (; node; )
258
+ ancestors.push(node), node = get_parent(node);
259
+ return ancestors;
260
+ }
261
+ function get_parent(node) {
262
+ const {
263
+ parentNode
264
+ } = node;
265
+ return parentNode && parentNode instanceof ShadowRoot ? parentNode.host : parentNode;
266
+ }
267
+ const EXCEEDED_HORIZONTAL_MIN = 1, EXCEEDED_HORIZONTAL_MAX = 2, EXCEEDED_VERTICAL_MIN = 4, EXCEEDED_VERTICAL_MAX = 8, isCoarsePointer = getInputType() ===
268
+ "coarse";
269
+ let intersectingHandles = [], isPointerDown = !1, ownerDocumentCounts = /* @__PURE__ */ new Map(), panelConstraintFlags = /* @__PURE__ */ new Map();
270
+ const registeredResizeHandlers = /* @__PURE__ */ new Set();
271
+ function registerResizeHandle(resizeHandleId, element, direction, hitAreaMargins, setResizeHandlerState) {
272
+ var _ownerDocumentCounts$;
273
+ const {
274
+ ownerDocument
275
+ } = element, data = {
276
+ direction,
277
+ element,
278
+ hitAreaMargins,
279
+ setResizeHandlerState
280
+ }, count = (_ownerDocumentCounts$ = ownerDocumentCounts.get(ownerDocument)) !== null && _ownerDocumentCounts$ !== void 0 ? _ownerDocumentCounts$ : 0;
281
+ return ownerDocumentCounts.set(ownerDocument, count + 1), registeredResizeHandlers.add(data), updateListeners(), function() {
282
+ var _ownerDocumentCounts$2;
283
+ panelConstraintFlags.delete(resizeHandleId), registeredResizeHandlers.delete(data);
284
+ const count2 = (_ownerDocumentCounts$2 = ownerDocumentCounts.get(ownerDocument)) !== null && _ownerDocumentCounts$2 !== void 0 ? _ownerDocumentCounts$2 :
285
+ 1;
286
+ if (ownerDocumentCounts.set(ownerDocument, count2 - 1), updateListeners(), count2 === 1 && ownerDocumentCounts.delete(ownerDocument), intersectingHandles.
287
+ includes(data)) {
288
+ const index = intersectingHandles.indexOf(data);
289
+ index >= 0 && intersectingHandles.splice(index, 1), updateCursor();
290
+ }
291
+ };
292
+ }
293
+ function handlePointerDown(event) {
294
+ const {
295
+ target
296
+ } = event, {
297
+ x,
298
+ y
299
+ } = getResizeEventCoordinates(event);
300
+ isPointerDown = !0, recalculateIntersectingHandles({
301
+ target,
302
+ x,
303
+ y
304
+ }), updateListeners(), intersectingHandles.length > 0 && (updateResizeHandlerStates("down", event), event.preventDefault(), event.stopPropagation());
305
+ }
306
+ function handlePointerMove(event) {
307
+ const {
308
+ x,
309
+ y
310
+ } = getResizeEventCoordinates(event);
311
+ if (event.buttons === 0 && (isPointerDown = !1, updateResizeHandlerStates("up", event)), !isPointerDown) {
312
+ const {
313
+ target
314
+ } = event;
315
+ recalculateIntersectingHandles({
316
+ target,
317
+ x,
318
+ y
319
+ });
320
+ }
321
+ updateResizeHandlerStates("move", event), updateCursor(), intersectingHandles.length > 0 && event.preventDefault();
322
+ }
323
+ function handlePointerUp(event) {
324
+ const {
325
+ target
326
+ } = event, {
327
+ x,
328
+ y
329
+ } = getResizeEventCoordinates(event);
330
+ panelConstraintFlags.clear(), isPointerDown = !1, intersectingHandles.length > 0 && event.preventDefault(), updateResizeHandlerStates("up", event), recalculateIntersectingHandles(
331
+ {
332
+ target,
333
+ x,
334
+ y
335
+ }), updateCursor(), updateListeners();
336
+ }
337
+ function recalculateIntersectingHandles({
338
+ target,
339
+ x,
340
+ y
341
+ }) {
342
+ intersectingHandles.splice(0);
343
+ let targetElement = null;
344
+ target instanceof HTMLElement && (targetElement = target), registeredResizeHandlers.forEach((data) => {
345
+ const {
346
+ element: dragHandleElement,
347
+ hitAreaMargins
348
+ } = data, dragHandleRect = dragHandleElement.getBoundingClientRect(), {
349
+ bottom,
350
+ left,
351
+ right,
352
+ top
353
+ } = dragHandleRect, margin = isCoarsePointer ? hitAreaMargins.coarse : hitAreaMargins.fine;
354
+ if (x >= left - margin && x <= right + margin && y >= top - margin && y <= bottom + margin) {
355
+ if (targetElement !== null && dragHandleElement !== targetElement && !dragHandleElement.contains(targetElement) && !targetElement.contains(dragHandleElement) &&
356
+ // Calculating stacking order has a cost, so we should avoid it if possible
357
+ // That is why we only check potentially intersecting handles,
358
+ // and why we skip if the event target is within the handle's DOM
359
+ compare(targetElement, dragHandleElement) > 0) {
360
+ let currentElement = targetElement, didIntersect = !1;
361
+ for (; currentElement && !currentElement.contains(dragHandleElement); ) {
362
+ if (intersects(currentElement.getBoundingClientRect(), dragHandleRect)) {
363
+ didIntersect = !0;
364
+ break;
365
+ }
366
+ currentElement = currentElement.parentElement;
367
+ }
368
+ if (didIntersect)
369
+ return;
370
+ }
371
+ intersectingHandles.push(data);
372
+ }
373
+ });
374
+ }
375
+ function reportConstraintsViolation(resizeHandleId, flag) {
376
+ panelConstraintFlags.set(resizeHandleId, flag);
377
+ }
378
+ function updateCursor() {
379
+ let intersectsHorizontal = !1, intersectsVertical = !1;
380
+ intersectingHandles.forEach((data) => {
381
+ const {
382
+ direction
383
+ } = data;
384
+ direction === "horizontal" ? intersectsHorizontal = !0 : intersectsVertical = !0;
385
+ });
386
+ let constraintFlags = 0;
387
+ panelConstraintFlags.forEach((flag) => {
388
+ constraintFlags |= flag;
389
+ }), intersectsHorizontal && intersectsVertical ? setGlobalCursorStyle("intersection", constraintFlags) : intersectsHorizontal ? setGlobalCursorStyle(
390
+ "horizontal", constraintFlags) : intersectsVertical ? setGlobalCursorStyle("vertical", constraintFlags) : resetGlobalCursorStyle();
391
+ }
392
+ function updateListeners() {
393
+ ownerDocumentCounts.forEach((_, ownerDocument) => {
394
+ const {
395
+ body
396
+ } = ownerDocument;
397
+ body.removeEventListener("contextmenu", handlePointerUp), body.removeEventListener("pointerdown", handlePointerDown), body.removeEventListener("po\
398
+ interleave", handlePointerMove), body.removeEventListener("pointermove", handlePointerMove);
399
+ }), window.removeEventListener("pointerup", handlePointerUp), window.removeEventListener("pointercancel", handlePointerUp), registeredResizeHandlers.
400
+ size > 0 && (isPointerDown ? (intersectingHandles.length > 0 && ownerDocumentCounts.forEach((count, ownerDocument) => {
401
+ const {
402
+ body
403
+ } = ownerDocument;
404
+ count > 0 && (body.addEventListener("contextmenu", handlePointerUp), body.addEventListener("pointerleave", handlePointerMove), body.addEventListener(
405
+ "pointermove", handlePointerMove));
406
+ }), window.addEventListener("pointerup", handlePointerUp), window.addEventListener("pointercancel", handlePointerUp)) : ownerDocumentCounts.forEach(
407
+ (count, ownerDocument) => {
408
+ const {
409
+ body
410
+ } = ownerDocument;
411
+ count > 0 && (body.addEventListener("pointerdown", handlePointerDown, {
412
+ capture: !0
413
+ }), body.addEventListener("pointermove", handlePointerMove));
414
+ }));
415
+ }
416
+ function updateResizeHandlerStates(action, event) {
417
+ registeredResizeHandlers.forEach((data) => {
418
+ const {
419
+ setResizeHandlerState
420
+ } = data, isActive = intersectingHandles.includes(data);
421
+ setResizeHandlerState(action, isActive, event);
422
+ });
423
+ }
424
+ function useForceUpdate() {
425
+ const [_, setCount] = useState(0);
426
+ return useCallback(() => setCount((prevCount) => prevCount + 1), []);
427
+ }
428
+ function assert(expectedCondition, message) {
429
+ if (!expectedCondition)
430
+ throw console.error(message), Error(message);
431
+ }
432
+ const PRECISION = 10;
433
+ function fuzzyCompareNumbers(actual, expected, fractionDigits = PRECISION) {
434
+ return actual.toFixed(fractionDigits) === expected.toFixed(fractionDigits) ? 0 : actual > expected ? 1 : -1;
435
+ }
436
+ function fuzzyNumbersEqual$1(actual, expected, fractionDigits = PRECISION) {
437
+ return fuzzyCompareNumbers(actual, expected, fractionDigits) === 0;
438
+ }
439
+ function fuzzyNumbersEqual(actual, expected, fractionDigits) {
440
+ return fuzzyCompareNumbers(actual, expected, fractionDigits) === 0;
441
+ }
442
+ function fuzzyLayoutsEqual(actual, expected, fractionDigits) {
443
+ if (actual.length !== expected.length)
444
+ return !1;
445
+ for (let index = 0; index < actual.length; index++) {
446
+ const actualSize = actual[index], expectedSize = expected[index];
447
+ if (!fuzzyNumbersEqual(actualSize, expectedSize, fractionDigits))
448
+ return !1;
449
+ }
450
+ return !0;
451
+ }
452
+ function resizePanel({
453
+ panelConstraints: panelConstraintsArray,
454
+ panelIndex,
455
+ size
456
+ }) {
457
+ const panelConstraints = panelConstraintsArray[panelIndex];
458
+ assert(panelConstraints != null, `Panel constraints not found for index ${panelIndex}`);
459
+ let {
460
+ collapsedSize = 0,
461
+ collapsible,
462
+ maxSize = 100,
463
+ minSize = 0
464
+ } = panelConstraints;
465
+ if (fuzzyCompareNumbers(size, minSize) < 0)
466
+ if (collapsible) {
467
+ const halfwayPoint = (collapsedSize + minSize) / 2;
468
+ fuzzyCompareNumbers(size, halfwayPoint) < 0 ? size = collapsedSize : size = minSize;
469
+ } else
470
+ size = minSize;
471
+ return size = Math.min(maxSize, size), size = parseFloat(size.toFixed(PRECISION)), size;
472
+ }
473
+ function adjustLayoutByDelta({
474
+ delta,
475
+ initialLayout,
476
+ panelConstraints: panelConstraintsArray,
477
+ pivotIndices,
478
+ prevLayout,
479
+ trigger
480
+ }) {
481
+ if (fuzzyNumbersEqual(delta, 0))
482
+ return initialLayout;
483
+ const nextLayout = [...initialLayout], [firstPivotIndex, secondPivotIndex] = pivotIndices;
484
+ assert(firstPivotIndex != null, "Invalid first pivot index"), assert(secondPivotIndex != null, "Invalid second pivot index");
485
+ let deltaApplied = 0;
486
+ if (trigger === "keyboard") {
487
+ {
488
+ const index = delta < 0 ? secondPivotIndex : firstPivotIndex, panelConstraints = panelConstraintsArray[index];
489
+ assert(panelConstraints, `Panel constraints not found for index ${index}`);
490
+ const {
491
+ collapsedSize = 0,
492
+ collapsible,
493
+ minSize = 0
494
+ } = panelConstraints;
495
+ if (collapsible) {
496
+ const prevSize = initialLayout[index];
497
+ if (assert(prevSize != null, `Previous layout not found for panel index ${index}`), fuzzyNumbersEqual(prevSize, collapsedSize)) {
498
+ const localDelta = minSize - prevSize;
499
+ fuzzyCompareNumbers(localDelta, Math.abs(delta)) > 0 && (delta = delta < 0 ? 0 - localDelta : localDelta);
500
+ }
501
+ }
502
+ }
503
+ {
504
+ const index = delta < 0 ? firstPivotIndex : secondPivotIndex, panelConstraints = panelConstraintsArray[index];
505
+ assert(panelConstraints, `No panel constraints found for index ${index}`);
506
+ const {
507
+ collapsedSize = 0,
508
+ collapsible,
509
+ minSize = 0
510
+ } = panelConstraints;
511
+ if (collapsible) {
512
+ const prevSize = initialLayout[index];
513
+ if (assert(prevSize != null, `Previous layout not found for panel index ${index}`), fuzzyNumbersEqual(prevSize, minSize)) {
514
+ const localDelta = prevSize - collapsedSize;
515
+ fuzzyCompareNumbers(localDelta, Math.abs(delta)) > 0 && (delta = delta < 0 ? 0 - localDelta : localDelta);
516
+ }
517
+ }
518
+ }
519
+ }
520
+ {
521
+ const increment = delta < 0 ? 1 : -1;
522
+ let index = delta < 0 ? secondPivotIndex : firstPivotIndex, maxAvailableDelta = 0;
523
+ for (; ; ) {
524
+ const prevSize = initialLayout[index];
525
+ assert(prevSize != null, `Previous layout not found for panel index ${index}`);
526
+ const delta2 = resizePanel({
527
+ panelConstraints: panelConstraintsArray,
528
+ panelIndex: index,
529
+ size: 100
530
+ }) - prevSize;
531
+ if (maxAvailableDelta += delta2, index += increment, index < 0 || index >= panelConstraintsArray.length)
532
+ break;
533
+ }
534
+ const minAbsDelta = Math.min(Math.abs(delta), Math.abs(maxAvailableDelta));
535
+ delta = delta < 0 ? 0 - minAbsDelta : minAbsDelta;
536
+ }
537
+ {
538
+ let index = delta < 0 ? firstPivotIndex : secondPivotIndex;
539
+ for (; index >= 0 && index < panelConstraintsArray.length; ) {
540
+ const deltaRemaining = Math.abs(delta) - Math.abs(deltaApplied), prevSize = initialLayout[index];
541
+ assert(prevSize != null, `Previous layout not found for panel index ${index}`);
542
+ const unsafeSize = prevSize - deltaRemaining, safeSize = resizePanel({
543
+ panelConstraints: panelConstraintsArray,
544
+ panelIndex: index,
545
+ size: unsafeSize
546
+ });
547
+ if (!fuzzyNumbersEqual(prevSize, safeSize) && (deltaApplied += prevSize - safeSize, nextLayout[index] = safeSize, deltaApplied.toPrecision(3).localeCompare(
548
+ Math.abs(delta).toPrecision(3), void 0, {
549
+ numeric: !0
550
+ }) >= 0))
551
+ break;
552
+ delta < 0 ? index-- : index++;
553
+ }
554
+ }
555
+ if (fuzzyLayoutsEqual(prevLayout, nextLayout))
556
+ return prevLayout;
557
+ {
558
+ const pivotIndex = delta < 0 ? secondPivotIndex : firstPivotIndex, prevSize = initialLayout[pivotIndex];
559
+ assert(prevSize != null, `Previous layout not found for panel index ${pivotIndex}`);
560
+ const unsafeSize = prevSize + deltaApplied, safeSize = resizePanel({
561
+ panelConstraints: panelConstraintsArray,
562
+ panelIndex: pivotIndex,
563
+ size: unsafeSize
564
+ });
565
+ if (nextLayout[pivotIndex] = safeSize, !fuzzyNumbersEqual(safeSize, unsafeSize)) {
566
+ let deltaRemaining = unsafeSize - safeSize, index = delta < 0 ? secondPivotIndex : firstPivotIndex;
567
+ for (; index >= 0 && index < panelConstraintsArray.length; ) {
568
+ const prevSize2 = nextLayout[index];
569
+ assert(prevSize2 != null, `Previous layout not found for panel index ${index}`);
570
+ const unsafeSize2 = prevSize2 + deltaRemaining, safeSize2 = resizePanel({
571
+ panelConstraints: panelConstraintsArray,
572
+ panelIndex: index,
573
+ size: unsafeSize2
574
+ });
575
+ if (fuzzyNumbersEqual(prevSize2, safeSize2) || (deltaRemaining -= safeSize2 - prevSize2, nextLayout[index] = safeSize2), fuzzyNumbersEqual(deltaRemaining,
576
+ 0))
577
+ break;
578
+ delta > 0 ? index-- : index++;
579
+ }
580
+ }
581
+ }
582
+ const totalSize = nextLayout.reduce((total, size) => size + total, 0);
583
+ return fuzzyNumbersEqual(totalSize, 100) ? nextLayout : prevLayout;
584
+ }
585
+ function calculateAriaValues({
586
+ layout,
587
+ panelsArray,
588
+ pivotIndices
589
+ }) {
590
+ let currentMinSize = 0, currentMaxSize = 100, totalMinSize = 0, totalMaxSize = 0;
591
+ const firstIndex = pivotIndices[0];
592
+ assert(firstIndex != null, "No pivot index found"), panelsArray.forEach((panelData, index) => {
593
+ const {
594
+ constraints
595
+ } = panelData, {
596
+ maxSize = 100,
597
+ minSize = 0
598
+ } = constraints;
599
+ index === firstIndex ? (currentMinSize = minSize, currentMaxSize = maxSize) : (totalMinSize += minSize, totalMaxSize += maxSize);
600
+ });
601
+ const valueMax = Math.min(currentMaxSize, 100 - totalMinSize), valueMin = Math.max(currentMinSize, 100 - totalMaxSize), valueNow = layout[firstIndex];
602
+ return {
603
+ valueMax,
604
+ valueMin,
605
+ valueNow
606
+ };
607
+ }
608
+ function getResizeHandleElementsForGroup(groupId, scope = document) {
609
+ return Array.from(scope.querySelectorAll(`[data-panel-resize-handle-id][data-panel-group-id="${groupId}"]`));
610
+ }
611
+ function getResizeHandleElementIndex(groupId, id, scope = document) {
612
+ const index = getResizeHandleElementsForGroup(groupId, scope).findIndex((handle) => handle.getAttribute("data-panel-resize-handle-id") === id);
613
+ return index ?? null;
614
+ }
615
+ function determinePivotIndices(groupId, dragHandleId, panelGroupElement) {
616
+ const index = getResizeHandleElementIndex(groupId, dragHandleId, panelGroupElement);
617
+ return index != null ? [index, index + 1] : [-1, -1];
618
+ }
619
+ function getPanelGroupElement(id, rootElement = document) {
620
+ var _dataset;
621
+ if (rootElement instanceof HTMLElement && (rootElement == null || (_dataset = rootElement.dataset) === null || _dataset === void 0 ? void 0 : _dataset.
622
+ panelGroupId) == id)
623
+ return rootElement;
624
+ const element = rootElement.querySelector(`[data-panel-group][data-panel-group-id="${id}"]`);
625
+ return element || null;
626
+ }
627
+ function getResizeHandleElement(id, scope = document) {
628
+ const element = scope.querySelector(`[data-panel-resize-handle-id="${id}"]`);
629
+ return element || null;
630
+ }
631
+ function getResizeHandlePanelIds(groupId, handleId, panelsArray, scope = document) {
632
+ var _panelsArray$index$id, _panelsArray$index, _panelsArray$id, _panelsArray;
633
+ const handle = getResizeHandleElement(handleId, scope), handles = getResizeHandleElementsForGroup(groupId, scope), index = handle ? handles.indexOf(
634
+ handle) : -1, idBefore = (_panelsArray$index$id = (_panelsArray$index = panelsArray[index]) === null || _panelsArray$index === void 0 ? void 0 : _panelsArray$index.
635
+ id) !== null && _panelsArray$index$id !== void 0 ? _panelsArray$index$id : null, idAfter = (_panelsArray$id = (_panelsArray = panelsArray[index + 1]) ===
636
+ null || _panelsArray === void 0 ? void 0 : _panelsArray.id) !== null && _panelsArray$id !== void 0 ? _panelsArray$id : null;
637
+ return [idBefore, idAfter];
638
+ }
639
+ function useWindowSplitterPanelGroupBehavior({
640
+ committedValuesRef,
641
+ eagerValuesRef,
642
+ groupId,
643
+ layout,
644
+ panelDataArray,
645
+ panelGroupElement,
646
+ setLayout
647
+ }) {
648
+ useRef({
649
+ didWarnAboutMissingResizeHandle: !1
650
+ }), useIsomorphicLayoutEffect(() => {
651
+ if (!panelGroupElement)
652
+ return;
653
+ const resizeHandleElements = getResizeHandleElementsForGroup(groupId, panelGroupElement);
654
+ for (let index = 0; index < panelDataArray.length - 1; index++) {
655
+ const {
656
+ valueMax,
657
+ valueMin,
658
+ valueNow
659
+ } = calculateAriaValues({
660
+ layout,
661
+ panelsArray: panelDataArray,
662
+ pivotIndices: [index, index + 1]
663
+ }), resizeHandleElement = resizeHandleElements[index];
664
+ if (resizeHandleElement != null) {
665
+ const panelData = panelDataArray[index];
666
+ assert(panelData, `No panel data found for index "${index}"`), resizeHandleElement.setAttribute("aria-controls", panelData.id), resizeHandleElement.
667
+ setAttribute("aria-valuemax", "" + Math.round(valueMax)), resizeHandleElement.setAttribute("aria-valuemin", "" + Math.round(valueMin)), resizeHandleElement.
668
+ setAttribute("aria-valuenow", valueNow != null ? "" + Math.round(valueNow) : "");
669
+ }
670
+ }
671
+ return () => {
672
+ resizeHandleElements.forEach((resizeHandleElement, index) => {
673
+ resizeHandleElement.removeAttribute("aria-controls"), resizeHandleElement.removeAttribute("aria-valuemax"), resizeHandleElement.removeAttribute(
674
+ "aria-valuemin"), resizeHandleElement.removeAttribute("aria-valuenow");
675
+ });
676
+ };
677
+ }, [groupId, layout, panelDataArray, panelGroupElement]), useEffect(() => {
678
+ if (!panelGroupElement)
679
+ return;
680
+ const eagerValues = eagerValuesRef.current;
681
+ assert(eagerValues, "Eager values not found");
682
+ const {
683
+ panelDataArray: panelDataArray2
684
+ } = eagerValues, groupElement = getPanelGroupElement(groupId, panelGroupElement);
685
+ assert(groupElement != null, `No group found for id "${groupId}"`);
686
+ const handles = getResizeHandleElementsForGroup(groupId, panelGroupElement);
687
+ assert(handles, `No resize handles found for group id "${groupId}"`);
688
+ const cleanupFunctions = handles.map((handle) => {
689
+ const handleId = handle.getAttribute("data-panel-resize-handle-id");
690
+ assert(handleId, "Resize handle element has no handle id attribute");
691
+ const [idBefore, idAfter] = getResizeHandlePanelIds(groupId, handleId, panelDataArray2, panelGroupElement);
692
+ if (idBefore == null || idAfter == null)
693
+ return () => {
694
+ };
695
+ const onKeyDown = (event) => {
696
+ if (!event.defaultPrevented)
697
+ switch (event.key) {
698
+ case "Enter": {
699
+ event.preventDefault();
700
+ const index = panelDataArray2.findIndex((panelData) => panelData.id === idBefore);
701
+ if (index >= 0) {
702
+ const panelData = panelDataArray2[index];
703
+ assert(panelData, `No panel data found for index ${index}`);
704
+ const size = layout[index], {
705
+ collapsedSize = 0,
706
+ collapsible,
707
+ minSize = 0
708
+ } = panelData.constraints;
709
+ if (size != null && collapsible) {
710
+ const nextLayout = adjustLayoutByDelta({
711
+ delta: fuzzyNumbersEqual(size, collapsedSize) ? minSize - collapsedSize : collapsedSize - size,
712
+ initialLayout: layout,
713
+ panelConstraints: panelDataArray2.map((panelData2) => panelData2.constraints),
714
+ pivotIndices: determinePivotIndices(groupId, handleId, panelGroupElement),
715
+ prevLayout: layout,
716
+ trigger: "keyboard"
717
+ });
718
+ layout !== nextLayout && setLayout(nextLayout);
719
+ }
720
+ }
721
+ break;
722
+ }
723
+ }
724
+ };
725
+ return handle.addEventListener("keydown", onKeyDown), () => {
726
+ handle.removeEventListener("keydown", onKeyDown);
727
+ };
728
+ });
729
+ return () => {
730
+ cleanupFunctions.forEach((cleanupFunction) => cleanupFunction());
731
+ };
732
+ }, [panelGroupElement, committedValuesRef, eagerValuesRef, groupId, layout, panelDataArray, setLayout]);
733
+ }
734
+ function areEqual(arrayA, arrayB) {
735
+ if (arrayA.length !== arrayB.length)
736
+ return !1;
737
+ for (let index = 0; index < arrayA.length; index++)
738
+ if (arrayA[index] !== arrayB[index])
739
+ return !1;
740
+ return !0;
741
+ }
742
+ function getResizeEventCursorPosition(direction, event) {
743
+ const isHorizontal = direction === "horizontal", {
744
+ x,
745
+ y
746
+ } = getResizeEventCoordinates(event);
747
+ return isHorizontal ? x : y;
748
+ }
749
+ function calculateDragOffsetPercentage(event, dragHandleId, direction, initialDragState, panelGroupElement) {
750
+ const isHorizontal = direction === "horizontal", handleElement = getResizeHandleElement(dragHandleId, panelGroupElement);
751
+ assert(handleElement, `No resize handle element found for id "${dragHandleId}"`);
752
+ const groupId = handleElement.getAttribute("data-panel-group-id");
753
+ assert(groupId, "Resize handle element has no group id attribute");
754
+ let {
755
+ initialCursorPosition
756
+ } = initialDragState;
757
+ const cursorPosition = getResizeEventCursorPosition(direction, event), groupElement = getPanelGroupElement(groupId, panelGroupElement);
758
+ assert(groupElement, `No group element found for id "${groupId}"`);
759
+ const groupRect = groupElement.getBoundingClientRect(), groupSizeInPixels = isHorizontal ? groupRect.width : groupRect.height;
760
+ return (cursorPosition - initialCursorPosition) / groupSizeInPixels * 100;
761
+ }
762
+ function calculateDeltaPercentage(event, dragHandleId, direction, initialDragState, keyboardResizeBy, panelGroupElement) {
763
+ if (isKeyDown(event)) {
764
+ const isHorizontal = direction === "horizontal";
765
+ let delta = 0;
766
+ event.shiftKey ? delta = 100 : keyboardResizeBy != null ? delta = keyboardResizeBy : delta = 10;
767
+ let movement = 0;
768
+ switch (event.key) {
769
+ case "ArrowDown":
770
+ movement = isHorizontal ? 0 : delta;
771
+ break;
772
+ case "ArrowLeft":
773
+ movement = isHorizontal ? -delta : 0;
774
+ break;
775
+ case "ArrowRight":
776
+ movement = isHorizontal ? delta : 0;
777
+ break;
778
+ case "ArrowUp":
779
+ movement = isHorizontal ? 0 : -delta;
780
+ break;
781
+ case "End":
782
+ movement = 100;
783
+ break;
784
+ case "Home":
785
+ movement = -100;
786
+ break;
787
+ }
788
+ return movement;
789
+ } else
790
+ return initialDragState == null ? 0 : calculateDragOffsetPercentage(event, dragHandleId, direction, initialDragState, panelGroupElement);
791
+ }
792
+ function calculateUnsafeDefaultLayout({
793
+ panelDataArray
794
+ }) {
795
+ const layout = Array(panelDataArray.length), panelConstraintsArray = panelDataArray.map((panelData) => panelData.constraints);
796
+ let numPanelsWithSizes = 0, remainingSize = 100;
797
+ for (let index = 0; index < panelDataArray.length; index++) {
798
+ const panelConstraints = panelConstraintsArray[index];
799
+ assert(panelConstraints, `Panel constraints not found for index ${index}`);
800
+ const {
801
+ defaultSize
802
+ } = panelConstraints;
803
+ defaultSize != null && (numPanelsWithSizes++, layout[index] = defaultSize, remainingSize -= defaultSize);
804
+ }
805
+ for (let index = 0; index < panelDataArray.length; index++) {
806
+ const panelConstraints = panelConstraintsArray[index];
807
+ assert(panelConstraints, `Panel constraints not found for index ${index}`);
808
+ const {
809
+ defaultSize
810
+ } = panelConstraints;
811
+ if (defaultSize != null)
812
+ continue;
813
+ const numRemainingPanels = panelDataArray.length - numPanelsWithSizes, size = remainingSize / numRemainingPanels;
814
+ numPanelsWithSizes++, layout[index] = size, remainingSize -= size;
815
+ }
816
+ return layout;
817
+ }
818
+ function callPanelCallbacks(panelsArray, layout, panelIdToLastNotifiedSizeMap) {
819
+ layout.forEach((size, index) => {
820
+ const panelData = panelsArray[index];
821
+ assert(panelData, `Panel data not found for index ${index}`);
822
+ const {
823
+ callbacks,
824
+ constraints,
825
+ id: panelId
826
+ } = panelData, {
827
+ collapsedSize = 0,
828
+ collapsible
829
+ } = constraints, lastNotifiedSize = panelIdToLastNotifiedSizeMap[panelId];
830
+ if (lastNotifiedSize == null || size !== lastNotifiedSize) {
831
+ panelIdToLastNotifiedSizeMap[panelId] = size;
832
+ const {
833
+ onCollapse,
834
+ onExpand,
835
+ onResize
836
+ } = callbacks;
837
+ onResize && onResize(size, lastNotifiedSize), collapsible && (onCollapse || onExpand) && (onExpand && (lastNotifiedSize == null || fuzzyNumbersEqual$1(
838
+ lastNotifiedSize, collapsedSize)) && !fuzzyNumbersEqual$1(size, collapsedSize) && onExpand(), onCollapse && (lastNotifiedSize == null || !fuzzyNumbersEqual$1(
839
+ lastNotifiedSize, collapsedSize)) && fuzzyNumbersEqual$1(size, collapsedSize) && onCollapse());
840
+ }
841
+ });
842
+ }
843
+ function compareLayouts(a, b) {
844
+ if (a.length !== b.length)
845
+ return !1;
846
+ for (let index = 0; index < a.length; index++)
847
+ if (a[index] != b[index])
848
+ return !1;
849
+ return !0;
850
+ }
851
+ function computePanelFlexBoxStyle({
852
+ defaultSize,
853
+ dragState,
854
+ layout,
855
+ panelData,
856
+ panelIndex,
857
+ precision = 3
858
+ }) {
859
+ const size = layout[panelIndex];
860
+ let flexGrow;
861
+ return size == null ? flexGrow = defaultSize != null ? defaultSize.toPrecision(precision) : "1" : panelData.length === 1 ? flexGrow = "1" : flexGrow =
862
+ size.toPrecision(precision), {
863
+ flexBasis: 0,
864
+ flexGrow,
865
+ flexShrink: 1,
866
+ // Without this, Panel sizes may be unintentionally overridden by their content
867
+ overflow: "hidden",
868
+ // Disable pointer events inside of a panel during resize
869
+ // This avoid edge cases like nested iframes
870
+ pointerEvents: dragState !== null ? "none" : void 0
871
+ };
872
+ }
873
+ function debounce(callback, durationMs = 10) {
874
+ let timeoutId = null;
875
+ return (...args) => {
876
+ timeoutId !== null && clearTimeout(timeoutId), timeoutId = setTimeout(() => {
877
+ callback(...args);
878
+ }, durationMs);
879
+ };
880
+ }
881
+ function initializeDefaultStorage(storageObject) {
882
+ try {
883
+ if (typeof localStorage < "u")
884
+ storageObject.getItem = (name) => localStorage.getItem(name), storageObject.setItem = (name, value) => {
885
+ localStorage.setItem(name, value);
886
+ };
887
+ else
888
+ throw new Error("localStorage not supported in this environment");
889
+ } catch (error) {
890
+ console.error(error), storageObject.getItem = () => null, storageObject.setItem = () => {
891
+ };
892
+ }
893
+ }
894
+ function getPanelGroupKey(autoSaveId) {
895
+ return `react-resizable-panels:${autoSaveId}`;
896
+ }
897
+ function getPanelKey(panels) {
898
+ return panels.map((panel) => {
899
+ const {
900
+ constraints,
901
+ id,
902
+ idIsFromProps,
903
+ order
904
+ } = panel;
905
+ return idIsFromProps ? id : order ? `${order}:${JSON.stringify(constraints)}` : JSON.stringify(constraints);
906
+ }).sort((a, b) => a.localeCompare(b)).join(",");
907
+ }
908
+ function loadSerializedPanelGroupState(autoSaveId, storage) {
909
+ try {
910
+ const panelGroupKey = getPanelGroupKey(autoSaveId), serialized = storage.getItem(panelGroupKey);
911
+ if (serialized) {
912
+ const parsed = JSON.parse(serialized);
913
+ if (typeof parsed == "object" && parsed != null)
914
+ return parsed;
915
+ }
916
+ } catch {
917
+ }
918
+ return null;
919
+ }
920
+ function loadPanelGroupState(autoSaveId, panels, storage) {
921
+ var _loadSerializedPanelG, _state$panelKey;
922
+ const state = (_loadSerializedPanelG = loadSerializedPanelGroupState(autoSaveId, storage)) !== null && _loadSerializedPanelG !== void 0 ? _loadSerializedPanelG :
923
+ {}, panelKey = getPanelKey(panels);
924
+ return (_state$panelKey = state[panelKey]) !== null && _state$panelKey !== void 0 ? _state$panelKey : null;
925
+ }
926
+ function savePanelGroupState(autoSaveId, panels, panelSizesBeforeCollapse, sizes, storage) {
927
+ var _loadSerializedPanelG2;
928
+ const panelGroupKey = getPanelGroupKey(autoSaveId), panelKey = getPanelKey(panels), state = (_loadSerializedPanelG2 = loadSerializedPanelGroupState(
929
+ autoSaveId, storage)) !== null && _loadSerializedPanelG2 !== void 0 ? _loadSerializedPanelG2 : {};
930
+ state[panelKey] = {
931
+ expandToSizes: Object.fromEntries(panelSizesBeforeCollapse.entries()),
932
+ layout: sizes
933
+ };
934
+ try {
935
+ storage.setItem(panelGroupKey, JSON.stringify(state));
936
+ } catch (error) {
937
+ console.error(error);
938
+ }
939
+ }
940
+ function validatePanelGroupLayout({
941
+ layout: prevLayout,
942
+ panelConstraints
943
+ }) {
944
+ const nextLayout = [...prevLayout], nextLayoutTotalSize = nextLayout.reduce((accumulated, current) => accumulated + current, 0);
945
+ if (nextLayout.length !== panelConstraints.length)
946
+ throw Error(`Invalid ${panelConstraints.length} panel layout: ${nextLayout.map((size) => `${size}%`).join(", ")}`);
947
+ if (!fuzzyNumbersEqual(nextLayoutTotalSize, 100))
948
+ for (let index = 0; index < panelConstraints.length; index++) {
949
+ const unsafeSize = nextLayout[index];
950
+ assert(unsafeSize != null, `No layout data found for index ${index}`);
951
+ const safeSize = 100 / nextLayoutTotalSize * unsafeSize;
952
+ nextLayout[index] = safeSize;
953
+ }
954
+ let remainingSize = 0;
955
+ for (let index = 0; index < panelConstraints.length; index++) {
956
+ const unsafeSize = nextLayout[index];
957
+ assert(unsafeSize != null, `No layout data found for index ${index}`);
958
+ const safeSize = resizePanel({
959
+ panelConstraints,
960
+ panelIndex: index,
961
+ size: unsafeSize
962
+ });
963
+ unsafeSize != safeSize && (remainingSize += unsafeSize - safeSize, nextLayout[index] = safeSize);
964
+ }
965
+ if (!fuzzyNumbersEqual(remainingSize, 0))
966
+ for (let index = 0; index < panelConstraints.length; index++) {
967
+ const prevSize = nextLayout[index];
968
+ assert(prevSize != null, `No layout data found for index ${index}`);
969
+ const unsafeSize = prevSize + remainingSize, safeSize = resizePanel({
970
+ panelConstraints,
971
+ panelIndex: index,
972
+ size: unsafeSize
973
+ });
974
+ if (prevSize !== safeSize && (remainingSize -= safeSize - prevSize, nextLayout[index] = safeSize, fuzzyNumbersEqual(remainingSize, 0)))
975
+ break;
976
+ }
977
+ return nextLayout;
978
+ }
979
+ const LOCAL_STORAGE_DEBOUNCE_INTERVAL = 100, defaultStorage = {
980
+ getItem: (name) => (initializeDefaultStorage(defaultStorage), defaultStorage.getItem(name)),
981
+ setItem: (name, value) => {
982
+ initializeDefaultStorage(defaultStorage), defaultStorage.setItem(name, value);
983
+ }
984
+ }, debounceMap = {};
985
+ function PanelGroupWithForwardedRef({
986
+ autoSaveId = null,
987
+ children,
988
+ className: classNameFromProps = "",
989
+ direction,
990
+ forwardedRef,
991
+ id: idFromProps = null,
992
+ onLayout = null,
993
+ keyboardResizeBy = null,
994
+ storage = defaultStorage,
995
+ style: styleFromProps,
996
+ tagName: Type = "div",
997
+ ...rest
998
+ }) {
999
+ const groupId = useUniqueId(idFromProps), panelGroupElementRef = useRef(null), [dragState, setDragState] = useState(null), [layout, setLayout] = useState(
1000
+ []), forceUpdate = useForceUpdate(), panelIdToLastNotifiedSizeMapRef = useRef({}), panelSizeBeforeCollapseRef = useRef(/* @__PURE__ */ new Map()), prevDeltaRef = useRef(
1001
+ 0), committedValuesRef = useRef({
1002
+ autoSaveId,
1003
+ direction,
1004
+ dragState,
1005
+ id: groupId,
1006
+ keyboardResizeBy,
1007
+ onLayout,
1008
+ storage
1009
+ }), eagerValuesRef = useRef({
1010
+ layout,
1011
+ panelDataArray: [],
1012
+ panelDataArrayChanged: !1
1013
+ });
1014
+ useRef({
1015
+ didLogIdAndOrderWarning: !1,
1016
+ didLogPanelConstraintsWarning: !1,
1017
+ prevPanelIds: []
1018
+ }), useImperativeHandle(forwardedRef, () => ({
1019
+ getId: () => committedValuesRef.current.id,
1020
+ getLayout: () => {
1021
+ const {
1022
+ layout: layout2
1023
+ } = eagerValuesRef.current;
1024
+ return layout2;
1025
+ },
1026
+ setLayout: (unsafeLayout) => {
1027
+ const {
1028
+ onLayout: onLayout2
1029
+ } = committedValuesRef.current, {
1030
+ layout: prevLayout,
1031
+ panelDataArray
1032
+ } = eagerValuesRef.current, safeLayout = validatePanelGroupLayout({
1033
+ layout: unsafeLayout,
1034
+ panelConstraints: panelDataArray.map((panelData) => panelData.constraints)
1035
+ });
1036
+ areEqual(prevLayout, safeLayout) || (setLayout(safeLayout), eagerValuesRef.current.layout = safeLayout, onLayout2 && onLayout2(safeLayout), callPanelCallbacks(
1037
+ panelDataArray, safeLayout, panelIdToLastNotifiedSizeMapRef.current));
1038
+ }
1039
+ }), []), useIsomorphicLayoutEffect(() => {
1040
+ committedValuesRef.current.autoSaveId = autoSaveId, committedValuesRef.current.direction = direction, committedValuesRef.current.dragState = dragState,
1041
+ committedValuesRef.current.id = groupId, committedValuesRef.current.onLayout = onLayout, committedValuesRef.current.storage = storage;
1042
+ }), useWindowSplitterPanelGroupBehavior({
1043
+ committedValuesRef,
1044
+ eagerValuesRef,
1045
+ groupId,
1046
+ layout,
1047
+ panelDataArray: eagerValuesRef.current.panelDataArray,
1048
+ setLayout,
1049
+ panelGroupElement: panelGroupElementRef.current
1050
+ }), useEffect(() => {
1051
+ const {
1052
+ panelDataArray
1053
+ } = eagerValuesRef.current;
1054
+ if (autoSaveId) {
1055
+ if (layout.length === 0 || layout.length !== panelDataArray.length)
1056
+ return;
1057
+ let debouncedSave = debounceMap[autoSaveId];
1058
+ debouncedSave == null && (debouncedSave = debounce(savePanelGroupState, LOCAL_STORAGE_DEBOUNCE_INTERVAL), debounceMap[autoSaveId] = debouncedSave);
1059
+ const clonedPanelDataArray = [...panelDataArray], clonedPanelSizesBeforeCollapse = new Map(panelSizeBeforeCollapseRef.current);
1060
+ debouncedSave(autoSaveId, clonedPanelDataArray, clonedPanelSizesBeforeCollapse, layout, storage);
1061
+ }
1062
+ }, [autoSaveId, layout, storage]), useEffect(() => {
1063
+ });
1064
+ const collapsePanel = useCallback((panelData) => {
1065
+ const {
1066
+ onLayout: onLayout2
1067
+ } = committedValuesRef.current, {
1068
+ layout: prevLayout,
1069
+ panelDataArray
1070
+ } = eagerValuesRef.current;
1071
+ if (panelData.constraints.collapsible) {
1072
+ const panelConstraintsArray = panelDataArray.map((panelData2) => panelData2.constraints), {
1073
+ collapsedSize = 0,
1074
+ panelSize,
1075
+ pivotIndices
1076
+ } = panelDataHelper(panelDataArray, panelData, prevLayout);
1077
+ if (assert(panelSize != null, `Panel size not found for panel "${panelData.id}"`), !fuzzyNumbersEqual$1(panelSize, collapsedSize)) {
1078
+ panelSizeBeforeCollapseRef.current.set(panelData.id, panelSize);
1079
+ const delta = findPanelDataIndex(panelDataArray, panelData) === panelDataArray.length - 1 ? panelSize - collapsedSize : collapsedSize - panelSize,
1080
+ nextLayout = adjustLayoutByDelta({
1081
+ delta,
1082
+ initialLayout: prevLayout,
1083
+ panelConstraints: panelConstraintsArray,
1084
+ pivotIndices,
1085
+ prevLayout,
1086
+ trigger: "imperative-api"
1087
+ });
1088
+ compareLayouts(prevLayout, nextLayout) || (setLayout(nextLayout), eagerValuesRef.current.layout = nextLayout, onLayout2 && onLayout2(nextLayout),
1089
+ callPanelCallbacks(panelDataArray, nextLayout, panelIdToLastNotifiedSizeMapRef.current));
1090
+ }
1091
+ }
1092
+ }, []), expandPanel = useCallback((panelData, minSizeOverride) => {
1093
+ const {
1094
+ onLayout: onLayout2
1095
+ } = committedValuesRef.current, {
1096
+ layout: prevLayout,
1097
+ panelDataArray
1098
+ } = eagerValuesRef.current;
1099
+ if (panelData.constraints.collapsible) {
1100
+ const panelConstraintsArray = panelDataArray.map((panelData2) => panelData2.constraints), {
1101
+ collapsedSize = 0,
1102
+ panelSize = 0,
1103
+ minSize: minSizeFromProps = 0,
1104
+ pivotIndices
1105
+ } = panelDataHelper(panelDataArray, panelData, prevLayout), minSize = minSizeOverride ?? minSizeFromProps;
1106
+ if (fuzzyNumbersEqual$1(panelSize, collapsedSize)) {
1107
+ const prevPanelSize = panelSizeBeforeCollapseRef.current.get(panelData.id), baseSize = prevPanelSize != null && prevPanelSize >= minSize ? prevPanelSize :
1108
+ minSize, delta = findPanelDataIndex(panelDataArray, panelData) === panelDataArray.length - 1 ? panelSize - baseSize : baseSize - panelSize, nextLayout = adjustLayoutByDelta(
1109
+ {
1110
+ delta,
1111
+ initialLayout: prevLayout,
1112
+ panelConstraints: panelConstraintsArray,
1113
+ pivotIndices,
1114
+ prevLayout,
1115
+ trigger: "imperative-api"
1116
+ });
1117
+ compareLayouts(prevLayout, nextLayout) || (setLayout(nextLayout), eagerValuesRef.current.layout = nextLayout, onLayout2 && onLayout2(nextLayout),
1118
+ callPanelCallbacks(panelDataArray, nextLayout, panelIdToLastNotifiedSizeMapRef.current));
1119
+ }
1120
+ }
1121
+ }, []), getPanelSize = useCallback((panelData) => {
1122
+ const {
1123
+ layout: layout2,
1124
+ panelDataArray
1125
+ } = eagerValuesRef.current, {
1126
+ panelSize
1127
+ } = panelDataHelper(panelDataArray, panelData, layout2);
1128
+ return assert(panelSize != null, `Panel size not found for panel "${panelData.id}"`), panelSize;
1129
+ }, []), getPanelStyle = useCallback((panelData, defaultSize) => {
1130
+ const {
1131
+ panelDataArray
1132
+ } = eagerValuesRef.current, panelIndex = findPanelDataIndex(panelDataArray, panelData);
1133
+ return computePanelFlexBoxStyle({
1134
+ defaultSize,
1135
+ dragState,
1136
+ layout,
1137
+ panelData: panelDataArray,
1138
+ panelIndex
1139
+ });
1140
+ }, [dragState, layout]), isPanelCollapsed = useCallback((panelData) => {
1141
+ const {
1142
+ layout: layout2,
1143
+ panelDataArray
1144
+ } = eagerValuesRef.current, {
1145
+ collapsedSize = 0,
1146
+ collapsible,
1147
+ panelSize
1148
+ } = panelDataHelper(panelDataArray, panelData, layout2);
1149
+ return assert(panelSize != null, `Panel size not found for panel "${panelData.id}"`), collapsible === !0 && fuzzyNumbersEqual$1(panelSize, collapsedSize);
1150
+ }, []), isPanelExpanded = useCallback((panelData) => {
1151
+ const {
1152
+ layout: layout2,
1153
+ panelDataArray
1154
+ } = eagerValuesRef.current, {
1155
+ collapsedSize = 0,
1156
+ collapsible,
1157
+ panelSize
1158
+ } = panelDataHelper(panelDataArray, panelData, layout2);
1159
+ return assert(panelSize != null, `Panel size not found for panel "${panelData.id}"`), !collapsible || fuzzyCompareNumbers(panelSize, collapsedSize) >
1160
+ 0;
1161
+ }, []), registerPanel = useCallback((panelData) => {
1162
+ const {
1163
+ panelDataArray
1164
+ } = eagerValuesRef.current;
1165
+ panelDataArray.push(panelData), panelDataArray.sort((panelA, panelB) => {
1166
+ const orderA = panelA.order, orderB = panelB.order;
1167
+ return orderA == null && orderB == null ? 0 : orderA == null ? -1 : orderB == null ? 1 : orderA - orderB;
1168
+ }), eagerValuesRef.current.panelDataArrayChanged = !0, forceUpdate();
1169
+ }, [forceUpdate]);
1170
+ useIsomorphicLayoutEffect(() => {
1171
+ if (eagerValuesRef.current.panelDataArrayChanged) {
1172
+ eagerValuesRef.current.panelDataArrayChanged = !1;
1173
+ const {
1174
+ autoSaveId: autoSaveId2,
1175
+ onLayout: onLayout2,
1176
+ storage: storage2
1177
+ } = committedValuesRef.current, {
1178
+ layout: prevLayout,
1179
+ panelDataArray
1180
+ } = eagerValuesRef.current;
1181
+ let unsafeLayout = null;
1182
+ if (autoSaveId2) {
1183
+ const state = loadPanelGroupState(autoSaveId2, panelDataArray, storage2);
1184
+ state && (panelSizeBeforeCollapseRef.current = new Map(Object.entries(state.expandToSizes)), unsafeLayout = state.layout);
1185
+ }
1186
+ unsafeLayout == null && (unsafeLayout = calculateUnsafeDefaultLayout({
1187
+ panelDataArray
1188
+ }));
1189
+ const nextLayout = validatePanelGroupLayout({
1190
+ layout: unsafeLayout,
1191
+ panelConstraints: panelDataArray.map((panelData) => panelData.constraints)
1192
+ });
1193
+ areEqual(prevLayout, nextLayout) || (setLayout(nextLayout), eagerValuesRef.current.layout = nextLayout, onLayout2 && onLayout2(nextLayout), callPanelCallbacks(
1194
+ panelDataArray, nextLayout, panelIdToLastNotifiedSizeMapRef.current));
1195
+ }
1196
+ }), useIsomorphicLayoutEffect(() => {
1197
+ const eagerValues = eagerValuesRef.current;
1198
+ return () => {
1199
+ eagerValues.layout = [];
1200
+ };
1201
+ }, []);
1202
+ const registerResizeHandle2 = useCallback((dragHandleId) => function(event) {
1203
+ event.preventDefault();
1204
+ const panelGroupElement = panelGroupElementRef.current;
1205
+ if (!panelGroupElement)
1206
+ return () => null;
1207
+ const {
1208
+ direction: direction2,
1209
+ dragState: dragState2,
1210
+ id: groupId2,
1211
+ keyboardResizeBy: keyboardResizeBy2,
1212
+ onLayout: onLayout2
1213
+ } = committedValuesRef.current, {
1214
+ layout: prevLayout,
1215
+ panelDataArray
1216
+ } = eagerValuesRef.current, {
1217
+ initialLayout
1218
+ } = dragState2 ?? {}, pivotIndices = determinePivotIndices(groupId2, dragHandleId, panelGroupElement);
1219
+ let delta = calculateDeltaPercentage(event, dragHandleId, direction2, dragState2, keyboardResizeBy2, panelGroupElement);
1220
+ const isHorizontal = direction2 === "horizontal";
1221
+ document.dir === "rtl" && isHorizontal && (delta = -delta);
1222
+ const panelConstraints = panelDataArray.map((panelData) => panelData.constraints), nextLayout = adjustLayoutByDelta({
1223
+ delta,
1224
+ initialLayout: initialLayout ?? prevLayout,
1225
+ panelConstraints,
1226
+ pivotIndices,
1227
+ prevLayout,
1228
+ trigger: isKeyDown(event) ? "keyboard" : "mouse-or-touch"
1229
+ }), layoutChanged = !compareLayouts(prevLayout, nextLayout);
1230
+ (isPointerEvent(event) || isMouseEvent(event)) && prevDeltaRef.current != delta && (prevDeltaRef.current = delta, layoutChanged ? reportConstraintsViolation(
1231
+ dragHandleId, 0) : isHorizontal ? reportConstraintsViolation(dragHandleId, delta < 0 ? EXCEEDED_HORIZONTAL_MIN : EXCEEDED_HORIZONTAL_MAX) : reportConstraintsViolation(
1232
+ dragHandleId, delta < 0 ? EXCEEDED_VERTICAL_MIN : EXCEEDED_VERTICAL_MAX)), layoutChanged && (setLayout(nextLayout), eagerValuesRef.current.layout =
1233
+ nextLayout, onLayout2 && onLayout2(nextLayout), callPanelCallbacks(panelDataArray, nextLayout, panelIdToLastNotifiedSizeMapRef.current));
1234
+ }, []), resizePanel2 = useCallback((panelData, unsafePanelSize) => {
1235
+ const {
1236
+ onLayout: onLayout2
1237
+ } = committedValuesRef.current, {
1238
+ layout: prevLayout,
1239
+ panelDataArray
1240
+ } = eagerValuesRef.current, panelConstraintsArray = panelDataArray.map((panelData2) => panelData2.constraints), {
1241
+ panelSize,
1242
+ pivotIndices
1243
+ } = panelDataHelper(panelDataArray, panelData, prevLayout);
1244
+ assert(panelSize != null, `Panel size not found for panel "${panelData.id}"`);
1245
+ const delta = findPanelDataIndex(panelDataArray, panelData) === panelDataArray.length - 1 ? panelSize - unsafePanelSize : unsafePanelSize - panelSize,
1246
+ nextLayout = adjustLayoutByDelta({
1247
+ delta,
1248
+ initialLayout: prevLayout,
1249
+ panelConstraints: panelConstraintsArray,
1250
+ pivotIndices,
1251
+ prevLayout,
1252
+ trigger: "imperative-api"
1253
+ });
1254
+ compareLayouts(prevLayout, nextLayout) || (setLayout(nextLayout), eagerValuesRef.current.layout = nextLayout, onLayout2 && onLayout2(nextLayout), callPanelCallbacks(
1255
+ panelDataArray, nextLayout, panelIdToLastNotifiedSizeMapRef.current));
1256
+ }, []), reevaluatePanelConstraints = useCallback((panelData, prevConstraints) => {
1257
+ const {
1258
+ layout: layout2,
1259
+ panelDataArray
1260
+ } = eagerValuesRef.current, {
1261
+ collapsedSize: prevCollapsedSize = 0,
1262
+ collapsible: prevCollapsible
1263
+ } = prevConstraints, {
1264
+ collapsedSize: nextCollapsedSize = 0,
1265
+ collapsible: nextCollapsible,
1266
+ maxSize: nextMaxSize = 100,
1267
+ minSize: nextMinSize = 0
1268
+ } = panelData.constraints, {
1269
+ panelSize: prevPanelSize
1270
+ } = panelDataHelper(panelDataArray, panelData, layout2);
1271
+ prevPanelSize != null && (prevCollapsible && nextCollapsible && fuzzyNumbersEqual$1(prevPanelSize, prevCollapsedSize) ? fuzzyNumbersEqual$1(prevCollapsedSize,
1272
+ nextCollapsedSize) || resizePanel2(panelData, nextCollapsedSize) : prevPanelSize < nextMinSize ? resizePanel2(panelData, nextMinSize) : prevPanelSize >
1273
+ nextMaxSize && resizePanel2(panelData, nextMaxSize));
1274
+ }, [resizePanel2]), startDragging = useCallback((dragHandleId, event) => {
1275
+ const {
1276
+ direction: direction2
1277
+ } = committedValuesRef.current, {
1278
+ layout: layout2
1279
+ } = eagerValuesRef.current;
1280
+ if (!panelGroupElementRef.current)
1281
+ return;
1282
+ const handleElement = getResizeHandleElement(dragHandleId, panelGroupElementRef.current);
1283
+ assert(handleElement, `Drag handle element not found for id "${dragHandleId}"`);
1284
+ const initialCursorPosition = getResizeEventCursorPosition(direction2, event);
1285
+ setDragState({
1286
+ dragHandleId,
1287
+ dragHandleRect: handleElement.getBoundingClientRect(),
1288
+ initialCursorPosition,
1289
+ initialLayout: layout2
1290
+ });
1291
+ }, []), stopDragging = useCallback(() => {
1292
+ setDragState(null);
1293
+ }, []), unregisterPanel = useCallback((panelData) => {
1294
+ const {
1295
+ panelDataArray
1296
+ } = eagerValuesRef.current, index = findPanelDataIndex(panelDataArray, panelData);
1297
+ index >= 0 && (panelDataArray.splice(index, 1), delete panelIdToLastNotifiedSizeMapRef.current[panelData.id], eagerValuesRef.current.panelDataArrayChanged =
1298
+ !0, forceUpdate());
1299
+ }, [forceUpdate]), context = useMemo(() => ({
1300
+ collapsePanel,
1301
+ direction,
1302
+ dragState,
1303
+ expandPanel,
1304
+ getPanelSize,
1305
+ getPanelStyle,
1306
+ groupId,
1307
+ isPanelCollapsed,
1308
+ isPanelExpanded,
1309
+ reevaluatePanelConstraints,
1310
+ registerPanel,
1311
+ registerResizeHandle: registerResizeHandle2,
1312
+ resizePanel: resizePanel2,
1313
+ startDragging,
1314
+ stopDragging,
1315
+ unregisterPanel,
1316
+ panelGroupElement: panelGroupElementRef.current
1317
+ }), [collapsePanel, dragState, direction, expandPanel, getPanelSize, getPanelStyle, groupId, isPanelCollapsed, isPanelExpanded, reevaluatePanelConstraints,
1318
+ registerPanel, registerResizeHandle2, resizePanel2, startDragging, stopDragging, unregisterPanel]), style = {
1319
+ display: "flex",
1320
+ flexDirection: direction === "horizontal" ? "row" : "column",
1321
+ height: "100%",
1322
+ overflow: "hidden",
1323
+ width: "100%"
1324
+ };
1325
+ return createElement(PanelGroupContext.Provider, {
1326
+ value: context
1327
+ }, createElement(Type, {
1328
+ ...rest,
1329
+ children,
1330
+ className: classNameFromProps,
1331
+ id: idFromProps,
1332
+ ref: panelGroupElementRef,
1333
+ style: {
1334
+ ...style,
1335
+ ...styleFromProps
1336
+ },
1337
+ // CSS selectors
1338
+ "data-panel-group": "",
1339
+ "data-panel-group-direction": direction,
1340
+ "data-panel-group-id": groupId
1341
+ }));
1342
+ }
1343
+ const PanelGroup = forwardRef((props2, ref) => createElement(PanelGroupWithForwardedRef, {
1344
+ ...props2,
1345
+ forwardedRef: ref
1346
+ }));
1347
+ PanelGroupWithForwardedRef.displayName = "PanelGroup";
1348
+ PanelGroup.displayName = "forwardRef(PanelGroup)";
1349
+ function findPanelDataIndex(panelDataArray, panelData) {
1350
+ return panelDataArray.findIndex((prevPanelData) => prevPanelData === panelData || prevPanelData.id === panelData.id);
1351
+ }
1352
+ function panelDataHelper(panelDataArray, panelData, layout) {
1353
+ const panelIndex = findPanelDataIndex(panelDataArray, panelData), pivotIndices = panelIndex === panelDataArray.length - 1 ? [panelIndex - 1, panelIndex] :
1354
+ [panelIndex, panelIndex + 1], panelSize = layout[panelIndex];
1355
+ return {
1356
+ ...panelData.constraints,
1357
+ panelSize,
1358
+ pivotIndices
1359
+ };
1360
+ }
1361
+ function useWindowSplitterResizeHandlerBehavior({
1362
+ disabled,
1363
+ handleId,
1364
+ resizeHandler,
1365
+ panelGroupElement
1366
+ }) {
1367
+ useEffect(() => {
1368
+ if (disabled || resizeHandler == null || panelGroupElement == null)
1369
+ return;
1370
+ const handleElement = getResizeHandleElement(handleId, panelGroupElement);
1371
+ if (handleElement == null)
1372
+ return;
1373
+ const onKeyDown = (event) => {
1374
+ if (!event.defaultPrevented)
1375
+ switch (event.key) {
1376
+ case "ArrowDown":
1377
+ case "ArrowLeft":
1378
+ case "ArrowRight":
1379
+ case "ArrowUp":
1380
+ case "End":
1381
+ case "Home": {
1382
+ event.preventDefault(), resizeHandler(event);
1383
+ break;
1384
+ }
1385
+ case "F6": {
1386
+ event.preventDefault();
1387
+ const groupId = handleElement.getAttribute("data-panel-group-id");
1388
+ assert(groupId, `No group element found for id "${groupId}"`);
1389
+ const handles = getResizeHandleElementsForGroup(groupId, panelGroupElement), index = getResizeHandleElementIndex(groupId, handleId, panelGroupElement);
1390
+ assert(index !== null, `No resize element found for id "${handleId}"`);
1391
+ const nextIndex = event.shiftKey ? index > 0 ? index - 1 : handles.length - 1 : index + 1 < handles.length ? index + 1 : 0;
1392
+ handles[nextIndex].focus();
1393
+ break;
1394
+ }
1395
+ }
1396
+ };
1397
+ return handleElement.addEventListener("keydown", onKeyDown), () => {
1398
+ handleElement.removeEventListener("keydown", onKeyDown);
1399
+ };
1400
+ }, [panelGroupElement, disabled, handleId, resizeHandler]);
1401
+ }
1402
+ function PanelResizeHandle({
1403
+ children = null,
1404
+ className: classNameFromProps = "",
1405
+ disabled = !1,
1406
+ hitAreaMargins,
1407
+ id: idFromProps,
1408
+ onBlur,
1409
+ onDragging,
1410
+ onFocus,
1411
+ style: styleFromProps = {},
1412
+ tabIndex = 0,
1413
+ tagName: Type = "div",
1414
+ ...rest
1415
+ }) {
1416
+ var _hitAreaMargins$coars, _hitAreaMargins$fine;
1417
+ const elementRef = useRef(null), callbacksRef = useRef({
1418
+ onDragging
1419
+ });
1420
+ useEffect(() => {
1421
+ callbacksRef.current.onDragging = onDragging;
1422
+ });
1423
+ const panelGroupContext = useContext(PanelGroupContext);
1424
+ if (panelGroupContext === null)
1425
+ throw Error("PanelResizeHandle components must be rendered within a PanelGroup container");
1426
+ const {
1427
+ direction,
1428
+ groupId,
1429
+ registerResizeHandle: registerResizeHandleWithParentGroup,
1430
+ startDragging,
1431
+ stopDragging,
1432
+ panelGroupElement
1433
+ } = panelGroupContext, resizeHandleId = useUniqueId(idFromProps), [state, setState] = useState("inactive"), [isFocused, setIsFocused] = useState(!1),
1434
+ [resizeHandler, setResizeHandler] = useState(null), committedValuesRef = useRef({
1435
+ state
1436
+ });
1437
+ useIsomorphicLayoutEffect(() => {
1438
+ committedValuesRef.current.state = state;
1439
+ }), useEffect(() => {
1440
+ if (disabled)
1441
+ setResizeHandler(null);
1442
+ else {
1443
+ const resizeHandler2 = registerResizeHandleWithParentGroup(resizeHandleId);
1444
+ setResizeHandler(() => resizeHandler2);
1445
+ }
1446
+ }, [disabled, resizeHandleId, registerResizeHandleWithParentGroup]);
1447
+ const coarseHitAreaMargins = (_hitAreaMargins$coars = hitAreaMargins?.coarse) !== null && _hitAreaMargins$coars !== void 0 ? _hitAreaMargins$coars :
1448
+ 15, fineHitAreaMargins = (_hitAreaMargins$fine = hitAreaMargins?.fine) !== null && _hitAreaMargins$fine !== void 0 ? _hitAreaMargins$fine : 5;
1449
+ return useEffect(() => {
1450
+ if (disabled || resizeHandler == null)
1451
+ return;
1452
+ const element = elementRef.current;
1453
+ return assert(element, "Element ref not attached"), registerResizeHandle(resizeHandleId, element, direction, {
1454
+ coarse: coarseHitAreaMargins,
1455
+ fine: fineHitAreaMargins
1456
+ }, (action, isActive, event) => {
1457
+ if (isActive)
1458
+ switch (action) {
1459
+ case "down": {
1460
+ setState("drag"), startDragging(resizeHandleId, event);
1461
+ const {
1462
+ onDragging: onDragging2
1463
+ } = callbacksRef.current;
1464
+ onDragging2 && onDragging2(!0);
1465
+ break;
1466
+ }
1467
+ case "move": {
1468
+ const {
1469
+ state: state2
1470
+ } = committedValuesRef.current;
1471
+ state2 !== "drag" && setState("hover"), resizeHandler(event);
1472
+ break;
1473
+ }
1474
+ case "up": {
1475
+ setState("hover"), stopDragging();
1476
+ const {
1477
+ onDragging: onDragging2
1478
+ } = callbacksRef.current;
1479
+ onDragging2 && onDragging2(!1);
1480
+ break;
1481
+ }
1482
+ }
1483
+ else
1484
+ setState("inactive");
1485
+ });
1486
+ }, [coarseHitAreaMargins, direction, disabled, fineHitAreaMargins, registerResizeHandleWithParentGroup, resizeHandleId, resizeHandler, startDragging,
1487
+ stopDragging]), useWindowSplitterResizeHandlerBehavior({
1488
+ disabled,
1489
+ handleId: resizeHandleId,
1490
+ resizeHandler,
1491
+ panelGroupElement
1492
+ }), createElement(Type, {
1493
+ ...rest,
1494
+ children,
1495
+ className: classNameFromProps,
1496
+ id: idFromProps,
1497
+ onBlur: () => {
1498
+ setIsFocused(!1), onBlur?.();
1499
+ },
1500
+ onFocus: () => {
1501
+ setIsFocused(!0), onFocus?.();
1502
+ },
1503
+ ref: elementRef,
1504
+ role: "separator",
1505
+ style: {
1506
+ ...{
1507
+ touchAction: "none",
1508
+ userSelect: "none"
1509
+ },
1510
+ ...styleFromProps
1511
+ },
1512
+ tabIndex,
1513
+ // CSS selectors
1514
+ "data-panel-group-direction": direction,
1515
+ "data-panel-group-id": groupId,
1516
+ "data-resize-handle": "",
1517
+ "data-resize-handle-active": state === "drag" ? "pointer" : isFocused ? "keyboard" : void 0,
1518
+ "data-resize-handle-state": state,
1519
+ "data-panel-resize-handle-enabled": !disabled,
1520
+ "data-panel-resize-handle-id": resizeHandleId
1521
+ });
1522
+ }
1523
+ PanelResizeHandle.displayName = "PanelResizeHandle";
1524
+ export {
1525
+ PanelGroup as P,
1526
+ Panel as a,
1527
+ PanelResizeHandle as b
1528
+ };